@multiplayer-app/session-recorder-browser 1.2.22 → 1.2.24

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 (166) hide show
  1. package/dist/browser/index.js +48 -104
  2. package/dist/browser/index.js.map +1 -1
  3. package/dist/config/constants.d.ts +19 -0
  4. package/dist/config/constants.js +35 -0
  5. package/dist/config/constants.js.map +1 -0
  6. package/dist/config/defaults.d.ts +5 -0
  7. package/dist/config/defaults.js +60 -0
  8. package/dist/config/defaults.js.map +1 -0
  9. package/dist/config/index.d.ts +6 -0
  10. package/dist/config/index.js +7 -0
  11. package/dist/config/index.js.map +1 -0
  12. package/dist/config/masking.d.ts +3 -0
  13. package/dist/config/masking.js +30 -0
  14. package/dist/config/masking.js.map +1 -0
  15. package/dist/config/session-recorder.d.ts +3 -0
  16. package/dist/config/session-recorder.js +60 -0
  17. package/dist/config/session-recorder.js.map +1 -0
  18. package/dist/config/validators.d.ts +11 -0
  19. package/dist/config/validators.js +25 -0
  20. package/dist/config/validators.js.map +1 -0
  21. package/dist/eventBus.d.ts +3 -0
  22. package/dist/eventBus.js +3 -0
  23. package/dist/eventBus.js.map +1 -0
  24. package/dist/exporters/index.js +1 -1
  25. package/dist/exporters.d.ts +4 -0
  26. package/dist/exporters.js +8 -0
  27. package/dist/exporters.js.map +1 -0
  28. package/dist/index.d.ts +10 -0
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +52 -104
  31. package/dist/index.js.map +1 -1
  32. package/dist/index.umd.js +48 -103
  33. package/dist/index.umd.js.map +1 -1
  34. package/dist/listeners.d.ts +3 -0
  35. package/dist/listeners.js +39 -0
  36. package/dist/listeners.js.map +1 -0
  37. package/dist/navigation/index.d.ts +3 -0
  38. package/dist/navigation/index.js +3 -0
  39. package/dist/navigation/index.js.map +1 -0
  40. package/dist/navigation/navigationRecorder.d.ts +22 -0
  41. package/dist/navigation/navigationRecorder.js +195 -0
  42. package/dist/navigation/navigationRecorder.js.map +1 -0
  43. package/dist/navigation/types.d.ts +32 -0
  44. package/dist/navigation/types.js +2 -0
  45. package/dist/navigation/types.js.map +1 -0
  46. package/dist/otel/helpers.d.ts +46 -0
  47. package/dist/otel/helpers.js +201 -0
  48. package/dist/otel/helpers.js.map +1 -0
  49. package/dist/otel/index.d.ts +18 -0
  50. package/dist/otel/index.js +186 -0
  51. package/dist/otel/index.js.map +1 -0
  52. package/dist/otel/types.d.ts +10 -0
  53. package/dist/otel/types.js +2 -0
  54. package/dist/otel/types.js.map +1 -0
  55. package/dist/patch/configs.d.ts +9 -0
  56. package/dist/patch/configs.js +16 -0
  57. package/dist/patch/configs.js.map +1 -0
  58. package/dist/patch/fetch.d.ts +2 -0
  59. package/dist/patch/fetch.js +123 -0
  60. package/dist/patch/fetch.js.map +1 -0
  61. package/dist/patch/index.d.ts +4 -0
  62. package/dist/patch/index.js +4 -0
  63. package/dist/patch/index.js.map +1 -0
  64. package/dist/patch/xhr.d.ts +2 -0
  65. package/dist/patch/xhr.js +85 -0
  66. package/dist/patch/xhr.js.map +1 -0
  67. package/dist/rrweb/exporter.d.ts +25 -0
  68. package/dist/rrweb/exporter.js +146 -0
  69. package/dist/rrweb/exporter.js.map +1 -0
  70. package/dist/rrweb/index.d.ts +39 -0
  71. package/dist/rrweb/index.js +139 -0
  72. package/dist/rrweb/index.js.map +1 -0
  73. package/dist/rrweb/indexedDbService.d.ts +9 -0
  74. package/dist/rrweb/indexedDbService.js +54 -0
  75. package/dist/rrweb/indexedDbService.js.map +1 -0
  76. package/dist/services/api.service.d.ts +81 -0
  77. package/dist/services/api.service.js +133 -0
  78. package/dist/services/api.service.js.map +1 -0
  79. package/dist/services/messaging.service.d.ts +16 -0
  80. package/dist/services/messaging.service.js +94 -0
  81. package/dist/services/messaging.service.js.map +1 -0
  82. package/dist/sessionRecorder.d.ts +148 -0
  83. package/dist/sessionRecorder.js +555 -0
  84. package/dist/sessionRecorder.js.map +1 -0
  85. package/dist/sessionWidget/UIManager.d.ts +76 -0
  86. package/dist/sessionWidget/UIManager.js +135 -0
  87. package/dist/sessionWidget/UIManager.js.map +1 -0
  88. package/dist/sessionWidget/buttonStateConfigs.d.ts +83 -0
  89. package/dist/sessionWidget/buttonStateConfigs.js +86 -0
  90. package/dist/sessionWidget/buttonStateConfigs.js.map +1 -0
  91. package/dist/sessionWidget/constants.d.ts +5 -0
  92. package/dist/sessionWidget/constants.js +5 -0
  93. package/dist/sessionWidget/constants.js.map +1 -0
  94. package/dist/sessionWidget/dragManager.d.ts +16 -0
  95. package/dist/sessionWidget/dragManager.js +114 -0
  96. package/dist/sessionWidget/dragManager.js.map +1 -0
  97. package/dist/sessionWidget/index.d.ts +86 -0
  98. package/dist/sessionWidget/index.js +564 -0
  99. package/dist/sessionWidget/index.js.map +1 -0
  100. package/dist/sessionWidget/templates/finalPopover.d.ts +3 -0
  101. package/dist/sessionWidget/templates/finalPopover.js +21 -0
  102. package/dist/sessionWidget/templates/finalPopover.js.map +1 -0
  103. package/dist/sessionWidget/templates/icons.d.ts +14 -0
  104. package/dist/sessionWidget/templates/icons.js +50 -0
  105. package/dist/sessionWidget/templates/icons.js.map +1 -0
  106. package/dist/sessionWidget/templates/initialPopover.d.ts +3 -0
  107. package/dist/sessionWidget/templates/initialPopover.js +41 -0
  108. package/dist/sessionWidget/templates/initialPopover.js.map +1 -0
  109. package/dist/sessionWidget/templates/recordingOverlay.d.ts +2 -0
  110. package/dist/sessionWidget/templates/recordingOverlay.js +16 -0
  111. package/dist/sessionWidget/templates/recordingOverlay.js.map +1 -0
  112. package/dist/sessionWidget/templates/submitSessionDialog.d.ts +3 -0
  113. package/dist/sessionWidget/templates/submitSessionDialog.js +17 -0
  114. package/dist/sessionWidget/templates/submitSessionDialog.js.map +1 -0
  115. package/dist/sessionWidget/templates/toast.d.ts +3 -0
  116. package/dist/sessionWidget/templates/toast.js +25 -0
  117. package/dist/sessionWidget/templates/toast.js.map +1 -0
  118. package/dist/types/client-type.enum.d.ts +6 -0
  119. package/dist/types/client-type.enum.js +7 -0
  120. package/dist/types/client-type.enum.js.map +1 -0
  121. package/dist/types/index.d.ts +4 -0
  122. package/dist/types/index.js +4 -0
  123. package/dist/types/index.js.map +1 -0
  124. package/dist/types/session.d.ts +72 -0
  125. package/dist/types/session.js +7 -0
  126. package/dist/types/session.js.map +1 -0
  127. package/dist/types/sessionRecorder.d.ts +369 -0
  128. package/dist/types/sessionRecorder.js +14 -0
  129. package/dist/types/sessionRecorder.js.map +1 -0
  130. package/dist/types/widget.d.ts +11 -0
  131. package/dist/types/widget.js +2 -0
  132. package/dist/types/widget.js.map +1 -0
  133. package/dist/utils/array.d.ts +4 -0
  134. package/dist/utils/array.js +50 -0
  135. package/dist/utils/array.js.map +1 -0
  136. package/dist/utils/dom.d.ts +5 -0
  137. package/dist/utils/dom.js +9 -0
  138. package/dist/utils/dom.js.map +1 -0
  139. package/dist/utils/globals.d.ts +24 -0
  140. package/dist/utils/globals.js +14 -0
  141. package/dist/utils/globals.js.map +1 -0
  142. package/dist/utils/index.d.ts +9 -0
  143. package/dist/utils/index.js +10 -0
  144. package/dist/utils/index.js.map +1 -0
  145. package/dist/utils/navigator.d.ts +3 -0
  146. package/dist/utils/navigator.js +83 -0
  147. package/dist/utils/navigator.js.map +1 -0
  148. package/dist/utils/request-utils.d.ts +10 -0
  149. package/dist/utils/request-utils.js +70 -0
  150. package/dist/utils/request-utils.js.map +1 -0
  151. package/dist/utils/session.d.ts +8 -0
  152. package/dist/utils/session.js +21 -0
  153. package/dist/utils/session.js.map +1 -0
  154. package/dist/utils/storage.d.ts +7 -0
  155. package/dist/utils/storage.js +19 -0
  156. package/dist/utils/storage.js.map +1 -0
  157. package/dist/utils/time.d.ts +7 -0
  158. package/dist/utils/time.js +25 -0
  159. package/dist/utils/time.js.map +1 -0
  160. package/dist/utils/type-utils.d.ts +18 -0
  161. package/dist/utils/type-utils.js +71 -0
  162. package/dist/utils/type-utils.js.map +1 -0
  163. package/package.json +8 -3
  164. package/dist/exports.d.ts.map +0 -1
  165. package/docs/img/header-js.png +0 -0
  166. package/src/index.scss +0 -913
