shipthis 0.1.3 → 0.1.4

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 (47) hide show
  1. package/dist/AppleBundleIdDetails-Dxo99Sgu.js +72 -0
  2. package/dist/Command-1YAl_0zS.js +204 -0
  3. package/dist/CommandGame-CZUx_VQu.js +8 -0
  4. package/dist/CreateKeystore-BqJdpvsI.js +56 -0
  5. package/dist/commands/apple/apiKey/create.js +1 -1
  6. package/dist/commands/apple/apiKey/export.js +1 -1
  7. package/dist/commands/apple/apiKey/import.js +1 -1
  8. package/dist/commands/apple/apiKey/status.js +1 -1
  9. package/dist/commands/apple/certificate/create.js +1 -1
  10. package/dist/commands/apple/certificate/export.js +1 -1
  11. package/dist/commands/apple/certificate/import.js +1 -1
  12. package/dist/commands/apple/certificate/status.js +1 -1
  13. package/dist/commands/apple/status.js +1 -1
  14. package/dist/commands/game/android/apiKey/connect.js +3 -3
  15. package/dist/commands/game/android/apiKey/create.js +3 -3
  16. package/dist/commands/game/android/apiKey/export.js +1 -1
  17. package/dist/commands/game/android/apiKey/import.js +1 -1
  18. package/dist/commands/game/android/apiKey/status.js +1 -1
  19. package/dist/commands/game/android/keyStore/create.js +3 -3
  20. package/dist/commands/game/android/keyStore/export.js +1 -1
  21. package/dist/commands/game/android/keyStore/import.js +1 -1
  22. package/dist/commands/game/android/keyStore/status.js +1 -1
  23. package/dist/commands/game/android/status.js +1 -1
  24. package/dist/commands/game/android/wizard.js +5 -5
  25. package/dist/commands/game/build/download.js +1 -1
  26. package/dist/commands/game/build/list.js +2 -2
  27. package/dist/commands/game/details.js +1 -1
  28. package/dist/commands/game/ios/app/addTester.js +1 -1
  29. package/dist/commands/game/ios/app/create.js +1 -1
  30. package/dist/commands/game/ios/app/status.js +2 -2
  31. package/dist/commands/game/ios/app/sync.js +1 -1
  32. package/dist/commands/game/ios/profile/create.js +1 -1
  33. package/dist/commands/game/ios/profile/export.js +1 -1
  34. package/dist/commands/game/ios/profile/import.js +1 -1
  35. package/dist/commands/game/ios/profile/status.js +1 -1
  36. package/dist/commands/game/ios/status.js +2 -2
  37. package/dist/commands/game/job/list.js +1 -1
  38. package/dist/commands/game/job/status.js +2 -2
  39. package/dist/commands/game/list.js +1 -1
  40. package/dist/commands/game/status.js +1 -1
  41. package/dist/commands/status.js +1 -1
  42. package/dist/index-DE2Hvx2o.js +122 -0
  43. package/dist/index-X__XH_Fd.js +144 -0
  44. package/dist/useJobWatching-BcBJ5dy1.js +43 -0
  45. package/npm-shrinkwrap.json +2 -2
  46. package/oclif.manifest.json +219 -219
  47. package/package.json +1 -1
