@interfere/next 0.0.9 → 0.0.12

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 (135) hide show
  1. package/README.md +308 -0
  2. package/dist/__tests__/build/with-interfere-coverage.test.d.ts +2 -0
  3. package/dist/__tests__/build/with-interfere-coverage.test.d.ts.map +1 -0
  4. package/dist/__tests__/build/with-interfere-coverage.test.js +325 -0
  5. package/dist/__tests__/build/with-interfere-coverage.test.js.map +1 -0
  6. package/dist/__tests__/build/with-interfere.test.d.ts +2 -0
  7. package/dist/__tests__/build/with-interfere.test.d.ts.map +1 -0
  8. package/dist/__tests__/build/with-interfere.test.js +425 -0
  9. package/dist/__tests__/build/with-interfere.test.js.map +1 -0
  10. package/dist/__tests__/core/client.test.d.ts.map +1 -0
  11. package/dist/__tests__/core/client.test.js +373 -0
  12. package/dist/__tests__/core/client.test.js.map +1 -0
  13. package/dist/__tests__/core/encoders.test.d.ts.map +1 -0
  14. package/dist/{core → __tests__/core}/encoders.test.js +20 -19
  15. package/dist/__tests__/core/encoders.test.js.map +1 -0
  16. package/dist/__tests__/core/rage-click.test.d.ts +2 -0
  17. package/dist/__tests__/core/rage-click.test.d.ts.map +1 -0
  18. package/dist/__tests__/core/rage-click.test.js +121 -0
  19. package/dist/__tests__/core/rage-click.test.js.map +1 -0
  20. package/dist/__tests__/core/session-manager.test.d.ts +2 -0
  21. package/dist/__tests__/core/session-manager.test.d.ts.map +1 -0
  22. package/dist/__tests__/core/session-manager.test.js +1132 -0
  23. package/dist/__tests__/core/session-manager.test.js.map +1 -0
  24. package/dist/__tests__/integration/release-upload.test.d.ts +2 -0
  25. package/dist/__tests__/integration/release-upload.test.d.ts.map +1 -0
  26. package/dist/__tests__/integration/release-upload.test.js +167 -0
  27. package/dist/__tests__/integration/release-upload.test.js.map +1 -0
  28. package/dist/__tests__/session/persistence.test.d.ts +2 -0
  29. package/dist/__tests__/session/persistence.test.d.ts.map +1 -0
  30. package/dist/__tests__/session/persistence.test.js +129 -0
  31. package/dist/__tests__/session/persistence.test.js.map +1 -0
  32. package/dist/__tests__/session/session-summary.test.d.ts +2 -0
  33. package/dist/__tests__/session/session-summary.test.d.ts.map +1 -0
  34. package/dist/__tests__/session/session-summary.test.js +763 -0
  35. package/dist/__tests__/session/session-summary.test.js.map +1 -0
  36. package/dist/build/index.d.ts +3 -0
  37. package/dist/build/index.d.ts.map +1 -0
  38. package/dist/build/index.js +2 -0
  39. package/dist/build/index.js.map +1 -0
  40. package/dist/build/with-interfere.d.ts +49 -0
  41. package/dist/build/with-interfere.d.ts.map +1 -0
  42. package/dist/build/with-interfere.js +261 -0
  43. package/dist/build/with-interfere.js.map +1 -0
  44. package/dist/core/client-core.d.ts +27 -0
  45. package/dist/core/client-core.d.ts.map +1 -0
  46. package/dist/core/client-core.js +152 -0
  47. package/dist/core/client-core.js.map +1 -0
  48. package/dist/core/client.d.ts +71 -18
  49. package/dist/core/client.d.ts.map +1 -1
  50. package/dist/core/client.js +105 -97
  51. package/dist/core/client.js.map +1 -1
  52. package/dist/core/constants.d.ts +12 -0
  53. package/dist/core/constants.d.ts.map +1 -0
  54. package/dist/core/constants.js +17 -0
  55. package/dist/core/constants.js.map +1 -0
  56. package/dist/core/debug.d.ts +47 -0
  57. package/dist/core/debug.d.ts.map +1 -0
  58. package/dist/core/debug.js +79 -0
  59. package/dist/core/debug.js.map +1 -0
  60. package/dist/core/error-handlers.d.ts +14 -0
  61. package/dist/core/error-handlers.d.ts.map +1 -0
  62. package/dist/core/error-handlers.js +191 -0
  63. package/dist/core/error-handlers.js.map +1 -0
  64. package/dist/core/runtime.d.ts +7 -0
  65. package/dist/core/runtime.d.ts.map +1 -0
  66. package/dist/core/runtime.js +16 -0
  67. package/dist/core/runtime.js.map +1 -0
  68. package/dist/index.d.ts +10 -5
  69. package/dist/index.d.ts.map +1 -1
  70. package/dist/index.js +9 -5
  71. package/dist/index.js.map +1 -1
  72. package/dist/next/middleware.d.ts +8 -0
  73. package/dist/next/middleware.d.ts.map +1 -0
  74. package/dist/next/middleware.js +139 -0
  75. package/dist/next/middleware.js.map +1 -0
  76. package/dist/persistence/storage.d.ts +5 -0
  77. package/dist/persistence/storage.d.ts.map +1 -0
  78. package/dist/persistence/storage.js +67 -0
  79. package/dist/persistence/storage.js.map +1 -0
  80. package/dist/react/provider.d.ts +12 -7
  81. package/dist/react/provider.d.ts.map +1 -1
  82. package/dist/react/provider.jsx +37 -10
  83. package/dist/react/provider.jsx.map +1 -1
  84. package/dist/session/constants.d.ts +19 -0
  85. package/dist/session/constants.d.ts.map +1 -0
  86. package/dist/session/constants.js +34 -0
  87. package/dist/session/constants.js.map +1 -0
  88. package/dist/session/persistence.d.ts +58 -0
  89. package/dist/session/persistence.d.ts.map +1 -0
  90. package/dist/session/persistence.js +179 -0
  91. package/dist/session/persistence.js.map +1 -0
  92. package/dist/session/rage-click.d.ts +17 -0
  93. package/dist/session/rage-click.d.ts.map +1 -0
  94. package/dist/session/rage-click.js +104 -0
  95. package/dist/session/rage-click.js.map +1 -0
  96. package/dist/session/replay.d.ts +3 -0
  97. package/dist/session/replay.d.ts.map +1 -0
  98. package/dist/session/replay.js +109 -0
  99. package/dist/session/replay.js.map +1 -0
  100. package/dist/session/session-manager.d.ts +126 -0
  101. package/dist/session/session-manager.d.ts.map +1 -0
  102. package/dist/session/session-manager.js +635 -0
  103. package/dist/session/session-manager.js.map +1 -0
  104. package/dist/session/session-summary.d.ts +3 -0
  105. package/dist/session/session-summary.d.ts.map +1 -0
  106. package/dist/session/session-summary.js +214 -0
  107. package/dist/session/session-summary.js.map +1 -0
  108. package/dist/types/storage.d.ts +7 -0
  109. package/dist/types/storage.d.ts.map +1 -0
  110. package/dist/types/storage.js +2 -0
  111. package/dist/types/storage.js.map +1 -0
  112. package/package.json +32 -11
  113. package/dist/core/client.test.d.ts.map +0 -1
  114. package/dist/core/client.test.js +0 -227
  115. package/dist/core/client.test.js.map +0 -1
  116. package/dist/core/encoders.test.d.ts.map +0 -1
  117. package/dist/core/encoders.test.js.map +0 -1
  118. package/dist/edge/edge.d.ts +0 -11
  119. package/dist/edge/edge.d.ts.map +0 -1
  120. package/dist/edge/edge.js +0 -41
  121. package/dist/edge/edge.js.map +0 -1
  122. package/dist/edge/edge.test.d.ts +0 -2
  123. package/dist/edge/edge.test.d.ts.map +0 -1
  124. package/dist/edge/edge.test.js +0 -109
  125. package/dist/edge/edge.test.js.map +0 -1
  126. package/dist/server/server.d.ts +0 -6
  127. package/dist/server/server.d.ts.map +0 -1
  128. package/dist/server/server.js +0 -35
  129. package/dist/server/server.js.map +0 -1
  130. package/dist/server/server.test.d.ts +0 -2
  131. package/dist/server/server.test.d.ts.map +0 -1
  132. package/dist/server/server.test.js +0 -88
  133. package/dist/server/server.test.js.map +0 -1
  134. /package/dist/{core → __tests__/core}/client.test.d.ts +0 -0
  135. /package/dist/{core → __tests__/core}/encoders.test.d.ts +0 -0
