@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,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "GraphqlError", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return _core.CombinedError;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
exports.withErrorHandlingAsync = withErrorHandlingAsync;
|
|
12
|
+
exports.graphqlClient = void 0;
|
|
13
|
+
var _core = require("@urql/core");
|
|
14
|
+
var _exchangeRetry = require("@urql/exchange-retry");
|
|
15
|
+
var _nodeFetch = _interopRequireDefault(require("node-fetch"));
|
|
16
|
+
var Log = _interopRequireWildcard(require("../../log"));
|
|
17
|
+
var _endpoint = require("../endpoint");
|
|
18
|
+
var _userSettings = _interopRequireDefault(require("../user/UserSettings"));
|
|
19
|
+
function _interopRequireDefault(obj) {
|
|
20
|
+
return obj && obj.__esModule ? obj : {
|
|
21
|
+
default: obj
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
function _interopRequireWildcard(obj) {
|
|
25
|
+
if (obj && obj.__esModule) {
|
|
26
|
+
return obj;
|
|
27
|
+
} else {
|
|
28
|
+
var newObj = {};
|
|
29
|
+
if (obj != null) {
|
|
30
|
+
for(var key in obj){
|
|
31
|
+
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
32
|
+
var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
|
|
33
|
+
if (desc.get || desc.set) {
|
|
34
|
+
Object.defineProperty(newObj, key, desc);
|
|
35
|
+
} else {
|
|
36
|
+
newObj[key] = obj[key];
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
newObj.default = obj;
|
|
42
|
+
return newObj;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
const graphqlClient = (0, _core).createClient({
|
|
46
|
+
url: (0, _endpoint).getExpoApiBaseUrl() + "/graphql",
|
|
47
|
+
exchanges: [
|
|
48
|
+
_core.dedupExchange,
|
|
49
|
+
_core.cacheExchange,
|
|
50
|
+
(0, _exchangeRetry).retryExchange({
|
|
51
|
+
maxDelayMs: 4000,
|
|
52
|
+
retryIf: (err)=>{
|
|
53
|
+
return !!(err && (err.networkError || err.graphQLErrors.some((e)=>{
|
|
54
|
+
var ref;
|
|
55
|
+
return e == null ? void 0 : (ref = e.extensions) == null ? void 0 : ref.isTransient;
|
|
56
|
+
})));
|
|
57
|
+
}
|
|
58
|
+
}),
|
|
59
|
+
_core.fetchExchange,
|
|
60
|
+
],
|
|
61
|
+
// @ts-ignore Type 'typeof fetch' is not assignable to type '(input: RequestInfo, init?: RequestInit | undefined) => Promise<Response>'.
|
|
62
|
+
fetch: _nodeFetch.default,
|
|
63
|
+
fetchOptions: ()=>{
|
|
64
|
+
var ref;
|
|
65
|
+
const token = _userSettings.default.getAccessToken();
|
|
66
|
+
if (token) {
|
|
67
|
+
return {
|
|
68
|
+
headers: {
|
|
69
|
+
authorization: `Bearer ${token}`
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
const sessionSecret = (ref = _userSettings.default.getSession()) == null ? void 0 : ref.sessionSecret;
|
|
74
|
+
if (sessionSecret) {
|
|
75
|
+
return {
|
|
76
|
+
headers: {
|
|
77
|
+
"expo-session": sessionSecret
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
return {};
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
exports.graphqlClient = graphqlClient;
|
|
85
|
+
async function withErrorHandlingAsync(promise) {
|
|
86
|
+
const { data , error } = await promise;
|
|
87
|
+
if (error) {
|
|
88
|
+
if (error.graphQLErrors.some((e)=>{
|
|
89
|
+
var ref;
|
|
90
|
+
return e == null ? void 0 : (ref = e.extensions) == null ? void 0 : ref.isTransient;
|
|
91
|
+
})) {
|
|
92
|
+
Log.error(`We've encountered a transient error, please try again shortly.`);
|
|
93
|
+
}
|
|
94
|
+
throw error;
|
|
95
|
+
}
|
|
96
|
+
// Check for a malformed response. This only checks the root query's existence. It doesn't affect
|
|
97
|
+
// returning responses with an empty result set.
|
|
98
|
+
if (!data) {
|
|
99
|
+
throw new Error("Returned query result data is null!");
|
|
100
|
+
}
|
|
101
|
+
return data;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/api/graphql/client.ts"],"sourcesContent":["import {\n cacheExchange,\n Client,\n CombinedError as GraphqlError,\n createClient as createUrqlClient,\n dedupExchange,\n fetchExchange,\n OperationContext,\n OperationResult,\n PromisifiedSource,\n TypedDocumentNode,\n} from '@urql/core';\nimport { retryExchange } from '@urql/exchange-retry';\nimport { DocumentNode } from 'graphql';\nimport fetch from 'node-fetch';\n\nimport * as Log from '../../log';\nimport { getExpoApiBaseUrl } from '../endpoint';\nimport UserSettings from '../user/UserSettings';\n\ntype AccessTokenHeaders = {\n authorization: string;\n};\n\ntype SessionHeaders = {\n 'expo-session': string;\n};\n\nexport const graphqlClient = createUrqlClient({\n url: getExpoApiBaseUrl() + '/graphql',\n exchanges: [\n dedupExchange,\n cacheExchange,\n retryExchange({\n maxDelayMs: 4000,\n retryIf: (err) =>\n !!(err && (err.networkError || err.graphQLErrors.some((e) => e?.extensions?.isTransient))),\n }),\n fetchExchange,\n ],\n // @ts-ignore Type 'typeof fetch' is not assignable to type '(input: RequestInfo, init?: RequestInit | undefined) => Promise<Response>'.\n fetch,\n fetchOptions: (): { headers?: AccessTokenHeaders | SessionHeaders } => {\n const token = UserSettings.getAccessToken();\n if (token) {\n return {\n headers: {\n authorization: `Bearer ${token}`,\n },\n };\n }\n const sessionSecret = UserSettings.getSession()?.sessionSecret;\n if (sessionSecret) {\n return {\n headers: {\n 'expo-session': sessionSecret,\n },\n };\n }\n return {};\n },\n}) as StricterClient;\n\n/* Please specify additionalTypenames in your Graphql queries */\nexport interface StricterClient extends Client {\n // eslint-disable-next-line @typescript-eslint/ban-types\n query<Data = any, Variables extends object = {}>(\n query: DocumentNode | TypedDocumentNode<Data, Variables> | string,\n variables: Variables | undefined,\n context: Partial<OperationContext> & { additionalTypenames: string[] }\n ): PromisifiedSource<OperationResult<Data, Variables>>;\n}\n\nexport async function withErrorHandlingAsync<T>(promise: Promise<OperationResult<T>>): Promise<T> {\n const { data, error } = await promise;\n\n if (error) {\n if (error.graphQLErrors.some((e) => e?.extensions?.isTransient)) {\n Log.error(`We've encountered a transient error, please try again shortly.`);\n }\n throw error;\n }\n\n // Check for a malformed response. This only checks the root query's existence. It doesn't affect\n // returning responses with an empty result set.\n if (!data) {\n throw new Error('Returned query result data is null!');\n }\n\n return data;\n}\n\nexport { GraphqlError };\n"],"names":["GraphqlError","withErrorHandlingAsync","Log","graphqlClient","createUrqlClient","url","getExpoApiBaseUrl","exchanges","dedupExchange","cacheExchange","retryExchange","maxDelayMs","retryIf","err","networkError","graphQLErrors","some","e","extensions","isTransient","fetchExchange","fetch","fetchOptions","UserSettings","token","getAccessToken","headers","authorization","sessionSecret","getSession","promise","data","error","Error"],"mappings":"AAAA;;;;+BA4FSA,cAAY;;;eAAZA,KAAY,cAAA;;;QAnBCC,sBAAsB,GAAtBA,sBAAsB;;AA9DrC,IAAA,KAAY,WAAZ,YAAY,CAAA;AACW,IAAA,cAAsB,WAAtB,sBAAsB,CAAA;AAElC,IAAA,UAAY,kCAAZ,YAAY,EAAA;AAElBC,IAAAA,GAAG,mCAAM,WAAW,EAAjB;AACmB,IAAA,SAAa,WAAb,aAAa,CAAA;AACtB,IAAA,aAAsB,kCAAtB,sBAAsB,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUxC,MAAMC,aAAa,GAAGC,CAAAA,GAAAA,KAAgB,AAiC3C,CAAA,aAjC2C,CAAC;IAC5CC,GAAG,EAAEC,CAAAA,GAAAA,SAAiB,AAAE,CAAA,kBAAF,EAAE,GAAG,UAAU;IACrCC,SAAS,EAAE;QACTC,KAAa,cAAA;QACbC,KAAa,cAAA;QACbC,CAAAA,GAAAA,cAAa,AAIX,CAAA,cAJW,CAAC;YACZC,UAAU,EAAE,IAAI;YAChBC,OAAO,EAAE,CAACC,GAAG;gBACX,OAAA,CAAC,CAAC,CAACA,GAAG,IAAI,CAACA,GAAG,CAACC,YAAY,IAAID,GAAG,CAACE,aAAa,CAACC,IAAI,CAAC,CAACC,CAAC;wBAAKA,GAAa;oBAAbA,OAAAA,CAAC,QAAY,GAAbA,KAAAA,CAAa,GAAbA,CAAAA,GAAa,GAAbA,CAAC,CAAEC,UAAU,SAAA,GAAbD,KAAAA,CAAa,GAAbA,GAAa,CAAEE,WAAW,AAAb,CAAa;iBAAA,CAAC,CAAC,CAAC,CAAA;aAAA;SAC7F,CAAC;QACFC,KAAa,cAAA;KACd;IACD,wIAAwI;IACxIC,KAAK,EAALA,UAAK,QAAA;IACLC,YAAY,EAAE,IAAyD;YAS/CC,GAAyB;QAR/C,MAAMC,KAAK,GAAGD,aAAY,QAAA,CAACE,cAAc,EAAE,AAAC;QAC5C,IAAID,KAAK,EAAE;YACT,OAAO;gBACLE,OAAO,EAAE;oBACPC,aAAa,EAAE,CAAC,OAAO,EAAEH,KAAK,CAAC,CAAC;iBACjC;aACF,CAAC;SACH;QACD,MAAMI,aAAa,GAAGL,CAAAA,GAAyB,GAAzBA,aAAY,QAAA,CAACM,UAAU,EAAE,SAAe,GAAxCN,KAAAA,CAAwC,GAAxCA,GAAyB,CAAEK,aAAa,AAAC;QAC/D,IAAIA,aAAa,EAAE;YACjB,OAAO;gBACLF,OAAO,EAAE;oBACP,cAAc,EAAEE,aAAa;iBAC9B;aACF,CAAC;SACH;QACD,OAAO,EAAE,CAAC;KACX;CACF,CAAC,AAAkB,AAAC;QAjCRzB,aAAa,GAAbA,aAAa;AA6CnB,eAAeF,sBAAsB,CAAI6B,OAAoC,EAAc;IAChG,MAAM,EAAEC,IAAI,CAAA,EAAEC,KAAK,CAAA,EAAE,GAAG,MAAMF,OAAO,AAAC;IAEtC,IAAIE,KAAK,EAAE;QACT,IAAIA,KAAK,CAACjB,aAAa,CAACC,IAAI,CAAC,CAACC,CAAC;gBAAKA,GAAa;YAAbA,OAAAA,CAAC,QAAY,GAAbA,KAAAA,CAAa,GAAbA,CAAAA,GAAa,GAAbA,CAAC,CAAEC,UAAU,SAAA,GAAbD,KAAAA,CAAa,GAAbA,GAAa,CAAEE,WAAW,AAAb,CAAa;SAAA,CAAC,EAAE;YAC/DjB,GAAG,CAAC8B,KAAK,CAAC,CAAC,8DAA8D,CAAC,CAAC,CAAC;SAC7E;QACD,MAAMA,KAAK,CAAC;KACb;IAED,iGAAiG;IACjG,gDAAgD;IAChD,IAAI,CAACD,IAAI,EAAE;QACT,MAAM,IAAIE,KAAK,CAAC,qCAAqC,CAAC,CAAC;KACxD;IAED,OAAOF,IAAI,CAAC;CACb"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
var OfferType;
|
|
6
|
+
(function(OfferType) {
|
|
7
|
+
OfferType[/** Term subscription */ "Subscription"] = "SUBSCRIPTION";
|
|
8
|
+
OfferType[/** Advanced Purchase of Paid Resource */ "Prepaid"] = "PREPAID";
|
|
9
|
+
OfferType[/** Addon, or supplementary subscription */ "Addon"] = "ADDON";
|
|
10
|
+
})(OfferType || (OfferType = {}));
|
|
11
|
+
var Feature;
|
|
12
|
+
(function(Feature) {
|
|
13
|
+
Feature[/** Top Tier Support */ "Support"] = "SUPPORT";
|
|
14
|
+
Feature[/** Share access to projects */ "Teams"] = "TEAMS";
|
|
15
|
+
Feature[/** Priority Builds */ "Builds"] = "BUILDS";
|
|
16
|
+
Feature[/** Funds support for open source development */ "OpenSource"] = "OPEN_SOURCE";
|
|
17
|
+
})(Feature || (Feature = {}));
|
|
18
|
+
var AppPrivacy;
|
|
19
|
+
(function(AppPrivacy) {
|
|
20
|
+
AppPrivacy["Public"] = "PUBLIC";
|
|
21
|
+
AppPrivacy["Unlisted"] = "UNLISTED";
|
|
22
|
+
AppPrivacy["Hidden"] = "HIDDEN";
|
|
23
|
+
})(AppPrivacy || (AppPrivacy = {}));
|
|
24
|
+
var AppPlatform;
|
|
25
|
+
(function(AppPlatform) {
|
|
26
|
+
AppPlatform["Ios"] = "IOS";
|
|
27
|
+
AppPlatform["Android"] = "ANDROID";
|
|
28
|
+
})(AppPlatform || (AppPlatform = {}));
|
|
29
|
+
var SecondFactorMethod;
|
|
30
|
+
(function(SecondFactorMethod) {
|
|
31
|
+
SecondFactorMethod[/** Google Authenticator (TOTP) */ "Authenticator"] = "AUTHENTICATOR";
|
|
32
|
+
SecondFactorMethod[/** SMS */ "Sms"] = "SMS";
|
|
33
|
+
})(SecondFactorMethod || (SecondFactorMethod = {}));
|
|
34
|
+
var Permission;
|
|
35
|
+
(function(Permission) {
|
|
36
|
+
Permission["Own"] = "OWN";
|
|
37
|
+
Permission["Admin"] = "ADMIN";
|
|
38
|
+
Permission["Publish"] = "PUBLISH";
|
|
39
|
+
Permission["View"] = "VIEW";
|
|
40
|
+
})(Permission || (Permission = {}));
|
|
41
|
+
var Role;
|
|
42
|
+
(function(Role) {
|
|
43
|
+
Role["Owner"] = "OWNER";
|
|
44
|
+
Role["Admin"] = "ADMIN";
|
|
45
|
+
Role["Developer"] = "DEVELOPER";
|
|
46
|
+
Role["ViewOnly"] = "VIEW_ONLY";
|
|
47
|
+
Role["Custom"] = "CUSTOM";
|
|
48
|
+
Role["HasAdmin"] = "HAS_ADMIN";
|
|
49
|
+
Role["NotAdmin"] = "NOT_ADMIN";
|
|
50
|
+
})(Role || (Role = {}));
|
|
51
|
+
var BuildJobLogsFormat;
|
|
52
|
+
(function(BuildJobLogsFormat) {
|
|
53
|
+
BuildJobLogsFormat["Raw"] = "RAW";
|
|
54
|
+
BuildJobLogsFormat["Json"] = "JSON";
|
|
55
|
+
})(BuildJobLogsFormat || (BuildJobLogsFormat = {}));
|
|
56
|
+
var BuildJobStatus;
|
|
57
|
+
(function(BuildJobStatus) {
|
|
58
|
+
BuildJobStatus["Pending"] = "PENDING";
|
|
59
|
+
BuildJobStatus["Started"] = "STARTED";
|
|
60
|
+
BuildJobStatus["InProgress"] = "IN_PROGRESS";
|
|
61
|
+
BuildJobStatus["Errored"] = "ERRORED";
|
|
62
|
+
BuildJobStatus["Finished"] = "FINISHED";
|
|
63
|
+
BuildJobStatus["SentToQueue"] = "SENT_TO_QUEUE";
|
|
64
|
+
})(BuildJobStatus || (BuildJobStatus = {}));
|
|
65
|
+
var AppleDeviceClass;
|
|
66
|
+
(function(AppleDeviceClass) {
|
|
67
|
+
AppleDeviceClass["Ipad"] = "IPAD";
|
|
68
|
+
AppleDeviceClass["Iphone"] = "IPHONE";
|
|
69
|
+
})(AppleDeviceClass || (AppleDeviceClass = {}));
|
|
70
|
+
var IosDistributionType;
|
|
71
|
+
(function(IosDistributionType) {
|
|
72
|
+
IosDistributionType["AppStore"] = "APP_STORE";
|
|
73
|
+
IosDistributionType["Enterprise"] = "ENTERPRISE";
|
|
74
|
+
IosDistributionType["AdHoc"] = "AD_HOC";
|
|
75
|
+
IosDistributionType["Development"] = "DEVELOPMENT";
|
|
76
|
+
})(IosDistributionType || (IosDistributionType = {}));
|
|
77
|
+
var AppStoreConnectUserRole;
|
|
78
|
+
(function(AppStoreConnectUserRole) {
|
|
79
|
+
AppStoreConnectUserRole["Admin"] = "ADMIN";
|
|
80
|
+
AppStoreConnectUserRole["Finance"] = "FINANCE";
|
|
81
|
+
AppStoreConnectUserRole["Technical"] = "TECHNICAL";
|
|
82
|
+
AppStoreConnectUserRole["AccountHolder"] = "ACCOUNT_HOLDER";
|
|
83
|
+
AppStoreConnectUserRole["ReadOnly"] = "READ_ONLY";
|
|
84
|
+
AppStoreConnectUserRole["Sales"] = "SALES";
|
|
85
|
+
AppStoreConnectUserRole["Marketing"] = "MARKETING";
|
|
86
|
+
AppStoreConnectUserRole["AppManager"] = "APP_MANAGER";
|
|
87
|
+
AppStoreConnectUserRole["Developer"] = "DEVELOPER";
|
|
88
|
+
AppStoreConnectUserRole["AccessToReports"] = "ACCESS_TO_REPORTS";
|
|
89
|
+
AppStoreConnectUserRole["CustomerSupport"] = "CUSTOMER_SUPPORT";
|
|
90
|
+
AppStoreConnectUserRole["CreateApps"] = "CREATE_APPS";
|
|
91
|
+
AppStoreConnectUserRole["CloudManagedDeveloperId"] = "CLOUD_MANAGED_DEVELOPER_ID";
|
|
92
|
+
AppStoreConnectUserRole["CloudManagedAppDistribution"] = "CLOUD_MANAGED_APP_DISTRIBUTION";
|
|
93
|
+
AppStoreConnectUserRole["ImageManager"] = "IMAGE_MANAGER";
|
|
94
|
+
AppStoreConnectUserRole["Unknown"] = "UNKNOWN";
|
|
95
|
+
})(AppStoreConnectUserRole || (AppStoreConnectUserRole = {}));
|
|
96
|
+
var AndroidFcmVersion;
|
|
97
|
+
(function(AndroidFcmVersion) {
|
|
98
|
+
AndroidFcmVersion["Legacy"] = "LEGACY";
|
|
99
|
+
AndroidFcmVersion["V1"] = "V1";
|
|
100
|
+
})(AndroidFcmVersion || (AndroidFcmVersion = {}));
|
|
101
|
+
var AndroidKeystoreType;
|
|
102
|
+
(function(AndroidKeystoreType) {
|
|
103
|
+
AndroidKeystoreType["Jks"] = "JKS";
|
|
104
|
+
AndroidKeystoreType["Pkcs12"] = "PKCS12";
|
|
105
|
+
AndroidKeystoreType["Unknown"] = "UNKNOWN";
|
|
106
|
+
})(AndroidKeystoreType || (AndroidKeystoreType = {}));
|
|
107
|
+
var WebhookType;
|
|
108
|
+
(function(WebhookType) {
|
|
109
|
+
WebhookType["Build"] = "BUILD";
|
|
110
|
+
WebhookType["Submit"] = "SUBMIT";
|
|
111
|
+
})(WebhookType || (WebhookType = {}));
|
|
112
|
+
|
|
113
|
+
//# sourceMappingURL=generated.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/api/graphql/generated.ts"],"sourcesContent":["/**\n * This file was generated using GraphQL Codegen\n * Command: yarn generate-graphql-code\n * Run this during development for automatic type generation when editing GraphQL documents\n * For more info and docs, visit https://graphql-code-generator.com/\n */\n\ntype Maybe<T> = T | null;\n/** All built-in and custom scalars, mapped to their actual values */\ntype Scalars = {\n ID: string;\n String: string;\n Boolean: boolean;\n Int: number;\n Float: number;\n /** Date custom scalar type */\n DateTime: any;\n /** The `JSON` scalar type represents JSON values as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf). */\n JSON: any;\n /** The `JSONObject` scalar type represents JSON objects as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf). */\n JSONObject: any;\n /** The `Upload` scalar type represents a file upload. */\n Upload: any;\n};\n\ntype Update = ActivityTimelineProjectActivity & {\n __typename?: 'Update';\n id: Scalars['ID'];\n actor?: Maybe<Actor>;\n activityTimestamp: Scalars['DateTime'];\n branchId: Scalars['ID'];\n platform: Scalars['String'];\n manifestFragment: Scalars['String'];\n runtimeVersion: Scalars['String'];\n group: Scalars['String'];\n updatedAt: Scalars['DateTime'];\n createdAt: Scalars['DateTime'];\n message?: Maybe<Scalars['String']>;\n branch: UpdateBranch;\n manifestPermalink: Scalars['String'];\n};\n\ntype ActivityTimelineProjectActivity = {\n id: Scalars['ID'];\n actor?: Maybe<Actor>;\n activityTimestamp: Scalars['DateTime'];\n};\n\n/** A user or robot that can authenticate with Expo services and be a member of accounts. */\ntype Actor = {\n id: Scalars['ID'];\n firstName?: Maybe<Scalars['String']>;\n created: Scalars['DateTime'];\n isExpoAdmin: Scalars['Boolean'];\n /**\n * Best-effort human readable name for this actor for use in user interfaces during action attribution.\n * For example, when displaying a sentence indicating that actor X created a build or published an update.\n */\n displayName: Scalars['String'];\n /** Associated accounts */\n accounts: Array<Account>;\n /** Access Tokens belonging to this actor */\n accessTokens: Array<AccessToken>;\n /**\n * Server feature gate values for this actor, optionally filtering by desired gates.\n * Only resolves for the viewer.\n */\n featureGates: Scalars['JSONObject'];\n};\n\n/**\n * An account is a container owning projects, credentials, billing and other organization\n * data and settings. Actors may own and be members of accounts.\n */\ntype Account = {\n __typename?: 'Account';\n id: Scalars['ID'];\n name: Scalars['String'];\n isCurrent: Scalars['Boolean'];\n pushSecurityEnabled: Scalars['Boolean'];\n createdAt: Scalars['DateTime'];\n updatedAt: Scalars['DateTime'];\n /** Offers set on this account */\n offers?: Maybe<Array<Offer>>;\n /** Apps associated with this account */\n apps: Array<App>;\n appCount: Scalars['Int'];\n /** Build Jobs associated with this account */\n buildJobs: Array<BuildJob>;\n /**\n * Coalesced Build (EAS) or BuildJob (Classic) for all apps belonging to this account.\n * @deprecated Use activityTimelineProjectActivities with filterTypes instead\n */\n buildOrBuildJobs: Array<BuildOrBuildJob>;\n /** Coalesced project activity for all apps belonging to this account. */\n activityTimelineProjectActivities: Array<ActivityTimelineProjectActivity>;\n /** Owning User of this account if personal account */\n owner?: Maybe<User>;\n /** Actors associated with this account and permissions they hold */\n users: Array<UserPermission>;\n /** Pending user invitations for this account */\n userInvitations: Array<UserInvitation>;\n /** iOS credentials for account */\n appleTeams: Array<AppleTeam>;\n appleAppIdentifiers: Array<AppleAppIdentifier>;\n appleDistributionCertificates: Array<AppleDistributionCertificate>;\n applePushKeys: Array<ApplePushKey>;\n appleProvisioningProfiles: Array<AppleProvisioningProfile>;\n appleDevices: Array<AppleDevice>;\n appStoreConnectApiKeys: Array<AppStoreConnectApiKey>;\n /** Android credentials for account */\n googleServiceAccountKeys: Array<GoogleServiceAccountKey>;\n /** Environment secrets for an account */\n environmentSecrets: Array<EnvironmentSecret>;\n /** @deprecated Legacy access tokens are deprecated */\n accessTokens: Array<Maybe<AccessToken>>;\n /** @deprecated Legacy access tokens are deprecated */\n requiresAccessTokenForPushSecurity: Scalars['Boolean'];\n /** @deprecated See isCurrent */\n unlimitedBuilds: Scalars['Boolean'];\n /** @deprecated Build packs are no longer supported */\n availableBuilds?: Maybe<Scalars['Int']>;\n /** @deprecated No longer needed */\n subscriptionChangesPending?: Maybe<Scalars['Boolean']>;\n /** @deprecated Build packs are no longer supported */\n willAutoRenewBuilds?: Maybe<Scalars['Boolean']>;\n};\n\ntype Offer = {\n __typename?: 'Offer';\n id: Scalars['ID'];\n stripeId: Scalars['ID'];\n price: Scalars['Int'];\n quantity?: Maybe<Scalars['Int']>;\n trialLength?: Maybe<Scalars['Int']>;\n type: OfferType;\n features?: Maybe<Array<Maybe<Feature>>>;\n prerequisite?: Maybe<OfferPrerequisite>;\n};\n\nenum OfferType {\n /** Term subscription */\n Subscription = 'SUBSCRIPTION',\n /** Advanced Purchase of Paid Resource */\n Prepaid = 'PREPAID',\n /** Addon, or supplementary subscription */\n Addon = 'ADDON',\n}\n\nenum Feature {\n /** Top Tier Support */\n Support = 'SUPPORT',\n /** Share access to projects */\n Teams = 'TEAMS',\n /** Priority Builds */\n Builds = 'BUILDS',\n /** Funds support for open source development */\n OpenSource = 'OPEN_SOURCE',\n}\n\ntype OfferPrerequisite = {\n __typename?: 'OfferPrerequisite';\n type: Scalars['String'];\n stripeIds: Array<Scalars['String']>;\n};\n\ntype Project = {\n id: Scalars['ID'];\n name: Scalars['String'];\n fullName: Scalars['String'];\n description: Scalars['String'];\n slug: Scalars['String'];\n updated: Scalars['DateTime'];\n published: Scalars['Boolean'];\n username: Scalars['String'];\n /** @deprecated Field no longer supported */\n iconUrl?: Maybe<Scalars['String']>;\n};\n\n/** Represents an Exponent App (or Experience in legacy terms) */\ntype App = Project & {\n __typename?: 'App';\n id: Scalars['ID'];\n name: Scalars['String'];\n fullName: Scalars['String'];\n description: Scalars['String'];\n slug: Scalars['String'];\n ownerAccount: Account;\n privacySetting: AppPrivacy;\n pushSecurityEnabled: Scalars['Boolean'];\n /** Whether there have been any classic update publishes */\n published: Scalars['Boolean'];\n /** Time of last classic update publish */\n updated: Scalars['DateTime'];\n /** ID of latest classic update release */\n latestReleaseId: Scalars['ID'];\n /** Whether the latest classic update publish is using a deprecated SDK version */\n isDeprecated: Scalars['Boolean'];\n /** SDK version of the latest classic update publish, 0.0.0 otherwise */\n sdkVersion: Scalars['String'];\n /** Classic update release channel names (to be removed) */\n releaseChannels: Array<Scalars['String']>;\n /** Classic update release channel names that have at least one build */\n buildsReleaseChannels: Array<Scalars['String']>;\n /** githubUrl field from most recent classic update manifest */\n githubUrl?: Maybe<Scalars['String']>;\n /** android.playStoreUrl field from most recent classic update manifest */\n playStoreUrl?: Maybe<Scalars['String']>;\n /** ios.appStoreUrl field from most recent classic update manifest */\n appStoreUrl?: Maybe<Scalars['String']>;\n /** Info about the icon specified in the most recent classic update manifest */\n icon?: Maybe<AppIcon>;\n /** iOS app credentials for the project */\n iosAppCredentials: Array<IosAppCredentials>;\n /** Android app credentials for the project */\n androidAppCredentials: Array<AndroidAppCredentials>;\n /** Coalesced project activity for an app */\n activityTimelineProjectActivities: Array<ActivityTimelineProjectActivity>;\n /** Environment secrets for an app */\n environmentSecrets: Array<EnvironmentSecret>;\n /** Webhooks for an app */\n webhooks: Array<Webhook>;\n /** @deprecated Use ownerAccount.name instead */\n username: Scalars['String'];\n /** @deprecated Field no longer supported */\n iconUrl?: Maybe<Scalars['String']>;\n /** @deprecated Use 'privacySetting' instead. */\n privacy: Scalars['String'];\n /** @deprecated Field no longer supported */\n lastPublishedTime: Scalars['DateTime'];\n /** @deprecated Field no longer supported */\n packageUsername: Scalars['String'];\n /** @deprecated Field no longer supported */\n packageName: Scalars['String'];\n /** @deprecated Legacy access tokens are deprecated */\n accessTokens: Array<Maybe<AccessToken>>;\n /** @deprecated Legacy access tokens are deprecated */\n requiresAccessTokenForPushSecurity: Scalars['Boolean'];\n /** @deprecated 'likes' have been deprecated. */\n isLikedByMe: Scalars['Boolean'];\n /** @deprecated 'likes' have been deprecated. */\n likeCount: Scalars['Int'];\n /** @deprecated 'likes' have been deprecated. */\n trendScore: Scalars['Float'];\n /** @deprecated 'likes' have been deprecated. */\n likedBy: Array<Maybe<User>>;\n /** @deprecated Field no longer supported */\n users?: Maybe<Array<Maybe<User>>>;\n /** @deprecated Field no longer supported */\n releases: Array<Maybe<AppRelease>>;\n latestReleaseForReleaseChannel?: Maybe<AppRelease>;\n};\n\nenum AppPrivacy {\n Public = 'PUBLIC',\n Unlisted = 'UNLISTED',\n Hidden = 'HIDDEN',\n}\n\ntype AppIcon = {\n __typename?: 'AppIcon';\n url: Scalars['String'];\n primaryColor?: Maybe<Scalars['String']>;\n originalUrl: Scalars['String'];\n /** Nullable color palette of the app icon. If null, color palette couldn't be retrieved from external service (imgix) */\n colorPalette?: Maybe<Scalars['JSON']>;\n};\n\nenum AppPlatform {\n Ios = 'IOS',\n Android = 'ANDROID',\n}\n\ntype BuildOrBuildJob = {\n id: Scalars['ID'];\n};\n\n/** Represents a human (not robot) actor. */\ntype User = Actor & {\n __typename?: 'User';\n id: Scalars['ID'];\n username: Scalars['String'];\n email?: Maybe<Scalars['String']>;\n firstName?: Maybe<Scalars['String']>;\n lastName?: Maybe<Scalars['String']>;\n fullName?: Maybe<Scalars['String']>;\n profilePhoto: Scalars['String'];\n created: Scalars['DateTime'];\n industry?: Maybe<Scalars['String']>;\n location?: Maybe<Scalars['String']>;\n appCount: Scalars['Int'];\n githubUsername?: Maybe<Scalars['String']>;\n twitterUsername?: Maybe<Scalars['String']>;\n appetizeCode?: Maybe<Scalars['String']>;\n emailVerified: Scalars['Boolean'];\n isExpoAdmin: Scalars['Boolean'];\n displayName: Scalars['String'];\n isSecondFactorAuthenticationEnabled: Scalars['Boolean'];\n /** Get all certified second factor authentication methods */\n secondFactorDevices: Array<UserSecondFactorDevice>;\n /** Associated accounts */\n primaryAccount: Account;\n accounts: Array<Account>;\n /** Access Tokens belonging to this actor */\n accessTokens: Array<AccessToken>;\n /** Apps this user has published */\n apps: Array<App>;\n /** Whether this user has any pending user invitations. Only resolves for the viewer. */\n hasPendingUserInvitations: Scalars['Boolean'];\n /** Pending UserInvitations for this user. Only resolves for the viewer. */\n pendingUserInvitations: Array<UserInvitation>;\n /** Coalesced project activity for all apps belonging to all accounts this user belongs to. Only resolves for the viewer. */\n activityTimelineProjectActivities: Array<ActivityTimelineProjectActivity>;\n /**\n * Server feature gate values for this actor, optionally filtering by desired gates.\n * Only resolves for the viewer.\n */\n featureGates: Scalars['JSONObject'];\n /** @deprecated Field no longer supported */\n isEmailUnsubscribed: Scalars['Boolean'];\n /** @deprecated Field no longer supported */\n lastPasswordReset?: Maybe<Scalars['DateTime']>;\n /** @deprecated Field no longer supported */\n lastLogin?: Maybe<Scalars['DateTime']>;\n /** @deprecated Field no longer supported */\n isOnboarded?: Maybe<Scalars['Boolean']>;\n /** @deprecated Field no longer supported */\n isLegacy?: Maybe<Scalars['Boolean']>;\n /** @deprecated Field no longer supported */\n wasLegacy?: Maybe<Scalars['Boolean']>;\n /** @deprecated 'likes' have been deprecated. */\n likes?: Maybe<Array<Maybe<App>>>;\n};\n\n/** A second factor device belonging to a User */\ntype UserSecondFactorDevice = {\n __typename?: 'UserSecondFactorDevice';\n id: Scalars['ID'];\n user: User;\n name: Scalars['String'];\n isCertified: Scalars['Boolean'];\n isPrimary: Scalars['Boolean'];\n smsPhoneNumber?: Maybe<Scalars['String']>;\n method: SecondFactorMethod;\n createdAt: Scalars['DateTime'];\n updatedAt: Scalars['DateTime'];\n};\n\nenum SecondFactorMethod {\n /** Google Authenticator (TOTP) */\n Authenticator = 'AUTHENTICATOR',\n /** SMS */\n Sms = 'SMS',\n}\n\n/** A method of authentication for an Actor */\ntype AccessToken = {\n __typename?: 'AccessToken';\n id: Scalars['ID'];\n visibleTokenPrefix: Scalars['String'];\n createdAt: Scalars['DateTime'];\n updatedAt: Scalars['DateTime'];\n revokedAt?: Maybe<Scalars['DateTime']>;\n lastUsedAt?: Maybe<Scalars['DateTime']>;\n owner: Actor;\n note?: Maybe<Scalars['String']>;\n};\n\n/** An pending invitation sent to an email granting membership on an Account. */\ntype UserInvitation = {\n __typename?: 'UserInvitation';\n id: Scalars['ID'];\n /** Email to which this invitation was sent */\n email: Scalars['String'];\n created: Scalars['DateTime'];\n accountName: Scalars['String'];\n /** Account permissions to be granted upon acceptance of this invitation */\n permissions: Array<Permission>;\n /** Role to be granted upon acceptance of this invitation */\n role: Role;\n};\n\nenum Permission {\n Own = 'OWN',\n Admin = 'ADMIN',\n Publish = 'PUBLISH',\n View = 'VIEW',\n}\n\nenum Role {\n Owner = 'OWNER',\n Admin = 'ADMIN',\n Developer = 'DEVELOPER',\n ViewOnly = 'VIEW_ONLY',\n Custom = 'CUSTOM',\n HasAdmin = 'HAS_ADMIN',\n NotAdmin = 'NOT_ADMIN',\n}\n\n/** Represents an Standalone App build job */\ntype BuildJob = ActivityTimelineProjectActivity &\n BuildOrBuildJob & {\n __typename?: 'BuildJob';\n id: Scalars['ID'];\n actor?: Maybe<Actor>;\n activityTimestamp: Scalars['DateTime'];\n app?: Maybe<App>;\n user?: Maybe<User>;\n release?: Maybe<AppRelease>;\n config?: Maybe<Scalars['JSON']>;\n artifacts?: Maybe<BuildArtifact>;\n logs?: Maybe<BuildLogs>;\n created?: Maybe<Scalars['DateTime']>;\n updated?: Maybe<Scalars['DateTime']>;\n fullExperienceName?: Maybe<Scalars['String']>;\n status?: Maybe<BuildJobStatus>;\n expirationDate?: Maybe<Scalars['DateTime']>;\n platform: AppPlatform;\n sdkVersion?: Maybe<Scalars['String']>;\n releaseChannel?: Maybe<Scalars['String']>;\n };\n\ntype AppRelease = {\n __typename?: 'AppRelease';\n id: Scalars['ID'];\n hash: Scalars['String'];\n publishedTime: Scalars['DateTime'];\n publishingUsername: Scalars['String'];\n sdkVersion: Scalars['String'];\n runtimeVersion?: Maybe<Scalars['String']>;\n version: Scalars['String'];\n s3Key: Scalars['String'];\n s3Url: Scalars['String'];\n manifest: Scalars['JSON'];\n};\n\ntype BuildArtifact = {\n __typename?: 'BuildArtifact';\n url: Scalars['String'];\n manifestPlistUrl?: Maybe<Scalars['String']>;\n};\n\ntype BuildLogs = {\n __typename?: 'BuildLogs';\n url?: Maybe<Scalars['String']>;\n format?: Maybe<BuildJobLogsFormat>;\n};\n\nenum BuildJobLogsFormat {\n Raw = 'RAW',\n Json = 'JSON',\n}\n\nenum BuildJobStatus {\n Pending = 'PENDING',\n Started = 'STARTED',\n InProgress = 'IN_PROGRESS',\n Errored = 'ERRORED',\n Finished = 'FINISHED',\n SentToQueue = 'SENT_TO_QUEUE',\n}\n\ntype UpdateBranch = {\n __typename?: 'UpdateBranch';\n id: Scalars['ID'];\n appId: Scalars['ID'];\n name: Scalars['String'];\n createdAt: Scalars['DateTime'];\n updatedAt: Scalars['DateTime'];\n updates: Array<Update>;\n};\n\ntype IosAppCredentials = {\n __typename?: 'IosAppCredentials';\n id: Scalars['ID'];\n app: App;\n appleTeam?: Maybe<AppleTeam>;\n appleAppIdentifier: AppleAppIdentifier;\n iosAppBuildCredentialsList: Array<IosAppBuildCredentials>;\n pushKey?: Maybe<ApplePushKey>;\n appStoreConnectApiKeyForSubmissions?: Maybe<AppStoreConnectApiKey>;\n /** @deprecated use iosAppBuildCredentialsList instead */\n iosAppBuildCredentialsArray: Array<IosAppBuildCredentials>;\n};\n\ntype AppleTeam = {\n __typename?: 'AppleTeam';\n id: Scalars['ID'];\n account: Account;\n appleTeamIdentifier: Scalars['String'];\n appleTeamName?: Maybe<Scalars['String']>;\n appleAppIdentifiers: Array<AppleAppIdentifier>;\n appleDistributionCertificates: Array<AppleDistributionCertificate>;\n applePushKeys: Array<ApplePushKey>;\n appleProvisioningProfiles: Array<AppleProvisioningProfile>;\n appleDevices: Array<AppleDevice>;\n};\n\ntype AppleAppIdentifier = {\n __typename?: 'AppleAppIdentifier';\n id: Scalars['ID'];\n account: Account;\n appleTeam?: Maybe<AppleTeam>;\n bundleIdentifier: Scalars['String'];\n parentAppleAppIdentifier?: Maybe<AppleAppIdentifier>;\n};\n\ntype AppleDistributionCertificate = {\n __typename?: 'AppleDistributionCertificate';\n id: Scalars['ID'];\n account: Account;\n appleTeam?: Maybe<AppleTeam>;\n serialNumber: Scalars['String'];\n validityNotBefore: Scalars['DateTime'];\n validityNotAfter: Scalars['DateTime'];\n developerPortalIdentifier?: Maybe<Scalars['String']>;\n certificateP12?: Maybe<Scalars['String']>;\n certificatePassword?: Maybe<Scalars['String']>;\n certificatePrivateSigningKey?: Maybe<Scalars['String']>;\n createdAt: Scalars['DateTime'];\n updatedAt: Scalars['DateTime'];\n iosAppBuildCredentialsList: Array<IosAppBuildCredentials>;\n};\n\ntype IosAppBuildCredentials = {\n __typename?: 'IosAppBuildCredentials';\n id: Scalars['ID'];\n distributionCertificate?: Maybe<AppleDistributionCertificate>;\n provisioningProfile?: Maybe<AppleProvisioningProfile>;\n iosDistributionType: IosDistributionType;\n iosAppCredentials: IosAppCredentials;\n /** @deprecated Get Apple Devices from AppleProvisioningProfile instead */\n appleDevices?: Maybe<Array<Maybe<AppleDevice>>>;\n};\n\ntype AppleProvisioningProfile = {\n __typename?: 'AppleProvisioningProfile';\n id: Scalars['ID'];\n account: Account;\n appleTeam?: Maybe<AppleTeam>;\n expiration: Scalars['DateTime'];\n appleAppIdentifier: AppleAppIdentifier;\n developerPortalIdentifier?: Maybe<Scalars['String']>;\n provisioningProfile?: Maybe<Scalars['String']>;\n appleUUID: Scalars['String'];\n status: Scalars['String'];\n appleDevices: Array<AppleDevice>;\n createdAt: Scalars['DateTime'];\n updatedAt: Scalars['DateTime'];\n};\n\ntype AppleDevice = {\n __typename?: 'AppleDevice';\n id: Scalars['ID'];\n account: Account;\n appleTeam: AppleTeam;\n identifier: Scalars['String'];\n name?: Maybe<Scalars['String']>;\n model?: Maybe<Scalars['String']>;\n deviceClass?: Maybe<AppleDeviceClass>;\n softwareVersion?: Maybe<Scalars['String']>;\n enabled?: Maybe<Scalars['Boolean']>;\n};\n\nenum AppleDeviceClass {\n Ipad = 'IPAD',\n Iphone = 'IPHONE',\n}\n\nenum IosDistributionType {\n AppStore = 'APP_STORE',\n Enterprise = 'ENTERPRISE',\n AdHoc = 'AD_HOC',\n Development = 'DEVELOPMENT',\n}\n\ntype ApplePushKey = {\n __typename?: 'ApplePushKey';\n id: Scalars['ID'];\n account: Account;\n appleTeam?: Maybe<AppleTeam>;\n keyIdentifier: Scalars['String'];\n keyP8: Scalars['String'];\n createdAt: Scalars['DateTime'];\n updatedAt: Scalars['DateTime'];\n iosAppCredentialsList: Array<IosAppCredentials>;\n};\n\ntype AppStoreConnectApiKey = {\n __typename?: 'AppStoreConnectApiKey';\n id: Scalars['ID'];\n account: Account;\n appleTeam?: Maybe<AppleTeam>;\n issuerIdentifier: Scalars['String'];\n keyIdentifier: Scalars['String'];\n name?: Maybe<Scalars['String']>;\n roles?: Maybe<Array<AppStoreConnectUserRole>>;\n createdAt: Scalars['DateTime'];\n updatedAt: Scalars['DateTime'];\n};\n\nenum AppStoreConnectUserRole {\n Admin = 'ADMIN',\n Finance = 'FINANCE',\n Technical = 'TECHNICAL',\n AccountHolder = 'ACCOUNT_HOLDER',\n ReadOnly = 'READ_ONLY',\n Sales = 'SALES',\n Marketing = 'MARKETING',\n AppManager = 'APP_MANAGER',\n Developer = 'DEVELOPER',\n AccessToReports = 'ACCESS_TO_REPORTS',\n CustomerSupport = 'CUSTOMER_SUPPORT',\n CreateApps = 'CREATE_APPS',\n CloudManagedDeveloperId = 'CLOUD_MANAGED_DEVELOPER_ID',\n CloudManagedAppDistribution = 'CLOUD_MANAGED_APP_DISTRIBUTION',\n ImageManager = 'IMAGE_MANAGER',\n Unknown = 'UNKNOWN',\n}\n\ntype AndroidAppCredentials = {\n __typename?: 'AndroidAppCredentials';\n id: Scalars['ID'];\n app: App;\n applicationIdentifier?: Maybe<Scalars['String']>;\n androidFcm?: Maybe<AndroidFcm>;\n googleServiceAccountKeyForSubmissions?: Maybe<GoogleServiceAccountKey>;\n androidAppBuildCredentialsList: Array<AndroidAppBuildCredentials>;\n isLegacy: Scalars['Boolean'];\n /** @deprecated use androidAppBuildCredentialsList instead */\n androidAppBuildCredentialsArray: Array<AndroidAppBuildCredentials>;\n};\n\ntype AndroidFcm = {\n __typename?: 'AndroidFcm';\n id: Scalars['ID'];\n account: Account;\n snippet: FcmSnippet;\n /**\n * Legacy FCM: returns the Cloud Messaging token, parses to a String\n * FCM v1: returns the Service Account Key file, parses to an Object\n */\n credential: Scalars['JSON'];\n version: AndroidFcmVersion;\n createdAt: Scalars['DateTime'];\n updatedAt: Scalars['DateTime'];\n};\n\ntype FcmSnippet = FcmSnippetLegacy | FcmSnippetV1;\n\ntype FcmSnippetLegacy = {\n __typename?: 'FcmSnippetLegacy';\n firstFourCharacters: Scalars['String'];\n lastFourCharacters: Scalars['String'];\n};\n\ntype FcmSnippetV1 = {\n __typename?: 'FcmSnippetV1';\n projectId: Scalars['String'];\n keyId: Scalars['String'];\n serviceAccountEmail: Scalars['String'];\n clientId?: Maybe<Scalars['String']>;\n};\n\nenum AndroidFcmVersion {\n Legacy = 'LEGACY',\n V1 = 'V1',\n}\n\ntype GoogleServiceAccountKey = {\n __typename?: 'GoogleServiceAccountKey';\n id: Scalars['ID'];\n account: Account;\n projectIdentifier: Scalars['String'];\n privateKeyIdentifier: Scalars['String'];\n clientEmail: Scalars['String'];\n clientIdentifier: Scalars['String'];\n createdAt: Scalars['DateTime'];\n updatedAt: Scalars['DateTime'];\n};\n\ntype AndroidAppBuildCredentials = {\n __typename?: 'AndroidAppBuildCredentials';\n id: Scalars['ID'];\n name: Scalars['String'];\n androidKeystore?: Maybe<AndroidKeystore>;\n isDefault: Scalars['Boolean'];\n isLegacy: Scalars['Boolean'];\n};\n\ntype AndroidKeystore = {\n __typename?: 'AndroidKeystore';\n id: Scalars['ID'];\n account: Account;\n type: AndroidKeystoreType;\n keystore: Scalars['String'];\n keystorePassword: Scalars['String'];\n keyAlias: Scalars['String'];\n keyPassword?: Maybe<Scalars['String']>;\n md5CertificateFingerprint?: Maybe<Scalars['String']>;\n sha1CertificateFingerprint?: Maybe<Scalars['String']>;\n sha256CertificateFingerprint?: Maybe<Scalars['String']>;\n createdAt: Scalars['DateTime'];\n updatedAt: Scalars['DateTime'];\n};\n\nenum AndroidKeystoreType {\n Jks = 'JKS',\n Pkcs12 = 'PKCS12',\n Unknown = 'UNKNOWN',\n}\n\ntype EnvironmentSecret = {\n __typename?: 'EnvironmentSecret';\n id: Scalars['ID'];\n name: Scalars['String'];\n createdAt: Scalars['DateTime'];\n updatedAt: Scalars['DateTime'];\n};\n\nenum WebhookType {\n Build = 'BUILD',\n Submit = 'SUBMIT',\n}\n\ntype Webhook = {\n __typename?: 'Webhook';\n id: Scalars['ID'];\n appId: Scalars['ID'];\n event: WebhookType;\n url: Scalars['String'];\n createdAt: Scalars['DateTime'];\n updatedAt: Scalars['DateTime'];\n};\n\ntype UserPermission = {\n __typename?: 'UserPermission';\n permissions: Array<Permission>;\n role?: Maybe<Role>;\n /** @deprecated User type is deprecated */\n user?: Maybe<User>;\n actor: Actor;\n};\n\n/** Represents a robot (not human) actor. */\ntype Robot = Actor & {\n __typename?: 'Robot';\n id: Scalars['ID'];\n firstName?: Maybe<Scalars['String']>;\n created: Scalars['DateTime'];\n isExpoAdmin: Scalars['Boolean'];\n displayName: Scalars['String'];\n /** Associated accounts */\n accounts: Array<Account>;\n /** Access Tokens belonging to this actor */\n accessTokens: Array<AccessToken>;\n /**\n * Server feature gate values for this actor, optionally filtering by desired gates.\n * Only resolves for the viewer.\n */\n featureGates: Scalars['JSONObject'];\n};\n\nexport type CurrentUserQuery = { __typename?: 'RootQuery' } & {\n meActor?: Maybe<\n | ({ __typename: 'User' } & Pick<User, 'username' | 'id' | 'isExpoAdmin'> & {\n accounts: Array<{ __typename?: 'Account' } & Pick<Account, 'id' | 'name'>>;\n })\n | ({ __typename: 'Robot' } & Pick<Robot, 'firstName' | 'id' | 'isExpoAdmin'> & {\n accounts: Array<{ __typename?: 'Account' } & Pick<Account, 'id' | 'name'>>;\n })\n >;\n};\n"],"names":["OfferType","Subscription","Prepaid","Addon","Feature","Support","Teams","Builds","OpenSource","AppPrivacy","Public","Unlisted","Hidden","AppPlatform","Ios","Android","SecondFactorMethod","Authenticator","Sms","Permission","Own","Admin","Publish","View","Role","Owner","Developer","ViewOnly","Custom","HasAdmin","NotAdmin","BuildJobLogsFormat","Raw","Json","BuildJobStatus","Pending","Started","InProgress","Errored","Finished","SentToQueue","AppleDeviceClass","Ipad","Iphone","IosDistributionType","AppStore","Enterprise","AdHoc","Development","AppStoreConnectUserRole","Finance","Technical","AccountHolder","ReadOnly","Sales","Marketing","AppManager","AccessToReports","CustomerSupport","CreateApps","CloudManagedDeveloperId","CloudManagedAppDistribution","ImageManager","Unknown","AndroidFcmVersion","Legacy","V1","AndroidKeystoreType","Jks","Pkcs12","WebhookType","Build","Submit"],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
exports.UserQuery = void 0;
|
|
6
|
+
var _graphqlTag = _interopRequireDefault(require("graphql-tag"));
|
|
7
|
+
var _client = require("../client");
|
|
8
|
+
function _interopRequireDefault(obj) {
|
|
9
|
+
return obj && obj.__esModule ? obj : {
|
|
10
|
+
default: obj
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
const UserQuery = {
|
|
14
|
+
async currentUserAsync () {
|
|
15
|
+
const data = await (0, _client).withErrorHandlingAsync(_client.graphqlClient.query(_graphqlTag.default`
|
|
16
|
+
query CurrentUser {
|
|
17
|
+
meActor {
|
|
18
|
+
__typename
|
|
19
|
+
id
|
|
20
|
+
... on User {
|
|
21
|
+
username
|
|
22
|
+
}
|
|
23
|
+
... on Robot {
|
|
24
|
+
firstName
|
|
25
|
+
}
|
|
26
|
+
accounts {
|
|
27
|
+
id
|
|
28
|
+
name
|
|
29
|
+
}
|
|
30
|
+
isExpoAdmin
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
`, /* variables */ undefined, {
|
|
34
|
+
additionalTypenames: [
|
|
35
|
+
"User"
|
|
36
|
+
]
|
|
37
|
+
}).toPromise());
|
|
38
|
+
return data.meActor;
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
exports.UserQuery = UserQuery;
|
|
42
|
+
|
|
43
|
+
//# sourceMappingURL=UserQuery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/api/graphql/queries/UserQuery.ts"],"sourcesContent":["import gql from 'graphql-tag';\n\nimport { graphqlClient, withErrorHandlingAsync } from '../client';\nimport { CurrentUserQuery } from '../generated';\n\nexport const UserQuery = {\n async currentUserAsync(): Promise<CurrentUserQuery['meActor']> {\n const data = await withErrorHandlingAsync(\n graphqlClient\n .query<CurrentUserQuery>(\n gql`\n query CurrentUser {\n meActor {\n __typename\n id\n ... on User {\n username\n }\n ... on Robot {\n firstName\n }\n accounts {\n id\n name\n }\n isExpoAdmin\n }\n }\n `,\n /* variables */ undefined,\n {\n additionalTypenames: ['User'],\n }\n )\n .toPromise()\n );\n\n return data.meActor;\n },\n};\n"],"names":["UserQuery","currentUserAsync","data","withErrorHandlingAsync","graphqlClient","query","gql","undefined","additionalTypenames","toPromise","meActor"],"mappings":"AAAA;;;;;AAAgB,IAAA,WAAa,kCAAb,aAAa,EAAA;AAEyB,IAAA,OAAW,WAAX,WAAW,CAAA;;;;;;AAG1D,MAAMA,SAAS,GAAG;IACvB,MAAMC,gBAAgB,IAAyC;QAC7D,MAAMC,IAAI,GAAG,MAAMC,CAAAA,GAAAA,OAAsB,AA4BxC,CAAA,uBA5BwC,CACvCC,OAAa,cAAA,CACVC,KAAK,CACJC,WAAG,QAAA,CAAC;;;;;;;;;;;;;;;;;;UAkBJ,CAAC,EACD,eAAe,CAACC,SAAS,EACzB;YACEC,mBAAmB,EAAE;gBAAC,MAAM;aAAC;SAC9B,CACF,CACAC,SAAS,EAAE,CACf,AAAC;QAEF,OAAOP,IAAI,CAACQ,OAAO,CAAC;KACrB;CACF,AAAC;QAlCWV,SAAS,GAATA,SAAS"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
var _cacache = _interopRequireDefault(require("cacache"));
|
|
6
|
+
var _stream = require("stream");
|
|
7
|
+
function _interopRequireDefault(obj) {
|
|
8
|
+
return obj && obj.__esModule ? obj : {
|
|
9
|
+
default: obj
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
function getBodyAndMetaKeys(key) {
|
|
13
|
+
return [
|
|
14
|
+
`${key}body`,
|
|
15
|
+
`${key}meta`
|
|
16
|
+
];
|
|
17
|
+
}
|
|
18
|
+
class FileSystemCache {
|
|
19
|
+
constructor(options){
|
|
20
|
+
this.options = options;
|
|
21
|
+
}
|
|
22
|
+
async get(key) {
|
|
23
|
+
const [, metaKey] = getBodyAndMetaKeys(key);
|
|
24
|
+
const metaInfo = await _cacache.default.get.info(this.options.cacheDirectory, metaKey);
|
|
25
|
+
if (!metaInfo) {
|
|
26
|
+
return undefined;
|
|
27
|
+
}
|
|
28
|
+
const metaBuffer = await _cacache.default.get.byDigest(this.options.cacheDirectory, metaInfo.integrity);
|
|
29
|
+
const metaData = JSON.parse(metaBuffer);
|
|
30
|
+
const { bodyStreamIntegrity , empty , expiration } = metaData;
|
|
31
|
+
delete metaData.bodyStreamIntegrity;
|
|
32
|
+
delete metaData.empty;
|
|
33
|
+
delete metaData.expiration;
|
|
34
|
+
if (expiration && expiration < Date.now()) {
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
const bodyStream = empty ? _stream.Readable.from(Buffer.alloc(0)) : _cacache.default.get.stream.byDigest(this.options.cacheDirectory, bodyStreamIntegrity);
|
|
38
|
+
return {
|
|
39
|
+
bodyStream,
|
|
40
|
+
metaData
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
remove(key) {
|
|
44
|
+
const [bodyKey, metaKey] = getBodyAndMetaKeys(key);
|
|
45
|
+
return Promise.all([
|
|
46
|
+
_cacache.default.rm.entry(this.options.cacheDirectory, bodyKey),
|
|
47
|
+
_cacache.default.rm.entry(this.options.cacheDirectory, metaKey),
|
|
48
|
+
]);
|
|
49
|
+
}
|
|
50
|
+
async set(key, bodyStream, metaData) {
|
|
51
|
+
const [bodyKey, metaKey] = getBodyAndMetaKeys(key);
|
|
52
|
+
const metaCopy = {
|
|
53
|
+
...metaData
|
|
54
|
+
};
|
|
55
|
+
if (typeof this.options.ttl === "number") {
|
|
56
|
+
metaCopy.expiration = Date.now() + this.options.ttl;
|
|
57
|
+
}
|
|
58
|
+
try {
|
|
59
|
+
metaCopy.bodyStreamIntegrity = await new Promise((fulfill, reject)=>{
|
|
60
|
+
bodyStream.pipe(_cacache.default.put.stream(this.options.cacheDirectory, bodyKey)).on("integrity", (i)=>fulfill(i)
|
|
61
|
+
).on("error", (e)=>{
|
|
62
|
+
reject(e);
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
} catch (err) {
|
|
66
|
+
if (err.code !== "ENODATA") {
|
|
67
|
+
throw err;
|
|
68
|
+
}
|
|
69
|
+
metaCopy.empty = true;
|
|
70
|
+
}
|
|
71
|
+
const metaBuffer = Buffer.from(JSON.stringify(metaCopy));
|
|
72
|
+
await _cacache.default.put(this.options.cacheDirectory, metaKey, metaBuffer);
|
|
73
|
+
const cachedData = await this.get(key);
|
|
74
|
+
return cachedData;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
exports.FileSystemCache = FileSystemCache;
|
|
78
|
+
|
|
79
|
+
//# sourceMappingURL=FileSystemCache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/api/rest/cache/FileSystemCache.ts"],"sourcesContent":["import cacache from 'cacache';\nimport { Readable } from 'stream';\n\nfunction getBodyAndMetaKeys(key: string): [string, string] {\n return [`${key}body`, `${key}meta`];\n}\n\nexport class FileSystemCache {\n constructor(public options: { ttl?: number; cacheDirectory: string }) {}\n\n async get(key: string) {\n const [, metaKey] = getBodyAndMetaKeys(key);\n\n const metaInfo = await cacache.get.info(this.options.cacheDirectory, metaKey);\n\n if (!metaInfo) {\n return undefined;\n }\n\n const metaBuffer = await cacache.get.byDigest(this.options.cacheDirectory, metaInfo.integrity);\n const metaData = JSON.parse(metaBuffer);\n const { bodyStreamIntegrity, empty, expiration } = metaData;\n\n delete metaData.bodyStreamIntegrity;\n delete metaData.empty;\n delete metaData.expiration;\n\n if (expiration && expiration < Date.now()) {\n return undefined;\n }\n\n const bodyStream = empty\n ? Readable.from(Buffer.alloc(0))\n : cacache.get.stream.byDigest(this.options.cacheDirectory, bodyStreamIntegrity);\n\n return {\n bodyStream,\n metaData,\n };\n }\n\n remove(key: string) {\n const [bodyKey, metaKey] = getBodyAndMetaKeys(key);\n\n return Promise.all([\n cacache.rm.entry(this.options.cacheDirectory, bodyKey),\n cacache.rm.entry(this.options.cacheDirectory, metaKey),\n ]);\n }\n\n async set(key: string, bodyStream: NodeJS.ReadStream, metaData: any) {\n const [bodyKey, metaKey] = getBodyAndMetaKeys(key);\n const metaCopy = { ...metaData };\n\n if (typeof this.options.ttl === 'number') {\n metaCopy.expiration = Date.now() + this.options.ttl;\n }\n\n try {\n metaCopy.bodyStreamIntegrity = await new Promise((fulfill, reject) => {\n bodyStream\n .pipe(cacache.put.stream(this.options.cacheDirectory, bodyKey))\n .on('integrity', (i) => fulfill(i))\n .on('error', (e) => {\n reject(e);\n });\n });\n } catch (err: any) {\n if (err.code !== 'ENODATA') {\n throw err;\n }\n\n metaCopy.empty = true;\n }\n\n const metaBuffer = Buffer.from(JSON.stringify(metaCopy));\n await cacache.put(this.options.cacheDirectory, metaKey, metaBuffer);\n const cachedData = await this.get(key);\n\n return cachedData;\n }\n}\n"],"names":["getBodyAndMetaKeys","key","FileSystemCache","constructor","options","get","metaKey","metaInfo","cacache","info","cacheDirectory","undefined","metaBuffer","byDigest","integrity","metaData","JSON","parse","bodyStreamIntegrity","empty","expiration","Date","now","bodyStream","Readable","from","Buffer","alloc","stream","remove","bodyKey","Promise","all","rm","entry","set","metaCopy","ttl","fulfill","reject","pipe","put","on","i","e","err","code","stringify","cachedData"],"mappings":"AAAA;;;;AAAoB,IAAA,QAAS,kCAAT,SAAS,EAAA;AACJ,IAAA,OAAQ,WAAR,QAAQ,CAAA;;;;;;AAEjC,SAASA,kBAAkB,CAACC,GAAW,EAAoB;IACzD,OAAO;QAAC,CAAC,EAAEA,GAAG,CAAC,IAAI,CAAC;QAAE,CAAC,EAAEA,GAAG,CAAC,IAAI,CAAC;KAAC,CAAC;CACrC;AAEM,MAAMC,eAAe;IAC1BC,YAAmBC,OAAiD,CAAE;aAAnDA,OAAiD,GAAjDA,OAAiD;KAAI;IAExE,MAAMC,GAAG,CAACJ,GAAW,EAAE;QACrB,MAAM,GAAGK,OAAO,CAAC,GAAGN,kBAAkB,CAACC,GAAG,CAAC,AAAC;QAE5C,MAAMM,QAAQ,GAAG,MAAMC,QAAO,QAAA,CAACH,GAAG,CAACI,IAAI,CAAC,IAAI,CAACL,OAAO,CAACM,cAAc,EAAEJ,OAAO,CAAC,AAAC;QAE9E,IAAI,CAACC,QAAQ,EAAE;YACb,OAAOI,SAAS,CAAC;SAClB;QAED,MAAMC,UAAU,GAAG,MAAMJ,QAAO,QAAA,CAACH,GAAG,CAACQ,QAAQ,CAAC,IAAI,CAACT,OAAO,CAACM,cAAc,EAAEH,QAAQ,CAACO,SAAS,CAAC,AAAC;QAC/F,MAAMC,QAAQ,GAAGC,IAAI,CAACC,KAAK,CAACL,UAAU,CAAC,AAAC;QACxC,MAAM,EAAEM,mBAAmB,CAAA,EAAEC,KAAK,CAAA,EAAEC,UAAU,CAAA,EAAE,GAAGL,QAAQ,AAAC;QAE5D,OAAOA,QAAQ,CAACG,mBAAmB,CAAC;QACpC,OAAOH,QAAQ,CAACI,KAAK,CAAC;QACtB,OAAOJ,QAAQ,CAACK,UAAU,CAAC;QAE3B,IAAIA,UAAU,IAAIA,UAAU,GAAGC,IAAI,CAACC,GAAG,EAAE,EAAE;YACzC,OAAOX,SAAS,CAAC;SAClB;QAED,MAAMY,UAAU,GAAGJ,KAAK,GACpBK,OAAQ,SAAA,CAACC,IAAI,CAACC,MAAM,CAACC,KAAK,CAAC,CAAC,CAAC,CAAC,GAC9BnB,QAAO,QAAA,CAACH,GAAG,CAACuB,MAAM,CAACf,QAAQ,CAAC,IAAI,CAACT,OAAO,CAACM,cAAc,EAAEQ,mBAAmB,CAAC,AAAC;QAElF,OAAO;YACLK,UAAU;YACVR,QAAQ;SACT,CAAC;KACH;IAEDc,MAAM,CAAC5B,GAAW,EAAE;QAClB,MAAM,CAAC6B,OAAO,EAAExB,OAAO,CAAC,GAAGN,kBAAkB,CAACC,GAAG,CAAC,AAAC;QAEnD,OAAO8B,OAAO,CAACC,GAAG,CAAC;YACjBxB,QAAO,QAAA,CAACyB,EAAE,CAACC,KAAK,CAAC,IAAI,CAAC9B,OAAO,CAACM,cAAc,EAAEoB,OAAO,CAAC;YACtDtB,QAAO,QAAA,CAACyB,EAAE,CAACC,KAAK,CAAC,IAAI,CAAC9B,OAAO,CAACM,cAAc,EAAEJ,OAAO,CAAC;SACvD,CAAC,CAAC;KACJ;IAED,MAAM6B,GAAG,CAAClC,GAAW,EAAEsB,UAA6B,EAAER,QAAa,EAAE;QACnE,MAAM,CAACe,OAAO,EAAExB,OAAO,CAAC,GAAGN,kBAAkB,CAACC,GAAG,CAAC,AAAC;QACnD,MAAMmC,QAAQ,GAAG;YAAE,GAAGrB,QAAQ;SAAE,AAAC;QAEjC,IAAI,OAAO,IAAI,CAACX,OAAO,CAACiC,GAAG,KAAK,QAAQ,EAAE;YACxCD,QAAQ,CAAChB,UAAU,GAAGC,IAAI,CAACC,GAAG,EAAE,GAAG,IAAI,CAAClB,OAAO,CAACiC,GAAG,CAAC;SACrD;QAED,IAAI;YACFD,QAAQ,CAAClB,mBAAmB,GAAG,MAAM,IAAIa,OAAO,CAAC,CAACO,OAAO,EAAEC,MAAM,GAAK;gBACpEhB,UAAU,CACPiB,IAAI,CAAChC,QAAO,QAAA,CAACiC,GAAG,CAACb,MAAM,CAAC,IAAI,CAACxB,OAAO,CAACM,cAAc,EAAEoB,OAAO,CAAC,CAAC,CAC9DY,EAAE,CAAC,WAAW,EAAE,CAACC,CAAC,GAAKL,OAAO,CAACK,CAAC,CAAC;gBAAA,CAAC,CAClCD,EAAE,CAAC,OAAO,EAAE,CAACE,CAAC,GAAK;oBAClBL,MAAM,CAACK,CAAC,CAAC,CAAC;iBACX,CAAC,CAAC;aACN,CAAC,CAAC;SACJ,CAAC,OAAOC,GAAG,EAAO;YACjB,IAAIA,GAAG,CAACC,IAAI,KAAK,SAAS,EAAE;gBAC1B,MAAMD,GAAG,CAAC;aACX;YAEDT,QAAQ,CAACjB,KAAK,GAAG,IAAI,CAAC;SACvB;QAED,MAAMP,UAAU,GAAGc,MAAM,CAACD,IAAI,CAACT,IAAI,CAAC+B,SAAS,CAACX,QAAQ,CAAC,CAAC,AAAC;QACzD,MAAM5B,QAAO,QAAA,CAACiC,GAAG,CAAC,IAAI,CAACrC,OAAO,CAACM,cAAc,EAAEJ,OAAO,EAAEM,UAAU,CAAC,CAAC;QACpE,MAAMoC,UAAU,GAAG,MAAM,IAAI,CAAC3C,GAAG,CAACJ,GAAG,CAAC,AAAC;QAEvC,OAAO+C,UAAU,CAAC;KACnB;CACF;QA1EY9C,eAAe,GAAfA,eAAe"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
var _nodeFetch = require("node-fetch");
|
|
6
|
+
const responseInternalSymbol = Object.getOwnPropertySymbols(new _nodeFetch.Response())[1];
|
|
7
|
+
class NFCResponse extends _nodeFetch.Response {
|
|
8
|
+
constructor(bodyStream, metaData, ejectFromCache = function ejectFromCache() {
|
|
9
|
+
return this.ejectSelfFromCache();
|
|
10
|
+
}, fromCache = false){
|
|
11
|
+
super(bodyStream, metaData);
|
|
12
|
+
this.ejectFromCache = ejectFromCache;
|
|
13
|
+
this.fromCache = fromCache;
|
|
14
|
+
}
|
|
15
|
+
static serializeMetaFromNodeFetchResponse(res) {
|
|
16
|
+
const metaData = {
|
|
17
|
+
url: res.url,
|
|
18
|
+
status: res.status,
|
|
19
|
+
statusText: res.statusText,
|
|
20
|
+
headers: res.headers.raw(),
|
|
21
|
+
size: res.size,
|
|
22
|
+
timeout: res.timeout,
|
|
23
|
+
// @ts-ignore
|
|
24
|
+
counter: res[responseInternalSymbol].counter
|
|
25
|
+
};
|
|
26
|
+
return metaData;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
exports.NFCResponse = NFCResponse;
|
|
30
|
+
|
|
31
|
+
//# sourceMappingURL=response.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/api/rest/cache/response.ts"],"sourcesContent":["import { CacheObject } from 'cacache';\nimport { BodyInit, Response, ResponseInit } from 'node-fetch';\n\nconst responseInternalSymbol = Object.getOwnPropertySymbols(new Response())[1];\n\nexport class NFCResponse extends Response {\n constructor(\n bodyStream?: BodyInit,\n metaData?: ResponseInit,\n public ejectFromCache: () => Promise<[CacheObject, CacheObject]> = function ejectFromCache(\n this: any\n ) {\n return this.ejectSelfFromCache();\n },\n public fromCache: boolean = false\n ) {\n super(bodyStream, metaData);\n }\n\n static serializeMetaFromNodeFetchResponse(res: Response) {\n const metaData = {\n url: res.url,\n status: res.status,\n statusText: res.statusText,\n headers: res.headers.raw(),\n size: res.size,\n timeout: res.timeout,\n // @ts-ignore\n counter: res[responseInternalSymbol].counter,\n };\n\n return metaData;\n }\n}\n"],"names":["responseInternalSymbol","Object","getOwnPropertySymbols","Response","NFCResponse","constructor","bodyStream","metaData","ejectFromCache","ejectSelfFromCache","fromCache","serializeMetaFromNodeFetchResponse","res","url","status","statusText","headers","raw","size","timeout","counter"],"mappings":"AAAA;;;;AACiD,IAAA,UAAY,WAAZ,YAAY,CAAA;AAE7D,MAAMA,sBAAsB,GAAGC,MAAM,CAACC,qBAAqB,CAAC,IAAIC,UAAQ,SAAA,EAAE,CAAC,CAAC,CAAC,CAAC,AAAC;AAExE,MAAMC,WAAW,SAASD,UAAQ,SAAA;IACvCE,YACEC,UAAqB,EACrBC,QAAuB,EAChBC,cAAyD,GAAG,SAASA,cAAc,GAExF;QACA,OAAO,IAAI,CAACC,kBAAkB,EAAE,CAAC;KAClC,EACMC,SAAkB,GAAG,KAAK,CACjC;QACA,KAAK,CAACJ,UAAU,EAAEC,QAAQ,CAAC,CAAC;aAPrBC,cAAyD,GAAzDA,cAAyD;aAKzDE,SAAkB,GAAlBA,SAAkB;KAG1B;IAED,OAAOC,kCAAkC,CAACC,GAAa,EAAE;QACvD,MAAML,QAAQ,GAAG;YACfM,GAAG,EAAED,GAAG,CAACC,GAAG;YACZC,MAAM,EAAEF,GAAG,CAACE,MAAM;YAClBC,UAAU,EAAEH,GAAG,CAACG,UAAU;YAC1BC,OAAO,EAAEJ,GAAG,CAACI,OAAO,CAACC,GAAG,EAAE;YAC1BC,IAAI,EAAEN,GAAG,CAACM,IAAI;YACdC,OAAO,EAAEP,GAAG,CAACO,OAAO;YACpB,aAAa;YACbC,OAAO,EAAER,GAAG,CAACZ,sBAAsB,CAAC,CAACoB,OAAO;SAC7C,AAAC;QAEF,OAAOb,QAAQ,CAAC;KACjB;CACF;QA5BYH,WAAW,GAAXA,WAAW"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
exports.wrapFetchWithCache = wrapFetchWithCache;
|
|
6
|
+
var _crypto = _interopRequireDefault(require("crypto"));
|
|
7
|
+
var _fs = _interopRequireDefault(require("fs"));
|
|
8
|
+
var _nodeFetch = require("node-fetch");
|
|
9
|
+
var _url = require("url");
|
|
10
|
+
var _response = require("./response");
|
|
11
|
+
function _interopRequireDefault(obj) {
|
|
12
|
+
return obj && obj.__esModule ? obj : {
|
|
13
|
+
default: obj
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
const CACHE_VERSION = 3;
|
|
17
|
+
const lockPromiseForKey = {};
|
|
18
|
+
const unlockFunctionForKey = {};
|
|
19
|
+
/**
|
|
20
|
+
* Take out a lock. When this function returns (asynchronously),
|
|
21
|
+
* you have the lock.
|
|
22
|
+
* @param {string} key - The key to lock on. Anyone else who
|
|
23
|
+
* tries to lock on the same key will need to wait for it to
|
|
24
|
+
* be unlocked.
|
|
25
|
+
*/ async function lock(key) {
|
|
26
|
+
if (!lockPromiseForKey[key]) {
|
|
27
|
+
lockPromiseForKey[key] = Promise.resolve();
|
|
28
|
+
}
|
|
29
|
+
const takeLockPromise = lockPromiseForKey[key];
|
|
30
|
+
lockPromiseForKey[key] = takeLockPromise.then(()=>new Promise((fulfill)=>{
|
|
31
|
+
unlockFunctionForKey[key] = fulfill;
|
|
32
|
+
})
|
|
33
|
+
);
|
|
34
|
+
return takeLockPromise;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Release a lock.
|
|
38
|
+
* @param {string} key - The key to release the lock for.
|
|
39
|
+
* The next person in line will now be able to take out
|
|
40
|
+
* the lock for that key.
|
|
41
|
+
*/ function unlock(key) {
|
|
42
|
+
if (unlockFunctionForKey[key]) {
|
|
43
|
+
unlockFunctionForKey[key]();
|
|
44
|
+
delete unlockFunctionForKey[key];
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
function md5(str) {
|
|
48
|
+
return _crypto.default.createHash("md5").update(str).digest("hex");
|
|
49
|
+
}
|
|
50
|
+
// Since the boundary in FormData is random,
|
|
51
|
+
// we ignore it for purposes of calculating
|
|
52
|
+
// the cache key.
|
|
53
|
+
function getFormDataCacheKey(formData) {
|
|
54
|
+
const cacheKey = {
|
|
55
|
+
...formData
|
|
56
|
+
};
|
|
57
|
+
const boundary = formData.getBoundary();
|
|
58
|
+
// @ts-expect-error
|
|
59
|
+
delete cacheKey._boundary;
|
|
60
|
+
const boundaryReplaceRegex = new RegExp(boundary, "g");
|
|
61
|
+
// @ts-expect-error
|
|
62
|
+
cacheKey._streams = cacheKey._streams.map((s)=>{
|
|
63
|
+
if (typeof s === "string") {
|
|
64
|
+
return s.replace(boundaryReplaceRegex, "");
|
|
65
|
+
}
|
|
66
|
+
return s;
|
|
67
|
+
});
|
|
68
|
+
return cacheKey;
|
|
69
|
+
}
|
|
70
|
+
function getBodyCacheKeyJson(body) {
|
|
71
|
+
if (!body) {
|
|
72
|
+
return body;
|
|
73
|
+
}
|
|
74
|
+
if (typeof body === "string") {
|
|
75
|
+
return body;
|
|
76
|
+
}
|
|
77
|
+
if (body instanceof _url.URLSearchParams) {
|
|
78
|
+
return body.toString();
|
|
79
|
+
}
|
|
80
|
+
if (body instanceof _fs.default.ReadStream) {
|
|
81
|
+
return body.path;
|
|
82
|
+
}
|
|
83
|
+
if (body.toString && body.toString() === "[object FormData]") {
|
|
84
|
+
return getFormDataCacheKey(body);
|
|
85
|
+
}
|
|
86
|
+
if (body instanceof Buffer) {
|
|
87
|
+
return body.toString();
|
|
88
|
+
}
|
|
89
|
+
throw new Error("Unsupported body type. Supported body types are: string, number, undefined, null, url.URLSearchParams, fs.ReadStream, FormData");
|
|
90
|
+
}
|
|
91
|
+
function getRequestCacheKey(req) {
|
|
92
|
+
return {
|
|
93
|
+
cache: req.cache,
|
|
94
|
+
credentials: req.credentials,
|
|
95
|
+
destination: req.destination,
|
|
96
|
+
headers: req.headers,
|
|
97
|
+
integrity: req.integrity,
|
|
98
|
+
method: req.method,
|
|
99
|
+
redirect: req.redirect,
|
|
100
|
+
referrer: req.referrer,
|
|
101
|
+
referrerPolicy: req.referrerPolicy,
|
|
102
|
+
url: req.url,
|
|
103
|
+
body: getBodyCacheKeyJson(req.body)
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
function getCacheKey(requestArguments) {
|
|
107
|
+
const resource = requestArguments[0];
|
|
108
|
+
const init = requestArguments[1] || {};
|
|
109
|
+
const resourceCacheKeyJson = resource instanceof _nodeFetch.Request ? getRequestCacheKey(resource) : {
|
|
110
|
+
url: resource
|
|
111
|
+
};
|
|
112
|
+
const initCacheKeyJson = {
|
|
113
|
+
...init
|
|
114
|
+
};
|
|
115
|
+
// @ts-ignore
|
|
116
|
+
resourceCacheKeyJson.body = getBodyCacheKeyJson(resourceCacheKeyJson.body);
|
|
117
|
+
initCacheKeyJson.body = getBodyCacheKeyJson(initCacheKeyJson.body);
|
|
118
|
+
delete initCacheKeyJson.agent;
|
|
119
|
+
return md5(JSON.stringify([
|
|
120
|
+
resourceCacheKeyJson,
|
|
121
|
+
initCacheKeyJson,
|
|
122
|
+
CACHE_VERSION
|
|
123
|
+
]));
|
|
124
|
+
}
|
|
125
|
+
function wrapFetchWithCache(fetch, cache1) {
|
|
126
|
+
async function getResponse(cache, url, init) {
|
|
127
|
+
const cacheKey = getCacheKey([
|
|
128
|
+
url,
|
|
129
|
+
init
|
|
130
|
+
]);
|
|
131
|
+
let cachedValue = await cache.get(cacheKey);
|
|
132
|
+
const ejectSelfFromCache = ()=>cache.remove(cacheKey)
|
|
133
|
+
;
|
|
134
|
+
if (cachedValue) {
|
|
135
|
+
return new _response.NFCResponse(cachedValue.bodyStream, cachedValue.metaData, ejectSelfFromCache, true);
|
|
136
|
+
}
|
|
137
|
+
await lock(cacheKey);
|
|
138
|
+
try {
|
|
139
|
+
cachedValue = await cache.get(cacheKey);
|
|
140
|
+
if (cachedValue) {
|
|
141
|
+
return new _response.NFCResponse(cachedValue.bodyStream, cachedValue.metaData, ejectSelfFromCache, true);
|
|
142
|
+
}
|
|
143
|
+
const fetchResponse = await fetch(url, init);
|
|
144
|
+
const serializedMeta = _response.NFCResponse.serializeMetaFromNodeFetchResponse(fetchResponse);
|
|
145
|
+
const newlyCachedData = await cache.set(cacheKey, // @ts-expect-error
|
|
146
|
+
fetchResponse.body, serializedMeta);
|
|
147
|
+
return new _response.NFCResponse(newlyCachedData.bodyStream, newlyCachedData.metaData, ejectSelfFromCache, false);
|
|
148
|
+
} finally{
|
|
149
|
+
unlock(cacheKey);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return (url, init)=>getResponse(cache1, url, init)
|
|
153
|
+
;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
//# sourceMappingURL=wrapFetchWithCache.js.map
|