shipthis 0.1.50 → 0.1.52

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 (102) hide show
  1. package/README.md +1 -1
  2. package/dist/{AppleBundleIdDetails-4WNaBSGY.js → AppleBundleIdDetails-BUJnAu52.js} +4 -4
  3. package/dist/{Command-DuEKI93-.js → Command-B-MWAVPL.js} +2 -2
  4. package/dist/CommandGame-DPJEVhuw.js +14 -0
  5. package/dist/{Create-DUl1dfhZ.js → Create-CmEndHAZ.js} +2 -2
  6. package/dist/CredentialDetailsView-B7Y9sj8K.js +131 -0
  7. package/dist/ErrorBox-DS5e6VmF.js +21 -0
  8. package/dist/{GameStatus-NSIKI7Zi.js → GameStatus-XFGHRbVP.js} +5 -5
  9. package/dist/{Import-B_2jztJs.js → Import-ea-wsQt-.js} +3 -3
  10. package/dist/{JobLogTail-CDGqKKin.js → JobLogTail-BwFUt8LB.js} +6 -25
  11. package/dist/{JobProgress-COP5mbrn.js → JobProgress-_cIUK7Ho.js} +6 -6
  12. package/dist/{JobStatusTable-DamWqM1t.js → JobStatusTable-CyDhk3lr.js} +3 -3
  13. package/dist/{ProjectCredentialsTable-BXWs0Ler.js → ProjectCredentialsTable-0DY-GdfY.js} +2 -2
  14. package/dist/TruncatedText-DhEXCrnE.js +25 -0
  15. package/dist/{UserCredentialsTable-Cr2NT9gg.js → UserCredentialsTable-CTJMS9Kc.js} +2 -2
  16. package/dist/{baseAppleCommand-CMBV0P9z.js → baseAppleCommand-9xmssZ7g.js} +1 -1
  17. package/dist/{baseCommand-C7OdounZ.js → baseCommand-CpAJaJoG.js} +289 -230
  18. package/dist/{baseGameAndroidCommand-BE6hsL-c.js → baseGameAndroidCommand-HO8as-RL.js} +2 -2
  19. package/dist/{baseGameCommand-Bap2bDqP.js → baseGameCommand-Cbx4ywHl.js} +32 -17
  20. package/dist/commands/apiKey/create.js +11 -11
  21. package/dist/commands/apiKey/list.js +12 -12
  22. package/dist/commands/apiKey/revoke.js +12 -12
  23. package/dist/commands/apple/apiKey/create.js +7 -7
  24. package/dist/commands/apple/apiKey/delete.js +7 -7
  25. package/dist/commands/apple/apiKey/export.js +5 -5
  26. package/dist/commands/apple/apiKey/import.js +5 -5
  27. package/dist/commands/apple/apiKey/status.js +4 -4
  28. package/dist/commands/apple/certificate/create.js +7 -7
  29. package/dist/commands/apple/certificate/delete.js +7 -7
  30. package/dist/commands/apple/certificate/export.js +5 -5
  31. package/dist/commands/apple/certificate/import.js +5 -5
  32. package/dist/commands/apple/certificate/show.js +78 -0
  33. package/dist/commands/apple/certificate/status.js +4 -4
  34. package/dist/commands/apple/login.js +3 -3
  35. package/dist/commands/apple/status.js +3 -3
  36. package/dist/commands/dashboard.js +3 -3
  37. package/dist/commands/game/android/apiKey/connect.js +9 -8
  38. package/dist/commands/game/android/apiKey/create.js +12 -11
  39. package/dist/commands/game/android/apiKey/delete.js +7 -7
  40. package/dist/commands/game/android/apiKey/export.js +7 -7
  41. package/dist/commands/game/android/apiKey/import.js +7 -7
  42. package/dist/commands/game/android/apiKey/invite.js +7 -7
  43. package/dist/commands/game/android/apiKey/policy.js +3 -3
  44. package/dist/commands/game/android/apiKey/show.js +79 -0
  45. package/dist/commands/game/android/apiKey/status.js +7 -7
  46. package/dist/commands/game/android/keyStore/create.js +9 -8
  47. package/dist/commands/game/android/keyStore/delete.js +7 -7
  48. package/dist/commands/game/android/keyStore/export.js +6 -6
  49. package/dist/commands/game/android/keyStore/import.js +10 -9
  50. package/dist/commands/game/android/keyStore/status.js +6 -6
  51. package/dist/commands/game/android/status.js +5 -5
  52. package/dist/commands/game/build/download.js +3 -3
  53. package/dist/commands/game/build/list.js +6 -5
  54. package/dist/commands/game/create.js +3 -3
  55. package/dist/commands/game/details.js +6 -6
  56. package/dist/commands/game/export.js +3 -3
  57. package/dist/commands/game/ios/app/addTester.js +7 -7
  58. package/dist/commands/game/ios/app/create.js +6 -6
  59. package/dist/commands/game/ios/app/status.js +7 -7
  60. package/dist/commands/game/ios/app/sync.js +5 -5
  61. package/dist/commands/game/ios/profile/create.js +7 -7
  62. package/dist/commands/game/ios/profile/delete.js +7 -7
  63. package/dist/commands/game/ios/profile/export.js +6 -6
  64. package/dist/commands/game/ios/profile/import.js +6 -6
  65. package/dist/commands/game/ios/profile/show.js +78 -0
  66. package/dist/commands/game/ios/profile/status.js +7 -7
  67. package/dist/commands/game/ios/status.js +10 -9
  68. package/dist/commands/game/ios/wizard.js +3 -3
  69. package/dist/commands/game/job/list.js +6 -6
  70. package/dist/commands/game/job/status.js +9 -8
  71. package/dist/commands/game/list.js +12 -12
  72. package/dist/commands/game/ship.js +14 -34
  73. package/dist/commands/game/status.js +6 -5
  74. package/dist/commands/game/wizard.js +26 -18
  75. package/dist/commands/internal/fastlane.js +5 -5
  76. package/dist/commands/internal/readme.js +5 -5
  77. package/dist/commands/login.js +6 -6
  78. package/dist/commands/status.js +5 -5
  79. package/dist/commands/util/android-build-method.js +5 -5
  80. package/dist/commands/util/glass.js +2 -2
  81. package/dist/{export-gdKqwR7u.js → export-Blt3BR-u.js} +1 -1
  82. package/dist/{import-CICoTBgo.js → import-IVcS8WFM.js} +1 -1
  83. package/dist/{index-BaxMfQnE.js → index-B5s20dhm.js} +5 -5
  84. package/dist/{index-YX-OJ2AA.js → index-By3xdL8c.js} +1 -1
  85. package/dist/{index-CjYag6UG.js → index-KJtngKaE.js} +4 -4
  86. package/dist/{upload-Drre-qsL.js → upload-B56rRpZW.js} +1 -1
  87. package/dist/{useAppleApp-ChI2baWJ.js → useAppleApp-BHUjGmw0.js} +1 -1
  88. package/dist/{useAppleBundleId-CUTbojvt.js → useAppleBundleId-Cv5maswG.js} +1 -1
  89. package/dist/{useAppleProfiles-omIx9KVc.js → useAppleProfiles-kDiUOXiX.js} +1 -1
  90. package/dist/{useGoogleStatus-v86ZyFiz.js → useGoogleStatus-BHd_Wp59.js} +2 -2
  91. package/dist/{useProjectCredentials-5Ycm5B4x.js → useProjectCredentials-ADtDLDmx.js} +19 -2
  92. package/dist/{useWebSocket-AjcqLcJX.js → useWebSocket-DlNe_zDR.js} +1 -1
  93. package/docs/apple/certificate/show.md +23 -0
  94. package/docs/apple/certificate.md +24 -0
  95. package/docs/game/android/apiKey/show.md +26 -0
  96. package/docs/game/android/apiKey.md +27 -0
  97. package/docs/game/ios/profile/show.md +26 -0
  98. package/docs/game/ios/profile.md +27 -0
  99. package/npm-shrinkwrap.json +52 -47
  100. package/oclif.manifest.json +351 -236
  101. package/package.json +8 -4
  102. package/dist/CommandGame-BeyPCeC7.js +0 -7
