eas-cli 16.14.1 → 16.16.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 +137 -84
- package/build/commandUtils/workflow/fetchLogs.d.ts +2 -0
- package/build/commandUtils/workflow/fetchLogs.js +16 -0
- package/build/commandUtils/workflow/stateMachine.d.ts +44 -0
- package/build/commandUtils/workflow/stateMachine.js +212 -0
- package/build/commandUtils/workflow/types.d.ts +39 -0
- package/build/commandUtils/workflow/types.js +13 -0
- package/build/commandUtils/workflow/utils.d.ts +12 -0
- package/build/commandUtils/workflow/utils.js +116 -0
- package/build/commands/deploy/index.js +47 -49
- package/build/commands/workflow/cancel.js +3 -6
- package/build/commands/workflow/logs.d.ts +18 -0
- package/build/commands/workflow/logs.js +94 -0
- package/build/commands/workflow/run.d.ts +105 -0
- package/build/commands/workflow/run.js +280 -0
- package/build/commands/workflow/runs.js +4 -3
- package/build/commands/workflow/view.d.ts +17 -0
- package/build/commands/workflow/view.js +95 -0
- package/build/credentials/ios/appstore/bundleIdCapabilities.d.ts +4 -17
- package/build/credentials/ios/appstore/bundleIdCapabilities.js +45 -625
- package/build/credentials/ios/appstore/capabilityIdentifiers.js +33 -34
- package/build/credentials/ios/appstore/capabilityList.d.ts +33 -0
- package/build/credentials/ios/appstore/capabilityList.js +646 -0
- package/build/graphql/generated.d.ts +236 -19
- package/build/graphql/queries/WorkflowJobQuery.d.ts +7 -0
- package/build/graphql/queries/WorkflowJobQuery.js +29 -0
- package/build/graphql/queries/WorkflowRunQuery.js +13 -13
- package/build/graphql/types/WorkflowJob.d.ts +1 -0
- package/build/graphql/types/WorkflowJob.js +32 -0
- package/build/graphql/types/WorkflowRun.js +18 -0
- package/build/worker/assets.d.ts +19 -16
- package/build/worker/assets.js +51 -22
- package/build/worker/upload.d.ts +21 -9
- package/build/worker/upload.js +98 -80
- package/build/worker/utils/multipart.d.ts +11 -0
- package/build/worker/utils/multipart.js +98 -0
- package/oclif.manifest.json +85 -1
- package/package.json +2 -2
- package/build/commandUtils/workflows.d.ts +0 -20
- package/build/commandUtils/workflows.js +0 -21
|
@@ -0,0 +1,646 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.associatedDomainsCapabilityType = exports.CapabilityMapping = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const apple_utils_1 = require("@expo/apple-utils");
|
|
6
|
+
const invariant_1 = require("graphql/jsutils/invariant");
|
|
7
|
+
const nullthrows_1 = tslib_1.__importDefault(require("nullthrows"));
|
|
8
|
+
const validateBooleanOptions = (options) => {
|
|
9
|
+
return typeof options === 'boolean';
|
|
10
|
+
};
|
|
11
|
+
const validatePrefixedStringArrayOptions = (prefix) => (options) => {
|
|
12
|
+
return (Array.isArray(options) &&
|
|
13
|
+
options.every(option => typeof option === 'string' && option.startsWith(prefix)));
|
|
14
|
+
};
|
|
15
|
+
const validateStringArrayOptions = (options) => {
|
|
16
|
+
return Array.isArray(options) && options.every(option => typeof option === 'string');
|
|
17
|
+
};
|
|
18
|
+
const createValidateStringOptions = (allowed) => (options) => {
|
|
19
|
+
return allowed.includes(options);
|
|
20
|
+
};
|
|
21
|
+
const createValidateStringArrayOptions = (allowed) => (options) => {
|
|
22
|
+
return Array.isArray(options) && options.every(option => allowed.includes(option));
|
|
23
|
+
};
|
|
24
|
+
const validateDevProdString = createValidateStringOptions(['development', 'production']);
|
|
25
|
+
const skipOp = { op: 'skip' };
|
|
26
|
+
const disableOp = { op: 'disable' };
|
|
27
|
+
const enableOp = { op: 'enable', option: apple_utils_1.CapabilityTypeOption.ON };
|
|
28
|
+
const getBooleanSyncOperation = ({ existingRemote, entitlementValue }) => {
|
|
29
|
+
if (existingRemote) {
|
|
30
|
+
// If the remote capability exists, we only disable it if the value is false.
|
|
31
|
+
// Otherwise, we skip it.
|
|
32
|
+
if ('enabled' in existingRemote.attributes) {
|
|
33
|
+
return existingRemote.attributes['enabled'] === entitlementValue ? skipOp : disableOp;
|
|
34
|
+
}
|
|
35
|
+
return existingRemote.attributes.settings === null ? skipOp : enableOp;
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
return entitlementValue === false ? skipOp : enableOp;
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
const getDefinedValueSyncOperation = ({ existingRemote }) => {
|
|
42
|
+
if (!existingRemote) {
|
|
43
|
+
// If the remote capability does not exist, we create it.
|
|
44
|
+
return enableOp;
|
|
45
|
+
}
|
|
46
|
+
return existingRemote.attributes.settings === null ? skipOp : enableOp;
|
|
47
|
+
};
|
|
48
|
+
const capabilityWithSettingsSyncOperation = ({ existingRemote, entitlementValue, }) => {
|
|
49
|
+
// settings are defined for only a few capabilities: iCloud, data protection and Sign in with Apple
|
|
50
|
+
// https://developer.apple.com/documentation/appstoreconnectapi/capabilitysetting
|
|
51
|
+
if (!existingRemote) {
|
|
52
|
+
return enableOp;
|
|
53
|
+
}
|
|
54
|
+
(0, invariant_1.invariant)('enabled' in existingRemote.attributes, `Expected "enabled" attribute in ${existingRemote.id}`);
|
|
55
|
+
const existingEnabled = existingRemote.attributes.enabled === true;
|
|
56
|
+
const newOption = entitlementValue ? apple_utils_1.CapabilityTypeOption.ON : apple_utils_1.CapabilityTypeOption.OFF;
|
|
57
|
+
// If both are enabled and the existing one has settings, skip the update
|
|
58
|
+
if (existingEnabled && entitlementValue && existingRemote.attributes.settings) {
|
|
59
|
+
return skipOp;
|
|
60
|
+
}
|
|
61
|
+
// If the states don't match, we need to update
|
|
62
|
+
const newEnabled = newOption === apple_utils_1.CapabilityTypeOption.ON;
|
|
63
|
+
return existingEnabled === newEnabled ? skipOp : { op: 'enable', option: newOption };
|
|
64
|
+
};
|
|
65
|
+
// NOTE(Bacon): From manually toggling values in Xcode and checking the git diff and network requests.
|
|
66
|
+
// Last Updated: July 22nd, 2021
|
|
67
|
+
// https://developer-mdn.apple.com/documentation/bundleresources/entitlements
|
|
68
|
+
exports.CapabilityMapping = [
|
|
69
|
+
{
|
|
70
|
+
name: 'HomeKit',
|
|
71
|
+
entitlement: 'com.apple.developer.homekit',
|
|
72
|
+
capability: apple_utils_1.CapabilityType.HOME_KIT,
|
|
73
|
+
validateOptions: validateBooleanOptions,
|
|
74
|
+
getSyncOperation: getBooleanSyncOperation,
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
name: 'Hotspot',
|
|
78
|
+
entitlement: 'com.apple.developer.networking.HotspotConfiguration',
|
|
79
|
+
capability: apple_utils_1.CapabilityType.HOT_SPOT,
|
|
80
|
+
validateOptions: validateBooleanOptions,
|
|
81
|
+
getSyncOperation: getBooleanSyncOperation,
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
name: 'Multipath',
|
|
85
|
+
entitlement: 'com.apple.developer.networking.multipath',
|
|
86
|
+
capability: apple_utils_1.CapabilityType.MULTIPATH,
|
|
87
|
+
validateOptions: validateBooleanOptions,
|
|
88
|
+
getSyncOperation: getBooleanSyncOperation,
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
name: 'SiriKit',
|
|
92
|
+
entitlement: 'com.apple.developer.siri',
|
|
93
|
+
capability: apple_utils_1.CapabilityType.SIRI_KIT,
|
|
94
|
+
validateOptions: validateBooleanOptions,
|
|
95
|
+
getSyncOperation: getBooleanSyncOperation,
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
name: 'Wireless Accessory Configuration',
|
|
99
|
+
entitlement: 'com.apple.external-accessory.wireless-configuration',
|
|
100
|
+
capability: apple_utils_1.CapabilityType.WIRELESS_ACCESSORY,
|
|
101
|
+
validateOptions: validateBooleanOptions,
|
|
102
|
+
getSyncOperation: getBooleanSyncOperation,
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
name: 'Extended Virtual Address Space',
|
|
106
|
+
entitlement: 'com.apple.developer.kernel.extended-virtual-addressing',
|
|
107
|
+
capability: apple_utils_1.CapabilityType.EXTENDED_VIRTUAL_ADDRESSING,
|
|
108
|
+
validateOptions: validateBooleanOptions,
|
|
109
|
+
getSyncOperation: getBooleanSyncOperation,
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
name: 'Access WiFi Information',
|
|
113
|
+
entitlement: 'com.apple.developer.networking.wifi-info',
|
|
114
|
+
capability: apple_utils_1.CapabilityType.ACCESS_WIFI,
|
|
115
|
+
validateOptions: validateBooleanOptions,
|
|
116
|
+
getSyncOperation: getBooleanSyncOperation,
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
name: 'Associated Domains',
|
|
120
|
+
entitlement: 'com.apple.developer.associated-domains',
|
|
121
|
+
capability: apple_utils_1.CapabilityType.ASSOCIATED_DOMAINS,
|
|
122
|
+
validateOptions: validateStringArrayOptions,
|
|
123
|
+
getSyncOperation: getDefinedValueSyncOperation,
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
name: 'AutoFill Credential Provider',
|
|
127
|
+
entitlement: 'com.apple.developer.authentication-services.autofill-credential-provider',
|
|
128
|
+
capability: apple_utils_1.CapabilityType.AUTO_FILL_CREDENTIAL,
|
|
129
|
+
validateOptions: validateBooleanOptions,
|
|
130
|
+
getSyncOperation: getBooleanSyncOperation,
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
name: 'HealthKit',
|
|
134
|
+
entitlement: 'com.apple.developer.healthkit',
|
|
135
|
+
capability: apple_utils_1.CapabilityType.HEALTH_KIT,
|
|
136
|
+
validateOptions: validateBooleanOptions,
|
|
137
|
+
getSyncOperation: getBooleanSyncOperation,
|
|
138
|
+
},
|
|
139
|
+
// {
|
|
140
|
+
// // ?? -- adds UIRequiredDeviceCapabilities gamekit
|
|
141
|
+
// // Always locked on in dev portal
|
|
142
|
+
// name: 'Game Center',
|
|
143
|
+
// entitlement: 'com.apple.developer.game-center',
|
|
144
|
+
// capability: CapabilityType.GAME_CENTER,
|
|
145
|
+
// validateOptions: validateBooleanOptions,
|
|
146
|
+
// getSyncOperation: getBooleanSyncOperation,
|
|
147
|
+
// },
|
|
148
|
+
{
|
|
149
|
+
name: 'App Groups',
|
|
150
|
+
entitlement: 'com.apple.security.application-groups',
|
|
151
|
+
capability: apple_utils_1.CapabilityType.APP_GROUP,
|
|
152
|
+
// Ex: ['group.CY-A5149AC2-49FC-11E7-B3F3-0335A16FFB8D.com.cydia.Extender']
|
|
153
|
+
validateOptions: validatePrefixedStringArrayOptions('group.'),
|
|
154
|
+
getSyncOperation: getDefinedValueSyncOperation,
|
|
155
|
+
capabilityIdModel: apple_utils_1.AppGroup,
|
|
156
|
+
capabilityIdPrefix: 'group.',
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
name: 'Apple Pay Payment Processing',
|
|
160
|
+
entitlement: 'com.apple.developer.in-app-payments',
|
|
161
|
+
capability: apple_utils_1.CapabilityType.APPLE_PAY,
|
|
162
|
+
// Ex: ['merchant.com.example.development']
|
|
163
|
+
validateOptions: validatePrefixedStringArrayOptions('merchant.'),
|
|
164
|
+
getSyncOperation: getDefinedValueSyncOperation,
|
|
165
|
+
capabilityIdModel: apple_utils_1.MerchantId,
|
|
166
|
+
capabilityIdPrefix: 'merchant.',
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
name: 'iCloud',
|
|
170
|
+
entitlement: 'com.apple.developer.icloud-container-identifiers',
|
|
171
|
+
capability: apple_utils_1.CapabilityType.ICLOUD,
|
|
172
|
+
validateOptions: validatePrefixedStringArrayOptions('iCloud.'),
|
|
173
|
+
// Only supports Xcode +6
|
|
174
|
+
getSyncOperation: capabilityWithSettingsSyncOperation,
|
|
175
|
+
capabilityIdModel: apple_utils_1.CloudContainer,
|
|
176
|
+
capabilityIdPrefix: 'iCloud.',
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
name: 'ClassKit',
|
|
180
|
+
entitlement: 'com.apple.developer.ClassKit-environment',
|
|
181
|
+
capability: apple_utils_1.CapabilityType.CLASS_KIT,
|
|
182
|
+
validateOptions: validateDevProdString,
|
|
183
|
+
getSyncOperation: getDefinedValueSyncOperation,
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
name: 'Communication Notifications',
|
|
187
|
+
entitlement: 'com.apple.developer.usernotifications.communication',
|
|
188
|
+
capability: apple_utils_1.CapabilityType.USER_NOTIFICATIONS_COMMUNICATION,
|
|
189
|
+
validateOptions: validateBooleanOptions,
|
|
190
|
+
getSyncOperation: getBooleanSyncOperation,
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
name: 'Time Sensitive Notifications',
|
|
194
|
+
entitlement: 'com.apple.developer.usernotifications.time-sensitive',
|
|
195
|
+
capability: apple_utils_1.CapabilityType.USER_NOTIFICATIONS_TIME_SENSITIVE,
|
|
196
|
+
validateOptions: validateBooleanOptions,
|
|
197
|
+
getSyncOperation: getBooleanSyncOperation,
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
name: 'Group Activities',
|
|
201
|
+
entitlement: 'com.apple.developer.group-session',
|
|
202
|
+
capability: apple_utils_1.CapabilityType.GROUP_ACTIVITIES,
|
|
203
|
+
validateOptions: validateBooleanOptions,
|
|
204
|
+
getSyncOperation: getBooleanSyncOperation,
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
name: 'Family Controls',
|
|
208
|
+
entitlement: 'com.apple.developer.family-controls',
|
|
209
|
+
capability: apple_utils_1.CapabilityType.FAMILY_CONTROLS,
|
|
210
|
+
validateOptions: validateBooleanOptions,
|
|
211
|
+
getSyncOperation: getBooleanSyncOperation,
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
// https://developer-mdn.apple.com/documentation/bundleresources/entitlements/com_apple_developer_default-data-protection
|
|
215
|
+
name: 'Data Protection',
|
|
216
|
+
entitlement: 'com.apple.developer.default-data-protection',
|
|
217
|
+
capability: apple_utils_1.CapabilityType.DATA_PROTECTION,
|
|
218
|
+
validateOptions: createValidateStringOptions([
|
|
219
|
+
'NSFileProtectionCompleteUnlessOpen',
|
|
220
|
+
'NSFileProtectionCompleteUntilFirstUserAuthentication',
|
|
221
|
+
'NSFileProtectionNone',
|
|
222
|
+
'NSFileProtectionComplete',
|
|
223
|
+
]),
|
|
224
|
+
getSyncOperation: ({ existingRemote, entitlementValue: entitlement }) => {
|
|
225
|
+
const newValue = (() => {
|
|
226
|
+
if (entitlement === 'NSFileProtectionComplete') {
|
|
227
|
+
return apple_utils_1.CapabilityTypeDataProtectionOption.COMPLETE_PROTECTION;
|
|
228
|
+
}
|
|
229
|
+
else if (entitlement === 'NSFileProtectionCompleteUnlessOpen') {
|
|
230
|
+
return apple_utils_1.CapabilityTypeDataProtectionOption.PROTECTED_UNLESS_OPEN;
|
|
231
|
+
}
|
|
232
|
+
else if (entitlement === 'NSFileProtectionCompleteUntilFirstUserAuthentication') {
|
|
233
|
+
return apple_utils_1.CapabilityTypeDataProtectionOption.PROTECTED_UNTIL_FIRST_USER_AUTH;
|
|
234
|
+
}
|
|
235
|
+
// NSFileProtectionNone isn't documented, not sure how to handle
|
|
236
|
+
throw new Error(`iOS entitlement "com.apple.developer.default-data-protection" is using unsupported value "${entitlement}"`);
|
|
237
|
+
})();
|
|
238
|
+
const enableOp = { op: 'enable', option: newValue };
|
|
239
|
+
if (!existingRemote) {
|
|
240
|
+
return enableOp;
|
|
241
|
+
}
|
|
242
|
+
(0, invariant_1.invariant)(existingRemote.attributes.settings?.[0].key === 'DATA_PROTECTION_PERMISSION_LEVEL');
|
|
243
|
+
const oldValue = existingRemote.attributes.settings[0]?.options?.[0]?.key;
|
|
244
|
+
return oldValue === newValue ? skipOp : enableOp;
|
|
245
|
+
},
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
// Deprecated
|
|
249
|
+
name: 'Inter-App Audio',
|
|
250
|
+
entitlement: 'inter-app-audio',
|
|
251
|
+
capability: apple_utils_1.CapabilityType.INTER_APP_AUDIO,
|
|
252
|
+
validateOptions: validateBooleanOptions,
|
|
253
|
+
getSyncOperation: getBooleanSyncOperation,
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
// https://developer-mdn.apple.com/documentation/bundleresources/entitlements/com_apple_developer_networking_networkextension
|
|
257
|
+
name: 'Network Extensions',
|
|
258
|
+
entitlement: 'com.apple.developer.networking.networkextension',
|
|
259
|
+
capability: apple_utils_1.CapabilityType.NETWORK_EXTENSIONS,
|
|
260
|
+
validateOptions: createValidateStringArrayOptions([
|
|
261
|
+
'dns-proxy',
|
|
262
|
+
'app-proxy-provider',
|
|
263
|
+
'content-filter-provider',
|
|
264
|
+
'packet-tunnel-provider',
|
|
265
|
+
'dns-proxy-systemextension',
|
|
266
|
+
'app-proxy-provider-systemextension',
|
|
267
|
+
'content-filter-provider-systemextension',
|
|
268
|
+
'packet-tunnel-provider-systemextension',
|
|
269
|
+
'dns-settings',
|
|
270
|
+
'app-push-provider',
|
|
271
|
+
]),
|
|
272
|
+
getSyncOperation: getDefinedValueSyncOperation,
|
|
273
|
+
},
|
|
274
|
+
{
|
|
275
|
+
// https://developer-mdn.apple.com/documentation/bundleresources/entitlements/com_apple_developer_nfc_readersession_formats
|
|
276
|
+
name: 'NFC Tag Reading',
|
|
277
|
+
entitlement: 'com.apple.developer.nfc.readersession.formats',
|
|
278
|
+
capability: apple_utils_1.CapabilityType.NFC_TAG_READING,
|
|
279
|
+
// Technically it seems only `TAG` is allowed, but many apps and packages tell users to add `NDEF` as well.
|
|
280
|
+
validateOptions: createValidateStringArrayOptions(['NDEF', 'TAG']),
|
|
281
|
+
getSyncOperation: getDefinedValueSyncOperation,
|
|
282
|
+
},
|
|
283
|
+
{
|
|
284
|
+
name: 'Personal VPN',
|
|
285
|
+
entitlement: 'com.apple.developer.networking.vpn.api',
|
|
286
|
+
capability: apple_utils_1.CapabilityType.PERSONAL_VPN,
|
|
287
|
+
// Ex: ['allow-vpn']
|
|
288
|
+
validateOptions: createValidateStringArrayOptions(['allow-vpn']),
|
|
289
|
+
getSyncOperation: getDefinedValueSyncOperation,
|
|
290
|
+
},
|
|
291
|
+
{
|
|
292
|
+
// https://developer-mdn.apple.com/documentation/bundleresources/entitlements/com_apple_developer_networking_vpn_api
|
|
293
|
+
name: 'Push Notifications',
|
|
294
|
+
// com.apple.developer.aps-environment
|
|
295
|
+
entitlement: 'aps-environment',
|
|
296
|
+
capability: apple_utils_1.CapabilityType.PUSH_NOTIFICATIONS,
|
|
297
|
+
validateOptions: validateDevProdString,
|
|
298
|
+
getSyncOperation: ({ existingRemote, entitlementValue: entitlement, additionalOptions: { usesBroadcastPushNotifications }, }) => {
|
|
299
|
+
const newOption = (() => {
|
|
300
|
+
const option = entitlement ? apple_utils_1.CapabilityTypeOption.ON : apple_utils_1.CapabilityTypeOption.OFF;
|
|
301
|
+
if (option === apple_utils_1.CapabilityTypeOption.ON && usesBroadcastPushNotifications) {
|
|
302
|
+
return apple_utils_1.CapabilityTypePushNotificationsOption.PUSH_NOTIFICATION_FEATURE_BROADCAST;
|
|
303
|
+
}
|
|
304
|
+
return option;
|
|
305
|
+
})();
|
|
306
|
+
const createOp = { op: 'enable', option: newOption };
|
|
307
|
+
if (!existingRemote) {
|
|
308
|
+
// If the remote capability does not exist, we create it.
|
|
309
|
+
return createOp;
|
|
310
|
+
}
|
|
311
|
+
// For push notifications, we should always update the capability if
|
|
312
|
+
// - settings are not defined in the existing capability, but usesBroadcastPushNotifications is enabled (we want to add settings for this capability)
|
|
313
|
+
// - settings are defined in the existing capability, but usesBroadcastPushNotifications is disabled (we want to remove settings for this capability)
|
|
314
|
+
const noSettingsAttributes = existingRemote.attributes.settings == null;
|
|
315
|
+
return !noSettingsAttributes === usesBroadcastPushNotifications ? skipOp : createOp;
|
|
316
|
+
},
|
|
317
|
+
},
|
|
318
|
+
{
|
|
319
|
+
name: 'Wallet',
|
|
320
|
+
entitlement: 'com.apple.developer.pass-type-identifiers',
|
|
321
|
+
capability: apple_utils_1.CapabilityType.WALLET,
|
|
322
|
+
// Ex: ['$(TeamIdentifierPrefix)*']
|
|
323
|
+
validateOptions: validateStringArrayOptions,
|
|
324
|
+
getSyncOperation: getDefinedValueSyncOperation,
|
|
325
|
+
},
|
|
326
|
+
{
|
|
327
|
+
name: 'Sign In with Apple',
|
|
328
|
+
entitlement: 'com.apple.developer.applesignin',
|
|
329
|
+
capability: apple_utils_1.CapabilityType.APPLE_ID_AUTH,
|
|
330
|
+
// Ex: ['Default']
|
|
331
|
+
validateOptions: createValidateStringArrayOptions(['Default']),
|
|
332
|
+
getSyncOperation: capabilityWithSettingsSyncOperation,
|
|
333
|
+
},
|
|
334
|
+
{
|
|
335
|
+
name: 'Fonts',
|
|
336
|
+
entitlement: 'com.apple.developer.user-fonts',
|
|
337
|
+
capability: apple_utils_1.CapabilityType.FONT_INSTALLATION,
|
|
338
|
+
validateOptions: createValidateStringArrayOptions(['app-usage', 'system-installation']),
|
|
339
|
+
getSyncOperation: getDefinedValueSyncOperation,
|
|
340
|
+
},
|
|
341
|
+
{
|
|
342
|
+
name: 'Apple Pay Later Merchandising',
|
|
343
|
+
entitlement: 'com.apple.developer.pay-later-merchandising',
|
|
344
|
+
capability: apple_utils_1.CapabilityType.APPLE_PAY_LATER_MERCHANDISING,
|
|
345
|
+
validateOptions: createValidateStringArrayOptions(['payinfour-merchandising']),
|
|
346
|
+
getSyncOperation: getDefinedValueSyncOperation,
|
|
347
|
+
},
|
|
348
|
+
{
|
|
349
|
+
name: 'Sensitive Content Analysis',
|
|
350
|
+
entitlement: 'com.apple.developer.sensitivecontentanalysis.client',
|
|
351
|
+
capability: apple_utils_1.CapabilityType.SENSITIVE_CONTENT_ANALYSIS,
|
|
352
|
+
validateOptions: createValidateStringArrayOptions(['analysis']),
|
|
353
|
+
getSyncOperation: getDefinedValueSyncOperation,
|
|
354
|
+
},
|
|
355
|
+
{
|
|
356
|
+
// Not in Xcode
|
|
357
|
+
// https://developer-mdn.apple.com/documentation/devicecheck/preparing_to_use_the_app_attest_service
|
|
358
|
+
// https://developer-mdn.apple.com/documentation/bundleresources/entitlements/com_apple_developer_devicecheck_appattest-environment
|
|
359
|
+
name: 'App Attest',
|
|
360
|
+
entitlement: 'com.apple.developer.devicecheck.appattest-environment',
|
|
361
|
+
capability: apple_utils_1.CapabilityType.APP_ATTEST,
|
|
362
|
+
validateOptions: validateDevProdString,
|
|
363
|
+
getSyncOperation: getDefinedValueSyncOperation,
|
|
364
|
+
},
|
|
365
|
+
{
|
|
366
|
+
entitlement: 'com.apple.developer.coremedia.hls.low-latency',
|
|
367
|
+
name: 'Low Latency HLS',
|
|
368
|
+
capability: apple_utils_1.CapabilityType.HLS_LOW_LATENCY,
|
|
369
|
+
validateOptions: validateBooleanOptions,
|
|
370
|
+
getSyncOperation: getBooleanSyncOperation,
|
|
371
|
+
},
|
|
372
|
+
{
|
|
373
|
+
entitlement: 'com.apple.developer.associated-domains.mdm-managed',
|
|
374
|
+
name: 'MDM Managed Associated Domains',
|
|
375
|
+
capability: apple_utils_1.CapabilityType.MDM_MANAGED_ASSOCIATED_DOMAINS,
|
|
376
|
+
validateOptions: validateBooleanOptions,
|
|
377
|
+
getSyncOperation: getBooleanSyncOperation,
|
|
378
|
+
},
|
|
379
|
+
{
|
|
380
|
+
entitlement: 'com.apple.developer.fileprovider.testing-mode',
|
|
381
|
+
name: 'FileProvider TestingMode',
|
|
382
|
+
capability: apple_utils_1.CapabilityType.FILE_PROVIDER_TESTING_MODE,
|
|
383
|
+
validateOptions: validateBooleanOptions,
|
|
384
|
+
getSyncOperation: getBooleanSyncOperation,
|
|
385
|
+
},
|
|
386
|
+
{
|
|
387
|
+
entitlement: 'com.apple.developer.healthkit.recalibrate-estimates',
|
|
388
|
+
name: 'Recalibrate Estimates',
|
|
389
|
+
capability: apple_utils_1.CapabilityType.HEALTH_KIT_RECALIBRATE_ESTIMATES,
|
|
390
|
+
validateOptions: validateBooleanOptions,
|
|
391
|
+
getSyncOperation: getBooleanSyncOperation,
|
|
392
|
+
},
|
|
393
|
+
{
|
|
394
|
+
entitlement: 'com.apple.developer.maps',
|
|
395
|
+
name: 'Maps',
|
|
396
|
+
capability: apple_utils_1.CapabilityType.MAPS,
|
|
397
|
+
validateOptions: validateBooleanOptions,
|
|
398
|
+
getSyncOperation: getBooleanSyncOperation,
|
|
399
|
+
},
|
|
400
|
+
{
|
|
401
|
+
entitlement: 'com.apple.developer.user-management',
|
|
402
|
+
name: 'TV Services',
|
|
403
|
+
capability: apple_utils_1.CapabilityType.USER_MANAGEMENT,
|
|
404
|
+
validateOptions: validateBooleanOptions,
|
|
405
|
+
getSyncOperation: getBooleanSyncOperation,
|
|
406
|
+
},
|
|
407
|
+
{
|
|
408
|
+
entitlement: 'com.apple.developer.networking.custom-protocol',
|
|
409
|
+
name: 'Custom Network Protocol',
|
|
410
|
+
capability: apple_utils_1.CapabilityType.NETWORK_CUSTOM_PROTOCOL,
|
|
411
|
+
validateOptions: validateBooleanOptions,
|
|
412
|
+
getSyncOperation: getBooleanSyncOperation,
|
|
413
|
+
},
|
|
414
|
+
{
|
|
415
|
+
entitlement: 'com.apple.developer.system-extension.install',
|
|
416
|
+
name: 'System Extension',
|
|
417
|
+
capability: apple_utils_1.CapabilityType.SYSTEM_EXTENSION_INSTALL,
|
|
418
|
+
validateOptions: validateBooleanOptions,
|
|
419
|
+
getSyncOperation: getBooleanSyncOperation,
|
|
420
|
+
},
|
|
421
|
+
{
|
|
422
|
+
entitlement: 'com.apple.developer.push-to-talk',
|
|
423
|
+
name: 'Push to Talk',
|
|
424
|
+
capability: apple_utils_1.CapabilityType.PUSH_TO_TALK,
|
|
425
|
+
validateOptions: validateBooleanOptions,
|
|
426
|
+
getSyncOperation: getBooleanSyncOperation,
|
|
427
|
+
},
|
|
428
|
+
{
|
|
429
|
+
entitlement: 'com.apple.developer.driverkit.transport.usb',
|
|
430
|
+
name: 'DriverKit USB Transport (development)',
|
|
431
|
+
capability: apple_utils_1.CapabilityType.DRIVER_KIT_USB_TRANSPORT_PUB,
|
|
432
|
+
validateOptions: validateBooleanOptions,
|
|
433
|
+
getSyncOperation: getBooleanSyncOperation,
|
|
434
|
+
},
|
|
435
|
+
{
|
|
436
|
+
entitlement: 'com.apple.developer.kernel.increased-memory-limit',
|
|
437
|
+
name: 'Increased Memory Limit',
|
|
438
|
+
capability: apple_utils_1.CapabilityType.INCREASED_MEMORY_LIMIT,
|
|
439
|
+
validateOptions: validateBooleanOptions,
|
|
440
|
+
getSyncOperation: getBooleanSyncOperation,
|
|
441
|
+
},
|
|
442
|
+
{
|
|
443
|
+
entitlement: 'com.apple.developer.driverkit.communicates-with-drivers',
|
|
444
|
+
name: 'Communicates with Drivers',
|
|
445
|
+
capability: apple_utils_1.CapabilityType.DRIVER_KIT_COMMUNICATES_WITH_DRIVERS,
|
|
446
|
+
validateOptions: validateBooleanOptions,
|
|
447
|
+
getSyncOperation: getBooleanSyncOperation,
|
|
448
|
+
},
|
|
449
|
+
{
|
|
450
|
+
entitlement: 'com.apple.developer.media-device-discovery-extension',
|
|
451
|
+
name: 'Media Device Discovery',
|
|
452
|
+
capability: apple_utils_1.CapabilityType.MEDIA_DEVICE_DISCOVERY,
|
|
453
|
+
validateOptions: validateBooleanOptions,
|
|
454
|
+
getSyncOperation: getBooleanSyncOperation,
|
|
455
|
+
},
|
|
456
|
+
{
|
|
457
|
+
entitlement: 'com.apple.developer.driverkit.allow-third-party-userclients',
|
|
458
|
+
name: 'DriverKit Allow Third Party UserClients',
|
|
459
|
+
capability: apple_utils_1.CapabilityType.DRIVER_KIT_ALLOW_THIRD_PARTY_USER_CLIENTS,
|
|
460
|
+
validateOptions: validateBooleanOptions,
|
|
461
|
+
getSyncOperation: getBooleanSyncOperation,
|
|
462
|
+
},
|
|
463
|
+
{
|
|
464
|
+
entitlement: 'com.apple.developer.weatherkit',
|
|
465
|
+
name: 'WeatherKit',
|
|
466
|
+
capability: apple_utils_1.CapabilityType.WEATHER_KIT,
|
|
467
|
+
validateOptions: validateBooleanOptions,
|
|
468
|
+
getSyncOperation: getBooleanSyncOperation,
|
|
469
|
+
},
|
|
470
|
+
{
|
|
471
|
+
entitlement: 'com.apple.developer.on-demand-install-capable',
|
|
472
|
+
name: 'On Demand Install Capable for App Clip Extensions',
|
|
473
|
+
capability: apple_utils_1.CapabilityType.ON_DEMAND_INSTALL_EXTENSIONS,
|
|
474
|
+
validateOptions: validateBooleanOptions,
|
|
475
|
+
getSyncOperation: getBooleanSyncOperation,
|
|
476
|
+
},
|
|
477
|
+
{
|
|
478
|
+
entitlement: 'com.apple.developer.driverkit.family.scsicontroller',
|
|
479
|
+
name: 'DriverKit Family SCSIController (development)',
|
|
480
|
+
capability: apple_utils_1.CapabilityType.DRIVER_KIT_FAMILY_SCSI_CONTROLLER_PUB,
|
|
481
|
+
validateOptions: validateBooleanOptions,
|
|
482
|
+
getSyncOperation: getBooleanSyncOperation,
|
|
483
|
+
},
|
|
484
|
+
{
|
|
485
|
+
entitlement: 'com.apple.developer.driverkit.family.serial',
|
|
486
|
+
name: 'DriverKit Family Serial (development)',
|
|
487
|
+
capability: apple_utils_1.CapabilityType.DRIVER_KIT_FAMILY_SERIAL_PUB,
|
|
488
|
+
validateOptions: validateBooleanOptions,
|
|
489
|
+
getSyncOperation: getBooleanSyncOperation,
|
|
490
|
+
},
|
|
491
|
+
{
|
|
492
|
+
entitlement: 'com.apple.developer.driverkit.family.networking',
|
|
493
|
+
name: 'DriverKit Family Networking (development)',
|
|
494
|
+
capability: apple_utils_1.CapabilityType.DRIVER_KIT_FAMILY_NETWORKING_PUB,
|
|
495
|
+
validateOptions: validateBooleanOptions,
|
|
496
|
+
getSyncOperation: getBooleanSyncOperation,
|
|
497
|
+
},
|
|
498
|
+
{
|
|
499
|
+
entitlement: 'com.apple.developer.driverkit.family.hid.eventservice',
|
|
500
|
+
name: 'DriverKit Family HID EventService (development)',
|
|
501
|
+
capability: apple_utils_1.CapabilityType.DRIVER_KIT_FAMILY_HID_EVENT_SERVICE_PUB,
|
|
502
|
+
validateOptions: validateBooleanOptions,
|
|
503
|
+
getSyncOperation: getBooleanSyncOperation,
|
|
504
|
+
},
|
|
505
|
+
{
|
|
506
|
+
entitlement: 'com.apple.developer.driverkit.family.hid.device',
|
|
507
|
+
name: 'DriverKit Family HID Device (development)',
|
|
508
|
+
capability: apple_utils_1.CapabilityType.DRIVER_KIT_FAMILY_HID_DEVICE_PUB,
|
|
509
|
+
validateOptions: validateBooleanOptions,
|
|
510
|
+
getSyncOperation: getBooleanSyncOperation,
|
|
511
|
+
},
|
|
512
|
+
{
|
|
513
|
+
entitlement: 'com.apple.developer.driverkit',
|
|
514
|
+
name: 'DriverKit for Development',
|
|
515
|
+
capability: apple_utils_1.CapabilityType.DRIVER_KIT_PUBLIC,
|
|
516
|
+
validateOptions: validateBooleanOptions,
|
|
517
|
+
getSyncOperation: getBooleanSyncOperation,
|
|
518
|
+
},
|
|
519
|
+
{
|
|
520
|
+
entitlement: 'com.apple.developer.driverkit.transport.hid',
|
|
521
|
+
name: 'DriverKit Transport HID (development)',
|
|
522
|
+
capability: apple_utils_1.CapabilityType.DRIVER_KIT_TRANSPORT_HID_PUB,
|
|
523
|
+
validateOptions: validateBooleanOptions,
|
|
524
|
+
getSyncOperation: getBooleanSyncOperation,
|
|
525
|
+
},
|
|
526
|
+
{
|
|
527
|
+
entitlement: 'com.apple.developer.driverkit.family.audio',
|
|
528
|
+
name: 'DriverKit Family Audio (development)',
|
|
529
|
+
capability: apple_utils_1.CapabilityType.DRIVER_KIT_FAMILY_AUDIO_PUB,
|
|
530
|
+
validateOptions: validateBooleanOptions,
|
|
531
|
+
getSyncOperation: getBooleanSyncOperation,
|
|
532
|
+
},
|
|
533
|
+
{
|
|
534
|
+
entitlement: 'com.apple.developer.shared-with-you',
|
|
535
|
+
name: 'Shared with You',
|
|
536
|
+
capability: apple_utils_1.CapabilityType.SHARED_WITH_YOU,
|
|
537
|
+
validateOptions: validateBooleanOptions,
|
|
538
|
+
getSyncOperation: getBooleanSyncOperation,
|
|
539
|
+
},
|
|
540
|
+
{
|
|
541
|
+
entitlement: 'com.apple.developer.shared-with-you.collaboration',
|
|
542
|
+
name: 'Messages Collaboration',
|
|
543
|
+
capability: apple_utils_1.CapabilityType.MESSAGES_COLLABORATION,
|
|
544
|
+
validateOptions: validateBooleanOptions,
|
|
545
|
+
getSyncOperation: getBooleanSyncOperation,
|
|
546
|
+
},
|
|
547
|
+
{
|
|
548
|
+
entitlement: 'com.apple.developer.submerged-shallow-depth-and-pressure',
|
|
549
|
+
name: 'Shallow Depth and Pressure',
|
|
550
|
+
capability: apple_utils_1.CapabilityType.SHALLOW_DEPTH_PRESSURE,
|
|
551
|
+
validateOptions: validateBooleanOptions,
|
|
552
|
+
getSyncOperation: getBooleanSyncOperation,
|
|
553
|
+
},
|
|
554
|
+
{
|
|
555
|
+
entitlement: 'com.apple.developer.proximity-reader.identity.display',
|
|
556
|
+
name: 'Tap to Present ID on iPhone (Display Only)',
|
|
557
|
+
capability: apple_utils_1.CapabilityType.TAP_TO_DISPLAY_ID,
|
|
558
|
+
validateOptions: validateBooleanOptions,
|
|
559
|
+
getSyncOperation: getBooleanSyncOperation,
|
|
560
|
+
},
|
|
561
|
+
{
|
|
562
|
+
entitlement: 'com.apple.developer.proximity-reader.payment.acceptance',
|
|
563
|
+
name: 'Tap to Pay on iPhone',
|
|
564
|
+
capability: apple_utils_1.CapabilityType.TAP_TO_PAY_ON_IPHONE,
|
|
565
|
+
validateOptions: validateBooleanOptions,
|
|
566
|
+
getSyncOperation: getBooleanSyncOperation,
|
|
567
|
+
},
|
|
568
|
+
{
|
|
569
|
+
entitlement: 'com.apple.developer.matter.allow-setup-payload',
|
|
570
|
+
name: 'Matter Allow Setup Payload',
|
|
571
|
+
capability: apple_utils_1.CapabilityType.MATTER_ALLOW_SETUP_PAYLOAD,
|
|
572
|
+
validateOptions: validateBooleanOptions,
|
|
573
|
+
getSyncOperation: getBooleanSyncOperation,
|
|
574
|
+
},
|
|
575
|
+
{
|
|
576
|
+
entitlement: 'com.apple.developer.journal.allow',
|
|
577
|
+
name: 'Journaling Suggestions',
|
|
578
|
+
capability: apple_utils_1.CapabilityType.JOURNALING_SUGGESTIONS,
|
|
579
|
+
validateOptions: createValidateStringArrayOptions(['suggestions']),
|
|
580
|
+
getSyncOperation: getDefinedValueSyncOperation,
|
|
581
|
+
},
|
|
582
|
+
{
|
|
583
|
+
entitlement: 'com.apple.developer.managed-app-distribution.install-ui',
|
|
584
|
+
name: 'Managed App Installation UI',
|
|
585
|
+
capability: apple_utils_1.CapabilityType.MANAGED_APP_INSTALLATION_UI,
|
|
586
|
+
validateOptions: createValidateStringArrayOptions(['managed-app']),
|
|
587
|
+
getSyncOperation: getDefinedValueSyncOperation,
|
|
588
|
+
},
|
|
589
|
+
{
|
|
590
|
+
entitlement: 'com.apple.developer.networking.slicing.appcategory',
|
|
591
|
+
name: '5G Network Slicing',
|
|
592
|
+
capability: apple_utils_1.CapabilityType.NETWORK_SLICING,
|
|
593
|
+
validateOptions: createValidateStringArrayOptions([
|
|
594
|
+
'gaming-6014',
|
|
595
|
+
'communication-9000',
|
|
596
|
+
'streaming-9001',
|
|
597
|
+
]),
|
|
598
|
+
getSyncOperation: getDefinedValueSyncOperation,
|
|
599
|
+
},
|
|
600
|
+
{
|
|
601
|
+
entitlement: 'com.apple.developer.networking.slicing.trafficcategory',
|
|
602
|
+
name: '5G Network Slicing',
|
|
603
|
+
capability: apple_utils_1.CapabilityType.NETWORK_SLICING,
|
|
604
|
+
validateOptions: createValidateStringArrayOptions([
|
|
605
|
+
'defaultslice-1',
|
|
606
|
+
'video-2',
|
|
607
|
+
'background-3',
|
|
608
|
+
'voice-4',
|
|
609
|
+
'callsignaling-5',
|
|
610
|
+
'responsivedata-6',
|
|
611
|
+
'avstreaming-7',
|
|
612
|
+
'responsiveav-8',
|
|
613
|
+
]),
|
|
614
|
+
getSyncOperation: getDefinedValueSyncOperation,
|
|
615
|
+
},
|
|
616
|
+
// VMNET
|
|
617
|
+
// These don't appear to have entitlements, so it's unclear how we can automatically enable / disable them at this time.
|
|
618
|
+
// TODO: Maybe add a warning about manually enabling features?
|
|
619
|
+
// ?? -- links `StoreKit.framework`
|
|
620
|
+
// Always locked on in dev portal
|
|
621
|
+
// {
|
|
622
|
+
// entitlement: '',
|
|
623
|
+
// name: 'In-App Purchase',
|
|
624
|
+
// capability: CapabilityType.IN_APP_PURCHASE,
|
|
625
|
+
// },
|
|
626
|
+
// {
|
|
627
|
+
// entitlement: '',
|
|
628
|
+
// name: 'HLS Interstitial Previews',
|
|
629
|
+
// capability: 'HLS_INTERSTITIAL_PREVIEW',
|
|
630
|
+
// },
|
|
631
|
+
// "Game Controllers" doesn't appear in Dev Portal but it does show up in Xcode,
|
|
632
|
+
// toggling in Xcode causes no network request to be sent.
|
|
633
|
+
// Therefore it seems that it's a mistake in Xcode,
|
|
634
|
+
// the key `GCSupportsControllerUserInteraction` just needs to be present in Info.plist
|
|
635
|
+
// "Keychain Sharing" doesn't appear in Dev Portal but it does show up in Xcode,
|
|
636
|
+
// toggling in Xcode causes no network request to be sent.
|
|
637
|
+
// Adding to Xcode puts 'keychain-access-groups' into the entitlements so
|
|
638
|
+
// it's not clear if it needs to be updated.
|
|
639
|
+
// "Contact Notes" requires the user to ask Apple in a form:
|
|
640
|
+
// https://developer-mdn.apple.com/contact/request/contact-note-field
|
|
641
|
+
// com.apple.developer.contacts.notes: https://developer-mdn.apple.com/documentation/bundleresources/entitlements/com_apple_developer_contacts_notes/
|
|
642
|
+
// "Exposure Notification" requires the user to ask Apple in a form:
|
|
643
|
+
// https://developer-mdn.apple.com/contact/request/exposure-notification-entitlement
|
|
644
|
+
// com.apple.developer.exposure-notification: https://developer-mdn.apple.com/documentation/bundleresources/entitlements/com_apple_developer_exposure-notification/
|
|
645
|
+
];
|
|
646
|
+
exports.associatedDomainsCapabilityType = (0, nullthrows_1.default)(exports.CapabilityMapping.find(it => it.capability === apple_utils_1.CapabilityType.ASSOCIATED_DOMAINS));
|