@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
package/lib/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,EAAkB,SAAS,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EACL,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EACL,aAAa,EACb,eAAe,EACf,wBAAwB,GACzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACxF,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAyB,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAwB,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EACL,iBAAiB,EACjB,OAAO,EACP,cAAc,EACd,gBAAgB,GACjB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
|
package/lib/native.d.ts
CHANGED
|
@@ -36,6 +36,23 @@ export declare function startAnrWatchdog(options?: {
|
|
|
36
36
|
intervalMs?: number;
|
|
37
37
|
timeoutMs?: number;
|
|
38
38
|
}): void;
|
|
39
|
+
/** Returns the current iOS push permission status without
|
|
40
|
+
* prompting. `null` when the native module isn't available. */
|
|
41
|
+
export declare function pushGetStatus(): Promise<null | string>;
|
|
42
|
+
/** Prompts for permission (or returns cached decision). `null` when
|
|
43
|
+
* the native module isn't available. */
|
|
44
|
+
export declare function pushRequestPermission(): Promise<null | string>;
|
|
45
|
+
export declare function pushRegister(): void;
|
|
46
|
+
export declare function pushUnregister(): void;
|
|
47
|
+
export type PushDrainState = {
|
|
48
|
+
token?: string;
|
|
49
|
+
error?: string;
|
|
50
|
+
notifications: Array<Record<string, unknown>>;
|
|
51
|
+
taps: Array<Record<string, unknown>>;
|
|
52
|
+
};
|
|
53
|
+
/** Snapshot + clear the native push buffers. Returns empty state
|
|
54
|
+
* when the native module isn't available. */
|
|
55
|
+
export declare function pushDrainState(): Promise<PushDrainState>;
|
|
39
56
|
export declare function stopAnrWatchdog(): void;
|
|
40
57
|
/** v0.9.4 #1 — finalize cold-start measurement. Idempotent. */
|
|
41
58
|
export declare function markNativeJsBridgeReady(): void;
|
package/lib/native.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../src/native.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../src/native.ts"],"names":[],"mappings":"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"}
|
package/lib/native.js
CHANGED
|
@@ -83,6 +83,63 @@ export function startAnrWatchdog(options) {
|
|
|
83
83
|
// never throw from init helpers
|
|
84
84
|
}
|
|
85
85
|
}
|
|
86
|
+
// ── v2.9 push wrappers ──────────────────────────────────────────
|
|
87
|
+
/** Returns the current iOS push permission status without
|
|
88
|
+
* prompting. `null` when the native module isn't available. */
|
|
89
|
+
export async function pushGetStatus() {
|
|
90
|
+
const n = native();
|
|
91
|
+
if (!n?.pushGetStatus)
|
|
92
|
+
return null;
|
|
93
|
+
try {
|
|
94
|
+
return await n.pushGetStatus();
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/** Prompts for permission (or returns cached decision). `null` when
|
|
101
|
+
* the native module isn't available. */
|
|
102
|
+
export async function pushRequestPermission() {
|
|
103
|
+
const n = native();
|
|
104
|
+
if (!n?.pushRequestPermission)
|
|
105
|
+
return null;
|
|
106
|
+
try {
|
|
107
|
+
return await n.pushRequestPermission();
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
export function pushRegister() {
|
|
114
|
+
try {
|
|
115
|
+
native()?.pushRegister?.();
|
|
116
|
+
}
|
|
117
|
+
catch {
|
|
118
|
+
/* never throw */
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
export function pushUnregister() {
|
|
122
|
+
try {
|
|
123
|
+
native()?.pushUnregister?.();
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
/* never throw */
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/** Snapshot + clear the native push buffers. Returns empty state
|
|
130
|
+
* when the native module isn't available. */
|
|
131
|
+
export async function pushDrainState() {
|
|
132
|
+
const n = native();
|
|
133
|
+
if (!n?.pushDrainState) {
|
|
134
|
+
return { notifications: [], taps: [] };
|
|
135
|
+
}
|
|
136
|
+
try {
|
|
137
|
+
return await n.pushDrainState();
|
|
138
|
+
}
|
|
139
|
+
catch {
|
|
140
|
+
return { notifications: [], taps: [] };
|
|
141
|
+
}
|
|
142
|
+
}
|
|
86
143
|
export function stopAnrWatchdog() {
|
|
87
144
|
try {
|
|
88
145
|
native()?.stopAnrWatchdog?.();
|
package/lib/native.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native.js","sourceRoot":"","sources":["../src/native.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"native.js","sourceRoot":"","sources":["../src/native.ts"],"names":[],"mappings":"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"}
|
package/lib/push.d.ts
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { pushGetStatus, pushRequestPermission } from './native.js';
|
|
2
|
+
export type PushRegisterOptions = {
|
|
3
|
+
/** Identity-link hash. Pass `hashIdentities({ email }).email` if
|
|
4
|
+
* the host has run the v2.3 identity flow. Lets the server-side
|
|
5
|
+
* push routing target a specific user across all their devices. */
|
|
6
|
+
linkHash?: string;
|
|
7
|
+
/** Extra metadata to attach to the device_tokens row (e.g. app
|
|
8
|
+
* version, locale). Optional. */
|
|
9
|
+
metadata?: Record<string, unknown>;
|
|
10
|
+
/** Foreground notification arrival. Fires once per notification
|
|
11
|
+
* the SW or iOS native delegate hands us. */
|
|
12
|
+
onMessage?: (payload: PushNotificationPayload) => void;
|
|
13
|
+
/** User tapped a notification. Fires once per tap. */
|
|
14
|
+
onTap?: (data: unknown) => void;
|
|
15
|
+
/** Token registration completed — useful when the host wants the
|
|
16
|
+
* ipt handle in real time without awaiting `register()`. */
|
|
17
|
+
onToken?: (ipt: string) => void;
|
|
18
|
+
/** Any failure in the registration flow. The promise also
|
|
19
|
+
* rejects; this callback is convenience. */
|
|
20
|
+
onError?: (err: Error) => void;
|
|
21
|
+
/** Override the timeout when waiting for the native token to
|
|
22
|
+
* arrive after `registerForRemoteNotifications`. Defaults to
|
|
23
|
+
* 8000 ms; bump on slow networks / TestFlight provisioning
|
|
24
|
+
* delays. */
|
|
25
|
+
tokenTimeoutMs?: number;
|
|
26
|
+
};
|
|
27
|
+
export type PushRegisterResult = {
|
|
28
|
+
/** Stable device handle (`ipt_<uuid>`). */
|
|
29
|
+
ipt: string;
|
|
30
|
+
};
|
|
31
|
+
export type PushNotificationPayload = {
|
|
32
|
+
id?: string;
|
|
33
|
+
title?: string;
|
|
34
|
+
body?: string;
|
|
35
|
+
subtitle?: string;
|
|
36
|
+
category?: string;
|
|
37
|
+
userInfo?: Record<string, unknown>;
|
|
38
|
+
receivedAt?: number;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Run the iOS push opt-in flow. Returns the cached `ipt_*` handle
|
|
42
|
+
* on subsequent calls when permission is still granted.
|
|
43
|
+
*/
|
|
44
|
+
export declare function register(opts?: PushRegisterOptions): Promise<PushRegisterResult>;
|
|
45
|
+
/**
|
|
46
|
+
* Revoke the cached handle (DELETE /v1/push/tokens/{ipt}) +
|
|
47
|
+
* unregister locally. Idempotent — repeat calls are no-ops.
|
|
48
|
+
*/
|
|
49
|
+
export declare function unregister(): Promise<void>;
|
|
50
|
+
/** Returns the cached handle without hitting the network. Useful
|
|
51
|
+
* for skipping a re-register prompt across cold starts. */
|
|
52
|
+
export declare function getCachedIpt(): null | string;
|
|
53
|
+
/** Public re-export of the no-prompt status check. */
|
|
54
|
+
export { pushGetStatus as getStatus, pushRequestPermission as requestPermission };
|
|
55
|
+
/** Test-only hook to override Platform.OS detection. Production
|
|
56
|
+
* code paths must not call this. */
|
|
57
|
+
export declare function __setPlatformForTests(p: 'ios' | 'android' | 'unknown' | null): void;
|
|
58
|
+
//# sourceMappingURL=push.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../src/push.ts"],"names":[],"mappings":"AAkCA,OAAO,EAEL,aAAa,EAEb,qBAAqB,EAEtB,MAAM,aAAa,CAAA;AAYpB,MAAM,MAAM,mBAAmB,GAAG;IAChC;;wEAEoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;sCACkC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAClC;kDAC8C;IAC9C,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,uBAAuB,KAAK,IAAI,CAAA;IACtD,sDAAsD;IACtD,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IAC/B;iEAC6D;IAC7D,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/B;iDAC6C;IAC7C,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAA;IAC9B;;;kBAGc;IACd,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,2CAA2C;IAC3C,GAAG,EAAE,MAAM,CAAA;CACZ,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAClC,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,IAAI,GAAE,mBAAwB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA4B1F;AAED;;;GAGG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAiBhD;AAED;4DAC4D;AAC5D,wBAAgB,YAAY,IAAI,IAAI,GAAG,MAAM,CAE5C;AAED,sDAAsD;AACtD,OAAO,EAAE,aAAa,IAAI,SAAS,EAAE,qBAAqB,IAAI,iBAAiB,EAAE,CAAA;AA8MjF;qCACqC;AACrC,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,CAEnF"}
|
package/lib/push.js
ADDED
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
// v2.9 — React Native push notification opt-in (iOS in this release).
|
|
2
|
+
//
|
|
3
|
+
// Mirrors `@goliapkg/sentori-javascript`'s `registerWeb` ergonomics
|
|
4
|
+
// so a cross-platform host app reasons about both flows the same way.
|
|
5
|
+
//
|
|
6
|
+
// Flow:
|
|
7
|
+
// 1. `pushRequestPermission()` — OS prompt the first time, or
|
|
8
|
+
// returns the cached decision.
|
|
9
|
+
// 2. `pushRegister()` — kicks off
|
|
10
|
+
// `UIApplication.registerForRemoteNotifications`. The token
|
|
11
|
+
// arrives asynchronously via the AppDelegate swizzle and lands
|
|
12
|
+
// in the native buffer.
|
|
13
|
+
// 3. Poll `pushDrainState()` at 200 ms ticks for up to 8 s waiting
|
|
14
|
+
// for the token.
|
|
15
|
+
// 4. POST `/v1/push/tokens` with
|
|
16
|
+
// `provider: 'apns'`, `env: __DEV__ ? 'sandbox' : 'production'`,
|
|
17
|
+
// `nativeToken: <hex>`, `linkHash?`, `metadata`.
|
|
18
|
+
// 5. Cache the returned `ipt_*` handle (AsyncStorage when
|
|
19
|
+
// available, otherwise module-scoped).
|
|
20
|
+
// 6. Start a 1 Hz drain loop that fires `onMessage` / `onTap` from
|
|
21
|
+
// buffered events while the app is foreground. Pauses on
|
|
22
|
+
// background, resumes on active, per the perf iron rule.
|
|
23
|
+
import { logger } from '@goliapkg/sentori-core';
|
|
24
|
+
import { pushDrainState, pushGetStatus, pushRegister as nativePushRegister, pushRequestPermission, pushUnregister as nativePushUnregister, } from './native.js';
|
|
25
|
+
const STORAGE_KEY = 'sentori.push.ipt';
|
|
26
|
+
let _cachedIpt = null;
|
|
27
|
+
let _drainInterval = null;
|
|
28
|
+
let _appStateSubscription = null;
|
|
29
|
+
let _backgrounded = false;
|
|
30
|
+
let _onMessage = undefined;
|
|
31
|
+
let _onTap = undefined;
|
|
32
|
+
/**
|
|
33
|
+
* Run the iOS push opt-in flow. Returns the cached `ipt_*` handle
|
|
34
|
+
* on subsequent calls when permission is still granted.
|
|
35
|
+
*/
|
|
36
|
+
export async function register(opts = {}) {
|
|
37
|
+
try {
|
|
38
|
+
const cfg = getRuntimeConfig();
|
|
39
|
+
// Bind callbacks up front so the buffer drain inside
|
|
40
|
+
// waitForToken can fire onMessage / onTap for events that arrive
|
|
41
|
+
// alongside or before the device token (e.g. user taps a push
|
|
42
|
+
// received during a previous launch — iOS replays it on
|
|
43
|
+
// delegate attach).
|
|
44
|
+
_onMessage = opts.onMessage;
|
|
45
|
+
_onTap = opts.onTap;
|
|
46
|
+
const status = await pushRequestPermission();
|
|
47
|
+
if (status !== 'granted' && status !== 'provisional' && status !== 'ephemeral') {
|
|
48
|
+
throw new Error(`Push permission '${status ?? 'unavailable'}'; cannot register`);
|
|
49
|
+
}
|
|
50
|
+
nativePushRegister();
|
|
51
|
+
const token = await waitForToken(opts.tokenTimeoutMs ?? 8000);
|
|
52
|
+
const ipt = await registerWithServer(cfg, token, opts);
|
|
53
|
+
_cachedIpt = ipt;
|
|
54
|
+
void persistIpt(ipt);
|
|
55
|
+
opts.onToken?.(ipt);
|
|
56
|
+
bindBufferDrain(opts.onMessage, opts.onTap);
|
|
57
|
+
return { ipt };
|
|
58
|
+
}
|
|
59
|
+
catch (e) {
|
|
60
|
+
const err = e instanceof Error ? e : new Error(String(e));
|
|
61
|
+
logger.warn('push', 'register failed:', err.message);
|
|
62
|
+
opts.onError?.(err);
|
|
63
|
+
throw err;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Revoke the cached handle (DELETE /v1/push/tokens/{ipt}) +
|
|
68
|
+
* unregister locally. Idempotent — repeat calls are no-ops.
|
|
69
|
+
*/
|
|
70
|
+
export async function unregister() {
|
|
71
|
+
const cfg = tryGetRuntimeConfig();
|
|
72
|
+
const ipt = _cachedIpt ?? (await readPersistedIpt());
|
|
73
|
+
if (cfg && ipt) {
|
|
74
|
+
try {
|
|
75
|
+
await fetch(joinUrl(cfg.ingestUrl, `/v1/push/tokens/${ipt}`), {
|
|
76
|
+
method: 'DELETE',
|
|
77
|
+
headers: { authorization: `Bearer ${cfg.token}` },
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
catch (e) {
|
|
81
|
+
logger.warn('push', 'unregister server delete failed', e);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
nativePushUnregister();
|
|
85
|
+
_cachedIpt = null;
|
|
86
|
+
void clearPersistedIpt();
|
|
87
|
+
teardownBufferDrain();
|
|
88
|
+
}
|
|
89
|
+
/** Returns the cached handle without hitting the network. Useful
|
|
90
|
+
* for skipping a re-register prompt across cold starts. */
|
|
91
|
+
export function getCachedIpt() {
|
|
92
|
+
return _cachedIpt;
|
|
93
|
+
}
|
|
94
|
+
/** Public re-export of the no-prompt status check. */
|
|
95
|
+
export { pushGetStatus as getStatus, pushRequestPermission as requestPermission };
|
|
96
|
+
function getRuntimeConfig() {
|
|
97
|
+
const cfg = tryGetRuntimeConfig();
|
|
98
|
+
if (!cfg) {
|
|
99
|
+
throw new Error('sentori is not initialised; call sentori.init() first');
|
|
100
|
+
}
|
|
101
|
+
return cfg;
|
|
102
|
+
}
|
|
103
|
+
function tryGetRuntimeConfig() {
|
|
104
|
+
// Dynamic require avoids a circular import — `./init` already
|
|
105
|
+
// depends on `./push` via the top-level barrel re-export.
|
|
106
|
+
try {
|
|
107
|
+
const conf = require('./config.js');
|
|
108
|
+
return conf.getConfig?.() ?? null;
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
return null;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
async function waitForToken(timeoutMs) {
|
|
115
|
+
const start = Date.now();
|
|
116
|
+
while (Date.now() - start < timeoutMs) {
|
|
117
|
+
const state = await pushDrainState();
|
|
118
|
+
if (state.error) {
|
|
119
|
+
throw new Error(`APNs registration failed: ${state.error}`);
|
|
120
|
+
}
|
|
121
|
+
if (state.token) {
|
|
122
|
+
// Push any buffered events that arrived alongside the token
|
|
123
|
+
// straight back into the registered listeners (if any).
|
|
124
|
+
flushBuffered(state.notifications, state.taps);
|
|
125
|
+
return state.token;
|
|
126
|
+
}
|
|
127
|
+
flushBuffered(state.notifications, state.taps);
|
|
128
|
+
await new Promise((resolve) => setTimeout(resolve, 200));
|
|
129
|
+
}
|
|
130
|
+
throw new Error(`APNs token not received within ${timeoutMs} ms`);
|
|
131
|
+
}
|
|
132
|
+
async function registerWithServer(cfg, nativeToken, opts) {
|
|
133
|
+
// v2.10 — cross-platform. iOS routes via APNs with a
|
|
134
|
+
// sandbox/production env; Android routes via FCM with no env
|
|
135
|
+
// (FCM is a single host). Default to 'apns' when Platform.OS
|
|
136
|
+
// isn't detectable (e.g. unit tests).
|
|
137
|
+
const platform = detectPlatform();
|
|
138
|
+
const isAndroid = platform === 'android';
|
|
139
|
+
const env = isAndroid
|
|
140
|
+
? undefined
|
|
141
|
+
: typeof __DEV__ !== 'undefined' && __DEV__
|
|
142
|
+
? 'sandbox'
|
|
143
|
+
: 'production';
|
|
144
|
+
const body = {
|
|
145
|
+
provider: isAndroid ? 'fcm' : 'apns',
|
|
146
|
+
nativeToken,
|
|
147
|
+
linkHash: opts.linkHash,
|
|
148
|
+
metadata: opts.metadata ?? {},
|
|
149
|
+
};
|
|
150
|
+
if (env != null)
|
|
151
|
+
body.env = env;
|
|
152
|
+
const res = await fetch(joinUrl(cfg.ingestUrl, '/v1/push/tokens'), {
|
|
153
|
+
method: 'POST',
|
|
154
|
+
headers: {
|
|
155
|
+
authorization: `Bearer ${cfg.token}`,
|
|
156
|
+
'content-type': 'application/json',
|
|
157
|
+
},
|
|
158
|
+
body: JSON.stringify(body),
|
|
159
|
+
});
|
|
160
|
+
if (!res.ok)
|
|
161
|
+
throw new Error(`/v1/push/tokens HTTP ${res.status}`);
|
|
162
|
+
const json = (await res.json());
|
|
163
|
+
if (typeof json.id !== 'string' || !json.id.startsWith('ipt_')) {
|
|
164
|
+
throw new Error('server did not return an ipt_* handle');
|
|
165
|
+
}
|
|
166
|
+
return json.id;
|
|
167
|
+
}
|
|
168
|
+
function bindBufferDrain(onMessage, onTap) {
|
|
169
|
+
_onMessage = onMessage;
|
|
170
|
+
_onTap = onTap;
|
|
171
|
+
teardownBufferDrain();
|
|
172
|
+
startAppStateWatch();
|
|
173
|
+
_drainInterval = setInterval(() => {
|
|
174
|
+
if (_backgrounded)
|
|
175
|
+
return;
|
|
176
|
+
void pumpOnce();
|
|
177
|
+
}, 1000);
|
|
178
|
+
}
|
|
179
|
+
function teardownBufferDrain() {
|
|
180
|
+
if (_drainInterval) {
|
|
181
|
+
clearInterval(_drainInterval);
|
|
182
|
+
_drainInterval = null;
|
|
183
|
+
}
|
|
184
|
+
_appStateSubscription?.remove();
|
|
185
|
+
_appStateSubscription = null;
|
|
186
|
+
}
|
|
187
|
+
async function pumpOnce() {
|
|
188
|
+
const state = await pushDrainState();
|
|
189
|
+
flushBuffered(state.notifications, state.taps);
|
|
190
|
+
}
|
|
191
|
+
function flushBuffered(notifications, taps) {
|
|
192
|
+
if (_onMessage) {
|
|
193
|
+
for (const raw of notifications) {
|
|
194
|
+
_onMessage(coerceNotification(raw));
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
if (_onTap) {
|
|
198
|
+
for (const raw of taps) {
|
|
199
|
+
_onTap(raw.userInfo ?? raw);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
function coerceNotification(raw) {
|
|
204
|
+
return {
|
|
205
|
+
id: raw.id,
|
|
206
|
+
title: raw.title,
|
|
207
|
+
body: raw.body,
|
|
208
|
+
subtitle: raw.subtitle,
|
|
209
|
+
category: raw.category,
|
|
210
|
+
userInfo: raw.userInfo,
|
|
211
|
+
receivedAt: raw.receivedAt,
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
function startAppStateWatch() {
|
|
215
|
+
if (_appStateSubscription)
|
|
216
|
+
return;
|
|
217
|
+
try {
|
|
218
|
+
const rn = require('react-native');
|
|
219
|
+
const AppState = rn.AppState;
|
|
220
|
+
if (!AppState)
|
|
221
|
+
return;
|
|
222
|
+
_backgrounded = AppState.currentState === 'background';
|
|
223
|
+
_appStateSubscription = AppState.addEventListener('change', (state) => {
|
|
224
|
+
_backgrounded = state === 'background';
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
catch {
|
|
228
|
+
/* react-native unavailable (unit test) */
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
async function persistIpt(ipt) {
|
|
232
|
+
const storage = await tryAsyncStorage();
|
|
233
|
+
if (!storage)
|
|
234
|
+
return;
|
|
235
|
+
try {
|
|
236
|
+
await storage.setItem(STORAGE_KEY, ipt);
|
|
237
|
+
}
|
|
238
|
+
catch (e) {
|
|
239
|
+
logger.warn('push', 'AsyncStorage.setItem failed', e);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
async function clearPersistedIpt() {
|
|
243
|
+
const storage = await tryAsyncStorage();
|
|
244
|
+
try {
|
|
245
|
+
await storage?.removeItem(STORAGE_KEY);
|
|
246
|
+
}
|
|
247
|
+
catch (e) {
|
|
248
|
+
logger.warn('push', 'AsyncStorage.removeItem failed', e);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
async function readPersistedIpt() {
|
|
252
|
+
const storage = await tryAsyncStorage();
|
|
253
|
+
if (!storage)
|
|
254
|
+
return null;
|
|
255
|
+
try {
|
|
256
|
+
return await storage.getItem(STORAGE_KEY);
|
|
257
|
+
}
|
|
258
|
+
catch {
|
|
259
|
+
return null;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
async function tryAsyncStorage() {
|
|
263
|
+
try {
|
|
264
|
+
const mod = require('@react-native-async-storage/async-storage');
|
|
265
|
+
return mod.default ?? null;
|
|
266
|
+
}
|
|
267
|
+
catch {
|
|
268
|
+
return null;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
function joinUrl(base, path) {
|
|
272
|
+
return `${base.replace(/\/+$/, '')}${path}`;
|
|
273
|
+
}
|
|
274
|
+
let _platformOverride = null;
|
|
275
|
+
/** Test-only hook to override Platform.OS detection. Production
|
|
276
|
+
* code paths must not call this. */
|
|
277
|
+
export function __setPlatformForTests(p) {
|
|
278
|
+
_platformOverride = p;
|
|
279
|
+
}
|
|
280
|
+
function detectPlatform() {
|
|
281
|
+
if (_platformOverride != null)
|
|
282
|
+
return _platformOverride;
|
|
283
|
+
try {
|
|
284
|
+
const rn = require('react-native');
|
|
285
|
+
const os = rn.Platform?.OS;
|
|
286
|
+
if (os === 'ios' || os === 'android')
|
|
287
|
+
return os;
|
|
288
|
+
}
|
|
289
|
+
catch {
|
|
290
|
+
/* react-native unavailable */
|
|
291
|
+
}
|
|
292
|
+
return 'unknown';
|
|
293
|
+
}
|
|
294
|
+
//# sourceMappingURL=push.js.map
|
package/lib/push.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"push.js","sourceRoot":"","sources":["../src/push.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@goliapkg/sentori-react-native",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"description": "Sentori SDK for React Native — JS-layer error capture, native crash handlers (iOS / Android), batched transport, fetch + react-navigation tracing.",
|
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
|
6
6
|
"author": "GOLIA K.K. <takagi@golia.jp> (https://golia.jp)",
|
|
@@ -32,6 +32,10 @@
|
|
|
32
32
|
"types": "./lib/compat/sentry.d.ts",
|
|
33
33
|
"default": "./lib/compat/sentry.js"
|
|
34
34
|
},
|
|
35
|
+
"./expo-compat": {
|
|
36
|
+
"types": "./lib/expo-compat.d.ts",
|
|
37
|
+
"default": "./lib/expo-compat.js"
|
|
38
|
+
},
|
|
35
39
|
"./feedback": {
|
|
36
40
|
"types": "./lib/feedback.d.ts",
|
|
37
41
|
"default": "./lib/feedback.js"
|
|
@@ -59,9 +63,9 @@
|
|
|
59
63
|
"prepack": "bun run build"
|
|
60
64
|
},
|
|
61
65
|
"peerDependencies": {
|
|
62
|
-
"expo-modules-core": ">=
|
|
63
|
-
"react": ">=
|
|
64
|
-
"react-native": ">=0.
|
|
66
|
+
"expo-modules-core": ">=55.0.0 <57.0.0",
|
|
67
|
+
"react": ">=19",
|
|
68
|
+
"react-native": ">=0.81.0"
|
|
65
69
|
},
|
|
66
70
|
"peerDependenciesMeta": {
|
|
67
71
|
"@react-native-async-storage/async-storage": {
|
|
@@ -92,6 +96,6 @@
|
|
|
92
96
|
"access": "public"
|
|
93
97
|
},
|
|
94
98
|
"dependencies": {
|
|
95
|
-
"@goliapkg/sentori-core": "^1.
|
|
99
|
+
"@goliapkg/sentori-core": "^1.3.0"
|
|
96
100
|
}
|
|
97
101
|
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.3 — beforeSend hook unit coverage for the RN SDK.
|
|
3
|
+
*
|
|
4
|
+
* We exercise the dispatcher directly via the
|
|
5
|
+
* `__applyBeforeSendForTests` test hook rather than running the full
|
|
6
|
+
* captureException pipeline. The behaviour-level coverage of
|
|
7
|
+
* captureException's enqueue path lives in the JS SDK's `sdk.test.ts`
|
|
8
|
+
* (which mocks fetch); the dispatcher itself is the only RN-specific
|
|
9
|
+
* piece (RN uses the same NEVER-rule policy as JS, but the
|
|
10
|
+
* one-shot warn flag is per-SDK so we verify it in both).
|
|
11
|
+
*/
|
|
12
|
+
import { describe, expect, test } from 'bun:test';
|
|
13
|
+
|
|
14
|
+
import { __applyBeforeSendForTests as applyBeforeSend } from '../capture';
|
|
15
|
+
import type { Event } from '../types';
|
|
16
|
+
|
|
17
|
+
function freshEvent(message: string): Event {
|
|
18
|
+
return {
|
|
19
|
+
id: '019eaa00-0000-7000-8000-000000000001',
|
|
20
|
+
timestamp: '2026-06-03T07:00:00.000Z',
|
|
21
|
+
kind: 'message',
|
|
22
|
+
platform: 'javascript',
|
|
23
|
+
release: 'app@1.0.0+1',
|
|
24
|
+
environment: 'test',
|
|
25
|
+
device: { os: 'ios' },
|
|
26
|
+
app: { version: '1.0.0', build: '1' },
|
|
27
|
+
user: null,
|
|
28
|
+
tags: {},
|
|
29
|
+
breadcrumbs: [],
|
|
30
|
+
message,
|
|
31
|
+
} as Event;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
describe('applyBeforeSend (RN, v2.3)', () => {
|
|
35
|
+
test('no hook → returns event unchanged', () => {
|
|
36
|
+
const ev = freshEvent('passthrough');
|
|
37
|
+
expect(applyBeforeSend(ev, undefined)).toBe(ev);
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
test('hook mutates: returned event is what the caller sees', () => {
|
|
41
|
+
const ev = freshEvent('please scrub');
|
|
42
|
+
const out = applyBeforeSend(ev, (e) => ({
|
|
43
|
+
...e,
|
|
44
|
+
tags: { ...e.tags, scrubbed: '1' },
|
|
45
|
+
}));
|
|
46
|
+
expect(out).not.toBeNull();
|
|
47
|
+
expect(out!.tags?.scrubbed).toBe('1');
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
test('hook returns null → dispatcher returns null (caller drops)', () => {
|
|
51
|
+
const ev = freshEvent('drop me');
|
|
52
|
+
expect(applyBeforeSend(ev, () => null)).toBeNull();
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
test('hook throws → dispatcher returns the original event (NEVER rule)', () => {
|
|
56
|
+
const ev = freshEvent('survives bad hook');
|
|
57
|
+
const out = applyBeforeSend(ev, () => {
|
|
58
|
+
throw new Error('hook boom');
|
|
59
|
+
});
|
|
60
|
+
expect(out).toBe(ev);
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
test('hook returns non-event garbage → dispatcher returns the original event', () => {
|
|
64
|
+
const ev = freshEvent('survives bad return');
|
|
65
|
+
const out = applyBeforeSend(
|
|
66
|
+
ev,
|
|
67
|
+
// @ts-expect-error — host returns garbage; v2.3 contract is "fall back unmodified"
|
|
68
|
+
() => 42,
|
|
69
|
+
);
|
|
70
|
+
expect(out).toBe(ev);
|
|
71
|
+
});
|
|
72
|
+
});
|