mirror of
https://github.com/expo/eas-cli.git
synced 2026-11-14 10:08:06 -10:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4c97fc31f8 | ||
|
|
42252cd355 | ||
|
|
784b52bddb | ||
|
|
d85b3283f0 | ||
|
|
0c332eb6d3 | ||
|
|
26bb7052ef | ||
|
|
8333d3361a | ||
|
|
f62a8cad27 | ||
|
|
b52145c0a7 | ||
|
|
e06fc189aa | ||
|
|
b346f96c63 | ||
|
|
26ba0719ce | ||
|
|
c33dff99d2 | ||
|
|
3d7d851d07 | ||
|
|
fad3f1346c | ||
|
|
dece2e5242 | ||
|
|
f579441e05 | ||
|
|
e40634297b | ||
|
|
17ea5d4f01 | ||
|
|
d803e52085 | ||
|
|
e400515fa7 | ||
|
|
e6233b3028 | ||
|
|
eec975c171 | ||
|
|
08ea07bf5c | ||
|
|
e5d94ad15c | ||
|
|
a51fbd37ca | ||
|
|
1c78e09676 | ||
|
|
d1edec6549 | ||
|
|
ab6483f7a5 | ||
|
|
32848f6255 | ||
|
|
7e2aae333d | ||
|
|
191cb2396c | ||
|
|
33fb5fad03 | ||
|
|
3ec6e5dd14 | ||
|
|
b6acbf05d8 | ||
|
|
957874d8cc | ||
|
|
1a5fbc2342 | ||
|
|
68cd7e6fba | ||
|
|
628a3f708a | ||
|
|
3ac45f08ba | ||
|
|
73ba19de66 | ||
|
|
ef6623cd15 | ||
|
|
d78917b947 | ||
|
|
2b59a5e2ee | ||
|
|
e6465cd3e5 | ||
|
|
561e3bbb5a | ||
|
|
64a6e3a0f7 | ||
|
|
33c965b236 | ||
|
|
831e69e5c6 | ||
|
|
7d47060b12 | ||
|
|
b6b22b79c3 | ||
|
|
6770cd99c9 | ||
|
|
704745b829 | ||
|
|
3780e2ae1c | ||
|
|
e93854d039 | ||
|
|
89354f5932 | ||
|
|
a074ce0cff | ||
|
|
31f583442a | ||
|
|
9bf1f383e5 | ||
|
|
e157473f41 | ||
|
|
ba87bb6e29 | ||
|
|
efd9213fab | ||
|
|
a3d9bc0eca |
No files matched your search
Vendored
+10
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"eslint.enable": true,
|
||||
"search.exclude": {
|
||||
"**/node_modules": true,
|
||||
"**/bower_components": true,
|
||||
"**/*.code-search": true,
|
||||
"**/src/**/build/**": false,
|
||||
"**/src/build/**": false,
|
||||
}
|
||||
}
|
||||
+105
@@ -8,6 +8,111 @@ This is the log of notable changes to EAS CLI and related packages.
|
||||
|
||||
### 🎉 New features
|
||||
|
||||
- Add `auto`, `sdk-50` and `sdk-49` image tags. ([#2298](https://github.com/expo/eas-cli/pull/2298) by [@szdziedzic](https://github.com/szdziedzic))
|
||||
- Add `--build-logger-level` flag to `eas build` command. ([#2313](https://github.com/expo/eas-cli/pull/2313) by [@szdziedzic](https://github.com/szdziedzic))
|
||||
|
||||
### 🐛 Bug fixes
|
||||
|
||||
### 🧹 Chores
|
||||
|
||||
- Deprecate the `default` image tag. ([#2298](https://github.com/expo/eas-cli/pull/2298) by [@szdziedzic](https://github.com/szdziedzic))
|
||||
- Deprecate iOS images with Xcode version lower then 15. ([#2298](https://github.com/expo/eas-cli/pull/2298) by [@szdziedzic](https://github.com/szdziedzic))
|
||||
|
||||
## [7.7.0](https://github.com/expo/eas-cli/releases/tag/v7.7.0) - 2024-04-05
|
||||
|
||||
### 🎉 New features
|
||||
|
||||
- Generate metadata file for project archive ([#2149](https://github.com/expo/eas-cli/pull/2149) by [@khamilowicz](https://github.com/khamilowicz))
|
||||
- Add --verbose-fastlane flag to eas submit command for more robust fastlane pilot logs. ([#2276](https://github.com/expo/eas-cli/pull/2276) by [@khamilowicz](https://github.com/khamilowicz))
|
||||
- Add `eas credentials:configure-build` subcommand. ([#2282](https://github.com/expo/eas-cli/pull/2282) by [@fiberjw](https://github.com/fiberjw))
|
||||
|
||||
### 🧹 Chores
|
||||
|
||||
- Add info about the Xcode 15.3 image to `eas.schema.json`. ([#2312](https://github.com/expo/eas-cli/pull/2312) by [@szdziedzic](https://github.com/szdziedzic))
|
||||
|
||||
## [7.6.2](https://github.com/expo/eas-cli/releases/tag/v7.6.2) - 2024-03-27
|
||||
|
||||
### 🧹 Chores
|
||||
|
||||
- Upgrade [`eas-build`](https://github.com/expo/eas-build) dependencies. ([#2301](https://github.com/expo/eas-cli/pull/2301) by [@expo-bot](https://github.com/expo-bot))
|
||||
- Upgrade [`eas-build`](https://github.com/expo/eas-build) dependencies. ([#2304](https://github.com/expo/eas-cli/pull/2304) by [@expo-bot](https://github.com/expo-bot))
|
||||
|
||||
## [7.6.1](https://github.com/expo/eas-cli/releases/tag/v7.6.1) - 2024-03-25
|
||||
|
||||
### 🧹 Chores
|
||||
|
||||
- Upgrade [`eas-build`](https://github.com/expo/eas-build) dependencies. ([#2291](https://github.com/expo/eas-cli/pull/2291) by [@expo-bot](https://github.com/expo-bot))
|
||||
- Fix asset limit punctuation. ([#2296](https://github.com/expo/eas-cli/pull/2296) by [@quinlanj](https://github.com/quinlanj))
|
||||
- Upgrade [`eas-build`](https://github.com/expo/eas-build) dependencies. ([#2293](https://github.com/expo/eas-cli/pull/2293) by [@expo-bot](https://github.com/expo-bot))
|
||||
|
||||
## [7.6.0](https://github.com/expo/eas-cli/releases/tag/v7.6.0) - 2024-03-18
|
||||
|
||||
### 🎉 New features
|
||||
|
||||
- Print uncommitted files in non-interactive mode if they fail the execution. ([#2288](https://github.com/expo/eas-cli/pull/2288) by [@sjchmiela](https://github.com/sjchmiela))
|
||||
|
||||
### 🐛 Bug fixes
|
||||
|
||||
- Use a custom build config path with POSIX separator when sending data to the EAS Build server. ([#2285](https://github.com/expo/eas-cli/pull/2285) by [@szdziedzic](https://github.com/szdziedzic))
|
||||
- Improve resolving vcsClient as a part of the project context. ([#2295](https://github.com/expo/eas-cli/pull/2295) by [@szdziedzic](https://github.com/szdziedzic))
|
||||
|
||||
### 🧹 Chores
|
||||
|
||||
- Upgrade [`eas-build`](https://github.com/expo/eas-build) dependencies. ([#2277](https://github.com/expo/eas-cli/pull/2277) by [@expo-bot](https://github.com/expo-bot))
|
||||
- Upgrade [`eas-build`](https://github.com/expo/eas-build) dependencies. ([#2283](https://github.com/expo/eas-cli/pull/2283) by [@expo-bot](https://github.com/expo-bot))
|
||||
- Bump the `@expo/apple-utils` version to switch between the `developer.apple.com` and `developer-mdn.apple.com` domains when one of them doesn't work. ([#2290](https://github.com/expo/eas-cli/pull/2290) by [@szdziedzic](https://github.com/szdziedzic))
|
||||
|
||||
## [7.5.0](https://github.com/expo/eas-cli/releases/tag/v7.5.0) - 2024-03-11
|
||||
|
||||
### 🎉 New features
|
||||
|
||||
- Add `--auto-submit` option to `eas build:internal` command. ([#2271](https://github.com/expo/eas-cli/pull/2271) by [@szdziedzic](https://github.com/szdziedzic))
|
||||
|
||||
### 🧹 Chores
|
||||
|
||||
- Upgrade [`eas-build`](https://github.com/expo/eas-build) dependencies. ([#2274](https://github.com/expo/eas-cli/pull/2274) by [@expo-bot](https://github.com/expo-bot))
|
||||
|
||||
## [7.4.0](https://github.com/expo/eas-cli/releases/tag/v7.4.0) - 2024-03-10
|
||||
|
||||
### 🎉 New features
|
||||
|
||||
- Use new expo-updates configuration:syncnative for versioned native sync. ([#2269](https://github.com/expo/eas-cli/pull/2269) by [@wschurman](https://github.com/wschurman))
|
||||
|
||||
### 🐛 Bug fixes
|
||||
|
||||
- Fix expo-updates package version detection for canaries. ([#2243](https://github.com/expo/eas-cli/pull/2243) by [@wschurman](https://github.com/wschurman))
|
||||
- Add missing `config` property to `eas.json` schema. ([#2248](https://github.com/expo/eas-cli/pull/2248) by [@sjchmiela](https://github.com/sjchmiela))
|
||||
- Use expo-updates runtime version CLI to generate runtime versions. ([#2251](https://github.com/expo/eas-cli/pull/2251) by [@wschurman](https://github.com/wschurman))
|
||||
- Update @expo/apple-utils to handle changes in API. ([73ba19de6662763cc6bff9fac6b7700ffbd0e88a](https://github.com/expo/eas-cli/commit/73ba19de6662763cc6bff9fac6b7700ffbd0e88a) by [@brentvatne](https://github.com/brentvatne))
|
||||
|
||||
### 🧹 Chores
|
||||
|
||||
- Upgrade [`eas-build`](https://github.com/expo/eas-build) dependencies. ([#2237](https://github.com/expo/eas-cli/pull/2237) by [@expo-bot](https://github.com/expo-bot))
|
||||
- Upgrade [`eas-build`](https://github.com/expo/eas-build) dependencies. ([#2240](https://github.com/expo/eas-cli/pull/2240) by [@expo-bot](https://github.com/expo-bot))
|
||||
- Upgrade [`eas-build`](https://github.com/expo/eas-build) dependencies. ([#2253](https://github.com/expo/eas-cli/pull/2253) by [@expo-bot](https://github.com/expo-bot))
|
||||
- Include src/\*\*/build directories in vscode search and replace. ([#2250](https://github.com/expo/eas-cli/pull/2250) by [@wschurman](https://github.com/wschurman))
|
||||
- Upgrade [`eas-build`](https://github.com/expo/eas-build) dependencies. ([#2259](https://github.com/expo/eas-cli/pull/2259) by [@expo-bot](https://github.com/expo-bot))
|
||||
|
||||
## [7.3.0](https://github.com/expo/eas-cli/releases/tag/v7.3.0) - 2024-02-19
|
||||
|
||||
### 🎉 New features
|
||||
|
||||
- Fix expo-updates fingerprinting during update. ([#2231](https://github.com/expo/eas-cli/pull/2231) by [@wschurman](https://github.com/wschurman))
|
||||
|
||||
### 🐛 Bug fixes
|
||||
|
||||
- Don't require expo on fresh react-native project. ([#2235](https://github.com/expo/eas-cli/pull/2235) by [@radoslawkrzemien](https://github.com/radoslawkrzemien))
|
||||
|
||||
### 🧹 Chores
|
||||
|
||||
- Upgrade [`eas-build`](https://github.com/expo/eas-build) dependencies. ([#2229](https://github.com/expo/eas-cli/pull/2229) by [@expo-bot](https://github.com/expo-bot))
|
||||
- Upgrade [`eas-build`](https://github.com/expo/eas-build) dependencies. ([#2230](https://github.com/expo/eas-cli/pull/2230) by [@expo-bot](https://github.com/expo-bot))
|
||||
- Reword update configuration warning. ([#2234](https://github.com/expo/eas-cli/pull/2234) by [@quinlanj](https://github.com/quinlanj))
|
||||
|
||||
## [7.2.0](https://github.com/expo/eas-cli/releases/tag/v7.2.0) - 2024-02-11
|
||||
|
||||
### 🎉 New features
|
||||
|
||||
- Support configuring a Google Service Account Key via eas credentials, for sending Android Notifications via FCM V1. ([#2197](https://github.com/expo/eas-cli/pull/2197) by [@christopherwalter](https://github.com/christopherwalter))
|
||||
|
||||
### 🐛 Bug fixes
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"npmClient": "yarn",
|
||||
"version": "7.2.0",
|
||||
"version": "7.8.0",
|
||||
"$schema": "node_modules/lerna/schemas/lerna-schema.json"
|
||||
}
|
||||
+99
-73
@@ -85,6 +85,7 @@ eas --help COMMAND
|
||||
* [`eas channel:view [NAME]`](#eas-channelview-name)
|
||||
* [`eas config`](#eas-config)
|
||||
* [`eas credentials`](#eas-credentials)
|
||||
* [`eas credentials:configure-build`](#eas-credentialsconfigure-build)
|
||||
* [`eas device:create`](#eas-devicecreate)
|
||||
* [`eas device:delete`](#eas-devicedelete)
|
||||
* [`eas device:list`](#eas-devicelist)
|
||||
@@ -136,7 +137,7 @@ ALIASES
|
||||
$ eas login
|
||||
```
|
||||
|
||||
_See code: [src/commands/account/login.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/account/login.ts)_
|
||||
_See code: [src/commands/account/login.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/account/login.ts)_
|
||||
|
||||
## `eas account:logout`
|
||||
|
||||
@@ -153,7 +154,7 @@ ALIASES
|
||||
$ eas logout
|
||||
```
|
||||
|
||||
_See code: [src/commands/account/logout.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/account/logout.ts)_
|
||||
_See code: [src/commands/account/logout.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/account/logout.ts)_
|
||||
|
||||
## `eas account:view`
|
||||
|
||||
@@ -170,7 +171,7 @@ ALIASES
|
||||
$ eas whoami
|
||||
```
|
||||
|
||||
_See code: [src/commands/account/view.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/account/view.ts)_
|
||||
_See code: [src/commands/account/view.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/account/view.ts)_
|
||||
|
||||
## `eas analytics [STATUS]`
|
||||
|
||||
@@ -184,7 +185,7 @@ DESCRIPTION
|
||||
display or change analytics settings
|
||||
```
|
||||
|
||||
_See code: [src/commands/analytics.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/analytics.ts)_
|
||||
_See code: [src/commands/analytics.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/analytics.ts)_
|
||||
|
||||
## `eas autocomplete [SHELL]`
|
||||
|
||||
@@ -236,7 +237,7 @@ DESCRIPTION
|
||||
create a branch
|
||||
```
|
||||
|
||||
_See code: [src/commands/branch/create.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/branch/create.ts)_
|
||||
_See code: [src/commands/branch/create.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/branch/create.ts)_
|
||||
|
||||
## `eas branch:delete [NAME]`
|
||||
|
||||
@@ -257,7 +258,7 @@ DESCRIPTION
|
||||
delete a branch
|
||||
```
|
||||
|
||||
_See code: [src/commands/branch/delete.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/branch/delete.ts)_
|
||||
_See code: [src/commands/branch/delete.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/branch/delete.ts)_
|
||||
|
||||
## `eas branch:list`
|
||||
|
||||
@@ -277,7 +278,7 @@ DESCRIPTION
|
||||
list all branches
|
||||
```
|
||||
|
||||
_See code: [src/commands/branch/list.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/branch/list.ts)_
|
||||
_See code: [src/commands/branch/list.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/branch/list.ts)_
|
||||
|
||||
## `eas branch:rename`
|
||||
|
||||
@@ -297,7 +298,7 @@ DESCRIPTION
|
||||
rename a branch
|
||||
```
|
||||
|
||||
_See code: [src/commands/branch/rename.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/branch/rename.ts)_
|
||||
_See code: [src/commands/branch/rename.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/branch/rename.ts)_
|
||||
|
||||
## `eas branch:view [NAME]`
|
||||
|
||||
@@ -320,7 +321,7 @@ DESCRIPTION
|
||||
view a branch
|
||||
```
|
||||
|
||||
_See code: [src/commands/branch/view.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/branch/view.ts)_
|
||||
_See code: [src/commands/branch/view.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/branch/view.ts)_
|
||||
|
||||
## `eas build`
|
||||
|
||||
@@ -329,28 +330,33 @@ start a build
|
||||
```
|
||||
USAGE
|
||||
$ eas build [-p android|ios|all] [-e <value>] [--local] [--output <value>] [--wait] [--clear-cache]
|
||||
[--auto-submit | --auto-submit-with-profile <value>] [-m <value>] [--json --non-interactive]
|
||||
[--auto-submit | --auto-submit-with-profile <value>] [-m <value>] [--build-logger-level
|
||||
trace|debug|info|warn|error|fatal] [--json --non-interactive]
|
||||
|
||||
FLAGS
|
||||
-e, --profile=PROFILE_NAME Name of the build profile from eas.json. Defaults to "production" if defined
|
||||
in eas.json.
|
||||
-m, --message=<value> A short message describing the build
|
||||
-e, --profile=PROFILE_NAME Name of the build profile from eas.json. Defaults to
|
||||
"production" if defined in eas.json.
|
||||
-m, --message=<value> A short message describing the build
|
||||
-p, --platform=(android|ios|all)
|
||||
--auto-submit Submit on build complete using the submit profile with the same name as the
|
||||
build profile
|
||||
--auto-submit-with-profile=PROFILE_NAME Submit on build complete using the submit profile with provided name
|
||||
--clear-cache Clear cache before the build
|
||||
--json Enable JSON output, non-JSON messages will be printed to stderr.
|
||||
--local Run build locally [experimental]
|
||||
--non-interactive Run the command in non-interactive mode.
|
||||
--output=<value> Output path for local build
|
||||
--[no-]wait Wait for build(s) to complete
|
||||
--auto-submit Submit on build complete using the submit profile with the
|
||||
same name as the build profile
|
||||
--auto-submit-with-profile=PROFILE_NAME Submit on build complete using the submit profile with
|
||||
provided name
|
||||
--build-logger-level=(trace|debug|info|warn|error|fatal) The level of logs to output during the build process.
|
||||
Defaults to "info".
|
||||
--clear-cache Clear cache before the build
|
||||
--json Enable JSON output, non-JSON messages will be printed to
|
||||
stderr.
|
||||
--local Run build locally [experimental]
|
||||
--non-interactive Run the command in non-interactive mode.
|
||||
--output=<value> Output path for local build
|
||||
--[no-]wait Wait for build(s) to complete
|
||||
|
||||
DESCRIPTION
|
||||
start a build
|
||||
```
|
||||
|
||||
_See code: [src/commands/build/index.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/build/index.ts)_
|
||||
_See code: [src/commands/build/index.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/build/index.ts)_
|
||||
|
||||
## `eas build:cancel [BUILD_ID]`
|
||||
|
||||
@@ -369,7 +375,7 @@ DESCRIPTION
|
||||
cancel a build
|
||||
```
|
||||
|
||||
_See code: [src/commands/build/cancel.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/build/cancel.ts)_
|
||||
_See code: [src/commands/build/cancel.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/build/cancel.ts)_
|
||||
|
||||
## `eas build:configure`
|
||||
|
||||
@@ -386,7 +392,7 @@ DESCRIPTION
|
||||
configure the project to support EAS Build
|
||||
```
|
||||
|
||||
_See code: [src/commands/build/configure.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/build/configure.ts)_
|
||||
_See code: [src/commands/build/configure.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/build/configure.ts)_
|
||||
|
||||
## `eas build:delete [BUILD_ID]`
|
||||
|
||||
@@ -405,7 +411,7 @@ DESCRIPTION
|
||||
delete a build
|
||||
```
|
||||
|
||||
_See code: [src/commands/build/delete.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/build/delete.ts)_
|
||||
_See code: [src/commands/build/delete.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/build/delete.ts)_
|
||||
|
||||
## `eas build:inspect`
|
||||
|
||||
@@ -440,7 +446,7 @@ DESCRIPTION
|
||||
inspect the state of the project at specific build stages, useful for troubleshooting
|
||||
```
|
||||
|
||||
_See code: [src/commands/build/inspect.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/build/inspect.ts)_
|
||||
_See code: [src/commands/build/inspect.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/build/inspect.ts)_
|
||||
|
||||
## `eas build:list`
|
||||
|
||||
@@ -481,7 +487,7 @@ DESCRIPTION
|
||||
list all builds for your project
|
||||
```
|
||||
|
||||
_See code: [src/commands/build/list.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/build/list.ts)_
|
||||
_See code: [src/commands/build/list.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/build/list.ts)_
|
||||
|
||||
## `eas build:resign`
|
||||
|
||||
@@ -507,7 +513,7 @@ DESCRIPTION
|
||||
re-sign a build archive
|
||||
```
|
||||
|
||||
_See code: [src/commands/build/resign.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/build/resign.ts)_
|
||||
_See code: [src/commands/build/resign.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/build/resign.ts)_
|
||||
|
||||
## `eas build:run`
|
||||
|
||||
@@ -533,7 +539,7 @@ DESCRIPTION
|
||||
run simulator/emulator builds from eas-cli
|
||||
```
|
||||
|
||||
_See code: [src/commands/build/run.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/build/run.ts)_
|
||||
_See code: [src/commands/build/run.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/build/run.ts)_
|
||||
|
||||
## `eas build:submit`
|
||||
|
||||
@@ -542,7 +548,7 @@ submit app binary to App Store and/or Play Store
|
||||
```
|
||||
USAGE
|
||||
$ eas build:submit [-p android|ios|all] [-e <value>] [--latest | --id <value> | --path <value> | --url <value>]
|
||||
[--verbose] [--wait] [--non-interactive]
|
||||
[--verbose] [--wait] [--verbose-fastlane] [--non-interactive]
|
||||
|
||||
FLAGS
|
||||
-e, --profile=<value> Name of the submit profile from eas.json. Defaults to "production" if defined in
|
||||
@@ -554,6 +560,7 @@ FLAGS
|
||||
--path=<value> Path to the .apk/.aab/.ipa file
|
||||
--url=<value> App archive url
|
||||
--verbose Always print logs from EAS Submit
|
||||
--verbose-fastlane Enable verbose logging for the submission process
|
||||
--[no-]wait Wait for submission to complete
|
||||
|
||||
DESCRIPTION
|
||||
@@ -582,7 +589,7 @@ DESCRIPTION
|
||||
get the latest version from EAS servers
|
||||
```
|
||||
|
||||
_See code: [src/commands/build/version/get.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/build/version/get.ts)_
|
||||
_See code: [src/commands/build/version/get.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/build/version/get.ts)_
|
||||
|
||||
## `eas build:version:set`
|
||||
|
||||
@@ -601,7 +608,7 @@ DESCRIPTION
|
||||
update version of an app
|
||||
```
|
||||
|
||||
_See code: [src/commands/build/version/set.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/build/version/set.ts)_
|
||||
_See code: [src/commands/build/version/set.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/build/version/set.ts)_
|
||||
|
||||
## `eas build:version:sync`
|
||||
|
||||
@@ -620,7 +627,7 @@ DESCRIPTION
|
||||
update a version in native code with a value stored on EAS servers
|
||||
```
|
||||
|
||||
_See code: [src/commands/build/version/sync.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/build/version/sync.ts)_
|
||||
_See code: [src/commands/build/version/sync.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/build/version/sync.ts)_
|
||||
|
||||
## `eas build:view [BUILD_ID]`
|
||||
|
||||
@@ -637,7 +644,7 @@ DESCRIPTION
|
||||
view a build for your project
|
||||
```
|
||||
|
||||
_See code: [src/commands/build/view.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/build/view.ts)_
|
||||
_See code: [src/commands/build/view.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/build/view.ts)_
|
||||
|
||||
## `eas channel:create [NAME]`
|
||||
|
||||
@@ -658,7 +665,7 @@ DESCRIPTION
|
||||
create a channel
|
||||
```
|
||||
|
||||
_See code: [src/commands/channel/create.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/channel/create.ts)_
|
||||
_See code: [src/commands/channel/create.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/channel/create.ts)_
|
||||
|
||||
## `eas channel:edit [NAME]`
|
||||
|
||||
@@ -680,7 +687,7 @@ DESCRIPTION
|
||||
point a channel at a new branch
|
||||
```
|
||||
|
||||
_See code: [src/commands/channel/edit.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/channel/edit.ts)_
|
||||
_See code: [src/commands/channel/edit.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/channel/edit.ts)_
|
||||
|
||||
## `eas channel:list`
|
||||
|
||||
@@ -700,7 +707,7 @@ DESCRIPTION
|
||||
list all channels
|
||||
```
|
||||
|
||||
_See code: [src/commands/channel/list.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/channel/list.ts)_
|
||||
_See code: [src/commands/channel/list.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/channel/list.ts)_
|
||||
|
||||
## `eas channel:rollout [CHANNEL]`
|
||||
|
||||
@@ -732,7 +739,7 @@ DESCRIPTION
|
||||
Roll a new branch out on a channel incrementally.
|
||||
```
|
||||
|
||||
_See code: [src/commands/channel/rollout.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/channel/rollout.ts)_
|
||||
_See code: [src/commands/channel/rollout.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/channel/rollout.ts)_
|
||||
|
||||
## `eas channel:view [NAME]`
|
||||
|
||||
@@ -755,7 +762,7 @@ DESCRIPTION
|
||||
view a channel
|
||||
```
|
||||
|
||||
_See code: [src/commands/channel/view.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/channel/view.ts)_
|
||||
_See code: [src/commands/channel/view.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/channel/view.ts)_
|
||||
|
||||
## `eas config`
|
||||
|
||||
@@ -776,7 +783,7 @@ DESCRIPTION
|
||||
display project configuration (app.json + eas.json)
|
||||
```
|
||||
|
||||
_See code: [src/commands/config.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/config.ts)_
|
||||
_See code: [src/commands/config.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/config.ts)_
|
||||
|
||||
## `eas credentials`
|
||||
|
||||
@@ -793,7 +800,25 @@ DESCRIPTION
|
||||
manage credentials
|
||||
```
|
||||
|
||||
_See code: [src/commands/credentials.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/credentials.ts)_
|
||||
_See code: [src/commands/credentials/index.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/credentials/index.ts)_
|
||||
|
||||
## `eas credentials:configure-build`
|
||||
|
||||
Set up credentials for building your project.
|
||||
|
||||
```
|
||||
USAGE
|
||||
$ eas credentials:configure-build [-p android|ios] [-e <value>]
|
||||
|
||||
FLAGS
|
||||
-e, --profile=PROFILE_NAME The name of the build profile in eas.json.
|
||||
-p, --platform=(android|ios)
|
||||
|
||||
DESCRIPTION
|
||||
Set up credentials for building your project.
|
||||
```
|
||||
|
||||
_See code: [src/commands/credentials/configure-build.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/credentials/configure-build.ts)_
|
||||
|
||||
## `eas device:create`
|
||||
|
||||
@@ -807,7 +832,7 @@ DESCRIPTION
|
||||
register new Apple Devices to use for internal distribution
|
||||
```
|
||||
|
||||
_See code: [src/commands/device/create.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/device/create.ts)_
|
||||
_See code: [src/commands/device/create.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/device/create.ts)_
|
||||
|
||||
## `eas device:delete`
|
||||
|
||||
@@ -827,7 +852,7 @@ DESCRIPTION
|
||||
remove a registered device from your account
|
||||
```
|
||||
|
||||
_See code: [src/commands/device/delete.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/device/delete.ts)_
|
||||
_See code: [src/commands/device/delete.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/device/delete.ts)_
|
||||
|
||||
## `eas device:list`
|
||||
|
||||
@@ -848,7 +873,7 @@ DESCRIPTION
|
||||
list all registered devices for your account
|
||||
```
|
||||
|
||||
_See code: [src/commands/device/list.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/device/list.ts)_
|
||||
_See code: [src/commands/device/list.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/device/list.ts)_
|
||||
|
||||
## `eas device:rename`
|
||||
|
||||
@@ -869,7 +894,7 @@ DESCRIPTION
|
||||
rename a registered device
|
||||
```
|
||||
|
||||
_See code: [src/commands/device/rename.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/device/rename.ts)_
|
||||
_See code: [src/commands/device/rename.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/device/rename.ts)_
|
||||
|
||||
## `eas device:view [UDID]`
|
||||
|
||||
@@ -883,7 +908,7 @@ DESCRIPTION
|
||||
view a device for your project
|
||||
```
|
||||
|
||||
_See code: [src/commands/device/view.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/device/view.ts)_
|
||||
_See code: [src/commands/device/view.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/device/view.ts)_
|
||||
|
||||
## `eas diagnostics`
|
||||
|
||||
@@ -897,7 +922,7 @@ DESCRIPTION
|
||||
display environment info
|
||||
```
|
||||
|
||||
_See code: [src/commands/diagnostics.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/diagnostics.ts)_
|
||||
_See code: [src/commands/diagnostics.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/diagnostics.ts)_
|
||||
|
||||
## `eas help [COMMAND]`
|
||||
|
||||
@@ -985,7 +1010,7 @@ DESCRIPTION
|
||||
validate the local store configuration
|
||||
```
|
||||
|
||||
_See code: [src/commands/metadata/lint.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/metadata/lint.ts)_
|
||||
_See code: [src/commands/metadata/lint.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/metadata/lint.ts)_
|
||||
|
||||
## `eas metadata:pull`
|
||||
|
||||
@@ -1002,7 +1027,7 @@ DESCRIPTION
|
||||
generate the local store configuration from the app stores
|
||||
```
|
||||
|
||||
_See code: [src/commands/metadata/pull.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/metadata/pull.ts)_
|
||||
_See code: [src/commands/metadata/pull.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/metadata/pull.ts)_
|
||||
|
||||
## `eas metadata:push`
|
||||
|
||||
@@ -1019,7 +1044,7 @@ DESCRIPTION
|
||||
sync the local store configuration to the app stores
|
||||
```
|
||||
|
||||
_See code: [src/commands/metadata/push.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/metadata/push.ts)_
|
||||
_See code: [src/commands/metadata/push.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/metadata/push.ts)_
|
||||
|
||||
## `eas open`
|
||||
|
||||
@@ -1033,7 +1058,7 @@ DESCRIPTION
|
||||
open the project page in a web browser
|
||||
```
|
||||
|
||||
_See code: [src/commands/open.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/open.ts)_
|
||||
_See code: [src/commands/open.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/open.ts)_
|
||||
|
||||
## `eas project:info`
|
||||
|
||||
@@ -1047,7 +1072,7 @@ DESCRIPTION
|
||||
information about the current project
|
||||
```
|
||||
|
||||
_See code: [src/commands/project/info.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/project/info.ts)_
|
||||
_See code: [src/commands/project/info.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/project/info.ts)_
|
||||
|
||||
## `eas project:init`
|
||||
|
||||
@@ -1069,7 +1094,7 @@ ALIASES
|
||||
$ eas init
|
||||
```
|
||||
|
||||
_See code: [src/commands/project/init.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/project/init.ts)_
|
||||
_See code: [src/commands/project/init.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/project/init.ts)_
|
||||
|
||||
## `eas secret:create`
|
||||
|
||||
@@ -1092,7 +1117,7 @@ DESCRIPTION
|
||||
create an environment secret on the current project or owner account
|
||||
```
|
||||
|
||||
_See code: [src/commands/secret/create.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/secret/create.ts)_
|
||||
_See code: [src/commands/secret/create.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/secret/create.ts)_
|
||||
|
||||
## `eas secret:delete`
|
||||
|
||||
@@ -1110,7 +1135,7 @@ DESCRIPTION
|
||||
delete an environment secret by ID
|
||||
```
|
||||
|
||||
_See code: [src/commands/secret/delete.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/secret/delete.ts)_
|
||||
_See code: [src/commands/secret/delete.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/secret/delete.ts)_
|
||||
|
||||
## `eas secret:list`
|
||||
|
||||
@@ -1124,7 +1149,7 @@ DESCRIPTION
|
||||
list environment secrets available for your current app
|
||||
```
|
||||
|
||||
_See code: [src/commands/secret/list.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/secret/list.ts)_
|
||||
_See code: [src/commands/secret/list.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/secret/list.ts)_
|
||||
|
||||
## `eas secret:push`
|
||||
|
||||
@@ -1144,7 +1169,7 @@ DESCRIPTION
|
||||
read environment secrets from env file and store on the server
|
||||
```
|
||||
|
||||
_See code: [src/commands/secret/push.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/secret/push.ts)_
|
||||
_See code: [src/commands/secret/push.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/secret/push.ts)_
|
||||
|
||||
## `eas submit`
|
||||
|
||||
@@ -1153,7 +1178,7 @@ submit app binary to App Store and/or Play Store
|
||||
```
|
||||
USAGE
|
||||
$ eas submit [-p android|ios|all] [-e <value>] [--latest | --id <value> | --path <value> | --url <value>]
|
||||
[--verbose] [--wait] [--non-interactive]
|
||||
[--verbose] [--wait] [--verbose-fastlane] [--non-interactive]
|
||||
|
||||
FLAGS
|
||||
-e, --profile=<value> Name of the submit profile from eas.json. Defaults to "production" if defined in
|
||||
@@ -1165,6 +1190,7 @@ FLAGS
|
||||
--path=<value> Path to the .apk/.aab/.ipa file
|
||||
--url=<value> App archive url
|
||||
--verbose Always print logs from EAS Submit
|
||||
--verbose-fastlane Enable verbose logging for the submission process
|
||||
--[no-]wait Wait for submission to complete
|
||||
|
||||
DESCRIPTION
|
||||
@@ -1174,7 +1200,7 @@ ALIASES
|
||||
$ eas build:submit
|
||||
```
|
||||
|
||||
_See code: [src/commands/submit.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/submit.ts)_
|
||||
_See code: [src/commands/submit.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/submit.ts)_
|
||||
|
||||
## `eas update`
|
||||
|
||||
@@ -1207,7 +1233,7 @@ DESCRIPTION
|
||||
publish an update group
|
||||
```
|
||||
|
||||
_See code: [src/commands/update/index.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/update/index.ts)_
|
||||
_See code: [src/commands/update/index.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/update/index.ts)_
|
||||
|
||||
## `eas update:configure`
|
||||
|
||||
@@ -1225,7 +1251,7 @@ DESCRIPTION
|
||||
configure the project to support EAS Update
|
||||
```
|
||||
|
||||
_See code: [src/commands/update/configure.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/update/configure.ts)_
|
||||
_See code: [src/commands/update/configure.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/update/configure.ts)_
|
||||
|
||||
## `eas update:delete GROUPID`
|
||||
|
||||
@@ -1246,7 +1272,7 @@ DESCRIPTION
|
||||
delete all the updates in an update group
|
||||
```
|
||||
|
||||
_See code: [src/commands/update/delete.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/update/delete.ts)_
|
||||
_See code: [src/commands/update/delete.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/update/delete.ts)_
|
||||
|
||||
## `eas update:list`
|
||||
|
||||
@@ -1268,7 +1294,7 @@ DESCRIPTION
|
||||
view the recent updates
|
||||
```
|
||||
|
||||
_See code: [src/commands/update/list.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/update/list.ts)_
|
||||
_See code: [src/commands/update/list.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/update/list.ts)_
|
||||
|
||||
## `eas update:republish`
|
||||
|
||||
@@ -1295,7 +1321,7 @@ DESCRIPTION
|
||||
roll back to an existing update
|
||||
```
|
||||
|
||||
_See code: [src/commands/update/republish.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/update/republish.ts)_
|
||||
_See code: [src/commands/update/republish.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/update/republish.ts)_
|
||||
|
||||
## `eas update:roll-back-to-embedded`
|
||||
|
||||
@@ -1322,7 +1348,7 @@ DESCRIPTION
|
||||
roll back to the embedded update
|
||||
```
|
||||
|
||||
_See code: [src/commands/update/roll-back-to-embedded.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/update/roll-back-to-embedded.ts)_
|
||||
_See code: [src/commands/update/roll-back-to-embedded.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/update/roll-back-to-embedded.ts)_
|
||||
|
||||
## `eas update:rollback`
|
||||
|
||||
@@ -1341,7 +1367,7 @@ DESCRIPTION
|
||||
roll back to an embedded update or an existing update
|
||||
```
|
||||
|
||||
_See code: [src/commands/update/rollback.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/update/rollback.ts)_
|
||||
_See code: [src/commands/update/rollback.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/update/rollback.ts)_
|
||||
|
||||
## `eas update:view GROUPID`
|
||||
|
||||
@@ -1361,7 +1387,7 @@ DESCRIPTION
|
||||
update group details
|
||||
```
|
||||
|
||||
_See code: [src/commands/update/view.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/update/view.ts)_
|
||||
_See code: [src/commands/update/view.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/update/view.ts)_
|
||||
|
||||
## `eas webhook:create`
|
||||
|
||||
@@ -1382,7 +1408,7 @@ DESCRIPTION
|
||||
create a webhook
|
||||
```
|
||||
|
||||
_See code: [src/commands/webhook/create.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/webhook/create.ts)_
|
||||
_See code: [src/commands/webhook/create.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/webhook/create.ts)_
|
||||
|
||||
## `eas webhook:delete [ID]`
|
||||
|
||||
@@ -1402,7 +1428,7 @@ DESCRIPTION
|
||||
delete a webhook
|
||||
```
|
||||
|
||||
_See code: [src/commands/webhook/delete.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/webhook/delete.ts)_
|
||||
_See code: [src/commands/webhook/delete.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/webhook/delete.ts)_
|
||||
|
||||
## `eas webhook:list`
|
||||
|
||||
@@ -1420,7 +1446,7 @@ DESCRIPTION
|
||||
list webhooks
|
||||
```
|
||||
|
||||
_See code: [src/commands/webhook/list.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/webhook/list.ts)_
|
||||
_See code: [src/commands/webhook/list.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/webhook/list.ts)_
|
||||
|
||||
## `eas webhook:update`
|
||||
|
||||
@@ -1442,7 +1468,7 @@ DESCRIPTION
|
||||
update a webhook
|
||||
```
|
||||
|
||||
_See code: [src/commands/webhook/update.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/webhook/update.ts)_
|
||||
_See code: [src/commands/webhook/update.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/webhook/update.ts)_
|
||||
|
||||
## `eas webhook:view ID`
|
||||
|
||||
@@ -1459,7 +1485,7 @@ DESCRIPTION
|
||||
view a webhook
|
||||
```
|
||||
|
||||
_See code: [src/commands/webhook/view.ts](https://github.com/expo/eas-cli/blob/v7.2.0/src/commands/webhook/view.ts)_
|
||||
_See code: [src/commands/webhook/view.ts](https://github.com/expo/eas-cli/blob/v7.8.0/src/commands/webhook/view.ts)_
|
||||
|
||||
## `eas whoami`
|
||||
|
||||
|
||||
Generated
+2221
-129
File diff suppressed because it is too large.
Load diff
@@ -1,21 +1,22 @@
|
||||
{
|
||||
"name": "eas-cli",
|
||||
"description": "EAS command line tool",
|
||||
"version": "7.2.0",
|
||||
"version": "7.8.0",
|
||||
"author": "Expo <[email protected]>",
|
||||
"bin": {
|
||||
"eas": "./bin/run"
|
||||
},
|
||||
"bugs": "https://github.com/expo/eas-cli/issues",
|
||||
"dependencies": {
|
||||
"@expo/apple-utils": "1.4.0",
|
||||
"@expo/apple-utils": "1.7.0",
|
||||
"@expo/code-signing-certificates": "0.0.5",
|
||||
"@expo/config": "8.5.4",
|
||||
"@expo/config-plugins": "7.8.4",
|
||||
"@expo/config-types": "50.0.0",
|
||||
"@expo/eas-build-job": "1.0.61",
|
||||
"@expo/eas-json": "7.1.3",
|
||||
"@expo/eas-build-job": "1.0.95",
|
||||
"@expo/eas-json": "7.8.0",
|
||||
"@expo/json-file": "8.2.37",
|
||||
"@expo/logger": "1.0.57",
|
||||
"@expo/multipart-body-parser": "1.1.0",
|
||||
"@expo/osascript": "2.0.33",
|
||||
"@expo/package-manager": "1.1.2",
|
||||
@@ -27,7 +28,7 @@
|
||||
"@expo/results": "1.0.0",
|
||||
"@expo/rudder-sdk-node": "1.1.1",
|
||||
"@expo/spawn-async": "1.7.0",
|
||||
"@expo/steps": "1.0.67",
|
||||
"@expo/steps": "1.0.92",
|
||||
"@expo/timeago.js": "1.0.0",
|
||||
"@oclif/core": "^1.26.2",
|
||||
"@oclif/plugin-autocomplete": "^2.3.10",
|
||||
@@ -109,7 +110,7 @@
|
||||
"@types/wrap-ansi": "3.0.0",
|
||||
"axios": "0.27.2",
|
||||
"eslint-plugin-graphql": "4.0.0",
|
||||
"express": "4.18.2",
|
||||
"express": "4.19.2",
|
||||
"memfs": "3.4.13",
|
||||
"mockdate": "3.0.5",
|
||||
"nock": "13.4.0",
|
||||
|
||||
@@ -8,7 +8,7 @@ import os from 'os';
|
||||
import path from 'path';
|
||||
|
||||
import { getAppBuildGradleAsync, resolveConfigValue } from '../../../project/android/gradleUtils';
|
||||
import { getVcsClient } from '../../../vcs';
|
||||
import { resolveVcsClient } from '../../../vcs';
|
||||
import {
|
||||
BumpStrategy,
|
||||
bumpVersionAsync,
|
||||
@@ -19,7 +19,7 @@ import {
|
||||
const fsReal = jest.requireActual('fs').promises as typeof fs;
|
||||
jest.mock('fs');
|
||||
|
||||
const vcsClient = getVcsClient();
|
||||
const vcsClient = resolveVcsClient();
|
||||
|
||||
afterAll(async () => {
|
||||
// do not remove the following line
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Android, Job, Metadata, Platform, Workflow } from '@expo/eas-build-job';
|
||||
import { Android, Metadata, Platform, Workflow } from '@expo/eas-build-job';
|
||||
import { AppVersionSource } from '@expo/eas-json';
|
||||
import chalk from 'chalk';
|
||||
import nullthrows from 'nullthrows';
|
||||
@@ -112,7 +112,7 @@ export async function prepareAndroidBuildAsync(
|
||||
prepareJobAsync: async (
|
||||
ctx: BuildContext<Platform.ANDROID>,
|
||||
jobData: JobData<AndroidCredentials>
|
||||
): Promise<Job> => {
|
||||
): Promise<Android.Job> => {
|
||||
return await prepareJobAsync(ctx, jobData);
|
||||
},
|
||||
sendBuildRequestAsync: async (
|
||||
|
||||
@@ -2,6 +2,7 @@ import { Android } from '@expo/eas-build-job';
|
||||
|
||||
import { AndroidBuildType, AndroidJobInput } from '../../graphql/generated';
|
||||
import {
|
||||
loggerLevelToGraphQLWorkerLoggerLevel,
|
||||
transformBuildMode,
|
||||
transformBuildTrigger,
|
||||
transformProjectArchive,
|
||||
@@ -29,6 +30,9 @@ export function transformJob(job: Android.Job): AndroidJobInput {
|
||||
experimental: job.experimental,
|
||||
mode: transformBuildMode(job.mode),
|
||||
customBuildConfig: job.customBuildConfig,
|
||||
loggerLevel: job.loggerLevel
|
||||
? loggerLevelToGraphQLWorkerLoggerLevel[job.loggerLevel]
|
||||
: undefined,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -3,16 +3,15 @@ import {
|
||||
ArchiveSource,
|
||||
BuildMode,
|
||||
BuildTrigger,
|
||||
Job,
|
||||
Platform,
|
||||
sanitizeJob,
|
||||
sanitizeBuildJob,
|
||||
} from '@expo/eas-build-job';
|
||||
import { BuildProfile } from '@expo/eas-json';
|
||||
import path from 'path';
|
||||
import slash from 'slash';
|
||||
|
||||
import { AndroidCredentials } from '../../credentials/android/AndroidCredentialsProvider';
|
||||
import { getCustomBuildConfigPath } from '../../project/customBuildConfig';
|
||||
import { getCustomBuildConfigPathForJob } from '../../project/customBuildConfig';
|
||||
import { getUsername } from '../../project/projectUtils';
|
||||
import { BuildContext } from '../context';
|
||||
|
||||
@@ -29,7 +28,7 @@ const cacheDefaults = {
|
||||
export async function prepareJobAsync(
|
||||
ctx: BuildContext<Platform.ANDROID>,
|
||||
jobData: JobData
|
||||
): Promise<Job> {
|
||||
): Promise<Android.Job> {
|
||||
const username = getUsername(ctx.exp, ctx.user);
|
||||
const buildProfile: BuildProfile<Platform.ANDROID> = ctx.buildProfile;
|
||||
const projectRootDirectory =
|
||||
@@ -54,7 +53,7 @@ export async function prepareJobAsync(
|
||||
}
|
||||
|
||||
const maybeCustomBuildConfigPath = buildProfile.config
|
||||
? getCustomBuildConfigPath(buildProfile.config)
|
||||
? getCustomBuildConfigPathForJob(buildProfile.config)
|
||||
: undefined;
|
||||
|
||||
const job: Android.Job = {
|
||||
@@ -103,7 +102,8 @@ export async function prepareJobAsync(
|
||||
path: maybeCustomBuildConfigPath,
|
||||
},
|
||||
}),
|
||||
loggerLevel: ctx.loggerLevel,
|
||||
};
|
||||
|
||||
return sanitizeJob(job);
|
||||
return sanitizeBuildJob(job) as Android.Job;
|
||||
}
|
||||
@@ -1,4 +1,10 @@
|
||||
import { ArchiveSource, ArchiveSourceType, Job, Metadata, Platform } from '@expo/eas-build-job';
|
||||
import {
|
||||
ArchiveSource,
|
||||
ArchiveSourceType,
|
||||
BuildJob,
|
||||
Metadata,
|
||||
Platform,
|
||||
} from '@expo/eas-build-job';
|
||||
import { CredentialsSource } from '@expo/eas-json';
|
||||
import assert from 'assert';
|
||||
import chalk from 'chalk';
|
||||
@@ -26,7 +32,12 @@ import { transformMetadata } from './graphql';
|
||||
import { LocalBuildMode, runLocalBuildAsync } from './local';
|
||||
import { collectMetadataAsync } from './metadata';
|
||||
import { printDeprecationWarnings } from './utils/printBuildInfo';
|
||||
import { makeProjectTarballAsync, reviewAndCommitChangesAsync } from './utils/repository';
|
||||
import {
|
||||
LocalFile,
|
||||
makeProjectMetadataFileAsync,
|
||||
makeProjectTarballAsync,
|
||||
reviewAndCommitChangesAsync,
|
||||
} from './utils/repository';
|
||||
import { BuildEvent } from '../analytics/AnalyticsManager';
|
||||
import { withAnalyticsAsync } from '../analytics/common';
|
||||
import { getExpoWebsiteBaseUrl } from '../api';
|
||||
@@ -65,14 +76,14 @@ export interface JobData<Credentials> {
|
||||
projectArchive: ArchiveSource;
|
||||
}
|
||||
|
||||
interface Builder<TPlatform extends Platform, Credentials, TJob extends Job> {
|
||||
interface Builder<TPlatform extends Platform, Credentials, TJob extends BuildJob> {
|
||||
ctx: BuildContext<TPlatform>;
|
||||
|
||||
ensureCredentialsAsync(
|
||||
ctx: BuildContext<TPlatform>
|
||||
): Promise<CredentialsResult<Credentials> | undefined>;
|
||||
syncProjectConfigurationAsync(ctx: BuildContext<TPlatform>): Promise<void>;
|
||||
prepareJobAsync(ctx: BuildContext<TPlatform>, jobData: JobData<Credentials>): Promise<Job>;
|
||||
prepareJobAsync(ctx: BuildContext<TPlatform>, jobData: JobData<Credentials>): Promise<BuildJob>;
|
||||
sendBuildRequestAsync(
|
||||
appId: string,
|
||||
job: TJob,
|
||||
@@ -97,7 +108,7 @@ function resolveBuildParamsInput<T extends Platform>(
|
||||
export async function prepareBuildRequestForPlatformAsync<
|
||||
TPlatform extends Platform,
|
||||
Credentials,
|
||||
TJob extends Job,
|
||||
TJob extends BuildJob,
|
||||
>(builder: Builder<TPlatform, Credentials, TJob>): Promise<BuildRequestSender> {
|
||||
const { ctx } = builder;
|
||||
const credentialsResult = await withAnalyticsAsync(
|
||||
@@ -133,9 +144,10 @@ export async function prepareBuildRequestForPlatformAsync<
|
||||
|
||||
let projectArchive: ArchiveSource | undefined;
|
||||
if (ctx.localBuildOptions.localBuildMode === LocalBuildMode.LOCAL_BUILD_PLUGIN) {
|
||||
const projectPath = (await makeProjectTarballAsync(ctx.vcsClient)).path;
|
||||
projectArchive = {
|
||||
type: ArchiveSourceType.PATH,
|
||||
path: (await makeProjectTarballAsync(ctx.vcsClient)).path,
|
||||
path: projectPath,
|
||||
};
|
||||
} else if (ctx.localBuildOptions.localBuildMode === LocalBuildMode.INTERNAL) {
|
||||
projectArchive = {
|
||||
@@ -145,7 +157,7 @@ export async function prepareBuildRequestForPlatformAsync<
|
||||
} else if (!ctx.localBuildOptions.localBuildMode) {
|
||||
projectArchive = {
|
||||
type: ArchiveSourceType.GCS,
|
||||
bucketKey: await uploadProjectAsync(ctx),
|
||||
...(await uploadProjectAsync(ctx)),
|
||||
};
|
||||
}
|
||||
assert(projectArchive);
|
||||
@@ -231,7 +243,10 @@ export function handleBuildRequestError(error: any, platform: Platform): never {
|
||||
|
||||
async function uploadProjectAsync<TPlatform extends Platform>(
|
||||
ctx: BuildContext<TPlatform>
|
||||
): Promise<string> {
|
||||
): Promise<{
|
||||
bucketKey: string;
|
||||
metadataLocation?: string;
|
||||
}> {
|
||||
let projectTarballPath;
|
||||
try {
|
||||
return await withAnalyticsAsync(
|
||||
@@ -260,7 +275,6 @@ async function uploadProjectAsync<TPlatform extends Platform>(
|
||||
}
|
||||
|
||||
projectTarballPath = projectTarball.path;
|
||||
|
||||
const bucketKey = await uploadFileAtPathToGCSAsync(
|
||||
ctx.graphqlClient,
|
||||
UploadSessionType.EasBuildGcsProjectSources,
|
||||
@@ -274,7 +288,11 @@ async function uploadProjectAsync<TPlatform extends Platform>(
|
||||
completedMessage: (duration: string) => `Uploaded to EAS ${chalk.dim(duration)}`,
|
||||
})
|
||||
);
|
||||
return bucketKey;
|
||||
const { metadataLocation } = await uploadMetadataFileAsync<TPlatform>(projectTarball, ctx);
|
||||
if (metadataLocation) {
|
||||
return { bucketKey, metadataLocation };
|
||||
}
|
||||
return { bucketKey };
|
||||
},
|
||||
{
|
||||
attemptEvent: BuildEvent.PROJECT_UPLOAD_ATTEMPT,
|
||||
@@ -285,9 +303,11 @@ async function uploadProjectAsync<TPlatform extends Platform>(
|
||||
);
|
||||
} catch (err: any) {
|
||||
let errMessage = 'Failed to upload the project tarball to EAS Build';
|
||||
|
||||
if (err.message) {
|
||||
errMessage += `\n\nReason: ${err.message}`;
|
||||
}
|
||||
|
||||
throw new EasBuildProjectArchiveUploadError(errMessage);
|
||||
} finally {
|
||||
if (projectTarballPath) {
|
||||
@@ -296,7 +316,49 @@ async function uploadProjectAsync<TPlatform extends Platform>(
|
||||
}
|
||||
}
|
||||
|
||||
async function sendBuildRequestAsync<TPlatform extends Platform, Credentials, TJob extends Job>(
|
||||
async function uploadMetadataFileAsync<TPlatform extends Platform>(
|
||||
projectTarball: LocalFile,
|
||||
ctx: BuildContext<TPlatform>
|
||||
): Promise<{ metadataLocation: string | null }> {
|
||||
let projectMetadataFile: LocalFile | null = null;
|
||||
try {
|
||||
projectMetadataFile = await makeProjectMetadataFileAsync(projectTarball.path);
|
||||
|
||||
const metadataLocation = await uploadFileAtPathToGCSAsync(
|
||||
ctx.graphqlClient,
|
||||
UploadSessionType.EasBuildGcsProjectMetadata,
|
||||
projectMetadataFile.path,
|
||||
createProgressTracker({
|
||||
total: projectMetadataFile.size,
|
||||
message: ratio =>
|
||||
`Uploading metadata to EAS Build (${formatBytes(
|
||||
projectMetadataFile!.size * ratio
|
||||
)} / ${formatBytes(projectMetadataFile!.size)})`,
|
||||
completedMessage: (duration: string) => `Uploaded to EAS ${chalk.dim(duration)}`,
|
||||
})
|
||||
);
|
||||
return { metadataLocation };
|
||||
} catch (err: any) {
|
||||
let errMessage = 'Failed to upload metadata to EAS Build';
|
||||
|
||||
if (err.message) {
|
||||
errMessage += `\n\nReason: ${err.message}`;
|
||||
}
|
||||
|
||||
Log.warn(errMessage);
|
||||
return { metadataLocation: null };
|
||||
} finally {
|
||||
if (projectMetadataFile) {
|
||||
await fs.remove(projectMetadataFile.path);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async function sendBuildRequestAsync<
|
||||
TPlatform extends Platform,
|
||||
Credentials,
|
||||
TJob extends BuildJob,
|
||||
>(
|
||||
builder: Builder<TPlatform, Credentials, TJob>,
|
||||
job: TJob,
|
||||
metadata: Metadata,
|
||||
|
||||
@@ -40,7 +40,7 @@ async function configureAsync({
|
||||
nonInteractive,
|
||||
vcsClient,
|
||||
}: ConfigureParams): Promise<void> {
|
||||
await maybeBailOnRepoStatusAsync(vcsClient);
|
||||
await maybeBailOnRepoStatusAsync(vcsClient, nonInteractive);
|
||||
|
||||
await createEasJsonAsync(projectDir, vcsClient);
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { ExpoConfig } from '@expo/config';
|
||||
import { Platform, Workflow } from '@expo/eas-build-job';
|
||||
import { BuildProfile, EasJson } from '@expo/eas-json';
|
||||
import { LoggerLevel } from '@expo/logger';
|
||||
import { NodePackageManager } from '@expo/package-manager';
|
||||
|
||||
import { LocalBuildOptions } from './local';
|
||||
@@ -60,4 +61,5 @@ export interface BuildContext<T extends Platform> {
|
||||
developmentClient: boolean;
|
||||
requiredPackageManager: NodePackageManager['name'] | null;
|
||||
vcsClient: Client;
|
||||
loggerLevel?: LoggerLevel;
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
import { Platform } from '@expo/eas-build-job';
|
||||
import { BuildProfile, EasJson, ResourceClass } from '@expo/eas-json';
|
||||
import JsonFile from '@expo/json-file';
|
||||
import { LoggerLevel } from '@expo/logger';
|
||||
import { resolvePackageManager } from '@expo/package-manager';
|
||||
import getenv from 'getenv';
|
||||
import resolveFrom from 'resolve-from';
|
||||
@@ -39,6 +40,7 @@ export async function createBuildContextAsync<T extends Platform>({
|
||||
vcsClient,
|
||||
getDynamicPrivateProjectConfigAsync,
|
||||
customBuildConfigMetadata,
|
||||
buildLoggerLevel,
|
||||
}: {
|
||||
buildProfileName: string;
|
||||
buildProfile: BuildProfile<T>;
|
||||
@@ -57,6 +59,7 @@ export async function createBuildContextAsync<T extends Platform>({
|
||||
vcsClient: Client;
|
||||
getDynamicPrivateProjectConfigAsync: DynamicConfigContextFn;
|
||||
customBuildConfigMetadata?: CustomBuildConfigMetadata;
|
||||
buildLoggerLevel?: LoggerLevel;
|
||||
}): Promise<BuildContext<T>> {
|
||||
const { exp, projectId } = await getDynamicPrivateProjectConfigAsync({ env: buildProfile.env });
|
||||
const projectName = exp.slug;
|
||||
@@ -136,6 +139,7 @@ export async function createBuildContextAsync<T extends Platform>({
|
||||
customBuildConfigMetadata,
|
||||
developmentClient,
|
||||
requiredPackageManager,
|
||||
loggerLevel: buildLoggerLevel,
|
||||
};
|
||||
if (platform === Platform.ANDROID) {
|
||||
const common = commonContext as CommonContext<Platform.ANDROID>;
|
||||
|
||||
@@ -6,6 +6,7 @@ import {
|
||||
Metadata,
|
||||
Workflow,
|
||||
} from '@expo/eas-build-job';
|
||||
import { LoggerLevel } from '@expo/logger';
|
||||
import assert from 'assert';
|
||||
|
||||
import {
|
||||
@@ -18,6 +19,7 @@ import {
|
||||
BuildTrigger as GraphQLBuildTrigger,
|
||||
ProjectArchiveSourceInput,
|
||||
ProjectArchiveSourceType,
|
||||
WorkerLoggerLevel,
|
||||
} from '../graphql/generated';
|
||||
|
||||
export function transformProjectArchive(archiveSource: ArchiveSource): ProjectArchiveSourceInput {
|
||||
@@ -25,6 +27,7 @@ export function transformProjectArchive(archiveSource: ArchiveSource): ProjectAr
|
||||
return {
|
||||
type: ProjectArchiveSourceType.Gcs,
|
||||
bucketKey: archiveSource.bucketKey,
|
||||
metadataLocation: archiveSource.metadataLocation,
|
||||
};
|
||||
} else if (archiveSource.type === ArchiveSourceType.URL) {
|
||||
return {
|
||||
@@ -107,3 +110,12 @@ export function transformBuildTrigger(buildTrigger: BuildTrigger): GraphQLBuildT
|
||||
}
|
||||
throw new Error('Unknown build trigger');
|
||||
}
|
||||
|
||||
export const loggerLevelToGraphQLWorkerLoggerLevel: Record<LoggerLevel, WorkerLoggerLevel> = {
|
||||
[LoggerLevel.TRACE]: WorkerLoggerLevel.Trace,
|
||||
[LoggerLevel.DEBUG]: WorkerLoggerLevel.Debug,
|
||||
[LoggerLevel.INFO]: WorkerLoggerLevel.Info,
|
||||
[LoggerLevel.WARN]: WorkerLoggerLevel.Warn,
|
||||
[LoggerLevel.ERROR]: WorkerLoggerLevel.Error,
|
||||
[LoggerLevel.FATAL]: WorkerLoggerLevel.Fatal,
|
||||
};
|
||||
@@ -6,7 +6,7 @@ import os from 'os';
|
||||
import type { XCBuildConfiguration } from 'xcode';
|
||||
|
||||
import { readPlistAsync } from '../../../utils/plist';
|
||||
import { getVcsClient } from '../../../vcs';
|
||||
import { resolveVcsClient } from '../../../vcs';
|
||||
import {
|
||||
BumpStrategy,
|
||||
bumpVersionAsync,
|
||||
@@ -19,7 +19,7 @@ import {
|
||||
|
||||
jest.mock('fs');
|
||||
|
||||
const vcsClient = getVcsClient();
|
||||
const vcsClient = resolveVcsClient();
|
||||
|
||||
const getXCBuildConfigurationFromPbxproj = jest.spyOn(
|
||||
IOSConfig.Target,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Ios, Job, Metadata, Platform, Workflow } from '@expo/eas-build-job';
|
||||
import { Ios, Metadata, Platform, Workflow } from '@expo/eas-build-job';
|
||||
import { AppVersionSource } from '@expo/eas-json';
|
||||
|
||||
import { ensureIosCredentialsAsync } from './credentials';
|
||||
@@ -94,7 +94,7 @@ export async function prepareIosBuildAsync(
|
||||
prepareJobAsync: async (
|
||||
ctx: BuildContext<Platform.IOS>,
|
||||
jobData: JobData<IosCredentials>
|
||||
): Promise<Job> => {
|
||||
): Promise<Ios.Job> => {
|
||||
return await prepareJobAsync(ctx, {
|
||||
...jobData,
|
||||
buildScheme: ctx.ios.xcodeBuildContext.buildScheme,
|
||||
|
||||
@@ -3,6 +3,7 @@ import nullthrows from 'nullthrows';
|
||||
|
||||
import { IosJobInput, IosJobSecretsInput } from '../../graphql/generated';
|
||||
import {
|
||||
loggerLevelToGraphQLWorkerLoggerLevel,
|
||||
transformBuildMode,
|
||||
transformBuildTrigger,
|
||||
transformProjectArchive,
|
||||
@@ -31,6 +32,9 @@ export function transformJob(job: Ios.Job): IosJobInput {
|
||||
experimental: job.experimental,
|
||||
mode: transformBuildMode(job.mode),
|
||||
customBuildConfig: job.customBuildConfig,
|
||||
loggerLevel: job.loggerLevel
|
||||
? loggerLevelToGraphQLWorkerLoggerLevel[job.loggerLevel]
|
||||
: undefined,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -3,9 +3,8 @@ import {
|
||||
BuildMode,
|
||||
BuildTrigger,
|
||||
Ios,
|
||||
Job,
|
||||
Platform,
|
||||
sanitizeJob,
|
||||
sanitizeBuildJob,
|
||||
} from '@expo/eas-build-job';
|
||||
import { BuildProfile } from '@expo/eas-json';
|
||||
import nullthrows from 'nullthrows';
|
||||
@@ -14,7 +13,7 @@ import slash from 'slash';
|
||||
|
||||
import { IosCredentials, TargetCredentials } from '../../credentials/ios/types';
|
||||
import { IosJobSecretsInput } from '../../graphql/generated';
|
||||
import { getCustomBuildConfigPath } from '../../project/customBuildConfig';
|
||||
import { getCustomBuildConfigPathForJob } from '../../project/customBuildConfig';
|
||||
import { getUsername } from '../../project/projectUtils';
|
||||
import { BuildContext } from '../context';
|
||||
|
||||
@@ -32,7 +31,7 @@ const cacheDefaults = {
|
||||
export async function prepareJobAsync(
|
||||
ctx: BuildContext<Platform.IOS>,
|
||||
jobData: JobData
|
||||
): Promise<Job> {
|
||||
): Promise<Ios.Job> {
|
||||
const username = getUsername(ctx.exp, ctx.user);
|
||||
const buildProfile: BuildProfile<Platform.IOS> = ctx.buildProfile;
|
||||
const projectRootDirectory =
|
||||
@@ -46,7 +45,7 @@ export async function prepareJobAsync(
|
||||
}
|
||||
|
||||
const maybeCustomBuildConfigPath = buildProfile.config
|
||||
? getCustomBuildConfigPath(buildProfile.config)
|
||||
? getCustomBuildConfigPathForJob(buildProfile.config)
|
||||
: undefined;
|
||||
|
||||
const job: Ios.Job = {
|
||||
@@ -98,8 +97,9 @@ export async function prepareJobAsync(
|
||||
path: maybeCustomBuildConfigPath,
|
||||
},
|
||||
}),
|
||||
loggerLevel: ctx.loggerLevel,
|
||||
};
|
||||
return sanitizeJob(job);
|
||||
return sanitizeBuildJob(job) as Ios.Job;
|
||||
}
|
||||
|
||||
export function prepareCredentialsToResign(credentials: IosCredentials): IosJobSecretsInput {
|
||||
|
||||
@@ -6,7 +6,7 @@ import semver from 'semver';
|
||||
import { ora } from '../ora';
|
||||
|
||||
const PLUGIN_PACKAGE_NAME = 'eas-cli-local-build-plugin';
|
||||
const PLUGIN_PACKAGE_VERSION = '1.0.60';
|
||||
const PLUGIN_PACKAGE_VERSION = '1.0.96';
|
||||
|
||||
export enum LocalBuildMode {
|
||||
/**
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import { Updates } from '@expo/config-plugins';
|
||||
import { Metadata, Platform, sanitizeMetadata } from '@expo/eas-build-job';
|
||||
import { IosEnterpriseProvisioning } from '@expo/eas-json';
|
||||
import fs from 'fs-extra';
|
||||
@@ -15,6 +14,7 @@ import {
|
||||
isClassicUpdatesSupportedAsync,
|
||||
isExpoUpdatesInstalled,
|
||||
} from '../project/projectUtils';
|
||||
import { resolveRuntimeVersionAsync } from '../project/resolveRuntimeVersionAsync';
|
||||
import {
|
||||
readChannelSafelyAsync as readAndroidChannelSafelyAsync,
|
||||
readReleaseChannelSafelyAsync as readAndroidReleaseChannelSafelyAsync,
|
||||
@@ -37,9 +37,7 @@ export async function collectMetadataAsync<T extends Platform>(
|
||||
workflow: ctx.workflow,
|
||||
credentialsSource: ctx.buildProfile.credentialsSource,
|
||||
sdkVersion: ctx.exp.sdkVersion,
|
||||
runtimeVersion:
|
||||
(await Updates.getRuntimeVersionNullableAsync(ctx.projectDir, ctx.exp, ctx.platform)) ??
|
||||
undefined,
|
||||
runtimeVersion: (await resolveRuntimeVersionAsync(ctx)) ?? undefined,
|
||||
reactNativeVersion: await getReactNativeVersionAsync(ctx.projectDir),
|
||||
...channelOrReleaseChannel,
|
||||
distribution,
|
||||
|
||||
@@ -9,6 +9,7 @@ import {
|
||||
ResourceClass,
|
||||
SubmitProfile,
|
||||
} from '@expo/eas-json';
|
||||
import { LoggerLevel } from '@expo/logger';
|
||||
import assert from 'assert';
|
||||
import chalk from 'chalk';
|
||||
import nullthrows from 'nullthrows';
|
||||
@@ -19,7 +20,7 @@ import { ensureProjectConfiguredAsync } from './configure';
|
||||
import { BuildContext } from './context';
|
||||
import { createBuildContextAsync } from './createContext';
|
||||
import { prepareIosBuildAsync } from './ios/build';
|
||||
import { LocalBuildOptions } from './local';
|
||||
import { LocalBuildMode, LocalBuildOptions } from './local';
|
||||
import { ensureExpoDevClientInstalledForDevClientBuildsAsync } from './utils/devClient';
|
||||
import { printBuildResults, printLogsUrls } from './utils/printBuildInfo';
|
||||
import { ensureRepoIsCleanAsync } from './utils/repository';
|
||||
@@ -93,6 +94,7 @@ export interface BuildFlags {
|
||||
localBuildOptions: LocalBuildOptions;
|
||||
resourceClass?: ResourceClass;
|
||||
message?: string;
|
||||
buildLoggerLevel?: LoggerLevel;
|
||||
}
|
||||
|
||||
export async function runBuildAndSubmitAsync(
|
||||
@@ -132,6 +134,36 @@ export async function runBuildAndSubmitAsync(
|
||||
}. ${learnMore('https://docs.expo.dev/build-reference/variables/')}`
|
||||
);
|
||||
|
||||
for (const buildProfile of buildProfiles) {
|
||||
if (buildProfile.profile.image && ['default', 'stable'].includes(buildProfile.profile.image)) {
|
||||
Log.warn(
|
||||
`The "image" field in the build profile "${buildProfile.profileName}" is set to "${buildProfile.profile.image}". This tag is deprecated and will be removed in the future. Use other images or tags listed here: https://docs.expo.dev/build-reference/infrastructure/`
|
||||
);
|
||||
}
|
||||
|
||||
if (
|
||||
buildProfile.profile.image &&
|
||||
[
|
||||
'macos-monterey-12.4-xcode-13.4',
|
||||
'macos-monterey-12.3-xcode-13.3',
|
||||
'macos-monterey-12.1-xcode-13.2',
|
||||
'macos-ventura-13.4-xcode-14.3.1',
|
||||
'macos-ventura-13.3-xcode-14.3',
|
||||
'macos-monterey-12.6-xcode-14.2',
|
||||
'macos-monterey-12.6-xcode-14.1',
|
||||
'macos-monterey-12.6-xcode-14.0',
|
||||
].includes(buildProfile.profile.image)
|
||||
) {
|
||||
Log.warn(
|
||||
`The "image" field in the build profile "${buildProfile.profileName}" is set to "${
|
||||
buildProfile.profile.image
|
||||
}". This image is using Xcode in version lower then 15. Apple's new requirement states that starting on April 29th, 2024, apps uploaded to App Store Connect must be built with Xcode 15 for iOS 17, iPadOS 17, tvOS 17, or watchOS 10. Start using Xcode 15 image today by setting "macos-sonoma-14.4-xcode-15.3" or "latest" as your image value. This image will be removed from EAS Build on May 29th, 2024. ${learnMore(
|
||||
'https://expo.dev/changelog/2024/03-29-eas-build-upcoming-ios-images-updates'
|
||||
)}`
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
await ensureExpoDevClientInstalledForDevClientBuildsAsync({
|
||||
projectDir,
|
||||
nonInteractive: flags.nonInteractive,
|
||||
@@ -180,13 +212,23 @@ export async function runBuildAndSubmitAsync(
|
||||
buildCtxByPlatform[platform] = buildCtx;
|
||||
}
|
||||
|
||||
if (flags.localBuildOptions.localBuildMode) {
|
||||
if (flags.localBuildOptions.localBuildMode === LocalBuildMode.LOCAL_BUILD_PLUGIN) {
|
||||
return;
|
||||
}
|
||||
|
||||
Log.newLine();
|
||||
printLogsUrls(startedBuilds.map(startedBuild => startedBuild.build));
|
||||
Log.newLine();
|
||||
if (flags.localBuildOptions.localBuildMode === LocalBuildMode.INTERNAL) {
|
||||
const startedBuild = await BuildQuery.byIdAsync(
|
||||
graphqlClient,
|
||||
nullthrows(process.env.EAS_BUILD_ID, 'EAS_BUILD_ID is not defined')
|
||||
);
|
||||
startedBuilds.push({ build: startedBuild, buildProfile: buildProfiles[0] });
|
||||
}
|
||||
|
||||
if (!flags.localBuildOptions.localBuildMode) {
|
||||
Log.newLine();
|
||||
printLogsUrls(startedBuilds.map(startedBuild => startedBuild.build));
|
||||
Log.newLine();
|
||||
}
|
||||
|
||||
const submissions: SubmissionFragment[] = [];
|
||||
if (flags.autoSubmit) {
|
||||
@@ -219,9 +261,15 @@ export async function runBuildAndSubmitAsync(
|
||||
submissions.push(submission);
|
||||
}
|
||||
|
||||
Log.newLine();
|
||||
printSubmissionDetailsUrls(submissions);
|
||||
Log.newLine();
|
||||
if (!flags.localBuildOptions.localBuildMode) {
|
||||
Log.newLine();
|
||||
printSubmissionDetailsUrls(submissions);
|
||||
Log.newLine();
|
||||
}
|
||||
}
|
||||
|
||||
if (flags.localBuildOptions.localBuildMode) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!flags.wait) {
|
||||
@@ -314,6 +362,7 @@ async function prepareAndStartBuildAsync({
|
||||
vcsClient,
|
||||
getDynamicPrivateProjectConfigAsync,
|
||||
customBuildConfigMetadata,
|
||||
buildLoggerLevel: flags.buildLoggerLevel,
|
||||
});
|
||||
|
||||
if (moreBuilds) {
|
||||
@@ -421,6 +470,7 @@ async function prepareAndStartSubmissionAsync({
|
||||
projectId: buildCtx.projectId,
|
||||
exp: buildCtx.exp,
|
||||
vcsClient: buildCtx.vcsClient,
|
||||
isVerboseFastlaneEnabled: false,
|
||||
});
|
||||
|
||||
if (moreBuilds) {
|
||||
|
||||
@@ -12,7 +12,10 @@ import { getTmpDirectory } from '../../utils/paths';
|
||||
import { endTimer, formatMilliseconds, startTimer } from '../../utils/timer';
|
||||
import { Client } from '../../vcs/vcs';
|
||||
|
||||
export async function maybeBailOnRepoStatusAsync(vcsClient: Client): Promise<void> {
|
||||
export async function maybeBailOnRepoStatusAsync(
|
||||
vcsClient: Client,
|
||||
nonInteractive: boolean
|
||||
): Promise<void> {
|
||||
if (!(await vcsClient.isCommitRequiredAsync())) {
|
||||
return;
|
||||
}
|
||||
@@ -28,6 +31,11 @@ export async function maybeBailOnRepoStatusAsync(vcsClient: Client): Promise<voi
|
||||
});
|
||||
|
||||
if (!answer) {
|
||||
if (nonInteractive) {
|
||||
Log.log('The following files need to be committed:');
|
||||
await vcsClient.showChangedFilesAsync();
|
||||
}
|
||||
|
||||
throw new Error('Commit all changes. Aborting...');
|
||||
}
|
||||
}
|
||||
@@ -47,6 +55,9 @@ export async function ensureRepoIsCleanAsync(
|
||||
)}.`
|
||||
);
|
||||
if (nonInteractive) {
|
||||
Log.log('The following files need to be committed:');
|
||||
await vcsClient.showChangedFilesAsync();
|
||||
|
||||
throw new Error('Commit all changes. Aborting...');
|
||||
}
|
||||
const answer = await confirmAsync({
|
||||
@@ -83,9 +94,55 @@ export async function commitPromptAsync(
|
||||
});
|
||||
}
|
||||
|
||||
export async function makeProjectTarballAsync(
|
||||
vcsClient: Client
|
||||
): Promise<{ path: string; size: number }> {
|
||||
export type LocalFile = {
|
||||
path: string;
|
||||
size: number;
|
||||
};
|
||||
|
||||
export async function makeProjectMetadataFileAsync(archivePath: string): Promise<LocalFile> {
|
||||
const spinner = ora('Creating project metadata file');
|
||||
const timerLabel = 'makeProjectMetadataFileAsync';
|
||||
const timer = setTimeout(
|
||||
() => {
|
||||
spinner.start();
|
||||
},
|
||||
Log.isDebug ? 1 : 1000
|
||||
);
|
||||
startTimer(timerLabel);
|
||||
|
||||
const metadataLocation = path.join(getTmpDirectory(), `${uuidv4()}-eas-build-metadata.json`);
|
||||
const archiveContent: string[] = [];
|
||||
|
||||
try {
|
||||
await tar.list({
|
||||
file: archivePath,
|
||||
onentry: (entry: tar.ReadEntry) => {
|
||||
if (entry.type === 'File' && !entry.path.includes('.git/')) {
|
||||
archiveContent.push(entry.path);
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
await fs.writeJSON(metadataLocation, {
|
||||
archiveContent,
|
||||
});
|
||||
} catch (e) {
|
||||
clearTimeout(timer);
|
||||
if (spinner.isSpinning) {
|
||||
spinner.fail();
|
||||
}
|
||||
throw e;
|
||||
}
|
||||
clearTimeout(timer);
|
||||
|
||||
const duration = endTimer(timerLabel);
|
||||
const prettyTime = formatMilliseconds(duration);
|
||||
spinner.succeed(`Created project metadata file ${chalk.dim(prettyTime)}`);
|
||||
|
||||
return { path: metadataLocation, size: await fs.stat(metadataLocation).then(stat => stat.size) };
|
||||
}
|
||||
|
||||
export async function makeProjectTarballAsync(vcsClient: Client): Promise<LocalFile> {
|
||||
const spinner = ora('Compressing project files');
|
||||
|
||||
await fs.mkdirp(getTmpDirectory());
|
||||
|
||||
@@ -24,6 +24,7 @@ import {
|
||||
} from '../analytics/AnalyticsManager';
|
||||
import Log from '../log';
|
||||
import SessionManager from '../user/SessionManager';
|
||||
import { Client } from '../vcs/vcs';
|
||||
|
||||
export type ContextInput<
|
||||
T extends {
|
||||
@@ -139,7 +140,7 @@ export default abstract class EasCommand extends Command {
|
||||
} = object,
|
||||
>(
|
||||
commandClass: { contextDefinition: ContextInput<C> },
|
||||
{ nonInteractive }: { nonInteractive: boolean }
|
||||
{ nonInteractive, vcsClientOverride }: { nonInteractive: boolean; vcsClientOverride?: Client }
|
||||
): Promise<ContextOutput<C>> {
|
||||
const contextDefinition = commandClass.contextDefinition;
|
||||
|
||||
@@ -152,6 +153,7 @@ export default abstract class EasCommand extends Command {
|
||||
nonInteractive,
|
||||
sessionManager: this.sessionManager,
|
||||
analytics: this.analytics,
|
||||
vcsClientOverride,
|
||||
}),
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
import { Analytics } from '../../analytics/AnalyticsManager';
|
||||
import SessionManager from '../../user/SessionManager';
|
||||
import { Client } from '../../vcs/vcs';
|
||||
|
||||
export interface ContextOptions {
|
||||
sessionManager: SessionManager;
|
||||
analytics: Analytics;
|
||||
nonInteractive: boolean;
|
||||
vcsClientOverride?: Client;
|
||||
}
|
||||
|
||||
export default abstract class ContextField<T> {
|
||||
|
||||
@@ -1,9 +1,18 @@
|
||||
import { EasJsonAccessor, EasJsonUtils } from '@expo/eas-json';
|
||||
|
||||
import ContextField from './ContextField';
|
||||
import { getVcsClient } from '../../vcs';
|
||||
import { findProjectDirAndVerifyProjectSetupAsync } from './contextUtils/findProjectDirAndVerifyProjectSetupAsync';
|
||||
import { resolveVcsClient } from '../../vcs';
|
||||
import { Client } from '../../vcs/vcs';
|
||||
|
||||
export default class VcsClientContextField extends ContextField<Client> {
|
||||
async getValueAsync(): Promise<Client> {
|
||||
return getVcsClient();
|
||||
async getValueAsync({ vcsClientOverride }: { vcsClientOverride?: Client }): Promise<Client> {
|
||||
if (vcsClientOverride) {
|
||||
return vcsClientOverride;
|
||||
}
|
||||
const projectDir = await findProjectDirAndVerifyProjectSetupAsync();
|
||||
const easJsonAccessor = EasJsonAccessor.fromProjectPath(projectDir);
|
||||
const config = await EasJsonUtils.getCliConfigAsync(easJsonAccessor);
|
||||
return resolveVcsClient(config?.requireCommit);
|
||||
}
|
||||
}
|
||||
+2
-6
@@ -8,8 +8,7 @@ import semver from 'semver';
|
||||
|
||||
import { learnMore } from '../../../log';
|
||||
import { easCliVersion } from '../../../utils/easCli';
|
||||
import { getVcsClient, setVcsClient } from '../../../vcs';
|
||||
import GitClient from '../../../vcs/clients/git';
|
||||
import { resolveVcsClient } from '../../../vcs';
|
||||
|
||||
async function applyCliConfigAsync(projectDir: string): Promise<void> {
|
||||
const easJsonAccessor = EasJsonAccessor.fromProjectPath(projectDir);
|
||||
@@ -19,9 +18,6 @@ async function applyCliConfigAsync(projectDir: string): Promise<void> {
|
||||
`You are on eas-cli@${easCliVersion} which does not satisfy the CLI version constraint in eas.json (${config.version})`
|
||||
);
|
||||
}
|
||||
if (config?.requireCommit) {
|
||||
setVcsClient(new GitClient());
|
||||
}
|
||||
}
|
||||
|
||||
async function ensureEasCliIsNotInDependenciesAsync(projectDir: string): Promise<void> {
|
||||
@@ -92,7 +88,7 @@ export async function findProjectRootAsync({
|
||||
} else {
|
||||
let vcsRoot;
|
||||
try {
|
||||
vcsRoot = path.normalize(await getVcsClient().getRootPathAsync());
|
||||
vcsRoot = path.normalize(await resolveVcsClient().getRootPathAsync());
|
||||
} catch {}
|
||||
if (vcsRoot && vcsRoot.startsWith(projectRootDir) && vcsRoot !== projectRootDir) {
|
||||
throw new Error(
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { Platform } from '@expo/eas-build-job';
|
||||
import { EasJsonAccessor, EasJsonUtils, ResourceClass } from '@expo/eas-json';
|
||||
import { LoggerLevel } from '@expo/logger';
|
||||
import { Errors, Flags } from '@oclif/core';
|
||||
import chalk from 'chalk';
|
||||
import figures from 'figures';
|
||||
@@ -33,6 +34,7 @@ interface RawBuildFlags {
|
||||
'auto-submit-with-profile'?: string;
|
||||
'resource-class'?: ResourceClass;
|
||||
message?: string;
|
||||
'build-logger-level'?: LoggerLevel;
|
||||
}
|
||||
|
||||
export default class Build extends EasCommand {
|
||||
@@ -98,6 +100,10 @@ export default class Build extends EasCommand {
|
||||
char: 'm',
|
||||
description: 'A short message describing the build',
|
||||
}),
|
||||
'build-logger-level': Flags.enum({
|
||||
description: 'The level of logs to output during the build process. Defaults to "info".',
|
||||
options: Object.values(LoggerLevel),
|
||||
}),
|
||||
...EasNonInteractiveAndJsonFlags,
|
||||
};
|
||||
|
||||
@@ -210,6 +216,7 @@ export default class Build extends EasCommand {
|
||||
submitProfile: flags['auto-submit-with-profile'] ?? profile,
|
||||
resourceClass: flags['resource-class'],
|
||||
message,
|
||||
buildLoggerLevel: flags['build-logger-level'],
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -6,7 +6,6 @@ import { runBuildAndSubmitAsync } from '../../build/runBuildAndSubmit';
|
||||
import EasCommand from '../../commandUtils/EasCommand';
|
||||
import { RequestedPlatform } from '../../platform';
|
||||
import { enableJsonOutput } from '../../utils/json';
|
||||
import { setVcsClient } from '../../vcs';
|
||||
import GitNoCommitClient from '../../vcs/clients/gitNoCommit';
|
||||
|
||||
/**
|
||||
@@ -30,6 +29,17 @@ export default class BuildInternal extends EasCommand {
|
||||
'Name of the build profile from eas.json. Defaults to "production" if defined in eas.json.',
|
||||
helpValue: 'PROFILE_NAME',
|
||||
}),
|
||||
'auto-submit': Flags.boolean({
|
||||
default: false,
|
||||
description:
|
||||
'Submit on build complete using the submit profile with the same name as the build profile',
|
||||
exclusive: ['auto-submit-with-profile'],
|
||||
}),
|
||||
'auto-submit-with-profile': Flags.string({
|
||||
description: 'Submit on build complete using the submit profile with provided name',
|
||||
helpValue: 'PROFILE_NAME',
|
||||
exclusive: ['auto-submit'],
|
||||
}),
|
||||
};
|
||||
|
||||
static override contextDefinition = {
|
||||
@@ -53,10 +63,9 @@ export default class BuildInternal extends EasCommand {
|
||||
vcsClient,
|
||||
} = await this.getContextAsync(BuildInternal, {
|
||||
nonInteractive: true,
|
||||
vcsClientOverride: new GitNoCommitClient(),
|
||||
});
|
||||
|
||||
setVcsClient(new GitNoCommitClient());
|
||||
|
||||
await handleDeprecatedEasJsonAsync(projectDir, flags.nonInteractive);
|
||||
|
||||
await runBuildAndSubmitAsync(
|
||||
@@ -71,10 +80,11 @@ export default class BuildInternal extends EasCommand {
|
||||
wait: false,
|
||||
clearCache: false,
|
||||
json: true,
|
||||
autoSubmit: false,
|
||||
autoSubmit: flags['auto-submit'] || flags['auto-submit-with-profile'] !== undefined,
|
||||
localBuildOptions: {
|
||||
localBuildMode: LocalBuildMode.INTERNAL,
|
||||
},
|
||||
submitProfile: flags['auto-submit-with-profile'] ?? flags.profile,
|
||||
},
|
||||
actor,
|
||||
getDynamicPrivateProjectConfigAsync
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
import { Platform } from '@expo/eas-build-job';
|
||||
import { Flags } from '@oclif/core';
|
||||
|
||||
import EasCommand from '../../commandUtils/EasCommand';
|
||||
import { SelectBuildProfileFromEasJson } from '../../credentials/manager/SelectBuildProfileFromEasJson';
|
||||
import { SetUpBuildCredentialsCommandAction } from '../../credentials/manager/SetUpBuildCredentialsCommandAction';
|
||||
import { selectPlatformAsync } from '../../platform';
|
||||
|
||||
export default class InitializeBuildCredentials extends EasCommand {
|
||||
static override description = 'Set up credentials for building your project.';
|
||||
|
||||
static override flags = {
|
||||
platform: Flags.enum({
|
||||
char: 'p',
|
||||
options: [Platform.ANDROID, Platform.IOS],
|
||||
}),
|
||||
profile: Flags.string({
|
||||
char: 'e',
|
||||
description: 'The name of the build profile in eas.json.',
|
||||
helpValue: 'PROFILE_NAME',
|
||||
}),
|
||||
};
|
||||
|
||||
static override contextDefinition = {
|
||||
...this.ContextOptions.LoggedIn,
|
||||
...this.ContextOptions.ProjectConfig,
|
||||
...this.ContextOptions.DynamicProjectConfig,
|
||||
...this.ContextOptions.Analytics,
|
||||
...this.ContextOptions.Vcs,
|
||||
};
|
||||
|
||||
async runAsync(): Promise<void> {
|
||||
const { flags } = await this.parse(InitializeBuildCredentials);
|
||||
const {
|
||||
loggedIn: { actor, graphqlClient },
|
||||
privateProjectConfig,
|
||||
getDynamicPrivateProjectConfigAsync,
|
||||
analytics,
|
||||
vcsClient,
|
||||
} = await this.getContextAsync(InitializeBuildCredentials, {
|
||||
nonInteractive: false,
|
||||
});
|
||||
|
||||
const platform = await selectPlatformAsync(flags.platform);
|
||||
|
||||
const buildProfile =
|
||||
flags.profile ??
|
||||
(await new SelectBuildProfileFromEasJson(
|
||||
privateProjectConfig.projectDir,
|
||||
Platform.IOS
|
||||
).getProfileNameFromEasConfigAsync());
|
||||
|
||||
await new SetUpBuildCredentialsCommandAction(
|
||||
actor,
|
||||
graphqlClient,
|
||||
vcsClient,
|
||||
analytics,
|
||||
privateProjectConfig ?? null,
|
||||
getDynamicPrivateProjectConfigAsync,
|
||||
platform,
|
||||
buildProfile
|
||||
).runAsync();
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
import { Flags } from '@oclif/core';
|
||||
|
||||
import EasCommand from '../commandUtils/EasCommand';
|
||||
import { SelectPlatform } from '../credentials/manager/SelectPlatform';
|
||||
import EasCommand from '../../commandUtils/EasCommand';
|
||||
import { SelectPlatform } from '../../credentials/manager/SelectPlatform';
|
||||
|
||||
export default class Credentials extends EasCommand {
|
||||
static override description = 'manage credentials';
|
||||
@@ -1,4 +1,4 @@
|
||||
import { getProjectConfigDescription } from '@expo/config';
|
||||
import { ConfigError, getProjectConfigDescription } from '@expo/config';
|
||||
import { ExpoConfig } from '@expo/config-types';
|
||||
import { Flags } from '@oclif/core';
|
||||
import chalk from 'chalk';
|
||||
@@ -60,7 +60,19 @@ export default class ProjectInit extends EasCommand {
|
||||
projectDir: string,
|
||||
modifications: Partial<ExpoConfig>
|
||||
): Promise<void> {
|
||||
const result = await createOrModifyExpoConfigAsync(projectDir, modifications);
|
||||
let result;
|
||||
try {
|
||||
result = await createOrModifyExpoConfigAsync(projectDir, modifications);
|
||||
} catch (error) {
|
||||
if (error instanceof ConfigError && error.code === 'MODULE_NOT_FOUND') {
|
||||
Log.warn(
|
||||
'Cannot determine which native SDK version your project uses because the module `expo` is not installed.'
|
||||
);
|
||||
return;
|
||||
} else {
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
switch (result.type) {
|
||||
case 'success':
|
||||
break;
|
||||
|
||||
@@ -33,6 +33,7 @@ interface RawCommandFlags {
|
||||
verbose: boolean;
|
||||
wait: boolean;
|
||||
'non-interactive': boolean;
|
||||
'verbose-fastlane': boolean;
|
||||
}
|
||||
|
||||
interface CommandFlags {
|
||||
@@ -42,6 +43,7 @@ interface CommandFlags {
|
||||
verbose: boolean;
|
||||
wait: boolean;
|
||||
nonInteractive: boolean;
|
||||
isVerboseFastlaneEnabled: boolean;
|
||||
}
|
||||
|
||||
export default class Submit extends EasCommand {
|
||||
@@ -83,6 +85,10 @@ export default class Submit extends EasCommand {
|
||||
default: true,
|
||||
allowNo: true,
|
||||
}),
|
||||
'verbose-fastlane': Flags.boolean({
|
||||
default: false,
|
||||
description: 'Enable verbose logging for the submission process',
|
||||
}),
|
||||
'non-interactive': Flags.boolean({
|
||||
default: false,
|
||||
description: 'Run command in non-interactive mode',
|
||||
@@ -132,6 +138,7 @@ export default class Submit extends EasCommand {
|
||||
profile: submissionProfile.profile,
|
||||
archiveFlags: flagsWithPlatform.archiveFlags,
|
||||
nonInteractive: flagsWithPlatform.nonInteractive,
|
||||
isVerboseFastlaneEnabled: flagsWithPlatform.isVerboseFastlaneEnabled,
|
||||
actor,
|
||||
graphqlClient,
|
||||
analytics,
|
||||
@@ -175,6 +182,7 @@ export default class Submit extends EasCommand {
|
||||
wait,
|
||||
profile,
|
||||
'non-interactive': nonInteractive,
|
||||
'verbose-fastlane': isVerboseFastlaneEnabled,
|
||||
...archiveFlags
|
||||
} = flags;
|
||||
|
||||
@@ -195,6 +203,7 @@ export default class Submit extends EasCommand {
|
||||
wait,
|
||||
profile,
|
||||
nonInteractive,
|
||||
isVerboseFastlaneEnabled,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ import {
|
||||
DynamicPublicProjectConfigContextField,
|
||||
} from '../../../commandUtils/context/DynamicProjectConfigContextField';
|
||||
import LoggedInContextField from '../../../commandUtils/context/LoggedInContextField';
|
||||
import VcsClientContextField from '../../../commandUtils/context/VcsClientContextField';
|
||||
import { ExpoGraphqlClient } from '../../../commandUtils/context/contextUtils/createGraphqlClient';
|
||||
import FeatureGateEnvOverrides from '../../../commandUtils/gating/FeatureGateEnvOverrides';
|
||||
import FeatureGating from '../../../commandUtils/gating/FeatureGating';
|
||||
@@ -21,6 +22,7 @@ import { PublishMutation } from '../../../graphql/mutations/PublishMutation';
|
||||
import { AppQuery } from '../../../graphql/queries/AppQuery';
|
||||
import { collectAssetsAsync, uploadAssetsAsync } from '../../../project/publish';
|
||||
import { getBranchNameFromChannelNameAsync } from '../../../update/getBranchNameFromChannelNameAsync';
|
||||
import { resolveVcsClient } from '../../../vcs';
|
||||
|
||||
const projectRoot = '/test-project';
|
||||
const commandOptions = { root: projectRoot } as any;
|
||||
@@ -265,6 +267,9 @@ function mockTestProject({
|
||||
featureGating: new FeatureGating({}, new FeatureGateEnvOverrides()),
|
||||
graphqlClient,
|
||||
});
|
||||
jest
|
||||
.spyOn(VcsClientContextField.prototype, 'getValueAsync')
|
||||
.mockResolvedValue(resolveVcsClient());
|
||||
|
||||
jest.mocked(AppQuery.byIdAsync).mockResolvedValue({
|
||||
id: '1234',
|
||||
|
||||
@@ -11,6 +11,7 @@ import {
|
||||
DynamicPublicProjectConfigContextField,
|
||||
} from '../../../commandUtils/context/DynamicProjectConfigContextField';
|
||||
import LoggedInContextField from '../../../commandUtils/context/LoggedInContextField';
|
||||
import VcsClientContextField from '../../../commandUtils/context/VcsClientContextField';
|
||||
import { ExpoGraphqlClient } from '../../../commandUtils/context/contextUtils/createGraphqlClient';
|
||||
import FeatureGateEnvOverrides from '../../../commandUtils/gating/FeatureGateEnvOverrides';
|
||||
import FeatureGating from '../../../commandUtils/gating/FeatureGating';
|
||||
@@ -19,6 +20,7 @@ import { UpdateFragment } from '../../../graphql/generated';
|
||||
import { PublishMutation } from '../../../graphql/mutations/PublishMutation';
|
||||
import { AppQuery } from '../../../graphql/queries/AppQuery';
|
||||
import { getBranchNameFromChannelNameAsync } from '../../../update/getBranchNameFromChannelNameAsync';
|
||||
import { resolveVcsClient } from '../../../vcs';
|
||||
import UpdateRollBackToEmbedded from '../roll-back-to-embedded';
|
||||
|
||||
const projectRoot = '/test-project';
|
||||
@@ -250,6 +252,9 @@ function mockTestProject({
|
||||
featureGating: new FeatureGating({}, new FeatureGateEnvOverrides()),
|
||||
graphqlClient,
|
||||
});
|
||||
jest
|
||||
.spyOn(VcsClientContextField.prototype, 'getValueAsync')
|
||||
.mockResolvedValue(resolveVcsClient());
|
||||
|
||||
jest.mocked(AppQuery.byIdAsync).mockResolvedValue({
|
||||
id: '1234',
|
||||
|
||||
@@ -351,7 +351,7 @@ export default class UpdatePublish extends EasCommand {
|
||||
Log.withInfo(
|
||||
`${platformString} (maximum: ${assetLimitPerUpdateGroup} total per update). ${learnMore(
|
||||
'https://expo.fyi/eas-update-asset-limits',
|
||||
{ learnMoreMessage: 'Learn more about asset limits.' }
|
||||
{ learnMoreMessage: 'Learn more about asset limits' }
|
||||
)}`
|
||||
);
|
||||
} catch (e) {
|
||||
@@ -359,12 +359,12 @@ export default class UpdatePublish extends EasCommand {
|
||||
throw e;
|
||||
}
|
||||
|
||||
const runtimeVersions = await getRuntimeVersionObjectAsync(
|
||||
const runtimeVersions = await getRuntimeVersionObjectAsync({
|
||||
exp,
|
||||
realizedPlatforms,
|
||||
platforms: realizedPlatforms,
|
||||
projectDir,
|
||||
vcsClient
|
||||
);
|
||||
vcsClient,
|
||||
});
|
||||
const runtimeToPlatformMapping =
|
||||
getRuntimeToPlatformMappingFromRuntimeVersions(runtimeVersions);
|
||||
|
||||
|
||||
@@ -201,12 +201,12 @@ export default class UpdateRollBackToEmbedded extends EasCommand {
|
||||
const gitCommitHash = await vcsClient.getCommitHashAsync();
|
||||
const isGitWorkingTreeDirty = await vcsClient.hasUncommittedChangesAsync();
|
||||
|
||||
const runtimeVersions = await getRuntimeVersionObjectAsync(
|
||||
const runtimeVersions = await getRuntimeVersionObjectAsync({
|
||||
exp,
|
||||
realizedPlatforms,
|
||||
platforms: realizedPlatforms,
|
||||
projectDir,
|
||||
vcsClient
|
||||
);
|
||||
vcsClient,
|
||||
});
|
||||
|
||||
let newUpdates: UpdatePublishMutation['updateBranch']['publishUpdateGroups'];
|
||||
const publishSpinner = ora('Publishing...').start();
|
||||
|
||||
@@ -113,6 +113,7 @@ export const AppleDeviceQuery = {
|
||||
deviceClass
|
||||
enabled
|
||||
model
|
||||
createdAt
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,6 +35,7 @@ export enum AndroidActionType {
|
||||
SetUpGsaKeyForFcmV1,
|
||||
UpdateCredentialsJson,
|
||||
SetUpBuildCredentialsFromCredentialsJson,
|
||||
SetUpBuildCredentials,
|
||||
}
|
||||
|
||||
export enum IosActionType {
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
import { Platform } from '@expo/eas-build-job';
|
||||
import { BuildProfile, EasJsonAccessor, EasJsonUtils } from '@expo/eas-json';
|
||||
|
||||
import Log from '../../log';
|
||||
|
||||
export class CheckBuildProfileFlagAgainstEasJson<T extends Platform> {
|
||||
private easJsonAccessor: EasJsonAccessor;
|
||||
|
||||
constructor(
|
||||
projectDir: string,
|
||||
private platform: T,
|
||||
private profileNameFromFlag: string
|
||||
) {
|
||||
this.easJsonAccessor = EasJsonAccessor.fromProjectPath(projectDir);
|
||||
}
|
||||
|
||||
async runAsync(): Promise<BuildProfile<T>> {
|
||||
const profileName = await this.getProfileNameFromEasConfigAsync();
|
||||
const easConfig = await EasJsonUtils.getBuildProfileAsync<T>(
|
||||
this.easJsonAccessor,
|
||||
this.platform,
|
||||
profileName
|
||||
);
|
||||
Log.succeed(`Using build profile: ${profileName}`);
|
||||
return easConfig;
|
||||
}
|
||||
|
||||
async getProfileNameFromEasConfigAsync(): Promise<string> {
|
||||
const buildProfileNames = await EasJsonUtils.getBuildProfileNamesAsync(this.easJsonAccessor);
|
||||
if (buildProfileNames.length === 0) {
|
||||
throw new Error(
|
||||
'You need at least one iOS build profile declared in eas.json. Go to https://docs.expo.dev/build/eas-json/ for more details'
|
||||
);
|
||||
} else if (buildProfileNames.length === 1) {
|
||||
return buildProfileNames[0];
|
||||
}
|
||||
|
||||
if (buildProfileNames.includes(this.profileNameFromFlag)) {
|
||||
return this.profileNameFromFlag;
|
||||
} else {
|
||||
throw new Error(
|
||||
`Build profile ${this.profileNameFromFlag} does not exist in eas.json. Go to https://docs.expo.dev/build/eas-json/ for more details`
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -34,6 +34,7 @@ import { DownloadKeystore } from '../android/actions/DownloadKeystore';
|
||||
import { RemoveFcm } from '../android/actions/RemoveFcm';
|
||||
import { SelectAndRemoveGoogleServiceAccountKey } from '../android/actions/RemoveGoogleServiceAccountKey';
|
||||
import { RemoveKeystore } from '../android/actions/RemoveKeystore';
|
||||
import { SetUpBuildCredentials } from '../android/actions/SetUpBuildCredentials';
|
||||
import { SetUpBuildCredentialsFromCredentialsJson } from '../android/actions/SetUpBuildCredentialsFromCredentialsJson';
|
||||
import { SetUpGoogleServiceAccountKeyForFcmV1 } from '../android/actions/SetUpGoogleServiceAccountKeyForFcmV1';
|
||||
import { SetUpGoogleServiceAccountKeyForSubmissions } from '../android/actions/SetUpGoogleServiceAccountKeyForSubmissions';
|
||||
@@ -48,8 +49,8 @@ import { AndroidPackageNotDefinedError } from '../errors';
|
||||
|
||||
export class ManageAndroid {
|
||||
constructor(
|
||||
private callingAction: Action,
|
||||
private projectDir: string
|
||||
protected callingAction: Action,
|
||||
protected projectDir: string
|
||||
) {}
|
||||
|
||||
async runAsync(currentActions: ActionInfo[] = highLevelActions): Promise<void> {
|
||||
@@ -164,7 +165,7 @@ export class ManageAndroid {
|
||||
}
|
||||
}
|
||||
|
||||
private async createProjectContextAsync(
|
||||
protected async createProjectContextAsync(
|
||||
ctx: CredentialsContext,
|
||||
buildProfile: BuildProfile<Platform.ANDROID>
|
||||
): Promise<GradleBuildContext | undefined> {
|
||||
@@ -172,7 +173,7 @@ export class ManageAndroid {
|
||||
return await resolveGradleBuildContextAsync(ctx.projectDir, buildProfile, ctx.vcsClient);
|
||||
}
|
||||
|
||||
private async runProjectSpecificActionAsync(
|
||||
protected async runProjectSpecificActionAsync(
|
||||
ctx: CredentialsContext,
|
||||
action: AndroidActionType,
|
||||
gradleContext?: GradleBuildContext
|
||||
@@ -239,6 +240,8 @@ export class ManageAndroid {
|
||||
}
|
||||
} else if (action === AndroidActionType.SetUpBuildCredentialsFromCredentialsJson) {
|
||||
await new SetUpBuildCredentialsFromCredentialsJson(appLookupParams).runAsync(ctx);
|
||||
} else if (action === AndroidActionType.SetUpBuildCredentials) {
|
||||
await new SetUpBuildCredentials({ app: appLookupParams }).runAsync(ctx);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -56,8 +56,8 @@ import { displayIosCredentials } from '../ios/utils/printCredentials';
|
||||
|
||||
export class ManageIos {
|
||||
constructor(
|
||||
private callingAction: Action,
|
||||
private projectDir: string
|
||||
protected callingAction: Action,
|
||||
protected projectDir: string
|
||||
) {}
|
||||
|
||||
async runAsync(currentActions: ActionInfo[] = highLevelActions): Promise<void> {
|
||||
@@ -182,7 +182,7 @@ export class ManageIos {
|
||||
}
|
||||
}
|
||||
|
||||
private async createProjectContextAsync(
|
||||
protected async createProjectContextAsync(
|
||||
ctx: CredentialsContext,
|
||||
account: AccountFragment,
|
||||
buildProfile: BuildProfile<Platform.IOS>
|
||||
@@ -215,7 +215,7 @@ export class ManageIos {
|
||||
};
|
||||
}
|
||||
|
||||
private async runAccountSpecificActionAsync(
|
||||
protected async runAccountSpecificActionAsync(
|
||||
ctx: CredentialsContext,
|
||||
account: AccountFragment,
|
||||
action: IosActionType
|
||||
@@ -235,7 +235,7 @@ export class ManageIos {
|
||||
}
|
||||
}
|
||||
|
||||
private async runProjectSpecificActionAsync(
|
||||
protected async runProjectSpecificActionAsync(
|
||||
ctx: CredentialsContext,
|
||||
app: App,
|
||||
targets: Target[],
|
||||
@@ -396,7 +396,7 @@ export class ManageIos {
|
||||
}
|
||||
}
|
||||
|
||||
private async setupProvisioningProfileWithSpecificDistCertAsync(
|
||||
protected async setupProvisioningProfileWithSpecificDistCertAsync(
|
||||
ctx: CredentialsContext,
|
||||
target: Target,
|
||||
appLookupParams: AppLookupParams,
|
||||
@@ -419,7 +419,7 @@ export class ManageIos {
|
||||
}
|
||||
}
|
||||
|
||||
private async selectTargetAsync(targets: Target[]): Promise<Target> {
|
||||
protected async selectTargetAsync(targets: Target[]): Promise<Target> {
|
||||
if (targets.length === 1) {
|
||||
return targets[0];
|
||||
}
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
import { Platform } from '@expo/eas-build-job';
|
||||
import assert from 'assert';
|
||||
|
||||
import { AndroidActionType } from './Actions';
|
||||
import { CheckBuildProfileFlagAgainstEasJson } from './CheckBuildProfileFlagAgainstEasJson';
|
||||
import { Action } from './HelperActions';
|
||||
import { ManageAndroid } from './ManageAndroid';
|
||||
import { CredentialsContext, CredentialsContextProjectInfo } from '../context';
|
||||
|
||||
export class SetUpAndroidBuildCredentials extends ManageAndroid {
|
||||
constructor(
|
||||
callingAction: Action,
|
||||
projectDir: string,
|
||||
private setUpBuildCredentialsWithProfileNameFromFlag: string
|
||||
) {
|
||||
super(callingAction, projectDir);
|
||||
}
|
||||
|
||||
override async runAsync(): Promise<void> {
|
||||
const hasProjectContext = !!this.callingAction.projectInfo;
|
||||
const buildProfile = hasProjectContext
|
||||
? await new CheckBuildProfileFlagAgainstEasJson(
|
||||
this.projectDir,
|
||||
Platform.ANDROID,
|
||||
this.setUpBuildCredentialsWithProfileNameFromFlag
|
||||
).runAsync()
|
||||
: null;
|
||||
let projectInfo: CredentialsContextProjectInfo | null = null;
|
||||
if (hasProjectContext) {
|
||||
const { exp, projectId } = await this.callingAction.getDynamicPrivateProjectConfigAsync({
|
||||
env: buildProfile?.env,
|
||||
});
|
||||
projectInfo = { exp, projectId };
|
||||
}
|
||||
const ctx = new CredentialsContext({
|
||||
projectDir: process.cwd(),
|
||||
projectInfo,
|
||||
user: this.callingAction.actor,
|
||||
graphqlClient: this.callingAction.graphqlClient,
|
||||
analytics: this.callingAction.analytics,
|
||||
env: buildProfile?.env,
|
||||
nonInteractive: false,
|
||||
vcsClient: this.callingAction.vcsClient,
|
||||
});
|
||||
|
||||
let gradleContext;
|
||||
if (ctx.hasProjectContext) {
|
||||
assert(buildProfile, 'buildProfile must be defined in a project context');
|
||||
gradleContext = await this.createProjectContextAsync(ctx, buildProfile);
|
||||
}
|
||||
|
||||
if (this.setUpBuildCredentialsWithProfileNameFromFlag) {
|
||||
await this.runProjectSpecificActionAsync(
|
||||
ctx,
|
||||
AndroidActionType.SetUpBuildCredentials,
|
||||
gradleContext
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
import { Platform } from '@expo/eas-build-job';
|
||||
|
||||
import { Analytics } from '../../analytics/AnalyticsManager';
|
||||
import { DynamicConfigContextFn } from '../../commandUtils/context/DynamicProjectConfigContextField';
|
||||
import { ExpoGraphqlClient } from '../../commandUtils/context/contextUtils/createGraphqlClient';
|
||||
import { Actor } from '../../user/User';
|
||||
import { Client } from '../../vcs/vcs';
|
||||
import { CredentialsContextProjectInfo } from '../context';
|
||||
import { SetUpAndroidBuildCredentials } from '../manager/SetUpAndroidBuildCredentials';
|
||||
import { SetUpIosBuildCredentials } from '../manager/SetUpIosBuildCredentials';
|
||||
|
||||
export class SetUpBuildCredentialsCommandAction {
|
||||
constructor(
|
||||
public readonly actor: Actor,
|
||||
public readonly graphqlClient: ExpoGraphqlClient,
|
||||
public readonly vcsClient: Client,
|
||||
public readonly analytics: Analytics,
|
||||
public readonly projectInfo: CredentialsContextProjectInfo | null,
|
||||
public readonly getDynamicPrivateProjectConfigAsync: DynamicConfigContextFn,
|
||||
private readonly platform: Platform,
|
||||
private readonly profileName: string
|
||||
) {}
|
||||
|
||||
async runAsync(): Promise<void> {
|
||||
if (this.platform === Platform.IOS) {
|
||||
return await new SetUpIosBuildCredentials(this, process.cwd(), this.profileName).runAsync();
|
||||
}
|
||||
return await new SetUpAndroidBuildCredentials(this, process.cwd(), this.profileName).runAsync();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
import { Platform } from '@expo/eas-build-job';
|
||||
import assert from 'assert';
|
||||
import nullthrows from 'nullthrows';
|
||||
|
||||
import { IosActionType } from './Actions';
|
||||
import { CheckBuildProfileFlagAgainstEasJson } from './CheckBuildProfileFlagAgainstEasJson';
|
||||
import { Action } from './HelperActions';
|
||||
import { ManageIos } from './ManageIos';
|
||||
import { AccountFragment } from '../../graphql/generated';
|
||||
import { getOwnerAccountForProjectIdAsync } from '../../project/projectUtils';
|
||||
import { ensureActorHasPrimaryAccount } from '../../user/actions';
|
||||
import { CredentialsContext, CredentialsContextProjectInfo } from '../context';
|
||||
|
||||
export class SetUpIosBuildCredentials extends ManageIos {
|
||||
constructor(
|
||||
callingAction: Action,
|
||||
projectDir: string,
|
||||
private setUpBuildCredentialsWithProfileNameFromFlag: string
|
||||
) {
|
||||
super(callingAction, projectDir);
|
||||
}
|
||||
|
||||
override async runAsync(): Promise<void> {
|
||||
const buildProfile = this.callingAction.projectInfo
|
||||
? await new CheckBuildProfileFlagAgainstEasJson(
|
||||
this.projectDir,
|
||||
Platform.IOS,
|
||||
this.setUpBuildCredentialsWithProfileNameFromFlag
|
||||
).runAsync()
|
||||
: null;
|
||||
|
||||
let projectInfo: CredentialsContextProjectInfo | null = null;
|
||||
if (this.callingAction.projectInfo) {
|
||||
const { exp, projectId } = await this.callingAction.getDynamicPrivateProjectConfigAsync({
|
||||
env: buildProfile?.env,
|
||||
});
|
||||
projectInfo = { exp, projectId };
|
||||
}
|
||||
|
||||
const ctx = new CredentialsContext({
|
||||
projectDir: process.cwd(),
|
||||
projectInfo,
|
||||
user: this.callingAction.actor,
|
||||
graphqlClient: this.callingAction.graphqlClient,
|
||||
analytics: this.callingAction.analytics,
|
||||
env: buildProfile?.env,
|
||||
nonInteractive: false,
|
||||
vcsClient: this.callingAction.vcsClient,
|
||||
});
|
||||
|
||||
await ctx.bestEffortAppStoreAuthenticateAsync();
|
||||
|
||||
const getAccountForProjectAsync = async (projectId: string): Promise<AccountFragment> => {
|
||||
return await getOwnerAccountForProjectIdAsync(ctx.graphqlClient, projectId);
|
||||
};
|
||||
|
||||
const account = ctx.hasProjectContext
|
||||
? await getAccountForProjectAsync(ctx.projectId)
|
||||
: ensureActorHasPrimaryAccount(ctx.user);
|
||||
|
||||
let app = null;
|
||||
let targets = null;
|
||||
if (ctx.hasProjectContext) {
|
||||
assert(buildProfile, 'buildProfile must be defined in project context');
|
||||
const projectContext = await this.createProjectContextAsync(ctx, account, buildProfile);
|
||||
app = projectContext.app;
|
||||
targets = projectContext.targets;
|
||||
}
|
||||
|
||||
await this.runProjectSpecificActionAsync(
|
||||
ctx,
|
||||
nullthrows(app, 'app must be defined in project context'),
|
||||
nullthrows(targets, 'targets must be defined in project context'),
|
||||
nullthrows(buildProfile, 'buildProfile must be defined in project context'),
|
||||
IosActionType.SetUpBuildCredentials
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -10,6 +10,7 @@ const DEVICE_CLASS_DISPLAY_NAMES: Record<AppleDeviceClass, string> = {
|
||||
[AppleDeviceClass.Iphone]: 'iPhone',
|
||||
[AppleDeviceClass.Ipad]: 'iPad',
|
||||
[AppleDeviceClass.Mac]: 'Mac',
|
||||
[AppleDeviceClass.Unknown]: 'Unknown',
|
||||
};
|
||||
|
||||
function formatDeviceClass(device: Device | NewDevice): string {
|
||||
|
||||
+393
-52
@@ -79,15 +79,30 @@ export type Account = {
|
||||
/** Coalesced project activity for all apps belonging to this account. */
|
||||
activityTimelineProjectActivities: Array<ActivityTimelineProjectActivity>;
|
||||
appCount: Scalars['Int']['output'];
|
||||
/** @deprecated Use appStoreConnectApiKeysPaginated */
|
||||
appStoreConnectApiKeys: Array<AppStoreConnectApiKey>;
|
||||
appStoreConnectApiKeysPaginated: AccountAppStoreConnectApiKeysConnection;
|
||||
appleAppIdentifiers: Array<AppleAppIdentifier>;
|
||||
/** @deprecated Use appleDevicesPaginated */
|
||||
appleDevices: Array<AppleDevice>;
|
||||
appleDevicesPaginated: AccountAppleDevicesConnection;
|
||||
/** @deprecated Use appleDistributionCertificatesPaginated */
|
||||
appleDistributionCertificates: Array<AppleDistributionCertificate>;
|
||||
appleDistributionCertificatesPaginated: AccountAppleDistributionCertificatesConnection;
|
||||
/** @deprecated Use appleProvisioningProfilesPaginated */
|
||||
appleProvisioningProfiles: Array<AppleProvisioningProfile>;
|
||||
appleProvisioningProfilesPaginated: AccountAppleProvisioningProfilesConnection;
|
||||
/** @deprecated Use applePushKeysPaginated */
|
||||
applePushKeys: Array<ApplePushKey>;
|
||||
/** iOS credentials for account */
|
||||
applePushKeysPaginated: AccountApplePushKeysConnection;
|
||||
/** @deprecated Use appleTeamsPaginated */
|
||||
appleTeams: Array<AppleTeam>;
|
||||
/** Apps associated with this account */
|
||||
/** iOS credentials for account */
|
||||
appleTeamsPaginated: AccountAppleTeamsConnection;
|
||||
/**
|
||||
* Apps associated with this account
|
||||
* @deprecated Use appsPaginated
|
||||
*/
|
||||
apps: Array<App>;
|
||||
/** Paginated list of apps associated with this account. By default sorted by name. Use filter to adjust the sorting order. */
|
||||
appsPaginated: AccountAppsConnection;
|
||||
@@ -110,8 +125,10 @@ export type Account = {
|
||||
environmentSecrets: Array<EnvironmentSecret>;
|
||||
/** GitHub App installations for an account */
|
||||
githubAppInstallations: Array<GitHubAppInstallation>;
|
||||
/** Android credentials for account */
|
||||
/** @deprecated Use googleServiceAccountKeysPaginated */
|
||||
googleServiceAccountKeys: Array<GoogleServiceAccountKey>;
|
||||
/** Android credentials for account */
|
||||
googleServiceAccountKeysPaginated: AccountGoogleServiceAccountKeysConnection;
|
||||
id: Scalars['ID']['output'];
|
||||
isCurrent: Scalars['Boolean']['output'];
|
||||
isDisabled: Scalars['Boolean']['output'];
|
||||
@@ -151,6 +168,8 @@ export type Account = {
|
||||
userInvitations: Array<UserInvitation>;
|
||||
/** Actors associated with this account and permissions they hold */
|
||||
users: Array<UserPermission>;
|
||||
/** Permission info for the viewer on this account */
|
||||
viewerUserPermission: UserPermission;
|
||||
/** @deprecated Build packs are no longer supported */
|
||||
willAutoRenewBuilds?: Maybe<Scalars['Boolean']['output']>;
|
||||
};
|
||||
@@ -167,6 +186,18 @@ export type AccountActivityTimelineProjectActivitiesArgs = {
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* An account is a container owning projects, credentials, billing and other organization
|
||||
* data and settings. Actors may own and be members of accounts.
|
||||
*/
|
||||
export type AccountAppStoreConnectApiKeysPaginatedArgs = {
|
||||
after?: InputMaybe<Scalars['String']['input']>;
|
||||
before?: InputMaybe<Scalars['String']['input']>;
|
||||
first?: InputMaybe<Scalars['Int']['input']>;
|
||||
last?: InputMaybe<Scalars['Int']['input']>;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* An account is a container owning projects, credentials, billing and other organization
|
||||
* data and settings. Actors may own and be members of accounts.
|
||||
@@ -187,6 +218,31 @@ export type AccountAppleDevicesArgs = {
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* An account is a container owning projects, credentials, billing and other organization
|
||||
* data and settings. Actors may own and be members of accounts.
|
||||
*/
|
||||
export type AccountAppleDevicesPaginatedArgs = {
|
||||
after?: InputMaybe<Scalars['String']['input']>;
|
||||
before?: InputMaybe<Scalars['String']['input']>;
|
||||
filter?: InputMaybe<AppleDeviceFilterInput>;
|
||||
first?: InputMaybe<Scalars['Int']['input']>;
|
||||
last?: InputMaybe<Scalars['Int']['input']>;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* An account is a container owning projects, credentials, billing and other organization
|
||||
* data and settings. Actors may own and be members of accounts.
|
||||
*/
|
||||
export type AccountAppleDistributionCertificatesPaginatedArgs = {
|
||||
after?: InputMaybe<Scalars['String']['input']>;
|
||||
before?: InputMaybe<Scalars['String']['input']>;
|
||||
first?: InputMaybe<Scalars['Int']['input']>;
|
||||
last?: InputMaybe<Scalars['Int']['input']>;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* An account is a container owning projects, credentials, billing and other organization
|
||||
* data and settings. Actors may own and be members of accounts.
|
||||
@@ -196,6 +252,30 @@ export type AccountAppleProvisioningProfilesArgs = {
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* An account is a container owning projects, credentials, billing and other organization
|
||||
* data and settings. Actors may own and be members of accounts.
|
||||
*/
|
||||
export type AccountAppleProvisioningProfilesPaginatedArgs = {
|
||||
after?: InputMaybe<Scalars['String']['input']>;
|
||||
before?: InputMaybe<Scalars['String']['input']>;
|
||||
first?: InputMaybe<Scalars['Int']['input']>;
|
||||
last?: InputMaybe<Scalars['Int']['input']>;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* An account is a container owning projects, credentials, billing and other organization
|
||||
* data and settings. Actors may own and be members of accounts.
|
||||
*/
|
||||
export type AccountApplePushKeysPaginatedArgs = {
|
||||
after?: InputMaybe<Scalars['String']['input']>;
|
||||
before?: InputMaybe<Scalars['String']['input']>;
|
||||
first?: InputMaybe<Scalars['Int']['input']>;
|
||||
last?: InputMaybe<Scalars['Int']['input']>;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* An account is a container owning projects, credentials, billing and other organization
|
||||
* data and settings. Actors may own and be members of accounts.
|
||||
@@ -207,6 +287,19 @@ export type AccountAppleTeamsArgs = {
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* An account is a container owning projects, credentials, billing and other organization
|
||||
* data and settings. Actors may own and be members of accounts.
|
||||
*/
|
||||
export type AccountAppleTeamsPaginatedArgs = {
|
||||
after?: InputMaybe<Scalars['String']['input']>;
|
||||
before?: InputMaybe<Scalars['String']['input']>;
|
||||
filter?: InputMaybe<AppleTeamFilterInput>;
|
||||
first?: InputMaybe<Scalars['Int']['input']>;
|
||||
last?: InputMaybe<Scalars['Int']['input']>;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* An account is a container owning projects, credentials, billing and other organization
|
||||
* data and settings. Actors may own and be members of accounts.
|
||||
@@ -282,6 +375,18 @@ export type AccountEnvironmentSecretsArgs = {
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* An account is a container owning projects, credentials, billing and other organization
|
||||
* data and settings. Actors may own and be members of accounts.
|
||||
*/
|
||||
export type AccountGoogleServiceAccountKeysPaginatedArgs = {
|
||||
after?: InputMaybe<Scalars['String']['input']>;
|
||||
before?: InputMaybe<Scalars['String']['input']>;
|
||||
first?: InputMaybe<Scalars['Int']['input']>;
|
||||
last?: InputMaybe<Scalars['Int']['input']>;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* An account is a container owning projects, credentials, billing and other organization
|
||||
* data and settings. Actors may own and be members of accounts.
|
||||
@@ -304,6 +409,78 @@ export type AccountTimelineActivityArgs = {
|
||||
last?: InputMaybe<Scalars['Int']['input']>;
|
||||
};
|
||||
|
||||
export type AccountAppStoreConnectApiKeysConnection = {
|
||||
__typename?: 'AccountAppStoreConnectApiKeysConnection';
|
||||
edges: Array<AccountAppStoreConnectApiKeysEdge>;
|
||||
pageInfo: PageInfo;
|
||||
};
|
||||
|
||||
export type AccountAppStoreConnectApiKeysEdge = {
|
||||
__typename?: 'AccountAppStoreConnectApiKeysEdge';
|
||||
cursor: Scalars['String']['output'];
|
||||
node: AppStoreConnectApiKey;
|
||||
};
|
||||
|
||||
export type AccountAppleDevicesConnection = {
|
||||
__typename?: 'AccountAppleDevicesConnection';
|
||||
edges: Array<AccountAppleDevicesEdge>;
|
||||
pageInfo: PageInfo;
|
||||
};
|
||||
|
||||
export type AccountAppleDevicesEdge = {
|
||||
__typename?: 'AccountAppleDevicesEdge';
|
||||
cursor: Scalars['String']['output'];
|
||||
node: AppleDevice;
|
||||
};
|
||||
|
||||
export type AccountAppleDistributionCertificatesConnection = {
|
||||
__typename?: 'AccountAppleDistributionCertificatesConnection';
|
||||
edges: Array<AccountAppleDistributionCertificatesEdge>;
|
||||
pageInfo: PageInfo;
|
||||
};
|
||||
|
||||
export type AccountAppleDistributionCertificatesEdge = {
|
||||
__typename?: 'AccountAppleDistributionCertificatesEdge';
|
||||
cursor: Scalars['String']['output'];
|
||||
node: AppleDistributionCertificate;
|
||||
};
|
||||
|
||||
export type AccountAppleProvisioningProfilesConnection = {
|
||||
__typename?: 'AccountAppleProvisioningProfilesConnection';
|
||||
edges: Array<AccountAppleProvisioningProfilesEdge>;
|
||||
pageInfo: PageInfo;
|
||||
};
|
||||
|
||||
export type AccountAppleProvisioningProfilesEdge = {
|
||||
__typename?: 'AccountAppleProvisioningProfilesEdge';
|
||||
cursor: Scalars['String']['output'];
|
||||
node: AppleProvisioningProfile;
|
||||
};
|
||||
|
||||
export type AccountApplePushKeysConnection = {
|
||||
__typename?: 'AccountApplePushKeysConnection';
|
||||
edges: Array<AccountApplePushKeysEdge>;
|
||||
pageInfo: PageInfo;
|
||||
};
|
||||
|
||||
export type AccountApplePushKeysEdge = {
|
||||
__typename?: 'AccountApplePushKeysEdge';
|
||||
cursor: Scalars['String']['output'];
|
||||
node: ApplePushKey;
|
||||
};
|
||||
|
||||
export type AccountAppleTeamsConnection = {
|
||||
__typename?: 'AccountAppleTeamsConnection';
|
||||
edges: Array<AccountAppleTeamsEdge>;
|
||||
pageInfo: PageInfo;
|
||||
};
|
||||
|
||||
export type AccountAppleTeamsEdge = {
|
||||
__typename?: 'AccountAppleTeamsEdge';
|
||||
cursor: Scalars['String']['output'];
|
||||
node: AppleTeam;
|
||||
};
|
||||
|
||||
export type AccountAppsConnection = {
|
||||
__typename?: 'AccountAppsConnection';
|
||||
edges: Array<AccountAppsEdge>;
|
||||
@@ -334,6 +511,18 @@ export type AccountDataInput = {
|
||||
name: Scalars['String']['input'];
|
||||
};
|
||||
|
||||
export type AccountGoogleServiceAccountKeysConnection = {
|
||||
__typename?: 'AccountGoogleServiceAccountKeysConnection';
|
||||
edges: Array<AccountGoogleServiceAccountKeysEdge>;
|
||||
pageInfo: PageInfo;
|
||||
};
|
||||
|
||||
export type AccountGoogleServiceAccountKeysEdge = {
|
||||
__typename?: 'AccountGoogleServiceAccountKeysEdge';
|
||||
cursor: Scalars['String']['output'];
|
||||
node: GoogleServiceAccountKey;
|
||||
};
|
||||
|
||||
export type AccountMutation = {
|
||||
__typename?: 'AccountMutation';
|
||||
/**
|
||||
@@ -911,6 +1100,7 @@ export type AndroidJobInput = {
|
||||
developmentClient?: InputMaybe<Scalars['Boolean']['input']>;
|
||||
experimental?: InputMaybe<Scalars['JSONObject']['input']>;
|
||||
gradleCommand?: InputMaybe<Scalars['String']['input']>;
|
||||
loggerLevel?: InputMaybe<WorkerLoggerLevel>;
|
||||
mode?: InputMaybe<BuildMode>;
|
||||
projectArchive: ProjectArchiveSourceInput;
|
||||
projectRootDirectory: Scalars['String']['input'];
|
||||
@@ -939,9 +1129,11 @@ export type AndroidJobOverridesInput = {
|
||||
buildType?: InputMaybe<AndroidBuildType>;
|
||||
builderEnvironment?: InputMaybe<AndroidBuilderEnvironmentInput>;
|
||||
cache?: InputMaybe<BuildCacheInput>;
|
||||
customBuildConfig?: InputMaybe<CustomBuildConfigInput>;
|
||||
developmentClient?: InputMaybe<Scalars['Boolean']['input']>;
|
||||
experimental?: InputMaybe<Scalars['JSONObject']['input']>;
|
||||
gradleCommand?: InputMaybe<Scalars['String']['input']>;
|
||||
loggerLevel?: InputMaybe<WorkerLoggerLevel>;
|
||||
mode?: InputMaybe<BuildMode>;
|
||||
releaseChannel?: InputMaybe<Scalars['String']['input']>;
|
||||
secrets?: InputMaybe<AndroidJobSecretsInput>;
|
||||
@@ -1024,6 +1216,7 @@ export type AndroidSubmissionConfigInput = {
|
||||
changesNotSentForReview?: InputMaybe<Scalars['Boolean']['input']>;
|
||||
googleServiceAccountKeyId?: InputMaybe<Scalars['String']['input']>;
|
||||
googleServiceAccountKeyJson?: InputMaybe<Scalars['String']['input']>;
|
||||
isVerboseFastlaneEnabled?: InputMaybe<Scalars['Boolean']['input']>;
|
||||
releaseStatus?: InputMaybe<SubmissionAndroidReleaseStatus>;
|
||||
rollout?: InputMaybe<Scalars['Float']['input']>;
|
||||
track: SubmissionAndroidTrack;
|
||||
@@ -1038,7 +1231,10 @@ export type App = Project & {
|
||||
activityTimelineProjectActivities: Array<ActivityTimelineProjectActivity>;
|
||||
/** Android app credentials for the project */
|
||||
androidAppCredentials: Array<AndroidAppCredentials>;
|
||||
/** ios.appStoreUrl field from most recent classic update manifest */
|
||||
/**
|
||||
* ios.appStoreUrl field from most recent classic update manifest
|
||||
* @deprecated Classic updates have been deprecated.
|
||||
*/
|
||||
appStoreUrl?: Maybe<Scalars['String']['output']>;
|
||||
assetLimitPerUpdateGroup: Scalars['Int']['output'];
|
||||
branchesPaginated: AppBranchesConnection;
|
||||
@@ -1051,12 +1247,16 @@ export type App = Project & {
|
||||
/** (EAS Build) Builds associated with this app */
|
||||
builds: Array<Build>;
|
||||
buildsPaginated: AppBuildsConnection;
|
||||
/** Classic update release channel names that have at least one build */
|
||||
/**
|
||||
* Classic update release channel names that have at least one build
|
||||
* @deprecated Classic updates have been deprecated.
|
||||
*/
|
||||
buildsReleaseChannels: Array<Scalars['String']['output']>;
|
||||
channelsPaginated: AppChannelsConnection;
|
||||
deployment?: Maybe<Deployment>;
|
||||
/** Deployments associated with this app */
|
||||
deployments: DeploymentsConnection;
|
||||
/** @deprecated Classic updates have been deprecated. */
|
||||
description: Scalars['String']['output'];
|
||||
/** Environment secrets for an app */
|
||||
environmentSecrets: Array<EnvironmentSecret>;
|
||||
@@ -1064,29 +1264,44 @@ export type App = Project & {
|
||||
githubBuildTriggers: Array<GitHubBuildTrigger>;
|
||||
githubRepository?: Maybe<GitHubRepository>;
|
||||
githubRepositorySettings?: Maybe<GitHubRepositorySettings>;
|
||||
/** githubUrl field from most recent classic update manifest */
|
||||
/**
|
||||
* githubUrl field from most recent classic update manifest
|
||||
* @deprecated Classic updates have been deprecated.
|
||||
*/
|
||||
githubUrl?: Maybe<Scalars['String']['output']>;
|
||||
/** Info about the icon specified in the most recent classic update manifest */
|
||||
/**
|
||||
* Info about the icon specified in the most recent classic update manifest
|
||||
* @deprecated Classic updates have been deprecated.
|
||||
*/
|
||||
icon?: Maybe<AppIcon>;
|
||||
/** @deprecated No longer supported */
|
||||
iconUrl?: Maybe<Scalars['String']['output']>;
|
||||
id: Scalars['ID']['output'];
|
||||
/** App query field for querying EAS Insights about this app */
|
||||
insights: AppInsights;
|
||||
internalDistributionBuildPrivacy: AppInternalDistributionBuildPrivacy;
|
||||
/** iOS app credentials for the project */
|
||||
iosAppCredentials: Array<IosAppCredentials>;
|
||||
isDeleting: Scalars['Boolean']['output'];
|
||||
/** Whether the latest classic update publish is using a deprecated SDK version */
|
||||
/**
|
||||
* Whether the latest classic update publish is using a deprecated SDK version
|
||||
* @deprecated Classic updates have been deprecated.
|
||||
*/
|
||||
isDeprecated: Scalars['Boolean']['output'];
|
||||
/** @deprecated 'likes' have been deprecated. */
|
||||
isLikedByMe: Scalars['Boolean']['output'];
|
||||
lastDeletionAttemptTime?: Maybe<Scalars['DateTime']['output']>;
|
||||
/** @deprecated No longer supported */
|
||||
lastPublishedTime: Scalars['DateTime']['output'];
|
||||
/** Time of the last user activity (update, branch, submission). */
|
||||
latestActivity: Scalars['DateTime']['output'];
|
||||
latestAppVersionByPlatformAndApplicationIdentifier?: Maybe<AppVersion>;
|
||||
/** @deprecated Classic updates have been deprecated. */
|
||||
latestReleaseForReleaseChannel?: Maybe<AppRelease>;
|
||||
/** ID of latest classic update release */
|
||||
/**
|
||||
* ID of latest classic update release
|
||||
* @deprecated Classic updates have been deprecated.
|
||||
*/
|
||||
latestReleaseId: Scalars['ID']['output'];
|
||||
/** @deprecated 'likes' have been deprecated. */
|
||||
likeCount: Scalars['Int']['output'];
|
||||
@@ -1098,22 +1313,34 @@ export type App = Project & {
|
||||
packageName: Scalars['String']['output'];
|
||||
/** @deprecated No longer supported */
|
||||
packageUsername: Scalars['String']['output'];
|
||||
/** android.playStoreUrl field from most recent classic update manifest */
|
||||
/**
|
||||
* android.playStoreUrl field from most recent classic update manifest
|
||||
* @deprecated Classic updates have been deprecated.
|
||||
*/
|
||||
playStoreUrl?: Maybe<Scalars['String']['output']>;
|
||||
/** @deprecated Use 'privacySetting' instead. */
|
||||
privacy: Scalars['String']['output'];
|
||||
privacySetting: AppPrivacy;
|
||||
/** Whether there have been any classic update publishes */
|
||||
/**
|
||||
* Whether there have been any classic update publishes
|
||||
* @deprecated Classic updates have been deprecated.
|
||||
*/
|
||||
published: Scalars['Boolean']['output'];
|
||||
pushSecurityEnabled: Scalars['Boolean']['output'];
|
||||
/** Classic update release channel names (to be removed) */
|
||||
/**
|
||||
* Classic update release channel names (to be removed)
|
||||
* @deprecated Classic updates have been deprecated.
|
||||
*/
|
||||
releaseChannels: Array<Scalars['String']['output']>;
|
||||
/** @deprecated Legacy access tokens are deprecated */
|
||||
requiresAccessTokenForPushSecurity: Scalars['Boolean']['output'];
|
||||
/** Runtimes associated with this app */
|
||||
runtimes: RuntimesConnection;
|
||||
scopeKey: Scalars['String']['output'];
|
||||
/** SDK version of the latest classic update publish, 0.0.0 otherwise */
|
||||
/**
|
||||
* SDK version of the latest classic update publish, 0.0.0 otherwise
|
||||
* @deprecated Classic updates have been deprecated.
|
||||
*/
|
||||
sdkVersion: Scalars['String']['output'];
|
||||
slug: Scalars['String']['output'];
|
||||
/** EAS Submissions associated with this app */
|
||||
@@ -1133,7 +1360,10 @@ export type App = Project & {
|
||||
updateChannels: Array<UpdateChannel>;
|
||||
/** EAS updates owned by an app grouped by update group */
|
||||
updateGroups: Array<Array<Update>>;
|
||||
/** Time of last classic update publish */
|
||||
/**
|
||||
* Time of last classic update publish
|
||||
* @deprecated Classic updates have been deprecated.
|
||||
*/
|
||||
updated: Scalars['DateTime']['output'];
|
||||
/** EAS updates owned by an app */
|
||||
updates: Array<Update>;
|
||||
@@ -1398,6 +1628,7 @@ export type AppChannelsConnection = {
|
||||
|
||||
export type AppDataInput = {
|
||||
id: Scalars['ID']['input'];
|
||||
internalDistributionBuildPrivacy?: InputMaybe<AppInternalDistributionBuildPrivacy>;
|
||||
privacy?: InputMaybe<Scalars['String']['input']>;
|
||||
};
|
||||
|
||||
@@ -1444,10 +1675,17 @@ export type AppInsightsUniqueUsersByPlatformOverTimeArgs = {
|
||||
timespan: InsightsTimespan;
|
||||
};
|
||||
|
||||
export enum AppInternalDistributionBuildPrivacy {
|
||||
Private = 'PRIVATE',
|
||||
Public = 'PUBLIC'
|
||||
}
|
||||
|
||||
export type AppMutation = {
|
||||
__typename?: 'AppMutation';
|
||||
/** Create an unpublished app */
|
||||
createApp: App;
|
||||
/** Create an unpublished app and GitHub repository if user desire to */
|
||||
createAppAndGithubRepository: CreateAppAndGithubRepositoryResponse;
|
||||
/** @deprecated No longer supported */
|
||||
grantAccess?: Maybe<App>;
|
||||
/** Set display info for app */
|
||||
@@ -1462,6 +1700,11 @@ export type AppMutationCreateAppArgs = {
|
||||
};
|
||||
|
||||
|
||||
export type AppMutationCreateAppAndGithubRepositoryArgs = {
|
||||
appInput: AppWithGithubRepositoryInput;
|
||||
};
|
||||
|
||||
|
||||
export type AppMutationGrantAccessArgs = {
|
||||
accessLevel?: InputMaybe<Scalars['String']['input']>;
|
||||
toUser: Scalars['ID']['input'];
|
||||
@@ -1678,6 +1921,14 @@ export type AppVersionMutationCreateAppVersionArgs = {
|
||||
appVersionInput: AppVersionInput;
|
||||
};
|
||||
|
||||
export type AppWithGithubRepositoryInput = {
|
||||
accountId: Scalars['ID']['input'];
|
||||
appInfo?: InputMaybe<AppInfoInput>;
|
||||
installationIdentifier?: InputMaybe<Scalars['String']['input']>;
|
||||
privacy: AppPrivacy;
|
||||
projectName: Scalars['String']['input'];
|
||||
};
|
||||
|
||||
export type AppleAppIdentifier = {
|
||||
__typename?: 'AppleAppIdentifier';
|
||||
account: Account;
|
||||
@@ -1709,7 +1960,7 @@ export type AppleDevice = {
|
||||
__typename?: 'AppleDevice';
|
||||
account: Account;
|
||||
appleTeam: AppleTeam;
|
||||
createdAt?: Maybe<Scalars['DateTime']['output']>;
|
||||
createdAt: Scalars['DateTime']['output'];
|
||||
deviceClass?: Maybe<AppleDeviceClass>;
|
||||
enabled?: Maybe<Scalars['Boolean']['output']>;
|
||||
id: Scalars['ID']['output'];
|
||||
@@ -1722,9 +1973,16 @@ export type AppleDevice = {
|
||||
export enum AppleDeviceClass {
|
||||
Ipad = 'IPAD',
|
||||
Iphone = 'IPHONE',
|
||||
Mac = 'MAC'
|
||||
Mac = 'MAC',
|
||||
Unknown = 'UNKNOWN'
|
||||
}
|
||||
|
||||
export type AppleDeviceFilterInput = {
|
||||
appleTeamIdentifier?: InputMaybe<Scalars['String']['input']>;
|
||||
class?: InputMaybe<AppleDeviceClass>;
|
||||
identifier?: InputMaybe<Scalars['String']['input']>;
|
||||
};
|
||||
|
||||
export type AppleDeviceInput = {
|
||||
appleTeamId: Scalars['ID']['input'];
|
||||
deviceClass?: InputMaybe<AppleDeviceClass>;
|
||||
@@ -1961,6 +2219,10 @@ export type AppleTeamAppleProvisioningProfilesArgs = {
|
||||
appleAppIdentifierId?: InputMaybe<Scalars['ID']['input']>;
|
||||
};
|
||||
|
||||
export type AppleTeamFilterInput = {
|
||||
appleTeamIdentifier?: InputMaybe<Scalars['String']['input']>;
|
||||
};
|
||||
|
||||
export type AppleTeamInput = {
|
||||
appleTeamIdentifier: Scalars['String']['input'];
|
||||
appleTeamName?: InputMaybe<Scalars['String']['input']>;
|
||||
@@ -2039,6 +2301,39 @@ export type AssetQueryMetadataArgs = {
|
||||
storageKeys: Array<Scalars['String']['input']>;
|
||||
};
|
||||
|
||||
export type AuditLog = {
|
||||
__typename?: 'AuditLog';
|
||||
account?: Maybe<Account>;
|
||||
actor?: Maybe<Actor>;
|
||||
createdAt: Scalars['DateTime']['output'];
|
||||
id: Scalars['ID']['output'];
|
||||
targetEntityId: Scalars['ID']['output'];
|
||||
targetEntityMutationType: TargetEntityMutationType;
|
||||
targetEntityTableName: Scalars['String']['output'];
|
||||
targetEntityTypeName: Scalars['String']['output'];
|
||||
websiteMessage: Scalars['String']['output'];
|
||||
};
|
||||
|
||||
export type AuditLogQuery = {
|
||||
__typename?: 'AuditLogQuery';
|
||||
/** Query Audit Logs by account ID */
|
||||
byAccountId: Array<AuditLog>;
|
||||
/** Query an Audit Log by ID */
|
||||
byId: AuditLog;
|
||||
};
|
||||
|
||||
|
||||
export type AuditLogQueryByAccountIdArgs = {
|
||||
accountId: Scalars['ID']['input'];
|
||||
limit: Scalars['Int']['input'];
|
||||
offset: Scalars['Int']['input'];
|
||||
};
|
||||
|
||||
|
||||
export type AuditLogQueryByIdArgs = {
|
||||
auditLogId: Scalars['ID']['input'];
|
||||
};
|
||||
|
||||
export enum AuthProtocolType {
|
||||
Oidc = 'OIDC'
|
||||
}
|
||||
@@ -2110,6 +2405,7 @@ export type Build = ActivityTimelineProjectActivity & BuildOrBuildJob & {
|
||||
actor?: Maybe<Actor>;
|
||||
app: App;
|
||||
appBuildVersion?: Maybe<Scalars['String']['output']>;
|
||||
appIdentifier?: Maybe<Scalars['String']['output']>;
|
||||
appVersion?: Maybe<Scalars['String']['output']>;
|
||||
artifacts?: Maybe<BuildArtifacts>;
|
||||
buildMode?: Maybe<BuildMode>;
|
||||
@@ -2151,7 +2447,9 @@ export type Build = ActivityTimelineProjectActivity & BuildOrBuildJob & {
|
||||
parentBuild?: Maybe<Build>;
|
||||
platform: AppPlatform;
|
||||
priority: BuildPriority;
|
||||
/** @deprecated Use app field instead */
|
||||
project: Project;
|
||||
projectMetadataFileUrl?: Maybe<Scalars['String']['output']>;
|
||||
projectRootDirectory?: Maybe<Scalars['String']['output']>;
|
||||
provisioningStartedAt?: Maybe<Scalars['DateTime']['output']>;
|
||||
/** Queue position is 1-indexed */
|
||||
@@ -2315,6 +2613,7 @@ export type BuildFilterInput = {
|
||||
distributions?: InputMaybe<Array<DistributionType>>;
|
||||
platforms?: InputMaybe<Array<AppPlatform>>;
|
||||
releaseChannel?: InputMaybe<Scalars['String']['input']>;
|
||||
runtimeVersion?: InputMaybe<Scalars['String']['input']>;
|
||||
simulator?: InputMaybe<Scalars['Boolean']['input']>;
|
||||
};
|
||||
|
||||
@@ -2793,6 +3092,12 @@ export type CreateAndroidSubmissionInput = {
|
||||
submittedBuildId?: InputMaybe<Scalars['ID']['input']>;
|
||||
};
|
||||
|
||||
export type CreateAppAndGithubRepositoryResponse = {
|
||||
__typename?: 'CreateAppAndGithubRepositoryResponse';
|
||||
app: App;
|
||||
cloneUrl?: Maybe<Scalars['String']['output']>;
|
||||
};
|
||||
|
||||
export type CreateBuildResult = {
|
||||
__typename?: 'CreateBuildResult';
|
||||
build: Build;
|
||||
@@ -3286,7 +3591,6 @@ export enum GitHubAppEnvironment {
|
||||
|
||||
export type GitHubAppInstallation = {
|
||||
__typename?: 'GitHubAppInstallation';
|
||||
accessibleRepositories: GitHubRepositoryPaginationResult;
|
||||
account: Account;
|
||||
actor?: Maybe<Actor>;
|
||||
id: Scalars['ID']['output'];
|
||||
@@ -3294,12 +3598,6 @@ export type GitHubAppInstallation = {
|
||||
metadata: GitHubAppInstallationMetadata;
|
||||
};
|
||||
|
||||
|
||||
export type GitHubAppInstallationAccessibleRepositoriesArgs = {
|
||||
page?: InputMaybe<Scalars['Int']['input']>;
|
||||
perPage?: InputMaybe<Scalars['Int']['input']>;
|
||||
};
|
||||
|
||||
export type GitHubAppInstallationAccessibleRepository = {
|
||||
__typename?: 'GitHubAppInstallationAccessibleRepository';
|
||||
defaultBranch?: Maybe<Scalars['String']['output']>;
|
||||
@@ -3361,8 +3659,6 @@ export type GitHubAppQuery = {
|
||||
environment: GitHubAppEnvironment;
|
||||
installation: GitHubAppInstallation;
|
||||
name: Scalars['String']['output'];
|
||||
/** @deprecated */
|
||||
searchRepositories: GitHubRepositoryPaginationResult;
|
||||
};
|
||||
|
||||
|
||||
@@ -3370,18 +3666,14 @@ export type GitHubAppQueryInstallationArgs = {
|
||||
id: Scalars['ID']['input'];
|
||||
};
|
||||
|
||||
|
||||
export type GitHubAppQuerySearchRepositoriesArgs = {
|
||||
githubAppInstallationId: Scalars['ID']['input'];
|
||||
query: Scalars['String']['input'];
|
||||
};
|
||||
|
||||
export type GitHubBuildInput = {
|
||||
appId: Scalars['ID']['input'];
|
||||
autoSubmit?: InputMaybe<Scalars['Boolean']['input']>;
|
||||
baseDirectory?: InputMaybe<Scalars['String']['input']>;
|
||||
buildProfile: Scalars['String']['input'];
|
||||
gitRef: Scalars['String']['input'];
|
||||
platform: AppPlatform;
|
||||
submitProfile?: InputMaybe<Scalars['String']['input']>;
|
||||
};
|
||||
|
||||
export type GitHubBuildTrigger = {
|
||||
@@ -3445,6 +3737,7 @@ export enum GitHubBuildTriggerType {
|
||||
export type GitHubRepository = {
|
||||
__typename?: 'GitHubRepository';
|
||||
app: App;
|
||||
createdAt: Scalars['DateTime']['output'];
|
||||
githubAppInstallation: GitHubAppInstallation;
|
||||
githubRepositoryIdentifier: Scalars['Int']['output'];
|
||||
githubRepositoryUrl?: Maybe<Scalars['String']['output']>;
|
||||
@@ -3843,6 +4136,7 @@ export type IosJobInput = {
|
||||
/** @deprecated */
|
||||
distribution?: InputMaybe<DistributionType>;
|
||||
experimental?: InputMaybe<Scalars['JSONObject']['input']>;
|
||||
loggerLevel?: InputMaybe<WorkerLoggerLevel>;
|
||||
mode?: InputMaybe<BuildMode>;
|
||||
projectArchive: ProjectArchiveSourceInput;
|
||||
projectRootDirectory: Scalars['String']['input'];
|
||||
@@ -3868,10 +4162,12 @@ export type IosJobOverridesInput = {
|
||||
buildType?: InputMaybe<IosBuildType>;
|
||||
builderEnvironment?: InputMaybe<IosBuilderEnvironmentInput>;
|
||||
cache?: InputMaybe<BuildCacheInput>;
|
||||
customBuildConfig?: InputMaybe<CustomBuildConfigInput>;
|
||||
developmentClient?: InputMaybe<Scalars['Boolean']['input']>;
|
||||
/** @deprecated */
|
||||
distribution?: InputMaybe<DistributionType>;
|
||||
experimental?: InputMaybe<Scalars['JSONObject']['input']>;
|
||||
loggerLevel?: InputMaybe<WorkerLoggerLevel>;
|
||||
mode?: InputMaybe<BuildMode>;
|
||||
releaseChannel?: InputMaybe<Scalars['String']['input']>;
|
||||
resign?: InputMaybe<BuildResignInput>;
|
||||
@@ -3924,6 +4220,7 @@ export type IosSubmissionConfigInput = {
|
||||
ascApiKey?: InputMaybe<AscApiKeyInput>;
|
||||
ascApiKeyId?: InputMaybe<Scalars['String']['input']>;
|
||||
ascAppIdentifier: Scalars['String']['input'];
|
||||
isVerboseFastlaneEnabled?: InputMaybe<Scalars['Boolean']['input']>;
|
||||
};
|
||||
|
||||
export type KeystoreGenerationUrl = {
|
||||
@@ -3963,7 +4260,8 @@ export type LineDataset = {
|
||||
};
|
||||
|
||||
export enum MailchimpAudience {
|
||||
ExpoDevelopers = 'EXPO_DEVELOPERS'
|
||||
ExpoDevelopers = 'EXPO_DEVELOPERS',
|
||||
ExpoDeveloperOnboarding = 'EXPO_DEVELOPER_ONBOARDING'
|
||||
}
|
||||
|
||||
export enum MailchimpTag {
|
||||
@@ -4007,6 +4305,7 @@ export type MeMutation = {
|
||||
regenerateSecondFactorBackupCodes: SecondFactorRegenerateBackupCodesResult;
|
||||
/** Send SMS OTP to a second factor device for use during device setup or during change confirmation */
|
||||
sendSMSOTPToSecondFactorDevice: SecondFactorBooleanResult;
|
||||
setPreferences: UserPreferences;
|
||||
/** Set the user's primary second factor device */
|
||||
setPrimarySecondFactorDevice: SecondFactorBooleanResult;
|
||||
/** Transfer project to a different Account */
|
||||
@@ -4085,6 +4384,11 @@ export type MeMutationSendSmsotpToSecondFactorDeviceArgs = {
|
||||
};
|
||||
|
||||
|
||||
export type MeMutationSetPreferencesArgs = {
|
||||
preferences: UserPreferencesInput;
|
||||
};
|
||||
|
||||
|
||||
export type MeMutationSetPrimarySecondFactorDeviceArgs = {
|
||||
userSecondFactorDeviceId: Scalars['ID']['input'];
|
||||
};
|
||||
@@ -4285,6 +4589,7 @@ export type Project = {
|
||||
export type ProjectArchiveSourceInput = {
|
||||
bucketKey?: InputMaybe<Scalars['String']['input']>;
|
||||
gitRef?: InputMaybe<Scalars['String']['input']>;
|
||||
metadataLocation?: InputMaybe<Scalars['String']['input']>;
|
||||
repositoryUrl?: InputMaybe<Scalars['String']['input']>;
|
||||
type: ProjectArchiveSourceType;
|
||||
url?: InputMaybe<Scalars['String']['input']>;
|
||||
@@ -4306,6 +4611,7 @@ export type ProjectPublicData = {
|
||||
|
||||
export type ProjectQuery = {
|
||||
__typename?: 'ProjectQuery';
|
||||
/** @deprecated Snacks and apps should be queried separately */
|
||||
byAccountNameAndSlug: Project;
|
||||
/** @deprecated No longer supported */
|
||||
byPaths: Array<Maybe<Project>>;
|
||||
@@ -4576,6 +4882,8 @@ export type RootQuery = {
|
||||
/** Top-level query object for querying Apple Teams. */
|
||||
appleTeam: AppleTeamQuery;
|
||||
asset: AssetQuery;
|
||||
/** Top-level query object for querying Audit Logs. */
|
||||
auditLogs: AuditLogQuery;
|
||||
backgroundJobReceipt: BackgroundJobReceiptQuery;
|
||||
/** Top-level query object for querying annotations. */
|
||||
buildAnnotations: BuildAnnotationsQuery;
|
||||
@@ -4605,6 +4913,7 @@ export type RootQuery = {
|
||||
* this is the appropriate top-level query object
|
||||
*/
|
||||
meUserActor?: Maybe<UserActor>;
|
||||
/** @deprecated Snacks and apps should be queried separately */
|
||||
project: ProjectQuery;
|
||||
snack: SnackQuery;
|
||||
/** Top-level query object for querying Expo status page services. */
|
||||
@@ -4733,6 +5042,7 @@ export type SsoUser = Actor & UserActor & {
|
||||
location?: Maybe<Scalars['String']['output']>;
|
||||
notificationSubscriptions: Array<NotificationSubscription>;
|
||||
pinnedApps: Array<App>;
|
||||
preferences: UserPreferences;
|
||||
/** Associated accounts */
|
||||
primaryAccount: Account;
|
||||
profilePhoto: Scalars['String']['output'];
|
||||
@@ -5034,6 +5344,8 @@ export type Submission = ActivityTimelineProjectActivity & {
|
||||
id: Scalars['ID']['output'];
|
||||
initiatingActor?: Maybe<Actor>;
|
||||
iosConfig?: Maybe<IosSubmissionConfig>;
|
||||
logFiles: Array<Scalars['String']['output']>;
|
||||
/** @deprecated Use logFiles instead */
|
||||
logsUrl?: Maybe<Scalars['String']['output']>;
|
||||
/** Retry time starts after completedAt */
|
||||
maxRetryTimeMinutes: Scalars['Int']['output'];
|
||||
@@ -5171,6 +5483,12 @@ export type SubscriptionDetailsPlanEnablementArgs = {
|
||||
serviceMetric: EasServiceMetric;
|
||||
};
|
||||
|
||||
export enum TargetEntityMutationType {
|
||||
Create = 'CREATE',
|
||||
Delete = 'DELETE',
|
||||
Update = 'UPDATE'
|
||||
}
|
||||
|
||||
export type TestNotificationMetadata = {
|
||||
__typename?: 'TestNotificationMetadata';
|
||||
message: Scalars['String']['output'];
|
||||
@@ -5215,6 +5533,7 @@ export type Update = ActivityTimelineProjectActivity & {
|
||||
branchId: Scalars['ID']['output'];
|
||||
codeSigningInfo?: Maybe<CodeSigningInfo>;
|
||||
createdAt: Scalars['DateTime']['output'];
|
||||
expoGoSDKVersion?: Maybe<Scalars['String']['output']>;
|
||||
gitCommitHash?: Maybe<Scalars['String']['output']>;
|
||||
group: Scalars['String']['output'];
|
||||
id: Scalars['ID']['output'];
|
||||
@@ -5238,6 +5557,7 @@ export type UpdateBranch = {
|
||||
appId: Scalars['ID']['output'];
|
||||
createdAt: Scalars['DateTime']['output'];
|
||||
id: Scalars['ID']['output'];
|
||||
latestActivity: Scalars['DateTime']['output'];
|
||||
name: Scalars['String']['output'];
|
||||
runtimes: RuntimesConnection;
|
||||
updateGroups: Array<Array<Update>>;
|
||||
@@ -5435,6 +5755,7 @@ export type UploadSessionCreateUploadSessionArgs = {
|
||||
};
|
||||
|
||||
export enum UploadSessionType {
|
||||
EasBuildGcsProjectMetadata = 'EAS_BUILD_GCS_PROJECT_METADATA',
|
||||
EasBuildGcsProjectSources = 'EAS_BUILD_GCS_PROJECT_SOURCES',
|
||||
/** @deprecated Use EAS_BUILD_GCS_PROJECT_SOURCES instead. */
|
||||
EasBuildProjectSources = 'EAS_BUILD_PROJECT_SOURCES',
|
||||
@@ -5523,6 +5844,7 @@ export type User = Actor & UserActor & {
|
||||
/** Pending UserInvitations for this user. Only resolves for the viewer. */
|
||||
pendingUserInvitations: Array<UserInvitation>;
|
||||
pinnedApps: Array<App>;
|
||||
preferences: UserPreferences;
|
||||
/** Associated accounts */
|
||||
primaryAccount: Account;
|
||||
profilePhoto: Scalars['String']['output'];
|
||||
@@ -5626,6 +5948,7 @@ export type UserActor = {
|
||||
location?: Maybe<Scalars['String']['output']>;
|
||||
notificationSubscriptions: Array<NotificationSubscription>;
|
||||
pinnedApps: Array<App>;
|
||||
preferences: UserPreferences;
|
||||
/** Associated accounts */
|
||||
primaryAccount: Account;
|
||||
profilePhoto: Scalars['String']['output'];
|
||||
@@ -5882,6 +6205,15 @@ export type UserPermission = {
|
||||
userActor?: Maybe<UserActor>;
|
||||
};
|
||||
|
||||
export type UserPreferences = {
|
||||
__typename?: 'UserPreferences';
|
||||
selectedAccountName?: Maybe<Scalars['String']['output']>;
|
||||
};
|
||||
|
||||
export type UserPreferencesInput = {
|
||||
selectedAccountName?: InputMaybe<Scalars['String']['input']>;
|
||||
};
|
||||
|
||||
export type UserQuery = {
|
||||
__typename?: 'UserQuery';
|
||||
/**
|
||||
@@ -6010,6 +6342,15 @@ export type WebsiteNotificationsConnection = {
|
||||
pageInfo: PageInfo;
|
||||
};
|
||||
|
||||
export enum WorkerLoggerLevel {
|
||||
Debug = 'DEBUG',
|
||||
Error = 'ERROR',
|
||||
Fatal = 'FATAL',
|
||||
Info = 'INFO',
|
||||
Trace = 'TRACE',
|
||||
Warn = 'WARN'
|
||||
}
|
||||
|
||||
export type DeleteAndroidAppBuildCredentialsResult = {
|
||||
__typename?: 'deleteAndroidAppBuildCredentialsResult';
|
||||
id: Scalars['ID']['output'];
|
||||
@@ -6259,7 +6600,7 @@ export type CreateAppleDeviceMutationVariables = Exact<{
|
||||
}>;
|
||||
|
||||
|
||||
export type CreateAppleDeviceMutation = { __typename?: 'RootMutation', appleDevice: { __typename?: 'AppleDeviceMutation', createAppleDevice: { __typename?: 'AppleDevice', id: string, identifier: string, name?: string | null, model?: string | null, deviceClass?: AppleDeviceClass | null, createdAt?: any | null } } };
|
||||
export type CreateAppleDeviceMutation = { __typename?: 'RootMutation', appleDevice: { __typename?: 'AppleDeviceMutation', createAppleDevice: { __typename?: 'AppleDevice', id: string, identifier: string, name?: string | null, model?: string | null, deviceClass?: AppleDeviceClass | null, createdAt: any } } };
|
||||
|
||||
export type DeleteAppleDeviceMutationVariables = Exact<{
|
||||
deviceId: Scalars['ID']['input'];
|
||||
@@ -6274,7 +6615,7 @@ export type UpdateAppleDeviceMutationVariables = Exact<{
|
||||
}>;
|
||||
|
||||
|
||||
export type UpdateAppleDeviceMutation = { __typename?: 'RootMutation', appleDevice: { __typename?: 'AppleDeviceMutation', updateAppleDevice: { __typename?: 'AppleDevice', id: string, identifier: string, name?: string | null, model?: string | null, deviceClass?: AppleDeviceClass | null, createdAt?: any | null } } };
|
||||
export type UpdateAppleDeviceMutation = { __typename?: 'RootMutation', appleDevice: { __typename?: 'AppleDeviceMutation', updateAppleDevice: { __typename?: 'AppleDevice', id: string, identifier: string, name?: string | null, model?: string | null, deviceClass?: AppleDeviceClass | null, createdAt: any } } };
|
||||
|
||||
export type CreateAppleDeviceRegistrationRequestMutationVariables = Exact<{
|
||||
appleTeamId: Scalars['ID']['input'];
|
||||
@@ -6306,7 +6647,7 @@ export type CreateAppleProvisioningProfileMutationVariables = Exact<{
|
||||
}>;
|
||||
|
||||
|
||||
export type CreateAppleProvisioningProfileMutation = { __typename?: 'RootMutation', appleProvisioningProfile: { __typename?: 'AppleProvisioningProfileMutation', createAppleProvisioningProfile: { __typename?: 'AppleProvisioningProfile', id: string, expiration: any, developerPortalIdentifier?: string | null, provisioningProfile?: string | null, updatedAt: any, status: string, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, appleDevices: Array<{ __typename?: 'AppleDevice', id: string, identifier: string, name?: string | null, model?: string | null, deviceClass?: AppleDeviceClass | null, createdAt?: any | null }> } } };
|
||||
export type CreateAppleProvisioningProfileMutation = { __typename?: 'RootMutation', appleProvisioningProfile: { __typename?: 'AppleProvisioningProfileMutation', createAppleProvisioningProfile: { __typename?: 'AppleProvisioningProfile', id: string, expiration: any, developerPortalIdentifier?: string | null, provisioningProfile?: string | null, updatedAt: any, status: string, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, appleDevices: Array<{ __typename?: 'AppleDevice', id: string, identifier: string, name?: string | null, model?: string | null, deviceClass?: AppleDeviceClass | null, createdAt: any }> } } };
|
||||
|
||||
export type UpdateAppleProvisioningProfileMutationVariables = Exact<{
|
||||
appleProvisioningProfileId: Scalars['ID']['input'];
|
||||
@@ -6314,7 +6655,7 @@ export type UpdateAppleProvisioningProfileMutationVariables = Exact<{
|
||||
}>;
|
||||
|
||||
|
||||
export type UpdateAppleProvisioningProfileMutation = { __typename?: 'RootMutation', appleProvisioningProfile: { __typename?: 'AppleProvisioningProfileMutation', updateAppleProvisioningProfile: { __typename?: 'AppleProvisioningProfile', id: string, expiration: any, developerPortalIdentifier?: string | null, provisioningProfile?: string | null, updatedAt: any, status: string, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, appleDevices: Array<{ __typename?: 'AppleDevice', id: string, identifier: string, name?: string | null, model?: string | null, deviceClass?: AppleDeviceClass | null, createdAt?: any | null }> } } };
|
||||
export type UpdateAppleProvisioningProfileMutation = { __typename?: 'RootMutation', appleProvisioningProfile: { __typename?: 'AppleProvisioningProfileMutation', updateAppleProvisioningProfile: { __typename?: 'AppleProvisioningProfile', id: string, expiration: any, developerPortalIdentifier?: string | null, provisioningProfile?: string | null, updatedAt: any, status: string, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, appleDevices: Array<{ __typename?: 'AppleDevice', id: string, identifier: string, name?: string | null, model?: string | null, deviceClass?: AppleDeviceClass | null, createdAt: any }> } } };
|
||||
|
||||
export type DeleteAppleProvisioningProfilesMutationVariables = Exact<{
|
||||
appleProvisioningProfileIds: Array<Scalars['ID']['input']> | Scalars['ID']['input'];
|
||||
@@ -6352,7 +6693,7 @@ export type CreateIosAppBuildCredentialsMutationVariables = Exact<{
|
||||
}>;
|
||||
|
||||
|
||||
export type CreateIosAppBuildCredentialsMutation = { __typename?: 'RootMutation', iosAppBuildCredentials: { __typename?: 'IosAppBuildCredentialsMutation', createIosAppBuildCredentials: { __typename?: 'IosAppBuildCredentials', id: string, iosDistributionType: IosDistributionType, distributionCertificate?: { __typename?: 'AppleDistributionCertificate', id: string, certificateP12?: string | null, certificatePassword?: string | null, serialNumber: string, developerPortalIdentifier?: string | null, validityNotBefore: any, validityNotAfter: any, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, iosAppBuildCredentialsList: Array<{ __typename?: 'IosAppBuildCredentials', id: string, iosAppCredentials: { __typename?: 'IosAppCredentials', id: string, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string } }, provisioningProfile?: { __typename?: 'AppleProvisioningProfile', id: string, developerPortalIdentifier?: string | null } | null }> } | null, provisioningProfile?: { __typename?: 'AppleProvisioningProfile', id: string, expiration: any, developerPortalIdentifier?: string | null, provisioningProfile?: string | null, updatedAt: any, status: string, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, appleDevices: Array<{ __typename?: 'AppleDevice', id: string, identifier: string, name?: string | null, model?: string | null, deviceClass?: AppleDeviceClass | null, createdAt?: any | null }> } | null } } };
|
||||
export type CreateIosAppBuildCredentialsMutation = { __typename?: 'RootMutation', iosAppBuildCredentials: { __typename?: 'IosAppBuildCredentialsMutation', createIosAppBuildCredentials: { __typename?: 'IosAppBuildCredentials', id: string, iosDistributionType: IosDistributionType, distributionCertificate?: { __typename?: 'AppleDistributionCertificate', id: string, certificateP12?: string | null, certificatePassword?: string | null, serialNumber: string, developerPortalIdentifier?: string | null, validityNotBefore: any, validityNotAfter: any, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, iosAppBuildCredentialsList: Array<{ __typename?: 'IosAppBuildCredentials', id: string, iosAppCredentials: { __typename?: 'IosAppCredentials', id: string, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string } }, provisioningProfile?: { __typename?: 'AppleProvisioningProfile', id: string, developerPortalIdentifier?: string | null } | null }> } | null, provisioningProfile?: { __typename?: 'AppleProvisioningProfile', id: string, expiration: any, developerPortalIdentifier?: string | null, provisioningProfile?: string | null, updatedAt: any, status: string, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, appleDevices: Array<{ __typename?: 'AppleDevice', id: string, identifier: string, name?: string | null, model?: string | null, deviceClass?: AppleDeviceClass | null, createdAt: any }> } | null } } };
|
||||
|
||||
export type SetDistributionCertificateMutationVariables = Exact<{
|
||||
iosAppBuildCredentialsId: Scalars['ID']['input'];
|
||||
@@ -6360,7 +6701,7 @@ export type SetDistributionCertificateMutationVariables = Exact<{
|
||||
}>;
|
||||
|
||||
|
||||
export type SetDistributionCertificateMutation = { __typename?: 'RootMutation', iosAppBuildCredentials: { __typename?: 'IosAppBuildCredentialsMutation', setDistributionCertificate: { __typename?: 'IosAppBuildCredentials', id: string, iosDistributionType: IosDistributionType, distributionCertificate?: { __typename?: 'AppleDistributionCertificate', id: string, certificateP12?: string | null, certificatePassword?: string | null, serialNumber: string, developerPortalIdentifier?: string | null, validityNotBefore: any, validityNotAfter: any, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, iosAppBuildCredentialsList: Array<{ __typename?: 'IosAppBuildCredentials', id: string, iosAppCredentials: { __typename?: 'IosAppCredentials', id: string, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string } }, provisioningProfile?: { __typename?: 'AppleProvisioningProfile', id: string, developerPortalIdentifier?: string | null } | null }> } | null, provisioningProfile?: { __typename?: 'AppleProvisioningProfile', id: string, expiration: any, developerPortalIdentifier?: string | null, provisioningProfile?: string | null, updatedAt: any, status: string, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, appleDevices: Array<{ __typename?: 'AppleDevice', id: string, identifier: string, name?: string | null, model?: string | null, deviceClass?: AppleDeviceClass | null, createdAt?: any | null }> } | null } } };
|
||||
export type SetDistributionCertificateMutation = { __typename?: 'RootMutation', iosAppBuildCredentials: { __typename?: 'IosAppBuildCredentialsMutation', setDistributionCertificate: { __typename?: 'IosAppBuildCredentials', id: string, iosDistributionType: IosDistributionType, distributionCertificate?: { __typename?: 'AppleDistributionCertificate', id: string, certificateP12?: string | null, certificatePassword?: string | null, serialNumber: string, developerPortalIdentifier?: string | null, validityNotBefore: any, validityNotAfter: any, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, iosAppBuildCredentialsList: Array<{ __typename?: 'IosAppBuildCredentials', id: string, iosAppCredentials: { __typename?: 'IosAppCredentials', id: string, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string } }, provisioningProfile?: { __typename?: 'AppleProvisioningProfile', id: string, developerPortalIdentifier?: string | null } | null }> } | null, provisioningProfile?: { __typename?: 'AppleProvisioningProfile', id: string, expiration: any, developerPortalIdentifier?: string | null, provisioningProfile?: string | null, updatedAt: any, status: string, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, appleDevices: Array<{ __typename?: 'AppleDevice', id: string, identifier: string, name?: string | null, model?: string | null, deviceClass?: AppleDeviceClass | null, createdAt: any }> } | null } } };
|
||||
|
||||
export type SetProvisioningProfileMutationVariables = Exact<{
|
||||
iosAppBuildCredentialsId: Scalars['ID']['input'];
|
||||
@@ -6368,7 +6709,7 @@ export type SetProvisioningProfileMutationVariables = Exact<{
|
||||
}>;
|
||||
|
||||
|
||||
export type SetProvisioningProfileMutation = { __typename?: 'RootMutation', iosAppBuildCredentials: { __typename?: 'IosAppBuildCredentialsMutation', setProvisioningProfile: { __typename?: 'IosAppBuildCredentials', id: string, iosDistributionType: IosDistributionType, distributionCertificate?: { __typename?: 'AppleDistributionCertificate', id: string, certificateP12?: string | null, certificatePassword?: string | null, serialNumber: string, developerPortalIdentifier?: string | null, validityNotBefore: any, validityNotAfter: any, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, iosAppBuildCredentialsList: Array<{ __typename?: 'IosAppBuildCredentials', id: string, iosAppCredentials: { __typename?: 'IosAppCredentials', id: string, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string } }, provisioningProfile?: { __typename?: 'AppleProvisioningProfile', id: string, developerPortalIdentifier?: string | null } | null }> } | null, provisioningProfile?: { __typename?: 'AppleProvisioningProfile', id: string, expiration: any, developerPortalIdentifier?: string | null, provisioningProfile?: string | null, updatedAt: any, status: string, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, appleDevices: Array<{ __typename?: 'AppleDevice', id: string, identifier: string, name?: string | null, model?: string | null, deviceClass?: AppleDeviceClass | null, createdAt?: any | null }> } | null } } };
|
||||
export type SetProvisioningProfileMutation = { __typename?: 'RootMutation', iosAppBuildCredentials: { __typename?: 'IosAppBuildCredentialsMutation', setProvisioningProfile: { __typename?: 'IosAppBuildCredentials', id: string, iosDistributionType: IosDistributionType, distributionCertificate?: { __typename?: 'AppleDistributionCertificate', id: string, certificateP12?: string | null, certificatePassword?: string | null, serialNumber: string, developerPortalIdentifier?: string | null, validityNotBefore: any, validityNotAfter: any, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, iosAppBuildCredentialsList: Array<{ __typename?: 'IosAppBuildCredentials', id: string, iosAppCredentials: { __typename?: 'IosAppCredentials', id: string, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string } }, provisioningProfile?: { __typename?: 'AppleProvisioningProfile', id: string, developerPortalIdentifier?: string | null } | null }> } | null, provisioningProfile?: { __typename?: 'AppleProvisioningProfile', id: string, expiration: any, developerPortalIdentifier?: string | null, provisioningProfile?: string | null, updatedAt: any, status: string, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, appleDevices: Array<{ __typename?: 'AppleDevice', id: string, identifier: string, name?: string | null, model?: string | null, deviceClass?: AppleDeviceClass | null, createdAt: any }> } | null } } };
|
||||
|
||||
export type CreateIosAppCredentialsMutationVariables = Exact<{
|
||||
iosAppCredentialsInput: IosAppCredentialsInput;
|
||||
@@ -6377,7 +6718,7 @@ export type CreateIosAppCredentialsMutationVariables = Exact<{
|
||||
}>;
|
||||
|
||||
|
||||
export type CreateIosAppCredentialsMutation = { __typename?: 'RootMutation', iosAppCredentials: { __typename?: 'IosAppCredentialsMutation', createIosAppCredentials: { __typename?: 'IosAppCredentials', id: string, iosAppBuildCredentialsList: Array<{ __typename?: 'IosAppBuildCredentials', id: string, iosDistributionType: IosDistributionType, distributionCertificate?: { __typename?: 'AppleDistributionCertificate', id: string, certificateP12?: string | null, certificatePassword?: string | null, serialNumber: string, developerPortalIdentifier?: string | null, validityNotBefore: any, validityNotAfter: any, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, iosAppBuildCredentialsList: Array<{ __typename?: 'IosAppBuildCredentials', id: string, iosAppCredentials: { __typename?: 'IosAppCredentials', id: string, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string } }, provisioningProfile?: { __typename?: 'AppleProvisioningProfile', id: string, developerPortalIdentifier?: string | null } | null }> } | null, provisioningProfile?: { __typename?: 'AppleProvisioningProfile', id: string, expiration: any, developerPortalIdentifier?: string | null, provisioningProfile?: string | null, updatedAt: any, status: string, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, appleDevices: Array<{ __typename?: 'AppleDevice', id: string, identifier: string, name?: string | null, model?: string | null, deviceClass?: AppleDeviceClass | null, createdAt?: any | null }> } | null }>, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string }, pushKey?: { __typename?: 'ApplePushKey', id: string, keyIdentifier: string, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, iosAppCredentialsList: Array<{ __typename?: 'IosAppCredentials', id: string, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string } }> } | null, appStoreConnectApiKeyForSubmissions?: { __typename?: 'AppStoreConnectApiKey', id: string, issuerIdentifier: string, keyIdentifier: string, name?: string | null, roles?: Array<AppStoreConnectUserRole> | null, createdAt: any, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null } | null } } };
|
||||
export type CreateIosAppCredentialsMutation = { __typename?: 'RootMutation', iosAppCredentials: { __typename?: 'IosAppCredentialsMutation', createIosAppCredentials: { __typename?: 'IosAppCredentials', id: string, iosAppBuildCredentialsList: Array<{ __typename?: 'IosAppBuildCredentials', id: string, iosDistributionType: IosDistributionType, distributionCertificate?: { __typename?: 'AppleDistributionCertificate', id: string, certificateP12?: string | null, certificatePassword?: string | null, serialNumber: string, developerPortalIdentifier?: string | null, validityNotBefore: any, validityNotAfter: any, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, iosAppBuildCredentialsList: Array<{ __typename?: 'IosAppBuildCredentials', id: string, iosAppCredentials: { __typename?: 'IosAppCredentials', id: string, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string } }, provisioningProfile?: { __typename?: 'AppleProvisioningProfile', id: string, developerPortalIdentifier?: string | null } | null }> } | null, provisioningProfile?: { __typename?: 'AppleProvisioningProfile', id: string, expiration: any, developerPortalIdentifier?: string | null, provisioningProfile?: string | null, updatedAt: any, status: string, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, appleDevices: Array<{ __typename?: 'AppleDevice', id: string, identifier: string, name?: string | null, model?: string | null, deviceClass?: AppleDeviceClass | null, createdAt: any }> } | null }>, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string }, pushKey?: { __typename?: 'ApplePushKey', id: string, keyIdentifier: string, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, iosAppCredentialsList: Array<{ __typename?: 'IosAppCredentials', id: string, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string } }> } | null, appStoreConnectApiKeyForSubmissions?: { __typename?: 'AppStoreConnectApiKey', id: string, issuerIdentifier: string, keyIdentifier: string, name?: string | null, roles?: Array<AppStoreConnectUserRole> | null, createdAt: any, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null } | null } } };
|
||||
|
||||
export type SetPushKeyMutationVariables = Exact<{
|
||||
iosAppCredentialsId: Scalars['ID']['input'];
|
||||
@@ -6385,7 +6726,7 @@ export type SetPushKeyMutationVariables = Exact<{
|
||||
}>;
|
||||
|
||||
|
||||
export type SetPushKeyMutation = { __typename?: 'RootMutation', iosAppCredentials: { __typename?: 'IosAppCredentialsMutation', setPushKey: { __typename?: 'IosAppCredentials', id: string, iosAppBuildCredentialsList: Array<{ __typename?: 'IosAppBuildCredentials', id: string, iosDistributionType: IosDistributionType, distributionCertificate?: { __typename?: 'AppleDistributionCertificate', id: string, certificateP12?: string | null, certificatePassword?: string | null, serialNumber: string, developerPortalIdentifier?: string | null, validityNotBefore: any, validityNotAfter: any, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, iosAppBuildCredentialsList: Array<{ __typename?: 'IosAppBuildCredentials', id: string, iosAppCredentials: { __typename?: 'IosAppCredentials', id: string, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string } }, provisioningProfile?: { __typename?: 'AppleProvisioningProfile', id: string, developerPortalIdentifier?: string | null } | null }> } | null, provisioningProfile?: { __typename?: 'AppleProvisioningProfile', id: string, expiration: any, developerPortalIdentifier?: string | null, provisioningProfile?: string | null, updatedAt: any, status: string, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, appleDevices: Array<{ __typename?: 'AppleDevice', id: string, identifier: string, name?: string | null, model?: string | null, deviceClass?: AppleDeviceClass | null, createdAt?: any | null }> } | null }>, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string }, pushKey?: { __typename?: 'ApplePushKey', id: string, keyIdentifier: string, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, iosAppCredentialsList: Array<{ __typename?: 'IosAppCredentials', id: string, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string } }> } | null, appStoreConnectApiKeyForSubmissions?: { __typename?: 'AppStoreConnectApiKey', id: string, issuerIdentifier: string, keyIdentifier: string, name?: string | null, roles?: Array<AppStoreConnectUserRole> | null, createdAt: any, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null } | null } } };
|
||||
export type SetPushKeyMutation = { __typename?: 'RootMutation', iosAppCredentials: { __typename?: 'IosAppCredentialsMutation', setPushKey: { __typename?: 'IosAppCredentials', id: string, iosAppBuildCredentialsList: Array<{ __typename?: 'IosAppBuildCredentials', id: string, iosDistributionType: IosDistributionType, distributionCertificate?: { __typename?: 'AppleDistributionCertificate', id: string, certificateP12?: string | null, certificatePassword?: string | null, serialNumber: string, developerPortalIdentifier?: string | null, validityNotBefore: any, validityNotAfter: any, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, iosAppBuildCredentialsList: Array<{ __typename?: 'IosAppBuildCredentials', id: string, iosAppCredentials: { __typename?: 'IosAppCredentials', id: string, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string } }, provisioningProfile?: { __typename?: 'AppleProvisioningProfile', id: string, developerPortalIdentifier?: string | null } | null }> } | null, provisioningProfile?: { __typename?: 'AppleProvisioningProfile', id: string, expiration: any, developerPortalIdentifier?: string | null, provisioningProfile?: string | null, updatedAt: any, status: string, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, appleDevices: Array<{ __typename?: 'AppleDevice', id: string, identifier: string, name?: string | null, model?: string | null, deviceClass?: AppleDeviceClass | null, createdAt: any }> } | null }>, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string }, pushKey?: { __typename?: 'ApplePushKey', id: string, keyIdentifier: string, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, iosAppCredentialsList: Array<{ __typename?: 'IosAppCredentials', id: string, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string } }> } | null, appStoreConnectApiKeyForSubmissions?: { __typename?: 'AppStoreConnectApiKey', id: string, issuerIdentifier: string, keyIdentifier: string, name?: string | null, roles?: Array<AppStoreConnectUserRole> | null, createdAt: any, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null } | null } } };
|
||||
|
||||
export type SetAppStoreConnectApiKeyForSubmissionsMutationVariables = Exact<{
|
||||
iosAppCredentialsId: Scalars['ID']['input'];
|
||||
@@ -6393,7 +6734,7 @@ export type SetAppStoreConnectApiKeyForSubmissionsMutationVariables = Exact<{
|
||||
}>;
|
||||
|
||||
|
||||
export type SetAppStoreConnectApiKeyForSubmissionsMutation = { __typename?: 'RootMutation', iosAppCredentials: { __typename?: 'IosAppCredentialsMutation', setAppStoreConnectApiKeyForSubmissions: { __typename?: 'IosAppCredentials', id: string, iosAppBuildCredentialsList: Array<{ __typename?: 'IosAppBuildCredentials', id: string, iosDistributionType: IosDistributionType, distributionCertificate?: { __typename?: 'AppleDistributionCertificate', id: string, certificateP12?: string | null, certificatePassword?: string | null, serialNumber: string, developerPortalIdentifier?: string | null, validityNotBefore: any, validityNotAfter: any, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, iosAppBuildCredentialsList: Array<{ __typename?: 'IosAppBuildCredentials', id: string, iosAppCredentials: { __typename?: 'IosAppCredentials', id: string, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string } }, provisioningProfile?: { __typename?: 'AppleProvisioningProfile', id: string, developerPortalIdentifier?: string | null } | null }> } | null, provisioningProfile?: { __typename?: 'AppleProvisioningProfile', id: string, expiration: any, developerPortalIdentifier?: string | null, provisioningProfile?: string | null, updatedAt: any, status: string, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, appleDevices: Array<{ __typename?: 'AppleDevice', id: string, identifier: string, name?: string | null, model?: string | null, deviceClass?: AppleDeviceClass | null, createdAt?: any | null }> } | null }>, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string }, pushKey?: { __typename?: 'ApplePushKey', id: string, keyIdentifier: string, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, iosAppCredentialsList: Array<{ __typename?: 'IosAppCredentials', id: string, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string } }> } | null, appStoreConnectApiKeyForSubmissions?: { __typename?: 'AppStoreConnectApiKey', id: string, issuerIdentifier: string, keyIdentifier: string, name?: string | null, roles?: Array<AppStoreConnectUserRole> | null, createdAt: any, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null } | null } } };
|
||||
export type SetAppStoreConnectApiKeyForSubmissionsMutation = { __typename?: 'RootMutation', iosAppCredentials: { __typename?: 'IosAppCredentialsMutation', setAppStoreConnectApiKeyForSubmissions: { __typename?: 'IosAppCredentials', id: string, iosAppBuildCredentialsList: Array<{ __typename?: 'IosAppBuildCredentials', id: string, iosDistributionType: IosDistributionType, distributionCertificate?: { __typename?: 'AppleDistributionCertificate', id: string, certificateP12?: string | null, certificatePassword?: string | null, serialNumber: string, developerPortalIdentifier?: string | null, validityNotBefore: any, validityNotAfter: any, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, iosAppBuildCredentialsList: Array<{ __typename?: 'IosAppBuildCredentials', id: string, iosAppCredentials: { __typename?: 'IosAppCredentials', id: string, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string } }, provisioningProfile?: { __typename?: 'AppleProvisioningProfile', id: string, developerPortalIdentifier?: string | null } | null }> } | null, provisioningProfile?: { __typename?: 'AppleProvisioningProfile', id: string, expiration: any, developerPortalIdentifier?: string | null, provisioningProfile?: string | null, updatedAt: any, status: string, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, appleDevices: Array<{ __typename?: 'AppleDevice', id: string, identifier: string, name?: string | null, model?: string | null, deviceClass?: AppleDeviceClass | null, createdAt: any }> } | null }>, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string }, pushKey?: { __typename?: 'ApplePushKey', id: string, keyIdentifier: string, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, iosAppCredentialsList: Array<{ __typename?: 'IosAppCredentials', id: string, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string } }> } | null, appStoreConnectApiKeyForSubmissions?: { __typename?: 'AppStoreConnectApiKey', id: string, issuerIdentifier: string, keyIdentifier: string, name?: string | null, roles?: Array<AppStoreConnectUserRole> | null, createdAt: any, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null } | null } } };
|
||||
|
||||
export type AppStoreConnectApiKeyByAccountQueryVariables = Exact<{
|
||||
accountName: Scalars['String']['input'];
|
||||
@@ -6416,7 +6757,7 @@ export type AppleDevicesByAppleTeamQueryVariables = Exact<{
|
||||
}>;
|
||||
|
||||
|
||||
export type AppleDevicesByAppleTeamQuery = { __typename?: 'RootQuery', appleTeam: { __typename?: 'AppleTeamQuery', byAppleTeamIdentifier?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null, appleDevices: Array<{ __typename?: 'AppleDevice', id: string, identifier: string, name?: string | null, model?: string | null, deviceClass?: AppleDeviceClass | null, createdAt?: any | null, appleTeam: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } }> } | null } };
|
||||
export type AppleDevicesByAppleTeamQuery = { __typename?: 'RootQuery', appleTeam: { __typename?: 'AppleTeamQuery', byAppleTeamIdentifier?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null, appleDevices: Array<{ __typename?: 'AppleDevice', id: string, identifier: string, name?: string | null, model?: string | null, deviceClass?: AppleDeviceClass | null, createdAt: any, appleTeam: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } }> } | null } };
|
||||
|
||||
export type AppleDevicesByTeamIdentifierQueryVariables = Exact<{
|
||||
accountName: Scalars['String']['input'];
|
||||
@@ -6426,7 +6767,7 @@ export type AppleDevicesByTeamIdentifierQueryVariables = Exact<{
|
||||
}>;
|
||||
|
||||
|
||||
export type AppleDevicesByTeamIdentifierQuery = { __typename?: 'RootQuery', account: { __typename?: 'AccountQuery', byName: { __typename?: 'Account', id: string, appleTeams: Array<{ __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null, appleDevices: Array<{ __typename?: 'AppleDevice', id: string, identifier: string, name?: string | null, deviceClass?: AppleDeviceClass | null, enabled?: boolean | null, model?: string | null }> }> } } };
|
||||
export type AppleDevicesByTeamIdentifierQuery = { __typename?: 'RootQuery', account: { __typename?: 'AccountQuery', byName: { __typename?: 'Account', id: string, appleTeams: Array<{ __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null, appleDevices: Array<{ __typename?: 'AppleDevice', id: string, identifier: string, name?: string | null, deviceClass?: AppleDeviceClass | null, enabled?: boolean | null, model?: string | null, createdAt: any }> }> } } };
|
||||
|
||||
export type AppleDevicesByIdentifierQueryVariables = Exact<{
|
||||
accountName: Scalars['String']['input'];
|
||||
@@ -6459,7 +6800,7 @@ export type AppleProvisioningProfilesByAppQueryVariables = Exact<{
|
||||
}>;
|
||||
|
||||
|
||||
export type AppleProvisioningProfilesByAppQuery = { __typename?: 'RootQuery', app: { __typename?: 'AppQuery', byFullName: { __typename?: 'App', id: string, iosAppCredentials: Array<{ __typename?: 'IosAppCredentials', id: string, iosAppBuildCredentialsList: Array<{ __typename?: 'IosAppBuildCredentials', id: string, provisioningProfile?: { __typename?: 'AppleProvisioningProfile', id: string, expiration: any, developerPortalIdentifier?: string | null, provisioningProfile?: string | null, updatedAt: any, status: string, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, appleDevices: Array<{ __typename?: 'AppleDevice', id: string, identifier: string, name?: string | null, model?: string | null, deviceClass?: AppleDeviceClass | null, createdAt?: any | null }>, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string } } | null }> }> } } };
|
||||
export type AppleProvisioningProfilesByAppQuery = { __typename?: 'RootQuery', app: { __typename?: 'AppQuery', byFullName: { __typename?: 'App', id: string, iosAppCredentials: Array<{ __typename?: 'IosAppCredentials', id: string, iosAppBuildCredentialsList: Array<{ __typename?: 'IosAppBuildCredentials', id: string, provisioningProfile?: { __typename?: 'AppleProvisioningProfile', id: string, expiration: any, developerPortalIdentifier?: string | null, provisioningProfile?: string | null, updatedAt: any, status: string, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, appleDevices: Array<{ __typename?: 'AppleDevice', id: string, identifier: string, name?: string | null, model?: string | null, deviceClass?: AppleDeviceClass | null, createdAt: any }>, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string } } | null }> }> } } };
|
||||
|
||||
export type ApplePushKeyByAccountQueryVariables = Exact<{
|
||||
accountName: Scalars['String']['input'];
|
||||
@@ -6492,7 +6833,7 @@ export type IosAppBuildCredentialsByAppleAppIdentiferAndDistributionQueryVariabl
|
||||
}>;
|
||||
|
||||
|
||||
export type IosAppBuildCredentialsByAppleAppIdentiferAndDistributionQuery = { __typename?: 'RootQuery', app: { __typename?: 'AppQuery', byFullName: { __typename?: 'App', id: string, iosAppCredentials: Array<{ __typename?: 'IosAppCredentials', id: string, iosAppBuildCredentialsList: Array<{ __typename?: 'IosAppBuildCredentials', id: string, iosDistributionType: IosDistributionType, distributionCertificate?: { __typename?: 'AppleDistributionCertificate', id: string, certificateP12?: string | null, certificatePassword?: string | null, serialNumber: string, developerPortalIdentifier?: string | null, validityNotBefore: any, validityNotAfter: any, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, iosAppBuildCredentialsList: Array<{ __typename?: 'IosAppBuildCredentials', id: string, iosAppCredentials: { __typename?: 'IosAppCredentials', id: string, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string } }, provisioningProfile?: { __typename?: 'AppleProvisioningProfile', id: string, developerPortalIdentifier?: string | null } | null }> } | null, provisioningProfile?: { __typename?: 'AppleProvisioningProfile', id: string, expiration: any, developerPortalIdentifier?: string | null, provisioningProfile?: string | null, updatedAt: any, status: string, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, appleDevices: Array<{ __typename?: 'AppleDevice', id: string, identifier: string, name?: string | null, model?: string | null, deviceClass?: AppleDeviceClass | null, createdAt?: any | null }> } | null }> }> } } };
|
||||
export type IosAppBuildCredentialsByAppleAppIdentiferAndDistributionQuery = { __typename?: 'RootQuery', app: { __typename?: 'AppQuery', byFullName: { __typename?: 'App', id: string, iosAppCredentials: Array<{ __typename?: 'IosAppCredentials', id: string, iosAppBuildCredentialsList: Array<{ __typename?: 'IosAppBuildCredentials', id: string, iosDistributionType: IosDistributionType, distributionCertificate?: { __typename?: 'AppleDistributionCertificate', id: string, certificateP12?: string | null, certificatePassword?: string | null, serialNumber: string, developerPortalIdentifier?: string | null, validityNotBefore: any, validityNotAfter: any, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, iosAppBuildCredentialsList: Array<{ __typename?: 'IosAppBuildCredentials', id: string, iosAppCredentials: { __typename?: 'IosAppCredentials', id: string, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string } }, provisioningProfile?: { __typename?: 'AppleProvisioningProfile', id: string, developerPortalIdentifier?: string | null } | null }> } | null, provisioningProfile?: { __typename?: 'AppleProvisioningProfile', id: string, expiration: any, developerPortalIdentifier?: string | null, provisioningProfile?: string | null, updatedAt: any, status: string, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, appleDevices: Array<{ __typename?: 'AppleDevice', id: string, identifier: string, name?: string | null, model?: string | null, deviceClass?: AppleDeviceClass | null, createdAt: any }> } | null }> }> } } };
|
||||
|
||||
export type IosAppCredentialsWithBuildCredentialsByAppIdentifierIdQueryVariables = Exact<{
|
||||
projectFullName: Scalars['String']['input'];
|
||||
@@ -6501,7 +6842,7 @@ export type IosAppCredentialsWithBuildCredentialsByAppIdentifierIdQueryVariables
|
||||
}>;
|
||||
|
||||
|
||||
export type IosAppCredentialsWithBuildCredentialsByAppIdentifierIdQuery = { __typename?: 'RootQuery', app: { __typename?: 'AppQuery', byFullName: { __typename?: 'App', id: string, iosAppCredentials: Array<{ __typename?: 'IosAppCredentials', id: string, iosAppBuildCredentialsList: Array<{ __typename?: 'IosAppBuildCredentials', id: string, iosDistributionType: IosDistributionType, distributionCertificate?: { __typename?: 'AppleDistributionCertificate', id: string, certificateP12?: string | null, certificatePassword?: string | null, serialNumber: string, developerPortalIdentifier?: string | null, validityNotBefore: any, validityNotAfter: any, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, iosAppBuildCredentialsList: Array<{ __typename?: 'IosAppBuildCredentials', id: string, iosAppCredentials: { __typename?: 'IosAppCredentials', id: string, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string } }, provisioningProfile?: { __typename?: 'AppleProvisioningProfile', id: string, developerPortalIdentifier?: string | null } | null }> } | null, provisioningProfile?: { __typename?: 'AppleProvisioningProfile', id: string, expiration: any, developerPortalIdentifier?: string | null, provisioningProfile?: string | null, updatedAt: any, status: string, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, appleDevices: Array<{ __typename?: 'AppleDevice', id: string, identifier: string, name?: string | null, model?: string | null, deviceClass?: AppleDeviceClass | null, createdAt?: any | null }> } | null }>, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string }, pushKey?: { __typename?: 'ApplePushKey', id: string, keyIdentifier: string, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, iosAppCredentialsList: Array<{ __typename?: 'IosAppCredentials', id: string, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string } }> } | null, appStoreConnectApiKeyForSubmissions?: { __typename?: 'AppStoreConnectApiKey', id: string, issuerIdentifier: string, keyIdentifier: string, name?: string | null, roles?: Array<AppStoreConnectUserRole> | null, createdAt: any, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null } | null }> } } };
|
||||
export type IosAppCredentialsWithBuildCredentialsByAppIdentifierIdQuery = { __typename?: 'RootQuery', app: { __typename?: 'AppQuery', byFullName: { __typename?: 'App', id: string, iosAppCredentials: Array<{ __typename?: 'IosAppCredentials', id: string, iosAppBuildCredentialsList: Array<{ __typename?: 'IosAppBuildCredentials', id: string, iosDistributionType: IosDistributionType, distributionCertificate?: { __typename?: 'AppleDistributionCertificate', id: string, certificateP12?: string | null, certificatePassword?: string | null, serialNumber: string, developerPortalIdentifier?: string | null, validityNotBefore: any, validityNotAfter: any, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, iosAppBuildCredentialsList: Array<{ __typename?: 'IosAppBuildCredentials', id: string, iosAppCredentials: { __typename?: 'IosAppCredentials', id: string, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string } }, provisioningProfile?: { __typename?: 'AppleProvisioningProfile', id: string, developerPortalIdentifier?: string | null } | null }> } | null, provisioningProfile?: { __typename?: 'AppleProvisioningProfile', id: string, expiration: any, developerPortalIdentifier?: string | null, provisioningProfile?: string | null, updatedAt: any, status: string, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, appleDevices: Array<{ __typename?: 'AppleDevice', id: string, identifier: string, name?: string | null, model?: string | null, deviceClass?: AppleDeviceClass | null, createdAt: any }> } | null }>, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string }, pushKey?: { __typename?: 'ApplePushKey', id: string, keyIdentifier: string, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, iosAppCredentialsList: Array<{ __typename?: 'IosAppCredentials', id: string, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string } }> } | null, appStoreConnectApiKeyForSubmissions?: { __typename?: 'AppStoreConnectApiKey', id: string, issuerIdentifier: string, keyIdentifier: string, name?: string | null, roles?: Array<AppStoreConnectUserRole> | null, createdAt: any, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null } | null }> } } };
|
||||
|
||||
export type CommonIosAppCredentialsWithBuildCredentialsByAppIdentifierIdQueryVariables = Exact<{
|
||||
projectFullName: Scalars['String']['input'];
|
||||
@@ -6509,7 +6850,7 @@ export type CommonIosAppCredentialsWithBuildCredentialsByAppIdentifierIdQueryVar
|
||||
}>;
|
||||
|
||||
|
||||
export type CommonIosAppCredentialsWithBuildCredentialsByAppIdentifierIdQuery = { __typename?: 'RootQuery', app: { __typename?: 'AppQuery', byFullName: { __typename?: 'App', id: string, iosAppCredentials: Array<{ __typename?: 'IosAppCredentials', id: string, iosAppBuildCredentialsList: Array<{ __typename?: 'IosAppBuildCredentials', id: string, iosDistributionType: IosDistributionType, distributionCertificate?: { __typename?: 'AppleDistributionCertificate', id: string, certificateP12?: string | null, certificatePassword?: string | null, serialNumber: string, developerPortalIdentifier?: string | null, validityNotBefore: any, validityNotAfter: any, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, iosAppBuildCredentialsList: Array<{ __typename?: 'IosAppBuildCredentials', id: string, iosAppCredentials: { __typename?: 'IosAppCredentials', id: string, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string } }, provisioningProfile?: { __typename?: 'AppleProvisioningProfile', id: string, developerPortalIdentifier?: string | null } | null }> } | null, provisioningProfile?: { __typename?: 'AppleProvisioningProfile', id: string, expiration: any, developerPortalIdentifier?: string | null, provisioningProfile?: string | null, updatedAt: any, status: string, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, appleDevices: Array<{ __typename?: 'AppleDevice', id: string, identifier: string, name?: string | null, model?: string | null, deviceClass?: AppleDeviceClass | null, createdAt?: any | null }> } | null }>, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string }, pushKey?: { __typename?: 'ApplePushKey', id: string, keyIdentifier: string, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, iosAppCredentialsList: Array<{ __typename?: 'IosAppCredentials', id: string, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string } }> } | null, appStoreConnectApiKeyForSubmissions?: { __typename?: 'AppStoreConnectApiKey', id: string, issuerIdentifier: string, keyIdentifier: string, name?: string | null, roles?: Array<AppStoreConnectUserRole> | null, createdAt: any, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null } | null }> } } };
|
||||
export type CommonIosAppCredentialsWithBuildCredentialsByAppIdentifierIdQuery = { __typename?: 'RootQuery', app: { __typename?: 'AppQuery', byFullName: { __typename?: 'App', id: string, iosAppCredentials: Array<{ __typename?: 'IosAppCredentials', id: string, iosAppBuildCredentialsList: Array<{ __typename?: 'IosAppBuildCredentials', id: string, iosDistributionType: IosDistributionType, distributionCertificate?: { __typename?: 'AppleDistributionCertificate', id: string, certificateP12?: string | null, certificatePassword?: string | null, serialNumber: string, developerPortalIdentifier?: string | null, validityNotBefore: any, validityNotAfter: any, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, iosAppBuildCredentialsList: Array<{ __typename?: 'IosAppBuildCredentials', id: string, iosAppCredentials: { __typename?: 'IosAppCredentials', id: string, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string } }, provisioningProfile?: { __typename?: 'AppleProvisioningProfile', id: string, developerPortalIdentifier?: string | null } | null }> } | null, provisioningProfile?: { __typename?: 'AppleProvisioningProfile', id: string, expiration: any, developerPortalIdentifier?: string | null, provisioningProfile?: string | null, updatedAt: any, status: string, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, appleDevices: Array<{ __typename?: 'AppleDevice', id: string, identifier: string, name?: string | null, model?: string | null, deviceClass?: AppleDeviceClass | null, createdAt: any }> } | null }>, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string }, pushKey?: { __typename?: 'ApplePushKey', id: string, keyIdentifier: string, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, iosAppCredentialsList: Array<{ __typename?: 'IosAppCredentials', id: string, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string } }> } | null, appStoreConnectApiKeyForSubmissions?: { __typename?: 'AppStoreConnectApiKey', id: string, issuerIdentifier: string, keyIdentifier: string, name?: string | null, roles?: Array<AppStoreConnectUserRole> | null, createdAt: any, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null } | null }> } } };
|
||||
|
||||
export type CreateAppMutationVariables = Exact<{
|
||||
appInput: AppInput;
|
||||
@@ -6920,13 +7261,13 @@ export type AppStoreConnectApiKeyFragment = { __typename?: 'AppStoreConnectApiKe
|
||||
|
||||
export type AppleAppIdentifierFragment = { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string };
|
||||
|
||||
export type AppleDeviceFragment = { __typename?: 'AppleDevice', id: string, identifier: string, name?: string | null, model?: string | null, deviceClass?: AppleDeviceClass | null, createdAt?: any | null };
|
||||
export type AppleDeviceFragment = { __typename?: 'AppleDevice', id: string, identifier: string, name?: string | null, model?: string | null, deviceClass?: AppleDeviceClass | null, createdAt: any };
|
||||
|
||||
export type AppleDeviceRegistrationRequestFragment = { __typename?: 'AppleDeviceRegistrationRequest', id: string };
|
||||
|
||||
export type AppleDistributionCertificateFragment = { __typename?: 'AppleDistributionCertificate', id: string, certificateP12?: string | null, certificatePassword?: string | null, serialNumber: string, developerPortalIdentifier?: string | null, validityNotBefore: any, validityNotAfter: any, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, iosAppBuildCredentialsList: Array<{ __typename?: 'IosAppBuildCredentials', id: string, iosAppCredentials: { __typename?: 'IosAppCredentials', id: string, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string } }, provisioningProfile?: { __typename?: 'AppleProvisioningProfile', id: string, developerPortalIdentifier?: string | null } | null }> };
|
||||
|
||||
export type AppleProvisioningProfileFragment = { __typename?: 'AppleProvisioningProfile', id: string, expiration: any, developerPortalIdentifier?: string | null, provisioningProfile?: string | null, updatedAt: any, status: string, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, appleDevices: Array<{ __typename?: 'AppleDevice', id: string, identifier: string, name?: string | null, model?: string | null, deviceClass?: AppleDeviceClass | null, createdAt?: any | null }> };
|
||||
export type AppleProvisioningProfileFragment = { __typename?: 'AppleProvisioningProfile', id: string, expiration: any, developerPortalIdentifier?: string | null, provisioningProfile?: string | null, updatedAt: any, status: string, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, appleDevices: Array<{ __typename?: 'AppleDevice', id: string, identifier: string, name?: string | null, model?: string | null, deviceClass?: AppleDeviceClass | null, createdAt: any }> };
|
||||
|
||||
export type AppleProvisioningProfileIdentifiersFragment = { __typename?: 'AppleProvisioningProfile', id: string, developerPortalIdentifier?: string | null };
|
||||
|
||||
@@ -6936,8 +7277,8 @@ export type AppleTeamFragment = { __typename?: 'AppleTeam', id: string, appleTea
|
||||
|
||||
export type GoogleServiceAccountKeyFragment = { __typename?: 'GoogleServiceAccountKey', id: string, projectIdentifier: string, privateKeyIdentifier: string, clientEmail: string, clientIdentifier: string, createdAt: any, updatedAt: any };
|
||||
|
||||
export type IosAppBuildCredentialsFragment = { __typename?: 'IosAppBuildCredentials', id: string, iosDistributionType: IosDistributionType, distributionCertificate?: { __typename?: 'AppleDistributionCertificate', id: string, certificateP12?: string | null, certificatePassword?: string | null, serialNumber: string, developerPortalIdentifier?: string | null, validityNotBefore: any, validityNotAfter: any, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, iosAppBuildCredentialsList: Array<{ __typename?: 'IosAppBuildCredentials', id: string, iosAppCredentials: { __typename?: 'IosAppCredentials', id: string, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string } }, provisioningProfile?: { __typename?: 'AppleProvisioningProfile', id: string, developerPortalIdentifier?: string | null } | null }> } | null, provisioningProfile?: { __typename?: 'AppleProvisioningProfile', id: string, expiration: any, developerPortalIdentifier?: string | null, provisioningProfile?: string | null, updatedAt: any, status: string, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, appleDevices: Array<{ __typename?: 'AppleDevice', id: string, identifier: string, name?: string | null, model?: string | null, deviceClass?: AppleDeviceClass | null, createdAt?: any | null }> } | null };
|
||||
export type IosAppBuildCredentialsFragment = { __typename?: 'IosAppBuildCredentials', id: string, iosDistributionType: IosDistributionType, distributionCertificate?: { __typename?: 'AppleDistributionCertificate', id: string, certificateP12?: string | null, certificatePassword?: string | null, serialNumber: string, developerPortalIdentifier?: string | null, validityNotBefore: any, validityNotAfter: any, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, iosAppBuildCredentialsList: Array<{ __typename?: 'IosAppBuildCredentials', id: string, iosAppCredentials: { __typename?: 'IosAppCredentials', id: string, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string } }, provisioningProfile?: { __typename?: 'AppleProvisioningProfile', id: string, developerPortalIdentifier?: string | null } | null }> } | null, provisioningProfile?: { __typename?: 'AppleProvisioningProfile', id: string, expiration: any, developerPortalIdentifier?: string | null, provisioningProfile?: string | null, updatedAt: any, status: string, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, appleDevices: Array<{ __typename?: 'AppleDevice', id: string, identifier: string, name?: string | null, model?: string | null, deviceClass?: AppleDeviceClass | null, createdAt: any }> } | null };
|
||||
|
||||
export type CommonIosAppCredentialsWithoutBuildCredentialsFragment = { __typename?: 'IosAppCredentials', id: string, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string }, pushKey?: { __typename?: 'ApplePushKey', id: string, keyIdentifier: string, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, iosAppCredentialsList: Array<{ __typename?: 'IosAppCredentials', id: string, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string } }> } | null, appStoreConnectApiKeyForSubmissions?: { __typename?: 'AppStoreConnectApiKey', id: string, issuerIdentifier: string, keyIdentifier: string, name?: string | null, roles?: Array<AppStoreConnectUserRole> | null, createdAt: any, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null } | null };
|
||||
|
||||
export type CommonIosAppCredentialsFragment = { __typename?: 'IosAppCredentials', id: string, iosAppBuildCredentialsList: Array<{ __typename?: 'IosAppBuildCredentials', id: string, iosDistributionType: IosDistributionType, distributionCertificate?: { __typename?: 'AppleDistributionCertificate', id: string, certificateP12?: string | null, certificatePassword?: string | null, serialNumber: string, developerPortalIdentifier?: string | null, validityNotBefore: any, validityNotAfter: any, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, iosAppBuildCredentialsList: Array<{ __typename?: 'IosAppBuildCredentials', id: string, iosAppCredentials: { __typename?: 'IosAppCredentials', id: string, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string } }, provisioningProfile?: { __typename?: 'AppleProvisioningProfile', id: string, developerPortalIdentifier?: string | null } | null }> } | null, provisioningProfile?: { __typename?: 'AppleProvisioningProfile', id: string, expiration: any, developerPortalIdentifier?: string | null, provisioningProfile?: string | null, updatedAt: any, status: string, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, appleDevices: Array<{ __typename?: 'AppleDevice', id: string, identifier: string, name?: string | null, model?: string | null, deviceClass?: AppleDeviceClass | null, createdAt?: any | null }> } | null }>, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string }, pushKey?: { __typename?: 'ApplePushKey', id: string, keyIdentifier: string, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, iosAppCredentialsList: Array<{ __typename?: 'IosAppCredentials', id: string, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string } }> } | null, appStoreConnectApiKeyForSubmissions?: { __typename?: 'AppStoreConnectApiKey', id: string, issuerIdentifier: string, keyIdentifier: string, name?: string | null, roles?: Array<AppStoreConnectUserRole> | null, createdAt: any, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null } | null };
|
||||
export type CommonIosAppCredentialsFragment = { __typename?: 'IosAppCredentials', id: string, iosAppBuildCredentialsList: Array<{ __typename?: 'IosAppBuildCredentials', id: string, iosDistributionType: IosDistributionType, distributionCertificate?: { __typename?: 'AppleDistributionCertificate', id: string, certificateP12?: string | null, certificatePassword?: string | null, serialNumber: string, developerPortalIdentifier?: string | null, validityNotBefore: any, validityNotAfter: any, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, iosAppBuildCredentialsList: Array<{ __typename?: 'IosAppBuildCredentials', id: string, iosAppCredentials: { __typename?: 'IosAppCredentials', id: string, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string } }, provisioningProfile?: { __typename?: 'AppleProvisioningProfile', id: string, developerPortalIdentifier?: string | null } | null }> } | null, provisioningProfile?: { __typename?: 'AppleProvisioningProfile', id: string, expiration: any, developerPortalIdentifier?: string | null, provisioningProfile?: string | null, updatedAt: any, status: string, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, appleDevices: Array<{ __typename?: 'AppleDevice', id: string, identifier: string, name?: string | null, model?: string | null, deviceClass?: AppleDeviceClass | null, createdAt: any }> } | null }>, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string }, pushKey?: { __typename?: 'ApplePushKey', id: string, keyIdentifier: string, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null, iosAppCredentialsList: Array<{ __typename?: 'IosAppCredentials', id: string, app: { __typename?: 'App', id: string, fullName: string, slug: string, ownerAccount: { __typename?: 'Account', id: string, name: string, ownerUserActor?: { __typename?: 'SSOUser', id: string, username: string } | { __typename?: 'User', id: string, username: string } | null, users: Array<{ __typename?: 'UserPermission', role: Role, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> } }, appleAppIdentifier: { __typename?: 'AppleAppIdentifier', id: string, bundleIdentifier: string } }> } | null, appStoreConnectApiKeyForSubmissions?: { __typename?: 'AppStoreConnectApiKey', id: string, issuerIdentifier: string, keyIdentifier: string, name?: string | null, roles?: Array<AppStoreConnectUserRole> | null, createdAt: any, updatedAt: any, appleTeam?: { __typename?: 'AppleTeam', id: string, appleTeamIdentifier: string, appleTeamName?: string | null } | null } | null };
|
||||
@@ -6,6 +6,7 @@ export const APPLE_DEVICE_CLASS_LABELS: Record<AppleDeviceClass, string> = {
|
||||
[AppleDeviceClass.Ipad]: 'iPad',
|
||||
[AppleDeviceClass.Iphone]: 'iPhone',
|
||||
[AppleDeviceClass.Mac]: 'Mac',
|
||||
[AppleDeviceClass.Unknown]: 'Unknown',
|
||||
};
|
||||
|
||||
export const AppleDeviceFragmentNode = gql`
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
import { Platform, Workflow } from '@expo/eas-build-job';
|
||||
import { vol } from 'memfs';
|
||||
|
||||
import { getVcsClient } from '../../vcs';
|
||||
import { resolveVcsClient } from '../../vcs';
|
||||
import { resolveWorkflowAsync, resolveWorkflowPerPlatformAsync } from '../workflow';
|
||||
|
||||
jest.mock('fs');
|
||||
|
||||
const projectDir = '/app';
|
||||
const vcsClient = getVcsClient();
|
||||
const vcsClient = resolveVcsClient();
|
||||
|
||||
describe(resolveWorkflowAsync, () => {
|
||||
beforeEach(() => {
|
||||
|
||||
@@ -7,7 +7,7 @@ import { ExpoGraphqlClient } from '../../../commandUtils/context/contextUtils/cr
|
||||
import { jester, jester as mockJester } from '../../../credentials/__tests__/fixtures-constants';
|
||||
import { AppQuery } from '../../../graphql/queries/AppQuery';
|
||||
import { promptAsync } from '../../../prompts';
|
||||
import { getVcsClient } from '../../../vcs';
|
||||
import { resolveVcsClient } from '../../../vcs';
|
||||
import {
|
||||
ensureApplicationIdIsDefinedForManagedProjectAsync,
|
||||
getApplicationIdAsync,
|
||||
@@ -18,7 +18,7 @@ jest.mock('../../../prompts');
|
||||
jest.mock('../../../graphql/queries/AppQuery');
|
||||
jest.mock('../../../user/actions', () => ({ ensureLoggedInAsync: jest.fn(() => mockJester) }));
|
||||
|
||||
const vcsClient = getVcsClient();
|
||||
const vcsClient = resolveVcsClient();
|
||||
|
||||
beforeEach(async () => {
|
||||
vol.reset();
|
||||
|
||||
@@ -4,14 +4,14 @@ import os from 'os';
|
||||
|
||||
import { jester as mockJester } from '../../../credentials/__tests__/fixtures-constants';
|
||||
import { promptAsync } from '../../../prompts';
|
||||
import { getVcsClient } from '../../../vcs';
|
||||
import { resolveVcsClient } from '../../../vcs';
|
||||
import { resolveGradleBuildContextAsync } from '../gradle';
|
||||
|
||||
jest.mock('fs');
|
||||
jest.mock('../../../prompts');
|
||||
jest.mock('../../../user/actions', () => ({ ensureLoggedInAsync: jest.fn(() => mockJester) }));
|
||||
|
||||
const vcsClient = getVcsClient();
|
||||
const vcsClient = resolveVcsClient();
|
||||
|
||||
beforeEach(async () => {
|
||||
vol.reset();
|
||||
|
||||
@@ -68,3 +68,7 @@ export async function validateCustomBuildConfigAsync({
|
||||
export function getCustomBuildConfigPath(configFilename: string): string {
|
||||
return path.join('.eas/build', configFilename);
|
||||
}
|
||||
|
||||
export function getCustomBuildConfigPathForJob(configFilename: string): string {
|
||||
return path.posix.join('.eas/build', configFilename);
|
||||
}
|
||||
@@ -8,7 +8,7 @@ import { ExpoGraphqlClient } from '../../../commandUtils/context/contextUtils/cr
|
||||
import { jester, jester as mockJester } from '../../../credentials/__tests__/fixtures-constants';
|
||||
import { AppQuery } from '../../../graphql/queries/AppQuery';
|
||||
import { promptAsync } from '../../../prompts';
|
||||
import { getVcsClient } from '../../../vcs';
|
||||
import { resolveVcsClient } from '../../../vcs';
|
||||
import {
|
||||
ensureBundleIdentifierIsDefinedForManagedProjectAsync,
|
||||
getBundleIdentifierAsync,
|
||||
@@ -20,7 +20,7 @@ jest.mock('../../../prompts');
|
||||
jest.mock('../../../graphql/queries/AppQuery');
|
||||
jest.mock('../../../user/actions', () => ({ ensureLoggedInAsync: jest.fn(() => mockJester) }));
|
||||
|
||||
const vcsClient = getVcsClient();
|
||||
const vcsClient = resolveVcsClient();
|
||||
|
||||
beforeEach(async () => {
|
||||
vol.reset();
|
||||
|
||||
@@ -108,7 +108,11 @@ export async function validateAppVersionRuntimePolicySupportAsync(
|
||||
}
|
||||
|
||||
const expoUpdatesPackageVersion = await getExpoUpdatesPackageVersionIfInstalledAsync(projectDir);
|
||||
if (expoUpdatesPackageVersion !== null && semver.gte(expoUpdatesPackageVersion, '0.14.4')) {
|
||||
if (
|
||||
expoUpdatesPackageVersion !== null &&
|
||||
(semver.gte(expoUpdatesPackageVersion, '0.14.4') ||
|
||||
expoUpdatesPackageVersion.includes('canary'))
|
||||
) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -121,7 +125,11 @@ export async function enforceRollBackToEmbeddedUpdateSupportAsync(
|
||||
projectDir: string
|
||||
): Promise<void> {
|
||||
const expoUpdatesPackageVersion = await getExpoUpdatesPackageVersionIfInstalledAsync(projectDir);
|
||||
if (expoUpdatesPackageVersion !== null && semver.gte(expoUpdatesPackageVersion, '0.19.0')) {
|
||||
if (
|
||||
expoUpdatesPackageVersion !== null &&
|
||||
(semver.gte(expoUpdatesPackageVersion, '0.19.0') ||
|
||||
expoUpdatesPackageVersion.includes('canary'))
|
||||
) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -138,9 +146,29 @@ export async function isClassicUpdatesSupportedAsync(projectDir: string): Promis
|
||||
return false;
|
||||
}
|
||||
|
||||
if (expoUpdatesPackageVersion.includes('canary')) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return semver.lt(expoUpdatesPackageVersion, '0.19.0');
|
||||
}
|
||||
|
||||
export async function isModernExpoUpdatesCLIWithRuntimeVersionCommandSupportedAsync(
|
||||
projectDir: string
|
||||
): Promise<boolean> {
|
||||
const expoUpdatesPackageVersion = await getExpoUpdatesPackageVersionIfInstalledAsync(projectDir);
|
||||
if (expoUpdatesPackageVersion === null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (expoUpdatesPackageVersion.includes('canary')) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// TODO(wschurman): add semver check once we know the SDK51 version of expo-updates that supports this
|
||||
return false;
|
||||
}
|
||||
|
||||
export async function installExpoUpdatesAsync(
|
||||
projectDir: string,
|
||||
options?: { silent: boolean }
|
||||
|
||||
@@ -12,6 +12,7 @@ import nullthrows from 'nullthrows';
|
||||
import path from 'path';
|
||||
import promiseLimit from 'promise-limit';
|
||||
|
||||
import { isModernExpoUpdatesCLIWithRuntimeVersionCommandSupportedAsync } from './projectUtils';
|
||||
import { resolveWorkflowAsync } from './workflow';
|
||||
import { selectBranchOnAppAsync } from '../branch/queries';
|
||||
import { getDefaultBranchNameAsync } from '../branch/utils';
|
||||
@@ -31,6 +32,10 @@ import {
|
||||
shouldUseVersionedExpoCLI,
|
||||
shouldUseVersionedExpoCLIWithExplicitPlatforms,
|
||||
} from '../utils/expoCli';
|
||||
import {
|
||||
ExpoUpdatesCLIModuleNotFoundError,
|
||||
expoUpdatesCommandAsync,
|
||||
} from '../utils/expoUpdatesCli';
|
||||
import chunk from '../utils/expodash/chunk';
|
||||
import { truthy } from '../utils/expodash/filter';
|
||||
import uniqBy from '../utils/expodash/uniqBy';
|
||||
@@ -675,47 +680,100 @@ export function getRequestedPlatform(
|
||||
}
|
||||
|
||||
/** Get runtime versions grouped by platform. Runtime version is always `null` on web where the platform is always backwards compatible. */
|
||||
export async function getRuntimeVersionObjectAsync(
|
||||
exp: ExpoConfig,
|
||||
platforms: Platform[],
|
||||
projectDir: string,
|
||||
vcsClient: Client
|
||||
): Promise<{ platform: string; runtimeVersion: string }[]> {
|
||||
for (const platform of platforms) {
|
||||
if (platform === 'web') {
|
||||
continue;
|
||||
}
|
||||
const isPolicy = typeof (exp[platform]?.runtimeVersion ?? exp.runtimeVersion) === 'object';
|
||||
if (isPolicy) {
|
||||
const isManaged =
|
||||
(await resolveWorkflowAsync(projectDir, platform as EASBuildJobPlatform, vcsClient)) ===
|
||||
Workflow.MANAGED;
|
||||
if (!isManaged) {
|
||||
throw new Error(
|
||||
`You're currently using the bare workflow, where runtime version policies are not supported. You must set your runtime version manually. For example, define your runtime version as "1.0.0", not {"policy": "appVersion"} in your app config. ${learnMore(
|
||||
'https://docs.expo.dev/eas-update/runtime-versions'
|
||||
)}`
|
||||
);
|
||||
export async function getRuntimeVersionObjectAsync({
|
||||
exp,
|
||||
platforms,
|
||||
projectDir,
|
||||
vcsClient,
|
||||
}: {
|
||||
exp: ExpoConfig;
|
||||
platforms: Platform[];
|
||||
projectDir: string;
|
||||
vcsClient: Client;
|
||||
}): Promise<{ platform: string; runtimeVersion: string }[]> {
|
||||
return await Promise.all(
|
||||
platforms.map(async platform => {
|
||||
return {
|
||||
platform,
|
||||
runtimeVersion: await getRuntimeVersionForPlatformAsync({
|
||||
exp,
|
||||
platform,
|
||||
projectDir,
|
||||
vcsClient,
|
||||
}),
|
||||
};
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
async function getRuntimeVersionForPlatformAsync({
|
||||
exp,
|
||||
platform,
|
||||
projectDir,
|
||||
vcsClient,
|
||||
}: {
|
||||
exp: ExpoConfig;
|
||||
platform: Platform;
|
||||
projectDir: string;
|
||||
vcsClient: Client;
|
||||
}): Promise<string> {
|
||||
if (platform === 'web') {
|
||||
return 'UNVERSIONED';
|
||||
}
|
||||
|
||||
if (await isModernExpoUpdatesCLIWithRuntimeVersionCommandSupportedAsync(projectDir)) {
|
||||
try {
|
||||
const resolvedRuntimeVersionJSONResult = await expoUpdatesCommandAsync(projectDir, [
|
||||
'runtimeversion:resolve',
|
||||
'--platform',
|
||||
platform,
|
||||
]);
|
||||
const runtimeVersionResult = JSON.parse(resolvedRuntimeVersionJSONResult);
|
||||
if (runtimeVersionResult.fingerprintSources) {
|
||||
Log.debug(`Resolved fingeprint runtime version for platform "${platform}". Sources:`);
|
||||
Log.debug(runtimeVersionResult.fingerprintSources);
|
||||
}
|
||||
return nullthrows(
|
||||
runtimeVersionResult.runtimeVersion,
|
||||
`Unable to determine runtime version for ${
|
||||
requestedPlatformDisplayNames[platform]
|
||||
}. ${learnMore('https://docs.expo.dev/eas-update/runtime-versions/')}`
|
||||
);
|
||||
} catch (e: any) {
|
||||
// if it's a known set of errors thrown by the CLI it means that we need to default back to the
|
||||
// previous behavior, otherwise we throw the error since something is wrong
|
||||
if (!(e instanceof ExpoUpdatesCLIModuleNotFoundError)) {
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return await Promise.all(
|
||||
[...new Set(platforms)].map(async platform => {
|
||||
if (platform === 'web') {
|
||||
return { platform: 'web', runtimeVersion: 'UNVERSIONED' };
|
||||
}
|
||||
return {
|
||||
platform,
|
||||
runtimeVersion: nullthrows(
|
||||
await Updates.getRuntimeVersionAsync(projectDir, exp, platform),
|
||||
`Unable to determine runtime version for ${
|
||||
requestedPlatformDisplayNames[platform]
|
||||
}. ${learnMore('https://docs.expo.dev/eas-update/runtime-versions/')}`
|
||||
),
|
||||
};
|
||||
})
|
||||
);
|
||||
const runtimeVersion = exp[platform]?.runtimeVersion ?? exp.runtimeVersion;
|
||||
if (typeof runtimeVersion === 'object') {
|
||||
const workflow = await resolveWorkflowAsync(
|
||||
projectDir,
|
||||
platform as EASBuildJobPlatform,
|
||||
vcsClient
|
||||
);
|
||||
if (workflow !== Workflow.MANAGED) {
|
||||
throw new Error(
|
||||
`You're currently using the bare workflow, where runtime version policies are not supported. You must set your runtime version manually. For example, define your runtime version as "1.0.0", not {"policy": "appVersion"} in your app config. ${learnMore(
|
||||
'https://docs.expo.dev/eas-update/runtime-versions'
|
||||
)}`
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
const resolvedRuntimeVersion = await Updates.getRuntimeVersionAsync(projectDir, exp, platform);
|
||||
if (!resolvedRuntimeVersion) {
|
||||
throw new Error(
|
||||
`Unable to determine runtime version for ${
|
||||
requestedPlatformDisplayNames[platform]
|
||||
}. ${learnMore('https://docs.expo.dev/eas-update/runtime-versions/')}`
|
||||
);
|
||||
}
|
||||
|
||||
return resolvedRuntimeVersion;
|
||||
}
|
||||
|
||||
export function getRuntimeToPlatformMappingFromRuntimeVersions(
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
import { ExpoConfig } from '@expo/config';
|
||||
import { Updates } from '@expo/config-plugins';
|
||||
|
||||
import { isModernExpoUpdatesCLIWithRuntimeVersionCommandSupportedAsync } from './projectUtils';
|
||||
import Log from '../log';
|
||||
import {
|
||||
ExpoUpdatesCLIModuleNotFoundError,
|
||||
expoUpdatesCommandAsync,
|
||||
} from '../utils/expoUpdatesCli';
|
||||
|
||||
export async function resolveRuntimeVersionAsync({
|
||||
exp,
|
||||
platform,
|
||||
projectDir,
|
||||
}: {
|
||||
exp: ExpoConfig;
|
||||
platform: 'ios' | 'android';
|
||||
projectDir: string;
|
||||
}): Promise<string | null> {
|
||||
if (!(await isModernExpoUpdatesCLIWithRuntimeVersionCommandSupportedAsync(projectDir))) {
|
||||
// fall back to the previous behavior (using the @expo/config-plugins eas-cli dependency rather
|
||||
// than the versioned @expo/config-plugins dependency in the project)
|
||||
return await Updates.getRuntimeVersionNullableAsync(projectDir, exp, platform);
|
||||
}
|
||||
|
||||
try {
|
||||
const resolvedRuntimeVersionJSONResult = await expoUpdatesCommandAsync(projectDir, [
|
||||
'runtimeversion:resolve',
|
||||
'--platform',
|
||||
platform,
|
||||
]);
|
||||
const runtimeVersionResult = JSON.parse(resolvedRuntimeVersionJSONResult);
|
||||
if (runtimeVersionResult.fingerprintSources) {
|
||||
Log.debug(`Resolved fingeprint runtime version for platform "${platform}". Sources:`);
|
||||
Log.debug(runtimeVersionResult.fingerprintSources);
|
||||
}
|
||||
return runtimeVersionResult.runtimeVersion ?? null;
|
||||
} catch (e: any) {
|
||||
// if expo-updates is not installed, there's no need for a runtime version in the build
|
||||
if (e instanceof ExpoUpdatesCLIModuleNotFoundError) {
|
||||
return null;
|
||||
}
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,3 @@
|
||||
import { Updates } from '@expo/config-plugins';
|
||||
import assert from 'assert';
|
||||
|
||||
import { SelectRuntime } from './SelectRuntime';
|
||||
@@ -24,6 +23,7 @@ import {
|
||||
} from '../../graphql/queries/ChannelQuery';
|
||||
import { UpdateQuery } from '../../graphql/queries/UpdateQuery';
|
||||
import Log from '../../log';
|
||||
import { resolveRuntimeVersionAsync } from '../../project/resolveRuntimeVersionAsync';
|
||||
import { confirmAsync, promptAsync } from '../../prompts';
|
||||
import { truthy } from '../../utils/expodash/filter';
|
||||
import {
|
||||
@@ -275,7 +275,7 @@ export class CreateRollout implements EASUpdateAction<UpdateChannelBasicInfoFrag
|
||||
const runtimes = (
|
||||
await Promise.all(
|
||||
platforms.map(platform =>
|
||||
Updates.getRuntimeVersionAsync(ctx.app.projectDir, ctx.app.exp, platform)
|
||||
resolveRuntimeVersionAsync({ projectDir: ctx.app.projectDir, exp: ctx.app.exp, platform })
|
||||
)
|
||||
)
|
||||
).filter(truthy);
|
||||
|
||||
@@ -112,6 +112,7 @@ export default class AndroidSubmitter extends BaseSubmitter<
|
||||
changesNotSentForReview,
|
||||
releaseStatus,
|
||||
rollout,
|
||||
isVerboseFastlaneEnabled: this.ctx.isVerboseFastlaneEnabled,
|
||||
...serviceAccountKeyResult.result,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ import {
|
||||
import { SubmissionMutation } from '../../../graphql/mutations/SubmissionMutation';
|
||||
import { createTestProject } from '../../../project/__tests__/project-utils';
|
||||
import { getOwnerAccountForProjectIdAsync } from '../../../project/projectUtils';
|
||||
import { getVcsClient } from '../../../vcs';
|
||||
import { resolveVcsClient } from '../../../vcs';
|
||||
import {
|
||||
ArchiveResolverContext,
|
||||
ArchiveSource,
|
||||
@@ -57,7 +57,7 @@ jest.mock('../../commons', () => {
|
||||
};
|
||||
});
|
||||
|
||||
const vcsClient = getVcsClient();
|
||||
const vcsClient = resolveVcsClient();
|
||||
|
||||
describe(AndroidSubmitCommand, () => {
|
||||
const testProject = createTestProject(testProjectId, mockJester.accounts[0].name, {
|
||||
@@ -123,6 +123,7 @@ describe(AndroidSubmitCommand, () => {
|
||||
changesNotSentForReview: false,
|
||||
},
|
||||
nonInteractive: true,
|
||||
isVerboseFastlaneEnabled: false,
|
||||
actor: mockJester,
|
||||
graphqlClient,
|
||||
analytics,
|
||||
@@ -159,6 +160,7 @@ describe(AndroidSubmitCommand, () => {
|
||||
changesNotSentForReview: false,
|
||||
},
|
||||
nonInteractive: false,
|
||||
isVerboseFastlaneEnabled: false,
|
||||
actor: mockJester,
|
||||
graphqlClient,
|
||||
analytics,
|
||||
@@ -178,6 +180,7 @@ describe(AndroidSubmitCommand, () => {
|
||||
releaseStatus: SubmissionAndroidReleaseStatus.Draft,
|
||||
track: SubmissionAndroidTrack.Internal,
|
||||
changesNotSentForReview: false,
|
||||
isVerboseFastlaneEnabled: false,
|
||||
},
|
||||
});
|
||||
});
|
||||
@@ -203,6 +206,7 @@ describe(AndroidSubmitCommand, () => {
|
||||
changesNotSentForReview: false,
|
||||
},
|
||||
nonInteractive: false,
|
||||
isVerboseFastlaneEnabled: false,
|
||||
actor: mockJester,
|
||||
graphqlClient,
|
||||
analytics,
|
||||
@@ -222,6 +226,7 @@ describe(AndroidSubmitCommand, () => {
|
||||
releaseStatus: SubmissionAndroidReleaseStatus.InProgress,
|
||||
track: SubmissionAndroidTrack.Internal,
|
||||
changesNotSentForReview: false,
|
||||
isVerboseFastlaneEnabled: false,
|
||||
},
|
||||
});
|
||||
});
|
||||
@@ -250,6 +255,7 @@ describe(AndroidSubmitCommand, () => {
|
||||
changesNotSentForReview: false,
|
||||
},
|
||||
nonInteractive: false,
|
||||
isVerboseFastlaneEnabled: false,
|
||||
actor: mockJester,
|
||||
graphqlClient,
|
||||
analytics,
|
||||
@@ -267,6 +273,7 @@ describe(AndroidSubmitCommand, () => {
|
||||
releaseStatus: SubmissionAndroidReleaseStatus.Draft,
|
||||
track: SubmissionAndroidTrack.Internal,
|
||||
changesNotSentForReview: false,
|
||||
isVerboseFastlaneEnabled: false,
|
||||
},
|
||||
submittedBuildId: fakeBuildFragment.id,
|
||||
});
|
||||
@@ -312,6 +319,7 @@ describe(AndroidSubmitCommand, () => {
|
||||
changesNotSentForReview: false,
|
||||
},
|
||||
nonInteractive: false,
|
||||
isVerboseFastlaneEnabled: false,
|
||||
actor: mockJester,
|
||||
graphqlClient,
|
||||
analytics,
|
||||
@@ -334,6 +342,7 @@ describe(AndroidSubmitCommand, () => {
|
||||
track: SubmissionAndroidTrack.Beta,
|
||||
changesNotSentForReview: false,
|
||||
rollout: undefined,
|
||||
isVerboseFastlaneEnabled: false,
|
||||
},
|
||||
submittedBuildId: selectedBuild.id,
|
||||
}
|
||||
@@ -372,6 +381,7 @@ describe(AndroidSubmitCommand, () => {
|
||||
changesNotSentForReview: false,
|
||||
},
|
||||
nonInteractive: false,
|
||||
isVerboseFastlaneEnabled: false,
|
||||
actor: mockJester,
|
||||
graphqlClient,
|
||||
analytics,
|
||||
@@ -394,6 +404,7 @@ describe(AndroidSubmitCommand, () => {
|
||||
track: SubmissionAndroidTrack.Internal,
|
||||
changesNotSentForReview: false,
|
||||
rollout: undefined,
|
||||
isVerboseFastlaneEnabled: false,
|
||||
},
|
||||
submittedBuildId: selectedBuild.id,
|
||||
}
|
||||
@@ -439,6 +450,7 @@ describe(AndroidSubmitCommand, () => {
|
||||
changesNotSentForReview: false,
|
||||
},
|
||||
nonInteractive: false,
|
||||
isVerboseFastlaneEnabled: false,
|
||||
actor: mockJester,
|
||||
graphqlClient,
|
||||
analytics,
|
||||
@@ -462,6 +474,7 @@ describe(AndroidSubmitCommand, () => {
|
||||
track: SubmissionAndroidTrack.Internal,
|
||||
changesNotSentForReview: false,
|
||||
rollout: undefined,
|
||||
isVerboseFastlaneEnabled: false,
|
||||
},
|
||||
submittedBuildId: selectedBuild.id,
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@ import { SetUpGoogleServiceAccountKeyForSubmissions } from '../../../credentials
|
||||
import { createTestProject } from '../../../project/__tests__/project-utils';
|
||||
import { getOwnerAccountForProjectIdAsync } from '../../../project/projectUtils';
|
||||
import { promptAsync } from '../../../prompts';
|
||||
import { getVcsClient } from '../../../vcs';
|
||||
import { resolveVcsClient } from '../../../vcs';
|
||||
import { createSubmissionContextAsync } from '../../context';
|
||||
import {
|
||||
ServiceAccountSource,
|
||||
@@ -45,7 +45,7 @@ const mockDetectableServiceAccountJson = JSON.stringify({
|
||||
client_email: '[email protected]',
|
||||
});
|
||||
|
||||
const vcsClient = getVcsClient();
|
||||
const vcsClient = resolveVcsClient();
|
||||
|
||||
beforeAll(() => {
|
||||
vol.fromJSON({
|
||||
@@ -156,6 +156,7 @@ describe(getServiceAccountKeyResultAsync, () => {
|
||||
changesNotSentForReview: false,
|
||||
},
|
||||
nonInteractive: true,
|
||||
isVerboseFastlaneEnabled: false,
|
||||
actor: mockJester,
|
||||
graphqlClient,
|
||||
analytics,
|
||||
@@ -198,6 +199,7 @@ describe(getServiceAccountKeyResultAsync, () => {
|
||||
changesNotSentForReview: false,
|
||||
},
|
||||
nonInteractive: true,
|
||||
isVerboseFastlaneEnabled: false,
|
||||
actor: mockJester,
|
||||
graphqlClient,
|
||||
analytics,
|
||||
@@ -236,6 +238,7 @@ describe(getServiceAccountKeyResultAsync, () => {
|
||||
changesNotSentForReview: false,
|
||||
},
|
||||
nonInteractive: true,
|
||||
isVerboseFastlaneEnabled: false,
|
||||
actor: mockJester,
|
||||
graphqlClient,
|
||||
analytics,
|
||||
|
||||
@@ -21,6 +21,7 @@ export interface SubmissionContext<T extends Platform> {
|
||||
analyticsEventProperties: AnalyticsEventProperties;
|
||||
exp: ExpoConfig;
|
||||
nonInteractive: boolean;
|
||||
isVerboseFastlaneEnabled: boolean;
|
||||
platform: T;
|
||||
profile: SubmitProfile<T>;
|
||||
projectDir: string;
|
||||
@@ -46,6 +47,7 @@ export async function createSubmissionContextAsync<T extends Platform>(params: {
|
||||
credentialsCtx?: CredentialsContext;
|
||||
env?: Record<string, string>;
|
||||
nonInteractive: boolean;
|
||||
isVerboseFastlaneEnabled: boolean;
|
||||
platform: T;
|
||||
profile: SubmitProfile<T>;
|
||||
projectDir: string;
|
||||
|
||||
@@ -32,6 +32,7 @@ export interface IosSubmissionOptions
|
||||
archiveSource: ArchiveSource;
|
||||
appSpecificPasswordSource?: AppSpecificPasswordSource;
|
||||
ascApiKeySource?: AscApiKeySource;
|
||||
isVerboseFastlaneEnabled?: boolean;
|
||||
}
|
||||
|
||||
interface ResolvedSourceOptions {
|
||||
@@ -124,9 +125,11 @@ export default class IosSubmitter extends BaseSubmitter<
|
||||
): IosSubmissionConfigInput {
|
||||
const { appSpecificPassword, ascApiKeyResult } = credentials;
|
||||
const { appleIdUsername, ascAppIdentifier } = options;
|
||||
const { isVerboseFastlaneEnabled } = this.ctx;
|
||||
return {
|
||||
ascAppIdentifier,
|
||||
appleIdUsername,
|
||||
isVerboseFastlaneEnabled,
|
||||
...(appSpecificPassword ? this.formatAppSpecificPassword(appSpecificPassword) : null),
|
||||
...(ascApiKeyResult?.result ? this.formatAscApiKeyResult(ascApiKeyResult.result) : null),
|
||||
};
|
||||
|
||||
@@ -17,7 +17,7 @@ import { AppQuery } from '../../../graphql/queries/AppQuery';
|
||||
import { createTestProject } from '../../../project/__tests__/project-utils';
|
||||
import { getBundleIdentifierAsync } from '../../../project/ios/bundleIdentifier';
|
||||
import { promptAsync } from '../../../prompts';
|
||||
import { getVcsClient } from '../../../vcs';
|
||||
import { resolveVcsClient } from '../../../vcs';
|
||||
import { SubmissionContext, createSubmissionContextAsync } from '../../context';
|
||||
import {
|
||||
AscApiKeySource,
|
||||
@@ -42,7 +42,7 @@ const testProject = createTestProject(testProjectId, mockJester.accounts[0].name
|
||||
});
|
||||
const projectId = uuidv4();
|
||||
|
||||
const vcsClient = getVcsClient();
|
||||
const vcsClient = resolveVcsClient();
|
||||
|
||||
async function getIosSubmissionContextAsync(): Promise<SubmissionContext<Platform.IOS>> {
|
||||
const graphqlClient = instance(mock<ExpoGraphqlClient>());
|
||||
@@ -57,6 +57,7 @@ async function getIosSubmissionContextAsync(): Promise<SubmissionContext<Platfor
|
||||
language: 'en-US',
|
||||
},
|
||||
nonInteractive: true,
|
||||
isVerboseFastlaneEnabled: false,
|
||||
actor: mockJester,
|
||||
graphqlClient,
|
||||
analytics,
|
||||
@@ -249,6 +250,7 @@ describe(getAscApiKeyResultAsync, () => {
|
||||
language: 'en-US',
|
||||
},
|
||||
nonInteractive: true,
|
||||
isVerboseFastlaneEnabled: false,
|
||||
actor: mockJester,
|
||||
graphqlClient,
|
||||
analytics,
|
||||
|
||||
@@ -13,7 +13,7 @@ import { BuildFragment, SubmissionArchiveSourceType } from '../../../graphql/gen
|
||||
import { SubmissionMutation } from '../../../graphql/mutations/SubmissionMutation';
|
||||
import { createTestProject } from '../../../project/__tests__/project-utils';
|
||||
import { getOwnerAccountForProjectIdAsync } from '../../../project/projectUtils';
|
||||
import { getVcsClient } from '../../../vcs';
|
||||
import { resolveVcsClient } from '../../../vcs';
|
||||
import {
|
||||
ArchiveResolverContext,
|
||||
ArchiveSource,
|
||||
@@ -53,7 +53,7 @@ jest.mock('../../commons', () => {
|
||||
};
|
||||
});
|
||||
|
||||
const vcsClient = getVcsClient();
|
||||
const vcsClient = resolveVcsClient();
|
||||
|
||||
describe(IosSubmitCommand, () => {
|
||||
const testProject = createTestProject(testProjectId, mockJester.accounts[0].name, {});
|
||||
@@ -100,6 +100,7 @@ describe(IosSubmitCommand, () => {
|
||||
ascAppId: '12345678',
|
||||
},
|
||||
nonInteractive: false,
|
||||
isVerboseFastlaneEnabled: false,
|
||||
actor: mockJester,
|
||||
graphqlClient,
|
||||
analytics,
|
||||
@@ -134,6 +135,7 @@ describe(IosSubmitCommand, () => {
|
||||
language: 'en-US',
|
||||
},
|
||||
nonInteractive: true,
|
||||
isVerboseFastlaneEnabled: false,
|
||||
actor: mockJester,
|
||||
graphqlClient,
|
||||
analytics,
|
||||
@@ -169,6 +171,7 @@ describe(IosSubmitCommand, () => {
|
||||
ascAppId: '12345678',
|
||||
},
|
||||
nonInteractive: false,
|
||||
isVerboseFastlaneEnabled: false,
|
||||
actor: mockJester,
|
||||
graphqlClient,
|
||||
analytics,
|
||||
@@ -186,7 +189,9 @@ describe(IosSubmitCommand, () => {
|
||||
appleIdUsername: '[email protected]',
|
||||
appleAppSpecificPassword: 'abcd-abcd-abcd-abcd',
|
||||
ascAppIdentifier: '12345678',
|
||||
isVerboseFastlaneEnabled: false,
|
||||
},
|
||||
submittedBuildId: undefined,
|
||||
});
|
||||
|
||||
delete process.env.EXPO_APPLE_APP_SPECIFIC_PASSWORD;
|
||||
@@ -231,6 +236,7 @@ describe(IosSubmitCommand, () => {
|
||||
ascAppId: '12345678',
|
||||
},
|
||||
nonInteractive: false,
|
||||
isVerboseFastlaneEnabled: false,
|
||||
actor: mockJester,
|
||||
graphqlClient,
|
||||
analytics,
|
||||
@@ -248,6 +254,7 @@ describe(IosSubmitCommand, () => {
|
||||
appleIdUsername: '[email protected]',
|
||||
appleAppSpecificPassword: 'abcd-abcd-abcd-abcd',
|
||||
ascAppIdentifier: '87654321',
|
||||
isVerboseFastlaneEnabled: false,
|
||||
},
|
||||
archiveSource: undefined,
|
||||
});
|
||||
@@ -288,6 +295,7 @@ describe(IosSubmitCommand, () => {
|
||||
ascAppId: '12345678',
|
||||
},
|
||||
nonInteractive: false,
|
||||
isVerboseFastlaneEnabled: false,
|
||||
actor: mockJester,
|
||||
graphqlClient,
|
||||
analytics,
|
||||
@@ -305,6 +313,7 @@ describe(IosSubmitCommand, () => {
|
||||
appleIdUsername: '[email protected]',
|
||||
appleAppSpecificPassword: 'abcd-abcd-abcd-abcd',
|
||||
ascAppIdentifier: '12345678',
|
||||
isVerboseFastlaneEnabled: false,
|
||||
},
|
||||
archiveSource: undefined,
|
||||
});
|
||||
@@ -350,6 +359,7 @@ describe(IosSubmitCommand, () => {
|
||||
ascAppId: '12345678',
|
||||
},
|
||||
nonInteractive: false,
|
||||
isVerboseFastlaneEnabled: false,
|
||||
actor: mockJester,
|
||||
graphqlClient,
|
||||
analytics,
|
||||
@@ -368,6 +378,7 @@ describe(IosSubmitCommand, () => {
|
||||
appleIdUsername: '[email protected]',
|
||||
appleAppSpecificPassword: 'abcd-abcd-abcd-abcd',
|
||||
ascAppIdentifier: '12345678',
|
||||
isVerboseFastlaneEnabled: false,
|
||||
},
|
||||
archiveSource: undefined,
|
||||
});
|
||||
|
||||
@@ -109,6 +109,7 @@ function mockUpdateChannel({
|
||||
function mockUpdateBranches(branchNames: string[]): UpdateBranch[] {
|
||||
return branchNames.map(branchName => ({
|
||||
id: 'f9dc4dbb-663f-4a19-8cf2-a783b484d2db',
|
||||
latestActivity: '2022-12-07T02:24:29.786Z',
|
||||
name: branchName ?? 'default-branch-name',
|
||||
app: {} as App,
|
||||
appId: '123',
|
||||
@@ -152,6 +153,7 @@ function mockUpdateBranches(branchNames: string[]): UpdateBranch[] {
|
||||
updates: [],
|
||||
runtimes: { edges: [], pageInfo: { hasNextPage: false, hasPreviousPage: false } },
|
||||
__typename: 'UpdateBranch' as const,
|
||||
latestActivity: '2022-12-07T02:24:29.786Z',
|
||||
},
|
||||
codeSigningInfo: null,
|
||||
__typename: 'Update' as const,
|
||||
|
||||
@@ -2,6 +2,8 @@ import { ExpoConfig } from '@expo/config';
|
||||
import { AndroidConfig, AndroidManifest, XML } from '@expo/config-plugins';
|
||||
|
||||
import { RequestedPlatform } from '../../platform';
|
||||
import { isModernExpoUpdatesCLIWithRuntimeVersionCommandSupportedAsync } from '../../project/projectUtils';
|
||||
import { expoUpdatesCommandAsync } from '../../utils/expoUpdatesCli';
|
||||
import { ensureValidVersions } from '../utils';
|
||||
|
||||
/**
|
||||
@@ -13,6 +15,15 @@ export async function syncUpdatesConfigurationAsync(
|
||||
): Promise<void> {
|
||||
ensureValidVersions(exp, RequestedPlatform.Android);
|
||||
|
||||
if (await isModernExpoUpdatesCLIWithRuntimeVersionCommandSupportedAsync(projectDir)) {
|
||||
await expoUpdatesCommandAsync(projectDir, [
|
||||
'configuration:syncnative',
|
||||
'--platform',
|
||||
'android',
|
||||
]);
|
||||
return;
|
||||
}
|
||||
|
||||
// sync AndroidManifest.xml
|
||||
const androidManifestPath = await AndroidConfig.Paths.getAndroidManifestAsync(projectDir);
|
||||
const androidManifest = await getAndroidManifestAsync(projectDir);
|
||||
@@ -32,6 +43,7 @@ export async function syncUpdatesConfigurationAsync(
|
||||
path: stringsJSONPath,
|
||||
});
|
||||
|
||||
// TODO(wschurman): this dependency needs to be updated for fingerprint
|
||||
const updatedStringsResourceXML =
|
||||
await AndroidConfig.Updates.applyRuntimeVersionFromConfigForProjectRootAsync(
|
||||
projectDir,
|
||||
|
||||
@@ -231,7 +231,7 @@ function warnEASUpdatesManualConfig({
|
||||
)}`
|
||||
);
|
||||
Log.warn(
|
||||
`Finish configuring EAS Update by adding the following to the project app.config.js:\n${learnMore(
|
||||
`Add the following EAS Update key-values to the project app.config.js:\n${learnMore(
|
||||
'https://expo.fyi/eas-update-config'
|
||||
)}\n`
|
||||
);
|
||||
|
||||
@@ -2,6 +2,8 @@ import { ExpoConfig } from '@expo/config';
|
||||
import { IOSConfig } from '@expo/config-plugins';
|
||||
|
||||
import { RequestedPlatform } from '../../platform';
|
||||
import { isModernExpoUpdatesCLIWithRuntimeVersionCommandSupportedAsync } from '../../project/projectUtils';
|
||||
import { expoUpdatesCommandAsync } from '../../utils/expoUpdatesCli';
|
||||
import { readPlistAsync, writePlistAsync } from '../../utils/plist';
|
||||
import { Client } from '../../vcs/vcs';
|
||||
import { ensureValidVersions } from '../utils';
|
||||
@@ -12,7 +14,14 @@ export async function syncUpdatesConfigurationAsync(
|
||||
exp: ExpoConfig
|
||||
): Promise<void> {
|
||||
ensureValidVersions(exp, RequestedPlatform.Ios);
|
||||
|
||||
if (await isModernExpoUpdatesCLIWithRuntimeVersionCommandSupportedAsync(projectDir)) {
|
||||
await expoUpdatesCommandAsync(projectDir, ['configuration:syncnative', '--platform', 'ios']);
|
||||
return;
|
||||
}
|
||||
|
||||
const expoPlist = await readExpoPlistAsync(projectDir);
|
||||
// TODO(wschurman): this dependency needs to be updated for fingerprint
|
||||
const updatedExpoPlist = await IOSConfig.Updates.setUpdatesConfigAsync(
|
||||
projectDir,
|
||||
exp,
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
import spawnAsync from '@expo/spawn-async';
|
||||
import resolveFrom, { silent as silentResolveFrom } from 'resolve-from';
|
||||
|
||||
import { link } from '../log';
|
||||
|
||||
export class ExpoUpdatesCLIModuleNotFoundError extends Error {}
|
||||
export class ExpoUpdatesCLIInvalidCommandError extends Error {}
|
||||
|
||||
export async function expoUpdatesCommandAsync(projectDir: string, args: string[]): Promise<string> {
|
||||
let expoUpdatesCli;
|
||||
try {
|
||||
expoUpdatesCli =
|
||||
silentResolveFrom(projectDir, 'expo-updates/bin/cli') ??
|
||||
resolveFrom(projectDir, 'expo-updates/bin/cli.js');
|
||||
} catch (e: any) {
|
||||
if (e.code === 'MODULE_NOT_FOUND') {
|
||||
throw new ExpoUpdatesCLIModuleNotFoundError(
|
||||
`The \`expo-updates\` package was not found. Follow the installation directions at ${link(
|
||||
'https://docs.expo.dev/bare/installing-expo-modules/'
|
||||
)}`
|
||||
);
|
||||
}
|
||||
throw e;
|
||||
}
|
||||
|
||||
try {
|
||||
return (await spawnAsync(expoUpdatesCli, args)).stdout;
|
||||
} catch (e: any) {
|
||||
if (e.stderr && typeof e.stderr === 'string' && e.stderr.includes('Invalid command')) {
|
||||
throw new ExpoUpdatesCLIInvalidCommandError(
|
||||
`The command specified by ${args} was not valid in the \`expo-updates\` CLI.`
|
||||
);
|
||||
}
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
@@ -111,6 +111,11 @@ export default class GitClient extends Client {
|
||||
return await this.hasUncommittedChangesAsync();
|
||||
}
|
||||
|
||||
public override async showChangedFilesAsync(): Promise<void> {
|
||||
const gitStatusOutput = await gitStatusAsync({ showUntracked: true });
|
||||
Log.log(gitStatusOutput);
|
||||
}
|
||||
|
||||
public override async hasUncommittedChangesAsync(): Promise<boolean> {
|
||||
const changes = await gitStatusAsync({ showUntracked: true });
|
||||
return changes.length > 0;
|
||||
|
||||
@@ -1,14 +1,13 @@
|
||||
import chalk from 'chalk';
|
||||
|
||||
import GitClient from './clients/git';
|
||||
import GitNoCommitClient from './clients/gitNoCommit';
|
||||
import NoVcsClient from './clients/noVcs';
|
||||
import { Client } from './vcs';
|
||||
|
||||
const NO_VCS_WARNING = `Using EAS CLI without version control system is not recommended, use this mode only if you know what you are doing.`;
|
||||
|
||||
let vcsClient = resolveDefaultVcsClient();
|
||||
|
||||
function resolveDefaultVcsClient(): Client {
|
||||
export function resolveVcsClient(requireCommit: boolean = false): Client {
|
||||
if (process.env.EAS_NO_VCS) {
|
||||
if (process.env.NODE_ENV !== 'test') {
|
||||
// This log might be printed before cli arguments are evaluated,
|
||||
@@ -19,13 +18,8 @@ function resolveDefaultVcsClient(): Client {
|
||||
}
|
||||
return new NoVcsClient();
|
||||
}
|
||||
if (requireCommit) {
|
||||
return new GitClient();
|
||||
}
|
||||
return new GitNoCommitClient();
|
||||
}
|
||||
|
||||
export function setVcsClient(client: Client): void {
|
||||
vcsClient = client;
|
||||
}
|
||||
|
||||
export function getVcsClient(): Client {
|
||||
return vcsClient;
|
||||
}
|
||||
@@ -51,6 +51,9 @@ export abstract class Client {
|
||||
// `commitAsync({ commitAllFiles: false })`
|
||||
public async showDiffAsync(): Promise<void> {}
|
||||
|
||||
/** (optional) print list of changed files */
|
||||
public async showChangedFilesAsync(): Promise<void> {}
|
||||
|
||||
// (optional) returns hash of the last commit
|
||||
// used for metadata - implementation can be safely skipped
|
||||
public async getCommitHashAsync(): Promise<string | undefined> {
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@expo/eas-json",
|
||||
"description": "A library for interacting with eas.json",
|
||||
"version": "7.1.3",
|
||||
"version": "7.8.0",
|
||||
"author": "Expo <[email protected]>",
|
||||
"bugs": "https://github.com/expo/eas-cli/issues",
|
||||
"dependencies": {
|
||||
"@babel/code-frame": "7.23.5",
|
||||
"@expo/eas-build-job": "1.0.61",
|
||||
"@expo/eas-build-job": "1.0.95",
|
||||
"chalk": "4.1.2",
|
||||
"env-string": "1.0.1",
|
||||
"fs-extra": "11.2.0",
|
||||
|
||||
@@ -210,6 +210,10 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
"config": {
|
||||
"description": "Custom workflow file name that will be used to run this build. You can also specify this property on platform level for platform-specific workflows. Learn more: https://docs.expo.dev/custom-builds/get-started/",
|
||||
"type": "string"
|
||||
},
|
||||
"android": {
|
||||
"$ref": "#/definitions/BuildProfileAndroid"
|
||||
},
|
||||
@@ -235,25 +239,32 @@
|
||||
"anyOf": [
|
||||
{
|
||||
"enum": [
|
||||
"default",
|
||||
"auto",
|
||||
"latest",
|
||||
"stable",
|
||||
"sdk-50",
|
||||
"sdk-49",
|
||||
"ubuntu-22.04-jdk-17-ndk-r21e",
|
||||
"ubuntu-22.04-jdk-11-ndk-r21e",
|
||||
"ubuntu-22.04-jdk-8-ndk-r21e",
|
||||
"ubuntu-20.04-jdk-11-ndk-r21e",
|
||||
"ubuntu-22.04-jdk-8-ndk-r21e",
|
||||
"ubuntu-20.04-jdk-8-ndk-r21e",
|
||||
"ubuntu-20.04-jdk-11-ndk-r19c",
|
||||
"ubuntu-20.04-jdk-8-ndk-r19c"
|
||||
],
|
||||
"markdownEnumDescriptions": [
|
||||
"- React Native `>=0.68.0` - `ubuntu-22.04-jdk-11-ndk-r21e`\n- React Native `<0.68.0` - `ubuntu-20.04-jdk-8-ndk-r19c`",
|
||||
"`ubuntu-22.04-jdk-17-ndk-r21e`",
|
||||
"`ubuntu-22.04-jdk-11-ndk-r21e`"
|
||||
"When using this option the build image is selected automatically based on the project configuration, detected Expo SDK and React Native versions.",
|
||||
"The latest Android image currently available. It is resolved to `ubuntu-22.04-jdk-17-ndk-r21e`. The `latest` to image mapping will be updated as new images are released.",
|
||||
"The recommended image for SDK 50 builds: `ubuntu-22.04-jdk-17-ndk-r21e`",
|
||||
"The recommended image for SDK 49 builds: `ubuntu-22.04-jdk-11-ndk-r21e`"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "string"
|
||||
"deprecated": true,
|
||||
"enum": ["default", "stable"],
|
||||
"markdownEnumDescriptions": [
|
||||
"This image tag is deprecated, please use other image tags or images directly instead.",
|
||||
"This image tag is deprecated, please use other image tags or images directly instead."
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -311,6 +322,10 @@
|
||||
"description": "[DEPRECATED] Use `applicationArchivePath` instead. Path (or pattern) where EAS Build is going to look for the build artifacts. See: https://github.com/mrmlnc/fast-glob#pattern-syntax",
|
||||
"markdownDescription": "[DEPRECATED] Use `applicationArchivePath` instead. Path (or pattern) where EAS Build is going to look for the build artifacts. EAS Build uses the `fast-glob` npm package for pattern matching ([see their README to learn more about the syntax you can use](https://github.com/mrmlnc/fast-glob#pattern-syntax)).",
|
||||
"default": "android/app/build/outputs/**/*.{apk,aab}"
|
||||
},
|
||||
"config": {
|
||||
"description": "Custom workflow file name that will be used to run this Android build. You can also specify this property on profile levle for platform-agnostic workflows. Learn more: https://docs.expo.dev/custom-builds/get-started/",
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -355,11 +370,30 @@
|
||||
"anyOf": [
|
||||
{
|
||||
"enum": [
|
||||
"default",
|
||||
"auto",
|
||||
"latest",
|
||||
"sdk-50",
|
||||
"sdk-49",
|
||||
"macos-sonoma-14.4-xcode-15.3",
|
||||
"macos-ventura-13.6-xcode-15.2",
|
||||
"macos-ventura-13.6-xcode-15.1",
|
||||
"macos-ventura-13.6-xcode-15.0",
|
||||
"macos-ventura-13.6-xcode-15.0"
|
||||
],
|
||||
"markdownEnumDescriptions": [
|
||||
"When using this option the build image is selected automatically based on the project configuration, detected Expo SDK and React Native versions.",
|
||||
"The latest iOS image currently available. It is resolved to `macos-sonoma-14.4-xcode-15.3`. The `latest` to image mapping will be updated as new images are released.",
|
||||
"The recommended image for SDK 50 builds: `macos-ventura-13.6-xcode-15.2`",
|
||||
"The recommended image for SDK 49 builds: `macos-ventura-13.6-xcode-15.2`"
|
||||
]
|
||||
},
|
||||
{
|
||||
"deprecated": true,
|
||||
"enum": [
|
||||
"default",
|
||||
"stable",
|
||||
"macos-monterey-12.4-xcode-13.4",
|
||||
"macos-monterey-12.3-xcode-13.3",
|
||||
"macos-monterey-12.1-xcode-13.2",
|
||||
"macos-ventura-13.4-xcode-14.3.1",
|
||||
"macos-ventura-13.3-xcode-14.3",
|
||||
"macos-monterey-12.6-xcode-14.2",
|
||||
@@ -367,21 +401,16 @@
|
||||
"macos-monterey-12.6-xcode-14.0"
|
||||
],
|
||||
"markdownEnumDescriptions": [
|
||||
"`macos-ventura-13.4-xcode-14.3.1`",
|
||||
"`macos-ventura-13.6-xcode-15.2`"
|
||||
]
|
||||
},
|
||||
{
|
||||
"deprecated": true,
|
||||
"enum": [
|
||||
"macos-monterey-12.4-xcode-13.4",
|
||||
"macos-monterey-12.3-xcode-13.3",
|
||||
"macos-monterey-12.1-xcode-13.2"
|
||||
],
|
||||
"markdownEnumDescriptions": [
|
||||
"This image is deprecated, please use one of the more recent images instead.",
|
||||
"This image is deprecated, please use one of the more recent images instead.",
|
||||
"This image is deprecated, please use one of the more recent images instead."
|
||||
"This image tag is deprecated, please use other image tags or images directly instead.",
|
||||
"This image tag is deprecated, please use other image tags or images directly instead.",
|
||||
"This image is using Xcode in version lower then 15. Apple's new requirement states that starting on April 29th, 2024, apps uploaded to App Store Connect must be built with Xcode 15 for iOS 17, iPadOS 17, tvOS 17, or watchOS 10. Start using Xcode 15 image today by setting `macos-sonoma-14.4-xcode-15.3` or `latest` as your image value. This image will be removed from EAS Build on May 29th, 2024. Learn more: https://expo.dev/changelog/2024/03-29-eas-build-upcoming-ios-images-updates.",
|
||||
"This image is using Xcode in version lower then 15. Apple's new requirement states that starting on April 29th, 2024, apps uploaded to App Store Connect must be built with Xcode 15 for iOS 17, iPadOS 17, tvOS 17, or watchOS 10. Start using Xcode 15 image today by setting `macos-sonoma-14.4-xcode-15.3` or `latest` as your image value. This image will be removed from EAS Build on May 29th, 2024. Learn more: https://expo.dev/changelog/2024/03-29-eas-build-upcoming-ios-images-updates.",
|
||||
"This image is using Xcode in version lower then 15. Apple's new requirement states that starting on April 29th, 2024, apps uploaded to App Store Connect must be built with Xcode 15 for iOS 17, iPadOS 17, tvOS 17, or watchOS 10. Start using Xcode 15 image today by setting `macos-sonoma-14.4-xcode-15.3` or `latest` as your image value. This image will be removed from EAS Build on May 29th, 2024. Learn more: https://expo.dev/changelog/2024/03-29-eas-build-upcoming-ios-images-updates.",
|
||||
"This image is using Xcode in version lower then 15. Apple's new requirement states that starting on April 29th, 2024, apps uploaded to App Store Connect must be built with Xcode 15 for iOS 17, iPadOS 17, tvOS 17, or watchOS 10. Start using Xcode 15 image today by setting `macos-sonoma-14.4-xcode-15.3` or `latest` as your image value. This image will be removed from EAS Build on May 29th, 2024. Learn more: https://expo.dev/changelog/2024/03-29-eas-build-upcoming-ios-images-updates.",
|
||||
"This image is using Xcode in version lower then 15. Apple's new requirement states that starting on April 29th, 2024, apps uploaded to App Store Connect must be built with Xcode 15 for iOS 17, iPadOS 17, tvOS 17, or watchOS 10. Start using Xcode 15 image today by setting `macos-sonoma-14.4-xcode-15.3` or `latest` as your image value. This image will be removed from EAS Build on May 29th, 2024. Learn more: https://expo.dev/changelog/2024/03-29-eas-build-upcoming-ios-images-updates.",
|
||||
"This image is using Xcode in version lower then 15. Apple's new requirement states that starting on April 29th, 2024, apps uploaded to App Store Connect must be built with Xcode 15 for iOS 17, iPadOS 17, tvOS 17, or watchOS 10. Start using Xcode 15 image today by setting `macos-sonoma-14.4-xcode-15.3` or `latest` as your image value. This image will be removed from EAS Build on May 29th, 2024. Learn more: https://expo.dev/changelog/2024/03-29-eas-build-upcoming-ios-images-updates.",
|
||||
"This image is using Xcode in version lower then 15. Apple's new requirement states that starting on April 29th, 2024, apps uploaded to App Store Connect must be built with Xcode 15 for iOS 17, iPadOS 17, tvOS 17, or watchOS 10. Start using Xcode 15 image today by setting `macos-sonoma-14.4-xcode-15.3` or `latest` as your image value. This image will be removed from EAS Build on May 29th, 2024. Learn more: https://expo.dev/changelog/2024/03-29-eas-build-upcoming-ios-images-updates.",
|
||||
"This image is using Xcode in version lower then 15. Apple's new requirement states that starting on April 29th, 2024, apps uploaded to App Store Connect must be built with Xcode 15 for iOS 17, iPadOS 17, tvOS 17, or watchOS 10. Start using Xcode 15 image today by setting `macos-sonoma-14.4-xcode-15.3` or `latest` as your image value. This image will be removed from EAS Build on May 29th, 2024. Learn more: https://expo.dev/changelog/2024/03-29-eas-build-upcoming-ios-images-updates."
|
||||
]
|
||||
}
|
||||
]
|
||||
@@ -433,6 +462,10 @@
|
||||
"type": "string",
|
||||
"description": "[DEPRECATED] Use `applicationArchivePath` instead. Path (or pattern) where EAS Build is going to look for the build artifacts. See: https://github.com/mrmlnc/fast-glob#pattern-syntax",
|
||||
"markdownDescription": "[DEPRECATED] Use `applicationArchivePath` instead. Path (or pattern) where EAS Build is going to look for the build artifacts.\n\nEAS Build uses the `fast-glob` npm package for pattern matching, ([See their README to learn more about the syntax you can use](https://github.com/mrmlnc/fast-glob#pattern-syntax)).\n\nYou should modify that path only if you are using a custom `Gymfile`.\n\nThe default is `ios/build/Build/Products/*-iphonesimulator/*.app` when building for simulator and `ios/build/*.ipa` in other cases."
|
||||
},
|
||||
"config": {
|
||||
"description": "Custom workflow file name that will be used to run this iOS build. You can also specify this property on profile levle for platform-agnostic workflows. Learn more: https://docs.expo.dev/custom-builds/get-started/",
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -1354,10 +1354,10 @@
|
||||
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.56.0.tgz#ef20350fec605a7f7035a01764731b2de0f3782b"
|
||||
integrity sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==
|
||||
|
||||
"@expo/apple-utils@1.4.0":
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/@expo/apple-utils/-/apple-utils-1.4.0.tgz#5b8be01673da488886ec8df9ea4b7ba21ad3b775"
|
||||
integrity sha512-tbSWy10f/xdfUb3TZkshRLk4zIuG2wNIyuypUX1jvDrOt0bokSbwmIVYkkLRazZ+mOR0ZRcDUuBHKkZmyGuegQ==
|
||||
"@expo/apple-utils@1.7.0":
|
||||
version "1.7.0"
|
||||
resolved "https://registry.yarnpkg.com/@expo/apple-utils/-/apple-utils-1.7.0.tgz#b8ac565f37b077c3a1bb562b8db5c5864bd6aba7"
|
||||
integrity sha512-RVzZTiOeuNT04fE5V4f536XmIyxbRFOJ3m/rE6kImbIZ65upOS7xdIQpihEdYOiHB5uZAcD3JClUEsMfFhTv4w==
|
||||
|
||||
"@expo/bunyan@^4.0.0":
|
||||
version "4.0.0"
|
||||
@@ -1462,13 +1462,24 @@
|
||||
slugify "^1.3.4"
|
||||
sucrase "^3.20.0"
|
||||
|
||||
"@expo/[email protected].61":
|
||||
version "1.0.61"
|
||||
resolved "https://registry.yarnpkg.com/@expo/eas-build-job/-/eas-build-job-1.0.61.tgz#6dc3818e82787089027de02ba76b857eb5561e42"
|
||||
integrity sha512-dlE88FLPShcJio7BYybuUilEgm41oxCkgGHET3PLvLRQsC3qCkV3jlSCQyQTxwCEamWKTlxS8pDMyb0s1OfqUA==
|
||||
"@expo/[email protected].92":
|
||||
version "1.0.92"
|
||||
resolved "https://registry.yarnpkg.com/@expo/eas-build-job/-/eas-build-job-1.0.92.tgz#e32a528a484b12292bc107c58a39374785ad65af"
|
||||
integrity sha512-IcXt41YGN1Teo16PGCAHim745969jXKUTroQhZJiFAkam56xLoZeefvMBQUqS4bpustBkU1RBDU7bud5So/WQQ==
|
||||
dependencies:
|
||||
joi "^17.11.0"
|
||||
semver "^7.5.4"
|
||||
zod "^3.22.4"
|
||||
|
||||
"@expo/[email protected]":
|
||||
version "1.0.95"
|
||||
resolved "https://registry.yarnpkg.com/@expo/eas-build-job/-/eas-build-job-1.0.95.tgz#182a4d90a3e7abe19efcc2c93f42405e007398fe"
|
||||
integrity sha512-IsigaF7VEcg8+/jt2Hn7qJ2UYZqTl/70DfHwLO6g7UPw6LbWtrAbpMjIRj1ZgnbSA3QZRRxRspFXLqOkpxVR+w==
|
||||
dependencies:
|
||||
"@expo/logger" "1.0.57"
|
||||
joi "^17.11.0"
|
||||
semver "^7.5.4"
|
||||
zod "^3.22.4"
|
||||
|
||||
"@expo/fingerprint@^0.6.0":
|
||||
version "0.6.0"
|
||||
@@ -1665,16 +1676,18 @@
|
||||
dependencies:
|
||||
cross-spawn "^7.0.3"
|
||||
|
||||
"@expo/[email protected].67":
|
||||
version "1.0.67"
|
||||
resolved "https://registry.yarnpkg.com/@expo/steps/-/steps-1.0.67.tgz#cde00c69fe9a1cd44d1d4041717877de33cfd31f"
|
||||
integrity sha512-vgmCke1yNj9OjxzzQuTlAnNYI452X6s8VDmSe/olFsJfA+8F3g8coi7CJ3j+rzrpY+LvVYTC27/84Mno0uQSrg==
|
||||
"@expo/[email protected].92":
|
||||
version "1.0.92"
|
||||
resolved "https://registry.yarnpkg.com/@expo/steps/-/steps-1.0.92.tgz#79f760e176be82bbb9e678b88e2c343e9ae7c333"
|
||||
integrity sha512-A/J6EGnqpw1928BPVMHwFyW+4UyCkdTYVAyCsHPTg4Pi76P0XFfhMdU5YQcgnZSWgum+CMMaN3AorDV52Mf11Q==
|
||||
dependencies:
|
||||
"@expo/eas-build-job" "1.0.92"
|
||||
"@expo/logger" "1.0.57"
|
||||
"@expo/spawn-async" "^1.7.2"
|
||||
arg "^5.0.2"
|
||||
fs-extra "^11.2.0"
|
||||
joi "^17.11.0"
|
||||
jsep "^1.3.8"
|
||||
lodash.clonedeep "^4.5.0"
|
||||
lodash.get "^4.4.2"
|
||||
this-file "^2.0.3"
|
||||
@@ -4818,13 +4831,13 @@ bl@^4.0.3, bl@^4.1.0:
|
||||
inherits "^2.0.4"
|
||||
readable-stream "^3.4.0"
|
||||
|
||||
[email protected].1:
|
||||
version "1.20.1"
|
||||
resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668"
|
||||
integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==
|
||||
[email protected].2:
|
||||
version "1.20.2"
|
||||
resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd"
|
||||
integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==
|
||||
dependencies:
|
||||
bytes "3.1.2"
|
||||
content-type "~1.0.4"
|
||||
content-type "~1.0.5"
|
||||
debug "2.6.9"
|
||||
depd "2.0.0"
|
||||
destroy "1.2.0"
|
||||
@@ -4832,7 +4845,7 @@ [email protected]:
|
||||
iconv-lite "0.4.24"
|
||||
on-finished "2.4.1"
|
||||
qs "6.11.0"
|
||||
raw-body "2.5.1"
|
||||
raw-body "2.5.2"
|
||||
type-is "~1.6.18"
|
||||
unpipe "1.0.0"
|
||||
|
||||
@@ -5577,10 +5590,10 @@ [email protected]:
|
||||
dependencies:
|
||||
safe-buffer "5.2.1"
|
||||
|
||||
content-type@^1.0.4, content-type@~1.0.4:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
|
||||
integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
|
||||
content-type@^1.0.4, content-type@~1.0.4, content-type@~1.0.5:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918"
|
||||
integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==
|
||||
|
||||
[email protected]:
|
||||
version "7.0.0"
|
||||
@@ -5672,10 +5685,10 @@ [email protected]:
|
||||
resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
|
||||
integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==
|
||||
|
||||
cookie@0.5.0:
|
||||
version "0.5.0"
|
||||
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b"
|
||||
integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==
|
||||
cookie@0.6.0:
|
||||
version "0.6.0"
|
||||
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051"
|
||||
integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==
|
||||
|
||||
core-util-is@~1.0.0:
|
||||
version "1.0.2"
|
||||
@@ -5838,10 +5851,10 @@ [email protected], debug@^2.2.0:
|
||||
dependencies:
|
||||
ms "2.0.0"
|
||||
|
||||
debug@4, debug@^4.1.0, debug@^4.1.1:
|
||||
version "4.2.0"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1"
|
||||
integrity sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==
|
||||
debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4:
|
||||
version "4.3.4"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
|
||||
integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
|
||||
dependencies:
|
||||
ms "2.1.2"
|
||||
|
||||
@@ -5852,27 +5865,6 @@ debug@^3.2.7:
|
||||
dependencies:
|
||||
ms "^2.1.1"
|
||||
|
||||
debug@^4.3.1:
|
||||
version "4.3.2"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b"
|
||||
integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==
|
||||
dependencies:
|
||||
ms "2.1.2"
|
||||
|
||||
debug@^4.3.2, debug@^4.3.3:
|
||||
version "4.3.3"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664"
|
||||
integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==
|
||||
dependencies:
|
||||
ms "2.1.2"
|
||||
|
||||
debug@^4.3.4:
|
||||
version "4.3.4"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
|
||||
integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
|
||||
dependencies:
|
||||
ms "2.1.2"
|
||||
|
||||
debuglog@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492"
|
||||
@@ -6422,25 +6414,26 @@ es-to-primitive@^1.2.1:
|
||||
is-date-object "^1.0.1"
|
||||
is-symbol "^1.0.2"
|
||||
|
||||
es5-ext@^0.10.35, es5-ext@^0.10.50:
|
||||
version "0.10.53"
|
||||
resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1"
|
||||
integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==
|
||||
es5-ext@^0.10.35, es5-ext@^0.10.50, es5-ext@^0.10.62, es5-ext@~0.10.14:
|
||||
version "0.10.63"
|
||||
resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.63.tgz#9c222a63b6a332ac80b1e373b426af723b895bd6"
|
||||
integrity sha512-hUCZd2Byj/mNKjfP9jXrdVZ62B8KuA/VoK7X8nUh5qT+AxDmcbvZz041oDVZdbIN1qW6XY9VDNwzkvKnZvK2TQ==
|
||||
dependencies:
|
||||
es6-iterator "~2.0.3"
|
||||
es6-symbol "~3.1.3"
|
||||
next-tick "~1.0.0"
|
||||
es6-iterator "^2.0.3"
|
||||
es6-symbol "^3.1.3"
|
||||
esniff "^2.0.1"
|
||||
next-tick "^1.1.0"
|
||||
|
||||
es6-iterator@~2.0.3:
|
||||
es6-iterator@^2.0.3:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7"
|
||||
integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c=
|
||||
integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==
|
||||
dependencies:
|
||||
d "1"
|
||||
es5-ext "^0.10.35"
|
||||
es6-symbol "^3.1.1"
|
||||
|
||||
es6-symbol@^3.1.1, es6-symbol@~3.1.3:
|
||||
es6-symbol@^3.1.1, es6-symbol@^3.1.3:
|
||||
version "3.1.3"
|
||||
resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18"
|
||||
integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==
|
||||
@@ -6675,6 +6668,16 @@ [email protected]:
|
||||
strip-ansi "^6.0.1"
|
||||
text-table "^0.2.0"
|
||||
|
||||
esniff@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/esniff/-/esniff-2.0.1.tgz#a4d4b43a5c71c7ec51c51098c1d8a29081f9b308"
|
||||
integrity sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==
|
||||
dependencies:
|
||||
d "^1.0.1"
|
||||
es5-ext "^0.10.62"
|
||||
event-emitter "^0.3.5"
|
||||
type "^2.7.2"
|
||||
|
||||
espree@^9.6.0, espree@^9.6.1:
|
||||
version "9.6.1"
|
||||
resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f"
|
||||
@@ -6723,6 +6726,14 @@ etag@~1.8.1:
|
||||
resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
|
||||
integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==
|
||||
|
||||
event-emitter@^0.3.5:
|
||||
version "0.3.5"
|
||||
resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39"
|
||||
integrity sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==
|
||||
dependencies:
|
||||
d "1"
|
||||
es5-ext "~0.10.14"
|
||||
|
||||
event-target-shim@^5.0.0:
|
||||
version "5.0.1"
|
||||
resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789"
|
||||
@@ -6810,17 +6821,17 @@ expect@^29.7.0:
|
||||
jest-message-util "^29.7.0"
|
||||
jest-util "^29.7.0"
|
||||
|
||||
[email protected]8.2:
|
||||
version "4.18.2"
|
||||
resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59"
|
||||
integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==
|
||||
[email protected]9.2:
|
||||
version "4.19.2"
|
||||
resolved "https://registry.yarnpkg.com/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465"
|
||||
integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==
|
||||
dependencies:
|
||||
accepts "~1.3.8"
|
||||
array-flatten "1.1.1"
|
||||
body-parser "1.20.1"
|
||||
body-parser "1.20.2"
|
||||
content-disposition "0.5.4"
|
||||
content-type "~1.0.4"
|
||||
cookie "0.5.0"
|
||||
cookie "0.6.0"
|
||||
cookie-signature "1.0.6"
|
||||
debug "2.6.9"
|
||||
depd "2.0.0"
|
||||
@@ -7094,15 +7105,10 @@ flatted@^3.1.0:
|
||||
resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.1.tgz#bbef080d95fca6709362c73044a1634f7c6e7d05"
|
||||
integrity sha512-OMQjaErSFHmHqZe+PSidH5n8j3O0F2DdnVh8JB4j4eUQ2k6KvB0qGfrKIhapvez5JerBbmWkaLYUYWISaESoXg==
|
||||
|
||||
follow-redirects@^1.14.9:
|
||||
version "1.15.4"
|
||||
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.4.tgz#cdc7d308bf6493126b17ea2191ea0ccf3e535adf"
|
||||
integrity sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==
|
||||
|
||||
follow-redirects@^1.15.4:
|
||||
version "1.15.5"
|
||||
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.5.tgz#54d4d6d062c0fa7d9d17feb008461550e3ba8020"
|
||||
integrity sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==
|
||||
follow-redirects@^1.14.9, follow-redirects@^1.15.4:
|
||||
version "1.15.6"
|
||||
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b"
|
||||
integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==
|
||||
|
||||
for-each@^0.3.3:
|
||||
version "0.3.3"
|
||||
@@ -8220,14 +8226,14 @@ invariant@^2.2.4:
|
||||
loose-envify "^1.0.0"
|
||||
|
||||
ip@^1.1.5:
|
||||
version "1.1.5"
|
||||
resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a"
|
||||
integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=
|
||||
version "1.1.9"
|
||||
resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.9.tgz#8dfbcc99a754d07f425310b86a99546b1151e396"
|
||||
integrity sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ==
|
||||
|
||||
ip@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da"
|
||||
integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.1.tgz#e8f3595d33a3ea66490204234b77636965307105"
|
||||
integrity sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==
|
||||
|
||||
[email protected]:
|
||||
version "1.9.1"
|
||||
@@ -9332,6 +9338,11 @@ js-yaml@^3.13.1:
|
||||
argparse "^1.0.7"
|
||||
esprima "^4.0.0"
|
||||
|
||||
jsep@^1.3.8:
|
||||
version "1.3.8"
|
||||
resolved "https://registry.yarnpkg.com/jsep/-/jsep-1.3.8.tgz#facb6eb908d085d71d950bd2b24b757c7b8a46d7"
|
||||
integrity sha512-qofGylTGgYj9gZFsHuyWAN4jr35eJ66qJCK4eKDnldohuUoQFbU3iZn2zjvEbd9wOAhP9Wx5DsAAduTyE1PSWQ==
|
||||
|
||||
jsesc@^2.5.1:
|
||||
version "2.5.2"
|
||||
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
|
||||
@@ -10456,10 +10467,10 @@ neo-async@^2.6.2:
|
||||
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
|
||||
integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
|
||||
|
||||
next-tick@~1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c"
|
||||
integrity sha1-yobR/ogoFpsBICCOPchCS524NCw=
|
||||
next-tick@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb"
|
||||
integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==
|
||||
|
||||
nice-try@^1.0.4:
|
||||
version "1.0.5"
|
||||
@@ -11780,10 +11791,10 @@ range-parser@~1.2.1:
|
||||
resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
|
||||
integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
|
||||
|
||||
[email protected].1:
|
||||
version "2.5.1"
|
||||
resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857"
|
||||
integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==
|
||||
[email protected].2:
|
||||
version "2.5.2"
|
||||
resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a"
|
||||
integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==
|
||||
dependencies:
|
||||
bytes "3.1.2"
|
||||
http-errors "2.0.0"
|
||||
@@ -13432,6 +13443,11 @@ type@^2.0.0:
|
||||
resolved "https://registry.yarnpkg.com/type/-/type-2.1.0.tgz#9bdc22c648cf8cf86dd23d32336a41cfb6475e3f"
|
||||
integrity sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA==
|
||||
|
||||
type@^2.7.2:
|
||||
version "2.7.2"
|
||||
resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0"
|
||||
integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==
|
||||
|
||||
typed-array-buffer@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60"
|
||||
@@ -14348,3 +14364,8 @@ yocto-queue@^0.1.0:
|
||||
version "0.1.0"
|
||||
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
|
||||
integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
|
||||
|
||||
zod@^3.22.4:
|
||||
version "3.22.4"
|
||||
resolved "https://registry.yarnpkg.com/zod/-/zod-3.22.4.tgz#f31c3a9386f61b1f228af56faa9255e845cf3fff"
|
||||
integrity sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==
|
||||
Reference in new issue
Block a user