@oneteme/inspect-ng-collector 1.3.0-beta.8 → 1.3.0

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.
@@ -235,6 +235,9 @@ function toURL(host, path) {
235
235
  }
236
236
 
237
237
  class SessionManager {
238
+ constructor() {
239
+ this.initialized = false;
240
+ }
238
241
  static get instance() {
239
242
  if (!SessionManager._instance) {
240
243
  SessionManager._instance = new SessionManager();
@@ -262,6 +265,7 @@ class SessionManager {
262
265
  loading: true,
263
266
  requestMask: 0,
264
267
  };
268
+ this.initialized = true;
265
269
  this.currentSessionCallBack = {
266
270
  '@type': "11",
267
271
  id: id,
@@ -282,7 +286,7 @@ class SessionManager {
282
286
  if (this.currentSession) {
283
287
  return fn(this.currentSession);
284
288
  }
285
- window.dispatchEvent(new CustomEvent(DISPATCH, { detail: { traces: createReport("no active session found ") } }));
289
+ this.initialized && window.dispatchEvent(new CustomEvent(DISPATCH, { detail: { traces: createReport("no active session found ") } }));
286
290
  return undefined;
287
291
  }
288
292
  getCurrentSessionCallBack(fn) {
@@ -296,7 +300,11 @@ class SessionManager {
296
300
  return this.getCurrentSession(s => s.id);
297
301
  }
298
302
  updateMask(requestMask) {
299
- this.getCurrentSessionCallBack(s => s.requestMask |= requestMask);
303
+ return this.getCurrentSessionCallBack(s => {
304
+ let before = s.requestMask;
305
+ s.requestMask |= requestMask;
306
+ return s.requestMask !== before;
307
+ });
300
308
  }
301
309
  addException(exception) {
302
310
  this.getCurrentSessionCallBack(s => s.exception = exception);
@@ -324,13 +332,24 @@ class RestRequestMonitor {
324
332
  start: start,
325
333
  sessionId: SessionManager.instance.currentSessionID()
326
334
  };
327
- SessionManager.instance.updateMask(RequestMask.REST);
328
335
  this.restRequestCallBack = {
329
336
  "@type": "121",
330
337
  id: this.restRequest.id,
331
338
  dataSize: -1,
332
339
  linked: false
333
340
  };
341
+ if (SessionManager.instance.currentSessionID() != null) {
342
+ let doUpdateMask = SessionManager.instance.updateMask(RequestMask.REST);
343
+ doUpdateMask && window.dispatchEvent(new CustomEvent(DISPATCH, { detail: {
344
+ traces: {
345
+ "@type": "03",
346
+ id: SessionManager.instance.currentSessionID(),
347
+ main: true,
348
+ mask: SessionManager.instance.getCurrentSessionCallBack(s => s.requestMask)
349
+ }
350
+ }
351
+ }));
352
+ }
334
353
  }
335
354
  postProcess(event, error) {
336
355
  let status = 0, exception = null;
@@ -369,9 +388,6 @@ class RestRequestMonitor {
369
388
  if (id == headers.get('x-tracert')) {
370
389
  return true;
371
390
  }
372
- window.dispatchEvent(new CustomEvent(DISPATCH, {
373
- detail: { traces: createReport("The received x-tracert header (" + headers.get('x-tracert') + ") does not match the request id (" + id + ")") }
374
- }));
375
391
  }
376
392
  return false;
377
393
  }
@@ -457,10 +473,10 @@ class HttpInterceptorService {
457
473
  });
458
474
  }));
459
475
  }
460
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: HttpInterceptorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
461
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: HttpInterceptorService, providedIn: 'root' }); }
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' }); }
462
478
  }
463
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: HttpInterceptorService, decorators: [{
479
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: HttpInterceptorService, decorators: [{
464
480
  type: Injectable,
465
481
  args: [{ providedIn: 'root' }]
466
482
  }], ctorParameters: () => [] });
@@ -478,10 +494,10 @@ class GlobalErrorHandlerService {
478
494
  }
479
495
  throw error;
480
496
  }
481
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: GlobalErrorHandlerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
482
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: GlobalErrorHandlerService, providedIn: 'root' }); }
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' }); }
483
499
  }
484
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: GlobalErrorHandlerService, decorators: [{
500
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: GlobalErrorHandlerService, decorators: [{
485
501
  type: Injectable,
486
502
  args: [{ providedIn: 'root' }]
487
503
  }] });
@@ -501,9 +517,9 @@ class EventTraceScheduledDispatcherService {
501
517
  if (this.sendSessionfinished) {
502
518
  this.sendSessionfinished = false;
503
519
  window.dispatchEvent(new CustomEvent(PRE_DISPATCH));
504
- setTimeout(() => this.Dispatch()
520
+ this.Dispatch()
505
521
  .catch(err => { })
506
- .finally(() => { this.sendSessionfinished = true; }), 5);
522
+ .finally(() => { this.sendSessionfinished = true; });
507
523
  }
508
524
  }))
509
525
  .subscribe();
@@ -557,6 +573,7 @@ class EventTraceScheduledDispatcherService {
557
573
  method: 'PUT',
558
574
  headers: { 'Content-Type': 'application/json' },
559
575
  mode: 'cors',
576
+ keepalive: true,
560
577
  body: JSON.stringify(Array.from(sessionList))
561
578
  };
