@tracetail/angular
Version:
Angular SDK for TraceTail browser fingerprinting - over 99.5% accuracy
32 lines • 4.8 kB
JavaScript
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=