@goliapkg/sentori-react-native 2.1.0 → 3.0.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 +24 -1
- package/android/src/main/java/com/sentori/SentoriFirebaseMessagingService.kt +56 -0
- package/android/src/main/java/com/sentori/SentoriModule.kt +43 -0
- package/android/src/main/java/com/sentori/SentoriPushNotifications.kt +293 -0
- package/ios/SentoriModule.swift +39 -0
- package/ios/SentoriPushNotifications.swift +303 -0
- package/lib/capture.d.ts +6 -1
- package/lib/capture.d.ts.map +1 -1
- package/lib/capture.js +49 -2
- package/lib/capture.js.map +1 -1
- package/lib/compat/sentry.d.ts +14 -0
- package/lib/compat/sentry.d.ts.map +1 -1
- package/lib/compat/sentry.js +6 -0
- package/lib/compat/sentry.js.map +1 -1
- package/lib/config.d.ts +12 -18
- package/lib/config.d.ts.map +1 -1
- package/lib/config.js.map +1 -1
- package/lib/expo-compat.d.ts +270 -0
- package/lib/expo-compat.d.ts.map +1 -0
- package/lib/expo-compat.js +500 -0
- package/lib/expo-compat.js.map +1 -0
- package/lib/index.d.ts +17 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +18 -0
- package/lib/index.js.map +1 -1
- package/lib/init.d.ts +7 -0
- package/lib/init.d.ts.map +1 -1
- package/lib/init.js +3 -0
- package/lib/init.js.map +1 -1
- package/lib/native.d.ts +17 -0
- package/lib/native.d.ts.map +1 -1
- package/lib/native.js +57 -0
- package/lib/native.js.map +1 -1
- package/lib/push.d.ts +58 -0
- package/lib/push.d.ts.map +1 -0
- package/lib/push.js +294 -0
- package/lib/push.js.map +1 -0
- package/package.json +9 -5
- package/src/__tests__/before-send.test.ts +72 -0
- package/src/__tests__/compat-sentry.test.ts +121 -0
- package/src/__tests__/push.test.ts +178 -0
- package/src/capture.ts +48 -2
- package/src/compat/sentry.ts +8 -0
- package/src/config.ts +12 -15
- package/src/expo-compat.ts +698 -0
- package/src/index.ts +40 -0
- package/src/init.ts +10 -0
- package/src/native.ts +102 -0
- package/src/push.ts +382 -0
|
@@ -0,0 +1,500 @@
|
|
|
1
|
+
// v2.18 — `expo-notifications` drop-in shim.
|
|
2
|
+
//
|
|
3
|
+
// Customers coming from `expo-notifications` change ONE line:
|
|
4
|
+
//
|
|
5
|
+
// - import * as Notifications from 'expo-notifications'
|
|
6
|
+
// + import * as Notifications from '@goliapkg/sentori-react-native/expo-compat'
|
|
7
|
+
//
|
|
8
|
+
// …and most of their existing code keeps compiling. The API
|
|
9
|
+
// surface here mirrors expo-notifications' public exports; under the
|
|
10
|
+
// hood every call routes through the same `sentori.push.*` native
|
|
11
|
+
// module the rest of the SDK uses.
|
|
12
|
+
//
|
|
13
|
+
// What works — P0 surface, covered by the existing native module:
|
|
14
|
+
//
|
|
15
|
+
// getPermissionsAsync — non-prompting status read
|
|
16
|
+
// requestPermissionsAsync — OS prompt + permission flow
|
|
17
|
+
// getDevicePushTokenAsync — raw APNs (iOS) / FCM (Android) token
|
|
18
|
+
// getExpoPushTokenAsync — same as device token, wrapped in
|
|
19
|
+
// { type: 'expo', data } shape;
|
|
20
|
+
// NOT a real exp.host token — see
|
|
21
|
+
// recipe for the server-side change
|
|
22
|
+
// addNotificationReceivedListener — foreground notification callback
|
|
23
|
+
// addNotificationResponseReceivedListener — tap callback
|
|
24
|
+
// setNotificationHandler — presentation behaviour hook
|
|
25
|
+
// unregisterForNotificationsAsync — revoke + drop cached handle
|
|
26
|
+
// addPushTokenListener — rebind on token rotation
|
|
27
|
+
// AndroidImportance / IosAuthorizationStatus / DEFAULT_ACTION_IDENTIFIER
|
|
28
|
+
//
|
|
29
|
+
// What's not implemented yet (each throws a tagged Error with a
|
|
30
|
+
// pointer at the migration recipe — silent no-ops would be worse):
|
|
31
|
+
//
|
|
32
|
+
// scheduleNotificationAsync + the 7 SchedulableTriggerInputTypes
|
|
33
|
+
// getBadgeCountAsync / setBadgeCountAsync
|
|
34
|
+
// setNotificationChannelAsync + the channel-group CRUD
|
|
35
|
+
// setNotificationCategoryAsync + interactive actions
|
|
36
|
+
// useLastNotificationResponse + getLastNotificationResponseAsync
|
|
37
|
+
// subscribeToTopicAsync / unsubscribeFromTopicAsync
|
|
38
|
+
// registerTaskAsync (background task)
|
|
39
|
+
// getPresentedNotificationsAsync / dismissNotificationAsync
|
|
40
|
+
//
|
|
41
|
+
// The "not implemented" list will close in follow-up minor releases
|
|
42
|
+
// as the native module grows. Anything in expo-notifications that
|
|
43
|
+
// requires native code we don't have today goes here; nothing here
|
|
44
|
+
// is a permanent gap.
|
|
45
|
+
import { logger } from '@goliapkg/sentori-core';
|
|
46
|
+
import { pushDrainState, pushGetStatus, pushRegister, pushRequestPermission, pushUnregister, } from './native';
|
|
47
|
+
// ── Constants — same values as expo-notifications ─────────────────
|
|
48
|
+
export const DEFAULT_ACTION_IDENTIFIER = 'expo.modules.notifications.actions.DEFAULT';
|
|
49
|
+
export const AndroidImportance = {
|
|
50
|
+
NONE: 0,
|
|
51
|
+
MIN: 1,
|
|
52
|
+
LOW: 2,
|
|
53
|
+
DEFAULT: 3,
|
|
54
|
+
HIGH: 4,
|
|
55
|
+
MAX: 5,
|
|
56
|
+
};
|
|
57
|
+
export const AndroidNotificationPriority = {
|
|
58
|
+
MIN: 'min',
|
|
59
|
+
LOW: 'low',
|
|
60
|
+
DEFAULT: 'default',
|
|
61
|
+
HIGH: 'high',
|
|
62
|
+
MAX: 'max',
|
|
63
|
+
};
|
|
64
|
+
export const AndroidNotificationVisibility = {
|
|
65
|
+
PUBLIC: 1,
|
|
66
|
+
PRIVATE: 0,
|
|
67
|
+
SECRET: -1,
|
|
68
|
+
};
|
|
69
|
+
export const IosAuthorizationStatus = {
|
|
70
|
+
NOT_DETERMINED: 0,
|
|
71
|
+
DENIED: 1,
|
|
72
|
+
AUTHORIZED: 2,
|
|
73
|
+
PROVISIONAL: 3,
|
|
74
|
+
EPHEMERAL: 4,
|
|
75
|
+
};
|
|
76
|
+
export const IosAlertStyle = {
|
|
77
|
+
NONE: 0,
|
|
78
|
+
BANNER: 1,
|
|
79
|
+
ALERT: 2,
|
|
80
|
+
};
|
|
81
|
+
// 7 SchedulableTriggerInputTypes — re-exported for compile parity
|
|
82
|
+
// even though scheduleNotificationAsync throws. Customers that
|
|
83
|
+
// destructure these from the module won't break their build.
|
|
84
|
+
export const SchedulableTriggerInputTypes = {
|
|
85
|
+
TIME_INTERVAL: 'timeInterval',
|
|
86
|
+
DATE: 'date',
|
|
87
|
+
CALENDAR: 'calendar',
|
|
88
|
+
DAILY: 'daily',
|
|
89
|
+
WEEKLY: 'weekly',
|
|
90
|
+
MONTHLY: 'monthly',
|
|
91
|
+
YEARLY: 'yearly',
|
|
92
|
+
};
|
|
93
|
+
// ── Module state (handler + drain loop + listener registry) ───────
|
|
94
|
+
const RECEIVED_LISTENERS = new Set();
|
|
95
|
+
const RESPONSE_LISTENERS = new Set();
|
|
96
|
+
const TOKEN_LISTENERS = new Set();
|
|
97
|
+
let _handler = null;
|
|
98
|
+
let _drainInterval = null;
|
|
99
|
+
let _lastDeviceToken = null;
|
|
100
|
+
// ── Permissions ───────────────────────────────────────────────────
|
|
101
|
+
/**
|
|
102
|
+
* Returns the OS-reported notification permission status without
|
|
103
|
+
* prompting. Mirrors `Notifications.getPermissionsAsync()`.
|
|
104
|
+
*/
|
|
105
|
+
export async function getPermissionsAsync() {
|
|
106
|
+
const native = await pushGetStatus();
|
|
107
|
+
return coercePermissionStatus(native);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Triggers the OS permission prompt the first time, otherwise
|
|
111
|
+
* returns the cached decision. Mirrors
|
|
112
|
+
* `Notifications.requestPermissionsAsync()`.
|
|
113
|
+
*
|
|
114
|
+
* `options.ios.allowProvisional` is accepted for API parity but
|
|
115
|
+
* silently falls back to a regular authorization request — the
|
|
116
|
+
* underlying native module doesn't surface the provisional flag
|
|
117
|
+
* separately yet. Follow up: thread the `provisional` option
|
|
118
|
+
* through `SentoriPushNotifications.requestPermission(...)` on iOS.
|
|
119
|
+
*/
|
|
120
|
+
export async function requestPermissionsAsync(options) {
|
|
121
|
+
if (options?.ios?.allowProvisional) {
|
|
122
|
+
logger.debug('push.expo-compat', 'allowProvisional requested — falls back to regular authorization in this release');
|
|
123
|
+
}
|
|
124
|
+
const native = await pushRequestPermission();
|
|
125
|
+
return coercePermissionStatus(native);
|
|
126
|
+
}
|
|
127
|
+
function coercePermissionStatus(native) {
|
|
128
|
+
const grantedStatuses = new Set(['granted', 'provisional', 'ephemeral']);
|
|
129
|
+
let status;
|
|
130
|
+
if (native === 'granted' || native === 'provisional' || native === 'ephemeral') {
|
|
131
|
+
status = 'granted';
|
|
132
|
+
}
|
|
133
|
+
else if (native === 'denied') {
|
|
134
|
+
status = 'denied';
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
status = 'undetermined';
|
|
138
|
+
}
|
|
139
|
+
const granted = native != null && grantedStatuses.has(native);
|
|
140
|
+
const iosStatus = native === 'granted'
|
|
141
|
+
? IosAuthorizationStatus.AUTHORIZED
|
|
142
|
+
: native === 'denied'
|
|
143
|
+
? IosAuthorizationStatus.DENIED
|
|
144
|
+
: native === 'provisional'
|
|
145
|
+
? IosAuthorizationStatus.PROVISIONAL
|
|
146
|
+
: native === 'ephemeral'
|
|
147
|
+
? IosAuthorizationStatus.EPHEMERAL
|
|
148
|
+
: IosAuthorizationStatus.NOT_DETERMINED;
|
|
149
|
+
return {
|
|
150
|
+
status,
|
|
151
|
+
granted,
|
|
152
|
+
expires: 'never',
|
|
153
|
+
canAskAgain: status === 'undetermined',
|
|
154
|
+
ios: {
|
|
155
|
+
status: iosStatus,
|
|
156
|
+
allowsAlert: granted,
|
|
157
|
+
allowsBadge: granted,
|
|
158
|
+
allowsSound: granted,
|
|
159
|
+
},
|
|
160
|
+
android: { status },
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
// ── Token retrieval ───────────────────────────────────────────────
|
|
164
|
+
const TOKEN_TIMEOUT_MS = 8000;
|
|
165
|
+
const TOKEN_POLL_INTERVAL_MS = 200;
|
|
166
|
+
/**
|
|
167
|
+
* Returns the raw APNs (iOS) or FCM (Android) token. Mirrors
|
|
168
|
+
* `Notifications.getDevicePushTokenAsync()` — for customers who
|
|
169
|
+
* already wire the device token to a custom backend, the migration
|
|
170
|
+
* is literally a one-line import change.
|
|
171
|
+
*/
|
|
172
|
+
export async function getDevicePushTokenAsync() {
|
|
173
|
+
await pushRegister();
|
|
174
|
+
return waitForDeviceToken();
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* `expo-notifications`'s `getExpoPushTokenAsync` returns a
|
|
178
|
+
* `ExponentPushToken[...]` string that Expo's exp.host service uses
|
|
179
|
+
* to route to APNs / FCM. We don't run that service — `data` here
|
|
180
|
+
* is the raw native token wrapped in the same envelope shape so
|
|
181
|
+
* destructuring code keeps compiling.
|
|
182
|
+
*
|
|
183
|
+
* **Server-side change required:** instead of POSTing to
|
|
184
|
+
* `https://exp.host/--/api/v2/push/send`, your backend should POST
|
|
185
|
+
* to Sentori's ingest. See the migration recipe.
|
|
186
|
+
*/
|
|
187
|
+
export async function getExpoPushTokenAsync(_options) {
|
|
188
|
+
const tok = await getDevicePushTokenAsync();
|
|
189
|
+
return { type: 'expo', data: tok.data };
|
|
190
|
+
}
|
|
191
|
+
async function waitForDeviceToken() {
|
|
192
|
+
const start = Date.now();
|
|
193
|
+
while (Date.now() - start < TOKEN_TIMEOUT_MS) {
|
|
194
|
+
const state = await pushDrainState();
|
|
195
|
+
if (state.error) {
|
|
196
|
+
throw new Error(`Push registration failed: ${state.error}`);
|
|
197
|
+
}
|
|
198
|
+
if (state.token) {
|
|
199
|
+
// Forward the buffered events to anyone who's already
|
|
200
|
+
// subscribed — they would otherwise be lost since the drain
|
|
201
|
+
// call here consumed them.
|
|
202
|
+
forwardBufferedEvents(state.notifications, state.taps);
|
|
203
|
+
const tok = {
|
|
204
|
+
type: platformOs(),
|
|
205
|
+
data: state.token,
|
|
206
|
+
};
|
|
207
|
+
_lastDeviceToken = tok;
|
|
208
|
+
for (const cb of TOKEN_LISTENERS) {
|
|
209
|
+
try {
|
|
210
|
+
cb(tok);
|
|
211
|
+
}
|
|
212
|
+
catch (e) {
|
|
213
|
+
logger.warn('push.expo-compat', 'pushTokenListener threw', e);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
return tok;
|
|
217
|
+
}
|
|
218
|
+
forwardBufferedEvents(state.notifications, state.taps);
|
|
219
|
+
await sleep(TOKEN_POLL_INTERVAL_MS);
|
|
220
|
+
}
|
|
221
|
+
throw new Error(`Push token not received within ${TOKEN_TIMEOUT_MS} ms`);
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Mirrors `Notifications.unregisterForNotificationsAsync()`. Calls
|
|
225
|
+
* the native unregister + stops the drain loop.
|
|
226
|
+
*/
|
|
227
|
+
export async function unregisterForNotificationsAsync() {
|
|
228
|
+
pushUnregister();
|
|
229
|
+
_lastDeviceToken = null;
|
|
230
|
+
stopDrainLoop();
|
|
231
|
+
}
|
|
232
|
+
// ── Listeners ─────────────────────────────────────────────────────
|
|
233
|
+
/**
|
|
234
|
+
* Foreground notification callback. Mirrors
|
|
235
|
+
* `Notifications.addNotificationReceivedListener()`. The first
|
|
236
|
+
* subscription starts a 1 Hz native-buffer drain loop; the last
|
|
237
|
+
* unsubscribe stops it.
|
|
238
|
+
*/
|
|
239
|
+
export function addNotificationReceivedListener(listener) {
|
|
240
|
+
RECEIVED_LISTENERS.add(listener);
|
|
241
|
+
ensureDrainLoop();
|
|
242
|
+
return {
|
|
243
|
+
remove: () => {
|
|
244
|
+
RECEIVED_LISTENERS.delete(listener);
|
|
245
|
+
maybeStopDrainLoop();
|
|
246
|
+
},
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* User-tapped-a-notification callback. Mirrors
|
|
251
|
+
* `Notifications.addNotificationResponseReceivedListener()`.
|
|
252
|
+
*/
|
|
253
|
+
export function addNotificationResponseReceivedListener(listener) {
|
|
254
|
+
RESPONSE_LISTENERS.add(listener);
|
|
255
|
+
ensureDrainLoop();
|
|
256
|
+
return {
|
|
257
|
+
remove: () => {
|
|
258
|
+
RESPONSE_LISTENERS.delete(listener);
|
|
259
|
+
maybeStopDrainLoop();
|
|
260
|
+
},
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Token-rotation callback. Mirrors
|
|
265
|
+
* `Notifications.addPushTokenListener()`. Fires once per new token —
|
|
266
|
+
* the native side detects rotation and pushes into the buffer; the
|
|
267
|
+
* shared drain loop forwards it here.
|
|
268
|
+
*/
|
|
269
|
+
export function addPushTokenListener(listener) {
|
|
270
|
+
TOKEN_LISTENERS.add(listener);
|
|
271
|
+
return {
|
|
272
|
+
remove: () => {
|
|
273
|
+
TOKEN_LISTENERS.delete(listener);
|
|
274
|
+
},
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Presentation behaviour hook. Mirrors
|
|
279
|
+
* `Notifications.setNotificationHandler()`. The handler runs once
|
|
280
|
+
* per foreground notification before the listener fan-out; it can
|
|
281
|
+
* suppress the banner/sound/badge.
|
|
282
|
+
*
|
|
283
|
+
* Today the SDK always shows the system banner because that's the
|
|
284
|
+
* native delegate's hard-coded behaviour. The handler's
|
|
285
|
+
* `handleNotification` is still invoked so customer logic that
|
|
286
|
+
* inspects the notification can run, but the returned
|
|
287
|
+
* `NotificationBehavior` flags don't override presentation yet.
|
|
288
|
+
* Follow up: pipe these flags through
|
|
289
|
+
* `SentoriPushNotifications` so willPresent can return what the
|
|
290
|
+
* handler asked for.
|
|
291
|
+
*/
|
|
292
|
+
export function setNotificationHandler(handler) {
|
|
293
|
+
_handler = handler;
|
|
294
|
+
}
|
|
295
|
+
export function scheduleNotificationAsync(_args) {
|
|
296
|
+
throw mkUnsupported('scheduleNotificationAsync', 'local-scheduling');
|
|
297
|
+
}
|
|
298
|
+
export function cancelScheduledNotificationAsync(_id) {
|
|
299
|
+
throw mkUnsupported('cancelScheduledNotificationAsync', 'local-scheduling');
|
|
300
|
+
}
|
|
301
|
+
export function cancelAllScheduledNotificationsAsync() {
|
|
302
|
+
throw mkUnsupported('cancelAllScheduledNotificationsAsync', 'local-scheduling');
|
|
303
|
+
}
|
|
304
|
+
export function getAllScheduledNotificationsAsync() {
|
|
305
|
+
throw mkUnsupported('getAllScheduledNotificationsAsync', 'local-scheduling');
|
|
306
|
+
}
|
|
307
|
+
export function getNextTriggerDateAsync(_trigger) {
|
|
308
|
+
throw mkUnsupported('getNextTriggerDateAsync', 'local-scheduling');
|
|
309
|
+
}
|
|
310
|
+
export function setBadgeCountAsync(_count, _options) {
|
|
311
|
+
throw mkUnsupported('setBadgeCountAsync', 'badge');
|
|
312
|
+
}
|
|
313
|
+
export function getBadgeCountAsync() {
|
|
314
|
+
throw mkUnsupported('getBadgeCountAsync', 'badge');
|
|
315
|
+
}
|
|
316
|
+
export function setNotificationChannelAsync(_id, _channel) {
|
|
317
|
+
throw mkUnsupported('setNotificationChannelAsync', 'android-channels');
|
|
318
|
+
}
|
|
319
|
+
export function getNotificationChannelAsync(_id) {
|
|
320
|
+
throw mkUnsupported('getNotificationChannelAsync', 'android-channels');
|
|
321
|
+
}
|
|
322
|
+
export function getNotificationChannelsAsync() {
|
|
323
|
+
throw mkUnsupported('getNotificationChannelsAsync', 'android-channels');
|
|
324
|
+
}
|
|
325
|
+
export function deleteNotificationChannelAsync(_id) {
|
|
326
|
+
throw mkUnsupported('deleteNotificationChannelAsync', 'android-channels');
|
|
327
|
+
}
|
|
328
|
+
export function setNotificationChannelGroupAsync(_id, _group) {
|
|
329
|
+
throw mkUnsupported('setNotificationChannelGroupAsync', 'android-channels');
|
|
330
|
+
}
|
|
331
|
+
export function setNotificationCategoryAsync(_id, _actions, _options) {
|
|
332
|
+
throw mkUnsupported('setNotificationCategoryAsync', 'categories');
|
|
333
|
+
}
|
|
334
|
+
export function getNotificationCategoriesAsync() {
|
|
335
|
+
throw mkUnsupported('getNotificationCategoriesAsync', 'categories');
|
|
336
|
+
}
|
|
337
|
+
export function deleteNotificationCategoryAsync(_id) {
|
|
338
|
+
throw mkUnsupported('deleteNotificationCategoryAsync', 'categories');
|
|
339
|
+
}
|
|
340
|
+
export function useLastNotificationResponse() {
|
|
341
|
+
// Hook contract: keep it a no-throw hook so the host's React tree
|
|
342
|
+
// still mounts. Returns null. Customers who depend on this for
|
|
343
|
+
// deep-link-from-cold-start should fall back to subscribing on
|
|
344
|
+
// mount and relying on the early-drain.
|
|
345
|
+
return null;
|
|
346
|
+
}
|
|
347
|
+
export function getLastNotificationResponseAsync() {
|
|
348
|
+
return Promise.resolve(null);
|
|
349
|
+
}
|
|
350
|
+
export function clearLastNotificationResponseAsync() {
|
|
351
|
+
return Promise.resolve();
|
|
352
|
+
}
|
|
353
|
+
export function subscribeToTopicAsync(_topic) {
|
|
354
|
+
throw mkUnsupported('subscribeToTopicAsync', 'topics');
|
|
355
|
+
}
|
|
356
|
+
export function unsubscribeFromTopicAsync(_topic) {
|
|
357
|
+
throw mkUnsupported('unsubscribeFromTopicAsync', 'topics');
|
|
358
|
+
}
|
|
359
|
+
export function registerTaskAsync(_taskName) {
|
|
360
|
+
throw mkUnsupported('registerTaskAsync', 'background-task');
|
|
361
|
+
}
|
|
362
|
+
export function unregisterTaskAsync(_taskName) {
|
|
363
|
+
throw mkUnsupported('unregisterTaskAsync', 'background-task');
|
|
364
|
+
}
|
|
365
|
+
export function dismissNotificationAsync(_id) {
|
|
366
|
+
throw mkUnsupported('dismissNotificationAsync', 'dismissal');
|
|
367
|
+
}
|
|
368
|
+
export function dismissAllNotificationsAsync() {
|
|
369
|
+
throw mkUnsupported('dismissAllNotificationsAsync', 'dismissal');
|
|
370
|
+
}
|
|
371
|
+
export function getPresentedNotificationsAsync() {
|
|
372
|
+
throw mkUnsupported('getPresentedNotificationsAsync', 'dismissal');
|
|
373
|
+
}
|
|
374
|
+
function mkUnsupported(name, slug) {
|
|
375
|
+
return new Error(`${name} is not implemented in @goliapkg/sentori-react-native/expo-compat yet. ` +
|
|
376
|
+
`See the migration recipe at /docs/recipes/migrate-from-expo-notifications/#${slug} ` +
|
|
377
|
+
`for the workaround, or wait for a follow-up minor release where the native module ` +
|
|
378
|
+
`will surface the underlying capability.`);
|
|
379
|
+
}
|
|
380
|
+
// ── Drain-loop plumbing — pumps native buffer into listeners ──────
|
|
381
|
+
const DRAIN_INTERVAL_MS = 1000;
|
|
382
|
+
function ensureDrainLoop() {
|
|
383
|
+
if (_drainInterval)
|
|
384
|
+
return;
|
|
385
|
+
_drainInterval = setInterval(() => {
|
|
386
|
+
void pumpOnce();
|
|
387
|
+
}, DRAIN_INTERVAL_MS);
|
|
388
|
+
}
|
|
389
|
+
function maybeStopDrainLoop() {
|
|
390
|
+
if (RECEIVED_LISTENERS.size > 0)
|
|
391
|
+
return;
|
|
392
|
+
if (RESPONSE_LISTENERS.size > 0)
|
|
393
|
+
return;
|
|
394
|
+
stopDrainLoop();
|
|
395
|
+
}
|
|
396
|
+
function stopDrainLoop() {
|
|
397
|
+
if (_drainInterval) {
|
|
398
|
+
clearInterval(_drainInterval);
|
|
399
|
+
_drainInterval = null;
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
async function pumpOnce() {
|
|
403
|
+
const state = await pushDrainState();
|
|
404
|
+
forwardBufferedEvents(state.notifications, state.taps);
|
|
405
|
+
}
|
|
406
|
+
function forwardBufferedEvents(rawNotifications, rawTaps) {
|
|
407
|
+
for (const raw of rawNotifications) {
|
|
408
|
+
const notification = coerceNotification(raw);
|
|
409
|
+
// Run the optional handler before fan-out (best-effort — we
|
|
410
|
+
// don't currently use its returned NotificationBehavior to
|
|
411
|
+
// gate native presentation).
|
|
412
|
+
if (_handler) {
|
|
413
|
+
try {
|
|
414
|
+
void _handler.handleNotification(notification).catch((err) => {
|
|
415
|
+
logger.warn('push.expo-compat', 'handleNotification threw', err);
|
|
416
|
+
});
|
|
417
|
+
}
|
|
418
|
+
catch (e) {
|
|
419
|
+
logger.warn('push.expo-compat', 'setNotificationHandler.handleNotification threw', e);
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
for (const cb of RECEIVED_LISTENERS) {
|
|
423
|
+
try {
|
|
424
|
+
cb(notification);
|
|
425
|
+
}
|
|
426
|
+
catch (e) {
|
|
427
|
+
logger.warn('push.expo-compat', 'notification listener threw', e);
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
for (const raw of rawTaps) {
|
|
432
|
+
const notification = coerceNotification(raw);
|
|
433
|
+
const response = {
|
|
434
|
+
actionIdentifier: DEFAULT_ACTION_IDENTIFIER,
|
|
435
|
+
notification,
|
|
436
|
+
};
|
|
437
|
+
for (const cb of RESPONSE_LISTENERS) {
|
|
438
|
+
try {
|
|
439
|
+
cb(response);
|
|
440
|
+
}
|
|
441
|
+
catch (e) {
|
|
442
|
+
logger.warn('push.expo-compat', 'response listener threw', e);
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
function coerceNotification(raw) {
|
|
448
|
+
const userInfo = raw.userInfo ?? {};
|
|
449
|
+
const id = raw.id ?? '';
|
|
450
|
+
const date = typeof raw.receivedAt === 'number'
|
|
451
|
+
? Math.round(raw.receivedAt * 1000)
|
|
452
|
+
: Date.now();
|
|
453
|
+
return {
|
|
454
|
+
date,
|
|
455
|
+
request: {
|
|
456
|
+
identifier: id,
|
|
457
|
+
content: {
|
|
458
|
+
title: raw.title ?? null,
|
|
459
|
+
subtitle: raw.subtitle ?? null,
|
|
460
|
+
body: raw.body ?? null,
|
|
461
|
+
data: userInfo,
|
|
462
|
+
categoryIdentifier: raw.category ?? null,
|
|
463
|
+
},
|
|
464
|
+
trigger: null,
|
|
465
|
+
},
|
|
466
|
+
};
|
|
467
|
+
}
|
|
468
|
+
// ── Tiny platform helpers ─────────────────────────────────────────
|
|
469
|
+
function platformOs() {
|
|
470
|
+
try {
|
|
471
|
+
const rn = require('react-native');
|
|
472
|
+
const os = rn.Platform?.OS;
|
|
473
|
+
if (os === 'ios' || os === 'android')
|
|
474
|
+
return os;
|
|
475
|
+
}
|
|
476
|
+
catch {
|
|
477
|
+
/* unavailable */
|
|
478
|
+
}
|
|
479
|
+
return 'ios';
|
|
480
|
+
}
|
|
481
|
+
function sleep(ms) {
|
|
482
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
483
|
+
}
|
|
484
|
+
// ── Test-only helpers ─────────────────────────────────────────────
|
|
485
|
+
/** Returns the last device token returned by getDevicePushTokenAsync.
|
|
486
|
+
* Used in tests + the migration recipe. */
|
|
487
|
+
export function __getLastDeviceTokenForTests() {
|
|
488
|
+
return _lastDeviceToken;
|
|
489
|
+
}
|
|
490
|
+
/** Resets module-scoped state. Test-only — do not call from
|
|
491
|
+
* production code. */
|
|
492
|
+
export function __resetForTests() {
|
|
493
|
+
RECEIVED_LISTENERS.clear();
|
|
494
|
+
RESPONSE_LISTENERS.clear();
|
|
495
|
+
TOKEN_LISTENERS.clear();
|
|
496
|
+
_handler = null;
|
|
497
|
+
_lastDeviceToken = null;
|
|
498
|
+
stopDrainLoop();
|
|
499
|
+
}
|
|
500
|
+
//# sourceMappingURL=expo-compat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expo-compat.js","sourceRoot":"","sources":["../src/expo-compat.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,8DAA8D;AAC9D,EAAE;AACF,0DAA0D;AAC1D,kFAAkF;AAClF,EAAE;AACF,4DAA4D;AAC5D,qEAAqE;AACrE,kEAAkE;AAClE,mCAAmC;AACnC,EAAE;AACF,kEAAkE;AAClE,EAAE;AACF,oEAAoE;AACpE,sEAAsE;AACtE,+EAA+E;AAC/E,2EAA2E;AAC3E,wEAAwE;AACxE,0EAA0E;AAC1E,4EAA4E;AAC5E,2EAA2E;AAC3E,4DAA4D;AAC5D,sEAAsE;AACtE,sEAAsE;AACtE,mEAAmE;AACnE,2EAA2E;AAC3E,EAAE;AACF,gEAAgE;AAChE,mEAAmE;AACnE,EAAE;AACF,mEAAmE;AACnE,4CAA4C;AAC5C,yDAAyD;AACzD,uDAAuD;AACvD,mEAAmE;AACnE,sDAAsD;AACtD,wCAAwC;AACxC,8DAA8D;AAC9D,EAAE;AACF,oEAAoE;AACpE,kEAAkE;AAClE,mEAAmE;AACnE,sBAAsB;AAEtB,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAE/C,OAAO,EACL,cAAc,EACd,aAAa,EACb,YAAY,EACZ,qBAAqB,EACrB,cAAc,GACf,MAAM,UAAU,CAAA;AA6GjB,qEAAqE;AAErE,MAAM,CAAC,MAAM,yBAAyB,GAAG,4CAA4C,CAAA;AAErF,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,IAAI,EAAE,CAAC;IACP,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,OAAO,EAAE,CAAC;IACV,IAAI,EAAE,CAAC;IACP,GAAG,EAAE,CAAC;CACE,CAAA;AAGV,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,KAAK;CACF,CAAA;AAIV,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC3C,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,CAAC;IACV,MAAM,EAAE,CAAC,CAAC;CACF,CAAA;AAEV,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,cAAc,EAAE,CAAC;IACjB,MAAM,EAAE,CAAC;IACT,UAAU,EAAE,CAAC;IACb,WAAW,EAAE,CAAC;IACd,SAAS,EAAE,CAAC;CACJ,CAAA;AAIV,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,CAAC;IACP,MAAM,EAAE,CAAC;IACT,KAAK,EAAE,CAAC;CACA,CAAA;AAEV,kEAAkE;AAClE,+DAA+D;AAC/D,6DAA6D;AAC7D,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,aAAa,EAAE,cAAc;IAC7B,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,UAAU;IACpB,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,QAAQ;CACR,CAAA;AAEV,qEAAqE;AAErE,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAA6B,CAAA;AAC/D,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAqC,CAAA;AACvE,MAAM,eAAe,GAAG,IAAI,GAAG,EAAqB,CAAA;AAEpD,IAAI,QAAQ,GAA+B,IAAI,CAAA;AAC/C,IAAI,cAAc,GAA0C,IAAI,CAAA;AAChE,IAAI,gBAAgB,GAA2B,IAAI,CAAA;AAEnD,qEAAqE;AAErE;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACvC,MAAM,MAAM,GAAG,MAAM,aAAa,EAAE,CAAA;IACpC,OAAO,sBAAsB,CAAC,MAAM,CAAC,CAAA;AACvC,CAAC;AAgBD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,OAAmC;IAEnC,IAAI,OAAO,EAAE,GAAG,EAAE,gBAAgB,EAAE,CAAC;QACnC,MAAM,CAAC,KAAK,CACV,kBAAkB,EAClB,kFAAkF,CACnF,CAAA;IACH,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,qBAAqB,EAAE,CAAA;IAC5C,OAAO,sBAAsB,CAAC,MAAM,CAAC,CAAA;AACvC,CAAC;AAED,SAAS,sBAAsB,CAC7B,MAAqB;IAErB,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAA;IACxE,IAAI,MAAwB,CAAA;IAC5B,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,aAAa,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;QAC/E,MAAM,GAAG,SAAS,CAAA;IACpB,CAAC;SAAM,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,GAAG,QAAQ,CAAA;IACnB,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,cAAc,CAAA;IACzB,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,IAAI,IAAI,IAAI,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAC7D,MAAM,SAAS,GACb,MAAM,KAAK,SAAS;QAClB,CAAC,CAAC,sBAAsB,CAAC,UAAU;QACnC,CAAC,CAAC,MAAM,KAAK,QAAQ;YACnB,CAAC,CAAC,sBAAsB,CAAC,MAAM;YAC/B,CAAC,CAAC,MAAM,KAAK,aAAa;gBACxB,CAAC,CAAC,sBAAsB,CAAC,WAAW;gBACpC,CAAC,CAAC,MAAM,KAAK,WAAW;oBACtB,CAAC,CAAC,sBAAsB,CAAC,SAAS;oBAClC,CAAC,CAAC,sBAAsB,CAAC,cAAc,CAAA;IACjD,OAAO;QACL,MAAM;QACN,OAAO;QACP,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,MAAM,KAAK,cAAc;QACtC,GAAG,EAAE;YACH,MAAM,EAAE,SAAS;YACjB,WAAW,EAAE,OAAO;YACpB,WAAW,EAAE,OAAO;YACpB,WAAW,EAAE,OAAO;SACrB;QACD,OAAO,EAAE,EAAE,MAAM,EAAE;KACpB,CAAA;AACH,CAAC;AAED,qEAAqE;AAErE,MAAM,gBAAgB,GAAG,IAAI,CAAA;AAC7B,MAAM,sBAAsB,GAAG,GAAG,CAAA;AAElC;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB;IAC3C,MAAM,YAAY,EAAE,CAAA;IACpB,OAAO,kBAAkB,EAAE,CAAA;AAC7B,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,QAAwD;IAExD,MAAM,GAAG,GAAG,MAAM,uBAAuB,EAAE,CAAA;IAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAA;AACzC,CAAC;AAED,KAAK,UAAU,kBAAkB;IAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IACxB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,gBAAgB,EAAE,CAAC;QAC7C,MAAM,KAAK,GAAG,MAAM,cAAc,EAAE,CAAA;QACpC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,6BAA6B,KAAK,CAAC,KAAK,EAAE,CAAC,CAAA;QAC7D,CAAC;QACD,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,sDAAsD;YACtD,4DAA4D;YAC5D,2BAA2B;YAC3B,qBAAqB,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;YACtD,MAAM,GAAG,GAAoB;gBAC3B,IAAI,EAAE,UAAU,EAAE;gBAClB,IAAI,EAAE,KAAK,CAAC,KAAK;aAClB,CAAA;YACD,gBAAgB,GAAG,GAAG,CAAA;YACtB,KAAK,MAAM,EAAE,IAAI,eAAe,EAAE,CAAC;gBACjC,IAAI,CAAC;oBACH,EAAE,CAAC,GAAG,CAAC,CAAA;gBACT,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,yBAAyB,EAAE,CAAC,CAAC,CAAA;gBAC/D,CAAC;YACH,CAAC;YACD,OAAO,GAAG,CAAA;QACZ,CAAC;QACD,qBAAqB,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;QACtD,MAAM,KAAK,CAAC,sBAAsB,CAAC,CAAA;IACrC,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,kCAAkC,gBAAgB,KAAK,CAAC,CAAA;AAC1E,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,+BAA+B;IACnD,cAAc,EAAE,CAAA;IAChB,gBAAgB,GAAG,IAAI,CAAA;IACvB,aAAa,EAAE,CAAA;AACjB,CAAC;AAED,qEAAqE;AAErE;;;;;GAKG;AACH,MAAM,UAAU,+BAA+B,CAC7C,QAA8C;IAE9C,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAChC,eAAe,EAAE,CAAA;IACjB,OAAO;QACL,MAAM,EAAE,GAAG,EAAE;YACX,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;YACnC,kBAAkB,EAAE,CAAA;QACtB,CAAC;KACF,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uCAAuC,CACrD,QAAkD;IAElD,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAChC,eAAe,EAAE,CAAA;IACjB,OAAO;QACL,MAAM,EAAE,GAAG,EAAE;YACX,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;YACnC,kBAAkB,EAAE,CAAA;QACtB,CAAC;KACF,CAAA;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAA2B;IAC9D,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAC7B,OAAO;QACL,MAAM,EAAE,GAAG,EAAE;YACX,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAClC,CAAC;KACF,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAmC;IACxE,QAAQ,GAAG,OAAO,CAAA;AACpB,CAAC;AAKD,MAAM,UAAU,yBAAyB,CAAC,KAAmB;IAC3D,MAAM,aAAa,CAAC,2BAA2B,EAAE,kBAAkB,CAAC,CAAA;AACtE,CAAC;AACD,MAAM,UAAU,gCAAgC,CAAC,GAAW;IAC1D,MAAM,aAAa,CAAC,kCAAkC,EAAE,kBAAkB,CAAC,CAAA;AAC7E,CAAC;AACD,MAAM,UAAU,oCAAoC;IAClD,MAAM,aAAa,CAAC,sCAAsC,EAAE,kBAAkB,CAAC,CAAA;AACjF,CAAC;AACD,MAAM,UAAU,iCAAiC;IAC/C,MAAM,aAAa,CAAC,mCAAmC,EAAE,kBAAkB,CAAC,CAAA;AAC9E,CAAC;AACD,MAAM,UAAU,uBAAuB,CAAC,QAAiB;IACvD,MAAM,aAAa,CAAC,yBAAyB,EAAE,kBAAkB,CAAC,CAAA;AACpE,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAc,EAAE,QAAkB;IACnE,MAAM,aAAa,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAA;AACpD,CAAC;AACD,MAAM,UAAU,kBAAkB;IAChC,MAAM,aAAa,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAA;AACpD,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,GAAW,EAAE,QAAiB;IACxE,MAAM,aAAa,CAAC,6BAA6B,EAAE,kBAAkB,CAAC,CAAA;AACxE,CAAC;AACD,MAAM,UAAU,2BAA2B,CAAC,GAAW;IACrD,MAAM,aAAa,CAAC,6BAA6B,EAAE,kBAAkB,CAAC,CAAA;AACxE,CAAC;AACD,MAAM,UAAU,4BAA4B;IAC1C,MAAM,aAAa,CAAC,8BAA8B,EAAE,kBAAkB,CAAC,CAAA;AACzE,CAAC;AACD,MAAM,UAAU,8BAA8B,CAAC,GAAW;IACxD,MAAM,aAAa,CAAC,gCAAgC,EAAE,kBAAkB,CAAC,CAAA;AAC3E,CAAC;AACD,MAAM,UAAU,gCAAgC,CAAC,GAAW,EAAE,MAAe;IAC3E,MAAM,aAAa,CAAC,kCAAkC,EAAE,kBAAkB,CAAC,CAAA;AAC7E,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,GAAW,EACX,QAAiB,EACjB,QAAkB;IAElB,MAAM,aAAa,CAAC,8BAA8B,EAAE,YAAY,CAAC,CAAA;AACnE,CAAC;AACD,MAAM,UAAU,8BAA8B;IAC5C,MAAM,aAAa,CAAC,gCAAgC,EAAE,YAAY,CAAC,CAAA;AACrE,CAAC;AACD,MAAM,UAAU,+BAA+B,CAAC,GAAW;IACzD,MAAM,aAAa,CAAC,iCAAiC,EAAE,YAAY,CAAC,CAAA;AACtE,CAAC;AAED,MAAM,UAAU,2BAA2B;IACzC,kEAAkE;IAClE,+DAA+D;IAC/D,+DAA+D;IAC/D,wCAAwC;IACxC,OAAO,IAAI,CAAA;AACb,CAAC;AACD,MAAM,UAAU,gCAAgC;IAC9C,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AAC9B,CAAC;AACD,MAAM,UAAU,kCAAkC;IAChD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;AAC1B,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAc;IAClD,MAAM,aAAa,CAAC,uBAAuB,EAAE,QAAQ,CAAC,CAAA;AACxD,CAAC;AACD,MAAM,UAAU,yBAAyB,CAAC,MAAc;IACtD,MAAM,aAAa,CAAC,2BAA2B,EAAE,QAAQ,CAAC,CAAA;AAC5D,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,SAAiB;IACjD,MAAM,aAAa,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAA;AAC7D,CAAC;AACD,MAAM,UAAU,mBAAmB,CAAC,SAAiB;IACnD,MAAM,aAAa,CAAC,qBAAqB,EAAE,iBAAiB,CAAC,CAAA;AAC/D,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,GAAW;IAClD,MAAM,aAAa,CAAC,0BAA0B,EAAE,WAAW,CAAC,CAAA;AAC9D,CAAC;AACD,MAAM,UAAU,4BAA4B;IAC1C,MAAM,aAAa,CAAC,8BAA8B,EAAE,WAAW,CAAC,CAAA;AAClE,CAAC;AACD,MAAM,UAAU,8BAA8B;IAC5C,MAAM,aAAa,CAAC,gCAAgC,EAAE,WAAW,CAAC,CAAA;AACpE,CAAC;AAED,SAAS,aAAa,CAAC,IAAY,EAAE,IAAY;IAC/C,OAAO,IAAI,KAAK,CACd,GAAG,IAAI,yEAAyE;QAC9E,8EAA8E,IAAI,GAAG;QACrF,oFAAoF;QACpF,yCAAyC,CAC5C,CAAA;AACH,CAAC;AAED,qEAAqE;AAErE,MAAM,iBAAiB,GAAG,IAAI,CAAA;AAE9B,SAAS,eAAe;IACtB,IAAI,cAAc;QAAE,OAAM;IAC1B,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE;QAChC,KAAK,QAAQ,EAAE,CAAA;IACjB,CAAC,EAAE,iBAAiB,CAAC,CAAA;AACvB,CAAC;AAED,SAAS,kBAAkB;IACzB,IAAI,kBAAkB,CAAC,IAAI,GAAG,CAAC;QAAE,OAAM;IACvC,IAAI,kBAAkB,CAAC,IAAI,GAAG,CAAC;QAAE,OAAM;IACvC,aAAa,EAAE,CAAA;AACjB,CAAC;AAED,SAAS,aAAa;IACpB,IAAI,cAAc,EAAE,CAAC;QACnB,aAAa,CAAC,cAAc,CAAC,CAAA;QAC7B,cAAc,GAAG,IAAI,CAAA;IACvB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,QAAQ;IACrB,MAAM,KAAK,GAAG,MAAM,cAAc,EAAE,CAAA;IACpC,qBAAqB,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;AACxD,CAAC;AAED,SAAS,qBAAqB,CAC5B,gBAAgD,EAChD,OAAuC;IAEvC,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACnC,MAAM,YAAY,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAA;QAC5C,4DAA4D;QAC5D,2DAA2D;QAC3D,6BAA6B;QAC7B,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC;gBACH,KAAK,QAAQ,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;oBACpE,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,0BAA0B,EAAE,GAAG,CAAC,CAAA;gBAClE,CAAC,CAAC,CAAA;YACJ,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,iDAAiD,EAAE,CAAC,CAAC,CAAA;YACvF,CAAC;QACH,CAAC;QACD,KAAK,MAAM,EAAE,IAAI,kBAAkB,EAAE,CAAC;YACpC,IAAI,CAAC;gBACH,EAAE,CAAC,YAAY,CAAC,CAAA;YAClB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,6BAA6B,EAAE,CAAC,CAAC,CAAA;YACnE,CAAC;QACH,CAAC;IACH,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,MAAM,YAAY,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAA;QAC5C,MAAM,QAAQ,GAAyB;YACrC,gBAAgB,EAAE,yBAAyB;YAC3C,YAAY;SACb,CAAA;QACD,KAAK,MAAM,EAAE,IAAI,kBAAkB,EAAE,CAAC;YACpC,IAAI,CAAC;gBACH,EAAE,CAAC,QAAQ,CAAC,CAAA;YACd,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,yBAAyB,EAAE,CAAC,CAAC,CAAA;YAC/D,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,GAA4B;IACtD,MAAM,QAAQ,GAAI,GAAG,CAAC,QAAoC,IAAI,EAAE,CAAA;IAChE,MAAM,EAAE,GAAI,GAAG,CAAC,EAAyB,IAAI,EAAE,CAAA;IAC/C,MAAM,IAAI,GACR,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ;QAChC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC;QACnC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAA;IAChB,OAAO;QACL,IAAI;QACJ,OAAO,EAAE;YACP,UAAU,EAAE,EAAE;YACd,OAAO,EAAE;gBACP,KAAK,EAAG,GAAG,CAAC,KAA4B,IAAI,IAAI;gBAChD,QAAQ,EAAG,GAAG,CAAC,QAA+B,IAAI,IAAI;gBACtD,IAAI,EAAG,GAAG,CAAC,IAA2B,IAAI,IAAI;gBAC9C,IAAI,EAAE,QAAQ;gBACd,kBAAkB,EAAG,GAAG,CAAC,QAA+B,IAAI,IAAI;aACjE;YACD,OAAO,EAAE,IAAI;SACd;KACF,CAAA;AACH,CAAC;AAED,qEAAqE;AAErE,SAAS,UAAU;IACjB,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,OAAO,CAAC,cAAc,CAAmC,CAAA;QACpE,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAA;QAC1B,IAAI,EAAE,KAAK,KAAK,IAAI,EAAE,KAAK,SAAS;YAAE,OAAO,EAAE,CAAA;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,iBAAiB;IACnB,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAA;AAC1D,CAAC;AAED,qEAAqE;AAErE;4CAC4C;AAC5C,MAAM,UAAU,4BAA4B;IAC1C,OAAO,gBAAgB,CAAA;AACzB,CAAC;AAED;uBACuB;AACvB,MAAM,UAAU,eAAe;IAC7B,kBAAkB,CAAC,KAAK,EAAE,CAAA;IAC1B,kBAAkB,CAAC,KAAK,EAAE,CAAA;IAC1B,eAAe,CAAC,KAAK,EAAE,CAAA;IACvB,QAAQ,GAAG,IAAI,CAAA;IACf,gBAAgB,GAAG,IAAI,CAAA;IACvB,aAAa,EAAE,CAAA;AACjB,CAAC"}
|
package/lib/index.d.ts
CHANGED
|
@@ -76,6 +76,13 @@ export { captureError, captureException, captureMessage, captureStep, getUser, s
|
|
|
76
76
|
export { startMoment, startSpan, startTrace, withScopedSpan, type SpanContextLike, type StartSpanOptions, } from '@goliapkg/sentori-core';
|
|
77
77
|
export { close, flush } from './lifecycle';
|
|
78
78
|
export type { CaptureMessageOptions, MessageLevel, } from '@goliapkg/sentori-core';
|
|
79
|
+
/** v2.3 — logger surface re-exported from core so hosts can
|
|
80
|
+
* `import { setLogLevel } from '@goliapkg/sentori-react-native'`
|
|
81
|
+
* per design §3 ("Production override"). `setLogTransport` lets
|
|
82
|
+
* hosts route Sentori-internal lines into their own log
|
|
83
|
+
* aggregator (Datadog, etc.). */
|
|
84
|
+
export { getLogLevel, type LogLevel, logger, type LogTransport, setLogLevel, setLogTransport, } from '@goliapkg/sentori-core';
|
|
85
|
+
export type { ReadyInfo } from './config';
|
|
79
86
|
export { ErrorBoundary } from './error-boundary';
|
|
80
87
|
export { FeedbackButton, type FeedbackButtonHandle, type FeedbackButtonProps } from './feedback-widget';
|
|
81
88
|
export { clearAllFeatureFlags, clearFeatureFlag, getFeatureFlags, setFeatureFlag, } from './feature-flags';
|
|
@@ -94,5 +101,15 @@ export { probeNativeScreenshot, probeNativeWireframe, startAnrWatchdog, stopAnrW
|
|
|
94
101
|
export { drainReplay, startReplay, stopReplay } from './replay';
|
|
95
102
|
export { endSession, markSessionCrashed, startSession, } from './session-tracker';
|
|
96
103
|
export { type NavigationRefLike, useTraceNavigation } from './navigation';
|
|
104
|
+
import * as _push from './push';
|
|
105
|
+
export declare const push: {
|
|
106
|
+
register: typeof _push.register;
|
|
107
|
+
unregister: typeof _push.unregister;
|
|
108
|
+
getCachedIpt: typeof _push.getCachedIpt;
|
|
109
|
+
getStatus: typeof _push.getStatus;
|
|
110
|
+
requestPermission: typeof _push.requestPermission;
|
|
111
|
+
};
|
|
112
|
+
export type { PushRegisterOptions, PushRegisterResult, PushNotificationPayload, } from './push';
|
|
113
|
+
export type { PushMessage, PushOptions, PushPriority, PushReceipt, PushTicket, PushTicketStatus, } from '@goliapkg/sentori-core';
|
|
97
114
|
export type { Event, SentoriError, Frame, Breadcrumb, BreadcrumbType, Device, DeviceOS, App, User, Tags, EventKind, Platform, } from './types';
|
|
98
115
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAkB,KAAK,oBAAoB,EAAE,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAOxG,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EACL,cAAc,EACd,qBAAqB,EAEtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EACL,WAAW,EACX,SAAS,EACT,UAAU,EACV,cAAc,EACf,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC7F,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAO5C,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/lib/index.js
CHANGED
|
@@ -69,6 +69,12 @@ export { addBreadcrumb } from './breadcrumbs';
|
|
|
69
69
|
export { captureError, captureException, captureMessage, captureStep, getUser, sendUserFeedback, setTag, setTags, setUser, } from './capture';
|
|
70
70
|
export { startMoment, startSpan, startTrace, withScopedSpan, } from '@goliapkg/sentori-core';
|
|
71
71
|
export { close, flush } from './lifecycle';
|
|
72
|
+
/** v2.3 — logger surface re-exported from core so hosts can
|
|
73
|
+
* `import { setLogLevel } from '@goliapkg/sentori-react-native'`
|
|
74
|
+
* per design §3 ("Production override"). `setLogTransport` lets
|
|
75
|
+
* hosts route Sentori-internal lines into their own log
|
|
76
|
+
* aggregator (Datadog, etc.). */
|
|
77
|
+
export { getLogLevel, logger, setLogLevel, setLogTransport, } from '@goliapkg/sentori-core';
|
|
72
78
|
export { ErrorBoundary } from './error-boundary';
|
|
73
79
|
export { FeedbackButton } from './feedback-widget';
|
|
74
80
|
export { clearAllFeatureFlags, clearFeatureFlag, getFeatureFlags, setFeatureFlag, } from './feature-flags';
|
|
@@ -87,4 +93,16 @@ export { probeNativeScreenshot, probeNativeWireframe, startAnrWatchdog, stopAnrW
|
|
|
87
93
|
export { drainReplay, startReplay, stopReplay } from './replay';
|
|
88
94
|
export { endSession, markSessionCrashed, startSession, } from './session-tracker';
|
|
89
95
|
export { useTraceNavigation } from './navigation';
|
|
96
|
+
// v2.9 — Push notifications (iOS this release; v2.10 lights Android).
|
|
97
|
+
// Surfaced as a `sentori.push` sub-namespace from the default barrel.
|
|
98
|
+
// Opt-in: `sentori.push.register({...})` triggers the OS permission
|
|
99
|
+
// prompt. Sentori never prompts on its own.
|
|
100
|
+
import * as _push from './push';
|
|
101
|
+
export const push = {
|
|
102
|
+
register: _push.register,
|
|
103
|
+
unregister: _push.unregister,
|
|
104
|
+
getCachedIpt: _push.getCachedIpt,
|
|
105
|
+
getStatus: _push.getStatus,
|
|
106
|
+
requestPermission: _push.requestPermission,
|
|
107
|
+
};
|
|
90
108
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,OAAO,EACP,gBAAgB,EAChB,MAAM,EACN,OAAO,EACP,OAAO,GACR,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAuD,MAAM,mBAAmB,CAAC;AACxG,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,EACf,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EACL,cAAc,EACd,qBAAqB,GAEtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EACL,WAAW,EACX,SAAS,EACT,UAAU,EACV,cAAc,GACf,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC7F,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,IAAI;IACJ,aAAa;IACb,OAAO;IACP,OAAO;IACP,MAAM;IACN,OAAO;IACP,YAAY;IACZ,gBAAgB;IAChB,cAAc;IACd,WAAW;IACX,gBAAgB;IAChB,YAAY;IACZ,YAAY;IACZ,KAAK;IACL,UAAU;IACV,YAAY;IACZ,cAAc;IACd,iBAAiB;IACjB,eAAe;IACf,qBAAqB;IACrB,SAAS;IACT,WAAW;IACX,SAAS;IACT,UAAU;IACV,cAAc;IACd,SAAS;IACT,WAAW;IACX,WAAW;IACX,qBAAqB;IACrB,cAAc;IACd,cAAc;IACd,gBAAgB;IAChB,oBAAoB;IACpB,eAAe;IACf,aAAa;IACb,cAAc;IACd,cAAc;IACd,iBAAiB;IACjB,cAAc;IACd,YAAY;IACZ,UAAU;IACV,kBAAkB;IAClB,KAAK;IACL,KAAK;CACN,CAAC;AAEF,eAAe,OAAO,CAAC;AAEvB,OAAO,EAAE,IAAI,EAAE,IAAI,IAAI,WAAW,EAAE,MAAM,QAAQ,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,OAAO,EACP,gBAAgB,EAChB,MAAM,EACN,OAAO,EACP,OAAO,GACR,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,WAAW,EACX,SAAS,EACT,UAAU,EACV,cAAc,GAGf,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAK3C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAuD,MAAM,mBAAmB,CAAC;AACxG,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,EACf,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,KAAK,EAAoC,MAAM,SAAS,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,GAEf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,eAAe,GAGhB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EACL,cAAc,EACd,qBAAqB,GAEtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAyB,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EACL,SAAS,EACT,WAAW,EAEX,WAAW,GACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,EACf,kBAAkB,GACnB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAChE,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,YAAY,GACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAA0B,kBAAkB,EAAE,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/lib/init.d.ts
CHANGED
|
@@ -138,6 +138,13 @@ export type InitOptions = {
|
|
|
138
138
|
* SDK is live instead of scanning the console. The `ReadyInfo`
|
|
139
139
|
* carries native-module bind status + cold-start timing. */
|
|
140
140
|
onReady?: (info: ReadyInfo) => void;
|
|
141
|
+
/** v2.3 — mutate-or-drop hook on each outbound event (sync).
|
|
142
|
+
* Return the event to ship it (possibly mutated), or `null` to
|
|
143
|
+
* drop. See `BeforeSendHook` for the throwing / non-event
|
|
144
|
+
* fallback policy. Used for host-side PII scrubbing the SDK
|
|
145
|
+
* can't do automatically; server-side privacy_lab still runs
|
|
146
|
+
* regardless. */
|
|
147
|
+
beforeSend?: import('@goliapkg/sentori-core').BeforeSendHook;
|
|
141
148
|
};
|
|
142
149
|
export declare const init: (options: InitOptions) => void;
|
|
143
150
|
export type { AttachmentMeta };
|
package/lib/init.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
|
package/lib/init.js
CHANGED
|
@@ -65,6 +65,9 @@ export const init = (options) => {
|
|
|
65
65
|
// carries the customer journey. Defaults false to preserve v1
|
|
66
66
|
// breadcrumb shape on upgrade.
|
|
67
67
|
trackAutoBreadcrumb: options.capture?.trackAutoBreadcrumb === true,
|
|
68
|
+
// v2.3 — host-side beforeSend hook (sync). Stored on Config so
|
|
69
|
+
// capture.ts can pull it without re-resolving the InitOptions.
|
|
70
|
+
beforeSend: options.beforeSend,
|
|
68
71
|
});
|
|
69
72
|
// Tell the native crash handler about the config so the JSON it writes
|
|
70
73
|
// on the next NSException / Java uncaught carries release + env.
|