@cloudcare/browser-core 3.2.51 → 3.3.4
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/asyncClocks.js +2 -2
- package/cjs/browser/asyncClocks.js.map +1 -1
- package/cjs/configuration/remoteConfiguration.js +1 -0
- package/cjs/configuration/remoteConfiguration.js.map +1 -1
- package/cjs/helper/deviceInfo.js +91 -44
- package/cjs/helper/deviceInfo.js.map +1 -1
- package/cjs/helper/polyfills.js +1 -1
- package/cjs/helper/polyfills.js.map +1 -1
- package/cjs/helper/tools.js +4 -4
- package/cjs/helper/tools.js.map +1 -1
- package/cjs/helper/valueHistory.js +1 -1
- package/cjs/helper/valueHistory.js.map +1 -1
- package/cjs/report/reportObservable.js +2 -2
- package/cjs/report/reportObservable.js.map +1 -1
- package/cjs/session/sessionManagement.js +1 -0
- package/cjs/session/sessionManagement.js.map +1 -1
- package/cjs/session/sessionStore.js +1 -1
- package/cjs/session/sessionStore.js.map +1 -1
- package/cjs/synthetics/syntheticsWorkerValues.js +2 -2
- package/cjs/synthetics/syntheticsWorkerValues.js.map +1 -1
- package/cjs/transport/httpRequest.js +6 -40
- package/cjs/transport/httpRequest.js.map +1 -1
- package/esm/browser/asyncClocks.js +2 -2
- package/esm/browser/asyncClocks.js.map +1 -1
- package/esm/configuration/remoteConfiguration.js +1 -0
- package/esm/configuration/remoteConfiguration.js.map +1 -1
- package/esm/helper/deviceInfo.js +90 -44
- package/esm/helper/deviceInfo.js.map +1 -1
- package/esm/helper/polyfills.js +1 -1
- package/esm/helper/polyfills.js.map +1 -1
- package/esm/helper/tools.js +4 -4
- package/esm/helper/tools.js.map +1 -1
- package/esm/helper/valueHistory.js +1 -1
- package/esm/helper/valueHistory.js.map +1 -1
- package/esm/report/reportObservable.js +2 -0
- package/esm/report/reportObservable.js.map +1 -1
- package/esm/session/sessionManagement.js +1 -0
- package/esm/session/sessionManagement.js.map +1 -1
- package/esm/session/sessionStore.js +1 -1
- package/esm/session/sessionStore.js.map +1 -1
- package/esm/synthetics/syntheticsWorkerValues.js +2 -2
- package/esm/synthetics/syntheticsWorkerValues.js.map +1 -1
- package/esm/transport/httpRequest.js +5 -39
- package/esm/transport/httpRequest.js.map +1 -1
- package/package.json +2 -2
- package/src/browser/asyncClocks.js +2 -2
- package/src/configuration/remoteConfiguration.js +1 -0
- package/src/helper/deviceInfo.js +105 -53
- package/src/helper/polyfills.js +1 -1
- package/src/helper/tools.js +4 -4
- package/src/helper/valueHistory.js +1 -1
- package/src/report/reportObservable.js +2 -0
- package/src/session/sessionManagement.js +1 -0
- package/src/session/sessionStore.js +4 -1
- package/src/synthetics/syntheticsWorkerValues.js +6 -4
- package/src/transport/httpRequest.js +5 -44
- package/types/index.d.ts +74 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reportObservable.js","names":["_errorTools","require","_observable","_tools","_addEventListener2","_enums","_monitor","RawReportType","exports","intervention","deprecation","cspViolation","initReportObservable","configuration","apis","observables","includes","push","createCspViolationReportObservable","reportTypes","filter","api","length","createReportObservable","mergeObservables","apply","Observable","observable","window","ReportingObserver","handleReports","monitor","reports","each","report","notify","buildRawReportErrorFromReport","observer","types","buffered","observe","disconnect","_addEventListener","addEventListener","document","DOM_EVENT","SECURITY_POLICY_VIOLATION","event","buildRawReportErrorFromCspViolation","stop","body","type","buildRawReportError","id","message","originalError","stack","buildStack","sourceFile","lineNumber","columnNumber","partial","assign","startClocks","clocksNow","source","ErrorSource","REPORT","handling","ErrorHandling","UNHANDLED","blockedURI","effectiveDirective","csp","disposition","originalPolicy","concat","safeTruncate","name","toStackTraceString","func","url","line","column"],"sources":["../../src/report/reportObservable.js"],"sourcesContent":["import { toStackTraceString } from '../helper/errorTools'\nimport { mergeObservables, Observable } from '../helper/observable'\nimport {\n includes,\n safeTruncate,\n filter,\n each,\n assign,\n clocksNow\n} from '../helper/tools'\nimport { addEventListener } from '../browser/addEventListener'\nimport { DOM_EVENT } from '../helper/enums'\nimport { monitor } from '../helper/monitor'\nexport var RawReportType = {\n intervention: 'intervention',\n deprecation: 'deprecation',\n cspViolation: 'csp_violation'\n}\nexport function initReportObservable(configuration, apis) {\n var observables = []\n\n if (includes(apis, RawReportType.cspViolation)) {\n observables.push(createCspViolationReportObservable(configuration))\n }\n\n var reportTypes = filter(apis, function (api) {\n return api !== RawReportType.cspViolation\n })\n if (reportTypes.length) {\n observables.push(createReportObservable(reportTypes))\n }\n return mergeObservables.apply(this, observables)\n}\n\nfunction createReportObservable(reportTypes) {\n return new Observable(function (observable) {\n if (!window.ReportingObserver) {\n return\n }\n\n var handleReports = monitor(function (reports) {\n each(reports, function (report) {\n observable.notify(buildRawReportErrorFromReport(report))\n })\n })\n\n var observer = new window.ReportingObserver(handleReports, {\n types: reportTypes,\n buffered: true\n })\n\n observer.observe()\n return function () {\n observer.disconnect()\n }\n })\n}\n\nfunction createCspViolationReportObservable(configuration) {\n return new Observable(function (observable) {\n var _addEventListener = addEventListener(\n document,\n DOM_EVENT.SECURITY_POLICY_VIOLATION,\n function (event) {\n observable.notify(buildRawReportErrorFromCspViolation(event))\n }\n )\n\n return _addEventListener.stop\n })\n}\n\nfunction buildRawReportErrorFromReport(report) {\n var body = report.body\n var type = report.type\n return buildRawReportError({\n type: body.id,\n message: type + ': ' + body.message,\n originalError: report,\n stack: buildStack(\n body.id,\n body.message,\n body.sourceFile,\n body.lineNumber,\n body.columnNumber\n )\n })\n}\nfunction buildRawReportError(partial) {\n return assign(\n {\n startClocks: clocksNow(),\n source: ErrorSource.REPORT,\n handling: ErrorHandling.UNHANDLED\n },\n partial\n )\n}\nfunction buildRawReportErrorFromCspViolation(event) {\n var message =\n \"'\" +\n event.blockedURI +\n \"' blocked by '\" +\n event.effectiveDirective +\n \"' directive\"\n return buildRawReportError({\n type: event.effectiveDirective,\n message: RawReportType.cspViolation + ': ' + message,\n originalError: event,\n csp: {\n disposition: event.disposition\n },\n stack: buildStack(\n event.effectiveDirective,\n event.originalPolicy\n ? `${message} of the policy \"${safeTruncate(\n event.originalPolicy,\n 100,\n '...'\n )}\"`\n : 'no policy',\n event.sourceFile,\n event.lineNumber,\n event.columnNumber\n )\n })\n}\n\nfunction buildStack(name, message, sourceFile, lineNumber, columnNumber) {\n return (\n sourceFile &&\n toStackTraceString({\n name: name,\n message: message,\n stack: [\n {\n func: '?',\n url: sourceFile,\n line: lineNumber,\n column: columnNumber\n }\n ]\n })\n )\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AAQA,IAAAG,kBAAA,GAAAH,OAAA;AACA,IAAAI,MAAA,GAAAJ,OAAA;AACA,IAAAK,QAAA,GAAAL,OAAA;
|
|
1
|
+
{"version":3,"file":"reportObservable.js","names":["_errorTools","require","_observable","_tools","_addEventListener2","_enums","_monitor","RawReportType","exports","intervention","deprecation","cspViolation","initReportObservable","configuration","apis","observables","includes","push","createCspViolationReportObservable","reportTypes","filter","api","length","createReportObservable","mergeObservables","apply","Observable","observable","window","ReportingObserver","handleReports","monitor","reports","each","report","notify","buildRawReportErrorFromReport","observer","types","buffered","observe","disconnect","_addEventListener","addEventListener","document","DOM_EVENT","SECURITY_POLICY_VIOLATION","event","buildRawReportErrorFromCspViolation","stop","body","type","buildRawReportError","id","message","originalError","stack","buildStack","sourceFile","lineNumber","columnNumber","partial","assign","startClocks","clocksNow","source","ErrorSource","REPORT","handling","ErrorHandling","UNHANDLED","blockedURI","effectiveDirective","csp","disposition","originalPolicy","concat","safeTruncate","name","toStackTraceString","func","url","line","column"],"sources":["../../src/report/reportObservable.js"],"sourcesContent":["import { toStackTraceString } from '../helper/errorTools'\nimport { mergeObservables, Observable } from '../helper/observable'\nimport {\n includes,\n safeTruncate,\n filter,\n each,\n assign,\n clocksNow\n} from '../helper/tools'\nimport { addEventListener } from '../browser/addEventListener'\nimport { DOM_EVENT } from '../helper/enums'\nimport { monitor } from '../helper/monitor'\nimport { ErrorSource } from '../helper/errorTools'\nimport { ErrorHandling } from '../helper/enums'\nexport var RawReportType = {\n intervention: 'intervention',\n deprecation: 'deprecation',\n cspViolation: 'csp_violation'\n}\nexport function initReportObservable(configuration, apis) {\n var observables = []\n\n if (includes(apis, RawReportType.cspViolation)) {\n observables.push(createCspViolationReportObservable(configuration))\n }\n\n var reportTypes = filter(apis, function (api) {\n return api !== RawReportType.cspViolation\n })\n if (reportTypes.length) {\n observables.push(createReportObservable(reportTypes))\n }\n return mergeObservables.apply(this, observables)\n}\n\nfunction createReportObservable(reportTypes) {\n return new Observable(function (observable) {\n if (!window.ReportingObserver) {\n return\n }\n\n var handleReports = monitor(function (reports) {\n each(reports, function (report) {\n observable.notify(buildRawReportErrorFromReport(report))\n })\n })\n\n var observer = new window.ReportingObserver(handleReports, {\n types: reportTypes,\n buffered: true\n })\n\n observer.observe()\n return function () {\n observer.disconnect()\n }\n })\n}\n\nfunction createCspViolationReportObservable(configuration) {\n return new Observable(function (observable) {\n var _addEventListener = addEventListener(\n document,\n DOM_EVENT.SECURITY_POLICY_VIOLATION,\n function (event) {\n observable.notify(buildRawReportErrorFromCspViolation(event))\n }\n )\n\n return _addEventListener.stop\n })\n}\n\nfunction buildRawReportErrorFromReport(report) {\n var body = report.body\n var type = report.type\n return buildRawReportError({\n type: body.id,\n message: type + ': ' + body.message,\n originalError: report,\n stack: buildStack(\n body.id,\n body.message,\n body.sourceFile,\n body.lineNumber,\n body.columnNumber\n )\n })\n}\nfunction buildRawReportError(partial) {\n return assign(\n {\n startClocks: clocksNow(),\n source: ErrorSource.REPORT,\n handling: ErrorHandling.UNHANDLED\n },\n partial\n )\n}\nfunction buildRawReportErrorFromCspViolation(event) {\n var message =\n \"'\" +\n event.blockedURI +\n \"' blocked by '\" +\n event.effectiveDirective +\n \"' directive\"\n return buildRawReportError({\n type: event.effectiveDirective,\n message: RawReportType.cspViolation + ': ' + message,\n originalError: event,\n csp: {\n disposition: event.disposition\n },\n stack: buildStack(\n event.effectiveDirective,\n event.originalPolicy\n ? `${message} of the policy \"${safeTruncate(\n event.originalPolicy,\n 100,\n '...'\n )}\"`\n : 'no policy',\n event.sourceFile,\n event.lineNumber,\n event.columnNumber\n )\n })\n}\n\nfunction buildStack(name, message, sourceFile, lineNumber, columnNumber) {\n return (\n sourceFile &&\n toStackTraceString({\n name: name,\n message: message,\n stack: [\n {\n func: '?',\n url: sourceFile,\n line: lineNumber,\n column: columnNumber\n }\n ]\n })\n )\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AAQA,IAAAG,kBAAA,GAAAH,OAAA;AACA,IAAAI,MAAA,GAAAJ,OAAA;AACA,IAAAK,QAAA,GAAAL,OAAA;AAGO,IAAIM,aAAa,GAAAC,OAAA,CAAAD,aAAA,GAAG;EACzBE,YAAY,EAAE,cAAc;EAC5BC,WAAW,EAAE,aAAa;EAC1BC,YAAY,EAAE;AAChB,CAAC;AACM,SAASC,oBAAoBA,CAACC,aAAa,EAAEC,IAAI,EAAE;EACxD,IAAIC,WAAW,GAAG,EAAE;EAEpB,IAAI,IAAAC,eAAQ,EAACF,IAAI,EAAEP,aAAa,CAACI,YAAY,CAAC,EAAE;IAC9CI,WAAW,CAACE,IAAI,CAACC,kCAAkC,CAACL,aAAa,CAAC,CAAC;EACrE;EAEA,IAAIM,WAAW,GAAG,IAAAC,aAAM,EAACN,IAAI,EAAE,UAAUO,GAAG,EAAE;IAC5C,OAAOA,GAAG,KAAKd,aAAa,CAACI,YAAY;EAC3C,CAAC,CAAC;EACF,IAAIQ,WAAW,CAACG,MAAM,EAAE;IACtBP,WAAW,CAACE,IAAI,CAACM,sBAAsB,CAACJ,WAAW,CAAC,CAAC;EACvD;EACA,OAAOK,4BAAgB,CAACC,KAAK,CAAC,IAAI,EAAEV,WAAW,CAAC;AAClD;AAEA,SAASQ,sBAAsBA,CAACJ,WAAW,EAAE;EAC3C,OAAO,IAAIO,sBAAU,CAAC,UAAUC,UAAU,EAAE;IAC1C,IAAI,CAACC,MAAM,CAACC,iBAAiB,EAAE;MAC7B;IACF;IAEA,IAAIC,aAAa,GAAG,IAAAC,gBAAO,EAAC,UAAUC,OAAO,EAAE;MAC7C,IAAAC,WAAI,EAACD,OAAO,EAAE,UAAUE,MAAM,EAAE;QAC9BP,UAAU,CAACQ,MAAM,CAACC,6BAA6B,CAACF,MAAM,CAAC,CAAC;MAC1D,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,IAAIG,QAAQ,GAAG,IAAIT,MAAM,CAACC,iBAAiB,CAACC,aAAa,EAAE;MACzDQ,KAAK,EAAEnB,WAAW;MAClBoB,QAAQ,EAAE;IACZ,CAAC,CAAC;IAEFF,QAAQ,CAACG,OAAO,CAAC,CAAC;IAClB,OAAO,YAAY;MACjBH,QAAQ,CAACI,UAAU,CAAC,CAAC;IACvB,CAAC;EACH,CAAC,CAAC;AACJ;AAEA,SAASvB,kCAAkCA,CAACL,aAAa,EAAE;EACzD,OAAO,IAAIa,sBAAU,CAAC,UAAUC,UAAU,EAAE;IAC1C,IAAIe,iBAAiB,GAAG,IAAAC,mCAAgB,EACtCC,QAAQ,EACRC,gBAAS,CAACC,yBAAyB,EACnC,UAAUC,KAAK,EAAE;MACfpB,UAAU,CAACQ,MAAM,CAACa,mCAAmC,CAACD,KAAK,CAAC,CAAC;IAC/D,CACF,CAAC;IAED,OAAOL,iBAAiB,CAACO,IAAI;EAC/B,CAAC,CAAC;AACJ;AAEA,SAASb,6BAA6BA,CAACF,MAAM,EAAE;EAC7C,IAAIgB,IAAI,GAAGhB,MAAM,CAACgB,IAAI;EACtB,IAAIC,IAAI,GAAGjB,MAAM,CAACiB,IAAI;EACtB,OAAOC,mBAAmB,CAAC;IACzBD,IAAI,EAAED,IAAI,CAACG,EAAE;IACbC,OAAO,EAAEH,IAAI,GAAG,IAAI,GAAGD,IAAI,CAACI,OAAO;IACnCC,aAAa,EAAErB,MAAM;IACrBsB,KAAK,EAAEC,UAAU,CACfP,IAAI,CAACG,EAAE,EACPH,IAAI,CAACI,OAAO,EACZJ,IAAI,CAACQ,UAAU,EACfR,IAAI,CAACS,UAAU,EACfT,IAAI,CAACU,YACP;EACF,CAAC,CAAC;AACJ;AACA,SAASR,mBAAmBA,CAACS,OAAO,EAAE;EACpC,OAAO,IAAAC,aAAM,EACX;IACEC,WAAW,EAAE,IAAAC,gBAAS,EAAC,CAAC;IACxBC,MAAM,EAAEC,uBAAW,CAACC,MAAM;IAC1BC,QAAQ,EAAEC,oBAAa,CAACC;EAC1B,CAAC,EACDT,OACF,CAAC;AACH;AACA,SAASb,mCAAmCA,CAACD,KAAK,EAAE;EAClD,IAAIO,OAAO,GACT,GAAG,GACHP,KAAK,CAACwB,UAAU,GAChB,gBAAgB,GAChBxB,KAAK,CAACyB,kBAAkB,GACxB,aAAa;EACf,OAAOpB,mBAAmB,CAAC;IACzBD,IAAI,EAAEJ,KAAK,CAACyB,kBAAkB;IAC9BlB,OAAO,EAAE/C,aAAa,CAACI,YAAY,GAAG,IAAI,GAAG2C,OAAO;IACpDC,aAAa,EAAER,KAAK;IACpB0B,GAAG,EAAE;MACHC,WAAW,EAAE3B,KAAK,CAAC2B;IACrB,CAAC;IACDlB,KAAK,EAAEC,UAAU,CACfV,KAAK,CAACyB,kBAAkB,EACxBzB,KAAK,CAAC4B,cAAc,MAAAC,MAAA,CACbtB,OAAO,uBAAAsB,MAAA,CAAmB,IAAAC,mBAAY,EACvC9B,KAAK,CAAC4B,cAAc,EACpB,GAAG,EACH,KACF,CAAC,UACD,WAAW,EACf5B,KAAK,CAACW,UAAU,EAChBX,KAAK,CAACY,UAAU,EAChBZ,KAAK,CAACa,YACR;EACF,CAAC,CAAC;AACJ;AAEA,SAASH,UAAUA,CAACqB,IAAI,EAAExB,OAAO,EAAEI,UAAU,EAAEC,UAAU,EAAEC,YAAY,EAAE;EACvE,OACEF,UAAU,IACV,IAAAqB,8BAAkB,EAAC;IACjBD,IAAI,EAAEA,IAAI;IACVxB,OAAO,EAAEA,OAAO;IAChBE,KAAK,EAAE,CACL;MACEwB,IAAI,EAAE,GAAG;MACTC,GAAG,EAAEvB,UAAU;MACfwB,IAAI,EAAEvB,UAAU;MAChBwB,MAAM,EAAEvB;IACV,CAAC;EAEL,CAAC,CAAC;AAEN","ignoreList":[]}
|
|
@@ -72,6 +72,7 @@ function startSessionManager(configuration, productKey, computeSessionState) {
|
|
|
72
72
|
findSession: function findSession(startTime, options) {
|
|
73
73
|
return sessionContextHistory.find(startTime, options);
|
|
74
74
|
},
|
|
75
|
+
expandOrRenewSession: sessionStore.expandOrRenewSession,
|
|
75
76
|
renewObservable: renewObservable,
|
|
76
77
|
expireObservable: expireObservable,
|
|
77
78
|
sessionStateUpdateObservable: sessionStore.sessionStateUpdateObservable,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessionManagement.js","names":["_observable","require","_valueHistory","_tools","_enums","_addEventListener3","_timer","_sessionConstants","_sessionStore","VISIBILITY_CHECK_DELAY","exports","ONE_MINUTE","SESSION_CONTEXT_TIMEOUT_DELAY","SESSION_TIME_OUT_DELAY","stopCallbacks","startSessionManager","configuration","productKey","computeSessionState","renewObservable","Observable","expireObservable","sessionStore","startSessionStore","sessionStoreStrategyType","push","stop","sessionContextHistory","createValueHistory","expireDelay","subscribe","add","buildSessionContext","relativeNow","notify","closeActive","expandOrRenewSession","clocksOrigin","relative","trackActivity","trackVisibility","expandSession","trackResume","restartSession","session","getSession","id","trackingType","SESSION_NOT_TRACKED","isSessionForced","hasError","forcedSession","findSession","startTime","options","find","sessionStateUpdateObservable","expire","updateSessionState","stopSessionManager","forEach","e","_addEventListeners","addEventListeners","window","DOM_EVENT","CLICK","TOUCH_START","KEY_DOWN","SCROLL","capture","passive","expandSessionWhenVisible","document","visibilityState","_addEventListener","addEventListener","VISIBILITY_CHANGE","visibilityCheckInterval","setInterval","clearInterval","cb","_addEventListener2","RESUME"],"sources":["../../src/session/sessionManagement.js"],"sourcesContent":["import { Observable } from '../helper/observable'\nimport { createValueHistory } from '../helper/valueHistory'\nimport { relativeNow, clocksOrigin, ONE_MINUTE } from '../helper/tools'\nimport { DOM_EVENT } from '../helper/enums'\nimport {\n addEventListener,\n addEventListeners\n} from '../browser/addEventListener'\nimport { clearInterval, setInterval } from '../helper/timer'\nimport { SESSION_TIME_OUT_DELAY, SESSION_NOT_TRACKED } from './sessionConstants'\nimport { startSessionStore } from './sessionStore'\n\nexport const VISIBILITY_CHECK_DELAY = ONE_MINUTE\nconst SESSION_CONTEXT_TIMEOUT_DELAY = SESSION_TIME_OUT_DELAY\nlet stopCallbacks = []\n\nexport function startSessionManager(\n configuration,\n productKey,\n computeSessionState\n) {\n const renewObservable = new Observable()\n const expireObservable = new Observable()\n\n const sessionStore = startSessionStore(\n configuration.sessionStoreStrategyType,\n productKey,\n computeSessionState\n )\n stopCallbacks.push(function () {\n return sessionStore.stop()\n })\n\n const sessionContextHistory = createValueHistory({\n expireDelay: SESSION_CONTEXT_TIMEOUT_DELAY\n })\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 // manager is started.\n sessionStore.expandOrRenewSession()\n sessionContextHistory.add(buildSessionContext(), clocksOrigin().relative)\n\n trackActivity(function () {\n sessionStore.expandOrRenewSession()\n })\n trackVisibility(function () {\n return sessionStore.expandSession()\n })\n trackResume(function () {\n sessionStore.restartSession()\n })\n\n function buildSessionContext() {\n const session = sessionStore.getSession()\n if (!session) {\n return {\n id: 'invalid',\n trackingType: SESSION_NOT_TRACKED,\n isSessionForced: false,\n hasError: false\n }\n }\n return {\n id: session.id,\n trackingType: session[productKey],\n hasError: !!session.hasError,\n isSessionForced: !!session.forcedSession\n }\n }\n\n return {\n findSession: function (startTime, options) {\n return sessionContextHistory.find(startTime, options)\n },\n renewObservable,\n expireObservable,\n sessionStateUpdateObservable: sessionStore.sessionStateUpdateObservable,\n expire: sessionStore.expire,\n updateSessionState: sessionStore.updateSessionState\n }\n}\n\nexport function stopSessionManager() {\n stopCallbacks.forEach(function (e) {\n e()\n })\n stopCallbacks = []\n}\n\nfunction trackActivity(expandOrRenewSession) {\n const { stop } = 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(stop)\n}\n\nfunction trackVisibility(expandSession) {\n const expandSessionWhenVisible = function () {\n if (document.visibilityState === 'visible') {\n expandSession()\n }\n }\n\n const { stop } = addEventListener(\n document,\n DOM_EVENT.VISIBILITY_CHANGE,\n expandSessionWhenVisible\n )\n stopCallbacks.push(stop)\n\n const visibilityCheckInterval = setInterval(\n expandSessionWhenVisible,\n VISIBILITY_CHECK_DELAY\n )\n stopCallbacks.push(function () {\n clearInterval(visibilityCheckInterval)\n })\n}\n\nfunction trackResume(cb) {\n const { stop } = addEventListener(window, DOM_EVENT.RESUME, cb, {\n capture: true\n })\n stopCallbacks.push(stop)\n}\n"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"sessionManagement.js","names":["_observable","require","_valueHistory","_tools","_enums","_addEventListener3","_timer","_sessionConstants","_sessionStore","VISIBILITY_CHECK_DELAY","exports","ONE_MINUTE","SESSION_CONTEXT_TIMEOUT_DELAY","SESSION_TIME_OUT_DELAY","stopCallbacks","startSessionManager","configuration","productKey","computeSessionState","renewObservable","Observable","expireObservable","sessionStore","startSessionStore","sessionStoreStrategyType","push","stop","sessionContextHistory","createValueHistory","expireDelay","subscribe","add","buildSessionContext","relativeNow","notify","closeActive","expandOrRenewSession","clocksOrigin","relative","trackActivity","trackVisibility","expandSession","trackResume","restartSession","session","getSession","id","trackingType","SESSION_NOT_TRACKED","isSessionForced","hasError","forcedSession","findSession","startTime","options","find","sessionStateUpdateObservable","expire","updateSessionState","stopSessionManager","forEach","e","_addEventListeners","addEventListeners","window","DOM_EVENT","CLICK","TOUCH_START","KEY_DOWN","SCROLL","capture","passive","expandSessionWhenVisible","document","visibilityState","_addEventListener","addEventListener","VISIBILITY_CHANGE","visibilityCheckInterval","setInterval","clearInterval","cb","_addEventListener2","RESUME"],"sources":["../../src/session/sessionManagement.js"],"sourcesContent":["import { Observable } from '../helper/observable'\nimport { createValueHistory } from '../helper/valueHistory'\nimport { relativeNow, clocksOrigin, ONE_MINUTE } from '../helper/tools'\nimport { DOM_EVENT } from '../helper/enums'\nimport {\n addEventListener,\n addEventListeners\n} from '../browser/addEventListener'\nimport { clearInterval, setInterval } from '../helper/timer'\nimport { SESSION_TIME_OUT_DELAY, SESSION_NOT_TRACKED } from './sessionConstants'\nimport { startSessionStore } from './sessionStore'\n\nexport const VISIBILITY_CHECK_DELAY = ONE_MINUTE\nconst SESSION_CONTEXT_TIMEOUT_DELAY = SESSION_TIME_OUT_DELAY\nlet stopCallbacks = []\n\nexport function startSessionManager(\n configuration,\n productKey,\n computeSessionState\n) {\n const renewObservable = new Observable()\n const expireObservable = new Observable()\n\n const sessionStore = startSessionStore(\n configuration.sessionStoreStrategyType,\n productKey,\n computeSessionState\n )\n stopCallbacks.push(function () {\n return sessionStore.stop()\n })\n\n const sessionContextHistory = createValueHistory({\n expireDelay: SESSION_CONTEXT_TIMEOUT_DELAY\n })\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 // manager is started.\n sessionStore.expandOrRenewSession()\n sessionContextHistory.add(buildSessionContext(), clocksOrigin().relative)\n\n trackActivity(function () {\n sessionStore.expandOrRenewSession()\n })\n trackVisibility(function () {\n return sessionStore.expandSession()\n })\n trackResume(function () {\n sessionStore.restartSession()\n })\n\n function buildSessionContext() {\n const session = sessionStore.getSession()\n if (!session) {\n return {\n id: 'invalid',\n trackingType: SESSION_NOT_TRACKED,\n isSessionForced: false,\n hasError: false\n }\n }\n return {\n id: session.id,\n trackingType: session[productKey],\n hasError: !!session.hasError,\n isSessionForced: !!session.forcedSession\n }\n }\n\n return {\n findSession: function (startTime, options) {\n return sessionContextHistory.find(startTime, options)\n },\n expandOrRenewSession: sessionStore.expandOrRenewSession,\n renewObservable,\n expireObservable,\n sessionStateUpdateObservable: sessionStore.sessionStateUpdateObservable,\n expire: sessionStore.expire,\n updateSessionState: sessionStore.updateSessionState\n }\n}\n\nexport function stopSessionManager() {\n stopCallbacks.forEach(function (e) {\n e()\n })\n stopCallbacks = []\n}\n\nfunction trackActivity(expandOrRenewSession) {\n const { stop } = 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(stop)\n}\n\nfunction trackVisibility(expandSession) {\n const expandSessionWhenVisible = function () {\n if (document.visibilityState === 'visible') {\n expandSession()\n }\n }\n\n const { stop } = addEventListener(\n document,\n DOM_EVENT.VISIBILITY_CHANGE,\n expandSessionWhenVisible\n )\n stopCallbacks.push(stop)\n\n const visibilityCheckInterval = setInterval(\n expandSessionWhenVisible,\n VISIBILITY_CHECK_DELAY\n )\n stopCallbacks.push(function () {\n clearInterval(visibilityCheckInterval)\n })\n}\n\nfunction trackResume(cb) {\n const { stop } = addEventListener(window, DOM_EVENT.RESUME, cb, {\n capture: true\n })\n stopCallbacks.push(stop)\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -121,7 +121,7 @@ function startSessionStore(sessionStoreStrategyType, productKey, computeSessionS
|
|
|
121
121
|
function startSession() {
|
|
122
122
|
(0, _sessionStoreOperations.processSessionStoreOperations)({
|
|
123
123
|
process: function process(sessionState) {
|
|
124
|
-
if ((0, _sessionState.isSessionInNotStartedState)(sessionState)) {
|
|
124
|
+
if ((0, _sessionState.isSessionInNotStartedState)(sessionState) || (0, _sessionState.isSessionInExpiredState)(sessionState)) {
|
|
125
125
|
return (0, _sessionState.getExpiredSessionState)();
|
|
126
126
|
}
|
|
127
127
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessionStore.js","names":["_timer","require","_observable","_display","_tools","_sessionInCookie","_sessionState","_sessionInLocalStorage","_sessionStoreOperations","_sessionConstants","STORAGE_POLL_DELAY","exports","ONE_SECOND","selectSessionStoreStrategyType","initConfiguration","sessionPersistence","SessionPersistence","COOKIE","selectCookieStrategy","LOCAL_STORAGE","selectLocalStorageStrategy","undefined","sessionStoreStrategyType","allowFallbackToLocalStorage","display","error","concat","String","startSessionStore","productKey","computeSessionState","renewObservable","Observable","expireObservable","sessionStateUpdateObservable","sessionStoreStrategy","type","initCookieStrategy","cookieOptions","initLocalStorageStrategy","expireSession","watchSessionTimeoutId","setInterval","watchSession","sessionCache","startSession","_throttle","throttle","processSessionStoreOperations","process","sessionState","isSessionInNotStartedState","synchronizedSession","synchronizeSession","expandOrRenewSessionState","after","isSessionStarted","hasSessionInCache","renewSessionInCache","throttledExpandOrRenewSession","throttled","cancelExpandOrRenewSession","cancel","expandSession","isSessionInExpiredState","getExpiredSessionState","isSessionInCacheOutdated","expireSessionInCache","notify","previousState","newState","_computeSessionState","trackingType","isTracked","isExpired","id","UUID","created","dateNow","updateSessionState","partialSessionState","assign","expandOrRenewSession","getSession","restartSession","expire","stop","clearInterval"],"sources":["../../src/session/sessionStore.js"],"sourcesContent":["import { clearInterval, setInterval } from '../helper/timer'\nimport { Observable } from '../helper/observable'\nimport { display } from '../helper/display'\nimport { ONE_SECOND, dateNow, throttle, UUID, assign } from '../helper/tools'\nimport { selectCookieStrategy, initCookieStrategy } from './sessionInCookie'\nimport {\n getExpiredSessionState,\n isSessionInExpiredState,\n isSessionInNotStartedState,\n isSessionStarted\n} from './sessionState'\nimport {\n initLocalStorageStrategy,\n selectLocalStorageStrategy\n} from './sessionInLocalStorage'\nimport { processSessionStoreOperations } from './sessionStoreOperations'\nimport { SessionPersistence } from './sessionConstants'\n\n/**\n * Every second, the storage will be polled to check for any change that can occur\n * to the session state in another browser tab, or another window.\n * This value has been determined from our previous cookie-only implementation.\n */\nexport const STORAGE_POLL_DELAY = ONE_SECOND\n\n/**\n * Checks if cookies are available as the preferred storage\n * Else, checks if LocalStorage is allowed and available\n */\nexport function selectSessionStoreStrategyType(initConfiguration) {\n switch (initConfiguration.sessionPersistence) {\n case SessionPersistence.COOKIE:\n return selectCookieStrategy(initConfiguration)\n\n case SessionPersistence.LOCAL_STORAGE:\n return selectLocalStorageStrategy()\n\n case undefined: {\n let sessionStoreStrategyType = selectCookieStrategy(initConfiguration)\n if (\n !sessionStoreStrategyType &&\n initConfiguration.allowFallbackToLocalStorage\n ) {\n sessionStoreStrategyType = selectLocalStorageStrategy()\n }\n return sessionStoreStrategyType\n }\n\n default:\n display.error(\n `Invalid session persistence '${String(\n initConfiguration.sessionPersistence\n )}'`\n )\n }\n}\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(\n sessionStoreStrategyType,\n productKey,\n computeSessionState\n) {\n const renewObservable = new Observable()\n const expireObservable = new Observable()\n const sessionStateUpdateObservable = new Observable()\n const sessionStoreStrategy =\n sessionStoreStrategyType.type === SessionPersistence.COOKIE\n ? initCookieStrategy(sessionStoreStrategyType.cookieOptions)\n : initLocalStorageStrategy()\n const { expireSession } = sessionStoreStrategy\n\n const watchSessionTimeoutId = setInterval(watchSession, STORAGE_POLL_DELAY)\n let sessionCache\n\n startSession()\n\n const {\n throttled: throttledExpandOrRenewSession,\n cancel: cancelExpandOrRenewSession\n } = throttle(function () {\n processSessionStoreOperations(\n {\n process: function (sessionState) {\n if (isSessionInNotStartedState(sessionState)) {\n return\n }\n\n const synchronizedSession = synchronizeSession(sessionState)\n expandOrRenewSessionState(synchronizedSession)\n return synchronizedSession\n },\n after: function (sessionState) {\n if (isSessionStarted(sessionState) && !hasSessionInCache()) {\n renewSessionInCache(sessionState)\n }\n sessionCache = sessionState\n }\n },\n sessionStoreStrategy\n )\n }, STORAGE_POLL_DELAY)\n\n function expandSession() {\n processSessionStoreOperations(\n {\n process: function (sessionState) {\n return hasSessionInCache()\n ? synchronizeSession(sessionState)\n : undefined\n }\n },\n sessionStoreStrategy\n )\n }\n\n /**\n * allows two behaviors:\n * - if the session is active, synchronize the session cache without updating the session store\n * - if the session is not active, clear the session store and expire the session cache\n */\n function watchSession() {\n processSessionStoreOperations(\n {\n process: function (sessionState) {\n return isSessionInExpiredState(sessionState)\n ? getExpiredSessionState()\n : undefined\n },\n after: synchronizeSession\n },\n sessionStoreStrategy\n )\n }\n\n function synchronizeSession(sessionState) {\n if (isSessionInExpiredState(sessionState)) {\n sessionState = getExpiredSessionState()\n }\n if (hasSessionInCache()) {\n if (isSessionInCacheOutdated(sessionState)) {\n expireSessionInCache()\n } else {\n sessionStateUpdateObservable.notify({\n previousState: sessionCache,\n newState: sessionState\n })\n sessionCache = sessionState\n }\n }\n return sessionState\n }\n\n function startSession() {\n processSessionStoreOperations(\n {\n process: function (sessionState) {\n if (isSessionInNotStartedState(sessionState)) {\n return getExpiredSessionState()\n }\n },\n after: function (sessionState) {\n sessionCache = sessionState\n }\n },\n sessionStoreStrategy\n )\n }\n\n function expandOrRenewSessionState(sessionState) {\n if (isSessionInNotStartedState(sessionState)) {\n return false\n }\n\n const { trackingType, isTracked } = computeSessionState(\n sessionState[productKey]\n )\n sessionState[productKey] = trackingType\n delete sessionState.isExpired\n if (isTracked && !sessionState.id) {\n sessionState.id = UUID()\n sessionState.created = String(dateNow())\n }\n }\n\n function hasSessionInCache() {\n return sessionCache[productKey] !== undefined\n }\n\n function isSessionInCacheOutdated(sessionState) {\n return (\n sessionCache.id !== sessionState.id ||\n sessionCache[productKey] !== sessionState[productKey]\n )\n }\n\n function expireSessionInCache() {\n sessionCache = getExpiredSessionState()\n expireObservable.notify()\n }\n\n function renewSessionInCache(sessionState) {\n sessionCache = sessionState\n renewObservable.notify()\n }\n\n function updateSessionState(partialSessionState) {\n processSessionStoreOperations(\n {\n process: function (sessionState) {\n return assign({}, sessionState, partialSessionState)\n },\n after: synchronizeSession\n },\n sessionStoreStrategy\n )\n }\n\n return {\n expandOrRenewSession: throttledExpandOrRenewSession,\n expandSession,\n getSession: function () {\n return sessionCache\n },\n renewObservable,\n expireObservable,\n sessionStateUpdateObservable,\n restartSession: startSession,\n expire: function () {\n cancelExpandOrRenewSession()\n expireSession()\n synchronizeSession(getExpiredSessionState())\n },\n stop: function () {\n clearInterval(watchSessionTimeoutId)\n },\n updateSessionState\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"sessionStore.js","names":["_timer","require","_observable","_display","_tools","_sessionInCookie","_sessionState","_sessionInLocalStorage","_sessionStoreOperations","_sessionConstants","STORAGE_POLL_DELAY","exports","ONE_SECOND","selectSessionStoreStrategyType","initConfiguration","sessionPersistence","SessionPersistence","COOKIE","selectCookieStrategy","LOCAL_STORAGE","selectLocalStorageStrategy","undefined","sessionStoreStrategyType","allowFallbackToLocalStorage","display","error","concat","String","startSessionStore","productKey","computeSessionState","renewObservable","Observable","expireObservable","sessionStateUpdateObservable","sessionStoreStrategy","type","initCookieStrategy","cookieOptions","initLocalStorageStrategy","expireSession","watchSessionTimeoutId","setInterval","watchSession","sessionCache","startSession","_throttle","throttle","processSessionStoreOperations","process","sessionState","isSessionInNotStartedState","synchronizedSession","synchronizeSession","expandOrRenewSessionState","after","isSessionStarted","hasSessionInCache","renewSessionInCache","throttledExpandOrRenewSession","throttled","cancelExpandOrRenewSession","cancel","expandSession","isSessionInExpiredState","getExpiredSessionState","isSessionInCacheOutdated","expireSessionInCache","notify","previousState","newState","_computeSessionState","trackingType","isTracked","isExpired","id","UUID","created","dateNow","updateSessionState","partialSessionState","assign","expandOrRenewSession","getSession","restartSession","expire","stop","clearInterval"],"sources":["../../src/session/sessionStore.js"],"sourcesContent":["import { clearInterval, setInterval } from '../helper/timer'\nimport { Observable } from '../helper/observable'\nimport { display } from '../helper/display'\nimport { ONE_SECOND, dateNow, throttle, UUID, assign } from '../helper/tools'\nimport { selectCookieStrategy, initCookieStrategy } from './sessionInCookie'\nimport {\n getExpiredSessionState,\n isSessionInExpiredState,\n isSessionInNotStartedState,\n isSessionStarted\n} from './sessionState'\nimport {\n initLocalStorageStrategy,\n selectLocalStorageStrategy\n} from './sessionInLocalStorage'\nimport { processSessionStoreOperations } from './sessionStoreOperations'\nimport { SessionPersistence } from './sessionConstants'\n\n/**\n * Every second, the storage will be polled to check for any change that can occur\n * to the session state in another browser tab, or another window.\n * This value has been determined from our previous cookie-only implementation.\n */\nexport const STORAGE_POLL_DELAY = ONE_SECOND\n\n/**\n * Checks if cookies are available as the preferred storage\n * Else, checks if LocalStorage is allowed and available\n */\nexport function selectSessionStoreStrategyType(initConfiguration) {\n switch (initConfiguration.sessionPersistence) {\n case SessionPersistence.COOKIE:\n return selectCookieStrategy(initConfiguration)\n\n case SessionPersistence.LOCAL_STORAGE:\n return selectLocalStorageStrategy()\n\n case undefined: {\n let sessionStoreStrategyType = selectCookieStrategy(initConfiguration)\n if (\n !sessionStoreStrategyType &&\n initConfiguration.allowFallbackToLocalStorage\n ) {\n sessionStoreStrategyType = selectLocalStorageStrategy()\n }\n return sessionStoreStrategyType\n }\n\n default:\n display.error(\n `Invalid session persistence '${String(\n initConfiguration.sessionPersistence\n )}'`\n )\n }\n}\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(\n sessionStoreStrategyType,\n productKey,\n computeSessionState\n) {\n const renewObservable = new Observable()\n const expireObservable = new Observable()\n const sessionStateUpdateObservable = new Observable()\n const sessionStoreStrategy =\n sessionStoreStrategyType.type === SessionPersistence.COOKIE\n ? initCookieStrategy(sessionStoreStrategyType.cookieOptions)\n : initLocalStorageStrategy()\n const { expireSession } = sessionStoreStrategy\n\n const watchSessionTimeoutId = setInterval(watchSession, STORAGE_POLL_DELAY)\n let sessionCache\n\n startSession()\n\n const {\n throttled: throttledExpandOrRenewSession,\n cancel: cancelExpandOrRenewSession\n } = throttle(function () {\n processSessionStoreOperations(\n {\n process: function (sessionState) {\n if (isSessionInNotStartedState(sessionState)) {\n return\n }\n\n const synchronizedSession = synchronizeSession(sessionState)\n expandOrRenewSessionState(synchronizedSession)\n return synchronizedSession\n },\n after: function (sessionState) {\n if (isSessionStarted(sessionState) && !hasSessionInCache()) {\n renewSessionInCache(sessionState)\n }\n sessionCache = sessionState\n }\n },\n sessionStoreStrategy\n )\n }, STORAGE_POLL_DELAY)\n\n function expandSession() {\n processSessionStoreOperations(\n {\n process: function (sessionState) {\n return hasSessionInCache()\n ? synchronizeSession(sessionState)\n : undefined\n }\n },\n sessionStoreStrategy\n )\n }\n\n /**\n * allows two behaviors:\n * - if the session is active, synchronize the session cache without updating the session store\n * - if the session is not active, clear the session store and expire the session cache\n */\n function watchSession() {\n processSessionStoreOperations(\n {\n process: function (sessionState) {\n return isSessionInExpiredState(sessionState)\n ? getExpiredSessionState()\n : undefined\n },\n after: synchronizeSession\n },\n sessionStoreStrategy\n )\n }\n\n function synchronizeSession(sessionState) {\n if (isSessionInExpiredState(sessionState)) {\n sessionState = getExpiredSessionState()\n }\n if (hasSessionInCache()) {\n if (isSessionInCacheOutdated(sessionState)) {\n expireSessionInCache()\n } else {\n sessionStateUpdateObservable.notify({\n previousState: sessionCache,\n newState: sessionState\n })\n sessionCache = sessionState\n }\n }\n return sessionState\n }\n\n function startSession() {\n processSessionStoreOperations(\n {\n process: function (sessionState) {\n if (\n isSessionInNotStartedState(sessionState) ||\n isSessionInExpiredState(sessionState)\n ) {\n return getExpiredSessionState()\n }\n },\n after: function (sessionState) {\n sessionCache = sessionState\n }\n },\n sessionStoreStrategy\n )\n }\n\n function expandOrRenewSessionState(sessionState) {\n if (isSessionInNotStartedState(sessionState)) {\n return false\n }\n\n const { trackingType, isTracked } = computeSessionState(\n sessionState[productKey]\n )\n sessionState[productKey] = trackingType\n delete sessionState.isExpired\n if (isTracked && !sessionState.id) {\n sessionState.id = UUID()\n sessionState.created = String(dateNow())\n }\n }\n\n function hasSessionInCache() {\n return sessionCache[productKey] !== undefined\n }\n\n function isSessionInCacheOutdated(sessionState) {\n return (\n sessionCache.id !== sessionState.id ||\n sessionCache[productKey] !== sessionState[productKey]\n )\n }\n\n function expireSessionInCache() {\n sessionCache = getExpiredSessionState()\n expireObservable.notify()\n }\n\n function renewSessionInCache(sessionState) {\n sessionCache = sessionState\n renewObservable.notify()\n }\n\n function updateSessionState(partialSessionState) {\n processSessionStoreOperations(\n {\n process: function (sessionState) {\n return assign({}, sessionState, partialSessionState)\n },\n after: synchronizeSession\n },\n sessionStoreStrategy\n )\n }\n\n return {\n expandOrRenewSession: throttledExpandOrRenewSession,\n expandSession,\n getSession: function () {\n return sessionCache\n },\n renewObservable,\n expireObservable,\n sessionStateUpdateObservable,\n restartSession: startSession,\n expire: function () {\n cancelExpandOrRenewSession()\n expireSession()\n synchronizeSession(getExpiredSessionState())\n },\n stop: function () {\n clearInterval(watchSessionTimeoutId)\n },\n updateSessionState\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -15,11 +15,11 @@ function willSyntheticsInjectRum() {
|
|
|
15
15
|
return Boolean(window._GUANCE_SYNTHETICS_INJECTS_RUM || (0, _cookie.getCookie)(SYNTHETICS_INJECTS_RUM_COOKIE_NAME));
|
|
16
16
|
}
|
|
17
17
|
function getSyntheticsTestId() {
|
|
18
|
-
var value = window._GUANCE_SYNTHETICS_PUBLIC_ID
|
|
18
|
+
var value = typeof window._GUANCE_SYNTHETICS_PUBLIC_ID === 'string' ? window._GUANCE_SYNTHETICS_PUBLIC_ID : (0, _cookie.getCookie)(SYNTHETICS_TEST_ID_COOKIE_NAME);
|
|
19
19
|
return typeof value === 'string' ? value : undefined;
|
|
20
20
|
}
|
|
21
21
|
function getSyntheticsResultId() {
|
|
22
|
-
var value = window._GUANCE_SYNTHETICS_RESULT_ID
|
|
22
|
+
var value = typeof window._GUANCE_SYNTHETICS_RESULT_ID === 'string' ? window._GUANCE_SYNTHETICS_RESULT_ID : (0, _cookie.getCookie)(SYNTHETICS_RESULT_ID_COOKIE_NAME);
|
|
23
23
|
return typeof value === 'string' ? value : undefined;
|
|
24
24
|
}
|
|
25
25
|
//# sourceMappingURL=syntheticsWorkerValues.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syntheticsWorkerValues.js","names":["_cookie","require","SYNTHETICS_TEST_ID_COOKIE_NAME","exports","SYNTHETICS_RESULT_ID_COOKIE_NAME","SYNTHETICS_INJECTS_RUM_COOKIE_NAME","willSyntheticsInjectRum","Boolean","window","_GUANCE_SYNTHETICS_INJECTS_RUM","getCookie","getSyntheticsTestId","value","_GUANCE_SYNTHETICS_PUBLIC_ID","undefined","getSyntheticsResultId","_GUANCE_SYNTHETICS_RESULT_ID"],"sources":["../../src/synthetics/syntheticsWorkerValues.js"],"sourcesContent":["import { getCookie } from '../browser/cookie'\n\nexport var SYNTHETICS_TEST_ID_COOKIE_NAME = 'guance-synthetics-public-id'\nexport var SYNTHETICS_RESULT_ID_COOKIE_NAME = 'guance-synthetics-result-id'\nexport var SYNTHETICS_INJECTS_RUM_COOKIE_NAME = 'guance-synthetics-injects-rum'\n\nexport function willSyntheticsInjectRum() {\n return Boolean(\n window._GUANCE_SYNTHETICS_INJECTS_RUM ||\n getCookie(SYNTHETICS_INJECTS_RUM_COOKIE_NAME)\n )\n}\n\nexport function getSyntheticsTestId() {\n var value =\n window._GUANCE_SYNTHETICS_PUBLIC_ID
|
|
1
|
+
{"version":3,"file":"syntheticsWorkerValues.js","names":["_cookie","require","SYNTHETICS_TEST_ID_COOKIE_NAME","exports","SYNTHETICS_RESULT_ID_COOKIE_NAME","SYNTHETICS_INJECTS_RUM_COOKIE_NAME","willSyntheticsInjectRum","Boolean","window","_GUANCE_SYNTHETICS_INJECTS_RUM","getCookie","getSyntheticsTestId","value","_GUANCE_SYNTHETICS_PUBLIC_ID","undefined","getSyntheticsResultId","_GUANCE_SYNTHETICS_RESULT_ID"],"sources":["../../src/synthetics/syntheticsWorkerValues.js"],"sourcesContent":["import { getCookie } from '../browser/cookie'\n\nexport var SYNTHETICS_TEST_ID_COOKIE_NAME = 'guance-synthetics-public-id'\nexport var SYNTHETICS_RESULT_ID_COOKIE_NAME = 'guance-synthetics-result-id'\nexport var SYNTHETICS_INJECTS_RUM_COOKIE_NAME = 'guance-synthetics-injects-rum'\n\nexport function willSyntheticsInjectRum() {\n return Boolean(\n window._GUANCE_SYNTHETICS_INJECTS_RUM ||\n getCookie(SYNTHETICS_INJECTS_RUM_COOKIE_NAME)\n )\n}\n\nexport function getSyntheticsTestId() {\n var value =\n typeof window._GUANCE_SYNTHETICS_PUBLIC_ID === 'string'\n ? window._GUANCE_SYNTHETICS_PUBLIC_ID\n : getCookie(SYNTHETICS_TEST_ID_COOKIE_NAME)\n return typeof value === 'string' ? value : undefined\n}\n\nexport function getSyntheticsResultId() {\n var value =\n typeof window._GUANCE_SYNTHETICS_RESULT_ID === 'string'\n ? window._GUANCE_SYNTHETICS_RESULT_ID\n : getCookie(SYNTHETICS_RESULT_ID_COOKIE_NAME)\n return typeof value === 'string' ? value : undefined\n}\n"],"mappings":";;;;;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAEO,IAAIC,8BAA8B,GAAAC,OAAA,CAAAD,8BAAA,GAAG,6BAA6B;AAClE,IAAIE,gCAAgC,GAAAD,OAAA,CAAAC,gCAAA,GAAG,6BAA6B;AACpE,IAAIC,kCAAkC,GAAAF,OAAA,CAAAE,kCAAA,GAAG,+BAA+B;AAExE,SAASC,uBAAuBA,CAAA,EAAG;EACxC,OAAOC,OAAO,CACZC,MAAM,CAACC,8BAA8B,IACnC,IAAAC,iBAAS,EAACL,kCAAkC,CAChD,CAAC;AACH;AAEO,SAASM,mBAAmBA,CAAA,EAAG;EACpC,IAAIC,KAAK,GACP,OAAOJ,MAAM,CAACK,4BAA4B,KAAK,QAAQ,GACnDL,MAAM,CAACK,4BAA4B,GACnC,IAAAH,iBAAS,EAACR,8BAA8B,CAAC;EAC/C,OAAO,OAAOU,KAAK,KAAK,QAAQ,GAAGA,KAAK,GAAGE,SAAS;AACtD;AAEO,SAASC,qBAAqBA,CAAA,EAAG;EACtC,IAAIH,KAAK,GACP,OAAOJ,MAAM,CAACQ,4BAA4B,KAAK,QAAQ,GACnDR,MAAM,CAACQ,4BAA4B,GACnC,IAAAN,iBAAS,EAACN,gCAAgC,CAAC;EACjD,OAAO,OAAOQ,KAAK,KAAK,QAAQ,GAAGA,KAAK,GAAGE,SAAS;AACtD","ignoreList":[]}
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.createHttpRequest = createHttpRequest;
|
|
7
|
-
exports.
|
|
7
|
+
exports.fetchStrategyWithFallback = fetchStrategyWithFallback;
|
|
8
8
|
var _sendWithRetryStrategy = require("./sendWithRetryStrategy");
|
|
9
9
|
var _addEventListener = require("../browser/addEventListener");
|
|
10
10
|
var _monitor = require("../helper/monitor");
|
|
@@ -31,7 +31,7 @@ function createHttpRequest(endpointUrl, bytesLimit, retryMaxSize, reportError) {
|
|
|
31
31
|
}
|
|
32
32
|
var retryState = (0, _sendWithRetryStrategy.newRetryState)(retryMaxSize);
|
|
33
33
|
var sendStrategyForRetry = function sendStrategyForRetry(payload, onResponse) {
|
|
34
|
-
return
|
|
34
|
+
return fetchStrategyWithFallback(endpointUrl, payload, onResponse);
|
|
35
35
|
};
|
|
36
36
|
return {
|
|
37
37
|
send: function send(payload) {
|
|
@@ -78,47 +78,14 @@ function reportBeaconError(e) {
|
|
|
78
78
|
(0, _telemetry.addTelemetryError)(e);
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
|
-
function
|
|
82
|
-
var data = payload.data;
|
|
83
|
-
var bytesCount = payload.bytesCount;
|
|
81
|
+
function fetchStrategyWithFallback(endpointUrl, payload, onResponse) {
|
|
84
82
|
var url = addBatchPrecision(endpointUrl, payload.encoding);
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
var fetchOption = {
|
|
88
|
-
method: 'POST',
|
|
89
|
-
body: data,
|
|
90
|
-
keepalive: true,
|
|
91
|
-
mode: 'cors'
|
|
92
|
-
};
|
|
93
|
-
var headers = {
|
|
94
|
-
'x-client-timestamp': Date.now().toString()
|
|
95
|
-
};
|
|
96
|
-
if (payload.type) {
|
|
97
|
-
headers['Content-Type'] = payload.type;
|
|
98
|
-
}
|
|
99
|
-
fetchOption.headers = headers;
|
|
100
|
-
fetch(url, fetchOption).then((0, _monitor.monitor)(function (response) {
|
|
101
|
-
if (typeof onResponse === 'function') {
|
|
102
|
-
onResponse({
|
|
103
|
-
status: response.status,
|
|
104
|
-
type: response.type
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
}))["catch"]((0, _monitor.monitor)(function () {
|
|
108
|
-
fetchStrategy(url, payload, onResponse);
|
|
109
|
-
}));
|
|
83
|
+
if (typeof fetch === 'function') {
|
|
84
|
+
sendFetch(url, payload, onResponse);
|
|
110
85
|
} else {
|
|
111
86
|
sendXHR(url, payload, onResponse);
|
|
112
87
|
}
|
|
113
88
|
}
|
|
114
|
-
function isKeepAliveSupported() {
|
|
115
|
-
// Request can throw, cf https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#errors
|
|
116
|
-
try {
|
|
117
|
-
return window.Request && 'keepalive' in new Request('http://a');
|
|
118
|
-
} catch (_unused) {
|
|
119
|
-
return false;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
89
|
function sendXHR(url, payload, onResponse) {
|
|
123
90
|
var data = payload.data;
|
|
124
91
|
var request = new XMLHttpRequest();
|
|
@@ -140,11 +107,10 @@ function sendXHR(url, payload, onResponse) {
|
|
|
140
107
|
});
|
|
141
108
|
request.send(data);
|
|
142
109
|
}
|
|
143
|
-
function
|
|
110
|
+
function sendFetch(url, payload, onResponse) {
|
|
144
111
|
var fetchOption = {
|
|
145
112
|
method: 'POST',
|
|
146
113
|
body: payload.data,
|
|
147
|
-
keepalive: true,
|
|
148
114
|
mode: 'cors'
|
|
149
115
|
};
|
|
150
116
|
var headers = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"httpRequest.js","names":["_sendWithRetryStrategy","require","_addEventListener","_monitor","_telemetry","addBatchPrecision","url","encoding","indexOf","createHttpRequest","endpointUrl","bytesLimit","retryMaxSize","reportError","undefined","retryState","newRetryState","sendStrategyForRetry","payload","onResponse","fetchKeepAliveStrategy","send","sendWithRetryStrategy","sendOnExit","sendBeaconStrategy","data","bytesCount","canUseBeacon","navigator","sendBeacon","beaconData","type","Blob","isQueued","e","reportBeaconError","sendXHR","hasReportedBeaconError","addTelemetryError","canUseKeepAlive","isKeepAliveSupported","fetchOption","method","body","keepalive","mode","headers","Date","now","toString","fetch","then","monitor","response","status","fetchStrategy","window","Request","_unused","request","XMLHttpRequest","open","setRequestHeader","addEventListener","once"],"sources":["../../src/transport/httpRequest.js"],"sourcesContent":["import { newRetryState, sendWithRetryStrategy } from './sendWithRetryStrategy'\nimport { addEventListener } from '../browser/addEventListener'\nimport { monitor } from '../helper/monitor'\nimport { addTelemetryError } from '../telemetry/telemetry'\n/**\n * Use POST request without content type to:\n * - avoid CORS preflight requests\n * - allow usage of sendBeacon\n *\n * multiple elements are sent separated by \\n in order\n * to be parsed correctly without content type header\n */\nfunction addBatchPrecision(url, encoding) {\n if (!url) return url\n url = url + (url.indexOf('?') === -1 ? '?' : '&') + 'precision=ms'\n if (encoding) {\n url = url + '&encoding=' + encoding\n }\n return url\n}\nexport function createHttpRequest(\n endpointUrl,\n bytesLimit,\n retryMaxSize,\n reportError\n) {\n if (retryMaxSize === undefined) {\n retryMaxSize = -1\n }\n var retryState = newRetryState(retryMaxSize)\n var sendStrategyForRetry = function (payload, onResponse) {\n return fetchKeepAliveStrategy(endpointUrl, bytesLimit, payload, onResponse)\n }\n\n return {\n send: function (payload) {\n sendWithRetryStrategy(\n payload,\n retryState,\n sendStrategyForRetry,\n endpointUrl,\n reportError\n )\n },\n /**\n * Since fetch keepalive behaves like regular fetch on Firefox,\n * keep using sendBeaconStrategy on exit\n */\n sendOnExit: function (payload) {\n sendBeaconStrategy(endpointUrl, bytesLimit, payload)\n }\n }\n}\n\nfunction sendBeaconStrategy(endpointUrl, bytesLimit, payload) {\n var data = payload.data\n var bytesCount = payload.bytesCount\n var url = addBatchPrecision(endpointUrl, payload.encoding)\n var canUseBeacon = !!navigator.sendBeacon && bytesCount < bytesLimit\n if (canUseBeacon) {\n try {\n var beaconData\n if (payload.type) {\n beaconData = new Blob([data], {\n type: payload.type\n })\n } else {\n beaconData = data\n }\n\n var isQueued = navigator.sendBeacon(url, beaconData)\n\n if (isQueued) {\n return\n }\n } catch (e) {\n reportBeaconError(e)\n }\n }\n sendXHR(url, payload)\n}\nvar hasReportedBeaconError = false\n\nfunction reportBeaconError(e) {\n if (!hasReportedBeaconError) {\n hasReportedBeaconError = true\n addTelemetryError(e)\n }\n}\nexport function fetchKeepAliveStrategy(\n endpointUrl,\n bytesLimit,\n payload,\n onResponse\n) {\n var data = payload.data\n var bytesCount = payload.bytesCount\n var url = addBatchPrecision(endpointUrl, payload.encoding)\n var canUseKeepAlive = isKeepAliveSupported() && bytesCount < bytesLimit\n if (canUseKeepAlive) {\n var fetchOption = {\n method: 'POST',\n body: data,\n keepalive: true,\n mode: 'cors'\n }\n const headers = {\n 'x-client-timestamp': Date.now().toString()\n }\n if (payload.type) {\n headers['Content-Type'] = payload.type\n }\n fetchOption.headers = headers\n fetch(url, fetchOption)\n .then(\n monitor(function (response) {\n if (typeof onResponse === 'function') {\n onResponse({ status: response.status, type: response.type })\n }\n })\n )\n .catch(\n monitor(function () {\n fetchStrategy(url, payload, onResponse)\n })\n )\n } else {\n sendXHR(url, payload, onResponse)\n }\n}\n\nfunction isKeepAliveSupported() {\n // Request can throw, cf https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#errors\n try {\n return window.Request && 'keepalive' in new Request('http://a')\n } catch {\n return false\n }\n}\n\nfunction sendXHR(url, payload, onResponse) {\n const data = payload.data\n const request = new XMLHttpRequest()\n request.open('POST', url, true)\n if (data instanceof Blob) {\n request.setRequestHeader('Content-Type', data.type)\n } else if (payload.type) {\n request.setRequestHeader('Content-Type', payload.type)\n }\n request.setRequestHeader('x-client-timestamp', Date.now().toString())\n addEventListener(\n request,\n 'loadend',\n function () {\n if (typeof onResponse === 'function') {\n onResponse({ status: request.status })\n }\n },\n {\n once: true\n }\n )\n request.send(data)\n}\nfunction fetchStrategy(url, payload, onResponse) {\n const fetchOption = {\n method: 'POST',\n body: payload.data,\n keepalive: true,\n mode: 'cors'\n }\n const headers = {\n 'x-client-timestamp': Date.now().toString()\n }\n if (payload.type) {\n headers['Content-Type'] = payload.type\n }\n fetchOption.headers = headers\n\n fetch(url, fetchOption)\n .then(\n monitor(function (response) {\n if (typeof onResponse === 'function') {\n onResponse({ status: response.status, type: response.type })\n }\n })\n )\n .catch(\n monitor(function () {\n if (typeof onResponse === 'function') {\n onResponse({ status: 0 })\n }\n })\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"httpRequest.js","names":["_sendWithRetryStrategy","require","_addEventListener","_monitor","_telemetry","addBatchPrecision","url","encoding","indexOf","createHttpRequest","endpointUrl","bytesLimit","retryMaxSize","reportError","undefined","retryState","newRetryState","sendStrategyForRetry","payload","onResponse","fetchStrategyWithFallback","send","sendWithRetryStrategy","sendOnExit","sendBeaconStrategy","data","bytesCount","canUseBeacon","navigator","sendBeacon","beaconData","type","Blob","isQueued","e","reportBeaconError","sendXHR","hasReportedBeaconError","addTelemetryError","fetch","sendFetch","request","XMLHttpRequest","open","setRequestHeader","Date","now","toString","addEventListener","status","once","fetchOption","method","body","mode","headers","then","monitor","response"],"sources":["../../src/transport/httpRequest.js"],"sourcesContent":["import { newRetryState, sendWithRetryStrategy } from './sendWithRetryStrategy'\nimport { addEventListener } from '../browser/addEventListener'\nimport { monitor } from '../helper/monitor'\nimport { addTelemetryError } from '../telemetry/telemetry'\n/**\n * Use POST request without content type to:\n * - avoid CORS preflight requests\n * - allow usage of sendBeacon\n *\n * multiple elements are sent separated by \\n in order\n * to be parsed correctly without content type header\n */\nfunction addBatchPrecision(url, encoding) {\n if (!url) return url\n url = url + (url.indexOf('?') === -1 ? '?' : '&') + 'precision=ms'\n if (encoding) {\n url = url + '&encoding=' + encoding\n }\n return url\n}\nexport function createHttpRequest(\n endpointUrl,\n bytesLimit,\n retryMaxSize,\n reportError\n) {\n if (retryMaxSize === undefined) {\n retryMaxSize = -1\n }\n var retryState = newRetryState(retryMaxSize)\n var sendStrategyForRetry = function (payload, onResponse) {\n return fetchStrategyWithFallback(endpointUrl, payload, onResponse)\n }\n\n return {\n send: function (payload) {\n sendWithRetryStrategy(\n payload,\n retryState,\n sendStrategyForRetry,\n endpointUrl,\n reportError\n )\n },\n /**\n * Since fetch keepalive behaves like regular fetch on Firefox,\n * keep using sendBeaconStrategy on exit\n */\n sendOnExit: function (payload) {\n sendBeaconStrategy(endpointUrl, bytesLimit, payload)\n }\n }\n}\n\nfunction sendBeaconStrategy(endpointUrl, bytesLimit, payload) {\n var data = payload.data\n var bytesCount = payload.bytesCount\n var url = addBatchPrecision(endpointUrl, payload.encoding)\n var canUseBeacon = !!navigator.sendBeacon && bytesCount < bytesLimit\n if (canUseBeacon) {\n try {\n var beaconData\n if (payload.type) {\n beaconData = new Blob([data], {\n type: payload.type\n })\n } else {\n beaconData = data\n }\n\n var isQueued = navigator.sendBeacon(url, beaconData)\n\n if (isQueued) {\n return\n }\n } catch (e) {\n reportBeaconError(e)\n }\n }\n sendXHR(url, payload)\n}\nvar hasReportedBeaconError = false\n\nfunction reportBeaconError(e) {\n if (!hasReportedBeaconError) {\n hasReportedBeaconError = true\n addTelemetryError(e)\n }\n}\nexport function fetchStrategyWithFallback(\n endpointUrl,\n payload,\n onResponse\n) {\n var url = addBatchPrecision(endpointUrl, payload.encoding)\n if (typeof fetch === 'function') {\n sendFetch(url, payload, onResponse)\n } else {\n sendXHR(url, payload, onResponse)\n }\n}\n\nfunction sendXHR(url, payload, onResponse) {\n const data = payload.data\n const request = new XMLHttpRequest()\n request.open('POST', url, true)\n if (data instanceof Blob) {\n request.setRequestHeader('Content-Type', data.type)\n } else if (payload.type) {\n request.setRequestHeader('Content-Type', payload.type)\n }\n request.setRequestHeader('x-client-timestamp', Date.now().toString())\n addEventListener(\n request,\n 'loadend',\n function () {\n if (typeof onResponse === 'function') {\n onResponse({ status: request.status })\n }\n },\n {\n once: true\n }\n )\n request.send(data)\n}\nfunction sendFetch(url, payload, onResponse) {\n const fetchOption = {\n method: 'POST',\n body: payload.data,\n mode: 'cors'\n }\n const headers = {\n 'x-client-timestamp': Date.now().toString()\n }\n if (payload.type) {\n headers['Content-Type'] = payload.type\n }\n fetchOption.headers = headers\n\n fetch(url, fetchOption)\n .then(\n monitor(function (response) {\n if (typeof onResponse === 'function') {\n onResponse({ status: response.status, type: response.type })\n }\n })\n )\n .catch(\n monitor(function () {\n if (typeof onResponse === 'function') {\n onResponse({ status: 0 })\n }\n })\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -7,10 +7,10 @@ export function fetchAndApplyRemoteClocks(initConfiguration, callback) {
|
|
|
7
7
|
fetchRemoteClocks(initConfiguration, function (serverTimestamp) {
|
|
8
8
|
var end = performance.now();
|
|
9
9
|
var rtt = end - start;
|
|
10
|
-
callback(applyRemoteClocks(serverTimestamp, rtt));
|
|
10
|
+
callback(applyRemoteClocks(serverTimestamp, rtt, start));
|
|
11
11
|
});
|
|
12
12
|
}
|
|
13
|
-
function applyRemoteClocks(serverTimestamp, rtt) {
|
|
13
|
+
function applyRemoteClocks(serverTimestamp, rtt, start) {
|
|
14
14
|
var estimatedClientTime = performance.timing.navigationStart + start + rtt / 2;
|
|
15
15
|
var offset = serverTimestamp - estimatedClientTime;
|
|
16
16
|
return offset;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asyncClocks.js","names":["addEventListener","display","trim","timeOffset","fetchAndApplyRemoteClocks","initConfiguration","callback","start","performance","now","fetchRemoteClocks","serverTimestamp","end","rtt","applyRemoteClocks","estimatedClientTime","timing","navigationStart","offset","configuration","xhr","XMLHttpRequest","status","remoteConfiguration","JSON","parse","responseText","content","displayRemoteClocksFetchingError","open","buildEndpoint","send","url","datakitOrigin","datakitUrl","site","indexOf","location","origin","endpoint","lastIndexOf","length","applicationId","clientToken","error"],"sources":["../../src/browser/asyncClocks.js"],"sourcesContent":["import { addEventListener } from './addEventListener'\nimport { display } from '../helper/display'\nimport { trim } from '../configuration/transportConfiguration'\nlet timeOffset\nexport function fetchAndApplyRemoteClocks(initConfiguration, callback) {\n const start = performance.now()\n fetchRemoteClocks(initConfiguration, (serverTimestamp) => {\n const end = performance.now()\n const rtt = end - start\n callback(applyRemoteClocks(serverTimestamp, rtt))\n })\n}\nfunction applyRemoteClocks(serverTimestamp, rtt) {\n const estimatedClientTime =\n performance.timing.navigationStart + start + rtt / 2\n\n const offset = serverTimestamp - estimatedClientTime\n return offset\n}\nexport function fetchRemoteClocks(configuration, callback) {\n const xhr = new XMLHttpRequest()\n\n addEventListener(xhr, 'load', function () {\n if (xhr.status === 200) {\n const remoteConfiguration = JSON.parse(xhr.responseText)\n callback(remoteConfiguration.content)\n } else {\n displayRemoteClocksFetchingError()\n }\n })\n\n addEventListener(xhr, 'error', function () {\n callback({})\n displayRemoteClocksFetchingError()\n })\n\n xhr.open('GET', buildEndpoint(configuration))\n xhr.send()\n}\n\nexport function buildEndpoint(configuration) {\n var url =\n configuration.datakitOrigin ||\n configuration.datakitUrl ||\n configuration.site\n if (url.indexOf('/') === 0) {\n url = location.origin + trim(url)\n }\n var endpoint = url\n if (url.lastIndexOf('/') === url.length - 1) {\n endpoint = trim(url) + 'v1/env_variable'\n } else {\n endpoint = trim(url) + '/v1/env_variable'\n }\n endpoint += '?app_id=' + configuration.applicationId\n //testing-openway.dataflux.cn/v1/env_variable?token=a47fb0cdddaa4561a90d941317cdbc0b&app_id=d1b454d0_22eb_11ef_9b66_95ca11aa2c6c&to_headless=true\n if (configuration.site && configuration.clientToken) {\n endpoint =\n endpoint + '&token=' + configuration.clientToken + '&to_headless=true'\n }\n return endpoint\n}\n\nfunction displayRemoteClocksFetchingError() {\n display.error('Error fetching the remote configuration.')\n}\n"],"mappings":"AAAA,SAASA,gBAAgB,QAAQ,oBAAoB;AACrD,SAASC,OAAO,QAAQ,mBAAmB;AAC3C,SAASC,IAAI,QAAQ,yCAAyC;AAC9D,IAAIC,UAAU;AACd,OAAO,SAASC,yBAAyBA,CAACC,iBAAiB,EAAEC,QAAQ,EAAE;EACrE,IAAMC,KAAK,GAAGC,WAAW,CAACC,GAAG,CAAC,CAAC;EAC/BC,iBAAiB,CAACL,iBAAiB,EAAE,UAACM,eAAe,EAAK;IACxD,IAAMC,GAAG,GAAGJ,WAAW,CAACC,GAAG,CAAC,CAAC;IAC7B,IAAMI,GAAG,GAAGD,GAAG,GAAGL,KAAK;IACvBD,QAAQ,CAACQ,iBAAiB,CAACH,eAAe,EAAEE,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"asyncClocks.js","names":["addEventListener","display","trim","timeOffset","fetchAndApplyRemoteClocks","initConfiguration","callback","start","performance","now","fetchRemoteClocks","serverTimestamp","end","rtt","applyRemoteClocks","estimatedClientTime","timing","navigationStart","offset","configuration","xhr","XMLHttpRequest","status","remoteConfiguration","JSON","parse","responseText","content","displayRemoteClocksFetchingError","open","buildEndpoint","send","url","datakitOrigin","datakitUrl","site","indexOf","location","origin","endpoint","lastIndexOf","length","applicationId","clientToken","error"],"sources":["../../src/browser/asyncClocks.js"],"sourcesContent":["import { addEventListener } from './addEventListener'\nimport { display } from '../helper/display'\nimport { trim } from '../configuration/transportConfiguration'\nlet timeOffset\nexport function fetchAndApplyRemoteClocks(initConfiguration, callback) {\n const start = performance.now()\n fetchRemoteClocks(initConfiguration, (serverTimestamp) => {\n const end = performance.now()\n const rtt = end - start\n callback(applyRemoteClocks(serverTimestamp, rtt, start))\n })\n}\nfunction applyRemoteClocks(serverTimestamp, rtt, start) {\n const estimatedClientTime =\n performance.timing.navigationStart + start + rtt / 2\n\n const offset = serverTimestamp - estimatedClientTime\n return offset\n}\nexport function fetchRemoteClocks(configuration, callback) {\n const xhr = new XMLHttpRequest()\n\n addEventListener(xhr, 'load', function () {\n if (xhr.status === 200) {\n const remoteConfiguration = JSON.parse(xhr.responseText)\n callback(remoteConfiguration.content)\n } else {\n displayRemoteClocksFetchingError()\n }\n })\n\n addEventListener(xhr, 'error', function () {\n callback({})\n displayRemoteClocksFetchingError()\n })\n\n xhr.open('GET', buildEndpoint(configuration))\n xhr.send()\n}\n\nexport function buildEndpoint(configuration) {\n var url =\n configuration.datakitOrigin ||\n configuration.datakitUrl ||\n configuration.site\n if (url.indexOf('/') === 0) {\n url = location.origin + trim(url)\n }\n var endpoint = url\n if (url.lastIndexOf('/') === url.length - 1) {\n endpoint = trim(url) + 'v1/env_variable'\n } else {\n endpoint = trim(url) + '/v1/env_variable'\n }\n endpoint += '?app_id=' + configuration.applicationId\n //testing-openway.dataflux.cn/v1/env_variable?token=a47fb0cdddaa4561a90d941317cdbc0b&app_id=d1b454d0_22eb_11ef_9b66_95ca11aa2c6c&to_headless=true\n if (configuration.site && configuration.clientToken) {\n endpoint =\n endpoint + '&token=' + configuration.clientToken + '&to_headless=true'\n }\n return endpoint\n}\n\nfunction displayRemoteClocksFetchingError() {\n display.error('Error fetching the remote configuration.')\n}\n"],"mappings":"AAAA,SAASA,gBAAgB,QAAQ,oBAAoB;AACrD,SAASC,OAAO,QAAQ,mBAAmB;AAC3C,SAASC,IAAI,QAAQ,yCAAyC;AAC9D,IAAIC,UAAU;AACd,OAAO,SAASC,yBAAyBA,CAACC,iBAAiB,EAAEC,QAAQ,EAAE;EACrE,IAAMC,KAAK,GAAGC,WAAW,CAACC,GAAG,CAAC,CAAC;EAC/BC,iBAAiB,CAACL,iBAAiB,EAAE,UAACM,eAAe,EAAK;IACxD,IAAMC,GAAG,GAAGJ,WAAW,CAACC,GAAG,CAAC,CAAC;IAC7B,IAAMI,GAAG,GAAGD,GAAG,GAAGL,KAAK;IACvBD,QAAQ,CAACQ,iBAAiB,CAACH,eAAe,EAAEE,GAAG,EAAEN,KAAK,CAAC,CAAC;EAC1D,CAAC,CAAC;AACJ;AACA,SAASO,iBAAiBA,CAACH,eAAe,EAAEE,GAAG,EAAEN,KAAK,EAAE;EACtD,IAAMQ,mBAAmB,GACvBP,WAAW,CAACQ,MAAM,CAACC,eAAe,GAAGV,KAAK,GAAGM,GAAG,GAAG,CAAC;EAEtD,IAAMK,MAAM,GAAGP,eAAe,GAAGI,mBAAmB;EACpD,OAAOG,MAAM;AACf;AACA,OAAO,SAASR,iBAAiBA,CAACS,aAAa,EAAEb,QAAQ,EAAE;EACzD,IAAMc,GAAG,GAAG,IAAIC,cAAc,CAAC,CAAC;EAEhCrB,gBAAgB,CAACoB,GAAG,EAAE,MAAM,EAAE,YAAY;IACxC,IAAIA,GAAG,CAACE,MAAM,KAAK,GAAG,EAAE;MACtB,IAAMC,mBAAmB,GAAGC,IAAI,CAACC,KAAK,CAACL,GAAG,CAACM,YAAY,CAAC;MACxDpB,QAAQ,CAACiB,mBAAmB,CAACI,OAAO,CAAC;IACvC,CAAC,MAAM;MACLC,gCAAgC,CAAC,CAAC;IACpC;EACF,CAAC,CAAC;EAEF5B,gBAAgB,CAACoB,GAAG,EAAE,OAAO,EAAE,YAAY;IACzCd,QAAQ,CAAC,CAAC,CAAC,CAAC;IACZsB,gCAAgC,CAAC,CAAC;EACpC,CAAC,CAAC;EAEFR,GAAG,CAACS,IAAI,CAAC,KAAK,EAAEC,aAAa,CAACX,aAAa,CAAC,CAAC;EAC7CC,GAAG,CAACW,IAAI,CAAC,CAAC;AACZ;AAEA,OAAO,SAASD,aAAaA,CAACX,aAAa,EAAE;EAC3C,IAAIa,GAAG,GACLb,aAAa,CAACc,aAAa,IAC3Bd,aAAa,CAACe,UAAU,IACxBf,aAAa,CAACgB,IAAI;EACpB,IAAIH,GAAG,CAACI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;IAC1BJ,GAAG,GAAGK,QAAQ,CAACC,MAAM,GAAGpC,IAAI,CAAC8B,GAAG,CAAC;EACnC;EACA,IAAIO,QAAQ,GAAGP,GAAG;EAClB,IAAIA,GAAG,CAACQ,WAAW,CAAC,GAAG,CAAC,KAAKR,GAAG,CAACS,MAAM,GAAG,CAAC,EAAE;IAC3CF,QAAQ,GAAGrC,IAAI,CAAC8B,GAAG,CAAC,GAAG,iBAAiB;EAC1C,CAAC,MAAM;IACLO,QAAQ,GAAGrC,IAAI,CAAC8B,GAAG,CAAC,GAAG,kBAAkB;EAC3C;EACAO,QAAQ,IAAI,UAAU,GAAGpB,aAAa,CAACuB,aAAa;EACpD;EACA,IAAIvB,aAAa,CAACgB,IAAI,IAAIhB,aAAa,CAACwB,WAAW,EAAE;IACnDJ,QAAQ,GACNA,QAAQ,GAAG,SAAS,GAAGpB,aAAa,CAACwB,WAAW,GAAG,mBAAmB;EAC1E;EACA,OAAOJ,QAAQ;AACjB;AAEA,SAASX,gCAAgCA,CAAA,EAAG;EAC1C3B,OAAO,CAAC2C,KAAK,CAAC,0CAA0C,CAAC;AAC3D","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remoteConfiguration.js","names":["addEventListener","display","trim","objectEntries","getType","fetchAndApplyRemoteConfiguration","initConfiguration","callback","fetchRemoteConfiguration","remoteInitConfiguration","applyRemoteConfiguration","getSimpleRemoteConfiguration","modifiableFieldPaths","sessionSampleRate","telemetrySampleRate","silentMultipleInit","service","env","version","tracingSampleRate","useCrossSiteSessionCookie","usePartitionedCrossSiteSessionCookie","useSecureSessionCookie","trackSessionAcrossSubdomains","storeContextsToLocal","storeContextsKey","sendContentTypeByJson","allowFallbackToLocalStorage","sessionOnErrorSampleRate","sessionReplaySampleRate","sessionReplayOnErrorSampleRate","trackUserInteractions","trackInteractions","actionNameAttribute","trackViewsManually","workerUrl","compressIntakeRequests","traceType","modificationByFieldsPath","remoteConfiguration","result","forEach","_ref","_ref2","_slicedToArray","fieldPath","fieldType","remoteValue","simpleRemoteInitConfiguration","key","undefined","simpleKey","replace","applicationId","_objectSpread","configuration","xhr","XMLHttpRequest","status","JSON","parse","responseText","content","displayRemoteConfigurationFetchingError","open","buildEndpoint","send","url","datakitOrigin","datakitUrl","site","indexOf","location","origin","endpoint","lastIndexOf","length","clientToken","error"],"sources":["../../src/configuration/remoteConfiguration.js"],"sourcesContent":["import { addEventListener } from '../browser/addEventListener'\nimport { display } from '../helper/display'\nimport { trim } from './transportConfiguration'\nimport { objectEntries, getType } from '../helper/tools'\nexport function fetchAndApplyRemoteConfiguration(initConfiguration, callback) {\n fetchRemoteConfiguration(initConfiguration, (remoteInitConfiguration) => {\n callback(\n applyRemoteConfiguration(initConfiguration, remoteInitConfiguration),\n getSimpleRemoteConfiguration(initConfiguration, remoteInitConfiguration)\n )\n })\n}\n\nconst modifiableFieldPaths = {\n sessionSampleRate: 'number',\n telemetrySampleRate: 'number',\n silentMultipleInit: 'boolean',\n service: 'string',\n env: 'string',\n version: 'string',\n tracingSampleRate: 'number',\n useCrossSiteSessionCookie: 'boolean',\n usePartitionedCrossSiteSessionCookie: 'boolean',\n useSecureSessionCookie: 'boolean',\n trackSessionAcrossSubdomains: 'boolean',\n storeContextsToLocal: 'boolean',\n storeContextsKey: 'string',\n sendContentTypeByJson: 'boolean',\n allowFallbackToLocalStorage: 'boolean',\n sessionOnErrorSampleRate: 'number',\n sessionReplaySampleRate: 'number',\n sessionReplayOnErrorSampleRate: 'number',\n trackUserInteractions: 'boolean',\n trackInteractions: 'boolean',\n actionNameAttribute: 'string',\n trackViewsManually: 'boolean',\n workerUrl: 'string',\n compressIntakeRequests: 'boolean',\n traceType: 'string'\n}\nfunction modificationByFieldsPath(remoteConfiguration, modifiableFieldPaths) {\n const result = {}\n objectEntries(modifiableFieldPaths).forEach(([fieldPath, fieldType]) => {\n // const sourceValue = sourceConfiguration[fieldPath]\n const remoteValue = remoteConfiguration[fieldPath]\n if (getType(remoteValue) === fieldType) {\n result[fieldPath] = remoteValue\n }\n })\n return result\n}\nexport function getSimpleRemoteConfiguration(\n initConfiguration,\n remoteInitConfiguration\n) {\n const simpleRemoteInitConfiguration = {}\n for (const key in remoteInitConfiguration) {\n if (remoteInitConfiguration[key] !== undefined) {\n // ex\n // {\n // \"R.d1b454d0_22eb_11ef_9b66_95ca11aa2c6c.sessionSampleRate\": 80\n // }\n // transform to\n // {\n // \"sessionSampleRate\": 80\n // }\n const simpleKey = key.replace(\n 'R.' + initConfiguration.applicationId + '.',\n ''\n )\n simpleRemoteInitConfiguration[simpleKey] = remoteInitConfiguration[key]\n }\n }\n return simpleRemoteInitConfiguration\n}\nexport function applyRemoteConfiguration(\n initConfiguration,\n remoteInitConfiguration\n) {\n const simpleRemoteInitConfiguration = getSimpleRemoteConfiguration(\n initConfiguration,\n remoteInitConfiguration\n )\n return {\n ...initConfiguration,\n ...modificationByFieldsPath(\n simpleRemoteInitConfiguration,\n modifiableFieldPaths\n )\n }\n}\n\nexport function fetchRemoteConfiguration(configuration, callback) {\n const xhr = new XMLHttpRequest()\n\n addEventListener(xhr, 'load', function () {\n if (xhr.status === 200) {\n const remoteConfiguration = JSON.parse(xhr.responseText)\n callback(remoteConfiguration.content)\n } else {\n callback({})\n displayRemoteConfigurationFetchingError()\n }\n })\n\n addEventListener(xhr, 'error', function () {\n callback({})\n displayRemoteConfigurationFetchingError()\n })\n\n xhr.open('GET', buildEndpoint(configuration))\n xhr.send()\n}\n\nexport function buildEndpoint(configuration) {\n var url =\n configuration.datakitOrigin ||\n configuration.datakitUrl ||\n configuration.site\n if (url.indexOf('/') === 0) {\n url = location.origin + trim(url)\n }\n var endpoint = url\n if (url.lastIndexOf('/') === url.length - 1) {\n endpoint = trim(url) + 'v1/env_variable'\n } else {\n endpoint = trim(url) + '/v1/env_variable'\n }\n endpoint += '?app_id=' + configuration.applicationId\n //testing-openway.dataflux.cn/v1/env_variable?token=a47fb0cdddaa4561a90d941317cdbc0b&app_id=d1b454d0_22eb_11ef_9b66_95ca11aa2c6c&to_headless=true\n if (configuration.site && configuration.clientToken) {\n endpoint =\n endpoint + '&token=' + configuration.clientToken + '&to_headless=true'\n }\n return endpoint\n}\n\nfunction displayRemoteConfigurationFetchingError() {\n display.error('Error fetching the remote configuration.')\n}\n"],"mappings":";;;;;;;;;;;;AAAA,SAASA,gBAAgB,QAAQ,6BAA6B;AAC9D,SAASC,OAAO,QAAQ,mBAAmB;AAC3C,SAASC,IAAI,QAAQ,0BAA0B;AAC/C,SAASC,aAAa,EAAEC,OAAO,QAAQ,iBAAiB;AACxD,OAAO,SAASC,gCAAgCA,CAACC,iBAAiB,EAAEC,QAAQ,EAAE;EAC5EC,wBAAwB,CAACF,iBAAiB,EAAE,UAACG,uBAAuB,EAAK;IACvEF,QAAQ,CACNG,wBAAwB,CAACJ,iBAAiB,EAAEG,uBAAuB,CAAC,EACpEE,4BAA4B,CAACL,iBAAiB,EAAEG,uBAAuB,CACzE,CAAC;EACH,CAAC,CAAC;AACJ;AAEA,IAAMG,oBAAoB,GAAG;EAC3BC,iBAAiB,EAAE,QAAQ;EAC3BC,mBAAmB,EAAE,QAAQ;EAC7BC,kBAAkB,EAAE,SAAS;EAC7BC,OAAO,EAAE,QAAQ;EACjBC,GAAG,EAAE,QAAQ;EACbC,OAAO,EAAE,QAAQ;EACjBC,iBAAiB,EAAE,QAAQ;EAC3BC,yBAAyB,EAAE,SAAS;EACpCC,oCAAoC,EAAE,SAAS;EAC/CC,sBAAsB,EAAE,SAAS;EACjCC,4BAA4B,EAAE,SAAS;EACvCC,oBAAoB,EAAE,SAAS;EAC/BC,gBAAgB,EAAE,QAAQ;EAC1BC,qBAAqB,EAAE,SAAS;EAChCC,2BAA2B,EAAE,SAAS;EACtCC,wBAAwB,EAAE,QAAQ;EAClCC,uBAAuB,EAAE,QAAQ;EACjCC,8BAA8B,EAAE,QAAQ;EACxCC,qBAAqB,EAAE,SAAS;EAChCC,iBAAiB,EAAE,SAAS;EAC5BC,mBAAmB,EAAE,QAAQ;EAC7BC,kBAAkB,EAAE,SAAS;EAC7BC,SAAS,EAAE,QAAQ;EACnBC,sBAAsB,EAAE,SAAS;EACjCC,SAAS,EAAE;AACb,CAAC;AACD,SAASC,wBAAwBA,CAACC,mBAAmB,
|
|
1
|
+
{"version":3,"file":"remoteConfiguration.js","names":["addEventListener","display","trim","objectEntries","getType","fetchAndApplyRemoteConfiguration","initConfiguration","callback","fetchRemoteConfiguration","remoteInitConfiguration","applyRemoteConfiguration","getSimpleRemoteConfiguration","modifiableFieldPaths","sessionSampleRate","telemetrySampleRate","silentMultipleInit","service","env","version","tracingSampleRate","useCrossSiteSessionCookie","usePartitionedCrossSiteSessionCookie","useSecureSessionCookie","trackSessionAcrossSubdomains","storeContextsToLocal","storeContextsKey","sendContentTypeByJson","allowFallbackToLocalStorage","sessionOnErrorSampleRate","sessionReplaySampleRate","sessionReplayOnErrorSampleRate","trackUserInteractions","trackInteractions","actionNameAttribute","trackViewsManually","workerUrl","replayCanvasWorkerUrl","compressIntakeRequests","traceType","modificationByFieldsPath","remoteConfiguration","result","forEach","_ref","_ref2","_slicedToArray","fieldPath","fieldType","remoteValue","simpleRemoteInitConfiguration","key","undefined","simpleKey","replace","applicationId","_objectSpread","configuration","xhr","XMLHttpRequest","status","JSON","parse","responseText","content","displayRemoteConfigurationFetchingError","open","buildEndpoint","send","url","datakitOrigin","datakitUrl","site","indexOf","location","origin","endpoint","lastIndexOf","length","clientToken","error"],"sources":["../../src/configuration/remoteConfiguration.js"],"sourcesContent":["import { addEventListener } from '../browser/addEventListener'\nimport { display } from '../helper/display'\nimport { trim } from './transportConfiguration'\nimport { objectEntries, getType } from '../helper/tools'\nexport function fetchAndApplyRemoteConfiguration(initConfiguration, callback) {\n fetchRemoteConfiguration(initConfiguration, (remoteInitConfiguration) => {\n callback(\n applyRemoteConfiguration(initConfiguration, remoteInitConfiguration),\n getSimpleRemoteConfiguration(initConfiguration, remoteInitConfiguration)\n )\n })\n}\n\nconst modifiableFieldPaths = {\n sessionSampleRate: 'number',\n telemetrySampleRate: 'number',\n silentMultipleInit: 'boolean',\n service: 'string',\n env: 'string',\n version: 'string',\n tracingSampleRate: 'number',\n useCrossSiteSessionCookie: 'boolean',\n usePartitionedCrossSiteSessionCookie: 'boolean',\n useSecureSessionCookie: 'boolean',\n trackSessionAcrossSubdomains: 'boolean',\n storeContextsToLocal: 'boolean',\n storeContextsKey: 'string',\n sendContentTypeByJson: 'boolean',\n allowFallbackToLocalStorage: 'boolean',\n sessionOnErrorSampleRate: 'number',\n sessionReplaySampleRate: 'number',\n sessionReplayOnErrorSampleRate: 'number',\n trackUserInteractions: 'boolean',\n trackInteractions: 'boolean',\n actionNameAttribute: 'string',\n trackViewsManually: 'boolean',\n workerUrl: 'string',\n replayCanvasWorkerUrl: 'string',\n compressIntakeRequests: 'boolean',\n traceType: 'string'\n}\nfunction modificationByFieldsPath(remoteConfiguration, modifiableFieldPaths) {\n const result = {}\n objectEntries(modifiableFieldPaths).forEach(([fieldPath, fieldType]) => {\n // const sourceValue = sourceConfiguration[fieldPath]\n const remoteValue = remoteConfiguration[fieldPath]\n if (getType(remoteValue) === fieldType) {\n result[fieldPath] = remoteValue\n }\n })\n return result\n}\nexport function getSimpleRemoteConfiguration(\n initConfiguration,\n remoteInitConfiguration\n) {\n const simpleRemoteInitConfiguration = {}\n for (const key in remoteInitConfiguration) {\n if (remoteInitConfiguration[key] !== undefined) {\n // ex\n // {\n // \"R.d1b454d0_22eb_11ef_9b66_95ca11aa2c6c.sessionSampleRate\": 80\n // }\n // transform to\n // {\n // \"sessionSampleRate\": 80\n // }\n const simpleKey = key.replace(\n 'R.' + initConfiguration.applicationId + '.',\n ''\n )\n simpleRemoteInitConfiguration[simpleKey] = remoteInitConfiguration[key]\n }\n }\n return simpleRemoteInitConfiguration\n}\nexport function applyRemoteConfiguration(\n initConfiguration,\n remoteInitConfiguration\n) {\n const simpleRemoteInitConfiguration = getSimpleRemoteConfiguration(\n initConfiguration,\n remoteInitConfiguration\n )\n return {\n ...initConfiguration,\n ...modificationByFieldsPath(\n simpleRemoteInitConfiguration,\n modifiableFieldPaths\n )\n }\n}\n\nexport function fetchRemoteConfiguration(configuration, callback) {\n const xhr = new XMLHttpRequest()\n\n addEventListener(xhr, 'load', function () {\n if (xhr.status === 200) {\n const remoteConfiguration = JSON.parse(xhr.responseText)\n callback(remoteConfiguration.content)\n } else {\n callback({})\n displayRemoteConfigurationFetchingError()\n }\n })\n\n addEventListener(xhr, 'error', function () {\n callback({})\n displayRemoteConfigurationFetchingError()\n })\n\n xhr.open('GET', buildEndpoint(configuration))\n xhr.send()\n}\n\nexport function buildEndpoint(configuration) {\n var url =\n configuration.datakitOrigin ||\n configuration.datakitUrl ||\n configuration.site\n if (url.indexOf('/') === 0) {\n url = location.origin + trim(url)\n }\n var endpoint = url\n if (url.lastIndexOf('/') === url.length - 1) {\n endpoint = trim(url) + 'v1/env_variable'\n } else {\n endpoint = trim(url) + '/v1/env_variable'\n }\n endpoint += '?app_id=' + configuration.applicationId\n //testing-openway.dataflux.cn/v1/env_variable?token=a47fb0cdddaa4561a90d941317cdbc0b&app_id=d1b454d0_22eb_11ef_9b66_95ca11aa2c6c&to_headless=true\n if (configuration.site && configuration.clientToken) {\n endpoint =\n endpoint + '&token=' + configuration.clientToken + '&to_headless=true'\n }\n return endpoint\n}\n\nfunction displayRemoteConfigurationFetchingError() {\n display.error('Error fetching the remote configuration.')\n}\n"],"mappings":"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","ignoreList":[]}
|