@oneteme/inspect-ng-collector 1.3.2-ng12 → 1.3.2

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.
@@ -1,8 +1,8 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, Injectable, Inject, APP_INITIALIZER, ErrorHandler, NgModule } from '@angular/core';
2
+ import { InjectionToken, Inject, Injectable, APP_INITIALIZER, ErrorHandler, NgModule } from '@angular/core';
3
3
  import { HttpResponse, HttpErrorResponse, HTTP_INTERCEPTORS } from '@angular/common/http';
4
- import { tap, finalize, startWith } from 'rxjs/operators';
5
- import { interval } from 'rxjs';
4
+ import { finalize, interval, startWith, tap as tap$1 } from 'rxjs';
5
+ import { tap } from 'rxjs/operators';
6
6
  import { NavigationStart, NavigationEnd, NavigationCancel, Router } from '@angular/router';
7
7
 
8
8
  var RequestMask;
@@ -23,7 +23,7 @@ const TRACE_TYPE_REST_REQUEST_CALLBACK = '121';
23
23
  const TRACE_TYPE_HTTP_REQUEST_STAGE = '220';
24
24
  const TRACE_TYPE_USER_ACTION = '300';
25
25
  function dateNow() {
26
- return Date.now() / 1000;
26
+ return Date.now() / 1_000;
27
27
  }
28
28
 
29
29
  const eventTarget = new EventTarget();
@@ -93,52 +93,75 @@ function requirePostitiveValue(v, name, defaultValue) {
93
93
  }
94
94
  throw new Error(`bad value ${name}=${v} <= 0`);
95
95
  }