@@ -0,0 +1,72 @@
1
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
+ import { Box, Text } from 'ink';
3
+ import Spinner from 'ink-spinner';
4
+ import './index-BQRxiyqn.js';
5
+ import 'axios';
6
+ import '@tanstack/react-query';
7
+ import 'crypto';
8
+ import 'fs';
9
+ import 'readline-sync';
10
+ import 'node:readline';
11
+ import 'node:path';
12
+ import 'node:url';
13
+ import 'react';
14
+ import 'crypto-js';
15
+ import 'uuid';
16
+ import 'luxon';
17
+ import 'socket.io-client';
18
+ import 'isomorphic-git';
19
+ import '@oclif/core';
20
+ import { u as useAppleApp } from './useAppleApp-DnSjUfSs.js';
21
+ import 'fast-glob';
22
+ import 'yazl';
23
+ import '@inkjs/ui';
24
+ import { T as Title } from './Title-BCQtayg6.js';
25
+ import './Command-1YAl_0zS.js';
26
+ import 'qrcode';
27
+ import { T as Table } from './Table-CvM6pccN.js';
28
+ import 'string-length';
29
+ import 'strip-ansi';
30
+ import { u as useAppleBundleId } from './useAppleBundleId-BNI8swhC.js';
31
+
32
+ const AppleAppDetails = (props) => {
33
+ const { data, isLoading } = useAppleApp(props);
34
+ return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [
35
+ /* @__PURE__ */ jsx(Title, { children: "App Details (in the Apple Developer Portal)" }),
36
+ isLoading && /* @__PURE__ */ jsx(Spinner, { type: "dots" }),
37
+ data && data.summary && /* @__PURE__ */ jsx(Table, { data: [data.summary] })
38
+ ] });
39
+ };
40
+
41
+ const AppleBundleIdDetails = (props) => {
42
+ const { data, isLoading } = useAppleBundleId(props);
43
+ const { bundleIdSummary, capabilitiesTable, shouldSyncCapabilities, capabilities } = data || {};
44
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
45
+ /* @__PURE__ */ jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [
46
+ /* @__PURE__ */ jsx(Title, { children: "BundleId Details (in the Apple Developer Portal)" }),
47
+ isLoading && /* @__PURE__ */ jsx(Spinner, { type: "dots" }),
48
+ bundleIdSummary && /* @__PURE__ */ jsx(Table, { data: [bundleIdSummary] })
49
+ ] }),
50
+ capabilities && /* @__PURE__ */ jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [
51
+ /* @__PURE__ */ jsx(Title, { children: "Capabilities enabled in the BundleId" }),
52
+ /* @__PURE__ */ jsx(
53
+ Table,
54
+ {
55
+ data: capabilities.map((c) => {
56
+ return { capability: `${c}` };
57
+ })
58
+ }
59
+ )
60
+ ] }),
61
+ capabilitiesTable && /* @__PURE__ */ jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [
62
+ /* @__PURE__ */ jsx(Title, { children: "BundleId Capability Check" }),
63
+ /* @__PURE__ */ jsx(Table, { data: capabilitiesTable })
64
+ ] }),
65
+ shouldSyncCapabilities && /* @__PURE__ */ jsxs(Box, { flexDirection: "column", children: [
66
+ /* @__PURE__ */ jsx(Text, { bold: true, children: "The capabilities are out of sync with the Apple Developer Portal." }),
67
+ /* @__PURE__ */ jsx(Text, { bold: true, children: "Run shipthis game ios app sync" })
68
+ ] })
69
+ ] });
70
+ };
71
+
72
+ export { AppleAppDetails as A, AppleBundleIdDetails as a };
@@ -0,0 +1,204 @@
1
+ import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
2
+ import { Text, useInput, Box } from 'ink';
3
+ import React, { useState, useEffect, useContext, useRef } from 'react';
4
+ import Spinner from 'ink-spinner';
5
+ import open from 'open';
6
+ import { g as getShortUUID, j as getPlatformName, s as scriptDir } from './index-B6V7vGOj.js';
7
+ import { c as cacheKeys, u as useAndroidServiceAccountTestResult, K as KeyTestStatus, a as KeyTestError } from './useAndroidServiceAccountTestResult-D_30xIJA.js';
8
+ import { P as Platform, a5 as getShortDateTime, p as getAuthedHeaders, q as API_URL, J as castArrayObjectDates, K as JobStatus, a6 as getShortTimeDelta, a4 as getJob, H as getProject, a1 as getShortAuthRequiredUrl, a7 as queryClient, Z as WEB_URL } from './index-BQRxiyqn.js';
9
+ import '@inkjs/ui';
10
+ import axios from 'axios';
11
+ import { useQuery, QueryClientProvider } from '@tanstack/react-query';
12
+ import { setOptions, parse } from 'marked';
13
+ import fs__default from 'fs';
14
+ import TerminalRenderer from 'marked-terminal';
15
+ import path from 'path';
16
+ import 'qrcode';
17
+ import 'string-length';
18
+ import 'strip-ansi';
19
+ import 'luxon';
20
+ import 'uuid';
21
+ import 'fast-glob';
22
+ import 'yazl';
23
+ import 'socket.io-client';
24
+ import 'crypto';
25
+ import 'readline-sync';
26
+ import 'node:readline';
27
+ import 'node:path';
28
+ import 'node:url';
29
+ import 'crypto-js';
30
+ import 'isomorphic-git';
31
+ import '@oclif/core';
32
+
33
+ async function queryBuilds({ projectId, ...pageAndSortParams }) {
34
+ try {
35
+ const headers = getAuthedHeaders();
36
+ const url = `${API_URL}/projects/${projectId}/builds`;
37
+ const response = await axios.get(url, { headers, params: pageAndSortParams });
38
+ return {
39
+ ...response.data,
40
+ data: castArrayObjectDates(response.data.data)
41
+ };
42
+ } catch (error) {
43
+ console.warn("queryBuilds Error", error);
44
+ throw error;
45
+ }
46
+ }
47
+ function getBuildSummary(build) {
48
+ const filename = build.platform == Platform.IOS ? "output.ipa" : "output.aab";
49
+ return {
50
+ id: getShortUUID(build.id),
51
+ ...getJobDetailsSummary(build.jobDetails),
52
+ platform: getPlatformName(build.platform),
53
+ jobId: getShortUUID(build.jobId),
54
+ createdAt: getShortDateTime(build.createdAt),
55
+ cmd: `shipthis game build download ${getShortUUID(build.id)} ${filename}`
56
+ };
57
+ }
58
+ const useBuilds = (props) => {
59
+ const queryResult = useQuery({
60
+ queryKey: cacheKeys.builds(props),
61
+ queryFn: async () => queryBuilds(props)
62
+ });
63
+ return queryResult;
64
+ };
65
+
66
+ function getJobDetailsSummary(jobDetails) {
67
+ const semanticVersion = jobDetails?.semanticVersion || "N/A";
68
+ const buildNumber = jobDetails?.buildNumber || "N/A";
69
+ const gitCommit = jobDetails?.gitCommitHash ? getShortUUID(jobDetails?.gitCommitHash) : "N/A";
70
+ const gitBranch = jobDetails?.gitBranch || "N/A";
71
+ return {
72
+ version: `${semanticVersion} (${buildNumber})`,
73
+ gitInfo: `${gitCommit} (${gitBranch})`
74
+ };
75
+ }
76
+ function getJobSummary(job, timeNow) {
77
+ const inProgress = ![JobStatus.COMPLETED, JobStatus.FAILED].includes(job.status);
78
+ return {
79
+ id: getShortUUID(job.id),
80
+ ...getJobDetailsSummary(job.details),
81
+ platform: getPlatformName(job.type),
82
+ status: job.status,
83
+ createdAt: getShortDateTime(job.createdAt),
84
+ runtime: getShortTimeDelta(job.createdAt, inProgress ? timeNow : job.updatedAt)
85
+ };
86
+ }
87
+ const useJob = (props) => {
88
+ return useQuery({
89
+ queryKey: cacheKeys.job(props),
90
+ queryFn: () => getJob(props.jobId, props.projectId)
91
+ });
92
+ };
93
+
94
+ const CommandContext = React.createContext({
95
+ command: null,
96
+ setCommand: (command) => {
97
+ }
98
+ });
99
+ const CommandProvider = (props) => {
100
+ const [command, setCommand] = useState(props.command || null);
101
+ return /* @__PURE__ */ jsx(CommandContext.Provider, { value: { command, setCommand }, children: props.children });
102
+ };
103
+
104
+ const GameContext = React.createContext({
105
+ gameId: null,
106
+ game: null,
107
+ setGameId: (gameId) => {
108
+ }
109
+ });
110
+ const GameProvider = ({ children }) => {
111
+ const [gameId, setGameId] = useState(null);
112
+ const [game, setGame] = useState(null);
113
+ const { command } = React.useContext(CommandContext);
114
+ const handleLoad = async () => {
115
+ if (command) {
116
+ const commandGameId = await command.getGameId();
117
+ if (commandGameId) setGameId(commandGameId);
118
+ }
119
+ };
120
+ const handleGameIdChange = async () => {
121
+ if (!gameId) {
122
+ setGame(null);
123
+ return;
124
+ }
125
+ const game2 = await getProject(gameId);
126
+ setGame(game2);
127
+ };
128
+ useEffect(() => {
129
+ handleGameIdChange();
130
+ }, [gameId]);
131
+ useEffect(() => {
132
+ handleLoad();
133
+ }, [command]);
134
+ return /* @__PURE__ */ jsx(GameContext.Provider, { value: { gameId, game, setGameId }, children });
135
+ };
136
+
137
+ const entrypointPath = fs__default.realpathSync(process.argv[1]);
138
+ const root = path.dirname(entrypointPath);
139
+ const Markdown = ({ filename, templateVars, ...options }) => {
140
+ setOptions({ renderer: new TerminalRenderer(options) });
141
+ const mdPath = path.join(root, "..", "assets", "markdown", filename);
142
+ const mdTemplate = fs__default.readFileSync(mdPath, "utf8").trim();
143
+ const markdown = !templateVars ? mdTemplate : mdTemplate.replace(/\${(.*?)}/g, (_, key) => templateVars[key.trim()] || "");
144
+ return /* @__PURE__ */ jsx(Text, { children: parse(markdown).trim() });
145
+ };
146
+
147
+ scriptDir(import.meta);
148
+ const getIsAppFound = (result) => {
149
+ const isFound = result?.status === KeyTestStatus.SUCCESS || result?.status === KeyTestStatus.ERROR && result?.error === KeyTestError.NOT_INVITED;
150
+ return isFound;
151
+ };
152
+ const CreateGooglePlayGame = (props) => {
153
+ const { gameId } = useContext(GameContext);
154
+ return /* @__PURE__ */ jsx(Fragment, { children: gameId && /* @__PURE__ */ jsx(Create, { gameId, ...props }) });
155
+ };
156
+ const Create = ({ onComplete, onError, gameId, ...boxProps }) => {
157
+ const { data: result, isFetching } = useAndroidServiceAccountTestResult({ projectId: gameId });
158
+ const { data: builds } = useBuilds({ projectId: gameId, pageNumber: 0 });
159
+ const previousIsFound = useRef(false);
160
+ useEffect(() => {
161
+ const isFound = getIsAppFound(result);
162
+ if (previousIsFound.current === false && isFound) {
163
+ onComplete();
164
+ }
165
+ previousIsFound.current = isFound;
166
+ }, [result]);
167
+ useInput(async (input) => {
168
+ if (!gameId) return;
169
+ switch (input) {
170
+ case "r":
171
+ queryClient.invalidateQueries({
172
+ queryKey: cacheKeys.androidKeyTestResult({ projectId: gameId })
173
+ });
174
+ break;
175
+ case "d":
176
+ const dashUrl = await getShortAuthRequiredUrl(`/games/${getShortUUID(gameId)}/builds`);
177
+ await open(dashUrl);
178
+ }
179
+ if (input !== "r") return;
180
+ queryClient.invalidateQueries({
181
+ queryKey: cacheKeys.androidKeyTestResult({ projectId: gameId })
182
+ });
183
+ });
184
+ const initialBuild = builds?.data.find((build) => build.platform === Platform.ANDROID);
185
+ const downloadCmd = initialBuild ? `${getBuildSummary(initialBuild).cmd}` : "";
186
+ const templateVars = {
187
+ downloadCmd,
188
+ dashboardURL: new URL(`/games/${getShortUUID(gameId)}/builds`, WEB_URL).toString()
189
+ };
190
+ return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs(Box, { flexDirection: "column", gap: 1, ...boxProps, children: [
191
+ /* @__PURE__ */ jsxs(Box, { flexDirection: "row", gap: 1, children: [
192
+ /* @__PURE__ */ jsx(Text, { bold: true, children: isFetching ? "Checking..." : "ShipThis has not detected your game in Google Play. Press R to test again." }),
193
+ isFetching && /* @__PURE__ */ jsx(Spinner, { type: "dots" })
194
+ ] }),
195
+ /* @__PURE__ */ jsx(Markdown, { filename: "create-google-play-game.md", templateVars })
196
+ ] }) });
197
+ };
198
+
199
+ const Command = ({ children, command }) => {
200
+ const width = Math.min(160, process.stdout.columns || 80);
201
+ return /* @__PURE__ */ jsx(QueryClientProvider, { client: queryClient, children: /* @__PURE__ */ jsx(CommandProvider, { command, children: /* @__PURE__ */ jsx(Box, { width, flexDirection: "column", children }) }) });
202
+ };
203
+
204
+ export { Command as C, GameProvider as G, Markdown as M, GameContext as a, useBuilds as b, getBuildSummary as c, CommandContext as d, CreateGooglePlayGame as e, getJobSummary as g, queryBuilds as q, useJob as u };
@@ -0,0 +1,8 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { C as Command, G as GameProvider } from './Command-1YAl_0zS.js';
3
+
4
+ const CommandGame = ({ children, command }) => {
5
+ return /* @__PURE__ */ jsx(Command, { command, children: /* @__PURE__ */ jsx(GameProvider, { children }) });
6
+ };
7
+
8
+ export { CommandGame as C };
@@ -0,0 +1,56 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { Box } from 'ink';
3
+ import axios from 'axios';
4
+ import { useContext } from 'react';
5
+ import { useQueryClient } from '@tanstack/react-query';
6
+ import { p as getAuthedHeaders, q as API_URL } from './index-BQRxiyqn.js';
7
+ import { c as cacheKeys } from './useAndroidServiceAccountTestResult-D_30xIJA.js';
8
+ import { a as GameContext } from './Command-1YAl_0zS.js';
9
+ import 'ink-spinner';
10
+ import '@inkjs/ui';
11
+ import 'open';
12
+ import 'crypto';
13
+ import 'fs';
14
+ import 'readline-sync';
15
+ import 'node:readline';
16
+ import 'node:path';
17
+ import 'node:url';
18
+ import 'luxon';
19
+ import 'uuid';
20
+ import 'fast-glob';
21
+ import 'yazl';
22
+ import 'socket.io-client';
23
+ import 'isomorphic-git';
24
+ import '@oclif/core';
25
+ import 'qrcode';
26
+ import { R as RunWithSpinner } from './RunWithSpinner-BVXNWGD3.js';
27
+ import 'string-length';
28
+ import 'strip-ansi';
29
+
30
+ const CreateKeystore = ({ onComplete, onError, ...boxProps }) => {
31
+ const { gameId } = useContext(GameContext);
32
+ const queryClient = useQueryClient();
33
+ const handleCreate = async () => {
34
+ try {
35
+ if (!gameId) throw new Error("No game");
36
+ const headers = await getAuthedHeaders();
37
+ await axios.post(`${API_URL}/projects/${gameId}/credentials/android/certificate`, null, {
38
+ headers
39
+ });
40
+ queryClient.invalidateQueries({ queryKey: cacheKeys.projectCredentials({ projectId: gameId, pageNumber: 0 }) });
41
+ } catch (err) {
42
+ onError(err);
43
+ }
44
+ };
45
+ return /* @__PURE__ */ jsx(Box, { flexDirection: "column", gap: 1, ...boxProps, children: /* @__PURE__ */ jsx(
46
+ RunWithSpinner,
47
+ {
48
+ executeMethod: handleCreate,
49
+ msgInProgress: "Creating Keystore...",
50
+ msgComplete: "Keystore created",
51
+ onComplete
52
+ }
53
+ ) });
54
+ };
55
+
56
+ export { CreateKeystore as C };
@@ -4,7 +4,7 @@ import { render } from 'ink';
4
4
  import { P as Platform, C as CredentialsType, A as ApiKey, a as ApiKeyType, U as UserRole } from '../../../index-BQRxiyqn.js';
