eas-cli 0.29.0 → 0.31.0
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 +26 -26
- package/build/analytics.js +6 -9
- package/build/build/android/build.js +6 -8
- package/build/build/android/configure.d.ts +6 -1
- package/build/build/android/configure.js +31 -5
- package/build/build/android/prepareJob.js +3 -3
- package/build/build/android/version.d.ts +15 -0
- package/build/build/android/version.js +75 -1
- package/build/build/context.d.ts +2 -0
- package/build/build/context.js +8 -0
- package/build/build/ios/UpdatesModule.js +3 -1
- package/build/build/ios/configure.js +1 -1
- package/build/build/ios/credentials.js +2 -7
- package/build/build/ios/prepareJob.js +3 -14
- package/build/build/ios/version.d.ts +1 -1
- package/build/build/ios/version.js +5 -23
- package/build/build/utils/printBuildInfo.js +1 -1
- package/build/build/utils/updates.js +1 -1
- package/build/build/utils/version.d.ts +7 -0
- package/build/build/utils/version.js +37 -0
- package/build/commands/branch/create.js +1 -4
- package/build/commands/branch/delete.js +1 -4
- package/build/commands/branch/list.js +1 -4
- package/build/commands/branch/publish.js +2 -5
- package/build/commands/branch/rename.js +1 -4
- package/build/commands/branch/view.js +1 -4
- package/build/commands/build/cancel.js +1 -2
- package/build/commands/build/configure.js +2 -2
- package/build/commands/build/index.js +15 -6
- package/build/commands/build/list.js +1 -2
- package/build/commands/build/view.js +1 -2
- package/build/commands/channel/create.js +1 -4
- package/build/commands/channel/edit.js +1 -4
- package/build/commands/channel/list.js +1 -4
- package/build/commands/channel/rollout.js +1 -4
- package/build/commands/channel/view.js +1 -4
- package/build/commands/config.js +1 -2
- package/build/commands/credentials.js +5 -1
- package/build/commands/device/list.js +1 -2
- package/build/commands/device/view.js +1 -2
- package/build/commands/project/info.js +1 -4
- package/build/commands/project/init.js +1 -4
- package/build/commands/secret/create.js +1 -2
- package/build/commands/secret/delete.js +1 -2
- package/build/commands/secret/list.js +1 -2
- package/build/commands/submit.js +2 -3
- package/build/commands/webhook/create.js +1 -4
- package/build/commands/webhook/delete.js +1 -4
- package/build/commands/webhook/list.js +1 -4
- package/build/credentials/android/AndroidCredentialsProvider.d.ts +2 -2
- package/build/credentials/android/actions/AssignFcm.d.ts +2 -2
- package/build/credentials/android/actions/AssignGoogleServiceAccountKey.d.ts +8 -0
- package/build/credentials/android/actions/AssignGoogleServiceAccountKey.js +19 -0
- package/build/credentials/android/actions/BuildCredentialsUtils.d.ts +5 -5
- package/build/credentials/android/actions/CreateFcm.d.ts +2 -2
- package/build/credentials/android/actions/CreateGoogleServiceAccountKey.d.ts +3 -2
- package/build/credentials/android/actions/CreateGoogleServiceAccountKey.js +19 -11
- package/build/credentials/android/actions/CreateKeystore.d.ts +2 -2
- package/build/credentials/android/actions/DownloadKeystore.d.ts +3 -3
- package/build/credentials/android/actions/RemoveFcm.d.ts +2 -2
- package/build/credentials/android/actions/RemoveGoogleServiceAccountKey.d.ts +13 -0
- package/build/credentials/android/actions/RemoveGoogleServiceAccountKey.js +48 -0
- package/build/credentials/android/actions/RemoveKeystore.d.ts +2 -2
- package/build/credentials/android/actions/SetupBuildCredentials.d.ts +5 -5
- package/build/credentials/android/actions/SetupBuildCredentialsFromCredentialsJson.d.ts +2 -2
- package/build/credentials/android/actions/SetupGoogleServiceAccountKey.d.ts +10 -0
- package/build/credentials/android/actions/SetupGoogleServiceAccountKey.js +59 -0
- package/build/credentials/android/actions/UpdateCredentialsJson.d.ts +2 -2
- package/build/credentials/android/actions/UseExistingGoogleServiceAccountKey.d.ts +8 -0
- package/build/credentials/android/actions/UseExistingGoogleServiceAccountKey.js +23 -0
- package/build/credentials/android/api/GraphqlClient.d.ts +5 -2
- package/build/credentials/android/api/GraphqlClient.js +20 -3
- package/build/credentials/android/api/graphql/mutations/AndroidAppCredentialsMutation.d.ts +1 -0
- package/build/credentials/android/api/graphql/mutations/AndroidAppCredentialsMutation.js +26 -0
- package/build/credentials/android/api/graphql/mutations/GoogleServiceAccountKeyMutation.d.ts +1 -0
- package/build/credentials/android/api/graphql/mutations/GoogleServiceAccountKeyMutation.js +17 -0
- package/build/credentials/android/api/graphql/queries/GoogleServiceAccountKeyQuery.d.ts +4 -0
- package/build/credentials/android/api/graphql/queries/GoogleServiceAccountKeyQuery.js +31 -0
- package/build/credentials/android/credentials.d.ts +2 -0
- package/build/credentials/android/utils/googleServiceAccountKey.d.ts +3 -0
- package/build/credentials/android/utils/googleServiceAccountKey.js +90 -1
- package/build/credentials/android/utils/printCredentials.js +67 -28
- package/build/credentials/context.d.ts +17 -21
- package/build/credentials/context.js +21 -26
- package/build/credentials/credentialsJson/update.d.ts +3 -3
- package/build/credentials/ios/IosCredentialsProvider.d.ts +2 -2
- package/build/credentials/ios/actions/AppleTeamUtils.d.ts +2 -2
- package/build/credentials/ios/actions/AssignPushKey.d.ts +2 -2
- package/build/credentials/ios/actions/BuildCredentialsUtils.d.ts +8 -8
- package/build/credentials/ios/actions/ConfigureProvisioningProfile.d.ts +2 -2
- package/build/credentials/ios/actions/CreateDistributionCertificate.d.ts +2 -2
- package/build/credentials/ios/actions/CreateProvisioningProfile.d.ts +2 -2
- package/build/credentials/ios/actions/CreatePushKey.d.ts +2 -2
- package/build/credentials/ios/actions/DistributionCertificateUtils.d.ts +4 -4
- package/build/credentials/ios/actions/DistributionCertificateUtils.js +3 -3
- package/build/credentials/ios/actions/ProvisioningProfileUtils.d.ts +2 -2
- package/build/credentials/ios/actions/PushKeyUtils.d.ts +4 -4
- package/build/credentials/ios/actions/RemoveDistributionCertificate.d.ts +3 -3
- package/build/credentials/ios/actions/RemoveProvisioningProfile.d.ts +2 -2
- package/build/credentials/ios/actions/RemovePushKey.d.ts +3 -3
- package/build/credentials/ios/actions/SetupAdhocProvisioningProfile.d.ts +4 -3
- package/build/credentials/ios/actions/SetupAdhocProvisioningProfile.js +48 -4
- package/build/credentials/ios/actions/SetupBuildCredentials.d.ts +2 -2
- package/build/credentials/ios/actions/SetupBuildCredentialsFromCredentialsJson.d.ts +2 -2
- package/build/credentials/ios/actions/SetupDistributionCertificate.d.ts +3 -3
- package/build/credentials/ios/actions/SetupInternalProvisioningProfile.d.ts +2 -2
- package/build/credentials/ios/actions/SetupProvisioningProfile.d.ts +6 -6
- package/build/credentials/ios/actions/SetupPushKey.d.ts +3 -3
- package/build/credentials/ios/actions/SetupTargetBuildCredentials.d.ts +4 -4
- package/build/credentials/ios/actions/SetupTargetBuildCredentialsFromCredentialsJson.d.ts +5 -5
- package/build/credentials/ios/actions/UpdateCredentialsJson.d.ts +2 -2
- package/build/credentials/ios/appstore/AppStoreApi.d.ts +4 -15
- package/build/credentials/ios/appstore/AppStoreApi.js +4 -12
- package/build/credentials/ios/appstore/entitlements.js +14 -13
- package/build/credentials/ios/utils/printCredentials.js +83 -51
- package/build/credentials/ios/validators/validateDistributionCertificate.d.ts +2 -2
- package/build/credentials/ios/validators/validateProvisioningProfile.d.ts +2 -2
- package/build/credentials/ios/validators/validatePushKey.d.ts +2 -2
- package/build/credentials/manager/HelperActions.d.ts +4 -0
- package/build/credentials/manager/ManageAndroid.d.ts +18 -12
- package/build/credentials/manager/ManageAndroid.js +72 -10
- package/build/credentials/manager/ManageIos.d.ts +3 -2
- package/build/credentials/manager/SelectAndroidBuildCredentials.d.ts +3 -3
- package/build/credentials/manager/SelectBuildProfileFromEasJson.d.ts +3 -4
- package/build/credentials/manager/SelectBuildProfileFromEasJson.js +0 -1
- package/build/credentials/manager/SelectIosDistributionTypeGraphqlFromBuildProfile.d.ts +3 -3
- package/build/credentials/manager/SelectPlatform.d.ts +3 -3
- package/build/devices/context.js +1 -1
- package/build/graphql/generated.d.ts +60 -1
- package/build/graphql/types/credentials/AndroidAppCredentials.js +6 -0
- package/build/project/android/applicationId.js +2 -2
- package/build/project/projectUtils.d.ts +4 -1
- package/build/project/projectUtils.js +13 -3
- package/build/project/publish.d.ts +3 -3
- package/build/project/publish.js +10 -10
- package/build/submit/android/AndroidSubmitCommand.js +3 -8
- package/build/submit/android/AndroidSubmitter.js +31 -9
- package/build/submit/android/ServiceAccountSource.d.ts +24 -5
- package/build/submit/android/ServiceAccountSource.js +54 -75
- package/build/submit/context.d.ts +14 -7
- package/build/submit/context.js +18 -4
- package/build/submit/ios/AppProduce.js +3 -3
- package/build/submit/ios/AppSpecificPasswordSource.js +1 -1
- package/build/submit/ios/IosSubmitCommand.js +1 -1
- package/build/utils/json.js +2 -6
- package/build/vcs/local.js +7 -7
- package/oclif.manifest.json +1 -1
- package/package.json +9 -8
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { AppleProvisioningProfileIdentifiersFragment } from '../../../graphql/generated';
|
|
2
|
-
import {
|
|
2
|
+
import { CredentialsContext } from '../../context';
|
|
3
3
|
import { AppLookupParams } from '../api/GraphqlClient';
|
|
4
4
|
export declare class RemoveProvisioningProfiles {
|
|
5
5
|
private apps;
|
|
6
6
|
private provisioningProfiles;
|
|
7
7
|
constructor(apps: AppLookupParams[], provisioningProfiles: AppleProvisioningProfileIdentifiersFragment[]);
|
|
8
|
-
runAsync(ctx:
|
|
8
|
+
runAsync(ctx: CredentialsContext): Promise<void>;
|
|
9
9
|
}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { ApplePushKeyFragment } from '../../../graphql/generated';
|
|
2
2
|
import { Account } from '../../../user/Account';
|
|
3
|
-
import {
|
|
3
|
+
import { CredentialsContext } from '../../context';
|
|
4
4
|
export declare class SelectAndRemovePushKey {
|
|
5
5
|
private account;
|
|
6
6
|
constructor(account: Account);
|
|
7
|
-
runAsync(ctx:
|
|
7
|
+
runAsync(ctx: CredentialsContext): Promise<void>;
|
|
8
8
|
}
|
|
9
9
|
export declare class RemovePushKey {
|
|
10
10
|
private account;
|
|
11
11
|
private pushKey;
|
|
12
12
|
constructor(account: Account, pushKey: ApplePushKeyFragment);
|
|
13
|
-
runAsync(ctx:
|
|
13
|
+
runAsync(ctx: CredentialsContext): Promise<void>;
|
|
14
14
|
}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { AppleDistributionCertificateFragment, IosAppBuildCredentialsFragment } from '../../../graphql/generated';
|
|
2
|
-
import {
|
|
2
|
+
import { CredentialsContext } from '../../context';
|
|
3
3
|
import { AppLookupParams } from '../api/GraphqlClient';
|
|
4
4
|
export declare class SetupAdhocProvisioningProfile {
|
|
5
5
|
private app;
|
|
6
6
|
constructor(app: AppLookupParams);
|
|
7
|
-
runAsync(ctx:
|
|
8
|
-
runWithDistributionCertificateAsync(ctx:
|
|
7
|
+
runAsync(ctx: CredentialsContext): Promise<IosAppBuildCredentialsFragment>;
|
|
8
|
+
runWithDistributionCertificateAsync(ctx: CredentialsContext, distCert: AppleDistributionCertificateFragment): Promise<IosAppBuildCredentialsFragment>;
|
|
9
9
|
private areBuildCredentialsSetupAsync;
|
|
10
10
|
private shouldUseExistingProfileAsync;
|
|
11
|
+
private promptForReuseActionAsync;
|
|
11
12
|
private registerDevicesAsync;
|
|
12
13
|
}
|
|
13
14
|
export declare function doUDIDsMatch(udidsA: string[], udidsB: string[]): boolean;
|
|
@@ -16,6 +16,12 @@ const AppleTeamUtils_1 = require("./AppleTeamUtils");
|
|
|
16
16
|
const BuildCredentialsUtils_1 = require("./BuildCredentialsUtils");
|
|
17
17
|
const DeviceUtils_1 = require("./DeviceUtils");
|
|
18
18
|
const SetupDistributionCertificate_1 = require("./SetupDistributionCertificate");
|
|
19
|
+
var ReuseAction;
|
|
20
|
+
(function (ReuseAction) {
|
|
21
|
+
ReuseAction[ReuseAction["Yes"] = 0] = "Yes";
|
|
22
|
+
ReuseAction[ReuseAction["ShowDevices"] = 1] = "ShowDevices";
|
|
23
|
+
ReuseAction[ReuseAction["No"] = 2] = "No";
|
|
24
|
+
})(ReuseAction || (ReuseAction = {}));
|
|
19
25
|
class SetupAdhocProvisioningProfile {
|
|
20
26
|
constructor(app) {
|
|
21
27
|
this.app = app;
|
|
@@ -108,10 +114,23 @@ class SetupAdhocProvisioningProfile {
|
|
|
108
114
|
const provisionedDevices = provisioningProfile.appleDevices;
|
|
109
115
|
const allRegisteredDevicesAreProvisioned = doUDIDsMatch(registeredAppleDevices.map(({ identifier }) => identifier), provisionedDevices.map(({ identifier }) => identifier));
|
|
110
116
|
if (allRegisteredDevicesAreProvisioned) {
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
}
|
|
117
|
+
const reuseAction = await this.promptForReuseActionAsync();
|
|
118
|
+
if (reuseAction === ReuseAction.Yes) {
|
|
119
|
+
return true;
|
|
120
|
+
}
|
|
121
|
+
else if (reuseAction === ReuseAction.No) {
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
log_1.default.newLine();
|
|
126
|
+
log_1.default.log('Devices registered in the Provisioning Profile:');
|
|
127
|
+
for (const device of provisionedDevices) {
|
|
128
|
+
log_1.default.log(`- ${(0, DeviceUtils_1.formatDeviceLabel)(device)}`);
|
|
129
|
+
}
|
|
130
|
+
log_1.default.newLine();
|
|
131
|
+
return ((await this.promptForReuseActionAsync({ showShowDevicesOption: false })) ===
|
|
132
|
+
ReuseAction.Yes);
|
|
133
|
+
}
|
|
115
134
|
}
|
|
116
135
|
else {
|
|
117
136
|
const missingDevices = (0, differenceBy_1.default)(registeredAppleDevices, provisionedDevices, 'identifier');
|
|
@@ -125,6 +144,31 @@ class SetupAdhocProvisioningProfile {
|
|
|
125
144
|
}));
|
|
126
145
|
}
|
|
127
146
|
}
|
|
147
|
+
async promptForReuseActionAsync({ showShowDevicesOption = true, } = {}) {
|
|
148
|
+
const { selected } = await (0, prompts_1.promptAsync)({
|
|
149
|
+
type: 'select',
|
|
150
|
+
name: 'selected',
|
|
151
|
+
message: `${showShowDevicesOption
|
|
152
|
+
? 'All your registered devices are present in the Provisioning Profile. '
|
|
153
|
+
: ''}Would you like to reuse the profile?`,
|
|
154
|
+
choices: [
|
|
155
|
+
{ title: 'Yes', value: ReuseAction.Yes },
|
|
156
|
+
...(showShowDevicesOption
|
|
157
|
+
? [
|
|
158
|
+
{
|
|
159
|
+
title: 'Show devices and ask me again',
|
|
160
|
+
value: ReuseAction.ShowDevices,
|
|
161
|
+
},
|
|
162
|
+
]
|
|
163
|
+
: []),
|
|
164
|
+
{
|
|
165
|
+
title: 'No, let me choose devices again',
|
|
166
|
+
value: ReuseAction.No,
|
|
167
|
+
},
|
|
168
|
+
],
|
|
169
|
+
});
|
|
170
|
+
return selected;
|
|
171
|
+
}
|
|
128
172
|
async registerDevicesAsync(ctx, appleTeam) {
|
|
129
173
|
const action = new action_1.default(this.app.account, appleTeam);
|
|
130
174
|
const method = await action.runAsync();
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DistributionType, IosEnterpriseProvisioning } from '@expo/eas-json';
|
|
2
|
-
import {
|
|
2
|
+
import { CredentialsContext } from '../../context';
|
|
3
3
|
import { IosCapabilitiesOptions } from '../appstore/ensureAppExists';
|
|
4
4
|
import { App, IosCredentials, Target } from '../types';
|
|
5
5
|
interface Options {
|
|
@@ -12,6 +12,6 @@ interface Options {
|
|
|
12
12
|
export declare class SetupBuildCredentials {
|
|
13
13
|
private options;
|
|
14
14
|
constructor(options: Options);
|
|
15
|
-
runAsync(ctx:
|
|
15
|
+
runAsync(ctx: CredentialsContext): Promise<IosCredentials>;
|
|
16
16
|
}
|
|
17
17
|
export {};
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { IosDistributionType } from '../../../graphql/generated';
|
|
2
|
-
import {
|
|
2
|
+
import { CredentialsContext } from '../../context';
|
|
3
3
|
import { App, Target } from '../types';
|
|
4
4
|
export declare class SetupBuildCredentialsFromCredentialsJson {
|
|
5
5
|
private app;
|
|
6
6
|
private targets;
|
|
7
7
|
private distributionType;
|
|
8
8
|
constructor(app: App, targets: Target[], distributionType: IosDistributionType);
|
|
9
|
-
runAsync(ctx:
|
|
9
|
+
runAsync(ctx: CredentialsContext): Promise<void>;
|
|
10
10
|
private readCredentialsJsonAsync;
|
|
11
11
|
}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { AppleDistributionCertificate, AppleDistributionCertificateFragment, IosDistributionType } from '../../../graphql/generated';
|
|
2
|
-
import {
|
|
2
|
+
import { CredentialsContext } from '../../context';
|
|
3
3
|
import { AppLookupParams } from '../api/GraphqlClient';
|
|
4
4
|
export declare class SetupDistributionCertificate {
|
|
5
5
|
private app;
|
|
6
6
|
private distributionType;
|
|
7
7
|
private validDistCerts?;
|
|
8
8
|
constructor(app: AppLookupParams, distributionType: IosDistributionType);
|
|
9
|
-
runAsync(ctx:
|
|
9
|
+
runAsync(ctx: CredentialsContext): Promise<AppleDistributionCertificateFragment>;
|
|
10
10
|
private runNonInteractiveAsync;
|
|
11
11
|
private runInteractiveAsync;
|
|
12
12
|
private isCurrentCertificateValidAsync;
|
|
13
13
|
private createOrReuseDistCertAsync;
|
|
14
14
|
private createNewDistCertAsync;
|
|
15
|
-
reuseDistCertAsync(ctx:
|
|
15
|
+
reuseDistCertAsync(ctx: CredentialsContext): Promise<AppleDistributionCertificate>;
|
|
16
16
|
private getValidDistCertsAsync;
|
|
17
17
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { IosAppBuildCredentialsFragment } from '../../../graphql/generated';
|
|
2
|
-
import {
|
|
2
|
+
import { CredentialsContext } from '../../context';
|
|
3
3
|
import { AppLookupParams } from '../api/GraphqlClient';
|
|
4
4
|
/**
|
|
5
5
|
* It's used when setting up credentials for internal distribution but `enterpriseProvisioning` is not set.
|
|
@@ -11,7 +11,7 @@ import { AppLookupParams } from '../api/GraphqlClient';
|
|
|
11
11
|
export declare class SetupInternalProvisioningProfile {
|
|
12
12
|
private app;
|
|
13
13
|
constructor(app: AppLookupParams);
|
|
14
|
-
runAsync(ctx:
|
|
14
|
+
runAsync(ctx: CredentialsContext): Promise<IosAppBuildCredentialsFragment>;
|
|
15
15
|
private setupAdhocProvisioningProfileAsync;
|
|
16
16
|
private setupUniversalProvisioningProfileAsync;
|
|
17
17
|
private askForDistributionTypeAndSetupAsync;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AppleDistributionCertificateFragment, AppleProvisioningProfileFragment, IosAppBuildCredentialsFragment, IosDistributionType } from '../../../graphql/generated';
|
|
2
|
-
import {
|
|
2
|
+
import { CredentialsContext } from '../../context';
|
|
3
3
|
import { AppLookupParams } from '../api/GraphqlClient';
|
|
4
4
|
/**
|
|
5
5
|
* Sets up either APP_STORE or ENTERPRISE provisioning profiles
|
|
@@ -8,10 +8,10 @@ export declare class SetupProvisioningProfile {
|
|
|
8
8
|
private app;
|
|
9
9
|
private distributionType;
|
|
10
10
|
constructor(app: AppLookupParams, distributionType: IosDistributionType);
|
|
11
|
-
areBuildCredentialsSetupAsync(ctx:
|
|
12
|
-
assignNewAndDeleteOldProfileAsync(ctx:
|
|
13
|
-
createAndAssignProfileAsync(ctx:
|
|
14
|
-
configureAndAssignProfileAsync(ctx:
|
|
15
|
-
runAsync(ctx:
|
|
11
|
+
areBuildCredentialsSetupAsync(ctx: CredentialsContext): Promise<boolean>;
|
|
12
|
+
assignNewAndDeleteOldProfileAsync(ctx: CredentialsContext, distCert: AppleDistributionCertificateFragment, currentProfile: AppleProvisioningProfileFragment): Promise<IosAppBuildCredentialsFragment>;
|
|
13
|
+
createAndAssignProfileAsync(ctx: CredentialsContext, distCert: AppleDistributionCertificateFragment): Promise<IosAppBuildCredentialsFragment>;
|
|
14
|
+
configureAndAssignProfileAsync(ctx: CredentialsContext, distCert: AppleDistributionCertificateFragment, originalProvisioningProfile: AppleProvisioningProfileFragment): Promise<IosAppBuildCredentialsFragment | null>;
|
|
15
|
+
runAsync(ctx: CredentialsContext): Promise<IosAppBuildCredentialsFragment>;
|
|
16
16
|
private getCurrentProfileStoreInfo;
|
|
17
17
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { CommonIosAppCredentialsFragment } from '../../../graphql/generated';
|
|
2
|
-
import {
|
|
2
|
+
import { CredentialsContext } from '../../context';
|
|
3
3
|
import { AppLookupParams } from '../api/GraphqlClient';
|
|
4
4
|
export declare class SetupPushKey {
|
|
5
5
|
private app;
|
|
6
6
|
constructor(app: AppLookupParams);
|
|
7
|
-
isPushKeySetupAsync(ctx:
|
|
8
|
-
runAsync(ctx:
|
|
7
|
+
isPushKeySetupAsync(ctx: CredentialsContext): Promise<boolean>;
|
|
8
|
+
runAsync(ctx: CredentialsContext): Promise<CommonIosAppCredentialsFragment | null>;
|
|
9
9
|
private createOrReusePushKeyAsync;
|
|
10
10
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { DistributionType, IosEnterpriseProvisioning } from '@expo/eas-json';
|
|
2
2
|
import { IosAppBuildCredentialsFragment } from '../../../graphql/generated';
|
|
3
|
-
import {
|
|
3
|
+
import { CredentialsContext } from '../../context';
|
|
4
4
|
import { AppLookupParams as GraphQLAppLookupParams } from '../api/GraphqlClient';
|
|
5
5
|
import { IosCapabilitiesOptions } from '../appstore/ensureAppExists';
|
|
6
6
|
interface Options {
|
|
@@ -9,10 +9,10 @@ interface Options {
|
|
|
9
9
|
enterpriseProvisioning?: IosEnterpriseProvisioning;
|
|
10
10
|
iosCapabilitiesOptions?: IosCapabilitiesOptions;
|
|
11
11
|
}
|
|
12
|
-
export declare class SetupTargetBuildCredentials
|
|
12
|
+
export declare class SetupTargetBuildCredentials {
|
|
13
13
|
private options;
|
|
14
14
|
constructor(options: Options);
|
|
15
|
-
runAsync(ctx:
|
|
16
|
-
setupBuildCredentialsAsync(ctx:
|
|
15
|
+
runAsync(ctx: CredentialsContext): Promise<IosAppBuildCredentialsFragment>;
|
|
16
|
+
setupBuildCredentialsAsync(ctx: CredentialsContext): Promise<IosAppBuildCredentialsFragment>;
|
|
17
17
|
}
|
|
18
18
|
export {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AppleDistributionCertificateFragment, AppleProvisioningProfileFragment, AppleTeamFragment, IosAppBuildCredentialsFragment, IosDistributionType } from '../../../graphql/generated';
|
|
2
|
-
import {
|
|
2
|
+
import { CredentialsContext } from '../../context';
|
|
3
3
|
import { IosTargetCredentials } from '../../credentialsJson/types';
|
|
4
4
|
import { AppLookupParams } from '../api/GraphqlClient';
|
|
5
5
|
export declare class SetupTargetBuildCredentialsFromCredentialsJson {
|
|
@@ -7,8 +7,8 @@ export declare class SetupTargetBuildCredentialsFromCredentialsJson {
|
|
|
7
7
|
private distributionType;
|
|
8
8
|
private targetCredentials;
|
|
9
9
|
constructor(app: AppLookupParams, distributionType: IosDistributionType, targetCredentials: IosTargetCredentials);
|
|
10
|
-
runAsync(ctx:
|
|
11
|
-
getDistributionCertificateToAssignAsync(ctx:
|
|
12
|
-
getProvisioningProfileToAssignAsync(ctx:
|
|
13
|
-
createNewProvisioningProfileAsync(ctx:
|
|
10
|
+
runAsync(ctx: CredentialsContext): Promise<IosAppBuildCredentialsFragment>;
|
|
11
|
+
getDistributionCertificateToAssignAsync(ctx: CredentialsContext, appleTeam: AppleTeamFragment, currentDistributionCertificate: AppleDistributionCertificateFragment | null): Promise<AppleDistributionCertificateFragment>;
|
|
12
|
+
getProvisioningProfileToAssignAsync(ctx: CredentialsContext, appleTeam: AppleTeamFragment, currentProvisioningProfile: AppleProvisioningProfileFragment | null): Promise<AppleProvisioningProfileFragment>;
|
|
13
|
+
createNewProvisioningProfileAsync(ctx: CredentialsContext, appleTeam: AppleTeamFragment): Promise<AppleProvisioningProfileFragment>;
|
|
14
14
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { IosDistributionType } from '../../../graphql/generated';
|
|
2
|
-
import {
|
|
2
|
+
import { CredentialsContext } from '../../context';
|
|
3
3
|
import { App, Target } from '../types';
|
|
4
4
|
export declare class UpdateCredentialsJson {
|
|
5
5
|
private app;
|
|
6
6
|
private targets;
|
|
7
7
|
private distributionType;
|
|
8
8
|
constructor(app: App, targets: Target[], distributionType: IosDistributionType);
|
|
9
|
-
runAsync(ctx:
|
|
9
|
+
runAsync(ctx: CredentialsContext): Promise<void>;
|
|
10
10
|
}
|
|
@@ -1,20 +1,10 @@
|
|
|
1
1
|
import { DistributionCertificate, DistributionCertificateStoreInfo, ProvisioningProfile, ProvisioningProfileStoreInfo, PushKey, PushKeyStoreInfo } from './Credentials.types';
|
|
2
|
-
import { AuthCtx } from './authenticate';
|
|
3
|
-
import { AppleTooManyCertsError } from './distributionCertificate';
|
|
2
|
+
import { AuthCtx, Options as AuthenticateOptions } from './authenticate';
|
|
4
3
|
import { AppLookupParams, IosCapabilitiesOptions } from './ensureAppExists';
|
|
5
4
|
import { ProfileClass } from './provisioningProfile';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
teamId?: string;
|
|
10
|
-
}
|
|
11
|
-
export { AppleTooManyCertsError };
|
|
12
|
-
declare class AppStoreApi {
|
|
13
|
-
readonly options?: Options | undefined;
|
|
14
|
-
private _authCtx?;
|
|
15
|
-
constructor(options?: Options | undefined);
|
|
16
|
-
get authCtx(): AuthCtx | undefined;
|
|
17
|
-
ensureAuthenticatedAsync(): Promise<AuthCtx>;
|
|
5
|
+
export default class AppStoreApi {
|
|
6
|
+
authCtx?: AuthCtx;
|
|
7
|
+
ensureAuthenticatedAsync(options?: AuthenticateOptions): Promise<AuthCtx>;
|
|
18
8
|
ensureBundleIdExistsAsync(app: AppLookupParams, options?: IosCapabilitiesOptions): Promise<void>;
|
|
19
9
|
listDistributionCertificatesAsync(): Promise<DistributionCertificateStoreInfo[]>;
|
|
20
10
|
createDistributionCertificateAsync(): Promise<DistributionCertificate>;
|
|
@@ -28,4 +18,3 @@ declare class AppStoreApi {
|
|
|
28
18
|
revokeProvisioningProfileAsync(bundleIdentifier: string, profileClass?: ProfileClass): Promise<void>;
|
|
29
19
|
createOrReuseAdhocProvisioningProfileAsync(udids: string[], bundleIdentifier: string, distCertSerialNumber: string): Promise<ProvisioningProfile>;
|
|
30
20
|
}
|
|
31
|
-
export default AppStoreApi;
|
|
@@ -1,25 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AppleTooManyCertsError = void 0;
|
|
4
3
|
const authenticate_1 = require("./authenticate");
|
|
5
4
|
const distributionCertificate_1 = require("./distributionCertificate");
|
|
6
|
-
Object.defineProperty(exports, "AppleTooManyCertsError", { enumerable: true, get: function () { return distributionCertificate_1.AppleTooManyCertsError; } });
|
|
7
5
|
const ensureAppExists_1 = require("./ensureAppExists");
|
|
8
6
|
const provisioningProfile_1 = require("./provisioningProfile");
|
|
9
7
|
const provisioningProfileAdhoc_1 = require("./provisioningProfileAdhoc");
|
|
10
8
|
const pushKey_1 = require("./pushKey");
|
|
11
9
|
class AppStoreApi {
|
|
12
|
-
|
|
13
|
-
this.
|
|
14
|
-
|
|
15
|
-
get authCtx() {
|
|
16
|
-
return this._authCtx;
|
|
17
|
-
}
|
|
18
|
-
async ensureAuthenticatedAsync() {
|
|
19
|
-
if (!this._authCtx) {
|
|
20
|
-
this._authCtx = await (0, authenticate_1.authenticateAsync)(this.options);
|
|
10
|
+
async ensureAuthenticatedAsync(options) {
|
|
11
|
+
if (!this.authCtx) {
|
|
12
|
+
this.authCtx = await (0, authenticate_1.authenticateAsync)(options);
|
|
21
13
|
}
|
|
22
|
-
return this.
|
|
14
|
+
return this.authCtx;
|
|
23
15
|
}
|
|
24
16
|
async ensureBundleIdExistsAsync(app, options) {
|
|
25
17
|
const ctx = await this.ensureAuthenticatedAsync();
|
|
@@ -6,17 +6,7 @@ const config_plugins_1 = require("@expo/config-plugins");
|
|
|
6
6
|
const eas_build_job_1 = require("@expo/eas-build-job");
|
|
7
7
|
const plist_1 = (0, tslib_1.__importDefault)(require("@expo/plist"));
|
|
8
8
|
const prebuild_config_1 = require("@expo/prebuild-config");
|
|
9
|
-
const
|
|
10
|
-
function getEntitlementsJson(projectDir) {
|
|
11
|
-
try {
|
|
12
|
-
const entitlementsPath = config_plugins_1.IOSConfig.Paths.getEntitlementsPath(projectDir);
|
|
13
|
-
if (entitlementsPath) {
|
|
14
|
-
return plist_1.default.parse(fs_1.default.readFileSync(entitlementsPath, 'utf8'));
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
catch { }
|
|
18
|
-
return null;
|
|
19
|
-
}
|
|
9
|
+
const fs_extra_1 = (0, tslib_1.__importDefault)(require("fs-extra"));
|
|
20
10
|
async function getManagedEntitlementsJsonAsync(projectDir) {
|
|
21
11
|
var _a;
|
|
22
12
|
let { exp } = (0, prebuild_config_1.getPrebuildConfig)(projectDir, { platforms: ['ios'] });
|
|
@@ -30,13 +20,24 @@ async function getManagedEntitlementsJsonAsync(projectDir) {
|
|
|
30
20
|
exports.getManagedEntitlementsJsonAsync = getManagedEntitlementsJsonAsync;
|
|
31
21
|
async function resolveEntitlementsJsonAsync(projectDir, workflow) {
|
|
32
22
|
if (workflow === eas_build_job_1.Workflow.GENERIC) {
|
|
33
|
-
return
|
|
23
|
+
return (await getEntitlementsJsonAsync(projectDir)) || {};
|
|
34
24
|
}
|
|
35
25
|
else if (workflow === eas_build_job_1.Workflow.MANAGED) {
|
|
36
|
-
return getManagedEntitlementsJsonAsync(projectDir);
|
|
26
|
+
return await getManagedEntitlementsJsonAsync(projectDir);
|
|
37
27
|
}
|
|
38
28
|
else {
|
|
39
29
|
throw new Error(`Unknown workflow: ${workflow}`);
|
|
40
30
|
}
|
|
41
31
|
}
|
|
42
32
|
exports.resolveEntitlementsJsonAsync = resolveEntitlementsJsonAsync;
|
|
33
|
+
async function getEntitlementsJsonAsync(projectDir) {
|
|
34
|
+
try {
|
|
35
|
+
const entitlementsPath = config_plugins_1.IOSConfig.Paths.getEntitlementsPath(projectDir);
|
|
36
|
+
if (entitlementsPath) {
|
|
37
|
+
const entitlementsContents = await fs_extra_1.default.readFile(entitlementsPath, 'utf8');
|
|
38
|
+
return plist_1.default.parse(entitlementsContents);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
catch { }
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
@@ -8,6 +8,7 @@ const generated_1 = require("../../../graphql/generated");
|
|
|
8
8
|
const AppleDevice_1 = require("../../../graphql/types/credentials/AppleDevice");
|
|
9
9
|
const log_1 = (0, tslib_1.__importDefault)(require("../../../log"));
|
|
10
10
|
const date_1 = require("../../../utils/date");
|
|
11
|
+
const formatFields_1 = (0, tslib_1.__importDefault)(require("../../../utils/formatFields"));
|
|
11
12
|
function prettyIosDistributionType(distributionType) {
|
|
12
13
|
switch (distributionType) {
|
|
13
14
|
case generated_1.IosDistributionType.AppStore:
|
|
@@ -24,10 +25,14 @@ function prettyIosDistributionType(distributionType) {
|
|
|
24
25
|
}
|
|
25
26
|
function displayEmptyIosCredentials(appLookupParams) {
|
|
26
27
|
const { projectName, bundleIdentifier } = appLookupParams;
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
const fields = [
|
|
29
|
+
{ label: 'iOS Credentials', value: '' },
|
|
30
|
+
{ label: 'Project', value: projectName },
|
|
31
|
+
{ label: 'Bundle Identifier', value: bundleIdentifier },
|
|
32
|
+
];
|
|
33
|
+
fields.push({ label: '', value: 'No credentials set up yet!' });
|
|
34
|
+
fields.push({ label: '', value: '' });
|
|
35
|
+
log_1.default.log((0, formatFields_1.default)(fields, { labelFormat: chalk_1.default.cyan.bold }));
|
|
31
36
|
}
|
|
32
37
|
exports.displayEmptyIosCredentials = displayEmptyIosCredentials;
|
|
33
38
|
/**
|
|
@@ -49,36 +54,41 @@ function sortBuildCredentialsByDistributionType(iosAppBuildCredentialsList) {
|
|
|
49
54
|
function displayIosCredentials(app, appCredentialsMap, targets) {
|
|
50
55
|
const projectFullName = `@${app.account.name}/${app.projectName}`;
|
|
51
56
|
const isMultitarget = targets.length > 1;
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
57
|
+
const fields = [
|
|
58
|
+
{ label: 'iOS Credentials', value: '' },
|
|
59
|
+
{ label: 'Project', value: projectFullName },
|
|
60
|
+
];
|
|
55
61
|
for (const { targetName, bundleIdentifier } of targets) {
|
|
56
62
|
if (isMultitarget) {
|
|
57
|
-
|
|
58
|
-
|
|
63
|
+
fields.push({ label: '', value: '' });
|
|
64
|
+
fields.push({ label: 'Target', value: targetName });
|
|
59
65
|
}
|
|
60
|
-
|
|
66
|
+
fields.push({ label: 'Bundle Identifier', value: bundleIdentifier });
|
|
61
67
|
const targetAppCredentials = appCredentialsMap[targetName];
|
|
62
68
|
if (!targetAppCredentials) {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
69
|
+
fields.push({ label: '', value: '' });
|
|
70
|
+
fields.push({ label: '', value: 'No credentials set up yet!' });
|
|
71
|
+
fields.push({ label: '', value: '' });
|
|
66
72
|
continue;
|
|
67
73
|
}
|
|
68
74
|
const { appleTeam, pushKey } = targetAppCredentials;
|
|
69
75
|
if (appleTeam) {
|
|
70
76
|
const { appleTeamIdentifier, appleTeamName } = appleTeam;
|
|
71
|
-
|
|
77
|
+
fields.push({
|
|
78
|
+
label: 'Apple Team',
|
|
79
|
+
value: `${appleTeamIdentifier} ${appleTeamName ? `(${appleTeamName})` : ''}`,
|
|
80
|
+
});
|
|
72
81
|
}
|
|
73
|
-
|
|
82
|
+
fields.push({ label: '', value: '' });
|
|
74
83
|
if (pushKey) {
|
|
75
|
-
displayApplePushKey(pushKey);
|
|
84
|
+
displayApplePushKey(pushKey, fields);
|
|
76
85
|
}
|
|
77
86
|
const sortedIosAppBuildCredentialsList = sortBuildCredentialsByDistributionType(targetAppCredentials.iosAppBuildCredentialsList);
|
|
78
87
|
for (const iosAppBuildCredentials of sortedIosAppBuildCredentialsList) {
|
|
79
|
-
displayIosAppBuildCredentials(iosAppBuildCredentials);
|
|
88
|
+
displayIosAppBuildCredentials(iosAppBuildCredentials, fields);
|
|
80
89
|
}
|
|
81
90
|
}
|
|
91
|
+
log_1.default.log((0, formatFields_1.default)(fields, { labelFormat: chalk_1.default.cyan.bold }));
|
|
82
92
|
}
|
|
83
93
|
exports.displayIosCredentials = displayIosCredentials;
|
|
84
94
|
function displayProjectCredentials(app, appBuildCredentials, targets) {
|
|
@@ -89,78 +99,100 @@ function displayProjectCredentials(app, appBuildCredentials, targets) {
|
|
|
89
99
|
}, {});
|
|
90
100
|
const isMultitarget = targets.length > 1;
|
|
91
101
|
log_1.default.addNewLineIfNone();
|
|
92
|
-
log_1.default.log(chalk_1.default.bold('Project Credentials Configuration
|
|
93
|
-
log_1.default.
|
|
102
|
+
log_1.default.log(chalk_1.default.cyan.bold('Project Credentials Configuration'));
|
|
103
|
+
log_1.default.newLine();
|
|
104
|
+
const fields = [{ label: 'Project', value: projectFullName }];
|
|
94
105
|
for (const [targetName, buildCredentials] of Object.entries(appBuildCredentials)) {
|
|
95
106
|
if (isMultitarget) {
|
|
96
|
-
|
|
97
|
-
|
|
107
|
+
fields.push({ label: '', value: '' });
|
|
108
|
+
fields.push({ label: 'Target', value: targetName });
|
|
98
109
|
}
|
|
99
|
-
|
|
100
|
-
displayIosAppBuildCredentials(buildCredentials);
|
|
110
|
+
fields.push({ label: 'Bundle Identifier', value: targetToBundleId[targetName] });
|
|
111
|
+
displayIosAppBuildCredentials(buildCredentials, fields);
|
|
101
112
|
}
|
|
113
|
+
log_1.default.log((0, formatFields_1.default)(fields, { labelFormat: chalk_1.default.cyan.bold }));
|
|
102
114
|
}
|
|
103
115
|
exports.displayProjectCredentials = displayProjectCredentials;
|
|
104
|
-
function displayIosAppBuildCredentials(buildCredentials) {
|
|
105
|
-
|
|
106
|
-
|
|
116
|
+
function displayIosAppBuildCredentials(buildCredentials, fields) {
|
|
117
|
+
fields.push({ label: '', value: '' });
|
|
118
|
+
fields.push({
|
|
119
|
+
label: `${prettyIosDistributionType(buildCredentials.iosDistributionType)} Configuration`,
|
|
120
|
+
value: '',
|
|
121
|
+
});
|
|
122
|
+
fields.push({ label: '', value: '' });
|
|
107
123
|
const maybeDistCert = buildCredentials.distributionCertificate;
|
|
108
|
-
|
|
124
|
+
fields.push({ label: 'Distribution Certificate', value: '' });
|
|
109
125
|
if (maybeDistCert) {
|
|
110
126
|
const { serialNumber, updatedAt, validityNotAfter, appleTeam } = maybeDistCert;
|
|
111
|
-
|
|
112
|
-
|
|
127
|
+
fields.push({ label: 'Serial Number', value: serialNumber });
|
|
128
|
+
fields.push({
|
|
129
|
+
label: 'Expiration Date',
|
|
130
|
+
value: (0, dateformat_1.default)(validityNotAfter, 'expiresHeaderFormat'),
|
|
131
|
+
});
|
|
113
132
|
if (appleTeam) {
|
|
114
133
|
const { appleTeamIdentifier, appleTeamName } = appleTeam;
|
|
115
|
-
|
|
134
|
+
fields.push({
|
|
135
|
+
label: 'Apple Team',
|
|
136
|
+
value: `${appleTeamIdentifier} ${appleTeamName ? `(${appleTeamName})` : ''}`,
|
|
137
|
+
});
|
|
116
138
|
}
|
|
117
|
-
|
|
139
|
+
fields.push({ label: 'Updated', value: `${(0, date_1.fromNow)(new Date(updatedAt))} ago` });
|
|
118
140
|
}
|
|
119
141
|
else {
|
|
120
|
-
|
|
142
|
+
fields.push({ label: '', value: 'None assigned yet' });
|
|
121
143
|
}
|
|
122
|
-
|
|
144
|
+
fields.push({ label: '', value: '' });
|
|
123
145
|
const maybeProvProf = buildCredentials.provisioningProfile;
|
|
124
|
-
|
|
146
|
+
fields.push({ label: 'Provisioning Profile', value: '' });
|
|
125
147
|
if (maybeProvProf) {
|
|
126
148
|
const { expiration, updatedAt, status, developerPortalIdentifier, appleTeam, appleDevices } = maybeProvProf;
|
|
127
149
|
if (developerPortalIdentifier) {
|
|
128
|
-
|
|
150
|
+
fields.push({ label: 'Developer Portal ID', value: developerPortalIdentifier });
|
|
129
151
|
}
|
|
130
|
-
|
|
131
|
-
|
|
152
|
+
fields.push({ label: 'Status', value: status });
|
|
153
|
+
fields.push({ label: 'Expiration', value: (0, dateformat_1.default)(expiration, 'expiresHeaderFormat') });
|
|
132
154
|
if (appleTeam) {
|
|
133
155
|
const { appleTeamIdentifier, appleTeamName } = appleTeam;
|
|
134
|
-
|
|
156
|
+
fields.push({
|
|
157
|
+
label: 'Apple Team',
|
|
158
|
+
value: `${appleTeamIdentifier} ${appleTeamName ? `(${appleTeamName})` : ''}`,
|
|
159
|
+
});
|
|
135
160
|
}
|
|
136
161
|
if (appleDevices && appleDevices.length > 0) {
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
162
|
+
const [firstAppleDevice, ...rest] = appleDevices;
|
|
163
|
+
fields.push({
|
|
164
|
+
label: 'Provisioned devices',
|
|
165
|
+
value: `- ${formatAppleDevice(firstAppleDevice)}`,
|
|
166
|
+
});
|
|
167
|
+
for (const appleDevice of rest) {
|
|
168
|
+
fields.push({ label: '', value: `- ${formatAppleDevice(appleDevice)}` });
|
|
140
169
|
}
|
|
141
170
|
}
|
|
142
|
-
|
|
171
|
+
fields.push({ label: 'Updated', value: `${(0, date_1.fromNow)(new Date(updatedAt))} ago` });
|
|
143
172
|
}
|
|
144
173
|
else {
|
|
145
|
-
|
|
174
|
+
fields.push({ label: '', value: 'None assigned yet' });
|
|
146
175
|
}
|
|
147
|
-
|
|
176
|
+
fields.push({ label: '', value: '' });
|
|
148
177
|
}
|
|
149
|
-
function displayApplePushKey(maybePushKey) {
|
|
150
|
-
|
|
178
|
+
function displayApplePushKey(maybePushKey, fields) {
|
|
179
|
+
fields.push({ label: 'Push Key', value: '' });
|
|
151
180
|
if (maybePushKey) {
|
|
152
181
|
const { keyIdentifier, appleTeam, updatedAt } = maybePushKey;
|
|
153
|
-
|
|
182
|
+
fields.push({ label: 'Developer Portal ID', value: keyIdentifier });
|
|
154
183
|
if (appleTeam) {
|
|
155
184
|
const { appleTeamIdentifier, appleTeamName } = appleTeam;
|
|
156
|
-
|
|
185
|
+
fields.push({
|
|
186
|
+
label: 'Apple Team',
|
|
187
|
+
value: `${appleTeamIdentifier} ${appleTeamName ? `(${appleTeamName})` : ''}`,
|
|
188
|
+
});
|
|
157
189
|
}
|
|
158
|
-
|
|
190
|
+
fields.push({ label: 'Updated', value: `${(0, date_1.fromNow)(new Date(updatedAt))} ago` });
|
|
159
191
|
}
|
|
160
192
|
else {
|
|
161
|
-
|
|
193
|
+
fields.push({ label: '', value: 'None assigned yet' });
|
|
162
194
|
}
|
|
163
|
-
|
|
195
|
+
fields.push({ label: '', value: '' });
|
|
164
196
|
}
|
|
165
197
|
function formatAppleDevice(device) {
|
|
166
198
|
let deviceString = '';
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CredentialsContext } from '../../context';
|
|
2
2
|
import { DistributionCertificate } from '../appstore/Credentials.types';
|
|
3
|
-
export declare function validateDistributionCertificateAsync(ctx:
|
|
3
|
+
export declare function validateDistributionCertificateAsync(ctx: CredentialsContext, distributionCertificate: DistributionCertificate): Promise<boolean>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { IosAppBuildCredentialsFragment } from '../../../graphql/generated';
|
|
2
|
-
import {
|
|
2
|
+
import { CredentialsContext } from '../../context';
|
|
3
3
|
import { AppLookupParams } from '../api/GraphqlClient';
|
|
4
|
-
export declare function validateProvisioningProfileAsync(ctx:
|
|
4
|
+
export declare function validateProvisioningProfileAsync(ctx: CredentialsContext, app: AppLookupParams, buildCredentials: Partial<IosAppBuildCredentialsFragment> | null): Promise<boolean>;
|