@hot-updater/react-native 1.0.0-rc.2 → 1.0.0-rc.21
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 +125 -70
- 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 +5 -2
- package/lib/commonjs/fetchJSON.js.map +1 -1
- package/lib/commonjs/httpClient.js +55 -92
- package/lib/commonjs/httpClient.js.map +1 -1
- package/lib/commonjs/index.js +68 -20
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/native.js +82 -62
- 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 +20 -61
- 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 +44 -27
- 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 +118 -65
- 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 +3 -1
- package/lib/module/fetchJSON.js.map +1 -1
- package/lib/module/httpClient.js +53 -90
- package/lib/module/httpClient.js.map +1 -1
- package/lib/module/index.js +55 -22
- package/lib/module/index.js.map +1 -1
- package/lib/module/native.js +74 -54
- 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 +16 -56
- 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 +45 -28
- 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 +3 -0
- package/lib/typescript/commonjs/fetchJSON.d.ts.map +1 -1
- package/lib/typescript/commonjs/httpClient.d.ts +3 -32
- package/lib/typescript/commonjs/httpClient.d.ts.map +1 -1
- package/lib/typescript/commonjs/index.d.ts +7 -12
- package/lib/typescript/commonjs/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/native.d.ts +33 -23
- 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 +6 -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 +3 -0
- package/lib/typescript/module/fetchJSON.d.ts.map +1 -1
- package/lib/typescript/module/httpClient.d.ts +3 -32
- package/lib/typescript/module/httpClient.d.ts.map +1 -1
- package/lib/typescript/module/index.d.ts +7 -12
- package/lib/typescript/module/index.d.ts.map +1 -1
- package/lib/typescript/module/native.d.ts +33 -23
- 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 +6 -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 +152 -89
- package/src/clientPlugin.ts +17 -0
- package/src/error.ts +4 -14
- package/src/fetchJSON.ts +5 -1
- package/src/httpClient.ts +78 -157
- package/src/index.ts +87 -29
- package/src/native.ts +109 -104
- package/src/pluginHost.ts +45 -0
- package/src/releaseCatalogCache.ts +26 -140
- 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 +59 -28
- 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 -604
- 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 -298
- 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 -795
- 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 -296
- 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 -603
- 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 -297
- 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 -794
- 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 -295
- 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 -596
- package/src/httpClient.spec.ts +0 -132
- package/src/index.spec.ts +0 -331
- package/src/iosInterop.spec.ts +0 -30
- package/src/native.spec.ts +0 -855
- 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 -367
|
@@ -1,64 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { getUtf8ByteLength, MAX_RELEASE_CATALOG_WIRE_BYTES, parseReleaseCatalog } from "@hot-updater/protocol";
|
|
4
|
+
import { InvalidUpdateResponseError, UpdateHttpError } from "./updateError.js";
|
|
4
5
|
const CACHE_FORMAT_VERSION = "1";
|
|
5
6
|
const MAX_ETAG_BYTES = 1024;
|
|
6
|
-
export const MAX_RELEASE_CATALOG_WIRE_BYTES = MAX_COMPILED_CATALOG_BYTES * 2 + 4 * 1024;
|
|
7
7
|
export const MAX_RELEASE_CATALOG_CACHE_ENTRY_BYTES = MAX_RELEASE_CATALOG_WIRE_BYTES + MAX_ETAG_BYTES + 3;
|
|
8
8
|
const readNativeReleaseCatalogCache = async partition => (await import("./catalogCacheNative")).readNativeReleaseCatalogCache(partition);
|
|
9
9
|
const writeNativeReleaseCatalogCache = async (partition, payload) => (await import("./catalogCacheNative")).writeNativeReleaseCatalogCache(partition, payload);
|
|
10
10
|
const removeNativeReleaseCatalogCache = async partition => (await import("./catalogCacheNative")).removeNativeReleaseCatalogCache(partition);
|
|
11
11
|
let lastParsedCache = null;
|
|
12
|
-
const getUtf8ByteLength = value => {
|
|
13
|
-
let bytes = 0;
|
|
14
|
-
for (let index = 0; index < value.length; index += 1) {
|
|
15
|
-
const code = value.charCodeAt(index);
|
|
16
|
-
if (code <= 0x7f) {
|
|
17
|
-
bytes += 1;
|
|
18
|
-
} else if (code <= 0x7ff) {
|
|
19
|
-
bytes += 2;
|
|
20
|
-
} else if (code >= 0xd800 && code <= 0xdbff && index + 1 < value.length && value.charCodeAt(index + 1) >= 0xdc00 && value.charCodeAt(index + 1) <= 0xdfff) {
|
|
21
|
-
bytes += 4;
|
|
22
|
-
index += 1;
|
|
23
|
-
} else {
|
|
24
|
-
bytes += 3;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
return bytes;
|
|
28
|
-
};
|
|
29
|
-
const isStringArray = value => Array.isArray(value) && value.every(entry => typeof entry === "string");
|
|
30
|
-
const isValidReleaseDescriptor = value => {
|
|
31
|
-
if (value === null || typeof value !== "object") return false;
|
|
32
|
-
const descriptor = value;
|
|
33
|
-
return isUUIDv7(descriptor.releaseId) && (descriptor.kind === "BUNDLE" || descriptor.kind === "EMBEDDED") && (descriptor.kind === "BUNDLE" && typeof descriptor.bundleId === "string" || descriptor.kind === "EMBEDDED" && descriptor.bundleId === null) && Number.isSafeInteger(descriptor.rolloutCohortCount) && descriptor.rolloutCohortCount >= 0 && descriptor.rolloutCohortCount <= NUMERIC_COHORT_SIZE && isStringArray(descriptor.targetCohorts) && descriptor.targetCohorts.length <= MAX_TARGET_COHORTS_PER_RELEASE && typeof descriptor.shouldForceUpdate === "boolean" && (descriptor.message === null || typeof descriptor.message === "string");
|
|
34
|
-
};
|
|
35
|
-
export const hasExpectedReleaseCatalogScope = (catalog, expected) => {
|
|
36
|
-
try {
|
|
37
|
-
const parsed = parseReleaseCatalogScopeKey(catalog.scopeKey);
|
|
38
|
-
return parsed.channelKey === expected.channelKey && parsed.platform === expected.platform && parsed.strategy === expected.strategy && (parsed.strategy === "APP_VERSION" || expected.strategy === "FINGERPRINT" && parsed.fingerprintHash === expected.fingerprintHash);
|
|
39
|
-
} catch {
|
|
40
|
-
return false;
|
|
41
|
-
}
|
|
42
|
-
};
|
|
43
|
-
const parseValidatedCatalog = (value, expectedScope) => {
|
|
44
|
-
if (getUtf8ByteLength(value) > MAX_RELEASE_CATALOG_WIRE_BYTES) return null;
|
|
45
|
-
try {
|
|
46
|
-
const catalog = JSON.parse(value);
|
|
47
|
-
if (catalog.schemaVersion !== 1 || typeof catalog.catalogId !== "string" || catalog.catalogId.length === 0 || typeof catalog.scopeKey !== "string" || !Number.isSafeInteger(catalog.generation) || (catalog.generation ?? 0) < 1 || typeof catalog.catalogHash !== "string" || !/^sha256:[0-9a-f]{64}$/.test(catalog.catalogHash) || catalog.fallbackPolicy !== "BUILTIN_IF_ACTIVE_INELIGIBLE" || !Array.isArray(catalog.releases) || !catalog.releases.every(isValidReleaseDescriptor) || catalog.rollbackReleases !== undefined && (!Array.isArray(catalog.rollbackReleases) || !catalog.rollbackReleases.every(isValidReleaseDescriptor))) {
|
|
48
|
-
return null;
|
|
49
|
-
}
|
|
50
|
-
if (!hasExpectedReleaseCatalogScope(catalog, expectedScope)) {
|
|
51
|
-
return null;
|
|
52
|
-
}
|
|
53
|
-
const distinctTargetCohorts = new Set([...catalog.releases, ...(catalog.rollbackReleases ?? [])].flatMap(release => release.targetCohorts));
|
|
54
|
-
if (distinctTargetCohorts.size > MAX_DISTINCT_TARGET_COHORTS_PER_SCOPE) {
|
|
55
|
-
return null;
|
|
56
|
-
}
|
|
57
|
-
return catalog;
|
|
58
|
-
} catch {
|
|
59
|
-
return null;
|
|
60
|
-
}
|
|
61
|
-
};
|
|
62
12
|
const isValidETag = value => value !== null && value.length > 0 && !value.includes("\r") && !value.includes("\n") && getUtf8ByteLength(value) <= MAX_ETAG_BYTES;
|
|
63
13
|
const serializeCache = (etag, body) => `${CACHE_FORMAT_VERSION}\n${etag}\n${body}`;
|
|
64
14
|
const parseCache = (value, expectedScope, partition) => {
|
|
@@ -73,7 +23,7 @@ const parseCache = (value, expectedScope, partition) => {
|
|
|
73
23
|
const etag = value.slice(versionEnd + 1, etagEnd);
|
|
74
24
|
const body = value.slice(etagEnd + 1);
|
|
75
25
|
if (!isValidETag(etag)) return null;
|
|
76
|
-
const catalog =
|
|
26
|
+
const catalog = parseReleaseCatalog(body, expectedScope);
|
|
77
27
|
if (catalog === null) return null;
|
|
78
28
|
const parsed = {
|
|
79
29
|
catalog,
|
|
@@ -128,14 +78,19 @@ const readValidatedCache = async (partition, expectedScope) => {
|
|
|
128
78
|
return cached;
|
|
129
79
|
};
|
|
130
80
|
const consumeSuccessfulResponse = async (response, input, partition) => {
|
|
81
|
+
// The server marks the 404 of a scope that has no catalog yet: no update,
|
|
82
|
+
// not a failure. Any other 404 is a wrong baseURL or route.
|
|
83
|
+
if (response.status === 404 && response.headers.get("x-hot-updater-catalog")?.trim().toLowerCase() === "none") {
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
131
86
|
if (response.status !== 200) {
|
|
132
|
-
throw new
|
|
87
|
+
throw new UpdateHttpError(response.status, response.statusText);
|
|
133
88
|
}
|
|
134
89
|
const body = await response.text();
|
|
135
|
-
const catalog =
|
|
90
|
+
const catalog = parseReleaseCatalog(body, input.expectedScope);
|
|
136
91
|
if (catalog === null) {
|
|
137
92
|
await removeNativeReleaseCatalogCache(partition);
|
|
138
|
-
throw new
|
|
93
|
+
throw new InvalidUpdateResponseError("Received an invalid Release catalog");
|
|
139
94
|
}
|
|
140
95
|
const etag = response.headers.get("etag");
|
|
141
96
|
if (isValidETag(etag)) {
|
|
@@ -157,6 +112,11 @@ const consumeSuccessfulResponse = async (response, input, partition) => {
|
|
|
157
112
|
}
|
|
158
113
|
return catalog;
|
|
159
114
|
};
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Fetches a scope's catalog, or null when the server answers that the scope
|
|
118
|
+
* has none (a 404 with `x-hot-updater-catalog: none`).
|
|
119
|
+
*/
|
|
160
120
|
export const fetchReleaseCatalogWithCache = async input => {
|
|
161
121
|
const partition = createReleaseCatalogCachePartition(input);
|
|
162
122
|
const cached = await readValidatedCache(partition, input.expectedScope);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["MAX_TARGET_COHORTS_PER_RELEASE","MAX_COMPILED_CATALOG_BYTES","MAX_DISTINCT_TARGET_COHORTS_PER_SCOPE","NUMERIC_COHORT_SIZE","isUUIDv7","parseReleaseCatalogScopeKey","CACHE_FORMAT_VERSION","MAX_ETAG_BYTES","MAX_RELEASE_CATALOG_WIRE_BYTES","MAX_RELEASE_CATALOG_CACHE_ENTRY_BYTES","readNativeReleaseCatalogCache","partition","writeNativeReleaseCatalogCache","payload","removeNativeReleaseCatalogCache","lastParsedCache","getUtf8ByteLength","value","bytes","index","length","code","charCodeAt","isStringArray","Array","isArray","every","entry","isValidReleaseDescriptor","descriptor","releaseId","kind","bundleId","Number","isSafeInteger","rolloutCohortCount","targetCohorts","shouldForceUpdate","message","hasExpectedReleaseCatalogScope","catalog","expected","parsed","scopeKey","channelKey","platform","strategy","fingerprintHash","parseValidatedCatalog","expectedScope","JSON","parse","schemaVersion","catalogId","generation","catalogHash","test","fallbackPolicy","releases","rollbackReleases","undefined","distinctTargetCohorts","Set","flatMap","release","size","isValidETag","includes","serializeCache","etag","body","parseCache","serialized","versionEnd","indexOf","etagEnd","slice","normalizedHeaders","requestHeaders","headers","Headers","entries","map","name","toLowerCase","sort","firstName","secondName","localeCompare","createReleaseCatalogCachePartition","input","stringify","baseURL","url","version","fetchCatalogResponse","controller","AbortController","timeoutId","setTimeout","abort","requestTimeout","set","delete","fetch","signal","error","Error","clearTimeout","readValidatedCache","cached","consumeSuccessfulResponse","response","status","statusText","text","get","fetchReleaseCatalogWithCache","repairResponse"],"sourceRoot":"../../src","sources":["releaseCatalogCache.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["getUtf8ByteLength","MAX_RELEASE_CATALOG_WIRE_BYTES","parseReleaseCatalog","InvalidUpdateResponseError","UpdateHttpError","CACHE_FORMAT_VERSION","MAX_ETAG_BYTES","MAX_RELEASE_CATALOG_CACHE_ENTRY_BYTES","readNativeReleaseCatalogCache","partition","writeNativeReleaseCatalogCache","payload","removeNativeReleaseCatalogCache","lastParsedCache","isValidETag","value","length","includes","serializeCache","etag","body","parseCache","expectedScope","serialized","versionEnd","indexOf","etagEnd","slice","catalog","parsed","normalizedHeaders","requestHeaders","headers","Headers","entries","map","name","toLowerCase","sort","firstName","secondName","localeCompare","createReleaseCatalogCachePartition","input","JSON","stringify","baseURL","url","version","fetchCatalogResponse","controller","AbortController","timeoutId","setTimeout","abort","requestTimeout","set","undefined","delete","fetch","signal","error","Error","clearTimeout","readValidatedCache","cached","consumeSuccessfulResponse","response","status","get","trim","statusText","text","fetchReleaseCatalogWithCache","repairResponse"],"sourceRoot":"../../src","sources":["releaseCatalogCache.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/module/sdkVersion.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["HOT_UPDATER_SDK_VERSION"],"sourceRoot":"../../src","sources":["sdkVersion.ts"],"mappings":";;AAAA,OAAO,MAAMA,uBAAuB,GAAG,
|
|
1
|
+
{"version":3,"names":["HOT_UPDATER_SDK_VERSION"],"sourceRoot":"../../src","sources":["sdkVersion.ts"],"mappings":";;AAAA,OAAO,MAAMA,uBAAuB,GAAG,aAAa","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../../src","sources":["specs/NativeHotUpdater.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;
|
|
1
|
+
{"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../../src","sources":["specs/NativeHotUpdater.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;AAyNlD,eAAeA,mBAAmB,CAACC,YAAY,CAAO,YAAY,CAAC","ignoreList":[]}
|
package/lib/module/store.js
CHANGED
|
@@ -21,7 +21,7 @@ const areDiffDetailsEqual = (left, right) => {
|
|
|
21
21
|
});
|
|
22
22
|
};
|
|
23
23
|
const areStatesEqual = (left, right) => {
|
|
24
|
-
return left.progress === right.progress && left.
|
|
24
|
+
return left.progress === right.progress && left.isUpdateDownloaded === right.isUpdateDownloaded && left.artifactType === right.artifactType && areDiffDetailsEqual(left.details, right.details);
|
|
25
25
|
};
|
|
26
26
|
const normalizeByteCount = value => {
|
|
27
27
|
if (typeof value !== "number" || !Number.isFinite(value) || value < 0) {
|
|
@@ -35,8 +35,6 @@ const normalizeDownloadPath = value => {
|
|
|
35
35
|
const createHotUpdaterStore = () => {
|
|
36
36
|
let state = {
|
|
37
37
|
progress: 0,
|
|
38
|
-
downloadedBytes: undefined,
|
|
39
|
-
totalBytes: undefined,
|
|
40
38
|
isUpdateDownloaded: false,
|
|
41
39
|
artifactType: null,
|
|
42
40
|
details: null
|
|
@@ -98,9 +96,6 @@ const createHotUpdaterStore = () => {
|
|
|
98
96
|
if (newState.details === undefined) {
|
|
99
97
|
nextState.details = state.details;
|
|
100
98
|
}
|
|
101
|
-
if (nextState.artifactType !== "diff") {
|
|
102
|
-
nextState.details = null;
|
|
103
|
-
}
|
|
104
99
|
if (areStatesEqual(state, nextState)) {
|
|
105
100
|
return;
|
|
106
101
|
}
|
|
@@ -110,10 +105,8 @@ const createHotUpdaterStore = () => {
|
|
|
110
105
|
const applyProgressEvent = event => {
|
|
111
106
|
setState({
|
|
112
107
|
artifactType: event.artifactType,
|
|
113
|
-
details:
|
|
114
|
-
|
|
115
|
-
progress: event.progress,
|
|
116
|
-
totalBytes: event.artifactType === "archive" ? normalizeByteCount(event.totalBytes) : undefined
|
|
108
|
+
details: normalizeDiffDetails(event.details),
|
|
109
|
+
progress: event.progress
|
|
117
110
|
});
|
|
118
111
|
};
|
|
119
112
|
const subscribe = listener => {
|
package/lib/module/store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useSyncExternalStoreExports","addListener","useSyncExternalStoreWithSelector","areDiffDetailsEqual","left","right","totalFilesCount","completedFilesCount","files","length","every","leftFile","index","rightFile","undefined","order","path","downloadPath","downloadedBytes","progress","status","totalBytes","areStatesEqual","isUpdateDownloaded","artifactType","details","normalizeByteCount","value","Number","isFinite","Math","round","normalizeDownloadPath","createHotUpdaterStore","state","getSnapshot","listeners","Set","isEmitScheduled","emitChange","scheduleFrame","requestAnimationFrame","callback","listener","normalizeDiffDetails","max","normalizedFiles","map","file","min","sort","setState","newState","nextState","applyProgressEvent","event","subscribe","add","delete","hotUpdaterStore","useHotUpdaterStore","selector","snapshot"],"sourceRoot":"../../src","sources":["store.ts"],"mappings":";;AAAA,OAAOA,2BAA2B,MAAM,4CAA4C;AAOpF,SAASC,WAAW,QAAQ,aAAU;
|
|
1
|
+
{"version":3,"names":["useSyncExternalStoreExports","addListener","useSyncExternalStoreWithSelector","areDiffDetailsEqual","left","right","totalFilesCount","completedFilesCount","files","length","every","leftFile","index","rightFile","undefined","order","path","downloadPath","downloadedBytes","progress","status","totalBytes","areStatesEqual","isUpdateDownloaded","artifactType","details","normalizeByteCount","value","Number","isFinite","Math","round","normalizeDownloadPath","createHotUpdaterStore","state","getSnapshot","listeners","Set","isEmitScheduled","emitChange","scheduleFrame","requestAnimationFrame","callback","listener","normalizeDiffDetails","max","normalizedFiles","map","file","min","sort","setState","newState","nextState","applyProgressEvent","event","subscribe","add","delete","hotUpdaterStore","useHotUpdaterStore","selector","snapshot"],"sourceRoot":"../../src","sources":["store.ts"],"mappings":";;AAAA,OAAOA,2BAA2B,MAAM,4CAA4C;AAOpF,SAASC,WAAW,QAAQ,aAAU;AAStC,MAAM;EAAEC;AAAiC,CAAC,GAAGF,2BAA2B;AAExE,MAAMG,mBAAmB,GAAGA,CAC1BC,IAA0C,EAC1CC,KAA2C,KACxC;EACH,IAAID,IAAI,KAAKC,KAAK,EAAE;IAClB,OAAO,IAAI;EACb;EAEA,IAAID,IAAI,KAAK,IAAI,IAAIC,KAAK,KAAK,IAAI,EAAE;IACnC,OAAO,KAAK;EACd;EAEA,IACED,IAAI,CAACE,eAAe,KAAKD,KAAK,CAACC,eAAe,IAC9CF,IAAI,CAACG,mBAAmB,KAAKF,KAAK,CAACE,mBAAmB,IACtDH,IAAI,CAACI,KAAK,CAACC,MAAM,KAAKJ,KAAK,CAACG,KAAK,CAACC,MAAM,EACxC;IACA,OAAO,KAAK;EACd;EAEA,OAAOL,IAAI,CAACI,KAAK,CAACE,KAAK,CAAC,CAACC,QAAQ,EAAEC,KAAK,KAAK;IAC3C,MAAMC,SAAS,GAAGR,KAAK,CAACG,KAAK,CAACI,KAAK,CAAC;IACpC,OACEC,SAAS,KAAKC,SAAS,IACvBH,QAAQ,CAACI,KAAK,KAAKF,SAAS,CAACE,KAAK,IAClCJ,QAAQ,CAACK,IAAI,KAAKH,SAAS,CAACG,IAAI,IAChCL,QAAQ,CAACM,YAAY,KAAKJ,SAAS,CAACI,YAAY,IAChDN,QAAQ,CAACO,eAAe,KAAKL,SAAS,CAACK,eAAe,IACtDP,QAAQ,CAACQ,QAAQ,KAAKN,SAAS,CAACM,QAAQ,IACxCR,QAAQ,CAACS,MAAM,KAAKP,SAAS,CAACO,MAAM,IACpCT,QAAQ,CAACU,UAAU,KAAKR,SAAS,CAACQ,UAAU;EAEhD,CAAC,CAAC;AACJ,CAAC;AAED,MAAMC,cAAc,GAAGA,CAAClB,IAAqB,EAAEC,KAAsB,KAAK;EACxE,OACED,IAAI,CAACe,QAAQ,KAAKd,KAAK,CAACc,QAAQ,IAChCf,IAAI,CAACmB,kBAAkB,KAAKlB,KAAK,CAACkB,kBAAkB,IACpDnB,IAAI,CAACoB,YAAY,KAAKnB,KAAK,CAACmB,YAAY,IACxCrB,mBAAmB,CAACC,IAAI,CAACqB,OAAO,EAAEpB,KAAK,CAACoB,OAAO,CAAC;AAEpD,CAAC;AAED,MAAMC,kBAAkB,GAAIC,KAAyB,IAAK;EACxD,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAI,CAACC,MAAM,CAACC,QAAQ,CAACF,KAAK,CAAC,IAAIA,KAAK,GAAG,CAAC,EAAE;IACrE,OAAOb,SAAS;EAClB;EACA,OAAOgB,IAAI,CAACC,KAAK,CAACJ,KAAK,CAAC;AAC1B,CAAC;AAED,MAAMK,qBAAqB,GAAIL,KAAyB,IAAK;EAC3D,OAAO,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,CAAClB,MAAM,GAAG,CAAC,GAAGkB,KAAK,GAAGb,SAAS;AAC1E,CAAC;AAED,MAAMmB,qBAAqB,GAAGA,CAAA,KAAM;EAClC,IAAIC,KAAsB,GAAG;IAC3Bf,QAAQ,EAAE,CAAC;IACXI,kBAAkB,EAAE,KAAK;IACzBC,YAAY,EAAE,IAAI;IAClBC,OAAO,EAAE;EACX,CAAC;EAED,MAAMU,WAAW,GAAGA,CAAA,KAAM;IACxB,OAAOD,KAAK;EACd,CAAC;EAED,MAAME,SAAS,GAAG,IAAIC,GAAG,CAAa,CAAC;EACvC,IAAIC,eAAe,GAAG,KAAK;EAE3B,MAAMC,UAAU,GAAGA,CAAA,KAAM;IACvB,IAAID,eAAe,EAAE;MACnB;IACF;IAEAA,eAAe,GAAG,IAAI;IACtB,MAAME,aAAa,GACjB,OAAOC,qBAAqB,KAAK,UAAU,GACvCA,qBAAqB,GACpBC,QAAqC,IAAKA,QAAQ,CAAC,CAAC,CAAC;IAC5DF,aAAa,CAAC,MAAM;MAClBF,eAAe,GAAG,KAAK;MACvB,KAAK,MAAMK,QAAQ,IAAIP,SAAS,EAAE;QAChCO,QAAQ,CAAC,CAAC;MACZ;IACF,CAAC,CAAC;EACJ,CAAC;EAED,MAAMC,oBAAoB,GACxBnB,OAAsC,IACJ;IAClC,MAAMnB,eAAe,GAAGwB,IAAI,CAACe,GAAG,CAAC,CAAC,EAAEpB,OAAO,CAACnB,eAAe,CAAC;IAC5D,MAAMwC,eAA6C,GAAGrB,OAAO,CAACjB,KAAK,CAChEuC,GAAG,CAAEC,IAAI,IAAK;MACb,MAAM/B,YAAY,GAChBe,qBAAqB,CAACgB,IAAI,CAAC/B,YAAY,CAAC,IAAI+B,IAAI,CAAChC,IAAI;MAEvD,OAAO;QACLC,YAAY;QACZC,eAAe,EAAEQ,kBAAkB,CAACsB,IAAI,CAAC9B,eAAe,CAAC;QACzDH,KAAK,EAAEe,IAAI,CAACe,GAAG,CAAC,CAAC,EAAEG,IAAI,CAACjC,KAAK,CAAC;QAC9BC,IAAI,EAAEgC,IAAI,CAAChC,IAAI;QACfG,QAAQ,EAAEW,IAAI,CAACe,GAAG,CAAC,CAAC,EAAEf,IAAI,CAACmB,GAAG,CAACD,IAAI,CAAC7B,QAAQ,EAAE,CAAC,CAAC,CAAC;QACjDC,MAAM,EAAE4B,IAAI,CAAC5B,MAAM;QACnBC,UAAU,EAAEK,kBAAkB,CAACsB,IAAI,CAAC3B,UAAU;MAChD,CAAC;IACH,CAAC,CAAC,CACD6B,IAAI,CAAC,CAAC9C,IAAI,EAAEC,KAAK,KAAKD,IAAI,CAACW,KAAK,GAAGV,KAAK,CAACU,KAAK,CAAC;IAElD,OAAO;MACLR,mBAAmB,EAAEuB,IAAI,CAACe,GAAG,CAC3B,CAAC,EACDf,IAAI,CAACmB,GAAG,CAACxB,OAAO,CAAClB,mBAAmB,EAAED,eAAe,CACvD,CAAC;MACDE,KAAK,EAAEsC,eAAe;MACtBxC;IACF,CAAC;EACH,CAAC;EAED,MAAM6C,QAAQ,GAAIC,QAAkC,IAAK;IACvD;IACA,MAAMC,SAA0B,GAAG;MACjC,GAAGnB,KAAK;MACR,GAAGkB;IACL,CAAC;;IAED;IACA;IACA;IACA,IAAI,UAAU,IAAIA,QAAQ,IAAI,OAAOA,QAAQ,CAACjC,QAAQ,KAAK,QAAQ,EAAE;MACnEkC,SAAS,CAAClC,QAAQ,GAAGW,IAAI,CAACe,GAAG,CAAC,CAAC,EAAEf,IAAI,CAACmB,GAAG,CAACG,QAAQ,CAACjC,QAAQ,EAAE,CAAC,CAAC,CAAC;MAChEkC,SAAS,CAAC9B,kBAAkB,GAAG8B,SAAS,CAAClC,QAAQ,IAAI,CAAC;IACxD,CAAC,MAAM,IACL,oBAAoB,IAAIiC,QAAQ,IAChC,OAAOA,QAAQ,CAAC7B,kBAAkB,KAAK,SAAS,EAChD;MACA8B,SAAS,CAAC9B,kBAAkB,GAAG6B,QAAQ,CAAC7B,kBAAkB;IAC5D;IAEA,IAAI6B,QAAQ,CAAC3B,OAAO,KAAKX,SAAS,EAAE;MAClCuC,SAAS,CAAC5B,OAAO,GAAGS,KAAK,CAACT,OAAO;IACnC;IAEA,IAAIH,cAAc,CAACY,KAAK,EAAEmB,SAAS,CAAC,EAAE;MACpC;IACF;IAEAnB,KAAK,GAAGmB,SAAS;IACjBd,UAAU,CAAC,CAAC;EACd,CAAC;EAED,MAAMe,kBAAkB,GAAIC,KAA8B,IAAK;IAC7DJ,QAAQ,CAAC;MACP3B,YAAY,EAAE+B,KAAK,CAAC/B,YAAY;MAChCC,OAAO,EAAEmB,oBAAoB,CAACW,KAAK,CAAC9B,OAAO,CAAC;MAC5CN,QAAQ,EAAEoC,KAAK,CAACpC;IAClB,CAAC,CAAC;EACJ,CAAC;EAED,MAAMqC,SAAS,GAAIb,QAAoB,IAAK;IAC1CP,SAAS,CAACqB,GAAG,CAACd,QAAQ,CAAC;IACvB,OAAO,MAAMP,SAAS,CAACsB,MAAM,CAACf,QAAQ,CAAC;EACzC,CAAC;;EAED;EACA;EACA1C,WAAW,CAAC,YAAY,EAAEqD,kBAAkB,CAAC;EAE7C,OAAO;IAAEnB,WAAW;IAAEgB,QAAQ;IAAEK;EAAU,CAAC;AAC7C,CAAC;AAED,OAAO,MAAMG,eAAe,GAAG1B,qBAAqB,CAAC,CAAC;AAEtD,OAAO,MAAM2B,kBAAkB,GAAGA,CAChCC,QAA0C,GAAIC,QAAQ,IAAKA,QAAa,KACrE;EACH,OAAO5D,gCAAgC,CACrCyD,eAAe,CAACH,SAAS,EACzBG,eAAe,CAACxB,WAAW,EAC3BwB,eAAe,CAACxB,WAAW,EAC3B0B,QACF,CAAC;AACH,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { HotUpdaterError } from "./error.js";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* A response the SDK cannot use: a malformed or stale catalog, an artifact
|
|
7
|
+
* in another protocol, or an invalid URL.
|
|
8
|
+
*/
|
|
9
|
+
export class InvalidUpdateResponseError extends HotUpdaterError {
|
|
10
|
+
constructor(message, options) {
|
|
11
|
+
super(message);
|
|
12
|
+
this.name = "InvalidUpdateResponseError";
|
|
13
|
+
if (options?.cause !== undefined) this.cause = options.cause;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/** A request the server answered with a status the SDK does not accept. */
|
|
18
|
+
export class UpdateHttpError extends HotUpdaterError {
|
|
19
|
+
constructor(status, statusText) {
|
|
20
|
+
super(`Request failed with HTTP ${status}${statusText ? ` ${statusText}` : ""}`);
|
|
21
|
+
this.status = status;
|
|
22
|
+
this.name = "UpdateHttpError";
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
const STAGES = ["check", "download", "install"];
|
|
26
|
+
const REASONS = ["network", "http", "invalid_response", "hash_mismatch", "signature", "patch", "extract", "storage", "unknown"];
|
|
27
|
+
const RESOURCES = ["catalog", "artifact", "manifest", "file", "patch", "archive"];
|
|
28
|
+
const TRANSPORTS = ["timeout", "dns", "tls", "connection", "offline", "cancelled"];
|
|
29
|
+
/** An S3, R2, or GCS error code: letters, digits, and punctuation only. */
|
|
30
|
+
const ORIGIN_CODE = /^[A-Za-z0-9._-]{1,64}$/;
|
|
31
|
+
const oneOf = (values, value) => values.includes(value);
|
|
32
|
+
const readNativeClassification = error => {
|
|
33
|
+
if (!("code" in error) || typeof error.code !== "string") return undefined;
|
|
34
|
+
const userInfo = "userInfo" in error && typeof error.userInfo === "object" ? error.userInfo : null;
|
|
35
|
+
const {
|
|
36
|
+
stage,
|
|
37
|
+
reason,
|
|
38
|
+
resource,
|
|
39
|
+
transport,
|
|
40
|
+
originCode
|
|
41
|
+
} = userInfo ?? {};
|
|
42
|
+
// Native classifies every failure of its download and install; a rejection
|
|
43
|
+
// without it, such as a stale selection, is not an update failure.
|
|
44
|
+
if (!oneOf(STAGES, stage) || !oneOf(REASONS, reason)) return null;
|
|
45
|
+
const httpStatus = Number(userInfo?.httpStatus);
|
|
46
|
+
return {
|
|
47
|
+
stage,
|
|
48
|
+
reason,
|
|
49
|
+
...(oneOf(RESOURCES, resource) ? {
|
|
50
|
+
resource
|
|
51
|
+
} : {}),
|
|
52
|
+
...(reason === "http" && Number.isSafeInteger(httpStatus) ? {
|
|
53
|
+
httpStatus
|
|
54
|
+
} : {}),
|
|
55
|
+
...(reason === "http" && typeof originCode === "string" && ORIGIN_CODE.test(originCode) ? {
|
|
56
|
+
originCode
|
|
57
|
+
} : {}),
|
|
58
|
+
...(reason === "network" && oneOf(TRANSPORTS, transport) ? {
|
|
59
|
+
transport
|
|
60
|
+
} : {})
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Where and why an update failed, or null when the error is not an update
|
|
66
|
+
* failure. Native rejections carry their own classification; an error the
|
|
67
|
+
* SDK's JavaScript raised happened in `stage`, fetching `resource` when one
|
|
68
|
+
* is given.
|
|
69
|
+
*/
|
|
70
|
+
export const classifyUpdateError = (error, stage, resource) => {
|
|
71
|
+
if (typeof error === "object" && error !== null) {
|
|
72
|
+
const native = readNativeClassification(error);
|
|
73
|
+
if (native !== undefined) return native;
|
|
74
|
+
}
|
|
75
|
+
const scope = {
|
|
76
|
+
stage,
|
|
77
|
+
...(resource === undefined ? {} : {
|
|
78
|
+
resource
|
|
79
|
+
})
|
|
80
|
+
};
|
|
81
|
+
// Names, not classes, so an error from another copy of a module still
|
|
82
|
+
// classifies, as it does across test module resets.
|
|
83
|
+
const name = error instanceof Error ? error.name : null;
|
|
84
|
+
// A selection that became stale is a race between checks, not a failure.
|
|
85
|
+
if (name === "StaleReleaseCatalogError") return null;
|
|
86
|
+
if (name === "UpdateHttpError") {
|
|
87
|
+
return {
|
|
88
|
+
...scope,
|
|
89
|
+
reason: "http",
|
|
90
|
+
httpStatus: error.status
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
if (name === "InvalidUpdateResponseError" || name === "SyntaxError") {
|
|
94
|
+
return {
|
|
95
|
+
...scope,
|
|
96
|
+
reason: "invalid_response"
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
if (error instanceof Error && error.message === "Request timed out") {
|
|
100
|
+
return {
|
|
101
|
+
...scope,
|
|
102
|
+
reason: "network",
|
|
103
|
+
transport: "timeout"
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
if (name === "AbortError") {
|
|
107
|
+
return {
|
|
108
|
+
...scope,
|
|
109
|
+
reason: "network",
|
|
110
|
+
transport: "cancelled"
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
if (name === "TypeError") {
|
|
114
|
+
// fetch rejects with a TypeError when no response arrives, without
|
|
115
|
+
// saying why.
|
|
116
|
+
return {
|
|
117
|
+
...scope,
|
|
118
|
+
reason: "network"
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
return {
|
|
122
|
+
...scope,
|
|
123
|
+
reason: "unknown"
|
|
124
|
+
};
|
|
125
|
+
};
|
|
126
|
+
//# sourceMappingURL=updateError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["HotUpdaterError","InvalidUpdateResponseError","constructor","message","options","name","cause","undefined","UpdateHttpError","status","statusText","STAGES","REASONS","RESOURCES","TRANSPORTS","ORIGIN_CODE","oneOf","values","value","includes","readNativeClassification","error","code","userInfo","stage","reason","resource","transport","originCode","httpStatus","Number","isSafeInteger","test","classifyUpdateError","native","scope","Error"],"sourceRoot":"../../src","sources":["updateError.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/module/wrap.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import React, { useEffect, useState } from "react";
|
|
4
|
+
import { handleNotifyAppReady } from "./appReady.js";
|
|
4
5
|
import { checkForUpdate } from "./checkForUpdate.js";
|
|
5
6
|
import { useEventCallback } from "./hooks/useEventCallback.js";
|
|
6
|
-
import {
|
|
7
|
-
import { handleNotifyAppReady } from "./notifyAppReadyInsights.js";
|
|
7
|
+
import { getUpdateId, reload } from "./native.js";
|
|
8
8
|
import { useHotUpdaterStore } from "./store.js";
|
|
9
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
10
10
|
export function init(options) {
|
|
11
11
|
void handleNotifyAppReady(options);
|
|
12
12
|
}
|
|
@@ -15,30 +15,55 @@ export function wrap(options) {
|
|
|
15
15
|
reloadOnForceUpdate = true,
|
|
16
16
|
...restOptions
|
|
17
17
|
} = options;
|
|
18
|
+
|
|
19
|
+
// Progress is subscribed only where it is rendered or reported, so progress
|
|
20
|
+
// events don't re-render the wrapped app.
|
|
21
|
+
const ProgressReporter = ({
|
|
22
|
+
onProgress
|
|
23
|
+
}) => {
|
|
24
|
+
const progress = useHotUpdaterStore(state => state.progress);
|
|
25
|
+
useEffect(() => {
|
|
26
|
+
onProgress(progress);
|
|
27
|
+
}, [progress]);
|
|
28
|
+
return null;
|
|
29
|
+
};
|
|
30
|
+
const FallbackWithProgress = ({
|
|
31
|
+
Fallback,
|
|
32
|
+
status,
|
|
33
|
+
message
|
|
34
|
+
}) => {
|
|
35
|
+
const progressState = useHotUpdaterStore(state => state);
|
|
36
|
+
return /*#__PURE__*/_jsx(Fallback, {
|
|
37
|
+
artifactType: progressState.artifactType,
|
|
38
|
+
details: progressState.details,
|
|
39
|
+
progress: progressState.progress,
|
|
40
|
+
status: status,
|
|
41
|
+
message: message
|
|
42
|
+
});
|
|
43
|
+
};
|
|
18
44
|
return WrappedComponent => {
|
|
19
45
|
const HotUpdaterHOC = props => {
|
|
20
|
-
const progressState = useHotUpdaterStore(state => state);
|
|
21
|
-
const progress = progressState.progress;
|
|
22
46
|
const [message, setMessage] = useState(null);
|
|
23
47
|
const [updateStatus, setUpdateStatus] = useState("CHECK_FOR_UPDATE");
|
|
24
48
|
const initHotUpdater = useEventCallback(async () => {
|
|
25
49
|
try {
|
|
26
50
|
setUpdateStatus("CHECK_FOR_UPDATE");
|
|
51
|
+
const readiness = handleNotifyAppReady(restOptions);
|
|
27
52
|
const updateInfo = await checkForUpdate({
|
|
28
|
-
insights: restOptions.insights,
|
|
29
53
|
client: restOptions.client,
|
|
30
54
|
updateStrategy: restOptions.updateStrategy,
|
|
31
55
|
requestHeaders: restOptions.requestHeaders,
|
|
32
56
|
requestTimeout: restOptions.requestTimeout,
|
|
33
57
|
onError: restOptions.onError
|
|
34
58
|
});
|
|
59
|
+
await readiness;
|
|
35
60
|
setMessage(updateInfo?.message ?? null);
|
|
36
61
|
if (!updateInfo) {
|
|
37
62
|
restOptions.onUpdateProcessCompleted?.({
|
|
38
63
|
status: "UP_TO_DATE",
|
|
39
64
|
shouldForceUpdate: false,
|
|
40
65
|
message: null,
|
|
41
|
-
id:
|
|
66
|
+
id: getUpdateId()
|
|
42
67
|
});
|
|
43
68
|
setUpdateStatus("UPDATE_PROCESS_COMPLETED");
|
|
44
69
|
return;
|
|
@@ -78,34 +103,26 @@ export function wrap(options) {
|
|
|
78
103
|
setUpdateStatus("UPDATE_PROCESS_COMPLETED");
|
|
79
104
|
}
|
|
80
105
|
});
|
|
81
|
-
useEffect(() => {
|
|
82
|
-
restOptions.onProgress?.(progress);
|
|
83
|
-
}, [progress]);
|
|
84
|
-
|
|
85
|
-
// Read the native launch report after the first render commit.
|
|
86
|
-
useEffect(() => {
|
|
87
|
-
void handleNotifyAppReady(restOptions);
|
|
88
|
-
}, []);
|
|
89
106
|
|
|
90
107
|
// Start update check
|
|
91
108
|
useEffect(() => {
|
|
92
109
|
initHotUpdater();
|
|
93
110
|
}, []);
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
downloadedBytes: progressState.downloadedBytes,
|
|
100
|
-
progress: progress,
|
|
101
|
-
status: updateStatus,
|
|
102
|
-
message: message,
|
|
103
|
-
totalBytes: progressState.totalBytes
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
return /*#__PURE__*/_jsx(WrappedComponent, {
|
|
111
|
+
const content = restOptions.fallbackComponent && updateStatus !== "UPDATE_PROCESS_COMPLETED" ? /*#__PURE__*/_jsx(FallbackWithProgress, {
|
|
112
|
+
Fallback: restOptions.fallbackComponent,
|
|
113
|
+
status: updateStatus,
|
|
114
|
+
message: message
|
|
115
|
+
}) : /*#__PURE__*/_jsx(WrappedComponent, {
|
|
107
116
|
...props
|
|
108
117
|
});
|
|
118
|
+
if (!restOptions.onProgress) {
|
|
119
|
+
return content;
|
|
120
|
+
}
|
|
121
|
+
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
122
|
+
children: [content, /*#__PURE__*/_jsx(ProgressReporter, {
|
|
123
|
+
onProgress: restOptions.onProgress
|
|
124
|
+
})]
|
|
125
|
+
});
|
|
109
126
|
};
|
|
110
127
|
return HotUpdaterHOC;
|
|
111
128
|
};
|
package/lib/module/wrap.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","useState","checkForUpdate","useEventCallback","
|
|
1
|
+
{"version":3,"names":["React","useEffect","useState","handleNotifyAppReady","checkForUpdate","useEventCallback","getUpdateId","reload","useHotUpdaterStore","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","init","options","wrap","reloadOnForceUpdate","restOptions","ProgressReporter","onProgress","progress","state","FallbackWithProgress","Fallback","status","message","progressState","artifactType","details","WrappedComponent","HotUpdaterHOC","props","setMessage","updateStatus","setUpdateStatus","initHotUpdater","readiness","updateInfo","client","updateStrategy","requestHeaders","requestTimeout","onError","onUpdateProcessCompleted","shouldForceUpdate","id","updateBundle","catch","error","isSuccess","Error","normalizedError","String","content","fallbackComponent","children"],"sourceRoot":"../../src","sources":["wrap.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { HotUpdaterError } from "./error";
|
|
2
|
+
import { type NotifyAppReadyResult } from "./native";
|
|
3
|
+
import { emitPluginHook } from "./pluginHost";
|
|
4
|
+
export type NotifyAppReadyOptions = {
|
|
5
|
+
onNotifyAppReady?: (result: NotifyAppReadyResult) => void;
|
|
6
|
+
onError?: (error: HotUpdaterError | Error | unknown) => void;
|
|
7
|
+
};
|
|
8
|
+
/** Android 11+: why the app's previous main process exited, once the launch was read. */
|
|
9
|
+
export declare const getPreviousProcessExit: () => string | null;
|
|
10
|
+
/**
|
|
11
|
+
* The Release the running bundle was selected as: the active or stable
|
|
12
|
+
* selection that names it on the current channel.
|
|
13
|
+
*/
|
|
14
|
+
export declare const getRunningReleaseId: (bundleId: string, channel: string) => string | null;
|
|
15
|
+
/** Reads this runtime's launch once native finalizes it and reports it to plugins. */
|
|
16
|
+
export declare const handleNotifyAppReady: (options: NotifyAppReadyOptions) => Promise<NotifyAppReadyResult | undefined>;
|
|
17
|
+
/**
|
|
18
|
+
* Calls a plugin hook after this runtime's `onAppReady`, so plugins see the
|
|
19
|
+
* launch before anything that followed it. The event is built now, from the
|
|
20
|
+
* state it describes, and only when a plugin listens.
|
|
21
|
+
*/
|
|
22
|
+
export declare const emitAfterAppReady: typeof emitPluginHook;
|
|
23
|
+
//# sourceMappingURL=appReady.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appReady.d.ts","sourceRoot":"","sources":["../../../src/appReady.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAKL,KAAK,oBAAoB,EAE1B,MAAM,UAAU,CAAC;AAClB,OAAO,EAGL,cAAc,EACf,MAAM,cAAc,CAAC;AAEtB,MAAM,MAAM,qBAAqB,GAAG;IAClC,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAC1D,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,GAAG,KAAK,GAAG,OAAO,KAAK,IAAI,CAAC;CAC9D,CAAC;AAUF,yFAAyF;AACzF,eAAO,MAAM,sBAAsB,QAAO,MAAM,GAAG,IAA2B,CAAC;AAkB/E;;;GAGG;AACH,eAAO,MAAM,mBAAmB,aACpB,MAAM,WACP,MAAM,KACd,MAAM,GAAG,IAQX,CAAC;AA4DF,sFAAsF;AACtF,eAAO,MAAM,oBAAoB,YACtB,qBAAqB,KAC7B,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAI1C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,OAAO,cAWtC,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { ReleaseTransitionKind, UpdateErrorResource, UpdateErrorStage } from "./clientPlugin";
|
|
2
2
|
import type { HotUpdaterHttpClient } from "./httpClient";
|
|
3
|
+
export type { ReleaseTransitionKind };
|
|
3
4
|
export interface CheckForUpdateOptions {
|
|
4
5
|
/**
|
|
5
6
|
* Update strategy
|
|
@@ -21,7 +22,7 @@ export interface CheckForUpdateOptions {
|
|
|
21
22
|
*/
|
|
22
23
|
requestTimeout?: number;
|
|
23
24
|
}
|
|
24
|
-
export type CheckForUpdateResult =
|
|
25
|
+
export type CheckForUpdateResult = {
|
|
25
26
|
readonly id: string;
|
|
26
27
|
readonly message: string | null;
|
|
27
28
|
readonly rolloutCohortCount: number;
|
|
@@ -36,10 +37,21 @@ export type CheckForUpdateResult = ArtifactInfo & {
|
|
|
36
37
|
*/
|
|
37
38
|
updateBundle: () => Promise<boolean>;
|
|
38
39
|
};
|
|
39
|
-
export type ReleaseTransitionKind = "INSTALL" | "ADOPT_RELEASE" | "USE_EMBEDDED" | "USE_BUILTIN";
|
|
40
40
|
export interface InternalCheckForUpdateOptions extends CheckForUpdateOptions {
|
|
41
|
-
insights?: boolean;
|
|
42
41
|
client: HotUpdaterHttpClient;
|
|
43
42
|
}
|
|
43
|
+
/** The running bundle, the channel checked, and the update's target. */
|
|
44
|
+
type UpdateErrorScope = {
|
|
45
|
+
readonly channel: string;
|
|
46
|
+
readonly bundleId: string;
|
|
47
|
+
readonly updateStrategy: "fingerprint" | "appVersion";
|
|
48
|
+
readonly targetBundleId?: string;
|
|
49
|
+
readonly targetReleaseId?: string | null;
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* Tells plugins why an update failed, when it failed as an update. An error
|
|
53
|
+
* the SDK's JavaScript raised happened in `stage`, fetching `resource`.
|
|
54
|
+
*/
|
|
55
|
+
export declare const reportUpdateError: (error: unknown, stage: UpdateErrorStage, resource: UpdateErrorResource | undefined, scope: UpdateErrorScope) => void;
|
|
44
56
|
export declare function checkForUpdate(options: InternalCheckForUpdateOptions): Promise<CheckForUpdateResult | null>;
|
|
45
57
|
//# sourceMappingURL=checkForUpdate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkForUpdate.d.ts","sourceRoot":"","sources":["../../../src/checkForUpdate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"checkForUpdate.d.ts","sourceRoot":"","sources":["../../../src/checkForUpdate.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EACV,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAoBzD,YAAY,EAAE,qBAAqB,EAAE,CAAC;AAEtC,MAAM,WAAW,qBAAqB;IACpC;;;;;OAKG;IACH,cAAc,EAAE,YAAY,GAAG,aAAa,CAAC;IAE7C;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,QAAQ,CAAC;IACvC,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,cAAc,CAAC,EAAE,qBAAqB,CAAC;IAChD;;;OAGG;IACH,YAAY,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CACtC,CAAC;AAEF,MAAM,WAAW,6BAA8B,SAAQ,qBAAqB;IAC1E,MAAM,EAAE,oBAAoB,CAAC;CAC9B;AAyCD,wEAAwE;AACxE,KAAK,gBAAgB,GAAG;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,aAAa,GAAG,YAAY,CAAC;IACtD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,UACrB,OAAO,SACP,gBAAgB,YACb,mBAAmB,GAAG,SAAS,SAClC,gBAAgB,KACtB,IAqBF,CAAC;AAuRF,wBAAsB,cAAc,CAClC,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CA2EtC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { defineClientPlugin, type AppReadyResult, type BundleDownloadedInfo, type HotUpdaterClientContext, type HotUpdaterClientHooks, type HotUpdaterClientPlugin, type HotUpdaterClientStorage, type ReleaseTransitionKind, type UpdateCheckResult, type UpdateError, type UpdateErrorReason, type UpdateErrorResource, type UpdateErrorStage, type UpdateErrorTransport, type UpdateStrategy, } from "@hot-updater/protocol";
|
|
2
|
+
//# sourceMappingURL=clientPlugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clientPlugin.d.ts","sourceRoot":"","sources":["../../../src/clientPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,cAAc,GACpB,MAAM,uBAAuB,CAAC"}
|