@hot-updater/react-native 1.0.0-rc.34 → 1.0.0-rc.36
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/build.gradle +13 -2
- package/android/proguard-rules.pro +0 -9
- package/android/src/bridge/BridgeReactInstance.kt +38 -0
- package/android/src/bridgeless/BridgeReactInstance.kt +24 -0
- package/android/src/main/java/com/hotupdater/ActivityStartGate.kt +94 -0
- package/android/src/main/java/com/hotupdater/BundleFileStorageService.kt +119 -16
- package/android/src/main/java/com/hotupdater/BundleMetadata.kt +35 -0
- package/android/src/main/java/com/hotupdater/HotUpdaterImpl.kt +13 -0
- package/android/src/main/java/com/hotupdater/HotUpdaterRecoveryManager.kt +38 -138
- package/android/src/newarch/JavaScriptExceptionHooks.kt +48 -0
- package/android/src/newarch/ReactIntegrationManager.kt +6 -32
- package/android/src/oldarch/JavaScriptExceptionHooks.kt +71 -0
- package/ios/HotUpdater/Internal/BundleFileStorageService.swift +93 -15
- package/ios/HotUpdater/Internal/BundleMetadata.swift +53 -1
- package/ios/HotUpdater/Internal/HotUpdater.mm +19 -22
- package/ios/HotUpdater/Internal/HotUpdaterImpl.swift +39 -0
- package/lib/commonjs/pluginHost.js +1 -0
- package/lib/commonjs/pluginHost.js.map +1 -1
- package/lib/commonjs/sdkVersion.js +1 -1
- package/lib/module/pluginHost.js +2 -1
- package/lib/module/pluginHost.js.map +1 -1
- package/lib/module/sdkVersion.js +1 -1
- package/lib/typescript/commonjs/pluginHost.d.ts.map +1 -1
- package/lib/typescript/commonjs/sdkVersion.d.ts +1 -1
- package/lib/typescript/module/pluginHost.d.ts.map +1 -1
- package/lib/typescript/module/sdkVersion.d.ts +1 -1
- package/package.json +3 -3
- package/src/pluginHost.ts +2 -0
- package/src/sdkVersion.ts +1 -1
|
@@ -213,31 +213,28 @@ extern "C" NSString *HotUpdaterGetMinBundleId(void)
|
|
|
213
213
|
#if DEBUG
|
|
214
214
|
uuid = @"00000000-0000-0000-0000-000000000000";
|
|
215
215
|
#else
|
|
216
|
-
// Step 1:
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
if (customValue
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
if (
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
uuid = customValue;
|
|
234
|
-
RCTLogInfo(@"[HotUpdater.mm] Using custom MIN_BUNDLE_ID from Info.plist: %@", uuid);
|
|
216
|
+
// Step 1: Use the HOT_UPDATER_MIN_BUNDLE_ID build setting, which the
|
|
217
|
+
// hot-updater CLI passes to xcodebuild and the Info.plist slot it adds
|
|
218
|
+
// (`$(HOT_UPDATER_MIN_BUNDLE_ID)`) carries into the app, as Android
|
|
219
|
+
// takes -PMIN_BUNDLE_ID.
|
|
220
|
+
NSString *customValue = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"HOT_UPDATER_MIN_BUNDLE_ID"];
|
|
221
|
+
if ([customValue isKindOfClass:[NSString class]]) {
|
|
222
|
+
NSString *trimmed = [customValue stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
|
|
223
|
+
// An unset build setting leaves the slot empty or unexpanded; anything
|
|
224
|
+
// but a UUID falls back to the compile time below.
|
|
225
|
+
NSUUID *parsed = trimmed.length > 0 ? [[NSUUID alloc] initWithUUIDString:trimmed] : nil;
|
|
226
|
+
if (parsed) {
|
|
227
|
+
uuid = parsed.UUIDString.lowercaseString;
|
|
228
|
+
RCTLogInfo(@"[HotUpdater.mm] Using MIN_BUNDLE_ID from the HOT_UPDATER_MIN_BUNDLE_ID build setting: %@", uuid);
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
if (trimmed.length > 0 && ![trimmed isEqualToString:@"$(HOT_UPDATER_MIN_BUNDLE_ID)"]) {
|
|
232
|
+
RCTLogWarn(@"[HotUpdater.mm] Ignoring HOT_UPDATER_MIN_BUNDLE_ID %@: not a UUID", trimmed);
|
|
235
233
|
}
|
|
236
|
-
return;
|
|
237
234
|
}
|
|
238
235
|
|
|
239
|
-
// Step
|
|
240
|
-
RCTLogInfo(@"[HotUpdater.mm] No
|
|
236
|
+
// Step 2: Fall back to the compile time (26-hour subtraction)
|
|
237
|
+
RCTLogInfo(@"[HotUpdater.mm] No HOT_UPDATER_MIN_BUNDLE_ID build setting, using the compile time");
|
|
241
238
|
|
|
242
239
|
NSString *compileDateStr = [NSString stringWithFormat:@"%s %s", __DATE__, __TIME__];
|
|
243
240
|
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import Foundation
|
|
2
2
|
import React
|
|
3
|
+
import UIKit
|
|
3
4
|
|
|
4
5
|
private func hotUpdaterUncaughtExceptionHandler(_ exception: NSException) {
|
|
5
6
|
HotUpdaterRecoveryManager.shared.handleUncaughtException(exception)
|
|
@@ -58,6 +59,7 @@ private func hotUpdaterGetMinBundleId() -> String {
|
|
|
58
59
|
private let releaseCatalogCache: ReleaseCatalogCacheService
|
|
59
60
|
private let keyValueStorage: KeyValueStorageService
|
|
60
61
|
private var currentLaunchSelection: LaunchSelection?
|
|
62
|
+
private var launchStartObservers: [NSObjectProtocol] = []
|
|
61
63
|
|
|
62
64
|
private static let DEFAULT_CHANNEL = "production"
|
|
63
65
|
private static let CHANNEL_STORAGE_KEY = "HotUpdaterChannel"
|
|
@@ -703,12 +705,49 @@ private func hotUpdaterGetMinBundleId() -> String {
|
|
|
703
705
|
|
|
704
706
|
let pendingRecovery = recoveryManager.consumePendingCrashRecovery()
|
|
705
707
|
let selection = bundleStorage.prepareLaunch(bundle: bundle, pendingRecovery: pendingRecovery)
|
|
708
|
+
markLaunchStartedInForeground(selection)
|
|
706
709
|
recoveryManager.startMonitoring(bundleId: selection.launchedBundleId, shouldRollback: selection.shouldRollbackOnCrash) { [weak self] launchedBundleId in
|
|
707
710
|
self?.bundleStorage.markLaunchCompleted(bundleId: launchedBundleId)
|
|
708
711
|
}
|
|
709
712
|
currentLaunchSelection = selection
|
|
710
713
|
return selection
|
|
711
714
|
}
|
|
715
|
+
|
|
716
|
+
// A background launch, such as a silent push, may never render. Only a
|
|
717
|
+
// launch in the foreground may leave an unfinished launch for the next
|
|
718
|
+
// process to roll back.
|
|
719
|
+
private func markLaunchStartedInForeground(_ selection: LaunchSelection) {
|
|
720
|
+
let bundleId = selection.shouldRollbackOnCrash ? selection.launchedBundleId : nil
|
|
721
|
+
let mark = { [weak self] in
|
|
722
|
+
guard let self else { return }
|
|
723
|
+
self.removeLaunchStartObservers()
|
|
724
|
+
guard let bundleId else { return }
|
|
725
|
+
guard UIApplication.shared.applicationState == .background else {
|
|
726
|
+
self.bundleStorage.markLaunchStarted(bundleId: bundleId)
|
|
727
|
+
return
|
|
728
|
+
}
|
|
729
|
+
self.launchStartObservers = [
|
|
730
|
+
UIApplication.willEnterForegroundNotification,
|
|
731
|
+
UIApplication.didBecomeActiveNotification,
|
|
732
|
+
].map { name in
|
|
733
|
+
NotificationCenter.default.addObserver(forName: name, object: nil, queue: .main) { [weak self] _ in
|
|
734
|
+
self?.removeLaunchStartObservers()
|
|
735
|
+
self?.bundleStorage.markLaunchStarted(bundleId: bundleId)
|
|
736
|
+
}
|
|
737
|
+
}
|
|
738
|
+
}
|
|
739
|
+
// UIApplication is read on the main thread.
|
|
740
|
+
if Thread.isMainThread {
|
|
741
|
+
mark()
|
|
742
|
+
} else {
|
|
743
|
+
DispatchQueue.main.async(execute: mark)
|
|
744
|
+
}
|
|
745
|
+
}
|
|
746
|
+
|
|
747
|
+
private func removeLaunchStartObservers() {
|
|
748
|
+
launchStartObservers.forEach { NotificationCenter.default.removeObserver($0) }
|
|
749
|
+
launchStartObservers = []
|
|
750
|
+
}
|
|
712
751
|
}
|
|
713
752
|
|
|
714
753
|
@objcMembers
|
|
@@ -28,6 +28,7 @@ const {
|
|
|
28
28
|
},
|
|
29
29
|
getInstallId: () => (0, _native.getInstallId)(),
|
|
30
30
|
getAppVersion: () => (0, _native.getAppVersion)(),
|
|
31
|
+
getMinBundleId: () => (0, _native.getMinBundleId)(),
|
|
31
32
|
getBundleId: () => (0, _native.getBundleId)(),
|
|
32
33
|
getChannel: () => (0, _native.getChannel)(),
|
|
33
34
|
getCohort: () => (0, _native.getCohort)(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_protocol","require","_reactNative","_native","_sdkVersion","configurePlugins","hasPluginHook","buildPluginEvent","dispatchPluginHook","emitPluginHook","createPluginHost","fetch","url","init","platform","Platform","OS","isDebugBuild","__DEV__","sdkVersion","HOT_UPDATER_SDK_VERSION","getInstallId","getAppVersion","getBundleId","getChannel","getCohort","getFingerprintHash","getStorageItem","key","setStorageItem","value","now","Date","exports"],"sourceRoot":"../../src","sources":["pluginHost.ts"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,OAAA,GAAAF,OAAA;
|
|
1
|
+
{"version":3,"names":["_protocol","require","_reactNative","_native","_sdkVersion","configurePlugins","hasPluginHook","buildPluginEvent","dispatchPluginHook","emitPluginHook","createPluginHost","fetch","url","init","platform","Platform","OS","isDebugBuild","__DEV__","sdkVersion","HOT_UPDATER_SDK_VERSION","getInstallId","getAppVersion","getMinBundleId","getBundleId","getChannel","getCohort","getFingerprintHash","getStorageItem","key","setStorageItem","value","now","Date","exports"],"sourceRoot":"../../src","sources":["pluginHost.ts"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,OAAA,GAAAF,OAAA;AAWA,IAAAG,WAAA,GAAAH,OAAA;AAIA;AACO,MAAM;EACXI,gBAAgB;EAChBC,aAAa;EACbC,gBAAgB;EAChBC,kBAAkB;EAClBC;AACF,CAAC,GAAG,IAAAC,0BAAgB,EAAC;EACnBC,KAAK,EAAEA,CAACC,GAAG,EAAEC,IAAI,KAAKF,KAAK,CAACC,GAAG,EAAEC,IAAI,CAAC;EACtC,IAAIC,QAAQA,CAAA,EAAG;IACb,OAAOC,qBAAQ,CAACC,EAAE,KAAK,SAAS,GAAG,SAAS,GAAG,KAAK;EACtD,CAAC;EACD,IAAIC,YAAYA,CAAA,EAAG;IACjB,OAAO,OAAOC,OAAO,KAAK,WAAW,IAAIA,OAAO;EAClD,CAAC;EACD,IAAIC,UAAUA,CAAA,EAAG;IACf,OAAOC,mCAAuB;EAChC,CAAC;EACDC,YAAY,EAAEA,CAAA,KAAM,IAAAA,oBAAY,EAAC,CAAC;EAClCC,aAAa,EAAEA,CAAA,KAAM,IAAAA,qBAAa,EAAC,CAAC;EACpCC,cAAc,EAAEA,CAAA,KAAM,IAAAA,sBAAc,EAAC,CAAC;EACtCC,WAAW,EAAEA,CAAA,KAAM,IAAAA,mBAAW,EAAC,CAAC;EAChCC,UAAU,EAAEA,CAAA,KAAM,IAAAA,kBAAU,EAAC,CAAC;EAC9BC,SAAS,EAAEA,CAAA,KAAM,IAAAA,iBAAS,EAAC,CAAC;EAC5BC,kBAAkB,EAAEA,CAAA,KAAM,IAAAA,0BAAkB,EAAC,CAAC;EAC9CC,cAAc,EAAGC,GAAG,IAAK,IAAAD,sBAAc,EAACC,GAAG,CAAC;EAC5CC,cAAc,EAAEA,CAACD,GAAG,EAAEE,KAAK,KAAK,IAAAD,sBAAc,EAACD,GAAG,EAAEE,KAAK,CAAC;EAC1DC,GAAG,EAAEA,CAAA,KAAMC,IAAI,CAACD,GAAG,CAAC;AACtB,CAAC,CAAC;AAACE,OAAA,CAAAzB,cAAA,GAAAA,cAAA;AAAAyB,OAAA,CAAA1B,kBAAA,GAAAA,kBAAA;AAAA0B,OAAA,CAAA3B,gBAAA,GAAAA,gBAAA;AAAA2B,OAAA,CAAA5B,aAAA,GAAAA,aAAA;AAAA4B,OAAA,CAAA7B,gBAAA,GAAAA,gBAAA","ignoreList":[]}
|
|
@@ -4,5 +4,5 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.HOT_UPDATER_SDK_VERSION = void 0;
|
|
7
|
-
const HOT_UPDATER_SDK_VERSION = exports.HOT_UPDATER_SDK_VERSION = "1.0.0-rc.
|
|
7
|
+
const HOT_UPDATER_SDK_VERSION = exports.HOT_UPDATER_SDK_VERSION = "1.0.0-rc.36";
|
|
8
8
|
//# sourceMappingURL=sdkVersion.js.map
|
package/lib/module/pluginHost.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { createPluginHost } from "@hot-updater/protocol";
|
|
4
4
|
import { Platform } from "react-native";
|
|
5
|
-
import { getAppVersion, getBundleId, getChannel, getCohort, getFingerprintHash, getInstallId, getStorageItem, setStorageItem } from "./native.js";
|
|
5
|
+
import { getAppVersion, getBundleId, getChannel, getCohort, getFingerprintHash, getInstallId, getMinBundleId, getStorageItem, setStorageItem } from "./native.js";
|
|
6
6
|
import { HOT_UPDATER_SDK_VERSION } from "./sdkVersion.js";
|
|
7
7
|
/** The app's plugin host: plugins read the native module and fetch the configured server. */
|
|
8
8
|
export const {
|
|
@@ -24,6 +24,7 @@ export const {
|
|
|
24
24
|
},
|
|
25
25
|
getInstallId: () => getInstallId(),
|
|
26
26
|
getAppVersion: () => getAppVersion(),
|
|
27
|
+
getMinBundleId: () => getMinBundleId(),
|
|
27
28
|
getBundleId: () => getBundleId(),
|
|
28
29
|
getChannel: () => getChannel(),
|
|
29
30
|
getCohort: () => getCohort(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createPluginHost","Platform","getAppVersion","getBundleId","getChannel","getCohort","getFingerprintHash","getInstallId","getStorageItem","setStorageItem","HOT_UPDATER_SDK_VERSION","configurePlugins","hasPluginHook","buildPluginEvent","dispatchPluginHook","emitPluginHook","fetch","url","init","platform","OS","isDebugBuild","__DEV__","sdkVersion","key","value","now","Date"],"sourceRoot":"../../src","sources":["pluginHost.ts"],"mappings":";;AAAA,SAASA,gBAAgB,QAAQ,uBAAuB;AACxD,SAASC,QAAQ,QAAQ,cAAc;AAEvC,SACEC,aAAa,EACbC,WAAW,EACXC,UAAU,EACVC,SAAS,EACTC,kBAAkB,EAClBC,YAAY,EACZC,cAAc,EACdC,cAAc,QACT,aAAU;AACjB,SAASC,uBAAuB,QAAQ,iBAAc;AAItD;AACA,OAAO,MAAM;EACXC,gBAAgB;EAChBC,aAAa;EACbC,gBAAgB;EAChBC,kBAAkB;EAClBC;AACF,CAAC,
|
|
1
|
+
{"version":3,"names":["createPluginHost","Platform","getAppVersion","getBundleId","getChannel","getCohort","getFingerprintHash","getInstallId","getMinBundleId","getStorageItem","setStorageItem","HOT_UPDATER_SDK_VERSION","configurePlugins","hasPluginHook","buildPluginEvent","dispatchPluginHook","emitPluginHook","fetch","url","init","platform","OS","isDebugBuild","__DEV__","sdkVersion","key","value","now","Date"],"sourceRoot":"../../src","sources":["pluginHost.ts"],"mappings":";;AAAA,SAASA,gBAAgB,QAAQ,uBAAuB;AACxD,SAASC,QAAQ,QAAQ,cAAc;AAEvC,SACEC,aAAa,EACbC,WAAW,EACXC,UAAU,EACVC,SAAS,EACTC,kBAAkB,EAClBC,YAAY,EACZC,cAAc,EACdC,cAAc,EACdC,cAAc,QACT,aAAU;AACjB,SAASC,uBAAuB,QAAQ,iBAAc;AAItD;AACA,OAAO,MAAM;EACXC,gBAAgB;EAChBC,aAAa;EACbC,gBAAgB;EAChBC,kBAAkB;EAClBC;AACF,CAAC,GAAGhB,gBAAgB,CAAC;EACnBiB,KAAK,EAAEA,CAACC,GAAG,EAAEC,IAAI,KAAKF,KAAK,CAACC,GAAG,EAAEC,IAAI,CAAC;EACtC,IAAIC,QAAQA,CAAA,EAAG;IACb,OAAOnB,QAAQ,CAACoB,EAAE,KAAK,SAAS,GAAG,SAAS,GAAG,KAAK;EACtD,CAAC;EACD,IAAIC,YAAYA,CAAA,EAAG;IACjB,OAAO,OAAOC,OAAO,KAAK,WAAW,IAAIA,OAAO;EAClD,CAAC;EACD,IAAIC,UAAUA,CAAA,EAAG;IACf,OAAOb,uBAAuB;EAChC,CAAC;EACDJ,YAAY,EAAEA,CAAA,KAAMA,YAAY,CAAC,CAAC;EAClCL,aAAa,EAAEA,CAAA,KAAMA,aAAa,CAAC,CAAC;EACpCM,cAAc,EAAEA,CAAA,KAAMA,cAAc,CAAC,CAAC;EACtCL,WAAW,EAAEA,CAAA,KAAMA,WAAW,CAAC,CAAC;EAChCC,UAAU,EAAEA,CAAA,KAAMA,UAAU,CAAC,CAAC;EAC9BC,SAAS,EAAEA,CAAA,KAAMA,SAAS,CAAC,CAAC;EAC5BC,kBAAkB,EAAEA,CAAA,KAAMA,kBAAkB,CAAC,CAAC;EAC9CG,cAAc,EAAGgB,GAAG,IAAKhB,cAAc,CAACgB,GAAG,CAAC;EAC5Cf,cAAc,EAAEA,CAACe,GAAG,EAAEC,KAAK,KAAKhB,cAAc,CAACe,GAAG,EAAEC,KAAK,CAAC;EAC1DC,GAAG,EAAEA,CAAA,KAAMC,IAAI,CAACD,GAAG,CAAC;AACtB,CAAC,CAAC","ignoreList":[]}
|
package/lib/module/sdkVersion.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pluginHost.d.ts","sourceRoot":"","sources":["../../../src/pluginHost.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pluginHost.d.ts","sourceRoot":"","sources":["../../../src/pluginHost.ts"],"names":[],"mappings":"AAgBA,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,6FAA6F;AAC7F,eAAO,MACL,gBAAgB,8JAChB,aAAa,qEACb,gBAAgB,wNAChB,kBAAkB,kKAClB,cAAc,+JAsBd,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const HOT_UPDATER_SDK_VERSION = "1.0.0-rc.
|
|
1
|
+
export declare const HOT_UPDATER_SDK_VERSION = "1.0.0-rc.36";
|
|
2
2
|
//# sourceMappingURL=sdkVersion.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pluginHost.d.ts","sourceRoot":"","sources":["../../../src/pluginHost.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pluginHost.d.ts","sourceRoot":"","sources":["../../../src/pluginHost.ts"],"names":[],"mappings":"AAgBA,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,6FAA6F;AAC7F,eAAO,MACL,gBAAgB,8JAChB,aAAa,qEACb,gBAAgB,wNAChB,kBAAkB,kKAClB,cAAc,+JAsBd,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const HOT_UPDATER_SDK_VERSION = "1.0.0-rc.
|
|
1
|
+
export declare const HOT_UPDATER_SDK_VERSION = "1.0.0-rc.36";
|
|
2
2
|
//# sourceMappingURL=sdkVersion.d.ts.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hot-updater/react-native",
|
|
3
|
-
"version": "1.0.0-rc.
|
|
3
|
+
"version": "1.0.0-rc.36",
|
|
4
4
|
"description": "React Native OTA solution for self-hosted",
|
|
5
5
|
"source": "./src/index.ts",
|
|
6
6
|
"main": "./lib/commonjs/index.js",
|
|
@@ -123,8 +123,8 @@
|
|
|
123
123
|
},
|
|
124
124
|
"dependencies": {
|
|
125
125
|
"use-sync-external-store": "1.5.0",
|
|
126
|
-
"@hot-updater/
|
|
127
|
-
"@hot-updater/
|
|
126
|
+
"@hot-updater/plugin-insights": "1.0.0-rc.36",
|
|
127
|
+
"@hot-updater/protocol": "1.0.0-rc.36"
|
|
128
128
|
},
|
|
129
129
|
"scripts": {
|
|
130
130
|
"build": "node ./scripts/sync-sdk-version.mjs run -- bob build",
|
package/src/pluginHost.ts
CHANGED
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
getCohort,
|
|
9
9
|
getFingerprintHash,
|
|
10
10
|
getInstallId,
|
|
11
|
+
getMinBundleId,
|
|
11
12
|
getStorageItem,
|
|
12
13
|
setStorageItem,
|
|
13
14
|
} from "./native";
|
|
@@ -35,6 +36,7 @@ export const {
|
|
|
35
36
|
},
|
|
36
37
|
getInstallId: () => getInstallId(),
|
|
37
38
|
getAppVersion: () => getAppVersion(),
|
|
39
|
+
getMinBundleId: () => getMinBundleId(),
|
|
38
40
|
getBundleId: () => getBundleId(),
|
|
39
41
|
getChannel: () => getChannel(),
|
|
40
42
|
getCohort: () => getCohort(),
|
package/src/sdkVersion.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const HOT_UPDATER_SDK_VERSION = "1.0.0-rc.
|
|
1
|
+
export const HOT_UPDATER_SDK_VERSION = "1.0.0-rc.36";
|