5
5
  import { g as getUserCredentials } from '../../../index-BuZmCvZh.js';
6
6
  import 'react';
7
- import { C as Command } from '../../../Command-Cl-JfhTy.js';
7
+ import { C as Command } from '../../../Command-1YAl_0zS.js';
8
8
  import 'ink-spinner';
9
9
  import 'axios';
10
10
  import 'crypto-js';
@@ -5,7 +5,7 @@ import * as fs from 'fs';
5
5
  import { B as BaseAuthenticatedCommand, P as Platform, C as CredentialsType } from '../../../index-BQRxiyqn.js';
6
6
  import { g as getUserCredentials } from '../../../index-BuZmCvZh.js';
7
7
  import 'react';
8
- import { C as Command } from '../../../Command-Cl-JfhTy.js';
8
+ import { C as Command } from '../../../Command-1YAl_0zS.js';
9
9
  import 'ink-spinner';
10
10
  import 'axios';
11
11
  import 'crypto-js';
@@ -5,7 +5,7 @@ import * as fs from 'fs';
5
5
  import { B as BaseAuthenticatedCommand, P as Platform, C as CredentialsType } from '../../../index-BQRxiyqn.js';
6
6
  import { g as getUserCredentials } from '../../../index-BuZmCvZh.js';
7
7
  import 'react';