@@ -1,22 +1,75 @@
1
- import type { Config, EventType } from '@interfere/types';
2
- declare class InterfereClient {
3
- private config;
4
- private queue;
5
- private seq;
6
- private sessionId;
7
- private runtime;
8
- private flushTimer?;
9
- constructor(config: Partial<Config>);
10
- private detectRuntime;
11
- private generateSessionId;
12
- private startFlushTimer;
13
- capture(type: EventType, payload: unknown): void;
14
- flush(): void;
15
- getSessionId(): string;
16
- }
17
- export declare const init: (config: Partial<Config>) => InterfereClient;
1
+ /**
2
+ * Public API for Interfere SDK
3
+ *
4
+ * This module manages the singleton instance and provides
5
+ * the public-facing functions for the SDK.
6
+ */
7
+ import type { InitConfig } from "@interfere/schemas/config";
8
+ import type { EventType } from "@interfere/schemas/envelope";
9
+ import { InterfereClient } from "./client-core.js";
10
+ /**
11
+ * Initialize the Interfere SDK
12
+ *
13
+ * @param props - Configuration including surface ID and options
14
+ * @returns The initialized client instance
15
+ * @throws Error if surface is not provided or buildId/releaseId are missing
16
+ */
17
+ export declare const init: (props: InitConfig) => InterfereClient;
18
+ /**
19
+ * Capture an event
20
+ *
21
+ * @param type - The type of event to capture
22
+ * @param payload - The event payload
23
+ * @throws Error if SDK is not initialized
24
+ */
18
25
  export declare const capture: (type: EventType, payload: unknown) => void;
