@goliapkg/sentori-react-native 2.0.0 → 2.2.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.
Files changed (62) hide show
  1. package/lib/capture.d.ts +6 -1
  2. package/lib/capture.d.ts.map +1 -1
  3. package/lib/capture.js +49 -2
  4. package/lib/capture.js.map +1 -1
  5. package/lib/compat/sentry.d.ts +14 -0
  6. package/lib/compat/sentry.d.ts.map +1 -1
  7. package/lib/compat/sentry.js +6 -0
  8. package/lib/compat/sentry.js.map +1 -1
  9. package/lib/config.d.ts +12 -18
  10. package/lib/config.d.ts.map +1 -1
  11. package/lib/config.js.map +1 -1
  12. package/lib/handlers/network.d.ts.map +1 -1
  13. package/lib/handlers/network.js +7 -0
  14. package/lib/handlers/network.js.map +1 -1
  15. package/lib/index.d.ts +7 -0
  16. package/lib/index.d.ts.map +1 -1
  17. package/lib/index.js +6 -0
  18. package/lib/index.js.map +1 -1
  19. package/lib/init.d.ts +17 -0
  20. package/lib/init.d.ts.map +1 -1
  21. package/lib/init.js +37 -0
  22. package/lib/init.js.map +1 -1
  23. package/lib/navigation.d.ts.map +1 -1
  24. package/lib/navigation.js +14 -1
  25. package/lib/navigation.js.map +1 -1
  26. package/lib/runtime-metrics-fps.d.ts +19 -0
  27. package/lib/runtime-metrics-fps.d.ts.map +1 -0
  28. package/lib/runtime-metrics-fps.js +128 -0
  29. package/lib/runtime-metrics-fps.js.map +1 -0
  30. package/lib/runtime-metrics-heap.d.ts +13 -0
  31. package/lib/runtime-metrics-heap.d.ts.map +1 -0
  32. package/lib/runtime-metrics-heap.js +67 -0
  33. package/lib/runtime-metrics-heap.js.map +1 -0
  34. package/lib/runtime-metrics-network.d.ts +23 -0
  35. package/lib/runtime-metrics-network.d.ts.map +1 -0
  36. package/lib/runtime-metrics-network.js +99 -0
  37. package/lib/runtime-metrics-network.js.map +1 -0
  38. package/lib/runtime-metrics.d.ts +43 -0
  39. package/lib/runtime-metrics.d.ts.map +1 -0
  40. package/lib/runtime-metrics.js +115 -0
  41. package/lib/runtime-metrics.js.map +1 -0
  42. package/lib/transport.d.ts +18 -0
  43. package/lib/transport.d.ts.map +1 -1
  44. package/lib/transport.js +31 -0
  45. package/lib/transport.js.map +1 -1
  46. package/package.json +2 -2
  47. package/src/__tests__/before-send.test.ts +72 -0
  48. package/src/__tests__/compat-sentry.test.ts +121 -0
  49. package/src/__tests__/runtime-metrics-instruments.test.ts +109 -0
  50. package/src/__tests__/runtime-metrics-network.test.ts +78 -0
  51. package/src/capture.ts +48 -2
  52. package/src/compat/sentry.ts +8 -0
  53. package/src/config.ts +12 -15
  54. package/src/handlers/network.ts +11 -0
  55. package/src/index.ts +14 -0
  56. package/src/init.ts +58 -0
  57. package/src/navigation.ts +14 -1
  58. package/src/runtime-metrics-fps.ts +137 -0
  59. package/src/runtime-metrics-heap.ts +78 -0
  60. package/src/runtime-metrics-network.ts +103 -0
  61. package/src/runtime-metrics.ts +122 -0
  62. package/src/transport.ts +39 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-metrics.js","sourceRoot":"","sources":["../src/runtime-metrics.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,cAAc;AACd,EAAE;AACF,8DAA8D;AAC9D,0CAA0C;AAC1C,gEAAgE;AAChE,4CAA4C;AAC5C,wDAAwD;AACxD,EAAE;AACF,kEAAkE;AAClE,kEAAkE;AAClE,8DAA8D;AAC9D,EAAE;AACF,6DAA6D;AAC7D,2DAA2D;AAC3D,4DAA4D;AAE5D,OAAO,EACL,2BAA2B,EAC3B,UAAU,EACV,sBAAsB,EACtB,cAAc,GACf,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAEtD,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAEjC,IAAI,MAAM,GAA0C,IAAI,CAAC;AACzD,IAAI,YAAY,GAAkB,IAAI,CAAC;AACvC,IAAI,iBAAiB,GAAG,KAAK,CAAC;AAE9B;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACvC,IAAI,CAAC,aAAa,EAAE;QAAE,OAAO;IAC7B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,IAAI,CAAC,MAAM;QAAE,OAAO;IACpB,MAAM,KAAK,GAAG,2BAA2B,EAAE,CAAC;IAC5C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAC/B,MAAM,EAAE,GAAG,MAAM,uBAAuB,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAChF,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAC9B,cAAc,CAAC,uBAAuB,EAAE,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC;IACpF,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB;IACtC,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO;IAC5B,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE;QACxB,KAAK,mBAAmB,EAAE,CAAC;IAC7B,CAAC,EAAE,iBAAiB,CAAC,CAAC;IACtB,gEAAgE;IAChE,2DAA2D;IAC3D,2CAA2C;IAC1C,MAA4C,CAAC,KAAK,EAAE,EAAE,CAAC;AAC1D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe;IAC7B,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;QAC1B,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC5B,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa;IAC3B,IAAI,iBAAiB;QAAE,OAAO;IAC9B,IAAI,YAAY,KAAK,IAAI;QAAE,OAAO;IAClC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC;IACrC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;QAC3B,2DAA2D;QAC3D,6DAA6D;QAC7D,OAAO;IACT,CAAC;IACD,UAAU,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;IACxC,iBAAiB,GAAG,IAAI,CAAC;AAC3B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,+BAA+B;IAC7C,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,aAAa,CAAC,MAAM,CAAC,CAAC;QACtB,MAAM,GAAG,IAAI,CAAC;IAChB,CAAC;IACD,YAAY,GAAG,IAAI,CAAC;IACpB,iBAAiB,GAAG,KAAK,CAAC;AAC5B,CAAC"}