8
- import { C as Command } from '../../../Command-Cl-JfhTy.js';
8
+ import { C as Command } from '../../../Command-1YAl_0zS.js';
9
9
  import 'ink-spinner';
10
10
  import 'axios';
11
11
  import 'crypto-js';
@@ -3,7 +3,7 @@ import { Flags } from '@oclif/core';
3
3
  import { Box, Text, render } from 'ink';
4
4
  import { b as getShortDate, A as ApiKey, C as CredentialsType, P as Platform, B as BaseAuthenticatedCommand } from '../../../index-BQRxiyqn.js';
5
5
  import 'react';
6
- import { C as Command } from '../../../Command-Cl-JfhTy.js';
6
+ import { C as Command } from '../../../Command-1YAl_0zS.js';
7
7
  import Spinner from 'ink-spinner';
8
8
  import 'axios';
9
9
  import 'crypto-js';
@@ -4,7 +4,7 @@ import { render } from 'ink';
4
4
  import { m as CertificateType, l as Certificate, P as Platform, C as CredentialsType } from '../../../index-BQRxiyqn.js';
5
5
  import { g as getUserCredentials } from '../../../index-BuZmCvZh.js';
6
6
  import 'react';
7
- import { C as Command } from '../../../Command-Cl-JfhTy.js';
7
+ import { C as Command } from '../../../Command-1YAl_0zS.js';
8
8
  import 'ink-spinner';
