<!-- If this PR requires a changelog entry, add it by commenting the PR with the command `/changelog-entry [breaking-change|new-feature|bug-fix|chore] [message]`. -->
<!-- You can skip the changelog check by labeling the PR with "no changelog". -->
# Why
Simplification, unification.
# How
Removed bare-specific template.
# Test Plan
None.
* test against node 20 and drop support for node 14
* update CHANGELOG.md
* update @types/node
* bump yarn version
* Revert "update @types/node"
This reverts commit 027e26b002.
* update @types/node
* try to debug
* Revert "try to debug"
This reverts commit 0d557d02f8.
* test sth
* update lock
* Revert "update lock"
This reverts commit 184b412655.
* Revert "test sth"
This reverts commit 77606cf5be.
* diff once again
* fix issues
* Revert "diff once again"
This reverts commit 526ab57453.
* Revert "[ENG-8956][eas-build] Improve EAS CLI tsconfig.json for local development (#1933)"
This reverts commit e963558ef6.
* add start-allow-unused option
* update CONTRIBUTING.md
* fix type error
<!-- If this PR requires a changelog entry, add it by commenting the PR with the command `/changelog-entry [breaking-change|new-feature|bug-fix|chore] [message]`. -->
<!-- You can skip the changelog check by labeling the PR with "no changelog". -->
# Why
x-ref https://github.com/expo/eas-build/pull/302
# How
Upgraded `@expo/eas-build-job` and fixed the only TS error.
# Test Plan
None.
<!-- If this PR requires a changelog entry, add it by commenting the PR with the command `/changelog-entry [breaking-change|new-feature|bug-fix|chore] [message]`. -->
<!-- You can skip the changelog check by labeling the PR with "no changelog". -->
# Why
I've noticed tests ran for an old commit even though I pushed a new one.
# How
Added `concurrency` where I thought it was applicable.
# Test Plan
None.
<!-- If this PR requires a changelog entry, add it by commenting the PR with the command `/changelog-entry [breaking-change|new-feature|bug-fix|chore] [message]`. -->
<!-- You can skip the changelog check by labeling the PR with "no changelog". -->
# Why
It's nice to be able to download both application archive and "build artifact".
# How
Added `buildArtifactsUrl` to GraphQL query. It contains the thing I'm looking for.
# Test Plan
Ran `easd build:view 7bab0c66-d917-4873-9241-c5fa0b01dec1 --json` and confirmed it has the new field.
* [eas-cli] Add context fields for vcs clients
* [eas-cli] Replace vcs client helper with new context field
* [eas-cli] Pass instance of vcs client in helpers instead of re-calling vcs helper
* update CHANGELOG.md
* [FIX] Remove semver validation from node version read from .nvmrc
Node version can be specified as an alias (such as `iojs`, `lts/hydrogen` etc), so validating it as semver may cause errors for some users.
* update CHANGELOG.md
* fix(eas-cli): implement variadic `--platform` flag when creating EAS updates
* fix(eas-cli): finish todo and set minimum `@expo/[email protected]` version for multiple `--platform` flags during export
* update CHANGELOG.md
* fix(eas-cli): be verbose about `--platform=<flag>` in bundle script
* [eas-cli] handle server side defined error when `intel-medium` resource class is not available
* don't suggest using `intel-medium` in `eas.schema.json`
* update CHANGELOG.md
* update CHANGELOG.md
* [eas-cli] allow for `rollout` option when configuring submission
* update CHANGELOG.md
* add entry to `eas.schema.json`
* improve eas.schema.json
* make rollout default to 1 if not set
* Revert "make rollout default to 1 if not set"
This reverts commit 2ab689b02c.
* generate schema against staging
* update fragment
Changed noUnusedLocals and noUnusedParameters to false for easier local development and experimenting.
These checks do not run during local development. Instead, `yarn build` catches these cases on github.
Why
---
Fail fast with a clear message if the app config contradicts itself or the developer's behavior.
How
---
Throw if useClassicUpdates is set in the app config and the developer is running an EAS Update-related command or if the app config uses an EAS Update URL. If the developer is using a static app config (app.json), offer to modify the config file for them.
Test Plan
---
Added a unit test for ensureEASUpdateIsConfiguredAsync. Manually tested as wlel.
* added alias -m for --message
* align with the other messages
* updated README
* moving change in update/republish to a seperate PR
* removed README comment
* update CHANGELOG.md
---------
Co-authored-by: Steven Pu <[email protected]>
Co-authored-by: Steven Pu <[email protected]>
* added alias in republish
* reverted change in README
* update CHANGELOG.md
---------
Co-authored-by: Steven Pu <[email protected]>
Co-authored-by: Steven Pu <[email protected]>
* [eas-cli] validate that `expo-updates` are in project dependencies when somebody tries to run a build with channel set
* apply suggested changes
* remove unnecessary change
* fix warning
* improve validation logic
* improve insatlled message
* warn when expo-updates are in dev dependencies for update command
* impreve warn messsages
* improve warning messages
* one more warn message improvement
* update CHANGELOG.md
* [eas-cli][ENG-8763] Select default android keystore
- Add option to change default keystore from CLI (previously available only from dashboard)
- Streamline setting up new keystore
Instead of overwriting existing keystore, new one is created every time. Also, option to immediately set it as default is added, since it is also easier to change it from CLI.
* update CHANGELOG.md
<!-- If this PR requires a changelog entry, add it by commenting the PR with the command `/changelog-entry [breaking-change|new-feature|bug-fix|chore] [message]`. -->
<!-- You can skip the changelog check by labeling the PR with "no changelog". -->
# Why
Cleanup after https://github.com/expo/eas-build/pull/233.
# How
Upgraded `@expo/steps` package. It is the only `eas-build` package in here.
# Test Plan
It's a type-only change so CI success will be enough.
* [eas-cli] make large resource class only available for paid users
* update eas.schema.json
* Revert "update eas.schema.json"
This reverts commit 319d998b76a4c6c87d137174d6cf9f90d64b3886.
* apply suggested changes
* update CHANGELOG.md
* [eas-cli][bugfix] Fix ios version-test
Tests were passing, but were not testing the right thing, essentially always defaulting to 'managed' workflow. `projectDir` should be set to the same value as EAS_PROJECT_ROOT.
* [eas-cli][ENG-8571] Validate CFBundleShortVersionString
* update CHANGELOG.md
* [eas-cli][eas-json] add `large` resource class for iOS as allowed value in `eas.json`
* add deprecation warning for `m-large`
* add test
* update CHANGELOG.md
* [eas-cli] don't resolve default resource class for iOS based on metadata
* don't set m1-medium as default in `eas build:configure`
* pass sdkVersion and reactNativeVersion in buildParams
* convert it to sync function
* update gql schema
* update CHANGELOG.md
* [eas-cli] allow users to select app to run if multiple apps are found in the build tarball
* rename variable
* improve error message
* apply suggested changes
* add dot
* update CHANGELOG.md
* [eas-cli] throw error if somebody tries to run iOS with `large` resource class selected through deprecated `--resource-class` flag
* apply suggested changes
* improve error message
* update CHANGELOG.md
* [eas-cli] Update apple utilities to avoid the maintenance error
* [eas-cli] Add changelog entry
* [eas-cli] Dont change the eas-cli version
* [eas-cli] Fix changelog entry
* [eas-cli] fix it again
* Unify error display method
Overriden the `Command`'s `catch` method to catch all the errors thrown by the commands, log the error message there the same way as it was previously handled in `src/build/build.ts` and re-throw generic `Error` instance with predefined base error message.
To avoid duplication, old `Log.error()` calls have been removed from `src/build/build.ts`.
Also added tests to see if the `catch()` method works as intended.
* Adjust base error messages
Base error messages have been adjusted after @dsokal suggested that the error may be caused by something different from a request and displaying message about a failed request is misleading
* update CHANGELOG.md
* Add test for unclean error message
Checks if the `[GraphQL] ` prefix gets removed when logging the error message
* Update handling GraphQL errors
Post-review update to how graphQL errors are handled
* Print different message for graphQL errors
When a graphQL error is caught a different base error message is printed
* Print original error to debug
When a graphQL error is caught and the message is cleaned, an original message is printed to debug (or just the same message otherwise)
* Add custom error classes
Created some custom error classes for known server side defined errors
* Log the error, not the message
Changed the debug log to log the error object, not the error message
* Fix
Fixed testing leftover
* Change phrasing
Edited the phrasing in default messages related to EAS Build
* Update if condition
Changed the if condition after review comment
* Create error base class
Created a new base class for the errors expected in build.ts, so they can be handled separately in `catch()`
* Move EasCommand properties
Moved the class properties above the class methods
* Remove helper method
Removed the helper method after review comment
* Change const type
Updated the type of SERVER_SIDE_DEFINED_ERRORS constant
* Change default base error message
Set the default base error message to `<command_name> command failed.`
* Remove comments
Removed leftover comments
* Change optional property
Changed empty string to optional property
* Post-review tweaks
Self-explanatory
* Fix failing test
One of tests started failing after changing the coalescing operators (|| -> ??). This fixes that test
See: https://linear.app/expo/issue/ENG-6945/improve-eas-cli-error-logging
* Remove error class
Removed `GenericGraphQLError` class after @wkozyra95 comment, since atm there's no need to handle it differently than a generic `Error`
See: https://linear.app/expo/issue/ENG-6945/improve-eas-cli-error-logging
* Move `EasCommandError` base class
Moved `EasCommandError` base class after @wkozyra95 comment. The class is not specific to `Build` command and so it has been moved to `commandUtils` directory
See: https://linear.app/expo/issue/ENG-6945/improve-eas-cli-error-logging
* Make message mandatory
Made `message` parameter in `EasCommandError`s mandatory, to remove need for providing a fallback string and making the server the source of truth for the errors messages
See: https://linear.app/expo/issue/ENG-6945/improve-eas-cli-error-logging
* Update packages/eas-cli/src/commandUtils/EasCommand.ts
Co-authored-by: Wojciech Kozyra <[email protected]>
* Move `baseGraphQLErrorMessage` property
Made the property into a constant in a global scope, since atm it is not changed in any of the subclasses
See: https://linear.app/expo/issue/ENG-6945/improve-eas-cli-error-logging
* Suppress ESLint warning
ESLint erroneously complains about the constructor of `EasCommandError` to be useless, which is not true is the constructor of `Error` parent class allows for optional `message` parameter and the constructor of `EasCommandError` does not
See: https://linear.app/expo/issue/ENG-6945/improve-eas-cli-error-logging
* Add error handling tests
Added a bunch of new tests related to the `handleBuildRequestError` function
See: https://linear.app/expo/issue/ENG-6945/improve-eas-cli-error-logging
* Directly export `handleBuildRequestError`
Dropped the `testExports` convention after team discussion
See: https://linear.app/expo/issue/ENG-6945/improve-eas-cli-error-logging
---------
Co-authored-by: Wojciech Kozyra <[email protected]>
* [eas-cli] link to build phase in error message
* add better fallback
* use fallback for all links
* use terminalLink.isSupported
* improvements after code review
* use old fallback
* update CHANGELOG.md
* [eas-cli] display build message data when picking build in `submit`, `build:run` and `build:resign` commands
* display only 200 first characters of message if it exists
* print only defined values
* add '...' to message if trimmed
* use array instead of object
* update CHANGELOG.md
* [eas-cli] fix issue with `eas.json` envs not available when resolving local config
* fix type definitions to prevent it from happening again
* update CHANGELOG.md
* [eas-cli] set `m1-medium` resource class for builds which don't specify resource class for SDK 48 and RN 0.71
* refactor resolveBuildResourceClassAsync function
* apply suggested changes
* drop warning for ios large resource classes
* call getDynamicProjectConfigAsync in create context function
* update CHANGELOG.md
* Revert "Revert "[eas-cli] Add missing key information about updates in json outputs (#1611)""
This reverts commit d20db0fff4.
* [eas-cli] Fix missing update fragment in publish mutation
* [docs] Update changelog to reflect the revert and new entry
Why
---
This reverts commit e42031eaef. A customer reported an issue with publishing updates.
How
---
Ran `git revert` and then re-generated the GraphQL schemas due to merge conflicts using `yarn generate-graphql-code`.
Test Plan
---
Automated tests. Ran `easd update --auto` in a test project.
* [eas-cli][eas-json] handle new resource classes in EAS CLI
* show warning for large iOS resource classes
* don't deprecate resource class flag in this PR
* apply suggested improvements
* fix markdown description of top level resource class
* fix large resource class warning
* update CHANGELOG.md
* update eas.schema.json
* improve eas.schema.json
* add support for medium resource class and update eas.json
* fix error message for large resource classes
* temporary changes to solve issues with SSOUser being added to schema
* fix tests
* fix error message
* remove unnecessary dot
* update changelog
* [eas-cli] throw error when there are no emulator/simulator builds in `eas build:run` command
* handle missing build in correct place
* handle same error for latest flag
* add function to sanitize chosen build
* sanitize build selected by id
* improve build santization
* apply suggested improvements
* rename validation function
* update CHANGELOG.md
* [eas-cli] Use pagianted select prompt for eas build:run command
* apply suggestions from code review
* apply improvements from code review
* update CHANGELOG.md
* [eas-cli] Add test cases for republishing updates
* [eas-cli] Tweak the channel -> branch method errors to reuse in republish
* [eas-cli] Add support for --channel in update:republish
* [eas-cli] Add test cases to prevent using --group, --channel, or --branch together
* update CHANGELOG.md
* [eas-cli] Update the test case for resolving branch from channel
* [eas-cli] Add initial test cases for the update command
* [eas-cli] Add runtimeVersion option when mocking exports
* [eas-cli] Fix update flag validation for --branch and --channel
* [eas-cli] Add test case for --non-interactive, --channel, and --message
* update CHANGELOG.md
* [eas-cli] Fix linting issue
* [eas-cli] Reuse the input dir from the command
* [eas-cli] Explicitly mention the allowed flag combinations to avoid ambiguity
* [eas-cli] Move --auto to a distinct location in the error message
* [eas-cli] Fix linting issue
* Add --channel flag to eas update command
* use existing method
* adds undefined to return type
* move to getBranchNameFromChannelNameAsync.ts
* renames the function to singular "update"
* [eas-json] Make not recognized image error handler fire only if image is present under valid key with invalid value
* revert changes to error message
* update CHANGELOG.md
* fix(update): add code signing support to republish and block different branches
* refactor(update): move codesigning info into update fragment
* update CHANGELOG.md
* fix(update): add code signing support to republish and block different branches
* refactor(update): mark group and republish flags as deprecated
* refactor(update): drop republish and group flags
* refactor(update): drop republish flag from command
* refactor(update): remove last republish code from update command
* refactor(update): either use --group or --branch in deprecation warning
* refactor(update): drop old runtime version from update command
* refactor(update): move asset variables closer to populated area
* fix(update): fix republish typo in deprecation warning
* fix(update): correct a merge conflict error related to publish query changes
* refactor(update): split out republish to separate command
* fix(update): add code signing support to republish and block different branches
* test(update): add missing republish command tests
* test(update): add test case without codesigning
* refactor(update): move codesigning info into update fragment
* refactor(update): make branch and group exclusive and simplify code
* update CHANGELOG.md
* [eas-cli] add caching for `eas build:run`
* cache in tmp directory
* use path from `path` instead of `node:path`
* don't hide eas build:run command
* apply feedback from review
* improvements after code review
* update CHANGELOG.md
* [eas-cli] add build:run support for Android
* add assertions about android executables
* use spawnAsync instead of spawn
* minor refactor
* minor improvements to prompts
* improve download function name
* refactor code after the review
* apply suggestions from the review
* fix commit message formatting
* use progress tracker instead of progress bar
* improve formatting of build choices
* fix typo in function name
* requested improvements
* test using path.join for fast-lob
* fix windows glob issues
* fix glob on windows
* allow users to run ios builds only on apple device
* use path.join instead of interpolation
* address feedback
* auto select android for non mac users
* minor improvements
* improve error messages
* update CHANGELOG.md
* fix(update): only create a channel with branch name when branch is created
* refactor(update): rename branchIsCreated to createdBranch
* update CHANGELOG.md
* [eas-cli] change choice formatting when selecting build to submit
* fix typo
* use description with one line choice
* use eas update channel vs old release channel
* update CHANGELOG.md
* feat: support uploading web bundles
Expo Router defaults to shipping with universal Metro support (ios, android, web) which means eas update breaks by default if it asserts that web is not supported.
This PR also fixes the inability to upload single platforms.
* ensure platform filtering works
* Update publish.ts
* add tests
* update CHANGELOG.md
* style xits from PR feedback
* attempt to fix
* fix
* Update index.ts
* Update CHANGELOG.md
* Update publish-test.ts
* Update publish-test.ts
* refactor(update): auto configure EAS updates when running eas update
* fix(update): make sure eas update does what it needs to do
* refactor(update): drop obsolete eas update validation errors
* refactor(update): drop duplicate truncate update message
* refactor(update): drop duplicate install expo-update message
* fix(update): use the old truncated update message limit
* refactor(update): ensure the latest changes are integrated in the PR
* fix(update): use the EAS update configured expo config
* chore(update): make the EAS Update outage a bit more readable
* fix(update): remove _internal from merged manifest if defined
* fix(update): make sure people can run `eas update:configure` without project id
* update CHANGELOG.md
* refactor(update): skip setting the sdkVersion when configuring
* fix(update): only merge nested objects when configuring
* fix(update): refetch the config whenever projects are auto-setup
* refactor(update): simplify the config object merging
* refactor(update): change logging based on review input
Co-authored-by: Evan Bacon <[email protected]>
* refactor(update): drop fyi .md extension from logging
Co-authored-by: Evan Bacon <[email protected]>
* refactor(update): alawys reload the project config after ensuring eas updates
* fix(update): linting issue caused by logging changes
* refactor(update): drop unused exports from updates configure code
* refactor(update): split merge config to separate method for testing
* fix(update): show full install log when debugging is enabled
* fix(update): add back the missing <remove this key> instruction
Co-authored-by: Evan Bacon <[email protected]>
* refactor(update): remove default non-interactive value to rely on falsy values
Co-authored-by: Will Schurman <[email protected]>
* refactor(updates): make non interactive optional to rely on falsy values
* Revert "refactor(update): remove default non-interactive value to rely on falsy values"
This reverts commit 23ac36d36e35b7a87724229234d41dcac8cf02db.
* Revert "refactor(updates): make non interactive optional to rely on falsy values"
This reverts commit 94ae7cc039c94f28b74a5cfd9857f79e5a11e82c.
* refactor(update): move ensure methods outside the update command
* fix(update): add back log about channel pointing to branch
* refactor(branch): reuse query from shared utilsin `branch:create`
* refactor(channel): reuse query from shared utilsin `channel:create`
Co-authored-by: Will Schurman <[email protected]>
* [eas-cli] Add flag sanitization in updates command
* refactor(update): remove default non-interactive value to rely on falsy values
Co-authored-by: Will Schurman <[email protected]>
* refactor(updates): make non interactive optional to rely on falsy values
* Revert "refactor(update): remove default non-interactive value to rely on falsy values"
This reverts commit 23ac36d36e35b7a87724229234d41dcac8cf02db.
* Revert "refactor(updates): make non interactive optional to rely on falsy values"
This reverts commit 94ae7cc039c94f28b74a5cfd9857f79e5a11e82c.
Co-authored-by: Will Schurman <[email protected]>
* [eas-cli] Warn about outdated build deployment when configuring EAS Update
* update changelog with PR number
* print warning no matter what
* Update packages/eas-cli/src/commands/update/configure.ts
Co-authored-by: Will Schurman <[email protected]>
Co-authored-by: Will Schurman <[email protected]>
* create eas run command
* improve run command
* downaload and install iOS sim app
* add logic to select best avaliable simulator
* add not implemented android command
* use expo cli implementation of detecting if simulator is running
* support both archive and app paths in path argument
* better validate path argument
* refactor iOS code
* assert that Xcode and xcrun are installed
* rename ios and android run files
* assert simulator app is installed
* apply suggestions from code review
* improve select sim build prompt
* hide command
* minor fixes
* apply improvements suggested in code review
* update CHANGELOG.md
* refactor: update ajv, add human errors, and prepare lint command
* feature: add custom validation rules
* refactor: allow metadata context to be created without auth state
* refactor: update validation errors with new custom issues
* refactor: update existing code to use new features
* feature: add custom apple validation rules
* feature: implement validation command with json option
* chore: clean up outdated files
* refactor: update config schema type to improve human error message
* [eas-cli] Fix typo in ajv version
* [eas-cli] Use built-in context API to get project dir
* [eas-cli] Remove commented code
* [eas-cli] Load project without enforcing project id in metadata:lint
* [eas-cli] Guard against faulty config objects
* update CHANGELOG.md
* docs(cli): fix keyword length typo
* refactor(cli): use optional chaining over ternary
Co-authored-by: Dominik Sokal <[email protected]>
* refactor(cli): drop non-null assertion in config resolver
* refactor(cli): drop implicit coercion in expressions
Co-authored-by: Dominik Sokal <[email protected]>
* refactor(cli): only initialize ajv when used
* refactor(cli): simplify error logging
* refactor(cli): move coascle to expodash as filter
* fix(cli): use proper empty check on readable errors
* refactor(cli): support non interactive in metadata lint
* refactor(cli): remove metadata context from lint command
* refactor(cli): split up metadata context into different methods
* refactor(cli): use profile instead of metadata path in config resolve methods
* refactor(cli): rename context to auth and simplify usage
* refactor(cli): move json schema files to top-level imports
* refactor(cli): use predicates in expodash filter instead of filter functions
* test(cli): update config tests to use mocked profile isntead
* test(cli): fix issue in filter predicate test
* [eas-cli] Reimplement the analytics manager
Co-authored-by: Dominik Sokal <[email protected]>
* [eas-cli] Replace secret:list table with format fields
* update CHANGELOG.md
* [eas-cli] Replace created at with update in secrets list
Co-authored-by: Dominik Sokal <[email protected]>
* Revert updated at
Co-authored-by: Dominik Sokal <[email protected]>
* [eas-cli] use env variable to select M1 resource class
* [eas-cli] create `m1-experimental` option for `--resource-class` flag
* improvements after code review
* throw an error instead of using oclif/errors in resolveResourceClass function
* update CHANGELOG.md
* [eas-cli] provide suggestions for developers when archive size is large
* use learn more function
* apply suggestion from review
* apply suggestions from code review
* update CHANGELOG.md
* [eas-cli] add `-e` flag as a shortcut for `--profile` flag
* revert readme changes
* add description for profile flag on config command
* update CHANGELOG.md
* [eas-cli] warn users about EAS Build outages
* [eas-cli] warn users about EAS Submit outages
* [eas-cli] show warnings about EAS outages as a first thing when running build and submit commands
* [eas-cli] don't return null as a result of StatuspageServiceQuery
* [eas-cli] remove unneccessary if check
* [eas-cli] rename warnAboutEasOutagesAsync function to maybeWarnAboutEasOutagesAsync and remove please word from output
* [eas-cli] warn about outages when running `eas update` command
* [eas-cli] improve outage warning communicate
* [eas-cli] move maybeWarnAboutEasOutagesAsync call after flags and project dir validation
* [eas-cli] minor refactor after code review
* [eas-cli] change warning message on EAS outage
* [eas-cli] put platform selection and validation logic into ensurePlatformSelectedAsync function
* update CHANGELOG.md
* [eas-cli] use ensurePlatformSelectedAsync in submit command
* [eas-json] support `autoIncrement` at root of build profile
* [eas-json] Start `autoIncrement` markdown enum description with capital letter
* update CHANGELOG.md
* [eas-json] use interfaces instead of types
* [eas-json] fix issues with types and improve schema descriptions
* [eas-json] remove unneccessary comment
* [eas-json] make EasJsonBuildProfile interface again
* [eas-json] remove unneccessary semicolon
* [eas-json] use only boolean values for autoIncrement flag
* [eas-json] improve schema description for autoIncrement option
* [eas-json] remove change from changelog
* update CHANGELOG.md
* improve changelog entry
* [eas-cli] Swallow error when unable to track file in no commit workflow
* Include a warning when failing to track a file with GitNoCommitClient
* update CHANGELOG.md
* [eas-cli] Add version selector to store config for metadata
* [eas-cli] Add version snippet to emphasize on app version
* [eas-cli] Add the missing phased release nock endpoints
* fix: make sure we add a line when needed while runing commands
* chore: add instruction on how to upgrade + remove ending new line
* chore: don't make the * bold
* [eas-cli] Improve EAS metadata category configuration
* [eas-cli] Update category types for apple store configuration
* [eas-cli] Add tests for the behavior of the categories from store configuration
* [eas-cli] Update apple store config with new categories
* [eas-cli] Simplify parent vs normal categories in schema
* [eas-cli] Fix serialization issue with empty secondary sub category
* [eas-cli] Relax the apple category types to allow strings
* [eas-cli] Fix an issue in reader related to the category types
* [eas-cli] Add comments about string vs category enum
* update CHANGELOG.md
* [eas-cli] Avoid setting automaticRelease for manual releases in config
* [eas-cli] Use same default app name as schema
* [eas-cli] Prefer releaseNotes over whatsNew in apple info
* [eas-cli] Drop deprecated gamblingAndContest from schema
* [eas-cli] Use better defaults for advisory
* [eas-cli] Remove type from enum as its not required by spec
* [eas-cli] Remove $ref and description workaround for draft 6
* [eas-cli] Update kids age rating description
* [eas-cli] Remove default app title
* update CHANGELOG.md
* [1/1] Support build-resource-class flag in eas-cli
# Why
We want to add a flag to allow users to specify resource-class when they
run `eas build`. The flag is experimental for now, and we haven't
decided exactly how we'll incorporate the resource classes into plan
pricing. But this PR doesn't deal with that - it just makes the
necessary changes to eas-cli to support specifying a resource class when
running `eas build`.
# How
Add a new enum for BuildResourceClass that matches the enum created
for GraphQL in universe/server/www. Then create a new flag
`build-resource-class` whose options are the values of the
BuildResourceClass enum. Then add some validation to prevent resource
classes being used for incompatible platforms (e.g. prevent `-p ios
--build-resource-class=ANDROID_LARGE`). Finally, pass along the flag
value to the call to the WWW graphql mutations for BuildAndroid and
BuildiOS.
# Test Plan
```
yarn test
```
See test plan on this PR for more thorough e2e testing summary:
https://github.com/expo/universe/pull/9800
* Update packages/eas-cli/src/commands/build/index.ts
Co-authored-by: Dominik Sokal <[email protected]>
* Apply suggestions from code review
Co-authored-by: Dominik Sokal <[email protected]>
* Address PR comments
* Regenerate graphql from staging
* update CHANGELOG.md
Co-authored-by: Dominik Sokal <[email protected]>
* [eas-cli] Add metadata commands
* Add myself as codeowner to the metadata
* [eas-cli] Hide the metadata commands for now
* Add metadata changelog entry
* [eas-cli] Update metadata configure command description
* [eas-cli] Drop non-interactive due to limitations in AppStoreApi
* [eas-cli] Reimplement credentials context for metadata
* [eas-cli] Drop non-interactive flag in metadata command
* [eas-cli] Drop args from metadata:configure
Co-authored-by: Wojciech Kozyra <[email protected]>
* [eas-cli] Add retroactive code review changes (#1147)
* [eas-cli] Add public access modifiers to classes
* [eas-cli] Add specific types to date precision remover
* [eas-cli] Add try catch around writing json to always unsubscribe
* [eas-cli] Add async return await to uploadAsync log methods
* [eas-cli] Fix date precision type and test
* [eas-cli] Use submission profile bundle id if defined
* [eas-cli] Drop catch from IO try catch block
* [eas-cli] Move unique helper to global utils
* [eas-cli] Prefer nullish coalescing
* [eas-cli] Move metadata commands to pull and push
* [eas-cli] Drop the platform option from the push command
* [eas-cli] Remove alias and reword descriptions
* [eas-cli] Auto-configure eas.json with metadata when missing (#1156)
* [eas-cli] Polish the command output for release (#1159)
* [eas-cli] Finalize metadata logging output
* [eas-cli] Fix logging validation errors when store.config.json is not found
* [eas-cli] Make all localized entites bold
* [eas-cli] Make version string visible in logs
* [eas-cli] Add note about early beta
* [eas-cli] Remove hidden from meta commands
* [eas-cli] Add metadata topic
* [eas-cli] Rename eas metadata to eas metadata:push in logging
* [eas-cli] Remove unused arg flag from push
Co-authored-by: Wojciech Kozyra <[email protected]>
- add additional information to publish command output such as update ids and website links
- https://linear.app/expo/issue/ENG-4589/improve-publish-command
- add additional context to uploadAssetsAsync return type
- add real-time text to upload spinner showing upload progress
- remove ) from website link on unsupported terminals
* [eas-cli] lower page limit for UpdateQueries
- lower page limit from 10_000 to 300 to avoid timeouts on branches with many updates.
we do not fetch the full history of updates anymore for `--republish`, etc.
* [eas-cli] Add metadata context based on submission contexts
* [eas-json] Add submission meta property to config
* [eas-cli] Make exp optional in the metdata context
* [eas-cli] Fix misleading docblock on metadata context
* [eas-cli] Fix pass through exp config in metadata context
* [eas-cli] Import ios submission profile type through entrypoint
* [eas-cli] Rename metadata file to filename in context
* [eas-cli] Move credential context outside metadata context
* [eas-cli] Rename meta to metadataPath in profile config
* [eas-cli] Drop nonInteractive from metadata because of AppStoreApi limitations
* [eas-cli] Use singular store in bundle identifier doc
* update graphql
* show queue position progress + estimated wait time
* refactor
* update CHANGELOG.md
* hide estimated wait time when build is in progress
* add priority queue info
* chore: add annotations about functions that do not support App Store Connect API
* Update CHANGELOG.md
* Update CHANGELOG.md
* Update capabilityIdentifiers.ts
* ask user to select profile if release does not exist
* Apply suggestions from code review
Co-authored-by: Wojciech Kozyra <[email protected]>
* update CHANGELOG.md
Co-authored-by: Wojciech Kozyra <[email protected]>
* docs: fix broken links to all command source files in readme
They pointed to .js, but they're all .ts
* docs: fix command paths by adding typescript devdependency
* fix: add typescript devDependency to eas-json for consistency
Co-authored-by: Dominik Sokal <[email protected]>
* Revert "fix working with local api server (#747)"
Why
---
Make local development behave more closely to production and use the same API route paths. I made 127.0.0.1 behave the same way as api.expo.test and localhost. Another fix would have been to change 127.0.0.1 to localhost in EAS CLI, but it's a good idea to make the API server treat localhost and 127.0.0.1 similarly (look up PR 8542).
How
---
This reverts commit 5ba3cc6623.
Test Plan
---------
Started the API server locally, then started EAS CLI locally with `EXPO_LOCAL=1 yarn eas login`. Logged in with my staging credentials and saw the API server locally pring out that it had made new database connections in the log.
* update CHANGELOG.md
* update CHANGELOG.md
* [api] Change API domain for EAS CLI
Why
---
To match the API server domain the website uses, this commit switches the API domain for EAS CLI from exp.host to api.expo.dev.
How
---
URL paths for api.expo.dev are different than those for exp.host.
* GraphQL: api.expo.dev/graphql
* API v2: api.expo.dev/v2/...
Updated the main functions that return the API server origin and the API v2 and GraphQL clients that create the URLs for each type of API.
Test Plan
---------
* Unit tests: `yarn test`
* Log in and out: `yarn eas login`, `yarn eas logout` (tests API v2)
* Project management: `yarn eas project:view` (tests GraphQL) -> confirm project gets created on expo.dev
* update CHANGELOG.md
* [eas-cli] Fix printing App Store Connect URL after submission
* Update CHANGELOG
* Fix comment
* Remove unnecessary import
* Update other place where we pass in empty string to learnMore
* Apply suggestions from code review
Co-authored-by: Dominik Sokal <[email protected]>
* add credentials context to build context
* add credentials context to submission context
* use credentials context when authenticating with apple
* don't use chalk.italic
* update CHANGELOG
description:'You want to report a reproducible bug or regression in EAS CLI.'
body:
- type:markdown
@@ -14,6 +14,11 @@ body:
- type:markdown
attributes:
value:If you leave out sections there is a high likelihood your issue will be closed. If you have a question, not a bug report, please post it on our [forums](https://forums.expo.dev/) instead.
- type:input
attributes:
label:Build/Submit details page URL
description:If you're reporting an issue with EAS Build and/or EAS Submit, please provide the URL to the details page URL. The page can be only viewed by the Expo team members. Providing the URL is optional but it makes debugging the issue easier.
description:Describe the issue in 1 or 2 sentences
placeholder:Clearly describe what the expected behavior is vs. what is actually happening. This should be as short as possible, while still communicating all the necessary information. If your summary is just 'X library/method isn't working', then you need to continue debugging yourself and provide more information.
- type:input
validations:
required:true
attributes:
label:Managed or bare?
description:Is your project managed or bare? Bare - Android and/or iOS native projects exist in your repo; Managed - you don't have native code (custom or 3rd party) in your project. See the [Workflows](https://docs.expo.dev/introduction/managed-vs-bare/) page for more information.
- type:textarea
validations:
required:true
attributes:
label:Environment
placeholder:Run `eas diagnostics` and paste the output here
description:Run `npx expo-env-info` and `npx expo-doctor`, and paste the output here.
<!-- Thanks for contributing to _EAS CLI_! Before you submit your pull request, please make sure to check the following boxes by putting an x in the [ ] (don't: [x ], [ x], do: [x]) -->
# Checklist
- [ ] I've added an entry to [CHANGELOG.md](https://github.com/expo/eas-cli/blob/main/CHANGELOG.md#main) if necessary.
- [ ] I've tagged the changelog entry with `[EAS BUILD API]` if it's a part of a breaking change to EAS Build API (only possible when updating `@expo/eas-build-job` package).
<!-- If this PR requires a changelog entry, add it by commenting the PR with the command `/changelog-entry [breaking-change|new-feature|bug-fix|chore] [message]`. -->
<!-- You can skip the changelog check by labeling the PR with "no changelog". -->
message:${{ contains(github.event.pull_request.labels.*.name, 'no changelog') && '⏩ The changelog entry check has been skipped since the "no changelog" label is present.' || '✅ Thank you for adding the changelog entry!' }}
message-failure:|
❌ It looks like a changelog entry is missing for this PR. You have two options: you can add it manually, or you can use the changelog bot to do it for you.
🤖 To use the bot, simply comment on this PR with the command `/changelog-entry [breaking-change|new-feature|bug-fix|chore] [message]`.
⏩ If this PR doesn't require a changelog entry, such as if it's an internal change that doesn't affect the user experience, you can add the "no changelog" label to the PR.
if:"${{ contains(github.event.label.name, 'incomplete issue: missing or invalid repro') }}"
steps:
- uses:actions/github-script@v3
with:
github-token:${{ secrets.EXPO_BOT_GITHUB_TOKEN }}
script:|
github.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: `Hi there! It looks like your issue requires a minimal reproducible example, but it is invalid or absent. Please prepare such an example and share it in a new issue.
**The best way to get attention to your issue is to provide a clean and easy way for a developer to reproduce the issue on their own machine.** Please do not provide your entire project, or a project with more code than is necessary to reproduce the issue.
A side benefit of going through the process of narrowing down the minimal amount of code needed to reproduce the issue is that you may get lucky and discover that the bug is due to a mistake in your application code that you can quickly fix on your own.
### Resources
- ["How to create a Minimal, Reproducible Example"](https://stackoverflow.com/help/minimal-reproducible-example)
- ["How to narrow down the source of an error"](https://expo.fyi/manual-debugging)
### Common concerns
#### "I've only been able to reproduce it in private, proprietary code"
You may not have spent enough time narrowing down the root cause of the issue. Try out the techniques discussed in this [manual debugging guide](https://expo.fyi/manual-debugging) to learn how to isolate the problem from the rest of your codebase.
#### "I didn't have time to create one"
That's understandable, it can take some time to prepare. We ask that you hold off on filing an issue until you are able to fully complete the required fields in the issue template.
#### "You can reproduce it by yourself by creating a project and following these steps"
This is useful knowledge, but it's still valuable to have the resulting project that is produced from running the steps, where you have verified you can reproduce the issue.
body: `Hello! There isn't enough information provided in your issue description for us to be able to help you. The best way to get help is to provide information to enable other developers to understand the issue and reproduce it on their own machines.
Please create a new issue and fill out the entire issue template to the best of your ability. Refer to the following resources for more information on how to create a good issue report.
### Resources
- ["How do I ask a good question?"](https://stackoverflow.com/help/how-to-ask)
- ["How to create a Minimal, Reproducible Example"](https://stackoverflow.com/help/minimal-reproducible-example)
- ["How to narrow down the source of an error"](https://expo.fyi/manual-debugging)
`})
github.issues.update({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
state: 'closed'
})
issue-accepted:
runs-on:ubuntu-20.04
if:github.event.label.name == 'issue accepted'
steps:
- uses:actions/github-script@v3
with:
github-token:${{ secrets.EXPO_BOT_GITHUB_TOKEN }}
script:|
github.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: `Thank you for filing this issue!
This comment acknowledges we believe this may be a bug and there’s enough information to investigate it.
However, we can’t promise any sort of timeline for resolution. We prioritize issues based on severity, breadth of impact, and alignment with our roadmap. If you’d like to help move it more quickly, you can continue to investigate it more deeply and/or you can open a pull request that fixes the cause.
body: `Hello! Our GitHub issues are reserved for bug reports.
If you have a question about Expo or related tools, please post on our forums at https://forums.expo.dev/ or join our Discord at https://chat.expo.dev/.
### Resources
- ["How do I ask a good question?"](https://stackoverflow.com/help/how-to-ask)
- ["Join the community"](https://docs.expo.dev/next-steps/community/)
stale-issue-message:"This issue is stale because it has been open for 30 days with no activity. If there is no activity in the next 7 days, the issue will be closed."
close-issue-message:"This issue was closed because it has been inactive for 7 days since being marked as stale. Please open a new issue if you believe you are encountering a related problem."
1. Run `yarn release` in the repository root folder. This will create a new tag like `v1.0.0`.
1.**Wait until the `release` GitHub workflow has finished.**

1. Run `yarn lerna publish from-git` in the repository root folder. This will publish the packages to npm.
Set up an alias for the EAS CLI so you can try it in projects all around your computer. The project is compiled on the fly so you don't need to run a build (watch) command.
- This command works only if `HEAD` is on the release commit, e.g. when `git log -1` prints:
> The only exception is when you just cloned the repository or there have been changes in `packages/eas-json`. In that case, you'll have to run `yarn build` in the root.
- If you run `yarn lerna publish from-git` on any other commit, it'll print something like:
Then use it with `easd` like `easd build`.
```
lerna notice from-git No tagged release found
lerna success No changed packages to publish
```
If you're making changes to `packages/eas-json` or prefer/need to work with production code, start the build command in watch mode with:
- If you ever run into the above issue, use `git checkout RELEASE_COMMIT_HASH` to checkout to the release commit. Later, when you've published the packages to npm, run `git checkout main` to go back to the latest commit.
```
yarn start
```
1. Update `CHANGELOG.md`.
- Add the new section with the release version in the title.
- Leave the `main` section empty (without any changelog entries).
1. Once the release is ready to go, you can go to https://github.com/expo/eas-cli/releases and mark it as not draft.
- Remember to copy the changelog entries from `CHANGELOG.md`.
- Before hitting the submit button, make sure there are 5 assets available under the release entry.

1. If any of the changelog entries have been tagged with `[EAS BUILD API]`
- Open `package.json` and note the version of `@expo/eas-build-job` used in the eas-cli.
- Find the `Publish` commit in [expo/eas-build](https://github.com/expo/eas-build/commit/) for that version. In most cases, it will be the latest `Publish` commit.
- Find the `eas-cli-local-build-plugin` version published in that commit.
- Run `npm dist-tags add eas-cli-local-build-plugin@VERSION latest` with the version from the previous step.
If it is easier for you to work with the code locally with compiler options set to:
```json
...
"compilerOptions":{
...
"noUnusedLocals":false,
"noUnusedParameters":false,
...
}
...
```
you can consider using:
```
yarn start-allow-unused
```
## Format
- Be sure to update the [`CHANGELOG.md`](./CHANGELOG.md) with changes for every PR. There is a changelog bot that can generate the proper entry for you. The instructions on how to use it are in the PR description placeholder.
- End `async` functions with `Async` like `runAsync`. This is just how we format functions at Expo.
- Utilize the unified `Log` module instead of `console.log`.
## Using local and staging API
For development against local API:
- Set up the API server as described at https://github.com/expo/universe/tree/main/server/www.
- Set the `EXPO_LOCAL=1` env variable either on every command run (e.g. `EXPO_LOCAL=1 easd ...`) or more permamently with `export EXPO_LOCAL=1` (works in a current shell session).
For development against staging API:
- Set the `EXPO_STAGING=1` env variable either on every command run (e.g. `EXPO_STAGING=1 easd ...`) or more permamently with `export EXPO_STAGING=1` (works in a current shell session).
## Working on local builds (`eas build --local`)
See https://github.com/expo/eas-build/blob/main/DEVELOPMENT.md for how to set up your environment when making changes to [`eas-cli-local-build-plugin`](https://github.com/expo/eas-build/tree/main/packages/local-build-plugin) and/or [`build-tools`](https://github.com/expo/eas-build/tree/main/packages/build-tools).
## Testing
Run `yarn test` either in the repository root or in a package directory that you're working on.
1. Run `yarn release` in the repository root folder. The next version is chosen automatically based on the changelog entries. If you want to use different version, pass the version string as a positional argument to the command, e.g. `yarn release 1.2.3`.
2. That's it! GitHub Actions is going to take care of the rest. Watch the #eas-cli Slack channel for a successful release notification.
## Choosing the next version
As stated above, the next EAS CLI version is chosen automatically based on the existing changelog entries under the unreleased section in **CHANGELOG.md**.
The algorithm works as follows:
- If there are any entries in the "🛠 Breaking changes" section, bump the MAJOR version.
- Otherwise, if there are any entries in the "🎉 New features", bump the MINOR version.
- Otherwise, bump the PATCH version.
## Updating EAS CLI version on EAS Build
The release process promotes the new version to staging. After verifying it works there, you can promote it to production with `npm dist-tag add eas-cli@{version} latest-eas-build`.
"description":"App Store categories for the app, can add up to two categories. The first item in this list is the primary category, the second is the secondary and optional category. `STICKERS` and `GAMES` categories can add up to two additional subcategories, written as nested array.",
"markdownDescription":"App Store categories for the app, can add up to two categories. The first item in this list is the primary category, the second is the secondary and optional category. `STICKERS` and `GAMES` categories can add up to two additional subcategories, written as nested array. E.g.\n\n- `[\"SPORTS\"]`\n- `[\"SPORTS\", \"LIFESTYLE\"]`\n- `[[\"GAMES\", \"GAMES_CARD\"], \"ENTERTAINMENT\"]`\n- `[\"GAMES\", \"WEATHER\"]`",
"minItems":1,
"maxItems":2,
"uniqueItems":true,
"defaultSnippets":[
{
"label":"Basic categories",
"description":"Add two simple categories",
"body":[
"$1",
"$2"
]
},
{
"label":"Category with subcategories",
"description":"Add a category containing subcategories",
"description":"Does the app contain alcohol, tobacco, or drug use or references?"
},
"contests":{
"$ref":"#/definitions/apple/AppleRating",
"description":"Does the app contain contests?"
},
"gamblingSimulated":{
"$ref":"#/definitions/apple/AppleRating",
"description":"Does the app contain simulated gambling?"
},
"medicalOrTreatmentInformation":{
"$ref":"#/definitions/apple/AppleRating",
"description":"Does the app contain medical or treatment information?"
},
"profanityOrCrudeHumor":{
"$ref":"#/definitions/apple/AppleRating",
"description":"Does the app contain profanity or crude humor?"
},
"sexualContentGraphicAndNudity":{
"$ref":"#/definitions/apple/AppleRating",
"description":"Does the app contain graphic sexual content and nudity?"
},
"sexualContentOrNudity":{
"$ref":"#/definitions/apple/AppleRating",
"description":"Does the app contain sexual content or nudity?"
},
"horrorOrFearThemes":{
"$ref":"#/definitions/apple/AppleRating",
"description":"Does the app contain horror or fear themes?"
},
"matureOrSuggestiveThemes":{
"$ref":"#/definitions/apple/AppleRating",
"description":"Does the app contain mature or suggestive themes?"
},
"violenceCartoonOrFantasy":{
"$ref":"#/definitions/apple/AppleRating",
"description":"Does the app contain cartoon or fantasy violence?"
},
"violenceRealisticProlongedGraphicOrSadistic":{
"$ref":"#/definitions/apple/AppleRating",
"description":"Does the app contain prolonged graphic or sadistic realistic violence?"
},
"violenceRealistic":{
"$ref":"#/definitions/apple/AppleRating",
"description":"Does the app contain realistic violence?"
},
"unrestrictedWebAccess":{
"type":"boolean",
"description":"Does your app contain unrestricted web access, such as with an embedded browser?"
},
"gambling":{
"type":"boolean",
"description":"Does your app contain gambling?"
},
"kidsAgeBand":{
"oneOf":[
{
"type":"null"
},
{
"$ref":"#/definitions/apple/AppleKidsAge"
}
],
"description":"When parents visit the Kids category on the App Store, they expect the apps they find will protect their children’s data, provide only age-appropriate content, and require a parental gate in order to link out of the app, request permissions, or present purchasing opportunities. It’s critical that no personally identifiable information or device information be transmitted to third parties, and that advertisements are human-reviewed for age appropriateness in order to be displayed.\n@see https://developer-mdn.apple.com/news/?id=091202019a",
"markdownDescription":"When parents visit the Kids category on the App Store, they expect the apps they find will protect their children’s data, provide only age-appropriate content, and require a parental gate in order to link out of the app, request permissions, or present purchasing opportunities. It’s critical that no personally identifiable information or device information be transmitted to third parties, and that advertisements are human-reviewed for age appropriateness in order to be displayed.\n\n[Learn more](https://developer-mdn.apple.com/news/?id=091202019a)"
},
"seventeenPlus":{
"type":"boolean",
"description":"If your app rates 12+ or lower, and you believe its content may not be suitable for children under 17, you can manually set the age rating to 17+.\n@see https://help.apple.com/app-store-connect/#/dev599d50efb",
"markdownDescription":"If your app rates 12+ or lower, and you believe its content may not be suitable for children under 17, you can manually set the age rating to 17+.\n\n[Learn more](https://help.apple.com/app-store-connect/#/dev599d50efb)"
}
}
},
"AppleRelease":{
"type":"object",
"description":"Configure how the app is released in the app store.",
"additionalProperties":false,
"properties":{
"automaticRelease":{
"description":"If and how the app should automatically be released when approved by App Store review.",
"markdownDescription":"If and how the app should automatically be released when approved by App Store review.\n- `false` - Manually release the app after store approval. (default behavior)\n- `true` - Automatically release after store approval.\n- `Date` - Automatically schedule release on this date, after store approval.\n\nApple does not guarantee that your app is available at the chosen scheduled release date.",
"oneOf":[
{
"type":"string",
"format":"date-time"
},
{
"type":"boolean"
}
],
"defaultSnippets":[
{
"label":"Manual release",
"description":"Manually release the app after store approval",
"body":false
},
{
"label":"Automatic release",
"description":"Automatically release the app after store approval",
"body":true
},
{
"label":"Scheduled release",
"description":"Automatically release the app on this date, and store approval",
"description":"Phased release for automatic updates lets you gradually release this update over a 7-day period to users who have turned on automatic updates. Keep in mind that this version will still be available to all users as a manual update from the App Store. You can pause the phased release for up to 30 days or release this update to all users at any time.\n@see https://help.apple.com/app-store-connect/#/dev3d65fcee1",
"markdownDescription":"Phased release for automatic updates lets you gradually release this update over a 7-day period to users who have turned on automatic updates.\n\nKeep in mind that this version will still be available to all users as a manual update from the App Store.\n\nYou can pause the phased release for up to 30 days or release this update to all users at any time.\n\n[Learn More](https://help.apple.com/app-store-connect/#/dev3d65fcee1)"
}
}
},
"AppleReview":{
"type":"object",
"description":"Info provided to the App Store review team to help them understand how to use your app.",
"required":[
"firstName",
"lastName",
"email",
"phone"
],
"defaultSnippets":[
{
"label":"Basic",
"description":"Only define the contact details in case communcation is needed with the App Store review team.",
"body":{
"firstName":"$1",
"lastName":"$2",
"email":"$3",
"phone":"+$4"
}
},
{
"label":"Full",
"description":"Define the demo account credentials, additional info, and contact details for the App Store review team.",
"body":{
"firstName":"$1",
"lastName":"$2",
"email":"$3",
"phone":"+$4",
"demoUsername":"$5",
"demoPassword":"$6",
"demoRequired":true,
"notes":"$7"
}
}
],
"properties":{
"firstName":{
"type":"string",
"description":"First name of contact in case communication is needed with the App Store review team.",
"minLength":1
},
"lastName":{
"type":"string",
"description":"Last name of contact in case communication is needed with the App Store review team.",
"minLength":1
},
"email":{
"type":"string",
"description":"Email address of contact in case communication is needed with the App Store review team.",
"format":"email"
},
"phone":{
"type":"string",
"description":"Phone number of contact in case communication is needed with the App Store review team. Preface the phone number with ‘+’ followed by the country code (for example, +44 844 209 0611)"
},
"demoUsername":{
"type":"string",
"description":"The user name to sign in to your app to review its features."
},
"demoPassword":{
"type":"string",
"description":"The password to sign in to your app to review its features."
},
"demoRequired":{
"type":"boolean",
"description":"A Boolean value that indicates if sign-in information is required to review all the features of your app. If users sign in using social media, provide information for an account for review. Credentials must be valid and active for duration of review.",
"markdownDescription":"A Boolean value that indicates if sign-in information is required to review all the features of your app. If users sign in using social media, provide information for an account for review.\n\n**Credentials must be valid and active for duration of review.**"
},
"notes":{
"type":"string",
"description":"Additional information about your app that can help during the review process. Do not include demo account details.",
"markdownDescription":"Additional information about your app that can help during the review process.\n\n**Do not include demo account details.**",
"minLength":2,
"maxLength":4000
}
}
}
},
"AppleConfig":{
"type":"object",
"description":"Configuration that is specific to the Apple App Store.",
"additionalProperties":false,
"properties":{
"version":{
"type":"string",
"description":"The version string to edit, or create, if it doesn't exist. All the metadata will be stored on this app version.",
"minLength":1,
"defaultSnippets":[
{
"body":"${1:1}.${2:0}"
}
]
},
"copyright":{
"type":"string",
"description":"The updated company copyright. Example: 2021 Evan Bacon",
"defaultSnippets":[
{
"body":"$CURRENT_YEAR ${1:name}"
}
],
"meta":{
"versioned":true,
"liveEdits":true,
"storeInfo":"The name of the person or entity that owns the exclusive rights to your app, preceded by the year the rights were obtained (for example, \"2008 Acme Inc.\"). Do not provide a URL."
}
},
"advisory":{
"$ref":"#/definitions/apple/AppleAdvisory"
},
"categories":{
"$ref":"#/definitions/apple/AppleCategory"
},
"info":{
"description":"Localized core app info",
"type":"object",
"additionalProperties":false,
"properties":{
"ar-SA":{
"$ref":"#/definitions/apple/AppleInfo",
"description":"Arabic"
},
"ca":{
"$ref":"#/definitions/apple/AppleInfo",
"description":"Catalan"
},
"zh-Hans":{
"$ref":"#/definitions/apple/AppleInfo",
"description":"Chinese (Simplified)"
},
"zh-Hant":{
"$ref":"#/definitions/apple/AppleInfo",
"description":"Chinese (Traditional)"
},
"hr":{
"$ref":"#/definitions/apple/AppleInfo",
"description":"Croatian"
},
"cs":{
"$ref":"#/definitions/apple/AppleInfo",
"description":"Czech"
},
"da":{
"$ref":"#/definitions/apple/AppleInfo",
"description":"Danish"
},
"nl-NL":{
"$ref":"#/definitions/apple/AppleInfo",
"description":"Dutch"
},
"en-AU":{
"$ref":"#/definitions/apple/AppleInfo",
"description":"English (Australia)"
},
"en-CA":{
"$ref":"#/definitions/apple/AppleInfo",
"description":"English (Canada)"
},
"en-GB":{
"$ref":"#/definitions/apple/AppleInfo",
"description":"English (U.K.)"
},
"en-US":{
"$ref":"#/definitions/apple/AppleInfo",
"description":"English (U.S.)"
},
"fi":{
"$ref":"#/definitions/apple/AppleInfo",
"description":"Finnish"
},
"fr-FR":{
"$ref":"#/definitions/apple/AppleInfo",
"description":"French"
},
"fr-CA":{
"$ref":"#/definitions/apple/AppleInfo",
"description":"French (Canada)"
},
"de-DE":{
"$ref":"#/definitions/apple/AppleInfo",
"description":"German"
},
"el":{
"$ref":"#/definitions/apple/AppleInfo",
"description":"Greek"
},
"he":{
"$ref":"#/definitions/apple/AppleInfo",
"description":"Hebrew"
},
"hi":{
"$ref":"#/definitions/apple/AppleInfo",
"description":"Hindi"
},
"hu":{
"$ref":"#/definitions/apple/AppleInfo",
"description":"Hungarian"
},
"id":{
"$ref":"#/definitions/apple/AppleInfo",
"description":"Indonesian"
},
"it":{
"$ref":"#/definitions/apple/AppleInfo",
"description":"Italian"
},
"ja":{
"$ref":"#/definitions/apple/AppleInfo",
"description":"Japanese"
},
"ko":{
"$ref":"#/definitions/apple/AppleInfo",
"description":"Korean"
},
"ms":{
"$ref":"#/definitions/apple/AppleInfo",
"description":"Malay"
},
"no":{
"$ref":"#/definitions/apple/AppleInfo",
"description":"Norwegian"
},
"pl":{
"$ref":"#/definitions/apple/AppleInfo",
"description":"Polish"
},
"pt-BR":{
"$ref":"#/definitions/apple/AppleInfo",
"description":"Portuguese (Brazil)"
},
"pt-PT":{
"$ref":"#/definitions/apple/AppleInfo",
"description":"Portuguese (Portugal)"
},
"ro":{
"$ref":"#/definitions/apple/AppleInfo",
"description":"Romanian"
},
"ru":{
"$ref":"#/definitions/apple/AppleInfo",
"description":"Russian"
},
"sk":{
"$ref":"#/definitions/apple/AppleInfo",
"description":"Slovak"
},
"es-MX":{
"$ref":"#/definitions/apple/AppleInfo",
"description":"Spanish (Mexico)"
},
"es-ES":{
"$ref":"#/definitions/apple/AppleInfo",
"description":"Spanish (Spain)"
},
"sv":{
"$ref":"#/definitions/apple/AppleInfo",
"description":"Swedish"
},
"th":{
"$ref":"#/definitions/apple/AppleInfo",
"description":"Thai"
},
"tr":{
"$ref":"#/definitions/apple/AppleInfo",
"description":"Turkish"
},
"uk":{
"$ref":"#/definitions/apple/AppleInfo",
"description":"Ukrainian"
},
"vi":{
"$ref":"#/definitions/apple/AppleInfo",
"description":"Vietnamese"
}
}
},
"release":{
"$ref":"#/definitions/apple/AppleRelease",
"description":"Release strategy"
},
"review":{
"$ref":"#/definitions/apple/AppleReview",
"description":"Info for the App Store reviewer"
}
}
}
},
"properties":{
"configVersion":{
"enum":[0],
"description":"The EAS metadata store configuration version"
exports[`BuildVersionGetView reading version when appVersionSource is set to local 1`] = `"This project is not configured for using remote version source. Add [1m{"cli": { "appVersionSource": "remote" }}[22m in eas.json or re-run this command without "--non-interactive" flag."`;
ACTION='action',// generic event type which is used to determine the 'daily active user' stat, include an `action: eas ${subcommand}` property inside of the event properties object
ACTION='action',// generic event type which is used to determine the 'daily active user' stat, include an `action: eas ${subcommand}` property inside of the event properties object
* @param {function} options.filterPredicate - A predicate to filter the branches that are shown to the user. It takes a branchInfo object as a parameter and returns a boolean.
* @param {string} options.printedType - The type of branch printed to the user. Defaults to 'branch'.
* @param {number} options.pageSize - The number of branches to show per page. Defaults to 100.
* @param {function} options.beforeEachFilterQuery Optional. If a filter predicate was specified, this callback function will be called before each query.
* @args externalQueryParams The query params for the pagination.
* @args totalNodesFetched The total number of nodes fetched so far.
* @args dataset The dataset so far.
* @param {function} options.afterEachFilterQuery Optional. If a filter predicate was specified, this callback function will be called after each query.
* @args externalQueryParams The query params for the pagination.
* @args totalNodesFetched The total number of nodes fetched so far.
* @args dataset The dataset so far.
* @args willFetchAgain If the query will fetch again to get a complete page.
constEXPECTED_EAS_BUILD_DOWN_MESSAGE=`EAS Build is down for maintenance. Try again later. Check ${link(
'https://status.expo.dev/'
)} for updates.`;
constEXPECTED_MAX_BUILD_COUNT_MESSAGE_ANDROID=`You have already reached the maximum number of pending Android builds for your account. Try again later.`;
constEXPECTED_MAX_BUILD_COUNT_MESSAGE_IOS=`You have already reached the maximum number of pending iOS builds for your account. Try again later.`;
constEXPECTED_GENERIC_MESSAGE=
'Build request failed. Make sure you are using the latest eas-cli version. If the problem persists, report the issue.';
'Native project configuration is not synced with values present in your app.json, run "eas build:configure" to make sure all values are applied in the native project'
`Remote versions are not configured and EAS CLI was not able to read the current version from your project. Use "eas build:version:set" to initialize remote versions.`
);
thrownewError('Remote versions are not configured.');
'Native project configuration is not synced with values present in your app.json, run "eas build:configure" to make sure all values are applied in the native project'
constexpoPlist: any=awaitreadExpoPlistAsync(projectDir);// TODO-JJ remove any once IOSConfig.ExpoPlist is updated to include `EXUpdatesRequestHeaders : Record<string,string>`
constupdatesRequestHeaders=expoPlist['EXUpdatesRequestHeaders']??{};//TODO-JJ 'EXUpdatesRequestHeaders' IosConfig.Updates.Config.UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY once https://github.com/expo/expo-cli/pull/3571 is published
it('fails when build number is invalid',async()=>{
constexp=initBareWorkflowProject({
appVersion:'$(CURRENT_PROJECT_VERSION)',
});
awaitexpect(
readShortVersionAsync(
'/app',
exp,
{
CURRENT_PROJECT_VERSION:'0.0.7.1.028',
},
vcsClient
)
).rejects.toThrowError(
'CFBundleShortVersionString (version field in app.json/app.config.js) must be a period-separated list of three non-negative integers. Current value: 0.0.7.1.028'
Loaded 100 of 825 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.