26
+ /**
27
+ * Flush any pending events immediately
28
+ */
19
29
  export declare const flush: () => void;
30
+ /**
31
+ * Get the current session ID
32
+ *
33
+ * @returns The current session ID
34
+ * @throws Error if SDK is not initialized
35
+ */
20
36
  export declare const getSessionId: () => string;
21
- export {};
37
+ /**
38
+ * Get the current window ID
39
+ *
40
+ * @returns The current window ID
41
+ * @throws Error if SDK is not initialized
42
+ */
43
+ export declare const getWindowId: () => string;
44
+ /**
45
+ * Subscribe to session ID changes
46
+ *
47
+ * @param callback - Callback to invoke when session ID changes
48
+ * @returns Unsubscribe function
49
+ * @throws Error if SDK is not initialized
50
+ */
51
+ export declare const onSessionId: (callback: (sessionId: string | null, windowId: string | null) => void) => (() => void);
52
+ /**
53
+ * Reset the current session
54
+ *
55
+ * @throws Error if SDK is not initialized
56
+ */
57
+ export declare const resetSession: () => void;
58
+ /**
59
+ * Get debug information (development only)
60
+ *
61
+ * @returns Debug information about the current SDK state
62
+ * @throws Error if SDK is not initialized
63
+ */
64
+ export declare const getDebugInfo: () => import("./debug.js").DebugInfo;
65
+ /**
66
+ * Get the current client instance
67
+ *
68
+ * @returns The current client instance or null if not initialized
69
+ */
70
+ export declare const getInstance: () => InterfereClient | null;
71
+ /**
72
+ * Destroy the SDK instance and clean up resources
73
+ */
74
+ export declare const destroy: () => void;
22
75
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAY,SAAS,EAAW,MAAM,kBAAkB,CAAC;AAG7E,cAAM,eAAe;IACnB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,GAAG,CAAK;IAChB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,UAAU,CAAC,CAAiB;gBAExB,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC;IAyBnC,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAoBhD,KAAK,IAAI,IAAI;IA8Bb,YAAY,IAAI,MAAM;CAGvB;AAID,eAAO,MAAM,IAAI,GAAI,QAAQ,OAAO,CAAC,MAAM,CAAC,KAAG,eAM9C,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,MAAM,SAAS,EAAE,SAAS,OAAO,KAAG,IAK3D,CAAC;AAEF,eAAO,MAAM,KAAK,QAAO,IAExB,CAAC;AAEF,eAAO,MAAM,YAAY,QAAO,MAK/B,CAAC"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAKnD;;;;;;GAMG;AACH,eAAO,MAAM,IAAI,GAAI,OAAO,UAAU,KAAG,eAaxC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,GAAI,MAAM,SAAS,EAAE,SAAS,OAAO,KAAG,IAK3D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,KAAK,QAAO,IAExB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,YAAY,QAAO,MAK/B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,WAAW,QAAO,MAK9B,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,GACtB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,KACpE,CAAC,MAAM,IAAI,CAKb,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,YAAY,QAAO,IAK/B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,YAAY,sCAKxB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,WAAW,QAAO,eAAe,GAAG,IAAgB,CAAC;AAElE;;GAEG;AACH,eAAO,MAAM,OAAO,QAAO,IAK1B,CAAC"}
@@ -1,115 +1,123 @@
1
- import { encode } from './encoders.js';
2
- class InterfereClient {
3
- config;
4
- queue = [];
5
- seq = 0;
6
- sessionId;
7
- runtime;
8
- flushTimer;
9
- constructor(config) {
10
- if (!config.projectId) {
11
- throw new Error('[interfere] projectId required');
12
- }
13
- this.runtime = this.detectRuntime();
14
- this.sessionId = config.sessionId || this.generateSessionId();
15
- this.config = {
16
- projectId: config.projectId,
17
- endpoint: config.endpoint || 'https://ingest.interfere.com/v0',
18
- env: config.env || 'development',
19
- flushInterval: config.flushInterval || 5000,
20
- debug: config.debug,
21
- runtime: this.runtime,
22
- sessionId: this.sessionId,
23
- };
24
- if (this.runtime === 'client') {
25
- this.startFlushTimer();
26
- if (typeof window !== 'undefined') {
27
- window.addEventListener('beforeunload', () => this.flush());
28
- }
29
- }
30
- }
31
- detectRuntime() {
32
- if (typeof window !== 'undefined') {
33
- return 'client';
34
- }
35
- if (typeof globalThis !== 'undefined' && 'EdgeRuntime' in globalThis) {
36
- return 'edge';
37
- }
38
- return 'server';
39
- }
40
- generateSessionId() {
41
- return crypto.randomUUID();
42
- }
43
- startFlushTimer() {
44
- this.flushTimer = setInterval(() => this.flush(), this.config.flushInterval);
45
- }
46
- capture(type, payload) {
47
- const envelope = {
48
- v: '0',
49
- runtime: this.runtime,
50
- project: this.config.projectId,
51
- env: this.config.env,
52
- client_ts: Date.now(),
53
- session_id: this.sessionId,
54
- seq: ++this.seq,
55
- type,
56
- payload: encode(payload),
57
- };
58
- this.queue.push(envelope);
59
- if (this.runtime !== 'client' || this.queue.length >= 10) {
60
- this.flush();
61
- }
62
- }
63
- flush() {
64
- if (this.queue.length === 0) {
65
- return;
66
- }
67
- const batch = [...this.queue];
68
- this.queue = [];
69
- const body = JSON.stringify(batch);
70
- if (this.runtime === 'client' &&
71
- typeof window !== 'undefined' &&
72
- typeof window.navigator?.sendBeacon === 'function') {
73
- window.navigator.sendBeacon(this.config.endpoint, body);
74
- }
75
- else {
76
- fetch(this.config.endpoint, {
77
- method: 'POST',
78
- headers: { 'Content-Type': 'application/json' },
79
- body,
80
- }).catch((_err) => {
81
- if (this.config.debug) {
82
- // In production, this would be sent to a logging service
83
- // For now, we'll silently fail in non-debug mode
84
- }
85
- });
86
- }
87
- }
88
- getSessionId() {
89
- return this.sessionId;
90
- }
91
- }
1
+ /**
2
+ * Public API for Interfere SDK
3
+ *
4
+ * This module manages the singleton instance and provides
5
+ * the public-facing functions for the SDK.
6
+ */
7
+ import { InterfereClient } from "./client-core.js";
8
+ // Singleton instance
92
9
  let instance = null;
