shipthis 0.1.54 → 0.1.55

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/assets/markdown/apple-login-notice.md.ejs +9 -0
  2. package/dist/{AppleBundleIdDetails-CJuXU0MW.js → AppleBundleIdDetails-Ch0IGOPO.js} +4 -4
  3. package/dist/{Command-U8TqM6Zs.js → Command-CKwGlf4L.js} +2 -2
  4. package/dist/{CommandGame-hqY43vRo.js → CommandGame-DoUC7C_q.js} +3 -3
  5. package/dist/{Create-C--pV63B.js → Create-BMZPvZ4G.js} +2 -2
  6. package/dist/{CredentialDetailsView-DUpRMBiJ.js → CredentialDetailsView-DrAjwTB_.js} +1 -1
  7. package/dist/{ErrorBox-DLRncz8K.js → ErrorBox-DDlTtBXo.js} +1 -1
  8. package/dist/{GameStatus-DRheSF2O.js → GameStatus-BbGB_Nb4.js} +2 -2
  9. package/dist/{Import-CTgEEj_f.js → Import-Cd6bNM3_.js} +3 -3
  10. package/dist/{JobLogTail-7oEEQxIO.js → JobLogTail-Bnxjh42s.js} +3 -3
  11. package/dist/{JobProgress-DwvTh5rS.js → JobProgress-BMKEhMAf.js} +26 -4
  12. package/dist/{JobStatusTable-DBM_PBPQ.js → JobStatusTable-CPKhHXoe.js} +3 -3
  13. package/dist/{ProjectCredentialsTable-BamSpb5B.js → ProjectCredentialsTable-TTXHSq6Y.js} +2 -2
  14. package/dist/{UserCredentialsTable-N_fIOf8N.js → UserCredentialsTable-Nnr2vBR7.js} +2 -2
  15. package/dist/{baseAppleCommand-oekzwny6.js → baseAppleCommand-BXD1j8r9.js} +1 -1
  16. package/dist/{baseCommand-ByzFMr-B.js → baseCommand-BBX7e4wG.js} +30 -6
  17. package/dist/{baseGameAndroidCommand-GvH1QAja.js → baseGameAndroidCommand-DUH9kKXh.js} +3 -3
  18. package/dist/{baseGameCommand-D8Z3SaiJ.js → baseGameCommand-DDamAWma.js} +4 -3
  19. package/dist/commands/apiKey/create.js +4 -4
  20. package/dist/commands/apiKey/list.js +4 -4
  21. package/dist/commands/apiKey/revoke.js +4 -4
  22. package/dist/commands/apple/apiKey/create.js +7 -7
  23. package/dist/commands/apple/apiKey/delete.js +5 -5
  24. package/dist/commands/apple/apiKey/export.js +6 -6
  25. package/dist/commands/apple/apiKey/import.js +6 -6
  26. package/dist/commands/apple/apiKey/status.js +5 -5
  27. package/dist/commands/apple/certificate/create.js +7 -7
  28. package/dist/commands/apple/certificate/delete.js +5 -5
  29. package/dist/commands/apple/certificate/export.js +6 -6
  30. package/dist/commands/apple/certificate/import.js +6 -6
  31. package/dist/commands/apple/certificate/show.js +6 -6
  32. package/dist/commands/apple/certificate/status.js +5 -5
  33. package/dist/commands/apple/login.js +33 -26
  34. package/dist/commands/apple/status.js +4 -4
  35. package/dist/commands/dashboard.js +3 -3
  36. package/dist/commands/game/android/apiKey/connect.js +10 -10
  37. package/dist/commands/game/android/apiKey/create.js +13 -13
  38. package/dist/commands/game/android/apiKey/delete.js +5 -5
  39. package/dist/commands/game/android/apiKey/export.js +7 -7
  40. package/dist/commands/game/android/apiKey/import.js +7 -7
  41. package/dist/commands/game/android/apiKey/invite.js +6 -6
  42. package/dist/commands/game/android/apiKey/policy.js +4 -4
  43. package/dist/commands/game/android/apiKey/show.js +9 -9
  44. package/dist/commands/game/android/apiKey/status.js +7 -7
  45. package/dist/commands/game/android/keyStore/create.js +9 -9
  46. package/dist/commands/game/android/keyStore/delete.js +5 -5
  47. package/dist/commands/game/android/keyStore/export.js +6 -6
  48. package/dist/commands/game/android/keyStore/import.js +10 -10
  49. package/dist/commands/game/android/keyStore/status.js +6 -6
  50. package/dist/commands/game/android/status.js +3 -3
  51. package/dist/commands/game/build/download.js +4 -4
  52. package/dist/commands/game/build/list.js +6 -6
  53. package/dist/commands/game/create.js +3 -3
  54. package/dist/commands/game/details.js +5 -5
  55. package/dist/commands/game/export.js +3 -3
  56. package/dist/commands/game/ios/app/addTester.js +5 -5
  57. package/dist/commands/game/ios/app/create.js +4 -4
  58. package/dist/commands/game/ios/app/status.js +7 -7
  59. package/dist/commands/game/ios/app/sync.js +5 -5
  60. package/dist/commands/game/ios/profile/create.js +7 -7
  61. package/dist/commands/game/ios/profile/delete.js +5 -5
  62. package/dist/commands/game/ios/profile/export.js +6 -6
  63. package/dist/commands/game/ios/profile/import.js +6 -6
  64. package/dist/commands/game/ios/profile/show.js +8 -8
  65. package/dist/commands/game/ios/profile/status.js +7 -7
  66. package/dist/commands/game/ios/status.js +10 -10
  67. package/dist/commands/game/ios/wizard.js +4 -4
  68. package/dist/commands/game/job/list.js +4 -4
  69. package/dist/commands/game/job/logs.js +3 -3
  70. package/dist/commands/game/job/status.js +7 -7
  71. package/dist/commands/game/list.js +4 -4
  72. package/dist/commands/game/ship.js +11 -11
  73. package/dist/commands/game/status.js +7 -7
  74. package/dist/commands/game/wizard.js +16 -16
  75. package/dist/commands/internal/fastlane.js +3 -3
  76. package/dist/commands/internal/readme.js +3 -3
  77. package/dist/commands/login.js +3 -3
  78. package/dist/commands/status.js +4 -4
  79. package/dist/commands/util/android-build-method.js +3 -3
  80. package/dist/commands/util/glass.js +2 -2
  81. package/dist/{export-DQ2Qh09K.js → export-C_FknMUp.js} +1 -1
  82. package/dist/{import-sVng7ksa.js → import-DaK7xzxS.js} +1 -1
  83. package/dist/{index-DwEIHNF1.js → index-BcXx8TNS.js} +4 -4
  84. package/dist/{index-N3S598Wc.js → index-DGlnFPWY.js} +1 -1
  85. package/dist/{index-Dz17cbww.js → index-SfRGUQOY.js} +5 -5
  86. package/dist/{upload-DoiCgi3a.js → upload-CwHqf-A6.js} +1 -1
  87. package/dist/{useAppleApp-J4dx2Wyz.js → useAppleApp-DwcXThPv.js} +1 -1
  88. package/dist/{useAppleBundleId-DUdnv1T0.js → useAppleBundleId-Bojf5t9g.js} +1 -1
  89. package/dist/{useAppleProfiles-DDdAtArV.js → useAppleProfiles-ClGtQU78.js} +1 -1
  90. package/dist/{useGoogleStatus-DciPkOMu.js → useGoogleStatus-D1VbWkVy.js} +2 -2
  91. package/dist/{useProjectCredentials-B4cjpmpB.js → useProjectCredentials-CkjJTltI.js} +2 -2
  92. package/dist/{useWebSocket-B1hQm8Ak.js → useWebSocket-xkJFqoYf.js} +1 -1
  93. package/docs/apple/login.md +9 -3
  94. package/docs/autocomplete.md +1 -1
  95. package/docs/game/android/apiKey/invite.md +3 -3
  96. package/docs/game/android/apiKey.md +36 -7
  97. package/docs/game/create.md +15 -10
  98. package/docs/game/details.md +6 -3
  99. package/docs/game/ios/app/addTester.md +10 -5
  100. package/docs/game/ios/app.md +32 -2
  101. package/docs/game/ios.md +1 -0
  102. package/docs/game/ship.md +6 -2
  103. package/docs/game/status.md +6 -2
  104. package/docs/game/wizard.md +2 -5
  105. package/npm-shrinkwrap.json +2 -2
  106. package/oclif.manifest.json +251 -245
  107. package/package.json +1 -1