96
- function require(v, name) {
96
+ function require$1(v, name) {
97
97
  if (v != undefined) {
98
98
  return v;
99
99
  }
100
100
  throw new Error(`${name} property is required`);
101
101
  }
102
102
  function adaptedConfig(conf) {
103
- var _a, _b, _c, _d, _e, _f, _g, _h, _j;
104
- return Object.assign(Object.assign({}, conf), { scheduling: Object.assign(Object.assign({}, conf.scheduling), { interval: ((_a = conf.scheduling) === null || _a === void 0 ? void 0 : _a.interval) && conf.scheduling.interval / 1000 }), monitoring: Object.assign(Object.assign({}, conf.monitoring), { additionalProperties: String(conf.additionalProperties), name: String(conf.name), version: String(conf.version), env: String(conf.env), user: String(conf.user), httpRoute: Object.assign(Object.assign({}, (_b = conf.monitoring) === null || _b === void 0 ? void 0 : _b.httpRoute), { excludes: {
105
- path: ((_e = (_d = (_c = conf === null || conf === void 0 ? void 0 : conf.monitoring) === null || _c === void 0 ? void 0 : _c.httpRoute) === null || _d === void 0 ? void 0 : _d.excludes) === null || _e === void 0 ? void 0 : _e.path).map(r => r.source)
106
- } }) }), tracing: Object.assign(Object.assign({}, conf.tracing), { remote: Object.assign(Object.assign({}, (_f = conf.tracing) === null || _f === void 0 ? void 0 : _f.remote), { '@type': TRACE_TYPE_COLLECTOR_CONFIGURATION, retentionMaxAge: ((_j = (_h = (_g = conf.tracing) === null || _g === void 0 ? void 0 : _g.remote) === null || _h === void 0 ? void 0 : _h.retentionMaxAge) !== null && _j !== void 0 ? _j : 10) * 60 * 60 * 24 }) }) });
103
+ return {
104
+ ...conf,
105
+ scheduling: {
106
+ ...conf.scheduling,
107
+ interval: conf.scheduling?.interval && conf.scheduling.interval / 1000
108
+ },
109
+ monitoring: {
110
+ ...conf.monitoring,
111
+ additionalProperties: String(conf.additionalProperties),
112
+ name: String(conf.name),
113
+ version: String(conf.version),
114
+ env: String(conf.env),
115
+ user: String(conf.user),
116
+ httpRoute: {
117
+ ...conf.monitoring?.httpRoute,
118
+ excludes: {
119
+ path: (conf?.monitoring?.httpRoute?.excludes?.path).map(r => r.source)
120
+ }
121
+ }
122
+ },
123
+ tracing: {
124
+ ...conf.tracing,
125
+ remote: {
126
+ ...conf.tracing?.remote,
127
+ '@type': TRACE_TYPE_COLLECTOR_CONFIGURATION,
128
+ retentionMaxAge: (conf.tracing?.remote?.retentionMaxAge ?? 10) * 60 * 60 * 24
129
+ }
130
+ }
131
+ };
107
132
  }
108
133
  function validateAndGetConfig(conf, instanceId) {
109
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
110
- const host = matchRegex(getOrCall((_b = (_a = conf === null || conf === void 0 ? void 0 : conf.tracing) === null || _a === void 0 ? void 0 : _a.remote) === null || _b === void 0 ? void 0 : _b.host), "host", HOST_PATERN);
134
+ const host = matchRegex(getOrCall(conf?.tracing?.remote?.host), "host", HOST_PATERN);
111
135
  return {
112
- user: conf === null || conf === void 0 ? void 0 : conf.user,
113
- queueCapacity: requirePostitiveValue(getOrCall((_c = conf === null || conf === void 0 ? void 0 : conf.tracing) === null || _c === void 0 ? void 0 : _c.queueCapacity), "queueCapacity", 1000),
114
- interval: requirePostitiveValue(getOrCall((_d = conf === null || conf === void 0 ? void 0 : conf.scheduling) === null || _d === void 0 ? void 0 : _d.interval), "interval", 60000),
136
+ user: conf?.user,
137
+ queueCapacity: requirePostitiveValue(getOrCall(conf?.tracing?.queueCapacity), "queueCapacity", 1000),
138
+ interval: requirePostitiveValue(getOrCall(conf?.scheduling?.interval), "interval", 60000),
115
139
  instanceApi: new URL('v4/trace/instance', host).href,
116
140
  sessionApi: new URL(`v4/trace/instance/${instanceId}/session`, host).href,
117
- exclude: getOrCall((_g = (_f = (_e = conf === null || conf === void 0 ? void 0 : conf.monitoring) === null || _e === void 0 ? void 0 : _e.httpRoute) === null || _f === void 0 ? void 0 : _f.excludes) === null || _g === void 0 ? void 0 : _g.path) || [],
118
- hostExcludes: ((_k = (_j = (_h = conf === null || conf === void 0 ? void 0 : conf.monitoring) === null || _h === void 0 ? void 0 : _h.httpRequest) === null || _j === void 0 ? void 0 : _j.excludes) === null || _k === void 0 ? void 0 : _k.host) || [],
141
+ exclude: getOrCall(conf?.monitoring?.httpRoute?.excludes?.path) || [],
142
+ hostExcludes: conf?.monitoring?.httpRequest?.excludes?.host || [],
119
143
  debugMode: !!conf.debugMode,
120
- analytics: !!((_m = (_l = conf === null || conf === void 0 ? void 0 : conf.monitoring) === null || _l === void 0 ? void 0 : _l.analytics) === null || _m === void 0 ? void 0 : _m.enabled),
121
- resources: !!((_p = (_o = conf === null || conf === void 0 ? void 0 : conf.monitoring) === null || _o === void 0 ? void 0 : _o.resources) === null || _p === void 0 ? void 0 : _p.enabled),
122
- storage: !!((_r = (_q = conf === null || conf === void 0 ? void 0 : conf.monitoring) === null || _q === void 0 ? void 0 : _q.storage) === null || _r === void 0 ? void 0 : _r.enabled),
144
+ analytics: !!conf?.monitoring?.analytics?.enabled,
145
+ resources: !!conf?.monitoring?.resources?.enabled,
146
+ storage: !!conf?.monitoring?.storage?.enabled,
123
147
  enabled: !!conf.enabled
124
148
  };
125
149
  }
126
150
  function createInstance(conf, instanceId) {
127
- var _a;
128
151
  return {
129
152
  id: instanceId,
130
153
  instant: dateNow(),
131
- name: require(getOrCall(conf === null || conf === void 0 ? void 0 : conf.name), 'configuration.name'),
132
- version: getOrCall(conf === null || conf === void 0 ? void 0 : conf.version),
133
- address: getClientID(),
134
- env: require(getOrCall(conf === null || conf === void 0 ? void 0 : conf.env), 'env'),
154
+ name: require$1(getOrCall(conf?.name), 'configuration.name'),
155
+ version: getOrCall(conf?.version),
156
+ address: getClientID(), //server side
157
+ env: require$1(getOrCall(conf?.env), 'env'),
135
158
  os: detectOs(),
136
159
  re: detectBrowser(),
137
- user: undefined,
160
+ user: undefined, // cannot get user
138
161
  type: "CLIENT",
139
162
  collector: "inspect-ng-collector-1.3.2-beta.1",
140
163
  resource: { maxHeap: (('memory' in performance) && performance.memory.jsHeapSizeLimit / (1024 * 1024)) || undefined },
141
- additionalProperties: (_a = conf === null || conf === void 0 ? void 0 : conf.additionalProperties) === null || _a === void 0 ? void 0 : _a.call(conf),
164
+ additionalProperties: conf?.additionalProperties?.(),
142
165
  configuration: adaptedConfig(conf)
143
166
  };
144
167
  }
@@ -236,11 +259,10 @@ class SessionManager {
236
259
  this.currentSessionCallBack = undefined;
237
260
  }
238
261
  updateSession() {
239
- var _a;
240
262
  if (this.currentSession) {
241
263
  this.currentSession.name = document.title; // add settimeout
242
264
  this.currentSession.location = document.URL;
243
- if (!((_a = this._techConfig.exclude) === null || _a === void 0 ? void 0 : _a.some((e) => { var _a; return e.test((_a = this.currentSession) === null || _a === void 0 ? void 0 : _a.location); }))) {
265
+ if (!this._techConfig.exclude?.some((e) => e.test(this.currentSession?.location))) {
244
266
  dispatchTraces(this.currentSession);
245
267
  }
246
268
  this.currentSession = undefined;
@@ -311,9 +333,23 @@ class RestRequestMonitor {
311
333
  this.id = crypto.randomUUID();
312
334
  }
313
335
  preProcess(restRequest) {
314
- const url = new URL(restRequest.urlWithParams, window.location.origin); //TDO check & remove toHref(restRequest.urlWithParams)
336
+ const url = new URL(restRequest.urlWithParams, globalThis.location.origin);
315
337
  const auth_user = extractAuthSchemeAnduser(restRequest.headers);
316
- dispatchTraces(Object.assign(Object.assign({}, SessionManager.instance.initRestRequest(RequestMask.REST)), { "@type": TRACE_TYPE_REST_REQUEST, id: this.id, method: restRequest.method, protocol: url.protocol.slice(0, -1), host: url.hostname, port: url.port ? Number(url.port) : 0, path: url.pathname, query: url.search.slice(1, url.search.length), contentType: restRequest.responseType, authScheme: auth_user.authScheme, user: auth_user.user, dataSize: sizeOf(restRequest.body), start: this.start }));
338
+ dispatchTraces({ ...SessionManager.instance.initRestRequest(RequestMask.REST),
339
+ "@type": TRACE_TYPE_REST_REQUEST,
340
+ id: this.id,
341
+ method: restRequest.method,
342
+ protocol: url.protocol.slice(0, -1),
343
+ host: url.hostname,
344
+ port: url.port ? Number(url.port) : 0,
345
+ path: url.pathname,
346
+ query: url.search.slice(1, url.search.length),
347
+ contentType: restRequest.responseType,
348
+ authScheme: auth_user.authScheme,
349
+ user: auth_user.user,
350
+ dataSize: sizeOf(restRequest.body),
351
+ start: this.start,
352
+ });
317
353
  }
318
354
  postProcess(response, error) {
319
355
  const end = dateNow();
@@ -348,7 +384,7 @@ class RestRequestMonitor {
348
384
  dispatchTraces(callback, {
349
385
  "@type": TRACE_TYPE_HTTP_REQUEST_STAGE,
350
386
  name: "PROCESS",
351
- start: this.start,
387
+ start: this.start, // use request
352
388
  end: end,
353
389
  order: 0,
354
390
  exception: exception,
@@ -357,31 +393,37 @@ class RestRequestMonitor {
357
393
  }
358
394
  }
359
395
  function assertSessionID(id, headers) {
360
- return (headers === null || headers === void 0 ? void 0 : headers.get(TRACE_HEADER)) == id;
396
+ return headers?.get(TRACE_HEADER) == id;
361
397
  }
362
398
  function extractAuthSchemeAnduser(headers) {
363
- var _a;
364
- const scheme = headers.has('authorization') && ((_a = headers.get('authorization').match(/^(\w+) /)) === null || _a === void 0 ? void 0 : _a.at(1));
399
+ const authHeader = headers?.get('authorization');
400
+ if (!authHeader) {
401
+ return { authScheme: null, user: null };
402
+ }
403
+ const [scheme, credentials] = authHeader.split(' ');
404
+ if (!scheme || !credentials || !['Basic', 'Bearer'].includes(scheme)) {
405
+ return { authScheme: null, user: null };
406
+ }
365
407
  return {
366
408
  authScheme: scheme,
367
- user: scheme !== null && scheme !== void 0 ? scheme : extractUser(scheme, headers.get('authorization').split(" ")[1])
409
+ user: extractUser(scheme, credentials) ?? null
368
410
  };
369
411
  }
370
412
  function extractUser(scheme, authorization) {
371
413
  try {
372
414
  switch (scheme) {
373
- case "Basic": return atob(authorization).toString().split(':')[0];
415
+ case "Basic":
416
+ return atob(authorization).split(':')[0] || undefined;
374
417
  case "Bearer": {
375
- const parts = authorization.split('.');
376
- if (parts.length == 3) {
377
- return JSON.parse(atob(parts[1]).toString()).sub; //TODO regex .match(/^\w+\.\w+\.(\w+) /)?.at(1)
418
+ const payloadMatch = authorization.match(/^[^.]+\.([^.]+)\.[^.]+$/);
419
+ if (payloadMatch?.[1]) {
420
+ return JSON.parse(atob(payloadMatch[1])).sub;
378
421
  }
379
- dispatchReport('extractUser', `Invalid Bearer token format: expected 3 parts, got ${parts.length}`);
422
+ dispatchReport('extractUser', 'Invalid Bearer token format');
380
423
  return undefined;
381
424
  }
382
- default: {
425
+ default:
383
426
  dispatchReport('extractUser', `Unknown auth scheme: ${scheme}`);
384
- }
385
427
  }
386
428
  }
387
429
  catch (e) {
@@ -391,7 +433,7 @@ function extractUser(scheme, authorization) {
391
433
  }
392
434
  function extractContentType(headers) {
393
435
  try {
394
- if (headers === null || headers === void 0 ? void 0 : headers.has('Content-Type')) {
436
+ if (headers?.has('Content-Type')) {
395
437
  return headers.get('Content-Type');
396
438
  }
397
439
  }
@@ -418,11 +460,10 @@ class HttpInterceptorService {
418
460
  this.techConfig = techConfig;
419
461
  }
420
462
  intercept(req, next) {
421
- var _a;
422
463
  const monitor = new RestRequestMonitor();
423
464
  monitor.preProcess(req);
424
465
  const host = new URL(req.url, window.location.origin).host;
425
- if (!((_a = this.techConfig.hostExcludes) === null || _a === void 0 ? void 0 : _a.some((e) => e == host))) { // exclude les hôtes qui ne permet pas la modification des headers
466
+ if (!this.techConfig.tech.hostExcludes?.some((e) => e == host)) { // exclude les hôtes qui ne permet pas la modification des headers
426
467
  req = req.clone({ headers: req.headers.set(TRACE_HEADER, monitor.id) });
427
468
  }
428
469
  let response = null;
@@ -450,23 +491,23 @@ class HttpInterceptorService {
450
491
  monitor.postProcess(response, error);
451
492
  }));
452
493
  }
494
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: HttpInterceptorService, deps: [{ token: COLLECTOR_CONFIG$1 }], target: i0.ɵɵFactoryTarget.Injectable }); }
495
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: HttpInterceptorService, providedIn: 'root' }); }
453
496
  }
454
- HttpInterceptorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: HttpInterceptorService, deps: [{ token: COLLECTOR_CONFIG$1 }], target: i0.ɵɵFactoryTarget.Injectable });
455
- HttpInterceptorService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: HttpInterceptorService, providedIn: 'root' });
456
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: HttpInterceptorService, decorators: [{
497
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: HttpInterceptorService, decorators: [{
457
498
  type: Injectable,
458
499
  args: [{ providedIn: 'root' }]
459
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
500
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
460
501
  type: Inject,
461
502
  args: [COLLECTOR_CONFIG$1]
462
- }] }]; } });
503
+ }] }] });
463
504
 
