@cloudcare/browser-core 3.1.10 → 3.1.11

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.
@@ -34,7 +34,12 @@ function hasChildNodes(node) {
34
34
  // return isNodeShadowHost(node) ? node.shadowRoot.childNodes : node.childNodes
35
35
  // }
36
36
  function forEachChildNodes(node, callback) {
37
- node.childNodes.forEach(callback);
37
+ // node.childNodes.forEach(callback)
38
+ var child = node.firstChild;
39
+ while (child) {
40
+ callback(child);
41
+ child = child.nextSibling;
42
+ }
38
43
  if (isNodeShadowHost(node)) {
39
44
  callback(node.shadowRoot);
40
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"htmlDomUtils.js","names":["isTextNode","node","nodeType","Node","TEXT_NODE","isCommentNode","COMMENT_NODE","isElementNode","ELEMENT_NODE","isNodeShadowHost","Boolean","shadowRoot","isNodeShadowRoot","host","DOCUMENT_FRAGMENT_NODE","hasChildNodes","childNodes","length","forEachChildNodes","callback","forEach","getParentNode","parentNode"],"sources":["../../src/browser/htmlDomUtils.js"],"sourcesContent":["export function isTextNode(node) {\n return node.nodeType === Node.TEXT_NODE\n}\n\nexport function isCommentNode(node) {\n return node.nodeType === Node.COMMENT_NODE\n}\n\nexport function isElementNode(node) {\n return node.nodeType === Node.ELEMENT_NODE\n}\n\nexport function isNodeShadowHost(node) {\n return isElementNode(node) && Boolean(node.shadowRoot)\n}\n\nexport function isNodeShadowRoot(node) {\n var shadowRoot = node\n return (\n !!shadowRoot.host &&\n shadowRoot.nodeType === Node.DOCUMENT_FRAGMENT_NODE &&\n isElementNode(shadowRoot.host)\n )\n}\nexport function hasChildNodes(node) {\n return node.childNodes.length > 0 || isNodeShadowHost(node)\n}\n// export function getChildNodes(node) {\n// return isNodeShadowHost(node) ? node.shadowRoot.childNodes : node.childNodes\n// }\nexport function forEachChildNodes(node, callback) {\n node.childNodes.forEach(callback)\n if (isNodeShadowHost(node)) {\n callback(node.shadowRoot)\n }\n}\n/**\n * Return `host` in case if the current node is a shadow root otherwise will return the `parentNode`\n */\nexport function getParentNode(node) {\n return isNodeShadowRoot(node) ? node.host : node.parentNode\n}\n"],"mappings":";;;;;;;;;;;;;AAAO,SAASA,UAAUA,CAACC,IAAI,EAAE;EAC/B,OAAOA,IAAI,CAACC,QAAQ,KAAKC,IAAI,CAACC,SAAS;AACzC;AAEO,SAASC,aAAaA,CAACJ,IAAI,EAAE;EAClC,OAAOA,IAAI,CAACC,QAAQ,KAAKC,IAAI,CAACG,YAAY;AAC5C;AAEO,SAASC,aAAaA,CAACN,IAAI,EAAE;EAClC,OAAOA,IAAI,CAACC,QAAQ,KAAKC,IAAI,CAACK,YAAY;AAC5C;AAEO,SAASC,gBAAgBA,CAACR,IAAI,EAAE;EACrC,OAAOM,aAAa,CAACN,IAAI,CAAC,IAAIS,OAAO,CAACT,IAAI,CAACU,UAAU,CAAC;AACxD;AAEO,SAASC,gBAAgBA,CAACX,IAAI,EAAE;EACrC,IAAIU,UAAU,GAAGV,IAAI;EACrB,OACE,CAAC,CAACU,UAAU,CAACE,IAAI,IACjBF,UAAU,CAACT,QAAQ,KAAKC,IAAI,CAACW,sBAAsB,IACnDP,aAAa,CAACI,UAAU,CAACE,IAAI,CAAC;AAElC;AACO,SAASE,aAAaA,CAACd,IAAI,EAAE;EAClC,OAAOA,IAAI,CAACe,UAAU,CAACC,MAAM,GAAG,CAAC,IAAIR,gBAAgB,CAACR,IAAI,CAAC;AAC7D;AACA;AACA;AACA;AACO,SAASiB,iBAAiBA,CAACjB,IAAI,EAAEkB,QAAQ,EAAE;EAChDlB,IAAI,CAACe,UAAU,CAACI,OAAO,CAACD,QAAQ,CAAC;EACjC,IAAIV,gBAAgB,CAACR,IAAI,CAAC,EAAE;IAC1BkB,QAAQ,CAAClB,IAAI,CAACU,UAAU,CAAC;EAC3B;AACF;AACA;AACA;AACA;AACO,SAASU,aAAaA,CAACpB,IAAI,EAAE;EAClC,OAAOW,gBAAgB,CAACX,IAAI,CAAC,GAAGA,IAAI,CAACY,IAAI,GAAGZ,IAAI,CAACqB,UAAU;AAC7D"}
1
+ {"version":3,"file":"htmlDomUtils.js","names":["isTextNode","node","nodeType","Node","TEXT_NODE","isCommentNode","COMMENT_NODE","isElementNode","ELEMENT_NODE","isNodeShadowHost","Boolean","shadowRoot","isNodeShadowRoot","host","DOCUMENT_FRAGMENT_NODE","hasChildNodes","childNodes","length","forEachChildNodes","callback","child","firstChild","nextSibling","getParentNode","parentNode"],"sources":["../../src/browser/htmlDomUtils.js"],"sourcesContent":["export function isTextNode(node) {\n return node.nodeType === Node.TEXT_NODE\n}\n\nexport function isCommentNode(node) {\n return node.nodeType === Node.COMMENT_NODE\n}\n\nexport function isElementNode(node) {\n return node.nodeType === Node.ELEMENT_NODE\n}\n\nexport function isNodeShadowHost(node) {\n return isElementNode(node) && Boolean(node.shadowRoot)\n}\n\nexport function isNodeShadowRoot(node) {\n var shadowRoot = node\n return (\n !!shadowRoot.host &&\n shadowRoot.nodeType === Node.DOCUMENT_FRAGMENT_NODE &&\n isElementNode(shadowRoot.host)\n )\n}\nexport function hasChildNodes(node) {\n return node.childNodes.length > 0 || isNodeShadowHost(node)\n}\n// export function getChildNodes(node) {\n// return isNodeShadowHost(node) ? node.shadowRoot.childNodes : node.childNodes\n// }\nexport function forEachChildNodes(node, callback) {\n // node.childNodes.forEach(callback)\n var child = node.firstChild\n\n while (child) {\n callback(child)\n child = child.nextSibling\n }\n if (isNodeShadowHost(node)) {\n callback(node.shadowRoot)\n }\n}\n/**\n * Return `host` in case if the current node is a shadow root otherwise will return the `parentNode`\n */\nexport function getParentNode(node) {\n return isNodeShadowRoot(node) ? node.host : node.parentNode\n}\n"],"mappings":";;;;;;;;;;;;;AAAO,SAASA,UAAUA,CAACC,IAAI,EAAE;EAC/B,OAAOA,IAAI,CAACC,QAAQ,KAAKC,IAAI,CAACC,SAAS;AACzC;AAEO,SAASC,aAAaA,CAACJ,IAAI,EAAE;EAClC,OAAOA,IAAI,CAACC,QAAQ,KAAKC,IAAI,CAACG,YAAY;AAC5C;AAEO,SAASC,aAAaA,CAACN,IAAI,EAAE;EAClC,OAAOA,IAAI,CAACC,QAAQ,KAAKC,IAAI,CAACK,YAAY;AAC5C;AAEO,SAASC,gBAAgBA,CAACR,IAAI,EAAE;EACrC,OAAOM,aAAa,CAACN,IAAI,CAAC,IAAIS,OAAO,CAACT,IAAI,CAACU,UAAU,CAAC;AACxD;AAEO,SAASC,gBAAgBA,CAACX,IAAI,EAAE;EACrC,IAAIU,UAAU,GAAGV,IAAI;EACrB,OACE,CAAC,CAACU,UAAU,CAACE,IAAI,IACjBF,UAAU,CAACT,QAAQ,KAAKC,IAAI,CAACW,sBAAsB,IACnDP,aAAa,CAACI,UAAU,CAACE,IAAI,CAAC;AAElC;AACO,SAASE,aAAaA,CAACd,IAAI,EAAE;EAClC,OAAOA,IAAI,CAACe,UAAU,CAACC,MAAM,GAAG,CAAC,IAAIR,gBAAgB,CAACR,IAAI,CAAC;AAC7D;AACA;AACA;AACA;AACO,SAASiB,iBAAiBA,CAACjB,IAAI,EAAEkB,QAAQ,EAAE;EAChD;EACA,IAAIC,KAAK,GAAGnB,IAAI,CAACoB,UAAU;EAE3B,OAAOD,KAAK,EAAE;IACZD,QAAQ,CAACC,KAAK,CAAC;IACfA,KAAK,GAAGA,KAAK,CAACE,WAAW;EAC3B;EACA,IAAIb,gBAAgB,CAACR,IAAI,CAAC,EAAE;IAC1BkB,QAAQ,CAAClB,IAAI,CAACU,UAAU,CAAC;EAC3B;AACF;AACA;AACA;AACA;AACO,SAASY,aAAaA,CAACtB,IAAI,EAAE;EAClC,OAAOW,gBAAgB,CAACX,IAAI,CAAC,GAAGA,IAAI,CAACY,IAAI,GAAGZ,IAAI,CAACuB,UAAU;AAC7D"}
@@ -38,25 +38,27 @@ function createConsoleObservable(api) {
38
38
  console[api] = originalConsoleApi;
39
39
  };
40
40
  });
41
- return observable;
42
41
  }
43
42
  function buildConsoleLog(params, api, handlingStack) {
44
43
  var message = (0, _tools.map)(params, function (param) {
45
44
  return formatConsoleParameters(param);
46
45
  }).join(' ');
47
46
  var stack;
47
+ var causes;
48
48
  if (api === _display.ConsoleApiName.error) {
49
49
  var firstErrorParam = (0, _tools.find)(params, function (param) {
50
50
  return param instanceof Error;
51
51
  });
52
52
  stack = firstErrorParam ? (0, _errorTools.toStackTraceString)((0, _tracekit.computeStackTrace)(firstErrorParam)) : undefined;
53
53
  message = 'console error: ' + message;
54
+ causes = firstErrorParam ? (0, _errorTools.flattenErrorCauses)(firstErrorParam, 'console') : undefined;
54
55
  }
55
56
  return {
56
57
  api: api,
57
58
  message: message,
58
59
  stack: stack,
59
- handlingStack: handlingStack
60
+ handlingStack: handlingStack,
61
+ causes: causes
60
62
  };
61
63
  }
