@interfere/next 0.0.13 → 0.0.15-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (226) hide show
  1. package/README.md +1 -6
  2. package/dist/build/env-config.d.mts +7 -0
  3. package/dist/build/env-config.d.mts.map +1 -0
  4. package/dist/build/env-config.mjs +17 -0
  5. package/dist/build/env-config.mjs.map +1 -0
  6. package/dist/build/logger.d.mts +11 -0
  7. package/dist/build/logger.d.mts.map +1 -0
  8. package/dist/build/logger.mjs +155 -0
  9. package/dist/build/logger.mjs.map +1 -0
  10. package/dist/build/release-program.d.mts +19 -0
  11. package/dist/build/release-program.d.mts.map +1 -0
  12. package/dist/build/release-program.mjs +92 -0
  13. package/dist/build/release-program.mjs.map +1 -0
  14. package/dist/build/secret-key.d.mts +10 -0
  15. package/dist/build/secret-key.d.mts.map +1 -0
  16. package/dist/build/secret-key.mjs +16 -0
  17. package/dist/build/secret-key.mjs.map +1 -0
  18. package/dist/build/services/config.service.d.mts +9 -0
  19. package/dist/build/services/config.service.d.mts.map +1 -0
  20. package/dist/build/services/config.service.mjs +8 -0
  21. package/dist/build/services/config.service.mjs.map +1 -0
  22. package/dist/build/services/preflight.service.d.mts +19 -0
  23. package/dist/build/services/preflight.service.d.mts.map +1 -0
  24. package/dist/build/services/preflight.service.mjs +76 -0
  25. package/dist/build/services/preflight.service.mjs.map +1 -0
  26. package/dist/build/services/release-identity.service.d.mts +22 -0
  27. package/dist/build/services/release-identity.service.d.mts.map +1 -0
  28. package/dist/build/services/release-identity.service.mjs +48 -0
  29. package/dist/build/services/release-identity.service.mjs.map +1 -0
  30. package/dist/build/services/source-map.service.d.mts +24 -0
  31. package/dist/build/services/source-map.service.d.mts.map +1 -0
  32. package/dist/build/services/source-map.service.mjs +58 -0
  33. package/dist/build/services/source-map.service.mjs.map +1 -0
  34. package/dist/build/source-maps/api.d.mts +35 -0
  35. package/dist/build/source-maps/api.d.mts.map +1 -0
  36. package/dist/build/source-maps/api.mjs +61 -0
  37. package/dist/build/source-maps/api.mjs.map +1 -0
  38. package/dist/build/source-maps/client.d.mts +73 -0
  39. package/dist/build/source-maps/client.d.mts.map +1 -0
  40. package/dist/build/source-maps/client.mjs +228 -0
  41. package/dist/build/source-maps/client.mjs.map +1 -0
  42. package/dist/build/source-maps/errors.d.mts +109 -0
  43. package/dist/build/source-maps/errors.d.mts.map +1 -0
  44. package/dist/build/source-maps/errors.mjs +22 -0
  45. package/dist/build/source-maps/errors.mjs.map +1 -0
  46. package/dist/build/source-maps/files.d.mts +35 -0
  47. package/dist/build/source-maps/files.d.mts.map +1 -0
  48. package/dist/build/source-maps/files.mjs +222 -0
  49. package/dist/build/source-maps/files.mjs.map +1 -0
  50. package/dist/build/source-maps/providers/deployment/detector.d.mts +26 -0
  51. package/dist/build/source-maps/providers/deployment/detector.d.mts.map +1 -0
  52. package/dist/build/source-maps/providers/deployment/detector.mjs +22 -0
  53. package/dist/build/source-maps/providers/deployment/detector.mjs.map +1 -0
  54. package/dist/build/source-maps/providers/deployment/types.d.mts +12 -0
  55. package/dist/build/source-maps/providers/deployment/types.d.mts.map +1 -0
  56. package/dist/build/source-maps/providers/deployment/types.mjs +3 -0
  57. package/dist/build/source-maps/providers/deployment/vercel.d.mts +6 -0
  58. package/dist/build/source-maps/providers/deployment/vercel.d.mts.map +1 -0
  59. package/dist/build/source-maps/providers/deployment/vercel.mjs +44 -0
  60. package/dist/build/source-maps/providers/deployment/vercel.mjs.map +1 -0
  61. package/dist/build/source-maps/providers/source-control/detector.d.mts +15 -0
  62. package/dist/build/source-maps/providers/source-control/detector.d.mts.map +1 -0
  63. package/dist/build/source-maps/providers/source-control/detector.mjs +22 -0
  64. package/dist/build/source-maps/providers/source-control/detector.mjs.map +1 -0
  65. package/dist/build/source-maps/providers/source-control/git.d.mts +6 -0
  66. package/dist/build/source-maps/providers/source-control/git.d.mts.map +1 -0
  67. package/dist/build/source-maps/providers/source-control/git.mjs +50 -0
  68. package/dist/build/source-maps/providers/source-control/git.mjs.map +1 -0
  69. package/dist/build/source-maps/providers/source-control/types.d.mts +12 -0
  70. package/dist/build/source-maps/providers/source-control/types.d.mts.map +1 -0
  71. package/dist/build/source-maps/providers/source-control/types.mjs +3 -0
  72. package/dist/build/with-interfere.d.mts +49 -0
  73. package/dist/build/with-interfere.d.mts.map +1 -0
  74. package/dist/build/with-interfere.mjs +75 -0
  75. package/dist/build/with-interfere.mjs.map +1 -0
  76. package/dist/client/client.d.mts +3 -0
  77. package/dist/client/client.mjs +5 -0
  78. package/dist/client/provider.d.mts +22 -0
  79. package/dist/client/provider.d.mts.map +1 -0
  80. package/dist/client/provider.mjs +33 -0
  81. package/dist/client/provider.mjs.map +1 -0
  82. package/dist/lib/env.d.mts +12 -0
  83. package/dist/lib/env.d.mts.map +1 -0
  84. package/dist/lib/env.mjs +17 -0
  85. package/dist/lib/env.mjs.map +1 -0
  86. package/dist/lib/test-utils/make-next-request.d.mts +6 -0
  87. package/dist/lib/test-utils/make-next-request.d.mts.map +1 -0
  88. package/dist/lib/test-utils/make-next-request.mjs +12 -0
  89. package/dist/lib/test-utils/make-next-request.mjs.map +1 -0
  90. package/dist/lib/types.d.mts +22 -0
  91. package/dist/lib/types.d.mts.map +1 -0
  92. package/dist/lib/types.mjs +7 -0
  93. package/dist/lib/types.mjs.map +1 -0
  94. package/dist/server/middleware.d.mts +11 -0
  95. package/dist/server/middleware.d.mts.map +1 -0
  96. package/dist/server/middleware.mjs +84 -0
  97. package/dist/server/middleware.mjs.map +1 -0
  98. package/dist/server/proxy.d.mts +6 -0
  99. package/dist/server/proxy.d.mts.map +1 -0
  100. package/dist/server/proxy.mjs +29 -0
  101. package/dist/server/proxy.mjs.map +1 -0
  102. package/dist/server/route-handler.d.mts +9 -0
  103. package/dist/server/route-handler.d.mts.map +1 -0
  104. package/dist/server/route-handler.mjs +172 -0
  105. package/dist/server/route-handler.mjs.map +1 -0
  106. package/dist/server/services/config.service.d.mts +21 -0
  107. package/dist/server/services/config.service.d.mts.map +1 -0
  108. package/dist/server/services/config.service.mjs +43 -0
  109. package/dist/server/services/config.service.mjs.map +1 -0
  110. package/dist/server/services/error-tracking.service.d.mts +19 -0
  111. package/dist/server/services/error-tracking.service.d.mts.map +1 -0
  112. package/dist/server/services/error-tracking.service.mjs +31 -0
  113. package/dist/server/services/error-tracking.service.mjs.map +1 -0
  114. package/package.json +67 -36
  115. package/dist/__tests__/build/with-interfere-coverage.test.d.ts +0 -2
  116. package/dist/__tests__/build/with-interfere-coverage.test.d.ts.map +0 -1
  117. package/dist/__tests__/build/with-interfere-coverage.test.js +0 -325
  118. package/dist/__tests__/build/with-interfere-coverage.test.js.map +0 -1
  119. package/dist/__tests__/build/with-interfere.test.d.ts +0 -2
  120. package/dist/__tests__/build/with-interfere.test.d.ts.map +0 -1
  121. package/dist/__tests__/build/with-interfere.test.js +0 -424
  122. package/dist/__tests__/build/with-interfere.test.js.map +0 -1
  123. package/dist/__tests__/core/client.test.d.ts +0 -2
  124. package/dist/__tests__/core/client.test.d.ts.map +0 -1
  125. package/dist/__tests__/core/client.test.js +0 -373
  126. package/dist/__tests__/core/client.test.js.map +0 -1
  127. package/dist/__tests__/core/encoders.test.d.ts +0 -2
  128. package/dist/__tests__/core/encoders.test.d.ts.map +0 -1
  129. package/dist/__tests__/core/encoders.test.js +0 -56
  130. package/dist/__tests__/core/encoders.test.js.map +0 -1
  131. package/dist/__tests__/core/rage-click.test.d.ts +0 -2
  132. package/dist/__tests__/core/rage-click.test.d.ts.map +0 -1
  133. package/dist/__tests__/core/rage-click.test.js +0 -121
  134. package/dist/__tests__/core/rage-click.test.js.map +0 -1
  135. package/dist/__tests__/core/session-manager.test.d.ts +0 -2
  136. package/dist/__tests__/core/session-manager.test.d.ts.map +0 -1
  137. package/dist/__tests__/core/session-manager.test.js +0 -1168
  138. package/dist/__tests__/core/session-manager.test.js.map +0 -1
  139. package/dist/__tests__/integration/release-upload.test.d.ts +0 -2
  140. package/dist/__tests__/integration/release-upload.test.d.ts.map +0 -1
  141. package/dist/__tests__/integration/release-upload.test.js +0 -167
  142. package/dist/__tests__/integration/release-upload.test.js.map +0 -1
  143. package/dist/__tests__/session/persistence.test.d.ts +0 -2
  144. package/dist/__tests__/session/persistence.test.d.ts.map +0 -1
  145. package/dist/__tests__/session/persistence.test.js +0 -129
  146. package/dist/__tests__/session/persistence.test.js.map +0 -1
  147. package/dist/__tests__/session/session-summary.test.d.ts +0 -2
  148. package/dist/__tests__/session/session-summary.test.d.ts.map +0 -1
  149. package/dist/__tests__/session/session-summary.test.js +0 -763
  150. package/dist/__tests__/session/session-summary.test.js.map +0 -1
  151. package/dist/client.d.ts +0 -75
  152. package/dist/client.d.ts.map +0 -1
  153. package/dist/client.js +0 -123
  154. package/dist/client.js.map +0 -1
  155. package/dist/config.d.ts +0 -61
  156. package/dist/config.d.ts.map +0 -1
  157. package/dist/config.js +0 -315
  158. package/dist/config.js.map +0 -1
  159. package/dist/index.d.ts +0 -20
  160. package/dist/index.d.ts.map +0 -1
  161. package/dist/index.jsx +0 -50
  162. package/dist/index.jsx.map +0 -1
  163. package/dist/lib/core/client-core.d.ts +0 -27
  164. package/dist/lib/core/client-core.d.ts.map +0 -1
  165. package/dist/lib/core/client-core.js +0 -152
  166. package/dist/lib/core/client-core.js.map +0 -1
  167. package/dist/lib/core/constants.d.ts +0 -12
  168. package/dist/lib/core/constants.d.ts.map +0 -1
  169. package/dist/lib/core/constants.js +0 -17
  170. package/dist/lib/core/constants.js.map +0 -1
  171. package/dist/lib/core/debug.d.ts +0 -47
  172. package/dist/lib/core/debug.d.ts.map +0 -1
  173. package/dist/lib/core/debug.js +0 -79
  174. package/dist/lib/core/debug.js.map +0 -1
  175. package/dist/lib/core/encoders.d.ts +0 -3
  176. package/dist/lib/core/encoders.d.ts.map +0 -1
  177. package/dist/lib/core/encoders.js +0 -5
  178. package/dist/lib/core/encoders.js.map +0 -1
  179. package/dist/lib/core/error-handlers.d.ts +0 -14
  180. package/dist/lib/core/error-handlers.d.ts.map +0 -1
  181. package/dist/lib/core/error-handlers.js +0 -191
  182. package/dist/lib/core/error-handlers.js.map +0 -1
  183. package/dist/lib/core/runtime.d.ts +0 -7
  184. package/dist/lib/core/runtime.d.ts.map +0 -1
  185. package/dist/lib/core/runtime.js +0 -16
  186. package/dist/lib/core/runtime.js.map +0 -1
  187. package/dist/lib/persistence/storage.d.ts +0 -5
  188. package/dist/lib/persistence/storage.d.ts.map +0 -1
  189. package/dist/lib/persistence/storage.js +0 -67
  190. package/dist/lib/persistence/storage.js.map +0 -1
  191. package/dist/lib/session/constants.d.ts +0 -19
  192. package/dist/lib/session/constants.d.ts.map +0 -1
  193. package/dist/lib/session/constants.js +0 -34
  194. package/dist/lib/session/constants.js.map +0 -1
  195. package/dist/lib/session/persistence.d.ts +0 -58
  196. package/dist/lib/session/persistence.d.ts.map +0 -1
  197. package/dist/lib/session/persistence.js +0 -179
  198. package/dist/lib/session/persistence.js.map +0 -1
  199. package/dist/lib/session/rage-click.d.ts +0 -17
  200. package/dist/lib/session/rage-click.d.ts.map +0 -1
  201. package/dist/lib/session/rage-click.js +0 -104
  202. package/dist/lib/session/rage-click.js.map +0 -1
  203. package/dist/lib/session/replay.d.ts +0 -3
  204. package/dist/lib/session/replay.d.ts.map +0 -1
  205. package/dist/lib/session/replay.js +0 -109
  206. package/dist/lib/session/replay.js.map +0 -1
  207. package/dist/lib/session/session-manager.d.ts +0 -126
  208. package/dist/lib/session/session-manager.d.ts.map +0 -1
  209. package/dist/lib/session/session-manager.js +0 -635
  210. package/dist/lib/session/session-manager.js.map +0 -1
  211. package/dist/lib/session/session-summary.d.ts +0 -3
  212. package/dist/lib/session/session-summary.d.ts.map +0 -1
  213. package/dist/lib/session/session-summary.js +0 -214
  214. package/dist/lib/session/session-summary.js.map +0 -1
  215. package/dist/middleware.d.ts +0 -8
  216. package/dist/middleware.d.ts.map +0 -1
  217. package/dist/middleware.js +0 -139
  218. package/dist/middleware.js.map +0 -1
  219. package/dist/types/storage.d.ts +0 -7
  220. package/dist/types/storage.d.ts.map +0 -1
  221. package/dist/types/storage.js +0 -2
  222. package/dist/types/storage.js.map +0 -1
  223. package/dist/types.d.ts +0 -6
  224. package/dist/types.d.ts.map +0 -1
  225. package/dist/types.js +0 -4
  226. package/dist/types.js.map +0 -1
