@interfere/react 0.1.0-alpha.6 → 0.2.0-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 (310) hide show
  1. package/README.md +90 -0
  2. package/dist/error-boundary.d.mts +27 -0
  3. package/dist/error-boundary.d.mts.map +1 -0
  4. package/dist/error-boundary.mjs +42 -0
  5. package/dist/error-boundary.mjs.map +1 -0
  6. package/dist/internal/client.d.mts +13 -0
  7. package/dist/internal/client.d.mts.map +1 -0
  8. package/dist/internal/client.mjs +80 -0
  9. package/dist/internal/client.mjs.map +1 -0
  10. package/dist/internal/config.d.mts +9 -0
  11. package/dist/internal/config.d.mts.map +1 -0
  12. package/dist/internal/config.mjs +27 -0
  13. package/dist/internal/config.mjs.map +1 -0
  14. package/dist/internal/context.d.mts +6 -0
  15. package/dist/internal/context.d.mts.map +1 -0
  16. package/dist/internal/context.mjs +32 -0
  17. package/dist/internal/context.mjs.map +1 -0
  18. package/dist/internal/envelope.d.mts +14 -0
  19. package/dist/internal/envelope.d.mts.map +1 -0
  20. package/dist/internal/envelope.mjs +20 -0
  21. package/dist/internal/envelope.mjs.map +1 -0
  22. package/dist/internal/errors.d.mts +4 -0
  23. package/dist/internal/errors.d.mts.map +1 -0
  24. package/dist/internal/errors.mjs +4 -0
  25. package/dist/internal/errors.mjs.map +1 -0
  26. package/dist/internal/sw.d.mts +4 -0
  27. package/dist/internal/sw.d.mts.map +1 -0
  28. package/dist/internal/sw.mjs +10 -0
  29. package/dist/internal/sw.mjs.map +1 -0
  30. package/dist/plugins/errors.d.mts +6 -0
  31. package/dist/plugins/errors.d.mts.map +1 -0
  32. package/dist/plugins/errors.mjs +59 -0
  33. package/dist/plugins/errors.mjs.map +1 -0
  34. package/dist/plugins/lib/loader.d.mts +9 -0
  35. package/dist/plugins/lib/loader.d.mts.map +1 -0
  36. package/dist/plugins/lib/loader.mjs +47 -0
  37. package/dist/plugins/lib/loader.mjs.map +1 -0
  38. package/dist/plugins/lib/types.d.mts +14 -0
  39. package/dist/plugins/lib/types.d.mts.map +1 -0
  40. package/dist/plugins/lib/types.mjs +1 -0
  41. package/dist/plugins/pages.d.mts +6 -0
  42. package/dist/plugins/pages.d.mts.map +1 -0
  43. package/dist/plugins/pages.mjs +102 -0
  44. package/dist/plugins/pages.mjs.map +1 -0
  45. package/dist/plugins/rage-clicks.d.mts +6 -0
  46. package/dist/plugins/rage-clicks.d.mts.map +1 -0
  47. package/dist/plugins/rage-clicks.mjs +53 -0
  48. package/dist/plugins/rage-clicks.mjs.map +1 -0
  49. package/dist/plugins/replay.d.mts +6 -0
  50. package/dist/plugins/replay.d.mts.map +1 -0
  51. package/dist/plugins/replay.mjs +62 -0
  52. package/dist/plugins/replay.mjs.map +1 -0
  53. package/dist/provider.d.mts +17 -11
  54. package/dist/provider.d.mts.map +1 -1
  55. package/dist/provider.mjs +18 -17
  56. package/dist/provider.mjs.map +1 -1
  57. package/dist/tracking/api.d.mts +22 -0
  58. package/dist/tracking/api.d.mts.map +1 -0
  59. package/dist/tracking/api.mjs +88 -0
  60. package/dist/tracking/api.mjs.map +1 -0
  61. package/dist/tracking/session.d.mts +19 -0
  62. package/dist/tracking/session.d.mts.map +1 -0
  63. package/dist/tracking/session.mjs +92 -0
  64. package/dist/tracking/session.mjs.map +1 -0
  65. package/dist/tracking/visitor.d.mts +6 -0
  66. package/dist/tracking/visitor.d.mts.map +1 -0
  67. package/dist/tracking/visitor.mjs +35 -0
  68. package/dist/tracking/visitor.mjs.map +1 -0
  69. package/dist/transport/http.d.mts +15 -0
  70. package/dist/transport/http.d.mts.map +1 -0
  71. package/dist/transport/http.mjs +56 -0
  72. package/dist/transport/http.mjs.map +1 -0
  73. package/dist/transport/queue.d.mts +25 -0
  74. package/dist/transport/queue.d.mts.map +1 -0
  75. package/dist/transport/queue.mjs +60 -0
  76. package/dist/transport/queue.mjs.map +1 -0
  77. package/dist/util/log.d.mts +13 -0
  78. package/dist/util/log.d.mts.map +1 -0
  79. package/dist/util/log.mjs +37 -0
  80. package/dist/util/log.mjs.map +1 -0
  81. package/package.json +38 -64
  82. package/dist/client.d.mts +0 -8
  83. package/dist/client.d.mts.map +0 -1
  84. package/dist/client.mjs +0 -14
  85. package/dist/client.mjs.map +0 -1
  86. package/dist/core/events/define-event.d.mts +0 -12
  87. package/dist/core/events/define-event.d.mts.map +0 -1
  88. package/dist/core/events/define-event.mjs +0 -39
  89. package/dist/core/events/define-event.mjs.map +0 -1
  90. package/dist/core/events/event-registry.d.mts +0 -23
  91. package/dist/core/events/event-registry.d.mts.map +0 -1
  92. package/dist/core/events/event-registry.mjs +0 -32
  93. package/dist/core/events/event-registry.mjs.map +0 -1
  94. package/dist/core/events/plugin-event-types.d.mts +0 -130
  95. package/dist/core/events/plugin-event-types.d.mts.map +0 -1
  96. package/dist/core/events/plugin-event-types.mjs +0 -25
  97. package/dist/core/events/plugin-event-types.mjs.map +0 -1
  98. package/dist/core/plugins/define-plugin.d.mts +0 -43
  99. package/dist/core/plugins/define-plugin.d.mts.map +0 -1
  100. package/dist/core/plugins/define-plugin.mjs +0 -23
  101. package/dist/core/plugins/define-plugin.mjs.map +0 -1
  102. package/dist/core/plugins/dom-utils.d.mts +0 -9
  103. package/dist/core/plugins/dom-utils.d.mts.map +0 -1
  104. package/dist/core/plugins/dom-utils.mjs +0 -25
  105. package/dist/core/plugins/dom-utils.mjs.map +0 -1
  106. package/dist/core/plugins/impl/ai-summary/ai-summary-plugin-api.d.mts +0 -18
  107. package/dist/core/plugins/impl/ai-summary/ai-summary-plugin-api.d.mts.map +0 -1
  108. package/dist/core/plugins/impl/ai-summary/ai-summary-plugin-api.mjs +0 -17
  109. package/dist/core/plugins/impl/ai-summary/ai-summary-plugin-api.mjs.map +0 -1
  110. package/dist/core/plugins/impl/ai-summary/plugin.d.mts +0 -6
  111. package/dist/core/plugins/impl/ai-summary/plugin.d.mts.map +0 -1
  112. package/dist/core/plugins/impl/ai-summary/plugin.mjs +0 -151
  113. package/dist/core/plugins/impl/ai-summary/plugin.mjs.map +0 -1
  114. package/dist/core/plugins/impl/errors/errors-plugin-api.d.mts +0 -17
  115. package/dist/core/plugins/impl/errors/errors-plugin-api.d.mts.map +0 -1
  116. package/dist/core/plugins/impl/errors/errors-plugin-api.mjs +0 -58
  117. package/dist/core/plugins/impl/errors/errors-plugin-api.mjs.map +0 -1
  118. package/dist/core/plugins/impl/errors/logic.d.mts +0 -15
  119. package/dist/core/plugins/impl/errors/logic.d.mts.map +0 -1
  120. package/dist/core/plugins/impl/errors/logic.mjs +0 -48
  121. package/dist/core/plugins/impl/errors/logic.mjs.map +0 -1
  122. package/dist/core/plugins/impl/errors/patches.d.mts +0 -13
  123. package/dist/core/plugins/impl/errors/patches.d.mts.map +0 -1
  124. package/dist/core/plugins/impl/errors/patches.mjs +0 -43
  125. package/dist/core/plugins/impl/errors/patches.mjs.map +0 -1
  126. package/dist/core/plugins/impl/errors/plugin.d.mts +0 -9
  127. package/dist/core/plugins/impl/errors/plugin.d.mts.map +0 -1
  128. package/dist/core/plugins/impl/errors/plugin.mjs +0 -91
  129. package/dist/core/plugins/impl/errors/plugin.mjs.map +0 -1
  130. package/dist/core/plugins/impl/page-events/page-events-plugin-api.d.mts +0 -19
  131. package/dist/core/plugins/impl/page-events/page-events-plugin-api.d.mts.map +0 -1
  132. package/dist/core/plugins/impl/page-events/page-events-plugin-api.mjs +0 -38
  133. package/dist/core/plugins/impl/page-events/page-events-plugin-api.mjs.map +0 -1
  134. package/dist/core/plugins/impl/page-events/plugin.d.mts +0 -6
  135. package/dist/core/plugins/impl/page-events/plugin.d.mts.map +0 -1
  136. package/dist/core/plugins/impl/page-events/plugin.mjs +0 -95
  137. package/dist/core/plugins/impl/page-events/plugin.mjs.map +0 -1
  138. package/dist/core/plugins/impl/rage-click/plugin.d.mts +0 -6
  139. package/dist/core/plugins/impl/rage-click/plugin.d.mts.map +0 -1
  140. package/dist/core/plugins/impl/rage-click/plugin.mjs +0 -38
  141. package/dist/core/plugins/impl/rage-click/plugin.mjs.map +0 -1
  142. package/dist/core/plugins/impl/rage-click/rage-click.layer.d.mts +0 -9
  143. package/dist/core/plugins/impl/rage-click/rage-click.layer.d.mts.map +0 -1
  144. package/dist/core/plugins/impl/rage-click/rage-click.layer.mjs +0 -35
  145. package/dist/core/plugins/impl/rage-click/rage-click.layer.mjs.map +0 -1
  146. package/dist/core/plugins/impl/rage-click/rage-click.service.d.mts +0 -16
  147. package/dist/core/plugins/impl/rage-click/rage-click.service.d.mts.map +0 -1
  148. package/dist/core/plugins/impl/rage-click/rage-click.service.mjs +0 -7
  149. package/dist/core/plugins/impl/rage-click/rage-click.service.mjs.map +0 -1
  150. package/dist/core/plugins/impl/rage-click/rage-click.test-layer.d.mts +0 -16
  151. package/dist/core/plugins/impl/rage-click/rage-click.test-layer.d.mts.map +0 -1
  152. package/dist/core/plugins/impl/rage-click/rage-click.test-layer.mjs +0 -18
  153. package/dist/core/plugins/impl/rage-click/rage-click.test-layer.mjs.map +0 -1
  154. package/dist/core/plugins/impl/replay/plugin.d.mts +0 -9
  155. package/dist/core/plugins/impl/replay/plugin.d.mts.map +0 -1
  156. package/dist/core/plugins/impl/replay/plugin.mjs +0 -83
  157. package/dist/core/plugins/impl/replay/plugin.mjs.map +0 -1
  158. package/dist/core/plugins/impl/replay/replay-plugin-api.d.mts +0 -18
  159. package/dist/core/plugins/impl/replay/replay-plugin-api.d.mts.map +0 -1
  160. package/dist/core/plugins/impl/replay/replay-plugin-api.mjs +0 -50
  161. package/dist/core/plugins/impl/replay/replay-plugin-api.mjs.map +0 -1
  162. package/dist/core/plugins/impl/server-tracing/plugin.d.mts +0 -13
  163. package/dist/core/plugins/impl/server-tracing/plugin.d.mts.map +0 -1
  164. package/dist/core/plugins/impl/server-tracing/plugin.mjs +0 -75
  165. package/dist/core/plugins/impl/server-tracing/plugin.mjs.map +0 -1
  166. package/dist/core/plugins/impl/server-tracing/server-tracing-plugin-api.d.mts +0 -16
  167. package/dist/core/plugins/impl/server-tracing/server-tracing-plugin-api.d.mts.map +0 -1
  168. package/dist/core/plugins/impl/server-tracing/server-tracing-plugin-api.mjs +0 -17
  169. package/dist/core/plugins/impl/server-tracing/server-tracing-plugin-api.mjs.map +0 -1
  170. package/dist/core/plugins/impl/server-tracing/tracing-logic.d.mts +0 -29
  171. package/dist/core/plugins/impl/server-tracing/tracing-logic.d.mts.map +0 -1
  172. package/dist/core/plugins/impl/server-tracing/tracing-logic.mjs +0 -55
  173. package/dist/core/plugins/impl/server-tracing/tracing-logic.mjs.map +0 -1
  174. package/dist/core/plugins/plugin-loader.d.mts +0 -75
  175. package/dist/core/plugins/plugin-loader.d.mts.map +0 -1
  176. package/dist/core/plugins/plugin-loader.mjs +0 -79
  177. package/dist/core/plugins/plugin-loader.mjs.map +0 -1
  178. package/dist/core/plugins/services/event-capture.d.mts +0 -12
  179. package/dist/core/plugins/services/event-capture.d.mts.map +0 -1
  180. package/dist/core/plugins/services/event-capture.layer.d.mts +0 -11
  181. package/dist/core/plugins/services/event-capture.layer.d.mts.map +0 -1
  182. package/dist/core/plugins/services/event-capture.layer.mjs +0 -79
  183. package/dist/core/plugins/services/event-capture.layer.mjs.map +0 -1
  184. package/dist/core/plugins/services/event-capture.mjs +0 -7
  185. package/dist/core/plugins/services/event-capture.mjs.map +0 -1
  186. package/dist/core/plugins/services/event-capture.test-layer.d.mts +0 -17
  187. package/dist/core/plugins/services/event-capture.test-layer.d.mts.map +0 -1
  188. package/dist/core/plugins/services/event-capture.test-layer.mjs +0 -21
  189. package/dist/core/plugins/services/event-capture.test-layer.mjs.map +0 -1
  190. package/dist/core/plugins/services/plugin-config.d.mts +0 -11
  191. package/dist/core/plugins/services/plugin-config.d.mts.map +0 -1
  192. package/dist/core/plugins/services/plugin-config.mjs +0 -7
  193. package/dist/core/plugins/services/plugin-config.mjs.map +0 -1
  194. package/dist/core/plugins/services/plugin-config.test-layer.d.mts +0 -60
  195. package/dist/core/plugins/services/plugin-config.test-layer.d.mts.map +0 -1
  196. package/dist/core/plugins/services/plugin-config.test-layer.mjs +0 -8
  197. package/dist/core/plugins/services/plugin-config.test-layer.mjs.map +0 -1
  198. package/dist/core/plugins/services/plugin-logger.d.mts +0 -14
  199. package/dist/core/plugins/services/plugin-logger.d.mts.map +0 -1
  200. package/dist/core/plugins/services/plugin-logger.mjs +0 -7
  201. package/dist/core/plugins/services/plugin-logger.mjs.map +0 -1
  202. package/dist/core/plugins/services/plugin-logger.test-layer.d.mts +0 -18
  203. package/dist/core/plugins/services/plugin-logger.test-layer.d.mts.map +0 -1
  204. package/dist/core/plugins/services/plugin-logger.test-layer.mjs +0 -28
  205. package/dist/core/plugins/services/plugin-logger.test-layer.mjs.map +0 -1
  206. package/dist/core/plugins/services/plugin-runtime.d.mts +0 -10
  207. package/dist/core/plugins/services/plugin-runtime.d.mts.map +0 -1
  208. package/dist/core/plugins/services/plugin-runtime.mjs +0 -7
  209. package/dist/core/plugins/services/plugin-runtime.mjs.map +0 -1
  210. package/dist/core/plugins/services/plugin-runtime.test-layer.d.mts +0 -16
  211. package/dist/core/plugins/services/plugin-runtime.test-layer.d.mts.map +0 -1
  212. package/dist/core/plugins/services/plugin-runtime.test-layer.mjs +0 -21
  213. package/dist/core/plugins/services/plugin-runtime.test-layer.mjs.map +0 -1
  214. package/dist/core/plugins/services/session-info.d.mts +0 -11
  215. package/dist/core/plugins/services/session-info.d.mts.map +0 -1
  216. package/dist/core/plugins/services/session-info.mjs +0 -7
  217. package/dist/core/plugins/services/session-info.mjs.map +0 -1
  218. package/dist/core/plugins/services/session-info.test-layer.d.mts +0 -18
  219. package/dist/core/plugins/services/session-info.test-layer.d.mts.map +0 -1
  220. package/dist/core/plugins/services/session-info.test-layer.mjs +0 -20
  221. package/dist/core/plugins/services/session-info.test-layer.mjs.map +0 -1
  222. package/dist/core/runtime/config.d.mts +0 -14
  223. package/dist/core/runtime/config.d.mts.map +0 -1
  224. package/dist/core/runtime/config.mjs +0 -33
  225. package/dist/core/runtime/config.mjs.map +0 -1
  226. package/dist/core/runtime/context.d.mts +0 -50
  227. package/dist/core/runtime/context.d.mts.map +0 -1
  228. package/dist/core/runtime/context.mjs +0 -46
  229. package/dist/core/runtime/context.mjs.map +0 -1
  230. package/dist/core/runtime/ingest-target.d.mts +0 -10
  231. package/dist/core/runtime/ingest-target.d.mts.map +0 -1
  232. package/dist/core/runtime/ingest-target.mjs +0 -15
  233. package/dist/core/runtime/ingest-target.mjs.map +0 -1
  234. package/dist/core/runtime/native-fetch.d.mts +0 -32
  235. package/dist/core/runtime/native-fetch.d.mts.map +0 -1
  236. package/dist/core/runtime/native-fetch.mjs +0 -49
  237. package/dist/core/runtime/native-fetch.mjs.map +0 -1
  238. package/dist/core/schemas.d.mts +0 -26
  239. package/dist/core/schemas.d.mts.map +0 -1
  240. package/dist/core/schemas.mjs +0 -1
  241. package/dist/effect/errors.d.mts +0 -22
  242. package/dist/effect/errors.d.mts.map +0 -1
  243. package/dist/effect/errors.mjs +0 -17
  244. package/dist/effect/errors.mjs.map +0 -1
  245. package/dist/effect/layers/circuit-breaker.layer.d.mts +0 -9
  246. package/dist/effect/layers/circuit-breaker.layer.d.mts.map +0 -1
  247. package/dist/effect/layers/circuit-breaker.layer.mjs +0 -9
  248. package/dist/effect/layers/circuit-breaker.layer.mjs.map +0 -1
  249. package/dist/effect/layers/circuit-breaker.layer.test-layer.d.mts +0 -18
  250. package/dist/effect/layers/circuit-breaker.layer.test-layer.d.mts.map +0 -1
  251. package/dist/effect/layers/circuit-breaker.layer.test-layer.mjs +0 -43
  252. package/dist/effect/layers/circuit-breaker.layer.test-layer.mjs.map +0 -1
  253. package/dist/effect/layers/config.layer.d.mts +0 -13
  254. package/dist/effect/layers/config.layer.d.mts.map +0 -1
  255. package/dist/effect/layers/config.layer.mjs +0 -21
  256. package/dist/effect/layers/config.layer.mjs.map +0 -1
  257. package/dist/effect/layers/context.layer.d.mts +0 -12
  258. package/dist/effect/layers/context.layer.d.mts.map +0 -1
  259. package/dist/effect/layers/context.layer.mjs +0 -14
  260. package/dist/effect/layers/context.layer.mjs.map +0 -1
  261. package/dist/effect/layers/http.layer.d.mts +0 -21
  262. package/dist/effect/layers/http.layer.d.mts.map +0 -1
  263. package/dist/effect/layers/http.layer.mjs +0 -118
  264. package/dist/effect/layers/http.layer.mjs.map +0 -1
  265. package/dist/effect/layers/queue.layer.d.mts +0 -31
  266. package/dist/effect/layers/queue.layer.d.mts.map +0 -1
  267. package/dist/effect/layers/queue.layer.mjs +0 -257
  268. package/dist/effect/layers/queue.layer.mjs.map +0 -1
  269. package/dist/effect/layers/queue.layer.test-layer.d.mts +0 -19
  270. package/dist/effect/layers/queue.layer.test-layer.d.mts.map +0 -1
  271. package/dist/effect/layers/queue.layer.test-layer.mjs +0 -44
  272. package/dist/effect/layers/queue.layer.test-layer.mjs.map +0 -1
  273. package/dist/effect/layers/session.layer.d.mts +0 -34
  274. package/dist/effect/layers/session.layer.d.mts.map +0 -1
  275. package/dist/effect/layers/session.layer.mjs +0 -127
  276. package/dist/effect/layers/session.layer.mjs.map +0 -1
  277. package/dist/effect/layers/storage.layer.d.mts +0 -50
  278. package/dist/effect/layers/storage.layer.d.mts.map +0 -1
  279. package/dist/effect/layers/storage.layer.mjs +0 -180
  280. package/dist/effect/layers/storage.layer.mjs.map +0 -1
  281. package/dist/effect/layers/test-utils.d.mts +0 -19
  282. package/dist/effect/layers/test-utils.d.mts.map +0 -1
  283. package/dist/effect/layers/test-utils.mjs +0 -32
  284. package/dist/effect/layers/test-utils.mjs.map +0 -1
  285. package/dist/effect/runtime-services.d.mts +0 -23
  286. package/dist/effect/runtime-services.d.mts.map +0 -1
  287. package/dist/effect/runtime-services.mjs +0 -79
  288. package/dist/effect/runtime-services.mjs.map +0 -1
  289. package/dist/effect/tags.d.mts +0 -58
  290. package/dist/effect/tags.d.mts.map +0 -1
  291. package/dist/effect/tags.mjs +0 -7
  292. package/dist/effect/tags.mjs.map +0 -1
  293. package/dist/hooks/use-runtime-and-plugins.d.mts +0 -7
  294. package/dist/hooks/use-runtime-and-plugins.d.mts.map +0 -1
  295. package/dist/hooks/use-runtime-and-plugins.mjs +0 -121
  296. package/dist/hooks/use-runtime-and-plugins.mjs.map +0 -1
  297. package/dist/hooks/use-session.d.mts +0 -40
  298. package/dist/hooks/use-session.d.mts.map +0 -1
  299. package/dist/hooks/use-session.mjs +0 -96
  300. package/dist/hooks/use-session.mjs.map +0 -1
  301. package/dist/package.mjs +0 -103
  302. package/dist/package.mjs.map +0 -1
  303. package/dist/server/auth.d.mts +0 -15
  304. package/dist/server/auth.d.mts.map +0 -1
  305. package/dist/server/auth.mjs +0 -45
  306. package/dist/server/auth.mjs.map +0 -1
  307. package/dist/server/capture.d.mts +0 -34
  308. package/dist/server/capture.d.mts.map +0 -1
  309. package/dist/server/capture.mjs +0 -172
  310. package/dist/server/capture.mjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"rage-click.service.mjs","names":[],"sources":["../../../../../src/core/plugins/impl/rage-click/rage-click.service.ts"],"sourcesContent":["import { Context, type Effect } from \"effect\";\n\ninterface RageClickServiceApi {\n readonly onClick: (input: {\n readonly now: number;\n readonly x: number;\n readonly y: number;\n readonly selector: string;\n readonly text: string;\n }) => Effect.Effect<void>;\n}\n\nexport class RageClickService extends Context.Tag(\n \"@interfere/plugins/rage-click/RageClickService\"\n)<RageClickService, RageClickServiceApi>() {}\n"],"mappings":";;;AAYA,IAAa,mBAAb,cAAsC,QAAQ,IAC5C,iDACD,EAAyC,CAAC"}
