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

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