@hot-updater/react-native 1.0.0-rc.3 → 1.0.0-rc.31
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/android/proguard-rules.pro +17 -2
- package/android/src/main/java/com/hotupdater/BuiltInAssetResolver.kt +286 -0
- package/android/src/main/java/com/hotupdater/BundleFileStorageService.kt +954 -837
- package/android/src/main/java/com/hotupdater/BundleMetadata.kt +15 -11
- package/android/src/main/java/com/hotupdater/FileManagerService.kt +45 -0
- package/android/src/main/java/com/hotupdater/HotUpdaterException.kt +287 -22
- package/android/src/main/java/com/hotupdater/HotUpdaterImpl.kt +43 -31
- package/android/src/main/java/com/hotupdater/HotUpdaterRecoveryManager.kt +37 -54
- package/android/src/main/java/com/hotupdater/HotUpdaterRecoveryState.kt +64 -0
- package/android/src/main/java/com/hotupdater/InstallIdentityService.kt +37 -0
- package/android/src/main/java/com/hotupdater/KeyValueStorageService.kt +86 -0
- package/android/src/main/java/com/hotupdater/NetworkState.kt +31 -0
- package/android/src/main/java/com/hotupdater/NoBackupStorage.kt +17 -0
- package/android/src/main/java/com/hotupdater/OkHttpDownloadService.kt +127 -50
- package/android/src/main/java/com/hotupdater/PreviousProcessExit.kt +89 -0
- package/android/src/main/java/com/hotupdater/ReactNativeValueConverters.kt +34 -0
- package/android/src/main/java/com/hotupdater/TarArchiveInputStream.kt +214 -375
- package/android/src/main/java/com/hotupdater/TarBrArchiveExtractor.kt +119 -0
- package/android/src/newarch/HotUpdater.kt +7 -9
- package/android/src/newarch/HotUpdaterModule.kt +109 -84
- package/android/src/oldarch/HotUpdater.kt +7 -9
- package/android/src/oldarch/HotUpdaterModule.kt +98 -74
- package/android/src/oldarch/HotUpdaterSpec.kt +4 -6
- package/ios/HotUpdater/Internal/BrotliFileDecompressor.swift +167 -0
- package/ios/HotUpdater/Internal/BuiltInAssetResolver.swift +196 -0
- package/ios/HotUpdater/Internal/BundleFileStorageService.swift +950 -1112
- package/ios/HotUpdater/Internal/BundleMetadata.swift +8 -53
- package/ios/HotUpdater/Internal/FileManagerService.swift +48 -0
- package/ios/HotUpdater/Internal/FileUtilities.swift +64 -0
- package/ios/HotUpdater/Internal/HotUpdater-Bridging-Header.h +0 -1
- package/ios/HotUpdater/Internal/HotUpdater.mm +13 -45
- package/ios/HotUpdater/Internal/HotUpdaterImpl.swift +190 -73
- package/ios/HotUpdater/Internal/KeyValueStorageService.swift +71 -0
- package/ios/HotUpdater/Internal/NotificationExtension.swift +0 -2
- package/ios/HotUpdater/Internal/TarArchiveExtractor.swift +182 -311
- package/ios/HotUpdater/Internal/URLSessionDownloadService.swift +119 -71
- package/ios/HotUpdater/Internal/UpdateFailure.swift +390 -0
- package/ios/HotUpdater/Recovery/HotUpdaterRecovery.h +16 -0
- package/ios/HotUpdater/Recovery/HotUpdaterRecovery.mm +83 -0
- package/ios/HotUpdater/Recovery/HotUpdaterRecoveryHooks.mm +49 -0
- package/lib/commonjs/appReady.js +111 -0
- package/lib/commonjs/appReady.js.map +1 -0
- package/lib/commonjs/checkForUpdate.js +124 -69
- package/lib/commonjs/checkForUpdate.js.map +1 -1
- package/lib/commonjs/clientPlugin.js +13 -0
- package/lib/commonjs/clientPlugin.js.map +1 -0
- package/lib/commonjs/error.js +4 -13
- package/lib/commonjs/error.js.map +1 -1
- package/lib/commonjs/fetchJSON.js +16 -27
- package/lib/commonjs/fetchJSON.js.map +1 -1
- package/lib/commonjs/fetchUpdateResponse.js +54 -0
- package/lib/commonjs/fetchUpdateResponse.js.map +1 -0
- package/lib/commonjs/httpClient.js +63 -94
- package/lib/commonjs/httpClient.js.map +1 -1
- package/lib/commonjs/index.js +71 -18
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/native.js +78 -60
- package/lib/commonjs/native.js.map +1 -1
- package/lib/commonjs/pluginHost.js +44 -0
- package/lib/commonjs/pluginHost.js.map +1 -0
- package/lib/commonjs/releaseCatalogCache.js +36 -87
- package/lib/commonjs/releaseCatalogCache.js.map +1 -1
- package/lib/commonjs/sdkVersion.js +1 -1
- package/lib/commonjs/sdkVersion.js.map +1 -1
- package/lib/commonjs/specs/NativeHotUpdater.js.map +1 -1
- package/lib/commonjs/store.js +3 -10
- package/lib/commonjs/store.js.map +1 -1
- package/lib/commonjs/updateError.js +132 -0
- package/lib/commonjs/updateError.js.map +1 -0
- package/lib/commonjs/wrap.js +43 -26
- package/lib/commonjs/wrap.js.map +1 -1
- package/lib/module/appReady.js +103 -0
- package/lib/module/appReady.js.map +1 -0
- package/lib/module/checkForUpdate.js +117 -64
- package/lib/module/checkForUpdate.js.map +1 -1
- package/lib/module/clientPlugin.js +4 -0
- package/lib/module/clientPlugin.js.map +1 -0
- package/lib/module/error.js +4 -13
- package/lib/module/error.js.map +1 -1
- package/lib/module/fetchJSON.js +14 -26
- package/lib/module/fetchJSON.js.map +1 -1
- package/lib/module/fetchUpdateResponse.js +49 -0
- package/lib/module/fetchUpdateResponse.js.map +1 -0
- package/lib/module/httpClient.js +62 -93
- package/lib/module/httpClient.js.map +1 -1
- package/lib/module/index.js +58 -20
- package/lib/module/index.js.map +1 -1
- package/lib/module/native.js +71 -53
- package/lib/module/native.js.map +1 -1
- package/lib/module/pluginHost.js +35 -0
- package/lib/module/pluginHost.js.map +1 -0
- package/lib/module/releaseCatalogCache.js +32 -82
- package/lib/module/releaseCatalogCache.js.map +1 -1
- package/lib/module/sdkVersion.js +1 -1
- package/lib/module/sdkVersion.js.map +1 -1
- package/lib/module/specs/NativeHotUpdater.js.map +1 -1
- package/lib/module/store.js +3 -10
- package/lib/module/store.js.map +1 -1
- package/lib/module/updateError.js +126 -0
- package/lib/module/updateError.js.map +1 -0
- package/lib/module/wrap.js +43 -26
- package/lib/module/wrap.js.map +1 -1
- package/lib/typescript/commonjs/appReady.d.ts +23 -0
- package/lib/typescript/commonjs/appReady.d.ts.map +1 -0
- package/lib/typescript/commonjs/checkForUpdate.d.ts +16 -4
- package/lib/typescript/commonjs/checkForUpdate.d.ts.map +1 -1
- package/lib/typescript/commonjs/clientPlugin.d.ts +2 -0
- package/lib/typescript/commonjs/clientPlugin.d.ts.map +1 -0
- package/lib/typescript/commonjs/error.d.ts +4 -13
- package/lib/typescript/commonjs/error.d.ts.map +1 -1
- package/lib/typescript/commonjs/fetchJSON.d.ts +5 -5
- package/lib/typescript/commonjs/fetchJSON.d.ts.map +1 -1
- package/lib/typescript/commonjs/fetchUpdateResponse.d.ts +14 -0
- package/lib/typescript/commonjs/fetchUpdateResponse.d.ts.map +1 -0
- package/lib/typescript/commonjs/httpClient.d.ts +4 -33
- package/lib/typescript/commonjs/httpClient.d.ts.map +1 -1
- package/lib/typescript/commonjs/index.d.ts +4 -8
- package/lib/typescript/commonjs/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/native.d.ts +31 -22
- package/lib/typescript/commonjs/native.d.ts.map +1 -1
- package/lib/typescript/commonjs/pluginHost.d.ts +4 -0
- package/lib/typescript/commonjs/pluginHost.d.ts.map +1 -0
- package/lib/typescript/commonjs/releaseCatalogCache.d.ts +8 -14
- package/lib/typescript/commonjs/releaseCatalogCache.d.ts.map +1 -1
- package/lib/typescript/commonjs/sdkVersion.d.ts +1 -1
- package/lib/typescript/commonjs/sdkVersion.d.ts.map +1 -1
- package/lib/typescript/commonjs/specs/NativeHotUpdater.d.ts +42 -47
- package/lib/typescript/commonjs/specs/NativeHotUpdater.d.ts.map +1 -1
- package/lib/typescript/commonjs/store.d.ts +1 -3
- package/lib/typescript/commonjs/store.d.ts.map +1 -1
- package/lib/typescript/commonjs/types.d.ts +1 -1
- package/lib/typescript/commonjs/types.d.ts.map +1 -1
- package/lib/typescript/commonjs/updateError.d.ts +26 -0
- package/lib/typescript/commonjs/updateError.d.ts.map +1 -0
- package/lib/typescript/commonjs/wrap.d.ts.map +1 -1
- package/lib/typescript/commonjs/wrap.types.d.ts +6 -7
- package/lib/typescript/commonjs/wrap.types.d.ts.map +1 -1
- package/lib/typescript/module/appReady.d.ts +23 -0
- package/lib/typescript/module/appReady.d.ts.map +1 -0
- package/lib/typescript/module/checkForUpdate.d.ts +16 -4
- package/lib/typescript/module/checkForUpdate.d.ts.map +1 -1
- package/lib/typescript/module/clientPlugin.d.ts +2 -0
- package/lib/typescript/module/clientPlugin.d.ts.map +1 -0
- package/lib/typescript/module/error.d.ts +4 -13
- package/lib/typescript/module/error.d.ts.map +1 -1
- package/lib/typescript/module/fetchJSON.d.ts +5 -5
- package/lib/typescript/module/fetchJSON.d.ts.map +1 -1
- package/lib/typescript/module/fetchUpdateResponse.d.ts +14 -0
- package/lib/typescript/module/fetchUpdateResponse.d.ts.map +1 -0
- package/lib/typescript/module/httpClient.d.ts +4 -33
- package/lib/typescript/module/httpClient.d.ts.map +1 -1
- package/lib/typescript/module/index.d.ts +4 -8
- package/lib/typescript/module/index.d.ts.map +1 -1
- package/lib/typescript/module/native.d.ts +31 -22
- package/lib/typescript/module/native.d.ts.map +1 -1
- package/lib/typescript/module/pluginHost.d.ts +4 -0
- package/lib/typescript/module/pluginHost.d.ts.map +1 -0
- package/lib/typescript/module/releaseCatalogCache.d.ts +8 -14
- package/lib/typescript/module/releaseCatalogCache.d.ts.map +1 -1
- package/lib/typescript/module/sdkVersion.d.ts +1 -1
- package/lib/typescript/module/sdkVersion.d.ts.map +1 -1
- package/lib/typescript/module/specs/NativeHotUpdater.d.ts +42 -47
- package/lib/typescript/module/specs/NativeHotUpdater.d.ts.map +1 -1
- package/lib/typescript/module/store.d.ts +1 -3
- package/lib/typescript/module/store.d.ts.map +1 -1
- package/lib/typescript/module/types.d.ts +1 -1
- package/lib/typescript/module/types.d.ts.map +1 -1
- package/lib/typescript/module/updateError.d.ts +26 -0
- package/lib/typescript/module/updateError.d.ts.map +1 -0
- package/lib/typescript/module/wrap.d.ts.map +1 -1
- package/lib/typescript/module/wrap.types.d.ts +6 -7
- package/lib/typescript/module/wrap.types.d.ts.map +1 -1
- package/package.json +7 -4
- package/src/appReady.ts +149 -0
- package/src/checkForUpdate.ts +151 -88
- package/src/clientPlugin.ts +18 -0
- package/src/error.ts +4 -14
- package/src/fetchJSON.ts +14 -30
- package/src/fetchUpdateResponse.ts +54 -0
- package/src/httpClient.ts +88 -159
- package/src/index.ts +90 -24
- package/src/native.ts +106 -102
- package/src/pluginHost.ts +45 -0
- package/src/releaseCatalogCache.ts +43 -172
- package/src/sdkVersion.ts +1 -1
- package/src/specs/NativeHotUpdater.ts +41 -48
- package/src/store.ts +2 -23
- package/src/types.ts +1 -1
- package/src/updateError.ts +153 -0
- package/src/wrap.tsx +57 -26
- package/src/wrap.types.ts +6 -7
- package/android/src/main/java/com/hotupdater/DecompressService.kt +0 -89
- package/android/src/main/java/com/hotupdater/DecompressionStrategy.kt +0 -26
- package/android/src/main/java/com/hotupdater/TarBrDecompressionStrategy.kt +0 -117
- package/android/src/main/java/com/hotupdater/TarGzDecompressionStrategy.kt +0 -117
- package/android/src/main/java/com/hotupdater/ZipDecompressionStrategy.kt +0 -192
- package/android/src/test/java/com/hotupdater/BsdiffPatchTest.kt +0 -46
- package/android/src/test/java/com/hotupdater/BundleFileStorageServiceTest.kt +0 -799
- package/android/src/test/java/com/hotupdater/HotUpdaterImplTest.kt +0 -273
- package/android/src/test/java/com/hotupdater/NativeConfigUtilsTest.kt +0 -20
- package/android/src/test/java/com/hotupdater/OkHttpDownloadServiceTest.kt +0 -111
- package/android/src/test/java/com/hotupdater/RelativePathResolverTest.kt +0 -41
- package/android/src/test/java/com/hotupdater/ReleaseCatalogCacheServiceTest.kt +0 -118
- package/android/src/test/java/com/hotupdater/TarArchiveInputStreamTest.kt +0 -68
- package/ios/HotUpdater/Internal/ArchiveExtractionUtilities.swift +0 -178
- package/ios/HotUpdater/Internal/DecompressService.swift +0 -112
- package/ios/HotUpdater/Internal/DecompressionStrategy.swift +0 -22
- package/ios/HotUpdater/Internal/StreamingTarArchiveExtractor.swift +0 -370
- package/ios/HotUpdater/Internal/TarBrDecompressionStrategy.swift +0 -39
- package/ios/HotUpdater/Internal/TarGzDecompressionStrategy.swift +0 -59
- package/ios/HotUpdater/Internal/ZipArchiveExtractor.swift +0 -482
- package/ios/HotUpdater/Internal/ZipDecompressionStrategy.swift +0 -56
- package/lib/commonjs/catalogCacheNative.spec.js +0 -31
- package/lib/commonjs/catalogCacheNative.spec.js.map +0 -1
- package/lib/commonjs/checkForUpdate.releaseCatalog.spec.js +0 -615
- package/lib/commonjs/checkForUpdate.releaseCatalog.spec.js.map +0 -1
- package/lib/commonjs/httpClient.spec.js +0 -102
- package/lib/commonjs/httpClient.spec.js.map +0 -1
- package/lib/commonjs/index.spec.js +0 -302
- package/lib/commonjs/index.spec.js.map +0 -1
- package/lib/commonjs/iosInterop.spec.js +0 -18
- package/lib/commonjs/iosInterop.spec.js.map +0 -1
- package/lib/commonjs/native.spec.js +0 -883
- package/lib/commonjs/native.spec.js.map +0 -1
- package/lib/commonjs/notifyAppReadyInsights.boundary.spec.js +0 -218
- package/lib/commonjs/notifyAppReadyInsights.boundary.spec.js.map +0 -1
- package/lib/commonjs/notifyAppReadyInsights.js +0 -133
- package/lib/commonjs/notifyAppReadyInsights.js.map +0 -1
- package/lib/commonjs/notifyAppReadyInsights.spec.js +0 -246
- package/lib/commonjs/notifyAppReadyInsights.spec.js.map +0 -1
- package/lib/commonjs/notifyAppReadyInsights.test-utils.js +0 -24
- package/lib/commonjs/notifyAppReadyInsights.test-utils.js.map +0 -1
- package/lib/commonjs/notifyAppReadyInsights.transport.spec.js +0 -117
- package/lib/commonjs/notifyAppReadyInsights.transport.spec.js.map +0 -1
- package/lib/commonjs/releaseCatalogCache.spec.js +0 -195
- package/lib/commonjs/releaseCatalogCache.spec.js.map +0 -1
- package/lib/commonjs/releaseCatalogCacheNativeContract.spec.js +0 -64
- package/lib/commonjs/releaseCatalogCacheNativeContract.spec.js.map +0 -1
- package/lib/commonjs/store.notification.spec.js +0 -76
- package/lib/commonjs/store.notification.spec.js.map +0 -1
- package/lib/commonjs/store.spec.js +0 -316
- package/lib/commonjs/store.spec.js.map +0 -1
- package/lib/commonjs/wrap.spec.js +0 -329
- package/lib/commonjs/wrap.spec.js.map +0 -1
- package/lib/module/catalogCacheNative.spec.js +0 -31
- package/lib/module/catalogCacheNative.spec.js.map +0 -1
- package/lib/module/checkForUpdate.releaseCatalog.spec.js +0 -614
- package/lib/module/checkForUpdate.releaseCatalog.spec.js.map +0 -1
- package/lib/module/httpClient.spec.js +0 -102
- package/lib/module/httpClient.spec.js.map +0 -1
- package/lib/module/index.spec.js +0 -301
- package/lib/module/index.spec.js.map +0 -1
- package/lib/module/iosInterop.spec.js +0 -18
- package/lib/module/iosInterop.spec.js.map +0 -1
- package/lib/module/native.spec.js +0 -882
- package/lib/module/native.spec.js.map +0 -1
- package/lib/module/notifyAppReadyInsights.boundary.spec.js +0 -217
- package/lib/module/notifyAppReadyInsights.boundary.spec.js.map +0 -1
- package/lib/module/notifyAppReadyInsights.js +0 -128
- package/lib/module/notifyAppReadyInsights.js.map +0 -1
- package/lib/module/notifyAppReadyInsights.spec.js +0 -245
- package/lib/module/notifyAppReadyInsights.spec.js.map +0 -1
- package/lib/module/notifyAppReadyInsights.test-utils.js +0 -18
- package/lib/module/notifyAppReadyInsights.test-utils.js.map +0 -1
- package/lib/module/notifyAppReadyInsights.transport.spec.js +0 -116
- package/lib/module/notifyAppReadyInsights.transport.spec.js.map +0 -1
- package/lib/module/releaseCatalogCache.spec.js +0 -195
- package/lib/module/releaseCatalogCache.spec.js.map +0 -1
- package/lib/module/releaseCatalogCacheNativeContract.spec.js +0 -64
- package/lib/module/releaseCatalogCacheNativeContract.spec.js.map +0 -1
- package/lib/module/store.notification.spec.js +0 -77
- package/lib/module/store.notification.spec.js.map +0 -1
- package/lib/module/store.spec.js +0 -315
- package/lib/module/store.spec.js.map +0 -1
- package/lib/module/wrap.spec.js +0 -330
- package/lib/module/wrap.spec.js.map +0 -1
- package/lib/typescript/commonjs/notifyAppReadyInsights.d.ts +0 -13
- package/lib/typescript/commonjs/notifyAppReadyInsights.d.ts.map +0 -1
- package/lib/typescript/commonjs/notifyAppReadyInsights.test-utils.d.ts +0 -8
- package/lib/typescript/commonjs/notifyAppReadyInsights.test-utils.d.ts.map +0 -1
- package/lib/typescript/module/notifyAppReadyInsights.d.ts +0 -13
- package/lib/typescript/module/notifyAppReadyInsights.d.ts.map +0 -1
- package/lib/typescript/module/notifyAppReadyInsights.test-utils.d.ts +0 -8
- package/lib/typescript/module/notifyAppReadyInsights.test-utils.d.ts.map +0 -1
- package/src/catalogCacheNative.spec.ts +0 -63
- package/src/checkForUpdate.releaseCatalog.spec.ts +0 -611
- package/src/httpClient.spec.ts +0 -132
- package/src/index.spec.ts +0 -337
- package/src/iosInterop.spec.ts +0 -30
- package/src/native.spec.ts +0 -945
- package/src/notifyAppReadyInsights.boundary.spec.ts +0 -234
- package/src/notifyAppReadyInsights.spec.ts +0 -243
- package/src/notifyAppReadyInsights.test-utils.ts +0 -31
- package/src/notifyAppReadyInsights.transport.spec.ts +0 -130
- package/src/notifyAppReadyInsights.ts +0 -194
- package/src/releaseCatalogCache.spec.ts +0 -282
- package/src/releaseCatalogCacheNativeContract.spec.ts +0 -80
- package/src/store.notification.spec.ts +0 -92
- package/src/store.spec.ts +0 -372
- package/src/wrap.spec.ts +0 -406
package/lib/commonjs/error.js
CHANGED
|
@@ -14,7 +14,7 @@ exports.isHotUpdaterError = isHotUpdaterError;
|
|
|
14
14
|
*
|
|
15
15
|
* Error Classification:
|
|
16
16
|
* - Parameter Validation: Invalid or missing function parameters
|
|
17
|
-
* - Bundle Storage: Errors during download,
|
|
17
|
+
* - Bundle Storage: Errors during download, verification, and storage
|
|
18
18
|
* - Signature Verification: Cryptographic verification failures (collapsed to a single public code)
|
|
19
19
|
* - Internal: Platform-specific or unexpected errors
|
|
20
20
|
*
|
|
@@ -31,8 +31,7 @@ let HotUpdaterErrorCode = exports.HotUpdaterErrorCode = /*#__PURE__*/function (H
|
|
|
31
31
|
*/
|
|
32
32
|
HotUpdaterErrorCode["MISSING_BUNDLE_ID"] = "MISSING_BUNDLE_ID";
|
|
33
33
|
/**
|
|
34
|
-
*
|
|
35
|
-
* Thrown when fileUrl parameter cannot be parsed as a valid URL.
|
|
34
|
+
* Manifest or asset URL is invalid or malformed.
|
|
36
35
|
* @retryable false
|
|
37
36
|
*/
|
|
38
37
|
HotUpdaterErrorCode["INVALID_FILE_URL"] = "INVALID_FILE_URL";
|
|
@@ -57,23 +56,15 @@ let HotUpdaterErrorCode = exports.HotUpdaterErrorCode = /*#__PURE__*/function (H
|
|
|
57
56
|
* @retryable true - Download may succeed on retry
|
|
58
57
|
*/
|
|
59
58
|
HotUpdaterErrorCode["INCOMPLETE_DOWNLOAD"] = "INCOMPLETE_DOWNLOAD";
|
|
60
|
-
/**
|
|
61
|
-
* Bundle archive format is invalid or corrupted.
|
|
62
|
-
* Thrown when ZIP file has wrong magic bytes, invalid structure, or unsupported format.
|
|
63
|
-
* Also thrown for path traversal attempts during extraction.
|
|
64
|
-
* @retryable false - Indicates corrupted or malicious bundle
|
|
65
|
-
*/
|
|
66
|
-
HotUpdaterErrorCode["EXTRACTION_FORMAT_ERROR"] = "EXTRACTION_FORMAT_ERROR";
|
|
67
59
|
/**
|
|
68
60
|
* Bundle missing required platform files.
|
|
69
|
-
* Thrown when
|
|
61
|
+
* Thrown when the staged bundle doesn't contain index.android.bundle (Android)
|
|
70
62
|
* or main.jsbundle (iOS).
|
|
71
63
|
* @retryable false - Indicates incorrectly built bundle
|
|
72
64
|
*/
|
|
73
65
|
HotUpdaterErrorCode["INVALID_BUNDLE"] = "INVALID_BUNDLE";
|
|
74
66
|
/**
|
|
75
|
-
* Insufficient disk space for bundle
|
|
76
|
-
* Thrown when available disk space is less than required (file size * 2).
|
|
67
|
+
* Insufficient disk space for bundle staging.
|
|
77
68
|
* Error message includes required and available bytes.
|
|
78
69
|
* @retryable false - User must free up disk space
|
|
79
70
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["HotUpdaterErrorCode","exports","isHotUpdaterError","error","code","Object","values","includes","HotUpdaterError","Error","constructor","message","name","StaleReleaseCatalogError"],"sourceRoot":"../../src","sources":["error.ts"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAhBA,IAkBYA,mBAAmB,GAAAC,OAAA,CAAAD,mBAAA,0BAAnBA,mBAAmB;EAC7B;EAEA;AACF;AACA;AACA;AACA;EAPYA,mBAAmB;EAU7B;AACF;AACA;AACA;
|
|
1
|
+
{"version":3,"names":["HotUpdaterErrorCode","exports","isHotUpdaterError","error","code","Object","values","includes","HotUpdaterError","Error","constructor","message","name","StaleReleaseCatalogError"],"sourceRoot":"../../src","sources":["error.ts"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAhBA,IAkBYA,mBAAmB,GAAAC,OAAA,CAAAD,mBAAA,0BAAnBA,mBAAmB;EAC7B;EAEA;AACF;AACA;AACA;AACA;EAPYA,mBAAmB;EAU7B;AACF;AACA;AACA;EAbYA,mBAAmB;EAgB7B;EAEA;AACF;AACA;AACA;AACA;EAtBYA,mBAAmB;EAyB7B;AACF;AACA;AACA;AACA;AACA;EA9BYA,mBAAmB;EAiC7B;AACF;AACA;AACA;AACA;AACA;EAtCYA,mBAAmB;EAyC7B;AACF;AACA;AACA;AACA;AACA;EA9CYA,mBAAmB;EAiD7B;AACF;AACA;AACA;AACA;EArDYA,mBAAmB;EAwD7B;AACF;AACA;AACA;AACA;AACA;EA7DYA,mBAAmB;EAgE7B;AACF;AACA;AACA;AACA;AACA;AACA;EAtEYA,mBAAmB;EAyE7B;AACF;AACA;AACA;AACA;AACA;EA9EYA,mBAAmB;EAiF7B;EACA;EAEA;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EA7FYA,mBAAmB;EAgG7B;AACF;AACA;AACA;AACA;AACA;EArGYA,mBAAmB;EAAA,OAAnBA,mBAAmB;AAAA;AAyG/B;AACA;AACA;AACO,SAASE,iBAAiBA,CAC/BC,KAAc,EAC2C;EACzD,OACE,OAAOA,KAAK,KAAK,QAAQ,IACzBA,KAAK,KAAK,IAAI,IACd,MAAM,IAAIA,KAAK,IACf,OAAOA,KAAK,CAACC,IAAI,KAAK,QAAQ,IAC9BC,MAAM,CAACC,MAAM,CAACN,mBAAmB,CAAC,CAACO,QAAQ,CACzCJ,KAAK,CAACC,IACR,CAAC;AAEL;;AAEA;AACA;AACA;AACO,MAAMI,eAAe,SAASC,KAAK,CAAC;EACzCC,WAAWA,CAACC,OAAe,EAAE;IAC3B,KAAK,CAACA,OAAO,CAAC;IACd,IAAI,CAACC,IAAI,GAAG,iBAAiB;EAC/B;AACF;AAACX,OAAA,CAAAO,eAAA,GAAAA,eAAA;AAEM,MAAMK,wBAAwB,SAASL,eAAe,CAAC;EAC5DE,WAAWA,CAAA,EAAG;IACZ,KAAK,CAAC,gEAAgE,CAAC;IACvE,IAAI,CAACE,IAAI,GAAG,0BAA0B;EACxC;AACF;AAACX,OAAA,CAAAY,wBAAA,GAAAA,wBAAA","ignoreList":[]}
|
|
@@ -3,34 +3,23 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.fetchJSON = void 0;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
});
|
|
22
|
-
if (response.status !== 200) {
|
|
23
|
-
throw new Error(response.statusText);
|
|
24
|
-
}
|
|
25
|
-
return await response.json();
|
|
26
|
-
} catch (error) {
|
|
27
|
-
if (error instanceof Error && error.name === "AbortError") {
|
|
28
|
-
throw new Error("Request timed out");
|
|
29
|
-
}
|
|
30
|
-
throw error;
|
|
31
|
-
} finally {
|
|
32
|
-
clearTimeout(timeoutId);
|
|
6
|
+
exports.fetchJSON = exports.FetchJSONResponseError = void 0;
|
|
7
|
+
var _fetchUpdateResponse = require("./fetchUpdateResponse.js");
|
|
8
|
+
var _updateError = require("./updateError.js");
|
|
9
|
+
class FetchJSONResponseError extends _updateError.UpdateHttpError {}
|
|
10
|
+
exports.FetchJSONResponseError = FetchJSONResponseError;
|
|
11
|
+
const fetchJSON = async input => {
|
|
12
|
+
const {
|
|
13
|
+
response,
|
|
14
|
+
body
|
|
15
|
+
} = await (0, _fetchUpdateResponse.fetchUpdateResponse)({
|
|
16
|
+
...input,
|
|
17
|
+
resource: "artifact"
|
|
18
|
+
});
|
|
19
|
+
if (response.status !== 200) {
|
|
20
|
+
throw new FetchJSONResponseError(response.status, response.statusText);
|
|
33
21
|
}
|
|
22
|
+
return JSON.parse(body);
|
|
34
23
|
};
|
|
35
24
|
exports.fetchJSON = fetchJSON;
|
|
36
25
|
//# sourceMappingURL=fetchJSON.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["_fetchUpdateResponse","require","_updateError","FetchJSONResponseError","UpdateHttpError","exports","fetchJSON","input","response","body","fetchUpdateResponse","resource","status","statusText","JSON","parse"],"sourceRoot":"../../src","sources":["fetchJSON.ts"],"mappings":";;;;;;AAAA,IAAAA,oBAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEO,MAAME,sBAAsB,SAASC,4BAAe,CAAC;AAAEC,OAAA,CAAAF,sBAAA,GAAAA,sBAAA;AAEvD,MAAMG,SAAS,GAAG,MACvBC,KAAsC,IACvB;EACf,MAAM;IAAEC,QAAQ;IAAEC;EAAK,CAAC,GAAG,MAAM,IAAAC,wCAAmB,EAAC;IACnD,GAAGH,KAAK;IACRI,QAAQ,EAAE;EACZ,CAAC,CAAC;EACF,IAAIH,QAAQ,CAACI,MAAM,KAAK,GAAG,EAAE;IAC3B,MAAM,IAAIT,sBAAsB,CAACK,QAAQ,CAACI,MAAM,EAAEJ,QAAQ,CAACK,UAAU,CAAC;EACxE;EACA,OAAOC,IAAI,CAACC,KAAK,CAACN,IAAK,CAAC;AAC1B,CAAC;AAACJ,OAAA,CAAAC,SAAA,GAAAA,SAAA","ignoreList":[]}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.fetchUpdateResponse = void 0;
|
|
7
|
+
/** Read once for parsing and diagnostics, under the same request timeout. */
|
|
8
|
+
const fetchUpdateResponse = async ({
|
|
9
|
+
url,
|
|
10
|
+
resource,
|
|
11
|
+
requestHeaders,
|
|
12
|
+
requestTimeout = 5000,
|
|
13
|
+
onResponse
|
|
14
|
+
}) => {
|
|
15
|
+
const controller = new AbortController();
|
|
16
|
+
const timeoutId = setTimeout(() => controller.abort(), requestTimeout);
|
|
17
|
+
try {
|
|
18
|
+
const headers = new Headers(requestHeaders);
|
|
19
|
+
if (!headers.has("Accept")) headers.set("Accept", "application/json");
|
|
20
|
+
const response = await fetch(url, {
|
|
21
|
+
headers,
|
|
22
|
+
signal: controller.signal
|
|
23
|
+
});
|
|
24
|
+
let body = null;
|
|
25
|
+
try {
|
|
26
|
+
body = await response.text();
|
|
27
|
+
} catch (error) {
|
|
28
|
+
// A broken error body must not hide an HTTP error already received.
|
|
29
|
+
if (response.status === 200) throw error;
|
|
30
|
+
} finally {
|
|
31
|
+
onResponse?.({
|
|
32
|
+
resource,
|
|
33
|
+
// React Native URL implementations do not all expose pathname.
|
|
34
|
+
path: url.replace(/^https?:\/\/[^/?#]*/i, "").split(/[?#]/, 1)[0] || "/",
|
|
35
|
+
status: response.status,
|
|
36
|
+
body,
|
|
37
|
+
bodyTruncated: false
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
response,
|
|
42
|
+
body
|
|
43
|
+
};
|
|
44
|
+
} catch (error) {
|
|
45
|
+
if (error instanceof Error && error.name === "AbortError") {
|
|
46
|
+
throw new Error("Request timed out");
|
|
47
|
+
}
|
|
48
|
+
throw error;
|
|
49
|
+
} finally {
|
|
50
|
+
clearTimeout(timeoutId);
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
exports.fetchUpdateResponse = fetchUpdateResponse;
|
|
54
|
+
//# sourceMappingURL=fetchUpdateResponse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["fetchUpdateResponse","url","resource","requestHeaders","requestTimeout","onResponse","controller","AbortController","timeoutId","setTimeout","abort","headers","Headers","has","set","response","fetch","signal","body","text","error","status","path","replace","split","bodyTruncated","Error","name","clearTimeout","exports"],"sourceRoot":"../../src","sources":["fetchUpdateResponse.ts"],"mappings":";;;;;;AAUA;AACO,MAAMA,mBAAmB,GAAG,MAAAA,CAAO;EACxCC,GAAG;EACHC,QAAQ;EACRC,cAAc;EACdC,cAAc,GAAG,IAAI;EACrBC;AACa,CAAC,KAA2D;EACzE,MAAMC,UAAU,GAAG,IAAIC,eAAe,CAAC,CAAC;EACxC,MAAMC,SAAS,GAAGC,UAAU,CAAC,MAAMH,UAAU,CAACI,KAAK,CAAC,CAAC,EAAEN,cAAc,CAAC;EACtE,IAAI;IACF,MAAMO,OAAO,GAAG,IAAIC,OAAO,CAACT,cAAc,CAAC;IAC3C,IAAI,CAACQ,OAAO,CAACE,GAAG,CAAC,QAAQ,CAAC,EAAEF,OAAO,CAACG,GAAG,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACrE,MAAMC,QAAQ,GAAG,MAAMC,KAAK,CAACf,GAAG,EAAE;MAChCU,OAAO;MACPM,MAAM,EAAEX,UAAU,CAACW;IACrB,CAAC,CAAC;IACF,IAAIC,IAAmB,GAAG,IAAI;IAC9B,IAAI;MACFA,IAAI,GAAG,MAAMH,QAAQ,CAACI,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC,OAAOC,KAAK,EAAE;MACd;MACA,IAAIL,QAAQ,CAACM,MAAM,KAAK,GAAG,EAAE,MAAMD,KAAK;IAC1C,CAAC,SAAS;MACRf,UAAU,GAAG;QACXH,QAAQ;QACR;QACAoB,IAAI,EACFrB,GAAG,CAACsB,OAAO,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAACC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG;QACpEH,MAAM,EAAEN,QAAQ,CAACM,MAAM;QACvBH,IAAI;QACJO,aAAa,EAAE;MACjB,CAAC,CAAC;IACJ;IACA,OAAO;MAAEV,QAAQ;MAAEG;IAAK,CAAC;EAC3B,CAAC,CAAC,OAAOE,KAAc,EAAE;IACvB,IAAIA,KAAK,YAAYM,KAAK,IAAIN,KAAK,CAACO,IAAI,KAAK,YAAY,EAAE;MACzD,MAAM,IAAID,KAAK,CAAC,mBAAmB,CAAC;IACtC;IACA,MAAMN,KAAK;EACb,CAAC,SAAS;IACRQ,YAAY,CAACpB,SAAS,CAAC;EACzB;AACF,CAAC;AAACqB,OAAA,CAAA7B,mBAAA,GAAAA,mBAAA","ignoreList":[]}
|
|
@@ -4,106 +4,60 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.createHttpClient = void 0;
|
|
7
|
-
var
|
|
8
|
-
var _pluginCore = require("@hot-updater/plugin-core");
|
|
7
|
+
var _protocol = require("@hot-updater/protocol");
|
|
9
8
|
var _fetchJSON = require("./fetchJSON.js");
|
|
10
9
|
var _releaseCatalogCache = require("./releaseCatalogCache.js");
|
|
11
|
-
var
|
|
12
|
-
const resolveBaseURL = async baseURL => {
|
|
13
|
-
const resolvedBaseURL = typeof baseURL === "function" ? await baseURL() : baseURL;
|
|
14
|
-
if (!resolvedBaseURL) {
|
|
15
|
-
throw new Error("baseURL function must return a non-empty string");
|
|
16
|
-
}
|
|
17
|
-
return resolvedBaseURL.replace(/\/+$/, "");
|
|
18
|
-
};
|
|
10
|
+
var _updateError = require("./updateError.js");
|
|
19
11
|
const resolveArtifactUrl = (baseURL, value) => {
|
|
20
12
|
if (/^https?:\/\//i.test(value)) {
|
|
21
|
-
|
|
13
|
+
try {
|
|
14
|
+
new URL(value);
|
|
15
|
+
} catch (error) {
|
|
16
|
+
throw new _updateError.InvalidUpdateResponseError(`Invalid artifact URL: ${value}`, {
|
|
17
|
+
cause: error
|
|
18
|
+
});
|
|
19
|
+
}
|
|
22
20
|
return value;
|
|
23
21
|
}
|
|
24
22
|
if (!value.startsWith("/storage/")) {
|
|
25
|
-
throw new
|
|
23
|
+
throw new _updateError.InvalidUpdateResponseError("Artifact URLs must be absolute HTTP(S) URLs or client-relative storage paths.");
|
|
26
24
|
}
|
|
27
25
|
return `${baseURL}/${value.slice(1)}`;
|
|
28
26
|
};
|
|
29
27
|
const resolveArtifactUrls = (baseURL, info) => ({
|
|
30
28
|
...info,
|
|
31
|
-
|
|
32
|
-
...(info.
|
|
33
|
-
|
|
34
|
-
}),
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
...
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
}
|
|
49
|
-
} : {})
|
|
50
|
-
}]))
|
|
51
|
-
})
|
|
29
|
+
manifestUrl: resolveArtifactUrl(baseURL, info.manifestUrl),
|
|
30
|
+
...(info.archiveUrl ? {
|
|
31
|
+
archiveUrl: resolveArtifactUrl(baseURL, info.archiveUrl)
|
|
32
|
+
} : {}),
|
|
33
|
+
assets: Object.fromEntries(Object.entries(info.assets).map(([path, asset]) => [path, {
|
|
34
|
+
...asset,
|
|
35
|
+
file: {
|
|
36
|
+
...asset.file,
|
|
37
|
+
url: resolveArtifactUrl(baseURL, asset.file.url)
|
|
38
|
+
},
|
|
39
|
+
...(asset.patch ? {
|
|
40
|
+
patch: {
|
|
41
|
+
...asset.patch,
|
|
42
|
+
patchUrl: resolveArtifactUrl(baseURL, asset.patch.patchUrl)
|
|
43
|
+
}
|
|
44
|
+
} : {})
|
|
45
|
+
}]))
|
|
52
46
|
});
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
body: JSON.stringify({
|
|
61
|
-
appVersion: params.appVersion,
|
|
62
|
-
channel: params.channel,
|
|
63
|
-
cohort: params.cohort,
|
|
64
|
-
fingerprintHash: params.fingerprintHash,
|
|
65
|
-
fromBundleId: params.fromBundleId,
|
|
66
|
-
...(params.fromReleaseId === undefined ? {} : {
|
|
67
|
-
fromReleaseId: params.fromReleaseId
|
|
68
|
-
}),
|
|
69
|
-
installId: params.installId,
|
|
70
|
-
platform: params.platform,
|
|
71
|
-
sdkVersion: _sdkVersion.HOT_UPDATER_SDK_VERSION,
|
|
72
|
-
toBundleId: params.toBundleId,
|
|
73
|
-
...(params.toReleaseId === undefined ? {} : {
|
|
74
|
-
toReleaseId: params.toReleaseId
|
|
75
|
-
}),
|
|
76
|
-
type: params.type,
|
|
77
|
-
updateStrategy: params.updateStrategy,
|
|
78
|
-
...(params.userId != null ? {
|
|
79
|
-
userId: params.userId
|
|
80
|
-
} : {}),
|
|
81
|
-
...(params.username != null ? {
|
|
82
|
-
username: params.username
|
|
83
|
-
} : {})
|
|
84
|
-
}),
|
|
85
|
-
headers: {
|
|
86
|
-
"Content-Type": "application/json",
|
|
87
|
-
...params.requestHeaders
|
|
88
|
-
},
|
|
89
|
-
method: "POST",
|
|
90
|
-
signal: controller.signal
|
|
91
|
-
});
|
|
92
|
-
if (response.status !== 204) {
|
|
93
|
-
throw new Error(`Expected HTTP 204 from /events, received ${response.status}`);
|
|
94
|
-
}
|
|
95
|
-
} catch (error) {
|
|
96
|
-
if (error instanceof Error && error.name === "AbortError") {
|
|
97
|
-
throw new Error("Request timed out");
|
|
47
|
+
const requireArtifactProtocolV1 = info => {
|
|
48
|
+
if (info.artifactProtocolVersion !== _protocol.ARTIFACT_PROTOCOL_VERSION || !info.assets || !info.manifestUrl || !info.manifestFileHash || info.archiveUrl !== undefined && typeof info.archiveUrl !== "string") {
|
|
49
|
+
throw new _updateError.InvalidUpdateResponseError(`Server does not support artifact protocol ${_protocol.ARTIFACT_PROTOCOL_VERSION}.`);
|
|
50
|
+
}
|
|
51
|
+
for (const asset of Object.values(info.assets)) {
|
|
52
|
+
if (!asset.file?.url || !asset.fileHash) {
|
|
53
|
+
throw new _updateError.InvalidUpdateResponseError("Artifact protocol 1 requires an original file for every asset.");
|
|
98
54
|
}
|
|
99
|
-
throw error;
|
|
100
|
-
} finally {
|
|
101
|
-
clearTimeout(timeoutId);
|
|
102
55
|
}
|
|
56
|
+
return info;
|
|
103
57
|
};
|
|
104
|
-
const createSession = baseURL => ({
|
|
58
|
+
const createSession = (baseURL, onResponse) => ({
|
|
105
59
|
fetchReleaseCatalog: async params => {
|
|
106
|
-
const channelKey = (0,
|
|
60
|
+
const channelKey = (0, _protocol.encodeChannelKey)(params.channel);
|
|
107
61
|
let strategyValue;
|
|
108
62
|
if (params.updateStrategy === "fingerprint") {
|
|
109
63
|
if (!params.fingerprintHash) {
|
|
@@ -111,7 +65,7 @@ const createSession = baseURL => ({
|
|
|
111
65
|
}
|
|
112
66
|
strategyValue = params.fingerprintHash;
|
|
113
67
|
} else {
|
|
114
|
-
const appVersion = (0,
|
|
68
|
+
const appVersion = (0, _protocol.canonicalizeAppVersion)(params.appVersion);
|
|
115
69
|
if (appVersion === null) throw new Error("Invalid app version");
|
|
116
70
|
strategyValue = appVersion;
|
|
117
71
|
}
|
|
@@ -119,6 +73,9 @@ const createSession = baseURL => ({
|
|
|
119
73
|
const url = `${baseURL}/release-catalogs/${strategyPath}/${params.platform}/${channelKey}/${encodeURIComponent(strategyValue)}`;
|
|
120
74
|
return (0, _releaseCatalogCache.fetchReleaseCatalogWithCache)({
|
|
121
75
|
baseURL,
|
|
76
|
+
...(onResponse ? {
|
|
77
|
+
onResponse
|
|
78
|
+
} : {}),
|
|
122
79
|
expectedScope: params.updateStrategy === "fingerprint" ? {
|
|
123
80
|
channelKey,
|
|
124
81
|
fingerprintHash: strategyValue,
|
|
@@ -135,19 +92,31 @@ const createSession = baseURL => ({
|
|
|
135
92
|
});
|
|
136
93
|
},
|
|
137
94
|
resolveArtifact: async params => {
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
95
|
+
let info;
|
|
96
|
+
try {
|
|
97
|
+
info = await (0, _fetchJSON.fetchJSON)({
|
|
98
|
+
...(onResponse ? {
|
|
99
|
+
onResponse
|
|
100
|
+
} : {}),
|
|
101
|
+
requestHeaders: params.requestHeaders,
|
|
102
|
+
requestTimeout: params.requestTimeout,
|
|
103
|
+
url: `${baseURL}/artifacts/v1/${encodeURIComponent(params.targetBundleId)}/from/${encodeURIComponent(params.currentBundleId)}`
|
|
104
|
+
});
|
|
105
|
+
} catch (error) {
|
|
106
|
+
if (error instanceof _fetchJSON.FetchJSONResponseError && error.status === 404) {
|
|
107
|
+
throw new _updateError.InvalidUpdateResponseError(`Server does not support artifact protocol ${_protocol.ARTIFACT_PROTOCOL_VERSION}.`, {
|
|
108
|
+
cause: error
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
throw error;
|
|
112
|
+
}
|
|
113
|
+
return resolveArtifactUrls(baseURL, requireArtifactProtocolV1(info));
|
|
114
|
+
}
|
|
146
115
|
});
|
|
147
116
|
|
|
148
117
|
/** Creates the private HTTP client used by HotUpdater.init and HotUpdater.wrap. */
|
|
149
|
-
const createHttpClient = baseURL => ({
|
|
150
|
-
createSession: async () => createSession(await resolveBaseURL(baseURL))
|
|
118
|
+
const createHttpClient = (baseURL, onResponse) => ({
|
|
119
|
+
createSession: async () => createSession(await (0, _protocol.resolveBaseURL)(baseURL), onResponse)
|
|
151
120
|
});
|
|
152
121
|
exports.createHttpClient = createHttpClient;
|
|
153
122
|
//# sourceMappingURL=httpClient.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["_protocol","require","_fetchJSON","_releaseCatalogCache","_updateError","resolveArtifactUrl","baseURL","value","test","URL","error","InvalidUpdateResponseError","cause","startsWith","slice","resolveArtifactUrls","info","manifestUrl","archiveUrl","assets","Object","fromEntries","entries","map","path","asset","file","url","patch","patchUrl","requireArtifactProtocolV1","artifactProtocolVersion","ARTIFACT_PROTOCOL_VERSION","manifestFileHash","undefined","values","fileHash","createSession","onResponse","fetchReleaseCatalog","params","channelKey","encodeChannelKey","channel","strategyValue","updateStrategy","fingerprintHash","Error","appVersion","canonicalizeAppVersion","strategyPath","platform","encodeURIComponent","fetchReleaseCatalogWithCache","expectedScope","strategy","requestHeaders","requestTimeout","resolveArtifact","fetchJSON","targetBundleId","currentBundleId","FetchJSONResponseError","status","createHttpClient","resolveBaseURL","exports"],"sourceRoot":"../../src","sources":["httpClient.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/commonjs/index.js
CHANGED
|
@@ -5,25 +5,41 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
var _exportNames = {
|
|
7
7
|
HotUpdater: true,
|
|
8
|
+
defineClientPlugin: true,
|
|
9
|
+
insights: true,
|
|
8
10
|
extractSignatureFailure: true,
|
|
9
11
|
isSignatureVerificationError: true
|
|
10
12
|
};
|
|
11
13
|
exports.HotUpdater = void 0;
|
|
14
|
+
Object.defineProperty(exports, "defineClientPlugin", {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
get: function () {
|
|
17
|
+
return _clientPlugin.defineClientPlugin;
|
|
18
|
+
}
|
|
19
|
+
});
|
|
12
20
|
Object.defineProperty(exports, "extractSignatureFailure", {
|
|
13
21
|
enumerable: true,
|
|
14
22
|
get: function () {
|
|
15
23
|
return _types.extractSignatureFailure;
|
|
16
24
|
}
|
|
17
25
|
});
|
|
26
|
+
Object.defineProperty(exports, "insights", {
|
|
27
|
+
enumerable: true,
|
|
28
|
+
get: function () {
|
|
29
|
+
return _client.insights;
|
|
30
|
+
}
|
|
31
|
+
});
|
|
18
32
|
Object.defineProperty(exports, "isSignatureVerificationError", {
|
|
19
33
|
enumerable: true,
|
|
20
34
|
get: function () {
|
|
21
35
|
return _types.isSignatureVerificationError;
|
|
22
36
|
}
|
|
23
37
|
});
|
|
38
|
+
var _appReady = require("./appReady.js");
|
|
24
39
|
var _checkForUpdate = require("./checkForUpdate.js");
|
|
25
40
|
var _httpClient = require("./httpClient.js");
|
|
26
41
|
var _native = require("./native.js");
|
|
42
|
+
var _pluginHost = require("./pluginHost.js");
|
|
27
43
|
var _store = require("./store.js");
|
|
28
44
|
Object.keys(_store).forEach(function (key) {
|
|
29
45
|
if (key === "default" || key === "__esModule") return;
|
|
@@ -37,7 +53,11 @@ Object.keys(_store).forEach(function (key) {
|
|
|
37
53
|
});
|
|
38
54
|
});
|
|
39
55
|
var _wrap = require("./wrap.js");
|
|
56
|
+
var _clientPlugin = require("./clientPlugin.js");
|
|
57
|
+
var _client = require("@hot-updater/plugin-insights/client");
|
|
40
58
|
var _types = require("./types.js");
|
|
59
|
+
// The built-in Insights client plugin, for HotUpdater.init({ plugins }).
|
|
60
|
+
|
|
41
61
|
/**
|
|
42
62
|
* Register getBaseURL to global objects for use without imports.
|
|
43
63
|
* This is needed for Expo DOM components and Babel plugin generated code.
|
|
@@ -65,7 +85,6 @@ function createHotUpdaterClient() {
|
|
|
65
85
|
|
|
66
86
|
// Global configuration stored from wrap
|
|
67
87
|
const globalConfig = {
|
|
68
|
-
insights: true,
|
|
69
88
|
client: null
|
|
70
89
|
};
|
|
71
90
|
const createMissingNetworkConfigError = apiName => {
|
|
@@ -84,12 +103,14 @@ function createHotUpdaterClient() {
|
|
|
84
103
|
if (autoOptions.baseURL) {
|
|
85
104
|
const {
|
|
86
105
|
baseURL,
|
|
106
|
+
plugins: _plugins,
|
|
87
107
|
...rest
|
|
88
108
|
} = autoOptions;
|
|
89
109
|
return {
|
|
90
110
|
...rest,
|
|
91
|
-
|
|
92
|
-
|
|
111
|
+
client: (0, _httpClient.createHttpClient)(baseURL, response => {
|
|
112
|
+
(0, _appReady.emitAfterAppReady)("onHttpResponse", () => response);
|
|
113
|
+
})
|
|
93
114
|
};
|
|
94
115
|
}
|
|
95
116
|
throw createMissingNetworkConfigError("wrap");
|
|
@@ -102,18 +123,26 @@ function createHotUpdaterClient() {
|
|
|
102
123
|
if (rest.baseURL) {
|
|
103
124
|
const {
|
|
104
125
|
baseURL,
|
|
126
|
+
plugins: _plugins,
|
|
105
127
|
...baseURLRest
|
|
106
128
|
} = rest;
|
|
107
129
|
return {
|
|
108
130
|
...baseURLRest,
|
|
109
|
-
|
|
110
|
-
|
|
131
|
+
client: (0, _httpClient.createHttpClient)(baseURL, response => {
|
|
132
|
+
(0, _appReady.emitAfterAppReady)("onHttpResponse", () => response);
|
|
133
|
+
})
|
|
111
134
|
};
|
|
112
135
|
}
|
|
113
136
|
throw createMissingNetworkConfigError("init");
|
|
114
137
|
};
|
|
115
138
|
const configureGlobal = (normalizedOptions, options) => {
|
|
116
|
-
|
|
139
|
+
// Plugins are set up before init or wrap reads the launch they observe.
|
|
140
|
+
(0, _pluginHost.configurePlugins)(options.plugins, {
|
|
141
|
+
baseURL: options.baseURL,
|
|
142
|
+
requestHeaders: options.requestHeaders,
|
|
143
|
+
requestTimeout: options.requestTimeout,
|
|
144
|
+
onError: options.onError
|
|
145
|
+
});
|
|
117
146
|
globalConfig.client = normalizedOptions.client;
|
|
118
147
|
globalConfig.requestHeaders = options.requestHeaders;
|
|
119
148
|
globalConfig.requestTimeout = options.requestTimeout;
|
|
@@ -326,7 +355,6 @@ function createHotUpdaterClient() {
|
|
|
326
355
|
const client = ensureGlobalClient("checkForUpdate");
|
|
327
356
|
const mergedConfig = {
|
|
328
357
|
...config,
|
|
329
|
-
insights: globalConfig.insights,
|
|
330
358
|
client,
|
|
331
359
|
requestHeaders: {
|
|
332
360
|
...globalConfig.requestHeaders,
|
|
@@ -342,8 +370,6 @@ function createHotUpdaterClient() {
|
|
|
342
370
|
*
|
|
343
371
|
* @param {UpdateBundleParams} params - Parameters object required for bundle update
|
|
344
372
|
* @param {string} params.bundleId - The bundle ID of the app
|
|
345
|
-
* @param {string|null} params.fileUrl - The URL of the zip file
|
|
346
|
-
*
|
|
347
373
|
* @returns {Promise<boolean>} Whether the update was successful
|
|
348
374
|
*
|
|
349
375
|
* @example
|
|
@@ -367,9 +393,42 @@ function createHotUpdaterClient() {
|
|
|
367
393
|
* }
|
|
368
394
|
* ```
|
|
369
395
|
*/
|
|
370
|
-
updateBundle: params => {
|
|
396
|
+
updateBundle: async params => {
|
|
371
397
|
ensureGlobalClient("updateBundle");
|
|
372
|
-
|
|
398
|
+
const fromBundleId = (0, _native.getBundleId)();
|
|
399
|
+
const state = (0, _native.getActiveUpdateState)();
|
|
400
|
+
const active = state.activeSelection;
|
|
401
|
+
const fromReleaseId = active?.bundleId === fromBundleId ? active.releaseId : state.stableSelection?.bundleId === fromBundleId ? state.stableSelection.releaseId : null;
|
|
402
|
+
const channel = params.channel ?? (0, _native.getChannel)();
|
|
403
|
+
const strategyOf = scopeKey => scopeKey?.startsWith("v1:fingerprint:") ? "fingerprint" : "appVersion";
|
|
404
|
+
let delivery;
|
|
405
|
+
try {
|
|
406
|
+
delivery = await (0, _native.stageBundle)(params);
|
|
407
|
+
} catch (error) {
|
|
408
|
+
(0, _checkForUpdate.reportUpdateError)(error, "download", undefined, {
|
|
409
|
+
bundleId: fromBundleId,
|
|
410
|
+
channel,
|
|
411
|
+
targetBundleId: params.bundleId,
|
|
412
|
+
targetReleaseId: params.selection?.releaseId ?? null,
|
|
413
|
+
updateStrategy: strategyOf(params.selection?.scopeKey)
|
|
414
|
+
});
|
|
415
|
+
throw error;
|
|
416
|
+
}
|
|
417
|
+
if (delivery !== null && params.bundleId !== fromBundleId) {
|
|
418
|
+
(0, _appReady.emitAfterAppReady)("onBundleDownloaded", () => {
|
|
419
|
+
const selection = (0, _native.getActiveUpdateState)().activeSelection;
|
|
420
|
+
return {
|
|
421
|
+
channel,
|
|
422
|
+
fromBundleId,
|
|
423
|
+
fromReleaseId,
|
|
424
|
+
toBundleId: params.bundleId,
|
|
425
|
+
toReleaseId: selection?.releaseId ?? null,
|
|
426
|
+
updateStrategy: strategyOf(selection?.scopeKey),
|
|
427
|
+
...delivery
|
|
428
|
+
};
|
|
429
|
+
});
|
|
430
|
+
}
|
|
431
|
+
return true;
|
|
373
432
|
},
|
|
374
433
|
/**
|
|
375
434
|
* Clears the runtime channel override and restores the original bundle.
|
|
@@ -382,10 +441,8 @@ function createHotUpdaterClient() {
|
|
|
382
441
|
_store.hotUpdaterStore.setState({
|
|
383
442
|
artifactType: null,
|
|
384
443
|
details: null,
|
|
385
|
-
downloadedBytes: undefined,
|
|
386
444
|
isUpdateDownloaded: false,
|
|
387
|
-
progress: 0
|
|
388
|
-
totalBytes: undefined
|
|
445
|
+
progress: 0
|
|
389
446
|
});
|
|
390
447
|
}
|
|
391
448
|
return ok;
|
|
@@ -406,10 +463,6 @@ function createHotUpdaterClient() {
|
|
|
406
463
|
* Fetches the persisted install id for this app installation.
|
|
407
464
|
*/
|
|
408
465
|
getInstallId: _native.getInstallId,
|
|
409
|
-
/**
|
|
410
|
-
* Persists nullable user identity fields associated with this installation.
|
|
411
|
-
*/
|
|
412
|
-
setUser: _native.setUser,
|
|
413
466
|
/**
|
|
414
467
|
* Reads the native launch report for the current process.
|
|
415
468
|
*/
|