UNPKG

@tracetail/angular

Version:

Angular SDK for TraceTail browser fingerprinting - over 99.5% accuracy

32 lines 4.8 kB
import { Injectable } from '@angular/core'; import { switchMap, take } from 'rxjs/operators'; import * as i0 from "@angular/core"; import * as i1 from "../tracetail.service"; export class TraceTailInterceptor { traceTail; constructor(traceTail) { this.traceTail = traceTail; } intercept(req, next) { // Skip TraceTail API requests to prevent circular dependency if (req.url.includes('api.tracetail.com')) { return next.handle(req); } return this.traceTail.fingerprint$.pipe(take(1), switchMap(fingerprint => { // Clone the request and add TraceTail headers const modifiedReq = req.clone({ headers: req.headers .set('X-TraceTail-Visitor-ID', fingerprint?.visitorId || 'unknown') .set('X-TraceTail-Risk-Score', fingerprint?.riskScore?.toString() || '0') .set('X-TraceTail-Confidence', fingerprint?.confidence?.toString() || '0') }); return next.handle(modifiedReq); })); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TraceTailInterceptor, deps: [{ token: i1.TraceTailService }], target: i0.ɵɵFactoryTarget.Injectable }); static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TraceTailInterceptor }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TraceTailInterceptor, decorators: [{ type: Injectable }], ctorParameters: () => [{ type: i1.TraceTailService }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2V0YWlsLmludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9pbnRlcmNlcHRvcnMvdHJhY2V0YWlsLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFRM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBSWpELE1BQU0sT0FBTyxvQkFBb0I7SUFDWDtJQUFwQixZQUFvQixTQUEyQjtRQUEzQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtJQUFHLENBQUM7SUFFbkQsU0FBUyxDQUNQLEdBQXFCLEVBQ3JCLElBQWlCO1FBRWpCLDZEQUE2RDtRQUM3RCxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLEVBQUU7WUFDekMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3pCO1FBRUQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQ3JDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxTQUFTLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDdEIsOENBQThDO1lBQzlDLE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7Z0JBQzVCLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTztxQkFDakIsR0FBRyxDQUFDLHdCQUF3QixFQUFFLFdBQVcsRUFBRSxTQUFTLElBQUksU0FBUyxDQUFDO3FCQUNsRSxHQUFHLENBQUMsd0JBQXdCLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsSUFBSSxHQUFHLENBQUM7cUJBQ3hFLEdBQUcsQ0FBQyx3QkFBd0IsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxJQUFJLEdBQUcsQ0FBQzthQUM3RSxDQUFDLENBQUM7WUFFSCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7d0dBMUJVLG9CQUFvQjs0R0FBcEIsb0JBQW9COzs0RkFBcEIsb0JBQW9CO2tCQURoQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgSHR0cEludGVyY2VwdG9yLFxuICBIdHRwUmVxdWVzdCxcbiAgSHR0cEhhbmRsZXIsXG4gIEh0dHBFdmVudFxufSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUcmFjZVRhaWxTZXJ2aWNlIH0gZnJvbSAnLi4vdHJhY2V0YWlsLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVHJhY2VUYWlsSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRyYWNlVGFpbDogVHJhY2VUYWlsU2VydmljZSkge31cblxuICBpbnRlcmNlcHQoXG4gICAgcmVxOiBIdHRwUmVxdWVzdDxhbnk+LCBcbiAgICBuZXh0OiBIdHRwSGFuZGxlclxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgLy8gU2tpcCBUcmFjZVRhaWwgQVBJIHJlcXVlc3RzIHRvIHByZXZlbnQgY2lyY3VsYXIgZGVwZW5kZW5jeVxuICAgIGlmIChyZXEudXJsLmluY2x1ZGVzKCdhcGkudHJhY2V0YWlsLmNvbScpKSB7XG4gICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy50cmFjZVRhaWwuZmluZ2VycHJpbnQkLnBpcGUoXG4gICAgICB0YWtlKDEpLFxuICAgICAgc3dpdGNoTWFwKGZpbmdlcnByaW50ID0+IHtcbiAgICAgICAgLy8gQ2xvbmUgdGhlIHJlcXVlc3QgYW5kIGFkZCBUcmFjZVRhaWwgaGVhZGVyc1xuICAgICAgICBjb25zdCBtb2RpZmllZFJlcSA9IHJlcS5jbG9uZSh7XG4gICAgICAgICAgaGVhZGVyczogcmVxLmhlYWRlcnNcbiAgICAgICAgICAgIC5zZXQoJ1gtVHJhY2VUYWlsLVZpc2l0b3ItSUQnLCBmaW5nZXJwcmludD8udmlzaXRvcklkIHx8ICd1bmtub3duJylcbiAgICAgICAgICAgIC5zZXQoJ1gtVHJhY2VUYWlsLVJpc2stU2NvcmUnLCBmaW5nZXJwcmludD8ucmlza1Njb3JlPy50b1N0cmluZygpIHx8ICcwJylcbiAgICAgICAgICAgIC5zZXQoJ1gtVHJhY2VUYWlsLUNvbmZpZGVuY2UnLCBmaW5nZXJwcmludD8uY29uZmlkZW5jZT8udG9TdHJpbmcoKSB8fCAnMCcpXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBuZXh0LmhhbmRsZShtb2RpZmllZFJlcSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cbn0iXX0=