@oneteme/inspect-ng-collector 1.3.0 → 1.3.1

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.
@@ -182,7 +182,7 @@ class ContextManager {
182
182
  let sessionApi = "v4/trace/instance/:id/session";
183
183
  let instanceApi = "v4/trace/instance";
184
184
  return {
185
- user: getStringOrCall(conf?.monitoring?.user),
185
+ user: conf?.monitoring?.user,
186
186
  queueCapacity: requirePostitiveValue(getNumberOrCall(conf?.tracing?.queueCapacity), "queueCapacity", 1000),
187
187
  interval: requirePostitiveValue(getNumberOrCall(conf?.scheduling?.interval), "interval", 60000),
188
188
  delayIfPending: requirePostitiveValue(getNumberOrCall(conf?.tracing?.delayIfPending), "delayIfPending", 30),
@@ -258,7 +258,7 @@ class SessionManager {
258
258
  this.currentSession = {
259
259
  '@type': "10",
260
260
  id: id,
261
- user: ContextManager.instance.techConfig.user,
261
+ user: getStringOrCall(ContextManager.instance.techConfig.user),
262
262
  start: dateNow(),
263
263
  type: "VIEW",
264
264
  location: url,
@@ -473,10 +473,10 @@ class HttpInterceptorService {
473
473
  });
474
474
  }));
475
475
  }
476
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: HttpInterceptorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
477
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: HttpInterceptorService, providedIn: 'root' }); }
476
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: HttpInterceptorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
477
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: HttpInterceptorService, providedIn: 'root' }); }
478
478
  }
479
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: HttpInterceptorService, decorators: [{
479
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: HttpInterceptorService, decorators: [{
480
480
  type: Injectable,
481
481
  args: [{ providedIn: 'root' }]
482
482
  }], ctorParameters: () => [] });
@@ -494,10 +494,10 @@ class GlobalErrorHandlerService {
494
494
  }
495
495
  throw error;
496
496
  }
497
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: GlobalErrorHandlerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
498
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: GlobalErrorHandlerService, providedIn: 'root' }); }
497
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: GlobalErrorHandlerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
498
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: GlobalErrorHandlerService, providedIn: 'root' }); }
499
499
  }
500
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: GlobalErrorHandlerService, decorators: [{
500
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: GlobalErrorHandlerService, decorators: [{
501
501
  type: Injectable,
502
502
  args: [{ providedIn: 'root' }]
503
503
  }] });
@@ -511,13 +511,14 @@ class EventTraceScheduledDispatcherService {
511
511
  this.sessionSendAttempts = 0;
512
512
  this.sendSessionfinished = true;
513
513
  this.instanceSaved = false;
514
- interval(ContextManager.instance.techConfig.interval)
514
+ this.interval = interval(ContextManager.instance.techConfig.interval)
515
515
  .pipe(startWith(0))
516
516
  .pipe(tap$1(() => {
517
517
  if (this.sendSessionfinished) {
518
518
  this.sendSessionfinished = false;
519
519
  window.dispatchEvent(new CustomEvent(PRE_DISPATCH));
520
520
  this.Dispatch()
521
+ .then(arr => this.revertQueueSize(arr))
521
522
  .catch(err => { })
522
523
  .finally(() => { this.sendSessionfinished = true; });
523
524
  }
@@ -527,7 +528,6 @@ class EventTraceScheduledDispatcherService {
527
528
  e.detail.traces && this.addtoQueue(e.detail.traces);
528
529
  if (e.detail.force) {
529
530
  this.sendSessions(true);
530
- this.onDestroy();
531
531
  }
532
532
  });
533
533
  }
@@ -544,29 +544,33 @@ class EventTraceScheduledDispatcherService {
544
544
  });
545
545
  }
546
546
  sendSessions(instanceComplete) {
547
- if (this.traceQueue.size > 0) {
548
- let uri = ContextManager.instance.techConfig.sessionApi + "?attempts=" + ++this.sessionSendAttempts;
549
- if (instanceComplete) {
550
- uri += "&end=" + new Date().toISOString();
547
+ if (this.traceQueue.size === 0) {
548
+ return Promise.resolve(new Set());
549
+ }
550
+ let uri = ContextManager.instance.techConfig.sessionApi + "?attempts=" + ++this.sessionSendAttempts;
551
+ if (instanceComplete) {
552
+ uri += "&end=" + new Date().toISOString();
553
+ }
554
+ const sessions = this.traceQueue;
555
+ this.traceQueue = new Set();
556
+ return fetch(uri, this.getRequestInit(sessions))
557
+ .then(res => {
558
+ if (res.ok) {
559
+ this.sessionSendAttempts = 0;
560
+ return new Set();
551
561
  }
552
- let sessions = this.traceQueue;
553
- this.traceQueue = new Set();
554
- return fetch(uri, this.getRequestInit(sessions))
555
- .then(res => {
556
- if (res.ok) {
557
- this.sessionSendAttempts = 0;
558
- return sessions.size;
559
- }
562
+ if (res.status >= 400 && res.status < 500) {
560
563
  return this.handleEventTraceSavingError(sessions);
561
- })
562
- .catch(() => this.handleEventTraceSavingError(sessions));
563
- }
564
- return Promise.resolve(0);
564
+ }
565
+ return res.json()
566
+ .then(body => body?.retry ? this.handleEventTraceSavingError(sessions) : new Set())
567
+ .catch(() => new Set());
568
+ })
569
+ .catch(() => this.handleEventTraceSavingError(sessions));
565
570
  }
566
571
  handleEventTraceSavingError(sessions) {
567
572
  this.sessionSendAttempts % 5 == 0 && console.warn(`Error while attempting to send sessions, attempts: ${this.sessionSendAttempts}`);
568
- this.revertQueueSize(sessions);
569
- return -1;
573
+ return sessions;
570
574
  }
571
575
  getRequestInit(sessionList) {
572
576
  return {
@@ -610,10 +614,9 @@ class EventTraceScheduledDispatcherService {
610
614
  }
611
615
  }
612
616
  onDestroy() {
613
- this.traceQueue.clear();
614
- this.sendSessionfinished = true;
615
- this.instanceSaved = false;
616
- this.sessionSendAttempts = 0;
617
+ if (this.interval) {
618
+ this.interval.unsubscribe();
619
+ }
617
620
  }
618
621
  }
619
622
 
@@ -630,7 +633,7 @@ function windowUnloadHandler(event) {
630
633
  }
631
634
  function bfCacheHandler(event) {
632
635
  if (event.persisted) { // if the page was restored from bfcache
633
- ContextManager.init(NgCollectorModule.configuration);
636
+ initContextManagerAndDispatcher();
634
637
  SessionManager.instance.navigate(document.URL);
635
638
  setTimeout(() => SessionManager.instance.updateSession(), 0);
636
639
  }
@@ -959,7 +962,6 @@ class EventTraceDebugger {
959
962
  class NgCollectorModule {
960
963
  static { this.forRootCalled = false; }
961
964
  static forRoot(configuration) {
962
- console.log("forRootCalled");
963
965
  this.configuration = configuration;
964
966
  if (configuration?.enabled && !NgCollectorModule.forRootCalled) {
965
967
  NgCollectorModule.forRootCalled = true;
@@ -983,17 +985,16 @@ class NgCollectorModule {
983
985
  ngModule: NgCollectorModule
984
986
  };
985
987
  }
986
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: NgCollectorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
987
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.17", ngImport: i0, type: NgCollectorModule }); }
988
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: NgCollectorModule }); }
988
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: NgCollectorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
989
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.18", ngImport: i0, type: NgCollectorModule }); }
990
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: NgCollectorModule }); }
989
991
  }
990
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: NgCollectorModule, decorators: [{
992
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: NgCollectorModule, decorators: [{
991
993
  type: NgModule
992
994
  }] });