562
579
  }
@@ -566,6 +583,7 @@ class EventTraceScheduledDispatcherService {
566
583
  method: 'POST',
567
584
  headers: { 'Content-Type': 'application/json' },
568
585
  mode: 'cors',
586
+ keepalive: true,
569
587
  body: JSON.stringify(ContextManager.instance.instanceEnv)
570
588
  })
571
589
  .then(res => res.ok ? res.text().then(id => {
@@ -750,7 +768,7 @@ function addActionUser(eventType, target) {
750
768
  nodeName: target.tagName?.toLowerCase(),
751
769
  sessionId: SessionManager.instance?.currentSessionID()
752
770
  };
753
- // window.dispatchEvent(new CustomEvent( DISPATCH ,{ detail : { traces:ua }}));
771
+ window.dispatchEvent(new CustomEvent(DISPATCH, { detail: { traces: ua } }));
754
772
  }
755
773
 
756
774
  function eventTraceDebugger() {
@@ -965,11 +983,11 @@ class NgCollectorModule {
965
983
  ngModule: NgCollectorModule
966
984
  };
967
985
  }
968
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: NgCollectorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
969
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.16", ngImport: i0, type: NgCollectorModule }); }
970
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: NgCollectorModule }); }
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 }); }
971
989
  }
972
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: NgCollectorModule, decorators: [{
990
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: NgCollectorModule, decorators: [{
973
991
  type: NgModule
974
992
  }] });
975
993
  function initializeEvents(router) {
@@ -994,7 +1012,6 @@ function TraceableStage() {
994
1012
  let start, end;
995
1013
  start = Date.now();
996
1014
  try {
997
- WIN["inspect-session-manager"]?.updateMask(RequestMask.LOCAL);
998
1015
  return originalMethod.apply(this, args);
999
1016
  }
1000
1017
  catch (e) {
@@ -1020,6 +1037,18 @@ function TraceableStage() {
1020
1037
  finally {
1021
1038
  end = Date.now();
1022
1039
  let id = crypto.randomUUID();
1040
+ if (WIN["inspect-session-manager"]?.currentSessionID() != null) {
1041
+ let doUpdateMask = WIN["inspect-session-manager"]?.updateMask(RequestMask.LOCAL);
1042
+ doUpdateMask && window.dispatchEvent(new CustomEvent(DISPATCH, { detail: {
1043
+ traces: {
1044
+ "@type": "03",
1045
+ id: WIN["inspect-session-manager"]?.currentSessionID(),
1046
+ main: true,
1047
+ mask: WIN["inspect-session-manager"]?.getCurrentSessionCallBack((s) => s.requestMask)
1048
+ }
1049
+ }
1050
+ }));
1051
+ }
1023
1052
  window.dispatchEvent(new CustomEvent(DISPATCH, { detail: { traces: {
1024
1053
  "@type": "110",
1025
1054
  id: id,
@@ -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\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.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 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 updateMask(requestMask: number) {\n this.getCurrentSessionCallBack(s => s.requestMask |= requestMask)\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 SessionManager.instance.updateMask(RequestMask.REST);\n this.restRequestCallBack = {\n \"@type\":\"121\",\n id : this.restRequest.id,\n dataSize: -1,\n linked: false\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 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 window.dispatchEvent(new CustomEvent( DISPATCH,\n {\n detail : { traces : createReport(\"The received x-tracert header (\" + headers.get('x-tracert') + \") does not match the request id (\" + id + \")\") }\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 setTimeout(() =>\n this.Dispatch()\n .catch(err => {})\n .finally(() => { this.sendSessionfinished = true }),\n 5)\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 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 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 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\";\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 WIN[\"inspect-session-manager\"]?.updateMask(RequestMask.LOCAL);\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 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;\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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"}
@@ -3,12 +3,13 @@ export declare class SessionManager {
3
3
  currentSession: any;
4
4
  currentSessionCallBack: MainSessionCallBack;
5
5
  private static _instance;
6
+ initialized: boolean;
6
7
  static get instance(): SessionManager;
7
8
  navigate(url?: string): void;
8
9
  updateSession(): void;
9
10
  getCurrentSession(fn: (s: MainSession) => any): any;
10
11
  getCurrentSessionCallBack(fn: (s: MainSessionCallBack) => any): any;
11
12
  currentSessionID(): string | undefined;
12
- updateMask(requestMask: number): void;
13
+ updateMask(requestMask: number): any;
13
14
  addException(exception: any): void;
14
15
  }
@@ -3,6 +3,12 @@ type MainSessionType = "VIEW" | "BATCH" | "STARTUP";
3
3
  export type Level = "INFO" | "WARN" | "ERROR";
4
4
  export interface EventTrace {
5
5
  }
6
+ export interface SessionMaskUpdate {
7
+ '@type': string;
8
+ id: string;
9
+ main: boolean;
10
+ mask: number;
11
+ }
6
12
  export interface MainSession extends EventTrace {
7
13
  '@type': string;
8
14
  id: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oneteme/inspect-ng-collector",
3
- "version": "1.3.0-beta.8",
3
+ "version": "1.3.0",
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",