diff --git a/CHANGELOG.md b/CHANGELOG.md index 981e17b2bb..85fb25a39f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ This is the log of notable changes to EAS CLI and related packages. ### 🎉 New features - Update: expose expo cli `--dev` flag as an argument. ([#2050](https://github.com/expo/eas-cli/pull/2050) by [@nderscore](https://github.com/nderscore)) +- Support `bun` option in eas.json. ([#2055](https://github.com/expo/eas-cli/pull/2055) by [@kadikraman](https://github.com/kadikraman)) ### 🐛 Bug fixes diff --git a/packages/eas-cli/graphql.schema.json b/packages/eas-cli/graphql.schema.json index 9ec4915284..82cd35c678 100644 --- a/packages/eas-cli/graphql.schema.json +++ b/packages/eas-cli/graphql.schema.json @@ -5028,6 +5028,18 @@ "description": null, "fields": null, "inputFields": [ + { + "name": "bun", + "description": null, + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, { "name": "env", "description": null, @@ -15089,6 +15101,18 @@ "name": "BuildError", "description": null, "fields": [ + { + "name": "buildPhase", + "description": null, + "args": [], + "type": { + "kind": "ENUM", + "name": "BuildPhase", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, { "name": "docsUrl", "description": null, @@ -16892,6 +16916,257 @@ "enumValues": null, "possibleTypes": null }, + { + "kind": "ENUM", + "name": "BuildPhase", + "description": null, + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "BUILDER_INFO", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "CLEAN_UP_CREDENTIALS", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "COMPLETE_BUILD", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "CONFIGURE_EXPO_UPDATES", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "CONFIGURE_XCODE_PROJECT", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "CUSTOM", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "DOWNLOAD_APPLICATION_ARCHIVE", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "EAS_BUILD_INTERNAL", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FAIL_BUILD", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "FIX_GRADLEW", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INSTALL_CUSTOM_TOOLS", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INSTALL_DEPENDENCIES", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "INSTALL_PODS", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ON_BUILD_CANCEL_HOOK", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ON_BUILD_COMPLETE_HOOK", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ON_BUILD_ERROR_HOOK", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "ON_BUILD_SUCCESS_HOOK", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "PARSE_CUSTOM_WORKFLOW_CONFIG", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "POST_INSTALL_HOOK", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "PREBUILD", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "PREPARE_ARTIFACTS", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "PREPARE_CREDENTIALS", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "PREPARE_PROJECT", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "PRE_INSTALL_HOOK", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "PRE_UPLOAD_ARTIFACTS_HOOK", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "QUEUE", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "READ_APP_CONFIG", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "READ_PACKAGE_JSON", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "RESTORE_CACHE", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "RUN_EXPO_DOCTOR", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "RUN_FASTLANE", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "RUN_GRADLEW", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SAVE_CACHE", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SET_UP_BUILD_ENVIRONMENT", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SPIN_UP_BUILDER", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "START_BUILD", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "UNKNOWN", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "UPLOAD_APPLICATION_ARCHIVE", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "UPLOAD_ARTIFACTS", + "description": null, + "isDeprecated": true, + "deprecationReason": "No longer supported" + }, + { + "name": "UPLOAD_BUILD_ARTIFACTS", + "description": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + }, { "kind": "OBJECT", "name": "BuildPlanCreditThresholdExceededMetadata", @@ -25053,6 +25328,18 @@ "description": null, "fields": null, "inputFields": [ + { + "name": "bun", + "description": null, + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, { "name": "bundler", "description": null, @@ -30291,6 +30578,22 @@ "isDeprecated": false, "deprecationReason": null }, + { + "name": "userAppPins", + "description": "Mutations that create, update, and delete pinned apps", + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "UserAppPinMutation", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, { "name": "userInvitation", "description": "Mutations that create, delete, and accept UserInvitations", @@ -31686,6 +31989,30 @@ "isDeprecated": false, "deprecationReason": null }, + { + "name": "pinnedApps", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "App", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, { "name": "primaryAccount", "description": "Associated accounts", @@ -31803,30 +32130,6 @@ "isDeprecated": false, "deprecationReason": null }, - { - "name": "websiteNotifications", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Notification", - "ofType": null - } - } - } - }, - "isDeprecated": true, - "deprecationReason": "No longer supported" - }, { "name": "websiteNotificationsPaginated", "description": null, @@ -37220,6 +37523,30 @@ "isDeprecated": false, "deprecationReason": null }, + { + "name": "pinnedApps", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "App", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, { "name": "primaryAccount", "description": "Associated accounts", @@ -37361,30 +37688,6 @@ "isDeprecated": false, "deprecationReason": null }, - { - "name": "websiteNotifications", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Notification", - "ofType": null - } - } - } - }, - "isDeprecated": true, - "deprecationReason": "No longer supported" - }, { "name": "websiteNotificationsPaginated", "description": null, @@ -37960,6 +38263,30 @@ "isDeprecated": false, "deprecationReason": null }, + { + "name": "pinnedApps", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "LIST", + "name": null, + "ofType": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "App", + "ofType": null + } + } + } + }, + "isDeprecated": false, + "deprecationReason": null + }, { "name": "primaryAccount", "description": "Associated accounts", @@ -38077,30 +38404,6 @@ "isDeprecated": false, "deprecationReason": null }, - { - "name": "websiteNotifications", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Notification", - "ofType": null - } - } - } - }, - "isDeprecated": true, - "deprecationReason": "No longer supported" - }, { "name": "websiteNotificationsPaginated", "description": null, @@ -38519,6 +38822,79 @@ "enumValues": null, "possibleTypes": null }, + { + "kind": "OBJECT", + "name": "UserAppPinMutation", + "description": null, + "fields": [ + { + "name": "pinApp", + "description": null, + "args": [ + { + "name": "appId", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "unpinApp", + "description": null, + "args": [ + { + "name": "appId", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, { "kind": "INPUT_OBJECT", "name": "UserDataInput", diff --git a/packages/eas-cli/package.json b/packages/eas-cli/package.json index 01abd526ae..6f8e1feb93 100644 --- a/packages/eas-cli/package.json +++ b/packages/eas-cli/package.json @@ -13,7 +13,7 @@ "@expo/config": "8.1.2", "@expo/config-plugins": "7.2.4", "@expo/config-types": "49.0.0", - "@expo/eas-build-job": "1.0.39", + "@expo/eas-build-job": "1.0.43", "@expo/eas-json": "5.2.0", "@expo/json-file": "8.2.37", "@expo/multipart-body-parser": "1.1.0", diff --git a/packages/eas-cli/src/build/android/prepareJob.ts b/packages/eas-cli/src/build/android/prepareJob.ts index 91e15e5480..eebb7cb3d7 100644 --- a/packages/eas-cli/src/build/android/prepareJob.ts +++ b/packages/eas-cli/src/build/android/prepareJob.ts @@ -67,6 +67,7 @@ export async function prepareJobAsync( image: buildProfile.image, node: buildProfile.node, pnpm: buildProfile.pnpm, + bun: buildProfile.bun, yarn: buildProfile.yarn, ndk: buildProfile.ndk, expoCli: buildProfile.expoCli, diff --git a/packages/eas-cli/src/build/ios/prepareJob.ts b/packages/eas-cli/src/build/ios/prepareJob.ts index 8f7f622120..724db17767 100644 --- a/packages/eas-cli/src/build/ios/prepareJob.ts +++ b/packages/eas-cli/src/build/ios/prepareJob.ts @@ -59,6 +59,7 @@ export async function prepareJobAsync( image: buildProfile.image, node: buildProfile.node, pnpm: buildProfile.pnpm, + bun: buildProfile.bun, yarn: buildProfile.yarn, bundler: buildProfile.bundler, cocoapods: buildProfile.cocoapods, diff --git a/packages/eas-cli/src/graphql/generated.ts b/packages/eas-cli/src/graphql/generated.ts index b5ecb2daca..271b32a2cd 100644 --- a/packages/eas-cli/src/graphql/generated.ts +++ b/packages/eas-cli/src/graphql/generated.ts @@ -809,6 +809,7 @@ export enum AndroidBuildType { } export type AndroidBuilderEnvironmentInput = { + bun?: InputMaybe; env?: InputMaybe; expoCli?: InputMaybe; image?: InputMaybe; @@ -2179,6 +2180,7 @@ export enum BuildCredentialsSource { export type BuildError = { __typename?: 'BuildError'; + buildPhase?: Maybe; docsUrl?: Maybe; errorCode: Scalars['String']; message: Scalars['String']; @@ -2433,6 +2435,50 @@ export type BuildParamsInput = { sdkVersion?: InputMaybe; }; +export enum BuildPhase { + BuilderInfo = 'BUILDER_INFO', + CleanUpCredentials = 'CLEAN_UP_CREDENTIALS', + CompleteBuild = 'COMPLETE_BUILD', + ConfigureExpoUpdates = 'CONFIGURE_EXPO_UPDATES', + ConfigureXcodeProject = 'CONFIGURE_XCODE_PROJECT', + Custom = 'CUSTOM', + DownloadApplicationArchive = 'DOWNLOAD_APPLICATION_ARCHIVE', + EasBuildInternal = 'EAS_BUILD_INTERNAL', + FailBuild = 'FAIL_BUILD', + FixGradlew = 'FIX_GRADLEW', + InstallCustomTools = 'INSTALL_CUSTOM_TOOLS', + InstallDependencies = 'INSTALL_DEPENDENCIES', + InstallPods = 'INSTALL_PODS', + OnBuildCancelHook = 'ON_BUILD_CANCEL_HOOK', + OnBuildCompleteHook = 'ON_BUILD_COMPLETE_HOOK', + OnBuildErrorHook = 'ON_BUILD_ERROR_HOOK', + OnBuildSuccessHook = 'ON_BUILD_SUCCESS_HOOK', + ParseCustomWorkflowConfig = 'PARSE_CUSTOM_WORKFLOW_CONFIG', + PostInstallHook = 'POST_INSTALL_HOOK', + Prebuild = 'PREBUILD', + PrepareArtifacts = 'PREPARE_ARTIFACTS', + PrepareCredentials = 'PREPARE_CREDENTIALS', + PrepareProject = 'PREPARE_PROJECT', + PreInstallHook = 'PRE_INSTALL_HOOK', + PreUploadArtifactsHook = 'PRE_UPLOAD_ARTIFACTS_HOOK', + Queue = 'QUEUE', + ReadAppConfig = 'READ_APP_CONFIG', + ReadPackageJson = 'READ_PACKAGE_JSON', + RestoreCache = 'RESTORE_CACHE', + RunExpoDoctor = 'RUN_EXPO_DOCTOR', + RunFastlane = 'RUN_FASTLANE', + RunGradlew = 'RUN_GRADLEW', + SaveCache = 'SAVE_CACHE', + SetUpBuildEnvironment = 'SET_UP_BUILD_ENVIRONMENT', + SpinUpBuilder = 'SPIN_UP_BUILDER', + StartBuild = 'START_BUILD', + Unknown = 'UNKNOWN', + UploadApplicationArchive = 'UPLOAD_APPLICATION_ARCHIVE', + /** @deprecated No longer supported */ + UploadArtifacts = 'UPLOAD_ARTIFACTS', + UploadBuildArtifacts = 'UPLOAD_BUILD_ARTIFACTS' +} + export type BuildPlanCreditThresholdExceededMetadata = { __typename?: 'BuildPlanCreditThresholdExceededMetadata'; account: Account; @@ -3618,6 +3664,7 @@ export enum IosBuildType { } export type IosBuilderEnvironmentInput = { + bun?: InputMaybe; bundler?: InputMaybe; cocoapods?: InputMaybe; env?: InputMaybe; @@ -4322,6 +4369,8 @@ export type RootMutation = { updateBranch: UpdateBranchMutation; updateChannel: UpdateChannelMutation; uploadSession: UploadSession; + /** Mutations that create, update, and delete pinned apps */ + userAppPins: UserAppPinMutation; /** Mutations that create, delete, and accept UserInvitations */ userInvitation: UserInvitationMutation; /** Mutations that create, delete, update Webhooks */ @@ -4536,6 +4585,7 @@ export type SsoUser = Actor & UserActor & { /** @deprecated No longer supported */ location?: Maybe; notificationSubscriptions: Array; + pinnedApps: Array; /** Associated accounts */ primaryAccount: Account; profilePhoto: Scalars['String']; @@ -4544,8 +4594,6 @@ export type SsoUser = Actor & UserActor & { /** @deprecated No longer supported */ twitterUsername?: Maybe; username: Scalars['String']; - /** @deprecated No longer supported */ - websiteNotifications: Array; websiteNotificationsPaginated: WebsiteNotificationsConnection; }; @@ -5323,6 +5371,7 @@ export type User = Actor & UserActor & { notificationSubscriptions: Array; /** Pending UserInvitations for this user. Only resolves for the viewer. */ pendingUserInvitations: Array; + pinnedApps: Array; /** Associated accounts */ primaryAccount: Account; profilePhoto: Scalars['String']; @@ -5333,8 +5382,6 @@ export type User = Actor & UserActor & { /** @deprecated No longer supported */ twitterUsername?: Maybe; username: Scalars['String']; - /** @deprecated No longer supported */ - websiteNotifications: Array; websiteNotificationsPaginated: WebsiteNotificationsConnection; }; @@ -5427,6 +5474,7 @@ export type UserActor = { /** @deprecated No longer supported */ location?: Maybe; notificationSubscriptions: Array; + pinnedApps: Array; /** Associated accounts */ primaryAccount: Account; profilePhoto: Scalars['String']; @@ -5435,8 +5483,6 @@ export type UserActor = { /** @deprecated No longer supported */ twitterUsername?: Maybe; username: Scalars['String']; - /** @deprecated No longer supported */ - websiteNotifications: Array; websiteNotificationsPaginated: WebsiteNotificationsConnection; }; @@ -5548,6 +5594,22 @@ export type UserActorQueryByUsernameArgs = { username: Scalars['String']; }; +export type UserAppPinMutation = { + __typename?: 'UserAppPinMutation'; + pinApp: Scalars['ID']; + unpinApp?: Maybe; +}; + + +export type UserAppPinMutationPinAppArgs = { + appId: Scalars['ID']; +}; + + +export type UserAppPinMutationUnpinAppArgs = { + appId: Scalars['ID']; +}; + export type UserDataInput = { email?: InputMaybe; firstName?: InputMaybe; diff --git a/packages/eas-json/schema/eas.schema.json b/packages/eas-json/schema/eas.schema.json index 856e275e0e..d0af64ebda 100644 --- a/packages/eas-json/schema/eas.schema.json +++ b/packages/eas-json/schema/eas.schema.json @@ -169,6 +169,11 @@ "description": "The version of pnpm to use for the build. See: https://www.npmjs.com/package/pnpm", "markdownDescription": "The exact version of [pnpm](https://www.npmjs.com/package/pnpm) to use for the build." }, + "bun": { + "type": "string", + "description": "The version of Bun to use for the build. See: https://bun.sh/", + "markdownDescription": "The exact version of [Bun](https://bun.sh/) to use for the build." + }, "expoCli": { "type": "string", "description": "The version of `expo-cli` used to `prebuild` your app.", @@ -415,7 +420,12 @@ "default": "default", "anyOf": [ { - "enum": ["default", "medium", "large", "m-medium"] + "enum": [ + "default", + "medium", + "large", + "m-medium" + ] }, { "type": "string" diff --git a/packages/eas-json/src/build/schema.ts b/packages/eas-json/src/build/schema.ts index efb3a94c82..e7b2558dfe 100644 --- a/packages/eas-json/src/build/schema.ts +++ b/packages/eas-json/src/build/schema.ts @@ -40,6 +40,7 @@ const CommonBuildProfileSchema = Joi.object({ env: Joi.object().pattern(Joi.string(), Joi.string().empty(null)), node: Joi.string().empty(null).custom(semverCheck), pnpm: Joi.string().empty(null).custom(semverCheck), + bun: Joi.string().empty(null).custom(semverCheck), yarn: Joi.string().empty(null).custom(semverCheck), expoCli: Joi.string().empty(null).custom(semverCheck), diff --git a/packages/eas-json/src/build/types.ts b/packages/eas-json/src/build/types.ts index c0589a52fe..60f503a3cf 100644 --- a/packages/eas-json/src/build/types.ts +++ b/packages/eas-json/src/build/types.ts @@ -45,6 +45,7 @@ export interface CommonBuildProfile { env?: Record; node?: string; pnpm?: string; + bun?: string; yarn?: string; expoCli?: string; diff --git a/yarn.lock b/yarn.lock index 83298891b6..01c38de545 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1403,6 +1403,14 @@ joi "^17.9.2" semver "^7.5.4" +"@expo/eas-build-job@1.0.43": + version "1.0.43" + resolved "https://registry.yarnpkg.com/@expo/eas-build-job/-/eas-build-job-1.0.43.tgz#e331b5039372c31b15aedbadc229efee3dcaefba" + integrity sha512-LMOoDIEax31uGBGux6/ocbCjUbWK3cUHuCxrsYlU+bvba4pGifegYWt2YQ/HC2477paq+K69IGjOUCHvNWG6Yg== + dependencies: + joi "^17.9.2" + semver "^7.5.4" + "@expo/image-utils@0.3.22": version "0.3.22" resolved "https://registry.yarnpkg.com/@expo/image-utils/-/image-utils-0.3.22.tgz#3a45fb2e268d20fcc761c87bca3aca7fd8e24260"