@hot-updater/react-native 0.20.10 → 0.20.12

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.
Files changed (51) hide show
  1. package/android/src/main/java/com/hotupdater/HotUpdater.kt +1 -1
  2. package/android/src/main/java/com/hotupdater/HotUpdaterImpl.kt +6 -6
  3. package/android/src/newarch/HotUpdaterModule.kt +11 -5
  4. package/android/src/newarch/ReactIntegrationManager.kt +40 -2
  5. package/android/src/oldarch/HotUpdaterModule.kt +11 -5
  6. package/android/src/oldarch/HotUpdaterSpec.kt +1 -1
  7. package/android/src/oldarch/ReactIntegrationManager.kt +36 -2
  8. package/ios/HotUpdater/Internal/HotUpdater.mm +18 -15
  9. package/lib/commonjs/index.js +3 -3
  10. package/lib/commonjs/index.js.map +1 -1
  11. package/lib/commonjs/native.js +34 -15
  12. package/lib/commonjs/native.js.map +1 -1
  13. package/lib/commonjs/runUpdateProcess.js +2 -2
  14. package/lib/commonjs/runUpdateProcess.js.map +1 -1
  15. package/lib/commonjs/wrap.js +1 -1
  16. package/lib/commonjs/wrap.js.map +1 -1
  17. package/lib/module/checkForUpdate.js.map +1 -1
  18. package/lib/module/index.js +3 -3
  19. package/lib/module/index.js.map +1 -1
  20. package/lib/module/native.js +32 -14
  21. package/lib/module/native.js.map +1 -1
  22. package/lib/module/runUpdateProcess.js +2 -2
  23. package/lib/module/runUpdateProcess.js.map +1 -1
  24. package/lib/module/wrap.js +2 -3
  25. package/lib/module/wrap.js.map +1 -1
  26. package/lib/typescript/commonjs/checkForUpdate.d.ts.map +1 -1
  27. package/lib/typescript/commonjs/index.d.ts +5 -5
  28. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  29. package/lib/typescript/commonjs/native.d.ts +1 -1
  30. package/lib/typescript/commonjs/native.d.ts.map +1 -1
  31. package/lib/typescript/commonjs/runUpdateProcess.d.ts +1 -1
  32. package/lib/typescript/commonjs/specs/NativeHotUpdater.d.ts +1 -1
  33. package/lib/typescript/commonjs/specs/NativeHotUpdater.d.ts.map +1 -1
  34. package/lib/typescript/commonjs/wrap.d.ts.map +1 -1
  35. package/lib/typescript/module/checkForUpdate.d.ts.map +1 -1
  36. package/lib/typescript/module/index.d.ts +5 -5
  37. package/lib/typescript/module/index.d.ts.map +1 -1
  38. package/lib/typescript/module/native.d.ts +1 -1
  39. package/lib/typescript/module/native.d.ts.map +1 -1
  40. package/lib/typescript/module/runUpdateProcess.d.ts +1 -1
  41. package/lib/typescript/module/specs/NativeHotUpdater.d.ts +1 -1
  42. package/lib/typescript/module/specs/NativeHotUpdater.d.ts.map +1 -1
  43. package/lib/typescript/module/wrap.d.ts.map +1 -1
  44. package/package.json +5 -5
  45. package/plugin/build/withHotUpdater.js +6 -4
  46. package/src/checkForUpdate.ts +1 -1
  47. package/src/index.ts +4 -5
  48. package/src/native.ts +38 -14
  49. package/src/runUpdateProcess.ts +2 -2
  50. package/src/specs/NativeHotUpdater.ts +1 -1
  51. package/src/wrap.tsx +2 -3
