@interfere/react 0.0.1 → 0.0.2-alpha.1

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 (198) hide show
  1. package/dist/client.d.mts +15 -0
  2. package/dist/client.d.mts.map +1 -0
  3. package/dist/client.mjs +75 -0
  4. package/dist/client.mjs.map +1 -0
  5. package/dist/core/events/event-registry.d.mts +23 -0
  6. package/dist/core/events/event-registry.d.mts.map +1 -0
  7. package/dist/core/events/event-registry.mjs +32 -0
  8. package/dist/core/events/event-registry.mjs.map +1 -0
  9. package/dist/core/events/plugin-event-types.d.mts +92 -0
  10. package/dist/core/events/plugin-event-types.d.mts.map +1 -0
  11. package/dist/core/events/plugin-event-types.mjs +25 -0
  12. package/dist/core/events/plugin-event-types.mjs.map +1 -0
  13. package/dist/core/plugins/dom-utils.d.mts +9 -0
  14. package/dist/core/plugins/dom-utils.d.mts.map +1 -0
  15. package/dist/core/plugins/dom-utils.mjs +25 -0
  16. package/dist/core/plugins/dom-utils.mjs.map +1 -0
  17. package/dist/core/plugins/impl/ai-summary.d.mts +6 -0
  18. package/dist/core/plugins/impl/ai-summary.d.mts.map +1 -0
  19. package/dist/core/plugins/impl/ai-summary.mjs +122 -0
  20. package/dist/core/plugins/impl/ai-summary.mjs.map +1 -0
  21. package/dist/core/plugins/impl/errors.d.mts +9 -0
  22. package/dist/core/plugins/impl/errors.d.mts.map +1 -0
  23. package/dist/core/plugins/impl/errors.mjs +153 -0
  24. package/dist/core/plugins/impl/errors.mjs.map +1 -0
  25. package/dist/core/plugins/impl/page-events.d.mts +15 -0
  26. package/dist/core/plugins/impl/page-events.d.mts.map +1 -0
  27. package/dist/core/plugins/impl/page-events.mjs +131 -0
  28. package/dist/core/plugins/impl/page-events.mjs.map +1 -0
  29. package/dist/core/plugins/impl/rage-click.d.mts +6 -0
  30. package/dist/core/plugins/impl/rage-click.d.mts.map +1 -0
  31. package/dist/core/plugins/impl/rage-click.mjs +53 -0
  32. package/dist/core/plugins/impl/rage-click.mjs.map +1 -0
  33. package/dist/core/plugins/impl/replay.d.mts +9 -0
  34. package/dist/core/plugins/impl/replay.d.mts.map +1 -0
  35. package/dist/core/plugins/impl/replay.mjs +144 -0
  36. package/dist/core/plugins/impl/replay.mjs.map +1 -0
  37. package/dist/core/plugins/impl/server-tracing.d.mts +7 -0
  38. package/dist/core/plugins/impl/server-tracing.d.mts.map +1 -0
  39. package/dist/core/plugins/impl/server-tracing.mjs +160 -0
  40. package/dist/core/plugins/impl/server-tracing.mjs.map +1 -0
  41. package/dist/core/plugins/plugin-event-system.d.mts +47 -0
  42. package/dist/core/plugins/plugin-event-system.d.mts.map +1 -0
  43. package/dist/core/plugins/plugin-event-system.mjs +75 -0
  44. package/dist/core/plugins/plugin-event-system.mjs.map +1 -0
  45. package/dist/core/plugins/plugin-loader.d.mts +22 -0
  46. package/dist/core/plugins/plugin-loader.d.mts.map +1 -0
  47. package/dist/core/plugins/plugin-loader.mjs +142 -0
  48. package/dist/core/plugins/plugin-loader.mjs.map +1 -0
  49. package/dist/core/runtime/config.d.mts +14 -0
  50. package/dist/core/runtime/config.d.mts.map +1 -0
  51. package/dist/core/runtime/config.mjs +39 -0
  52. package/dist/core/runtime/config.mjs.map +1 -0
  53. package/dist/core/runtime/context.d.mts +25 -0
  54. package/dist/core/runtime/context.d.mts.map +1 -0
  55. package/dist/core/runtime/context.mjs +48 -0
  56. package/dist/core/runtime/context.mjs.map +1 -0
  57. package/dist/core/runtime/ingest-target.d.mts +10 -0
  58. package/dist/core/runtime/ingest-target.d.mts.map +1 -0
  59. package/dist/core/runtime/ingest-target.mjs +15 -0
  60. package/dist/core/runtime/ingest-target.mjs.map +1 -0
  61. package/dist/core/schemas.d.mts +85 -0
  62. package/dist/core/schemas.d.mts.map +1 -0
  63. package/dist/core/schemas.mjs +1 -0
  64. package/dist/effect/build-envelope.d.mts +9 -0
  65. package/dist/effect/build-envelope.d.mts.map +1 -0
  66. package/dist/effect/build-envelope.mjs +29 -0
  67. package/dist/effect/build-envelope.mjs.map +1 -0
  68. package/dist/effect/errors.d.mts +36 -0
  69. package/dist/effect/errors.d.mts.map +1 -0
  70. package/dist/effect/errors.mjs +10 -0
  71. package/dist/effect/errors.mjs.map +1 -0
  72. package/dist/effect/layers/config.layer.d.mts +13 -0
  73. package/dist/effect/layers/config.layer.d.mts.map +1 -0
  74. package/dist/effect/layers/config.layer.mjs +21 -0
  75. package/dist/effect/layers/config.layer.mjs.map +1 -0
  76. package/dist/effect/layers/context.layer.d.mts +12 -0
  77. package/dist/effect/layers/context.layer.d.mts.map +1 -0
  78. package/dist/effect/layers/context.layer.mjs +14 -0
  79. package/dist/effect/layers/context.layer.mjs.map +1 -0
  80. package/dist/effect/layers/http.layer.d.mts +21 -0
  81. package/dist/effect/layers/http.layer.d.mts.map +1 -0
  82. package/dist/effect/layers/http.layer.mjs +113 -0
  83. package/dist/effect/layers/http.layer.mjs.map +1 -0
  84. package/dist/effect/layers/queue.layer.d.mts +30 -0
  85. package/dist/effect/layers/queue.layer.d.mts.map +1 -0
  86. package/dist/effect/layers/queue.layer.mjs +232 -0
  87. package/dist/effect/layers/queue.layer.mjs.map +1 -0
  88. package/dist/effect/layers/session.layer.d.mts +26 -0
  89. package/dist/effect/layers/session.layer.d.mts.map +1 -0
  90. package/dist/effect/layers/session.layer.mjs +126 -0
  91. package/dist/effect/layers/session.layer.mjs.map +1 -0
  92. package/dist/effect/layers/storage.layer.d.mts +19 -0
  93. package/dist/effect/layers/storage.layer.d.mts.map +1 -0
  94. package/dist/effect/layers/storage.layer.mjs +200 -0
  95. package/dist/effect/layers/storage.layer.mjs.map +1 -0
  96. package/dist/effect/layers/tracer.layer.d.mts +9 -0
  97. package/dist/effect/layers/tracer.layer.d.mts.map +1 -0
  98. package/dist/effect/layers/tracer.layer.mjs +11 -0
  99. package/dist/effect/layers/tracer.layer.mjs.map +1 -0
  100. package/dist/effect/runtime-services.d.mts +22 -0
  101. package/dist/effect/runtime-services.d.mts.map +1 -0
  102. package/dist/effect/runtime-services.mjs +76 -0
  103. package/dist/effect/runtime-services.mjs.map +1 -0
  104. package/dist/effect/tags.d.mts +50 -0
  105. package/dist/effect/tags.d.mts.map +1 -0
  106. package/dist/effect/tags.mjs +7 -0
  107. package/dist/effect/tags.mjs.map +1 -0
  108. package/dist/hooks/use-runtime-and-plugins.d.mts +7 -0
  109. package/dist/hooks/use-runtime-and-plugins.d.mts.map +1 -0
  110. package/dist/hooks/use-runtime-and-plugins.mjs +153 -0
  111. package/dist/hooks/use-runtime-and-plugins.mjs.map +1 -0
  112. package/dist/hooks/use-session.d.mts +40 -0
  113. package/dist/hooks/use-session.d.mts.map +1 -0
  114. package/dist/hooks/use-session.mjs +96 -0
  115. package/dist/hooks/use-session.mjs.map +1 -0
  116. package/dist/package.mjs +100 -0
  117. package/dist/package.mjs.map +1 -0
  118. package/dist/provider.d.mts +17 -0
  119. package/dist/provider.d.mts.map +1 -0
  120. package/dist/provider.mjs +26 -0
  121. package/dist/provider.mjs.map +1 -0
  122. package/dist/server/auth.d.mts +11 -0
  123. package/dist/server/auth.d.mts.map +1 -0
  124. package/dist/server/auth.mjs +36 -0
  125. package/dist/server/auth.mjs.map +1 -0
  126. package/dist/server/capture.d.mts +18 -0
  127. package/dist/server/capture.d.mts.map +1 -0
  128. package/dist/server/capture.mjs +105 -0
  129. package/dist/server/capture.mjs.map +1 -0
  130. package/package.json +60 -27
  131. package/dist/__tests__/client.test.d.ts +0 -2
  132. package/dist/__tests__/client.test.d.ts.map +0 -1
  133. package/dist/__tests__/client.test.js +0 -447
  134. package/dist/__tests__/client.test.js.map +0 -1
  135. package/dist/__tests__/lib/core/error-handlers.test.d.ts +0 -2
  136. package/dist/__tests__/lib/core/error-handlers.test.d.ts.map +0 -1
  137. package/dist/__tests__/lib/core/error-handlers.test.js +0 -596
  138. package/dist/__tests__/lib/core/error-handlers.test.js.map +0 -1
  139. package/dist/__tests__/lib/core/event-queue.test.d.ts +0 -2
  140. package/dist/__tests__/lib/core/event-queue.test.d.ts.map +0 -1
  141. package/dist/__tests__/lib/core/event-queue.test.js +0 -290
  142. package/dist/__tests__/lib/core/event-queue.test.js.map +0 -1
  143. package/dist/__tests__/lib/core/runtime.test.d.ts +0 -2
  144. package/dist/__tests__/lib/core/runtime.test.d.ts.map +0 -1
  145. package/dist/__tests__/lib/core/runtime.test.js +0 -133
  146. package/dist/__tests__/lib/core/runtime.test.js.map +0 -1
  147. package/dist/__tests__/lib/core/session-manager.test.d.ts +0 -2
  148. package/dist/__tests__/lib/core/session-manager.test.d.ts.map +0 -1
  149. package/dist/__tests__/lib/core/session-manager.test.js +0 -356
  150. package/dist/__tests__/lib/core/session-manager.test.js.map +0 -1
  151. package/dist/__tests__/provider.test.d.ts +0 -2
  152. package/dist/__tests__/provider.test.d.ts.map +0 -1
  153. package/dist/__tests__/provider.test.js +0 -143
  154. package/dist/__tests__/provider.test.js.map +0 -1
  155. package/dist/client.d.ts +0 -78
  156. package/dist/client.d.ts.map +0 -1
  157. package/dist/client.js +0 -219
  158. package/dist/client.js.map +0 -1
  159. package/dist/index.d.ts +0 -6
  160. package/dist/index.d.ts.map +0 -1
  161. package/dist/index.js +0 -5
  162. package/dist/index.js.map +0 -1
  163. package/dist/lib/core/error-handlers.d.ts +0 -14
  164. package/dist/lib/core/error-handlers.d.ts.map +0 -1
  165. package/dist/lib/core/error-handlers.js +0 -191
  166. package/dist/lib/core/error-handlers.js.map +0 -1
  167. package/dist/lib/core/event-queue.d.ts +0 -90
  168. package/dist/lib/core/event-queue.d.ts.map +0 -1
  169. package/dist/lib/core/event-queue.js +0 -286
  170. package/dist/lib/core/event-queue.js.map +0 -1
  171. package/dist/lib/core/runtime.d.ts +0 -7
  172. package/dist/lib/core/runtime.d.ts.map +0 -1
  173. package/dist/lib/core/runtime.js +0 -16
  174. package/dist/lib/core/runtime.js.map +0 -1
  175. package/dist/lib/core/session-manager.d.ts +0 -96
  176. package/dist/lib/core/session-manager.d.ts.map +0 -1
  177. package/dist/lib/core/session-manager.js +0 -431
  178. package/dist/lib/core/session-manager.js.map +0 -1
  179. package/dist/lib/persistence/storage.d.ts +0 -5
  180. package/dist/lib/persistence/storage.d.ts.map +0 -1
  181. package/dist/lib/persistence/storage.js +0 -67
  182. package/dist/lib/persistence/storage.js.map +0 -1
  183. package/dist/lib/session/rage-click.d.ts +0 -2
  184. package/dist/lib/session/rage-click.d.ts.map +0 -1
  185. package/dist/lib/session/rage-click.js +0 -51
  186. package/dist/lib/session/rage-click.js.map +0 -1
  187. package/dist/lib/session/replay.d.ts +0 -3
  188. package/dist/lib/session/replay.d.ts.map +0 -1
  189. package/dist/lib/session/replay.js +0 -106
  190. package/dist/lib/session/replay.js.map +0 -1
  191. package/dist/lib/session/session-summary.d.ts +0 -3
  192. package/dist/lib/session/session-summary.d.ts.map +0 -1
  193. package/dist/lib/session/session-summary.js +0 -79
  194. package/dist/lib/session/session-summary.js.map +0 -1
  195. package/dist/provider.d.ts +0 -76
  196. package/dist/provider.d.ts.map +0 -1
  197. package/dist/provider.js +0 -138
  198. package/dist/provider.js.map +0 -1
