@highlight-run/rrweb 2.0.1 → 2.0.6

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 (118) hide show
  1. package/dist/plugins/console-record.js +12 -655
  2. package/dist/plugins/console-record.min.js +12 -15
  3. package/dist/plugins/console-record.min.js.map +1 -1
  4. package/dist/plugins/console-replay.js +4 -293
  5. package/dist/plugins/console-replay.min.js +4 -15
  6. package/dist/plugins/console-replay.min.js.map +1 -1
  7. package/dist/plugins/sequential-id-record.js +1 -33
  8. package/dist/plugins/sequential-id-record.min.js +1 -1
  9. package/dist/plugins/sequential-id-record.min.js.map +1 -1
  10. package/dist/plugins/sequential-id-replay.js +1 -37
  11. package/dist/plugins/sequential-id-replay.min.js +1 -1
  12. package/dist/plugins/sequential-id-replay.min.js.map +1 -1
  13. package/dist/record/rrweb-record-pack.js +3 -747
  14. package/dist/record/rrweb-record-pack.min.js +3 -15
  15. package/dist/record/rrweb-record-pack.min.js.map +1 -1
  16. package/dist/record/rrweb-record.js +4 -3318
  17. package/dist/record/rrweb-record.min.js +4 -15
  18. package/dist/record/rrweb-record.min.js.map +1 -1
  19. package/dist/replay/rrweb-replay-unpack.css +1 -0
  20. package/dist/replay/rrweb-replay-unpack.js +5 -4614
  21. package/dist/replay/rrweb-replay-unpack.min.js +5 -17
  22. package/dist/replay/rrweb-replay-unpack.min.js.map +1 -1
  23. package/dist/replay/rrweb-replay.css +1 -0
  24. package/dist/replay/rrweb-replay.js +5 -4204
  25. package/dist/replay/rrweb-replay.min.js +5 -17
  26. package/dist/replay/rrweb-replay.min.js.map +1 -1
  27. package/dist/rrweb-all.css +1 -0
  28. package/dist/rrweb-all.js +16 -8696
  29. package/dist/rrweb-all.min.js +16 -17
  30. package/dist/rrweb-all.min.js.map +1 -1
  31. package/dist/rrweb.css +1 -0
  32. package/dist/rrweb.js +6 -7282
  33. package/dist/rrweb.min.js +6 -17
  34. package/dist/rrweb.min.js.map +1 -1
  35. package/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__auto__createBase64WorkerFactory.js +12 -0
  36. package/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__auto__isNodeJS.js +7 -0
  37. package/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__browser__createBase64WorkerFactory.js +31 -0
  38. package/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__node__WorkerClass.js +11 -0
  39. package/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__node__createBase64WorkerFactory.js +18 -0
  40. package/es/rrweb/_virtual/image-bitmap-data-url-worker.js +6 -0
  41. package/es/rrweb/all.css +1 -0
  42. package/es/rrweb/ext/mitt/dist/mitt.es.js +1 -1
  43. package/es/rrweb/ext/tslib/tslib.es6.js +38 -0
  44. package/es/rrweb/packages/rrdom/es/virtual-dom.js +1099 -0
  45. package/es/rrweb/packages/rrweb/src/index.js +6 -4
  46. package/es/rrweb/packages/rrweb/src/packer/base.js +1 -1
  47. package/es/rrweb/packages/rrweb/src/packer/pack.js +4 -5
  48. package/es/rrweb/packages/rrweb/src/packer/unpack.js +24 -24
  49. package/es/rrweb/packages/rrweb/src/plugins/console/record/error-stack-parser.js +175 -176
  50. package/es/rrweb/packages/rrweb/src/plugins/console/record/index.js +109 -128
  51. package/es/rrweb/packages/rrweb/src/plugins/console/record/stringify.js +125 -138
  52. package/es/rrweb/packages/rrweb/src/plugins/console/replay/index.js +88 -105
  53. package/es/rrweb/packages/rrweb/src/plugins/sequential-id/record/index.js +19 -20
  54. package/es/rrweb/packages/rrweb/src/plugins/sequential-id/replay/index.js +25 -25
  55. package/es/rrweb/packages/rrweb/src/record/iframe-manager.js +29 -30
  56. package/es/rrweb/packages/rrweb/src/record/index.js +348 -373
  57. package/es/rrweb/packages/rrweb/src/record/mutation.js +487 -528
  58. package/es/rrweb/packages/rrweb/src/record/observer.js +584 -659
  59. package/es/rrweb/packages/rrweb/src/record/observers/canvas/2d.js +44 -73
  60. package/es/rrweb/packages/rrweb/src/record/observers/canvas/canvas-manager.js +166 -87
  61. package/es/rrweb/packages/rrweb/src/record/observers/canvas/canvas.js +21 -26
  62. package/es/rrweb/packages/rrweb/src/record/observers/canvas/serialize-args.js +119 -112
  63. package/es/rrweb/packages/rrweb/src/record/observers/canvas/webgl.js +53 -72
  64. package/es/rrweb/packages/rrweb/src/record/shadow-dom-manager.js +38 -40
  65. package/es/rrweb/packages/rrweb/src/record/stylesheet-manager.js +31 -0
  66. package/es/rrweb/packages/rrweb/src/replay/canvas/2d.js +27 -23
  67. package/es/rrweb/packages/rrweb/src/replay/canvas/deserialize-args.js +67 -0
  68. package/es/rrweb/packages/rrweb/src/replay/canvas/index.js +37 -29
  69. package/es/rrweb/packages/rrweb/src/replay/canvas/webgl.js +58 -120
  70. package/es/rrweb/packages/rrweb/src/replay/index.js +1545 -1854
  71. package/es/rrweb/packages/rrweb/src/replay/machine.js +275 -315
  72. package/es/rrweb/packages/rrweb/src/replay/smoothscroll.js +216 -218
  73. package/es/rrweb/packages/rrweb/src/replay/styles/inject-style.js +7 -7
  74. package/es/rrweb/packages/rrweb/src/replay/timer.js +87 -91
  75. package/es/rrweb/packages/rrweb/src/types.js +72 -72
  76. package/es/rrweb/packages/rrweb/src/utils.js +312 -506
  77. package/es/rrweb/packages/rrweb-snapshot/es/rrweb-snapshot.js +190 -72
  78. package/lib/plugins/console-record.js +469 -627
  79. package/lib/plugins/console-replay.js +198 -268
  80. package/lib/plugins/sequential-id-record.js +19 -20
  81. package/lib/plugins/sequential-id-replay.js +25 -25
  82. package/lib/record/rrweb-record-pack.js +184 -139
  83. package/lib/record/rrweb-record.js +2467 -2425
  84. package/lib/replay/rrweb-replay-unpack.css +1 -0
  85. package/lib/replay/rrweb-replay-unpack.js +3798 -3344
  86. package/lib/replay/rrweb-replay.css +1 -0
  87. package/lib/replay/rrweb-replay.js +3743 -3289
  88. package/lib/rrweb-all.css +1 -0
  89. package/lib/rrweb-all.js +6721 -6249
  90. package/lib/rrweb.css +1 -0
  91. package/lib/rrweb.js +6151 -5632
  92. package/package.json +14 -13
  93. package/typings/packer/base.d.ts +1 -1
  94. package/typings/plugins/console/record/index.d.ts +1 -1
  95. package/typings/plugins/console/record/stringify.d.ts +1 -1
  96. package/typings/plugins/sequential-id/record/index.d.ts +1 -1
  97. package/typings/plugins/sequential-id/replay/index.d.ts +1 -1
  98. package/typings/record/iframe-manager.d.ts +3 -3
  99. package/typings/record/index.d.ts +1 -1
  100. package/typings/record/mutation.d.ts +2 -1
  101. package/typings/record/observers/canvas/2d.d.ts +2 -1
  102. package/typings/record/observers/canvas/canvas-manager.d.ts +5 -2
  103. package/typings/record/observers/canvas/canvas.d.ts +1 -1
  104. package/typings/record/observers/canvas/serialize-args.d.ts +5 -5
  105. package/typings/record/observers/canvas/webgl.d.ts +2 -1
  106. package/typings/record/shadow-dom-manager.d.ts +2 -1
  107. package/typings/record/stylesheet-manager.d.ts +12 -0
  108. package/typings/record/workers/image-bitmap-data-url-worker.d.ts +5 -0
  109. package/typings/replay/canvas/2d.d.ts +3 -3
  110. package/typings/replay/canvas/deserialize-args.d.ts +7 -0
  111. package/typings/replay/canvas/index.d.ts +4 -3
  112. package/typings/replay/canvas/webgl.d.ts +3 -5
  113. package/typings/replay/index.d.ts +7 -10
  114. package/typings/types.d.ts +45 -17
  115. package/typings/utils.d.ts +17 -44
  116. package/es/rrweb/packages/rrweb/ext/tslib/tslib.es6.js +0 -78
  117. package/es/rrweb/packages/rrweb/src/replay/virtual-styles.js +0 -121
  118. package/typings/replay/virtual-styles.d.ts +0 -43
