@expo/cli 0.17.10 → 0.18.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/bin/cli +98 -118
- package/build/bin/cli.map +1 -1
- package/build/src/api/endpoint.js +11 -3
- package/build/src/api/endpoint.js.map +1 -1
- package/build/src/api/getExpoGoIntermediateCertificate.js +7 -4
- package/build/src/api/getExpoGoIntermediateCertificate.js.map +1 -1
- package/build/src/api/getExpoSchema.js +32 -12
- package/build/src/api/getExpoSchema.js.map +1 -1
- package/build/src/api/getNativeModuleVersions.js +7 -4
- package/build/src/api/getNativeModuleVersions.js.map +1 -1
- package/build/src/api/getProjectDevelopmentCertificate.js +7 -4
- package/build/src/api/getProjectDevelopmentCertificate.js.map +1 -1
- package/build/src/api/getVersions.js +7 -4
- package/build/src/api/getVersions.js.map +1 -1
- package/build/src/api/graphql/client.js +78 -40
- package/build/src/api/graphql/client.js.map +1 -1
- package/build/src/api/graphql/queries/AppQuery.js +22 -8
- package/build/src/api/graphql/queries/AppQuery.js.map +1 -1
- package/build/src/api/graphql/queries/UserQuery.js +13 -5
- package/build/src/api/graphql/queries/UserQuery.js.map +1 -1
- package/build/src/api/graphql/types/App.js +12 -4
- package/build/src/api/graphql/types/App.js.map +1 -1
- package/build/src/api/rest/cache/FileSystemCache.js +25 -11
- package/build/src/api/rest/cache/FileSystemCache.js.map +1 -1
- package/build/src/api/rest/cache/response.js +13 -4
- package/build/src/api/rest/cache/response.js.map +1 -1
- package/build/src/api/rest/cache/wrapFetchWithCache.js +51 -18
- package/build/src/api/rest/cache/wrapFetchWithCache.js.map +1 -1
- package/build/src/api/rest/client.js +55 -30
- package/build/src/api/rest/client.js.map +1 -1
- package/build/src/api/rest/wrapFetchWithBaseUrl.js +13 -5
- package/build/src/api/rest/wrapFetchWithBaseUrl.js.map +1 -1
- package/build/src/api/rest/wrapFetchWithOffline.js +5 -2
- package/build/src/api/rest/wrapFetchWithOffline.js.map +1 -1
- package/build/src/api/rest/wrapFetchWithProgress.js +40 -19
- package/build/src/api/rest/wrapFetchWithProgress.js.map +1 -1
- package/build/src/api/rest/wrapFetchWithProxy.js +13 -4
- package/build/src/api/rest/wrapFetchWithProxy.js.map +1 -1
- package/build/src/api/settings.js +16 -5
- package/build/src/api/settings.js.map +1 -1
- package/build/src/api/updateDevelopmentSession.js +33 -13
- package/build/src/api/updateDevelopmentSession.js.map +1 -1
- package/build/src/api/user/UserSettings.js +31 -11
- package/build/src/api/user/UserSettings.js.map +1 -1
- package/build/src/api/user/actions.js +78 -41
- package/build/src/api/user/actions.js.map +1 -1
- package/build/src/api/user/expoSsoLauncher.js +72 -27
- package/build/src/api/user/expoSsoLauncher.js.map +1 -1
- package/build/src/api/user/otp.js +82 -50
- package/build/src/api/user/otp.js.map +1 -1
- package/build/src/api/user/user.js +80 -48
- package/build/src/api/user/user.js.map +1 -1
- package/build/src/config/configAsync.js +82 -45
- package/build/src/config/configAsync.js.map +1 -1
- package/build/src/config/index.js +52 -30
- package/build/src/config/index.js.map +1 -1
- package/build/src/customize/customizeAsync.js +21 -12
- package/build/src/customize/customizeAsync.js.map +1 -1
- package/build/src/customize/generate.js +74 -47
- package/build/src/customize/generate.js.map +1 -1
- package/build/src/customize/index.js +16 -8
- package/build/src/customize/index.js.map +1 -1
- package/build/src/customize/resolveOptions.js +7 -4
- package/build/src/customize/resolveOptions.js.map +1 -1
- package/build/src/customize/templates.js +58 -37
- package/build/src/customize/templates.js.map +1 -1
- package/build/src/customize/typescript.js +50 -29
- package/build/src/customize/typescript.js.map +1 -1
- package/build/src/export/createMetadataJson.js +14 -7
- package/build/src/export/createMetadataJson.js.map +1 -1
- package/build/src/export/embed/exportEmbedAsync.js +103 -50
- package/build/src/export/embed/exportEmbedAsync.js.map +1 -1
- package/build/src/export/embed/index.js +61 -37
- package/build/src/export/embed/index.js.map +1 -1
- package/build/src/export/embed/resolveOptions.js +14 -5
- package/build/src/export/embed/resolveOptions.js.map +1 -1
- package/build/src/export/embed/xcodeCompilerLogger.js +33 -9
- package/build/src/export/embed/xcodeCompilerLogger.js.map +1 -1
- package/build/src/export/exportApp.js +110 -73
- package/build/src/export/exportApp.js.map +1 -1
- package/build/src/export/exportAssets.js +84 -47
- package/build/src/export/exportAssets.js.map +1 -1
- package/build/src/export/exportAsync.js +56 -27
- package/build/src/export/exportAsync.js.map +1 -1
- package/build/src/export/exportHermes.js +46 -26
- package/build/src/export/exportHermes.js.map +1 -1
- package/build/src/export/exportStaticAsync.js +109 -66
- package/build/src/export/exportStaticAsync.js.map +1 -1
- package/build/src/export/favicon.js +47 -15
- package/build/src/export/favicon.js.map +1 -1
- package/build/src/export/fork-bundleAsync.js +92 -44
- package/build/src/export/fork-bundleAsync.js.map +1 -1
- package/build/src/export/getPublicExpoManifest.js +16 -7
- package/build/src/export/getPublicExpoManifest.js.map +1 -1
- package/build/src/export/getResolvedLocales.js +20 -5
- package/build/src/export/getResolvedLocales.js.map +1 -1
- package/build/src/export/html.js +12 -4
- package/build/src/export/html.js.map +1 -1
- package/build/src/export/index.js +55 -33
- package/build/src/export/index.js.map +1 -1
- package/build/src/export/metroAssetLocalPath.js +30 -8
- package/build/src/export/metroAssetLocalPath.js.map +1 -1
- package/build/src/export/persistMetroAssets.js +59 -33
- package/build/src/export/persistMetroAssets.js.map +1 -1
- package/build/src/export/publicFolder.js +31 -11
- package/build/src/export/publicFolder.js.map +1 -1
- package/build/src/export/resolveOptions.js +26 -16
- package/build/src/export/resolveOptions.js.map +1 -1
- package/build/src/export/saveAssets.js +77 -49
- package/build/src/export/saveAssets.js.map +1 -1
- package/build/src/export/web/exportWebAsync.js +28 -13
- package/build/src/export/web/exportWebAsync.js.map +1 -1
- package/build/src/export/web/index.js +53 -31
- package/build/src/export/web/index.js.map +1 -1
- package/build/src/export/web/resolveOptions.js +4 -1
- package/build/src/export/web/resolveOptions.js.map +1 -1
- package/build/src/export/writeContents.js +12 -7
- package/build/src/export/writeContents.js.map +1 -1
- package/build/src/graphql/generated.js +141 -128
- package/build/src/graphql/generated.js.map +1 -1
- package/build/src/install/applyPlugins.js +50 -26
- package/build/src/install/applyPlugins.js.map +1 -1
- package/build/src/install/checkPackages.js +68 -36
- package/build/src/install/checkPackages.js.map +1 -1
- package/build/src/install/fixPackages.js +58 -35
- package/build/src/install/fixPackages.js.map +1 -1
- package/build/src/install/index.js +21 -13
- package/build/src/install/index.js.map +1 -1
- package/build/src/install/installAsync.js +107 -64
- package/build/src/install/installAsync.js.map +1 -1
- package/build/src/install/installExpoPackage.js +60 -27
- package/build/src/install/installExpoPackage.js.map +1 -1
- package/build/src/install/resolveOptions.js +8 -5
- package/build/src/install/resolveOptions.js.map +1 -1
- package/build/src/install/utils/autoAddConfigPlugins.js +29 -9
- package/build/src/install/utils/autoAddConfigPlugins.js.map +1 -1
- package/build/src/lint/ESlintPrerequisite.js +174 -0
- package/build/src/lint/ESlintPrerequisite.js.map +1 -0
- package/build/src/lint/index.js +66 -0
- package/build/src/lint/index.js.map +1 -0
- package/build/src/lint/lintAsync.js +33 -0
- package/build/src/lint/lintAsync.js.map +1 -0
- package/build/src/log.js +27 -15
- package/build/src/log.js.map +1 -1
- package/build/src/login/index.js +43 -25
- package/build/src/login/index.js.map +1 -1
- package/build/src/logout/index.js +43 -25
- package/build/src/logout/index.js.map +1 -1
- package/build/src/prebuild/clearNativeFolder.js +97 -50
- package/build/src/prebuild/clearNativeFolder.js.map +1 -1
- package/build/src/prebuild/configureProjectAsync.js +64 -31
- package/build/src/prebuild/configureProjectAsync.js.map +1 -1
- package/build/src/prebuild/copyTemplateFiles.js +41 -17
- package/build/src/prebuild/copyTemplateFiles.js.map +1 -1
- package/build/src/prebuild/ensureConfigAsync.js +74 -30
- package/build/src/prebuild/ensureConfigAsync.js.map +1 -1
- package/build/src/prebuild/index.js +58 -38
- package/build/src/prebuild/index.js.map +1 -1
- package/build/src/prebuild/prebuildAsync.js +75 -52
- package/build/src/prebuild/prebuildAsync.js.map +1 -1
- package/build/src/prebuild/renameTemplateAppName.js +124 -0
- package/build/src/prebuild/renameTemplateAppName.js.map +1 -0
- package/build/src/prebuild/resolveOptions.js +85 -36
- package/build/src/prebuild/resolveOptions.js.map +1 -1
- package/build/src/prebuild/resolveTemplate.js +102 -46
- package/build/src/prebuild/resolveTemplate.js.map +1 -1
- package/build/src/prebuild/updateFromTemplate.js +80 -41
- package/build/src/prebuild/updateFromTemplate.js.map +1 -1
- package/build/src/prebuild/updatePackageJson.js +111 -54
- package/build/src/prebuild/updatePackageJson.js.map +1 -1
- package/build/src/prebuild/validateTemplatePlatforms.js +56 -23
- package/build/src/prebuild/validateTemplatePlatforms.js.map +1 -1
- package/build/src/register/index.js +43 -25
- package/build/src/register/index.js.map +1 -1
- package/build/src/register/registerAsync.js +14 -11
- package/build/src/register/registerAsync.js.map +1 -1
- package/build/src/run/android/index.js +64 -32
- package/build/src/run/android/index.js.map +1 -1
- package/build/src/run/android/resolveDevice.js +9 -6
- package/build/src/run/android/resolveDevice.js.map +1 -1
- package/build/src/run/android/resolveGradlePropsAsync.js +56 -0
- package/build/src/run/android/resolveGradlePropsAsync.js.map +1 -0
- package/build/src/run/android/resolveInstallApkName.js +28 -14
- package/build/src/run/android/resolveInstallApkName.js.map +1 -1
- package/build/src/run/android/resolveLaunchProps.js +16 -7
- package/build/src/run/android/resolveLaunchProps.js.map +1 -1
- package/build/src/run/android/resolveOptions.js +14 -9
- package/build/src/run/android/resolveOptions.js.map +1 -1
- package/build/src/run/android/runAndroidAsync.js +39 -27
- package/build/src/run/android/runAndroidAsync.js.map +1 -1
- package/build/src/run/ensureNativeProject.js +24 -9
- package/build/src/run/ensureNativeProject.js.map +1 -1
- package/build/src/run/hints.js +23 -9
- package/build/src/run/hints.js.map +1 -1
- package/build/src/run/index.js +55 -35
- package/build/src/run/index.js.map +1 -1
- package/build/src/run/ios/XcodeBuild.js +126 -66
- package/build/src/run/ios/XcodeBuild.js.map +1 -1
- package/build/src/run/ios/appleDevice/AppleDevice.js +52 -27
- package/build/src/run/ios/appleDevice/AppleDevice.js.map +1 -1
- package/build/src/run/ios/appleDevice/ClientManager.js +70 -31
- package/build/src/run/ios/appleDevice/ClientManager.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/AFCClient.js +94 -44
- package/build/src/run/ios/appleDevice/client/AFCClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/DebugserverClient.js +63 -24
- package/build/src/run/ios/appleDevice/client/DebugserverClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js +21 -6
- package/build/src/run/ios/appleDevice/client/InstallationProxyClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/LockdowndClient.js +64 -25
- package/build/src/run/ios/appleDevice/client/LockdowndClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js +66 -28
- package/build/src/run/ios/appleDevice/client/MobileImageMounterClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/ServiceClient.js +18 -4
- package/build/src/run/ios/appleDevice/client/ServiceClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js +42 -15
- package/build/src/run/ios/appleDevice/client/UsbmuxdClient.js.map +1 -1
- package/build/src/run/ios/appleDevice/installOnDeviceAsync.js +78 -34
- package/build/src/run/ios/appleDevice/installOnDeviceAsync.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js +85 -66
- package/build/src/run/ios/appleDevice/protocol/AFCProtocol.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js +41 -15
- package/build/src/run/ios/appleDevice/protocol/AbstractProtocol.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js +30 -11
- package/build/src/run/ios/appleDevice/protocol/GDBProtocol.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js +39 -14
- package/build/src/run/ios/appleDevice/protocol/LockdownProtocol.js.map +1 -1
- package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js +36 -11
- package/build/src/run/ios/appleDevice/protocol/UsbmuxProtocol.js.map +1 -1
- package/build/src/run/ios/codeSigning/Security.js +40 -21
- package/build/src/run/ios/codeSigning/Security.js.map +1 -1
- package/build/src/run/ios/codeSigning/configureCodeSigning.js +55 -28
- package/build/src/run/ios/codeSigning/configureCodeSigning.js.map +1 -1
- package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js +67 -36
- package/build/src/run/ios/codeSigning/resolveCertificateSigningIdentity.js.map +1 -1
- package/build/src/run/ios/codeSigning/settings.js +11 -3
- package/build/src/run/ios/codeSigning/settings.js.map +1 -1
- package/build/src/run/ios/codeSigning/simulatorCodeSigning.js +30 -10
- package/build/src/run/ios/codeSigning/simulatorCodeSigning.js.map +1 -1
- package/build/src/run/ios/codeSigning/xcodeCodeSigning.js +33 -15
- package/build/src/run/ios/codeSigning/xcodeCodeSigning.js.map +1 -1
- package/build/src/run/ios/index.js +63 -35
- package/build/src/run/ios/index.js.map +1 -1
- package/build/src/run/ios/launchApp.js +65 -32
- package/build/src/run/ios/launchApp.js.map +1 -1
- package/build/src/run/ios/options/promptDevice.js +24 -14
- package/build/src/run/ios/options/promptDevice.js.map +1 -1
- package/build/src/run/ios/options/resolveDevice.js +64 -41
- package/build/src/run/ios/options/resolveDevice.js.map +1 -1
- package/build/src/run/ios/options/resolveNativeScheme.js +80 -39
- package/build/src/run/ios/options/resolveNativeScheme.js.map +1 -1
- package/build/src/run/ios/options/resolveOptions.js +15 -12
- package/build/src/run/ios/options/resolveOptions.js.map +1 -1
- package/build/src/run/ios/options/resolveXcodeProject.js +13 -4
- package/build/src/run/ios/options/resolveXcodeProject.js.map +1 -1
- package/build/src/run/ios/runIosAsync.js +71 -42
- package/build/src/run/ios/runIosAsync.js.map +1 -1
- package/build/src/run/resolveBundlerProps.js +8 -5
- package/build/src/run/resolveBundlerProps.js.map +1 -1
- package/build/src/run/startBundler.js +60 -27
- package/build/src/run/startBundler.js.map +1 -1
- package/build/src/start/detectDevClient.js +32 -0
- package/build/src/start/detectDevClient.js.map +1 -0
- package/build/src/start/doctor/Prerequisite.js +15 -7
- package/build/src/start/doctor/Prerequisite.js.map +1 -1
- package/build/src/start/doctor/SecurityBinPrerequisite.js +13 -4
- package/build/src/start/doctor/SecurityBinPrerequisite.js.map +1 -1
- package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js +57 -24
- package/build/src/start/doctor/apple/SimulatorAppPrerequisite.js.map +1 -1
- package/build/src/start/doctor/apple/XcodeDeveloperDiskImagePrerequisite.js +57 -24
- package/build/src/start/doctor/apple/XcodeDeveloperDiskImagePrerequisite.js.map +1 -1
- package/build/src/start/doctor/apple/XcodePrerequisite.js +132 -57
- package/build/src/start/doctor/apple/XcodePrerequisite.js.map +1 -1
- package/build/src/start/doctor/apple/XcrunPrerequisite.js +34 -13
- package/build/src/start/doctor/apple/XcrunPrerequisite.js.map +1 -1
- package/build/src/start/doctor/dependencies/bundledNativeModules.js +69 -30
- package/build/src/start/doctor/dependencies/bundledNativeModules.js.map +1 -1
- package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js +120 -57
- package/build/src/start/doctor/dependencies/ensureDependenciesAsync.js.map +1 -1
- package/build/src/start/doctor/dependencies/getMissingPackages.js +38 -12
- package/build/src/start/doctor/dependencies/getMissingPackages.js.map +1 -1
- package/build/src/start/doctor/dependencies/getVersionedPackages.js +29 -15
- package/build/src/start/doctor/dependencies/getVersionedPackages.js.map +1 -1
- package/build/src/start/doctor/dependencies/resolvePackages.js +39 -15
- package/build/src/start/doctor/dependencies/resolvePackages.js.map +1 -1
- package/build/src/start/doctor/dependencies/validateDependenciesVersions.js +88 -55
- package/build/src/start/doctor/dependencies/validateDependenciesVersions.js.map +1 -1
- package/build/src/start/doctor/ngrok/ExternalModule.js +88 -39
- package/build/src/start/doctor/ngrok/ExternalModule.js.map +1 -1
- package/build/src/start/doctor/ngrok/NgrokResolver.js +12 -5
- package/build/src/start/doctor/ngrok/NgrokResolver.js.map +1 -1
- package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js +75 -45
- package/build/src/start/doctor/typescript/TypeScriptProjectPrerequisite.js.map +1 -1
- package/build/src/start/doctor/typescript/updateTSConfig.js +81 -40
- package/build/src/start/doctor/typescript/updateTSConfig.js.map +1 -1
- package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js +70 -32
- package/build/src/start/doctor/web/WebSupportProjectPrerequisite.js.map +1 -1
- package/build/src/start/index.js +62 -42
- package/build/src/start/index.js.map +1 -1
- package/build/src/start/interface/KeyPressHandler.js +43 -22
- package/build/src/start/interface/KeyPressHandler.js.map +1 -1
- package/build/src/start/interface/commandsTable.js +81 -41
- package/build/src/start/interface/commandsTable.js.map +1 -1
- package/build/src/start/interface/interactiveActions.js +91 -68
- package/build/src/start/interface/interactiveActions.js.map +1 -1
- package/build/src/start/interface/startInterface.js +84 -57
- package/build/src/start/interface/startInterface.js.map +1 -1
- package/build/src/start/platforms/AppIdResolver.js +16 -7
- package/build/src/start/platforms/AppIdResolver.js.map +1 -1
- package/build/src/start/platforms/DeviceManager.js +47 -20
- package/build/src/start/platforms/DeviceManager.js.map +1 -1
- package/build/src/start/platforms/ExpoGoInstaller.js +81 -45
- package/build/src/start/platforms/ExpoGoInstaller.js.map +1 -1
- package/build/src/start/platforms/PlatformManager.js +42 -20
- package/build/src/start/platforms/PlatformManager.js.map +1 -1
- package/build/src/start/platforms/android/ADBServer.js +28 -13
- package/build/src/start/platforms/android/ADBServer.js.map +1 -1
- package/build/src/start/platforms/android/AndroidAppIdResolver.js +18 -10
- package/build/src/start/platforms/android/AndroidAppIdResolver.js.map +1 -1
- package/build/src/start/platforms/android/AndroidDeviceManager.js +86 -54
- package/build/src/start/platforms/android/AndroidDeviceManager.js.map +1 -1
- package/build/src/start/platforms/android/AndroidPlatformManager.js +9 -6
- package/build/src/start/platforms/android/AndroidPlatformManager.js.map +1 -1
- package/build/src/start/platforms/android/AndroidSdk.js +38 -11
- package/build/src/start/platforms/android/AndroidSdk.js.map +1 -1
- package/build/src/start/platforms/android/activateWindow.js +54 -21
- package/build/src/start/platforms/android/activateWindow.js.map +1 -1
- package/build/src/start/platforms/android/adb.js +89 -51
- package/build/src/start/platforms/android/adb.js.map +1 -1
- package/build/src/start/platforms/android/adbReverse.js +57 -31
- package/build/src/start/platforms/android/adbReverse.js.map +1 -1
- package/build/src/start/platforms/android/emulator.js +89 -44
- package/build/src/start/platforms/android/emulator.js.map +1 -1
- package/build/src/start/platforms/android/getDevices.js +11 -10
- package/build/src/start/platforms/android/getDevices.js.map +1 -1
- package/build/src/start/platforms/android/gradle.js +38 -14
- package/build/src/start/platforms/android/gradle.js.map +1 -1
- package/build/src/start/platforms/android/promptAndroidDevice.js +22 -16
- package/build/src/start/platforms/android/promptAndroidDevice.js.map +1 -1
- package/build/src/start/platforms/ios/AppleAppIdResolver.js +31 -10
- package/build/src/start/platforms/ios/AppleAppIdResolver.js.map +1 -1
- package/build/src/start/platforms/ios/AppleDeviceManager.js +120 -62
- package/build/src/start/platforms/ios/AppleDeviceManager.js.map +1 -1
- package/build/src/start/platforms/ios/ApplePlatformManager.js +7 -4
- package/build/src/start/platforms/ios/ApplePlatformManager.js.map +1 -1
- package/build/src/start/platforms/ios/assertSystemRequirements.js +11 -7
- package/build/src/start/platforms/ios/assertSystemRequirements.js.map +1 -1
- package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js +60 -27
- package/build/src/start/platforms/ios/ensureSimulatorAppRunning.js.map +1 -1
- package/build/src/start/platforms/ios/getBestSimulator.js +60 -30
- package/build/src/start/platforms/ios/getBestSimulator.js.map +1 -1
- package/build/src/start/platforms/ios/promptAppleDevice.js +25 -13
- package/build/src/start/platforms/ios/promptAppleDevice.js.map +1 -1
- package/build/src/start/platforms/ios/simctl.js +75 -46
- package/build/src/start/platforms/ios/simctl.js.map +1 -1
- package/build/src/start/platforms/ios/simctlLogging.js +100 -47
- package/build/src/start/platforms/ios/simctlLogging.js.map +1 -1
- package/build/src/start/platforms/ios/xcrun.js +21 -6
- package/build/src/start/platforms/ios/xcrun.js.map +1 -1
- package/build/src/start/project/devices.js +19 -16
- package/build/src/start/project/devices.js.map +1 -1
- package/build/src/start/project/dotExpo.js +37 -11
- package/build/src/start/project/dotExpo.js.map +1 -1
- package/build/src/start/project/settings.js +6 -4
- package/build/src/start/project/settings.js.map +1 -1
- package/build/src/start/resolveOptions.js +52 -27
- package/build/src/start/resolveOptions.js.map +1 -1
- package/build/src/start/server/AsyncNgrok.js +91 -47
- package/build/src/start/server/AsyncNgrok.js.map +1 -1
- package/build/src/start/server/BundlerDevServer.js +77 -45
- package/build/src/start/server/BundlerDevServer.js.map +1 -1
- package/build/src/start/server/DevServerManager.js +100 -70
- package/build/src/start/server/DevServerManager.js.map +1 -1
- package/build/src/start/server/DevToolsPluginManager.js +35 -18
- package/build/src/start/server/DevToolsPluginManager.js.map +1 -1
- package/build/src/start/server/DevelopmentSession.js +57 -33
- package/build/src/start/server/DevelopmentSession.js.map +1 -1
- package/build/src/start/server/ReactDevToolsProxy.js +37 -11
- package/build/src/start/server/ReactDevToolsProxy.js.map +1 -1
- package/build/src/start/server/UrlCreator.js +61 -27
- package/build/src/start/server/UrlCreator.js.map +1 -1
- package/build/src/start/server/getStaticRenderFunctions.js +125 -77
- package/build/src/start/server/getStaticRenderFunctions.js.map +1 -1
- package/build/src/start/server/metro/MetroBundlerDevServer.js +333 -158
- package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -1
- package/build/src/start/server/metro/MetroTerminalReporter.js +50 -28
- package/build/src/start/server/metro/MetroTerminalReporter.js.map +1 -1
- package/build/src/start/server/metro/TerminalReporter.js +40 -12
- package/build/src/start/server/metro/TerminalReporter.js.map +1 -1
- package/build/src/start/server/metro/TerminalReporter.types.js.map +1 -1
- package/build/src/start/server/metro/createExpoMetroResolver.js +82 -35
- package/build/src/start/server/metro/createExpoMetroResolver.js.map +1 -1
- package/build/src/start/server/metro/createJResolver.js +143 -73
- package/build/src/start/server/metro/createJResolver.js.map +1 -1
- package/build/src/start/server/metro/createServerRouteMiddleware.js +47 -38
- package/build/src/start/server/metro/createServerRouteMiddleware.js.map +1 -1
- package/build/src/start/server/metro/debugging/MessageHandler.js +30 -0
- package/build/src/start/server/metro/debugging/MessageHandler.js.map +1 -0
- package/build/src/start/server/metro/debugging/createDebugMiddleware.js +18 -14
- package/build/src/start/server/metro/debugging/createDebugMiddleware.js.map +1 -1
- package/build/src/start/server/metro/debugging/createHandlersFactory.js +64 -0
- package/build/src/start/server/metro/debugging/createHandlersFactory.js.map +1 -0
- package/build/src/start/server/metro/debugging/{inspectorHandlers/utils.js → getDebuggerType.js} +6 -8
- package/build/src/start/server/metro/debugging/getDebuggerType.js.map +1 -0
- package/build/src/start/server/metro/debugging/{inspectorHandlers → messageHandlers}/NetworkResponse.js +12 -6
- package/build/src/start/server/metro/debugging/messageHandlers/NetworkResponse.js.map +1 -0
- package/build/src/start/server/metro/debugging/messageHandlers/PageReload.js +26 -0
- package/build/src/start/server/metro/debugging/messageHandlers/PageReload.js.map +1 -0
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerGetPossibleBreakpoints.js +28 -0
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerGetPossibleBreakpoints.js.map +1 -0
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerSetBreakpointByUrl.js +25 -0
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeDebuggerSetBreakpointByUrl.js.map +1 -0
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeCallFunctionOn.js +31 -0
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeCallFunctionOn.js.map +1 -0
- package/build/src/start/server/metro/debugging/{inspectorHandlers → messageHandlers}/VscodeRuntimeGetProperties.js +14 -7
- package/build/src/start/server/metro/debugging/messageHandlers/VscodeRuntimeGetProperties.js.map +1 -0
- package/build/src/start/server/metro/debugging/pageIsSupported.js +17 -0
- package/build/src/start/server/metro/debugging/pageIsSupported.js.map +1 -0
- package/build/src/start/server/metro/debugging/types.js.map +1 -0
- package/build/src/start/server/metro/externals.js +67 -69
- package/build/src/start/server/metro/externals.js.map +1 -1
- package/build/src/start/server/metro/fetchRouterManifest.js +26 -7
- package/build/src/start/server/metro/fetchRouterManifest.js.map +1 -1
- package/build/src/start/server/metro/formatFileCandidates.js +28 -18
- package/build/src/start/server/metro/formatFileCandidates.js.map +1 -1
- package/build/src/start/server/metro/getCssModulesFromBundler.js +44 -12
- package/build/src/start/server/metro/getCssModulesFromBundler.js.map +1 -1
- package/build/src/start/server/metro/instantiateMetro.js +141 -62
- package/build/src/start/server/metro/instantiateMetro.js.map +1 -1
- package/build/src/start/server/metro/metroErrorInterface.js +75 -47
- package/build/src/start/server/metro/metroErrorInterface.js.map +1 -1
- package/build/src/start/server/metro/metroErrors.js +11 -2
- package/build/src/start/server/metro/metroErrors.js.map +1 -1
- package/build/src/start/server/metro/metroVirtualModules.js +90 -0
- package/build/src/start/server/metro/metroVirtualModules.js.map +1 -0
- package/build/src/start/server/metro/metroWatchTypeScriptFiles.js +12 -3
- package/build/src/start/server/metro/metroWatchTypeScriptFiles.js.map +1 -1
- package/build/src/start/server/metro/router.js +64 -30
- package/build/src/start/server/metro/router.js.map +1 -1
- package/build/src/start/server/metro/runServer-fork.js +68 -19
- package/build/src/start/server/metro/runServer-fork.js.map +1 -1
- package/build/src/start/server/metro/serializeHtml.js +32 -19
- package/build/src/start/server/metro/serializeHtml.js.map +1 -1
- package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js +19 -5
- package/build/src/start/server/metro/waitForMetroToObserveTypeScriptFile.js.map +1 -1
- package/build/src/start/server/metro/withMetroMultiPlatform.js +232 -104
- package/build/src/start/server/metro/withMetroMultiPlatform.js.map +1 -1
- package/build/src/start/server/metro/withMetroResolvers.js +95 -47
- package/build/src/start/server/metro/withMetroResolvers.js.map +1 -1
- package/build/src/start/server/middleware/ContextModuleSourceMapsMiddleware.js +4 -1
- package/build/src/start/server/middleware/ContextModuleSourceMapsMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/CorsMiddleware.js +4 -1
- package/build/src/start/server/middleware/CorsMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/CreateFileMiddleware.js +33 -13
- package/build/src/start/server/middleware/CreateFileMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/DevToolsPluginMiddleware.js +27 -12
- package/build/src/start/server/middleware/DevToolsPluginMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js +65 -28
- package/build/src/start/server/middleware/ExpoGoManifestHandlerMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ExpoMiddleware.js +54 -22
- package/build/src/start/server/middleware/ExpoMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/FaviconMiddleware.js +8 -5
- package/build/src/start/server/middleware/FaviconMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/HistoryFallbackMiddleware.js +6 -3
- package/build/src/start/server/middleware/HistoryFallbackMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/InterstitialPageMiddleware.js +58 -21
- package/build/src/start/server/middleware/InterstitialPageMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ManifestMiddleware.js +117 -63
- package/build/src/start/server/middleware/ManifestMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ReactDevToolsPageMiddleware.js +35 -10
- package/build/src/start/server/middleware/ReactDevToolsPageMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js +54 -27
- package/build/src/start/server/middleware/RuntimeRedirectMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ServeStaticMiddleware.js +31 -10
- package/build/src/start/server/middleware/ServeStaticMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/inspector/JsInspector.js +45 -22
- package/build/src/start/server/middleware/inspector/JsInspector.js.map +1 -1
- package/build/src/start/server/middleware/inspector/LaunchBrowser.js +25 -11
- package/build/src/start/server/middleware/inspector/LaunchBrowser.js.map +1 -1
- package/build/src/start/server/middleware/inspector/LaunchBrowser.types.js +4 -2
- package/build/src/start/server/middleware/inspector/LaunchBrowser.types.js.map +1 -1
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplLinux.js +36 -14
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplLinux.js.map +1 -1
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplMacOS.js +84 -38
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplMacOS.js.map +1 -1
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplWindows.js +42 -20
- package/build/src/start/server/middleware/inspector/LaunchBrowserImplWindows.js.map +1 -1
- package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js +40 -13
- package/build/src/start/server/middleware/inspector/createJsInspectorMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/inspector/middlwareMutations.js +11 -4
- package/build/src/start/server/middleware/inspector/middlwareMutations.js.map +1 -1
- package/build/src/start/server/middleware/metroOptions.js +36 -18
- package/build/src/start/server/middleware/metroOptions.js.map +1 -1
- package/build/src/start/server/middleware/mutations.js +11 -4
- package/build/src/start/server/middleware/mutations.js.map +1 -1
- package/build/src/start/server/middleware/resolveAssets.js +78 -42
- package/build/src/start/server/middleware/resolveAssets.js.map +1 -1
- package/build/src/start/server/middleware/resolvePlatform.js +21 -7
- package/build/src/start/server/middleware/resolvePlatform.js.map +1 -1
- package/build/src/start/server/middleware/suppressErrorMiddleware.js +4 -1
- package/build/src/start/server/middleware/suppressErrorMiddleware.js.map +1 -1
- package/build/src/start/server/openPlatforms.js +7 -6
- package/build/src/start/server/openPlatforms.js.map +1 -1
- package/build/src/start/server/platformBundlers.js +12 -3
- package/build/src/start/server/platformBundlers.js.map +1 -1
- package/build/src/start/server/serverLogLikeMetro.js +93 -40
- package/build/src/start/server/serverLogLikeMetro.js.map +1 -1
- package/build/src/start/server/type-generation/expo-env.js +26 -6
- package/build/src/start/server/type-generation/expo-env.js.map +1 -1
- package/build/src/start/server/type-generation/routes.js +137 -82
- package/build/src/start/server/type-generation/routes.js.map +1 -1
- package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js +44 -23
- package/build/src/start/server/type-generation/startTypescriptTypeGeneration.js.map +1 -1
- package/build/src/start/server/type-generation/tsconfig.js +41 -16
- package/build/src/start/server/type-generation/tsconfig.js.map +1 -1
- package/build/src/start/server/webTemplate.js +43 -19
- package/build/src/start/server/webTemplate.js.map +1 -1
- package/build/src/start/server/webpack/WebpackBundlerDevServer.js +105 -56
- package/build/src/start/server/webpack/WebpackBundlerDevServer.js.map +1 -1
- package/build/src/start/server/webpack/compile.js +60 -27
- package/build/src/start/server/webpack/compile.js.map +1 -1
- package/build/src/start/server/webpack/formatWebpackMessages.js +35 -25
- package/build/src/start/server/webpack/formatWebpackMessages.js.map +1 -1
- package/build/src/start/server/webpack/resolveFromProject.js +20 -6
- package/build/src/start/server/webpack/resolveFromProject.js.map +1 -1
- package/build/src/start/server/webpack/tls.js +84 -34
- package/build/src/start/server/webpack/tls.js.map +1 -1
- package/build/src/start/startAsync.js +98 -52
- package/build/src/start/startAsync.js.map +1 -1
- package/build/src/utils/FileNotifier.js +73 -28
- package/build/src/utils/FileNotifier.js.map +1 -1
- package/build/src/utils/analytics/getDevClientProperties.js +48 -22
- package/build/src/utils/analytics/getDevClientProperties.js.map +1 -1
- package/build/src/utils/analytics/getMetroDebugProperties.js +4 -1
- package/build/src/utils/analytics/getMetroDebugProperties.js.map +1 -1
- package/build/src/utils/analytics/getMetroProperties.js +4 -1
- package/build/src/utils/analytics/getMetroProperties.js.map +1 -1
- package/build/src/utils/analytics/metroDebuggerMiddleware.js +14 -6
- package/build/src/utils/analytics/metroDebuggerMiddleware.js.map +1 -1
- package/build/src/utils/ansi.js +5 -2
- package/build/src/utils/ansi.js.map +1 -1
- package/build/src/utils/args.js +83 -31
- package/build/src/utils/args.js.map +1 -1
- package/build/src/utils/array.js +16 -9
- package/build/src/utils/array.js.map +1 -1
- package/build/src/utils/cocoapods.js +127 -67
- package/build/src/utils/cocoapods.js.map +1 -1
- package/build/src/utils/codesigning.js +144 -72
- package/build/src/utils/codesigning.js.map +1 -1
- package/build/src/utils/createFileTransform.js +34 -71
- package/build/src/utils/createFileTransform.js.map +1 -1
- package/build/src/utils/delay.js +13 -6
- package/build/src/utils/delay.js.map +1 -1
- package/build/src/utils/dir.js +50 -40
- package/build/src/utils/dir.js.map +1 -1
- package/build/src/utils/downloadAppAsync.js +51 -18
- package/build/src/utils/downloadAppAsync.js.map +1 -1
- package/build/src/utils/downloadExpoGoAsync.js +47 -26
- package/build/src/utils/downloadExpoGoAsync.js.map +1 -1
- package/build/src/utils/editor.js +65 -27
- package/build/src/utils/editor.js.map +1 -1
- package/build/src/utils/env.js +44 -33
- package/build/src/utils/env.js.map +1 -1
- package/build/src/utils/errors.js +35 -12
- package/build/src/utils/errors.js.map +1 -1
- package/build/src/utils/exit.js +10 -7
- package/build/src/utils/exit.js.map +1 -1
- package/build/src/utils/findUp.js +38 -8
- package/build/src/utils/findUp.js.map +1 -1
- package/build/src/utils/fn.js +11 -3
- package/build/src/utils/fn.js.map +1 -1
- package/build/src/utils/getOrPromptApplicationId.js +84 -46
- package/build/src/utils/getOrPromptApplicationId.js.map +1 -1
- package/build/src/utils/getRunningProcess.js +63 -25
- package/build/src/utils/getRunningProcess.js.map +1 -1
- package/build/src/utils/git.js +76 -38
- package/build/src/utils/git.js.map +1 -1
- package/build/src/utils/glob.js +23 -12
- package/build/src/utils/glob.js.map +1 -1
- package/build/src/utils/interactive.js +5 -2
- package/build/src/utils/interactive.js.map +1 -1
- package/build/src/utils/ip.js +12 -3
- package/build/src/utils/ip.js.map +1 -1
- package/build/src/utils/isModuleSymlinked.js +20 -5
- package/build/src/utils/isModuleSymlinked.js.map +1 -1
- package/build/src/utils/link.js +28 -8
- package/build/src/utils/link.js.map +1 -1
- package/build/src/utils/mergeGitIgnorePaths.js +45 -28
- package/build/src/utils/mergeGitIgnorePaths.js.map +1 -1
- package/build/src/utils/modifyConfigAsync.js +69 -31
- package/build/src/utils/modifyConfigAsync.js.map +1 -1
- package/build/src/utils/modifyConfigPlugins.js +50 -23
- package/build/src/utils/modifyConfigPlugins.js.map +1 -1
- package/build/src/utils/nodeEnv.js +8 -1
- package/build/src/utils/nodeEnv.js.map +1 -1
- package/build/src/utils/nodeModules.js +29 -8
- package/build/src/utils/nodeModules.js.map +1 -1
- package/build/src/utils/npm.js +86 -31
- package/build/src/utils/npm.js.map +1 -1
- package/build/src/utils/obj.js +12 -4
- package/build/src/utils/obj.js.map +1 -1
- package/build/src/utils/open.js +13 -4
- package/build/src/utils/open.js.map +1 -1
- package/build/src/utils/ora.js +38 -22
- package/build/src/utils/ora.js.map +1 -1
- package/build/src/utils/plist.js +73 -29
- package/build/src/utils/plist.js.map +1 -1
- package/build/src/utils/port.js +74 -36
- package/build/src/utils/port.js.map +1 -1
- package/build/src/utils/profile.js +56 -29
- package/build/src/utils/profile.js.map +1 -1
- package/build/src/utils/progress.js +23 -13
- package/build/src/utils/progress.js.map +1 -1
- package/build/src/utils/prompts.js +45 -28
- package/build/src/utils/prompts.js.map +1 -1
- package/build/src/utils/resolveArgs.js +23 -20
- package/build/src/utils/resolveArgs.js.map +1 -1
- package/build/src/utils/scheme.js +128 -52
- package/build/src/utils/scheme.js.map +1 -1
- package/build/src/utils/strings.js +11 -4
- package/build/src/utils/strings.js.map +1 -1
- package/build/src/utils/tar.js +56 -23
- package/build/src/utils/tar.js.map +1 -1
- package/build/src/utils/telemetry/DetachedClient.js +90 -0
- package/build/src/utils/telemetry/DetachedClient.js.map +1 -0
- package/build/src/utils/telemetry/RudderClient.js +101 -0
- package/build/src/utils/telemetry/RudderClient.js.map +1 -0
- package/build/src/utils/telemetry/flushDetached.js +44 -0
- package/build/src/utils/telemetry/flushDetached.js.map +1 -0
- package/build/src/utils/telemetry/getContext.js +112 -0
- package/build/src/utils/telemetry/getContext.js.map +1 -0
- package/build/src/utils/telemetry/index.js +37 -0
- package/build/src/utils/telemetry/index.js.map +1 -0
- package/build/src/utils/telemetry/types.js +6 -0
- package/build/src/utils/telemetry/types.js.map +1 -0
- package/build/src/utils/template.js +27 -2
- package/build/src/utils/template.js.map +1 -1
- package/build/src/utils/terminal.js +5 -2
- package/build/src/utils/terminal.js.map +1 -1
- package/build/src/utils/tsconfig/evaluateTsConfig.js +32 -14
- package/build/src/utils/tsconfig/evaluateTsConfig.js.map +1 -1
- package/build/src/utils/tsconfig/loadTsConfigPaths.js +34 -14
- package/build/src/utils/tsconfig/loadTsConfigPaths.js.map +1 -1
- package/build/src/utils/tsconfig/matchTsConfigPathAlias.js +8 -4
- package/build/src/utils/tsconfig/matchTsConfigPathAlias.js.map +1 -1
- package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js +20 -11
- package/build/src/utils/tsconfig/resolveWithTsConfigPaths.js.map +1 -1
- package/build/src/utils/url.js +35 -19
- package/build/src/utils/url.js.map +1 -1
- package/build/src/utils/validateApplicationId.js +47 -28
- package/build/src/utils/validateApplicationId.js.map +1 -1
- package/build/src/utils/variadic.js +15 -11
- package/build/src/utils/variadic.js.map +1 -1
- package/build/src/whoami/index.js +43 -25
- package/build/src/whoami/index.js.map +1 -1
- package/build/src/whoami/whoamiAsync.js +50 -23
- package/build/src/whoami/whoamiAsync.js.map +1 -1
- package/package.json +16 -17
- package/static/canary/react-native/Libraries/Renderer/implementations/ReactFabric-dev.js +27907 -0
- package/static/canary/react-native/Libraries/Renderer/implementations/ReactFabric-prod.js +9494 -0
- package/static/canary/react-native/Libraries/Renderer/implementations/ReactFabric-profiling.js +10015 -0
- package/static/canary/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +28375 -0
- package/static/canary/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +9714 -0
- package/build/src/run/android/resolveGradleProps.js +0 -37
- package/build/src/run/android/resolveGradleProps.js.map +0 -1
- package/build/src/start/server/metro/bundleApiRoutes.js +0 -52
- package/build/src/start/server/metro/bundleApiRoutes.js.map +0 -1
- package/build/src/start/server/metro/debugging/InspectorDevice.js +0 -80
- package/build/src/start/server/metro/debugging/InspectorDevice.js.map +0 -1
- package/build/src/start/server/metro/debugging/InspectorProxy.js +0 -116
- package/build/src/start/server/metro/debugging/InspectorProxy.js.map +0 -1
- package/build/src/start/server/metro/debugging/inspectorHandlers/NetworkResponse.js.map +0 -1
- package/build/src/start/server/metro/debugging/inspectorHandlers/PageReload.js +0 -22
- package/build/src/start/server/metro/debugging/inspectorHandlers/PageReload.js.map +0 -1
- package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerGetPossibleBreakpoints.js +0 -21
- package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerGetPossibleBreakpoints.js.map +0 -1
- package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerScriptParsed.js +0 -56
- package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerScriptParsed.js.map +0 -1
- package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerSetBreakpointByUrl.js +0 -18
- package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeDebuggerSetBreakpointByUrl.js.map +0 -1
- package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeRuntimeCallFunctionOn.js +0 -24
- package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeRuntimeCallFunctionOn.js.map +0 -1
- package/build/src/start/server/metro/debugging/inspectorHandlers/VscodeRuntimeGetProperties.js.map +0 -1
- package/build/src/start/server/metro/debugging/inspectorHandlers/types.js.map +0 -1
- package/build/src/start/server/metro/debugging/inspectorHandlers/utils.js.map +0 -1
- package/build/src/start/server/type-generation/__typetests__/fixtures/basic.js +0 -38
- package/build/src/start/server/type-generation/__typetests__/fixtures/basic.js.map +0 -1
- package/build/src/start/server/type-generation/__typetests__/generateFixtures.js +0 -38
- package/build/src/start/server/type-generation/__typetests__/generateFixtures.js.map +0 -1
- package/build/src/start/server/type-generation/__typetests__/route.test.js +0 -184
- package/build/src/start/server/type-generation/__typetests__/route.test.js.map +0 -1
- package/build/src/utils/analytics/rudderstackClient.js +0 -147
- package/build/src/utils/analytics/rudderstackClient.js.map +0 -1
- /package/build/src/start/server/metro/debugging/{inspectorHandlers/types.js → types.js} +0 -0
|
@@ -1,10 +1,31 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Copyright © 2022 650 Industries.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/ "use strict";
|
|
2
7
|
Object.defineProperty(exports, "__esModule", {
|
|
3
8
|
value: true
|
|
4
9
|
});
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
10
|
+
Object.defineProperty(exports, "CreateFileMiddleware", {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: ()=>CreateFileMiddleware
|
|
13
|
+
});
|
|
14
|
+
function _fs() {
|
|
15
|
+
const data = /*#__PURE__*/ _interopRequireDefault(require("fs"));
|
|
16
|
+
_fs = function() {
|
|
17
|
+
return data;
|
|
18
|
+
};
|
|
19
|
+
return data;
|
|
20
|
+
}
|
|
21
|
+
function _path() {
|
|
22
|
+
const data = /*#__PURE__*/ _interopRequireDefault(require("path"));
|
|
23
|
+
_path = function() {
|
|
24
|
+
return data;
|
|
25
|
+
};
|
|
26
|
+
return data;
|
|
27
|
+
}
|
|
28
|
+
const _expoMiddleware = require("./ExpoMiddleware");
|
|
8
29
|
function _interopRequireDefault(obj) {
|
|
9
30
|
return obj && obj.__esModule ? obj : {
|
|
10
31
|
default: obj
|
|
@@ -19,16 +40,16 @@ class CreateFileMiddleware extends _expoMiddleware.ExpoMiddleware {
|
|
|
19
40
|
this.projectRoot = projectRoot;
|
|
20
41
|
}
|
|
21
42
|
resolvePath(inputPath) {
|
|
22
|
-
return this.resolveExtension(_path.default.join(this.projectRoot, inputPath));
|
|
43
|
+
return this.resolveExtension(_path().default.join(this.projectRoot, inputPath));
|
|
23
44
|
}
|
|
24
45
|
resolveExtension(inputPath) {
|
|
25
46
|
let resolvedPath = inputPath;
|
|
26
|
-
const extension = _path.default.extname(inputPath);
|
|
47
|
+
const extension = _path().default.extname(inputPath);
|
|
27
48
|
if (extension === ".js") {
|
|
28
49
|
// Automatically convert JS files to TS files when added to a project
|
|
29
50
|
// with TypeScript.
|
|
30
|
-
const tsconfigPath = _path.default.join(this.projectRoot, "tsconfig.json");
|
|
31
|
-
if (_fs.default.existsSync(tsconfigPath)) {
|
|
51
|
+
const tsconfigPath = _path().default.join(this.projectRoot, "tsconfig.json");
|
|
52
|
+
if (_fs().default.existsSync(tsconfigPath)) {
|
|
32
53
|
resolvedPath = resolvedPath.replace(/\.js$/, ".tsx");
|
|
33
54
|
}
|
|
34
55
|
}
|
|
@@ -78,18 +99,18 @@ class CreateFileMiddleware extends _expoMiddleware.ExpoMiddleware {
|
|
|
78
99
|
return;
|
|
79
100
|
}
|
|
80
101
|
debug(`Requested: %O`, properties);
|
|
81
|
-
const resolvedPath = properties.absolutePath ? this.resolveExtension(_path.default.resolve(properties.absolutePath)) : this.resolvePath(properties.path);
|
|
82
|
-
if (_fs.default.existsSync(resolvedPath)) {
|
|
102
|
+
const resolvedPath = properties.absolutePath ? this.resolveExtension(_path().default.resolve(properties.absolutePath)) : this.resolvePath(properties.path);
|
|
103
|
+
if (_fs().default.existsSync(resolvedPath)) {
|
|
83
104
|
res.statusCode = 409;
|
|
84
105
|
res.end("File already exists.");
|
|
85
106
|
return;
|
|
86
107
|
}
|
|
87
108
|
debug(`Resolved path:`, resolvedPath);
|
|
88
109
|
try {
|
|
89
|
-
await _fs.default.promises.mkdir(_path.default.dirname(resolvedPath), {
|
|
110
|
+
await _fs().default.promises.mkdir(_path().default.dirname(resolvedPath), {
|
|
90
111
|
recursive: true
|
|
91
112
|
});
|
|
92
|
-
await _fs.default.promises.writeFile(resolvedPath, properties.contents, "utf8");
|
|
113
|
+
await _fs().default.promises.writeFile(resolvedPath, properties.contents, "utf8");
|
|
93
114
|
} catch (e1) {
|
|
94
115
|
debug("Error writing file", e1);
|
|
95
116
|
res.statusCode = 500;
|
|
@@ -101,6 +122,5 @@ class CreateFileMiddleware extends _expoMiddleware.ExpoMiddleware {
|
|
|
101
122
|
res.end("OK");
|
|
102
123
|
}
|
|
103
124
|
}
|
|
104
|
-
exports.CreateFileMiddleware = CreateFileMiddleware;
|
|
105
125
|
|
|
106
126
|
//# sourceMappingURL=CreateFileMiddleware.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/start/server/middleware/CreateFileMiddleware.ts"],"sourcesContent":["/**\n * Copyright © 2022 650 Industries.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport fs from 'fs';\nimport path from 'path';\n\nimport { ExpoMiddleware } from './ExpoMiddleware';\nimport { ServerRequest, ServerResponse } from './server.types';\n\nconst debug = require('debug')('expo:start:server:middleware:createFile') as typeof console.log;\n\nexport type TouchFileBody = {\n /** @deprecated */\n path: string;\n absolutePath?: string;\n contents: string;\n};\n\n/**\n * Middleware for creating a file given a `POST` request with\n * `{ contents: string, path: string }` in the body.\n */\nexport class CreateFileMiddleware extends ExpoMiddleware {\n constructor(protected projectRoot: string) {\n super(projectRoot, ['/_expo/touch']);\n }\n\n protected resolvePath(inputPath: string): string {\n return this.resolveExtension(path.join(this.projectRoot, inputPath));\n }\n\n protected resolveExtension(inputPath: string): string {\n let resolvedPath = inputPath;\n const extension = path.extname(inputPath);\n if (extension === '.js') {\n // Automatically convert JS files to TS files when added to a project\n // with TypeScript.\n const tsconfigPath = path.join(this.projectRoot, 'tsconfig.json');\n if (fs.existsSync(tsconfigPath)) {\n resolvedPath = resolvedPath.replace(/\\.js$/, '.tsx');\n }\n }\n\n return resolvedPath;\n }\n\n protected async parseRawBody(req: ServerRequest): Promise<TouchFileBody> {\n const rawBody = await new Promise<string>((resolve, reject) => {\n let body = '';\n req.on('data', (chunk) => {\n body += chunk.toString();\n });\n req.on('end', () => {\n resolve(body);\n });\n req.on('error', (err) => {\n reject(err);\n });\n });\n\n const properties = JSON.parse(rawBody);\n this.assertTouchFileBody(properties);\n\n return properties;\n }\n\n private assertTouchFileBody(body: any): asserts body is TouchFileBody {\n if (typeof body !== 'object' || body == null) {\n throw new Error('Expected object');\n }\n if (typeof body.path !== 'string') {\n throw new Error('Expected \"path\" in body to be string');\n }\n if (typeof body.contents !== 'string') {\n throw new Error('Expected \"contents\" in body to be string');\n }\n }\n\n async handleRequestAsync(req: ServerRequest, res: ServerResponse): Promise<void> {\n if (req.method !== 'POST') {\n res.statusCode = 405;\n res.end('Method Not Allowed');\n return;\n }\n\n let properties: TouchFileBody;\n\n try {\n properties = await this.parseRawBody(req);\n } catch (e) {\n debug('Error parsing request body', e);\n res.statusCode = 400;\n res.end('Bad Request');\n return;\n }\n\n debug(`Requested: %O`, properties);\n\n const resolvedPath = properties.absolutePath\n ? this.resolveExtension(path.resolve(properties.absolutePath))\n : this.resolvePath(properties.path);\n\n if (fs.existsSync(resolvedPath)) {\n res.statusCode = 409;\n res.end('File already exists.');\n return;\n }\n\n debug(`Resolved path:`, resolvedPath);\n\n try {\n await fs.promises.mkdir(path.dirname(resolvedPath), { recursive: true });\n await fs.promises.writeFile(resolvedPath, properties.contents, 'utf8');\n } catch (e) {\n debug('Error writing file', e);\n res.statusCode = 500;\n res.end('Error writing file.');\n return;\n }\n\n debug(`File created`);\n res.statusCode = 200;\n res.end('OK');\n }\n}\n"],"names":["
|
|
1
|
+
{"version":3,"sources":["../../../../../src/start/server/middleware/CreateFileMiddleware.ts"],"sourcesContent":["/**\n * Copyright © 2022 650 Industries.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport fs from 'fs';\nimport path from 'path';\n\nimport { ExpoMiddleware } from './ExpoMiddleware';\nimport { ServerRequest, ServerResponse } from './server.types';\n\nconst debug = require('debug')('expo:start:server:middleware:createFile') as typeof console.log;\n\nexport type TouchFileBody = {\n /** @deprecated */\n path: string;\n absolutePath?: string;\n contents: string;\n};\n\n/**\n * Middleware for creating a file given a `POST` request with\n * `{ contents: string, path: string }` in the body.\n */\nexport class CreateFileMiddleware extends ExpoMiddleware {\n constructor(protected projectRoot: string) {\n super(projectRoot, ['/_expo/touch']);\n }\n\n protected resolvePath(inputPath: string): string {\n return this.resolveExtension(path.join(this.projectRoot, inputPath));\n }\n\n protected resolveExtension(inputPath: string): string {\n let resolvedPath = inputPath;\n const extension = path.extname(inputPath);\n if (extension === '.js') {\n // Automatically convert JS files to TS files when added to a project\n // with TypeScript.\n const tsconfigPath = path.join(this.projectRoot, 'tsconfig.json');\n if (fs.existsSync(tsconfigPath)) {\n resolvedPath = resolvedPath.replace(/\\.js$/, '.tsx');\n }\n }\n\n return resolvedPath;\n }\n\n protected async parseRawBody(req: ServerRequest): Promise<TouchFileBody> {\n const rawBody = await new Promise<string>((resolve, reject) => {\n let body = '';\n req.on('data', (chunk) => {\n body += chunk.toString();\n });\n req.on('end', () => {\n resolve(body);\n });\n req.on('error', (err) => {\n reject(err);\n });\n });\n\n const properties = JSON.parse(rawBody);\n this.assertTouchFileBody(properties);\n\n return properties;\n }\n\n private assertTouchFileBody(body: any): asserts body is TouchFileBody {\n if (typeof body !== 'object' || body == null) {\n throw new Error('Expected object');\n }\n if (typeof body.path !== 'string') {\n throw new Error('Expected \"path\" in body to be string');\n }\n if (typeof body.contents !== 'string') {\n throw new Error('Expected \"contents\" in body to be string');\n }\n }\n\n async handleRequestAsync(req: ServerRequest, res: ServerResponse): Promise<void> {\n if (req.method !== 'POST') {\n res.statusCode = 405;\n res.end('Method Not Allowed');\n return;\n }\n\n let properties: TouchFileBody;\n\n try {\n properties = await this.parseRawBody(req);\n } catch (e) {\n debug('Error parsing request body', e);\n res.statusCode = 400;\n res.end('Bad Request');\n return;\n }\n\n debug(`Requested: %O`, properties);\n\n const resolvedPath = properties.absolutePath\n ? this.resolveExtension(path.resolve(properties.absolutePath))\n : this.resolvePath(properties.path);\n\n if (fs.existsSync(resolvedPath)) {\n res.statusCode = 409;\n res.end('File already exists.');\n return;\n }\n\n debug(`Resolved path:`, resolvedPath);\n\n try {\n await fs.promises.mkdir(path.dirname(resolvedPath), { recursive: true });\n await fs.promises.writeFile(resolvedPath, properties.contents, 'utf8');\n } catch (e) {\n debug('Error writing file', e);\n res.statusCode = 500;\n res.end('Error writing file.');\n return;\n }\n\n debug(`File created`);\n res.statusCode = 200;\n res.end('OK');\n }\n}\n"],"names":["CreateFileMiddleware","debug","require","ExpoMiddleware","constructor","projectRoot","resolvePath","inputPath","resolveExtension","path","join","resolvedPath","extension","extname","tsconfigPath","fs","existsSync","replace","parseRawBody","req","rawBody","Promise","resolve","reject","body","on","chunk","toString","err","properties","JSON","parse","assertTouchFileBody","Error","contents","handleRequestAsync","res","method","statusCode","end","e","absolutePath","promises","mkdir","dirname","recursive","writeFile"],"mappings":"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"}
|
|
@@ -2,16 +2,32 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: all[name]
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
DevToolsPluginEndpoint: ()=>_devToolsPluginManager.DevToolsPluginEndpoint,
|
|
13
|
+
DevToolsPluginMiddleware: ()=>DevToolsPluginMiddleware
|
|
10
14
|
});
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
+
function _assert() {
|
|
16
|
+
const data = /*#__PURE__*/ _interopRequireDefault(require("assert"));
|
|
17
|
+
_assert = function() {
|
|
18
|
+
return data;
|
|
19
|
+
};
|
|
20
|
+
return data;
|
|
21
|
+
}
|
|
22
|
+
function _send() {
|
|
23
|
+
const data = /*#__PURE__*/ _interopRequireDefault(require("send"));
|
|
24
|
+
_send = function() {
|
|
25
|
+
return data;
|
|
26
|
+
};
|
|
27
|
+
return data;
|
|
28
|
+
}
|
|
29
|
+
const _expoMiddleware = require("./ExpoMiddleware");
|
|
30
|
+
const _devToolsPluginManager = require("../DevToolsPluginManager");
|
|
15
31
|
function _interopRequireDefault(obj) {
|
|
16
32
|
return obj && obj.__esModule ? obj : {
|
|
17
33
|
default: obj
|
|
@@ -32,7 +48,7 @@ class DevToolsPluginMiddleware extends _expoMiddleware.ExpoMiddleware {
|
|
|
32
48
|
return true;
|
|
33
49
|
}
|
|
34
50
|
async handleRequestAsync(req, res) {
|
|
35
|
-
(0, _assert).default(req.headers.host, "Request headers must include host");
|
|
51
|
+
(0, _assert().default)(req.headers.host, "Request headers must include host");
|
|
36
52
|
var _url;
|
|
37
53
|
const { pathname } = new URL((_url = req.url) != null ? _url : "/", `http://${req.headers.host}`);
|
|
38
54
|
const pluginName = this.queryPossiblePluginName(pathname.substring(_devToolsPluginManager.DevToolsPluginEndpoint.length + 1));
|
|
@@ -43,7 +59,7 @@ class DevToolsPluginMiddleware extends _expoMiddleware.ExpoMiddleware {
|
|
|
43
59
|
return;
|
|
44
60
|
}
|
|
45
61
|
const pathInPluginRoot = pathname.substring(_devToolsPluginManager.DevToolsPluginEndpoint.length + pluginName.length + 1) || "/";
|
|
46
|
-
(0, _send).default(req, pathInPluginRoot, {
|
|
62
|
+
(0, _send().default)(req, pathInPluginRoot, {
|
|
47
63
|
root: webpageRoot
|
|
48
64
|
}).pipe(res);
|
|
49
65
|
}
|
|
@@ -56,6 +72,5 @@ class DevToolsPluginMiddleware extends _expoMiddleware.ExpoMiddleware {
|
|
|
56
72
|
return parts[0];
|
|
57
73
|
}
|
|
58
74
|
}
|
|
59
|
-
exports.DevToolsPluginMiddleware = DevToolsPluginMiddleware;
|
|
60
75
|
|
|
61
76
|
//# sourceMappingURL=DevToolsPluginMiddleware.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/start/server/middleware/DevToolsPluginMiddleware.ts"],"sourcesContent":["import assert from 'assert';\nimport send from 'send';\n\nimport { ExpoMiddleware } from './ExpoMiddleware';\nimport { ServerRequest, ServerResponse } from './server.types';\nimport DevToolsPluginManager, { DevToolsPluginEndpoint } from '../DevToolsPluginManager';\n\nexport { DevToolsPluginEndpoint };\n\nexport class DevToolsPluginMiddleware extends ExpoMiddleware {\n constructor(\n projectRoot: string,\n private readonly pluginManager: DevToolsPluginManager\n ) {\n super(projectRoot, [DevToolsPluginEndpoint]);\n }\n\n override shouldHandleRequest(req: ServerRequest): boolean {\n if (!req.url?.startsWith(DevToolsPluginEndpoint)) {\n return false;\n }\n return true;\n }\n\n async handleRequestAsync(req: ServerRequest, res: ServerResponse): Promise<void> {\n assert(req.headers.host, 'Request headers must include host');\n const { pathname } = new URL(req.url ?? '/', `http://${req.headers.host}`);\n const pluginName = this.queryPossiblePluginName(\n pathname.substring(DevToolsPluginEndpoint.length + 1)\n );\n const webpageRoot = await this.pluginManager.queryPluginWebpageRootAsync(pluginName);\n if (!webpageRoot) {\n res.statusCode = 404;\n res.end();\n return;\n }\n\n const pathInPluginRoot =\n pathname.substring(DevToolsPluginEndpoint.length + pluginName.length + 1) || '/';\n send(req, pathInPluginRoot, { root: webpageRoot }).pipe(res);\n }\n\n private queryPossiblePluginName(pathname: string): string {\n const parts = pathname.split('/');\n if (parts[0][0] === '@' && parts.length > 1) {\n // Scoped package name\n return `${parts[0]}/${parts[1]}`;\n }\n return parts[0];\n }\n}\n"],"names":["DevToolsPluginEndpoint","DevToolsPluginMiddleware","ExpoMiddleware","constructor","projectRoot","pluginManager","shouldHandleRequest","req","url","startsWith","handleRequestAsync","res","assert","headers","host","pathname","URL","pluginName","queryPossiblePluginName","substring","length","webpageRoot","queryPluginWebpageRootAsync","statusCode","end","pathInPluginRoot","send","root","pipe","parts","split"],"mappings":"AAAA
|
|
1
|
+
{"version":3,"sources":["../../../../../src/start/server/middleware/DevToolsPluginMiddleware.ts"],"sourcesContent":["import assert from 'assert';\nimport send from 'send';\n\nimport { ExpoMiddleware } from './ExpoMiddleware';\nimport { ServerRequest, ServerResponse } from './server.types';\nimport DevToolsPluginManager, { DevToolsPluginEndpoint } from '../DevToolsPluginManager';\n\nexport { DevToolsPluginEndpoint };\n\nexport class DevToolsPluginMiddleware extends ExpoMiddleware {\n constructor(\n projectRoot: string,\n private readonly pluginManager: DevToolsPluginManager\n ) {\n super(projectRoot, [DevToolsPluginEndpoint]);\n }\n\n override shouldHandleRequest(req: ServerRequest): boolean {\n if (!req.url?.startsWith(DevToolsPluginEndpoint)) {\n return false;\n }\n return true;\n }\n\n async handleRequestAsync(req: ServerRequest, res: ServerResponse): Promise<void> {\n assert(req.headers.host, 'Request headers must include host');\n const { pathname } = new URL(req.url ?? '/', `http://${req.headers.host}`);\n const pluginName = this.queryPossiblePluginName(\n pathname.substring(DevToolsPluginEndpoint.length + 1)\n );\n const webpageRoot = await this.pluginManager.queryPluginWebpageRootAsync(pluginName);\n if (!webpageRoot) {\n res.statusCode = 404;\n res.end();\n return;\n }\n\n const pathInPluginRoot =\n pathname.substring(DevToolsPluginEndpoint.length + pluginName.length + 1) || '/';\n send(req, pathInPluginRoot, { root: webpageRoot }).pipe(res);\n }\n\n private queryPossiblePluginName(pathname: string): string {\n const parts = pathname.split('/');\n if (parts[0][0] === '@' && parts.length > 1) {\n // Scoped package name\n return `${parts[0]}/${parts[1]}`;\n }\n return parts[0];\n }\n}\n"],"names":["DevToolsPluginEndpoint","DevToolsPluginMiddleware","ExpoMiddleware","constructor","projectRoot","pluginManager","shouldHandleRequest","req","url","startsWith","handleRequestAsync","res","assert","headers","host","pathname","URL","pluginName","queryPossiblePluginName","substring","length","webpageRoot","queryPluginWebpageRootAsync","statusCode","end","pathInPluginRoot","send","root","pipe","parts","split"],"mappings":"AAAA;;;;;;;;;;;IAOSA,sBAAsB,MAAtBA,sBAAsB,uBAAA;IAElBC,wBAAwB,MAAxBA,wBAAwB;;;8DATlB,QAAQ;;;;;;;8DACV,MAAM;;;;;;gCAEQ,kBAAkB;uCAEa,0BAA0B;;;;;;AAIjF,MAAMA,wBAAwB,SAASC,eAAc,eAAA;IAC1DC,YACEC,WAAmB,EACFC,aAAoC,CACrD;QACA,KAAK,CAACD,WAAW,EAAE;YAACJ,sBAAsB,uBAAA;SAAC,CAAC,CAAC;QAF5BK,qBAAAA,aAAoC,CAAA;IAGvD;IAESC,mBAAmB,CAACC,GAAkB,EAAW;YACnDA,GAAO;QAAZ,IAAI,EAACA,CAAAA,GAAO,GAAPA,GAAG,CAACC,GAAG,SAAY,GAAnBD,KAAAA,CAAmB,GAAnBA,GAAO,CAAEE,UAAU,CAACT,sBAAsB,uBAAA,CAAC,CAAA,EAAE;YAChD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd;UAEMU,kBAAkB,CAACH,GAAkB,EAAEI,GAAmB,EAAiB;QAC/EC,IAAAA,OAAM,EAAA,QAAA,EAACL,GAAG,CAACM,OAAO,CAACC,IAAI,EAAE,mCAAmC,CAAC,CAAC;YACjCP,IAAO;QAApC,MAAM,EAAEQ,QAAQ,CAAA,EAAE,GAAG,IAAIC,GAAG,CAACT,CAAAA,IAAO,GAAPA,GAAG,CAACC,GAAG,YAAPD,IAAO,GAAI,GAAG,EAAE,CAAC,OAAO,EAAEA,GAAG,CAACM,OAAO,CAACC,IAAI,CAAC,CAAC,CAAC,AAAC;QAC3E,MAAMG,UAAU,GAAG,IAAI,CAACC,uBAAuB,CAC7CH,QAAQ,CAACI,SAAS,CAACnB,sBAAsB,uBAAA,CAACoB,MAAM,GAAG,CAAC,CAAC,CACtD,AAAC;QACF,MAAMC,WAAW,GAAG,MAAM,IAAI,CAAChB,aAAa,CAACiB,2BAA2B,CAACL,UAAU,CAAC,AAAC;QACrF,IAAI,CAACI,WAAW,EAAE;YAChBV,GAAG,CAACY,UAAU,GAAG,GAAG,CAAC;YACrBZ,GAAG,CAACa,GAAG,EAAE,CAAC;YACV,OAAO;QACT,CAAC;QAED,MAAMC,gBAAgB,GACpBV,QAAQ,CAACI,SAAS,CAACnB,sBAAsB,uBAAA,CAACoB,MAAM,GAAGH,UAAU,CAACG,MAAM,GAAG,CAAC,CAAC,IAAI,GAAG,AAAC;QACnFM,IAAAA,KAAI,EAAA,QAAA,EAACnB,GAAG,EAAEkB,gBAAgB,EAAE;YAAEE,IAAI,EAAEN,WAAW;SAAE,CAAC,CAACO,IAAI,CAACjB,GAAG,CAAC,CAAC;IAC/D;IAEQO,uBAAuB,CAACH,QAAgB,EAAU;QACxD,MAAMc,KAAK,GAAGd,QAAQ,CAACe,KAAK,CAAC,GAAG,CAAC,AAAC;QAClC,IAAID,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAIA,KAAK,CAACT,MAAM,GAAG,CAAC,EAAE;YAC3C,sBAAsB;YACtB,OAAO,CAAC,EAAES,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEA,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC;QACD,OAAOA,KAAK,CAAC,CAAC,CAAC,CAAC;IAClB;CACD"}
|
|
@@ -2,20 +2,59 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
|
|
6
|
-
var
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: all[name]
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
ResponseContentType: ()=>ResponseContentType,
|
|
13
|
+
ExpoGoManifestHandlerMiddleware: ()=>ExpoGoManifestHandlerMiddleware
|
|
14
|
+
});
|
|
15
|
+
function _configPlugins() {
|
|
16
|
+
const data = require("@expo/config-plugins");
|
|
17
|
+
_configPlugins = function() {
|
|
18
|
+
return data;
|
|
19
|
+
};
|
|
20
|
+
return data;
|
|
21
|
+
}
|
|
22
|
+
function _accepts() {
|
|
23
|
+
const data = /*#__PURE__*/ _interopRequireDefault(require("accepts"));
|
|
24
|
+
_accepts = function() {
|
|
25
|
+
return data;
|
|
26
|
+
};
|
|
27
|
+
return data;
|
|
28
|
+
}
|
|
29
|
+
function _crypto() {
|
|
30
|
+
const data = /*#__PURE__*/ _interopRequireDefault(require("crypto"));
|
|
31
|
+
_crypto = function() {
|
|
32
|
+
return data;
|
|
33
|
+
};
|
|
34
|
+
return data;
|
|
35
|
+
}
|
|
36
|
+
function _formData() {
|
|
37
|
+
const data = /*#__PURE__*/ _interopRequireDefault(require("form-data"));
|
|
38
|
+
_formData = function() {
|
|
39
|
+
return data;
|
|
40
|
+
};
|
|
41
|
+
return data;
|
|
42
|
+
}
|
|
43
|
+
function _structuredHeaders() {
|
|
44
|
+
const data = require("structured-headers");
|
|
45
|
+
_structuredHeaders = function() {
|
|
46
|
+
return data;
|
|
47
|
+
};
|
|
48
|
+
return data;
|
|
49
|
+
}
|
|
50
|
+
const _manifestMiddleware = require("./ManifestMiddleware");
|
|
51
|
+
const _resolvePlatform = require("./resolvePlatform");
|
|
52
|
+
const _userSettings = /*#__PURE__*/ _interopRequireDefault(require("../../../api/user/UserSettings"));
|
|
53
|
+
const _user = require("../../../api/user/user");
|
|
54
|
+
const _codesigning = require("../../../utils/codesigning");
|
|
55
|
+
const _errors = require("../../../utils/errors");
|
|
56
|
+
const _telemetry = require("../../../utils/telemetry");
|
|
57
|
+
const _url = require("../../../utils/url");
|
|
19
58
|
function _interopRequireDefault(obj) {
|
|
20
59
|
return obj && obj.__esModule ? obj : {
|
|
21
60
|
default: obj
|
|
@@ -23,26 +62,25 @@ function _interopRequireDefault(obj) {
|
|
|
23
62
|
}
|
|
24
63
|
const debug = require("debug")("expo:start:server:middleware:ExpoGoManifestHandlerMiddleware");
|
|
25
64
|
var ResponseContentType;
|
|
26
|
-
exports.ResponseContentType = ResponseContentType;
|
|
27
65
|
(function(ResponseContentType) {
|
|
28
66
|
ResponseContentType[ResponseContentType["TEXT_PLAIN"] = 0] = "TEXT_PLAIN";
|
|
29
67
|
ResponseContentType[ResponseContentType["APPLICATION_JSON"] = 1] = "APPLICATION_JSON";
|
|
30
68
|
ResponseContentType[ResponseContentType["APPLICATION_EXPO_JSON"] = 2] = "APPLICATION_EXPO_JSON";
|
|
31
69
|
ResponseContentType[ResponseContentType["MULTIPART_MIXED"] = 3] = "MULTIPART_MIXED";
|
|
32
|
-
})(ResponseContentType || (
|
|
70
|
+
})(ResponseContentType || (ResponseContentType = {}));
|
|
33
71
|
class ExpoGoManifestHandlerMiddleware extends _manifestMiddleware.ManifestMiddleware {
|
|
34
72
|
getParsedHeaders(req) {
|
|
35
|
-
let platform = (0, _resolvePlatform
|
|
73
|
+
let platform = (0, _resolvePlatform.parsePlatformHeader)(req);
|
|
36
74
|
if (!platform) {
|
|
37
75
|
debug(`No "expo-platform" header or "platform" query parameter specified. Falling back to "ios".`);
|
|
38
76
|
platform = "ios";
|
|
39
77
|
}
|
|
40
|
-
(0, _resolvePlatform
|
|
78
|
+
(0, _resolvePlatform.assertRuntimePlatform)(platform);
|
|
41
79
|
// Expo Updates clients explicitly accept "multipart/mixed" responses while browsers implicitly
|
|
42
80
|
// accept them with "accept: */*". To make it easier to debug manifest responses by visiting their
|
|
43
81
|
// URLs in a browser, we denote the response as "text/plain" if the user agent appears not to be
|
|
44
82
|
// an Expo Updates client.
|
|
45
|
-
const accept = (0, _accepts).default(req);
|
|
83
|
+
const accept = (0, _accepts().default)(req);
|
|
46
84
|
const acceptedType = accept.types([
|
|
47
85
|
"unknown/unknown",
|
|
48
86
|
"multipart/mixed",
|
|
@@ -70,7 +108,7 @@ class ExpoGoManifestHandlerMiddleware extends _manifestMiddleware.ManifestMiddle
|
|
|
70
108
|
responseContentType,
|
|
71
109
|
platform,
|
|
72
110
|
expectSignature: expectSignature ? String(expectSignature) : null,
|
|
73
|
-
hostname: (0, _url
|
|
111
|
+
hostname: (0, _url.stripPort)(req.headers["host"]),
|
|
74
112
|
protocol: req.headers["x-forwarded-proto"]
|
|
75
113
|
};
|
|
76
114
|
}
|
|
@@ -86,7 +124,7 @@ class ExpoGoManifestHandlerMiddleware extends _manifestMiddleware.ManifestMiddle
|
|
|
86
124
|
var ref, ref1;
|
|
87
125
|
const { exp , hostUri , expoGoConfig , bundleUrl } = await this._resolveProjectSettingsAsync(requestOptions);
|
|
88
126
|
var _runtimeVersion;
|
|
89
|
-
const runtimeVersion = await _configPlugins.Updates.getRuntimeVersionAsync(this.projectRoot, {
|
|
127
|
+
const runtimeVersion = await _configPlugins().Updates.getRuntimeVersionAsync(this.projectRoot, {
|
|
90
128
|
...exp,
|
|
91
129
|
runtimeVersion: (_runtimeVersion = exp.runtimeVersion) != null ? _runtimeVersion : {
|
|
92
130
|
policy: "sdkVersion"
|
|
@@ -95,14 +133,14 @@ class ExpoGoManifestHandlerMiddleware extends _manifestMiddleware.ManifestMiddle
|
|
|
95
133
|
if (!runtimeVersion) {
|
|
96
134
|
throw new _errors.CommandError("MANIFEST_MIDDLEWARE", `Unable to determine runtime version for platform '${requestOptions.platform}'`);
|
|
97
135
|
}
|
|
98
|
-
const codeSigningInfo = await (0, _codesigning
|
|
136
|
+
const codeSigningInfo = await (0, _codesigning.getCodeSigningInfoAsync)(exp, requestOptions.expectSignature, this.options.privateKeyPath);
|
|
99
137
|
const easProjectId = (ref = exp.extra) == null ? void 0 : (ref1 = ref.eas) == null ? void 0 : ref1.projectId;
|
|
100
138
|
const scopeKey = await ExpoGoManifestHandlerMiddleware.getScopeKeyAsync({
|
|
101
139
|
slug: exp.slug,
|
|
102
140
|
codeSigningInfo
|
|
103
141
|
});
|
|
104
142
|
const expoUpdatesManifest = {
|
|
105
|
-
id: _crypto.default.randomUUID(),
|
|
143
|
+
id: _crypto().default.randomUUID(),
|
|
106
144
|
createdAt: new Date().toISOString(),
|
|
107
145
|
runtimeVersion,
|
|
108
146
|
launchAsset: {
|
|
@@ -128,9 +166,9 @@ class ExpoGoManifestHandlerMiddleware extends _manifestMiddleware.ManifestMiddle
|
|
|
128
166
|
let manifestPartHeaders = null;
|
|
129
167
|
let certificateChainBody = null;
|
|
130
168
|
if (codeSigningInfo) {
|
|
131
|
-
const signature = (0, _codesigning
|
|
169
|
+
const signature = (0, _codesigning.signManifestString)(stringifiedManifest, codeSigningInfo);
|
|
132
170
|
manifestPartHeaders = {
|
|
133
|
-
"expo-signature": (0, _structuredHeaders).serializeDictionary(convertToDictionaryItemsRepresentation({
|
|
171
|
+
"expo-signature": (0, _structuredHeaders().serializeDictionary)(convertToDictionaryItemsRepresentation({
|
|
134
172
|
keyid: codeSigningInfo.keyId,
|
|
135
173
|
sig: signature,
|
|
136
174
|
alg: "rsa-v1_5-sha256"
|
|
@@ -185,7 +223,7 @@ class ExpoGoManifestHandlerMiddleware extends _manifestMiddleware.ManifestMiddle
|
|
|
185
223
|
}
|
|
186
224
|
}
|
|
187
225
|
getFormData({ stringifiedManifest , manifestPartHeaders , certificateChainBody }) {
|
|
188
|
-
const form = new _formData.default();
|
|
226
|
+
const form = new (_formData()).default();
|
|
189
227
|
form.append("manifest", stringifiedManifest, {
|
|
190
228
|
contentType: "application/json",
|
|
191
229
|
header: {
|
|
@@ -200,7 +238,7 @@ class ExpoGoManifestHandlerMiddleware extends _manifestMiddleware.ManifestMiddle
|
|
|
200
238
|
return form;
|
|
201
239
|
}
|
|
202
240
|
trackManifest(version) {
|
|
203
|
-
(0,
|
|
241
|
+
(0, _telemetry.logEventAsync)("Serve Expo Updates Manifest", {
|
|
204
242
|
runtimeVersion: version
|
|
205
243
|
});
|
|
206
244
|
}
|
|
@@ -217,7 +255,6 @@ class ExpoGoManifestHandlerMiddleware extends _manifestMiddleware.ManifestMiddle
|
|
|
217
255
|
return await getAnonymousScopeKeyAsync(slug);
|
|
218
256
|
}
|
|
219
257
|
}
|
|
220
|
-
exports.ExpoGoManifestHandlerMiddleware = ExpoGoManifestHandlerMiddleware;
|
|
221
258
|
async function getAnonymousScopeKeyAsync(slug) {
|
|
222
259
|
const userAnonymousIdentifier = await _userSettings.default.getAnonymousIdentifierAsync();
|
|
223
260
|
return `@${_user.ANONYMOUS_USERNAME}/${slug}-${userAnonymousIdentifier}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/start/server/middleware/ExpoGoManifestHandlerMiddleware.ts"],"sourcesContent":["import { ExpoUpdatesManifest } from '@expo/config';\nimport { Updates } from '@expo/config-plugins';\nimport accepts from 'accepts';\nimport crypto from 'crypto';\nimport FormData from 'form-data';\nimport { serializeDictionary, Dictionary } from 'structured-headers';\n\nimport { ManifestMiddleware, ManifestRequestInfo } from './ManifestMiddleware';\nimport { assertRuntimePlatform, parsePlatformHeader } from './resolvePlatform';\nimport { ServerHeaders, ServerRequest } from './server.types';\nimport UserSettings from '../../../api/user/UserSettings';\nimport { ANONYMOUS_USERNAME } from '../../../api/user/user';\nimport { logEventAsync } from '../../../utils/analytics/rudderstackClient';\nimport {\n CodeSigningInfo,\n getCodeSigningInfoAsync,\n signManifestString,\n} from '../../../utils/codesigning';\nimport { CommandError } from '../../../utils/errors';\nimport { stripPort } from '../../../utils/url';\n\nconst debug = require('debug')('expo:start:server:middleware:ExpoGoManifestHandlerMiddleware');\n\nexport enum ResponseContentType {\n TEXT_PLAIN,\n APPLICATION_JSON,\n APPLICATION_EXPO_JSON,\n MULTIPART_MIXED,\n}\n\ninterface ExpoGoManifestRequestInfo extends ManifestRequestInfo {\n responseContentType: ResponseContentType;\n expectSignature: string | null;\n}\n\nexport class ExpoGoManifestHandlerMiddleware extends ManifestMiddleware<ExpoGoManifestRequestInfo> {\n public getParsedHeaders(req: ServerRequest): ExpoGoManifestRequestInfo {\n let platform = parsePlatformHeader(req);\n\n if (!platform) {\n debug(\n `No \"expo-platform\" header or \"platform\" query parameter specified. Falling back to \"ios\".`\n );\n platform = 'ios';\n }\n\n assertRuntimePlatform(platform);\n\n // Expo Updates clients explicitly accept \"multipart/mixed\" responses while browsers implicitly\n // accept them with \"accept: */*\". To make it easier to debug manifest responses by visiting their\n // URLs in a browser, we denote the response as \"text/plain\" if the user agent appears not to be\n // an Expo Updates client.\n const accept = accepts(req);\n const acceptedType = accept.types([\n 'unknown/unknown',\n 'multipart/mixed',\n 'application/json',\n 'application/expo+json',\n 'text/plain',\n ]);\n\n let responseContentType;\n switch (acceptedType) {\n case 'multipart/mixed':\n responseContentType = ResponseContentType.MULTIPART_MIXED;\n break;\n case 'application/json':\n responseContentType = ResponseContentType.APPLICATION_JSON;\n break;\n case 'application/expo+json':\n responseContentType = ResponseContentType.APPLICATION_EXPO_JSON;\n break;\n default:\n responseContentType = ResponseContentType.TEXT_PLAIN;\n break;\n }\n\n const expectSignature = req.headers['expo-expect-signature'];\n\n return {\n responseContentType,\n platform,\n expectSignature: expectSignature ? String(expectSignature) : null,\n hostname: stripPort(req.headers['host']),\n protocol: req.headers['x-forwarded-proto'] as 'http' | 'https' | undefined,\n };\n }\n\n private getDefaultResponseHeaders(): ServerHeaders {\n const headers = new Map<string, number | string | readonly string[]>();\n // set required headers for Expo Updates manifest specification\n headers.set('expo-protocol-version', 0);\n headers.set('expo-sfv-version', 0);\n headers.set('cache-control', 'private, max-age=0');\n return headers;\n }\n\n public async _getManifestResponseAsync(requestOptions: ExpoGoManifestRequestInfo): Promise<{\n body: string;\n version: string;\n headers: ServerHeaders;\n }> {\n const { exp, hostUri, expoGoConfig, bundleUrl } =\n await this._resolveProjectSettingsAsync(requestOptions);\n\n const runtimeVersion = await Updates.getRuntimeVersionAsync(\n this.projectRoot,\n { ...exp, runtimeVersion: exp.runtimeVersion ?? { policy: 'sdkVersion' } },\n requestOptions.platform\n );\n if (!runtimeVersion) {\n throw new CommandError(\n 'MANIFEST_MIDDLEWARE',\n `Unable to determine runtime version for platform '${requestOptions.platform}'`\n );\n }\n\n const codeSigningInfo = await getCodeSigningInfoAsync(\n exp,\n requestOptions.expectSignature,\n this.options.privateKeyPath\n );\n\n const easProjectId = exp.extra?.eas?.projectId as string | undefined | null;\n const scopeKey = await ExpoGoManifestHandlerMiddleware.getScopeKeyAsync({\n slug: exp.slug,\n codeSigningInfo,\n });\n\n const expoUpdatesManifest: ExpoUpdatesManifest = {\n id: crypto.randomUUID(),\n createdAt: new Date().toISOString(),\n runtimeVersion,\n launchAsset: {\n key: 'bundle',\n contentType: 'application/javascript',\n url: bundleUrl,\n },\n assets: [], // assets are not used in development\n metadata: {}, // required for the client to detect that this is an expo-updates manifest\n extra: {\n eas: {\n projectId: easProjectId ?? undefined,\n },\n expoClient: {\n ...exp,\n hostUri,\n },\n expoGo: expoGoConfig,\n scopeKey,\n },\n };\n\n const stringifiedManifest = JSON.stringify(expoUpdatesManifest);\n\n let manifestPartHeaders: { 'expo-signature': string } | null = null;\n let certificateChainBody: string | null = null;\n if (codeSigningInfo) {\n const signature = signManifestString(stringifiedManifest, codeSigningInfo);\n manifestPartHeaders = {\n 'expo-signature': serializeDictionary(\n convertToDictionaryItemsRepresentation({\n keyid: codeSigningInfo.keyId,\n sig: signature,\n alg: 'rsa-v1_5-sha256',\n })\n ),\n };\n certificateChainBody = codeSigningInfo.certificateChainForResponse.join('\\n');\n }\n\n const headers = this.getDefaultResponseHeaders();\n\n switch (requestOptions.responseContentType) {\n case ResponseContentType.MULTIPART_MIXED: {\n const form = this.getFormData({\n stringifiedManifest,\n manifestPartHeaders,\n certificateChainBody,\n });\n headers.set('content-type', `multipart/mixed; boundary=${form.getBoundary()}`);\n return {\n body: form.getBuffer().toString(),\n version: runtimeVersion,\n headers,\n };\n }\n case ResponseContentType.APPLICATION_EXPO_JSON:\n case ResponseContentType.APPLICATION_JSON:\n case ResponseContentType.TEXT_PLAIN: {\n headers.set(\n 'content-type',\n ExpoGoManifestHandlerMiddleware.getContentTypeForResponseContentType(\n requestOptions.responseContentType\n )\n );\n if (manifestPartHeaders) {\n Object.entries(manifestPartHeaders).forEach(([key, value]) => {\n headers.set(key, value);\n });\n }\n\n return {\n body: stringifiedManifest,\n version: runtimeVersion,\n headers,\n };\n }\n }\n }\n\n private static getContentTypeForResponseContentType(\n responseContentType: ResponseContentType\n ): string {\n switch (responseContentType) {\n case ResponseContentType.MULTIPART_MIXED:\n return 'multipart/mixed';\n case ResponseContentType.APPLICATION_EXPO_JSON:\n return 'application/expo+json';\n case ResponseContentType.APPLICATION_JSON:\n return 'application/json';\n case ResponseContentType.TEXT_PLAIN:\n return 'text/plain';\n }\n }\n\n private getFormData({\n stringifiedManifest,\n manifestPartHeaders,\n certificateChainBody,\n }: {\n stringifiedManifest: string;\n manifestPartHeaders: { 'expo-signature': string } | null;\n certificateChainBody: string | null;\n }): FormData {\n const form = new FormData();\n form.append('manifest', stringifiedManifest, {\n contentType: 'application/json',\n header: {\n ...manifestPartHeaders,\n },\n });\n if (certificateChainBody && certificateChainBody.length > 0) {\n form.append('certificate_chain', certificateChainBody, {\n contentType: 'application/x-pem-file',\n });\n }\n return form;\n }\n\n protected trackManifest(version?: string) {\n logEventAsync('Serve Expo Updates Manifest', {\n runtimeVersion: version,\n });\n }\n\n private static async getScopeKeyAsync({\n slug,\n codeSigningInfo,\n }: {\n slug: string;\n codeSigningInfo: CodeSigningInfo | null;\n }): Promise<string> {\n const scopeKeyFromCodeSigningInfo = codeSigningInfo?.scopeKey;\n if (scopeKeyFromCodeSigningInfo) {\n return scopeKeyFromCodeSigningInfo;\n }\n\n // Log.warn(\n // env.EXPO_OFFLINE\n // ? 'Using anonymous scope key in manifest for offline mode.'\n // : 'Using anonymous scope key in manifest.'\n // );\n return await getAnonymousScopeKeyAsync(slug);\n }\n}\n\nasync function getAnonymousScopeKeyAsync(slug: string): Promise<string> {\n const userAnonymousIdentifier = await UserSettings.getAnonymousIdentifierAsync();\n return `@${ANONYMOUS_USERNAME}/${slug}-${userAnonymousIdentifier}`;\n}\n\nfunction convertToDictionaryItemsRepresentation(obj: { [key: string]: string }): Dictionary {\n return new Map(\n Object.entries(obj).map(([k, v]) => {\n return [k, [v, new Map()]];\n })\n );\n}\n"],"names":["debug","require","ResponseContentType","TEXT_PLAIN","APPLICATION_JSON","APPLICATION_EXPO_JSON","MULTIPART_MIXED","ExpoGoManifestHandlerMiddleware","ManifestMiddleware","getParsedHeaders","req","platform","parsePlatformHeader","assertRuntimePlatform","accept","accepts","acceptedType","types","responseContentType","expectSignature","headers","String","hostname","stripPort","protocol","getDefaultResponseHeaders","Map","set","_getManifestResponseAsync","requestOptions","exp","hostUri","expoGoConfig","bundleUrl","_resolveProjectSettingsAsync","runtimeVersion","Updates","getRuntimeVersionAsync","projectRoot","policy","CommandError","codeSigningInfo","getCodeSigningInfoAsync","options","privateKeyPath","easProjectId","extra","eas","projectId","scopeKey","getScopeKeyAsync","slug","expoUpdatesManifest","id","crypto","randomUUID","createdAt","Date","toISOString","launchAsset","key","contentType","url","assets","metadata","undefined","expoClient","expoGo","stringifiedManifest","JSON","stringify","manifestPartHeaders","certificateChainBody","signature","signManifestString","serializeDictionary","convertToDictionaryItemsRepresentation","keyid","keyId","sig","alg","certificateChainForResponse","join","form","getFormData","getBoundary","body","getBuffer","toString","version","getContentTypeForResponseContentType","Object","entries","forEach","value","FormData","append","header","length","trackManifest","logEventAsync","scopeKeyFromCodeSigningInfo","getAnonymousScopeKeyAsync","userAnonymousIdentifier","UserSettings","getAnonymousIdentifierAsync","ANONYMOUS_USERNAME","obj","map","k","v"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../src/start/server/middleware/ExpoGoManifestHandlerMiddleware.ts"],"sourcesContent":["import { ExpoUpdatesManifest } from '@expo/config';\nimport { Updates } from '@expo/config-plugins';\nimport accepts from 'accepts';\nimport crypto from 'crypto';\nimport FormData from 'form-data';\nimport { serializeDictionary, Dictionary } from 'structured-headers';\n\nimport { ManifestMiddleware, ManifestRequestInfo } from './ManifestMiddleware';\nimport { assertRuntimePlatform, parsePlatformHeader } from './resolvePlatform';\nimport { ServerHeaders, ServerRequest } from './server.types';\nimport UserSettings from '../../../api/user/UserSettings';\nimport { ANONYMOUS_USERNAME } from '../../../api/user/user';\nimport {\n CodeSigningInfo,\n getCodeSigningInfoAsync,\n signManifestString,\n} from '../../../utils/codesigning';\nimport { CommandError } from '../../../utils/errors';\nimport { logEventAsync } from '../../../utils/telemetry';\nimport { stripPort } from '../../../utils/url';\n\nconst debug = require('debug')('expo:start:server:middleware:ExpoGoManifestHandlerMiddleware');\n\nexport enum ResponseContentType {\n TEXT_PLAIN,\n APPLICATION_JSON,\n APPLICATION_EXPO_JSON,\n MULTIPART_MIXED,\n}\n\ninterface ExpoGoManifestRequestInfo extends ManifestRequestInfo {\n responseContentType: ResponseContentType;\n expectSignature: string | null;\n}\n\nexport class ExpoGoManifestHandlerMiddleware extends ManifestMiddleware<ExpoGoManifestRequestInfo> {\n public getParsedHeaders(req: ServerRequest): ExpoGoManifestRequestInfo {\n let platform = parsePlatformHeader(req);\n\n if (!platform) {\n debug(\n `No \"expo-platform\" header or \"platform\" query parameter specified. Falling back to \"ios\".`\n );\n platform = 'ios';\n }\n\n assertRuntimePlatform(platform);\n\n // Expo Updates clients explicitly accept \"multipart/mixed\" responses while browsers implicitly\n // accept them with \"accept: */*\". To make it easier to debug manifest responses by visiting their\n // URLs in a browser, we denote the response as \"text/plain\" if the user agent appears not to be\n // an Expo Updates client.\n const accept = accepts(req);\n const acceptedType = accept.types([\n 'unknown/unknown',\n 'multipart/mixed',\n 'application/json',\n 'application/expo+json',\n 'text/plain',\n ]);\n\n let responseContentType;\n switch (acceptedType) {\n case 'multipart/mixed':\n responseContentType = ResponseContentType.MULTIPART_MIXED;\n break;\n case 'application/json':\n responseContentType = ResponseContentType.APPLICATION_JSON;\n break;\n case 'application/expo+json':\n responseContentType = ResponseContentType.APPLICATION_EXPO_JSON;\n break;\n default:\n responseContentType = ResponseContentType.TEXT_PLAIN;\n break;\n }\n\n const expectSignature = req.headers['expo-expect-signature'];\n\n return {\n responseContentType,\n platform,\n expectSignature: expectSignature ? String(expectSignature) : null,\n hostname: stripPort(req.headers['host']),\n protocol: req.headers['x-forwarded-proto'] as 'http' | 'https' | undefined,\n };\n }\n\n private getDefaultResponseHeaders(): ServerHeaders {\n const headers = new Map<string, number | string | readonly string[]>();\n // set required headers for Expo Updates manifest specification\n headers.set('expo-protocol-version', 0);\n headers.set('expo-sfv-version', 0);\n headers.set('cache-control', 'private, max-age=0');\n return headers;\n }\n\n public async _getManifestResponseAsync(requestOptions: ExpoGoManifestRequestInfo): Promise<{\n body: string;\n version: string;\n headers: ServerHeaders;\n }> {\n const { exp, hostUri, expoGoConfig, bundleUrl } =\n await this._resolveProjectSettingsAsync(requestOptions);\n\n const runtimeVersion = await Updates.getRuntimeVersionAsync(\n this.projectRoot,\n { ...exp, runtimeVersion: exp.runtimeVersion ?? { policy: 'sdkVersion' } },\n requestOptions.platform\n );\n if (!runtimeVersion) {\n throw new CommandError(\n 'MANIFEST_MIDDLEWARE',\n `Unable to determine runtime version for platform '${requestOptions.platform}'`\n );\n }\n\n const codeSigningInfo = await getCodeSigningInfoAsync(\n exp,\n requestOptions.expectSignature,\n this.options.privateKeyPath\n );\n\n const easProjectId = exp.extra?.eas?.projectId as string | undefined | null;\n const scopeKey = await ExpoGoManifestHandlerMiddleware.getScopeKeyAsync({\n slug: exp.slug,\n codeSigningInfo,\n });\n\n const expoUpdatesManifest: ExpoUpdatesManifest = {\n id: crypto.randomUUID(),\n createdAt: new Date().toISOString(),\n runtimeVersion,\n launchAsset: {\n key: 'bundle',\n contentType: 'application/javascript',\n url: bundleUrl,\n },\n assets: [], // assets are not used in development\n metadata: {}, // required for the client to detect that this is an expo-updates manifest\n extra: {\n eas: {\n projectId: easProjectId ?? undefined,\n },\n expoClient: {\n ...exp,\n hostUri,\n },\n expoGo: expoGoConfig,\n scopeKey,\n },\n };\n\n const stringifiedManifest = JSON.stringify(expoUpdatesManifest);\n\n let manifestPartHeaders: { 'expo-signature': string } | null = null;\n let certificateChainBody: string | null = null;\n if (codeSigningInfo) {\n const signature = signManifestString(stringifiedManifest, codeSigningInfo);\n manifestPartHeaders = {\n 'expo-signature': serializeDictionary(\n convertToDictionaryItemsRepresentation({\n keyid: codeSigningInfo.keyId,\n sig: signature,\n alg: 'rsa-v1_5-sha256',\n })\n ),\n };\n certificateChainBody = codeSigningInfo.certificateChainForResponse.join('\\n');\n }\n\n const headers = this.getDefaultResponseHeaders();\n\n switch (requestOptions.responseContentType) {\n case ResponseContentType.MULTIPART_MIXED: {\n const form = this.getFormData({\n stringifiedManifest,\n manifestPartHeaders,\n certificateChainBody,\n });\n headers.set('content-type', `multipart/mixed; boundary=${form.getBoundary()}`);\n return {\n body: form.getBuffer().toString(),\n version: runtimeVersion,\n headers,\n };\n }\n case ResponseContentType.APPLICATION_EXPO_JSON:\n case ResponseContentType.APPLICATION_JSON:\n case ResponseContentType.TEXT_PLAIN: {\n headers.set(\n 'content-type',\n ExpoGoManifestHandlerMiddleware.getContentTypeForResponseContentType(\n requestOptions.responseContentType\n )\n );\n if (manifestPartHeaders) {\n Object.entries(manifestPartHeaders).forEach(([key, value]) => {\n headers.set(key, value);\n });\n }\n\n return {\n body: stringifiedManifest,\n version: runtimeVersion,\n headers,\n };\n }\n }\n }\n\n private static getContentTypeForResponseContentType(\n responseContentType: ResponseContentType\n ): string {\n switch (responseContentType) {\n case ResponseContentType.MULTIPART_MIXED:\n return 'multipart/mixed';\n case ResponseContentType.APPLICATION_EXPO_JSON:\n return 'application/expo+json';\n case ResponseContentType.APPLICATION_JSON:\n return 'application/json';\n case ResponseContentType.TEXT_PLAIN:\n return 'text/plain';\n }\n }\n\n private getFormData({\n stringifiedManifest,\n manifestPartHeaders,\n certificateChainBody,\n }: {\n stringifiedManifest: string;\n manifestPartHeaders: { 'expo-signature': string } | null;\n certificateChainBody: string | null;\n }): FormData {\n const form = new FormData();\n form.append('manifest', stringifiedManifest, {\n contentType: 'application/json',\n header: {\n ...manifestPartHeaders,\n },\n });\n if (certificateChainBody && certificateChainBody.length > 0) {\n form.append('certificate_chain', certificateChainBody, {\n contentType: 'application/x-pem-file',\n });\n }\n return form;\n }\n\n protected trackManifest(version?: string) {\n logEventAsync('Serve Expo Updates Manifest', {\n runtimeVersion: version,\n });\n }\n\n private static async getScopeKeyAsync({\n slug,\n codeSigningInfo,\n }: {\n slug: string;\n codeSigningInfo: CodeSigningInfo | null;\n }): Promise<string> {\n const scopeKeyFromCodeSigningInfo = codeSigningInfo?.scopeKey;\n if (scopeKeyFromCodeSigningInfo) {\n return scopeKeyFromCodeSigningInfo;\n }\n\n // Log.warn(\n // env.EXPO_OFFLINE\n // ? 'Using anonymous scope key in manifest for offline mode.'\n // : 'Using anonymous scope key in manifest.'\n // );\n return await getAnonymousScopeKeyAsync(slug);\n }\n}\n\nasync function getAnonymousScopeKeyAsync(slug: string): Promise<string> {\n const userAnonymousIdentifier = await UserSettings.getAnonymousIdentifierAsync();\n return `@${ANONYMOUS_USERNAME}/${slug}-${userAnonymousIdentifier}`;\n}\n\nfunction convertToDictionaryItemsRepresentation(obj: { [key: string]: string }): Dictionary {\n return new Map(\n Object.entries(obj).map(([k, v]) => {\n return [k, [v, new Map()]];\n })\n );\n}\n"],"names":["ExpoGoManifestHandlerMiddleware","debug","require","ResponseContentType","TEXT_PLAIN","APPLICATION_JSON","APPLICATION_EXPO_JSON","MULTIPART_MIXED","ManifestMiddleware","getParsedHeaders","req","platform","parsePlatformHeader","assertRuntimePlatform","accept","accepts","acceptedType","types","responseContentType","expectSignature","headers","String","hostname","stripPort","protocol","getDefaultResponseHeaders","Map","set","_getManifestResponseAsync","requestOptions","exp","hostUri","expoGoConfig","bundleUrl","_resolveProjectSettingsAsync","runtimeVersion","Updates","getRuntimeVersionAsync","projectRoot","policy","CommandError","codeSigningInfo","getCodeSigningInfoAsync","options","privateKeyPath","easProjectId","extra","eas","projectId","scopeKey","getScopeKeyAsync","slug","expoUpdatesManifest","id","crypto","randomUUID","createdAt","Date","toISOString","launchAsset","key","contentType","url","assets","metadata","undefined","expoClient","expoGo","stringifiedManifest","JSON","stringify","manifestPartHeaders","certificateChainBody","signature","signManifestString","serializeDictionary","convertToDictionaryItemsRepresentation","keyid","keyId","sig","alg","certificateChainForResponse","join","form","getFormData","getBoundary","body","getBuffer","toString","version","getContentTypeForResponseContentType","Object","entries","forEach","value","FormData","append","header","length","trackManifest","logEventAsync","scopeKeyFromCodeSigningInfo","getAnonymousScopeKeyAsync","userAnonymousIdentifier","UserSettings","getAnonymousIdentifierAsync","ANONYMOUS_USERNAME","obj","map","k","v"],"mappings":"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"}
|
|
@@ -2,29 +2,62 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
|
|
6
|
-
var
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: all[name]
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
ExpoMiddleware: ()=>ExpoMiddleware,
|
|
13
|
+
disableResponseCache: ()=>disableResponseCache
|
|
14
|
+
});
|
|
15
|
+
function _url() {
|
|
16
|
+
const data = require("url");
|
|
17
|
+
_url = function() {
|
|
18
|
+
return data;
|
|
19
|
+
};
|
|
20
|
+
return data;
|
|
21
|
+
}
|
|
22
|
+
const _log = /*#__PURE__*/ _interopRequireWildcard(require("../../../log"));
|
|
23
|
+
function _getRequireWildcardCache(nodeInterop) {
|
|
24
|
+
if (typeof WeakMap !== "function") return null;
|
|
25
|
+
var cacheBabelInterop = new WeakMap();
|
|
26
|
+
var cacheNodeInterop = new WeakMap();
|
|
27
|
+
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
28
|
+
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
29
|
+
})(nodeInterop);
|
|
30
|
+
}
|
|
31
|
+
function _interopRequireWildcard(obj, nodeInterop) {
|
|
32
|
+
if (!nodeInterop && obj && obj.__esModule) {
|
|
10
33
|
return obj;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
34
|
+
}
|
|
35
|
+
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
36
|
+
return {
|
|
37
|
+
default: obj
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
var cache = _getRequireWildcardCache(nodeInterop);
|
|
41
|
+
if (cache && cache.has(obj)) {
|
|
42
|
+
return cache.get(obj);
|
|
43
|
+
}
|
|
44
|
+
var newObj = {};
|
|
45
|
+
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
46
|
+
for(var key in obj){
|
|
47
|
+
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
48
|
+
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
49
|
+
if (desc && (desc.get || desc.set)) {
|
|
50
|
+
Object.defineProperty(newObj, key, desc);
|
|
51
|
+
} else {
|
|
52
|
+
newObj[key] = obj[key];
|
|
23
53
|
}
|
|
24
54
|
}
|
|
25
|
-
newObj.default = obj;
|
|
26
|
-
return newObj;
|
|
27
55
|
}
|
|
56
|
+
newObj.default = obj;
|
|
57
|
+
if (cache) {
|
|
58
|
+
cache.set(obj, newObj);
|
|
59
|
+
}
|
|
60
|
+
return newObj;
|
|
28
61
|
}
|
|
29
62
|
class ExpoMiddleware {
|
|
30
63
|
constructor(projectRoot, supportedPaths){
|
|
@@ -38,7 +71,7 @@ class ExpoMiddleware {
|
|
|
38
71
|
if (!req.url) {
|
|
39
72
|
return false;
|
|
40
73
|
}
|
|
41
|
-
const parsed = (0, _url).parse(req.url);
|
|
74
|
+
const parsed = (0, _url().parse)(req.url);
|
|
42
75
|
// Strip the query params
|
|
43
76
|
if (!parsed.pathname) {
|
|
44
77
|
return false;
|
|
@@ -50,7 +83,7 @@ class ExpoMiddleware {
|
|
|
50
83
|
try {
|
|
51
84
|
return await this.handleRequestAsync(req, res, next);
|
|
52
85
|
} catch (error) {
|
|
53
|
-
|
|
86
|
+
_log.exception(error);
|
|
54
87
|
// 5xx = Server Error HTTP code
|
|
55
88
|
res.statusCode = 500;
|
|
56
89
|
if (typeof error === "object" && error !== null) {
|
|
@@ -72,7 +105,6 @@ class ExpoMiddleware {
|
|
|
72
105
|
return middleware;
|
|
73
106
|
}
|
|
74
107
|
}
|
|
75
|
-
exports.ExpoMiddleware = ExpoMiddleware;
|
|
76
108
|
function disableResponseCache(res) {
|
|
77
109
|
res.setHeader("Cache-Control", "private, no-cache, no-store, must-revalidate");
|
|
78
110
|
res.setHeader("Expires", "-1");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/start/server/middleware/ExpoMiddleware.ts"],"sourcesContent":["import { parse } from 'url';\n\nimport { ServerNext, ServerRequest, ServerResponse } from './server.types';\nimport * as Log from '../../../log';\n\n/** Base middleware creator for Expo dev servers. */\nexport abstract class ExpoMiddleware {\n constructor(\n protected projectRoot: string,\n protected supportedPaths: string[]\n ) {}\n\n /**\n * Returns true when the middleware should handle the incoming server request.\n * Exposed for testing.\n */\n public shouldHandleRequest(req: ServerRequest): boolean {\n if (!req.url) {\n return false;\n }\n const parsed = parse(req.url);\n // Strip the query params\n if (!parsed.pathname) {\n return false;\n }\n\n return this.supportedPaths.includes(parsed.pathname);\n }\n\n abstract handleRequestAsync(\n req: ServerRequest,\n res: ServerResponse,\n next: ServerNext\n ): Promise<void>;\n\n /** Create a server middleware handler. */\n public getHandler() {\n const internalMiddleware = async (\n req: ServerRequest,\n res: ServerResponse,\n next: ServerNext\n ) => {\n try {\n return await this.handleRequestAsync(req, res, next);\n } catch (error: any) {\n Log.exception(error);\n // 5xx = Server Error HTTP code\n res.statusCode = 500;\n if (typeof error === 'object' && error !== null) {\n res.end(\n JSON.stringify({\n error: error.toString(),\n })\n );\n } else {\n res.end(`Unexpected error: ${error}`);\n }\n }\n };\n const middleware = async (req: ServerRequest, res: ServerResponse, next: ServerNext) => {\n if (!this.shouldHandleRequest(req)) {\n return next();\n }\n return internalMiddleware(req, res, next);\n };\n\n middleware.internal = internalMiddleware;\n\n return middleware;\n }\n}\n\nexport function disableResponseCache(res: ServerResponse): ServerResponse {\n res.setHeader('Cache-Control', 'private, no-cache, no-store, must-revalidate');\n res.setHeader('Expires', '-1');\n res.setHeader('Pragma', 'no-cache');\n return res;\n}\n"],"names":["
|
|
1
|
+
{"version":3,"sources":["../../../../../src/start/server/middleware/ExpoMiddleware.ts"],"sourcesContent":["import { parse } from 'url';\n\nimport { ServerNext, ServerRequest, ServerResponse } from './server.types';\nimport * as Log from '../../../log';\n\n/** Base middleware creator for Expo dev servers. */\nexport abstract class ExpoMiddleware {\n constructor(\n protected projectRoot: string,\n protected supportedPaths: string[]\n ) {}\n\n /**\n * Returns true when the middleware should handle the incoming server request.\n * Exposed for testing.\n */\n public shouldHandleRequest(req: ServerRequest): boolean {\n if (!req.url) {\n return false;\n }\n const parsed = parse(req.url);\n // Strip the query params\n if (!parsed.pathname) {\n return false;\n }\n\n return this.supportedPaths.includes(parsed.pathname);\n }\n\n abstract handleRequestAsync(\n req: ServerRequest,\n res: ServerResponse,\n next: ServerNext\n ): Promise<void>;\n\n /** Create a server middleware handler. */\n public getHandler() {\n const internalMiddleware = async (\n req: ServerRequest,\n res: ServerResponse,\n next: ServerNext\n ) => {\n try {\n return await this.handleRequestAsync(req, res, next);\n } catch (error: any) {\n Log.exception(error);\n // 5xx = Server Error HTTP code\n res.statusCode = 500;\n if (typeof error === 'object' && error !== null) {\n res.end(\n JSON.stringify({\n error: error.toString(),\n })\n );\n } else {\n res.end(`Unexpected error: ${error}`);\n }\n }\n };\n const middleware = async (req: ServerRequest, res: ServerResponse, next: ServerNext) => {\n if (!this.shouldHandleRequest(req)) {\n return next();\n }\n return internalMiddleware(req, res, next);\n };\n\n middleware.internal = internalMiddleware;\n\n return middleware;\n }\n}\n\nexport function disableResponseCache(res: ServerResponse): ServerResponse {\n res.setHeader('Cache-Control', 'private, no-cache, no-store, must-revalidate');\n res.setHeader('Expires', '-1');\n res.setHeader('Pragma', 'no-cache');\n return res;\n}\n"],"names":["ExpoMiddleware","disableResponseCache","constructor","projectRoot","supportedPaths","shouldHandleRequest","req","url","parsed","parse","pathname","includes","getHandler","internalMiddleware","res","next","handleRequestAsync","error","Log","exception","statusCode","end","JSON","stringify","toString","middleware","internal","setHeader"],"mappings":"AAAA;;;;;;;;;;;IAMsBA,cAAc,MAAdA,cAAc;IAkEpBC,oBAAoB,MAApBA,oBAAoB;;;yBAxEd,KAAK;;;;;;2DAGN,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAG5B,MAAeD,cAAc;IAClCE,YACYC,WAAmB,EACnBC,cAAwB,CAClC;QAFUD,mBAAAA,WAAmB,CAAA;QACnBC,sBAAAA,cAAwB,CAAA;IACjC;IAEH;;;GAGC,GACMC,mBAAmB,CAACC,GAAkB,EAAW;QACtD,IAAI,CAACA,GAAG,CAACC,GAAG,EAAE;YACZ,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAMC,MAAM,GAAGC,IAAAA,IAAK,EAAA,MAAA,EAACH,GAAG,CAACC,GAAG,CAAC,AAAC;QAC9B,yBAAyB;QACzB,IAAI,CAACC,MAAM,CAACE,QAAQ,EAAE;YACpB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAACN,cAAc,CAACO,QAAQ,CAACH,MAAM,CAACE,QAAQ,CAAC,CAAC;IACvD;IAQA,wCAAwC,GACjCE,UAAU,GAAG;QAClB,MAAMC,kBAAkB,GAAG,OACzBP,GAAkB,EAClBQ,GAAmB,EACnBC,IAAgB,GACb;YACH,IAAI;gBACF,OAAO,MAAM,IAAI,CAACC,kBAAkB,CAACV,GAAG,EAAEQ,GAAG,EAAEC,IAAI,CAAC,CAAC;YACvD,EAAE,OAAOE,KAAK,EAAO;gBACnBC,IAAG,CAACC,SAAS,CAACF,KAAK,CAAC,CAAC;gBACrB,+BAA+B;gBAC/BH,GAAG,CAACM,UAAU,GAAG,GAAG,CAAC;gBACrB,IAAI,OAAOH,KAAK,KAAK,QAAQ,IAAIA,KAAK,KAAK,IAAI,EAAE;oBAC/CH,GAAG,CAACO,GAAG,CACLC,IAAI,CAACC,SAAS,CAAC;wBACbN,KAAK,EAAEA,KAAK,CAACO,QAAQ,EAAE;qBACxB,CAAC,CACH,CAAC;gBACJ,OAAO;oBACLV,GAAG,CAACO,GAAG,CAAC,CAAC,kBAAkB,EAAEJ,KAAK,CAAC,CAAC,CAAC,CAAC;gBACxC,CAAC;YACH,CAAC;QACH,CAAC,AAAC;QACF,MAAMQ,UAAU,GAAG,OAAOnB,GAAkB,EAAEQ,GAAmB,EAAEC,IAAgB,GAAK;YACtF,IAAI,CAAC,IAAI,CAACV,mBAAmB,CAACC,GAAG,CAAC,EAAE;gBAClC,OAAOS,IAAI,EAAE,CAAC;YAChB,CAAC;YACD,OAAOF,kBAAkB,CAACP,GAAG,EAAEQ,GAAG,EAAEC,IAAI,CAAC,CAAC;QAC5C,CAAC,AAAC;QAEFU,UAAU,CAACC,QAAQ,GAAGb,kBAAkB,CAAC;QAEzC,OAAOY,UAAU,CAAC;IACpB;CACD;AAEM,SAASxB,oBAAoB,CAACa,GAAmB,EAAkB;IACxEA,GAAG,CAACa,SAAS,CAAC,eAAe,EAAE,8CAA8C,CAAC,CAAC;IAC/Eb,GAAG,CAACa,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC/Bb,GAAG,CAACa,SAAS,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACpC,OAAOb,GAAG,CAAC;AACb,CAAC"}
|