shipthis 0.1.41 → 0.1.43
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/README.md +9 -7
- package/assets/markdown/confirm-change-android-build-method.md.ejs +13 -0
- package/dist/{AppleBundleIdDetails-BJC7GCx_.js → AppleBundleIdDetails-bMqPqmP0.js} +9 -7
- package/dist/{Command-Cj6F5B5a.js → Command-cqn3WLlP.js} +4 -3
- package/dist/{CommandGame-CuvuH-z6.js → CommandGame-DMQT0sL_.js} +2 -2
- package/dist/{Create-pfGYcKu4.js → Create-Cs9HG9xO.js} +5 -3
- package/dist/{GameStatus-ZSe-qG3y.js → GameStatus-lv2SW-6H.js} +4 -3
- package/dist/{Import-D046HBaF.js → Import-DOQrR8wW.js} +6 -4
- package/dist/{JobLogTail-Da8GuReK.js → JobLogTail-CWYxQTq4.js} +31 -17
- package/dist/JobProgress-B07Y2FLb.js +253 -0
- package/dist/{JobStatusTable-DVJjHw97.js → JobStatusTable-B0A1z1zq.js} +3 -4
- package/dist/{ProjectCredentialsTable-BJJz7W1P.js → ProjectCredentialsTable-CyJ7o8yD.js} +4 -3
- package/dist/{UserCredentialsTable-CSynIVHU.js → UserCredentialsTable-C8_skPFY.js} +4 -3
- package/dist/{baseAppleCommand-Aq-Eaw_K.js → baseAppleCommand-Cfoy8Tx_.js} +1 -1
- package/dist/{baseCommand-CTn3KGH3.js → baseCommand-B23l0hCp.js} +82 -111
- package/dist/{baseGameAndroidCommand-DRzVMKuG.js → baseGameAndroidCommand-Dh4xXVW1.js} +4 -3
- package/dist/{baseGameCommand-8VL7xe-O.js → baseGameCommand-P7Vyz2vZ.js} +5 -3
- package/dist/commands/apiKey/create.js +6 -6
- package/dist/commands/apiKey/list.js +6 -6
- package/dist/commands/apiKey/revoke.js +6 -6
- package/dist/commands/apple/apiKey/create.js +9 -9
- package/dist/commands/apple/apiKey/delete.js +7 -7
- package/dist/commands/apple/apiKey/export.js +8 -8
- package/dist/commands/apple/apiKey/import.js +8 -8
- package/dist/commands/apple/apiKey/status.js +7 -7
- package/dist/commands/apple/certificate/create.js +9 -9
- package/dist/commands/apple/certificate/delete.js +7 -7
- package/dist/commands/apple/certificate/export.js +8 -8
- package/dist/commands/apple/certificate/import.js +8 -8
- package/dist/commands/apple/certificate/status.js +7 -7
- package/dist/commands/apple/login.js +5 -5
- package/dist/commands/apple/status.js +6 -6
- package/dist/commands/dashboard.js +5 -5
- package/dist/commands/game/android/apiKey/connect.js +11 -11
- package/dist/commands/game/android/apiKey/create.js +13 -13
- package/dist/commands/game/android/apiKey/delete.js +7 -7
- package/dist/commands/game/android/apiKey/export.js +9 -9
- package/dist/commands/game/android/apiKey/import.js +9 -9
- package/dist/commands/game/android/apiKey/invite.js +6 -6
- package/dist/commands/game/android/apiKey/policy.js +6 -6
- package/dist/commands/game/android/apiKey/status.js +9 -9
- package/dist/commands/game/android/keyStore/create.js +10 -10
- package/dist/commands/game/android/keyStore/delete.js +7 -7
- package/dist/commands/game/android/keyStore/export.js +8 -8
- package/dist/commands/game/android/keyStore/import.js +11 -11
- package/dist/commands/game/android/keyStore/status.js +8 -8
- package/dist/commands/game/android/status.js +5 -5
- package/dist/commands/game/build/download.js +6 -6
- package/dist/commands/game/build/list.js +7 -7
- package/dist/commands/game/create.js +5 -5
- package/dist/commands/game/details.js +6 -6
- package/dist/commands/game/export.js +5 -5
- package/dist/commands/game/ios/app/addTester.js +7 -7
- package/dist/commands/game/ios/app/create.js +8 -7
- package/dist/commands/game/ios/app/status.js +9 -9
- package/dist/commands/game/ios/app/sync.js +7 -7
- package/dist/commands/game/ios/profile/create.js +9 -9
- package/dist/commands/game/ios/profile/delete.js +7 -7
- package/dist/commands/game/ios/profile/export.js +8 -8
- package/dist/commands/game/ios/profile/import.js +8 -8
- package/dist/commands/game/ios/profile/status.js +9 -9
- package/dist/commands/game/ios/status.js +11 -11
- package/dist/commands/game/ios/wizard.js +6 -6
- package/dist/commands/game/job/list.js +6 -6
- package/dist/commands/game/job/status.js +11 -11
- package/dist/commands/game/list.js +6 -6
- package/dist/commands/game/ship.js +32 -15
- package/dist/commands/game/status.js +8 -8
- package/dist/commands/game/wizard.js +80 -30
- package/dist/commands/internal/fastlane.js +5 -5
- package/dist/commands/internal/readme.js +5 -5
- package/dist/commands/login.js +5 -5
- package/dist/commands/status.js +6 -6
- package/dist/commands/util/android-build-method.js +67 -0
- package/dist/commands/util/glass.js +4 -4
- package/dist/{export-DtATljiz.js → export-BOuZFMT3.js} +1 -1
- package/dist/{import-Dk2ywOVU.js → import-P4KcAuAO.js} +1 -1
- package/dist/{index-cRnjcGxV.js → index-AUjBYrSG.js} +8 -6
- package/dist/{index-CuyVBHWc.js → index-BmRSqi8U.js} +7 -5
- package/dist/{index-BW7z-5sB.js → index-DMosmqi2.js} +1 -1
- package/dist/{upload-CHaDSvvi.js → upload-BvNeNQXc.js} +1 -1
- package/dist/{useAppleApp-CR847GWc.js → useAppleApp-fD92orhh.js} +1 -1
- package/dist/{useAppleBundleId-BnwPmVEu.js → useAppleBundleId-oONHtYgg.js} +2 -2
- package/dist/{useAppleProfiles-DY-H0420.js → useAppleProfiles-aMy844nZ.js} +3 -2
- package/dist/{useGoogleStatus-WqPgHteE.js → useGoogleStatus-rBDZt9tw.js} +2 -2
- package/dist/{useProjectCredentials-TvlolkId.js → useProjectCredentials-DLYLMlJh.js} +2 -2
- package/dist/{useWebSocket-MXDbQHcu.js → useWebSocket-Bvq2Wf7I.js} +1 -1
- package/docs/util/android-build-method.md +26 -0
- package/docs/util.md +2 -1
- package/npm-shrinkwrap.json +14182 -0
- package/oclif.manifest.json +2966 -0
- package/package.json +9 -6
- package/dist/JobProgress-DltCQpzA.js +0 -127
package/README.md
CHANGED
|
@@ -104,13 +104,14 @@ ShipThis handles iOS builds on managed macOS cloud servers. The CLI connects to
|
|
|
104
104
|
|
|
105
105
|
We support **all stable Godot versions since 3.6**, including:
|
|
106
106
|
|
|
107
|
-
| [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)
|
|
108
|
-
| ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ |
|
|
109
|
-
| [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)
|
|
110
|
-
| [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) |
|
|
111
|
-
| | [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) | | |
|
|
112
|
-
| | [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) | | | |
|
|
113
|
-
| | [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) | | | |
|
|
107
|
+
| [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) |
|
|
108
|
+
| ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ |
|
|
109
|
+
| [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) | |
|
|
110
|
+
| [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) | | |
|
|
111
|
+
| | [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) | | | | |
|
|
112
|
+
| | [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) | | | | | |
|
|
113
|
+
| | [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) | | | | | |
|
|
114
|
+
|
|
114
115
|
|
|
115
116
|
**\* Custom builds** - [maintained by us](https://github.com/shipth-is/godot-android-sdk-upgrade/) to support **[Android SDK 35](https://support.google.com/googleplay/android-developer/answer/11926878?hl=en)** and **[16 KB Google Play compatibility requirement](https://developer.android.com/guide/practices/page-sizes)**.
|
|
116
117
|
|
|
@@ -415,6 +416,7 @@ The build machines do not keep user files after a job completes.
|
|
|
415
416
|
- [apiKey](https://shipth.is/docs/reference/apiKey?ref=github_readme) - Commands related to ShipThis API Keys
|
|
416
417
|
- [apple](https://shipth.is/docs/reference/apple?ref=github_readme) - Commands that relate to linking your ShipThis account with your Apple Developer account
|
|
417
418
|
- [game](https://shipth.is/docs/reference/game?ref=github_readme) - Commands that relate to configuring the specific game in the current working directory.
|
|
419
|
+
- [util](https://shipth.is/docs/reference/util?ref=github_readme) - Utility commands that do not require authentication
|
|
418
420
|
|
|
419
421
|
### 🔧 Commands
|
|
420
422
|
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Confirm change to export_presets.cfg
|
|
2
|
+
|
|
3
|
+
**In order to publish your game on Google Play, an edit must be made to your `export_presets.cfg` file to enable the Gradle build method.**
|
|
4
|
+
|
|
5
|
+
This change is necessary because Google Play requires Android App Bundles (AAB files) for new apps, and the Gradle build method is needed to create AAB files.
|
|
6
|
+
|
|
7
|
+
You can read more about this in the **ShipThis Documentation** [<%= docsURL %>](<%= docsURL %>)
|
|
8
|
+
|
|
9
|
+
You are using Godot version **<%= godotVersion %>**, ShipThis will update the **<%= optionKey %>** option in your `export_presets.cfg` file to enable the Gradle build method.
|
|
10
|
+
|
|
11
|
+
## Do you want to proceed with this change?
|
|
12
|
+
|
|
13
|
+
Please press **Y** to confirm and proceed with the change or **N** to cancel the operation and exit the Android wizard.
|
|
@@ -11,27 +11,29 @@ import 'readline-sync';
|
|
|
11
11
|
import 'luxon';
|
|
12
12
|
import 'axios';
|
|
13
13
|
import 'isomorphic-git';
|
|
14
|
-
import './baseCommand-
|
|
14
|
+
import './baseCommand-B23l0hCp.js';
|
|
15
15
|
import '@oclif/core';
|
|
16
16
|
import '@tanstack/react-query';
|
|
17
17
|
import 'react';
|
|
18
18
|
import 'crypto-js';
|
|
19
19
|
import 'uuid';
|
|
20
|
-
import { u as useAppleApp } from './useAppleApp-
|
|
20
|
+
import { u as useAppleApp } from './useAppleApp-fD92orhh.js';
|
|
21
21
|
import 'fast-glob';
|
|
22
|
-
import 'yazl';
|
|
23
22
|
import 'socket.io-client';
|
|
24
23
|
import 'fullscreen-ink';
|
|
25
|
-
import
|
|
26
|
-
import
|
|
24
|
+
import 'stream';
|
|
25
|
+
import 'yazl';
|
|
27
26
|
import 'string-length';
|
|
28
27
|
import 'strip-ansi';
|
|
28
|
+
import { T as Table } from './Table-FaNgpyeq.js';
|
|
29
|
+
import { T as Title } from './Title-BCQtayg6.js';
|
|
29
30
|
import 'open';
|
|
30
|
-
import './baseGameCommand-
|
|
31
|
+
import './baseGameCommand-P7Vyz2vZ.js';
|
|
32
|
+
import 'godot-export-presets';
|
|
31
33
|
import 'marked';
|
|
32
34
|
import 'marked-terminal';
|
|
33
35
|
import 'qrcode';
|
|
34
|
-
import { u as useAppleBundleId } from './useAppleBundleId-
|
|
36
|
+
import { u as useAppleBundleId } from './useAppleBundleId-oONHtYgg.js';
|
|
35
37
|
|
|
36
38
|
const AppleAppDetails = (props) => {
|
|
37
39
|
const { data, isLoading } = useAppleApp(props);
|
|
@@ -2,7 +2,7 @@ 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 {
|
|
5
|
+
import { I as queryClient } from './baseCommand-B23l0hCp.js';
|
|
6
6
|
import 'axios';
|
|
7
7
|
import 'node:fs';
|
|
8
8
|
import 'crypto-js';
|
|
@@ -17,9 +17,10 @@ import 'isomorphic-git';
|
|
|
17
17
|
import '@oclif/core';
|
|
18
18
|
import 'react';
|
|
19
19
|
import 'socket.io-client';
|
|
20
|
-
import '
|
|
20
|
+
import 'stream';
|
|
21
21
|
import 'yazl';
|
|
22
|
-
import
|
|
22
|
+
import 'fast-glob';
|
|
23
|
+
import { C as CommandProvider } from './baseGameCommand-P7Vyz2vZ.js';
|
|
23
24
|
|
|
24
25
|
const Command = ({ children, command }) => {
|
|
25
26
|
const { width } = useScreenSize();
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import {
|
|
3
|
-
import { C as Command } from './Command-
|
|
2
|
+
import { G as GameProvider } from './baseGameCommand-P7Vyz2vZ.js';
|
|
3
|
+
import { C as Command } from './Command-cqn3WLlP.js';
|
|
4
4
|
|
|
5
5
|
const CommandGame = ({ children, command }) => /* @__PURE__ */ jsx(Command, { command, children: /* @__PURE__ */ jsx(GameProvider, { children }) });
|
|
6
6
|
|
|
@@ -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 {
|
|
6
|
+
import { q as getAuthedHeaders, p as API_URL } from './baseCommand-B23l0hCp.js';
|
|
7
7
|
import 'ink-spinner';
|
|
8
8
|
import 'node:crypto';
|
|
9
9
|
import 'node:fs';
|
|
@@ -14,12 +14,13 @@ import 'readline-sync';
|
|
|
14
14
|
import 'luxon';
|
|
15
15
|
import 'isomorphic-git';
|
|
16
16
|
import '@oclif/core';
|
|
17
|
-
import {
|
|
17
|
+
import { i as GameContext, k as cacheKeys } from './baseGameCommand-P7Vyz2vZ.js';
|
|
18
18
|
import 'fast-glob';
|
|
19
19
|
import 'uuid';
|
|
20
|
-
import 'yazl';
|
|
21
20
|
import 'socket.io-client';
|
|
22
21
|
import 'fullscreen-ink';
|
|
22
|
+
import 'stream';
|
|
23
|
+
import 'yazl';
|
|
23
24
|
import 'string-length';
|
|
24
25
|
import 'strip-ansi';
|
|
25
26
|
import 'open';
|
|
@@ -28,6 +29,7 @@ import 'marked';
|
|
|
28
29
|
import 'marked-terminal';
|
|
29
30
|
import 'qrcode';
|
|
30
31
|
import { R as RunWithSpinner } from './RunWithSpinner-DucRnFp6.js';
|
|
32
|
+
import 'godot-export-presets';
|
|
31
33
|
|
|
32
34
|
const CreateKeystore = ({ onComplete, onError, ...boxProps }) => {
|
|
33
35
|
const { gameId } = useContext(GameContext);
|
|
@@ -1,16 +1,15 @@
|
|
|
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,
|
|
4
|
+
import { c as getShortDate, P as Platform, l as getProject, M as getProjectPlatformProgress } from './baseCommand-B23l0hCp.js';
|
|
5
5
|
import 'ink-spinner';
|
|
6
|
-
import { g as getShortUUID, m as makeHumanReadable,
|
|
6
|
+
import { g as getShortUUID, m as makeHumanReadable, i as GameContext, j as CommandContext } from './baseGameCommand-P7Vyz2vZ.js';
|
|
7
7
|
import '@tanstack/react-query';
|
|
8
8
|
import 'axios';
|
|
9
9
|
import 'luxon';
|
|
10
10
|
import 'node:fs';
|
|
11
11
|
import 'fast-glob';
|
|
12
12
|
import 'uuid';
|
|
13
|
-
import 'yazl';
|
|
14
13
|
import 'socket.io-client';
|
|
15
14
|
import 'fullscreen-ink';
|
|
16
15
|
import 'string-length';
|
|
@@ -23,6 +22,8 @@ import 'marked';
|
|
|
23
22
|
import 'marked-terminal';
|
|
24
23
|
import { N as NextSteps } from './NextSteps-DbJHmscQ.js';
|
|
25
24
|
import 'qrcode';
|
|
25
|
+
import 'godot-export-presets';
|
|
26
|
+
import 'yazl';
|
|
26
27
|
|
|
27
28
|
function isPlatformConfigured(platform, progress) {
|
|
28
29
|
if (!progress) return false;
|
|
@@ -11,24 +11,26 @@ import 'readline-sync';
|
|
|
11
11
|
import 'luxon';
|
|
12
12
|
import 'axios';
|
|
13
13
|
import 'isomorphic-git';
|
|
14
|
-
import {
|
|
14
|
+
import { I as queryClient, P as Platform, C as CredentialsType } from './baseCommand-B23l0hCp.js';
|
|
15
15
|
import '@oclif/core';
|
|
16
16
|
import { useMutation } from '@tanstack/react-query';
|
|
17
17
|
import 'crypto-js';
|
|
18
18
|
import { v4 } from 'uuid';
|
|
19
19
|
import 'fast-glob';
|
|
20
|
-
import { ZipFile } from 'yazl';
|
|
21
20
|
import 'socket.io-client';
|
|
22
21
|
import 'fullscreen-ink';
|
|
22
|
+
import 'stream';
|
|
23
|
+
import { ZipFile } from 'yazl';
|
|
23
24
|
import 'string-length';
|
|
24
25
|
import 'strip-ansi';
|
|
25
26
|
import 'open';
|
|
26
27
|
import '@inkjs/ui';
|
|
27
|
-
import { k as cacheKeys,
|
|
28
|
+
import { k as cacheKeys, i as GameContext } from './baseGameCommand-P7Vyz2vZ.js';
|
|
28
29
|
import 'marked';
|
|
29
30
|
import 'marked-terminal';
|
|
30
31
|
import 'qrcode';
|
|
31
|
-
import
|
|
32
|
+
import 'godot-export-presets';
|
|
33
|
+
import { i as importCredential } from './import-P4KcAuAO.js';
|
|
32
34
|
|
|
33
35
|
async function importKeystore({ log = () => {
|
|
34
36
|
}, ...opt }) {
|
|
@@ -7,12 +7,8 @@ import { useState, useRef, useEffect } from 'react';
|
|
|
7
7
|
import 'node:fs';
|
|
8
8
|
import 'crypto-js';
|
|
9
9
|
import 'uuid';
|
|
10
|
-
import {
|
|
11
|
-
import { k as cacheKeys, x as useJob, h as getStageColor, y as getMessageColor } from './baseGameCommand-8VL7xe-O.js';
|
|
10
|
+
import { q as getAuthedHeaders, p as API_URL, H as castArrayObjectDates, J as JobStatus, a8 as castJobDates, a6 as castObjectDates, a9 as getShortTime } from './baseCommand-B23l0hCp.js';
|
|
12
11
|
import 'luxon';
|
|
13
|
-
import 'fast-glob';
|
|
14
|
-
import 'yazl';
|
|
15
|
-
import 'socket.io-client';
|
|
16
12
|
import 'node:crypto';
|
|
17
13
|
import 'node:path';
|
|
18
14
|
import 'node:readline';
|
|
@@ -20,8 +16,13 @@ import 'node:url';
|
|
|
20
16
|
import 'readline-sync';
|
|
21
17
|
import 'isomorphic-git';
|
|
22
18
|
import '@oclif/core';
|
|
19
|
+
import 'stream';
|
|
20
|
+
import 'yazl';
|
|
21
|
+
import 'fast-glob';
|
|
22
|
+
import 'socket.io-client';
|
|
23
|
+
import { k as cacheKeys, y as useJob, h as getStageColor, x as getMessageColor } from './baseGameCommand-P7Vyz2vZ.js';
|
|
23
24
|
import 'fullscreen-ink';
|
|
24
|
-
import { u as useWebSocket } from './useWebSocket-
|
|
25
|
+
import { u as useWebSocket } from './useWebSocket-Bvq2Wf7I.js';
|
|
25
26
|
import { T as Title } from './Title-BCQtayg6.js';
|
|
26
27
|
import stringLength from 'string-length';
|
|
27
28
|
import stripAnsi from 'strip-ansi';
|
|
@@ -134,7 +135,18 @@ function useJobWatching({
|
|
|
134
135
|
}
|
|
135
136
|
|
|
136
137
|
function getSortedJobLogs(logs) {
|
|
137
|
-
return logs.sort((a, b) =>
|
|
138
|
+
return [...logs].sort((a, b) => {
|
|
139
|
+
if (a.sequence != null && b.sequence != null) {
|
|
140
|
+
return a.sequence - b.sequence;
|
|
141
|
+
}
|
|
142
|
+
if (a.sequence != null && b.sequence == null) {
|
|
143
|
+
return -1;
|
|
144
|
+
}
|
|
145
|
+
if (a.sequence == null && b.sequence != null) {
|
|
146
|
+
return 1;
|
|
147
|
+
}
|
|
148
|
+
return a.sentAt.toMillis() - b.sentAt.toMillis();
|
|
149
|
+
});
|
|
138
150
|
}
|
|
139
151
|
function useJobLogTail({ isWatching, jobId, length, projectId }) {
|
|
140
152
|
const [websocketLogs, setWebsocketLogs] = useState([]);
|
|
@@ -183,21 +195,23 @@ const TruncatedText = ({ children, wrap, ...textPropsWithoutWrap }) => {
|
|
|
183
195
|
return /* @__PURE__ */ jsx(Box, { ref, children: /* @__PURE__ */ jsx(Text, { ...textPropsWithoutWrap, children: getTruncated(children) + "\x1B[0m" }) });
|
|
184
196
|
};
|
|
185
197
|
|
|
198
|
+
const JobLogLine = ({ log, showTimestamp = true, showStage = true }) => {
|
|
199
|
+
const stageColor = getStageColor(log.stage);
|
|
200
|
+
const messageColor = getMessageColor(log.level);
|
|
201
|
+
return /* @__PURE__ */ jsxs(Box, { flexDirection: "row", height: 1, overflow: "hidden", gap: 1, children: [
|
|
202
|
+
showTimestamp && /* @__PURE__ */ jsx(Box, { children: /* @__PURE__ */ jsx(Text, { children: getShortTime(log.sentAt) }) }),
|
|
203
|
+
showStage && /* @__PURE__ */ jsx(Box, { justifyContent: "flex-start", width: 9, children: /* @__PURE__ */ jsx(Text, { color: stageColor, children: log.stage }) }),
|
|
204
|
+
/* @__PURE__ */ jsx(Box, { height: 1, marginRight: 2, overflow: "hidden", children: /* @__PURE__ */ jsx(TruncatedText, { color: messageColor, children: log.message }) })
|
|
205
|
+
] }, log.id);
|
|
206
|
+
};
|
|
207
|
+
|
|
186
208
|
const JobLogTail = (props) => {
|
|
187
209
|
const { data, isLoading } = useJobLogTail(props);
|
|
188
210
|
return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", children: [
|
|
189
211
|
/* @__PURE__ */ jsx(Title, { children: "Job Logs" }),
|
|
190
212
|
isLoading && /* @__PURE__ */ jsx(Spinner, { type: "dots" }),
|
|
191
|
-
/* @__PURE__ */ jsx(Box, { flexDirection: "column", children: data.map((log) => {
|
|
192
|
-
const stageColor = getStageColor(log.stage);
|
|
193
|
-
const messageColor = getMessageColor(log.level);
|
|
194
|
-
return /* @__PURE__ */ jsxs(Box, { flexDirection: "row", height: 1, overflow: "hidden", children: [
|
|
195
|
-
/* @__PURE__ */ jsx(Box, { children: /* @__PURE__ */ jsx(Text, { children: getShortTime(log.sentAt) }) }),
|
|
196
|
-
/* @__PURE__ */ jsx(Box, { justifyContent: "flex-start", marginLeft: 1, width: 9, children: /* @__PURE__ */ jsx(Text, { color: stageColor, children: log.stage }) }),
|
|
197
|
-
/* @__PURE__ */ jsx(Box, { height: 1, marginLeft: 1, marginRight: 2, overflow: "hidden", children: /* @__PURE__ */ jsx(TruncatedText, { color: messageColor, children: log.message }) })
|
|
198
|
-
] }, log.id);
|
|
199
|
-
}) })
|
|
213
|
+
/* @__PURE__ */ jsx(Box, { flexDirection: "column", children: data.map((log) => /* @__PURE__ */ jsx(JobLogLine, { log }, log.id)) })
|
|
200
214
|
] });
|
|
201
215
|
};
|
|
202
216
|
|
|
203
|
-
export { JobLogTail as J, useJobWatching as u };
|
|
217
|
+
export { JobLogTail as J, JobLogLine as a, useJobWatching as u };
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
import fs__default from 'node:fs';
|
|
2
|
+
import { useMutation } from '@tanstack/react-query';
|
|
3
|
+
import fg from 'fast-glob';
|
|
4
|
+
import { v4 } from 'uuid';
|
|
5
|
+
import { I as queryClient, l as getProject, x as DEFAULT_SHIPPED_FILES_GLOBS, y as DEFAULT_IGNORED_FILES_GLOBS, a4 as getNewUploadTicket, a5 as startJobsFromUpload, a2 as LogLevel } from './baseCommand-B23l0hCp.js';
|
|
6
|
+
import { k as cacheKeys, v as getFileHash, w as getPlatformName, x as getMessageColor } from './baseGameCommand-P7Vyz2vZ.js';
|
|
7
|
+
import { ZipFile } from 'yazl';
|
|
8
|
+
import { g as getCWDGitInfo } from './git-BpsfNFZ_.js';
|
|
9
|
+
import { Readable, Transform } from 'stream';
|
|
10
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
11
|
+
import { Box, Text } from 'ink';
|
|
12
|
+
import 'ink-spinner';
|
|
13
|
+
import { useState } from 'react';
|
|
14
|
+
import 'axios';
|
|
15
|
+
import 'crypto-js';
|
|
16
|
+
import 'luxon';
|
|
17
|
+
import 'socket.io-client';
|
|
18
|
+
import { u as useJobWatching, a as JobLogLine } from './JobLogTail-CWYxQTq4.js';
|
|
19
|
+
import 'fullscreen-ink';
|
|
20
|
+
import 'open';
|
|
21
|
+
import '@inkjs/ui';
|
|
22
|
+
import 'node:path';
|
|
23
|
+
import 'marked';
|
|
24
|
+
import 'marked-terminal';
|
|
25
|
+
import { P as ProgressSpinner } from './ProgressSpinner-Um6ARKlk.js';
|
|
26
|
+
import 'qrcode';
|
|
27
|
+
import 'string-length';
|
|
28
|
+
import 'strip-ansi';
|
|
29
|
+
import 'godot-export-presets';
|
|
30
|
+
|
|
31
|
+
function formatProgressLog(label, data, bytesKey, totalKey, isEstimated = false) {
|
|
32
|
+
const elapsed = data.elapsedSeconds.toFixed(1);
|
|
33
|
+
const transferredMB = (data[bytesKey] / 1024 / 1024).toFixed(2);
|
|
34
|
+
const totalMB = (data[totalKey] / 1024 / 1024).toFixed(2);
|
|
35
|
+
const progressPercent = Math.round(data.progress * 100);
|
|
36
|
+
const speed = data.speedMBps.toFixed(2);
|
|
37
|
+
const totalPrefix = isEstimated ? "~" : "";
|
|
38
|
+
return `${label}: ${progressPercent}% (${transferredMB}MB / ${totalPrefix}${totalMB}MB) - ${elapsed}s - ${speed}MB/s`;
|
|
39
|
+
}
|
|
40
|
+
async function ship({ command, log = () => {
|
|
41
|
+
}, shipFlags }) {
|
|
42
|
+
const commandFlags = command.getFlags();
|
|
43
|
+
const finalFlags = shipFlags || commandFlags;
|
|
44
|
+
const { verbose, useDemoCredentials } = finalFlags;
|
|
45
|
+
verbose && log("Fetching game config...");
|
|
46
|
+
const projectConfig = await command.getProjectConfig();
|
|
47
|
+
if (!projectConfig.project) throw new Error("No project found in project config");
|
|
48
|
+
const project = await getProject(projectConfig.project.id);
|
|
49
|
+
const projectUsesDemoCredentials = Boolean(project.details?.useDemoCredentials);
|
|
50
|
+
const isUsingDemoCredentials = useDemoCredentials ?? projectUsesDemoCredentials ?? false;
|
|
51
|
+
const hasConfiguredIos = Boolean(project.details?.iosBundleId);
|
|
52
|
+
const hasConfiguredAndroid = Boolean(project.details?.androidPackageName);
|
|
53
|
+
if (!isUsingDemoCredentials && !hasConfiguredAndroid && !hasConfiguredIos) {
|
|
54
|
+
throw new Error(
|
|
55
|
+
"No Android or iOS configuration found. Please run `shipthis game wizard android` or `shipthis game wizard ios` to configure your game."
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
verbose && log("Retrieving file globs...");
|
|
59
|
+
const shippedFilesGlobs = projectConfig.shippedFilesGlobs || DEFAULT_SHIPPED_FILES_GLOBS;
|
|
60
|
+
const ignoredFilesGlobs = projectConfig.ignoredFilesGlobs || DEFAULT_IGNORED_FILES_GLOBS;
|
|
61
|
+
verbose && log("Finding files to include in zip...");
|
|
62
|
+
const files = await fg(shippedFilesGlobs, { dot: true, ignore: ignoredFilesGlobs });
|
|
63
|
+
verbose && log(`Found ${files.length} files, adding to zip...`);
|
|
64
|
+
const tmpZipFileName = `shipthis-${v4()}.zip`;
|
|
65
|
+
const tmpZipFile = `${process.cwd()}/${tmpZipFileName}`;
|
|
66
|
+
log(`Creating zip file: ${tmpZipFileName}`);
|
|
67
|
+
await createZip({
|
|
68
|
+
files,
|
|
69
|
+
outputPath: tmpZipFile,
|
|
70
|
+
onProgress: (data) => {
|
|
71
|
+
log(formatProgressLog("Zipping", data, "writtenBytes", "estimatedTotalBytes", true));
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
const { size } = fs__default.statSync(tmpZipFile);
|
|
75
|
+
verbose && log("Requesting upload ticket...");
|
|
76
|
+
const uploadTicket = await getNewUploadTicket(projectConfig.project.id);
|
|
77
|
+
log("Uploading zip file...");
|
|
78
|
+
const zipStream = fs__default.createReadStream(tmpZipFile);
|
|
79
|
+
const response = await uploadZip({
|
|
80
|
+
url: uploadTicket.url,
|
|
81
|
+
zipStream,
|
|
82
|
+
zipSize: size,
|
|
83
|
+
onProgress: (data) => {
|
|
84
|
+
log(formatProgressLog("Uploading", data, "loadedBytes", "totalBytes", false));
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
verbose && log("Computing zip file hash...");
|
|
88
|
+
const zipFileMd5 = await getFileHash(tmpZipFile);
|
|
89
|
+
verbose && log("Cleaning up temporary zip file...");
|
|
90
|
+
fs__default.unlinkSync(tmpZipFile);
|
|
91
|
+
if (!response.ok) {
|
|
92
|
+
throw new Error(`Upload failed: ${response.status} ${response.statusText}`);
|
|
93
|
+
}
|
|
94
|
+
log(`Upload complete`);
|
|
95
|
+
verbose && log("Fetching Git info...");
|
|
96
|
+
const gitInfo = await getCWDGitInfo();
|
|
97
|
+
const uploadDetails = {
|
|
98
|
+
...gitInfo,
|
|
99
|
+
zipFileMd5
|
|
100
|
+
};
|
|
101
|
+
verbose && log("Starting jobs from upload...");
|
|
102
|
+
const startJobsOptions = {
|
|
103
|
+
...uploadDetails,
|
|
104
|
+
platform: finalFlags.platform?.toUpperCase(),
|
|
105
|
+
skipPublish: finalFlags.skipPublish,
|
|
106
|
+
verbose: finalFlags.verbose,
|
|
107
|
+
useDemoCredentials: isUsingDemoCredentials,
|
|
108
|
+
gameEngineVersion: finalFlags.gameEngineVersion
|
|
109
|
+
};
|
|
110
|
+
const jobs = await startJobsFromUpload(uploadTicket.id, startJobsOptions);
|
|
111
|
+
verbose && log("Job submission complete.");
|
|
112
|
+
if (jobs.length === 0) {
|
|
113
|
+
throw new Error("No jobs were created. Please check your game configuration and try again.");
|
|
114
|
+
}
|
|
115
|
+
if (finalFlags?.follow) {
|
|
116
|
+
log("Waiting for job to start...");
|
|
117
|
+
}
|
|
118
|
+
return jobs;
|
|
119
|
+
}
|
|
120
|
+
const useShip = () => useMutation({
|
|
121
|
+
mutationFn: ship,
|
|
122
|
+
async onSuccess(data) {
|
|
123
|
+
queryClient.invalidateQueries({
|
|
124
|
+
queryKey: cacheKeys.jobs({ pageNumber: 0, projectId: data[0].project.id })
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
const ON_PROGRESS_THROTTLE_MS = 2e3;
|
|
130
|
+
function createProgressStream(totalSize, onProgress, throttleMs) {
|
|
131
|
+
let sent = 0;
|
|
132
|
+
let lastCallTime = 0;
|
|
133
|
+
return new Transform({
|
|
134
|
+
transform(chunk, encoding, callback) {
|
|
135
|
+
sent += chunk.length;
|
|
136
|
+
const now = Date.now();
|
|
137
|
+
if (now - lastCallTime >= throttleMs) {
|
|
138
|
+
onProgress(sent, totalSize);
|
|
139
|
+
lastCallTime = now;
|
|
140
|
+
}
|
|
141
|
+
callback(null, chunk);
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
function uploadZip({ url, zipStream, zipSize, onProgress }) {
|
|
146
|
+
const startTime = Date.now();
|
|
147
|
+
const progressStream = createProgressStream(zipSize, (sent, total) => {
|
|
148
|
+
const elapsedSeconds = (Date.now() - startTime) / 1e3;
|
|
149
|
+
const speedMBps = elapsedSeconds < 1e-3 ? 0 : sent / elapsedSeconds / 1024 / 1024;
|
|
150
|
+
onProgress({
|
|
151
|
+
progress: total ? sent / total : 0,
|
|
152
|
+
loadedBytes: sent,
|
|
153
|
+
totalBytes: total,
|
|
154
|
+
speedMBps,
|
|
155
|
+
elapsedSeconds
|
|
156
|
+
});
|
|
157
|
+
}, ON_PROGRESS_THROTTLE_MS);
|
|
158
|
+
const streamWithProgress = zipStream.pipe(progressStream);
|
|
159
|
+
const webStream = Readable.toWeb(streamWithProgress);
|
|
160
|
+
const response = fetch(url, {
|
|
161
|
+
method: "PUT",
|
|
162
|
+
headers: {
|
|
163
|
+
"Content-Type": "application/zip",
|
|
164
|
+
"Content-Length": zipSize.toString()
|
|
165
|
+
},
|
|
166
|
+
body: webStream,
|
|
167
|
+
duplex: "half"
|
|
168
|
+
});
|
|
169
|
+
return response;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
const COMPRESSION_RATIO = 0.65;
|
|
173
|
+
async function createZip({ files, outputPath, onProgress }) {
|
|
174
|
+
const startTime = Date.now();
|
|
175
|
+
const statPromises = files.map(async (file) => {
|
|
176
|
+
try {
|
|
177
|
+
return await fs__default.promises.stat(file);
|
|
178
|
+
} catch {
|
|
179
|
+
return null;
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
const statsResults = await Promise.all(statPromises);
|
|
183
|
+
let totalSourceSize = 0;
|
|
184
|
+
for (const stats of statsResults) {
|
|
185
|
+
if (stats) {
|
|
186
|
+
totalSourceSize += stats.size;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
const estimatedZipSize = Math.max(Math.round(totalSourceSize * COMPRESSION_RATIO), 1);
|
|
190
|
+
const zipFile = new ZipFile();
|
|
191
|
+
for (const file of files) {
|
|
192
|
+
zipFile.addFile(file, file);
|
|
193
|
+
}
|
|
194
|
+
return new Promise((resolve, reject) => {
|
|
195
|
+
let settled = false;
|
|
196
|
+
const handleError = (error) => {
|
|
197
|
+
if (settled) return;
|
|
198
|
+
settled = true;
|
|
199
|
+
zipFile.outputStream.destroy();
|
|
200
|
+
progressStream.destroy();
|
|
201
|
+
outputStream.destroy();
|
|
202
|
+
reject(error);
|
|
203
|
+
};
|
|
204
|
+
const handleSuccess = () => {
|
|
205
|
+
if (settled) return;
|
|
206
|
+
settled = true;
|
|
207
|
+
resolve();
|
|
208
|
+
};
|
|
209
|
+
const outputStream = fs__default.createWriteStream(outputPath);
|
|
210
|
+
const progressStream = createProgressStream(estimatedZipSize, (written, total) => {
|
|
211
|
+
const elapsedSeconds = (Date.now() - startTime) / 1e3;
|
|
212
|
+
const speedMBps = elapsedSeconds < 1e-3 ? 0 : written / elapsedSeconds / 1024 / 1024;
|
|
213
|
+
onProgress({
|
|
214
|
+
progress: total ? Math.min(1, written / total) : 0,
|
|
215
|
+
writtenBytes: written,
|
|
216
|
+
estimatedTotalBytes: total,
|
|
217
|
+
sourceTotalBytes: totalSourceSize,
|
|
218
|
+
elapsedSeconds,
|
|
219
|
+
speedMBps
|
|
220
|
+
});
|
|
221
|
+
}, ON_PROGRESS_THROTTLE_MS);
|
|
222
|
+
zipFile.outputStream.on("error", handleError);
|
|
223
|
+
progressStream.on("error", handleError);
|
|
224
|
+
outputStream.on("error", handleError);
|
|
225
|
+
outputStream.on("close", handleSuccess);
|
|
226
|
+
zipFile.outputStream.pipe(progressStream).pipe(outputStream);
|
|
227
|
+
zipFile.end();
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
const JobProgress = (props) => {
|
|
232
|
+
const [lastWarningLog, setLastWarningLog] = useState(null);
|
|
233
|
+
const { progress } = useJobWatching({
|
|
234
|
+
isWatching: true,
|
|
235
|
+
jobId: props.job.id,
|
|
236
|
+
onComplete: props.onComplete,
|
|
237
|
+
onFailure: props.onFailure,
|
|
238
|
+
projectId: props.job.project.id,
|
|
239
|
+
onNewLogEntry: (logEntry) => {
|
|
240
|
+
if (logEntry.level == LogLevel.WARN) setLastWarningLog(logEntry);
|
|
241
|
+
}
|
|
242
|
+
});
|
|
243
|
+
const label = `${getPlatformName(props.job.type)} build progress...`;
|
|
244
|
+
return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", gap: 0, children: [
|
|
245
|
+
/* @__PURE__ */ jsx(ProgressSpinner, { label, progress, spinnerType: "dots" }),
|
|
246
|
+
lastWarningLog && /* @__PURE__ */ jsxs(Box, { flexDirection: "row", gap: 1, marginLeft: 2, children: [
|
|
247
|
+
/* @__PURE__ */ jsx(Text, { color: getMessageColor(lastWarningLog.level), children: "WARNING" }),
|
|
248
|
+
/* @__PURE__ */ jsx(JobLogLine, { log: lastWarningLog, showTimestamp: false, showStage: false })
|
|
249
|
+
] })
|
|
250
|
+
] });
|
|
251
|
+
};
|
|
252
|
+
|
|
253
|
+
export { JobProgress as J, useShip as u };
|
|
@@ -3,17 +3,16 @@ 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-
|
|
6
|
+
import { J as JobStatus } from './baseCommand-B23l0hCp.js';
|
|
7
7
|
import '@tanstack/react-query';
|
|
8
8
|
import 'axios';
|
|
9
9
|
import 'node:fs';
|
|
10
10
|
import 'crypto-js';
|
|
11
11
|
import 'uuid';
|
|
12
|
-
import { e as getJobSummary, h as getStageColor, f as getJobStatusColor } from './baseGameCommand-
|
|
12
|
+
import { e as getJobSummary, h as getStageColor, f as getJobStatusColor } from './baseGameCommand-P7Vyz2vZ.js';
|
|
13
13
|
import 'fast-glob';
|
|
14
|
-
import 'yazl';
|
|
15
14
|
import 'socket.io-client';
|
|
16
|
-
import { u as useJobWatching } from './JobLogTail-
|
|
15
|
+
import { u as useJobWatching } from './JobLogTail-CWYxQTq4.js';
|
|
17
16
|
import 'fullscreen-ink';
|
|
18
17
|
import { a as StatusRow, b as StatusRowLabel } from './StatusTable-DzRWcMr4.js';
|
|
19
18
|
import { T as Title } from './Title-BCQtayg6.js';
|
|
@@ -10,17 +10,18 @@ import 'readline-sync';
|
|
|
10
10
|
import 'luxon';
|
|
11
11
|
import 'axios';
|
|
12
12
|
import 'isomorphic-git';
|
|
13
|
-
import './baseCommand-
|
|
13
|
+
import './baseCommand-B23l0hCp.js';
|
|
14
14
|
import '@oclif/core';
|
|
15
15
|
import '@tanstack/react-query';
|
|
16
16
|
import 'react';
|
|
17
17
|
import 'crypto-js';
|
|
18
18
|
import 'uuid';
|
|
19
|
-
import { u as useProjectCredentials, g as getProjectCredentialSummary } from './useProjectCredentials-
|
|
19
|
+
import { u as useProjectCredentials, g as getProjectCredentialSummary } from './useProjectCredentials-DLYLMlJh.js';
|
|
20
20
|
import 'fast-glob';
|
|
21
|
-
import 'yazl';
|
|
22
21
|
import 'socket.io-client';
|
|
23
22
|
import 'fullscreen-ink';
|
|
23
|
+
import 'stream';
|
|
24
|
+
import 'yazl';
|
|
24
25
|
import { T as Table } from './Table-FaNgpyeq.js';
|
|
25
26
|
import { T as Title } from './Title-BCQtayg6.js';
|
|
26
27
|
|
|
@@ -10,17 +10,18 @@ import 'readline-sync';
|
|
|
10
10
|
import 'luxon';
|
|
11
11
|
import axios from 'axios';
|
|
12
12
|
import 'isomorphic-git';
|
|
13
|
-
import { c as getShortDate,
|
|
13
|
+
import { c as getShortDate, q as getAuthedHeaders, p as API_URL, H as castArrayObjectDates } from './baseCommand-B23l0hCp.js';
|
|
14
14
|
import '@oclif/core';
|
|
15
15
|
import { useQuery } from '@tanstack/react-query';
|
|
16
16
|
import 'react';
|
|
17
17
|
import 'crypto-js';
|
|
18
18
|
import 'uuid';
|
|
19
19
|
import 'fast-glob';
|
|
20
|
-
import '
|
|
21
|
-
import { k as cacheKeys, g as getShortUUID } from './baseGameCommand-8VL7xe-O.js';
|
|
20
|
+
import { k as cacheKeys, g as getShortUUID } from './baseGameCommand-P7Vyz2vZ.js';
|
|
22
21
|
import 'socket.io-client';
|
|
23
22
|
import 'fullscreen-ink';
|
|
23
|
+
import 'stream';
|
|
24
|
+
import 'yazl';
|
|
24
25
|
import { T as Table } from './Table-FaNgpyeq.js';
|
|
25
26
|
import { T as Title } from './Title-BCQtayg6.js';
|
|
26
27
|
|