@@ -1,134 +1,115 @@
1
- import { __values, __spreadArray, __read } from '../../../../ext/tslib/tslib.es6.js';
2
1
  import { patch } from '../../../utils.js';
3
2
  import { ErrorStackParser } from './error-stack-parser.js';
4
3
  import { stringify } from './stringify.js';
5
4
 
6
- var defaultLogOptions = {
7
- level: [
8
- 'assert',
9
- 'clear',
10
- 'count',
11
- 'countReset',
12
- 'debug',
13
- 'dir',
14
- 'dirxml',
15
- 'error',
16
- 'group',
17
- 'groupCollapsed',
18
- 'groupEnd',
19
- 'info',
20
- 'log',
21
- 'table',
22
- 'time',
23
- 'timeEnd',
24
- 'timeLog',
25
- 'trace',
26
- 'warn',
27
- ],
28
- lengthThreshold: 1000,
29
- logger: 'console',
30
- };
31
- function initLogObserver(cb, win, logOptions) {
32
- var e_1, _a;
33
- var loggerType = logOptions.logger;
34
- if (!loggerType) {
35
- return function () { };
36
- }
37
- var logger;
38
- if (typeof loggerType === 'string') {
39
- logger = win[loggerType];
40
- }
41
- else {
42
- logger = loggerType;
43
- }
44
- var logCount = 0;
45
- var cancelHandlers = [];
46
- if (logOptions.level.includes('error')) {
47
- if (window) {
48
- var errorHandler_1 = function (event) {
49
- var message = event.message, error = event.error;
50
- var trace = ErrorStackParser.parse(error).map(function (stackFrame) { return stackFrame.toString(); });
51
- var payload = [stringify(message, logOptions.stringifyOptions)];
52
- cb({
53
- level: 'error',
54
- trace: trace,
55
- payload: payload,
56
- });
57
- };
58
- window.addEventListener('error', errorHandler_1);
59
- cancelHandlers.push(function () {
60
- if (window)
61
- window.removeEventListener('error', errorHandler_1);
62
- });
63
- }
64
- }
65
- try {
66
- for (var _b = __values(logOptions.level), _c = _b.next(); !_c.done; _c = _b.next()) {
67
- var levelType = _c.value;
68
- cancelHandlers.push(replace(logger, levelType));
69
- }
70
- }
71
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
72
- finally {
73
- try {
74
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
75
- }
76
- finally { if (e_1) throw e_1.error; }
77
- }
78
- return function () {
79
- cancelHandlers.forEach(function (h) { return h(); });
80
- };
81
- function replace(_logger, level) {
82
- var _this = this;
83
- if (!_logger[level]) {
84
- return function () { };
85
- }
86
- return patch(_logger, level, function (original) {
87
- return function () {
88
- var args = [];
89
- for (var _i = 0; _i < arguments.length; _i++) {
90
- args[_i] = arguments[_i];
91
- }
92
- original.apply(_this, args);
93
- try {
94
- var trace = ErrorStackParser.parse(new Error())
95
- .map(function (stackFrame) { return stackFrame.toString(); })
96
- .splice(1);
97
- var payload = args.map(function (s) {
98
- return stringify(s, logOptions.stringifyOptions);
99
- });
100
- logCount++;
101
- if (logCount < logOptions.lengthThreshold) {
102
- cb({
103
- level: level,
104
- trace: trace,
105
- payload: payload,
106
- });
107
- }
108
- else if (logCount === logOptions.lengthThreshold) {
109
- cb({
110
- level: 'warn',
111
- trace: [],
112
- payload: [
113
- stringify('The number of log records reached the threshold.'),
114
- ],
115
- });
116
- }
117
- }
118
- catch (error) {
119
- original.apply(void 0, __spreadArray(['rrweb logger error:', error], __read(args), false));
120
- }
121
- };
122
- });
123
- }
124
- }
125
- var PLUGIN_NAME = 'rrweb/console@1';
126
- var getRecordConsolePlugin = function (options) { return ({
127
- name: PLUGIN_NAME,
128
- observer: initLogObserver,
129
- options: options
130
- ? Object.assign({}, defaultLogOptions, options)
131
- : defaultLogOptions,
132
- }); };
5
+ const defaultLogOptions = {
6
+ level: [
7
+ 'assert',
8
+ 'clear',
9
+ 'count',
10
+ 'countReset',
11
+ 'debug',
12
+ 'dir',
13
+ 'dirxml',
14
+ 'error',
15
+ 'group',
16
+ 'groupCollapsed',
17
+ 'groupEnd',
18
+ 'info',
19
+ 'log',
20
+ 'table',
21
+ 'time',
22
+ 'timeEnd',
23
+ 'timeLog',
24
+ 'trace',
25
+ 'warn',
26
+ ],
27
+ lengthThreshold: 1000,
28
+ logger: 'console',
29
+ };
30
+ function initLogObserver(cb, win, logOptions) {
31
+ const loggerType = logOptions.logger;
32
+ if (!loggerType) {
33
+ return () => { };
34
+ }
35
+ let logger;
36
+ if (typeof loggerType === 'string') {
37
+ logger = win[loggerType];
38
+ }
39
+ else {
40
+ logger = loggerType;
41
+ }
42
+ let logCount = 0;
43
+ const cancelHandlers = [];
44
+ if (logOptions.level.includes('error')) {
45
+ if (window) {
46
+ const errorHandler = (event) => {
47
+ const { message, error } = event;
48
+ const trace = ErrorStackParser.parse(error).map((stackFrame) => stackFrame.toString());
49
+ const payload = [stringify(message, logOptions.stringifyOptions)];
50
+ cb({
51
+ level: 'error',
52
+ trace,
53
+ payload,
54
+ });
55
+ };
56
+ window.addEventListener('error', errorHandler);
57
+ cancelHandlers.push(() => {
58
+ if (window)
59
+ window.removeEventListener('error', errorHandler);
60
+ });
61
+ }
62
+ }
63
+ for (const levelType of logOptions.level) {
64
+ cancelHandlers.push(replace(logger, levelType));
65
+ }
66
+ return () => {
67
+ cancelHandlers.forEach((h) => h());
68
+ };
69
+ function replace(_logger, level) {
70
+ if (!_logger[level]) {
71
+ return () => { };
72
+ }
73
+ return patch(_logger, level, (original) => {
74
+ return (...args) => {
75
+ original.apply(this, args);
76
+ try {
77
+ const trace = ErrorStackParser.parse(new Error())
78
+ .map((stackFrame) => stackFrame.toString())
79
+ .splice(1);
80
+ const payload = args.map((s) => stringify(s, logOptions.stringifyOptions));
81
+ logCount++;
82
+ if (logCount < logOptions.lengthThreshold) {
83
+ cb({
84
+ level,
85
+ trace,
86
+ payload,
87
+ });
88
+ }
89
+ else if (logCount === logOptions.lengthThreshold) {
90
+ cb({
91
+ level: 'warn',
92
+ trace: [],
93
+ payload: [
94
+ stringify('The number of log records reached the threshold.'),
95
+ ],
96
+ });
97
+ }
98
+ }
99
+ catch (error) {
100
+ original('rrweb logger error:', error, ...args);
101
+ }
102
+ };
103
+ });
104
+ }
105
+ }
106
+ const PLUGIN_NAME = 'rrweb/console@1';
107
+ const getRecordConsolePlugin = (options) => ({
108
+ name: PLUGIN_NAME,
109
+ observer: initLogObserver,
110
+ options: options
111
+ ? Object.assign({}, defaultLogOptions, options)
112
+ : defaultLogOptions,
113
+ });
133
114
 