@@ -68,7 +68,7 @@ class HotUpdater {
68
68
  * Reloads the React Native application
69
69
  * @param context Application context
70
70
  */
71
- fun reload(context: Context) {
71
+ suspend fun reload(context: Context) {
72
72
  val currentActivity = getCurrentActivity(context)
73
73
  HotUpdaterFactory.getInstance(context).reload(currentActivity)
74
74
  }
@@ -2,9 +2,9 @@ package com.hotupdater
2
2
 
3
3
  import android.app.Activity
4
4
  import android.content.Context
5
- import android.os.Handler
6
- import android.os.Looper
7
5
  import android.util.Log
6
+ import kotlinx.coroutines.Dispatchers
7
+ import kotlinx.coroutines.withContext
8
8
 
9
9
  /**
10
10
  * Core implementation class for HotUpdater functionality
@@ -198,7 +198,7 @@ class HotUpdaterImpl(
198
198
  * Reloads the React Native application
199
199
  * @param activity Current activity (optional)
200
200
  */
201
- fun reload(activity: Activity? = null) {
201
+ suspend fun reload(activity: Activity? = null) {
202
202
  val reactIntegrationManager = ReactIntegrationManager(context)
203
203
  val application = activity?.application ?: return
204
204
 
@@ -206,9 +206,9 @@ class HotUpdaterImpl(
206
206
  val reactApplication = reactIntegrationManager.getReactApplication(application)
207
207
  val bundleURL = getJSBundleFile()
208
208
 
209
- reactIntegrationManager.setJSBundle(reactApplication, bundleURL)
210
-
211
- Handler(Looper.getMainLooper()).post {
209
+ // Perform reload (suspends until safe to reload on new arch)
210
+ withContext(Dispatchers.Main) {
211
+ reactIntegrationManager.setJSBundle(reactApplication, bundleURL)
212
212
  reactIntegrationManager.reload(reactApplication)
213
213
  }
214
214
  } catch (e: Exception) {
@@ -8,6 +8,8 @@ import com.facebook.react.bridge.ReactApplicationContext
8
8
  import com.facebook.react.bridge.ReadableMap
9
9
  import com.facebook.react.bridge.WritableNativeMap
10
10
  import com.facebook.react.modules.core.DeviceEventManagerModule
11
+ import kotlinx.coroutines.CoroutineScope
12
+ import kotlinx.coroutines.Dispatchers
11
13
  import kotlinx.coroutines.launch
12
14
 
13
15
  class HotUpdaterModule internal constructor(
@@ -17,11 +19,15 @@ class HotUpdaterModule internal constructor(
17
19
 
18
20
  override fun getName(): String = NAME
19
21
 
20
- override fun reload() {
21
- try {
22
- HotUpdater.reload(mReactApplicationContext)
23
- } catch (e: Exception) {
24
- Log.d("HotUpdater", "Failed to reload", e)
22
+ override fun reload(promise: Promise) {
23
+ CoroutineScope(Dispatchers.Main.immediate).launch {
24
+ try {
25
+ HotUpdater.reload(mReactApplicationContext)
26
+ promise.resolve(null)
27
+ } catch (e: Exception) {
28
+ Log.d("HotUpdater", "Failed to reload", e)
29
+ promise.reject("reload", e)
30
+ }
25
31
  }
26
32
  }
27
33
 
@@ -3,9 +3,14 @@ package com.hotupdater
3
3
  import android.content.Context
4
4
  import android.util.Log
5
5
  import com.facebook.react.ReactApplication
6
+ import com.facebook.react.ReactHost
7
+ import com.facebook.react.ReactInstanceEventListener
6
8
  import com.facebook.react.bridge.JSBundleLoader
9
+ import com.facebook.react.bridge.ReactContext
7
10
  import com.facebook.react.common.LifecycleState
11
+ import kotlinx.coroutines.suspendCancellableCoroutine
8
12
  import java.lang.reflect.Field
13
+ import kotlin.coroutines.resume
9
14
 
10
15
  class ReactIntegrationManager(
11
16
  context: Context,
@@ -61,12 +66,16 @@ class ReactIntegrationManager(
61
66
  }
62
67
 
63
68
  /**
64
- * Reload the React Native application.
69
+ * Reload the React Native application, ensuring ReactContext is initialized first.
70
+ * Caller should run this on main thread.
65
71
  */
66
- public fun reload(application: ReactApplication) {
72
+ public suspend fun reload(application: ReactApplication) {
67
73
  try {
68
74
  val reactHost = application.reactHost
69
75
  if (reactHost != null) {
76
+ // Ensure initialized; if not, start and wait
77
+ waitForReactContextInitialized(reactHost)
78
+
70
79
  val activity = reactHost.currentReactContext?.currentActivity
71
80
  if (reactHost.lifecycleState != LifecycleState.RESUMED && activity != null) {
72
81
  reactHost.onHostResume(activity)
@@ -95,4 +104,33 @@ class ReactIntegrationManager(
95
104
  Log.d("HotUpdater", "Failed to reload: ${e.message}")
96
105
  }
97
106
  }
107
+
108
+ /**
109
+ * Waits until ReactContext is initialized.
110
+ * @return true if ReactContext was already initialized; false if we waited for it.
111
+ */
112
+ suspend fun waitForReactContextInitialized(reactHost: ReactHost): Boolean {
113
+ return try {
114
+ // If already initialized, return immediately
115
+ if (reactHost.currentReactContext != null) return true
116
+
117
+ // Wait for initialization; MainApplication handles starting the host
118
+ suspendCancellableCoroutine { continuation ->
119
+ val listener =
120
+ object : ReactInstanceEventListener {
121
+ override fun onReactContextInitialized(context: ReactContext) {
122
+ reactHost.removeReactInstanceEventListener(this)
123
+ if (continuation.isActive) continuation.resume(Unit)
124
+ }
125
+ }
126
+
127
+ reactHost.addReactInstanceEventListener(listener)
128
+ continuation.invokeOnCancellation { reactHost.removeReactInstanceEventListener(listener) }
129
+ }
130
+ false
131
+ } catch (e: Exception) {
132
+ Log.d("HotUpdater", "waitForReactContextInitialized failed: ${e.message}")
133
+ true
134
+ }
135
+ }
98
136
  }
@@ -9,6 +9,8 @@ import com.facebook.react.bridge.ReactMethod
9
9
  import com.facebook.react.bridge.ReadableMap
10
10
  import com.facebook.react.bridge.WritableNativeMap
11
11
  import com.facebook.react.modules.core.DeviceEventManagerModule
12
+ import kotlinx.coroutines.CoroutineScope
13
+ import kotlinx.coroutines.Dispatchers
12
14
  import kotlinx.coroutines.launch
13
15
 
14
16
  class HotUpdaterModule internal constructor(
@@ -19,11 +21,15 @@ class HotUpdaterModule internal constructor(
19
21
  override fun getName(): String = NAME
20
22
 
21
23
  @ReactMethod
22
- override fun reload() {
23
- try {
24
- HotUpdater.reload(mReactApplicationContext)
25
- } catch (e: Exception) {
26
- Log.d("HotUpdater", "Failed to reload", e)
24
+ override fun reload(promise: Promise) {
25
+ CoroutineScope(Dispatchers.Main.immediate).launch {
26
+ try {
27
+ HotUpdater.reload(mReactApplicationContext)
28
+ promise.resolve(null)
29
+ } catch (e: Exception) {
30
+ Log.d("HotUpdater", "Failed to reload", e)
31
+ promise.reject("reload", e)
32
+ }
27
33
  }
28
34
  }
29
35
 
@@ -13,5 +13,5 @@ abstract class HotUpdaterSpec internal constructor(
13
13
  promise: Promise,
14
14
  )
15
15
 
16
- abstract fun reload()
16
+ abstract fun reload(promise: Promise)
17
17
  }
@@ -3,8 +3,12 @@ package com.hotupdater
3
3
  import android.content.Context
4
4
  import android.util.Log
5
5
  import com.facebook.react.ReactApplication
6
+ import com.facebook.react.ReactInstanceEventListener
6
7
  import com.facebook.react.bridge.JSBundleLoader
8
+ import com.facebook.react.bridge.ReactContext
9
+ import kotlinx.coroutines.suspendCancellableCoroutine
7
10
  import java.lang.reflect.Field
11
+ import kotlin.coroutines.resume
8
12
 
9
13
  class ReactIntegrationManager(
10
14
  context: Context,
@@ -31,11 +35,15 @@ class ReactIntegrationManager(
31
35
  }
32
36
 
33
37
  /**
34
- * Reload the React Native application.
38
+ * Reload the React Native application, ensuring ReactContext is initialized first.
39
+ * Caller should run this on main thread.
35
40
  */
36
- public fun reload(application: ReactApplication) {
41
+ public suspend fun reload(application: ReactApplication) {
37
42
  val reactNativeHost = application.reactNativeHost
38
43
  try {
44
+ // Ensure initialized; if not, start and wait
45
+ waitForReactContextInitialized(application)
46
+
39
47
  reactNativeHost.reactInstanceManager.recreateReactContextInBackground()
40
48
  } catch (e: Exception) {
41
49
  val currentActivity = reactNativeHost.reactInstanceManager.currentReactContext?.currentActivity
@@ -50,4 +58,30 @@ class ReactIntegrationManager(
50
58
  Log.d("HotUpdater", "Failed to reload: ${e.message}")
51
59
  }
52
60
  }
61
+
62
+ /**
63
+ * Waits until ReactContext is initialized.
64
+ * @return true if ReactContext was already initialized; false if we waited for it.
65
+ */
66
+ suspend fun waitForReactContextInitialized(application: ReactApplication): Boolean {
67
+ val reactInstanceManager = application.reactNativeHost.reactInstanceManager
68
+
69
+ // If already initialized, return immediately and indicate so
70
+ if (reactInstanceManager.currentReactContext != null) return true
71
+
72
+ // Otherwise, wait for initialization; MainApplication handles starting the instance
73
+ suspendCancellableCoroutine { continuation ->
74
+ val listener =
75
+ object : ReactInstanceEventListener {
76
+ override fun onReactContextInitialized(context: ReactContext) {
77
+ reactInstanceManager.removeReactInstanceEventListener(this)
78
+ if (continuation.isActive) continuation.resume(Unit)
79
+ }
80
+ }
81
+
82
+ reactInstanceManager.addReactInstanceEventListener(listener)
83
+ continuation.invokeOnCancellation { reactInstanceManager.removeReactInstanceEventListener(listener) }
84
+ }
85
+ return false
86
+ }
53
87
  }
@@ -180,24 +180,27 @@ RCT_EXPORT_MODULE();
180
180
  #pragma mark - React Native Exports (Slimmed Down)
181
181
 
182
182
  // Keep reload logic here as it interacts with RN Bridge
183
- RCT_EXPORT_METHOD(reload) {
183
+ RCT_EXPORT_METHOD(reload:(RCTPromiseResolveBlock)resolve
184
+ reject:(RCTPromiseRejectBlock)reject) {
184
185
  RCTLogInfo(@"[HotUpdater.mm] HotUpdater requested a reload");
185
186
  dispatch_async(dispatch_get_main_queue(), ^{
186
- // Get bundleURL using static instance
187
- NSURL *bundleURL = [_hotUpdaterImpl bundleURL];
188
- RCTLogInfo(@"[HotUpdater.mm] Reloading with bundle URL: %@", bundleURL);
189
- if (bundleURL && super.bridge) {
190
- @try {
191
- // This method of setting bundleURL might be outdated depending on RN version.
192
- // Consider alternatives if this doesn't work reliably.
193
- [super.bridge setValue:bundleURL forKey:@"bundleURL"];
194
- } @catch (NSException *exception) {
195
- RCTLogError(@"[HotUpdater.mm] Failed to set bundleURL on bridge: %@", exception);
187
+ @try {
188
+ // Get bundleURL using static instance
189
+ NSURL *bundleURL = [_hotUpdaterImpl bundleURL];
190
+ RCTLogInfo(@"[HotUpdater.mm] Reloading with bundle URL: %@", bundleURL);
191
+ if (bundleURL && super.bridge) {
192
+ // This method of setting bundleURL might be outdated depending on RN version.
193
+ // Consider alternatives if this doesn't work reliably.
194
+ [super.bridge setValue:bundleURL forKey:@"bundleURL"];
195
+ } else if (!super.bridge) {
196
+ RCTLogWarn(@"[HotUpdater.mm] Bridge is nil, cannot set bundleURL for reload.");
196
197
  }
197
- } else if (!super.bridge) {
198
- RCTLogWarn(@"[HotUpdater.mm] Bridge is nil, cannot set bundleURL for reload.");
198
+ RCTTriggerReloadCommandListeners(@"HotUpdater requested a reload");
199
+ resolve(nil);
200
+ } @catch (NSError *error) {
201
+ RCTLogError(@"[HotUpdater.mm] Failed to reload: %@", error);
202
+ reject(@"RELOAD_ERROR", error.description, error);
199
203
  }
200
- RCTTriggerReloadCommandListeners(@"HotUpdater requested a reload");
201
204
  });
202
205
  }
203
206
 
@@ -239,4 +242,4 @@ RCT_EXPORT_METHOD(updateBundle:(NSDictionary *)params
239
242
  #endif
240
243
 
241
244
 
242
- @end
245
+ @end
@@ -134,7 +134,7 @@ const HotUpdater = exports.HotUpdater = {
134
134
  *
135
135
  * await HotUpdater.updateBundle(updateInfo.id, updateInfo.fileUrl);
136
136
  * if (updateInfo.shouldForceUpdate) {
137
- * HotUpdater.reload();
137
+ * await HotUpdater.reload();
138
138
  * }
139
139
  * ```
140
140
  */
@@ -165,7 +165,7 @@ const HotUpdater = exports.HotUpdater = {
165
165
  * });
166
166
  *
167
167
  * if(result.status !== "UP_TO_DATE" && result.shouldForceUpdate) {
168
- * HotUpdater.reload();
168
+ * await HotUpdater.reload();
169
169
  * }
170
170
  * ```
171
171
  *
@@ -201,7 +201,7 @@ const HotUpdater = exports.HotUpdater = {
201
201
  * fileUrl: updateInfo.fileUrl
202
202
  * });
203
203
  * if (updateInfo.shouldForceUpdate) {
204
- * HotUpdater.reload();
204
+ * await HotUpdater.reload();
205
205
  * }
206
206
  * ```
207
207
  */
@@ -1 +1 @@
1
- {"version":3,"names":["_checkForUpdate","require","_native","_runUpdateProcess","_store","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_wrap","addListener","progress","hotUpdaterStore","setState","HotUpdater","wrap","reload","getAppVersion","getBundleId","getMinBundleId","getChannel","checkForUpdate","runUpdateProcess","updateBundle","getFingerprintHash"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;AAAA,IAAAA,eAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAUA,IAAAE,iBAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AAMAI,MAAA,CAAAC,IAAA,CAAAF,MAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,MAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,MAAA,CAAAI,GAAA;IAAA;EAAA;AAAA;AALA,IAAAS,KAAA,GAAAhB,OAAA;AAOA,IAAAiB,mBAAW,EAAC,YAAY,EAAE,CAAC;EAAEC;AAAS,CAAC,KAAK;EAC1CC,sBAAe,CAACC,QAAQ,CAAC;IACvBF;EACF,CAAC,CAAC;AACJ,CAAC,CAAC;AAEK,MAAMG,UAAU,GAAAT,OAAA,CAAAS,UAAA,GAAG;EACxB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,IAAI,EAAJA,UAAI;EACJ;AACF;AACA;EACEC,MAAM,EAANA,cAAM;EACN;AACF;AACA;EACEC,aAAa,EAAbA,qBAAa;EACb;AACF;AACA;EACEC,WAAW,EAAXA,mBAAW;EACX;AACF;AACA;EACEC,cAAc,EAAdA,sBAAc;EACd;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,UAAU,EAAVA,kBAAU;EACV;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEV,WAAW,EAAXA,mBAAW;EACX;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEW,cAAc,EAAdA,8BAAc;EACd;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,gBAAgB,EAAhBA,kCAAgB;EAChB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,YAAY,EAAZA,oBAAY;EACZ;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,kBAAkB,EAAlBA;AACF,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_checkForUpdate","require","_native","_runUpdateProcess","_store","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_wrap","addListener","progress","hotUpdaterStore","setState","HotUpdater","wrap","reload","getAppVersion","getBundleId","getMinBundleId","getChannel","checkForUpdate","runUpdateProcess","updateBundle","getFingerprintHash"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;AAAA,IAAAA,eAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAUA,IAAAE,iBAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AAIAI,MAAA,CAAAC,IAAA,CAAAF,MAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,MAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,MAAA,CAAAI,GAAA;IAAA;EAAA;AAAA;AAHA,IAAAS,KAAA,GAAAhB,OAAA;AAMA,IAAAiB,mBAAW,EAAC,YAAY,EAAE,CAAC;EAAEC;AAAS,CAAC,KAAK;EAC1CC,sBAAe,CAACC,QAAQ,CAAC;IACvBF;EACF,CAAC,CAAC;AACJ,CAAC,CAAC;AAEK,MAAMG,UAAU,GAAAT,OAAA,CAAAS,UAAA,GAAG;EACxB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,IAAI,EAAJA,UAAI;EACJ;AACF;AACA;EACEC,MAAM,EAANA,cAAM;EACN;AACF;AACA;EACEC,aAAa,EAAbA,qBAAa;EACb;AACF;AACA;EACEC,WAAW,EAAXA,mBAAW;EACX;AACF;AACA;EACEC,cAAc,EAAdA,sBAAc;EACd;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,UAAU,EAAVA,kBAAU;EACV;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEV,WAAW,EAAXA,mBAAW;EACX;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEW,cAAc,EAAdA,8BAAc;EACd;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,gBAAgB,EAAhBA,kCAAgB;EAChB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,YAAY,EAAZA,oBAAY;EACZ;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,kBAAkB,EAAlBA;AACF,CAAC","ignoreList":[]}
@@ -19,6 +19,11 @@ const addListener = (eventName, listener) => {
19
19
  subscription.remove();
20
20
  };
21
21
  };
22
+ exports.addListener = addListener;
23
+ // In-flight update deduplication by bundleId (session-scoped).
24
+ const inflightUpdates = new Map();
25
+ // Tracks the last successfully installed bundleId for this session.
26
+ let lastInstalledBundleId = null;
22
27
 
23
28
  /**
24
29
  * Downloads files and applies them to the app.
@@ -30,26 +35,42 @@ const addListener = (eventName, listener) => {
30
35
  /**
31
36
  * @deprecated Use updateBundle(params: UpdateBundleParamsWithStatus) instead
32
37
  */
33
- exports.addListener = addListener;
38
+
34
39
  async function updateBundle(paramsOrBundleId, fileUrl) {
35
40
  const updateBundleId = typeof paramsOrBundleId === "string" ? paramsOrBundleId : paramsOrBundleId.bundleId;
36
41
  const status = typeof paramsOrBundleId === "string" ? "UPDATE" : paramsOrBundleId.status;
42
+
43
+ // If we have already installed this bundle in this session, skip re-download.
44
+ if (status === "UPDATE" && lastInstalledBundleId === updateBundleId) {
45
+ return true;
46
+ }
37
47
  const currentBundleId = getBundleId();
38
48
 
39
49
  // updateBundleId <= currentBundleId
40
50
  if (status === "UPDATE" && updateBundleId.localeCompare(currentBundleId) <= 0) {
41
51
  throw new Error("Update bundle id is the same as the current bundle id. Preventing infinite update loop.");
42
52
  }
43
- if (typeof paramsOrBundleId === "string") {
44
- return _NativeHotUpdater.default.updateBundle({
45
- bundleId: updateBundleId,
46
- fileUrl: fileUrl || null
47
- });
48
- }
49
- return _NativeHotUpdater.default.updateBundle({
50
- bundleId: updateBundleId,
51
- fileUrl: paramsOrBundleId.fileUrl
52
- });
53
+
54
+ // In-flight guard: return the same promise if the same bundle is already updating.
55
+ const existing = inflightUpdates.get(updateBundleId);
56
+ if (existing) return existing;
57
+ const targetFileUrl = typeof paramsOrBundleId === "string" ? fileUrl ?? null : paramsOrBundleId.fileUrl;
58
+ const promise = (async () => {
59
+ try {
60
+ const ok = await _NativeHotUpdater.default.updateBundle({
61
+ bundleId: updateBundleId,
62
+ fileUrl: targetFileUrl
63
+ });
64
+ if (ok) {
65
+ lastInstalledBundleId = updateBundleId;
66
+ }
67
+ return ok;
68
+ } finally {
69
+ inflightUpdates.delete(updateBundleId);
70
+ }
71
+ })();
72
+ inflightUpdates.set(updateBundleId, promise);
73
+ return promise;
53
74
  }
54
75
 
55
76
  /**
@@ -64,10 +85,8 @@ const getAppVersion = () => {
64
85
  * Reloads the app.
65
86
  */
66
87
  exports.getAppVersion = getAppVersion;
67
- const reload = () => {
68
- requestAnimationFrame(() => {
69
- _NativeHotUpdater.default.reload();
70
- });
88
+ const reload = async () => {
89
+ await _NativeHotUpdater.default.reload();
71
90
  };
72
91
 
73
92
  /**
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_NativeHotUpdater","_interopRequireDefault","e","__esModule","default","NIL_UUID","HotUpdaterConstants","exports","HOT_UPDATER_BUNDLE_ID","__HOT_UPDATER_BUNDLE_ID","addListener","eventName","listener","eventEmitter","NativeEventEmitter","HotUpdaterNative","subscription","remove","updateBundle","paramsOrBundleId","fileUrl","updateBundleId","bundleId","status","currentBundleId","getBundleId","localeCompare","Error","getAppVersion","constants","getConstants","APP_VERSION","reload","requestAnimationFrame","getMinBundleId","MIN_BUNDLE_ID","getChannel","CHANNEL","getFingerprintHash","FINGERPRINT_HASH"],"sourceRoot":"../../src","sources":["native.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_NativeHotUpdater","_interopRequireDefault","e","__esModule","default","NIL_UUID","HotUpdaterConstants","exports","HOT_UPDATER_BUNDLE_ID","__HOT_UPDATER_BUNDLE_ID","addListener","eventName","listener","eventEmitter","NativeEventEmitter","HotUpdaterNative","subscription","remove","inflightUpdates","Map","lastInstalledBundleId","updateBundle","paramsOrBundleId","fileUrl","updateBundleId","bundleId","status","currentBundleId","getBundleId","localeCompare","Error","existing","get","targetFileUrl","promise","ok","delete","set","getAppVersion","constants","getConstants","APP_VERSION","reload","getMinBundleId","MIN_BUNDLE_ID","getChannel","CHANNEL","getFingerprintHash","FINGERPRINT_HASH"],"sourceRoot":"../../src","sources":["native.ts"],"mappings":"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","ignoreList":[]}
@@ -32,7 +32,7 @@ var _native = require("./native.js");
32
32
  * });
33
33
  *
34
34
  * if(result.status !== "UP_TO_DATE" && result.shouldForceUpdate) {
35
- * HotUpdater.reload();
35
+ * await HotUpdater.reload();
36
36
  * }
37
37
  * ```
38
38
  *
@@ -53,7 +53,7 @@ const runUpdateProcess = async ({
53
53
  }
54
54
  const isUpdated = await updateInfo.updateBundle();
55
55
  if (isUpdated && updateInfo.shouldForceUpdate && reloadOnForceUpdate) {
56
- (0, _native.reload)();
56
+ await (0, _native.reload)();
57
57
  }
58
58
  if (!isUpdated) {
59
59
  throw new Error("New update was found but failed to download the bundle.");
@@ -1 +1 @@
1
- {"version":3,"names":["_checkForUpdate","require","_native","runUpdateProcess","reloadOnForceUpdate","checkForUpdateOptions","updateInfo","checkForUpdate","status","shouldForceUpdate","message","id","getBundleId","isUpdated","updateBundle","reload","Error","exports"],"sourceRoot":"../../src","sources":["runUpdateProcess.ts"],"mappings":";;;;;;AAAA,IAAAA,eAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAkBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAME,gBAAgB,GAAG,MAAAA,CAAO;EACrCC,mBAAmB,GAAG,IAAI;EAC1B,GAAGC;AACoB,CAAC,KAAwC;EAChE,MAAMC,UAAU,GAAG,MAAM,IAAAC,8BAAc,EAACF,qBAAqB,CAAC;EAC9D,IAAI,CAACC,UAAU,EAAE;IACf,OAAO;MACLE,MAAM,EAAE,YAAY;MACpBC,iBAAiB,EAAE,KAAK;MACxBC,OAAO,EAAE,IAAI;MACbC,EAAE,EAAE,IAAAC,mBAAW,EAAC;IAClB,CAAC;EACH;EAEA,MAAMC,SAAS,GAAG,MAAMP,UAAU,CAACQ,YAAY,CAAC,CAAC;EACjD,IAAID,SAAS,IAAIP,UAAU,CAACG,iBAAiB,IAAIL,mBAAmB,EAAE;IACpE,IAAAW,cAAM,EAAC,CAAC;EACV;EAEA,IAAI,CAACF,SAAS,EAAE;IACd,MAAM,IAAIG,KAAK,CAAC,yDAAyD,CAAC;EAC5E;EACA,OAAO;IACLR,MAAM,EAAEF,UAAU,CAACE,MAAM;IACzBC,iBAAiB,EAAEH,UAAU,CAACG,iBAAiB;IAC/CE,EAAE,EAAEL,UAAU,CAACK,EAAE;IACjBD,OAAO,EAAEJ,UAAU,CAACI;EACtB,CAAC;AACH,CAAC;AAACO,OAAA,CAAAd,gBAAA,GAAAA,gBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_checkForUpdate","require","_native","runUpdateProcess","reloadOnForceUpdate","checkForUpdateOptions","updateInfo","checkForUpdate","status","shouldForceUpdate","message","id","getBundleId","isUpdated","updateBundle","reload","Error","exports"],"sourceRoot":"../../src","sources":["runUpdateProcess.ts"],"mappings":";;;;;;AAAA,IAAAA,eAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAkBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAME,gBAAgB,GAAG,MAAAA,CAAO;EACrCC,mBAAmB,GAAG,IAAI;EAC1B,GAAGC;AACoB,CAAC,KAAwC;EAChE,MAAMC,UAAU,GAAG,MAAM,IAAAC,8BAAc,EAACF,qBAAqB,CAAC;EAC9D,IAAI,CAACC,UAAU,EAAE;IACf,OAAO;MACLE,MAAM,EAAE,YAAY;MACpBC,iBAAiB,EAAE,KAAK;MACxBC,OAAO,EAAE,IAAI;MACbC,EAAE,EAAE,IAAAC,mBAAW,EAAC;IAClB,CAAC;EACH;EAEA,MAAMC,SAAS,GAAG,MAAMP,UAAU,CAACQ,YAAY,CAAC,CAAC;EACjD,IAAID,SAAS,IAAIP,UAAU,CAACG,iBAAiB,IAAIL,mBAAmB,EAAE;IACpE,MAAM,IAAAW,cAAM,EAAC,CAAC;EAChB;EAEA,IAAI,CAACF,SAAS,EAAE;IACd,MAAM,IAAIG,KAAK,CAAC,yDAAyD,CAAC;EAC5E;EACA,OAAO;IACLR,MAAM,EAAEF,UAAU,CAACE,MAAM;IACzBC,iBAAiB,EAAEH,UAAU,CAACG,iBAAiB;IAC/CE,EAAE,EAAEL,UAAU,CAACK,EAAE;IACjBD,OAAO,EAAEJ,UAAU,CAACI;EACtB,CAAC;AACH,CAAC;AAACO,OAAA,CAAAd,gBAAA,GAAAA,gBAAA","ignoreList":[]}
@@ -61,7 +61,7 @@ function wrap(options) {
61
61
  throw new Error("New update was found but failed to download the bundle.");
62
62
  }
63
63
  if (reloadOnForceUpdate) {
64
- (0, _native.reload)();
64
+ await (0, _native.reload)();
65
65
  }
66
66
  restOptions.onUpdateProcessCompleted?.({
67
67
  id: updateInfo.id,
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_checkForUpdate","_useEventCallback","_native","_store","_jsxRuntime","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","wrap","options","reloadOnForceUpdate","restOptions","WrappedComponent","HotUpdaterHOC","props","progress","useHotUpdaterStore","state","message","setMessage","useState","updateStatus","setUpdateStatus","initHotUpdater","useEventCallback","updateInfo","checkForUpdate","source","requestHeaders","onError","onUpdateProcessCompleted","status","shouldForceUpdate","id","getBundleId","updateBundle","catch","error","isSuccess","Error","reload","useEffect","onProgress","useLayoutEffect","fallbackComponent","Fallback","jsx"],"sourceRoot":"../../src","sources":["wrap.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_checkForUpdate","_useEventCallback","_native","_store","_jsxRuntime","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","wrap","options","reloadOnForceUpdate","restOptions","WrappedComponent","HotUpdaterHOC","props","progress","useHotUpdaterStore","state","message","setMessage","useState","updateStatus","setUpdateStatus","initHotUpdater","useEventCallback","updateInfo","checkForUpdate","source","requestHeaders","onError","onUpdateProcessCompleted","status","shouldForceUpdate","id","getBundleId","updateBundle","catch","error","isSuccess","Error","reload","useEffect","onProgress","useLayoutEffect","fallbackComponent","Fallback","jsx"],"sourceRoot":"../../src","sources":["wrap.tsx"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["Platform","HotUpdaterError","fetchUpdateInfo","getAppVersion","getBundleId","getChannel","getFingerprintHash","getMinBundleId","updateBundle","checkForUpdate","options","__DEV__","includes","OS","onError","currentAppVersion","platform","currentBundleId","minBundleId","channel","fingerprintHash","source","params","bundleId","appVersion","requestHeaders","requestTimeout","then","updateInfo","id","fileUrl","status","getUpdateSource","baseUrl","updateStrategy"],"sourceRoot":"../../src","sources":["checkForUpdate.ts"],"mappings":";;AACA,SAASA,QAAQ,QAAQ,cAAc;AACvC,SAASC,eAAe,QAAQ,YAAS;AACzC,SAA4BC,eAAe,QAAQ,sBAAmB;AACtE,SACEC,aAAa,EACbC,WAAW,EACXC,UAAU,EACVC,kBAAkB,EAClBC,cAAc,EACdC,YAAY,QACP,aAAU;AAqBjB,OAAO,eAAeC,cAAcA,CAClCC,OAA8B,EACQ;EACtC,IAAIC,OAAO,EAAE;IACX,OAAO,IAAI;EACb;EAEA,IAAI,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAACC,QAAQ,CAACZ,QAAQ,CAACa,EAAE,CAAC,EAAE;IAC7CH,OAAO,CAACI,OAAO,GACb,IAAIb,eAAe,CAAC,iDAAiD,CACvE,CAAC;IACD,OAAO,IAAI;EACb;EAEA,MAAMc,iBAAiB,GAAGZ,aAAa,CAAC,CAAC;EACzC,MAAMa,QAAQ,GAAGhB,QAAQ,CAACa,EAAuB;EACjD,MAAMI,eAAe,GAAGb,WAAW,CAAC,CAAC;EACrC,MAAMc,WAAW,GAAGX,cAAc,CAAC,CAAC;EACpC,MAAMY,OAAO,GAAGd,UAAU,CAAC,CAAC;EAE5B,IAAI,CAACU,iBAAiB,EAAE;IACtBL,OAAO,CAACI,OAAO,GAAG,IAAIb,eAAe,CAAC,2BAA2B,CAAC,CAAC;IACnE,OAAO,IAAI;EACb;EAEA,MAAMmB,eAAe,GAAGd,kBAAkB,CAAC,CAAC;EAE5C,OAAOJ,eAAe,CAAC;IACrBmB,MAAM,EAAEX,OAAO,CAACW,MAAM;IACtBC,MAAM,EAAE;MACNC,QAAQ,EAAEN,eAAe;MACzBO,UAAU,EAAET,iBAAiB;MAC7BC,QAAQ;MACRE,WAAW;MACXC,OAAO;MACPC;IACF,CAAC;IACDK,cAAc,EAAEf,OAAO,CAACe,cAAc;IACtCX,OAAO,EAAEJ,OAAO,CAACI,OAAO;IACxBY,cAAc,EAAEhB,OAAO,CAACgB;EAC1B,CAAC,CAAC,CAACC,IAAI,CAAEC,UAAU,IAAK;IACtB,IAAI,CAACA,UAAU,EAAE;MACf,OAAO,IAAI;IACb;IAEA,OAAO;MACL,GAAGA,UAAU;MACbpB,YAAY,EAAE,MAAAA,CAAA,KAAY;QACxB,OAAOA,YAAY,CAAC;UAClBe,QAAQ,EAAEK,UAAU,CAACC,EAAE;UACvBC,OAAO,EAAEF,UAAU,CAACE,OAAO;UAC3BC,MAAM,EAAEH,UAAU,CAACG;QACrB,CAAC,CAAC;MACJ;IACF,CAAC;EACH,CAAC,CAAC;AACJ;AAYA,OAAO,MAAMC,eAAe,GAC1BA,CAACC,OAAe,EAAEvB,OAA+B,KAChDY,MAA0B,IAAK;EAC9B,QAAQZ,OAAO,CAACwB,cAAc;IAC5B,KAAK,aAAa;MAAE;QAClB,IAAI,CAACZ,MAAM,CAACF,eAAe,EAAE;UAC3B,MAAM,IAAInB,eAAe,CAAC,8BAA8B,CAAC;QAC3D;QACA,OAAO,GAAGgC,OAAO,gBAAgBX,MAAM,CAACN,QAAQ,IAAIM,MAAM,CAACF,eAAe,IAAIE,MAAM,CAACH,OAAO,IAAIG,MAAM,CAACJ,WAAW,IAAII,MAAM,CAACC,QAAQ,EAAE;MACzI;IACA,KAAK,YAAY;MAAE;QACjB,OAAO,GAAGU,OAAO,gBAAgBX,MAAM,CAACN,QAAQ,IAAIM,MAAM,CAACE,UAAU,IAAIF,MAAM,CAACH,OAAO,IAAIG,MAAM,CAACJ,WAAW,IAAII,MAAM,CAACC,QAAQ,EAAE;MACpI;IACA;MACE,OAAOU,OAAO;EAClB;AACF,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["Platform","HotUpdaterError","fetchUpdateInfo","getAppVersion","getBundleId","getChannel","getFingerprintHash","getMinBundleId","updateBundle","checkForUpdate","options","__DEV__","includes","OS","onError","currentAppVersion","platform","currentBundleId","minBundleId","channel","fingerprintHash","source","params","bundleId","appVersion","requestHeaders","requestTimeout","then","updateInfo","id","fileUrl","status","getUpdateSource","baseUrl","updateStrategy"],"sourceRoot":"../../src","sources":["checkForUpdate.ts"],"mappings":";;AACA,SAASA,QAAQ,QAAQ,cAAc;AACvC,SAASC,eAAe,QAAQ,YAAS;AACzC,SAASC,eAAe,QAA2B,sBAAmB;AACtE,SACEC,aAAa,EACbC,WAAW,EACXC,UAAU,EACVC,kBAAkB,EAClBC,cAAc,EACdC,YAAY,QACP,aAAU;AAqBjB,OAAO,eAAeC,cAAcA,CAClCC,OAA8B,EACQ;EACtC,IAAIC,OAAO,EAAE;IACX,OAAO,IAAI;EACb;EAEA,IAAI,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAACC,QAAQ,CAACZ,QAAQ,CAACa,EAAE,CAAC,EAAE;IAC7CH,OAAO,CAACI,OAAO,GACb,IAAIb,eAAe,CAAC,iDAAiD,CACvE,CAAC;IACD,OAAO,IAAI;EACb;EAEA,MAAMc,iBAAiB,GAAGZ,aAAa,CAAC,CAAC;EACzC,MAAMa,QAAQ,GAAGhB,QAAQ,CAACa,EAAuB;EACjD,MAAMI,eAAe,GAAGb,WAAW,CAAC,CAAC;EACrC,MAAMc,WAAW,GAAGX,cAAc,CAAC,CAAC;EACpC,MAAMY,OAAO,GAAGd,UAAU,CAAC,CAAC;EAE5B,IAAI,CAACU,iBAAiB,EAAE;IACtBL,OAAO,CAACI,OAAO,GAAG,IAAIb,eAAe,CAAC,2BAA2B,CAAC,CAAC;IACnE,OAAO,IAAI;EACb;EAEA,MAAMmB,eAAe,GAAGd,kBAAkB,CAAC,CAAC;EAE5C,OAAOJ,eAAe,CAAC;IACrBmB,MAAM,EAAEX,OAAO,CAACW,MAAM;IACtBC,MAAM,EAAE;MACNC,QAAQ,EAAEN,eAAe;MACzBO,UAAU,EAAET,iBAAiB;MAC7BC,QAAQ;MACRE,WAAW;MACXC,OAAO;MACPC;IACF,CAAC;IACDK,cAAc,EAAEf,OAAO,CAACe,cAAc;IACtCX,OAAO,EAAEJ,OAAO,CAACI,OAAO;IACxBY,cAAc,EAAEhB,OAAO,CAACgB;EAC1B,CAAC,CAAC,CAACC,IAAI,CAAEC,UAAU,IAAK;IACtB,IAAI,CAACA,UAAU,EAAE;MACf,OAAO,IAAI;IACb;IAEA,OAAO;MACL,GAAGA,UAAU;MACbpB,YAAY,EAAE,MAAAA,CAAA,KAAY;QACxB,OAAOA,YAAY,CAAC;UAClBe,QAAQ,EAAEK,UAAU,CAACC,EAAE;UACvBC,OAAO,EAAEF,UAAU,CAACE,OAAO;UAC3BC,MAAM,EAAEH,UAAU,CAACG;QACrB,CAAC,CAAC;MACJ;IACF,CAAC;EACH,CAAC,CAAC;AACJ;AAYA,OAAO,MAAMC,eAAe,GAC1BA,CAACC,OAAe,EAAEvB,OAA+B,KAChDY,MAA0B,IAAK;EAC9B,QAAQZ,OAAO,CAACwB,cAAc;IAC5B,KAAK,aAAa;MAAE;QAClB,IAAI,CAACZ,MAAM,CAACF,eAAe,EAAE;UAC3B,MAAM,IAAInB,eAAe,CAAC,8BAA8B,CAAC;QAC3D;QACA,OAAO,GAAGgC,OAAO,gBAAgBX,MAAM,CAACN,QAAQ,IAAIM,MAAM,CAACF,eAAe,IAAIE,MAAM,CAACH,OAAO,IAAIG,MAAM,CAACJ,WAAW,IAAII,MAAM,CAACC,QAAQ,EAAE;MACzI;IACA,KAAK,YAAY;MAAE;QACjB,OAAO,GAAGU,OAAO,gBAAgBX,MAAM,CAACN,QAAQ,IAAIM,MAAM,CAACE,UAAU,IAAIF,MAAM,CAACH,OAAO,IAAIG,MAAM,CAACJ,WAAW,IAAII,MAAM,CAACC,QAAQ,EAAE;MACpI;IACA;MACE,OAAOU,OAAO;EAClB;AACF,CAAC","ignoreList":[]}
@@ -110,7 +110,7 @@ export const HotUpdater = {
110
110
  *
111
111
  * await HotUpdater.updateBundle(updateInfo.id, updateInfo.fileUrl);
112
112
  * if (updateInfo.shouldForceUpdate) {
113
- * HotUpdater.reload();
113
+ * await HotUpdater.reload();
114
114
  * }
115
115
  * ```
116
116
  */
@@ -141,7 +141,7 @@ export const HotUpdater = {
141
141
  * });
142
142
  *
143
143
  * if(result.status !== "UP_TO_DATE" && result.shouldForceUpdate) {
144
- * HotUpdater.reload();
144
+ * await HotUpdater.reload();
145
145
  * }
146
146
  * ```
147
147
  *
@@ -177,7 +177,7 @@ export const HotUpdater = {
177
177
  * fileUrl: updateInfo.fileUrl
178
178
  * });
179
179
  * if (updateInfo.shouldForceUpdate) {
180
- * HotUpdater.reload();
180
+ * await HotUpdater.reload();
181
181
  * }
182
182
  * ```
183
183
  */
@@ -1 +1 @@
1
- {"version":3,"names":["checkForUpdate","addListener","getAppVersion","getBundleId","getChannel","getFingerprintHash","getMinBundleId","reload","updateBundle","runUpdateProcess","hotUpdaterStore","wrap","progress","setState","HotUpdater","getUpdateSource"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,SAASA,cAAc,QAAQ,qBAAkB;AACjD,SACEC,WAAW,EACXC,aAAa,EACbC,WAAW,EACXC,UAAU,EACVC,kBAAkB,EAClBC,cAAc,EACdC,MAAM,EACNC,YAAY,QACP,aAAU;AACjB,SAASC,gBAAgB,QAAQ,uBAAoB;AACrD,SAASC,eAAe,QAAQ,YAAS;AACzC,SAASC,IAAI,QAAQ,WAAQ;AAK7B,cAAc,YAAS;AAEvBV,WAAW,CAAC,YAAY,EAAE,CAAC;EAAEW;AAAS,CAAC,KAAK;EAC1CF,eAAe,CAACG,QAAQ,CAAC;IACvBD;EACF,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,MAAME,UAAU,GAAG;EACxB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEH,IAAI;EACJ;AACF;AACA;EACEJ,MAAM;EACN;AACF;AACA;EACEL,aAAa;EACb;AACF;AACA;EACEC,WAAW;EACX;AACF;AACA;EACEG,cAAc;EACd;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEF,UAAU;EACV;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEH,WAAW;EACX;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACED,cAAc;EACd;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACES,gBAAgB;EAChB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACED,YAAY;EACZ;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEH;AACF,CAAC;AAED,SAASU,eAAe,QAAQ,qBAAkB","ignoreList":[]}
1
+ {"version":3,"names":["checkForUpdate","addListener","getAppVersion","getBundleId","getChannel","getFingerprintHash","getMinBundleId","reload","updateBundle","runUpdateProcess","hotUpdaterStore","wrap","progress","setState","HotUpdater","getUpdateSource"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,SAASA,cAAc,QAAQ,qBAAkB;AACjD,SACEC,WAAW,EACXC,aAAa,EACbC,WAAW,EACXC,UAAU,EACVC,kBAAkB,EAClBC,cAAc,EACdC,MAAM,EACNC,YAAY,QACP,aAAU;AACjB,SAASC,gBAAgB,QAAQ,uBAAoB;AACrD,SAASC,eAAe,QAAQ,YAAS;AACzC,SAASC,IAAI,QAAQ,WAAQ;AAG7B,cAAc,YAAS;AAGvBV,WAAW,CAAC,YAAY,EAAE,CAAC;EAAEW;AAAS,CAAC,KAAK;EAC1CF,eAAe,CAACG,QAAQ,CAAC;IACvBD;EACF,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,MAAME,UAAU,GAAG;EACxB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEH,IAAI;EACJ;AACF;AACA;EACEJ,MAAM;EACN;AACF;AACA;EACEL,aAAa;EACb;AACF;AACA;EACEC,WAAW;EACX;AACF;AACA;EACEG,cAAc;EACd;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEF,UAAU;EACV;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEH,WAAW;EACX;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACED,cAAc;EACd;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACES,gBAAgB;EAChB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACED,YAAY;EACZ;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEH;AACF,CAAC;AAED,SAASU,eAAe,QAAQ,qBAAkB","ignoreList":[]}
@@ -13,6 +13,10 @@ export const addListener = (eventName, listener) => {
13
13
  subscription.remove();
14
14
  };
15
15
  };
16
+ // In-flight update deduplication by bundleId (session-scoped).
17
+ const inflightUpdates = new Map();
18
+ // Tracks the last successfully installed bundleId for this session.
19
+ let lastInstalledBundleId = null;
16
20
 
17
21
  /**
18
22
  * Downloads files and applies them to the app.
@@ -28,22 +32,38 @@ export const addListener = (eventName, listener) => {
28
32
  export async function updateBundle(paramsOrBundleId, fileUrl) {
29
33
  const updateBundleId = typeof paramsOrBundleId === "string" ? paramsOrBundleId : paramsOrBundleId.bundleId;
30
34
  const status = typeof paramsOrBundleId === "string" ? "UPDATE" : paramsOrBundleId.status;
35
+
36
+ // If we have already installed this bundle in this session, skip re-download.
37
+ if (status === "UPDATE" && lastInstalledBundleId === updateBundleId) {
38
+ return true;
39
+ }
31
40
  const currentBundleId = getBundleId();
32
41
 
33
42
  // updateBundleId <= currentBundleId
34
43
  if (status === "UPDATE" && updateBundleId.localeCompare(currentBundleId) <= 0) {
35
44
  throw new Error("Update bundle id is the same as the current bundle id. Preventing infinite update loop.");
36
45
  }
37
- if (typeof paramsOrBundleId === "string") {
38
- return HotUpdaterNative.updateBundle({
39
- bundleId: updateBundleId,
40
- fileUrl: fileUrl || null
41
- });
42
- }
43
- return HotUpdaterNative.updateBundle({
44
- bundleId: updateBundleId,
45
- fileUrl: paramsOrBundleId.fileUrl
46
- });
46
+
47
+ // In-flight guard: return the same promise if the same bundle is already updating.
48
+ const existing = inflightUpdates.get(updateBundleId);
49
+ if (existing) return existing;
50
+ const targetFileUrl = typeof paramsOrBundleId === "string" ? fileUrl ?? null : paramsOrBundleId.fileUrl;
51
+ const promise = (async () => {
52
+ try {
53
+ const ok = await HotUpdaterNative.updateBundle({
54
+ bundleId: updateBundleId,
55
+ fileUrl: targetFileUrl
56
+ });
57
+ if (ok) {
58
+ lastInstalledBundleId = updateBundleId;
59
+ }
60
+ return ok;
61
+ } finally {
62
+ inflightUpdates.delete(updateBundleId);
63
+ }
64
+ })();
65
+ inflightUpdates.set(updateBundleId, promise);
66
+ return promise;
47
67
  }
48
68
 
49
69
  /**
@@ -57,10 +77,8 @@ export const getAppVersion = () => {
57
77
  /**
58
78
  * Reloads the app.
59
79
  */
60
- export const reload = () => {
61
- requestAnimationFrame(() => {
62
- HotUpdaterNative.reload();
63
- });
80
+ export const reload = async () => {
81
+ await HotUpdaterNative.reload();
64
82
  };
65
83
 
66
84
  /**
@@ -1 +1 @@
1
- {"version":3,"names":["NativeEventEmitter","HotUpdaterNative","NIL_UUID","HotUpdaterConstants","HOT_UPDATER_BUNDLE_ID","__HOT_UPDATER_BUNDLE_ID","addListener","eventName","listener","eventEmitter","subscription","remove","updateBundle","paramsOrBundleId","fileUrl","updateBundleId","bundleId","status","currentBundleId","getBundleId","localeCompare","Error","getAppVersion","constants","getConstants","APP_VERSION","reload","requestAnimationFrame","getMinBundleId","MIN_BUNDLE_ID","getChannel","CHANNEL","getFingerprintHash","FINGERPRINT_HASH"],"sourceRoot":"../../src","sources":["native.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["NativeEventEmitter","HotUpdaterNative","NIL_UUID","HotUpdaterConstants","HOT_UPDATER_BUNDLE_ID","__HOT_UPDATER_BUNDLE_ID","addListener","eventName","listener","eventEmitter","subscription","remove","inflightUpdates","Map","lastInstalledBundleId","updateBundle","paramsOrBundleId","fileUrl","updateBundleId","bundleId","status","currentBundleId","getBundleId","localeCompare","Error","existing","get","targetFileUrl","promise","ok","delete","set","getAppVersion","constants","getConstants","APP_VERSION","reload","getMinBundleId","MIN_BUNDLE_ID","getChannel","CHANNEL","getFingerprintHash","FINGERPRINT_HASH"],"sourceRoot":"../../src","sources":["native.ts"],"mappings":"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","ignoreList":[]}
@@ -28,7 +28,7 @@ import { getBundleId, reload } from "./native.js";
28
28
  * });
29
29
  *
30
30
  * if(result.status !== "UP_TO_DATE" && result.shouldForceUpdate) {
31
- * HotUpdater.reload();
31
+ * await HotUpdater.reload();
32
32
  * }
33
33
  * ```
34
34
  *
@@ -49,7 +49,7 @@ export const runUpdateProcess = async ({
49
49
  }
50
50
  const isUpdated = await updateInfo.updateBundle();
51
51
  if (isUpdated && updateInfo.shouldForceUpdate && reloadOnForceUpdate) {
52
- reload();
52
+ await reload();
53
53
  }
54
54
  if (!isUpdated) {
55
55
  throw new Error("New update was found but failed to download the bundle.");
@@ -1 +1 @@
1
- {"version":3,"names":["checkForUpdate","getBundleId","reload","runUpdateProcess","reloadOnForceUpdate","checkForUpdateOptions","updateInfo","status","shouldForceUpdate","message","id","isUpdated","updateBundle","Error"],"sourceRoot":"../../src","sources":["runUpdateProcess.ts"],"mappings":";;AAAA,SAAqCA,cAAc,QAAQ,qBAAkB;AAC7E,SAASC,WAAW,EAAEC,MAAM,QAAQ,aAAU;AAkB9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,gBAAgB,GAAG,MAAAA,CAAO;EACrCC,mBAAmB,GAAG,IAAI;EAC1B,GAAGC;AACoB,CAAC,KAAwC;EAChE,MAAMC,UAAU,GAAG,MAAMN,cAAc,CAACK,qBAAqB,CAAC;EAC9D,IAAI,CAACC,UAAU,EAAE;IACf,OAAO;MACLC,MAAM,EAAE,YAAY;MACpBC,iBAAiB,EAAE,KAAK;MACxBC,OAAO,EAAE,IAAI;MACbC,EAAE,EAAET,WAAW,CAAC;IAClB,CAAC;EACH;EAEA,MAAMU,SAAS,GAAG,MAAML,UAAU,CAACM,YAAY,CAAC,CAAC;EACjD,IAAID,SAAS,IAAIL,UAAU,CAACE,iBAAiB,IAAIJ,mBAAmB,EAAE;IACpEF,MAAM,CAAC,CAAC;EACV;EAEA,IAAI,CAACS,SAAS,EAAE;IACd,MAAM,IAAIE,KAAK,CAAC,yDAAyD,CAAC;EAC5E;EACA,OAAO;IACLN,MAAM,EAAED,UAAU,CAACC,MAAM;IACzBC,iBAAiB,EAAEF,UAAU,CAACE,iBAAiB;IAC/CE,EAAE,EAAEJ,UAAU,CAACI,EAAE;IACjBD,OAAO,EAAEH,UAAU,CAACG;EACtB,CAAC;AACH,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["checkForUpdate","getBundleId","reload","runUpdateProcess","reloadOnForceUpdate","checkForUpdateOptions","updateInfo","status","shouldForceUpdate","message","id","isUpdated","updateBundle","Error"],"sourceRoot":"../../src","sources":["runUpdateProcess.ts"],"mappings":";;AAAA,SAAqCA,cAAc,QAAQ,qBAAkB;AAC7E,SAASC,WAAW,EAAEC,MAAM,QAAQ,aAAU;AAkB9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,gBAAgB,GAAG,MAAAA,CAAO;EACrCC,mBAAmB,GAAG,IAAI;EAC1B,GAAGC;AACoB,CAAC,KAAwC;EAChE,MAAMC,UAAU,GAAG,MAAMN,cAAc,CAACK,qBAAqB,CAAC;EAC9D,IAAI,CAACC,UAAU,EAAE;IACf,OAAO;MACLC,MAAM,EAAE,YAAY;MACpBC,iBAAiB,EAAE,KAAK;MACxBC,OAAO,EAAE,IAAI;MACbC,EAAE,EAAET,WAAW,CAAC;IAClB,CAAC;EACH;EAEA,MAAMU,SAAS,GAAG,MAAML,UAAU,CAACM,YAAY,CAAC,CAAC;EACjD,IAAID,SAAS,IAAIL,UAAU,CAACE,iBAAiB,IAAIJ,mBAAmB,EAAE;IACpE,MAAMF,MAAM,CAAC,CAAC;EAChB;EAEA,IAAI,CAACS,SAAS,EAAE;IACd,MAAM,IAAIE,KAAK,CAAC,yDAAyD,CAAC;EAC5E;EACA,OAAO;IACLN,MAAM,EAAED,UAAU,CAACC,MAAM;IACzBC,iBAAiB,EAAEF,UAAU,CAACE,iBAAiB;IAC/CE,EAAE,EAAEJ,UAAU,CAACI,EAAE;IACjBD,OAAO,EAAEH,UAAU,CAACG;EACtB,CAAC;AACH,CAAC","ignoreList":[]}
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import React from "react";
4
- import { useEffect, useLayoutEffect, useState } from "react";
3
+ import React, { useEffect, useLayoutEffect, useState } from "react";
5
4
  import { checkForUpdate } from "./checkForUpdate.js";
6
5
  import { useEventCallback } from "./hooks/useEventCallback.js";
7
6
  import { getBundleId, reload } from "./native.js";
@@ -56,7 +55,7 @@ export function wrap(options) {
56
55
  throw new Error("New update was found but failed to download the bundle.");
57
56
  }
58
57
  if (reloadOnForceUpdate) {
59
- reload();
58
+ await reload();
60
59
  }
61
60
  restOptions.onUpdateProcessCompleted?.({
62
61
  id: updateInfo.id,
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","useLayoutEffect","useState","checkForUpdate","useEventCallback","getBundleId","reload","useHotUpdaterStore","jsx","_jsx","wrap","options","reloadOnForceUpdate","restOptions","WrappedComponent","HotUpdaterHOC","props","progress","state","message","setMessage","updateStatus","setUpdateStatus","initHotUpdater","updateInfo","source","requestHeaders","onError","onUpdateProcessCompleted","status","shouldForceUpdate","id","updateBundle","catch","error","isSuccess","Error","onProgress","fallbackComponent","Fallback"],"sourceRoot":"../../src","sources":["wrap.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useEffect","useLayoutEffect","useState","checkForUpdate","useEventCallback","getBundleId","reload","useHotUpdaterStore","jsx","_jsx","wrap","options","reloadOnForceUpdate","restOptions","WrappedComponent","HotUpdaterHOC","props","progress","state","message","setMessage","updateStatus","setUpdateStatus","initHotUpdater","updateInfo","source","requestHeaders","onError","onUpdateProcessCompleted","status","shouldForceUpdate","id","updateBundle","catch","error","isSuccess","Error","onProgress","fallbackComponent","Fallback"],"sourceRoot":"../../src","sources":["wrap.tsx"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"checkForUpdate.d.ts","sourceRoot":"","sources":["../../../src/checkForUpdate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAG3E,OAAO,EAAE,KAAK,YAAY,EAAmB,MAAM,mBAAmB,CAAC;AAUvE,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,YAAY,CAAC;IACrB,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,aAAa,GAAG;IACjD;;;OAGG;IACH,YAAY,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CACtC,CAAC;AAEF,wBAAsB,cAAc,CAClC,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAsDtC;AAED,MAAM,WAAW,sBAAsB;IACrC;;;;;OAKG;IACH,cAAc,EAAE,YAAY,GAAG,aAAa,CAAC;CAC9C;AAED,eAAO,MAAM,eAAe,GACzB,SAAS,MAAM,EAAE,SAAS,sBAAsB,MAChD,QAAQ,kBAAkB,WAc1B,CAAC"}
1
+ {"version":3,"file":"checkForUpdate.d.ts","sourceRoot":"","sources":["../../../src/checkForUpdate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAG3E,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAUvE,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,YAAY,CAAC;IACrB,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,aAAa,GAAG;IACjD;;;OAGG;IACH,YAAY,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CACtC,CAAC;AAEF,wBAAsB,cAAc,CAClC,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAsDtC;AAED,MAAM,WAAW,sBAAsB;IACrC;;;;;OAKG;IACH,cAAc,EAAE,YAAY,GAAG,aAAa,CAAC;CAC9C;AAED,eAAO,MAAM,eAAe,GACzB,SAAS,MAAM,EAAE,SAAS,sBAAsB,MAChD,QAAQ,kBAAkB,WAc1B,CAAC"}
@@ -1,9 +1,9 @@
1
1
  import { checkForUpdate } from "./checkForUpdate";
2
2
  import { updateBundle } from "./native";
3
3
  import { wrap } from "./wrap";
4
- export type { HotUpdaterOptions } from "./wrap";
5
4
  export type { HotUpdaterEvent } from "./native";
6
5
  export * from "./store";
6
+ export type { HotUpdaterOptions } from "./wrap";
7
7
  export declare const HotUpdater: {
8
8
  /**
9
9
  * `HotUpdater.wrap` checks for updates at the entry point, and if there is a bundle to update, it downloads the bundle and applies the update strategy.
@@ -31,7 +31,7 @@ export declare const HotUpdater: {
31
31
  /**
32
32
  * Reloads the app.
33
33
  */
34
- reload: () => void;
34
+ reload: () => Promise<void>;
35
35
  /**
36
36
  * Fetches the current app version.
37
37
  */
@@ -101,7 +101,7 @@ export declare const HotUpdater: {
101
101
  *
102
102
  * await HotUpdater.updateBundle(updateInfo.id, updateInfo.fileUrl);
103
103
  * if (updateInfo.shouldForceUpdate) {
104
- * HotUpdater.reload();
104
+ * await HotUpdater.reload();
105
105
  * }
106
106
  * ```
107
107
  */
@@ -132,7 +132,7 @@ export declare const HotUpdater: {
132
132
  * });
133
133
  *
134
134
  * if(result.status !== "UP_TO_DATE" && result.shouldForceUpdate) {
135
- * HotUpdater.reload();
135
+ * await HotUpdater.reload();
136
136
  * }
137
137
  * ```
138
138
  *
@@ -168,7 +168,7 @@ export declare const HotUpdater: {
168
168
  * fileUrl: updateInfo.fileUrl
169
169
  * });
170
170
  * if (updateInfo.shouldForceUpdate) {
171
- * HotUpdater.reload();
171
+ * await HotUpdater.reload();
172
172
  * }
173
173
  * ```
174
174
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAQL,YAAY,EACb,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,YAAY,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAChD,YAAY,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEhD,cAAc,SAAS,CAAC;AAQxB,eAAO,MAAM,UAAU;IACrB;;;;;;;;;;;;;;;;;;;;;OAqBG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;;;;;;;;;;;OAYG;;IAEH;;;;;;;;;;;;;;;;OAgBG;;IAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;;IAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;;IAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;;IAEH;;;;;;;;;;OAUG;;CAEJ,CAAC;AAEF,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAQL,YAAY,EACb,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,YAAY,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAChD,cAAc,SAAS,CAAC;AACxB,YAAY,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAQhD,eAAO,MAAM,UAAU;IACrB;;;;;;;;;;;;;;;;;;;;;OAqBG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;;;;;;;;;;;OAYG;;IAEH;;;;;;;;;;;;;;;;OAgBG;;IAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;;IAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;;IAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;;IAEH;;;;;;;;;;OAUG;;CAEJ,CAAC;AAEF,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC"}
@@ -30,7 +30,7 @@ export declare const getAppVersion: () => string | null;
30
30
  /**
31
31
  * Reloads the app.
32
32
  */
33
- export declare const reload: () => void;
33
+ export declare const reload: () => Promise<void>;
34
34
  /**
35
35
  * Fetches the minimum bundle id, which represents the initial bundle of the app
36
36
  * since it is created at build time.
@@ -1 +1 @@
1
- {"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../../src/native.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAyB,EACvB,KAAK,kBAAkB,EACxB,MAAM,0BAA0B,CAAC;AAMlC,eAAO,MAAM,mBAAmB;;CAE/B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,UAAU,EAAE;QACV,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,MAAM,eAAe,EACzD,WAAW,CAAC,EACZ,UAAU,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,IAAI,eAQ9C,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,kBAAkB,GAAG;IAC9C,MAAM,EAAE,YAAY,CAAC;CACtB,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAC3E;;GAEG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,IAAI,GACrB,OAAO,CAAC,OAAO,CAAC,CAAC;AAqCpB;;GAEG;AACH,eAAO,MAAM,aAAa,QAAO,MAAM,GAAG,IAGzC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,MAAM,YAIlB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,QAAO,MAGjC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,WAAW,QAAO,MAI9B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,UAAU,QAAO,MAG7B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,QAAO,MAAM,GAAG,IAG9C,CAAC"}
1
+ {"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../../src/native.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAyB,EACvB,KAAK,kBAAkB,EACxB,MAAM,0BAA0B,CAAC;AAMlC,eAAO,MAAM,mBAAmB;;CAE/B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,UAAU,EAAE;QACV,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,MAAM,eAAe,EACzD,WAAW,CAAC,EACZ,UAAU,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,IAAI,eAQ9C,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,kBAAkB,GAAG;IAC9C,MAAM,EAAE,YAAY,CAAC;CACtB,CAAC;AAOF;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAC3E;;GAEG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,IAAI,GACrB,OAAO,CAAC,OAAO,CAAC,CAAC;AA0DpB;;GAEG;AACH,eAAO,MAAM,aAAa,QAAO,MAAM,GAAG,IAGzC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,MAAM,qBAElB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,QAAO,MAGjC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,WAAW,QAAO,MAI9B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,UAAU,QAAO,MAG7B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,QAAO,MAAM,GAAG,IAG9C,CAAC"}
@@ -39,7 +39,7 @@ export interface RunUpdateProcessOptions extends CheckForUpdateOptions {
39
39
  * });
40
40
  *
41
41
  * if(result.status !== "UP_TO_DATE" && result.shouldForceUpdate) {
42
- * HotUpdater.reload();
42
+ * await HotUpdater.reload();
43
43
  * }
44
44
  * ```
45
45
  *
@@ -4,7 +4,7 @@ export interface UpdateBundleParams {
4
4
  fileUrl: string | null;
5
5
  }
6
6
  export interface Spec extends TurboModule {
7
- reload(): void;
7
+ reload(): Promise<void>;
8
8
  updateBundle(params: UpdateBundleParams): Promise<boolean>;
9
9
  addListener(eventName: string): void;
10
10
  removeListeners(count: number): void;
@@ -1 +1 @@
1
- {"version":3,"file":"NativeHotUpdater.d.ts","sourceRoot":"","sources":["../../../../src/specs/NativeHotUpdater.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,IAAK,SAAQ,WAAW;IAEvC,MAAM,IAAI,IAAI,CAAC;IACf,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAG3D,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,YAAY,EAAE,MAAM;QAC3B,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,OAAO,EAAE,MAAM,CAAC;QAChB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;KACjC,CAAC;CACH;;AAED,wBAAoE"}
1
+ {"version":3,"file":"NativeHotUpdater.d.ts","sourceRoot":"","sources":["../../../../src/specs/NativeHotUpdater.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,IAAK,SAAQ,WAAW;IAEvC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAG3D,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,YAAY,EAAE,MAAM;QAC3B,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,OAAO,EAAE,MAAM,CAAC;QAChB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;KACjC,CAAC;CACH;;AAED,wBAAoE"}
@@ -1 +1 @@
1
- {"version":3,"file":"wrap.d.ts","sourceRoot":"","sources":["../../../src/wrap.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,KAAK,qBAAqB,EAAkB,MAAM,kBAAkB,CAAC;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG/C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAGnE,KAAK,YAAY,GACb,kBAAkB,GAClB,UAAU,GACV,0BAA0B,CAAC;AAE/B,MAAM,WAAW,iBAAkB,SAAQ,qBAAqB;IAC9D;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,iBAAiB,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,EAAE,OAAO,CAAC,YAAY,EAAE,0BAA0B,CAAC,CAAC;QAC1D,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;KACxB,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,GAAG,KAAK,GAAG,OAAO,KAAK,IAAI,CAAC;IAC7D,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;OAIG;IACH,wBAAwB,CAAC,EAAE,CAAC,QAAQ,EAAE,wBAAwB,KAAK,IAAI,CAAC;CACzE;AAED,wBAAgB,IAAI,CAAC,CAAC,SAAS,KAAK,CAAC,GAAG,CAAC,mBAAmB,GAAG,MAAM,EACnE,OAAO,EAAE,iBAAiB,GACzB,CAAC,gBAAgB,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAuGtE"}
1
+ {"version":3,"file":"wrap.d.ts","sourceRoot":"","sources":["../../../src/wrap.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+C,MAAM,OAAO,CAAC;AACpE,OAAO,EAAE,KAAK,qBAAqB,EAAkB,MAAM,kBAAkB,CAAC;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG/C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAGnE,KAAK,YAAY,GACb,kBAAkB,GAClB,UAAU,GACV,0BAA0B,CAAC;AAE/B,MAAM,WAAW,iBAAkB,SAAQ,qBAAqB;IAC9D;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,iBAAiB,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,EAAE,OAAO,CAAC,YAAY,EAAE,0BAA0B,CAAC,CAAC;QAC1D,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;KACxB,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,GAAG,KAAK,GAAG,OAAO,KAAK,IAAI,CAAC;IAC7D,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;OAIG;IACH,wBAAwB,CAAC,EAAE,CAAC,QAAQ,EAAE,wBAAwB,KAAK,IAAI,CAAC;CACzE;AAED,wBAAgB,IAAI,CAAC,CAAC,SAAS,KAAK,CAAC,GAAG,CAAC,mBAAmB,GAAG,MAAM,EACnE,OAAO,EAAE,iBAAiB,GACzB,CAAC,gBAAgB,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAuGtE"}
@@ -1 +1 @@
1
- {"version":3,"file":"checkForUpdate.d.ts","sourceRoot":"","sources":["../../../src/checkForUpdate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAG3E,OAAO,EAAE,KAAK,YAAY,EAAmB,MAAM,mBAAmB,CAAC;AAUvE,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,YAAY,CAAC;IACrB,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,aAAa,GAAG;IACjD;;;OAGG;IACH,YAAY,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CACtC,CAAC;AAEF,wBAAsB,cAAc,CAClC,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAsDtC;AAED,MAAM,WAAW,sBAAsB;IACrC;;;;;OAKG;IACH,cAAc,EAAE,YAAY,GAAG,aAAa,CAAC;CAC9C;AAED,eAAO,MAAM,eAAe,GACzB,SAAS,MAAM,EAAE,SAAS,sBAAsB,MAChD,QAAQ,kBAAkB,WAc1B,CAAC"}
1
+ {"version":3,"file":"checkForUpdate.d.ts","sourceRoot":"","sources":["../../../src/checkForUpdate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAG3E,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAUvE,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,YAAY,CAAC;IACrB,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,aAAa,GAAG;IACjD;;;OAGG;IACH,YAAY,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CACtC,CAAC;AAEF,wBAAsB,cAAc,CAClC,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAsDtC;AAED,MAAM,WAAW,sBAAsB;IACrC;;;;;OAKG;IACH,cAAc,EAAE,YAAY,GAAG,aAAa,CAAC;CAC9C;AAED,eAAO,MAAM,eAAe,GACzB,SAAS,MAAM,EAAE,SAAS,sBAAsB,MAChD,QAAQ,kBAAkB,WAc1B,CAAC"}
@@ -1,9 +1,9 @@
1
1
  import { checkForUpdate } from "./checkForUpdate";
2
2
  import { updateBundle } from "./native";
3
3
  import { wrap } from "./wrap";
4
- export type { HotUpdaterOptions } from "./wrap";
5
4
  export type { HotUpdaterEvent } from "./native";
6
5
  export * from "./store";
6
+ export type { HotUpdaterOptions } from "./wrap";
7
7
  export declare const HotUpdater: {
8
8
  /**
9
9
  * `HotUpdater.wrap` checks for updates at the entry point, and if there is a bundle to update, it downloads the bundle and applies the update strategy.
@@ -31,7 +31,7 @@ export declare const HotUpdater: {
31
31
  /**
32
32
  * Reloads the app.
33
33
  */
34
- reload: () => void;
34
+ reload: () => Promise<void>;
35
35
  /**
36
36
  * Fetches the current app version.
37
37
  */
@@ -101,7 +101,7 @@ export declare const HotUpdater: {
101
101
  *
102
102
  * await HotUpdater.updateBundle(updateInfo.id, updateInfo.fileUrl);
103
103
  * if (updateInfo.shouldForceUpdate) {
104
- * HotUpdater.reload();
104
+ * await HotUpdater.reload();
105
105
  * }
106
106
  * ```
107
107
  */
@@ -132,7 +132,7 @@ export declare const HotUpdater: {
132
132
  * });
133
133
  *
134
134
  * if(result.status !== "UP_TO_DATE" && result.shouldForceUpdate) {
135
- * HotUpdater.reload();
135
+ * await HotUpdater.reload();
136
136
  * }
137
137
  * ```
138
138
  *
@@ -168,7 +168,7 @@ export declare const HotUpdater: {
168
168
  * fileUrl: updateInfo.fileUrl
169
169
  * });
170
170
  * if (updateInfo.shouldForceUpdate) {
171
- * HotUpdater.reload();
171
+ * await HotUpdater.reload();
172
172
  * }
173
173
  * ```
174
174
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAQL,YAAY,EACb,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,YAAY,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAChD,YAAY,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEhD,cAAc,SAAS,CAAC;AAQxB,eAAO,MAAM,UAAU;IACrB;;;;;;;;;;;;;;;;;;;;;OAqBG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;;;;;;;;;;;OAYG;;IAEH;;;;;;;;;;;;;;;;OAgBG;;IAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;;IAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;;IAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;;IAEH;;;;;;;;;;OAUG;;CAEJ,CAAC;AAEF,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAQL,YAAY,EACb,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,YAAY,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAChD,cAAc,SAAS,CAAC;AACxB,YAAY,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAQhD,eAAO,MAAM,UAAU;IACrB;;;;;;;;;;;;;;;;;;;;;OAqBG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;;;;;;;;;;;OAYG;;IAEH;;;;;;;;;;;;;;;;OAgBG;;IAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;;IAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;;IAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;;IAEH;;;;;;;;;;OAUG;;CAEJ,CAAC;AAEF,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC"}
@@ -30,7 +30,7 @@ export declare const getAppVersion: () => string | null;
30
30
  /**
31
31
  * Reloads the app.
32
32
  */
33
- export declare const reload: () => void;
33
+ export declare const reload: () => Promise<void>;
34
34
  /**
35
35
  * Fetches the minimum bundle id, which represents the initial bundle of the app
36
36
  * since it is created at build time.
@@ -1 +1 @@
1
- {"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../../src/native.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAyB,EACvB,KAAK,kBAAkB,EACxB,MAAM,0BAA0B,CAAC;AAMlC,eAAO,MAAM,mBAAmB;;CAE/B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,UAAU,EAAE;QACV,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,MAAM,eAAe,EACzD,WAAW,CAAC,EACZ,UAAU,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,IAAI,eAQ9C,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,kBAAkB,GAAG;IAC9C,MAAM,EAAE,YAAY,CAAC;CACtB,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAC3E;;GAEG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,IAAI,GACrB,OAAO,CAAC,OAAO,CAAC,CAAC;AAqCpB;;GAEG;AACH,eAAO,MAAM,aAAa,QAAO,MAAM,GAAG,IAGzC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,MAAM,YAIlB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,QAAO,MAGjC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,WAAW,QAAO,MAI9B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,UAAU,QAAO,MAG7B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,QAAO,MAAM,GAAG,IAG9C,CAAC"}
1
+ {"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../../src/native.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAyB,EACvB,KAAK,kBAAkB,EACxB,MAAM,0BAA0B,CAAC;AAMlC,eAAO,MAAM,mBAAmB;;CAE/B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,UAAU,EAAE;QACV,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,MAAM,eAAe,EACzD,WAAW,CAAC,EACZ,UAAU,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,IAAI,eAQ9C,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,kBAAkB,GAAG;IAC9C,MAAM,EAAE,YAAY,CAAC;CACtB,CAAC;AAOF;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAC3E;;GAEG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,IAAI,GACrB,OAAO,CAAC,OAAO,CAAC,CAAC;AA0DpB;;GAEG;AACH,eAAO,MAAM,aAAa,QAAO,MAAM,GAAG,IAGzC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,MAAM,qBAElB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,QAAO,MAGjC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,WAAW,QAAO,MAI9B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,UAAU,QAAO,MAG7B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,QAAO,MAAM,GAAG,IAG9C,CAAC"}
@@ -39,7 +39,7 @@ export interface RunUpdateProcessOptions extends CheckForUpdateOptions {
39
39
  * });
40
40
  *
41
41
  * if(result.status !== "UP_TO_DATE" && result.shouldForceUpdate) {
42
- * HotUpdater.reload();
42
+ * await HotUpdater.reload();
43
43
  * }
44
44
  * ```
45
45
  *
@@ -4,7 +4,7 @@ export interface UpdateBundleParams {
4
4
  fileUrl: string | null;
5
5
  }
6
6
  export interface Spec extends TurboModule {
7
- reload(): void;
7
+ reload(): Promise<void>;
8
8
  updateBundle(params: UpdateBundleParams): Promise<boolean>;
9
9
  addListener(eventName: string): void;
10
10
  removeListeners(count: number): void;
@@ -1 +1 @@
1
- {"version":3,"file":"NativeHotUpdater.d.ts","sourceRoot":"","sources":["../../../../src/specs/NativeHotUpdater.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,IAAK,SAAQ,WAAW;IAEvC,MAAM,IAAI,IAAI,CAAC;IACf,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAG3D,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,YAAY,EAAE,MAAM;QAC3B,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,OAAO,EAAE,MAAM,CAAC;QAChB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;KACjC,CAAC;CACH;;AAED,wBAAoE"}
1
+ {"version":3,"file":"NativeHotUpdater.d.ts","sourceRoot":"","sources":["../../../../src/specs/NativeHotUpdater.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,IAAK,SAAQ,WAAW;IAEvC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAG3D,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,YAAY,EAAE,MAAM;QAC3B,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,OAAO,EAAE,MAAM,CAAC;QAChB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;KACjC,CAAC;CACH;;AAED,wBAAoE"}
@@ -1 +1 @@
1
- {"version":3,"file":"wrap.d.ts","sourceRoot":"","sources":["../../../src/wrap.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,KAAK,qBAAqB,EAAkB,MAAM,kBAAkB,CAAC;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG/C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAGnE,KAAK,YAAY,GACb,kBAAkB,GAClB,UAAU,GACV,0BAA0B,CAAC;AAE/B,MAAM,WAAW,iBAAkB,SAAQ,qBAAqB;IAC9D;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,iBAAiB,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,EAAE,OAAO,CAAC,YAAY,EAAE,0BAA0B,CAAC,CAAC;QAC1D,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;KACxB,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,GAAG,KAAK,GAAG,OAAO,KAAK,IAAI,CAAC;IAC7D,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;OAIG;IACH,wBAAwB,CAAC,EAAE,CAAC,QAAQ,EAAE,wBAAwB,KAAK,IAAI,CAAC;CACzE;AAED,wBAAgB,IAAI,CAAC,CAAC,SAAS,KAAK,CAAC,GAAG,CAAC,mBAAmB,GAAG,MAAM,EACnE,OAAO,EAAE,iBAAiB,GACzB,CAAC,gBAAgB,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAuGtE"}
1
+ {"version":3,"file":"wrap.d.ts","sourceRoot":"","sources":["../../../src/wrap.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+C,MAAM,OAAO,CAAC;AACpE,OAAO,EAAE,KAAK,qBAAqB,EAAkB,MAAM,kBAAkB,CAAC;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG/C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAGnE,KAAK,YAAY,GACb,kBAAkB,GAClB,UAAU,GACV,0BAA0B,CAAC;AAE/B,MAAM,WAAW,iBAAkB,SAAQ,qBAAqB;IAC9D;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,iBAAiB,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,EAAE,OAAO,CAAC,YAAY,EAAE,0BAA0B,CAAC,CAAC;QAC1D,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;KACxB,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,GAAG,KAAK,GAAG,OAAO,KAAK,IAAI,CAAC;IAC7D,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;OAIG;IACH,wBAAwB,CAAC,EAAE,CAAC,QAAQ,EAAE,wBAAwB,KAAK,IAAI,CAAC;CACzE;AAED,wBAAgB,IAAI,CAAC,CAAC,SAAS,KAAK,CAAC,GAAG,CAAC,mBAAmB,GAAG,MAAM,EACnE,OAAO,EAAE,iBAAiB,GACzB,CAAC,gBAAgB,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAuGtE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hot-updater/react-native",
3
- "version": "0.20.10",
3
+ "version": "0.20.12",
4
4
  "description": "React Native OTA solution for self-hosted",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -119,13 +119,13 @@
119
119
  "react-native": "0.79.1",
120
120
  "react-native-builder-bob": "^0.40.10",
121
121
  "typescript": "^5.8.3",
122
- "hot-updater": "0.20.10"
122
+ "hot-updater": "0.20.12"
123
123
  },
124
124
  "dependencies": {
125
125
  "use-sync-external-store": "1.5.0",
126
- "@hot-updater/core": "0.20.10",
127
- "@hot-updater/plugin-core": "0.20.10",
128
- "@hot-updater/js": "0.20.10"
126
+ "@hot-updater/core": "0.20.12",
127
+ "@hot-updater/js": "0.20.12",
128
+ "@hot-updater/plugin-core": "0.20.12"
129
129
  },
130
130
  "scripts": {
131
131
  "build": "bob build && tsc -p plugin/tsconfig.json",
@@ -51,9 +51,12 @@ var getFingerprint = function () { return __awaiter(void 0, void 0, void 0, func
51
51
  if (fingerprintCache) {
52
52
  return [2 /*return*/, fingerprintCache];
53
53
  }
54
- return [4 /*yield*/, (0, hot_updater_1.createAndInjectFingerprintFiles)()];
54
+ return [4 /*yield*/, (0, hot_updater_1.generateFingerprints)()];
55
55
  case 1:
56
56
  fingerprintCache = _a.sent();
57
+ return [4 /*yield*/, (0, hot_updater_1.createFingerprintJSON)(fingerprintCache)];
58
+ case 2:
59
+ _a.sent();
57
60
  return [2 /*return*/, fingerprintCache];
58
61
  }
59
62
  });
@@ -138,7 +141,6 @@ var withHotUpdaterNativeCode = function (config) {
138
141
  var javaImportAnchor = "import com.facebook.react.ReactApplication;";
139
142
  var javaReactNativeHostAnchor = "new DefaultReactNativeHost"; // Part of the instantiation
140
143
  var javaMethodCheck = "HotUpdater.Companion.getJSBundleFile"; // Unique part of the method body
141
- var javaMethodSignature = "protected String getJSBundleFile()";
142
144
  // Regex to find an existing getJSBundleFile override (non-greedy)
143
145
  var javaExistingMethodRegex = /^\s*@Override\s+protected String getJSBundleFile\(\)\s*\{[\s\S]*?^\s*\}/gm;
144
146
  var javaHermesBlockEndAnchor = "return BuildConfig.IS_HERMES_ENABLED;\n }"; // End of the isHermesEnabled method block
@@ -223,7 +225,7 @@ var withHotUpdaterConfigAsync = function (props) { return function (config) {
223
225
  if (!(config.updateStrategy !== "appVersion")) return [3 /*break*/, 3];
224
226
  return [4 /*yield*/, getFingerprint()];
225
227
  case 2:
226
- fingerprint = (_a.sent()).fingerprint;
228
+ fingerprint = _a.sent();
227
229
  fingerprintHash = fingerprint.ios.hash;
228
230
  _a.label = 3;
229
231
  case 3:
@@ -248,7 +250,7 @@ var withHotUpdaterConfigAsync = function (props) { return function (config) {
248
250
  if (!(config.updateStrategy !== "appVersion")) return [3 /*break*/, 3];
249
251
  return [4 /*yield*/, getFingerprint()];
250
252
  case 2:
251
- fingerprint = (_a.sent()).fingerprint;
253
+ fingerprint = _a.sent();
252
254
  fingerprintHash = fingerprint.android.hash;
253
255
  _a.label = 3;
254
256
  case 3:
@@ -1,7 +1,7 @@
1
1
  import type { AppUpdateInfo, UpdateBundleParams } from "@hot-updater/core";
2
2
  import { Platform } from "react-native";
3
3
  import { HotUpdaterError } from "./error";
4
- import { type UpdateSource, fetchUpdateInfo } from "./fetchUpdateInfo";
4
+ import { fetchUpdateInfo, type UpdateSource } from "./fetchUpdateInfo";
5
5
  import {
6
6
  getAppVersion,
7
7
  getBundleId,
package/src/index.ts CHANGED
@@ -13,10 +13,9 @@ import { runUpdateProcess } from "./runUpdateProcess";
13
13
  import { hotUpdaterStore } from "./store";
14
14
  import { wrap } from "./wrap";
15
15
 
16
- export type { HotUpdaterOptions } from "./wrap";
17
16
  export type { HotUpdaterEvent } from "./native";
18
-
19
17
  export * from "./store";
18
+ export type { HotUpdaterOptions } from "./wrap";
20
19
 
21
20
  addListener("onProgress", ({ progress }) => {
22
21
  hotUpdaterStore.setState({
@@ -121,7 +120,7 @@ export const HotUpdater = {
121
120
  *
122
121
  * await HotUpdater.updateBundle(updateInfo.id, updateInfo.fileUrl);
123
122
  * if (updateInfo.shouldForceUpdate) {
124
- * HotUpdater.reload();
123
+ * await HotUpdater.reload();
125
124
  * }
126
125
  * ```
127
126
  */
@@ -152,7 +151,7 @@ export const HotUpdater = {
152
151
  * });
153
152
  *
154
153
  * if(result.status !== "UP_TO_DATE" && result.shouldForceUpdate) {
155
- * HotUpdater.reload();
154
+ * await HotUpdater.reload();
156
155
  * }
157
156
  * ```
158
157
  *
@@ -188,7 +187,7 @@ export const HotUpdater = {
188
187
  * fileUrl: updateInfo.fileUrl
189
188
  * });
190
189
  * if (updateInfo.shouldForceUpdate) {
191
- * HotUpdater.reload();
190
+ * await HotUpdater.reload();
192
191
  * }
193
192
  * ```
194
193
  */
package/src/native.ts CHANGED
@@ -34,6 +34,11 @@ export type UpdateParams = UpdateBundleParams & {
34
34
  status: UpdateStatus;
35
35
  };
36
36
 
37
+ // In-flight update deduplication by bundleId (session-scoped).
38
+ const inflightUpdates = new Map<string, Promise<boolean>>();
39
+ // Tracks the last successfully installed bundleId for this session.
40
+ let lastInstalledBundleId: string | null = null;
41
+
37
42
  /**
38
43
  * Downloads files and applies them to the app.
39
44
  *
@@ -60,6 +65,11 @@ export async function updateBundle(
60
65
  const status =
61
66
  typeof paramsOrBundleId === "string" ? "UPDATE" : paramsOrBundleId.status;
62
67
 
68
+ // If we have already installed this bundle in this session, skip re-download.
69
+ if (status === "UPDATE" && lastInstalledBundleId === updateBundleId) {
70
+ return true;
71
+ }
72
+
63
73
  const currentBundleId = getBundleId();
64
74
 
65
75
  // updateBundleId <= currentBundleId
@@ -72,16 +82,32 @@ export async function updateBundle(
72
82
  );
73
83
  }
74
84
 
75
- if (typeof paramsOrBundleId === "string") {
76
- return HotUpdaterNative.updateBundle({
77
- bundleId: updateBundleId,
78
- fileUrl: fileUrl || null,
79
- });
80
- }
81
- return HotUpdaterNative.updateBundle({
82
- bundleId: updateBundleId,
83
- fileUrl: paramsOrBundleId.fileUrl,
84
- });
85
+ // In-flight guard: return the same promise if the same bundle is already updating.
86
+ const existing = inflightUpdates.get(updateBundleId);
87
+ if (existing) return existing;
88
+
89
+ const targetFileUrl =
90
+ typeof paramsOrBundleId === "string"
91
+ ? (fileUrl ?? null)
92
+ : paramsOrBundleId.fileUrl;
93
+
94
+ const promise = (async () => {
95
+ try {
96
+ const ok = await HotUpdaterNative.updateBundle({
97
+ bundleId: updateBundleId,
98
+ fileUrl: targetFileUrl,
99
+ });
100
+ if (ok) {
101
+ lastInstalledBundleId = updateBundleId;
102
+ }
103
+ return ok;
104
+ } finally {
105
+ inflightUpdates.delete(updateBundleId);
106
+ }
107
+ })();
108
+
109
+ inflightUpdates.set(updateBundleId, promise);
110
+ return promise;
85
111
  }
86
112
 
87
113
  /**
@@ -95,10 +121,8 @@ export const getAppVersion = (): string | null => {
95
121
  /**
96
122
  * Reloads the app.
97
123
  */
98
- export const reload = () => {
99
- requestAnimationFrame(() => {
100
- HotUpdaterNative.reload();
101
- });
124
+ export const reload = async () => {
125
+ await HotUpdaterNative.reload();
102
126
  };
103
127
 
104
128
  /**
@@ -43,7 +43,7 @@ export interface RunUpdateProcessOptions extends CheckForUpdateOptions {
43
43
  * });
44
44
  *
45
45
  * if(result.status !== "UP_TO_DATE" && result.shouldForceUpdate) {
46
- * HotUpdater.reload();
46
+ * await HotUpdater.reload();
47
47
  * }
48
48
  * ```
49
49
  *
@@ -65,7 +65,7 @@ export const runUpdateProcess = async ({
65
65
 
66
66
  const isUpdated = await updateInfo.updateBundle();
67
67
  if (isUpdated && updateInfo.shouldForceUpdate && reloadOnForceUpdate) {
68
- reload();
68
+ await reload();
69
69
  }
70
70
 
71
71
  if (!isUpdated) {
@@ -8,7 +8,7 @@ export interface UpdateBundleParams {
8
8
 
9
9
  export interface Spec extends TurboModule {
10
10
  // Methods
11
- reload(): void;
11
+ reload(): Promise<void>;
12
12
  updateBundle(params: UpdateBundleParams): Promise<boolean>;
13
13
 
14
14
  // EventEmitter
package/src/wrap.tsx CHANGED
@@ -1,5 +1,4 @@
1
- import React from "react";
2
- import { useEffect, useLayoutEffect, useState } from "react";
1
+ import React, { useEffect, useLayoutEffect, useState } from "react";
3
2
  import { type CheckForUpdateOptions, checkForUpdate } from "./checkForUpdate";
4
3
  import type { HotUpdaterError } from "./error";
5
4
  import { useEventCallback } from "./hooks/useEventCallback";
@@ -117,7 +116,7 @@ export function wrap<P extends React.JSX.IntrinsicAttributes = object>(
117
116
  }
118
117
 
119
118
  if (reloadOnForceUpdate) {
120
- reload();
119
+ await reload();
121
120
  }
122
121
 
123
122
  restOptions.onUpdateProcessCompleted?.({