@@ -0,0 +1,9 @@
1
+ # Signing in to Apple
2
+
3
+ ShipThis sends your Apple ID and password **directly to Apple's authentication service**, using the open-source `@expo/apple-utils` library.
4
+
5
+ - Your password is **never stored** and is **never sent to ShipThis servers**.
6
+ - Only the resulting Apple **session cookies** are saved, locally, to your auth file.
7
+ - Your password is used once, for this sign-in, and then discarded.
8
+
9
+ **Read the exact code that handles your password: [<%= sourceURL %>](<%= sourceURL %>)**
@@ -11,11 +11,11 @@ import 'readline-sync';
11
11
  import 'luxon';
12
12
  import 'axios';
13
13
  import 'isomorphic-git';
14
- import './baseCommand-ByzFMr-B.js';
14
+ import './baseCommand-BBX7e4wG.js';
15
15
  import '@oclif/core';
16
16
  import '@tanstack/react-query';
17
17
  import 'react';
18
- import { u as useAppleApp } from './useAppleApp-J4dx2Wyz.js';
18
+ import { u as useAppleApp } from './useAppleApp-DwcXThPv.js';
19
19
  import 'uuid';
20
20
  import 'fast-glob';
21
21
  import 'stream';
@@ -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-D8Z3SaiJ.js';
30
+ import './baseGameCommand-DDamAWma.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-DUdnv1T0.js';
35
+ import { u as useAppleBundleId } from './useAppleBundleId-Bojf5t9g.js';
36
36
 