@@ -1,356 +0,0 @@
1
- import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
2
- import { SessionManager } from "../../../lib/core/session-manager.js";
3
- // Test constants
4
- const SESSION_KEY = "interfere_session";
5
- const SESSION_TIMEOUT = 1_800_000; // 30 minutes
6
- const FIVE_SECONDS = 5000;
7
- const TEN_SECONDS = 10_000;
8
- const SESSION_ID_REGEX = /^ses_[a-z0-9]+_[a-z0-9]+$/;
9
- describe("SessionManager", () => {
10
- let sessionManager;
11
- let onSessionChange;
12
- beforeEach(() => {
13
- // Clear all mocks
14
- vi.clearAllMocks();
15
- vi.clearAllTimers();
16
- // Mock localStorage
17
- const localStorageMock = {
18
- getItem: vi.fn().mockReturnValue(null),
19
- setItem: vi.fn(),
20
- removeItem: vi.fn(),
21
- clear: vi.fn(),
22
- length: 0,
23
- key: vi.fn(),
24
- };
25
- Object.defineProperty(window, "localStorage", {
26
- value: localStorageMock,
27
- writable: true,
28
- configurable: true,
29
- });
30
- // Mock sessionStorage
31
- const sessionStorageMock = {
32
- getItem: vi.fn().mockReturnValue(null),
33
- setItem: vi.fn(),
34
- removeItem: vi.fn(),
35
- clear: vi.fn(),
36
- length: 0,
37
- key: vi.fn(),
38
- };
39
- Object.defineProperty(window, "sessionStorage", {
40
- value: sessionStorageMock,
41
- writable: true,
42
- configurable: true,
43
- });
44
- // Mock document.cookie
45
- let cookieValue = "";
46
- Object.defineProperty(document, "cookie", {
47
- get: () => cookieValue,
48
- set: (value) => {
49
- cookieValue = value;
50
- },
51
- configurable: true,
52
- });
53
- // Create onSessionChange mock
54
- onSessionChange = vi.fn();
55
- });
56
- afterEach(() => {
57
- vi.clearAllTimers();
58
- });
59
- describe("initialization", () => {
60
- it("should auto-create a new session on initialization", () => {
61
- const manager = new SessionManager(onSessionChange);
62
- const sessionId = manager.getSessionId();
63
- expect(sessionId).toBeTruthy();
64
- expect(sessionId).toMatch(SESSION_ID_REGEX);
65
- });
66
- it("should restore existing session from localStorage", () => {
67
- const existingSession = {
68
- sessionId: "ses_test_123",
69
- startTimestamp: Date.now(),
70
- lastActivityTimestamp: Date.now(),
71
- };
72
- vi.mocked(localStorage.getItem).mockReturnValue(JSON.stringify(existingSession));
73
- const manager = new SessionManager(onSessionChange);
74
- const sessionId = manager.getSessionId();
75
- expect(localStorage.getItem).toHaveBeenCalledWith(SESSION_KEY);
76
- expect(sessionId).toBe("ses_test_123");
77
- });
78
- it("should restore session from cookie if localStorage unavailable", () => {
79
- // Make localStorage throw
80
- vi.mocked(localStorage.getItem).mockImplementation(() => {
81
- throw new Error("LocalStorage blocked");
82
- });
83
- // Set cookie value
84
- const existingSession = {
85
- sessionId: "ses_cookie_123",
86
- startTimestamp: Date.now(),
87
- lastActivityTimestamp: Date.now(),
88
- };
89
- const cookieValue = `interfereSessionData=${encodeURIComponent(JSON.stringify(existingSession))}; path=/`;
90
- Object.defineProperty(document, "cookie", {
91
- get: () => cookieValue,
92
- configurable: true,
93
- });
94
- const manager = new SessionManager(onSessionChange);
95
- const sessionId = manager.getSessionId();
96
- expect(sessionId).toBe("ses_cookie_123");
97
- });
98
- it("should restore session from sessionStorage if others unavailable", () => {
99
- // Make localStorage throw
100
- vi.mocked(localStorage.getItem).mockImplementation(() => {
101
- throw new Error("LocalStorage blocked");
102
- });
103
- // Cookie is empty
104
- Object.defineProperty(document, "cookie", {
105
- get: () => "",
106
- configurable: true,
107
- });
108
- // Set sessionStorage
109
- const existingSession = {
110
- sessionId: "ses_sessionstorage_123",
111
- startTimestamp: Date.now(),
112
- lastActivityTimestamp: Date.now(),
113
- };
114
- vi.mocked(sessionStorage.getItem).mockReturnValue(JSON.stringify(existingSession));
115
- const manager = new SessionManager(onSessionChange);
116
- const sessionId = manager.getSessionId();
117
- expect(sessionStorage.getItem).toHaveBeenCalledWith(SESSION_KEY);
118
- expect(sessionId).toBe("ses_sessionstorage_123");
119
- });
120
- it("should call onSessionChange when session is restored", () => {
121
- const existingSession = {
122
- sessionId: "ses_restored_123",
123
- startTimestamp: Date.now(),
124
- lastActivityTimestamp: Date.now(),
125
- };
126
- vi.mocked(localStorage.getItem).mockReturnValue(JSON.stringify(existingSession));
127
- new SessionManager(onSessionChange);
128
- expect(onSessionChange).toHaveBeenCalledWith("ses_restored_123");
129
- });
130
- });
131
- describe("session management", () => {
132
- it("should persist session to storage", () => {
133
- // Make localStorage work properly
134
- vi.mocked(localStorage.setItem).mockImplementation(() => {
135
- // no-op
136
- });
137
- sessionManager = new SessionManager(onSessionChange);
138
- const sessionId = sessionManager.getSessionId();
139
- if (!sessionId) {
140
- throw new Error("Session ID is undefined");
141
- }
142
- // Check that session was persisted
143
- expect(localStorage.setItem).toHaveBeenCalledWith(SESSION_KEY, expect.stringContaining(sessionId));
144
- });
145
- it("should get session data", () => {
146
- sessionManager = new SessionManager(onSessionChange);
147
- const sessionData = sessionManager.getSessionData();
148
- expect(sessionData).toMatchObject({
149
- sessionId: expect.any(String),
150
- startTimestamp: expect.any(Number),
151
- lastActivityTimestamp: expect.any(Number),
152
- });
153
- });
154
- it("should update activity timestamp", () => {
155
- vi.useFakeTimers();
156
- const now = Date.now();
157
- vi.setSystemTime(now);
158
- sessionManager = new SessionManager(onSessionChange);
159
- const initialData = sessionManager.getSessionData();
160
- const initialTimestamp = initialData?.lastActivityTimestamp ?? 0;
161
- // Advance time and update activity
162
- vi.setSystemTime(now + FIVE_SECONDS);
163
- sessionManager.updateActivity();
164
- const updatedData = sessionManager.getSessionData();
165
- expect(updatedData?.lastActivityTimestamp).toBeGreaterThan(initialTimestamp);
166
- vi.useRealTimers();
167
- });
168
- });
169
- describe("session reset", () => {
170
- it("should clear session from all storage", () => {
171
- // Make localStorage work properly
172
- vi.mocked(localStorage.setItem).mockImplementation(() => {
173
- // no-op
174
- });
175
- sessionManager = new SessionManager(onSessionChange);
176
- const originalSessionId = sessionManager.getSessionId();
177
- sessionManager.resetSession();
178
- const newSessionId = sessionManager.getSessionId();
179
- // Should have a new session ID
180
- expect(newSessionId).not.toBe(originalSessionId);
181
- // Should clear old session from storage
182
- expect(localStorage.removeItem).toHaveBeenCalledWith(SESSION_KEY);
183
- expect(sessionStorage.removeItem).toHaveBeenCalledWith(SESSION_KEY);
184
- if (!newSessionId) {
185
- throw new Error("New session ID is undefined");
186
- }
187
- // Should save new session
188
- expect(localStorage.setItem).toHaveBeenCalledWith(SESSION_KEY, expect.stringContaining(newSessionId));
189
- });
190
- it("should call onSessionChange with new session", () => {
191
- sessionManager = new SessionManager(onSessionChange);
192
- onSessionChange.mockClear();
193
- sessionManager.resetSession();
194
- // Should be called with the new session ID
195
- expect(onSessionChange).toHaveBeenCalled();
196
- const newSessionId = onSessionChange.mock.calls[0]?.[0];
197
- expect(newSessionId).toMatch(SESSION_ID_REGEX);
198
- });
199
- });
200
- describe("debug info", () => {
201
- it("should provide comprehensive debug information", () => {
202
- sessionManager = new SessionManager(onSessionChange);
203
- sessionManager.updateActivity();
204
- const debugInfo = sessionManager.getDebugInfo();
205
- expect(debugInfo).toMatchObject({
206
- sessionId: expect.any(String),
207
- sessionStartTimestamp: expect.any(Number),
208
- lastActivityTimestamp: expect.any(Number),
209
- sessionTimeoutMs: SESSION_TIMEOUT,
210
- sessionAge: expect.any(Number),
211
- timeSinceLastActivity: expect.any(Number),
212
- isSessionActive: true,
213
- storageInfo: expect.objectContaining({
214
- canUseLocalStorage: expect.any(Boolean),
215
- canUseSessionStorage: expect.any(Boolean),
216
- localStorageSupported: expect.any(Boolean),
217
- sessionStorageSupported: expect.any(Boolean),
218
- persistenceType: expect.any(String),
219
- storageKeys: expect.any(Array),
220
- isDisabled: false,
221
- }),
222
- });
223
- });
224
- it("should detect storage availability", () => {
225
- // Make localStorage throw on setItem
226
- vi.mocked(localStorage.setItem).mockImplementation(() => {
227
- throw new Error("Storage blocked");
228
- });
229
- const manager = new SessionManager(onSessionChange);
230
- const debugInfo = manager.getDebugInfo();
231
- // Since localStorage fails, it should fallback to another storage
232
- const storageInfo = debugInfo.storageInfo;
233
- expect(storageInfo?.persistenceType).not.toBe("localStorage");
234
- });
235
- it("should calculate session age correctly", () => {
236
- vi.useFakeTimers();
237
- const startTime = Date.now();
238
- vi.setSystemTime(startTime);
239
- sessionManager = new SessionManager(onSessionChange);
240
- // Advance time by 10 seconds
241
- vi.advanceTimersByTime(TEN_SECONDS);
242
- const debugInfo = sessionManager.getDebugInfo();
243
- expect(debugInfo.sessionAge).toBeGreaterThanOrEqual(TEN_SECONDS);
244
- vi.useRealTimers();
245
- });
246
- it("should detect session timeout", () => {
247
- vi.useFakeTimers();
248
- const now = Date.now();
249
- vi.setSystemTime(now);
250
- sessionManager = new SessionManager(onSessionChange);
251
- // Session should be active initially
252
- let debugInfo = sessionManager.getDebugInfo();
253
- expect(debugInfo.isSessionActive).toBe(true);
254
- // Advance past session timeout
255
- vi.advanceTimersByTime(SESSION_TIMEOUT + 1);
256
- // Session should be inactive
257
- debugInfo = sessionManager.getDebugInfo();
258
- expect(debugInfo.isSessionActive).toBe(false);
259
- vi.useRealTimers();
260
- });
261
- });
262
- describe("storage fallbacks", () => {
263
- it("should fallback when localStorage fails", () => {
264
- // Make localStorage throw for both test and actual save
265
- vi.mocked(localStorage.setItem).mockImplementation(() => {
266
- throw new Error("LocalStorage blocked");
267
- });
268
- // Track if fallback was used
269
- let cookieSet = false;
270
- Object.defineProperty(document, "cookie", {
271
- get: () => "",
272
- set: () => {
273
- cookieSet = true;
274
- },
275
- configurable: true,
276
- });
277
- // Make sessionStorage work
278
- vi.mocked(sessionStorage.setItem).mockImplementation(() => {
279
- // no-op
280
- });
281
- new SessionManager(onSessionChange);
282
- // Should use either cookie or sessionStorage as fallback
283
- const usedCookie = cookieSet;
284
- const usedSessionStorage = vi.mocked(sessionStorage.setItem).mock.calls.length > 0;
285
- expect(usedCookie || usedSessionStorage).toBe(true);
286
- });
287
- it("should fallback to cookies if localStorage and sessionStorage fail", () => {
288
- // Make localStorage and sessionStorage throw
289
- vi.mocked(localStorage.setItem).mockImplementation(() => {
290
- throw new Error("LocalStorage blocked");
291
- });
292
- vi.mocked(sessionStorage.setItem).mockImplementation(() => {
293
- throw new Error("SessionStorage blocked");
294
- });
295
- // Track cookie sets
296
- let cookieSet = false;
297
- Object.defineProperty(document, "cookie", {
298
- get: () => "",
299
- set: () => {
300
- cookieSet = true;
301
- },
302
- configurable: true,
303
- });
304
- const manager = new SessionManager(onSessionChange);
305
- manager.getSessionId(); // Trigger persistence
306
- // Should have attempted to set cookie
307
- expect(cookieSet).toBe(true);
308
- });
309
- it("should use in-memory storage if all storage fails", () => {
310
- // Make all storage throw
311
- vi.mocked(localStorage.setItem).mockImplementation(() => {
312
- throw new Error("LocalStorage blocked");
313
- });
314
- vi.mocked(sessionStorage.setItem).mockImplementation(() => {
315
- throw new Error("SessionStorage blocked");
316
- });
317
- Object.defineProperty(document, "cookie", {
318
- get: () => "",
319
- set: () => {
320
- throw new Error("Cookies blocked");
321
- },
322
- configurable: true,
323
- });
324
- const manager = new SessionManager(onSessionChange);
325
- const sessionId = manager.getSessionId();
326
- // Should still have a session ID (in memory)
327
- expect(sessionId).toBeTruthy();
328
- expect(sessionId).toMatch(SESSION_ID_REGEX);
329
- });
330
- });
331
- describe("session validation", () => {
332
- it("should reject invalid session data from storage", () => {
333
- // Set invalid session data
334
- vi.mocked(localStorage.getItem).mockReturnValue("invalid json");
335
- const manager = new SessionManager(onSessionChange);
336
- const sessionId = manager.getSessionId();
337
- // Should create a new session instead
338
- expect(sessionId).toBeTruthy();
339
- expect(sessionId).toMatch(SESSION_ID_REGEX);
340
- });
341
- it("should reject sessions with missing required fields", () => {
342
- // Session without sessionId
343
- const invalidSession = {
344
- startTimestamp: Date.now(),
345
- lastActivityTimestamp: Date.now(),
346
- };
347
- vi.mocked(localStorage.getItem).mockReturnValue(JSON.stringify(invalidSession));
348
- const manager = new SessionManager(onSessionChange);
349
- const sessionId = manager.getSessionId();
350
- // Should create a new session
351
- expect(sessionId).not.toBe(undefined);
352
- expect(sessionId).toMatch(SESSION_ID_REGEX);
353
- });
354
- });
355
- });
356
- //# sourceMappingURL=session-manager.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-manager.test.js","sourceRoot":"","sources":["../../../../src/__tests__/lib/core/session-manager.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=provider.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"provider.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/provider.test.tsx"],"names":[],"mappings":""}
@@ -1,143 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- // biome-ignore lint/correctness/noUnusedImports: React is required for JSX runtime
3
- import React, {} from "react";
4
- import { createRoot } from "react-dom/client";
5
- import { act } from "react-dom/test-utils";
6
- import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
7
- import { InterfereProvider, useInterfere } from "../provider.js";
8
- // Mocks for client functions used by the Provider
9
- const mockCapture = vi.fn();
10
- const mockCaptureError = vi.fn();
11
- const mockCaptureCustom = vi.fn();
12
- const mockCaptureUIEvent = vi.fn();
13
- const mockFlush = vi.fn();
14
- const mockGetSessionId = vi.fn(() => "session-1");
15
- const mockGetWindowId = vi.fn(() => "window-1");
16
- const mockResetSession = vi.fn();
17
- const mockGetDebugInfo = vi.fn(() => ({ ok: true }));
18
- const mockSetDebugLogger = vi.fn();
19
- vi.mock("../client", () => ({
20
- capture: (...args) => mockCapture(...args),
21
- captureError: (...args) => mockCaptureError(...args),
22
- captureCustom: (...args) => mockCaptureCustom(...args),
23
- captureUIEvent: (...args) => mockCaptureUIEvent(...args),
24
- flush: () => mockFlush(),
25
- getSessionId: () => mockGetSessionId(),
26
- getWindowId: () => mockGetWindowId(),
27
- resetSession: () => mockResetSession(),
28
- getDebugInfo: () => mockGetDebugInfo(),
29
- setDebugLogger: (fn) => mockSetDebugLogger(fn),
30
- }));
31
- // Mocks for session feature setup/teardown
32
- const mockSetupReplay = vi.fn();
33
- const mockStopReplay = vi.fn();
34
- vi.mock("../lib/session/replay", () => ({
35
- setupReplay: () => mockSetupReplay(),
36
- stopReplay: () => mockStopReplay(),
37
- }));
38
- const mockRageCleanup = vi.fn();
39
- const mockSetupRageClick = vi.fn(() => mockRageCleanup);
40
- vi.mock("../lib/session/rage-click", () => ({
41
- setupRageClick: () => mockSetupRageClick(),
42
- }));
43
- const mockSummaryCleanup = vi.fn();
44
- const mockSetupSessionSummary = vi.fn(() => mockSummaryCleanup);
45
- vi.mock("../lib/session/session-summary", () => ({
46
- setupSessionSummary: () => mockSetupSessionSummary(),
47
- }));
48
- function render(ui) {
49
- const container = document.createElement("div");
50
- document.body.appendChild(container);
51
- const root = createRoot(container);
52
- act(() => {
53
- root.render(ui);
54
- });
55
- return {
56
- container,
57
- root,
58
- unmount: () => {
59
- act(() => {
60
- root.unmount();
61
- });
62
- container.remove();
63
- },
64
- };
65
- }
66
- describe("InterfereProvider", () => {
67
- beforeEach(() => {
68
- vi.clearAllMocks();
69
- });
70
- afterEach(() => {
71
- // Ensure no stray listeners leak across tests
72
- vi.clearAllMocks();
73
- });
74
- it("renders children and exposes context functions", () => {
75
- let called = false;
76
- function Probe() {
77
- const ctx = useInterfere();
78
- expect(ctx.capture).toBeDefined();
79
- expect(ctx.captureError).toBeDefined();
80
- expect(ctx.flush).toBeDefined();
81
- ctx.capture("custom", { ok: true });
82
- called = true;
83
- return null;
84
- }
85
- const { unmount } = render(_jsx(InterfereProvider, { children: _jsx(Probe, {}) }));
86
- expect(called).toBe(true);
87
- expect(mockCapture).toHaveBeenCalledTimes(1);
88
- unmount();
89
- });
90
- it("registers error and rejection handlers and forwards to captureError", () => {
91
- const { unmount } = render(_jsx(InterfereProvider, { captureErrors: true, captureRejections: true, children: _jsx("div", {}) }));
92
- // Simulate window error
93
- const error = new Error("Boom");
94
- act(() => {
95
- window.dispatchEvent(new ErrorEvent("error", {
96
- message: error.message,
97
- error,
98
- filename: "file.js",
99
- lineno: 1,
100
- colno: 1,
101
- }));
102
- });
103
- // Simulate unhandled rejection
104
- const reason = new Error("Nope");
105
- act(() => {
106
- const promise = new Promise((_resolve) => {
107
- // Intentionally never resolve/reject to simulate pending promise
108
- });
109
- window.dispatchEvent(new PromiseRejectionEvent("unhandledrejection", { promise, reason }));
110
- });
111
- expect(mockCaptureError).toHaveBeenCalledTimes(2);
112
- unmount();
113
- });
114
- it("configures session features and cleans up on unmount", () => {
115
- const { unmount } = render(_jsx(InterfereProvider, { enableRageClick: true, enableReplay: true, enableSessionSummary: true, children: _jsx("div", {}) }));
116
- expect(mockSetupReplay).toHaveBeenCalledTimes(1);
117
- expect(mockSetupRageClick).toHaveBeenCalledTimes(1);
118
- expect(mockSetupSessionSummary).toHaveBeenCalledTimes(1);
119
- unmount();
120
- expect(mockStopReplay).toHaveBeenCalledTimes(1);
121
- expect(mockRageCleanup).toHaveBeenCalledTimes(1);
122
- expect(mockSummaryCleanup).toHaveBeenCalledTimes(1);
123
- expect(mockFlush).toHaveBeenCalledTimes(1);
124
- });
125
- it("respects feature toggles (no setup when disabled)", () => {
126
- const { unmount } = render(_jsx(InterfereProvider, { enableRageClick: false, enableReplay: false, enableSessionSummary: false, children: _jsx("div", {}) }));
127
- expect(mockSetupReplay).not.toHaveBeenCalled();
128
- expect(mockSetupRageClick).not.toHaveBeenCalled();
129
- expect(mockSetupSessionSummary).not.toHaveBeenCalled();
130
- unmount();
131
- expect(mockStopReplay).not.toHaveBeenCalled();
132
- expect(mockRageCleanup).not.toHaveBeenCalled();
133
- expect(mockSummaryCleanup).not.toHaveBeenCalled();
134
- });
135
- it("sets custom debug logger when provided", () => {
136
- const logger = vi.fn();
137
- const { unmount } = render(_jsx(InterfereProvider, { debugLogger: logger, children: _jsx("div", {}) }));
138
- expect(mockSetDebugLogger).toHaveBeenCalledTimes(1);
139
- expect(mockSetDebugLogger).toHaveBeenCalledWith(logger);
140
- unmount();
141
- });
142
- });
143
- //# sourceMappingURL=provider.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"provider.test.js","sourceRoot":"","sources":["../../src/__tests__/provider.test.tsx"],"names":[],"mappings":"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"}
package/dist/client.d.ts DELETED
@@ -1,78 +0,0 @@
1
- import type { EventType } from "@interfere/schemas/envelope";
2
- /**
3
- * Send an event to Interfere
4
- */
5
- export declare const capture: (type: EventType, payload: unknown) => void;
6
- /**
7
- * Flush any pending events immediately
8
- */
9
- export declare const flush: () => Promise<void>;
10
- /**
11
- * Get the current session ID
12
- */
13
- export declare const getSessionId: () => string;
14
- /**
15
- * Get the current window ID
16
- */
17
- export declare const getWindowId: () => string;
18
- /**
19
- * Reset the current session
20
- */
21
- export declare const resetSession: () => void;
22
- /**
23
- * Capture an error event
24
- */
25
- export declare const captureError: (error: Error | unknown) => void;
26
- /**
27
- * Capture a custom event
28
- */
29
- export declare const captureCustom: (name: string, data: unknown) => void;
30
- /**
31
- * Capture a UI interaction event
32
- */
33
- export declare const captureUIEvent: (action: string, metadata?: unknown) => void;
34
- /**
35
- * Set a debug logger for diagnostics
36
- */
37
- export declare const setDebugLogger: (logger?: (message: string, error?: Error) => void) => void;
38
- /**
39
- * Debug information about the SDK state
40
- */
41
- export type DebugInfo = {
42
- sessionId: string | null;
43
- windowId: string | null;
44
- pendingEventsCount: number;
45
- hasDebugLogger: boolean;
46
- isServerSide: boolean;
47
- sessionStartTimestamp?: number;
48
- lastActivityTimestamp?: number;
49
- sessionTimeoutMs?: number;
50
- sessionAge?: number;
51
- timeSinceLastActivity?: number;
52
- isSessionActive?: boolean;
53
- config?: Record<string, unknown>;
54
- storageInfo?: {
55
- canUseLocalStorage: boolean;
56
- canUseSessionStorage: boolean;
57
- storageKeys: string[];
58
- localStorageSupported: boolean;
59
- sessionStorageSupported: boolean;
60
- persistenceType: string;
61
- isDisabled: boolean;
62
- };
63
- queueSize?: number;
64
- isOnline?: boolean;
65
- };
66
- /**
67
- * Get debug information about the SDK state
68
- */
69
- export declare const getDebugInfo: () => DebugInfo;
70
- /**
71
- * Subscribe to session ID changes
72
- */
73
- export declare const onSessionId: (callback: (id: string) => void) => (() => void);
74
- /**
75
- * Destroy the SDK instance and clean up
76
- */
77
- export declare const destroy: () => Promise<void>;
78
- //# sourceMappingURL=client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAqF7D;;GAEG;AACH,eAAO,MAAM,OAAO,GAAI,MAAM,SAAS,EAAE,SAAS,OAAO,KAAG,IAO3D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,KAAK,QAAa,OAAO,CAAC,IAAI,CAK1C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,QAAO,MAK/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,QAAO,MAK9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,QAAO,IAM/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,OAAO,KAAK,GAAG,OAAO,KAAG,IAMrD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,EAAE,MAAM,OAAO,KAAG,IAK3D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,EAAE,WAAW,OAAO,KAAG,IAKnE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,GACzB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,KAChD,IAEF,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,WAAW,CAAC,EAAE;QACZ,kBAAkB,EAAE,OAAO,CAAC;QAC5B,oBAAoB,EAAE,OAAO,CAAC;QAC9B,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,qBAAqB,EAAE,OAAO,CAAC;QAC/B,uBAAuB,EAAE,OAAO,CAAC;QACjC,eAAe,EAAE,MAAM,CAAC;QACxB,UAAU,EAAE,OAAO,CAAC;KACrB,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,QAAO,SA8C/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,UAAU,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,KAAG,CAAC,MAAM,IAAI,CAWvE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,OAAO,QAAa,OAAO,CAAC,IAAI,CAQ5C,CAAC"}