62
64
  function formatConsoleParameters(param) {
@@ -1 +1 @@
1
- {"version":3,"file":"consoleObservable.js","names":["_tracekit","require","_errorTools","_observable","_tools","_jsonStringify","_display","_monitor","consoleObservablesByApi","initConsoleObservable","apis","consoleObservables","map","api","createConsoleObservable","mergeObservables","apply","Observable","observable","originalConsoleApi","console","params","slice","call","arguments","handlingStack","createHandlingStack","callMonitored","notify","buildConsoleLog","message","param","formatConsoleParameters","join","stack","ConsoleApiName","error","firstErrorParam","find","Error","toStackTraceString","computeStackTrace","undefined","formatErrorMessage","jsonStringify"],"sources":["../../src/console/consoleObservable.js"],"sourcesContent":["import { computeStackTrace } from '../tracekit'\nimport {\n createHandlingStack,\n formatErrorMessage,\n toStackTraceString\n} from '../helper/errorTools'\nimport { mergeObservables, Observable } from '../helper/observable'\nimport { find, map } from '../helper/tools'\nimport { jsonStringify } from '../helper/serialisation/jsonStringify'\nimport { ConsoleApiName } from '../helper/display'\nimport { callMonitored } from '../helper/monitor'\nvar consoleObservablesByApi = {}\n\nexport function initConsoleObservable(apis) {\n var consoleObservables = map(apis, function (api) {\n if (!consoleObservablesByApi[api]) {\n consoleObservablesByApi[api] = createConsoleObservable(api)\n }\n return consoleObservablesByApi[api]\n })\n\n return mergeObservables.apply(this, consoleObservables)\n}\n\n/* eslint-disable no-console */\nfunction createConsoleObservable(api) {\n return new Observable(function (observable) {\n var originalConsoleApi = console[api]\n console[api] = function () {\n var params = [].slice.call(arguments)\n originalConsoleApi.apply(console, arguments)\n var handlingStack = createHandlingStack()\n callMonitored(function () {\n observable.notify(buildConsoleLog(params, api, handlingStack))\n })\n }\n return function () {\n console[api] = originalConsoleApi\n }\n })\n return observable\n}\n\nfunction buildConsoleLog(params, api, handlingStack) {\n var message = map(params, function (param) {\n return formatConsoleParameters(param)\n }).join(' ')\n var stack\n\n if (api === ConsoleApiName.error) {\n var firstErrorParam = find(params, function (param) {\n return param instanceof Error\n })\n stack = firstErrorParam\n ? toStackTraceString(computeStackTrace(firstErrorParam))\n : undefined\n message = 'console error: ' + message\n }\n\n return {\n api: api,\n message: message,\n stack: stack,\n handlingStack: handlingStack\n }\n}\n\nfunction formatConsoleParameters(param) {\n if (typeof param === 'string') {\n return param\n }\n if (param instanceof Error) {\n return formatErrorMessage(computeStackTrace(param))\n }\n return jsonStringify(param, undefined, 2)\n}\n"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AAKA,IAAAE,WAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AACA,IAAAI,cAAA,GAAAJ,OAAA;AACA,IAAAK,QAAA,GAAAL,OAAA;AACA,IAAAM,QAAA,GAAAN,OAAA;AACA,IAAIO,uBAAuB,GAAG,CAAC,CAAC;AAEzB,SAASC,qBAAqBA,CAACC,IAAI,EAAE;EAC1C,IAAIC,kBAAkB,GAAG,IAAAC,UAAG,EAACF,IAAI,EAAE,UAAUG,GAAG,EAAE;IAChD,IAAI,CAACL,uBAAuB,CAACK,GAAG,CAAC,EAAE;MACjCL,uBAAuB,CAACK,GAAG,CAAC,GAAGC,uBAAuB,CAACD,GAAG,CAAC;IAC7D;IACA,OAAOL,uBAAuB,CAACK,GAAG,CAAC;EACrC,CAAC,CAAC;EAEF,OAAOE,4BAAgB,CAACC,KAAK,CAAC,IAAI,EAAEL,kBAAkB,CAAC;AACzD;;AAEA;AACA,SAASG,uBAAuBA,CAACD,GAAG,EAAE;EACpC,OAAO,IAAII,sBAAU,CAAC,UAAUC,UAAU,EAAE;IAC1C,IAAIC,kBAAkB,GAAGC,OAAO,CAACP,GAAG,CAAC;IACrCO,OAAO,CAACP,GAAG,CAAC,GAAG,YAAY;MACzB,IAAIQ,MAAM,GAAG,EAAE,CAACC,KAAK,CAACC,IAAI,CAACC,SAAS,CAAC;MACrCL,kBAAkB,CAACH,KAAK,CAACI,OAAO,EAAEI,SAAS,CAAC;MAC5C,IAAIC,aAAa,GAAG,IAAAC,+BAAmB,EAAC,CAAC;MACzC,IAAAC,sBAAa,EAAC,YAAY;QACxBT,UAAU,CAACU,MAAM,CAACC,eAAe,CAACR,MAAM,EAAER,GAAG,EAAEY,aAAa,CAAC,CAAC;MAChE,CAAC,CAAC;IACJ,CAAC;IACD,OAAO,YAAY;MACjBL,OAAO,CAACP,GAAG,CAAC,GAAGM,kBAAkB;IACnC,CAAC;EACH,CAAC,CAAC;EACF,OAAOD,UAAU;AACnB;AAEA,SAASW,eAAeA,CAACR,MAAM,EAAER,GAAG,EAAEY,aAAa,EAAE;EACnD,IAAIK,OAAO,GAAG,IAAAlB,UAAG,EAACS,MAAM,EAAE,UAAUU,KAAK,EAAE;IACzC,OAAOC,uBAAuB,CAACD,KAAK,CAAC;EACvC,CAAC,CAAC,CAACE,IAAI,CAAC,GAAG,CAAC;EACZ,IAAIC,KAAK;EAET,IAAIrB,GAAG,KAAKsB,uBAAc,CAACC,KAAK,EAAE;IAChC,IAAIC,eAAe,GAAG,IAAAC,WAAI,EAACjB,MAAM,EAAE,UAAUU,KAAK,EAAE;MAClD,OAAOA,KAAK,YAAYQ,KAAK;IAC/B,CAAC,CAAC;IACFL,KAAK,GAAGG,eAAe,GACnB,IAAAG,8BAAkB,EAAC,IAAAC,2BAAiB,EAACJ,eAAe,CAAC,CAAC,GACtDK,SAAS;IACbZ,OAAO,GAAG,iBAAiB,GAAGA,OAAO;EACvC;EAEA,OAAO;IACLjB,GAAG,EAAEA,GAAG;IACRiB,OAAO,EAAEA,OAAO;IAChBI,KAAK,EAAEA,KAAK;IACZT,aAAa,EAAEA;EACjB,CAAC;AACH;AAEA,SAASO,uBAAuBA,CAACD,KAAK,EAAE;EACtC,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IAC7B,OAAOA,KAAK;EACd;EACA,IAAIA,KAAK,YAAYQ,KAAK,EAAE;IAC1B,OAAO,IAAAI,8BAAkB,EAAC,IAAAF,2BAAiB,EAACV,KAAK,CAAC,CAAC;EACrD;EACA,OAAO,IAAAa,4BAAa,EAACb,KAAK,EAAEW,SAAS,EAAE,CAAC,CAAC;AAC3C"}
1
+ {"version":3,"file":"consoleObservable.js","names":["_tracekit","require","_errorTools","_observable","_tools","_jsonStringify","_display","_monitor","consoleObservablesByApi","initConsoleObservable","apis","consoleObservables","map","api","createConsoleObservable","mergeObservables","apply","Observable","observable","originalConsoleApi","console","params","slice","call","arguments","handlingStack","createHandlingStack","callMonitored","notify","buildConsoleLog","message","param","formatConsoleParameters","join","stack","causes","ConsoleApiName","error","firstErrorParam","find","Error","toStackTraceString","computeStackTrace","undefined","flattenErrorCauses","formatErrorMessage","jsonStringify"],"sources":["../../src/console/consoleObservable.js"],"sourcesContent":["import { computeStackTrace } from '../tracekit'\nimport {\n createHandlingStack,\n formatErrorMessage,\n toStackTraceString,\n flattenErrorCauses\n} from '../helper/errorTools'\nimport { mergeObservables, Observable } from '../helper/observable'\nimport { find, map } from '../helper/tools'\nimport { jsonStringify } from '../helper/serialisation/jsonStringify'\nimport { ConsoleApiName } from '../helper/display'\nimport { callMonitored } from '../helper/monitor'\nvar consoleObservablesByApi = {}\n\nexport function initConsoleObservable(apis) {\n var consoleObservables = map(apis, function (api) {\n if (!consoleObservablesByApi[api]) {\n consoleObservablesByApi[api] = createConsoleObservable(api)\n }\n return consoleObservablesByApi[api]\n })\n\n return mergeObservables.apply(this, consoleObservables)\n}\n\n/* eslint-disable no-console */\nfunction createConsoleObservable(api) {\n return new Observable(function (observable) {\n var originalConsoleApi = console[api]\n console[api] = function () {\n var params = [].slice.call(arguments)\n originalConsoleApi.apply(console, arguments)\n var handlingStack = createHandlingStack()\n callMonitored(function () {\n observable.notify(buildConsoleLog(params, api, handlingStack))\n })\n }\n return function () {\n console[api] = originalConsoleApi\n }\n })\n}\n\nfunction buildConsoleLog(params, api, handlingStack) {\n var message = map(params, function (param) {\n return formatConsoleParameters(param)\n }).join(' ')\n var stack\n var causes\n if (api === ConsoleApiName.error) {\n var firstErrorParam = find(params, function (param) {\n return param instanceof Error\n })\n stack = firstErrorParam\n ? toStackTraceString(computeStackTrace(firstErrorParam))\n : undefined\n message = 'console error: ' + message\n causes = firstErrorParam\n ? flattenErrorCauses(firstErrorParam, 'console')\n : undefined\n }\n\n return {\n api: api,\n message: message,\n stack: stack,\n handlingStack: handlingStack,\n causes: causes\n }\n}\n\nfunction formatConsoleParameters(param) {\n if (typeof param === 'string') {\n return param\n }\n if (param instanceof Error) {\n return formatErrorMessage(computeStackTrace(param))\n }\n return jsonStringify(param, undefined, 2)\n}\n"],"mappings":"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"}
@@ -59,17 +59,18 @@ function instrumentSetter(object, property, after) {
59
59
  stop: _tools.noop
60
60
  };
61
61
  }
62
- // Using the patched `setTimeout` from Zone.js triggers a rendering loop in some Angular
63
- // component, see issue RUMF-1443
64
- var instrumentation = function instrumentation(thisObject, value) {
62
+ var stoppedInstrumentation = _tools.noop;
63
+ var _instrumentation = function instrumentation(thisObject, value) {
65
64
  // put hooked setter into event loop to avoid of set latency
66
65
  (0, _timer.setTimeout)(function () {
67
- after(thisObject, value);
66
+ if (_instrumentation !== stoppedInstrumentation) {
67
+ after(thisObject, value);
68
+ }
68
69
  }, 0);
69
70
  };
70
71
  var instrumentationWrapper = function instrumentationWrapper(value) {
71
72
  originalDescriptor.set.call(this, value);
72
- instrumentation(this, value);
73
+ _instrumentation(this, value);
73
74
  };
74
75
  Object.defineProperty(object, property, {
75
76
  set: instrumentationWrapper
@@ -79,7 +80,7 @@ function instrumentSetter(object, property, after) {
79
80
  if (Object.getOwnPropertyDescriptor(object, property) && Object.getOwnPropertyDescriptor(object, property).set === instrumentationWrapper) {
80
81
  Object.defineProperty(object, property, originalDescriptor);
81
82
  } else {
82
- instrumentation = _tools.noop;
83
+ _instrumentation = stoppedInstrumentation;
83
84
  }
84
85
  }
85
86
  };
@@ -1 +1 @@
1
- {"version":3,"file":"instrumentMethod.js","names":["_tools","require","_timer","_monitor","instrumentMethod","object","method","instrumentationFactory","original","instrumentation","instrumentationWrapper","undefined","apply","arguments","stop","instrumentMethodAndCallOriginal","aliasOption","result","before","callMonitored","after","instrumentSetter","property","originalDescriptor","Object","getOwnPropertyDescriptor","set","configurable","noop","thisObject","value","setTimeout","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 // Using the patched `setTimeout` from Zone.js triggers a rendering loop in some Angular\n // component, see issue RUMF-1443\n var instrumentation = function (thisObject, value) {\n // put hooked setter into event loop to avoid of set latency\n setTimeout(function () {\n after(thisObject, value)\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 = noop\n }\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"instrumentMethod.js","names":["_tools","require","_timer","_monitor","instrumentMethod","object","method","instrumentationFactory","original","instrumentation","instrumentationWrapper","undefined","apply","arguments","stop","instrumentMethodAndCallOriginal","aliasOption","result","before","callMonitored","after","instrumentSetter","property","originalDescriptor","Object","getOwnPropertyDescriptor","set","configurable","noop","stoppedInstrumentation","thisObject","value","setTimeout","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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"}
@@ -9,9 +9,11 @@ var _tools = require("./tools");
9
9
  var LifeCycleEventType = {
10
10
  PERFORMANCE_ENTRIES_COLLECTED: 'PERFORMANCE_ENTRIES_COLLECTED',
11
11
  AUTO_ACTION_COMPLETED: 'AUTO_ACTION_COMPLETED',
12
+ BEFORE_VIEW_CREATED: 'BEFORE_VIEW_CREATED',
12
13
  VIEW_CREATED: 'VIEW_CREATED',
13
14
  VIEW_UPDATED: 'VIEW_UPDATED',
14
15
  VIEW_ENDED: 'VIEW_ENDED',
16
+ AFTER_VIEW_ENDED: 'AFTER_VIEW_ENDED',
15
17
  SESSION_RENEWED: 'SESSION_RENEWED',
16
18
  SESSION_EXPIRED: 'SESSION_EXPIRED',
17
19
  PAGE_EXITED: 'PAGE_EXITED',
@@ -1 +1 @@
1
- {"version":3,"file":"lifeCycle.js","names":["_tools","require","LifeCycleEventType","PERFORMANCE_ENTRIES_COLLECTED","AUTO_ACTION_COMPLETED","VIEW_CREATED","VIEW_UPDATED","VIEW_ENDED","SESSION_RENEWED","SESSION_EXPIRED","PAGE_EXITED","REQUEST_STARTED","REQUEST_COMPLETED","RAW_RUM_EVENT_COLLECTED","RUM_EVENT_COLLECTED","RAW_ERROR_COLLECTED","RAW_LOG_COLLECTED","LOG_COLLECTED","exports","LifeCycle","callbacks","prototype","notify","eventType","data","eventCallbacks","each","callback","subscribe","push","_this","unsubscribe","filter","other"],"sources":["../../src/helper/lifeCycle.js"],"sourcesContent":["import { each, filter } from './tools'\nexport var LifeCycleEventType = {\n PERFORMANCE_ENTRIES_COLLECTED: 'PERFORMANCE_ENTRIES_COLLECTED',\n AUTO_ACTION_COMPLETED: 'AUTO_ACTION_COMPLETED',\n VIEW_CREATED: 'VIEW_CREATED',\n VIEW_UPDATED: 'VIEW_UPDATED',\n VIEW_ENDED: 'VIEW_ENDED',\n SESSION_RENEWED: 'SESSION_RENEWED',\n SESSION_EXPIRED: 'SESSION_EXPIRED',\n PAGE_EXITED: 'PAGE_EXITED',\n REQUEST_STARTED: 'REQUEST_STARTED',\n REQUEST_COMPLETED: 'REQUEST_COMPLETED',\n RAW_RUM_EVENT_COLLECTED: 'RAW_RUM_EVENT_COLLECTED',\n RUM_EVENT_COLLECTED: 'RUM_EVENT_COLLECTED',\n RAW_ERROR_COLLECTED: 'RAW_ERROR_COLLECTED',\n RAW_LOG_COLLECTED: 'RAW_LOG_COLLECTED',\n LOG_COLLECTED: 'LOG_COLLECTED'\n}\nexport function LifeCycle() {\n this.callbacks = {}\n}\nLifeCycle.prototype = {\n notify: function (eventType, data) {\n var eventCallbacks = this.callbacks[eventType]\n if (eventCallbacks) {\n each(eventCallbacks, function (callback) {\n callback(data)\n })\n }\n },\n subscribe: function (eventType, callback) {\n if (!this.callbacks[eventType]) {\n this.callbacks[eventType] = []\n }\n this.callbacks[eventType].push(callback)\n var _this = this\n return {\n unsubscribe: function () {\n _this.callbacks[eventType] = filter(\n _this.callbacks[eventType],\n function (other) {\n return other !== callback\n }\n )\n }\n }\n }\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACO,IAAIC,kBAAkB,GAAG;EAC9BC,6BAA6B,EAAE,+BAA+B;EAC9DC,qBAAqB,EAAE,uBAAuB;EAC9CC,YAAY,EAAE,cAAc;EAC5BC,YAAY,EAAE,cAAc;EAC5BC,UAAU,EAAE,YAAY;EACxBC,eAAe,EAAE,iBAAiB;EAClCC,eAAe,EAAE,iBAAiB;EAClCC,WAAW,EAAE,aAAa;EAC1BC,eAAe,EAAE,iBAAiB;EAClCC,iBAAiB,EAAE,mBAAmB;EACtCC,uBAAuB,EAAE,yBAAyB;EAClDC,mBAAmB,EAAE,qBAAqB;EAC1CC,mBAAmB,EAAE,qBAAqB;EAC1CC,iBAAiB,EAAE,mBAAmB;EACtCC,aAAa,EAAE;AACjB,CAAC;AAAAC,OAAA,CAAAhB,kBAAA,GAAAA,kBAAA;AACM,SAASiB,SAASA,CAAA,EAAG;EAC1B,IAAI,CAACC,SAAS,GAAG,CAAC,CAAC;AACrB;AACAD,SAAS,CAACE,SAAS,GAAG;EACpBC,MAAM,EAAE,SAAAA,OAAUC,SAAS,EAAEC,IAAI,EAAE;IACjC,IAAIC,cAAc,GAAG,IAAI,CAACL,SAAS,CAACG,SAAS,CAAC;IAC9C,IAAIE,cAAc,EAAE;MAClB,IAAAC,WAAI,EAACD,cAAc,EAAE,UAAUE,QAAQ,EAAE;QACvCA,QAAQ,CAACH,IAAI,CAAC;MAChB,CAAC,CAAC;IACJ;EACF,CAAC;EACDI,SAAS,EAAE,SAAAA,UAAUL,SAAS,EAAEI,QAAQ,EAAE;IACxC,IAAI,CAAC,IAAI,CAACP,SAAS,CAACG,SAAS,CAAC,EAAE;MAC9B,IAAI,CAACH,SAAS,CAACG,SAAS,CAAC,GAAG,EAAE;IAChC;IACA,IAAI,CAACH,SAAS,CAACG,SAAS,CAAC,CAACM,IAAI,CAACF,QAAQ,CAAC;IACxC,IAAIG,KAAK,GAAG,IAAI;IAChB,OAAO;MACLC,WAAW,EAAE,SAAAA,YAAA,EAAY;QACvBD,KAAK,CAACV,SAAS,CAACG,SAAS,CAAC,GAAG,IAAAS,aAAM,EACjCF,KAAK,CAACV,SAAS,CAACG,SAAS,CAAC,EAC1B,UAAUU,KAAK,EAAE;UACf,OAAOA,KAAK,KAAKN,QAAQ;QAC3B,CACF,CAAC;MACH;IACF,CAAC;EACH;AACF,CAAC"}
1
+ {"version":3,"file":"lifeCycle.js","names":["_tools","require","LifeCycleEventType","PERFORMANCE_ENTRIES_COLLECTED","AUTO_ACTION_COMPLETED","BEFORE_VIEW_CREATED","VIEW_CREATED","VIEW_UPDATED","VIEW_ENDED","AFTER_VIEW_ENDED","SESSION_RENEWED","SESSION_EXPIRED","PAGE_EXITED","REQUEST_STARTED","REQUEST_COMPLETED","RAW_RUM_EVENT_COLLECTED","RUM_EVENT_COLLECTED","RAW_ERROR_COLLECTED","RAW_LOG_COLLECTED","LOG_COLLECTED","exports","LifeCycle","callbacks","prototype","notify","eventType","data","eventCallbacks","each","callback","subscribe","push","_this","unsubscribe","filter","other"],"sources":["../../src/helper/lifeCycle.js"],"sourcesContent":["import { each, filter } from './tools'\nexport var LifeCycleEventType = {\n PERFORMANCE_ENTRIES_COLLECTED: 'PERFORMANCE_ENTRIES_COLLECTED',\n AUTO_ACTION_COMPLETED: 'AUTO_ACTION_COMPLETED',\n BEFORE_VIEW_CREATED: 'BEFORE_VIEW_CREATED',\n VIEW_CREATED: 'VIEW_CREATED',\n VIEW_UPDATED: 'VIEW_UPDATED',\n VIEW_ENDED: 'VIEW_ENDED',\n AFTER_VIEW_ENDED: 'AFTER_VIEW_ENDED',\n SESSION_RENEWED: 'SESSION_RENEWED',\n SESSION_EXPIRED: 'SESSION_EXPIRED',\n PAGE_EXITED: 'PAGE_EXITED',\n REQUEST_STARTED: 'REQUEST_STARTED',\n REQUEST_COMPLETED: 'REQUEST_COMPLETED',\n RAW_RUM_EVENT_COLLECTED: 'RAW_RUM_EVENT_COLLECTED',\n RUM_EVENT_COLLECTED: 'RUM_EVENT_COLLECTED',\n RAW_ERROR_COLLECTED: 'RAW_ERROR_COLLECTED',\n RAW_LOG_COLLECTED: 'RAW_LOG_COLLECTED',\n LOG_COLLECTED: 'LOG_COLLECTED'\n}\nexport function LifeCycle() {\n this.callbacks = {}\n}\nLifeCycle.prototype = {\n notify: function (eventType, data) {\n var eventCallbacks = this.callbacks[eventType]\n if (eventCallbacks) {\n each(eventCallbacks, function (callback) {\n callback(data)\n })\n }\n },\n subscribe: function (eventType, callback) {\n if (!this.callbacks[eventType]) {\n this.callbacks[eventType] = []\n }\n this.callbacks[eventType].push(callback)\n var _this = this\n return {\n unsubscribe: function () {\n _this.callbacks[eventType] = filter(\n _this.callbacks[eventType],\n function (other) {\n return other !== callback\n }\n )\n }\n }\n }\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACO,IAAIC,kBAAkB,GAAG;EAC9BC,6BAA6B,EAAE,+BAA+B;EAC9DC,qBAAqB,EAAE,uBAAuB;EAC9CC,mBAAmB,EAAE,qBAAqB;EAC1CC,YAAY,EAAE,cAAc;EAC5BC,YAAY,EAAE,cAAc;EAC5BC,UAAU,EAAE,YAAY;EACxBC,gBAAgB,EAAE,kBAAkB;EACpCC,eAAe,EAAE,iBAAiB;EAClCC,eAAe,EAAE,iBAAiB;EAClCC,WAAW,EAAE,aAAa;EAC1BC,eAAe,EAAE,iBAAiB;EAClCC,iBAAiB,EAAE,mBAAmB;EACtCC,uBAAuB,EAAE,yBAAyB;EAClDC,mBAAmB,EAAE,qBAAqB;EAC1CC,mBAAmB,EAAE,qBAAqB;EAC1CC,iBAAiB,EAAE,mBAAmB;EACtCC,aAAa,EAAE;AACjB,CAAC;AAAAC,OAAA,CAAAlB,kBAAA,GAAAA,kBAAA;AACM,SAASmB,SAASA,CAAA,EAAG;EAC1B,IAAI,CAACC,SAAS,GAAG,CAAC,CAAC;AACrB;AACAD,SAAS,CAACE,SAAS,GAAG;EACpBC,MAAM,EAAE,SAAAA,OAAUC,SAAS,EAAEC,IAAI,EAAE;IACjC,IAAIC,cAAc,GAAG,IAAI,CAACL,SAAS,CAACG,SAAS,CAAC;IAC9C,IAAIE,cAAc,EAAE;MAClB,IAAAC,WAAI,EAACD,cAAc,EAAE,UAAUE,QAAQ,EAAE;QACvCA,QAAQ,CAACH,IAAI,CAAC;MAChB,CAAC,CAAC;IACJ;EACF,CAAC;EACDI,SAAS,EAAE,SAAAA,UAAUL,SAAS,EAAEI,QAAQ,EAAE;IACxC,IAAI,CAAC,IAAI,CAACP,SAAS,CAACG,SAAS,CAAC,EAAE;MAC9B,IAAI,CAACH,SAAS,CAACG,SAAS,CAAC,GAAG,EAAE;IAChC;IACA,IAAI,CAACH,SAAS,CAACG,SAAS,CAAC,CAACM,IAAI,CAACF,QAAQ,CAAC;IACxC,IAAIG,KAAK,GAAG,IAAI;IAChB,OAAO;MACLC,WAAW,EAAE,SAAAA,YAAA,EAAY;QACvBD,KAAK,CAACV,SAAS,CAACG,SAAS,CAAC,GAAG,IAAAS,aAAM,EACjCF,KAAK,CAACV,SAAS,CAACG,SAAS,CAAC,EAC1B,UAAUU,KAAK,EAAE;UACf,OAAOA,KAAK,KAAKN,QAAQ;QAC3B,CACF,CAAC;MACH;IACF,CAAC;EACH;AACF,CAAC"}
@@ -12,11 +12,14 @@ var _sessionStore = require("./sessionStore");
12
12
  var _sessionConstants = require("./sessionConstants");
13
13
  var _enums = require("../helper/enums");
14
14
  var _timer = require("../helper/timer");
15
+ var _observable = require("../helper/observable");
15
16
  var VISIBILITY_CHECK_DELAY = _tools.ONE_MINUTE;
16
17
  exports.VISIBILITY_CHECK_DELAY = VISIBILITY_CHECK_DELAY;
17
18
  var SESSION_CONTEXT_TIMEOUT_DELAY = _sessionConstants.SESSION_TIME_OUT_DELAY;
18
19
  var stopCallbacks = [];
19
20
  var startSessionManager = function startSessionManager(options, productKey, computeSessionState) {
21
+ var renewObservable = new _observable.Observable();
22
+ var expireObservable = new _observable.Observable();
20
23
  var sessionStore = (0, _sessionStore.startSessionStore)(options, productKey, computeSessionState);
21
24
  stopCallbacks.push(function () {
22
25
  return sessionStore.stop();
@@ -27,8 +30,10 @@ var startSessionManager = function startSessionManager(options, productKey, comp
27
30
  });
28
31
  sessionStore.renewObservable.subscribe(function () {
29
32
  sessionContextHistory.add(buildSessionContext(), (0, _tools.relativeNow)());
33
+ renewObservable.notify();
30
34
  });
31
35
  sessionStore.expireObservable.subscribe(function () {
36
+ expireObservable.notify();
32
37
  sessionContextHistory.closeActive((0, _tools.relativeNow)());
33
38
  });
34
39
  sessionStore.expandOrRenewSession();
@@ -49,8 +54,8 @@ var startSessionManager = function startSessionManager(options, productKey, comp
49
54
  findActiveSession: function findActiveSession(startTime) {
50
55
  return sessionContextHistory.find(startTime);
51
56
  },
52
- renewObservable: sessionStore.renewObservable,
53
- expireObservable: sessionStore.expireObservable,
57
+ renewObservable: renewObservable,
58
+ expireObservable: expireObservable,
54
59
  expire: sessionStore.expire
55
60
  };
56
61
  };
@@ -1 +1 @@
1
- {"version":3,"file":"sessionManagement.js","names":["_tools","require","_addEventListener2","_contextHistory","_sessionStore","_sessionConstants","_enums","_timer","VISIBILITY_CHECK_DELAY","ONE_MINUTE","exports","SESSION_CONTEXT_TIMEOUT_DELAY","SESSION_TIME_OUT_DELAY","stopCallbacks","startSessionManager","options","productKey","computeSessionState","sessionStore","startSessionStore","push","stop","sessionContextHistory","ContextHistory","renewObservable","subscribe","add","buildSessionContext","relativeNow","expireObservable","closeActive","expandOrRenewSession","clocksOrigin","relative","trackActivity","trackVisibility","expandSession","id","getSession","trackingType","findActiveSession","startTime","find","expire","stopSessionManager","each","e","_addEventListeners","addEventListeners","window","DOM_EVENT","CLICK","TOUCH_START","KEY_DOWN","SCROLL","capture","passive","expandSessionWhenVisible","document","visibilityState","_addEventListener","addEventListener","VISIBILITY_CHANGE","visibilityCheckInterval","setInterval","clearInterval"],"sources":["../../src/session/sessionManagement.js"],"sourcesContent":["import { relativeNow, clocksOrigin, ONE_MINUTE, each } from '../helper/tools'\nimport {\n addEventListeners,\n addEventListener\n} from '../browser/addEventListener'\nimport { ContextHistory } from '../helper/contextHistory'\nimport { startSessionStore } from './sessionStore'\nimport { SESSION_TIME_OUT_DELAY } from './sessionConstants'\nimport { DOM_EVENT } from '../helper/enums'\nimport { clearInterval, setInterval } from '../helper/timer'\nexport var VISIBILITY_CHECK_DELAY = ONE_MINUTE\nvar SESSION_CONTEXT_TIMEOUT_DELAY = SESSION_TIME_OUT_DELAY\nvar stopCallbacks = []\n\nexport var startSessionManager = function (\n options,\n productKey,\n computeSessionState\n) {\n var sessionStore = startSessionStore(options, productKey, computeSessionState)\n stopCallbacks.push(function () {\n return sessionStore.stop()\n })\n\n var sessionContextHistory = new ContextHistory(SESSION_CONTEXT_TIMEOUT_DELAY)\n stopCallbacks.push(function () {\n return sessionContextHistory.stop()\n })\n\n sessionStore.renewObservable.subscribe(function () {\n sessionContextHistory.add(buildSessionContext(), relativeNow())\n })\n sessionStore.expireObservable.subscribe(function () {\n sessionContextHistory.closeActive(relativeNow())\n })\n\n sessionStore.expandOrRenewSession()\n sessionContextHistory.add(buildSessionContext(), clocksOrigin().relative)\n\n trackActivity(function () {\n return sessionStore.expandOrRenewSession()\n })\n trackVisibility(function () {\n return sessionStore.expandSession()\n })\n\n function buildSessionContext() {\n return {\n id: sessionStore.getSession().id,\n trackingType: sessionStore.getSession()[productKey]\n }\n }\n\n return {\n findActiveSession: function (startTime) {\n return sessionContextHistory.find(startTime)\n },\n renewObservable: sessionStore.renewObservable,\n expireObservable: sessionStore.expireObservable,\n expire: sessionStore.expire\n }\n}\n\nexport function stopSessionManager() {\n each(stopCallbacks, function (e) {\n return e()\n })\n stopCallbacks = []\n}\n\nfunction trackActivity(expandOrRenewSession) {\n var _addEventListeners = addEventListeners(\n window,\n [\n DOM_EVENT.CLICK,\n DOM_EVENT.TOUCH_START,\n DOM_EVENT.KEY_DOWN,\n DOM_EVENT.SCROLL\n ],\n expandOrRenewSession,\n { capture: true, passive: true }\n )\n stopCallbacks.push(_addEventListeners.stop)\n}\n\nfunction trackVisibility(expandSession) {\n var expandSessionWhenVisible = function () {\n if (document.visibilityState === 'visible') {\n expandSession()\n }\n }\n var _addEventListener = addEventListener(\n document,\n DOM_EVENT.VISIBILITY_CHANGE,\n expandSessionWhenVisible\n )\n stopCallbacks.push(_addEventListener.stop)\n\n var visibilityCheckInterval = setInterval(\n expandSessionWhenVisible,\n VISIBILITY_CHECK_DELAY\n )\n stopCallbacks.push(function () {\n clearInterval(visibilityCheckInterval)\n })\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"sessionManagement.js","names":["_tools","require","_addEventListener2","_contextHistory","_sessionStore","_sessionConstants","_enums","_timer","_observable","VISIBILITY_CHECK_DELAY","ONE_MINUTE","exports","SESSION_CONTEXT_TIMEOUT_DELAY","SESSION_TIME_OUT_DELAY","stopCallbacks","startSessionManager","options","productKey","computeSessionState","renewObservable","Observable","expireObservable","sessionStore","startSessionStore","push","stop","sessionContextHistory","ContextHistory","subscribe","add","buildSessionContext","relativeNow","notify","closeActive","expandOrRenewSession","clocksOrigin","relative","trackActivity","trackVisibility","expandSession","id","getSession","trackingType","findActiveSession","startTime","find","expire","stopSessionManager","each","e","_addEventListeners","addEventListeners","window","DOM_EVENT","CLICK","TOUCH_START","KEY_DOWN","SCROLL","capture","passive","expandSessionWhenVisible","document","visibilityState","_addEventListener","addEventListener","VISIBILITY_CHANGE","visibilityCheckInterval","setInterval","clearInterval"],"sources":["../../src/session/sessionManagement.js"],"sourcesContent":["import { relativeNow, clocksOrigin, ONE_MINUTE, each } from '../helper/tools'\nimport {\n addEventListeners,\n addEventListener\n} from '../browser/addEventListener'\nimport { ContextHistory } from '../helper/contextHistory'\nimport { startSessionStore } from './sessionStore'\nimport { SESSION_TIME_OUT_DELAY } from './sessionConstants'\nimport { DOM_EVENT } from '../helper/enums'\nimport { clearInterval, setInterval } from '../helper/timer'\nimport { Observable } from '../helper/observable'\nexport var VISIBILITY_CHECK_DELAY = ONE_MINUTE\nvar SESSION_CONTEXT_TIMEOUT_DELAY = SESSION_TIME_OUT_DELAY\nvar stopCallbacks = []\n\nexport var startSessionManager = function (\n options,\n productKey,\n computeSessionState\n) {\n var renewObservable = new Observable()\n var expireObservable = new Observable()\n var sessionStore = startSessionStore(options, productKey, computeSessionState)\n stopCallbacks.push(function () {\n return sessionStore.stop()\n })\n\n var sessionContextHistory = new ContextHistory(SESSION_CONTEXT_TIMEOUT_DELAY)\n stopCallbacks.push(function () {\n return sessionContextHistory.stop()\n })\n\n sessionStore.renewObservable.subscribe(function () {\n sessionContextHistory.add(buildSessionContext(), relativeNow())\n renewObservable.notify()\n })\n sessionStore.expireObservable.subscribe(function () {\n expireObservable.notify()\n sessionContextHistory.closeActive(relativeNow())\n })\n\n sessionStore.expandOrRenewSession()\n sessionContextHistory.add(buildSessionContext(), clocksOrigin().relative)\n\n trackActivity(function () {\n return sessionStore.expandOrRenewSession()\n })\n trackVisibility(function () {\n return sessionStore.expandSession()\n })\n\n function buildSessionContext() {\n return {\n id: sessionStore.getSession().id,\n trackingType: sessionStore.getSession()[productKey]\n }\n }\n\n return {\n findActiveSession: function (startTime) {\n return sessionContextHistory.find(startTime)\n },\n renewObservable: renewObservable,\n expireObservable: expireObservable,\n expire: sessionStore.expire\n }\n}\n\nexport function stopSessionManager() {\n each(stopCallbacks, function (e) {\n return e()\n })\n stopCallbacks = []\n}\n\nfunction trackActivity(expandOrRenewSession) {\n var _addEventListeners = addEventListeners(\n window,\n [\n DOM_EVENT.CLICK,\n DOM_EVENT.TOUCH_START,\n DOM_EVENT.KEY_DOWN,\n DOM_EVENT.SCROLL\n ],\n expandOrRenewSession,\n { capture: true, passive: true }\n )\n stopCallbacks.push(_addEventListeners.stop)\n}\n\nfunction trackVisibility(expandSession) {\n var expandSessionWhenVisible = function () {\n if (document.visibilityState === 'visible') {\n expandSession()\n }\n }\n var _addEventListener = addEventListener(\n document,\n DOM_EVENT.VISIBILITY_CHANGE,\n expandSessionWhenVisible\n )\n stopCallbacks.push(_addEventListener.stop)\n\n var visibilityCheckInterval = setInterval(\n expandSessionWhenVisible,\n VISIBILITY_CHECK_DELAY\n )\n stopCallbacks.push(function () {\n clearInterval(visibilityCheckInterval)\n })\n}\n"],"mappings":"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"}
@@ -3,6 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.STORAGE_POLL_DELAY = void 0;
6
7
  exports.startSessionStore = startSessionStore;
7
8
  var _cookie = require("../browser/cookie");
8
9
  var _observable = require("../helper/observable");
@@ -10,18 +11,20 @@ var _tools = require("../helper/tools");
10
11
  var _sessionConstants = require("./sessionConstants");
11
12
  var _sessionCookieStore = require("./sessionCookieStore");
12
13
  var _timer = require("../helper/timer");
14
+ var STORAGE_POLL_DELAY = _tools.ONE_SECOND;
13
15
  /**
14
16
  * Different session concepts:
15
17
  * - tracked, the session has an id and is updated along the user navigation
16
18
  * - not tracked, the session does not have an id but it is updated along the user navigation
17
19
  * - inactive, no session in store or session expired, waiting for a renew session
18
20
  */
21
+ exports.STORAGE_POLL_DELAY = STORAGE_POLL_DELAY;
19
22
  function startSessionStore(options, productKey, computeSessionState) {
20
23
  var renewObservable = new _observable.Observable();
21
24
  var expireObservable = new _observable.Observable();
22
- var watchSessionTimeoutId = (0, _timer.setInterval)(watchSession, _cookie.COOKIE_ACCESS_DELAY);
25
+ var watchSessionTimeoutId = (0, _timer.setInterval)(watchSession, STORAGE_POLL_DELAY);
23
26
  var sessionCache = retrieveActiveSession();
24
- function expandOrRenewSession() {
27
+ var _throttleExpandOrRenewSession = (0, _tools.throttle)(function () {
25
28
  var isTracked;
26
29
  (0, _sessionCookieStore.withCookieLockAccess)({
27
30
  options: options,
@@ -37,7 +40,27 @@ function startSessionStore(options, productKey, computeSessionState) {
37
40
  sessionCache = cookieSession;
38
41
  }
39
42
  });
40
- }
43
+ }, STORAGE_POLL_DELAY);
44
+ var throttledExpandOrRenewSession = _throttleExpandOrRenewSession.throttled;
45
+ var cancelExpandOrRenewSession = _throttleExpandOrRenewSession.cancel;
46
+ // function expandOrRenewSession() {
47
+ // var isTracked
48
+ // withCookieLockAccess({
49
+ // options: options,
50
+ // process: function (cookieSession) {
51
+ // var synchronizedSession = synchronizeSession(cookieSession)
52
+ // isTracked = expandOrRenewCookie(synchronizedSession)
53
+ // return synchronizedSession
54
+ // },
55
+ // after: function (cookieSession) {
56
+ // if (isTracked && !hasSessionInCache()) {
57
+ // renewSession(cookieSession)
58
+ // }
59
+ // sessionCache = cookieSession
60
+ // }
61
+ // })
62
+ // }
63
+
41
64
  function expandSession() {
42
65
  (0, _sessionCookieStore.withCookieLockAccess)({
43
66
  options: options,
@@ -112,7 +135,7 @@ function startSessionStore(options, productKey, computeSessionState) {
112
135
  return (session.created === undefined || (0, _tools.dateNow)() - Number(session.created) < _sessionConstants.SESSION_TIME_OUT_DELAY) && (session.expire === undefined || (0, _tools.dateNow)() < Number(session.expire));
113
136
  }
114
137
  return {
115
- expandOrRenewSession: (0, _tools.throttle)(expandOrRenewSession, _cookie.COOKIE_ACCESS_DELAY).throttled,
138
+ expandOrRenewSession: throttledExpandOrRenewSession,
116
139
  expandSession: expandSession,
117
140
  getSession: function getSession() {
118
141
  return sessionCache;
@@ -120,6 +143,7 @@ function startSessionStore(options, productKey, computeSessionState) {
120
143
  renewObservable: renewObservable,
121
144
  expireObservable: expireObservable,
122
145
  expire: function expire() {
146
+ cancelExpandOrRenewSession();
123
147
  (0, _sessionCookieStore.clearSession)(options);
124
148
  synchronizeSession({});
125
149
  },
@@ -1 +1 @@
1
- {"version":3,"file":"sessionStore.js","names":["_cookie","require","_observable","_tools","_sessionConstants","_sessionCookieStore","_timer","startSessionStore","options","productKey","computeSessionState","renewObservable","Observable","expireObservable","watchSessionTimeoutId","setInterval","watchSession","COOKIE_ACCESS_DELAY","sessionCache","retrieveActiveSession","expandOrRenewSession","isTracked","withCookieLockAccess","process","cookieSession","synchronizedSession","synchronizeSession","expandOrRenewCookie","after","hasSessionInCache","renewSession","expandSession","undefined","isActiveSession","isSessionInCacheOutdated","expireSessionInCache","sessionState","trackingType","id","UUID","created","String","dateNow","notify","session","retrieveSession","Number","SESSION_TIME_OUT_DELAY","expire","throttle","throttled","getSession","clearSession","stop","clearInterval"],"sources":["../../src/session/sessionStore.js"],"sourcesContent":["import { COOKIE_ACCESS_DELAY } from '../browser/cookie'\nimport { Observable } from '../helper/observable'\nimport { dateNow, UUID, throttle } from '../helper/tools'\nimport { SESSION_TIME_OUT_DELAY } from './sessionConstants'\nimport {\n retrieveSession,\n withCookieLockAccess,\n clearSession\n} from './sessionCookieStore'\nimport { clearInterval, setInterval } from '../helper/timer'\n\n/**\n * Different session concepts:\n * - tracked, the session has an id and is updated along the user navigation\n * - not tracked, the session does not have an id but it is updated along the user navigation\n * - inactive, no session in store or session expired, waiting for a renew session\n */\nexport function startSessionStore(options, productKey, computeSessionState) {\n var renewObservable = new Observable()\n var expireObservable = new Observable()\n\n var watchSessionTimeoutId = setInterval(watchSession, COOKIE_ACCESS_DELAY)\n var sessionCache = retrieveActiveSession()\n\n function expandOrRenewSession() {\n var isTracked\n withCookieLockAccess({\n options: options,\n process: function (cookieSession) {\n var synchronizedSession = synchronizeSession(cookieSession)\n isTracked = expandOrRenewCookie(synchronizedSession)\n return synchronizedSession\n },\n after: function (cookieSession) {\n if (isTracked && !hasSessionInCache()) {\n renewSession(cookieSession)\n }\n sessionCache = cookieSession\n }\n })\n }\n\n function expandSession() {\n withCookieLockAccess({\n options: options,\n process: function (cookieSession) {\n return hasSessionInCache()\n ? synchronizeSession(cookieSession)\n : undefined\n }\n })\n }\n\n /**\n * allows two behaviors:\n * - if the session is active, synchronize the session cache without updating the session cookie\n * - if the session is not active, clear the session cookie and expire the session cache\n */\n function watchSession() {\n withCookieLockAccess({\n options: options,\n process: function (cookieSession) {\n return !isActiveSession(cookieSession) ? {} : undefined\n },\n after: synchronizeSession\n })\n }\n\n function synchronizeSession(cookieSession) {\n if (!isActiveSession(cookieSession)) {\n cookieSession = {}\n }\n if (hasSessionInCache()) {\n if (isSessionInCacheOutdated(cookieSession)) {\n expireSessionInCache()\n } else {\n sessionCache = cookieSession\n }\n }\n return cookieSession\n }\n\n function expandOrRenewCookie(cookieSession) {\n var sessionState = computeSessionState(cookieSession[productKey])\n var trackingType = sessionState.trackingType\n var isTracked = sessionState.isTracked\n cookieSession[productKey] = trackingType\n if (isTracked && !cookieSession.id) {\n cookieSession.id = UUID()\n cookieSession.created = String(dateNow())\n }\n return isTracked\n }\n\n function hasSessionInCache() {\n return sessionCache[productKey] !== undefined\n }\n\n function isSessionInCacheOutdated(cookieSession) {\n return (\n sessionCache.id !== cookieSession.id ||\n sessionCache[productKey] !== cookieSession[productKey]\n )\n }\n\n function expireSessionInCache() {\n sessionCache = {}\n expireObservable.notify()\n }\n\n function renewSession(cookieSession) {\n sessionCache = cookieSession\n renewObservable.notify()\n }\n\n function retrieveActiveSession() {\n var session = retrieveSession()\n if (isActiveSession(session)) {\n return session\n }\n return {}\n }\n\n function isActiveSession(session) {\n // created and expire can be undefined for versions which was not storing them\n // these checks could be removed when older versions will not be available/live anymore\n return (\n (session.created === undefined ||\n dateNow() - Number(session.created) < SESSION_TIME_OUT_DELAY) &&\n (session.expire === undefined || dateNow() < Number(session.expire))\n )\n }\n\n return {\n expandOrRenewSession: throttle(expandOrRenewSession, COOKIE_ACCESS_DELAY)\n .throttled,\n expandSession: expandSession,\n getSession: function () {\n return sessionCache\n },\n renewObservable: renewObservable,\n expireObservable: expireObservable,\n expire: function () {\n clearSession(options)\n synchronizeSession({})\n },\n stop: function () {\n clearInterval(watchSessionTimeoutId)\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"sessionStore.js","names":["_cookie","require","_observable","_tools","_sessionConstants","_sessionCookieStore","_timer","STORAGE_POLL_DELAY","ONE_SECOND","exports","startSessionStore","options","productKey","computeSessionState","renewObservable","Observable","expireObservable","watchSessionTimeoutId","setInterval","watchSession","sessionCache","retrieveActiveSession","_throttleExpandOrRenewSession","throttle","isTracked","withCookieLockAccess","process","cookieSession","synchronizedSession","synchronizeSession","expandOrRenewCookie","after","hasSessionInCache","renewSession","throttledExpandOrRenewSession","throttled","cancelExpandOrRenewSession","cancel","expandSession","undefined","isActiveSession","isSessionInCacheOutdated","expireSessionInCache","sessionState","trackingType","id","UUID","created","String","dateNow","notify","session","retrieveSession","Number","SESSION_TIME_OUT_DELAY","expire","expandOrRenewSession","getSession","clearSession","stop","clearInterval"],"sources":["../../src/session/sessionStore.js"],"sourcesContent":["import { COOKIE_ACCESS_DELAY } from '../browser/cookie'\nimport { Observable } from '../helper/observable'\nimport { dateNow, UUID, throttle, ONE_SECOND } from '../helper/tools'\nimport { SESSION_TIME_OUT_DELAY } from './sessionConstants'\nimport {\n retrieveSession,\n withCookieLockAccess,\n clearSession\n} from './sessionCookieStore'\nimport { clearInterval, setInterval } from '../helper/timer'\n\nexport var STORAGE_POLL_DELAY = ONE_SECOND\n/**\n * Different session concepts:\n * - tracked, the session has an id and is updated along the user navigation\n * - not tracked, the session does not have an id but it is updated along the user navigation\n * - inactive, no session in store or session expired, waiting for a renew session\n */\nexport function startSessionStore(options, productKey, computeSessionState) {\n var renewObservable = new Observable()\n var expireObservable = new Observable()\n\n var watchSessionTimeoutId = setInterval(watchSession, STORAGE_POLL_DELAY)\n var sessionCache = retrieveActiveSession()\n var _throttleExpandOrRenewSession = throttle(function () {\n var isTracked\n withCookieLockAccess({\n options: options,\n process: function (cookieSession) {\n var synchronizedSession = synchronizeSession(cookieSession)\n isTracked = expandOrRenewCookie(synchronizedSession)\n return synchronizedSession\n },\n after: function (cookieSession) {\n if (isTracked && !hasSessionInCache()) {\n renewSession(cookieSession)\n }\n sessionCache = cookieSession\n }\n })\n }, STORAGE_POLL_DELAY)\n var throttledExpandOrRenewSession = _throttleExpandOrRenewSession.throttled\n var cancelExpandOrRenewSession = _throttleExpandOrRenewSession.cancel\n // function expandOrRenewSession() {\n // var isTracked\n // withCookieLockAccess({\n // options: options,\n // process: function (cookieSession) {\n // var synchronizedSession = synchronizeSession(cookieSession)\n // isTracked = expandOrRenewCookie(synchronizedSession)\n // return synchronizedSession\n // },\n // after: function (cookieSession) {\n // if (isTracked && !hasSessionInCache()) {\n // renewSession(cookieSession)\n // }\n // sessionCache = cookieSession\n // }\n // })\n // }\n\n function expandSession() {\n withCookieLockAccess({\n options: options,\n process: function (cookieSession) {\n return hasSessionInCache()\n ? synchronizeSession(cookieSession)\n : undefined\n }\n })\n }\n\n /**\n * allows two behaviors:\n * - if the session is active, synchronize the session cache without updating the session cookie\n * - if the session is not active, clear the session cookie and expire the session cache\n */\n function watchSession() {\n withCookieLockAccess({\n options: options,\n process: function (cookieSession) {\n return !isActiveSession(cookieSession) ? {} : undefined\n },\n after: synchronizeSession\n })\n }\n\n function synchronizeSession(cookieSession) {\n if (!isActiveSession(cookieSession)) {\n cookieSession = {}\n }\n if (hasSessionInCache()) {\n if (isSessionInCacheOutdated(cookieSession)) {\n expireSessionInCache()\n } else {\n sessionCache = cookieSession\n }\n }\n return cookieSession\n }\n\n function expandOrRenewCookie(cookieSession) {\n var sessionState = computeSessionState(cookieSession[productKey])\n var trackingType = sessionState.trackingType\n var isTracked = sessionState.isTracked\n cookieSession[productKey] = trackingType\n if (isTracked && !cookieSession.id) {\n cookieSession.id = UUID()\n cookieSession.created = String(dateNow())\n }\n return isTracked\n }\n\n function hasSessionInCache() {\n return sessionCache[productKey] !== undefined\n }\n\n function isSessionInCacheOutdated(cookieSession) {\n return (\n sessionCache.id !== cookieSession.id ||\n sessionCache[productKey] !== cookieSession[productKey]\n )\n }\n\n function expireSessionInCache() {\n sessionCache = {}\n expireObservable.notify()\n }\n\n function renewSession(cookieSession) {\n sessionCache = cookieSession\n renewObservable.notify()\n }\n\n function retrieveActiveSession() {\n var session = retrieveSession()\n if (isActiveSession(session)) {\n return session\n }\n return {}\n }\n\n function isActiveSession(session) {\n // created and expire can be undefined for versions which was not storing them\n // these checks could be removed when older versions will not be available/live anymore\n return (\n (session.created === undefined ||\n dateNow() - Number(session.created) < SESSION_TIME_OUT_DELAY) &&\n (session.expire === undefined || dateNow() < Number(session.expire))\n )\n }\n\n return {\n expandOrRenewSession: throttledExpandOrRenewSession,\n expandSession: expandSession,\n getSession: function () {\n return sessionCache\n },\n renewObservable: renewObservable,\n expireObservable: expireObservable,\n expire: function () {\n cancelExpandOrRenewSession()\n clearSession(options)\n synchronizeSession({})\n },\n stop: function () {\n clearInterval(watchSessionTimeoutId)\n }\n }\n}\n"],"mappings":"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"}
@@ -21,7 +21,12 @@ export function hasChildNodes(node) {
21
21
  // return isNodeShadowHost(node) ? node.shadowRoot.childNodes : node.childNodes
22
22
  // }
23
23
  export function forEachChildNodes(node, callback) {
24
- node.childNodes.forEach(callback);
24
+ // node.childNodes.forEach(callback)
25
+ var child = node.firstChild;
26
+ while (child) {
27
+ callback(child);
28
+ child = child.nextSibling;
29
+ }
25
30
  if (isNodeShadowHost(node)) {
26
31
  callback(node.shadowRoot);
27
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"htmlDomUtils.js","names":["isTextNode","node","nodeType","Node","TEXT_NODE","isCommentNode","COMMENT_NODE","isElementNode","ELEMENT_NODE","isNodeShadowHost","Boolean","shadowRoot","isNodeShadowRoot","host","DOCUMENT_FRAGMENT_NODE","hasChildNodes","childNodes","length","forEachChildNodes","callback","forEach","getParentNode","parentNode"],"sources":["../../src/browser/htmlDomUtils.js"],"sourcesContent":["export function isTextNode(node) {\n return node.nodeType === Node.TEXT_NODE\n}\n\nexport function isCommentNode(node) {\n return node.nodeType === Node.COMMENT_NODE\n}\n\nexport function isElementNode(node) {\n return node.nodeType === Node.ELEMENT_NODE\n}\n\nexport function isNodeShadowHost(node) {\n return isElementNode(node) && Boolean(node.shadowRoot)\n}\n\nexport function isNodeShadowRoot(node) {\n var shadowRoot = node\n return (\n !!shadowRoot.host &&\n shadowRoot.nodeType === Node.DOCUMENT_FRAGMENT_NODE &&\n isElementNode(shadowRoot.host)\n )\n}\nexport function hasChildNodes(node) {\n return node.childNodes.length > 0 || isNodeShadowHost(node)\n}\n// export function getChildNodes(node) {\n// return isNodeShadowHost(node) ? node.shadowRoot.childNodes : node.childNodes\n// }\nexport function forEachChildNodes(node, callback) {\n node.childNodes.forEach(callback)\n if (isNodeShadowHost(node)) {\n callback(node.shadowRoot)\n }\n}\n/**\n * Return `host` in case if the current node is a shadow root otherwise will return the `parentNode`\n */\nexport function getParentNode(node) {\n return isNodeShadowRoot(node) ? node.host : node.parentNode\n}\n"],"mappings":"AAAA,OAAO,SAASA,UAAUA,CAACC,IAAI,EAAE;EAC/B,OAAOA,IAAI,CAACC,QAAQ,KAAKC,IAAI,CAACC,SAAS;AACzC;AAEA,OAAO,SAASC,aAAaA,CAACJ,IAAI,EAAE;EAClC,OAAOA,IAAI,CAACC,QAAQ,KAAKC,IAAI,CAACG,YAAY;AAC5C;AAEA,OAAO,SAASC,aAAaA,CAACN,IAAI,EAAE;EAClC,OAAOA,IAAI,CAACC,QAAQ,KAAKC,IAAI,CAACK,YAAY;AAC5C;AAEA,OAAO,SAASC,gBAAgBA,CAACR,IAAI,EAAE;EACrC,OAAOM,aAAa,CAACN,IAAI,CAAC,IAAIS,OAAO,CAACT,IAAI,CAACU,UAAU,CAAC;AACxD;AAEA,OAAO,SAASC,gBAAgBA,CAACX,IAAI,EAAE;EACrC,IAAIU,UAAU,GAAGV,IAAI;EACrB,OACE,CAAC,CAACU,UAAU,CAACE,IAAI,IACjBF,UAAU,CAACT,QAAQ,KAAKC,IAAI,CAACW,sBAAsB,IACnDP,aAAa,CAACI,UAAU,CAACE,IAAI,CAAC;AAElC;AACA,OAAO,SAASE,aAAaA,CAACd,IAAI,EAAE;EAClC,OAAOA,IAAI,CAACe,UAAU,CAACC,MAAM,GAAG,CAAC,IAAIR,gBAAgB,CAACR,IAAI,CAAC;AAC7D;AACA;AACA;AACA;AACA,OAAO,SAASiB,iBAAiBA,CAACjB,IAAI,EAAEkB,QAAQ,EAAE;EAChDlB,IAAI,CAACe,UAAU,CAACI,OAAO,CAACD,QAAQ,CAAC;EACjC,IAAIV,gBAAgB,CAACR,IAAI,CAAC,EAAE;IAC1BkB,QAAQ,CAAClB,IAAI,CAACU,UAAU,CAAC;EAC3B;AACF;AACA;AACA;AACA;AACA,OAAO,SAASU,aAAaA,CAACpB,IAAI,EAAE;EAClC,OAAOW,gBAAgB,CAACX,IAAI,CAAC,GAAGA,IAAI,CAACY,IAAI,GAAGZ,IAAI,CAACqB,UAAU;AAC7D"}
1
+ {"version":3,"file":"htmlDomUtils.js","names":["isTextNode","node","nodeType","Node","TEXT_NODE","isCommentNode","COMMENT_NODE","isElementNode","ELEMENT_NODE","isNodeShadowHost","Boolean","shadowRoot","isNodeShadowRoot","host","DOCUMENT_FRAGMENT_NODE","hasChildNodes","childNodes","length","forEachChildNodes","callback","child","firstChild","nextSibling","getParentNode","parentNode"],"sources":["../../src/browser/htmlDomUtils.js"],"sourcesContent":["export function isTextNode(node) {\n return node.nodeType === Node.TEXT_NODE\n}\n\nexport function isCommentNode(node) {\n return node.nodeType === Node.COMMENT_NODE\n}\n\nexport function isElementNode(node) {\n return node.nodeType === Node.ELEMENT_NODE\n}\n\nexport function isNodeShadowHost(node) {\n return isElementNode(node) && Boolean(node.shadowRoot)\n}\n\nexport function isNodeShadowRoot(node) {\n var shadowRoot = node\n return (\n !!shadowRoot.host &&\n shadowRoot.nodeType === Node.DOCUMENT_FRAGMENT_NODE &&\n isElementNode(shadowRoot.host)\n )\n}\nexport function hasChildNodes(node) {\n return node.childNodes.length > 0 || isNodeShadowHost(node)\n}\n// export function getChildNodes(node) {\n// return isNodeShadowHost(node) ? node.shadowRoot.childNodes : node.childNodes\n// }\nexport function forEachChildNodes(node, callback) {\n // node.childNodes.forEach(callback)\n var child = node.firstChild\n\n while (child) {\n callback(child)\n child = child.nextSibling\n }\n if (isNodeShadowHost(node)) {\n callback(node.shadowRoot)\n }\n}\n/**\n * Return `host` in case if the current node is a shadow root otherwise will return the `parentNode`\n */\nexport function getParentNode(node) {\n return isNodeShadowRoot(node) ? node.host : node.parentNode\n}\n"],"mappings":"AAAA,OAAO,SAASA,UAAUA,CAACC,IAAI,EAAE;EAC/B,OAAOA,IAAI,CAACC,QAAQ,KAAKC,IAAI,CAACC,SAAS;AACzC;AAEA,OAAO,SAASC,aAAaA,CAACJ,IAAI,EAAE;EAClC,OAAOA,IAAI,CAACC,QAAQ,KAAKC,IAAI,CAACG,YAAY;AAC5C;AAEA,OAAO,SAASC,aAAaA,CAACN,IAAI,EAAE;EAClC,OAAOA,IAAI,CAACC,QAAQ,KAAKC,IAAI,CAACK,YAAY;AAC5C;AAEA,OAAO,SAASC,gBAAgBA,CAACR,IAAI,EAAE;EACrC,OAAOM,aAAa,CAACN,IAAI,CAAC,IAAIS,OAAO,CAACT,IAAI,CAACU,UAAU,CAAC;AACxD;AAEA,OAAO,SAASC,gBAAgBA,CAACX,IAAI,EAAE;EACrC,IAAIU,UAAU,GAAGV,IAAI;EACrB,OACE,CAAC,CAACU,UAAU,CAACE,IAAI,IACjBF,UAAU,CAACT,QAAQ,KAAKC,IAAI,CAACW,sBAAsB,IACnDP,aAAa,CAACI,UAAU,CAACE,IAAI,CAAC;AAElC;AACA,OAAO,SAASE,aAAaA,CAACd,IAAI,EAAE;EAClC,OAAOA,IAAI,CAACe,UAAU,CAACC,MAAM,GAAG,CAAC,IAAIR,gBAAgB,CAACR,IAAI,CAAC;AAC7D;AACA;AACA;AACA;AACA,OAAO,SAASiB,iBAAiBA,CAACjB,IAAI,EAAEkB,QAAQ,EAAE;EAChD;EACA,IAAIC,KAAK,GAAGnB,IAAI,CAACoB,UAAU;EAE3B,OAAOD,KAAK,EAAE;IACZD,QAAQ,CAACC,KAAK,CAAC;IACfA,KAAK,GAAGA,KAAK,CAACE,WAAW;EAC3B;EACA,IAAIb,gBAAgB,CAACR,IAAI,CAAC,EAAE;IAC1BkB,QAAQ,CAAClB,IAAI,CAACU,UAAU,CAAC;EAC3B;AACF;AACA;AACA;AACA;AACA,OAAO,SAASY,aAAaA,CAACtB,IAAI,EAAE;EAClC,OAAOW,gBAAgB,CAACX,IAAI,CAAC,GAAGA,IAAI,CAACY,IAAI,GAAGZ,IAAI,CAACuB,UAAU;AAC7D"}
@@ -1,5 +1,5 @@
1
1
  import { computeStackTrace } from '../tracekit';
2
- import { createHandlingStack, formatErrorMessage, toStackTraceString } from '../helper/errorTools';
2
+ import { createHandlingStack, formatErrorMessage, toStackTraceString, flattenErrorCauses } from '../helper/errorTools';
3
3
  import { mergeObservables, Observable } from '../helper/observable';
4
4
  import { find, map } from '../helper/tools';
5
5
  import { jsonStringify } from '../helper/serialisation/jsonStringify';
@@ -32,25 +32,27 @@ function createConsoleObservable(api) {
32
32
  console[api] = originalConsoleApi;
33
33
  };
34
34
  });
35
- return observable;
36
35
  }
37
36
  function buildConsoleLog(params, api, handlingStack) {
38
37
  var message = map(params, function (param) {
39
38
  return formatConsoleParameters(param);
40
39
  }).join(' ');
41
40
  var stack;
41
+ var causes;
42
42
  if (api === ConsoleApiName.error) {
43
43
  var firstErrorParam = find(params, function (param) {
44
44
  return param instanceof Error;
45
45
  });
46
46
  stack = firstErrorParam ? toStackTraceString(computeStackTrace(firstErrorParam)) : undefined;
47
47
  message = 'console error: ' + message;
48
+ causes = firstErrorParam ? flattenErrorCauses(firstErrorParam, 'console') : undefined;
48
49
  }
49
50
  return {
50
51
  api: api,
51
52
  message: message,
52
53
  stack: stack,
53
- handlingStack: handlingStack
54
+ handlingStack: handlingStack,
55
+ causes: causes
54
56
  };
55
57
  }
56
58
  function formatConsoleParameters(param) {
@@ -1 +1 @@
1
- {"version":3,"file":"consoleObservable.js","names":["computeStackTrace","createHandlingStack","formatErrorMessage","toStackTraceString","mergeObservables","Observable","find","map","jsonStringify","ConsoleApiName","callMonitored","consoleObservablesByApi","initConsoleObservable","apis","consoleObservables","api","createConsoleObservable","apply","observable","originalConsoleApi","console","params","slice","call","arguments","handlingStack","notify","buildConsoleLog","message","param","formatConsoleParameters","join","stack","error","firstErrorParam","Error","undefined"],"sources":["../../src/console/consoleObservable.js"],"sourcesContent":["import { computeStackTrace } from '../tracekit'\nimport {\n createHandlingStack,\n formatErrorMessage,\n toStackTraceString\n} from '../helper/errorTools'\nimport { mergeObservables, Observable } from '../helper/observable'\nimport { find, map } from '../helper/tools'\nimport { jsonStringify } from '../helper/serialisation/jsonStringify'\nimport { ConsoleApiName } from '../helper/display'\nimport { callMonitored } from '../helper/monitor'\nvar consoleObservablesByApi = {}\n\nexport function initConsoleObservable(apis) {\n var consoleObservables = map(apis, function (api) {\n if (!consoleObservablesByApi[api]) {\n consoleObservablesByApi[api] = createConsoleObservable(api)\n }\n return consoleObservablesByApi[api]\n })\n\n return mergeObservables.apply(this, consoleObservables)\n}\n\n/* eslint-disable no-console */\nfunction createConsoleObservable(api) {\n return new Observable(function (observable) {\n var originalConsoleApi = console[api]\n console[api] = function () {\n var params = [].slice.call(arguments)\n originalConsoleApi.apply(console, arguments)\n var handlingStack = createHandlingStack()\n callMonitored(function () {\n observable.notify(buildConsoleLog(params, api, handlingStack))\n })\n }\n return function () {\n console[api] = originalConsoleApi\n }\n })\n return observable\n}\n\nfunction buildConsoleLog(params, api, handlingStack) {\n var message = map(params, function (param) {\n return formatConsoleParameters(param)\n }).join(' ')\n var stack\n\n if (api === ConsoleApiName.error) {\n var firstErrorParam = find(params, function (param) {\n return param instanceof Error\n })\n stack = firstErrorParam\n ? toStackTraceString(computeStackTrace(firstErrorParam))\n : undefined\n message = 'console error: ' + message\n }\n\n return {\n api: api,\n message: message,\n stack: stack,\n handlingStack: handlingStack\n }\n}\n\nfunction formatConsoleParameters(param) {\n if (typeof param === 'string') {\n return param\n }\n if (param instanceof Error) {\n return formatErrorMessage(computeStackTrace(param))\n }\n return jsonStringify(param, undefined, 2)\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"consoleObservable.js","names":["computeStackTrace","createHandlingStack","formatErrorMessage","toStackTraceString","flattenErrorCauses","mergeObservables","Observable","find","map","jsonStringify","ConsoleApiName","callMonitored","consoleObservablesByApi","initConsoleObservable","apis","consoleObservables","api","createConsoleObservable","apply","observable","originalConsoleApi","console","params","slice","call","arguments","handlingStack","notify","buildConsoleLog","message","param","formatConsoleParameters","join","stack","causes","error","firstErrorParam","Error","undefined"],"sources":["../../src/console/consoleObservable.js"],"sourcesContent":["import { computeStackTrace } from '../tracekit'\nimport {\n createHandlingStack,\n formatErrorMessage,\n toStackTraceString,\n flattenErrorCauses\n} from '../helper/errorTools'\nimport { mergeObservables, Observable } from '../helper/observable'\nimport { find, map } from '../helper/tools'\nimport { jsonStringify } from '../helper/serialisation/jsonStringify'\nimport { ConsoleApiName } from '../helper/display'\nimport { callMonitored } from '../helper/monitor'\nvar consoleObservablesByApi = {}\n\nexport function initConsoleObservable(apis) {\n var consoleObservables = map(apis, function (api) {\n if (!consoleObservablesByApi[api]) {\n consoleObservablesByApi[api] = createConsoleObservable(api)\n }\n return consoleObservablesByApi[api]\n })\n\n return mergeObservables.apply(this, consoleObservables)\n}\n\n/* eslint-disable no-console */\nfunction createConsoleObservable(api) {\n return new Observable(function (observable) {\n var originalConsoleApi = console[api]\n console[api] = function () {\n var params = [].slice.call(arguments)\n originalConsoleApi.apply(console, arguments)\n var handlingStack = createHandlingStack()\n callMonitored(function () {\n observable.notify(buildConsoleLog(params, api, handlingStack))\n })\n }\n return function () {\n console[api] = originalConsoleApi\n }\n })\n}\n\nfunction buildConsoleLog(params, api, handlingStack) {\n var message = map(params, function (param) {\n return formatConsoleParameters(param)\n }).join(' ')\n var stack\n var causes\n if (api === ConsoleApiName.error) {\n var firstErrorParam = find(params, function (param) {\n return param instanceof Error\n })\n stack = firstErrorParam\n ? toStackTraceString(computeStackTrace(firstErrorParam))\n : undefined\n message = 'console error: ' + message\n causes = firstErrorParam\n ? flattenErrorCauses(firstErrorParam, 'console')\n : undefined\n }\n\n return {\n api: api,\n message: message,\n stack: stack,\n handlingStack: handlingStack,\n causes: causes\n }\n}\n\nfunction formatConsoleParameters(param) {\n if (typeof param === 'string') {\n return param\n }\n if (param instanceof Error) {\n return formatErrorMessage(computeStackTrace(param))\n }\n return jsonStringify(param, undefined, 2)\n}\n"],"mappings":"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"}
@@ -51,17 +51,18 @@ export function instrumentSetter(object, property, after) {
51
51
  stop: noop
52
52
  };
53
53
  }
54
- // Using the patched `setTimeout` from Zone.js triggers a rendering loop in some Angular
55
- // component, see issue RUMF-1443
56
- var instrumentation = function instrumentation(thisObject, value) {
54
+ var stoppedInstrumentation = noop;
55
+ var _instrumentation = function instrumentation(thisObject, value) {
57
56
  // put hooked setter into event loop to avoid of set latency
58
57
  setTimeout(function () {
59
- after(thisObject, value);
58
+ if (_instrumentation !== stoppedInstrumentation) {
59
+ after(thisObject, value);
60
+ }
60
61
  }, 0);
61
62
  };
62
63
  var instrumentationWrapper = function instrumentationWrapper(value) {
63
64
  originalDescriptor.set.call(this, value);
64
- instrumentation(this, value);
65
+ _instrumentation(this, value);
65
66
  };
66
67
  Object.defineProperty(object, property, {
67
68
  set: instrumentationWrapper
@@ -71,7 +72,7 @@ export function instrumentSetter(object, property, after) {
71
72
  if (Object.getOwnPropertyDescriptor(object, property) && Object.getOwnPropertyDescriptor(object, property).set === instrumentationWrapper) {
72
73
  Object.defineProperty(object, property, originalDescriptor);
73
74
  } else {
74
- instrumentation = noop;
75
+ _instrumentation = stoppedInstrumentation;
75
76
  }
76
77
  }
77
78
  };
@@ -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","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 // Using the patched `setTimeout` from Zone.js triggers a rendering loop in some Angular\n // component, see issue RUMF-1443\n var instrumentation = function (thisObject, value) {\n // put hooked setter into event loop to avoid of set latency\n setTimeout(function () {\n after(thisObject, value)\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 = noop\n }\n }\n }\n}\n"],"mappings":"AAAA,SAASA,IAAI,QAAQ,SAAS;AAC9B,SAASC,UAAU,QAAQ,SAAS;AACpC,SAASC,aAAa,QAAQ,WAAW;AACzC,OAAO,SAASC,gBAAgBA,CAACC,MAAM,EAAEC,MAAM,EAAEC,sBAAsB,EAAE;EACvE,IAAIC,QAAQ,GAAGH,MAAM,CAACC,MAAM,CAAC;EAE7B,IAAIG,eAAe,GAAGF,sBAAsB,CAACC,QAAQ,CAAC;EAEtD,IAAIE,sBAAsB,GAAG,SAAzBA,sBAAsBA,CAAA,EAAe;IACvC,IAAI,OAAOD,eAAe,KAAK,UAAU,EAAE;MACzC,OAAOE,SAAS;IAClB;IACA;IACA,OAAOF,eAAe,CAACG,KAAK,CAAC,IAAI,EAAEC,SAAS,CAAC;EAC/C,CAAC;EACDR,MAAM,CAACC,MAAM,CAAC,GAAGI,sBAAsB;EACvC,OAAO;IACLI,IAAI,EAAE,SAAAA,KAAA,EAAY;MAChB,IAAIT,MAAM,CAACC,MAAM,CAAC,KAAKI,sBAAsB,EAAE;QAC7CL,MAAM,CAACC,MAAM,CAAC,GAAGE,QAAQ;MAC3B,CAAC,MAAM;QACLC,eAAe,GAAGD,QAAQ;MAC5B;IACF;EACF,CAAC;AACH;AAEA,OAAO,SAASO,+BAA+BA,CAACV,MAAM,EAAEC,MAAM,EAAEU,WAAW,EAAE;EAC3E,OAAOZ,gBAAgB,CAACC,MAAM,EAAEC,MAAM,EAAE,UAAUE,QAAQ,EAAE;IAC1D,OAAO,YAAY;MACjB,IAAIS,MAAM;MACV,IAAID,WAAW,IAAIA,WAAW,CAACE,MAAM,EAAE;QACrCf,aAAa,CAACa,WAAW,CAACE,MAAM,EAAE,IAAI,EAAEL,SAAS,CAAC;QAClD;MACF;;MACA,IAAI,OAAOL,QAAQ,KAAK,UAAU,EAAE;QAClC;QACAS,MAAM,GAAGT,QAAQ,CAACI,KAAK,CAAC,IAAI,EAAEC,SAAS,CAAC;MAC1C;MACA,IAAIG,WAAW,IAAIA,WAAW,CAACG,KAAK,EAAE;QACpChB,aAAa,CAACa,WAAW,CAACG,KAAK,EAAE,IAAI,EAAEN,SAAS,CAAC;QACjD;MACF;;MACA,OAAOI,MAAM;IACf,CAAC;EACH,CAAC,CAAC;AACJ;AAEA,OAAO,SAASG,gBAAgBA,CAACf,MAAM,EAAEgB,QAAQ,EAAEF,KAAK,EAAE;EACxD,IAAIG,kBAAkB,GAAGC,MAAM,CAACC,wBAAwB,CAACnB,MAAM,EAAEgB,QAAQ,CAAC;EAC1E,IACE,CAACC,kBAAkB,IACnB,CAACA,kBAAkB,CAACG,GAAG,IACvB,CAACH,kBAAkB,CAACI,YAAY,EAChC;IACA,OAAO;MAAEZ,IAAI,EAAEb;IAAK,CAAC;EACvB;EACA;EACA;EACA,IAAIQ,eAAe,GAAG,SAAAA,gBAAUkB,UAAU,EAAEC,KAAK,EAAE;IACjD;IACA1B,UAAU,CAAC,YAAY;MACrBiB,KAAK,CAACQ,UAAU,EAAEC,KAAK,CAAC;IAC1B,CAAC,EAAE,CAAC,CAAC;EACP,CAAC;EAED,IAAIlB,sBAAsB,GAAG,SAAzBA,sBAAsBA,CAAakB,KAAK,EAAE;IAC5CN,kBAAkB,CAACG,GAAG,CAACI,IAAI,CAAC,IAAI,EAAED,KAAK,CAAC;IACxCnB,eAAe,CAAC,IAAI,EAAEmB,KAAK,CAAC;EAC9B,CAAC;EAEDL,MAAM,CAACO,cAAc,CAACzB,MAAM,EAAEgB,QAAQ,EAAE;IACtCI,GAAG,EAAEf;EACP,CAAC,CAAC;EAEF,OAAO;IACLI,IAAI,EAAE,SAAAA,KAAA,EAAY;MAChB,IACES,MAAM,CAACC,wBAAwB,CAACnB,MAAM,EAAEgB,QAAQ,CAAC,IACjDE,MAAM,CAACC,wBAAwB,CAACnB,MAAM,EAAEgB,QAAQ,CAAC,CAACI,GAAG,KACnDf,sBAAsB,EACxB;QACAa,MAAM,CAACO,cAAc,CAACzB,MAAM,EAAEgB,QAAQ,EAAEC,kBAAkB,CAAC;MAC7D,CAAC,MAAM;QACLb,eAAe,GAAGR,IAAI;MACxB;IACF;EACF,CAAC;AACH"}
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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"}
@@ -2,9 +2,11 @@ import { each, filter } from './tools';
2
2
  export var LifeCycleEventType = {
3
3
  PERFORMANCE_ENTRIES_COLLECTED: 'PERFORMANCE_ENTRIES_COLLECTED',
4
4
  AUTO_ACTION_COMPLETED: 'AUTO_ACTION_COMPLETED',
5
+ BEFORE_VIEW_CREATED: 'BEFORE_VIEW_CREATED',
5
6
  VIEW_CREATED: 'VIEW_CREATED',
6
7
  VIEW_UPDATED: 'VIEW_UPDATED',
7
8
  VIEW_ENDED: 'VIEW_ENDED',
9
+ AFTER_VIEW_ENDED: 'AFTER_VIEW_ENDED',
8
10
  SESSION_RENEWED: 'SESSION_RENEWED',
9
11
  SESSION_EXPIRED: 'SESSION_EXPIRED',
10
12
  PAGE_EXITED: 'PAGE_EXITED',
@@ -1 +1 @@
1
- {"version":3,"file":"lifeCycle.js","names":["each","filter","LifeCycleEventType","PERFORMANCE_ENTRIES_COLLECTED","AUTO_ACTION_COMPLETED","VIEW_CREATED","VIEW_UPDATED","VIEW_ENDED","SESSION_RENEWED","SESSION_EXPIRED","PAGE_EXITED","REQUEST_STARTED","REQUEST_COMPLETED","RAW_RUM_EVENT_COLLECTED","RUM_EVENT_COLLECTED","RAW_ERROR_COLLECTED","RAW_LOG_COLLECTED","LOG_COLLECTED","LifeCycle","callbacks","prototype","notify","eventType","data","eventCallbacks","callback","subscribe","push","_this","unsubscribe","other"],"sources":["../../src/helper/lifeCycle.js"],"sourcesContent":["import { each, filter } from './tools'\nexport var LifeCycleEventType = {\n PERFORMANCE_ENTRIES_COLLECTED: 'PERFORMANCE_ENTRIES_COLLECTED',\n AUTO_ACTION_COMPLETED: 'AUTO_ACTION_COMPLETED',\n VIEW_CREATED: 'VIEW_CREATED',\n VIEW_UPDATED: 'VIEW_UPDATED',\n VIEW_ENDED: 'VIEW_ENDED',\n SESSION_RENEWED: 'SESSION_RENEWED',\n SESSION_EXPIRED: 'SESSION_EXPIRED',\n PAGE_EXITED: 'PAGE_EXITED',\n REQUEST_STARTED: 'REQUEST_STARTED',\n REQUEST_COMPLETED: 'REQUEST_COMPLETED',\n RAW_RUM_EVENT_COLLECTED: 'RAW_RUM_EVENT_COLLECTED',\n RUM_EVENT_COLLECTED: 'RUM_EVENT_COLLECTED',\n RAW_ERROR_COLLECTED: 'RAW_ERROR_COLLECTED',\n RAW_LOG_COLLECTED: 'RAW_LOG_COLLECTED',\n LOG_COLLECTED: 'LOG_COLLECTED'\n}\nexport function LifeCycle() {\n this.callbacks = {}\n}\nLifeCycle.prototype = {\n notify: function (eventType, data) {\n var eventCallbacks = this.callbacks[eventType]\n if (eventCallbacks) {\n each(eventCallbacks, function (callback) {\n callback(data)\n })\n }\n },\n subscribe: function (eventType, callback) {\n if (!this.callbacks[eventType]) {\n this.callbacks[eventType] = []\n }\n this.callbacks[eventType].push(callback)\n var _this = this\n return {\n unsubscribe: function () {\n _this.callbacks[eventType] = filter(\n _this.callbacks[eventType],\n function (other) {\n return other !== callback\n }\n )\n }\n }\n }\n}\n"],"mappings":"AAAA,SAASA,IAAI,EAAEC,MAAM,QAAQ,SAAS;AACtC,OAAO,IAAIC,kBAAkB,GAAG;EAC9BC,6BAA6B,EAAE,+BAA+B;EAC9DC,qBAAqB,EAAE,uBAAuB;EAC9CC,YAAY,EAAE,cAAc;EAC5BC,YAAY,EAAE,cAAc;EAC5BC,UAAU,EAAE,YAAY;EACxBC,eAAe,EAAE,iBAAiB;EAClCC,eAAe,EAAE,iBAAiB;EAClCC,WAAW,EAAE,aAAa;EAC1BC,eAAe,EAAE,iBAAiB;EAClCC,iBAAiB,EAAE,mBAAmB;EACtCC,uBAAuB,EAAE,yBAAyB;EAClDC,mBAAmB,EAAE,qBAAqB;EAC1CC,mBAAmB,EAAE,qBAAqB;EAC1CC,iBAAiB,EAAE,mBAAmB;EACtCC,aAAa,EAAE;AACjB,CAAC;AACD,OAAO,SAASC,SAASA,CAAA,EAAG;EAC1B,IAAI,CAACC,SAAS,GAAG,CAAC,CAAC;AACrB;AACAD,SAAS,CAACE,SAAS,GAAG;EACpBC,MAAM,EAAE,SAAAA,OAAUC,SAAS,EAAEC,IAAI,EAAE;IACjC,IAAIC,cAAc,GAAG,IAAI,CAACL,SAAS,CAACG,SAAS,CAAC;IAC9C,IAAIE,cAAc,EAAE;MAClBxB,IAAI,CAACwB,cAAc,EAAE,UAAUC,QAAQ,EAAE;QACvCA,QAAQ,CAACF,IAAI,CAAC;MAChB,CAAC,CAAC;IACJ;EACF,CAAC;EACDG,SAAS,EAAE,SAAAA,UAAUJ,SAAS,EAAEG,QAAQ,EAAE;IACxC,IAAI,CAAC,IAAI,CAACN,SAAS,CAACG,SAAS,CAAC,EAAE;MAC9B,IAAI,CAACH,SAAS,CAACG,SAAS,CAAC,GAAG,EAAE;IAChC;IACA,IAAI,CAACH,SAAS,CAACG,SAAS,CAAC,CAACK,IAAI,CAACF,QAAQ,CAAC;IACxC,IAAIG,KAAK,GAAG,IAAI;IAChB,OAAO;MACLC,WAAW,EAAE,SAAAA,YAAA,EAAY;QACvBD,KAAK,CAACT,SAAS,CAACG,SAAS,CAAC,GAAGrB,MAAM,CACjC2B,KAAK,CAACT,SAAS,CAACG,SAAS,CAAC,EAC1B,UAAUQ,KAAK,EAAE;UACf,OAAOA,KAAK,KAAKL,QAAQ;QAC3B,CACF,CAAC;MACH;IACF,CAAC;EACH;AACF,CAAC"}
1
+ {"version":3,"file":"lifeCycle.js","names":["each","filter","LifeCycleEventType","PERFORMANCE_ENTRIES_COLLECTED","AUTO_ACTION_COMPLETED","BEFORE_VIEW_CREATED","VIEW_CREATED","VIEW_UPDATED","VIEW_ENDED","AFTER_VIEW_ENDED","SESSION_RENEWED","SESSION_EXPIRED","PAGE_EXITED","REQUEST_STARTED","REQUEST_COMPLETED","RAW_RUM_EVENT_COLLECTED","RUM_EVENT_COLLECTED","RAW_ERROR_COLLECTED","RAW_LOG_COLLECTED","LOG_COLLECTED","LifeCycle","callbacks","prototype","notify","eventType","data","eventCallbacks","callback","subscribe","push","_this","unsubscribe","other"],"sources":["../../src/helper/lifeCycle.js"],"sourcesContent":["import { each, filter } from './tools'\nexport var LifeCycleEventType = {\n PERFORMANCE_ENTRIES_COLLECTED: 'PERFORMANCE_ENTRIES_COLLECTED',\n AUTO_ACTION_COMPLETED: 'AUTO_ACTION_COMPLETED',\n BEFORE_VIEW_CREATED: 'BEFORE_VIEW_CREATED',\n VIEW_CREATED: 'VIEW_CREATED',\n VIEW_UPDATED: 'VIEW_UPDATED',\n VIEW_ENDED: 'VIEW_ENDED',\n AFTER_VIEW_ENDED: 'AFTER_VIEW_ENDED',\n SESSION_RENEWED: 'SESSION_RENEWED',\n SESSION_EXPIRED: 'SESSION_EXPIRED',\n PAGE_EXITED: 'PAGE_EXITED',\n REQUEST_STARTED: 'REQUEST_STARTED',\n REQUEST_COMPLETED: 'REQUEST_COMPLETED',\n RAW_RUM_EVENT_COLLECTED: 'RAW_RUM_EVENT_COLLECTED',\n RUM_EVENT_COLLECTED: 'RUM_EVENT_COLLECTED',\n RAW_ERROR_COLLECTED: 'RAW_ERROR_COLLECTED',\n RAW_LOG_COLLECTED: 'RAW_LOG_COLLECTED',\n LOG_COLLECTED: 'LOG_COLLECTED'\n}\nexport function LifeCycle() {\n this.callbacks = {}\n}\nLifeCycle.prototype = {\n notify: function (eventType, data) {\n var eventCallbacks = this.callbacks[eventType]\n if (eventCallbacks) {\n each(eventCallbacks, function (callback) {\n callback(data)\n })\n }\n },\n subscribe: function (eventType, callback) {\n if (!this.callbacks[eventType]) {\n this.callbacks[eventType] = []\n }\n this.callbacks[eventType].push(callback)\n var _this = this\n return {\n unsubscribe: function () {\n _this.callbacks[eventType] = filter(\n _this.callbacks[eventType],\n function (other) {\n return other !== callback\n }\n )\n }\n }\n }\n}\n"],"mappings":"AAAA,SAASA,IAAI,EAAEC,MAAM,QAAQ,SAAS;AACtC,OAAO,IAAIC,kBAAkB,GAAG;EAC9BC,6BAA6B,EAAE,+BAA+B;EAC9DC,qBAAqB,EAAE,uBAAuB;EAC9CC,mBAAmB,EAAE,qBAAqB;EAC1CC,YAAY,EAAE,cAAc;EAC5BC,YAAY,EAAE,cAAc;EAC5BC,UAAU,EAAE,YAAY;EACxBC,gBAAgB,EAAE,kBAAkB;EACpCC,eAAe,EAAE,iBAAiB;EAClCC,eAAe,EAAE,iBAAiB;EAClCC,WAAW,EAAE,aAAa;EAC1BC,eAAe,EAAE,iBAAiB;EAClCC,iBAAiB,EAAE,mBAAmB;EACtCC,uBAAuB,EAAE,yBAAyB;EAClDC,mBAAmB,EAAE,qBAAqB;EAC1CC,mBAAmB,EAAE,qBAAqB;EAC1CC,iBAAiB,EAAE,mBAAmB;EACtCC,aAAa,EAAE;AACjB,CAAC;AACD,OAAO,SAASC,SAASA,CAAA,EAAG;EAC1B,IAAI,CAACC,SAAS,GAAG,CAAC,CAAC;AACrB;AACAD,SAAS,CAACE,SAAS,GAAG;EACpBC,MAAM,EAAE,SAAAA,OAAUC,SAAS,EAAEC,IAAI,EAAE;IACjC,IAAIC,cAAc,GAAG,IAAI,CAACL,SAAS,CAACG,SAAS,CAAC;IAC9C,IAAIE,cAAc,EAAE;MAClB1B,IAAI,CAAC0B,cAAc,EAAE,UAAUC,QAAQ,EAAE;QACvCA,QAAQ,CAACF,IAAI,CAAC;MAChB,CAAC,CAAC;IACJ;EACF,CAAC;EACDG,SAAS,EAAE,SAAAA,UAAUJ,SAAS,EAAEG,QAAQ,EAAE;IACxC,IAAI,CAAC,IAAI,CAACN,SAAS,CAACG,SAAS,CAAC,EAAE;MAC9B,IAAI,CAACH,SAAS,CAACG,SAAS,CAAC,GAAG,EAAE;IAChC;IACA,IAAI,CAACH,SAAS,CAACG,SAAS,CAAC,CAACK,IAAI,CAACF,QAAQ,CAAC;IACxC,IAAIG,KAAK,GAAG,IAAI;IAChB,OAAO;MACLC,WAAW,EAAE,SAAAA,YAAA,EAAY;QACvBD,KAAK,CAACT,SAAS,CAACG,SAAS,CAAC,GAAGvB,MAAM,CACjC6B,KAAK,CAACT,SAAS,CAACG,SAAS,CAAC,EAC1B,UAAUQ,KAAK,EAAE;UACf,OAAOA,KAAK,KAAKL,QAAQ;QAC3B,CACF,CAAC;MACH;IACF,CAAC;EACH;AACF,CAAC"}
@@ -5,10 +5,13 @@ import { startSessionStore } from './sessionStore';
5
5
  import { SESSION_TIME_OUT_DELAY } from './sessionConstants';
6
6
  import { DOM_EVENT } from '../helper/enums';
7
7
  import { clearInterval, setInterval } from '../helper/timer';
8
+ import { Observable } from '../helper/observable';
8
9
  export var VISIBILITY_CHECK_DELAY = ONE_MINUTE;
9
10
  var SESSION_CONTEXT_TIMEOUT_DELAY = SESSION_TIME_OUT_DELAY;
10
11
  var stopCallbacks = [];
11
12
  export var startSessionManager = function startSessionManager(options, productKey, computeSessionState) {
13
+ var renewObservable = new Observable();
14
+ var expireObservable = new Observable();
12
15
  var sessionStore = startSessionStore(options, productKey, computeSessionState);
13
16
  stopCallbacks.push(function () {
14
17
  return sessionStore.stop();
@@ -19,8 +22,10 @@ export var startSessionManager = function startSessionManager(options, productKe
19
22
  });
20
23
  sessionStore.renewObservable.subscribe(function () {
21
24
  sessionContextHistory.add(buildSessionContext(), relativeNow());
25
+ renewObservable.notify();
22
26
  });
23
27
  sessionStore.expireObservable.subscribe(function () {
28
+ expireObservable.notify();
24
29
  sessionContextHistory.closeActive(relativeNow());
25
30
  });
26
31
  sessionStore.expandOrRenewSession();
@@ -41,8 +46,8 @@ export var startSessionManager = function startSessionManager(options, productKe
41
46
  findActiveSession: function findActiveSession(startTime) {
42
47
  return sessionContextHistory.find(startTime);
43
48
  },
44
- renewObservable: sessionStore.renewObservable,
45
- expireObservable: sessionStore.expireObservable,
49
+ renewObservable: renewObservable,
50
+ expireObservable: expireObservable,
46
51
  expire: sessionStore.expire
47
52
  };
48
53
  };
@@ -1 +1 @@
1
- {"version":3,"file":"sessionManagement.js","names":["relativeNow","clocksOrigin","ONE_MINUTE","each","addEventListeners","addEventListener","ContextHistory","startSessionStore","SESSION_TIME_OUT_DELAY","DOM_EVENT","clearInterval","setInterval","VISIBILITY_CHECK_DELAY","SESSION_CONTEXT_TIMEOUT_DELAY","stopCallbacks","startSessionManager","options","productKey","computeSessionState","sessionStore","push","stop","sessionContextHistory","renewObservable","subscribe","add","buildSessionContext","expireObservable","closeActive","expandOrRenewSession","relative","trackActivity","trackVisibility","expandSession","id","getSession","trackingType","findActiveSession","startTime","find","expire","stopSessionManager","e","_addEventListeners","window","CLICK","TOUCH_START","KEY_DOWN","SCROLL","capture","passive","expandSessionWhenVisible","document","visibilityState","_addEventListener","VISIBILITY_CHANGE","visibilityCheckInterval"],"sources":["../../src/session/sessionManagement.js"],"sourcesContent":["import { relativeNow, clocksOrigin, ONE_MINUTE, each } from '../helper/tools'\nimport {\n addEventListeners,\n addEventListener\n} from '../browser/addEventListener'\nimport { ContextHistory } from '../helper/contextHistory'\nimport { startSessionStore } from './sessionStore'\nimport { SESSION_TIME_OUT_DELAY } from './sessionConstants'\nimport { DOM_EVENT } from '../helper/enums'\nimport { clearInterval, setInterval } from '../helper/timer'\nexport var VISIBILITY_CHECK_DELAY = ONE_MINUTE\nvar SESSION_CONTEXT_TIMEOUT_DELAY = SESSION_TIME_OUT_DELAY\nvar stopCallbacks = []\n\nexport var startSessionManager = function (\n options,\n productKey,\n computeSessionState\n) {\n var sessionStore = startSessionStore(options, productKey, computeSessionState)\n stopCallbacks.push(function () {\n return sessionStore.stop()\n })\n\n var sessionContextHistory = new ContextHistory(SESSION_CONTEXT_TIMEOUT_DELAY)\n stopCallbacks.push(function () {\n return sessionContextHistory.stop()\n })\n\n sessionStore.renewObservable.subscribe(function () {\n sessionContextHistory.add(buildSessionContext(), relativeNow())\n })\n sessionStore.expireObservable.subscribe(function () {\n sessionContextHistory.closeActive(relativeNow())\n })\n\n sessionStore.expandOrRenewSession()\n sessionContextHistory.add(buildSessionContext(), clocksOrigin().relative)\n\n trackActivity(function () {\n return sessionStore.expandOrRenewSession()\n })\n trackVisibility(function () {\n return sessionStore.expandSession()\n })\n\n function buildSessionContext() {\n return {\n id: sessionStore.getSession().id,\n trackingType: sessionStore.getSession()[productKey]\n }\n }\n\n return {\n findActiveSession: function (startTime) {\n return sessionContextHistory.find(startTime)\n },\n renewObservable: sessionStore.renewObservable,\n expireObservable: sessionStore.expireObservable,\n expire: sessionStore.expire\n }\n}\n\nexport function stopSessionManager() {\n each(stopCallbacks, function (e) {\n return e()\n })\n stopCallbacks = []\n}\n\nfunction trackActivity(expandOrRenewSession) {\n var _addEventListeners = addEventListeners(\n window,\n [\n DOM_EVENT.CLICK,\n DOM_EVENT.TOUCH_START,\n DOM_EVENT.KEY_DOWN,\n DOM_EVENT.SCROLL\n ],\n expandOrRenewSession,\n { capture: true, passive: true }\n )\n stopCallbacks.push(_addEventListeners.stop)\n}\n\nfunction trackVisibility(expandSession) {\n var expandSessionWhenVisible = function () {\n if (document.visibilityState === 'visible') {\n expandSession()\n }\n }\n var _addEventListener = addEventListener(\n document,\n DOM_EVENT.VISIBILITY_CHANGE,\n expandSessionWhenVisible\n )\n stopCallbacks.push(_addEventListener.stop)\n\n var visibilityCheckInterval = setInterval(\n expandSessionWhenVisible,\n VISIBILITY_CHECK_DELAY\n )\n stopCallbacks.push(function () {\n clearInterval(visibilityCheckInterval)\n })\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"sessionManagement.js","names":["relativeNow","clocksOrigin","ONE_MINUTE","each","addEventListeners","addEventListener","ContextHistory","startSessionStore","SESSION_TIME_OUT_DELAY","DOM_EVENT","clearInterval","setInterval","Observable","VISIBILITY_CHECK_DELAY","SESSION_CONTEXT_TIMEOUT_DELAY","stopCallbacks","startSessionManager","options","productKey","computeSessionState","renewObservable","expireObservable","sessionStore","push","stop","sessionContextHistory","subscribe","add","buildSessionContext","notify","closeActive","expandOrRenewSession","relative","trackActivity","trackVisibility","expandSession","id","getSession","trackingType","findActiveSession","startTime","find","expire","stopSessionManager","e","_addEventListeners","window","CLICK","TOUCH_START","KEY_DOWN","SCROLL","capture","passive","expandSessionWhenVisible","document","visibilityState","_addEventListener","VISIBILITY_CHANGE","visibilityCheckInterval"],"sources":["../../src/session/sessionManagement.js"],"sourcesContent":["import { relativeNow, clocksOrigin, ONE_MINUTE, each } from '../helper/tools'\nimport {\n addEventListeners,\n addEventListener\n} from '../browser/addEventListener'\nimport { ContextHistory } from '../helper/contextHistory'\nimport { startSessionStore } from './sessionStore'\nimport { SESSION_TIME_OUT_DELAY } from './sessionConstants'\nimport { DOM_EVENT } from '../helper/enums'\nimport { clearInterval, setInterval } from '../helper/timer'\nimport { Observable } from '../helper/observable'\nexport var VISIBILITY_CHECK_DELAY = ONE_MINUTE\nvar SESSION_CONTEXT_TIMEOUT_DELAY = SESSION_TIME_OUT_DELAY\nvar stopCallbacks = []\n\nexport var startSessionManager = function (\n options,\n productKey,\n computeSessionState\n) {\n var renewObservable = new Observable()\n var expireObservable = new Observable()\n var sessionStore = startSessionStore(options, productKey, computeSessionState)\n stopCallbacks.push(function () {\n return sessionStore.stop()\n })\n\n var sessionContextHistory = new ContextHistory(SESSION_CONTEXT_TIMEOUT_DELAY)\n stopCallbacks.push(function () {\n return sessionContextHistory.stop()\n })\n\n sessionStore.renewObservable.subscribe(function () {\n sessionContextHistory.add(buildSessionContext(), relativeNow())\n renewObservable.notify()\n })\n sessionStore.expireObservable.subscribe(function () {\n expireObservable.notify()\n sessionContextHistory.closeActive(relativeNow())\n })\n\n sessionStore.expandOrRenewSession()\n sessionContextHistory.add(buildSessionContext(), clocksOrigin().relative)\n\n trackActivity(function () {\n return sessionStore.expandOrRenewSession()\n })\n trackVisibility(function () {\n return sessionStore.expandSession()\n })\n\n function buildSessionContext() {\n return {\n id: sessionStore.getSession().id,\n trackingType: sessionStore.getSession()[productKey]\n }\n }\n\n return {\n findActiveSession: function (startTime) {\n return sessionContextHistory.find(startTime)\n },\n renewObservable: renewObservable,\n expireObservable: expireObservable,\n expire: sessionStore.expire\n }\n}\n\nexport function stopSessionManager() {\n each(stopCallbacks, function (e) {\n return e()\n })\n stopCallbacks = []\n}\n\nfunction trackActivity(expandOrRenewSession) {\n var _addEventListeners = addEventListeners(\n window,\n [\n DOM_EVENT.CLICK,\n DOM_EVENT.TOUCH_START,\n DOM_EVENT.KEY_DOWN,\n DOM_EVENT.SCROLL\n ],\n expandOrRenewSession,\n { capture: true, passive: true }\n )\n stopCallbacks.push(_addEventListeners.stop)\n}\n\nfunction trackVisibility(expandSession) {\n var expandSessionWhenVisible = function () {\n if (document.visibilityState === 'visible') {\n expandSession()\n }\n }\n var _addEventListener = addEventListener(\n document,\n DOM_EVENT.VISIBILITY_CHANGE,\n expandSessionWhenVisible\n )\n stopCallbacks.push(_addEventListener.stop)\n\n var visibilityCheckInterval = setInterval(\n expandSessionWhenVisible,\n VISIBILITY_CHECK_DELAY\n )\n stopCallbacks.push(function () {\n clearInterval(visibilityCheckInterval)\n })\n}\n"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import { COOKIE_ACCESS_DELAY } from '../browser/cookie';
2
2
  import { Observable } from '../helper/observable';
3
- import { dateNow, UUID, throttle } from '../helper/tools';
3
+ import { dateNow, UUID, throttle, ONE_SECOND } from '../helper/tools';
4
4
  import { SESSION_TIME_OUT_DELAY } from './sessionConstants';
5
5
  import { retrieveSession, withCookieLockAccess, clearSession } from './sessionCookieStore';
6
6
  import { clearInterval, setInterval } from '../helper/timer';
7
-
7
+ export var STORAGE_POLL_DELAY = ONE_SECOND;
8
8
  /**
9
9
  * Different session concepts:
10
10
  * - tracked, the session has an id and is updated along the user navigation
@@ -14,9 +14,9 @@ import { clearInterval, setInterval } from '../helper/timer';
14
14
  export function startSessionStore(options, productKey, computeSessionState) {
15
15
  var renewObservable = new Observable();
16
16
  var expireObservable = new Observable();
17
- var watchSessionTimeoutId = setInterval(watchSession, COOKIE_ACCESS_DELAY);
17
+ var watchSessionTimeoutId = setInterval(watchSession, STORAGE_POLL_DELAY);
18
18
  var sessionCache = retrieveActiveSession();
19
- function expandOrRenewSession() {
19
+ var _throttleExpandOrRenewSession = throttle(function () {
20
20
  var isTracked;
21
21
  withCookieLockAccess({
22
22
  options: options,
@@ -32,7 +32,27 @@ export function startSessionStore(options, productKey, computeSessionState) {
32
32
  sessionCache = cookieSession;
33
33
  }
34
34
  });
35
- }
35
+ }, STORAGE_POLL_DELAY);
36
+ var throttledExpandOrRenewSession = _throttleExpandOrRenewSession.throttled;
37
+ var cancelExpandOrRenewSession = _throttleExpandOrRenewSession.cancel;
38
+ // function expandOrRenewSession() {
39
+ // var isTracked
40
+ // withCookieLockAccess({
41
+ // options: options,
42
+ // process: function (cookieSession) {
43
+ // var synchronizedSession = synchronizeSession(cookieSession)
44
+ // isTracked = expandOrRenewCookie(synchronizedSession)
45
+ // return synchronizedSession
46
+ // },
47
+ // after: function (cookieSession) {
48
+ // if (isTracked && !hasSessionInCache()) {
49
+ // renewSession(cookieSession)
50
+ // }
51
+ // sessionCache = cookieSession
52
+ // }
53
+ // })
54
+ // }
55
+
36
56
  function expandSession() {
37
57
  withCookieLockAccess({
38
58
  options: options,
@@ -107,7 +127,7 @@ export function startSessionStore(options, productKey, computeSessionState) {
107
127
  return (session.created === undefined || dateNow() - Number(session.created) < SESSION_TIME_OUT_DELAY) && (session.expire === undefined || dateNow() < Number(session.expire));
108
128
  }
109
129
  return {
110
- expandOrRenewSession: throttle(expandOrRenewSession, COOKIE_ACCESS_DELAY).throttled,
130
+ expandOrRenewSession: throttledExpandOrRenewSession,
111
131
  expandSession: expandSession,
112
132
  getSession: function getSession() {
113
133
  return sessionCache;
@@ -115,6 +135,7 @@ export function startSessionStore(options, productKey, computeSessionState) {
115
135
  renewObservable: renewObservable,
116
136
  expireObservable: expireObservable,
117
137
  expire: function expire() {
138
+ cancelExpandOrRenewSession();
118
139
  clearSession(options);
119
140
  synchronizeSession({});
120
141
  },
@@ -1 +1 @@
1
- {"version":3,"file":"sessionStore.js","names":["COOKIE_ACCESS_DELAY","Observable","dateNow","UUID","throttle","SESSION_TIME_OUT_DELAY","retrieveSession","withCookieLockAccess","clearSession","clearInterval","setInterval","startSessionStore","options","productKey","computeSessionState","renewObservable","expireObservable","watchSessionTimeoutId","watchSession","sessionCache","retrieveActiveSession","expandOrRenewSession","isTracked","process","cookieSession","synchronizedSession","synchronizeSession","expandOrRenewCookie","after","hasSessionInCache","renewSession","expandSession","undefined","isActiveSession","isSessionInCacheOutdated","expireSessionInCache","sessionState","trackingType","id","created","String","notify","session","Number","expire","throttled","getSession","stop"],"sources":["../../src/session/sessionStore.js"],"sourcesContent":["import { COOKIE_ACCESS_DELAY } from '../browser/cookie'\nimport { Observable } from '../helper/observable'\nimport { dateNow, UUID, throttle } from '../helper/tools'\nimport { SESSION_TIME_OUT_DELAY } from './sessionConstants'\nimport {\n retrieveSession,\n withCookieLockAccess,\n clearSession\n} from './sessionCookieStore'\nimport { clearInterval, setInterval } from '../helper/timer'\n\n/**\n * Different session concepts:\n * - tracked, the session has an id and is updated along the user navigation\n * - not tracked, the session does not have an id but it is updated along the user navigation\n * - inactive, no session in store or session expired, waiting for a renew session\n */\nexport function startSessionStore(options, productKey, computeSessionState) {\n var renewObservable = new Observable()\n var expireObservable = new Observable()\n\n var watchSessionTimeoutId = setInterval(watchSession, COOKIE_ACCESS_DELAY)\n var sessionCache = retrieveActiveSession()\n\n function expandOrRenewSession() {\n var isTracked\n withCookieLockAccess({\n options: options,\n process: function (cookieSession) {\n var synchronizedSession = synchronizeSession(cookieSession)\n isTracked = expandOrRenewCookie(synchronizedSession)\n return synchronizedSession\n },\n after: function (cookieSession) {\n if (isTracked && !hasSessionInCache()) {\n renewSession(cookieSession)\n }\n sessionCache = cookieSession\n }\n })\n }\n\n function expandSession() {\n withCookieLockAccess({\n options: options,\n process: function (cookieSession) {\n return hasSessionInCache()\n ? synchronizeSession(cookieSession)\n : undefined\n }\n })\n }\n\n /**\n * allows two behaviors:\n * - if the session is active, synchronize the session cache without updating the session cookie\n * - if the session is not active, clear the session cookie and expire the session cache\n */\n function watchSession() {\n withCookieLockAccess({\n options: options,\n process: function (cookieSession) {\n return !isActiveSession(cookieSession) ? {} : undefined\n },\n after: synchronizeSession\n })\n }\n\n function synchronizeSession(cookieSession) {\n if (!isActiveSession(cookieSession)) {\n cookieSession = {}\n }\n if (hasSessionInCache()) {\n if (isSessionInCacheOutdated(cookieSession)) {\n expireSessionInCache()\n } else {\n sessionCache = cookieSession\n }\n }\n return cookieSession\n }\n\n function expandOrRenewCookie(cookieSession) {\n var sessionState = computeSessionState(cookieSession[productKey])\n var trackingType = sessionState.trackingType\n var isTracked = sessionState.isTracked\n cookieSession[productKey] = trackingType\n if (isTracked && !cookieSession.id) {\n cookieSession.id = UUID()\n cookieSession.created = String(dateNow())\n }\n return isTracked\n }\n\n function hasSessionInCache() {\n return sessionCache[productKey] !== undefined\n }\n\n function isSessionInCacheOutdated(cookieSession) {\n return (\n sessionCache.id !== cookieSession.id ||\n sessionCache[productKey] !== cookieSession[productKey]\n )\n }\n\n function expireSessionInCache() {\n sessionCache = {}\n expireObservable.notify()\n }\n\n function renewSession(cookieSession) {\n sessionCache = cookieSession\n renewObservable.notify()\n }\n\n function retrieveActiveSession() {\n var session = retrieveSession()\n if (isActiveSession(session)) {\n return session\n }\n return {}\n }\n\n function isActiveSession(session) {\n // created and expire can be undefined for versions which was not storing them\n // these checks could be removed when older versions will not be available/live anymore\n return (\n (session.created === undefined ||\n dateNow() - Number(session.created) < SESSION_TIME_OUT_DELAY) &&\n (session.expire === undefined || dateNow() < Number(session.expire))\n )\n }\n\n return {\n expandOrRenewSession: throttle(expandOrRenewSession, COOKIE_ACCESS_DELAY)\n .throttled,\n expandSession: expandSession,\n getSession: function () {\n return sessionCache\n },\n renewObservable: renewObservable,\n expireObservable: expireObservable,\n expire: function () {\n clearSession(options)\n synchronizeSession({})\n },\n stop: function () {\n clearInterval(watchSessionTimeoutId)\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"sessionStore.js","names":["COOKIE_ACCESS_DELAY","Observable","dateNow","UUID","throttle","ONE_SECOND","SESSION_TIME_OUT_DELAY","retrieveSession","withCookieLockAccess","clearSession","clearInterval","setInterval","STORAGE_POLL_DELAY","startSessionStore","options","productKey","computeSessionState","renewObservable","expireObservable","watchSessionTimeoutId","watchSession","sessionCache","retrieveActiveSession","_throttleExpandOrRenewSession","isTracked","process","cookieSession","synchronizedSession","synchronizeSession","expandOrRenewCookie","after","hasSessionInCache","renewSession","throttledExpandOrRenewSession","throttled","cancelExpandOrRenewSession","cancel","expandSession","undefined","isActiveSession","isSessionInCacheOutdated","expireSessionInCache","sessionState","trackingType","id","created","String","notify","session","Number","expire","expandOrRenewSession","getSession","stop"],"sources":["../../src/session/sessionStore.js"],"sourcesContent":["import { COOKIE_ACCESS_DELAY } from '../browser/cookie'\nimport { Observable } from '../helper/observable'\nimport { dateNow, UUID, throttle, ONE_SECOND } from '../helper/tools'\nimport { SESSION_TIME_OUT_DELAY } from './sessionConstants'\nimport {\n retrieveSession,\n withCookieLockAccess,\n clearSession\n} from './sessionCookieStore'\nimport { clearInterval, setInterval } from '../helper/timer'\n\nexport var STORAGE_POLL_DELAY = ONE_SECOND\n/**\n * Different session concepts:\n * - tracked, the session has an id and is updated along the user navigation\n * - not tracked, the session does not have an id but it is updated along the user navigation\n * - inactive, no session in store or session expired, waiting for a renew session\n */\nexport function startSessionStore(options, productKey, computeSessionState) {\n var renewObservable = new Observable()\n var expireObservable = new Observable()\n\n var watchSessionTimeoutId = setInterval(watchSession, STORAGE_POLL_DELAY)\n var sessionCache = retrieveActiveSession()\n var _throttleExpandOrRenewSession = throttle(function () {\n var isTracked\n withCookieLockAccess({\n options: options,\n process: function (cookieSession) {\n var synchronizedSession = synchronizeSession(cookieSession)\n isTracked = expandOrRenewCookie(synchronizedSession)\n return synchronizedSession\n },\n after: function (cookieSession) {\n if (isTracked && !hasSessionInCache()) {\n renewSession(cookieSession)\n }\n sessionCache = cookieSession\n }\n })\n }, STORAGE_POLL_DELAY)\n var throttledExpandOrRenewSession = _throttleExpandOrRenewSession.throttled\n var cancelExpandOrRenewSession = _throttleExpandOrRenewSession.cancel\n // function expandOrRenewSession() {\n // var isTracked\n // withCookieLockAccess({\n // options: options,\n // process: function (cookieSession) {\n // var synchronizedSession = synchronizeSession(cookieSession)\n // isTracked = expandOrRenewCookie(synchronizedSession)\n // return synchronizedSession\n // },\n // after: function (cookieSession) {\n // if (isTracked && !hasSessionInCache()) {\n // renewSession(cookieSession)\n // }\n // sessionCache = cookieSession\n // }\n // })\n // }\n\n function expandSession() {\n withCookieLockAccess({\n options: options,\n process: function (cookieSession) {\n return hasSessionInCache()\n ? synchronizeSession(cookieSession)\n : undefined\n }\n })\n }\n\n /**\n * allows two behaviors:\n * - if the session is active, synchronize the session cache without updating the session cookie\n * - if the session is not active, clear the session cookie and expire the session cache\n */\n function watchSession() {\n withCookieLockAccess({\n options: options,\n process: function (cookieSession) {\n return !isActiveSession(cookieSession) ? {} : undefined\n },\n after: synchronizeSession\n })\n }\n\n function synchronizeSession(cookieSession) {\n if (!isActiveSession(cookieSession)) {\n cookieSession = {}\n }\n if (hasSessionInCache()) {\n if (isSessionInCacheOutdated(cookieSession)) {\n expireSessionInCache()\n } else {\n sessionCache = cookieSession\n }\n }\n return cookieSession\n }\n\n function expandOrRenewCookie(cookieSession) {\n var sessionState = computeSessionState(cookieSession[productKey])\n var trackingType = sessionState.trackingType\n var isTracked = sessionState.isTracked\n cookieSession[productKey] = trackingType\n if (isTracked && !cookieSession.id) {\n cookieSession.id = UUID()\n cookieSession.created = String(dateNow())\n }\n return isTracked\n }\n\n function hasSessionInCache() {\n return sessionCache[productKey] !== undefined\n }\n\n function isSessionInCacheOutdated(cookieSession) {\n return (\n sessionCache.id !== cookieSession.id ||\n sessionCache[productKey] !== cookieSession[productKey]\n )\n }\n\n function expireSessionInCache() {\n sessionCache = {}\n expireObservable.notify()\n }\n\n function renewSession(cookieSession) {\n sessionCache = cookieSession\n renewObservable.notify()\n }\n\n function retrieveActiveSession() {\n var session = retrieveSession()\n if (isActiveSession(session)) {\n return session\n }\n return {}\n }\n\n function isActiveSession(session) {\n // created and expire can be undefined for versions which was not storing them\n // these checks could be removed when older versions will not be available/live anymore\n return (\n (session.created === undefined ||\n dateNow() - Number(session.created) < SESSION_TIME_OUT_DELAY) &&\n (session.expire === undefined || dateNow() < Number(session.expire))\n )\n }\n\n return {\n expandOrRenewSession: throttledExpandOrRenewSession,\n expandSession: expandSession,\n getSession: function () {\n return sessionCache\n },\n renewObservable: renewObservable,\n expireObservable: expireObservable,\n expire: function () {\n cancelExpandOrRenewSession()\n clearSession(options)\n synchronizeSession({})\n },\n stop: function () {\n clearInterval(watchSessionTimeoutId)\n }\n }\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudcare/browser-core",
3
- "version": "3.1.10",
3
+ "version": "3.1.11",
4
4
  "main": "cjs/index.js",
5
5
  "module": "esm/index.js",
6
6
  "types": "types/index.d.ts",
@@ -22,5 +22,5 @@
22
22
  "author": "dataflux",
23
23
  "license": "MIT",
24
24
  "description": "DataFlux RUM Web 端数据指标监控",
25
- "gitHead": "2361945f9933caee1559f4e3fd2c954488188844"
25
+ "gitHead": "f92134e1f3e87690a0d2376242071686ea34e946"
26
26
  }
@@ -29,7 +29,13 @@ export function hasChildNodes(node) {
29
29
  // return isNodeShadowHost(node) ? node.shadowRoot.childNodes : node.childNodes
30
30
  // }
31
31
  export function forEachChildNodes(node, callback) {
32
- node.childNodes.forEach(callback)
32
+ // node.childNodes.forEach(callback)
33
+ var child = node.firstChild
34
+
35
+ while (child) {
36
+ callback(child)
37
+ child = child.nextSibling
38
+ }
33
39
  if (isNodeShadowHost(node)) {
34
40
  callback(node.shadowRoot)
35
41
  }
@@ -2,7 +2,8 @@ import { computeStackTrace } from '../tracekit'
2
2
  import {
3
3
  createHandlingStack,
4
4
  formatErrorMessage,
5
- toStackTraceString
5
+ toStackTraceString,
6
+ flattenErrorCauses
6
7
  } from '../helper/errorTools'
7
8
  import { mergeObservables, Observable } from '../helper/observable'
8
9
  import { find, map } from '../helper/tools'
@@ -38,7 +39,6 @@ function createConsoleObservable(api) {
38
39
  console[api] = originalConsoleApi
39
40
  }
40
41
  })
41
- return observable
42
42
  }
43
43
 
44
44
  function buildConsoleLog(params, api, handlingStack) {
@@ -46,7 +46,7 @@ function buildConsoleLog(params, api, handlingStack) {
46
46
  return formatConsoleParameters(param)
47
47
  }).join(' ')
48
48
  var stack
49
-
49
+ var causes
50
50
  if (api === ConsoleApiName.error) {
51
51
  var firstErrorParam = find(params, function (param) {
52
52
  return param instanceof Error
@@ -55,13 +55,17 @@ function buildConsoleLog(params, api, handlingStack) {
55
55
  ? toStackTraceString(computeStackTrace(firstErrorParam))
56
56
  : undefined
57
57
  message = 'console error: ' + message
58
+ causes = firstErrorParam
59
+ ? flattenErrorCauses(firstErrorParam, 'console')
60
+ : undefined
58
61
  }
59
62
 
60
63
  return {
61
64
  api: api,
62
65
  message: message,
63
66
  stack: stack,
64
- handlingStack: handlingStack
67
+ handlingStack: handlingStack,
68
+ causes: causes
65
69
  }
66
70
  }
67
71
 
@@ -55,12 +55,13 @@ export function instrumentSetter(object, property, after) {
55
55
  ) {
56
56
  return { stop: noop }
57
57
  }
58
- // Using the patched `setTimeout` from Zone.js triggers a rendering loop in some Angular
59
- // component, see issue RUMF-1443
58
+ var stoppedInstrumentation = noop
60
59
  var instrumentation = function (thisObject, value) {
61
60
  // put hooked setter into event loop to avoid of set latency
62
61
  setTimeout(function () {
63
- after(thisObject, value)
62
+ if (instrumentation !== stoppedInstrumentation) {
63
+ after(thisObject, value)
64
+ }
64
65
  }, 0)
65
66
  }
66
67
 
@@ -82,7 +83,7 @@ export function instrumentSetter(object, property, after) {
82
83
  ) {
83
84
  Object.defineProperty(object, property, originalDescriptor)
84
85
  } else {
85
- instrumentation = noop
86
+ instrumentation = stoppedInstrumentation
86
87
  }
87
88
  }
88
89
  }
@@ -2,9 +2,11 @@ import { each, filter } from './tools'
2
2
  export var LifeCycleEventType = {
3
3
  PERFORMANCE_ENTRIES_COLLECTED: 'PERFORMANCE_ENTRIES_COLLECTED',
4
4
  AUTO_ACTION_COMPLETED: 'AUTO_ACTION_COMPLETED',
5
+ BEFORE_VIEW_CREATED: 'BEFORE_VIEW_CREATED',
5
6
  VIEW_CREATED: 'VIEW_CREATED',
6
7
  VIEW_UPDATED: 'VIEW_UPDATED',
7
8
  VIEW_ENDED: 'VIEW_ENDED',
9
+ AFTER_VIEW_ENDED: 'AFTER_VIEW_ENDED',
8
10
  SESSION_RENEWED: 'SESSION_RENEWED',
9
11
  SESSION_EXPIRED: 'SESSION_EXPIRED',
10
12
  PAGE_EXITED: 'PAGE_EXITED',
@@ -8,6 +8,7 @@ import { startSessionStore } from './sessionStore'
8
8
  import { SESSION_TIME_OUT_DELAY } from './sessionConstants'
9
9
  import { DOM_EVENT } from '../helper/enums'
10
10
  import { clearInterval, setInterval } from '../helper/timer'
11
+ import { Observable } from '../helper/observable'
11
12
  export var VISIBILITY_CHECK_DELAY = ONE_MINUTE
12
13
  var SESSION_CONTEXT_TIMEOUT_DELAY = SESSION_TIME_OUT_DELAY
13
14
  var stopCallbacks = []
@@ -17,6 +18,8 @@ export var startSessionManager = function (
17
18
  productKey,
18
19
  computeSessionState
19
20
  ) {
21
+ var renewObservable = new Observable()
22
+ var expireObservable = new Observable()
20
23
  var sessionStore = startSessionStore(options, productKey, computeSessionState)
21
24
  stopCallbacks.push(function () {
22
25
  return sessionStore.stop()
@@ -29,8 +32,10 @@ export var startSessionManager = function (
29
32
 
30
33
  sessionStore.renewObservable.subscribe(function () {
31
34
  sessionContextHistory.add(buildSessionContext(), relativeNow())
35
+ renewObservable.notify()
32
36
  })
33
37
  sessionStore.expireObservable.subscribe(function () {
38
+ expireObservable.notify()
34
39
  sessionContextHistory.closeActive(relativeNow())
35
40
  })
36
41
 
@@ -55,8 +60,8 @@ export var startSessionManager = function (
55
60
  findActiveSession: function (startTime) {
56
61
  return sessionContextHistory.find(startTime)
57
62
  },
58
- renewObservable: sessionStore.renewObservable,
59
- expireObservable: sessionStore.expireObservable,
63
+ renewObservable: renewObservable,
64
+ expireObservable: expireObservable,
60
65
  expire: sessionStore.expire
61
66
  }
62
67
  }
@@ -1,6 +1,6 @@
1
1
  import { COOKIE_ACCESS_DELAY } from '../browser/cookie'
2
2
  import { Observable } from '../helper/observable'
3
- import { dateNow, UUID, throttle } from '../helper/tools'
3
+ import { dateNow, UUID, throttle, ONE_SECOND } from '../helper/tools'
4
4
  import { SESSION_TIME_OUT_DELAY } from './sessionConstants'
5
5
  import {
6
6
  retrieveSession,
@@ -9,6 +9,7 @@ import {
9
9
  } from './sessionCookieStore'
10
10
  import { clearInterval, setInterval } from '../helper/timer'
11
11
 
12
+ export var STORAGE_POLL_DELAY = ONE_SECOND
12
13
  /**
13
14
  * Different session concepts:
14
15
  * - tracked, the session has an id and is updated along the user navigation
@@ -19,10 +20,9 @@ export function startSessionStore(options, productKey, computeSessionState) {
19
20
  var renewObservable = new Observable()
20
21
  var expireObservable = new Observable()
21
22
 
22
- var watchSessionTimeoutId = setInterval(watchSession, COOKIE_ACCESS_DELAY)
23
+ var watchSessionTimeoutId = setInterval(watchSession, STORAGE_POLL_DELAY)
23
24
  var sessionCache = retrieveActiveSession()
24
-
25
- function expandOrRenewSession() {
25
+ var _throttleExpandOrRenewSession = throttle(function () {
26
26
  var isTracked
27
27
  withCookieLockAccess({
28
28
  options: options,
@@ -38,7 +38,26 @@ export function startSessionStore(options, productKey, computeSessionState) {
38
38
  sessionCache = cookieSession
39
39
  }
40
40
  })
41
- }
41
+ }, STORAGE_POLL_DELAY)
42
+ var throttledExpandOrRenewSession = _throttleExpandOrRenewSession.throttled
43
+ var cancelExpandOrRenewSession = _throttleExpandOrRenewSession.cancel
44
+ // function expandOrRenewSession() {
45
+ // var isTracked
46
+ // withCookieLockAccess({
47
+ // options: options,
48
+ // process: function (cookieSession) {
49
+ // var synchronizedSession = synchronizeSession(cookieSession)
50
+ // isTracked = expandOrRenewCookie(synchronizedSession)
51
+ // return synchronizedSession
52
+ // },
53
+ // after: function (cookieSession) {
54
+ // if (isTracked && !hasSessionInCache()) {
55
+ // renewSession(cookieSession)
56
+ // }
57
+ // sessionCache = cookieSession
58
+ // }
59
+ // })
60
+ // }
42
61
 
43
62
  function expandSession() {
44
63
  withCookieLockAccess({
@@ -132,8 +151,7 @@ export function startSessionStore(options, productKey, computeSessionState) {
132
151
  }
133
152
 
134
153
  return {
135
- expandOrRenewSession: throttle(expandOrRenewSession, COOKIE_ACCESS_DELAY)
136
- .throttled,
154
+ expandOrRenewSession: throttledExpandOrRenewSession,
137
155
  expandSession: expandSession,
138
156
  getSession: function () {
139
157
  return sessionCache
@@ -141,6 +159,7 @@ export function startSessionStore(options, productKey, computeSessionState) {
141
159
  renewObservable: renewObservable,
142
160
  expireObservable: expireObservable,
143
161
  expire: function () {
162
+ cancelExpandOrRenewSession()
144
163
  clearSession(options)
145
164
  synchronizeSession({})
146
165
  },