@@ -1,191 +0,0 @@
1
- import { capture } from "../../client.js";
2
- // Flag to prevent infinite loops when capturing errors
3
- let isCapturing = false;
4
- function serializeError(error) {
5
- if (error instanceof Error) {
6
- return {
7
- message: error.message,
8
- stack: error.stack,
9
- name: error.name,
10
- cause: error.cause,
11
- };
12
- }
13
- if (typeof error === "string") {
14
- return {
15
- message: error,
16
- name: "Error",
17
- };
18
- }
19
- return {
20
- message: String(error),
21
- name: "UnknownError",
22
- };
23
- }
24
- // Safe capture that doesn't throw if SDK isn't initialized
25
- function safeCapture(eventType, payload) {
26
- // Prevent recursive captures
27
- if (isCapturing) {
28
- return;
29
- }
30
- try {
31
- isCapturing = true;
32
- capture(eventType, payload);
33
- }
34
- catch {
35
- // SDK not initialized yet, skip capture
36
- // In production, you might want to queue these events for later
37
- }
38
- finally {
39
- isCapturing = false;
40
- }
41
- }
42
- // Client-side error handling
43
- export function setupClientErrorHandlers() {
44
- if (typeof window === "undefined") {
45
- return;
46
- }
47
- // Handle unhandled errors
48
- window.addEventListener("error", (event) => {
49
- const errorInfo = {
50
- message: event.message,
51
- name: "WindowError",
52
- fileName: event.filename,
53
- lineNumber: event.lineno,
54
- columnNumber: event.colno,
55
- stack: event.error?.stack,
56
- };
57
- safeCapture("error", {
58
- type: "unhandled_error",
59
- error: errorInfo,
60
- url: window.location.href,
61
- userAgent: navigator.userAgent,
62
- timestamp: Date.now(),
63
- });
64
- });
65
- // Handle unhandled promise rejections
66
- window.addEventListener("unhandledrejection", (event) => {
67
- const errorInfo = serializeError(event.reason);
68
- safeCapture("error", {
69
- type: "unhandled_rejection",
70
- error: errorInfo,
71
- url: window.location.href,
72
- userAgent: navigator.userAgent,
73
- timestamp: Date.now(),
74
- });
75
- });
76
- // Override console.error to capture logged errors
77
- // biome-ignore lint/suspicious/noConsole: We need to override console.error for error tracking
78
- const originalConsoleError = console.error;
79
- console.error = (...args) => {
80
- originalConsoleError.apply(console, args);
81
- // Convert arguments to a readable format
82
- const message = args
83
- .map((arg) => {
84
- if (typeof arg === "object") {
85
- try {
86
- return JSON.stringify(arg);
87
- }
88
- catch {
89
- return String(arg);
90
- }
91
- }
92
- return String(arg);
93
- })
94
- .join(" ");
95
- safeCapture("error", {
96
- type: "console_error",
97
- message,
98
- url: typeof window !== "undefined" ? window.location.href : undefined,
99
- timestamp: Date.now(),
100
- });
101
- };
102
- }
103
- // Server/Edge error handling for Next.js
104
- export function captureServerError(error, request, context) {
105
- const errorInfo = serializeError(error);
106
- const runtime = typeof globalThis !== "undefined" && "EdgeRuntime" in globalThis
107
- ? "edge"
108
- : "server";
109
- safeCapture(runtime === "edge" ? "edge_error" : "server_error", {
110
- type: "server_error",
111
- error: errorInfo,
112
- request: request
113
- ? {
114
- url: request.url,
115
- method: request.method,
116
- headers: Object.fromEntries(request.headers.entries()),
117
- }
118
- : undefined,
119
- context,
120
- timestamp: Date.now(),
121
- });
122
- }
123
- // Next.js specific error boundary helper
124
- export function captureErrorBoundaryError(error, errorInfo) {
125
- safeCapture("error", {
126
- type: "error_boundary",
127
- error: serializeError(error),
128
- componentStack: errorInfo.componentStack,
129
- url: typeof window !== "undefined" ? window.location.href : undefined,
130
- timestamp: Date.now(),
131
- });
132
- }
133
- // Capture Next.js API route errors
134
- export function captureApiRouteError(error, req, pathname) {
135
- const errorInfo = serializeError(error);
136
- safeCapture("server_error", {
137
- type: "api_route_error",
138
- error: errorInfo,
139
- request: {
140
- url: req.url,
141
- method: req.method,
142
- headers: Object.fromEntries(req.headers.entries()),
143
- pathname,
144
- },
145
- timestamp: Date.now(),
146
- });
147
- }
148
- // Determine runtime environment
149
- function getRuntime() {
150
- if (typeof window !== "undefined") {
151
- return "client";
152
- }
153
- if (typeof globalThis !== "undefined" && "EdgeRuntime" in globalThis) {
154
- return "edge";
155
- }
156
- return "server";
157
- }
158
- // Get event type based on runtime
159
- function getErrorEventType(runtime) {
160
- switch (runtime) {
161
- case "client":
162
- return "error";
163
- case "edge":
164
- return "edge_error";
165
- case "server":
166
- return "server_error";
167
- default:
168
- // This should never happen due to the type constraint, but satisfies the linter
169
- return "error";
170
- }
171
- }
172
- export function withErrorCapture(fn, context) {
173
- return (async (...args) => {
174
- try {
175
- return await fn(...args);
176
- }
177
- catch (error) {
178
- const runtime = getRuntime();
179
- const eventType = getErrorEventType(runtime);
180
- safeCapture(eventType, {
181
- type: "wrapped_function_error",
182
- error: serializeError(error),
183
- functionName: fn.name || "anonymous",
184
- context,
185
- timestamp: Date.now(),
186
- });
187
- throw error;
188
- }
189
- });
190
- }
191
- //# sourceMappingURL=error-handlers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"error-handlers.js","sourceRoot":"","sources":["../../../src/lib/core/error-handlers.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- /**
2
- * Runtime detection utilities
3
- */
4
- export type Runtime = "client" | "server" | "edge";
5
- export declare function detectRuntime(): Runtime;
6
- export declare function isClient(): boolean;
7
- //# sourceMappingURL=runtime.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/lib/core/runtime.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEnD,wBAAgB,aAAa,IAAI,OAAO,CAUvC;AAED,wBAAgB,QAAQ,IAAI,OAAO,CAElC"}
@@ -1,16 +0,0 @@
1
- /**
2
- * Runtime detection utilities
3
- */
4
- export function detectRuntime() {
5
- if (typeof window !== "undefined") {
6
- return "client";
7
- }
8
- if (typeof globalThis !== "undefined" && "EdgeRuntime" in globalThis) {
9
- return "edge";
10
- }
11
- return "server";
12
- }
13
- export function isClient() {
14
- return typeof window !== "undefined";
15
- }
16
- //# sourceMappingURL=runtime.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/lib/core/runtime.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,UAAU,aAAa;IAC3B,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,OAAO,UAAU,KAAK,WAAW,IAAI,aAAa,IAAI,UAAU,EAAE,CAAC;QACrE,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,QAAQ;IACtB,OAAO,OAAO,MAAM,KAAK,WAAW,CAAC;AACvC,CAAC"}
@@ -1,5 +0,0 @@
1
- import type { PersistentStore } from "../../types/storage.js";
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,wBAAwB,CAAC;AAoE9D,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,19 +0,0 @@
1
- export declare const SESSION_ID = "$session_id";
2
- export declare const WINDOW_ID = "$window_id";
3
- export declare const toMs: (seconds: number) => number;
4
- export declare const toSeconds: (milliseconds: number) => number;
5
- export declare const DEFAULT_SESSION_IDLE_TIMEOUT_SECONDS: number;
6
- export declare const MAX_SESSION_IDLE_TIMEOUT_SECONDS: number;
7
- export declare const MIN_SESSION_IDLE_TIMEOUT_SECONDS = 60;
8
- export declare const SESSION_LENGTH_LIMIT_MILLISECONDS: number;
9
- export declare const SESSION_SUMMARY_ENABLED = true;
10
- export declare const SESSION_SUMMARY_WINDOW_MS = 10000;
11
- export declare const SESSION_SUMMARY_MAX_EVENTS = 200;
12
- export declare const ALLOW_BROWSER_AI = true;
13
- export declare const REPLAY_ENABLED = true;
14
- export declare const REPLAY_CHUNK_MS = 10000;
15
- export declare const RAGE_CLICK_ENABLED = true;
16
- export declare const RAGE_CLICK_RADIUS_PX = 30;
17
- export declare const RAGE_CLICK_TIMEOUT_MS = 1000;
18
- export declare const RAGE_CLICK_COUNT = 3;
19
- //# sourceMappingURL=constants.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/session/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,gBAAgB,CAAC;AACxC,eAAO,MAAM,SAAS,eAAe,CAAC;AAUtC,eAAO,MAAM,IAAI,GAAI,SAAS,MAAM,KAAG,MACL,CAAC;AACnC,eAAO,MAAM,SAAS,GAAI,cAAc,MAAM,KAAG,MACE,CAAC;AAIpD,eAAO,MAAM,oCAAoC,QACC,CAAC;AACnD,eAAO,MAAM,gCAAgC,QAAuB,CAAC;AACrE,eAAO,MAAM,gCAAgC,KAAoB,CAAC;AAGlE,eAAO,MAAM,iCAAiC,QAA4B,CAAC;AAM3E,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAC5C,eAAO,MAAM,yBAAyB,QAAS,CAAC;AAChD,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAC9C,eAAO,MAAM,gBAAgB,OAAO,CAAC;AAGrC,eAAO,MAAM,cAAc,OAAO,CAAC;AACnC,eAAO,MAAM,eAAe,QAAS,CAAC;AAGtC,eAAO,MAAM,kBAAkB,OAAO,CAAC;AACvC,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAC1C,eAAO,MAAM,gBAAgB,IAAI,CAAC"}
@@ -1,34 +0,0 @@
1
- export const SESSION_ID = "$session_id";
2
- export const WINDOW_ID = "$window_id";
3
- // Time constants - all in milliseconds internally
4
- const SECONDS_IN_MINUTE = 60;
5
- const MINUTES_IN_HOUR = 60;
6
- const MILLISECONDS_IN_SECOND = 1000;
7
- const SECONDS_IN_HOUR = MINUTES_IN_HOUR * SECONDS_IN_MINUTE;
8
- const MILLISECONDS_IN_HOUR = SECONDS_IN_HOUR * MILLISECONDS_IN_SECOND;
9
- // Time utility functions
10
- export const toMs = (seconds) => seconds * MILLISECONDS_IN_SECOND;
11
- export const toSeconds = (milliseconds) => Math.floor(milliseconds / MILLISECONDS_IN_SECOND);
12
- // Session timeout constants (exported in seconds for config compatibility)
13
- const DEFAULT_IDLE_TIMEOUT_MINUTES = 30;
14
- export const DEFAULT_SESSION_IDLE_TIMEOUT_SECONDS = DEFAULT_IDLE_TIMEOUT_MINUTES * SECONDS_IN_MINUTE; // 30 minutes
15
- export const MAX_SESSION_IDLE_TIMEOUT_SECONDS = 10 * SECONDS_IN_HOUR; // 10 hours
16
- export const MIN_SESSION_IDLE_TIMEOUT_SECONDS = SECONDS_IN_MINUTE; // 1 minute
17
- // Session length limit (in milliseconds)
18
- export const SESSION_LENGTH_LIMIT_MILLISECONDS = 24 * MILLISECONDS_IN_HOUR; // 24 hours
19
- // Static SDK configuration values
20
- // These may become server-configurable in the future
21
- // Session summary
22
- export const SESSION_SUMMARY_ENABLED = true; // Always enabled
23
- export const SESSION_SUMMARY_WINDOW_MS = 10_000; // 10 seconds
24
- export const SESSION_SUMMARY_MAX_EVENTS = 200;
25
- export const ALLOW_BROWSER_AI = true;
26
- // Session replay
27
- export const REPLAY_ENABLED = true; // Always enabled
28
- export const REPLAY_CHUNK_MS = 10_000; // 10 seconds
29
- // Rage click detection
30
- export const RAGE_CLICK_ENABLED = true; // Always enabled
31
- export const RAGE_CLICK_RADIUS_PX = 30;
32
- export const RAGE_CLICK_TIMEOUT_MS = 1000; // 1 second
33
- export const RAGE_CLICK_COUNT = 3; // 3 rapid clicks trigger rage click
34
- //# sourceMappingURL=constants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/lib/session/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,aAAa,CAAC;AACxC,MAAM,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC;AAEtC,kDAAkD;AAClD,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAC7B,MAAM,eAAe,GAAG,EAAE,CAAC;AAC3B,MAAM,sBAAsB,GAAG,IAAI,CAAC;AACpC,MAAM,eAAe,GAAG,eAAe,GAAG,iBAAiB,CAAC;AAC5D,MAAM,oBAAoB,GAAG,eAAe,GAAG,sBAAsB,CAAC;AAEtE,yBAAyB;AACzB,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,OAAe,EAAU,EAAE,CAC9C,OAAO,GAAG,sBAAsB,CAAC;AACnC,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,YAAoB,EAAU,EAAE,CACxD,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,sBAAsB,CAAC,CAAC;AAEpD,2EAA2E;AAC3E,MAAM,4BAA4B,GAAG,EAAE,CAAC;AACxC,MAAM,CAAC,MAAM,oCAAoC,GAC/C,4BAA4B,GAAG,iBAAiB,CAAC,CAAC,aAAa;AACjE,MAAM,CAAC,MAAM,gCAAgC,GAAG,EAAE,GAAG,eAAe,CAAC,CAAC,WAAW;AACjF,MAAM,CAAC,MAAM,gCAAgC,GAAG,iBAAiB,CAAC,CAAC,WAAW;AAE9E,yCAAyC;AACzC,MAAM,CAAC,MAAM,iCAAiC,GAAG,EAAE,GAAG,oBAAoB,CAAC,CAAC,WAAW;AAEvF,kCAAkC;AAClC,qDAAqD;AAErD,kBAAkB;AAClB,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,CAAC,CAAC,iBAAiB;AAC9D,MAAM,CAAC,MAAM,yBAAyB,GAAG,MAAM,CAAC,CAAC,aAAa;AAC9D,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAC9C,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAErC,iBAAiB;AACjB,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC,CAAC,iBAAiB;AACrD,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,CAAC,aAAa;AAEpD,uBAAuB;AACvB,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC,CAAC,iBAAiB;AACzD,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AACvC,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC,CAAC,WAAW;AACtD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,CAAC,oCAAoC"}
@@ -1,58 +0,0 @@
1
- import type { Config } from "@interfere/schemas/config";
2
- import type { PersistentStore } from "../../types/storage.js";
3
- export type Properties = {
4
- [key: string]: unknown;
5
- };
6
- export type PersistenceOptions = {
7
- /** Use deep equality check for register method (slower but more accurate for objects) */
8
- useDeepEquality?: boolean;
9
- /** Custom storage implementation for testing */
10
- customStorage?: PersistentStore;
11
- };
12
- export declare class InterferePersistence {
13
- private readonly _config;
14
- private _props;
15
- private readonly _storage;
16
- private readonly _name;
17
- private _disabled;
18
- private readonly _useDeepEquality;
19
- constructor(config: Partial<Config>, surface: string, isDisabled?: boolean, options?: PersistenceOptions);
20
- private _parseName;
21
- private _buildStorage;
22
- isDisabled(): boolean;
23
- load(): void;
24
- save(): void;
25
- /**
26
- * Deep equality helper for objects and arrays
27
- */
28
- private _deepEqual;
29
- register(props: Properties): boolean;
30
- /**
31
- * Remove a single property from persistence
32
- */
33
- removeProp(prop: string): void;
34
- /**
35
- * Get a property value with optional generic typing
36
- */
37
- getProperty<T = unknown>(prop: string): T | undefined;
38
- /**
39
- * Set a property value
40
- */
41
- setProperty<T = unknown>(prop: string, value: T): void;
42
- /**
43
- * Get all properties (immutable copy)
44
- */
45
- getAllProperties(): Readonly<Properties>;
46
- /**
47
- * Remove all data from storage and memory
48
- */
49
- removeAll(): void;
50
- /**
51
- * Clear both storage and in-memory props (alias for removeAll)
52
- */
53
- clear(): void;
54
- setDisabled(disabled: boolean): void;
55
- /** @deprecated Use removeProp instead */
56
- unregister(prop: string): void;
57
- }
58
- //# sourceMappingURL=persistence.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../../src/lib/session/persistence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAmB,MAAM,2BAA2B,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAO9D,MAAM,MAAM,UAAU,GAAG;IACvB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,yFAAyF;IACzF,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gDAAgD;IAChD,aAAa,CAAC,EAAE,eAAe,CAAC;CACjC,CAAC;AAEF,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkB;IAC1C,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyB;IAClD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAU;gBAGzC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,EACvB,OAAO,EAAE,MAAM,EACf,UAAU,UAAQ,EAClB,OAAO,GAAE,kBAAuB;IAelC,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,aAAa;IAiBrB,UAAU,IAAI,OAAO;IAIrB,IAAI,IAAI,IAAI;IAgBZ,IAAI,IAAI,IAAI;IAaZ;;OAEG;IACH,OAAO,CAAC,UAAU;IAsBlB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO;IAyBpC;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAO9B;;OAEG;IACH,WAAW,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAIrD;;OAEG;IACH,WAAW,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAKtD;;OAEG;IACH,gBAAgB,IAAI,QAAQ,CAAC,UAAU,CAAC;IAIxC;;OAEG;IACH,SAAS,IAAI,IAAI;IAcjB;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;IAWpC,yCAAyC;IACzC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;CAG/B"}
@@ -1,179 +0,0 @@
1
- import { localStore, memoryStore, sessionStore, } from "../persistence/storage.js";
2
- export class InterferePersistence {
3
- _config;
4
- _props = {};
5
- _storage;
6
- _name;
7
- _disabled;
8
- _useDeepEquality;
9
- constructor(config, surface, isDisabled = false, options = {}) {
10
- this._config = config;
11
- this._name = this._parseName(surface);
12
- this._disabled = isDisabled;
13
- this._useDeepEquality = options.useDeepEquality ?? false;
14
- // Short-circuit storage building if disabled
15
- this._storage = this._disabled
16
- ? null
17
- : (options.customStorage ?? this._buildStorage());
18
- this.load();
19
- }
20
- _parseName(surface) {
21
- // Normalize consecutive non-alphanumerics to single underscore
22
- const cleanSurface = surface.replace(/[^a-zA-Z0-9]+/g, "_");
23
- return `interfere_${cleanSurface}`;
24
- }
25
- _buildStorage() {
26
- const persistenceType = this._config.persistence || "localStorage";
27
- switch (persistenceType) {
28
- case "localStorage":
29
- return localStore._is_supported() ? localStore : memoryStore;
30
- case "sessionStorage":
31
- return sessionStore._is_supported() ? sessionStore : memoryStore;
32
- case "memory":
33
- return memoryStore;
34
- default:
35
- // TypeScript ensures exhaustiveness, but keep default for safety
36
- return localStore._is_supported() ? localStore : memoryStore;
37
- }
38
- }
39
- isDisabled() {
40
- return this._disabled;
41
- }
42
- load() {
43
- if (this._disabled || !this._storage) {
44
- return;
45
- }
46
- try {
47
- const entry = this._storage._parse(this._name);
48
- if (entry && typeof entry === "object" && entry !== null) {
49
- this._props = { ...entry };
50
- }
51
- }
52
- catch {
53
- // Gracefully handle parse errors, keep existing props
54
- // In production, we silently fail to avoid console noise
55
- }
56
- }
57
- save() {
58
- if (this._disabled || !this._storage) {
59
- return;
60
- }
61
- try {
62
- this._storage._set(this._name, this._props);
63
- }
64
- catch {
65
- // Gracefully handle storage errors (e.g., quota exceeded)
66
- // In production, we silently fail to avoid console noise
67
- }
68
- }
69
- /**
70
- * Deep equality helper for objects and arrays
71
- */
72
- _deepEqual(a, b) {
73
- if (a === b) {
74
- return true;
75
- }
76
- if (a == null || b == null) {
77
- return a === b;
78
- }
79
- if (typeof a !== typeof b) {
80
- return false;
81
- }
82
- if (typeof a !== "object" || typeof b !== "object") {
83
- return a === b;
84
- }
85
- try {
86
- return JSON.stringify(a) === JSON.stringify(b);
87
- }
88
- catch {
89
- // Fallback to shallow comparison for non-serializable objects
90
- return a === b;
91
- }
92
- }
93
- register(props) {
94
- if (!props || typeof props !== "object") {
95
- return false;
96
- }
97
- let hasChanges = false;
98
- for (const [prop, val] of Object.entries(props)) {
99
- const currentVal = this._props[prop];
100
- const isEqual = this._useDeepEquality
101
- ? this._deepEqual(currentVal, val)
102
- : currentVal === val;
103
- if (!isEqual) {
104
- this._props[prop] = val;
105
- hasChanges = true;
106
- }
107
- }
108
- if (hasChanges) {
109
- this.save();
110
- }
111
- return hasChanges;
112
- }
113
- /**
114
- * Remove a single property from persistence
115
- */
116
- removeProp(prop) {
117
- if (prop in this._props) {
118
- delete this._props[prop];
119
- this.save();
120
- }
121
- }
122
- /**
123
- * Get a property value with optional generic typing
124
- */
125
- getProperty(prop) {
126
- return this._props[prop];
127
- }
128
- /**
129
- * Set a property value
130
- */
131
- setProperty(prop, value) {
132
- this._props[prop] = value;
133
- this.save();
134
- }
135
- /**
136
- * Get all properties (immutable copy)
137
- */
138
- getAllProperties() {
139
- return { ...this._props };
140
- }
141
- /**
142
- * Remove all data from storage and memory
143
- */
144
- removeAll() {
145
- this._props = {};
146
- if (!this._storage) {
147
- return;
148
- }
149
- try {
150
- this._storage._remove(this._name);
151
- }
152
- catch {
153
- // Gracefully handle removal errors
154
- // In production, we silently fail to avoid console noise
155
- }
156
- }
157
- /**
158
- * Clear both storage and in-memory props (alias for removeAll)
159
- */
160
- clear() {
161
- this.removeAll();
162
- }
163
- setDisabled(disabled) {
164
- this._disabled = disabled;
165
- if (this._disabled) {
166
- this.removeAll();
167
- }
168
- else if (Object.keys(this._props).length > 0) {
169
- // Only save if we have properties to persist
170
- this.save();
171
- }
172
- }
173
- // Deprecated methods for backward compatibility
174
- /** @deprecated Use removeProp instead */
175
- unregister(prop) {
176
- this.removeProp(prop);
177
- }
178
- }
179
- //# sourceMappingURL=persistence.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"persistence.js","sourceRoot":"","sources":["../../../src/lib/session/persistence.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- export default class RageClick {
2
- private clicks;
3
- private readonly radiusPx;
4
- private readonly timeoutMs;
5
- private readonly clickCount;
6
- constructor();
7
- isRageClick(x: number, y: number, timestamp: number): boolean;
8
- getElementInfo(target: HTMLElement | null): {
9
- tagName?: string;
10
- className?: string;
11
- id?: string;
12
- text?: string;
13
- ariaLabel?: string;
14
- };
15
- }
16
- export declare function setupRageClick(): void;
17
- //# 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":"AAcA,MAAM,CAAC,OAAO,OAAO,SAAS;IAC5B,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;;IASpC,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;IAkC7D,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,GAAG;QAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB;CAaF;AASD,wBAAgB,cAAc,IAAI,IAAI,CA0DrC"}