@@ -41,6 +41,24 @@ export declare const sendMetricsBatch: (ingestUrl: string, token: string, metric
41
41
  ts?: string;
42
42
  value: number;
43
43
  }>) => Promise<void>;
44
+ /**
45
+ * v2.1 W2 — POST a batched set of auto-instrument runtime metric
46
+ * points. Sibling of sendMetricsBatch; different endpoint
47
+ * (`/v1/runtime-metrics:batch`) because the storage shape +
48
+ * validation rules + rate-limit budget differ — see
49
+ * docs/design/v2-metrics.md.
50
+ *
51
+ * Returns true on 2xx so the caller can leave the batch drained;
52
+ * returns false on anything else (network error / non-2xx) so the
53
+ * caller rebuffer-and-retries on the next flush via
54
+ * `rebufferRuntimeMetrics(batch)`.
55
+ */
56
+ export declare const sendRuntimeMetricsBatch: (ingestUrl: string, token: string, metrics: Array<{
57
+ name: string;
58
+ tags?: Record<string, string>;
59
+ ts: string;
60
+ value: number;
61
+ }>) => Promise<boolean>;
44
62
  /**
45
63
  * v0.8.2 — submit a user-supplied bug report. Fire-and-forget; resolves
46
64
  * with the server-assigned id on success or `null` on any failure.
@@ -1 +1 @@
1
- {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAqBrC,eAAO,MAAM,OAAO,GAAI,OAAO,KAAK,KAAG,IAiBtC,CAAC;AAEF,eAAO,MAAM,cAAc,QAAO,IAOjC,CAAC;AAEF,eAAO,MAAM,UAAU,QAAa,OAAO,CAAC,IAAI,CAe/C,CAAC;AAqBF,eAAO,MAAM,KAAK,QAAa,OAAO,CAAC,IAAI,CAkB1C,CAAC;AAwGF,eAAO,MAAM,iBAAiB,QAAa,OAAO,CAAC,IAAI,CAatD,CAAC;AAEF,eAAO,MAAM,eAAe,QAAO,IAOlC,CAAC;AAEF,eAAO,MAAM,WAAW,QAAO,SAAS,KAAK,EAAY,CAAC;AAE1D;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAC1B,WAAW,MAAM,EACjB,OAAO,MAAM,EACb,MAAM,OAAO,KACZ,OAAO,CAAC,IAAI,CAcd,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,cAAc,GACzB,WAAW,MAAM,EACjB,OAAO,MAAM,EACb,QAAQ,KAAK,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC,KACD,OAAO,CAAC,IAAI,CAed,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAC3B,WAAW,MAAM,EACjB,OAAO,MAAM,EACb,SAAS,KAAK,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf,CAAC,KACD,OAAO,CAAC,IAAI,CAed,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GACzB,WAAW,MAAM,EACjB,OAAO,MAAM,EACb,QAAQ;IACN,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf,KACA,OAAO,CAAC,IAAI,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,IAAI,GAAG,MAAM,CAAA;CAAE,CAiBvD,CAAC;AAMF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,gBAAgB,GAC3B,SAAS,MAAM,EACf,MAAM,OAAO,SAAS,EAAE,cAAc,CAAC,MAAM,CAAC,EAC9C,MAAM;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EAC3C,OAAM;IAAE,MAAM,CAAC,EAAE,SAAS,GAAG,KAAK,GAAG,IAAI,CAAA;CAAO,KAC/C,OAAO,CAAC,OAAO,SAAS,EAAE,cAAc,GAAG,IAAI,CA8EjD,CAAC"}
1
+ {"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"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"}
package/lib/transport.js CHANGED
@@ -281,6 +281,37 @@ export const sendMetricsBatch = async (ingestUrl, token, metrics) => {
281
281
  // best-effort
282
282
  }
283
283
  };
284
+ /**
285
+ * v2.1 W2 — POST a batched set of auto-instrument runtime metric
286
+ * points. Sibling of sendMetricsBatch; different endpoint
287
+ * (`/v1/runtime-metrics:batch`) because the storage shape +
288
+ * validation rules + rate-limit budget differ — see
289
+ * docs/design/v2-metrics.md.
290
+ *
291
+ * Returns true on 2xx so the caller can leave the batch drained;
292
+ * returns false on anything else (network error / non-2xx) so the
293
+ * caller rebuffer-and-retries on the next flush via
294
+ * `rebufferRuntimeMetrics(batch)`.
295
+ */
296
+ export const sendRuntimeMetricsBatch = async (ingestUrl, token, metrics) => {
297
+ if (metrics.length === 0)
298
+ return true;
299
+ try {
300
+ const resp = await fetch(`${ingestUrl}/v1/runtime-metrics:batch`, {
301
+ body: JSON.stringify({ metrics }),
302
+ headers: {
303
+ Authorization: `Bearer ${token}`,
304
+ 'Content-Type': 'application/json',
305
+ 'Sentori-Sdk': `react-native/${SDK_VERSION}`,
306
+ },
307
+ method: 'POST',
308
+ });
309
+ return resp.ok;
310
+ }
311
+ catch {
312
+ return false;
313
+ }
314
+ };
284
315
  /**
285
316
  * v0.8.2 — submit a user-supplied bug report. Fire-and-forget; resolves
286
317
  * with the server-assigned id on success or `null` on any failure.
@@ -1 +1 @@
1
- {"version":3,"file":"transport.js","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../src/transport.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": "2.0.0",
3
+ "version": "2.2.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)",
@@ -92,6 +92,6 @@
92
92
  "access": "public"
93
93
  },
94
94
  "dependencies": {
95
- "@goliapkg/sentori-core": "^1.0.0"
95
+ "@goliapkg/sentori-core": "^1.2.0"
96
96
  }
97
97
  }
@@ -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
+ });
@@ -0,0 +1,121 @@
1
+ /**
2
+ * v2.3 W6.3 — Sentry-compat translation layer coverage.
3
+ *
4
+ * We exercise the pure-function pieces directly via the test hooks
5
+ * exported from the compat module (parseDsn, mapCategoryToType,
6
+ * mapLevel). The stateful pieces — init / captureException /
7
+ * setUser dispatching to the native init + scope — are covered by
8
+ * the upstream Sentori-native tests (sdk.test, before-send.test);
9
+ * the compat layer only re-shapes the call arguments before
10
+ * delegating, so testing the re-shape is enough.
11
+ */
12
+ import { describe, expect, test } from 'bun:test';
13
+
14
+ import {
15
+ __mapCategoryToTypeForTests,
16
+ __mapLevelForTests,
17
+ __parseDsnForTests,
18
+ Severity,
19
+ } from '../compat/sentry';
20
+
21
+ describe('parseDsn', () => {
22
+ test('extracts token + ingestUrl from a Sentori DSN', () => {
23
+ const r = __parseDsnForTests(
24
+ 'https://st_pk_testabcdef@ingest.sentori.golia.jp/1',
25
+ );
26
+ expect(r.token).toBe('st_pk_testabcdef');
27
+ expect(r.ingestUrl).toBe('https://ingest.sentori.golia.jp');
28
+ });
29
+
30
+ test('honours custom port + host', () => {
31
+ const r = __parseDsnForTests('https://st_pk_x@self-hosted.example.com:8443/42');
32
+ expect(r.token).toBe('st_pk_x');
33
+ expect(r.ingestUrl).toBe('https://self-hosted.example.com:8443');
34
+ });
35
+
36
+ test('rejects non-Sentori token prefix with a clear pointer', () => {
37
+ expect(() =>
38
+ __parseDsnForTests('https://abcd1234@sentry.io/12345'),
39
+ ).toThrow(/st_pk_/);
40
+ });
41
+
42
+ test('rejects DSN without user-info (no token)', () => {
43
+ expect(() => __parseDsnForTests('https://sentry.io/12345')).toThrow();
44
+ });
45
+
46
+ test('rejects malformed URL', () => {
47
+ expect(() => __parseDsnForTests('not-a-url')).toThrow(/not a valid URL/);
48
+ });
49
+ });
50
+
51
+ describe('mapCategoryToType', () => {
52
+ test('user-interaction categories → user', () => {
53
+ for (const c of ['auth', 'click', 'gesture', 'input', 'touch', 'ui']) {
54
+ expect(__mapCategoryToTypeForTests(c)).toBe('user');
55
+ }
56
+ });
57
+
58
+ test('network categories → net', () => {
59
+ for (const c of ['fetch', 'http', 'xhr']) {
60
+ expect(__mapCategoryToTypeForTests(c)).toBe('net');
61
+ }
62
+ });
63
+
64
+ test('navigation categories → nav', () => {
65
+ for (const c of ['nav', 'navigation', 'route']) {
66
+ expect(__mapCategoryToTypeForTests(c)).toBe('nav');
67
+ }
68
+ });
69
+
70
+ test('log-shaped categories → log', () => {
71
+ for (const c of ['console', 'log', 'sentry']) {
72
+ expect(__mapCategoryToTypeForTests(c)).toBe('log');
73
+ }
74
+ });
75
+
76
+ test('unknown category → custom', () => {
77
+ expect(__mapCategoryToTypeForTests('whatever')).toBe('custom');
78
+ });
79
+
80
+ test('undefined → undefined (pass-through to native default)', () => {
81
+ expect(__mapCategoryToTypeForTests(undefined)).toBeUndefined();
82
+ });
83
+ });
84
+
85
+ describe('mapLevel', () => {
86
+ test("Sentry's 'critical' maps to Sentori's 'fatal'", () => {
87
+ expect(__mapLevelForTests('critical')).toBe('fatal');
88
+ });
89
+
90
+ test("Sentry's 'log' maps to Sentori's 'info' (no separate Log level)", () => {
91
+ expect(__mapLevelForTests('log')).toBe('info');
92
+ });
93
+
94
+ test('5-level syslog names pass through unchanged', () => {
95
+ expect(__mapLevelForTests('fatal')).toBe('fatal');
96
+ expect(__mapLevelForTests('error')).toBe('error');
97
+ expect(__mapLevelForTests('warning')).toBe('warning');
98
+ expect(__mapLevelForTests('info')).toBe('info');
99
+ expect(__mapLevelForTests('debug')).toBe('debug');
100
+ });
101
+
102
+ test('undefined → undefined', () => {
103
+ expect(__mapLevelForTests(undefined)).toBeUndefined();
104
+ });
105
+ });
106
+
107
+ describe('Severity export', () => {
108
+ test('Critical collapses onto fatal', () => {
109
+ expect(Severity.Critical).toBe('fatal');
110
+ });
111
+ test('Log collapses onto info', () => {
112
+ expect(Severity.Log).toBe('info');
113
+ });
114
+ test('standard levels are themselves', () => {
115
+ expect(Severity.Fatal).toBe('fatal');
116
+ expect(Severity.Error).toBe('error');
117
+ expect(Severity.Warning).toBe('warning');
118
+ expect(Severity.Info).toBe('info');
119
+ expect(Severity.Debug).toBe('debug');
120
+ });
121
+ });
@@ -0,0 +1,109 @@
1
+ import { afterEach, beforeEach, expect, test } from 'bun:test';
2
+
3
+ import {
4
+ __peekRuntimeMetricsSize,
5
+ __resetRuntimeMetricsForTests,
6
+ drainRuntimeMetricsForFlush,
7
+ } from '@goliapkg/sentori-core';
8
+
9
+ import {
10
+ __forceEmitFpsForTests,
11
+ __pushSampleForTests,
12
+ __resetFpsInstrumentForTests,
13
+ startFpsInstrument,
14
+ stopFpsInstrument,
15
+ } from '../runtime-metrics-fps';
16
+ import {
17
+ __forceHeapTickForTests,
18
+ __peekHeapInstrumentState,
19
+ startHeapInstrument,
20
+ stopHeapInstrument,
21
+ } from '../runtime-metrics-heap';
22
+
23
+ beforeEach(() => {
24
+ __resetRuntimeMetricsForTests();
25
+ __resetFpsInstrumentForTests();
26
+ });
27
+
28
+ afterEach(() => {
29
+ stopFpsInstrument();
30
+ stopHeapInstrument();
31
+ });
32
+
33
+ test('fps: pushes p50 + p95 emits into the runtime metrics ring', () => {
34
+ // 300 samples at a steady 16.67 ms cadence ≈ 60 fps.
35
+ for (let i = 0; i < 300; i++) {
36
+ __pushSampleForTests(16.67);
37
+ }
38
+ __forceEmitFpsForTests();
39
+
40
+ const drained = drainRuntimeMetricsForFlush();
41
+ expect(drained.length).toBe(2);
42
+ const names = drained.map((m) => m.name).sort();
43
+ expect(names).toEqual(['runtime.fps.p50', 'runtime.fps.p95']);
44
+ // Both should land near 60 fps.
45
+ const p50 = drained.find((m) => m.name === 'runtime.fps.p50')!;
46
+ expect(p50.value).toBeGreaterThanOrEqual(58);
47
+ expect(p50.value).toBeLessThanOrEqual(62);
48
+ });
49
+
50
+ test('fps: mixed-cadence run separates p50 from p95 sensibly', () => {
51
+ // 270 fast frames (60 fps) + 30 stutters (30 fps). p95 should
52
+ // land at the stutter zone.
53
+ for (let i = 0; i < 270; i++) __pushSampleForTests(16.67);
54
+ for (let i = 0; i < 30; i++) __pushSampleForTests(33.33);
55
+ __forceEmitFpsForTests();
56
+
57
+ const drained = drainRuntimeMetricsForFlush();
58
+ const p50 = drained.find((m) => m.name === 'runtime.fps.p50')!.value;
59
+ const p95 = drained.find((m) => m.name === 'runtime.fps.p95')!.value;
60
+ // p50 stays at the smooth-frame zone.
61
+ expect(p50).toBeGreaterThanOrEqual(58);
62
+ // p95 (worst-95th of Δt → slowest 5%) should drop into the
63
+ // 30 fps zone.
64
+ expect(p95).toBeLessThanOrEqual(35);
65
+ });
66
+
67
+ test('fps: start is idempotent — second call is a no-op', () => {
68
+ startFpsInstrument();
69
+ // Calling start twice mustn't spin up a second rAF loop. We
70
+ // don't directly observe that here (no two-loop probe), but
71
+ // we assert start doesn't throw + state stays running once.
72
+ expect(() => startFpsInstrument()).not.toThrow();
73
+ stopFpsInstrument();
74
+ });
75
+
76
+ test('heap: start is a no-op on hosts without performance.memory', () => {
77
+ // The default test runtime (bun) doesn't expose
78
+ // performance.memory, so start should silently skip and
79
+ // never schedule a timer.
80
+ startHeapInstrument();
81
+ expect(__peekHeapInstrumentState().running).toBe(false);
82
+ });
83
+
84
+ test('heap: force tick is a no-op on hosts without performance.memory', () => {
85
+ __forceHeapTickForTests();
86
+ // No metric should land in the ring.
87
+ expect(__peekRuntimeMetricsSize()).toBe(0);
88
+ });
89
+
90
+ test('heap: emits when performance.memory is shimmed', () => {
91
+ // Shim performance.memory so the read path exercises.
92
+ const g = globalThis as {
93
+ performance?: { memory?: { usedJSHeapSize?: number; totalJSHeapSize?: number } };
94
+ };
95
+ const before = g.performance;
96
+ g.performance = {
97
+ ...(before ?? {}),
98
+ memory: { usedJSHeapSize: 12_345_678, totalJSHeapSize: 23_456_789 },
99
+ };
100
+ try {
101
+ __forceHeapTickForTests();
102
+ const drained = drainRuntimeMetricsForFlush();
103
+ const names = drained.map((m) => m.name).sort();
104
+ expect(names).toEqual(['runtime.heap.total_bytes', 'runtime.heap.used_bytes']);
105
+ expect(drained.find((m) => m.name === 'runtime.heap.used_bytes')!.value).toBe(12_345_678);
106
+ } finally {
107
+ g.performance = before;
108
+ }
109
+ });
@@ -0,0 +1,78 @@
1
+ import { afterEach, beforeEach, expect, test } from 'bun:test';
2
+
3
+ import {
4
+ __resetRuntimeMetricsForTests,
5
+ drainRuntimeMetricsForFlush,
6
+ } from '@goliapkg/sentori-core';
7
+
8
+ import {
9
+ __forceNetworkEmitForTests,
10
+ __peekNetworkCountersForTests,
11
+ __resetNetworkBytesForTests,
12
+ estimateRequestBytes,
13
+ estimateResponseBytes,
14
+ recordNetworkBytes,
15
+ } from '../runtime-metrics-network';
16
+
17
+ beforeEach(() => {
18
+ __resetRuntimeMetricsForTests();
19
+ __resetNetworkBytesForTests();
20
+ });
21
+
22
+ afterEach(() => __resetNetworkBytesForTests());
23
+
24
+ test('recordNetworkBytes: cumulates sent + received separately', () => {
25
+ recordNetworkBytes(100, 200);
26
+ recordNetworkBytes(50, 0);
27
+ recordNetworkBytes(0, 25);
28
+ const { sent, received } = __peekNetworkCountersForTests();
29
+ expect(sent).toBe(150);
30
+ expect(received).toBe(225);
31
+ });
32
+
33
+ test('force emit: flushes both counters into the ring + resets', () => {
34
+ recordNetworkBytes(1234, 5678);
35
+ __forceNetworkEmitForTests();
36
+
37
+ const drained = drainRuntimeMetricsForFlush();
38
+ expect(drained.length).toBe(2);
39
+ const names = drained.map((m) => m.name).sort();
40
+ expect(names).toEqual(['runtime.network.bytes_received', 'runtime.network.bytes_sent']);
41
+ expect(drained.find((m) => m.name === 'runtime.network.bytes_sent')!.value).toBe(1234);
42
+ expect(drained.find((m) => m.name === 'runtime.network.bytes_received')!.value).toBe(5678);
43
+
44
+ const { sent, received } = __peekNetworkCountersForTests();
45
+ expect(sent).toBe(0);
46
+ expect(received).toBe(0);
47
+ });
48
+
49
+ test('force emit: skips zero counters (no empty metric emit)', () => {
50
+ __forceNetworkEmitForTests();
51
+ expect(drainRuntimeMetricsForFlush().length).toBe(0);
52
+ });
53
+
54
+ test('estimateRequestBytes: handles string body', () => {
55
+ expect(estimateRequestBytes({ body: 'hello world' })).toBe(11);
56
+ expect(estimateRequestBytes()).toBe(0);
57
+ expect(estimateRequestBytes({})).toBe(0);
58
+ });
59
+
60
+ test('estimateRequestBytes: reads byteLength from ArrayBuffer-like body', () => {
61
+ const buf = new Uint8Array([1, 2, 3, 4, 5]);
62
+ expect(estimateRequestBytes({ body: buf })).toBe(5);
63
+ });
64
+
65
+ test('estimateResponseBytes: parses content-length header', () => {
66
+ const h = new Headers({ 'content-length': '1024' });
67
+ expect(estimateResponseBytes(h)).toBe(1024);
68
+ });
69
+
70
+ test('estimateResponseBytes: returns 0 when header missing (chunked / stripped)', () => {
71
+ expect(estimateResponseBytes(new Headers())).toBe(0);
72
+ expect(estimateResponseBytes(null)).toBe(0);
73
+ });
74
+
75
+ test('estimateResponseBytes: returns 0 on unparseable header (undercount-safe)', () => {
76
+ const h = new Headers({ 'content-length': 'nope' });
77
+ expect(estimateResponseBytes(h)).toBe(0);
78
+ });
package/src/capture.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import {
2
+ type BeforeSendHook,
2
3
  type CaptureMessageOptions,
3
4
  hashIdentities,
4
5
  type LinkBy,
@@ -296,11 +297,49 @@ export const captureError = (error: Error, extras?: CaptureExtras): void => {
296
297
  'kinds=', (event.attachments ?? []).map((a) => a.kind).join(',') || '(none)',
297
298
  'breadcrumbsAtEnqueue=', __peekBreadcrumbCount(),
298
299
  );
299
- enqueue(event);
300
+ // v2.3 — host beforeSend hook. Sync; drops on null, falls back
301
+ // to unmutated event on throw or non-event return.
302
+ const finalEvent = applyBeforeSend(event, config.beforeSend);
303
+ if (finalEvent === null) return;
304
+ enqueue(finalEvent);
300
305
  };