@@ -1,16 +0,0 @@
1
- import { EventCapture } from "../../services/event-capture.mjs";
2
- import { PluginLogger } from "../../services/plugin-logger.mjs";
3
- import { RageClickService } from "./rage-click.service.mjs";
4
- import { EventCaptureTestState } from "../../services/event-capture.test-layer.mjs";
5
- import { PluginLoggerTestState } from "../../services/plugin-logger.test-layer.mjs";
6
- import { Effect, Layer } from "effect";
7
- import * as effect_Ref0 from "effect/Ref";
8
-
9
- //#region src/core/plugins/impl/rage-click/rage-click.test-layer.d.ts
10
- declare const makeRageClickTestLayer: () => Effect.Effect<{
11
- layer: Layer.Layer<EventCapture | PluginLogger | RageClickService, never, never>;
12
- captureStateRef: effect_Ref0.Ref<EventCaptureTestState>;
13
- loggerStateRef: effect_Ref0.Ref<PluginLoggerTestState>;
14
- }, never, never>;
15
- //#endregion
16
- export { makeRageClickTestLayer };
@@ -1 +0,0 @@
1
- {"version":3,"file":"rage-click.test-layer.d.mts","names":[],"sources":["../../../../../src/core/plugins/impl/rage-click/rage-click.test-layer.ts"],"mappings":";;;;;;;;;cAMa,sBAAA,QAAsB,MAAA,CAAA,MAAA;qBAclC,YAAA"}
@@ -1,18 +0,0 @@
1
- import { makeEventCaptureTestLayer } from "../../services/event-capture.test-layer.mjs";
2
- import { makePluginLoggerTestLayer } from "../../services/plugin-logger.test-layer.mjs";
3
- import { RageClickLive } from "./rage-click.layer.mjs";
4
- import { Effect, Layer } from "effect";
5
-
6
- //#region src/core/plugins/impl/rage-click/rage-click.test-layer.ts
7
- const makeRageClickTestLayer = Effect.fn("makeRageClickTestLayer")(function* () {
8
- const { stateRef: captureStateRef, layer: captureLayer } = yield* makeEventCaptureTestLayer();
9
- const { stateRef: loggerStateRef, layer: loggerLayer } = yield* makePluginLoggerTestLayer();
10
- return {
11
- layer: RageClickLive.pipe(Layer.provideMerge(captureLayer), Layer.provideMerge(loggerLayer)),
12
- captureStateRef,
13
- loggerStateRef
14
- };
15
- });
16
-
17
- //#endregion
18
- export { makeRageClickTestLayer };
@@ -1 +0,0 @@
1
- {"version":3,"file":"rage-click.test-layer.mjs","names":[],"sources":["../../../../../src/core/plugins/impl/rage-click/rage-click.test-layer.ts"],"sourcesContent":["import { Effect, Layer } from \"effect\";\n\nimport { makeEventCaptureTestLayer } from \"../../services/event-capture.test-layer.js\";\nimport { makePluginLoggerTestLayer } from \"../../services/plugin-logger.test-layer.js\";\nimport { RageClickLive } from \"./rage-click.layer.js\";\n\nexport const makeRageClickTestLayer = Effect.fn(\"makeRageClickTestLayer\")(\n function* () {\n const { stateRef: captureStateRef, layer: captureLayer } =\n yield* makeEventCaptureTestLayer();\n const { stateRef: loggerStateRef, layer: loggerLayer } =\n yield* makePluginLoggerTestLayer();\n\n const layer = RageClickLive.pipe(\n Layer.provideMerge(captureLayer),\n Layer.provideMerge(loggerLayer)\n );\n\n return { layer, captureStateRef, loggerStateRef };\n }\n);\n"],"mappings":";;;;;;AAMA,MAAa,yBAAyB,OAAO,GAAG,yBAAyB,CACvE,aAAa;CACX,MAAM,EAAE,UAAU,iBAAiB,OAAO,iBACxC,OAAO,2BAA2B;CACpC,MAAM,EAAE,UAAU,gBAAgB,OAAO,gBACvC,OAAO,2BAA2B;AAOpC,QAAO;EAAE,OALK,cAAc,KAC1B,MAAM,aAAa,aAAa,EAChC,MAAM,aAAa,YAAY,CAChC;EAEe;EAAiB;EAAgB;EAEpD"}
@@ -1,9 +0,0 @@
1
- import { PluginDef } from "../../define-plugin.mjs";
2
-
3
- //#region src/core/plugins/impl/replay/plugin.d.ts
4
- interface ReplayAPI {
5
- stop: () => void;
6
- }
7
- declare const _default: PluginDef<"replay", ReplayAPI>;
8
- //#endregion
9
- export { ReplayAPI, _default as default };
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin.d.mts","names":[],"sources":["../../../../../src/core/plugins/impl/replay/plugin.ts"],"mappings":";;;UAaiB,SAAA;EACf,IAAA;AAAA;AAAA,cACD,QAAA"}
@@ -1,83 +0,0 @@
1
- import { PluginRuntime } from "../../services/plugin-runtime.mjs";
2
- import { definePlugin } from "../../define-plugin.mjs";
3
- import { defineEvent } from "../../../events/define-event.mjs";
4
- import { ReplayPluginApi, ReplayPluginApiLayer } from "./replay-plugin-api.mjs";
5
- import { Effect, Option } from "effect";
6
- import { record } from "rrweb";
7
-
8
- //#region src/core/plugins/impl/replay/plugin.ts
9
- let replayStarted = false;
10
- let replayStopFn = null;
11
- var plugin_default = definePlugin("replay", {
12
- name: "replay",
13
- events: [defineEvent("replay_chunk").value()],
14
- layer: ReplayPluginApiLayer,
15
- setup: Effect.gen(function* () {
16
- const api = yield* ReplayPluginApi;
17
- const runtime = yield* PluginRuntime;
18
- if (typeof window === "undefined" || replayStarted || api.config.features.replay !== true) return {};
19
- const stopFnOpt = yield* Effect.gen(function* () {
20
- const beforeUnload = () => runtime.fork(api.flush("before_unload"));
21
- const visibility = () => {
22
- if (document.visibilityState === "hidden") runtime.fork(api.flush("visibility_hidden"));
23
- };
24
- window.addEventListener("beforeunload", beforeUnload);
25
- document.addEventListener("visibilitychange", visibility);
26
- const detach = () => {
27
- window.removeEventListener("beforeunload", beforeUnload);
28
- document.removeEventListener("visibilitychange", visibility);
29
- };
30
- const stopRecord = record({
31
- emit: (event) => runtime.fork(api.onRecordEvent(event)),
32
- sampling: {
33
- mousemove: 50,
34
- mouseInteraction: true,
35
- scroll: 150,
36
- media: 800,
37
- input: "last"
38
- },
39
- slimDOMOptions: "all",
40
- inlineStylesheet: false,
41
- collectFonts: false,
42
- recordCanvas: false
43
- });
44
- if (typeof stopRecord !== "function") {
45
- detach();
46
- return Option.none();
47
- }
48
- const intervalId = window.setInterval(() => {
49
- runtime.fork(api.flush("interval"));
50
- }, 1e4);
51
- const stop = () => {
52
- try {
53
- stopRecord();
54
- } catch {}
55
- try {
56
- window.clearInterval(intervalId);
57
- } catch {}
58
- detach();
59
- runtime.fork(api.flush("stop"));
60
- };
61
- return Option.fromNullable(stop);
62
- });
63
- if (Option.isNone(stopFnOpt)) return {};
64
- replayStopFn = stopFnOpt.value;
65
- replayStarted = true;
66
- const apiPublic = { stop: () => {
67
- if (replayStopFn) {
68
- replayStopFn();
69
- replayStopFn = null;
70
- replayStarted = false;
71
- }
72
- } };
73
- return {
74
- api: apiPublic,
75
- cleanup: () => {
76
- apiPublic.stop();
77
- }
78
- };
79
- }).pipe(Effect.withSpan("plugins.replay.setup"))
80
- });
81
-
82
- //#endregion
83
- export { plugin_default as default };
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin.mjs","names":[],"sources":["../../../../../src/core/plugins/impl/replay/plugin.ts"],"sourcesContent":["import type { eventWithTime } from \"@rrweb/types\";\nimport { Effect, Option } from \"effect\";\nimport { record, type recordOptions } from \"rrweb\";\n\nimport { defineEvent } from \"../../../events/define-event.js\";\nimport { definePlugin } from \"../../define-plugin.js\";\nimport { PluginRuntime } from \"../../services/plugin-runtime.js\";\nimport { ReplayPluginApi, ReplayPluginApiLayer } from \"./replay-plugin-api.js\";\n\n// Ensure recording starts only once across multiple setup() calls\nlet replayStarted = false;\nlet replayStopFn: (() => void) | null = null;\n\nexport interface ReplayAPI {\n stop: () => void;\n}\n\nexport default definePlugin(\"replay\", {\n name: \"replay\",\n events: [defineEvent(\"replay_chunk\").value()],\n layer: ReplayPluginApiLayer,\n setup: Effect.gen(function* () {\n const api = yield* ReplayPluginApi;\n const runtime = yield* PluginRuntime;\n\n if (\n typeof window === \"undefined\" ||\n replayStarted ||\n api.config.features.replay !== true\n ) {\n return {};\n }\n\n const startRecording = Effect.gen(function* () {\n const beforeUnload = () => runtime.fork(api.flush(\"before_unload\"));\n const visibility = () => {\n if (document.visibilityState === \"hidden\") {\n runtime.fork(api.flush(\"visibility_hidden\"));\n }\n };\n\n window.addEventListener(\"beforeunload\", beforeUnload);\n document.addEventListener(\"visibilitychange\", visibility);\n\n const detach = () => {\n window.removeEventListener(\"beforeunload\", beforeUnload);\n document.removeEventListener(\"visibilitychange\", visibility);\n };\n\n const options: recordOptions<eventWithTime> = {\n emit: (event) => runtime.fork(api.onRecordEvent(event)),\n sampling: {\n mousemove: 50,\n mouseInteraction: true,\n scroll: 150,\n media: 800,\n input: \"last\",\n },\n slimDOMOptions: \"all\",\n inlineStylesheet: false,\n collectFonts: false,\n recordCanvas: false,\n };\n\n const stopRecord = record(options);\n\n if (typeof stopRecord !== \"function\") {\n detach();\n\n return Option.none<() => void>();\n }\n\n const FLUSH_INTERVAL_MS = 10_000;\n const intervalId = window.setInterval(() => {\n runtime.fork(api.flush(\"interval\"));\n }, FLUSH_INTERVAL_MS);\n\n const stop = () => {\n try {\n stopRecord();\n } catch {\n // ignore\n }\n try {\n window.clearInterval(intervalId);\n } catch {\n // ignore\n }\n detach();\n runtime.fork(api.flush(\"stop\"));\n };\n\n return Option.fromNullable(stop);\n });\n\n const stopFnOpt = yield* startRecording;\n if (Option.isNone(stopFnOpt)) {\n return {};\n }\n\n replayStopFn = stopFnOpt.value;\n replayStarted = true;\n\n const apiPublic: ReplayAPI = {\n stop: () => {\n if (replayStopFn) {\n replayStopFn();\n replayStopFn = null;\n replayStarted = false;\n }\n },\n };\n\n return {\n api: apiPublic,\n cleanup: () => {\n apiPublic.stop();\n },\n };\n }).pipe(Effect.withSpan(\"plugins.replay.setup\")),\n});\n"],"mappings":";;;;;;;;AAUA,IAAI,gBAAgB;AACpB,IAAI,eAAoC;AAMxC,qBAAe,aAAa,UAAU;CACpC,MAAM;CACN,QAAQ,CAAC,YAAY,eAAe,CAAC,OAAO,CAAC;CAC7C,OAAO;CACP,OAAO,OAAO,IAAI,aAAa;EAC7B,MAAM,MAAM,OAAO;EACnB,MAAM,UAAU,OAAO;AAEvB,MACE,OAAO,WAAW,eAClB,iBACA,IAAI,OAAO,SAAS,WAAW,KAE/B,QAAO,EAAE;EAiEX,MAAM,YAAY,OA9DK,OAAO,IAAI,aAAa;GAC7C,MAAM,qBAAqB,QAAQ,KAAK,IAAI,MAAM,gBAAgB,CAAC;GACnE,MAAM,mBAAmB;AACvB,QAAI,SAAS,oBAAoB,SAC/B,SAAQ,KAAK,IAAI,MAAM,oBAAoB,CAAC;;AAIhD,UAAO,iBAAiB,gBAAgB,aAAa;AACrD,YAAS,iBAAiB,oBAAoB,WAAW;GAEzD,MAAM,eAAe;AACnB,WAAO,oBAAoB,gBAAgB,aAAa;AACxD,aAAS,oBAAoB,oBAAoB,WAAW;;GAkB9D,MAAM,aAAa,OAf2B;IAC5C,OAAO,UAAU,QAAQ,KAAK,IAAI,cAAc,MAAM,CAAC;IACvD,UAAU;KACR,WAAW;KACX,kBAAkB;KAClB,QAAQ;KACR,OAAO;KACP,OAAO;KACR;IACD,gBAAgB;IAChB,kBAAkB;IAClB,cAAc;IACd,cAAc;IACf,CAEiC;AAElC,OAAI,OAAO,eAAe,YAAY;AACpC,YAAQ;AAER,WAAO,OAAO,MAAkB;;GAIlC,MAAM,aAAa,OAAO,kBAAkB;AAC1C,YAAQ,KAAK,IAAI,MAAM,WAAW,CAAC;MAFX,IAGL;GAErB,MAAM,aAAa;AACjB,QAAI;AACF,iBAAY;YACN;AAGR,QAAI;AACF,YAAO,cAAc,WAAW;YAC1B;AAGR,YAAQ;AACR,YAAQ,KAAK,IAAI,MAAM,OAAO,CAAC;;AAGjC,UAAO,OAAO,aAAa,KAAK;IAChC;AAGF,MAAI,OAAO,OAAO,UAAU,CAC1B,QAAO,EAAE;AAGX,iBAAe,UAAU;AACzB,kBAAgB;EAEhB,MAAM,YAAuB,EAC3B,YAAY;AACV,OAAI,cAAc;AAChB,kBAAc;AACd,mBAAe;AACf,oBAAgB;;KAGrB;AAED,SAAO;GACL,KAAK;GACL,eAAe;AACb,cAAU,MAAM;;GAEnB;GACD,CAAC,KAAK,OAAO,SAAS,uBAAuB,CAAC;CACjD,CAAC"}
@@ -1,18 +0,0 @@
1
- import { EventCapture } from "../../services/event-capture.mjs";
2
- import { PluginConfig } from "../../services/plugin-config.mjs";
3
- import { PluginLogger } from "../../services/plugin-logger.mjs";
4
- import { Context, Effect, Layer } from "effect";
5
- import { Config } from "@interfere/types/sdk/config";
6
- import { eventWithTime } from "@rrweb/types";
7
-
8
- //#region src/core/plugins/impl/replay/replay-plugin-api.d.ts
9
- interface ReplayPluginApiService {
10
- readonly config: Config;
11
- readonly flush: (reason: string) => Effect.Effect<void>;
12
- readonly onRecordEvent: (event: eventWithTime) => Effect.Effect<void>;
13
- }
14
- declare const ReplayPluginApi_base: Context.TagClass<ReplayPluginApi, "@interfere/plugins/replay/ReplayPluginApi", ReplayPluginApiService>;
15
- declare class ReplayPluginApi extends ReplayPluginApi_base {}
16
- declare const ReplayPluginApiLayer: Layer.Layer<ReplayPluginApi, never, EventCapture | PluginLogger | PluginConfig>;
17
- //#endregion
18
- export { ReplayPluginApi, ReplayPluginApiLayer };
@@ -1 +0,0 @@
1
- {"version":3,"file":"replay-plugin-api.d.mts","names":[],"sources":["../../../../../src/core/plugins/impl/replay/replay-plugin-api.ts"],"mappings":";;;;;;;;UAeU,sBAAA;EAAA,SACC,MAAA,EAAQ,MAAA;EAAA,SACR,KAAA,GAAQ,MAAA,aAAmB,MAAA,CAAO,MAAA;EAAA,SAClC,aAAA,GAAgB,KAAA,EAAO,aAAA,KAAkB,MAAA,CAAO,MAAA;AAAA;AAAA,cAAM,oBAAA;cAGpD,eAAA,SAAwB,oBAAA;AAAA,cAIxB,oBAAA,EAAoB,KAAA,CAAA,KAAA,CAAA,eAAA,SAAA,YAAA,GAAA,YAAA,GAAA,YAAA"}
@@ -1,50 +0,0 @@
1
- import { EventCapture } from "../../services/event-capture.mjs";
2
- import { PluginConfig } from "../../services/plugin-config.mjs";
3
- import { PluginLogger } from "../../services/plugin-logger.mjs";
4
- import { Context, Effect, Layer, Ref, Schema } from "effect";
5
-
6
- //#region src/core/plugins/impl/replay/replay-plugin-api.ts
7
- const MAX_CHUNK_AGE_MS = 6e4;
8
- const MAX_CHUNK_EVENTS = 100;
9
- const MAX_CHUNK_SIZE_BYTES = 1e6;
10
- const encodeJson = Schema.encodeSync(Schema.parseJson());
11
- var ReplayPluginApi = class extends Context.Tag("@interfere/plugins/replay/ReplayPluginApi")() {};
12
- const ReplayPluginApiLayer = Layer.effect(ReplayPluginApi, Effect.gen(function* () {
13
- const capture = yield* EventCapture;
14
- const config = (yield* PluginConfig).config;
15
- const logger = yield* PluginLogger;
16
- const chunkRef = yield* Ref.make([]);
17
- const flush = Effect.fn("ReplayPluginApi.flush")((reason) => Effect.gen(function* () {
18
- const chunk = yield* Ref.get(chunkRef);
19
- if (chunk.length === 0) return;
20
- yield* Ref.set(chunkRef, []);
21
- yield* logger.trace("Sending replay chunk").pipe(Effect.annotateLogs({ reason }));
22
- const firstTs = chunk[0]?.timestamp;
23
- const lastTs = chunk.at(-1)?.timestamp;
24
- yield* capture.capture("replay_chunk", {
25
- ts: Date.now(),
26
- count: chunk.length,
27
- events: chunk.map((e) => encodeJson(e)),
28
- ...typeof firstTs === "number" && typeof lastTs === "number" ? {
29
- first_event_ts: firstTs,
30
- last_event_ts: lastTs
31
- } : {}
32
- }).pipe(Effect.withSpan("plugin.replay.send_chunk"));
33
- }));
34
- const onRecordEvent = Effect.fn("ReplayPluginApi.onRecordEvent")((event) => Effect.gen(function* () {
35
- const first = (yield* Ref.get(chunkRef)).at(0);
36
- if (first && event.timestamp - first.timestamp > MAX_CHUNK_AGE_MS) yield* flush("max_age");
37
- const nextChunk = [...yield* Ref.get(chunkRef), event];
38
- yield* Ref.set(chunkRef, nextChunk);
39
- const estimatedSize = encodeJson(nextChunk).length;
40
- if (nextChunk.length >= MAX_CHUNK_EVENTS || estimatedSize > MAX_CHUNK_SIZE_BYTES) yield* flush("threshold");
41
- }));
42
- return ReplayPluginApi.of({
43
- config,
44
- onRecordEvent,
45
- flush
46
- });
47
- }));
48
-
49
- //#endregion
50
- export { ReplayPluginApi, ReplayPluginApiLayer };
@@ -1 +0,0 @@
1
- {"version":3,"file":"replay-plugin-api.mjs","names":[],"sources":["../../../../../src/core/plugins/impl/replay/replay-plugin-api.ts"],"sourcesContent":["import type { Config } from \"@interfere/types/sdk/config\";\n\nimport type { eventWithTime } from \"@rrweb/types\";\nimport { Context, Effect, Layer, Ref, Schema } from \"effect\";\n\nimport { EventCapture } from \"../../services/event-capture.js\";\nimport { PluginConfig } from \"../../services/plugin-config.js\";\nimport { PluginLogger } from \"../../services/plugin-logger.js\";\n\nconst MAX_CHUNK_AGE_MS = 60_000;\nconst MAX_CHUNK_EVENTS = 100;\nconst MAX_CHUNK_SIZE_BYTES = 1_000_000;\n\nconst encodeJson = Schema.encodeSync(Schema.parseJson());\n\ninterface ReplayPluginApiService {\n readonly config: Config;\n readonly flush: (reason: string) => Effect.Effect<void>;\n readonly onRecordEvent: (event: eventWithTime) => Effect.Effect<void>;\n}\n\nexport class ReplayPluginApi extends Context.Tag(\n \"@interfere/plugins/replay/ReplayPluginApi\"\n)<ReplayPluginApi, ReplayPluginApiService>() {}\n\nexport const ReplayPluginApiLayer = Layer.effect(\n ReplayPluginApi,\n Effect.gen(function* () {\n const capture = yield* EventCapture;\n const config = (yield* PluginConfig).config;\n const logger = yield* PluginLogger;\n\n const chunkRef = yield* Ref.make<readonly eventWithTime[]>([]);\n\n const flush = Effect.fn(\"ReplayPluginApi.flush\")((reason: string) =>\n Effect.gen(function* () {\n const chunk = yield* Ref.get(chunkRef);\n if (chunk.length === 0) {\n return;\n }\n\n yield* Ref.set(chunkRef, []);\n yield* logger\n .trace(\"Sending replay chunk\")\n .pipe(Effect.annotateLogs({ reason }));\n\n const firstTs = chunk[0]?.timestamp;\n const lastTs = chunk.at(-1)?.timestamp;\n yield* capture\n .capture(\"replay_chunk\", {\n ts: Date.now(),\n count: chunk.length,\n events: chunk.map((e) => encodeJson(e)),\n ...(typeof firstTs === \"number\" && typeof lastTs === \"number\"\n ? { first_event_ts: firstTs, last_event_ts: lastTs }\n : {}),\n })\n .pipe(Effect.withSpan(\"plugin.replay.send_chunk\"));\n })\n );\n\n const onRecordEvent = Effect.fn(\"ReplayPluginApi.onRecordEvent\")(\n (event: eventWithTime) =>\n Effect.gen(function* () {\n const chunk = yield* Ref.get(chunkRef);\n const first = chunk.at(0);\n if (first && event.timestamp - first.timestamp > MAX_CHUNK_AGE_MS) {\n yield* flush(\"max_age\");\n }\n\n const nextChunk = [...(yield* Ref.get(chunkRef)), event];\n yield* Ref.set(chunkRef, nextChunk);\n\n const estimatedSize = encodeJson(nextChunk).length;\n if (\n nextChunk.length >= MAX_CHUNK_EVENTS ||\n estimatedSize > MAX_CHUNK_SIZE_BYTES\n ) {\n yield* flush(\"threshold\");\n }\n })\n );\n\n return ReplayPluginApi.of({\n config,\n onRecordEvent,\n flush,\n });\n })\n);\n"],"mappings":";;;;;;AASA,MAAM,mBAAmB;AACzB,MAAM,mBAAmB;AACzB,MAAM,uBAAuB;AAE7B,MAAM,aAAa,OAAO,WAAW,OAAO,WAAW,CAAC;AAQxD,IAAa,kBAAb,cAAqC,QAAQ,IAC3C,4CACD,EAA2C,CAAC;AAE7C,MAAa,uBAAuB,MAAM,OACxC,iBACA,OAAO,IAAI,aAAa;CACtB,MAAM,UAAU,OAAO;CACvB,MAAM,UAAU,OAAO,cAAc;CACrC,MAAM,SAAS,OAAO;CAEtB,MAAM,WAAW,OAAO,IAAI,KAA+B,EAAE,CAAC;CAE9D,MAAM,QAAQ,OAAO,GAAG,wBAAwB,EAAE,WAChD,OAAO,IAAI,aAAa;EACtB,MAAM,QAAQ,OAAO,IAAI,IAAI,SAAS;AACtC,MAAI,MAAM,WAAW,EACnB;AAGF,SAAO,IAAI,IAAI,UAAU,EAAE,CAAC;AAC5B,SAAO,OACJ,MAAM,uBAAuB,CAC7B,KAAK,OAAO,aAAa,EAAE,QAAQ,CAAC,CAAC;EAExC,MAAM,UAAU,MAAM,IAAI;EAC1B,MAAM,SAAS,MAAM,GAAG,GAAG,EAAE;AAC7B,SAAO,QACJ,QAAQ,gBAAgB;GACvB,IAAI,KAAK,KAAK;GACd,OAAO,MAAM;GACb,QAAQ,MAAM,KAAK,MAAM,WAAW,EAAE,CAAC;GACvC,GAAI,OAAO,YAAY,YAAY,OAAO,WAAW,WACjD;IAAE,gBAAgB;IAAS,eAAe;IAAQ,GAClD,EAAE;GACP,CAAC,CACD,KAAK,OAAO,SAAS,2BAA2B,CAAC;GACpD,CACH;CAED,MAAM,gBAAgB,OAAO,GAAG,gCAAgC,EAC7D,UACC,OAAO,IAAI,aAAa;EAEtB,MAAM,SADQ,OAAO,IAAI,IAAI,SAAS,EAClB,GAAG,EAAE;AACzB,MAAI,SAAS,MAAM,YAAY,MAAM,YAAY,iBAC/C,QAAO,MAAM,UAAU;EAGzB,MAAM,YAAY,CAAC,GAAI,OAAO,IAAI,IAAI,SAAS,EAAG,MAAM;AACxD,SAAO,IAAI,IAAI,UAAU,UAAU;EAEnC,MAAM,gBAAgB,WAAW,UAAU,CAAC;AAC5C,MACE,UAAU,UAAU,oBACpB,gBAAgB,qBAEhB,QAAO,MAAM,YAAY;GAE3B,CACL;AAED,QAAO,gBAAgB,GAAG;EACxB;EACA;EACA;EACD,CAAC;EACF,CACH"}
@@ -1,13 +0,0 @@
1
- import { PluginDef } from "../../define-plugin.mjs";
2
-
3
- //#region src/core/plugins/impl/server-tracing/plugin.d.ts
4
- type ServerTracingAPI = null;
5
- /**
6
- * Server tracing plugin - adds x-interfere-request headers to same-origin requests.
7
- *
8
- * This enables request/response correlation in server-side error tracking.
9
- * The plugin patches fetch and XMLHttpRequest to inject tracing headers.
10
- */
11
- declare const _default: PluginDef<"serverTracing", unknown>;
12
- //#endregion
13
- export { ServerTracingAPI, _default as default };
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin.d.mts","names":[],"sources":["../../../../../src/core/plugins/impl/server-tracing/plugin.ts"],"mappings":";;;KAeY,gBAAA;;;AAAZ;;;;cAAoC,QAAA"}
@@ -1,75 +0,0 @@
1
- import { definePlugin } from "../../define-plugin.mjs";
2
- import { ServerTracingPluginApi, ServerTracingPluginApiLayer } from "./server-tracing-plugin-api.mjs";
3
- import { X_INTERFERE_REQUEST_HEADER, createRequestHeader, extractUrlFromFetchInput, generateRequestId, shouldTraceUrl } from "./tracing-logic.mjs";
4
- import { Effect } from "effect";
5
-
6
- //#region src/core/plugins/impl/server-tracing/plugin.ts
7
- /**
8
- * Server tracing plugin - adds x-interfere-request headers to same-origin requests.
9
- *
10
- * This enables request/response correlation in server-side error tracking.
11
- * The plugin patches fetch and XMLHttpRequest to inject tracing headers.
12
- */
13
- var plugin_default = definePlugin("serverTracing", {
14
- name: "serverTracing",
15
- layer: ServerTracingPluginApiLayer,
16
- setup: Effect.gen(function* () {
17
- const api = yield* ServerTracingPluginApi;
18
- if (typeof window === "undefined") {
19
- yield* api.log.debug("serverTracing: SSR - skipping setup");
20
- return {};
21
- }
22
- const tracingOrigins = true;
23
- const currentOrigin = window.location.origin;
24
- const baseUrl = window.location.href;
25
- yield* api.log.debug("serverTracing: patching fetch and XMLHttpRequest");
26
- const originalFetch = window.fetch.bind(window);
27
- const patchedFetch = (input, init) => {
28
- if (!shouldTraceUrl(extractUrlFromFetchInput(input, baseUrl), currentOrigin, tracingOrigins)) return originalFetch(input, init);
29
- const headerValue = createRequestHeader(api.getSessionIdSync(), generateRequestId());
30
- const headers = new Headers(init?.headers);
31
- if (input instanceof Request) {
32
- for (const [key, value] of input.headers.entries()) if (!headers.has(key)) headers.set(key, value);
33
- }
34
- headers.set(X_INTERFERE_REQUEST_HEADER, headerValue);
35
- if (input instanceof Request) return originalFetch(new Request(input, { headers }));
36
- return originalFetch(input, {
37
- ...init,
38
- headers
39
- });
40
- };
41
- window.fetch = patchedFetch;
42
- const originalXHROpen = XMLHttpRequest.prototype.open;
43
- const originalXHRSend = XMLHttpRequest.prototype.send;
44
- const originalSetRequestHeader = XMLHttpRequest.prototype.setRequestHeader;
45
- const injectHeader = (xhr) => {
46
- if (xhr._interfereHeaderSet) return;
47
- const url = xhr._interfereUrl;
48
- if (!(url && shouldTraceUrl(url, currentOrigin, tracingOrigins))) return;
49
- const headerValue = createRequestHeader(api.getSessionIdSync(), generateRequestId());
50
- originalSetRequestHeader.call(xhr, X_INTERFERE_REQUEST_HEADER, headerValue);
51
- xhr._interfereHeaderSet = true;
52
- };
53
- XMLHttpRequest.prototype.open = function(method, url, ...rest) {
54
- this._interfereUrl = typeof url === "string" ? url : url.href;
55
- return originalXHROpen.call(this, method, url, ...rest);
56
- };
57
- XMLHttpRequest.prototype.setRequestHeader = function(name, value) {
58
- injectHeader(this);
59
- return originalSetRequestHeader.call(this, name, value);
60
- };
61
- XMLHttpRequest.prototype.send = function(body) {
62
- injectHeader(this);
63
- return originalXHRSend.call(this, body);
64
- };
65
- return { cleanup: () => {
66
- window.fetch = originalFetch;
67
- XMLHttpRequest.prototype.open = originalXHROpen;
68
- XMLHttpRequest.prototype.send = originalXHRSend;
69
- XMLHttpRequest.prototype.setRequestHeader = originalSetRequestHeader;
70
- } };
71
- }).pipe(Effect.withSpan("plugins.serverTracing.setup"))
72
- });
73
-
74
- //#endregion
75
- export { plugin_default as default };
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin.mjs","names":[],"sources":["../../../../../src/core/plugins/impl/server-tracing/plugin.ts"],"sourcesContent":["import { Effect } from \"effect\";\n\nimport { definePlugin } from \"../../define-plugin.js\";\nimport {\n ServerTracingPluginApi,\n ServerTracingPluginApiLayer,\n} from \"./server-tracing-plugin-api.js\";\nimport {\n createRequestHeader,\n extractUrlFromFetchInput,\n generateRequestId,\n shouldTraceUrl,\n X_INTERFERE_REQUEST_HEADER,\n} from \"./tracing-logic.js\";\n\nexport type ServerTracingAPI = null;\n\n/**\n * Server tracing plugin - adds x-interfere-request headers to same-origin requests.\n *\n * This enables request/response correlation in server-side error tracking.\n * The plugin patches fetch and XMLHttpRequest to inject tracing headers.\n */\nexport default definePlugin(\"serverTracing\", {\n name: \"serverTracing\",\n layer: ServerTracingPluginApiLayer,\n setup: Effect.gen(function* () {\n const api = yield* ServerTracingPluginApi;\n\n if (typeof window === \"undefined\") {\n yield* api.log.debug(\"serverTracing: SSR - skipping setup\");\n return {};\n }\n\n const tracingOrigins = true;\n const currentOrigin = window.location.origin;\n const baseUrl = window.location.href;\n\n yield* api.log.debug(\"serverTracing: patching fetch and XMLHttpRequest\");\n\n const originalFetch = window.fetch.bind(window);\n\n const patchedFetch: typeof window.fetch = (input, init) => {\n const url = extractUrlFromFetchInput(input, baseUrl);\n\n if (!shouldTraceUrl(url, currentOrigin, tracingOrigins)) {\n return originalFetch(input, init);\n }\n\n const sessionId = api.getSessionIdSync();\n const requestId = generateRequestId();\n const headerValue = createRequestHeader(sessionId, requestId);\n\n const headers = new Headers(init?.headers);\n if (input instanceof Request) {\n for (const [key, value] of input.headers.entries()) {\n if (!headers.has(key)) {\n headers.set(key, value);\n }\n }\n }\n headers.set(X_INTERFERE_REQUEST_HEADER, headerValue);\n\n if (input instanceof Request) {\n return originalFetch(new Request(input, { headers }));\n }\n\n return originalFetch(input, { ...init, headers });\n };\n\n window.fetch = patchedFetch;\n\n const originalXHROpen = XMLHttpRequest.prototype.open;\n const originalXHRSend = XMLHttpRequest.prototype.send;\n const originalSetRequestHeader = XMLHttpRequest.prototype.setRequestHeader;\n\n type TrackedXHR = XMLHttpRequest & {\n _interfereUrl?: string;\n _interfereHeaderSet?: boolean;\n };\n\n const injectHeader = (xhr: TrackedXHR) => {\n if (xhr._interfereHeaderSet) {\n return;\n }\n\n const url = xhr._interfereUrl;\n if (!(url && shouldTraceUrl(url, currentOrigin, tracingOrigins))) {\n return;\n }\n\n const sessionId = api.getSessionIdSync();\n const requestId = generateRequestId();\n const headerValue = createRequestHeader(sessionId, requestId);\n\n originalSetRequestHeader.call(\n xhr,\n X_INTERFERE_REQUEST_HEADER,\n headerValue\n );\n xhr._interfereHeaderSet = true;\n };\n\n XMLHttpRequest.prototype.open = function (\n method: string,\n url: string | URL,\n ...rest: unknown[]\n ) {\n (this as TrackedXHR)._interfereUrl =\n typeof url === \"string\" ? url : url.href;\n // biome-ignore lint/suspicious/noExplicitAny: XMLHttpRequest.open has variable arity\n return (originalXHROpen as any).call(this, method, url, ...rest);\n };\n\n XMLHttpRequest.prototype.setRequestHeader = function (\n name: string,\n value: string\n ) {\n injectHeader(this as TrackedXHR);\n return originalSetRequestHeader.call(this, name, value);\n };\n\n XMLHttpRequest.prototype.send = function (\n body?: XMLHttpRequestBodyInit | null\n ) {\n injectHeader(this as TrackedXHR);\n return originalXHRSend.call(this, body);\n };\n\n return {\n cleanup: () => {\n window.fetch = originalFetch;\n XMLHttpRequest.prototype.open = originalXHROpen;\n XMLHttpRequest.prototype.send = originalXHRSend;\n XMLHttpRequest.prototype.setRequestHeader = originalSetRequestHeader;\n },\n };\n }).pipe(Effect.withSpan(\"plugins.serverTracing.setup\")),\n});\n"],"mappings":";;;;;;;;;;;;AAuBA,qBAAe,aAAa,iBAAiB;CAC3C,MAAM;CACN,OAAO;CACP,OAAO,OAAO,IAAI,aAAa;EAC7B,MAAM,MAAM,OAAO;AAEnB,MAAI,OAAO,WAAW,aAAa;AACjC,UAAO,IAAI,IAAI,MAAM,sCAAsC;AAC3D,UAAO,EAAE;;EAGX,MAAM,iBAAiB;EACvB,MAAM,gBAAgB,OAAO,SAAS;EACtC,MAAM,UAAU,OAAO,SAAS;AAEhC,SAAO,IAAI,IAAI,MAAM,mDAAmD;EAExE,MAAM,gBAAgB,OAAO,MAAM,KAAK,OAAO;EAE/C,MAAM,gBAAqC,OAAO,SAAS;AAGzD,OAAI,CAAC,eAFO,yBAAyB,OAAO,QAAQ,EAE3B,eAAe,eAAe,CACrD,QAAO,cAAc,OAAO,KAAK;GAKnC,MAAM,cAAc,oBAFF,IAAI,kBAAkB,EACtB,mBAAmB,CACwB;GAE7D,MAAM,UAAU,IAAI,QAAQ,MAAM,QAAQ;AAC1C,OAAI,iBAAiB,SACnB;SAAK,MAAM,CAAC,KAAK,UAAU,MAAM,QAAQ,SAAS,CAChD,KAAI,CAAC,QAAQ,IAAI,IAAI,CACnB,SAAQ,IAAI,KAAK,MAAM;;AAI7B,WAAQ,IAAI,4BAA4B,YAAY;AAEpD,OAAI,iBAAiB,QACnB,QAAO,cAAc,IAAI,QAAQ,OAAO,EAAE,SAAS,CAAC,CAAC;AAGvD,UAAO,cAAc,OAAO;IAAE,GAAG;IAAM;IAAS,CAAC;;AAGnD,SAAO,QAAQ;EAEf,MAAM,kBAAkB,eAAe,UAAU;EACjD,MAAM,kBAAkB,eAAe,UAAU;EACjD,MAAM,2BAA2B,eAAe,UAAU;EAO1D,MAAM,gBAAgB,QAAoB;AACxC,OAAI,IAAI,oBACN;GAGF,MAAM,MAAM,IAAI;AAChB,OAAI,EAAE,OAAO,eAAe,KAAK,eAAe,eAAe,EAC7D;GAKF,MAAM,cAAc,oBAFF,IAAI,kBAAkB,EACtB,mBAAmB,CACwB;AAE7D,4BAAyB,KACvB,KACA,4BACA,YACD;AACD,OAAI,sBAAsB;;AAG5B,iBAAe,UAAU,OAAO,SAC9B,QACA,KACA,GAAG,MACH;AACA,GAAC,KAAoB,gBACnB,OAAO,QAAQ,WAAW,MAAM,IAAI;AAEtC,UAAQ,gBAAwB,KAAK,MAAM,QAAQ,KAAK,GAAG,KAAK;;AAGlE,iBAAe,UAAU,mBAAmB,SAC1C,MACA,OACA;AACA,gBAAa,KAAmB;AAChC,UAAO,yBAAyB,KAAK,MAAM,MAAM,MAAM;;AAGzD,iBAAe,UAAU,OAAO,SAC9B,MACA;AACA,gBAAa,KAAmB;AAChC,UAAO,gBAAgB,KAAK,MAAM,KAAK;;AAGzC,SAAO,EACL,eAAe;AACb,UAAO,QAAQ;AACf,kBAAe,UAAU,OAAO;AAChC,kBAAe,UAAU,OAAO;AAChC,kBAAe,UAAU,mBAAmB;KAE/C;GACD,CAAC,KAAK,OAAO,SAAS,8BAA8B,CAAC;CACxD,CAAC"}
@@ -1,16 +0,0 @@
1
- import { PluginLogger } from "../../services/plugin-logger.mjs";
2
- import { SessionInfo } from "../../services/session-info.mjs";
3
- import { Context, Effect, Layer } from "effect";
4
-
5
- //#region src/core/plugins/impl/server-tracing/server-tracing-plugin-api.d.ts
6
- interface ServerTracingPluginApiService {
7
- readonly getSessionIdSync: () => string | null;
8
- readonly log: {
9
- readonly debug: (message: string) => Effect.Effect<void>;
10
- };
11
- }
12
- declare const ServerTracingPluginApi_base: Context.TagClass<ServerTracingPluginApi, "@interfere/plugins/server-tracing/ServerTracingPluginApi", ServerTracingPluginApiService>;
13
- declare class ServerTracingPluginApi extends ServerTracingPluginApi_base {}
14
- declare const ServerTracingPluginApiLayer: Layer.Layer<ServerTracingPluginApi, never, PluginLogger | SessionInfo>;
15
- //#endregion
16
- export { ServerTracingPluginApi, ServerTracingPluginApiLayer };
@@ -1 +0,0 @@
1
- {"version":3,"file":"server-tracing-plugin-api.d.mts","names":[],"sources":["../../../../../src/core/plugins/impl/server-tracing/server-tracing-plugin-api.ts"],"mappings":";;;;;UAKU,6BAAA;EAAA,SACC,gBAAA;EAAA,SACA,GAAA;IAAA,SACE,KAAA,GAAQ,OAAA,aAAoB,MAAA,CAAO,MAAA;EAAA;AAAA;AAAA,cAAM,2BAAA;cAIzC,sBAAA,SAA+B,2BAAA;AAAA,cAI/B,2BAAA,EAA2B,KAAA,CAAA,KAAA,CAAA,sBAAA,SAAA,YAAA,GAAA,WAAA"}
@@ -1,17 +0,0 @@
1
- import { PluginLogger } from "../../services/plugin-logger.mjs";
2
- import { SessionInfo } from "../../services/session-info.mjs";
3
- import { Context, Effect, Layer } from "effect";
4
-
5
- //#region src/core/plugins/impl/server-tracing/server-tracing-plugin-api.ts
6
- var ServerTracingPluginApi = class extends Context.Tag("@interfere/plugins/server-tracing/ServerTracingPluginApi")() {};
7
- const ServerTracingPluginApiLayer = Layer.effect(ServerTracingPluginApi, Effect.gen(function* () {
8
- const logger = yield* PluginLogger;
9
- const session = yield* SessionInfo;
10
- return ServerTracingPluginApi.of({
11
- getSessionIdSync: session.getSessionIdSync,
12
- log: { debug: logger.debug }
13
- });
14
- }));
15
-
16
- //#endregion
17
- export { ServerTracingPluginApi, ServerTracingPluginApiLayer };
@@ -1 +0,0 @@
1
- {"version":3,"file":"server-tracing-plugin-api.mjs","names":[],"sources":["../../../../../src/core/plugins/impl/server-tracing/server-tracing-plugin-api.ts"],"sourcesContent":["import { Context, Effect, Layer } from \"effect\";\n\nimport { PluginLogger } from \"../../services/plugin-logger.js\";\nimport { SessionInfo } from \"../../services/session-info.js\";\n\ninterface ServerTracingPluginApiService {\n readonly getSessionIdSync: () => string | null;\n readonly log: {\n readonly debug: (message: string) => Effect.Effect<void>;\n };\n}\n\nexport class ServerTracingPluginApi extends Context.Tag(\n \"@interfere/plugins/server-tracing/ServerTracingPluginApi\"\n)<ServerTracingPluginApi, ServerTracingPluginApiService>() {}\n\nexport const ServerTracingPluginApiLayer = Layer.effect(\n ServerTracingPluginApi,\n Effect.gen(function* () {\n const logger = yield* PluginLogger;\n const session = yield* SessionInfo;\n\n return ServerTracingPluginApi.of({\n getSessionIdSync: session.getSessionIdSync,\n log: {\n debug: logger.debug,\n },\n });\n })\n);\n"],"mappings":";;;;;AAYA,IAAa,yBAAb,cAA4C,QAAQ,IAClD,2DACD,EAAyD,CAAC;AAE3D,MAAa,8BAA8B,MAAM,OAC/C,wBACA,OAAO,IAAI,aAAa;CACtB,MAAM,SAAS,OAAO;CACtB,MAAM,UAAU,OAAO;AAEvB,QAAO,uBAAuB,GAAG;EAC/B,kBAAkB,QAAQ;EAC1B,KAAK,EACH,OAAO,OAAO,OACf;EACF,CAAC;EACF,CACH"}
@@ -1,29 +0,0 @@
1
- //#region src/core/plugins/impl/server-tracing/tracing-logic.d.ts
2
- declare const X_INTERFERE_REQUEST_HEADER = "x-interfere-request";
3
- /**
4
- * Generate a unique request ID using nanoid.
5
- */
6
- declare function generateRequestId(): string;
7
- /**
8
- * Create the x-interfere-request header value.
9
- * Format: {sessionId}/{requestId}
10
- */
11
- declare function createRequestHeader(sessionId: string | null, requestId: string): string;
12
- /**
13
- * Check if a URL matches the tracing origins configuration.
14
- *
15
- * @param url - The URL to check (should be absolute)
16
- * @param currentOrigin - The current page origin for same-origin checks
17
- * @param tracingOrigins - Configuration: true for same-origin, or array of patterns
18
- */
19
- declare function shouldTraceUrl(url: string, currentOrigin: string, tracingOrigins: boolean | (string | RegExp)[]): boolean;
20
- /**
21
- * Normalize a URL to absolute form.
22
- */
23
- declare function normalizeUrl(url: string, baseUrl: string): string;
24
- /**
25
- * Extract URL string from various fetch input types.
26
- */
27
- declare function extractUrlFromFetchInput(input: RequestInfo | URL, baseUrl: string): string;
28
- //#endregion
29
- export { X_INTERFERE_REQUEST_HEADER, createRequestHeader, extractUrlFromFetchInput, generateRequestId, normalizeUrl, shouldTraceUrl };
@@ -1 +0,0 @@
1
- {"version":3,"file":"tracing-logic.d.mts","names":[],"sources":["../../../../../src/core/plugins/impl/server-tracing/tracing-logic.ts"],"mappings":";cAEM,0BAAA;;;;iBAKU,iBAAA,CAAA;;AAAhB;;;iBAQgB,mBAAA,CACd,SAAA,iBACA,SAAA;;AAFF;;;;;AAcA;iBAAgB,cAAA,CACd,GAAA,UACA,aAAA,UACA,cAAA,sBAAoC,MAAA;;;;iBA8BtB,YAAA,CAAa,GAAA,UAAa,OAAA;;;;iBAW1B,wBAAA,CACd,KAAA,EAAO,WAAA,GAAc,GAAA,EACrB,OAAA"}
@@ -1,55 +0,0 @@
1
- import { nanoid } from "nanoid";
2
-
3
- //#region src/core/plugins/impl/server-tracing/tracing-logic.ts
4
- const X_INTERFERE_REQUEST_HEADER = "x-interfere-request";
5
- /**
6
- * Generate a unique request ID using nanoid.
7
- */
8
- function generateRequestId() {
9
- return nanoid();
10
- }
11
- /**
12
- * Create the x-interfere-request header value.
13
- * Format: {sessionId}/{requestId}
14
- */
15
- function createRequestHeader(sessionId, requestId) {
16
- return `${sessionId ?? ""}/${requestId}`;
17
- }
18
- /**
19
- * Check if a URL matches the tracing origins configuration.
20
- *
21
- * @param url - The URL to check (should be absolute)
22
- * @param currentOrigin - The current page origin for same-origin checks
23
- * @param tracingOrigins - Configuration: true for same-origin, or array of patterns
24
- */
25
- function shouldTraceUrl(url, currentOrigin, tracingOrigins) {
26
- if (!tracingOrigins) return false;
27
- if (tracingOrigins === true) try {
28
- return new URL(url).origin === currentOrigin;
29
- } catch {
30
- return false;
31
- }
32
- for (const pattern of tracingOrigins) if (typeof pattern === "string" && url.includes(pattern) || pattern instanceof RegExp && pattern.test(url)) return true;
33
- return false;
34
- }
35
- /**
36
- * Normalize a URL to absolute form.
37
- */
38
- function normalizeUrl(url, baseUrl) {
39
- try {
40
- return new URL(url, baseUrl).href;
41
- } catch {
42
- return url;
43
- }
44
- }
45
- /**
46
- * Extract URL string from various fetch input types.
47
- */
48
- function extractUrlFromFetchInput(input, baseUrl) {
49
- if (typeof input === "string") return normalizeUrl(input, baseUrl);
50
- if (input instanceof URL) return input.href;
51
- return normalizeUrl(input.url, baseUrl);
52
- }
53
-
54
- //#endregion
55
- export { X_INTERFERE_REQUEST_HEADER, createRequestHeader, extractUrlFromFetchInput, generateRequestId, normalizeUrl, shouldTraceUrl };
@@ -1 +0,0 @@
1
- {"version":3,"file":"tracing-logic.mjs","names":[],"sources":["../../../../../src/core/plugins/impl/server-tracing/tracing-logic.ts"],"sourcesContent":["import { nanoid } from \"nanoid\";\n\nconst X_INTERFERE_REQUEST_HEADER = \"x-interfere-request\";\n\n/**\n * Generate a unique request ID using nanoid.\n */\nexport function generateRequestId(): string {\n return nanoid();\n}\n\n/**\n * Create the x-interfere-request header value.\n * Format: {sessionId}/{requestId}\n */\nexport function createRequestHeader(\n sessionId: string | null,\n requestId: string\n): string {\n return `${sessionId ?? \"\"}/${requestId}`;\n}\n\n/**\n * Check if a URL matches the tracing origins configuration.\n *\n * @param url - The URL to check (should be absolute)\n * @param currentOrigin - The current page origin for same-origin checks\n * @param tracingOrigins - Configuration: true for same-origin, or array of patterns\n */\nexport function shouldTraceUrl(\n url: string,\n currentOrigin: string,\n tracingOrigins: boolean | (string | RegExp)[]\n): boolean {\n if (!tracingOrigins) {\n return false;\n }\n\n if (tracingOrigins === true) {\n try {\n const urlObj = new URL(url);\n return urlObj.origin === currentOrigin;\n } catch {\n return false;\n }\n }\n\n for (const pattern of tracingOrigins) {\n if (\n (typeof pattern === \"string\" && url.includes(pattern)) ||\n (pattern instanceof RegExp && pattern.test(url))\n ) {\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * Normalize a URL to absolute form.\n */\nexport function normalizeUrl(url: string, baseUrl: string): string {\n try {\n return new URL(url, baseUrl).href;\n } catch {\n return url;\n }\n}\n\n/**\n * Extract URL string from various fetch input types.\n */\nexport function extractUrlFromFetchInput(\n input: RequestInfo | URL,\n baseUrl: string\n): string {\n if (typeof input === \"string\") {\n return normalizeUrl(input, baseUrl);\n }\n if (input instanceof URL) {\n return input.href;\n }\n return normalizeUrl(input.url, baseUrl);\n}\n\nexport { X_INTERFERE_REQUEST_HEADER };\n"],"mappings":";;;AAEA,MAAM,6BAA6B;;;;AAKnC,SAAgB,oBAA4B;AAC1C,QAAO,QAAQ;;;;;;AAOjB,SAAgB,oBACd,WACA,WACQ;AACR,QAAO,GAAG,aAAa,GAAG,GAAG;;;;;;;;;AAU/B,SAAgB,eACd,KACA,eACA,gBACS;AACT,KAAI,CAAC,eACH,QAAO;AAGT,KAAI,mBAAmB,KACrB,KAAI;AAEF,SADe,IAAI,IAAI,IAAI,CACb,WAAW;SACnB;AACN,SAAO;;AAIX,MAAK,MAAM,WAAW,eACpB,KACG,OAAO,YAAY,YAAY,IAAI,SAAS,QAAQ,IACpD,mBAAmB,UAAU,QAAQ,KAAK,IAAI,CAE/C,QAAO;AAIX,QAAO;;;;;AAMT,SAAgB,aAAa,KAAa,SAAyB;AACjE,KAAI;AACF,SAAO,IAAI,IAAI,KAAK,QAAQ,CAAC;SACvB;AACN,SAAO;;;;;;AAOX,SAAgB,yBACd,OACA,SACQ;AACR,KAAI,OAAO,UAAU,SACnB,QAAO,aAAa,OAAO,QAAQ;AAErC,KAAI,iBAAiB,IACnB,QAAO,MAAM;AAEf,QAAO,aAAa,MAAM,KAAK,QAAQ"}
@@ -1,75 +0,0 @@
1
- import { PluginDef } from "./define-plugin.mjs";
2
- import { ConfigTag } from "../../effect/tags.mjs";
3
- import { QueueServiceTag } from "../../effect/layers/queue.layer.mjs";
4
- import { ContextServiceTag } from "../../effect/layers/context.layer.mjs";
5
- import { SessionServiceTag } from "../../effect/layers/session.layer.mjs";
6
- import { Effect } from "effect";
7
- import { PluginKey } from "@interfere/types/sdk/plugins/lib/types";
8
-
9
- //#region src/core/plugins/plugin-loader.d.ts
10
- type PluginCleanup = () => void;
11
- interface LoadedPlugins {
12
- readonly apis: Readonly<Record<string, unknown>>;
13
- readonly cleanups: readonly PluginCleanup[];
14
- readonly keys: ReadonlySet<PluginKey>;
15
- }
16
- declare const loadAndSetupPluginsEffect: (config: ({
17
- features: {
18
- errors?: boolean | undefined;
19
- replay?: boolean | undefined;
20
- rageClick?: boolean | undefined;
21
- aiSummary?: boolean | undefined;
22
- pageEvents?: boolean | undefined;
23
- serverTracing?: boolean | undefined;
24
- };
25
- metadata: {
26
- buildId: string | null;
27
- releaseId: string | null;
28
- environment: "development" | "preview" | "production" | null;
29
- runtime: "edge" | "browser" | "node" | null;
30
- };
31
- batch: {
32
- size: number;
33
- ms: number;
34
- };
35
- offline: {
36
- enabled: boolean;
37
- maxQueueSize: number;
38
- };
39
- } & {
40
- proxyUrl: string;
41
- }) | ({
42
- features: {
43
- errors?: boolean | undefined;
44
- replay?: boolean | undefined;
45
- rageClick?: boolean | undefined;
46
- aiSummary?: boolean | undefined;
47
- pageEvents?: boolean | undefined;
48
- serverTracing?: boolean | undefined;
49
- };
50
- metadata: {
51
- buildId: string | null;
52
- releaseId: string | null;
53
- environment: "development" | "preview" | "production" | null;
54
- runtime: "edge" | "browser" | "node" | null;
55
- };
56
- batch: {
57
- size: number;
58
- ms: number;
59
- };
60
- offline: {
61
- enabled: boolean;
62
- maxQueueSize: number;
63
- };
64
- } & {
65
- ingestUrl: string;
66
- surfaceToken: string;
67
- }), userPlugins?: readonly PluginDef<string, unknown>[] | undefined) => Effect.Effect<{
68
- cleanups: readonly PluginCleanup[];
69
- apis: Readonly<{
70
- [x: string]: unknown;
71
- }>;
72
- keys: Set<"errors" | "replay" | "rageClick" | "aiSummary" | "pageEvents" | "serverTracing">;
73
- }, never, QueueServiceTag | ConfigTag | ContextServiceTag | SessionServiceTag>;
74
- //#endregion
75
- export { LoadedPlugins, PluginCleanup, loadAndSetupPluginsEffect };
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin-loader.d.mts","names":[],"sources":["../../../src/core/plugins/plugin-loader.ts"],"mappings":";;;;;;;;;KAgBY,aAAA;AAAA,UAEK,aAAA;EAAA,SACN,IAAA,EAAM,QAAA,CAAS,MAAA;EAAA,SACf,QAAA,WAAmB,aAAA;EAAA,SACnB,IAAA,EAAM,WAAA,CAAY,SAAA;AAAA;AAAA,cA+DhB,yBAAA,GAAyB,MAAA"}