@grafana/faro-core 1.19.0 → 2.0.0-beta

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 (188) hide show
  1. package/dist/bundle/faro-core.iife.js +1 -1
  2. package/dist/bundle/types/api/apiTestHelpers.d.ts +2 -0
  3. package/dist/bundle/types/api/events/initialize.d.ts +4 -6
  4. package/dist/bundle/types/api/exceptions/initialize.d.ts +4 -6
  5. package/dist/bundle/types/api/index.d.ts +2 -3
  6. package/dist/bundle/types/api/initialize.d.ts +1 -3
  7. package/dist/bundle/types/api/logs/initialize.d.ts +4 -6
  8. package/dist/bundle/types/api/measurements/initialize.d.ts +4 -6
  9. package/dist/bundle/types/api/meta/initialize.d.ts +1 -5
  10. package/dist/bundle/types/api/types.d.ts +3 -44
  11. package/dist/bundle/types/api/userActions/const.d.ts +6 -0
  12. package/dist/bundle/types/api/userActions/index.d.ts +3 -0
  13. package/dist/bundle/types/api/userActions/initialize.d.ts +10 -0
  14. package/dist/bundle/types/api/userActions/types.d.ts +45 -0
  15. package/dist/bundle/types/api/userActions/userAction.d.ts +41 -0
  16. package/dist/bundle/types/index.d.ts +2 -2
  17. package/dist/bundle/types/semantic.d.ts +0 -14
  18. package/dist/bundle/types/testUtils/mockTransport.d.ts +1 -1
  19. package/dist/bundle/types/version.d.ts +1 -1
  20. package/dist/cjs/api/apiTestHelpers.js +5 -1
  21. package/dist/cjs/api/apiTestHelpers.js.map +1 -1
  22. package/dist/cjs/api/events/initialize.js +4 -5
  23. package/dist/cjs/api/events/initialize.js.map +1 -1
  24. package/dist/cjs/api/exceptions/initialize.js +6 -7
  25. package/dist/cjs/api/exceptions/initialize.js.map +1 -1
  26. package/dist/cjs/api/index.js +5 -8
  27. package/dist/cjs/api/index.js.map +1 -1
  28. package/dist/cjs/api/initialize.js +8 -8
  29. package/dist/cjs/api/initialize.js.map +1 -1
  30. package/dist/cjs/api/logs/initialize.js +6 -7
  31. package/dist/cjs/api/logs/initialize.js.map +1 -1
  32. package/dist/cjs/api/measurements/initialize.js +4 -5
  33. package/dist/cjs/api/measurements/initialize.js.map +1 -1
  34. package/dist/cjs/api/meta/initialize.js.map +1 -1
  35. package/dist/cjs/api/types.js.map +1 -1
  36. package/dist/cjs/api/userActions/const.js +11 -0
  37. package/dist/cjs/api/userActions/const.js.map +1 -0
  38. package/dist/cjs/api/userActions/index.js +11 -0
  39. package/dist/cjs/api/userActions/index.js.map +1 -0
  40. package/dist/cjs/api/userActions/initialize.js +57 -0
  41. package/dist/cjs/api/userActions/initialize.js.map +1 -0
  42. package/dist/cjs/api/userActions/types.js +11 -0
  43. package/dist/cjs/api/userActions/types.js.map +1 -0
  44. package/dist/cjs/api/userActions/userAction.js +165 -0
  45. package/dist/cjs/api/userActions/userAction.js.map +1 -0
  46. package/dist/cjs/index.js +5 -7
  47. package/dist/cjs/index.js.map +1 -1
  48. package/dist/cjs/semantic.js +1 -15
  49. package/dist/cjs/semantic.js.map +1 -1
  50. package/dist/cjs/version.js +1 -1
  51. package/dist/cjs/version.js.map +1 -1
  52. package/dist/esm/api/apiTestHelpers.js +4 -0
  53. package/dist/esm/api/apiTestHelpers.js.map +1 -1
  54. package/dist/esm/api/events/initialize.js +4 -5
  55. package/dist/esm/api/events/initialize.js.map +1 -1
  56. package/dist/esm/api/exceptions/initialize.js +4 -5
  57. package/dist/esm/api/exceptions/initialize.js.map +1 -1
  58. package/dist/esm/api/index.js +1 -2
  59. package/dist/esm/api/index.js.map +1 -1
  60. package/dist/esm/api/initialize.js +8 -7
  61. package/dist/esm/api/initialize.js.map +1 -1
  62. package/dist/esm/api/logs/initialize.js +4 -5
  63. package/dist/esm/api/logs/initialize.js.map +1 -1
  64. package/dist/esm/api/measurements/initialize.js +4 -5
  65. package/dist/esm/api/measurements/initialize.js.map +1 -1
  66. package/dist/esm/api/meta/initialize.js.map +1 -1
  67. package/dist/esm/api/types.js.map +1 -1
  68. package/dist/esm/api/userActions/const.js +8 -0
  69. package/dist/esm/api/userActions/const.js.map +1 -0
  70. package/dist/esm/api/userActions/index.js +4 -0
  71. package/dist/esm/api/userActions/index.js.map +1 -0
  72. package/dist/esm/api/userActions/initialize.js +50 -0
  73. package/dist/esm/api/userActions/initialize.js.map +1 -0
  74. package/dist/esm/api/userActions/types.js +10 -0
  75. package/dist/esm/api/userActions/types.js.map +1 -0
  76. package/dist/esm/api/userActions/userAction.js +132 -0
  77. package/dist/esm/api/userActions/userAction.js.map +1 -0
  78. package/dist/esm/index.js +1 -1
  79. package/dist/esm/index.js.map +1 -1
  80. package/dist/esm/semantic.js +0 -14
  81. package/dist/esm/semantic.js.map +1 -1
  82. package/dist/esm/version.js +1 -1
  83. package/dist/esm/version.js.map +1 -1
  84. package/dist/spec/core/src/api/apiTestHelpers.js +5 -1
  85. package/dist/spec/core/src/api/apiTestHelpers.js.map +1 -1
  86. package/dist/spec/core/src/api/events/initialize.js +4 -5
  87. package/dist/spec/core/src/api/events/initialize.js.map +1 -1
  88. package/dist/spec/core/src/api/events/initialize.test.js +11 -33
  89. package/dist/spec/core/src/api/events/initialize.test.js.map +1 -1
  90. package/dist/spec/core/src/api/exceptions/initialize.js +6 -7
  91. package/dist/spec/core/src/api/exceptions/initialize.js.map +1 -1
  92. package/dist/spec/core/src/api/exceptions/initialize.test.js +24 -52
  93. package/dist/spec/core/src/api/exceptions/initialize.test.js.map +1 -1
  94. package/dist/spec/core/src/api/index.js +5 -8
  95. package/dist/spec/core/src/api/index.js.map +1 -1
  96. package/dist/spec/core/src/api/initialize.js +8 -8
  97. package/dist/spec/core/src/api/initialize.js.map +1 -1
  98. package/dist/spec/core/src/api/initialize.test.js +0 -50
  99. package/dist/spec/core/src/api/initialize.test.js.map +1 -1
  100. package/dist/spec/core/src/api/logs/initialize.js +6 -7
  101. package/dist/spec/core/src/api/logs/initialize.js.map +1 -1
  102. package/dist/spec/core/src/api/logs/initialize.test.js +12 -73
  103. package/dist/spec/core/src/api/logs/initialize.test.js.map +1 -1
  104. package/dist/spec/core/src/api/measurements/initialize.js +4 -5
  105. package/dist/spec/core/src/api/measurements/initialize.js.map +1 -1
  106. package/dist/spec/core/src/api/measurements/initialize.test.js +10 -72
  107. package/dist/spec/core/src/api/measurements/initialize.test.js.map +1 -1
  108. package/dist/spec/core/src/api/meta/initialize.js.map +1 -1
  109. package/dist/spec/core/src/api/types.js.map +1 -1
  110. package/dist/spec/core/src/api/userActions/const.js +11 -0
  111. package/dist/spec/core/src/api/userActions/const.js.map +1 -0
  112. package/dist/spec/core/src/api/userActions/index.js +11 -0
  113. package/dist/spec/core/src/api/userActions/index.js.map +1 -0
  114. package/dist/spec/core/src/api/userActions/initialize.js +57 -0
  115. package/dist/spec/core/src/api/userActions/initialize.js.map +1 -0
  116. package/dist/spec/core/src/api/userActions/initialize.test.js +62 -0
  117. package/dist/spec/core/src/api/userActions/initialize.test.js.map +1 -0
  118. package/dist/spec/core/src/api/userActions/types.js +11 -0
  119. package/dist/spec/core/src/api/userActions/types.js.map +1 -0
  120. package/dist/spec/core/src/api/userActions/userAction.js +165 -0
  121. package/dist/spec/core/src/api/userActions/userAction.js.map +1 -0
  122. package/dist/spec/core/src/api/userActions/userAction.test.js +75 -0
  123. package/dist/spec/core/src/api/userActions/userAction.test.js.map +1 -0
  124. package/dist/spec/core/src/index.js +5 -7
  125. package/dist/spec/core/src/index.js.map +1 -1
  126. package/dist/spec/core/src/semantic.js +1 -15
  127. package/dist/spec/core/src/semantic.js.map +1 -1
  128. package/dist/spec/core/src/version.js +1 -1
  129. package/dist/spec/core/src/version.js.map +1 -1
  130. package/dist/types/api/apiTestHelpers.d.ts +2 -0
  131. package/dist/types/api/events/initialize.d.ts +4 -6
  132. package/dist/types/api/exceptions/initialize.d.ts +4 -6
  133. package/dist/types/api/index.d.ts +2 -3
  134. package/dist/types/api/initialize.d.ts +1 -3
  135. package/dist/types/api/logs/initialize.d.ts +4 -6
  136. package/dist/types/api/measurements/initialize.d.ts +4 -6
  137. package/dist/types/api/meta/initialize.d.ts +1 -5
  138. package/dist/types/api/types.d.ts +3 -44
  139. package/dist/types/api/userActions/const.d.ts +6 -0
  140. package/dist/types/api/userActions/index.d.ts +3 -0
  141. package/dist/types/api/userActions/initialize.d.ts +10 -0
  142. package/dist/types/api/userActions/types.d.ts +45 -0
  143. package/dist/types/api/userActions/userAction.d.ts +41 -0
  144. package/dist/types/core/src/api/apiTestHelpers.d.ts +2 -0
  145. package/dist/types/core/src/api/events/initialize.d.ts +4 -6
  146. package/dist/types/core/src/api/exceptions/initialize.d.ts +4 -6
  147. package/dist/types/core/src/api/index.d.ts +2 -3
  148. package/dist/types/core/src/api/initialize.d.ts +1 -3
  149. package/dist/types/core/src/api/logs/initialize.d.ts +4 -6
  150. package/dist/types/core/src/api/measurements/initialize.d.ts +4 -6
  151. package/dist/types/core/src/api/meta/initialize.d.ts +1 -5
  152. package/dist/types/core/src/api/types.d.ts +3 -44
  153. package/dist/types/core/src/api/userActions/const.d.ts +6 -0
  154. package/dist/types/core/src/api/userActions/index.d.ts +3 -0
  155. package/dist/types/core/src/api/userActions/initialize.d.ts +10 -0
  156. package/dist/types/core/src/api/userActions/types.d.ts +45 -0
  157. package/dist/types/core/src/api/userActions/userAction.d.ts +41 -0
  158. package/dist/types/core/src/api/userActions/userAction.test.d.ts +1 -0
  159. package/dist/types/core/src/index.d.ts +2 -2
  160. package/dist/types/core/src/semantic.d.ts +0 -14
  161. package/dist/types/core/src/testUtils/mockTransport.d.ts +1 -1
  162. package/dist/types/core/src/version.d.ts +1 -1
  163. package/dist/types/index.d.ts +2 -2
  164. package/dist/types/semantic.d.ts +0 -14
  165. package/dist/types/testUtils/mockTransport.d.ts +1 -1
  166. package/dist/types/version.d.ts +1 -1
  167. package/package.json +3 -3
  168. package/dist/bundle/types/api/const.d.ts +0 -4
  169. package/dist/bundle/types/api/userActionLifecycleHandler.d.ts +0 -13
  170. package/dist/cjs/api/const.js +0 -8
  171. package/dist/cjs/api/const.js.map +0 -1
  172. package/dist/cjs/api/userActionLifecycleHandler.js +0 -58
  173. package/dist/cjs/api/userActionLifecycleHandler.js.map +0 -1
  174. package/dist/esm/api/const.js +0 -5
  175. package/dist/esm/api/const.js.map +0 -1
  176. package/dist/esm/api/userActionLifecycleHandler.js +0 -43
  177. package/dist/esm/api/userActionLifecycleHandler.js.map +0 -1
  178. package/dist/spec/core/src/api/const.js +0 -8
  179. package/dist/spec/core/src/api/const.js.map +0 -1
  180. package/dist/spec/core/src/api/userActionLifecycleHandler.js +0 -58
  181. package/dist/spec/core/src/api/userActionLifecycleHandler.js.map +0 -1
  182. package/dist/spec/core/src/api/userActionLifecycleHandler.test.js +0 -169
  183. package/dist/spec/core/src/api/userActionLifecycleHandler.test.js.map +0 -1
  184. package/dist/types/api/const.d.ts +0 -4
  185. package/dist/types/api/userActionLifecycleHandler.d.ts +0 -13
  186. package/dist/types/core/src/api/const.d.ts +0 -4
  187. package/dist/types/core/src/api/userActionLifecycleHandler.d.ts +0 -13
  188. /package/dist/types/core/src/api/{userActionLifecycleHandler.test.d.ts → userActions/initialize.test.d.ts} +0 -0
