shipthis 0.1.34 → 0.1.35

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 (100) hide show
  1. package/assets/markdown/{android-success.md → android-success.md.ejs} +2 -2
  2. package/assets/markdown/{apikey-create.md → apikey-create.md.ejs} +4 -4
  3. package/assets/markdown/{create-google-play-game.md → create-google-play-game.md.ejs} +2 -2
  4. package/assets/markdown/{invite-service-account.md → invite-service-account.md.ejs} +1 -1
  5. package/assets/markdown/{ios-success.md → ios-success.md.ejs} +2 -2
  6. package/assets/markdown/{privacy-notification.md → privacy-notification.md.ejs} +1 -1
  7. package/assets/markdown/service-account-policy-wizard.md.ejs +26 -0
  8. package/assets/markdown/service-account-policy.md.ejs +30 -0
  9. package/assets/markdown/{ship-failure.md → ship-failure.md.ejs} +1 -1
  10. package/assets/markdown/{ship-success.md → ship-success.md.ejs} +2 -2
  11. package/dist/{AppleBundleIdDetails-By-sSGNl.js → AppleBundleIdDetails-N_j1wv6f.js} +5 -4
  12. package/dist/{Command-VWMnGslo.js → Command-DN1j3tjt.js} +2 -2
  13. package/dist/{CommandGame-BSVPZzNl.js → CommandGame-D2NqytWc.js} +2 -2
  14. package/dist/{Create-SR1Mq7BY.js → Create-BRdv5jXQ.js} +4 -3
  15. package/dist/{GameStatus-1ntFyxEx.js → GameStatus-joyHPy0f.js} +12 -17
  16. package/dist/{Import-cedOWPDz.js → Import-BNMHsJoM.js} +5 -4
  17. package/dist/{JobLogTail-C_W8UAMg.js → JobLogTail-D35FO5v-.js} +5 -5
  18. package/dist/{JobProgress-CI385G53.js → JobProgress-D-9KESaA.js} +6 -5
  19. package/dist/{JobStatusTable-CdbKtwJE.js → JobStatusTable-DIJ_h-gi.js} +4 -4
  20. package/dist/{ProjectCredentialsTable-ZnuIfcDB.js → ProjectCredentialsTable-BMKgv99h.js} +2 -2
  21. package/dist/{UserCredentialsTable-DRkAYgEA.js → UserCredentialsTable-CUrTDzTK.js} +10 -10
  22. package/dist/{baseAppleCommand-CsO-_Yzn.js → baseAppleCommand-Cs9a52e5.js} +1 -1
  23. package/dist/{baseGameAndroidCommand-CdjaAbNX.js → baseGameAndroidCommand-BCB1SMCf.js} +2 -2
  24. package/dist/commands/apiKey/create.js +19 -16
  25. package/dist/commands/apiKey/list.js +10 -7
  26. package/dist/commands/apiKey/revoke.js +11 -8
  27. package/dist/commands/apple/apiKey/create.js +11 -8
  28. package/dist/commands/apple/apiKey/export.js +10 -7
  29. package/dist/commands/apple/apiKey/import.js +10 -7
  30. package/dist/commands/apple/apiKey/status.js +16 -13
  31. package/dist/commands/apple/certificate/create.js +11 -8
  32. package/dist/commands/apple/certificate/export.js +10 -7
  33. package/dist/commands/apple/certificate/import.js +10 -7
  34. package/dist/commands/apple/certificate/status.js +16 -13
  35. package/dist/commands/apple/login.js +2 -2
  36. package/dist/commands/apple/status.js +8 -5
  37. package/dist/commands/dashboard.js +1 -1
  38. package/dist/commands/game/android/apiKey/connect.js +13 -9
  39. package/dist/commands/game/android/apiKey/create.js +15 -11
  40. package/dist/commands/game/android/apiKey/export.js +11 -8
  41. package/dist/commands/game/android/apiKey/import.js +11 -8
  42. package/dist/commands/game/android/apiKey/invite.js +4 -4
  43. package/dist/commands/game/android/apiKey/policy.js +87 -0
  44. package/dist/commands/game/android/apiKey/status.js +11 -8
  45. package/dist/commands/game/android/keyStore/create.js +12 -9
  46. package/dist/commands/game/android/keyStore/export.js +10 -7
  47. package/dist/commands/game/android/keyStore/import.js +13 -10
  48. package/dist/commands/game/android/keyStore/status.js +10 -7
  49. package/dist/commands/game/android/status.js +1 -1
  50. package/dist/commands/game/build/download.js +8 -5
  51. package/dist/commands/game/build/list.js +9 -6
  52. package/dist/commands/game/create.js +2 -2
  53. package/dist/commands/game/details.js +8 -5
  54. package/dist/commands/game/export.js +1 -1
  55. package/dist/commands/game/ios/app/addTester.js +15 -12
  56. package/dist/commands/game/ios/app/create.js +8 -5
  57. package/dist/commands/game/ios/app/status.js +11 -8
  58. package/dist/commands/game/ios/app/sync.js +9 -6
  59. package/dist/commands/game/ios/profile/create.js +11 -8
  60. package/dist/commands/game/ios/profile/export.js +10 -7
  61. package/dist/commands/game/ios/profile/import.js +10 -7
  62. package/dist/commands/game/ios/profile/status.js +10 -7
  63. package/dist/commands/game/ios/status.js +13 -10
  64. package/dist/commands/game/ios/wizard.js +9 -6
  65. package/dist/commands/game/job/list.js +8 -5
  66. package/dist/commands/game/job/status.js +11 -8
  67. package/dist/commands/game/list.js +15 -10
  68. package/dist/commands/game/ship.js +15 -12
  69. package/dist/commands/game/status.js +10 -7
  70. package/dist/commands/game/wizard.js +23 -19
  71. package/dist/commands/internal/fastlane.js +1 -1
  72. package/dist/commands/internal/readme.js +4 -715
  73. package/dist/commands/login.js +2 -2
  74. package/dist/commands/status.js +14 -14
  75. package/dist/ejs-DirFZbza.js +716 -0
  76. package/dist/{export-B5Yfd9vw.js → export-DFCZKNQk.js} +1 -1
  77. package/dist/{import-A2WcStHl.js → import-BpGyif-m.js} +1 -1
  78. package/dist/{index-BBLtvl1Y.js → index-BTXEUd8W.js} +59 -16
  79. package/dist/{index-CO_ssVFA.js → index-BwnzoldS.js} +14 -2
  80. package/dist/{index-CYjZ26If.js → index-CJWMt1s-.js} +1 -1
  81. package/dist/{index-Bz1qt_8T.js → index-DlE_SPt3.js} +7 -11
  82. package/dist/{index-CA6-uLMn.js → index-hoHfGrjg.js} +33 -33
  83. package/dist/{index-CgzANgJt.js → index-izrACZbC.js} +1 -1
  84. package/dist/{upload-BIsFZzBO.js → upload-D19OQsbn.js} +1 -1
  85. package/dist/{useAndroidServiceAccountTestResult-DueKynFy.js → useAndroidServiceAccountTestResult-CwKeW0ED.js} +1 -1
  86. package/dist/{useAppleApp-BZR94exU.js → useAppleApp-BZc_cNa-.js} +1 -1
  87. package/dist/{useAppleBundleId-Dg5DsItN.js → useAppleBundleId-DvMXAvWD.js} +1 -1
  88. package/dist/useGoogleStatus-Cx_QIsXa.js +10 -0
  89. package/dist/{useProjectCredentials-jQYGcDhT.js → useProjectCredentials-DxdwJCfU.js} +14 -11
  90. package/dist/{useWebSocket-CIxkPaYi.js → useWebSocket-cM5yOcDv.js} +1 -1
  91. package/docs/README.md +3 -2
  92. package/docs/apiKey.md +12 -2
  93. package/docs/game/android/apiKey/policy.md +28 -0
  94. package/docs/game/android/keyStore.md +14 -4
  95. package/docs/game/android/status.md +4 -0
  96. package/docs/game/android.md +9 -305
  97. package/docs/game/ship.md +43 -11
  98. package/docs/game.md +7 -1
  99. package/package.json +3 -1
  100. /package/assets/markdown/{create-or-import-keystore.md → create-or-import-keystore.md.ejs} +0 -0
