@oneteme/inspect-ng-collector 1.2.2 → 1.2.3-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -358,10 +358,13 @@ class SessionManager {
358
358
  getCurrentSession() {
359
359
  return this.currentSession;
360
360
  }
361
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: SessionManager, deps: [{ token: 'config' }, { token: 'instance' }], target: i0.ɵɵFactoryTarget.Injectable }); }
362
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: SessionManager, providedIn: 'root' }); }
361
+ resetCurrentSession() {
362
+ this.currentSession = null;
363
+ }
364
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: SessionManager, deps: [{ token: 'config' }, { token: 'instance' }], target: i0.ɵɵFactoryTarget.Injectable }); }
365
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: SessionManager, providedIn: 'root' }); }
363
366
  }
364
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: SessionManager, decorators: [{
367
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: SessionManager, decorators: [{
365
368
  type: Injectable,
366
369
  args: [{ providedIn: 'root' }]
367
370
  }], ctorParameters: () => [{ type: undefined, decorators: [{
@@ -384,21 +387,30 @@ class HttpInterceptorService {
384
387
  if (event instanceof HttpResponse) {
385
388
  status = +event.status;
386
389
  responseBody = event.body;
387
- id = getReqid(event.headers);
390
+ id = getReqid(event?.headers);
388
391
  }
389
392
  }, error => {
390
- id = getReqid(error.headers);
391
- status = +error.status;
392
- exception = {
393
- type: error.name,
394
- message: error.error && error.status ? JSON.stringify(error.error) : error.message
395
- };
393
+ id = getReqid(error?.headers);
394
+ if (error) {
395
+ status = +error?.status || 0;
396
+ exception = {
397
+ type: error?.name,
398
+ message: error.error && error.status ? JSON.stringify(error.error) : error?.message
399
+ };
400
+ }
401
+ else {
402
+ status = 0;
403
+ exception = {
404
+ type: "IOException",
405
+ message: "The remote server is unavailable.",
406
+ };
407
+ }
396
408
  }), finalize(() => {
397
409
  try {
398
410
  if (this.SessionManager.getCurrentSession()) {
399
411
  const url = toHref(req.urlWithParams);
400
412
  const auth_user = extractAuthSchemeAnduser(req.headers);
401
- this.SessionManager.getCurrentSession().restRequests.push({
413
+ this.SessionManager.getCurrentSession()?.restRequests.push({
402
414
  id: id,
403
415
  method: req.method,
404
416
  protocol: url.protocol.slice(0, -1),
@@ -423,10 +435,10 @@ class HttpInterceptorService {
423
435
  }
424
436
  }));
425
437
  }
426
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: HttpInterceptorService, deps: [{ token: SessionManager }], target: i0.ɵɵFactoryTarget.Injectable }); }
427
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: HttpInterceptorService, providedIn: 'root' }); }
438
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: HttpInterceptorService, deps: [{ token: SessionManager }], target: i0.ɵɵFactoryTarget.Injectable }); }
439
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: HttpInterceptorService, providedIn: 'root' }); }
428
440
  }
429
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: HttpInterceptorService, decorators: [{
441
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: HttpInterceptorService, decorators: [{
430
442
  type: Injectable,
431
443
  args: [{ providedIn: 'root' }]
432
444
  }], ctorParameters: () => [{ type: SessionManager }] });
@@ -462,7 +474,7 @@ function extractAuthSchemeAnduser(headers) {
462
474
  return auth_user;
463
475
  }
464
476
  function getReqid(headers) {
465
- return headers.has('x-tracert')
477
+ return headers?.has('x-tracert')
466
478
  ? headers.get('x-tracert')
467
479
  : undefined;
468
480
  }
@@ -588,10 +600,10 @@ class AnalyticsCollector {
588
600
  logInspect('user', () => prettyActionUserFormat(this.sessionManager.getCurrentSession(), ua));
589
601
  this.sessionManager.getCurrentSession().userActions.push(ua);
590
602
  }
591
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: AnalyticsCollector, deps: [{ token: DOCUMENT }, { token: SessionManager }], target: i0.ɵɵFactoryTarget.Injectable }); }
592
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: AnalyticsCollector, providedIn: 'root' }); }
603
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: AnalyticsCollector, deps: [{ token: DOCUMENT }, { token: SessionManager }], target: i0.ɵɵFactoryTarget.Injectable }); }
604
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: AnalyticsCollector, providedIn: 'root' }); }
593
605
  }
594
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: AnalyticsCollector, decorators: [{
606
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: AnalyticsCollector, decorators: [{
595
607
  type: Injectable,
596
608
  args: [{
597
609
  providedIn: 'root'
@@ -606,16 +618,16 @@ class GlobalErrorHandlerService {
606
618
  this.sessionManager = sessionManager;
607
619
  }
608
620
  handleError(error) {
609
- this.sessionManager.getCurrentSession().exceptions.push({
621
+ this.sessionManager.getCurrentSession()?.exceptions.push({
610
622
  type: error?.name,
611
623
  message: error?.message
612
624
  });
613
625
  throw error;
614
626
  }
615
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: GlobalErrorHandlerService, deps: [{ token: SessionManager }], target: i0.ɵɵFactoryTarget.Injectable }); }
616
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: GlobalErrorHandlerService, providedIn: 'root' }); }
627
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: GlobalErrorHandlerService, deps: [{ token: SessionManager }], target: i0.ɵɵFactoryTarget.Injectable }); }
628
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: GlobalErrorHandlerService, providedIn: 'root' }); }
617
629
  }
618
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: GlobalErrorHandlerService, decorators: [{
630
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: GlobalErrorHandlerService, decorators: [{
619
631
  type: Injectable,
620
632
  args: [{ providedIn: 'root' }]
621
633
  }], ctorParameters: () => [{ type: SessionManager }] });
@@ -650,30 +662,32 @@ class NgCollectorModule {
650
662
  ngModule: NgCollectorModule
651
663
  };
652
664
  }