93
- export const init = (config) => {
94
- if (!config.projectId) {
95
- throw new Error('[interfere] projectId required');
10
+ /**
11
+ * Initialize the Interfere SDK
12
+ *
13
+ * @param props - Configuration including surface ID and options
14
+ * @returns The initialized client instance
15
+ * @throws Error if surface is not provided or buildId/releaseId are missing
16
+ */
17
+ export const init = (props) => {
18
+ if (!props.surface) {
19
+ throw new Error("[Interfere] surface is required");
20
+ }
21
+ // Clean up existing instance if any
22
+ if (instance) {
23
+ instance.destroy();
96
24
  }
97
- instance = new InterfereClient(config);
25
+ // Delegate normalization and defaults to the core client/schema
26
+ instance = new InterfereClient(props);
98
27
  return instance;
99
28
  };
29
+ /**
30
+ * Capture an event
31
+ *
32
+ * @param type - The type of event to capture
33
+ * @param payload - The event payload
34
+ * @throws Error if SDK is not initialized
35
+ */
100
36
  export const capture = (type, payload) => {
101
37
  if (!instance) {
102
- throw new Error('[interfere] not initialized');
38
+ throw new Error("[Interfere] Not initialized. Call init() first");
103
39
  }
104
40
  instance.capture(type, payload);
105
41
  };
42
+ /**
43
+ * Flush any pending events immediately
44
+ */
106
45
  export const flush = () => {
107
46
  instance?.flush();
108
47
  };
48
+ /**
49
+ * Get the current session ID
50
+ *
51
+ * @returns The current session ID
52
+ * @throws Error if SDK is not initialized
53
+ */
109
54
  export const getSessionId = () => {
110
55
  if (!instance) {
111
- throw new Error('[interfere] not initialized');
56
+ throw new Error("[Interfere] Not initialized. Call init() first");
112
57
  }
113
58
  return instance.getSessionId();
114
59
  };
60
+ /**
61
+ * Get the current window ID
62
+ *
63
+ * @returns The current window ID
64
+ * @throws Error if SDK is not initialized
65
+ */
66
+ export const getWindowId = () => {
67
+ if (!instance) {
68
+ throw new Error("[Interfere] Not initialized. Call init() first");
69
+ }
70
+ return instance.getWindowId();
71
+ };
72
+ /**
73
+ * Subscribe to session ID changes
74
+ *
75
+ * @param callback - Callback to invoke when session ID changes
76
+ * @returns Unsubscribe function
77
+ * @throws Error if SDK is not initialized
78
+ */
79
+ export const onSessionId = (callback) => {
80
+ if (!instance) {
81
+ throw new Error("[Interfere] Not initialized. Call init() first");
82
+ }
83
+ return instance.onSessionId(callback);
84
+ };
85
+ /**
86
+ * Reset the current session
87
+ *
88
+ * @throws Error if SDK is not initialized
89
+ */
90
+ export const resetSession = () => {
91
+ if (!instance) {
92
+ throw new Error("[Interfere] Not initialized. Call init() first");
93
+ }
94
+ instance.resetSession();
95
+ };
96
+ /**
97
+ * Get debug information (development only)
98
+ *
99
+ * @returns Debug information about the current SDK state
100
+ * @throws Error if SDK is not initialized
101
+ */
102
+ export const getDebugInfo = () => {
103
+ if (!instance) {
104
+ throw new Error("[Interfere] Not initialized. Call init() first");
105
+ }
106
+ return instance.getDebugInfo();
107
+ };
108
+ /**
109
+ * Get the current client instance
110
+ *
111
+ * @returns The current client instance or null if not initialized
112
+ */
113
+ export const getInstance = () => instance;
114
+ /**
115
+ * Destroy the SDK instance and clean up resources
116
+ */
117
+ export const destroy = () => {
118
+ if (instance) {
119
+ instance.destroy();
120
+ instance = null;
121
+ }
122
+ };
115
123
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,qBAAqB;AACrB,IAAI,QAAQ,GAA2B,IAAI,CAAC;AAE5C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,KAAiB,EAAmB,EAAE;IACzD,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IAED,oCAAoC;IACpC,IAAI,QAAQ,EAAE,CAAC;QACb,QAAQ,CAAC,OAAO,EAAE,CAAC;IACrB,CAAC;IAED,gEAAgE;IAChE,QAAQ,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;IACtC,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,IAAe,EAAE,OAAgB,EAAQ,EAAE;IACjE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IACD,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAClC,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,GAAS,EAAE;IAC9B,QAAQ,EAAE,KAAK,EAAE,CAAC;AACpB,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,GAAW,EAAE;IACvC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,QAAQ,CAAC,YAAY,EAAE,CAAC;AACjC,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,GAAW,EAAE;IACtC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAC;AAChC,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,QAAqE,EACvD,EAAE;IAChB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACxC,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,GAAS,EAAE;IACrC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IACD,QAAQ,CAAC,YAAY,EAAE,CAAC;AAC1B,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,EAAE;IAC/B,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,QAAQ,CAAC,YAAY,EAAE,CAAC;AACjC,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,GAA2B,EAAE,CAAC,QAAQ,CAAC;AAElE;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,GAAS,EAAE;IAChC,IAAI,QAAQ,EAAE,CAAC;QACb,QAAQ,CAAC,OAAO,EAAE,CAAC;QACnB,QAAQ,GAAG,IAAI,CAAC;IAClB,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Core constants and configuration defaults
3
+ */
4
+ import type { EventType } from "@interfere/schemas/envelope";
5
+ export declare const BACKGROUND_EVENT_TYPES: EventType[];
6
+ export declare const MAX_QUEUE_SIZE = 10;
7
+ export declare const DEFAULT_FLUSH_INTERVAL = 10000;
8
+ export declare const API_PATHS: {
9
+ readonly INGEST_V0: "/ingest/v0";
10
+ readonly RELEASES: "/internal/releases";
11
+ };
12
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/core/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAG7D,eAAO,MAAM,sBAAsB,EAAE,SAAS,EAG7C,CAAC;AAGF,eAAO,MAAM,cAAc,KAAK,CAAC;AACjC,eAAO,MAAM,sBAAsB,QAAS,CAAC;AAG7C,eAAO,MAAM,SAAS;;;CAGZ,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Core constants and configuration defaults
3
+ */
4
+ // Background event types that don't count as user activity for session timeout
5
+ export const BACKGROUND_EVENT_TYPES = [
6
+ "replay_chunk",
7
+ "session_summary",
8
+ ];
9
+ // Queue thresholds
10
+ export const MAX_QUEUE_SIZE = 10;
11
+ export const DEFAULT_FLUSH_INTERVAL = 10_000; // 10 seconds
12
+ // API paths
13
+ export const API_PATHS = {
14
+ INGEST_V0: "/ingest/v0",
15
+ RELEASES: "/internal/releases",
16
+ };
17
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/core/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,+EAA+E;AAC/E,MAAM,CAAC,MAAM,sBAAsB,GAAgB;IACjD,cAAc;IACd,iBAAiB;CAClB,CAAC;AAEF,mBAAmB;AACnB,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AACjC,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC,CAAC,aAAa;AAE3D,YAAY;AACZ,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,SAAS,EAAE,YAAY;IACvB,QAAQ,EAAE,oBAAoB;CACtB,CAAC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Debug utilities for development
3
+ */
4
+ import type { Config } from "@interfere/schemas/config";
5
+ import type { InterferePersistence } from "../session/persistence";
6
+ import type { SessionIdManager } from "../session/session-manager";
7
+ import type { Runtime } from "./runtime";
8
+ export type DebugInfo = {
9
+ sessionId: string | null;
10
+ windowId: string | null;
11
+ sessionStartTimestamp: number | null;
12
+ lastActivityTimestamp: number | null;
13
+ sessionTimeoutMs: number;
14
+ sessionAge: number;
15
+ timeSinceLastActivity: number;
16
+ isSessionActive: boolean;
17
+ config: Config;
18
+ storageInfo: StorageInfo;
19
+ queueLength: number;
20
+ surface: string;
21
+ runtime: Runtime;
22
+ buildId: string;
23
+ releaseId: string;
24
+ };
25
+ export type StorageInfo = {
26
+ canUseLocalStorage: boolean;
27
+ canUseSessionStorage: boolean;
28
+ storageKeys: string[];
29
+ };
30
+ export declare class DebugUtils {
31
+ private readonly config;
32
+ private readonly sessionManager;
33
+ private readonly persistence;
34
+ private readonly surface;
35
+ private readonly runtime;
36
+ constructor(params: {
37
+ config: Config;
38
+ sessionManager: SessionIdManager;
39
+ persistence: InterferePersistence;
40
+ surface: string;
41
+ runtime: Runtime;
42
+ });
43
+ getDebugInfo(queueLength: number): DebugInfo;
44
+ private getStorageInfo;
45
+ private getStorageKeys;
46
+ }
47
+ //# sourceMappingURL=debug.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../src/core/debug.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,MAAM,MAAM,SAAS,GAAG;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,eAAe,EAAE,OAAO,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAmB;IAClD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAuB;IACnD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;gBAEtB,MAAM,EAAE;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,cAAc,EAAE,gBAAgB,CAAC;QACjC,WAAW,EAAE,oBAAoB,CAAC;QAClC,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,OAAO,CAAC;KAClB;IAQD,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS;IAkC5C,OAAO,CAAC,cAAc;IA+BtB,OAAO,CAAC,cAAc;CAcvB"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Debug utilities for development
3
+ */
4
+ export class DebugUtils {
5
+ config;
6
+ sessionManager;
7
+ persistence;
8
+ surface;
9
+ runtime;
10
+ constructor(params) {
11
+ this.config = params.config;
12
+ this.sessionManager = params.sessionManager;
13
+ this.persistence = params.persistence;
14
+ this.surface = params.surface;
15
+ this.runtime = params.runtime;
16
+ }
17
+ getDebugInfo(queueLength) {
18
+ const { sessionId, windowId, sessionStartTimestamp, lastActivityTimestamp, } = this.sessionManager.checkAndGetSessionAndWindowId(true);
19
+ const now = Date.now();
20
+ const sessionAge = sessionStartTimestamp ? now - sessionStartTimestamp : 0;
21
+ const timeSinceLastActivity = lastActivityTimestamp
22
+ ? now - lastActivityTimestamp
23
+ : 0;
24
+ return {
25
+ sessionId,
26
+ windowId,
27
+ sessionStartTimestamp,
28
+ lastActivityTimestamp,
29
+ sessionTimeoutMs: this.sessionManager.sessionTimeoutMs,
30
+ sessionAge,
31
+ timeSinceLastActivity,
32
+ isSessionActive: timeSinceLastActivity < this.sessionManager.sessionTimeoutMs,
33
+ config: this.config,
34
+ storageInfo: this.getStorageInfo(),
35
+ queueLength,
36
+ surface: this.surface,
37
+ runtime: this.runtime,
38
+ buildId: this.config.buildId,
39
+ releaseId: this.config.releaseId,
40
+ };
41
+ }
42
+ getStorageInfo() {
43
+ const persistenceType = this.config.persistence || "localStorage";
44
+ const isDisabled = this.persistence.isDisabled();
45
+ const canUseLocalStorage = !isDisabled && persistenceType === "localStorage";
46
+ const canUseSessionStorage = !isDisabled && persistenceType === "sessionStorage";
47
+ let storageKeys = [];
48
+ if (!isDisabled && typeof window !== "undefined") {
49
+ if (persistenceType === "localStorage" && window.localStorage) {
50
+ storageKeys = this.getStorageKeys(window.localStorage, "localStorage");
51
+ }
52
+ else if (persistenceType === "sessionStorage" &&
53
+ window.sessionStorage) {
54
+ storageKeys = this.getStorageKeys(window.sessionStorage, "sessionStorage");
55
+ }
56
+ }
57
+ return {
58
+ canUseLocalStorage,
59
+ canUseSessionStorage,
60
+ storageKeys,
61
+ };
62
+ }
63
+ getStorageKeys(storage, prefix) {
64
+ const keys = [];
65
+ try {
66
+ for (let i = 0; i < storage.length; i++) {
67
+ const key = storage.key(i);
68
+ if (key?.startsWith("interfere_")) {
69
+ keys.push(`${prefix}: ${key}`);
70
+ }
71
+ }
72
+ }
73
+ catch {
74
+ // Storage access might be blocked
75
+ }
76
+ return keys;
77
+ }
78
+ }
79
+ //# sourceMappingURL=debug.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug.js","sourceRoot":"","sources":["../../src/core/debug.ts"],"names":[],"mappings":"AAAA;;GAEG;AA+BH,MAAM,OAAO,UAAU;IACJ,MAAM,CAAS;IACf,cAAc,CAAmB;IACjC,WAAW,CAAuB;IAClC,OAAO,CAAS;IAChB,OAAO,CAAU;IAElC,YAAY,MAMX;QACC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;QAC5C,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAChC,CAAC;IAED,YAAY,CAAC,WAAmB;QAC9B,MAAM,EACJ,SAAS,EACT,QAAQ,EACR,qBAAqB,EACrB,qBAAqB,GACtB,GAAG,IAAI,CAAC,cAAc,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC;QAE5D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,UAAU,GAAG,qBAAqB,CAAC,CAAC,CAAC,GAAG,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,MAAM,qBAAqB,GAAG,qBAAqB;YACjD,CAAC,CAAC,GAAG,GAAG,qBAAqB;YAC7B,CAAC,CAAC,CAAC,CAAC;QAEN,OAAO;YACL,SAAS;YACT,QAAQ;YACR,qBAAqB;YACrB,qBAAqB;YACrB,gBAAgB,EAAE,IAAI,CAAC,cAAc,CAAC,gBAAgB;YACtD,UAAU;YACV,qBAAqB;YACrB,eAAe,EACb,qBAAqB,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB;YAC9D,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE;YAClC,WAAW;YACX,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;YAC5B,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;SACjC,CAAC;IACJ,CAAC;IAEO,cAAc;QACpB,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,cAAc,CAAC;QAClE,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;QAEjD,MAAM,kBAAkB,GACtB,CAAC,UAAU,IAAI,eAAe,KAAK,cAAc,CAAC;QACpD,MAAM,oBAAoB,GACxB,CAAC,UAAU,IAAI,eAAe,KAAK,gBAAgB,CAAC;QAEtD,IAAI,WAAW,GAAa,EAAE,CAAC;QAC/B,IAAI,CAAC,UAAU,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YACjD,IAAI,eAAe,KAAK,cAAc,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;gBAC9D,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;YACzE,CAAC;iBAAM,IACL,eAAe,KAAK,gBAAgB;gBACpC,MAAM,CAAC,cAAc,EACrB,CAAC;gBACD,WAAW,GAAG,IAAI,CAAC,cAAc,CAC/B,MAAM,CAAC,cAAc,EACrB,gBAAgB,CACjB,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO;YACL,kBAAkB;YAClB,oBAAoB;YACpB,WAAW;SACZ,CAAC;IACJ,CAAC;IAEO,cAAc,CAAC,OAAgB,EAAE,MAAc;QACrD,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACxC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC3B,IAAI,GAAG,EAAE,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;oBAClC,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,KAAK,GAAG,EAAE,CAAC,CAAC;gBACjC,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,kCAAkC;QACpC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -0,0 +1,14 @@
1
+ export declare function setupClientErrorHandlers(): void;
2
+ export declare function captureServerError(error: unknown, request?: Request, context?: {
3
+ pathname?: string;
4
+ renderingError?: boolean;
5
+ [key: string]: unknown;
6
+ }): void;
7
+ export declare function captureErrorBoundaryError(error: Error, errorInfo: {
8
+ componentStack: string;
9
+ }): void;
10
+ export declare function captureApiRouteError(error: unknown, req: Request, pathname: string): void;
11
+ type AsyncFunction = (...args: unknown[]) => Promise<unknown>;
12
+ export declare function withErrorCapture<T extends AsyncFunction>(fn: T, context?: Record<string, unknown>): T;
13
+ export {};
14
+ //# sourceMappingURL=error-handlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-handlers.d.ts","sourceRoot":"","sources":["../../src/core/error-handlers.ts"],"names":[],"mappings":"AA4DA,wBAAgB,wBAAwB,IAAI,IAAI,CAiE/C;AAGD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,OAAO,EACjB,OAAO,CAAC,EAAE;IACR,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,GACA,IAAI,CAoBN;AAGD,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE;IAAE,cAAc,EAAE,MAAM,CAAA;CAAE,GACpC,IAAI,CAQN;AAGD,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,MAAM,GACf,IAAI,CAcN;AA+BD,KAAK,aAAa,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAE9D,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,aAAa,EACtD,EAAE,EAAE,CAAC,EACL,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,CAAC,CAkBH"}