@@ -8,8 +8,8 @@ shipthis game ship
8
8
 
9
9
  ## 🚀 Next Steps
10
10
 
11
- - Check out the **iOS set up guide** [${iosSetupURL}](${iosSetupURL})
12
- - Review the **ShipThis Documentation** [${docsURL}](${docsURL})
11
+ - Check out the **iOS set up guide** [<%= iosSetupURL %>](<%= iosSetupURL %>)
12
+ - Review the **ShipThis Documentation** [<%= docsURL %>](<%= docsURL %>)
13
13
 
14
14
  ### Need help?
15
15
 
@@ -1,11 +1,11 @@
1
1
  # Your ShipThis API Key has been created
2
2
 
3
- - ID: **${keyId}**
4
- - Name: **${keyName}**
5
- - Expiry: **${keyExpiry}**
3
+ - ID: **<%= keyId %>**
4
+ - Name: **<%= keyName %>**
5
+ - Expiry: **<%= keyExpiry %>**
6
6
 
7
7
  **The secret will not be shown again. Store it securely.**
8
8
 
9
9
  ## Secret value
10
10
 
11
- ${keySecret}
11
+ <%= keySecret %>
@@ -12,7 +12,7 @@ You will need to manually create an "app" in Google Play.
12
12
  To download the AAB file from the previous step, please run:
13
13
 
14
14
  ```bash
15
- ${downloadCmd}
15
+ <%= downloadCmd %>
16
16
  ```
17
17
 
