@hot-updater/react-native 1.0.0-rc.1 → 1.0.0-rc.15

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 (227) hide show
  1. package/android/proguard-rules.pro +17 -2
  2. package/android/src/main/java/com/hotupdater/BuiltInAssetResolver.kt +286 -0
  3. package/android/src/main/java/com/hotupdater/BundleFileStorageService.kt +651 -637
  4. package/android/src/main/java/com/hotupdater/BundleMetadata.kt +10 -0
  5. package/android/src/main/java/com/hotupdater/HotUpdaterException.kt +0 -13
  6. package/android/src/main/java/com/hotupdater/HotUpdaterImpl.kt +10 -14
  7. package/android/src/main/java/com/hotupdater/HotUpdaterRecoveryManager.kt +37 -54
  8. package/android/src/main/java/com/hotupdater/HotUpdaterRecoveryState.kt +64 -0
  9. package/android/src/main/java/com/hotupdater/OkHttpDownloadService.kt +19 -0
  10. package/android/src/main/java/com/hotupdater/TarArchiveInputStream.kt +214 -375
  11. package/android/src/main/java/com/hotupdater/TarBrArchiveExtractor.kt +119 -0
  12. package/android/src/newarch/HotUpdater.kt +7 -9
  13. package/android/src/newarch/HotUpdaterModule.kt +40 -20
  14. package/android/src/oldarch/HotUpdater.kt +7 -9
  15. package/android/src/oldarch/HotUpdaterModule.kt +40 -20
  16. package/android/src/test/java/com/hotupdater/BundleFileStorageServiceTest.kt +1126 -74
  17. package/android/src/test/java/com/hotupdater/HotUpdaterImplTest.kt +4 -5
  18. package/android/src/test/java/com/hotupdater/HotUpdaterRecoveryStateTest.kt +97 -0
  19. package/android/src/test/java/com/hotupdater/PendingCrashRecoveryTest.kt +44 -0
  20. package/android/src/test/java/com/hotupdater/TarBrArchiveExtractorTest.kt +206 -0
  21. package/ios/HotUpdater/Internal/BrotliFileDecompressor.swift +167 -0
  22. package/ios/HotUpdater/Internal/BuiltInAssetResolver.swift +196 -0
  23. package/ios/HotUpdater/Internal/BundleFileStorageService.swift +773 -1016
  24. package/ios/HotUpdater/Internal/BundleMetadata.swift +5 -0
  25. package/ios/HotUpdater/Internal/FileUtilities.swift +64 -0
  26. package/ios/HotUpdater/Internal/HotUpdater-Bridging-Header.h +0 -1
  27. package/ios/HotUpdater/Internal/HotUpdater.mm +5 -27
  28. package/ios/HotUpdater/Internal/HotUpdaterImpl.swift +149 -51
  29. package/ios/HotUpdater/Internal/NotificationExtension.swift +0 -2
  30. package/ios/HotUpdater/Internal/TarArchiveExtractor.swift +182 -311
  31. package/ios/HotUpdater/Internal/URLSessionDownloadService.swift +13 -72
  32. package/ios/HotUpdater/Recovery/HotUpdaterRecovery.h +16 -0
  33. package/ios/HotUpdater/Recovery/HotUpdaterRecovery.mm +83 -0
  34. package/ios/HotUpdater/Recovery/HotUpdaterRecoveryHooks.mm +49 -0
  35. package/lib/commonjs/checkForUpdate.js +32 -23
  36. package/lib/commonjs/checkForUpdate.js.map +1 -1
  37. package/lib/commonjs/checkForUpdate.releaseCatalog.spec.js +97 -28
  38. package/lib/commonjs/checkForUpdate.releaseCatalog.spec.js.map +1 -1
  39. package/lib/commonjs/error.js +4 -13
  40. package/lib/commonjs/error.js.map +1 -1
  41. package/lib/commonjs/fetchJSON.js +9 -2
  42. package/lib/commonjs/fetchJSON.js.map +1 -1
  43. package/lib/commonjs/httpClient.js +46 -29
  44. package/lib/commonjs/httpClient.js.map +1 -1
  45. package/lib/commonjs/httpClient.spec.js +57 -5
  46. package/lib/commonjs/httpClient.spec.js.map +1 -1
  47. package/lib/commonjs/index.js +31 -14
  48. package/lib/commonjs/index.js.map +1 -1
  49. package/lib/commonjs/index.spec.js +56 -11
  50. package/lib/commonjs/index.spec.js.map +1 -1
  51. package/lib/commonjs/native.js +15 -14
  52. package/lib/commonjs/native.js.map +1 -1
  53. package/lib/commonjs/native.spec.js +128 -22
  54. package/lib/commonjs/native.spec.js.map +1 -1
  55. package/lib/commonjs/{notifyAppReadyAnalytics.boundary.spec.js → notifyAppReadyInsights.boundary.spec.js} +28 -21
  56. package/lib/commonjs/notifyAppReadyInsights.boundary.spec.js.map +1 -0
  57. package/lib/commonjs/notifyAppReadyInsights.js +188 -0
  58. package/lib/commonjs/notifyAppReadyInsights.js.map +1 -0
  59. package/lib/commonjs/{notifyAppReadyAnalytics.spec.js → notifyAppReadyInsights.spec.js} +161 -29
  60. package/lib/commonjs/notifyAppReadyInsights.spec.js.map +1 -0
  61. package/lib/commonjs/{notifyAppReadyAnalytics.test-utils.js → notifyAppReadyInsights.test-utils.js} +3 -3
  62. package/lib/commonjs/notifyAppReadyInsights.test-utils.js.map +1 -0
  63. package/lib/commonjs/{notifyAppReadyAnalytics.transport.spec.js → notifyAppReadyInsights.transport.spec.js} +14 -7
  64. package/lib/commonjs/notifyAppReadyInsights.transport.spec.js.map +1 -0
  65. package/lib/commonjs/sdkVersion.js +1 -1
  66. package/lib/commonjs/sdkVersion.js.map +1 -1
  67. package/lib/commonjs/specs/NativeHotUpdater.js.map +1 -1
  68. package/lib/commonjs/store.js +3 -10
  69. package/lib/commonjs/store.js.map +1 -1
  70. package/lib/commonjs/store.notification.spec.js +12 -4
  71. package/lib/commonjs/store.notification.spec.js.map +1 -1
  72. package/lib/commonjs/store.spec.js +2 -136
  73. package/lib/commonjs/store.spec.js.map +1 -1
  74. package/lib/commonjs/wrap.js +11 -12
  75. package/lib/commonjs/wrap.js.map +1 -1
  76. package/lib/commonjs/wrap.spec.js +97 -25
  77. package/lib/commonjs/wrap.spec.js.map +1 -1
  78. package/lib/module/checkForUpdate.js +32 -23
  79. package/lib/module/checkForUpdate.js.map +1 -1
  80. package/lib/module/checkForUpdate.releaseCatalog.spec.js +97 -28
  81. package/lib/module/checkForUpdate.releaseCatalog.spec.js.map +1 -1
  82. package/lib/module/error.js +4 -13
  83. package/lib/module/error.js.map +1 -1
  84. package/lib/module/fetchJSON.js +7 -1
  85. package/lib/module/fetchJSON.js.map +1 -1
  86. package/lib/module/httpClient.js +48 -31
  87. package/lib/module/httpClient.js.map +1 -1
  88. package/lib/module/httpClient.spec.js +57 -5
  89. package/lib/module/httpClient.spec.js.map +1 -1
  90. package/lib/module/index.js +32 -15
  91. package/lib/module/index.js.map +1 -1
  92. package/lib/module/index.spec.js +56 -11
  93. package/lib/module/index.spec.js.map +1 -1
  94. package/lib/module/native.js +13 -12
  95. package/lib/module/native.js.map +1 -1
  96. package/lib/module/native.spec.js +128 -22
  97. package/lib/module/native.spec.js.map +1 -1
  98. package/lib/module/{notifyAppReadyAnalytics.boundary.spec.js → notifyAppReadyInsights.boundary.spec.js} +23 -16
  99. package/lib/module/notifyAppReadyInsights.boundary.spec.js.map +1 -0
  100. package/lib/module/notifyAppReadyInsights.js +181 -0
  101. package/lib/module/notifyAppReadyInsights.js.map +1 -0
  102. package/lib/module/{notifyAppReadyAnalytics.spec.js → notifyAppReadyInsights.spec.js} +153 -21
  103. package/lib/module/notifyAppReadyInsights.spec.js.map +1 -0
  104. package/lib/module/{notifyAppReadyAnalytics.test-utils.js → notifyAppReadyInsights.test-utils.js} +3 -3
  105. package/lib/module/notifyAppReadyInsights.test-utils.js.map +1 -0
  106. package/lib/module/{notifyAppReadyAnalytics.transport.spec.js → notifyAppReadyInsights.transport.spec.js} +11 -4
  107. package/lib/module/notifyAppReadyInsights.transport.spec.js.map +1 -0
  108. package/lib/module/sdkVersion.js +1 -1
  109. package/lib/module/sdkVersion.js.map +1 -1
  110. package/lib/module/specs/NativeHotUpdater.js.map +1 -1
  111. package/lib/module/store.js +3 -10
  112. package/lib/module/store.js.map +1 -1
  113. package/lib/module/store.notification.spec.js +12 -4
  114. package/lib/module/store.notification.spec.js.map +1 -1
  115. package/lib/module/store.spec.js +2 -136
  116. package/lib/module/store.spec.js.map +1 -1
  117. package/lib/module/wrap.js +11 -12
  118. package/lib/module/wrap.js.map +1 -1
  119. package/lib/module/wrap.spec.js +99 -25
  120. package/lib/module/wrap.spec.js.map +1 -1
  121. package/lib/typescript/commonjs/checkForUpdate.d.ts +2 -3
  122. package/lib/typescript/commonjs/checkForUpdate.d.ts.map +1 -1
  123. package/lib/typescript/commonjs/error.d.ts +4 -13
  124. package/lib/typescript/commonjs/error.d.ts.map +1 -1
  125. package/lib/typescript/commonjs/fetchJSON.d.ts +4 -0
  126. package/lib/typescript/commonjs/fetchJSON.d.ts.map +1 -1
  127. package/lib/typescript/commonjs/httpClient.d.ts +6 -6
  128. package/lib/typescript/commonjs/httpClient.d.ts.map +1 -1
  129. package/lib/typescript/commonjs/index.d.ts +4 -7
  130. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  131. package/lib/typescript/commonjs/native.d.ts +5 -9
  132. package/lib/typescript/commonjs/native.d.ts.map +1 -1
  133. package/lib/typescript/commonjs/notifyAppReadyInsights.d.ts +25 -0
  134. package/lib/typescript/commonjs/notifyAppReadyInsights.d.ts.map +1 -0
  135. package/lib/typescript/commonjs/notifyAppReadyInsights.test-utils.d.ts +8 -0
  136. package/lib/typescript/commonjs/notifyAppReadyInsights.test-utils.d.ts.map +1 -0
  137. package/lib/typescript/commonjs/sdkVersion.d.ts +1 -1
  138. package/lib/typescript/commonjs/sdkVersion.d.ts.map +1 -1
  139. package/lib/typescript/commonjs/specs/NativeHotUpdater.d.ts +8 -35
  140. package/lib/typescript/commonjs/specs/NativeHotUpdater.d.ts.map +1 -1
  141. package/lib/typescript/commonjs/store.d.ts +1 -3
  142. package/lib/typescript/commonjs/store.d.ts.map +1 -1
  143. package/lib/typescript/commonjs/wrap.types.d.ts +5 -8
  144. package/lib/typescript/commonjs/wrap.types.d.ts.map +1 -1
  145. package/lib/typescript/module/checkForUpdate.d.ts +2 -3
  146. package/lib/typescript/module/checkForUpdate.d.ts.map +1 -1
  147. package/lib/typescript/module/error.d.ts +4 -13
  148. package/lib/typescript/module/error.d.ts.map +1 -1
  149. package/lib/typescript/module/fetchJSON.d.ts +4 -0
  150. package/lib/typescript/module/fetchJSON.d.ts.map +1 -1
  151. package/lib/typescript/module/httpClient.d.ts +6 -6
  152. package/lib/typescript/module/httpClient.d.ts.map +1 -1
  153. package/lib/typescript/module/index.d.ts +4 -7
  154. package/lib/typescript/module/index.d.ts.map +1 -1
  155. package/lib/typescript/module/native.d.ts +5 -9
  156. package/lib/typescript/module/native.d.ts.map +1 -1
  157. package/lib/typescript/module/notifyAppReadyInsights.d.ts +25 -0
  158. package/lib/typescript/module/notifyAppReadyInsights.d.ts.map +1 -0
  159. package/lib/typescript/module/notifyAppReadyInsights.test-utils.d.ts +8 -0
  160. package/lib/typescript/module/notifyAppReadyInsights.test-utils.d.ts.map +1 -0
  161. package/lib/typescript/module/sdkVersion.d.ts +1 -1
  162. package/lib/typescript/module/sdkVersion.d.ts.map +1 -1
  163. package/lib/typescript/module/specs/NativeHotUpdater.d.ts +8 -35
  164. package/lib/typescript/module/specs/NativeHotUpdater.d.ts.map +1 -1
  165. package/lib/typescript/module/store.d.ts +1 -3
  166. package/lib/typescript/module/store.d.ts.map +1 -1
  167. package/lib/typescript/module/wrap.types.d.ts +5 -8
  168. package/lib/typescript/module/wrap.types.d.ts.map +1 -1
  169. package/package.json +3 -3
  170. package/src/checkForUpdate.releaseCatalog.spec.ts +137 -61
  171. package/src/checkForUpdate.ts +35 -29
  172. package/src/error.ts +4 -14
  173. package/src/fetchJSON.ts +12 -1
  174. package/src/httpClient.spec.ts +70 -5
  175. package/src/httpClient.ts +78 -64
  176. package/src/index.spec.ts +59 -11
  177. package/src/index.ts +41 -17
  178. package/src/native.spec.ts +133 -22
  179. package/src/native.ts +21 -32
  180. package/src/{notifyAppReadyAnalytics.boundary.spec.ts → notifyAppReadyInsights.boundary.spec.ts} +25 -17
  181. package/src/{notifyAppReadyAnalytics.spec.ts → notifyAppReadyInsights.spec.ts} +141 -22
  182. package/src/{notifyAppReadyAnalytics.test-utils.ts → notifyAppReadyInsights.test-utils.ts} +4 -4
  183. package/src/{notifyAppReadyAnalytics.transport.spec.ts → notifyAppReadyInsights.transport.spec.ts} +13 -5
  184. package/src/notifyAppReadyInsights.ts +293 -0
  185. package/src/sdkVersion.ts +1 -1
  186. package/src/specs/NativeHotUpdater.ts +8 -36
  187. package/src/store.notification.spec.ts +13 -3
  188. package/src/store.spec.ts +0 -157
  189. package/src/store.ts +2 -23
  190. package/src/wrap.spec.ts +109 -31
  191. package/src/wrap.tsx +11 -11
  192. package/src/wrap.types.ts +5 -8
  193. package/android/src/main/java/com/hotupdater/DecompressService.kt +0 -89
  194. package/android/src/main/java/com/hotupdater/DecompressionStrategy.kt +0 -26
  195. package/android/src/main/java/com/hotupdater/TarBrDecompressionStrategy.kt +0 -117
  196. package/android/src/main/java/com/hotupdater/TarGzDecompressionStrategy.kt +0 -117
  197. package/android/src/main/java/com/hotupdater/ZipDecompressionStrategy.kt +0 -192
  198. package/android/src/test/java/com/hotupdater/TarArchiveInputStreamTest.kt +0 -68
  199. package/ios/HotUpdater/Internal/ArchiveExtractionUtilities.swift +0 -178
  200. package/ios/HotUpdater/Internal/DecompressService.swift +0 -112
  201. package/ios/HotUpdater/Internal/DecompressionStrategy.swift +0 -22
  202. package/ios/HotUpdater/Internal/StreamingTarArchiveExtractor.swift +0 -370
  203. package/ios/HotUpdater/Internal/TarBrDecompressionStrategy.swift +0 -39
  204. package/ios/HotUpdater/Internal/TarGzDecompressionStrategy.swift +0 -59
  205. package/ios/HotUpdater/Internal/ZipArchiveExtractor.swift +0 -482
  206. package/ios/HotUpdater/Internal/ZipDecompressionStrategy.swift +0 -56
  207. package/lib/commonjs/notifyAppReadyAnalytics.boundary.spec.js.map +0 -1
  208. package/lib/commonjs/notifyAppReadyAnalytics.js +0 -133
  209. package/lib/commonjs/notifyAppReadyAnalytics.js.map +0 -1
  210. package/lib/commonjs/notifyAppReadyAnalytics.spec.js.map +0 -1
  211. package/lib/commonjs/notifyAppReadyAnalytics.test-utils.js.map +0 -1
  212. package/lib/commonjs/notifyAppReadyAnalytics.transport.spec.js.map +0 -1
  213. package/lib/module/notifyAppReadyAnalytics.boundary.spec.js.map +0 -1
  214. package/lib/module/notifyAppReadyAnalytics.js +0 -128
  215. package/lib/module/notifyAppReadyAnalytics.js.map +0 -1
  216. package/lib/module/notifyAppReadyAnalytics.spec.js.map +0 -1
  217. package/lib/module/notifyAppReadyAnalytics.test-utils.js.map +0 -1
  218. package/lib/module/notifyAppReadyAnalytics.transport.spec.js.map +0 -1
  219. package/lib/typescript/commonjs/notifyAppReadyAnalytics.d.ts +0 -13
  220. package/lib/typescript/commonjs/notifyAppReadyAnalytics.d.ts.map +0 -1
  221. package/lib/typescript/commonjs/notifyAppReadyAnalytics.test-utils.d.ts +0 -8
  222. package/lib/typescript/commonjs/notifyAppReadyAnalytics.test-utils.d.ts.map +0 -1
  223. package/lib/typescript/module/notifyAppReadyAnalytics.d.ts +0 -13
  224. package/lib/typescript/module/notifyAppReadyAnalytics.d.ts.map +0 -1
  225. package/lib/typescript/module/notifyAppReadyAnalytics.test-utils.d.ts +0 -8
  226. package/lib/typescript/module/notifyAppReadyAnalytics.test-utils.d.ts.map +0 -1
  227. package/src/notifyAppReadyAnalytics.ts +0 -194
