@expo/cli 0.7.3 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (200) hide show
  1. package/README.md +1 -1
  2. package/build/bin/cli +17 -3
  3. package/build/bin/cli.map +1 -1
  4. package/build/src/api/getExpoGoIntermediateCertificate.js +0 -2
  5. package/build/src/api/getExpoGoIntermediateCertificate.js.map +1 -1
  6. package/build/src/api/getProjectDevelopmentCertificate.js +0 -2
  7. package/build/src/api/getProjectDevelopmentCertificate.js.map +1 -1
  8. package/build/src/api/graphql/queries/AppQuery.js +39 -0
  9. package/build/src/api/graphql/queries/AppQuery.js.map +1 -0
  10. package/build/src/api/graphql/queries/UserQuery.js +10 -3
  11. package/build/src/api/graphql/queries/UserQuery.js.map +1 -1
  12. package/build/src/api/graphql/types/App.js +23 -0
  13. package/build/src/api/graphql/types/App.js.map +1 -0
  14. package/build/src/api/signManifest.js +0 -12
  15. package/build/src/api/signManifest.js.map +1 -1
  16. package/build/src/api/user/UserSettings.js.map +1 -1
  17. package/build/src/api/user/user.js.map +1 -1
  18. package/build/src/config/configAsync.js +3 -0
  19. package/build/src/config/configAsync.js.map +1 -1
  20. package/build/src/customize/customizeAsync.js +3 -0
  21. package/build/src/customize/customizeAsync.js.map +1 -1
  22. package/build/src/export/createBundles.js +8 -3
  23. package/build/src/export/createBundles.js.map +1 -1
  24. package/build/src/export/embed/exportEmbedAsync.js +23 -0
  25. package/build/src/export/embed/exportEmbedAsync.js.map +1 -0
  26. package/build/src/export/embed/index.js +117 -0
  27. package/build/src/export/embed/index.js.map +1 -0
  28. package/build/src/export/embed/resolveOptions.js +63 -0
  29. package/build/src/export/embed/resolveOptions.js.map +1 -0
  30. package/build/src/export/exportApp.js +58 -31
  31. package/build/src/export/exportApp.js.map +1 -1
  32. package/build/src/export/exportAssets.js +17 -0
  33. package/build/src/export/exportAssets.js.map +1 -1
  34. package/build/src/export/exportAsync.js +3 -0
  35. package/build/src/export/exportAsync.js.map +1 -1
  36. package/build/src/export/exportStaticAsync.js +179 -0
  37. package/build/src/export/exportStaticAsync.js.map +1 -0
  38. package/build/src/export/fork-bundleAsync.js +15 -43
  39. package/build/src/export/fork-bundleAsync.js.map +1 -1
  40. package/build/src/export/html.js +21 -0
  41. package/build/src/export/html.js.map +1 -0
  42. package/build/src/export/index.js +5 -1
  43. package/build/src/export/index.js.map +1 -1
  44. package/build/src/export/printBundleSizes.js +2 -2
  45. package/build/src/export/printBundleSizes.js.map +1 -1
  46. package/build/src/export/resolveOptions.js +1 -0
  47. package/build/src/export/resolveOptions.js.map +1 -1
  48. package/build/src/export/web/exportWebAsync.js +3 -0
  49. package/build/src/export/web/exportWebAsync.js.map +1 -1
  50. package/build/src/export/writeContents.js +5 -2
  51. package/build/src/export/writeContents.js.map +1 -1
  52. package/build/src/graphql/generated.js +462 -0
  53. package/build/src/graphql/generated.js.map +1 -0
  54. package/build/src/install/checkPackages.js +6 -0
  55. package/build/src/install/checkPackages.js.map +1 -1
  56. package/build/src/install/installAsync.js +18 -1
  57. package/build/src/install/installAsync.js.map +1 -1
  58. package/build/src/prebuild/clearNativeFolder.js +6 -1
  59. package/build/src/prebuild/clearNativeFolder.js.map +1 -1
  60. package/build/src/prebuild/copyTemplateFiles.js +3 -33
  61. package/build/src/prebuild/copyTemplateFiles.js.map +1 -1
  62. package/build/src/prebuild/ensureConfigAsync.js +1 -12
  63. package/build/src/prebuild/ensureConfigAsync.js.map +1 -1
  64. package/build/src/prebuild/prebuildAsync.js +7 -2
  65. package/build/src/prebuild/prebuildAsync.js.map +1 -1
  66. package/build/src/prebuild/resolveOptions.js +7 -8
  67. package/build/src/prebuild/resolveOptions.js.map +1 -1
  68. package/build/src/prebuild/resolveTemplate.js +5 -0
  69. package/build/src/prebuild/resolveTemplate.js.map +1 -1
  70. package/build/src/prebuild/updateFromTemplate.js +6 -8
  71. package/build/src/prebuild/updateFromTemplate.js.map +1 -1
  72. package/build/src/prebuild/updatePackageJson.js +33 -47
  73. package/build/src/prebuild/updatePackageJson.js.map +1 -1
  74. package/build/src/prebuild/validateTemplatePlatforms.js +48 -0
  75. package/build/src/prebuild/validateTemplatePlatforms.js.map +1 -0
  76. package/build/src/run/android/runAndroidAsync.js +4 -0
  77. package/build/src/run/android/runAndroidAsync.js.map +1 -1
  78. package/build/src/run/ios/appleDevice/AppleDevice.js +25 -19
  79. package/build/src/run/ios/appleDevice/AppleDevice.js.map +1 -1
  80. package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js.map +1 -1
  81. package/build/src/run/ios/options/resolveNativeScheme.js +13 -4
  82. package/build/src/run/ios/options/resolveNativeScheme.js.map +1 -1
  83. package/build/src/run/ios/runIosAsync.js +3 -0
  84. package/build/src/run/ios/runIosAsync.js.map +1 -1
  85. package/build/src/run/startBundler.js +4 -0
  86. package/build/src/run/startBundler.js.map +1 -1
  87. package/build/src/start/doctor/Prerequisite.js.map +1 -1
  88. package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js +12 -6
  89. package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js.map +1 -1
  90. package/build/src/start/doctor/dependencies/getVersionedPackages.js +13 -2
  91. package/build/src/start/doctor/dependencies/getVersionedPackages.js.map +1 -1
  92. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js +12 -4
  93. package/build/src/start/doctor/dependencies/validateDependenciesVersions.js.map +1 -1
  94. package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js +31 -5
  95. package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js.map +1 -1
  96. package/build/src/start/doctor/typescript/updateTSConfig.js +6 -0
  97. package/build/src/start/doctor/typescript/updateTSConfig.js.map +1 -1
  98. package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js +1 -0
  99. package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js.map +1 -1
  100. package/build/src/start/index.js +3 -1
  101. package/build/src/start/index.js.map +1 -1
  102. package/build/src/start/platforms/android/adb.js +1 -1
  103. package/build/src/start/platforms/android/adb.js.map +1 -1
  104. package/build/src/start/platforms/ios/AppleDeviceManager.js +1 -1
  105. package/build/src/start/platforms/ios/AppleDeviceManager.js.map +1 -1
  106. package/build/src/start/server/BundlerDevServer.js +16 -2
  107. package/build/src/start/server/BundlerDevServer.js.map +1 -1
  108. package/build/src/start/server/DevServerManager.js +33 -2
  109. package/build/src/start/server/DevServerManager.js.map +1 -1
  110. package/build/src/start/server/getStaticRenderFunctions.js +167 -0
  111. package/build/src/start/server/getStaticRenderFunctions.js.map +1 -0
  112. package/build/src/start/server/metro/MetroBundlerDevServer.js +262 -3
  113. package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -1
  114. package/build/src/start/server/metro/MetroTerminalReporter.js +2 -34
  115. package/build/src/start/server/metro/MetroTerminalReporter.js.map +1 -1
  116. package/build/src/start/server/metro/externals.js +72 -0
  117. package/build/src/start/server/metro/externals.js.map +1 -0
  118. package/build/src/start/server/metro/getCssModulesFromBundler.js +77 -0
  119. package/build/src/start/server/metro/getCssModulesFromBundler.js.map +1 -0
  120. package/build/src/start/server/metro/inspector-proxy/index.js +2 -2
  121. package/build/src/start/server/metro/inspector-proxy/index.js.map +1 -1
  122. package/build/src/start/server/metro/inspector-proxy/proxy.js +1 -3
  123. package/build/src/start/server/metro/inspector-proxy/proxy.js.map +1 -1
  124. package/build/src/start/server/metro/instantiateMetro.js +47 -48
  125. package/build/src/start/server/metro/instantiateMetro.js.map +1 -1
  126. package/build/src/start/server/metro/metroErrorInterface.js +137 -0
  127. package/build/src/start/server/metro/metroErrorInterface.js.map +1 -0
  128. package/build/src/start/server/metro/metroWatchTypeScriptFiles.js +51 -0
  129. package/build/src/start/server/metro/metroWatchTypeScriptFiles.js.map +1 -0
  130. package/build/src/start/server/metro/resolveFromProject.js +26 -3
  131. package/build/src/start/server/metro/resolveFromProject.js.map +1 -1
  132. package/build/src/start/server/metro/router.js +15 -2
  133. package/build/src/start/server/metro/router.js.map +1 -1
  134. package/build/src/start/server/metro/runServer-fork.js +107 -0
  135. package/build/src/start/server/metro/runServer-fork.js.map +1 -0
  136. package/build/src/start/server/metro/symbolicate.js +6 -0
  137. package/build/src/start/server/metro/symbolicate.js.map +1 -0
  138. package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js +70 -0
  139. package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js.map +1 -0
  140. package/build/src/start/server/metro/withMetroMultiPlatform.js +188 -45
  141. package/build/src/start/server/metro/withMetroMultiPlatform.js.map +1 -1
  142. package/build/src/start/server/middleware/ClassicManifestMiddleware.js +8 -1
  143. package/build/src/start/server/middleware/ClassicManifestMiddleware.js.map +1 -1
  144. package/build/src/start/server/middleware/CreateFileMiddleware.js +6 -3
  145. package/build/src/start/server/middleware/CreateFileMiddleware.js.map +1 -1
  146. package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js +113 -47
  147. package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js.map +1 -1
  148. package/build/src/start/server/middleware/ManifestMiddleware.js +59 -20
  149. package/build/src/start/server/middleware/ManifestMiddleware.js.map +1 -1
  150. package/build/src/start/server/type-generation/expo-env.js +27 -0
  151. package/build/src/start/server/type-generation/expo-env.js.map +1 -0
  152. package/build/src/start/server/type-generation/index.js +57 -0
  153. package/build/src/start/server/type-generation/index.js.map +1 -0
  154. package/build/src/start/server/type-generation/routes.js +291 -0
  155. package/build/src/start/server/type-generation/routes.js.map +1 -0
  156. package/build/src/start/server/type-generation/tsconfig.js +89 -0
  157. package/build/src/start/server/type-generation/tsconfig.js.map +1 -0
  158. package/build/src/start/server/webTemplate.js +20 -4
  159. package/build/src/start/server/webTemplate.js.map +1 -1
  160. package/build/src/start/server/webpack/WebpackBundlerDevServer.js +4 -6
  161. package/build/src/start/server/webpack/WebpackBundlerDevServer.js.map +1 -1
  162. package/build/src/start/startAsync.js +30 -8
  163. package/build/src/start/startAsync.js.map +1 -1
  164. package/build/src/utils/FileNotifier.js +11 -4
  165. package/build/src/utils/FileNotifier.js.map +1 -1
  166. package/build/src/utils/analytics/getMetroProperties.js +1 -1
  167. package/build/src/utils/analytics/getMetroProperties.js.map +1 -1
  168. package/build/src/utils/analytics/rudderstackClient.js +2 -2
  169. package/build/src/utils/codesigning.js +31 -7
  170. package/build/src/utils/codesigning.js.map +1 -1
  171. package/build/src/utils/dir.js +16 -6
  172. package/build/src/utils/dir.js.map +1 -1
  173. package/build/src/utils/env.js +6 -0
  174. package/build/src/utils/env.js.map +1 -1
  175. package/build/src/utils/mergeGitIgnorePaths.js +42 -0
  176. package/build/src/utils/mergeGitIgnorePaths.js.map +1 -1
  177. package/build/src/utils/nodeEnv.js +11 -0
  178. package/build/src/utils/nodeEnv.js.map +1 -0
  179. package/build/src/utils/resolveArgs.js +43 -0
  180. package/build/src/utils/resolveArgs.js.map +1 -1
  181. package/build/src/utils/strings.js +24 -0
  182. package/build/src/utils/strings.js.map +1 -0
  183. package/build/src/utils/template.js +21 -0
  184. package/build/src/utils/template.js.map +1 -0
  185. package/build/src/utils/tsconfig/evaluateTsConfig.js +61 -0
  186. package/build/src/utils/tsconfig/evaluateTsConfig.js.map +1 -0
  187. package/build/src/utils/tsconfig/loadTsConfigPaths.js +69 -0
  188. package/build/src/utils/tsconfig/loadTsConfigPaths.js.map +1 -0
  189. package/build/src/utils/tsconfig/matchTsConfigPathAlias.js +88 -0
  190. package/build/src/utils/tsconfig/matchTsConfigPathAlias.js.map +1 -0
  191. package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js +41 -0
  192. package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js.map +1 -0
  193. package/package.json +16 -10
  194. package/static/template/metro.config.js +4 -1
  195. package/build/src/api/getProject.js +0 -19
  196. package/build/src/api/getProject.js.map +0 -1
  197. package/build/src/api/graphql/generated.js +0 -113
  198. package/build/src/api/graphql/generated.js.map +0 -1
  199. package/build/src/prebuild/writeMetroConfig.js +0 -89
  200. package/build/src/prebuild/writeMetroConfig.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/graphql/generated.ts"],"sourcesContent":["/**\n * eslint-disable\n * This file was generated using GraphQL Codegen\n * Command: yarn generate-graphql-code\n * Run this during development for automatic type generation when editing GraphQL documents\n * For more info and docs, visit https://graphql-code-generator.com/\n */\n\nexport type Maybe<T> = T | null;\nexport type InputMaybe<T> = Maybe<T>;\nexport type Exact<T extends { [key: string]: unknown }> = { [K in keyof T]: T[K] };\nexport type MakeOptional<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]?: Maybe<T[SubKey]> };\nexport type MakeMaybe<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]: Maybe<T[SubKey]> };\n/** All built-in and custom scalars, mapped to their actual values */\nexport type Scalars = {\n ID: string;\n String: string;\n Boolean: boolean;\n Int: number;\n Float: number;\n DateTime: any;\n JSON: any;\n JSONObject: any;\n};\n\nexport type AccountDataInput = {\n name: Scalars['String'];\n};\n\nexport type AccountNotificationSubscriptionInput = {\n accountId: Scalars['ID'];\n event: NotificationEvent;\n type: NotificationType;\n userId: Scalars['ID'];\n};\n\nexport type AccountSsoConfigurationData = {\n authEndpoint?: InputMaybe<Scalars['String']>;\n authProtocol: AuthProtocolType;\n authProviderIdentifier: Scalars['String'];\n clientIdentifier: Scalars['String'];\n clientSecret: Scalars['String'];\n issuer: Scalars['String'];\n jwksEndpoint?: InputMaybe<Scalars['String']>;\n revokeEndpoint?: InputMaybe<Scalars['String']>;\n tokenEndpoint?: InputMaybe<Scalars['String']>;\n userInfoEndpoint?: InputMaybe<Scalars['String']>;\n};\n\nexport enum ActivityTimelineProjectActivityType {\n Build = 'BUILD',\n BuildJob = 'BUILD_JOB',\n Submission = 'SUBMISSION',\n Update = 'UPDATE'\n}\n\nexport type AddUserInput = {\n audience?: InputMaybe<MailchimpAudience>;\n email: Scalars['String'];\n tags?: InputMaybe<Array<MailchimpTag>>;\n};\n\n/** @isDefault: if set, these build credentials will become the default for the Android app. All other build credentials will have their default status set to false. */\nexport type AndroidAppBuildCredentialsInput = {\n isDefault: Scalars['Boolean'];\n keystoreId: Scalars['ID'];\n name: Scalars['String'];\n};\n\nexport type AndroidAppCredentialsFilter = {\n applicationIdentifier?: InputMaybe<Scalars['String']>;\n legacyOnly?: InputMaybe<Scalars['Boolean']>;\n};\n\nexport type AndroidAppCredentialsInput = {\n fcmId?: InputMaybe<Scalars['ID']>;\n googleServiceAccountKeyForSubmissionsId?: InputMaybe<Scalars['ID']>;\n};\n\nexport enum AndroidBuildType {\n Apk = 'APK',\n AppBundle = 'APP_BUNDLE',\n /** @deprecated Use developmentClient option instead. */\n DevelopmentClient = 'DEVELOPMENT_CLIENT'\n}\n\nexport type AndroidBuilderEnvironmentInput = {\n env?: InputMaybe<Scalars['JSONObject']>;\n expoCli?: InputMaybe<Scalars['String']>;\n image?: InputMaybe<Scalars['String']>;\n ndk?: InputMaybe<Scalars['String']>;\n node?: InputMaybe<Scalars['String']>;\n yarn?: InputMaybe<Scalars['String']>;\n};\n\nexport type AndroidFcmInput = {\n credential: Scalars['String'];\n version: AndroidFcmVersion;\n};\n\nexport enum AndroidFcmVersion {\n Legacy = 'LEGACY',\n V1 = 'V1'\n}\n\nexport type AndroidJobBuildCredentialsInput = {\n keystore: AndroidJobKeystoreInput;\n};\n\nexport type AndroidJobInput = {\n applicationArchivePath?: InputMaybe<Scalars['String']>;\n /** @deprecated */\n artifactPath?: InputMaybe<Scalars['String']>;\n buildArtifactPaths?: InputMaybe<Array<Scalars['String']>>;\n buildProfile?: InputMaybe<Scalars['String']>;\n buildType?: InputMaybe<AndroidBuildType>;\n builderEnvironment?: InputMaybe<AndroidBuilderEnvironmentInput>;\n cache?: InputMaybe<BuildCacheInput>;\n customBuildConfig?: InputMaybe<CustomBuildConfigInput>;\n developmentClient?: InputMaybe<Scalars['Boolean']>;\n experimental?: InputMaybe<Scalars['JSONObject']>;\n gradleCommand?: InputMaybe<Scalars['String']>;\n mode?: InputMaybe<BuildMode>;\n projectArchive: ProjectArchiveSourceInput;\n projectRootDirectory: Scalars['String'];\n releaseChannel?: InputMaybe<Scalars['String']>;\n secrets?: InputMaybe<AndroidJobSecretsInput>;\n triggeredBy?: InputMaybe<BuildTrigger>;\n type: BuildWorkflow;\n updates?: InputMaybe<BuildUpdatesInput>;\n username?: InputMaybe<Scalars['String']>;\n version?: InputMaybe<AndroidJobVersionInput>;\n};\n\nexport type AndroidJobKeystoreInput = {\n dataBase64: Scalars['String'];\n keyAlias: Scalars['String'];\n keyPassword?: InputMaybe<Scalars['String']>;\n keystorePassword: Scalars['String'];\n};\n\nexport type AndroidJobOverridesInput = {\n applicationArchivePath?: InputMaybe<Scalars['String']>;\n /** @deprecated */\n artifactPath?: InputMaybe<Scalars['String']>;\n buildArtifactPaths?: InputMaybe<Array<Scalars['String']>>;\n buildProfile?: InputMaybe<Scalars['String']>;\n buildType?: InputMaybe<AndroidBuildType>;\n builderEnvironment?: InputMaybe<AndroidBuilderEnvironmentInput>;\n cache?: InputMaybe<BuildCacheInput>;\n developmentClient?: InputMaybe<Scalars['Boolean']>;\n experimental?: InputMaybe<Scalars['JSONObject']>;\n gradleCommand?: InputMaybe<Scalars['String']>;\n mode?: InputMaybe<BuildMode>;\n releaseChannel?: InputMaybe<Scalars['String']>;\n secrets?: InputMaybe<AndroidJobSecretsInput>;\n updates?: InputMaybe<BuildUpdatesInput>;\n username?: InputMaybe<Scalars['String']>;\n version?: InputMaybe<AndroidJobVersionInput>;\n};\n\nexport type AndroidJobSecretsInput = {\n buildCredentials?: InputMaybe<AndroidJobBuildCredentialsInput>;\n robotAccessToken?: InputMaybe<Scalars['String']>;\n};\n\nexport type AndroidJobVersionInput = {\n versionCode: Scalars['String'];\n};\n\nexport type AndroidKeystoreInput = {\n base64EncodedKeystore: Scalars['String'];\n keyAlias: Scalars['String'];\n keyPassword?: InputMaybe<Scalars['String']>;\n keystorePassword: Scalars['String'];\n type: AndroidKeystoreType;\n};\n\nexport enum AndroidKeystoreType {\n Jks = 'JKS',\n Pkcs12 = 'PKCS12',\n Unknown = 'UNKNOWN'\n}\n\nexport type AndroidSubmissionConfigInput = {\n applicationIdentifier?: InputMaybe<Scalars['String']>;\n archiveUrl?: InputMaybe<Scalars['String']>;\n changesNotSentForReview?: InputMaybe<Scalars['Boolean']>;\n googleServiceAccountKeyId?: InputMaybe<Scalars['String']>;\n googleServiceAccountKeyJson?: InputMaybe<Scalars['String']>;\n releaseStatus?: InputMaybe<SubmissionAndroidReleaseStatus>;\n track: SubmissionAndroidTrack;\n};\n\nexport type AppDataInput = {\n id: Scalars['ID'];\n privacy?: InputMaybe<Scalars['String']>;\n};\n\nexport type AppInfoInput = {\n displayName?: InputMaybe<Scalars['String']>;\n};\n\nexport type AppInput = {\n accountId: Scalars['ID'];\n appInfo?: InputMaybe<AppInfoInput>;\n privacy: AppPrivacy;\n projectName: Scalars['String'];\n};\n\nexport type AppNotificationSubscriptionInput = {\n appId: Scalars['ID'];\n event: NotificationEvent;\n type: NotificationType;\n userId: Scalars['ID'];\n};\n\nexport enum AppPlatform {\n Android = 'ANDROID',\n Ios = 'IOS'\n}\n\nexport enum AppPrivacy {\n Hidden = 'HIDDEN',\n Public = 'PUBLIC',\n Unlisted = 'UNLISTED'\n}\n\nexport enum AppSort {\n /** Sort by recently published */\n RecentlyPublished = 'RECENTLY_PUBLISHED',\n /** Sort by highest trendScore */\n Viewed = 'VIEWED'\n}\n\nexport type AppStoreConnectApiKeyInput = {\n appleTeamId?: InputMaybe<Scalars['ID']>;\n issuerIdentifier: Scalars['String'];\n keyIdentifier: Scalars['String'];\n keyP8: Scalars['String'];\n name?: InputMaybe<Scalars['String']>;\n roles?: InputMaybe<Array<AppStoreConnectUserRole>>;\n};\n\nexport enum AppStoreConnectUserRole {\n AccessToReports = 'ACCESS_TO_REPORTS',\n AccountHolder = 'ACCOUNT_HOLDER',\n Admin = 'ADMIN',\n AppManager = 'APP_MANAGER',\n CloudManagedAppDistribution = 'CLOUD_MANAGED_APP_DISTRIBUTION',\n CloudManagedDeveloperId = 'CLOUD_MANAGED_DEVELOPER_ID',\n CreateApps = 'CREATE_APPS',\n CustomerSupport = 'CUSTOMER_SUPPORT',\n Developer = 'DEVELOPER',\n Finance = 'FINANCE',\n ImageManager = 'IMAGE_MANAGER',\n Marketing = 'MARKETING',\n ReadOnly = 'READ_ONLY',\n Sales = 'SALES',\n Technical = 'TECHNICAL',\n Unknown = 'UNKNOWN'\n}\n\nexport type AppVersionInput = {\n appId: Scalars['ID'];\n applicationIdentifier: Scalars['String'];\n buildVersion: Scalars['String'];\n platform: AppPlatform;\n runtimeVersion?: InputMaybe<Scalars['String']>;\n storeVersion: Scalars['String'];\n};\n\nexport type AppleAppIdentifierInput = {\n appleTeamId?: InputMaybe<Scalars['ID']>;\n bundleIdentifier: Scalars['String'];\n parentAppleAppId?: InputMaybe<Scalars['ID']>;\n};\n\nexport enum AppleDeviceClass {\n Ipad = 'IPAD',\n Iphone = 'IPHONE'\n}\n\nexport type AppleDeviceInput = {\n appleTeamId: Scalars['ID'];\n deviceClass?: InputMaybe<AppleDeviceClass>;\n enabled?: InputMaybe<Scalars['Boolean']>;\n identifier: Scalars['String'];\n model?: InputMaybe<Scalars['String']>;\n name?: InputMaybe<Scalars['String']>;\n softwareVersion?: InputMaybe<Scalars['String']>;\n};\n\nexport type AppleDistributionCertificateInput = {\n appleTeamId?: InputMaybe<Scalars['ID']>;\n certP12: Scalars['String'];\n certPassword: Scalars['String'];\n certPrivateSigningKey?: InputMaybe<Scalars['String']>;\n developerPortalIdentifier?: InputMaybe<Scalars['String']>;\n};\n\nexport type AppleProvisioningProfileInput = {\n appleProvisioningProfile: Scalars['String'];\n developerPortalIdentifier?: InputMaybe<Scalars['String']>;\n};\n\nexport type ApplePushKeyInput = {\n appleTeamId: Scalars['ID'];\n keyIdentifier: Scalars['String'];\n keyP8: Scalars['String'];\n};\n\nexport type AppleTeamInput = {\n appleTeamIdentifier: Scalars['String'];\n appleTeamName?: InputMaybe<Scalars['String']>;\n};\n\nexport enum AppsFilter {\n /** Featured Projects */\n Featured = 'FEATURED',\n /** New Projects */\n New = 'NEW'\n}\n\nexport type AscApiKeyInput = {\n issuerIdentifier: Scalars['String'];\n keyIdentifier: Scalars['String'];\n keyP8: Scalars['String'];\n};\n\nexport enum AssetMetadataStatus {\n DoesNotExist = 'DOES_NOT_EXIST',\n Exists = 'EXISTS'\n}\n\nexport enum AuthProtocolType {\n Oidc = 'OIDC'\n}\n\nexport type BuildCacheInput = {\n cacheDefaultPaths?: InputMaybe<Scalars['Boolean']>;\n clear?: InputMaybe<Scalars['Boolean']>;\n customPaths?: InputMaybe<Array<InputMaybe<Scalars['String']>>>;\n disabled?: InputMaybe<Scalars['Boolean']>;\n key?: InputMaybe<Scalars['String']>;\n};\n\nexport enum BuildCredentialsSource {\n Local = 'LOCAL',\n Remote = 'REMOTE'\n}\n\nexport type BuildFilter = {\n appBuildVersion?: InputMaybe<Scalars['String']>;\n appIdentifier?: InputMaybe<Scalars['String']>;\n appVersion?: InputMaybe<Scalars['String']>;\n buildProfile?: InputMaybe<Scalars['String']>;\n channel?: InputMaybe<Scalars['String']>;\n distribution?: InputMaybe<DistributionType>;\n gitCommitHash?: InputMaybe<Scalars['String']>;\n platform?: InputMaybe<AppPlatform>;\n runtimeVersion?: InputMaybe<Scalars['String']>;\n sdkVersion?: InputMaybe<Scalars['String']>;\n status?: InputMaybe<BuildStatus>;\n};\n\nexport type BuildFilterInput = {\n channel?: InputMaybe<Scalars['String']>;\n platforms?: InputMaybe<Array<AppPlatform>>;\n releaseChannel?: InputMaybe<Scalars['String']>;\n};\n\nexport enum BuildIosEnterpriseProvisioning {\n Adhoc = 'ADHOC',\n Universal = 'UNIVERSAL'\n}\n\nexport enum BuildJobLogsFormat {\n Json = 'JSON',\n Raw = 'RAW'\n}\n\nexport enum BuildJobStatus {\n Errored = 'ERRORED',\n Finished = 'FINISHED',\n InProgress = 'IN_PROGRESS',\n Pending = 'PENDING',\n SentToQueue = 'SENT_TO_QUEUE',\n Started = 'STARTED'\n}\n\nexport type BuildMetadataInput = {\n appBuildVersion?: InputMaybe<Scalars['String']>;\n appIdentifier?: InputMaybe<Scalars['String']>;\n appName?: InputMaybe<Scalars['String']>;\n appVersion?: InputMaybe<Scalars['String']>;\n buildMode?: InputMaybe<BuildMode>;\n buildProfile?: InputMaybe<Scalars['String']>;\n channel?: InputMaybe<Scalars['String']>;\n cliVersion?: InputMaybe<Scalars['String']>;\n credentialsSource?: InputMaybe<BuildCredentialsSource>;\n distribution?: InputMaybe<DistributionType>;\n gitCommitHash?: InputMaybe<Scalars['String']>;\n gitCommitMessage?: InputMaybe<Scalars['String']>;\n iosEnterpriseProvisioning?: InputMaybe<BuildIosEnterpriseProvisioning>;\n isGitWorkingTreeDirty?: InputMaybe<Scalars['Boolean']>;\n message?: InputMaybe<Scalars['String']>;\n reactNativeVersion?: InputMaybe<Scalars['String']>;\n releaseChannel?: InputMaybe<Scalars['String']>;\n runFromCI?: InputMaybe<Scalars['Boolean']>;\n runWithNoWaitFlag?: InputMaybe<Scalars['Boolean']>;\n runtimeVersion?: InputMaybe<Scalars['String']>;\n sdkVersion?: InputMaybe<Scalars['String']>;\n trackingContext?: InputMaybe<Scalars['JSONObject']>;\n username?: InputMaybe<Scalars['String']>;\n workflow?: InputMaybe<BuildWorkflow>;\n};\n\nexport enum BuildMode {\n Build = 'BUILD',\n Custom = 'CUSTOM',\n Resign = 'RESIGN'\n}\n\nexport type BuildParamsInput = {\n reactNativeVersion?: InputMaybe<Scalars['String']>;\n resourceClass: BuildResourceClass;\n sdkVersion?: InputMaybe<Scalars['String']>;\n};\n\nexport enum BuildPriority {\n High = 'HIGH',\n Normal = 'NORMAL',\n NormalPlus = 'NORMAL_PLUS'\n}\n\nexport type BuildResignInput = {\n applicationArchiveSource?: InputMaybe<ProjectArchiveSourceInput>;\n};\n\nexport enum BuildResourceClass {\n AndroidDefault = 'ANDROID_DEFAULT',\n AndroidLarge = 'ANDROID_LARGE',\n AndroidMedium = 'ANDROID_MEDIUM',\n IosDefault = 'IOS_DEFAULT',\n /** @deprecated Use IOS_INTEL_MEDIUM instead */\n IosIntelLarge = 'IOS_INTEL_LARGE',\n IosIntelMedium = 'IOS_INTEL_MEDIUM',\n IosLarge = 'IOS_LARGE',\n /** @deprecated Use IOS_M_MEDIUM instead */\n IosM1Large = 'IOS_M1_LARGE',\n IosM1Medium = 'IOS_M1_MEDIUM',\n IosMedium = 'IOS_MEDIUM',\n IosMLarge = 'IOS_M_LARGE',\n IosMMedium = 'IOS_M_MEDIUM',\n Legacy = 'LEGACY'\n}\n\nexport enum BuildStatus {\n Canceled = 'CANCELED',\n Errored = 'ERRORED',\n Finished = 'FINISHED',\n InProgress = 'IN_PROGRESS',\n InQueue = 'IN_QUEUE',\n New = 'NEW'\n}\n\nexport enum BuildTrigger {\n EasCli = 'EAS_CLI',\n GitBasedIntegration = 'GIT_BASED_INTEGRATION'\n}\n\nexport type BuildUpdatesInput = {\n channel?: InputMaybe<Scalars['String']>;\n};\n\nexport enum BuildWorkflow {\n Generic = 'GENERIC',\n Managed = 'MANAGED',\n Unknown = 'UNKNOWN'\n}\n\nexport type CodeSigningInfoInput = {\n alg: Scalars['String'];\n keyid: Scalars['String'];\n sig: Scalars['String'];\n};\n\nexport type CreateAccessTokenInput = {\n actorID: Scalars['ID'];\n note?: InputMaybe<Scalars['String']>;\n};\n\nexport type CreateAndroidSubmissionInput = {\n appId: Scalars['ID'];\n archiveSource?: InputMaybe<SubmissionArchiveSourceInput>;\n archiveUrl?: InputMaybe<Scalars['String']>;\n config: AndroidSubmissionConfigInput;\n submittedBuildId?: InputMaybe<Scalars['ID']>;\n};\n\nexport type CreateEnvironmentSecretInput = {\n name: Scalars['String'];\n type?: InputMaybe<EnvironmentSecretType>;\n value: Scalars['String'];\n};\n\nexport type CreateGitHubAppInstallationInput = {\n accountId: Scalars['ID'];\n installationIdentifier: Scalars['Int'];\n};\n\nexport type CreateGitHubRepositoryInput = {\n appId: Scalars['ID'];\n githubAppInstallationId: Scalars['ID'];\n githubRepositoryIdentifier: Scalars['Int'];\n nodeIdentifier: Scalars['String'];\n};\n\nexport type CreateGitHubRepositorySettingsInput = {\n appId: Scalars['ID'];\n /** The base directory is the directory to change to before starting a build. This string should be a properly formatted POSIX path starting with '/', './', or the name of the directory relative to the root of the repository. Valid examples include: '/apps/expo-app', './apps/expo-app', and 'apps/expo-app'. This is intended for monorepos or apps that live in a subdirectory of a repository. */\n baseDirectory: Scalars['String'];\n};\n\nexport type CreateIosSubmissionInput = {\n appId: Scalars['ID'];\n archiveSource?: InputMaybe<SubmissionArchiveSourceInput>;\n archiveUrl?: InputMaybe<Scalars['String']>;\n config: IosSubmissionConfigInput;\n submittedBuildId?: InputMaybe<Scalars['ID']>;\n};\n\nexport type CustomBuildConfigInput = {\n path: Scalars['String'];\n};\n\nexport enum DistributionType {\n Internal = 'INTERNAL',\n Simulator = 'SIMULATOR',\n Store = 'STORE'\n}\n\nexport enum EasBuildDeprecationInfoType {\n Internal = 'INTERNAL',\n UserFacing = 'USER_FACING'\n}\n\nexport enum EasService {\n Builds = 'BUILDS',\n Updates = 'UPDATES'\n}\n\nexport enum EasServiceMetric {\n AssetsRequests = 'ASSETS_REQUESTS',\n BandwidthUsage = 'BANDWIDTH_USAGE',\n Builds = 'BUILDS',\n ManifestRequests = 'MANIFEST_REQUESTS',\n UniqueUpdaters = 'UNIQUE_UPDATERS',\n UniqueUsers = 'UNIQUE_USERS'\n}\n\nexport enum EasTotalPlanEnablementUnit {\n Build = 'BUILD',\n Byte = 'BYTE',\n Concurrency = 'CONCURRENCY',\n Request = 'REQUEST',\n Updater = 'UPDATER',\n User = 'USER'\n}\n\nexport type EditUpdateBranchInput = {\n appId?: InputMaybe<Scalars['ID']>;\n id?: InputMaybe<Scalars['ID']>;\n name?: InputMaybe<Scalars['String']>;\n newName: Scalars['String'];\n};\n\nexport enum EnvironmentSecretType {\n FileBase64 = 'FILE_BASE64',\n String = 'STRING'\n}\n\nexport enum Feature {\n /** Priority Builds */\n Builds = 'BUILDS',\n /** Funds support for open source development */\n OpenSource = 'OPEN_SOURCE',\n /** Top Tier Support */\n Support = 'SUPPORT',\n /** Share access to projects */\n Teams = 'TEAMS'\n}\n\nexport enum GitHubAppEnvironment {\n Development = 'DEVELOPMENT',\n Production = 'PRODUCTION',\n Staging = 'STAGING'\n}\n\nexport enum GitHubAppInstallationStatus {\n Active = 'ACTIVE',\n NotInstalled = 'NOT_INSTALLED',\n Suspended = 'SUSPENDED'\n}\n\nexport type GitHubBuildInput = {\n appId: Scalars['ID'];\n baseDirectory?: InputMaybe<Scalars['String']>;\n buildProfile: Scalars['String'];\n gitRef: Scalars['String'];\n platform: AppPlatform;\n};\n\nexport type GoogleServiceAccountKeyInput = {\n jsonKey: Scalars['JSONObject'];\n};\n\nexport enum InvoiceDiscountType {\n Amount = 'AMOUNT',\n Percentage = 'PERCENTAGE'\n}\n\nexport type IosAppBuildCredentialsFilter = {\n iosDistributionType?: InputMaybe<IosDistributionType>;\n};\n\nexport type IosAppBuildCredentialsInput = {\n distributionCertificateId: Scalars['ID'];\n iosDistributionType: IosDistributionType;\n provisioningProfileId: Scalars['ID'];\n};\n\nexport type IosAppCredentialsFilter = {\n appleAppIdentifierId?: InputMaybe<Scalars['String']>;\n};\n\nexport type IosAppCredentialsInput = {\n appStoreConnectApiKeyForSubmissionsId?: InputMaybe<Scalars['ID']>;\n appleTeamId?: InputMaybe<Scalars['ID']>;\n pushKeyId?: InputMaybe<Scalars['ID']>;\n};\n\n/** @deprecated Use developmentClient option instead. */\nexport enum IosBuildType {\n DevelopmentClient = 'DEVELOPMENT_CLIENT',\n Release = 'RELEASE'\n}\n\nexport type IosBuilderEnvironmentInput = {\n bundler?: InputMaybe<Scalars['String']>;\n cocoapods?: InputMaybe<Scalars['String']>;\n env?: InputMaybe<Scalars['JSONObject']>;\n expoCli?: InputMaybe<Scalars['String']>;\n fastlane?: InputMaybe<Scalars['String']>;\n image?: InputMaybe<Scalars['String']>;\n node?: InputMaybe<Scalars['String']>;\n yarn?: InputMaybe<Scalars['String']>;\n};\n\nexport enum IosDistributionType {\n AdHoc = 'AD_HOC',\n AppStore = 'APP_STORE',\n Development = 'DEVELOPMENT',\n Enterprise = 'ENTERPRISE'\n}\n\nexport type IosJobDistributionCertificateInput = {\n dataBase64: Scalars['String'];\n password: Scalars['String'];\n};\n\nexport type IosJobInput = {\n applicationArchivePath?: InputMaybe<Scalars['String']>;\n /** @deprecated */\n artifactPath?: InputMaybe<Scalars['String']>;\n buildArtifactPaths?: InputMaybe<Array<Scalars['String']>>;\n buildConfiguration?: InputMaybe<Scalars['String']>;\n buildProfile?: InputMaybe<Scalars['String']>;\n /** @deprecated */\n buildType?: InputMaybe<IosBuildType>;\n builderEnvironment?: InputMaybe<IosBuilderEnvironmentInput>;\n cache?: InputMaybe<BuildCacheInput>;\n customBuildConfig?: InputMaybe<CustomBuildConfigInput>;\n developmentClient?: InputMaybe<Scalars['Boolean']>;\n /** @deprecated */\n distribution?: InputMaybe<DistributionType>;\n experimental?: InputMaybe<Scalars['JSONObject']>;\n mode?: InputMaybe<BuildMode>;\n projectArchive: ProjectArchiveSourceInput;\n projectRootDirectory: Scalars['String'];\n releaseChannel?: InputMaybe<Scalars['String']>;\n scheme?: InputMaybe<Scalars['String']>;\n secrets?: InputMaybe<IosJobSecretsInput>;\n simulator?: InputMaybe<Scalars['Boolean']>;\n triggeredBy?: InputMaybe<BuildTrigger>;\n type: BuildWorkflow;\n updates?: InputMaybe<BuildUpdatesInput>;\n username?: InputMaybe<Scalars['String']>;\n version?: InputMaybe<IosJobVersionInput>;\n};\n\nexport type IosJobOverridesInput = {\n applicationArchivePath?: InputMaybe<Scalars['String']>;\n /** @deprecated */\n artifactPath?: InputMaybe<Scalars['String']>;\n buildArtifactPaths?: InputMaybe<Array<Scalars['String']>>;\n buildConfiguration?: InputMaybe<Scalars['String']>;\n buildProfile?: InputMaybe<Scalars['String']>;\n /** @deprecated */\n buildType?: InputMaybe<IosBuildType>;\n builderEnvironment?: InputMaybe<IosBuilderEnvironmentInput>;\n cache?: InputMaybe<BuildCacheInput>;\n developmentClient?: InputMaybe<Scalars['Boolean']>;\n /** @deprecated */\n distribution?: InputMaybe<DistributionType>;\n experimental?: InputMaybe<Scalars['JSONObject']>;\n mode?: InputMaybe<BuildMode>;\n releaseChannel?: InputMaybe<Scalars['String']>;\n resign?: InputMaybe<BuildResignInput>;\n scheme?: InputMaybe<Scalars['String']>;\n secrets?: InputMaybe<IosJobSecretsInput>;\n simulator?: InputMaybe<Scalars['Boolean']>;\n type?: InputMaybe<BuildWorkflow>;\n updates?: InputMaybe<BuildUpdatesInput>;\n username?: InputMaybe<Scalars['String']>;\n version?: InputMaybe<IosJobVersionInput>;\n};\n\nexport type IosJobSecretsInput = {\n buildCredentials?: InputMaybe<Array<InputMaybe<IosJobTargetCredentialsInput>>>;\n robotAccessToken?: InputMaybe<Scalars['String']>;\n};\n\nexport type IosJobTargetCredentialsInput = {\n distributionCertificate: IosJobDistributionCertificateInput;\n provisioningProfileBase64: Scalars['String'];\n targetName: Scalars['String'];\n};\n\nexport type IosJobVersionInput = {\n buildNumber: Scalars['String'];\n};\n\n/** @deprecated Use developmentClient option instead. */\nexport enum IosManagedBuildType {\n DevelopmentClient = 'DEVELOPMENT_CLIENT',\n Release = 'RELEASE'\n}\n\nexport enum IosSchemeBuildConfiguration {\n Debug = 'DEBUG',\n Release = 'RELEASE'\n}\n\nexport type IosSubmissionConfigInput = {\n appleAppSpecificPassword?: InputMaybe<Scalars['String']>;\n appleIdUsername?: InputMaybe<Scalars['String']>;\n archiveUrl?: InputMaybe<Scalars['String']>;\n ascApiKey?: InputMaybe<AscApiKeyInput>;\n ascApiKeyId?: InputMaybe<Scalars['String']>;\n ascAppIdentifier: Scalars['String'];\n};\n\nexport enum MailchimpAudience {\n ExpoDevelopers = 'EXPO_DEVELOPERS'\n}\n\nexport enum MailchimpTag {\n DevClientUsers = 'DEV_CLIENT_USERS',\n EasMasterList = 'EAS_MASTER_LIST'\n}\n\nexport enum NotificationEvent {\n BuildComplete = 'BUILD_COMPLETE',\n SubmissionComplete = 'SUBMISSION_COMPLETE'\n}\n\nexport type NotificationSubscriptionFilter = {\n accountId?: InputMaybe<Scalars['ID']>;\n appId?: InputMaybe<Scalars['ID']>;\n event?: InputMaybe<NotificationEvent>;\n type?: InputMaybe<NotificationType>;\n};\n\nexport enum NotificationType {\n Email = 'EMAIL'\n}\n\nexport enum OfferType {\n /** Addon, or supplementary subscription */\n Addon = 'ADDON',\n /** Advanced Purchase of Paid Resource */\n Prepaid = 'PREPAID',\n /** Term subscription */\n Subscription = 'SUBSCRIPTION'\n}\n\nexport enum Order {\n Asc = 'ASC',\n Desc = 'DESC'\n}\n\nexport type PartialManifest = {\n assets: Array<InputMaybe<PartialManifestAsset>>;\n extra?: InputMaybe<Scalars['JSONObject']>;\n launchAsset: PartialManifestAsset;\n};\n\nexport type PartialManifestAsset = {\n bundleKey: Scalars['String'];\n contentType: Scalars['String'];\n fileExtension?: InputMaybe<Scalars['String']>;\n fileSHA256: Scalars['String'];\n storageKey: Scalars['String'];\n};\n\nexport enum Permission {\n Admin = 'ADMIN',\n Own = 'OWN',\n Publish = 'PUBLISH',\n View = 'VIEW'\n}\n\nexport type ProjectArchiveSourceInput = {\n bucketKey?: InputMaybe<Scalars['String']>;\n gitRef?: InputMaybe<Scalars['String']>;\n repositoryUrl?: InputMaybe<Scalars['String']>;\n type: ProjectArchiveSourceType;\n url?: InputMaybe<Scalars['String']>;\n};\n\nexport enum ProjectArchiveSourceType {\n Gcs = 'GCS',\n Git = 'GIT',\n None = 'NONE',\n S3 = 'S3',\n Url = 'URL'\n}\n\nexport type PublishUpdateGroupInput = {\n awaitingCodeSigningInfo?: InputMaybe<Scalars['Boolean']>;\n branchId: Scalars['String'];\n excludedAssets?: InputMaybe<Array<PartialManifestAsset>>;\n gitCommitHash?: InputMaybe<Scalars['String']>;\n isGitWorkingTreeDirty?: InputMaybe<Scalars['Boolean']>;\n message?: InputMaybe<Scalars['String']>;\n rollBackToEmbeddedInfoGroup?: InputMaybe<UpdateRollBackToEmbeddedGroup>;\n runtimeVersion: Scalars['String'];\n updateInfoGroup?: InputMaybe<UpdateInfoGroup>;\n};\n\nexport type RobotDataInput = {\n name?: InputMaybe<Scalars['String']>;\n};\n\nexport enum Role {\n Admin = 'ADMIN',\n Custom = 'CUSTOM',\n Developer = 'DEVELOPER',\n HasAdmin = 'HAS_ADMIN',\n NotAdmin = 'NOT_ADMIN',\n Owner = 'OWNER',\n ViewOnly = 'VIEW_ONLY'\n}\n\nexport type SecondFactorDeviceConfiguration = {\n isPrimary: Scalars['Boolean'];\n method: SecondFactorMethod;\n name: Scalars['String'];\n smsPhoneNumber?: InputMaybe<Scalars['String']>;\n};\n\nexport enum SecondFactorMethod {\n /** Google Authenticator (TOTP) */\n Authenticator = 'AUTHENTICATOR',\n /** SMS */\n Sms = 'SMS'\n}\n\nexport type ServerlessFunctionIdentifierInput = {\n gitCommitSHA1: Scalars['String'];\n};\n\nexport enum StandardOffer {\n /** $29 USD per month, 30 day trial */\n Default = 'DEFAULT',\n /** $800 USD per month */\n Support = 'SUPPORT',\n /** $29 USD per month, 1 year trial */\n YcDeals = 'YC_DEALS',\n /** $348 USD per year, 30 day trial */\n YearlySub = 'YEARLY_SUB'\n}\n\n/** Possible Incident impact values from Expo status page API. */\nexport enum StatuspageIncidentImpact {\n Critical = 'CRITICAL',\n Maintenance = 'MAINTENANCE',\n Major = 'MAJOR',\n Minor = 'MINOR',\n None = 'NONE'\n}\n\n/** Possible Incident statuses from Expo status page API. */\nexport enum StatuspageIncidentStatus {\n Completed = 'COMPLETED',\n Identified = 'IDENTIFIED',\n Investigating = 'INVESTIGATING',\n InProgress = 'IN_PROGRESS',\n Monitoring = 'MONITORING',\n Resolved = 'RESOLVED',\n Scheduled = 'SCHEDULED',\n Verifying = 'VERIFYING'\n}\n\n/** Name of a service monitored by Expo status page. */\nexport enum StatuspageServiceName {\n EasBuild = 'EAS_BUILD',\n EasSubmit = 'EAS_SUBMIT',\n EasUpdate = 'EAS_UPDATE'\n}\n\n/** Possible statuses for a service. */\nexport enum StatuspageServiceStatus {\n DegradedPerformance = 'DEGRADED_PERFORMANCE',\n MajorOutage = 'MAJOR_OUTAGE',\n Operational = 'OPERATIONAL',\n PartialOutage = 'PARTIAL_OUTAGE',\n UnderMaintenance = 'UNDER_MAINTENANCE'\n}\n\nexport enum SubmissionAndroidArchiveType {\n Aab = 'AAB',\n Apk = 'APK'\n}\n\nexport enum SubmissionAndroidReleaseStatus {\n Completed = 'COMPLETED',\n Draft = 'DRAFT',\n Halted = 'HALTED',\n InProgress = 'IN_PROGRESS'\n}\n\nexport enum SubmissionAndroidTrack {\n Alpha = 'ALPHA',\n Beta = 'BETA',\n Internal = 'INTERNAL',\n Production = 'PRODUCTION'\n}\n\nexport type SubmissionArchiveSourceInput = {\n /** Required if the archive source type is GCS_BUILD_APPLICATION_ARCHIVE or GCS_SUBMIT_ARCHIVE */\n bucketKey?: InputMaybe<Scalars['String']>;\n type: SubmissionArchiveSourceType;\n /** Required if the archive source type is URL */\n url?: InputMaybe<Scalars['String']>;\n};\n\nexport enum SubmissionArchiveSourceType {\n GcsBuildApplicationArchive = 'GCS_BUILD_APPLICATION_ARCHIVE',\n GcsSubmitArchive = 'GCS_SUBMIT_ARCHIVE',\n Url = 'URL'\n}\n\nexport type SubmissionFilter = {\n platform?: InputMaybe<AppPlatform>;\n status?: InputMaybe<SubmissionStatus>;\n};\n\nexport enum SubmissionStatus {\n AwaitingBuild = 'AWAITING_BUILD',\n Canceled = 'CANCELED',\n Errored = 'ERRORED',\n Finished = 'FINISHED',\n InProgress = 'IN_PROGRESS',\n InQueue = 'IN_QUEUE'\n}\n\nexport type TimelineActivityFilterInput = {\n channels?: InputMaybe<Array<Scalars['String']>>;\n platforms?: InputMaybe<Array<AppPlatform>>;\n releaseChannels?: InputMaybe<Array<Scalars['String']>>;\n types?: InputMaybe<Array<ActivityTimelineProjectActivityType>>;\n};\n\nexport type UpdateGitHubRepositorySettingsInput = {\n baseDirectory: Scalars['String'];\n};\n\nexport type UpdateInfoGroup = {\n android?: InputMaybe<PartialManifest>;\n ios?: InputMaybe<PartialManifest>;\n web?: InputMaybe<PartialManifest>;\n};\n\nexport type UpdateRollBackToEmbeddedGroup = {\n android?: InputMaybe<Scalars['Boolean']>;\n ios?: InputMaybe<Scalars['Boolean']>;\n web?: InputMaybe<Scalars['Boolean']>;\n};\n\nexport type UpdatesFilter = {\n platform?: InputMaybe<AppPlatform>;\n runtimeVersions?: InputMaybe<Array<Scalars['String']>>;\n};\n\nexport enum UploadSessionType {\n EasBuildGcsProjectSources = 'EAS_BUILD_GCS_PROJECT_SOURCES',\n EasBuildProjectSources = 'EAS_BUILD_PROJECT_SOURCES',\n EasSubmitAppArchive = 'EAS_SUBMIT_APP_ARCHIVE',\n EasSubmitGcsAppArchive = 'EAS_SUBMIT_GCS_APP_ARCHIVE'\n}\n\nexport enum UsageMetricType {\n Bandwidth = 'BANDWIDTH',\n Build = 'BUILD',\n Request = 'REQUEST',\n Update = 'UPDATE',\n User = 'USER'\n}\n\nexport enum UsageMetricsGranularity {\n Day = 'DAY',\n Hour = 'HOUR',\n Minute = 'MINUTE',\n Total = 'TOTAL'\n}\n\nexport type UsageMetricsTimespan = {\n end: Scalars['DateTime'];\n start: Scalars['DateTime'];\n};\n\nexport type UserDataInput = {\n appetizeCode?: InputMaybe<Scalars['String']>;\n email?: InputMaybe<Scalars['String']>;\n firstName?: InputMaybe<Scalars['String']>;\n fullName?: InputMaybe<Scalars['String']>;\n githubUsername?: InputMaybe<Scalars['String']>;\n id?: InputMaybe<Scalars['ID']>;\n industry?: InputMaybe<Scalars['String']>;\n lastName?: InputMaybe<Scalars['String']>;\n location?: InputMaybe<Scalars['String']>;\n profilePhoto?: InputMaybe<Scalars['String']>;\n twitterUsername?: InputMaybe<Scalars['String']>;\n username?: InputMaybe<Scalars['String']>;\n};\n\nexport type WebhookFilter = {\n event?: InputMaybe<WebhookType>;\n};\n\nexport type WebhookInput = {\n event: WebhookType;\n secret: Scalars['String'];\n url: Scalars['String'];\n};\n\nexport enum WebhookType {\n Build = 'BUILD',\n Submit = 'SUBMIT'\n}\n\nexport type AppByIdQueryVariables = Exact<{\n appId: Scalars['String'];\n}>;\n\n\nexport type AppByIdQuery = { __typename?: 'RootQuery', app: { __typename?: 'AppQuery', byId: { __typename?: 'App', id: string, scopeKey: string, ownerAccount: { __typename?: 'Account', id: string } } } };\n\nexport type CurrentUserQueryVariables = Exact<{ [key: string]: never; }>;\n\n\nexport type CurrentUserQuery = { __typename?: 'RootQuery', meActor?: { __typename: 'Robot', firstName?: string | null, id: string, accounts: Array<{ __typename?: 'Account', id: string, users: Array<{ __typename?: 'UserPermission', permissions: Array<Permission>, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> }> } | { __typename: 'SSOUser', username: string, id: string, primaryAccount: { __typename?: 'Account', id: string }, accounts: Array<{ __typename?: 'Account', id: string, users: Array<{ __typename?: 'UserPermission', permissions: Array<Permission>, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> }> } | { __typename: 'User', username: string, id: string, primaryAccount: { __typename?: 'Account', id: string }, accounts: Array<{ __typename?: 'Account', id: string, users: Array<{ __typename?: 'UserPermission', permissions: Array<Permission>, actor: { __typename?: 'Robot', id: string } | { __typename?: 'SSOUser', id: string } | { __typename?: 'User', id: string } }> }> } | null };\n\nexport type AppFragment = { __typename?: 'App', id: string, scopeKey: string, ownerAccount: { __typename?: 'Account', id: string } };\n"],"names":["ActivityTimelineProjectActivityType","Build","BuildJob","Submission","Update","AndroidBuildType","Apk","AppBundle","DevelopmentClient","AndroidFcmVersion","Legacy","V1","AndroidKeystoreType","Jks","Pkcs12","Unknown","AppPlatform","Android","Ios","AppPrivacy","Hidden","Public","Unlisted","AppSort","RecentlyPublished","Viewed","AppStoreConnectUserRole","AccessToReports","AccountHolder","Admin","AppManager","CloudManagedAppDistribution","CloudManagedDeveloperId","CreateApps","CustomerSupport","Developer","Finance","ImageManager","Marketing","ReadOnly","Sales","Technical","AppleDeviceClass","Ipad","Iphone","AppsFilter","Featured","New","AssetMetadataStatus","DoesNotExist","Exists","AuthProtocolType","Oidc","BuildCredentialsSource","Local","Remote","BuildIosEnterpriseProvisioning","Adhoc","Universal","BuildJobLogsFormat","Json","Raw","BuildJobStatus","Errored","Finished","InProgress","Pending","SentToQueue","Started","BuildMode","Custom","Resign","BuildPriority","High","Normal","NormalPlus","BuildResourceClass","AndroidDefault","AndroidLarge","AndroidMedium","IosDefault","IosIntelLarge","IosIntelMedium","IosLarge","IosM1Large","IosM1Medium","IosMedium","IosMLarge","IosMMedium","BuildStatus","Canceled","InQueue","BuildTrigger","EasCli","GitBasedIntegration","BuildWorkflow","Generic","Managed","DistributionType","Internal","Simulator","Store","EasBuildDeprecationInfoType","UserFacing","EasService","Builds","Updates","EasServiceMetric","AssetsRequests","BandwidthUsage","ManifestRequests","UniqueUpdaters","UniqueUsers","EasTotalPlanEnablementUnit","Byte","Concurrency","Request","Updater","User","EnvironmentSecretType","FileBase64","String","Feature","OpenSource","Support","Teams","GitHubAppEnvironment","Development","Production","Staging","GitHubAppInstallationStatus","Active","NotInstalled","Suspended","InvoiceDiscountType","Amount","Percentage","IosBuildType","Release","IosDistributionType","AdHoc","AppStore","Enterprise","IosManagedBuildType","IosSchemeBuildConfiguration","Debug","MailchimpAudience","ExpoDevelopers","MailchimpTag","DevClientUsers","EasMasterList","NotificationEvent","BuildComplete","SubmissionComplete","NotificationType","Email","OfferType","Addon","Prepaid","Subscription","Order","Asc","Desc","Permission","Own","Publish","View","ProjectArchiveSourceType","Gcs","Git","None","S3","Url","Role","HasAdmin","NotAdmin","Owner","ViewOnly","SecondFactorMethod","Authenticator","Sms","StandardOffer","Default","YcDeals","YearlySub","StatuspageIncidentImpact","Critical","Maintenance","Major","Minor","StatuspageIncidentStatus","Completed","Identified","Investigating","Monitoring","Resolved","Scheduled","Verifying","StatuspageServiceName","EasBuild","EasSubmit","EasUpdate","StatuspageServiceStatus","DegradedPerformance","MajorOutage","Operational","PartialOutage","UnderMaintenance","SubmissionAndroidArchiveType","Aab","SubmissionAndroidReleaseStatus","Draft","Halted","SubmissionAndroidTrack","Alpha","Beta","SubmissionArchiveSourceType","GcsBuildApplicationArchive","GcsSubmitArchive","SubmissionStatus","AwaitingBuild","UploadSessionType","EasBuildGcsProjectSources","EasBuildProjectSources","EasSubmitAppArchive","EasSubmitGcsAppArchive","UsageMetricType","Bandwidth","UsageMetricsGranularity","Day","Hour","Minute","Total","WebhookType","Submit"],"mappings":"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"}
@@ -8,7 +8,9 @@ var _chalk = _interopRequireDefault(require("chalk"));
8
8
  var Log = _interopRequireWildcard(require("../log"));
9
9
  var _validateDependenciesVersions = require("../start/doctor/dependencies/validateDependenciesVersions");
10
10
  var _interactive = require("../utils/interactive");
11
+ var _link = require("../utils/link");
11
12
  var _prompts = require("../utils/prompts");
13
+ var _strings = require("../utils/strings");
12
14
  var _installAsync = require("./installAsync");
13
15
  function _interopRequireDefault(obj) {
14
16
  return obj && obj.__esModule ? obj : {
@@ -38,12 +40,16 @@ function _interopRequireWildcard(obj) {
38
40
  }
39
41
  const debug = require("debug")("expo:install:check");
40
42
  async function checkPackagesAsync(projectRoot, { packages , packageManager , options: { fix } , packageManagerArguments }) {
43
+ var ref, ref1, ref2;
41
44
  // Read the project Expo config without plugins.
42
45
  const { exp , pkg } = (0, _config).getConfig(projectRoot, {
43
46
  // Sometimes users will add a plugin to the config before installing the library,
44
47
  // this wouldn't work unless we dangerously disable plugin serialization.
45
48
  skipPlugins: true
46
49
  });
50
+ if ((ref = pkg.expo) == null ? void 0 : (ref1 = ref.install) == null ? void 0 : (ref2 = ref1.exclude) == null ? void 0 : ref2.length) {
51
+ Log.log(_chalk.default`Skipped ${fix ? "fixing" : "checking"} dependencies: ${(0, _strings).joinWithCommasAnd(pkg.expo.install.exclude)}. These dependencies are listed in {bold expo.install.exclude} in package.json. ${(0, _link).learnMore("https://expo.dev/more/expo-cli/#configuring-dependency-validation")}`);
52
+ }
47
53
  const dependencies = await (0, _validateDependenciesVersions).getVersionedDependenciesAsync(projectRoot, exp, pkg, packages);
48
54
  if (!dependencies.length) {
49
55
  Log.exit(_chalk.default.greenBright("Dependencies are up to date"), 0);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/install/checkPackages.ts"],"sourcesContent":["import { getConfig } from '@expo/config';\nimport * as PackageManager from '@expo/package-manager';\nimport chalk from 'chalk';\n\nimport * as Log from '../log';\nimport {\n getVersionedDependenciesAsync,\n logIncorrectDependencies,\n} from '../start/doctor/dependencies/validateDependenciesVersions';\nimport { isInteractive } from '../utils/interactive';\nimport { confirmAsync } from '../utils/prompts';\nimport { fixPackagesAsync } from './installAsync';\nimport { Options } from './resolveOptions';\n\nconst debug = require('debug')('expo:install:check') as typeof console.log;\n\n// Exposed for testing.\nexport async function checkPackagesAsync(\n projectRoot: string,\n {\n packages,\n packageManager,\n options: { fix },\n packageManagerArguments,\n }: {\n /**\n * List of packages to version\n * @example ['uuid', 'react-native-reanimated@latest']\n */\n packages: string[];\n /** Package manager to use when installing the versioned packages. */\n packageManager: PackageManager.NodePackageManager;\n\n /** How the check should resolve */\n options: Pick<Options, 'fix'>;\n /**\n * Extra parameters to pass to the `packageManager` when installing versioned packages.\n * @example ['--no-save']\n */\n packageManagerArguments: string[];\n }\n) {\n // Read the project Expo config without plugins.\n const { exp, pkg } = getConfig(projectRoot, {\n // Sometimes users will add a plugin to the config before installing the library,\n // this wouldn't work unless we dangerously disable plugin serialization.\n skipPlugins: true,\n });\n\n const dependencies = await getVersionedDependenciesAsync(projectRoot, exp, pkg, packages);\n\n if (!dependencies.length) {\n Log.exit(chalk.greenBright('Dependencies are up to date'), 0);\n }\n\n logIncorrectDependencies(dependencies);\n\n const value =\n // If `--fix` then always fix.\n fix ||\n // Otherwise prompt to fix when not running in CI.\n (isInteractive() && (await confirmAsync({ message: 'Fix dependencies?' }).catch(() => false)));\n\n if (value) {\n debug('Installing fixed dependencies:', dependencies);\n // Install the corrected dependencies.\n return fixPackagesAsync(projectRoot, {\n packageManager,\n packages: dependencies,\n packageManagerArguments,\n sdkVersion: exp.sdkVersion!,\n });\n }\n // Exit with non-zero exit code if any of the dependencies are out of date.\n Log.exit(chalk.red('Found outdated dependencies'), 1);\n}\n"],"names":["checkPackagesAsync","Log","debug","require","projectRoot","packages","packageManager","options","fix","packageManagerArguments","exp","pkg","getConfig","skipPlugins","dependencies","getVersionedDependenciesAsync","length","exit","chalk","greenBright","logIncorrectDependencies","value","isInteractive","confirmAsync","message","catch","fixPackagesAsync","sdkVersion","red"],"mappings":"AAAA;;;;QAiBsBA,kBAAkB,GAAlBA,kBAAkB;AAjBd,IAAA,OAAc,WAAd,cAAc,CAAA;AAEtB,IAAA,MAAO,kCAAP,OAAO,EAAA;AAEbC,IAAAA,GAAG,mCAAM,QAAQ,EAAd;AAIR,IAAA,6BAA2D,WAA3D,2DAA2D,CAAA;AACpC,IAAA,YAAsB,WAAtB,sBAAsB,CAAA;AACvB,IAAA,QAAkB,WAAlB,kBAAkB,CAAA;AACd,IAAA,aAAgB,WAAhB,gBAAgB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGjD,MAAMC,KAAK,GAAGC,OAAO,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,AAAsB,AAAC;AAGpE,eAAeH,kBAAkB,CACtCI,WAAmB,EACnB,EACEC,QAAQ,CAAA,EACRC,cAAc,CAAA,EACdC,OAAO,EAAE,EAAEC,GAAG,CAAA,EAAE,CAAA,EAChBC,uBAAuB,CAAA,EAiBxB,EACD;IACA,gDAAgD;IAChD,MAAM,EAAEC,GAAG,CAAA,EAAEC,GAAG,CAAA,EAAE,GAAGC,CAAAA,GAAAA,OAAS,AAI5B,CAAA,UAJ4B,CAACR,WAAW,EAAE;QAC1C,iFAAiF;QACjF,yEAAyE;QACzES,WAAW,EAAE,IAAI;KAClB,CAAC,AAAC;IAEH,MAAMC,YAAY,GAAG,MAAMC,CAAAA,GAAAA,6BAA6B,AAAiC,CAAA,8BAAjC,CAACX,WAAW,EAAEM,GAAG,EAAEC,GAAG,EAAEN,QAAQ,CAAC,AAAC;IAE1F,IAAI,CAACS,YAAY,CAACE,MAAM,EAAE;QACxBf,GAAG,CAACgB,IAAI,CAACC,MAAK,QAAA,CAACC,WAAW,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC,CAAC;KAC/D;IAEDC,CAAAA,GAAAA,6BAAwB,AAAc,CAAA,yBAAd,CAACN,YAAY,CAAC,CAAC;IAEvC,MAAMO,KAAK,GACT,8BAA8B;IAC9Bb,GAAG,IACH,kDAAkD;IAClD,CAACc,CAAAA,GAAAA,YAAa,AAAE,CAAA,cAAF,EAAE,IAAK,MAAMC,CAAAA,GAAAA,QAAY,AAAkC,CAAA,aAAlC,CAAC;QAAEC,OAAO,EAAE,mBAAmB;KAAE,CAAC,CAACC,KAAK,CAAC,IAAM,KAAK;IAAA,CAAC,AAAC,CAAC,AAAC;IAEjG,IAAIJ,KAAK,EAAE;QACTnB,KAAK,CAAC,gCAAgC,EAAEY,YAAY,CAAC,CAAC;QACtD,sCAAsC;QACtC,OAAOY,CAAAA,GAAAA,aAAgB,AAKrB,CAAA,iBALqB,CAACtB,WAAW,EAAE;YACnCE,cAAc;YACdD,QAAQ,EAAES,YAAY;YACtBL,uBAAuB;YACvBkB,UAAU,EAAEjB,GAAG,CAACiB,UAAU;SAC3B,CAAC,CAAC;KACJ;IACD,2EAA2E;IAC3E1B,GAAG,CAACgB,IAAI,CAACC,MAAK,QAAA,CAACU,GAAG,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC,CAAC;CACvD"}
1
+ {"version":3,"sources":["../../../src/install/checkPackages.ts"],"sourcesContent":["import { getConfig } from '@expo/config';\nimport * as PackageManager from '@expo/package-manager';\nimport chalk from 'chalk';\n\nimport * as Log from '../log';\nimport {\n getVersionedDependenciesAsync,\n logIncorrectDependencies,\n} from '../start/doctor/dependencies/validateDependenciesVersions';\nimport { isInteractive } from '../utils/interactive';\nimport { learnMore } from '../utils/link';\nimport { confirmAsync } from '../utils/prompts';\nimport { joinWithCommasAnd } from '../utils/strings';\nimport { fixPackagesAsync } from './installAsync';\nimport { Options } from './resolveOptions';\n\nconst debug = require('debug')('expo:install:check') as typeof console.log;\n\n// Exposed for testing.\nexport async function checkPackagesAsync(\n projectRoot: string,\n {\n packages,\n packageManager,\n options: { fix },\n packageManagerArguments,\n }: {\n /**\n * List of packages to version\n * @example ['uuid', 'react-native-reanimated@latest']\n */\n packages: string[];\n /** Package manager to use when installing the versioned packages. */\n packageManager: PackageManager.NodePackageManager;\n\n /** How the check should resolve */\n options: Pick<Options, 'fix'>;\n /**\n * Extra parameters to pass to the `packageManager` when installing versioned packages.\n * @example ['--no-save']\n */\n packageManagerArguments: string[];\n }\n) {\n // Read the project Expo config without plugins.\n const { exp, pkg } = getConfig(projectRoot, {\n // Sometimes users will add a plugin to the config before installing the library,\n // this wouldn't work unless we dangerously disable plugin serialization.\n skipPlugins: true,\n });\n\n if (pkg.expo?.install?.exclude?.length) {\n Log.log(\n chalk`Skipped ${fix ? 'fixing' : 'checking'} dependencies: ${joinWithCommasAnd(\n pkg.expo.install.exclude\n )}. These dependencies are listed in {bold expo.install.exclude} in package.json. ${learnMore(\n 'https://expo.dev/more/expo-cli/#configuring-dependency-validation'\n )}`\n );\n }\n\n const dependencies = await getVersionedDependenciesAsync(projectRoot, exp, pkg, packages);\n\n if (!dependencies.length) {\n Log.exit(chalk.greenBright('Dependencies are up to date'), 0);\n }\n\n logIncorrectDependencies(dependencies);\n\n const value =\n // If `--fix` then always fix.\n fix ||\n // Otherwise prompt to fix when not running in CI.\n (isInteractive() && (await confirmAsync({ message: 'Fix dependencies?' }).catch(() => false)));\n\n if (value) {\n debug('Installing fixed dependencies:', dependencies);\n // Install the corrected dependencies.\n return fixPackagesAsync(projectRoot, {\n packageManager,\n packages: dependencies,\n packageManagerArguments,\n sdkVersion: exp.sdkVersion!,\n });\n }\n // Exit with non-zero exit code if any of the dependencies are out of date.\n Log.exit(chalk.red('Found outdated dependencies'), 1);\n}\n"],"names":["checkPackagesAsync","Log","debug","require","projectRoot","packages","packageManager","options","fix","packageManagerArguments","pkg","exp","getConfig","skipPlugins","expo","install","exclude","length","log","chalk","joinWithCommasAnd","learnMore","dependencies","getVersionedDependenciesAsync","exit","greenBright","logIncorrectDependencies","value","isInteractive","confirmAsync","message","catch","fixPackagesAsync","sdkVersion","red"],"mappings":"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"}
@@ -12,6 +12,9 @@ var Log = _interopRequireWildcard(require("../log"));
12
12
  var _getVersionedPackages = require("../start/doctor/dependencies/getVersionedPackages");
13
13
  var _array = require("../utils/array");
14
14
  var _findUp = require("../utils/findUp");
15
+ var _link = require("../utils/link");
16
+ var _nodeEnv = require("../utils/nodeEnv");
17
+ var _strings = require("../utils/strings");
15
18
  var _checkPackages = require("./checkPackages");
16
19
  function _interopRequireDefault(obj) {
17
20
  return obj && obj.__esModule ? obj : {
@@ -40,10 +43,12 @@ function _interopRequireWildcard(obj) {
40
43
  }
41
44
  }
42
45
  async function installAsync(packages, options, packageManagerArguments = []) {
46
+ (0, _nodeEnv).setNodeEnv("development");
43
47
  var _projectRoot;
44
48
  // Locate the project root based on the process current working directory.
45
49
  // This enables users to run `npx expo install` from a subdirectory of the project.
46
50
  const projectRoot = (_projectRoot = options.projectRoot) != null ? _projectRoot : (0, _findUp).findUpProjectRootOrAssert(process.cwd());
51
+ require("@expo/env").load(projectRoot);
47
52
  // Resolve the package manager used by the project, or based on the provided arguments.
48
53
  const packageManager = PackageManager.createForProject(projectRoot, {
49
54
  npm: options.npm,
@@ -75,12 +80,24 @@ async function installAsync(packages, options, packageManagerArguments = []) {
75
80
  });
76
81
  }
77
82
  async function installPackagesAsync(projectRoot, { packages , packageManager , sdkVersion , packageManagerArguments }) {
83
+ // Read the project Expo config without plugins.
84
+ const { pkg } = (0, _config).getConfig(projectRoot, {
85
+ // Sometimes users will add a plugin to the config before installing the library,
86
+ // this wouldn't work unless we dangerously disable plugin serialization.
87
+ skipPlugins: true
88
+ });
89
+ //assertNotInstallingExcludedPackages(projectRoot, packages, pkg);
78
90
  const versioning = await (0, _getVersionedPackages).getVersionedPackagesAsync(projectRoot, {
79
91
  packages,
80
92
  // sdkVersion is always defined because we don't skipSDKVersionRequirement in getConfig.
81
- sdkVersion
93
+ sdkVersion,
94
+ pkg
82
95
  });
83
96
  Log.log(_chalk.default`\u203A Installing ${versioning.messages.length ? versioning.messages.join(" and ") + " " : ""}using {bold ${packageManager.name}}`);
97
+ if (versioning.excludedNativeModules.length) {
98
+ Log.log(_chalk.default`\u203A Using latest version instead of ${(0, _strings).joinWithCommasAnd(versioning.excludedNativeModules.map(({ bundledNativeVersion , name })=>`${bundledNativeVersion} for ${name}`
99
+ ))} because ${versioning.excludedNativeModules.length > 1 ? "they are" : "it is"} listed in {bold expo.install.exclude} in package.json. ${(0, _link).learnMore("https://expo.dev/more/expo-cli/#configuring-dependency-validation")}`);
100
+ }
84
101
  await packageManager.addAsync([
85
102
  ...packageManagerArguments,
86
103
  ...versioning.packages
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/install/installAsync.ts"],"sourcesContent":["import { getConfig } from '@expo/config';\nimport * as PackageManager from '@expo/package-manager';\nimport chalk from 'chalk';\n\nimport * as Log from '../log';\nimport {\n getOperationLog,\n getVersionedPackagesAsync,\n} from '../start/doctor/dependencies/getVersionedPackages';\nimport { getVersionedDependenciesAsync } from '../start/doctor/dependencies/validateDependenciesVersions';\nimport { groupBy } from '../utils/array';\nimport { findUpProjectRootOrAssert } from '../utils/findUp';\nimport { checkPackagesAsync } from './checkPackages';\nimport { Options } from './resolveOptions';\n\nexport async function installAsync(\n packages: string[],\n options: Options & { projectRoot?: string },\n packageManagerArguments: string[] = []\n) {\n // Locate the project root based on the process current working directory.\n // This enables users to run `npx expo install` from a subdirectory of the project.\n const projectRoot = options.projectRoot ?? findUpProjectRootOrAssert(process.cwd());\n\n // Resolve the package manager used by the project, or based on the provided arguments.\n const packageManager = PackageManager.createForProject(projectRoot, {\n npm: options.npm,\n yarn: options.yarn,\n pnpm: options.pnpm,\n silent: options.silent,\n log: Log.log,\n });\n\n if (options.check || options.fix) {\n return await checkPackagesAsync(projectRoot, {\n packages,\n options,\n packageManager,\n packageManagerArguments,\n });\n }\n\n // Read the project Expo config without plugins.\n const { exp } = getConfig(projectRoot, {\n // Sometimes users will add a plugin to the config before installing the library,\n // this wouldn't work unless we dangerously disable plugin serialization.\n skipPlugins: true,\n });\n\n // Resolve the versioned packages, then install them.\n return installPackagesAsync(projectRoot, {\n packageManager,\n packages,\n packageManagerArguments,\n sdkVersion: exp.sdkVersion!,\n });\n}\n\n/** Version packages and install in a project. */\nexport async function installPackagesAsync(\n projectRoot: string,\n {\n packages,\n packageManager,\n sdkVersion,\n packageManagerArguments,\n }: {\n /**\n * List of packages to version, grouped by the type of dependency.\n * @example ['uuid', 'react-native-reanimated@latest']\n */\n packages: string[];\n /** Package manager to use when installing the versioned packages. */\n packageManager: PackageManager.NodePackageManager;\n /**\n * SDK to version `packages` for.\n * @example '44.0.0'\n */\n sdkVersion: string;\n /**\n * Extra parameters to pass to the `packageManager` when installing versioned packages.\n * @example ['--no-save']\n */\n packageManagerArguments: string[];\n }\n): Promise<void> {\n const versioning = await getVersionedPackagesAsync(projectRoot, {\n packages,\n // sdkVersion is always defined because we don't skipSDKVersionRequirement in getConfig.\n sdkVersion,\n });\n\n Log.log(\n chalk`\\u203A Installing ${\n versioning.messages.length ? versioning.messages.join(' and ') + ' ' : ''\n }using {bold ${packageManager.name}}`\n );\n\n await packageManager.addAsync([...packageManagerArguments, ...versioning.packages]);\n\n await applyPluginsAsync(projectRoot, versioning.packages);\n}\n\nexport async function fixPackagesAsync(\n projectRoot: string,\n {\n packages,\n packageManager,\n sdkVersion,\n packageManagerArguments,\n }: {\n packages: Awaited<ReturnType<typeof getVersionedDependenciesAsync>>;\n /** Package manager to use when installing the versioned packages. */\n packageManager: PackageManager.NodePackageManager;\n /**\n * SDK to version `packages` for.\n * @example '44.0.0'\n */\n sdkVersion: string;\n /**\n * Extra parameters to pass to the `packageManager` when installing versioned packages.\n * @example ['--no-save']\n */\n packageManagerArguments: string[];\n }\n): Promise<void> {\n if (!packages.length) {\n return;\n }\n\n const { dependencies = [], devDependencies = [] } = groupBy(packages, (dep) => dep.packageType);\n const versioningMessages = getOperationLog({\n othersCount: 0, // All fixable packages are versioned\n nativeModulesCount: packages.length,\n sdkVersion,\n });\n\n Log.log(\n chalk`\\u203A Installing ${\n versioningMessages.length ? versioningMessages.join(' and ') + ' ' : ''\n }using {bold ${packageManager.name}}`\n );\n\n if (dependencies.length) {\n const versionedPackages = dependencies.map(\n (dep) => `${dep.packageName}@${dep.expectedVersionOrRange}`\n );\n\n await packageManager.addAsync([...packageManagerArguments, ...versionedPackages]);\n\n await applyPluginsAsync(projectRoot, versionedPackages);\n }\n\n if (devDependencies.length) {\n await packageManager.addDevAsync([\n ...packageManagerArguments,\n ...devDependencies.map((dep) => `${dep.packageName}@${dep.expectedVersionOrRange}`),\n ]);\n }\n}\n\n/**\n * A convenience feature for automatically applying Expo Config Plugins to the `app.json` after installing them.\n * This should be dropped in favor of autolinking in the future.\n */\nasync function applyPluginsAsync(projectRoot: string, packages: string[]) {\n const { autoAddConfigPluginsAsync } = await import('./utils/autoAddConfigPlugins');\n\n try {\n const { exp } = getConfig(projectRoot, { skipSDKVersionRequirement: true });\n\n // Only auto add plugins if the plugins array is defined or if the project is using SDK +42.\n await autoAddConfigPluginsAsync(\n projectRoot,\n exp,\n // Split any possible NPM tags. i.e. `expo@latest` -> `expo`\n packages.map((pkg) => pkg.split('@')[0]).filter(Boolean)\n );\n } catch (error: any) {\n // If we fail to apply plugins, the log a warning and continue.\n if (error.isPluginError) {\n Log.warn(`Skipping config plugin check: ` + error.message);\n return;\n }\n // Any other error, rethrow.\n throw error;\n }\n}\n"],"names":["installAsync","installPackagesAsync","fixPackagesAsync","PackageManager","Log","packages","options","packageManagerArguments","projectRoot","findUpProjectRootOrAssert","process","cwd","packageManager","createForProject","npm","yarn","pnpm","silent","log","check","fix","checkPackagesAsync","exp","getConfig","skipPlugins","sdkVersion","versioning","getVersionedPackagesAsync","chalk","messages","length","join","name","addAsync","applyPluginsAsync","dependencies","devDependencies","groupBy","dep","packageType","versioningMessages","getOperationLog","othersCount","nativeModulesCount","versionedPackages","map","packageName","expectedVersionOrRange","addDevAsync","autoAddConfigPluginsAsync","skipSDKVersionRequirement","pkg","split","filter","Boolean","error","isPluginError","warn","message"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/install/installAsync.ts"],"sourcesContent":["import { getConfig } from '@expo/config';\nimport * as PackageManager from '@expo/package-manager';\nimport chalk from 'chalk';\n\nimport * as Log from '../log';\nimport {\n getOperationLog,\n getVersionedPackagesAsync,\n} from '../start/doctor/dependencies/getVersionedPackages';\nimport { getVersionedDependenciesAsync } from '../start/doctor/dependencies/validateDependenciesVersions';\nimport { groupBy } from '../utils/array';\nimport { findUpProjectRootOrAssert } from '../utils/findUp';\nimport { learnMore } from '../utils/link';\nimport { setNodeEnv } from '../utils/nodeEnv';\nimport { joinWithCommasAnd } from '../utils/strings';\nimport { checkPackagesAsync } from './checkPackages';\nimport { Options } from './resolveOptions';\n\nexport async function installAsync(\n packages: string[],\n options: Options & { projectRoot?: string },\n packageManagerArguments: string[] = []\n) {\n setNodeEnv('development');\n // Locate the project root based on the process current working directory.\n // This enables users to run `npx expo install` from a subdirectory of the project.\n const projectRoot = options.projectRoot ?? findUpProjectRootOrAssert(process.cwd());\n require('@expo/env').load(projectRoot);\n\n // Resolve the package manager used by the project, or based on the provided arguments.\n const packageManager = PackageManager.createForProject(projectRoot, {\n npm: options.npm,\n yarn: options.yarn,\n pnpm: options.pnpm,\n silent: options.silent,\n log: Log.log,\n });\n\n if (options.check || options.fix) {\n return await checkPackagesAsync(projectRoot, {\n packages,\n options,\n packageManager,\n packageManagerArguments,\n });\n }\n\n // Read the project Expo config without plugins.\n const { exp } = getConfig(projectRoot, {\n // Sometimes users will add a plugin to the config before installing the library,\n // this wouldn't work unless we dangerously disable plugin serialization.\n skipPlugins: true,\n });\n\n // Resolve the versioned packages, then install them.\n return installPackagesAsync(projectRoot, {\n packageManager,\n packages,\n packageManagerArguments,\n sdkVersion: exp.sdkVersion!,\n });\n}\n\n/** Version packages and install in a project. */\nexport async function installPackagesAsync(\n projectRoot: string,\n {\n packages,\n packageManager,\n sdkVersion,\n packageManagerArguments,\n }: {\n /**\n * List of packages to version, grouped by the type of dependency.\n * @example ['uuid', 'react-native-reanimated@latest']\n */\n packages: string[];\n /** Package manager to use when installing the versioned packages. */\n packageManager: PackageManager.NodePackageManager;\n /**\n * SDK to version `packages` for.\n * @example '44.0.0'\n */\n sdkVersion: string;\n /**\n * Extra parameters to pass to the `packageManager` when installing versioned packages.\n * @example ['--no-save']\n */\n packageManagerArguments: string[];\n }\n): Promise<void> {\n // Read the project Expo config without plugins.\n const { pkg } = getConfig(projectRoot, {\n // Sometimes users will add a plugin to the config before installing the library,\n // this wouldn't work unless we dangerously disable plugin serialization.\n skipPlugins: true,\n });\n\n //assertNotInstallingExcludedPackages(projectRoot, packages, pkg);\n\n const versioning = await getVersionedPackagesAsync(projectRoot, {\n packages,\n // sdkVersion is always defined because we don't skipSDKVersionRequirement in getConfig.\n sdkVersion,\n pkg,\n });\n\n Log.log(\n chalk`\\u203A Installing ${\n versioning.messages.length ? versioning.messages.join(' and ') + ' ' : ''\n }using {bold ${packageManager.name}}`\n );\n\n if (versioning.excludedNativeModules.length) {\n Log.log(\n chalk`\\u203A Using latest version instead of ${joinWithCommasAnd(\n versioning.excludedNativeModules.map(\n ({ bundledNativeVersion, name }) => `${bundledNativeVersion} for ${name}`\n )\n )} because ${\n versioning.excludedNativeModules.length > 1 ? 'they are' : 'it is'\n } listed in {bold expo.install.exclude} in package.json. ${learnMore(\n 'https://expo.dev/more/expo-cli/#configuring-dependency-validation'\n )}`\n );\n }\n\n await packageManager.addAsync([...packageManagerArguments, ...versioning.packages]);\n\n await applyPluginsAsync(projectRoot, versioning.packages);\n}\n\nexport async function fixPackagesAsync(\n projectRoot: string,\n {\n packages,\n packageManager,\n sdkVersion,\n packageManagerArguments,\n }: {\n packages: Awaited<ReturnType<typeof getVersionedDependenciesAsync>>;\n /** Package manager to use when installing the versioned packages. */\n packageManager: PackageManager.NodePackageManager;\n /**\n * SDK to version `packages` for.\n * @example '44.0.0'\n */\n sdkVersion: string;\n /**\n * Extra parameters to pass to the `packageManager` when installing versioned packages.\n * @example ['--no-save']\n */\n packageManagerArguments: string[];\n }\n): Promise<void> {\n if (!packages.length) {\n return;\n }\n\n const { dependencies = [], devDependencies = [] } = groupBy(packages, (dep) => dep.packageType);\n const versioningMessages = getOperationLog({\n othersCount: 0, // All fixable packages are versioned\n nativeModulesCount: packages.length,\n sdkVersion,\n });\n\n Log.log(\n chalk`\\u203A Installing ${\n versioningMessages.length ? versioningMessages.join(' and ') + ' ' : ''\n }using {bold ${packageManager.name}}`\n );\n\n if (dependencies.length) {\n const versionedPackages = dependencies.map(\n (dep) => `${dep.packageName}@${dep.expectedVersionOrRange}`\n );\n\n await packageManager.addAsync([...packageManagerArguments, ...versionedPackages]);\n\n await applyPluginsAsync(projectRoot, versionedPackages);\n }\n\n if (devDependencies.length) {\n await packageManager.addDevAsync([\n ...packageManagerArguments,\n ...devDependencies.map((dep) => `${dep.packageName}@${dep.expectedVersionOrRange}`),\n ]);\n }\n}\n\n/**\n * A convenience feature for automatically applying Expo Config Plugins to the `app.json` after installing them.\n * This should be dropped in favor of autolinking in the future.\n */\nasync function applyPluginsAsync(projectRoot: string, packages: string[]) {\n const { autoAddConfigPluginsAsync } = await import('./utils/autoAddConfigPlugins');\n\n try {\n const { exp } = getConfig(projectRoot, { skipSDKVersionRequirement: true });\n\n // Only auto add plugins if the plugins array is defined or if the project is using SDK +42.\n await autoAddConfigPluginsAsync(\n projectRoot,\n exp,\n // Split any possible NPM tags. i.e. `expo@latest` -> `expo`\n packages.map((pkg) => pkg.split('@')[0]).filter(Boolean)\n );\n } catch (error: any) {\n // If we fail to apply plugins, the log a warning and continue.\n if (error.isPluginError) {\n Log.warn(`Skipping config plugin check: ` + error.message);\n return;\n }\n // Any other error, rethrow.\n throw error;\n }\n}\n"],"names":["installAsync","installPackagesAsync","fixPackagesAsync","PackageManager","Log","packages","options","packageManagerArguments","setNodeEnv","projectRoot","findUpProjectRootOrAssert","process","cwd","require","load","packageManager","createForProject","npm","yarn","pnpm","silent","log","check","fix","checkPackagesAsync","exp","getConfig","skipPlugins","sdkVersion","pkg","versioning","getVersionedPackagesAsync","chalk","messages","length","join","name","excludedNativeModules","joinWithCommasAnd","map","bundledNativeVersion","learnMore","addAsync","applyPluginsAsync","dependencies","devDependencies","groupBy","dep","packageType","versioningMessages","getOperationLog","othersCount","nativeModulesCount","versionedPackages","packageName","expectedVersionOrRange","addDevAsync","autoAddConfigPluginsAsync","skipSDKVersionRequirement","split","filter","Boolean","error","isPluginError","warn","message"],"mappings":"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"}
@@ -101,8 +101,13 @@ async function getMalformedNativeProjectsAsync(projectRoot, platforms) {
101
101
  android: hasRequiredAndroidFilesAsync,
102
102
  ios: hasRequiredIOSFilesAsync
103
103
  };
104
- const checkPlatforms = await filterPlatformsThatDoNotExistAsync(projectRoot, platforms);
104
+ const checkablePlatforms = platforms.filter((platform)=>platform in VERIFIERS
105
+ );
106
+ const checkPlatforms = await filterPlatformsThatDoNotExistAsync(projectRoot, checkablePlatforms);
105
107
  return (await Promise.all(checkPlatforms.map(async (platform)=>{
108
+ if (!VERIFIERS[platform]) {
109
+ return false;
110
+ }
106
111
  if (await VERIFIERS[platform](projectRoot)) {
107
112
  return false;
108
113
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/prebuild/clearNativeFolder.ts"],"sourcesContent":["import { AndroidConfig, IOSConfig, ModPlatform } from '@expo/config-plugins';\nimport chalk from 'chalk';\nimport fs from 'fs';\nimport path from 'path';\n\nimport * as Log from '../log';\nimport { directoryExistsAsync } from '../utils/dir';\nimport { isInteractive } from '../utils/interactive';\nimport { logNewSection } from '../utils/ora';\nimport { confirmAsync } from '../utils/prompts';\n\n/** Delete the input native folders and print a loading step. */\nexport async function clearNativeFolder(projectRoot: string, folders: string[]) {\n const step = logNewSection(`Clearing ${folders.join(', ')}`);\n try {\n await Promise.all(\n folders.map((folderName) =>\n fs.promises.rm(path.join(projectRoot, folderName), {\n recursive: true,\n force: true,\n })\n )\n );\n step.succeed(`Cleared ${folders.join(', ')} code`);\n } catch (error: any) {\n step.fail(`Failed to delete ${folders.join(', ')} code: ${error.message}`);\n throw error;\n }\n}\n\n/**\n * Returns `true` if a certain subset of required Android project files are intact.\n *\n * This isn't perfect but it serves the purpose of indicating that the user should\n * be warned to nuke the project files, most commonly when git is cleared and the root folder\n * remains in memory.\n */\nexport async function hasRequiredAndroidFilesAsync(projectRoot: string): Promise<boolean> {\n try {\n await Promise.all([\n AndroidConfig.Paths.getAppBuildGradleAsync(projectRoot),\n AndroidConfig.Paths.getProjectBuildGradleAsync(projectRoot),\n AndroidConfig.Paths.getAndroidManifestAsync(projectRoot),\n AndroidConfig.Paths.getMainApplicationAsync(projectRoot),\n ]);\n return true;\n } catch {\n return false;\n }\n}\n\n/** Returns `true` if a certain subset of required iOS project files are intact. */\nexport async function hasRequiredIOSFilesAsync(projectRoot: string) {\n try {\n // If any of the following required files are missing, then the project is malformed.\n await Promise.all([\n IOSConfig.Paths.getAllXcodeProjectPaths(projectRoot),\n IOSConfig.Paths.getAllPBXProjectPaths(projectRoot),\n ]);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Filter out platforms that do not have an existing platform folder.\n * If the user wants to validate that neither of ['ios', 'android'] are malformed then we should\n * first check that both `ios` and `android` folders exist.\n *\n * This optimization prevents us from prompting to clear a \"malformed\" project that doesn't exist yet.\n */\nasync function filterPlatformsThatDoNotExistAsync(\n projectRoot: string,\n platforms: ModPlatform[]\n): Promise<ModPlatform[]> {\n const valid = await Promise.all(\n platforms.map(async (platform) => {\n if (await directoryExistsAsync(path.join(projectRoot, platform))) {\n return platform;\n }\n return null;\n })\n );\n return valid.filter(Boolean) as ModPlatform[];\n}\n\n/** Get a list of native platforms that have existing directories which contain malformed projects. */\nexport async function getMalformedNativeProjectsAsync(\n projectRoot: string,\n platforms: ModPlatform[]\n): Promise<ModPlatform[]> {\n const VERIFIERS: Record<ModPlatform, (root: string) => Promise<boolean>> = {\n android: hasRequiredAndroidFilesAsync,\n ios: hasRequiredIOSFilesAsync,\n };\n\n const checkPlatforms = await filterPlatformsThatDoNotExistAsync(projectRoot, platforms);\n return (\n await Promise.all(\n checkPlatforms.map(async (platform) => {\n if (await VERIFIERS[platform](projectRoot)) {\n return false;\n }\n return platform;\n })\n )\n ).filter(Boolean) as ModPlatform[];\n}\n\nexport async function promptToClearMalformedNativeProjectsAsync(\n projectRoot: string,\n checkPlatforms: ModPlatform[]\n) {\n const platforms = await getMalformedNativeProjectsAsync(projectRoot, checkPlatforms);\n\n if (!platforms.length) {\n return;\n }\n\n const displayPlatforms = platforms.map((platform) => chalk.cyan(platform));\n // Prompt which platforms to reset.\n const message =\n platforms.length > 1\n ? `The ${displayPlatforms[0]} and ${displayPlatforms[1]} projects are malformed`\n : `The ${displayPlatforms[0]} project is malformed`;\n\n if (\n // If the process is non-interactive, default to clearing the malformed native project.\n // This would only happen on re-running eject.\n !isInteractive() ||\n // Prompt to clear the native folders.\n (await confirmAsync({\n message: `${message}, would you like to clear the project files and reinitialize them?`,\n initial: true,\n }))\n ) {\n if (!isInteractive()) {\n Log.warn(`${message}, project files will be cleared and reinitialized.`);\n }\n await clearNativeFolder(projectRoot, platforms);\n } else {\n // Warn the user that the process may fail.\n Log.warn('Continuing with malformed native projects');\n }\n}\n"],"names":["clearNativeFolder","hasRequiredAndroidFilesAsync","hasRequiredIOSFilesAsync","getMalformedNativeProjectsAsync","promptToClearMalformedNativeProjectsAsync","Log","projectRoot","folders","step","logNewSection","join","Promise","all","map","folderName","fs","promises","rm","path","recursive","force","succeed","error","fail","message","AndroidConfig","Paths","getAppBuildGradleAsync","getProjectBuildGradleAsync","getAndroidManifestAsync","getMainApplicationAsync","IOSConfig","getAllXcodeProjectPaths","getAllPBXProjectPaths","filterPlatformsThatDoNotExistAsync","platforms","valid","platform","directoryExistsAsync","filter","Boolean","VERIFIERS","android","ios","checkPlatforms","length","displayPlatforms","chalk","cyan","isInteractive","confirmAsync","initial","warn"],"mappings":"AAAA;;;;QAYsBA,iBAAiB,GAAjBA,iBAAiB;QAyBjBC,4BAA4B,GAA5BA,4BAA4B;QAe5BC,wBAAwB,GAAxBA,wBAAwB;QAoCxBC,+BAA+B,GAA/BA,+BAA+B;QAsB/BC,yCAAyC,GAAzCA,yCAAyC;AA9GT,IAAA,cAAsB,WAAtB,sBAAsB,CAAA;AAC1D,IAAA,MAAO,kCAAP,OAAO,EAAA;AACV,IAAA,GAAI,kCAAJ,IAAI,EAAA;AACF,IAAA,KAAM,kCAAN,MAAM,EAAA;AAEXC,IAAAA,GAAG,mCAAM,QAAQ,EAAd;AACsB,IAAA,IAAc,WAAd,cAAc,CAAA;AACrB,IAAA,YAAsB,WAAtB,sBAAsB,CAAA;AACtB,IAAA,IAAc,WAAd,cAAc,CAAA;AACf,IAAA,QAAkB,WAAlB,kBAAkB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGxC,eAAeL,iBAAiB,CAACM,WAAmB,EAAEC,OAAiB,EAAE;IAC9E,MAAMC,IAAI,GAAGC,CAAAA,GAAAA,IAAa,AAAkC,CAAA,cAAlC,CAAC,CAAC,SAAS,EAAEF,OAAO,CAACG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,AAAC;IAC7D,IAAI;QACF,MAAMC,OAAO,CAACC,GAAG,CACfL,OAAO,CAACM,GAAG,CAAC,CAACC,UAAU,GACrBC,GAAE,QAAA,CAACC,QAAQ,CAACC,EAAE,CAACC,KAAI,QAAA,CAACR,IAAI,CAACJ,WAAW,EAAEQ,UAAU,CAAC,EAAE;gBACjDK,SAAS,EAAE,IAAI;gBACfC,KAAK,EAAE,IAAI;aACZ,CAAC;QAAA,CACH,CACF,CAAC;QACFZ,IAAI,CAACa,OAAO,CAAC,CAAC,QAAQ,EAAEd,OAAO,CAACG,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;KACpD,CAAC,OAAOY,KAAK,EAAO;QACnBd,IAAI,CAACe,IAAI,CAAC,CAAC,iBAAiB,EAAEhB,OAAO,CAACG,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAEY,KAAK,CAACE,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3E,MAAMF,KAAK,CAAC;KACb;CACF;AASM,eAAerB,4BAA4B,CAACK,WAAmB,EAAoB;IACxF,IAAI;QACF,MAAMK,OAAO,CAACC,GAAG,CAAC;YAChBa,cAAa,cAAA,CAACC,KAAK,CAACC,sBAAsB,CAACrB,WAAW,CAAC;YACvDmB,cAAa,cAAA,CAACC,KAAK,CAACE,0BAA0B,CAACtB,WAAW,CAAC;YAC3DmB,cAAa,cAAA,CAACC,KAAK,CAACG,uBAAuB,CAACvB,WAAW,CAAC;YACxDmB,cAAa,cAAA,CAACC,KAAK,CAACI,uBAAuB,CAACxB,WAAW,CAAC;SACzD,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;KACb,CAAC,OAAM;QACN,OAAO,KAAK,CAAC;KACd;CACF;AAGM,eAAeJ,wBAAwB,CAACI,WAAmB,EAAE;IAClE,IAAI;QACF,qFAAqF;QACrF,MAAMK,OAAO,CAACC,GAAG,CAAC;YAChBmB,cAAS,UAAA,CAACL,KAAK,CAACM,uBAAuB,CAAC1B,WAAW,CAAC;YACpDyB,cAAS,UAAA,CAACL,KAAK,CAACO,qBAAqB,CAAC3B,WAAW,CAAC;SACnD,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;KACb,CAAC,OAAM;QACN,OAAO,KAAK,CAAC;KACd;CACF;AAED;;;;;;GAMG,CACH,eAAe4B,kCAAkC,CAC/C5B,WAAmB,EACnB6B,SAAwB,EACA;IACxB,MAAMC,KAAK,GAAG,MAAMzB,OAAO,CAACC,GAAG,CAC7BuB,SAAS,CAACtB,GAAG,CAAC,OAAOwB,QAAQ,GAAK;QAChC,IAAI,MAAMC,CAAAA,GAAAA,IAAoB,AAAkC,CAAA,qBAAlC,CAACpB,KAAI,QAAA,CAACR,IAAI,CAACJ,WAAW,EAAE+B,QAAQ,CAAC,CAAC,EAAE;YAChE,OAAOA,QAAQ,CAAC;SACjB;QACD,OAAO,IAAI,CAAC;KACb,CAAC,CACH,AAAC;IACF,OAAOD,KAAK,CAACG,MAAM,CAACC,OAAO,CAAC,CAAkB;CAC/C;AAGM,eAAerC,+BAA+B,CACnDG,WAAmB,EACnB6B,SAAwB,EACA;IACxB,MAAMM,SAAS,GAA4D;QACzEC,OAAO,EAAEzC,4BAA4B;QACrC0C,GAAG,EAAEzC,wBAAwB;KAC9B,AAAC;IAEF,MAAM0C,cAAc,GAAG,MAAMV,kCAAkC,CAAC5B,WAAW,EAAE6B,SAAS,CAAC,AAAC;IACxF,OAAO,CACL,MAAMxB,OAAO,CAACC,GAAG,CACfgC,cAAc,CAAC/B,GAAG,CAAC,OAAOwB,QAAQ,GAAK;QACrC,IAAI,MAAMI,SAAS,CAACJ,QAAQ,CAAC,CAAC/B,WAAW,CAAC,EAAE;YAC1C,OAAO,KAAK,CAAC;SACd;QACD,OAAO+B,QAAQ,CAAC;KACjB,CAAC,CACH,CACF,CAACE,MAAM,CAACC,OAAO,CAAC,CAAkB;CACpC;AAEM,eAAepC,yCAAyC,CAC7DE,WAAmB,EACnBsC,cAA6B,EAC7B;IACA,MAAMT,SAAS,GAAG,MAAMhC,+BAA+B,CAACG,WAAW,EAAEsC,cAAc,CAAC,AAAC;IAErF,IAAI,CAACT,SAAS,CAACU,MAAM,EAAE;QACrB,OAAO;KACR;IAED,MAAMC,gBAAgB,GAAGX,SAAS,CAACtB,GAAG,CAAC,CAACwB,QAAQ,GAAKU,MAAK,QAAA,CAACC,IAAI,CAACX,QAAQ,CAAC;IAAA,CAAC,AAAC;IAC3E,mCAAmC;IACnC,MAAMb,OAAO,GACXW,SAAS,CAACU,MAAM,GAAG,CAAC,GAChB,CAAC,IAAI,EAAEC,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK,EAAEA,gBAAgB,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,GAC9E,CAAC,IAAI,EAAEA,gBAAgB,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,AAAC;IAExD,IACE,uFAAuF;IACvF,8CAA8C;IAC9C,CAACG,CAAAA,GAAAA,YAAa,AAAE,CAAA,cAAF,EAAE,IAChB,sCAAsC;IACtC,CAAC,MAAMC,CAAAA,GAAAA,QAAY,AAGjB,CAAA,aAHiB,CAAC;QAClB1B,OAAO,EAAE,CAAC,EAAEA,OAAO,CAAC,kEAAkE,CAAC;QACvF2B,OAAO,EAAE,IAAI;KACd,CAAC,CAAC,EACH;QACA,IAAI,CAACF,CAAAA,GAAAA,YAAa,AAAE,CAAA,cAAF,EAAE,EAAE;YACpB5C,GAAG,CAAC+C,IAAI,CAAC,CAAC,EAAE5B,OAAO,CAAC,kDAAkD,CAAC,CAAC,CAAC;SAC1E;QACD,MAAMxB,iBAAiB,CAACM,WAAW,EAAE6B,SAAS,CAAC,CAAC;KACjD,MAAM;QACL,2CAA2C;QAC3C9B,GAAG,CAAC+C,IAAI,CAAC,2CAA2C,CAAC,CAAC;KACvD;CACF"}
1
+ {"version":3,"sources":["../../../src/prebuild/clearNativeFolder.ts"],"sourcesContent":["import { AndroidConfig, IOSConfig, ModPlatform } from '@expo/config-plugins';\nimport chalk from 'chalk';\nimport fs from 'fs';\nimport path from 'path';\n\nimport * as Log from '../log';\nimport { directoryExistsAsync } from '../utils/dir';\nimport { isInteractive } from '../utils/interactive';\nimport { logNewSection } from '../utils/ora';\nimport { confirmAsync } from '../utils/prompts';\n\ntype ArbitraryPlatform = ModPlatform | string;\n\n/** Delete the input native folders and print a loading step. */\nexport async function clearNativeFolder(projectRoot: string, folders: string[]) {\n const step = logNewSection(`Clearing ${folders.join(', ')}`);\n try {\n await Promise.all(\n folders.map((folderName) =>\n fs.promises.rm(path.join(projectRoot, folderName), {\n recursive: true,\n force: true,\n })\n )\n );\n step.succeed(`Cleared ${folders.join(', ')} code`);\n } catch (error: any) {\n step.fail(`Failed to delete ${folders.join(', ')} code: ${error.message}`);\n throw error;\n }\n}\n\n/**\n * Returns `true` if a certain subset of required Android project files are intact.\n *\n * This isn't perfect but it serves the purpose of indicating that the user should\n * be warned to nuke the project files, most commonly when git is cleared and the root folder\n * remains in memory.\n */\nexport async function hasRequiredAndroidFilesAsync(projectRoot: string): Promise<boolean> {\n try {\n await Promise.all([\n AndroidConfig.Paths.getAppBuildGradleAsync(projectRoot),\n AndroidConfig.Paths.getProjectBuildGradleAsync(projectRoot),\n AndroidConfig.Paths.getAndroidManifestAsync(projectRoot),\n AndroidConfig.Paths.getMainApplicationAsync(projectRoot),\n ]);\n return true;\n } catch {\n return false;\n }\n}\n\n/** Returns `true` if a certain subset of required iOS project files are intact. */\nexport async function hasRequiredIOSFilesAsync(projectRoot: string) {\n try {\n // If any of the following required files are missing, then the project is malformed.\n await Promise.all([\n IOSConfig.Paths.getAllXcodeProjectPaths(projectRoot),\n IOSConfig.Paths.getAllPBXProjectPaths(projectRoot),\n ]);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Filter out platforms that do not have an existing platform folder.\n * If the user wants to validate that neither of ['ios', 'android'] are malformed then we should\n * first check that both `ios` and `android` folders exist.\n *\n * This optimization prevents us from prompting to clear a \"malformed\" project that doesn't exist yet.\n */\nasync function filterPlatformsThatDoNotExistAsync(\n projectRoot: string,\n platforms: ArbitraryPlatform[]\n): Promise<ArbitraryPlatform[]> {\n const valid = await Promise.all(\n platforms.map(async (platform) => {\n if (await directoryExistsAsync(path.join(projectRoot, platform))) {\n return platform;\n }\n return null;\n })\n );\n return valid.filter(Boolean) as ArbitraryPlatform[];\n}\n\n/** Get a list of native platforms that have existing directories which contain malformed projects. */\nexport async function getMalformedNativeProjectsAsync(\n projectRoot: string,\n platforms: ArbitraryPlatform[]\n): Promise<ArbitraryPlatform[]> {\n const VERIFIERS: Record<ArbitraryPlatform, (root: string) => Promise<boolean>> = {\n android: hasRequiredAndroidFilesAsync,\n ios: hasRequiredIOSFilesAsync,\n };\n\n const checkablePlatforms = platforms.filter((platform) => platform in VERIFIERS);\n const checkPlatforms = await filterPlatformsThatDoNotExistAsync(projectRoot, checkablePlatforms);\n return (\n await Promise.all(\n checkPlatforms.map(async (platform) => {\n if (!VERIFIERS[platform]) {\n return false;\n }\n if (await VERIFIERS[platform](projectRoot)) {\n return false;\n }\n return platform;\n })\n )\n ).filter(Boolean) as ArbitraryPlatform[];\n}\n\nexport async function promptToClearMalformedNativeProjectsAsync(\n projectRoot: string,\n checkPlatforms: ArbitraryPlatform[]\n) {\n const platforms = await getMalformedNativeProjectsAsync(projectRoot, checkPlatforms);\n\n if (!platforms.length) {\n return;\n }\n\n const displayPlatforms = platforms.map((platform) => chalk.cyan(platform));\n // Prompt which platforms to reset.\n const message =\n platforms.length > 1\n ? `The ${displayPlatforms[0]} and ${displayPlatforms[1]} projects are malformed`\n : `The ${displayPlatforms[0]} project is malformed`;\n\n if (\n // If the process is non-interactive, default to clearing the malformed native project.\n // This would only happen on re-running eject.\n !isInteractive() ||\n // Prompt to clear the native folders.\n (await confirmAsync({\n message: `${message}, would you like to clear the project files and reinitialize them?`,\n initial: true,\n }))\n ) {\n if (!isInteractive()) {\n Log.warn(`${message}, project files will be cleared and reinitialized.`);\n }\n await clearNativeFolder(projectRoot, platforms);\n } else {\n // Warn the user that the process may fail.\n Log.warn('Continuing with malformed native projects');\n }\n}\n"],"names":["clearNativeFolder","hasRequiredAndroidFilesAsync","hasRequiredIOSFilesAsync","getMalformedNativeProjectsAsync","promptToClearMalformedNativeProjectsAsync","Log","projectRoot","folders","step","logNewSection","join","Promise","all","map","folderName","fs","promises","rm","path","recursive","force","succeed","error","fail","message","AndroidConfig","Paths","getAppBuildGradleAsync","getProjectBuildGradleAsync","getAndroidManifestAsync","getMainApplicationAsync","IOSConfig","getAllXcodeProjectPaths","getAllPBXProjectPaths","filterPlatformsThatDoNotExistAsync","platforms","valid","platform","directoryExistsAsync","filter","Boolean","VERIFIERS","android","ios","checkablePlatforms","checkPlatforms","length","displayPlatforms","chalk","cyan","isInteractive","confirmAsync","initial","warn"],"mappings":"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"}
@@ -4,14 +4,11 @@ Object.defineProperty(exports, "__esModule", {
4
4
  });
5
5
  exports.createCopyFilesSuccessMessage = createCopyFilesSuccessMessage;
6
6
  exports.copyTemplateFilesAsync = copyTemplateFilesAsync;
7
- exports.resolveBareEntryFile = resolveBareEntryFile;
8
- var _paths = require("@expo/config/paths");
9
7
  var _chalk = _interopRequireDefault(require("chalk"));
10
8
  var _fs = _interopRequireDefault(require("fs"));
11
9
  var _path = _interopRequireDefault(require("path"));
12
10
  var _dir = require("../utils/dir");
13
11
  var _mergeGitIgnorePaths = require("../utils/mergeGitIgnorePaths");
14
- var _updatePackageJson = require("./updatePackageJson");
15
12
  function _interopRequireDefault(obj) {
16
13
  return obj && obj.__esModule ? obj : {
17
14
  default: obj
@@ -42,14 +39,14 @@ function createCopyFilesSuccessMessage(platforms, { skippedPaths , gitignore })
42
39
  }
43
40
  return message;
44
41
  }
45
- async function copyTemplateFilesAsync(projectRoot, { pkg , templateDirectory , platforms }) {
46
- const copyFilePaths = getFilePathsToCopy(projectRoot, pkg, platforms);
42
+ async function copyTemplateFilesAsync(projectRoot, { templateDirectory , platforms }) {
47
43
  const copyResults = await copyPathsFromTemplateAsync(projectRoot, {
48
44
  templateDirectory,
49
- copyFilePaths
45
+ copyFilePaths: platforms
50
46
  });
51
47
  const hasPlatformSpecificGitIgnores = hasAllPlatformSpecificGitIgnores(templateDirectory, platforms);
52
48
  debug(`All platforms have an internal gitignore: ${hasPlatformSpecificGitIgnores}`);
49
+ // TODO: Remove gitignore modifications -- maybe move to `npx expo-doctor`
53
50
  const gitignore = hasPlatformSpecificGitIgnores ? null : (0, _mergeGitIgnorePaths).mergeGitIgnorePaths(_path.default.join(projectRoot, ".gitignore"), _path.default.join(templateDirectory, ".gitignore"));
54
51
  return {
55
52
  ...copyResults,
@@ -75,32 +72,5 @@ async function copyPathsFromTemplateAsync(/** File path to the project. */ proje
75
72
  skippedPaths
76
73
  };
77
74
  }
78
- /** Get a list of relative file paths to copy from the template folder. Example: `['ios', 'android', 'index.js']` */ function getFilePathsToCopy(projectRoot, pkg, platforms) {
79
- const targetPaths = [
80
- ...platforms
81
- ];
82
- const bareEntryFile = resolveBareEntryFile(projectRoot, pkg.main);
83
- // Only create index.js if we cannot resolve the existing entry point (after replacing the expo entry).
84
- if (!bareEntryFile) {
85
- targetPaths.push("index.js");
86
- }
87
- debug(`Files to copy:`, targetPaths);
88
- return targetPaths;
89
- }
90
- function resolveBareEntryFile(projectRoot, main) {
91
- // expo app entry is not needed for bare projects.
92
- if ((0, _updatePackageJson).isPkgMainExpoAppEntry(main)) {
93
- return null;
94
- }
95
- // Look at the `package.json`s `main` field for the main file.
96
- const resolvedMainField = main != null ? main : "./index";
97
- // Get a list of possible extensions for the main file.
98
- const extensions = (0, _paths).getBareExtensions([
99
- "ios",
100
- "android"
101
- ]);
102
- // Testing the main field against all of the provided extensions - for legacy reasons we can't use node module resolution as the package.json allows you to pass in a file without a relative path and expect it as a relative path.
103
- return (0, _paths).getFileWithExtensions(projectRoot, resolvedMainField, extensions);
104
- }
105
75
 
106
76
  //# sourceMappingURL=copyTemplateFiles.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/prebuild/copyTemplateFiles.ts"],"sourcesContent":["import { PackageJSONConfig } from '@expo/config';\nimport { ModPlatform } from '@expo/config-plugins';\nimport { MergeResults } from '@expo/config-plugins/build/utils/generateCode';\nimport { getBareExtensions, getFileWithExtensions } from '@expo/config/paths';\nimport chalk from 'chalk';\nimport fs from 'fs';\nimport path from 'path';\n\nimport { copySync, directoryExistsAsync } from '../utils/dir';\nimport { mergeGitIgnorePaths } from '../utils/mergeGitIgnorePaths';\nimport { isPkgMainExpoAppEntry } from './updatePackageJson';\n\nconst debug = require('debug')('expo:prebuild:copyTemplateFiles') as typeof console.log;\n\ntype CopyFilesResults = {\n /** Merge results for the root `.gitignore` file */\n gitignore: MergeResults | null;\n /** List of file paths that were copied from the template into the project. */\n copiedPaths: string[];\n /** List of file paths that were skipped due to a number of factors. */\n skippedPaths: string[];\n};\n\n/**\n * Return true if the given platforms all have an internal `.gitignore` file.\n *\n * @param projectRoot\n * @param platforms\n */\nfunction hasAllPlatformSpecificGitIgnores(projectRoot: string, platforms: ModPlatform[]): boolean {\n return platforms.reduce<boolean>(\n (p, platform) => p && fs.existsSync(path.join(projectRoot, platform, '.gitignore')),\n true\n );\n}\n\n/** Create a custom log message based on the copy file results. */\nexport function createCopyFilesSuccessMessage(\n platforms: ModPlatform[],\n { skippedPaths, gitignore }: CopyFilesResults\n): string {\n let message = `Created native project${platforms.length > 1 ? 's' : ''}`;\n\n if (skippedPaths.length) {\n message += chalk.dim(\n ` | ${skippedPaths.map((path) => chalk.bold(`/${path}`)).join(', ')} already created`\n );\n }\n if (!gitignore) {\n message += chalk.dim(` | gitignore skipped`);\n } else if (!gitignore.didMerge) {\n message += chalk.dim(` | gitignore already synced`);\n } else if (gitignore.didMerge && gitignore.didClear) {\n message += chalk.dim(` | synced gitignore`);\n }\n return message;\n}\n\n/** Copy template files into the project and possibly merge the `.gitignore` files. */\nexport async function copyTemplateFilesAsync(\n projectRoot: string,\n {\n pkg,\n templateDirectory,\n platforms,\n }: {\n /** Project `package.json` as JSON. */\n pkg: PackageJSONConfig;\n /** File path to the template directory. */\n templateDirectory: string;\n /** List of platforms to copy against. */\n platforms: ModPlatform[];\n }\n): Promise<CopyFilesResults> {\n const copyFilePaths = getFilePathsToCopy(projectRoot, pkg, platforms);\n\n const copyResults = await copyPathsFromTemplateAsync(projectRoot, {\n templateDirectory,\n copyFilePaths,\n });\n\n const hasPlatformSpecificGitIgnores = hasAllPlatformSpecificGitIgnores(\n templateDirectory,\n platforms\n );\n debug(`All platforms have an internal gitignore: ${hasPlatformSpecificGitIgnores}`);\n const gitignore = hasPlatformSpecificGitIgnores\n ? null\n : mergeGitIgnorePaths(\n path.join(projectRoot, '.gitignore'),\n path.join(templateDirectory, '.gitignore')\n );\n\n return { ...copyResults, gitignore };\n}\n\nasync function copyPathsFromTemplateAsync(\n /** File path to the project. */\n projectRoot: string,\n {\n templateDirectory,\n copyFilePaths,\n }: {\n /** File path to the template project. */\n templateDirectory: string;\n /** List of relative paths to copy from the template to the project. */\n copyFilePaths: string[];\n }\n): Promise<Pick<CopyFilesResults, 'copiedPaths' | 'skippedPaths'>> {\n const copiedPaths = [];\n const skippedPaths = [];\n for (const copyFilePath of copyFilePaths) {\n const projectPath = path.join(projectRoot, copyFilePath);\n if (!(await directoryExistsAsync(projectPath))) {\n copiedPaths.push(copyFilePath);\n copySync(path.join(templateDirectory, copyFilePath), projectPath);\n } else {\n skippedPaths.push(copyFilePath);\n }\n }\n debug(`Copied files:`, copiedPaths);\n debug(`Skipped files:`, copiedPaths);\n return { copiedPaths, skippedPaths };\n}\n\n/** Get a list of relative file paths to copy from the template folder. Example: `['ios', 'android', 'index.js']` */\nfunction getFilePathsToCopy(projectRoot: string, pkg: PackageJSONConfig, platforms: ModPlatform[]) {\n const targetPaths: string[] = [...platforms];\n\n const bareEntryFile = resolveBareEntryFile(projectRoot, pkg.main);\n // Only create index.js if we cannot resolve the existing entry point (after replacing the expo entry).\n if (!bareEntryFile) {\n targetPaths.push('index.js');\n }\n\n debug(`Files to copy:`, targetPaths);\n return targetPaths;\n}\n\nexport function resolveBareEntryFile(projectRoot: string, main: any) {\n // expo app entry is not needed for bare projects.\n if (isPkgMainExpoAppEntry(main)) {\n return null;\n }\n // Look at the `package.json`s `main` field for the main file.\n const resolvedMainField = main ?? './index';\n // Get a list of possible extensions for the main file.\n const extensions = getBareExtensions(['ios', 'android']);\n // Testing the main field against all of the provided extensions - for legacy reasons we can't use node module resolution as the package.json allows you to pass in a file without a relative path and expect it as a relative path.\n return getFileWithExtensions(projectRoot, resolvedMainField, extensions);\n}\n"],"names":["createCopyFilesSuccessMessage","copyTemplateFilesAsync","resolveBareEntryFile","debug","require","hasAllPlatformSpecificGitIgnores","projectRoot","platforms","reduce","p","platform","fs","existsSync","path","join","skippedPaths","gitignore","message","length","chalk","dim","map","bold","didMerge","didClear","pkg","templateDirectory","copyFilePaths","getFilePathsToCopy","copyResults","copyPathsFromTemplateAsync","hasPlatformSpecificGitIgnores","mergeGitIgnorePaths","copiedPaths","copyFilePath","projectPath","directoryExistsAsync","push","copySync","targetPaths","bareEntryFile","main","isPkgMainExpoAppEntry","resolvedMainField","extensions","getBareExtensions","getFileWithExtensions"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/prebuild/copyTemplateFiles.ts"],"sourcesContent":["import { ModPlatform } from '@expo/config-plugins';\nimport { MergeResults } from '@expo/config-plugins/build/utils/generateCode';\nimport chalk from 'chalk';\nimport fs from 'fs';\nimport path from 'path';\n\nimport { copySync, directoryExistsAsync } from '../utils/dir';\nimport { mergeGitIgnorePaths } from '../utils/mergeGitIgnorePaths';\n\nconst debug = require('debug')('expo:prebuild:copyTemplateFiles') as typeof console.log;\n\ntype CopyFilesResults = {\n /** Merge results for the root `.gitignore` file */\n gitignore: MergeResults | null;\n /** List of file paths that were copied from the template into the project. */\n copiedPaths: string[];\n /** List of file paths that were skipped due to a number of factors. */\n skippedPaths: string[];\n};\n\n/**\n * Return true if the given platforms all have an internal `.gitignore` file.\n *\n * @param projectRoot\n * @param platforms\n */\nfunction hasAllPlatformSpecificGitIgnores(projectRoot: string, platforms: ModPlatform[]): boolean {\n return platforms.reduce<boolean>(\n (p, platform) => p && fs.existsSync(path.join(projectRoot, platform, '.gitignore')),\n true\n );\n}\n\n/** Create a custom log message based on the copy file results. */\nexport function createCopyFilesSuccessMessage(\n platforms: ModPlatform[],\n { skippedPaths, gitignore }: CopyFilesResults\n): string {\n let message = `Created native project${platforms.length > 1 ? 's' : ''}`;\n\n if (skippedPaths.length) {\n message += chalk.dim(\n ` | ${skippedPaths.map((path) => chalk.bold(`/${path}`)).join(', ')} already created`\n );\n }\n if (!gitignore) {\n message += chalk.dim(` | gitignore skipped`);\n } else if (!gitignore.didMerge) {\n message += chalk.dim(` | gitignore already synced`);\n } else if (gitignore.didMerge && gitignore.didClear) {\n message += chalk.dim(` | synced gitignore`);\n }\n return message;\n}\n\n/** Copy template files into the project and possibly merge the `.gitignore` files. */\nexport async function copyTemplateFilesAsync(\n projectRoot: string,\n {\n templateDirectory,\n platforms,\n }: {\n /** File path to the template directory. */\n templateDirectory: string;\n /** List of platforms to copy against. */\n platforms: ModPlatform[];\n }\n): Promise<CopyFilesResults> {\n const copyResults = await copyPathsFromTemplateAsync(projectRoot, {\n templateDirectory,\n copyFilePaths: platforms,\n });\n\n const hasPlatformSpecificGitIgnores = hasAllPlatformSpecificGitIgnores(\n templateDirectory,\n platforms\n );\n debug(`All platforms have an internal gitignore: ${hasPlatformSpecificGitIgnores}`);\n\n // TODO: Remove gitignore modifications -- maybe move to `npx expo-doctor`\n const gitignore = hasPlatformSpecificGitIgnores\n ? null\n : mergeGitIgnorePaths(\n path.join(projectRoot, '.gitignore'),\n path.join(templateDirectory, '.gitignore')\n );\n\n return { ...copyResults, gitignore };\n}\n\nasync function copyPathsFromTemplateAsync(\n /** File path to the project. */\n projectRoot: string,\n {\n templateDirectory,\n copyFilePaths,\n }: {\n /** File path to the template project. */\n templateDirectory: string;\n /** List of relative paths to copy from the template to the project. */\n copyFilePaths: string[];\n }\n): Promise<Pick<CopyFilesResults, 'copiedPaths' | 'skippedPaths'>> {\n const copiedPaths = [];\n const skippedPaths = [];\n for (const copyFilePath of copyFilePaths) {\n const projectPath = path.join(projectRoot, copyFilePath);\n if (!(await directoryExistsAsync(projectPath))) {\n copiedPaths.push(copyFilePath);\n copySync(path.join(templateDirectory, copyFilePath), projectPath);\n } else {\n skippedPaths.push(copyFilePath);\n }\n }\n debug(`Copied files:`, copiedPaths);\n debug(`Skipped files:`, copiedPaths);\n return { copiedPaths, skippedPaths };\n}\n"],"names":["createCopyFilesSuccessMessage","copyTemplateFilesAsync","debug","require","hasAllPlatformSpecificGitIgnores","projectRoot","platforms","reduce","p","platform","fs","existsSync","path","join","skippedPaths","gitignore","message","length","chalk","dim","map","bold","didMerge","didClear","templateDirectory","copyResults","copyPathsFromTemplateAsync","copyFilePaths","hasPlatformSpecificGitIgnores","mergeGitIgnorePaths","copiedPaths","copyFilePath","projectPath","directoryExistsAsync","push","copySync"],"mappings":"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"}
@@ -68,19 +68,8 @@ async function ensureConfigAsync(projectRoot, { platforms }) {
68
68
  if (platforms.includes("ios")) {
69
69
  await (0, _getOrPromptApplicationId).getOrPromptForBundleIdentifier(projectRoot);
70
70
  }
71
- // We need the SDK version to proceed
72
- const { exp , pkg } = (0, _config).getConfig(projectRoot);
73
- // TODO(EvanBacon): Remove the requirement for this once we have a
74
- // custom bundle script that respects Expo entry point resolution.
75
- if (exp.entryPoint) {
76
- delete exp.entryPoint;
77
- Log.log(`\u203A expo.entryPoint is not needed and has been removed.`);
78
- }
79
71
  // Read config again because prompting for bundle id or package name may have mutated the results.
80
- return {
81
- exp,
82
- pkg
83
- };
72
+ return (0, _config).getConfig(projectRoot);
84
73
  }
85
74
 
86
75
  //# sourceMappingURL=ensureConfigAsync.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/prebuild/ensureConfigAsync.ts"],"sourcesContent":["import { ExpoConfig, getConfig, PackageJSONConfig } from '@expo/config';\nimport { ModPlatform } from '@expo/config-plugins';\nimport JsonFile, { JSONObject } from '@expo/json-file';\nimport path from 'path';\n\nimport * as Log from '../log';\nimport { CommandError } from '../utils/errors';\nimport {\n getOrPromptForBundleIdentifier,\n getOrPromptForPackage,\n} from '../utils/getOrPromptApplicationId';\n\n/**\n * If an Expo config file does not exist, write a new one using the in-memory config.\n *\n * @param projectRoot\n */\nexport async function ensureConfigExistsAsync(projectRoot: string) {\n try {\n const config = getConfig(projectRoot, { skipSDKVersionRequirement: false });\n // If no config exists in the file system then we should generate one so the process doesn't fail.\n if (!config.dynamicConfigPath && !config.staticConfigPath) {\n // Remove the internal object before writing.\n delete config.exp._internal;\n\n // Write the generated config.\n await JsonFile.writeAsync(\n path.join(projectRoot, 'app.json'),\n { expo: config.exp as unknown as JSONObject },\n { json5: false }\n );\n }\n } catch (error: any) {\n // TODO(Bacon): Currently this is already handled in the command\n Log.log();\n throw new CommandError(`${error.message}\\n`);\n }\n}\n\n/** Ensure config is written, prompts for application identifiers, and removes entryPoint value. */\nexport async function ensureConfigAsync(\n projectRoot: string,\n {\n platforms,\n }: {\n platforms: ModPlatform[];\n }\n): Promise<{ exp: ExpoConfig; pkg: PackageJSONConfig }> {\n await ensureConfigExistsAsync(projectRoot);\n\n // Prompt for the Android package first because it's more strict than the bundle identifier\n // this means you'll have a better chance at matching the bundle identifier with the package name.\n if (platforms.includes('android')) {\n await getOrPromptForPackage(projectRoot);\n }\n\n if (platforms.includes('ios')) {\n await getOrPromptForBundleIdentifier(projectRoot);\n }\n\n // We need the SDK version to proceed\n const { exp, pkg } = getConfig(projectRoot);\n\n // TODO(EvanBacon): Remove the requirement for this once we have a\n // custom bundle script that respects Expo entry point resolution.\n if (exp.entryPoint) {\n delete exp.entryPoint;\n Log.log(`\\u203A expo.entryPoint is not needed and has been removed.`);\n }\n\n // Read config again because prompting for bundle id or package name may have mutated the results.\n return { exp, pkg };\n}\n"],"names":["ensureConfigExistsAsync","ensureConfigAsync","Log","projectRoot","config","getConfig","skipSDKVersionRequirement","dynamicConfigPath","staticConfigPath","exp","_internal","JsonFile","writeAsync","path","join","expo","json5","error","log","CommandError","message","platforms","includes","getOrPromptForPackage","getOrPromptForBundleIdentifier","pkg","entryPoint"],"mappings":"AAAA;;;;QAiBsBA,uBAAuB,GAAvBA,uBAAuB;QAuBvBC,iBAAiB,GAAjBA,iBAAiB;AAxCkB,IAAA,OAAc,WAAd,cAAc,CAAA;AAElC,IAAA,SAAiB,kCAAjB,iBAAiB,EAAA;AACrC,IAAA,KAAM,kCAAN,MAAM,EAAA;AAEXC,IAAAA,GAAG,mCAAM,QAAQ,EAAd;AACc,IAAA,OAAiB,WAAjB,iBAAiB,CAAA;AAIvC,IAAA,yBAAmC,WAAnC,mCAAmC,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOnC,eAAeF,uBAAuB,CAACG,WAAmB,EAAE;IACjE,IAAI;QACF,MAAMC,MAAM,GAAGC,CAAAA,GAAAA,OAAS,AAAmD,CAAA,UAAnD,CAACF,WAAW,EAAE;YAAEG,yBAAyB,EAAE,KAAK;SAAE,CAAC,AAAC;QAC5E,kGAAkG;QAClG,IAAI,CAACF,MAAM,CAACG,iBAAiB,IAAI,CAACH,MAAM,CAACI,gBAAgB,EAAE;YACzD,6CAA6C;YAC7C,OAAOJ,MAAM,CAACK,GAAG,CAACC,SAAS,CAAC;YAE5B,8BAA8B;YAC9B,MAAMC,SAAQ,QAAA,CAACC,UAAU,CACvBC,KAAI,QAAA,CAACC,IAAI,CAACX,WAAW,EAAE,UAAU,CAAC,EAClC;gBAAEY,IAAI,EAAEX,MAAM,CAACK,GAAG;aAA2B,EAC7C;gBAAEO,KAAK,EAAE,KAAK;aAAE,CACjB,CAAC;SACH;KACF,CAAC,OAAOC,KAAK,EAAO;QACnB,gEAAgE;QAChEf,GAAG,CAACgB,GAAG,EAAE,CAAC;QACV,MAAM,IAAIC,OAAY,aAAA,CAAC,CAAC,EAAEF,KAAK,CAACG,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;KAC9C;CACF;AAGM,eAAenB,iBAAiB,CACrCE,WAAmB,EACnB,EACEkB,SAAS,CAAA,EAGV,EACqD;IACtD,MAAMrB,uBAAuB,CAACG,WAAW,CAAC,CAAC;IAE3C,2FAA2F;IAC3F,kGAAkG;IAClG,IAAIkB,SAAS,CAACC,QAAQ,CAAC,SAAS,CAAC,EAAE;QACjC,MAAMC,CAAAA,GAAAA,yBAAqB,AAAa,CAAA,sBAAb,CAACpB,WAAW,CAAC,CAAC;KAC1C;IAED,IAAIkB,SAAS,CAACC,QAAQ,CAAC,KAAK,CAAC,EAAE;QAC7B,MAAME,CAAAA,GAAAA,yBAA8B,AAAa,CAAA,+BAAb,CAACrB,WAAW,CAAC,CAAC;KACnD;IAED,qCAAqC;IACrC,MAAM,EAAEM,GAAG,CAAA,EAAEgB,GAAG,CAAA,EAAE,GAAGpB,CAAAA,GAAAA,OAAS,AAAa,CAAA,UAAb,CAACF,WAAW,CAAC,AAAC;IAE5C,kEAAkE;IAClE,kEAAkE;IAClE,IAAIM,GAAG,CAACiB,UAAU,EAAE;QAClB,OAAOjB,GAAG,CAACiB,UAAU,CAAC;QACtBxB,GAAG,CAACgB,GAAG,CAAC,CAAC,0DAA0D,CAAC,CAAC,CAAC;KACvE;IAED,kGAAkG;IAClG,OAAO;QAAET,GAAG;QAAEgB,GAAG;KAAE,CAAC;CACrB"}
1
+ {"version":3,"sources":["../../../src/prebuild/ensureConfigAsync.ts"],"sourcesContent":["import { ExpoConfig, getConfig, PackageJSONConfig } from '@expo/config';\nimport { ModPlatform } from '@expo/config-plugins';\nimport JsonFile, { JSONObject } from '@expo/json-file';\nimport path from 'path';\n\nimport * as Log from '../log';\nimport { CommandError } from '../utils/errors';\nimport {\n getOrPromptForBundleIdentifier,\n getOrPromptForPackage,\n} from '../utils/getOrPromptApplicationId';\n\n/**\n * If an Expo config file does not exist, write a new one using the in-memory config.\n *\n * @param projectRoot\n */\nexport async function ensureConfigExistsAsync(projectRoot: string) {\n try {\n const config = getConfig(projectRoot, { skipSDKVersionRequirement: false });\n // If no config exists in the file system then we should generate one so the process doesn't fail.\n if (!config.dynamicConfigPath && !config.staticConfigPath) {\n // Remove the internal object before writing.\n delete config.exp._internal;\n\n // Write the generated config.\n await JsonFile.writeAsync(\n path.join(projectRoot, 'app.json'),\n { expo: config.exp as unknown as JSONObject },\n { json5: false }\n );\n }\n } catch (error: any) {\n // TODO(Bacon): Currently this is already handled in the command\n Log.log();\n throw new CommandError(`${error.message}\\n`);\n }\n}\n\n/** Ensure config is written, and prompts for application identifiers. */\nexport async function ensureConfigAsync(\n projectRoot: string,\n {\n platforms,\n }: {\n platforms: ModPlatform[];\n }\n): Promise<{ exp: ExpoConfig; pkg: PackageJSONConfig }> {\n await ensureConfigExistsAsync(projectRoot);\n\n // Prompt for the Android package first because it's more strict than the bundle identifier\n // this means you'll have a better chance at matching the bundle identifier with the package name.\n if (platforms.includes('android')) {\n await getOrPromptForPackage(projectRoot);\n }\n\n if (platforms.includes('ios')) {\n await getOrPromptForBundleIdentifier(projectRoot);\n }\n\n // Read config again because prompting for bundle id or package name may have mutated the results.\n return getConfig(projectRoot);\n}\n"],"names":["ensureConfigExistsAsync","ensureConfigAsync","Log","projectRoot","config","getConfig","skipSDKVersionRequirement","dynamicConfigPath","staticConfigPath","exp","_internal","JsonFile","writeAsync","path","join","expo","json5","error","log","CommandError","message","platforms","includes","getOrPromptForPackage","getOrPromptForBundleIdentifier"],"mappings":"AAAA;;;;QAiBsBA,uBAAuB,GAAvBA,uBAAuB;QAuBvBC,iBAAiB,GAAjBA,iBAAiB;AAxCkB,IAAA,OAAc,WAAd,cAAc,CAAA;AAElC,IAAA,SAAiB,kCAAjB,iBAAiB,EAAA;AACrC,IAAA,KAAM,kCAAN,MAAM,EAAA;AAEXC,IAAAA,GAAG,mCAAM,QAAQ,EAAd;AACc,IAAA,OAAiB,WAAjB,iBAAiB,CAAA;AAIvC,IAAA,yBAAmC,WAAnC,mCAAmC,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOnC,eAAeF,uBAAuB,CAACG,WAAmB,EAAE;IACjE,IAAI;QACF,MAAMC,MAAM,GAAGC,CAAAA,GAAAA,OAAS,AAAmD,CAAA,UAAnD,CAACF,WAAW,EAAE;YAAEG,yBAAyB,EAAE,KAAK;SAAE,CAAC,AAAC;QAC5E,kGAAkG;QAClG,IAAI,CAACF,MAAM,CAACG,iBAAiB,IAAI,CAACH,MAAM,CAACI,gBAAgB,EAAE;YACzD,6CAA6C;YAC7C,OAAOJ,MAAM,CAACK,GAAG,CAACC,SAAS,CAAC;YAE5B,8BAA8B;YAC9B,MAAMC,SAAQ,QAAA,CAACC,UAAU,CACvBC,KAAI,QAAA,CAACC,IAAI,CAACX,WAAW,EAAE,UAAU,CAAC,EAClC;gBAAEY,IAAI,EAAEX,MAAM,CAACK,GAAG;aAA2B,EAC7C;gBAAEO,KAAK,EAAE,KAAK;aAAE,CACjB,CAAC;SACH;KACF,CAAC,OAAOC,KAAK,EAAO;QACnB,gEAAgE;QAChEf,GAAG,CAACgB,GAAG,EAAE,CAAC;QACV,MAAM,IAAIC,OAAY,aAAA,CAAC,CAAC,EAAEF,KAAK,CAACG,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;KAC9C;CACF;AAGM,eAAenB,iBAAiB,CACrCE,WAAmB,EACnB,EACEkB,SAAS,CAAA,EAGV,EACqD;IACtD,MAAMrB,uBAAuB,CAACG,WAAW,CAAC,CAAC;IAE3C,2FAA2F;IAC3F,kGAAkG;IAClG,IAAIkB,SAAS,CAACC,QAAQ,CAAC,SAAS,CAAC,EAAE;QACjC,MAAMC,CAAAA,GAAAA,yBAAqB,AAAa,CAAA,sBAAb,CAACpB,WAAW,CAAC,CAAC;KAC1C;IAED,IAAIkB,SAAS,CAACC,QAAQ,CAAC,KAAK,CAAC,EAAE;QAC7B,MAAME,CAAAA,GAAAA,yBAA8B,AAAa,CAAA,+BAAb,CAACrB,WAAW,CAAC,CAAC;KACnD;IAED,kGAAkG;IAClG,OAAOE,CAAAA,GAAAA,OAAS,AAAa,CAAA,UAAb,CAACF,WAAW,CAAC,CAAC;CAC/B"}
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  exports.prebuildAsync = prebuildAsync;
6
6
  var _installAsync = require("../install/installAsync");
7
7
  var _env = require("../utils/env");
8
+ var _nodeEnv = require("../utils/nodeEnv");
8
9
  var _nodeModules = require("../utils/nodeModules");
9
10
  var _ora = require("../utils/ora");
10
11
  var _profile = require("../utils/profile");
@@ -36,6 +37,8 @@ function _interopRequireWildcard(obj) {
36
37
  }
37
38
  const debug = require("debug")("expo:prebuild");
38
39
  async function prebuildAsync(projectRoot, options) {
40
+ (0, _nodeEnv).setNodeEnv("development");
41
+ require("@expo/env").load(projectRoot);
39
42
  if (options.clean) {
40
43
  const { maybeBailOnGitStatusAsync } = await Promise.resolve().then(function() {
41
44
  return _interopRequireWildcard(require("../utils/git"));
@@ -68,12 +71,14 @@ async function prebuildAsync(projectRoot, options) {
68
71
  });
69
72
  // Install node modules
70
73
  if (options.install) {
71
- var ref;
74
+ var ref, ref1, ref2, ref3;
72
75
  if (hasNewDependencies && ((ref = options.packageManager) == null ? void 0 : ref.npm)) {
73
76
  await (0, _nodeModules).clearNodeModulesAsync(projectRoot);
74
77
  }
75
78
  await (0, _installAsync).installAsync([], {
76
- ...options.packageManager,
79
+ npm: !!((ref1 = options.packageManager) == null ? void 0 : ref1.npm),
80
+ yarn: !!((ref2 = options.packageManager) == null ? void 0 : ref2.yarn),
81
+ pnpm: !!((ref3 = options.packageManager) == null ? void 0 : ref3.pnpm),
77
82
  silent: !(_env.env.EXPO_DEBUG || _env.env.CI)
78
83
  });
79
84
  }