464
505
  class GlobalErrorHandler {
465
506
  handleError(error) {
466
507
  try {
467
508
  SessionManager.instance.addException({
468
- type: error === null || error === void 0 ? void 0 : error.name,
469
- message: error === null || error === void 0 ? void 0 : error.message
509
+ type: error?.name,
510
+ message: error?.message
470
511
  });
471
512
  }
472
513
  catch (e) {
@@ -474,10 +515,10 @@ class GlobalErrorHandler {
474
515
  }
475
516
  throw error;
476
517
  }
518
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: GlobalErrorHandler, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
519
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: GlobalErrorHandler, providedIn: 'root' }); }
477
520
  }
478
- GlobalErrorHandler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GlobalErrorHandler, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
479
- GlobalErrorHandler.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GlobalErrorHandler, providedIn: 'root' });
480
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GlobalErrorHandler, decorators: [{
521
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: GlobalErrorHandler, decorators: [{
481
522
  type: Injectable,
482
523
  args: [{ providedIn: 'root' }]
483
524
  }] });
@@ -493,7 +534,7 @@ class EventTraceScheduledDispatcherService {
493
534
  this.wasDestroyed = false;
494
535
  this.subscription = interval(_techConfig.interval)
495
536
  .pipe(startWith(0))
496
- .pipe(tap(() => {
537
+ .pipe(tap$1(() => {
497
538
  if (!this.dispatching && !this.wasDestroyed && this.instance) {
498
539
  this.dispatching = true;
499
540
  dispatchExport();
@@ -509,7 +550,7 @@ class EventTraceScheduledDispatcherService {
509
550
  }
510
551
  appendTrace(events) {
511
552
  if (!this.wasDestroyed) {
512
- events === null || events === void 0 ? void 0 : events.forEach(event => this.traceQueue.push(event));
553
+ events?.forEach(event => this.traceQueue.push(event));
513
554
  }
514
555
  }
515
556
  trace(instance) {
@@ -555,7 +596,7 @@ class EventTraceScheduledDispatcherService {
555
596
  return traces; //retry on bad request !?
556
597
  }
557
598
  return res.json()
558
- .then(body => (body === null || body === void 0 ? void 0 : body.retry) ? traces : EMPTY_ARRAY)
599
+ .then(body => body?.retry ? traces : EMPTY_ARRAY)
559
600
  .catch(() => EMPTY_ARRAY);
560
601
  })
561
602
  .catch(() => {
@@ -587,8 +628,7 @@ class EventTraceScheduledDispatcherService {
587
628
  }
588
629
  }
589
630
  destroy() {
590
- var _a;
591
- (_a = this.subscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
631
+ this.subscription?.unsubscribe();
592
632
  this.wasDestroyed = true;
593
633
  dispatchExport(); //last metric ??
594
634
  this.dispatchTraces(true);
@@ -637,13 +677,18 @@ function lookUpChild(t, depth) {
637
677
  return true;
638
678
  }
639
679
  function addActionUser(eventType, target) {
640
- var _a;
641
- dispatchTraces(Object.assign(Object.assign({}, SessionManager.instance.initUserAction()), { '@type': TRACE_TYPE_USER_ACTION, type: eventType, instant: dateNow(), name: extractName(target), nodeName: (_a = target.tagName) === null || _a === void 0 ? void 0 : _a.toLowerCase() }));
680
+ dispatchTraces({
681
+ ...SessionManager.instance.initUserAction(),
682
+ '@type': TRACE_TYPE_USER_ACTION,
683
+ type: eventType,
684
+ instant: dateNow(),
685
+ name: extractName(target),
686
+ nodeName: target.tagName?.toLowerCase()
687
+ });
642
688
  }
643
689
  function getFirst(c, t) {
644
- var _a;
645
690
  for (const o of c) {
646
- let r = (_a = o(t)) === null || _a === void 0 ? void 0 : _a.trim();
691
+ let r = o(t)?.trim();
647
692
  if (r) {
648
693
  return r;
649
694
  }
@@ -659,7 +704,7 @@ function extractName(t) {
659
704
  if (c) {
660
705
  name = getFirst(c, t);
661
706
  }
662
- return name !== null && name !== void 0 ? name : getFirst(genericMap, t);
707
+ return name ?? getFirst(genericMap, t);
663
708
  }
664
709
  }
665
710
  catch (err) {
@@ -749,7 +794,7 @@ const COLLECTOR_CONFIG = new InjectionToken('COLLECTOR_CONFIG');
749
794
  class NgCollectorModule {
750
795
  static forRoot(configuration) {
751
796
  const providers = [];
752
- if (configuration === null || configuration === void 0 ? void 0 : configuration.enabled) {
797
+ if (configuration?.enabled) {
753
798
  try {
754
799
  let config = initializeCollector(configuration);
755
800
  providers.push({ provide: COLLECTOR_CONFIG, useValue: config }, { provide: APP_INITIALIZER, useFactory: initializeEventsFactory, deps: [COLLECTOR_CONFIG, Router], multi: true }, { provide: HTTP_INTERCEPTORS, useClass: HttpInterceptorService, deps: [COLLECTOR_CONFIG], multi: true }, { provide: ErrorHandler, useClass: GlobalErrorHandler });
@@ -760,11 +805,11 @@ class NgCollectorModule {
760
805
  }
761
806
  return { ngModule: NgCollectorModule, providers: providers };
762
807
  }
808
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: NgCollectorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
809
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.25", ngImport: i0, type: NgCollectorModule }); }
810
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: NgCollectorModule }); }
763
811
  }
764
- NgCollectorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NgCollectorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
765
- NgCollectorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NgCollectorModule });
766
- NgCollectorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NgCollectorModule });
767
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NgCollectorModule, decorators: [{
812
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: NgCollectorModule, decorators: [{
768
813
  type: NgModule
769
814
  }] });
770
815
  function initializeEventsFactory(config, router) {
@@ -807,8 +852,15 @@ class LocalRequestMonitor {
807
852
  this.id = crypto.randomUUID();
808
853
  }
809
854
  preProcess(propertyKey, target) {
810
- var _a, _b, _c;
811
- dispatchTraces(Object.assign(Object.assign({}, (_a = WIN["inspect-session-manager"]) === null || _a === void 0 ? void 0 : _a.initRestRequest(RequestMask.LOCAL)), { "@type": TRACE_TYPE_LOCAL_REQUEST, id: this.id, name: propertyKey, location: target.constructor.name, user: (_c = (_b = WIN["inspect-session-manager"]) === null || _b === void 0 ? void 0 : _b.currentSession) === null || _c === void 0 ? void 0 : _c.user, start: this.start }));
855
+ dispatchTraces({
856
+ ...WIN["inspect-session-manager"]?.initRestRequest(RequestMask.LOCAL),
857
+ "@type": TRACE_TYPE_LOCAL_REQUEST,
858
+ id: this.id,
859
+ name: propertyKey,
860
+ location: target.constructor.name,
861
+ user: WIN["inspect-session-manager"]?.currentSession?.user, //bad access
862
+ start: this.start
863
+ });
812
864
  }
813
865
  postProcess(exception) {
814
866
  dispatchTraces({
@@ -867,4 +919,4 @@ function resolveException(e) {
867
919
  */
868
920
 
869
921
  export { NgCollectorModule, TraceableStage, initializeCollector, initializeEventsFactory, reloadCollector, resolveException, sessionlogger };
870
- //# sourceMappingURL=oneteme-inspect-ng-collector.js.map
922
+ //# sourceMappingURL=oneteme-inspect-ng-collector.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oneteme-inspect-ng-collector.mjs","sources":["../../../../projects/oneteme/inspect-ng-collector/src/lib/trace.model.ts","../../../../projects/oneteme/inspect-ng-collector/src/lib/event-bus.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/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/user-action.monitor.ts","../../../../projects/oneteme/inspect-ng-collector/src/lib/navigation.monitor.ts","../../../../projects/oneteme/inspect-ng-collector/src/lib/resource-usage.monitor.ts","../../../../projects/oneteme/inspect-ng-collector/src/lib/ng-collector.module.ts","../../../../projects/oneteme/inspect-ng-collector/src/lib/local-request.monitor.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":["type InstantType = \"SERVER\" | \"CLIENT\";\ntype MainSessionType = \"VIEW\" | \"BATCH\" | \"STARTUP\";\n\nexport type LogLevel = \"INFO\" | \"WARN\" | \"ERROR\" | \"REPORT\";\nexport type UUID = `${string}-${string}-${string}-${string}-${string}`;\n\nexport enum RequestMask { LOCAL = 1, REST = 4 }\n\nexport const TRACE_TYPE_LOG = '00';\nexport const TRACE_TYPE_RESOURCE_USAGE = '01';\nexport const TRACE_TYPE_COLLECTOR_CONFIGURATION = '02';\nexport const TRACE_TYPE_SESSION_MASK_UPDATE = '03';\nexport const TRACE_TYPE_MAIN_SESSION = '10';\nexport const TRACE_TYPE_MAIN_SESSION_CALLBACK = '11';\nexport const TRACE_TYPE_LOCAL_REQUEST = '110';\nexport const TRACE_TYPE_LOCAL_REQUEST_CALLBACK = '111';\nexport const TRACE_TYPE_REST_REQUEST = '120';\nexport const TRACE_TYPE_REST_REQUEST_CALLBACK = '121';\nexport const TRACE_TYPE_HTTP_REQUEST_STAGE = '220';\nexport const TRACE_TYPE_USER_ACTION = '300';\n\n\nexport function dateNow() {\n return Date.now() / 1_000;\n}\n\nexport interface InstanceEnvironment {\n id: string;\n name?: string;\n address?: string;\n version?: string;\n env?: string;\n os?: string;\n re?: string;\n user?: string;\n type?: InstantType;\n instant?: number;\n collector?: string;\n resource: MachineResource;\n additionalProperties?: { [key: string]: any };\n configuration?: { [key: string]: any };\n}\n\nexport interface EventTrace { }\n\nexport interface MainSession extends EventTrace {\n '@type': typeof TRACE_TYPE_MAIN_SESSION;\n id: UUID;\n type: MainSessionType;\n name?: string;\n location: string;\n user?: string;\n start: number;\n requestMask: number;\n}\n\nexport interface MainSessionCallBack extends EventTrace {\n '@type': typeof TRACE_TYPE_MAIN_SESSION_CALLBACK;\n id: UUID;\n end?: number;\n requestMask: number;\n exception?: ExceptionInfo; // make a list ?\n}\n\nexport interface SessionMaskUpdate {\n '@type': typeof TRACE_TYPE_SESSION_MASK_UPDATE;\n id: UUID;\n main: boolean;\n mask: number;\n}\n\nexport interface RestRequest extends EventTrace {\n '@type': typeof TRACE_TYPE_REST_REQUEST;\n id: UUID;\n method: string;\n protocol: string;\n host: string;\n port: number;\n path: string;\n query: string;\n contentType?: string;\n authScheme?: string;\n dataSize: number;\n user?: string;\n start: number;\n sessionId?: UUID;\n}\n\nexport interface RestRequestCallBack extends EventTrace {\n '@type': typeof TRACE_TYPE_REST_REQUEST_CALLBACK;\n id: UUID;\n status?: number;\n end?: number;\n dataSize?: number;\n linked?: boolean;\n contentType?: string;\n bodyContent?: string;\n}\n\nexport interface HttpRequestStage extends EventTrace {\n '@type': typeof TRACE_TYPE_HTTP_REQUEST_STAGE;\n name: string;\n start: number;\n end?: number;\n exception?: ExceptionInfo;\n requestId: string;\n}\n\nexport interface LocalRequest extends EventTrace {\n '@type': typeof TRACE_TYPE_LOCAL_REQUEST;\n id: UUID;\n name: string;\n location: string;\n user?: string;\n start: number;\n sessionId: UUID;\n}\n\nexport interface LocalRequestCallBack extends EventTrace {\n '@type': typeof TRACE_TYPE_LOCAL_REQUEST_CALLBACK;\n id: UUID;\n end: number;\n exception?: ExceptionInfo;\n}\n\nexport interface ExceptionInfo {\n type?: string;\n message?: string;\n}\n\nexport interface UserAction extends EventTrace {\n '@type': typeof TRACE_TYPE_USER_ACTION;\n type: string;\n instant: number;\n name: string | null;\n nodeName: string;\n sessionId: string;\n}\n\nexport interface LogEntry extends EventTrace {\n '@type': typeof TRACE_TYPE_LOG;\n instant: number;\n level: LogLevel;\n message: string;\n sessionId?: UUID;\n}\n\nexport interface MachineResource extends EventTrace {\n maxHeap?: number;\n}\n\nexport interface MachineRessourceUsage extends EventTrace {\n '@type': typeof TRACE_TYPE_RESOURCE_USAGE;\n instant: number;\n commitedHeap: number;\n usedHeap: number;\n}\n","import { dateNow, EventTrace, LogLevel, LogEntry, TRACE_TYPE_LOG } from \"./trace.model\";\n\nconst eventTarget = new EventTarget();\nconst TRACE = 'trace', EXPORT = 'export', SHUTDOWN = 'shutdown', RELOAD = 'reload';\n\nexport const WIN: any = window;\n\nexport function dispatchReport(message: string, error?: any) : void {\n dispatchLog(\"REPORT\", `${message} ${error && JSON.stringify(error)}`)\n}\n\nexport function dispatchLog(level: LogLevel, message: string, sessionId?: string) {\n dispatchTraces({\n \"@type\": TRACE_TYPE_LOG,\n level: level,\n message: message,\n instant: dateNow(),\n sessionId: sessionId\n } as LogEntry);\n}\n\nexport function dispatchTraces(...traces: EventTrace[]): void {\n eventTarget.dispatchEvent(new CustomEvent(TRACE, { detail: { traces } }));\n}\n\nexport function dispatchExport(): void {\n eventTarget.dispatchEvent(new CustomEvent(EXPORT));\n}\n\nexport function dispatchReload(): void {\n eventTarget.dispatchEvent(new CustomEvent(RELOAD));\n}\n\nexport function dispatchShutown(): void {\n eventTarget.dispatchEvent(new CustomEvent(SHUTDOWN));\n}\n\nexport function addTraceListener(fn : EventListener): void {\n eventTarget.addEventListener(TRACE, fn);\n}\n\nexport function addExportListener(fn : EventListener): void {\n eventTarget.addEventListener(EXPORT, fn);\n}\n\nexport function addReloadListener(fn : EventListener): void {\n eventTarget.addEventListener(RELOAD, fn);\n}\n\nexport function addShutdownListener(fn : EventListener): void {\n eventTarget.addEventListener(SHUTDOWN, fn);\n}\n","import {dateNow, InstanceEnvironment, TRACE_TYPE_COLLECTOR_CONFIGURATION} from \"./trace.model\";\nimport {dispatchReport} from \"./event-bus\";\n\ntype Provider<T> = T | (() => T);\n\nconst HOST_PATERN = /https?:\\/\\/[\\w\\-.]+(:\\d{2,5})?\\/?/;\n\nexport interface CollectorConfig {\n enabled?: boolean; // default: false\n debugMode?: boolean;\n name: Provider<string>;\n version?: Provider<string>;\n env?: Provider<string>;\n user?: Provider<string>;\n additionalProperties?: ()=> {[key:string]: any};\n scheduling?: {\n interval?: number; // default: '60s'\n };\n monitoring?: {\n httpRoute?: {\n excludes?: {\n path?: Provider<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 };\n tracing?: {\n queueCapacity?: number; // default: 1000\n remote?: {\n '@type'?: string;\n mode?: string; // default: null\n host?: string; // default: 'localhost'\n retentionMaxAge?: number; // default: '30'\n };\n };\n\n}\n\nexport interface TechnicalConf {\n user?: Provider<string>;\n queueCapacity: 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\nexport function getOrCall<T>(o?: Provider<T>): T | undefined {\n return typeof o === \"function\" ? (o as () => T)() : o;\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.additionalProperties),\n name: String(conf.name),\n version: String(conf.version),\n env: String(conf.env),\n user: String(conf.user),\n httpRoute: {\n ...conf.monitoring?.httpRoute,\n excludes: {\n path: (conf?.monitoring?.httpRoute?.excludes?.path as RegExp[]).map(r => r.source)\n }\n }\n },\n tracing: {\n ...conf.tracing,\n remote: {\n ...conf.tracing?.remote,\n '@type': TRACE_TYPE_COLLECTOR_CONFIGURATION,\n retentionMaxAge : (conf.tracing?.remote?.retentionMaxAge ?? 10) * 60 * 60 * 24\n }\n }\n }\n}\n\nexport function validateAndGetConfig(conf: CollectorConfig, instanceId: string) : TechnicalConf {\n const host = matchRegex(getOrCall<string>(conf?.tracing?.remote?.host), \"host\", HOST_PATERN);\n return {\n user: conf?.user,\n queueCapacity: requirePostitiveValue(getOrCall<number>(conf?.tracing?.queueCapacity), \"queueCapacity\", 1000),\n interval: requirePostitiveValue(getOrCall<number>(conf?.scheduling?.interval), \"interval\", 60000),\n instanceApi: new URL('v4/trace/instance', host).href,\n sessionApi : new URL(`v4/trace/instance/${instanceId}/session`, host).href,\n exclude: getOrCall<RegExp[]>(conf?.monitoring?.httpRoute?.excludes?.path) || [],\n hostExcludes: conf?.monitoring?.httpRequest?.excludes?.host || [],\n debugMode: !!conf.debugMode,\n analytics: !!conf?.monitoring?.analytics?.enabled,\n resources: !!conf?.monitoring?.resources?.enabled,\n storage: !!conf?.monitoring?.storage?.enabled,\n enabled: !!conf.enabled\n }\n}\n\nexport function createInstance(conf: CollectorConfig, instanceId: string): InstanceEnvironment {\n return {\n id: instanceId,\n instant: dateNow(),\n name: require(getOrCall<string>(conf?.name), 'configuration.name'),\n version: getOrCall<string>(conf?.version),\n address: getClientID(), //server side\n env: require(getOrCall<string>(conf?.env), 'env'),\n os: detectOs(),\n re: detectBrowser(),\n user: undefined, // cannot get user\n type: \"CLIENT\",\n collector: \"inspect-ng-collector-1.3.2-beta.1\",\n resource: { maxHeap: (('memory' in performance) && (performance as any).memory.jsHeapSizeLimit / (1024 * 1024)) || undefined },\n additionalProperties: conf?.additionalProperties?.(),\n configuration: adaptedConfig(conf)\n }\n}\n\nfunction getClientID() {\n let cid = localStorage.getItem(\"jarvis.inspect.cid\");\n if (!cid) {\n localStorage.setItem(\"jarvis.inspect.cid\", cid = crypto.randomUUID());\n }\n return cid;\n}\n\nfunction detectOs() {\n try {\n let versionMatch, version;\n const agent = globalThis.navigator.userAgent.toLowerCase() //TODO see also https://developer.mozilla.org/en-US/docs/Web/API/Navigator/userAgentData\n switch (true) {\n case (/windows/.test(agent)):\n versionMatch = /windows nt (\\d+\\.\\d+)/.exec(agent);\n version = versionMatch ? versionMatch[1] : '?';\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] : '?';\n return `MacOs ${version}`\n }\n }\n catch (e) {\n dispatchReport(\"detectOs\", e) ;\n }\n return undefined;\n}\n\nfunction detectBrowser() {\n try {\n const agent = globalThis.navigator.userAgent.toLowerCase()\n switch (true) {\n case agent.includes('edg'):\n return 'Edge';\n case agent.includes('opr'):\n return 'Opera';\n case agent.includes('chrome'):\n return 'Chrome';\n case agent.includes('firefox'):\n return 'Firefox';\n case agent.includes('safari'):\n return 'Safari';\n case agent.includes('msie'):\n return 'IE';\n }\n }\n catch (e) {\n dispatchReport(\"detectBrowser\", e)\n }\n return undefined;\n}\n\nexport function refreshConfig(id: string, tech: TechnicalConf) {\n const uuidRegex = /[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/i;\n tech.sessionApi = tech.sessionApi.replace(uuidRegex, id);\n return id;\n}\n","import { dispatchTraces, dispatchReport, WIN, dispatchLog } from './event-bus';\nimport {\n dateNow,\n LogLevel,\n MainSession,\n MainSessionCallBack,\n RequestMask,\n SessionMaskUpdate,\n TRACE_TYPE_MAIN_SESSION,\n TRACE_TYPE_MAIN_SESSION_CALLBACK,\n TRACE_TYPE_SESSION_MASK_UPDATE\n} from \"./trace.model\";\nimport {getOrCall, TechnicalConf} from \"./configuration\";\n\nexport class SessionManager {\n\n static _instance: SessionManager;\n constructor(private readonly _techConfig: TechnicalConf) {\n }\n\n currentSession?: MainSession;\n currentSessionCallBack?: MainSessionCallBack;\n\n static get instance(): SessionManager {\n return SessionManager._instance;\n }\n\n navigate(url?: string) {\n const now = dateNow();\n this.endSession(now);\n if (url) {\n const id = crypto.randomUUID();\n this.currentSession = {\n '@type': TRACE_TYPE_MAIN_SESSION,\n id: id,\n type: \"VIEW\",\n user: getOrCall<string>(this._techConfig.user),\n start: now,\n location: url,\n requestMask: 0,\n };\n this.currentSessionCallBack = {\n '@type': TRACE_TYPE_MAIN_SESSION_CALLBACK,\n id: id,\n requestMask: 0,\n }\n }\n }\n\n private endSession(end : number){\n this.getCurrentSessionCallBack(call =>{\n call.end = end;\n dispatchTraces(call);\n });\n this.currentSessionCallBack = undefined;\n }\n\n updateSession() {\n if (this.currentSession) {\n this.currentSession.name = document.title; // add settimeout\n this.currentSession.location = document.URL;\n if (!this._techConfig.exclude?.some((e: any) => e.test(this.currentSession?.location))) {\n dispatchTraces(this.currentSession)\n }\n this.currentSession = undefined;\n }\n else{\n dispatchReport('updateSession', 'no active session');\n }\n }\n\n getCurrentSessionCallBack(fn: (s: MainSessionCallBack) => any) {\n if (this.currentSessionCallBack) {\n return fn(this.currentSessionCallBack);\n }\n dispatchReport('getCurrentSessionCallBack', 'no active session');\n return undefined;\n }\n\n currentSessionID(): string | undefined {\n return this.getCurrentSessionCallBack(s=> s.id);\n }\n\n initRestRequest(mask: RequestMask){\n const req = this.getCurrentSessionCallBack(s=>{\n if ((s.requestMask & mask) !== mask) {\n s.requestMask |= mask;\n dispatchTraces({\n \"@type\": TRACE_TYPE_SESSION_MASK_UPDATE,\n id: s.id,\n main: true,\n mask: s.requestMask\n } as SessionMaskUpdate);\n }\n return {sessionId:s.id};\n });\n return req || {};\n }\n\n initUserAction(){\n const req = this.getCurrentSessionCallBack(s=> ({sessionId:s.id}));\n return req || {};\n }\n\n addException(exception: any) {\n this.getCurrentSessionCallBack(s => s.exception = exception)\n }\n\n info(message: string) {\n this.log(\"INFO\", message);\n }\n\n warn(message: string) {\n this.log(\"WARN\", message);\n }\n\n error(message: string) {\n this.log(\"ERROR\", message);\n }\n\n private log(level: LogLevel, message: string){\n if (message) {\n this.getCurrentSessionCallBack(s=> dispatchLog(level, message, s.id));\n }\n }\n}\n\nexport function sessionlogger(): SessionManager {\n return SessionManager.instance;\n}\n\nexport function sessionManager(tech: TechnicalConf){\n SessionManager._instance = new SessionManager(tech);\n WIN[\"inspect-session-manager\"] = SessionManager._instance;\n}\n","import {\n dateNow,\n ExceptionInfo,\n HttpRequestStage,\n RestRequest,\n RestRequestCallBack,\n RequestMask,\n TRACE_TYPE_HTTP_REQUEST_STAGE,\n TRACE_TYPE_REST_REQUEST,\n TRACE_TYPE_REST_REQUEST_CALLBACK,\n UUID\n} from \"./trace.model\";\nimport { dispatchTraces, dispatchReport } from \"./event-bus\";\nimport { HttpErrorResponse, HttpHeaders, HttpRequest, HttpResponse, HttpResponseBase } from \"@angular/common/http\";\nimport { SessionManager } from \"./session-manager.service\";\n\nexport const TRACE_HEADER = 'x-tracert';\n\nexport class RestRequestMonitor {\n\n readonly id: UUID;\n readonly start: number;\n\n constructor() {\n this.start = dateNow();\n this.id = crypto.randomUUID();\n }\n\n preProcess(restRequest: HttpRequest<any>) {\n const url = new URL(restRequest.urlWithParams, globalThis.location.origin);\n const auth_user = extractAuthSchemeAnduser(restRequest.headers);\n dispatchTraces({...SessionManager.instance.initRestRequest(RequestMask.REST),\n \"@type\": TRACE_TYPE_REST_REQUEST,\n id: this.id,\n method: restRequest.method,\n protocol: url.protocol.slice(0, -1),\n host: url.hostname,\n port: url.port? Number(url.port) : 0,\n path: url.pathname,\n query: url.search.slice(1, url.search.length),\n contentType: restRequest.responseType,\n authScheme: auth_user.authScheme,\n user: auth_user.user,\n dataSize: sizeOf(restRequest.body),\n start: this.start,\n } as RestRequest);\n }\n\n postProcess(response: HttpResponseBase | null, error: HttpErrorResponse | null) {\n const end = dateNow();\n const callback: RestRequestCallBack = {\n \"@type\": TRACE_TYPE_REST_REQUEST_CALLBACK,\n id: this.id,\n dataSize: -1,\n linked: false,\n end: end\n }\n let status: number = 0, exception!: ExceptionInfo;\n\n // HttpResponseBase couvre à la fois HttpResponse (succès) et HttpErrorResponse (erreur HTTP)\n if (response) {\n status = response.status;\n callback.dataSize = response instanceof HttpResponse ? sizeOf(response.body) : -1;\n callback.contentType = extractContentType(response.headers);\n callback.linked = assertSessionID(this.id, response.headers);\n }\n\n // Erreur réseau/annulation\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 callback.bodyContent = JSON.stringify(error.error);\n callback.dataSize = sizeOf(error.error);\n callback.contentType = extractContentType(error.headers);\n callback.linked = assertSessionID(this.id, error.headers);\n }\n\n callback.status = status;\n dispatchTraces(callback, {\n \"@type\": TRACE_TYPE_HTTP_REQUEST_STAGE,\n name: \"PROCESS\",\n start: this.start, // use request\n end: end,\n order: 0,\n exception: exception,\n requestId: this.id\n } as HttpRequestStage);\n }\n}\n\nfunction assertSessionID(id: string, headers: HttpHeaders) { //browser cache !?\n return headers?.get(TRACE_HEADER) == id;\n}\n\nfunction extractAuthSchemeAnduser(headers: any): { user: string | null, authScheme: string | null } {\n const authHeader = headers?.get('authorization');\n if (!authHeader) {\n return { authScheme: null, user: null };\n }\n\n const [scheme, credentials] = authHeader.split(' ');\n\n if (!scheme || !credentials || !['Basic', 'Bearer'].includes(scheme)) {\n return { authScheme: null, user: null };\n }\n\n return {\n authScheme: scheme,\n user: extractUser(scheme as 'Basic' | 'Bearer', credentials) ?? null\n };\n}\n\nfunction extractUser(scheme: 'Basic' | 'Bearer', authorization: string) {\n try {\n switch (scheme) {\n case \"Basic\":\n return atob(authorization).split(':')[0] || undefined;\n case \"Bearer\": {\n const payloadMatch = authorization.match(/^[^.]+\\.([^.]+)\\.[^.]+$/);\n if (payloadMatch?.[1]) {\n return JSON.parse(atob(payloadMatch[1])).sub;\n }\n dispatchReport('extractUser', 'Invalid Bearer token format');\n return undefined;\n }\n default:\n dispatchReport('extractUser', `Unknown auth scheme: ${scheme}`);\n }\n } catch (e) {\n dispatchReport('extractUser', e);\n }\n return undefined;\n}\n\nfunction extractContentType(headers: any): string | undefined {\n try {\n if (headers?.has('Content-Type')) {\n return headers.get('Content-Type');\n }\n } catch (err) {\n dispatchReport('extractContentType', err);\n }\n return undefined;\n}\n\nfunction sizeOf(body: any): number {\n if (body) {\n try {\n return new Blob([JSON.stringify(body)]).size;\n }\n catch (e) {\n dispatchReport('sizeOf', e);\n }\n }\n return -1;\n}\n","import { Injectable, Inject, InjectionToken, Optional } from '@angular/core';\nimport { HttpInterceptor, HttpEvent, HttpHandler, HttpRequest, HttpResponse, HttpErrorResponse, HttpResponseBase } from '@angular/common/http';\nimport { finalize, Observable } from 'rxjs';\nimport { tap } from 'rxjs/operators'\nimport { RestRequestMonitor, TRACE_HEADER } from \"./rest-request.monitor\";\nimport { TechnicalConf} from \"./configuration\";\nimport { InstanceEnvironment } from \"./trace.model\";\n\nexport const COLLECTOR_CONFIG = new InjectionToken<TechnicalConf>('COLLECTOR_CONFIG');\n\n@Injectable({ providedIn: 'root' })\nexport class HttpInterceptorService implements HttpInterceptor {\n\n constructor(@Inject(COLLECTOR_CONFIG) private readonly techConfig: {tech: TechnicalConf, instance: InstanceEnvironment}) {}\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n const monitor = new RestRequestMonitor();\n monitor.preProcess(req);\n\n const host = new URL(req.url, window.location.origin).host;\n if (!this.techConfig.tech.hostExcludes?.some((e: any) => e == host)) { // exclude les hôtes qui ne permet pas la modification des headers\n req = req.clone({ headers: req.headers.set(TRACE_HEADER, monitor.id) });\n }\n\n let response: HttpResponseBase | null = null;\n let error: HttpErrorResponse | null = null;\n\n return next.handle(req).pipe(tap({\n next: (event: HttpEvent<any>) => {\n if (event instanceof HttpResponse) {\n response = event;\n }\n //todo autres types d'événements (UploadProgress, DownloadProgress, etc.) ignorés pour les traces\n },\n error: (err: HttpErrorResponse) => {\n error = err;\n }\n }),\n finalize(() => {\n // Si pas de réponse et pas d'erreur capturé, la requête a été annulée\n if (!response && !error) {\n error = new HttpErrorResponse({\n error: 'The request was cancelled before completion',\n status: 0,\n statusText: 'Cancelled',\n url: req.url\n });\n }\n monitor.postProcess(response, error);\n }));\n }\n}\n","import { ErrorHandler, Injectable } from \"@angular/core\";\nimport { SessionManager } from \"./session-manager.service\";\nimport { dispatchReport } from \"./event-bus\";\n\n@Injectable({ providedIn: 'root' })\nexport class GlobalErrorHandler implements ErrorHandler {\n\n handleError(error: any) {\n try {\n SessionManager.instance.addException({\n type: error?.name,\n message: error?.message\n })\n } catch (e) {\n dispatchReport(\"GlobalErrorHandlerService.handleError\", e);\n }\n throw error;\n }\n}\n","import { interval, startWith, tap, Subscription } from \"rxjs\";\nimport {EventTrace, InstanceEnvironment} from \"./trace.model\";\nimport { dispatchExport, addTraceListener, addShutdownListener, dispatchReport } from \"./event-bus\";\nimport {TechnicalConf} from \"./configuration\";\n\nconst EMPTY_ARRAY : EventTrace[] = <[]>Object.freeze([]);\n\nclass EventTraceScheduledDispatcherService {\n\n static _instance: EventTraceScheduledDispatcherService;\n\n readonly subscription: Subscription\n readonly traceQueue: EventTrace[] = [];\n\n dispatchAttempts: number = 0\n dispatching: boolean = false;\n instanceDispatched: boolean = false;\n wasDestroyed : boolean = false;\n\n instance?: InstanceEnvironment ;\n constructor(private readonly _techConfig: TechnicalConf) {\n this.subscription = interval(_techConfig.interval)\n .pipe(startWith(0))\n .pipe(tap(() => {\n if (!this.dispatching && !this.wasDestroyed && this.instance) {\n this.dispatching = true;\n dispatchExport();\n this.dispatch()\n .then(arr => this.revertQueueSize(arr))\n .catch(err => dispatchReport('EventTraceScheduledDispatcher.dispatch', err))\n .finally(() => { this.dispatching = false })\n }\n }))\n .subscribe();\n addTraceListener(e => this.appendTrace((e as CustomEvent).detail.traces));\n addShutdownListener(e => this.destroy());\n }\n\n appendTrace(events: EventTrace[]) {\n if(!this.wasDestroyed){\n events?.forEach(event => this.traceQueue.push(event));\n }\n }\n\n trace(instance: InstanceEnvironment) {\n this.instance = instance;\n }\n\n dispatch(): Promise<any> {\n if (this.instanceDispatched) {\n return this.dispatchTraces();\n }\n return this.dispatchInstance().then(ok => {\n if (ok) {\n this.instanceDispatched = true;\n return this.dispatchTraces();\n }\n console.warn(`Error while attempting to send Environement instance, attempts ${this.dispatchAttempts}`);\n return Promise.reject(new Error('No instance id'));\n });\n }\n\n dispatchTraces(destroy?: boolean): Promise<EventTrace[]> {\n if (this.traceQueue.length === 0) {\n return Promise.resolve(EMPTY_ARRAY);\n }\n let uri = this._techConfig.sessionApi + \"?attempts=\" + ++this.dispatchAttempts;\n if (destroy) {\n uri += \"&end=\" + new Date().toISOString();\n }\n const traces = [...this.traceQueue];\n this.traceQueue.length = 0;\n return fetch(uri, {\n method: 'PUT',\n headers: { 'Content-Type': 'application/json' },\n mode: 'cors',\n keepalive: true,\n body: JSON.stringify(traces)\n })\n .then(res=> {\n if (res.ok) {\n this.dispatchAttempts = 0;\n return EMPTY_ARRAY;\n }\n console.warn(`Error while attempting to send sessions, attempts: ${this.dispatchAttempts}`);\n if (res.status >= 400 && res.status < 500) {\n return traces; //retry on bad request !?\n }\n return res.json()\n .then(body => body?.retry ? traces : EMPTY_ARRAY)\n .catch(() => EMPTY_ARRAY);\n })\n .catch(() => {\n console.warn(`Error while attempting to send sessions, attempts: ${this.dispatchAttempts}`); //no cnx !\n return traces;\n });\n }\n\n dispatchInstance(): Promise<boolean> {\n this.dispatchAttempts++;\n return fetch(this._techConfig.instanceApi, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n mode: 'cors',\n keepalive: true,\n body: JSON.stringify(this.instance)\n })\n .then(res => res.ok ? res.text().then(id => {\n this.dispatchAttempts = 0;\n return true;\n }) : false)\n .catch(err => false);\n }\n\n revertQueueSize(traces: EventTrace[]) {\n if(!this.wasDestroyed){\n this.traceQueue.unshift(...traces);\n if (this.traceQueue.length > this._techConfig.queueCapacity) {\n this.traceQueue.splice(this._techConfig.queueCapacity);\n }\n }\n }\n\n destroy() {\n this.subscription?.unsubscribe();\n this.wasDestroyed = true;\n dispatchExport(); //last metric ??\n this.dispatchTraces(true);\n }\n}\n\nexport function eventTraceScheduledDispatcher(tech: TechnicalConf): EventTraceScheduledDispatcherService {\n return EventTraceScheduledDispatcherService._instance = new EventTraceScheduledDispatcherService(tech);\n}\n","import { dateNow, UserAction, TRACE_TYPE_USER_ACTION } from \"./trace.model\";\nimport { SessionManager } from \"./session-manager.service\";\nimport { dispatchReport, dispatchTraces } from \"./event-bus\";\n\nconst eventHandlers: { [key: string]: (target: HTMLElement) => boolean } = {\n 'click': (target: HTMLElement) => lookUpChild(target, 1),\n}\nexport function initUserActionMonitor() {\n try {\n const body = window.document.body;\n body.addEventListener('click', globalHandler, true);\n body.addEventListener('change', globalHandler, true);\n body.addEventListener('scrollend', globalHandler, true);\n body.addEventListener('dragend', globalHandler, true);\n window.document.addEventListener('DOMContentLoaded', globalHandler, true);\n }\n catch (e) {\n dispatchReport(\"initUserActionMonitor\", e);\n }\n}\n\nfunction globalHandler(event: Event | MouseEvent) {\n const target = event.target as HTMLElement;\n const eventType = event.type;\n try {\n if (eventHandlers.hasOwnProperty(eventType) && !eventHandlers[eventType](target)) {\n return;\n }\n addActionUser(eventType, target);\n } catch (err) {\n dispatchReport(\"UserACTION.globalHandler\", err)\n }\n}\n\nfunction 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\nfunction addActionUser(eventType: string, target: HTMLElement) {\n dispatchTraces({\n ...SessionManager.instance.initUserAction(),\n '@type': TRACE_TYPE_USER_ACTION,\n type: eventType,\n instant: dateNow(),\n name: extractName(target),\n nodeName: target.tagName?.toLowerCase()\n } as UserAction);\n}\n\nfunction 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\nfunction extractName(t: HTMLElement) {\n try {\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\nconst 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\nconst 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\n","import { NavigationCancel, NavigationEnd, NavigationStart, Router } from \"@angular/router\";\nimport { SessionManager } from \"./session-manager.service\";\nimport { dispatchReload, dispatchReport, dispatchShutown } from \"./event-bus\";\n\nexport function initNavigationMonitor(router: Router){\n try{\n router.events.subscribe(routeHandler);\n window.addEventListener('pageshow', bfCacheHandler);\n window.addEventListener(\"beforeunload\", windowUnloadHandler);\n }\n catch(e){\n dispatchReport('initNavigationMonitor', e)\n }\n}\n\nfunction routeHandler(event: any) {\n if (event instanceof NavigationStart) {\n SessionManager.instance.navigate(event.url);\n }\n if (event instanceof NavigationEnd || event instanceof NavigationCancel) {\n setTimeout(()=>SessionManager.instance.updateSession(),0)\n }\n}\n\nfunction windowUnloadHandler(event: any) {\n SessionManager.instance.navigate();\n dispatchShutown();\n}\n\nfunction bfCacheHandler(event: any) {\n if (event.persisted) { // if the page was restored from bfcache\n dispatchReload();\n SessionManager.instance.navigate(document.URL);\n setTimeout(() => SessionManager.instance.updateSession(), 0);\n }\n}\n","import { dateNow, MachineRessourceUsage, TRACE_TYPE_RESOURCE_USAGE } from \"./trace.model\";\nimport { dispatchTraces, dispatchReport, addExportListener } from \"./event-bus\";\n\nexport function initResourceUsageMonitor(){\n try{\n if ('memory' in performance) {\n addExportListener(ressourceUsageHandler);\n }\n }\n catch(e){\n dispatchReport('initResourceUsageMonitor', e)\n }\n}\n\nfunction ressourceUsageHandler() {\n try {\n const memory = (performance as any).memory;\n dispatchTraces({\n '@type': TRACE_TYPE_RESOURCE_USAGE,\n instant: dateNow(),\n usedHeap: memory.usedJSHeapSize / (1024 * 1024),\n commitedHeap: memory.totalJSHeapSize / (1024 * 1024),\n } as MachineRessourceUsage);\n } catch (e) {\n dispatchReport('ressourceUsageHandler', e);\n }\n}\n","import {\n NgModule,\n ModuleWithProviders,\n ErrorHandler,\n APP_INITIALIZER,\n InjectionToken\n} from '@angular/core';\nimport { HTTP_INTERCEPTORS, } from '@angular/common/http';\nimport { HttpInterceptorService } from './http-interceptor.service';\nimport { GlobalErrorHandler } from \"./global-error-handler.service\";\nimport {\n CollectorConfig,\n createInstance, refreshConfig,\n TechnicalConf,\n validateAndGetConfig\n} from \"./configuration\";\nimport {\n eventTraceScheduledDispatcher,\n} from \"./event-trace-scheduled-dispatcher.service\";\n\nimport { Router } from \"@angular/router\";\nimport { initUserActionMonitor } from \"./user-action.monitor\";\nimport { initNavigationMonitor } from './navigation.monitor';\nimport { initResourceUsageMonitor } from './resource-usage.monitor';\nimport { addReloadListener } from './event-bus';\nimport {sessionManager} from \"./session-manager.service\";\nimport {eventTraceDebugger} from \"./event-trace-debugger\";\nimport {InstanceEnvironment} from \"./trace.model\";\n\nconst COLLECTOR_CONFIG = new InjectionToken<CollectorConfig>('COLLECTOR_CONFIG');\n\n@NgModule()\nexport class NgCollectorModule {\n\n static forRoot(configuration: CollectorConfig): ModuleWithProviders<NgCollectorModule> {\n const providers = [];\n if (configuration?.enabled) {\n try {\n let config = initializeCollector(configuration);\n providers.push(\n { provide: COLLECTOR_CONFIG, useValue: config },\n { provide: APP_INITIALIZER, useFactory: initializeEventsFactory, deps: [COLLECTOR_CONFIG, Router], multi: true },\n { provide: HTTP_INTERCEPTORS, useClass: HttpInterceptorService, deps:[COLLECTOR_CONFIG], multi: true },\n { provide: ErrorHandler, useClass: GlobalErrorHandler }\n );\n } catch (e: any) {\n console.warn(`invalid Configuration, Ng-collector is disabled because of this ${e.message}`);\n }\n }\n return {ngModule: NgCollectorModule, providers : providers}\n }\n}\n\nexport function initializeEventsFactory(config: {tech: TechnicalConf, instance: InstanceEnvironment }, router: Router) {\n return () => {\n if (config.tech.analytics) {\n initUserActionMonitor();\n }\n if (config.tech.resources) {\n initResourceUsageMonitor();\n }\n initNavigationMonitor(router);\n //storageEventListener();\n //eventTraceDebugger\n addReloadListener(e=>{\n reloadCollector(config)\n });\n }\n}\n\nexport function initializeCollector(config: CollectorConfig) {\n const id = crypto.randomUUID();\n const tech = validateAndGetConfig(config, id);\n const dispatch = eventTraceScheduledDispatcher(tech);\n const instance = createInstance(config, id)\n dispatch.trace(instance);\n sessionManager(tech)\n return {tech: tech, instance: instance};\n}\n\nexport function reloadCollector(config: {tech: TechnicalConf, instance: InstanceEnvironment }) {\n const id = crypto.randomUUID();\n refreshConfig(id, config.tech);\n const dispatch = eventTraceScheduledDispatcher(config.tech);\n config.instance.id= id;\n dispatch.trace(config.instance);\n sessionManager(config.tech)\n}\n\n\n","import {\n dateNow,\n LocalRequest, LocalRequestCallBack,\n RequestMask,\n TRACE_TYPE_LOCAL_REQUEST,\n TRACE_TYPE_LOCAL_REQUEST_CALLBACK,\n UUID\n} from \"./trace.model\";\nimport {dispatchTraces, WIN} from \"./event-bus\";\n\nexport class LocalRequestMonitor {\n\n readonly id: UUID;\n readonly start: number;\n\n constructor() {\n this.start = dateNow();\n this.id = crypto.randomUUID();\n }\n\n preProcess(propertyKey: string, target: any){\n dispatchTraces({\n ...WIN[\"inspect-session-manager\"]?.initRestRequest(RequestMask.LOCAL),\n \"@type\": TRACE_TYPE_LOCAL_REQUEST,\n id: this.id,\n name: propertyKey,\n location: target.constructor.name,\n user: WIN[\"inspect-session-manager\"]?.currentSession?.user, //bad access\n start: this.start\n } as LocalRequest);\n }\n\n postProcess(exception?: any){\n dispatchTraces({\n \"@type\": TRACE_TYPE_LOCAL_REQUEST_CALLBACK,\n id: this.id,\n exception: exception,\n end: dateNow()\n } as LocalRequestCallBack);\n }\n}\n","import {LocalRequestMonitor} from \"./local-request.monitor\";\n\nexport function TraceableStage() {\n\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 const monitor = new LocalRequestMonitor();\n let exception;\n try {\n monitor.preProcess(propertyKey,target);\n return originalMethod.apply(this, args);\n } catch (e: any) {\n exception = resolveException(e);\n throw e;\n } finally {\n monitor.postProcess(exception)\n }\n }\n return descriptor;\n }\n}\nexport function resolveException(e: any): { type: string | null; message: string | null } {\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 return { type, message };\n}\n\n","/*\n * Public API Surface of inspect-ng-collector\n */\n\nexport * from './lib/ng-collector.module';\nexport * from './lib/traceable-stage.decorator';\nexport { sessionlogger } from './lib/session-manager.service';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["require","COLLECTOR_CONFIG","tap"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { InstanceEnvironment } from "./trace.model";
2
- declare type Provider<T> = T | (() => T);
2
+ type Provider<T> = T | (() => T);
3
3
  export interface CollectorConfig {
4
4
  enabled?: boolean;
5
5
  debugMode?: boolean;
@@ -79,37 +79,37 @@ export declare function adaptedConfig(conf: CollectorConfig): {
79
79
  };
80
80
  httpRequest?: {
81
81
  excludes?: {
82
- host?: string[] | undefined;
83
- } | undefined;
84
- } | undefined;
82
+ host?: string[];
83
+ };
84
+ };
85
85
  resources?: {
86
- enabled?: boolean | undefined;
87
- } | undefined;
86
+ enabled?: boolean;
87
+ };
88
88
  analytics?: {
89
- enabled?: boolean | undefined;
90
- } | undefined;
89
+ enabled?: boolean;
90
+ };
91
91
  storage?: {
92
92
  enabled: boolean;
93
- } | undefined;
93
+ };
94
94
  };
95
95
  tracing: {
96
96
  remote: {
97
97
  '@type': string;
98
98
  retentionMaxAge: number;
99
- mode?: string | undefined;
100
- host?: string | undefined;
99
+ mode?: string;
100
+ host?: string;
101
101
  };
102
- queueCapacity?: number | undefined;
102
+ queueCapacity?: number;
103
103
  };
104
- enabled?: boolean | undefined;
105
- debugMode?: boolean | undefined;
104
+ enabled?: boolean;
105
+ debugMode?: boolean;
106
106
  name: Provider<string>;
107
- version?: Provider<string> | undefined;
108
- env?: Provider<string> | undefined;
109
- user?: Provider<string> | undefined;
110
- additionalProperties?: (() => {
107
+ version?: Provider<string>;
108
+ env?: Provider<string>;
109
+ user?: Provider<string>;
110
+ additionalProperties?: () => {
111
111
  [key: string]: any;
112
- }) | undefined;
112
+ };
113
113
  };
114
114
  export declare function validateAndGetConfig(conf: CollectorConfig, instanceId: string): TechnicalConf;
115
115
  export declare function createInstance(conf: CollectorConfig, instanceId: string): InstanceEnvironment;