@scalebun/react-native 1.0.1 → 1.0.3
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/src/main/java/com/scalebun/rn/ota/BundleDownloader.kt +170 -0
- package/android/src/main/java/com/scalebun/rn/ota/ScaleBunOtaModule.kt +160 -12
- package/android/src/main/java/com/scalebun/rn/ota/SlotManager.kt +32 -6
- package/android/src/oldarch/java/com/scalebun/rn/ota/ScaleBunOtaSpec.kt +7 -1
- package/ios/Ota/BundleDownloader.swift +182 -0
- package/ios/Ota/OtaSlotManager.swift +35 -9
- package/ios/Ota/ScaleBunOtaBridge.mm +9 -0
- package/ios/Ota/ScaleBunOtaEventsModule.swift +61 -0
- package/ios/Ota/ScaleBunOtaModule.swift +58 -5
- package/lib/commonjs/bootstrap/SDKBootstrapper.js +22 -0
- package/lib/commonjs/bootstrap/SDKBootstrapper.js.map +1 -1
- package/lib/commonjs/features/crash/CrashFeature.js +18 -0
- package/lib/commonjs/features/crash/CrashFeature.js.map +1 -1
- package/lib/commonjs/features/crash/rejectionHandler.js +123 -0
- package/lib/commonjs/features/crash/rejectionHandler.js.map +1 -0
- package/lib/commonjs/features/engage/EngagePromptProvider.js +4 -2
- package/lib/commonjs/features/engage/EngagePromptProvider.js.map +1 -1
- package/lib/commonjs/features/engage/engageThrottle.js +41 -10
- package/lib/commonjs/features/engage/engageThrottle.js.map +1 -1
- package/lib/commonjs/features/engage/engageTypes.js.map +1 -1
- package/lib/commonjs/features/navigation/AutoScreenDetector.js +53 -10
- package/lib/commonjs/features/navigation/AutoScreenDetector.js.map +1 -1
- package/lib/commonjs/features/ota/OtaOrchestrator.js +515 -20
- package/lib/commonjs/features/ota/OtaOrchestrator.js.map +1 -1
- package/lib/commonjs/features/ota/environment.js +172 -0
- package/lib/commonjs/features/ota/environment.js.map +1 -0
- package/lib/commonjs/features/ota/retry.js +96 -0
- package/lib/commonjs/features/ota/retry.js.map +1 -0
- package/lib/commonjs/features/ota/signature.js +115 -0
- package/lib/commonjs/features/ota/signature.js.map +1 -0
- package/lib/commonjs/features/session/BackendSessionAdapter.js +231 -26
- package/lib/commonjs/features/session/BackendSessionAdapter.js.map +1 -1
- package/lib/commonjs/index.js +7 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/public/ScaleBunErrorBoundary.js +79 -0
- package/lib/commonjs/public/ScaleBunErrorBoundary.js.map +1 -0
- package/lib/commonjs/specs/NativeScaleBunOta.js.map +1 -1
- package/lib/module/bootstrap/SDKBootstrapper.js +22 -0
- package/lib/module/bootstrap/SDKBootstrapper.js.map +1 -1
- package/lib/module/features/crash/CrashFeature.js +18 -0
- package/lib/module/features/crash/CrashFeature.js.map +1 -1
- package/lib/module/features/crash/rejectionHandler.js +116 -0
- package/lib/module/features/crash/rejectionHandler.js.map +1 -0
- package/lib/module/features/engage/EngagePromptProvider.js +4 -2
- package/lib/module/features/engage/EngagePromptProvider.js.map +1 -1
- package/lib/module/features/engage/engageThrottle.js +41 -10
- package/lib/module/features/engage/engageThrottle.js.map +1 -1
- package/lib/module/features/engage/engageTypes.js.map +1 -1
- package/lib/module/features/navigation/AutoScreenDetector.js +53 -10
- package/lib/module/features/navigation/AutoScreenDetector.js.map +1 -1
- package/lib/module/features/ota/OtaOrchestrator.js +516 -21
- package/lib/module/features/ota/OtaOrchestrator.js.map +1 -1
- package/lib/module/features/ota/environment.js +165 -0
- package/lib/module/features/ota/environment.js.map +1 -0
- package/lib/module/features/ota/retry.js +87 -0
- package/lib/module/features/ota/retry.js.map +1 -0
- package/lib/module/features/ota/signature.js +109 -0
- package/lib/module/features/ota/signature.js.map +1 -0
- package/lib/module/features/session/BackendSessionAdapter.js +230 -26
- package/lib/module/features/session/BackendSessionAdapter.js.map +1 -1
- package/lib/module/index.js +6 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/public/ScaleBunErrorBoundary.js +70 -0
- package/lib/module/public/ScaleBunErrorBoundary.js.map +1 -0
- package/lib/module/specs/NativeScaleBunOta.js.map +1 -1
- package/lib/typescript/bootstrap/SDKBootstrapper.d.ts.map +1 -1
- package/lib/typescript/features/crash/CrashFeature.d.ts.map +1 -1
- package/lib/typescript/features/crash/rejectionHandler.d.ts +46 -0
- package/lib/typescript/features/crash/rejectionHandler.d.ts.map +1 -0
- package/lib/typescript/features/engage/EngagePromptProvider.d.ts.map +1 -1
- package/lib/typescript/features/engage/engageThrottle.d.ts +24 -4
- package/lib/typescript/features/engage/engageThrottle.d.ts.map +1 -1
- package/lib/typescript/features/engage/engageTypes.d.ts +6 -0
- package/lib/typescript/features/engage/engageTypes.d.ts.map +1 -1
- package/lib/typescript/features/navigation/AutoScreenDetector.d.ts +9 -0
- package/lib/typescript/features/navigation/AutoScreenDetector.d.ts.map +1 -1
- package/lib/typescript/features/ota/OtaOrchestrator.d.ts +67 -1
- package/lib/typescript/features/ota/OtaOrchestrator.d.ts.map +1 -1
- package/lib/typescript/features/ota/OtaTypes.d.ts +42 -0
- package/lib/typescript/features/ota/OtaTypes.d.ts.map +1 -1
- package/lib/typescript/features/ota/environment.d.ts +99 -0
- package/lib/typescript/features/ota/environment.d.ts.map +1 -0
- package/lib/typescript/features/ota/retry.d.ts +53 -0
- package/lib/typescript/features/ota/retry.d.ts.map +1 -0
- package/lib/typescript/features/ota/signature.d.ts +66 -0
- package/lib/typescript/features/ota/signature.d.ts.map +1 -0
- package/lib/typescript/features/session/BackendSessionAdapter.d.ts +93 -2
- package/lib/typescript/features/session/BackendSessionAdapter.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +6 -0
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/public/ScaleBunErrorBoundary.d.ts +44 -0
- package/lib/typescript/public/ScaleBunErrorBoundary.d.ts.map +1 -0
- package/lib/typescript/specs/NativeScaleBunOta.d.ts +11 -0
- package/lib/typescript/specs/NativeScaleBunOta.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/bootstrap/SDKBootstrapper.ts +24 -0
- package/src/features/crash/CrashFeature.ts +19 -0
- package/src/features/crash/rejectionHandler.ts +134 -0
- package/src/features/engage/EngagePromptProvider.tsx +4 -2
- package/src/features/engage/engageThrottle.ts +44 -6
- package/src/features/engage/engageTypes.ts +6 -0
- package/src/features/navigation/AutoScreenDetector.ts +59 -4
- package/src/features/ota/OtaOrchestrator.ts +594 -23
- package/src/features/ota/OtaTypes.ts +56 -0
- package/src/features/ota/environment.ts +199 -0
- package/src/features/ota/retry.ts +123 -0
- package/src/features/ota/signature.ts +123 -0
- package/src/features/session/BackendSessionAdapter.ts +233 -25
- package/src/index.ts +6 -0
- package/src/public/ScaleBunErrorBoundary.tsx +79 -0
- package/src/specs/NativeScaleBunOta.ts +12 -0
|
@@ -72,10 +72,13 @@ class OtaSlotManager {
|
|
|
72
72
|
return false
|
|
73
73
|
}
|
|
74
74
|
|
|
75
|
-
// Write meta.json
|
|
75
|
+
// Write meta.json. `.atomic` = write-to-temp + rename, so a crash or
|
|
76
|
+
// power loss mid-write can never leave a truncated meta.json — the
|
|
77
|
+
// Android side fsyncs for the same reason. A corrupt meta here would
|
|
78
|
+
// make the boot guard revert a perfectly healthy bundle.
|
|
76
79
|
let metaData = try JSONSerialization.data(withJSONObject: meta)
|
|
77
80
|
let tmpMeta = tmpDir.appendingPathComponent(OtaSlotManager.metaFilename)
|
|
78
|
-
try metaData.write(to: tmpMeta)
|
|
81
|
+
try metaData.write(to: tmpMeta, options: .atomic)
|
|
79
82
|
|
|
80
83
|
// Atomic rename: delete old next, rename tmp → next
|
|
81
84
|
try? fm.removeItem(at: nextSlot)
|
|
@@ -167,8 +170,11 @@ class OtaSlotManager {
|
|
|
167
170
|
|
|
168
171
|
do {
|
|
169
172
|
let markerData = try Data(contentsOf: bootMarkerFile)
|
|
173
|
+
// Prefer sha256; fall back to the legacy `bundleId` key so a marker
|
|
174
|
+
// left behind by a previous build is still readable.
|
|
170
175
|
guard let markerJson = try JSONSerialization.jsonObject(with: markerData) as? [String: Any],
|
|
171
|
-
let
|
|
176
|
+
let markerId = (markerJson["sha256"] as? String)
|
|
177
|
+
?? (markerJson["bundleId"] as? String) else {
|
|
172
178
|
NSLog("[ScaleBunOta] Invalid boot marker — reverting")
|
|
173
179
|
_ = revert()
|
|
174
180
|
return
|
|
@@ -183,14 +189,20 @@ class OtaSlotManager {
|
|
|
183
189
|
|
|
184
190
|
let metaData = try Data(contentsOf: metaURL)
|
|
185
191
|
guard let metaJson = try JSONSerialization.jsonObject(with: metaData) as? [String: Any],
|
|
186
|
-
let
|
|
192
|
+
let currentId = metaJson["sha256"] as? String else {
|
|
187
193
|
NSLog("[ScaleBunOta] Invalid current/meta.json — reverting")
|
|
188
194
|
_ = revert()
|
|
189
195
|
return
|
|
190
196
|
}
|
|
191
197
|
|
|
192
|
-
|
|
193
|
-
|
|
198
|
+
// Both sides must be real values for the comparison to mean
|
|
199
|
+
// anything. Comparing two empty strings is what made the Android
|
|
200
|
+
// equivalent vacuous; reverting on a legacy marker would revert
|
|
201
|
+
// bundles staged by an older build.
|
|
202
|
+
if markerId.isEmpty || currentId.isEmpty {
|
|
203
|
+
NSLog("[ScaleBunOta] Boot guard cannot verify this bundle — marker or meta has no sha256. Leaving it in place.")
|
|
204
|
+
} else if currentId != markerId {
|
|
205
|
+
NSLog("[ScaleBunOta] Boot marker sha256 mismatch — reverting")
|
|
194
206
|
_ = revert()
|
|
195
207
|
}
|
|
196
208
|
} catch {
|
|
@@ -218,17 +230,31 @@ class OtaSlotManager {
|
|
|
218
230
|
// MARK: - Private Helpers
|
|
219
231
|
|
|
220
232
|
private func writeBootMarker() {
|
|
233
|
+
// Identify the bundle by SHA-256, not by `bundleId`.
|
|
234
|
+
//
|
|
235
|
+
// `stageBundle` is never told the bundleId — it writes a meta.json of
|
|
236
|
+
// just `sha256` and `installedAt`. So this used to `guard let bundleId`
|
|
237
|
+
// on an absent key and return early, meaning THE BOOT MARKER WAS NEVER
|
|
238
|
+
// WRITTEN. checkBootGuard() then returned immediately because no marker
|
|
239
|
+
// file existed, so the iOS boot guard never armed at all — a
|
|
240
|
+
// crash-looping bundle would never have been reverted.
|
|
241
|
+
//
|
|
242
|
+
// sha256 is the key that is actually present, and it is the better
|
|
243
|
+
// identity regardless: it detects a bundle whose CONTENT changed.
|
|
221
244
|
guard let meta = readMeta(slot: currentSlot),
|
|
222
|
-
let
|
|
245
|
+
let sha256 = meta["sha256"] else { return }
|
|
223
246
|
|
|
224
247
|
let marker: [String: Any] = [
|
|
225
|
-
"
|
|
248
|
+
"sha256": sha256,
|
|
226
249
|
"appliedAt": Int(Date().timeIntervalSince1970 * 1000)
|
|
227
250
|
]
|
|
228
251
|
|
|
229
252
|
if let data = try? JSONSerialization.data(withJSONObject: marker) {
|
|
230
253
|
try? FileManager.default.createDirectory(at: otaRoot, withIntermediateDirectories: true)
|
|
231
|
-
|
|
254
|
+
// `.atomic`: a half-written marker is indistinguishable from a
|
|
255
|
+
// corrupt one, and checkBootGuard() reverts on corrupt markers —
|
|
256
|
+
// so a power cut here could have rolled back a healthy install.
|
|
257
|
+
try? data.write(to: bootMarkerFile, options: .atomic)
|
|
232
258
|
}
|
|
233
259
|
}
|
|
234
260
|
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
#import <React/RCTBridgeModule.h>
|
|
2
|
+
#import <React/RCTEventEmitter.h>
|
|
3
|
+
#import <React/RCTReloadCommand.h>
|
|
2
4
|
|
|
3
5
|
/**
|
|
4
6
|
* ObjC++ bridge exposing the ScaleBunOta Swift module to React Native.
|
|
@@ -36,6 +38,13 @@ RCT_EXTERN_METHOD(markHealthy)
|
|
|
36
38
|
RCT_EXTERN_METHOD(revertToPrevious:(RCTPromiseResolveBlock)resolve
|
|
37
39
|
reject:(RCTPromiseRejectBlock)reject)
|
|
38
40
|
|
|
41
|
+
RCT_EXTERN_METHOD(restartApp)
|
|
42
|
+
|
|
43
|
+
@end
|
|
44
|
+
|
|
45
|
+
// Download-progress event channel. Swift subclass of RCTEventEmitter; only
|
|
46
|
+
// registration lives here. Events: ScaleBunOtaProgress {bytesRead, totalBytes}.
|
|
47
|
+
@interface RCT_EXTERN_MODULE(ScaleBunOtaEvents, RCTEventEmitter)
|
|
39
48
|
@end
|
|
40
49
|
|
|
41
50
|
#ifdef RCT_NEW_ARCH_ENABLED
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import Foundation
|
|
2
|
+
import React
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Event channel for OTA download progress (`ScaleBunOtaEvents`).
|
|
6
|
+
*
|
|
7
|
+
* A separate module because `ScaleBunOtaModule` is a plain NSObject bridge
|
|
8
|
+
* module — only an `RCTEventEmitter` subclass can send events to JS, and
|
|
9
|
+
* retrofitting the main module onto RCTEventEmitter would change its
|
|
10
|
+
* initialization contract on both architectures for the sake of one event.
|
|
11
|
+
*
|
|
12
|
+
* The JS side (`OtaOrchestrator`) listens via
|
|
13
|
+
* `new NativeEventEmitter(NativeModules.ScaleBunOtaEvents)` and turns these
|
|
14
|
+
* into `DOWNLOAD_PROGRESS` events for the `useOtaUpdate` hook plus throttled
|
|
15
|
+
* POSTs to the backend's live tracker. On Android the same payload rides
|
|
16
|
+
* `RCTDeviceEventEmitter` instead.
|
|
17
|
+
*/
|
|
18
|
+
@objc(ScaleBunOtaEvents)
|
|
19
|
+
class ScaleBunOtaEventsModule: RCTEventEmitter {
|
|
20
|
+
|
|
21
|
+
/// The bridge instantiates the module; the downloader reaches it through
|
|
22
|
+
/// this. Weak: the bridge owns the lifetime, not us.
|
|
23
|
+
private static weak var shared: ScaleBunOtaEventsModule?
|
|
24
|
+
|
|
25
|
+
private var hasActiveListeners = false
|
|
26
|
+
|
|
27
|
+
override init() {
|
|
28
|
+
super.init()
|
|
29
|
+
ScaleBunOtaEventsModule.shared = self
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
@objc override static func requiresMainQueueSetup() -> Bool { false }
|
|
33
|
+
|
|
34
|
+
override func supportedEvents() -> [String]! {
|
|
35
|
+
["ScaleBunOtaProgress"]
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
override func startObserving() {
|
|
39
|
+
hasActiveListeners = true
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
override func stopObserving() {
|
|
43
|
+
hasActiveListeners = false
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Emit a progress tick to JS. Safe to call from any thread and from code
|
|
48
|
+
* with no bridge (returns silently) — progress display must never be able
|
|
49
|
+
* to break the download it describes.
|
|
50
|
+
*/
|
|
51
|
+
static func emitProgress(bytesRead: Int64, totalBytes: Int64) {
|
|
52
|
+
guard let instance = shared, instance.hasActiveListeners else { return }
|
|
53
|
+
instance.sendEvent(
|
|
54
|
+
withName: "ScaleBunOtaProgress",
|
|
55
|
+
body: [
|
|
56
|
+
"bytesRead": bytesRead,
|
|
57
|
+
"totalBytes": totalBytes,
|
|
58
|
+
]
|
|
59
|
+
)
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -72,33 +72,70 @@ class ScaleBunOtaModule: NSObject, RCTBridgeModule {
|
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
@objc(stageBundle:sha256:resolve:reject:)
|
|
75
|
+
/// Stage a bundle into the `next` slot.
|
|
76
|
+
///
|
|
77
|
+
/// OTA-05: `sourcePath` may be an http(s) URL or a local file path. The JS
|
|
78
|
+
/// orchestrator has always passed `bundle.url` here while this method assumed
|
|
79
|
+
/// a filesystem path, so every install failed at staging. Accepting both keeps
|
|
80
|
+
/// the documented local-path contract for existing callers and makes the
|
|
81
|
+
/// orchestrator correct without a coordinated JS+native change.
|
|
75
82
|
func stageBundle(_ sourcePath: NSString,
|
|
76
83
|
sha256: NSString,
|
|
77
84
|
resolve: @escaping RCTPromiseResolveBlock,
|
|
78
85
|
reject: @escaping RCTPromiseRejectBlock) {
|
|
86
|
+
let source = sourcePath as String
|
|
79
87
|
let meta: [String: Any] = [
|
|
80
88
|
"sha256": sha256 as String,
|
|
81
89
|
"installedAt": Int(Date().timeIntervalSince1970 * 1000)
|
|
82
90
|
]
|
|
83
91
|
|
|
92
|
+
let lowered = source.lowercased()
|
|
93
|
+
var downloadedTo: URL?
|
|
94
|
+
|
|
95
|
+
let localPath: String
|
|
96
|
+
if lowered.hasPrefix("http://") || lowered.hasPrefix("https://") {
|
|
97
|
+
let temp = FileManager.default.temporaryDirectory
|
|
98
|
+
.appendingPathComponent("scalebun_ota_dl_\(UUID().uuidString)")
|
|
99
|
+
downloadedTo = temp
|
|
100
|
+
guard BundleDownloader.download(urlString: source, destination: temp) else {
|
|
101
|
+
resolve(false)
|
|
102
|
+
return
|
|
103
|
+
}
|
|
104
|
+
localPath = temp.path
|
|
105
|
+
} else {
|
|
106
|
+
localPath = source
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
// The slot manager copies into its own `_tmp_` directory and verifies the
|
|
110
|
+
// SHA-256 there, so this download is never the file that gets promoted.
|
|
84
111
|
let success = ScaleBunOtaModule.slotManager.stage(
|
|
85
|
-
sourcePath:
|
|
112
|
+
sourcePath: localPath,
|
|
86
113
|
expectedSha256: sha256 as String,
|
|
87
114
|
meta: meta
|
|
88
115
|
)
|
|
116
|
+
|
|
117
|
+
if let downloadedTo = downloadedTo {
|
|
118
|
+
try? FileManager.default.removeItem(at: downloadedTo)
|
|
119
|
+
}
|
|
89
120
|
resolve(success)
|
|
90
121
|
}
|
|
91
122
|
|
|
92
123
|
@objc(stagePatch:patchSha256:expectedSha256:resolve:reject:)
|
|
124
|
+
/// Sprint 7 scaffold — binary patching is NOT implemented on iOS.
|
|
125
|
+
///
|
|
126
|
+
/// This stub exists because the codegen spec (NativeScaleBunOta.ts) declares
|
|
127
|
+
/// `stagePatch`, so on the New Architecture the generated JSI class
|
|
128
|
+
/// dispatches the call to this selector whether or not it exists — a missing
|
|
129
|
+
/// implementation surfaces as an "unrecognized selector" exception on every
|
|
130
|
+
/// patch attempt. The identical gap broke the Android build at the start of
|
|
131
|
+
/// this effort (Kotlin fails at compile; ObjC fails at runtime, which is
|
|
132
|
+
/// worse because it ships). Resolving `false` routes the orchestrator to its
|
|
133
|
+
/// full-bundle fallback, exactly like Android.
|
|
93
134
|
func stagePatch(_ patchUrl: NSString,
|
|
94
135
|
patchSha256: NSString,
|
|
95
136
|
expectedSha256: NSString,
|
|
96
137
|
resolve: @escaping RCTPromiseResolveBlock,
|
|
97
138
|
reject: @escaping RCTPromiseRejectBlock) {
|
|
98
|
-
// Delta/patch updates (native bspatch) are not implemented yet — resolve
|
|
99
|
-
// false so OtaOrchestrator falls back to full-bundle staging. Declared for
|
|
100
|
-
// parity with the TS spec + Android so the patch path resolves cleanly
|
|
101
|
-
// instead of hitting an unrecognized selector.
|
|
102
139
|
resolve(false)
|
|
103
140
|
}
|
|
104
141
|
|
|
@@ -120,4 +157,20 @@ class ScaleBunOtaModule: NSObject, RCTBridgeModule {
|
|
|
120
157
|
let success = ScaleBunOtaModule.slotManager.revert()
|
|
121
158
|
resolve(success)
|
|
122
159
|
}
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Restart the React runtime so the applied bundle loads NOW.
|
|
163
|
+
*
|
|
164
|
+
* `DevSettings.reload()` is a silent no-op in release builds (verified live
|
|
165
|
+
* on Android; the iOS DevSettings path shares the design). RCTReloadCommand
|
|
166
|
+
* is the mechanism React Native itself uses for every reload — it re-runs
|
|
167
|
+
* `AppDelegate.bundleURL()`, which is what picks up the new `current/`.
|
|
168
|
+
* Dispatched to the main thread: reload tears down UI.
|
|
169
|
+
*/
|
|
170
|
+
@objc(restartApp)
|
|
171
|
+
func restartApp() {
|
|
172
|
+
DispatchQueue.main.async {
|
|
173
|
+
RCTTriggerReloadCommandListeners("ScaleBun OTA update")
|
|
174
|
+
}
|
|
175
|
+
}
|
|
123
176
|
}
|
|
@@ -465,6 +465,28 @@ class SDKBootstrapper {
|
|
|
465
465
|
});
|
|
466
466
|
detector.start();
|
|
467
467
|
_internalLogger.logger.info('[Bootstrap] Auto screen detection started');
|
|
468
|
+
|
|
469
|
+
/**
|
|
470
|
+
* Screen detection that never resolves anything must SAY so.
|
|
471
|
+
*
|
|
472
|
+
* Wrapping React Navigation only helps a container that mounts afterwards, so an app that
|
|
473
|
+
* initialises the SDK late still ends up with no screen names — and until now that was
|
|
474
|
+
* indistinguishable from working. Everything downstream inherits the silence: no
|
|
475
|
+
* SCREEN_VIEW events, so every session's screens read "Unknown"; and no `screenName` on
|
|
476
|
+
* taps, which is the column heatmaps group by, so every route collapses into one bucket.
|
|
477
|
+
*
|
|
478
|
+
* One warning, once, naming the fix.
|
|
479
|
+
*/
|
|
480
|
+
let sawScreen = false;
|
|
481
|
+
detector.onScreenChange(() => {
|
|
482
|
+
sawScreen = true;
|
|
483
|
+
});
|
|
484
|
+
const warnTimer = setTimeout(() => {
|
|
485
|
+
if (sawScreen) return;
|
|
486
|
+
_internalLogger.logger.warn('[ScaleBun] No screen has been detected. Screens will show as "Unknown" and heatmaps ' + 'cannot be split by route. If you use React Navigation, pass your container ref to ' + 'ScaleBun.setNavigationRef(ref); otherwise mark screens with <ScaleBunScreen name="…">.');
|
|
487
|
+
}, 15_000);
|
|
488
|
+
// Never hold the JS timer queue open on a background/exiting app.
|
|
489
|
+
warnTimer.unref?.();
|
|
468
490
|
} catch (err) {
|
|
469
491
|
_internalLogger.logger.warn('[Bootstrap] Failed to start AutoScreenDetector:', err?.message);
|
|
470
492
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_schema","_internalLogger","_container","_httpClient","_endpoints","_sdkSession","_deviceId","_flushScheduler","_dispatcher","_appLifecycle","_FeatureRegistry","_NetworkFeature","_CrashFeature","_NativeCrashFeature","_CrashReporter","_PerformanceFeature","_persistentQueue","_StorageBackend","_SessionManager","_nativeCapture","_alertInstrumentation","_BackendSessionAdapter","_sessionId","_automaticEvents","SDKBootstrapper","featureRegistry","FeatureRegistry","config","_backgroundedAt","_orientationSub","_lastOrientation","_memorySub","_deepLinkUnsubscribe","bootstrap","rawConfig","trackFn","flushFn","features","result","ConfigSchema","safeParse","success","logger","error","format","data","logLevel","setLevelByName","debug","setLevel","LogLevel","DEBUG","persistenceConfig","persistence","storageBackend","enabled","createStorageBackend","MemoryBackend","persistentQueue","coreContainer","register","PersistentQueue","leftovers","drainLeftovers","length","info","envelope","add","httpClient","HttpClient","apiBaseUrl","clientKey","Dispatcher","batch","headers","post","ENDPOINTS","EVENTS","deviceId","getDeviceId","events","scheduler","FlushScheduler","response","SESSIONS","projectId","publishableKey","platform","Platform","OS","status","token","sdkSession","setSession","appLifecycle","addListener","state","emitAutomaticEvent","sessionManager","SessionManager","getExistingInstance","adapter","getBackendTransport","reconcilePendingFinalize","catch","bgAt","capMs","sessionBackgroundCapMs","bgMs","Date","now","analyticsSessionId","startAnalyticsSession","_buildAnalyticsSession","finalizeAnalyticsSession","emitLifecycleMarker","at","backgroundedAt","backgroundMs","finalizeOnBackground","isActive","startSession","persistPendingFrames","flushAll","flushAnalytics","endSession","installOrientationTracking","installMemoryWarningTracking","captureDeepLink","url","initial","parsed","URL","scheme","protocol","replace","host","undefined","path","pathname","query_keys","Array","from","searchParams","keys","sort","safePath","split","subscription","Linking","addEventListener","remove","getInitialURL","then","err","warn","message","start","flushIntervalMs","featureContext","trackEvent","getDebugStream","getAppState","network","enableNetworkMonitoring","NetworkFeature","captureNetworkBodies","redactNetwork","sdkBaseUrl","crashes","crashReporter","getCrashReporter","registerSink","DesktopEventSink","BackendErrorsSink","CrashFeature","NativeCrashFeature","performance","perf","PerformanceFeature","appLaunch","tier1","screenLoad","networkPerf","uiHangs","uiHang","tier2Enabled","tier2","tier2SampleRate","sampleRate","initializeAll","replay","getInstance","nativeCapture","sessionReplay","captureInteractionHeatmap","backendAdapter","BackendSessionAdapter","endpoint","idleThresholdMs","storage","useObjectStorage","enableNativeFileOutbox","nativeOutboxUploadEnabled","nativeOutboxTuning","nativeOutboxRetryIntervalMs","nativeOutboxMaxUploadAttempts","nativeOutboxPoisonMaxAttempts","nativeOutboxRespectRetryAfter","nativeOutboxStrictThreeSecondRetry","nativeOutboxNetworkFailuresCountTowardDead","nativeOutboxMaxBytes","nativeOutboxMaxAgeMs","setBackendTransport","recoverPersistedFrames","analyticsStarted","isSaaS","installAlertInstrumentation","AutoScreenDetector","detector","onScreenChange","screenName","source","screen_name","detection_source","setTrackedScreen","sm","pf","get","setCurrentScreen","getProfilerFeature","prof","version","Version","Dimensions","verdict","w","h","win","width","height","window","next","orientation","Math","round","AppState","screen","getLastKnownScreen","sessionId","generateSessionId","startedAt","metadata","buildType","__DEV__","getConfig","teardown","uninstallAlertInstrumentation","teardownAll","exports"],"sourceRoot":"../../../src","sources":["bootstrap/SDKBootstrapper.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_schema","_internalLogger","_container","_httpClient","_endpoints","_sdkSession","_deviceId","_flushScheduler","_dispatcher","_appLifecycle","_FeatureRegistry","_NetworkFeature","_CrashFeature","_NativeCrashFeature","_CrashReporter","_PerformanceFeature","_persistentQueue","_StorageBackend","_SessionManager","_nativeCapture","_alertInstrumentation","_BackendSessionAdapter","_sessionId","_automaticEvents","SDKBootstrapper","featureRegistry","FeatureRegistry","config","_backgroundedAt","_orientationSub","_lastOrientation","_memorySub","_deepLinkUnsubscribe","bootstrap","rawConfig","trackFn","flushFn","features","result","ConfigSchema","safeParse","success","logger","error","format","data","logLevel","setLevelByName","debug","setLevel","LogLevel","DEBUG","persistenceConfig","persistence","storageBackend","enabled","createStorageBackend","MemoryBackend","persistentQueue","coreContainer","register","PersistentQueue","leftovers","drainLeftovers","length","info","envelope","add","httpClient","HttpClient","apiBaseUrl","clientKey","Dispatcher","batch","headers","post","ENDPOINTS","EVENTS","deviceId","getDeviceId","events","scheduler","FlushScheduler","response","SESSIONS","projectId","publishableKey","platform","Platform","OS","status","token","sdkSession","setSession","appLifecycle","addListener","state","emitAutomaticEvent","sessionManager","SessionManager","getExistingInstance","adapter","getBackendTransport","reconcilePendingFinalize","catch","bgAt","capMs","sessionBackgroundCapMs","bgMs","Date","now","analyticsSessionId","startAnalyticsSession","_buildAnalyticsSession","finalizeAnalyticsSession","emitLifecycleMarker","at","backgroundedAt","backgroundMs","finalizeOnBackground","isActive","startSession","persistPendingFrames","flushAll","flushAnalytics","endSession","installOrientationTracking","installMemoryWarningTracking","captureDeepLink","url","initial","parsed","URL","scheme","protocol","replace","host","undefined","path","pathname","query_keys","Array","from","searchParams","keys","sort","safePath","split","subscription","Linking","addEventListener","remove","getInitialURL","then","err","warn","message","start","flushIntervalMs","featureContext","trackEvent","getDebugStream","getAppState","network","enableNetworkMonitoring","NetworkFeature","captureNetworkBodies","redactNetwork","sdkBaseUrl","crashes","crashReporter","getCrashReporter","registerSink","DesktopEventSink","BackendErrorsSink","CrashFeature","NativeCrashFeature","performance","perf","PerformanceFeature","appLaunch","tier1","screenLoad","networkPerf","uiHangs","uiHang","tier2Enabled","tier2","tier2SampleRate","sampleRate","initializeAll","replay","getInstance","nativeCapture","sessionReplay","captureInteractionHeatmap","backendAdapter","BackendSessionAdapter","endpoint","idleThresholdMs","storage","useObjectStorage","enableNativeFileOutbox","nativeOutboxUploadEnabled","nativeOutboxTuning","nativeOutboxRetryIntervalMs","nativeOutboxMaxUploadAttempts","nativeOutboxPoisonMaxAttempts","nativeOutboxRespectRetryAfter","nativeOutboxStrictThreeSecondRetry","nativeOutboxNetworkFailuresCountTowardDead","nativeOutboxMaxBytes","nativeOutboxMaxAgeMs","setBackendTransport","recoverPersistedFrames","analyticsStarted","isSaaS","installAlertInstrumentation","AutoScreenDetector","detector","onScreenChange","screenName","source","screen_name","detection_source","setTrackedScreen","sm","pf","get","setCurrentScreen","getProfilerFeature","prof","sawScreen","warnTimer","setTimeout","unref","version","Version","Dimensions","verdict","w","h","win","width","height","window","next","orientation","Math","round","AppState","screen","getLastKnownScreen","sessionId","generateSessionId","startedAt","metadata","buildType","__DEV__","getConfig","teardown","uninstallAlertInstrumentation","teardownAll","exports"],"sourceRoot":"../../../src","sources":["bootstrap/SDKBootstrapper.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.CrashFeature = void 0;
|
|
7
7
|
var _index = require("./index");
|
|
8
|
+
var _rejectionHandler = require("./rejectionHandler");
|
|
8
9
|
var _CrashReporter = require("./CrashReporter");
|
|
9
10
|
/**
|
|
10
11
|
* ScaleBun SDK — Crash Feature
|
|
@@ -38,6 +39,23 @@ class CrashFeature {
|
|
|
38
39
|
this.flushFn();
|
|
39
40
|
}
|
|
40
41
|
});
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Unhandled promise rejections — a SEPARATE intake from ErrorUtils, which never sees them.
|
|
45
|
+
*
|
|
46
|
+
* Never fatal: a rejected promise does not stop the app, so it is reported as 'handled' and
|
|
47
|
+
* does not flush. Marking these fatal would inflate the crash count with errors the user
|
|
48
|
+
* never experienced as a crash.
|
|
49
|
+
*/
|
|
50
|
+
(0, _rejectionHandler.installRejectionHandler)(error => {
|
|
51
|
+
(0, _CrashReporter.getCrashReporter)().report({
|
|
52
|
+
source: 'js',
|
|
53
|
+
type: 'handled',
|
|
54
|
+
isFatal: false,
|
|
55
|
+
message: error.message,
|
|
56
|
+
stack: error.stack
|
|
57
|
+
});
|
|
58
|
+
});
|
|
41
59
|
this.active = true;
|
|
42
60
|
}
|
|
43
61
|
teardown() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_index","require","_CrashReporter","CrashFeature","name","active","constructor","flushFn","initialize","_context","installCrashReporting","error","isFatal","getCrashReporter","report","source","type","message","stack","teardown","isActive","exports"],"sourceRoot":"../../../../src","sources":["features/crash/CrashFeature.ts"],"mappings":";;;;;;AAYA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,
|
|
1
|
+
{"version":3,"names":["_index","require","_rejectionHandler","_CrashReporter","CrashFeature","name","active","constructor","flushFn","initialize","_context","installCrashReporting","error","isFatal","getCrashReporter","report","source","type","message","stack","installRejectionHandler","teardown","isActive","exports"],"sourceRoot":"../../../../src","sources":["features/crash/CrashFeature.ts"],"mappings":";;;;;;AAYA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAD,OAAA;AACA,IAAAE,cAAA,GAAAF,OAAA;AAdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAOO,MAAMG,YAAY,CAAqB;EACjCC,IAAI,GAAG,OAAO;EACfC,MAAM,GAAG,KAAK;EAGtBC,WAAWA,CAACC,OAA4B,EAAE;IACtC,IAAI,CAACA,OAAO,GAAGA,OAAO;EAC1B;EAEAC,UAAUA,CAACC,QAAwB,EAAQ;IACvC,IAAI,IAAI,CAACJ,MAAM,EAAE;IACjB,IAAAK,4BAAqB,EAAC,CAACC,KAAY,EAAEC,OAAgB,KAAK;MACtD,IAAAC,+BAAgB,EAAC,CAAC,CAACC,MAAM,CAAC;QACtBC,MAAM,EAAE,IAAI;QACZC,IAAI,EAAEJ,OAAO,GAAG,OAAO,GAAG,SAAS;QACnCA,OAAO;QACPK,OAAO,EAAEN,KAAK,CAACM,OAAO;QACtBC,KAAK,EAAEP,KAAK,CAACO;MACjB,CAAC,CAAC;MAEF,IAAIN,OAAO,EAAE;QACT;QACA,IAAI,CAACL,OAAO,CAAC,CAAC;MAClB;IACJ,CAAC,CAAC;;IAEF;AACR;AACA;AACA;AACA;AACA;AACA;IACQ,IAAAY,yCAAuB,EAAER,KAAY,IAAK;MACtC,IAAAE,+BAAgB,EAAC,CAAC,CAACC,MAAM,CAAC;QACtBC,MAAM,EAAE,IAAI;QACZC,IAAI,EAAE,SAAS;QACfJ,OAAO,EAAE,KAAK;QACdK,OAAO,EAAEN,KAAK,CAACM,OAAO;QACtBC,KAAK,EAAEP,KAAK,CAACO;MACjB,CAAC,CAAC;IACN,CAAC,CAAC;IAEF,IAAI,CAACb,MAAM,GAAG,IAAI;EACtB;EAEAe,QAAQA,CAAA,EAAS;IACb;IACA,IAAI,CAACf,MAAM,GAAG,KAAK;EACvB;EAEA,IAAIgB,QAAQA,CAAA,EAAY;IACpB,OAAO,IAAI,CAAChB,MAAM;EACtB;AACJ;AAACiB,OAAA,CAAAnB,YAAA,GAAAA,YAAA","ignoreList":[]}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.__pendingRejectionCount = __pendingRejectionCount;
|
|
7
|
+
exports.__resetRejectionsForTests = __resetRejectionsForTests;
|
|
8
|
+
exports.installRejectionHandler = installRejectionHandler;
|
|
9
|
+
var _crashSafe = require("../../core/lifecycle/crashSafe");
|
|
10
|
+
var _internalLogger = require("../../core/logger/internalLogger");
|
|
11
|
+
/**
|
|
12
|
+
* Capture UNHANDLED PROMISE REJECTIONS.
|
|
13
|
+
*
|
|
14
|
+
* THE GAP THIS CLOSES
|
|
15
|
+
* `ErrorUtils.setGlobalHandler` (see ./globalHandler) catches uncaught *throws* and nothing else. A
|
|
16
|
+
* rejected promise with no `.catch()` does not pass through it — React Native routes those to its own
|
|
17
|
+
* rejection tracker, which prints a LogBox warning in development and does nothing whatsoever in
|
|
18
|
+
* production. So `await doThing()` with no catch was reported by the WEB SDK (which listens for
|
|
19
|
+
* `unhandledrejection`) and silently lost on mobile. Same product, same mistake in the host's code,
|
|
20
|
+
* one platform reporting it — the cross-SDK asymmetry CLAUDE.md §2 exists to catch.
|
|
21
|
+
*
|
|
22
|
+
* WHY `require`, GUARDED, AND NOT AN IMPORT
|
|
23
|
+
* `promise/setimmediate/rejection-tracking` is React Native's own tracker: it arrives with
|
|
24
|
+
* react-native in any real app, and adding it to this package's dependencies would put a third-party
|
|
25
|
+
* runtime dep into the SDK for something the platform already ships. It is therefore resolved at
|
|
26
|
+
* runtime and treated as optional — the same shape as `globalHandler`'s `ErrorUtils` feature-detect,
|
|
27
|
+
* for the same reason. When it cannot be resolved this logs once and no-ops; nothing throws.
|
|
28
|
+
*
|
|
29
|
+
* ⚠️ `enable()` REPLACES the current handlers — it does not chain, and the module exposes no way to
|
|
30
|
+
* read the previous ones. Calling it therefore takes over from React Native's own dev-mode warning,
|
|
31
|
+
* so this re-emits that warning itself under `__DEV__`. Without it, installing the SDK would make
|
|
32
|
+
* unhandled rejections *quieter* in development than they were before, which is a poor trade for
|
|
33
|
+
* catching them in production.
|
|
34
|
+
*/
|
|
35
|
+
|
|
36
|
+
/** The slice of `promise/setimmediate/rejection-tracking` this uses. */
|
|
37
|
+
|
|
38
|
+
/** Default resolver — optional at runtime, never a build-time dependency. */
|
|
39
|
+
function defaultResolveTracker() {
|
|
40
|
+
try {
|
|
41
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
42
|
+
return require('promise/setimmediate/rejection-tracking');
|
|
43
|
+
} catch {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/** Anything can be rejected — `throw 'a string'` is legal. Normalise without inventing a stack. */
|
|
49
|
+
function toError(value) {
|
|
50
|
+
if (value instanceof Error) return value;
|
|
51
|
+
if (typeof value === 'string') return new Error(value);
|
|
52
|
+
try {
|
|
53
|
+
return new Error(`Non-Error rejection: ${JSON.stringify(value)}`);
|
|
54
|
+
} catch {
|
|
55
|
+
return new Error('Non-Error rejection');
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Install the unhandled-rejection handler.
|
|
61
|
+
*
|
|
62
|
+
* @returns true when the tracker was available and handlers were installed.
|
|
63
|
+
*/
|
|
64
|
+
function installRejectionHandler(onRejection, deps) {
|
|
65
|
+
return (0, _crashSafe.noThrow)(() => {
|
|
66
|
+
const tracker = (deps?.resolveTracker ?? defaultResolveTracker)();
|
|
67
|
+
if (!tracker || typeof tracker.enable !== 'function') {
|
|
68
|
+
_internalLogger.logger.debug('[Crash] promise rejection tracking unavailable — unhandled rejections not captured');
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
const isDev = deps?.isDev ?? (typeof __DEV__ !== 'undefined' && __DEV__);
|
|
72
|
+
tracker.enable({
|
|
73
|
+
/**
|
|
74
|
+
* `allRejections: true` reports a rejection that is still unhandled when the tracker's
|
|
75
|
+
* grace period elapses. `onHandled` below is the other half: a promise caught LATE —
|
|
76
|
+
* a very common pattern, e.g. attaching `.catch()` after an `await` chain — fires
|
|
77
|
+
* `onUnhandled` first and `onHandled` afterwards. Reporting on the first and saying
|
|
78
|
+
* nothing on the second would file a crash for code that handled its own error.
|
|
79
|
+
*/
|
|
80
|
+
allRejections: true,
|
|
81
|
+
onUnhandled: (id, error) => {
|
|
82
|
+
const err = toError(error);
|
|
83
|
+
pending.set(id, err);
|
|
84
|
+
onRejection(err);
|
|
85
|
+
if (isDev) {
|
|
86
|
+
// Re-emit what RN's own tracker would have said, since enable() displaced it.
|
|
87
|
+
// eslint-disable-next-line no-console
|
|
88
|
+
console.warn(`Possible unhandled promise rejection (id: ${id}):`, err?.message ?? err);
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
onHandled: id => {
|
|
92
|
+
pending.delete(id);
|
|
93
|
+
if (isDev) {
|
|
94
|
+
// eslint-disable-next-line no-console
|
|
95
|
+
console.warn(`Promise rejection handled late (id: ${id}) — it was already reported.`);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
_internalLogger.logger.debug('Unhandled promise rejection handler installed');
|
|
100
|
+
return true;
|
|
101
|
+
}) ?? false;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Rejections reported but not yet seen handled.
|
|
106
|
+
*
|
|
107
|
+
* Deliberately NOT used to suppress the report — by the time `onUnhandled` fires the rejection has
|
|
108
|
+
* already gone unhandled for the tracker's whole grace period, and holding it back on the chance
|
|
109
|
+
* that a late `.catch()` arrives would mean losing genuine production errors to a guess. This exists
|
|
110
|
+
* so `onHandled` has somewhere to clear from, and so a test can observe the pairing.
|
|
111
|
+
*/
|
|
112
|
+
const pending = new Map();
|
|
113
|
+
|
|
114
|
+
/** Test seam — number of reported-and-not-yet-handled rejections. */
|
|
115
|
+
function __pendingRejectionCount() {
|
|
116
|
+
return pending.size;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/** Test seam — clear state between cases. */
|
|
120
|
+
function __resetRejectionsForTests() {
|
|
121
|
+
pending.clear();
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=rejectionHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_crashSafe","require","_internalLogger","defaultResolveTracker","toError","value","Error","JSON","stringify","installRejectionHandler","onRejection","deps","noThrow","tracker","resolveTracker","enable","logger","debug","isDev","__DEV__","allRejections","onUnhandled","id","error","err","pending","set","console","warn","message","onHandled","delete","Map","__pendingRejectionCount","size","__resetRejectionsForTests","clear"],"sourceRoot":"../../../../src","sources":["features/crash/rejectionHandler.ts"],"mappings":";;;;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,eAAA,GAAAD,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AASA;AACA,SAASE,qBAAqBA,CAAA,EAA4B;EACtD,IAAI;IACA;IACA,OAAOF,OAAO,CAAC,yCAAyC,CAAC;EAC7D,CAAC,CAAC,MAAM;IACJ,OAAO,IAAI;EACf;AACJ;;AAEA;AACA,SAASG,OAAOA,CAACC,KAAc,EAAS;EACpC,IAAIA,KAAK,YAAYC,KAAK,EAAE,OAAOD,KAAK;EACxC,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE,OAAO,IAAIC,KAAK,CAACD,KAAK,CAAC;EACtD,IAAI;IACA,OAAO,IAAIC,KAAK,CAAC,wBAAwBC,IAAI,CAACC,SAAS,CAACH,KAAK,CAAC,EAAE,CAAC;EACrE,CAAC,CAAC,MAAM;IACJ,OAAO,IAAIC,KAAK,CAAC,qBAAqB,CAAC;EAC3C;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASG,uBAAuBA,CACnCC,WAAmC,EACnCC,IAA0E,EACnE;EACP,OACI,IAAAC,kBAAO,EAAC,MAAM;IACV,MAAMC,OAAO,GAAG,CAACF,IAAI,EAAEG,cAAc,IAAIX,qBAAqB,EAAE,CAAC;IACjE,IAAI,CAACU,OAAO,IAAI,OAAOA,OAAO,CAACE,MAAM,KAAK,UAAU,EAAE;MAClDC,sBAAM,CAACC,KAAK,CACR,oFACJ,CAAC;MACD,OAAO,KAAK;IAChB;IAEA,MAAMC,KAAK,GAAGP,IAAI,EAAEO,KAAK,KAAK,OAAOC,OAAO,KAAK,WAAW,IAAIA,OAAO,CAAC;IAExEN,OAAO,CAACE,MAAM,CAAC;MACX;AAChB;AACA;AACA;AACA;AACA;AACA;MACgBK,aAAa,EAAE,IAAI;MACnBC,WAAW,EAAEA,CAACC,EAAU,EAAEC,KAAc,KAAK;QACzC,MAAMC,GAAG,GAAGpB,OAAO,CAACmB,KAAK,CAAC;QAC1BE,OAAO,CAACC,GAAG,CAACJ,EAAE,EAAEE,GAAG,CAAC;QACpBd,WAAW,CAACc,GAAG,CAAC;QAChB,IAAIN,KAAK,EAAE;UACP;UACA;UACAS,OAAO,CAACC,IAAI,CAAC,6CAA6CN,EAAE,IAAI,EAAEE,GAAG,EAAEK,OAAO,IAAIL,GAAG,CAAC;QAC1F;MACJ,CAAC;MACDM,SAAS,EAAGR,EAAU,IAAK;QACvBG,OAAO,CAACM,MAAM,CAACT,EAAE,CAAC;QAClB,IAAIJ,KAAK,EAAE;UACP;UACAS,OAAO,CAACC,IAAI,CACR,uCAAuCN,EAAE,8BAC7C,CAAC;QACL;MACJ;IACJ,CAAC,CAAC;IAEFN,sBAAM,CAACC,KAAK,CAAC,+CAA+C,CAAC;IAC7D,OAAO,IAAI;EACf,CAAC,CAAC,IAAI,KAAK;AAEnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMQ,OAAO,GAAG,IAAIO,GAAG,CAAgB,CAAC;;AAExC;AACO,SAASC,uBAAuBA,CAAA,EAAW;EAC9C,OAAOR,OAAO,CAACS,IAAI;AACvB;;AAEA;AACO,SAASC,yBAAyBA,CAAA,EAAS;EAC9CV,OAAO,CAACW,KAAK,CAAC,CAAC;AACnB","ignoreList":[]}
|
|
@@ -599,7 +599,9 @@ function EngagePromptProvider({
|
|
|
599
599
|
engage.flushEvents?.();
|
|
600
600
|
_internalLogger.logger.debug(`[Engage] test ${runId} ${eventType} persisted + ACK flushed`);
|
|
601
601
|
} else {
|
|
602
|
-
|
|
602
|
+
// Stamp the SERVED revision: without it the completion can never be invalidated,
|
|
603
|
+
// and an edited campaign would never return to a device that closed the old one.
|
|
604
|
+
storeRef.current?.markCompleted(current.id, Date.now(), current.revision);
|
|
603
605
|
engage.flushEvents?.();
|
|
604
606
|
_internalLogger.logger.debug(`[Engage] in-app ${current.id} ${eventType} — marked done on device`);
|
|
605
607
|
}
|
|
@@ -657,7 +659,7 @@ function EngagePromptProvider({
|
|
|
657
659
|
_internalLogger.logger.debug(`[Engage] test ${runId} CTA — persisted locally + ACK flushed`);
|
|
658
660
|
} else {
|
|
659
661
|
// Production message: a CTA tap is as final as a close — don't re-show it.
|
|
660
|
-
storeRef.current?.markCompleted(message.id);
|
|
662
|
+
storeRef.current?.markCompleted(message.id, Date.now(), message.revision);
|
|
661
663
|
engage.flushEvents?.();
|
|
662
664
|
_internalLogger.logger.debug(`[Engage] in-app ${message.id} CTA tapped — marked done on device`);
|
|
663
665
|
}
|