ems-web-app-event-tracker 0.0.7 → 0.0.10
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.
- package/esm2020/lib/event-dispatcher.component.mjs +3 -4
- package/esm2020/lib/event-dispatcher.service.mjs +3 -7
- package/fesm2015/ems-web-app-event-tracker.mjs +6 -10
- package/fesm2015/ems-web-app-event-tracker.mjs.map +1 -1
- package/fesm2020/ems-web-app-event-tracker.mjs +5 -9
- package/fesm2020/ems-web-app-event-tracker.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -13,14 +13,14 @@ export class EventDispatcherComponent {
|
|
|
13
13
|
const timestamp = (new Date()).getTime();
|
|
14
14
|
window.localStorage.setItem(this._tokenId, timestamp.toString());
|
|
15
15
|
};
|
|
16
|
+
}
|
|
17
|
+
ngOnInit() {
|
|
16
18
|
this.service.jwt = this.session?.idToken.jwtToken ?? this.token;
|
|
17
19
|
this.service.endpoint = this.endpoint;
|
|
18
20
|
trace(this.service.jwt, this.session);
|
|
19
21
|
this._tokenId = this.session?.idToken.payload.jti ?? this.token;
|
|
20
22
|
this._sessionId = this.determineSessionId();
|
|
21
23
|
window.localStorage.setItem("ems_et_sessionId", this._sessionId);
|
|
22
|
-
}
|
|
23
|
-
ngOnInit() {
|
|
24
24
|
window.setInterval(this.updateSession, 1000);
|
|
25
25
|
}
|
|
26
26
|
dispatch(event, name) {
|
|
@@ -38,7 +38,6 @@ export class EventDispatcherComponent {
|
|
|
38
38
|
this._processing = false;
|
|
39
39
|
return;
|
|
40
40
|
}
|
|
41
|
-
console.log("dispatching", obj);
|
|
42
41
|
await this.service.dispatch(obj.event, obj.name);
|
|
43
42
|
this.processQueue();
|
|
44
43
|
}
|
|
@@ -77,4 +76,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
|
|
|
77
76
|
type: Input,
|
|
78
77
|
args: ["sessionLimit"]
|
|
79
78
|
}] } });
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtZGlzcGF0Y2hlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2V2ZW50LWRpc3BhdGNoZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRWpFLE9BQU8sRUFBRSxFQUFFLElBQUksSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7OztBQVFqRCxNQUFNLE9BQU8sd0JBQXdCO0lBWW5DLFlBQW9CLE9BQStCO1FBQS9CLFlBQU8sR0FBUCxPQUFPLENBQXdCO1FBUDVCLFVBQUssR0FBVyxPQUFPLENBQUMsQ0FBQyxLQUFLO1FBRTdDLFdBQU0sR0FBVSxFQUFFLENBQUM7UUFDbkIsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUF1RDdCLGtCQUFhLEdBQUcsR0FBRyxFQUFFO1lBQzNCLE1BQU0sU0FBUyxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3pDLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDbkUsQ0FBQyxDQUFBO0lBcERELENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDaEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUN0QyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ3JDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDNUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRU0sUUFBUSxDQUFDLEtBQVUsRUFBRSxJQUFhO1FBQ3ZDLEtBQUssQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUNsQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTyxLQUFLLENBQUMsWUFBWTtRQUN4QixJQUFHLElBQUksQ0FBQyxXQUFXO1lBQUUsT0FBTztRQUM1QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUV4QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2hDLElBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDUCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztZQUN6QixPQUFPO1NBQ1I7UUFFRCxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLE1BQU0sZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNwRixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2xFLE1BQU0sR0FBRyxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRW5DLElBQUcsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxFQUFFO1lBQzlGLE9BQU8sU0FBVSxDQUFDO1NBQ25CO1FBRUQsT0FBTyxJQUFJLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRU8sY0FBYyxDQUFDLEtBQWEsRUFBRSxLQUFhO1FBQ2pELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUM5QyxDQUFDOztxSEE3RFUsd0JBQXdCO3lHQUF4Qix3QkFBd0IsZ0tBSnpCLG1DQUFtQzsyRkFJbEMsd0JBQXdCO2tCQU5wQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLFFBQVEsRUFBRSxtQ0FBbUM7b0JBQzdDLE1BQU0sRUFBRSxFQUNQO2lCQUNGOzZHQUdvQixRQUFRO3NCQUExQixLQUFLO3VCQUFDLFVBQVU7Z0JBQ0MsT0FBTztzQkFBeEIsS0FBSzt1QkFBQyxTQUFTO2dCQUNBLEtBQUs7c0JBQXBCLEtBQUs7dUJBQUMsT0FBTztnQkFDUyxLQUFLO3NCQUEzQixLQUFLO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRXZlbnREaXNwYXRjaGVyU2VydmljZSB9IGZyb20gXCIuL2V2ZW50LWRpc3BhdGNoZXIuc2VydmljZVwiO1xuaW1wb3J0IHsgdjQgYXMgdXVpZCB9IGZyb20gXCJ1dWlkXCI7XG5pbXBvcnQgeyB0cmFjZSwgZW1wdHkgfSBmcm9tIFwiZW1zLXdlYi1hcHAtdXRpbHNcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZXZlbnQtZGlzcGF0Y2hlcicsXG4gIHRlbXBsYXRlOiAnPGRpdiBpZD1cImV2ZW50LWRpc3BhdGNoZXJcIj48L2Rpdj4nLFxuICBzdHlsZXM6IFtcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBFdmVudERpc3BhdGNoZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBJbnB1dChcImVuZHBvaW50XCIpIGVuZHBvaW50ITogc3RyaW5nO1xuICBASW5wdXQoXCJzZXNzaW9uXCIpIHNlc3Npb24/OiBhbnk7XG4gIEBJbnB1dChcInRva2VuXCIpIHRva2VuPzogc3RyaW5nO1xuICBASW5wdXQoXCJzZXNzaW9uTGltaXRcIikgbGltaXQ6IG51bWJlciA9IDE4MDAwMDA7IC8vMzBtXG5cbiAgcHJpdmF0ZSBfcXVldWU6IGFueVtdID0gW107XG4gIHByaXZhdGUgX3Byb2Nlc3Npbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfdG9rZW5JZCE6IHN0cmluZztcbiAgcHJpdmF0ZSBfc2Vzc2lvbklkITogc3RyaW5nO1xuICBcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzZXJ2aWNlOiBFdmVudERpc3BhdGNoZXJTZXJ2aWNlKSB7XG4gICBcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2VydmljZS5qd3QgPSB0aGlzLnNlc3Npb24/LmlkVG9rZW4uand0VG9rZW4gPz8gdGhpcy50b2tlbjtcbiAgICB0aGlzLnNlcnZpY2UuZW5kcG9pbnQgPSB0aGlzLmVuZHBvaW50O1xuICAgIHRyYWNlKHRoaXMuc2VydmljZS5qd3QsIHRoaXMuc2Vzc2lvbilcbiAgICB0aGlzLl90b2tlbklkID0gdGhpcy5zZXNzaW9uPy5pZFRva2VuLnBheWxvYWQuanRpID8/IHRoaXMudG9rZW47XG4gICAgdGhpcy5fc2Vzc2lvbklkID0gdGhpcy5kZXRlcm1pbmVTZXNzaW9uSWQoKTtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJlbXNfZXRfc2Vzc2lvbklkXCIsIHRoaXMuX3Nlc3Npb25JZCk7XG4gICAgd2luZG93LnNldEludGVydmFsKHRoaXMudXBkYXRlU2Vzc2lvbiwgMTAwMCk7XG4gIH1cblxuICBwdWJsaWMgZGlzcGF0Y2goZXZlbnQ6IGFueSwgbmFtZT86IHN0cmluZyk6IGFueSB7XG4gICAgZXZlbnQuc2Vzc2lvbklkID0gdGhpcy5fc2Vzc2lvbklkO1xuICAgIHRoaXMuX3F1ZXVlLnB1c2goeyBldmVudCwgbmFtZSB9KTtcbiAgICB0aGlzLnByb2Nlc3NRdWV1ZSgpO1xuICAgIHJldHVybiBldmVudDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJvY2Vzc1F1ZXVlKCkge1xuICAgIGlmKHRoaXMuX3Byb2Nlc3NpbmcpIHJldHVybjtcbiAgICB0aGlzLl9wcm9jZXNzaW5nID0gdHJ1ZTtcblxuICAgIGNvbnN0IG9iaiA9IHRoaXMuX3F1ZXVlLnNoaWZ0KCk7XG4gICAgaWYoIW9iaikge1xuICAgICAgdGhpcy5fcHJvY2Vzc2luZyA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuc2VydmljZS5kaXNwYXRjaChvYmouZXZlbnQsIG9iai5uYW1lKTtcbiAgICB0aGlzLnByb2Nlc3NRdWV1ZSgpOyBcbiAgfVxuXG4gIHByaXZhdGUgZGV0ZXJtaW5lU2Vzc2lvbklkKCkge1xuICAgIGNvbnN0IHNlc3Npb25UaW1lc3RhbXAgPSBwYXJzZUludCh3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5fdG9rZW5JZCkgPz8gXCJcIik7XG4gICAgY29uc3Qgc2Vzc2lvbklkID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiZW1zX2V0X3Nlc3Npb25JZFwiKTtcbiAgICBjb25zdCBub3cgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpO1xuXG4gICAgaWYoIWlzTmFOKHNlc3Npb25UaW1lc3RhbXApICYmICFlbXB0eShzZXNzaW9uSWQpICYmIHRoaXMuc3RpbGxJblNlc3Npb24obm93LCBzZXNzaW9uVGltZXN0YW1wKSkge1xuICAgICAgcmV0dXJuIHNlc3Npb25JZCE7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiB1dWlkKCk7XG4gIH1cblxuICBwcml2YXRlIHN0aWxsSW5TZXNzaW9uKHRpbWUxOiBudW1iZXIsIHRpbWUyOiBudW1iZXIpIHtcbiAgICByZXR1cm4gTWF0aC5hYnModGltZTEgLSB0aW1lMikgPCB0aGlzLmxpbWl0O1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTZXNzaW9uID0gKCkgPT4ge1xuICAgIGNvbnN0IHRpbWVzdGFtcCA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7XG4gICAgd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuX3Rva2VuSWQsIHRpbWVzdGFtcC50b1N0cmluZygpKTtcbiAgfVxuXG59XG4iXX0=
|
|
@@ -3,7 +3,6 @@ import { HttpHeaders } from '@angular/common/http';
|
|
|
3
3
|
import { throwError, of } from 'rxjs';
|
|
4
4
|
import { catchError, map } from "rxjs/operators";
|
|
5
5
|
import { v4 as uuid } from "uuid";
|
|
6
|
-
import { empty } from "ems-web-app-utils";
|
|
7
6
|
import * as _ from "underscore";
|
|
8
7
|
import * as i0 from "@angular/core";
|
|
9
8
|
import * as i1 from "@angular/common/http";
|
|
@@ -13,14 +12,12 @@ export class EventDispatcherService {
|
|
|
13
12
|
}
|
|
14
13
|
dispatch(event, name) {
|
|
15
14
|
const key = `${name ?? uuid()}.json`;
|
|
16
|
-
console.log(`key: ${key}`);
|
|
17
15
|
const request = this.buildRequest(key);
|
|
18
|
-
console.log(`request: ${request}, jwt: ${this.jwt}`);
|
|
19
16
|
return this.executePutRequest(request, event);
|
|
20
17
|
}
|
|
21
18
|
executePutRequest(request, data, transform, suppressErrors, customHeaders) {
|
|
22
19
|
const headers = this.headers(customHeaders || {});
|
|
23
|
-
return this.http.put(request, data, { headers
|
|
20
|
+
return this.http.put(request, data, { headers }).pipe(map((result) => transform ? transform(result) : result), catchError(suppressErrors ? this.handleErrorQuietly : this.handleError)).toPromise();
|
|
24
21
|
}
|
|
25
22
|
buildRequest(endpoint) {
|
|
26
23
|
return `${this.endpoint}/${endpoint}`;
|
|
@@ -34,8 +31,7 @@ export class EventDispatcherService {
|
|
|
34
31
|
}
|
|
35
32
|
headers(custom = {}) {
|
|
36
33
|
const headers = _.extend({
|
|
37
|
-
"Content-Type": "application/json"
|
|
38
|
-
"Authorization": empty(this.jwt) ? undefined : `Bearer ${this.jwt}`
|
|
34
|
+
"Content-Type": "application/json"
|
|
39
35
|
}, custom);
|
|
40
36
|
return new HttpHeaders(headers);
|
|
41
37
|
}
|
|
@@ -48,4 +44,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
|
|
|
48
44
|
providedIn: 'root'
|
|
49
45
|
}]
|
|
50
46
|
}], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtZGlzcGF0Y2hlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9ldmVudC1kaXNwYXRjaGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsV0FBVyxFQUE0RCxNQUFNLHNCQUFzQixDQUFDO0FBQ3pILE9BQU8sRUFBd0MsVUFBVSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBQzVELE9BQU8sRUFBRSxFQUFFLElBQUksSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWxDLE9BQU8sS0FBSyxDQUFDLE1BQU0sWUFBWSxDQUFDOzs7QUFLaEMsTUFBTSxPQUFPLHNCQUFzQjtJQUtqQyxZQUFvQixJQUFnQjtRQUFoQixTQUFJLEdBQUosSUFBSSxDQUFZO0lBQUcsQ0FBQztJQUVqQyxRQUFRLENBQUMsS0FBVSxFQUFFLElBQWE7UUFDdkMsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxFQUFFLE9BQU8sQ0FBQztRQUNyQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRU8saUJBQWlCLENBQUMsT0FBZSxFQUFFLElBQVMsRUFBRSxTQUErQixFQUFFLGNBQXdCLEVBQUUsYUFBbUI7UUFDbEksTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLElBQUksRUFBRSxDQUFDLENBQUM7UUFDbEQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ25ELEdBQUcsQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFLENBQ2xCLFNBQVMsQ0FBQyxDQUFDLENBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQ3hDLEVBQ0QsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQ3hFLENBQUMsU0FBUyxFQUFFLENBQUE7SUFDZixDQUFDO0lBRU8sWUFBWSxDQUFDLFFBQWdCO1FBQ25DLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLFFBQVEsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFTyxXQUFXLENBQUMsS0FBd0I7UUFDMUMsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVPLGtCQUFrQixDQUFDLEtBQXdCO1FBQ2pELE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUVPLE9BQU8sQ0FBQyxTQUFjLEVBQUU7UUFDOUIsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztZQUNuQixjQUFjLEVBQUUsa0JBQWtCO1NBQ3BDLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDZCxPQUFPLElBQUksV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xDLENBQUM7O21IQXpDVSxzQkFBc0I7dUhBQXRCLHNCQUFzQixjQUZyQixNQUFNOzJGQUVQLHNCQUFzQjtrQkFIbEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycywgSHR0cFJlc3BvbnNlLCBIdHRwUmVxdWVzdCwgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBCZWhhdmlvclN1YmplY3QsIHRocm93RXJyb3IsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHRhcCwgdGFrZSB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgdjQgYXMgdXVpZCB9IGZyb20gXCJ1dWlkXCI7XG5pbXBvcnQgeyB0cmFjZSwgZW1wdHkgfSBmcm9tIFwiZW1zLXdlYi1hcHAtdXRpbHNcIjtcbmltcG9ydCAqIGFzIF8gZnJvbSBcInVuZGVyc2NvcmVcIjtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRXZlbnREaXNwYXRjaGVyU2VydmljZSB7XG4gIFxuICBwdWJsaWMgand0Pzogc3RyaW5nO1xuICBwdWJsaWMgZW5kcG9pbnQhOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50KSB7fVxuXG4gIHB1YmxpYyBkaXNwYXRjaChldmVudDogYW55LCBuYW1lPzogc3RyaW5nKTpQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IGtleSA9IGAke25hbWUgPz8gdXVpZCgpfS5qc29uYDtcbiAgICBjb25zdCByZXF1ZXN0ID0gdGhpcy5idWlsZFJlcXVlc3Qoa2V5KTtcbiAgICByZXR1cm4gdGhpcy5leGVjdXRlUHV0UmVxdWVzdChyZXF1ZXN0LCBldmVudCk7XG4gIH1cblxuICBwcml2YXRlIGV4ZWN1dGVQdXRSZXF1ZXN0KHJlcXVlc3Q6IHN0cmluZywgZGF0YTogYW55LCB0cmFuc2Zvcm0/OiAoaW5wdXQ6IGFueSkgPT4gYW55LCBzdXBwcmVzc0Vycm9ycz86IGJvb2xlYW4sIGN1c3RvbUhlYWRlcnM/OiBhbnkgKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5oZWFkZXJzKGN1c3RvbUhlYWRlcnMgfHwge30pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHJlcXVlc3QsIGRhdGEsIHsgaGVhZGVycyB9KS5waXBlKFxuICAgICAgbWFwKChyZXN1bHQ6IGFueSkgPT4gXG4gICAgICAgIHRyYW5zZm9ybSA/ICB0cmFuc2Zvcm0ocmVzdWx0KSA6IHJlc3VsdFxuICAgICAgKSxcbiAgICAgIGNhdGNoRXJyb3Ioc3VwcHJlc3NFcnJvcnMgPyB0aGlzLmhhbmRsZUVycm9yUXVpZXRseSA6IHRoaXMuaGFuZGxlRXJyb3IpXG4gICAgKS50b1Byb21pc2UoKVxuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFJlcXVlc3QoZW5kcG9pbnQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuZW5kcG9pbnR9LyR7ZW5kcG9pbnR9YDtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRXJyb3IoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVFcnJvclF1aWV0bHkoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgcmV0dXJuIG9mKG51bGwpO1xuICB9XG5cbiAgcHJpdmF0ZSBoZWFkZXJzKGN1c3RvbTogYW55ID0ge30pOiBIdHRwSGVhZGVycyB7XG4gICAgY29uc3QgaGVhZGVycyA9IF8uZXh0ZW5kKHsgXG4gICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCJcbiAgICAgICB9LCBjdXN0b20pO1xuICAgIHJldHVybiBuZXcgSHR0cEhlYWRlcnMoaGVhZGVycyk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -5,9 +5,9 @@ import { HttpHeaders } from '@angular/common/http';
|
|
|
5
5
|
import { throwError, of } from 'rxjs';
|
|
6
6
|
import { map, catchError } from 'rxjs/operators';
|
|
7
7
|
import { v4 } from 'uuid';
|
|
8
|
-
import { empty, trace } from 'ems-web-app-utils';
|
|
9
8
|
import * as _ from 'underscore';
|
|
10
9
|
import { __awaiter } from 'tslib';
|
|
10
|
+
import { trace, empty } from 'ems-web-app-utils';
|
|
11
11
|
|
|
12
12
|
class EventDispatcherService {
|
|
13
13
|
constructor(http) {
|
|
@@ -15,14 +15,12 @@ class EventDispatcherService {
|
|
|
15
15
|
}
|
|
16
16
|
dispatch(event, name) {
|
|
17
17
|
const key = `${name !== null && name !== void 0 ? name : v4()}.json`;
|
|
18
|
-
console.log(`key: ${key}`);
|
|
19
18
|
const request = this.buildRequest(key);
|
|
20
|
-
console.log(`request: ${request}, jwt: ${this.jwt}`);
|
|
21
19
|
return this.executePutRequest(request, event);
|
|
22
20
|
}
|
|
23
21
|
executePutRequest(request, data, transform, suppressErrors, customHeaders) {
|
|
24
22
|
const headers = this.headers(customHeaders || {});
|
|
25
|
-
return this.http.put(request, data, { headers
|
|
23
|
+
return this.http.put(request, data, { headers }).pipe(map((result) => transform ? transform(result) : result), catchError(suppressErrors ? this.handleErrorQuietly : this.handleError)).toPromise();
|
|
26
24
|
}
|
|
27
25
|
buildRequest(endpoint) {
|
|
28
26
|
return `${this.endpoint}/${endpoint}`;
|
|
@@ -36,8 +34,7 @@ class EventDispatcherService {
|
|
|
36
34
|
}
|
|
37
35
|
headers(custom = {}) {
|
|
38
36
|
const headers = _.extend({
|
|
39
|
-
"Content-Type": "application/json"
|
|
40
|
-
"Authorization": empty(this.jwt) ? undefined : `Bearer ${this.jwt}`
|
|
37
|
+
"Content-Type": "application/json"
|
|
41
38
|
}, custom);
|
|
42
39
|
return new HttpHeaders(headers);
|
|
43
40
|
}
|
|
@@ -53,7 +50,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
|
|
|
53
50
|
|
|
54
51
|
class EventDispatcherComponent {
|
|
55
52
|
constructor(service) {
|
|
56
|
-
var _a, _b, _c, _d;
|
|
57
53
|
this.service = service;
|
|
58
54
|
this.limit = 1800000; //30m
|
|
59
55
|
this._queue = [];
|
|
@@ -62,14 +58,15 @@ class EventDispatcherComponent {
|
|
|
62
58
|
const timestamp = (new Date()).getTime();
|
|
63
59
|
window.localStorage.setItem(this._tokenId, timestamp.toString());
|
|
64
60
|
};
|
|
61
|
+
}
|
|
62
|
+
ngOnInit() {
|
|
63
|
+
var _a, _b, _c, _d;
|
|
65
64
|
this.service.jwt = (_b = (_a = this.session) === null || _a === void 0 ? void 0 : _a.idToken.jwtToken) !== null && _b !== void 0 ? _b : this.token;
|
|
66
65
|
this.service.endpoint = this.endpoint;
|
|
67
66
|
trace(this.service.jwt, this.session);
|
|
68
67
|
this._tokenId = (_d = (_c = this.session) === null || _c === void 0 ? void 0 : _c.idToken.payload.jti) !== null && _d !== void 0 ? _d : this.token;
|
|
69
68
|
this._sessionId = this.determineSessionId();
|
|
70
69
|
window.localStorage.setItem("ems_et_sessionId", this._sessionId);
|
|
71
|
-
}
|
|
72
|
-
ngOnInit() {
|
|
73
70
|
window.setInterval(this.updateSession, 1000);
|
|
74
71
|
}
|
|
75
72
|
dispatch(event, name) {
|
|
@@ -88,7 +85,6 @@ class EventDispatcherComponent {
|
|
|
88
85
|
this._processing = false;
|
|
89
86
|
return;
|
|
90
87
|
}
|
|
91
|
-
console.log("dispatching", obj);
|
|
92
88
|
yield this.service.dispatch(obj.event, obj.name);
|
|
93
89
|
this.processQueue();
|
|
94
90
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ems-web-app-event-tracker.mjs","sources":["../../src/lib/event-dispatcher.service.ts","../../src/lib/event-dispatcher.component.ts","../../src/lib/event-dispatcher.module.ts","../../src/public-api.ts","../../src/ems-web-app-event-tracker.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpResponse, HttpRequest, HttpErrorResponse, HttpParams } from '@angular/common/http';\nimport { Observable, Subject, BehaviorSubject, throwError, of } from 'rxjs';\nimport { catchError, map, tap, take } from \"rxjs/operators\";\nimport { v4 as uuid } from \"uuid\";\nimport { trace, empty } from \"ems-web-app-utils\";\nimport * as _ from \"underscore\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EventDispatcherService {\n \n public jwt?: string;\n public endpoint!: string;\n\n constructor(private http: HttpClient) {}\n\n public dispatch(event: any, name?: string):Promise<any> {\n const key = `${name ?? uuid()}.json`;\n console.log(`key: ${key}`);\n const request = this.buildRequest(key);\n console.log(`request: ${request}, jwt: ${this.jwt}`);\n return this.executePutRequest(request, event);\n }\n\n private executePutRequest(request: string, data: any, transform?: (input: any) => any, suppressErrors?: boolean, customHeaders?: any ): Promise<any> {\n const headers = this.headers(customHeaders || {});\n return this.http.put(request, data, { headers, withCredentials: true }).pipe(\n map((result: any) => \n transform ? transform(result) : result\n ),\n catchError(suppressErrors ? this.handleErrorQuietly : this.handleError)\n ).toPromise()\n }\n\n private buildRequest(endpoint: string): string {\n return `${this.endpoint}/${endpoint}`;\n }\n\n private handleError(error: HttpErrorResponse) {\n return throwError(error);\n }\n\n private handleErrorQuietly(error: HttpErrorResponse) {\n console.error(error);\n return of(null);\n }\n\n private headers(custom: any = {}): HttpHeaders {\n const headers = _.extend({ \n \"Content-Type\": \"application/json\",\n \"Authorization\": empty(this.jwt) ? undefined : `Bearer ${this.jwt}` \n }, custom);\n return new HttpHeaders(headers);\n }\n}\n","import { Component, OnInit, Input, Output } from '@angular/core';\nimport { EventDispatcherService } from \"./event-dispatcher.service\";\nimport { v4 as uuid } from \"uuid\";\nimport { trace, empty } from \"ems-web-app-utils\";\n\n@Component({\n selector: 'event-dispatcher',\n template: '<div id=\"event-dispatcher\"></div>',\n styles: [\n ]\n})\nexport class EventDispatcherComponent implements OnInit {\n\n @Input(\"endpoint\") endpoint!: string;\n @Input(\"session\") session?: any;\n @Input(\"token\") token?: string;\n @Input(\"sessionLimit\") limit: number = 1800000; //30m\n\n private _queue: any[] = [];\n private _processing: boolean = false;\n private _tokenId: string;\n private _sessionId!: string;\n \n constructor(private service: EventDispatcherService) {\n this.service.jwt = this.session?.idToken.jwtToken ?? this.token;\n this.service.endpoint = this.endpoint;\n trace(this.service.jwt, this.session)\n this._tokenId = this.session?.idToken.payload.jti ?? this.token;\n this._sessionId = this.determineSessionId();\n window.localStorage.setItem(\"ems_et_sessionId\", this._sessionId);\n }\n\n ngOnInit(): void {\n window.setInterval(this.updateSession, 1000);\n }\n\n public dispatch(event: any, name?: string): any {\n event.sessionId = this._sessionId;\n this._queue.push({ event, name });\n this.processQueue();\n return event;\n }\n\n private async processQueue() {\n if(this._processing) return;\n this._processing = true;\n\n const obj = this._queue.shift();\n if(!obj) {\n this._processing = false;\n return;\n }\n\n console.log(\"dispatching\", obj);\n\n await this.service.dispatch(obj.event, obj.name);\n this.processQueue(); \n }\n\n private determineSessionId() {\n const sessionTimestamp = parseInt(window.localStorage.getItem(this._tokenId) ?? \"\");\n const sessionId = window.localStorage.getItem(\"ems_et_sessionId\");\n const now = (new Date()).getTime();\n\n if(!isNaN(sessionTimestamp) && !empty(sessionId) && this.stillInSession(now, sessionTimestamp)) {\n return sessionId!;\n }\n \n return uuid();\n }\n\n private stillInSession(time1: number, time2: number) {\n return Math.abs(time1 - time2) < this.limit;\n }\n\n private updateSession = () => {\n const timestamp = (new Date()).getTime();\n window.localStorage.setItem(this._tokenId, timestamp.toString());\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { EventDispatcherComponent } from './event-dispatcher.component';\n\n\n\n@NgModule({\n declarations: [\n EventDispatcherComponent\n ],\n imports: [\n ],\n exports: [\n EventDispatcherComponent\n ]\n})\nexport class EventDispatcherModule { }\n","/*\n * Public API Surface of event-dispatcher\n */\n\nexport * from './lib/event-dispatcher.service';\nexport * from './lib/event-dispatcher.component';\nexport * from './lib/event-dispatcher.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["uuid","i1.EventDispatcherService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ems-web-app-event-tracker.mjs","sources":["../../src/lib/event-dispatcher.service.ts","../../src/lib/event-dispatcher.component.ts","../../src/lib/event-dispatcher.module.ts","../../src/public-api.ts","../../src/ems-web-app-event-tracker.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpResponse, HttpRequest, HttpErrorResponse, HttpParams } from '@angular/common/http';\nimport { Observable, Subject, BehaviorSubject, throwError, of } from 'rxjs';\nimport { catchError, map, tap, take } from \"rxjs/operators\";\nimport { v4 as uuid } from \"uuid\";\nimport { trace, empty } from \"ems-web-app-utils\";\nimport * as _ from \"underscore\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EventDispatcherService {\n \n public jwt?: string;\n public endpoint!: string;\n\n constructor(private http: HttpClient) {}\n\n public dispatch(event: any, name?: string):Promise<any> {\n const key = `${name ?? uuid()}.json`;\n const request = this.buildRequest(key);\n return this.executePutRequest(request, event);\n }\n\n private executePutRequest(request: string, data: any, transform?: (input: any) => any, suppressErrors?: boolean, customHeaders?: any ): Promise<any> {\n const headers = this.headers(customHeaders || {});\n return this.http.put(request, data, { headers }).pipe(\n map((result: any) => \n transform ? transform(result) : result\n ),\n catchError(suppressErrors ? this.handleErrorQuietly : this.handleError)\n ).toPromise()\n }\n\n private buildRequest(endpoint: string): string {\n return `${this.endpoint}/${endpoint}`;\n }\n\n private handleError(error: HttpErrorResponse) {\n return throwError(error);\n }\n\n private handleErrorQuietly(error: HttpErrorResponse) {\n console.error(error);\n return of(null);\n }\n\n private headers(custom: any = {}): HttpHeaders {\n const headers = _.extend({ \n \"Content-Type\": \"application/json\"\n }, custom);\n return new HttpHeaders(headers);\n }\n}\n","import { Component, OnInit, Input, Output } from '@angular/core';\nimport { EventDispatcherService } from \"./event-dispatcher.service\";\nimport { v4 as uuid } from \"uuid\";\nimport { trace, empty } from \"ems-web-app-utils\";\n\n@Component({\n selector: 'event-dispatcher',\n template: '<div id=\"event-dispatcher\"></div>',\n styles: [\n ]\n})\nexport class EventDispatcherComponent implements OnInit {\n\n @Input(\"endpoint\") endpoint!: string;\n @Input(\"session\") session?: any;\n @Input(\"token\") token?: string;\n @Input(\"sessionLimit\") limit: number = 1800000; //30m\n\n private _queue: any[] = [];\n private _processing: boolean = false;\n private _tokenId!: string;\n private _sessionId!: string;\n \n constructor(private service: EventDispatcherService) {\n \n }\n\n ngOnInit(): void {\n this.service.jwt = this.session?.idToken.jwtToken ?? this.token;\n this.service.endpoint = this.endpoint;\n trace(this.service.jwt, this.session)\n this._tokenId = this.session?.idToken.payload.jti ?? this.token;\n this._sessionId = this.determineSessionId();\n window.localStorage.setItem(\"ems_et_sessionId\", this._sessionId);\n window.setInterval(this.updateSession, 1000);\n }\n\n public dispatch(event: any, name?: string): any {\n event.sessionId = this._sessionId;\n this._queue.push({ event, name });\n this.processQueue();\n return event;\n }\n\n private async processQueue() {\n if(this._processing) return;\n this._processing = true;\n\n const obj = this._queue.shift();\n if(!obj) {\n this._processing = false;\n return;\n }\n\n await this.service.dispatch(obj.event, obj.name);\n this.processQueue(); \n }\n\n private determineSessionId() {\n const sessionTimestamp = parseInt(window.localStorage.getItem(this._tokenId) ?? \"\");\n const sessionId = window.localStorage.getItem(\"ems_et_sessionId\");\n const now = (new Date()).getTime();\n\n if(!isNaN(sessionTimestamp) && !empty(sessionId) && this.stillInSession(now, sessionTimestamp)) {\n return sessionId!;\n }\n \n return uuid();\n }\n\n private stillInSession(time1: number, time2: number) {\n return Math.abs(time1 - time2) < this.limit;\n }\n\n private updateSession = () => {\n const timestamp = (new Date()).getTime();\n window.localStorage.setItem(this._tokenId, timestamp.toString());\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { EventDispatcherComponent } from './event-dispatcher.component';\n\n\n\n@NgModule({\n declarations: [\n EventDispatcherComponent\n ],\n imports: [\n ],\n exports: [\n EventDispatcherComponent\n ]\n})\nexport class EventDispatcherModule { }\n","/*\n * Public API Surface of event-dispatcher\n */\n\nexport * from './lib/event-dispatcher.service';\nexport * from './lib/event-dispatcher.component';\nexport * from './lib/event-dispatcher.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["uuid","i1.EventDispatcherService"],"mappings":"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"}
|
|
@@ -5,8 +5,8 @@ import { HttpHeaders } from '@angular/common/http';
|
|
|
5
5
|
import { throwError, of } from 'rxjs';
|
|
6
6
|
import { map, catchError } from 'rxjs/operators';
|
|
7
7
|
import { v4 } from 'uuid';
|
|
8
|
-
import { empty, trace } from 'ems-web-app-utils';
|
|
9
8
|
import * as _ from 'underscore';
|
|
9
|
+
import { trace, empty } from 'ems-web-app-utils';
|
|
10
10
|
|
|
11
11
|
class EventDispatcherService {
|
|
12
12
|
constructor(http) {
|
|
@@ -14,14 +14,12 @@ class EventDispatcherService {
|
|
|
14
14
|
}
|
|
15
15
|
dispatch(event, name) {
|
|
16
16
|
const key = `${name ?? v4()}.json`;
|
|
17
|
-
console.log(`key: ${key}`);
|
|
18
17
|
const request = this.buildRequest(key);
|
|
19
|
-
console.log(`request: ${request}, jwt: ${this.jwt}`);
|
|
20
18
|
return this.executePutRequest(request, event);
|
|
21
19
|
}
|
|
22
20
|
executePutRequest(request, data, transform, suppressErrors, customHeaders) {
|
|
23
21
|
const headers = this.headers(customHeaders || {});
|
|
24
|
-
return this.http.put(request, data, { headers
|
|
22
|
+
return this.http.put(request, data, { headers }).pipe(map((result) => transform ? transform(result) : result), catchError(suppressErrors ? this.handleErrorQuietly : this.handleError)).toPromise();
|
|
25
23
|
}
|
|
26
24
|
buildRequest(endpoint) {
|
|
27
25
|
return `${this.endpoint}/${endpoint}`;
|
|
@@ -35,8 +33,7 @@ class EventDispatcherService {
|
|
|
35
33
|
}
|
|
36
34
|
headers(custom = {}) {
|
|
37
35
|
const headers = _.extend({
|
|
38
|
-
"Content-Type": "application/json"
|
|
39
|
-
"Authorization": empty(this.jwt) ? undefined : `Bearer ${this.jwt}`
|
|
36
|
+
"Content-Type": "application/json"
|
|
40
37
|
}, custom);
|
|
41
38
|
return new HttpHeaders(headers);
|
|
42
39
|
}
|
|
@@ -60,14 +57,14 @@ class EventDispatcherComponent {
|
|
|
60
57
|
const timestamp = (new Date()).getTime();
|
|
61
58
|
window.localStorage.setItem(this._tokenId, timestamp.toString());
|
|
62
59
|
};
|
|
60
|
+
}
|
|
61
|
+
ngOnInit() {
|
|
63
62
|
this.service.jwt = this.session?.idToken.jwtToken ?? this.token;
|
|
64
63
|
this.service.endpoint = this.endpoint;
|
|
65
64
|
trace(this.service.jwt, this.session);
|
|
66
65
|
this._tokenId = this.session?.idToken.payload.jti ?? this.token;
|
|
67
66
|
this._sessionId = this.determineSessionId();
|
|
68
67
|
window.localStorage.setItem("ems_et_sessionId", this._sessionId);
|
|
69
|
-
}
|
|
70
|
-
ngOnInit() {
|
|
71
68
|
window.setInterval(this.updateSession, 1000);
|
|
72
69
|
}
|
|
73
70
|
dispatch(event, name) {
|
|
@@ -85,7 +82,6 @@ class EventDispatcherComponent {
|
|
|
85
82
|
this._processing = false;
|
|
86
83
|
return;
|
|
87
84
|
}
|
|
88
|
-
console.log("dispatching", obj);
|
|
89
85
|
await this.service.dispatch(obj.event, obj.name);
|
|
90
86
|
this.processQueue();
|
|
91
87
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ems-web-app-event-tracker.mjs","sources":["../../src/lib/event-dispatcher.service.ts","../../src/lib/event-dispatcher.component.ts","../../src/lib/event-dispatcher.module.ts","../../src/public-api.ts","../../src/ems-web-app-event-tracker.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpResponse, HttpRequest, HttpErrorResponse, HttpParams } from '@angular/common/http';\nimport { Observable, Subject, BehaviorSubject, throwError, of } from 'rxjs';\nimport { catchError, map, tap, take } from \"rxjs/operators\";\nimport { v4 as uuid } from \"uuid\";\nimport { trace, empty } from \"ems-web-app-utils\";\nimport * as _ from \"underscore\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EventDispatcherService {\n \n public jwt?: string;\n public endpoint!: string;\n\n constructor(private http: HttpClient) {}\n\n public dispatch(event: any, name?: string):Promise<any> {\n const key = `${name ?? uuid()}.json`;\n console.log(`key: ${key}`);\n const request = this.buildRequest(key);\n console.log(`request: ${request}, jwt: ${this.jwt}`);\n return this.executePutRequest(request, event);\n }\n\n private executePutRequest(request: string, data: any, transform?: (input: any) => any, suppressErrors?: boolean, customHeaders?: any ): Promise<any> {\n const headers = this.headers(customHeaders || {});\n return this.http.put(request, data, { headers, withCredentials: true }).pipe(\n map((result: any) => \n transform ? transform(result) : result\n ),\n catchError(suppressErrors ? this.handleErrorQuietly : this.handleError)\n ).toPromise()\n }\n\n private buildRequest(endpoint: string): string {\n return `${this.endpoint}/${endpoint}`;\n }\n\n private handleError(error: HttpErrorResponse) {\n return throwError(error);\n }\n\n private handleErrorQuietly(error: HttpErrorResponse) {\n console.error(error);\n return of(null);\n }\n\n private headers(custom: any = {}): HttpHeaders {\n const headers = _.extend({ \n \"Content-Type\": \"application/json\",\n \"Authorization\": empty(this.jwt) ? undefined : `Bearer ${this.jwt}` \n }, custom);\n return new HttpHeaders(headers);\n }\n}\n","import { Component, OnInit, Input, Output } from '@angular/core';\nimport { EventDispatcherService } from \"./event-dispatcher.service\";\nimport { v4 as uuid } from \"uuid\";\nimport { trace, empty } from \"ems-web-app-utils\";\n\n@Component({\n selector: 'event-dispatcher',\n template: '<div id=\"event-dispatcher\"></div>',\n styles: [\n ]\n})\nexport class EventDispatcherComponent implements OnInit {\n\n @Input(\"endpoint\") endpoint!: string;\n @Input(\"session\") session?: any;\n @Input(\"token\") token?: string;\n @Input(\"sessionLimit\") limit: number = 1800000; //30m\n\n private _queue: any[] = [];\n private _processing: boolean = false;\n private _tokenId: string;\n private _sessionId!: string;\n \n constructor(private service: EventDispatcherService) {\n this.service.jwt = this.session?.idToken.jwtToken ?? this.token;\n this.service.endpoint = this.endpoint;\n trace(this.service.jwt, this.session)\n this._tokenId = this.session?.idToken.payload.jti ?? this.token;\n this._sessionId = this.determineSessionId();\n window.localStorage.setItem(\"ems_et_sessionId\", this._sessionId);\n }\n\n ngOnInit(): void {\n window.setInterval(this.updateSession, 1000);\n }\n\n public dispatch(event: any, name?: string): any {\n event.sessionId = this._sessionId;\n this._queue.push({ event, name });\n this.processQueue();\n return event;\n }\n\n private async processQueue() {\n if(this._processing) return;\n this._processing = true;\n\n const obj = this._queue.shift();\n if(!obj) {\n this._processing = false;\n return;\n }\n\n console.log(\"dispatching\", obj);\n\n await this.service.dispatch(obj.event, obj.name);\n this.processQueue(); \n }\n\n private determineSessionId() {\n const sessionTimestamp = parseInt(window.localStorage.getItem(this._tokenId) ?? \"\");\n const sessionId = window.localStorage.getItem(\"ems_et_sessionId\");\n const now = (new Date()).getTime();\n\n if(!isNaN(sessionTimestamp) && !empty(sessionId) && this.stillInSession(now, sessionTimestamp)) {\n return sessionId!;\n }\n \n return uuid();\n }\n\n private stillInSession(time1: number, time2: number) {\n return Math.abs(time1 - time2) < this.limit;\n }\n\n private updateSession = () => {\n const timestamp = (new Date()).getTime();\n window.localStorage.setItem(this._tokenId, timestamp.toString());\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { EventDispatcherComponent } from './event-dispatcher.component';\n\n\n\n@NgModule({\n declarations: [\n EventDispatcherComponent\n ],\n imports: [\n ],\n exports: [\n EventDispatcherComponent\n ]\n})\nexport class EventDispatcherModule { }\n","/*\n * Public API Surface of event-dispatcher\n */\n\nexport * from './lib/event-dispatcher.service';\nexport * from './lib/event-dispatcher.component';\nexport * from './lib/event-dispatcher.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["uuid","i1.EventDispatcherService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ems-web-app-event-tracker.mjs","sources":["../../src/lib/event-dispatcher.service.ts","../../src/lib/event-dispatcher.component.ts","../../src/lib/event-dispatcher.module.ts","../../src/public-api.ts","../../src/ems-web-app-event-tracker.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpResponse, HttpRequest, HttpErrorResponse, HttpParams } from '@angular/common/http';\nimport { Observable, Subject, BehaviorSubject, throwError, of } from 'rxjs';\nimport { catchError, map, tap, take } from \"rxjs/operators\";\nimport { v4 as uuid } from \"uuid\";\nimport { trace, empty } from \"ems-web-app-utils\";\nimport * as _ from \"underscore\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EventDispatcherService {\n \n public jwt?: string;\n public endpoint!: string;\n\n constructor(private http: HttpClient) {}\n\n public dispatch(event: any, name?: string):Promise<any> {\n const key = `${name ?? uuid()}.json`;\n const request = this.buildRequest(key);\n return this.executePutRequest(request, event);\n }\n\n private executePutRequest(request: string, data: any, transform?: (input: any) => any, suppressErrors?: boolean, customHeaders?: any ): Promise<any> {\n const headers = this.headers(customHeaders || {});\n return this.http.put(request, data, { headers }).pipe(\n map((result: any) => \n transform ? transform(result) : result\n ),\n catchError(suppressErrors ? this.handleErrorQuietly : this.handleError)\n ).toPromise()\n }\n\n private buildRequest(endpoint: string): string {\n return `${this.endpoint}/${endpoint}`;\n }\n\n private handleError(error: HttpErrorResponse) {\n return throwError(error);\n }\n\n private handleErrorQuietly(error: HttpErrorResponse) {\n console.error(error);\n return of(null);\n }\n\n private headers(custom: any = {}): HttpHeaders {\n const headers = _.extend({ \n \"Content-Type\": \"application/json\"\n }, custom);\n return new HttpHeaders(headers);\n }\n}\n","import { Component, OnInit, Input, Output } from '@angular/core';\nimport { EventDispatcherService } from \"./event-dispatcher.service\";\nimport { v4 as uuid } from \"uuid\";\nimport { trace, empty } from \"ems-web-app-utils\";\n\n@Component({\n selector: 'event-dispatcher',\n template: '<div id=\"event-dispatcher\"></div>',\n styles: [\n ]\n})\nexport class EventDispatcherComponent implements OnInit {\n\n @Input(\"endpoint\") endpoint!: string;\n @Input(\"session\") session?: any;\n @Input(\"token\") token?: string;\n @Input(\"sessionLimit\") limit: number = 1800000; //30m\n\n private _queue: any[] = [];\n private _processing: boolean = false;\n private _tokenId!: string;\n private _sessionId!: string;\n \n constructor(private service: EventDispatcherService) {\n \n }\n\n ngOnInit(): void {\n this.service.jwt = this.session?.idToken.jwtToken ?? this.token;\n this.service.endpoint = this.endpoint;\n trace(this.service.jwt, this.session)\n this._tokenId = this.session?.idToken.payload.jti ?? this.token;\n this._sessionId = this.determineSessionId();\n window.localStorage.setItem(\"ems_et_sessionId\", this._sessionId);\n window.setInterval(this.updateSession, 1000);\n }\n\n public dispatch(event: any, name?: string): any {\n event.sessionId = this._sessionId;\n this._queue.push({ event, name });\n this.processQueue();\n return event;\n }\n\n private async processQueue() {\n if(this._processing) return;\n this._processing = true;\n\n const obj = this._queue.shift();\n if(!obj) {\n this._processing = false;\n return;\n }\n\n await this.service.dispatch(obj.event, obj.name);\n this.processQueue(); \n }\n\n private determineSessionId() {\n const sessionTimestamp = parseInt(window.localStorage.getItem(this._tokenId) ?? \"\");\n const sessionId = window.localStorage.getItem(\"ems_et_sessionId\");\n const now = (new Date()).getTime();\n\n if(!isNaN(sessionTimestamp) && !empty(sessionId) && this.stillInSession(now, sessionTimestamp)) {\n return sessionId!;\n }\n \n return uuid();\n }\n\n private stillInSession(time1: number, time2: number) {\n return Math.abs(time1 - time2) < this.limit;\n }\n\n private updateSession = () => {\n const timestamp = (new Date()).getTime();\n window.localStorage.setItem(this._tokenId, timestamp.toString());\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { EventDispatcherComponent } from './event-dispatcher.component';\n\n\n\n@NgModule({\n declarations: [\n EventDispatcherComponent\n ],\n imports: [\n ],\n exports: [\n EventDispatcherComponent\n ]\n})\nexport class EventDispatcherModule { }\n","/*\n * Public API Surface of event-dispatcher\n */\n\nexport * from './lib/event-dispatcher.service';\nexport * from './lib/event-dispatcher.component';\nexport * from './lib/event-dispatcher.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["uuid","i1.EventDispatcherService"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"description": "This angular.io module includes a component and service that dispatch events to a given endpoint, while tracking a local session.",
|
|
5
5
|
"funding": "https://paypal.me/spencech",
|
|
6
6
|
"license": "MIT",
|
|
7
|
-
"version": "0.0.
|
|
7
|
+
"version": "0.0.10",
|
|
8
8
|
"peerDependencies": {
|
|
9
9
|
"@angular/common": "^13.2.0",
|
|
10
10
|
"@angular/core": "^13.2.0",
|