@multiplayer-app/session-recorder-react-native 1.3.36 → 2.0.17-alpha.10

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 (289) hide show
  1. package/package.json +13 -8
  2. package/src/NativeSessionRecorderModule.ts +4 -2
  3. package/src/NativeSessionRecorderModuleSpec.ts +4 -2
  4. package/src/NativeSessionRecorderNative.ts +1 -1
  5. package/src/index.ts +0 -1
  6. package/src/native/SessionRecorderNative.ts +22 -13
  7. package/src/otel/helpers.ts +5 -1
  8. package/src/otel/index.ts +1 -1
  9. package/src/otel/instrumentations/index.ts +22 -22
  10. package/src/patch/configs.ts +15 -10
  11. package/src/patch/fetch.ts +98 -89
  12. package/src/patch/index.ts +1 -1
  13. package/src/patch/xhr.ts +3 -4
  14. package/src/services/screenRecordingService.ts +7 -2
  15. package/src/services/storage.service.ts +4 -1
  16. package/src/session-recorder.ts +4 -0
  17. package/src/types/configs.ts +1 -2
  18. package/lib/module/NativeSessionRecorderModule.js +0 -5
  19. package/lib/module/NativeSessionRecorderModule.js.map +0 -1
  20. package/lib/module/NativeSessionRecorderModuleSpec.js +0 -5
  21. package/lib/module/NativeSessionRecorderModuleSpec.js.map +0 -1
  22. package/lib/module/NativeSessionRecorderNative.js +0 -5
  23. package/lib/module/NativeSessionRecorderNative.js.map +0 -1
  24. package/lib/module/components/ErrorBoundary.js +0 -32
  25. package/lib/module/components/ErrorBoundary.js.map +0 -1
  26. package/lib/module/components/ScreenRecorderView/ScreenRecorderView.js +0 -23
  27. package/lib/module/components/ScreenRecorderView/ScreenRecorderView.js.map +0 -1
  28. package/lib/module/components/ScreenRecorderView/index.js +0 -4
  29. package/lib/module/components/ScreenRecorderView/index.js.map +0 -1
  30. package/lib/module/components/SessionRecorderWidget/ErrorBanner.js +0 -64
  31. package/lib/module/components/SessionRecorderWidget/ErrorBanner.js.map +0 -1
  32. package/lib/module/components/SessionRecorderWidget/FinalPopover.js +0 -74
  33. package/lib/module/components/SessionRecorderWidget/FinalPopover.js.map +0 -1
  34. package/lib/module/components/SessionRecorderWidget/FloatingButton.js +0 -191
  35. package/lib/module/components/SessionRecorderWidget/FloatingButton.js.map +0 -1
  36. package/lib/module/components/SessionRecorderWidget/InitialPopover.js +0 -138
  37. package/lib/module/components/SessionRecorderWidget/InitialPopover.js.map +0 -1
  38. package/lib/module/components/SessionRecorderWidget/ModalContainer.js +0 -177
  39. package/lib/module/components/SessionRecorderWidget/ModalContainer.js.map +0 -1
  40. package/lib/module/components/SessionRecorderWidget/ModalHeader.js +0 -27
  41. package/lib/module/components/SessionRecorderWidget/ModalHeader.js.map +0 -1
  42. package/lib/module/components/SessionRecorderWidget/SessionRecorderWidget.js +0 -133
  43. package/lib/module/components/SessionRecorderWidget/SessionRecorderWidget.js.map +0 -1
  44. package/lib/module/components/SessionRecorderWidget/icons.js +0 -93
  45. package/lib/module/components/SessionRecorderWidget/icons.js.map +0 -1
  46. package/lib/module/components/SessionRecorderWidget/index.js +0 -5
  47. package/lib/module/components/SessionRecorderWidget/index.js.map +0 -1
  48. package/lib/module/components/SessionRecorderWidget/styles.js +0 -173
  49. package/lib/module/components/SessionRecorderWidget/styles.js.map +0 -1
  50. package/lib/module/components/index.js +0 -6
  51. package/lib/module/components/index.js.map +0 -1
  52. package/lib/module/config/constants.js +0 -47
  53. package/lib/module/config/constants.js.map +0 -1
  54. package/lib/module/config/defaults.js +0 -87
  55. package/lib/module/config/defaults.js.map +0 -1
  56. package/lib/module/config/index.js +0 -9
  57. package/lib/module/config/index.js.map +0 -1
  58. package/lib/module/config/masking.js +0 -35
  59. package/lib/module/config/masking.js.map +0 -1
  60. package/lib/module/config/session-recorder.js +0 -50
  61. package/lib/module/config/session-recorder.js.map +0 -1
  62. package/lib/module/config/validators.js +0 -28
  63. package/lib/module/config/validators.js.map +0 -1
  64. package/lib/module/config/widget.js +0 -35
  65. package/lib/module/config/widget.js.map +0 -1
  66. package/lib/module/context/SessionRecorderContext.js +0 -100
  67. package/lib/module/context/SessionRecorderContext.js.map +0 -1
  68. package/lib/module/context/SessionRecorderStore.js +0 -12
  69. package/lib/module/context/SessionRecorderStore.js.map +0 -1
  70. package/lib/module/context/createStore.js +0 -27
  71. package/lib/module/context/createStore.js.map +0 -1
  72. package/lib/module/context/useSessionRecorderStore.js +0 -45
  73. package/lib/module/context/useSessionRecorderStore.js.map +0 -1
  74. package/lib/module/context/useStoreSelector.js +0 -27
  75. package/lib/module/context/useStoreSelector.js.map +0 -1
  76. package/lib/module/index.js +0 -14
  77. package/lib/module/index.js.map +0 -1
  78. package/lib/module/native/SessionRecorderNative.js +0 -76
  79. package/lib/module/native/SessionRecorderNative.js.map +0 -1
  80. package/lib/module/native/index.js +0 -4
  81. package/lib/module/native/index.js.map +0 -1
  82. package/lib/module/otel/CrashBufferSpanProcessor.js +0 -42
  83. package/lib/module/otel/CrashBufferSpanProcessor.js.map +0 -1
  84. package/lib/module/otel/helpers.js +0 -218
  85. package/lib/module/otel/helpers.js.map +0 -1
  86. package/lib/module/otel/index.js +0 -202
  87. package/lib/module/otel/index.js.map +0 -1
  88. package/lib/module/otel/instrumentations/index.js +0 -122
  89. package/lib/module/otel/instrumentations/index.js.map +0 -1
  90. package/lib/module/package.json +0 -1
  91. package/lib/module/patch/configs.js +0 -18
  92. package/lib/module/patch/configs.js.map +0 -1
  93. package/lib/module/patch/fetch.js +0 -224
  94. package/lib/module/patch/fetch.js.map +0 -1
  95. package/lib/module/patch/index.js +0 -6
  96. package/lib/module/patch/index.js.map +0 -1
  97. package/lib/module/patch/xhr.js +0 -100
  98. package/lib/module/patch/xhr.js.map +0 -1
  99. package/lib/module/recorder/gestureRecorder.js +0 -641
  100. package/lib/module/recorder/gestureRecorder.js.map +0 -1
  101. package/lib/module/recorder/index.js +0 -176
  102. package/lib/module/recorder/index.js.map +0 -1
  103. package/lib/module/recorder/navigationRecorder.js +0 -238
  104. package/lib/module/recorder/navigationRecorder.js.map +0 -1
  105. package/lib/module/recorder/screenRecorder.js +0 -527
  106. package/lib/module/recorder/screenRecorder.js.map +0 -1
  107. package/lib/module/services/api.service.js +0 -166
  108. package/lib/module/services/api.service.js.map +0 -1
  109. package/lib/module/services/crashBuffer.service.js +0 -280
  110. package/lib/module/services/crashBuffer.service.js.map +0 -1
  111. package/lib/module/services/network.service.js +0 -178
  112. package/lib/module/services/network.service.js.map +0 -1
  113. package/lib/module/services/screenRecordingService.js +0 -107
  114. package/lib/module/services/screenRecordingService.js.map +0 -1
  115. package/lib/module/services/socket.service.js +0 -186
  116. package/lib/module/services/socket.service.js.map +0 -1
  117. package/lib/module/services/storage.service.js +0 -178
  118. package/lib/module/services/storage.service.js.map +0 -1
  119. package/lib/module/session-recorder.js +0 -750
  120. package/lib/module/session-recorder.js.map +0 -1
  121. package/lib/module/types/configs.js +0 -4
  122. package/lib/module/types/configs.js.map +0 -1
  123. package/lib/module/types/expo-constants.d.js +0 -2
  124. package/lib/module/types/expo-constants.d.js.map +0 -1
  125. package/lib/module/types/index.js +0 -10
  126. package/lib/module/types/index.js.map +0 -1
  127. package/lib/module/types/session-recorder.js +0 -68
  128. package/lib/module/types/session-recorder.js.map +0 -1
  129. package/lib/module/utils/app-metadata.js +0 -28
  130. package/lib/module/utils/app-metadata.js.map +0 -1
  131. package/lib/module/utils/constants.optional.expo.js +0 -6
  132. package/lib/module/utils/constants.optional.expo.js.map +0 -1
  133. package/lib/module/utils/constants.optional.js +0 -8
  134. package/lib/module/utils/constants.optional.js.map +0 -1
  135. package/lib/module/utils/index.js +0 -11
  136. package/lib/module/utils/index.js.map +0 -1
  137. package/lib/module/utils/logger.js +0 -185
  138. package/lib/module/utils/logger.js.map +0 -1
  139. package/lib/module/utils/platform.js +0 -340
  140. package/lib/module/utils/platform.js.map +0 -1
  141. package/lib/module/utils/request-utils.js +0 -58
  142. package/lib/module/utils/request-utils.js.map +0 -1
  143. package/lib/module/utils/rrweb-events.js +0 -276
  144. package/lib/module/utils/rrweb-events.js.map +0 -1
  145. package/lib/module/utils/session.js +0 -21
  146. package/lib/module/utils/session.js.map +0 -1
  147. package/lib/module/utils/shallowEqual.js +0 -17
  148. package/lib/module/utils/shallowEqual.js.map +0 -1
  149. package/lib/module/utils/time.js +0 -17
  150. package/lib/module/utils/time.js.map +0 -1
  151. package/lib/module/utils/type-utils.js +0 -69
  152. package/lib/module/utils/type-utils.js.map +0 -1
  153. package/lib/module/version.js +0 -4
  154. package/lib/module/version.js.map +0 -1
  155. package/lib/typescript/package.json +0 -1
  156. package/lib/typescript/src/NativeSessionRecorderModule.d.ts +0 -25
  157. package/lib/typescript/src/NativeSessionRecorderModule.d.ts.map +0 -1
  158. package/lib/typescript/src/NativeSessionRecorderModuleSpec.d.ts +0 -25
  159. package/lib/typescript/src/NativeSessionRecorderModuleSpec.d.ts.map +0 -1
  160. package/lib/typescript/src/NativeSessionRecorderNative.d.ts +0 -25
  161. package/lib/typescript/src/NativeSessionRecorderNative.d.ts.map +0 -1
  162. package/lib/typescript/src/components/ErrorBoundary.d.ts +0 -16
  163. package/lib/typescript/src/components/ErrorBoundary.d.ts.map +0 -1
  164. package/lib/typescript/src/components/ScreenRecorderView/ScreenRecorderView.d.ts +0 -6
  165. package/lib/typescript/src/components/ScreenRecorderView/ScreenRecorderView.d.ts.map +0 -1
  166. package/lib/typescript/src/components/ScreenRecorderView/index.d.ts +0 -2
  167. package/lib/typescript/src/components/ScreenRecorderView/index.d.ts.map +0 -1
  168. package/lib/typescript/src/components/SessionRecorderWidget/ErrorBanner.d.ts +0 -8
  169. package/lib/typescript/src/components/SessionRecorderWidget/ErrorBanner.d.ts.map +0 -1
  170. package/lib/typescript/src/components/SessionRecorderWidget/FinalPopover.d.ts +0 -13
  171. package/lib/typescript/src/components/SessionRecorderWidget/FinalPopover.d.ts.map +0 -1
  172. package/lib/typescript/src/components/SessionRecorderWidget/FloatingButton.d.ts +0 -9
  173. package/lib/typescript/src/components/SessionRecorderWidget/FloatingButton.d.ts.map +0 -1
  174. package/lib/typescript/src/components/SessionRecorderWidget/InitialPopover.d.ts +0 -17
  175. package/lib/typescript/src/components/SessionRecorderWidget/InitialPopover.d.ts.map +0 -1
  176. package/lib/typescript/src/components/SessionRecorderWidget/ModalContainer.d.ts +0 -9
  177. package/lib/typescript/src/components/SessionRecorderWidget/ModalContainer.d.ts.map +0 -1
  178. package/lib/typescript/src/components/SessionRecorderWidget/ModalHeader.d.ts +0 -7
  179. package/lib/typescript/src/components/SessionRecorderWidget/ModalHeader.d.ts.map +0 -1
  180. package/lib/typescript/src/components/SessionRecorderWidget/SessionRecorderWidget.d.ts +0 -6
  181. package/lib/typescript/src/components/SessionRecorderWidget/SessionRecorderWidget.d.ts.map +0 -1
  182. package/lib/typescript/src/components/SessionRecorderWidget/icons.d.ts +0 -12
  183. package/lib/typescript/src/components/SessionRecorderWidget/icons.d.ts.map +0 -1
  184. package/lib/typescript/src/components/SessionRecorderWidget/index.d.ts +0 -3
  185. package/lib/typescript/src/components/SessionRecorderWidget/index.d.ts.map +0 -1
  186. package/lib/typescript/src/components/SessionRecorderWidget/styles.d.ts +0 -166
  187. package/lib/typescript/src/components/SessionRecorderWidget/styles.d.ts.map +0 -1
  188. package/lib/typescript/src/components/index.d.ts +0 -4
  189. package/lib/typescript/src/components/index.d.ts.map +0 -1
  190. package/lib/typescript/src/config/constants.d.ts +0 -22
  191. package/lib/typescript/src/config/constants.d.ts.map +0 -1
  192. package/lib/typescript/src/config/defaults.d.ts +0 -5
  193. package/lib/typescript/src/config/defaults.d.ts.map +0 -1
  194. package/lib/typescript/src/config/index.d.ts +0 -6
  195. package/lib/typescript/src/config/index.d.ts.map +0 -1
  196. package/lib/typescript/src/config/masking.d.ts +0 -3
  197. package/lib/typescript/src/config/masking.d.ts.map +0 -1
  198. package/lib/typescript/src/config/session-recorder.d.ts +0 -3
  199. package/lib/typescript/src/config/session-recorder.d.ts.map +0 -1
  200. package/lib/typescript/src/config/validators.d.ts +0 -11
  201. package/lib/typescript/src/config/validators.d.ts.map +0 -1
  202. package/lib/typescript/src/config/widget.d.ts +0 -10
  203. package/lib/typescript/src/config/widget.d.ts.map +0 -1
  204. package/lib/typescript/src/context/SessionRecorderContext.d.ts +0 -22
  205. package/lib/typescript/src/context/SessionRecorderContext.d.ts.map +0 -1
  206. package/lib/typescript/src/context/SessionRecorderStore.d.ts +0 -13
  207. package/lib/typescript/src/context/SessionRecorderStore.d.ts.map +0 -1
  208. package/lib/typescript/src/context/createStore.d.ts +0 -9
  209. package/lib/typescript/src/context/createStore.d.ts.map +0 -1
  210. package/lib/typescript/src/context/useSessionRecorderStore.d.ts +0 -29
  211. package/lib/typescript/src/context/useSessionRecorderStore.d.ts.map +0 -1
  212. package/lib/typescript/src/context/useStoreSelector.d.ts +0 -5
  213. package/lib/typescript/src/context/useStoreSelector.d.ts.map +0 -1
  214. package/lib/typescript/src/index.d.ts +0 -9
  215. package/lib/typescript/src/index.d.ts.map +0 -1
  216. package/lib/typescript/src/native/SessionRecorderNative.d.ts +0 -29
  217. package/lib/typescript/src/native/SessionRecorderNative.d.ts.map +0 -1
  218. package/lib/typescript/src/native/index.d.ts +0 -2
  219. package/lib/typescript/src/native/index.d.ts.map +0 -1
  220. package/lib/typescript/src/otel/CrashBufferSpanProcessor.d.ts +0 -17
  221. package/lib/typescript/src/otel/CrashBufferSpanProcessor.d.ts.map +0 -1
  222. package/lib/typescript/src/otel/helpers.d.ts +0 -46
  223. package/lib/typescript/src/otel/helpers.d.ts.map +0 -1
  224. package/lib/typescript/src/otel/index.d.ts +0 -33
  225. package/lib/typescript/src/otel/index.d.ts.map +0 -1
  226. package/lib/typescript/src/otel/instrumentations/index.d.ts +0 -5
  227. package/lib/typescript/src/otel/instrumentations/index.d.ts.map +0 -1
  228. package/lib/typescript/src/patch/configs.d.ts +0 -9
  229. package/lib/typescript/src/patch/configs.d.ts.map +0 -1
  230. package/lib/typescript/src/patch/fetch.d.ts +0 -2
  231. package/lib/typescript/src/patch/fetch.d.ts.map +0 -1
  232. package/lib/typescript/src/patch/index.d.ts +0 -4
  233. package/lib/typescript/src/patch/index.d.ts.map +0 -1
  234. package/lib/typescript/src/patch/xhr.d.ts +0 -2
  235. package/lib/typescript/src/patch/xhr.d.ts.map +0 -1
  236. package/lib/typescript/src/recorder/gestureRecorder.d.ts +0 -66
  237. package/lib/typescript/src/recorder/gestureRecorder.d.ts.map +0 -1
  238. package/lib/typescript/src/recorder/index.d.ts +0 -79
  239. package/lib/typescript/src/recorder/index.d.ts.map +0 -1
  240. package/lib/typescript/src/recorder/navigationRecorder.d.ts +0 -29
  241. package/lib/typescript/src/recorder/navigationRecorder.d.ts.map +0 -1
  242. package/lib/typescript/src/recorder/screenRecorder.d.ts +0 -127
  243. package/lib/typescript/src/recorder/screenRecorder.d.ts.map +0 -1
  244. package/lib/typescript/src/services/api.service.d.ts +0 -116
  245. package/lib/typescript/src/services/api.service.d.ts.map +0 -1
  246. package/lib/typescript/src/services/crashBuffer.service.d.ts +0 -27
  247. package/lib/typescript/src/services/crashBuffer.service.d.ts.map +0 -1
  248. package/lib/typescript/src/services/network.service.d.ts +0 -47
  249. package/lib/typescript/src/services/network.service.d.ts.map +0 -1
  250. package/lib/typescript/src/services/screenRecordingService.d.ts +0 -48
  251. package/lib/typescript/src/services/screenRecordingService.d.ts.map +0 -1
  252. package/lib/typescript/src/services/socket.service.d.ts +0 -44
  253. package/lib/typescript/src/services/socket.service.d.ts.map +0 -1
  254. package/lib/typescript/src/services/storage.service.d.ts +0 -47
  255. package/lib/typescript/src/services/storage.service.d.ts.map +0 -1
  256. package/lib/typescript/src/session-recorder.d.ts +0 -191
  257. package/lib/typescript/src/session-recorder.d.ts.map +0 -1
  258. package/lib/typescript/src/types/configs.d.ts +0 -92
  259. package/lib/typescript/src/types/configs.d.ts.map +0 -1
  260. package/lib/typescript/src/types/index.d.ts +0 -21
  261. package/lib/typescript/src/types/index.d.ts.map +0 -1
  262. package/lib/typescript/src/types/session-recorder.d.ts +0 -367
  263. package/lib/typescript/src/types/session-recorder.d.ts.map +0 -1
  264. package/lib/typescript/src/utils/app-metadata.d.ts +0 -17
  265. package/lib/typescript/src/utils/app-metadata.d.ts.map +0 -1
  266. package/lib/typescript/src/utils/constants.optional.d.ts +0 -22
  267. package/lib/typescript/src/utils/constants.optional.d.ts.map +0 -1
  268. package/lib/typescript/src/utils/constants.optional.expo.d.ts +0 -4
  269. package/lib/typescript/src/utils/constants.optional.expo.d.ts.map +0 -1
  270. package/lib/typescript/src/utils/index.d.ts +0 -8
  271. package/lib/typescript/src/utils/index.d.ts.map +0 -1
  272. package/lib/typescript/src/utils/logger.d.ts +0 -108
  273. package/lib/typescript/src/utils/logger.d.ts.map +0 -1
  274. package/lib/typescript/src/utils/platform.d.ts +0 -58
  275. package/lib/typescript/src/utils/platform.d.ts.map +0 -1
  276. package/lib/typescript/src/utils/request-utils.d.ts +0 -22
  277. package/lib/typescript/src/utils/request-utils.d.ts.map +0 -1
  278. package/lib/typescript/src/utils/rrweb-events.d.ts +0 -67
  279. package/lib/typescript/src/utils/rrweb-events.d.ts.map +0 -1
  280. package/lib/typescript/src/utils/session.d.ts +0 -7
  281. package/lib/typescript/src/utils/session.d.ts.map +0 -1
  282. package/lib/typescript/src/utils/shallowEqual.d.ts +0 -2
  283. package/lib/typescript/src/utils/shallowEqual.d.ts.map +0 -1
  284. package/lib/typescript/src/utils/time.d.ts +0 -5
  285. package/lib/typescript/src/utils/time.d.ts.map +0 -1
  286. package/lib/typescript/src/utils/type-utils.d.ts +0 -17
  287. package/lib/typescript/src/utils/type-utils.d.ts.map +0 -1
  288. package/lib/typescript/src/version.d.ts +0 -2
  289. package/lib/typescript/src/version.d.ts.map +0 -1