134
115
  export { PLUGIN_NAME, getRecordConsolePlugin };
@@ -1,141 +1,128 @@
1
- import { __values } from '../../../../ext/tslib/tslib.es6.js';
2
-
3
- function pathToSelector(node) {
4
- if (!node || !node.outerHTML) {
5
- return '';
6
- }
7
- var path = '';
8
- while (node.parentElement) {
9
- var name_1 = node.localName;
10
- if (!name_1) {
11
- break;
12
- }
13
- name_1 = name_1.toLowerCase();
14
- var parent_1 = node.parentElement;
15
- var domSiblings = [];
16
- if (parent_1.children && parent_1.children.length > 0) {
17
- for (var i = 0; i < parent_1.children.length; i++) {
18
- var sibling = parent_1.children[i];
19
- if (sibling.localName && sibling.localName.toLowerCase) {
20
- if (sibling.localName.toLowerCase() === name_1) {
21
- domSiblings.push(sibling);
22
- }
23
- }
24
- }
25
- }
26
- if (domSiblings.length > 1) {
27
- name_1 += ':eq(' + domSiblings.indexOf(node) + ')';
28
- }
29
- path = name_1 + (path ? '>' + path : '');
30
- node = parent_1;
31
- }
32
- return path;
33
- }
34
- function isObject(obj) {
35
- return Object.prototype.toString.call(obj) === '[object Object]';
36
- }
37
- function isObjTooDeep(obj, limit) {
38
- var e_1, _a;
39
- if (limit === 0) {
40
- return true;
41
- }
42
- var keys = Object.keys(obj);
43
- try {
44
- for (var keys_1 = __values(keys), keys_1_1 = keys_1.next(); !keys_1_1.done; keys_1_1 = keys_1.next()) {
45
- var key = keys_1_1.value;
46
- if (isObject(obj[key]) && isObjTooDeep(obj[key], limit - 1)) {
47
- return true;
48
- }
49
- }
50
- }
51
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
52
- finally {
53
- try {
54
- if (keys_1_1 && !keys_1_1.done && (_a = keys_1.return)) _a.call(keys_1);
55
- }
56
- finally { if (e_1) throw e_1.error; }
57
- }
58
- return false;
59
- }
60
- function stringify(obj, stringifyOptions) {
61
- var options = {
62
- numOfKeysLimit: 50,
63
- depthOfLimit: 4,
64
- };
65
- Object.assign(options, stringifyOptions);
66
- var stack = [];
67
- var keys = [];
68
- return JSON.stringify(obj, function (key, value) {
69
- if (stack.length > 0) {
70
- var thisPos = stack.indexOf(this);
71
- ~thisPos ? stack.splice(thisPos + 1) : stack.push(this);
72
- ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key);
73
- if (~stack.indexOf(value)) {
74
- if (stack[0] === value) {
75
- value = '[Circular ~]';
76
- }
77
- else {
78
- value =
79
- '[Circular ~.' +
80
- keys.slice(0, stack.indexOf(value)).join('.') +
81
- ']';
82
- }
83
- }
84
- }
85
- else {
86
- stack.push(value);
87
- }
88
- if (value === null || value === undefined) {
89
- return value;
90
- }
91
- if (shouldIgnore(value)) {
92
- return toString(value);
93
- }
94
- if (value instanceof Event) {
95
- var eventResult = {};
96
- for (var eventKey in value) {
97
- var eventValue = value[eventKey];
98
- if (Array.isArray(eventValue)) {
99
- eventResult[eventKey] = pathToSelector(eventValue.length ? eventValue[0] : null);
100
- }
101
- else {
102
- eventResult[eventKey] = eventValue;
103
- }
104
- }
105
- return eventResult;
106
- }
107
- else if (value instanceof Node) {
108
- if (value instanceof HTMLElement) {
109
- return value ? value.outerHTML : '';
110
- }
111
- return value.nodeName;
112
- }
113
- else if (value instanceof Error) {
114
- return value.stack
115
- ? value.stack + '\nEnd of stack for Error object'
116
- : value.name + ': ' + value.message;
117
- }
118
- return value;
119
- });
120
- function shouldIgnore(_obj) {
121
- if (isObject(_obj) && Object.keys(_obj).length > options.numOfKeysLimit) {
122
- return true;
123
- }
124
- if (typeof _obj === 'function') {
125
- return true;
126
- }
127
- if (isObject(_obj) && isObjTooDeep(_obj, options.depthOfLimit)) {
128
- return true;
129
- }
130
- return false;
131
- }
132
- function toString(_obj) {
133
- var str = _obj.toString();
134
- if (options.stringLengthLimit && str.length > options.stringLengthLimit) {
135
- str = "".concat(str.slice(0, options.stringLengthLimit), "...");
136
- }
137
- return str;
138
- }
1
+ function pathToSelector(node) {
2
+ if (!node || !node.outerHTML) {
3
+ return '';
4
+ }
5
+ let path = '';
6
+ while (node.parentElement) {
7
+ let name = node.localName;
8
+ if (!name) {
9
+ break;
10
+ }
11
+ name = name.toLowerCase();
12
+ const parent = node.parentElement;
13
+ const domSiblings = [];
14
+ if (parent.children && parent.children.length > 0) {
15
+ for (let i = 0; i < parent.children.length; i++) {
16
+ const sibling = parent.children[i];
17
+ if (sibling.localName && sibling.localName.toLowerCase) {
18
+ if (sibling.localName.toLowerCase() === name) {
19
+ domSiblings.push(sibling);
20
+ }
21
+ }
22
+ }
23
+ }
24
+ if (domSiblings.length > 1) {
25
+ name += ':eq(' + domSiblings.indexOf(node) + ')';
26
+ }
27
+ path = name + (path ? '>' + path : '');
28
+ node = parent;
29
+ }
30
+ return path;
31
+ }
32
+ function isObject(obj) {
33
+ return Object.prototype.toString.call(obj) === '[object Object]';
34
+ }
35
+ function isObjTooDeep(obj, limit) {
36
+ if (limit === 0) {
37
+ return true;
38
+ }
39
+ const keys = Object.keys(obj);
40
+ for (const key of keys) {
41
+ if (isObject(obj[key]) && isObjTooDeep(obj[key], limit - 1)) {
42
+ return true;
43
+ }
44
+ }
45
+ return false;
46
+ }
47
+ function stringify(obj, stringifyOptions) {
48
+ const options = {
49
+ numOfKeysLimit: 50,
50
+ depthOfLimit: 4,
51
+ };
52
+ Object.assign(options, stringifyOptions);
53
+ const stack = [];
54
+ const keys = [];
55
+ return JSON.stringify(obj, function (key, value) {
56
+ if (stack.length > 0) {
57
+ const thisPos = stack.indexOf(this);
58
+ ~thisPos ? stack.splice(thisPos + 1) : stack.push(this);
59
+ ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key);
60
+ if (~stack.indexOf(value)) {
61
+ if (stack[0] === value) {
62
+ value = '[Circular ~]';
63
+ }
64
+ else {
65
+ value =
66
+ '[Circular ~.' +
67
+ keys.slice(0, stack.indexOf(value)).join('.') +
68
+ ']';
69
+ }
70
+ }
71
+ }
72
+ else {
73
+ stack.push(value);
74
+ }
75
+ if (value === null || value === undefined) {
76
+ return value;
77
+ }
78
+ if (shouldIgnore(value)) {
79
+ return toString(value);
80
+ }
81
+ if (value instanceof Event) {
82
+ const eventResult = {};
83
+ for (const eventKey in value) {
84
+ const eventValue = value[eventKey];
85
+ if (Array.isArray(eventValue)) {
86
+ eventResult[eventKey] = pathToSelector(eventValue.length ? eventValue[0] : null);
87
+ }
88
+ else {
89
+ eventResult[eventKey] = eventValue;
90
+ }
91
+ }
92
+ return eventResult;
93
+ }
94
+ else if (value instanceof Node) {
95
+ if (value instanceof HTMLElement) {
96
+ return value ? value.outerHTML : '';
97
+ }
98
+ return value.nodeName;
99
+ }
100
+ else if (value instanceof Error) {
101
+ return value.stack
102
+ ? value.stack + '\nEnd of stack for Error object'
103
+ : value.name + ': ' + value.message;
104
+ }
105
+ return value;
106
+ });
107
+ function shouldIgnore(_obj) {
108
+ if (isObject(_obj) && Object.keys(_obj).length > options.numOfKeysLimit) {
109
+ return true;
110
+ }
111
+ if (typeof _obj === 'function') {
112
+ return true;
113
+ }
114
+ if (isObject(_obj) && isObjTooDeep(_obj, options.depthOfLimit)) {
115
+ return true;
116
+ }
117
+ return false;
118
+ }
119
+ function toString(_obj) {
120
+ let str = _obj.toString();
121
+ if (options.stringLengthLimit && str.length > options.stringLengthLimit) {
122
+ str = `${str.slice(0, options.stringLengthLimit)}...`;
123
+ }
124
+ return str;
125
+ }
139
126
  }
140
127
 
141
128
  export { stringify };