9
9
  import 'axios';
10
10
  import 'crypto-js';
@@ -5,7 +5,7 @@ import * as fs from 'fs';
5
5
  import { B as BaseAuthenticatedCommand, P as Platform, C as CredentialsType } from '../../../index-BQRxiyqn.js';
6
6
  import { g as getUserCredentials } from '../../../index-BuZmCvZh.js';
7
7
  import 'react';
8
- import { C as Command } from '../../../Command-Cl-JfhTy.js';
8
+ import { C as Command } from '../../../Command-1YAl_0zS.js';
9
9
  import 'ink-spinner';
10
10
  import 'axios';
11
11
  import 'crypto-js';
@@ -5,7 +5,7 @@ import * as fs from 'fs';
5
5
  import { B as BaseAuthenticatedCommand, P as Platform, C as CredentialsType } from '../../../index-BQRxiyqn.js';
6
6
  import { g as getUserCredentials } from '../../../index-BuZmCvZh.js';
7
7
  import 'react';
8
- import { C as Command } from '../../../Command-Cl-JfhTy.js';
8
+ import { C as Command } from '../../../Command-1YAl_0zS.js';
9
9
  import 'ink-spinner';
10
10
  import 'axios';
11
11
  import 'crypto-js';
@@ -3,7 +3,7 @@ import { Flags } from '@oclif/core';
3
3
  import { Box, Text, render } from 'ink';
