@expo/cli 0.0.0 → 0.1.2
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/README.md +106 -0
- package/build/bin/cli +152 -0
- package/build/bin/cli.map +1 -0
- package/build/src/api/endpoint.js +17 -0
- package/build/src/api/endpoint.js.map +1 -0
- package/build/src/api/getExpoGoIntermediateCertificate.js +21 -0
- package/build/src/api/getExpoGoIntermediateCertificate.js.map +1 -0
- package/build/src/api/getExpoSchema.js +69 -0
- package/build/src/api/getExpoSchema.js.map +1 -0
- package/build/src/api/getNativeModuleVersions.js +31 -0
- package/build/src/api/getNativeModuleVersions.js.map +1 -0
- package/build/src/api/getProject.js +19 -0
- package/build/src/api/getProject.js.map +1 -0
- package/build/src/api/getProjectDevelopmentCertificate.js +24 -0
- package/build/src/api/getProjectDevelopmentCertificate.js.map +1 -0
- package/build/src/api/getVersions.js +37 -0
- package/build/src/api/getVersions.js.map +1 -0
- package/build/src/api/graphql/client.js +104 -0
- package/build/src/api/graphql/client.js.map +1 -0
- package/build/src/api/graphql/generated.js +113 -0
- package/build/src/api/graphql/generated.js.map +1 -0
- package/build/src/api/graphql/queries/UserQuery.js +43 -0
- package/build/src/api/graphql/queries/UserQuery.js.map +1 -0
- package/build/src/api/rest/cache/FileSystemCache.js +79 -0
- package/build/src/api/rest/cache/FileSystemCache.js.map +1 -0
- package/build/src/api/rest/cache/response.js +31 -0
- package/build/src/api/rest/cache/response.js.map +1 -0
- package/build/src/api/rest/cache/wrapFetchWithCache.js +156 -0
- package/build/src/api/rest/cache/wrapFetchWithCache.js.map +1 -0
- package/build/src/api/rest/client.js +94 -0
- package/build/src/api/rest/client.js.map +1 -0
- package/build/src/api/rest/client.types.js +6 -0
- package/build/src/api/rest/client.types.js.map +1 -0
- package/build/src/api/rest/wrapFetchWithBaseUrl.js +20 -0
- package/build/src/api/rest/wrapFetchWithBaseUrl.js.map +1 -0
- package/build/src/api/rest/wrapFetchWithOffline.js +39 -0
- package/build/src/api/rest/wrapFetchWithOffline.js.map +1 -0
- package/build/src/api/rest/wrapFetchWithProgress.js +59 -0
- package/build/src/api/rest/wrapFetchWithProgress.js.map +1 -0
- package/build/src/api/settings.js +11 -0
- package/build/src/api/settings.js.map +1 -0
- package/build/src/api/signManifest.js +38 -0
- package/build/src/api/signManifest.js.map +1 -0
- package/build/src/api/updateDevelopmentSession.js +74 -0
- package/build/src/api/updateDevelopmentSession.js.map +1 -0
- package/build/src/api/user/UserSettings.js +71 -0
- package/build/src/api/user/UserSettings.js.map +1 -0
- package/build/src/api/user/actions.js +97 -0
- package/build/src/api/user/actions.js.map +1 -0
- package/build/src/api/user/otp.js +139 -0
- package/build/src/api/user/otp.js.map +1 -0
- package/build/src/api/user/user.js +114 -0
- package/build/src/api/user/user.js.map +1 -0
- package/build/src/config/configAsync.js +118 -0
- package/build/src/config/configAsync.js.map +1 -0
- package/build/src/config/index.js +75 -0
- package/build/src/config/index.js.map +1 -0
- package/build/src/export/createBundles.js +62 -0
- package/build/src/export/createBundles.js.map +1 -0
- package/build/src/export/createMetadataJson.js +36 -0
- package/build/src/export/createMetadataJson.js.map +1 -0
- package/build/src/export/exportApp.js +102 -0
- package/build/src/export/exportApp.js.map +1 -0
- package/build/src/export/exportAssets.js +106 -0
- package/build/src/export/exportAssets.js.map +1 -0
- package/build/src/export/exportAsync.js +49 -0
- package/build/src/export/exportAsync.js.map +1 -0
- package/build/src/export/fork-bundleAsync.js +138 -0
- package/build/src/export/fork-bundleAsync.js.map +1 -0
- package/build/src/export/getPublicExpoManifest.js +28 -0
- package/build/src/export/getPublicExpoManifest.js.map +1 -0
- package/build/src/export/getResolvedLocales.js +35 -0
- package/build/src/export/getResolvedLocales.js.map +1 -0
- package/build/src/export/index.js +77 -0
- package/build/src/export/index.js.map +1 -0
- package/build/src/export/printBundleSizes.js +122 -0
- package/build/src/export/printBundleSizes.js.map +1 -0
- package/build/src/export/resolveOptions.js +24 -0
- package/build/src/export/resolveOptions.js.map +1 -0
- package/build/src/export/saveAssets.js +65 -0
- package/build/src/export/saveAssets.js.map +1 -0
- package/build/src/export/writeContents.js +108 -0
- package/build/src/export/writeContents.js.map +1 -0
- package/build/src/install/checkPackages.js +74 -0
- package/build/src/install/checkPackages.js.map +1 -0
- package/build/src/install/index.js +49 -0
- package/build/src/install/index.js.map +1 -0
- package/build/src/install/installAsync.js +103 -0
- package/build/src/install/installAsync.js.map +1 -0
- package/build/src/install/resolveOptions.js +99 -0
- package/build/src/install/resolveOptions.js.map +1 -0
- package/build/src/install/utils/autoAddConfigPlugins.js +87 -0
- package/build/src/install/utils/autoAddConfigPlugins.js.map +1 -0
- package/build/src/log.js +74 -0
- package/build/src/log.js.map +1 -0
- package/build/src/login/index.js +62 -0
- package/build/src/login/index.js.map +1 -0
- package/build/src/logout/index.js +48 -0
- package/build/src/logout/index.js.map +1 -0
- package/build/src/prebuild/clearNativeFolder.js +137 -0
- package/build/src/prebuild/clearNativeFolder.js.map +1 -0
- package/build/src/prebuild/configureProjectAsync.js +68 -0
- package/build/src/prebuild/configureProjectAsync.js.map +1 -0
- package/build/src/prebuild/copyTemplateFiles.js +124 -0
- package/build/src/prebuild/copyTemplateFiles.js.map +1 -0
- package/build/src/prebuild/ensureConfigAsync.js +86 -0
- package/build/src/prebuild/ensureConfigAsync.js.map +1 -0
- package/build/src/prebuild/index.js +90 -0
- package/build/src/prebuild/index.js.map +1 -0
- package/build/src/prebuild/prebuildAsync.js +112 -0
- package/build/src/prebuild/prebuildAsync.js.map +1 -0
- package/build/src/prebuild/resolveOptions.js +97 -0
- package/build/src/prebuild/resolveOptions.js.map +1 -0
- package/build/src/prebuild/resolveTemplate.js +157 -0
- package/build/src/prebuild/resolveTemplate.js.map +1 -0
- package/build/src/prebuild/updateFromTemplate.js +102 -0
- package/build/src/prebuild/updateFromTemplate.js.map +1 -0
- package/build/src/prebuild/updatePackageJson.js +236 -0
- package/build/src/prebuild/updatePackageJson.js.map +1 -0
- package/build/src/prebuild/writeMetroConfig.js +89 -0
- package/build/src/prebuild/writeMetroConfig.js.map +1 -0
- package/build/src/register/index.js +48 -0
- package/build/src/register/index.js.map +1 -0
- package/build/src/register/registerAsync.js +37 -0
- package/build/src/register/registerAsync.js.map +1 -0
- package/build/src/run/android/index.js +97 -0
- package/build/src/run/android/index.js.map +1 -0
- package/build/src/run/android/resolveDevice.js +23 -0
- package/build/src/run/android/resolveDevice.js.map +1 -0
- package/build/src/run/android/resolveGradleProps.js +37 -0
- package/build/src/run/android/resolveGradleProps.js.map +1 -0
- package/build/src/run/android/resolveInstallApkName.js +72 -0
- package/build/src/run/android/resolveInstallApkName.js.map +1 -0
- package/build/src/run/android/resolveLaunchProps.js +32 -0
- package/build/src/run/android/resolveLaunchProps.js.map +1 -0
- package/build/src/run/android/resolveOptions.js +25 -0
- package/build/src/run/android/resolveOptions.js.map +1 -0
- package/build/src/run/android/runAndroidAsync.js +74 -0
- package/build/src/run/android/runAndroidAsync.js.map +1 -0
- package/build/src/run/ensureNativeProject.js +33 -0
- package/build/src/run/ensureNativeProject.js.map +1 -0
- package/build/src/run/hints.js +22 -0
- package/build/src/run/hints.js.map +1 -0
- package/build/src/run/resolveBundlerProps.js +31 -0
- package/build/src/run/resolveBundlerProps.js.map +1 -0
- package/build/src/run/startBundler.js +76 -0
- package/build/src/run/startBundler.js.map +1 -0
- package/build/src/start/doctor/Prerequisite.js +47 -0
- package/build/src/start/doctor/Prerequisite.js.map +1 -0
- package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js +68 -0
- package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js.map +1 -0
- package/build/src/start/doctor/apple/XcodePrerequisite.js +115 -0
- package/build/src/start/doctor/apple/XcodePrerequisite.js.map +1 -0
- package/build/src/start/doctor/apple/XcrunPrerequisite.js +65 -0
- package/build/src/start/doctor/apple/XcrunPrerequisite.js.map +1 -0
- package/build/src/start/doctor/dependencies/bundledNativeModules.js +64 -0
- package/build/src/start/doctor/dependencies/bundledNativeModules.js.map +1 -0
- package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js +131 -0
- package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js.map +1 -0
- package/build/src/start/doctor/dependencies/getMissingPackages.js +95 -0
- package/build/src/start/doctor/dependencies/getMissingPackages.js.map +1 -0
- package/build/src/start/doctor/dependencies/getVersionedPackages.js +119 -0
- package/build/src/start/doctor/dependencies/getVersionedPackages.js.map +1 -0
- package/build/src/start/doctor/dependencies/validateDependenciesVersions.js +147 -0
- package/build/src/start/doctor/dependencies/validateDependenciesVersions.js.map +1 -0
- package/build/src/start/doctor/ngrok/ExternalModule.js +164 -0
- package/build/src/start/doctor/ngrok/ExternalModule.js.map +1 -0
- package/build/src/start/doctor/ngrok/NgrokResolver.js +17 -0
- package/build/src/start/doctor/ngrok/NgrokResolver.js.map +1 -0
- package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js +142 -0
- package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js.map +1 -0
- package/build/src/start/doctor/typescript/updateTSConfig.js +92 -0
- package/build/src/start/doctor/typescript/updateTSConfig.js.map +1 -0
- package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js +112 -0
- package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js.map +1 -0
- package/build/src/start/index.js +116 -0
- package/build/src/start/index.js.map +1 -0
- package/build/src/start/interface/KeyPressHandler.js +99 -0
- package/build/src/start/interface/KeyPressHandler.js.map +1 -0
- package/build/src/start/interface/commandsTable.js +175 -0
- package/build/src/start/interface/commandsTable.js.map +1 -0
- package/build/src/start/interface/interactiveActions.js +134 -0
- package/build/src/start/interface/interactiveActions.js.map +1 -0
- package/build/src/start/interface/startInterface.js +217 -0
- package/build/src/start/interface/startInterface.js.map +1 -0
- package/build/src/start/platforms/AppIdResolver.js +44 -0
- package/build/src/start/platforms/AppIdResolver.js.map +1 -0
- package/build/src/start/platforms/DeviceManager.js +43 -0
- package/build/src/start/platforms/DeviceManager.js.map +1 -0
- package/build/src/start/platforms/ExpoGoInstaller.js +111 -0
- package/build/src/start/platforms/ExpoGoInstaller.js.map +1 -0
- package/build/src/start/platforms/PlatformManager.js +121 -0
- package/build/src/start/platforms/PlatformManager.js.map +1 -0
- package/build/src/start/platforms/android/ADBServer.js +129 -0
- package/build/src/start/platforms/android/ADBServer.js.map +1 -0
- package/build/src/start/platforms/android/AndroidAppIdResolver.js +40 -0
- package/build/src/start/platforms/android/AndroidAppIdResolver.js.map +1 -0
- package/build/src/start/platforms/android/AndroidDeviceManager.js +183 -0
- package/build/src/start/platforms/android/AndroidDeviceManager.js.map +1 -0
- package/build/src/start/platforms/android/AndroidPlatformManager.js +35 -0
- package/build/src/start/platforms/android/AndroidPlatformManager.js.map +1 -0
- package/build/src/start/platforms/android/activateWindow.js +80 -0
- package/build/src/start/platforms/android/activateWindow.js.map +1 -0
- package/build/src/start/platforms/android/adb.js +263 -0
- package/build/src/start/platforms/android/adb.js.map +1 -0
- package/build/src/start/platforms/android/adbReverse.js +84 -0
- package/build/src/start/platforms/android/adbReverse.js.map +1 -0
- package/build/src/start/platforms/android/emulator.js +118 -0
- package/build/src/start/platforms/android/emulator.js.map +1 -0
- package/build/src/start/platforms/android/getDevices.js +36 -0
- package/build/src/start/platforms/android/getDevices.js.map +1 -0
- package/build/src/start/platforms/android/gradle.js +86 -0
- package/build/src/start/platforms/android/gradle.js.map +1 -0
- package/build/src/start/platforms/android/promptAndroidDevice.js +60 -0
- package/build/src/start/platforms/android/promptAndroidDevice.js.map +1 -0
- package/build/src/start/platforms/ios/AppleAppIdResolver.js +46 -0
- package/build/src/start/platforms/ios/AppleAppIdResolver.js.map +1 -0
- package/build/src/start/platforms/ios/AppleDeviceManager.js +201 -0
- package/build/src/start/platforms/ios/AppleDeviceManager.js.map +1 -0
- package/build/src/start/platforms/ios/ApplePlatformManager.js +31 -0
- package/build/src/start/platforms/ios/ApplePlatformManager.js.map +1 -0
- package/build/src/start/platforms/ios/assertSystemRequirements.js +16 -0
- package/build/src/start/platforms/ios/assertSystemRequirements.js.map +1 -0
- package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js +85 -0
- package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js.map +1 -0
- package/build/src/start/platforms/ios/getBestSimulator.js +101 -0
- package/build/src/start/platforms/ios/getBestSimulator.js.map +1 -0
- package/build/src/start/platforms/ios/promptAppleDevice.js +60 -0
- package/build/src/start/platforms/ios/promptAppleDevice.js.map +1 -0
- package/build/src/start/platforms/ios/simctl.js +229 -0
- package/build/src/start/platforms/ios/simctl.js.map +1 -0
- package/build/src/start/platforms/ios/xcrun.js +67 -0
- package/build/src/start/platforms/ios/xcrun.js.map +1 -0
- package/build/src/start/project/devices.js +77 -0
- package/build/src/start/project/devices.js.map +1 -0
- package/build/src/start/project/dotExpo.js +74 -0
- package/build/src/start/project/dotExpo.js.map +1 -0
- package/build/src/start/project/settings.js +13 -0
- package/build/src/start/project/settings.js.map +1 -0
- package/build/src/start/resolveOptions.js +156 -0
- package/build/src/start/resolveOptions.js.map +1 -0
- package/build/src/start/server/AsyncNgrok.js +173 -0
- package/build/src/start/server/AsyncNgrok.js.map +1 -0
- package/build/src/start/server/BundlerDevServer.js +312 -0
- package/build/src/start/server/BundlerDevServer.js.map +1 -0
- package/build/src/start/server/DevServerManager.js +142 -0
- package/build/src/start/server/DevServerManager.js.map +1 -0
- package/build/src/start/server/DevelopmentSession.js +104 -0
- package/build/src/start/server/DevelopmentSession.js.map +1 -0
- package/build/src/start/server/UrlCreator.js +159 -0
- package/build/src/start/server/UrlCreator.js.map +1 -0
- package/build/src/start/server/metro/MetroBundlerDevServer.js +97 -0
- package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -0
- package/build/src/start/server/metro/MetroTerminalReporter.js +178 -0
- package/build/src/start/server/metro/MetroTerminalReporter.js.map +1 -0
- package/build/src/start/server/metro/TerminalReporter.js +87 -0
- package/build/src/start/server/metro/TerminalReporter.js.map +1 -0
- package/build/src/start/server/metro/TerminalReporter.types.js +6 -0
- package/build/src/start/server/metro/TerminalReporter.types.js.map +1 -0
- package/build/src/start/server/metro/instantiateMetro.js +66 -0
- package/build/src/start/server/metro/instantiateMetro.js.map +1 -0
- package/build/src/start/server/metro/resolveFromProject.js +38 -0
- package/build/src/start/server/metro/resolveFromProject.js.map +1 -0
- package/build/src/start/server/middleware/ClassicManifestMiddleware.js +145 -0
- package/build/src/start/server/middleware/ClassicManifestMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js +185 -0
- package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/ExpoMiddleware.js +78 -0
- package/build/src/start/server/middleware/ExpoMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/InterstitialPageMiddleware.js +70 -0
- package/build/src/start/server/middleware/InterstitialPageMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/ManifestMiddleware.js +177 -0
- package/build/src/start/server/middleware/ManifestMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js +69 -0
- package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/createDevServerMiddleware.js +24 -0
- package/build/src/start/server/middleware/createDevServerMiddleware.js.map +1 -0
- package/build/src/start/server/middleware/resolveAssets.js +110 -0
- package/build/src/start/server/middleware/resolveAssets.js.map +1 -0
- package/build/src/start/server/middleware/resolveEntryPoint.js +37 -0
- package/build/src/start/server/middleware/resolveEntryPoint.js.map +1 -0
- package/build/src/start/server/middleware/resolvePlatform.js +32 -0
- package/build/src/start/server/middleware/resolvePlatform.js.map +1 -0
- package/build/src/start/server/middleware/server.types.js +6 -0
- package/build/src/start/server/middleware/server.types.js.map +1 -0
- package/build/src/start/server/openPlatforms.js +30 -0
- package/build/src/start/server/openPlatforms.js.map +1 -0
- package/build/src/start/server/webpack/WebpackBundlerDevServer.js +299 -0
- package/build/src/start/server/webpack/WebpackBundlerDevServer.js.map +1 -0
- package/build/src/start/server/webpack/formatWebpackMessages.js +94 -0
- package/build/src/start/server/webpack/formatWebpackMessages.js.map +1 -0
- package/build/src/start/server/webpack/resolveFromProject.js +43 -0
- package/build/src/start/server/webpack/resolveFromProject.js.map +1 -0
- package/build/src/start/server/webpack/tls.js +72 -0
- package/build/src/start/server/webpack/tls.js.map +1 -0
- package/build/src/start/startAsync.js +150 -0
- package/build/src/start/startAsync.js.map +1 -0
- package/build/src/utils/FileNotifier.js +71 -0
- package/build/src/utils/FileNotifier.js.map +1 -0
- package/build/src/utils/analytics/getDevClientProperties.js +41 -0
- package/build/src/utils/analytics/getDevClientProperties.js.map +1 -0
- package/build/src/utils/analytics/rudderstackClient.js +106 -0
- package/build/src/utils/analytics/rudderstackClient.js.map +1 -0
- package/build/src/utils/ansi.js +17 -0
- package/build/src/utils/ansi.js.map +1 -0
- package/build/src/utils/args.js +77 -0
- package/build/src/utils/args.js.map +1 -0
- package/build/src/utils/array.js +56 -0
- package/build/src/utils/array.js.map +1 -0
- package/build/src/utils/cocoapods.js +143 -0
- package/build/src/utils/cocoapods.js.map +1 -0
- package/build/src/utils/codesigning.js +283 -0
- package/build/src/utils/codesigning.js.map +1 -0
- package/build/src/utils/createFileTransform.js +89 -0
- package/build/src/utils/createFileTransform.js.map +1 -0
- package/build/src/utils/delay.js +39 -0
- package/build/src/utils/delay.js.map +1 -0
- package/build/src/utils/dir.js +38 -0
- package/build/src/utils/dir.js.map +1 -0
- package/build/src/utils/downloadAppAsync.js +74 -0
- package/build/src/utils/downloadAppAsync.js.map +1 -0
- package/build/src/utils/downloadExpoGoAsync.js +99 -0
- package/build/src/utils/downloadExpoGoAsync.js.map +1 -0
- package/build/src/utils/editor.js +60 -0
- package/build/src/utils/editor.js.map +1 -0
- package/build/src/utils/env.js +62 -0
- package/build/src/utils/env.js.map +1 -0
- package/build/src/utils/errors.js +69 -0
- package/build/src/utils/errors.js.map +1 -0
- package/build/src/utils/exit.js +90 -0
- package/build/src/utils/exit.js.map +1 -0
- package/build/src/utils/findUp.js +33 -0
- package/build/src/utils/findUp.js.map +1 -0
- package/build/src/utils/fn.js +32 -0
- package/build/src/utils/fn.js.map +1 -0
- package/build/src/utils/getOrPromptApplicationId.js +183 -0
- package/build/src/utils/getOrPromptApplicationId.js.map +1 -0
- package/build/src/utils/getRunningProcess.js +92 -0
- package/build/src/utils/getRunningProcess.js.map +1 -0
- package/build/src/utils/git.js +88 -0
- package/build/src/utils/git.js.map +1 -0
- package/build/src/utils/glob.js +65 -0
- package/build/src/utils/glob.js.map +1 -0
- package/build/src/utils/ip.js +16 -0
- package/build/src/utils/ip.js.map +1 -0
- package/build/src/utils/isModuleSymlinked.js +37 -0
- package/build/src/utils/isModuleSymlinked.js.map +1 -0
- package/build/src/utils/link.js +31 -0
- package/build/src/utils/link.js.map +1 -0
- package/build/src/utils/mergeGitIgnorePaths.js +112 -0
- package/build/src/utils/mergeGitIgnorePaths.js.map +1 -0
- package/build/src/utils/modifyConfigAsync.js +68 -0
- package/build/src/utils/modifyConfigAsync.js.map +1 -0
- package/build/src/utils/modifyConfigPlugins.js +51 -0
- package/build/src/utils/modifyConfigPlugins.js.map +1 -0
- package/build/src/utils/nodeModules.js +118 -0
- package/build/src/utils/nodeModules.js.map +1 -0
- package/build/src/utils/npm.js +144 -0
- package/build/src/utils/npm.js.map +1 -0
- package/build/src/utils/obj.js +45 -0
- package/build/src/utils/obj.js.map +1 -0
- package/build/src/utils/ora.js +102 -0
- package/build/src/utils/ora.js.map +1 -0
- package/build/src/utils/port.js +130 -0
- package/build/src/utils/port.js.map +1 -0
- package/build/src/utils/profile.js +63 -0
- package/build/src/utils/profile.js.map +1 -0
- package/build/src/utils/progress.js +15 -0
- package/build/src/utils/progress.js.map +1 -0
- package/build/src/utils/prompts.js +127 -0
- package/build/src/utils/prompts.js.map +1 -0
- package/build/src/utils/resolveArgs.js +94 -0
- package/build/src/utils/resolveArgs.js.map +1 -0
- package/build/src/utils/scheme.js +106 -0
- package/build/src/utils/scheme.js.map +1 -0
- package/build/src/utils/tar.js +59 -0
- package/build/src/utils/tar.js.map +1 -0
- package/build/src/utils/url.js +67 -0
- package/build/src/utils/url.js.map +1 -0
- package/build/src/utils/validateApplicationId.js +90 -0
- package/build/src/utils/validateApplicationId.js.map +1 -0
- package/build/src/whoami/index.js +47 -0
- package/build/src/whoami/index.js.map +1 -0
- package/build/src/whoami/whoamiAsync.js +44 -0
- package/build/src/whoami/whoamiAsync.js.map +1 -0
- package/package.json +132 -4
- package/static/loading-page/index.html +270 -0
- package/index.js +0 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
exports.memoize = memoize;
|
|
6
|
+
exports.guardAsync = guardAsync;
|
|
7
|
+
function memoize(fn) {
|
|
8
|
+
const cache = {};
|
|
9
|
+
return (...args)=>{
|
|
10
|
+
const key = JSON.stringify(args);
|
|
11
|
+
if (cache[key]) {
|
|
12
|
+
return cache[key];
|
|
13
|
+
}
|
|
14
|
+
const result = fn(...args);
|
|
15
|
+
cache[key] = result;
|
|
16
|
+
return result;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
function guardAsync(fn) {
|
|
20
|
+
let invoked = false;
|
|
21
|
+
let returnValue;
|
|
22
|
+
const guard = async (...args)=>{
|
|
23
|
+
if (!invoked) {
|
|
24
|
+
invoked = true;
|
|
25
|
+
returnValue = await fn(...args);
|
|
26
|
+
}
|
|
27
|
+
return returnValue;
|
|
28
|
+
};
|
|
29
|
+
return guard;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
//# sourceMappingURL=fn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/fn.ts"],"sourcesContent":["/** `lodash.memoize` */\nexport function memoize<T extends (...args: any[]) => any>(fn: T): T {\n const cache: { [key: string]: any } = {};\n return ((...args: any[]) => {\n const key = JSON.stringify(args);\n if (cache[key]) {\n return cache[key];\n }\n const result = fn(...args);\n cache[key] = result;\n return result;\n }) as any;\n}\n\n/** memoizes an async function to prevent subsequent calls that might be invoked before the function has finished resolving. */\nexport function guardAsync<V, T extends (...args: any[]) => Promise<V>>(fn: T): T {\n let invoked = false;\n let returnValue: V;\n\n const guard: any = async (...args: any[]): Promise<V> => {\n if (!invoked) {\n invoked = true;\n returnValue = await fn(...args);\n }\n\n return returnValue;\n };\n\n return guard;\n}\n"],"names":["memoize","guardAsync","fn","cache","args","key","JSON","stringify","result","invoked","returnValue","guard"],"mappings":"AACA;;;;QAAgBA,OAAO,GAAPA,OAAO;QAcPC,UAAU,GAAVA,UAAU;AAdnB,SAASD,OAAO,CAAoCE,EAAK,EAAK;IACnE,MAAMC,KAAK,GAA2B,EAAE,AAAC;IACzC,OAAQ,CAAC,GAAGC,IAAI,AAAO,GAAK;QAC1B,MAAMC,GAAG,GAAGC,IAAI,CAACC,SAAS,CAACH,IAAI,CAAC,AAAC;QACjC,IAAID,KAAK,CAACE,GAAG,CAAC,EAAE;YACd,OAAOF,KAAK,CAACE,GAAG,CAAC,CAAC;SACnB;QACD,MAAMG,MAAM,GAAGN,EAAE,IAAIE,IAAI,CAAC,AAAC;QAC3BD,KAAK,CAACE,GAAG,CAAC,GAAGG,MAAM,CAAC;QACpB,OAAOA,MAAM,CAAC;KACf,CAAS;CACX;AAGM,SAASP,UAAU,CAA8CC,EAAK,EAAK;IAChF,IAAIO,OAAO,GAAG,KAAK,AAAC;IACpB,IAAIC,WAAW,AAAG,AAAC;IAEnB,MAAMC,KAAK,GAAQ,OAAO,GAAGP,IAAI,AAAO,GAAiB;QACvD,IAAI,CAACK,OAAO,EAAE;YACZA,OAAO,GAAG,IAAI,CAAC;YACfC,WAAW,GAAG,MAAMR,EAAE,IAAIE,IAAI,CAAC,CAAC;SACjC;QAED,OAAOM,WAAW,CAAC;KACpB,AAAC;IAEF,OAAOC,KAAK,CAAC;CACd"}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
exports.getOrPromptForBundleIdentifier = getOrPromptForBundleIdentifier;
|
|
6
|
+
exports.getOrPromptForPackage = getOrPromptForPackage;
|
|
7
|
+
var _config = require("@expo/config");
|
|
8
|
+
var _chalk = _interopRequireDefault(require("chalk"));
|
|
9
|
+
var Log = _interopRequireWildcard(require("../log"));
|
|
10
|
+
var _link = require("./link");
|
|
11
|
+
var _modifyConfigAsync = require("./modifyConfigAsync");
|
|
12
|
+
var _prompts = _interopRequireWildcard(require("./prompts"));
|
|
13
|
+
var _validateApplicationId = require("./validateApplicationId");
|
|
14
|
+
function _interopRequireDefault(obj) {
|
|
15
|
+
return obj && obj.__esModule ? obj : {
|
|
16
|
+
default: obj
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
function _interopRequireWildcard(obj) {
|
|
20
|
+
if (obj && obj.__esModule) {
|
|
21
|
+
return obj;
|
|
22
|
+
} else {
|
|
23
|
+
var newObj = {};
|
|
24
|
+
if (obj != null) {
|
|
25
|
+
for(var key in obj){
|
|
26
|
+
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
27
|
+
var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
|
|
28
|
+
if (desc.get || desc.set) {
|
|
29
|
+
Object.defineProperty(newObj, key, desc);
|
|
30
|
+
} else {
|
|
31
|
+
newObj[key] = obj[key];
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
newObj.default = obj;
|
|
37
|
+
return newObj;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
function getUsernameAsync(exp) {
|
|
41
|
+
// TODO: Use XDL's UserManager
|
|
42
|
+
// import { UserManager } from 'xdl';
|
|
43
|
+
return (0, _config).getAccountUsername(exp);
|
|
44
|
+
}
|
|
45
|
+
const NO_BUNDLE_ID_MESSAGE = `Project must have a \`ios.bundleIdentifier\` set in the Expo config (app.json or app.config.js).`;
|
|
46
|
+
const NO_PACKAGE_MESSAGE = `Project must have a \`android.package\` set in the Expo config (app.json or app.config.js).`;
|
|
47
|
+
async function getOrPromptForBundleIdentifier(projectRoot) {
|
|
48
|
+
var ref;
|
|
49
|
+
const { exp } = (0, _config).getConfig(projectRoot);
|
|
50
|
+
const current = (ref = exp.ios) == null ? void 0 : ref.bundleIdentifier;
|
|
51
|
+
if (current) {
|
|
52
|
+
(0, _validateApplicationId).assertValidBundleId(current);
|
|
53
|
+
return current;
|
|
54
|
+
}
|
|
55
|
+
Log.log(_chalk.default`\n{bold 📝 iOS Bundle Identifier} {dim ${(0, _link).learnMore("https://expo.fyi/bundle-identifier")}}\n`);
|
|
56
|
+
return await promptForBundleIdAsync(projectRoot, exp);
|
|
57
|
+
}
|
|
58
|
+
async function promptForBundleIdAsync(projectRoot, exp) {
|
|
59
|
+
var ref;
|
|
60
|
+
// Prompt the user for the bundle ID.
|
|
61
|
+
// Even if the project is using a dynamic config we can still
|
|
62
|
+
// prompt a better error message, recommend a default value, and help the user
|
|
63
|
+
// validate their custom bundle ID upfront.
|
|
64
|
+
const { bundleIdentifier } = await (0, _prompts).default({
|
|
65
|
+
type: "text",
|
|
66
|
+
name: "bundleIdentifier",
|
|
67
|
+
initial: (ref = await getRecommendedBundleIdAsync(exp)) != null ? ref : undefined,
|
|
68
|
+
// The Apple helps people know this isn't an EAS feature.
|
|
69
|
+
message: `What would you like your iOS bundle identifier to be?`,
|
|
70
|
+
validate: _validateApplicationId.validateBundleId
|
|
71
|
+
}, {
|
|
72
|
+
nonInteractiveHelp: NO_BUNDLE_ID_MESSAGE
|
|
73
|
+
});
|
|
74
|
+
// Warn the user if the bundle ID is already in use.
|
|
75
|
+
const warning = await (0, _validateApplicationId).getBundleIdWarningAsync(bundleIdentifier);
|
|
76
|
+
if (warning && !await warnAndConfirmAsync(warning)) {
|
|
77
|
+
// Cycle the Bundle ID prompt to try again.
|
|
78
|
+
return await promptForBundleIdAsync(projectRoot, exp);
|
|
79
|
+
}
|
|
80
|
+
// Apply the changes to the config.
|
|
81
|
+
await (0, _modifyConfigAsync).attemptModification(projectRoot, {
|
|
82
|
+
ios: {
|
|
83
|
+
...exp.ios || {},
|
|
84
|
+
bundleIdentifier
|
|
85
|
+
}
|
|
86
|
+
}, {
|
|
87
|
+
ios: {
|
|
88
|
+
bundleIdentifier
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
return bundleIdentifier;
|
|
92
|
+
}
|
|
93
|
+
async function warnAndConfirmAsync(warning) {
|
|
94
|
+
Log.log();
|
|
95
|
+
Log.warn(warning);
|
|
96
|
+
Log.log();
|
|
97
|
+
if (!await (0, _prompts).confirmAsync({
|
|
98
|
+
message: `Continue?`,
|
|
99
|
+
initial: true
|
|
100
|
+
})) {
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
105
|
+
// Recommend a bundle identifier based on the username and project slug.
|
|
106
|
+
async function getRecommendedBundleIdAsync(exp) {
|
|
107
|
+
var ref, ref1;
|
|
108
|
+
// Attempt to use the android package name first since it's convenient to have them aligned.
|
|
109
|
+
if (((ref = exp.android) == null ? void 0 : ref.package) && (0, _validateApplicationId).validateBundleId((ref1 = exp.android) == null ? void 0 : ref1.package)) {
|
|
110
|
+
var ref2;
|
|
111
|
+
return (ref2 = exp.android) == null ? void 0 : ref2.package;
|
|
112
|
+
} else {
|
|
113
|
+
const username = await getUsernameAsync(exp);
|
|
114
|
+
const possibleId = `com.${username}.${exp.slug}`;
|
|
115
|
+
if (username && (0, _validateApplicationId).validateBundleId(possibleId)) {
|
|
116
|
+
return possibleId;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
// Recommend a package name based on the username and project slug.
|
|
122
|
+
async function getRecommendedPackageNameAsync(exp) {
|
|
123
|
+
var ref;
|
|
124
|
+
// Attempt to use the ios bundle id first since it's convenient to have them aligned.
|
|
125
|
+
if (((ref = exp.ios) == null ? void 0 : ref.bundleIdentifier) && (0, _validateApplicationId).validatePackage(exp.ios.bundleIdentifier)) {
|
|
126
|
+
return exp.ios.bundleIdentifier;
|
|
127
|
+
} else {
|
|
128
|
+
const username = await getUsernameAsync(exp);
|
|
129
|
+
// It's common to use dashes in your node project name, strip them from the suggested package name.
|
|
130
|
+
const possibleId = `com.${username}.${exp.slug}`.split("-").join("");
|
|
131
|
+
if (username && (0, _validateApplicationId).validatePackage(possibleId)) {
|
|
132
|
+
return possibleId;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
async function getOrPromptForPackage(projectRoot) {
|
|
138
|
+
var ref;
|
|
139
|
+
const { exp } = (0, _config).getConfig(projectRoot);
|
|
140
|
+
const current = (ref = exp.android) == null ? void 0 : ref.package;
|
|
141
|
+
if (current) {
|
|
142
|
+
(0, _validateApplicationId).assertValidPackage(current);
|
|
143
|
+
return current;
|
|
144
|
+
}
|
|
145
|
+
Log.log(_chalk.default`\n{bold 📝 Android package} {dim ${(0, _link).learnMore("https://expo.fyi/android-package")}}\n`);
|
|
146
|
+
return await promptForPackageAsync(projectRoot, exp);
|
|
147
|
+
}
|
|
148
|
+
async function promptForPackageAsync(projectRoot, exp) {
|
|
149
|
+
var ref;
|
|
150
|
+
// Prompt the user for the android package.
|
|
151
|
+
// Even if the project is using a dynamic config we can still
|
|
152
|
+
// prompt a better error message, recommend a default value, and help the user
|
|
153
|
+
// validate their custom android package upfront.
|
|
154
|
+
const { packageName } = await (0, _prompts).default({
|
|
155
|
+
type: "text",
|
|
156
|
+
name: "packageName",
|
|
157
|
+
initial: (ref = await getRecommendedPackageNameAsync(exp)) != null ? ref : undefined,
|
|
158
|
+
message: `What would you like your Android package name to be?`,
|
|
159
|
+
validate: _validateApplicationId.validatePackage
|
|
160
|
+
}, {
|
|
161
|
+
nonInteractiveHelp: NO_PACKAGE_MESSAGE
|
|
162
|
+
});
|
|
163
|
+
// Warn the user if the package name is already in use.
|
|
164
|
+
const warning = await (0, _validateApplicationId).getPackageNameWarningAsync(packageName);
|
|
165
|
+
if (warning && !await warnAndConfirmAsync(warning)) {
|
|
166
|
+
// Cycle the Package name prompt to try again.
|
|
167
|
+
return await promptForPackageAsync(projectRoot, exp);
|
|
168
|
+
}
|
|
169
|
+
// Apply the changes to the config.
|
|
170
|
+
await (0, _modifyConfigAsync).attemptModification(projectRoot, {
|
|
171
|
+
android: {
|
|
172
|
+
...exp.android || {},
|
|
173
|
+
package: packageName
|
|
174
|
+
}
|
|
175
|
+
}, {
|
|
176
|
+
android: {
|
|
177
|
+
package: packageName
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
return packageName;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
//# sourceMappingURL=getOrPromptApplicationId.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/getOrPromptApplicationId.ts"],"sourcesContent":["import { ExpoConfig, getAccountUsername, getConfig } from '@expo/config';\nimport chalk from 'chalk';\n\nimport * as Log from '../log';\nimport { learnMore } from './link';\nimport { attemptModification } from './modifyConfigAsync';\nimport prompt, { confirmAsync } from './prompts';\nimport {\n assertValidBundleId,\n assertValidPackage,\n getBundleIdWarningAsync,\n getPackageNameWarningAsync,\n validateBundleId,\n validatePackage,\n} from './validateApplicationId';\n\nfunction getUsernameAsync(exp: ExpoConfig) {\n // TODO: Use XDL's UserManager\n // import { UserManager } from 'xdl';\n return getAccountUsername(exp);\n}\n\nconst NO_BUNDLE_ID_MESSAGE = `Project must have a \\`ios.bundleIdentifier\\` set in the Expo config (app.json or app.config.js).`;\n\nconst NO_PACKAGE_MESSAGE = `Project must have a \\`android.package\\` set in the Expo config (app.json or app.config.js).`;\n\n/**\n * Get the bundle identifier from the Expo config or prompt the user to choose a new bundle identifier.\n * Prompted value will be validated against the App Store and a local regex.\n * If the project Expo config is a static JSON file, the bundle identifier will be updated in the config automatically.\n */\nexport async function getOrPromptForBundleIdentifier(projectRoot: string): Promise<string> {\n const { exp } = getConfig(projectRoot);\n\n const current = exp.ios?.bundleIdentifier;\n if (current) {\n assertValidBundleId(current);\n return current;\n }\n\n Log.log(\n chalk`\\n{bold 📝 iOS Bundle Identifier} {dim ${learnMore(\n 'https://expo.fyi/bundle-identifier'\n )}}\\n`\n );\n\n return await promptForBundleIdAsync(projectRoot, exp);\n}\n\nasync function promptForBundleIdAsync(projectRoot: string, exp: ExpoConfig): Promise<string> {\n // Prompt the user for the bundle ID.\n // Even if the project is using a dynamic config we can still\n // prompt a better error message, recommend a default value, and help the user\n // validate their custom bundle ID upfront.\n const { bundleIdentifier } = await prompt(\n {\n type: 'text',\n name: 'bundleIdentifier',\n initial: (await getRecommendedBundleIdAsync(exp)) ?? undefined,\n // The Apple helps people know this isn't an EAS feature.\n message: `What would you like your iOS bundle identifier to be?`,\n validate: validateBundleId,\n },\n {\n nonInteractiveHelp: NO_BUNDLE_ID_MESSAGE,\n }\n );\n\n // Warn the user if the bundle ID is already in use.\n const warning = await getBundleIdWarningAsync(bundleIdentifier);\n if (warning && !(await warnAndConfirmAsync(warning))) {\n // Cycle the Bundle ID prompt to try again.\n return await promptForBundleIdAsync(projectRoot, exp);\n }\n\n // Apply the changes to the config.\n await attemptModification(\n projectRoot,\n {\n ios: { ...(exp.ios || {}), bundleIdentifier },\n },\n { ios: { bundleIdentifier } }\n );\n\n return bundleIdentifier;\n}\n\nasync function warnAndConfirmAsync(warning: string): Promise<boolean> {\n Log.log();\n Log.warn(warning);\n Log.log();\n if (\n !(await confirmAsync({\n message: `Continue?`,\n initial: true,\n }))\n ) {\n return false;\n }\n return true;\n}\n\n// Recommend a bundle identifier based on the username and project slug.\nasync function getRecommendedBundleIdAsync(exp: ExpoConfig): Promise<string | null> {\n // Attempt to use the android package name first since it's convenient to have them aligned.\n if (exp.android?.package && validateBundleId(exp.android?.package)) {\n return exp.android?.package;\n } else {\n const username = await getUsernameAsync(exp);\n const possibleId = `com.${username}.${exp.slug}`;\n if (username && validateBundleId(possibleId)) {\n return possibleId;\n }\n }\n\n return null;\n}\n\n// Recommend a package name based on the username and project slug.\nasync function getRecommendedPackageNameAsync(exp: ExpoConfig): Promise<string | null> {\n // Attempt to use the ios bundle id first since it's convenient to have them aligned.\n if (exp.ios?.bundleIdentifier && validatePackage(exp.ios.bundleIdentifier)) {\n return exp.ios.bundleIdentifier;\n } else {\n const username = await getUsernameAsync(exp);\n // It's common to use dashes in your node project name, strip them from the suggested package name.\n const possibleId = `com.${username}.${exp.slug}`.split('-').join('');\n if (username && validatePackage(possibleId)) {\n return possibleId;\n }\n }\n return null;\n}\n\n/**\n * Get the package name from the Expo config or prompt the user to choose a new package name.\n * Prompted value will be validated against the Play Store and a local regex.\n * If the project Expo config is a static JSON file, the package name will be updated in the config automatically.\n */\nexport async function getOrPromptForPackage(projectRoot: string): Promise<string> {\n const { exp } = getConfig(projectRoot);\n\n const current = exp.android?.package;\n if (current) {\n assertValidPackage(current);\n return current;\n }\n\n Log.log(\n chalk`\\n{bold 📝 Android package} {dim ${learnMore('https://expo.fyi/android-package')}}\\n`\n );\n\n return await promptForPackageAsync(projectRoot, exp);\n}\n\nasync function promptForPackageAsync(projectRoot: string, exp: ExpoConfig): Promise<string> {\n // Prompt the user for the android package.\n // Even if the project is using a dynamic config we can still\n // prompt a better error message, recommend a default value, and help the user\n // validate their custom android package upfront.\n const { packageName } = await prompt(\n {\n type: 'text',\n name: 'packageName',\n initial: (await getRecommendedPackageNameAsync(exp)) ?? undefined,\n message: `What would you like your Android package name to be?`,\n validate: validatePackage,\n },\n {\n nonInteractiveHelp: NO_PACKAGE_MESSAGE,\n }\n );\n\n // Warn the user if the package name is already in use.\n const warning = await getPackageNameWarningAsync(packageName);\n if (warning && !(await warnAndConfirmAsync(warning))) {\n // Cycle the Package name prompt to try again.\n return await promptForPackageAsync(projectRoot, exp);\n }\n\n // Apply the changes to the config.\n await attemptModification(\n projectRoot,\n {\n android: { ...(exp.android || {}), package: packageName },\n },\n {\n android: { package: packageName },\n }\n );\n\n return packageName;\n}\n"],"names":["getOrPromptForBundleIdentifier","getOrPromptForPackage","Log","getUsernameAsync","exp","getAccountUsername","NO_BUNDLE_ID_MESSAGE","NO_PACKAGE_MESSAGE","projectRoot","getConfig","current","ios","bundleIdentifier","assertValidBundleId","log","chalk","learnMore","promptForBundleIdAsync","prompt","type","name","initial","getRecommendedBundleIdAsync","undefined","message","validate","validateBundleId","nonInteractiveHelp","warning","getBundleIdWarningAsync","warnAndConfirmAsync","attemptModification","warn","confirmAsync","android","package","username","possibleId","slug","getRecommendedPackageNameAsync","validatePackage","split","join","assertValidPackage","promptForPackageAsync","packageName","getPackageNameWarningAsync"],"mappings":"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"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
exports.getPID = getPID;
|
|
6
|
+
exports.getDirectoryOfProcessById = getDirectoryOfProcessById;
|
|
7
|
+
exports.getRunningProcess = getRunningProcess;
|
|
8
|
+
var _childProcess = require("child_process");
|
|
9
|
+
var path = _interopRequireWildcard(require("path"));
|
|
10
|
+
function _interopRequireWildcard(obj) {
|
|
11
|
+
if (obj && obj.__esModule) {
|
|
12
|
+
return obj;
|
|
13
|
+
} else {
|
|
14
|
+
var newObj = {};
|
|
15
|
+
if (obj != null) {
|
|
16
|
+
for(var key in obj){
|
|
17
|
+
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
18
|
+
var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
|
|
19
|
+
if (desc.get || desc.set) {
|
|
20
|
+
Object.defineProperty(newObj, key, desc);
|
|
21
|
+
} else {
|
|
22
|
+
newObj[key] = obj[key];
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
newObj.default = obj;
|
|
28
|
+
return newObj;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
const defaultOptions = {
|
|
32
|
+
encoding: "utf8",
|
|
33
|
+
stdio: [
|
|
34
|
+
"pipe",
|
|
35
|
+
"pipe",
|
|
36
|
+
"ignore"
|
|
37
|
+
]
|
|
38
|
+
};
|
|
39
|
+
function getPID(port) {
|
|
40
|
+
try {
|
|
41
|
+
const results = (0, _childProcess).execFileSync("lsof", [
|
|
42
|
+
`-i:${port}`,
|
|
43
|
+
"-P",
|
|
44
|
+
"-t",
|
|
45
|
+
"-sTCP:LISTEN"
|
|
46
|
+
], defaultOptions).split("\n")[0].trim();
|
|
47
|
+
return Number(results);
|
|
48
|
+
} catch {
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/** Get `package.json` `name` field for a given directory. Returns `null` if none exist. */ function getPackageName(packageRoot) {
|
|
53
|
+
const packageJson = path.join(packageRoot, "package.json");
|
|
54
|
+
try {
|
|
55
|
+
return require(packageJson).name || null;
|
|
56
|
+
} catch {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/** Returns a command like `node /Users/evanbacon/.../bin/expo start` or the package.json name. */ function getProcessCommand(pid, procDirectory) {
|
|
61
|
+
const name = getPackageName(procDirectory);
|
|
62
|
+
if (name) {
|
|
63
|
+
return name;
|
|
64
|
+
}
|
|
65
|
+
return (0, _childProcess).execSync(`ps -o command -p ${pid} | sed -n 2p`, defaultOptions).replace(/\n$/, "").trim();
|
|
66
|
+
}
|
|
67
|
+
function getDirectoryOfProcessById(processId) {
|
|
68
|
+
return (0, _childProcess).execSync(`lsof -p ${processId} | awk '$4=="cwd" {for (i=9; i<=NF; i++) printf "%s ", $i}'`, defaultOptions).trim();
|
|
69
|
+
}
|
|
70
|
+
function getRunningProcess(port) {
|
|
71
|
+
// 63828
|
|
72
|
+
const pid = getPID(port);
|
|
73
|
+
if (!pid) {
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
try {
|
|
77
|
+
// /Users/evanbacon/Documents/GitHub/lab/myapp
|
|
78
|
+
const directory = getDirectoryOfProcessById(pid);
|
|
79
|
+
// /Users/evanbacon/Documents/GitHub/lab/myapp/package.json
|
|
80
|
+
const command = getProcessCommand(pid, directory);
|
|
81
|
+
// TODO: Have a better message for reusing another process.
|
|
82
|
+
return {
|
|
83
|
+
pid,
|
|
84
|
+
directory,
|
|
85
|
+
command
|
|
86
|
+
};
|
|
87
|
+
} catch {
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
//# sourceMappingURL=getRunningProcess.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/getRunningProcess.ts"],"sourcesContent":["import { execFileSync, execSync, ExecSyncOptionsWithStringEncoding } from 'child_process';\nimport * as path from 'path';\n\nconst defaultOptions: ExecSyncOptionsWithStringEncoding = {\n encoding: 'utf8',\n stdio: ['pipe', 'pipe', 'ignore'],\n};\n\n/** Returns a pid value for a running port like `63828` or null if nothing is running on the given port. */\nexport function getPID(port: number): number | null {\n try {\n const results = execFileSync('lsof', [`-i:${port}`, '-P', '-t', '-sTCP:LISTEN'], defaultOptions)\n .split('\\n')[0]\n .trim();\n return Number(results);\n } catch {\n return null;\n }\n}\n\n/** Get `package.json` `name` field for a given directory. Returns `null` if none exist. */\nfunction getPackageName(packageRoot: string): string | null {\n const packageJson = path.join(packageRoot, 'package.json');\n try {\n return require(packageJson).name || null;\n } catch {\n return null;\n }\n}\n\n/** Returns a command like `node /Users/evanbacon/.../bin/expo start` or the package.json name. */\nfunction getProcessCommand(pid: number, procDirectory: string): string {\n const name = getPackageName(procDirectory);\n\n if (name) {\n return name;\n }\n return execSync(`ps -o command -p ${pid} | sed -n 2p`, defaultOptions).replace(/\\n$/, '').trim();\n}\n\n/** Get directory for a given process ID. */\nexport function getDirectoryOfProcessById(processId: number): string {\n return execSync(\n `lsof -p ${processId} | awk '$4==\"cwd\" {for (i=9; i<=NF; i++) printf \"%s \", $i}'`,\n defaultOptions\n ).trim();\n}\n\n/** Get information about a running process given a port. Returns null if no process is running on the given port. */\nexport function getRunningProcess(port: number): {\n /** The PID value for the port. */\n pid: number;\n /** Get the directory for the running process. */\n directory: string;\n /** The command running the process like `node /Users/evanbacon/.../bin/expo start` or the `package.json` name like `my-app`. */\n command: string;\n} | null {\n // 63828\n const pid = getPID(port);\n if (!pid) {\n return null;\n }\n\n try {\n // /Users/evanbacon/Documents/GitHub/lab/myapp\n const directory = getDirectoryOfProcessById(pid);\n // /Users/evanbacon/Documents/GitHub/lab/myapp/package.json\n const command = getProcessCommand(pid, directory);\n // TODO: Have a better message for reusing another process.\n return { pid, directory, command };\n } catch {\n return null;\n }\n}\n"],"names":["getPID","getDirectoryOfProcessById","getRunningProcess","path","defaultOptions","encoding","stdio","port","results","execFileSync","split","trim","Number","getPackageName","packageRoot","packageJson","join","require","name","getProcessCommand","pid","procDirectory","execSync","replace","processId","directory","command"],"mappings":"AAAA;;;;QASgBA,MAAM,GAANA,MAAM;QAgCNC,yBAAyB,GAAzBA,yBAAyB;QAQzBC,iBAAiB,GAAjBA,iBAAiB;AAjDyC,IAAA,aAAe,WAAf,eAAe,CAAA;AAC7EC,IAAAA,IAAI,mCAAM,MAAM,EAAZ;;;;;;;;;;;;;;;;;;;;;;AAEhB,MAAMC,cAAc,GAAsC;IACxDC,QAAQ,EAAE,MAAM;IAChBC,KAAK,EAAE;QAAC,MAAM;QAAE,MAAM;QAAE,QAAQ;KAAC;CAClC,AAAC;AAGK,SAASN,MAAM,CAACO,IAAY,EAAiB;IAClD,IAAI;QACF,MAAMC,OAAO,GAAGC,CAAAA,GAAAA,aAAY,AAAoE,CAAA,aAApE,CAAC,MAAM,EAAE;YAAC,CAAC,GAAG,EAAEF,IAAI,CAAC,CAAC;YAAE,IAAI;YAAE,IAAI;YAAE,cAAc;SAAC,EAAEH,cAAc,CAAC,CAC7FM,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CACdC,IAAI,EAAE,AAAC;QACV,OAAOC,MAAM,CAACJ,OAAO,CAAC,CAAC;KACxB,CAAC,OAAM;QACN,OAAO,IAAI,CAAC;KACb;CACF;AAED,2FAA2F,CAC3F,SAASK,cAAc,CAACC,WAAmB,EAAiB;IAC1D,MAAMC,WAAW,GAAGZ,IAAI,CAACa,IAAI,CAACF,WAAW,EAAE,cAAc,CAAC,AAAC;IAC3D,IAAI;QACF,OAAOG,OAAO,CAACF,WAAW,CAAC,CAACG,IAAI,IAAI,IAAI,CAAC;KAC1C,CAAC,OAAM;QACN,OAAO,IAAI,CAAC;KACb;CACF;AAED,kGAAkG,CAClG,SAASC,iBAAiB,CAACC,GAAW,EAAEC,aAAqB,EAAU;IACrE,MAAMH,IAAI,GAAGL,cAAc,CAACQ,aAAa,CAAC,AAAC;IAE3C,IAAIH,IAAI,EAAE;QACR,OAAOA,IAAI,CAAC;KACb;IACD,OAAOI,CAAAA,GAAAA,aAAQ,AAAuD,CAAA,SAAvD,CAAC,CAAC,iBAAiB,EAAEF,GAAG,CAAC,YAAY,CAAC,EAAEhB,cAAc,CAAC,CAACmB,OAAO,QAAQ,EAAE,CAAC,CAACZ,IAAI,EAAE,CAAC;CAClG;AAGM,SAASV,yBAAyB,CAACuB,SAAiB,EAAU;IACnE,OAAOF,CAAAA,GAAAA,aAAQ,AAGd,CAAA,SAHc,CACb,CAAC,QAAQ,EAAEE,SAAS,CAAC,2DAA2D,CAAC,EACjFpB,cAAc,CACf,CAACO,IAAI,EAAE,CAAC;CACV;AAGM,SAAST,iBAAiB,CAACK,IAAY,EAOrC;IACP,QAAQ;IACR,MAAMa,GAAG,GAAGpB,MAAM,CAACO,IAAI,CAAC,AAAC;IACzB,IAAI,CAACa,GAAG,EAAE;QACR,OAAO,IAAI,CAAC;KACb;IAED,IAAI;QACF,8CAA8C;QAC9C,MAAMK,SAAS,GAAGxB,yBAAyB,CAACmB,GAAG,CAAC,AAAC;QACjD,2DAA2D;QAC3D,MAAMM,OAAO,GAAGP,iBAAiB,CAACC,GAAG,EAAEK,SAAS,CAAC,AAAC;QAClD,2DAA2D;QAC3D,OAAO;YAAEL,GAAG;YAAEK,SAAS;YAAEC,OAAO;SAAE,CAAC;KACpC,CAAC,OAAM;QACN,OAAO,IAAI,CAAC;KACb;CACF"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
exports.maybeBailOnGitStatusAsync = maybeBailOnGitStatusAsync;
|
|
6
|
+
exports.validateGitStatusAsync = validateGitStatusAsync;
|
|
7
|
+
var _spawnAsync = _interopRequireDefault(require("@expo/spawn-async"));
|
|
8
|
+
var _chalk = _interopRequireDefault(require("chalk"));
|
|
9
|
+
var Log = _interopRequireWildcard(require("../log"));
|
|
10
|
+
var _env = require("./env");
|
|
11
|
+
var _prompts = require("./prompts");
|
|
12
|
+
function _interopRequireDefault(obj) {
|
|
13
|
+
return obj && obj.__esModule ? obj : {
|
|
14
|
+
default: obj
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
function _interopRequireWildcard(obj) {
|
|
18
|
+
if (obj && obj.__esModule) {
|
|
19
|
+
return obj;
|
|
20
|
+
} else {
|
|
21
|
+
var newObj = {};
|
|
22
|
+
if (obj != null) {
|
|
23
|
+
for(var key in obj){
|
|
24
|
+
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
25
|
+
var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
|
|
26
|
+
if (desc.get || desc.set) {
|
|
27
|
+
Object.defineProperty(newObj, key, desc);
|
|
28
|
+
} else {
|
|
29
|
+
newObj[key] = obj[key];
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
newObj.default = obj;
|
|
35
|
+
return newObj;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
async function maybeBailOnGitStatusAsync() {
|
|
39
|
+
if (_env.env.EXPO_NO_GIT_STATUS) {
|
|
40
|
+
Log.warn("Git status is dirty but the command will continue because EXPO_NO_GIT_STATUS is enabled...");
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
const isGitStatusClean = await validateGitStatusAsync();
|
|
44
|
+
// Give people a chance to bail out if git working tree is dirty
|
|
45
|
+
if (!isGitStatusClean) {
|
|
46
|
+
if (_env.env.CI) {
|
|
47
|
+
Log.warn(`Git status is dirty but the command will continue because the terminal is not interactive.`);
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
Log.log();
|
|
51
|
+
const answer = await (0, _prompts).confirmAsync({
|
|
52
|
+
message: `Would you like to proceed?`
|
|
53
|
+
});
|
|
54
|
+
if (!answer) {
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
Log.log();
|
|
58
|
+
}
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
async function validateGitStatusAsync() {
|
|
62
|
+
let workingTreeStatus = "unknown";
|
|
63
|
+
try {
|
|
64
|
+
const result = await (0, _spawnAsync).default("git", [
|
|
65
|
+
"status",
|
|
66
|
+
"--porcelain"
|
|
67
|
+
]);
|
|
68
|
+
workingTreeStatus = result.stdout === "" ? "clean" : "dirty";
|
|
69
|
+
} catch {
|
|
70
|
+
// Maybe git is not installed?
|
|
71
|
+
// Maybe this project is not using git?
|
|
72
|
+
}
|
|
73
|
+
if (workingTreeStatus === "clean") {
|
|
74
|
+
Log.log(`Your git working tree is ${_chalk.default.green("clean")}`);
|
|
75
|
+
Log.log("To revert the changes after this command completes, you can run the following:");
|
|
76
|
+
Log.log(" git clean --force && git reset --hard");
|
|
77
|
+
return true;
|
|
78
|
+
} else if (workingTreeStatus === "dirty") {
|
|
79
|
+
Log.log(`${_chalk.default.bold("Warning!")} Your git working tree is ${_chalk.default.red("dirty")}.`);
|
|
80
|
+
Log.log(`It's recommended to ${_chalk.default.bold("commit all your changes before proceeding")}, so you can revert the changes made by this command if necessary.`);
|
|
81
|
+
} else {
|
|
82
|
+
Log.log("We couldn't find a git repository in your project directory.");
|
|
83
|
+
Log.log("It's recommended to back up your project before proceeding.");
|
|
84
|
+
}
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
//# sourceMappingURL=git.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/git.ts"],"sourcesContent":["import spawnAsync from '@expo/spawn-async';\nimport chalk from 'chalk';\n\nimport * as Log from '../log';\nimport { env } from './env';\nimport { confirmAsync } from './prompts';\n\nexport async function maybeBailOnGitStatusAsync(): Promise<boolean> {\n if (env.EXPO_NO_GIT_STATUS) {\n Log.warn(\n 'Git status is dirty but the command will continue because EXPO_NO_GIT_STATUS is enabled...'\n );\n return false;\n }\n const isGitStatusClean = await validateGitStatusAsync();\n\n // Give people a chance to bail out if git working tree is dirty\n if (!isGitStatusClean) {\n if (env.CI) {\n Log.warn(\n `Git status is dirty but the command will continue because the terminal is not interactive.`\n );\n return false;\n }\n\n Log.log();\n const answer = await confirmAsync({\n message: `Would you like to proceed?`,\n });\n\n if (!answer) {\n return true;\n }\n\n Log.log();\n }\n return false;\n}\n\nexport async function validateGitStatusAsync(): Promise<boolean> {\n let workingTreeStatus = 'unknown';\n try {\n const result = await spawnAsync('git', ['status', '--porcelain']);\n workingTreeStatus = result.stdout === '' ? 'clean' : 'dirty';\n } catch {\n // Maybe git is not installed?\n // Maybe this project is not using git?\n }\n\n if (workingTreeStatus === 'clean') {\n Log.log(`Your git working tree is ${chalk.green('clean')}`);\n Log.log('To revert the changes after this command completes, you can run the following:');\n Log.log(' git clean --force && git reset --hard');\n return true;\n } else if (workingTreeStatus === 'dirty') {\n Log.log(`${chalk.bold('Warning!')} Your git working tree is ${chalk.red('dirty')}.`);\n Log.log(\n `It's recommended to ${chalk.bold(\n 'commit all your changes before proceeding'\n )}, so you can revert the changes made by this command if necessary.`\n );\n } else {\n Log.log(\"We couldn't find a git repository in your project directory.\");\n Log.log(\"It's recommended to back up your project before proceeding.\");\n }\n\n return false;\n}\n"],"names":["maybeBailOnGitStatusAsync","validateGitStatusAsync","Log","env","EXPO_NO_GIT_STATUS","warn","isGitStatusClean","CI","log","answer","confirmAsync","message","workingTreeStatus","result","spawnAsync","stdout","chalk","green","bold","red"],"mappings":"AAAA;;;;QAOsBA,yBAAyB,GAAzBA,yBAAyB;QAgCzBC,sBAAsB,GAAtBA,sBAAsB;AAvCrB,IAAA,WAAmB,kCAAnB,mBAAmB,EAAA;AACxB,IAAA,MAAO,kCAAP,OAAO,EAAA;AAEbC,IAAAA,GAAG,mCAAM,QAAQ,EAAd;AACK,IAAA,IAAO,WAAP,OAAO,CAAA;AACE,IAAA,QAAW,WAAX,WAAW,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEjC,eAAeF,yBAAyB,GAAqB;IAClE,IAAIG,IAAG,IAAA,CAACC,kBAAkB,EAAE;QAC1BF,GAAG,CAACG,IAAI,CACN,4FAA4F,CAC7F,CAAC;QACF,OAAO,KAAK,CAAC;KACd;IACD,MAAMC,gBAAgB,GAAG,MAAML,sBAAsB,EAAE,AAAC;IAExD,gEAAgE;IAChE,IAAI,CAACK,gBAAgB,EAAE;QACrB,IAAIH,IAAG,IAAA,CAACI,EAAE,EAAE;YACVL,GAAG,CAACG,IAAI,CACN,CAAC,0FAA0F,CAAC,CAC7F,CAAC;YACF,OAAO,KAAK,CAAC;SACd;QAEDH,GAAG,CAACM,GAAG,EAAE,CAAC;QACV,MAAMC,MAAM,GAAG,MAAMC,CAAAA,GAAAA,QAAY,AAE/B,CAAA,aAF+B,CAAC;YAChCC,OAAO,EAAE,CAAC,0BAA0B,CAAC;SACtC,CAAC,AAAC;QAEH,IAAI,CAACF,MAAM,EAAE;YACX,OAAO,IAAI,CAAC;SACb;QAEDP,GAAG,CAACM,GAAG,EAAE,CAAC;KACX;IACD,OAAO,KAAK,CAAC;CACd;AAEM,eAAeP,sBAAsB,GAAqB;IAC/D,IAAIW,iBAAiB,GAAG,SAAS,AAAC;IAClC,IAAI;QACF,MAAMC,MAAM,GAAG,MAAMC,CAAAA,GAAAA,WAAU,AAAkC,CAAA,QAAlC,CAAC,KAAK,EAAE;YAAC,QAAQ;YAAE,aAAa;SAAC,CAAC,AAAC;QAClEF,iBAAiB,GAAGC,MAAM,CAACE,MAAM,KAAK,EAAE,GAAG,OAAO,GAAG,OAAO,CAAC;KAC9D,CAAC,OAAM;IACN,8BAA8B;IAC9B,uCAAuC;KACxC;IAED,IAAIH,iBAAiB,KAAK,OAAO,EAAE;QACjCV,GAAG,CAACM,GAAG,CAAC,CAAC,yBAAyB,EAAEQ,MAAK,QAAA,CAACC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5Df,GAAG,CAACM,GAAG,CAAC,gFAAgF,CAAC,CAAC;QAC1FN,GAAG,CAACM,GAAG,CAAC,yCAAyC,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC;KACb,MAAM,IAAII,iBAAiB,KAAK,OAAO,EAAE;QACxCV,GAAG,CAACM,GAAG,CAAC,CAAC,EAAEQ,MAAK,QAAA,CAACE,IAAI,CAAC,UAAU,CAAC,CAAC,0BAA0B,EAAEF,MAAK,QAAA,CAACG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrFjB,GAAG,CAACM,GAAG,CACL,CAAC,oBAAoB,EAAEQ,MAAK,QAAA,CAACE,IAAI,CAC/B,2CAA2C,CAC5C,CAAC,kEAAkE,CAAC,CACtE,CAAC;KACH,MAAM;QACLhB,GAAG,CAACM,GAAG,CAAC,8DAA8D,CAAC,CAAC;QACxEN,GAAG,CAACM,GAAG,CAAC,6DAA6D,CAAC,CAAC;KACxE;IAED,OAAO,KAAK,CAAC;CACd"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
exports.everyMatchAsync = everyMatchAsync;
|
|
6
|
+
exports.anyMatchAsync = anyMatchAsync;
|
|
7
|
+
exports.wrapGlobWithTimeout = wrapGlobWithTimeout;
|
|
8
|
+
var _glob = require("glob");
|
|
9
|
+
function everyMatchAsync(pattern, options) {
|
|
10
|
+
return new Promise((resolve, reject)=>{
|
|
11
|
+
const g = new _glob.Glob(pattern, options);
|
|
12
|
+
let called = false;
|
|
13
|
+
const callback = (er, matched)=>{
|
|
14
|
+
if (called) return;
|
|
15
|
+
called = true;
|
|
16
|
+
if (er) reject(er);
|
|
17
|
+
else resolve(matched);
|
|
18
|
+
};
|
|
19
|
+
g.on("error", callback);
|
|
20
|
+
g.on("end", (matches)=>callback(null, matches)
|
|
21
|
+
);
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
function anyMatchAsync(pattern, options) {
|
|
25
|
+
return new Promise((resolve, reject)=>{
|
|
26
|
+
const g = new _glob.Glob(pattern, options);
|
|
27
|
+
let called = false;
|
|
28
|
+
const callback = (er, matched)=>{
|
|
29
|
+
if (called) return;
|
|
30
|
+
called = true;
|
|
31
|
+
if (er) reject(er);
|
|
32
|
+
else resolve(matched);
|
|
33
|
+
};
|
|
34
|
+
g.on("error", callback);
|
|
35
|
+
g.on("match", (matched)=>{
|
|
36
|
+
// We've disabled using abort as it breaks the entire glob package across all instances.
|
|
37
|
+
// https://github.com/isaacs/node-glob/issues/279 & https://github.com/isaacs/node-glob/issues/342
|
|
38
|
+
// For now, just collect every match.
|
|
39
|
+
// g.abort();
|
|
40
|
+
callback(null, [
|
|
41
|
+
matched
|
|
42
|
+
]);
|
|
43
|
+
});
|
|
44
|
+
g.on("end", (matches)=>callback(null, matches)
|
|
45
|
+
);
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
function wrapGlobWithTimeout(query, duration) {
|
|
49
|
+
return new Promise(async (resolve, reject)=>{
|
|
50
|
+
const timeout = setTimeout(()=>{
|
|
51
|
+
resolve(false);
|
|
52
|
+
}, duration);
|
|
53
|
+
process.on("SIGINT", ()=>clearTimeout(timeout)
|
|
54
|
+
);
|
|
55
|
+
try {
|
|
56
|
+
resolve(await query());
|
|
57
|
+
} catch (error) {
|
|
58
|
+
reject(error);
|
|
59
|
+
} finally{
|
|
60
|
+
clearTimeout(timeout);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
//# sourceMappingURL=glob.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/glob.ts"],"sourcesContent":["import G, { Glob } from 'glob';\n\n/** Finds all matching files. */\nexport function everyMatchAsync(pattern: string, options: G.IOptions) {\n return new Promise<string[]>((resolve, reject) => {\n const g = new Glob(pattern, options);\n let called = false;\n const callback = (er: Error | null, matched: string[]) => {\n if (called) return;\n called = true;\n if (er) reject(er);\n else resolve(matched);\n };\n g.on('error', callback);\n g.on('end', (matches) => callback(null, matches));\n });\n}\n\n/** Bails out early after finding the first matching file. */\nexport function anyMatchAsync(pattern: string, options: G.IOptions) {\n return new Promise<string[]>((resolve, reject) => {\n const g = new Glob(pattern, options);\n let called = false;\n const callback = (er: Error | null, matched: string[]) => {\n if (called) return;\n called = true;\n if (er) reject(er);\n else resolve(matched);\n };\n g.on('error', callback);\n g.on('match', (matched) => {\n // We've disabled using abort as it breaks the entire glob package across all instances.\n // https://github.com/isaacs/node-glob/issues/279 & https://github.com/isaacs/node-glob/issues/342\n // For now, just collect every match.\n // g.abort();\n callback(null, [matched]);\n });\n g.on('end', (matches) => callback(null, matches));\n });\n}\n\n/**\n * Wait some time, then escape...\n * Adding this because glob can sometimes freeze and fail to resolve if any other glob uses `.abort()`.\n */\nexport function wrapGlobWithTimeout(\n query: () => Promise<string[]>,\n duration: number\n): Promise<string[] | false> {\n return new Promise(async (resolve, reject) => {\n const timeout = setTimeout(() => {\n resolve(false);\n }, duration);\n\n process.on('SIGINT', () => clearTimeout(timeout));\n\n try {\n resolve(await query());\n } catch (error) {\n reject(error);\n } finally {\n clearTimeout(timeout);\n }\n });\n}\n"],"names":["everyMatchAsync","anyMatchAsync","wrapGlobWithTimeout","pattern","options","Promise","resolve","reject","g","Glob","called","callback","er","matched","on","matches","query","duration","timeout","setTimeout","process","clearTimeout","error"],"mappings":"AAAA;;;;QAGgBA,eAAe,GAAfA,eAAe;QAgBfC,aAAa,GAAbA,aAAa;QA0BbC,mBAAmB,GAAnBA,mBAAmB;AA7CX,IAAA,KAAM,WAAN,MAAM,CAAA;AAGvB,SAASF,eAAe,CAACG,OAAe,EAAEC,OAAmB,EAAE;IACpE,OAAO,IAAIC,OAAO,CAAW,CAACC,OAAO,EAAEC,MAAM,GAAK;QAChD,MAAMC,CAAC,GAAG,IAAIC,KAAI,KAAA,CAACN,OAAO,EAAEC,OAAO,CAAC,AAAC;QACrC,IAAIM,MAAM,GAAG,KAAK,AAAC;QACnB,MAAMC,QAAQ,GAAG,CAACC,EAAgB,EAAEC,OAAiB,GAAK;YACxD,IAAIH,MAAM,EAAE,OAAO;YACnBA,MAAM,GAAG,IAAI,CAAC;YACd,IAAIE,EAAE,EAAEL,MAAM,CAACK,EAAE,CAAC,CAAC;iBACdN,OAAO,CAACO,OAAO,CAAC,CAAC;SACvB,AAAC;QACFL,CAAC,CAACM,EAAE,CAAC,OAAO,EAAEH,QAAQ,CAAC,CAAC;QACxBH,CAAC,CAACM,EAAE,CAAC,KAAK,EAAE,CAACC,OAAO,GAAKJ,QAAQ,CAAC,IAAI,EAAEI,OAAO,CAAC;QAAA,CAAC,CAAC;KACnD,CAAC,CAAC;CACJ;AAGM,SAASd,aAAa,CAACE,OAAe,EAAEC,OAAmB,EAAE;IAClE,OAAO,IAAIC,OAAO,CAAW,CAACC,OAAO,EAAEC,MAAM,GAAK;QAChD,MAAMC,CAAC,GAAG,IAAIC,KAAI,KAAA,CAACN,OAAO,EAAEC,OAAO,CAAC,AAAC;QACrC,IAAIM,MAAM,GAAG,KAAK,AAAC;QACnB,MAAMC,QAAQ,GAAG,CAACC,EAAgB,EAAEC,OAAiB,GAAK;YACxD,IAAIH,MAAM,EAAE,OAAO;YACnBA,MAAM,GAAG,IAAI,CAAC;YACd,IAAIE,EAAE,EAAEL,MAAM,CAACK,EAAE,CAAC,CAAC;iBACdN,OAAO,CAACO,OAAO,CAAC,CAAC;SACvB,AAAC;QACFL,CAAC,CAACM,EAAE,CAAC,OAAO,EAAEH,QAAQ,CAAC,CAAC;QACxBH,CAAC,CAACM,EAAE,CAAC,OAAO,EAAE,CAACD,OAAO,GAAK;YACzB,wFAAwF;YACxF,kGAAkG;YAClG,qCAAqC;YACrC,aAAa;YACbF,QAAQ,CAAC,IAAI,EAAE;gBAACE,OAAO;aAAC,CAAC,CAAC;SAC3B,CAAC,CAAC;QACHL,CAAC,CAACM,EAAE,CAAC,KAAK,EAAE,CAACC,OAAO,GAAKJ,QAAQ,CAAC,IAAI,EAAEI,OAAO,CAAC;QAAA,CAAC,CAAC;KACnD,CAAC,CAAC;CACJ;AAMM,SAASb,mBAAmB,CACjCc,KAA8B,EAC9BC,QAAgB,EACW;IAC3B,OAAO,IAAIZ,OAAO,CAAC,OAAOC,OAAO,EAAEC,MAAM,GAAK;QAC5C,MAAMW,OAAO,GAAGC,UAAU,CAAC,IAAM;YAC/Bb,OAAO,CAAC,KAAK,CAAC,CAAC;SAChB,EAAEW,QAAQ,CAAC,AAAC;QAEbG,OAAO,CAACN,EAAE,CAAC,QAAQ,EAAE,IAAMO,YAAY,CAACH,OAAO,CAAC;QAAA,CAAC,CAAC;QAElD,IAAI;YACFZ,OAAO,CAAC,MAAMU,KAAK,EAAE,CAAC,CAAC;SACxB,CAAC,OAAOM,KAAK,EAAE;YACdf,MAAM,CAACe,KAAK,CAAC,CAAC;SACf,QAAS;YACRD,YAAY,CAACH,OAAO,CAAC,CAAC;SACvB;KACF,CAAC,CAAC;CACJ"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
exports.getIpAddress = getIpAddress;
|
|
6
|
+
var _internalIp = _interopRequireDefault(require("internal-ip"));
|
|
7
|
+
function _interopRequireDefault(obj) {
|
|
8
|
+
return obj && obj.__esModule ? obj : {
|
|
9
|
+
default: obj
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
function getIpAddress() {
|
|
13
|
+
return _internalIp.default.v4.sync() || "127.0.0.1";
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
//# sourceMappingURL=ip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/ip.ts"],"sourcesContent":["import internalIp from 'internal-ip';\n\nexport function getIpAddress(): string {\n return internalIp.v4.sync() || '127.0.0.1';\n}\n"],"names":["getIpAddress","internalIp","v4","sync"],"mappings":"AAAA;;;;QAEgBA,YAAY,GAAZA,YAAY;AAFL,IAAA,WAAa,kCAAb,aAAa,EAAA;;;;;;AAE7B,SAASA,YAAY,GAAW;IACrC,OAAOC,WAAU,QAAA,CAACC,EAAE,CAACC,IAAI,EAAE,IAAI,WAAW,CAAC;CAC5C"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
exports.isModuleSymlinked = isModuleSymlinked;
|
|
6
|
+
var _path = _interopRequireDefault(require("path"));
|
|
7
|
+
var _resolveFrom = _interopRequireDefault(require("resolve-from"));
|
|
8
|
+
function _interopRequireDefault(obj) {
|
|
9
|
+
return obj && obj.__esModule ? obj : {
|
|
10
|
+
default: obj
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Return true if the parent folder for a given file path is named "node_modules".
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* isModuleRootPathInNodeModulesFolder('./foo/expo') -> false
|
|
18
|
+
* isModuleRootPathInNodeModulesFolder('./node_modules/expo') -> true
|
|
19
|
+
*/ function isModuleRootPathInNodeModulesFolder(moduleRootPath) {
|
|
20
|
+
const parentFolderName = _path.default.basename(_path.default.dirname(moduleRootPath));
|
|
21
|
+
return parentFolderName === "node_modules";
|
|
22
|
+
}
|
|
23
|
+
function isModuleSymlinked(projectRoot, { moduleId , isSilent }) {
|
|
24
|
+
try {
|
|
25
|
+
const moduleRootPath = _path.default.dirname((0, _resolveFrom).default(projectRoot, `${moduleId}/package.json`));
|
|
26
|
+
return !isModuleRootPathInNodeModulesFolder(moduleRootPath);
|
|
27
|
+
} catch (error) {
|
|
28
|
+
if (!isSilent) {
|
|
29
|
+
throw error;
|
|
30
|
+
}
|
|
31
|
+
// Failed to resolve the package.json relative to the project, not sure what to do here.
|
|
32
|
+
// This is probably not possible due to node module resolution.
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
//# sourceMappingURL=isModuleSymlinked.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/isModuleSymlinked.ts"],"sourcesContent":["import path from 'path';\nimport resolveFrom from 'resolve-from';\n\n/**\n * Return true if the parent folder for a given file path is named \"node_modules\".\n *\n * @example\n * isModuleRootPathInNodeModulesFolder('./foo/expo') -> false\n * isModuleRootPathInNodeModulesFolder('./node_modules/expo') -> true\n */\nfunction isModuleRootPathInNodeModulesFolder(moduleRootPath: string): boolean {\n const parentFolderName = path.basename(path.dirname(moduleRootPath));\n return parentFolderName === 'node_modules';\n}\n\n/**\n * Given a node module name, and a project path, this method will:\n *\n * 1. Resolve the module path.\n * 2. Find the module root folder.\n * 3. Return true if the module root folder is in a folder named `node_modules`\n *\n * @param projectRoot\n * @param moduleId\n *\n * @example\n * isModuleSymlinked('./expo/apps/native-component-list', {\n * moduleId: 'react-native'\n * })\n */\nexport function isModuleSymlinked(\n projectRoot: string,\n {\n moduleId,\n isSilent,\n }: {\n moduleId: string;\n isSilent?: boolean;\n }\n): boolean {\n try {\n const moduleRootPath = path.dirname(resolveFrom(projectRoot, `${moduleId}/package.json`));\n return !isModuleRootPathInNodeModulesFolder(moduleRootPath);\n } catch (error) {\n if (!isSilent) {\n throw error;\n }\n // Failed to resolve the package.json relative to the project, not sure what to do here.\n // This is probably not possible due to node module resolution.\n return false;\n }\n}\n"],"names":["isModuleSymlinked","isModuleRootPathInNodeModulesFolder","moduleRootPath","parentFolderName","path","basename","dirname","projectRoot","moduleId","isSilent","resolveFrom","error"],"mappings":"AAAA;;;;QA8BgBA,iBAAiB,GAAjBA,iBAAiB;AA9BhB,IAAA,KAAM,kCAAN,MAAM,EAAA;AACC,IAAA,YAAc,kCAAd,cAAc,EAAA;;;;;;AAEtC;;;;;;GAMG,CACH,SAASC,mCAAmC,CAACC,cAAsB,EAAW;IAC5E,MAAMC,gBAAgB,GAAGC,KAAI,QAAA,CAACC,QAAQ,CAACD,KAAI,QAAA,CAACE,OAAO,CAACJ,cAAc,CAAC,CAAC,AAAC;IACrE,OAAOC,gBAAgB,KAAK,cAAc,CAAC;CAC5C;AAiBM,SAASH,iBAAiB,CAC/BO,WAAmB,EACnB,EACEC,QAAQ,CAAA,EACRC,QAAQ,CAAA,EAIT,EACQ;IACT,IAAI;QACF,MAAMP,cAAc,GAAGE,KAAI,QAAA,CAACE,OAAO,CAACI,CAAAA,GAAAA,YAAW,AAAyC,CAAA,QAAzC,CAACH,WAAW,EAAE,CAAC,EAAEC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,AAAC;QAC1F,OAAO,CAACP,mCAAmC,CAACC,cAAc,CAAC,CAAC;KAC7D,CAAC,OAAOS,KAAK,EAAE;QACd,IAAI,CAACF,QAAQ,EAAE;YACb,MAAME,KAAK,CAAC;SACb;QACD,wFAAwF;QACxF,+DAA+D;QAC/D,OAAO,KAAK,CAAC;KACd;CACF"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
exports.link = link;
|
|
6
|
+
exports.learnMore = learnMore;
|
|
7
|
+
var _chalk = _interopRequireDefault(require("chalk"));
|
|
8
|
+
var _terminalLink = _interopRequireDefault(require("terminal-link"));
|
|
9
|
+
function _interopRequireDefault(obj) {
|
|
10
|
+
return obj && obj.__esModule ? obj : {
|
|
11
|
+
default: obj
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
function link(url, { text =url , dim =true } = {}) {
|
|
15
|
+
let output;
|
|
16
|
+
// Links can be disabled via env variables https://github.com/jamestalmage/supports-hyperlinks/blob/master/index.js
|
|
17
|
+
if (_terminalLink.default.isSupported) {
|
|
18
|
+
output = (0, _terminalLink).default(text, url);
|
|
19
|
+
} else {
|
|
20
|
+
output = `${text === url ? "" : text + ": "}${_chalk.default.underline(url)}`;
|
|
21
|
+
}
|
|
22
|
+
return dim ? _chalk.default.dim(output) : output;
|
|
23
|
+
}
|
|
24
|
+
function learnMore(url, { learnMoreMessage: maybeLearnMoreMessage , dim =true } = {}) {
|
|
25
|
+
return link(url, {
|
|
26
|
+
text: maybeLearnMoreMessage != null ? maybeLearnMoreMessage : "Learn more",
|
|
27
|
+
dim
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
//# sourceMappingURL=link.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/link.ts"],"sourcesContent":["import chalk from 'chalk';\nimport terminalLink from 'terminal-link';\n\n/**\n * Prints a link for given URL, using text if provided, otherwise text is just the URL.\n * Format links as dim (unless disabled) and with an underline.\n *\n * @example https://expo.dev\n */\nexport function link(\n url: string,\n { text = url, dim = true }: { text?: string; dim?: boolean } = {}\n): string {\n let output: string;\n // Links can be disabled via env variables https://github.com/jamestalmage/supports-hyperlinks/blob/master/index.js\n if (terminalLink.isSupported) {\n output = terminalLink(text, url);\n } else {\n output = `${text === url ? '' : text + ': '}${chalk.underline(url)}`;\n }\n return dim ? chalk.dim(output) : output;\n}\n\n/**\n * Provide a consistent \"Learn more\" link experience.\n * Format links as dim (unless disabled) with an underline.\n *\n * @example [Learn more](https://expo.dev)\n * @example Learn more: https://expo.dev\n */\nexport function learnMore(\n url: string,\n {\n learnMoreMessage: maybeLearnMoreMessage,\n dim = true,\n }: { learnMoreMessage?: string; dim?: boolean } = {}\n): string {\n return link(url, { text: maybeLearnMoreMessage ?? 'Learn more', dim });\n}\n"],"names":["link","learnMore","url","text","dim","output","terminalLink","isSupported","chalk","underline","learnMoreMessage","maybeLearnMoreMessage"],"mappings":"AAAA;;;;QASgBA,IAAI,GAAJA,IAAI;QAqBJC,SAAS,GAATA,SAAS;AA9BP,IAAA,MAAO,kCAAP,OAAO,EAAA;AACA,IAAA,aAAe,kCAAf,eAAe,EAAA;;;;;;AAQjC,SAASD,IAAI,CAClBE,GAAW,EACX,EAAEC,IAAI,EAAGD,GAAG,CAAA,EAAEE,GAAG,EAAG,IAAI,CAAA,EAAoC,GAAG,EAAE,EACzD;IACR,IAAIC,MAAM,AAAQ,AAAC;IACnB,mHAAmH;IACnH,IAAIC,aAAY,QAAA,CAACC,WAAW,EAAE;QAC5BF,MAAM,GAAGC,CAAAA,GAAAA,aAAY,AAAW,CAAA,QAAX,CAACH,IAAI,EAAED,GAAG,CAAC,CAAC;KAClC,MAAM;QACLG,MAAM,GAAG,CAAC,EAAEF,IAAI,KAAKD,GAAG,GAAG,EAAE,GAAGC,IAAI,GAAG,IAAI,CAAC,EAAEK,MAAK,QAAA,CAACC,SAAS,CAACP,GAAG,CAAC,CAAC,CAAC,CAAC;KACtE;IACD,OAAOE,GAAG,GAAGI,MAAK,QAAA,CAACJ,GAAG,CAACC,MAAM,CAAC,GAAGA,MAAM,CAAC;CACzC;AASM,SAASJ,SAAS,CACvBC,GAAW,EACX,EACEQ,gBAAgB,EAAEC,qBAAqB,CAAA,EACvCP,GAAG,EAAG,IAAI,CAAA,EACmC,GAAG,EAAE,EAC5C;IACR,OAAOJ,IAAI,CAACE,GAAG,EAAE;QAAEC,IAAI,EAAEQ,qBAAqB,WAArBA,qBAAqB,GAAI,YAAY;QAAEP,GAAG;KAAE,CAAC,CAAC;CACxE"}
|