shipthis 0.1.44 → 0.1.46
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 +6 -45
- package/dist/{AppleBundleIdDetails-DSTNVuCE.js → AppleBundleIdDetails-DogjUozj.js} +4 -4
- package/dist/{Command-CUAYljjP.js → Command-CWKSGrtu.js} +2 -2
- package/dist/{CommandGame-DpCdhjIa.js → CommandGame-B7EQbgMq.js} +2 -2
- package/dist/{Create-CrvCt5uP.js → Create-DVnctE1E.js} +2 -2
- package/dist/{GameStatus-4GPzUgCD.js → GameStatus-DbwQmv4w.js} +2 -2
- package/dist/{Import-BXH6fSxe.js → Import-OqdHUTRB.js} +3 -3
- package/dist/{JobLogTail-CNw7TQdK.js → JobLogTail-D-IhoJDu.js} +4 -4
- package/dist/{JobProgress-BbklmvdG.js → JobProgress-C24YiJOA.js} +4 -4
- package/dist/{JobStatusTable-L4wAk8Ns.js → JobStatusTable-BrfiBJ2p.js} +3 -3
- package/dist/{ProjectCredentialsTable-BfMmJ7AU.js → ProjectCredentialsTable-DyUiZFwz.js} +2 -2
- package/dist/{UserCredentialsTable-081xdlb9.js → UserCredentialsTable-DBasvwqB.js} +2 -2
- package/dist/{baseAppleCommand-DDQU5PTs.js → baseAppleCommand-Dfzhp492.js} +1 -1
- package/dist/{baseCommand-CdsX3LS8.js → baseCommand-B7pUDBYl.js} +123 -11
- package/dist/{baseGameAndroidCommand-CAQVvU3i.js → baseGameAndroidCommand-BhridFzb.js} +2 -2
- package/dist/{baseGameCommand-CCyAhN-V.js → baseGameCommand-BTC5XD8W.js} +47 -47
- package/dist/commands/apiKey/create.js +3 -3
- package/dist/commands/apiKey/list.js +3 -3
- package/dist/commands/apiKey/revoke.js +3 -3
- package/dist/commands/apple/apiKey/create.js +9 -9
- package/dist/commands/apple/apiKey/delete.js +6 -6
- package/dist/commands/apple/apiKey/export.js +5 -5
- package/dist/commands/apple/apiKey/import.js +5 -5
- package/dist/commands/apple/apiKey/status.js +4 -4
- package/dist/commands/apple/certificate/create.js +9 -9
- package/dist/commands/apple/certificate/delete.js +6 -6
- package/dist/commands/apple/certificate/export.js +5 -5
- package/dist/commands/apple/certificate/import.js +5 -5
- package/dist/commands/apple/certificate/status.js +4 -4
- package/dist/commands/apple/login.js +2 -2
- package/dist/commands/apple/status.js +4 -4
- package/dist/commands/dashboard.js +3 -3
- 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 +6 -6
- 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 +8 -8
- 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 +6 -6
- 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 +9 -9
- package/dist/commands/game/android/status.js +7 -7
- package/dist/commands/game/build/download.js +6 -6
- package/dist/commands/game/build/list.js +7 -7
- package/dist/commands/game/create.js +2 -2
- package/dist/commands/game/details.js +5 -5
- package/dist/commands/game/export.js +2 -2
- package/dist/commands/game/ios/app/addTester.js +6 -6
- package/dist/commands/game/ios/app/create.js +5 -5
- 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 +12 -10
- 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 +3 -3
- package/dist/commands/game/job/list.js +6 -6
- package/dist/commands/game/job/status.js +9 -9
- package/dist/commands/game/list.js +3 -3
- package/dist/commands/game/ship.js +8 -8
- package/dist/commands/game/status.js +5 -5
- package/dist/commands/game/wizard.js +34 -34
- package/dist/commands/internal/fastlane.js +2 -2
- package/dist/commands/internal/readme.js +2 -2
- package/dist/commands/login.js +2 -2
- package/dist/commands/status.js +4 -4
- package/dist/commands/util/android-build-method.js +2 -2
- package/dist/commands/util/glass.js +2 -2
- package/dist/{export-4rGFZrzT.js → export-7GgsEM8k.js} +1 -1
- package/dist/{import-C9i4RAW6.js → import-DKibfocC.js} +1 -1
- package/dist/{index-B-7dXz3a.js → index-3FFnBAwx.js} +5 -5
- package/dist/{index-DBy7ImFs.js → index-B_dXK-Zt.js} +1 -1
- package/dist/{index-CQKTbsum.js → index-BeGDjWvi.js} +5 -4
- package/dist/index.js +0 -0
- package/dist/{upload-DWm3upu4.js → upload-DGY-glMy.js} +1 -1
- package/dist/{useAppleApp-B0I5eZYx.js → useAppleApp-DRJf8q6R.js} +1 -1
- package/dist/{useAppleBundleId-D4Uk-B7k.js → useAppleBundleId-B-5a-soi.js} +1 -1
- package/dist/{useAppleProfiles-YAcyvQa0.js → useAppleProfiles-BXXI2MAc.js} +1 -1
- package/dist/{useGoogleStatus-CMZyzdD6.js → useGoogleStatus-CETX9Rbw.js} +2 -2
- package/dist/{useProjectCredentials-8rTRb2Y7.js → useProjectCredentials-AV_OlZEu.js} +2 -2
- package/dist/{useWebSocket-CFc1M_mq.js → useWebSocket-DgYLiSrd.js} +1 -1
- package/dist/utils/help.js +0 -0
- package/docs/game/ios/app.md +11 -14
- package/npm-shrinkwrap.json +5143 -4990
- package/oclif.manifest.json +1 -1
- package/package.json +16 -11
package/README.md
CHANGED
|
@@ -49,7 +49,7 @@ 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
|
|
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
53
|
|
|
54
54
|
```bash
|
|
55
55
|
shipthis game wizard android
|
|
@@ -109,7 +109,7 @@ We support **all stable Godot versions since 3.6**, including:
|
|
|
109
109
|
|
|
110
110
|
| [3.6](https://github.com/godotengine/godot/releases/tag/3.6-stable) | [4.0](https://github.com/godotengine/godot/releases/tag/4.0-stable) | [4.1](https://github.com/godotengine/godot/releases/tag/4.1-stable) | [4.2](https://github.com/godotengine/godot/releases/tag/4.2-stable) | [4.3](https://github.com/godotengine/godot/releases/tag/4.3-stable) | [4.4](https://github.com/godotengine/godot/releases/tag/4.4-stable) | [4.5](https://github.com/godotengine/godot/releases/tag/4.5-stable) | [4.6](https://github.com/godotengine/godot/releases/tag/4.6-stable) |
|
|
111
111
|
| ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ |
|
|
112
|
-
| [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) |
|
|
113
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) | | |
|
|
114
114
|
| | [4.0.3](https://github.com/godotengine/godot/releases/tag/4.0.3-stable) | [4.1.3](https://github.com/godotengine/godot/releases/tag/4.1.3-stable) | [4.2.3 *](https://github.com/shipth-is/godot-android-sdk-upgrade/releases/tag/4.2.3-d33f443) | | | | |
|
|
115
115
|
| | [4.0.4](https://github.com/godotengine/godot/releases/tag/4.0.4-stable) | [4.1.4](https://github.com/godotengine/godot/releases/tag/4.1.4-stable) | | | | | |
|
|
@@ -368,49 +368,9 @@ We store:
|
|
|
368
368
|
|
|
369
369
|
### What happens to my files when I run the command `shipthis game ship`?
|
|
370
370
|
|
|
371
|
-
|
|
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.
|
|
372
372
|
|
|
373
|
-
|
|
374
|
-
Your game files are packaged locally on your machine:
|
|
375
|
-
|
|
376
|
-
- Files matching `shippedFilesGlobs` in `shipthis.json` are included
|
|
377
|
-
- Files matching `ignoredFilesGlobs` are excluded
|
|
378
|
-
|
|
379
|
-
The zip file is then uploaded directly from your computer to a private DigitalOcean Space using the temporary upload URL.
|
|
380
|
-
|
|
381
|
-
#### 2. Where the files are stored
|
|
382
|
-
|
|
383
|
-
The uploaded zip lives in a private DigitalOcean Space. The space is not public and cannot be browsed.
|
|
384
|
-
|
|
385
|
-
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.
|
|
386
|
-
|
|
387
|
-
This storage is used for:
|
|
388
|
-
|
|
389
|
-
- Providing a build machine access to your game files
|
|
390
|
-
- Storing the resulting build outputs (APK/AAB/IPA)
|
|
391
|
-
|
|
392
|
-
#### 3. How build machines access your code
|
|
393
|
-
|
|
394
|
-
Build machines do not have general access to storage of game files or credentials.
|
|
395
|
-
|
|
396
|
-
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.
|
|
397
|
-
|
|
398
|
-
Build machines cannot browse files or access anything outside the job that they are currently running.
|
|
399
|
-
|
|
400
|
-
#### 4. Cleanup after the build
|
|
401
|
-
|
|
402
|
-
After a build machine has completed a job, a cleanup routine is run which deletes:
|
|
403
|
-
|
|
404
|
-
- Downloaded and extracted game files
|
|
405
|
-
- Build intermediates
|
|
406
|
-
- Temporary files
|
|
407
|
-
|
|
408
|
-
The build machines do not keep user files after a job completes.
|
|
409
|
-
|
|
410
|
-
#### 5. Retention and deletion
|
|
411
|
-
|
|
412
|
-
- Uploaded game file zips and build outputs (APK/AAB/IPA) are retained for **30 days**
|
|
413
|
-
- 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.
|
|
414
374
|
|
|
415
375
|
## 📖 Command Reference
|
|
416
376
|
|
|
@@ -432,8 +392,9 @@ The build machines do not keep user files after a job completes.
|
|
|
432
392
|
### 📚 Guides
|
|
433
393
|
|
|
434
394
|
- [Quick start](https://shipth.is/docs/guides/quick-start?ref=github_readme) - Get your first build running in minutes
|
|
435
|
-
- [Android
|
|
395
|
+
- [Android export methods](https://shipth.is/docs/guides/android-export-methods?ref=github_readme) - Gradle vs legacy builds, APK & AAB output
|
|
436
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
|
|
437
398
|
- [Liquid Glass icons](https://shipth.is/docs/guides/liquid-glass?ref=github_readme) - Use Liquid Glass icons with your iOS game
|
|
438
399
|
- [Troubleshooting](https://shipth.is/docs/troubleshooting?ref=github_readme) - Common issues and how to fix them
|
|
439
400
|
|
|
@@ -11,11 +11,11 @@ import 'readline-sync';
|
|
|
11
11
|
import 'luxon';
|
|
12
12
|
import 'axios';
|
|
13
13
|
import 'isomorphic-git';
|
|
14
|
-
import './baseCommand-
|
|
14
|
+
import './baseCommand-B7pUDBYl.js';
|
|
15
15
|
import '@oclif/core';
|
|
16
16
|
import '@tanstack/react-query';
|
|
17
17
|
import 'react';
|
|
18
|
-
import { u as useAppleApp } from './useAppleApp-
|
|
18
|
+
import { u as useAppleApp } from './useAppleApp-DRJf8q6R.js';
|
|
19
19
|
import 'fast-glob';
|
|
20
20
|
import 'uuid';
|
|
21
21
|
import 'socket.io-client';
|
|
@@ -27,12 +27,12 @@ import 'strip-ansi';
|
|
|
27
27
|
import { T as Table } from './Table-FaNgpyeq.js';
|
|
28
28
|
import { T as Title } from './Title-BCQtayg6.js';
|
|
29
29
|
import 'open';
|
|
30
|
-
import './baseGameCommand-
|
|
30
|
+
import './baseGameCommand-BTC5XD8W.js';
|
|
31
31
|
import 'godot-export-presets';
|
|
32
32
|
import 'marked';
|
|
33
33
|
import 'marked-terminal';
|
|
34
34
|
import 'qrcode';
|
|
35
|
-
import { u as useAppleBundleId } from './useAppleBundleId-
|
|
35
|
+
import { u as useAppleBundleId } from './useAppleBundleId-B-5a-soi.js';
|
|
36
36
|
|
|
37
37
|
const AppleAppDetails = (props) => {
|
|
38
38
|
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 { I as queryClient } from './baseCommand-
|
|
5
|
+
import { I as queryClient } from './baseCommand-B7pUDBYl.js';
|
|
6
6
|
import 'axios';
|
|
7
7
|
import 'node:fs';
|
|
8
8
|
import 'luxon';
|
|
@@ -19,7 +19,7 @@ import 'stream';
|
|
|
19
19
|
import 'yazl';
|
|
20
20
|
import 'fast-glob';
|
|
21
21
|
import 'uuid';
|
|
22
|
-
import { C as CommandProvider } from './baseGameCommand-
|
|
22
|
+
import { C as CommandProvider } from './baseGameCommand-BTC5XD8W.js';
|
|
23
23
|
|
|
24
24
|
const Command = ({ children, command }) => {
|
|
25
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-BTC5XD8W.js';
|
|
3
|
+
import { C as Command } from './Command-CWKSGrtu.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-B7pUDBYl.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-BTC5XD8W.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-B7pUDBYl.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-BTC5XD8W.js';
|
|
7
7
|
import '@tanstack/react-query';
|
|
8
8
|
import 'axios';
|
|
9
9
|
import 'luxon';
|
|
@@ -11,7 +11,7 @@ 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-B7pUDBYl.js';
|
|
15
15
|
import '@oclif/core';
|
|
16
16
|
import { useMutation } from '@tanstack/react-query';
|
|
17
17
|
import 'fast-glob';
|
|
@@ -24,12 +24,12 @@ import 'string-length';
|
|
|
24
24
|
import 'strip-ansi';
|
|
25
25
|
import 'open';
|
|
26
26
|
import '@inkjs/ui';
|
|
27
|
-
import { k as cacheKeys, i as GameContext } from './baseGameCommand-
|
|
27
|
+
import { k as cacheKeys, i as GameContext } from './baseGameCommand-BTC5XD8W.js';
|
|
28
28
|
import 'marked';
|
|
29
29
|
import 'marked-terminal';
|
|
30
30
|
import 'qrcode';
|
|
31
31
|
import 'godot-export-presets';
|
|
32
|
-
import { i as importCredential } from './import-
|
|
32
|
+
import { i as importCredential } from './import-DKibfocC.js';
|
|
33
33
|
|
|
34
34
|
async function importKeystore({ log = () => {
|
|
35
35
|
}, ...opt }) {
|
|
@@ -5,7 +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 { q as getAuthedHeaders, p as API_URL, H as castArrayObjectDates, J as JobStatus, a8 as castJobDates, a6 as castObjectDates, a9 as getShortTime } from './baseCommand-
|
|
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-B7pUDBYl.js';
|
|
9
9
|
import 'luxon';
|
|
10
10
|
import 'node:crypto';
|
|
11
11
|
import 'node:path';
|
|
@@ -19,12 +19,12 @@ import 'yazl';
|
|
|
19
19
|
import 'fast-glob';
|
|
20
20
|
import 'uuid';
|
|
21
21
|
import 'socket.io-client';
|
|
22
|
-
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-BTC5XD8W.js';
|
|
23
23
|
import 'fullscreen-ink';
|
|
24
|
-
import { u as useWebSocket } from './useWebSocket-
|
|
25
|
-
import { T as Title } from './Title-BCQtayg6.js';
|
|
24
|
+
import { u as useWebSocket } from './useWebSocket-DgYLiSrd.js';
|
|
26
25
|
import stringLength from 'string-length';
|
|
27
26
|
import stripAnsi from 'strip-ansi';
|
|
27
|
+
import { T as Title } from './Title-BCQtayg6.js';
|
|
28
28
|
|
|
29
29
|
function arrayToDictionary(array, key = "id") {
|
|
30
30
|
return array.reduce((a, i) => {
|
|
@@ -2,19 +2,19 @@ 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-B7pUDBYl.js';
|
|
6
|
+
import { k as cacheKeys, v as getFileHash, w as getPlatformName, x as getMessageColor } from './baseGameCommand-BTC5XD8W.js';
|
|
7
7
|
import { ZipFile } from 'yazl';
|
|
8
8
|
import { g as getCWDGitInfo } from './git-BpsfNFZ_.js';
|
|
9
9
|
import { Readable, Transform } from 'stream';
|
|
10
10
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
11
11
|
import { Box, Text } from 'ink';
|
|
12
|
-
import 'ink-spinner';
|
|
13
12
|
import { useState } from 'react';
|
|
13
|
+
import 'ink-spinner';
|
|
14
14
|
import 'axios';
|
|
15
15
|
import 'luxon';
|
|
16
16
|
import 'socket.io-client';
|
|
17
|
-
import { u as useJobWatching, a as JobLogLine } from './JobLogTail-
|
|
17
|
+
import { u as useJobWatching, a as JobLogLine } from './JobLogTail-D-IhoJDu.js';
|
|
18
18
|
import 'fullscreen-ink';
|
|
19
19
|
import 'open';
|
|
20
20
|
import '@inkjs/ui';
|
|
@@ -3,15 +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-B7pUDBYl.js';
|
|
7
7
|
import '@tanstack/react-query';
|
|
8
8
|
import 'axios';
|
|
9
9
|
import 'node:fs';
|
|
10
|
-
import { e as getJobSummary, h as getStageColor, f as getJobStatusColor } from './baseGameCommand-
|
|
10
|
+
import { e as getJobSummary, h as getStageColor, f as getJobStatusColor } from './baseGameCommand-BTC5XD8W.js';
|
|
11
11
|
import 'fast-glob';
|
|
12
12
|
import 'uuid';
|
|
13
13
|
import 'socket.io-client';
|
|
14
|
-
import { u as useJobWatching } from './JobLogTail-
|
|
14
|
+
import { u as useJobWatching } from './JobLogTail-D-IhoJDu.js';
|
|
15
15
|
import 'fullscreen-ink';
|
|
16
16
|
import { a as StatusRow, b as StatusRowLabel } from './StatusTable-DzRWcMr4.js';
|
|
17
17
|
import { T as Title } from './Title-BCQtayg6.js';
|
|
@@ -10,11 +10,11 @@ import 'readline-sync';
|
|
|
10
10
|
import 'luxon';
|
|
11
11
|
import 'axios';
|
|
12
12
|
import 'isomorphic-git';
|
|
13
|
-
import './baseCommand-
|
|
13
|
+
import './baseCommand-B7pUDBYl.js';
|
|
14
14
|
import '@oclif/core';
|
|
15
15
|
import '@tanstack/react-query';
|
|
16
16
|
import 'react';
|
|
17
|
-
import { u as useProjectCredentials, g as getProjectCredentialSummary } from './useProjectCredentials-
|
|
17
|
+
import { u as useProjectCredentials, g as getProjectCredentialSummary } from './useProjectCredentials-AV_OlZEu.js';
|
|
18
18
|
import 'fast-glob';
|
|
19
19
|
import 'uuid';
|
|
20
20
|
import 'socket.io-client';
|
|
@@ -10,13 +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-B7pUDBYl.js';
|
|
14
14
|
import '@oclif/core';
|
|
15
15
|
import { useQuery } from '@tanstack/react-query';
|
|
16
16
|
import 'react';
|
|
17
17
|
import 'fast-glob';
|
|
18
18
|
import 'uuid';
|
|
19
|
-
import { k as cacheKeys, g as getShortUUID } from './baseGameCommand-
|
|
19
|
+
import { k as cacheKeys, g as getShortUUID } from './baseGameCommand-BTC5XD8W.js';
|
|
20
20
|
import 'socket.io-client';
|
|
21
21
|
import 'fullscreen-ink';
|
|
22
22
|
import 'stream';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as fs from 'node:fs';
|
|
2
2
|
import fs__default from 'node:fs';
|
|
3
3
|
import path__default from 'node:path';
|
|
4
|
-
import chalk from 'chalk';
|
|
5
4
|
import { Flags, Command } from '@oclif/core';
|
|
5
|
+
import chalk from 'chalk';
|
|
6
6
|
import axios from 'axios';
|
|
7
7
|
import { DateTime } from 'luxon';
|
|
8
8
|
import * as expo from '@expo/apple-utils/build/index.js';
|
|
@@ -422,23 +422,135 @@ var BuildType = /* @__PURE__ */ ((BuildType2) => {
|
|
|
422
422
|
return BuildType2;
|
|
423
423
|
})(BuildType || {});
|
|
424
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
|
+
|
|
425
504
|
function isCWDGodotGame() {
|
|
426
505
|
const cwd = process.cwd();
|
|
427
506
|
const godotProject = path__default.join(cwd, "project.godot");
|
|
428
507
|
return fs__default.existsSync(godotProject);
|
|
429
508
|
}
|
|
430
|
-
const
|
|
431
|
-
// TODO: how about capabilities from godot extensions
|
|
509
|
+
const GODOT_SYNCABLE_CAPABILITIES = [
|
|
432
510
|
{ key: "capabilities/access_wifi", name: "Access WiFi", type: CapabilityType.ACCESS_WIFI },
|
|
433
|
-
{ 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
|
+
}))
|
|
434
523
|
];
|
|
435
|
-
|
|
436
|
-
const
|
|
437
|
-
|
|
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 ?? {};
|
|
438
539
|
const capabilities = [];
|
|
439
|
-
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
|
+
}
|
|
440
545
|
if (!(capability.key in options)) continue;
|
|
441
|
-
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);
|
|
442
554
|
}
|
|
443
555
|
return capabilities;
|
|
444
556
|
}
|
|
@@ -481,7 +593,7 @@ async function getGodotAndroidPackageName() {
|
|
|
481
593
|
}
|
|
482
594
|
function getGodotVersion() {
|
|
483
595
|
const projectGodotConfig = getGodotProjectConfig();
|
|
484
|
-
const features = projectGodotConfig.get_value("application", "config/features");
|
|
596
|
+
const features = projectGodotConfig.get_value("application", "config/features", []);
|
|
485
597
|
if (!features || features.length === 0) {
|
|
486
598
|
return "3.6";
|
|
487
599
|
}
|
|
@@ -743,4 +855,4 @@ class BaseCommand extends Command {
|
|
|
743
855
|
}
|
|
744
856
|
}
|
|
745
857
|
|
|
746
|
-
export { acceptTerms as $, ApiKey as A, BaseCommand as B, CredentialsType as C, DetailsFlags as D, getProjectJobs as E, getJob as F, GODOT_CAPABILITIES as G, castArrayObjectDates as H, queryClient as I, JobStatus as J, WS_URL as K, getAuthToken as L, getProjectPlatformProgress as M, downloadBuildById as N, getGoogleStatus as O, Platform as P, getGodotAndroidPackageName as Q, enforcePolicy as R, revokePolicy as S, inviteServiceAccount as T, UserRole as U, disconnectGoogle as V, WEB_URL as W, getAPIKeys as X, createAPIKey as Y, revokeAPIKey as Z, getSingleUseUrl as _, ApiKeyType as a, setAuthToken as a0, Auth as a1, LogLevel as a2, getShortAuthRequiredUrl as a3, getNewUploadTicket as a4, startJobsFromUpload as a5, castObjectDates as a6, getGoogleAuthUrl as a7, castJobDates as a8, getShortTime as a9, updateProject as aa,
|
|
858
|
+
export { acceptTerms as $, ApiKey as A, BaseCommand as B, CredentialsType as C, DetailsFlags as D, getProjectJobs as E, getJob as F, GODOT_CAPABILITIES as G, castArrayObjectDates as H, queryClient as I, JobStatus as J, WS_URL as K, getAuthToken as L, getProjectPlatformProgress as M, downloadBuildById as N, getGoogleStatus as O, Platform as P, getGodotAndroidPackageName as Q, enforcePolicy as R, revokePolicy as S, inviteServiceAccount as T, UserRole as U, disconnectGoogle as V, WEB_URL as W, getAPIKeys as X, createAPIKey as Y, revokeAPIKey as Z, getSingleUseUrl as _, ApiKeyType as a, setAuthToken as a0, Auth as a1, LogLevel as a2, getShortAuthRequiredUrl as a3, getNewUploadTicket as a4, startJobsFromUpload as a5, castObjectDates as a6, getGoogleAuthUrl as a7, castJobDates as a8, getShortTime as a9, updateProject as aa, getGradleBuildOptionKey as ab, BuildType as ac, getShortDateTime as ad, getShortTimeDelta as ae, JobStage as af, getSelf as ag, getTerms as ah, Certificate as b, getShortDate as c, getGodotAppleBundleIdentifier as d, BundleId as e, App as f, getProjects as g, CapabilityTypeOption as h, isGradleBuildEnabled as i, BetaGroup as j, isCWDGodotGame as k, getProject as l, CertificateType as m, Profile as n, ProfileType as o, API_URL as p, getAuthedHeaders as q, getGodotProjectCapabilities as r, setGradleBuildEnabled as s, CapabilityType as t, GameEngine as u, getGodotVersion as v, createProject as w, DEFAULT_SHIPPED_FILES_GLOBS as x, DEFAULT_IGNORED_FILES_GLOBS as y, getGodotProjectName as z };
|
|
@@ -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-B7pUDBYl.js';
|
|
2
|
+
import { c as BaseGameCommand, d as generatePackageName, b as getInput } from './baseGameCommand-BTC5XD8W.js';
|
|
3
3
|
|
|
4
4
|
class BaseGameAndroidCommand extends BaseGameCommand {
|
|
5
5
|
async checkGoogleAuth(waitForAuth = false) {
|