package/README.md CHANGED
@@ -110,7 +110,7 @@ We support **all stable Godot versions since 3.6**, including:
110
110
  | [3.6](https://github.com/godotengine/godot/releases/tag/3.6-stable) | [4.0](https://github.com/godotengine/godot/releases/tag/4.0-stable) | [4.1](https://github.com/godotengine/godot/releases/tag/4.1-stable) | [4.2](https://github.com/godotengine/godot/releases/tag/4.2-stable) | [4.3](https://github.com/godotengine/godot/releases/tag/4.3-stable) | [4.4](https://github.com/godotengine/godot/releases/tag/4.4-stable) | [4.5](https://github.com/godotengine/godot/releases/tag/4.5-stable) | [4.6](https://github.com/godotengine/godot/releases/tag/4.6-stable) |
111
111
  | ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ |
112
112
  | [3.6.1](https://github.com/godotengine/godot/releases/tag/3.6.1-stable) | [4.0.1](https://github.com/godotengine/godot/releases/tag/4.0.1-stable) | [4.1.1](https://github.com/godotengine/godot/releases/tag/4.1.1-stable) | [4.2.1](https://github.com/godotengine/godot/releases/tag/4.2.1-stable) | [4.3.1 *](https://github.com/shipth-is/godot-android-sdk-upgrade/releases/tag/4.3.1-28eb575) | [4.4.1](https://github.com/godotengine/godot/releases/tag/4.4.1-stable) | [4.5.1](https://github.com/godotengine/godot/releases/tag/4.5.1-stable) | [4.6.1](https://github.com/godotengine/godot/releases/tag/4.6.1-stable) |
113
- | [3.6.2](https://github.com/godotengine/godot/releases/tag/3.6.2-stable) | [4.0.2](https://github.com/godotengine/godot/releases/tag/4.0.2-stable) | [4.1.2](https://github.com/godotengine/godot/releases/tag/4.1.2-stable) | [4.2.2](https://github.com/godotengine/godot/releases/tag/4.2.2-stable) | | [4.4.2 *](https://github.com/shipth-is/godot-android-sdk-upgrade/releases/tag/4.4.2-ca113b3) | | |
113
+ | [3.6.2](https://github.com/godotengine/godot/releases/tag/3.6.2-stable) | [4.0.2](https://github.com/godotengine/godot/releases/tag/4.0.2-stable) | [4.1.2](https://github.com/godotengine/godot/releases/tag/4.1.2-stable) | [4.2.2](https://github.com/godotengine/godot/releases/tag/4.2.2-stable) | | [4.4.2 *](https://github.com/shipth-is/godot-android-sdk-upgrade/releases/tag/4.4.2-ca113b3) | | [4.6.2](https://github.com/godotengine/godot/releases/tag/4.6.2-stable) |
114
114
  | | [4.0.3](https://github.com/godotengine/godot/releases/tag/4.0.3-stable) | [4.1.3](https://github.com/godotengine/godot/releases/tag/4.1.3-stable) | [4.2.3 *](https://github.com/shipth-is/godot-android-sdk-upgrade/releases/tag/4.2.3-d33f443) | | | | |
115
115
  | | [4.0.4](https://github.com/godotengine/godot/releases/tag/4.0.4-stable) | [4.1.4](https://github.com/godotengine/godot/releases/tag/4.1.4-stable) | | | | | |
116
116
  | | [4.0.5 *](https://github.com/shipth-is/godot-android-sdk-upgrade/releases/tag/4.0.5-df6989b) | [4.1.5 *](https://github.com/shipth-is/godot-android-sdk-upgrade/releases/tag/4.1.5-b68debd) | | | | | |
@@ -11,11 +11,11 @@ import 'readline-sync';
11
11
  import 'luxon';
12
12
  import 'axios';
13
13
  import 'isomorphic-git';
14
- import './baseCommand-C7OdounZ.js';
14
+ import './baseCommand-CpAJaJoG.js';
15
15
  import '@oclif/core';
16
16
  import '@tanstack/react-query';
17
17
  import 'react';
18
- import { u as useAppleApp } from './useAppleApp-ChI2baWJ.js';
18
+ import { u as useAppleApp } from './useAppleApp-BHUjGmw0.js';
19
19
  import 'uuid';
20
20
  import 'fast-glob';
21
21
  import 'stream';
@@ -27,12 +27,12 @@ import 'strip-ansi';
27
27
  import { T as Table } from './Table-FaNgpyeq.js';
28
28
  import { T as Title } from './Title-BCQtayg6.js';
29
29
  import 'open';
30
- import './baseGameCommand-Bap2bDqP.js';
30
+ import './baseGameCommand-Cbx4ywHl.js';
31
31
  import 'godot-export-presets';
32
32
  import 'marked';
33
33
  import 'marked-terminal';
34
34
  import 'qrcode';
35
- import { u as useAppleBundleId } from './useAppleBundleId-CUTbojvt.js';
35
+ import { u as useAppleBundleId } from './useAppleBundleId-Cv5maswG.js';
36
36
 
37
37
  const AppleAppDetails = (props) => {
38
38
  const { data, isLoading } = useAppleApp(props);
@@ -2,8 +2,8 @@ import { jsx } from 'react/jsx-runtime';
2
2
  import { QueryClientProvider } from '@tanstack/react-query';
3
3
  import { useScreenSize } from 'fullscreen-ink';
4
4
  import { Box } from 'ink';
5
- import { C as CommandProvider } from './baseGameCommand-Bap2bDqP.js';
6
- import { H as queryClient } from './baseCommand-C7OdounZ.js';
5
+ import { C as CommandProvider } from './baseGameCommand-Cbx4ywHl.js';
6
+ import { F as queryClient } from './baseCommand-CpAJaJoG.js';
7
7
  import 'axios';
8
8
  import 'node:fs';
9
9
  import 'luxon';
@@ -0,0 +1,14 @@
1
+ import { jsx, Fragment } from 'react/jsx-runtime';
2
+ import React from 'react';
3
+ import { E as ErrorBox } from './ErrorBox-DS5e6VmF.js';
4
+ import { G as GameProvider, d as GameContext } from './baseGameCommand-Cbx4ywHl.js';
5
+ import { C as Command } from './Command-B-MWAVPL.js';
6
+
7
+ const CommandGameErrorBoundary = ({ children }) => {
8
+ const { error } = React.useContext(GameContext);
9
+ if (!error) return /* @__PURE__ */ jsx(Fragment, { children });
10
+ return /* @__PURE__ */ jsx(ErrorBox, { error });
11
+ };
12
+ const CommandGame = ({ children, command }) => /* @__PURE__ */ jsx(Command, { command, children: /* @__PURE__ */ jsx(GameProvider, { children: /* @__PURE__ */ jsx(CommandGameErrorBoundary, { children }) }) });
13
+
14
+ export { CommandGame as C };
@@ -3,7 +3,7 @@ import { useQueryClient } from '@tanstack/react-query';
3
3
  import axios from 'axios';
4
4
  import { Box } from 'ink';
5
5
  import { useContext } from 'react';
6
- import { q as getAuthedHeaders, p as API_URL } from './baseCommand-C7OdounZ.js';
6
+ import { r as getAuthedHeaders, q as API_URL } from './baseCommand-CpAJaJoG.js';
7
7
  import 'ink-spinner';
8
8
  import 'node:crypto';
9
9
  import 'node:fs';
@@ -14,7 +14,7 @@ import 'readline-sync';
14
14
  import 'luxon';
15
15
  import 'isomorphic-git';
16
16
  import '@oclif/core';
17
- import { j as GameContext, i as cacheKeys } from './baseGameCommand-Bap2bDqP.js';
17
+ import { d as GameContext, i as cacheKeys } from './baseGameCommand-Cbx4ywHl.js';
18
18
  import 'uuid';
19
19
  import 'fast-glob';
20
20
  import 'stream';
@@ -0,0 +1,131 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { Box, Text } from 'ink';
3
+ import { DateTime } from 'luxon';
4
+ import { d as getShortDate, C as CredentialsType } from './baseCommand-CpAJaJoG.js';
5
+ import 'node:crypto';
6
+ import 'node:fs';
7
+ import 'node:path';
8
+ import 'node:readline';
9
+ import 'node:url';
10
+ import 'readline-sync';
11
+ import 'axios';
12
+ import 'isomorphic-git';
13
+ import '@oclif/core';
14
+ import '@tanstack/react-query';
15
+ import 'react';
16
+ import 'uuid';
17
+ import 'fast-glob';
18
+ import 'stream';
19
+ import 'yazl';
20
+ import 'socket.io-client';
21
+ import 'fullscreen-ink';
22
+ import { T as Title } from './Title-BCQtayg6.js';
23
+ import { T as TruncatedText } from './TruncatedText-DhEXCrnE.js';
24
+
25
+ const ENTITLEMENT_LABELS = {
26
+ "application-identifier": "App Identifier",
27
+ "com.apple.developer.team-identifier": "Team ID",
28
+ "keychain-access-groups": "Keychain Groups"
29
+ };
30
+ const getStatusColor = (status) => {
31
+ switch (status) {
32
+ case "expired":
33
+ return "red";
34
+ case "expiring-soon":
35
+ return "yellow";
36
+ default:
37
+ return "white";
38
+ }
39
+ };
40
+ const getExpiryStatus = (iso) => {
41
+ const dt = DateTime.fromISO(iso);
42
+ const now = DateTime.now();
43
+ if (dt < now) return "expired";
44
+ if (dt < now.plus({ months: 1 })) return "expiring-soon";
45
+ return null;
46
+ };
47
+ const ExpiryNote = ({ status }) => {
48
+ if (!status) return null;
49
+ const color = getStatusColor(status);
50
+ const message = status === "expired" ? "Expired" : "Expiring soon";
51
+ return /* @__PURE__ */ jsx(Text, { color, children: message });
52
+ };
53
+ const DetailRow = ({ expiryStatus, label, labelWidth, value }) => /* @__PURE__ */ jsxs(Box, { flexDirection: "row", children: [
54
+ /* @__PURE__ */ jsx(Box, { flexShrink: 0, marginRight: 2, width: labelWidth, children: /* @__PURE__ */ jsx(Text, { children: label }) }),
55
+ /* @__PURE__ */ jsxs(Box, { flexDirection: "row", gap: 1, children: [
56
+ /* @__PURE__ */ jsx(TruncatedText, { bold: true, color: getStatusColor(expiryStatus), children: value }),
57
+ /* @__PURE__ */ jsx(ExpiryNote, { status: expiryStatus })
58
+ ] })
59
+ ] });
60
+ const formatEntitlementValue = (value) => {
61
+ if (Array.isArray(value)) return value.map((v) => String(v)).join(", ");
62
+ if (value === null || value === void 0) return "";
63
+ if (typeof value === "object") return JSON.stringify(value);
64
+ return String(value);
65
+ };
66
+ const getRows = (cred) => {
67
+ const rows = [];
68
+ const { details, type } = cred;
69
+ if (type === CredentialsType.CERTIFICATE) {
70
+ const d = details;
71
+ if (d.certExpiresAt) {
72
+ rows.push({
73
+ expiryStatus: getExpiryStatus(d.certExpiresAt),
74
+ label: "Certificate Expiry",
75
+ value: getShortDate(DateTime.fromISO(d.certExpiresAt))
76
+ });
77
+ }
78
+ if (d.profileExpiresAt) {
79
+ rows.push({
80
+ expiryStatus: getExpiryStatus(d.profileExpiresAt),
81
+ label: "Profile Expiry",
82
+ value: getShortDate(DateTime.fromISO(d.profileExpiresAt))
83
+ });
84
+ }
85
+ if (d.profileEntitlements) {
86
+ for (const [key, value] of Object.entries(d.profileEntitlements)) {
87
+ rows.push({
88
+ label: ENTITLEMENT_LABELS[key] ?? key,
89
+ value: formatEntitlementValue(value)
90
+ });
91
+ }
92
+ }
93
+ }
94
+ if (type === CredentialsType.KEY) {
95
+ const d = details;
96
+ if (d.serviceAccountEmail) {
97
+ rows.push({ label: "Service Account Email", value: d.serviceAccountEmail });
98
+ }
99
+ }
100
+ return rows;
101
+ };
102
+ const CredentialDetailsView = ({ credential, title }) => {
103
+ const rows = getRows(credential);
104
+ if (rows.length === 0) {
105
+ return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [
106
+ title && /* @__PURE__ */ jsx(Title, { children: title }),
107
+ /* @__PURE__ */ jsx(Box, { marginLeft: 2, children: /* @__PURE__ */ jsx(Text, { children: "No additional details available for this credential." }) })
108
+ ] });
109
+ }
110
+ const labelWidth = Math.max(...rows.map((r) => r.label.length)) + 2;
111
+ return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [
112
+ title && /* @__PURE__ */ jsx(Title, { children: title }),
113
+ /* @__PURE__ */ jsxs(Box, { flexDirection: "column", marginLeft: 2, children: [
114
+ rows.map((row) => /* @__PURE__ */ jsx(
115
+ DetailRow,
116
+ {
117
+ expiryStatus: row.expiryStatus,
118
+ label: row.label,
119
+ labelWidth,
120
+ value: row.value
121
+ },
122
+ row.label
123
+ )),
124
+ /* @__PURE__ */ jsx(Box, { marginTop: 1, children: /* @__PURE__ */ jsx(DetailRow, { label: "ID", labelWidth, value: credential.id }) }),
125
+ /* @__PURE__ */ jsx(DetailRow, { label: "Serial", labelWidth, value: credential.serialNumber }),
126
+ /* @__PURE__ */ jsx(DetailRow, { label: "Created", labelWidth, value: getShortDate(credential.createdAt) })
127
+ ] })
128
+ ] });
129
+ };
130
+
131
+ export { CredentialDetailsView as C };
@@ -0,0 +1,21 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { Box, Text } from 'ink';
3
+ import { H as HandledError } from './baseCommand-CpAJaJoG.js';
4
+
5
+ const ErrorBox = ({ error }) => {
6
+ if (error instanceof HandledError) {
7
+ return /* @__PURE__ */ jsxs(Box, { flexDirection: "row", marginTop: 0, children: [
8
+ /* @__PURE__ */ jsx(Text, { color: "red", children: " \u203A " }),
9
+ /* @__PURE__ */ jsxs(Text, { children: [
10
+ "Error: ",
11
+ error.message
12
+ ] })
13
+ ] });
14
+ }
15
+ const stack = error.stack?.trim();
16
+ const fullLog = stack && stack.includes(error.message) ? stack : [error.message, stack].filter((part) => Boolean(part)).join("\n");
17
+ const logLines = fullLog ? fullLog.split("\n") : [error.message];
18
+ return /* @__PURE__ */ jsx(Box, { flexDirection: "column", marginTop: 0, children: logLines.map((line, i) => /* @__PURE__ */ jsx(Text, { color: "red", children: line }, i)) });
19
+ };
20
+
21
+ export { ErrorBox as E };
@@ -1,12 +1,14 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import { Text, Box } from 'ink';
3
3
  import { useState, useEffect, useContext } from 'react';
4
- import { c as getShortDate, P as Platform, l as getProject, L as getProjectPlatformProgress } from './baseCommand-C7OdounZ.js';
4
+ import { g as getShortUUID, d as getShortDate, P as Platform, m as getProject, L as getProjectPlatformProgress } from './baseCommand-CpAJaJoG.js';
5
5
  import 'ink-spinner';
6
- import { g as getShortUUID, m as makeHumanReadable, j as GameContext, k as CommandContext } from './baseGameCommand-Bap2bDqP.js';
6
+ import { m as makeHumanReadable, d as GameContext, j as CommandContext } from './baseGameCommand-Cbx4ywHl.js';
7
+ import 'luxon';
8
+ import 'string-length';
9
+ import 'strip-ansi';
7
10
  import '@tanstack/react-query';
8
11
  import 'axios';
9
- import 'luxon';
10
12
  import 'node:fs';
11
13
  import 'uuid';
12
14
  import 'fast-glob';
@@ -14,8 +16,6 @@ import 'stream';
14
16
  import 'yazl';
15
17
  import 'socket.io-client';
16
18
  import 'fullscreen-ink';
17
- import 'string-length';
18
- import 'strip-ansi';
19
19
  import { S as StatusTable } from './StatusTable-DzRWcMr4.js';
20
20
  import 'open';
21
21
  import '@inkjs/ui';
@@ -11,7 +11,7 @@ import 'readline-sync';
11
11
  import 'luxon';
12
12
  import 'axios';
13
13
  import 'isomorphic-git';
14
- import { H as queryClient, P as Platform, C as CredentialsType } from './baseCommand-C7OdounZ.js';
14
+ import { F as queryClient, P as Platform, C as CredentialsType } from './baseCommand-CpAJaJoG.js';
15
15
  import '@oclif/core';
16
16
  import { useMutation } from '@tanstack/react-query';
17
17
  import { v4 } from 'uuid';
@@ -24,12 +24,12 @@ import 'string-length';
24
24
  import 'strip-ansi';
25
25
  import 'open';
26
26
  import '@inkjs/ui';
27
- import { i as cacheKeys, j as GameContext } from './baseGameCommand-Bap2bDqP.js';
27
+ import { i as cacheKeys, d as GameContext } from './baseGameCommand-Cbx4ywHl.js';
28
28
  import 'marked';
29
29
  import 'marked-terminal';
30
30
  import 'qrcode';
31
31
  import 'godot-export-presets';
32
- import { i as importCredential } from './import-CICoTBgo.js';
32
+ import { i as importCredential } from './import-IVcS8WFM.js';
33
33
 
34
34
  async function importKeystore({ log = () => {
35
35
  }, ...opt }) {
@@ -1,11 +1,11 @@
1
- import { jsx, jsxs } from 'react/jsx-runtime';
2
- import { measureElement, Box, Text } from 'ink';
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { Box, Text } from 'ink';
3
3
  import Spinner from 'ink-spinner';
4
4
  import { useInfiniteQuery } from '@tanstack/react-query';
5
5
  import axios from 'axios';
6
6
  import { useState, useRef, useEffect } from 'react';
7
7
  import 'node:fs';
8
- import { q as getAuthedHeaders, p as API_URL, F as castArrayObjectDates, J as JobStatus, a5 as castJobDates, a3 as castObjectDates, a6 as getShortTime } from './baseCommand-C7OdounZ.js';
8
+ import { r as getAuthedHeaders, q as API_URL, E as castArrayObjectDates, J as JobStatus, a8 as castJobDates, a6 as castObjectDates, a9 as getShortTime } from './baseCommand-CpAJaJoG.js';
9
9
  import 'luxon';
10
10
  import 'node:crypto';
11
11
  import 'node:path';
@@ -19,11 +19,10 @@ import 'fast-glob';
19
19
  import 'stream';
20
20
  import 'yazl';
21
21
  import 'socket.io-client';
22
- import { i as cacheKeys, v as useJob, h as getStageColor, w as getMessageColor } from './baseGameCommand-Bap2bDqP.js';
23
- import { u as useWebSocket } from './useWebSocket-AjcqLcJX.js';
22
+ import { i as cacheKeys, t as useJob, f as getStageColor, v as getMessageColor } from './baseGameCommand-Cbx4ywHl.js';
23
+ import { u as useWebSocket } from './useWebSocket-DlNe_zDR.js';
24
24
  import 'fullscreen-ink';
25
- import stringLength from 'string-length';
26
- import stripAnsi from 'strip-ansi';
25
+ import { T as TruncatedText } from './TruncatedText-DhEXCrnE.js';
27
26
  import { T as Title } from './Title-BCQtayg6.js';
28
27
 
29
28
  function arrayToDictionary(array, key = "id") {
@@ -176,24 +175,6 @@ function useJobLogTail({ isWatching, jobId, length, projectId }) {
176
175
  };
177
176
  }
178
177
 
179
- const TruncatedText = ({ children, wrap, ...textPropsWithoutWrap }) => {
180
- const ref = useRef();
181
- const [width, setWidth] = useState(null);
182
- useEffect(() => {
183
- if (!ref.current) return;
184
- const { width: measuredWidth } = measureElement(ref.current);
185
- setWidth(measuredWidth);
186
- }, []);
187
- const getTruncated = (input) => {
188
- const withoutCrlf = input.replaceAll(/[\n\r]/g, "");
189
- if (width === null) return withoutCrlf;
190
- const withoutAnsi = stripAnsi(withoutCrlf);
191
- const textLength = stringLength(withoutAnsi);
192
- return textLength > width ? withoutCrlf.slice(0, Math.max(0, width)) : withoutCrlf;
193
- };
194
- return /* @__PURE__ */ jsx(Box, { ref, children: /* @__PURE__ */ jsx(Text, { ...textPropsWithoutWrap, children: getTruncated(children) + "\x1B[0m" }) });
195
- };
196
-
197
178
  const JobLogLine = ({ log, showTimestamp = true, showStage = true }) => {
198
179
  const stageColor = getStageColor(log.stage);
199
180
  const messageColor = getMessageColor(log.level);
@@ -1,5 +1,5 @@
1
1
  import { useMutation } from '@tanstack/react-query';
2
- import { a7 as LEGACY_DEFAULT_IGNORED_FILES_GLOBS, a8 as LEGACY_DEFAULT_SHIPPED_FILES_GLOBS, x as DEFAULT_PLATFORM_GLOBS, P as Platform, l as getProject, a9 as getNewUploadTicket, aa as startJobsFromUpload, H as queryClient, a1 as LogLevel } from './baseCommand-C7OdounZ.js';
2
+ import { aa as LEGACY_DEFAULT_IGNORED_FILES_GLOBS, ab as LEGACY_DEFAULT_SHIPPED_FILES_GLOBS, y as DEFAULT_PLATFORM_GLOBS, P as Platform, m as getProject, ac as getNewUploadTicket, ad as startJobsFromUpload, F as queryClient, a3 as LogLevel } from './baseCommand-CpAJaJoG.js';
3
3
  import 'node:crypto';
4
4
  import fs__default from 'node:fs';
5
5
  import 'node:path';
@@ -11,11 +11,11 @@ import 'axios';
11
11
  import 'isomorphic-git';
12
12
  import '@oclif/core';
13
13
  import { useState } from 'react';
14
- import { x as getFileHash, i as cacheKeys, y as getPlatformName, w as getMessageColor } from './baseGameCommand-Bap2bDqP.js';
14
+ import { w as getFileHash, i as cacheKeys, x as getPlatformName, v as getMessageColor } from './baseGameCommand-Cbx4ywHl.js';
15
15
  import { v4 } from 'uuid';
16
16
  import fg from 'fast-glob';
17
17
  import { Readable, Transform } from 'stream';
18
- import { q as queryProjectCredentials } from './useProjectCredentials-5Ycm5B4x.js';
18
+ import { q as queryProjectCredentials } from './useProjectCredentials-ADtDLDmx.js';
19
19
  import { ZipFile } from 'yazl';
20
20
  import 'socket.io-client';
21
21
  import 'fullscreen-ink';
@@ -23,15 +23,15 @@ import { Box, Text } from 'ink';
23
23
  import { g as getCWDGitInfo } from './git-BpsfNFZ_.js';
24
24
  import { jsxs, jsx } from 'react/jsx-runtime';
25
25
  import 'ink-spinner';
26
- import { u as useJobWatching, a as JobLogLine } from './JobLogTail-CDGqKKin.js';
26
+ import 'string-length';
27
+ import 'strip-ansi';
28
+ import { u as useJobWatching, a as JobLogLine } from './JobLogTail-BwFUt8LB.js';
27
29
  import 'open';
28
30
  import '@inkjs/ui';
29
31
  import 'marked';
30
32
  import 'marked-terminal';
31
33
  import { P as ProgressSpinner } from './ProgressSpinner-Um6ARKlk.js';
32
34
  import 'qrcode';
33
- import 'string-length';
34
- import 'strip-ansi';
35
35
  import 'godot-export-presets';
36
36
 
37
37
  const WARN_LEARN_MORE = "Learn more: https://shipth.is/docs/guides/controlling-uploaded-files";
@@ -3,17 +3,17 @@ import { Box, Text } from 'ink';
3
3
  import Spinner from 'ink-spinner';
4
4
  import { DateTime } from 'luxon';
5
5
  import { useState, useEffect } from 'react';
6
- import { J as JobStatus } from './baseCommand-C7OdounZ.js';
6
+ import { J as JobStatus } from './baseCommand-CpAJaJoG.js';
7
7
  import '@tanstack/react-query';
8
8
  import 'axios';
9
9
  import 'node:fs';
10
- import { e as getJobSummary, h as getStageColor, f as getJobStatusColor } from './baseGameCommand-Bap2bDqP.js';
10
+ import { e as getJobSummary, f as getStageColor, h as getJobStatusColor } from './baseGameCommand-Cbx4ywHl.js';
11
11
  import 'uuid';
12
12
  import 'fast-glob';
13
13
  import 'stream';
14
14
  import 'yazl';
15
15
  import 'socket.io-client';
16
- import { u as useJobWatching } from './JobLogTail-CDGqKKin.js';
16
+ import { u as useJobWatching } from './JobLogTail-BwFUt8LB.js';
17
17
  import 'fullscreen-ink';
18
18
  import { a as StatusRow, b as StatusRowLabel } from './StatusTable-DzRWcMr4.js';
19
19
  import { T as Title } from './Title-BCQtayg6.js';
@@ -10,11 +10,11 @@ import 'readline-sync';
10
10
  import 'luxon';
11
11
  import 'axios';
12
12
  import 'isomorphic-git';
13
- import './baseCommand-C7OdounZ.js';
13
+ import './baseCommand-CpAJaJoG.js';
14
14
  import '@oclif/core';
15
15
  import '@tanstack/react-query';
16
16
  import 'react';
17
- import { u as useProjectCredentials, g as getProjectCredentialSummary } from './useProjectCredentials-5Ycm5B4x.js';
17
+ import { u as useProjectCredentials, g as getProjectCredentialSummary } from './useProjectCredentials-ADtDLDmx.js';
18
18
  import 'uuid';
19
19
  import 'fast-glob';
20
20
  import 'stream';
@@ -0,0 +1,25 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { measureElement, Box, Text } from 'ink';
3
+ import { useRef, useState, useEffect } from 'react';
4
+ import stringLength from 'string-length';
5
+ import stripAnsi from 'strip-ansi';
6
+
7
+ const TruncatedText = ({ children, wrap, ...textPropsWithoutWrap }) => {
8
+ const ref = useRef();
9
+ const [width, setWidth] = useState(null);
10
+ useEffect(() => {
11
+ if (!ref.current) return;
12
+ const { width: measuredWidth } = measureElement(ref.current);
13
+ setWidth(measuredWidth);
14
+ }, []);
15
+ const getTruncated = (input) => {
16
+ const withoutCrlf = input.replaceAll(/[\n\r]/g, "");
17
+ if (width === null) return withoutCrlf;
18
+ const withoutAnsi = stripAnsi(withoutCrlf);
19
+ const textLength = stringLength(withoutAnsi);
20
+ return textLength > width ? withoutCrlf.slice(0, Math.max(0, width)) : withoutCrlf;
21
+ };
22
+ return /* @__PURE__ */ jsx(Box, { ref, children: /* @__PURE__ */ jsx(Text, { ...textPropsWithoutWrap, children: getTruncated(children) + "\x1B[0m" }) });
23
+ };
24
+
25
+ export { TruncatedText as T };
@@ -10,7 +10,7 @@ import 'readline-sync';
10
10
  import 'luxon';
11
11
  import axios from 'axios';
12
12
  import 'isomorphic-git';
13
- import { c as getShortDate, q as getAuthedHeaders, p as API_URL, F as castArrayObjectDates } from './baseCommand-C7OdounZ.js';
13
+ import { g as getShortUUID, d as getShortDate, r as getAuthedHeaders, q as API_URL, E as castArrayObjectDates } from './baseCommand-CpAJaJoG.js';
14
14
  import '@oclif/core';
15
15
  import { useQuery } from '@tanstack/react-query';
16
16
  import 'react';
@@ -18,7 +18,7 @@ import 'uuid';
18
18
  import 'fast-glob';
19
19
  import 'stream';
20
20
  import 'yazl';
21
- import { i as cacheKeys, g as getShortUUID } from './baseGameCommand-Bap2bDqP.js';
21
+ import { i as cacheKeys } from './baseGameCommand-Cbx4ywHl.js';
22
22
  import 'socket.io-client';
23
23
  import 'fullscreen-ink';
24
24
  import { T as Table } from './Table-FaNgpyeq.js';
@@ -1,4 +1,4 @@
1
- import { B as BaseAuthenticatedCommand } from './baseGameCommand-Bap2bDqP.js';
1
+ import { B as BaseAuthenticatedCommand } from './baseGameCommand-Cbx4ywHl.js';
2
2
 
3
3
  class BaseAppleCommand extends BaseAuthenticatedCommand {
4
4
  async init() {