@@ -1,5 +0,0 @@
1
- export const USER_ACTION_START = 'user-action-start';
2
- export const USER_ACTION_END = 'user-action-end';
3
- export const USER_ACTION_CANCEL = 'user-action-cancel';
4
- export const USER_ACTION_HALT = 'user-action-halt';
5
- //# sourceMappingURL=const.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"const.js","sourceRoot":"","sources":["../../../src/api/const.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG,mBAAmB,CAAC;AACrD,MAAM,CAAC,MAAM,eAAe,GAAG,iBAAiB,CAAC;AACjD,MAAM,CAAC,MAAM,kBAAkB,GAAG,oBAAoB,CAAC;AACvD,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC","sourcesContent":["export const USER_ACTION_START = 'user-action-start';\nexport const USER_ACTION_END = 'user-action-end';\nexport const USER_ACTION_CANCEL = 'user-action-cancel';\nexport const USER_ACTION_HALT = 'user-action-halt';\n"]}
@@ -1,43 +0,0 @@
1
- import { TransportItemType } from '../transports';
2
- import { USER_ACTION_CANCEL, USER_ACTION_END, USER_ACTION_HALT, USER_ACTION_START } from './const';
3
- import { ItemBuffer } from './ItemBuffer';
4
- export function createUserActionLifecycleHandler({ apiMessageBus, transports, config, }) {
5
- const actionBuffer = new ItemBuffer();
6
- const trackUserActionsExcludeItem = config.trackUserActionsExcludeItem;
7
- let message;
8
- apiMessageBus.subscribe((msg) => {
9
- if (USER_ACTION_START === msg.type || USER_ACTION_HALT === msg.type) {
10
- message = msg;
11
- return;
12
- }
13
- if (msg.type === USER_ACTION_END) {
14
- const { id, name } = msg;
15
- actionBuffer.flushBuffer((item) => {
16
- if (isExcludeFromUserAction(item, trackUserActionsExcludeItem)) {
17
- transports.execute(item);
18
- return;
19
- }
20
- const userActionItem = Object.assign(Object.assign({}, item), { payload: Object.assign(Object.assign({}, item.payload), { action: {
21
- parentId: id,
22
- name,
23
- } }) });
24
- transports.execute(userActionItem);
25
- });
26
- message = undefined;
27
- return;
28
- }
29
- if (msg.type === USER_ACTION_CANCEL) {
30
- message = undefined;
31
- actionBuffer.flushBuffer((item) => {
32
- transports.execute(item);
33
- });
34
- }
35
- });
36
- const getMessage = () => message;
37
- return { actionBuffer, getMessage };
38
- }
39
- function isExcludeFromUserAction(item, trackUserActionsExcludeItem) {
40
- return ((trackUserActionsExcludeItem === null || trackUserActionsExcludeItem === void 0 ? void 0 : trackUserActionsExcludeItem(item)) ||
41
- (item.type === TransportItemType.MEASUREMENT && item.payload.type === 'web-vitals'));
42
- }
43
- //# sourceMappingURL=userActionLifecycleHandler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"userActionLifecycleHandler.js","sourceRoot":"","sources":["../../../src/api/userActionLifecycleHandler.ts"],"names":[],"mappings":"AACA,OAAO,EAAsB,iBAAiB,EAAmB,MAAM,eAAe,CAAC;AAGvF,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AACnG,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI1C,MAAM,UAAU,gCAAgC,CAAC,EAC/C,aAAa,EACb,UAAU,EACV,MAAM,GAKP;IACC,MAAM,YAAY,GAAG,IAAI,UAAU,EAAiB,CAAC;IACrD,MAAM,2BAA2B,GAAG,MAAM,CAAC,2BAA2B,CAAC;IACvE,IAAI,OAA0C,CAAC;IAE/C,aAAa,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE;QAC9B,IAAI,iBAAiB,KAAK,GAAG,CAAC,IAAI,IAAI,gBAAgB,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;YACpE,OAAO,GAAG,GAAG,CAAC;YACd,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YACjC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;YAEzB,YAAY,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE;gBAChC,IAAI,uBAAuB,CAAC,IAAI,EAAE,2BAA2B,CAAC,EAAE,CAAC;oBAC/D,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBACzB,OAAO;gBACT,CAAC;gBAED,MAAM,cAAc,GAAG,gCAClB,IAAI,KACP,OAAO,kCACF,IAAI,CAAC,OAAO,KACf,MAAM,EAAE;4BACN,QAAQ,EAAE,EAAE;4BACZ,IAAI;yBACL,MAEa,CAAC;gBAEnB,UAAU,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YACrC,CAAC,CAAC,CAAC;YAEH,OAAO,GAAG,SAAS,CAAC;YACpB,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;YACpC,OAAO,GAAG,SAAS,CAAC;YACpB,YAAY,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE;gBAChC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,GAAmB,EAAE,CAAC,OAAO,CAAC;IACjD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC;AACtC,CAAC;AAED,SAAS,uBAAuB,CAC9B,IAA6B,EAC7B,2BAAkE;IAElE,OAAO,CACL,CAAA,2BAA2B,aAA3B,2BAA2B,uBAA3B,2BAA2B,CAAG,IAAI,CAAC;QACnC,CAAC,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,WAAW,IAAK,IAAI,CAAC,OAA4B,CAAC,IAAI,KAAK,YAAY,CAAC,CAC1G,CAAC;AACJ,CAAC","sourcesContent":["import type { Config } from '../config';\nimport { type TransportItem, TransportItemType, type Transports } from '../transports';\nimport type { Observable } from '../utils';\n\nimport { USER_ACTION_CANCEL, USER_ACTION_END, USER_ACTION_HALT, USER_ACTION_START } from './const';\nimport { ItemBuffer } from './ItemBuffer';\nimport type { MeasurementEvent } from './measurements';\nimport type { APIEvent, ApiMessageBusMessages } from './types';\n\nexport function createUserActionLifecycleHandler({\n apiMessageBus,\n transports,\n config,\n}: {\n apiMessageBus: Observable<ApiMessageBusMessages>;\n transports: Transports;\n config: Config;\n}) {\n const actionBuffer = new ItemBuffer<TransportItem>();\n const trackUserActionsExcludeItem = config.trackUserActionsExcludeItem;\n let message: ApiMessageBusMessages | undefined;\n\n apiMessageBus.subscribe((msg) => {\n if (USER_ACTION_START === msg.type || USER_ACTION_HALT === msg.type) {\n message = msg;\n return;\n }\n\n if (msg.type === USER_ACTION_END) {\n const { id, name } = msg;\n\n actionBuffer.flushBuffer((item) => {\n if (isExcludeFromUserAction(item, trackUserActionsExcludeItem)) {\n transports.execute(item);\n return;\n }\n\n const userActionItem = {\n ...item,\n payload: {\n ...item.payload,\n action: {\n parentId: id,\n name,\n },\n },\n } as TransportItem;\n\n transports.execute(userActionItem);\n });\n\n message = undefined;\n return;\n }\n\n if (msg.type === USER_ACTION_CANCEL) {\n message = undefined;\n actionBuffer.flushBuffer((item) => {\n transports.execute(item);\n });\n }\n });\n\n const getMessage = (): typeof message => message;\n return { actionBuffer, getMessage };\n}\n\nfunction isExcludeFromUserAction(\n item: TransportItem<APIEvent>,\n trackUserActionsExcludeItem: Config['trackUserActionsExcludeItem']\n) {\n return (\n trackUserActionsExcludeItem?.(item) ||\n (item.type === TransportItemType.MEASUREMENT && (item.payload as MeasurementEvent).type === 'web-vitals')\n );\n}\n"]}
@@ -1,8 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.USER_ACTION_HALT = exports.USER_ACTION_CANCEL = exports.USER_ACTION_END = exports.USER_ACTION_START = void 0;
4
- exports.USER_ACTION_START = 'user-action-start';
5
- exports.USER_ACTION_END = 'user-action-end';
6
- exports.USER_ACTION_CANCEL = 'user-action-cancel';
7
- exports.USER_ACTION_HALT = 'user-action-halt';
8
- //# sourceMappingURL=const.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"const.js","sourceRoot":"","sources":["../../../../../src/api/const.ts"],"names":[],"mappings":";;;AAAa,QAAA,iBAAiB,GAAG,mBAAmB,CAAC;AACxC,QAAA,eAAe,GAAG,iBAAiB,CAAC;AACpC,QAAA,kBAAkB,GAAG,oBAAoB,CAAC;AAC1C,QAAA,gBAAgB,GAAG,kBAAkB,CAAC","sourcesContent":["export const USER_ACTION_START = 'user-action-start';\nexport const USER_ACTION_END = 'user-action-end';\nexport const USER_ACTION_CANCEL = 'user-action-cancel';\nexport const USER_ACTION_HALT = 'user-action-halt';\n"]}
@@ -1,58 +0,0 @@
1
- "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
- Object.defineProperty(exports, "__esModule", { value: true });
14
- exports.createUserActionLifecycleHandler = createUserActionLifecycleHandler;
15
- var transports_1 = require("../transports");
16
- var const_1 = require("./const");
17
- var ItemBuffer_1 = require("./ItemBuffer");
18
- function createUserActionLifecycleHandler(_a) {
19
- var apiMessageBus = _a.apiMessageBus, transports = _a.transports, config = _a.config;
20
- var actionBuffer = new ItemBuffer_1.ItemBuffer();
21
- var trackUserActionsExcludeItem = config.trackUserActionsExcludeItem;
22
- var message;
23
- apiMessageBus.subscribe(function (msg) {
24
- if (const_1.USER_ACTION_START === msg.type || const_1.USER_ACTION_HALT === msg.type) {
25
- message = msg;
26
- return;
27
- }
28
- if (msg.type === const_1.USER_ACTION_END) {
29
- var id_1 = msg.id, name_1 = msg.name;
30
- actionBuffer.flushBuffer(function (item) {
31
- if (isExcludeFromUserAction(item, trackUserActionsExcludeItem)) {
32
- transports.execute(item);
33
- return;
34
- }
35
- var userActionItem = __assign(__assign({}, item), { payload: __assign(__assign({}, item.payload), { action: {
36
- parentId: id_1,
37
- name: name_1,
38
- } }) });
39
- transports.execute(userActionItem);
40
- });
41
- message = undefined;
42
- return;
43
- }
44
- if (msg.type === const_1.USER_ACTION_CANCEL) {
45
- message = undefined;
46
- actionBuffer.flushBuffer(function (item) {
47
- transports.execute(item);
48
- });
49
- }
50
- });
51
- var getMessage = function () { return message; };
52
- return { actionBuffer: actionBuffer, getMessage: getMessage };
53
- }
54
- function isExcludeFromUserAction(item, trackUserActionsExcludeItem) {
55
- return ((trackUserActionsExcludeItem === null || trackUserActionsExcludeItem === void 0 ? void 0 : trackUserActionsExcludeItem(item)) ||
56
- (item.type === transports_1.TransportItemType.MEASUREMENT && item.payload.type === 'web-vitals'));
57
- }
58
- //# sourceMappingURL=userActionLifecycleHandler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"userActionLifecycleHandler.js","sourceRoot":"","sources":["../../../../../src/api/userActionLifecycleHandler.ts"],"names":[],"mappings":";;;;;;;;;;;;;AASA,4EAwDC;AAhED,4CAAuF;AAGvF,iCAAmG;AACnG,2CAA0C;AAI1C,SAAgB,gCAAgC,CAAC,EAQhD;QAPC,aAAa,mBAAA,EACb,UAAU,gBAAA,EACV,MAAM,YAAA;IAMN,IAAM,YAAY,GAAG,IAAI,uBAAU,EAAiB,CAAC;IACrD,IAAM,2BAA2B,GAAG,MAAM,CAAC,2BAA2B,CAAC;IACvE,IAAI,OAA0C,CAAC;IAE/C,aAAa,CAAC,SAAS,CAAC,UAAC,GAAG;QAC1B,IAAI,yBAAiB,KAAK,GAAG,CAAC,IAAI,IAAI,wBAAgB,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;YACpE,OAAO,GAAG,GAAG,CAAC;YACd,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,KAAK,uBAAe,EAAE,CAAC;YACzB,IAAA,IAAE,GAAW,GAAG,GAAd,EAAE,MAAI,GAAK,GAAG,KAAR,CAAS;YAEzB,YAAY,CAAC,WAAW,CAAC,UAAC,IAAI;gBAC5B,IAAI,uBAAuB,CAAC,IAAI,EAAE,2BAA2B,CAAC,EAAE,CAAC;oBAC/D,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBACzB,OAAO;gBACT,CAAC;gBAED,IAAM,cAAc,GAAG,sBAClB,IAAI,KACP,OAAO,wBACF,IAAI,CAAC,OAAO,KACf,MAAM,EAAE;4BACN,QAAQ,EAAE,IAAE;4BACZ,IAAI,QAAA;yBACL,MAEa,CAAC;gBAEnB,UAAU,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YACrC,CAAC,CAAC,CAAC;YAEH,OAAO,GAAG,SAAS,CAAC;YACpB,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,KAAK,0BAAkB,EAAE,CAAC;YACpC,OAAO,GAAG,SAAS,CAAC;YACpB,YAAY,CAAC,WAAW,CAAC,UAAC,IAAI;gBAC5B,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAM,UAAU,GAAG,cAAsB,OAAA,OAAO,EAAP,CAAO,CAAC;IACjD,OAAO,EAAE,YAAY,cAAA,EAAE,UAAU,YAAA,EAAE,CAAC;AACtC,CAAC;AAED,SAAS,uBAAuB,CAC9B,IAA6B,EAC7B,2BAAkE;IAElE,OAAO,CACL,CAAA,2BAA2B,aAA3B,2BAA2B,uBAA3B,2BAA2B,CAAG,IAAI,CAAC;QACnC,CAAC,IAAI,CAAC,IAAI,KAAK,8BAAiB,CAAC,WAAW,IAAK,IAAI,CAAC,OAA4B,CAAC,IAAI,KAAK,YAAY,CAAC,CAC1G,CAAC;AACJ,CAAC","sourcesContent":["import type { Config } from '../config';\nimport { type TransportItem, TransportItemType, type Transports } from '../transports';\nimport type { Observable } from '../utils';\n\nimport { USER_ACTION_CANCEL, USER_ACTION_END, USER_ACTION_HALT, USER_ACTION_START } from './const';\nimport { ItemBuffer } from './ItemBuffer';\nimport type { MeasurementEvent } from './measurements';\nimport type { APIEvent, ApiMessageBusMessages } from './types';\n\nexport function createUserActionLifecycleHandler({\n apiMessageBus,\n transports,\n config,\n}: {\n apiMessageBus: Observable<ApiMessageBusMessages>;\n transports: Transports;\n config: Config;\n}) {\n const actionBuffer = new ItemBuffer<TransportItem>();\n const trackUserActionsExcludeItem = config.trackUserActionsExcludeItem;\n let message: ApiMessageBusMessages | undefined;\n\n apiMessageBus.subscribe((msg) => {\n if (USER_ACTION_START === msg.type || USER_ACTION_HALT === msg.type) {\n message = msg;\n return;\n }\n\n if (msg.type === USER_ACTION_END) {\n const { id, name } = msg;\n\n actionBuffer.flushBuffer((item) => {\n if (isExcludeFromUserAction(item, trackUserActionsExcludeItem)) {\n transports.execute(item);\n return;\n }\n\n const userActionItem = {\n ...item,\n payload: {\n ...item.payload,\n action: {\n parentId: id,\n name,\n },\n },\n } as TransportItem;\n\n transports.execute(userActionItem);\n });\n\n message = undefined;\n return;\n }\n\n if (msg.type === USER_ACTION_CANCEL) {\n message = undefined;\n actionBuffer.flushBuffer((item) => {\n transports.execute(item);\n });\n }\n });\n\n const getMessage = (): typeof message => message;\n return { actionBuffer, getMessage };\n}\n\nfunction isExcludeFromUserAction(\n item: TransportItem<APIEvent>,\n trackUserActionsExcludeItem: Config['trackUserActionsExcludeItem']\n) {\n return (\n trackUserActionsExcludeItem?.(item) ||\n (item.type === TransportItemType.MEASUREMENT && (item.payload as MeasurementEvent).type === 'web-vitals')\n );\n}\n"]}
@@ -1,169 +0,0 @@
1
- "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
- Object.defineProperty(exports, "__esModule", { value: true });
14
- var __1 = require("..");
15
- var reactive_1 = require("../utils/reactive");
16
- var apiTestHelpers_1 = require("./apiTestHelpers");
17
- var const_1 = require("./const");
18
- var userActionLifecycleHandler_1 = require("./userActionLifecycleHandler");
19
- describe('userActionLifecycleHandler', function () {
20
- it('assigns the user-action-start message to the message variable when it receives it', function () {
21
- var apiMessageBus = new reactive_1.Observable();
22
- var getMessage = (0, userActionLifecycleHandler_1.createUserActionLifecycleHandler)({
23
- apiMessageBus: apiMessageBus,
24
- transports: apiTestHelpers_1.mockTransports,
25
- config: {},
26
- }).getMessage;
27
- var message = {
28
- type: const_1.USER_ACTION_START,
29
- name: 'start-test',
30
- startTime: 0,
31
- parentId: '123',
32
- };
33
- apiMessageBus.notify(message);
34
- expect(getMessage()).toEqual(message);
35
- });
36
- it('assigns the user-action-halt message to the message variable when it receives it', function () {
37
- var apiMessageBus = new reactive_1.Observable();
38
- var getMessage = (0, userActionLifecycleHandler_1.createUserActionLifecycleHandler)({
39
- apiMessageBus: apiMessageBus,
40
- transports: apiTestHelpers_1.mockTransports,
41
- config: {},
42
- }).getMessage;
43
- var message = {
44
- type: __1.USER_ACTION_HALT,
45
- name: 'halt-test',
46
- haltTime: 0,
47
- reason: 'pending-requests',
48
- parentId: '123',
49
- };
50
- apiMessageBus.notify(message);
51
- expect(getMessage()).toEqual(message);
52
- });
53
- it('When it receives a user-action-cancel message, it resets the cached message flushes the buffer and sends the items to the transports', function () {
54
- var apiMessageBus = new reactive_1.Observable();
55
- var mockExecute = jest.fn();
56
- var _a = (0, userActionLifecycleHandler_1.createUserActionLifecycleHandler)({
57
- apiMessageBus: apiMessageBus,
58
- transports: __assign(__assign({}, apiTestHelpers_1.mockTransports), { execute: mockExecute }),
59
- config: {},
60
- }), actionBuffer = _a.actionBuffer, getMessage = _a.getMessage;
61
- var message = {
62
- type: const_1.USER_ACTION_START,
63
- name: '',
64
- startTime: 0,
65
- parentId: '',
66
- };
67
- apiMessageBus.notify(message);
68
- var item = { type: __1.TransportItemType.EVENT, payload: {}, meta: {} };
69
- actionBuffer.addItem(item);
70
- var cancelMessage = {
71
- type: const_1.USER_ACTION_CANCEL,
72
- name: 'pointerdown',
73
- };
74
- apiMessageBus.notify(cancelMessage);
75
- expect(getMessage()).toBeUndefined();
76
- expect(mockExecute).toHaveBeenCalledTimes(1);
77
- expect(mockExecute).toHaveBeenCalledWith(item);
78
- expect(actionBuffer.size()).toEqual(0);
79
- });
80
- it('When it receives a user-action-end message, it sends the items to the transports with the action parentId and name', function () {
81
- var apiMessageBus = new reactive_1.Observable();
82
- var mockExecute = jest.fn();
83
- var actionBuffer = (0, userActionLifecycleHandler_1.createUserActionLifecycleHandler)({
84
- apiMessageBus: apiMessageBus,
85
- transports: __assign(__assign({}, apiTestHelpers_1.mockTransports), { execute: mockExecute }),
86
- config: {},
87
- }).actionBuffer;
88
- var message = {
89
- type: const_1.USER_ACTION_START,
90
- name: 'pointerdown',
91
- startTime: 0,
92
- parentId: '123',
93
- };
94
- apiMessageBus.notify(message);
95
- var item = { type: __1.TransportItemType.EVENT, payload: {}, meta: {} };
96
- actionBuffer.addItem(item);
97
- var endMessage = {
98
- type: const_1.USER_ACTION_END,
99
- id: '123',
100
- name: 'pointerdown',
101
- startTime: 100,
102
- endTime: 120,
103
- duration: 20,
104
- eventType: 'keydown',
105
- };
106
- apiMessageBus.notify(endMessage);
107
- expect(mockExecute).toHaveBeenCalledTimes(1);
108
- expect(mockExecute).toHaveBeenCalledWith(__assign(__assign({}, item), { payload: __assign(__assign({}, item.payload), { action: {
109
- parentId: '123',
110
- name: 'pointerdown',
111
- } }) }));
112
- });
113
- it('excludes items defined by the isExcludeFromUserAction function from the user actions', function () {
114
- var apiMessageBus = new reactive_1.Observable();
115
- var mockExecute = jest.fn();
116
- var _a = (0, userActionLifecycleHandler_1.createUserActionLifecycleHandler)({
117
- apiMessageBus: apiMessageBus,
118
- transports: __assign(__assign({}, apiTestHelpers_1.mockTransports), { execute: mockExecute }),
119
- config: {
120
- trackUserActionsExcludeItem: function (item) {
121
- return item.type === __1.TransportItemType.EVENT && item.payload.name === 'i-am-excluded';
122
- },
123
- },
124
- }), actionBuffer = _a.actionBuffer, getMessage = _a.getMessage;
125
- var message = {
126
- type: const_1.USER_ACTION_START,
127
- name: 'pointerdown',
128
- startTime: 0,
129
- parentId: '123',
130
- };
131
- apiMessageBus.notify(message);
132
- var itemEvent = { type: __1.TransportItemType.EVENT, payload: {}, meta: {} };
133
- actionBuffer.addItem(itemEvent);
134
- var itemMeasurement = {
135
- type: __1.TransportItemType.MEASUREMENT,
136
- payload: { type: 'web-vitals', values: {}, timestamp: (0, __1.dateNow)().toString() },
137
- meta: {},
138
- };
139
- actionBuffer.addItem(itemMeasurement);
140
- var itemEventExcluded = {
141
- type: __1.TransportItemType.EVENT,
142
- payload: {
143
- timestamp: (0, __1.dateNow)().toString(),
144
- name: 'i-am-excluded',
145
- },
146
- meta: {},
147
- };
148
- actionBuffer.addItem(itemEventExcluded);
149
- var endMessage = {
150
- type: const_1.USER_ACTION_END,
151
- id: '123',
152
- name: 'pointerdown',
153
- startTime: 100,
154
- endTime: 120,
155
- duration: 20,
156
- eventType: 'keydown',
157
- };
158
- apiMessageBus.notify(endMessage);
159
- expect(mockExecute).toHaveBeenCalledTimes(3);
160
- expect(mockExecute).toHaveBeenNthCalledWith(1, __assign(__assign({}, itemEvent), { payload: __assign(__assign({}, itemEvent.payload), { action: {
161
- parentId: '123',
162
- name: 'pointerdown',
163
- } }) }));
164
- expect(mockExecute).toHaveBeenNthCalledWith(2, itemMeasurement);
165
- expect(mockExecute).toHaveBeenNthCalledWith(3, itemEventExcluded);
166
- expect(getMessage()).toBeUndefined();
167
- });
168
- });
169
- //# sourceMappingURL=userActionLifecycleHandler.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"userActionLifecycleHandler.test.js","sourceRoot":"","sources":["../../../../../src/api/userActionLifecycleHandler.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,wBAWY;AACZ,8CAA+C;AAE/C,mDAAkD;AAClD,iCAAiF;AAEjF,2EAAgF;AAEhF,QAAQ,CAAC,4BAA4B,EAAE;IACrC,EAAE,CAAC,mFAAmF,EAAE;QACtF,IAAM,aAAa,GAAG,IAAI,qBAAU,EAAyB,CAAC;QAEtD,IAAA,UAAU,GAAK,IAAA,6DAAgC,EAAC;YACtD,aAAa,eAAA;YACb,UAAU,EAAE,+BAAc;YAC1B,MAAM,EAAE,EAAY;SACrB,CAAC,WAJgB,CAIf;QAEH,IAAM,OAAO,GAA2B;YACtC,IAAI,EAAE,yBAAiB;YACvB,IAAI,EAAE,YAAY;YAClB,SAAS,EAAE,CAAC;YACZ,QAAQ,EAAE,KAAK;SAChB,CAAC;QAEF,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAE9B,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kFAAkF,EAAE;QACrF,IAAM,aAAa,GAAG,IAAI,qBAAU,EAAyB,CAAC;QAEtD,IAAA,UAAU,GAAK,IAAA,6DAAgC,EAAC;YACtD,aAAa,eAAA;YACb,UAAU,EAAE,+BAAc;YAC1B,MAAM,EAAE,EAAY;SACrB,CAAC,WAJgB,CAIf;QAEH,IAAM,OAAO,GAA0B;YACrC,IAAI,EAAE,oBAAgB;YACtB,IAAI,EAAE,WAAW;YACjB,QAAQ,EAAE,CAAC;YACX,MAAM,EAAE,kBAAkB;YAC1B,QAAQ,EAAE,KAAK;SAChB,CAAC;QAEF,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAE9B,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sIAAsI,EAAE;QACzI,IAAM,aAAa,GAAG,IAAI,qBAAU,EAAyB,CAAC;QAE9D,IAAM,WAAW,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QACxB,IAAA,KAA+B,IAAA,6DAAgC,EAAC;YACpE,aAAa,eAAA;YACb,UAAU,wBACL,+BAAc,KACjB,OAAO,EAAE,WAAW,GACrB;YACD,MAAM,EAAE,EAAY;SACrB,CAAC,EAPM,YAAY,kBAAA,EAAE,UAAU,gBAO9B,CAAC;QAEH,IAAM,OAAO,GAA2B;YACtC,IAAI,EAAE,yBAAiB;YACvB,IAAI,EAAE,EAAE;YACR,SAAS,EAAE,CAAC;YACZ,QAAQ,EAAE,EAAE;SACb,CAAC;QAEF,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAE9B,IAAM,IAAI,GAAG,EAAE,IAAI,EAAE,qBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAU,EAAE,CAAC;QAC9E,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAE3B,IAAM,aAAa,GAA0B;YAC3C,IAAI,EAAE,0BAAkB;YACxB,IAAI,EAAE,aAAa;SACpB,CAAC;QAEF,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAEpC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC;QACrC,MAAM,CAAC,WAAW,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,CAAC,WAAW,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oHAAoH,EAAE;QACvH,IAAM,aAAa,GAAG,IAAI,qBAAU,EAAyB,CAAC;QAE9D,IAAM,WAAW,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QACtB,IAAA,YAAY,GAAK,IAAA,6DAAgC,EAAC;YACxD,aAAa,eAAA;YACb,UAAU,wBACL,+BAAc,KACjB,OAAO,EAAE,WAAW,GACrB;YACD,MAAM,EAAE,EAAY;SACrB,CAAC,aAPkB,CAOjB;QAEH,IAAM,OAAO,GAA2B;YACtC,IAAI,EAAE,yBAAiB;YACvB,IAAI,EAAE,aAAa;YACnB,SAAS,EAAE,CAAC;YACZ,QAAQ,EAAE,KAAK;SAChB,CAAC;QAEF,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAE9B,IAAM,IAAI,GAAG,EAAE,IAAI,EAAE,qBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAU,EAAE,CAAC;QAC9E,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAE3B,IAAM,UAAU,GAA0B;YACxC,IAAI,EAAE,uBAAe;YACrB,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,aAAa;YACnB,SAAS,EAAE,GAAG;YACd,OAAO,EAAE,GAAG;YACZ,QAAQ,EAAE,EAAE;YACZ,SAAS,EAAE,SAAS;SACrB,CAAC;QAEF,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAEjC,MAAM,CAAC,WAAW,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,CAAC,WAAW,CAAC,CAAC,oBAAoB,uBACnC,IAAI,KACP,OAAO,wBACF,IAAI,CAAC,OAAO,KACf,MAAM,EAAE;oBACN,QAAQ,EAAE,KAAK;oBACf,IAAI,EAAE,aAAa;iBACpB,OAEH,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sFAAsF,EAAE;QACzF,IAAM,aAAa,GAAG,IAAI,qBAAU,EAAyB,CAAC;QAE9D,IAAM,WAAW,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QACxB,IAAA,KAA+B,IAAA,6DAAgC,EAAC;YACpE,aAAa,eAAA;YACb,UAAU,wBACL,+BAAc,KACjB,OAAO,EAAE,WAAW,GACrB;YACD,MAAM,EAAE;gBACN,2BAA2B,YAAC,IAAI;oBAC9B,OAAO,IAAI,CAAC,IAAI,KAAK,qBAAiB,CAAC,KAAK,IAAK,IAAI,CAAC,OAAsB,CAAC,IAAI,KAAK,eAAe,CAAC;gBACxG,CAAC;aACQ;SACZ,CAAC,EAXM,YAAY,kBAAA,EAAE,UAAU,gBAW9B,CAAC;QAEH,IAAM,OAAO,GAA2B;YACtC,IAAI,EAAE,yBAAiB;YACvB,IAAI,EAAE,aAAa;YACnB,SAAS,EAAE,CAAC;YACZ,QAAQ,EAAE,KAAK;SAChB,CAAC;QAEF,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAE9B,IAAM,SAAS,GAAG,EAAE,IAAI,EAAE,qBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAU,EAAE,CAAC;QACnF,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAEhC,IAAM,eAAe,GAA4B;YAC/C,IAAI,EAAE,qBAAiB,CAAC,WAAW;YACnC,OAAO,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,IAAA,WAAO,GAAE,CAAC,QAAQ,EAAE,EAAE;YAC5E,IAAI,EAAE,EAAU;SACjB,CAAC;QACF,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAEtC,IAAM,iBAAiB,GAA8B;YACnD,IAAI,EAAE,qBAAiB,CAAC,KAAK;YAC7B,OAAO,EAAE;gBACP,SAAS,EAAE,IAAA,WAAO,GAAE,CAAC,QAAQ,EAAE;gBAC/B,IAAI,EAAE,eAAe;aACtB;YACD,IAAI,EAAE,EAAU;SACjB,CAAC;QACF,YAAY,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAExC,IAAM,UAAU,GAA0B;YACxC,IAAI,EAAE,uBAAe;YACrB,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,aAAa;YACnB,SAAS,EAAE,GAAG;YACd,OAAO,EAAE,GAAG;YACZ,QAAQ,EAAE,EAAE;YACZ,SAAS,EAAE,SAAS;SACrB,CAAC;QAEF,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAEjC,MAAM,CAAC,WAAW,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,CAAC,WAAW,CAAC,CAAC,uBAAuB,CAAC,CAAC,wBACxC,SAAS,KACZ,OAAO,wBACF,SAAS,CAAC,OAAO,KACpB,MAAM,EAAE;oBACN,QAAQ,EAAE,KAAK;oBACf,IAAI,EAAE,aAAa;iBACpB,OAEH,CAAC;QACH,MAAM,CAAC,WAAW,CAAC,CAAC,uBAAuB,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;QAChE,MAAM,CAAC,WAAW,CAAC,CAAC,uBAAuB,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;QAClE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import {\n type APIEvent,\n ApiMessageBusMessages,\n type Config,\n dateNow,\n EventEvent,\n type Meta,\n TransportItem,\n TransportItemType,\n USER_ACTION_HALT,\n UserActionStartMessage,\n} from '..';\nimport { Observable } from '../utils/reactive';\n\nimport { mockTransports } from './apiTestHelpers';\nimport { USER_ACTION_CANCEL, USER_ACTION_END, USER_ACTION_START } from './const';\nimport type { UserActionHaltMessage } from './types';\nimport { createUserActionLifecycleHandler } from './userActionLifecycleHandler';\n\ndescribe('userActionLifecycleHandler', () => {\n it('assigns the user-action-start message to the message variable when it receives it', () => {\n const apiMessageBus = new Observable<ApiMessageBusMessages>();\n\n const { getMessage } = createUserActionLifecycleHandler({\n apiMessageBus,\n transports: mockTransports,\n config: {} as Config,\n });\n\n const message: UserActionStartMessage = {\n type: USER_ACTION_START,\n name: 'start-test',\n startTime: 0,\n parentId: '123',\n };\n\n apiMessageBus.notify(message);\n\n expect(getMessage()).toEqual(message);\n });\n\n it('assigns the user-action-halt message to the message variable when it receives it', () => {\n const apiMessageBus = new Observable<ApiMessageBusMessages>();\n\n const { getMessage } = createUserActionLifecycleHandler({\n apiMessageBus,\n transports: mockTransports,\n config: {} as Config,\n });\n\n const message: UserActionHaltMessage = {\n type: USER_ACTION_HALT,\n name: 'halt-test',\n haltTime: 0,\n reason: 'pending-requests',\n parentId: '123',\n };\n\n apiMessageBus.notify(message);\n\n expect(getMessage()).toEqual(message);\n });\n\n it('When it receives a user-action-cancel message, it resets the cached message flushes the buffer and sends the items to the transports', () => {\n const apiMessageBus = new Observable<ApiMessageBusMessages>();\n\n const mockExecute = jest.fn();\n const { actionBuffer, getMessage } = createUserActionLifecycleHandler({\n apiMessageBus,\n transports: {\n ...mockTransports,\n execute: mockExecute,\n },\n config: {} as Config,\n });\n\n const message: UserActionStartMessage = {\n type: USER_ACTION_START,\n name: '',\n startTime: 0,\n parentId: '',\n };\n\n apiMessageBus.notify(message);\n\n const item = { type: TransportItemType.EVENT, payload: {}, meta: {} as Meta };\n actionBuffer.addItem(item);\n\n const cancelMessage: ApiMessageBusMessages = {\n type: USER_ACTION_CANCEL,\n name: 'pointerdown',\n };\n\n apiMessageBus.notify(cancelMessage);\n\n expect(getMessage()).toBeUndefined();\n expect(mockExecute).toHaveBeenCalledTimes(1);\n expect(mockExecute).toHaveBeenCalledWith(item);\n expect(actionBuffer.size()).toEqual(0);\n });\n\n it('When it receives a user-action-end message, it sends the items to the transports with the action parentId and name', () => {\n const apiMessageBus = new Observable<ApiMessageBusMessages>();\n\n const mockExecute = jest.fn();\n const { actionBuffer } = createUserActionLifecycleHandler({\n apiMessageBus,\n transports: {\n ...mockTransports,\n execute: mockExecute,\n },\n config: {} as Config,\n });\n\n const message: UserActionStartMessage = {\n type: USER_ACTION_START,\n name: 'pointerdown',\n startTime: 0,\n parentId: '123',\n };\n\n apiMessageBus.notify(message);\n\n const item = { type: TransportItemType.EVENT, payload: {}, meta: {} as Meta };\n actionBuffer.addItem(item);\n\n const endMessage: ApiMessageBusMessages = {\n type: USER_ACTION_END,\n id: '123',\n name: 'pointerdown',\n startTime: 100,\n endTime: 120,\n duration: 20,\n eventType: 'keydown',\n };\n\n apiMessageBus.notify(endMessage);\n\n expect(mockExecute).toHaveBeenCalledTimes(1);\n expect(mockExecute).toHaveBeenCalledWith({\n ...item,\n payload: {\n ...item.payload,\n action: {\n parentId: '123',\n name: 'pointerdown',\n },\n },\n });\n });\n\n it('excludes items defined by the isExcludeFromUserAction function from the user actions', () => {\n const apiMessageBus = new Observable<ApiMessageBusMessages>();\n\n const mockExecute = jest.fn();\n const { actionBuffer, getMessage } = createUserActionLifecycleHandler({\n apiMessageBus,\n transports: {\n ...mockTransports,\n execute: mockExecute,\n },\n config: {\n trackUserActionsExcludeItem(item) {\n return item.type === TransportItemType.EVENT && (item.payload as EventEvent).name === 'i-am-excluded';\n },\n } as Config,\n });\n\n const message: UserActionStartMessage = {\n type: USER_ACTION_START,\n name: 'pointerdown',\n startTime: 0,\n parentId: '123',\n };\n\n apiMessageBus.notify(message);\n\n const itemEvent = { type: TransportItemType.EVENT, payload: {}, meta: {} as Meta };\n actionBuffer.addItem(itemEvent);\n\n const itemMeasurement: TransportItem<APIEvent> = {\n type: TransportItemType.MEASUREMENT,\n payload: { type: 'web-vitals', values: {}, timestamp: dateNow().toString() },\n meta: {} as Meta,\n };\n actionBuffer.addItem(itemMeasurement);\n\n const itemEventExcluded: TransportItem<EventEvent> = {\n type: TransportItemType.EVENT,\n payload: {\n timestamp: dateNow().toString(),\n name: 'i-am-excluded',\n },\n meta: {} as Meta,\n };\n actionBuffer.addItem(itemEventExcluded);\n\n const endMessage: ApiMessageBusMessages = {\n type: USER_ACTION_END,\n id: '123',\n name: 'pointerdown',\n startTime: 100,\n endTime: 120,\n duration: 20,\n eventType: 'keydown',\n };\n\n apiMessageBus.notify(endMessage);\n\n expect(mockExecute).toHaveBeenCalledTimes(3);\n expect(mockExecute).toHaveBeenNthCalledWith(1, {\n ...itemEvent,\n payload: {\n ...itemEvent.payload,\n action: {\n parentId: '123',\n name: 'pointerdown',\n },\n },\n });\n expect(mockExecute).toHaveBeenNthCalledWith(2, itemMeasurement);\n expect(mockExecute).toHaveBeenNthCalledWith(3, itemEventExcluded);\n expect(getMessage()).toBeUndefined();\n });\n});\n"]}
@@ -1,4 +0,0 @@
1
- export declare const USER_ACTION_START = "user-action-start";
2
- export declare const USER_ACTION_END = "user-action-end";
3
- export declare const USER_ACTION_CANCEL = "user-action-cancel";
4
- export declare const USER_ACTION_HALT = "user-action-halt";
@@ -1,13 +0,0 @@
1
- import type { Config } from '../config';
2
- import { type TransportItem, type Transports } from '../transports';
3
- import type { Observable } from '../utils';
4
- import { ItemBuffer } from './ItemBuffer';
5
- import type { APIEvent, ApiMessageBusMessages } from './types';
6
- export declare function createUserActionLifecycleHandler({ apiMessageBus, transports, config, }: {
7
- apiMessageBus: Observable<ApiMessageBusMessages>;
8
- transports: Transports;
9
- config: Config;
10
- }): {
11
- actionBuffer: ItemBuffer<TransportItem<APIEvent>>;
12
- getMessage: () => ApiMessageBusMessages | undefined;
13
- };
@@ -1,4 +0,0 @@
1
- export declare const USER_ACTION_START = "user-action-start";
2
- export declare const USER_ACTION_END = "user-action-end";
3
- export declare const USER_ACTION_CANCEL = "user-action-cancel";
4
- export declare const USER_ACTION_HALT = "user-action-halt";
@@ -1,13 +0,0 @@
1
- import type { Config } from '../config';
2
- import { type TransportItem, type Transports } from '../transports';
3
- import type { Observable } from '../utils';
4
- import { ItemBuffer } from './ItemBuffer';
5
- import type { APIEvent, ApiMessageBusMessages } from './types';
6
- export declare function createUserActionLifecycleHandler({ apiMessageBus, transports, config, }: {
7
- apiMessageBus: Observable<ApiMessageBusMessages>;
8
- transports: Transports;
9
- config: Config;
10
- }): {
11
- actionBuffer: ItemBuffer<TransportItem<APIEvent>>;
12
- getMessage: () => ApiMessageBusMessages | undefined;
13
- };