shipthis 0.1.10 → 0.1.12
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.
- package/assets/markdown/create-or-import-keystore.md +7 -0
- package/dist/{AppleBundleIdDetails-DKeSAte9.js → AppleBundleIdDetails-DymjrhOZ.js} +1 -1
- package/dist/{CommandGame--SAa3wEL.js → CommandGame-C1oTlfdb.js} +1 -1
- package/dist/{CreateKeystore-g1z6DsU5.js → Create-DIaSKUpl.js} +5 -5
- package/dist/Import-BIOsf8AA.js +107 -0
- package/dist/{JobProgress-jmGAzvxS.js → JobProgress-W0QQR49T.js} +2 -2
- package/dist/{JobStatusTable-ByW0bN6c.js → JobStatusTable-DqoppRro.js} +2 -2
- package/dist/commands/apple/apiKey/create.js +4 -4
- package/dist/commands/apple/apiKey/export.js +3 -3
- package/dist/commands/apple/apiKey/import.js +4 -4
- package/dist/commands/apple/apiKey/status.js +3 -3
- package/dist/commands/apple/certificate/create.js +4 -4
- package/dist/commands/apple/certificate/export.js +3 -3
- package/dist/commands/apple/certificate/import.js +4 -4
- package/dist/commands/apple/certificate/status.js +3 -3
- package/dist/commands/apple/status.js +3 -3
- package/dist/commands/game/android/apiKey/connect.js +6 -6
- package/dist/commands/game/android/apiKey/create.js +6 -6
- package/dist/commands/game/android/apiKey/export.js +3 -3
- package/dist/commands/game/android/apiKey/import.js +4 -4
- package/dist/commands/game/android/apiKey/status.js +3 -3
- package/dist/commands/game/android/keyStore/create.js +7 -7
- package/dist/commands/game/android/keyStore/export.js +3 -3
- package/dist/commands/game/android/keyStore/import.js +45 -25
- package/dist/commands/game/android/keyStore/status.js +3 -3
- package/dist/commands/game/android/status.js +5 -5
- package/dist/commands/game/build/download.js +4 -4
- package/dist/commands/game/build/list.js +4 -4
- package/dist/commands/game/details.js +3 -3
- package/dist/commands/game/ios/app/addTester.js +3 -3
- package/dist/commands/game/ios/app/create.js +3 -3
- package/dist/commands/game/ios/app/status.js +4 -4
- package/dist/commands/game/ios/app/sync.js +3 -3
- package/dist/commands/game/ios/profile/create.js +4 -4
- package/dist/commands/game/ios/profile/export.js +3 -3
- package/dist/commands/game/ios/profile/import.js +4 -4
- package/dist/commands/game/ios/profile/status.js +3 -3
- package/dist/commands/game/ios/status.js +6 -6
- package/dist/commands/game/job/list.js +5 -5
- package/dist/commands/game/job/status.js +7 -7
- package/dist/commands/game/list.js +5 -5
- package/dist/commands/game/ship.js +7 -7
- package/dist/commands/game/status.js +5 -5
- package/dist/commands/game/wizard.js +116 -17
- package/dist/commands/status.js +3 -3
- package/dist/{import-7T3J63j2.js → import-v54PM_Qg.js} +11 -2
- package/dist/{index-m4HTrJ5J.js → index-D6BH5UAM.js} +3 -3
- package/dist/{index-DgbQBx6x.js → index-o9Y-84Rj.js} +1 -1
- package/dist/{useJobWatching-D-YzSlK8.js → useJobWatching-I_A3b36f.js} +1 -1
- package/npm-shrinkwrap.json +2 -2
- package/oclif.manifest.json +27 -86
- package/package.json +1 -1
- package/dist/AppleBundleIdDetails-C0XqjxKJ.js +0 -72
- package/dist/AppleBundleIdDetails-CjP5y0cj.js +0 -74
- package/dist/AppleBundleIdDetails-CztWY_mT.js +0 -73
- package/dist/AppleBundleIdDetails-Df30MPFC.js +0 -73
- package/dist/AppleBundleIdDetails-Dxo99Sgu.js +0 -72
- package/dist/Command-1YAl_0zS.js +0 -204
- package/dist/Command-Cl-JfhTy.js +0 -203
- package/dist/Command-Dn0P_KOV.js +0 -205
- package/dist/Command-DxmQn3XT.js +0 -204
- package/dist/Command-YJJp90ru.js +0 -204
- package/dist/CommandGame-CZUx_VQu.js +0 -8
- package/dist/CommandGame-DspVLTPZ.js +0 -8
- package/dist/CommandGame-cPaTk1wh.js +0 -8
- package/dist/CommandGame-k04mHiDl.js +0 -8
- package/dist/CommandGame-pI9VXKxi.js +0 -8
- package/dist/CreateKeystore-BnNdeDUa.js +0 -57
- package/dist/CreateKeystore-BqJdpvsI.js +0 -56
- package/dist/CreateKeystore-Cf-nsK_M.js +0 -56
- package/dist/CreateKeystore-D8uTRamD.js +0 -56
- package/dist/CreateKeystore-Dm0KVh85.js +0 -56
- package/dist/JobProgress-CPkWVSlH.js +0 -108
- package/dist/JobProgress-Dk0UoNah.js +0 -108
- package/dist/JobProgress-biiLhigg.js +0 -109
- package/dist/JobStatusTable-BA_q-kgE.js +0 -75
- package/dist/JobStatusTable-CgaTS7jS.js +0 -75
- package/dist/JobStatusTable-q4atKzhu.js +0 -75
- package/dist/ProjectCredentialsTable-BIWBAXCh.js +0 -37
- package/dist/ProjectCredentialsTable-Ch8022rs.js +0 -37
- package/dist/ProjectCredentialsTable-DRMK_SNw.js +0 -37
- package/dist/ProjectCredentialsTable-DfkpvTf8.js +0 -37
- package/dist/UserCredentialsTable-CeJS3_hd.js +0 -82
- package/dist/UserCredentialsTable-DMh8Wpy7.js +0 -82
- package/dist/UserCredentialsTable-DgHZJSHG.js +0 -82
- package/dist/UserCredentialsTable-ysmM5dlV.js +0 -82
- package/dist/baseAppleCommand-1isaFxCQ.js +0 -10
- package/dist/baseAppleCommand-B3WQtlx-.js +0 -10
- package/dist/baseAppleCommand-D-G4h8zQ.js +0 -10
- package/dist/baseAppleCommand-DpasCbje.js +0 -10
- package/dist/baseGameAndroidCommand-B-CFhPnE.js +0 -43
- package/dist/baseGameAndroidCommand-B3LRG701.js +0 -43
- package/dist/baseGameAndroidCommand-C9BuS2Sr.js +0 -43
- package/dist/baseGameAndroidCommand-DD0H8iy-.js +0 -43
- package/dist/commands/game/android/wizard.js +0 -509
- package/dist/export-BDxGDZdh.js +0 -36
- package/dist/export-B_F6vXIK.js +0 -36
- package/dist/export-BiLHgSJ9.js +0 -36
- package/dist/export-C_lu1FD9.js +0 -36
- package/dist/import-Brg3zYmT.js +0 -38
- package/dist/import-BrlJuE2Z.js +0 -38
- package/dist/import-CxNikF1c.js +0 -38
- package/dist/import-DPbg8WvS.js +0 -38
- package/dist/index-B5XHQfs2.js +0 -122
- package/dist/index-B6V7vGOj.js +0 -136
- package/dist/index-BDFKyTPb.js +0 -24
- package/dist/index-BL-1G60K.js +0 -135
- package/dist/index-BQRxiyqn.js +0 -693
- package/dist/index-BQnkBr1Q.js +0 -136
- package/dist/index-BX9h2vPV.js +0 -123
- package/dist/index-BjGSEqP5.js +0 -135
- package/dist/index-BuZmCvZh.js +0 -24
- package/dist/index-Bv3x8c78.js +0 -693
- package/dist/index-ByOvCs4O.js +0 -122
- package/dist/index-BzffuqPa.js +0 -24
- package/dist/index-C9734Cj2.js +0 -693
- package/dist/index-CKYExssR.js +0 -136
- package/dist/index-CgBgZUkL.js +0 -144
- package/dist/index-DBrQda8r.js +0 -122
- package/dist/index-DE2Hvx2o.js +0 -122
- package/dist/index-DdABTtYO.js +0 -693
- package/dist/index-DxHPjZav.js +0 -136
- package/dist/index-X__XH_Fd.js +0 -144
- package/dist/index-wyPoxiTc.js +0 -136
- package/dist/upload-CMo3hUhl.js +0 -60
- package/dist/upload-Cx71802W.js +0 -60
- package/dist/upload-DvAE1vDq.js +0 -60
- package/dist/upload-LXRr4pMa.js +0 -60
- package/dist/useAndroidServiceAccountTestResult-BDc7XpKE.js +0 -52
- package/dist/useAndroidServiceAccountTestResult-B_ekRewZ.js +0 -52
- package/dist/useAndroidServiceAccountTestResult-D_30xIJA.js +0 -52
- package/dist/useAndroidServiceAccountTestResult-InDf5WSl.js +0 -52
- package/dist/useAppleApp-CApC0-4Q.js +0 -32
- package/dist/useAppleApp-CETIcsJS.js +0 -32
- package/dist/useAppleApp-DgE0wEaq.js +0 -32
- package/dist/useAppleApp-DnSjUfSs.js +0 -32
- package/dist/useAppleBundleId-BNI8swhC.js +0 -64
- package/dist/useAppleBundleId-DtLODy3p.js +0 -64
- package/dist/useAppleBundleId-SmzY6rkm.js +0 -64
- package/dist/useAppleBundleId-gPBzJwQg.js +0 -64
- package/dist/useJobWatching-BIG6fnTN.js +0 -45
- package/dist/useJobWatching-BcBJ5dy1.js +0 -43
- package/dist/useJobWatching-Bz1e6xOv.js +0 -43
- package/dist/useJobWatching-Cp-CYd90.js +0 -45
- package/dist/useJobWatching-P5oC7mNB.js +0 -45
- package/dist/useProjectCredentials-B5ZmpIxL.js +0 -54
- package/dist/useProjectCredentials-BRffcsO3.js +0 -54
- package/dist/useProjectCredentials-CKngz2rd.js +0 -54
- package/dist/useProjectCredentials-EapDge1I.js +0 -54
- package/dist/useWebSocket-Bep1zAVG.js +0 -36
- package/dist/useWebSocket-D8PojLtx.js +0 -36
- package/dist/useWebSocket-DoImIdTy.js +0 -36
- package/dist/useWebSocket-rBLiZsKb.js +0 -36
- package/dist/wizard-ChPegnMW.js +0 -133
- package/dist/{Command-D6rWEZRM.js → Command-BiB9MqbJ.js} +3 -3
package/dist/Command-YJJp90ru.js
DELETED
|
@@ -1,204 +0,0 @@
|
|
|
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, h as getPlatformName, s as scriptDir } from './index-BQnkBr1Q.js';
|
|
7
|
-
import { c as cacheKeys, u as useAndroidServiceAccountTestResult, K as KeyTestStatus, a as KeyTestError } from './useAndroidServiceAccountTestResult-BDc7XpKE.js';
|
|
8
|
-
import { p as getAuthedHeaders, q as API_URL, K as castArrayObjectDates, P as Platform, a6 as getShortDateTime, a5 as getJob, J as JobStatus, a7 as getShortTimeDelta, H as getProject, a2 as getShortAuthRequiredUrl, $ as queryClient, X as WEB_URL } from './index-Bv3x8c78.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, getBuildSummary as a, GameContext as b, CommandContext as c, useBuilds as d, CreateGooglePlayGame as e, getJobSummary as g, queryBuilds as q, useJob as u };
|
|
@@ -1,8 +0,0 @@
|
|
|
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 };
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { C as Command, G as GameProvider } from './Command-DxmQn3XT.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 };
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { C as Command, G as GameProvider } from './Command-D6rWEZRM.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 };
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { C as Command, G as GameProvider } from './Command-Dn0P_KOV.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 };
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { C as Command, G as GameProvider } from './Command-YJJp90ru.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 };
|
|
@@ -1,57 +0,0 @@
|
|
|
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 { o as getAuthedHeaders, p as API_URL } from './index-C9734Cj2.js';
|
|
7
|
-
import { c as cacheKeys } from './useAndroidServiceAccountTestResult-B_ekRewZ.js';
|
|
8
|
-
import { b as GameContext } from './Command-Dn0P_KOV.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
|
-
import './wizard-ChPegnMW.js';
|
|
30
|
-
|
|
31
|
-
const CreateKeystore = ({ onComplete, onError, ...boxProps }) => {
|
|
32
|
-
const { gameId } = useContext(GameContext);
|
|
33
|
-
const queryClient = useQueryClient();
|
|
34
|
-
const handleCreate = async () => {
|
|
35
|
-
try {
|
|
36
|
-
if (!gameId) throw new Error("No game");
|
|
37
|
-
const headers = await getAuthedHeaders();
|
|
38
|
-
await axios.post(`${API_URL}/projects/${gameId}/credentials/android/certificate`, null, {
|
|
39
|
-
headers
|
|
40
|
-
});
|
|
41
|
-
queryClient.invalidateQueries({ queryKey: cacheKeys.projectCredentials({ projectId: gameId, pageNumber: 0 }) });
|
|
42
|
-
} catch (err) {
|
|
43
|
-
onError(err);
|
|
44
|
-
}
|
|
45
|
-
};
|
|
46
|
-
return /* @__PURE__ */ jsx(Box, { flexDirection: "column", gap: 1, ...boxProps, children: /* @__PURE__ */ jsx(
|
|
47
|
-
RunWithSpinner,
|
|
48
|
-
{
|
|
49
|
-
executeMethod: handleCreate,
|
|
50
|
-
msgInProgress: "Creating Keystore...",
|
|
51
|
-
msgComplete: "Keystore created",
|
|
52
|
-
onComplete
|
|
53
|
-
}
|
|
54
|
-
) });
|
|
55
|
-
};
|
|
56
|
-
|
|
57
|
-
export { CreateKeystore as C };
|
|
@@ -1,56 +0,0 @@
|
|
|
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 };
|
|
@@ -1,56 +0,0 @@
|
|
|
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-Bv3x8c78.js';
|
|
7
|
-
import { c as cacheKeys } from './useAndroidServiceAccountTestResult-BDc7XpKE.js';
|
|
8
|
-
import { b as GameContext } from './Command-YJJp90ru.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 };
|
|
@@ -1,56 +0,0 @@
|
|
|
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-DdABTtYO.js';
|
|
7
|
-
import { c as cacheKeys } from './useAndroidServiceAccountTestResult-InDf5WSl.js';
|
|
8
|
-
import { b as GameContext } from './Command-DxmQn3XT.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 };
|
|
@@ -1,56 +0,0 @@
|
|
|
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-Cl-JfhTy.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 };
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
import { v4 } from 'uuid';
|
|
2
|
-
import axios from 'axios';
|
|
3
|
-
import fg from 'fast-glob';
|
|
4
|
-
import fs__default from 'fs';
|
|
5
|
-
import yazl from 'yazl';
|
|
6
|
-
import { useMutation } from '@tanstack/react-query';
|
|
7
|
-
import { c as cacheKeys } from './useAndroidServiceAccountTestResult-BDc7XpKE.js';
|
|
8
|
-
import { $ as queryClient, x as DEFAULT_SHIPPED_FILES_GLOBS, w as DEFAULT_IGNORED_FILES_GLOBS, a0 as getNewUploadTicket, a1 as startJobsFromUpload, J as JobStatus } from './index-Bv3x8c78.js';
|
|
9
|
-
import { f as getFileHash, h as getPlatformName } from './index-BQnkBr1Q.js';
|
|
10
|
-
import { g as getCWDGitInfo } from './git-DREGq-jc.js';
|
|
11
|
-
import { jsx, Fragment } from 'react/jsx-runtime';
|
|
12
|
-
import { useRef } from 'react';
|
|
13
|
-
import 'ink';
|
|
14
|
-
import './Command-YJJp90ru.js';
|
|
15
|
-
import 'ink-spinner';
|
|
16
|
-
import 'crypto-js';
|
|
17
|
-
import 'luxon';
|
|
18
|
-
import '@inkjs/ui';
|
|
19
|
-
import 'open';
|
|
20
|
-
import { P as ProgressSpinner } from './ProgressSpinner-6pw1T8Iw.js';
|
|
21
|
-
import 'qrcode';
|
|
22
|
-
import 'string-length';
|
|
23
|
-
import 'strip-ansi';
|
|
24
|
-
import 'socket.io-client';
|
|
25
|
-
import { u as useJobWatching } from './useJobWatching-Cp-CYd90.js';
|
|
26
|
-
|
|
27
|
-
async function ship({ command, log = () => {
|
|
28
|
-
} }) {
|
|
29
|
-
log("Fetching project config...");
|
|
30
|
-
const projectConfig = await command.getProjectConfig();
|
|
31
|
-
if (!projectConfig.project) throw new Error("No project found in project config");
|
|
32
|
-
log("Retrieving file globs...");
|
|
33
|
-
const shippedFilesGlobs = projectConfig.shippedFilesGlobs || DEFAULT_SHIPPED_FILES_GLOBS;
|
|
34
|
-
const ignoredFilesGlobs = projectConfig.ignoredFilesGlobs || DEFAULT_IGNORED_FILES_GLOBS;
|
|
35
|
-
log("Finding files to include in zip...");
|
|
36
|
-
const files = await fg(shippedFilesGlobs, { dot: true, ignore: ignoredFilesGlobs });
|
|
37
|
-
log(`Found ${files.length} files, adding to zip...`);
|
|
38
|
-
const zipFile = new yazl.ZipFile();
|
|
39
|
-
for (const file of files) {
|
|
40
|
-
zipFile.addFile(file, file);
|
|
41
|
-
}
|
|
42
|
-
const outputZipToFile = (zip, fileName) => new Promise((resolve) => {
|
|
43
|
-
const outputStream = fs__default.createWriteStream(fileName);
|
|
44
|
-
zip.outputStream.pipe(outputStream).on("close", () => resolve());
|
|
45
|
-
zip.end();
|
|
46
|
-
});
|
|
47
|
-
const tmpZipFile = `${process.cwd()}/shipthis-${v4()}.zip`;
|
|
48
|
-
log(`Creating zip file: ${tmpZipFile}`);
|
|
49
|
-
await outputZipToFile(zipFile, tmpZipFile);
|
|
50
|
-
log("Reading zip file buffer...");
|
|
51
|
-
const zipBuffer = fs__default.readFileSync(tmpZipFile);
|
|
52
|
-
const { size } = fs__default.statSync(tmpZipFile);
|
|
53
|
-
log("Requesting upload ticket...");
|
|
54
|
-
const uploadTicket = await getNewUploadTicket(projectConfig.project.id);
|
|
55
|
-
log("Uploading zip file...");
|
|
56
|
-
await axios.put(uploadTicket.url, zipBuffer, {
|
|
57
|
-
headers: {
|
|
58
|
-
"Content-length": size,
|
|
59
|
-
"Content-Type": "application/zip"
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
log("Fetching Git info...");
|
|
63
|
-
const gitInfo = await getCWDGitInfo();
|
|
64
|
-
log("Computing file hash...");
|
|
65
|
-
const zipFileMd5 = await getFileHash(tmpZipFile);
|
|
66
|
-
const uploadDetails = {
|
|
67
|
-
...gitInfo,
|
|
68
|
-
zipFileMd5
|
|
69
|
-
};
|
|
70
|
-
log("Starting jobs from upload...");
|
|
71
|
-
const jobs = await startJobsFromUpload(uploadTicket.id, uploadDetails);
|
|
72
|
-
log("Cleaning up temporary zip file...");
|
|
73
|
-
fs__default.unlinkSync(tmpZipFile);
|
|
74
|
-
log("Job submission complete.");
|
|
75
|
-
return jobs;
|
|
76
|
-
}
|
|
77
|
-
const useShip = () => {
|
|
78
|
-
return useMutation({
|
|
79
|
-
mutationFn: ship,
|
|
80
|
-
onSuccess: async (data) => {
|
|
81
|
-
queryClient.invalidateQueries({
|
|
82
|
-
queryKey: cacheKeys.jobs({ projectId: data[0].project.id, pageNumber: 0 })
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
});
|
|
86
|
-
};
|
|
87
|
-
|
|
88
|
-
const JobProgress = (props) => {
|
|
89
|
-
const prevJobStatus = useRef(props.job.status);
|
|
90
|
-
const handleJobUpdate = (job) => {
|
|
91
|
-
const completed = [JobStatus.COMPLETED, JobStatus.FAILED];
|
|
92
|
-
const wasRunning = !completed.includes(prevJobStatus.current);
|
|
93
|
-
if (completed.includes(job.status) && wasRunning) {
|
|
94
|
-
props.onComplete();
|
|
95
|
-
}
|
|
96
|
-
prevJobStatus.current = job.status;
|
|
97
|
-
};
|
|
98
|
-
const { progress } = useJobWatching({
|
|
99
|
-
projectId: props.job.project.id,
|
|
100
|
-
jobId: props.job.id,
|
|
101
|
-
isWatching: true,
|
|
102
|
-
onJobUpdate: handleJobUpdate
|
|
103
|
-
});
|
|
104
|
-
const label = `${getPlatformName(props.job.type)} build progress...`;
|
|
105
|
-
return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(ProgressSpinner, { progress, label, spinnerType: "dots" }) });
|
|
106
|
-
};
|
|
107
|
-
|
|
108
|
-
export { JobProgress as J, useShip as u };
|