@cloudcare/browser-core 3.1.18 → 3.1.22

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 (71) hide show
  1. package/cjs/browser/fetchObservable.js +62 -32
  2. package/cjs/browser/fetchObservable.js.map +1 -1
  3. package/cjs/browser/xhrObservable.js +31 -39
  4. package/cjs/browser/xhrObservable.js.map +1 -1
  5. package/cjs/dataMap.js +1 -0
  6. package/cjs/dataMap.js.map +1 -1
  7. package/cjs/helper/deviceInfo.js +1 -2
  8. package/cjs/helper/deviceInfo.js.map +1 -1
  9. package/cjs/helper/enums.js +6 -1
  10. package/cjs/helper/enums.js.map +1 -1
  11. package/cjs/helper/instrumentMethod.js +47 -44
  12. package/cjs/helper/instrumentMethod.js.map +1 -1
  13. package/cjs/helper/observable.js +2 -2
  14. package/cjs/helper/observable.js.map +1 -1
  15. package/cjs/helper/timer.js +2 -2
  16. package/cjs/helper/timer.js.map +1 -1
  17. package/cjs/helper/tools.js +15 -0
  18. package/cjs/helper/tools.js.map +1 -1
  19. package/cjs/helper/valueHistory.js +123 -0
  20. package/cjs/helper/valueHistory.js.map +1 -0
  21. package/cjs/index.js +4 -4
  22. package/cjs/index.js.map +1 -1
  23. package/cjs/session/sessionManagement.js +4 -2
  24. package/cjs/session/sessionManagement.js.map +1 -1
  25. package/cjs/tracekit/tracekit.js +29 -25
  26. package/cjs/tracekit/tracekit.js.map +1 -1
  27. package/esm/browser/fetchObservable.js +63 -34
  28. package/esm/browser/fetchObservable.js.map +1 -1
  29. package/esm/browser/xhrObservable.js +33 -41
  30. package/esm/browser/xhrObservable.js.map +1 -1
  31. package/esm/dataMap.js +1 -0
  32. package/esm/dataMap.js.map +1 -1
  33. package/esm/helper/deviceInfo.js +1 -2
  34. package/esm/helper/deviceInfo.js.map +1 -1
  35. package/esm/helper/enums.js +4 -0
  36. package/esm/helper/enums.js.map +1 -1
  37. package/esm/helper/instrumentMethod.js +48 -44
  38. package/esm/helper/instrumentMethod.js.map +1 -1
  39. package/esm/helper/observable.js +2 -2
  40. package/esm/helper/observable.js.map +1 -1
  41. package/esm/helper/timer.js +2 -2
  42. package/esm/helper/timer.js.map +1 -1
  43. package/esm/helper/tools.js +13 -0
  44. package/esm/helper/tools.js.map +1 -1
  45. package/esm/helper/valueHistory.js +115 -0
  46. package/esm/helper/valueHistory.js.map +1 -0
  47. package/esm/index.js +1 -1
  48. package/esm/index.js.map +1 -1
  49. package/esm/session/sessionManagement.js +4 -2
  50. package/esm/session/sessionManagement.js.map +1 -1
  51. package/esm/tracekit/tracekit.js +30 -26
  52. package/esm/tracekit/tracekit.js.map +1 -1
  53. package/package.json +2 -2
  54. package/src/browser/fetchObservable.js +71 -50
  55. package/src/browser/xhrObservable.js +39 -54
  56. package/src/dataMap.js +1 -0
  57. package/src/helper/deviceInfo.js +1 -2
  58. package/src/helper/enums.js +4 -1
  59. package/src/helper/instrumentMethod.js +61 -44
  60. package/src/helper/observable.js +2 -2
  61. package/src/helper/timer.js +5 -2
  62. package/src/helper/tools.js +13 -0
  63. package/src/helper/valueHistory.js +116 -0
  64. package/src/index.js +1 -1
  65. package/src/session/sessionManagement.js +4 -2
  66. package/src/tracekit/tracekit.js +29 -25
  67. package/cjs/helper/contextHistory.js +0 -117
  68. package/cjs/helper/contextHistory.js.map +0 -1
  69. package/esm/helper/contextHistory.js +0 -109
  70. package/esm/helper/contextHistory.js.map +0 -1
  71. 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
