@oneteme/inspect-ng-collector 1.3.0-beta.2 → 1.3.0-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,7 +3,7 @@ import { Injectable, inject, APP_INITIALIZER, ErrorHandler, NgModule } from '@an
3
3
  import { HttpResponse, HTTP_INTERCEPTORS } from '@angular/common/http';
4
4
  import { finalize, interval, startWith, tap as tap$1 } from 'rxjs';
5
5
  import { tap } from 'rxjs/operators';
6
- import { NavigationStart, NavigationEnd, Router } from '@angular/router';
6
+ import { NavigationStart, NavigationEnd, NavigationCancel, Router } from '@angular/router';
7
7
 
8
8
  const WIN = window;
9
9
  function dateNow() {
@@ -239,20 +239,19 @@ class SessionManager {
239
239
  }
240
240
  return SessionManager._instance;
241
241
  }
242
- newSession(url) {
243
- if (this.currentSession) {
244
- this.currentSession.end = dateNow();
245
- this.currentSession.name = document.title;
246
- this.currentSession.location = document.URL;
247
- if (!ContextManager.instance.techConfig.exclude?.some((e) => e.test(this.currentSession.location))) {
248
- window.dispatchEvent(new CustomEvent(DISPATCH, { detail: { traces: this.currentSession } }));
242
+ navigate(url) {
243
+ this.getCurrentSession(s => {
244
+ if (s) {
245
+ s.end = dateNow();
246
+ s.traced && window.dispatchEvent(new CustomEvent(DISPATCH, { detail: { force: !url, traces: s } }));
249
247
  }
250
- }
248
+ this.currentSession = null;
249
+ });
251
250
  if (url) {
252
251
  this.currentSession = {
253
252
  '@type': "main-ses",
254
253
  id: crypto.randomUUID(),
255
- user: "",
254
+ user: ContextManager.instance.techConfig.user,
256
255
  start: dateNow(),
257
256
  type: "VIEW",
258
257
  location: url,
@@ -260,34 +259,33 @@ class SessionManager {
260
259
  exceptions: [],
261
260
  requestsMask: 0
262
261
  };
263
- window.dispatchEvent(new CustomEvent(DISPATCH, { detail: { traces: this.currentSession } }));
264
262
  }
265
263
  }
266
- currentSessionID() {
264
+ updateSession() {
265
+ this.getCurrentSession(s => {
266
+ s.name = document.title;
267
+ s.location = document.URL;
268
+ if (!ContextManager.instance.techConfig.exclude?.some((e) => e.test(s.location))) {
269
+ window.dispatchEvent(new CustomEvent(DISPATCH, { detail: { traces: s } }));
270
+ s.traced = true;
271
+ }
272
+ });
273
+ }
274
+ getCurrentSession(fn) {
267
275
  if (this.currentSession) {
268
- return this.currentSession.id;
276
+ return fn(this.currentSession);
269
277
  }
270
278
  window.dispatchEvent(new CustomEvent(DISPATCH, { detail: { traces: createReport("no active session found ") } }));
271
279
  return undefined;
272
280
  }
273
- getCurrentSession() {
274
- return this.currentSession;
281
+ currentSessionID() {
282
+ return this.getCurrentSession(s => s.id);
275
283
  }
276
284
  updateMask(requestMask) {
277
- if (this.currentSession) {
278
- this.currentSession.requestsMask |= requestMask;
279
- }
280
- else {
281
- window.dispatchEvent(new CustomEvent(DISPATCH, { detail: { traces: createReport("no active session found ") } }));
282
- }
285
+ this.getCurrentSession(s => s.requestsMask |= requestMask);
283
286
  }
284
287
  addException(exception) {
285
- if (this.currentSession) {
286
- this.currentSession.exceptions.push(exception);
287
- }
288
- else {
289
- window.dispatchEvent(new CustomEvent(DISPATCH, { detail: { traces: createReport("no active session found ") } }));
290
- }
288
+ this.getCurrentSession(s => s.exceptions.push(exception));
291
289
  }
292
290
  }
293
291
 
@@ -545,19 +543,17 @@ class EventTraceScheduledDispatcherService {
545
543
  }
546
544
  }
547
545
 
546
+ ;
548
547
  function routeHandler(event) {
549
548
  if (event instanceof NavigationStart) {
550
- SessionManager.instance.newSession(event.url);
549
+ SessionManager.instance.navigate(event.url);
551
550
  }
552
- if (event instanceof NavigationEnd) {
553
- delete SessionManager.instance.getCurrentSession().loading;
551
+ if (event instanceof NavigationEnd || event instanceof NavigationCancel) {
552
+ SessionManager.instance.updateSession();
554
553
  }
555
554
  }
556
555
  function windowUnloadHandler(event) {
557
- if (!SessionManager.instance.getCurrentSession().loading) {
558
- SessionManager.instance.newSession();
559
- }
560
- window.dispatchEvent(new CustomEvent(DISPATCH, { detail: { force: true } }));
556
+ SessionManager.instance.navigate();
561
557
  }
562
558
 
563
559
  function machineRessourceUsageHandler(event) {
@@ -687,7 +683,7 @@ function addActionUser(eventType, target) {
687
683
  start: dateNow(),
688
684
  name: extractName(target),
689
685
  nodeName: target.tagName?.toLowerCase(),
690
- sessionId: SessionManager.instance?.getCurrentSession().id
686
+ sessionId: SessionManager.instance?.currentSessionID()
691
687
  };
692
688
  // window.dispatchEvent(new CustomEvent( DISPATCH ,{ detail : { traces:ua }}));
693
689
  }
@@ -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\": \"log\",\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\": \"log\",\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\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\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) // convert to string array to conform to backend expectation\n }\n }\n },\n tracing: {\n ...conf.tracing,\n remote: {\n ...conf.tracing?.remote,\n '@type':\"rest-rmt\", // add this to conform to backend expectation\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-collecotor] 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: undefined, //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}\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\";\n\nexport class SessionManager {\n\n currentSession!: any\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 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(!ContextManager.instance.techConfig.exclude?.some((e:any) => e.test(this.currentSession.location))){\n window.dispatchEvent(new CustomEvent( DISPATCH, { detail : { traces : this.currentSession } }));\n }\n }\n if (url) {\n this.currentSession = {\n '@type': \"main-ses\",\n id: crypto.randomUUID(),\n user: \"\",\n start: dateNow(),\n type: \"VIEW\",\n location: url,\n loading: true,\n exceptions: [],\n requestsMask: 0\n }\n window.dispatchEvent(new CustomEvent( DISPATCH, { detail : { traces : this.currentSession} }));\n }\n }\n\n currentSessionID(): string | undefined {\n if(this.currentSession){\n return this.currentSession.id;\n }\n window.dispatchEvent(new CustomEvent( DISPATCH, { detail : { traces : createReport(\"no active session found \") } }));\n return undefined;\n }\n\n getCurrentSession() {\n return this.currentSession;\n }\n\n updateMask(requestMask: number) {\n if(this.currentSession){\n this.currentSession.requestsMask |= requestMask\n }else {\n window.dispatchEvent(new CustomEvent( DISPATCH, { detail : { traces : createReport(\"no active session found \") } }));\n }\n }\n\n addException(exception: any) {\n if (this.currentSession) {\n this.currentSession.exceptions.push(exception);\n }else {\n window.dispatchEvent(new CustomEvent( DISPATCH, { detail : { traces : createReport(\"no active session found \") } }));\n }\n }\n}\n\n\n\n","import {ExceptionInfo, RestRequest} from \"./trace.model\";\nimport {createReport, dateNow, DISPATCH, RequestMask} from \"./util\";\nimport {HttpRequest, HttpResponse} from \"@angular/common/http\";\nimport {SessionManager} from \"./session-manager.service\";\n\nexport class RestRequestMonitor{\n\n readonly restRequest: RestRequest;\n\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\":\"http-req\",\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 ouDataSize: sizeOf(restRequest.body),\n start: start,\n sessionId: SessionManager.instance.currentSessionID()\n };\n SessionManager.instance.updateMask(RequestMask.REST);\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.restRequest.inDataSize = sizeOf(event.body);\n\n this.assertSessionID(this.restRequest.id, event.headers);\n }\n if(error){\n 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 }\n this.restRequest.end= dateNow();\n this.restRequest.status = +status;\n\n let stage = {\n \"@type\": \"http-stg\",\n name: \"PROCESS\",\n start: this.restRequest.start,\n end: dateNow(),\n order: 0,\n exception: exception,\n requestId : this.restRequest.id\n }\n\n window.dispatchEvent(new CustomEvent( DISPATCH, { detail : { traces : this.restRequest } }));\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 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 }\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\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 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 (event: any) => {\n if (event instanceof HttpResponse) {\n e = event;\n }\n },\n error => {\n e = error\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","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} 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 setTimeout(() => window.dispatchEvent(new CustomEvent(PRE_DISPATCH)),50)\n this.Dispatch().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 (e as CustomEvent).detail.force && 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<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\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\n\n}\n","import {NavigationEnd, NavigationStart} from \"@angular/router\";\nimport {SessionManager} from \"./session-manager.service\";\nimport {DISPATCH} from \"./util\";\n\nexport function routeHandler(event: any){\n if (event instanceof NavigationStart) {\n SessionManager.instance.newSession(event.url);\n }\n if (event instanceof NavigationEnd) {\n delete SessionManager.instance.getCurrentSession().loading;\n }\n}\n\nexport function windowUnloadHandler(event:any) {\n if(!SessionManager.instance.getCurrentSession().loading){\n SessionManager.instance.newSession();\n }\n window.dispatchEvent(new CustomEvent( DISPATCH, { detail : { force: true }}));\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': 'rsrc-usg',\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 {inject} from \"@angular/core\";\nimport {Router} from \"@angular/router\";\nimport {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 (){\n inject(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","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 end?: number;\n exceptions: ExceptionInfo[],\n requestsMask: number;\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 resource: MachineResource;\n additionalProperties?: {[key:string]: any};\n configuration?: {[key:string]: any};\n\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 status?: number;\n inDataSize?: number;\n ouDataSize?: number;\n user?:string;\n start: number;\n end?: number;\n sessionId: string | undefined;\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 end?: number;\n exception?: ExceptionInfo\n sessionId: string;\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;\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': \"user-act\",\n type: eventType,\n start: dateNow(),\n name : extractName(target),\n nodeName : target.tagName?.toLowerCase(),\n sessionId: SessionManager.instance?.getCurrentSession().id\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';\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 provideAppInitializer, 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, routerEventsListener } from \"./listeners\";\nimport { analyticsEventsListener } from \"./analytics-collect.service\";\nimport { eventTraceDebugger } from \"./event-trace-debugger\";\n\n@NgModule()\nexport class NgCollectorModule {\n private static forRootCalled: boolean = false;\n static forRoot(configuration: CollectorConfig): ModuleWithProviders<NgCollectorModule> {\n console.log(\"forRoodtCalled\");\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, 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() {\n return () => {\n eventTraceScheduledDispatcher()\n eventTraceDebugger();\n analyticsEventsListener();\n //storageEventListener();\n beforeDispatchListener();\n beforeUnloadListener();\n routerEventsListener();\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 window.dispatchEvent(new CustomEvent(\n DISPATCH,\n { detail :\n { traces : {\n \"@type\":\"locl-req\",\n id: crypto.randomUUID(),\n name: propertyKey,\n location: target.constructor.name,\n user: WIN[\"inspect-session-manager\"]?.currentSession?.user,\n start: start,\n end: end,\n exception: exception,\n sessionId : WIN[\"inspect-session-manager\"]?.currentSession?.id\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","instanceApiURL","toURL","sessionApiURL","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\": \"log\",\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\": \"log\",\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\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\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) // convert to string array to conform to backend expectation\n }\n }\n },\n tracing: {\n ...conf.tracing,\n remote: {\n ...conf.tracing?.remote,\n '@type':\"rest-rmt\", // add this to conform to backend expectation\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-collecotor] 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: undefined, //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}\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} from \"./trace.model\";\n\nexport class SessionManager {\n\n currentSession!: any\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 s.end = dateNow();\n s.traced && window.dispatchEvent(new CustomEvent( DISPATCH, { detail : { force: !url, traces : s } }));\n }\n this.currentSession = null\n })\n\n if (url) {\n this.currentSession = {\n '@type': \"main-ses\",\n id: crypto.randomUUID(),\n user: ContextManager.instance.techConfig.user,\n start: dateNow(),\n type: \"VIEW\",\n location: url,\n loading: true,\n exceptions: [],\n requestsMask: 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 s.traced = true;\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 currentSessionID(): string | undefined { // (s) => {}\n return this.getCurrentSession(s=> s.id );\n }\n\n updateMask(requestMask: number) {\n this.getCurrentSession(s => s.requestsMask |= requestMask)\n }\n\n addException(exception: any) {\n this.getCurrentSession(s => s.exceptions.push(exception))\n }\n}\n\n\n\n","import {ExceptionInfo, RestRequest} from \"./trace.model\";\nimport {createReport, dateNow, DISPATCH, RequestMask} from \"./util\";\nimport {HttpRequest, HttpResponse} from \"@angular/common/http\";\nimport {SessionManager} from \"./session-manager.service\";\n\nexport class RestRequestMonitor{\n\n readonly restRequest: RestRequest;\n\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\":\"http-req\",\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 ouDataSize: sizeOf(restRequest.body),\n start: start,\n sessionId: SessionManager.instance.currentSessionID()\n };\n SessionManager.instance.updateMask(RequestMask.REST);\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.restRequest.inDataSize = sizeOf(event.body);\n\n this.assertSessionID(this.restRequest.id, event.headers);\n }\n if(error){\n 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 }\n this.restRequest.end= dateNow();\n this.restRequest.status = +status;\n\n let stage = {\n \"@type\": \"http-stg\",\n name: \"PROCESS\",\n start: this.restRequest.start,\n end: dateNow(),\n order: 0,\n exception: exception,\n requestId : this.restRequest.id\n }\n\n window.dispatchEvent(new CustomEvent( DISPATCH, { detail : { traces : this.restRequest } }));\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 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 }\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\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 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 (event: any) => {\n if (event instanceof HttpResponse) {\n e = event;\n }\n },\n error => {\n e = error\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","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} 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 setTimeout(() => window.dispatchEvent(new CustomEvent(PRE_DISPATCH)),50)\n this.Dispatch().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 (e as CustomEvent).detail.force && 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<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\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\n\n}\n","import {NavigationCancel, NavigationEnd, NavigationStart} from \"@angular/router\";\nimport {SessionManager} from \"./session-manager.service\";;\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 SessionManager.instance.updateSession();\n }\n}\n\nexport function windowUnloadHandler(event:any) {\n SessionManager.instance.navigate();\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': 'rsrc-usg',\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 {inject} from \"@angular/core\";\nimport {Router} from \"@angular/router\";\nimport {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 (){\n inject(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","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 end?: number;\n exceptions: ExceptionInfo[],\n requestsMask: number;\n traced?: 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 resource: MachineResource;\n additionalProperties?: {[key:string]: any};\n configuration?: {[key:string]: any};\n\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 status?: number;\n inDataSize?: number;\n ouDataSize?: number;\n user?:string;\n start: number;\n end?: number;\n sessionId: string | undefined;\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 end?: number;\n exception?: ExceptionInfo\n sessionId: string;\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;\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': \"user-act\",\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';\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 provideAppInitializer, 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, routerEventsListener } from \"./listeners\";\nimport { analyticsEventsListener } from \"./analytics-collect.service\";\nimport { eventTraceDebugger } from \"./event-trace-debugger\";\n\n@NgModule()\nexport class NgCollectorModule {\n private static forRootCalled: boolean = false;\n static forRoot(configuration: CollectorConfig): ModuleWithProviders<NgCollectorModule> {\n console.log(\"forRoodtCalled\");\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, 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() {\n return () => {\n eventTraceScheduledDispatcher()\n eventTraceDebugger();\n analyticsEventsListener();\n //storageEventListener();\n beforeDispatchListener();\n beforeUnloadListener();\n routerEventsListener();\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 window.dispatchEvent(new CustomEvent(\n DISPATCH,\n { detail :\n { traces : {\n \"@type\":\"locl-req\",\n id: crypto.randomUUID(),\n name: propertyKey,\n location: target.constructor.name,\n user: WIN[\"inspect-session-manager\"]?.currentSession?.user,\n start: start,\n end: end,\n exception: exception,\n sessionId : WIN[\"inspect-session-manager\"]?.currentSession?.id\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","instanceApiURL","toURL","sessionApiURL","tap"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oneteme/inspect-ng-collector",
3
- "version": "1.3.0-beta.2",
3
+ "version": "1.3.0-beta.4",
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",