301
306
  void pipeline();
302
307
  };
303
308
 
309
+ /**
310
+ * v2.3 — invoke the host's `beforeSend` hook (if any) under the
311
+ * NEVER rule. Returns the (possibly mutated) event, or null to
312
+ * drop. A throw / non-event return is treated as a no-op
313
+ * (one-shot warn + send unmodified) so a buggy host hook can't
314
+ * stall captures.
315
+ */
316
+ let _beforeSendThrewWarned = false;
317
+ function applyBeforeSend(event: Event, hook: BeforeSendHook | undefined): Event | null {
318
+ if (!hook) return event;
319
+ try {
320
+ const result = hook(event);
321
+ if (result === null) {
322
+ logger.debug('capture', 'beforeSend dropped event', 'eventId=', event.id);
323
+ return null;
324
+ }
325
+ if (typeof result !== 'object' || !result || typeof (result as Event).id !== 'string') {
326
+ // Host returned a non-event shape; fall back.
327
+ if (!_beforeSendThrewWarned) {
328
+ _beforeSendThrewWarned = true;
329
+ logger.warn('capture', 'beforeSend returned non-event shape; falling back to unmodified event');
330
+ }
331
+ return event;
332
+ }
333
+ return result;
334
+ } catch (e) {
335
+ if (!_beforeSendThrewWarned) {
336
+ _beforeSendThrewWarned = true;
337
+ logger.warn('capture', 'beforeSend threw; falling back to unmodified event', e);
338
+ }
339
+ return event;
340
+ }
341
+ }
342
+
304
343
  /** v0.9.6 #2 — upload the wireframe replay ring as a `replay`
305
344
  * attachment. Plain NDJSON (one snapshot per line) — server may
306
345
  * gzip on storage; the network upload is base64.
@@ -452,7 +491,9 @@ export const captureMessage = safeFn(
452
491
  breadcrumbs: crumbs,
453
492
  };
454
493
 
455
- enqueue(event);
494
+ const finalEvent = applyBeforeSend(event, config.beforeSend);
495
+ if (finalEvent === null) return;
496
+ enqueue(finalEvent);
456
497
  },
457
498
  );
458
499
 
@@ -462,6 +503,11 @@ export const captureMessage = safeFn(
462
503
  * same code path captureException runs in production. */
