shipthis 0.1.35 → 0.1.37
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 +231 -80
- package/assets/markdown/agreement-update.md.ejs +12 -0
- package/assets/markdown/confirm-delete-android-keystore.md.ejs +22 -0
- package/assets/markdown/confirm-delete-android-serviceaccountkey.md.ejs +24 -0
- package/assets/markdown/confirm-delete-apple-credential.md.ejs +29 -0
- package/dist/{AppleBundleIdDetails-N_j1wv6f.js → AppleBundleIdDetails-KMzyex1H.js} +3 -5
- package/dist/{Command-DN1j3tjt.js → Command-CHh8RDXK.js} +1 -2
- package/dist/{CommandGame-D2NqytWc.js → CommandGame-Rvmsa7b0.js} +2 -2
- package/dist/{Create-BRdv5jXQ.js → Create-DInZ_pw-.js} +1 -4
- package/dist/{GameStatus-joyHPy0f.js → GameStatus-D7ID10tS.js} +1 -4
- package/dist/{Import-BNMHsJoM.js → Import-BmO8EYKj.js} +2 -5
- package/dist/{JobLogTail-D35FO5v-.js → JobLogTail-CYdceTKL.js} +2 -5
- package/dist/{JobProgress-D-9KESaA.js → JobProgress-DBCYbWrO.js} +16 -18
- package/dist/{JobStatusTable-DIJ_h-gi.js → JobStatusTable-DhnhY1_i.js} +2 -4
- package/dist/{ProjectCredentialsTable-BMKgv99h.js → ProjectCredentialsTable-BDYVYqAq.js} +5 -3
- package/dist/{UserCredentialsTable-CUrTDzTK.js → UserCredentialsTable-cDPvjF-F.js} +4 -4
- package/dist/{baseAppleCommand-Cs9a52e5.js → baseAppleCommand-CQ5dOna7.js} +1 -1
- package/dist/{baseGameAndroidCommand-BCB1SMCf.js → baseGameAndroidCommand-D4ryZS6A.js} +1 -2
- package/dist/commands/apiKey/create.js +3 -6
- package/dist/commands/apiKey/list.js +3 -6
- package/dist/commands/apiKey/revoke.js +3 -6
- package/dist/commands/apple/apiKey/create.js +7 -10
- package/dist/commands/apple/apiKey/delete.js +118 -0
- package/dist/commands/apple/apiKey/export.js +6 -9
- package/dist/commands/apple/apiKey/import.js +6 -9
- package/dist/commands/apple/apiKey/status.js +4 -7
- package/dist/commands/apple/certificate/create.js +7 -10
- package/dist/commands/apple/certificate/delete.js +127 -0
- package/dist/commands/apple/certificate/export.js +6 -9
- package/dist/commands/apple/certificate/import.js +6 -9
- package/dist/commands/apple/certificate/status.js +4 -7
- package/dist/commands/apple/login.js +23 -4
- package/dist/commands/apple/status.js +4 -7
- package/dist/commands/dashboard.js +12 -1
- package/dist/commands/game/android/apiKey/connect.js +8 -11
- package/dist/commands/game/android/apiKey/create.js +10 -13
- package/dist/commands/game/android/apiKey/delete.js +100 -0
- package/dist/commands/game/android/apiKey/export.js +6 -9
- package/dist/commands/game/android/apiKey/import.js +6 -9
- package/dist/commands/game/android/apiKey/invite.js +14 -4
- package/dist/commands/game/android/apiKey/policy.js +3 -6
- package/dist/commands/game/android/apiKey/status.js +6 -9
- package/dist/commands/game/android/keyStore/create.js +7 -10
- package/dist/commands/game/android/keyStore/delete.js +100 -0
- package/dist/commands/game/android/keyStore/export.js +5 -8
- package/dist/commands/game/android/keyStore/import.js +8 -11
- package/dist/commands/game/android/keyStore/status.js +7 -10
- package/dist/commands/game/android/status.js +13 -1
- package/dist/commands/game/build/download.js +3 -6
- package/dist/commands/game/build/list.js +4 -7
- package/dist/commands/game/create.js +13 -2
- package/dist/commands/game/details.js +4 -7
- package/dist/commands/game/export.js +13 -1
- package/dist/commands/game/ios/app/addTester.js +4 -7
- package/dist/commands/game/ios/app/create.js +3 -6
- package/dist/commands/game/ios/app/status.js +6 -9
- package/dist/commands/game/ios/app/sync.js +4 -7
- package/dist/commands/game/ios/profile/create.js +6 -9
- package/dist/commands/game/ios/profile/delete.js +123 -0
- package/dist/commands/game/ios/profile/export.js +5 -8
- package/dist/commands/game/ios/profile/import.js +5 -8
- package/dist/commands/game/ios/profile/status.js +8 -51
- package/dist/commands/game/ios/status.js +10 -13
- package/dist/commands/game/ios/wizard.js +2 -6
- package/dist/commands/game/job/list.js +3 -6
- package/dist/commands/game/job/status.js +8 -11
- package/dist/commands/game/list.js +3 -6
- package/dist/commands/game/ship.js +17 -14
- package/dist/commands/game/status.js +7 -10
- package/dist/commands/game/wizard.js +14 -17
- package/dist/commands/internal/fastlane.js +13 -1
- package/dist/commands/internal/readme.js +13 -4
- package/dist/commands/login.js +27 -4
- package/dist/commands/status.js +6 -8
- package/dist/{export-DFCZKNQk.js → export-DujIwhJw.js} +1 -1
- package/dist/{import-BpGyif-m.js → import-DGCqCAcC.js} +1 -1
- package/dist/{index-DlE_SPt3.js → index-9LxGafAo.js} +3 -5
- package/dist/{index-BTXEUd8W.js → index-BPh_qt7t.js} +4 -6
- package/dist/index-CNsmEDXi.js +48 -0
- package/dist/index-CmuXyPed.js +1905 -0
- package/dist/{upload-D19OQsbn.js → upload-D4x4yCia.js} +1 -1
- package/dist/{useAppleApp-BZc_cNa-.js → useAppleApp-taaewPSf.js} +1 -1
- package/dist/{useAppleBundleId-DvMXAvWD.js → useAppleBundleId-BeGViMe7.js} +1 -1
- package/dist/useAppleProfiles-1TtO0aO6.js +63 -0
- package/dist/{useGoogleStatus-Cx_QIsXa.js → useGoogleStatus-CSsxEvX7.js} +1 -2
- package/dist/{useProjectCredentials-DxdwJCfU.js → useProjectCredentials-Cm50WMZU.js} +1 -3
- package/dist/{useWebSocket-cM5yOcDv.js → useWebSocket-BVfn36be.js} +1 -1
- package/docs/apple/apiKey/delete.md +25 -0
- package/docs/apple/apiKey.md +26 -0
- package/docs/apple/certificate/delete.md +25 -0
- package/docs/apple/certificate.md +26 -0
- package/docs/assets/st.png +0 -0
- package/docs/game/android/apiKey/delete.md +25 -0
- package/docs/game/android/apiKey.md +26 -0
- package/docs/game/android/keyStore/delete.md +25 -0
- package/docs/game/android/keyStore.md +26 -0
- package/docs/game/ios/profile/delete.md +26 -0
- package/docs/game/ios/profile.md +27 -0
- package/docs/game/ship.md +4 -4
- package/docs/login.md +6 -2
- package/docs/status.md +1 -1
- package/package.json +13 -2
- package/dist/ejs-DirFZbza.js +0 -716
- package/dist/index-BwnzoldS.js +0 -784
- package/dist/index-CJWMt1s-.js +0 -153
- package/dist/index-hoHfGrjg.js +0 -221
- package/dist/index-izrACZbC.js +0 -24
- package/dist/useAndroidServiceAccountTestResult-CwKeW0ED.js +0 -50
|
@@ -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-
|
|
4
|
+
import { g as getUserCredentials } from '../../../index-CNsmEDXi.js';
|
|
5
5
|
import forge from 'node-forge';
|
|
6
|
-
import {
|
|
6
|
+
import { p as CertificateType, d as Certificate, P as Platform, C as CredentialsType } from '../../../index-CmuXyPed.js';
|
|
7
7
|
import 'ink-spinner';
|
|
8
8
|
import 'node:crypto';
|
|
9
9
|
import 'node:fs';
|
|
@@ -26,22 +26,19 @@ import 'string-length';
|
|
|
26
26
|
import 'strip-ansi';
|
|
27
27
|
import 'open';
|
|
28
28
|
import '@inkjs/ui';
|
|
29
|
-
import '../../../ejs-DirFZbza.js';
|
|
30
29
|
import 'marked';
|
|
31
30
|
import 'marked-terminal';
|
|
32
31
|
import 'qrcode';
|
|
33
32
|
import { R as RunWithSpinner } from '../../../RunWithSpinner-DucRnFp6.js';
|
|
34
|
-
import '../../../
|
|
35
|
-
import {
|
|
36
|
-
import {
|
|
37
|
-
import
|
|
33
|
+
import { C as Command } from '../../../Command-CHh8RDXK.js';
|
|
34
|
+
import { B as BaseAppleCommand } from '../../../baseAppleCommand-CQ5dOna7.js';
|
|
35
|
+
import { u as uploadUserCredentials } from '../../../upload-D4x4yCia.js';
|
|
36
|
+
import 'chalk';
|
|
38
37
|
import '@expo/apple-utils/build/index.js';
|
|
39
38
|
import 'deepmerge';
|
|
40
39
|
import 'ini';
|
|
41
40
|
import 'fs';
|
|
42
41
|
import 'path';
|
|
43
|
-
import '../../../index-CJWMt1s-.js';
|
|
44
|
-
import '../../../useAndroidServiceAccountTestResult-CwKeW0ED.js';
|
|
45
42
|
|
|
46
43
|
function decodeCertificate(certificateContent) {
|
|
47
44
|
const decodedContent = forge.util.decode64(certificateContent);
|
|
@@ -94,7 +91,7 @@ class AppleCertificateCreate extends BaseAppleCommand {
|
|
|
94
91
|
const { force } = flags;
|
|
95
92
|
const userCredentials = await getUserCredentials();
|
|
96
93
|
const userAppleDistCredentials = userCredentials.filter(
|
|
97
|
-
(cred) => cred.platform === Platform.IOS && cred.type === CredentialsType.CERTIFICATE
|
|
94
|
+
(cred) => cred.platform === Platform.IOS && cred.type === CredentialsType.CERTIFICATE && cred.isActive
|
|
98
95
|
);
|
|
99
96
|
if (userAppleDistCredentials.length > 0 && !force) {
|
|
100
97
|
this.error("An Apple Distribution Certificate already exists. Use --force to overwrite it.");
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { Flags } from '@oclif/core';
|
|
2
|
+
import { P as Platform, C as CredentialsType, d as Certificate, g as getShortUUID, b as getRenderedMarkdown, c as getInput } from '../../../index-CmuXyPed.js';
|
|
3
|
+
import 'node:fs';
|
|
4
|
+
import 'axios';
|
|
5
|
+
import 'crypto-js';
|
|
6
|
+
import 'uuid';
|
|
7
|
+
import 'luxon';
|
|
8
|
+
import { g as getUserCredentials, d as deleteUserCredential } from '../../../index-CNsmEDXi.js';
|
|
9
|
+
import 'react/jsx-runtime';
|
|
10
|
+
import '@inkjs/ui';
|
|
11
|
+
import 'ink';
|
|
12
|
+
import 'ink-spinner';
|
|
13
|
+
import 'react';
|
|
14
|
+
import '@tanstack/react-query';
|
|
15
|
+
import 'fast-glob';
|
|
16
|
+
import 'yazl';
|
|
17
|
+
import 'socket.io-client';
|
|
18
|
+
import 'fullscreen-ink';
|
|
19
|
+
import 'string-length';
|
|
20
|
+
import 'strip-ansi';
|
|
21
|
+
import 'open';
|
|
22
|
+
import 'qrcode';
|
|
23
|
+
import { B as BaseAppleCommand } from '../../../baseAppleCommand-CQ5dOna7.js';
|
|
24
|
+
import 'node:path';
|
|
25
|
+
import 'chalk';
|
|
26
|
+
import '@expo/apple-utils/build/index.js';
|
|
27
|
+
import 'node:crypto';
|
|
28
|
+
import 'node:readline';
|
|
29
|
+
import 'node:url';
|
|
30
|
+
import 'readline-sync';
|
|
31
|
+
import 'isomorphic-git';
|
|
32
|
+
import 'deepmerge';
|
|
33
|
+
import 'ini';
|
|
34
|
+
import 'fs';
|
|
35
|
+
import 'path';
|
|
36
|
+
import 'marked';
|
|
37
|
+
import 'marked-terminal';
|
|
38
|
+
|
|
39
|
+
class AppleCertificateDelete extends BaseAppleCommand {
|
|
40
|
+
static args = {};
|
|
41
|
+
static description = "Delete an iOS Distribution Certificate from ShipThis and optionally from Apple";
|
|
42
|
+
static examples = [
|
|
43
|
+
"<%= config.bin %> <%= command.id %>",
|
|
44
|
+
"<%= config.bin %> <%= command.id %> --immediate --revokeInApple --iAmSure"
|
|
45
|
+
];
|
|
46
|
+
static flags = {
|
|
47
|
+
immediate: Flags.boolean({
|
|
48
|
+
char: "i",
|
|
49
|
+
description: "Remove from storage immediately (rather than waiting for automatic cleanup - cannot be undone)",
|
|
50
|
+
required: false
|
|
51
|
+
}),
|
|
52
|
+
iAmSure: Flags.boolean({
|
|
53
|
+
char: "y",
|
|
54
|
+
description: "I am sure I want to do this - do not prompt me",
|
|
55
|
+
required: false
|
|
56
|
+
}),
|
|
57
|
+
revokeInApple: Flags.boolean({
|
|
58
|
+
char: "a",
|
|
59
|
+
description: "Also revoke the Certificate in Apple (cannot be undone)",
|
|
60
|
+
required: false
|
|
61
|
+
})
|
|
62
|
+
};
|
|
63
|
+
async run() {
|
|
64
|
+
const { flags } = await this.parse(AppleCertificateDelete);
|
|
65
|
+
const { immediate, iAmSure, revokeInApple } = flags;
|
|
66
|
+
const userCredentials = await getUserCredentials();
|
|
67
|
+
const userCerts = userCredentials.filter(
|
|
68
|
+
(cred) => cred.platform === Platform.IOS && cred.type === CredentialsType.CERTIFICATE && cred.isActive
|
|
69
|
+
);
|
|
70
|
+
if (userCerts.length === 0) {
|
|
71
|
+
this.error("No iOS Distribution Certificate found which can be deleted.");
|
|
72
|
+
}
|
|
73
|
+
const [cert] = userCerts;
|
|
74
|
+
let appleCert = null;
|
|
75
|
+
let authState = null;
|
|
76
|
+
let ctx = null;
|
|
77
|
+
if (revokeInApple) {
|
|
78
|
+
authState = await this.refreshAppleAuthState();
|
|
79
|
+
ctx = authState.context;
|
|
80
|
+
const appleCerts = await Certificate.getAsync(ctx, {
|
|
81
|
+
query: {
|
|
82
|
+
filter: {
|
|
83
|
+
serialNumber: cert.serialNumber
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
if (appleCerts.length !== 1) {
|
|
88
|
+
this.error("The iOS Distribution Certificate was not found in Apple, so cannot be revoked there.");
|
|
89
|
+
}
|
|
90
|
+
appleCert = appleCerts[0];
|
|
91
|
+
}
|
|
92
|
+
const getAreYouSure = async () => {
|
|
93
|
+
if (iAmSure) return true;
|
|
94
|
+
const confirmString = getShortUUID(cert.id);
|
|
95
|
+
const prompt = getRenderedMarkdown({
|
|
96
|
+
filename: "confirm-delete-apple-credential.md.ejs",
|
|
97
|
+
templateVars: {
|
|
98
|
+
confirmString,
|
|
99
|
+
credentialType: "iOS Distribution Certificate",
|
|
100
|
+
exportCommand: `shipthis apple certificate export cert.zip`,
|
|
101
|
+
immediate,
|
|
102
|
+
revokeInApple
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
this.log(prompt);
|
|
106
|
+
const input = await getInput("");
|
|
107
|
+
return input.trim().toLowerCase() === confirmString.toLowerCase();
|
|
108
|
+
};
|
|
109
|
+
const areYouSure = await getAreYouSure();
|
|
110
|
+
if (!areYouSure) {
|
|
111
|
+
this.log("Aborting - not deleting the iOS Distribution Certificate");
|
|
112
|
+
this.exit(0);
|
|
113
|
+
}
|
|
114
|
+
await deleteUserCredential({
|
|
115
|
+
credentialId: cert.id,
|
|
116
|
+
isImmediate: immediate
|
|
117
|
+
});
|
|
118
|
+
this.log("The iOS Distribution Certificate has been deleted from ShipThis.");
|
|
119
|
+
if (revokeInApple && appleCert?.id) {
|
|
120
|
+
Certificate.deleteAsync(ctx, { id: appleCert.id });
|
|
121
|
+
this.log("The iOS Distribution Certificate has been deleted in Apple.");
|
|
122
|
+
}
|
|
123
|
+
await this.config.runCommand(`apple:certificate:status`, [!revokeInApple ? "--noAppleAuth" : ""].filter(Boolean));
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
export { AppleCertificateDelete as default };
|
|
@@ -2,8 +2,8 @@ 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-
|
|
6
|
-
import { B as BaseAuthenticatedCommand, P as Platform, C as CredentialsType } from '../../../index-
|
|
5
|
+
import { g as getUserCredentials } from '../../../index-CNsmEDXi.js';
|
|
6
|
+
import { B as BaseAuthenticatedCommand, P as Platform, C as CredentialsType } from '../../../index-CmuXyPed.js';
|
|
7
7
|
import 'ink-spinner';
|
|
8
8
|
import 'node:crypto';
|
|
9
9
|
import 'node:path';
|
|
@@ -25,21 +25,18 @@ import 'string-length';
|
|
|
25
25
|
import 'strip-ansi';
|
|
26
26
|
import 'open';
|
|
27
27
|
import '@inkjs/ui';
|
|
28
|
-
import '../../../ejs-DirFZbza.js';
|
|
29
28
|
import 'marked';
|
|
30
29
|
import 'marked-terminal';
|
|
31
30
|
import 'qrcode';
|
|
32
31
|
import { R as RunWithSpinner } from '../../../RunWithSpinner-DucRnFp6.js';
|
|
33
|
-
import '../../../
|
|
34
|
-
import {
|
|
35
|
-
import
|
|
32
|
+
import { C as Command } from '../../../Command-CHh8RDXK.js';
|
|
33
|
+
import { e as exportCredential } from '../../../export-DujIwhJw.js';
|
|
34
|
+
import 'chalk';
|
|
36
35
|
import '@expo/apple-utils/build/index.js';
|
|
37
36
|
import 'deepmerge';
|
|
38
37
|
import 'ini';
|
|
39
38
|
import 'fs';
|
|
40
39
|
import 'path';
|
|
41
|
-
import '../../../index-CJWMt1s-.js';
|
|
42
|
-
import '../../../useAndroidServiceAccountTestResult-CwKeW0ED.js';
|
|
43
40
|
|
|
44
41
|
class AppleCertificateExport extends BaseAuthenticatedCommand {
|
|
45
42
|
static args = {
|
|
@@ -60,7 +57,7 @@ class AppleCertificateExport extends BaseAuthenticatedCommand {
|
|
|
60
57
|
}
|
|
61
58
|
const userCredentials = await getUserCredentials();
|
|
62
59
|
const userAppleDistCredentials = userCredentials.filter(
|
|
63
|
-
(cred) => cred.platform === Platform.IOS && cred.type === CredentialsType.CERTIFICATE
|
|
60
|
+
(cred) => cred.platform === Platform.IOS && cred.type === CredentialsType.CERTIFICATE && cred.isActive
|
|
64
61
|
);
|
|
65
62
|
if (userAppleDistCredentials.length === 0) {
|
|
66
63
|
this.error("No Apple Distribution Certificate found which can be exported.");
|
|
@@ -2,8 +2,8 @@ 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-
|
|
6
|
-
import { B as BaseAuthenticatedCommand, P as Platform, C as CredentialsType } from '../../../index-
|
|
5
|
+
import { g as getUserCredentials } from '../../../index-CNsmEDXi.js';
|
|
6
|
+
import { B as BaseAuthenticatedCommand, P as Platform, C as CredentialsType } from '../../../index-CmuXyPed.js';
|
|
7
7
|
import 'ink-spinner';
|
|
8
8
|
import 'node:crypto';
|
|
9
9
|
import 'node:path';
|
|
@@ -25,21 +25,18 @@ import 'string-length';
|
|
|
25
25
|
import 'strip-ansi';
|
|
26
26
|
import 'open';
|
|
27
27
|
import '@inkjs/ui';
|
|
28
|
-
import '../../../ejs-DirFZbza.js';
|
|
29
28
|
import 'marked';
|
|
30
29
|
import 'marked-terminal';
|
|
31
30
|
import 'qrcode';
|
|
32
31
|
import { R as RunWithSpinner } from '../../../RunWithSpinner-DucRnFp6.js';
|
|
33
|
-
import '../../../
|
|
34
|
-
import {
|
|
35
|
-
import
|
|
32
|
+
import { C as Command } from '../../../Command-CHh8RDXK.js';
|
|
33
|
+
import { i as importCredential } from '../../../import-DGCqCAcC.js';
|
|
34
|
+
import 'chalk';
|
|
36
35
|
import '@expo/apple-utils/build/index.js';
|
|
37
36
|
import 'deepmerge';
|
|
38
37
|
import 'ini';
|
|
39
38
|
import 'fs';
|
|
40
39
|
import 'path';
|
|
41
|
-
import '../../../index-CJWMt1s-.js';
|
|
42
|
-
import '../../../useAndroidServiceAccountTestResult-CwKeW0ED.js';
|
|
43
40
|
|
|
44
41
|
class AppleCertificateImport extends BaseAuthenticatedCommand {
|
|
45
42
|
static args = {
|
|
@@ -63,7 +60,7 @@ class AppleCertificateImport extends BaseAuthenticatedCommand {
|
|
|
63
60
|
}
|
|
64
61
|
const userCredentials = await getUserCredentials();
|
|
65
62
|
const userAppleDistCredentials = userCredentials.filter(
|
|
66
|
-
(cred) => cred.platform === Platform.IOS && cred.type === CredentialsType.CERTIFICATE
|
|
63
|
+
(cred) => cred.platform === Platform.IOS && cred.type === CredentialsType.CERTIFICATE && cred.isActive
|
|
67
64
|
);
|
|
68
65
|
if (userAppleDistCredentials.length > 0 && !force) {
|
|
69
66
|
this.error("An Apple Distribution Certificate already exists. Use --force to overwrite it.");
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { Flags } from '@oclif/core';
|
|
3
3
|
import { Box, Text, render } from 'ink';
|
|
4
|
-
import {
|
|
4
|
+
import { g as getShortUUID, f as getShortDate, d as Certificate, p as CertificateType, P as Platform, C as CredentialsType, B as BaseAuthenticatedCommand } from '../../../index-CmuXyPed.js';
|
|
5
5
|
import Spinner from 'ink-spinner';
|
|
6
6
|
import 'node:crypto';
|
|
7
7
|
import 'node:fs';
|
|
@@ -23,22 +23,19 @@ import 'fullscreen-ink';
|
|
|
23
23
|
import 'string-length';
|
|
24
24
|
import 'strip-ansi';
|
|
25
25
|
import 'open';
|
|
26
|
-
import { u as useUserCredentials, U as UserCredentialsTable } from '../../../UserCredentialsTable-
|
|
26
|
+
import { u as useUserCredentials, U as UserCredentialsTable } from '../../../UserCredentialsTable-cDPvjF-F.js';
|
|
27
27
|
import '@inkjs/ui';
|
|
28
|
-
import '../../../ejs-DirFZbza.js';
|
|
29
28
|
import 'marked';
|
|
30
29
|
import 'marked-terminal';
|
|
31
30
|
import 'qrcode';
|
|
32
|
-
import '../../../index-hoHfGrjg.js';
|
|
33
|
-
import { g as getShortUUID } from '../../../index-CJWMt1s-.js';
|
|
34
31
|
import { T as Table } from '../../../Table-FaNgpyeq.js';
|
|
35
32
|
import { T as Title } from '../../../Title-BCQtayg6.js';
|
|
36
33
|
import { N as NextSteps } from '../../../NextSteps-DbJHmscQ.js';
|
|
37
|
-
import { C as Command } from '../../../Command-
|
|
34
|
+
import { C as Command } from '../../../Command-CHh8RDXK.js';
|
|
35
|
+
import 'chalk';
|
|
38
36
|
import '@expo/apple-utils/build/index.js';
|
|
39
37
|
import 'deepmerge';
|
|
40
38
|
import 'ini';
|
|
41
|
-
import '../../../useAndroidServiceAccountTestResult-CwKeW0ED.js';
|
|
42
39
|
import 'fs';
|
|
43
40
|
import 'path';
|
|
44
41
|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { Flags } from '@oclif/core';
|
|
2
|
-
import {
|
|
3
|
-
import { a as getInput, e as getMaskedInput } from '../../index-CJWMt1s-.js';
|
|
2
|
+
import { ak as Auth, B as BaseAuthenticatedCommand, c as getInput, al as getMaskedInput } from '../../index-CmuXyPed.js';
|
|
4
3
|
import 'node:fs';
|
|
5
4
|
import 'axios';
|
|
6
5
|
import 'crypto-js';
|
|
7
6
|
import 'uuid';
|
|
8
7
|
import 'luxon';
|
|
9
8
|
import 'node:path';
|
|
9
|
+
import 'chalk';
|
|
10
10
|
import '@expo/apple-utils/build/index.js';
|
|
11
11
|
import 'node:crypto';
|
|
12
12
|
import 'node:readline';
|
|
@@ -22,6 +22,17 @@ import 'yazl';
|
|
|
22
22
|
import 'socket.io-client';
|
|
23
23
|
import 'fullscreen-ink';
|
|
24
24
|
import 'ink';
|
|
25
|
+
import 'react/jsx-runtime';
|
|
26
|
+
import 'ink-spinner';
|
|
27
|
+
import 'string-length';
|
|
28
|
+
import 'strip-ansi';
|
|
29
|
+
import 'open';
|
|
30
|
+
import '@inkjs/ui';
|
|
31
|
+
import 'fs';
|
|
32
|
+
import 'path';
|
|
33
|
+
import 'marked';
|
|
34
|
+
import 'marked-terminal';
|
|
35
|
+
import 'qrcode';
|
|
25
36
|
|
|
26
37
|
async function getNewAuthState(username, password) {
|
|
27
38
|
const authState = await Auth.loginAsync({
|
|
@@ -36,7 +47,8 @@ class AppleLogin extends BaseAuthenticatedCommand {
|
|
|
36
47
|
static description = "Authenticate with Apple - saves the session to the auth file";
|
|
37
48
|
static examples = [
|
|
38
49
|
"<%= config.bin %> <%= command.id %>",
|
|
39
|
-
"<%= config.bin %> <%= command.id %> --force --appleEmail me@email.nowhere"
|
|
50
|
+
"<%= config.bin %> <%= command.id %> --force --appleEmail me@email.nowhere",
|
|
51
|
+
"<%= config.bin %> <%= command.id %> --logout"
|
|
40
52
|
];
|
|
41
53
|
static flags = {
|
|
42
54
|
appleEmail: Flags.string({
|
|
@@ -44,10 +56,17 @@ class AppleLogin extends BaseAuthenticatedCommand {
|
|
|
44
56
|
description: "Your Apple Developer email address"
|
|
45
57
|
}),
|
|
46
58
|
force: Flags.boolean({ char: "f" }),
|
|
47
|
-
quiet: Flags.boolean({ char: "q", description: "Avoid output except for interactions and errors" })
|
|
59
|
+
quiet: Flags.boolean({ char: "q", description: "Avoid output except for interactions and errors" }),
|
|
60
|
+
logout: Flags.boolean({ char: "l", description: "Forget the saved Apple session (log out)" })
|
|
48
61
|
};
|
|
49
62
|
async run() {
|
|
50
63
|
const { flags } = this;
|
|
64
|
+
if (flags.logout) {
|
|
65
|
+
await this.setAppleCookies(void 0);
|
|
66
|
+
if (!this.flags.quiet) this.log("You have been logged out of Apple.");
|
|
67
|
+
await this.config.runCommand(`apple:status`);
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
51
70
|
const isLoggedIn = await this.hasValidAppleAuthState();
|
|
52
71
|
if (isLoggedIn && !flags.force) {
|
|
53
72
|
throw new Error("You are already logged in to Apple. Use --force to re-authenticate.");
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { render } from 'ink';
|
|
3
|
-
import { B as BaseAuthenticatedCommand } from '../../index-
|
|
3
|
+
import { B as BaseAuthenticatedCommand } from '../../index-CmuXyPed.js';
|
|
4
4
|
import 'ink-spinner';
|
|
5
5
|
import 'node:crypto';
|
|
6
6
|
import 'node:fs';
|
|
@@ -25,21 +25,18 @@ import 'strip-ansi';
|
|
|
25
25
|
import { S as StatusTable } from '../../StatusTable-DzRWcMr4.js';
|
|
26
26
|
import 'open';
|
|
27
27
|
import '@inkjs/ui';
|
|
28
|
-
import '../../ejs-DirFZbza.js';
|
|
29
28
|
import 'marked';
|
|
30
29
|
import 'marked-terminal';
|
|
31
30
|
import { N as NextSteps } from '../../NextSteps-DbJHmscQ.js';
|
|
32
31
|
import 'qrcode';
|
|
33
|
-
import '../../
|
|
34
|
-
import
|
|
32
|
+
import { C as Command } from '../../Command-CHh8RDXK.js';
|
|
33
|
+
import 'chalk';
|
|
35
34
|
import '@expo/apple-utils/build/index.js';
|
|
36
35
|
import 'deepmerge';
|
|
37
36
|
import 'ini';
|
|
38
|
-
import '../../Title-BCQtayg6.js';
|
|
39
37
|
import 'fs';
|
|
40
38
|
import 'path';
|
|
41
|
-
import '../../
|
|
42
|
-
import '../../useAndroidServiceAccountTestResult-CwKeW0ED.js';
|
|
39
|
+
import '../../Title-BCQtayg6.js';
|
|
43
40
|
|
|
44
41
|
class AppleStatus extends BaseAuthenticatedCommand {
|
|
45
42
|
static args = {};
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import open from 'open';
|
|
2
|
-
import { B as BaseAuthenticatedCommand,
|
|
2
|
+
import { B as BaseAuthenticatedCommand, ah as getSingleUseUrl } from '../index-CmuXyPed.js';
|
|
3
3
|
import 'node:fs';
|
|
4
4
|
import 'axios';
|
|
5
5
|
import 'crypto-js';
|
|
6
6
|
import 'uuid';
|
|
7
7
|
import 'luxon';
|
|
8
8
|
import 'node:path';
|
|
9
|
+
import 'chalk';
|
|
9
10
|
import '@oclif/core';
|
|
10
11
|
import '@expo/apple-utils/build/index.js';
|
|
11
12
|
import 'node:crypto';
|
|
@@ -22,6 +23,16 @@ import 'yazl';
|
|
|
22
23
|
import 'socket.io-client';
|
|
23
24
|
import 'fullscreen-ink';
|
|
24
25
|
import 'ink';
|
|
26
|
+
import 'react/jsx-runtime';
|
|
27
|
+
import 'ink-spinner';
|
|
28
|
+
import 'string-length';
|
|
29
|
+
import 'strip-ansi';
|
|
30
|
+
import '@inkjs/ui';
|
|
31
|
+
import 'fs';
|
|
32
|
+
import 'path';
|
|
33
|
+
import 'marked';
|
|
34
|
+
import 'marked-terminal';
|
|
35
|
+
import 'qrcode';
|
|
25
36
|
|
|
26
37
|
class Dashboard extends BaseAuthenticatedCommand {
|
|
27
38
|
static args = {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { Flags } from '@oclif/core';
|
|
3
3
|
import { render } from 'ink';
|
|
4
|
-
import {
|
|
4
|
+
import { a2 as getGoogleStatus, ab as disconnectGoogle } from '../../../../index-CmuXyPed.js';
|
|
5
5
|
import 'ink-spinner';
|
|
6
6
|
import 'node:crypto';
|
|
7
7
|
import 'node:fs';
|
|
@@ -22,26 +22,23 @@ import 'fullscreen-ink';
|
|
|
22
22
|
import 'string-length';
|
|
23
23
|
import 'strip-ansi';
|
|
24
24
|
import 'open';
|
|
25
|
-
import { C as ConnectGoogle } from '../../../../index-
|
|
26
|
-
import '../../../../index-hoHfGrjg.js';
|
|
25
|
+
import { C as ConnectGoogle } from '../../../../index-9LxGafAo.js';
|
|
27
26
|
import '@inkjs/ui';
|
|
28
|
-
import '../../../../ejs-DirFZbza.js';
|
|
29
27
|
import 'marked';
|
|
30
28
|
import 'marked-terminal';
|
|
31
29
|
import 'qrcode';
|
|
32
|
-
import { C as CommandGame } from '../../../../CommandGame-
|
|
33
|
-
import { B as BaseGameAndroidCommand } from '../../../../baseGameAndroidCommand-
|
|
30
|
+
import { C as CommandGame } from '../../../../CommandGame-Rvmsa7b0.js';
|
|
31
|
+
import { B as BaseGameAndroidCommand } from '../../../../baseGameAndroidCommand-D4ryZS6A.js';
|
|
34
32
|
import 'crypto-js';
|
|
33
|
+
import 'chalk';
|
|
35
34
|
import '@expo/apple-utils/build/index.js';
|
|
36
35
|
import 'deepmerge';
|
|
37
36
|
import 'ini';
|
|
38
|
-
import '../../../../useGoogleStatus-Cx_QIsXa.js';
|
|
39
|
-
import '../../../../useAndroidServiceAccountTestResult-CwKeW0ED.js';
|
|
40
|
-
import '../../../../useWebSocket-cM5yOcDv.js';
|
|
41
|
-
import '../../../../index-CJWMt1s-.js';
|
|
42
37
|
import 'fs';
|
|
43
38
|
import 'path';
|
|
44
|
-
import '../../../../
|
|
39
|
+
import '../../../../useGoogleStatus-CSsxEvX7.js';
|
|
40
|
+
import '../../../../useWebSocket-BVfn36be.js';
|
|
41
|
+
import '../../../../Command-CHh8RDXK.js';
|
|
45
42
|
|
|
46
43
|
class GameAndroidApiKeyConnect extends BaseGameAndroidCommand {
|
|
47
44
|
static args = {};
|
|
@@ -5,9 +5,9 @@ import 'node:fs';
|
|
|
5
5
|
import 'axios';
|
|
6
6
|
import 'crypto-js';
|
|
7
7
|
import 'uuid';
|
|
8
|
-
import { P as Platform, C as CredentialsType } from '../../../../index-
|
|
8
|
+
import { P as Platform, C as CredentialsType } from '../../../../index-CmuXyPed.js';
|
|
9
9
|
import 'luxon';
|
|
10
|
-
import { a as getProjectCredentials } from '../../../../index-
|
|
10
|
+
import { a as getProjectCredentials } from '../../../../index-CNsmEDXi.js';
|
|
11
11
|
import 'ink-spinner';
|
|
12
12
|
import 'node:crypto';
|
|
13
13
|
import 'node:path';
|
|
@@ -25,26 +25,23 @@ import 'string-length';
|
|
|
25
25
|
import 'strip-ansi';
|
|
26
26
|
import 'open';
|
|
27
27
|
import '@inkjs/ui';
|
|
28
|
-
import '../../../../ejs-DirFZbza.js';
|
|
29
28
|
import 'marked';
|
|
30
29
|
import 'marked-terminal';
|
|
31
30
|
import 'qrcode';
|
|
32
|
-
import '../../../../index-
|
|
33
|
-
import { C as
|
|
34
|
-
import {
|
|
35
|
-
import
|
|
31
|
+
import { C as CreateServiceAccountKey } from '../../../../index-BPh_qt7t.js';
|
|
32
|
+
import { C as CommandGame } from '../../../../CommandGame-Rvmsa7b0.js';
|
|
33
|
+
import { B as BaseGameAndroidCommand } from '../../../../baseGameAndroidCommand-D4ryZS6A.js';
|
|
34
|
+
import 'chalk';
|
|
36
35
|
import '@expo/apple-utils/build/index.js';
|
|
37
36
|
import 'deepmerge';
|
|
38
37
|
import 'ini';
|
|
39
38
|
import 'fs';
|
|
40
39
|
import 'path';
|
|
41
|
-
import '../../../../
|
|
42
|
-
import '../../../../
|
|
43
|
-
import '../../../../
|
|
44
|
-
import '../../../../useProjectCredentials-DxdwJCfU.js';
|
|
45
|
-
import '../../../../useGoogleStatus-Cx_QIsXa.js';
|
|
40
|
+
import '../../../../useWebSocket-BVfn36be.js';
|
|
41
|
+
import '../../../../useProjectCredentials-Cm50WMZU.js';
|
|
42
|
+
import '../../../../useGoogleStatus-CSsxEvX7.js';
|
|
46
43
|
import '../../../../ProgressSpinner-Um6ARKlk.js';
|
|
47
|
-
import '../../../../Command-
|
|
44
|
+
import '../../../../Command-CHh8RDXK.js';
|
|
48
45
|
|
|
49
46
|
class GameAndroidApiKeyCreate extends BaseGameAndroidCommand {
|
|
50
47
|
static args = {};
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { Flags } from '@oclif/core';
|
|
2
|
+
import { P as Platform, C as CredentialsType, g as getShortUUID, b as getRenderedMarkdown, c as getInput } from '../../../../index-CmuXyPed.js';
|
|
3
|
+
import 'node:fs';
|
|
4
|
+
import 'axios';
|
|
5
|
+
import 'crypto-js';
|
|
6
|
+
import 'uuid';
|
|
7
|
+
import 'luxon';
|
|
8
|
+
import { a as getProjectCredentials, b as deleteProjectCredential } from '../../../../index-CNsmEDXi.js';
|
|
9
|
+
import 'react/jsx-runtime';
|
|
10
|
+
import 'ink';
|
|
11
|
+
import 'ink-spinner';
|
|
12
|
+
import 'react';
|
|
13
|
+
import '@tanstack/react-query';
|
|
14
|
+
import 'fast-glob';
|
|
15
|
+
import 'yazl';
|
|
16
|
+
import 'socket.io-client';
|
|
17
|
+
import 'fullscreen-ink';
|
|
18
|
+
import 'string-length';
|
|
19
|
+
import 'strip-ansi';
|
|
20
|
+
import 'open';
|
|
21
|
+
import '@inkjs/ui';
|
|
22
|
+
import 'qrcode';
|
|
23
|
+
import { B as BaseGameAndroidCommand } from '../../../../baseGameAndroidCommand-D4ryZS6A.js';
|
|
24
|
+
import 'node:path';
|
|
25
|
+
import 'chalk';
|
|
26
|
+
import '@expo/apple-utils/build/index.js';
|
|
27
|
+
import 'node:crypto';
|
|
28
|
+
import 'node:readline';
|
|
29
|
+
import 'node:url';
|
|
30
|
+
import 'readline-sync';
|
|
31
|
+
import 'isomorphic-git';
|
|
32
|
+
import 'deepmerge';
|
|
33
|
+
import 'ini';
|
|
34
|
+
import 'fs';
|
|
35
|
+
import 'path';
|
|
36
|
+
import 'marked';
|
|
37
|
+
import 'marked-terminal';
|
|
38
|
+
|
|
39
|
+
class GameAndroidApiKeyDelete extends BaseGameAndroidCommand {
|
|
40
|
+
static args = {};
|
|
41
|
+
static description = "Delete the active Android API Key from ShipThis";
|
|
42
|
+
static examples = [
|
|
43
|
+
"<%= config.bin %> <%= command.id %>",
|
|
44
|
+
"<%= config.bin %> <%= command.id %> --immediate --iAmSure"
|
|
45
|
+
];
|
|
46
|
+
static flags = {
|
|
47
|
+
...BaseGameAndroidCommand.flags,
|
|
48
|
+
immediate: Flags.boolean({
|
|
49
|
+
char: "i",
|
|
50
|
+
description: "Remove from storage immediately (rather than waiting for automatic cleanup - cannot be undone)",
|
|
51
|
+
required: false
|
|
52
|
+
}),
|
|
53
|
+
iAmSure: Flags.boolean({
|
|
54
|
+
char: "y",
|
|
55
|
+
description: "I am sure I want to do this - do not prompt me",
|
|
56
|
+
required: false
|
|
57
|
+
})
|
|
58
|
+
};
|
|
59
|
+
async run() {
|
|
60
|
+
const { flags } = await this.parse(GameAndroidApiKeyDelete);
|
|
61
|
+
const { immediate, iAmSure } = flags;
|
|
62
|
+
const game = await this.getGame();
|
|
63
|
+
const projectCredentials = await getProjectCredentials(game.id);
|
|
64
|
+
const activeKeys = projectCredentials.filter(
|
|
65
|
+
(cred) => cred.platform === Platform.ANDROID && cred.type === CredentialsType.KEY && cred.isActive
|
|
66
|
+
);
|
|
67
|
+
if (activeKeys.length === 0) {
|
|
68
|
+
this.log("No active Android API Key found which can be deleted.");
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
const [apiKey] = activeKeys;
|
|
72
|
+
const getAreYouSure = async () => {
|
|
73
|
+
if (iAmSure) return true;
|
|
74
|
+
const confirmString = getShortUUID(apiKey.id);
|
|
75
|
+
const prompt = getRenderedMarkdown({
|
|
76
|
+
filename: "confirm-delete-android-serviceaccountkey.md.ejs",
|
|
77
|
+
templateVars: {
|
|
78
|
+
confirmString,
|
|
79
|
+
exportCommand: `shipthis game android apiKey export apiKey.json`,
|
|
80
|
+
immediate
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
this.log(prompt);
|
|
84
|
+
const input = await getInput("");
|
|
85
|
+
return input.trim().toLowerCase() === confirmString.toLowerCase();
|
|
86
|
+
};
|
|
87
|
+
const areYouSure = await getAreYouSure();
|
|
88
|
+
if (!areYouSure) {
|
|
89
|
+
this.log("Aborting - Android API Key not deleted");
|
|
90
|
+
this.exit(0);
|
|
91
|
+
}
|
|
92
|
+
await deleteProjectCredential(game.id, {
|
|
93
|
+
credentialId: apiKey.id,
|
|
94
|
+
isImmediate: immediate
|
|
95
|
+
});
|
|
96
|
+
this.log("The Android API Key has been deleted from ShipThis.");
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export { GameAndroidApiKeyDelete as default };
|
|
@@ -2,8 +2,8 @@ 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 { a as getProjectCredentials } from '../../../../index-
|
|
6
|
-
import { P as Platform, C as CredentialsType } from '../../../../index-
|
|
5
|
+
import { a as getProjectCredentials } from '../../../../index-CNsmEDXi.js';
|
|
6
|
+
import { P as Platform, C as CredentialsType } from '../../../../index-CmuXyPed.js';
|
|
7
7
|
import 'ink-spinner';
|
|
8
8
|
import 'node:crypto';
|
|
9
9
|
import 'node:path';
|
|
@@ -25,22 +25,19 @@ import 'string-length';
|
|
|
25
25
|
import 'strip-ansi';
|
|
26
26
|
import 'open';
|
|
27
27
|
import '@inkjs/ui';
|
|
28
|
-
import '../../../../ejs-DirFZbza.js';
|
|
29
28
|
import 'marked';
|
|
30
29
|
import 'marked-terminal';
|
|
31
30
|
import 'qrcode';
|
|
32
31
|
import { R as RunWithSpinner } from '../../../../RunWithSpinner-DucRnFp6.js';
|
|
33
|
-
import '../../../../
|
|
34
|
-
import {
|
|
35
|
-
import {
|
|
36
|
-
import
|
|
32
|
+
import { C as Command } from '../../../../Command-CHh8RDXK.js';
|
|
33
|
+
import { B as BaseGameAndroidCommand } from '../../../../baseGameAndroidCommand-D4ryZS6A.js';
|
|
34
|
+
import { e as exportCredential } from '../../../../export-DujIwhJw.js';
|
|
35
|
+
import 'chalk';
|
|
37
36
|
import '@expo/apple-utils/build/index.js';
|
|
38
37
|
import 'deepmerge';
|
|
39
38
|
import 'ini';
|
|
40
39
|
import 'fs';
|
|
41
40
|
import 'path';
|
|
42
|
-
import '../../../../index-CJWMt1s-.js';
|
|
43
|
-
import '../../../../useAndroidServiceAccountTestResult-CwKeW0ED.js';
|
|
44
41
|
|
|
45
42
|
class GameAndroidApiKeyExport extends BaseGameAndroidCommand {
|
|
46
43
|
static args = {
|