993
995
  function initializeEvents(router) {
994
996
  return () => {
995
- ContextManager.init(NgCollectorModule.configuration);
996
- eventTraceScheduledDispatcher();
997
+ initContextManagerAndDispatcher();
997
998
  eventTraceDebugger();
998
999
  analyticsEventsListener();
999
1000
  //storageEventListener();
@@ -1003,6 +1004,15 @@ function initializeEvents(router) {
1003
1004
  bfCacheListener();
1004
1005
  };
1005
1006
  }
1007
+ function initContextManagerAndDispatcher() {
1008
+ ContextManager.init(NgCollectorModule.configuration);
1009
+ const dispatcher = eventTraceScheduledDispatcher();
1010
+ window.addEventListener(DISPATCH, (e) => {
1011
+ if (e.detail.force) {
1012
+ dispatcher.onDestroy();
1013
+ }
1014
+ });
1015
+ }
1006
1016
 
1007
1017
  function TraceableStage() {
1008
1018
  return function (target, propertyKey, descriptor) {
@@ -1100,5 +1110,5 @@ class LogService {
1100
1110
  * Generated bundle index. Do not edit.
1101
1111
  */
1102
1112
 
1103
- export { LogService, NgCollectorModule, TraceableStage, initializeEvents };
1113
+ export { LogService, NgCollectorModule, TraceableStage, initContextManagerAndDispatcher, initializeEvents };
1104
1114
  //# sourceMappingURL=oneteme-inspect-ng-collector.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"oneteme-inspect-ng-collector.mjs","sources":["../../../../projects/oneteme/inspect-ng-collector/src/lib/util.ts","../../../../projects/oneteme/inspect-ng-collector/src/lib/configuration.ts","../../../../projects/oneteme/inspect-ng-collector/src/lib/context-manager.ts","../../../../projects/oneteme/inspect-ng-collector/src/lib/session-manager.service.ts","../../../../projects/oneteme/inspect-ng-collector/src/lib/rest-request-monitor.ts","../../../../projects/oneteme/inspect-ng-collector/src/lib/http-interceptor.service.ts","../../../../projects/oneteme/inspect-ng-collector/src/lib/global-error-handler.service.ts","../../../../projects/oneteme/inspect-ng-collector/src/lib/event-trace-scheduled-dispatcher.service.ts","../../../../projects/oneteme/inspect-ng-collector/src/lib/handlers.ts","../../../../projects/oneteme/inspect-ng-collector/src/lib/machine-ressource-monitor.service.ts","../../../../projects/oneteme/inspect-ng-collector/src/lib/listeners.ts","../../../../projects/oneteme/inspect-ng-collector/src/lib/trace.model.ts","../../../../projects/oneteme/inspect-ng-collector/src/lib/analytics-collect.service.ts","../../../../projects/oneteme/inspect-ng-collector/src/lib/event-trace-debugger.ts","../../../../projects/oneteme/inspect-ng-collector/src/lib/ng-collector.module.ts","../../../../projects/oneteme/inspect-ng-collector/src/lib/traceable-stage.decorator.ts","../../../../projects/oneteme/inspect-ng-collector/src/lib/log.service.ts","../../../../projects/oneteme/inspect-ng-collector/src/public-api.ts","../../../../projects/oneteme/inspect-ng-collector/src/oneteme-inspect-ng-collector.ts"],"sourcesContent":["import {Level, LogEntry} from \"./trace.model\";\n\nexport const WIN:any = window;\n\nexport function dateNow() {\n return Date.now() / 1_000;\n}\nexport enum RequestMask {\n LOCAL = 1,\n REST = 4\n}\n\nexport const DISPATCH = 'dispatch';\nexport const PRE_DISPATCH = 'pre-dispatch';\nexport const BEFOREUNLOAD ='beforeunload';\n\nexport function createLogEntry(level: Level, message: string, sessionId: string | undefined): LogEntry {\n return {\n \"@type\": \"00\",\n level: level,\n message: message,\n instant: dateNow(),\n sessionId : sessionId\n }\n}\n\nexport function createReport(message: string): LogEntry{\n return {\n \"@type\": \"00\",\n level: \"ERROR\",\n message: message,\n instant: dateNow(),\n }\n}\n\n\n\n","const SLASH = '/';\nexport interface CollectorConfig {\n enabled?: boolean; // default: false\n debugMode?: boolean;\n scheduling?: {\n interval?: number; // default: '60s'\n };\n monitoring?: {\n httpRoute?: {\n excludes?: {\n path?: RegExp[] | (() => RegExp[]); // replace this with string[]\n };\n };\n httpRequest?: {\n excludes?: {\n host?: string[];\n };\n };\n resources?: {\n enabled?: boolean; // default: false\n };\n analytics?: {\n enabled?: boolean; // default: false\n };\n storage?: {\n enabled: boolean // default: false\n }\n name: string | (() => string);\n version?: string | (() => string);\n env?: string | (() => string);\n user?: string | (() => string);\n additionalProperties: ()=> {[key:string]: any};\n };\n tracing?: {\n queueCapacity?: number; // default: 10000\n delayIfPending?: number; // default: 30\n remote?: {\n '@type'?: string;\n mode?: string; // default: null\n host?: string; // default: 'localhost'\n retentionMaxAge?: number; // default: '30'\n };\n };\n}\n\nexport interface TechnicalConf {\n user?: string;\n queueCapacity: number;\n delayIfPending: number\n interval: number;\n instanceApi: string;\n sessionApi: string;\n exclude?: RegExp[];\n hostExcludes?: string[];\n debugMode: boolean;\n analytics: boolean;\n resources: boolean;\n storage: boolean;\n enabled: boolean;\n}\n\n\nexport function getNumberOrCall(o?: number | (() => number)): number | undefined {\n return typeof o === \"function\" ? o() : o;\n}\n\nexport function getStringOrCall(o?: string | (() => string)): string | undefined {\n return typeof o === \"function\" ? o() : o;\n}\n\nexport function getRegArrOrCall(o?: RegExp[] | (() => RegExp[])): RegExp[] | undefined {\n return typeof o === \"function\" ? o() : o;\n}\n\nexport function detectBrowser() {\n try {\n const agent = window.navigator.userAgent.toLowerCase()\n switch (true) {\n case agent.indexOf('edg') > -1:\n return 'Edge';\n case agent.indexOf('opr') > -1:\n return 'Opera';\n case agent.indexOf('chrome') > -1:\n return 'Chrome';\n case agent.indexOf('firefox') > -1:\n return 'Firefox';\n case agent.indexOf('safari') > -1:\n return 'Safari';\n case agent.indexOf('msie') > -1:\n return 'Microsoft Internet Explorer';\n }\n }\n catch (e) {\n console.error(e);\n }\n return undefined;\n}\n\nexport function detectOs() {\n try {\n let versionMatch, version;\n const agent = window.navigator.userAgent.toLowerCase()\n switch (true) {\n case (/windows/.test(agent)):\n versionMatch = /windows nt (\\d+\\.\\d+)/.exec(agent);\n version = versionMatch ? versionMatch[1] : 'Unknown';\n return `Windows ${version}`;\n case (/linux/.test(agent)):\n return 'Linux';\n\n case (/macintosh/.test(agent)):\n versionMatch = /mac os x (\\d+[._]\\d+[._]\\d+)/.exec(agent);\n version = versionMatch ? versionMatch[1] : 'Unknown';\n return `MacOs ${version}`\n }\n }\n catch (e) {\n console.error(e);\n }\n return undefined;\n}\n\n\nfunction toURL(host:string, path:string ){\n return host.endsWith(SLASH) || path.startsWith(SLASH) ? host + path : [host,path].join(SLASH);\n}\n\nexport function matchRegex(v: string | undefined, name: string, pattern: RegExp, defaultValue?: string) {\n if(v && pattern.exec(v)){\n return v;\n }\n if(!defaultValue){\n if(v != undefined){\n throw new Error(`bad value ${name}=${v}, pattern=${pattern}`);\n }else {\n throw new Error(`${name} property is required`);\n }\n }\n return defaultValue;\n}\n\nexport function requirePostitiveValue(v: number | undefined, name: string, defaultValue:number){\n if(v && v > 0) {\n return v;\n }\n if(v == undefined){\n return defaultValue;\n }\n throw new Error(`bad value ${name}=${v} <= 0`);\n}\n\nexport function require(v: string | undefined, name: string){\n if(v!= undefined){\n return v;\n }\n throw new Error(`${name} property is required`);\n}\n\nexport function adaptedConfig(conf: CollectorConfig) {\n return {\n ...conf,\n scheduling: {\n ...conf.scheduling,\n interval: conf.scheduling?.interval && conf.scheduling.interval / 1000\n },\n monitoring: {\n ...conf.monitoring,\n additionalProperties :String(conf.monitoring?.additionalProperties),\n name: String(conf.monitoring?.name),\n version: String(conf.monitoring?.version),\n env: String(conf.monitoring?.env),\n user: String(conf.monitoring?.user),\n httpRoute: {\n ...conf.monitoring?.httpRoute,\n excludes: {\n path: (conf?.monitoring?.httpRoute?.excludes?.path as RegExp[]).map(r => r.source)\n }\n }\n },\n tracing: {\n ...conf.tracing,\n remote: {\n ...conf.tracing?.remote,\n '@type':\"02\",\n retentionMaxAge : (conf.tracing?.remote?.retentionMaxAge ?? 10) * 60 * 60 * 24\n }\n }\n }\n}\n\n\n","import {dateNow} from \"./util\";\nimport {\n adaptedConfig,\n CollectorConfig,\n detectBrowser,\n detectOs, getNumberOrCall, getRegArrOrCall,\n getStringOrCall, matchRegex,\n require, requirePostitiveValue, TechnicalConf\n} from \"./configuration\";\nimport {InstanceEnvironment} from \"./trace.model\";\nexport const SLASH = '/';\nexport const HOST_PATERN = /https?:\\/\\/[\\w\\-.]+(:\\d{2,5})?\\/?/;\nexport class ContextManager {\n\n private static _instance: ContextManager;\n\n constructor( private readonly _instanceEnv: any,\n private readonly _techConfig: any,\n ) {\n }\n\n get techConfig(): any {\n return this._techConfig;\n }\n get instanceEnv(): any {\n return this._instanceEnv;\n }\n\n static get instance(){\n if(!ContextManager._instance){\n console.warn(\"[Inspect-ng-collector] Error while initializing ContextManager\");\n }\n return ContextManager._instance;\n }\n\n static init(conf:CollectorConfig){\n let id = crypto.randomUUID();\n return ContextManager._instance = new ContextManager(ContextManager.createInstance(conf,id),ContextManager.validateAndGetConfig(conf,id));\n }\n\n static validateAndGetConfig(conf:CollectorConfig, instanceId: string):TechnicalConf{\n let host = matchRegex(getStringOrCall(conf?.tracing?.remote?.host), \"host\" , HOST_PATERN)\n let sessionApi = \"v4/trace/instance/:id/session\"\n let instanceApi = \"v4/trace/instance\"\n\n return {\n user : getStringOrCall(conf?.monitoring?.user),\n queueCapacity: requirePostitiveValue(getNumberOrCall(conf?.tracing?.queueCapacity),\"queueCapacity\", 1000) ,\n interval: requirePostitiveValue(getNumberOrCall(conf?.scheduling?.interval),\"interval\", 60000),\n delayIfPending: requirePostitiveValue(getNumberOrCall(conf?.tracing?.delayIfPending),\"delayIfPending\", 30),\n instanceApi: sessionApiURL(host, instanceApi),\n sessionApi: instanceApiURL(host, sessionApi).replace(':id', instanceId),\n exclude: getRegArrOrCall(conf?.monitoring?.httpRoute?.excludes?.path) || [],\n hostExcludes: conf?.monitoring?.httpRequest?.excludes?.host || [],\n debugMode: conf.debugMode ?? false,\n analytics: conf?.monitoring?.analytics?.enabled ?? false,\n resources: conf?.monitoring?.resources?.enabled ?? false,\n storage: conf?.monitoring?.storage?.enabled ?? false,\n enabled: conf.enabled ?? false\n }\n }\n\n\n static createInstance(conf:CollectorConfig,instanceId: string): InstanceEnvironment{\n return {\n id: instanceId,\n name: require(getStringOrCall(conf?.monitoring?.name), 'name'),\n version: getStringOrCall(conf?.monitoring?.version),\n address: getSessionAddress(), //server side\n env: require(getStringOrCall(conf?.monitoring?.env),'env'),\n os: detectOs(),\n re: detectBrowser(),\n user: undefined, // cannot get user\n type: \"CLIENT\",\n instant: dateNow(),\n collector: \"inspect-ng-collector-0.0.1\",\n resource:{ maxHeap: (('memory' in performance) && (performance as any).memory.jsHeapSizeLimit / (1024 * 1024)) || undefined},\n additionalProperties: conf?.monitoring?.additionalProperties(),\n configuration: adaptedConfig(conf)\n }\n }\n}\nfunction getSessionAddress(){\n let inspectId = localStorage.getItem(\"inspect-id\");\n if(!inspectId){\n inspectId = crypto.randomUUID();\n localStorage.setItem(\"inspect-id\", inspectId);\n }\n return inspectId;\n}\nfunction instanceApiURL(host:string, path:string){\n return toURL(host,path);\n}\n\nfunction sessionApiURL(host:string, path:string){\n return toURL(host,path);\n}\nfunction toURL(host:string, path:string ){\n return host.endsWith(SLASH) || path.startsWith(SLASH) ? host + path : [host,path].join(SLASH);\n}\n","\nimport {createReport, dateNow, DISPATCH, WIN} from './util';\nimport {ContextManager} from \"./context-manager\";\nimport {MainSession, MainSessionCallBack} from \"./trace.model\";\n\nexport class SessionManager {\n\n currentSession!: any\n currentSessionCallBack!: MainSessionCallBack;\n private static _instance: SessionManager;\n initialized: boolean = false;\n\n static get instance(): SessionManager{\n if(!SessionManager._instance) {\n SessionManager._instance = new SessionManager();\n WIN[\"inspect-session-manager\"] = SessionManager._instance;\n }\n return SessionManager._instance;\n }\n\n navigate(url?: string) {\n this.getCurrentSession(s => {\n if(s){\n this.getCurrentSessionCallBack(cb => cb.end =dateNow())\n window.dispatchEvent(new CustomEvent( DISPATCH, { detail : { force: !url, traces : this.currentSessionCallBack } }));\n }\n this.currentSession = null\n })\n if (url) {\n let id = crypto.randomUUID()\n this.currentSession = {\n '@type': \"10\",\n id: id,\n user: ContextManager.instance.techConfig.user,\n start: dateNow(),\n type: \"VIEW\",\n location: url,\n loading: true,\n requestMask: 0,\n }\n this.initialized = true;\n this.currentSessionCallBack = {\n '@type': \"11\",\n id: id,\n requestMask: 0,\n }\n }\n }\n\n updateSession(){\n this.getCurrentSession(s => {\n s.name = document.title;\n s.location = document.URL;\n if(!ContextManager.instance.techConfig.exclude?.some((e:any) => e.test(s.location))){\n window.dispatchEvent(new CustomEvent( DISPATCH, { detail : { traces : s } }));\n }\n });\n }\n\n getCurrentSession( fn:(s:MainSession)=> any ) {\n if(this.currentSession){\n return fn(this.currentSession);\n }\n this.initialized && window.dispatchEvent(new CustomEvent( DISPATCH, { detail : { traces : createReport(\"no active session found \") } }));\n return undefined\n }\n\n getCurrentSessionCallBack( fn:(s:MainSessionCallBack)=> any ) {\n if(this.currentSessionCallBack){\n return fn(this.currentSessionCallBack);\n }\n window.dispatchEvent(new CustomEvent( DISPATCH, { detail : { traces : createReport(\"no active session found \") } }));\n return undefined;\n }\n\n currentSessionID(): string | undefined { // (s) => {}\n return this.getCurrentSession(s=> s.id );\n }\n\n\n\n updateMask(requestMask: number) {\n return this.getCurrentSessionCallBack(s => {\n let before = s.requestMask;\n s.requestMask |= requestMask\n return s.requestMask !== before;\n })\n }\n\n addException(exception: any) {\n this.getCurrentSessionCallBack(s => s.exception = exception)\n }\n}\n\n\n\n","import {ExceptionInfo, RestRequest, RestRequestCallBack} from \"./trace.model\";\nimport {createReport, dateNow, DISPATCH, RequestMask} from \"./util\";\nimport {HttpErrorResponse, HttpRequest, HttpResponse} from \"@angular/common/http\";\nimport {SessionManager} from \"./session-manager.service\";\n\nexport class RestRequestMonitor{\n\n readonly restRequest: RestRequest;\n readonly restRequestCallBack: RestRequestCallBack;\n constructor(restRequest: HttpRequest<any>){\n const start = dateNow();\n const url = toHref(restRequest.urlWithParams);\n const auth_user = extractAuthSchemeAnduser(restRequest.headers);\n this.restRequest = {\n \"@type\":\"120\",\n id: crypto.randomUUID(),\n method: restRequest.method,\n protocol: url.protocol.slice(0, -1),\n host: exctractHost(url.host),\n port: +url.port || -1,\n path: url.pathname,\n query: url.search.slice(1, url.search.length),\n contentType: restRequest.responseType,\n authScheme: auth_user.authScheme,\n user: auth_user.user,\n dataSize: sizeOf(restRequest.body),\n start: start,\n sessionId: SessionManager.instance.currentSessionID()\n };\n this.restRequestCallBack = {\n \"@type\":\"121\",\n id : this.restRequest.id,\n dataSize: -1,\n linked: false\n }\n if(SessionManager.instance.currentSessionID() != null ){\n let doUpdateMask = SessionManager.instance.updateMask(RequestMask.REST);\n doUpdateMask && window.dispatchEvent(new CustomEvent( DISPATCH, { detail : {\n traces : {\n \"@type\":\"03\",\n id : SessionManager.instance.currentSessionID(),\n main: true,\n mask: SessionManager.instance.getCurrentSessionCallBack(s => s.requestMask)\n } }\n }));\n }\n }\n\n postProcess(event: HttpResponse<any> | null, error: any) {\n let status: number=0, exception: ExceptionInfo | null = null;\n if(event){\n status = +event.status;\n this.restRequestCallBack.dataSize = sizeOf(event.body);\n this.restRequestCallBack.linked = this.assertSessionID(this.restRequest.id, event.headers);\n }\n if(error){\n this.restRequestCallBack.linked = error?.headers && this.assertSessionID(this.restRequest.id, error.headers);\n status = +error.status;\n exception = {\n type : error.name,\n message: error.error && error.status ? JSON.stringify(error.error) : error.message\n }\n this.restRequestCallBack.bodyContent = error instanceof HttpErrorResponse? JSON.stringify(error.error): undefined;\n this.restRequestCallBack.dataSize = sizeOf(error.error)\n }\n\n this.restRequestCallBack.contentType = extractContentType((<any>event)?.headers)\n this.restRequestCallBack.end= dateNow();\n this.restRequestCallBack.status = +status;\n\n let stage = {\n \"@type\": \"220\",\n name: \"PROCESS\",\n start: this.restRequest.start, // use request\n end: dateNow(),\n order: 0,\n exception: exception,\n requestId : this.restRequestCallBack.id\n }\n\n window.dispatchEvent(new CustomEvent( DISPATCH, { detail : { traces : this.restRequestCallBack } }));\n window.dispatchEvent(new CustomEvent( DISPATCH, { detail : { traces : stage } }));\n }\n\n assertSessionID(id:string, headers:any) {\n if(headers?.has('x-tracert')){\n if(id == headers.get('x-tracert')){\n return true;\n }\n }\n return false;\n }\n}\n\nfunction toHref(url: string): HTMLAnchorElement {\n const href = document.createElement('a');\n href.setAttribute('href', url);\n return href;\n}\n\nfunction exctractHost(path: string) {\n const portregex = /:\\d+/;\n return path.replace(portregex, '')\n}\n\nexport function extractAuthSchemeAnduser(headers: any): {user: string | undefined, authScheme: string | undefined} {\n let auth_user: {user: string | undefined, authScheme: string | undefined} = {\n user: undefined,\n authScheme: undefined\n };\n try {\n auth_user.authScheme = headers.has('authorization') && headers.get('authorization').match(/^(\\w+) /)?.at(1)\n switch (auth_user.authScheme){\n case \"Basic\":\n auth_user.user = atob(headers.get('authorization').split(\" \")[1]).toString().split(':')[0];\n break;\n case \"Bearer\": {\n const parts = headers.get('authorization').split(\" \")[1].split('.');\n if (parts.length == 3) {\n auth_user.user = JSON.parse(atob(parts[1]).toString()).sub;\n }\n }\n }\n }catch(err){\n createReport(JSON.stringify(err));\n }\n return auth_user;\n}\n\nexport function extractContentType(headers: any): string | undefined {\n try {\n if(headers?.has('Content-Type')){\n return headers.get('Content-Type');\n }\n }catch(err){\n createReport(JSON.stringify(err));\n }\n return undefined;\n}\n\n\nfunction sizeOf(body: any): number {\n return body ? JSON.stringify(body).length : 0;\n}\n","import { Injectable } from '@angular/core';\nimport { HttpInterceptor, HttpEvent, HttpHandler, HttpRequest, HttpResponse } from '@angular/common/http';\nimport {finalize, Observable} from 'rxjs';\nimport { tap } from 'rxjs/operators'\nimport {RestRequestMonitor} from \"./rest-request-monitor\";\nimport {DISPATCH} from \"./util\";\nimport {ContextManager} from \"./context-manager\";\n\n@Injectable({ providedIn: 'root' })\nexport class HttpInterceptorService implements HttpInterceptor {\n\n constructor() {}\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n let restRequestMonitor: RestRequestMonitor = new RestRequestMonitor(req);\n let e:any;\n window.dispatchEvent(new CustomEvent( DISPATCH, { detail : { traces : restRequestMonitor.restRequest } }));\n const host = new URL(req.url, window.location.origin).host;\n\n if(!ContextManager.instance.techConfig.hostExcludes?.some((e:any) => e== host)) {\n req = req.clone({headers :req.headers.set('x-tracert',restRequestMonitor.restRequest.id)});\n }\n return next.handle(req).pipe(tap({\n next: (event: any) => {\n if (event instanceof HttpResponse) {\n e = event;\n }\n },\n error: (error: any) => {\n e = error;\n }\n ,unsubscribe: () => {\n e = { status: 0,\n name: \"Unsubscribed\",\n message: \"The request was cancelled before completion.\"\n };\n }\n }),finalize(()=> {\n e instanceof HttpResponse ? restRequestMonitor.postProcess(e, null): restRequestMonitor.postProcess(null, e ?? {\n status: 0,\n name: \"IOException\",\n message: \"The remote server is unavailable.\",\n })\n }))\n\n }\n}\n","import {ErrorHandler, Injectable} from \"@angular/core\";\nimport {SessionManager} from \"./session-manager.service\";\nimport {createReport, DISPATCH} from \"./util\";\n@Injectable({ providedIn: 'root' })\nexport class GlobalErrorHandlerService implements ErrorHandler {\n\n handleError(error:any ) {\n try {\n SessionManager.instance.addException({\n type: error?.name,\n message: error?.message\n })\n\n }catch (e) {\n window.dispatchEvent(new CustomEvent( DISPATCH,{ detail : { traces : createReport(\"Erreur dans GlobalErrorHandlerService: \" + JSON.stringify(e)) } }));\n }\n throw error;\n }\n}\n"," import {interval, startWith, tap, catchError} from \"rxjs\";\nimport {EventTrace} from \"./trace.model\";\nimport {createReport, DISPATCH, PRE_DISPATCH} from \"./util\";\nimport {ContextManager} from \"./context-manager\";\n\n\nexport function eventTraceScheduledDispatcher() {\n return EventTraceScheduledDispatcherService._instance = new EventTraceScheduledDispatcherService();\n}\n\nexport class EventTraceScheduledDispatcherService {\n traceQueue: Set<EventTrace> = new Set();\n sessionSendAttempts: number = 0\n sendSessionfinished: boolean = true;\n instanceSaved: boolean = false;\n static _instance: EventTraceScheduledDispatcherService;\n\n constructor() {\n interval(ContextManager.instance.techConfig.interval)\n .pipe(startWith(0))\n .pipe(tap(() => {\n if (this.sendSessionfinished) {\n this.sendSessionfinished = false;\n window.dispatchEvent(new CustomEvent(PRE_DISPATCH));\n this.Dispatch()\n .catch(err=> {})\n .finally(() => { this.sendSessionfinished = true })\n }\n }))\n .subscribe();\n window.addEventListener( DISPATCH, (e: Event) => {\n (e as CustomEvent).detail.traces && this.addtoQueue((e as CustomEvent).detail.traces);\n if((e as CustomEvent).detail.force){\n this.sendSessions(true)\n this.onDestroy();\n }\n });\n }\n\n Dispatch(): Promise<any> {\n if(this.instanceSaved){\n return this.sendSessions();\n }\n return this.postInstanceEnv().then((ok: boolean) => {\n if (ok) {\n return this.sendSessions();\n }\n this.sessionSendAttempts % 5 == 0 && console.warn(`Error while attempting to send Environement instance, attempts ${this.sessionSendAttempts}`);\n return Promise.reject(new Error('No instance id'));\n });\n }\n\n sendSessions(instanceComplete?:boolean) : Promise<number>{\n if (this.traceQueue.size > 0) {\n let uri = ContextManager.instance.techConfig.sessionApi + \"?attempts=\" + ++this.sessionSendAttempts;\n if(instanceComplete){\n uri += \"&end=\" + new Date().toISOString();\n }\n let sessions: Set<EventTrace> = this.traceQueue;\n this.traceQueue = new Set();\n return fetch(uri, this.getRequestInit(sessions))\n .then(res => {\n if (res.ok) {\n this.sessionSendAttempts = 0;\n return sessions.size;\n }\n return this.handleEventTraceSavingError(sessions)\n })\n .catch(()=> this.handleEventTraceSavingError(sessions))\n }\n return Promise.resolve(0);\n }\n\n handleEventTraceSavingError(sessions: Set<EventTrace>){\n this.sessionSendAttempts % 5 == 0 && console.warn(`Error while attempting to send sessions, attempts: ${this.sessionSendAttempts}`)\n this.revertQueueSize(sessions);\n return -1;\n }\n\n getRequestInit(sessionList: Set<EventTrace>): RequestInit {\n return {\n method: 'PUT',\n headers: { 'Content-Type': 'application/json' },\n mode: 'cors',\n keepalive: true,\n body: JSON.stringify(Array.from(sessionList))\n }\n }\n\n postInstanceEnv(): Promise<boolean> {\n this.sessionSendAttempts++;\n return fetch(ContextManager.instance.techConfig.instanceApi, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n mode: 'cors',\n keepalive: true,\n body: JSON.stringify(ContextManager.instance.instanceEnv)\n })\n .then(res => res.ok ? res.text().then(id => {\n this.sessionSendAttempts = 0;\n return this.instanceSaved = true;\n }) : false)\n .catch(err => false);\n }\n\n revertQueueSize(sessions: Set<EventTrace> ){\n sessions.forEach(session => this.traceQueue.add(session));\n if (this.traceQueue.size > ContextManager.instance.techConfig.queueCapacity) {\n const items = Array.from(this.traceQueue).slice(0, ContextManager.instance.techConfig.queueCapacity);\n this.traceQueue = new Set(items);\n }\n }\n\n async addtoQueue(event: EventTrace | null) {\n try{\n if(event){\n this.traceQueue.add(event);\n }\n }catch(e){\n this.addtoQueue(createReport(String(e)))\n }\n }\n\n onDestroy() {\n this.traceQueue.clear();\n this.sendSessionfinished=true;\n this.instanceSaved =false;\n this.sessionSendAttempts = 0;\n }\n\n}\n","import {NavigationCancel, NavigationEnd, NavigationStart} from \"@angular/router\";\nimport {SessionManager} from \"./session-manager.service\";\nimport {ContextManager} from \"./context-manager\";\nimport {NgCollectorModule} from \"./ng-collector.module\";\n\nexport function routeHandler(event: any){\n if (event instanceof NavigationStart) {\n SessionManager.instance.navigate(event.url);\n }\n if (event instanceof NavigationEnd || event instanceof NavigationCancel) {\n setTimeout(() => SessionManager.instance.updateSession(), 0);\n }\n}\n\nexport function windowUnloadHandler(event:any) {\n SessionManager.instance.navigate();\n}\n\nexport function bfCacheHandler(event:any) {\n if (event.persisted) { // if the page was restored from bfcache\n ContextManager.init(NgCollectorModule.configuration);\n SessionManager.instance.navigate(document.URL);\n setTimeout(() => SessionManager.instance.updateSession(), 0);\n }\n}\n","import {MachineRessourceUsage} from \"./trace.model\";\nimport {createReport, dateNow, DISPATCH} from \"./util\";\n\n export function machineRessourceUsageHandler(event: Event){\n window.dispatchEvent(new CustomEvent( DISPATCH, { detail : { traces : getMemoryInfo() } }));\n }\n\n function getMemoryInfo():MachineRessourceUsage | null {\n try{\n const memory = (performance as any).memory;\n return {\n '@type': '01',\n instant: dateNow(),\n usedHeap: memory.usedJSHeapSize / (1024 * 1024),\n commitedHeap: memory.totalJSHeapSize / (1024 * 1024),\n };\n }catch(e){\n createReport(JSON.stringify(e));\n }\n return null;\n }\n\n\n\n\n\n","import {Router} from \"@angular/router\";\nimport {bfCacheHandler, routeHandler, windowUnloadHandler} from \"./handlers\";\nimport {BEFOREUNLOAD, PRE_DISPATCH} from \"./util\";\nimport {machineRessourceUsageHandler} from \"./machine-ressource-monitor.service\";\nimport {ContextManager} from \"./context-manager\";\n\nexport function routerEventsListener (router: Router){\n router.events.subscribe(routeHandler);\n}\n\nexport function beforeUnloadListener(){\n window.addEventListener(BEFOREUNLOAD, windowUnloadHandler);\n}\n\nexport function beforeDispatchListener(){\n if (ContextManager.instance.techConfig.resources && 'memory' in performance) {\n window.addEventListener(PRE_DISPATCH, machineRessourceUsageHandler);\n }\n}\n\nexport function bfCacheListener(){\n window.addEventListener('pageshow', bfCacheHandler);\n}\n","type InstantType = \"SERVER\" | \"CLIENT\";\ntype MainSessionType = \"VIEW\" | \"BATCH\" | \"STARTUP\";\nexport type Level = \"INFO\" | \"WARN\" | \"ERROR\";\n\nexport interface EventTrace {\n\n}\n\nexport interface SessionMaskUpdate {\n '@type': string;\n id: string;\n main: boolean;\n mask: number;\n}\n\nexport interface MainSession extends EventTrace{\n '@type': string;\n id: string;\n type: MainSessionType;\n name?: string;\n location: string;\n user?: string;\n start: number;\n requestMask: number;\n}\n\nexport interface MainSessionCallBack extends EventTrace {\n '@type': string;\n id: string;\n end?: number;\n requestMask: number;\n exception?: ExceptionInfo; // make a list ?\n}\n\nexport interface InstanceEnvironment {\n id:string;\n name?: string;\n address?: string;\n version?: string;\n env?: string;\n os?: string;\n re?: string;\n user?: string;\n type?: InstantType;\n instant?:number;\n collector?:string;\n resource: MachineResource;\n additionalProperties?: {[key:string]: any};\n configuration?: {[key:string]: any};\n}\n\nexport interface RestRequest extends EventTrace {\n '@type': string;\n id: string;\n method: string;\n protocol: string;\n host: string;\n port: number;\n path: string;\n query: string;\n contentType?: string;\n authScheme?: string;\n dataSize:number;\n user?:string;\n start: number;\n sessionId: string | undefined;\n}\n\nexport interface RestRequestCallBack extends EventTrace {\n '@type': string;\n id: string;\n status?: number;\n end?: number;\n dataSize?:number;\n linked?: boolean;\n contentType?: string;\n bodyContent? : string;\n}\n\nexport interface HttpRequestStage extends EventTrace {\n '@type': string;\n name: string;\n start: number;\n end?: number;\n exception?: ExceptionInfo | null;\n requestId: string;\n}\n\nexport interface LocalRequest extends EventTrace {\n '@type': string;\n id: string;\n name: string;\n location: string;\n user?: string;\n start: number;\n sessionId: string;\n}\n\nexport interface LocalRequestCallBack extends EventTrace {\n '@type': string;\n end: number;\n}\n\nexport interface ExceptionInfo {\n type: string | null;\n message: string | null;\n}\n\nexport interface UserAction extends EventTrace{\n '@type': string;\n type: string;\n start: number; //todo rename instant\n name: string| null;\n nodeName: string;\n sessionId: string;\n}\n\nexport interface LogEntry extends EventTrace{\n '@type': string;\n instant: number;\n level: Level;\n message: string;\n sessionId?: string;\n}\n\nexport interface MachineResource extends EventTrace {\n maxHeap?: number;\n}\n\nexport interface MachineRessourceUsage extends EventTrace{\n '@type': string;\n instant: number;\n commitedHeap: number;\n usedHeap: number;\n}\n\nexport const genericMap : ((t:HTMLElement)=>string|null)[] = [\n t => t.getAttribute('placeholder'),\n t => t.getAttribute('title'),\n t => t.innerText,\n t => t.getAttribute('name'),\n t => t.getAttribute('id'),\n ]\n\nexport const MAP: {[key:string]: ((t:HTMLElement)=>string|null)[]} = {\n 'img' : [\n t=> t.getAttribute('alt'),\n t=> t.getAttribute('src'),\n ],\n 'input': [\n t=> t.getAttribute('name'),\n ],\n 'a' : [\n t=> t.getAttribute('href'),\n ],\n 'label':[\n t=> t.getAttribute('for'),\n ],\n}\n\nexport function getFirst(c:((t:HTMLElement)=>string|null)[], t: HTMLElement) {\n for (const o of c) {\n let r = o(t)?.trim();\n if (r) {\n return r;\n }\n }\n return null;\n}\n\nexport function extractName(t: HTMLElement){\n try\n {\n let tagName = t.tagName\n if(tagName){\n let name;\n let c = MAP[tagName.toLowerCase()];\n if(c){\n name = getFirst(c,t);\n }\n return name ?? getFirst(genericMap,t)!;\n }\n\n }catch(err){\n console.warn(err)\n }\n return null\n}\n","import {extractName} from \"./trace.model\";\nimport {SessionManager} from \"./session-manager.service\";\nimport {createReport, dateNow, DISPATCH} from \"./util\";\nimport {ContextManager} from \"./context-manager\";\n\n let eventHandlers : {[key:string]: (target: HTMLElement)=>boolean} = {\n 'click' : (target:HTMLElement)=> lookUpChild(target,1),\n }\n export function analyticsEventsListener() {\n if (ContextManager.instance.techConfig.analytics) {\n try {\n const body = window.document.body;\n body.addEventListener('click', globalHandler, true);\n body.addEventListener('change', (event) => globalHandler(event), true);\n body.addEventListener('scrollend', (event) => globalHandler(event), true);\n body.addEventListener('dragend', (event) => globalHandler(event), true);\n window.document.addEventListener('DOMContentLoaded', (event) => globalHandler(event), true);\n }\n catch (e) {\n window.dispatchEvent(new CustomEvent(DISPATCH, {detail: {traces: createReport(\"Error while subscribing to analytics user events: \" + JSON.stringify(e))}}));\n }\n }\n }\n\n\n function globalHandler(event: Event | MouseEvent){\n let target = event.target as HTMLElement;\n let eventType = event.type;\n try {\n if(eventHandlers.hasOwnProperty(eventType) && !eventHandlers[eventType](target)){\n return;\n }\n addActionUser(eventType,target);\n }catch(err){\n console.warn(err);\n }\n }\n\n function lookUpChild(t: HTMLElement, depth: number):boolean {\n if(t.hasChildNodes() && t.children.length <= 5) {\n if(++depth > 5){\n return false;\n }\n return Array.from(t.childNodes).reduce((acc, c) =>\n acc && lookUpChild(c as HTMLElement, depth), true);\n }\n return true;\n }\n\n function addActionUser(eventType: string, target: HTMLElement){\n const ua = {\n '@type': \"300\",\n type: eventType,\n start: dateNow(),\n name : extractName(target),\n nodeName : target.tagName?.toLowerCase(),\n sessionId: SessionManager.instance?.currentSessionID()\n }\n window.dispatchEvent(new CustomEvent( DISPATCH ,{ detail : { traces:ua }}));\n }\n\n\n\n","import {\n HttpRequestStage,\n LocalRequest,\n LogEntry, MachineRessourceUsage,\n MainSession,\n RestRequest,\n UserAction\n} from \"./trace.model\";\nimport {createReport, DISPATCH, WIN} from \"./util\";\nimport {ContextManager} from \"./context-manager\";\nimport {SessionManager} from \"./session-manager.service\";\n\nexport function eventTraceDebugger(){\n EventTraceDebugger._instance = new EventTraceDebugger();\n}\n\nexport class EventTraceDebugger{\n\n static _instance: EventTraceDebugger;\n restRequests: RestRequest[] = [];\n httpRequestStages: HttpRequestStage[] = [];\n localRequests: LocalRequest[] = [];\n userActions: UserAction[] = [];\n logEntries: LogEntry[] = [];\n constructor() {\n try {\n if (ContextManager.instance.techConfig.debugMode || WIN['inspect']) {\n window.addEventListener(DISPATCH, this.handleTraces.bind(this))\n }\n WIN[\"inspect-setup\"] = {\n init:() => {\n WIN['inspect'] = true;\n EventTraceDebugger.init();\n },\n printConfig: () => console.log(ContextManager.instance.techConfig),\n printInstance: () => console.log(ContextManager.instance)\n }\n } catch (e) {\n console.warn(e)\n window.dispatchEvent(new CustomEvent(DISPATCH, {detail: {traces: createReport(\"Error while setting up debug mode: \" + JSON.stringify(e))}}));\n }\n }\n\n handleTraces(e: Event){\n let trace = (e as CustomEvent).detail.traces\n if(trace && !(e as CustomEvent).detail.force){\n switch (trace['@type']){\n case 'main-ses':\n if(trace.end){\n console.log(this.prettySessionFormat(SessionManager.instance.currentSession));\n }\n break;\n case 'http-req':\n this.restRequests.push(trace);\n break;\n case 'http-stg':\n this.httpRequestStages.push(trace);\n break;\n case 'user-act':\n this.userActions.push(trace);\n break;\n case 'locl-req':\n this.localRequests.push(trace);\n break;\n case 'log':\n trace.sessionId ? this.logEntries.push(trace) : console.warn(this.prettyLogEntryFormat(trace));\n break;\n case 'rsrc-usg':\n console.log(this.prettyMachineResourceUsageFormat(trace))\n break;\n }\n }\n }\n\n static init(){\n return EventTraceDebugger._instance = new EventTraceDebugger();\n }\n\n prettySessionFormat(session: MainSession){\n let s= `[${session.name}]`;\n if(session.user){\n s+= `<${session.user}>`\n }\n if(session.location){\n s+= `(${session.location}) `\n }\n //s+= this.prettyDurationFormat(session.start, session.end)+'\\n';\n s+= this.getChildPrint(this.restRequests, this.prettyRestRequestFormat.bind(this));\n s+= this.getChildPrint(this.localRequests, this.prettyLocalRequestFormat.bind(this));\n s+= this.getChildPrint(this.userActions, this.prettyActionUserFormat.bind(this));\n s+= this.getChildPrint(this.logEntries, this.prettyLogEntryFormat.bind(this))\n this.resetList()\n return s;\n }\n\n prettyRestRequestFormat(rest: RestRequest){\n let s = ` - [${rest.method}]`\n if(rest.protocol){\n s+= `${rest.protocol}://`\n }\n if(rest.host){\n s+= rest.host\n }\n if(rest.port > 0){\n s+= `:${rest.port}`\n }\n if(rest.path){\n if(!rest.path.startsWith(\"/\") && !s.endsWith(\"/\")){\n s+= '/'\n }\n s+= rest.path;\n }\n if(rest.query){\n s+= rest.query\n }\n // s+= ` >> ${rest.status} `\n // s+= this.prettyDurationFormat(rest.start,rest.end);\n s+='\\n'\n this.httpRequestStages.filter((s)=>s.requestId == rest.id).forEach((stage:HttpRequestStage) => {\n s+= this.prettyHttpRequestStageFormat(stage) ;\n })\n return s;\n }\n prettyHttpRequestStageFormat(stage: HttpRequestStage){\n let s = ` - [${stage.name}]`\n s+= \" >> \";\n if(stage.exception?.type){\n s+= ` ${stage.exception?.type}:`;\n }\n if(stage.exception?.message){\n s+= ` ${stage.exception.message}`;\n }\n s+= ` ${this.prettyDurationFormat(stage.start, stage.end)}`;\n return s;\n }\n\n prettyLocalRequestFormat(local: LocalRequest){\n let s = ` - [${local.name}]`;\n if(local.location){\n s+= `(${local.location})`\n }\n /*s+= \" >> \";\n if(local.exception?.type){\n s+= ` ${local.exception?.type}:`;\n }\n if(local.exception?.message){\n s+= ` ${local.exception.message}`\n }\n s+= ` ${this.prettyDurationFormat(local.start, local.end)}`;*/\n return s;\n }\n\n prettyLogEntryFormat(log: LogEntry){\n let s = ` - [${log.level}]`;\n if(log.message){\n s+= ` ${log.message}`\n }\n s+= ` >> ${new Date(log.instant*1000).toISOString()}`;\n return s;\n }\n\n prettyMachineResourceUsageFormat(resource: MachineRessourceUsage){\n return ` - [METRIC] heap :${resource.usedHeap.toFixed(2)}/${resource.commitedHeap.toFixed(2)} >> ${new Date(resource.instant*1000).toISOString()}`;\n }\n\n\n\n prettyActionUserFormat(userAction:UserAction){\n let s = ` - `\n if(userAction.type){\n s+= `[${userAction.type}]`;\n }\n\n if(userAction.nodeName){\n s+= `<${userAction.nodeName}>`\n }\n\n if(userAction.name){\n s+= `(${userAction.name}) `\n }\n\n s+= ` >> ${new Date(userAction.start*1000).toISOString()}`\n return s;\n }\n\n getChildPrint(o: any[], print: (r:any) => string){\n let s=\"\";\n if(o.length){\n o = o.filter((r) => {\n if (r.sessionId === SessionManager.instance.currentSessionID()) {\n s += print(r) + '\\n';\n return false;\n }\n return true;\n });\n const remainingRequests = o.map((r) => print(r)).join('\\n');\n if(remainingRequests){\n console.warn(remainingRequests);\n }\n }\n return s;\n }\n\n prettyDurationFormat(start:number,end:number|undefined){\n return start && end ? `(in ${ (end - start).toFixed(2) } s)` : '';\n }\n\n resetList(){\n this.restRequests = [];\n this.httpRequestStages = [];\n this.localRequests = [];\n this.userActions = [];\n }\n\n\n\n\n\n}\n","import {\n NgModule,\n ModuleWithProviders,\n ErrorHandler,\n APP_INITIALIZER\n} from '@angular/core';\nimport { HTTP_INTERCEPTORS, } from '@angular/common/http';\nimport { HttpInterceptorService } from './http-interceptor.service';\nimport { GlobalErrorHandlerService } from \"./global-error-handler.service\";\nimport { ContextManager } from \"./context-manager\";\nimport { CollectorConfig } from \"./configuration\";\nimport {\n eventTraceScheduledDispatcher,\n} from \"./event-trace-scheduled-dispatcher.service\";\n\nimport {beforeDispatchListener, beforeUnloadListener, bfCacheListener, routerEventsListener} from \"./listeners\";\nimport { analyticsEventsListener } from \"./analytics-collect.service\";\nimport { eventTraceDebugger } from \"./event-trace-debugger\";\nimport {Router} from \"@angular/router\";\n\n@NgModule()\nexport class NgCollectorModule {\n private static forRootCalled: boolean = false;\n static configuration: CollectorConfig;\n static forRoot(configuration: CollectorConfig): ModuleWithProviders<NgCollectorModule> {\n console.log(\"forRootCalled\");\n this.configuration = configuration;\n if (configuration?.enabled && !NgCollectorModule.forRootCalled) {\n NgCollectorModule.forRootCalled = true;\n try {\n ContextManager.init(configuration);\n return {\n ngModule: NgCollectorModule,\n providers: [\n //provideAppInitializer(initializeEvents),\n { provide: APP_INITIALIZER, useFactory: initializeEvents,deps:[Router], multi: true },\n { provide: HTTP_INTERCEPTORS, useClass: HttpInterceptorService, multi: true },\n { provide: ErrorHandler, useClass: GlobalErrorHandlerService }\n ]\n };\n } catch (e:any) {\n console.warn(`invalid Configuration, Ng-collector is disabled because of this ${e.message}`);\n }\n }\n return {\n ngModule: NgCollectorModule\n }\n }\n}\n\nexport function initializeEvents(router:Router) {\n return () => {\n ContextManager.init(NgCollectorModule.configuration);\n eventTraceScheduledDispatcher()\n eventTraceDebugger();\n analyticsEventsListener();\n //storageEventListener();\n beforeDispatchListener();\n beforeUnloadListener();\n routerEventsListener(router);\n bfCacheListener();\n }\n}\n\n\n","\nimport {DISPATCH, RequestMask, WIN} from \"./util\";\nimport {MainSessionCallBack} from \"./trace.model\";\n export function TraceableStage(){\n return function (\n target: any,\n propertyKey: string,\n descriptor: PropertyDescriptor\n ) {\n const originalMethod = descriptor.value;\n descriptor.value = function (...args: any[]){\n let exception;\n let start,end;\n\n start = Date.now();\n try{\n return originalMethod.apply(this,args);\n }catch(e:any){\n let type=null,message=null;\n if(e){\n if(typeof e === \"string\"){\n message = e;\n }else if(e instanceof Error){\n type = e.name;\n message = e.message;\n }else{\n message = JSON.stringify(e)\n }\n }\n exception = {\n type : type,\n message : message\n }\n throw e;\n }finally{\n end = Date.now();\n let id = crypto.randomUUID();\n if(WIN[\"inspect-session-manager\"]?.currentSessionID() != null){\n let doUpdateMask = WIN[\"inspect-session-manager\"]?.updateMask(RequestMask.LOCAL);\n doUpdateMask && window.dispatchEvent(new CustomEvent( DISPATCH, { detail : {\n traces : {\n \"@type\":\"03\",\n id : WIN[\"inspect-session-manager\"]?.currentSessionID(),\n main: true,\n mask: WIN[\"inspect-session-manager\"]?.getCurrentSessionCallBack((s:MainSessionCallBack) => s.requestMask)\n } }\n }));\n }\n window.dispatchEvent(new CustomEvent(\n DISPATCH,\n { detail :\n { traces : {\n \"@type\":\"110\",\n id: id,\n name: propertyKey,\n location: target.constructor.name,\n user: WIN[\"inspect-session-manager\"]?.currentSession?.user,\n start: start,\n sessionId : WIN[\"inspect-session-manager\"]?.currentSession?.id\n }\n }\n }));\n window.dispatchEvent(new CustomEvent(\n DISPATCH,\n { detail :\n { traces : {\n \"@type\":\"111\",\n id: id,\n exception: exception,\n end : end\n }\n }\n }));\n }\n\n }\n return descriptor;\n }\n }\n","import {createLogEntry, DISPATCH} from './util';\nimport {SessionManager} from \"./session-manager.service\";\n\nexport class LogService {\n static info(message: string) {\n if (message) {\n window.dispatchEvent(new CustomEvent( DISPATCH, { detail : { traces : createLogEntry(\"INFO\", message, SessionManager.instance?.currentSessionID()) } }));\n }\n }\n static warn(message: string) {\n if (message) {\n window.dispatchEvent(new CustomEvent( DISPATCH, { detail : { traces : createLogEntry(\"WARN\", message, SessionManager.instance?.currentSessionID()) } }));\n }\n }\n static error(message: string) {\n if (message) {\n window.dispatchEvent(new CustomEvent( DISPATCH, { detail : { traces : createLogEntry(\"ERROR\", message, SessionManager.instance?.currentSessionID()) } }));\n }\n }\n}\n","/*\n * Public API Surface of inspect-ng-collector\n */\n\n\nexport * from './lib/ng-collector.module';\nexport * from './lib/traceable-stage.decorator';\nexport * from './lib/log.service'\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["SLASH","toURL","tap"],"mappings":"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"}
1
+ {"version":3,"file":"oneteme-inspect-ng-collector.mjs","sources":["../../../../projects/oneteme/inspect-ng-collector/src/lib/util.ts","../../../../projects/oneteme/inspect-ng-collector/src/lib/configuration.ts","../../../../projects/oneteme/inspect-ng-collector/src/lib/context-manager.ts","../../../../projects/oneteme/inspect-ng-collector/src/lib/session-manager.service.ts","../../../../projects/oneteme/inspect-ng-collector/src/lib/rest-request-monitor.ts","../../../../projects/oneteme/inspect-ng-collector/src/lib/http-interceptor.service.ts","../../../../projects/oneteme/inspect-ng-collector/src/lib/global-error-handler.service.ts","../../../../projects/oneteme/inspect-ng-collector/src/lib/event-trace-scheduled-dispatcher.service.ts","../../../../projects/oneteme/inspect-ng-collector/src/lib/handlers.ts","../../../../projects/oneteme/inspect-ng-collector/src/lib/machine-ressource-monitor.service.ts","../../../../projects/oneteme/inspect-ng-collector/src/lib/listeners.ts","../../../../projects/oneteme/inspect-ng-collector/src/lib/trace.model.ts","../../../../projects/oneteme/inspect-ng-collector/src/lib/analytics-collect.service.ts","../../../../projects/oneteme/inspect-ng-collector/src/lib/event-trace-debugger.ts","../../../../projects/oneteme/inspect-ng-collector/src/lib/ng-collector.module.ts","../../../../projects/oneteme/inspect-ng-collector/src/lib/traceable-stage.decorator.ts","../../../../projects/oneteme/inspect-ng-collector/src/lib/log.service.ts","../../../../projects/oneteme/inspect-ng-collector/src/public-api.ts","../../../../projects/oneteme/inspect-ng-collector/src/oneteme-inspect-ng-collector.ts"],"sourcesContent":["import {Level, LogEntry} from \"./trace.model\";\n\nexport const WIN:any = window;\n\nexport function dateNow() {\n return Date.now() / 1_000;\n}\nexport enum RequestMask {\n LOCAL = 1,\n REST = 4\n}\n\nexport const DISPATCH = 'dispatch';\nexport const PRE_DISPATCH = 'pre-dispatch';\nexport const BEFOREUNLOAD ='beforeunload';\n\nexport function createLogEntry(level: Level, message: string, sessionId: string | undefined): LogEntry {\n return {\n \"@type\": \"00\",\n level: level,\n message: message,\n instant: dateNow(),\n sessionId : sessionId\n }\n}\n\nexport function createReport(message: string): LogEntry{\n return {\n \"@type\": \"00\",\n level: \"ERROR\",\n message: message,\n instant: dateNow(),\n }\n}\n\n\n\n","const SLASH = '/';\nexport interface CollectorConfig {\n enabled?: boolean; // default: false\n debugMode?: boolean;\n scheduling?: {\n interval?: number; // default: '60s'\n };\n monitoring?: {\n httpRoute?: {\n excludes?: {\n path?: RegExp[] | (() => RegExp[]); // replace this with string[]\n };\n };\n httpRequest?: {\n excludes?: {\n host?: string[];\n };\n };\n resources?: {\n enabled?: boolean; // default: false\n };\n analytics?: {\n enabled?: boolean; // default: false\n };\n storage?: {\n enabled: boolean // default: false\n }\n name: string | (() => string);\n version?: string | (() => string);\n env?: string | (() => string);\n user?: string | (() => string);\n additionalProperties: ()=> {[key:string]: any};\n };\n tracing?: {\n queueCapacity?: number; // default: 10000\n delayIfPending?: number; // default: 30\n remote?: {\n '@type'?: string;\n mode?: string; // default: null\n host?: string; // default: 'localhost'\n retentionMaxAge?: number; // default: '30'\n };\n };\n}\n\nexport interface TechnicalConf {\n user?: string | (() => string);\n queueCapacity: number;\n delayIfPending: number\n interval: number;\n instanceApi: string;\n sessionApi: string;\n exclude?: RegExp[];\n hostExcludes?: string[];\n debugMode: boolean;\n analytics: boolean;\n resources: boolean;\n storage: boolean;\n enabled: boolean;\n}\n\n\nexport function getNumberOrCall(o?: number | (() => number)): number | undefined {\n return typeof o === \"function\" ? o() : o;\n}\n\nexport function getStringOrCall(o?: string | (() => string)): string | undefined {\n return typeof o === \"function\" ? o() : o;\n}\n\nexport function getRegArrOrCall(o?: RegExp[] | (() => RegExp[])): RegExp[] | undefined {\n return typeof o === \"function\" ? o() : o;\n}\n\nexport function detectBrowser() {\n try {\n const agent = window.navigator.userAgent.toLowerCase()\n switch (true) {\n case agent.indexOf('edg') > -1:\n return 'Edge';\n case agent.indexOf('opr') > -1:\n return 'Opera';\n case agent.indexOf('chrome') > -1:\n return 'Chrome';\n case agent.indexOf('firefox') > -1:\n return 'Firefox';\n case agent.indexOf('safari') > -1:\n return 'Safari';\n case agent.indexOf('msie') > -1:\n return 'Microsoft Internet Explorer';\n }\n }\n catch (e) {\n console.error(e);\n }\n return undefined;\n}\n\nexport function detectOs() {\n try {\n let versionMatch, version;\n const agent = window.navigator.userAgent.toLowerCase()\n switch (true) {\n case (/windows/.test(agent)):\n versionMatch = /windows nt (\\d+\\.\\d+)/.exec(agent);\n version = versionMatch ? versionMatch[1] : 'Unknown';\n return `Windows ${version}`;\n case (/linux/.test(agent)):\n return 'Linux';\n\n case (/macintosh/.test(agent)):\n versionMatch = /mac os x (\\d+[._]\\d+[._]\\d+)/.exec(agent);\n version = versionMatch ? versionMatch[1] : 'Unknown';\n return `MacOs ${version}`\n }\n }\n catch (e) {\n console.error(e);\n }\n return undefined;\n}\n\n\nfunction toURL(host:string, path:string ){\n return host.endsWith(SLASH) || path.startsWith(SLASH) ? host + path : [host,path].join(SLASH);\n}\n\nexport function matchRegex(v: string | undefined, name: string, pattern: RegExp, defaultValue?: string) {\n if(v && pattern.exec(v)){\n return v;\n }\n if(!defaultValue){\n if(v != undefined){\n throw new Error(`bad value ${name}=${v}, pattern=${pattern}`);\n }else {\n throw new Error(`${name} property is required`);\n }\n }\n return defaultValue;\n}\n\nexport function requirePostitiveValue(v: number | undefined, name: string, defaultValue:number){\n if(v && v > 0) {\n return v;\n }\n if(v == undefined){\n return defaultValue;\n }\n throw new Error(`bad value ${name}=${v} <= 0`);\n}\n\nexport function require(v: string | undefined, name: string){\n if(v!= undefined){\n return v;\n }\n throw new Error(`${name} property is required`);\n}\n\nexport function adaptedConfig(conf: CollectorConfig) {\n return {\n ...conf,\n scheduling: {\n ...conf.scheduling,\n interval: conf.scheduling?.interval && conf.scheduling.interval / 1000\n },\n monitoring: {\n ...conf.monitoring,\n additionalProperties :String(conf.monitoring?.additionalProperties),\n name: String(conf.monitoring?.name),\n version: String(conf.monitoring?.version),\n env: String(conf.monitoring?.env),\n user: String(conf.monitoring?.user),\n httpRoute: {\n ...conf.monitoring?.httpRoute,\n excludes: {\n path: (conf?.monitoring?.httpRoute?.excludes?.path as RegExp[]).map(r => r.source)\n }\n }\n },\n tracing: {\n ...conf.tracing,\n remote: {\n ...conf.tracing?.remote,\n '@type':\"02\",\n retentionMaxAge : (conf.tracing?.remote?.retentionMaxAge ?? 10) * 60 * 60 * 24\n }\n }\n }\n}\n\n\n","import {dateNow} from \"./util\";\nimport {\n adaptedConfig,\n CollectorConfig,\n detectBrowser,\n detectOs, getNumberOrCall, getRegArrOrCall,\n getStringOrCall, matchRegex,\n require, requirePostitiveValue, TechnicalConf\n} from \"./configuration\";\nimport {InstanceEnvironment} from \"./trace.model\";\nexport const SLASH = '/';\nexport const HOST_PATERN = /https?:\\/\\/[\\w\\-.]+(:\\d{2,5})?\\/?/;\nexport class ContextManager {\n\n private static _instance: ContextManager;\n\n constructor( private readonly _instanceEnv: any,\n private readonly _techConfig: any,\n ) {\n }\n\n get techConfig(): any {\n return this._techConfig;\n }\n get instanceEnv(): any {\n return this._instanceEnv;\n }\n\n static get instance(){\n if(!ContextManager._instance){\n console.warn(\"[Inspect-ng-collector] Error while initializing ContextManager\");\n }\n return ContextManager._instance;\n }\n\n static init(conf:CollectorConfig){\n let id = crypto.randomUUID();\n return ContextManager._instance = new ContextManager(ContextManager.createInstance(conf,id),ContextManager.validateAndGetConfig(conf,id));\n }\n\n static validateAndGetConfig(conf:CollectorConfig, instanceId: string):TechnicalConf{\n let host = matchRegex(getStringOrCall(conf?.tracing?.remote?.host), \"host\" , HOST_PATERN)\n let sessionApi = \"v4/trace/instance/:id/session\"\n let instanceApi = \"v4/trace/instance\"\n return {\n user : conf?.monitoring?.user,\n queueCapacity: requirePostitiveValue(getNumberOrCall(conf?.tracing?.queueCapacity),\"queueCapacity\", 1000) ,\n interval: requirePostitiveValue(getNumberOrCall(conf?.scheduling?.interval),\"interval\", 60000),\n delayIfPending: requirePostitiveValue(getNumberOrCall(conf?.tracing?.delayIfPending),\"delayIfPending\", 30),\n instanceApi: sessionApiURL(host, instanceApi),\n sessionApi: instanceApiURL(host, sessionApi).replace(':id', instanceId),\n exclude: getRegArrOrCall(conf?.monitoring?.httpRoute?.excludes?.path) || [],\n hostExcludes: conf?.monitoring?.httpRequest?.excludes?.host || [],\n debugMode: conf.debugMode ?? false,\n analytics: conf?.monitoring?.analytics?.enabled ?? false,\n resources: conf?.monitoring?.resources?.enabled ?? false,\n storage: conf?.monitoring?.storage?.enabled ?? false,\n enabled: conf.enabled ?? false\n }\n }\n\n\n static createInstance(conf:CollectorConfig,instanceId: string): InstanceEnvironment{\n return {\n id: instanceId,\n name: require(getStringOrCall(conf?.monitoring?.name), 'name'),\n version: getStringOrCall(conf?.monitoring?.version),\n address: getSessionAddress(), //server side\n env: require(getStringOrCall(conf?.monitoring?.env),'env'),\n os: detectOs(),\n re: detectBrowser(),\n user: undefined, // cannot get user\n type: \"CLIENT\",\n instant: dateNow(),\n collector: \"inspect-ng-collector-0.0.1\",\n resource:{ maxHeap: (('memory' in performance) && (performance as any).memory.jsHeapSizeLimit / (1024 * 1024)) || undefined},\n additionalProperties: conf?.monitoring?.additionalProperties(),\n configuration: adaptedConfig(conf)\n }\n }\n}\nfunction getSessionAddress(){\n let inspectId = localStorage.getItem(\"inspect-id\");\n if(!inspectId){\n inspectId = crypto.randomUUID();\n localStorage.setItem(\"inspect-id\", inspectId);\n }\n return inspectId;\n}\nfunction instanceApiURL(host:string, path:string){\n return toURL(host,path);\n}\n\nfunction sessionApiURL(host:string, path:string){\n return toURL(host,path);\n}\nfunction toURL(host:string, path:string ){\n return host.endsWith(SLASH) || path.startsWith(SLASH) ? host + path : [host,path].join(SLASH);\n}\n","\nimport {createReport, dateNow, DISPATCH, WIN} from './util';\nimport {ContextManager} from \"./context-manager\";\nimport {MainSession, MainSessionCallBack} from \"./trace.model\";\nimport {getStringOrCall} from \"./configuration\";\n\nexport class SessionManager {\n\n currentSession!: any\n currentSessionCallBack!: MainSessionCallBack;\n private static _instance: SessionManager;\n initialized: boolean = false;\n\n static get instance(): SessionManager{\n if(!SessionManager._instance) {\n SessionManager._instance = new SessionManager();\n WIN[\"inspect-session-manager\"] = SessionManager._instance;\n }\n return SessionManager._instance;\n }\n\n navigate(url?: string) {\n this.getCurrentSession(s => {\n if(s){\n this.getCurrentSessionCallBack(cb => cb.end =dateNow())\n window.dispatchEvent(new CustomEvent( DISPATCH, { detail : { force: !url, traces : this.currentSessionCallBack } }));\n }\n this.currentSession = null\n })\n if (url) {\n let id = crypto.randomUUID()\n this.currentSession = {\n '@type': \"10\",\n id: id,\n user: getStringOrCall(ContextManager.instance.techConfig.user),\n start: dateNow(),\n type: \"VIEW\",\n location: url,\n loading: true,\n requestMask: 0,\n }\n this.initialized = true;\n this.currentSessionCallBack = {\n '@type': \"11\",\n id: id,\n requestMask: 0,\n }\n }\n }\n\n updateSession(){\n this.getCurrentSession(s => {\n s.name = document.title;\n s.location = document.URL;\n if(!ContextManager.instance.techConfig.exclude?.some((e:any) => e.test(s.location))){\n window.dispatchEvent(new CustomEvent( DISPATCH, { detail : { traces : s } }));\n }\n });\n }\n\n getCurrentSession( fn:(s:MainSession)=> any ) {\n if(this.currentSession){\n return fn(this.currentSession);\n }\n this.initialized && window.dispatchEvent(new CustomEvent( DISPATCH, { detail : { traces : createReport(\"no active session found \") } }));\n return undefined\n }\n\n getCurrentSessionCallBack( fn:(s:MainSessionCallBack)=> any ) {\n if(this.currentSessionCallBack){\n return fn(this.currentSessionCallBack);\n }\n window.dispatchEvent(new CustomEvent( DISPATCH, { detail : { traces : createReport(\"no active session found \") } }));\n return undefined;\n }\n\n currentSessionID(): string | undefined { // (s) => {}\n return this.getCurrentSession(s=> s.id );\n }\n\n\n\n updateMask(requestMask: number) {\n return this.getCurrentSessionCallBack(s => {\n let before = s.requestMask;\n s.requestMask |= requestMask\n return s.requestMask !== before;\n })\n }\n\n addException(exception: any) {\n this.getCurrentSessionCallBack(s => s.exception = exception)\n }\n}\n\n\n\n","import {ExceptionInfo, RestRequest, RestRequestCallBack} from \"./trace.model\";\nimport {createReport, dateNow, DISPATCH, RequestMask} from \"./util\";\nimport {HttpErrorResponse, HttpRequest, HttpResponse} from \"@angular/common/http\";\nimport {SessionManager} from \"./session-manager.service\";\n\nexport class RestRequestMonitor{\n\n readonly restRequest: RestRequest;\n readonly restRequestCallBack: RestRequestCallBack;\n constructor(restRequest: HttpRequest<any>){\n const start = dateNow();\n const url = toHref(restRequest.urlWithParams);\n const auth_user = extractAuthSchemeAnduser(restRequest.headers);\n this.restRequest = {\n \"@type\":\"120\",\n id: crypto.randomUUID(),\n method: restRequest.method,\n protocol: url.protocol.slice(0, -1),\n host: exctractHost(url.host),\n port: +url.port || -1,\n path: url.pathname,\n query: url.search.slice(1, url.search.length),\n contentType: restRequest.responseType,\n authScheme: auth_user.authScheme,\n user: auth_user.user,\n dataSize: sizeOf(restRequest.body),\n start: start,\n sessionId: SessionManager.instance.currentSessionID()\n };\n this.restRequestCallBack = {\n \"@type\":\"121\",\n id : this.restRequest.id,\n dataSize: -1,\n linked: false\n }\n if(SessionManager.instance.currentSessionID() != null ){\n let doUpdateMask = SessionManager.instance.updateMask(RequestMask.REST);\n doUpdateMask && window.dispatchEvent(new CustomEvent( DISPATCH, { detail : {\n traces : {\n \"@type\":\"03\",\n id : SessionManager.instance.currentSessionID(),\n main: true,\n mask: SessionManager.instance.getCurrentSessionCallBack(s => s.requestMask)\n } }\n }));\n }\n }\n\n postProcess(event: HttpResponse<any> | null, error: any) {\n let status: number=0, exception: ExceptionInfo | null = null;\n if(event){\n status = +event.status;\n this.restRequestCallBack.dataSize = sizeOf(event.body);\n this.restRequestCallBack.linked = this.assertSessionID(this.restRequest.id, event.headers);\n }\n if(error){\n this.restRequestCallBack.linked = error?.headers && this.assertSessionID(this.restRequest.id, error.headers);\n status = +error.status;\n exception = {\n type : error.name,\n message: error.error && error.status ? JSON.stringify(error.error) : error.message\n }\n this.restRequestCallBack.bodyContent = error instanceof HttpErrorResponse? JSON.stringify(error.error): undefined;\n this.restRequestCallBack.dataSize = sizeOf(error.error)\n }\n\n this.restRequestCallBack.contentType = extractContentType((<any>event)?.headers)\n this.restRequestCallBack.end= dateNow();\n this.restRequestCallBack.status = +status;\n\n let stage = {\n \"@type\": \"220\",\n name: \"PROCESS\",\n start: this.restRequest.start, // use request\n end: dateNow(),\n order: 0,\n exception: exception,\n requestId : this.restRequestCallBack.id\n }\n\n window.dispatchEvent(new CustomEvent( DISPATCH, { detail : { traces : this.restRequestCallBack } }));\n window.dispatchEvent(new CustomEvent( DISPATCH, { detail : { traces : stage } }));\n }\n\n assertSessionID(id:string, headers:any) {\n if(headers?.has('x-tracert')){\n if(id == headers.get('x-tracert')){\n return true;\n }\n }\n return false;\n }\n}\n\nfunction toHref(url: string): HTMLAnchorElement {\n const href = document.createElement('a');\n href.setAttribute('href', url);\n return href;\n}\n\nfunction exctractHost(path: string) {\n const portregex = /:\\d+/;\n return path.replace(portregex, '')\n}\n\nexport function extractAuthSchemeAnduser(headers: any): {user: string | undefined, authScheme: string | undefined} {\n let auth_user: {user: string | undefined, authScheme: string | undefined} = {\n user: undefined,\n authScheme: undefined\n };\n try {\n auth_user.authScheme = headers.has('authorization') && headers.get('authorization').match(/^(\\w+) /)?.at(1)\n switch (auth_user.authScheme){\n case \"Basic\":\n auth_user.user = atob(headers.get('authorization').split(\" \")[1]).toString().split(':')[0];\n break;\n case \"Bearer\": {\n const parts = headers.get('authorization').split(\" \")[1].split('.');\n if (parts.length == 3) {\n auth_user.user = JSON.parse(atob(parts[1]).toString()).sub;\n }\n }\n }\n }catch(err){\n createReport(JSON.stringify(err));\n }\n return auth_user;\n}\n\nexport function extractContentType(headers: any): string | undefined {\n try {\n if(headers?.has('Content-Type')){\n return headers.get('Content-Type');\n }\n }catch(err){\n createReport(JSON.stringify(err));\n }\n return undefined;\n}\n\n\nfunction sizeOf(body: any): number {\n return body ? JSON.stringify(body).length : 0;\n}\n","import { Injectable } from '@angular/core';\nimport { HttpInterceptor, HttpEvent, HttpHandler, HttpRequest, HttpResponse } from '@angular/common/http';\nimport {finalize, Observable} from 'rxjs';\nimport { tap } from 'rxjs/operators'\nimport {RestRequestMonitor} from \"./rest-request-monitor\";\nimport {DISPATCH} from \"./util\";\nimport {ContextManager} from \"./context-manager\";\n\n@Injectable({ providedIn: 'root' })\nexport class HttpInterceptorService implements HttpInterceptor {\n\n constructor() {}\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n let restRequestMonitor: RestRequestMonitor = new RestRequestMonitor(req);\n let e:any;\n window.dispatchEvent(new CustomEvent( DISPATCH, { detail : { traces : restRequestMonitor.restRequest } }));\n const host = new URL(req.url, window.location.origin).host;\n\n if(!ContextManager.instance.techConfig.hostExcludes?.some((e:any) => e== host)) {\n req = req.clone({headers :req.headers.set('x-tracert',restRequestMonitor.restRequest.id)});\n }\n return next.handle(req).pipe(tap({\n next: (event: any) => {\n if (event instanceof HttpResponse) {\n e = event;\n }\n },\n error: (error: any) => {\n e = error;\n }\n ,unsubscribe: () => {\n e = { status: 0,\n name: \"Unsubscribed\",\n message: \"The request was cancelled before completion.\"\n };\n }\n }),finalize(()=> {\n e instanceof HttpResponse ? restRequestMonitor.postProcess(e, null): restRequestMonitor.postProcess(null, e ?? {\n status: 0,\n name: \"IOException\",\n message: \"The remote server is unavailable.\",\n })\n }))\n\n }\n}\n","import {ErrorHandler, Injectable} from \"@angular/core\";\nimport {SessionManager} from \"./session-manager.service\";\nimport {createReport, DISPATCH} from \"./util\";\n@Injectable({ providedIn: 'root' })\nexport class GlobalErrorHandlerService implements ErrorHandler {\n\n handleError(error:any ) {\n try {\n SessionManager.instance.addException({\n type: error?.name,\n message: error?.message\n })\n\n }catch (e) {\n window.dispatchEvent(new CustomEvent( DISPATCH,{ detail : { traces : createReport(\"Erreur dans GlobalErrorHandlerService: \" + JSON.stringify(e)) } }));\n }\n throw error;\n }\n}\n"," import {interval, startWith, tap, catchError} from \"rxjs\";\nimport {EventTrace} from \"./trace.model\";\nimport {createReport, DISPATCH, PRE_DISPATCH} from \"./util\";\nimport {ContextManager} from \"./context-manager\";\n\n\nexport function eventTraceScheduledDispatcher() {\n return EventTraceScheduledDispatcherService._instance = new EventTraceScheduledDispatcherService();\n}\n\nexport class EventTraceScheduledDispatcherService {\n traceQueue: Set<EventTrace> = new Set();\n sessionSendAttempts: number = 0\n sendSessionfinished: boolean = true;\n instanceSaved: boolean = false;\n interval: any\n static _instance: EventTraceScheduledDispatcherService;\n constructor() {\n this.interval = interval(ContextManager.instance.techConfig.interval)\n .pipe(startWith(0))\n .pipe(tap(() => {\n if (this.sendSessionfinished) {\n this.sendSessionfinished = false;\n window.dispatchEvent(new CustomEvent(PRE_DISPATCH));\n this.Dispatch()\n .then(arr=> this.revertQueueSize(arr))\n .catch(err=> {})\n .finally(() => { this.sendSessionfinished = true })\n }\n }))\n .subscribe();\n window.addEventListener( DISPATCH, (e: Event) => {\n (e as CustomEvent).detail.traces && this.addtoQueue((e as CustomEvent).detail.traces);\n if((e as CustomEvent).detail.force){\n this.sendSessions(true)\n }\n });\n }\n\n Dispatch(): Promise<any> {\n if(this.instanceSaved){\n return this.sendSessions();\n }\n return this.postInstanceEnv().then((ok: boolean) => {\n if (ok) {\n return this.sendSessions();\n }\n this.sessionSendAttempts % 5 == 0 && console.warn(`Error while attempting to send Environement instance, attempts ${this.sessionSendAttempts}`);\n return Promise.reject(new Error('No instance id'));\n });\n }\n\n sendSessions(instanceComplete?: boolean): Promise<Set<EventTrace>> {\n if (this.traceQueue.size === 0) {\n return Promise.resolve(new Set<EventTrace>());\n }\n\n let uri = ContextManager.instance.techConfig.sessionApi + \"?attempts=\" + ++this.sessionSendAttempts;\n if (instanceComplete) {\n uri += \"&end=\" + new Date().toISOString();\n }\n\n const sessions = this.traceQueue;\n this.traceQueue = new Set();\n\n return fetch(uri, this.getRequestInit(sessions))\n .then(res => {\n if (res.ok) {\n this.sessionSendAttempts = 0;\n return new Set<EventTrace>();\n\n }\n if(res.status >= 400 && res.status < 500 ){\n return this.handleEventTraceSavingError(sessions)\n }\n return res.json()\n .then(body => body?.retry ? this.handleEventTraceSavingError(sessions) : new Set<EventTrace>())\n .catch(()=>new Set<EventTrace>());\n })\n .catch(() => this.handleEventTraceSavingError(sessions));\n }\n\n handleEventTraceSavingError(sessions: Set<EventTrace>){\n this.sessionSendAttempts % 5 == 0 && console.warn(`Error while attempting to send sessions, attempts: ${this.sessionSendAttempts}`)\n return sessions;\n }\n\n getRequestInit(sessionList: Set<EventTrace>): RequestInit {\n return {\n method: 'PUT',\n headers: { 'Content-Type': 'application/json' },\n mode: 'cors',\n keepalive: true,\n body: JSON.stringify(Array.from(sessionList))\n }\n }\n\n postInstanceEnv(): Promise<boolean> {\n this.sessionSendAttempts++;\n return fetch(ContextManager.instance.techConfig.instanceApi, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n mode: 'cors',\n keepalive: true,\n body: JSON.stringify(ContextManager.instance.instanceEnv)\n })\n .then(res => res.ok ? res.text().then(id => {\n this.sessionSendAttempts = 0;\n return this.instanceSaved = true;\n }) : false)\n .catch(err => false);\n }\n\n revertQueueSize(sessions: Set<EventTrace> ){\n sessions.forEach(session => this.traceQueue.add(session));\n if (this.traceQueue.size > ContextManager.instance.techConfig.queueCapacity) {\n const items = Array.from(this.traceQueue).slice(0, ContextManager.instance.techConfig.queueCapacity);\n this.traceQueue = new Set(items);\n }\n }\n\n async addtoQueue(event: EventTrace | null) {\n try{\n if(event){\n this.traceQueue.add(event);\n }\n }catch(e){\n this.addtoQueue(createReport(String(e)))\n }\n }\n\n onDestroy() {\n if(this.interval) {\n this.interval.unsubscribe();\n }\n }\n}\n","import {NavigationCancel, NavigationEnd, NavigationStart} from \"@angular/router\";\nimport {SessionManager} from \"./session-manager.service\";\nimport {initContextManagerAndDispatcher, } from \"./ng-collector.module\";\n\nexport function routeHandler(event: any){\n if (event instanceof NavigationStart) {\n SessionManager.instance.navigate(event.url);\n }\n if (event instanceof NavigationEnd || event instanceof NavigationCancel) {\n setTimeout(() => SessionManager.instance.updateSession(), 0);\n }\n}\n\nexport function windowUnloadHandler(event:any) {\n SessionManager.instance.navigate();\n}\n\nexport function bfCacheHandler(event:any) {\n if (event.persisted) { // if the page was restored from bfcache\n initContextManagerAndDispatcher();\n SessionManager.instance.navigate(document.URL);\n setTimeout(() => SessionManager.instance.updateSession(), 0);\n }\n}\n","import {MachineRessourceUsage} from \"./trace.model\";\nimport {createReport, dateNow, DISPATCH} from \"./util\";\n\n export function machineRessourceUsageHandler(event: Event){\n window.dispatchEvent(new CustomEvent( DISPATCH, { detail : { traces : getMemoryInfo() } }));\n }\n\n function getMemoryInfo():MachineRessourceUsage | null {\n try{\n const memory = (performance as any).memory;\n return {\n '@type': '01',\n instant: dateNow(),\n usedHeap: memory.usedJSHeapSize / (1024 * 1024),\n commitedHeap: memory.totalJSHeapSize / (1024 * 1024),\n };\n }catch(e){\n createReport(JSON.stringify(e));\n }\n return null;\n }\n\n\n\n\n\n","import {Router} from \"@angular/router\";\nimport {bfCacheHandler, routeHandler, windowUnloadHandler} from \"./handlers\";\nimport {BEFOREUNLOAD, PRE_DISPATCH} from \"./util\";\nimport {machineRessourceUsageHandler} from \"./machine-ressource-monitor.service\";\nimport {ContextManager} from \"./context-manager\";\n\nexport function routerEventsListener (router: Router){\n router.events.subscribe(routeHandler);\n}\n\nexport function beforeUnloadListener(){\n window.addEventListener(BEFOREUNLOAD, windowUnloadHandler);\n}\n\nexport function beforeDispatchListener(){\n if (ContextManager.instance.techConfig.resources && 'memory' in performance) {\n window.addEventListener(PRE_DISPATCH, machineRessourceUsageHandler);\n }\n}\n\nexport function bfCacheListener(){\n window.addEventListener('pageshow', bfCacheHandler);\n}\n","type InstantType = \"SERVER\" | \"CLIENT\";\ntype MainSessionType = \"VIEW\" | \"BATCH\" | \"STARTUP\";\nexport type Level = \"INFO\" | \"WARN\" | \"ERROR\";\n\nexport interface EventTrace {\n\n}\n\nexport interface SessionMaskUpdate {\n '@type': string;\n id: string;\n main: boolean;\n mask: number;\n}\n\nexport interface MainSession extends EventTrace{\n '@type': string;\n id: string;\n type: MainSessionType;\n name?: string;\n location: string;\n user?: string;\n start: number;\n requestMask: number;\n}\n\nexport interface MainSessionCallBack extends EventTrace {\n '@type': string;\n id: string;\n end?: number;\n requestMask: number;\n exception?: ExceptionInfo; // make a list ?\n}\n\nexport interface InstanceEnvironment {\n id:string;\n name?: string;\n address?: string;\n version?: string;\n env?: string;\n os?: string;\n re?: string;\n user?: string;\n type?: InstantType;\n instant?:number;\n collector?:string;\n resource: MachineResource;\n additionalProperties?: {[key:string]: any};\n configuration?: {[key:string]: any};\n}\n\nexport interface RestRequest extends EventTrace {\n '@type': string;\n id: string;\n method: string;\n protocol: string;\n host: string;\n port: number;\n path: string;\n query: string;\n contentType?: string;\n authScheme?: string;\n dataSize:number;\n user?:string;\n start: number;\n sessionId: string | undefined;\n}\n\nexport interface RestRequestCallBack extends EventTrace {\n '@type': string;\n id: string;\n status?: number;\n end?: number;\n dataSize?:number;\n linked?: boolean;\n contentType?: string;\n bodyContent? : string;\n}\n\nexport interface HttpRequestStage extends EventTrace {\n '@type': string;\n name: string;\n start: number;\n end?: number;\n exception?: ExceptionInfo | null;\n requestId: string;\n}\n\nexport interface LocalRequest extends EventTrace {\n '@type': string;\n id: string;\n name: string;\n location: string;\n user?: string;\n start: number;\n sessionId: string;\n}\n\nexport interface LocalRequestCallBack extends EventTrace {\n '@type': string;\n end: number;\n}\n\nexport interface ExceptionInfo {\n type: string | null;\n message: string | null;\n}\n\nexport interface UserAction extends EventTrace{\n '@type': string;\n type: string;\n start: number; //todo rename instant\n name: string| null;\n nodeName: string;\n sessionId: string;\n}\n\nexport interface LogEntry extends EventTrace{\n '@type': string;\n instant: number;\n level: Level;\n message: string;\n sessionId?: string;\n}\n\nexport interface MachineResource extends EventTrace {\n maxHeap?: number;\n}\n\nexport interface MachineRessourceUsage extends EventTrace{\n '@type': string;\n instant: number;\n commitedHeap: number;\n usedHeap: number;\n}\n\nexport const genericMap : ((t:HTMLElement)=>string|null)[] = [\n t => t.getAttribute('placeholder'),\n t => t.getAttribute('title'),\n t => t.innerText,\n t => t.getAttribute('name'),\n t => t.getAttribute('id'),\n ]\n\nexport const MAP: {[key:string]: ((t:HTMLElement)=>string|null)[]} = {\n 'img' : [\n t=> t.getAttribute('alt'),\n t=> t.getAttribute('src'),\n ],\n 'input': [\n t=> t.getAttribute('name'),\n ],\n 'a' : [\n t=> t.getAttribute('href'),\n ],\n 'label':[\n t=> t.getAttribute('for'),\n ],\n}\n\nexport function getFirst(c:((t:HTMLElement)=>string|null)[], t: HTMLElement) {\n for (const o of c) {\n let r = o(t)?.trim();\n if (r) {\n return r;\n }\n }\n return null;\n}\n\nexport function extractName(t: HTMLElement){\n try\n {\n let tagName = t.tagName\n if(tagName){\n let name;\n let c = MAP[tagName.toLowerCase()];\n if(c){\n name = getFirst(c,t);\n }\n return name ?? getFirst(genericMap,t)!;\n }\n\n }catch(err){\n console.warn(err)\n }\n return null\n}\n","import {extractName} from \"./trace.model\";\nimport {SessionManager} from \"./session-manager.service\";\nimport {createReport, dateNow, DISPATCH} from \"./util\";\nimport {ContextManager} from \"./context-manager\";\n\n let eventHandlers : {[key:string]: (target: HTMLElement)=>boolean} = {\n 'click' : (target:HTMLElement)=> lookUpChild(target,1),\n }\n export function analyticsEventsListener() {\n if (ContextManager.instance.techConfig.analytics) {\n try {\n const body = window.document.body;\n body.addEventListener('click', globalHandler, true);\n body.addEventListener('change', (event) => globalHandler(event), true);\n body.addEventListener('scrollend', (event) => globalHandler(event), true);\n body.addEventListener('dragend', (event) => globalHandler(event), true);\n window.document.addEventListener('DOMContentLoaded', (event) => globalHandler(event), true);\n }\n catch (e) {\n window.dispatchEvent(new CustomEvent(DISPATCH, {detail: {traces: createReport(\"Error while subscribing to analytics user events: \" + JSON.stringify(e))}}));\n }\n }\n }\n\n\n function globalHandler(event: Event | MouseEvent){\n let target = event.target as HTMLElement;\n let eventType = event.type;\n try {\n if(eventHandlers.hasOwnProperty(eventType) && !eventHandlers[eventType](target)){\n return;\n }\n addActionUser(eventType,target);\n }catch(err){\n console.warn(err);\n }\n }\n\n function lookUpChild(t: HTMLElement, depth: number):boolean {\n if(t.hasChildNodes() && t.children.length <= 5) {\n if(++depth > 5){\n return false;\n }\n return Array.from(t.childNodes).reduce((acc, c) =>\n acc && lookUpChild(c as HTMLElement, depth), true);\n }\n return true;\n }\n\n function addActionUser(eventType: string, target: HTMLElement){\n const ua = {\n '@type': \"300\",\n type: eventType,\n start: dateNow(),\n name : extractName(target),\n nodeName : target.tagName?.toLowerCase(),\n sessionId: SessionManager.instance?.currentSessionID()\n }\n window.dispatchEvent(new CustomEvent( DISPATCH ,{ detail : { traces:ua }}));\n }\n\n\n\n","import {\n HttpRequestStage,\n LocalRequest,\n LogEntry, MachineRessourceUsage,\n MainSession,\n RestRequest,\n UserAction\n} from \"./trace.model\";\nimport {createReport, DISPATCH, WIN} from \"./util\";\nimport {ContextManager} from \"./context-manager\";\nimport {SessionManager} from \"./session-manager.service\";\n\nexport function eventTraceDebugger(){\n EventTraceDebugger._instance = new EventTraceDebugger();\n}\n\nexport class EventTraceDebugger{\n\n static _instance: EventTraceDebugger;\n restRequests: RestRequest[] = [];\n httpRequestStages: HttpRequestStage[] = [];\n localRequests: LocalRequest[] = [];\n userActions: UserAction[] = [];\n logEntries: LogEntry[] = [];\n constructor() {\n try {\n if (ContextManager.instance.techConfig.debugMode || WIN['inspect']) {\n window.addEventListener(DISPATCH, this.handleTraces.bind(this))\n }\n WIN[\"inspect-setup\"] = {\n init:() => {\n WIN['inspect'] = true;\n EventTraceDebugger.init();\n },\n printConfig: () => console.log(ContextManager.instance.techConfig),\n printInstance: () => console.log(ContextManager.instance)\n }\n } catch (e) {\n console.warn(e)\n window.dispatchEvent(new CustomEvent(DISPATCH, {detail: {traces: createReport(\"Error while setting up debug mode: \" + JSON.stringify(e))}}));\n }\n }\n\n handleTraces(e: Event){\n let trace = (e as CustomEvent).detail.traces\n if(trace && !(e as CustomEvent).detail.force){\n switch (trace['@type']){\n case 'main-ses':\n if(trace.end){\n console.log(this.prettySessionFormat(SessionManager.instance.currentSession));\n }\n break;\n case 'http-req':\n this.restRequests.push(trace);\n break;\n case 'http-stg':\n this.httpRequestStages.push(trace);\n break;\n case 'user-act':\n this.userActions.push(trace);\n break;\n case 'locl-req':\n this.localRequests.push(trace);\n break;\n case 'log':\n trace.sessionId ? this.logEntries.push(trace) : console.warn(this.prettyLogEntryFormat(trace));\n break;\n case 'rsrc-usg':\n console.log(this.prettyMachineResourceUsageFormat(trace))\n break;\n }\n }\n }\n\n static init(){\n return EventTraceDebugger._instance = new EventTraceDebugger();\n }\n\n prettySessionFormat(session: MainSession){\n let s= `[${session.name}]`;\n if(session.user){\n s+= `<${session.user}>`\n }\n if(session.location){\n s+= `(${session.location}) `\n }\n //s+= this.prettyDurationFormat(session.start, session.end)+'\\n';\n s+= this.getChildPrint(this.restRequests, this.prettyRestRequestFormat.bind(this));\n s+= this.getChildPrint(this.localRequests, this.prettyLocalRequestFormat.bind(this));\n s+= this.getChildPrint(this.userActions, this.prettyActionUserFormat.bind(this));\n s+= this.getChildPrint(this.logEntries, this.prettyLogEntryFormat.bind(this))\n this.resetList()\n return s;\n }\n\n prettyRestRequestFormat(rest: RestRequest){\n let s = ` - [${rest.method}]`\n if(rest.protocol){\n s+= `${rest.protocol}://`\n }\n if(rest.host){\n s+= rest.host\n }\n if(rest.port > 0){\n s+= `:${rest.port}`\n }\n if(rest.path){\n if(!rest.path.startsWith(\"/\") && !s.endsWith(\"/\")){\n s+= '/'\n }\n s+= rest.path;\n }\n if(rest.query){\n s+= rest.query\n }\n // s+= ` >> ${rest.status} `\n // s+= this.prettyDurationFormat(rest.start,rest.end);\n s+='\\n'\n this.httpRequestStages.filter((s)=>s.requestId == rest.id).forEach((stage:HttpRequestStage) => {\n s+= this.prettyHttpRequestStageFormat(stage) ;\n })\n return s;\n }\n prettyHttpRequestStageFormat(stage: HttpRequestStage){\n let s = ` - [${stage.name}]`\n s+= \" >> \";\n if(stage.exception?.type){\n s+= ` ${stage.exception?.type}:`;\n }\n if(stage.exception?.message){\n s+= ` ${stage.exception.message}`;\n }\n s+= ` ${this.prettyDurationFormat(stage.start, stage.end)}`;\n return s;\n }\n\n prettyLocalRequestFormat(local: LocalRequest){\n let s = ` - [${local.name}]`;\n if(local.location){\n s+= `(${local.location})`\n }\n /*s+= \" >> \";\n if(local.exception?.type){\n s+= ` ${local.exception?.type}:`;\n }\n if(local.exception?.message){\n s+= ` ${local.exception.message}`\n }\n s+= ` ${this.prettyDurationFormat(local.start, local.end)}`;*/\n return s;\n }\n\n prettyLogEntryFormat(log: LogEntry){\n let s = ` - [${log.level}]`;\n if(log.message){\n s+= ` ${log.message}`\n }\n s+= ` >> ${new Date(log.instant*1000).toISOString()}`;\n return s;\n }\n\n prettyMachineResourceUsageFormat(resource: MachineRessourceUsage){\n return ` - [METRIC] heap :${resource.usedHeap.toFixed(2)}/${resource.commitedHeap.toFixed(2)} >> ${new Date(resource.instant*1000).toISOString()}`;\n }\n\n\n\n prettyActionUserFormat(userAction:UserAction){\n let s = ` - `\n if(userAction.type){\n s+= `[${userAction.type}]`;\n }\n\n if(userAction.nodeName){\n s+= `<${userAction.nodeName}>`\n }\n\n if(userAction.name){\n s+= `(${userAction.name}) `\n }\n\n s+= ` >> ${new Date(userAction.start*1000).toISOString()}`\n return s;\n }\n\n getChildPrint(o: any[], print: (r:any) => string){\n let s=\"\";\n if(o.length){\n o = o.filter((r) => {\n if (r.sessionId === SessionManager.instance.currentSessionID()) {\n s += print(r) + '\\n';\n return false;\n }\n return true;\n });\n const remainingRequests = o.map((r) => print(r)).join('\\n');\n if(remainingRequests){\n console.warn(remainingRequests);\n }\n }\n return s;\n }\n\n prettyDurationFormat(start:number,end:number|undefined){\n return start && end ? `(in ${ (end - start).toFixed(2) } s)` : '';\n }\n\n resetList(){\n this.restRequests = [];\n this.httpRequestStages = [];\n this.localRequests = [];\n this.userActions = [];\n }\n\n\n\n\n\n}\n","import {\n NgModule,\n ModuleWithProviders,\n ErrorHandler,\n APP_INITIALIZER\n} from '@angular/core';\nimport { HTTP_INTERCEPTORS, } from '@angular/common/http';\nimport { HttpInterceptorService } from './http-interceptor.service';\nimport { GlobalErrorHandlerService } from \"./global-error-handler.service\";\nimport { ContextManager } from \"./context-manager\";\nimport { CollectorConfig } from \"./configuration\";\nimport {\n eventTraceScheduledDispatcher,\n} from \"./event-trace-scheduled-dispatcher.service\";\n\nimport {beforeDispatchListener, beforeUnloadListener, bfCacheListener, routerEventsListener} from \"./listeners\";\nimport { analyticsEventsListener } from \"./analytics-collect.service\";\nimport { eventTraceDebugger } from \"./event-trace-debugger\";\nimport {Router} from \"@angular/router\";\nimport {DISPATCH} from \"./util\";\n\n@NgModule()\nexport class NgCollectorModule {\n private static forRootCalled: boolean = false;\n static configuration: CollectorConfig;\n static forRoot(configuration: CollectorConfig): ModuleWithProviders<NgCollectorModule> {\n this.configuration = configuration;\n if (configuration?.enabled && !NgCollectorModule.forRootCalled) {\n NgCollectorModule.forRootCalled = true;\n try {\n ContextManager.init(configuration);\n return {\n ngModule: NgCollectorModule,\n providers: [\n //provideAppInitializer(initializeEvents),\n { provide: APP_INITIALIZER, useFactory: initializeEvents,deps:[Router], multi: true },\n { provide: HTTP_INTERCEPTORS, useClass: HttpInterceptorService, multi: true },\n { provide: ErrorHandler, useClass: GlobalErrorHandlerService }\n ]\n };\n } catch (e:any) {\n console.warn(`invalid Configuration, Ng-collector is disabled because of this ${e.message}`);\n }\n }\n return {\n ngModule: NgCollectorModule\n }\n }\n}\n\nexport function initializeEvents(router:Router) {\n return () => {\n initContextManagerAndDispatcher()\n eventTraceDebugger();\n analyticsEventsListener();\n //storageEventListener();\n beforeDispatchListener();\n beforeUnloadListener();\n routerEventsListener(router);\n bfCacheListener();\n }\n\n\n}\n\nexport function initContextManagerAndDispatcher(){\n ContextManager.init(NgCollectorModule.configuration);\n const dispatcher = eventTraceScheduledDispatcher()\n window.addEventListener( DISPATCH, (e: Event) => {\n if((e as CustomEvent).detail.force){\n dispatcher.onDestroy();\n }\n });\n}\n\n\n","\nimport {DISPATCH, RequestMask, WIN} from \"./util\";\nimport {MainSessionCallBack} from \"./trace.model\";\n export function TraceableStage(){\n return function (\n target: any,\n propertyKey: string,\n descriptor: PropertyDescriptor\n ) {\n const originalMethod = descriptor.value;\n descriptor.value = function (...args: any[]){\n let exception;\n let start,end;\n\n start = Date.now();\n try{\n return originalMethod.apply(this,args);\n }catch(e:any){\n let type=null,message=null;\n if(e){\n if(typeof e === \"string\"){\n message = e;\n }else if(e instanceof Error){\n type = e.name;\n message = e.message;\n }else{\n message = JSON.stringify(e)\n }\n }\n exception = {\n type : type,\n message : message\n }\n throw e;\n }finally{\n end = Date.now();\n let id = crypto.randomUUID();\n if(WIN[\"inspect-session-manager\"]?.currentSessionID() != null){\n let doUpdateMask = WIN[\"inspect-session-manager\"]?.updateMask(RequestMask.LOCAL);\n doUpdateMask && window.dispatchEvent(new CustomEvent( DISPATCH, { detail : {\n traces : {\n \"@type\":\"03\",\n id : WIN[\"inspect-session-manager\"]?.currentSessionID(),\n main: true,\n mask: WIN[\"inspect-session-manager\"]?.getCurrentSessionCallBack((s:MainSessionCallBack) => s.requestMask)\n } }\n }));\n }\n window.dispatchEvent(new CustomEvent(\n DISPATCH,\n { detail :\n { traces : {\n \"@type\":\"110\",\n id: id,\n name: propertyKey,\n location: target.constructor.name,\n user: WIN[\"inspect-session-manager\"]?.currentSession?.user,\n start: start,\n sessionId : WIN[\"inspect-session-manager\"]?.currentSession?.id\n }\n }\n }));\n window.dispatchEvent(new CustomEvent(\n DISPATCH,\n { detail :\n { traces : {\n \"@type\":\"111\",\n id: id,\n exception: exception,\n end : end\n }\n }\n }));\n }\n\n }\n return descriptor;\n }\n }\n","import {createLogEntry, DISPATCH} from './util';\nimport {SessionManager} from \"./session-manager.service\";\n\nexport class LogService {\n static info(message: string) {\n if (message) {\n window.dispatchEvent(new CustomEvent( DISPATCH, { detail : { traces : createLogEntry(\"INFO\", message, SessionManager.instance?.currentSessionID()) } }));\n }\n }\n static warn(message: string) {\n if (message) {\n window.dispatchEvent(new CustomEvent( DISPATCH, { detail : { traces : createLogEntry(\"WARN\", message, SessionManager.instance?.currentSessionID()) } }));\n }\n }\n static error(message: string) {\n if (message) {\n window.dispatchEvent(new CustomEvent( DISPATCH, { detail : { traces : createLogEntry(\"ERROR\", message, SessionManager.instance?.currentSessionID()) } }));\n }\n }\n}\n","/*\n * Public API Surface of inspect-ng-collector\n */\n\n\nexport * from './lib/ng-collector.module';\nexport * from './lib/traceable-stage.decorator';\nexport * from './lib/log.service'\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["SLASH","toURL","tap"],"mappings":"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"}
@@ -44,7 +44,7 @@ export interface CollectorConfig {
44
44
  };
45
45
  }
46
46
  export interface TechnicalConf {
47
- user?: string;
47
+ user?: string | (() => string);
48
48
  queueCapacity: number;
49
49
  delayIfPending: number;
50
50
  interval: number;
@@ -5,11 +5,12 @@ export declare class EventTraceScheduledDispatcherService {
5
5
  sessionSendAttempts: number;
6
6
  sendSessionfinished: boolean;
7
7
  instanceSaved: boolean;
8
+ interval: any;
8
9
  static _instance: EventTraceScheduledDispatcherService;
9
10
  constructor();
10
11
  Dispatch(): Promise<any>;
11
- sendSessions(instanceComplete?: boolean): Promise<number>;
12
- handleEventTraceSavingError(sessions: Set<EventTrace>): number;
12
+ sendSessions(instanceComplete?: boolean): Promise<Set<EventTrace>>;
13
+ handleEventTraceSavingError(sessions: Set<EventTrace>): Set<EventTrace>;
13
14
  getRequestInit(sessionList: Set<EventTrace>): RequestInit;
14
15
  postInstanceEnv(): Promise<boolean>;
15
16
  revertQueueSize(sessions: Set<EventTrace>): void;
@@ -11,3 +11,4 @@ export declare class NgCollectorModule {
11
11
  static ɵinj: i0.ɵɵInjectorDeclaration<NgCollectorModule>;
12
12
  }
13
13
  export declare function initializeEvents(router: Router): () => void;
14
+ export declare function initContextManagerAndDispatcher(): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oneteme/inspect-ng-collector",
3
- "version": "1.3.0",
3
+ "version": "1.3.1",
4
4
  "description": "inspect ng collector",
5
5
  "homepage": "https://github.com/oneteme/inspect-ng-collector",
6
6
  "bugs": "https://github.com/oneteme/inspect-ng-collector/issues",