37
37
  const AppleAppDetails = (props) => {
38
38
  const { data, isLoading } = useAppleApp(props);
@@ -2,8 +2,8 @@ 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 { C as CommandProvider } from './baseGameCommand-D8Z3SaiJ.js';
6
- import { F as queryClient } from './baseCommand-ByzFMr-B.js';
5
+ import { C as CommandProvider } from './baseGameCommand-DDamAWma.js';
6
+ import { F as queryClient } from './baseCommand-BBX7e4wG.js';
7
7
  import 'axios';
8
8
  import 'node:fs';
9
9
  import 'luxon';
@@ -1,8 +1,8 @@
1
1
  import { jsx, Fragment } from 'react/jsx-runtime';
2
2
  import React from 'react';
3
- import { E as ErrorBox } from './ErrorBox-DLRncz8K.js';
4
- import { G as GameProvider, d as GameContext } from './baseGameCommand-D8Z3SaiJ.js';
5
- import { C as Command } from './Command-U8TqM6Zs.js';
3
+ import { E as ErrorBox } from './ErrorBox-DDlTtBXo.js';
4
+ import { G as GameProvider, e as GameContext } from './baseGameCommand-DDamAWma.js';
5
+ import { C as Command } from './Command-CKwGlf4L.js';
6
6
 
7
7
  const CommandGameErrorBoundary = ({ children }) => {
8
8
  const { error } = React.useContext(GameContext);
@@ -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 { r as getAuthedHeaders, q as API_URL } from './baseCommand-ByzFMr-B.js';
6
+ import { r as getAuthedHeaders, q as API_URL } from './baseCommand-BBX7e4wG.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 { d as GameContext, i as cacheKeys } from './baseGameCommand-D8Z3SaiJ.js';
17
+ import { e as GameContext, j as cacheKeys } from './baseGameCommand-DDamAWma.js';
18
18
  import 'uuid';
19
19
  import 'fast-glob';
20
20
  import 'stream';
@@ -1,7 +1,7 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { Box, Text } from 'ink';
3
3
  import { DateTime } from 'luxon';
4
- import { d as getShortDate, C as CredentialsType } from './baseCommand-ByzFMr-B.js';
4
+ import { d as getShortDate, C as CredentialsType } from './baseCommand-BBX7e4wG.js';
5
5
  import 'node:crypto';
6
6
  import 'node:fs';
7
7
  import 'node:path';
@@ -1,6 +1,6 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { Box, Text } from 'ink';
3
- import { H as HandledError } from './baseCommand-ByzFMr-B.js';
3
+ import { H as HandledError } from './baseCommand-BBX7e4wG.js';
4
4
 
5
5
  const ErrorBox = ({ error }) => {
6
6
  if (error instanceof HandledError) {
@@ -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 { g as getShortUUID, d as getShortDate, P as Platform, m as getProject, L as getProjectPlatformProgress } from './baseCommand-ByzFMr-B.js';
4
+ import { g as getShortUUID, d as getShortDate, P as Platform, m as getProject, L as getProjectPlatformProgress } from './baseCommand-BBX7e4wG.js';
5
5
  import 'ink-spinner';
6
- import { m as makeHumanReadable, d as GameContext, j as CommandContext } from './baseGameCommand-D8Z3SaiJ.js';
6
+ import { m as makeHumanReadable, e as GameContext, k as CommandContext } from './baseGameCommand-DDamAWma.js';
7
7
  import 'luxon';
8
8
  import 'string-length';
9
9
  import 'strip-ansi';
@@ -11,7 +11,7 @@ import 'readline-sync';
11
11
  import 'luxon';
12
12
  import 'axios';
13
13
  import 'isomorphic-git';
14
- import { F as queryClient, P as Platform, C as CredentialsType } from './baseCommand-ByzFMr-B.js';
14
+ import { F as queryClient, P as Platform, C as CredentialsType } from './baseCommand-BBX7e4wG.js';
15
15
  import '@oclif/core';
16
16
  import { useMutation } from '@tanstack/react-query';
17
17
  import { v4 } from 'uuid';
@@ -24,12 +24,12 @@ import 'string-length';
24
24
  import 'strip-ansi';
25
25
  import 'open';
26
26
  import '@inkjs/ui';
27
- import { i as cacheKeys, d as GameContext } from './baseGameCommand-D8Z3SaiJ.js';
27
+ import { j as cacheKeys, e as GameContext } from './baseGameCommand-DDamAWma.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-sVng7ksa.js';
32
+ import { i as importCredential } from './import-DaK7xzxS.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 { r as getAuthedHeaders, q as API_URL, E as castArrayObjectDates, J as JobStatus, a9 as castJobDates, a7 as castObjectDates, aa as getShortTime } from './baseCommand-ByzFMr-B.js';
8
+ import { r as getAuthedHeaders, q as API_URL, E as castArrayObjectDates, J as JobStatus, a8 as castJobDates, a6 as castObjectDates, a9 as getShortTime } from './baseCommand-BBX7e4wG.js';
9
9
  import 'luxon';
10
10
  import 'node:crypto';
11
11
  import 'node:path';
@@ -19,8 +19,8 @@ import 'fast-glob';
19
19
  import 'stream';
20
20
  import 'yazl';
21
21
  import 'socket.io-client';
22
- import { i as cacheKeys, t as useJob, f as getStageColor, v as getMessageColor } from './baseGameCommand-D8Z3SaiJ.js';
23
- import { u as useWebSocket } from './useWebSocket-B1hQm8Ak.js';
22
+ import { j as cacheKeys, t as useJob, h as getStageColor, v as getMessageColor } from './baseGameCommand-DDamAWma.js';
23
+ import { u as useWebSocket } from './useWebSocket-xkJFqoYf.js';
24
24
  import 'fullscreen-ink';
25
25
  import { T as TruncatedText } from './TruncatedText-DhEXCrnE.js';
26
26
  import { T as Title } from './Title-BCQtayg6.js';
@@ -1,5 +1,5 @@
1
1
  import { useMutation } from '@tanstack/react-query';
2
- import { ab as LEGACY_DEFAULT_IGNORED_FILES_GLOBS, ac as LEGACY_DEFAULT_SHIPPED_FILES_GLOBS, y as DEFAULT_PLATFORM_GLOBS, P as Platform, m as getProject, ad as getNewUploadTicket, ae as startJobsFromUpload, F as queryClient, a4 as LogLevel } from './baseCommand-ByzFMr-B.js';
2
+ import { aa as LEGACY_DEFAULT_IGNORED_FILES_GLOBS, ab as LEGACY_DEFAULT_SHIPPED_FILES_GLOBS, y as DEFAULT_PLATFORM_GLOBS, P as Platform, m as getProject, ac as detectGodotVersion, ad as getGodotVersionDrift, ae as getNewUploadTicket, af as startJobsFromUpload, F as queryClient, a3 as LogLevel } from './baseCommand-BBX7e4wG.js';
3
3
  import 'node:crypto';
4
4
  import fs__default from 'node:fs';
5
5
  import 'node:path';
@@ -11,11 +11,11 @@ import 'axios';
11
11
  import 'isomorphic-git';
12
12
  import '@oclif/core';
13
13
  import { useState } from 'react';
14
- import { w as getFileHash, i as cacheKeys, x as getPlatformName, v as getMessageColor } from './baseGameCommand-D8Z3SaiJ.js';
14
+ import { w as getFileHash, j as cacheKeys, x as getPlatformName, v as getMessageColor } from './baseGameCommand-DDamAWma.js';
15
15
  import { v4 } from 'uuid';
16
16
  import fg from 'fast-glob';
17
17
  import { Readable, Transform } from 'stream';
18
- import { q as queryProjectCredentials } from './useProjectCredentials-B4cjpmpB.js';
18
+ import { q as queryProjectCredentials } from './useProjectCredentials-CkjJTltI.js';
19
19
  import { ZipFile } from 'yazl';
20
20
  import 'socket.io-client';
21
21
  import 'fullscreen-ink';
@@ -25,7 +25,7 @@ import { jsxs, jsx } from 'react/jsx-runtime';
25
25
  import 'ink-spinner';
26
26
  import 'string-length';
27
27
  import 'strip-ansi';
28
- import { u as useJobWatching, a as JobLogLine } from './JobLogTail-7oEEQxIO.js';
28
+ import { u as useJobWatching, a as JobLogLine } from './JobLogTail-Bnxjh42s.js';
29
29
  import 'open';
30
30
  import '@inkjs/ui';
31
31
  import 'marked';
@@ -257,6 +257,21 @@ async function createZip({ files, outputPath, onProgress }) {
257
257
  }
258
258
 
259
259
  const ERR_NOT_CONFIGURED = "No Android or iOS configuration found. Please run `shipthis game wizard android` or `shipthis game wizard ios` to configure your game.";
260
+ const getVersionMismatch = (detected, configured) => `Your project.godot targets Godot ${detected}, but this game builds with Godot ${configured}.`;
261
+ const getVersionFixHint = (detected) => `To build with Godot ${detected}, update the game:
262
+
263
+ shipthis game details --gameEngineVersion ${detected} --force
264
+
265
+ Or ship once without changing the game:
266
+
267
+ shipthis game ship --gameEngineVersion ${detected}`;
268
+ const getMajorDriftError = (detected, configured) => `${getVersionMismatch(detected, configured)}
269
+ Building a Godot ${detected} project with Godot ${configured} does not produce a working game, so this ship has been stopped before building.
270
+
271
+ ` + getVersionFixHint(detected);
272
+ const getMinorDriftWarning = (detected, configured) => `${getVersionMismatch(detected, configured)}
273
+
274
+ ` + getVersionFixHint(detected);
260
275
  async function ship({ command, log, warnLog, shipFlags }) {
261
276
  const commandFlags = command.getFlags();
262
277
  const finalFlags = shipFlags || commandFlags;
@@ -271,6 +286,13 @@ async function ship({ command, log, warnLog, shipFlags }) {
271
286
  const projectConfig = await command.getProjectConfig();
272
287
  if (!projectConfig.project) throw new Error("No project found in project config");
273
288
  const project = await getProject(projectConfig.project.id);
289
+ if (!finalFlags.gameEngineVersion) {
290
+ const detected = detectGodotVersion();
291
+ const configured = project.details?.gameEngineVersion;
292
+ const drift = detected && configured ? getGodotVersionDrift(detected, configured) : null;
293
+ if (drift === "major") throw new Error(getMajorDriftError(detected, configured));
294
+ if (drift === "minor") warnLog(getMinorDriftWarning(detected, configured));
295
+ }
274
296
  const projectUsesDemoCredentials = Boolean(project.details?.useDemoCredentials);
275
297
  const isUsingDemoCredentials = useDemoCredentials ?? projectUsesDemoCredentials ?? false;
276
298
  const hasConfiguredIos = Boolean(project.details?.iosBundleId);
@@ -3,17 +3,17 @@ 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-ByzFMr-B.js';
6
+ import { J as JobStatus } from './baseCommand-BBX7e4wG.js';
7
7
  import '@tanstack/react-query';
8
8
  import 'axios';
9
9
  import 'node:fs';
10
- import { e as getJobSummary, f as getStageColor, h as getJobStatusColor } from './baseGameCommand-D8Z3SaiJ.js';
10
+ import { f as getJobSummary, h as getStageColor, i as getJobStatusColor } from './baseGameCommand-DDamAWma.js';
11
11
  import 'uuid';
12
12
  import 'fast-glob';
13
13
  import 'stream';
14
14
  import 'yazl';
15
15
  import 'socket.io-client';
16
- import { u as useJobWatching } from './JobLogTail-7oEEQxIO.js';
16
+ import { u as useJobWatching } from './JobLogTail-Bnxjh42s.js';
17
17
  import 'fullscreen-ink';
18
18
  import { a as StatusRow, b as StatusRowLabel } from './StatusTable-DzRWcMr4.js';
19
19
  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-ByzFMr-B.js';
13
+ import './baseCommand-BBX7e4wG.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-B4cjpmpB.js';
17
+ import { u as useProjectCredentials, g as getProjectCredentialSummary } from './useProjectCredentials-CkjJTltI.js';
18
18
  import 'uuid';
19
19
  import 'fast-glob';
20
20
  import 'stream';
@@ -10,7 +10,7 @@ import 'readline-sync';
10
10
  import 'luxon';
11
11
  import axios from 'axios';
12
12
  import 'isomorphic-git';
13
- import { g as getShortUUID, d as getShortDate, r as getAuthedHeaders, q as API_URL, E as castArrayObjectDates } from './baseCommand-ByzFMr-B.js';
13
+ import { g as getShortUUID, d as getShortDate, r as getAuthedHeaders, q as API_URL, E as castArrayObjectDates } from './baseCommand-BBX7e4wG.js';
14
14
  import '@oclif/core';
15
15
  import { useQuery } from '@tanstack/react-query';
16
16
  import 'react';
@@ -18,7 +18,7 @@ import 'uuid';
18
18
  import 'fast-glob';
19
19
  import 'stream';
20
20
  import 'yazl';
21
- import { i as cacheKeys } from './baseGameCommand-D8Z3SaiJ.js';
21
+ import { j as cacheKeys } from './baseGameCommand-DDamAWma.js';
22
22
  import 'socket.io-client';
23
23
  import 'fullscreen-ink';
24
24
  import { T as Table } from './Table-FaNgpyeq.js';
@@ -1,4 +1,4 @@
1
- import { B as BaseAuthenticatedCommand } from './baseGameCommand-D8Z3SaiJ.js';
1
+ import { B as BaseAuthenticatedCommand } from './baseGameCommand-DDamAWma.js';
2
2
 
3
3
  class BaseAppleCommand extends BaseAuthenticatedCommand {
4
4
  async init() {
@@ -11,7 +11,7 @@ import 'node:url';
11
11
  import 'readline-sync';
12
12
  import 'isomorphic-git';
13
13
  import { getMajorVersion, loadExportPresets, findPreset, getBasePreset, saveExportPresets, mergePresets, ConfigFile } from 'godot-export-presets';
14
- import * as expo from '@expo/apple-utils/build/index.js';
14
+ import appleUtils from '@expo/apple-utils';
15
15
  import { QueryClient } from '@tanstack/react-query';
16
16
  import 'react';
17
17
  import 'uuid';
@@ -105,13 +105,18 @@ const DetailsFlags = {
105
105
  buildNumber: Flags.integer({ char: "b", description: "Set the build number" }),
106
106
  gameEngine: Flags.string({ char: "e", description: "Set the game engine" }),
107
107
  gameEngineVersion: Flags.string({ char: "v", description: "Set the game engine version" }),
108
- gcpProjectId: Flags.string({ char: "g", description: "Set the GCP project ID" }),
108
+ // No short char: -g is reserved CLI-wide for --gameId (see BaseGameCommand)
109
+ gcpProjectId: Flags.string({ description: "Set the GCP project ID" }),
109
110
  gcpServiceAccountId: Flags.string({ char: "c", description: "Set the GCP service account ID" }),
110
111
  iosBundleId: Flags.string({ char: "i", description: "Set the iOS bundle ID" }),
111
112
  liquidGlassIconPath: Flags.string({ char: "l", description: "Set the Liquid Glass icon path" }),
112
113
  name: Flags.string({ char: "n", description: "The name of the game" }),
113
114
  semanticVersion: Flags.string({ char: "s", description: "Set the semantic version" }),
114
- useDemoCredentials: Flags.string({ char: "d", description: "Use demo credentials for this project" })
115
+ useDemoCredentials: Flags.string({
116
+ char: "d",
117
+ description: "Use demo credentials for this project",
118
+ options: ["true", "false"]
119
+ })
115
120
  };
116
121
 
117
122
  const DEFAULT_LOCALE = "en-US";
@@ -263,7 +268,6 @@ Run \`shipthis game list\` to see your games.` : "Requested resource not found."
263
268
  }
264
269
  }
265
270
 
266
- const defaultExport = expo.default;
267
271
  const {
268
272
  ApiKey,
269
273
  ApiKeyType,
@@ -279,7 +283,7 @@ const {
279
283
  ProfileType,
280
284
  Session,
281
285
  UserRole
282
- } = defaultExport;
286
+ } = appleUtils;
283
287
 
284
288
  const ENTITLEMENT_KEY_TO_CAPABILITY = {
285
289
  "com.apple.developer.applesignin": { name: "Sign in with Apple", type: CapabilityType.APPLE_ID_AUTH },
@@ -459,6 +463,26 @@ function getGodotVersion() {
459
463
  const [version] = features;
460
464
  return version;
461
465
  }
466
+ function detectGodotVersion() {
467
+ try {
468
+ return getGodotVersion();
469
+ } catch {
470
+ return null;
471
+ }
472
+ }
473
+ function parseMajorMinor(version) {
474
+ const match = version.trim().match(/^(\d+)\.(\d+)/);
475
+ if (!match) return null;
476
+ return { major: Number(match[1]), minor: Number(match[2]) };
477
+ }
478
+ function getGodotVersionDrift(detected, configured) {
479
+ const a = parseMajorMinor(detected);
480
+ const b = parseMajorMinor(configured);
481
+ if (!a || !b) return null;
482
+ if (a.major !== b.major) return "major";
483
+ if (a.minor !== b.minor) return "minor";
484
+ return null;
485
+ }
462
486
  function getExportPresetsPath() {
463
487
  const cwd = process.cwd();
464
488
  const filename = "export_presets.cfg";
@@ -938,4 +962,4 @@ class BaseCommand extends Command {
938
962
  }
939
963
  }
940
964
 
941
- export { revokeAPIKey as $, ApiKey as A, BaseCommand as B, CredentialsType as C, DetailsFlags as D, castArrayObjectDates as E, queryClient as F, GODOT_CAPABILITIES as G, HandledError as H, WS_URL as I, JobStatus as J, getAuthToken as K, getProjectPlatformProgress as L, getProjectJobs as M, getJob as N, getJobLogsDownloadStream as O, Platform as P, downloadBuildById as Q, getGoogleStatus as R, getGodotAndroidPackageName as S, enforcePolicy as T, UserRole as U, revokePolicy as V, WEB_URL as W, inviteServiceAccount as X, disconnectGoogle as Y, getAPIKeys as Z, createAPIKey as _, ApiKeyType as a, getSingleUseUrl as a0, acceptTerms as a1, setAuthToken as a2, Auth as a3, LogLevel as a4, getShortAuthRequiredUrl as a5, getErrorMessage as a6, castObjectDates as a7, getGoogleAuthUrl as a8, castJobDates as a9, getShortTime as aa, LEGACY_DEFAULT_IGNORED_FILES_GLOBS as ab, LEGACY_DEFAULT_SHIPPED_FILES_GLOBS as ac, getNewUploadTicket as ad, startJobsFromUpload as ae, updateProject as af, getGradleBuildOptionKey as ag, BuildType as ah, getShortDateTime as ai, getShortTimeDelta as aj, JobStage as ak, getSelf as al, getTerms as am, Certificate as b, getProjects as c, getShortDate as d, getGodotAppleBundleIdentifier as e, BundleId as f, getShortUUID as g, App as h, isGradleBuildEnabled as i, CapabilityTypeOption as j, BetaGroup as k, isCWDGodotGame as l, getProject as m, CertificateType as n, Profile as o, ProfileType as p, API_URL as q, getAuthedHeaders as r, setGradleBuildEnabled as s, getGodotProjectCapabilities as t, CapabilityType as u, GameEngine as v, getGodotVersion as w, createProject as x, DEFAULT_PLATFORM_GLOBS as y, getGodotProjectName as z };
965
+ export { revokeAPIKey as $, ApiKey as A, BaseCommand as B, CredentialsType as C, DetailsFlags as D, castArrayObjectDates as E, queryClient as F, GODOT_CAPABILITIES as G, HandledError as H, WS_URL as I, JobStatus as J, getAuthToken as K, getProjectPlatformProgress as L, getProjectJobs as M, getJob as N, getJobLogsDownloadStream as O, Platform as P, downloadBuildById as Q, getGoogleStatus as R, getGodotAndroidPackageName as S, enforcePolicy as T, UserRole as U, revokePolicy as V, WEB_URL as W, inviteServiceAccount as X, disconnectGoogle as Y, getAPIKeys as Z, createAPIKey as _, ApiKeyType as a, getSingleUseUrl as a0, acceptTerms as a1, setAuthToken as a2, LogLevel as a3, getShortAuthRequiredUrl as a4, getErrorMessage as a5, castObjectDates as a6, getGoogleAuthUrl as a7, castJobDates as a8, getShortTime as a9, LEGACY_DEFAULT_IGNORED_FILES_GLOBS as aa, LEGACY_DEFAULT_SHIPPED_FILES_GLOBS as ab, detectGodotVersion as ac, getGodotVersionDrift as ad, getNewUploadTicket as ae, startJobsFromUpload as af, updateProject as ag, getGradleBuildOptionKey as ah, BuildType as ai, getShortDateTime as aj, getShortTimeDelta as ak, JobStage as al, getSelf as am, getTerms as an, Certificate as b, getProjects as c, getShortDate as d, getGodotAppleBundleIdentifier as e, BundleId as f, getShortUUID as g, App as h, isGradleBuildEnabled as i, CapabilityTypeOption as j, BetaGroup as k, isCWDGodotGame as l, getProject as m, CertificateType as n, Profile as o, ProfileType as p, API_URL as q, getAuthedHeaders as r, setGradleBuildEnabled as s, getGodotProjectCapabilities as t, CapabilityType as u, GameEngine as v, getGodotVersion as w, createProject as x, DEFAULT_PLATFORM_GLOBS as y, getGodotProjectName as z };
@@ -1,5 +1,5 @@
1
- import { R as getGoogleStatus, S as getGodotAndroidPackageName } from './baseCommand-ByzFMr-B.js';
2
- import { b as BaseGameCommand, c as generatePackageName, a as getInput } from './baseGameCommand-D8Z3SaiJ.js';
1
+ import { R as getGoogleStatus, S as getGodotAndroidPackageName } from './baseCommand-BBX7e4wG.js';
2
+ import { c as BaseGameCommand, d as generatePackageName, a as getInput } from './baseGameCommand-DDamAWma.js';
3
3
 
4
4
  class BaseGameAndroidCommand extends BaseGameCommand {
5
5
  async checkGoogleAuth(waitForAuth = false) {
@@ -9,7 +9,7 @@ class BaseGameAndroidCommand extends BaseGameCommand {
9
9
  this.error("You must connect to Google first. Run `shipthis game android apiKey connect`", { exit: 1 });
10
10
  this.log("Waiting for Google authentication...");
11
11
  const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
12
- for (let i = 0; i < 600; i++) {
12
+ for (let i = 0; i < 60; i++) {
13
13
  process.stdout.write(".");
14
14
  await sleep(1e3 * 10);
15
15
  status = await getGoogleStatus();
@@ -1,5 +1,5 @@
1
1
  import { Flags } from '@oclif/core';
2
- import { q as API_URL, r as getAuthedHeaders, P as Platform, g as getShortUUID, ai as getShortDateTime, E as castArrayObjectDates, J as JobStatus, aj as getShortTimeDelta, N as getJob, ak as JobStage, a4 as LogLevel, m as getProject, a5 as getShortAuthRequiredUrl, F as queryClient, ah as BuildType, W as WEB_URL, B as BaseCommand, al as getSelf, H as HandledError, am as getTerms, af as updateProject } from './baseCommand-ByzFMr-B.js';
2
+ import { q as API_URL, r as getAuthedHeaders, P as Platform, g as getShortUUID, aj as getShortDateTime, E as castArrayObjectDates, J as JobStatus, ak as getShortTimeDelta, N as getJob, al as JobStage, a3 as LogLevel, m as getProject, a4 as getShortAuthRequiredUrl, F as queryClient, ai as BuildType, W as WEB_URL, B as BaseCommand, am as getSelf, H as HandledError, an as getTerms, ag as updateProject } from './baseCommand-BBX7e4wG.js';
3
3
  import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
4
4
  import { useStdin, useInput, Text, Box } from 'ink';
5
5
  import Spinner from 'ink-spinner';
@@ -1122,7 +1122,8 @@ class BaseAuthenticatedCommand extends BaseCommand {
1122
1122
  static flags = {};
1123
1123
  async init() {
1124
1124
  await super.init();
1125
- if (!this.isAuthenticated()) {
1125
+ const isAuthenticated = await this.isAuthenticated();
1126
+ if (!isAuthenticated) {
1126
1127
  this.error("No auth config found. Please run `shipthis login` to authenticate.", { exit: 1 });
1127
1128
  }
1128
1129
  try {
@@ -1188,4 +1189,4 @@ class BaseGameCommand extends BaseAuthenticatedCommand {
1188
1189
  }
1189
1190
  }
1190
1191
 
1191
- export { BaseAuthenticatedCommand as B, CommandProvider as C, GameProvider as G, KeyTestStatus as K, Markdown as M, getInput as a, BaseGameCommand as b, generatePackageName as c, GameContext as d, getJobSummary as e, getStageColor as f, getRenderedMarkdown as g, getJobStatusColor as h, cacheKeys as i, CommandContext as j, isValidSemVer as k, fetchKeyTestResult as l, makeHumanReadable as m, niceError as n, KeyTestError as o, ejs as p, getMaskedInput as q, getBuildSummary as r, useSafeInput as s, useJob as t, useBuilds as u, getMessageColor as v, getFileHash as w, getPlatformName as x, queryBuilds as y, CreateGooglePlayGame as z };
1192
+ export { BaseAuthenticatedCommand as B, CommandProvider as C, GameProvider as G, KeyTestStatus as K, Markdown as M, getInput as a, getMaskedInput as b, BaseGameCommand as c, generatePackageName as d, GameContext as e, getJobSummary as f, getRenderedMarkdown as g, getStageColor as h, getJobStatusColor as i, cacheKeys as j, CommandContext as k, isValidSemVer as l, makeHumanReadable as m, fetchKeyTestResult as n, niceError as o, KeyTestError as p, ejs as q, getBuildSummary as r, useSafeInput as s, useJob as t, useBuilds as u, getMessageColor as v, getFileHash as w, getPlatformName as x, queryBuilds as y, CreateGooglePlayGame as z };
@@ -2,8 +2,8 @@ import { jsx } from 'react/jsx-runtime';
2
2
  import { Flags } from '@oclif/core';
3
3
  import { render } from 'ink';
4
4
  import { v4 } from 'uuid';
5
- import { g as getShortUUID, _ as createAPIKey, d as getShortDate } from '../../baseCommand-ByzFMr-B.js';
6
- import { B as BaseAuthenticatedCommand, g as getRenderedMarkdown } from '../../baseGameCommand-D8Z3SaiJ.js';
5
+ import { g as getShortUUID, _ as createAPIKey, d as getShortDate } from '../../baseCommand-BBX7e4wG.js';
6
+ import { B as BaseAuthenticatedCommand, g as getRenderedMarkdown } from '../../baseGameCommand-DDamAWma.js';
7
7
  import 'node:fs';
8
8
  import 'node:path';
9
9
  import 'chalk';
@@ -29,8 +29,8 @@ import '@inkjs/ui';
29
29
  import 'qrcode';
30
30
  import { R as RunWithSpinner } from '../../RunWithSpinner-DucRnFp6.js';
31
31
  import 'godot-export-presets';
32
- import { C as Command } from '../../Command-U8TqM6Zs.js';
33
- import '@expo/apple-utils/build/index.js';
32
+ import { C as Command } from '../../Command-CKwGlf4L.js';
33
+ import '@expo/apple-utils';
34
34
  import 'fs';
35
35
  import 'path';
36
36
  import 'marked';
@@ -1,8 +1,8 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { Flags } from '@oclif/core';
3
3
  import { render, Box, Text } from 'ink';
4
- import { Z as getAPIKeys, d as getShortDate, g as getShortUUID } from '../../baseCommand-ByzFMr-B.js';
5
- import { B as BaseAuthenticatedCommand } from '../../baseGameCommand-D8Z3SaiJ.js';
4
+ import { Z as getAPIKeys, d as getShortDate, g as getShortUUID } from '../../baseCommand-BBX7e4wG.js';
5
+ import { B as BaseAuthenticatedCommand } from '../../baseGameCommand-DDamAWma.js';
6
6
  import 'node:fs';
7
7
  import 'node:path';
8
8
  import 'chalk';
@@ -31,8 +31,8 @@ import 'marked';
31
31
  import 'marked-terminal';
32
32
  import 'qrcode';
33
33
  import 'godot-export-presets';
34
- import { C as Command } from '../../Command-U8TqM6Zs.js';
35
- import '@expo/apple-utils/build/index.js';
34
+ import { C as Command } from '../../Command-CKwGlf4L.js';
35
+ import '@expo/apple-utils';
36
36
  import 'fs';
37
37
  import 'path';
38
38
 
@@ -1,8 +1,8 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { Args, Flags } from '@oclif/core';
3
3
  import { render } from 'ink';
4
- import { $ as revokeAPIKey, g as getShortUUID } from '../../baseCommand-ByzFMr-B.js';
5
- import { B as BaseAuthenticatedCommand } from '../../baseGameCommand-D8Z3SaiJ.js';
4
+ import { $ as revokeAPIKey, g as getShortUUID } from '../../baseCommand-BBX7e4wG.js';
5
+ import { B as BaseAuthenticatedCommand } from '../../baseGameCommand-DDamAWma.js';
6
6
  import 'node:fs';
7
7
  import 'node:path';
8
8
  import 'chalk';
@@ -31,8 +31,8 @@ import 'marked-terminal';
31
31
  import 'qrcode';
32
32
  import { R as RunWithSpinner } from '../../RunWithSpinner-DucRnFp6.js';
33
33
  import 'godot-export-presets';
34
- import { C as Command } from '../../Command-U8TqM6Zs.js';
35
- import '@expo/apple-utils/build/index.js';
34
+ import { C as Command } from '../../Command-CKwGlf4L.js';
35
+ import '@expo/apple-utils';
36
36
  import 'fs';
37
37
  import 'path';
38
38
 
@@ -1,9 +1,9 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { Flags } from '@oclif/core';
3
3
  import { render } from 'ink';
4
- import { g as getUserCredentials } from '../../../index-N3S598Wc.js';
5
- import { P as Platform, C as CredentialsType, A as ApiKey, U as UserRole, a as ApiKeyType } from '../../../baseCommand-ByzFMr-B.js';
6
- import { B as BaseAppleCommand } from '../../../baseAppleCommand-oekzwny6.js';
4
+ import { g as getUserCredentials } from '../../../index-DGlnFPWY.js';
5
+ import { P as Platform, C as CredentialsType, A as ApiKey, U as UserRole, a as ApiKeyType } from '../../../baseCommand-BBX7e4wG.js';
6
+ import { B as BaseAppleCommand } from '../../../baseAppleCommand-BXD1j8r9.js';
7
7
  import 'node:fs';
8
8
  import 'axios';
9
9
  import 'luxon';
@@ -26,16 +26,16 @@ import 'string-length';
26
26
  import 'strip-ansi';
27
27
  import 'open';
28
28
  import '@inkjs/ui';
29
- import '../../../baseGameCommand-D8Z3SaiJ.js';
29
+ import '../../../baseGameCommand-DDamAWma.js';
30
30
  import 'marked';
31
31
  import 'marked-terminal';
32
32
  import 'qrcode';
33
33
  import { R as RunWithSpinner } from '../../../RunWithSpinner-DucRnFp6.js';
34
34
  import 'godot-export-presets';
35
- import { C as Command } from '../../../Command-U8TqM6Zs.js';
35
+ import { C as Command } from '../../../Command-CKwGlf4L.js';
36
36
  import 'chalk';
37
- import { u as uploadUserCredentials } from '../../../upload-DoiCgi3a.js';
38
- import '@expo/apple-utils/build/index.js';
37
+ import { u as uploadUserCredentials } from '../../../upload-CwHqf-A6.js';
38
+ import '@expo/apple-utils';
39
39
  import 'fs';
40
40
  import 'path';
41
41
 
@@ -1,11 +1,11 @@
1
1
  import { Flags } from '@oclif/core';
2
2
  import 'node:fs';
3
3
  import 'axios';
4
- import { P as Platform, C as CredentialsType, A as ApiKey, g as getShortUUID } from '../../../baseCommand-ByzFMr-B.js';
4
+ import { P as Platform, C as CredentialsType, A as ApiKey, g as getShortUUID } from '../../../baseCommand-BBX7e4wG.js';
5
5
  import 'luxon';
6
- import { g as getRenderedMarkdown, a as getInput } from '../../../baseGameCommand-D8Z3SaiJ.js';
7
- import { g as getUserCredentials, d as deleteUserCredential } from '../../../index-N3S598Wc.js';
8
- import { B as BaseAppleCommand } from '../../../baseAppleCommand-oekzwny6.js';
6
+ import { g as getRenderedMarkdown, a as getInput } from '../../../baseGameCommand-DDamAWma.js';
7
+ import { g as getUserCredentials, d as deleteUserCredential } from '../../../index-DGlnFPWY.js';
8
+ import { B as BaseAppleCommand } from '../../../baseAppleCommand-BXD1j8r9.js';
9
9
  import 'react/jsx-runtime';
10
10
  import 'ink';
11
11
  import 'ink-spinner';
@@ -30,7 +30,7 @@ import 'node:readline';
30
30
  import 'node:url';
31
31
  import 'readline-sync';
32
32
  import 'isomorphic-git';
33
- import '@expo/apple-utils/build/index.js';
33
+ import '@expo/apple-utils';
34
34
  import 'fs';
35
35
  import 'path';
36
36
  import 'marked';
@@ -2,12 +2,12 @@ import { jsx } from 'react/jsx-runtime';
2
2
  import * as fs from 'node:fs';
3
3
  import { Args, Flags } from '@oclif/core';
4
4
  import { render } from 'ink';
5
- import { g as getUserCredentials } from '../../../index-N3S598Wc.js';
6
- import { B as BaseAuthenticatedCommand } from '../../../baseGameCommand-D8Z3SaiJ.js';
5
+ import { g as getUserCredentials } from '../../../index-DGlnFPWY.js';
6
+ import { B as BaseAuthenticatedCommand } from '../../../baseGameCommand-DDamAWma.js';
7
7
  import 'node:path';
8
8
  import 'chalk';
9
9
  import 'axios';
10
- import { P as Platform, C as CredentialsType } from '../../../baseCommand-ByzFMr-B.js';
10
+ import { P as Platform, C as CredentialsType } from '../../../baseCommand-BBX7e4wG.js';
11
11
  import 'luxon';
12
12
  import 'node:crypto';
13
13
  import 'node:readline';
@@ -32,11 +32,11 @@ import 'marked-terminal';
32
32
  import 'qrcode';
33
33
  import { R as RunWithSpinner } from '../../../RunWithSpinner-DucRnFp6.js';
34
34
  import 'godot-export-presets';
35
- import { C as Command } from '../../../Command-U8TqM6Zs.js';
36
- import { e as exportCredential } from '../../../export-DQ2Qh09K.js';
35
+ import { C as Command } from '../../../Command-CKwGlf4L.js';
36
+ import { e as exportCredential } from '../../../export-C_FknMUp.js';
37
37
  import 'fs';
38
38
  import 'path';
39
- import '@expo/apple-utils/build/index.js';
39
+ import '@expo/apple-utils';
40
40
 
41
41
  class AppleApiKeyExport extends BaseAuthenticatedCommand {
42
42
  static args = {
@@ -2,12 +2,12 @@ import { jsx } from 'react/jsx-runtime';
2
2
  import * as fs from 'node:fs';
3
3
  import { Args, Flags } from '@oclif/core';
4
4
  import { render } from 'ink';
5
- import { g as getUserCredentials } from '../../../index-N3S598Wc.js';
6
- import { B as BaseAuthenticatedCommand } from '../../../baseGameCommand-D8Z3SaiJ.js';
5
+ import { g as getUserCredentials } from '../../../index-DGlnFPWY.js';
6
+ import { B as BaseAuthenticatedCommand } from '../../../baseGameCommand-DDamAWma.js';
7
7
  import 'node:path';
8
8
  import 'chalk';
9
9
  import 'axios';
10
- import { P as Platform, C as CredentialsType } from '../../../baseCommand-ByzFMr-B.js';
10
+ import { P as Platform, C as CredentialsType } from '../../../baseCommand-BBX7e4wG.js';
11
11
  import 'luxon';
12
12
  import 'node:crypto';
13
13
  import 'node:readline';
@@ -32,11 +32,11 @@ import 'marked-terminal';
32
32
  import 'qrcode';
33
33
  import { R as RunWithSpinner } from '../../../RunWithSpinner-DucRnFp6.js';
34
34
  import 'godot-export-presets';
35
- import { C as Command } from '../../../Command-U8TqM6Zs.js';
36
- import { i as importCredential } from '../../../import-sVng7ksa.js';
35
+ import { C as Command } from '../../../Command-CKwGlf4L.js';
36
+ import { i as importCredential } from '../../../import-DaK7xzxS.js';
37
37
  import 'fs';
38
38
  import 'path';
39
- import '@expo/apple-utils/build/index.js';
39
+ import '@expo/apple-utils';
40
40
 
41
41
  class AppleApiKeyImport extends BaseAuthenticatedCommand {
42
42
  static args = {