shipthis 0.1.43 → 0.1.45
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 +16 -43
- package/dist/{AppleBundleIdDetails-bMqPqmP0.js → AppleBundleIdDetails-Cx8k-rYB.js} +5 -6
- package/dist/{Command-cqn3WLlP.js → Command-B2Qnw47r.js} +3 -4
- package/dist/{CommandGame-DMQT0sL_.js → CommandGame-C23_F55i.js} +2 -2
- package/dist/{Create-Cs9HG9xO.js → Create-BxNeKc2r.js} +2 -2
- package/dist/{GameStatus-lv2SW-6H.js → GameStatus-repzSNId.js} +2 -2
- package/dist/{Import-DOQrR8wW.js → Import-D6J9b-XO.js} +4 -5
- package/dist/{JobLogTail-CWYxQTq4.js → JobLogTail-CJWxpIq5.js} +4 -5
- package/dist/{JobProgress-B07Y2FLb.js → JobProgress-CISmKMuD.js} +3 -4
- package/dist/{JobStatusTable-B0A1z1zq.js → JobStatusTable-BEOu5MgG.js} +4 -5
- package/dist/{ProjectCredentialsTable-CyJ7o8yD.js → ProjectCredentialsTable-DR11Mn7W.js} +3 -4
- package/dist/{UserCredentialsTable-C8_skPFY.js → UserCredentialsTable-db4Xb8HC.js} +3 -4
- package/dist/{baseAppleCommand-Cfoy8Tx_.js → baseAppleCommand-YzhCAdUY.js} +1 -1
- package/dist/{baseCommand-B23l0hCp.js → baseCommand-ClUdS6Cn.js} +124 -24
- package/dist/{baseGameAndroidCommand-Dh4xXVW1.js → baseGameAndroidCommand-LdDRof_I.js} +2 -2
- package/dist/{baseGameCommand-P7Vyz2vZ.js → baseGameCommand-DQ6Wj-Pk.js} +43 -44
- package/dist/commands/apiKey/create.js +3 -4
- package/dist/commands/apiKey/list.js +3 -4
- package/dist/commands/apiKey/revoke.js +3 -4
- package/dist/commands/apple/apiKey/create.js +7 -8
- package/dist/commands/apple/apiKey/delete.js +5 -6
- package/dist/commands/apple/apiKey/export.js +6 -7
- package/dist/commands/apple/apiKey/import.js +6 -7
- package/dist/commands/apple/apiKey/status.js +5 -6
- package/dist/commands/apple/certificate/create.js +7 -8
- package/dist/commands/apple/certificate/delete.js +5 -6
- package/dist/commands/apple/certificate/export.js +6 -7
- package/dist/commands/apple/certificate/import.js +6 -7
- package/dist/commands/apple/certificate/status.js +5 -6
- package/dist/commands/apple/login.js +3 -4
- package/dist/commands/apple/status.js +4 -5
- package/dist/commands/dashboard.js +2 -3
- package/dist/commands/game/android/apiKey/connect.js +8 -9
- package/dist/commands/game/android/apiKey/create.js +11 -12
- package/dist/commands/game/android/apiKey/delete.js +5 -6
- package/dist/commands/game/android/apiKey/export.js +7 -8
- package/dist/commands/game/android/apiKey/import.js +7 -8
- package/dist/commands/game/android/apiKey/invite.js +3 -4
- package/dist/commands/game/android/apiKey/policy.js +3 -4
- package/dist/commands/game/android/apiKey/status.js +7 -8
- package/dist/commands/game/android/keyStore/create.js +8 -9
- package/dist/commands/game/android/keyStore/delete.js +5 -6
- package/dist/commands/game/android/keyStore/export.js +6 -7
- package/dist/commands/game/android/keyStore/import.js +9 -10
- package/dist/commands/game/android/keyStore/status.js +6 -7
- package/dist/commands/game/android/status.js +3 -4
- package/dist/commands/game/build/download.js +3 -4
- package/dist/commands/game/build/list.js +5 -6
- package/dist/commands/game/create.js +3 -4
- package/dist/commands/game/details.js +4 -5
- package/dist/commands/game/export.js +2 -3
- package/dist/commands/game/ios/app/addTester.js +5 -6
- package/dist/commands/game/ios/app/create.js +4 -5
- package/dist/commands/game/ios/app/status.js +7 -8
- package/dist/commands/game/ios/app/sync.js +5 -6
- package/dist/commands/game/ios/profile/create.js +10 -9
- package/dist/commands/game/ios/profile/delete.js +5 -6
- package/dist/commands/game/ios/profile/export.js +6 -7
- package/dist/commands/game/ios/profile/import.js +6 -7
- package/dist/commands/game/ios/profile/status.js +7 -8
- package/dist/commands/game/ios/status.js +9 -10
- package/dist/commands/game/ios/wizard.js +3 -4
- package/dist/commands/game/job/list.js +3 -4
- package/dist/commands/game/job/status.js +6 -7
- package/dist/commands/game/list.js +3 -4
- package/dist/commands/game/ship.js +8 -9
- package/dist/commands/game/status.js +6 -7
- package/dist/commands/game/wizard.js +16 -17
- package/dist/commands/internal/fastlane.js +3 -4
- package/dist/commands/internal/readme.js +4 -4
- package/dist/commands/login.js +2 -3
- package/dist/commands/status.js +4 -5
- package/dist/commands/util/android-build-method.js +3 -4
- package/dist/commands/util/glass.js +2 -3
- package/dist/{export-BOuZFMT3.js → export-Dq53OG06.js} +1 -1
- package/dist/{import-P4KcAuAO.js → import-CPAFgZO5.js} +1 -1
- package/dist/{index-AUjBYrSG.js → index-B-5yl-9h.js} +5 -6
- package/dist/{index-DMosmqi2.js → index-BMdQLpAh.js} +1 -1
- package/dist/{index-BmRSqi8U.js → index-ZQyiwS8O.js} +5 -6
- package/dist/{upload-BvNeNQXc.js → upload-BfWRd6ss.js} +1 -1
- package/dist/{useAppleApp-fD92orhh.js → useAppleApp-BZ1YvB2M.js} +1 -1
- package/dist/{useAppleBundleId-oONHtYgg.js → useAppleBundleId-CVBg5V7b.js} +1 -1
- package/dist/{useAppleProfiles-aMy844nZ.js → useAppleProfiles-BPZwJoCh.js} +2 -3
- package/dist/{useGoogleStatus-rBDZt9tw.js → useGoogleStatus-TpGFvpk5.js} +2 -2
- package/dist/{useProjectCredentials-DLYLMlJh.js → useProjectCredentials-Dv0DF2rA.js} +2 -2
- package/dist/{useWebSocket-Bvq2Wf7I.js → useWebSocket-Bj5fQveo.js} +1 -1
- package/docs/README.md +1 -0
- package/docs/autocomplete.md +64 -0
- package/docs/game/ios/app.md +11 -14
- package/npm-shrinkwrap.json +4629 -1903
- package/oclif.manifest.json +1 -1
- package/package.json +33 -17
package/README.md
CHANGED
|
@@ -49,6 +49,8 @@ The wizard command takes a platform parameter: either **android** or **ios**. Ru
|
|
|
49
49
|
|
|
50
50
|
#### Set up an Android game
|
|
51
51
|
|
|
52
|
+
Read more about [how ShipThis exports Godot Android games](https://shipth.is/docs/guides/android-export-methods?ref=github_readme) (Gradle vs legacy, APK/AAB output).
|
|
53
|
+
|
|
52
54
|
```bash
|
|
53
55
|
shipthis game wizard android
|
|
54
56
|
```
|
|
@@ -89,6 +91,7 @@ Now you can publish new versions of your game to TestFlight or Google Play with
|
|
|
89
91
|
shipthis game ship
|
|
90
92
|
```
|
|
91
93
|
|
|
94
|
+
- New to ShipThis? See the full [Quick start guide](https://shipth.is/docs/guides/quick-start?ref=github_readme)
|
|
92
95
|
- Having issues? Check the [Troubleshooting](https://shipth.is/docs/troubleshooting?ref=github_readme) or [join our Discord](https://discord.gg/gPjn3S99k4)
|
|
93
96
|
- For detailed documentation, visit [shipth.is/docs](https://shipth.is/docs?ref=github_readme)
|
|
94
97
|
|
|
@@ -106,7 +109,7 @@ We support **all stable Godot versions since 3.6**, including:
|
|
|
106
109
|
|
|
107
110
|
| [3.6](https://github.com/godotengine/godot/releases/tag/3.6-stable) | [4.0](https://github.com/godotengine/godot/releases/tag/4.0-stable) | [4.1](https://github.com/godotengine/godot/releases/tag/4.1-stable) | [4.2](https://github.com/godotengine/godot/releases/tag/4.2-stable) | [4.3](https://github.com/godotengine/godot/releases/tag/4.3-stable) | [4.4](https://github.com/godotengine/godot/releases/tag/4.4-stable) | [4.5](https://github.com/godotengine/godot/releases/tag/4.5-stable) | [4.6](https://github.com/godotengine/godot/releases/tag/4.6-stable) |
|
|
108
111
|
| ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ |
|
|
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) |
|
|
112
|
+
| [3.6.1](https://github.com/godotengine/godot/releases/tag/3.6.1-stable) | [4.0.1](https://github.com/godotengine/godot/releases/tag/4.0.1-stable) | [4.1.1](https://github.com/godotengine/godot/releases/tag/4.1.1-stable) | [4.2.1](https://github.com/godotengine/godot/releases/tag/4.2.1-stable) | [4.3.1 *](https://github.com/shipth-is/godot-android-sdk-upgrade/releases/tag/4.3.1-28eb575) | [4.4.1](https://github.com/godotengine/godot/releases/tag/4.4.1-stable) | [4.5.1](https://github.com/godotengine/godot/releases/tag/4.5.1-stable) | [4.6.1](https://github.com/godotengine/godot/releases/tag/4.6.1-stable) |
|
|
110
113
|
| [3.6.2](https://github.com/godotengine/godot/releases/tag/3.6.2-stable) | [4.0.2](https://github.com/godotengine/godot/releases/tag/4.0.2-stable) | [4.1.2](https://github.com/godotengine/godot/releases/tag/4.1.2-stable) | [4.2.2](https://github.com/godotengine/godot/releases/tag/4.2.2-stable) | | [4.4.2 *](https://github.com/shipth-is/godot-android-sdk-upgrade/releases/tag/4.4.2-ca113b3) | | |
|
|
111
114
|
| | [4.0.3](https://github.com/godotengine/godot/releases/tag/4.0.3-stable) | [4.1.3](https://github.com/godotengine/godot/releases/tag/4.1.3-stable) | [4.2.3 *](https://github.com/shipth-is/godot-android-sdk-upgrade/releases/tag/4.2.3-d33f443) | | | | |
|
|
112
115
|
| | [4.0.4](https://github.com/godotengine/godot/releases/tag/4.0.4-stable) | [4.1.4](https://github.com/godotengine/godot/releases/tag/4.1.4-stable) | | | | | |
|
|
@@ -365,49 +368,9 @@ We store:
|
|
|
365
368
|
|
|
366
369
|
### What happens to my files when I run the command `shipthis game ship`?
|
|
367
370
|
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
When you run the command, the CLI asks the ShipThis backend for a secure (HTTPS) temporary upload URL.
|
|
371
|
-
Your game files are packaged locally on your machine:
|
|
372
|
-
|
|
373
|
-
- Files matching `shippedFilesGlobs` in `shipthis.json` are included
|
|
374
|
-
- Files matching `ignoredFilesGlobs` are excluded
|
|
375
|
-
|
|
376
|
-
The zip file is then uploaded directly from your computer to a private DigitalOcean Space using the temporary upload URL.
|
|
377
|
-
|
|
378
|
-
#### 2. Where the files are stored
|
|
379
|
-
|
|
380
|
-
The uploaded zip lives in a private DigitalOcean Space. The space is not public and cannot be browsed.
|
|
381
|
-
|
|
382
|
-
Files in this storage can only be accessed using signed URLs that expire after a short time. Those URLs are generated only when they are needed.
|
|
383
|
-
|
|
384
|
-
This storage is used for:
|
|
385
|
-
|
|
386
|
-
- Providing a build machine access to your game files
|
|
387
|
-
- Storing the resulting build outputs (APK/AAB/IPA)
|
|
388
|
-
|
|
389
|
-
#### 3. How build machines access your code
|
|
371
|
+
Your game files are packaged, uploaded to private storage via a temporary signed URL, and made available to an ephemeral build machine. After the build completes, all files are cleaned up on the machine. Uploaded files and build outputs are retained for **30 days** before automatic deletion.
|
|
390
372
|
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
When a machine is ready to run a job, it asks the backend for work. The job it receives includes a temporary, signed download URL for the zip containing the game files. The machine downloads the zip, extracts it, runs the build, and uploads the results using signed upload URLs provided in the job metadata.
|
|
394
|
-
|
|
395
|
-
Build machines cannot browse files or access anything outside the job that they are currently running.
|
|
396
|
-
|
|
397
|
-
#### 4. Cleanup after the build
|
|
398
|
-
|
|
399
|
-
After a build machine has completed a job, a cleanup routine is run which deletes:
|
|
400
|
-
|
|
401
|
-
- Downloaded and extracted game files
|
|
402
|
-
- Build intermediates
|
|
403
|
-
- Temporary files
|
|
404
|
-
|
|
405
|
-
The build machines do not keep user files after a job completes.
|
|
406
|
-
|
|
407
|
-
#### 5. Retention and deletion
|
|
408
|
-
|
|
409
|
-
- Uploaded game file zips and build outputs (APK/AAB/IPA) are retained for **30 days**
|
|
410
|
-
- A lifecycle policy set on the storage automatically deletes them after that period
|
|
373
|
+
Read the full [How your code is handled](https://shipth.is/docs/guides/code-handling?ref=github_readme) guide for details.
|
|
411
374
|
|
|
412
375
|
## 📖 Command Reference
|
|
413
376
|
|
|
@@ -420,11 +383,21 @@ The build machines do not keep user files after a job completes.
|
|
|
420
383
|
|
|
421
384
|
### 🔧 Commands
|
|
422
385
|
|
|
386
|
+
- [autocomplete](https://shipth.is/docs/reference/autocomplete?ref=github_readme) - Set up shell tab-completion for commands, topics, and flags
|
|
423
387
|
- [dashboard](https://shipth.is/docs/reference/dashboard?ref=github_readme) - Opens the web browser to your shipth.is dashboard
|
|
424
388
|
- [login](https://shipth.is/docs/reference/login?ref=github_readme) - Sign in or create a new account
|
|
425
389
|
- [status](https://shipth.is/docs/reference/status?ref=github_readme) - Display your overall ShipThis account status
|
|
426
390
|
- [help](https://shipth.is/docs/reference/help?ref=github_readme) - Display help for a specific topic or command
|
|
427
391
|
|
|
392
|
+
### 📚 Guides
|
|
393
|
+
|
|
394
|
+
- [Quick start](https://shipth.is/docs/guides/quick-start?ref=github_readme) - Get your first build running in minutes
|
|
395
|
+
- [Android export methods](https://shipth.is/docs/guides/android-export-methods?ref=github_readme) - Gradle vs legacy builds, APK & AAB output
|
|
396
|
+
- [Godot versioning](https://shipth.is/docs/guides/godot-versioning?ref=github_readme) - Supported Godot versions and custom builds
|
|
397
|
+
- [How your code is handled](https://shipth.is/docs/guides/code-handling?ref=github_readme) - Upload, storage, and 30-day retention policy
|
|
398
|
+
- [Liquid Glass icons](https://shipth.is/docs/guides/liquid-glass?ref=github_readme) - Use Liquid Glass icons with your iOS game
|
|
399
|
+
- [Troubleshooting](https://shipth.is/docs/troubleshooting?ref=github_readme) - Common issues and how to fix them
|
|
400
|
+
|
|
428
401
|
## 🌍 Community
|
|
429
402
|
|
|
430
403
|
- 💬 [Join us on Discord](https://discord.gg/gPjn3S99k4)
|
|
@@ -11,14 +11,13 @@ import 'readline-sync';
|
|
|
11
11
|
import 'luxon';
|
|
12
12
|
import 'axios';
|
|
13
13
|
import 'isomorphic-git';
|
|
14
|
-
import './baseCommand-
|
|
14
|
+
import './baseCommand-ClUdS6Cn.js';
|
|
15
15
|
import '@oclif/core';
|
|
16
16
|
import '@tanstack/react-query';
|
|
17
17
|
import 'react';
|
|
18
|
-
import '
|
|
19
|
-
import 'uuid';
|
|
20
|
-
import { u as useAppleApp } from './useAppleApp-fD92orhh.js';
|
|
18
|
+
import { u as useAppleApp } from './useAppleApp-BZ1YvB2M.js';
|
|
21
19
|
import 'fast-glob';
|
|
20
|
+
import 'uuid';
|
|
22
21
|
import 'socket.io-client';
|
|
23
22
|
import 'fullscreen-ink';
|
|
24
23
|
import 'stream';
|
|
@@ -28,12 +27,12 @@ import 'strip-ansi';
|
|
|
28
27
|
import { T as Table } from './Table-FaNgpyeq.js';
|
|
29
28
|
import { T as Title } from './Title-BCQtayg6.js';
|
|
30
29
|
import 'open';
|
|
31
|
-
import './baseGameCommand-
|
|
30
|
+
import './baseGameCommand-DQ6Wj-Pk.js';
|
|
32
31
|
import 'godot-export-presets';
|
|
33
32
|
import 'marked';
|
|
34
33
|
import 'marked-terminal';
|
|
35
34
|
import 'qrcode';
|
|
36
|
-
import { u as useAppleBundleId } from './useAppleBundleId-
|
|
35
|
+
import { u as useAppleBundleId } from './useAppleBundleId-CVBg5V7b.js';
|
|
37
36
|
|
|
38
37
|
const AppleAppDetails = (props) => {
|
|
39
38
|
const { data, isLoading } = useAppleApp(props);
|
|
@@ -2,11 +2,9 @@ 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 { I as queryClient } from './baseCommand-
|
|
5
|
+
import { I as queryClient } from './baseCommand-ClUdS6Cn.js';
|
|
6
6
|
import 'axios';
|
|
7
7
|
import 'node:fs';
|
|
8
|
-
import 'crypto-js';
|
|
9
|
-
import 'uuid';
|
|
10
8
|
import 'luxon';
|
|
11
9
|
import 'node:crypto';
|
|
12
10
|
import 'node:path';
|
|
@@ -20,7 +18,8 @@ import 'socket.io-client';
|
|
|
20
18
|
import 'stream';
|
|
21
19
|
import 'yazl';
|
|
22
20
|
import 'fast-glob';
|
|
23
|
-
import
|
|
21
|
+
import 'uuid';
|
|
22
|
+
import { C as CommandProvider } from './baseGameCommand-DQ6Wj-Pk.js';
|
|
24
23
|
|
|
25
24
|
const Command = ({ children, command }) => {
|
|
26
25
|
const { width } = useScreenSize();
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { G as GameProvider } from './baseGameCommand-
|
|
3
|
-
import { C as Command } from './Command-
|
|
2
|
+
import { G as GameProvider } from './baseGameCommand-DQ6Wj-Pk.js';
|
|
3
|
+
import { C as Command } from './Command-B2Qnw47r.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 { q as getAuthedHeaders, p as API_URL } from './baseCommand-
|
|
6
|
+
import { q as getAuthedHeaders, p as API_URL } from './baseCommand-ClUdS6Cn.js';
|
|
7
7
|
import 'ink-spinner';
|
|
8
8
|
import 'node:crypto';
|
|
9
9
|
import 'node:fs';
|
|
@@ -14,7 +14,7 @@ import 'readline-sync';
|
|
|
14
14
|
import 'luxon';
|
|
15
15
|
import 'isomorphic-git';
|
|
16
16
|
import '@oclif/core';
|
|
17
|
-
import { i as GameContext, k as cacheKeys } from './baseGameCommand-
|
|
17
|
+
import { i as GameContext, k as cacheKeys } from './baseGameCommand-DQ6Wj-Pk.js';
|
|
18
18
|
import 'fast-glob';
|
|
19
19
|
import 'uuid';
|
|
20
20
|
import 'socket.io-client';
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
2
|
import { Text, Box } from 'ink';
|
|
3
3
|
import { useState, useEffect, useContext } from 'react';
|
|
4
|
-
import { c as getShortDate, P as Platform, l as getProject, M as getProjectPlatformProgress } from './baseCommand-
|
|
4
|
+
import { c as getShortDate, P as Platform, l as getProject, M as getProjectPlatformProgress } from './baseCommand-ClUdS6Cn.js';
|
|
5
5
|
import 'ink-spinner';
|
|
6
|
-
import { g as getShortUUID, m as makeHumanReadable, i as GameContext, j as CommandContext } from './baseGameCommand-
|
|
6
|
+
import { g as getShortUUID, m as makeHumanReadable, i as GameContext, j as CommandContext } from './baseGameCommand-DQ6Wj-Pk.js';
|
|
7
7
|
import '@tanstack/react-query';
|
|
8
8
|
import 'axios';
|
|
9
9
|
import 'luxon';
|
|
@@ -11,12 +11,11 @@ import 'readline-sync';
|
|
|
11
11
|
import 'luxon';
|
|
12
12
|
import 'axios';
|
|
13
13
|
import 'isomorphic-git';
|
|
14
|
-
import { I as queryClient, P as Platform, C as CredentialsType } from './baseCommand-
|
|
14
|
+
import { I as queryClient, P as Platform, C as CredentialsType } from './baseCommand-ClUdS6Cn.js';
|
|
15
15
|
import '@oclif/core';
|
|
16
16
|
import { useMutation } from '@tanstack/react-query';
|
|
17
|
-
import 'crypto-js';
|
|
18
|
-
import { v4 } from 'uuid';
|
|
19
17
|
import 'fast-glob';
|
|
18
|
+
import { v4 } from 'uuid';
|
|
20
19
|
import 'socket.io-client';
|
|
21
20
|
import 'fullscreen-ink';
|
|
22
21
|
import 'stream';
|
|
@@ -25,12 +24,12 @@ import 'string-length';
|
|
|
25
24
|
import 'strip-ansi';
|
|
26
25
|
import 'open';
|
|
27
26
|
import '@inkjs/ui';
|
|
28
|
-
import { k as cacheKeys, i as GameContext } from './baseGameCommand-
|
|
27
|
+
import { k as cacheKeys, i as GameContext } from './baseGameCommand-DQ6Wj-Pk.js';
|
|
29
28
|
import 'marked';
|
|
30
29
|
import 'marked-terminal';
|
|
31
30
|
import 'qrcode';
|
|
32
31
|
import 'godot-export-presets';
|
|
33
|
-
import { i as importCredential } from './import-
|
|
32
|
+
import { i as importCredential } from './import-CPAFgZO5.js';
|
|
34
33
|
|
|
35
34
|
async function importKeystore({ log = () => {
|
|
36
35
|
}, ...opt }) {
|
|
@@ -5,9 +5,7 @@ import { useInfiniteQuery } from '@tanstack/react-query';
|
|
|
5
5
|
import axios from 'axios';
|
|
6
6
|
import { useState, useRef, useEffect } from 'react';
|
|
7
7
|
import 'node:fs';
|
|
8
|
-
import '
|
|
9
|
-
import 'uuid';
|
|
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';
|
|
8
|
+
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-ClUdS6Cn.js';
|
|
11
9
|
import 'luxon';
|
|
12
10
|
import 'node:crypto';
|
|
13
11
|
import 'node:path';
|
|
@@ -19,10 +17,11 @@ import '@oclif/core';
|
|
|
19
17
|
import 'stream';
|
|
20
18
|
import 'yazl';
|
|
21
19
|
import 'fast-glob';
|
|
20
|
+
import 'uuid';
|
|
22
21
|
import 'socket.io-client';
|
|
23
|
-
import { k as cacheKeys, y as useJob, h as getStageColor, x as getMessageColor } from './baseGameCommand-
|
|
22
|
+
import { k as cacheKeys, y as useJob, h as getStageColor, x as getMessageColor } from './baseGameCommand-DQ6Wj-Pk.js';
|
|
24
23
|
import 'fullscreen-ink';
|
|
25
|
-
import { u as useWebSocket } from './useWebSocket-
|
|
24
|
+
import { u as useWebSocket } from './useWebSocket-Bj5fQveo.js';
|
|
26
25
|
import { T as Title } from './Title-BCQtayg6.js';
|
|
27
26
|
import stringLength from 'string-length';
|
|
28
27
|
import stripAnsi from 'strip-ansi';
|
|
@@ -2,8 +2,8 @@ import fs__default from 'node:fs';
|
|
|
2
2
|
import { useMutation } from '@tanstack/react-query';
|
|
3
3
|
import fg from 'fast-glob';
|
|
4
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-
|
|
6
|
-
import { k as cacheKeys, v as getFileHash, w as getPlatformName, x as getMessageColor } from './baseGameCommand-
|
|
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-ClUdS6Cn.js';
|
|
6
|
+
import { k as cacheKeys, v as getFileHash, w as getPlatformName, x as getMessageColor } from './baseGameCommand-DQ6Wj-Pk.js';
|
|
7
7
|
import { ZipFile } from 'yazl';
|
|
8
8
|
import { g as getCWDGitInfo } from './git-BpsfNFZ_.js';
|
|
9
9
|
import { Readable, Transform } from 'stream';
|
|
@@ -12,10 +12,9 @@ import { Box, Text } from 'ink';
|
|
|
12
12
|
import 'ink-spinner';
|
|
13
13
|
import { useState } from 'react';
|
|
14
14
|
import 'axios';
|
|
15
|
-
import 'crypto-js';
|
|
16
15
|
import 'luxon';
|
|
17
16
|
import 'socket.io-client';
|
|
18
|
-
import { u as useJobWatching, a as JobLogLine } from './JobLogTail-
|
|
17
|
+
import { u as useJobWatching, a as JobLogLine } from './JobLogTail-CJWxpIq5.js';
|
|
19
18
|
import 'fullscreen-ink';
|
|
20
19
|
import 'open';
|
|
21
20
|
import '@inkjs/ui';
|
|
@@ -3,16 +3,15 @@ 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-ClUdS6Cn.js';
|
|
7
7
|
import '@tanstack/react-query';
|
|
8
8
|
import 'axios';
|
|
9
9
|
import 'node:fs';
|
|
10
|
-
import '
|
|
11
|
-
import 'uuid';
|
|
12
|
-
import { e as getJobSummary, h as getStageColor, f as getJobStatusColor } from './baseGameCommand-P7Vyz2vZ.js';
|
|
10
|
+
import { e as getJobSummary, h as getStageColor, f as getJobStatusColor } from './baseGameCommand-DQ6Wj-Pk.js';
|
|
13
11
|
import 'fast-glob';
|
|
12
|
+
import 'uuid';
|
|
14
13
|
import 'socket.io-client';
|
|
15
|
-
import { u as useJobWatching } from './JobLogTail-
|
|
14
|
+
import { u as useJobWatching } from './JobLogTail-CJWxpIq5.js';
|
|
16
15
|
import 'fullscreen-ink';
|
|
17
16
|
import { a as StatusRow, b as StatusRowLabel } from './StatusTable-DzRWcMr4.js';
|
|
18
17
|
import { T as Title } from './Title-BCQtayg6.js';
|
|
@@ -10,14 +10,13 @@ import 'readline-sync';
|
|
|
10
10
|
import 'luxon';
|
|
11
11
|
import 'axios';
|
|
12
12
|
import 'isomorphic-git';
|
|
13
|
-
import './baseCommand-
|
|
13
|
+
import './baseCommand-ClUdS6Cn.js';
|
|
14
14
|
import '@oclif/core';
|
|
15
15
|
import '@tanstack/react-query';
|
|
16
16
|
import 'react';
|
|
17
|
-
import '
|
|
18
|
-
import 'uuid';
|
|
19
|
-
import { u as useProjectCredentials, g as getProjectCredentialSummary } from './useProjectCredentials-DLYLMlJh.js';
|
|
17
|
+
import { u as useProjectCredentials, g as getProjectCredentialSummary } from './useProjectCredentials-Dv0DF2rA.js';
|
|
20
18
|
import 'fast-glob';
|
|
19
|
+
import 'uuid';
|
|
21
20
|
import 'socket.io-client';
|
|
22
21
|
import 'fullscreen-ink';
|
|
23
22
|
import 'stream';
|
|
@@ -10,14 +10,13 @@ import 'readline-sync';
|
|
|
10
10
|
import 'luxon';
|
|
11
11
|
import axios from 'axios';
|
|
12
12
|
import 'isomorphic-git';
|
|
13
|
-
import { c as getShortDate, q as getAuthedHeaders, p as API_URL, H as castArrayObjectDates } from './baseCommand-
|
|
13
|
+
import { c as getShortDate, q as getAuthedHeaders, p as API_URL, H as castArrayObjectDates } from './baseCommand-ClUdS6Cn.js';
|
|
14
14
|
import '@oclif/core';
|
|
15
15
|
import { useQuery } from '@tanstack/react-query';
|
|
16
16
|
import 'react';
|
|
17
|
-
import 'crypto-js';
|
|
18
|
-
import 'uuid';
|
|
19
17
|
import 'fast-glob';
|
|
20
|
-
import
|
|
18
|
+
import 'uuid';
|
|
19
|
+
import { k as cacheKeys, g as getShortUUID } from './baseGameCommand-DQ6Wj-Pk.js';
|
|
21
20
|
import 'socket.io-client';
|
|
22
21
|
import 'fullscreen-ink';
|
|
23
22
|
import 'stream';
|
|
@@ -4,8 +4,6 @@ import path__default from 'node:path';
|
|
|
4
4
|
import chalk from 'chalk';
|
|
5
5
|
import { Flags, Command } from '@oclif/core';
|
|
6
6
|
import axios from 'axios';
|
|
7
|
-
import CryptoJS from 'crypto-js';
|
|
8
|
-
import { v4 } from 'uuid';
|
|
9
7
|
import { DateTime } from 'luxon';
|
|
10
8
|
import * as expo from '@expo/apple-utils/build/index.js';
|
|
11
9
|
import 'node:crypto';
|
|
@@ -17,6 +15,7 @@ import { getMajorVersion, loadExportPresets, findPreset, getBasePreset, saveExpo
|
|
|
17
15
|
import { QueryClient } from '@tanstack/react-query';
|
|
18
16
|
import 'react';
|
|
19
17
|
import 'fast-glob';
|
|
18
|
+
import 'uuid';
|
|
20
19
|
import 'socket.io-client';
|
|
21
20
|
import 'fullscreen-ink';
|
|
22
21
|
import 'ink';
|
|
@@ -237,23 +236,12 @@ async function getSingleUseUrl(destination) {
|
|
|
237
236
|
return url;
|
|
238
237
|
}
|
|
239
238
|
async function getShortAuthRequiredUrl(destination) {
|
|
240
|
-
const { email } = await getSelf();
|
|
241
|
-
const key = v4();
|
|
242
|
-
const salt = "Na (s) + 1/2 Cl\u2082 (g) \u2192 NaCl (s)";
|
|
243
|
-
const fullKey = `${key}${salt}`;
|
|
244
|
-
const token = CryptoJS.AES.encrypt(email, fullKey).toString();
|
|
245
|
-
const params = {
|
|
246
|
-
destination,
|
|
247
|
-
key,
|
|
248
|
-
token
|
|
249
|
-
};
|
|
250
|
-
const queryString = Object.entries(params).map(([key2, value]) => `${key2}=${encodeURIComponent(`${value}`)}`).join("&");
|
|
251
|
-
const url = `${WEB_URL}login/?${queryString}`;
|
|
252
239
|
const headers = await getAuthedHeaders();
|
|
253
240
|
const { data } = await axios.post(
|
|
254
|
-
`${API_URL}/me/
|
|
241
|
+
`${API_URL}/me/login-link`,
|
|
255
242
|
{
|
|
256
|
-
|
|
243
|
+
destination,
|
|
244
|
+
webUrl: WEB_URL
|
|
257
245
|
},
|
|
258
246
|
{ headers }
|
|
259
247
|
);
|
|
@@ -434,23 +422,135 @@ var BuildType = /* @__PURE__ */ ((BuildType2) => {
|
|
|
434
422
|
return BuildType2;
|
|
435
423
|
})(BuildType || {});
|
|
436
424
|
|
|
425
|
+
const ENTITLEMENT_KEY_TO_CAPABILITY = {
|
|
426
|
+
"com.apple.developer.applesignin": { name: "Sign in with Apple", type: CapabilityType.APPLE_ID_AUTH },
|
|
427
|
+
"com.apple.developer.game-center": { name: "Game Center", type: CapabilityType.GAME_CENTER },
|
|
428
|
+
"com.apple.developer.healthkit": { name: "HealthKit", type: CapabilityType.HEALTH_KIT },
|
|
429
|
+
"com.apple.developer.healthkit.recalibrate-estimates": {
|
|
430
|
+
name: "HealthKit Recalibrate Estimates",
|
|
431
|
+
type: CapabilityType.HEALTH_KIT_RECALIBRATE_ESTIMATES
|
|
432
|
+
},
|
|
433
|
+
"com.apple.developer.homekit": { name: "HomeKit", type: CapabilityType.HOME_KIT },
|
|
434
|
+
"com.apple.developer.associated-domains": {
|
|
435
|
+
name: "Associated Domains",
|
|
436
|
+
type: CapabilityType.ASSOCIATED_DOMAINS
|
|
437
|
+
},
|
|
438
|
+
"com.apple.developer.authentication-services.autofill-credential-provider": {
|
|
439
|
+
name: "AutoFill Credential Provider",
|
|
440
|
+
type: CapabilityType.AUTO_FILL_CREDENTIAL
|
|
441
|
+
},
|
|
442
|
+
"com.apple.developer.ClassKit-environment": { name: "ClassKit", type: CapabilityType.CLASS_KIT },
|
|
443
|
+
"com.apple.developer.family-controls": {
|
|
444
|
+
name: "Family Controls",
|
|
445
|
+
type: CapabilityType.FAMILY_CONTROLS
|
|
446
|
+
},
|
|
447
|
+
"com.apple.developer.group-session": {
|
|
448
|
+
name: "Group Activities",
|
|
449
|
+
type: CapabilityType.GROUP_ACTIVITIES
|
|
450
|
+
},
|
|
451
|
+
"com.apple.developer.fileprovider.testing-mode": {
|
|
452
|
+
name: "File Provider Testing Mode",
|
|
453
|
+
type: CapabilityType.FILE_PROVIDER_TESTING_MODE
|
|
454
|
+
},
|
|
455
|
+
"com.apple.developer.networking.networkextension": {
|
|
456
|
+
name: "Network Extensions",
|
|
457
|
+
type: CapabilityType.NETWORK_EXTENSIONS
|
|
458
|
+
},
|
|
459
|
+
"com.apple.developer.networking.vpn.api": {
|
|
460
|
+
name: "Personal VPN",
|
|
461
|
+
type: CapabilityType.PERSONAL_VPN
|
|
462
|
+
},
|
|
463
|
+
"com.apple.developer.in-app-payments": { name: "Apple Pay", type: CapabilityType.APPLE_PAY },
|
|
464
|
+
"com.apple.developer.kernel.extended-virtual-addressing": {
|
|
465
|
+
name: "Extended Virtual Addressing",
|
|
466
|
+
type: CapabilityType.EXTENDED_VIRTUAL_ADDRESSING
|
|
467
|
+
},
|
|
468
|
+
"com.apple.developer.journal.allow": {
|
|
469
|
+
name: "Journaling Suggestions",
|
|
470
|
+
type: CapabilityType.JOURNALING_SUGGESTIONS
|
|
471
|
+
},
|
|
472
|
+
"com.apple.developer.managed-app-distribution.install-ui": {
|
|
473
|
+
name: "Managed App Installation UI",
|
|
474
|
+
type: CapabilityType.MANAGED_APP_INSTALLATION_UI
|
|
475
|
+
},
|
|
476
|
+
"com.apple.developer.media-device-discovery-extension": {
|
|
477
|
+
name: "Media Device Discovery",
|
|
478
|
+
type: CapabilityType.MEDIA_DEVICE_DISCOVERY
|
|
479
|
+
},
|
|
480
|
+
"com.apple.developer.matter.allow-setup-payload": {
|
|
481
|
+
name: "Matter Allow Setup Payload",
|
|
482
|
+
type: CapabilityType.MATTER_ALLOW_SETUP_PAYLOAD
|
|
483
|
+
},
|
|
484
|
+
"com.apple.developer.sustained-execution": {
|
|
485
|
+
name: "Sustained Execution",
|
|
486
|
+
type: CapabilityType.SUSTAINED_EXECUTION
|
|
487
|
+
},
|
|
488
|
+
"com.apple.security.application-groups": { name: "App Groups", type: CapabilityType.APP_GROUP }
|
|
489
|
+
};
|
|
490
|
+
const KEY_ELEMENT_REGEX = /<key>\s*([^<]+?)\s*<\/key>/g;
|
|
491
|
+
function parseEntitlementsAdditional(raw) {
|
|
492
|
+
const types = [];
|
|
493
|
+
if (!raw || typeof raw !== "string") return types;
|
|
494
|
+
let match;
|
|
495
|
+
KEY_ELEMENT_REGEX.lastIndex = 0;
|
|
496
|
+
while ((match = KEY_ELEMENT_REGEX.exec(raw)) !== null) {
|
|
497
|
+
const key = match[1].trim();
|
|
498
|
+
const entry = ENTITLEMENT_KEY_TO_CAPABILITY[key];
|
|
499
|
+
if (entry && !types.includes(entry.type)) types.push(entry.type);
|
|
500
|
+
}
|
|
501
|
+
return types;
|
|
502
|
+
}
|
|
503
|
+
|
|
437
504
|
function isCWDGodotGame() {
|
|
438
505
|
const cwd = process.cwd();
|
|
439
506
|
const godotProject = path__default.join(cwd, "project.godot");
|
|
440
507
|
return fs__default.existsSync(godotProject);
|
|
441
508
|
}
|
|
442
|
-
const
|
|
443
|
-
// TODO: how about capabilities from godot extensions
|
|
509
|
+
const GODOT_SYNCABLE_CAPABILITIES = [
|
|
444
510
|
{ key: "capabilities/access_wifi", name: "Access WiFi", type: CapabilityType.ACCESS_WIFI },
|
|
445
|
-
{ key: "
|
|
511
|
+
{ key: "entitlements/increased_memory_limit", name: "Increased Memory Limit", type: CapabilityType.INCREASED_MEMORY_LIMIT },
|
|
512
|
+
{ key: "entitlements/game_center", name: "Game Center", type: CapabilityType.GAME_CENTER },
|
|
513
|
+
{ key: "entitlements/push_notifications", name: "Push Notifications", type: CapabilityType.PUSH_NOTIFICATIONS, pushKey: true }
|
|
514
|
+
];
|
|
515
|
+
const syncableTypes = new Set(GODOT_SYNCABLE_CAPABILITIES.map((c) => c.type));
|
|
516
|
+
const GODOT_CAPABILITIES = [
|
|
517
|
+
...GODOT_SYNCABLE_CAPABILITIES,
|
|
518
|
+
...Object.entries(ENTITLEMENT_KEY_TO_CAPABILITY).filter(([, { type }]) => !syncableTypes.has(type)).map(([key, { name, type }]) => ({
|
|
519
|
+
key: `entitlements/additional (${key})`,
|
|
520
|
+
name,
|
|
521
|
+
type
|
|
522
|
+
}))
|
|
446
523
|
];
|
|
447
|
-
|
|
448
|
-
const
|
|
449
|
-
|
|
524
|
+
function isPushEnabled(options) {
|
|
525
|
+
const entitlementsPush = options["entitlements/push_notifications"];
|
|
526
|
+
if (entitlementsPush != null) {
|
|
527
|
+
const s = `${entitlementsPush}`.trim().toLowerCase();
|
|
528
|
+
if (s === "production" || s === "development") return true;
|
|
529
|
+
if (s === "disabled") return false;
|
|
530
|
+
}
|
|
531
|
+
const legacyPush = options["capabilities/push_notifications"];
|
|
532
|
+
if (legacyPush != null) {
|
|
533
|
+
return `${legacyPush}`.toLowerCase() === "true";
|
|
534
|
+
}
|
|
535
|
+
return false;
|
|
536
|
+
}
|
|
537
|
+
async function getGodotProjectCapabilities(platform, overrides) {
|
|
538
|
+
const options = (await getGodotExportPresets(platform)).options ?? {};
|
|
450
539
|
const capabilities = [];
|
|
451
|
-
for (const capability of
|
|
540
|
+
for (const capability of GODOT_SYNCABLE_CAPABILITIES) {
|
|
541
|
+
if (capability.pushKey) {
|
|
542
|
+
if (isPushEnabled(options)) capabilities.push(capability.type);
|
|
543
|
+
continue;
|
|
544
|
+
}
|
|
452
545
|
if (!(capability.key in options)) continue;
|
|
453
|
-
if (`${options[capability.key]}`.
|
|
546
|
+
if (`${options[capability.key]}`.toLowerCase() === "true") capabilities.push(capability.type);
|
|
547
|
+
}
|
|
548
|
+
const additionalRaw = options["entitlements/additional"];
|
|
549
|
+
const fromAdditional = parseEntitlementsAdditional(
|
|
550
|
+
typeof additionalRaw === "string" ? additionalRaw : ""
|
|
551
|
+
);
|
|
552
|
+
for (const type of fromAdditional) {
|
|
553
|
+
if (!capabilities.includes(type)) capabilities.push(type);
|
|
454
554
|
}
|
|
455
555
|
return capabilities;
|
|
456
556
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { O as getGoogleStatus, Q as getGodotAndroidPackageName } from './baseCommand-
|
|
2
|
-
import { c as BaseGameCommand, d as generatePackageName, b as getInput } from './baseGameCommand-
|
|
1
|
+
import { O as getGoogleStatus, Q as getGodotAndroidPackageName } from './baseCommand-ClUdS6Cn.js';
|
|
2
|
+
import { c as BaseGameCommand, d as generatePackageName, b as getInput } from './baseGameCommand-DQ6Wj-Pk.js';
|
|
3
3
|
|
|
4
4
|
class BaseGameAndroidCommand extends BaseGameCommand {
|
|
5
5
|
async checkGoogleAuth(waitForAuth = false) {
|