4
4
  import { b as getShortDate, l as Certificate, m as CertificateType, P as Platform, C as CredentialsType, B as BaseAuthenticatedCommand } from '../../../index-BQRxiyqn.js';
5
5
  import 'react';
6
- import { C as Command } from '../../../Command-Cl-JfhTy.js';
6
+ import { C as Command } from '../../../Command-1YAl_0zS.js';
7
7
  import Spinner from 'ink-spinner';
8
8
  import 'axios';
9
9
  import 'crypto-js';
@@ -2,7 +2,7 @@ import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { B as BaseAuthenticatedCommand } from '../../index-BQRxiyqn.js';
3
3
  import 'react';
4
4
  import { render } from 'ink';
5
- import { C as Command } from '../../Command-Cl-JfhTy.js';
5
+ import { C as Command } from '../../Command-1YAl_0zS.js';
6
6
  import 'ink-spinner';
7
7
  import 'axios';
8
8
  import 'crypto-js';
@@ -3,12 +3,12 @@ import { render } from 'ink';
3
3
  import { Flags } from '@oclif/core';
4
4
  import { S as getGoogleStatus, V as disconnectGoogle } from '../../../../index-BQRxiyqn.js';
5
5
  import 'react';
6
- import '../../../../Command-Cl-JfhTy.js';
6
+ import '../../../../Command-1YAl_0zS.js';
7
7
  import 'ink-spinner';
8
8
  import '@inkjs/ui';
9
9
  import 'axios';
10
10
  import '@tanstack/react-query';
11
- import { C as ConnectGoogle } from '../../../../index-B5XHQfs2.js';
11
+ import { C as ConnectGoogle } from '../../../../index-DE2Hvx2o.js';
12
12
  import 'crypto';
13
13
  import 'fs';
14
14
  import 'readline-sync';
@@ -24,7 +24,7 @@ import 'isomorphic-git';
24
24
  import 'qrcode';
25
25
  import 'string-length';
26
26
  import 'strip-ansi';
27
- import { C as CommandGame } from '../../../../CommandGame--SAa3wEL.js';
27
+ import { C as CommandGame } from '../../../../CommandGame-CZUx_VQu.js';
28
28
  import { B as BaseGameAndroidCommand } from '../../../../baseGameAndroidCommand-B-CFhPnE.js';
29
29
  import 'path';
30
30
  import '@expo/apple-utils/build/index.js';
@@ -2,7 +2,7 @@ import { jsx } from 'react/jsx-runtime';
2
2
  import { render } from 'ink';
3
3
  import { Flags } from '@oclif/core';
4
4
  import 'react';
5
- import '../../../../Command-Cl-JfhTy.js';
5
+ import '../../../../Command-1YAl_0zS.js';
6
6
  import { P as Platform, C as CredentialsType } from '../../../../index-BQRxiyqn.js';
7
7
  import 'ink-spinner';
8
8
  import 'axios';
@@ -26,8 +26,8 @@ import 'isomorphic-git';
26
26
  import 'qrcode';
27
27
  import 'string-length';
28
28
  import 'strip-ansi';
29
- import { C as CreateServiceAccountKey } from '../../../../index-CgBgZUkL.js';
30
- import { C as CommandGame } from '../../../../CommandGame--SAa3wEL.js';
29
+ import { C as CreateServiceAccountKey } from '../../../../index-X__XH_Fd.js';
30
+ import { C as CommandGame } from '../../../../CommandGame-CZUx_VQu.js';
31
31
  import { B as BaseGameAndroidCommand } from '../../../../baseGameAndroidCommand-B-CFhPnE.js';
32
32
  import '../../../../index-B6V7vGOj.js';
33
33
  import '../../../../useAndroidServiceAccountTestResult-D_30xIJA.js';
@@ -5,7 +5,7 @@ import * as fs from 'fs';
5
5
  import { P as Platform, C as CredentialsType } from '../../../../index-BQRxiyqn.js';
6
6
  import { a as getProjectCredentials } from '../../../../index-BuZmCvZh.js';
7
7
  import 'react';
8
- import { C as Command } from '../../../../Command-Cl-JfhTy.js';
8
+ import { C as Command } from '../../../../Command-1YAl_0zS.js';
9
9
  import 'ink-spinner';
10
10
  import 'axios';
11
11
  import 'crypto-js';
@@ -5,7 +5,7 @@ import * as fs from 'fs';
5
5
  import { P as Platform, C as CredentialsType } from '../../../../index-BQRxiyqn.js';
6
6
  import { a as getProjectCredentials } from '../../../../index-BuZmCvZh.js';
