UNPKG

@tangential/analytics

Version:

Analytics and advertising - monitization, generally.

78 lines 10.1 kB
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==