18
- The build is also available for download from your **ShipThis Dashboard** [${dashboardURL}](${dashboardURL}). **Press D to open the dashboard in your browser**
18
+ The build is also available for download from your **ShipThis Dashboard** [<%= dashboardURL %>](<%= dashboardURL %>). **Press D to open the dashboard in your browser**
@@ -4,7 +4,7 @@ Before the Service Account API Key can submit your games automatically, you will
4
4
 
5
5
  ## How To find your Google Play Account ID
6
6
 
7
- You can read our help page about this on the **ShipThis Documentation** [${guideURL}](${guideURL})
7
+ You can read our help page about this on the **ShipThis Documentation** [<%= guideURL %>](<%= guideURL %>)
8
8
 
9
9
  1. Log in to the **Google Play Console** [https://play.google.com/console](https://play.google.com/console)
10
10
  1. Below your account name there is a label **Account ID**
@@ -8,8 +8,8 @@ shipthis game ship
8
8
 
9
9
  ## 🚀 Next Steps
10
10
 
11
- - Check out the **Android set up guide** [${androidSetupURL}](${androidSetupURL})
12
- - Review the **ShipThis Documentation** [${docsURL}](${docsURL})
11
+ - Check out the **Android set up guide** [<%= androidSetupURL %>](<%= androidSetupURL %>)
12
+ - Review the **ShipThis Documentation** [<%= docsURL %>](<%= docsURL %>)
13
13
 
14
14
  ### Need help?
15
15
 
@@ -7,4 +7,4 @@ By connecting your Google account, ShipThis will generate a short-lived access t
7
7
  - Securely store your Service Account API Key in the ShipThis backend for deploying new game builds.
8
8
  - Invite the Service Account to your Google Play account.
9
9
 
10
- **To learn more about how ShipThis accesses, uses, and protects your Google data, please review our Privacy Policy [${privacyURL}](${privacyURL}).**
10
+ **To learn more about how ShipThis accesses, uses, and protects your Google data, please review our Privacy Policy [<%= privacyURL %>](<%= privacyURL %>).**
@@ -0,0 +1,26 @@
1
+ # Google Organization Policy Change Needed
2
+
3
+ | Organization | Resource | Created |
4
+ |--------------|----------|---------|
5
+ | <%= orgName %> | <%= orgResourceName %> | <%= orgCreatedAt %> |
6
+
7
+ ## What you need to do
8
+
9
+ Before ShipThis can create a Service Account API key for your game, you need to ensure that your Google Organization Policy allows Service Account key creation. This is a security measure present on some Google Organization accounts to prevent unauthorized access to resources.
10
+
11
+ If your organization was created on or after **May 3, 2024**, this policy is enforced by default and will need to be changed.
12
+
13
+ Learn more: https://cloud.google.com/resource-manager/docs/organization-policy/restricting-service-accounts?authuser=2#disable_service_account_key_creation
14
+
15
+ **ShipThis can change this policy for you. Press P to proceed and let ShipThis change the policy.**
16
+
17
+ If you would like to change this policy manually, please see:
18
+
19
+ - https://www.youtube.com/watch?v=ABIiOM9X5kM
20
+
21
+
22
+ You can re-enable the policy at any time:
23
+
24
+ ```bash
25
+ shipthis game android apiKey policy --enforce
26
+ ```
@@ -0,0 +1,30 @@
1
+ # Google Organization Policy: Disable Service Account Key Creation
2
+
3
+ **Organization:** <%= orgName %>
4
+ **Resource:** <%= orgResourceName %>
5
+ **Created:** <%= orgCreatedAt %>
6
+ **Policy Change Needed:** <%= needsPolicyChange ? 'Yes' : 'No' %>
7
+
8
+ Note: If your organization was created on or after **May 3, 2024**, this constraint is enforced by default.
9
+ Learn more: https://cloud.google.com/resource-manager/docs/organization-policy/restricting-service-accounts?authuser=2#disable_service_account_key_creation
10
+
11
+ If you would like to change this policy manually, please see:
12
+
13
+ - https://www.youtube.com/watch?v=ABIiOM9X5kM
14
+
15
+ <% if (needsPolicyChange) { %>
16
+ This organization currently **enforces** the policy that disables service account key creation.
17
+
18
+ To create an API key, you must **revoke** this policy:
19
+
20
+ ```bash
21
+ shipthis game android apiKey policy --revoke
22
+ ```
23
+
24
+ You can re-enable the policy at any time:
25
+
26
+ ```bash
27
+ shipthis game android apiKey policy --enforce
28
+ ```
29
+
30
+ <% } %>
@@ -5,7 +5,7 @@
5
5
  ## What now?
6
6
 
7
7
  - **The last 10 lines of the failed jobs are shown below**
8
- - Check out the full output in the **ShipThis Dashboard** [${jobDashboardUrl}](${jobDashboardUrl})
8
+ - Check out the full output in the **ShipThis Dashboard** [<%= jobDashboardUrl %>](<%= jobDashboardUrl %>)
9
9
 
10
10
  ### Need help?
11
11
 
@@ -1,10 +1,10 @@
1
1
  # 🚀 Shipped
2
2
 
3
- **Your game has been successfully built${if wasPublished} and published${endif}.**
3
+ **Your game has been successfully built<% if (wasPublished) { %> and published<% } %>.**
4
4
 
5
5
  ## Next Steps
6
6
 
7
- - See all builds in the **Dashboard** [${gameBuildsUrl}](${gameBuildsUrl})
7
+ - See all builds in the **Dashboard** [<%= gameBuildsUrl %>](<%= gameBuildsUrl %>)
8
8
 
9
9
  ### Need help?
10
10
 
@@ -11,13 +11,13 @@ import 'readline-sync';
11
11
  import 'luxon';
12
12
  import 'axios';
13
13
  import 'isomorphic-git';
14
- import './index-CO_ssVFA.js';
14
+ import './index-BwnzoldS.js';
15
15
  import '@oclif/core';
16
16
  import '@tanstack/react-query';
17
17
  import 'react';
18
18
  import 'crypto-js';
19
19
  import 'uuid';
20
- import { u as useAppleApp } from './useAppleApp-BZR94exU.js';
20
+ import { u as useAppleApp } from './useAppleApp-BZc_cNa-.js';
21
21
  import 'fast-glob';
22
22
  import 'yazl';
23
23
  import 'socket.io-client';
@@ -27,11 +27,12 @@ import { T as Title } from './Title-BCQtayg6.js';
27
27
  import 'string-length';
28
28
  import 'strip-ansi';
29
29
  import 'open';
30
- import './index-CA6-uLMn.js';
30
+ import './index-hoHfGrjg.js';
31
+ import './ejs-DirFZbza.js';
31
32
  import 'marked';
32
33
  import 'marked-terminal';
33
34
  import 'qrcode';
34
- import { u as useAppleBundleId } from './useAppleBundleId-Dg5DsItN.js';
35
+ import { u as useAppleBundleId } from './useAppleBundleId-DvMXAvWD.js';
35
36
 
36
37
  const AppleAppDetails = (props) => {
37
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 { K as queryClient } from './index-CO_ssVFA.js';
5
+ import { K as queryClient } from './index-BwnzoldS.js';
6
6
  import 'axios';
7
7
  import 'node:fs';
8
8
  import 'crypto-js';
@@ -19,7 +19,7 @@ import 'react';
19
19
  import 'socket.io-client';
20
20
  import 'fast-glob';
21
21
  import 'yazl';
22
- import { b as CommandProvider } from './index-CA6-uLMn.js';
22
+ import { b as CommandProvider } from './index-hoHfGrjg.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 { c as GameProvider } from './index-CA6-uLMn.js';
3
- import { C as Command } from './Command-VWMnGslo.js';
2
+ import { c as GameProvider } from './index-hoHfGrjg.js';
3
+ import { C as Command } from './Command-DN1j3tjt.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 { p as getAuthedHeaders, o as API_URL } from './index-CO_ssVFA.js';
6
+ import { p as getAuthedHeaders, o as API_URL } from './index-BwnzoldS.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 { c as cacheKeys } from './useAndroidServiceAccountTestResult-DueKynFy.js';
17
+ import { c as cacheKeys } from './useAndroidServiceAccountTestResult-CwKeW0ED.js';
18
18
  import 'fast-glob';
19
19
  import 'uuid';
20
20
  import 'yazl';
@@ -24,11 +24,12 @@ import 'string-length';
24
24
  import 'strip-ansi';
25
25
  import 'open';
26
26
  import '@inkjs/ui';
27
+ import './ejs-DirFZbza.js';
27
28
  import 'marked';
28
29
  import 'marked-terminal';
29
30
  import 'qrcode';
30
31
  import { R as RunWithSpinner } from './RunWithSpinner-DucRnFp6.js';
31
- import { G as GameContext } from './index-CA6-uLMn.js';
32
+ import { G as GameContext } from './index-hoHfGrjg.js';
32
33
 
33
34
  const CreateKeystore = ({ onComplete, onError, ...boxProps }) => {
34
35
  const { gameId } = useContext(GameContext);
@@ -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 { b as getShortDate, P as Platform, E as getProject, F as getProjectPlatformProgress } from './index-CO_ssVFA.js';
4
+ import { b as getShortDate, P as Platform, E as getProject, F as getProjectPlatformProgress } from './index-BwnzoldS.js';
5
5
  import 'ink-spinner';
6
- import { g as getShortUUID, m as makeHumanReadable } from './index-CYjZ26If.js';
6
+ import { g as getShortUUID, m as makeHumanReadable } from './index-CJWMt1s-.js';
7
7
  import '@tanstack/react-query';
8
8
  import 'axios';
9
9
  import 'luxon';
@@ -19,11 +19,12 @@ import { S as StatusTable } from './StatusTable-DzRWcMr4.js';
19
19
  import 'open';
20
20
  import '@inkjs/ui';
21
21
  import 'node:path';
22
+ import './ejs-DirFZbza.js';
22
23
  import 'marked';
23
24
  import 'marked-terminal';
24
25
  import { N as NextSteps } from './NextSteps-DbJHmscQ.js';
25
26
  import 'qrcode';
26
- import { G as GameContext, C as CommandContext } from './index-CA6-uLMn.js';
27
+ import { G as GameContext, C as CommandContext } from './index-hoHfGrjg.js';
27
28
 
28
29
  function isPlatformConfigured(platform, progress) {
29
30
  if (!progress) return false;
@@ -95,21 +96,15 @@ const GameStatusDetails = ({ children, gameId, onComplete, onError, platforms })
95
96
  }, []);
96
97
  if (!state) return /* @__PURE__ */ jsx(Text, {});
97
98
  const { game, statuses, steps } = state;
99
+ const gameDetails = {};
100
+ gameDetails["Game ID"] = getShortUUID(game.id);
101
+ gameDetails.Name = game.name;
102
+ gameDetails.Version = game.details?.semanticVersion || "0.0.1";
103
+ gameDetails["Build Number"] = `${game.details?.buildNumber || 1}`;
104
+ gameDetails["Created At"] = getShortDate(game.createdAt);
105
+ gameDetails["Game Engine"] = `${game.details?.gameEngine || "godot"} ${game.details?.gameEngineVersion || "4.3"}`;
98
106
  return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", children: [
99
- /* @__PURE__ */ jsx(
100
- StatusTable,
101
- {
102
- statuses: {
103
- "Build Number": `${game.details?.buildNumber || 1}`,
104
- "Created At": getShortDate(game.createdAt),
105
- "Game Engine": `${game.details?.gameEngine || "godot"} ${game.details?.gameEngineVersion || "4.3"}`,
106
- "Game ID": getShortUUID(game.id),
107
- Name: game.name,
108
- Version: game.details?.semanticVersion || "0.0.1"
109
- },
110
- title: "Game Details"
111
- }
112
- ),
107
+ /* @__PURE__ */ jsx(StatusTable, { statuses: gameDetails, title: "Game Details" }),
113
108
  platforms.map((platform) => {
114
109
  const status = statuses[platform];
115
110
  const label = platform === Platform.IOS ? "iOS" : "Android";
@@ -11,7 +11,7 @@ import 'readline-sync';
11
11
  import 'luxon';
12
12
  import 'axios';
13
13
  import 'isomorphic-git';
14
- import { K as queryClient, P as Platform, C as CredentialsType } from './index-CO_ssVFA.js';
14
+ import { K as queryClient, P as Platform, C as CredentialsType } from './index-BwnzoldS.js';
15
15
  import '@oclif/core';
16
16
  import { useMutation } from '@tanstack/react-query';
17
17
  import 'crypto-js';
@@ -24,12 +24,13 @@ import 'string-length';
24
24
  import 'strip-ansi';
25
25
  import 'open';
26
26
  import '@inkjs/ui';
27
+ import './ejs-DirFZbza.js';
27
28
  import 'marked';
28
29
  import 'marked-terminal';
29
30
  import 'qrcode';
30
- import { G as GameContext } from './index-CA6-uLMn.js';
31
- import { c as cacheKeys } from './useAndroidServiceAccountTestResult-DueKynFy.js';
32
- import { i as importCredential } from './import-A2WcStHl.js';
31
+ import { G as GameContext } from './index-hoHfGrjg.js';
32
+ import { c as cacheKeys } from './useAndroidServiceAccountTestResult-CwKeW0ED.js';
33
+ import { i as importCredential } from './import-BpGyif-m.js';
33
34
 
34
35
  async function importKeystore({ log = () => {
35
36
  }, ...opt }) {
@@ -7,13 +7,13 @@ import { useState, useRef, useEffect } from 'react';
7
7
  import 'node:fs';
8
8
  import 'crypto-js';
9
9
  import 'uuid';
10
- import { p as getAuthedHeaders, o as API_URL, I as castArrayObjectDates, J as JobStatus, a7 as castJobDates, a4 as castObjectDates, a8 as getShortTime } from './index-CO_ssVFA.js';
11
- import { d as getStageColor, j as getMessageColor } from './index-CYjZ26If.js';
10
+ import { p as getAuthedHeaders, o as API_URL, I as castArrayObjectDates, J as JobStatus, a9 as castJobDates, a7 as castObjectDates, aa as getShortTime } from './index-BwnzoldS.js';
11
+ import { d as getStageColor, j as getMessageColor } from './index-CJWMt1s-.js';
12
12
  import 'luxon';
13
13
  import 'fast-glob';
14
14
  import 'yazl';
15
15
  import 'socket.io-client';
16
- import { c as cacheKeys } from './useAndroidServiceAccountTestResult-DueKynFy.js';
16
+ import { c as cacheKeys } from './useAndroidServiceAccountTestResult-CwKeW0ED.js';
17
17
  import 'node:crypto';
18
18
  import 'node:path';
19
19
  import 'node:readline';
@@ -22,8 +22,8 @@ import 'readline-sync';
22
22
  import 'isomorphic-git';
23
23
  import '@oclif/core';
24
24
  import 'fullscreen-ink';
25
- import { f as useJob } from './index-CA6-uLMn.js';
26
- import { u as useWebSocket } from './useWebSocket-CIxkPaYi.js';
25
+ import { f as useJob } from './index-hoHfGrjg.js';
26
+ import { u as useWebSocket } from './useWebSocket-cM5yOcDv.js';
27
27
  import { T as Title } from './Title-BCQtayg6.js';
28
28
  import stringLength from 'string-length';
29
29
  import stripAnsi from 'strip-ansi';
@@ -4,9 +4,9 @@ import axios from 'axios';
4
4
  import fg from 'fast-glob';
5
5
  import { v4 } from 'uuid';
6
6
  import { ZipFile } from 'yazl';
7
- import { K as queryClient, v as DEFAULT_SHIPPED_FILES_GLOBS, w as DEFAULT_IGNORED_FILES_GLOBS, a2 as getNewUploadTicket, a3 as startJobsFromUpload } from './index-CO_ssVFA.js';
8
- import { c as cacheKeys } from './useAndroidServiceAccountTestResult-DueKynFy.js';
9
- import { f as getFileHash, h as getPlatformName } from './index-CYjZ26If.js';
7
+ import { K as queryClient, v as DEFAULT_SHIPPED_FILES_GLOBS, w as DEFAULT_IGNORED_FILES_GLOBS, a4 as getNewUploadTicket, a5 as startJobsFromUpload } from './index-BwnzoldS.js';
8
+ import { c as cacheKeys } from './useAndroidServiceAccountTestResult-CwKeW0ED.js';
9
+ import { f as getFileHash, h as getPlatformName } from './index-CJWMt1s-.js';
10
10
  import { g as getCWDGitInfo } from './git-BpsfNFZ_.js';
11
11
  import { jsx, Fragment } from 'react/jsx-runtime';
12
12
  import 'ink';
@@ -15,18 +15,19 @@ import 'react';
15
15
  import 'crypto-js';
16
16
  import 'luxon';
17
17
  import 'socket.io-client';
18
- import { u as useJobWatching } from './JobLogTail-C_W8UAMg.js';
18
+ import { u as useJobWatching } from './JobLogTail-D35FO5v-.js';
19
19
  import 'fullscreen-ink';
20
20
  import 'string-length';
21
21
  import 'strip-ansi';
22
22
  import 'open';
23
23
  import '@inkjs/ui';
24
24
  import 'node:path';
25
+ import './ejs-DirFZbza.js';
25
26
  import 'marked';
26
27
  import 'marked-terminal';
27
28
  import { P as ProgressSpinner } from './ProgressSpinner-Um6ARKlk.js';
28
29
  import 'qrcode';
29
- import './index-CA6-uLMn.js';
30
+ import './index-hoHfGrjg.js';
30
31
 
31
32
  async function ship({ command, log = () => {
32
33
  }, shipFlags }) {
@@ -3,18 +3,18 @@ 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 './index-CO_ssVFA.js';
6
+ import { J as JobStatus } from './index-BwnzoldS.js';
7
7
  import '@tanstack/react-query';
8
8
  import 'axios';
9
9
  import 'node:fs';
10
10
  import 'crypto-js';
11
11
  import 'uuid';
12
- import { d as getStageColor, c as getJobStatusColor } from './index-CYjZ26If.js';
13
- import { a as getJobSummary } from './index-CA6-uLMn.js';
12
+ import { d as getStageColor, c as getJobStatusColor } from './index-CJWMt1s-.js';
13
+ import { a as getJobSummary } from './index-hoHfGrjg.js';
14
14
  import 'fast-glob';
15
15
  import 'yazl';
16
16
  import 'socket.io-client';
17
- import { u as useJobWatching } from './JobLogTail-C_W8UAMg.js';
17
+ import { u as useJobWatching } from './JobLogTail-D35FO5v-.js';
18
18
  import 'fullscreen-ink';
19
19
  import { a as StatusRow, b as StatusRowLabel } from './StatusTable-DzRWcMr4.js';
20
20
  import { T as Title } from './Title-BCQtayg6.js';
@@ -10,13 +10,13 @@ import 'readline-sync';
10
10
  import 'luxon';
11
11
  import 'axios';
12
12
  import 'isomorphic-git';
13
- import './index-CO_ssVFA.js';
13
+ import './index-BwnzoldS.js';
14
14
  import '@oclif/core';
15
15
  import '@tanstack/react-query';
16
16
  import 'react';
17
17
  import 'crypto-js';
18
18
  import 'uuid';
19
- import { u as useProjectCredentials, g as getProjectCredentialSummary } from './useProjectCredentials-jQYGcDhT.js';
19
+ import { u as useProjectCredentials, g as getProjectCredentialSummary } from './useProjectCredentials-DxdwJCfU.js';
20
20
  import 'fast-glob';
21
21
  import 'yazl';
22
22
  import 'socket.io-client';
@@ -10,7 +10,7 @@ import 'readline-sync';
10
10
  import 'luxon';
11
11
  import axios from 'axios';
12
12
  import 'isomorphic-git';
13
- import { b as getShortDate, p as getAuthedHeaders, o as API_URL, I as castArrayObjectDates } from './index-CO_ssVFA.js';
13
+ import { b as getShortDate, p as getAuthedHeaders, o as API_URL, I as castArrayObjectDates } from './index-BwnzoldS.js';
14
14
  import '@oclif/core';
15
15
  import { useQuery } from '@tanstack/react-query';
16
16
  import 'react';
@@ -18,8 +18,8 @@ import 'crypto-js';
18
18
  import 'uuid';
19
19
  import 'fast-glob';
20
20
  import 'yazl';
21
- import { c as cacheKeys } from './useAndroidServiceAccountTestResult-DueKynFy.js';
22
- import { g as getShortUUID } from './index-CYjZ26If.js';
21
+ import { c as cacheKeys } from './useAndroidServiceAccountTestResult-CwKeW0ED.js';
22
+ import { g as getShortUUID } from './index-CJWMt1s-.js';
23
23
  import 'socket.io-client';
24
24
  import 'fullscreen-ink';
25
25
  import { T as Table } from './Table-FaNgpyeq.js';
@@ -40,13 +40,13 @@ async function queryUserCredentials(params) {
40
40
  }
41
41
  }
42
42
  function getUserCredentialSummary(credential) {
43
- return {
44
- createdAt: getShortDate(credential.createdAt),
45
- id: getShortUUID(credential.id),
46
- isActive: credential.isActive,
47
- serial: credential.serialNumber,
48
- type: credential.type
49
- };
43
+ const summary = {};
44
+ summary.id = getShortUUID(credential.id);
45
+ summary.type = credential.type;
46
+ summary.serial = credential.serialNumber;
47
+ summary.isActive = credential.isActive;
48
+ summary.createdAt = getShortDate(credential.createdAt);
49
+ return summary;
50
50
  }
51
51
  const useUserCredentials = ({
52
52
  platform,
@@ -1,4 +1,4 @@
1
- import { B as BaseAuthenticatedCommand } from './index-CO_ssVFA.js';
1
+ import { B as BaseAuthenticatedCommand } from './index-BwnzoldS.js';
2
2
 
3
3
  class BaseAppleCommand extends BaseAuthenticatedCommand {
4
4
  async init() {
@@ -1,5 +1,5 @@
1
- import { c as BaseGameCommand, Q as getGoogleStatus, R as getGodotAndroidPackageName } from './index-CO_ssVFA.js';
2
- import { b as generatePackageName, a as getInput } from './index-CYjZ26If.js';
1
+ import { c as BaseGameCommand, Q as getGoogleStatus, R as getGodotAndroidPackageName } from './index-BwnzoldS.js';
2
+ import { b as generatePackageName, a as getInput } from './index-CJWMt1s-.js';
3
3
 
4
4
  class BaseGameAndroidCommand extends BaseGameCommand {
5
5
  async checkGoogleAuth(waitForAuth = false) {
@@ -1,10 +1,10 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
- import { B as BaseAuthenticatedCommand, Y as createAPIKey, b as getShortDate } from '../../index-CO_ssVFA.js';
3
2
  import { Flags } from '@oclif/core';
4
3
  import { render } from 'ink';
5
4
  import { v4 } from 'uuid';
6
- import { g as getShortUUID } from '../../index-CYjZ26If.js';
5
+ import { B as BaseAuthenticatedCommand, _ as createAPIKey, b as getShortDate } from '../../index-BwnzoldS.js';
7
6
  import 'ink-spinner';
7
+ import { g as getShortUUID } from '../../index-CJWMt1s-.js';
8
8
  import 'react';
9
9
  import '@tanstack/react-query';
10
10
  import 'axios';
@@ -18,10 +18,10 @@ import 'string-length';
18
18
  import 'strip-ansi';
19
19
  import 'open';
20
20
  import '@inkjs/ui';
21
- import { g as getRenderedMarkdown } from '../../index-CA6-uLMn.js';
21
+ import { g as getRenderedMarkdown } from '../../index-hoHfGrjg.js';
22
22
  import 'qrcode';
23
23
  import { R as RunWithSpinner } from '../../RunWithSpinner-DucRnFp6.js';
24
- import { C as Command } from '../../Command-VWMnGslo.js';
24
+ import { C as Command } from '../../Command-DN1j3tjt.js';
25
25
  import 'crypto-js';
26
26
  import 'node:path';
27
27
  import '@expo/apple-utils/build/index.js';
@@ -32,7 +32,10 @@ import 'readline-sync';
32
32
  import 'isomorphic-git';
33
33
  import 'deepmerge';
34
34
  import 'ini';
35
- import '../../useAndroidServiceAccountTestResult-DueKynFy.js';
35
+ import '../../useAndroidServiceAccountTestResult-CwKeW0ED.js';
36
+ import '../../ejs-DirFZbza.js';
37
+ import 'fs';
38
+ import 'path';
36
39
  import 'marked';
37
40
  import 'marked-terminal';
38
41
 
@@ -45,32 +48,32 @@ class ApiKeyCreate extends BaseAuthenticatedCommand {
45
48
  "<%= config.bin %> <%= command.id %> --name ci-key-headless --durationDays 365 --quiet"
46
49
  ];
47
50
  static flags = {
51
+ durationDays: Flags.integer({
52
+ char: "d",
53
+ default: 365,
54
+ description: "duration of the API key in days"
55
+ }),
48
56
  name: Flags.string({
49
57
  char: "n",
50
58
  description: "name to apply to the API key (if not provided, a random name will be generated)"
51
59
  }),
52
- durationDays: Flags.integer({
53
- char: "d",
54
- description: "duration of the API key in days",
55
- default: 365
56
- }),
57
60
  quiet: Flags.boolean({
58
61
  char: "q",
59
- description: "Outputs just the secret value",
60
- default: false
62
+ default: false,
63
+ description: "Outputs just the secret value"
61
64
  })
62
65
  };
63
66
  async run() {
64
- const { name, durationDays } = this.flags;
67
+ const { durationDays, name } = this.flags;
65
68
  const createKey = async () => {
66
69
  const apiKeyName = name ? name : `api-key-${getShortUUID(v4())}`;
67
- const apiKeyWithSecret = await createAPIKey({ name: apiKeyName, durationDays });
70
+ const apiKeyWithSecret = await createAPIKey({ durationDays, name: apiKeyName });
68
71
  const successMessage = getRenderedMarkdown({
69
- filename: "apikey-create.md",
72
+ filename: "apikey-create.md.ejs",
70
73
  templateVars: {
74
+ keyExpiry: getShortDate(apiKeyWithSecret.expiresAt),
71
75
  keyId: getShortUUID(apiKeyWithSecret.id),
72
76
  keyName: apiKeyWithSecret.name,
73
- keyExpiry: getShortDate(apiKeyWithSecret.expiresAt),
74
77
  keySecret: apiKeyWithSecret.secret
75
78
  }
76
79
  });
@@ -1,9 +1,9 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
- import { B as BaseAuthenticatedCommand, X as getAPIKeys, b as getShortDate } from '../../index-CO_ssVFA.js';
3
2
  import { Flags } from '@oclif/core';
4
3
  import { render, Box, Text } from 'ink';
5
- import { g as getShortUUID } from '../../index-CYjZ26If.js';
4
+ import { B as BaseAuthenticatedCommand, Z as getAPIKeys, b as getShortDate } from '../../index-BwnzoldS.js';
6
5
  import 'ink-spinner';
6
+ import { g as getShortUUID } from '../../index-CJWMt1s-.js';
7
7
  import { T as Table } from '../../Table-FaNgpyeq.js';
8
8
  import 'react';
9
9
  import '@tanstack/react-query';
@@ -20,11 +20,12 @@ import 'strip-ansi';
20
20
  import 'open';
21
21
  import '@inkjs/ui';
22
22
  import 'node:path';
23
+ import '../../ejs-DirFZbza.js';
23
24
  import 'marked';
24
25
  import 'marked-terminal';
25
26
  import 'qrcode';
26
- import '../../index-CA6-uLMn.js';
27
- import { C as Command } from '../../Command-VWMnGslo.js';
27
+ import '../../index-hoHfGrjg.js';
28
+ import { C as Command } from '../../Command-DN1j3tjt.js';
28
29
  import 'crypto-js';
29
30
  import '@expo/apple-utils/build/index.js';
30
31
  import 'node:crypto';
@@ -34,7 +35,9 @@ import 'readline-sync';
34
35
  import 'isomorphic-git';
35
36
  import 'deepmerge';
36
37
  import 'ini';
37
- import '../../useAndroidServiceAccountTestResult-DueKynFy.js';
38
+ import 'fs';
39
+ import 'path';
40
+ import '../../useAndroidServiceAccountTestResult-CwKeW0ED.js';
38
41
 
39
42
  class ApiKeyList extends BaseAuthenticatedCommand {
40
43
  static args = {};
@@ -65,10 +68,10 @@ class ApiKeyList extends BaseAuthenticatedCommand {
65
68
  const params = flags;
66
69
  const apiKeysListResponse = await getAPIKeys(params);
67
70
  const data = apiKeysListResponse.data.map((apiKey) => ({
68
- id: getShortUUID(apiKey.id),
69
- name: apiKey.name,
70
71
  expiresAt: getShortDate(apiKey.expiresAt),
72
+ id: getShortUUID(apiKey.id),
71
73
  lastUsedAt: apiKey.lastUsedAt ? getShortDate(apiKey.lastUsedAt) : "Never",
74
+ name: apiKey.name,
72
75
  revokedAt: apiKey.revokedAt ? getShortDate(apiKey.revokedAt) : "Active"
73
76
  }));
74
77
  const emptyState = /* @__PURE__ */ jsxs(Box, { flexDirection: "column", children: [