- export function instrumentMethod(object, method, instrumentationFactory) {
5
- var original = object[method];
6
- var instrumentation = instrumentationFactory(original);
7
- var instrumentationWrapper = function instrumentationWrapper() {
8
- if (typeof instrumentation !== 'function') {
9
- return undefined;
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 instrumentation.apply(this, arguments);
39
+ return result;
13
40
  };
14
- object[method] = instrumentationWrapper;
41
+ targetPrototype[method] = instrumentation;
15
42
  return {
16
43
  stop: function stop() {
17
- if (object[method] === instrumentationWrapper) {
18
- object[method] = original;
19
- } else {
20
- instrumentation = original;
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 instrumentMethodAndCallOriginal(object, method, aliasOption) {
26
- return instrumentMethod(object, method, function (original) {
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(thisObject, value) {
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(thisObject, value);
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(object, property, {
72
+ Object.defineProperty(targetPrototype, property, {
68
73
  set: instrumentationWrapper
69
74
  });
70
75
  return {
71
76
  stop: function stop() {
72
- if (Object.getOwnPropertyDescriptor(object, property) && Object.getOwnPropertyDescriptor(object, property).set === instrumentationWrapper) {
73
- Object.defineProperty(object, property, originalDescriptor);
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","object","method","instrumentationFactory","original","instrumentation","instrumentationWrapper","undefined","apply","arguments","stop","instrumentMethodAndCallOriginal","aliasOption","result","before","after","instrumentSetter","property","originalDescriptor","Object","getOwnPropertyDescriptor","set","configurable","stoppedInstrumentation","thisObject","value","call","defineProperty"],"sources":["../../src/helper/instrumentMethod.js"],"sourcesContent":["import { noop } from './tools'\nimport { setTimeout } from './timer'\nimport { callMonitored } from './monitor'\nexport function instrumentMethod(object, method, instrumentationFactory) {\n var original = object[method]\n\n var instrumentation = instrumentationFactory(original)\n\n var instrumentationWrapper = function () {\n if (typeof instrumentation !== 'function') {\n return undefined\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return instrumentation.apply(this, arguments)\n }\n object[method] = instrumentationWrapper\n return {\n stop: function () {\n if (object[method] === instrumentationWrapper) {\n object[method] = original\n } else {\n instrumentation = original\n }\n }\n }\n}\n\nexport function instrumentMethodAndCallOriginal(object, method, aliasOption) {\n return instrumentMethod(object, method, function (original) {\n return function () {\n var result\n if (aliasOption && aliasOption.before) {\n callMonitored(aliasOption.before, this, arguments)\n // aliasOption.before.apply(this, arguments)\n }\n if (typeof original === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n result = original.apply(this, arguments)\n }\n if (aliasOption && aliasOption.after) {\n callMonitored(aliasOption.after, this, arguments)\n // aliasOption.after.apply(this, arguments)\n }\n return result\n }\n })\n}\n\nexport function instrumentSetter(object, property, after) {\n var originalDescriptor = Object.getOwnPropertyDescriptor(object, property)\n if (\n !originalDescriptor ||\n !originalDescriptor.set ||\n !originalDescriptor.configurable\n ) {\n return { stop: noop }\n }\n var stoppedInstrumentation = noop\n var instrumentation = function (thisObject, value) {\n // put hooked setter into event loop to avoid of set latency\n setTimeout(function () {\n if (instrumentation !== stoppedInstrumentation) {\n after(thisObject, 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(object, property, {\n set: instrumentationWrapper\n })\n\n return {\n stop: function () {\n if (\n Object.getOwnPropertyDescriptor(object, property) &&\n Object.getOwnPropertyDescriptor(object, property).set ===\n instrumentationWrapper\n ) {\n Object.defineProperty(object, property, originalDescriptor)\n } else {\n instrumentation = stoppedInstrumentation\n }\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
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":"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","ignoreList":[]}
@@ -6,10 +6,10 @@ var _Observable = function _Observable(onFirstSubscribe) {
6
6
  };
7
7
  _Observable.prototype = {
8
8
  subscribe: function subscribe(f) {
9
- if (!this.observers.length && this.onFirstSubscribe) {
9
+ this.observers.push(f);
10
+ if (!this.observers.length === 1 && this.onFirstSubscribe) {
10
11
  this.onLastUnsubscribe = this.onFirstSubscribe(this) || undefined;
11
12
  }
12
- this.observers.push(f);
13
13
  var _this = this;
14
14
  return {
15
15
  unsubscribe: function unsubscribe() {
@@ -1 +1 @@
1
- {"version":3,"file":"observable.js","names":["each","filter","map","_Observable","onFirstSubscribe","observers","onLastUnsubscribe","undefined","prototype","subscribe","f","length","push","_this","unsubscribe","other","notify","data","observer","Observable","mergeObservables","observables","slice","call","arguments","globalObservable","subscriptions","observable","subscription"],"sources":["../../src/helper/observable.js"],"sourcesContent":["import { each, filter, map } from './tools'\nvar _Observable = function (onFirstSubscribe) {\n this.observers = []\n this.onLastUnsubscribe = undefined\n this.onFirstSubscribe = onFirstSubscribe\n}\n_Observable.prototype = {\n subscribe: function (f) {\n if (!this.observers.length && this.onFirstSubscribe) {\n this.onLastUnsubscribe = this.onFirstSubscribe(this) || undefined\n }\n this.observers.push(f)\n var _this = this\n return {\n unsubscribe: function () {\n _this.observers = filter(_this.observers, function (other) {\n return f !== other\n })\n if (!_this.observers.length && _this.onLastUnsubscribe) {\n _this.onLastUnsubscribe()\n }\n }\n }\n },\n notify: function (data) {\n each(this.observers, function (observer) {\n observer(data)\n })\n }\n}\nexport var Observable = _Observable\n\nexport function mergeObservables() {\n var observables = [].slice.call(arguments)\n return new Observable(function (globalObservable) {\n var subscriptions = map(observables, function (observable) {\n return observable.subscribe(function (data) {\n return globalObservable.notify(data)\n })\n })\n return function () {\n return each(subscriptions, function (subscription) {\n return subscription.unsubscribe()\n })\n }\n })\n}\n"],"mappings":"AAAA,SAASA,IAAI,EAAEC,MAAM,EAAEC,GAAG,QAAQ,SAAS;AAC3C,IAAIC,WAAW,GAAG,SAAdA,WAAWA,CAAaC,gBAAgB,EAAE;EAC5C,IAAI,CAACC,SAAS,GAAG,EAAE;EACnB,IAAI,CAACC,iBAAiB,GAAGC,SAAS;EAClC,IAAI,CAACH,gBAAgB,GAAGA,gBAAgB;AAC1C,CAAC;AACDD,WAAW,CAACK,SAAS,GAAG;EACtBC,SAAS,EAAE,SAAAA,UAAUC,CAAC,EAAE;IACtB,IAAI,CAAC,IAAI,CAACL,SAAS,CAACM,MAAM,IAAI,IAAI,CAACP,gBAAgB,EAAE;MACnD,IAAI,CAACE,iBAAiB,GAAG,IAAI,CAACF,gBAAgB,CAAC,IAAI,CAAC,IAAIG,SAAS;IACnE;IACA,IAAI,CAACF,SAAS,CAACO,IAAI,CAACF,CAAC,CAAC;IACtB,IAAIG,KAAK,GAAG,IAAI;IAChB,OAAO;MACLC,WAAW,EAAE,SAAAA,YAAA,EAAY;QACvBD,KAAK,CAACR,SAAS,GAAGJ,MAAM,CAACY,KAAK,CAACR,SAAS,EAAE,UAAUU,KAAK,EAAE;UACzD,OAAOL,CAAC,KAAKK,KAAK;QACpB,CAAC,CAAC;QACF,IAAI,CAACF,KAAK,CAACR,SAAS,CAACM,MAAM,IAAIE,KAAK,CAACP,iBAAiB,EAAE;UACtDO,KAAK,CAACP,iBAAiB,CAAC,CAAC;QAC3B;MACF;IACF,CAAC;EACH,CAAC;EACDU,MAAM,EAAE,SAAAA,OAAUC,IAAI,EAAE;IACtBjB,IAAI,CAAC,IAAI,CAACK,SAAS,EAAE,UAAUa,QAAQ,EAAE;MACvCA,QAAQ,CAACD,IAAI,CAAC;IAChB,CAAC,CAAC;EACJ;AACF,CAAC;AACD,OAAO,IAAIE,UAAU,GAAGhB,WAAW;AAEnC,OAAO,SAASiB,gBAAgBA,CAAA,EAAG;EACjC,IAAIC,WAAW,GAAG,EAAE,CAACC,KAAK,CAACC,IAAI,CAACC,SAAS,CAAC;EAC1C,OAAO,IAAIL,UAAU,CAAC,UAAUM,gBAAgB,EAAE;IAChD,IAAIC,aAAa,GAAGxB,GAAG,CAACmB,WAAW,EAAE,UAAUM,UAAU,EAAE;MACzD,OAAOA,UAAU,CAAClB,SAAS,CAAC,UAAUQ,IAAI,EAAE;QAC1C,OAAOQ,gBAAgB,CAACT,MAAM,CAACC,IAAI,CAAC;MACtC,CAAC,CAAC;IACJ,CAAC,CAAC;IACF,OAAO,YAAY;MACjB,OAAOjB,IAAI,CAAC0B,aAAa,EAAE,UAAUE,YAAY,EAAE;QACjD,OAAOA,YAAY,CAACd,WAAW,CAAC,CAAC;MACnC,CAAC,CAAC;IACJ,CAAC;EACH,CAAC,CAAC;AACJ","ignoreList":[]}
1
+ {"version":3,"file":"observable.js","names":["each","filter","map","_Observable","onFirstSubscribe","observers","onLastUnsubscribe","undefined","prototype","subscribe","f","push","length","_this","unsubscribe","other","notify","data","observer","Observable","mergeObservables","observables","slice","call","arguments","globalObservable","subscriptions","observable","subscription"],"sources":["../../src/helper/observable.js"],"sourcesContent":["import { each, filter, map } from './tools'\nvar _Observable = function (onFirstSubscribe) {\n this.observers = []\n this.onLastUnsubscribe = undefined\n this.onFirstSubscribe = onFirstSubscribe\n}\n_Observable.prototype = {\n subscribe: function (f) {\n this.observers.push(f)\n if (!this.observers.length === 1 && this.onFirstSubscribe) {\n this.onLastUnsubscribe = this.onFirstSubscribe(this) || undefined\n }\n var _this = this\n return {\n unsubscribe: function () {\n _this.observers = filter(_this.observers, function (other) {\n return f !== other\n })\n if (!_this.observers.length && _this.onLastUnsubscribe) {\n _this.onLastUnsubscribe()\n }\n }\n }\n },\n notify: function (data) {\n each(this.observers, function (observer) {\n observer(data)\n })\n }\n}\nexport var Observable = _Observable\n\nexport function mergeObservables() {\n var observables = [].slice.call(arguments)\n return new Observable(function (globalObservable) {\n var subscriptions = map(observables, function (observable) {\n return observable.subscribe(function (data) {\n return globalObservable.notify(data)\n })\n })\n return function () {\n return each(subscriptions, function (subscription) {\n return subscription.unsubscribe()\n })\n }\n })\n}\n"],"mappings":"AAAA,SAASA,IAAI,EAAEC,MAAM,EAAEC,GAAG,QAAQ,SAAS;AAC3C,IAAIC,WAAW,GAAG,SAAdA,WAAWA,CAAaC,gBAAgB,EAAE;EAC5C,IAAI,CAACC,SAAS,GAAG,EAAE;EACnB,IAAI,CAACC,iBAAiB,GAAGC,SAAS;EAClC,IAAI,CAACH,gBAAgB,GAAGA,gBAAgB;AAC1C,CAAC;AACDD,WAAW,CAACK,SAAS,GAAG;EACtBC,SAAS,EAAE,SAAAA,UAAUC,CAAC,EAAE;IACtB,IAAI,CAACL,SAAS,CAACM,IAAI,CAACD,CAAC,CAAC;IACtB,IAAI,CAAC,IAAI,CAACL,SAAS,CAACO,MAAM,KAAK,CAAC,IAAI,IAAI,CAACR,gBAAgB,EAAE;MACzD,IAAI,CAACE,iBAAiB,GAAG,IAAI,CAACF,gBAAgB,CAAC,IAAI,CAAC,IAAIG,SAAS;IACnE;IACA,IAAIM,KAAK,GAAG,IAAI;IAChB,OAAO;MACLC,WAAW,EAAE,SAAAA,YAAA,EAAY;QACvBD,KAAK,CAACR,SAAS,GAAGJ,MAAM,CAACY,KAAK,CAACR,SAAS,EAAE,UAAUU,KAAK,EAAE;UACzD,OAAOL,CAAC,KAAKK,KAAK;QACpB,CAAC,CAAC;QACF,IAAI,CAACF,KAAK,CAACR,SAAS,CAACO,MAAM,IAAIC,KAAK,CAACP,iBAAiB,EAAE;UACtDO,KAAK,CAACP,iBAAiB,CAAC,CAAC;QAC3B;MACF;IACF,CAAC;EACH,CAAC;EACDU,MAAM,EAAE,SAAAA,OAAUC,IAAI,EAAE;IACtBjB,IAAI,CAAC,IAAI,CAACK,SAAS,EAAE,UAAUa,QAAQ,EAAE;MACvCA,QAAQ,CAACD,IAAI,CAAC;IAChB,CAAC,CAAC;EACJ;AACF,CAAC;AACD,OAAO,IAAIE,UAAU,GAAGhB,WAAW;AAEnC,OAAO,SAASiB,gBAAgBA,CAAA,EAAG;EACjC,IAAIC,WAAW,GAAG,EAAE,CAACC,KAAK,CAACC,IAAI,CAACC,SAAS,CAAC;EAC1C,OAAO,IAAIL,UAAU,CAAC,UAAUM,gBAAgB,EAAE;IAChD,IAAIC,aAAa,GAAGxB,GAAG,CAACmB,WAAW,EAAE,UAAUM,UAAU,EAAE;MACzD,OAAOA,UAAU,CAAClB,SAAS,CAAC,UAAUQ,IAAI,EAAE;QAC1C,OAAOQ,gBAAgB,CAACT,MAAM,CAACC,IAAI,CAAC;MACtC,CAAC,CAAC;IACJ,CAAC,CAAC;IACF,OAAO,YAAY;MACjB,OAAOjB,IAAI,CAAC0B,aAAa,EAAE,UAAUE,YAAY,EAAE;QACjD,OAAOA,YAAY,CAACd,WAAW,CAAC,CAAC;MACnC,CAAC,CAAC;IACJ,CAAC;EACH,CAAC,CAAC;AACJ","ignoreList":[]}
@@ -8,9 +8,9 @@ export function clearTimeout(timeoutId) {
8
8
  getZoneJsOriginalValue(getGlobalObject(), 'clearTimeout')(timeoutId);
9
9
  }
10
10
  export function setInterval(callback, delay) {
11
- return getZoneJsOriginalValue(window, 'setInterval')(monitor(callback), delay);
11
+ return getZoneJsOriginalValue(getGlobalObject(), 'setInterval')(monitor(callback), delay);
12
12
  }
13
13
  export function clearInterval(timeoutId) {
14
- getZoneJsOriginalValue(window, 'clearInterval')(timeoutId);
14
+ getZoneJsOriginalValue(getGlobalObject(), 'clearInterval')(timeoutId);
15
15
  }
16
16
  //# sourceMappingURL=timer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"timer.js","names":["getZoneJsOriginalValue","getGlobalObject","monitor","setTimeout","callback","delay","clearTimeout","timeoutId","setInterval","window","clearInterval"],"sources":["../../src/helper/timer.js"],"sourcesContent":["import { getZoneJsOriginalValue } from './getZoneJsOriginalValue'\nimport { getGlobalObject } from '../init'\nimport { monitor } from './monitor'\nexport function setTimeout(callback, delay) {\n return getZoneJsOriginalValue(getGlobalObject(), 'setTimeout')(\n monitor(callback),\n delay\n )\n}\n\nexport function clearTimeout(timeoutId) {\n getZoneJsOriginalValue(getGlobalObject(), 'clearTimeout')(timeoutId)\n}\n\nexport function setInterval(callback, delay) {\n return getZoneJsOriginalValue(window, 'setInterval')(monitor(callback), delay)\n}\n\nexport function clearInterval(timeoutId) {\n getZoneJsOriginalValue(window, 'clearInterval')(timeoutId)\n}\n"],"mappings":"AAAA,SAASA,sBAAsB,QAAQ,0BAA0B;AACjE,SAASC,eAAe,QAAQ,SAAS;AACzC,SAASC,OAAO,QAAQ,WAAW;AACnC,OAAO,SAASC,UAAUA,CAACC,QAAQ,EAAEC,KAAK,EAAE;EAC1C,OAAOL,sBAAsB,CAACC,eAAe,CAAC,CAAC,EAAE,YAAY,CAAC,CAC5DC,OAAO,CAACE,QAAQ,CAAC,EACjBC,KACF,CAAC;AACH;AAEA,OAAO,SAASC,YAAYA,CAACC,SAAS,EAAE;EACtCP,sBAAsB,CAACC,eAAe,CAAC,CAAC,EAAE,cAAc,CAAC,CAACM,SAAS,CAAC;AACtE;AAEA,OAAO,SAASC,WAAWA,CAACJ,QAAQ,EAAEC,KAAK,EAAE;EAC3C,OAAOL,sBAAsB,CAACS,MAAM,EAAE,aAAa,CAAC,CAACP,OAAO,CAACE,QAAQ,CAAC,EAAEC,KAAK,CAAC;AAChF;AAEA,OAAO,SAASK,aAAaA,CAACH,SAAS,EAAE;EACvCP,sBAAsB,CAACS,MAAM,EAAE,eAAe,CAAC,CAACF,SAAS,CAAC;AAC5D","ignoreList":[]}
1
+ {"version":3,"file":"timer.js","names":["getZoneJsOriginalValue","getGlobalObject","monitor","setTimeout","callback","delay","clearTimeout","timeoutId","setInterval","clearInterval"],"sources":["../../src/helper/timer.js"],"sourcesContent":["import { getZoneJsOriginalValue } from './getZoneJsOriginalValue'\nimport { getGlobalObject } from '../init'\nimport { monitor } from './monitor'\nexport function setTimeout(callback, delay) {\n return getZoneJsOriginalValue(getGlobalObject(), 'setTimeout')(\n monitor(callback),\n delay\n )\n}\n\nexport function clearTimeout(timeoutId) {\n getZoneJsOriginalValue(getGlobalObject(), 'clearTimeout')(timeoutId)\n}\n\nexport function setInterval(callback, delay) {\n return getZoneJsOriginalValue(getGlobalObject(), 'setInterval')(\n monitor(callback),\n delay\n )\n}\n\nexport function clearInterval(timeoutId) {\n getZoneJsOriginalValue(getGlobalObject(), 'clearInterval')(timeoutId)\n}\n"],"mappings":"AAAA,SAASA,sBAAsB,QAAQ,0BAA0B;AACjE,SAASC,eAAe,QAAQ,SAAS;AACzC,SAASC,OAAO,QAAQ,WAAW;AACnC,OAAO,SAASC,UAAUA,CAACC,QAAQ,EAAEC,KAAK,EAAE;EAC1C,OAAOL,sBAAsB,CAACC,eAAe,CAAC,CAAC,EAAE,YAAY,CAAC,CAC5DC,OAAO,CAACE,QAAQ,CAAC,EACjBC,KACF,CAAC;AACH;AAEA,OAAO,SAASC,YAAYA,CAACC,SAAS,EAAE;EACtCP,sBAAsB,CAACC,eAAe,CAAC,CAAC,EAAE,cAAc,CAAC,CAACM,SAAS,CAAC;AACtE;AAEA,OAAO,SAASC,WAAWA,CAACJ,QAAQ,EAAEC,KAAK,EAAE;EAC3C,OAAOL,sBAAsB,CAACC,eAAe,CAAC,CAAC,EAAE,aAAa,CAAC,CAC7DC,OAAO,CAACE,QAAQ,CAAC,EACjBC,KACF,CAAC;AACH;AAEA,OAAO,SAASI,aAAaA,CAACF,SAAS,EAAE;EACvCP,sBAAsB,CAACC,eAAe,CAAC,CAAC,EAAE,eAAe,CAAC,CAACM,SAAS,CAAC;AACvE","ignoreList":[]}
@@ -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();