463
504
  export const __captureAndAttachReplayForTests = captureAndAttachReplay;
464
505
 
506
+ /** v2.3 — test hook for the beforeSend dispatcher. The dispatcher
507
+ * is internal so the unit test reaches it directly without
508
+ * needing to stub the whole transport pipeline. */
509
+ export const __applyBeforeSendForTests = applyBeforeSend;
510
+
465
511
  /** Phase 42 sub-D.08: per-session screenshot quota gate. */
466
512
  function allowScreenshot(): boolean {
467
513
  const budget = screenshotBudget();
@@ -67,6 +67,10 @@ type SentryInitOpts = {
67
67
  [other: string]: unknown
68
68
  }
69
69
 
70
+ /** Exported for tests only — direct callers should use `Sentry.init`,
71
+ * which threads the parsed DSN through the rest of the init machinery. */
72
+ export const __parseDsnForTests = parseDsn
73
+
70
74
  function parseDsn(dsn: string): { token: string; ingestUrl: string } {
71
75
  // Sentry DSN shape: `https://<key>@<host>[:port][/<projectId>]`
72
76
  // Sentori cares about `<key>` (must be `st_pk_…`) and `<host>`.
@@ -343,6 +347,10 @@ type SentryBreadcrumb = {
343
347
 
344
348
  type SentoriBreadcrumbType = 'custom' | 'log' | 'nav' | 'net' | 'user'
345
349
 
350
+ /** Exported for tests only. */
351
+ export const __mapCategoryToTypeForTests = mapCategoryToType
352
+ export const __mapLevelForTests = mapLevel
353
+
346
354
  function mapCategoryToType(category: string | undefined): SentoriBreadcrumbType | undefined {
347
355
  if (!category) return undefined
348
356
  if (['auth', 'click', 'gesture', 'input', 'touch', 'ui'].includes(category)) return 'user'