@@ -28,22 +28,14 @@ enum DownloadError: Error {
28
28
  case invalidContentLength
29
29
  }
30
30
 
31
- // Task state for persistence and recovery
32
- struct TaskState: Codable {
33
- let taskIdentifier: Int
34
- let destination: String
35
- let bundleId: String
36
- let startedAt: TimeInterval
37
- }
38
-
39
31
  class URLSessionDownloadService: NSObject, DownloadService {
32
+ private let stateLock = NSRecursiveLock()
40
33
  private var session: URLSession!
41
34
  private var backgroundSession: URLSession!
42
35
  private var progressHandlers: [URLSessionTask: (DownloadProgress) -> Void] = [:]
43
36
  private var completionHandlers: [URLSessionTask: (Result<URL, Error>) -> Void] = [:]
44
37
  private var destinations: [URLSessionTask: String] = [:]
45
38
  private var fileSizeHandlers: [URLSessionTask: (Int64) -> Void] = [:]
46
- private var taskStates: [Int: TaskState] = [:]
47
39
 
48
40
  override init() {
49
41
  super.init()
@@ -61,51 +53,22 @@ class URLSessionDownloadService: NSObject, DownloadService {
61
53
  backgroundConfig.sessionSendsLaunchEvents = true
62
54
  }
63
55
  backgroundSession = URLSession(configuration: backgroundConfig, delegate: self, delegateQueue: nil)
64
-
65
- // Load persisted task states
66
- taskStates = loadTaskStates()
67
- }
68
-
69
- // MARK: - State Persistence
70
-
71
- private var stateFileURL: URL {
72
- let documentsPath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
73
- return documentsPath.appendingPathComponent("download-state.json")
74
- }
75
-
76
- private func saveTaskState(_ state: TaskState) {
77
- taskStates[state.taskIdentifier] = state
78
-
79
- if let data = try? JSONEncoder().encode(taskStates) {
80
- try? data.write(to: stateFileURL)
81
- }
82
- }
83
-
84
- private func loadTaskStates() -> [Int: TaskState] {
85
- guard let data = try? Data(contentsOf: stateFileURL),
86
- let states = try? JSONDecoder().decode([Int: TaskState].self, from: data) else {
87
- return [:]
88
- }
89
- return states
90
- }
91
-
92
- private func removeTaskState(_ taskIdentifier: Int) {
93
- taskStates.removeValue(forKey: taskIdentifier)
94
-
95
- if let data = try? JSONEncoder().encode(taskStates) {
96
- try? data.write(to: stateFileURL)
97
- }
98
56
  }
99
57
 
100
58
  func downloadFile(from url: URL, to destination: String, fileSizeHandler: ((Int64) -> Void)?, progressHandler: @escaping (DownloadProgress) -> Void, completion: @escaping (Result<URL, Error>) -> Void) -> URLSessionDownloadTask? {
59
+ // UIKit state is read on the main thread before taking the task-state lock.
101
60
  // Determine if we should use background session
102
61
  #if !os(macOS)
103
- let appState = UIApplication.shared.applicationState
62
+ let appState = Thread.isMainThread
63
+ ? UIApplication.shared.applicationState
64
+ : DispatchQueue.main.sync { UIApplication.shared.applicationState }
104
65
  let useBackgroundSession = (appState == .background || appState == .inactive)
105
66
  #else
106
67
  let useBackgroundSession = false
107
68
  #endif
108
69
 
70
+ stateLock.lock()
71
+ defer { stateLock.unlock() }
109
72
  let selectedSession = useBackgroundSession ? backgroundSession : session
110
73
  let task = selectedSession?.downloadTask(with: url)
111
74
 
@@ -120,20 +83,6 @@ class URLSessionDownloadService: NSObject, DownloadService {
120
83
  fileSizeHandlers[task] = handler
121
84
  }
122
85
 
123
- // Extract bundleId from destination path (e.g., "bundle-store/{bundleId}/bundle.zip")
124
- let bundleId = (destination as NSString).pathComponents
125
- .dropFirst()
126
- .first(where: { $0 != "bundle-store" }) ?? "unknown"
127
-
128
- // Save task metadata for background recovery
129
- let taskState = TaskState(
130
- taskIdentifier: task.taskIdentifier,
131
- destination: destination,
132
- bundleId: bundleId,
133
- startedAt: Date().timeIntervalSince1970
134
- )
135
- saveTaskState(taskState)
136
-
137
86
  task.resume()
138
87
  return task
139
88
  }
@@ -141,6 +90,8 @@ class URLSessionDownloadService: NSObject, DownloadService {
141
90
 
142
91
  extension URLSessionDownloadService: URLSessionDownloadDelegate {
143
92
  func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didFinishDownloadingTo location: URL) {
93
+ stateLock.lock()
94
+ defer { stateLock.unlock() }
144
95
  let completion = completionHandlers[downloadTask]
145
96
  let destination = destinations[downloadTask]
146
97
 
@@ -149,10 +100,6 @@ extension URLSessionDownloadService: URLSessionDownloadDelegate {
149
100
  completionHandlers.removeValue(forKey: downloadTask)
150
101
  destinations.removeValue(forKey: downloadTask)
151
102
  fileSizeHandlers.removeValue(forKey: downloadTask)
152
- removeTaskState(downloadTask.taskIdentifier)
153
-
154
- // 다운로드 완료 알림
155
- NotificationCenter.default.post(name: .downloadDidFinish, object: downloadTask)
156
103
  }
157
104
 
158
105
  guard let destination = destination else {
@@ -197,15 +144,14 @@ extension URLSessionDownloadService: URLSessionDownloadDelegate {
197
144
  }
198
145
 
199
146
  func urlSession(_ session: URLSession, task: URLSessionTask, didCompleteWithError error: Error?) {
147
+ stateLock.lock()
148
+ defer { stateLock.unlock() }
200
149
  let completion = completionHandlers[task]
201
150
  defer {
202
151
  progressHandlers.removeValue(forKey: task)
203
152
  completionHandlers.removeValue(forKey: task)
204
153
  destinations.removeValue(forKey: task)
205
154
  fileSizeHandlers.removeValue(forKey: task)
206
- removeTaskState(task.taskIdentifier)
207
-
208
- NotificationCenter.default.post(name: .downloadDidFinish, object: task)
209
155
  }
210
156
 
211
157
  if let error = error {
@@ -214,6 +160,8 @@ extension URLSessionDownloadService: URLSessionDownloadDelegate {
214
160
  }
215
161
 
216
162
  func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didWriteData bytesWritten: Int64, totalBytesWritten: Int64, totalBytesExpectedToWrite: Int64) {
163
+ stateLock.lock()
164
+ defer { stateLock.unlock() }
217
165
  let progressHandler = progressHandlers[downloadTask]
218
166
 
219
167
  // Call file size handler on first callback when size is known
@@ -232,16 +180,9 @@ extension URLSessionDownloadService: URLSessionDownloadDelegate {
232
180
  let progress = Double(totalBytesWritten) / Double(totalBytesExpectedToWrite)
233
181
  progressHandler?(DownloadProgress(progress: progress, downloadedBytes: totalBytesWritten, totalBytes: totalBytesExpectedToWrite))
234
182
 
235
- let progressInfo: [String: Any] = [
236
- "progress": progress,
237
- "totalBytesReceived": totalBytesWritten,
238
- "totalBytesExpected": totalBytesExpectedToWrite
239
- ]
240
- NotificationCenter.default.post(name: .downloadProgressUpdate, object: downloadTask, userInfo: progressInfo)
241
183
  } else {
242
184
  progressHandler?(DownloadProgress(progress: 0, downloadedBytes: totalBytesWritten, totalBytes: nil))
243
185
 
244
- NotificationCenter.default.post(name: .downloadProgressUpdate, object: downloadTask, userInfo: ["progress": 0.0, "totalBytesReceived": 0, "totalBytesExpected": 0])
245
186
  }
246
187
  }
247
188
  }
@@ -0,0 +1,16 @@
1
+ #import <Foundation/Foundation.h>
2
+
3
+ #ifdef __cplusplus
4
+ extern "C" {
5
+ #endif
6
+
7
+ void HotUpdaterMarkFailedRuntime(void);
8
+ BOOL HotUpdaterIsFailedRuntime(void);
9
+ void HotUpdaterInstallRecoveryHooks(void);
10
+ BOOL HotUpdaterBeginSurfaceStart(const void *surfaceHandler);
11
+ void HotUpdaterFinishSurfaceStart(const void *surfaceHandler);
12
+ void HotUpdaterAfterSurfaceStarts(dispatch_block_t action);
13
+
14
+ #ifdef __cplusplus
15
+ }
16
+ #endif
@@ -0,0 +1,83 @@
1
+ #import "HotUpdaterRecovery.h"
2
+
3
+ static NSString *const failedRuntimeKey = @"HotUpdater.failedRuntime";
4
+ static NSString *const surfaceStartsKey = @"HotUpdater.surfaceStarts";
5
+
6
+ static BOOL isRuntimeThread(void)
7
+ {
8
+ return [[NSThread currentThread].name isEqualToString:@"com.facebook.react.runtime.JavaScript"];
9
+ }
10
+
11
+ static NSMutableDictionary *pendingStarts(void)
12
+ {
13
+ static NSMutableDictionary *starts;
14
+ static dispatch_once_t onceToken;
15
+ dispatch_once(&onceToken, ^{ starts = [NSMutableDictionary new]; });
16
+ return starts;
17
+ }
18
+
19
+ BOOL HotUpdaterIsFailedRuntime(void)
20
+ {
21
+ return [[[NSThread currentThread] threadDictionary][failedRuntimeKey] boolValue];
22
+ }
23
+
24
+ void HotUpdaterMarkFailedRuntime(void)
25
+ {
26
+ #ifdef RCT_NEW_ARCH_ENABLED
27
+ // A bridgeless runtime owns this thread. Never mark shared native workers.
28
+ if (isRuntimeThread()) {
29
+ [NSThread currentThread].threadDictionary[failedRuntimeKey] = @YES;
30
+ }
31
+ #endif
32
+ }
33
+
34
+ BOOL HotUpdaterBeginSurfaceStart(const void *surfaceHandler)
35
+ {
36
+ if (HotUpdaterIsFailedRuntime()) {
37
+ return NO;
38
+ }
39
+ if (!isRuntimeThread()) {
40
+ return YES;
41
+ }
42
+
43
+ NSMutableDictionary *starts = pendingStarts();
44
+ NSValue *key = [NSValue valueWithPointer:surfaceHandler];
45
+ @synchronized (starts) {
46
+ if (starts[key]) {
47
+ return NO;
48
+ }
49
+ NSMutableDictionary *runtime = [NSThread currentThread].threadDictionary;
50
+ dispatch_group_t group = runtime[surfaceStartsKey];
51
+ if (!group) {
52
+ group = dispatch_group_create();
53
+ runtime[surfaceStartsKey] = group;
54
+ }
55
+ dispatch_group_enter(group);
56
+ starts[key] = group;
57
+ }
58
+ return YES;
59
+ }
60
+
61
+ void HotUpdaterFinishSurfaceStart(const void *surfaceHandler)
62
+ {
63
+ NSMutableDictionary *starts = pendingStarts();
64
+ NSValue *key = [NSValue valueWithPointer:surfaceHandler];
65
+ dispatch_group_t group;
66
+ @synchronized (starts) {
67
+ group = starts[key];
68
+ [starts removeObjectForKey:key];
69
+ }
70
+ if (group) {
71
+ dispatch_group_leave(group);
72
+ }
73
+ }
74
+
75
+ void HotUpdaterAfterSurfaceStarts(dispatch_block_t action)
76
+ {
77
+ dispatch_group_t group = [NSThread currentThread].threadDictionary[surfaceStartsKey];
78
+ if (group) {
79
+ dispatch_group_notify(group, dispatch_get_main_queue(), action);
80
+ } else {
81
+ dispatch_async(dispatch_get_main_queue(), action);
82
+ }
83
+ }
@@ -0,0 +1,49 @@
1
+ #import "HotUpdaterRecovery.h"
2
+ #import <objc/runtime.h>
3
+
4
+ #ifdef RCT_NEW_ARCH_ENABLED
5
+ #import <React/RCTFabricSurface.h>
6
+ #import <React/RCTSurfacePresenter.h>
7
+ #endif
8
+
9
+ void HotUpdaterInstallRecoveryHooks(void)
10
+ {
11
+ #ifdef RCT_NEW_ARCH_ENABLED
12
+ static dispatch_once_t onceToken;
13
+ dispatch_once(&onceToken, ^{
14
+ SEL startSelector = @selector(start);
15
+ SEL completionSelector = @selector(setupAnimationDriverWithSurfaceHandler:);
16
+ Method startMethod = class_getInstanceMethod(RCTFabricSurface.class, startSelector);
17
+ Method completionMethod = class_getInstanceMethod(RCTSurfacePresenter.class, completionSelector);
18
+ if (!startMethod || !completionMethod) {
19
+ return;
20
+ }
21
+
22
+ IMP originalCompletion = method_getImplementation(completionMethod);
23
+ method_setImplementation(completionMethod, imp_implementationWithBlock(
24
+ ^(RCTSurfacePresenter *presenter, const facebook::react::SurfaceHandler &handler) {
25
+ ((void (*)(id, SEL, const facebook::react::SurfaceHandler &))originalCompletion)(
26
+ presenter, completionSelector, handler);
27
+ // This is the final operation in both synchronous and asynchronous
28
+ // Fabric starts. A stage callback fires too early to permit reload.
29
+ HotUpdaterFinishSurfaceStart(&handler);
30
+ }));
31
+
32
+ IMP originalStart = method_getImplementation(startMethod);
33
+ method_setImplementation(startMethod, imp_implementationWithBlock(^(RCTFabricSurface *surface) {
34
+ if (HotUpdaterIsFailedRuntime()) {
35
+ return;
36
+ }
37
+ const auto &handler = surface.surfaceHandler;
38
+ if (handler.getStatus() != facebook::react::SurfaceHandler::Status::Registered) {
39
+ return;
40
+ }
41
+ if (HotUpdaterBeginSurfaceStart(&handler)) {
42
+ // No coordination lock crosses the original call: older RN versions
43
+ // invoke the completion synchronously on this same thread.
44
+ ((void (*)(id, SEL))originalStart)(surface, startSelector);
45
+ }
46
+ }));
47
+ });
48
+ #endif
49
+ }
@@ -9,6 +9,7 @@ var _pluginCore = require("@hot-updater/plugin-core");
9
9
  var _reactNative = require("react-native");
10
10
  var _error = require("./error.js");
11
11
  var _native = require("./native.js");
12
+ var _notifyAppReadyInsights = require("./notifyAppReadyInsights.js");
12
13
  var _releaseCatalogCache = require("./releaseCatalogCache.js");
13
14
  var _store = require("./store.js");
14
15
  const sameReceipt = (first, second) => first !== null && first.kind === second.kind && first.releaseId === second.releaseId && first.bundleId === second.bundleId && first.catalogId === second.catalogId && first.scopeKey === second.scopeKey && first.generation === second.generation && first.catalogHash === second.catalogHash && first.channel === second.channel && first.selectionContextHash === second.selectionContextHash;
@@ -21,24 +22,22 @@ const resetProgress = () => {
21
22
  _store.hotUpdaterStore.setState({
22
23
  artifactType: null,
23
24
  details: null,
24
- downloadedBytes: undefined,
25
25
  isUpdateDownloaded: false,
26
- progress: 0,
27
- totalBytes: undefined
26
+ progress: 0
28
27
  });
29
28
  };
30
- const notifyReleaseAdoption = async input => {
29
+ const notifyUnchangedSelection = async input => {
31
30
  const {
32
31
  userId,
33
32
  username
34
33
  } = (0, _native.getPersistedUserIdentity)();
35
34
  try {
36
- await input.session.sendAnalyticsEvent({
35
+ await input.session.sendInsightsEvent({
37
36
  appVersion: input.appVersion,
38
37
  channel: input.desired.channel,
39
38
  cohort: input.cohort,
40
39
  fingerprintHash: input.fingerprintHash,
41
- fromBundleId: input.desired.bundleId,
40
+ fromBundleId: null,
42
41
  fromReleaseId: input.active?.releaseId ?? null,
43
42
  installId: (0, _native.getInstallId)(),
44
43
  platform: input.platform,
@@ -46,8 +45,8 @@ const notifyReleaseAdoption = async input => {
46
45
  requestTimeout: input.requestTimeout,
47
46
  toBundleId: input.desired.bundleId,
48
47
  toReleaseId: input.desired.releaseId,
49
- type: "RELEASE_ADOPTED",
50
- updateStrategy: input.updateStrategy,
48
+ type: "UNCHANGED",
49
+ updateStrategy: null,
51
50
  ...(userId === undefined ? {} : {
52
51
  userId
53
52
  }),
@@ -56,7 +55,7 @@ const notifyReleaseAdoption = async input => {
56
55
  })
57
56
  });
58
57
  } catch (error) {
59
- console.warn("[HotUpdater] Release adoption analytics failed:", error);
58
+ console.warn("[HotUpdater] Unchanged selection insights failed:", error);
60
59
  }
61
60
  };
62
61
  async function checkForReleaseCatalogUpdate(input) {
@@ -96,7 +95,8 @@ async function checkForReleaseCatalogUpdate(input) {
96
95
  const catalogId = catalog.catalogId;
97
96
  const scopeKey = catalog.scopeKey;
98
97
  const crashedBundleIds = (0, _native.getCrashHistory)();
99
- const active = (0, _native.getActiveUpdateState)().activeSelection;
98
+ const activeState = (0, _native.getActiveUpdateState)();
99
+ const active = activeState.activeSelection;
100
100
  const explicitScopeSwitch = input.explicitChannel !== undefined && input.explicitChannel !== input.currentChannel;
101
101
  const activeInTargetScope = active?.catalogId === catalogId && active.scopeKey === scopeKey ? active : null;
102
102
  const hasAuthenticatedActive = active !== null && active.catalogId !== null && active.scopeKey !== null && active.generation !== null;
@@ -176,8 +176,8 @@ async function checkForReleaseCatalogUpdate(input) {
176
176
  guard,
177
177
  selection: receipt
178
178
  });
179
- if (committed && transitionKind === "ADOPT_RELEASE" && options.analytics) {
180
- await notifyReleaseAdoption({
179
+ if (committed && transitionKind === "ADOPT_RELEASE" && options.insights) {
180
+ await notifyUnchangedSelection({
181
181
  active,
182
182
  appVersion: input.currentAppVersion,
183
183
  cohort: input.cohort,
@@ -186,8 +186,7 @@ async function checkForReleaseCatalogUpdate(input) {
186
186
  platform: input.platform,
187
187
  requestHeaders: options.requestHeaders,
188
188
  requestTimeout: options.requestTimeout,
189
- session,
190
- updateStrategy: options.updateStrategy
189
+ session
191
190
  });
192
191
  }
193
192
  return committed;
@@ -201,23 +200,33 @@ async function checkForReleaseCatalogUpdate(input) {
201
200
  if (!(0, _native.isReleaseSelectionCurrent)(guard)) {
202
201
  throw new _error.StaleReleaseCatalogError();
203
202
  }
204
- return (0, _native.updateBundle)({
203
+ const downloaded = await (0, _native.updateBundle)({
204
+ assets: artifact.assets,
205
205
  bundleId: desired.bundleId,
206
- changedAssets: artifact.changedAssets ?? null,
207
206
  channel: input.targetChannel,
208
- fileHash: artifact.fileHash,
209
- fileUrl: artifact.fileUrl,
210
- manifestFileHash: artifact.manifestFileHash ?? null,
211
- manifestUrl: artifact.manifestUrl ?? null,
207
+ manifestFileHash: artifact.manifestFileHash,
208
+ manifestUrl: artifact.manifestUrl,
209
+ ...(artifact.archiveUrl ? {
210
+ archiveUrl: artifact.archiveUrl
211
+ } : {}),
212
212
  selection: receipt,
213
213
  shouldSkipCurrentBundleIdCheck: true,
214
214
  status: desired.status
215
215
  });
216
+ if (downloaded) {
217
+ await (0, _notifyAppReadyInsights.reportBundleDownloaded)(options, {
218
+ fromBundleId: input.currentBundleId,
219
+ fromReleaseId: active?.bundleId === input.currentBundleId ? active.releaseId : activeState.stableSelection?.bundleId === input.currentBundleId ? activeState.stableSelection.releaseId : null,
220
+ toBundleId: desired.bundleId,
221
+ toReleaseId: desired.releaseId,
222
+ channel: input.targetChannel,
223
+ updateStrategy: options.updateStrategy
224
+ });
225
+ }
226
+ return downloaded;
216
227
  };
217
228
  return {
218
- fileHash: null,
219
- fileUrl: null,
220
- id: desired.bundleId,
229
+ id: desired.releaseId ?? desired.bundleId,
221
230
  message: release?.message ?? null,
222
231
  releaseId: desired.releaseId,
223
232
  rolloutCohortCount: release?.rolloutCohortCount ?? 1000,
@@ -1 +1 @@
1
- {"version":3,"names":["_core","require","_pluginCore","_reactNative","_error","_native","_releaseCatalogCache","_store","sameReceipt","first","second","kind","releaseId","bundleId","catalogId","scopeKey","generation","catalogHash","channel","selectionContextHash","validateCatalog","catalog","expectedScope","schemaVersion","Number","isSafeInteger","test","hasExpectedReleaseCatalogScope","HotUpdaterError","resetProgress","hotUpdaterStore","setState","artifactType","details","downloadedBytes","undefined","isUpdateDownloaded","progress","totalBytes","notifyReleaseAdoption","input","userId","username","getPersistedUserIdentity","session","sendAnalyticsEvent","appVersion","desired","cohort","fingerprintHash","fromBundleId","fromReleaseId","active","installId","getInstallId","platform","requestHeaders","requestTimeout","toBundleId","toReleaseId","type","updateStrategy","error","console","warn","checkForReleaseCatalogUpdate","options","client","createSession","channelKey","encodeChannelKey","targetChannel","strategy","canonicalAppVersion","canonicalizeAppVersion","currentAppVersion","fetchReleaseCatalog","crashedBundleIds","getCrashHistory","getActiveUpdateState","activeSelection","explicitScopeSwitch","explicitChannel","currentChannel","activeInTargetScope","hasAuthenticatedActive","selectorCurrentBundleId","currentBundleId","minimumReleaseId","createReleaseSelectionContextHash","activeBundleId","activeReleaseId","strategyValue","acceptReleaseCatalog","selectDesiredRelease","builtInBundleId","receipt","authorization","authorizeReleaseTransition","authorized","reason","release","transitionKind","guard","updateBundleForSelection","isReleaseSelectionCurrent","StaleReleaseCatalogError","committed","commitReleaseSelection","selection","analytics","artifact","resolveArtifact","targetBundleId","updateBundle","changedAssets","fileHash","fileUrl","manifestFileHash","manifestUrl","shouldSkipCurrentBundleIdCheck","status","id","message","rolloutCohortCount","shouldForceUpdate","targetCohorts","checkForUpdate","__DEV__","includes","Platform","OS","onError","getAppVersion","getBundleId","getMinBundleId","defaultChannel","getDefaultChannel","isSwitched","isChannelSwitched","getChannel","getCohort","getFingerprintHash"],"sourceRoot":"../../src","sources":["checkForUpdate.ts"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AASA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,YAAA,GAAAF,OAAA;AAEA,IAAAG,MAAA,GAAAH,OAAA;AAEA,IAAAI,OAAA,GAAAJ,OAAA;AAkBA,IAAAK,oBAAA,GAAAL,OAAA;AAIA,IAAAM,MAAA,GAAAN,OAAA;AAqDA,MAAMO,WAAW,GAAGA,CAClBC,KAAuC,EACvCC,MAAiC,KAEjCD,KAAK,KAAK,IAAI,IACdA,KAAK,CAACE,IAAI,KAAKD,MAAM,CAACC,IAAI,IAC1BF,KAAK,CAACG,SAAS,KAAKF,MAAM,CAACE,SAAS,IACpCH,KAAK,CAACI,QAAQ,KAAKH,MAAM,CAACG,QAAQ,IAClCJ,KAAK,CAACK,SAAS,KAAKJ,MAAM,CAACI,SAAS,IACpCL,KAAK,CAACM,QAAQ,KAAKL,MAAM,CAACK,QAAQ,IAClCN,KAAK,CAACO,UAAU,KAAKN,MAAM,CAACM,UAAU,IACtCP,KAAK,CAACQ,WAAW,KAAKP,MAAM,CAACO,WAAW,IACxCR,KAAK,CAACS,OAAO,KAAKR,MAAM,CAACQ,OAAO,IAChCT,KAAK,CAACU,oBAAoB,KAAKT,MAAM,CAACS,oBAAoB;AAE5D,MAAMC,eAAe,GAAGA,CACtBC,OAAuB,EACvBC,aAA0C,KACvC;EACH,IACED,OAAO,CAACE,aAAa,KAAK,CAAC,IAC3B,CAACC,MAAM,CAACC,aAAa,CAACJ,OAAO,CAACL,UAAU,CAAC,IACzCK,OAAO,CAACL,UAAU,GAAG,CAAC,IACtB,CAAC,uBAAuB,CAACU,IAAI,CAACL,OAAO,CAACJ,WAAW,CAAC,IAClD,CAAC,IAAAU,mDAA8B,EAACN,OAAO,EAAEC,aAAa,CAAC,EACvD;IACA,MAAM,IAAIM,sBAAe,CAAC,qCAAqC,CAAC;EAClE;AACF,CAAC;AAED,MAAMC,aAAa,GAAGA,CAAA,KAAM;EAC1BC,sBAAe,CAACC,QAAQ,CAAC;IACvBC,YAAY,EAAE,IAAI;IAClBC,OAAO,EAAE,IAAI;IACbC,eAAe,EAAEC,SAAS;IAC1BC,kBAAkB,EAAE,KAAK;IACzBC,QAAQ,EAAE,CAAC;IACXC,UAAU,EAAEH;EACd,CAAC,CAAC;AACJ,CAAC;AAED,MAAMI,qBAAqB,GAAG,MAAOC,KAWpC,IAAoB;EACnB,MAAM;IAAEC,MAAM;IAAEC;EAAS,CAAC,GAAG,IAAAC,gCAAwB,EAAC,CAAC;EACvD,IAAI;IACF,MAAMH,KAAK,CAACI,OAAO,CAACC,kBAAkB,CAAC;MACrCC,UAAU,EAAEN,KAAK,CAACM,UAAU;MAC5B5B,OAAO,EAAEsB,KAAK,CAACO,OAAO,CAAC7B,OAAO;MAC9B8B,MAAM,EAAER,KAAK,CAACQ,MAAM;MACpBC,eAAe,EAAET,KAAK,CAACS,eAAe;MACtCC,YAAY,EAAEV,KAAK,CAACO,OAAO,CAAClC,QAAQ;MACpCsC,aAAa,EAAEX,KAAK,CAACY,MAAM,EAAExC,SAAS,IAAI,IAAI;MAC9CyC,SAAS,EAAE,IAAAC,oBAAY,EAAC,CAAC;MACzBC,QAAQ,EAAEf,KAAK,CAACe,QAAQ;MACxBC,cAAc,EAAEhB,KAAK,CAACgB,cAAc;MACpCC,cAAc,EAAEjB,KAAK,CAACiB,cAAc;MACpCC,UAAU,EAAElB,KAAK,CAACO,OAAO,CAAClC,QAAQ;MAClC8C,WAAW,EAAEnB,KAAK,CAACO,OAAO,CAACnC,SAAS;MACpCgD,IAAI,EAAE,iBAAiB;MACvBC,cAAc,EAAErB,KAAK,CAACqB,cAAc;MACpC,IAAIpB,MAAM,KAAKN,SAAS,GAAG,CAAC,CAAC,GAAG;QAAEM;MAAO,CAAC,CAAC;MAC3C,IAAIC,QAAQ,KAAKP,SAAS,GAAG,CAAC,CAAC,GAAG;QAAEO;MAAS,CAAC;IAChD,CAAC,CAAC;EACJ,CAAC,CAAC,OAAOoB,KAAK,EAAE;IACdC,OAAO,CAACC,IAAI,CAAC,iDAAiD,EAAEF,KAAK,CAAC;EACxE;AACF,CAAC;AAED,eAAeG,4BAA4BA,CAACzB,KAa3C,EAAwC;EACvC,MAAM;IAAE0B;EAAQ,CAAC,GAAG1B,KAAK;EACzB,MAAMI,OAAO,GAAG,MAAMsB,OAAO,CAACC,MAAM,CAACC,aAAa,CAAC,CAAC;EACpD,MAAMC,UAAU,GAAG,IAAAC,sBAAgB,EAAC9B,KAAK,CAAC+B,aAAa,CAAC;EACxD,MAAMC,QAAQ,GACZN,OAAO,CAACL,cAAc,KAAK,YAAY,GAAG,aAAa,GAAG,aAAa;EACzE,MAAMY,mBAAmB,GAAG,IAAAC,kCAAsB,EAAClC,KAAK,CAACmC,iBAAiB,CAAC;EAC3E,IAAIH,QAAQ,KAAK,aAAa,IAAIC,mBAAmB,KAAK,IAAI,EAAE;IAC9D,MAAM,IAAI7C,sBAAe,CAAC,oCAAoC,CAAC;EACjE;EACA,IAAI4C,QAAQ,KAAK,aAAa,IAAI,CAAChC,KAAK,CAACS,eAAe,EAAE;IACxD,MAAM,IAAIrB,sBAAe,CAAC,8BAA8B,CAAC;EAC3D;EACA,MAAMN,aAA0C,GAC9CkD,QAAQ,KAAK,aAAa,GACtB;IACEH,UAAU;IACVd,QAAQ,EAAEf,KAAK,CAACe,QAAQ;IACxBiB;EACF,CAAC,GACD;IACEH,UAAU;IACVpB,eAAe,EAAET,KAAK,CAACS,eAAgB;IACvCM,QAAQ,EAAEf,KAAK,CAACe,QAAQ;IACxBiB;EACF,CAAC;EACP,MAAMnD,OAAO,GAAG,MAAMuB,OAAO,CAACgC,mBAAmB,CAAC;IAChD9B,UAAU,EAAE2B,mBAAmB,IAAIjC,KAAK,CAACmC,iBAAiB;IAC1DzD,OAAO,EAAEsB,KAAK,CAAC+B,aAAa;IAC5BtB,eAAe,EAAET,KAAK,CAACS,eAAe;IACtCM,QAAQ,EAAEf,KAAK,CAACe,QAAQ;IACxBC,cAAc,EAAEU,OAAO,CAACV,cAAc;IACtCC,cAAc,EAAES,OAAO,CAACT,cAAc;IACtCI,cAAc,EAAEK,OAAO,CAACL;EAC1B,CAAC,CAAC;EACFzC,eAAe,CAACC,OAAO,EAAEC,aAAa,CAAC;EACvC,MAAMR,SAAS,GAAGO,OAAO,CAACP,SAAS;EACnC,MAAMC,QAAQ,GAAGM,OAAO,CAACN,QAAQ;EAEjC,MAAM8D,gBAAgB,GAAG,IAAAC,uBAAe,EAAC,CAAC;EAC1C,MAAM1B,MAAM,GAAG,IAAA2B,4BAAoB,EAAC,CAAC,CAACC,eAAe;EACrD,MAAMC,mBAAmB,GACvBzC,KAAK,CAAC0C,eAAe,KAAK/C,SAAS,IACnCK,KAAK,CAAC0C,eAAe,KAAK1C,KAAK,CAAC2C,cAAc;EAChD,MAAMC,mBAAmB,GACvBhC,MAAM,EAAEtC,SAAS,KAAKA,SAAS,IAAIsC,MAAM,CAACrC,QAAQ,KAAKA,QAAQ,GAC3DqC,MAAM,GACN,IAAI;EACV,MAAMiC,sBAAsB,GAC1BjC,MAAM,KAAK,IAAI,IACfA,MAAM,CAACtC,SAAS,KAAK,IAAI,IACzBsC,MAAM,CAACrC,QAAQ,KAAK,IAAI,IACxBqC,MAAM,CAACpC,UAAU,KAAK,IAAI;EAC5B,IACEqE,sBAAsB,IACtBD,mBAAmB,KAAK,IAAI,IAC5B,CAACH,mBAAmB,EACpB;IACA,MAAM,IAAIrD,sBAAe,CAAC,gDAAgD,CAAC;EAC7E;EACA,MAAM0D,uBAAuB,GAC3BF,mBAAmB,KAAK,IAAI,IAC3B,CAACC,sBAAsB,IAAI,CAACJ,mBAAoB,GAC7CzC,KAAK,CAAC+C,eAAe,GACrB/C,KAAK,CAACgD,gBAAgB;EAC5B,MAAMrE,oBAAoB,GAAG,IAAAsE,uCAAiC,EAAC;IAC7DC,cAAc,EAAEJ,uBAAuB;IACvCK,eAAe,EAAEP,mBAAmB,EAAExE,SAAS,IAAI,IAAI;IACvDoC,MAAM,EAAER,KAAK,CAACQ,MAAM;IACpB6B,gBAAgB;IAChBW,gBAAgB,EAAEhD,KAAK,CAACgD,gBAAgB;IACxChB,QAAQ;IACRoB,aAAa,EACXpB,QAAQ,KAAK,aAAa,GACtBC,mBAAmB,GACnBjC,KAAK,CAACS;EACd,CAAC,CAAC;EACF,IACE,CAAC,IAAA4C,4BAAoB,EAAC;IACpB/E,SAAS;IACTG,WAAW,EAAEI,OAAO,CAACJ,WAAW;IAChCC,OAAO,EAAEsB,KAAK,CAAC+B,aAAa;IAC5BvD,UAAU,EAAEK,OAAO,CAACL,UAAU;IAC9BG,oBAAoB;IACpBJ;EACF,CAAC,CAAC,EACF;IACA,MAAM,IAAIa,sBAAe,CACvB,kDACF,CAAC;EACH;EACA,MAAMmB,OAAO,GAAG,IAAA+C,0BAAoB,EAACzE,OAAO,EAAE;IAC5CsE,eAAe,EAAEP,mBAAmB,EAAExE,SAAS,IAAI,IAAI;IACvDmF,eAAe,EAAEvD,KAAK,CAACgD,gBAAgB;IACvCxC,MAAM,EAAER,KAAK,CAACQ,MAAM;IACpB6B,gBAAgB;IAChBU,eAAe,EAAED,uBAAuB;IACxCE,gBAAgB,EAAEhD,KAAK,CAACgD;EAC1B,CAAC,CAAC;EACF,IAAIzC,OAAO,KAAK,IAAI,EAAE,OAAO,IAAI;EAEjC,IACEA,OAAO,CAACpC,IAAI,KAAK,SAAS,IAC1B6B,KAAK,CAAC+C,eAAe,KAAK/C,KAAK,CAACgD,gBAAgB,KAC/CpC,MAAM,KAAK,IAAI,IAAIA,MAAM,CAACzC,IAAI,KAAK,SAAS,CAAC,EAC9C;IACA,OAAO,IAAI;EACb;EAEA,MAAMqF,OAAkC,GAAG;IACzClF,SAAS;IACTD,QAAQ,EAAEkC,OAAO,CAAClC,QAAQ;IAC1BI,WAAW,EAAEI,OAAO,CAACJ,WAAW;IAChCC,OAAO,EAAEsB,KAAK,CAAC+B,aAAa;IAC5BvD,UAAU,EAAEK,OAAO,CAACL,UAAU;IAC9BL,IAAI,EAAEoC,OAAO,CAACpC,IAAI;IAClBC,SAAS,EAAEmC,OAAO,CAACnC,SAAS;IAC5BG,QAAQ;IACRI;EACF,CAAC;EACD,IAAIX,WAAW,CAAC4C,MAAM,EAAE4C,OAAO,CAAC,EAAE,OAAO,IAAI;EAE7C,MAAMC,aAAa,GAAG,IAAAC,gCAA0B,EAAC;IAC/C9C,MAAM;IACNL,OAAO,EAAEiD,OAAO;IAChBf;EACF,CAAC,CAAC;EACF,IAAI,CAACgB,aAAa,CAACE,UAAU,EAAE;IAC7B,IAAIF,aAAa,CAACG,MAAM,KAAK,oBAAoB,EAAE,OAAO,IAAI;IAC9D,MAAM,IAAIxE,sBAAe,CACvB,gCAAgCqE,aAAa,CAACG,MAAM,EACtD,CAAC;EACH;EAEA,MAAMC,OAAO,GAAGtD,OAAO,CAACsD,OAAO;EAC/B,MAAMC,cAAqC,GACzCvD,OAAO,CAACpC,IAAI,KAAK,SAAS,GACtB,aAAa,GACboC,OAAO,CAACpC,IAAI,KAAK,UAAU,GACzB,cAAc,GACdyC,MAAM,EAAEvC,QAAQ,KAAKkC,OAAO,CAAClC,QAAQ,GACnC,eAAe,GACf,SAAS;EACnB,MAAM0F,KAAK,GAAG;IACZzF,SAAS;IACTG,WAAW,EAAEI,OAAO,CAACJ,WAAW;IAChCC,OAAO,EAAEsB,KAAK,CAAC+B,aAAa;IAC5BvD,UAAU,EAAEK,OAAO,CAACL,UAAU;IAC9BD,QAAQ;IACRI;EACF,CAAC;EACD,MAAMqF,wBAAwB,GAAG,MAAAA,CAAA,KAA8B;IAC7D3E,aAAa,CAAC,CAAC;IACf,IAAI,CAAC,IAAA4E,iCAAyB,EAACF,KAAK,CAAC,EAAE;MACrC,MAAM,IAAIG,+BAAwB,CAAC,CAAC;IACtC;IAEA,IAAIJ,cAAc,KAAK,SAAS,EAAE;MAChC,MAAMK,SAAS,GAAG,MAAM,IAAAC,8BAAsB,EAAC;QAC7CL,KAAK;QACLM,SAAS,EAAEb;MACb,CAAC,CAAC;MACF,IACEW,SAAS,IACTL,cAAc,KAAK,eAAe,IAClCpC,OAAO,CAAC4C,SAAS,EACjB;QACA,MAAMvE,qBAAqB,CAAC;UAC1Ba,MAAM;UACNN,UAAU,EAAEN,KAAK,CAACmC,iBAAiB;UACnC3B,MAAM,EAAER,KAAK,CAACQ,MAAM;UACpBD,OAAO,EAAEiD,OAAO;UAChB/C,eAAe,EAAET,KAAK,CAACS,eAAe;UACtCM,QAAQ,EAAEf,KAAK,CAACe,QAAQ;UACxBC,cAAc,EAAEU,OAAO,CAACV,cAAc;UACtCC,cAAc,EAAES,OAAO,CAACT,cAAc;UACtCb,OAAO;UACPiB,cAAc,EAAEK,OAAO,CAACL;QAC1B,CAAC,CAAC;MACJ;MACA,OAAO8C,SAAS;IAClB;IAEA,MAAMI,QAAQ,GAAG,MAAMnE,OAAO,CAACoE,eAAe,CAAC;MAC7CzB,eAAe,EAAE/C,KAAK,CAAC+C,eAAe;MACtC/B,cAAc,EAAEU,OAAO,CAACV,cAAc;MACtCC,cAAc,EAAES,OAAO,CAACT,cAAc;MACtCwD,cAAc,EAAElE,OAAO,CAAClC;IAC1B,CAAC,CAAC;IACF,IAAI,CAAC,IAAA4F,iCAAyB,EAACF,KAAK,CAAC,EAAE;MACrC,MAAM,IAAIG,+BAAwB,CAAC,CAAC;IACtC;IACA,OAAO,IAAAQ,oBAAY,EAAC;MAClBrG,QAAQ,EAAEkC,OAAO,CAAClC,QAAQ;MAC1BsG,aAAa,EAAEJ,QAAQ,CAACI,aAAa,IAAI,IAAI;MAC7CjG,OAAO,EAAEsB,KAAK,CAAC+B,aAAa;MAC5B6C,QAAQ,EAAEL,QAAQ,CAACK,QAAQ;MAC3BC,OAAO,EAAEN,QAAQ,CAACM,OAAO;MACzBC,gBAAgB,EAAEP,QAAQ,CAACO,gBAAgB,IAAI,IAAI;MACnDC,WAAW,EAAER,QAAQ,CAACQ,WAAW,IAAI,IAAI;MACzCV,SAAS,EAAEb,OAAO;MAClBwB,8BAA8B,EAAE,IAAI;MACpCC,MAAM,EAAE1E,OAAO,CAAC0E;IAClB,CAAC,CAAC;EACJ,CAAC;EAED,OAAO;IACLL,QAAQ,EAAE,IAAI;IACdC,OAAO,EAAE,IAAI;IACbK,EAAE,EAAE3E,OAAO,CAAClC,QAAQ;IACpB8G,OAAO,EAAEtB,OAAO,EAAEsB,OAAO,IAAI,IAAI;IACjC/G,SAAS,EAAEmC,OAAO,CAACnC,SAAS;IAC5BgH,kBAAkB,EAAEvB,OAAO,EAAEuB,kBAAkB,IAAI,IAAI;IACvDC,iBAAiB,EACfvB,cAAc,KAAK,eAAe,GAC9B,KAAK,GACLvD,OAAO,CAAC0E,MAAM,KAAK,UAAU,GAC3B,IAAI,GACHpB,OAAO,EAAEwB,iBAAiB,IAAI,KAAM;IAC7CJ,MAAM,EAAE1E,OAAO,CAAC0E,MAAM;IACtBK,aAAa,EAAEzB,OAAO,EAAEyB,aAAa,GAAG,CAAC,GAAGzB,OAAO,CAACyB,aAAa,CAAC,GAAG,EAAE;IACvExB,cAAc;IACdY,YAAY,EAAEV;EAChB,CAAC;AACH;AAEO,eAAeuB,cAAcA,CAClC7D,OAAsC,EACA;EACtC,IAAI8D,OAAO,EAAE;IACX,OAAO,IAAI;EACb;EAEA,IAAI,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAACC,QAAQ,CAACC,qBAAQ,CAACC,EAAE,CAAC,EAAE;IAC7CjE,OAAO,CAACkE,OAAO,GACb,IAAIxG,sBAAe,CAAC,iDAAiD,CACvE,CAAC;IACD,OAAO,IAAI;EACb;EAEA,MAAM+C,iBAAiB,GAAG,IAAA0D,qBAAa,EAAC,CAAC;EACzC,MAAM9E,QAAQ,GAAG2E,qBAAQ,CAACC,EAAuB;EACjD,MAAM5C,eAAe,GAAG,IAAA+C,mBAAW,EAAC,CAAC;EACrC,MAAM9C,gBAAgB,GAAG,IAAA+C,sBAAc,EAAC,CAAC;EACzC,MAAMC,cAAc,GAAG,IAAAC,yBAAiB,EAAC,CAAC;EAC1C,MAAMC,UAAU,GAAG,IAAAC,yBAAiB,EAAC,CAAC;EACtC,MAAMxD,cAAc,GAAGuD,UAAU,GAAG,IAAAE,kBAAU,EAAC,CAAC,GAAGJ,cAAc;EACjE,MAAMtD,eAAe,GAAGhB,OAAO,CAAChD,OAAO,IAAIiB,SAAS;EACpD,MAAMoC,aAAa,GAAGW,eAAe,IAAIC,cAAc;EACvD,MAAMnC,MAAM,GAAG,IAAA6F,iBAAS,EAAC,CAAC;EAE1B,IAAI,CAAClE,iBAAiB,EAAE;IACtBT,OAAO,CAACkE,OAAO,GAAG,IAAIxG,sBAAe,CAAC,2BAA2B,CAAC,CAAC;IACnE,OAAO,IAAI;EACb;EAEA,IAAI8G,UAAU,IAAIxD,eAAe,IAAIA,eAAe,KAAKC,cAAc,EAAE;IACvE,MAAMrB,KAAK,GAAG,IAAIlC,sBAAe,CAC/B,2CAA2CuD,cAAc,sDAAsDD,eAAe,IAChI,CAAC;IACDhB,OAAO,CAACkE,OAAO,GAAGtE,KAAK,CAAC;IACxB,MAAMA,KAAK;EACb;EAEA,MAAMb,eAAe,GAAG,IAAA6F,0BAAkB,EAAC,CAAC;EAE5C,IAAI;IACF,OAAO,MAAM7E,4BAA4B,CAAC;MACxCjB,MAAM;MACN2B,iBAAiB;MACjBY,eAAe;MACfJ,cAAc;MACdqD,cAAc;MACdtD,eAAe;MACfjC,eAAe;MACfyF,UAAU;MACVlD,gBAAgB;MAChBtB,OAAO;MACPX,QAAQ;MACRgB;IACF,CAAC,CAAC;EACJ,CAAC,CAAC,OAAOT,KAAK,EAAE;IACdI,OAAO,CAACkE,OAAO,GAAGtE,KAAc,CAAC;IACjC,OAAO,IAAI;EACb;AACF","ignoreList":[]}
1
+ {"version":3,"names":["_core","require","_pluginCore","_reactNative","_error","_native","_notifyAppReadyInsights","_releaseCatalogCache","_store","sameReceipt","first","second","kind","releaseId","bundleId","catalogId","scopeKey","generation","catalogHash","channel","selectionContextHash","validateCatalog","catalog","expectedScope","schemaVersion","Number","isSafeInteger","test","hasExpectedReleaseCatalogScope","HotUpdaterError","resetProgress","hotUpdaterStore","setState","artifactType","details","isUpdateDownloaded","progress","notifyUnchangedSelection","input","userId","username","getPersistedUserIdentity","session","sendInsightsEvent","appVersion","desired","cohort","fingerprintHash","fromBundleId","fromReleaseId","active","installId","getInstallId","platform","requestHeaders","requestTimeout","toBundleId","toReleaseId","type","updateStrategy","undefined","error","console","warn","checkForReleaseCatalogUpdate","options","client","createSession","channelKey","encodeChannelKey","targetChannel","strategy","canonicalAppVersion","canonicalizeAppVersion","currentAppVersion","fetchReleaseCatalog","crashedBundleIds","getCrashHistory","activeState","getActiveUpdateState","activeSelection","explicitScopeSwitch","explicitChannel","currentChannel","activeInTargetScope","hasAuthenticatedActive","selectorCurrentBundleId","currentBundleId","minimumReleaseId","createReleaseSelectionContextHash","activeBundleId","activeReleaseId","strategyValue","acceptReleaseCatalog","selectDesiredRelease","builtInBundleId","receipt","authorization","authorizeReleaseTransition","authorized","reason","release","transitionKind","guard","updateBundleForSelection","isReleaseSelectionCurrent","StaleReleaseCatalogError","committed","commitReleaseSelection","selection","insights","artifact","resolveArtifact","targetBundleId","downloaded","updateBundle","assets","manifestFileHash","manifestUrl","archiveUrl","shouldSkipCurrentBundleIdCheck","status","reportBundleDownloaded","stableSelection","id","message","rolloutCohortCount","shouldForceUpdate","targetCohorts","checkForUpdate","__DEV__","includes","Platform","OS","onError","getAppVersion","getBundleId","getMinBundleId","defaultChannel","getDefaultChannel","isSwitched","isChannelSwitched","getChannel","getCohort","getFingerprintHash"],"sourceRoot":"../../src","sources":["checkForUpdate.ts"],"mappings":"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","ignoreList":[]}