@expo/cli 0.17.9 → 0.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/bin/cli +11 -7
- package/build/bin/cli.map +1 -1
- package/build/src/api/getExpoSchema.js +23 -5
- package/build/src/api/getExpoSchema.js.map +1 -1
- package/build/src/api/graphql/client.js +28 -10
- package/build/src/api/graphql/client.js.map +1 -1
- package/build/src/api/graphql/queries/AppQuery.js +16 -4
- package/build/src/api/graphql/queries/AppQuery.js.map +1 -1
- package/build/src/api/graphql/queries/UserQuery.js +8 -2
- package/build/src/api/graphql/queries/UserQuery.js.map +1 -1
- package/build/src/api/graphql/types/App.js +8 -2
- package/build/src/api/graphql/types/App.js.map +1 -1
- package/build/src/api/rest/cache/FileSystemCache.js +21 -9
- package/build/src/api/rest/cache/FileSystemCache.js.map +1 -1
- package/build/src/api/rest/cache/response.js +9 -3
- package/build/src/api/rest/cache/response.js.map +1 -1
- package/build/src/api/rest/cache/wrapFetchWithCache.js +32 -8
- package/build/src/api/rest/cache/wrapFetchWithCache.js.map +1 -1
- package/build/src/api/rest/client.js +23 -5
- package/build/src/api/rest/client.js.map +1 -1
- package/build/src/api/rest/wrapFetchWithBaseUrl.js +9 -4
- package/build/src/api/rest/wrapFetchWithBaseUrl.js.map +1 -1
- package/build/src/api/rest/wrapFetchWithProxy.js +8 -2
- package/build/src/api/rest/wrapFetchWithProxy.js.map +1 -1
- package/build/src/api/settings.js +8 -2
- package/build/src/api/settings.js.map +1 -1
- package/build/src/api/updateDevelopmentSession.js +18 -6
- package/build/src/api/updateDevelopmentSession.js.map +1 -1
- package/build/src/api/user/UserSettings.js +26 -8
- package/build/src/api/user/UserSettings.js.map +1 -1
- package/build/src/api/user/actions.js +17 -5
- package/build/src/api/user/actions.js.map +1 -1
- package/build/src/api/user/expoSsoLauncher.js +32 -8
- package/build/src/api/user/expoSsoLauncher.js.map +1 -1
- package/build/src/api/user/otp.js +17 -5
- package/build/src/api/user/otp.js.map +1 -1
- package/build/src/api/user/user.js +19 -12
- package/build/src/api/user/user.js.map +1 -1
- package/build/src/config/configAsync.js +25 -7
- package/build/src/config/configAsync.js.map +1 -1
- package/build/src/config/index.js +9 -3
- package/build/src/config/index.js.map +1 -1
- package/build/src/customize/customizeAsync.js +8 -2
- package/build/src/customize/customizeAsync.js.map +1 -1
- package/build/src/customize/generate.js +16 -4
- package/build/src/customize/generate.js.map +1 -1
- package/build/src/customize/index.js +10 -4
- package/build/src/customize/index.js.map +1 -1
- package/build/src/customize/templates.js +33 -9
- package/build/src/customize/templates.js.map +1 -1
- package/build/src/customize/typescript.js +8 -2
- package/build/src/customize/typescript.js.map +1 -1
- package/build/src/export/createMetadataJson.js +8 -2
- package/build/src/export/createMetadataJson.js.map +1 -1
- package/build/src/export/embed/exportEmbedAsync.js +58 -18
- package/build/src/export/embed/exportEmbedAsync.js.map +1 -1
- package/build/src/export/embed/index.js +17 -5
- package/build/src/export/embed/index.js.map +1 -1
- package/build/src/export/embed/resolveOptions.js +8 -2
- package/build/src/export/embed/resolveOptions.js.map +1 -1
- package/build/src/export/embed/xcodeCompilerLogger.js +16 -4
- package/build/src/export/embed/xcodeCompilerLogger.js.map +1 -1
- package/build/src/export/exportApp.js +32 -12
- package/build/src/export/exportApp.js.map +1 -1
- package/build/src/export/exportAssets.js +27 -9
- package/build/src/export/exportAssets.js.map +1 -1
- package/build/src/export/exportAsync.js +10 -2
- package/build/src/export/exportAsync.js.map +1 -1
- package/build/src/export/exportHermes.js +29 -17
- package/build/src/export/exportHermes.js.map +1 -1
- package/build/src/export/exportStaticAsync.js +69 -37
- package/build/src/export/exportStaticAsync.js.map +1 -1
- package/build/src/export/favicon.js +33 -9
- package/build/src/export/favicon.js.map +1 -1
- package/build/src/export/fork-bundleAsync.js +61 -16
- package/build/src/export/fork-bundleAsync.js.map +1 -1
- package/build/src/export/getPublicExpoManifest.js +8 -2
- package/build/src/export/getPublicExpoManifest.js.map +1 -1
- package/build/src/export/getResolvedLocales.js +15 -3
- package/build/src/export/getResolvedLocales.js.map +1 -1
- package/build/src/export/index.js +11 -5
- package/build/src/export/index.js.map +1 -1
- package/build/src/export/metroAssetLocalPath.js +9 -3
- package/build/src/export/metroAssetLocalPath.js.map +1 -1
- package/build/src/export/persistMetroAssets.js +27 -15
- package/build/src/export/persistMetroAssets.js.map +1 -1
- package/build/src/export/publicFolder.js +18 -6
- package/build/src/export/publicFolder.js.map +1 -1
- package/build/src/export/resolveOptions.js +8 -2
- package/build/src/export/resolveOptions.js.map +1 -1
- package/build/src/export/saveAssets.js +43 -19
- package/build/src/export/saveAssets.js.map +1 -1
- package/build/src/export/web/exportWebAsync.js +16 -4
- package/build/src/export/web/exportWebAsync.js.map +1 -1
- package/build/src/export/web/index.js +9 -3
- package/build/src/export/web/index.js.map +1 -1
- package/build/src/install/applyPlugins.js +8 -2
- package/build/src/install/applyPlugins.js.map +1 -1
- package/build/src/install/checkPackages.js +18 -6
- package/build/src/install/checkPackages.js.map +1 -1
- package/build/src/install/fixPackages.js +8 -2
- package/build/src/install/fixPackages.js.map +1 -1
- package/build/src/install/index.js +14 -8
- package/build/src/install/index.js.map +1 -1
- package/build/src/install/installAsync.js +27 -9
- package/build/src/install/installAsync.js.map +1 -1
- package/build/src/install/installExpoPackage.js +17 -5
- package/build/src/install/installExpoPackage.js.map +1 -1
- package/build/src/install/utils/autoAddConfigPlugins.js +17 -5
- package/build/src/install/utils/autoAddConfigPlugins.js.map +1 -1
- package/build/src/log.js +9 -3
- package/build/src/log.js.map +1 -1
- package/build/src/prebuild/clearNativeFolder.js +37 -13
- package/build/src/prebuild/clearNativeFolder.js.map +1 -1
- package/build/src/prebuild/configureProjectAsync.js +16 -4
- package/build/src/prebuild/configureProjectAsync.js.map +1 -1
- package/build/src/prebuild/copyTemplateFiles.js +29 -11
- package/build/src/prebuild/copyTemplateFiles.js.map +1 -1
- package/build/src/prebuild/ensureConfigAsync.js +24 -6
- package/build/src/prebuild/ensureConfigAsync.js.map +1 -1
- package/build/src/prebuild/index.js +14 -8
- package/build/src/prebuild/index.js.map +1 -1
- package/build/src/prebuild/prebuildAsync.js +9 -3
- package/build/src/prebuild/prebuildAsync.js.map +1 -1
- package/build/src/prebuild/renameTemplateAppName.js +119 -0
- package/build/src/prebuild/renameTemplateAppName.js.map +1 -0
- package/build/src/prebuild/resolveOptions.js +32 -8
- package/build/src/prebuild/resolveOptions.js.map +1 -1
- package/build/src/prebuild/resolveTemplate.js +44 -14
- package/build/src/prebuild/resolveTemplate.js.map +1 -1
- package/build/src/prebuild/updateFromTemplate.js +18 -2
- package/build/src/prebuild/updateFromTemplate.js.map +1 -1
- package/build/src/prebuild/updatePackageJson.js +49 -13
- package/build/src/prebuild/updatePackageJson.js.map +1 -1
- package/build/src/prebuild/validateTemplatePlatforms.js +16 -4
- package/build/src/prebuild/validateTemplatePlatforms.js.map +1 -1
- package/build/src/run/android/index.js +20 -4
- package/build/src/run/android/index.js.map +1 -1
- package/build/src/run/android/resolveGradlePropsAsync.js +55 -0
- package/build/src/run/android/resolveGradlePropsAsync.js.map +1 -0
- package/build/src/run/android/resolveInstallApkName.js +18 -6
- package/build/src/run/android/resolveInstallApkName.js.map +1 -1
- package/build/src/run/android/resolveLaunchProps.js +10 -4
- package/build/src/run/android/resolveLaunchProps.js.map +1 -1
- package/build/src/run/android/resolveOptions.js +5 -3
- package/build/src/run/android/resolveOptions.js.map +1 -1
- package/build/src/run/android/runAndroidAsync.js +13 -4
- package/build/src/run/android/runAndroidAsync.js.map +1 -1
- package/build/src/run/ensureNativeProject.js +15 -3
- package/build/src/run/ensureNativeProject.js.map +1 -1
- package/build/src/run/hints.js +10 -4
- package/build/src/run/hints.js.map +1 -1
- package/build/src/run/index.js +8 -2
- package/build/src/run/index.js.map +1 -1
- package/build/src/run/ios/XcodeBuild.js +57 -21
- package/build/src/run/ios/XcodeBuild.js.map +1 -1
- package/build/src/run/ios/appleDevice/AppleDevice.js +25 -7
- package/build/src/run/ios/appleDevice/AppleDevice.js.map +1 -1
- package/build/src/run/ios/appleDevice/ClientManager.js +10 -4
- package/build/src/run/ios/appleDevice/ClientManager.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/AFCClient.js +34 -10
- package/build/src/run/ios/appleDevice/client/AFCClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/DebugserverClient.js +16 -4
- package/build/src/run/ios/appleDevice/client/DebugserverClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js +8 -2
- package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/LockdowndClient.js +17 -5
- package/build/src/run/ios/appleDevice/client/LockdowndClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js +17 -5
- package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js +25 -7
- package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/installOnDeviceAsync.js +24 -6
- package/build/src/run/ios/appleDevice/installOnDeviceAsync.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js +8 -2
- package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js +16 -4
- package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js +8 -2
- package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js +16 -4
- package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js +16 -4
- package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js.map +1 -1
- package/build/src/run/ios/codeSigning/Security.js +17 -5
- package/build/src/run/ios/codeSigning/Security.js.map +1 -1
- package/build/src/run/ios/codeSigning/configureCodeSigning.js +8 -2
- package/build/src/run/ios/codeSigning/configureCodeSigning.js.map +1 -1
- package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js +9 -3
- package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js.map +1 -1
- package/build/src/run/ios/codeSigning/simulatorCodeSigning.js +25 -7
- package/build/src/run/ios/codeSigning/simulatorCodeSigning.js.map +1 -1
- package/build/src/run/ios/codeSigning/xcodeCodeSigning.js +22 -10
- package/build/src/run/ios/codeSigning/xcodeCodeSigning.js.map +1 -1
- package/build/src/run/ios/index.js +19 -7
- package/build/src/run/ios/index.js.map +1 -1
- package/build/src/run/ios/launchApp.js +17 -5
- package/build/src/run/ios/launchApp.js.map +1 -1
- package/build/src/run/ios/options/promptDevice.js +9 -3
- package/build/src/run/ios/options/promptDevice.js.map +1 -1
- package/build/src/run/ios/options/resolveDevice.js +1 -2
- package/build/src/run/ios/options/resolveDevice.js.map +1 -1
- package/build/src/run/ios/options/resolveNativeScheme.js +27 -9
- package/build/src/run/ios/options/resolveNativeScheme.js.map +1 -1
- package/build/src/run/ios/options/resolveXcodeProject.js +8 -2
- package/build/src/run/ios/options/resolveXcodeProject.js.map +1 -1
- package/build/src/run/ios/runIosAsync.js +10 -2
- package/build/src/run/ios/runIosAsync.js.map +1 -1
- package/build/src/run/startBundler.js +16 -4
- package/build/src/run/startBundler.js.map +1 -1
- package/build/src/start/detectDevClient.js +29 -0
- package/build/src/start/detectDevClient.js.map +1 -0
- package/build/src/start/doctor/SecurityBinPrerequisite.js +8 -2
- package/build/src/start/doctor/SecurityBinPrerequisite.js.map +1 -1
- package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js +16 -4
- package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js.map +1 -1
- package/build/src/start/doctor/apple/XcodeDeveloperDiskImagePrerequisite.js +16 -4
- package/build/src/start/doctor/apple/XcodeDeveloperDiskImagePrerequisite.js.map +1 -1
- package/build/src/start/doctor/apple/XcodePrerequisite.js +79 -29
- package/build/src/start/doctor/apple/XcodePrerequisite.js.map +1 -1
- package/build/src/start/doctor/apple/XcrunPrerequisite.js +24 -6
- package/build/src/start/doctor/apple/XcrunPrerequisite.js.map +1 -1
- package/build/src/start/doctor/dependencies/bundledNativeModules.js +25 -7
- package/build/src/start/doctor/dependencies/bundledNativeModules.js.map +1 -1
- package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js +27 -9
- package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js.map +1 -1
- package/build/src/start/doctor/dependencies/getMissingPackages.js +24 -6
- package/build/src/start/doctor/dependencies/getMissingPackages.js.map +1 -1
- package/build/src/start/doctor/dependencies/getVersionedPackages.js +8 -2
- package/build/src/start/doctor/dependencies/getVersionedPackages.js.map +1 -1
- package/build/src/start/doctor/dependencies/resolvePackages.js +25 -7
- package/build/src/start/doctor/dependencies/resolvePackages.js.map +1 -1
- package/build/src/start/doctor/dependencies/validateDependenciesVersions.js +32 -21
- package/build/src/start/doctor/dependencies/validateDependenciesVersions.js.map +1 -1
- package/build/src/start/doctor/ngrok/ExternalModule.js +33 -9
- package/build/src/start/doctor/ngrok/ExternalModule.js.map +1 -1
- package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js +18 -6
- package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js.map +1 -1
- package/build/src/start/doctor/typescript/updateTSConfig.js +29 -11
- package/build/src/start/doctor/typescript/updateTSConfig.js.map +1 -1
- package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js +18 -6
- package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js.map +1 -1
- package/build/src/start/index.js +17 -11
- package/build/src/start/index.js.map +1 -1
- package/build/src/start/interface/commandsTable.js +27 -9
- package/build/src/start/interface/commandsTable.js.map +1 -1
- package/build/src/start/interface/interactiveActions.js +17 -11
- package/build/src/start/interface/interactiveActions.js.map +1 -1
- package/build/src/start/interface/startInterface.js +8 -2
- package/build/src/start/interface/startInterface.js.map +1 -1
- package/build/src/start/platforms/AppIdResolver.js +9 -3
- package/build/src/start/platforms/AppIdResolver.js.map +1 -1
- package/build/src/start/platforms/DeviceManager.js +8 -2
- package/build/src/start/platforms/DeviceManager.js.map +1 -1
- package/build/src/start/platforms/ExpoGoInstaller.js +30 -14
- package/build/src/start/platforms/ExpoGoInstaller.js.map +1 -1
- package/build/src/start/platforms/PlatformManager.js +33 -13
- package/build/src/start/platforms/PlatformManager.js.map +1 -1
- package/build/src/start/platforms/android/ADBServer.js +17 -5
- package/build/src/start/platforms/android/ADBServer.js.map +1 -1
- package/build/src/start/platforms/android/AndroidAppIdResolver.js +13 -7
- package/build/src/start/platforms/android/AndroidAppIdResolver.js.map +1 -1
- package/build/src/start/platforms/android/AndroidDeviceManager.js +19 -7
- package/build/src/start/platforms/android/AndroidDeviceManager.js.map +1 -1
- package/build/src/start/platforms/android/AndroidSdk.js +34 -10
- package/build/src/start/platforms/android/AndroidSdk.js.map +1 -1
- package/build/src/start/platforms/android/activateWindow.js +16 -4
- package/build/src/start/platforms/android/activateWindow.js.map +1 -1
- package/build/src/start/platforms/android/adb.js +21 -4
- package/build/src/start/platforms/android/adb.js.map +1 -1
- package/build/src/start/platforms/android/emulator.js +32 -8
- package/build/src/start/platforms/android/emulator.js.map +1 -1
- package/build/src/start/platforms/android/gradle.js +23 -6
- package/build/src/start/platforms/android/gradle.js.map +1 -1
- package/build/src/start/platforms/android/promptAndroidDevice.js +10 -4
- package/build/src/start/platforms/android/promptAndroidDevice.js.map +1 -1
- package/build/src/start/platforms/ios/AppleAppIdResolver.js +26 -8
- package/build/src/start/platforms/ios/AppleAppIdResolver.js.map +1 -1
- package/build/src/start/platforms/ios/AppleDeviceManager.js +50 -18
- package/build/src/start/platforms/ios/AppleDeviceManager.js.map +1 -1
- package/build/src/start/platforms/ios/assertSystemRequirements.js +4 -3
- package/build/src/start/platforms/ios/assertSystemRequirements.js.map +1 -1
- package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js +16 -4
- package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js.map +1 -1
- package/build/src/start/platforms/ios/getBestSimulator.js +8 -2
- package/build/src/start/platforms/ios/getBestSimulator.js.map +1 -1
- package/build/src/start/platforms/ios/promptAppleDevice.js +9 -3
- package/build/src/start/platforms/ios/promptAppleDevice.js.map +1 -1
- package/build/src/start/platforms/ios/simctl.js +12 -6
- package/build/src/start/platforms/ios/simctl.js.map +1 -1
- package/build/src/start/platforms/ios/simctlLogging.js +40 -10
- package/build/src/start/platforms/ios/simctlLogging.js.map +1 -1
- package/build/src/start/platforms/ios/xcrun.js +16 -4
- package/build/src/start/platforms/ios/xcrun.js.map +1 -1
- package/build/src/start/project/dotExpo.js +27 -9
- package/build/src/start/project/dotExpo.js.map +1 -1
- package/build/src/start/resolveOptions.js +33 -15
- package/build/src/start/resolveOptions.js.map +1 -1
- package/build/src/start/server/AsyncNgrok.js +34 -10
- package/build/src/start/server/AsyncNgrok.js.map +1 -1
- package/build/src/start/server/BundlerDevServer.js +16 -4
- package/build/src/start/server/BundlerDevServer.js.map +1 -1
- package/build/src/start/server/DevServerManager.js +28 -10
- package/build/src/start/server/DevServerManager.js.map +1 -1
- package/build/src/start/server/DevToolsPluginManager.js +16 -4
- package/build/src/start/server/DevToolsPluginManager.js.map +1 -1
- package/build/src/start/server/DevelopmentSession.js +9 -3
- package/build/src/start/server/DevelopmentSession.js.map +1 -1
- package/build/src/start/server/ReactDevToolsProxy.js +26 -8
- package/build/src/start/server/ReactDevToolsProxy.js.map +1 -1
- package/build/src/start/server/UrlCreator.js +19 -6
- package/build/src/start/server/UrlCreator.js.map +1 -1
- package/build/src/start/server/getStaticRenderFunctions.js +91 -55
- package/build/src/start/server/getStaticRenderFunctions.js.map +1 -1
- package/build/src/start/server/metro/MetroBundlerDevServer.js +231 -83
- package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -1
- package/build/src/start/server/metro/MetroTerminalReporter.js +30 -15
- package/build/src/start/server/metro/MetroTerminalReporter.js.map +1 -1
- package/build/src/start/server/metro/TerminalReporter.js +26 -8
- package/build/src/start/server/metro/TerminalReporter.js.map +1 -1
- package/build/src/start/server/metro/TerminalReporter.types.js.map +1 -1
- package/build/src/start/server/metro/createExpoMetroResolver.js +56 -20
- package/build/src/start/server/metro/createExpoMetroResolver.js.map +1 -1
- package/build/src/start/server/metro/createJResolver.js +90 -45
- package/build/src/start/server/metro/createJResolver.js.map +1 -1
- package/build/src/start/server/metro/createServerRouteMiddleware.js +29 -28
- package/build/src/start/server/metro/createServerRouteMiddleware.js.map +1 -1
- package/build/src/start/server/metro/debugging/MessageHandler.js +27 -0
- package/build/src/start/server/metro/debugging/MessageHandler.js.map +1 -0
- package/build/src/start/server/metro/debugging/createDebugMiddleware.js +11 -8
- package/build/src/start/server/metro/debugging/createDebugMiddleware.js.map +1 -1
- package/build/src/start/server/metro/debugging/createHandlersFactory.js +63 -0
- package/build/src/start/server/metro/debugging/createHandlersFactory.js.map +1 -0
- package/build/src/start/server/metro/debugging/{inspectorHandlers/utils.js → getDebuggerType.js} +1 -6
- package/build/src/start/server/metro/debugging/getDebuggerType.js.map +1 -0
- package/build/src/start/server/metro/debugging/{inspectorHandlers → messageHandlers}/NetworkResponse.js +8 -5
- package/build/src/start/server/metro/debugging/messageHandlers/NetworkResponse.js.map +1 -0
- package/build/src/start/server/metro/debugging/{inspectorHandlers → messageHandlers}/PageReload.js +7 -6
- package/build/src/start/server/metro/debugging/messageHandlers/PageReload.js.map +1 -0
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerGetPossibleBreakpoints.js +25 -0
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerGetPossibleBreakpoints.js.map +1 -0
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerSetBreakpointByUrl.js +22 -0
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerSetBreakpointByUrl.js.map +1 -0
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeCallFunctionOn.js +28 -0
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeCallFunctionOn.js.map +1 -0
- package/build/src/start/server/metro/debugging/{inspectorHandlers → messageHandlers}/VscodeRuntimeGetProperties.js +10 -6
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeGetProperties.js.map +1 -0
- package/build/src/start/server/metro/debugging/pageIsSupported.js +14 -0
- package/build/src/start/server/metro/debugging/pageIsSupported.js.map +1 -0
- package/build/src/start/server/metro/debugging/types.js.map +1 -0
- package/build/src/start/server/metro/externals.js +51 -64
- package/build/src/start/server/metro/externals.js.map +1 -1
- package/build/src/start/server/metro/fetchRouterManifest.js +8 -2
- package/build/src/start/server/metro/fetchRouterManifest.js.map +1 -1
- package/build/src/start/server/metro/formatFileCandidates.js +8 -2
- package/build/src/start/server/metro/formatFileCandidates.js.map +1 -1
- package/build/src/start/server/metro/getCssModulesFromBundler.js +34 -10
- package/build/src/start/server/metro/getCssModulesFromBundler.js.map +1 -1
- package/build/src/start/server/metro/instantiateMetro.js +96 -30
- package/build/src/start/server/metro/instantiateMetro.js.map +1 -1
- package/build/src/start/server/metro/metroErrorInterface.js +40 -21
- package/build/src/start/server/metro/metroErrorInterface.js.map +1 -1
- package/build/src/start/server/metro/metroVirtualModules.js +82 -0
- package/build/src/start/server/metro/metroVirtualModules.js.map +1 -0
- package/build/src/start/server/metro/metroWatchTypeScriptFiles.js +8 -2
- package/build/src/start/server/metro/metroWatchTypeScriptFiles.js.map +1 -1
- package/build/src/start/server/metro/router.js +44 -17
- package/build/src/start/server/metro/router.js.map +1 -1
- package/build/src/start/server/metro/runServer-fork.js +56 -14
- package/build/src/start/server/metro/runServer-fork.js.map +1 -1
- package/build/src/start/server/metro/serializeHtml.js +25 -12
- package/build/src/start/server/metro/serializeHtml.js.map +1 -1
- package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js +8 -2
- package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js.map +1 -1
- package/build/src/start/server/metro/withMetroMultiPlatform.js +148 -46
- package/build/src/start/server/metro/withMetroMultiPlatform.js.map +1 -1
- package/build/src/start/server/metro/withMetroResolvers.js +31 -13
- package/build/src/start/server/metro/withMetroResolvers.js.map +1 -1
- package/build/src/start/server/middleware/CreateFileMiddleware.js +22 -10
- package/build/src/start/server/middleware/CreateFileMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/DevToolsPluginMiddleware.js +16 -4
- package/build/src/start/server/middleware/DevToolsPluginMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js +42 -12
- package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ExpoMiddleware.js +8 -2
- package/build/src/start/server/middleware/ExpoMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/InterstitialPageMiddleware.js +41 -11
- package/build/src/start/server/middleware/InterstitialPageMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ManifestMiddleware.js +40 -10
- package/build/src/start/server/middleware/ManifestMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ReactDevToolsPageMiddleware.js +24 -6
- package/build/src/start/server/middleware/ReactDevToolsPageMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js +8 -2
- package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ServeStaticMiddleware.js +24 -6
- package/build/src/start/server/middleware/ServeStaticMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/inspector/JsInspector.js +25 -8
- package/build/src/start/server/middleware/inspector/JsInspector.js.map +1 -1
- package/build/src/start/server/middleware/inspector/LaunchBrowser.js +10 -4
- package/build/src/start/server/middleware/inspector/LaunchBrowser.js.map +1 -1
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplLinux.js +24 -6
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplLinux.js.map +1 -1
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplMacOS.js +33 -9
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplMacOS.js.map +1 -1
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplWindows.js +27 -11
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplWindows.js.map +1 -1
- package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js +33 -9
- package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/metroOptions.js +12 -2
- package/build/src/start/server/middleware/metroOptions.js.map +1 -1
- package/build/src/start/server/middleware/resolveAssets.js +17 -5
- package/build/src/start/server/middleware/resolveAssets.js.map +1 -1
- package/build/src/start/server/middleware/resolvePlatform.js +8 -2
- package/build/src/start/server/middleware/resolvePlatform.js.map +1 -1
- package/build/src/start/server/platformBundlers.js +8 -2
- package/build/src/start/server/platformBundlers.js.map +1 -1
- package/build/src/start/server/serverLogLikeMetro.js +37 -13
- package/build/src/start/server/serverLogLikeMetro.js.map +1 -1
- package/build/src/start/server/type-generation/expo-env.js +16 -4
- package/build/src/start/server/type-generation/expo-env.js.map +1 -1
- package/build/src/start/server/type-generation/routes.js +91 -37
- package/build/src/start/server/type-generation/routes.js.map +1 -1
- package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js +27 -9
- package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js.map +1 -1
- package/build/src/start/server/type-generation/tsconfig.js +27 -9
- package/build/src/start/server/type-generation/tsconfig.js.map +1 -1
- package/build/src/start/server/webTemplate.js +26 -8
- package/build/src/start/server/webTemplate.js.map +1 -1
- package/build/src/start/server/webpack/WebpackBundlerDevServer.js +36 -12
- package/build/src/start/server/webpack/WebpackBundlerDevServer.js.map +1 -1
- package/build/src/start/server/webpack/compile.js +17 -5
- package/build/src/start/server/webpack/compile.js.map +1 -1
- package/build/src/start/server/webpack/resolveFromProject.js +8 -2
- package/build/src/start/server/webpack/resolveFromProject.js.map +1 -1
- package/build/src/start/server/webpack/tls.js +35 -11
- package/build/src/start/server/webpack/tls.js.map +1 -1
- package/build/src/start/startAsync.js +36 -11
- package/build/src/start/startAsync.js.map +1 -1
- package/build/src/utils/FileNotifier.js +32 -8
- package/build/src/utils/FileNotifier.js.map +1 -1
- package/build/src/utils/analytics/getDevClientProperties.js +26 -8
- package/build/src/utils/analytics/getDevClientProperties.js.map +1 -1
- package/build/src/utils/analytics/metroDebuggerMiddleware.js +2 -2
- package/build/src/utils/analytics/metroDebuggerMiddleware.js.map +1 -1
- package/build/src/utils/args.js +32 -8
- package/build/src/utils/args.js.map +1 -1
- package/build/src/utils/cocoapods.js +64 -28
- package/build/src/utils/cocoapods.js.map +1 -1
- package/build/src/utils/codesigning.js +79 -29
- package/build/src/utils/codesigning.js.map +1 -1
- package/build/src/utils/createFileTransform.js +24 -69
- package/build/src/utils/createFileTransform.js.map +1 -1
- package/build/src/utils/dir.js +33 -26
- package/build/src/utils/dir.js.map +1 -1
- package/build/src/utils/downloadAppAsync.js +40 -10
- package/build/src/utils/downloadAppAsync.js.map +1 -1
- package/build/src/utils/downloadExpoGoAsync.js +26 -11
- package/build/src/utils/downloadExpoGoAsync.js.map +1 -1
- package/build/src/utils/editor.js +18 -6
- package/build/src/utils/editor.js.map +1 -1
- package/build/src/utils/env.js +40 -31
- package/build/src/utils/env.js.map +1 -1
- package/build/src/utils/errors.js +20 -5
- package/build/src/utils/errors.js.map +1 -1
- package/build/src/utils/findUp.js +18 -6
- package/build/src/utils/findUp.js.map +1 -1
- package/build/src/utils/getOrPromptApplicationId.js +19 -7
- package/build/src/utils/getOrPromptApplicationId.js.map +1 -1
- package/build/src/utils/getRunningProcess.js +18 -6
- package/build/src/utils/getRunningProcess.js.map +1 -1
- package/build/src/utils/git.js +18 -6
- package/build/src/utils/git.js.map +1 -1
- package/build/src/utils/glob.js +9 -3
- package/build/src/utils/glob.js.map +1 -1
- package/build/src/utils/ip.js +8 -2
- package/build/src/utils/ip.js.map +1 -1
- package/build/src/utils/isModuleSymlinked.js +16 -4
- package/build/src/utils/isModuleSymlinked.js.map +1 -1
- package/build/src/utils/link.js +18 -6
- package/build/src/utils/link.js.map +1 -1
- package/build/src/utils/mergeGitIgnorePaths.js +25 -13
- package/build/src/utils/mergeGitIgnorePaths.js.map +1 -1
- package/build/src/utils/modifyConfigAsync.js +18 -6
- package/build/src/utils/modifyConfigAsync.js.map +1 -1
- package/build/src/utils/modifyConfigPlugins.js +8 -2
- package/build/src/utils/modifyConfigPlugins.js.map +1 -1
- package/build/src/utils/nodeEnv.js +2 -0
- package/build/src/utils/nodeEnv.js.map +1 -1
- package/build/src/utils/nodeModules.js +23 -5
- package/build/src/utils/nodeModules.js.map +1 -1
- package/build/src/utils/npm.js +64 -17
- package/build/src/utils/npm.js.map +1 -1
- package/build/src/utils/open.js +9 -3
- package/build/src/utils/open.js.map +1 -1
- package/build/src/utils/ora.js +16 -4
- package/build/src/utils/ora.js.map +1 -1
- package/build/src/utils/plist.js +24 -6
- package/build/src/utils/plist.js.map +1 -1
- package/build/src/utils/port.js +22 -10
- package/build/src/utils/port.js.map +1 -1
- package/build/src/utils/profile.js +8 -2
- package/build/src/utils/profile.js.map +1 -1
- package/build/src/utils/progress.js +8 -2
- package/build/src/utils/progress.js.map +1 -1
- package/build/src/utils/prompts.js +16 -4
- package/build/src/utils/prompts.js.map +1 -1
- package/build/src/utils/scheme.js +75 -23
- package/build/src/utils/scheme.js.map +1 -1
- package/build/src/utils/tar.js +16 -4
- package/build/src/utils/tar.js.map +1 -1
- package/build/src/utils/telemetry/DetachedClient.js +87 -0
- package/build/src/utils/telemetry/DetachedClient.js.map +1 -0
- package/build/src/utils/telemetry/RudderClient.js +98 -0
- package/build/src/utils/telemetry/RudderClient.js.map +1 -0
- package/build/src/utils/telemetry/flushDetached.js +43 -0
- package/build/src/utils/telemetry/flushDetached.js.map +1 -0
- package/build/src/utils/telemetry/getContext.js +92 -0
- package/build/src/utils/telemetry/getContext.js.map +1 -0
- package/build/src/utils/telemetry/index.js +32 -0
- package/build/src/utils/telemetry/index.js.map +1 -0
- package/build/src/utils/telemetry/types.js +6 -0
- package/build/src/utils/telemetry/types.js.map +1 -0
- package/build/src/utils/tsconfig/evaluateTsConfig.js +16 -4
- package/build/src/utils/tsconfig/evaluateTsConfig.js.map +1 -1
- package/build/src/utils/tsconfig/loadTsConfigPaths.js +18 -6
- package/build/src/utils/tsconfig/loadTsConfigPaths.js.map +1 -1
- package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js +10 -4
- package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js.map +1 -1
- package/build/src/utils/url.js +19 -10
- package/build/src/utils/url.js.map +1 -1
- package/build/src/utils/validateApplicationId.js +18 -6
- package/build/src/utils/validateApplicationId.js.map +1 -1
- package/build/src/whoami/whoamiAsync.js +8 -2
- package/build/src/whoami/whoamiAsync.js.map +1 -1
- package/package.json +15 -16
- package/static/canary/react-native/Libraries/Renderer/implementations/ReactFabric-dev.js +27907 -0
- package/static/canary/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js +9494 -0
- package/static/canary/react-native/Libraries/Renderer/implementations/ReactFabric-profiling.js +10015 -0
- package/static/canary/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +28375 -0
- package/static/canary/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +9714 -0
- package/build/src/run/android/resolveGradleProps.js +0 -37
- package/build/src/run/android/resolveGradleProps.js.map +0 -1
- package/build/src/start/server/metro/bundleApiRoutes.js +0 -52
- package/build/src/start/server/metro/bundleApiRoutes.js.map +0 -1
- package/build/src/start/server/metro/debugging/InspectorDevice.js +0 -80
- package/build/src/start/server/metro/debugging/InspectorDevice.js.map +0 -1
- package/build/src/start/server/metro/debugging/InspectorProxy.js +0 -116
- package/build/src/start/server/metro/debugging/InspectorProxy.js.map +0 -1
- package/build/src/start/server/metro/debugging/inspectorHandlers/NetworkResponse.js.map +0 -1
- package/build/src/start/server/metro/debugging/inspectorHandlers/PageReload.js.map +0 -1
- package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerGetPossibleBreakpoints.js +0 -21
- package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerGetPossibleBreakpoints.js.map +0 -1
- package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerScriptParsed.js +0 -56
- package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerScriptParsed.js.map +0 -1
- package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerSetBreakpointByUrl.js +0 -18
- package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerSetBreakpointByUrl.js.map +0 -1
- package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeRuntimeCallFunctionOn.js +0 -24
- package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeRuntimeCallFunctionOn.js.map +0 -1
- package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeRuntimeGetProperties.js.map +0 -1
- package/build/src/start/server/metro/debugging/inspectorHandlers/types.js.map +0 -1
- package/build/src/start/server/metro/debugging/inspectorHandlers/utils.js.map +0 -1
- package/build/src/start/server/type-generation/__typetests__/fixtures/basic.js +0 -38
- package/build/src/start/server/type-generation/__typetests__/fixtures/basic.js.map +0 -1
- package/build/src/start/server/type-generation/__typetests__/generateFixtures.js +0 -38
- package/build/src/start/server/type-generation/__typetests__/generateFixtures.js.map +0 -1
- package/build/src/start/server/type-generation/__typetests__/route.test.js +0 -184
- package/build/src/start/server/type-generation/__typetests__/route.test.js.map +0 -1
- package/build/src/utils/analytics/rudderstackClient.js +0 -147
- package/build/src/utils/analytics/rudderstackClient.js.map +0 -1
- /package/build/src/start/server/metro/debugging/{inspectorHandlers/types.js → types.js} +0 -0
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
function _fs() {
|
|
3
|
+
const data = _interopRequireDefault(require("fs"));
|
|
4
|
+
_fs = function() {
|
|
5
|
+
return data;
|
|
6
|
+
};
|
|
7
|
+
return data;
|
|
8
|
+
}
|
|
9
|
+
var _rudderClient = require("./RudderClient");
|
|
10
|
+
var _user = require("../../api/user/user");
|
|
11
|
+
function _interopRequireDefault(obj) {
|
|
12
|
+
return obj && obj.__esModule ? obj : {
|
|
13
|
+
default: obj
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
const telemetryFile = process.argv[2];
|
|
17
|
+
flush().catch(()=>_fs().default.promises.unlink(telemetryFile)
|
|
18
|
+
).finally(()=>process.exit(0)
|
|
19
|
+
);
|
|
20
|
+
async function flush() {
|
|
21
|
+
if (!telemetryFile) return;
|
|
22
|
+
let json;
|
|
23
|
+
let data;
|
|
24
|
+
try {
|
|
25
|
+
json = await _fs().default.promises.readFile(telemetryFile, "utf8");
|
|
26
|
+
data = JSON.parse(json);
|
|
27
|
+
} catch (error) {
|
|
28
|
+
if (error.code === "ENOENT") return;
|
|
29
|
+
throw error;
|
|
30
|
+
}
|
|
31
|
+
if (!data.records.length) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const client = new _rudderClient.RudderClient(undefined, "detached");
|
|
35
|
+
await client.identify(data.actor || await (0, _user).getUserAsync());
|
|
36
|
+
for (const record of data.records){
|
|
37
|
+
await client.record(record);
|
|
38
|
+
}
|
|
39
|
+
await client.flush();
|
|
40
|
+
await _fs().default.promises.unlink(telemetryFile);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
//# sourceMappingURL=flushDetached.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/utils/telemetry/flushDetached.ts"],"sourcesContent":["import fs from 'fs';\n\nimport type { DetachedTelemetry } from './DetachedClient';\nimport { RudderClient } from './RudderClient';\nimport { getUserAsync } from '../../api/user/user';\n\nconst telemetryFile = process.argv[2];\n\nflush()\n .catch(() => fs.promises.unlink(telemetryFile))\n .finally(() => process.exit(0));\n\nasync function flush() {\n if (!telemetryFile) return;\n\n let json: string;\n let data: DetachedTelemetry;\n\n try {\n json = await fs.promises.readFile(telemetryFile, 'utf8');\n data = JSON.parse(json) as DetachedTelemetry;\n } catch (error: any) {\n if (error.code === 'ENOENT') return;\n throw error;\n }\n\n if (!data.records.length) {\n return;\n }\n\n const client = new RudderClient(undefined, 'detached');\n await client.identify(data.actor || (await getUserAsync()));\n\n for (const record of data.records) {\n await client.record(record);\n }\n\n await client.flush();\n await fs.promises.unlink(telemetryFile);\n}\n"],"names":["telemetryFile","process","argv","flush","catch","fs","promises","unlink","finally","exit","json","data","readFile","JSON","parse","error","code","records","length","client","RudderClient","undefined","identify","actor","getUserAsync","record"],"mappings":"AAAA;SAAe,GAAI;gDAAJ,IAAI;IAAJ,GAAI;;;;;AAGU,IAAA,aAAgB,WAAhB,gBAAgB,CAAA;AAChB,IAAA,KAAqB,WAArB,qBAAqB,CAAA;;;;;;AAElD,MAAMA,aAAa,GAAGC,OAAO,CAACC,IAAI,CAAC,CAAC,CAAC,AAAC;AAEtCC,KAAK,EAAE,CACJC,KAAK,CAAC,IAAMC,GAAE,UAAA,CAACC,QAAQ,CAACC,MAAM,CAACP,aAAa,CAAC;AAAA,CAAC,CAC9CQ,OAAO,CAAC,IAAMP,OAAO,CAACQ,IAAI,CAAC,CAAC,CAAC;AAAA,CAAC,CAAC;AAElC,eAAeN,KAAK,GAAG;IACrB,IAAI,CAACH,aAAa,EAAE,OAAO;IAE3B,IAAIU,IAAI,AAAQ,AAAC;IACjB,IAAIC,IAAI,AAAmB,AAAC;IAE5B,IAAI;QACFD,IAAI,GAAG,MAAML,GAAE,UAAA,CAACC,QAAQ,CAACM,QAAQ,CAACZ,aAAa,EAAE,MAAM,CAAC,CAAC;QACzDW,IAAI,GAAGE,IAAI,CAACC,KAAK,CAACJ,IAAI,CAAC,AAAqB,CAAC;KAC9C,CAAC,OAAOK,KAAK,EAAO;QACnB,IAAIA,KAAK,CAACC,IAAI,KAAK,QAAQ,EAAE,OAAO;QACpC,MAAMD,KAAK,CAAC;KACb;IAED,IAAI,CAACJ,IAAI,CAACM,OAAO,CAACC,MAAM,EAAE;QACxB,OAAO;KACR;IAED,MAAMC,MAAM,GAAG,IAAIC,aAAY,aAAA,CAACC,SAAS,EAAE,UAAU,CAAC,AAAC;IACvD,MAAMF,MAAM,CAACG,QAAQ,CAACX,IAAI,CAACY,KAAK,IAAK,MAAMC,CAAAA,GAAAA,KAAY,AAAE,CAAA,aAAF,EAAE,AAAC,CAAC,CAAC;IAE5D,KAAK,MAAMC,MAAM,IAAId,IAAI,CAACM,OAAO,CAAE;QACjC,MAAME,MAAM,CAACM,MAAM,CAACA,MAAM,CAAC,CAAC;KAC7B;IAED,MAAMN,MAAM,CAAChB,KAAK,EAAE,CAAC;IACrB,MAAME,GAAE,UAAA,CAACC,QAAQ,CAACC,MAAM,CAACP,aAAa,CAAC,CAAC;CACzC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
exports.getContext = getContext;
|
|
6
|
+
function ciInfo() {
|
|
7
|
+
const data = _interopRequireWildcard(require("ci-info"));
|
|
8
|
+
ciInfo = function() {
|
|
9
|
+
return data;
|
|
10
|
+
};
|
|
11
|
+
return data;
|
|
12
|
+
}
|
|
13
|
+
function _os() {
|
|
14
|
+
const data = _interopRequireDefault(require("os"));
|
|
15
|
+
_os = function() {
|
|
16
|
+
return data;
|
|
17
|
+
};
|
|
18
|
+
return data;
|
|
19
|
+
}
|
|
20
|
+
var _array = require("../array");
|
|
21
|
+
function _interopRequireDefault(obj) {
|
|
22
|
+
return obj && obj.__esModule ? obj : {
|
|
23
|
+
default: obj
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
function _interopRequireWildcard(obj) {
|
|
27
|
+
if (obj && obj.__esModule) {
|
|
28
|
+
return obj;
|
|
29
|
+
} else {
|
|
30
|
+
var newObj = {};
|
|
31
|
+
if (obj != null) {
|
|
32
|
+
for(var key in obj){
|
|
33
|
+
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
34
|
+
var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
|
|
35
|
+
if (desc.get || desc.set) {
|
|
36
|
+
Object.defineProperty(newObj, key, desc);
|
|
37
|
+
} else {
|
|
38
|
+
newObj[key] = obj[key];
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
newObj.default = obj;
|
|
44
|
+
return newObj;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
function getContext() {
|
|
48
|
+
return {
|
|
49
|
+
os: {
|
|
50
|
+
name: _os().default.platform(),
|
|
51
|
+
version: _os().default.release()
|
|
52
|
+
},
|
|
53
|
+
device: {
|
|
54
|
+
arch: _os().default.arch(),
|
|
55
|
+
version: _os().default.version(),
|
|
56
|
+
memory: summarizeMemory()
|
|
57
|
+
},
|
|
58
|
+
cpu: summarizeCpuInfo(),
|
|
59
|
+
app: {
|
|
60
|
+
name: "expo/cli",
|
|
61
|
+
version: "0.18.0"
|
|
62
|
+
},
|
|
63
|
+
ci: ciInfo().isCI ? {
|
|
64
|
+
name: ciInfo().name,
|
|
65
|
+
isPr: ciInfo().isPR
|
|
66
|
+
} : undefined
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
function summarizeMemory() {
|
|
70
|
+
const gb = _os().default.totalmem() / 1024 / 1024 / 1024;
|
|
71
|
+
return Math.round(gb * 100) / 100;
|
|
72
|
+
}
|
|
73
|
+
function summarizeCpuInfo() {
|
|
74
|
+
var ref;
|
|
75
|
+
const cpus = (0, _array).groupBy((ref = _os().default.cpus()) != null ? ref : [], (item)=>item.model
|
|
76
|
+
);
|
|
77
|
+
const summary = {
|
|
78
|
+
model: "",
|
|
79
|
+
speed: 0,
|
|
80
|
+
count: 0
|
|
81
|
+
};
|
|
82
|
+
for(const key in cpus){
|
|
83
|
+
if (cpus[key].length > summary.count) {
|
|
84
|
+
summary.model = key;
|
|
85
|
+
summary.speed = cpus[key][0].speed;
|
|
86
|
+
summary.count = cpus[key].length;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return !summary.model || !summary.count ? undefined : summary;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
//# sourceMappingURL=getContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/utils/telemetry/getContext.ts"],"sourcesContent":["import * as ciInfo from 'ci-info';\nimport os from 'os';\n\nimport { groupBy } from '../array';\n\nexport function getContext() {\n return {\n os: { name: os.platform(), version: os.release() },\n device: { arch: os.arch(), version: os.version(), memory: summarizeMemory() },\n cpu: summarizeCpuInfo(),\n app: { name: 'expo/cli', version: process.env.__EXPO_VERSION },\n ci: ciInfo.isCI ? { name: ciInfo.name, isPr: ciInfo.isPR } : undefined,\n };\n}\n\nfunction summarizeMemory() {\n const gb = os.totalmem() / 1024 / 1024 / 1024;\n return Math.round(gb * 100) / 100;\n}\n\nfunction summarizeCpuInfo() {\n const cpus = groupBy(os.cpus() ?? [], (item) => item.model);\n const summary = { model: '', speed: 0, count: 0 };\n\n for (const key in cpus) {\n if (cpus[key].length > summary.count) {\n summary.model = key;\n summary.speed = cpus[key][0].speed;\n summary.count = cpus[key].length;\n }\n }\n\n return !summary.model || !summary.count ? undefined : summary;\n}\n"],"names":["getContext","ciInfo","os","name","platform","version","release","device","arch","memory","summarizeMemory","cpu","summarizeCpuInfo","app","process","env","__EXPO_VERSION","ci","isCI","isPr","isPR","undefined","gb","totalmem","Math","round","cpus","groupBy","item","model","summary","speed","count","key","length"],"mappings":"AAAA;;;;QAKgBA,UAAU,GAAVA,UAAU;SALdC,MAAM;iDAAM,SAAS;IAArBA,MAAM;;;;;SACH,GAAI;gDAAJ,IAAI;IAAJ,GAAI;;;;;AAEK,IAAA,MAAU,WAAV,UAAU,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAE3B,SAASD,UAAU,GAAG;IAC3B,OAAO;QACLE,EAAE,EAAE;YAAEC,IAAI,EAAED,GAAE,UAAA,CAACE,QAAQ,EAAE;YAAEC,OAAO,EAAEH,GAAE,UAAA,CAACI,OAAO,EAAE;SAAE;QAClDC,MAAM,EAAE;YAAEC,IAAI,EAAEN,GAAE,UAAA,CAACM,IAAI,EAAE;YAAEH,OAAO,EAAEH,GAAE,UAAA,CAACG,OAAO,EAAE;YAAEI,MAAM,EAAEC,eAAe,EAAE;SAAE;QAC7EC,GAAG,EAAEC,gBAAgB,EAAE;QACvBC,GAAG,EAAE;YAAEV,IAAI,EAAE,UAAU;YAAEE,OAAO,EAAES,OAAO,CAACC,GAAG,CAACC,cAAc;SAAE;QAC9DC,EAAE,EAAEhB,MAAM,GAACiB,IAAI,GAAG;YAAEf,IAAI,EAAEF,MAAM,GAACE,IAAI;YAAEgB,IAAI,EAAElB,MAAM,GAACmB,IAAI;SAAE,GAAGC,SAAS;KACvE,CAAC;CACH;AAED,SAASX,eAAe,GAAG;IACzB,MAAMY,EAAE,GAAGpB,GAAE,UAAA,CAACqB,QAAQ,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,AAAC;IAC9C,OAAOC,IAAI,CAACC,KAAK,CAACH,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;CACnC;AAED,SAASV,gBAAgB,GAAG;QACLV,GAAS;IAA9B,MAAMwB,IAAI,GAAGC,CAAAA,GAAAA,MAAO,AAAuC,CAAA,QAAvC,CAACzB,CAAAA,GAAS,GAATA,GAAE,UAAA,CAACwB,IAAI,EAAE,YAATxB,GAAS,GAAI,EAAE,EAAE,CAAC0B,IAAI,GAAKA,IAAI,CAACC,KAAK;IAAA,CAAC,AAAC;IAC5D,MAAMC,OAAO,GAAG;QAAED,KAAK,EAAE,EAAE;QAAEE,KAAK,EAAE,CAAC;QAAEC,KAAK,EAAE,CAAC;KAAE,AAAC;IAElD,IAAK,MAAMC,GAAG,IAAIP,IAAI,CAAE;QACtB,IAAIA,IAAI,CAACO,GAAG,CAAC,CAACC,MAAM,GAAGJ,OAAO,CAACE,KAAK,EAAE;YACpCF,OAAO,CAACD,KAAK,GAAGI,GAAG,CAAC;YACpBH,OAAO,CAACC,KAAK,GAAGL,IAAI,CAACO,GAAG,CAAC,CAAC,CAAC,CAAC,CAACF,KAAK,CAAC;YACnCD,OAAO,CAACE,KAAK,GAAGN,IAAI,CAACO,GAAG,CAAC,CAACC,MAAM,CAAC;SAClC;KACF;IAED,OAAO,CAACJ,OAAO,CAACD,KAAK,IAAI,CAACC,OAAO,CAACE,KAAK,GAAGX,SAAS,GAAGS,OAAO,CAAC;CAC/D"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
exports.getTelemetry = getTelemetry;
|
|
6
|
+
exports.logEventAsync = logEventAsync;
|
|
7
|
+
var _detachedClient = require("./DetachedClient");
|
|
8
|
+
var _rudderClient = require("./RudderClient");
|
|
9
|
+
var _env = require("../env");
|
|
10
|
+
/** The singleton telemetry client to use */ let telemetry = null;
|
|
11
|
+
function getTelemetry() {
|
|
12
|
+
if (_env.env.EXPO_NO_TELEMETRY || _env.env.EXPO_OFFLINE) return null;
|
|
13
|
+
if (telemetry) return telemetry;
|
|
14
|
+
const client = _env.env.EXPO_NO_TELEMETRY_DETACH ? new _rudderClient.RudderClient() // Block the CLI process when sending telemetry, useful for testing
|
|
15
|
+
: new _detachedClient.DetachedClient(); // Do not block the CLI process when sending telemetry
|
|
16
|
+
process.once("SIGINT", ()=>client.flush()
|
|
17
|
+
);
|
|
18
|
+
process.once("SIGTERM", ()=>client.flush()
|
|
19
|
+
);
|
|
20
|
+
process.once("beforeExit", ()=>client.flush()
|
|
21
|
+
);
|
|
22
|
+
return telemetry = client;
|
|
23
|
+
}
|
|
24
|
+
async function logEventAsync(event, properties) {
|
|
25
|
+
var ref;
|
|
26
|
+
await ((ref = getTelemetry()) == null ? void 0 : ref.record({
|
|
27
|
+
event,
|
|
28
|
+
properties
|
|
29
|
+
}));
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/utils/telemetry/index.ts"],"sourcesContent":["import { DetachedClient } from './DetachedClient';\nimport { RudderClient } from './RudderClient';\nimport type { TelemetryClient, TelemetryEvent, TelemetryProperties } from './types';\nimport { env } from '../env';\n\n/** The singleton telemetry client to use */\nlet telemetry: TelemetryClient | null = null;\n\nexport function getTelemetry(): TelemetryClient | null {\n if (env.EXPO_NO_TELEMETRY || env.EXPO_OFFLINE) return null;\n if (telemetry) return telemetry;\n\n const client = env.EXPO_NO_TELEMETRY_DETACH\n ? new RudderClient() // Block the CLI process when sending telemetry, useful for testing\n : new DetachedClient(); // Do not block the CLI process when sending telemetry\n\n process.once('SIGINT', () => client.flush());\n process.once('SIGTERM', () => client.flush());\n process.once('beforeExit', () => client.flush());\n\n return (telemetry = client);\n}\n\nexport async function logEventAsync(event: TelemetryEvent, properties?: TelemetryProperties) {\n await getTelemetry()?.record({ event, properties });\n}\n"],"names":["getTelemetry","logEventAsync","telemetry","env","EXPO_NO_TELEMETRY","EXPO_OFFLINE","client","EXPO_NO_TELEMETRY_DETACH","RudderClient","DetachedClient","process","once","flush","event","properties","record"],"mappings":"AAAA;;;;QAQgBA,YAAY,GAAZA,YAAY;QAeNC,aAAa,GAAbA,aAAa;AAvBJ,IAAA,eAAkB,WAAlB,kBAAkB,CAAA;AACpB,IAAA,aAAgB,WAAhB,gBAAgB,CAAA;AAEzB,IAAA,IAAQ,WAAR,QAAQ,CAAA;AAE5B,4CAA4C,CAC5C,IAAIC,SAAS,GAA2B,IAAI,AAAC;AAEtC,SAASF,YAAY,GAA2B;IACrD,IAAIG,IAAG,IAAA,CAACC,iBAAiB,IAAID,IAAG,IAAA,CAACE,YAAY,EAAE,OAAO,IAAI,CAAC;IAC3D,IAAIH,SAAS,EAAE,OAAOA,SAAS,CAAC;IAEhC,MAAMI,MAAM,GAAGH,IAAG,IAAA,CAACI,wBAAwB,GACvC,IAAIC,aAAY,aAAA,EAAE,CAAC,mEAAmE;OACtF,IAAIC,eAAc,eAAA,EAAE,AAAC,EAAC,sDAAsD;IAEhFC,OAAO,CAACC,IAAI,CAAC,QAAQ,EAAE,IAAML,MAAM,CAACM,KAAK,EAAE;IAAA,CAAC,CAAC;IAC7CF,OAAO,CAACC,IAAI,CAAC,SAAS,EAAE,IAAML,MAAM,CAACM,KAAK,EAAE;IAAA,CAAC,CAAC;IAC9CF,OAAO,CAACC,IAAI,CAAC,YAAY,EAAE,IAAML,MAAM,CAACM,KAAK,EAAE;IAAA,CAAC,CAAC;IAEjD,OAAQV,SAAS,GAAGI,MAAM,CAAE;CAC7B;AAEM,eAAeL,aAAa,CAACY,KAAqB,EAAEC,UAAgC,EAAE;QACrFd,GAAc;IAApB,OAAMA,CAAAA,GAAc,GAAdA,YAAY,EAAE,SAAQ,GAAtBA,KAAAA,CAAsB,GAAtBA,GAAc,CAAEe,MAAM,CAAC;QAAEF,KAAK;QAAEC,UAAU;KAAE,CAAC,CAAA,CAAC;CACrD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/utils/telemetry/types.ts"],"sourcesContent":["import { type Actor } from '../../api/user/user';\n\nexport type TelemetryEvent =\n | 'action'\n | 'Open Url on Device'\n | 'Start Project'\n | 'Serve Manifest'\n | 'Serve Expo Updates Manifest'\n | 'dev client start command'\n | 'dev client run command'\n | 'metro config'\n | 'metro debug';\n\nexport type TelemetryProperties = Record<string, any>;\n\nexport type TelemetryRecord = { event: TelemetryEvent; properties?: TelemetryProperties };\n\nexport type TelemetryRecordWithDate = TelemetryRecord & {\n originalTimestamp: Date;\n};\n\nexport interface TelemetryClient {\n /** Determine if the telemetry client is identified */\n readonly isIdentified: boolean;\n /** Identify the current actor */\n identify(actor?: Actor): Promise<void>;\n /** Record a (custom) event */\n record(record: TelemetryRecord): Promise<void>;\n /** Clear the record queue and send all recorded events */\n flush(): Promise<void>;\n}\n"],"names":[],"mappings":"AAAA"}
|
|
@@ -4,8 +4,20 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
});
|
|
5
5
|
exports.evaluateTsConfig = evaluateTsConfig;
|
|
6
6
|
exports.importTypeScriptFromProjectOptionally = importTypeScriptFromProjectOptionally;
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
function _path() {
|
|
8
|
+
const data = _interopRequireDefault(require("path"));
|
|
9
|
+
_path = function() {
|
|
10
|
+
return data;
|
|
11
|
+
};
|
|
12
|
+
return data;
|
|
13
|
+
}
|
|
14
|
+
function _resolveFrom() {
|
|
15
|
+
const data = _interopRequireDefault(require("resolve-from"));
|
|
16
|
+
_resolveFrom = function() {
|
|
17
|
+
return data;
|
|
18
|
+
};
|
|
19
|
+
return data;
|
|
20
|
+
}
|
|
9
21
|
function _interopRequireDefault(obj) {
|
|
10
22
|
return obj && obj.__esModule ? obj : {
|
|
11
23
|
default: obj
|
|
@@ -29,7 +41,7 @@ function evaluateTsConfig(ts, tsConfigPath) {
|
|
|
29
41
|
readDirectory: (_, ext)=>[
|
|
30
42
|
ext ? `file${ext[0]}` : `file.ts`
|
|
31
43
|
]
|
|
32
|
-
}, _path.default.dirname(tsConfigPath));
|
|
44
|
+
}, _path().default.dirname(tsConfigPath));
|
|
33
45
|
if (jsonFileContents.errors) {
|
|
34
46
|
// filter out "no inputs were found in config file" error
|
|
35
47
|
jsonFileContents.errors = jsonFileContents.errors.filter(({ code })=>code !== 18003
|
|
@@ -51,7 +63,7 @@ function evaluateTsConfig(ts, tsConfigPath) {
|
|
|
51
63
|
}
|
|
52
64
|
}
|
|
53
65
|
function importTypeScriptFromProjectOptionally(projectRoot) {
|
|
54
|
-
const resolvedPath = _resolveFrom.default.silent(projectRoot, "typescript");
|
|
66
|
+
const resolvedPath = _resolveFrom().default.silent(projectRoot, "typescript");
|
|
55
67
|
if (!resolvedPath) {
|
|
56
68
|
return null;
|
|
57
69
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/utils/tsconfig/evaluateTsConfig.ts"],"sourcesContent":["import path from 'path';\nimport resolveFrom from 'resolve-from';\n\nexport function evaluateTsConfig(ts: typeof import('typescript'), tsConfigPath: string) {\n const formatDiagnosticsHost: import('typescript').FormatDiagnosticsHost = {\n getNewLine: () => require('os').EOL,\n getCurrentDirectory: ts.sys.getCurrentDirectory,\n getCanonicalFileName: (fileName: string) => fileName,\n };\n\n try {\n const { config, error } = ts.readConfigFile(tsConfigPath, ts.sys.readFile);\n\n if (error) {\n throw new Error(ts.formatDiagnostic(error, formatDiagnosticsHost));\n }\n\n const jsonFileContents = ts.parseJsonConfigFileContent(\n config,\n {\n ...ts.sys,\n readDirectory: (_, ext) => [ext ? `file${ext[0]}` : `file.ts`],\n },\n path.dirname(tsConfigPath)\n );\n\n if (jsonFileContents.errors) {\n // filter out \"no inputs were found in config file\" error\n jsonFileContents.errors = jsonFileContents.errors.filter(({ code }) => code !== 18003);\n }\n\n if (jsonFileContents.errors?.length) {\n throw new Error(ts.formatDiagnostic(jsonFileContents.errors[0], formatDiagnosticsHost));\n }\n\n return { compilerOptions: jsonFileContents.options, raw: config.raw };\n } catch (error: any) {\n if (error?.name === 'SyntaxError') {\n throw new Error('tsconfig.json is invalid:\\n' + (error.message ?? ''));\n }\n throw error;\n }\n}\n\nexport function importTypeScriptFromProjectOptionally(\n projectRoot: string\n): typeof import('typescript') | null {\n const resolvedPath = resolveFrom.silent(projectRoot, 'typescript');\n if (!resolvedPath) {\n return null;\n }\n return require(resolvedPath);\n}\n"],"names":["evaluateTsConfig","importTypeScriptFromProjectOptionally","ts","tsConfigPath","formatDiagnosticsHost","getNewLine","require","EOL","getCurrentDirectory","sys","getCanonicalFileName","fileName","jsonFileContents","config","error","readConfigFile","readFile","Error","formatDiagnostic","parseJsonConfigFileContent","readDirectory","_","ext","path","dirname","errors","filter","code","length","compilerOptions","options","raw","name","message","projectRoot","resolvedPath","resolveFrom","silent"],"mappings":"AAAA;;;;QAGgBA,gBAAgB,GAAhBA,gBAAgB;QAyChBC,qCAAqC,GAArCA,qCAAqC;
|
|
1
|
+
{"version":3,"sources":["../../../../src/utils/tsconfig/evaluateTsConfig.ts"],"sourcesContent":["import path from 'path';\nimport resolveFrom from 'resolve-from';\n\nexport function evaluateTsConfig(ts: typeof import('typescript'), tsConfigPath: string) {\n const formatDiagnosticsHost: import('typescript').FormatDiagnosticsHost = {\n getNewLine: () => require('os').EOL,\n getCurrentDirectory: ts.sys.getCurrentDirectory,\n getCanonicalFileName: (fileName: string) => fileName,\n };\n\n try {\n const { config, error } = ts.readConfigFile(tsConfigPath, ts.sys.readFile);\n\n if (error) {\n throw new Error(ts.formatDiagnostic(error, formatDiagnosticsHost));\n }\n\n const jsonFileContents = ts.parseJsonConfigFileContent(\n config,\n {\n ...ts.sys,\n readDirectory: (_, ext) => [ext ? `file${ext[0]}` : `file.ts`],\n },\n path.dirname(tsConfigPath)\n );\n\n if (jsonFileContents.errors) {\n // filter out \"no inputs were found in config file\" error\n jsonFileContents.errors = jsonFileContents.errors.filter(({ code }) => code !== 18003);\n }\n\n if (jsonFileContents.errors?.length) {\n throw new Error(ts.formatDiagnostic(jsonFileContents.errors[0], formatDiagnosticsHost));\n }\n\n return { compilerOptions: jsonFileContents.options, raw: config.raw };\n } catch (error: any) {\n if (error?.name === 'SyntaxError') {\n throw new Error('tsconfig.json is invalid:\\n' + (error.message ?? ''));\n }\n throw error;\n }\n}\n\nexport function importTypeScriptFromProjectOptionally(\n projectRoot: string\n): typeof import('typescript') | null {\n const resolvedPath = resolveFrom.silent(projectRoot, 'typescript');\n if (!resolvedPath) {\n return null;\n }\n return require(resolvedPath);\n}\n"],"names":["evaluateTsConfig","importTypeScriptFromProjectOptionally","ts","tsConfigPath","formatDiagnosticsHost","getNewLine","require","EOL","getCurrentDirectory","sys","getCanonicalFileName","fileName","jsonFileContents","config","error","readConfigFile","readFile","Error","formatDiagnostic","parseJsonConfigFileContent","readDirectory","_","ext","path","dirname","errors","filter","code","length","compilerOptions","options","raw","name","message","projectRoot","resolvedPath","resolveFrom","silent"],"mappings":"AAAA;;;;QAGgBA,gBAAgB,GAAhBA,gBAAgB;QAyChBC,qCAAqC,GAArCA,qCAAqC;SA5CpC,KAAM;gDAAN,MAAM;IAAN,KAAM;;;;;SACC,YAAc;gDAAd,cAAc;IAAd,YAAc;;;;;;;;;;AAE/B,SAASD,gBAAgB,CAACE,EAA+B,EAAEC,YAAoB,EAAE;IACtF,MAAMC,qBAAqB,GAA+C;QACxEC,UAAU,EAAE,IAAMC,OAAO,CAAC,IAAI,CAAC,CAACC,GAAG;QAAA;QACnCC,mBAAmB,EAAEN,EAAE,CAACO,GAAG,CAACD,mBAAmB;QAC/CE,oBAAoB,EAAE,CAACC,QAAgB,GAAKA,QAAQ;KACrD,AAAC;IAEF,IAAI;YAqBEC,GAAuB;QApB3B,MAAM,EAAEC,MAAM,CAAA,EAAEC,KAAK,CAAA,EAAE,GAAGZ,EAAE,CAACa,cAAc,CAACZ,YAAY,EAAED,EAAE,CAACO,GAAG,CAACO,QAAQ,CAAC,AAAC;QAE3E,IAAIF,KAAK,EAAE;YACT,MAAM,IAAIG,KAAK,CAACf,EAAE,CAACgB,gBAAgB,CAACJ,KAAK,EAAEV,qBAAqB,CAAC,CAAC,CAAC;SACpE;QAED,MAAMQ,gBAAgB,GAAGV,EAAE,CAACiB,0BAA0B,CACpDN,MAAM,EACN;YACE,GAAGX,EAAE,CAACO,GAAG;YACTW,aAAa,EAAE,CAACC,CAAC,EAAEC,GAAG,GAAK;oBAACA,GAAG,GAAG,CAAC,IAAI,EAAEA,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;iBAAC;SAC/D,EACDC,KAAI,UAAA,CAACC,OAAO,CAACrB,YAAY,CAAC,CAC3B,AAAC;QAEF,IAAIS,gBAAgB,CAACa,MAAM,EAAE;YAC3B,yDAAyD;YACzDb,gBAAgB,CAACa,MAAM,GAAGb,gBAAgB,CAACa,MAAM,CAACC,MAAM,CAAC,CAAC,EAAEC,IAAI,CAAA,EAAE,GAAKA,IAAI,KAAK,KAAK;YAAA,CAAC,CAAC;SACxF;QAED,IAAIf,CAAAA,GAAuB,GAAvBA,gBAAgB,CAACa,MAAM,SAAQ,GAA/Bb,KAAAA,CAA+B,GAA/BA,GAAuB,CAAEgB,MAAM,EAAE;YACnC,MAAM,IAAIX,KAAK,CAACf,EAAE,CAACgB,gBAAgB,CAACN,gBAAgB,CAACa,MAAM,CAAC,CAAC,CAAC,EAAErB,qBAAqB,CAAC,CAAC,CAAC;SACzF;QAED,OAAO;YAAEyB,eAAe,EAAEjB,gBAAgB,CAACkB,OAAO;YAAEC,GAAG,EAAElB,MAAM,CAACkB,GAAG;SAAE,CAAC;KACvE,CAAC,OAAOjB,KAAK,EAAO;QACnB,IAAIA,CAAAA,KAAK,QAAM,GAAXA,KAAAA,CAAW,GAAXA,KAAK,CAAEkB,IAAI,CAAA,KAAK,aAAa,EAAE;gBACgBlB,QAAa;YAA9D,MAAM,IAAIG,KAAK,CAAC,6BAA6B,GAAG,CAACH,CAAAA,QAAa,GAAbA,KAAK,CAACmB,OAAO,YAAbnB,QAAa,GAAI,EAAE,CAAC,CAAC,CAAC;SACxE;QACD,MAAMA,KAAK,CAAC;KACb;CACF;AAEM,SAASb,qCAAqC,CACnDiC,WAAmB,EACiB;IACpC,MAAMC,YAAY,GAAGC,YAAW,UAAA,CAACC,MAAM,CAACH,WAAW,EAAE,YAAY,CAAC,AAAC;IACnE,IAAI,CAACC,YAAY,EAAE;QACjB,OAAO,IAAI,CAAC;KACb;IACD,OAAO7B,OAAO,CAAC6B,YAAY,CAAC,CAAC;CAC9B"}
|
|
@@ -4,8 +4,20 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
});
|
|
5
5
|
exports.loadTsConfigPathsAsync = loadTsConfigPathsAsync;
|
|
6
6
|
exports.readTsconfigAsync = readTsconfigAsync;
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
function _jsonFile() {
|
|
8
|
+
const data = _interopRequireDefault(require("@expo/json-file"));
|
|
9
|
+
_jsonFile = function() {
|
|
10
|
+
return data;
|
|
11
|
+
};
|
|
12
|
+
return data;
|
|
13
|
+
}
|
|
14
|
+
function _path() {
|
|
15
|
+
const data = _interopRequireDefault(require("path"));
|
|
16
|
+
_path = function() {
|
|
17
|
+
return data;
|
|
18
|
+
};
|
|
19
|
+
return data;
|
|
20
|
+
}
|
|
9
21
|
var _evaluateTsConfig = require("./evaluateTsConfig");
|
|
10
22
|
var _dir = require("../dir");
|
|
11
23
|
function _interopRequireDefault(obj) {
|
|
@@ -22,15 +34,15 @@ async function loadTsConfigPathsAsync(dir) {
|
|
|
22
34
|
const [, config] = options;
|
|
23
35
|
return {
|
|
24
36
|
paths: (ref1 = config.compilerOptions) == null ? void 0 : ref1.paths,
|
|
25
|
-
baseUrl: ((ref2 = config.compilerOptions) == null ? void 0 : ref2.baseUrl) ? _path.default.resolve(dir, config.compilerOptions.baseUrl) : undefined
|
|
37
|
+
baseUrl: ((ref2 = config.compilerOptions) == null ? void 0 : ref2.baseUrl) ? _path().default.resolve(dir, config.compilerOptions.baseUrl) : undefined
|
|
26
38
|
};
|
|
27
39
|
}
|
|
28
40
|
return null;
|
|
29
41
|
}
|
|
30
42
|
async function readJsconfigAsync(projectRoot) {
|
|
31
|
-
const configPath = _path.default.join(projectRoot, "jsconfig.json");
|
|
43
|
+
const configPath = _path().default.join(projectRoot, "jsconfig.json");
|
|
32
44
|
if (await (0, _dir).fileExistsAsync(configPath)) {
|
|
33
|
-
const config = await _jsonFile.default.readAsync(configPath, {
|
|
45
|
+
const config = await _jsonFile().default.readAsync(configPath, {
|
|
34
46
|
json5: true
|
|
35
47
|
});
|
|
36
48
|
if (config) {
|
|
@@ -43,7 +55,7 @@ async function readJsconfigAsync(projectRoot) {
|
|
|
43
55
|
return null;
|
|
44
56
|
}
|
|
45
57
|
async function readTsconfigAsync(projectRoot) {
|
|
46
|
-
const configPath = _path.default.join(projectRoot, "tsconfig.json");
|
|
58
|
+
const configPath = _path().default.join(projectRoot, "tsconfig.json");
|
|
47
59
|
if (await (0, _dir).fileExistsAsync(configPath)) {
|
|
48
60
|
// We need to fully evaluate the tsconfig to get the baseUrl and paths in case they were applied in `extends`.
|
|
49
61
|
const ts = (0, _evaluateTsConfig).importTypeScriptFromProjectOptionally(projectRoot);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/utils/tsconfig/loadTsConfigPaths.ts"],"sourcesContent":["import JsonFile from '@expo/json-file';\nimport path from 'path';\n\nimport { evaluateTsConfig, importTypeScriptFromProjectOptionally } from './evaluateTsConfig';\nimport { fileExistsAsync } from '../dir';\n\nexport type TsConfigPaths = {\n paths?: Record<string, string[]>;\n baseUrl?: string;\n};\n\ntype ConfigReadResults = [\n string,\n {\n compilerOptions?: {\n baseUrl?: string;\n paths?: Record<string, string[]>;\n };\n },\n];\n\nconst debug = require('debug')('expo:utils:tsconfig:load') as typeof console.log;\n\nexport async function loadTsConfigPathsAsync(dir: string): Promise<TsConfigPaths | null> {\n const options = (await readTsconfigAsync(dir)) ?? (await readJsconfigAsync(dir));\n if (options) {\n const [, config] = options;\n return {\n paths: config.compilerOptions?.paths,\n baseUrl: config.compilerOptions?.baseUrl\n ? path.resolve(dir, config.compilerOptions.baseUrl)\n : undefined,\n };\n }\n return null;\n}\n\nasync function readJsconfigAsync(projectRoot: string): Promise<null | ConfigReadResults> {\n const configPath = path.join(projectRoot, 'jsconfig.json');\n if (await fileExistsAsync(configPath)) {\n const config = await JsonFile.readAsync(configPath, { json5: true });\n if (config) {\n return [configPath, config];\n }\n }\n return null;\n}\n\n// TODO: Refactor for speed\nexport async function readTsconfigAsync(projectRoot: string): Promise<null | ConfigReadResults> {\n const configPath = path.join(projectRoot, 'tsconfig.json');\n if (await fileExistsAsync(configPath)) {\n // We need to fully evaluate the tsconfig to get the baseUrl and paths in case they were applied in `extends`.\n const ts = importTypeScriptFromProjectOptionally(projectRoot);\n if (ts) {\n return [configPath, evaluateTsConfig(ts, configPath)];\n }\n debug(`typescript module not found in: ${projectRoot}`);\n }\n return null;\n}\n"],"names":["loadTsConfigPathsAsync","readTsconfigAsync","debug","require","dir","options","readJsconfigAsync","config","paths","compilerOptions","baseUrl","path","resolve","undefined","projectRoot","configPath","join","fileExistsAsync","JsonFile","readAsync","json5","ts","importTypeScriptFromProjectOptionally","evaluateTsConfig"],"mappings":"AAAA;;;;QAuBsBA,sBAAsB,GAAtBA,sBAAsB;QA0BtBC,iBAAiB,GAAjBA,iBAAiB;
|
|
1
|
+
{"version":3,"sources":["../../../../src/utils/tsconfig/loadTsConfigPaths.ts"],"sourcesContent":["import JsonFile from '@expo/json-file';\nimport path from 'path';\n\nimport { evaluateTsConfig, importTypeScriptFromProjectOptionally } from './evaluateTsConfig';\nimport { fileExistsAsync } from '../dir';\n\nexport type TsConfigPaths = {\n paths?: Record<string, string[]>;\n baseUrl?: string;\n};\n\ntype ConfigReadResults = [\n string,\n {\n compilerOptions?: {\n baseUrl?: string;\n paths?: Record<string, string[]>;\n };\n },\n];\n\nconst debug = require('debug')('expo:utils:tsconfig:load') as typeof console.log;\n\nexport async function loadTsConfigPathsAsync(dir: string): Promise<TsConfigPaths | null> {\n const options = (await readTsconfigAsync(dir)) ?? (await readJsconfigAsync(dir));\n if (options) {\n const [, config] = options;\n return {\n paths: config.compilerOptions?.paths,\n baseUrl: config.compilerOptions?.baseUrl\n ? path.resolve(dir, config.compilerOptions.baseUrl)\n : undefined,\n };\n }\n return null;\n}\n\nasync function readJsconfigAsync(projectRoot: string): Promise<null | ConfigReadResults> {\n const configPath = path.join(projectRoot, 'jsconfig.json');\n if (await fileExistsAsync(configPath)) {\n const config = await JsonFile.readAsync(configPath, { json5: true });\n if (config) {\n return [configPath, config];\n }\n }\n return null;\n}\n\n// TODO: Refactor for speed\nexport async function readTsconfigAsync(projectRoot: string): Promise<null | ConfigReadResults> {\n const configPath = path.join(projectRoot, 'tsconfig.json');\n if (await fileExistsAsync(configPath)) {\n // We need to fully evaluate the tsconfig to get the baseUrl and paths in case they were applied in `extends`.\n const ts = importTypeScriptFromProjectOptionally(projectRoot);\n if (ts) {\n return [configPath, evaluateTsConfig(ts, configPath)];\n }\n debug(`typescript module not found in: ${projectRoot}`);\n }\n return null;\n}\n"],"names":["loadTsConfigPathsAsync","readTsconfigAsync","debug","require","dir","options","readJsconfigAsync","config","paths","compilerOptions","baseUrl","path","resolve","undefined","projectRoot","configPath","join","fileExistsAsync","JsonFile","readAsync","json5","ts","importTypeScriptFromProjectOptionally","evaluateTsConfig"],"mappings":"AAAA;;;;QAuBsBA,sBAAsB,GAAtBA,sBAAsB;QA0BtBC,iBAAiB,GAAjBA,iBAAiB;SAjDlB,SAAiB;gDAAjB,iBAAiB;IAAjB,SAAiB;;;;;SACrB,KAAM;gDAAN,MAAM;IAAN,KAAM;;;;;AAEiD,IAAA,iBAAoB,WAApB,oBAAoB,CAAA;AAC5D,IAAA,IAAQ,WAAR,QAAQ,CAAA;;;;;;AAiBxC,MAAMC,KAAK,GAAGC,OAAO,CAAC,OAAO,CAAC,CAAC,0BAA0B,CAAC,AAAsB,AAAC;AAE1E,eAAeH,sBAAsB,CAACI,GAAW,EAAiC;QACvE,GAA8B;IAA9C,MAAMC,OAAO,GAAG,CAAA,GAA8B,GAA7B,MAAMJ,iBAAiB,CAACG,GAAG,CAAC,YAA7B,GAA8B,GAAK,MAAME,iBAAiB,CAACF,GAAG,CAAC,AAAC,AAAC;IACjF,IAAIC,OAAO,EAAE;YAGFE,IAAsB,EACpBA,IAAsB;QAHjC,MAAM,GAAGA,MAAM,CAAC,GAAGF,OAAO,AAAC;QAC3B,OAAO;YACLG,KAAK,EAAED,CAAAA,IAAsB,GAAtBA,MAAM,CAACE,eAAe,SAAO,GAA7BF,KAAAA,CAA6B,GAA7BA,IAAsB,CAAEC,KAAK;YACpCE,OAAO,EAAEH,CAAAA,CAAAA,IAAsB,GAAtBA,MAAM,CAACE,eAAe,SAAS,GAA/BF,KAAAA,CAA+B,GAA/BA,IAAsB,CAAEG,OAAO,CAAA,GACpCC,KAAI,UAAA,CAACC,OAAO,CAACR,GAAG,EAAEG,MAAM,CAACE,eAAe,CAACC,OAAO,CAAC,GACjDG,SAAS;SACd,CAAC;KACH;IACD,OAAO,IAAI,CAAC;CACb;AAED,eAAeP,iBAAiB,CAACQ,WAAmB,EAAqC;IACvF,MAAMC,UAAU,GAAGJ,KAAI,UAAA,CAACK,IAAI,CAACF,WAAW,EAAE,eAAe,CAAC,AAAC;IAC3D,IAAI,MAAMG,CAAAA,GAAAA,IAAe,AAAY,CAAA,gBAAZ,CAACF,UAAU,CAAC,EAAE;QACrC,MAAMR,MAAM,GAAG,MAAMW,SAAQ,UAAA,CAACC,SAAS,CAACJ,UAAU,EAAE;YAAEK,KAAK,EAAE,IAAI;SAAE,CAAC,AAAC;QACrE,IAAIb,MAAM,EAAE;YACV,OAAO;gBAACQ,UAAU;gBAAER,MAAM;aAAC,CAAC;SAC7B;KACF;IACD,OAAO,IAAI,CAAC;CACb;AAGM,eAAeN,iBAAiB,CAACa,WAAmB,EAAqC;IAC9F,MAAMC,UAAU,GAAGJ,KAAI,UAAA,CAACK,IAAI,CAACF,WAAW,EAAE,eAAe,CAAC,AAAC;IAC3D,IAAI,MAAMG,CAAAA,GAAAA,IAAe,AAAY,CAAA,gBAAZ,CAACF,UAAU,CAAC,EAAE;QACrC,8GAA8G;QAC9G,MAAMM,EAAE,GAAGC,CAAAA,GAAAA,iBAAqC,AAAa,CAAA,sCAAb,CAACR,WAAW,CAAC,AAAC;QAC9D,IAAIO,EAAE,EAAE;YACN,OAAO;gBAACN,UAAU;gBAAEQ,CAAAA,GAAAA,iBAAgB,AAAgB,CAAA,iBAAhB,CAACF,EAAE,EAAEN,UAAU,CAAC;aAAC,CAAC;SACvD;QACDb,KAAK,CAAC,CAAC,gCAAgC,EAAEY,WAAW,CAAC,CAAC,CAAC,CAAC;KACzD;IACD,OAAO,IAAI,CAAC;CACb"}
|
|
@@ -3,7 +3,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
5
|
exports.resolveWithTsConfigPaths = resolveWithTsConfigPaths;
|
|
6
|
-
|
|
6
|
+
function _path() {
|
|
7
|
+
const data = _interopRequireDefault(require("path"));
|
|
8
|
+
_path = function() {
|
|
9
|
+
return data;
|
|
10
|
+
};
|
|
11
|
+
return data;
|
|
12
|
+
}
|
|
7
13
|
var _matchTsConfigPathAlias = require("./matchTsConfigPathAlias");
|
|
8
14
|
function _interopRequireDefault(obj) {
|
|
9
15
|
return obj && obj.__esModule ? obj : {
|
|
@@ -11,7 +17,7 @@ function _interopRequireDefault(obj) {
|
|
|
11
17
|
};
|
|
12
18
|
}
|
|
13
19
|
const debug = require("debug")("expo:metro:tsconfig-paths");
|
|
14
|
-
const isAbsolute = process.platform === "win32" ? _path.default.win32.isAbsolute : _path.default.posix.isAbsolute;
|
|
20
|
+
const isAbsolute = process.platform === "win32" ? _path().default.win32.isAbsolute : _path().default.posix.isAbsolute;
|
|
15
21
|
function resolveWithTsConfigPaths(config, request, resolve) {
|
|
16
22
|
const aliases = Object.keys(config.paths);
|
|
17
23
|
if (// If no aliases are added bail out
|
|
@@ -26,7 +32,7 @@ function resolveWithTsConfigPaths(config, request, resolve) {
|
|
|
26
32
|
for (const alias of config.paths[matched.text]){
|
|
27
33
|
const nextModuleName = matched.star ? alias.replace("*", matched.star) : alias;
|
|
28
34
|
if (/\.d\.ts$/.test(nextModuleName)) continue;
|
|
29
|
-
const possibleResult = _path.default.join(config.baseUrl, nextModuleName);
|
|
35
|
+
const possibleResult = _path().default.join(config.baseUrl, nextModuleName);
|
|
30
36
|
const result = resolve(possibleResult);
|
|
31
37
|
if (result) {
|
|
32
38
|
debug(`${request.moduleName} -> ${possibleResult}`);
|
|
@@ -37,7 +43,7 @@ function resolveWithTsConfigPaths(config, request, resolve) {
|
|
|
37
43
|
// Only resolve against baseUrl if no `paths` groups were matched.
|
|
38
44
|
// Base URL is resolved after paths, and before node_modules.
|
|
39
45
|
if (config.hasBaseUrl) {
|
|
40
|
-
const possibleResult = _path.default.join(config.baseUrl, request.moduleName);
|
|
46
|
+
const possibleResult = _path().default.join(config.baseUrl, request.moduleName);
|
|
41
47
|
const result = resolve(possibleResult);
|
|
42
48
|
if (result) {
|
|
43
49
|
debug(`baseUrl: ${request.moduleName} -> ${possibleResult}`);
|
|
@@ -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":"AAAA;;;;QAWgBA,wBAAwB,GAAxBA,wBAAwB;
|
|
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":"AAAA;;;;QAWgBA,wBAAwB,GAAxBA,wBAAwB;SAVvB,KAAM;gDAAN,MAAM;IAAN,KAAM;;;;;AAEgB,IAAA,uBAA0B,WAA1B,0BAA0B,CAAA;;;;;;AAIjE,MAAMC,KAAK,GAAGC,OAAO,CAAC,OAAO,CAAC,CAAC,2BAA2B,CAAC,AAAsB,AAAC;AAElF,MAAMC,UAAU,GAAGC,OAAO,CAACC,QAAQ,KAAK,OAAO,GAAGC,KAAI,UAAA,CAACC,KAAK,CAACJ,UAAU,GAAGG,KAAI,UAAA,CAACE,KAAK,CAACL,UAAU,AAAC;AAEzF,SAASH,wBAAwB,CACtCS,MAA8D,EAC9DC,OAKC,EACDC,OAAkD,EAC/B;IACnB,MAAMC,OAAO,GAAGC,MAAM,CAACC,IAAI,CAACL,MAAM,CAACM,KAAK,CAAC,AAAC;IAE1C,IACE,mCAAmC;IACnC,CAAC,CAACH,OAAO,CAACI,MAAM,IAAI,CAACP,MAAM,CAACQ,UAAU,CAAC,IACvC,4DAA4D;IAC5D,eAAeC,IAAI,CAACR,OAAO,CAACS,gBAAgB,CAAC,IAC7C,mCAAmC;IACnChB,UAAU,CAACO,OAAO,CAACU,UAAU,CAAC,IAC9B,mCAAmC;IACnC,kBAAkBF,IAAI,CAACR,OAAO,CAACU,UAAU,CAAC,EAC1C;QACA,OAAO,IAAI,CAAC;KACb;IAED,MAAMC,OAAO,GAAGC,CAAAA,GAAAA,uBAAsB,AAA6B,CAAA,uBAA7B,CAACV,OAAO,EAAEF,OAAO,CAACU,UAAU,CAAC,AAAC;IACpE,IAAIC,OAAO,EAAE;QACX,KAAK,MAAME,KAAK,IAAId,MAAM,CAACM,KAAK,CAACM,OAAO,CAACG,IAAI,CAAC,CAAE;YAC9C,MAAMC,cAAc,GAAGJ,OAAO,CAACK,IAAI,GAAGH,KAAK,CAACI,OAAO,CAAC,GAAG,EAAEN,OAAO,CAACK,IAAI,CAAC,GAAGH,KAAK,AAAC;YAE/E,IAAI,WAAWL,IAAI,CAACO,cAAc,CAAC,EAAE,SAAS;YAE9C,MAAMG,cAAc,GAAGtB,KAAI,UAAA,CAACuB,IAAI,CAACpB,MAAM,CAACqB,OAAO,EAAEL,cAAc,CAAC,AAAC;YAEjE,MAAMM,MAAM,GAAGpB,OAAO,CAACiB,cAAc,CAAC,AAAC;YACvC,IAAIG,MAAM,EAAE;gBACV9B,KAAK,CAAC,CAAC,EAAES,OAAO,CAACU,UAAU,CAAC,IAAI,EAAEQ,cAAc,CAAC,CAAC,CAAC,CAAC;gBACpD,OAAOG,MAAM,CAAC;aACf;SACF;KACF,MAAM;QACL,kEAAkE;QAClE,6DAA6D;QAC7D,IAAItB,MAAM,CAACQ,UAAU,EAAE;YACrB,MAAMW,cAAc,GAAGtB,KAAI,UAAA,CAACuB,IAAI,CAACpB,MAAM,CAACqB,OAAO,EAAEpB,OAAO,CAACU,UAAU,CAAC,AAAC;YACrE,MAAMW,MAAM,GAAGpB,OAAO,CAACiB,cAAc,CAAC,AAAC;YACvC,IAAIG,MAAM,EAAE;gBACV9B,KAAK,CAAC,CAAC,SAAS,EAAES,OAAO,CAACU,UAAU,CAAC,IAAI,EAAEQ,cAAc,CAAC,CAAC,CAAC,CAAC;gBAC7D,OAAOG,MAAM,CAAC;aACf;SACF;KACF;IAED,OAAO,IAAI,CAAC;CACb"}
|
package/build/src/utils/url.js
CHANGED
|
@@ -7,8 +7,20 @@ exports.isUrlOk = isUrlOk;
|
|
|
7
7
|
exports.validateUrl = validateUrl;
|
|
8
8
|
exports.stripPort = stripPort;
|
|
9
9
|
exports.stripExtension = stripExtension;
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
function _dns() {
|
|
11
|
+
const data = _interopRequireDefault(require("dns"));
|
|
12
|
+
_dns = function() {
|
|
13
|
+
return data;
|
|
14
|
+
};
|
|
15
|
+
return data;
|
|
16
|
+
}
|
|
17
|
+
function _url() {
|
|
18
|
+
const data = require("url");
|
|
19
|
+
_url = function() {
|
|
20
|
+
return data;
|
|
21
|
+
};
|
|
22
|
+
return data;
|
|
23
|
+
}
|
|
12
24
|
var _client = require("../api/rest/client");
|
|
13
25
|
function _interopRequireDefault(obj) {
|
|
14
26
|
return obj && obj.__esModule ? obj : {
|
|
@@ -17,7 +29,7 @@ function _interopRequireDefault(obj) {
|
|
|
17
29
|
}
|
|
18
30
|
function isUrlAvailableAsync(url) {
|
|
19
31
|
return new Promise((resolve)=>{
|
|
20
|
-
_dns.default.lookup(url, (err)=>{
|
|
32
|
+
_dns().default.lookup(url, (err)=>{
|
|
21
33
|
resolve(!err);
|
|
22
34
|
});
|
|
23
35
|
});
|
|
@@ -32,7 +44,7 @@ async function isUrlOk(url) {
|
|
|
32
44
|
}
|
|
33
45
|
function validateUrl(urlString, { protocols , requireProtocol } = {}) {
|
|
34
46
|
try {
|
|
35
|
-
const results = new _url.URL(urlString);
|
|
47
|
+
const results = new (_url()).URL(urlString);
|
|
36
48
|
if (!results.protocol && !requireProtocol) {
|
|
37
49
|
return true;
|
|
38
50
|
}
|
|
@@ -52,12 +64,9 @@ function coerceUrl(urlString) {
|
|
|
52
64
|
return null;
|
|
53
65
|
}
|
|
54
66
|
try {
|
|
55
|
-
return new _url.URL("/", urlString);
|
|
56
|
-
} catch
|
|
57
|
-
|
|
58
|
-
throw error;
|
|
59
|
-
}
|
|
60
|
-
return new _url.URL("/", `http://${urlString}`);
|
|
67
|
+
return new (_url()).URL("/", urlString);
|
|
68
|
+
} catch {
|
|
69
|
+
return new (_url()).URL("/", `http://${urlString}`);
|
|
61
70
|
}
|
|
62
71
|
}
|
|
63
72
|
function stripExtension(url, extension) {
|
|
@@ -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
|
|
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","validateUrl","stripPort","stripExtension","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":"AAAA;;;;QAMgBA,mBAAmB,GAAnBA,mBAAmB;QASbC,OAAO,GAAPA,OAAO;QAUbC,WAAW,GAAXA,WAAW;QA4BXC,SAAS,GAATA,SAAS;QAgBTC,cAAc,GAAdA,cAAc;SArEd,IAAK;gDAAL,KAAK;IAAL,IAAK;;;;;SACD,IAAK;yBAAL,KAAK;IAAL,IAAK;;;;;AAEE,IAAA,OAAoB,WAApB,oBAAoB,CAAA;;;;;;AAGxC,SAASJ,mBAAmB,CAACK,GAAW,EAAoB;IACjE,OAAO,IAAIC,OAAO,CAAU,CAACC,OAAO,GAAK;QACvCC,IAAG,UAAA,CAACC,MAAM,CAACJ,GAAG,EAAE,CAACK,GAAG,GAAK;YACvBH,OAAO,CAAC,CAACG,GAAG,CAAC,CAAC;SACf,CAAC,CAAC;KACJ,CAAC,CAAC;CACJ;AAGM,eAAeT,OAAO,CAACI,GAAW,EAAoB;IAC3D,IAAI;QACF,MAAMM,GAAG,GAAG,MAAMC,CAAAA,GAAAA,OAAU,AAAK,CAAA,WAAL,CAACP,GAAG,CAAC,AAAC;QAClC,OAAOM,GAAG,CAACE,EAAE,CAAC;KACf,CAAC,OAAM;QACN,OAAO,KAAK,CAAC;KACd;CACF;AAGM,SAASX,WAAW,CACzBY,SAAiB,EACjB,EACEC,SAAS,CAAA,EACTC,eAAe,CAAA,EAMhB,GAAG,EAAE,EACN;IACA,IAAI;QACF,MAAMC,OAAO,GAAG,IAAIC,CAAAA,IAAG,OAAA,CAACJ,SAAS,CAAC,AAAC;QACnC,IAAI,CAACG,OAAO,CAACE,QAAQ,IAAI,CAACH,eAAe,EAAE;YACzC,OAAO,IAAI,CAAC;SACb;QACD,OAAOD,SAAS,GACZE,OAAO,CAACE,QAAQ,GACdJ,SAAS,CAACK,GAAG,CAAC,CAACC,CAAC,GAAK,CAAC,EAAEA,CAAC,CAACC,WAAW,EAAE,CAAC,CAAC,CAAC;QAAA,CAAC,CAACC,QAAQ,CAACN,OAAO,CAACE,QAAQ,CAAC,GACtE,KAAK,GACP,IAAI,CAAC;KACV,CAAC,OAAM;QACN,OAAO,KAAK,CAAC;KACd;CACF;AAGM,SAAShB,SAAS,CAACqB,IAAa,EAAiB;QAC/CC,GAAe;QAAfA,IAAyB;IAAhC,OAAOA,CAAAA,IAAyB,GAAzBA,CAAAA,GAAe,GAAfA,SAAS,CAACD,IAAI,CAAC,SAAU,GAAzBC,KAAAA,CAAyB,GAAzBA,GAAe,CAAEC,QAAQ,YAAzBD,IAAyB,GAAI,IAAI,CAAC;CAC1C;AAED,SAASA,SAAS,CAACX,SAAkB,EAAc;IACjD,IAAI,CAACA,SAAS,EAAE;QACd,OAAO,IAAI,CAAC;KACb;IACD,IAAI;QACF,OAAO,IAAII,CAAAA,IAAG,OAAA,CAAC,GAAG,EAAEJ,SAAS,CAAC,CAAC;KAChC,CAAC,OAAM;QACN,OAAO,IAAII,CAAAA,IAAG,OAAA,CAAC,GAAG,EAAE,CAAC,OAAO,EAAEJ,SAAS,CAAC,CAAC,CAAC,CAAC;KAC5C;CACF;AAGM,SAASV,cAAc,CAACC,GAAW,EAAEsB,SAAiB,EAAU;IACrE,OAAOtB,GAAG,CAACuB,OAAO,CAAC,IAAIC,MAAM,CAAC,CAAC,CAAC,EAAEF,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CACtD"}
|
|
@@ -10,8 +10,20 @@ exports.assertValidPackage = assertValidPackage;
|
|
|
10
10
|
exports.getBundleIdWarningInternalAsync = getBundleIdWarningInternalAsync;
|
|
11
11
|
exports.getPackageNameWarningInternalAsync = getPackageNameWarningInternalAsync;
|
|
12
12
|
exports.getPackageNameWarningAsync = exports.getBundleIdWarningAsync = void 0;
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
function _assert() {
|
|
14
|
+
const data = _interopRequireDefault(require("assert"));
|
|
15
|
+
_assert = function() {
|
|
16
|
+
return data;
|
|
17
|
+
};
|
|
18
|
+
return data;
|
|
19
|
+
}
|
|
20
|
+
function _chalk() {
|
|
21
|
+
const data = _interopRequireDefault(require("chalk"));
|
|
22
|
+
_chalk = function() {
|
|
23
|
+
return data;
|
|
24
|
+
};
|
|
25
|
+
return data;
|
|
26
|
+
}
|
|
15
27
|
var _env = require("./env");
|
|
16
28
|
var _fn = require("./fn");
|
|
17
29
|
var _link = require("./link");
|
|
@@ -112,10 +124,10 @@ const RESERVED_ANDROID_PACKAGE_NAME_SEGMENTS = [
|
|
|
112
124
|
"strictfp",
|
|
113
125
|
];
|
|
114
126
|
function assertValidBundleId(value) {
|
|
115
|
-
_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.`);
|
|
127
|
+
_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.`);
|
|
116
128
|
}
|
|
117
129
|
function assertValidPackage(value) {
|
|
118
|
-
_assert.default.match(value, ANDROID_PACKAGE_REGEX, `Invalid format of Android package name. Only alphanumeric characters, '.' and '_' are allowed, and each '.' must be followed by a letter. The Java keyword 'native' is not allowed.`);
|
|
130
|
+
_assert().default.match(value, ANDROID_PACKAGE_REGEX, `Invalid format of Android package name. Only alphanumeric characters, '.' and '_' are allowed, and each '.' must be followed by a letter. The Java keyword 'native' is not allowed.`);
|
|
119
131
|
}
|
|
120
132
|
async function getBundleIdWarningInternalAsync(bundleId) {
|
|
121
133
|
if (_env.env.EXPO_OFFLINE) {
|
|
@@ -162,7 +174,7 @@ async function getPackageNameWarningInternalAsync(packageName) {
|
|
|
162
174
|
if (response.status === 200) {
|
|
163
175
|
// There is no JSON API for the Play Store so we can't concisely
|
|
164
176
|
// locate the app name and developer to match the iOS warning.
|
|
165
|
-
return `⚠️ The package ${_chalk.default.bold(packageName)} is already in use. ${_chalk.default.dim((0, _link).learnMore(url))}`;
|
|
177
|
+
return `⚠️ The package ${_chalk().default.bold(packageName)} is already in use. ${_chalk().default.dim((0, _link).learnMore(url))}`;
|
|
166
178
|
}
|
|
167
179
|
} catch (error) {
|
|
168
180
|
// Error fetching play store data or the page doesn't exist.
|
|
@@ -171,7 +183,7 @@ async function getPackageNameWarningInternalAsync(packageName) {
|
|
|
171
183
|
return null;
|
|
172
184
|
}
|
|
173
185
|
function formatInUseWarning(appName, author, id) {
|
|
174
|
-
return `⚠️ The app ${_chalk.default.bold(appName)} by ${_chalk.default.italic(author)} is already using ${_chalk.default.bold(id)}`;
|
|
186
|
+
return `⚠️ The app ${_chalk().default.bold(appName)} by ${_chalk().default.italic(author)} is already using ${_chalk().default.bold(id)}`;
|
|
175
187
|
}
|
|
176
188
|
const getPackageNameWarningAsync = (0, _fn).memoize(getPackageNameWarningInternalAsync);
|
|
177
189
|
exports.getPackageNameWarningAsync = getPackageNameWarningAsync;
|
|
@@ -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 { fetchAsync } from '../api/rest/client';\nimport { Log } from '../log';\n\nconst debug = require('debug')('expo:utils:validateApplicationId') as typeof console.log;\n\nconst IOS_BUNDLE_ID_REGEX = /^[a-zA-Z0-9-.]+$/;\nconst ANDROID_PACKAGE_REGEX = /^(?!.*\\bnative\\b)[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 \".\" must be followed by a letter or number.';\n }\n\n return true;\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. The Java keyword 'native' is 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 fetchAsync(url);\n const json = 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 fetchAsync(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","assertValidBundleId","assertValidPackage","getBundleIdWarningInternalAsync","getPackageNameWarningInternalAsync","debug","require","IOS_BUNDLE_ID_REGEX","ANDROID_PACKAGE_REGEX","value","test","parts","split","segment","RESERVED_ANDROID_PACKAGE_NAME_SEGMENTS","includes","length","assert","match","bundleId","env","EXPO_OFFLINE","Log","warn","isUrlAvailableAsync","url","response","fetchAsync","json","resultCount","firstApp","results","formatInUseWarning","trackName","sellerName","error","message","getBundleIdWarningAsync","memoize","packageName","status","chalk","bold","dim","learnMore","appName","author","id","italic","getPackageNameWarningAsync"],"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 { fetchAsync } from '../api/rest/client';\nimport { Log } from '../log';\n\nconst debug = require('debug')('expo:utils:validateApplicationId') as typeof console.log;\n\nconst IOS_BUNDLE_ID_REGEX = /^[a-zA-Z0-9-.]+$/;\nconst ANDROID_PACKAGE_REGEX = /^(?!.*\\bnative\\b)[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 \".\" must be followed by a letter or number.';\n }\n\n return true;\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. The Java keyword 'native' is 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 fetchAsync(url);\n const json = 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 fetchAsync(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","assertValidBundleId","assertValidPackage","getBundleIdWarningInternalAsync","getPackageNameWarningInternalAsync","debug","require","IOS_BUNDLE_ID_REGEX","ANDROID_PACKAGE_REGEX","value","test","parts","split","segment","RESERVED_ANDROID_PACKAGE_NAME_SEGMENTS","includes","length","assert","match","bundleId","env","EXPO_OFFLINE","Log","warn","isUrlAvailableAsync","url","response","fetchAsync","json","resultCount","firstApp","results","formatInUseWarning","trackName","sellerName","error","message","getBundleIdWarningAsync","memoize","packageName","status","chalk","bold","dim","learnMore","appName","author","id","italic","getPackageNameWarningAsync"],"mappings":"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"}
|