@expo/cli 0.22.24 → 0.22.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/bin/cli +93 -91
- package/build/bin/cli.map +1 -1
- package/build/metro-require/require.js +53 -52
- package/build/src/api/endpoint.js +6 -2
- package/build/src/api/endpoint.js.map +1 -1
- package/build/src/api/getExpoGoIntermediateCertificate.js +5 -3
- package/build/src/api/getExpoGoIntermediateCertificate.js.map +1 -1
- package/build/src/api/getExpoSchema.js +16 -12
- package/build/src/api/getExpoSchema.js.map +1 -1
- package/build/src/api/getNativeModuleVersions.js +6 -4
- package/build/src/api/getNativeModuleVersions.js.map +1 -1
- package/build/src/api/getProjectDevelopmentCertificate.js +5 -3
- package/build/src/api/getProjectDevelopmentCertificate.js.map +1 -1
- package/build/src/api/getVersions.js +7 -5
- package/build/src/api/getVersions.js.map +1 -1
- package/build/src/api/graphql/client.js +32 -26
- package/build/src/api/graphql/client.js.map +1 -1
- package/build/src/api/graphql/queries/AppQuery.js +6 -4
- package/build/src/api/graphql/queries/AppQuery.js.map +1 -1
- package/build/src/api/graphql/queries/UserQuery.js +5 -3
- package/build/src/api/graphql/queries/UserQuery.js.map +1 -1
- package/build/src/api/graphql/types/App.js +3 -1
- package/build/src/api/graphql/types/App.js.map +1 -1
- package/build/src/api/rest/cache/FileSystemResponseCache.js +10 -8
- package/build/src/api/rest/cache/FileSystemResponseCache.js.map +1 -1
- package/build/src/api/rest/cache/ResponseCache.js +20 -12
- package/build/src/api/rest/cache/ResponseCache.js.map +1 -1
- package/build/src/api/rest/cache/wrapFetchWithCache.js +13 -11
- package/build/src/api/rest/cache/wrapFetchWithCache.js.map +1 -1
- package/build/src/api/rest/client.js +53 -35
- package/build/src/api/rest/client.js.map +1 -1
- package/build/src/api/rest/client.types.js.map +1 -1
- package/build/src/api/rest/wrapFetchWithBaseUrl.js +5 -3
- package/build/src/api/rest/wrapFetchWithBaseUrl.js.map +1 -1
- package/build/src/api/rest/wrapFetchWithOffline.js +5 -3
- package/build/src/api/rest/wrapFetchWithOffline.js.map +1 -1
- package/build/src/api/rest/wrapFetchWithProgress.js +11 -7
- package/build/src/api/rest/wrapFetchWithProgress.js.map +1 -1
- package/build/src/api/rest/wrapFetchWithProxy.js +5 -3
- package/build/src/api/rest/wrapFetchWithProxy.js.map +1 -1
- package/build/src/api/rest/wrapFetchWithUserAgent.js +8 -6
- package/build/src/api/rest/wrapFetchWithUserAgent.js.map +1 -1
- package/build/src/api/settings.js +7 -5
- package/build/src/api/settings.js.map +1 -1
- package/build/src/api/updateDevelopmentSession.js +23 -17
- package/build/src/api/updateDevelopmentSession.js.map +1 -1
- package/build/src/api/user/UserSettings.js +39 -21
- package/build/src/api/user/UserSettings.js.map +1 -1
- package/build/src/api/user/actions.js +27 -21
- package/build/src/api/user/actions.js.map +1 -1
- package/build/src/api/user/expoSsoLauncher.js +30 -26
- package/build/src/api/user/expoSsoLauncher.js.map +1 -1
- package/build/src/api/user/otp.js +35 -29
- package/build/src/api/user/otp.js.map +1 -1
- package/build/src/api/user/user.js +44 -30
- package/build/src/api/user/user.js.map +1 -1
- package/build/src/config/configAsync.js +29 -23
- package/build/src/config/configAsync.js.map +1 -1
- package/build/src/config/index.js +25 -21
- package/build/src/config/index.js.map +1 -1
- package/build/src/customize/customizeAsync.js +8 -6
- package/build/src/customize/customizeAsync.js.map +1 -1
- package/build/src/customize/generate.js +20 -16
- package/build/src/customize/generate.js.map +1 -1
- package/build/src/customize/index.js +14 -12
- package/build/src/customize/index.js.map +1 -1
- package/build/src/customize/resolveOptions.js +4 -2
- package/build/src/customize/resolveOptions.js.map +1 -1
- package/build/src/customize/templates.js +58 -54
- package/build/src/customize/templates.js.map +1 -1
- package/build/src/customize/typescript.js +11 -7
- package/build/src/customize/typescript.js.map +1 -1
- package/build/src/export/createMetadataJson.js +11 -9
- package/build/src/export/createMetadataJson.js.map +1 -1
- package/build/src/export/embed/exportEager.js +8 -6
- package/build/src/export/embed/exportEager.js.map +1 -1
- package/build/src/export/embed/exportEmbedAsync.js +71 -61
- package/build/src/export/embed/exportEmbedAsync.js.map +1 -1
- package/build/src/export/embed/exportServer.js +57 -55
- package/build/src/export/embed/exportServer.js.map +1 -1
- package/build/src/export/embed/index.js +44 -40
- package/build/src/export/embed/index.js.map +1 -1
- package/build/src/export/embed/resolveOptions.js +44 -36
- package/build/src/export/embed/resolveOptions.js.map +1 -1
- package/build/src/export/embed/xcodeCompilerLogger.js +39 -27
- package/build/src/export/embed/xcodeCompilerLogger.js.map +1 -1
- package/build/src/export/exportApp.js +67 -63
- package/build/src/export/exportApp.js.map +1 -1
- package/build/src/export/exportAssets.js +35 -27
- package/build/src/export/exportAssets.js.map +1 -1
- package/build/src/export/exportAsync.js +13 -9
- package/build/src/export/exportAsync.js.map +1 -1
- package/build/src/export/exportDomComponents.js +53 -45
- package/build/src/export/exportDomComponents.js.map +1 -1
- package/build/src/export/exportHermes.js +85 -63
- package/build/src/export/exportHermes.js.map +1 -1
- package/build/src/export/exportStaticAsync.js +72 -62
- package/build/src/export/exportStaticAsync.js.map +1 -1
- package/build/src/export/favicon.js +33 -27
- package/build/src/export/favicon.js.map +1 -1
- package/build/src/export/getPublicExpoManifest.js +7 -5
- package/build/src/export/getPublicExpoManifest.js.map +1 -1
- package/build/src/export/getResolvedLocales.js +11 -9
- package/build/src/export/getResolvedLocales.js.map +1 -1
- package/build/src/export/html.js +10 -6
- package/build/src/export/html.js.map +1 -1
- package/build/src/export/index.js +32 -28
- package/build/src/export/index.js.map +1 -1
- package/build/src/export/metroAssetLocalPath.js +36 -30
- package/build/src/export/metroAssetLocalPath.js.map +1 -1
- package/build/src/export/persistMetroAssets.js +42 -34
- package/build/src/export/persistMetroAssets.js.map +1 -1
- package/build/src/export/publicFolder.js +10 -6
- package/build/src/export/publicFolder.js.map +1 -1
- package/build/src/export/resolveOptions.js +28 -24
- package/build/src/export/resolveOptions.js.map +1 -1
- package/build/src/export/saveAssets.js +50 -46
- package/build/src/export/saveAssets.js.map +1 -1
- package/build/src/export/web/exportWebAsync.js +13 -11
- package/build/src/export/web/exportWebAsync.js.map +1 -1
- package/build/src/export/web/index.js +19 -15
- package/build/src/export/web/index.js.map +1 -1
- package/build/src/export/web/resolveOptions.js +5 -3
- package/build/src/export/web/resolveOptions.js.map +1 -1
- package/build/src/export/writeContents.js +4 -2
- package/build/src/export/writeContents.js.map +1 -1
- package/build/src/graphql/generated.js +400 -274
- package/build/src/graphql/generated.js.map +1 -1
- package/build/src/install/applyPlugins.js +11 -7
- package/build/src/install/applyPlugins.js.map +1 -1
- package/build/src/install/checkPackages.js +26 -22
- package/build/src/install/checkPackages.js.map +1 -1
- package/build/src/install/fixPackages.js +16 -12
- package/build/src/install/fixPackages.js.map +1 -1
- package/build/src/install/index.js +18 -16
- package/build/src/install/index.js.map +1 -1
- package/build/src/install/installAsync.js +32 -26
- package/build/src/install/installAsync.js.map +1 -1
- package/build/src/install/installExpoPackage.js +22 -18
- package/build/src/install/installExpoPackage.js.map +1 -1
- package/build/src/install/resolveOptions.js +21 -19
- package/build/src/install/resolveOptions.js.map +1 -1
- package/build/src/install/utils/autoAddConfigPlugins.js +18 -14
- package/build/src/install/utils/autoAddConfigPlugins.js.map +1 -1
- package/build/src/install/utils/checkPackagesCompatibility.js +13 -11
- package/build/src/install/utils/checkPackagesCompatibility.js.map +1 -1
- package/build/src/lint/ESlintPrerequisite.js +50 -44
- package/build/src/lint/ESlintPrerequisite.js.map +1 -1
- package/build/src/lint/index.js +12 -8
- package/build/src/lint/index.js.map +1 -1
- package/build/src/lint/lintAsync.js +10 -8
- package/build/src/lint/lintAsync.js.map +1 -1
- package/build/src/log.js +36 -16
- package/build/src/log.js.map +1 -1
- package/build/src/login/index.js +24 -20
- package/build/src/login/index.js.map +1 -1
- package/build/src/logout/index.js +11 -7
- package/build/src/logout/index.js.map +1 -1
- package/build/src/prebuild/clearNativeFolder.js +38 -26
- package/build/src/prebuild/clearNativeFolder.js.map +1 -1
- package/build/src/prebuild/configureProjectAsync.js +18 -14
- package/build/src/prebuild/configureProjectAsync.js.map +1 -1
- package/build/src/prebuild/copyTemplateFiles.js +17 -13
- package/build/src/prebuild/copyTemplateFiles.js.map +1 -1
- package/build/src/prebuild/ensureConfigAsync.js +6 -4
- package/build/src/prebuild/ensureConfigAsync.js.map +1 -1
- package/build/src/prebuild/index.js +36 -32
- package/build/src/prebuild/index.js.map +1 -1
- package/build/src/prebuild/prebuildAsync.js +29 -25
- package/build/src/prebuild/prebuildAsync.js.map +1 -1
- package/build/src/prebuild/renameTemplateAppName.js +46 -40
- package/build/src/prebuild/renameTemplateAppName.js.map +1 -1
- package/build/src/prebuild/resolveOptions.js +66 -52
- package/build/src/prebuild/resolveOptions.js.map +1 -1
- package/build/src/prebuild/resolveTemplate.js +36 -32
- package/build/src/prebuild/resolveTemplate.js.map +1 -1
- package/build/src/prebuild/updateFromTemplate.js +19 -13
- package/build/src/prebuild/updateFromTemplate.js.map +1 -1
- package/build/src/prebuild/updatePackageJson.js +53 -39
- package/build/src/prebuild/updatePackageJson.js.map +1 -1
- package/build/src/prebuild/validateTemplatePlatforms.js +12 -8
- package/build/src/prebuild/validateTemplatePlatforms.js.map +1 -1
- package/build/src/register/index.js +11 -7
- package/build/src/register/index.js.map +1 -1
- package/build/src/register/registerAsync.js +5 -3
- package/build/src/register/registerAsync.js.map +1 -1
- package/build/src/run/android/index.js +36 -32
- package/build/src/run/android/index.js.map +1 -1
- package/build/src/run/android/resolveDevice.js +10 -8
- package/build/src/run/android/resolveDevice.js.map +1 -1
- package/build/src/run/android/resolveGradlePropsAsync.js +18 -16
- package/build/src/run/android/resolveGradlePropsAsync.js.map +1 -1
- package/build/src/run/android/resolveInstallApkName.js +17 -15
- package/build/src/run/android/resolveInstallApkName.js.map +1 -1
- package/build/src/run/android/resolveLaunchProps.js +12 -10
- package/build/src/run/android/resolveLaunchProps.js.map +1 -1
- package/build/src/run/android/resolveOptions.js +4 -2
- package/build/src/run/android/resolveOptions.js.map +1 -1
- package/build/src/run/android/runAndroidAsync.js +23 -21
- package/build/src/run/android/runAndroidAsync.js.map +1 -1
- package/build/src/run/ensureNativeProject.js +7 -5
- package/build/src/run/ensureNativeProject.js.map +1 -1
- package/build/src/run/hints.js +13 -7
- package/build/src/run/hints.js.map +1 -1
- package/build/src/run/index.js +27 -23
- package/build/src/run/index.js.map +1 -1
- package/build/src/run/ios/XcodeBuild.js +74 -56
- package/build/src/run/ios/XcodeBuild.js.map +1 -1
- package/build/src/run/ios/XcodeBuild.types.js.map +1 -1
- package/build/src/run/ios/appleDevice/AppleDevice.js +69 -63
- package/build/src/run/ios/appleDevice/AppleDevice.js.map +1 -1
- package/build/src/run/ios/appleDevice/ClientManager.js +29 -26
- package/build/src/run/ios/appleDevice/ClientManager.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/AFCClient.js +28 -25
- package/build/src/run/ios/appleDevice/client/AFCClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/DebugserverClient.js +29 -26
- package/build/src/run/ios/appleDevice/client/DebugserverClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js +22 -21
- package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/LockdowndClient.js +32 -29
- package/build/src/run/ios/appleDevice/client/LockdowndClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js +28 -24
- package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/ServiceClient.js +7 -4
- package/build/src/run/ios/appleDevice/client/ServiceClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js +28 -27
- package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/installOnDeviceAsync.js +23 -17
- package/build/src/run/ios/appleDevice/installOnDeviceAsync.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js +146 -132
- package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js +29 -21
- package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js +29 -21
- package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js +34 -22
- package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js +27 -17
- package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js.map +1 -1
- package/build/src/run/ios/codeSigning/Security.js +53 -39
- package/build/src/run/ios/codeSigning/Security.js.map +1 -1
- package/build/src/run/ios/codeSigning/configureCodeSigning.js +13 -9
- package/build/src/run/ios/codeSigning/configureCodeSigning.js.map +1 -1
- package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js +27 -19
- package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js.map +1 -1
- package/build/src/run/ios/codeSigning/settings.js +9 -5
- package/build/src/run/ios/codeSigning/settings.js.map +1 -1
- package/build/src/run/ios/codeSigning/simulatorCodeSigning.js +14 -12
- package/build/src/run/ios/codeSigning/simulatorCodeSigning.js.map +1 -1
- package/build/src/run/ios/codeSigning/xcodeCodeSigning.js +27 -21
- package/build/src/run/ios/codeSigning/xcodeCodeSigning.js.map +1 -1
- package/build/src/run/ios/index.js +40 -36
- package/build/src/run/ios/index.js.map +1 -1
- package/build/src/run/ios/launchApp.js +23 -17
- package/build/src/run/ios/launchApp.js.map +1 -1
- package/build/src/run/ios/options/appleDestinations.js +38 -36
- package/build/src/run/ios/options/appleDestinations.js.map +1 -1
- package/build/src/run/ios/options/promptDevice.js +20 -16
- package/build/src/run/ios/options/promptDevice.js.map +1 -1
- package/build/src/run/ios/options/resolveDevice.js +30 -24
- package/build/src/run/ios/options/resolveDevice.js.map +1 -1
- package/build/src/run/ios/options/resolveNativeScheme.js +31 -23
- package/build/src/run/ios/options/resolveNativeScheme.js.map +1 -1
- package/build/src/run/ios/options/resolveOptions.js +7 -5
- package/build/src/run/ios/options/resolveOptions.js.map +1 -1
- package/build/src/run/ios/options/resolveXcodeProject.js +7 -5
- package/build/src/run/ios/options/resolveXcodeProject.js.map +1 -1
- package/build/src/run/ios/runIosAsync.js +48 -44
- package/build/src/run/ios/runIosAsync.js.map +1 -1
- package/build/src/run/ios/validateExternalBinary.js +24 -22
- package/build/src/run/ios/validateExternalBinary.js.map +1 -1
- package/build/src/run/resolveBundlerProps.js +4 -2
- package/build/src/run/resolveBundlerProps.js.map +1 -1
- package/build/src/run/startBundler.js +16 -12
- package/build/src/run/startBundler.js.map +1 -1
- package/build/src/serve/index.js +20 -16
- package/build/src/serve/index.js.map +1 -1
- package/build/src/serve/serveAsync.js +36 -32
- package/build/src/serve/serveAsync.js.map +1 -1
- package/build/src/start/detectDevClient.js +13 -9
- package/build/src/start/detectDevClient.js.map +1 -1
- package/build/src/start/doctor/Prerequisite.js +12 -7
- package/build/src/start/doctor/Prerequisite.js.map +1 -1
- package/build/src/start/doctor/SecurityBinPrerequisite.js +13 -11
- package/build/src/start/doctor/SecurityBinPrerequisite.js.map +1 -1
- package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js +23 -19
- package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js.map +1 -1
- package/build/src/start/doctor/apple/XcodeDeveloperDiskImagePrerequisite.js +23 -19
- package/build/src/start/doctor/apple/XcodeDeveloperDiskImagePrerequisite.js.map +1 -1
- package/build/src/start/doctor/apple/XcodePrerequisite.js +51 -45
- package/build/src/start/doctor/apple/XcodePrerequisite.js.map +1 -1
- package/build/src/start/doctor/apple/XcrunPrerequisite.js +18 -16
- package/build/src/start/doctor/apple/XcrunPrerequisite.js.map +1 -1
- package/build/src/start/doctor/dependencies/bundledNativeModules.js +23 -19
- package/build/src/start/doctor/dependencies/bundledNativeModules.js.map +1 -1
- package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js +31 -25
- package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js.map +1 -1
- package/build/src/start/doctor/dependencies/getMissingPackages.js +25 -17
- package/build/src/start/doctor/dependencies/getMissingPackages.js.map +1 -1
- package/build/src/start/doctor/dependencies/getVersionedPackages.js +40 -32
- package/build/src/start/doctor/dependencies/getVersionedPackages.js.map +1 -1
- package/build/src/start/doctor/dependencies/resolvePackages.js +32 -26
- package/build/src/start/doctor/dependencies/resolvePackages.js.map +1 -1
- package/build/src/start/doctor/dependencies/validateDependenciesVersions.js +41 -31
- package/build/src/start/doctor/dependencies/validateDependenciesVersions.js.map +1 -1
- package/build/src/start/doctor/ngrok/ExternalModule.js +34 -29
- package/build/src/start/doctor/ngrok/ExternalModule.js.map +1 -1
- package/build/src/start/doctor/ngrok/NgrokResolver.js +12 -8
- package/build/src/start/doctor/ngrok/NgrokResolver.js.map +1 -1
- package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js +32 -28
- package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js.map +1 -1
- package/build/src/start/doctor/typescript/updateTSConfig.js +23 -17
- package/build/src/start/doctor/typescript/updateTSConfig.js.map +1 -1
- package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js +33 -27
- package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js.map +1 -1
- package/build/src/start/index.js +46 -42
- package/build/src/start/index.js.map +1 -1
- package/build/src/start/interface/KeyPressHandler.js +18 -14
- package/build/src/start/interface/KeyPressHandler.js.map +1 -1
- package/build/src/start/interface/commandsTable.js +94 -80
- package/build/src/start/interface/commandsTable.js.map +1 -1
- package/build/src/start/interface/interactiveActions.js +44 -40
- package/build/src/start/interface/interactiveActions.js.map +1 -1
- package/build/src/start/interface/startInterface.js +65 -61
- package/build/src/start/interface/startInterface.js.map +1 -1
- package/build/src/start/platforms/AppIdResolver.js +6 -4
- package/build/src/start/platforms/AppIdResolver.js.map +1 -1
- package/build/src/start/platforms/DeviceManager.js +10 -6
- package/build/src/start/platforms/DeviceManager.js.map +1 -1
- package/build/src/start/platforms/ExpoGoInstaller.js +25 -20
- package/build/src/start/platforms/ExpoGoInstaller.js.map +1 -1
- package/build/src/start/platforms/PlatformManager.js +17 -15
- package/build/src/start/platforms/PlatformManager.js.map +1 -1
- package/build/src/start/platforms/android/ADBServer.js +39 -35
- package/build/src/start/platforms/android/ADBServer.js.map +1 -1
- package/build/src/start/platforms/android/AndroidAppIdResolver.js +18 -16
- package/build/src/start/platforms/android/AndroidAppIdResolver.js.map +1 -1
- package/build/src/start/platforms/android/AndroidDeviceManager.js +24 -20
- package/build/src/start/platforms/android/AndroidDeviceManager.js.map +1 -1
- package/build/src/start/platforms/android/AndroidPlatformManager.js +17 -17
- package/build/src/start/platforms/android/AndroidPlatformManager.js.map +1 -1
- package/build/src/start/platforms/android/AndroidSdk.js +11 -9
- package/build/src/start/platforms/android/AndroidSdk.js.map +1 -1
- package/build/src/start/platforms/android/activateWindow.js +26 -22
- package/build/src/start/platforms/android/activateWindow.js.map +1 -1
- package/build/src/start/platforms/android/adb.js +121 -83
- package/build/src/start/platforms/android/adb.js.map +1 -1
- package/build/src/start/platforms/android/adbReverse.js +20 -12
- package/build/src/start/platforms/android/adbReverse.js.map +1 -1
- package/build/src/start/platforms/android/emulator.js +36 -26
- package/build/src/start/platforms/android/emulator.js.map +1 -1
- package/build/src/start/platforms/android/getDevices.js +7 -5
- package/build/src/start/platforms/android/getDevices.js.map +1 -1
- package/build/src/start/platforms/android/gradle.js +36 -28
- package/build/src/start/platforms/android/gradle.js.map +1 -1
- package/build/src/start/platforms/android/promptAndroidDevice.js +19 -15
- package/build/src/start/platforms/android/promptAndroidDevice.js.map +1 -1
- package/build/src/start/platforms/ios/AppleAppIdResolver.js +21 -19
- package/build/src/start/platforms/ios/AppleAppIdResolver.js.map +1 -1
- package/build/src/start/platforms/ios/AppleDeviceManager.js +37 -31
- package/build/src/start/platforms/ios/AppleDeviceManager.js.map +1 -1
- package/build/src/start/platforms/ios/ApplePlatformManager.js +12 -12
- package/build/src/start/platforms/ios/ApplePlatformManager.js.map +1 -1
- package/build/src/start/platforms/ios/assertSystemRequirements.js +9 -7
- package/build/src/start/platforms/ios/assertSystemRequirements.js.map +1 -1
- package/build/src/start/platforms/ios/devicectl.js +87 -73
- package/build/src/start/platforms/ios/devicectl.js.map +1 -1
- package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js +22 -18
- package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js.map +1 -1
- package/build/src/start/platforms/ios/getBestSimulator.js +29 -19
- package/build/src/start/platforms/ios/getBestSimulator.js.map +1 -1
- package/build/src/start/platforms/ios/promptAppleDevice.js +14 -10
- package/build/src/start/platforms/ios/promptAppleDevice.js.map +1 -1
- package/build/src/start/platforms/ios/simctl.js +102 -74
- package/build/src/start/platforms/ios/simctl.js.map +1 -1
- package/build/src/start/platforms/ios/simctlLogging.js +57 -52
- package/build/src/start/platforms/ios/simctlLogging.js.map +1 -1
- package/build/src/start/platforms/ios/xcrun.js +22 -18
- package/build/src/start/platforms/ios/xcrun.js.map +1 -1
- package/build/src/start/project/devices.js +19 -9
- package/build/src/start/project/devices.js.map +1 -1
- package/build/src/start/project/dotExpo.js +15 -11
- package/build/src/start/project/dotExpo.js.map +1 -1
- package/build/src/start/project/settings.js +4 -2
- package/build/src/start/project/settings.js.map +1 -1
- package/build/src/start/resolveOptions.js +48 -40
- package/build/src/start/resolveOptions.js.map +1 -1
- package/build/src/start/server/AsyncNgrok.js +55 -51
- package/build/src/start/server/AsyncNgrok.js.map +1 -1
- package/build/src/start/server/AsyncWsTunnel.js +40 -36
- package/build/src/start/server/AsyncWsTunnel.js.map +1 -1
- package/build/src/start/server/BundlerDevServer.js +81 -79
- package/build/src/start/server/BundlerDevServer.js.map +1 -1
- package/build/src/start/server/DevServerManager.js +42 -38
- package/build/src/start/server/DevServerManager.js.map +1 -1
- package/build/src/start/server/DevToolsPluginManager.js +18 -14
- package/build/src/start/server/DevToolsPluginManager.js.map +1 -1
- package/build/src/start/server/DevelopmentSession.js +18 -14
- package/build/src/start/server/DevelopmentSession.js.map +1 -1
- package/build/src/start/server/ReactDevToolsProxy.js +16 -10
- package/build/src/start/server/ReactDevToolsProxy.js.map +1 -1
- package/build/src/start/server/UrlCreator.js +36 -33
- package/build/src/start/server/UrlCreator.js.map +1 -1
- package/build/src/start/server/getStaticRenderFunctions.js +29 -21
- package/build/src/start/server/getStaticRenderFunctions.js.map +1 -1
- package/build/src/start/server/metro/DevToolsPluginWebsocketEndpoint.js +6 -4
- package/build/src/start/server/metro/DevToolsPluginWebsocketEndpoint.js.map +1 -1
- package/build/src/start/server/metro/MetroBundlerDevServer.js +269 -271
- package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -1
- package/build/src/start/server/metro/MetroTerminalReporter.js +63 -56
- package/build/src/start/server/metro/MetroTerminalReporter.js.map +1 -1
- package/build/src/start/server/metro/TerminalReporter.js +39 -33
- package/build/src/start/server/metro/TerminalReporter.js.map +1 -1
- package/build/src/start/server/metro/TerminalReporter.types.js.map +1 -1
- package/build/src/start/server/metro/createExpoMetroResolver.js +46 -40
- package/build/src/start/server/metro/createExpoMetroResolver.js.map +1 -1
- package/build/src/start/server/metro/createJResolver.js +32 -28
- package/build/src/start/server/metro/createJResolver.js.map +1 -1
- package/build/src/start/server/metro/createServerComponentsMiddleware.js +96 -92
- package/build/src/start/server/metro/createServerComponentsMiddleware.js.map +1 -1
- package/build/src/start/server/metro/createServerRouteMiddleware.js +32 -30
- package/build/src/start/server/metro/createServerRouteMiddleware.js.map +1 -1
- package/build/src/start/server/metro/debugging/AtlasPrerequisite.js +13 -11
- package/build/src/start/server/metro/debugging/AtlasPrerequisite.js.map +1 -1
- package/build/src/start/server/metro/debugging/MessageHandler.js +3 -1
- package/build/src/start/server/metro/debugging/MessageHandler.js.map +1 -1
- package/build/src/start/server/metro/debugging/attachAtlas.js +26 -22
- package/build/src/start/server/metro/debugging/attachAtlas.js.map +1 -1
- package/build/src/start/server/metro/debugging/createDebugMiddleware.js +19 -17
- package/build/src/start/server/metro/debugging/createDebugMiddleware.js.map +1 -1
- package/build/src/start/server/metro/debugging/createHandlersFactory.js +25 -31
- package/build/src/start/server/metro/debugging/createHandlersFactory.js.map +1 -1
- package/build/src/start/server/metro/debugging/getDebuggerType.js +6 -4
- package/build/src/start/server/metro/debugging/getDebuggerType.js.map +1 -1
- package/build/src/start/server/metro/debugging/messageHandlers/NetworkResponse.js +14 -8
- package/build/src/start/server/metro/debugging/messageHandlers/NetworkResponse.js.map +1 -1
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerGetPossibleBreakpoints.js +7 -5
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerGetPossibleBreakpoints.js.map +1 -1
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerSetBreakpointByUrl.js +8 -6
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerSetBreakpointByUrl.js.map +1 -1
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeCallFunctionOn.js +7 -5
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeCallFunctionOn.js.map +1 -1
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeEvaluate.js +14 -12
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeEvaluate.js.map +1 -1
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeGetProperties.js +14 -10
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeGetProperties.js.map +1 -1
- package/build/src/start/server/metro/debugging/pageIsSupported.js +6 -4
- package/build/src/start/server/metro/debugging/pageIsSupported.js.map +1 -1
- package/build/src/start/server/metro/debugging/types.js.map +1 -1
- package/build/src/start/server/metro/dev-server/createEventSocket.js +18 -16
- package/build/src/start/server/metro/dev-server/createEventSocket.js.map +1 -1
- package/build/src/start/server/metro/dev-server/createMessageSocket.js +23 -21
- package/build/src/start/server/metro/dev-server/createMessageSocket.js.map +1 -1
- package/build/src/start/server/metro/dev-server/createMetroMiddleware.js +23 -21
- package/build/src/start/server/metro/dev-server/createMetroMiddleware.js.map +1 -1
- package/build/src/start/server/metro/dev-server/utils/createSocketBroadcaster.js +4 -2
- package/build/src/start/server/metro/dev-server/utils/createSocketBroadcaster.js.map +1 -1
- package/build/src/start/server/metro/dev-server/utils/createSocketMap.js +4 -2
- package/build/src/start/server/metro/dev-server/utils/createSocketMap.js.map +1 -1
- package/build/src/start/server/metro/dev-server/utils/socketMessages.js +8 -4
- package/build/src/start/server/metro/dev-server/utils/socketMessages.js.map +1 -1
- package/build/src/start/server/metro/externals.js +33 -25
- package/build/src/start/server/metro/externals.js.map +1 -1
- package/build/src/start/server/metro/fetchRouterManifest.js +16 -12
- package/build/src/start/server/metro/fetchRouterManifest.js.map +1 -1
- package/build/src/start/server/metro/formatFileCandidates.js +11 -9
- package/build/src/start/server/metro/formatFileCandidates.js.map +1 -1
- package/build/src/start/server/metro/getCssModulesFromBundler.js +22 -18
- package/build/src/start/server/metro/getCssModulesFromBundler.js.map +1 -1
- package/build/src/start/server/metro/instantiateMetro.js +85 -79
- package/build/src/start/server/metro/instantiateMetro.js.map +1 -1
- package/build/src/start/server/metro/log-box/LogBoxLog.js +40 -36
- package/build/src/start/server/metro/log-box/LogBoxLog.js.map +1 -1
- package/build/src/start/server/metro/log-box/LogBoxSymbolication.js +20 -14
- package/build/src/start/server/metro/log-box/LogBoxSymbolication.js.map +1 -1
- package/build/src/start/server/metro/log-box/formatProjectFilePath.js +10 -6
- package/build/src/start/server/metro/log-box/formatProjectFilePath.js.map +1 -1
- package/build/src/start/server/metro/metroErrorInterface.js +88 -78
- package/build/src/start/server/metro/metroErrorInterface.js.map +1 -1
- package/build/src/start/server/metro/metroErrors.js +8 -4
- package/build/src/start/server/metro/metroErrors.js.map +1 -1
- package/build/src/start/server/metro/metroPrivateServer.js +9 -7
- package/build/src/start/server/metro/metroPrivateServer.js.map +1 -1
- package/build/src/start/server/metro/metroVirtualModules.js +10 -8
- package/build/src/start/server/metro/metroVirtualModules.js.map +1 -1
- package/build/src/start/server/metro/metroWatchTypeScriptFiles.js +24 -22
- package/build/src/start/server/metro/metroWatchTypeScriptFiles.js.map +1 -1
- package/build/src/start/server/metro/router.js +48 -32
- package/build/src/start/server/metro/router.js.map +1 -1
- package/build/src/start/server/metro/runServer-fork.js +24 -22
- package/build/src/start/server/metro/runServer-fork.js.map +1 -1
- package/build/src/start/server/metro/serializeHtml.js +24 -22
- package/build/src/start/server/metro/serializeHtml.js.map +1 -1
- package/build/src/start/server/metro/symbolicate.js.map +1 -1
- package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js +35 -29
- package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js.map +1 -1
- package/build/src/start/server/metro/withMetroMultiPlatform.js +149 -139
- package/build/src/start/server/metro/withMetroMultiPlatform.js.map +1 -1
- package/build/src/start/server/metro/withMetroResolvers.js +49 -39
- package/build/src/start/server/metro/withMetroResolvers.js.map +1 -1
- package/build/src/start/server/middleware/ContextModuleSourceMapsMiddleware.js +8 -6
- package/build/src/start/server/middleware/ContextModuleSourceMapsMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/CorsMiddleware.js +17 -15
- package/build/src/start/server/middleware/CorsMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/CreateFileMiddleware.js +32 -31
- package/build/src/start/server/middleware/CreateFileMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/DevToolsPluginMiddleware.js +22 -19
- package/build/src/start/server/middleware/DevToolsPluginMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/DomComponentsMiddleware.js +33 -27
- package/build/src/start/server/middleware/DomComponentsMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js +64 -60
- package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ExpoMiddleware.js +15 -9
- package/build/src/start/server/middleware/ExpoMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/FaviconMiddleware.js +15 -14
- package/build/src/start/server/middleware/FaviconMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/HistoryFallbackMiddleware.js +4 -2
- package/build/src/start/server/middleware/HistoryFallbackMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/InterstitialPageMiddleware.js +34 -31
- package/build/src/start/server/middleware/InterstitialPageMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ManifestMiddleware.js +64 -56
- package/build/src/start/server/middleware/ManifestMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ReactDevToolsPageMiddleware.js +23 -19
- package/build/src/start/server/middleware/ReactDevToolsPageMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js +20 -19
- package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ServeStaticMiddleware.js +11 -9
- package/build/src/start/server/middleware/ServeStaticMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/createBuiltinAPIRequestHandler.js +17 -11
- package/build/src/start/server/middleware/createBuiltinAPIRequestHandler.js.map +1 -1
- package/build/src/start/server/middleware/inspector/CdpClient.js +12 -10
- package/build/src/start/server/middleware/inspector/CdpClient.js.map +1 -1
- package/build/src/start/server/middleware/inspector/JsInspector.js +35 -27
- package/build/src/start/server/middleware/inspector/JsInspector.js.map +1 -1
- package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js +21 -19
- package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/inspector/middlwareMutations.js +6 -2
- package/build/src/start/server/middleware/inspector/middlwareMutations.js.map +1 -1
- package/build/src/start/server/middleware/metroOptions.js +120 -96
- package/build/src/start/server/middleware/metroOptions.js.map +1 -1
- package/build/src/start/server/middleware/mutations.js +7 -3
- package/build/src/start/server/middleware/mutations.js.map +1 -1
- package/build/src/start/server/middleware/resolveAssets.js +26 -18
- package/build/src/start/server/middleware/resolveAssets.js.map +1 -1
- package/build/src/start/server/middleware/resolvePlatform.js +23 -15
- package/build/src/start/server/middleware/resolvePlatform.js.map +1 -1
- package/build/src/start/server/middleware/resolveRuntimeVersionWithExpoUpdatesAsync.js +11 -9
- package/build/src/start/server/middleware/resolveRuntimeVersionWithExpoUpdatesAsync.js.map +1 -1
- package/build/src/start/server/middleware/server.types.js.map +1 -1
- package/build/src/start/server/openPlatforms.js +10 -8
- package/build/src/start/server/openPlatforms.js.map +1 -1
- package/build/src/start/server/platformBundlers.js +13 -11
- package/build/src/start/server/platformBundlers.js.map +1 -1
- package/build/src/start/server/serverLogLikeMetro.js +58 -50
- package/build/src/start/server/serverLogLikeMetro.js.map +1 -1
- package/build/src/start/server/type-generation/expo-env.js +11 -7
- package/build/src/start/server/type-generation/expo-env.js.map +1 -1
- package/build/src/start/server/type-generation/routes.js +76 -54
- package/build/src/start/server/type-generation/routes.js.map +1 -1
- package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js +21 -19
- package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js.map +1 -1
- package/build/src/start/server/type-generation/tsconfig.js +36 -28
- package/build/src/start/server/type-generation/tsconfig.js.map +1 -1
- package/build/src/start/server/webTemplate.js +28 -24
- package/build/src/start/server/webTemplate.js.map +1 -1
- package/build/src/start/server/webpack/WebpackBundlerDevServer.js +52 -46
- package/build/src/start/server/webpack/WebpackBundlerDevServer.js.map +1 -1
- package/build/src/start/server/webpack/compile.js +15 -11
- package/build/src/start/server/webpack/compile.js.map +1 -1
- package/build/src/start/server/webpack/formatWebpackMessages.js +28 -26
- package/build/src/start/server/webpack/formatWebpackMessages.js.map +1 -1
- package/build/src/start/server/webpack/resolveFromProject.js +18 -12
- package/build/src/start/server/webpack/resolveFromProject.js.map +1 -1
- package/build/src/start/server/webpack/tls.js +18 -12
- package/build/src/start/server/webpack/tls.js.map +1 -1
- package/build/src/start/startAsync.js +31 -27
- package/build/src/start/startAsync.js.map +1 -1
- package/build/src/utils/FileNotifier.js +20 -17
- package/build/src/utils/FileNotifier.js.map +1 -1
- package/build/src/utils/ansi.js +7 -5
- package/build/src/utils/ansi.js.map +1 -1
- package/build/src/utils/args.js +24 -14
- package/build/src/utils/args.js.map +1 -1
- package/build/src/utils/array.js +18 -6
- package/build/src/utils/array.js.map +1 -1
- package/build/src/utils/cocoapods.js +54 -46
- package/build/src/utils/cocoapods.js.map +1 -1
- package/build/src/utils/codesigning.js +78 -68
- package/build/src/utils/codesigning.js.map +1 -1
- package/build/src/utils/createFileTransform.js +16 -12
- package/build/src/utils/createFileTransform.js.map +1 -1
- package/build/src/utils/createTempPath.js +17 -13
- package/build/src/utils/createTempPath.js.map +1 -1
- package/build/src/utils/delay.js +12 -6
- package/build/src/utils/delay.js.map +1 -1
- package/build/src/utils/dir.js +46 -28
- package/build/src/utils/dir.js.map +1 -1
- package/build/src/utils/downloadAppAsync.js +10 -8
- package/build/src/utils/downloadAppAsync.js.map +1 -1
- package/build/src/utils/downloadExpoGoAsync.js +25 -21
- package/build/src/utils/downloadExpoGoAsync.js.map +1 -1
- package/build/src/utils/editor.js +41 -35
- package/build/src/utils/editor.js.map +1 -1
- package/build/src/utils/env.js +63 -59
- package/build/src/utils/env.js.map +1 -1
- package/build/src/utils/errors.js +37 -30
- package/build/src/utils/errors.js.map +1 -1
- package/build/src/utils/exit.js +35 -31
- package/build/src/utils/exit.js.map +1 -1
- package/build/src/utils/expoUpdatesCli.js +32 -22
- package/build/src/utils/expoUpdatesCli.js.map +1 -1
- package/build/src/utils/fetch.js +8 -4
- package/build/src/utils/fetch.js.map +1 -1
- package/build/src/utils/filePath.js +10 -6
- package/build/src/utils/filePath.js.map +1 -1
- package/build/src/utils/findUp.js +13 -9
- package/build/src/utils/findUp.js.map +1 -1
- package/build/src/utils/fn.js +6 -2
- package/build/src/utils/fn.js.map +1 -1
- package/build/src/utils/getOrPromptApplicationId.js +32 -26
- package/build/src/utils/getOrPromptApplicationId.js.map +1 -1
- package/build/src/utils/getRunningProcess.js +29 -21
- package/build/src/utils/getRunningProcess.js.map +1 -1
- package/build/src/utils/git.js +26 -20
- package/build/src/utils/git.js.map +1 -1
- package/build/src/utils/glob.js +8 -4
- package/build/src/utils/glob.js.map +1 -1
- package/build/src/utils/interactive.js +3 -1
- package/build/src/utils/interactive.js.map +1 -1
- package/build/src/utils/ip.js +21 -19
- package/build/src/utils/ip.js.map +1 -1
- package/build/src/utils/isModuleSymlinked.js +11 -9
- package/build/src/utils/isModuleSymlinked.js.map +1 -1
- package/build/src/utils/jsonSchemaDeref.js +20 -18
- package/build/src/utils/jsonSchemaDeref.js.map +1 -1
- package/build/src/utils/link.js +17 -13
- package/build/src/utils/link.js.map +1 -1
- package/build/src/utils/mergeGitIgnorePaths.js +46 -28
- package/build/src/utils/mergeGitIgnorePaths.js.map +1 -1
- package/build/src/utils/modifyConfigAsync.js +16 -10
- package/build/src/utils/modifyConfigAsync.js.map +1 -1
- package/build/src/utils/modifyConfigPlugins.js +10 -6
- package/build/src/utils/modifyConfigPlugins.js.map +1 -1
- package/build/src/utils/nodeEnv.js +12 -6
- package/build/src/utils/nodeEnv.js.map +1 -1
- package/build/src/utils/nodeModules.js +10 -8
- package/build/src/utils/nodeModules.js.map +1 -1
- package/build/src/utils/npm.js +50 -36
- package/build/src/utils/npm.js.map +1 -1
- package/build/src/utils/obj.js +11 -5
- package/build/src/utils/obj.js.map +1 -1
- package/build/src/utils/open.js +10 -8
- package/build/src/utils/open.js.map +1 -1
- package/build/src/utils/ora.js +13 -7
- package/build/src/utils/ora.js.map +1 -1
- package/build/src/utils/plist.js +21 -15
- package/build/src/utils/plist.js.map +1 -1
- package/build/src/utils/port.js +43 -33
- package/build/src/utils/port.js.map +1 -1
- package/build/src/utils/profile.js +11 -7
- package/build/src/utils/profile.js.map +1 -1
- package/build/src/utils/progress.js +11 -5
- package/build/src/utils/progress.js.map +1 -1
- package/build/src/utils/prompts.js +47 -29
- package/build/src/utils/prompts.js.map +1 -1
- package/build/src/utils/resolveArgs.js +36 -24
- package/build/src/utils/resolveArgs.js.map +1 -1
- package/build/src/utils/scheme.js +40 -32
- package/build/src/utils/scheme.js.map +1 -1
- package/build/src/utils/stream.js +5 -3
- package/build/src/utils/stream.js.map +1 -1
- package/build/src/utils/strings.js +6 -4
- package/build/src/utils/strings.js.map +1 -1
- package/build/src/utils/tar.js +19 -15
- package/build/src/utils/tar.js.map +1 -1
- package/build/src/utils/telemetry/Telemetry.js +29 -27
- package/build/src/utils/telemetry/Telemetry.js.map +1 -1
- package/build/src/utils/telemetry/clients/FetchClient.js +15 -13
- package/build/src/utils/telemetry/clients/FetchClient.js.map +1 -1
- package/build/src/utils/telemetry/clients/FetchDetachedClient.js +26 -22
- package/build/src/utils/telemetry/clients/FetchDetachedClient.js.map +1 -1
- package/build/src/utils/telemetry/clients/RudderClient.js +10 -8
- package/build/src/utils/telemetry/clients/RudderClient.js.map +1 -1
- package/build/src/utils/telemetry/clients/RudderDetachedClient.js +26 -22
- package/build/src/utils/telemetry/clients/RudderDetachedClient.js.map +1 -1
- package/build/src/utils/telemetry/clients/flushFetchDetached.js +10 -10
- package/build/src/utils/telemetry/clients/flushFetchDetached.js.map +1 -1
- package/build/src/utils/telemetry/clients/flushRudderDetached.js +10 -10
- package/build/src/utils/telemetry/clients/flushRudderDetached.js.map +1 -1
- package/build/src/utils/telemetry/events.js +4 -2
- package/build/src/utils/telemetry/events.js.map +1 -1
- package/build/src/utils/telemetry/flushDetached.js.map +1 -1
- package/build/src/utils/telemetry/index.js +25 -29
- package/build/src/utils/telemetry/index.js.map +1 -1
- package/build/src/utils/telemetry/types.js.map +1 -1
- package/build/src/utils/telemetry/utils/constants.js +8 -4
- package/build/src/utils/telemetry/utils/constants.js.map +1 -1
- package/build/src/utils/telemetry/utils/context.js +18 -14
- package/build/src/utils/telemetry/utils/context.js.map +1 -1
- package/build/src/utils/template.js +6 -4
- package/build/src/utils/template.js.map +1 -1
- package/build/src/utils/terminal.js +4 -2
- package/build/src/utils/terminal.js.map +1 -1
- package/build/src/utils/tsconfig/evaluateTsConfig.js +21 -17
- package/build/src/utils/tsconfig/evaluateTsConfig.js.map +1 -1
- package/build/src/utils/tsconfig/loadTsConfigPaths.js +18 -14
- package/build/src/utils/tsconfig/loadTsConfigPaths.js.map +1 -1
- package/build/src/utils/tsconfig/matchTsConfigPathAlias.js +7 -5
- package/build/src/utils/tsconfig/matchTsConfigPathAlias.js.map +1 -1
- package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js +14 -12
- package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js.map +1 -1
- package/build/src/utils/url.js +23 -13
- package/build/src/utils/url.js.map +1 -1
- package/build/src/utils/validateApplicationId.js +108 -86
- package/build/src/utils/validateApplicationId.js.map +1 -1
- package/build/src/utils/variadic.js +22 -16
- package/build/src/utils/variadic.js.map +1 -1
- package/build/src/whoami/index.js +11 -7
- package/build/src/whoami/index.js.map +1 -1
- package/build/src/whoami/whoamiAsync.js +11 -7
- package/build/src/whoami/whoamiAsync.js.map +1 -1
- package/package.json +3 -3
|
@@ -9,30 +9,34 @@ function _export(target, all) {
|
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
11
|
_export(exports, {
|
|
12
|
-
UserSecondFactorDeviceMethod: ()
|
|
13
|
-
|
|
12
|
+
UserSecondFactorDeviceMethod: function() {
|
|
13
|
+
return UserSecondFactorDeviceMethod;
|
|
14
|
+
},
|
|
15
|
+
retryUsernamePasswordAuthWithOTPAsync: function() {
|
|
16
|
+
return retryUsernamePasswordAuthWithOTPAsync;
|
|
17
|
+
}
|
|
14
18
|
});
|
|
15
19
|
function _assert() {
|
|
16
|
-
const data = /*#__PURE__*/
|
|
20
|
+
const data = /*#__PURE__*/ _interop_require_default(require("assert"));
|
|
17
21
|
_assert = function() {
|
|
18
22
|
return data;
|
|
19
23
|
};
|
|
20
24
|
return data;
|
|
21
25
|
}
|
|
22
26
|
function _chalk() {
|
|
23
|
-
const data = /*#__PURE__*/
|
|
27
|
+
const data = /*#__PURE__*/ _interop_require_default(require("chalk"));
|
|
24
28
|
_chalk = function() {
|
|
25
29
|
return data;
|
|
26
30
|
};
|
|
27
31
|
return data;
|
|
28
32
|
}
|
|
29
33
|
const _user = require("./user");
|
|
30
|
-
const _log = /*#__PURE__*/
|
|
34
|
+
const _log = /*#__PURE__*/ _interop_require_wildcard(require("../../log"));
|
|
31
35
|
const _errors = require("../../utils/errors");
|
|
32
36
|
const _link = require("../../utils/link");
|
|
33
37
|
const _prompts = require("../../utils/prompts");
|
|
34
38
|
const _client = require("../rest/client");
|
|
35
|
-
function
|
|
39
|
+
function _interop_require_default(obj) {
|
|
36
40
|
return obj && obj.__esModule ? obj : {
|
|
37
41
|
default: obj
|
|
38
42
|
};
|
|
@@ -45,7 +49,7 @@ function _getRequireWildcardCache(nodeInterop) {
|
|
|
45
49
|
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
46
50
|
})(nodeInterop);
|
|
47
51
|
}
|
|
48
|
-
function
|
|
52
|
+
function _interop_require_wildcard(obj, nodeInterop) {
|
|
49
53
|
if (!nodeInterop && obj && obj.__esModule) {
|
|
50
54
|
return obj;
|
|
51
55
|
}
|
|
@@ -58,7 +62,9 @@ function _interopRequireWildcard(obj, nodeInterop) {
|
|
|
58
62
|
if (cache && cache.has(obj)) {
|
|
59
63
|
return cache.get(obj);
|
|
60
64
|
}
|
|
61
|
-
var newObj = {
|
|
65
|
+
var newObj = {
|
|
66
|
+
__proto__: null
|
|
67
|
+
};
|
|
62
68
|
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
63
69
|
for(var key in obj){
|
|
64
70
|
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
@@ -76,19 +82,19 @@ function _interopRequireWildcard(obj, nodeInterop) {
|
|
|
76
82
|
}
|
|
77
83
|
return newObj;
|
|
78
84
|
}
|
|
79
|
-
var UserSecondFactorDeviceMethod
|
|
80
|
-
(function(UserSecondFactorDeviceMethod) {
|
|
85
|
+
var UserSecondFactorDeviceMethod = /*#__PURE__*/ function(UserSecondFactorDeviceMethod) {
|
|
81
86
|
UserSecondFactorDeviceMethod["AUTHENTICATOR"] = "authenticator";
|
|
82
87
|
UserSecondFactorDeviceMethod["SMS"] = "sms";
|
|
83
|
-
|
|
84
|
-
|
|
88
|
+
return UserSecondFactorDeviceMethod;
|
|
89
|
+
}({});
|
|
90
|
+
const nonInteractiveHelp = `Use the EXPO_TOKEN environment variable to authenticate in CI (${(0, _link.learnMore)('https://docs.expo.dev/accounts/programmatic-access/')})`;
|
|
85
91
|
/**
|
|
86
92
|
* Prompt for an OTP with the option to cancel the question by answering empty (pressing return key).
|
|
87
93
|
*/ async function promptForOTPAsync(cancelBehavior) {
|
|
88
|
-
const enterMessage = cancelBehavior ===
|
|
89
|
-
const { otp
|
|
90
|
-
type:
|
|
91
|
-
name:
|
|
94
|
+
const enterMessage = cancelBehavior === 'cancel' ? (0, _chalk().default)`press {bold Enter} to cancel` : (0, _chalk().default)`press {bold Enter} for more options`;
|
|
95
|
+
const { otp } = await (0, _prompts.promptAsync)({
|
|
96
|
+
type: 'text',
|
|
97
|
+
name: 'otp',
|
|
92
98
|
message: `One-time password or backup code (${enterMessage}):`
|
|
93
99
|
}, {
|
|
94
100
|
nonInteractiveHelp
|
|
@@ -101,7 +107,7 @@ const nonInteractiveHelp = `Use the EXPO_TOKEN environment variable to authentic
|
|
|
101
107
|
*/ async function promptForBackupOTPAsync(username, password, secondFactorDevices) {
|
|
102
108
|
const nonPrimarySecondFactorDevices = secondFactorDevices.filter((device)=>!device.is_primary);
|
|
103
109
|
if (nonPrimarySecondFactorDevices.length === 0) {
|
|
104
|
-
throw new _errors.CommandError(
|
|
110
|
+
throw new _errors.CommandError('No other second-factor devices set up. Ensure you have set up and certified a backup device.');
|
|
105
111
|
}
|
|
106
112
|
const hasAuthenticatorSecondFactorDevice = nonPrimarySecondFactorDevices.find((device)=>device.method === "authenticator");
|
|
107
113
|
const smsNonPrimarySecondFactorDevices = nonPrimarySecondFactorDevices.filter((device)=>device.method === "sms");
|
|
@@ -113,46 +119,46 @@ const nonInteractiveHelp = `Use the EXPO_TOKEN environment variable to authentic
|
|
|
113
119
|
}));
|
|
114
120
|
if (hasAuthenticatorSecondFactorDevice) {
|
|
115
121
|
deviceChoices.push({
|
|
116
|
-
title:
|
|
122
|
+
title: 'Authenticator',
|
|
117
123
|
value: authenticatorChoiceSentinel
|
|
118
124
|
});
|
|
119
125
|
}
|
|
120
126
|
deviceChoices.push({
|
|
121
|
-
title:
|
|
127
|
+
title: 'Cancel',
|
|
122
128
|
value: cancelChoiceSentinel
|
|
123
129
|
});
|
|
124
|
-
const selectedValue = await (0, _prompts.selectAsync)(
|
|
130
|
+
const selectedValue = await (0, _prompts.selectAsync)('Select a second-factor device:', deviceChoices, {
|
|
125
131
|
nonInteractiveHelp
|
|
126
132
|
});
|
|
127
133
|
if (selectedValue === cancelChoiceSentinel) {
|
|
128
134
|
return null;
|
|
129
135
|
} else if (selectedValue === authenticatorChoiceSentinel) {
|
|
130
|
-
return await promptForOTPAsync(
|
|
136
|
+
return await promptForOTPAsync('cancel');
|
|
131
137
|
}
|
|
132
138
|
const device = smsNonPrimarySecondFactorDevices[selectedValue];
|
|
133
|
-
await (0, _client.fetchAsync)(
|
|
134
|
-
method:
|
|
139
|
+
await (0, _client.fetchAsync)('auth/send-sms-otp', {
|
|
140
|
+
method: 'POST',
|
|
135
141
|
body: JSON.stringify({
|
|
136
142
|
username,
|
|
137
143
|
password,
|
|
138
144
|
secondFactorDeviceID: device.id
|
|
139
145
|
})
|
|
140
146
|
});
|
|
141
|
-
return await promptForOTPAsync(
|
|
147
|
+
return await promptForOTPAsync('cancel');
|
|
142
148
|
}
|
|
143
149
|
async function retryUsernamePasswordAuthWithOTPAsync(username, password, metadata) {
|
|
144
|
-
const { secondFactorDevices
|
|
150
|
+
const { secondFactorDevices, smsAutomaticallySent } = metadata;
|
|
145
151
|
(0, _assert().default)(secondFactorDevices !== undefined && smsAutomaticallySent !== undefined, `Malformed OTP error metadata: ${metadata}`);
|
|
146
152
|
const primaryDevice = secondFactorDevices.find((device)=>device.is_primary);
|
|
147
153
|
let otp = null;
|
|
148
154
|
if (smsAutomaticallySent) {
|
|
149
|
-
(0, _assert().default)(primaryDevice,
|
|
155
|
+
(0, _assert().default)(primaryDevice, 'OTP should only automatically be sent when there is a primary device');
|
|
150
156
|
_log.log(`One-time password was sent to the phone number ending in ${primaryDevice.sms_phone_number}.`);
|
|
151
|
-
otp = await promptForOTPAsync(
|
|
157
|
+
otp = await promptForOTPAsync('menu');
|
|
152
158
|
}
|
|
153
159
|
if ((primaryDevice == null ? void 0 : primaryDevice.method) === "authenticator") {
|
|
154
|
-
_log.log(
|
|
155
|
-
otp = await promptForOTPAsync(
|
|
160
|
+
_log.log('One-time password from authenticator required.');
|
|
161
|
+
otp = await promptForOTPAsync('menu');
|
|
156
162
|
}
|
|
157
163
|
// user bailed on case 1 or 2, wants to move to case 3
|
|
158
164
|
if (!otp) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/api/user/otp.ts"],"sourcesContent":["import assert from 'assert';\nimport chalk from 'chalk';\n\nimport { loginAsync } from './user';\nimport * as Log from '../../log';\nimport { AbortCommandError, CommandError } from '../../utils/errors';\nimport { learnMore } from '../../utils/link';\nimport { promptAsync, selectAsync } from '../../utils/prompts';\nimport { fetchAsync } from '../rest/client';\n\nexport enum UserSecondFactorDeviceMethod {\n AUTHENTICATOR = 'authenticator',\n SMS = 'sms',\n}\n\n/** Device properties for 2FA */\nexport type SecondFactorDevice = {\n id: string;\n method: UserSecondFactorDeviceMethod;\n sms_phone_number: string | null;\n is_primary: boolean;\n};\n\nconst nonInteractiveHelp = `Use the EXPO_TOKEN environment variable to authenticate in CI (${learnMore(\n 'https://docs.expo.dev/accounts/programmatic-access/'\n)})`;\n\n/**\n * Prompt for an OTP with the option to cancel the question by answering empty (pressing return key).\n */\nasync function promptForOTPAsync(cancelBehavior: 'cancel' | 'menu'): Promise<string | null> {\n const enterMessage =\n cancelBehavior === 'cancel'\n ? chalk`press {bold Enter} to cancel`\n : chalk`press {bold Enter} for more options`;\n const { otp } = await promptAsync(\n {\n type: 'text',\n name: 'otp',\n message: `One-time password or backup code (${enterMessage}):`,\n },\n { nonInteractiveHelp }\n );\n return otp || null;\n}\n\n/**\n * Prompt for user to choose a backup OTP method. If selected method is SMS, a request\n * for a new OTP will be sent to that method. Then, prompt for the OTP, and retry the user login.\n */\nasync function promptForBackupOTPAsync(\n username: string,\n password: string,\n secondFactorDevices: SecondFactorDevice[]\n): Promise<string | null> {\n const nonPrimarySecondFactorDevices = secondFactorDevices.filter((device) => !device.is_primary);\n\n if (nonPrimarySecondFactorDevices.length === 0) {\n throw new CommandError(\n 'No other second-factor devices set up. Ensure you have set up and certified a backup device.'\n );\n }\n\n const hasAuthenticatorSecondFactorDevice = nonPrimarySecondFactorDevices.find(\n (device) => device.method === UserSecondFactorDeviceMethod.AUTHENTICATOR\n );\n\n const smsNonPrimarySecondFactorDevices = nonPrimarySecondFactorDevices.filter(\n (device) => device.method === UserSecondFactorDeviceMethod.SMS\n );\n\n const authenticatorChoiceSentinel = -1;\n const cancelChoiceSentinel = -2;\n\n const deviceChoices = smsNonPrimarySecondFactorDevices.map((device, idx) => ({\n title: device.sms_phone_number!,\n value: idx,\n }));\n\n if (hasAuthenticatorSecondFactorDevice) {\n deviceChoices.push({\n title: 'Authenticator',\n value: authenticatorChoiceSentinel,\n });\n }\n\n deviceChoices.push({\n title: 'Cancel',\n value: cancelChoiceSentinel,\n });\n\n const selectedValue = await selectAsync('Select a second-factor device:', deviceChoices, {\n nonInteractiveHelp,\n });\n if (selectedValue === cancelChoiceSentinel) {\n return null;\n } else if (selectedValue === authenticatorChoiceSentinel) {\n return await promptForOTPAsync('cancel');\n }\n\n const device = smsNonPrimarySecondFactorDevices[selectedValue];\n\n await fetchAsync('auth/send-sms-otp', {\n method: 'POST',\n body: JSON.stringify({\n username,\n password,\n secondFactorDeviceID: device.id,\n }),\n });\n\n return await promptForOTPAsync('cancel');\n}\n\n/**\n * Handle the special case error indicating that a second-factor is required for\n * authentication.\n *\n * There are three cases we need to handle:\n * 1. User's primary second-factor device was SMS, OTP was automatically sent by the server to that\n * device already. In this case we should just prompt for the SMS OTP (or backup code), which the\n * user should be receiving shortly. We should give the user a way to cancel and the prompt and move\n * to case 3 below.\n * 2. User's primary second-factor device is authenticator. In this case we should prompt for authenticator\n * OTP (or backup code) and also give the user a way to cancel and move to case 3 below.\n * 3. User doesn't have a primary device or doesn't have access to their primary device. In this case\n * we should show a picker of the SMS devices that they can have an OTP code sent to, and when\n * the user picks one we show a prompt() for the sent OTP.\n */\nexport async function retryUsernamePasswordAuthWithOTPAsync(\n username: string,\n password: string,\n metadata: {\n secondFactorDevices?: SecondFactorDevice[];\n smsAutomaticallySent?: boolean;\n }\n): Promise<void> {\n const { secondFactorDevices, smsAutomaticallySent } = metadata;\n assert(\n secondFactorDevices !== undefined && smsAutomaticallySent !== undefined,\n `Malformed OTP error metadata: ${metadata}`\n );\n\n const primaryDevice = secondFactorDevices.find((device) => device.is_primary);\n let otp: string | null = null;\n\n if (smsAutomaticallySent) {\n assert(primaryDevice, 'OTP should only automatically be sent when there is a primary device');\n Log.log(\n `One-time password was sent to the phone number ending in ${primaryDevice.sms_phone_number}.`\n );\n otp = await promptForOTPAsync('menu');\n }\n\n if (primaryDevice?.method === UserSecondFactorDeviceMethod.AUTHENTICATOR) {\n Log.log('One-time password from authenticator required.');\n otp = await promptForOTPAsync('menu');\n }\n\n // user bailed on case 1 or 2, wants to move to case 3\n if (!otp) {\n otp = await promptForBackupOTPAsync(username, password, secondFactorDevices);\n }\n\n if (!otp) {\n throw new AbortCommandError();\n }\n\n await loginAsync({\n username,\n password,\n otp,\n });\n}\n"],"names":["retryUsernamePasswordAuthWithOTPAsync","UserSecondFactorDeviceMethod","AUTHENTICATOR","SMS","nonInteractiveHelp","learnMore","promptForOTPAsync","cancelBehavior","enterMessage","chalk","otp","promptAsync","type","name","message","promptForBackupOTPAsync","username","password","secondFactorDevices","nonPrimarySecondFactorDevices","filter","device","is_primary","length","CommandError","hasAuthenticatorSecondFactorDevice","find","method","smsNonPrimarySecondFactorDevices","authenticatorChoiceSentinel","cancelChoiceSentinel","deviceChoices","map","idx","title","sms_phone_number","value","push","selectedValue","selectAsync","fetchAsync","body","JSON","stringify","secondFactorDeviceID","id","metadata","smsAutomaticallySent","assert","undefined","primaryDevice","Log","log","AbortCommandError","loginAsync"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/api/user/otp.ts"],"sourcesContent":["import assert from 'assert';\nimport chalk from 'chalk';\n\nimport { loginAsync } from './user';\nimport * as Log from '../../log';\nimport { AbortCommandError, CommandError } from '../../utils/errors';\nimport { learnMore } from '../../utils/link';\nimport { promptAsync, selectAsync } from '../../utils/prompts';\nimport { fetchAsync } from '../rest/client';\n\nexport enum UserSecondFactorDeviceMethod {\n AUTHENTICATOR = 'authenticator',\n SMS = 'sms',\n}\n\n/** Device properties for 2FA */\nexport type SecondFactorDevice = {\n id: string;\n method: UserSecondFactorDeviceMethod;\n sms_phone_number: string | null;\n is_primary: boolean;\n};\n\nconst nonInteractiveHelp = `Use the EXPO_TOKEN environment variable to authenticate in CI (${learnMore(\n 'https://docs.expo.dev/accounts/programmatic-access/'\n)})`;\n\n/**\n * Prompt for an OTP with the option to cancel the question by answering empty (pressing return key).\n */\nasync function promptForOTPAsync(cancelBehavior: 'cancel' | 'menu'): Promise<string | null> {\n const enterMessage =\n cancelBehavior === 'cancel'\n ? chalk`press {bold Enter} to cancel`\n : chalk`press {bold Enter} for more options`;\n const { otp } = await promptAsync(\n {\n type: 'text',\n name: 'otp',\n message: `One-time password or backup code (${enterMessage}):`,\n },\n { nonInteractiveHelp }\n );\n return otp || null;\n}\n\n/**\n * Prompt for user to choose a backup OTP method. If selected method is SMS, a request\n * for a new OTP will be sent to that method. Then, prompt for the OTP, and retry the user login.\n */\nasync function promptForBackupOTPAsync(\n username: string,\n password: string,\n secondFactorDevices: SecondFactorDevice[]\n): Promise<string | null> {\n const nonPrimarySecondFactorDevices = secondFactorDevices.filter((device) => !device.is_primary);\n\n if (nonPrimarySecondFactorDevices.length === 0) {\n throw new CommandError(\n 'No other second-factor devices set up. Ensure you have set up and certified a backup device.'\n );\n }\n\n const hasAuthenticatorSecondFactorDevice = nonPrimarySecondFactorDevices.find(\n (device) => device.method === UserSecondFactorDeviceMethod.AUTHENTICATOR\n );\n\n const smsNonPrimarySecondFactorDevices = nonPrimarySecondFactorDevices.filter(\n (device) => device.method === UserSecondFactorDeviceMethod.SMS\n );\n\n const authenticatorChoiceSentinel = -1;\n const cancelChoiceSentinel = -2;\n\n const deviceChoices = smsNonPrimarySecondFactorDevices.map((device, idx) => ({\n title: device.sms_phone_number!,\n value: idx,\n }));\n\n if (hasAuthenticatorSecondFactorDevice) {\n deviceChoices.push({\n title: 'Authenticator',\n value: authenticatorChoiceSentinel,\n });\n }\n\n deviceChoices.push({\n title: 'Cancel',\n value: cancelChoiceSentinel,\n });\n\n const selectedValue = await selectAsync('Select a second-factor device:', deviceChoices, {\n nonInteractiveHelp,\n });\n if (selectedValue === cancelChoiceSentinel) {\n return null;\n } else if (selectedValue === authenticatorChoiceSentinel) {\n return await promptForOTPAsync('cancel');\n }\n\n const device = smsNonPrimarySecondFactorDevices[selectedValue];\n\n await fetchAsync('auth/send-sms-otp', {\n method: 'POST',\n body: JSON.stringify({\n username,\n password,\n secondFactorDeviceID: device.id,\n }),\n });\n\n return await promptForOTPAsync('cancel');\n}\n\n/**\n * Handle the special case error indicating that a second-factor is required for\n * authentication.\n *\n * There are three cases we need to handle:\n * 1. User's primary second-factor device was SMS, OTP was automatically sent by the server to that\n * device already. In this case we should just prompt for the SMS OTP (or backup code), which the\n * user should be receiving shortly. We should give the user a way to cancel and the prompt and move\n * to case 3 below.\n * 2. User's primary second-factor device is authenticator. In this case we should prompt for authenticator\n * OTP (or backup code) and also give the user a way to cancel and move to case 3 below.\n * 3. User doesn't have a primary device or doesn't have access to their primary device. In this case\n * we should show a picker of the SMS devices that they can have an OTP code sent to, and when\n * the user picks one we show a prompt() for the sent OTP.\n */\nexport async function retryUsernamePasswordAuthWithOTPAsync(\n username: string,\n password: string,\n metadata: {\n secondFactorDevices?: SecondFactorDevice[];\n smsAutomaticallySent?: boolean;\n }\n): Promise<void> {\n const { secondFactorDevices, smsAutomaticallySent } = metadata;\n assert(\n secondFactorDevices !== undefined && smsAutomaticallySent !== undefined,\n `Malformed OTP error metadata: ${metadata}`\n );\n\n const primaryDevice = secondFactorDevices.find((device) => device.is_primary);\n let otp: string | null = null;\n\n if (smsAutomaticallySent) {\n assert(primaryDevice, 'OTP should only automatically be sent when there is a primary device');\n Log.log(\n `One-time password was sent to the phone number ending in ${primaryDevice.sms_phone_number}.`\n );\n otp = await promptForOTPAsync('menu');\n }\n\n if (primaryDevice?.method === UserSecondFactorDeviceMethod.AUTHENTICATOR) {\n Log.log('One-time password from authenticator required.');\n otp = await promptForOTPAsync('menu');\n }\n\n // user bailed on case 1 or 2, wants to move to case 3\n if (!otp) {\n otp = await promptForBackupOTPAsync(username, password, secondFactorDevices);\n }\n\n if (!otp) {\n throw new AbortCommandError();\n }\n\n await loginAsync({\n username,\n password,\n otp,\n });\n}\n"],"names":["UserSecondFactorDeviceMethod","retryUsernamePasswordAuthWithOTPAsync","nonInteractiveHelp","learnMore","promptForOTPAsync","cancelBehavior","enterMessage","chalk","otp","promptAsync","type","name","message","promptForBackupOTPAsync","username","password","secondFactorDevices","nonPrimarySecondFactorDevices","filter","device","is_primary","length","CommandError","hasAuthenticatorSecondFactorDevice","find","method","smsNonPrimarySecondFactorDevices","authenticatorChoiceSentinel","cancelChoiceSentinel","deviceChoices","map","idx","title","sms_phone_number","value","push","selectedValue","selectAsync","fetchAsync","body","JSON","stringify","secondFactorDeviceID","id","metadata","smsAutomaticallySent","assert","undefined","primaryDevice","Log","log","AbortCommandError","loginAsync"],"mappings":"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"}
|
|
@@ -9,12 +9,24 @@ function _export(target, all) {
|
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
11
|
_export(exports, {
|
|
12
|
-
ANONYMOUS_USERNAME: ()
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
12
|
+
ANONYMOUS_USERNAME: function() {
|
|
13
|
+
return ANONYMOUS_USERNAME;
|
|
14
|
+
},
|
|
15
|
+
getActorDisplayName: function() {
|
|
16
|
+
return getActorDisplayName;
|
|
17
|
+
},
|
|
18
|
+
getUserAsync: function() {
|
|
19
|
+
return getUserAsync;
|
|
20
|
+
},
|
|
21
|
+
loginAsync: function() {
|
|
22
|
+
return loginAsync;
|
|
23
|
+
},
|
|
24
|
+
logoutAsync: function() {
|
|
25
|
+
return logoutAsync;
|
|
26
|
+
},
|
|
27
|
+
ssoLoginAsync: function() {
|
|
28
|
+
return ssoLoginAsync;
|
|
29
|
+
}
|
|
18
30
|
});
|
|
19
31
|
function _core() {
|
|
20
32
|
const data = require("@urql/core");
|
|
@@ -30,14 +42,14 @@ function _fs() {
|
|
|
30
42
|
};
|
|
31
43
|
return data;
|
|
32
44
|
}
|
|
33
|
-
const
|
|
45
|
+
const _UserSettings = require("./UserSettings");
|
|
34
46
|
const _expoSsoLauncher = require("./expoSsoLauncher");
|
|
35
|
-
const _log = /*#__PURE__*/
|
|
47
|
+
const _log = /*#__PURE__*/ _interop_require_wildcard(require("../../log"));
|
|
36
48
|
const _codesigning = require("../../utils/codesigning");
|
|
37
49
|
const _env = require("../../utils/env");
|
|
38
50
|
const _endpoint = require("../endpoint");
|
|
39
51
|
const _client = require("../graphql/client");
|
|
40
|
-
const
|
|
52
|
+
const _UserQuery = require("../graphql/queries/UserQuery");
|
|
41
53
|
const _client1 = require("../rest/client");
|
|
42
54
|
function _getRequireWildcardCache(nodeInterop) {
|
|
43
55
|
if (typeof WeakMap !== "function") return null;
|
|
@@ -47,7 +59,7 @@ function _getRequireWildcardCache(nodeInterop) {
|
|
|
47
59
|
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
48
60
|
})(nodeInterop);
|
|
49
61
|
}
|
|
50
|
-
function
|
|
62
|
+
function _interop_require_wildcard(obj, nodeInterop) {
|
|
51
63
|
if (!nodeInterop && obj && obj.__esModule) {
|
|
52
64
|
return obj;
|
|
53
65
|
}
|
|
@@ -60,7 +72,9 @@ function _interopRequireWildcard(obj, nodeInterop) {
|
|
|
60
72
|
if (cache && cache.has(obj)) {
|
|
61
73
|
return cache.get(obj);
|
|
62
74
|
}
|
|
63
|
-
var newObj = {
|
|
75
|
+
var newObj = {
|
|
76
|
+
__proto__: null
|
|
77
|
+
};
|
|
64
78
|
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
65
79
|
for(var key in obj){
|
|
66
80
|
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
@@ -79,31 +93,31 @@ function _interopRequireWildcard(obj, nodeInterop) {
|
|
|
79
93
|
return newObj;
|
|
80
94
|
}
|
|
81
95
|
let currentUser;
|
|
82
|
-
const ANONYMOUS_USERNAME =
|
|
96
|
+
const ANONYMOUS_USERNAME = 'anonymous';
|
|
83
97
|
function getActorDisplayName(user) {
|
|
84
98
|
switch(user == null ? void 0 : user.__typename){
|
|
85
|
-
case
|
|
99
|
+
case 'User':
|
|
86
100
|
return user.username;
|
|
87
|
-
case
|
|
101
|
+
case 'SSOUser':
|
|
88
102
|
return user.username;
|
|
89
|
-
case
|
|
90
|
-
return user.firstName ? `${user.firstName} (robot)` :
|
|
103
|
+
case 'Robot':
|
|
104
|
+
return user.firstName ? `${user.firstName} (robot)` : 'robot';
|
|
91
105
|
default:
|
|
92
106
|
return ANONYMOUS_USERNAME;
|
|
93
107
|
}
|
|
94
108
|
}
|
|
95
109
|
async function getUserAsync() {
|
|
96
|
-
var
|
|
97
|
-
const hasCredentials = (0,
|
|
110
|
+
var _getSession;
|
|
111
|
+
const hasCredentials = (0, _UserSettings.getAccessToken)() || ((_getSession = (0, _UserSettings.getSession)()) == null ? void 0 : _getSession.sessionSecret);
|
|
98
112
|
if (!_env.env.EXPO_OFFLINE && !currentUser && hasCredentials) {
|
|
99
|
-
const user = await
|
|
113
|
+
const user = await _UserQuery.UserQuery.currentUserAsync();
|
|
100
114
|
currentUser = user ?? undefined;
|
|
101
115
|
}
|
|
102
116
|
return currentUser;
|
|
103
117
|
}
|
|
104
118
|
async function loginAsync(credentials) {
|
|
105
|
-
const res = await (0, _client1.fetchAsync)(
|
|
106
|
-
method:
|
|
119
|
+
const res = await (0, _client1.fetchAsync)('auth/loginAsync', {
|
|
120
|
+
method: 'POST',
|
|
107
121
|
body: JSON.stringify(credentials)
|
|
108
122
|
});
|
|
109
123
|
const json = await res.json();
|
|
@@ -111,11 +125,11 @@ async function loginAsync(credentials) {
|
|
|
111
125
|
const userData = await fetchUserAsync({
|
|
112
126
|
sessionSecret
|
|
113
127
|
});
|
|
114
|
-
await (0,
|
|
128
|
+
await (0, _UserSettings.setSessionAsync)({
|
|
115
129
|
sessionSecret,
|
|
116
130
|
userId: userData.id,
|
|
117
131
|
username: userData.username,
|
|
118
|
-
currentConnection:
|
|
132
|
+
currentConnection: 'Username-Password-Authentication'
|
|
119
133
|
});
|
|
120
134
|
}
|
|
121
135
|
async function ssoLoginAsync() {
|
|
@@ -125,11 +139,11 @@ async function ssoLoginAsync() {
|
|
|
125
139
|
const userData = await fetchUserAsync({
|
|
126
140
|
sessionSecret
|
|
127
141
|
});
|
|
128
|
-
await (0,
|
|
142
|
+
await (0, _UserSettings.setSessionAsync)({
|
|
129
143
|
sessionSecret,
|
|
130
144
|
userId: userData.id,
|
|
131
145
|
username: userData.username,
|
|
132
|
-
currentConnection:
|
|
146
|
+
currentConnection: 'Browser-Flow-Authentication'
|
|
133
147
|
});
|
|
134
148
|
}
|
|
135
149
|
async function logoutAsync() {
|
|
@@ -139,11 +153,11 @@ async function logoutAsync() {
|
|
|
139
153
|
recursive: true,
|
|
140
154
|
force: true
|
|
141
155
|
}),
|
|
142
|
-
(0,
|
|
156
|
+
(0, _UserSettings.setSessionAsync)(undefined)
|
|
143
157
|
]);
|
|
144
|
-
_log.log(
|
|
158
|
+
_log.log('Logged out');
|
|
145
159
|
}
|
|
146
|
-
async function fetchUserAsync({ sessionSecret
|
|
160
|
+
async function fetchUserAsync({ sessionSecret }) {
|
|
147
161
|
const result = await _client.graphqlClient.query((0, _core().gql)`
|
|
148
162
|
query UserQuery {
|
|
149
163
|
meUserActor {
|
|
@@ -154,12 +168,12 @@ async function fetchUserAsync({ sessionSecret }) {
|
|
|
154
168
|
`, {}, {
|
|
155
169
|
fetchOptions: {
|
|
156
170
|
headers: {
|
|
157
|
-
|
|
171
|
+
'expo-session': sessionSecret
|
|
158
172
|
}
|
|
159
173
|
},
|
|
160
174
|
additionalTypenames: []
|
|
161
175
|
}).toPromise();
|
|
162
|
-
const { data
|
|
176
|
+
const { data } = result;
|
|
163
177
|
return {
|
|
164
178
|
id: data.meUserActor.id,
|
|
165
179
|
username: data.meUserActor.username
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/api/user/user.ts"],"sourcesContent":["import { gql } from '@urql/core';\nimport { promises as fs } from 'fs';\n\nimport { getAccessToken, getSession, setSessionAsync } from './UserSettings';\nimport { getSessionUsingBrowserAuthFlowAsync } from './expoSsoLauncher';\nimport { CurrentUserQuery } from '../../graphql/generated';\nimport * as Log from '../../log';\nimport { getDevelopmentCodeSigningDirectory } from '../../utils/codesigning';\nimport { env } from '../../utils/env';\nimport { getExpoWebsiteBaseUrl } from '../endpoint';\nimport { graphqlClient } from '../graphql/client';\nimport { UserQuery } from '../graphql/queries/UserQuery';\nimport { fetchAsync } from '../rest/client';\n\nexport type Actor = NonNullable<CurrentUserQuery['meActor']>;\n\nlet currentUser: Actor | undefined;\n\nexport const ANONYMOUS_USERNAME = 'anonymous';\n\n/**\n * Resolve the name of the actor, either normal user or robot user.\n * This should be used whenever the \"current user\" needs to be displayed.\n * The display name CANNOT be used as project owner.\n */\nexport function getActorDisplayName(user?: Actor): string {\n switch (user?.__typename) {\n case 'User':\n return user.username;\n case 'SSOUser':\n return user.username;\n case 'Robot':\n return user.firstName ? `${user.firstName} (robot)` : 'robot';\n default:\n return ANONYMOUS_USERNAME;\n }\n}\n\nexport async function getUserAsync(): Promise<Actor | undefined> {\n const hasCredentials = getAccessToken() || getSession()?.sessionSecret;\n if (!env.EXPO_OFFLINE && !currentUser && hasCredentials) {\n const user = await UserQuery.currentUserAsync();\n currentUser = user ?? undefined;\n }\n return currentUser;\n}\n\nexport async function loginAsync(credentials: {\n username: string;\n password: string;\n otp?: string;\n}): Promise<void> {\n const res = await fetchAsync('auth/loginAsync', {\n method: 'POST',\n body: JSON.stringify(credentials),\n });\n const json: any = await res.json();\n const sessionSecret = json.data.sessionSecret;\n\n const userData = await fetchUserAsync({ sessionSecret });\n\n await setSessionAsync({\n sessionSecret,\n userId: userData.id,\n username: userData.username,\n currentConnection: 'Username-Password-Authentication',\n });\n}\n\nexport async function ssoLoginAsync(): Promise<void> {\n const sessionSecret = await getSessionUsingBrowserAuthFlowAsync({\n expoWebsiteUrl: getExpoWebsiteBaseUrl(),\n });\n const userData = await fetchUserAsync({ sessionSecret });\n\n await setSessionAsync({\n sessionSecret,\n userId: userData.id,\n username: userData.username,\n currentConnection: 'Browser-Flow-Authentication',\n });\n}\n\nexport async function logoutAsync(): Promise<void> {\n currentUser = undefined;\n await Promise.all([\n fs.rm(getDevelopmentCodeSigningDirectory(), { recursive: true, force: true }),\n setSessionAsync(undefined),\n ]);\n Log.log('Logged out');\n}\n\nasync function fetchUserAsync({\n sessionSecret,\n}: {\n sessionSecret: string;\n}): Promise<{ id: string; username: string }> {\n const result = await graphqlClient\n .query(\n gql`\n query UserQuery {\n meUserActor {\n id\n username\n }\n }\n `,\n {},\n {\n fetchOptions: {\n headers: {\n 'expo-session': sessionSecret,\n },\n },\n additionalTypenames: [] /* UserQuery has immutable fields */,\n }\n )\n .toPromise();\n const { data } = result;\n return {\n id: data.meUserActor.id,\n username: data.meUserActor.username,\n };\n}\n"],"names":["ANONYMOUS_USERNAME","getActorDisplayName","getUserAsync","loginAsync","
|
|
1
|
+
{"version":3,"sources":["../../../../src/api/user/user.ts"],"sourcesContent":["import { gql } from '@urql/core';\nimport { promises as fs } from 'fs';\n\nimport { getAccessToken, getSession, setSessionAsync } from './UserSettings';\nimport { getSessionUsingBrowserAuthFlowAsync } from './expoSsoLauncher';\nimport { CurrentUserQuery } from '../../graphql/generated';\nimport * as Log from '../../log';\nimport { getDevelopmentCodeSigningDirectory } from '../../utils/codesigning';\nimport { env } from '../../utils/env';\nimport { getExpoWebsiteBaseUrl } from '../endpoint';\nimport { graphqlClient } from '../graphql/client';\nimport { UserQuery } from '../graphql/queries/UserQuery';\nimport { fetchAsync } from '../rest/client';\n\nexport type Actor = NonNullable<CurrentUserQuery['meActor']>;\n\nlet currentUser: Actor | undefined;\n\nexport const ANONYMOUS_USERNAME = 'anonymous';\n\n/**\n * Resolve the name of the actor, either normal user or robot user.\n * This should be used whenever the \"current user\" needs to be displayed.\n * The display name CANNOT be used as project owner.\n */\nexport function getActorDisplayName(user?: Actor): string {\n switch (user?.__typename) {\n case 'User':\n return user.username;\n case 'SSOUser':\n return user.username;\n case 'Robot':\n return user.firstName ? `${user.firstName} (robot)` : 'robot';\n default:\n return ANONYMOUS_USERNAME;\n }\n}\n\nexport async function getUserAsync(): Promise<Actor | undefined> {\n const hasCredentials = getAccessToken() || getSession()?.sessionSecret;\n if (!env.EXPO_OFFLINE && !currentUser && hasCredentials) {\n const user = await UserQuery.currentUserAsync();\n currentUser = user ?? undefined;\n }\n return currentUser;\n}\n\nexport async function loginAsync(credentials: {\n username: string;\n password: string;\n otp?: string;\n}): Promise<void> {\n const res = await fetchAsync('auth/loginAsync', {\n method: 'POST',\n body: JSON.stringify(credentials),\n });\n const json: any = await res.json();\n const sessionSecret = json.data.sessionSecret;\n\n const userData = await fetchUserAsync({ sessionSecret });\n\n await setSessionAsync({\n sessionSecret,\n userId: userData.id,\n username: userData.username,\n currentConnection: 'Username-Password-Authentication',\n });\n}\n\nexport async function ssoLoginAsync(): Promise<void> {\n const sessionSecret = await getSessionUsingBrowserAuthFlowAsync({\n expoWebsiteUrl: getExpoWebsiteBaseUrl(),\n });\n const userData = await fetchUserAsync({ sessionSecret });\n\n await setSessionAsync({\n sessionSecret,\n userId: userData.id,\n username: userData.username,\n currentConnection: 'Browser-Flow-Authentication',\n });\n}\n\nexport async function logoutAsync(): Promise<void> {\n currentUser = undefined;\n await Promise.all([\n fs.rm(getDevelopmentCodeSigningDirectory(), { recursive: true, force: true }),\n setSessionAsync(undefined),\n ]);\n Log.log('Logged out');\n}\n\nasync function fetchUserAsync({\n sessionSecret,\n}: {\n sessionSecret: string;\n}): Promise<{ id: string; username: string }> {\n const result = await graphqlClient\n .query(\n gql`\n query UserQuery {\n meUserActor {\n id\n username\n }\n }\n `,\n {},\n {\n fetchOptions: {\n headers: {\n 'expo-session': sessionSecret,\n },\n },\n additionalTypenames: [] /* UserQuery has immutable fields */,\n }\n )\n .toPromise();\n const { data } = result;\n return {\n id: data.meUserActor.id,\n username: data.meUserActor.username,\n };\n}\n"],"names":["ANONYMOUS_USERNAME","getActorDisplayName","getUserAsync","loginAsync","logoutAsync","ssoLoginAsync","currentUser","user","__typename","username","firstName","getSession","hasCredentials","getAccessToken","sessionSecret","env","EXPO_OFFLINE","UserQuery","currentUserAsync","undefined","credentials","res","fetchAsync","method","body","JSON","stringify","json","data","userData","fetchUserAsync","setSessionAsync","userId","id","currentConnection","getSessionUsingBrowserAuthFlowAsync","expoWebsiteUrl","getExpoWebsiteBaseUrl","Promise","all","fs","rm","getDevelopmentCodeSigningDirectory","recursive","force","Log","log","result","graphqlClient","query","gql","fetchOptions","headers","additionalTypenames","toPromise","meUserActor"],"mappings":";;;;;;;;;;;IAkBaA,kBAAkB;eAAlBA;;IAOGC,mBAAmB;eAAnBA;;IAaMC,YAAY;eAAZA;;IASAC,UAAU;eAAVA;;IAoCAC,WAAW;eAAXA;;IAdAC,aAAa;eAAbA;;;;yBArEF;;;;;;;yBACW;;;;;;8BAE6B;iCACR;6DAE/B;6BAC8B;qBAC/B;0BACkB;wBACR;2BACJ;yBACC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAI3B,IAAIC;AAEG,MAAMN,qBAAqB;AAO3B,SAASC,oBAAoBM,IAAY;IAC9C,OAAQA,wBAAAA,KAAMC,UAAU;QACtB,KAAK;YACH,OAAOD,KAAKE,QAAQ;QACtB,KAAK;YACH,OAAOF,KAAKE,QAAQ;QACtB,KAAK;YACH,OAAOF,KAAKG,SAAS,GAAG,GAAGH,KAAKG,SAAS,CAAC,QAAQ,CAAC,GAAG;QACxD;YACE,OAAOV;IACX;AACF;AAEO,eAAeE;QACuBS;IAA3C,MAAMC,iBAAiBC,IAAAA,4BAAc,SAAMF,cAAAA,IAAAA,wBAAU,wBAAVA,YAAcG,aAAa;IACtE,IAAI,CAACC,QAAG,CAACC,YAAY,IAAI,CAACV,eAAeM,gBAAgB;QACvD,MAAML,OAAO,MAAMU,oBAAS,CAACC,gBAAgB;QAC7CZ,cAAcC,QAAQY;IACxB;IACA,OAAOb;AACT;AAEO,eAAeH,WAAWiB,WAIhC;IACC,MAAMC,MAAM,MAAMC,IAAAA,mBAAU,EAAC,mBAAmB;QAC9CC,QAAQ;QACRC,MAAMC,KAAKC,SAAS,CAACN;IACvB;IACA,MAAMO,OAAY,MAAMN,IAAIM,IAAI;IAChC,MAAMb,gBAAgBa,KAAKC,IAAI,CAACd,aAAa;IAE7C,MAAMe,WAAW,MAAMC,eAAe;QAAEhB;IAAc;IAEtD,MAAMiB,IAAAA,6BAAe,EAAC;QACpBjB;QACAkB,QAAQH,SAASI,EAAE;QACnBxB,UAAUoB,SAASpB,QAAQ;QAC3ByB,mBAAmB;IACrB;AACF;AAEO,eAAe7B;IACpB,MAAMS,gBAAgB,MAAMqB,IAAAA,oDAAmC,EAAC;QAC9DC,gBAAgBC,IAAAA,+BAAqB;IACvC;IACA,MAAMR,WAAW,MAAMC,eAAe;QAAEhB;IAAc;IAEtD,MAAMiB,IAAAA,6BAAe,EAAC;QACpBjB;QACAkB,QAAQH,SAASI,EAAE;QACnBxB,UAAUoB,SAASpB,QAAQ;QAC3ByB,mBAAmB;IACrB;AACF;AAEO,eAAe9B;IACpBE,cAAca;IACd,MAAMmB,QAAQC,GAAG,CAAC;QAChBC,cAAE,CAACC,EAAE,CAACC,IAAAA,+CAAkC,KAAI;YAAEC,WAAW;YAAMC,OAAO;QAAK;QAC3Eb,IAAAA,6BAAe,EAACZ;KACjB;IACD0B,KAAIC,GAAG,CAAC;AACV;AAEA,eAAehB,eAAe,EAC5BhB,aAAa,EAGd;IACC,MAAMiC,SAAS,MAAMC,qBAAa,CAC/BC,KAAK,CACJC,IAAAA,WAAG,CAAA,CAAC;;;;;;;MAOJ,CAAC,EACD,CAAC,GACD;QACEC,cAAc;YACZC,SAAS;gBACP,gBAAgBtC;YAClB;QACF;QACAuC,qBAAqB,EAAE;IACzB,GAEDC,SAAS;IACZ,MAAM,EAAE1B,IAAI,EAAE,GAAGmB;IACjB,OAAO;QACLd,IAAIL,KAAK2B,WAAW,CAACtB,EAAE;QACvBxB,UAAUmB,KAAK2B,WAAW,CAAC9C,QAAQ;IACrC;AACF"}
|
|
@@ -9,8 +9,12 @@ function _export(target, all) {
|
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
11
|
_export(exports, {
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
configAsync: function() {
|
|
13
|
+
return configAsync;
|
|
14
|
+
},
|
|
15
|
+
logConfig: function() {
|
|
16
|
+
return logConfig;
|
|
17
|
+
}
|
|
14
18
|
});
|
|
15
19
|
function _config() {
|
|
16
20
|
const data = require("@expo/config");
|
|
@@ -20,24 +24,24 @@ function _config() {
|
|
|
20
24
|
return data;
|
|
21
25
|
}
|
|
22
26
|
function _assert() {
|
|
23
|
-
const data = /*#__PURE__*/
|
|
27
|
+
const data = /*#__PURE__*/ _interop_require_default(require("assert"));
|
|
24
28
|
_assert = function() {
|
|
25
29
|
return data;
|
|
26
30
|
};
|
|
27
31
|
return data;
|
|
28
32
|
}
|
|
29
33
|
function _util() {
|
|
30
|
-
const data = /*#__PURE__*/
|
|
34
|
+
const data = /*#__PURE__*/ _interop_require_default(require("util"));
|
|
31
35
|
_util = function() {
|
|
32
36
|
return data;
|
|
33
37
|
};
|
|
34
38
|
return data;
|
|
35
39
|
}
|
|
36
|
-
const _log = /*#__PURE__*/
|
|
40
|
+
const _log = /*#__PURE__*/ _interop_require_wildcard(require("../log"));
|
|
37
41
|
const _errors = require("../utils/errors");
|
|
38
42
|
const _nodeEnv = require("../utils/nodeEnv");
|
|
39
43
|
const _profile = require("../utils/profile");
|
|
40
|
-
function
|
|
44
|
+
function _interop_require_default(obj) {
|
|
41
45
|
return obj && obj.__esModule ? obj : {
|
|
42
46
|
default: obj
|
|
43
47
|
};
|
|
@@ -50,7 +54,7 @@ function _getRequireWildcardCache(nodeInterop) {
|
|
|
50
54
|
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
51
55
|
})(nodeInterop);
|
|
52
56
|
}
|
|
53
|
-
function
|
|
57
|
+
function _interop_require_wildcard(obj, nodeInterop) {
|
|
54
58
|
if (!nodeInterop && obj && obj.__esModule) {
|
|
55
59
|
return obj;
|
|
56
60
|
}
|
|
@@ -63,7 +67,9 @@ function _interopRequireWildcard(obj, nodeInterop) {
|
|
|
63
67
|
if (cache && cache.has(obj)) {
|
|
64
68
|
return cache.get(obj);
|
|
65
69
|
}
|
|
66
|
-
var newObj = {
|
|
70
|
+
var newObj = {
|
|
71
|
+
__proto__: null
|
|
72
|
+
};
|
|
67
73
|
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
68
74
|
for(var key in obj){
|
|
69
75
|
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
@@ -109,35 +115,35 @@ async function configAsync(projectRoot, options) {
|
|
|
109
115
|
console.warn = function() {};
|
|
110
116
|
console.error = function() {};
|
|
111
117
|
}
|
|
112
|
-
(0, _nodeEnv.setNodeEnv)(
|
|
113
|
-
require(
|
|
118
|
+
(0, _nodeEnv.setNodeEnv)('development');
|
|
119
|
+
require('@expo/env').load(projectRoot);
|
|
114
120
|
if (options.type) {
|
|
115
121
|
_assert().default.match(options.type, /^(public|prebuild|introspect)$/);
|
|
116
122
|
}
|
|
117
123
|
let config;
|
|
118
|
-
if (options.type ===
|
|
119
|
-
const { getPrebuildConfigAsync
|
|
124
|
+
if (options.type === 'prebuild') {
|
|
125
|
+
const { getPrebuildConfigAsync } = await Promise.resolve().then(()=>/*#__PURE__*/ _interop_require_wildcard(require("@expo/prebuild-config")));
|
|
120
126
|
config = await (0, _profile.profile)(getPrebuildConfigAsync)(projectRoot, {
|
|
121
127
|
platforms: [
|
|
122
|
-
|
|
123
|
-
|
|
128
|
+
'ios',
|
|
129
|
+
'android'
|
|
124
130
|
]
|
|
125
131
|
});
|
|
126
|
-
} else if (options.type ===
|
|
127
|
-
const { getPrebuildConfigAsync
|
|
128
|
-
const { compileModsAsync
|
|
129
|
-
config = await (0, _profile.profile)(
|
|
132
|
+
} else if (options.type === 'introspect') {
|
|
133
|
+
const { getPrebuildConfigAsync } = await Promise.resolve().then(()=>/*#__PURE__*/ _interop_require_wildcard(require("@expo/prebuild-config")));
|
|
134
|
+
const { compileModsAsync } = await Promise.resolve().then(()=>/*#__PURE__*/ _interop_require_wildcard(require("@expo/config-plugins/build/plugins/mod-compiler.js")));
|
|
135
|
+
config = await (0, _profile.profile)(getPrebuildConfigAsync)(projectRoot, {
|
|
130
136
|
platforms: [
|
|
131
|
-
|
|
132
|
-
|
|
137
|
+
'ios',
|
|
138
|
+
'android'
|
|
133
139
|
]
|
|
134
140
|
});
|
|
135
141
|
await compileModsAsync(config.exp, {
|
|
136
142
|
projectRoot,
|
|
137
143
|
introspect: true,
|
|
138
144
|
platforms: [
|
|
139
|
-
|
|
140
|
-
|
|
145
|
+
'ios',
|
|
146
|
+
'android'
|
|
141
147
|
],
|
|
142
148
|
assertMissingModProviders: false
|
|
143
149
|
});
|
|
@@ -145,7 +151,7 @@ async function configAsync(projectRoot, options) {
|
|
|
145
151
|
delete config.modRequest;
|
|
146
152
|
// @ts-ignore
|
|
147
153
|
delete config.modResults;
|
|
148
|
-
} else if (options.type ===
|
|
154
|
+
} else if (options.type === 'public') {
|
|
149
155
|
config = (0, _profile.profile)(_config().getConfig)(projectRoot, {
|
|
150
156
|
skipSDKVersionRequirement: true,
|
|
151
157
|
isPublicConfig: true
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/config/configAsync.ts"],"sourcesContent":["import { ExpoConfig, getConfig, ProjectConfig } from '@expo/config';\nimport assert from 'assert';\nimport util from 'util';\n\nimport * as Log from '../log';\nimport { CommandError } from '../utils/errors';\nimport { setNodeEnv } from '../utils/nodeEnv';\nimport { profile } from '../utils/profile';\n\ntype Options = {\n type?: string;\n full?: boolean;\n json?: boolean;\n};\n\nexport function logConfig(config: ExpoConfig | ProjectConfig) {\n const isObjStr = (str: string): boolean => /^\\w+: {/g.test(str);\n Log.log(\n util.inspect(config, {\n colors: true,\n compact: false,\n // Sort objects to the end so that smaller values aren't hidden between large objects.\n sorted(a: string, b: string) {\n if (isObjStr(a)) return 1;\n if (isObjStr(b)) return -1;\n return 0;\n },\n showHidden: false,\n depth: null,\n })\n );\n}\n\nexport async function configAsync(projectRoot: string, options: Options) {\n const loggingFunctions = {\n log: console.log,\n warn: console.warn,\n error: console.error,\n };\n // Disable logging for this command if the user wants to get JSON output.\n // This will ensure that only the JSON is printed to stdout.\n if (options.json) {\n console.log = function () {};\n console.warn = function () {};\n console.error = function () {};\n }\n setNodeEnv('development');\n require('@expo/env').load(projectRoot);\n\n if (options.type) {\n assert.match(options.type, /^(public|prebuild|introspect)$/);\n }\n\n let config: ProjectConfig;\n\n if (options.type === 'prebuild') {\n const { getPrebuildConfigAsync } = await import('@expo/prebuild-config');\n\n config = await profile(getPrebuildConfigAsync)(projectRoot, {\n platforms: ['ios', 'android'],\n });\n } else if (options.type === 'introspect') {\n const { getPrebuildConfigAsync } = await import('@expo/prebuild-config');\n const { compileModsAsync } = await import('@expo/config-plugins/build/plugins/mod-compiler.js');\n\n config = await profile(getPrebuildConfigAsync)(projectRoot, {\n platforms: ['ios', 'android'],\n });\n\n await compileModsAsync(config.exp, {\n projectRoot,\n introspect: true,\n platforms: ['ios', 'android'],\n assertMissingModProviders: false,\n });\n // @ts-ignore\n delete config.modRequest;\n // @ts-ignore\n delete config.modResults;\n } else if (options.type === 'public') {\n config = profile(getConfig)(projectRoot, {\n skipSDKVersionRequirement: true,\n isPublicConfig: true,\n });\n } else if (options.type) {\n throw new CommandError(\n `Invalid option: --type ${options.type}. Valid options are: public, prebuild`\n );\n } else {\n config = profile(getConfig)(projectRoot, {\n skipSDKVersionRequirement: true,\n });\n }\n\n const configOutput = options.full ? config : config.exp;\n\n if (!options.json) {\n Log.log();\n logConfig(configOutput);\n Log.log();\n } else {\n process.stdout.write(JSON.stringify(configOutput));\n\n // Re-enable logging functions for testing.\n console.log = loggingFunctions.log;\n console.warn = loggingFunctions.warn;\n console.error = loggingFunctions.error;\n }\n}\n"],"names":["
|
|
1
|
+
{"version":3,"sources":["../../../src/config/configAsync.ts"],"sourcesContent":["import { ExpoConfig, getConfig, ProjectConfig } from '@expo/config';\nimport assert from 'assert';\nimport util from 'util';\n\nimport * as Log from '../log';\nimport { CommandError } from '../utils/errors';\nimport { setNodeEnv } from '../utils/nodeEnv';\nimport { profile } from '../utils/profile';\n\ntype Options = {\n type?: string;\n full?: boolean;\n json?: boolean;\n};\n\nexport function logConfig(config: ExpoConfig | ProjectConfig) {\n const isObjStr = (str: string): boolean => /^\\w+: {/g.test(str);\n Log.log(\n util.inspect(config, {\n colors: true,\n compact: false,\n // Sort objects to the end so that smaller values aren't hidden between large objects.\n sorted(a: string, b: string) {\n if (isObjStr(a)) return 1;\n if (isObjStr(b)) return -1;\n return 0;\n },\n showHidden: false,\n depth: null,\n })\n );\n}\n\nexport async function configAsync(projectRoot: string, options: Options) {\n const loggingFunctions = {\n log: console.log,\n warn: console.warn,\n error: console.error,\n };\n // Disable logging for this command if the user wants to get JSON output.\n // This will ensure that only the JSON is printed to stdout.\n if (options.json) {\n console.log = function () {};\n console.warn = function () {};\n console.error = function () {};\n }\n setNodeEnv('development');\n require('@expo/env').load(projectRoot);\n\n if (options.type) {\n assert.match(options.type, /^(public|prebuild|introspect)$/);\n }\n\n let config: ProjectConfig;\n\n if (options.type === 'prebuild') {\n const { getPrebuildConfigAsync } = await import('@expo/prebuild-config');\n\n config = await profile(getPrebuildConfigAsync)(projectRoot, {\n platforms: ['ios', 'android'],\n });\n } else if (options.type === 'introspect') {\n const { getPrebuildConfigAsync } = await import('@expo/prebuild-config');\n const { compileModsAsync } = await import('@expo/config-plugins/build/plugins/mod-compiler.js');\n\n config = await profile(getPrebuildConfigAsync)(projectRoot, {\n platforms: ['ios', 'android'],\n });\n\n await compileModsAsync(config.exp, {\n projectRoot,\n introspect: true,\n platforms: ['ios', 'android'],\n assertMissingModProviders: false,\n });\n // @ts-ignore\n delete config.modRequest;\n // @ts-ignore\n delete config.modResults;\n } else if (options.type === 'public') {\n config = profile(getConfig)(projectRoot, {\n skipSDKVersionRequirement: true,\n isPublicConfig: true,\n });\n } else if (options.type) {\n throw new CommandError(\n `Invalid option: --type ${options.type}. Valid options are: public, prebuild`\n );\n } else {\n config = profile(getConfig)(projectRoot, {\n skipSDKVersionRequirement: true,\n });\n }\n\n const configOutput = options.full ? config : config.exp;\n\n if (!options.json) {\n Log.log();\n logConfig(configOutput);\n Log.log();\n } else {\n process.stdout.write(JSON.stringify(configOutput));\n\n // Re-enable logging functions for testing.\n console.log = loggingFunctions.log;\n console.warn = loggingFunctions.warn;\n console.error = loggingFunctions.error;\n }\n}\n"],"names":["configAsync","logConfig","config","isObjStr","str","test","Log","log","util","inspect","colors","compact","sorted","a","b","showHidden","depth","projectRoot","options","loggingFunctions","console","warn","error","json","setNodeEnv","require","load","type","assert","match","getPrebuildConfigAsync","profile","platforms","compileModsAsync","exp","introspect","assertMissingModProviders","modRequest","modResults","getConfig","skipSDKVersionRequirement","isPublicConfig","CommandError","configOutput","full","process","stdout","write","JSON","stringify"],"mappings":"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"}
|