@@ -0,0 +1,10 @@
1
+ /**
2
+ * IE11 doesn't support `new URL`
3
+ * so we can create an anchor element and use that to parse the URL
4
+ * there's a lot of overlap between HTMLHyperlinkElementUtils and URL
5
+ * meaning useful properties like `pathname` are available on both
6
+ */
7
+ export declare const convertToURL: (url: string) => HTMLAnchorElement | null;
8
+ export declare const isUrlMatchingRegex: (url: string, pattern: string) => boolean;
9
+ export declare const formDataToQuery: (formdata: Record<string, any> | FormData, arg_separator?: string) => string;
10
+ //# sourceMappingURL=request-utils.d.ts.map
@@ -0,0 +1,70 @@
1
+ import { each, isValidRegex } from './';
2
+ import { isFile, isUndefined } from './type-utils';
3
+ // import { document } from './globals'
4
+ const localDomains = ['localhost', '127.0.0.1'];
5
+ /**
6
+ * IE11 doesn't support `new URL`
7
+ * so we can create an anchor element and use that to parse the URL
8
+ * there's a lot of overlap between HTMLHyperlinkElementUtils and URL
9
+ * meaning useful properties like `pathname` are available on both
10
+ */
11
+ export const convertToURL = (url) => {
12
+ const location = document === null || document === void 0 ? void 0 : document.createElement('a');
13
+ if (isUndefined(location)) {
14
+ return null;
15
+ }
16
+ location.href = url;
17
+ return location;
18
+ };
19
+ export const isUrlMatchingRegex = function (url, pattern) {
20
+ if (!isValidRegex(pattern))
21
+ return false;
22
+ return new RegExp(pattern).test(url);
23
+ };
24
+ export const formDataToQuery = function (formdata, arg_separator = '&') {
25
+ let use_val;
26
+ let use_key;
27
+ const tph_arr = [];
28
+ each(formdata, function (val, key) {
29
+ // the key might be literally the string undefined for e.g. if {undefined: 'something'}
30
+ if (isUndefined(val) || isUndefined(key) || key === 'undefined') {
31
+ return;
32
+ }
33
+ use_val = encodeURIComponent(isFile(val) ? val.name : val.toString());
34
+ use_key = encodeURIComponent(key);
35
+ tph_arr[tph_arr.length] = use_key + '=' + use_val;
36
+ });
37
+ return tph_arr.join(arg_separator);
38
+ };
39
+ // export const getQueryParam = function (url: string, param: string): string {
40
+ // const withoutHash: string = url.split('#')[0] || ''
41
+ // const queryParams: string = withoutHash.split('?')[1] || ''
42
+ // const queryParts = queryParams.split('&')
43
+ // let keyValuePair
44
+ // for (let i = 0; i < queryParts.length; i++) {
45
+ // const parts = queryParts[i].split('=')
46
+ // if (parts[0] === param) {
47
+ // keyValuePair = parts
48
+ // break
49
+ // }
50
+ // }
51
+ // if (!isArray(keyValuePair) || keyValuePair.length < 2) {
52
+ // return ''
53
+ // } else {
54
+ // let result = keyValuePair[1]
55
+ // try {
56
+ // result = decodeURIComponent(result)
57
+ // } catch {
58
+ // logger.error('Skipping decoding for malformed query param: ' + result)
59
+ // }
60
+ // return result.replace(/\+/g, ' ')
61
+ // }
62
+ // }
63
+ // export const _getHashParam = function (hash: string, param: string): string | null {
64
+ // const matches = hash.match(new RegExp(param + '=([^&]*)'))
65
+ // return matches ? matches[1] : null
66
+ // }
67
+ // export const isLocalhost = (): boolean => {
68
+ // return localDomains.includes(location.hostname)
69
+ // }
70
+ //# sourceMappingURL=request-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-utils.js","sourceRoot":"","sources":["../../src/utils/request-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,IAAI,CAAA;AAEvC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAElD,uCAAuC;AAGvC,MAAM,YAAY,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;AAE/C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAW,EAA4B,EAAE;IACpE,MAAM,QAAQ,GAAG,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,aAAa,CAAC,GAAG,CAAC,CAAA;IAC7C,IAAI,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAA;IACnB,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,UAAU,GAAW,EAAE,OAAe;IACtE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAA;IACxC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACtC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,QAAwC,EAAE,aAAa,GAAG,GAAG;IACpG,IAAI,OAAe,CAAA;IACnB,IAAI,OAAe,CAAA;IACnB,MAAM,OAAO,GAAa,EAAE,CAAA;IAE5B,IAAI,CAAC,QAAQ,EAAE,UAAU,GAA8B,EAAE,GAAuB;QAC9E,uFAAuF;QACvF,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YAChE,OAAM;QACR,CAAC;QAED,OAAO,GAAG,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;QACrE,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAA;QACjC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,GAAG,GAAG,GAAG,OAAO,CAAA;IACnD,CAAC,CAAC,CAAA;IAEF,OAAO,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;AACpC,CAAC,CAAA;AAED,+EAA+E;AAC/E,wDAAwD;AACxD,gEAAgE;AAEhE,8CAA8C;AAC9C,qBAAqB;AAErB,kDAAkD;AAClD,6CAA6C;AAC7C,gCAAgC;AAChC,6BAA6B;AAC7B,cAAc;AACd,QAAQ;AACR,MAAM;AAEN,6DAA6D;AAC7D,gBAAgB;AAChB,aAAa;AACb,mCAAmC;AACnC,YAAY;AACZ,4CAA4C;AAC5C,gBAAgB;AAChB,+EAA+E;AAC/E,QAAQ;AACR,wCAAwC;AACxC,MAAM;AACN,IAAI;AAEJ,uFAAuF;AACvF,+DAA+D;AAC/D,uCAAuC;AACvC,IAAI;AAEJ,8CAA8C;AAC9C,oDAAoD;AACpD,IAAI"}
@@ -0,0 +1,8 @@
1
+ import { eventWithTime } from 'rrweb';
2
+ import { SessionType } from '@multiplayer-app/session-recorder-common';
3
+ /**
4
+ * Session-related utility functions
5
+ */
6
+ export declare const isSessionActive: (session: any, sessionType: SessionType) => boolean;
7
+ export declare const isConsoleEvent: (event: eventWithTime) => boolean;
8
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1,21 @@
1
+ import { EventType } from 'rrweb';
2
+ import { DEBUG_SESSION_MAX_DURATION_SECONDS } from '../config/constants';
3
+ import { SessionType } from '@multiplayer-app/session-recorder-common';
4
+ /**
5
+ * Session-related utility functions
6
+ */
7
+ export const isSessionActive = (session, sessionType) => {
8
+ if (!session)
9
+ return false;
10
+ if (sessionType === SessionType.CONTINUOUS)
11
+ return true;
12
+ const startedAt = new Date(session.startedAt);
13
+ const now = new Date();
14
+ const diff = now.getTime() - startedAt.getTime();
15
+ return diff < DEBUG_SESSION_MAX_DURATION_SECONDS * 1000;
16
+ };
17
+ export const isConsoleEvent = (event) => {
18
+ var _a;
19
+ return event.type === EventType.Plugin && ((_a = event.data) === null || _a === void 0 ? void 0 : _a.plugin) === 'rrweb/console@1';
20
+ };
21
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/utils/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,SAAS,EAAE,MAAM,OAAO,CAAA;AAChD,OAAO,EAAE,kCAAkC,EAAE,MAAM,qBAAqB,CAAA;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAA;AAEtE;;GAEG;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,WAAwB,EAAE,EAAE;IACnE,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAA;IAC1B,IAAI,WAAW,KAAK,WAAW,CAAC,UAAU;QAAE,OAAO,IAAI,CAAA;IACvD,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IAC7C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;IACtB,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,CAAA;IAChD,OAAO,IAAI,GAAG,kCAAkC,GAAG,IAAI,CAAA;AACzD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAoB,EAAE,EAAE;;IACrD,OAAO,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,IAAI,CAAA,MAAA,KAAK,CAAC,IAAI,0CAAE,MAAM,MAAK,iBAAiB,CAAA;AACpF,CAAC,CAAA"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * LocalStorage utility functions
3
+ */
4
+ export declare const getStoredItem: (key: string, parse?: boolean) => any;
5
+ export declare const setStoredItem: (key: string, value: any) => void;
6
+ export declare const removeStoredItem: (key: string) => void;
7
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1,19 @@
1
+ /**
2
+ * LocalStorage utility functions
3
+ */
4
+ export const getStoredItem = (key, parse) => {
5
+ const item = localStorage === null || localStorage === void 0 ? void 0 : localStorage.getItem(key);
6
+ return parse ? (item ? JSON.parse(item) : null) : item;
7
+ };
8
+ export const setStoredItem = (key, value) => {
9
+ if (value === null || value === undefined) {
10
+ localStorage === null || localStorage === void 0 ? void 0 : localStorage.removeItem(key);
11
+ }
12
+ else {
13
+ localStorage === null || localStorage === void 0 ? void 0 : localStorage.setItem(key, typeof value === 'string' ? value : JSON.stringify(value));
14
+ }
15
+ };
16
+ export const removeStoredItem = (key) => {
17
+ localStorage === null || localStorage === void 0 ? void 0 : localStorage.removeItem(key);
18
+ };
19
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/utils/storage.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAW,EAAE,KAAe,EAAO,EAAE;IACjE,MAAM,IAAI,GAAG,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,OAAO,CAAC,GAAG,CAAC,CAAA;IACvC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AACxD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAW,EAAE,KAAU,EAAE,EAAE;IACvD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,UAAU,CAAC,GAAG,CAAC,CAAA;IAC/B,CAAC;SAAM,CAAC;QACN,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,OAAO,CAAC,GAAG,EAAE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;IACvF,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,GAAW,EAAE,EAAE;IAC9C,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,UAAU,CAAC,GAAG,CAAC,CAAA;AAC/B,CAAC,CAAA"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Time and date utility functions
3
+ */
4
+ export declare const getFormattedDate: (date: any, options?: any) => string;
5
+ export declare const formatTimeForSessionTimer: (totalSeconds: any) => string;
6
+ export declare const getTimeDifferenceInSeconds: (startedAt: any) => number;
7
+ //# sourceMappingURL=time.d.ts.map
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Time and date utility functions
3
+ */
4
+ export const getFormattedDate = (date, options) => {
5
+ return new Date(date).toLocaleDateString('en-US', options || {
6
+ month: 'short',
7
+ year: 'numeric',
8
+ day: 'numeric',
9
+ hour: 'numeric',
10
+ minute: '2-digit',
11
+ second: '2-digit',
12
+ });
13
+ };
14
+ export const formatTimeForSessionTimer = (totalSeconds) => {
15
+ const minutes = Math.floor(totalSeconds / 60);
16
+ const seconds = totalSeconds % 60;
17
+ return `${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;
18
+ };
19
+ export const getTimeDifferenceInSeconds = (startedAt) => {
20
+ if (!startedAt) {
21
+ return 0;
22
+ }
23
+ return Math.floor((Date.now() - new Date(startedAt).getTime()) / 1000);
24
+ };
25
+ //# sourceMappingURL=time.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time.js","sourceRoot":"","sources":["../../src/utils/time.ts"],"names":[],"mappings":"AACA;;GAEG;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,OAAQ,EAAE,EAAE;IACjD,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,kBAAkB,CACtC,OAAO,EACP,OAAO,IAAI;QACT,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,SAAS;QACf,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;KAClB,CACF,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,YAAY,EAAE,EAAE;IACxD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC,CAAA;IAC7C,MAAM,OAAO,GAAG,YAAY,GAAG,EAAE,CAAA;IACjC,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAA;AACxF,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,SAAc,EAAE,EAAE;IAC3D,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,CAAC,CAAA;IACV,CAAC;IAED,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,CAAA;AACxE,CAAC,CAAA"}
@@ -0,0 +1,18 @@
1
+ export declare const hasOwnProperty: (v: PropertyKey) => boolean;
2
+ export declare const isArray: (arg: any) => arg is any[];
3
+ export declare const isUint8Array: (x: unknown) => x is Uint8Array;
4
+ export declare const isFunction: (f: any) => f is (...args: any[]) => any;
5
+ export declare const isObject: (x: unknown) => x is Record<string, any>;
6
+ export declare const isEmptyObject: (x: unknown) => x is Record<string, any>;
7
+ export declare const isUndefined: (x: unknown) => x is undefined;
8
+ export declare const isString: (x: unknown) => x is string;
9
+ export declare const isEmptyString: (x: unknown) => boolean;
10
+ export declare const isNull: (x: unknown) => x is null;
11
+ export declare const isNullish: (x: unknown) => x is null | undefined;
12
+ export declare const isDate: (x: unknown) => x is Date;
13
+ export declare const isNumber: (x: unknown) => x is number;
14
+ export declare const isBoolean: (x: unknown) => x is boolean;
15
+ export declare const isDocument: (x: unknown) => x is Document;
16
+ export declare const isFormData: (x: unknown) => x is FormData;
17
+ export declare const isFile: (x: unknown) => x is File;
18
+ //# sourceMappingURL=type-utils.d.ts.map
@@ -0,0 +1,71 @@
1
+ const nativeIsArray = Array.isArray;
2
+ const ObjProto = Object.prototype;
3
+ export const hasOwnProperty = ObjProto.hasOwnProperty;
4
+ const toString = ObjProto.toString;
5
+ export const isArray = nativeIsArray ||
6
+ function (obj) {
7
+ return toString.call(obj) === '[object Array]';
8
+ };
9
+ export const isUint8Array = function (x) {
10
+ return toString.call(x) === '[object Uint8Array]';
11
+ };
12
+ // from a comment on http://dbj.org/dbj/?p=286
13
+ // fails on only one very rare and deliberate custom object:
14
+ // let bomb = { toString : undefined, valueOf: function(o) { return "function BOMBA!"; }};
15
+ export const isFunction = function (f) {
16
+ return typeof f === 'function';
17
+ };
18
+ // Underscore Addons
19
+ export const isObject = function (x) {
20
+ return x === Object(x) && !isArray(x);
21
+ };
22
+ export const isEmptyObject = function (x) {
23
+ if (isObject(x)) {
24
+ for (const key in x) {
25
+ if (hasOwnProperty.call(x, key)) {
26
+ return false;
27
+ }
28
+ }
29
+ return true;
30
+ }
31
+ return false;
32
+ };
33
+ export const isUndefined = function (x) {
34
+ return x === void 0;
35
+ };
36
+ export const isString = function (x) {
37
+ return toString.call(x) == '[object String]';
38
+ };
39
+ export const isEmptyString = function (x) {
40
+ var _a;
41
+ return isString(x) && ((_a = x.trim()) === null || _a === void 0 ? void 0 : _a.length) === 0;
42
+ };
43
+ export const isNull = function (x) {
44
+ return x === null;
45
+ };
46
+ /*
47
+ sometimes you want to check if something is null or undefined
48
+ that's what this is for
49
+ */
50
+ export const isNullish = function (x) {
51
+ return isUndefined(x) || isNull(x);
52
+ };
53
+ export const isDate = function (x) {
54
+ return toString.call(x) == '[object Date]';
55
+ };
56
+ export const isNumber = function (x) {
57
+ return toString.call(x) == '[object Number]';
58
+ };
59
+ export const isBoolean = function (x) {
60
+ return toString.call(x) === '[object Boolean]';
61
+ };
62
+ export const isDocument = (x) => {
63
+ return x instanceof Document;
64
+ };
65
+ export const isFormData = (x) => {
66
+ return x instanceof FormData;
67
+ };
68
+ export const isFile = (x) => {
69
+ return x instanceof File;
70
+ };
71
+ //# sourceMappingURL=type-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-utils.js","sourceRoot":"","sources":["../../src/utils/type-utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@multiplayer-app/session-recorder-browser",
3
- "version": "1.2.22",
3
+ "version": "1.2.24",
4
4
  "description": "Multiplayer Fullstack Session Recorder for Browser",
5
5
  "author": {
6
6
  "name": "Multiplayer Software, Inc.",
@@ -17,6 +17,11 @@
17
17
  "main": "dist/index.js",
18
18
  "module": "dist/index.js",
19
19
  "types": "dist/index.d.ts",
20
+ "files": [
21
+ "dist/**",
22
+ "README.md",
23
+ "LICENSE"
24
+ ],
20
25
  "exports": {
21
26
  ".": {
22
27
  "import": "./dist/index.js",
@@ -44,7 +49,7 @@
44
49
  "lint": "eslint src/**/*.ts",
45
50
  "preversion": "npm run lint",
46
51
  "postversion:skip": "git push && git push --tags",
47
- "build": "rm -rf dist tsconfig.tsbuildinfo && webpack",
52
+ "build": "rm -rf dist tsconfig.tsbuildinfo && tsc && webpack",
48
53
  "prepublishOnly": "npm run build"
49
54
  },
50
55
  "devDependencies": {
@@ -65,7 +70,7 @@
65
70
  "webpack-cli": "5.1.4"
66
71
  },
67
72
  "dependencies": {
68
- "@multiplayer-app/session-recorder-common": "1.2.20",
73
+ "@multiplayer-app/session-recorder-common": "1.2.24",
69
74
  "@opentelemetry/auto-instrumentations-web": "0.49.0",
70
75
  "@opentelemetry/context-zone": "2.0.1",
71
76
  "@opentelemetry/core": "2.0.1",
@@ -1 +0,0 @@
1
- {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../src/exports.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,8BAA8B,EAC9B,yCAAyC,EACzC,+CAA+C,EAC/C,4CAA4C,EAC5C,0CAA0C,EAC1C,iDAAiD,EACjD,+CAA+C,EAC/C,iDAAiD,EACjD,+CAA+C,EAC/C,wBAAwB,EACxB,4BAA4B,EAC5B,6BAA6B,EAC7B,2BAA2B,EAC3B,4BAA4B,EAC5B,6CAA6C,EAC7C,oDAAoD,EACpD,8BAA8B,EAC9B,0BAA0B,EAC1B,+BAA+B,EAC/B,2BAA2B,EAC3B,2BAA2B,EAC3B,gCAAgC,EAChC,kCAAkC,EAClC,mCAAmC,EACnC,qCAAqC,EACrC,sCAAsC,EACtC,4CAA4C,EAC5C,oCAAoC,EACpC,6CAA6C,EAC7C,qCAAqC,EACrC,qCAAqC,EACrC,8CAA8C,EAC9C,sCAAsC,EACtC,uCAAuC,EACvC,gDAAgD,EAChD,yCAAyC,EACzC,kCAAkC,EAClC,gBAAgB,EAChB,0CAA0C,EAC1C,kBAAkB,EAClB,WAAW,EACZ,MAAM,0CAA0C,CAAA"}
Binary file