@tangential/analytics
Version:
Analytics and advertising - monitization, generally.
78 lines • 10.1 kB
JavaScript
import { Logger, MessageBus, NgUtil } from '@tangential/core';
import { Injectable } from '@angular/core';
import { AppEnvironment } from '@tangential/core';
import * as i0 from "@angular/core";
import * as i1 from "@tangential/core";
export const HitTypes = {
pageView: 'pageview',
screenView: 'screenview',
event: 'event',
transaction: 'transaction',
item: 'item',
social: 'social',
exception: 'exception',
timing: 'timing',
};
export class GoogleAnalytics {
constructor(bus, logger, env) {
this.bus = bus;
this.logger = logger;
this.env = env;
this.analytics = (a, fields, other) => {
if (other) {
this.logger.trace(this, a, fields, other);
}
else {
this.logger.trace(this, a, fields);
}
};
let cfg = env.googleAnalytics;
if (cfg && cfg.enabled) {
this.awaitGoogle(5000).then(windowGa => {
this.analytics = windowGa;
this.create();
});
}
}
awaitGoogle(waitMils) {
return new Promise((resolve) => {
let started = Date.now();
let abortAt = started + waitMils;
let fn = () => {
if (window.ga) {
resolve(window.ga);
}
else if (Date.now() > abortAt) {
resolve(this.analytics);
}
else {
setTimeout(fn, 50);
}
};
});
}
create() {
this.analytics('create', this.env.googleAnalytics.trackingId, 'auto');
this.analytics('send', 'pageview');
}
navigatedToGeneric(state, route) {
const hit = {
hitType: HitTypes.pageView,
eventCategory: 'nav',
eventLabel: 'general'
};
this.analytics('set', 'page', hit.page || state.url);
this.analytics('send', 'generic');
}
navigatedTo(state, route, hit) {
hit.hitType = HitTypes.pageView;
this.analytics('set', 'page', hit.page || NgUtil.keylessUrl(state));
this.analytics('send', hit);
}
}
GoogleAnalytics.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: GoogleAnalytics, deps: [{ token: i1.MessageBus }, { token: i1.Logger }, { token: i1.AppEnvironment }], target: i0.ɵɵFactoryTarget.Injectable });
GoogleAnalytics.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: GoogleAnalytics });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: GoogleAnalytics, decorators: [{
type: Injectable
}], ctorParameters: function () { return [{ type: i1.MessageBus }, { type: i1.Logger }, { type: i1.AppEnvironment }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlLWFuYWx5dGljcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdlbnRpYWwvYW5hbHl0aWNzL3NyYy9saWIvZ29vZ2xlLWFuYWx5dGljcy9nb29nbGUtYW5hbHl0aWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQzVELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGtCQUFrQixDQUFDOzs7QUFXaEQsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHO0lBQ3RCLFFBQVEsRUFBVyxVQUFVO0lBQzdCLFVBQVUsRUFBVyxZQUFZO0lBQ2pDLEtBQUssRUFBVyxPQUFPO0lBQ3ZCLFdBQVcsRUFBVyxhQUFhO0lBQ25DLElBQUksRUFBVyxNQUFNO0lBQ3JCLE1BQU0sRUFBVyxRQUFRO0lBQ3pCLFNBQVMsRUFBVyxXQUFXO0lBQy9CLE1BQU0sRUFBVyxRQUFRO0NBQzFCLENBQUE7QUFtQkQsTUFBTSxPQUFPLGVBQWU7SUFXMUIsWUFBb0IsR0FBZSxFQUNiLE1BQWMsRUFDaEIsR0FBbUI7UUFGbkIsUUFBRyxHQUFILEdBQUcsQ0FBWTtRQUNiLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDaEIsUUFBRyxHQUFILEdBQUcsQ0FBZ0I7UUFWL0IsY0FBUyxHQUFlLENBQUMsQ0FBUyxFQUFFLE1BQTZCLEVBQUUsS0FBYyxFQUFFLEVBQUU7WUFDM0YsSUFBSSxLQUFLLEVBQUU7Z0JBQ1QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUE7YUFDMUM7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQTthQUNuQztRQUNILENBQUMsQ0FBQTtRQUtDLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUE7UUFDN0IsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sRUFBRTtZQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDckMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUE7Z0JBQ3pCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQTtZQUNmLENBQUMsQ0FBQyxDQUFBO1NBRUg7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLFFBQWdCO1FBQzFCLE9BQU8sSUFBSSxPQUFPLENBQWEsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUN6QyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUE7WUFDeEIsSUFBSSxPQUFPLEdBQUcsT0FBTyxHQUFHLFFBQVEsQ0FBQTtZQUNoQyxJQUFJLEVBQUUsR0FBRyxHQUFHLEVBQUU7Z0JBQ1osSUFBSSxNQUFNLENBQUMsRUFBRSxFQUFFO29CQUNiLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUE7aUJBQ25CO3FCQUFNLElBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLE9BQU8sRUFBQztvQkFDN0IsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtpQkFDeEI7cUJBQU07b0JBQ0wsVUFBVSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQTtpQkFDbkI7WUFDSCxDQUFDLENBQUE7UUFDSCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFHRCxrQkFBa0IsQ0FBQyxLQUEwQixFQUFFLEtBQTZCO1FBQzFFLE1BQU0sR0FBRyxHQUEwQjtZQUNqQyxPQUFPLEVBQUUsUUFBUSxDQUFDLFFBQVE7WUFDMUIsYUFBYSxFQUFFLEtBQUs7WUFDcEIsVUFBVSxFQUFFLFNBQVM7U0FDdEIsQ0FBQTtRQUVELElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNwRCxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQTtJQUNuQyxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQTBCLEVBQUUsS0FBNkIsRUFBRSxHQUEwQjtRQUMvRixHQUFHLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUE7UUFDL0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO1FBQ25FLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFBO0lBQzdCLENBQUM7OzZHQTdEVSxlQUFlO2lIQUFmLGVBQWU7NEZBQWYsZUFBZTtrQkFEM0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgUm91dGVyU3RhdGVTbmFwc2hvdH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7TG9nZ2VyLCBNZXNzYWdlQnVzLCBOZ1V0aWx9IGZyb20gJ0B0YW5nZW50aWFsL2NvcmUnO1xuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QXBwRW52aXJvbm1lbnR9IGZyb20gJ0B0YW5nZW50aWFsL2NvcmUnO1xuZXhwb3J0IHR5cGUgSGl0VHlwZSA9XG4gICdwYWdldmlldycgfFxuICAnc2NyZWVudmlldycgfFxuICAnZXZlbnQnIHxcbiAgJ3RyYW5zYWN0aW9uJyB8XG4gICdpdGVtJyB8XG4gICdzb2NpYWwnIHxcbiAgJ2V4Y2VwdGlvbicgfFxuICAndGltaW5nJ1xuXG5leHBvcnQgY29uc3QgSGl0VHlwZXMgPSB7XG4gIHBhZ2VWaWV3OiA8SGl0VHlwZT4ncGFnZXZpZXcnLFxuICBzY3JlZW5WaWV3OiA8SGl0VHlwZT4nc2NyZWVudmlldycsXG4gIGV2ZW50OiA8SGl0VHlwZT4nZXZlbnQnLFxuICB0cmFuc2FjdGlvbjogPEhpdFR5cGU+J3RyYW5zYWN0aW9uJyxcbiAgaXRlbTogPEhpdFR5cGU+J2l0ZW0nLFxuICBzb2NpYWw6IDxIaXRUeXBlPidzb2NpYWwnLFxuICBleGNlcHRpb246IDxIaXRUeXBlPidleGNlcHRpb24nLFxuICB0aW1pbmc6IDxIaXRUeXBlPid0aW1pbmcnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdvb2dsZUFuYWx5dGljc0ZpZWxkcyB7XG4gIGhpdFR5cGU/OiBIaXRUeXBlLFxuICB0aXRsZT86IHN0cmluZyxcbiAgcGFnZT86IHN0cmluZyxcbiAgbG9jYXRpb24/OiBzdHJpbmcsXG5cbiAgZXZlbnRDYXRlZ29yeT86IHN0cmluZyxcbiAgZXZlbnRBY3Rpb24/OiBzdHJpbmcsXG4gIGV2ZW50TGFiZWw/OiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgR2FGdW5jdGlvbiA9IChhY3Rpb246IHN0cmluZywgZmllbGRzPzogR29vZ2xlQW5hbHl0aWNzRmllbGRzIHwgc3RyaW5nLCBvdGhlcj86IHN0cmluZykgPT4gdm9pZFxuLy9ub2luc3BlY3Rpb24gRVM2Q29udmVydFZhclRvTGV0Q29uc3RcbmRlY2xhcmUgdmFyIGdhOiAoYWN0aW9uOiBzdHJpbmcsIGZpZWxkcz86IEdvb2dsZUFuYWx5dGljc0ZpZWxkcyB8IHN0cmluZywgb3RoZXI/OiBzdHJpbmcpID0+IHZvaWQ7XG5kZWNsYXJlIGNvbnN0IHdpbmRvd1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgR29vZ2xlQW5hbHl0aWNzIHtcblxuXG4gIHByaXZhdGUgYW5hbHl0aWNzOiBHYUZ1bmN0aW9uID0gKGE6IHN0cmluZywgZmllbGRzOiBHb29nbGVBbmFseXRpY3NGaWVsZHMsIG90aGVyPzogc3RyaW5nKSA9PiB7XG4gICAgaWYgKG90aGVyKSB7XG4gICAgICB0aGlzLmxvZ2dlci50cmFjZSh0aGlzLCBhLCBmaWVsZHMsIG90aGVyKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvZ2dlci50cmFjZSh0aGlzLCBhLCBmaWVsZHMpXG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBidXM6IE1lc3NhZ2VCdXMsXG4gICAgICAgICAgICAgIHByb3RlY3RlZCBsb2dnZXI6IExvZ2dlcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBlbnY6IEFwcEVudmlyb25tZW50KSB7XG4gICAgbGV0IGNmZyA9IGVudi5nb29nbGVBbmFseXRpY3NcbiAgICBpZiAoY2ZnICYmIGNmZy5lbmFibGVkKSB7XG4gICAgICB0aGlzLmF3YWl0R29vZ2xlKDUwMDApLnRoZW4od2luZG93R2EgPT4ge1xuICAgICAgICB0aGlzLmFuYWx5dGljcyA9IHdpbmRvd0dhXG4gICAgICAgIHRoaXMuY3JlYXRlKClcbiAgICAgIH0pXG5cbiAgICB9XG4gIH1cblxuICBhd2FpdEdvb2dsZSh3YWl0TWlsczogbnVtYmVyKTogUHJvbWlzZTxHYUZ1bmN0aW9uPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPEdhRnVuY3Rpb24+KChyZXNvbHZlKSA9PiB7XG4gICAgICBsZXQgc3RhcnRlZCA9IERhdGUubm93KClcbiAgICAgIGxldCBhYm9ydEF0ID0gc3RhcnRlZCArIHdhaXRNaWxzXG4gICAgICBsZXQgZm4gPSAoKSA9PiB7XG4gICAgICAgIGlmICh3aW5kb3cuZ2EpIHtcbiAgICAgICAgICByZXNvbHZlKHdpbmRvdy5nYSlcbiAgICAgICAgfSBlbHNlIGlmKERhdGUubm93KCkgPiBhYm9ydEF0KXtcbiAgICAgICAgICByZXNvbHZlKHRoaXMuYW5hbHl0aWNzKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNldFRpbWVvdXQoZm4sIDUwKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGNyZWF0ZSgpIHtcbiAgICB0aGlzLmFuYWx5dGljcygnY3JlYXRlJywgdGhpcy5lbnYuZ29vZ2xlQW5hbHl0aWNzLnRyYWNraW5nSWQsICdhdXRvJyk7XG4gICAgdGhpcy5hbmFseXRpY3MoJ3NlbmQnLCAncGFnZXZpZXcnKTtcbiAgfVxuXG5cbiAgbmF2aWdhdGVkVG9HZW5lcmljKHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90LCByb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCkge1xuICAgIGNvbnN0IGhpdDogR29vZ2xlQW5hbHl0aWNzRmllbGRzID0ge1xuICAgICAgaGl0VHlwZTogSGl0VHlwZXMucGFnZVZpZXcsXG4gICAgICBldmVudENhdGVnb3J5OiAnbmF2JyxcbiAgICAgIGV2ZW50TGFiZWw6ICdnZW5lcmFsJ1xuICAgIH1cblxuICAgIHRoaXMuYW5hbHl0aWNzKCdzZXQnLCAncGFnZScsIGhpdC5wYWdlIHx8IHN0YXRlLnVybClcbiAgICB0aGlzLmFuYWx5dGljcygnc2VuZCcsICdnZW5lcmljJylcbiAgfVxuXG4gIG5hdmlnYXRlZFRvKHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90LCByb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgaGl0OiBHb29nbGVBbmFseXRpY3NGaWVsZHMpIHtcbiAgICBoaXQuaGl0VHlwZSA9IEhpdFR5cGVzLnBhZ2VWaWV3XG4gICAgdGhpcy5hbmFseXRpY3MoJ3NldCcsICdwYWdlJywgaGl0LnBhZ2UgfHwgTmdVdGlsLmtleWxlc3NVcmwoc3RhdGUpKVxuICAgIHRoaXMuYW5hbHl0aWNzKCdzZW5kJywgaGl0KVxuICB9XG5cbn1cbiJdfQ==