@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.
- package/cjs/browser/htmlDomUtils.js +6 -1
- package/cjs/browser/htmlDomUtils.js.map +1 -1
- package/cjs/console/consoleObservable.js +4 -2
- package/cjs/console/consoleObservable.js.map +1 -1
- package/cjs/helper/instrumentMethod.js +7 -6
- package/cjs/helper/instrumentMethod.js.map +1 -1
- package/cjs/helper/lifeCycle.js +2 -0
- package/cjs/helper/lifeCycle.js.map +1 -1
- package/cjs/session/sessionManagement.js +7 -2
- package/cjs/session/sessionManagement.js.map +1 -1
- package/cjs/session/sessionStore.js +28 -4
- package/cjs/session/sessionStore.js.map +1 -1
- package/esm/browser/htmlDomUtils.js +6 -1
- package/esm/browser/htmlDomUtils.js.map +1 -1
- package/esm/console/consoleObservable.js +5 -3
- package/esm/console/consoleObservable.js.map +1 -1
- package/esm/helper/instrumentMethod.js +7 -6
- package/esm/helper/instrumentMethod.js.map +1 -1
- package/esm/helper/lifeCycle.js +2 -0
- package/esm/helper/lifeCycle.js.map +1 -1
- package/esm/session/sessionManagement.js +7 -2
- package/esm/session/sessionManagement.js.map +1 -1
- package/esm/session/sessionStore.js +27 -6
- package/esm/session/sessionStore.js.map +1 -1
- package/package.json +2 -2
- package/src/browser/htmlDomUtils.js +7 -1
- package/src/console/consoleObservable.js +8 -4
- package/src/helper/instrumentMethod.js +5 -4
- package/src/helper/lifeCycle.js +2 -0
- package/src/session/sessionManagement.js +7 -2
- package/src/session/sessionStore.js +26 -7
|
@@ -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","
|
|
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
|
|
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
|
-
|
|
63
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AACO,SAASG,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;AAEO,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;QACrC,IAAAC,sBAAa,EAACH,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,CAACI,KAAK,EAAE;QACpC,IAAAD,sBAAa,EAACH,WAAW,CAACI,KAAK,EAAE,IAAI,EAAEP,SAAS,CAAC;QACjD;MACF;;MACA,OAAOI,MAAM;IACf,CAAC;EACH,CAAC,CAAC;AACJ;AAEO,SAASI,gBAAgBA,CAAChB,MAAM,EAAEiB,QAAQ,EAAEF,KAAK,EAAE;EACxD,IAAIG,kBAAkB,GAAGC,MAAM,CAACC,wBAAwB,CAACpB,MAAM,EAAEiB,QAAQ,CAAC;EAC1E,IACE,CAACC,kBAAkB,IACnB,CAACA,kBAAkB,CAACG,GAAG,IACvB,CAACH,kBAAkB,CAACI,YAAY,EAChC;IACA,OAAO;MAAEb,IAAI,EAAEc;IAAK,CAAC;EACvB;EACA,IAAIC,sBAAsB,GAAGD,WAAI;EACjC,IAAInB,gBAAe,GAAG,SAAAA,gBAAUqB,UAAU,EAAEC,KAAK,EAAE;IACjD;IACA,IAAAC,iBAAU,EAAC,YAAY;MACrB,IAAIvB,gBAAe,KAAKoB,sBAAsB,EAAE;QAC9CT,KAAK,CAACU,UAAU,EAAEC,KAAK,CAAC;MAC1B;IACF,CAAC,EAAE,CAAC,CAAC;EACP,CAAC;EAED,IAAIrB,sBAAsB,GAAG,SAAzBA,sBAAsBA,CAAaqB,KAAK,EAAE;IAC5CR,kBAAkB,CAACG,GAAG,CAACO,IAAI,CAAC,IAAI,EAAEF,KAAK,CAAC;IACxCtB,gBAAe,CAAC,IAAI,EAAEsB,KAAK,CAAC;EAC9B,CAAC;EAEDP,MAAM,CAACU,cAAc,CAAC7B,MAAM,EAAEiB,QAAQ,EAAE;IACtCI,GAAG,EAAEhB;EACP,CAAC,CAAC;EAEF,OAAO;IACLI,IAAI,EAAE,SAAAA,KAAA,EAAY;MAChB,IACEU,MAAM,CAACC,wBAAwB,CAACpB,MAAM,EAAEiB,QAAQ,CAAC,IACjDE,MAAM,CAACC,wBAAwB,CAACpB,MAAM,EAAEiB,QAAQ,CAAC,CAACI,GAAG,KACnDhB,sBAAsB,EACxB;QACAc,MAAM,CAACU,cAAc,CAAC7B,MAAM,EAAEiB,QAAQ,EAAEC,kBAAkB,CAAC;MAC7D,CAAC,MAAM;QACLd,gBAAe,GAAGoB,sBAAsB;MAC1C;IACF;EACF,CAAC;AACH"}
|
package/cjs/helper/lifeCycle.js
CHANGED
|
@@ -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,
|
|
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:
|
|
53
|
-
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","
|
|
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,
|
|
25
|
+
var watchSessionTimeoutId = (0, _timer.setInterval)(watchSession, STORAGE_POLL_DELAY);
|
|
23
26
|
var sessionCache = retrieveActiveSession();
|
|
24
|
-
function
|
|
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:
|
|
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":";;;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,iBAAA,GAAAH,OAAA;AACA,IAAAI,mBAAA,GAAAJ,OAAA;AAKA,IAAAK,MAAA,GAAAL,OAAA;AAEO,IAAIM,kBAAkB,GAAGC,iBAAU;AAC1C;AACA;AACA;AACA;AACA;AACA;AALAC,OAAA,CAAAF,kBAAA,GAAAA,kBAAA;AAMO,SAASG,iBAAiBA,CAACC,OAAO,EAAEC,UAAU,EAAEC,mBAAmB,EAAE;EAC1E,IAAIC,eAAe,GAAG,IAAIC,sBAAU,CAAC,CAAC;EACtC,IAAIC,gBAAgB,GAAG,IAAID,sBAAU,CAAC,CAAC;EAEvC,IAAIE,qBAAqB,GAAG,IAAAC,kBAAW,EAACC,YAAY,EAAEZ,kBAAkB,CAAC;EACzE,IAAIa,YAAY,GAAGC,qBAAqB,CAAC,CAAC;EAC1C,IAAIC,6BAA6B,GAAG,IAAAC,eAAQ,EAAC,YAAY;IACvD,IAAIC,SAAS;IACb,IAAAC,wCAAoB,EAAC;MACnBd,OAAO,EAAEA,OAAO;MAChBe,OAAO,EAAE,SAAAA,QAAUC,aAAa,EAAE;QAChC,IAAIC,mBAAmB,GAAGC,kBAAkB,CAACF,aAAa,CAAC;QAC3DH,SAAS,GAAGM,mBAAmB,CAACF,mBAAmB,CAAC;QACpD,OAAOA,mBAAmB;MAC5B,CAAC;MACDG,KAAK,EAAE,SAAAA,MAAUJ,aAAa,EAAE;QAC9B,IAAIH,SAAS,IAAI,CAACQ,iBAAiB,CAAC,CAAC,EAAE;UACrCC,YAAY,CAACN,aAAa,CAAC;QAC7B;QACAP,YAAY,GAAGO,aAAa;MAC9B;IACF,CAAC,CAAC;EACJ,CAAC,EAAEpB,kBAAkB,CAAC;EACtB,IAAI2B,6BAA6B,GAAGZ,6BAA6B,CAACa,SAAS;EAC3E,IAAIC,0BAA0B,GAAGd,6BAA6B,CAACe,MAAM;EACrE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA,SAASC,aAAaA,CAAA,EAAG;IACvB,IAAAb,wCAAoB,EAAC;MACnBd,OAAO,EAAEA,OAAO;MAChBe,OAAO,EAAE,SAAAA,QAAUC,aAAa,EAAE;QAChC,OAAOK,iBAAiB,CAAC,CAAC,GACtBH,kBAAkB,CAACF,aAAa,CAAC,GACjCY,SAAS;MACf;IACF,CAAC,CAAC;EACJ;;EAEA;AACF;AACA;AACA;AACA;EACE,SAASpB,YAAYA,CAAA,EAAG;IACtB,IAAAM,wCAAoB,EAAC;MACnBd,OAAO,EAAEA,OAAO;MAChBe,OAAO,EAAE,SAAAA,QAAUC,aAAa,EAAE;QAChC,OAAO,CAACa,eAAe,CAACb,aAAa,CAAC,GAAG,CAAC,CAAC,GAAGY,SAAS;MACzD,CAAC;MACDR,KAAK,EAAEF;IACT,CAAC,CAAC;EACJ;EAEA,SAASA,kBAAkBA,CAACF,aAAa,EAAE;IACzC,IAAI,CAACa,eAAe,CAACb,aAAa,CAAC,EAAE;MACnCA,aAAa,GAAG,CAAC,CAAC;IACpB;IACA,IAAIK,iBAAiB,CAAC,CAAC,EAAE;MACvB,IAAIS,wBAAwB,CAACd,aAAa,CAAC,EAAE;QAC3Ce,oBAAoB,CAAC,CAAC;MACxB,CAAC,MAAM;QACLtB,YAAY,GAAGO,aAAa;MAC9B;IACF;IACA,OAAOA,aAAa;EACtB;EAEA,SAASG,mBAAmBA,CAACH,aAAa,EAAE;IAC1C,IAAIgB,YAAY,GAAG9B,mBAAmB,CAACc,aAAa,CAACf,UAAU,CAAC,CAAC;IACjE,IAAIgC,YAAY,GAAGD,YAAY,CAACC,YAAY;IAC5C,IAAIpB,SAAS,GAAGmB,YAAY,CAACnB,SAAS;IACtCG,aAAa,CAACf,UAAU,CAAC,GAAGgC,YAAY;IACxC,IAAIpB,SAAS,IAAI,CAACG,aAAa,CAACkB,EAAE,EAAE;MAClClB,aAAa,CAACkB,EAAE,GAAG,IAAAC,WAAI,EAAC,CAAC;MACzBnB,aAAa,CAACoB,OAAO,GAAGC,MAAM,CAAC,IAAAC,cAAO,EAAC,CAAC,CAAC;IAC3C;IACA,OAAOzB,SAAS;EAClB;EAEA,SAASQ,iBAAiBA,CAAA,EAAG;IAC3B,OAAOZ,YAAY,CAACR,UAAU,CAAC,KAAK2B,SAAS;EAC/C;EAEA,SAASE,wBAAwBA,CAACd,aAAa,EAAE;IAC/C,OACEP,YAAY,CAACyB,EAAE,KAAKlB,aAAa,CAACkB,EAAE,IACpCzB,YAAY,CAACR,UAAU,CAAC,KAAKe,aAAa,CAACf,UAAU,CAAC;EAE1D;EAEA,SAAS8B,oBAAoBA,CAAA,EAAG;IAC9BtB,YAAY,GAAG,CAAC,CAAC;IACjBJ,gBAAgB,CAACkC,MAAM,CAAC,CAAC;EAC3B;EAEA,SAASjB,YAAYA,CAACN,aAAa,EAAE;IACnCP,YAAY,GAAGO,aAAa;IAC5Bb,eAAe,CAACoC,MAAM,CAAC,CAAC;EAC1B;EAEA,SAAS7B,qBAAqBA,CAAA,EAAG;IAC/B,IAAI8B,OAAO,GAAG,IAAAC,mCAAe,EAAC,CAAC;IAC/B,IAAIZ,eAAe,CAACW,OAAO,CAAC,EAAE;MAC5B,OAAOA,OAAO;IAChB;IACA,OAAO,CAAC,CAAC;EACX;EAEA,SAASX,eAAeA,CAACW,OAAO,EAAE;IAChC;IACA;IACA,OACE,CAACA,OAAO,CAACJ,OAAO,KAAKR,SAAS,IAC5B,IAAAU,cAAO,EAAC,CAAC,GAAGI,MAAM,CAACF,OAAO,CAACJ,OAAO,CAAC,GAAGO,wCAAsB,MAC7DH,OAAO,CAACI,MAAM,KAAKhB,SAAS,IAAI,IAAAU,cAAO,EAAC,CAAC,GAAGI,MAAM,CAACF,OAAO,CAACI,MAAM,CAAC,CAAC;EAExE;EAEA,OAAO;IACLC,oBAAoB,EAAEtB,6BAA6B;IACnDI,aAAa,EAAEA,aAAa;IAC5BmB,UAAU,EAAE,SAAAA,WAAA,EAAY;MACtB,OAAOrC,YAAY;IACrB,CAAC;IACDN,eAAe,EAAEA,eAAe;IAChCE,gBAAgB,EAAEA,gBAAgB;IAClCuC,MAAM,EAAE,SAAAA,OAAA,EAAY;MAClBnB,0BAA0B,CAAC,CAAC;MAC5B,IAAAsB,gCAAY,EAAC/C,OAAO,CAAC;MACrBkB,kBAAkB,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;IACD8B,IAAI,EAAE,SAAAA,KAAA,EAAY;MAChB,IAAAC,oBAAa,EAAC3C,qBAAqB,CAAC;IACtC;EACF,CAAC;AACH"}
|
|
@@ -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","
|
|
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
|
|
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":"AAAA,SAASA,iBAAiB,QAAQ,aAAa;AAC/C,SACEC,mBAAmB,EACnBC,kBAAkB,EAClBC,kBAAkB,EAClBC,kBAAkB,QACb,sBAAsB;AAC7B,SAASC,gBAAgB,EAAEC,UAAU,QAAQ,sBAAsB;AACnE,SAASC,IAAI,EAAEC,GAAG,QAAQ,iBAAiB;AAC3C,SAASC,aAAa,QAAQ,uCAAuC;AACrE,SAASC,cAAc,QAAQ,mBAAmB;AAClD,SAASC,aAAa,QAAQ,mBAAmB;AACjD,IAAIC,uBAAuB,GAAG,CAAC,CAAC;AAEhC,OAAO,SAASC,qBAAqBA,CAACC,IAAI,EAAE;EAC1C,IAAIC,kBAAkB,GAAGP,GAAG,CAACM,IAAI,EAAE,UAAUE,GAAG,EAAE;IAChD,IAAI,CAACJ,uBAAuB,CAACI,GAAG,CAAC,EAAE;MACjCJ,uBAAuB,CAACI,GAAG,CAAC,GAAGC,uBAAuB,CAACD,GAAG,CAAC;IAC7D;IACA,OAAOJ,uBAAuB,CAACI,GAAG,CAAC;EACrC,CAAC,CAAC;EAEF,OAAOX,gBAAgB,CAACa,KAAK,CAAC,IAAI,EAAEH,kBAAkB,CAAC;AACzD;;AAEA;AACA,SAASE,uBAAuBA,CAACD,GAAG,EAAE;EACpC,OAAO,IAAIV,UAAU,CAAC,UAAUa,UAAU,EAAE;IAC1C,IAAIC,kBAAkB,GAAGC,OAAO,CAACL,GAAG,CAAC;IACrCK,OAAO,CAACL,GAAG,CAAC,GAAG,YAAY;MACzB,IAAIM,MAAM,GAAG,EAAE,CAACC,KAAK,CAACC,IAAI,CAACC,SAAS,CAAC;MACrCL,kBAAkB,CAACF,KAAK,CAACG,OAAO,EAAEI,SAAS,CAAC;MAC5C,IAAIC,aAAa,GAAGzB,mBAAmB,CAAC,CAAC;MACzCU,aAAa,CAAC,YAAY;QACxBQ,UAAU,CAACQ,MAAM,CAACC,eAAe,CAACN,MAAM,EAAEN,GAAG,EAAEU,aAAa,CAAC,CAAC;MAChE,CAAC,CAAC;IACJ,CAAC;IACD,OAAO,YAAY;MACjBL,OAAO,CAACL,GAAG,CAAC,GAAGI,kBAAkB;IACnC,CAAC;EACH,CAAC,CAAC;AACJ;AAEA,SAASQ,eAAeA,CAACN,MAAM,EAAEN,GAAG,EAAEU,aAAa,EAAE;EACnD,IAAIG,OAAO,GAAGrB,GAAG,CAACc,MAAM,EAAE,UAAUQ,KAAK,EAAE;IACzC,OAAOC,uBAAuB,CAACD,KAAK,CAAC;EACvC,CAAC,CAAC,CAACE,IAAI,CAAC,GAAG,CAAC;EACZ,IAAIC,KAAK;EACT,IAAIC,MAAM;EACV,IAAIlB,GAAG,KAAKN,cAAc,CAACyB,KAAK,EAAE;IAChC,IAAIC,eAAe,GAAG7B,IAAI,CAACe,MAAM,EAAE,UAAUQ,KAAK,EAAE;MAClD,OAAOA,KAAK,YAAYO,KAAK;IAC/B,CAAC,CAAC;IACFJ,KAAK,GAAGG,eAAe,GACnBjC,kBAAkB,CAACH,iBAAiB,CAACoC,eAAe,CAAC,CAAC,GACtDE,SAAS;IACbT,OAAO,GAAG,iBAAiB,GAAGA,OAAO;IACrCK,MAAM,GAAGE,eAAe,GACpBhC,kBAAkB,CAACgC,eAAe,EAAE,SAAS,CAAC,GAC9CE,SAAS;EACf;EAEA,OAAO;IACLtB,GAAG,EAAEA,GAAG;IACRa,OAAO,EAAEA,OAAO;IAChBI,KAAK,EAAEA,KAAK;IACZP,aAAa,EAAEA,aAAa;IAC5BQ,MAAM,EAAEA;EACV,CAAC;AACH;AAEA,SAASH,uBAAuBA,CAACD,KAAK,EAAE;EACtC,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IAC7B,OAAOA,KAAK;EACd;EACA,IAAIA,KAAK,YAAYO,KAAK,EAAE;IAC1B,OAAOnC,kBAAkB,CAACF,iBAAiB,CAAC8B,KAAK,CAAC,CAAC;EACrD;EACA,OAAOrB,aAAa,CAACqB,KAAK,EAAEQ,SAAS,EAAE,CAAC,CAAC;AAC3C"}
|
|
@@ -51,17 +51,18 @@ export function instrumentSetter(object, property, after) {
|
|
|
51
51
|
stop: noop
|
|
52
52
|
};
|
|
53
53
|
}
|
|
54
|
-
|
|
55
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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":"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,IAAI0B,sBAAsB,GAAG1B,IAAI;EACjC,IAAIQ,gBAAe,GAAG,SAAAA,gBAAUmB,UAAU,EAAEC,KAAK,EAAE;IACjD;IACA3B,UAAU,CAAC,YAAY;MACrB,IAAIO,gBAAe,KAAKkB,sBAAsB,EAAE;QAC9CR,KAAK,CAACS,UAAU,EAAEC,KAAK,CAAC;MAC1B;IACF,CAAC,EAAE,CAAC,CAAC;EACP,CAAC;EAED,IAAInB,sBAAsB,GAAG,SAAzBA,sBAAsBA,CAAamB,KAAK,EAAE;IAC5CP,kBAAkB,CAACG,GAAG,CAACK,IAAI,CAAC,IAAI,EAAED,KAAK,CAAC;IACxCpB,gBAAe,CAAC,IAAI,EAAEoB,KAAK,CAAC;EAC9B,CAAC;EAEDN,MAAM,CAACQ,cAAc,CAAC1B,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,CAACQ,cAAc,CAAC1B,MAAM,EAAEgB,QAAQ,EAAEC,kBAAkB,CAAC;MAC7D,CAAC,MAAM;QACLb,gBAAe,GAAGkB,sBAAsB;MAC1C;IACF;EACF,CAAC;AACH"}
|
package/esm/helper/lifeCycle.js
CHANGED
|
@@ -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;
|
|
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:
|
|
45
|
-
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","
|
|
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,
|
|
17
|
+
var watchSessionTimeoutId = setInterval(watchSession, STORAGE_POLL_DELAY);
|
|
18
18
|
var sessionCache = retrieveActiveSession();
|
|
19
|
-
function
|
|
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:
|
|
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.
|
|
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": "
|
|
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
|
-
|
|
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
|
-
|
|
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 =
|
|
86
|
+
instrumentation = stoppedInstrumentation
|
|
86
87
|
}
|
|
87
88
|
}
|
|
88
89
|
}
|
package/src/helper/lifeCycle.js
CHANGED
|
@@ -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:
|
|
59
|
-
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,
|
|
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:
|
|
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
|
},
|