653
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: NgCollectorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
654
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.5", ngImport: i0, type: NgCollectorModule }); }
655
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: NgCollectorModule }); }
665
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: NgCollectorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
666
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.9", ngImport: i0, type: NgCollectorModule }); }
667
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: NgCollectorModule }); }
656
668
  }
657
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: NgCollectorModule, decorators: [{
669
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: NgCollectorModule, decorators: [{
658
670
  type: NgModule
659
671
  }] });
660
672
  function initializeEvents(router, sessionManager, analyticsCollector) {
661
673
  return () => {
662
674
  logInspect('app', 'initialize routing events listeners');
663
675
  window.addEventListener('beforeunload', event => {
664
- if (!sessionManager.getCurrentSession().loading) {
676
+ if (!sessionManager.getCurrentSession()?.loading) {
665
677
  sessionManager.newSession();
666
678
  }
667
679
  if (sessionManager.sendSessionfinished) {
668
680
  sessionManager.sendSessions(true);
681
+ sessionManager.resetCurrentSession();
669
682
  }
670
683
  });
671
684
  router.events.subscribe(event => {
672
685
  if (event instanceof NavigationStart) {
686
+ logInspect('app', sessionManager.currentSession);
673
687
  sessionManager.newSession(event.url);
674
688
  }
675
689
  if (event instanceof NavigationEnd) {
676
- delete sessionManager.getCurrentSession().loading;
690
+ delete sessionManager.getCurrentSession()?.loading;
677
691
  }
678
692
  });
679
693
  if (analyticsCollector) {
@@ -716,10 +730,10 @@ function TraceableStage() {
716
730
  }
717
731
  finally {
718
732
  end = Date.now();
719
- SessionManager.instance.getCurrentSession().localRequests.push({
733
+ SessionManager.instance.getCurrentSession()?.localRequests.push({
720
734
  name: propertyKey,
721
735
  location: target.constructor.name,
722
- user: session.user,
736
+ user: session?.user,
723
737
  start: start,
724
738
  end: end,
725
739
  exception: exception
@@ -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/session-manager.service.ts","../../../../projects/oneteme/inspect-ng-collector/src/lib/http-interceptor.service.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/global-error-handler.service.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/public-api.ts","../../../../projects/oneteme/inspect-ng-collector/src/oneteme-inspect-ng-collector.ts"],"sourcesContent":["import {LocalRequest, MainSession, RestRequest, UserAction} from \"./trace.model\";\n\nconst WIN:any = window;\ntype level = 'app' | 'user';\nexport function dateNow() {\n return Date.now() / 1_000;\n}\n\nexport function initDebug(value: {app: boolean, user: boolean}){\n WIN[\"inspect\"] = { app : value.app, user: value.user };\n}\n\nexport function logInspect(level: level, ...args: any[]){\n if(WIN[\"inspect\"][level]){\n if(args.length == 1 && typeof args[0] == 'function'){\n args = args[0]();\n if(!Array.isArray(args)){\n args = [args];\n }\n }\n console.log(`[INSPECT]-(${level})`, ...args);\n }\n}\n\nexport function prettyActionUserFormat(session: MainSession,userAction:UserAction){\n let s = `(${session.location}) `\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\nexport function 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+=prettyDurationFormat(session.start, session.end)+'\\n';\n session.restRequests.forEach(r => {\n s+= prettyRestRequestFormat(r)+'\\n';\n })\n session.localRequests.forEach(r => {\n s+= prettyLocalRequestFormat(r)+'\\n';\n })\n return s;\n}\n\nfunction 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 if(rest.exception?.type){\n s+= ` ${rest.exception?.type}:`;\n }\n if(rest.exception?.message){\n s+= ` ${rest.exception.message}`;\n }\n s+= ` >> ${rest.status}`\n s+= prettyDurationFormat(rest.start,rest.end);\n return s;\n}\n\nfunction prettyLocalRequestFormat(local: LocalRequest){\n let s = ` - [${local.name}]`;\n if(local.location){\n s+= `(${local.location})`\n }\n if(local.exception?.type){\n s+= ` ${local.exception?.type}:`;\n }\n if(local.exception?.message){\n s+= ` ${local.exception.message}`\n }\n s+= ` >> ${prettyDurationFormat(local.start, local.end)}`;\n return s;\n}\n\nfunction prettyDurationFormat(start:number,end:number|undefined){\n return start && end ? `(in ${ (end - start).toFixed(2) } s)` : '';\n}\n\n\n\n\n","import { dateNow, initDebug } from \"./util\";\nconst SLASH = '/';\nconst HOST_PATERN = /https?:\\/\\/[\\w\\-.]+(:\\d{2,5})?\\/?/;\nconst PATH_PATERN = /[\\w-]+(\\/[\\w-]+)*/;\nexport interface ApplicationConf {\n host?: string;\n name?: string | (() => string);\n version?: string | (() => string);\n env?: string | (() => string);\n user?: string | (() => string);\n bufferMaxSize?: number | (() => number);\n delay?: number| (() => number);\n instanceApi?: string | (() => string);\n sessionApi?: string | (() => string);\n exclude?: RegExp[] | (() => RegExp[]);\n debug?: {app: boolean, user: boolean};\n analytics?:boolean;\n enabled?: boolean;\n}\n\nexport interface TechnicalConf {\n user: () => string ;\n bufferMaxSize: number;\n delay: number;\n instanceApi: string;\n sessionApi: string;\n exclude: RegExp[];\n debug: {app: boolean, user: boolean};\n analytics?: boolean;\n enabled: boolean;\n}\n\nexport function validateAndGetConfig(conf:any):TechnicalConf{\n let host = matchRegex(getStringOrCall(conf.host), \"host\" , HOST_PATERN)\n let sessionApi = matchRegex(getStringOrCall(conf.sessionApi),\"sessionApi\", PATH_PATERN, \"v3/trace/instance/:id/session\")\n let instanceApi = matchRegex(getStringOrCall(conf.instanceApi),\"intanceApi\", PATH_PATERN, \"v3/trace/instance\")\n initDebug(conf.debug ?? {app: false, user: false});\n return {\n user : typeof conf.user == 'function' ? conf.user : ()=> conf.user,\n bufferMaxSize: requirePostitiveValue(getNumberOrCall(conf.bufferMaxSize),\"bufferMaxSize\", 1000) ,\n delay: requirePostitiveValue(getNumberOrCall(conf.delay),\"delay\", 60000),\n instanceApi: sessionApiURL(host, instanceApi),\n sessionApi: instanceApiURL(host, sessionApi),\n exclude: getRegArrOrCall(conf.exclude) || [],\n debug: conf.debug ?? {app: false, user: false},\n analytics: conf.analytics ?? false,\n enabled: conf.enabled ?? false\n }\n}\n\nexport function GetInstanceEnvironement(conf:ApplicationConf){\n return {\n name: require(getStringOrCall(conf.name), 'name'),\n version: getStringOrCall(conf.version),\n address: undefined, //server side\n env: require(getStringOrCall(conf.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 }\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\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}\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\n\n","import { Inject, Injectable, OnDestroy } from '@angular/core';\nimport { InstanceEnvironment, MainSession } from './trace.model';\nimport { interval, startWith, Subscription, tap } from 'rxjs';\nimport { dateNow, logInspect, prettySessionFormat } from './util';\nimport { TechnicalConf } from './configuration';\n\n\n@Injectable({ providedIn: 'root' })\nexport class SessionManager implements OnDestroy {\n\n config: TechnicalConf;\n instanceEnvironment: InstanceEnvironment;\n scheduledSessionSender: Subscription;\n sessionQueue: MainSession[] = [];\n sessionSendAttempts: number = 0\n sendSessionfinished: boolean = true;\n currentSession!: MainSession;\n private static _instance: SessionManager;\n\n constructor(@Inject('config') config: TechnicalConf,\n @Inject('instance') instance: InstanceEnvironment) {\n this.config = config;\n this.instanceEnvironment = instance;\n SessionManager._instance = this;\n this.scheduledSessionSender = interval(config.delay)\n .pipe(startWith(0))\n .pipe(tap(() => {\n if (this.sendSessionfinished) {\n this.sendSessionfinished = false;\n this.manageCache().finally(() => { this.sendSessionfinished = true });\n }\n }))\n .subscribe();\n logInspect('app','SessionManager initialized');\n }\n\n static get instance(): SessionManager{\n return SessionManager._instance;\n }\n\n newSession(url?: string) {\n if (this.currentSession) {\n this.currentSession.end = dateNow();\n this.currentSession.name = document.title;\n this.currentSession.location = document.URL;\n if (this.config.exclude.every((e) => !e.test(this.currentSession.location))) {\n this.sessionQueue.push(this.currentSession);\n logInspect('app',`added element to session queue, new size is:${this.sessionQueue.length}`);\n }\n\n logInspect('app',() => prettySessionFormat(this.currentSession));\n }\n if (url) {\n this.currentSession = {\n '@type': \"main\",\n user: this.config.user(),\n start: dateNow(),\n type: \"VIEW\",\n location: url,\n loading: true,\n restRequests: [],\n localRequests: [],\n userActions: [],\n exceptions: []\n }\n }\n }\n\n manageCache(): Promise<any> {\n if(this.instanceEnvironment.id){\n return this.sendSessions();\n }\n return this.postInstanceEnv().then((id: string | null) => {\n if (id) {\n return this.sendSessions();\n }\n 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.sessionQueue.length > 0) {\n let uri = this.config.sessionApi;\n if(instanceComplete){\n uri += \"?end=\"+ new Date().toISOString();\n }\n this.sessionSendAttempts++;\n let sessions: MainSession[] = [...this.sessionQueue];\n this.sessionQueue.splice(0, sessions.length); // add rest of sessions\n logInspect('app',`sending sessions, attempts:${this.sessionSendAttempts}, queue size : ${sessions.length}`)\n return this.putSessions(sessions,uri)\n .then(ok => {\n if (ok) {\n logInspect('app',`sessions sent successfully, queue size reset, new size is: ${this.sessionQueue.length}`)\n this.sessionSendAttempts = 0;\n return sessions.length;\n } else {\n console.warn(`Error while attempting to send sessions, attempts: ${this.sessionSendAttempts}`)//\n this.revertQueueSize(sessions);\n return -1;\n }\n })\n }\n return Promise.resolve(0);\n }\n\n putSessions(sessionList: MainSession[], uri: string): Promise<boolean> {\n return fetch(uri, {\n method: 'PUT',\n headers: { 'Content-Type': 'application/json' },\n mode: 'cors',\n body: JSON.stringify(sessionList)\n })\n .then(res => res.ok)\n .catch(err => false);\n }\n\n postInstanceEnv(): Promise<string | null> {\n this.sessionSendAttempts++;\n return fetch(this.config.instanceApi, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n mode: 'cors',\n body: JSON.stringify(this.instanceEnvironment)\n })\n .then(res => res.ok ? res.text().then(id => {\n this.config.sessionApi = this.config.sessionApi.replace(':id', id);\n logInspect('app','Environement instance sent successfully', id);\n this.sessionSendAttempts = 0;\n return this.instanceEnvironment.id = id;\n }) : null)\n .catch(err => null);\n }\n\n revertQueueSize(sessions: MainSession[]) {\n this.sessionQueue.unshift(...sessions);\n if (this.sessionQueue.length > this.config.bufferMaxSize) {\n let diff = this.sessionQueue.length - this.config.bufferMaxSize;\n this.sessionQueue = this.sessionQueue.slice(0, this.config.bufferMaxSize);\n logInspect('app',`Buffer size exeeded the max size,last sessions have been removed from buffer, (number of sessions removed):${diff}`)\n }\n }\n\n ngOnDestroy(): void {\n if (this.scheduledSessionSender) {\n this.scheduledSessionSender.unsubscribe();\n }\n }\n\n getCurrentSession() {\n return this.currentSession;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpInterceptor, HttpEvent, HttpHandler, HttpRequest, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { tap, finalize } from 'rxjs/operators'\nimport { ExceptionInfo } from './trace.model';\nimport { dateNow } from './util';\nimport { SessionManager } from './session-manager.service';\n\n\n\n\n@Injectable({ providedIn: 'root' })\nexport class HttpInterceptorService implements HttpInterceptor {\n\n constructor(private readonly SessionManager: SessionManager) { } // change this to session manager\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n const start = dateNow();\n let status: number, responseBody: any = '', exception: ExceptionInfo;\n let id: string| undefined;\n return next.handle(req).pipe(tap(\n (event: any) => {\n if (event instanceof HttpResponse) {\n status = +event.status;\n responseBody = event.body\n id = getReqid(event.headers);\n }\n },\n error => {\n id = getReqid(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 },\n ), finalize(() => {\n try {\n if (this.SessionManager.getCurrentSession()){\n const url = toHref(req.urlWithParams);\n const auth_user = extractAuthSchemeAnduser(req.headers);\n this.SessionManager.getCurrentSession().restRequests.push({\n id: id,\n method: req.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: req.responseType,\n authScheme: auth_user.authScheme,\n user: auth_user.user,\n status: +status,\n inDataSize: sizeOf(responseBody),\n ouDataSize: sizeOf(req.body),\n start: start,\n end: dateNow(),\n exception: exception\n });\n }\n }catch(err){\n console.warn(err);\n }\n }));\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\nfunction 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.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 return auth_user;\n}\n\nfunction getReqid(headers:any):string | undefined {\n return headers.has('x-tracert')\n ? headers.get('x-tracert')\n : undefined;\n}\n\nfunction sizeOf(body: any): number {\n return body ? JSON.stringify(body).length : 0;\n}\n","type InstantType = \"SERVER\" | \"CLIENT\";\ntype MainSessionType = \"VIEW\" | \"BATCH\" | \"STARTUP\";\n\nexport interface MainSession {\n '@type'?: string;\n type: MainSessionType;\n name?: string;\n location: string;\n user?: string;\n start: number;\n end?: number;\n exceptions: ExceptionInfo[], // to be changed ?\n restRequests: RestRequest[],\n localRequests: LocalRequest[],\n userActions: UserAction[],\n loading?: boolean\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}\n\nexport interface RestRequest {\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 status: number;\n inDataSize: number;\n ouDataSize: number;\n user?:string;\n start: number;\n end: number;\n exception?: ExceptionInfo\n}\n\nexport interface LocalRequest {\n name: string;\n location: string;\n user?: string;\n start: number;\n end: number;\n exception?: ExceptionInfo\n}\n\nexport interface ExceptionInfo { // to bechanged\n type: string | null;\n message: string | null;\n}\n\nexport interface UserAction{\n type: string;\n start: number;\n name: string| null;\n nodeName: string;\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 {Inject, Injectable} from \"@angular/core\";\nimport {DOCUMENT} from \"@angular/common\";\nimport {extractName} from \"./trace.model\";\nimport {SessionManager} from \"./session-manager.service\";\nimport {dateNow, logInspect, prettyActionUserFormat} from \"./util\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AnalyticsCollector {\n\n eventHandlers : {[key:string]: (target: HTMLElement)=>boolean} = {\n 'click' : (target:HTMLElement)=> this.lookUpChild(target,1),\n }\n patchedEvent : {[key:string]:boolean} = {};\n elementsWithClickListeners = new WeakSet();\n constructor(@Inject(DOCUMENT) private readonly document: Document,\n private readonly sessionManager: SessionManager) {\n\n }\n subscribeToEvents(){\n const body = this.document.body;\n body.addEventListener('click', (event) => this.globalHandler(event), true);\n body.addEventListener('change', (event) => this.globalHandler(event), true);\n body.addEventListener('scrollend', (event) => this.globalHandler(event), true);\n body.addEventListener('dragend', (event) => this.globalHandler(event), true);\n this.document.addEventListener('DOMContentLoaded', (event) => this.globalHandler(event), true);\n\n /* let that =this;\n\n const originalAddEventListener = EventTarget.prototype.addEventListener;\n EventTarget.prototype.addEventListener = function(type: string, listener: any, options?: boolean | AddEventListenerOptions) {\n if(type === \"click\"){\n that.elementsWithClickListeners.add(this);\n const wrapperListener = (event: any) => {\n if(that.elementsWithClickListeners.has(event.currentTarget)){\n console.log('click event',event);\n that.GlobalHandler(event);\n }\n return listener.apply(this, arguments);\n };\n return originalAddEventListener.apply(this,[type,wrapperListener,options])\n }\n return originalAddEventListener.call(this, type, listener, options);\n }*/\n }\n\n\n\n globalHandler(event: Event | MouseEvent){\n // event.stopPropagation()\n // event.preventDefault()\n let target = event.target as HTMLElement;\n let eventType = event.type;\n try {\n if(this.eventHandlers.hasOwnProperty(eventType) && !this.eventHandlers[eventType](target)){\n return;\n }\n this.addActionUser(eventType,target);\n }catch(err){\n console.warn(err);\n }\n }\n\n 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 && this.lookUpChild(c as HTMLElement, depth), true);\n }\n return true;\n }\n\n addActionUser(eventType: string, target: HTMLElement){\n const ua = {\n type: eventType,\n start: dateNow(),\n name : extractName(target),\n nodeName : target.tagName?.toLowerCase(),\n }\n logInspect('user',() => prettyActionUserFormat(this.sessionManager.getCurrentSession(),ua));\n this.sessionManager.getCurrentSession().userActions.push(ua);\n }\n\n\n}\n","import {ErrorHandler, Injectable} from \"@angular/core\";\nimport {SessionManager} from \"./session-manager.service\";\n\n@Injectable({ providedIn: 'root' })\nexport class GlobalErrorHandlerService implements ErrorHandler {\n\n constructor(private readonly sessionManager: SessionManager) {\n }\n handleError(error:any ) {\n this.sessionManager.getCurrentSession().exceptions.push({\n type: error?.name,\n message: error?.message\n })\n throw error;\n }\n}\n","import {NgModule, APP_INITIALIZER, ModuleWithProviders, ErrorHandler} from '@angular/core';\nimport { HTTP_INTERCEPTORS, } from '@angular/common/http';\nimport { logInspect } from './util';\nimport { NavigationEnd, NavigationStart, Router } from '@angular/router';\nimport { ApplicationConf, GetInstanceEnvironement, validateAndGetConfig } from './configuration';\nimport { HttpInterceptorService } from './http-interceptor.service';\nimport { SessionManager } from './session-manager.service';\nimport {AnalyticsCollector} from \"./analytics-collect.service\";\nimport {GlobalErrorHandlerService} from \"./global-error-handler.service\";\n\n@NgModule()\nexport class NgCollectorModule {\n\n static forRoot(configuration: ApplicationConf): ModuleWithProviders<NgCollectorModule> {\n if (configuration?.enabled) {\n try {\n let config = validateAndGetConfig(configuration);\n let instance = GetInstanceEnvironement(configuration);\n let deps:any[] = [Router, SessionManager]\n logInspect('app',JSON.stringify(config));\n logInspect('app',JSON.stringify(instance));\n config.analytics && deps.push(AnalyticsCollector);\n\n return {\n ngModule: NgCollectorModule,\n providers: [\n SessionManager,\n { provide: APP_INITIALIZER, useFactory: initializeEvents, deps: deps, multi: true },\n { provide: HTTP_INTERCEPTORS, useClass: HttpInterceptorService, multi: true },\n { provide: 'instance', useValue: instance },\n { provide: 'config', useValue: config },\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, sessionManager: SessionManager, analyticsCollector: AnalyticsCollector) {\n return () => {\n logInspect('app','initialize routing events listeners');\n window.addEventListener('beforeunload', event => {\n if(!sessionManager.getCurrentSession().loading){\n sessionManager.newSession();\n }\n if(sessionManager.sendSessionfinished){\n sessionManager.sendSessions(true);\n }\n });\n router.events.subscribe(event => {\n if (event instanceof NavigationStart) {\n sessionManager.newSession(event.url);\n }\n if (event instanceof NavigationEnd) {\n delete sessionManager.getCurrentSession().loading;\n }\n })\n if(analyticsCollector){\n analyticsCollector.subscribeToEvents();\n }\n\n }\n}\n\n\n","import { SessionManager } from \"./session-manager.service\";\n\n\nexport 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 if(SessionManager.instance){\n let session = SessionManager.instance.getCurrentSession();\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 SessionManager.instance.getCurrentSession().localRequests.push({\n name: propertyKey,\n location: target.constructor.name,\n user: session.user,\n start: start, \n end: end,\n exception: exception\n })\n }\n }\n }\n return descriptor;\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';\n\n ","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["tap","i1.SessionManager"],"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/session-manager.service.ts","../../../../projects/oneteme/inspect-ng-collector/src/lib/http-interceptor.service.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/global-error-handler.service.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/public-api.ts","../../../../projects/oneteme/inspect-ng-collector/src/oneteme-inspect-ng-collector.ts"],"sourcesContent":["import {LocalRequest, MainSession, RestRequest, UserAction} from \"./trace.model\";\n\nconst WIN:any = window;\ntype level = 'app' | 'user';\nexport function dateNow() {\n return Date.now() / 1_000;\n}\n\nexport function initDebug(value: {app: boolean, user: boolean}){\n WIN[\"inspect\"] = { app : value.app, user: value.user };\n}\n\nexport function logInspect(level: level, ...args: any[]){\n if(WIN[\"inspect\"][level]){\n if(args.length == 1 && typeof args[0] == 'function'){\n args = args[0]();\n if(!Array.isArray(args)){\n args = [args];\n }\n }\n console.log(`[INSPECT]-(${level})`, ...args);\n }\n}\n\nexport function prettyActionUserFormat(session: MainSession,userAction:UserAction){\n let s = `(${session.location}) `\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\nexport function 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+=prettyDurationFormat(session.start, session.end)+'\\n';\n session.restRequests.forEach(r => {\n s+= prettyRestRequestFormat(r)+'\\n';\n })\n session.localRequests.forEach(r => {\n s+= prettyLocalRequestFormat(r)+'\\n';\n })\n return s;\n}\n\nfunction 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 if(rest.exception?.type){\n s+= ` ${rest.exception?.type}:`;\n }\n if(rest.exception?.message){\n s+= ` ${rest.exception.message}`;\n }\n s+= ` >> ${rest.status}`\n s+= prettyDurationFormat(rest.start,rest.end);\n return s;\n}\n\nfunction prettyLocalRequestFormat(local: LocalRequest){\n let s = ` - [${local.name}]`;\n if(local.location){\n s+= `(${local.location})`\n }\n if(local.exception?.type){\n s+= ` ${local.exception?.type}:`;\n }\n if(local.exception?.message){\n s+= ` ${local.exception.message}`\n }\n s+= ` >> ${prettyDurationFormat(local.start, local.end)}`;\n return s;\n}\n\nfunction prettyDurationFormat(start:number,end:number|undefined){\n return start && end ? `(in ${ (end - start).toFixed(2) } s)` : '';\n}\n\n\n\n\n","import { dateNow, initDebug } from \"./util\";\nconst SLASH = '/';\nconst HOST_PATERN = /https?:\\/\\/[\\w\\-.]+(:\\d{2,5})?\\/?/;\nconst PATH_PATERN = /[\\w-]+(\\/[\\w-]+)*/;\nexport interface ApplicationConf {\n host?: string;\n name?: string | (() => string);\n version?: string | (() => string);\n env?: string | (() => string);\n user?: string | (() => string);\n bufferMaxSize?: number | (() => number);\n delay?: number| (() => number);\n instanceApi?: string | (() => string);\n sessionApi?: string | (() => string);\n exclude?: RegExp[] | (() => RegExp[]);\n debug?: {app: boolean, user: boolean};\n analytics?:boolean;\n enabled?: boolean;\n}\n\nexport interface TechnicalConf {\n user: () => string ;\n bufferMaxSize: number;\n delay: number;\n instanceApi: string;\n sessionApi: string;\n exclude: RegExp[];\n debug: {app: boolean, user: boolean};\n analytics?: boolean;\n enabled: boolean;\n}\n\nexport function validateAndGetConfig(conf:any):TechnicalConf{\n let host = matchRegex(getStringOrCall(conf.host), \"host\" , HOST_PATERN)\n let sessionApi = matchRegex(getStringOrCall(conf.sessionApi),\"sessionApi\", PATH_PATERN, \"v3/trace/instance/:id/session\")\n let instanceApi = matchRegex(getStringOrCall(conf.instanceApi),\"intanceApi\", PATH_PATERN, \"v3/trace/instance\")\n initDebug(conf.debug ?? {app: false, user: false});\n return {\n user : typeof conf.user == 'function' ? conf.user : ()=> conf.user,\n bufferMaxSize: requirePostitiveValue(getNumberOrCall(conf.bufferMaxSize),\"bufferMaxSize\", 1000) ,\n delay: requirePostitiveValue(getNumberOrCall(conf.delay),\"delay\", 60000),\n instanceApi: sessionApiURL(host, instanceApi),\n sessionApi: instanceApiURL(host, sessionApi),\n exclude: getRegArrOrCall(conf.exclude) || [],\n debug: conf.debug ?? {app: false, user: false},\n analytics: conf.analytics ?? false,\n enabled: conf.enabled ?? false\n }\n}\n\nexport function GetInstanceEnvironement(conf:ApplicationConf){\n return {\n name: require(getStringOrCall(conf.name), 'name'),\n version: getStringOrCall(conf.version),\n address: undefined, //server side\n env: require(getStringOrCall(conf.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 }\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\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}\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\n\n","import { Inject, Injectable, OnDestroy } from '@angular/core';\nimport { InstanceEnvironment, MainSession } from './trace.model';\nimport { interval, startWith, Subscription, tap } from 'rxjs';\nimport { dateNow, logInspect, prettySessionFormat } from './util';\nimport { TechnicalConf } from './configuration';\n\n\n@Injectable({ providedIn: 'root' })\nexport class SessionManager implements OnDestroy {\n\n config: TechnicalConf;\n instanceEnvironment: InstanceEnvironment;\n scheduledSessionSender: Subscription;\n sessionQueue: MainSession[] = [];\n sessionSendAttempts: number = 0\n sendSessionfinished: boolean = true;\n currentSession!: MainSession| null;\n private static _instance: SessionManager;\n\n constructor(@Inject('config') config: TechnicalConf,\n @Inject('instance') instance: InstanceEnvironment) {\n this.config = config;\n this.instanceEnvironment = instance;\n SessionManager._instance = this;\n this.scheduledSessionSender = interval(config.delay)\n .pipe(startWith(0))\n .pipe(tap(() => {\n if (this.sendSessionfinished) {\n this.sendSessionfinished = false;\n this.manageCache().finally(() => { this.sendSessionfinished = true });\n }\n }))\n .subscribe();\n logInspect('app','SessionManager initialized');\n }\n\n static get instance(): SessionManager{\n return SessionManager._instance;\n }\n\n newSession(url?: string) {\n if (this.currentSession) {\n this.currentSession.end = dateNow();\n this.currentSession.name = document.title;\n this.currentSession.location = document.URL;\n if (this.config.exclude.every((e) => !e.test(this.currentSession!.location))) {\n this.sessionQueue.push(this.currentSession);\n logInspect('app',`added element to session queue, new size is:${this.sessionQueue.length}`);\n }\n\n logInspect('app',() => prettySessionFormat(this.currentSession!));\n }\n if (url) {\n this.currentSession = {\n '@type': \"main\",\n user: this.config.user(),\n start: dateNow(),\n type: \"VIEW\",\n location: url,\n loading: true,\n restRequests: [],\n localRequests: [],\n userActions: [],\n exceptions: []\n }\n }\n }\n\n manageCache(): Promise<any> {\n if(this.instanceEnvironment.id){\n return this.sendSessions();\n }\n return this.postInstanceEnv().then((id: string | null) => {\n if (id) {\n return this.sendSessions();\n }\n 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.sessionQueue.length > 0) {\n let uri = this.config.sessionApi;\n if(instanceComplete){\n uri += \"?end=\"+ new Date().toISOString();\n }\n this.sessionSendAttempts++;\n let sessions: MainSession[] = [...this.sessionQueue];\n this.sessionQueue.splice(0, sessions.length); // add rest of sessions\n logInspect('app',`sending sessions, attempts:${this.sessionSendAttempts}, queue size : ${sessions.length}`)\n return this.putSessions(sessions,uri)\n .then(ok => {\n if (ok) {\n logInspect('app',`sessions sent successfully, queue size reset, new size is: ${this.sessionQueue.length}`)\n this.sessionSendAttempts = 0;\n return sessions.length;\n } else {\n console.warn(`Error while attempting to send sessions, attempts: ${this.sessionSendAttempts}`)//\n this.revertQueueSize(sessions);\n return -1;\n }\n })\n }\n return Promise.resolve(0);\n }\n\n putSessions(sessionList: MainSession[], uri: string): Promise<boolean> {\n return fetch(uri, {\n method: 'PUT',\n headers: { 'Content-Type': 'application/json' },\n mode: 'cors',\n body: JSON.stringify(sessionList)\n })\n .then(res => res.ok)\n .catch(err => false);\n }\n\n postInstanceEnv(): Promise<string | null> {\n this.sessionSendAttempts++;\n return fetch(this.config.instanceApi, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n mode: 'cors',\n body: JSON.stringify(this.instanceEnvironment)\n })\n .then(res => res.ok ? res.text().then(id => {\n this.config.sessionApi = this.config.sessionApi.replace(':id', id);\n logInspect('app','Environement instance sent successfully', id);\n this.sessionSendAttempts = 0;\n return this.instanceEnvironment.id = id;\n }) : null)\n .catch(err => null);\n }\n\n revertQueueSize(sessions: MainSession[]) {\n this.sessionQueue.unshift(...sessions);\n if (this.sessionQueue.length > this.config.bufferMaxSize) {\n let diff = this.sessionQueue.length - this.config.bufferMaxSize;\n this.sessionQueue = this.sessionQueue.slice(0, this.config.bufferMaxSize);\n logInspect('app',`Buffer size exeeded the max size,last sessions have been removed from buffer, (number of sessions removed):${diff}`)\n }\n }\n\n ngOnDestroy(): void {\n if (this.scheduledSessionSender) {\n this.scheduledSessionSender.unsubscribe();\n }\n }\n\n getCurrentSession() {\n return this.currentSession;\n }\n\n resetCurrentSession(){\n this.currentSession = null;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpInterceptor, HttpEvent, HttpHandler, HttpRequest, HttpResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { tap, finalize } from 'rxjs/operators'\nimport { ExceptionInfo } from './trace.model';\nimport { dateNow } from './util';\nimport { SessionManager } from './session-manager.service';\n\n\n\n\n@Injectable({ providedIn: 'root' })\nexport class HttpInterceptorService implements HttpInterceptor {\n\n constructor(private readonly SessionManager: SessionManager) { } // change this to session manager\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n const start = dateNow();\n let status: number, responseBody: any = '', exception: ExceptionInfo;\n let id: string| undefined;\n return next.handle(req).pipe(tap(\n (event: any) => {\n if (event instanceof HttpResponse) {\n status = +event.status;\n responseBody = event.body\n id = getReqid(event?.headers);\n }\n },\n error => {\n id = getReqid(error?.headers);\n if(error){\n status = +error?.status || 0;\n exception = {\n type : error?.name,\n message: error.error && error.status ? JSON.stringify(error.error) : error?.message\n }\n }else {\n status= 0\n exception = {\n type : \"IOException\",\n message: \"The remote server is unavailable.\",\n }\n }\n },\n ), finalize(() => {\n try {\n if (this.SessionManager.getCurrentSession()){\n const url = toHref(req.urlWithParams);\n const auth_user = extractAuthSchemeAnduser(req.headers);\n this.SessionManager.getCurrentSession()?.restRequests.push({\n id: id,\n method: req.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: req.responseType,\n authScheme: auth_user.authScheme,\n user: auth_user.user,\n status: +status,\n inDataSize: sizeOf(responseBody),\n ouDataSize: sizeOf(req.body),\n start: start,\n end: dateNow(),\n exception: exception\n });\n }\n }catch(err){\n console.warn(err);\n }\n }));\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\nfunction 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.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 return auth_user;\n}\n\nfunction getReqid(headers:any):string | undefined {\n return headers?.has('x-tracert')\n ? headers.get('x-tracert')\n : undefined;\n}\n\nfunction sizeOf(body: any): number {\n return body ? JSON.stringify(body).length : 0;\n}\n","type InstantType = \"SERVER\" | \"CLIENT\";\ntype MainSessionType = \"VIEW\" | \"BATCH\" | \"STARTUP\";\n\nexport interface MainSession {\n '@type'?: string;\n type: MainSessionType;\n name?: string;\n location: string;\n user?: string;\n start: number;\n end?: number;\n exceptions: ExceptionInfo[], // to be changed ?\n restRequests: RestRequest[],\n localRequests: LocalRequest[],\n userActions: UserAction[],\n loading?: boolean\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}\n\nexport interface RestRequest {\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 status: number;\n inDataSize: number;\n ouDataSize: number;\n user?:string;\n start: number;\n end: number;\n exception?: ExceptionInfo\n}\n\nexport interface LocalRequest {\n name: string;\n location: string;\n user?: string;\n start: number;\n end: number;\n exception?: ExceptionInfo\n}\n\nexport interface ExceptionInfo { // to bechanged\n type: string | null;\n message: string | null;\n}\n\nexport interface UserAction{\n type: string;\n start: number;\n name: string| null;\n nodeName: string;\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 {Inject, Injectable} from \"@angular/core\";\nimport {DOCUMENT} from \"@angular/common\";\nimport {extractName} from \"./trace.model\";\nimport {SessionManager} from \"./session-manager.service\";\nimport {dateNow, logInspect, prettyActionUserFormat} from \"./util\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AnalyticsCollector {\n\n eventHandlers : {[key:string]: (target: HTMLElement)=>boolean} = {\n 'click' : (target:HTMLElement)=> this.lookUpChild(target,1),\n }\n patchedEvent : {[key:string]:boolean} = {};\n elementsWithClickListeners = new WeakSet();\n constructor(@Inject(DOCUMENT) private readonly document: Document,\n private readonly sessionManager: SessionManager) {\n\n }\n subscribeToEvents(){\n const body = this.document.body;\n body.addEventListener('click', (event) => this.globalHandler(event), true);\n body.addEventListener('change', (event) => this.globalHandler(event), true);\n body.addEventListener('scrollend', (event) => this.globalHandler(event), true);\n body.addEventListener('dragend', (event) => this.globalHandler(event), true);\n this.document.addEventListener('DOMContentLoaded', (event) => this.globalHandler(event), true);\n\n /* let that =this;\n\n const originalAddEventListener = EventTarget.prototype.addEventListener;\n EventTarget.prototype.addEventListener = function(type: string, listener: any, options?: boolean | AddEventListenerOptions) {\n if(type === \"click\"){\n that.elementsWithClickListeners.add(this);\n const wrapperListener = (event: any) => {\n if(that.elementsWithClickListeners.has(event.currentTarget)){\n console.log('click event',event);\n that.GlobalHandler(event);\n }\n return listener.apply(this, arguments);\n };\n return originalAddEventListener.apply(this,[type,wrapperListener,options])\n }\n return originalAddEventListener.call(this, type, listener, options);\n }*/\n }\n\n\n\n globalHandler(event: Event | MouseEvent){\n // event.stopPropagation()\n // event.preventDefault()\n let target = event.target as HTMLElement;\n let eventType = event.type;\n try {\n if(this.eventHandlers.hasOwnProperty(eventType) && !this.eventHandlers[eventType](target)){\n return;\n }\n this.addActionUser(eventType,target);\n }catch(err){\n console.warn(err);\n }\n }\n\n 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 && this.lookUpChild(c as HTMLElement, depth), true);\n }\n return true;\n }\n\n addActionUser(eventType: string, target: HTMLElement){\n const ua = {\n type: eventType,\n start: dateNow(),\n name : extractName(target),\n nodeName : target.tagName?.toLowerCase(),\n }\n logInspect('user',() => prettyActionUserFormat(this.sessionManager.getCurrentSession()!,ua));\n this.sessionManager.getCurrentSession()!.userActions.push(ua);\n }\n\n\n}\n","import {ErrorHandler, Injectable} from \"@angular/core\";\nimport {SessionManager} from \"./session-manager.service\";\n\n@Injectable({ providedIn: 'root' })\nexport class GlobalErrorHandlerService implements ErrorHandler {\n\n constructor(private readonly sessionManager: SessionManager) {\n }\n handleError(error:any ) {\n this.sessionManager.getCurrentSession()?.exceptions.push({\n type: error?.name,\n message: error?.message\n })\n throw error;\n }\n}\n","import {NgModule, APP_INITIALIZER, ModuleWithProviders, ErrorHandler} from '@angular/core';\nimport { HTTP_INTERCEPTORS, } from '@angular/common/http';\nimport { logInspect } from './util';\nimport { NavigationEnd, NavigationStart, Router } from '@angular/router';\nimport { ApplicationConf, GetInstanceEnvironement, validateAndGetConfig } from './configuration';\nimport { HttpInterceptorService } from './http-interceptor.service';\nimport { SessionManager } from './session-manager.service';\nimport {AnalyticsCollector} from \"./analytics-collect.service\";\nimport {GlobalErrorHandlerService} from \"./global-error-handler.service\";\n\n@NgModule()\nexport class NgCollectorModule {\n\n static forRoot(configuration: ApplicationConf): ModuleWithProviders<NgCollectorModule> {\n if (configuration?.enabled) {\n try {\n let config = validateAndGetConfig(configuration);\n let instance = GetInstanceEnvironement(configuration);\n let deps:any[] = [Router, SessionManager]\n logInspect('app',JSON.stringify(config));\n logInspect('app',JSON.stringify(instance));\n config.analytics && deps.push(AnalyticsCollector);\n\n return {\n ngModule: NgCollectorModule,\n providers: [\n SessionManager,\n { provide: APP_INITIALIZER, useFactory: initializeEvents, deps: deps, multi: true },\n { provide: HTTP_INTERCEPTORS, useClass: HttpInterceptorService, multi: true },\n { provide: 'instance', useValue: instance },\n { provide: 'config', useValue: config },\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, sessionManager: SessionManager, analyticsCollector: AnalyticsCollector) {\n return () => {\n logInspect('app','initialize routing events listeners');\n window.addEventListener('beforeunload', event => {\n if(!sessionManager.getCurrentSession()?.loading){\n sessionManager.newSession();\n }\n if(sessionManager.sendSessionfinished){\n sessionManager.sendSessions(true);\n sessionManager.resetCurrentSession();\n }\n });\n router.events.subscribe(event => {\n if (event instanceof NavigationStart) {\n logInspect('app',sessionManager.currentSession);\n sessionManager.newSession(event.url);\n }\n if (event instanceof NavigationEnd) {\n delete sessionManager.getCurrentSession()?.loading;\n }\n })\n if(analyticsCollector){\n analyticsCollector.subscribeToEvents();\n }\n\n }\n}\n\n\n","import { SessionManager } from \"./session-manager.service\";\n\n\nexport 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 if(SessionManager.instance){\n let session = SessionManager.instance.getCurrentSession();\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 SessionManager.instance.getCurrentSession()?.localRequests.push({\n name: propertyKey,\n location: target.constructor.name,\n user: session?.user,\n start: start,\n end: end,\n exception: exception\n })\n }\n }\n }\n return descriptor;\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';\n\n ","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["tap","i1.SessionManager"],"mappings":"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"}
package/index.d.ts CHANGED
@@ -109,7 +109,7 @@ declare class SessionManager implements OnDestroy {
109
109
  sessionQueue: MainSession[];
110
110
  sessionSendAttempts: number;
111
111
  sendSessionfinished: boolean;
112
- currentSession: MainSession;
112
+ currentSession: MainSession | null;
113
113
  private static _instance;
114
114
  constructor(config: TechnicalConf, instance: InstanceEnvironment);
115
115
  static get instance(): SessionManager;
@@ -120,7 +120,8 @@ declare class SessionManager implements OnDestroy {
120
120
  postInstanceEnv(): Promise<string | null>;
121
121
  revertQueueSize(sessions: MainSession[]): void;
122
122
  ngOnDestroy(): void;
123
- getCurrentSession(): MainSession;
123
+ getCurrentSession(): MainSession | null;
124
+ resetCurrentSession(): void;
124
125
  static ɵfac: i0.ɵɵFactoryDeclaration<SessionManager, never>;
125
126
  static ɵprov: i0.ɵɵInjectableDeclaration<SessionManager>;
126
127
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oneteme/inspect-ng-collector",
3
- "version": "1.2.2",
3
+ "version": "1.2.3-beta.0",
4
4
  "description": "inspect ng collector",
5
5
  "homepage": "https://github.com/oneteme/inspect-ng-collector",
6
6
  "bugs": "https://github.com/oneteme/inspect-ng-collector/issues",