@hot-updater/react-native 0.27.0 → 0.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/build.gradle +12 -0
- package/android/src/main/AndroidManifest.xml +3 -0
- package/android/src/main/AndroidManifestNew.xml +3 -0
- package/android/src/main/cpp/CMakeLists.txt +9 -0
- package/android/src/main/cpp/HotUpdaterRecovery.cpp +143 -0
- package/android/src/main/java/com/hotupdater/BundleFileStorageService.kt +170 -204
- package/android/src/main/java/com/hotupdater/BundleMetadata.kt +73 -16
- package/android/src/main/java/com/hotupdater/HotUpdaterImpl.kt +39 -13
- package/android/src/main/java/com/hotupdater/HotUpdaterRecoveryManager.kt +533 -0
- package/android/src/main/java/com/hotupdater/HotUpdaterRecoveryReceiver.kt +14 -0
- package/android/src/newarch/HotUpdaterModule.kt +2 -8
- package/android/src/oldarch/HotUpdaterModule.kt +2 -8
- package/android/src/oldarch/HotUpdaterSpec.kt +1 -1
- package/ios/HotUpdater/Internal/BundleFileStorageService.swift +189 -203
- package/ios/HotUpdater/Internal/BundleMetadata.swift +61 -8
- package/ios/HotUpdater/Internal/HotUpdater-Bridging-Header.h +9 -1
- package/ios/HotUpdater/Internal/HotUpdater.mm +265 -11
- package/ios/HotUpdater/Internal/HotUpdaterCrashHandler.h +7 -0
- package/ios/HotUpdater/Internal/HotUpdaterCrashHandler.mm +4 -0
- package/ios/HotUpdater/Internal/HotUpdaterImpl.swift +293 -9
- package/lib/commonjs/native.js +18 -21
- package/lib/commonjs/native.js.map +1 -1
- package/lib/commonjs/native.spec.js +86 -0
- package/lib/commonjs/native.spec.js.map +1 -0
- package/lib/commonjs/specs/NativeHotUpdater.js.map +1 -1
- package/lib/commonjs/types.js.map +1 -1
- package/lib/commonjs/wrap.js +4 -5
- package/lib/commonjs/wrap.js.map +1 -1
- package/lib/module/native.js +17 -20
- package/lib/module/native.js.map +1 -1
- package/lib/module/native.spec.js +85 -0
- package/lib/module/native.spec.js.map +1 -0
- package/lib/module/specs/NativeHotUpdater.js.map +1 -1
- package/lib/module/types.js.map +1 -1
- package/lib/module/wrap.js +5 -6
- package/lib/module/wrap.js.map +1 -1
- package/lib/typescript/commonjs/native.d.ts +4 -15
- package/lib/typescript/commonjs/native.d.ts.map +1 -1
- package/lib/typescript/commonjs/native.spec.d.ts +2 -0
- package/lib/typescript/commonjs/native.spec.d.ts.map +1 -0
- package/lib/typescript/commonjs/specs/NativeHotUpdater.d.ts +4 -8
- package/lib/typescript/commonjs/specs/NativeHotUpdater.d.ts.map +1 -1
- package/lib/typescript/commonjs/types.d.ts +2 -3
- package/lib/typescript/commonjs/types.d.ts.map +1 -1
- package/lib/typescript/commonjs/wrap.d.ts +2 -5
- package/lib/typescript/commonjs/wrap.d.ts.map +1 -1
- package/lib/typescript/module/native.d.ts +4 -15
- package/lib/typescript/module/native.d.ts.map +1 -1
- package/lib/typescript/module/native.spec.d.ts +2 -0
- package/lib/typescript/module/native.spec.d.ts.map +1 -0
- package/lib/typescript/module/specs/NativeHotUpdater.d.ts +4 -8
- package/lib/typescript/module/specs/NativeHotUpdater.d.ts.map +1 -1
- package/lib/typescript/module/types.d.ts +2 -3
- package/lib/typescript/module/types.d.ts.map +1 -1
- package/lib/typescript/module/wrap.d.ts +2 -5
- package/lib/typescript/module/wrap.d.ts.map +1 -1
- package/package.json +6 -6
- package/src/native.spec.ts +84 -0
- package/src/native.ts +20 -19
- package/src/specs/NativeHotUpdater.ts +4 -6
- package/src/types.ts +2 -3
- package/src/wrap.tsx +7 -11
|
@@ -1,9 +1,39 @@
|
|
|
1
1
|
import Foundation
|
|
2
2
|
import React
|
|
3
3
|
|
|
4
|
+
private func hotUpdaterUncaughtExceptionHandler(_ exception: NSException) {
|
|
5
|
+
HotUpdaterRecoveryManager.shared.handleUncaughtException(exception)
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
@_silgen_name("HotUpdaterInstallSignalHandlers")
|
|
9
|
+
private func hotUpdaterInstallSignalHandlersSymbol(_ crashMarkerPath: NSString)
|
|
10
|
+
|
|
11
|
+
@_silgen_name("HotUpdaterUpdateSignalLaunchState")
|
|
12
|
+
private func hotUpdaterUpdateSignalLaunchStateSymbol(
|
|
13
|
+
_ bundleId: NSString?,
|
|
14
|
+
_ shouldRollback: ObjCBool
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
@_silgen_name("HotUpdaterPerformRecoveryReload")
|
|
18
|
+
private func hotUpdaterPerformRecoveryReloadSymbol() -> ObjCBool
|
|
19
|
+
|
|
20
|
+
private func hotUpdaterInstallSignalHandlers(_ crashMarkerPath: String) {
|
|
21
|
+
hotUpdaterInstallSignalHandlersSymbol(crashMarkerPath as NSString)
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
private func hotUpdaterUpdateSignalLaunchState(_ bundleId: String?, shouldRollback: Bool) {
|
|
25
|
+
hotUpdaterUpdateSignalLaunchStateSymbol(bundleId as NSString?, ObjCBool(shouldRollback))
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
private func hotUpdaterPerformRecoveryReload() -> Bool {
|
|
29
|
+
return hotUpdaterPerformRecoveryReloadSymbol().boolValue
|
|
30
|
+
}
|
|
31
|
+
|
|
4
32
|
@objcMembers public class HotUpdaterImpl: NSObject {
|
|
5
33
|
private let bundleStorage: BundleStorageService
|
|
6
34
|
private let preferences: PreferencesService
|
|
35
|
+
private let recoveryManager: HotUpdaterRecoveryManager
|
|
36
|
+
private var currentLaunchSelection: LaunchSelection?
|
|
7
37
|
|
|
8
38
|
private static let DEFAULT_CHANNEL = "production"
|
|
9
39
|
private static let CHANNEL_STORAGE_KEY = "HotUpdaterChannel"
|
|
@@ -27,8 +57,9 @@ import React
|
|
|
27
57
|
preferences: preferences,
|
|
28
58
|
isolationKey: isolationKey
|
|
29
59
|
)
|
|
60
|
+
let recoveryManager = HotUpdaterRecoveryManager.shared
|
|
30
61
|
|
|
31
|
-
self.init(bundleStorage: bundleStorage, preferences: preferences)
|
|
62
|
+
self.init(bundleStorage: bundleStorage, preferences: preferences, recoveryManager: recoveryManager)
|
|
32
63
|
}
|
|
33
64
|
|
|
34
65
|
/**
|
|
@@ -36,9 +67,10 @@ import React
|
|
|
36
67
|
* @param bundleStorage Service for bundle storage operations
|
|
37
68
|
* @param preferences Service for preference storage
|
|
38
69
|
*/
|
|
39
|
-
internal init(bundleStorage: BundleStorageService, preferences: PreferencesService) {
|
|
70
|
+
internal init(bundleStorage: BundleStorageService, preferences: PreferencesService, recoveryManager: HotUpdaterRecoveryManager) {
|
|
40
71
|
self.bundleStorage = bundleStorage
|
|
41
72
|
self.preferences = preferences
|
|
73
|
+
self.recoveryManager = recoveryManager
|
|
42
74
|
super.init()
|
|
43
75
|
|
|
44
76
|
// Configure preferences with isolation key
|
|
@@ -120,7 +152,7 @@ import React
|
|
|
120
152
|
* @return URL to the bundle or nil
|
|
121
153
|
*/
|
|
122
154
|
public func bundleURL(bundle: Bundle = Bundle.main) -> URL? {
|
|
123
|
-
return
|
|
155
|
+
return prepareLaunchIfNeeded(bundle: bundle).bundleURL
|
|
124
156
|
}
|
|
125
157
|
|
|
126
158
|
// MARK: - Bundle Update
|
|
@@ -269,13 +301,11 @@ import React
|
|
|
269
301
|
// MARK: - Rollback Support
|
|
270
302
|
|
|
271
303
|
/**
|
|
272
|
-
*
|
|
273
|
-
*
|
|
274
|
-
* @param bundleId The ID of the currently running bundle
|
|
275
|
-
* @return true if promotion was successful or no action was needed
|
|
304
|
+
* Returns the native launch report for the current process.
|
|
305
|
+
* This is read-only; startup success and rollback are finalized before JS reads it.
|
|
276
306
|
*/
|
|
277
|
-
public func notifyAppReady(
|
|
278
|
-
return bundleStorage.notifyAppReady(
|
|
307
|
+
public func notifyAppReady() -> [String: Any] {
|
|
308
|
+
return bundleStorage.notifyAppReady()
|
|
279
309
|
}
|
|
280
310
|
|
|
281
311
|
/**
|
|
@@ -304,6 +334,10 @@ import React
|
|
|
304
334
|
return bundleStorage.getBaseURL()
|
|
305
335
|
}
|
|
306
336
|
|
|
337
|
+
public func resetLaunchPreparation() {
|
|
338
|
+
currentLaunchSelection = nil
|
|
339
|
+
}
|
|
340
|
+
|
|
307
341
|
@objc
|
|
308
342
|
public func resetChannel(_ resolver: @escaping RCTPromiseResolveBlock,
|
|
309
343
|
rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
@@ -316,6 +350,7 @@ import React
|
|
|
316
350
|
} catch {
|
|
317
351
|
NSLog("[HotUpdaterImpl] Failed to clear channel override: \(error)")
|
|
318
352
|
}
|
|
353
|
+
self.currentLaunchSelection = nil
|
|
319
354
|
resolver(success)
|
|
320
355
|
case .failure(let error):
|
|
321
356
|
let normalizedCode = HotUpdaterImpl.normalizeErrorCode(from: error)
|
|
@@ -323,4 +358,253 @@ import React
|
|
|
323
358
|
reject(normalizedCode, nsError.localizedDescription, nsError)
|
|
324
359
|
}
|
|
325
360
|
}
|
|
361
|
+
|
|
362
|
+
private func prepareLaunchIfNeeded(bundle: Bundle) -> LaunchSelection {
|
|
363
|
+
if let currentLaunchSelection {
|
|
364
|
+
return currentLaunchSelection
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
let pendingRecovery = recoveryManager.consumePendingCrashRecovery()
|
|
368
|
+
let selection = bundleStorage.prepareLaunch(bundle: bundle, pendingRecovery: pendingRecovery)
|
|
369
|
+
recoveryManager.startMonitoring(bundleId: selection.launchedBundleId, shouldRollback: selection.shouldRollbackOnCrash) { [weak self] launchedBundleId in
|
|
370
|
+
self?.bundleStorage.markLaunchCompleted(bundleId: launchedBundleId)
|
|
371
|
+
}
|
|
372
|
+
currentLaunchSelection = selection
|
|
373
|
+
return selection
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
@objcMembers
|
|
378
|
+
final class HotUpdaterRecoveryManager: NSObject {
|
|
379
|
+
static let shared = HotUpdaterRecoveryManager()
|
|
380
|
+
|
|
381
|
+
private let crashMarkerURL: URL
|
|
382
|
+
private var previousFatalHandler: RCTFatalHandler?
|
|
383
|
+
private var previousFatalExceptionHandler: RCTFatalExceptionHandler?
|
|
384
|
+
private var previousUncaughtExceptionHandler: (@convention(c) (NSException) -> Void)?
|
|
385
|
+
|
|
386
|
+
private var signalHandlersInstalled = false
|
|
387
|
+
private var handlersInstalled = false
|
|
388
|
+
private var isMonitoring = false
|
|
389
|
+
private var recoveryRequested = false
|
|
390
|
+
private var currentBundleId: String?
|
|
391
|
+
private var shouldRollbackOnCrash = false
|
|
392
|
+
private var contentAppearedCallback: ((String?) -> Void)?
|
|
393
|
+
private var stopMonitoringWorkItem: DispatchWorkItem?
|
|
394
|
+
|
|
395
|
+
private override init() {
|
|
396
|
+
let documentsPath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
|
|
397
|
+
self.crashMarkerURL = documentsPath
|
|
398
|
+
.appendingPathComponent("bundle-store", isDirectory: true)
|
|
399
|
+
.appendingPathComponent("recovery-crash-marker.json")
|
|
400
|
+
super.init()
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
func consumePendingCrashRecovery() -> PendingCrashRecovery? {
|
|
404
|
+
guard FileManager.default.fileExists(atPath: crashMarkerURL.path) else {
|
|
405
|
+
return nil
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
defer {
|
|
409
|
+
try? FileManager.default.removeItem(at: crashMarkerURL)
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
do {
|
|
413
|
+
let data = try Data(contentsOf: crashMarkerURL)
|
|
414
|
+
let json = try JSONSerialization.jsonObject(with: data) as? [String: Any] ?? [:]
|
|
415
|
+
return PendingCrashRecovery.from(json: json)
|
|
416
|
+
} catch {
|
|
417
|
+
NSLog("[HotUpdaterRecovery] Failed to read crash marker: \(error)")
|
|
418
|
+
return nil
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
func startMonitoring(
|
|
423
|
+
bundleId: String?,
|
|
424
|
+
shouldRollback: Bool,
|
|
425
|
+
onContentAppeared: @escaping (String?) -> Void
|
|
426
|
+
) {
|
|
427
|
+
currentBundleId = bundleId
|
|
428
|
+
shouldRollbackOnCrash = shouldRollback
|
|
429
|
+
recoveryRequested = false
|
|
430
|
+
contentAppearedCallback = onContentAppeared
|
|
431
|
+
isMonitoring = true
|
|
432
|
+
|
|
433
|
+
stopMonitoringWorkItem?.cancel()
|
|
434
|
+
stopMonitoringWorkItem = nil
|
|
435
|
+
|
|
436
|
+
installHandlersIfNeeded()
|
|
437
|
+
registerObservers()
|
|
438
|
+
installSignalHandlersIfNeeded()
|
|
439
|
+
hotUpdaterUpdateSignalLaunchState(bundleId, shouldRollback: shouldRollback)
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
func handleUncaughtException(_ exception: NSException) {
|
|
443
|
+
writeCrashMarker()
|
|
444
|
+
if requestRecoveryReloadIfNeeded() {
|
|
445
|
+
return
|
|
446
|
+
}
|
|
447
|
+
previousUncaughtExceptionHandler?(exception)
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
private func installHandlersIfNeeded() {
|
|
451
|
+
guard !handlersInstalled else {
|
|
452
|
+
return
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
previousFatalHandler = RCTGetFatalHandler()
|
|
456
|
+
previousFatalExceptionHandler = RCTGetFatalExceptionHandler()
|
|
457
|
+
previousUncaughtExceptionHandler = NSGetUncaughtExceptionHandler()
|
|
458
|
+
|
|
459
|
+
RCTSetFatalHandler { [weak self] error in
|
|
460
|
+
self?.writeCrashMarker()
|
|
461
|
+
if self?.requestRecoveryReloadIfNeeded() != true {
|
|
462
|
+
self?.previousFatalHandler?(error)
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
RCTSetFatalExceptionHandler { [weak self] exception in
|
|
467
|
+
self?.writeCrashMarker()
|
|
468
|
+
if self?.requestRecoveryReloadIfNeeded() != true {
|
|
469
|
+
self?.previousFatalExceptionHandler?(exception)
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
NSSetUncaughtExceptionHandler(hotUpdaterUncaughtExceptionHandler)
|
|
474
|
+
handlersInstalled = true
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
private func installSignalHandlersIfNeeded() {
|
|
478
|
+
guard !signalHandlersInstalled else {
|
|
479
|
+
return
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
try? FileManager.default.createDirectory(
|
|
483
|
+
at: crashMarkerURL.deletingLastPathComponent(),
|
|
484
|
+
withIntermediateDirectories: true,
|
|
485
|
+
attributes: nil
|
|
486
|
+
)
|
|
487
|
+
hotUpdaterInstallSignalHandlers(crashMarkerURL.path)
|
|
488
|
+
signalHandlersInstalled = true
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
private func registerObservers() {
|
|
492
|
+
unregisterObservers()
|
|
493
|
+
NotificationCenter.default.addObserver(
|
|
494
|
+
self,
|
|
495
|
+
selector: #selector(handleJavaScriptDidFailToLoad),
|
|
496
|
+
name: NSNotification.Name.RCTJavaScriptDidFailToLoad,
|
|
497
|
+
object: nil
|
|
498
|
+
)
|
|
499
|
+
NotificationCenter.default.addObserver(
|
|
500
|
+
self,
|
|
501
|
+
selector: #selector(handleContentDidAppear),
|
|
502
|
+
name: NSNotification.Name.RCTContentDidAppear,
|
|
503
|
+
object: nil
|
|
504
|
+
)
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
private func unregisterObservers() {
|
|
508
|
+
NotificationCenter.default.removeObserver(
|
|
509
|
+
self,
|
|
510
|
+
name: NSNotification.Name.RCTJavaScriptDidFailToLoad,
|
|
511
|
+
object: nil
|
|
512
|
+
)
|
|
513
|
+
NotificationCenter.default.removeObserver(
|
|
514
|
+
self,
|
|
515
|
+
name: NSNotification.Name.RCTContentDidAppear,
|
|
516
|
+
object: nil
|
|
517
|
+
)
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
@objc private func handleJavaScriptDidFailToLoad() {
|
|
521
|
+
if requestRecoveryReloadIfNeeded() {
|
|
522
|
+
return
|
|
523
|
+
}
|
|
524
|
+
unregisterObservers()
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
@objc private func handleContentDidAppear() {
|
|
528
|
+
guard isMonitoring else {
|
|
529
|
+
return
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
unregisterObservers()
|
|
533
|
+
contentAppearedCallback?(currentBundleId)
|
|
534
|
+
shouldRollbackOnCrash = false
|
|
535
|
+
hotUpdaterUpdateSignalLaunchState(currentBundleId, shouldRollback: false)
|
|
536
|
+
|
|
537
|
+
stopMonitoringWorkItem?.cancel()
|
|
538
|
+
let workItem = DispatchWorkItem { [weak self] in
|
|
539
|
+
self?.finishMonitoring()
|
|
540
|
+
}
|
|
541
|
+
stopMonitoringWorkItem = workItem
|
|
542
|
+
DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(10), execute: workItem)
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
private func finishMonitoring() {
|
|
546
|
+
isMonitoring = false
|
|
547
|
+
recoveryRequested = false
|
|
548
|
+
stopMonitoringWorkItem = nil
|
|
549
|
+
currentBundleId = nil
|
|
550
|
+
shouldRollbackOnCrash = false
|
|
551
|
+
contentAppearedCallback = nil
|
|
552
|
+
hotUpdaterUpdateSignalLaunchState(nil, shouldRollback: false)
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
private func requestRecoveryReloadIfNeeded() -> Bool {
|
|
556
|
+
guard isMonitoring, shouldRollbackOnCrash else {
|
|
557
|
+
return false
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
objc_sync_enter(self)
|
|
561
|
+
if recoveryRequested {
|
|
562
|
+
objc_sync_exit(self)
|
|
563
|
+
return true
|
|
564
|
+
}
|
|
565
|
+
recoveryRequested = true
|
|
566
|
+
objc_sync_exit(self)
|
|
567
|
+
|
|
568
|
+
let bundleId = currentBundleId
|
|
569
|
+
DispatchQueue.main.async { [weak self] in
|
|
570
|
+
guard let self else {
|
|
571
|
+
return
|
|
572
|
+
}
|
|
573
|
+
|
|
574
|
+
let started = hotUpdaterPerformRecoveryReload()
|
|
575
|
+
if !started {
|
|
576
|
+
objc_sync_enter(self)
|
|
577
|
+
self.recoveryRequested = false
|
|
578
|
+
objc_sync_exit(self)
|
|
579
|
+
NSLog("[HotUpdaterRecovery] Failed to trigger recovery reload")
|
|
580
|
+
} else {
|
|
581
|
+
NSLog("[HotUpdaterRecovery] Triggered recovery reload for bundleId=\(bundleId ?? "nil")")
|
|
582
|
+
}
|
|
583
|
+
}
|
|
584
|
+
|
|
585
|
+
return true
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
private func writeCrashMarker() {
|
|
589
|
+
guard isMonitoring else {
|
|
590
|
+
return
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
do {
|
|
594
|
+
try FileManager.default.createDirectory(
|
|
595
|
+
at: crashMarkerURL.deletingLastPathComponent(),
|
|
596
|
+
withIntermediateDirectories: true,
|
|
597
|
+
attributes: nil
|
|
598
|
+
)
|
|
599
|
+
|
|
600
|
+
let payload: [String: Any] = [
|
|
601
|
+
"bundleId": currentBundleId ?? NSNull(),
|
|
602
|
+
"shouldRollback": shouldRollbackOnCrash,
|
|
603
|
+
]
|
|
604
|
+
let data = try JSONSerialization.data(withJSONObject: payload)
|
|
605
|
+
try data.write(to: crashMarkerURL, options: .atomic)
|
|
606
|
+
} catch {
|
|
607
|
+
NSLog("[HotUpdaterRecovery] Failed to write crash marker: \(error)")
|
|
608
|
+
}
|
|
609
|
+
}
|
|
326
610
|
}
|
package/lib/commonjs/native.js
CHANGED
|
@@ -294,13 +294,11 @@ const getFingerprintHash = () => {
|
|
|
294
294
|
*/
|
|
295
295
|
exports.getFingerprintHash = getFingerprintHash;
|
|
296
296
|
/**
|
|
297
|
-
*
|
|
298
|
-
* If the bundle matches the staging bundle, it promotes to stable.
|
|
297
|
+
* Reads the native launch report for the current process.
|
|
299
298
|
*
|
|
300
|
-
* This function is called automatically
|
|
299
|
+
* This function is called automatically after the app has rendered.
|
|
301
300
|
*
|
|
302
301
|
* @returns {NotifyAppReadyResult} Bundle state information
|
|
303
|
-
* - `status: "PROMOTED"` - Staging bundle was promoted to stable (ACTIVE event)
|
|
304
302
|
* - `status: "RECOVERED"` - App recovered from crash, rollback occurred (ROLLBACK event)
|
|
305
303
|
* - `status: "STABLE"` - No changes, already stable
|
|
306
304
|
* - `crashedBundleId` - Present only when status is "RECOVERED"
|
|
@@ -309,37 +307,37 @@ exports.getFingerprintHash = getFingerprintHash;
|
|
|
309
307
|
* ```ts
|
|
310
308
|
* const result = HotUpdater.notifyAppReady();
|
|
311
309
|
*
|
|
312
|
-
*
|
|
313
|
-
* case "PROMOTED":
|
|
314
|
-
* // Send ACTIVE analytics event
|
|
315
|
-
* analytics.track('bundle_active', { bundleId: HotUpdater.getBundleId() });
|
|
316
|
-
* break;
|
|
317
|
-
* case "RECOVERED":
|
|
310
|
+
* if (result.status === "RECOVERED") {
|
|
318
311
|
* // Send ROLLBACK analytics event
|
|
319
312
|
* analytics.track('bundle_rollback', { crashedBundleId: result.crashedBundleId });
|
|
320
|
-
* break;
|
|
321
|
-
* case "STABLE":
|
|
322
|
-
* // No special action needed
|
|
323
|
-
* break;
|
|
324
313
|
* }
|
|
325
314
|
* ```
|
|
326
315
|
*/
|
|
327
316
|
const notifyAppReady = () => {
|
|
328
|
-
const
|
|
329
|
-
const result = _NativeHotUpdater.default.notifyAppReady({
|
|
330
|
-
bundleId
|
|
331
|
-
});
|
|
317
|
+
const result = _NativeHotUpdater.default.notifyAppReady();
|
|
332
318
|
// Oldarch returns JSON string, newarch returns array
|
|
333
319
|
if (typeof result === "string") {
|
|
334
320
|
try {
|
|
335
|
-
return JSON.parse(result);
|
|
321
|
+
return normalizeNotifyAppReadyResult(JSON.parse(result));
|
|
336
322
|
} catch {
|
|
337
323
|
return {
|
|
338
324
|
status: "STABLE"
|
|
339
325
|
};
|
|
340
326
|
}
|
|
341
327
|
}
|
|
342
|
-
return result;
|
|
328
|
+
return normalizeNotifyAppReadyResult(result);
|
|
329
|
+
};
|
|
330
|
+
exports.notifyAppReady = notifyAppReady;
|
|
331
|
+
const normalizeNotifyAppReadyResult = result => {
|
|
332
|
+
if (result.status === "RECOVERED") {
|
|
333
|
+
return {
|
|
334
|
+
status: "RECOVERED",
|
|
335
|
+
crashedBundleId: result.crashedBundleId
|
|
336
|
+
};
|
|
337
|
+
}
|
|
338
|
+
return {
|
|
339
|
+
status: "STABLE"
|
|
340
|
+
};
|
|
343
341
|
};
|
|
344
342
|
|
|
345
343
|
/**
|
|
@@ -348,7 +346,6 @@ const notifyAppReady = () => {
|
|
|
348
346
|
*
|
|
349
347
|
* @returns {string[]} Array of crashed bundle IDs
|
|
350
348
|
*/
|
|
351
|
-
exports.notifyAppReady = notifyAppReady;
|
|
352
349
|
const getCrashHistory = () => {
|
|
353
350
|
const result = _NativeHotUpdater.default.getCrashHistory();
|
|
354
351
|
// Oldarch returns JSON string, newarch returns array
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_error","_NativeHotUpdater","_interopRequireDefault","e","__esModule","default","NIL_UUID","HotUpdaterConstants","exports","HOT_UPDATER_BUNDLE_ID","__HOT_UPDATER_BUNDLE_ID","HotUpdaterSessionState","inflightUpdates","Map","lastInstalledBundleId","constructor","constants","HotUpdaterNative","getConstants","defaultChannel","DEFAULT_CHANNEL","CHANNEL","currentChannel","getChannel","getDefaultChannel","isChannelSwitched","hasInstalledBundle","bundleId","getInflightUpdate","get","trackInflightUpdate","promise","set","clearInflightUpdate","delete","markBundleInstalled","channel","resetChannelState","clear","sessionState","reloadBehavior","customReloadHandler","getReloadProcess","nativeModule","reloadProcess","bind","eventEmitter","NativeEventEmitter","addListener","eventName","listener","subscription","remove","updateBundle","paramsOrBundleId","fileUrl","updateBundleId","status","shouldSkipCurrentBundleIdCheck","localeCompare","getBundleId","Error","existing","targetFileUrl","targetFileHash","undefined","fileHash","targetChannel","ok","getAppVersion","APP_VERSION","reload","Platform","OS","setReloadBehavior","args","behavior","handler","getMinBundleId","MIN_BUNDLE_ID","getFingerprintHash","FINGERPRINT_HASH","notifyAppReady","result","JSON","parse","getCrashHistory","clearCrashHistory","getBaseURL","resetChannel"],"sourceRoot":"../../src","sources":["native.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_error","_NativeHotUpdater","_interopRequireDefault","e","__esModule","default","NIL_UUID","HotUpdaterConstants","exports","HOT_UPDATER_BUNDLE_ID","__HOT_UPDATER_BUNDLE_ID","HotUpdaterSessionState","inflightUpdates","Map","lastInstalledBundleId","constructor","constants","HotUpdaterNative","getConstants","defaultChannel","DEFAULT_CHANNEL","CHANNEL","currentChannel","getChannel","getDefaultChannel","isChannelSwitched","hasInstalledBundle","bundleId","getInflightUpdate","get","trackInflightUpdate","promise","set","clearInflightUpdate","delete","markBundleInstalled","channel","resetChannelState","clear","sessionState","reloadBehavior","customReloadHandler","getReloadProcess","nativeModule","reloadProcess","bind","eventEmitter","NativeEventEmitter","addListener","eventName","listener","subscription","remove","updateBundle","paramsOrBundleId","fileUrl","updateBundleId","status","shouldSkipCurrentBundleIdCheck","localeCompare","getBundleId","Error","existing","targetFileUrl","targetFileHash","undefined","fileHash","targetChannel","ok","getAppVersion","APP_VERSION","reload","Platform","OS","setReloadBehavior","args","behavior","handler","getMinBundleId","MIN_BUNDLE_ID","getFingerprintHash","FINGERPRINT_HASH","notifyAppReady","result","normalizeNotifyAppReadyResult","JSON","parse","crashedBundleId","getCrashHistory","clearCrashHistory","getBaseURL","resetChannel"],"sourceRoot":"../../src","sources":["native.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _vitest = require("vitest");
|
|
4
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
5
|
+
const nativeModuleMock = _vitest.vi.hoisted(() => {
|
|
6
|
+
_vitest.vi.stubGlobal("__HOT_UPDATER_BUNDLE_ID", "bundle-id");
|
|
7
|
+
return {
|
|
8
|
+
clearCrashHistory: _vitest.vi.fn(() => true),
|
|
9
|
+
getBaseURL: _vitest.vi.fn(() => null),
|
|
10
|
+
getConstants: _vitest.vi.fn(() => ({
|
|
11
|
+
APP_VERSION: null,
|
|
12
|
+
CHANNEL: "production",
|
|
13
|
+
DEFAULT_CHANNEL: "production",
|
|
14
|
+
FINGERPRINT_HASH: null
|
|
15
|
+
})),
|
|
16
|
+
getCrashHistory: _vitest.vi.fn(() => []),
|
|
17
|
+
notifyAppReady: _vitest.vi.fn(),
|
|
18
|
+
reload: _vitest.vi.fn(),
|
|
19
|
+
resetChannel: _vitest.vi.fn(),
|
|
20
|
+
setBundleURL: _vitest.vi.fn(),
|
|
21
|
+
switchChannel: _vitest.vi.fn(),
|
|
22
|
+
updateBundle: _vitest.vi.fn()
|
|
23
|
+
};
|
|
24
|
+
});
|
|
25
|
+
_vitest.vi.mock("react-native", () => ({
|
|
26
|
+
NativeEventEmitter: class {
|
|
27
|
+
addListener() {
|
|
28
|
+
return {
|
|
29
|
+
remove: () => {}
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
Platform: {
|
|
34
|
+
OS: "ios"
|
|
35
|
+
}
|
|
36
|
+
}));
|
|
37
|
+
_vitest.vi.mock("./specs/NativeHotUpdater", () => ({
|
|
38
|
+
default: nativeModuleMock
|
|
39
|
+
}));
|
|
40
|
+
(0, _vitest.describe)("notifyAppReady", () => {
|
|
41
|
+
(0, _vitest.beforeEach)(() => {
|
|
42
|
+
_vitest.vi.resetModules();
|
|
43
|
+
nativeModuleMock.notifyAppReady.mockReset();
|
|
44
|
+
nativeModuleMock.getConstants.mockReturnValue({
|
|
45
|
+
APP_VERSION: null,
|
|
46
|
+
CHANNEL: "production",
|
|
47
|
+
DEFAULT_CHANNEL: "production",
|
|
48
|
+
FINGERPRINT_HASH: null
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
(0, _vitest.it)("normalizes legacy PROMOTED launch reports to STABLE", async () => {
|
|
52
|
+
nativeModuleMock.notifyAppReady.mockReturnValue(JSON.stringify({
|
|
53
|
+
status: "PROMOTED"
|
|
54
|
+
}));
|
|
55
|
+
const {
|
|
56
|
+
notifyAppReady
|
|
57
|
+
} = await Promise.resolve().then(() => _interopRequireWildcard(require("./native")));
|
|
58
|
+
(0, _vitest.expect)(notifyAppReady()).toEqual({
|
|
59
|
+
status: "STABLE"
|
|
60
|
+
});
|
|
61
|
+
(0, _vitest.expect)(nativeModuleMock.notifyAppReady).toHaveBeenCalledWith();
|
|
62
|
+
});
|
|
63
|
+
(0, _vitest.it)("returns RECOVERED launch reports unchanged", async () => {
|
|
64
|
+
nativeModuleMock.notifyAppReady.mockReturnValue({
|
|
65
|
+
crashedBundleId: "bundle-123",
|
|
66
|
+
status: "RECOVERED"
|
|
67
|
+
});
|
|
68
|
+
const {
|
|
69
|
+
notifyAppReady
|
|
70
|
+
} = await Promise.resolve().then(() => _interopRequireWildcard(require("./native")));
|
|
71
|
+
(0, _vitest.expect)(notifyAppReady()).toEqual({
|
|
72
|
+
crashedBundleId: "bundle-123",
|
|
73
|
+
status: "RECOVERED"
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
(0, _vitest.it)("falls back to STABLE for malformed old-arch payloads", async () => {
|
|
77
|
+
nativeModuleMock.notifyAppReady.mockReturnValue("{");
|
|
78
|
+
const {
|
|
79
|
+
notifyAppReady
|
|
80
|
+
} = await Promise.resolve().then(() => _interopRequireWildcard(require("./native")));
|
|
81
|
+
(0, _vitest.expect)(notifyAppReady()).toEqual({
|
|
82
|
+
status: "STABLE"
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
//# sourceMappingURL=native.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_vitest","require","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","nativeModuleMock","vi","hoisted","stubGlobal","clearCrashHistory","fn","getBaseURL","getConstants","APP_VERSION","CHANNEL","DEFAULT_CHANNEL","FINGERPRINT_HASH","getCrashHistory","notifyAppReady","reload","resetChannel","setBundleURL","switchChannel","updateBundle","mock","NativeEventEmitter","addListener","remove","Platform","OS","describe","beforeEach","resetModules","mockReset","mockReturnValue","it","JSON","stringify","status","Promise","resolve","then","expect","toEqual","toHaveBeenCalledWith","crashedBundleId"],"sourceRoot":"../../src","sources":["native.spec.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_default","exports","default","TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../../src","sources":["specs/NativeHotUpdater.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAmD,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_default","exports","default","TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../../src","sources":["specs/NativeHotUpdater.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAmD,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAsHpCC,gCAAmB,CAACC,YAAY,CAAO,YAAY,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["isSignatureVerificationError","error","Error","message","toLowerCase","includes","extractSignatureFailure","bundleId","normalizedError","String"],"sourceRoot":"../../src","sources":["types.ts"],"mappings":";;;;;;;AAGA;AACA;AACA;;AAgDA;AACA;AACA;;
|
|
1
|
+
{"version":3,"names":["isSignatureVerificationError","error","Error","message","toLowerCase","includes","extractSignatureFailure","bundleId","normalizedError","String"],"sourceRoot":"../../src","sources":["types.ts"],"mappings":";;;;;;;AAGA;AACA;AACA;;AAgDA;AACA;AACA;;AAyBA;AACA;AACA;;AAoDA;AACA;AACA;AACA;AACA;;AAgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,4BAA4BA,CAACC,KAAc,EAAW;EACpE,IAAI,EAAEA,KAAK,YAAYC,KAAK,CAAC,EAAE;IAC7B,OAAO,KAAK;EACd;EAEA,MAAMC,OAAO,GAAGF,KAAK,CAACE,OAAO,CAACC,WAAW,CAAC,CAAC;;EAE3C;EACA;EACA,OACED,OAAO,CAACE,QAAQ,CAAC,wBAAwB,CAAC,IAC1CF,OAAO,CAACE,QAAQ,CAAC,2BAA2B,CAAC,IAC7CF,OAAO,CAACE,QAAQ,CAAC,8BAA8B,CAAC,IAChDF,OAAO,CAACE,QAAQ,CAAC,6BAA6B,CAAC,IAC/CF,OAAO,CAACE,QAAQ,CAAC,qCAAqC,CAAC;AAE3D;;AAEA;AACA;AACA;AACO,SAASC,uBAAuBA,CACrCL,KAAc,EACdM,QAAgB,EACc;EAC9B,MAAMC,eAAe,GACnBP,KAAK,YAAYC,KAAK,GAAGD,KAAK,GAAG,IAAIC,KAAK,CAACO,MAAM,CAACR,KAAK,CAAC,CAAC;EAE3D,OAAO;IACLM,QAAQ;IACRJ,OAAO,EAAEK,eAAe,CAACL,OAAO;IAChCF,KAAK,EAAEO;EACT,CAAC;AACH","ignoreList":[]}
|
package/lib/commonjs/wrap.js
CHANGED
|
@@ -37,7 +37,6 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
|
|
|
37
37
|
*/
|
|
38
38
|
const handleNotifyAppReady = async options => {
|
|
39
39
|
try {
|
|
40
|
-
// Always call native notifyAppReady for bundle promotion
|
|
41
40
|
const nativeResult = (0, _native.notifyAppReady)();
|
|
42
41
|
|
|
43
42
|
// If resolver.notifyAppReady exists, call it with simplified params
|
|
@@ -60,7 +59,7 @@ function wrap(options) {
|
|
|
60
59
|
if (options.updateMode === "manual") {
|
|
61
60
|
return WrappedComponent => {
|
|
62
61
|
const ManualHOC = props => {
|
|
63
|
-
(0, _react.
|
|
62
|
+
(0, _react.useEffect)(() => {
|
|
64
63
|
void handleNotifyAppReady(options);
|
|
65
64
|
}, []);
|
|
66
65
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(WrappedComponent, {
|
|
@@ -140,13 +139,13 @@ function wrap(options) {
|
|
|
140
139
|
restOptions.onProgress?.(progress);
|
|
141
140
|
}, [progress]);
|
|
142
141
|
|
|
143
|
-
//
|
|
144
|
-
(0, _react.
|
|
142
|
+
// Read the native launch report after the first render commit.
|
|
143
|
+
(0, _react.useEffect)(() => {
|
|
145
144
|
void handleNotifyAppReady(restOptions);
|
|
146
145
|
}, []);
|
|
147
146
|
|
|
148
147
|
// Start update check
|
|
149
|
-
(0, _react.
|
|
148
|
+
(0, _react.useEffect)(() => {
|
|
150
149
|
initHotUpdater();
|
|
151
150
|
}, []);
|
|
152
151
|
if (restOptions.fallbackComponent && updateStatus !== "UPDATE_PROCESS_COMPLETED") {
|
package/lib/commonjs/wrap.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_checkForUpdate","_useEventCallback","_native","_store","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","handleNotifyAppReady","options","nativeResult","nativeNotifyAppReady","resolver","notifyAppReady","status","crashedBundleId","requestHeaders","requestTimeout","catch","console","warn","onNotifyAppReady","wrap","updateMode","WrappedComponent","ManualHOC","props","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_checkForUpdate","_useEventCallback","_native","_store","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","handleNotifyAppReady","options","nativeResult","nativeNotifyAppReady","resolver","notifyAppReady","status","crashedBundleId","requestHeaders","requestTimeout","catch","console","warn","onNotifyAppReady","wrap","updateMode","WrappedComponent","ManualHOC","props","useEffect","jsx","reloadOnForceUpdate","restOptions","HotUpdaterHOC","progress","useHotUpdaterStore","state","message","setMessage","useState","updateStatus","setUpdateStatus","initHotUpdater","useEventCallback","updateInfo","checkForUpdate","updateStrategy","onError","onUpdateProcessCompleted","shouldForceUpdate","id","getBundleId","updateBundle","error","isSuccess","Error","reload","onProgress","fallbackComponent","Fallback"],"sourceRoot":"../../src","sources":["wrap.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,eAAA,GAAAD,OAAA;AAEA,IAAAE,iBAAA,GAAAF,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AAMA,IAAAI,MAAA,GAAAJ,OAAA;AAA6C,IAAAK,WAAA,GAAAL,OAAA;AAAA,SAAAD,wBAAAO,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAT,uBAAA,YAAAA,CAAAO,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAe7C;AACA;AACA;;AAuCA;AACA;AACA;;AAcA;AACA;AACA;;AAaA;AACA;AACA;;AA6EA;AACA;AACA;AACA;;AA8BA;AACA;AACA;AACA,MAAMkB,oBAAoB,GAAG,MAAOC,OAKnC,IAAoB;EACnB,IAAI;IACF,MAAMC,YAAY,GAAG,IAAAC,sBAAoB,EAAC,CAAC;;IAE3C;IACA,IAAIF,OAAO,CAACG,QAAQ,EAAEC,cAAc,EAAE;MACpC,MAAMJ,OAAO,CAACG,QAAQ,CACnBC,cAAc,CAAC;QACdC,MAAM,EAAEJ,YAAY,CAACI,MAAM;QAC3BC,eAAe,EAAEL,YAAY,CAACK,eAAe;QAC7CC,cAAc,EAAEP,OAAO,CAACO,cAAc;QACtCC,cAAc,EAAER,OAAO,CAACQ;MAC1B,CAAC,CAAC,CACDC,KAAK,CAAE7B,CAAU,IAAK;QACrB8B,OAAO,CAACC,IAAI,CAAC,8CAA8C,EAAE/B,CAAC,CAAC;MACjE,CAAC,CAAC;IACN;IAEAoB,OAAO,CAACY,gBAAgB,GAAGX,YAAY,CAAC;EAC1C,CAAC,CAAC,OAAOrB,CAAC,EAAE;IACV8B,OAAO,CAACC,IAAI,CAAC,0CAA0C,EAAE/B,CAAC,CAAC;EAC7D;AACF,CAAC;AAEM,SAASiC,IAAIA,CAClBb,OAA4B,EAC0C;EACtE,IAAIA,OAAO,CAACc,UAAU,KAAK,QAAQ,EAAE;IACnC,OAAQC,gBAAwC,IAAK;MACnD,MAAMC,SAAsB,GAAIC,KAAQ,IAAK;QAC3C,IAAAC,gBAAS,EAAC,MAAM;UACd,KAAKnB,oBAAoB,CAACC,OAAO,CAAC;QACpC,CAAC,EAAE,EAAE,CAAC;QAEN,oBAAO,IAAArB,WAAA,CAAAwC,GAAA,EAACJ,gBAAgB;UAAA,GAAKE;QAAK,CAAG,CAAC;MACxC,CAAC;MAED,OAAOD,SAAS;IAClB,CAAC;EACH;;EAEA;EACA,MAAM;IAAEI,mBAAmB,GAAG,IAAI;IAAE,GAAGC;EAAY,CAAC,GAAGrB,OAAO;EAE9D,OAAQe,gBAAwC,IAAK;IACnD,MAAMO,aAA0B,GAAIL,KAAQ,IAAK;MAC/C,MAAMM,QAAQ,GAAG,IAAAC,yBAAkB,EAAEC,KAAK,IAAKA,KAAK,CAACF,QAAQ,CAAC;MAE9D,MAAM,CAACG,OAAO,EAAEC,UAAU,CAAC,GAAG,IAAAC,eAAQ,EAAgB,IAAI,CAAC;MAC3D,MAAM,CAACC,YAAY,EAAEC,eAAe,CAAC,GACnC,IAAAF,eAAQ,EAAe,kBAAkB,CAAC;MAE5C,MAAMG,cAAc,GAAG,IAAAC,kCAAgB,EAAC,YAAY;QAClD,IAAI;UACFF,eAAe,CAAC,kBAAkB,CAAC;UAEnC,MAAMG,UAAU,GAAG,MAAM,IAAAC,8BAAc,EAAC;YACtC/B,QAAQ,EAAEkB,WAAW,CAAClB,QAAQ;YAC9BgC,cAAc,EAAEd,WAAW,CAACc,cAAc;YAC1C5B,cAAc,EAAEc,WAAW,CAACd,cAAc;YAC1CC,cAAc,EAAEa,WAAW,CAACb,cAAc;YAC1C4B,OAAO,EAAEf,WAAW,CAACe;UACvB,CAAC,CAAC;UAEFT,UAAU,CAACM,UAAU,EAAEP,OAAO,IAAI,IAAI,CAAC;UAEvC,IAAI,CAACO,UAAU,EAAE;YACfZ,WAAW,CAACgB,wBAAwB,GAAG;cACrChC,MAAM,EAAE,YAAY;cACpBiC,iBAAiB,EAAE,KAAK;cACxBZ,OAAO,EAAE,IAAI;cACba,EAAE,EAAE,IAAAC,mBAAW,EAAC;YAClB,CAAC,CAAC;YACFV,eAAe,CAAC,0BAA0B,CAAC;YAC3C;UACF;UAEA,IAAIG,UAAU,CAACK,iBAAiB,KAAK,KAAK,EAAE;YAC1C,KAAKL,UAAU,CAACQ,YAAY,CAAC,CAAC,CAAChC,KAAK,CAAEiC,KAAc,IAAK;cACvDrB,WAAW,CAACe,OAAO,GAAGM,KAAK,CAAC;YAC9B,CAAC,CAAC;YAEFrB,WAAW,CAACgB,wBAAwB,GAAG;cACrCE,EAAE,EAAEN,UAAU,CAACM,EAAE;cACjBlC,MAAM,EAAE4B,UAAU,CAAC5B,MAAM;cACzBiC,iBAAiB,EAAEL,UAAU,CAACK,iBAAiB;cAC/CZ,OAAO,EAAEO,UAAU,CAACP;YACtB,CAAC,CAAC;YACFI,eAAe,CAAC,0BAA0B,CAAC;YAC3C;UACF;UACA;UACAA,eAAe,CAAC,UAAU,CAAC;UAC3B,MAAMa,SAAS,GAAG,MAAMV,UAAU,CAACQ,YAAY,CAAC,CAAC;UAEjD,IAAI,CAACE,SAAS,EAAE;YACd,MAAM,IAAIC,KAAK,CACb,yDACF,CAAC;UACH;UAEA,IAAIxB,mBAAmB,EAAE;YACvB,MAAM,IAAAyB,cAAM,EAAC,CAAC;UAChB;UAEAxB,WAAW,CAACgB,wBAAwB,GAAG;YACrCE,EAAE,EAAEN,UAAU,CAACM,EAAE;YACjBlC,MAAM,EAAE4B,UAAU,CAAC5B,MAAM;YACzBiC,iBAAiB,EAAEL,UAAU,CAACK,iBAAiB;YAC/CZ,OAAO,EAAEO,UAAU,CAACP;UACtB,CAAC,CAAC;UAEFI,eAAe,CAAC,0BAA0B,CAAC;QAC7C,CAAC,CAAC,OAAOY,KAAK,EAAE;UACdrB,WAAW,CAACe,OAAO,GAAGM,KAAK,CAAC;UAC5BZ,eAAe,CAAC,0BAA0B,CAAC;QAC7C;MACF,CAAC,CAAC;MAEF,IAAAZ,gBAAS,EAAC,MAAM;QACdG,WAAW,CAACyB,UAAU,GAAGvB,QAAQ,CAAC;MACpC,CAAC,EAAE,CAACA,QAAQ,CAAC,CAAC;;MAEd;MACA,IAAAL,gBAAS,EAAC,MAAM;QACd,KAAKnB,oBAAoB,CAACsB,WAAW,CAAC;MACxC,CAAC,EAAE,EAAE,CAAC;;MAEN;MACA,IAAAH,gBAAS,EAAC,MAAM;QACda,cAAc,CAAC,CAAC;MAClB,CAAC,EAAE,EAAE,CAAC;MAEN,IACEV,WAAW,CAAC0B,iBAAiB,IAC7BlB,YAAY,KAAK,0BAA0B,EAC3C;QACA,MAAMmB,QAAQ,GAAG3B,WAAW,CAAC0B,iBAAiB;QAC9C,oBACE,IAAApE,WAAA,CAAAwC,GAAA,EAAC6B,QAAQ;UACPzB,QAAQ,EAAEA,QAAS;UACnBlB,MAAM,EAAEwB,YAAa;UACrBH,OAAO,EAAEA;QAAQ,CAClB,CAAC;MAEN;MAEA,oBAAO,IAAA/C,WAAA,CAAAwC,GAAA,EAACJ,gBAAgB;QAAA,GAAKE;MAAK,CAAG,CAAC;IACxC,CAAC;IAED,OAAOK,aAAa;EACtB,CAAC;AACH","ignoreList":[]}
|