@@ -1,12 +0,0 @@
1
- "use strict";
2
-
3
- import { createStore } from "./createStore.js";
4
- export const sessionRecorderStore = createStore({
5
- isInitialized: false,
6
- sessionType: null,
7
- sessionState: null,
8
- isWidgetModalVisible: false,
9
- isOnline: true,
10
- error: null
11
- });
12
- //# sourceMappingURL=SessionRecorderStore.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["createStore","sessionRecorderStore","isInitialized","sessionType","sessionState","isWidgetModalVisible","isOnline","error"],"sourceRoot":"../../../src","sources":["context/SessionRecorderStore.ts"],"mappings":";;AAAA,SAASA,WAAW,QAAoB,kBAAe;AAavD,OAAO,MAAMC,oBAAiD,GAC5DD,WAAW,CAAuB;EAChCE,aAAa,EAAE,KAAK;EACpBC,WAAW,EAAE,IAAI;EACjBC,YAAY,EAAE,IAAI;EAClBC,oBAAoB,EAAE,KAAK;EAC3BC,QAAQ,EAAE,IAAI;EACdC,KAAK,EAAE;AACT,CAAC,CAAC","ignoreList":[]}
@@ -1,27 +0,0 @@
1
- "use strict";
2
-
3
- export function createStore(initialState) {
4
- let state = initialState;
5
- const listeners = new Set();
6
- const getState = () => state;
7
- const setState = partial => {
8
- const prevState = state;
9
- const nextState = typeof partial === 'function' ? partial(prevState) : {
10
- ...prevState,
11
- ...partial
12
- };
13
- if (Object.is(nextState, prevState)) return;
14
- state = nextState;
15
- listeners.forEach(l => l(state, prevState));
16
- };
17
- const subscribe = listener => {
18
- listeners.add(listener);
19
- return () => listeners.delete(listener);
20
- };
21
- return {
22
- getState,
23
- setState,
24
- subscribe
25
- };
26
- }
27
- //# sourceMappingURL=createStore.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["createStore","initialState","state","listeners","Set","getState","setState","partial","prevState","nextState","Object","is","forEach","l","subscribe","listener","add","delete"],"sourceRoot":"../../../src","sources":["context/createStore.ts"],"mappings":";;AAQA,OAAO,SAASA,WAAWA,CAAmBC,YAAe,EAAY;EACvE,IAAIC,KAAQ,GAAGD,YAAY;EAC3B,MAAME,SAAS,GAAG,IAAIC,GAAG,CAAc,CAAC;EAExC,MAAMC,QAAQ,GAAGA,CAAA,KAAMH,KAAK;EAE5B,MAAMI,QAA8B,GAAIC,OAAO,IAAK;IAClD,MAAMC,SAAS,GAAGN,KAAK;IACvB,MAAMO,SAAS,GACb,OAAOF,OAAO,KAAK,UAAU,GACxBA,OAAO,CAAoBC,SAAS,CAAC,GACrC;MAAE,GAAGA,SAAS;MAAE,GAAGD;IAAQ,CAAO;IACzC,IAAIG,MAAM,CAACC,EAAE,CAACF,SAAS,EAAED,SAAS,CAAC,EAAE;IACrCN,KAAK,GAAGO,SAAS;IACjBN,SAAS,CAACS,OAAO,CAAEC,CAAC,IAAKA,CAAC,CAACX,KAAK,EAAEM,SAAS,CAAC,CAAC;EAC/C,CAAC;EAED,MAAMM,SAAgC,GAAIC,QAAQ,IAAK;IACrDZ,SAAS,CAACa,GAAG,CAACD,QAAQ,CAAC;IACvB,OAAO,MAAMZ,SAAS,CAACc,MAAM,CAACF,QAAQ,CAAC;EACzC,CAAC;EAED,OAAO;IAAEV,QAAQ;IAAEC,QAAQ;IAAEQ;EAAU,CAAC;AAC1C","ignoreList":[]}
@@ -1,45 +0,0 @@
1
- "use strict";
2
-
3
- import { useStoreSelector } from "./useStoreSelector.js";
4
- import { sessionRecorderStore } from "./SessionRecorderStore.js";
5
-
6
- /**
7
- * Select a derived slice from the shared Session Recorder store.
8
- * Works in both React (web) and React Native since the store shape is identical.
9
- *
10
- * @param selector - Function that maps the full store state to the slice you need
11
- * @param equalityFn - Optional comparator to avoid unnecessary re-renders
12
- * @returns The selected slice of state
13
- */
14
- export function useSessionRecorderStore(selector, equalityFn) {
15
- return useStoreSelector(sessionRecorderStore, selector, equalityFn);
16
- }
17
-
18
- /**
19
- * Read the current session recording state (started, paused, stopped).
20
- */
21
- export function useSessionRecordingState() {
22
- return useSessionRecorderStore(s => s.sessionState);
23
- }
24
-
25
- /**
26
- * Read the current session type (MANUAL/CONTINUOUS).
27
- */
28
- export function useSessionType() {
29
- return useSessionRecorderStore(s => s.sessionType);
30
- }
31
-
32
- /**
33
- * Check whether the Session Recorder has been initialized.
34
- */
35
- export function useIsInitialized() {
36
- return useSessionRecorderStore(s => s.isInitialized);
37
- }
38
-
39
- /**
40
- * Read the current widget modal visibility.
41
- */
42
- export function useWidgetModalVisible() {
43
- return useSessionRecorderStore(s => s.isWidgetModalVisible);
44
- }
45
- //# sourceMappingURL=useSessionRecorderStore.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["useStoreSelector","sessionRecorderStore","useSessionRecorderStore","selector","equalityFn","useSessionRecordingState","s","sessionState","useSessionType","sessionType","useIsInitialized","isInitialized","useWidgetModalVisible","isWidgetModalVisible"],"sourceRoot":"../../../src","sources":["context/useSessionRecorderStore.ts"],"mappings":";;AAEA,SAASA,gBAAgB,QAAQ,uBAAoB;AACrD,SAEEC,oBAAoB,QACf,2BAAwB;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,uBAAuBA,CACrCC,QAA6C,EAC7CC,UAA8C,EACtC;EACR,OAAOJ,gBAAgB,CACrBC,oBAAoB,EACpBE,QAAQ,EACRC,UACF,CAAC;AACH;;AAEA;AACA;AACA;AACA,OAAO,SAASC,wBAAwBA,CAAA,EAAG;EACzC,OAAOH,uBAAuB,CAAuBI,CAAC,IAAKA,CAAC,CAACC,YAAY,CAAC;AAC5E;;AAEA;AACA;AACA;AACA,OAAO,SAASC,cAAcA,CAAA,EAAG;EAC/B,OAAON,uBAAuB,CAAsBI,CAAC,IAAKA,CAAC,CAACG,WAAW,CAAC;AAC1E;;AAEA;AACA;AACA;AACA,OAAO,SAASC,gBAAgBA,CAAA,EAAG;EACjC,OAAOR,uBAAuB,CAAWI,CAAC,IAAKA,CAAC,CAACK,aAAa,CAAC;AACjE;;AAEA;AACA;AACA;AACA,OAAO,SAASC,qBAAqBA,CAAA,EAAG;EACtC,OAAOV,uBAAuB,CAAWI,CAAC,IAAKA,CAAC,CAACO,oBAAoB,CAAC;AACxE","ignoreList":[]}
@@ -1,27 +0,0 @@
1
- "use strict";
2
-
3
- import { useEffect, useRef, useState } from 'react';
4
- import { shallowEqual } from "../utils/shallowEqual.js";
5
- export function useStoreSelector(store, selector, equalityFn = Object.is) {
6
- const latestSelectorRef = useRef(selector);
7
- const latestEqualityRef = useRef(equalityFn);
8
- latestSelectorRef.current = selector;
9
- latestEqualityRef.current = equalityFn;
10
- const [slice, setSlice] = useState(() => latestSelectorRef.current(store.getState()));
11
- useEffect(() => {
12
- function handleChange(nextState, prevState) {
13
- const nextSlice = latestSelectorRef.current(nextState);
14
- const prevSlice = latestSelectorRef.current(prevState);
15
- if (!latestEqualityRef.current(nextSlice, prevSlice)) {
16
- setSlice(nextSlice);
17
- }
18
- }
19
- const unsubscribe = store.subscribe(handleChange);
20
- // Sync once in case changed between render and effect
21
- handleChange(store.getState(), store.getState());
22
- return unsubscribe;
23
- }, [store]);
24
- return slice;
25
- }
26
- export const shallow = shallowEqual;
27
- //# sourceMappingURL=useStoreSelector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["useEffect","useRef","useState","shallowEqual","useStoreSelector","store","selector","equalityFn","Object","is","latestSelectorRef","latestEqualityRef","current","slice","setSlice","getState","handleChange","nextState","prevState","nextSlice","prevSlice","unsubscribe","subscribe","shallow"],"sourceRoot":"../../../src","sources":["context/useStoreSelector.ts"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAEnD,SAASC,YAAY,QAAQ,0BAAuB;AAEpD,OAAO,SAASC,gBAAgBA,CAC9BC,KAAoB,EACpBC,QAAmC,EACnCC,UAA6C,GAAGC,MAAM,CAACC,EAAE,EACjD;EACR,MAAMC,iBAAiB,GAAGT,MAAM,CAACK,QAAQ,CAAC;EAC1C,MAAMK,iBAAiB,GAAGV,MAAM,CAACM,UAAU,CAAC;EAC5CG,iBAAiB,CAACE,OAAO,GAAGN,QAAQ;EACpCK,iBAAiB,CAACC,OAAO,GAAGL,UAAU;EAEtC,MAAM,CAACM,KAAK,EAAEC,QAAQ,CAAC,GAAGZ,QAAQ,CAAS,MACzCQ,iBAAiB,CAACE,OAAO,CAACP,KAAK,CAACU,QAAQ,CAAC,CAAC,CAC5C,CAAC;EAEDf,SAAS,CAAC,MAAM;IACd,SAASgB,YAAYA,CAACC,SAAiB,EAAEC,SAAiB,EAAE;MAC1D,MAAMC,SAAS,GAAGT,iBAAiB,CAACE,OAAO,CAACK,SAAS,CAAC;MACtD,MAAMG,SAAS,GAAGV,iBAAiB,CAACE,OAAO,CAACM,SAAS,CAAC;MACtD,IAAI,CAACP,iBAAiB,CAACC,OAAO,CAACO,SAAS,EAAEC,SAAS,CAAC,EAAE;QACpDN,QAAQ,CAACK,SAAS,CAAC;MACrB;IACF;IACA,MAAME,WAAW,GAAGhB,KAAK,CAACiB,SAAS,CAACN,YAAY,CAAC;IACjD;IACAA,YAAY,CAACX,KAAK,CAACU,QAAQ,CAAC,CAAC,EAAEV,KAAK,CAACU,QAAQ,CAAC,CAAC,CAAC;IAChD,OAAOM,WAAW;EACpB,CAAC,EAAE,CAAChB,KAAK,CAAC,CAAC;EAEX,OAAOQ,KAAK;AACd;AAEA,OAAO,MAAMU,OAAO,GAAGpB,YAAY","ignoreList":[]}
@@ -1,14 +0,0 @@
1
- "use strict";
2
-
3
- import "./patch/index.js";
4
- import SessionRecorder from "./session-recorder.js";
5
- export * from '@multiplayer-app/session-recorder-common';
6
- export * from "./context/SessionRecorderContext.js";
7
- export * from "./context/useSessionRecorderStore.js";
8
- export { ErrorBoundary } from "./components/index.js";
9
-
10
- // Export the class for type checking
11
- export { SessionRecorder };
12
- // Export the instance as default
13
- export default SessionRecorder;
14
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["SessionRecorder","ErrorBoundary"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,OAAO,kBAAS;AAChB,OAAOA,eAAe,MAAM,uBAAoB;AAChD,cAAc,0CAA0C;AACxD,cAAc,qCAAkC;AAChD,cAAc,sCAAmC;AACjD,SAASC,aAAa,QAAQ,uBAAc;;AAG5C;AACA,SAASD,eAAe;AACxB;AACA,eAAeA,eAAe","ignoreList":[]}
@@ -1,76 +0,0 @@
1
- "use strict";
2
-
3
- import { Platform, NativeEventEmitter } from 'react-native';
4
- import SessionRecorderNative from "../NativeSessionRecorderModule.js";
5
-
6
- // Check if we're on web platform
7
- const isWeb = Platform.OS === 'web';
8
-
9
- // Get the Turbo Module
10
- let eventEmitter = new NativeEventEmitter(SessionRecorderNative);
11
-
12
- // Validate that the native module is available
13
- if (!SessionRecorderNative && !isWeb) {
14
- console.warn('SessionRecorderNative Turbo Module is not available. Auto-linking may not have completed yet.');
15
- } else if (isWeb) {
16
- console.info('SessionRecorderNative: Running on web platform, native module disabled');
17
- }
18
-
19
- // Create a safe wrapper that handles web platform
20
- const SafeSessionRecorderNative = {
21
- async captureAndMask() {
22
- if (isWeb || !SessionRecorderNative) {
23
- throw new Error('SessionRecorderNative is not available on web platform');
24
- }
25
- return SessionRecorderNative.captureAndMask();
26
- },
27
- async captureAndMaskWithOptions(options) {
28
- if (isWeb || !SessionRecorderNative) {
29
- throw new Error('SessionRecorderNative is not available on web platform');
30
- }
31
- return SessionRecorderNative.captureAndMaskWithOptions(options);
32
- },
33
- async startGestureRecording() {
34
- if (isWeb || !SessionRecorderNative) {
35
- throw new Error('SessionRecorderNative is not available on web platform');
36
- }
37
- return SessionRecorderNative.startGestureRecording();
38
- },
39
- async stopGestureRecording() {
40
- if (isWeb || !SessionRecorderNative) {
41
- throw new Error('SessionRecorderNative is not available on web platform');
42
- }
43
- return SessionRecorderNative.stopGestureRecording();
44
- },
45
- async isGestureRecordingActive() {
46
- if (isWeb || !SessionRecorderNative) {
47
- throw new Error('SessionRecorderNative is not available on web platform');
48
- }
49
- return SessionRecorderNative.isGestureRecordingActive();
50
- },
51
- recordGesture(gestureType, x, y, target, metadata) {
52
- if (isWeb || !SessionRecorderNative) {
53
- throw new Error('SessionRecorderNative is not available on web platform');
54
- }
55
- SessionRecorderNative.recordGesture(gestureType, x, y, target, metadata);
56
- },
57
- addListener(_eventName) {
58
- // Required for RN event emitter contracts
59
- },
60
- removeListeners(_count) {
61
- // Required for RN event emitter contracts
62
- }
63
- };
64
- // Helper function to set gesture callback using event emitter pattern
65
- export function setGestureCallback(callback) {
66
- if (isWeb || !SessionRecorderNative) {
67
- throw new Error('SessionRecorderNative is not available on web platform');
68
- }
69
- eventEmitter?.removeAllListeners('onGestureDetected');
70
- eventEmitter?.addListener('onGestureDetected', callback);
71
- }
72
- export default SafeSessionRecorderNative;
73
-
74
- // Export event emitter for gesture events to maintain previous API
75
- export const gestureEventEmitter = eventEmitter;
76
- //# sourceMappingURL=SessionRecorderNative.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["Platform","NativeEventEmitter","SessionRecorderNative","isWeb","OS","eventEmitter","console","warn","info","SafeSessionRecorderNative","captureAndMask","Error","captureAndMaskWithOptions","options","startGestureRecording","stopGestureRecording","isGestureRecordingActive","recordGesture","gestureType","x","y","target","metadata","addListener","_eventName","removeListeners","_count","setGestureCallback","callback","removeAllListeners","gestureEventEmitter"],"sourceRoot":"../../../src","sources":["native/SessionRecorderNative.ts"],"mappings":";;AAAA,SAASA,QAAQ,EAAEC,kBAAkB,QAAQ,cAAc;AAC3D,OAAOC,qBAAqB,MAA0C,mCAAgC;;AAGtG;AACA,MAAMC,KAAK,GAAGH,QAAQ,CAACI,EAAE,KAAK,KAAK;;AAEnC;AACA,IAAIC,YAAY,GAAG,IAAIJ,kBAAkB,CAACC,qBAA4B,CAAC;;AAGvE;AACA,IAAI,CAACA,qBAAqB,IAAI,CAACC,KAAK,EAAE;EACpCG,OAAO,CAACC,IAAI,CACV,+FACF,CAAC;AACH,CAAC,MAAM,IAAIJ,KAAK,EAAE;EAChBG,OAAO,CAACE,IAAI,CACV,wEACF,CAAC;AACH;;AAEA;AACA,MAAMC,yBAA+B,GAAG;EACtC,MAAMC,cAAcA,CAAA,EAAoB;IACtC,IAAIP,KAAK,IAAI,CAACD,qBAAqB,EAAE;MACnC,MAAM,IAAIS,KAAK,CAAC,wDAAwD,CAAC;IAC3E;IACA,OAAOT,qBAAqB,CAACQ,cAAc,CAAC,CAAC;EAC/C,CAAC;EAED,MAAME,yBAAyBA,CAACC,OAAuB,EAAmB;IACxE,IAAIV,KAAK,IAAI,CAACD,qBAAqB,EAAE;MACnC,MAAM,IAAIS,KAAK,CAAC,wDAAwD,CAAC;IAC3E;IACA,OAAOT,qBAAqB,CAACU,yBAAyB,CAACC,OAAO,CAAC;EACjE,CAAC;EAED,MAAMC,qBAAqBA,CAAA,EAAkB;IAC3C,IAAIX,KAAK,IAAI,CAACD,qBAAqB,EAAE;MACnC,MAAM,IAAIS,KAAK,CAAC,wDAAwD,CAAC;IAC3E;IACA,OAAOT,qBAAqB,CAACY,qBAAqB,CAAC,CAAC;EACtD,CAAC;EAED,MAAMC,oBAAoBA,CAAA,EAAkB;IAC1C,IAAIZ,KAAK,IAAI,CAACD,qBAAqB,EAAE;MACnC,MAAM,IAAIS,KAAK,CAAC,wDAAwD,CAAC;IAC3E;IACA,OAAOT,qBAAqB,CAACa,oBAAoB,CAAC,CAAC;EACrD,CAAC;EAED,MAAMC,wBAAwBA,CAAA,EAAqB;IACjD,IAAIb,KAAK,IAAI,CAACD,qBAAqB,EAAE;MACnC,MAAM,IAAIS,KAAK,CAAC,wDAAwD,CAAC;IAC3E;IACA,OAAOT,qBAAqB,CAACc,wBAAwB,CAAC,CAAC;EACzD,CAAC;EAEDC,aAAaA,CAACC,WAAmB,EAAEC,CAAS,EAAEC,CAAS,EAAEC,MAAe,EAAEC,QAAc,EAAQ;IAC9F,IAAInB,KAAK,IAAI,CAACD,qBAAqB,EAAE;MACnC,MAAM,IAAIS,KAAK,CAAC,wDAAwD,CAAC;IAC3E;IACAT,qBAAqB,CAACe,aAAa,CAACC,WAAW,EAAEC,CAAC,EAAEC,CAAC,EAAEC,MAAM,EAAEC,QAAQ,CAAC;EAC1E,CAAC;EAEDC,WAAWA,CAACC,UAAkB,EAAQ;IACpC;EAAA,CACD;EAEDC,eAAeA,CAACC,MAAc,EAAQ;IACpC;EAAA;AAEJ,CAAC;AA+BD;AACA,OAAO,SAASC,kBAAkBA,CAACC,QAA6C,EAAQ;EACtF,IAAIzB,KAAK,IAAI,CAACD,qBAAqB,EAAE;IACnC,MAAM,IAAIS,KAAK,CAAC,wDAAwD,CAAC;EAC3E;EACAN,YAAY,EAAEwB,kBAAkB,CAAC,mBAAmB,CAAC;EACrDxB,YAAY,EAAEkB,WAAW,CAAC,mBAAmB,EAAEK,QAAe,CAAC;AACjE;AAEA,eAAenB,yBAAyB;;AAExC;AACA,OAAO,MAAMqB,mBAAmB,GAAGzB,YAAY","ignoreList":[]}
@@ -1,4 +0,0 @@
1
- "use strict";
2
-
3
- export { default as SessionRecorderNative, gestureEventEmitter } from "./SessionRecorderNative.js";
4
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["default","SessionRecorderNative","gestureEventEmitter"],"sourceRoot":"../../../src","sources":["native/index.ts"],"mappings":";;AAAA,SACEA,OAAO,IAAIC,qBAAqB,EAChCC,mBAAmB,QAEd,4BAAyB","ignoreList":[]}
@@ -1,42 +0,0 @@
1
- "use strict";
2
-
3
- import { MULTIPLAYER_TRACE_SESSION_CACHE_PREFIX } from '@multiplayer-app/session-recorder-common';
4
- /**
5
- * Implementation of the {@link SpanProcessor} that batches spans exported by
6
- * the SDK then pushes them to the exporter pipeline.
7
- */
8
- export class CrashBufferSpanProcessor {
9
- constructor(_crashBuffer, _serializeSpan) {
10
- this._crashBuffer = _crashBuffer;
11
- this._serializeSpan = _serializeSpan;
12
- }
13
- forceFlush() {
14
- return Promise.resolve();
15
- }
16
- onStart(_span, _parentContext) {
17
- return;
18
- }
19
- onEnd(span) {
20
- const _spanContext = span.spanContext();
21
- const traceId = _spanContext.traceId;
22
-
23
- // // Never buffer/export unsampled spans.
24
- // if ((_spanContext.traceFlags & TraceFlags.SAMPLED) === 0) {
25
- // return
26
- // }
27
-
28
- if (traceId.startsWith(MULTIPLAYER_TRACE_SESSION_CACHE_PREFIX)) {
29
- if (this._crashBuffer) {
30
- this._crashBuffer.appendSpans([{
31
- ts: span.startTime[0] * 1000 + span.startTime[1] / 1000000,
32
- span: this._serializeSpan(span)
33
- }]);
34
- }
35
- return;
36
- }
37
- }
38
- shutdown() {
39
- return Promise.resolve();
40
- }
41
- }
42
- //# sourceMappingURL=CrashBufferSpanProcessor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["MULTIPLAYER_TRACE_SESSION_CACHE_PREFIX","CrashBufferSpanProcessor","constructor","_crashBuffer","_serializeSpan","forceFlush","Promise","resolve","onStart","_span","_parentContext","onEnd","span","_spanContext","spanContext","traceId","startsWith","appendSpans","ts","startTime","shutdown"],"sourceRoot":"../../../src","sources":["otel/CrashBufferSpanProcessor.ts"],"mappings":";;AAMA,SAASA,sCAAsC,QAAQ,0CAA0C;AAGjG;AACA;AACA;AACA;AACA,OAAO,MAAMC,wBAAwB,CAA0B;EAC7DC,WAAWA,CACQC,YAAqC,EACrCC,cAA2C,EAC5D;IAAA,KAFiBD,YAAqC,GAArCA,YAAqC;IAAA,KACrCC,cAA2C,GAA3CA,cAA2C;EAC3D;EAEHC,UAAUA,CAAA,EAAkB;IAC1B,OAAOC,OAAO,CAACC,OAAO,CAAC,CAAC;EAC1B;EAEAC,OAAOA,CAACC,KAAW,EAAEC,cAAuB,EAAQ;IAClD;EACF;EAEAC,KAAKA,CAACC,IAAkB,EAAQ;IAC9B,MAAMC,YAAY,GAAGD,IAAI,CAACE,WAAW,CAAC,CAAC;IAEvC,MAAMC,OAAO,GAAGF,YAAY,CAACE,OAAO;;IAEpC;IACA;IACA;IACA;;IAEA,IAAIA,OAAO,CAACC,UAAU,CAAChB,sCAAsC,CAAC,EAAE;MAC9D,IAAI,IAAI,CAACG,YAAY,EAAE;QACrB,IAAI,CAACA,YAAY,CAACc,WAAW,CAAC,CAC5B;UACEC,EAAE,EAAEN,IAAI,CAACO,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,GAAGP,IAAI,CAACO,SAAS,CAAC,CAAC,CAAC,GAAG,OAAO;UAC1DP,IAAI,EAAE,IAAI,CAACR,cAAc,CAACQ,IAAI;QAChC,CAAC,CACF,CAAC;MACJ;MACA;IACF;EACF;EAEAQ,QAAQA,CAAA,EAAkB;IACxB,OAAOd,OAAO,CAACC,OAAO,CAAC,CAAC;EAC1B;AACF","ignoreList":[]}
@@ -1,218 +0,0 @@
1
- "use strict";
2
-
3
- import { MULTIPLAYER_TRACE_DEBUG_PREFIX, MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX, ATTR_MULTIPLAYER_HTTP_REQUEST_BODY, ATTR_MULTIPLAYER_HTTP_REQUEST_HEADERS, ATTR_MULTIPLAYER_HTTP_RESPONSE_BODY, ATTR_MULTIPLAYER_HTTP_RESPONSE_HEADERS } from '@multiplayer-app/session-recorder-common';
4
- import { logger } from "../utils/index.js";
5
- /**
6
- * Checks if the trace should be processed based on trace ID prefixes
7
- */
8
- export function shouldProcessTrace(traceId) {
9
- return traceId.startsWith(MULTIPLAYER_TRACE_DEBUG_PREFIX) || traceId.startsWith(MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX);
10
- }
11
-
12
- /**
13
- * Processes request and response body based on trace type and configuration
14
- */
15
- export function processBody(payload, config, span) {
16
- const {
17
- captureBody,
18
- masking
19
- } = config;
20
- const traceId = span.spanContext().traceId;
21
- if (!captureBody) {
22
- return {};
23
- }
24
- let {
25
- requestBody,
26
- responseBody
27
- } = payload;
28
- if (requestBody !== undefined && requestBody !== null) {
29
- requestBody = JSON.parse(JSON.stringify(requestBody));
30
- }
31
- if (responseBody !== undefined && responseBody !== null) {
32
- responseBody = JSON.parse(JSON.stringify(responseBody));
33
- }
34
-
35
- // Apply masking for debug traces
36
- if (traceId.startsWith(MULTIPLAYER_TRACE_DEBUG_PREFIX) || traceId.startsWith(MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX)) {
37
- if (masking.isContentMaskingEnabled) {
38
- requestBody = requestBody && masking.maskBody?.(requestBody, span);
39
- responseBody = responseBody && masking.maskBody?.(responseBody, span);
40
- }
41
- }
42
-
43
- // Convert to string if needed
44
- if (typeof requestBody !== 'string') {
45
- requestBody = JSON.stringify(requestBody);
46
- }
47
- if (typeof responseBody !== 'string') {
48
- responseBody = JSON.stringify(responseBody);
49
- }
50
- return {
51
- requestBody: requestBody?.length ? requestBody : undefined,
52
- responseBody: responseBody?.length ? responseBody : undefined
53
- };
54
- }
55
-
56
- /**
57
- * Processes request and response headers based on configuration
58
- */
59
- export function processHeaders(payload, config, span) {
60
- const {
61
- captureHeaders,
62
- masking
63
- } = config;
64
- if (!captureHeaders) {
65
- return {};
66
- }
67
- let {
68
- requestHeaders = {},
69
- responseHeaders = {}
70
- } = payload;
71
-
72
- // Handle header filtering
73
- if (!masking.headersToInclude?.length && !masking.headersToExclude?.length) {
74
- // Add null checks to prevent JSON.parse error when headers is undefined
75
- if (requestHeaders !== undefined && requestHeaders !== null) {
76
- requestHeaders = JSON.parse(JSON.stringify(requestHeaders));
77
- }
78
- if (responseHeaders !== undefined && responseHeaders !== null) {
79
- responseHeaders = JSON.parse(JSON.stringify(responseHeaders));
80
- }
81
- } else {
82
- if (masking.headersToInclude) {
83
- const _requestHeaders = {};
84
- const _responseHeaders = {};
85
- for (const headerName of masking.headersToInclude) {
86
- if (requestHeaders[headerName]) {
87
- _requestHeaders[headerName] = requestHeaders[headerName];
88
- }
89
- if (responseHeaders[headerName]) {
90
- _responseHeaders[headerName] = responseHeaders[headerName];
91
- }
92
- }
93
- requestHeaders = _requestHeaders;
94
- responseHeaders = _responseHeaders;
95
- }
96
- if (masking.headersToExclude?.length) {
97
- for (const headerName of masking.headersToExclude) {
98
- delete requestHeaders[headerName];
99
- delete responseHeaders[headerName];
100
- }
101
- }
102
- }
103
-
104
- // Apply masking
105
- const maskedRequestHeaders = masking.maskHeaders?.(requestHeaders, span) || requestHeaders;
106
- const maskedResponseHeaders = masking.maskHeaders?.(responseHeaders, span) || responseHeaders;
107
-
108
- // Convert to string
109
- const requestHeadersStr = typeof maskedRequestHeaders === 'string' ? maskedRequestHeaders : JSON.stringify(maskedRequestHeaders);
110
- const responseHeadersStr = typeof maskedResponseHeaders === 'string' ? maskedResponseHeaders : JSON.stringify(maskedResponseHeaders);
111
- return {
112
- requestHeaders: requestHeadersStr?.length ? requestHeadersStr : undefined,
113
- responseHeaders: responseHeadersStr?.length ? responseHeadersStr : undefined
114
- };
115
- }
116
-
117
- /**
118
- * Processes HTTP payload (body and headers) and sets span attributes
119
- */
120
- export function processHttpPayload(payload, config, span) {
121
- const traceId = span.spanContext().traceId;
122
- if (!shouldProcessTrace(traceId)) {
123
- return;
124
- }
125
- const {
126
- requestBody,
127
- responseBody
128
- } = processBody(payload, config, span);
129
- const {
130
- requestHeaders,
131
- responseHeaders
132
- } = processHeaders(payload, config, span);
133
-
134
- // Set span attributes
135
- if (requestBody) {
136
- span.setAttribute(ATTR_MULTIPLAYER_HTTP_REQUEST_BODY, requestBody);
137
- }
138
- if (responseBody) {
139
- span.setAttribute(ATTR_MULTIPLAYER_HTTP_RESPONSE_BODY, responseBody);
140
- }
141
- if (requestHeaders) {
142
- span.setAttribute(ATTR_MULTIPLAYER_HTTP_REQUEST_HEADERS, requestHeaders);
143
- }
144
- if (responseHeaders) {
145
- span.setAttribute(ATTR_MULTIPLAYER_HTTP_RESPONSE_HEADERS, responseHeaders);
146
- }
147
- }
148
-
149
- /**
150
- * Converts Headers object to plain object
151
- */
152
- export function headersToObject(headers) {
153
- const result = {};
154
- if (!headers) {
155
- return result;
156
- }
157
- if (headers instanceof Headers) {
158
- headers.forEach((value, key) => {
159
- result[key] = value;
160
- });
161
- } else if (Array.isArray(headers)) {
162
- // Handle array of [key, value] pairs
163
- for (const [key, value] of headers) {
164
- if (typeof key === 'string' && typeof value === 'string') {
165
- result[key] = value;
166
- }
167
- }
168
- } else if (typeof headers === 'object' && !Array.isArray(headers)) {
169
- for (const [key, value] of Object.entries(headers)) {
170
- if (typeof key === 'string' && typeof value === 'string') {
171
- result[key] = value;
172
- }
173
- }
174
- }
175
- return result;
176
- }
177
-
178
- /**
179
- * Extracts response body as string from Response object
180
- */
181
- export async function extractResponseBody(response) {
182
- if (!response.body) {
183
- return null;
184
- }
185
- try {
186
- if (response.body instanceof ReadableStream) {
187
- // Check if response body is already consumed
188
- if (response.bodyUsed) {
189
- return null;
190
- }
191
- const responseClone = response.clone();
192
- return responseClone.text();
193
- } else {
194
- return JSON.stringify(response.body);
195
- }
196
- } catch (error) {
197
- // If cloning fails (body already consumed), return null
198
-
199
- logger.warn('MULTIPLAYER_SESSION_RECORDER', 'Failed to extract response body', error);
200
- return null;
201
- }
202
- }
203
- export const getExporterEndpoint = exporterEndpoint => {
204
- const hasPath = exporterEndpoint && (() => {
205
- try {
206
- const url = new URL(exporterEndpoint);
207
- return url.pathname !== '/' && url.pathname !== '';
208
- } catch {
209
- return false;
210
- }
211
- })();
212
- if (hasPath) {
213
- return exporterEndpoint;
214
- }
215
- const trimmedExporterEndpoint = new URL(exporterEndpoint).origin;
216
- return `${trimmedExporterEndpoint}/v1/traces`;
217
- };
218
- //# sourceMappingURL=helpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["MULTIPLAYER_TRACE_DEBUG_PREFIX","MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX","ATTR_MULTIPLAYER_HTTP_REQUEST_BODY","ATTR_MULTIPLAYER_HTTP_REQUEST_HEADERS","ATTR_MULTIPLAYER_HTTP_RESPONSE_BODY","ATTR_MULTIPLAYER_HTTP_RESPONSE_HEADERS","logger","shouldProcessTrace","traceId","startsWith","processBody","payload","config","span","captureBody","masking","spanContext","requestBody","responseBody","undefined","JSON","parse","stringify","isContentMaskingEnabled","maskBody","length","processHeaders","captureHeaders","requestHeaders","responseHeaders","headersToInclude","headersToExclude","_requestHeaders","_responseHeaders","headerName","maskedRequestHeaders","maskHeaders","maskedResponseHeaders","requestHeadersStr","responseHeadersStr","processHttpPayload","setAttribute","headersToObject","headers","result","Headers","forEach","value","key","Array","isArray","Object","entries","extractResponseBody","response","body","ReadableStream","bodyUsed","responseClone","clone","text","error","warn","getExporterEndpoint","exporterEndpoint","hasPath","url","URL","pathname","trimmedExporterEndpoint","origin"],"sourceRoot":"../../../src","sources":["otel/helpers.ts"],"mappings":"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","ignoreList":[]}