@expo/cli 1.0.0-canary-20250320-7a205d3 → 1.0.0-canary-20250402-161f57b
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 +36 -32
- 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 +55 -37
- 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 +53 -31
- 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 +72 -62
- 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 +68 -64
- package/build/src/export/exportApp.js.map +1 -1
- package/build/src/export/exportAssets.js +34 -26
- 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 +75 -53
- package/build/src/export/exportHermes.js.map +1 -1
- package/build/src/export/exportStaticAsync.js +73 -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 +64 -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 +705 -479
- 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 +14 -12
- 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 +43 -37
- package/build/src/prebuild/renameTemplateAppName.js.map +1 -1
- package/build/src/prebuild/resolveOptions.js +70 -53
- 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 +80 -60
- 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 +88 -74
- 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 +37 -33
- 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 +30 -22
- package/build/src/start/server/getStaticRenderFunctions.js.map +1 -1
- package/build/src/start/server/metro/DevToolsPluginWebsocketEndpoint.js +9 -5
- package/build/src/start/server/metro/DevToolsPluginWebsocketEndpoint.js.map +1 -1
- package/build/src/start/server/metro/MetroBundlerDevServer.js +293 -280
- 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/createExpoFallbackResolver.js +13 -11
- package/build/src/start/server/metro/createExpoFallbackResolver.js.map +1 -1
- package/build/src/start/server/metro/createExpoMetroResolver.js +47 -41
- package/build/src/start/server/metro/createExpoMetroResolver.js.map +1 -1
- package/build/src/start/server/metro/createJResolver.js +31 -27
- package/build/src/start/server/metro/createJResolver.js.map +1 -1
- package/build/src/start/server/metro/createServerComponentsMiddleware.js +110 -98
- package/build/src/start/server/metro/createServerComponentsMiddleware.js.map +1 -1
- package/build/src/start/server/metro/createServerRouteMiddleware.js +34 -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 +28 -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 +24 -20
- package/build/src/start/server/metro/getCssModulesFromBundler.js.map +1 -1
- package/build/src/start/server/metro/instantiateMetro.js +87 -81
- 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 +150 -140
- 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 +61 -57
- 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 +16 -15
- 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 +72 -50
- 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 +79 -69
- 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 +12 -8
- 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 +40 -22
- 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 +27 -23
- 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 +41 -35
- 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/multipartMixed.js +13 -11
- package/build/src/utils/multipartMixed.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 +49 -35
- 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 +18 -14
- 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/flushFetchDetached.js +10 -10
- package/build/src/utils/telemetry/clients/flushFetchDetached.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/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 +17 -16
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/utils/tsconfig/resolveWithTsConfigPaths.ts"],"sourcesContent":["import { Resolution } from 'metro-resolver';\nimport path from 'path';\n\nimport { matchTsConfigPathAlias } from './matchTsConfigPathAlias';\n\ntype Paths = { [match: string]: string[] };\n\nconst debug = require('debug')('expo:metro:tsconfig-paths') as typeof console.log;\n\nconst isAbsolute = process.platform === 'win32' ? path.win32.isAbsolute : path.posix.isAbsolute;\n\nexport function resolveWithTsConfigPaths(\n config: { paths: Paths; baseUrl: string; hasBaseUrl: boolean },\n request: {\n /** Import request */\n moduleName: string;\n /** Originating file path */\n originModulePath: string;\n },\n resolve: (moduleName: string) => Resolution | null\n): Resolution | null {\n const aliases = Object.keys(config.paths);\n\n if (\n // If no aliases are added bail out\n (!aliases.length && !config.hasBaseUrl) ||\n // Library authors cannot utilize this feature in userspace.\n /node_modules/.test(request.originModulePath) ||\n // Absolute paths are not supported\n isAbsolute(request.moduleName) ||\n // Relative paths are not supported\n /^\\.\\.?($|[\\\\/])/.test(request.moduleName)\n ) {\n return null;\n }\n\n const matched = matchTsConfigPathAlias(aliases, request.moduleName);\n if (matched) {\n for (const alias of config.paths[matched.text]) {\n const nextModuleName = matched.star ? alias.replace('*', matched.star) : alias;\n\n if (/\\.d\\.ts$/.test(nextModuleName)) continue;\n\n const possibleResult = path.join(config.baseUrl, nextModuleName);\n\n const result = resolve(possibleResult);\n if (result) {\n debug(`${request.moduleName} -> ${possibleResult}`);\n return result;\n }\n }\n } else {\n // Only resolve against baseUrl if no `paths` groups were matched.\n // Base URL is resolved after paths, and before node_modules.\n if (config.hasBaseUrl) {\n const possibleResult = path.join(config.baseUrl, request.moduleName);\n const result = resolve(possibleResult);\n if (result) {\n debug(`baseUrl: ${request.moduleName} -> ${possibleResult}`);\n return result;\n }\n }\n }\n\n return null;\n}\n"],"names":["resolveWithTsConfigPaths","debug","require","isAbsolute","process","platform","path","win32","posix","config","request","resolve","aliases","Object","keys","paths","length","hasBaseUrl","test","originModulePath","moduleName","matched","matchTsConfigPathAlias","alias","text","nextModuleName","star","replace","possibleResult","join","baseUrl","result"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../../src/utils/tsconfig/resolveWithTsConfigPaths.ts"],"sourcesContent":["import { Resolution } from 'metro-resolver';\nimport path from 'path';\n\nimport { matchTsConfigPathAlias } from './matchTsConfigPathAlias';\n\ntype Paths = { [match: string]: string[] };\n\nconst debug = require('debug')('expo:metro:tsconfig-paths') as typeof console.log;\n\nconst isAbsolute = process.platform === 'win32' ? path.win32.isAbsolute : path.posix.isAbsolute;\n\nexport function resolveWithTsConfigPaths(\n config: { paths: Paths; baseUrl: string; hasBaseUrl: boolean },\n request: {\n /** Import request */\n moduleName: string;\n /** Originating file path */\n originModulePath: string;\n },\n resolve: (moduleName: string) => Resolution | null\n): Resolution | null {\n const aliases = Object.keys(config.paths);\n\n if (\n // If no aliases are added bail out\n (!aliases.length && !config.hasBaseUrl) ||\n // Library authors cannot utilize this feature in userspace.\n /node_modules/.test(request.originModulePath) ||\n // Absolute paths are not supported\n isAbsolute(request.moduleName) ||\n // Relative paths are not supported\n /^\\.\\.?($|[\\\\/])/.test(request.moduleName)\n ) {\n return null;\n }\n\n const matched = matchTsConfigPathAlias(aliases, request.moduleName);\n if (matched) {\n for (const alias of config.paths[matched.text]) {\n const nextModuleName = matched.star ? alias.replace('*', matched.star) : alias;\n\n if (/\\.d\\.ts$/.test(nextModuleName)) continue;\n\n const possibleResult = path.join(config.baseUrl, nextModuleName);\n\n const result = resolve(possibleResult);\n if (result) {\n debug(`${request.moduleName} -> ${possibleResult}`);\n return result;\n }\n }\n } else {\n // Only resolve against baseUrl if no `paths` groups were matched.\n // Base URL is resolved after paths, and before node_modules.\n if (config.hasBaseUrl) {\n const possibleResult = path.join(config.baseUrl, request.moduleName);\n const result = resolve(possibleResult);\n if (result) {\n debug(`baseUrl: ${request.moduleName} -> ${possibleResult}`);\n return result;\n }\n }\n }\n\n return null;\n}\n"],"names":["resolveWithTsConfigPaths","debug","require","isAbsolute","process","platform","path","win32","posix","config","request","resolve","aliases","Object","keys","paths","length","hasBaseUrl","test","originModulePath","moduleName","matched","matchTsConfigPathAlias","alias","text","nextModuleName","star","replace","possibleResult","join","baseUrl","result"],"mappings":";;;;+BAWgBA;;;eAAAA;;;;gEAVC;;;;;;wCAEsB;;;;;;AAIvC,MAAMC,QAAQC,QAAQ,SAAS;AAE/B,MAAMC,aAAaC,QAAQC,QAAQ,KAAK,UAAUC,eAAI,CAACC,KAAK,CAACJ,UAAU,GAAGG,eAAI,CAACE,KAAK,CAACL,UAAU;AAExF,SAASH,yBACdS,MAA8D,EAC9DC,OAKC,EACDC,OAAkD;IAElD,MAAMC,UAAUC,OAAOC,IAAI,CAACL,OAAOM,KAAK;IAExC,IAEE,AADA,mCAAmC;IAClC,CAACH,QAAQI,MAAM,IAAI,CAACP,OAAOQ,UAAU,IACtC,4DAA4D;IAC5D,eAAeC,IAAI,CAACR,QAAQS,gBAAgB,KAC5C,mCAAmC;IACnChB,WAAWO,QAAQU,UAAU,KAC7B,mCAAmC;IACnC,kBAAkBF,IAAI,CAACR,QAAQU,UAAU,GACzC;QACA,OAAO;IACT;IAEA,MAAMC,UAAUC,IAAAA,8CAAsB,EAACV,SAASF,QAAQU,UAAU;IAClE,IAAIC,SAAS;QACX,KAAK,MAAME,SAASd,OAAOM,KAAK,CAACM,QAAQG,IAAI,CAAC,CAAE;YAC9C,MAAMC,iBAAiBJ,QAAQK,IAAI,GAAGH,MAAMI,OAAO,CAAC,KAAKN,QAAQK,IAAI,IAAIH;YAEzE,IAAI,WAAWL,IAAI,CAACO,iBAAiB;YAErC,MAAMG,iBAAiBtB,eAAI,CAACuB,IAAI,CAACpB,OAAOqB,OAAO,EAAEL;YAEjD,MAAMM,SAASpB,QAAQiB;YACvB,IAAIG,QAAQ;gBACV9B,MAAM,GAAGS,QAAQU,UAAU,CAAC,IAAI,EAAEQ,gBAAgB;gBAClD,OAAOG;YACT;QACF;IACF,OAAO;QACL,kEAAkE;QAClE,6DAA6D;QAC7D,IAAItB,OAAOQ,UAAU,EAAE;YACrB,MAAMW,iBAAiBtB,eAAI,CAACuB,IAAI,CAACpB,OAAOqB,OAAO,EAAEpB,QAAQU,UAAU;YACnE,MAAMW,SAASpB,QAAQiB;YACvB,IAAIG,QAAQ;gBACV9B,MAAM,CAAC,SAAS,EAAES,QAAQU,UAAU,CAAC,IAAI,EAAEQ,gBAAgB;gBAC3D,OAAOG;YACT;QACF;IACF;IAEA,OAAO;AACT"}
|
package/build/src/utils/url.js
CHANGED
|
@@ -9,14 +9,24 @@ function _export(target, all) {
|
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
11
|
_export(exports, {
|
|
12
|
-
isUrlAvailableAsync: ()
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
isUrlAvailableAsync: function() {
|
|
13
|
+
return isUrlAvailableAsync;
|
|
14
|
+
},
|
|
15
|
+
isUrlOk: function() {
|
|
16
|
+
return isUrlOk;
|
|
17
|
+
},
|
|
18
|
+
stripExtension: function() {
|
|
19
|
+
return stripExtension;
|
|
20
|
+
},
|
|
21
|
+
stripPort: function() {
|
|
22
|
+
return stripPort;
|
|
23
|
+
},
|
|
24
|
+
validateUrl: function() {
|
|
25
|
+
return validateUrl;
|
|
26
|
+
}
|
|
17
27
|
});
|
|
18
28
|
function _dns() {
|
|
19
|
-
const data = /*#__PURE__*/
|
|
29
|
+
const data = /*#__PURE__*/ _interop_require_default(require("dns"));
|
|
20
30
|
_dns = function() {
|
|
21
31
|
return data;
|
|
22
32
|
};
|
|
@@ -30,7 +40,7 @@ function _url() {
|
|
|
30
40
|
return data;
|
|
31
41
|
}
|
|
32
42
|
const _client = require("../api/rest/client");
|
|
33
|
-
function
|
|
43
|
+
function _interop_require_default(obj) {
|
|
34
44
|
return obj && obj.__esModule ? obj : {
|
|
35
45
|
default: obj
|
|
36
46
|
};
|
|
@@ -50,7 +60,7 @@ async function isUrlOk(url) {
|
|
|
50
60
|
return false;
|
|
51
61
|
}
|
|
52
62
|
}
|
|
53
|
-
function validateUrl(urlString, { protocols
|
|
63
|
+
function validateUrl(urlString, { protocols, requireProtocol } = {}) {
|
|
54
64
|
try {
|
|
55
65
|
const results = new (_url()).URL(urlString);
|
|
56
66
|
if (!results.protocol && !requireProtocol) {
|
|
@@ -62,21 +72,21 @@ function validateUrl(urlString, { protocols , requireProtocol } = {}) {
|
|
|
62
72
|
}
|
|
63
73
|
}
|
|
64
74
|
function stripPort(host) {
|
|
65
|
-
var
|
|
66
|
-
return ((
|
|
75
|
+
var _coerceUrl;
|
|
76
|
+
return ((_coerceUrl = coerceUrl(host)) == null ? void 0 : _coerceUrl.hostname) ?? null;
|
|
67
77
|
}
|
|
68
78
|
function coerceUrl(urlString) {
|
|
69
79
|
if (!urlString) {
|
|
70
80
|
return null;
|
|
71
81
|
}
|
|
72
82
|
try {
|
|
73
|
-
return new (_url()).URL(
|
|
83
|
+
return new (_url()).URL('/', urlString);
|
|
74
84
|
} catch {
|
|
75
|
-
return new (_url()).URL(
|
|
85
|
+
return new (_url()).URL('/', `http://${urlString}`);
|
|
76
86
|
}
|
|
77
87
|
}
|
|
78
88
|
function stripExtension(url, extension) {
|
|
79
|
-
return url.replace(new RegExp(`.${extension}$`),
|
|
89
|
+
return url.replace(new RegExp(`.${extension}$`), '');
|
|
80
90
|
}
|
|
81
91
|
|
|
82
92
|
//# sourceMappingURL=url.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/url.ts"],"sourcesContent":["import dns from 'dns';\nimport { URL } from 'url';\n\nimport { fetchAsync } from '../api/rest/client';\n\n/** Check if a server is available based on the URL. */\nexport function isUrlAvailableAsync(url: string): Promise<boolean> {\n return new Promise<boolean>((resolve) => {\n dns.lookup(url, (err) => {\n resolve(!err);\n });\n });\n}\n\n/** Check if a request to the given URL is `ok` (status 200). */\nexport async function isUrlOk(url: string): Promise<boolean> {\n try {\n const res = await fetchAsync(url);\n return res.ok;\n } catch {\n return false;\n }\n}\n\n/** Determine if a string is a valid URL, can optionally ensure certain protocols (like `https` or `exp`) are adhered to. */\nexport function validateUrl(\n urlString: string,\n {\n protocols,\n requireProtocol,\n }: {\n /** Set of allowed protocols for the string to adhere to. @example ['exp', 'https'] */\n protocols?: string[];\n /** Ensure the URL has a protocol component (prefix before `://`). */\n requireProtocol?: boolean;\n } = {}\n) {\n try {\n const results = new URL(urlString);\n if (!results.protocol && !requireProtocol) {\n return true;\n }\n return protocols\n ? results.protocol\n ? protocols.map((x) => `${x.toLowerCase()}:`).includes(results.protocol)\n : false\n : true;\n } catch {\n return false;\n }\n}\n\n/** Remove the port from a given `host` URL string. */\nexport function stripPort(host?: string): string | null {\n return coerceUrl(host)?.hostname ?? null;\n}\n\nfunction coerceUrl(urlString?: string): URL | null {\n if (!urlString) {\n return null;\n }\n try {\n return new URL('/', urlString);\n } catch {\n return new URL('/', `http://${urlString}`);\n }\n}\n\n/** Strip a given extension from a URL string. */\nexport function stripExtension(url: string, extension: string): string {\n return url.replace(new RegExp(`.${extension}$`), '');\n}\n"],"names":["isUrlAvailableAsync","isUrlOk","
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/url.ts"],"sourcesContent":["import dns from 'dns';\nimport { URL } from 'url';\n\nimport { fetchAsync } from '../api/rest/client';\n\n/** Check if a server is available based on the URL. */\nexport function isUrlAvailableAsync(url: string): Promise<boolean> {\n return new Promise<boolean>((resolve) => {\n dns.lookup(url, (err) => {\n resolve(!err);\n });\n });\n}\n\n/** Check if a request to the given URL is `ok` (status 200). */\nexport async function isUrlOk(url: string): Promise<boolean> {\n try {\n const res = await fetchAsync(url);\n return res.ok;\n } catch {\n return false;\n }\n}\n\n/** Determine if a string is a valid URL, can optionally ensure certain protocols (like `https` or `exp`) are adhered to. */\nexport function validateUrl(\n urlString: string,\n {\n protocols,\n requireProtocol,\n }: {\n /** Set of allowed protocols for the string to adhere to. @example ['exp', 'https'] */\n protocols?: string[];\n /** Ensure the URL has a protocol component (prefix before `://`). */\n requireProtocol?: boolean;\n } = {}\n) {\n try {\n const results = new URL(urlString);\n if (!results.protocol && !requireProtocol) {\n return true;\n }\n return protocols\n ? results.protocol\n ? protocols.map((x) => `${x.toLowerCase()}:`).includes(results.protocol)\n : false\n : true;\n } catch {\n return false;\n }\n}\n\n/** Remove the port from a given `host` URL string. */\nexport function stripPort(host?: string): string | null {\n return coerceUrl(host)?.hostname ?? null;\n}\n\nfunction coerceUrl(urlString?: string): URL | null {\n if (!urlString) {\n return null;\n }\n try {\n return new URL('/', urlString);\n } catch {\n return new URL('/', `http://${urlString}`);\n }\n}\n\n/** Strip a given extension from a URL string. */\nexport function stripExtension(url: string, extension: string): string {\n return url.replace(new RegExp(`.${extension}$`), '');\n}\n"],"names":["isUrlAvailableAsync","isUrlOk","stripExtension","stripPort","validateUrl","url","Promise","resolve","dns","lookup","err","res","fetchAsync","ok","urlString","protocols","requireProtocol","results","URL","protocol","map","x","toLowerCase","includes","host","coerceUrl","hostname","extension","replace","RegExp"],"mappings":";;;;;;;;;;;IAMgBA,mBAAmB;eAAnBA;;IASMC,OAAO;eAAPA;;IAsDNC,cAAc;eAAdA;;IAhBAC,SAAS;eAATA;;IA5BAC,WAAW;eAAXA;;;;gEAzBA;;;;;;;yBACI;;;;;;wBAEO;;;;;;AAGpB,SAASJ,oBAAoBK,GAAW;IAC7C,OAAO,IAAIC,QAAiB,CAACC;QAC3BC,cAAG,CAACC,MAAM,CAACJ,KAAK,CAACK;YACfH,QAAQ,CAACG;QACX;IACF;AACF;AAGO,eAAeT,QAAQI,GAAW;IACvC,IAAI;QACF,MAAMM,MAAM,MAAMC,IAAAA,kBAAU,EAACP;QAC7B,OAAOM,IAAIE,EAAE;IACf,EAAE,OAAM;QACN,OAAO;IACT;AACF;AAGO,SAAST,YACdU,SAAiB,EACjB,EACEC,SAAS,EACTC,eAAe,EAMhB,GAAG,CAAC,CAAC;IAEN,IAAI;QACF,MAAMC,UAAU,IAAIC,CAAAA,MAAE,KAAC,CAACJ;QACxB,IAAI,CAACG,QAAQE,QAAQ,IAAI,CAACH,iBAAiB;YACzC,OAAO;QACT;QACA,OAAOD,YACHE,QAAQE,QAAQ,GACdJ,UAAUK,GAAG,CAAC,CAACC,IAAM,GAAGA,EAAEC,WAAW,GAAG,CAAC,CAAC,EAAEC,QAAQ,CAACN,QAAQE,QAAQ,IACrE,QACF;IACN,EAAE,OAAM;QACN,OAAO;IACT;AACF;AAGO,SAAShB,UAAUqB,IAAa;QAC9BC;IAAP,OAAOA,EAAAA,aAAAA,UAAUD,0BAAVC,WAAiBC,QAAQ,KAAI;AACtC;AAEA,SAASD,UAAUX,SAAkB;IACnC,IAAI,CAACA,WAAW;QACd,OAAO;IACT;IACA,IAAI;QACF,OAAO,IAAII,CAAAA,MAAE,KAAC,CAAC,KAAKJ;IACtB,EAAE,OAAM;QACN,OAAO,IAAII,CAAAA,MAAE,KAAC,CAAC,KAAK,CAAC,OAAO,EAAEJ,WAAW;IAC3C;AACF;AAGO,SAASZ,eAAeG,GAAW,EAAEsB,SAAiB;IAC3D,OAAOtB,IAAIuB,OAAO,CAAC,IAAIC,OAAO,CAAC,CAAC,EAAEF,UAAU,CAAC,CAAC,GAAG;AACnD"}
|
|
@@ -9,27 +9,49 @@ function _export(target, all) {
|
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
11
|
_export(exports, {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
12
|
+
assertValidBundleId: function() {
|
|
13
|
+
return assertValidBundleId;
|
|
14
|
+
},
|
|
15
|
+
assertValidPackage: function() {
|
|
16
|
+
return assertValidPackage;
|
|
17
|
+
},
|
|
18
|
+
getBundleIdWarningAsync: function() {
|
|
19
|
+
return getBundleIdWarningAsync;
|
|
20
|
+
},
|
|
21
|
+
getBundleIdWarningInternalAsync: function() {
|
|
22
|
+
return getBundleIdWarningInternalAsync;
|
|
23
|
+
},
|
|
24
|
+
getPackageNameWarningAsync: function() {
|
|
25
|
+
return getPackageNameWarningAsync;
|
|
26
|
+
},
|
|
27
|
+
getPackageNameWarningInternalAsync: function() {
|
|
28
|
+
return getPackageNameWarningInternalAsync;
|
|
29
|
+
},
|
|
30
|
+
getSanitizedBundleIdentifier: function() {
|
|
31
|
+
return getSanitizedBundleIdentifier;
|
|
32
|
+
},
|
|
33
|
+
getSanitizedPackage: function() {
|
|
34
|
+
return getSanitizedPackage;
|
|
35
|
+
},
|
|
36
|
+
validateBundleId: function() {
|
|
37
|
+
return validateBundleId;
|
|
38
|
+
},
|
|
39
|
+
validatePackage: function() {
|
|
40
|
+
return validatePackage;
|
|
41
|
+
},
|
|
42
|
+
validatePackageWithWarning: function() {
|
|
43
|
+
return validatePackageWithWarning;
|
|
44
|
+
}
|
|
23
45
|
});
|
|
24
46
|
function _assert() {
|
|
25
|
-
const data = /*#__PURE__*/
|
|
47
|
+
const data = /*#__PURE__*/ _interop_require_default(require("assert"));
|
|
26
48
|
_assert = function() {
|
|
27
49
|
return data;
|
|
28
50
|
};
|
|
29
51
|
return data;
|
|
30
52
|
}
|
|
31
53
|
function _chalk() {
|
|
32
|
-
const data = /*#__PURE__*/
|
|
54
|
+
const data = /*#__PURE__*/ _interop_require_default(require("chalk"));
|
|
33
55
|
_chalk = function() {
|
|
34
56
|
return data;
|
|
35
57
|
};
|
|
@@ -40,12 +62,12 @@ const _fn = require("./fn");
|
|
|
40
62
|
const _link = require("./link");
|
|
41
63
|
const _url = require("./url");
|
|
42
64
|
const _log = require("../log");
|
|
43
|
-
function
|
|
65
|
+
function _interop_require_default(obj) {
|
|
44
66
|
return obj && obj.__esModule ? obj : {
|
|
45
67
|
default: obj
|
|
46
68
|
};
|
|
47
69
|
}
|
|
48
|
-
const debug = require(
|
|
70
|
+
const debug = require('debug')('expo:utils:validateApplicationId');
|
|
49
71
|
// TODO: Adjust to indicate that the bundle identifier must start with a letter, period, or hyphen.
|
|
50
72
|
const IOS_BUNDLE_ID_REGEX = /^[a-zA-Z0-9-.]+$/;
|
|
51
73
|
const ANDROID_PACKAGE_REGEX = /^[a-zA-Z][a-zA-Z0-9_]*(\.[a-zA-Z][a-zA-Z0-9_]*)+$/;
|
|
@@ -56,7 +78,7 @@ function validatePackage(value) {
|
|
|
56
78
|
return validatePackageWithWarning(value) === true;
|
|
57
79
|
}
|
|
58
80
|
function validatePackageWithWarning(value) {
|
|
59
|
-
const parts = value.split(
|
|
81
|
+
const parts = value.split('.');
|
|
60
82
|
for (const segment of parts){
|
|
61
83
|
if (RESERVED_ANDROID_PACKAGE_NAME_SEGMENTS.includes(segment)) {
|
|
62
84
|
return `"${segment}" is a reserved Java keyword.`;
|
|
@@ -76,24 +98,24 @@ function getSanitizedPackage(value) {
|
|
|
76
98
|
// https://docs.oracle.com/javase/tutorial/java/package/namingpkgs.html
|
|
77
99
|
// However, life is much nicer when the bundle identifier and package name are the same and iOS has the inverse rule— converting underscores to hyphens.
|
|
78
100
|
// So we'll simply remove hyphens and illegal characters for Android.
|
|
79
|
-
.replace(/[^a-zA-Z0-9_.]/g,
|
|
80
|
-
.replace(/\.+/g,
|
|
81
|
-
.replace(/^\.|\.$/g,
|
|
82
|
-
output ||=
|
|
101
|
+
.replace(/[^a-zA-Z0-9_.]/g, '')// Prevent multiple '.' in a row (e.g. no zero-length segments).
|
|
102
|
+
.replace(/\.+/g, '.')// Prevent '.' from the start or end.
|
|
103
|
+
.replace(/^\.|\.$/g, '');
|
|
104
|
+
output ||= 'app';
|
|
83
105
|
// Prepend extra segments
|
|
84
|
-
let segments = output.split(
|
|
106
|
+
let segments = output.split('.').length;
|
|
85
107
|
while(segments < 2){
|
|
86
108
|
output = `com.${output}`;
|
|
87
109
|
segments += 1;
|
|
88
110
|
}
|
|
89
111
|
// Ensure each dot has a letter or number after it
|
|
90
|
-
output = output.split(
|
|
91
|
-
segment = /^[a-zA-Z]/.test(segment) ? segment :
|
|
112
|
+
output = output.split('.').map((segment)=>{
|
|
113
|
+
segment = /^[a-zA-Z]/.test(segment) ? segment : 'x' + segment;
|
|
92
114
|
if (RESERVED_ANDROID_PACKAGE_NAME_SEGMENTS.includes(segment)) {
|
|
93
|
-
segment =
|
|
115
|
+
segment = 'x' + segment;
|
|
94
116
|
}
|
|
95
117
|
return segment;
|
|
96
|
-
}).join(
|
|
118
|
+
}).join('.');
|
|
97
119
|
return output;
|
|
98
120
|
}
|
|
99
121
|
function getSanitizedBundleIdentifier(value) {
|
|
@@ -101,71 +123,71 @@ function getSanitizedBundleIdentifier(value) {
|
|
|
101
123
|
// Must start with a letter, period, or hyphen (not number).
|
|
102
124
|
// Can only contain alphanumeric characters, periods, and hyphens.
|
|
103
125
|
// Can have empty segments (e.g. com.example..app).
|
|
104
|
-
return value.replace(/(^[^a-zA-Z.-]|[^a-zA-Z0-9-.])/g,
|
|
126
|
+
return value.replace(/(^[^a-zA-Z.-]|[^a-zA-Z0-9-.])/g, '-');
|
|
105
127
|
}
|
|
106
128
|
// https://en.wikipedia.org/wiki/List_of_Java_keywords
|
|
107
129
|
// Running the following in the console and pruning the "Reserved Identifiers" section:
|
|
108
130
|
// [...document.querySelectorAll('dl > dt > code')].map(node => node.innerText)
|
|
109
131
|
const RESERVED_ANDROID_PACKAGE_NAME_SEGMENTS = [
|
|
110
132
|
// List of Java keywords
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
133
|
+
'_',
|
|
134
|
+
'abstract',
|
|
135
|
+
'assert',
|
|
136
|
+
'boolean',
|
|
137
|
+
'break',
|
|
138
|
+
'byte',
|
|
139
|
+
'case',
|
|
140
|
+
'catch',
|
|
141
|
+
'char',
|
|
142
|
+
'class',
|
|
143
|
+
'const',
|
|
144
|
+
'continue',
|
|
145
|
+
'default',
|
|
146
|
+
'do',
|
|
147
|
+
'double',
|
|
148
|
+
'else',
|
|
149
|
+
'enum',
|
|
150
|
+
'extends',
|
|
151
|
+
'final',
|
|
152
|
+
'finally',
|
|
153
|
+
'float',
|
|
154
|
+
'for',
|
|
155
|
+
'goto',
|
|
156
|
+
'if',
|
|
157
|
+
'implements',
|
|
158
|
+
'import',
|
|
159
|
+
'instanceof',
|
|
160
|
+
'int',
|
|
161
|
+
'interface',
|
|
162
|
+
'long',
|
|
163
|
+
'native',
|
|
164
|
+
'new',
|
|
165
|
+
'package',
|
|
166
|
+
'private',
|
|
167
|
+
'protected',
|
|
168
|
+
'public',
|
|
169
|
+
'return',
|
|
170
|
+
'short',
|
|
171
|
+
'static',
|
|
172
|
+
'super',
|
|
173
|
+
'switch',
|
|
174
|
+
'synchronized',
|
|
175
|
+
'this',
|
|
176
|
+
'throw',
|
|
177
|
+
'throws',
|
|
178
|
+
'transient',
|
|
179
|
+
'try',
|
|
180
|
+
'void',
|
|
181
|
+
'volatile',
|
|
182
|
+
'while',
|
|
161
183
|
// Reserved words for literal values
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
184
|
+
'true',
|
|
185
|
+
'false',
|
|
186
|
+
'null',
|
|
165
187
|
// Unused
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
188
|
+
'const',
|
|
189
|
+
'goto',
|
|
190
|
+
'strictfp'
|
|
169
191
|
];
|
|
170
192
|
function assertValidBundleId(value) {
|
|
171
193
|
_assert().default.match(value, IOS_BUNDLE_ID_REGEX, `The ios.bundleIdentifier defined in your Expo config is not formatted properly. Only alphanumeric characters, '.', '-', and '_' are allowed, and each '.' must be followed by a letter.`);
|
|
@@ -175,10 +197,10 @@ function assertValidPackage(value) {
|
|
|
175
197
|
}
|
|
176
198
|
async function getBundleIdWarningInternalAsync(bundleId) {
|
|
177
199
|
if (_env.env.EXPO_OFFLINE) {
|
|
178
|
-
_log.Log.warn(
|
|
200
|
+
_log.Log.warn('Skipping Apple bundle identifier reservation validation in offline-mode.');
|
|
179
201
|
return null;
|
|
180
202
|
}
|
|
181
|
-
if (!await (0, _url.isUrlAvailableAsync)(
|
|
203
|
+
if (!await (0, _url.isUrlAvailableAsync)('itunes.apple.com')) {
|
|
182
204
|
debug(`Couldn't connect to iTunes Store to check bundle ID ${bundleId}. itunes.apple.com may be down.`);
|
|
183
205
|
// If no network, simply skip the warnings since they'll just lead to more confusion.
|
|
184
206
|
return null;
|
|
@@ -201,10 +223,10 @@ async function getBundleIdWarningInternalAsync(bundleId) {
|
|
|
201
223
|
const getBundleIdWarningAsync = (0, _fn.memoize)(getBundleIdWarningInternalAsync);
|
|
202
224
|
async function getPackageNameWarningInternalAsync(packageName) {
|
|
203
225
|
if (_env.env.EXPO_OFFLINE) {
|
|
204
|
-
_log.Log.warn(
|
|
226
|
+
_log.Log.warn('Skipping Android package name reservation validation in offline-mode.');
|
|
205
227
|
return null;
|
|
206
228
|
}
|
|
207
|
-
if (!await (0, _url.isUrlAvailableAsync)(
|
|
229
|
+
if (!await (0, _url.isUrlAvailableAsync)('play.google.com')) {
|
|
208
230
|
debug(`Couldn't connect to Play Store to check package name ${packageName}. play.google.com may be down.`);
|
|
209
231
|
// If no network, simply skip the warnings since they'll just lead to more confusion.
|
|
210
232
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/validateApplicationId.ts"],"sourcesContent":["import assert from 'assert';\nimport chalk from 'chalk';\n\nimport { env } from './env';\nimport { memoize } from './fn';\nimport { learnMore } from './link';\nimport { isUrlAvailableAsync } from './url';\nimport { Log } from '../log';\n\nconst debug = require('debug')('expo:utils:validateApplicationId') as typeof console.log;\n\n// TODO: Adjust to indicate that the bundle identifier must start with a letter, period, or hyphen.\nconst IOS_BUNDLE_ID_REGEX = /^[a-zA-Z0-9-.]+$/;\nconst ANDROID_PACKAGE_REGEX = /^[a-zA-Z][a-zA-Z0-9_]*(\\.[a-zA-Z][a-zA-Z0-9_]*)+$/;\n\n/** Validate an iOS bundle identifier. */\nexport function validateBundleId(value: string): boolean {\n return IOS_BUNDLE_ID_REGEX.test(value);\n}\n\n/** Validate an Android package name. */\nexport function validatePackage(value: string): boolean {\n return validatePackageWithWarning(value) === true;\n}\n\n/** Validate an Android package name and return the reason if invalid. */\nexport function validatePackageWithWarning(value: string): true | string {\n const parts = value.split('.');\n for (const segment of parts) {\n if (RESERVED_ANDROID_PACKAGE_NAME_SEGMENTS.includes(segment)) {\n return `\"${segment}\" is a reserved Java keyword.`;\n }\n }\n if (parts.length < 2) {\n return `Package name must contain more than one segment, separated by \".\", e.g. com.${value}`;\n }\n if (!ANDROID_PACKAGE_REGEX.test(value)) {\n return 'Invalid characters in Android package name. Only alphanumeric characters, \".\" and \"_\" are allowed, and each segment start with a letter.';\n }\n\n return true;\n}\n\nexport function getSanitizedPackage(value: string) {\n // It's common to use dashes in your node project name, strip them from the suggested package name.\n let output = value\n // Oracle recommends package names are \"legalized\" by converting hyphen to an underscore and removing unsupported characters\n // https://docs.oracle.com/javase/tutorial/java/package/namingpkgs.html\n // However, life is much nicer when the bundle identifier and package name are the same and iOS has the inverse rule— converting underscores to hyphens.\n // So we'll simply remove hyphens and illegal characters for Android.\n .replace(/[^a-zA-Z0-9_.]/g, '')\n // Prevent multiple '.' in a row (e.g. no zero-length segments).\n .replace(/\\.+/g, '.')\n // Prevent '.' from the start or end.\n .replace(/^\\.|\\.$/g, '');\n\n output ||= 'app';\n\n // Prepend extra segments\n let segments = output.split('.').length;\n while (segments < 2) {\n output = `com.${output}`;\n segments += 1;\n }\n\n // Ensure each dot has a letter or number after it\n output = output\n .split('.')\n .map((segment) => {\n segment = /^[a-zA-Z]/.test(segment) ? segment : 'x' + segment;\n\n if (RESERVED_ANDROID_PACKAGE_NAME_SEGMENTS.includes(segment)) {\n segment = 'x' + segment;\n }\n return segment;\n })\n .join('.');\n\n return output;\n}\n\nexport function getSanitizedBundleIdentifier(value: string) {\n // According to the behavior observed when using the UI in Xcode.\n // Must start with a letter, period, or hyphen (not number).\n // Can only contain alphanumeric characters, periods, and hyphens.\n // Can have empty segments (e.g. com.example..app).\n return value.replace(/(^[^a-zA-Z.-]|[^a-zA-Z0-9-.])/g, '-');\n}\n\n// https://en.wikipedia.org/wiki/List_of_Java_keywords\n// Running the following in the console and pruning the \"Reserved Identifiers\" section:\n// [...document.querySelectorAll('dl > dt > code')].map(node => node.innerText)\nconst RESERVED_ANDROID_PACKAGE_NAME_SEGMENTS = [\n // List of Java keywords\n '_',\n 'abstract',\n 'assert',\n 'boolean',\n 'break',\n 'byte',\n 'case',\n 'catch',\n 'char',\n 'class',\n 'const',\n 'continue',\n 'default',\n 'do',\n 'double',\n 'else',\n 'enum',\n 'extends',\n 'final',\n 'finally',\n 'float',\n 'for',\n 'goto',\n 'if',\n 'implements',\n 'import',\n 'instanceof',\n 'int',\n 'interface',\n 'long',\n 'native',\n 'new',\n 'package',\n 'private',\n 'protected',\n 'public',\n 'return',\n 'short',\n 'static',\n 'super',\n 'switch',\n 'synchronized',\n 'this',\n 'throw',\n 'throws',\n 'transient',\n 'try',\n 'void',\n 'volatile',\n 'while',\n // Reserved words for literal values\n 'true',\n 'false',\n 'null',\n // Unused\n 'const',\n 'goto',\n 'strictfp',\n];\n\nexport function assertValidBundleId(value: string) {\n assert.match(\n value,\n IOS_BUNDLE_ID_REGEX,\n `The ios.bundleIdentifier defined in your Expo config is not formatted properly. Only alphanumeric characters, '.', '-', and '_' are allowed, and each '.' must be followed by a letter.`\n );\n}\n\nexport function assertValidPackage(value: string) {\n assert.match(\n value,\n ANDROID_PACKAGE_REGEX,\n `Invalid format of Android package name. Only alphanumeric characters, '.' and '_' are allowed, and each '.' must be followed by a letter. Reserved Java keywords are not allowed.`\n );\n}\n\n/** @private */\nexport async function getBundleIdWarningInternalAsync(bundleId: string): Promise<string | null> {\n if (env.EXPO_OFFLINE) {\n Log.warn('Skipping Apple bundle identifier reservation validation in offline-mode.');\n return null;\n }\n\n if (!(await isUrlAvailableAsync('itunes.apple.com'))) {\n debug(\n `Couldn't connect to iTunes Store to check bundle ID ${bundleId}. itunes.apple.com may be down.`\n );\n // If no network, simply skip the warnings since they'll just lead to more confusion.\n return null;\n }\n\n const url = `http://itunes.apple.com/lookup?bundleId=${bundleId}`;\n try {\n debug(`Checking iOS bundle ID '${bundleId}' at: ${url}`);\n const response = await fetch(url);\n const json: any = await response.json();\n if (json.resultCount > 0) {\n const firstApp = json.results[0];\n return formatInUseWarning(firstApp.trackName, firstApp.sellerName, bundleId);\n }\n } catch (error: any) {\n debug(`Error checking bundle ID ${bundleId}: ${error.message}`);\n // Error fetching itunes data.\n }\n return null;\n}\n\n/** Returns a warning message if an iOS bundle identifier is potentially already in use. */\nexport const getBundleIdWarningAsync = memoize(getBundleIdWarningInternalAsync);\n\n/** @private */\nexport async function getPackageNameWarningInternalAsync(\n packageName: string\n): Promise<string | null> {\n if (env.EXPO_OFFLINE) {\n Log.warn('Skipping Android package name reservation validation in offline-mode.');\n return null;\n }\n\n if (!(await isUrlAvailableAsync('play.google.com'))) {\n debug(\n `Couldn't connect to Play Store to check package name ${packageName}. play.google.com may be down.`\n );\n // If no network, simply skip the warnings since they'll just lead to more confusion.\n return null;\n }\n\n const url = `https://play.google.com/store/apps/details?id=${packageName}`;\n try {\n debug(`Checking Android package name '${packageName}' at: ${url}`);\n const response = await fetch(url);\n // If the page exists, then warn the user.\n if (response.status === 200) {\n // There is no JSON API for the Play Store so we can't concisely\n // locate the app name and developer to match the iOS warning.\n return `⚠️ The package ${chalk.bold(packageName)} is already in use. ${chalk.dim(\n learnMore(url)\n )}`;\n }\n } catch (error: any) {\n // Error fetching play store data or the page doesn't exist.\n debug(`Error checking package name ${packageName}: ${error.message}`);\n }\n return null;\n}\n\nfunction formatInUseWarning(appName: string, author: string, id: string): string {\n return `⚠️ The app ${chalk.bold(appName)} by ${chalk.italic(\n author\n )} is already using ${chalk.bold(id)}`;\n}\n\n/** Returns a warning message if an Android package name is potentially already in use. */\nexport const getPackageNameWarningAsync = memoize(getPackageNameWarningInternalAsync);\n"],"names":["validateBundleId","validatePackage","validatePackageWithWarning","getSanitizedPackage","getSanitizedBundleIdentifier","assertValidBundleId","assertValidPackage","getBundleIdWarningInternalAsync","getBundleIdWarningAsync","getPackageNameWarningInternalAsync","getPackageNameWarningAsync","debug","require","IOS_BUNDLE_ID_REGEX","ANDROID_PACKAGE_REGEX","value","test","parts","split","segment","RESERVED_ANDROID_PACKAGE_NAME_SEGMENTS","includes","length","output","replace","segments","map","join","assert","match","bundleId","env","EXPO_OFFLINE","Log","warn","isUrlAvailableAsync","url","response","fetch","json","resultCount","firstApp","results","formatInUseWarning","trackName","sellerName","error","message","memoize","packageName","status","chalk","bold","dim","learnMore","appName","author","id","italic"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/validateApplicationId.ts"],"sourcesContent":["import assert from 'assert';\nimport chalk from 'chalk';\n\nimport { env } from './env';\nimport { memoize } from './fn';\nimport { learnMore } from './link';\nimport { isUrlAvailableAsync } from './url';\nimport { Log } from '../log';\n\nconst debug = require('debug')('expo:utils:validateApplicationId') as typeof console.log;\n\n// TODO: Adjust to indicate that the bundle identifier must start with a letter, period, or hyphen.\nconst IOS_BUNDLE_ID_REGEX = /^[a-zA-Z0-9-.]+$/;\nconst ANDROID_PACKAGE_REGEX = /^[a-zA-Z][a-zA-Z0-9_]*(\\.[a-zA-Z][a-zA-Z0-9_]*)+$/;\n\n/** Validate an iOS bundle identifier. */\nexport function validateBundleId(value: string): boolean {\n return IOS_BUNDLE_ID_REGEX.test(value);\n}\n\n/** Validate an Android package name. */\nexport function validatePackage(value: string): boolean {\n return validatePackageWithWarning(value) === true;\n}\n\n/** Validate an Android package name and return the reason if invalid. */\nexport function validatePackageWithWarning(value: string): true | string {\n const parts = value.split('.');\n for (const segment of parts) {\n if (RESERVED_ANDROID_PACKAGE_NAME_SEGMENTS.includes(segment)) {\n return `\"${segment}\" is a reserved Java keyword.`;\n }\n }\n if (parts.length < 2) {\n return `Package name must contain more than one segment, separated by \".\", e.g. com.${value}`;\n }\n if (!ANDROID_PACKAGE_REGEX.test(value)) {\n return 'Invalid characters in Android package name. Only alphanumeric characters, \".\" and \"_\" are allowed, and each segment start with a letter.';\n }\n\n return true;\n}\n\nexport function getSanitizedPackage(value: string) {\n // It's common to use dashes in your node project name, strip them from the suggested package name.\n let output = value\n // Oracle recommends package names are \"legalized\" by converting hyphen to an underscore and removing unsupported characters\n // https://docs.oracle.com/javase/tutorial/java/package/namingpkgs.html\n // However, life is much nicer when the bundle identifier and package name are the same and iOS has the inverse rule— converting underscores to hyphens.\n // So we'll simply remove hyphens and illegal characters for Android.\n .replace(/[^a-zA-Z0-9_.]/g, '')\n // Prevent multiple '.' in a row (e.g. no zero-length segments).\n .replace(/\\.+/g, '.')\n // Prevent '.' from the start or end.\n .replace(/^\\.|\\.$/g, '');\n\n output ||= 'app';\n\n // Prepend extra segments\n let segments = output.split('.').length;\n while (segments < 2) {\n output = `com.${output}`;\n segments += 1;\n }\n\n // Ensure each dot has a letter or number after it\n output = output\n .split('.')\n .map((segment) => {\n segment = /^[a-zA-Z]/.test(segment) ? segment : 'x' + segment;\n\n if (RESERVED_ANDROID_PACKAGE_NAME_SEGMENTS.includes(segment)) {\n segment = 'x' + segment;\n }\n return segment;\n })\n .join('.');\n\n return output;\n}\n\nexport function getSanitizedBundleIdentifier(value: string) {\n // According to the behavior observed when using the UI in Xcode.\n // Must start with a letter, period, or hyphen (not number).\n // Can only contain alphanumeric characters, periods, and hyphens.\n // Can have empty segments (e.g. com.example..app).\n return value.replace(/(^[^a-zA-Z.-]|[^a-zA-Z0-9-.])/g, '-');\n}\n\n// https://en.wikipedia.org/wiki/List_of_Java_keywords\n// Running the following in the console and pruning the \"Reserved Identifiers\" section:\n// [...document.querySelectorAll('dl > dt > code')].map(node => node.innerText)\nconst RESERVED_ANDROID_PACKAGE_NAME_SEGMENTS = [\n // List of Java keywords\n '_',\n 'abstract',\n 'assert',\n 'boolean',\n 'break',\n 'byte',\n 'case',\n 'catch',\n 'char',\n 'class',\n 'const',\n 'continue',\n 'default',\n 'do',\n 'double',\n 'else',\n 'enum',\n 'extends',\n 'final',\n 'finally',\n 'float',\n 'for',\n 'goto',\n 'if',\n 'implements',\n 'import',\n 'instanceof',\n 'int',\n 'interface',\n 'long',\n 'native',\n 'new',\n 'package',\n 'private',\n 'protected',\n 'public',\n 'return',\n 'short',\n 'static',\n 'super',\n 'switch',\n 'synchronized',\n 'this',\n 'throw',\n 'throws',\n 'transient',\n 'try',\n 'void',\n 'volatile',\n 'while',\n // Reserved words for literal values\n 'true',\n 'false',\n 'null',\n // Unused\n 'const',\n 'goto',\n 'strictfp',\n];\n\nexport function assertValidBundleId(value: string) {\n assert.match(\n value,\n IOS_BUNDLE_ID_REGEX,\n `The ios.bundleIdentifier defined in your Expo config is not formatted properly. Only alphanumeric characters, '.', '-', and '_' are allowed, and each '.' must be followed by a letter.`\n );\n}\n\nexport function assertValidPackage(value: string) {\n assert.match(\n value,\n ANDROID_PACKAGE_REGEX,\n `Invalid format of Android package name. Only alphanumeric characters, '.' and '_' are allowed, and each '.' must be followed by a letter. Reserved Java keywords are not allowed.`\n );\n}\n\n/** @private */\nexport async function getBundleIdWarningInternalAsync(bundleId: string): Promise<string | null> {\n if (env.EXPO_OFFLINE) {\n Log.warn('Skipping Apple bundle identifier reservation validation in offline-mode.');\n return null;\n }\n\n if (!(await isUrlAvailableAsync('itunes.apple.com'))) {\n debug(\n `Couldn't connect to iTunes Store to check bundle ID ${bundleId}. itunes.apple.com may be down.`\n );\n // If no network, simply skip the warnings since they'll just lead to more confusion.\n return null;\n }\n\n const url = `http://itunes.apple.com/lookup?bundleId=${bundleId}`;\n try {\n debug(`Checking iOS bundle ID '${bundleId}' at: ${url}`);\n const response = await fetch(url);\n const json: any = await response.json();\n if (json.resultCount > 0) {\n const firstApp = json.results[0];\n return formatInUseWarning(firstApp.trackName, firstApp.sellerName, bundleId);\n }\n } catch (error: any) {\n debug(`Error checking bundle ID ${bundleId}: ${error.message}`);\n // Error fetching itunes data.\n }\n return null;\n}\n\n/** Returns a warning message if an iOS bundle identifier is potentially already in use. */\nexport const getBundleIdWarningAsync = memoize(getBundleIdWarningInternalAsync);\n\n/** @private */\nexport async function getPackageNameWarningInternalAsync(\n packageName: string\n): Promise<string | null> {\n if (env.EXPO_OFFLINE) {\n Log.warn('Skipping Android package name reservation validation in offline-mode.');\n return null;\n }\n\n if (!(await isUrlAvailableAsync('play.google.com'))) {\n debug(\n `Couldn't connect to Play Store to check package name ${packageName}. play.google.com may be down.`\n );\n // If no network, simply skip the warnings since they'll just lead to more confusion.\n return null;\n }\n\n const url = `https://play.google.com/store/apps/details?id=${packageName}`;\n try {\n debug(`Checking Android package name '${packageName}' at: ${url}`);\n const response = await fetch(url);\n // If the page exists, then warn the user.\n if (response.status === 200) {\n // There is no JSON API for the Play Store so we can't concisely\n // locate the app name and developer to match the iOS warning.\n return `⚠️ The package ${chalk.bold(packageName)} is already in use. ${chalk.dim(\n learnMore(url)\n )}`;\n }\n } catch (error: any) {\n // Error fetching play store data or the page doesn't exist.\n debug(`Error checking package name ${packageName}: ${error.message}`);\n }\n return null;\n}\n\nfunction formatInUseWarning(appName: string, author: string, id: string): string {\n return `⚠️ The app ${chalk.bold(appName)} by ${chalk.italic(\n author\n )} is already using ${chalk.bold(id)}`;\n}\n\n/** Returns a warning message if an Android package name is potentially already in use. */\nexport const getPackageNameWarningAsync = memoize(getPackageNameWarningInternalAsync);\n"],"names":["assertValidBundleId","assertValidPackage","getBundleIdWarningAsync","getBundleIdWarningInternalAsync","getPackageNameWarningAsync","getPackageNameWarningInternalAsync","getSanitizedBundleIdentifier","getSanitizedPackage","validateBundleId","validatePackage","validatePackageWithWarning","debug","require","IOS_BUNDLE_ID_REGEX","ANDROID_PACKAGE_REGEX","value","test","parts","split","segment","RESERVED_ANDROID_PACKAGE_NAME_SEGMENTS","includes","length","output","replace","segments","map","join","assert","match","bundleId","env","EXPO_OFFLINE","Log","warn","isUrlAvailableAsync","url","response","fetch","json","resultCount","firstApp","results","formatInUseWarning","trackName","sellerName","error","message","memoize","packageName","status","chalk","bold","dim","learnMore","appName","author","id","italic"],"mappings":"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"}
|
|
@@ -9,19 +9,25 @@ function _export(target, all) {
|
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
11
|
_export(exports, {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
assertUnexpectedObjectKeys: function() {
|
|
13
|
+
return assertUnexpectedObjectKeys;
|
|
14
|
+
},
|
|
15
|
+
assertUnexpectedVariadicFlags: function() {
|
|
16
|
+
return assertUnexpectedVariadicFlags;
|
|
17
|
+
},
|
|
18
|
+
parseVariadicArguments: function() {
|
|
19
|
+
return parseVariadicArguments;
|
|
20
|
+
}
|
|
15
21
|
});
|
|
16
22
|
const _errors = require("../utils/errors");
|
|
17
|
-
const debug = require(
|
|
23
|
+
const debug = require('debug')('expo:utils:variadic');
|
|
18
24
|
function parseVariadicArguments(argv) {
|
|
19
25
|
const variadic = [];
|
|
20
26
|
const flags = {};
|
|
21
27
|
for (const arg of argv){
|
|
22
|
-
if (!arg.startsWith(
|
|
28
|
+
if (!arg.startsWith('-')) {
|
|
23
29
|
variadic.push(arg);
|
|
24
|
-
} else if (arg ===
|
|
30
|
+
} else if (arg === '--') {
|
|
25
31
|
break;
|
|
26
32
|
} else {
|
|
27
33
|
flags[arg] = true;
|
|
@@ -29,14 +35,14 @@ function parseVariadicArguments(argv) {
|
|
|
29
35
|
}
|
|
30
36
|
// Everything after `--` that is not an option is passed to the underlying install command.
|
|
31
37
|
const extras = [];
|
|
32
|
-
const extraOperator = argv.indexOf(
|
|
38
|
+
const extraOperator = argv.indexOf('--');
|
|
33
39
|
if (extraOperator > -1 && argv.length > extraOperator + 1) {
|
|
34
40
|
const extraArgs = argv.slice(extraOperator + 1);
|
|
35
|
-
if (extraArgs.includes(
|
|
36
|
-
throw new _errors.CommandError(
|
|
41
|
+
if (extraArgs.includes('--')) {
|
|
42
|
+
throw new _errors.CommandError('BAD_ARGS', 'Unexpected multiple --');
|
|
37
43
|
}
|
|
38
44
|
extras.push(...extraArgs);
|
|
39
|
-
debug(
|
|
45
|
+
debug('Extra arguments: ' + extras.join(', '));
|
|
40
46
|
}
|
|
41
47
|
debug(`Parsed arguments (variadic: %O, flags: %O, extra: %O)`, variadic, flags, extras);
|
|
42
48
|
return {
|
|
@@ -48,10 +54,10 @@ function parseVariadicArguments(argv) {
|
|
|
48
54
|
function assertUnexpectedObjectKeys(keys, obj) {
|
|
49
55
|
const unexpectedKeys = Object.keys(obj).filter((key)=>!keys.includes(key));
|
|
50
56
|
if (unexpectedKeys.length > 0) {
|
|
51
|
-
throw new _errors.CommandError(
|
|
57
|
+
throw new _errors.CommandError('BAD_ARGS', `Unexpected: ${unexpectedKeys.join(', ')}`);
|
|
52
58
|
}
|
|
53
59
|
}
|
|
54
|
-
function assertUnexpectedVariadicFlags(expectedFlags, { extras
|
|
60
|
+
function assertUnexpectedVariadicFlags(expectedFlags, { extras, flags, variadic }, prefixCommand = '') {
|
|
55
61
|
const unexpectedFlags = Object.keys(flags).filter((key)=>!expectedFlags.includes(key));
|
|
56
62
|
if (unexpectedFlags.length > 0) {
|
|
57
63
|
const intendedFlags = Object.entries(flags).filter(([key])=>expectedFlags.includes(key)).map(([key])=>key);
|
|
@@ -59,10 +65,10 @@ function assertUnexpectedVariadicFlags(expectedFlags, { extras , flags , variadi
|
|
|
59
65
|
prefixCommand,
|
|
60
66
|
...variadic,
|
|
61
67
|
...intendedFlags,
|
|
62
|
-
|
|
63
|
-
...extras.concat(unexpectedFlags)
|
|
64
|
-
].join(
|
|
65
|
-
throw new _errors.CommandError(
|
|
68
|
+
'--',
|
|
69
|
+
...extras.concat(unexpectedFlags)
|
|
70
|
+
].join(' ');
|
|
71
|
+
throw new _errors.CommandError('BAD_ARGS', `Unexpected: ${unexpectedFlags.join(', ')}\nDid you mean: ${cmd.trim()}`);
|
|
66
72
|
}
|
|
67
73
|
}
|
|
68
74
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/variadic.ts"],"sourcesContent":["import { CommandError } from '../utils/errors';\n\nconst debug = require('debug')('expo:utils:variadic') as typeof console.log;\n\n/** Given a list of CLI args, return a sorted set of args based on categories used in a complex command. */\nexport function parseVariadicArguments(argv: string[]): {\n variadic: string[];\n extras: string[];\n flags: Record<string, boolean | undefined>;\n} {\n const variadic: string[] = [];\n const flags: Record<string, boolean> = {};\n\n for (const arg of argv) {\n if (!arg.startsWith('-')) {\n variadic.push(arg);\n } else if (arg === '--') {\n break;\n } else {\n flags[arg] = true;\n }\n }\n\n // Everything after `--` that is not an option is passed to the underlying install command.\n const extras: string[] = [];\n\n const extraOperator = argv.indexOf('--');\n if (extraOperator > -1 && argv.length > extraOperator + 1) {\n const extraArgs = argv.slice(extraOperator + 1);\n if (extraArgs.includes('--')) {\n throw new CommandError('BAD_ARGS', 'Unexpected multiple --');\n }\n extras.push(...extraArgs);\n debug('Extra arguments: ' + extras.join(', '));\n }\n\n debug(`Parsed arguments (variadic: %O, flags: %O, extra: %O)`, variadic, flags, extras);\n\n return {\n variadic,\n flags,\n extras,\n };\n}\n\nexport function assertUnexpectedObjectKeys(keys: string[], obj: Record<string, any>): void {\n const unexpectedKeys = Object.keys(obj).filter((key) => !keys.includes(key));\n if (unexpectedKeys.length > 0) {\n throw new CommandError('BAD_ARGS', `Unexpected: ${unexpectedKeys.join(', ')}`);\n }\n}\n\nexport function assertUnexpectedVariadicFlags(\n expectedFlags: string[],\n { extras, flags, variadic }: ReturnType<typeof parseVariadicArguments>,\n prefixCommand = ''\n) {\n const unexpectedFlags = Object.keys(flags).filter((key) => !expectedFlags.includes(key));\n\n if (unexpectedFlags.length > 0) {\n const intendedFlags = Object.entries(flags)\n .filter(([key]) => expectedFlags.includes(key))\n .map(([key]) => key);\n\n const cmd = [\n prefixCommand,\n ...variadic,\n ...intendedFlags,\n '--',\n ...extras.concat(unexpectedFlags),\n ].join(' ');\n\n throw new CommandError(\n 'BAD_ARGS',\n `Unexpected: ${unexpectedFlags.join(', ')}\\nDid you mean: ${cmd.trim()}`\n );\n }\n}\n"],"names":["
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/variadic.ts"],"sourcesContent":["import { CommandError } from '../utils/errors';\n\nconst debug = require('debug')('expo:utils:variadic') as typeof console.log;\n\n/** Given a list of CLI args, return a sorted set of args based on categories used in a complex command. */\nexport function parseVariadicArguments(argv: string[]): {\n variadic: string[];\n extras: string[];\n flags: Record<string, boolean | undefined>;\n} {\n const variadic: string[] = [];\n const flags: Record<string, boolean> = {};\n\n for (const arg of argv) {\n if (!arg.startsWith('-')) {\n variadic.push(arg);\n } else if (arg === '--') {\n break;\n } else {\n flags[arg] = true;\n }\n }\n\n // Everything after `--` that is not an option is passed to the underlying install command.\n const extras: string[] = [];\n\n const extraOperator = argv.indexOf('--');\n if (extraOperator > -1 && argv.length > extraOperator + 1) {\n const extraArgs = argv.slice(extraOperator + 1);\n if (extraArgs.includes('--')) {\n throw new CommandError('BAD_ARGS', 'Unexpected multiple --');\n }\n extras.push(...extraArgs);\n debug('Extra arguments: ' + extras.join(', '));\n }\n\n debug(`Parsed arguments (variadic: %O, flags: %O, extra: %O)`, variadic, flags, extras);\n\n return {\n variadic,\n flags,\n extras,\n };\n}\n\nexport function assertUnexpectedObjectKeys(keys: string[], obj: Record<string, any>): void {\n const unexpectedKeys = Object.keys(obj).filter((key) => !keys.includes(key));\n if (unexpectedKeys.length > 0) {\n throw new CommandError('BAD_ARGS', `Unexpected: ${unexpectedKeys.join(', ')}`);\n }\n}\n\nexport function assertUnexpectedVariadicFlags(\n expectedFlags: string[],\n { extras, flags, variadic }: ReturnType<typeof parseVariadicArguments>,\n prefixCommand = ''\n) {\n const unexpectedFlags = Object.keys(flags).filter((key) => !expectedFlags.includes(key));\n\n if (unexpectedFlags.length > 0) {\n const intendedFlags = Object.entries(flags)\n .filter(([key]) => expectedFlags.includes(key))\n .map(([key]) => key);\n\n const cmd = [\n prefixCommand,\n ...variadic,\n ...intendedFlags,\n '--',\n ...extras.concat(unexpectedFlags),\n ].join(' ');\n\n throw new CommandError(\n 'BAD_ARGS',\n `Unexpected: ${unexpectedFlags.join(', ')}\\nDid you mean: ${cmd.trim()}`\n );\n }\n}\n"],"names":["assertUnexpectedObjectKeys","assertUnexpectedVariadicFlags","parseVariadicArguments","debug","require","argv","variadic","flags","arg","startsWith","push","extras","extraOperator","indexOf","length","extraArgs","slice","includes","CommandError","join","keys","obj","unexpectedKeys","Object","filter","key","expectedFlags","prefixCommand","unexpectedFlags","intendedFlags","entries","map","cmd","concat","trim"],"mappings":";;;;;;;;;;;IA6CgBA,0BAA0B;eAA1BA;;IAOAC,6BAA6B;eAA7BA;;IA/CAC,sBAAsB;eAAtBA;;;wBALa;AAE7B,MAAMC,QAAQC,QAAQ,SAAS;AAGxB,SAASF,uBAAuBG,IAAc;IAKnD,MAAMC,WAAqB,EAAE;IAC7B,MAAMC,QAAiC,CAAC;IAExC,KAAK,MAAMC,OAAOH,KAAM;QACtB,IAAI,CAACG,IAAIC,UAAU,CAAC,MAAM;YACxBH,SAASI,IAAI,CAACF;QAChB,OAAO,IAAIA,QAAQ,MAAM;YACvB;QACF,OAAO;YACLD,KAAK,CAACC,IAAI,GAAG;QACf;IACF;IAEA,2FAA2F;IAC3F,MAAMG,SAAmB,EAAE;IAE3B,MAAMC,gBAAgBP,KAAKQ,OAAO,CAAC;IACnC,IAAID,gBAAgB,CAAC,KAAKP,KAAKS,MAAM,GAAGF,gBAAgB,GAAG;QACzD,MAAMG,YAAYV,KAAKW,KAAK,CAACJ,gBAAgB;QAC7C,IAAIG,UAAUE,QAAQ,CAAC,OAAO;YAC5B,MAAM,IAAIC,oBAAY,CAAC,YAAY;QACrC;QACAP,OAAOD,IAAI,IAAIK;QACfZ,MAAM,sBAAsBQ,OAAOQ,IAAI,CAAC;IAC1C;IAEAhB,MAAM,CAAC,qDAAqD,CAAC,EAAEG,UAAUC,OAAOI;IAEhF,OAAO;QACLL;QACAC;QACAI;IACF;AACF;AAEO,SAASX,2BAA2BoB,IAAc,EAAEC,GAAwB;IACjF,MAAMC,iBAAiBC,OAAOH,IAAI,CAACC,KAAKG,MAAM,CAAC,CAACC,MAAQ,CAACL,KAAKH,QAAQ,CAACQ;IACvE,IAAIH,eAAeR,MAAM,GAAG,GAAG;QAC7B,MAAM,IAAII,oBAAY,CAAC,YAAY,CAAC,YAAY,EAAEI,eAAeH,IAAI,CAAC,OAAO;IAC/E;AACF;AAEO,SAASlB,8BACdyB,aAAuB,EACvB,EAAEf,MAAM,EAAEJ,KAAK,EAAED,QAAQ,EAA6C,EACtEqB,gBAAgB,EAAE;IAElB,MAAMC,kBAAkBL,OAAOH,IAAI,CAACb,OAAOiB,MAAM,CAAC,CAACC,MAAQ,CAACC,cAAcT,QAAQ,CAACQ;IAEnF,IAAIG,gBAAgBd,MAAM,GAAG,GAAG;QAC9B,MAAMe,gBAAgBN,OAAOO,OAAO,CAACvB,OAClCiB,MAAM,CAAC,CAAC,CAACC,IAAI,GAAKC,cAAcT,QAAQ,CAACQ,MACzCM,GAAG,CAAC,CAAC,CAACN,IAAI,GAAKA;QAElB,MAAMO,MAAM;YACVL;eACGrB;eACAuB;YACH;eACGlB,OAAOsB,MAAM,CAACL;SAClB,CAACT,IAAI,CAAC;QAEP,MAAM,IAAID,oBAAY,CACpB,YACA,CAAC,YAAY,EAAEU,gBAAgBT,IAAI,CAAC,MAAM,gBAAgB,EAAEa,IAAIE,IAAI,IAAI;IAE5E;AACF"}
|