@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,431 +0,0 @@
1
- /**
2
- * Enhanced session management with multiple persistence strategies
3
- */
4
- import { RADIX_36, RANDOM_SUBSTRING_END, RANDOM_SUBSTRING_START, SESSION_DURATION_MS, SESSION_EXTEND_THRESHOLD_MS, SESSION_KEY, } from "@interfere/constants";
5
- /**
6
- * Helper function to set a cookie value
7
- */
8
- function setCookie(name, value, expires) {
9
- if (typeof document === "undefined") {
10
- return;
11
- }
12
- const expiresStr = expires ? `; expires=${expires}` : "";
13
- const cookieString = `${name}=${value}${expiresStr}; path=/; SameSite=Lax`;
14
- // biome-ignore lint/suspicious/noDocumentCookie: For broad support
15
- document.cookie = cookieString;
16
- }
17
- /**
18
- * Helper function to delete a cookie
19
- */
20
- function deleteCookie(name) {
21
- if (typeof document === "undefined") {
22
- return;
23
- }
24
- const cookieString = `${name}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;`;
25
- // biome-ignore lint/suspicious/noDocumentCookie: For broad support
26
- document.cookie = cookieString;
27
- }
28
- /**
29
- * Helper function to get all cookies as key-value pairs
30
- */
31
- function getCookies() {
32
- if (typeof document === "undefined") {
33
- return {};
34
- }
35
- const cookies = {};
36
- const cookieString = document.cookie;
37
- if (cookieString) {
38
- const pairs = cookieString.split(";");
39
- for (const pair of pairs) {
40
- const [name, value] = pair.trim().split("=");
41
- if (name && value) {
42
- cookies[name] = value;
43
- }
44
- }
45
- }
46
- return cookies;
47
- }
48
- export class SessionManager {
49
- sessionData = null;
50
- persistenceStrategy = "memory";
51
- onSessionChange;
52
- constructor(onSessionChange) {
53
- this.onSessionChange = onSessionChange;
54
- this.initializeSession();
55
- }
56
- /**
57
- * Initialize session from storage or create new
58
- */
59
- initializeSession() {
60
- // Try to restore session from various sources
61
- const restored = this.restoreFromLocalStorage() ||
62
- this.restoreFromCookie() ||
63
- this.restoreFromSessionStorage();
64
- if (restored) {
65
- this.sessionData = restored;
66
- }
67
- else {
68
- // Create new session and set default persistence strategy
69
- this.sessionData = this.createNewSession();
70
- // Try localStorage first for new sessions
71
- if (this.testLocalStorage()) {
72
- this.persistenceStrategy = "localStorage";
73
- }
74
- else if (typeof document !== "undefined") {
75
- this.persistenceStrategy = "cookie";
76
- }
77
- else {
78
- this.persistenceStrategy = "memory";
79
- }
80
- }
81
- // Persist the session
82
- this.persistSession();
83
- // Update last activity
84
- this.updateActivity();
85
- // Notify of session change
86
- if (this.onSessionChange && this.sessionData) {
87
- this.onSessionChange(this.sessionData.sessionId);
88
- }
89
- }
90
- /**
91
- * Get current session ID
92
- */
93
- getSessionId() {
94
- if (!this.sessionData) {
95
- return null;
96
- }
97
- // Check if session expired (only if expiresAt is set)
98
- if (this.sessionData.expiresAt && Date.now() > this.sessionData.expiresAt) {
99
- this.resetSession();
100
- return this.sessionData?.sessionId || null;
101
- }
102
- return this.sessionData.sessionId;
103
- }
104
- /**
105
- * Get full session data
106
- */
107
- getSessionData() {
108
- return this.sessionData;
109
- }
110
- /**
111
- * Update session activity
112
- */
113
- updateActivity() {
114
- if (!this.sessionData) {
115
- return;
116
- }
117
- const now = Date.now();
118
- this.sessionData.lastActivityTimestamp = now;
119
- // Extend session if less than threshold remaining
120
- if (this.sessionData.expiresAt) {
121
- const timeRemaining = this.sessionData.expiresAt - now;
122
- if (timeRemaining < SESSION_EXTEND_THRESHOLD_MS) {
123
- this.sessionData.expiresAt = now + SESSION_DURATION_MS;
124
- }
125
- }
126
- else {
127
- this.sessionData.expiresAt = now + SESSION_DURATION_MS;
128
- }
129
- this.persistSession();
130
- }
131
- /**
132
- * Reset session
133
- */
134
- resetSession() {
135
- // Clear all storage
136
- this.clearAllStorage();
137
- // Create new session
138
- this.sessionData = this.createNewSession();
139
- // Notify of change
140
- if (this.onSessionChange && this.sessionData) {
141
- this.onSessionChange(this.sessionData.sessionId);
142
- }
143
- }
144
- /**
145
- * Create new session
146
- */
147
- createNewSession() {
148
- const now = Date.now();
149
- const session = {
150
- sessionId: this.generateSessionId(),
151
- startTimestamp: now,
152
- lastActivityTimestamp: now,
153
- expiresAt: now + SESSION_DURATION_MS,
154
- };
155
- this.persistSession(session);
156
- return session;
157
- }
158
- /**
159
- * Generate unique session ID
160
- */
161
- generateSessionId() {
162
- const timestamp = Date.now().toString(RADIX_36);
163
- const random = Math.random()
164
- .toString(RADIX_36)
165
- .substring(RANDOM_SUBSTRING_START, RANDOM_SUBSTRING_END);
166
- return `ses_${timestamp}_${random}`;
167
- }
168
- /**
169
- * Persist session to available storage
170
- */
171
- persistSession(session) {
172
- const sessionToSave = session || this.sessionData;
173
- if (!sessionToSave) {
174
- return;
175
- }
176
- // Try to use the current persistence strategy first
177
- let success = false;
178
- if (this.persistenceStrategy === "localStorage") {
179
- success = this.saveToLocalStorage(sessionToSave);
180
- }
181
- else if (this.persistenceStrategy === "cookie") {
182
- success = this.saveToCookie(sessionToSave);
183
- }
184
- // If current strategy fails, try all strategies
185
- if (!success) {
186
- const strategies = [
187
- () => this.saveToLocalStorage(sessionToSave),
188
- () => this.saveToCookie(sessionToSave),
189
- () => this.saveToSessionStorage(sessionToSave),
190
- ];
191
- for (const strategy of strategies) {
192
- try {
193
- if (strategy()) {
194
- break; // Success, stop trying
195
- }
196
- }
197
- catch {
198
- // Try next strategy
199
- }
200
- }
201
- }
202
- }
203
- /**
204
- * Try to restore session from cookie
205
- */
206
- restoreFromCookie() {
207
- try {
208
- const cookies = getCookies();
209
- // Check for interfereSessionData cookie (used in tests) or SESSION_KEY
210
- const sessionCookie = cookies.interfereSessionData || cookies[SESSION_KEY];
211
- if (sessionCookie) {
212
- const session = JSON.parse(decodeURIComponent(sessionCookie));
213
- if (this.isValidSession(session)) {
214
- this.persistenceStrategy = "cookie";
215
- return session;
216
- }
217
- }
218
- }
219
- catch {
220
- // Invalid cookie data
221
- }
222
- return null;
223
- }
224
- /**
225
- * Save session to cookie
226
- */
227
- saveToCookie(session) {
228
- try {
229
- const value = encodeURIComponent(JSON.stringify(session));
230
- const expires = session.expiresAt
231
- ? new Date(session.expiresAt).toUTCString()
232
- : undefined;
233
- setCookie(SESSION_KEY, value, expires);
234
- return true;
235
- }
236
- catch {
237
- return false;
238
- }
239
- }
240
- /**
241
- * Try to restore session from localStorage
242
- */
243
- restoreFromLocalStorage() {
244
- if (typeof localStorage === "undefined") {
245
- return null;
246
- }
247
- try {
248
- const data = localStorage.getItem(SESSION_KEY);
249
- if (data) {
250
- const session = JSON.parse(data);
251
- if (this.isValidSession(session)) {
252
- this.persistenceStrategy = "localStorage";
253
- return session;
254
- }
255
- }
256
- }
257
- catch {
258
- // Invalid data
259
- }
260
- return null;
261
- }
262
- /**
263
- * Save session to localStorage
264
- */
265
- saveToLocalStorage(session) {
266
- if (typeof localStorage === "undefined") {
267
- return false;
268
- }
269
- try {
270
- localStorage.setItem(SESSION_KEY, JSON.stringify(session));
271
- return true;
272
- }
273
- catch {
274
- return false;
275
- }
276
- }
277
- /**
278
- * Try to restore session from sessionStorage
279
- */
280
- restoreFromSessionStorage() {
281
- if (typeof sessionStorage === "undefined") {
282
- return null;
283
- }
284
- try {
285
- const data = sessionStorage.getItem(SESSION_KEY);
286
- if (data) {
287
- const session = JSON.parse(data);
288
- if (this.isValidSession(session)) {
289
- this.persistenceStrategy = "memory"; // sessionStorage doesn't persist across sessions
290
- return session;
291
- }
292
- }
293
- }
294
- catch {
295
- // Invalid data
296
- }
297
- return null;
298
- }
299
- /**
300
- * Save session to sessionStorage
301
- */
302
- saveToSessionStorage(session) {
303
- if (typeof sessionStorage === "undefined") {
304
- return false;
305
- }
306
- try {
307
- sessionStorage.setItem(SESSION_KEY, JSON.stringify(session));
308
- return true;
309
- }
310
- catch {
311
- return false;
312
- }
313
- }
314
- /**
315
- * Check if session data is valid
316
- */
317
- isValidSession(session) {
318
- if (!session || typeof session !== "object") {
319
- return false;
320
- }
321
- const s = session;
322
- // Support both old (id) and new (sessionId) field names for backward compatibility
323
- const hasValidId = typeof s.sessionId === "string" || typeof s.id === "string";
324
- // Normalize to sessionId
325
- if (!s.sessionId && s.id && typeof s.id === "string") {
326
- s.sessionId = s.id;
327
- s.id = undefined;
328
- }
329
- return (hasValidId &&
330
- typeof s.startTimestamp === "number" &&
331
- typeof s.lastActivityTimestamp === "number" &&
332
- (!s.expiresAt || typeof s.expiresAt === "number") &&
333
- (!s.expiresAt ||
334
- (typeof s.expiresAt === "number" && s.expiresAt > Date.now())) // Not expired if expiresAt is set
335
- );
336
- }
337
- /**
338
- * Clear all storage
339
- */
340
- clearAllStorage() {
341
- // Clear cookie
342
- deleteCookie(SESSION_KEY);
343
- // Clear localStorage
344
- if (typeof localStorage !== "undefined") {
345
- localStorage.removeItem(SESSION_KEY);
346
- }
347
- // Clear sessionStorage
348
- if (typeof sessionStorage !== "undefined") {
349
- sessionStorage.removeItem(SESSION_KEY);
350
- }
351
- }
352
- /**
353
- * Get debug info
354
- */
355
- getDebugInfo() {
356
- const now = Date.now();
357
- return {
358
- sessionId: this.sessionData?.sessionId || null,
359
- sessionStartTimestamp: this.sessionData?.startTimestamp || null,
360
- lastActivityTimestamp: this.sessionData?.lastActivityTimestamp || null,
361
- sessionTimeoutMs: SESSION_DURATION_MS,
362
- sessionAge: this.sessionData
363
- ? now - this.sessionData.startTimestamp
364
- : null,
365
- timeSinceLastActivity: this.sessionData
366
- ? now - this.sessionData.lastActivityTimestamp
367
- : null,
368
- isSessionActive: !!this.sessionData &&
369
- (!this.sessionData.expiresAt || this.sessionData.expiresAt > now),
370
- persistenceStrategy: this.persistenceStrategy,
371
- storageInfo: {
372
- canUseLocalStorage: typeof localStorage !== "undefined",
373
- canUseSessionStorage: typeof sessionStorage !== "undefined",
374
- storageKeys: this.getStorageKeys(),
375
- localStorageSupported: this.testLocalStorage(),
376
- sessionStorageSupported: this.testSessionStorage(),
377
- persistenceType: this.persistenceStrategy,
378
- isDisabled: false,
379
- },
380
- };
381
- }
382
- /**
383
- * Get storage keys
384
- */
385
- getStorageKeys() {
386
- const keys = [];
387
- if (typeof localStorage !== "undefined") {
388
- try {
389
- for (let i = 0; i < localStorage.length; i++) {
390
- const key = localStorage.key(i);
391
- if (key?.startsWith("interfere")) {
392
- keys.push(key);
393
- }
394
- }
395
- }
396
- catch {
397
- // Storage might be disabled
398
- }
399
- }
400
- return keys;
401
- }
402
- /**
403
- * Test localStorage availability
404
- */
405
- testLocalStorage() {
406
- try {
407
- const test = "__interfere_test__";
408
- localStorage.setItem(test, test);
409
- localStorage.removeItem(test);
410
- return true;
411
- }
412
- catch {
413
- return false;
414
- }
415
- }
416
- /**
417
- * Test sessionStorage availability
418
- */
419
- testSessionStorage() {
420
- try {
421
- const test = "__interfere_test__";
422
- sessionStorage.setItem(test, test);
423
- sessionStorage.removeItem(test);
424
- return true;
425
- }
426
- catch {
427
- return false;
428
- }
429
- }
430
- }
431
- //# sourceMappingURL=session-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../../../src/lib/core/session-manager.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- import type { PersistentStore } from "@interfere/schemas/persistent-store";
2
- export declare const localStore: PersistentStore;
3
- export declare const sessionStore: PersistentStore;
4
- export declare const memoryStore: PersistentStore;
5
- //# sourceMappingURL=storage.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../src/lib/persistence/storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAoE3E,eAAO,MAAM,UAAU,iBAAgC,CAAC;AACxD,eAAO,MAAM,YAAY,iBAAkC,CAAC;AAC5D,eAAO,MAAM,WAAW,iBAA0B,CAAC"}
@@ -1,67 +0,0 @@
1
- const createStorage = (storageType) => {
2
- const memoryStore = {};
3
- const isSupported = () => {
4
- if (storageType === "memory") {
5
- return true;
6
- }
7
- if (typeof window === "undefined") {
8
- return false;
9
- }
10
- try {
11
- const storage = window[storageType];
12
- const testKey = "__interfere_test__";
13
- storage.setItem(testKey, "test");
14
- storage.removeItem(testKey);
15
- return true;
16
- }
17
- catch {
18
- return false;
19
- }
20
- };
21
- const getStorage = () => {
22
- if (storageType === "memory" || !isSupported()) {
23
- return {
24
- getItem: (key) => memoryStore[key] ?? null,
25
- setItem: (key, value) => {
26
- memoryStore[key] = value;
27
- },
28
- removeItem: (key) => {
29
- delete memoryStore[key];
30
- },
31
- };
32
- }
33
- return window[storageType];
34
- };
35
- return {
36
- _is_supported: isSupported,
37
- _parse: (key) => {
38
- try {
39
- const value = getStorage().getItem(key);
40
- return value ? JSON.parse(value) : null;
41
- }
42
- catch {
43
- return null;
44
- }
45
- },
46
- _set: (key, value) => {
47
- try {
48
- getStorage().setItem(key, JSON.stringify(value));
49
- }
50
- catch {
51
- // Silently fail
52
- }
53
- },
54
- _remove: (key) => {
55
- try {
56
- getStorage().removeItem(key);
57
- }
58
- catch {
59
- // Silently fail
60
- }
61
- },
62
- };
63
- };
64
- export const localStore = createStorage("localStorage");
65
- export const sessionStore = createStorage("sessionStorage");
66
- export const memoryStore = createStorage("memory");
67
- //# sourceMappingURL=storage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../src/lib/persistence/storage.ts"],"names":[],"mappings":"AAEA,MAAM,aAAa,GAAG,CACpB,WAAyD,EACxC,EAAE;IACnB,MAAM,WAAW,GAA2B,EAAE,CAAC;IAE/C,MAAM,WAAW,GAAG,GAAY,EAAE;QAChC,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;YACpC,MAAM,OAAO,GAAG,oBAAoB,CAAC;YACrC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACjC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAC5B,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,IAAI,WAAW,KAAK,QAAQ,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YAC/C,OAAO;gBACL,OAAO,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,IAAI;gBAClD,OAAO,EAAE,CAAC,GAAW,EAAE,KAAa,EAAE,EAAE;oBACtC,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBAC3B,CAAC;gBACD,UAAU,EAAE,CAAC,GAAW,EAAE,EAAE;oBAC1B,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;gBAC1B,CAAC;aACF,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC;IAC7B,CAAC,CAAC;IAEF,OAAO;QACL,aAAa,EAAE,WAAW;QAC1B,MAAM,EAAE,CAAC,GAAW,EAAE,EAAE;YACtB,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,UAAU,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACxC,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC1C,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QACD,IAAI,EAAE,CAAC,GAAW,EAAE,KAAc,EAAE,EAAE;YACpC,IAAI,CAAC;gBACH,UAAU,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;YACnD,CAAC;YAAC,MAAM,CAAC;gBACP,gBAAgB;YAClB,CAAC;QACH,CAAC;QACD,OAAO,EAAE,CAAC,GAAW,EAAE,EAAE;YACvB,IAAI,CAAC;gBACH,UAAU,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAC/B,CAAC;YAAC,MAAM,CAAC;gBACP,gBAAgB;YAClB,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,aAAa,CAAC,cAAc,CAAC,CAAC;AACxD,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAC,gBAAgB,CAAC,CAAC;AAC5D,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare function setupRageClick(): (() => void) | undefined;
2
- //# sourceMappingURL=rage-click.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rage-click.d.ts","sourceRoot":"","sources":["../../../src/lib/session/rage-click.ts"],"names":[],"mappings":"AAyDA,wBAAgB,cAAc,6BAU7B"}
@@ -1,51 +0,0 @@
1
- /* Rage click detection */
2
- "use client";
3
- import { RAGE_CLICK_THRESHOLD, RAGE_CLICK_TIME_WINDOW, } from "@interfere/constants";
4
- import { capture } from "../../client.js";
5
- let clickTimestamps = [];
6
- const CLASS_REGEX = /\s+/;
7
- function getSelector(element) {
8
- if (element.id) {
9
- return `#${element.id}`;
10
- }
11
- if (element.className && typeof element.className === "string") {
12
- const classes = element.className.trim().split(CLASS_REGEX).join(".");
13
- if (classes) {
14
- return `.${classes}`;
15
- }
16
- }
17
- return element.tagName.toLowerCase();
18
- }
19
- function handleClick(event) {
20
- const now = Date.now();
21
- // Clean up old timestamps
22
- clickTimestamps = clickTimestamps.filter((ts) => now - ts < RAGE_CLICK_TIME_WINDOW);
23
- // Add current click
24
- clickTimestamps.push(now);
25
- // Check for rage click
26
- if (clickTimestamps.length >= RAGE_CLICK_THRESHOLD) {
27
- const target = event.target;
28
- const TRUNCATE_LENGTH = 100;
29
- capture("rage_click", {
30
- count: clickTimestamps.length,
31
- timeWindow: RAGE_CLICK_TIME_WINDOW,
32
- selector: target ? getSelector(target) : "unknown",
33
- text: target?.textContent?.substring(0, TRUNCATE_LENGTH) || "",
34
- x: event.clientX,
35
- y: event.clientY,
36
- timestamp: now,
37
- });
38
- // Reset after detection
39
- clickTimestamps = [];
40
- }
41
- }
42
- export function setupRageClick() {
43
- if (typeof window === "undefined") {
44
- return;
45
- }
46
- window.addEventListener("click", handleClick, true);
47
- return () => {
48
- window.removeEventListener("click", handleClick, true);
49
- };
50
- }
51
- //# sourceMappingURL=rage-click.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rage-click.js","sourceRoot":"","sources":["../../../src/lib/session/rage-click.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAC1B,YAAY,CAAC;AAEb,OAAO,EACL,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,IAAI,eAAe,GAAa,EAAE,CAAC;AAEnC,MAAM,WAAW,GAAG,KAAK,CAAC;AAE1B,SAAS,WAAW,CAAC,OAAgB;IACnC,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;QACf,OAAO,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;IAC1B,CAAC;IACD,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC/D,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtE,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,IAAI,OAAO,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;AACvC,CAAC;AAED,SAAS,WAAW,CAAC,KAAiB;IACpC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEvB,0BAA0B;IAC1B,eAAe,GAAG,eAAe,CAAC,MAAM,CACtC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,GAAG,sBAAsB,CAC1C,CAAC;IAEF,oBAAoB;IACpB,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE1B,uBAAuB;IACvB,IAAI,eAAe,CAAC,MAAM,IAAI,oBAAoB,EAAE,CAAC;QACnD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAiB,CAAC;QACvC,MAAM,eAAe,GAAG,GAAG,CAAC;QAE5B,OAAO,CAAC,YAAY,EAAE;YACpB,KAAK,EAAE,eAAe,CAAC,MAAM;YAC7B,UAAU,EAAE,sBAAsB;YAClC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;YAClD,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC,EAAE,eAAe,CAAC,IAAI,EAAE;YAC9D,CAAC,EAAE,KAAK,CAAC,OAAO;YAChB,CAAC,EAAE,KAAK,CAAC,OAAO;YAChB,SAAS,EAAE,GAAG;SACf,CAAC,CAAC;QAEH,wBAAwB;QACxB,eAAe,GAAG,EAAE,CAAC;IACvB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,OAAO;IACT,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;IAEpD,OAAO,GAAG,EAAE;QACV,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;IACzD,CAAC,CAAC;AACJ,CAAC"}
@@ -1,3 +0,0 @@
1
- export declare function setupReplay(): void;
2
- export declare function stopReplay(): void;
3
- //# sourceMappingURL=replay.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"replay.d.ts","sourceRoot":"","sources":["../../../src/lib/session/replay.ts"],"names":[],"mappings":"AAUA,wBAAgB,WAAW,SAoG1B;AAED,wBAAgB,UAAU,SAEzB"}