7
7
  import 'react';
8
- import { C as Command } from '../../../../Command-Cl-JfhTy.js';
8
+ import { C as Command } from '../../../../Command-1YAl_0zS.js';
9
9
  import 'ink-spinner';
10
10
  import 'axios';
11
11
  import 'crypto-js';
@@ -2,7 +2,7 @@ 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 { C as Command } from '../../../../Command-Cl-JfhTy.js';
5
+ import { C as Command } from '../../../../Command-1YAl_0zS.js';
6
6
  import { P as Platform, C as CredentialsType } from '../../../../index-BQRxiyqn.js';
7
7
  import 'ink-spinner';
8
8
  import 'axios';
@@ -2,7 +2,7 @@ import { jsx } from 'react/jsx-runtime';
2
2
  import { render } from 'ink';
3
3
  import { Flags } from '@oclif/core';
4
4
  import 'react';
5
- import '../../../../Command-Cl-JfhTy.js';
5
+ import '../../../../Command-1YAl_0zS.js';
6
6
  import { P as Platform, C as CredentialsType } from '../../../../index-BQRxiyqn.js';
7
7
  import 'ink-spinner';
8
8
  import 'axios';
@@ -11,7 +11,7 @@ import 'uuid';
11
11
  import 'luxon';
12
12
  import { a as getProjectCredentials } from '../../../../index-BuZmCvZh.js';
13
13
  import '@inkjs/ui';
14
- import { C as CreateKeystore } from '../../../../CreateKeystore-Dm0KVh85.js';
14
+ import { C as CreateKeystore } from '../../../../CreateKeystore-BqJdpvsI.js';
15
15
  import 'open';
16
16
  import 'crypto';
17
17
  import 'fs';
@@ -27,7 +27,7 @@ import 'isomorphic-git';
27
27
  import 'qrcode';
28
28
  import 'string-length';
29
29
  import 'strip-ansi';
30
- import { C as CommandGame } from '../../../../CommandGame--SAa3wEL.js';
30
+ import { C as CommandGame } from '../../../../CommandGame-CZUx_VQu.js';
31
31
  import { B as BaseGameAndroidCommand } from '../../../../baseGameAndroidCommand-B-CFhPnE.js';
32
32
  import '../../../../index-B6V7vGOj.js';
33
33
  import '../../../../useAndroidServiceAccountTestResult-D_30xIJA.js';
@@ -5,7 +5,7 @@ import * as fs from 'fs';
5
5
  import { c as BaseGameCommand, P as Platform, C as CredentialsType } from '../../../../index-BQRxiyqn.js';
6
6
  import { a as getProjectCredentials } from '../../../../index-BuZmCvZh.js';
7
7
  import 'react';
8
- import { C as Command } from '../../../../Command-Cl-JfhTy.js';
8
+ import { C as Command } from '../../../../Command-1YAl_0zS.js';
9
9
  import 'ink-spinner';
10
10
  import 'axios';
11
11
  import 'crypto-js';
@@ -5,7 +5,7 @@ import * as fs from 'fs';
5
5
  import { c as BaseGameCommand, P as Platform, C as CredentialsType } from '../../../../index-BQRxiyqn.js';
6
6
  import { a as getProjectCredentials } from '../../../../index-BuZmCvZh.js';
7
7
  import 'react';
8
- import { C as Command } from '../../../../Command-Cl-JfhTy.js';
8
+ import { C as Command } from '../../../../Command-1YAl_0zS.js';
9
9
  import 'ink-spinner';
10
10
  import 'axios';
11
11
  import 'crypto-js';
@@ -1,7 +1,7 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { render } from 'ink';
3
3
  import 'react';
4
- import { C as Command } from '../../../../Command-Cl-JfhTy.js';
4
+ import { C as Command } from '../../../../Command-1YAl_0zS.js';
5
5
  import { c as BaseGameCommand, P as Platform, C as CredentialsType } from '../../../../index-BQRxiyqn.js';
6
6
  import 'ink-spinner';
7
7
  import 'axios';
@@ -2,7 +2,7 @@ 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 { C as Command } from '../../../Command-Cl-JfhTy.js';
5
+ import { C as Command } from '../../../Command-1YAl_0zS.js';
6
6
  import { c as BaseGameCommand, k as getProjectPlatformProgress, P as Platform, b as getShortDate } from '../../../index-BQRxiyqn.js';
7
7
  import 'ink-spinner';
8
8
  import '@inkjs/ui';
@@ -2,7 +2,7 @@ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
2
  import { Text, Box, render } from 'ink';
