@cloudcare/browser-core 3.1.18 → 3.1.20
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.
- package/cjs/browser/fetchObservable.js +62 -32
- package/cjs/browser/fetchObservable.js.map +1 -1
- package/cjs/browser/xhrObservable.js +31 -39
- package/cjs/browser/xhrObservable.js.map +1 -1
- package/cjs/dataMap.js +1 -0
- package/cjs/dataMap.js.map +1 -1
- package/cjs/helper/deviceInfo.js +1 -2
- package/cjs/helper/deviceInfo.js.map +1 -1
- package/cjs/helper/enums.js +6 -1
- package/cjs/helper/enums.js.map +1 -1
- package/cjs/helper/instrumentMethod.js +47 -44
- package/cjs/helper/instrumentMethod.js.map +1 -1
- package/cjs/helper/tools.js +15 -0
- package/cjs/helper/tools.js.map +1 -1
- package/cjs/helper/valueHistory.js +123 -0
- package/cjs/helper/valueHistory.js.map +1 -0
- package/cjs/index.js +4 -4
- package/cjs/index.js.map +1 -1
- package/cjs/session/sessionManagement.js +4 -2
- package/cjs/session/sessionManagement.js.map +1 -1
- package/cjs/tracekit/tracekit.js +29 -25
- package/cjs/tracekit/tracekit.js.map +1 -1
- package/esm/browser/fetchObservable.js +63 -34
- package/esm/browser/fetchObservable.js.map +1 -1
- package/esm/browser/xhrObservable.js +33 -41
- package/esm/browser/xhrObservable.js.map +1 -1
- package/esm/dataMap.js +1 -0
- package/esm/dataMap.js.map +1 -1
- package/esm/helper/deviceInfo.js +1 -2
- package/esm/helper/deviceInfo.js.map +1 -1
- package/esm/helper/enums.js +4 -0
- package/esm/helper/enums.js.map +1 -1
- package/esm/helper/instrumentMethod.js +48 -44
- package/esm/helper/instrumentMethod.js.map +1 -1
- package/esm/helper/tools.js +13 -0
- package/esm/helper/tools.js.map +1 -1
- package/esm/helper/valueHistory.js +115 -0
- package/esm/helper/valueHistory.js.map +1 -0
- package/esm/index.js +1 -1
- package/esm/index.js.map +1 -1
- package/esm/session/sessionManagement.js +4 -2
- package/esm/session/sessionManagement.js.map +1 -1
- package/esm/tracekit/tracekit.js +30 -26
- package/esm/tracekit/tracekit.js.map +1 -1
- package/package.json +2 -2
- package/src/browser/fetchObservable.js +71 -50
- package/src/browser/xhrObservable.js +39 -54
- package/src/dataMap.js +1 -0
- package/src/helper/deviceInfo.js +1 -2
- package/src/helper/enums.js +4 -1
- package/src/helper/instrumentMethod.js +61 -44
- package/src/helper/tools.js +13 -0
- package/src/helper/valueHistory.js +116 -0
- package/src/index.js +1 -1
- package/src/session/sessionManagement.js +4 -2
- package/src/tracekit/tracekit.js +29 -25
- package/cjs/helper/contextHistory.js +0 -117
- package/cjs/helper/contextHistory.js.map +0 -1
- package/esm/helper/contextHistory.js +0 -109
- package/esm/helper/contextHistory.js.map +0 -1
- package/src/helper/contextHistory.js +0 -101
|
@@ -1,62 +1,67 @@
|
|
|
1
|
-
import { noop } from './tools';
|
|
1
|
+
import { noop, arrayFrom, startsWith } from './tools';
|
|
2
2
|
import { setTimeout } from './timer';
|
|
3
3
|
import { callMonitored } from './monitor';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
var
|
|
7
|
-
var
|
|
8
|
-
|
|
9
|
-
|
|
4
|
+
import { createHandlingStack } from './errorTools';
|
|
5
|
+
export function instrumentMethod(targetPrototype, method, onPreCall, opts) {
|
|
6
|
+
var computeHandlingStack = opts && opts.computeHandlingStack;
|
|
7
|
+
var original = targetPrototype[method];
|
|
8
|
+
if (typeof original !== 'function') {
|
|
9
|
+
if (startsWith(method, 'on')) {
|
|
10
|
+
original = noop;
|
|
11
|
+
} else {
|
|
12
|
+
return {
|
|
13
|
+
stop: noop
|
|
14
|
+
};
|
|
10
15
|
}
|
|
16
|
+
}
|
|
17
|
+
var stopped = false;
|
|
18
|
+
var instrumentation = function instrumentation() {
|
|
19
|
+
if (stopped) {
|
|
20
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call
|
|
21
|
+
return original.apply(this, arguments);
|
|
22
|
+
}
|
|
23
|
+
var parameters = arrayFrom(arguments);
|
|
24
|
+
var postCallCallback;
|
|
25
|
+
callMonitored(onPreCall, null, [{
|
|
26
|
+
target: this,
|
|
27
|
+
parameters: parameters,
|
|
28
|
+
onPostCall: function onPostCall(callback) {
|
|
29
|
+
postCallCallback = callback;
|
|
30
|
+
},
|
|
31
|
+
handlingStack: computeHandlingStack ? createHandlingStack() : undefined
|
|
32
|
+
}]);
|
|
33
|
+
var result = original.apply(this, parameters);
|
|
34
|
+
if (postCallCallback) {
|
|
35
|
+
callMonitored(postCallCallback, null, [result]);
|
|
36
|
+
}
|
|
37
|
+
|
|
11
38
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
12
|
-
return
|
|
39
|
+
return result;
|
|
13
40
|
};
|
|
14
|
-
|
|
41
|
+
targetPrototype[method] = instrumentation;
|
|
15
42
|
return {
|
|
16
43
|
stop: function stop() {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
44
|
+
stopped = true;
|
|
45
|
+
// If the instrumentation has been removed by a third party, keep the last one
|
|
46
|
+
if (targetPrototype[method] === instrumentation) {
|
|
47
|
+
targetPrototype[method] = original;
|
|
21
48
|
}
|
|
22
49
|
}
|
|
23
50
|
};
|
|
24
51
|
}
|
|
25
|
-
export function
|
|
26
|
-
|
|
27
|
-
return function () {
|
|
28
|
-
var result;
|
|
29
|
-
if (aliasOption && aliasOption.before) {
|
|
30
|
-
callMonitored(aliasOption.before, this, arguments);
|
|
31
|
-
// aliasOption.before.apply(this, arguments)
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
if (typeof original === 'function') {
|
|
35
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
|
36
|
-
result = original.apply(this, arguments);
|
|
37
|
-
}
|
|
38
|
-
if (aliasOption && aliasOption.after) {
|
|
39
|
-
callMonitored(aliasOption.after, this, arguments);
|
|
40
|
-
// aliasOption.after.apply(this, arguments)
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
return result;
|
|
44
|
-
};
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
export function instrumentSetter(object, property, after) {
|
|
48
|
-
var originalDescriptor = Object.getOwnPropertyDescriptor(object, property);
|
|
52
|
+
export function instrumentSetter(targetPrototype, property, after) {
|
|
53
|
+
var originalDescriptor = Object.getOwnPropertyDescriptor(targetPrototype, property);
|
|
49
54
|
if (!originalDescriptor || !originalDescriptor.set || !originalDescriptor.configurable) {
|
|
50
55
|
return {
|
|
51
56
|
stop: noop
|
|
52
57
|
};
|
|
53
58
|
}
|
|
54
59
|
var stoppedInstrumentation = noop;
|
|
55
|
-
var _instrumentation = function instrumentation(
|
|
60
|
+
var _instrumentation = function instrumentation(target, value) {
|
|
56
61
|
// put hooked setter into event loop to avoid of set latency
|
|
57
62
|
setTimeout(function () {
|
|
58
63
|
if (_instrumentation !== stoppedInstrumentation) {
|
|
59
|
-
after(
|
|
64
|
+
after(target, value);
|
|
60
65
|
}
|
|
61
66
|
}, 0);
|
|
62
67
|
};
|
|
@@ -64,16 +69,15 @@ export function instrumentSetter(object, property, after) {
|
|
|
64
69
|
originalDescriptor.set.call(this, value);
|
|
65
70
|
_instrumentation(this, value);
|
|
66
71
|
};
|
|
67
|
-
Object.defineProperty(
|
|
72
|
+
Object.defineProperty(targetPrototype, property, {
|
|
68
73
|
set: instrumentationWrapper
|
|
69
74
|
});
|
|
70
75
|
return {
|
|
71
76
|
stop: function stop() {
|
|
72
|
-
if (Object.getOwnPropertyDescriptor(
|
|
73
|
-
Object.defineProperty(
|
|
74
|
-
} else {
|
|
75
|
-
_instrumentation = stoppedInstrumentation;
|
|
77
|
+
if (Object.getOwnPropertyDescriptor(targetPrototype, property) && Object.getOwnPropertyDescriptor(targetPrototype, property).set === instrumentationWrapper) {
|
|
78
|
+
Object.defineProperty(targetPrototype, property, originalDescriptor);
|
|
76
79
|
}
|
|
80
|
+
_instrumentation = stoppedInstrumentation;
|
|
77
81
|
}
|
|
78
82
|
};
|
|
79
83
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instrumentMethod.js","names":["noop","setTimeout","callMonitored","instrumentMethod","
|
|
1
|
+
{"version":3,"file":"instrumentMethod.js","names":["noop","arrayFrom","startsWith","setTimeout","callMonitored","createHandlingStack","instrumentMethod","targetPrototype","method","onPreCall","opts","computeHandlingStack","original","stop","stopped","instrumentation","apply","arguments","parameters","postCallCallback","target","onPostCall","callback","handlingStack","undefined","result","instrumentSetter","property","after","originalDescriptor","Object","getOwnPropertyDescriptor","set","configurable","stoppedInstrumentation","value","instrumentationWrapper","call","defineProperty"],"sources":["../../src/helper/instrumentMethod.js"],"sourcesContent":["import { noop, arrayFrom, startsWith } from './tools'\nimport { setTimeout } from './timer'\nimport { callMonitored } from './monitor'\nimport { createHandlingStack } from './errorTools'\nexport function instrumentMethod(targetPrototype, method, onPreCall, opts) {\n var computeHandlingStack = opts && opts.computeHandlingStack\n var original = targetPrototype[method]\n\n if (typeof original !== 'function') {\n if (startsWith(method, 'on')) {\n original = noop\n } else {\n return { stop: noop }\n }\n }\n\n var stopped = false\n\n var instrumentation = function () {\n if (stopped) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call\n return original.apply(this, arguments)\n }\n\n var parameters = arrayFrom(arguments)\n\n var postCallCallback\n\n callMonitored(onPreCall, null, [\n {\n target: this,\n parameters: parameters,\n onPostCall: function (callback) {\n postCallCallback = callback\n },\n handlingStack: computeHandlingStack ? createHandlingStack() : undefined\n }\n ])\n\n var result = original.apply(this, parameters)\n\n if (postCallCallback) {\n callMonitored(postCallCallback, null, [result])\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return result\n }\n\n targetPrototype[method] = instrumentation\n\n return {\n stop: function () {\n stopped = true\n // If the instrumentation has been removed by a third party, keep the last one\n if (targetPrototype[method] === instrumentation) {\n targetPrototype[method] = original\n }\n }\n }\n}\n\nexport function instrumentSetter(targetPrototype, property, after) {\n var originalDescriptor = Object.getOwnPropertyDescriptor(\n targetPrototype,\n property\n )\n if (\n !originalDescriptor ||\n !originalDescriptor.set ||\n !originalDescriptor.configurable\n ) {\n return { stop: noop }\n }\n\n var stoppedInstrumentation = noop\n var instrumentation = function (target, value) {\n // put hooked setter into event loop to avoid of set latency\n setTimeout(function () {\n if (instrumentation !== stoppedInstrumentation) {\n after(target, value)\n }\n }, 0)\n }\n\n var instrumentationWrapper = function (value) {\n originalDescriptor.set.call(this, value)\n instrumentation(this, value)\n }\n\n Object.defineProperty(targetPrototype, property, {\n set: instrumentationWrapper\n })\n\n return {\n stop: function () {\n if (\n Object.getOwnPropertyDescriptor(targetPrototype, property) &&\n Object.getOwnPropertyDescriptor(targetPrototype, property).set ===\n instrumentationWrapper\n ) {\n Object.defineProperty(targetPrototype, property, originalDescriptor)\n }\n instrumentation = stoppedInstrumentation\n }\n }\n}\n"],"mappings":"AAAA,SAASA,IAAI,EAAEC,SAAS,EAAEC,UAAU,QAAQ,SAAS;AACrD,SAASC,UAAU,QAAQ,SAAS;AACpC,SAASC,aAAa,QAAQ,WAAW;AACzC,SAASC,mBAAmB,QAAQ,cAAc;AAClD,OAAO,SAASC,gBAAgBA,CAACC,eAAe,EAAEC,MAAM,EAAEC,SAAS,EAAEC,IAAI,EAAE;EACzE,IAAIC,oBAAoB,GAAGD,IAAI,IAAIA,IAAI,CAACC,oBAAoB;EAC5D,IAAIC,QAAQ,GAAGL,eAAe,CAACC,MAAM,CAAC;EAEtC,IAAI,OAAOI,QAAQ,KAAK,UAAU,EAAE;IAClC,IAAIV,UAAU,CAACM,MAAM,EAAE,IAAI,CAAC,EAAE;MAC5BI,QAAQ,GAAGZ,IAAI;IACjB,CAAC,MAAM;MACL,OAAO;QAAEa,IAAI,EAAEb;MAAK,CAAC;IACvB;EACF;EAEA,IAAIc,OAAO,GAAG,KAAK;EAEnB,IAAIC,eAAe,GAAG,SAAlBA,eAAeA,CAAA,EAAe;IAChC,IAAID,OAAO,EAAE;MACX;MACA,OAAOF,QAAQ,CAACI,KAAK,CAAC,IAAI,EAAEC,SAAS,CAAC;IACxC;IAEA,IAAIC,UAAU,GAAGjB,SAAS,CAACgB,SAAS,CAAC;IAErC,IAAIE,gBAAgB;IAEpBf,aAAa,CAACK,SAAS,EAAE,IAAI,EAAE,CAC7B;MACEW,MAAM,EAAE,IAAI;MACZF,UAAU,EAAEA,UAAU;MACtBG,UAAU,EAAE,SAAAA,WAAUC,QAAQ,EAAE;QAC9BH,gBAAgB,GAAGG,QAAQ;MAC7B,CAAC;MACDC,aAAa,EAAEZ,oBAAoB,GAAGN,mBAAmB,CAAC,CAAC,GAAGmB;IAChE,CAAC,CACF,CAAC;IAEF,IAAIC,MAAM,GAAGb,QAAQ,CAACI,KAAK,CAAC,IAAI,EAAEE,UAAU,CAAC;IAE7C,IAAIC,gBAAgB,EAAE;MACpBf,aAAa,CAACe,gBAAgB,EAAE,IAAI,EAAE,CAACM,MAAM,CAAC,CAAC;IACjD;;IAEA;IACA,OAAOA,MAAM;EACf,CAAC;EAEDlB,eAAe,CAACC,MAAM,CAAC,GAAGO,eAAe;EAEzC,OAAO;IACLF,IAAI,EAAE,SAAAA,KAAA,EAAY;MAChBC,OAAO,GAAG,IAAI;MACd;MACA,IAAIP,eAAe,CAACC,MAAM,CAAC,KAAKO,eAAe,EAAE;QAC/CR,eAAe,CAACC,MAAM,CAAC,GAAGI,QAAQ;MACpC;IACF;EACF,CAAC;AACH;AAEA,OAAO,SAASc,gBAAgBA,CAACnB,eAAe,EAAEoB,QAAQ,EAAEC,KAAK,EAAE;EACjE,IAAIC,kBAAkB,GAAGC,MAAM,CAACC,wBAAwB,CACtDxB,eAAe,EACfoB,QACF,CAAC;EACD,IACE,CAACE,kBAAkB,IACnB,CAACA,kBAAkB,CAACG,GAAG,IACvB,CAACH,kBAAkB,CAACI,YAAY,EAChC;IACA,OAAO;MAAEpB,IAAI,EAAEb;IAAK,CAAC;EACvB;EAEA,IAAIkC,sBAAsB,GAAGlC,IAAI;EACjC,IAAIe,gBAAe,GAAG,SAAAA,gBAAUK,MAAM,EAAEe,KAAK,EAAE;IAC7C;IACAhC,UAAU,CAAC,YAAY;MACrB,IAAIY,gBAAe,KAAKmB,sBAAsB,EAAE;QAC9CN,KAAK,CAACR,MAAM,EAAEe,KAAK,CAAC;MACtB;IACF,CAAC,EAAE,CAAC,CAAC;EACP,CAAC;EAED,IAAIC,sBAAsB,GAAG,SAAzBA,sBAAsBA,CAAaD,KAAK,EAAE;IAC5CN,kBAAkB,CAACG,GAAG,CAACK,IAAI,CAAC,IAAI,EAAEF,KAAK,CAAC;IACxCpB,gBAAe,CAAC,IAAI,EAAEoB,KAAK,CAAC;EAC9B,CAAC;EAEDL,MAAM,CAACQ,cAAc,CAAC/B,eAAe,EAAEoB,QAAQ,EAAE;IAC/CK,GAAG,EAAEI;EACP,CAAC,CAAC;EAEF,OAAO;IACLvB,IAAI,EAAE,SAAAA,KAAA,EAAY;MAChB,IACEiB,MAAM,CAACC,wBAAwB,CAACxB,eAAe,EAAEoB,QAAQ,CAAC,IAC1DG,MAAM,CAACC,wBAAwB,CAACxB,eAAe,EAAEoB,QAAQ,CAAC,CAACK,GAAG,KAC5DI,sBAAsB,EACxB;QACAN,MAAM,CAACQ,cAAc,CAAC/B,eAAe,EAAEoB,QAAQ,EAAEE,kBAAkB,CAAC;MACtE;MACAd,gBAAe,GAAGmB,sBAAsB;IAC1C;EACF,CAAC;AACH","ignoreList":[]}
|
package/esm/helper/tools.js
CHANGED
|
@@ -1536,6 +1536,19 @@ export function startsWith(candidate, search) {
|
|
|
1536
1536
|
export function endsWith(candidate, search) {
|
|
1537
1537
|
return candidate.slice(-search.length) === search;
|
|
1538
1538
|
}
|
|
1539
|
+
export function removeDuplicates(array) {
|
|
1540
|
+
var set = new Set();
|
|
1541
|
+
array.forEach(function (item) {
|
|
1542
|
+
set.add(item);
|
|
1543
|
+
});
|
|
1544
|
+
return arrayFrom(set);
|
|
1545
|
+
}
|
|
1546
|
+
export function removeItem(array, item) {
|
|
1547
|
+
var index = array.indexOf(item);
|
|
1548
|
+
if (index >= 0) {
|
|
1549
|
+
array.splice(index, 1);
|
|
1550
|
+
}
|
|
1551
|
+
}
|
|
1539
1552
|
export function tryToClone(response) {
|
|
1540
1553
|
try {
|
|
1541
1554
|
return response.clone();
|