3
3
  import { p as getAuthedHeaders, q as API_URL, J as castArrayObjectDates, a7 as queryClient, x as DEFAULT_SHIPPED_FILES_GLOBS, w as DEFAULT_IGNORED_FILES_GLOBS, z as getNewUploadTicket, E as startJobsFromUpload, u as getGodotVersion, t as GameEngine, v as createProject, K as JobStatus, P as Platform, Z as WEB_URL, H as getProject, C as CredentialsType, S as getGoogleStatus, B as BaseAuthenticatedCommand, D as DetailsFlags } from '../../../index-BQRxiyqn.js';
4
4
  import React, { useState, useContext, useEffect, useRef } from 'react';
5
- import { d as CommandContext, a as GameContext, b as useBuilds, M as Markdown, q as queryBuilds, G as GameProvider, e as CreateGooglePlayGame, C as Command } from '../../../Command-Cl-JfhTy.js';
5
+ import { d as CommandContext, a as GameContext, b as useBuilds, M as Markdown, q as queryBuilds, G as GameProvider, e as CreateGooglePlayGame, C as Command } from '../../../Command-1YAl_0zS.js';
6
6
  import Spinner from 'ink-spinner';
7
7
  import { Alert, TextInput } from '@inkjs/ui';
8
8
  import axios from 'axios';
@@ -25,13 +25,13 @@ import '@oclif/core';
25
25
  import 'qrcode';
26
26
  import 'string-length';
27
27
  import 'strip-ansi';
28
- import { C as CreateKeystore } from '../../../CreateKeystore-Dm0KVh85.js';
29
- import { C as ConnectGoogle } from '../../../index-B5XHQfs2.js';
30
- import { P as ProgressSpinner, C as CreateServiceAccountKey } from '../../../index-CgBgZUkL.js';
28
+ import { C as CreateKeystore } from '../../../CreateKeystore-BqJdpvsI.js';
29
+ import { C as ConnectGoogle } from '../../../index-DE2Hvx2o.js';
30
+ import { P as ProgressSpinner, C as CreateServiceAccountKey } from '../../../index-X__XH_Fd.js';
31
31
  import { c as cacheKeys, f as fetchKeyTestResult, K as KeyTestStatus, a as KeyTestError } from '../../../useAndroidServiceAccountTestResult-D_30xIJA.js';
32
32
  import { c as getFileHash } from '../../../index-B6V7vGOj.js';
33
33
  import { g as getCWDGitInfo } from '../../../git-DREGq-jc.js';
34
- import { u as useJobWatching } from '../../../useJobWatching-Bz1e6xOv.js';
34
+ import { u as useJobWatching } from '../../../useJobWatching-BcBJ5dy1.js';
35
35
  import { a as getProjectCredentials } from '../../../index-BuZmCvZh.js';
36
36
  import { T as Title } from '../../../Title-BCQtayg6.js';
37
37
  import 'path';
@@ -4,7 +4,7 @@ import { render } from 'ink';
4
4
  import * as fs from 'fs';
5
5
  import { c as BaseGameCommand, I as getBuild } from '../../../index-BQRxiyqn.js';
6
6
  import 'react';
7
- import { C as Command } from '../../../Command-Cl-JfhTy.js';
7
+ import { C as Command } from '../../../Command-1YAl_0zS.js';
8
8
  import 'ink-spinner';
9
9
  import '@inkjs/ui';
10
10
  import axios from 'axios';
@@ -3,7 +3,7 @@ import { Box, Text, render } from 'ink';
3
3
  import { Flags } from '@oclif/core';
4
4
  import { c as BaseGameCommand } from '../../../index-BQRxiyqn.js';
5
5
  import 'react';
6
- import { b as useBuilds, c as getBuildSummary } from '../../../Command-Cl-JfhTy.js';
6
+ import { b as useBuilds, c as getBuildSummary } from '../../../Command-1YAl_0zS.js';
7
7
  import Spinner from 'ink-spinner';
8
8
  import 'axios';
9
9
  import 'crypto-js';
@@ -25,7 +25,7 @@ import 'isomorphic-git';
25
25
  import 'qrcode';
26
26
  import 'string-length';
27
27
  import 'strip-ansi';
28
- import { C as CommandGame } from '../../../CommandGame--SAa3wEL.js';
28
+ import { C as CommandGame } from '../../../CommandGame-CZUx_VQu.js';
29
29
  import { T as Table } from '../../../Table-CvM6pccN.js';
30
30
  import { T as Title } from '../../../Title-BCQtayg6.js';
31
31
  import 'path';
@@ -2,7 +2,7 @@ import { jsx } from 'react/jsx-runtime';
2
2
  import { render } from 'ink';
3
3
  import { Flags } from '@oclif/core';
4
4
  import 'react';
5
- import { C as Command } from '../../Command-Cl-JfhTy.js';
5
+ import { C as Command } from '../../Command-1YAl_0zS.js';
6
6
  import { c as BaseGameCommand, D as DetailsFlags, t as GameEngine } from '../../index-BQRxiyqn.js';
7
7
  import 'ink-spinner';
8
8
  import 'axios';