@microsoft/applicationinsights-angularplugin-js 3.0.3 → 14.0.0
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/IErrorService.mjs +1 -1
- package/esm2020/lib/applicationinsights-angularplugin-error.service.mjs +8 -5
- package/esm2020/lib/applicationinsights-angularplugin-js.component.mjs +126 -80
- package/esm2020/lib/applicationinsights-angularplugin-js.module.mjs +4 -4
- package/esm2020/public-api.mjs +5 -5
- package/fesm2015/microsoft-applicationinsights-angularplugin-js.mjs +127 -78
- package/fesm2015/microsoft-applicationinsights-angularplugin-js.mjs.map +1 -1
- package/fesm2020/microsoft-applicationinsights-angularplugin-js.mjs +126 -77
- package/fesm2020/microsoft-applicationinsights-angularplugin-js.mjs.map +1 -1
- package/lib/IErrorService.d.ts +1 -1
- package/lib/applicationinsights-angularplugin-error.service.d.ts +3 -2
- package/lib/applicationinsights-angularplugin-js.component.d.ts +6 -8
- package/microsoft-applicationinsights-angularplugin-js-14.0.0.tgz +0 -0
- package/package.json +6 -6
- package/public-api.d.ts +4 -4
- package/microsoft-applicationinsights-angularplugin-js-3.0.3.tgz +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSUVycm9yU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FwcGxpY2F0aW9uaW5zaWdodHMtYW5ndWxhcnBsdWdpbi1qcy9zcmMvbGliL0lFcnJvclNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVycm9ySGFuZGxlciB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElFcnJvclNlcnZpY2UgZXh0ZW5kcyBFcnJvckhhbmRsZXIge1xyXG4gICAgaGFuZGxlRXJyb3IoZXJyb3I6IGFueSk6IHZvaWQ7XHJcbn1cclxuIl19
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Injectable } from
|
|
2
|
-
import { arrForEach, isFunction } from
|
|
1
|
+
import { Injectable } from "@angular/core";
|
|
2
|
+
import { arrForEach, isFunction } from "@microsoft/applicationinsights-core-js";
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export class ApplicationinsightsAngularpluginErrorService {
|
|
5
5
|
constructor() {
|
|
@@ -11,6 +11,9 @@ export class ApplicationinsightsAngularpluginErrorService {
|
|
|
11
11
|
set plugin(analyticsPlugin) {
|
|
12
12
|
this.analyticsPlugin = analyticsPlugin;
|
|
13
13
|
}
|
|
14
|
+
clearErrorHandlers() {
|
|
15
|
+
this.errorServices = [];
|
|
16
|
+
}
|
|
14
17
|
addErrorHandler(errorService) {
|
|
15
18
|
if (errorService && isFunction(errorService.handleError)) {
|
|
16
19
|
this.errorServices.push(errorService);
|
|
@@ -39,11 +42,11 @@ export class ApplicationinsightsAngularpluginErrorService {
|
|
|
39
42
|
}
|
|
40
43
|
ApplicationinsightsAngularpluginErrorService.instance = null;
|
|
41
44
|
ApplicationinsightsAngularpluginErrorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ApplicationinsightsAngularpluginErrorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
42
|
-
ApplicationinsightsAngularpluginErrorService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ApplicationinsightsAngularpluginErrorService, providedIn:
|
|
45
|
+
ApplicationinsightsAngularpluginErrorService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ApplicationinsightsAngularpluginErrorService, providedIn: "root" });
|
|
43
46
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ApplicationinsightsAngularpluginErrorService, decorators: [{
|
|
44
47
|
type: Injectable,
|
|
45
48
|
args: [{
|
|
46
|
-
providedIn:
|
|
49
|
+
providedIn: "root"
|
|
47
50
|
}]
|
|
48
51
|
}], ctorParameters: function () { return []; } });
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb25pbnNpZ2h0cy1hbmd1bGFycGx1Z2luLWVycm9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcHBsaWNhdGlvbmluc2lnaHRzLWFuZ3VsYXJwbHVnaW4tanMvc3JjL2xpYi9hcHBsaWNhdGlvbmluc2lnaHRzLWFuZ3VsYXJwbHVnaW4tZXJyb3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7O0FBTWhGLE1BQU0sT0FBTyw0Q0FBNEM7SUFLckQ7UUFGUSxrQkFBYSxHQUFvQixFQUFFLENBQUM7UUFHeEMsSUFBSSw0Q0FBNEMsQ0FBQyxRQUFRLEtBQUssSUFBSSxFQUFFO1lBQ2hFLDRDQUE0QyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7U0FDaEU7SUFDTCxDQUFDO0lBRUQsSUFBVyxNQUFNLENBQUMsZUFBNkI7UUFDM0MsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7SUFDM0MsQ0FBQztJQUVNLGtCQUFrQjtRQUNyQixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRU0sZUFBZSxDQUFDLFlBQTJCO1FBQzlDLElBQUksWUFBWSxJQUFJLFVBQVUsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDdEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDekM7SUFDTCxDQUFDO0lBRU0sa0JBQWtCLENBQUMsWUFBMkI7UUFDakQsSUFBSSxZQUFZLElBQUksVUFBVSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUN0RCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNyRCxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDWixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDckM7U0FDSjtJQUNMLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBVTtRQUNsQixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDdEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUM3RDtRQUVELElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDckQsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsWUFBWSxDQUFDLEVBQUU7Z0JBQzFDLElBQUksVUFBVSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsRUFBRTtvQkFDdEMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDbkM7WUFDTCxDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQzs7QUE3Q2EscURBQVEsR0FBaUQsSUFBSyxDQUFBO3lJQURuRSw0Q0FBNEM7NklBQTVDLDRDQUE0QyxjQUZ6QyxNQUFNOzJGQUVULDRDQUE0QztrQkFIeEQsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgSUFwcEluc2lnaHRzIH0gZnJvbSBcIkBtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1jb21tb25cIjtcclxuaW1wb3J0IHsgYXJyRm9yRWFjaCwgaXNGdW5jdGlvbiB9IGZyb20gXCJAbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtY29yZS1qc1wiO1xyXG5pbXBvcnQgeyBJRXJyb3JTZXJ2aWNlIH0gZnJvbSBcIi4vSUVycm9yU2VydmljZVwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogXCJyb290XCJcclxufSlcclxuZXhwb3J0IGNsYXNzIEFwcGxpY2F0aW9uaW5zaWdodHNBbmd1bGFycGx1Z2luRXJyb3JTZXJ2aWNlIGltcGxlbWVudHMgSUVycm9yU2VydmljZSB7XHJcbiAgICBwdWJsaWMgc3RhdGljIGluc3RhbmNlOiBBcHBsaWNhdGlvbmluc2lnaHRzQW5ndWxhcnBsdWdpbkVycm9yU2VydmljZSA9IG51bGw7XHJcbiAgICBwcml2YXRlIGFuYWx5dGljc1BsdWdpbjogSUFwcEluc2lnaHRzO1xyXG4gICAgcHJpdmF0ZSBlcnJvclNlcnZpY2VzOiBJRXJyb3JTZXJ2aWNlW10gPSBbXTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBpZiAoQXBwbGljYXRpb25pbnNpZ2h0c0FuZ3VsYXJwbHVnaW5FcnJvclNlcnZpY2UuaW5zdGFuY2UgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgQXBwbGljYXRpb25pbnNpZ2h0c0FuZ3VsYXJwbHVnaW5FcnJvclNlcnZpY2UuaW5zdGFuY2UgPSB0aGlzO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2V0IHBsdWdpbihhbmFseXRpY3NQbHVnaW46IElBcHBJbnNpZ2h0cykge1xyXG4gICAgICAgIHRoaXMuYW5hbHl0aWNzUGx1Z2luID0gYW5hbHl0aWNzUGx1Z2luO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjbGVhckVycm9ySGFuZGxlcnMoKSB7XHJcbiAgICAgICAgdGhpcy5lcnJvclNlcnZpY2VzID0gW107XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFkZEVycm9ySGFuZGxlcihlcnJvclNlcnZpY2U6IElFcnJvclNlcnZpY2UpOiB2b2lkIHtcclxuICAgICAgICBpZiAoZXJyb3JTZXJ2aWNlICYmIGlzRnVuY3Rpb24oZXJyb3JTZXJ2aWNlLmhhbmRsZUVycm9yKSkge1xyXG4gICAgICAgICAgICB0aGlzLmVycm9yU2VydmljZXMucHVzaChlcnJvclNlcnZpY2UpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVtb3ZlRXJyb3JIYW5kbGVyKGVycm9yU2VydmljZTogSUVycm9yU2VydmljZSk6IHZvaWQge1xyXG4gICAgICAgIGlmIChlcnJvclNlcnZpY2UgJiYgaXNGdW5jdGlvbihlcnJvclNlcnZpY2UuaGFuZGxlRXJyb3IpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGlkeCA9IHRoaXMuZXJyb3JTZXJ2aWNlcy5pbmRleE9mKGVycm9yU2VydmljZSk7XHJcbiAgICAgICAgICAgIGlmIChpZHggIT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVycm9yU2VydmljZXMuc3BsaWNlKGlkeCwgMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlRXJyb3IoZXJyb3I6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmFuYWx5dGljc1BsdWdpbikge1xyXG4gICAgICAgICAgICB0aGlzLmFuYWx5dGljc1BsdWdpbi50cmFja0V4Y2VwdGlvbih7IGV4Y2VwdGlvbjogZXJyb3IgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5lcnJvclNlcnZpY2VzICYmIHRoaXMuZXJyb3JTZXJ2aWNlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGFyckZvckVhY2godGhpcy5lcnJvclNlcnZpY2VzLCBlcnJvclNlcnZpY2UgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24oZXJyb3JTZXJ2aWNlLmhhbmRsZUVycm9yKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGVycm9yU2VydmljZS5oYW5kbGVFcnJvcihlcnJvcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuIl19
|
|
@@ -1,78 +1,132 @@
|
|
|
1
|
-
import { Component } from
|
|
2
|
-
import { PropertiesPluginIdentifier, AnalyticsPluginIdentifier } from
|
|
3
|
-
import { BaseTelemetryPlugin, arrForEach, getLocation, _throwInternal, generateW3CId } from
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
1
|
+
import { Component } from "@angular/core";
|
|
2
|
+
import { PropertiesPluginIdentifier, AnalyticsPluginIdentifier } from "@microsoft/applicationinsights-common";
|
|
3
|
+
import { BaseTelemetryPlugin, arrForEach, getLocation, _throwInternal, generateW3CId, onConfigChange, isArray } from "@microsoft/applicationinsights-core-js";
|
|
4
|
+
import dynamicProto from "@microsoft/dynamicproto-js";
|
|
5
|
+
import { NavigationEnd } from "@angular/router";
|
|
6
|
+
import { ApplicationinsightsAngularpluginErrorService } from "./applicationinsights-angularplugin-error.service";
|
|
7
|
+
import { objDeepFreeze } from "@nevware21/ts-utils";
|
|
6
8
|
import * as i0 from "@angular/core";
|
|
9
|
+
let undefValue;
|
|
10
|
+
const defaultAngularExtensionConfig = objDeepFreeze({
|
|
11
|
+
router: { blkVal: true, v: undefValue },
|
|
12
|
+
errorServices: { blkVal: true, v: undefValue }
|
|
13
|
+
});
|
|
7
14
|
// eslint-disable-next-line @angular-eslint/component-class-suffix
|
|
8
15
|
export class AngularPlugin extends BaseTelemetryPlugin {
|
|
9
|
-
constructor() {
|
|
16
|
+
constructor(_injector) {
|
|
10
17
|
super();
|
|
18
|
+
this._injector = _injector;
|
|
11
19
|
this.priority = 186;
|
|
12
|
-
this.identifier =
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
let
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
this.identifier = "AngularPlugin";
|
|
21
|
+
let _analyticsPlugin;
|
|
22
|
+
let _propertiesPlugin;
|
|
23
|
+
let _angularCfg;
|
|
24
|
+
let _eventSubscription;
|
|
25
|
+
let _isPageInitialLoad;
|
|
26
|
+
let _prevRouter;
|
|
27
|
+
let _errorServiceInstance;
|
|
28
|
+
dynamicProto(AngularPlugin, this, (_self, _base) => {
|
|
29
|
+
const _initDefaults = () => {
|
|
30
|
+
_analyticsPlugin = null;
|
|
31
|
+
_propertiesPlugin = null;
|
|
32
|
+
_angularCfg = null;
|
|
33
|
+
_eventSubscription = null;
|
|
34
|
+
_isPageInitialLoad = true;
|
|
35
|
+
_prevRouter = undefValue;
|
|
36
|
+
};
|
|
37
|
+
_initDefaults();
|
|
38
|
+
_self.initialize = (config, core, extensions, pluginChain) => {
|
|
39
|
+
super.initialize(config, core, extensions, pluginChain);
|
|
40
|
+
_self._addHook(onConfigChange(config, (details) => {
|
|
41
|
+
let ctx = _self._getTelCtx();
|
|
42
|
+
_angularCfg = ctx.getExtCfg(_self.identifier, defaultAngularExtensionConfig);
|
|
43
|
+
_propertiesPlugin = core.getPlugin(PropertiesPluginIdentifier)?.plugin;
|
|
44
|
+
_analyticsPlugin = core.getPlugin(AnalyticsPluginIdentifier)?.plugin;
|
|
45
|
+
if (_angularCfg.useInjector && _injector) {
|
|
46
|
+
_errorServiceInstance = this._injector.get(ApplicationinsightsAngularpluginErrorService);
|
|
47
|
+
}
|
|
48
|
+
_errorServiceInstance = _errorServiceInstance ? _errorServiceInstance
|
|
49
|
+
: ApplicationinsightsAngularpluginErrorService.instance;
|
|
50
|
+
// two instance of errorService
|
|
51
|
+
if (_analyticsPlugin) {
|
|
52
|
+
if (_errorServiceInstance !== null) {
|
|
53
|
+
_errorServiceInstance.plugin = _analyticsPlugin;
|
|
54
|
+
if (_angularCfg.errorServices && isArray(_angularCfg.errorServices)) {
|
|
55
|
+
_errorServiceInstance.clearErrorHandlers();
|
|
56
|
+
arrForEach(_angularCfg.errorServices, (errorService) => {
|
|
57
|
+
_errorServiceInstance.addErrorHandler(errorService);
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
if (_angularCfg.router !== _prevRouter) {
|
|
63
|
+
// router is changed, or has not been initialized yet
|
|
64
|
+
// unsubscribe previous router events
|
|
65
|
+
if (_eventSubscription) {
|
|
66
|
+
_eventSubscription.unsubscribe();
|
|
67
|
+
}
|
|
68
|
+
if (_angularCfg.router) {
|
|
69
|
+
// only track page view if it is the initial page load for this plugin
|
|
70
|
+
if (_isPageInitialLoad) {
|
|
71
|
+
const pageViewTelemetry = {
|
|
72
|
+
uri: _angularCfg.router.url
|
|
73
|
+
};
|
|
74
|
+
_self.trackPageView(pageViewTelemetry);
|
|
75
|
+
}
|
|
76
|
+
// subscribe to new router events
|
|
77
|
+
_eventSubscription = _angularCfg.router.events.subscribe(event => {
|
|
78
|
+
if (_self.isInitialized()) {
|
|
79
|
+
if (event instanceof NavigationEnd) {
|
|
80
|
+
// for page initial load, do not call trackPageView twice
|
|
81
|
+
if (_isPageInitialLoad) {
|
|
82
|
+
_isPageInitialLoad = false;
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
const pvt = {
|
|
86
|
+
uri: _angularCfg.router.url,
|
|
87
|
+
properties: { duration: 0 } // SPA route change loading durations are undefined, so send 0
|
|
88
|
+
};
|
|
89
|
+
_self.trackPageView(pvt);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
_prevRouter = _angularCfg.router;
|
|
95
|
+
}
|
|
96
|
+
}));
|
|
97
|
+
// for test purpose only
|
|
98
|
+
_self["_getDbgPlgTargets"] = () => _angularCfg;
|
|
99
|
+
_self["_getErrorService"] = () => _errorServiceInstance;
|
|
100
|
+
};
|
|
101
|
+
_self.trackPageView = (pageView) => {
|
|
102
|
+
if (_analyticsPlugin) {
|
|
103
|
+
const location = getLocation();
|
|
104
|
+
if (_propertiesPlugin && _propertiesPlugin.context && _propertiesPlugin.context.telemetryTrace) {
|
|
105
|
+
_propertiesPlugin.context.telemetryTrace.traceID = generateW3CId();
|
|
106
|
+
_propertiesPlugin.context.telemetryTrace.name = location && location.pathname || "_unknown_";
|
|
24
107
|
}
|
|
108
|
+
_analyticsPlugin.trackPageView(pageView);
|
|
25
109
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
self._eventSubscription.unsubscribe();
|
|
29
|
-
self._eventSubscription = null;
|
|
30
|
-
}
|
|
31
|
-
self.analyticsPlugin = null;
|
|
32
|
-
self.propertiesPlugin = null;
|
|
33
|
-
self._angularCfg = null;
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
initialize(config, core, extensions, pluginChain) {
|
|
37
|
-
super.initialize(config, core, extensions, pluginChain);
|
|
38
|
-
const self = this;
|
|
39
|
-
const ctx = self._getTelCtx();
|
|
40
|
-
const extConfig = ctx.getExtCfg(self.identifier, { router: null, errorServices: null });
|
|
41
|
-
self.propertiesPlugin = core.getPlugin(PropertiesPluginIdentifier)?.plugin;
|
|
42
|
-
self.analyticsPlugin = core.getPlugin(AnalyticsPluginIdentifier)?.plugin;
|
|
43
|
-
if (self.analyticsPlugin) {
|
|
44
|
-
if (ApplicationinsightsAngularpluginErrorService.instance !== null) {
|
|
45
|
-
ApplicationinsightsAngularpluginErrorService.instance.plugin = self.analyticsPlugin;
|
|
46
|
-
if (extConfig.errorServices && Array.isArray(extConfig.errorServices)) {
|
|
47
|
-
arrForEach(extConfig.errorServices, (errorService) => {
|
|
48
|
-
ApplicationinsightsAngularpluginErrorService.instance.addErrorHandler(errorService);
|
|
49
|
-
});
|
|
110
|
+
else {
|
|
111
|
+
_throwInternal(_self.diagLog(), 1 /* eLoggingSeverity.CRITICAL */, 64 /* _eInternalMessageId.TelemetryInitializerFailed */, "Analytics plugin is not available, Angular plugin telemetry will not be sent: ");
|
|
50
112
|
}
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
if (extConfig.router) {
|
|
54
|
-
let isPageInitialLoad = true;
|
|
55
|
-
const pageViewTelemetry = {
|
|
56
|
-
uri: extConfig.router.url
|
|
57
113
|
};
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
if (
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
isPageInitialLoad = false;
|
|
65
|
-
return;
|
|
114
|
+
_self._doTeardown = (unloadCtx, unloadState, asyncCallback) => {
|
|
115
|
+
if (_analyticsPlugin && _errorServiceInstance !== null) {
|
|
116
|
+
_errorServiceInstance.plugin = null;
|
|
117
|
+
if (_angularCfg) {
|
|
118
|
+
if (_angularCfg.errorServices && Array.isArray(_angularCfg.errorServices)) {
|
|
119
|
+
_errorServiceInstance.clearErrorHandlers();
|
|
66
120
|
}
|
|
67
|
-
const pvt = {
|
|
68
|
-
uri: extConfig.router.url,
|
|
69
|
-
properties: { duration: 0 } // SPA route change loading durations are undefined, so send 0
|
|
70
|
-
};
|
|
71
|
-
self.trackPageView(pvt);
|
|
72
121
|
}
|
|
73
122
|
}
|
|
74
|
-
|
|
75
|
-
|
|
123
|
+
if (_eventSubscription) {
|
|
124
|
+
_eventSubscription.unsubscribe();
|
|
125
|
+
_eventSubscription = null;
|
|
126
|
+
}
|
|
127
|
+
_initDefaults();
|
|
128
|
+
};
|
|
129
|
+
});
|
|
76
130
|
}
|
|
77
131
|
/**
|
|
78
132
|
* Add Part A fields to the event
|
|
@@ -82,25 +136,17 @@ export class AngularPlugin extends BaseTelemetryPlugin {
|
|
|
82
136
|
processTelemetry(event, itemCtx) {
|
|
83
137
|
this.processNext(event, itemCtx);
|
|
84
138
|
}
|
|
139
|
+
initialize(config, core, extensions, pluginChain) {
|
|
140
|
+
// @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging
|
|
141
|
+
}
|
|
85
142
|
trackPageView(pageView) {
|
|
86
|
-
|
|
87
|
-
if (self.analyticsPlugin) {
|
|
88
|
-
const location = getLocation();
|
|
89
|
-
if (self.propertiesPlugin && self.propertiesPlugin.context && self.propertiesPlugin.context.telemetryTrace) {
|
|
90
|
-
self.propertiesPlugin.context.telemetryTrace.traceID = generateW3CId();
|
|
91
|
-
self.propertiesPlugin.context.telemetryTrace.name = location && location.pathname || '_unknown_';
|
|
92
|
-
}
|
|
93
|
-
self.analyticsPlugin.trackPageView(pageView);
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
_throwInternal(self.diagLog(), 1 /* eLoggingSeverity.CRITICAL */, 64 /* _eInternalMessageId.TelemetryInitializerFailed */, 'Analytics plugin is not available, Angular plugin telemetry will not be sent: ');
|
|
97
|
-
}
|
|
143
|
+
// @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging
|
|
98
144
|
}
|
|
99
145
|
}
|
|
100
|
-
AngularPlugin.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AngularPlugin, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
101
|
-
AngularPlugin.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: AngularPlugin, selector: "lib-applicationinsights-angularplugin-js", usesInheritance: true, ngImport: i0, template:
|
|
146
|
+
AngularPlugin.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AngularPlugin, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
147
|
+
AngularPlugin.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: AngularPlugin, selector: "lib-applicationinsights-angularplugin-js", usesInheritance: true, ngImport: i0, template: "", isInline: true });
|
|
102
148
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AngularPlugin, decorators: [{
|
|
103
149
|
type: Component,
|
|
104
|
-
args: [{ selector:
|
|
105
|
-
}], ctorParameters: function () { return []; } });
|
|
106
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb25pbnNpZ2h0cy1hbmd1bGFycGx1Z2luLWpzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FwcGxpY2F0aW9uaW5zaWdodHMtYW5ndWxhcnBsdWdpbi1qcy9zcmMvbGliL2FwcGxpY2F0aW9uaW5zaWdodHMtYW5ndWxhcnBsdWdpbi1qcy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQ3dDLDBCQUEwQixFQUFFLHlCQUF5QixFQUNuRyxNQUFNLHVDQUF1QyxDQUFDO0FBQy9DLE9BQU8sRUFFSCxtQkFBbUIsRUFBRSxVQUFVLEVBQ0wsV0FBVyxFQUFFLGNBQWMsRUFBZ0csYUFBYSxFQUNySyxNQUFNLHdDQUF3QyxDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUd4RCxPQUFPLEVBQUUsNENBQTRDLEVBQUUsTUFBTSxtREFBbUQsQ0FBQzs7QUFzQmpILGtFQUFrRTtBQUNsRSxNQUFNLE9BQU8sYUFBYyxTQUFRLG1CQUFtQjtJQVVsRDtRQUNJLEtBQUssRUFBRSxDQUFDO1FBVkwsYUFBUSxHQUFHLEdBQUcsQ0FBQztRQUNmLGVBQVUsR0FBRyxlQUFlLENBQUM7UUFJNUIsZ0JBQVcsR0FBNEIsSUFBSSxDQUFDO1FBQzVDLHVCQUFrQixHQUFpQixJQUFJLENBQUM7UUFLNUMsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBRWhCLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxTQUEwQyxFQUFFLFdBQW1DLEVBQUUsYUFBMEIsRUFBa0IsRUFBRTtZQUMvSSxJQUFJLElBQUksQ0FBQyxlQUFlLElBQUksNENBQTRDLENBQUMsUUFBUSxLQUFLLElBQUksRUFBRTtnQkFDeEYsNENBQTRDLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxJ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QUpaLEVBQUU7MkZBSUgsYUFBYTtrQkFOekIsU0FBUzsrQkFDSSwwQ0FBMEMsWUFDMUMsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gICAgSUNvbmZpZywgSVBhZ2VWaWV3VGVsZW1ldHJ5LCBJQXBwSW5zaWdodHMsIFByb3BlcnRpZXNQbHVnaW5JZGVudGlmaWVyLCBBbmFseXRpY3NQbHVnaW5JZGVudGlmaWVyXHJcbn0gZnJvbSAnQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWNvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgICBJUGx1Z2luLCBJQ29uZmlndXJhdGlvbiwgSUFwcEluc2lnaHRzQ29yZSxcclxuICAgIEJhc2VUZWxlbWV0cnlQbHVnaW4sIGFyckZvckVhY2gsIElUZWxlbWV0cnlJdGVtLCBJVGVsZW1ldHJ5UGx1Z2luQ2hhaW4sXHJcbiAgICBJUHJvY2Vzc1RlbGVtZXRyeUNvbnRleHQsIGdldExvY2F0aW9uLCBfdGhyb3dJbnRlcm5hbCwgZUxvZ2dpbmdTZXZlcml0eSwgX2VJbnRlcm5hbE1lc3NhZ2VJZCwgSVByb2Nlc3NUZWxlbWV0cnlVbmxvYWRDb250ZXh0LCBJVGVsZW1ldHJ5VW5sb2FkU3RhdGUsIGdlbmVyYXRlVzNDSWRcclxufSBmcm9tICdAbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtY29yZS1qcyc7XHJcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbi8vIEZvciB0eXBlcyBvbmx5XHJcbmltcG9ydCAqIGFzIHByb3BlcnRpZXMgZnJvbSAnQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLXByb3BlcnRpZXMtanMnO1xyXG5pbXBvcnQgeyBBcHBsaWNhdGlvbmluc2lnaHRzQW5ndWxhcnBsdWdpbkVycm9yU2VydmljZSB9IGZyb20gJy4vYXBwbGljYXRpb25pbnNpZ2h0cy1hbmd1bGFycGx1Z2luLWVycm9yLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJRXJyb3JTZXJ2aWNlIH0gZnJvbSAnLi9JRXJyb3JTZXJ2aWNlJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFuYWx5dGljc1BsdWdpbiB9IGZyb20gJ0BtaWNyb3NvZnQvYXBwbGljYXRpb25pbnNpZ2h0cy1hbmFseXRpY3MtanMnO1xyXG5cclxuaW50ZXJmYWNlIElBbmd1bGFyRXh0ZW5zaW9uQ29uZmlnIHtcclxuICAgIC8qKlxyXG4gICAgICogQW5ndWxhciByb3V0ZXIgZm9yIGVuYWJsaW5nIEFwcGxpY2F0aW9uIEluc2lnaHRzIFBhZ2VWaWV3IHRyYWNraW5nLlxyXG4gICAgICovXHJcbiAgICByb3V0ZXI/OiBSb3V0ZXI7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDdXN0b20gZXJyb3Igc2VydmljZSBmb3IgZ2xvYmFsIGVycm9yIGhhbmRsaW5nLlxyXG4gICAgICovXHJcbiAgICBlcnJvclNlcnZpY2VzPzogSUVycm9yU2VydmljZVtdO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnbGliLWFwcGxpY2F0aW9uaW5zaWdodHMtYW5ndWxhcnBsdWdpbi1qcycsXHJcbiAgICB0ZW1wbGF0ZTogYGAsXHJcbiAgICBzdHlsZXM6IFtdXHJcbn0pXHJcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LWNsYXNzLXN1ZmZpeFxyXG5leHBvcnQgY2xhc3MgQW5ndWxhclBsdWdpbiBleHRlbmRzIEJhc2VUZWxlbWV0cnlQbHVnaW4ge1xyXG4gICAgcHVibGljIHByaW9yaXR5ID0gMTg2O1xyXG4gICAgcHVibGljIGlkZW50aWZpZXIgPSAnQW5ndWxhclBsdWdpbic7XHJcblxyXG4gICAgcHJpdmF0ZSBhbmFseXRpY3NQbHVnaW46IEFuYWx5dGljc1BsdWdpbjtcclxuICAgIHByaXZhdGUgcHJvcGVydGllc1BsdWdpbjogcHJvcGVydGllcy5Qcm9wZXJ0aWVzUGx1Z2luO1xyXG4gICAgcHJpdmF0ZSBfYW5ndWxhckNmZzogSUFuZ3VsYXJFeHRlbnNpb25Db25maWcgPSBudWxsO1xyXG4gICAgcHJpdmF0ZSBfZXZlbnRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IG51bGw7XHJcblxyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgbGV0IHNlbGYgPSB0aGlzO1xyXG5cclxuICAgICAgICBzZWxmLl9kb1RlYXJkb3duID0gKHVubG9hZEN0eD86IElQcm9jZXNzVGVsZW1ldHJ5VW5sb2FkQ29udGV4dCwgdW5sb2FkU3RhdGU/OiBJVGVsZW1ldHJ5VW5sb2FkU3RhdGUsIGFzeW5jQ2FsbGJhY2s/OiAoKSA9PiB2b2lkKTogdm9pZCB8IGJvb2xlYW4gPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5hbmFseXRpY3NQbHVnaW4gJiYgQXBwbGljYXRpb25pbnNpZ2h0c0FuZ3VsYXJwbHVnaW5FcnJvclNlcnZpY2UuaW5zdGFuY2UgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIEFwcGxpY2F0aW9uaW5zaWdodHNBbmd1bGFycGx1Z2luRXJyb3JTZXJ2aWNlLmluc3RhbmNlLnBsdWdpbiA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBpZiAoc2VsZi5fYW5ndWxhckNmZykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxmLl9hbmd1bGFyQ2ZnLmVycm9yU2VydmljZXMgJiYgQXJyYXkuaXNBcnJheShzZWxmLl9hbmd1bGFyQ2ZnLmVycm9yU2VydmljZXMpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyckZvckVhY2goc2VsZi5fYW5ndWxhckNmZy5lcnJvclNlcnZpY2VzLCAoZXJyb3JTZXJ2aWNlOiBJRXJyb3JTZXJ2aWNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcHBsaWNhdGlvbmluc2lnaHRzQW5ndWxhcnBsdWdpbkVycm9yU2VydmljZS5pbnN0YW5jZS5yZW1vdmVFcnJvckhhbmRsZXIoZXJyb3JTZXJ2aWNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoc2VsZi5fZXZlbnRTdWJzY3JpcHRpb24pIHtcclxuICAgICAgICAgICAgICAgIHNlbGYuX2V2ZW50U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICAgICAgICBzZWxmLl9ldmVudFN1YnNjcmlwdGlvbiA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHNlbGYuYW5hbHl0aWNzUGx1Z2luID0gbnVsbDtcclxuICAgICAgICAgICAgc2VsZi5wcm9wZXJ0aWVzUGx1Z2luID0gbnVsbDtcclxuICAgICAgICAgICAgc2VsZi5fYW5ndWxhckNmZyA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGluaXRpYWxpemUoY29uZmlnOiBJQ29uZmlndXJhdGlvbiAmIElDb25maWcsIGNvcmU6IElBcHBJbnNpZ2h0c0NvcmUsIGV4dGVuc2lvbnM6IElQbHVnaW5bXSwgcGx1Z2luQ2hhaW4/OiBJVGVsZW1ldHJ5UGx1Z2luQ2hhaW4pIHtcclxuICAgICAgICBzdXBlci5pbml0aWFsaXplKGNvbmZpZywgY29yZSwgZXh0ZW5zaW9ucywgcGx1Z2luQ2hhaW4pO1xyXG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xyXG4gICAgICAgIGNvbnN0IGN0eCA9IHNlbGYuX2dldFRlbEN0eCgpO1xyXG4gICAgICAgIGNvbnN0IGV4dENvbmZpZyA9IGN0eC5nZXRFeHRDZmc8SUFuZ3VsYXJFeHRlbnNpb25Db25maWc+KHNlbGYuaWRlbnRpZmllciwgeyByb3V0ZXI6IG51bGwsIGVycm9yU2VydmljZXM6IG51bGwgfSk7XHJcblxyXG4gICAgICAgIHNlbGYucHJvcGVydGllc1BsdWdpbiA9IGNvcmUuZ2V0UGx1Z2luPHByb3BlcnRpZXMuUHJvcGVydGllc1BsdWdpbj4oUHJvcGVydGllc1BsdWdpbklkZW50aWZpZXIpPy5wbHVnaW47XHJcbiAgICAgICAgc2VsZi5hbmFseXRpY3NQbHVnaW4gPSBjb3JlLmdldFBsdWdpbjxBbmFseXRpY3NQbHVnaW4+KEFuYWx5dGljc1BsdWdpbklkZW50aWZpZXIpPy5wbHVnaW47XHJcbiAgICAgICAgaWYgKHNlbGYuYW5hbHl0aWNzUGx1Z2luKSB7XHJcbiAgICAgICAgICAgIGlmIChBcHBsaWNhdGlvbmluc2lnaHRzQW5ndWxhcnBsdWdpbkVycm9yU2VydmljZS5pbnN0YW5jZSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgQXBwbGljYXRpb25pbnNpZ2h0c0FuZ3VsYXJwbHVnaW5FcnJvclNlcnZpY2UuaW5zdGFuY2UucGx1Z2luID0gc2VsZi5hbmFseXRpY3NQbHVnaW47XHJcbiAgICAgICAgICAgICAgICBpZiAoZXh0Q29uZmlnLmVycm9yU2VydmljZXMgJiYgQXJyYXkuaXNBcnJheShleHRDb25maWcuZXJyb3JTZXJ2aWNlcykpIHtcclxuICAgICAgICAgICAgICAgICAgICBhcnJGb3JFYWNoKGV4dENvbmZpZy5lcnJvclNlcnZpY2VzLCAoZXJyb3JTZXJ2aWNlOiBJRXJyb3JTZXJ2aWNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEFwcGxpY2F0aW9uaW5zaWdodHNBbmd1bGFycGx1Z2luRXJyb3JTZXJ2aWNlLmluc3RhbmNlLmFkZEVycm9ySGFuZGxlcihlcnJvclNlcnZpY2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZXh0Q29uZmlnLnJvdXRlcikge1xyXG4gICAgICAgICAgICBsZXQgaXNQYWdlSW5pdGlhbExvYWQgPSB0cnVlO1xyXG4gICAgICAgICAgICBjb25zdCBwYWdlVmlld1RlbGVtZXRyeTogSVBhZ2VWaWV3VGVsZW1ldHJ5ID0ge1xyXG4gICAgICAgICAgICAgICAgdXJpOiBleHRDb25maWcucm91dGVyLnVybFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBzZWxmLnRyYWNrUGFnZVZpZXcocGFnZVZpZXdUZWxlbWV0cnkpO1xyXG4gICAgICAgICAgICBzZWxmLl9ldmVudFN1YnNjcmlwdGlvbiA9IGV4dENvbmZpZy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoc2VsZi5pc0luaXRpYWxpemVkKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBwYWdlIGluaXRpYWwgbG9hZCwgZG8gbm90IGNhbGwgdHJhY2tQYWdlVmlldyB0d2ljZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNQYWdlSW5pdGlhbExvYWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUGFnZUluaXRpYWxMb2FkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHZ0OiBJUGFnZVZpZXdUZWxlbWV0cnkgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmk6IGV4dENvbmZpZy5yb3V0ZXIudXJsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczogeyBkdXJhdGlvbjogMCB9IC8vIFNQQSByb3V0ZSBjaGFuZ2UgbG9hZGluZyBkdXJhdGlvbnMgYXJlIHVuZGVmaW5lZCwgc28gc2VuZCAwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudHJhY2tQYWdlVmlldyhwdnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkIFBhcnQgQSBmaWVsZHMgdG8gdGhlIGV2ZW50XHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGV2ZW50IFRoZSBldmVudCB0aGF0IG5lZWRzIHRvIGJlIHByb2Nlc3NlZFxyXG4gICAgICovXHJcbiAgICBwcm9jZXNzVGVsZW1ldHJ5KGV2ZW50OiBJVGVsZW1ldHJ5SXRlbSwgaXRlbUN0eD86IElQcm9jZXNzVGVsZW1ldHJ5Q29udGV4dCkge1xyXG4gICAgICAgIHRoaXMucHJvY2Vzc05leHQoZXZlbnQsIGl0ZW1DdHgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRyYWNrUGFnZVZpZXcocGFnZVZpZXc6IElQYWdlVmlld1RlbGVtZXRyeSkge1xyXG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xyXG5cclxuICAgICAgICBpZiAoc2VsZi5hbmFseXRpY3NQbHVnaW4pIHtcclxuICAgICAgICAgICAgY29uc3QgbG9jYXRpb24gPSBnZXRMb2NhdGlvbigpO1xyXG4gICAgICAgICAgICBpZiAoc2VsZi5wcm9wZXJ0aWVzUGx1Z2luICYmIHNlbGYucHJvcGVydGllc1BsdWdpbi5jb250ZXh0ICYmIHNlbGYucHJvcGVydGllc1BsdWdpbi5jb250ZXh0LnRlbGVtZXRyeVRyYWNlKSB7XHJcbiAgICAgICAgICAgICAgICBzZWxmLnByb3BlcnRpZXNQbHVnaW4uY29udGV4dC50ZWxlbWV0cnlUcmFjZS50cmFjZUlEID0gZ2VuZXJhdGVXM0NJZCgpO1xyXG4gICAgICAgICAgICAgICAgc2VsZi5wcm9wZXJ0aWVzUGx1Z2luLmNvbnRleHQudGVsZW1ldHJ5VHJhY2UubmFtZSA9IGxvY2F0aW9uICYmIGxvY2F0aW9uLnBhdGhuYW1lIHx8ICdfdW5rbm93bl8nO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHNlbGYuYW5hbHl0aWNzUGx1Z2luLnRyYWNrUGFnZVZpZXcocGFnZVZpZXcpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIF90aHJvd0ludGVybmFsKHNlbGYuZGlhZ0xvZygpLFxyXG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cclxuICAgICAgICAgICAgICAgIGVMb2dnaW5nU2V2ZXJpdHkuQ1JJVElDQUwsIF9lSW50ZXJuYWxNZXNzYWdlSWQuVGVsZW1ldHJ5SW5pdGlhbGl6ZXJGYWlsZWQsICdBbmFseXRpY3MgcGx1Z2luIGlzIG5vdCBhdmFpbGFibGUsIEFuZ3VsYXIgcGx1Z2luIHRlbGVtZXRyeSB3aWxsIG5vdCBiZSBzZW50OiAnKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG59XHJcbiJdfQ==
|
|
150
|
+
args: [{ selector: "lib-applicationinsights-angularplugin-js", template: "" }]
|
|
151
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
152
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb25pbnNpZ2h0cy1hbmd1bGFycGx1Z2luLWpzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FwcGxpY2F0aW9uaW5zaWdodHMtYW5ndWxhcnBsdWdpbi1qcy9zcmMvbGliL2FwcGxpY2F0aW9uaW5zaWdodHMtYW5ndWxhcnBsdWdpbi1qcy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVyxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQzBCLDBCQUEwQixFQUFFLHlCQUF5QixFQUNyRixNQUFNLHVDQUF1QyxDQUFDO0FBQy9DLE9BQU8sRUFDd0MsbUJBQW1CLEVBQUUsVUFBVSxFQUNoRCxXQUFXLEVBQUUsY0FBYyxFQUM5QixhQUFhLEVBQUUsY0FBYyxFQUFtQixPQUFPLEVBQ2pGLE1BQU0sd0NBQXdDLENBQUM7QUFDaEQsT0FBTyxZQUFZLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSw0Q0FBNEMsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBSWpILE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQzs7QUFnQmxELElBQUksVUFBVSxDQUFDO0FBRWYsTUFBTSw2QkFBNkIsR0FBNkMsYUFBYSxDQUFDO0lBQzFGLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBQztJQUN0QyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUM7Q0FDaEQsQ0FBQyxDQUFDO0FBT0gsa0VBQWtFO0FBQ2xFLE1BQU0sT0FBTyxhQUFjLFNBQVEsbUJBQW1CO0lBSWxELFlBQW9CLFNBQW9CO1FBQ3BDLEtBQUssRUFBRSxDQUFDO1FBRFEsY0FB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QUUsT0FBTyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUdELFVBQVUsQ0FBQyxNQUFnQyxFQUFFLElBQXNCLEVBQUUsVUFBcUIsRUFBRSxXQUFtQztRQUMzSCxvRkFBb0Y7SUFDeEYsQ0FBQztJQUVELGFBQWEsQ0FBQyxRQUE0QjtRQUN0QyxvRkFBb0Y7SUFDeEYsQ0FBQzs7MEdBMUpRLGFBQWE7OEZBQWIsYUFBYSx1R0FKWixFQUFFOzJGQUlILGFBQWE7a0JBTnpCLFNBQVM7K0JBQ0ksMENBQTBDLFlBQzFDLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdG9yfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge1xyXG4gICAgSUNvbmZpZywgSVBhZ2VWaWV3VGVsZW1ldHJ5LCBQcm9wZXJ0aWVzUGx1Z2luSWRlbnRpZmllciwgQW5hbHl0aWNzUGx1Z2luSWRlbnRpZmllclxyXG59IGZyb20gXCJAbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtY29tbW9uXCI7XHJcbmltcG9ydCB7XHJcbiAgICBJUGx1Z2luLCBJQ29uZmlndXJhdGlvbiwgSUFwcEluc2lnaHRzQ29yZSwgQmFzZVRlbGVtZXRyeVBsdWdpbiwgYXJyRm9yRWFjaCwgSVRlbGVtZXRyeUl0ZW0sIElUZWxlbWV0cnlQbHVnaW5DaGFpbixcclxuICAgIElQcm9jZXNzVGVsZW1ldHJ5Q29udGV4dCwgZ2V0TG9jYXRpb24sIF90aHJvd0ludGVybmFsLCBlTG9nZ2luZ1NldmVyaXR5LCBfZUludGVybmFsTWVzc2FnZUlkLCBJUHJvY2Vzc1RlbGVtZXRyeVVubG9hZENvbnRleHQsXHJcbiAgICBJVGVsZW1ldHJ5VW5sb2FkU3RhdGUsIGdlbmVyYXRlVzNDSWQsIG9uQ29uZmlnQ2hhbmdlLCBJQ29uZmlnRGVmYXVsdHMsIGlzQXJyYXlcclxufSBmcm9tIFwiQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWNvcmUtanNcIjtcclxuaW1wb3J0IGR5bmFtaWNQcm90byBmcm9tIFwiQG1pY3Jvc29mdC9keW5hbWljcHJvdG8tanNcIjtcclxuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBBcHBsaWNhdGlvbmluc2lnaHRzQW5ndWxhcnBsdWdpbkVycm9yU2VydmljZSB9IGZyb20gXCIuL2FwcGxpY2F0aW9uaW5zaWdodHMtYW5ndWxhcnBsdWdpbi1lcnJvci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IElFcnJvclNlcnZpY2UgfSBmcm9tIFwiLi9JRXJyb3JTZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IEFuYWx5dGljc1BsdWdpbiB9IGZyb20gXCJAbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtYW5hbHl0aWNzLWpzXCI7XHJcbmltcG9ydCB7b2JqRGVlcEZyZWV6ZX0gZnJvbSBcIkBuZXZ3YXJlMjEvdHMtdXRpbHNcIjtcclxuaW1wb3J0IHsgUHJvcGVydGllc1BsdWdpbiB9IGZyb20gXCJAbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtcHJvcGVydGllcy1qc1wiO1xyXG5cclxuaW50ZXJmYWNlIElBbmd1bGFyRXh0ZW5zaW9uQ29uZmlnIHtcclxuICAgIC8qKlxyXG4gICAgICogQW5ndWxhciByb3V0ZXIgZm9yIGVuYWJsaW5nIEFwcGxpY2F0aW9uIEluc2lnaHRzIFBhZ2VWaWV3IHRyYWNraW5nLlxyXG4gICAgICovXHJcbiAgICByb3V0ZXI/OiBSb3V0ZXI7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDdXN0b20gZXJyb3Igc2VydmljZSBmb3IgZ2xvYmFsIGVycm9yIGhhbmRsaW5nLlxyXG4gICAgICovXHJcbiAgICBlcnJvclNlcnZpY2VzPzogSUVycm9yU2VydmljZVtdO1xyXG4gICAgdXNlSW5qZWN0b3I/OiBib29sZWFuO1xyXG59XHJcblxyXG5sZXQgdW5kZWZWYWx1ZTtcclxuXHJcbmNvbnN0IGRlZmF1bHRBbmd1bGFyRXh0ZW5zaW9uQ29uZmlnOiBJQ29uZmlnRGVmYXVsdHM8SUFuZ3VsYXJFeHRlbnNpb25Db25maWc+ID0gb2JqRGVlcEZyZWV6ZSh7XHJcbiAgICByb3V0ZXI6IHsgYmxrVmFsOiB0cnVlLCB2OiB1bmRlZlZhbHVlfSxcclxuICAgIGVycm9yU2VydmljZXM6IHsgYmxrVmFsOiB0cnVlLCB2OiB1bmRlZlZhbHVlfVxyXG59KTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6IFwibGliLWFwcGxpY2F0aW9uaW5zaWdodHMtYW5ndWxhcnBsdWdpbi1qc1wiLFxyXG4gICAgdGVtcGxhdGU6IFwiXCIsXHJcbiAgICBzdHlsZXM6IFtdXHJcbn0pXHJcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LWNsYXNzLXN1ZmZpeFxyXG5leHBvcnQgY2xhc3MgQW5ndWxhclBsdWdpbiBleHRlbmRzIEJhc2VUZWxlbWV0cnlQbHVnaW4ge1xyXG4gICAgcHVibGljIHByaW9yaXR5ID0gMTg2O1xyXG4gICAgcHVibGljIGlkZW50aWZpZXIgPSBcIkFuZ3VsYXJQbHVnaW5cIjtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9pbmplY3Rvcj86IEluamVjdG9yKSB7IC8vIF9pbmplY3RvciBpcyBvcHRpb25hbCB0byBwcm92aWRlXHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBsZXQgX2FuYWx5dGljc1BsdWdpbjogQW5hbHl0aWNzUGx1Z2luO1xyXG4gICAgICAgIGxldCBfcHJvcGVydGllc1BsdWdpbjogUHJvcGVydGllc1BsdWdpbjtcclxuICAgICAgICBsZXQgX2FuZ3VsYXJDZmc6IElBbmd1bGFyRXh0ZW5zaW9uQ29uZmlnO1xyXG4gICAgICAgIGxldCBfZXZlbnRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICAgICAgICBsZXQgX2lzUGFnZUluaXRpYWxMb2FkOiBib29sZWFuO1xyXG4gICAgICAgIGxldCBfcHJldlJvdXRlcjogUm91dGVyO1xyXG4gICAgICAgIGxldCBfZXJyb3JTZXJ2aWNlSW5zdGFuY2U6IEFwcGxpY2F0aW9uaW5zaWdodHNBbmd1bGFycGx1Z2luRXJyb3JTZXJ2aWNlO1xyXG5cclxuICAgICAgICBkeW5hbWljUHJvdG8oQW5ndWxhclBsdWdpbiwgdGhpcywgKF9zZWxmLCBfYmFzZSkgPT4ge1xyXG5cclxuICAgICAgICAgICAgY29uc3QgX2luaXREZWZhdWx0cyA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIF9hbmFseXRpY3NQbHVnaW4gPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgX3Byb3BlcnRpZXNQbHVnaW4gPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgX2FuZ3VsYXJDZmcgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgX2V2ZW50U3Vic2NyaXB0aW9uID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIF9pc1BhZ2VJbml0aWFsTG9hZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBfcHJldlJvdXRlciA9IHVuZGVmVmFsdWU7XHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBfaW5pdERlZmF1bHRzKCk7XHJcblxyXG4gICAgICAgICAgICBfc2VsZi5pbml0aWFsaXplID0gKGNvbmZpZzogSUNvbmZpZ3VyYXRpb24gJiBJQ29uZmlnLCBjb3JlOiBJQXBwSW5zaWdodHNDb3JlLCBleHRlbnNpb25zOiBJUGx1Z2luW10sXHJcbiAgICAgICAgICAgICAgICBwbHVnaW5DaGFpbj86IElUZWxlbWV0cnlQbHVnaW5DaGFpbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgc3VwZXIuaW5pdGlhbGl6ZShjb25maWcsIGNvcmUsIGV4dGVuc2lvbnMsIHBsdWdpbkNoYWluKTtcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgIF9zZWxmLl9hZGRIb29rKG9uQ29uZmlnQ2hhbmdlKGNvbmZpZywgKGRldGFpbHMpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY3R4ID0gX3NlbGYuX2dldFRlbEN0eCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIF9hbmd1bGFyQ2ZnID0gY3R4LmdldEV4dENmZzxJQW5ndWxhckV4dGVuc2lvbkNvbmZpZz4oX3NlbGYuaWRlbnRpZmllciwgZGVmYXVsdEFuZ3VsYXJFeHRlbnNpb25Db25maWcpO1xyXG4gICAgICAgICAgICAgICAgICAgIF9wcm9wZXJ0aWVzUGx1Z2luID0gY29yZS5nZXRQbHVnaW48UHJvcGVydGllc1BsdWdpbj4oUHJvcGVydGllc1BsdWdpbklkZW50aWZpZXIpPy5wbHVnaW4gYXMgUHJvcGVydGllc1BsdWdpbjtcclxuICAgICAgICAgICAgICAgICAgICBfYW5hbHl0aWNzUGx1Z2luID0gY29yZS5nZXRQbHVnaW48QW5hbHl0aWNzUGx1Z2luPihBbmFseXRpY3NQbHVnaW5JZGVudGlmaWVyKT8ucGx1Z2luIGFzIEFuYWx5dGljc1BsdWdpbjtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBpZiAoX2FuZ3VsYXJDZmcudXNlSW5qZWN0b3IgJiYgX2luamVjdG9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX2Vycm9yU2VydmljZUluc3RhbmNlID0gdGhpcy5faW5qZWN0b3IuZ2V0KEFwcGxpY2F0aW9uaW5zaWdodHNBbmd1bGFycGx1Z2luRXJyb3JTZXJ2aWNlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgX2Vycm9yU2VydmljZUluc3RhbmNlID0gX2Vycm9yU2VydmljZUluc3RhbmNlID8gX2Vycm9yU2VydmljZUluc3RhbmNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogQXBwbGljYXRpb25pbnNpZ2h0c0FuZ3VsYXJwbHVnaW5FcnJvclNlcnZpY2UuaW5zdGFuY2U7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHR3byBpbnN0YW5jZSBvZiBlcnJvclNlcnZpY2VcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKF9hbmFseXRpY3NQbHVnaW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9lcnJvclNlcnZpY2VJbnN0YW5jZSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Vycm9yU2VydmljZUluc3RhbmNlLnBsdWdpbiA9IF9hbmFseXRpY3NQbHVnaW47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX2FuZ3VsYXJDZmcuZXJyb3JTZXJ2aWNlcyAmJiBpc0FycmF5KF9hbmd1bGFyQ2ZnLmVycm9yU2VydmljZXMpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Vycm9yU2VydmljZUluc3RhbmNlLmNsZWFyRXJyb3JIYW5kbGVycygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyckZvckVhY2goX2FuZ3VsYXJDZmcuZXJyb3JTZXJ2aWNlcywgKGVycm9yU2VydmljZTogSUVycm9yU2VydmljZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZXJyb3JTZXJ2aWNlSW5zdGFuY2UuYWRkRXJyb3JIYW5kbGVyKGVycm9yU2VydmljZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKF9hbmd1bGFyQ2ZnLnJvdXRlciAhPT0gX3ByZXZSb3V0ZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gcm91dGVyIGlzIGNoYW5nZWQsIG9yIGhhcyBub3QgYmVlbiBpbml0aWFsaXplZCB5ZXRcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVuc3Vic2NyaWJlIHByZXZpb3VzIHJvdXRlciBldmVudHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9ldmVudFN1YnNjcmlwdGlvbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2V2ZW50U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfYW5ndWxhckNmZy5yb3V0ZXIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb25seSB0cmFjayBwYWdlIHZpZXcgaWYgaXQgaXMgdGhlIGluaXRpYWwgcGFnZSBsb2FkIGZvciB0aGlzIHBsdWdpblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9pc1BhZ2VJbml0aWFsTG9hZCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFnZVZpZXdUZWxlbWV0cnk6IElQYWdlVmlld1RlbGVtZXRyeSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJpOiBfYW5ndWxhckNmZy5yb3V0ZXIudXJsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfc2VsZi50cmFja1BhZ2VWaWV3KHBhZ2VWaWV3VGVsZW1ldHJ5KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3Vic2NyaWJlIHRvIG5ldyByb3V0ZXIgZXZlbnRzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZXZlbnRTdWJzY3JpcHRpb24gPSBfYW5ndWxhckNmZy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9zZWxmLmlzSW5pdGlhbGl6ZWQoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgcGFnZSBpbml0aWFsIGxvYWQsIGRvIG5vdCBjYWxsIHRyYWNrUGFnZVZpZXcgdHdpY2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfaXNQYWdlSW5pdGlhbExvYWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfaXNQYWdlSW5pdGlhbExvYWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwdnQ6IElQYWdlVmlld1RlbGVtZXRyeSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmk6IF9hbmd1bGFyQ2ZnLnJvdXRlci51cmwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczogeyBkdXJhdGlvbjogMCB9IC8vIFNQQSByb3V0ZSBjaGFuZ2UgbG9hZGluZyBkdXJhdGlvbnMgYXJlIHVuZGVmaW5lZCwgc28gc2VuZCAwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3NlbGYudHJhY2tQYWdlVmlldyhwdnQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgX3ByZXZSb3V0ZXIgPSBfYW5ndWxhckNmZy5yb3V0ZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSkpO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIGZvciB0ZXN0IHB1cnBvc2Ugb25seVxyXG4gICAgICAgICAgICAgICAgX3NlbGZbXCJfZ2V0RGJnUGxnVGFyZ2V0c1wiXSA9ICgpID0+IF9hbmd1bGFyQ2ZnO1xyXG4gICAgICAgICAgICAgICAgX3NlbGZbXCJfZ2V0RXJyb3JTZXJ2aWNlXCJdID0gKCkgPT4gX2Vycm9yU2VydmljZUluc3RhbmNlO1xyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgX3NlbGYudHJhY2tQYWdlVmlldyA9IChwYWdlVmlldzogSVBhZ2VWaWV3VGVsZW1ldHJ5KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoX2FuYWx5dGljc1BsdWdpbikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxvY2F0aW9uID0gZ2V0TG9jYXRpb24oKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoX3Byb3BlcnRpZXNQbHVnaW4gJiYgX3Byb3BlcnRpZXNQbHVnaW4uY29udGV4dCAmJiBfcHJvcGVydGllc1BsdWdpbi5jb250ZXh0LnRlbGVtZXRyeVRyYWNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9wcm9wZXJ0aWVzUGx1Z2luLmNvbnRleHQudGVsZW1ldHJ5VHJhY2UudHJhY2VJRCA9IGdlbmVyYXRlVzNDSWQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX3Byb3BlcnRpZXNQbHVnaW4uY29udGV4dC50ZWxlbWV0cnlUcmFjZS5uYW1lID0gbG9jYXRpb24gJiYgbG9jYXRpb24ucGF0aG5hbWUgfHwgXCJfdW5rbm93bl9cIjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgX2FuYWx5dGljc1BsdWdpbi50cmFja1BhZ2VWaWV3KHBhZ2VWaWV3KTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgX3Rocm93SW50ZXJuYWwoX3NlbGYuZGlhZ0xvZygpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlTG9nZ2luZ1NldmVyaXR5LkNSSVRJQ0FMLCBfZUludGVybmFsTWVzc2FnZUlkLlRlbGVtZXRyeUluaXRpYWxpemVyRmFpbGVkLCBcIkFuYWx5dGljcyBwbHVnaW4gaXMgbm90IGF2YWlsYWJsZSwgQW5ndWxhciBwbHVnaW4gdGVsZW1ldHJ5IHdpbGwgbm90IGJlIHNlbnQ6IFwiKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICBcclxuXHJcbiAgICAgICAgICAgIF9zZWxmLl9kb1RlYXJkb3duID0gKHVubG9hZEN0eD86IElQcm9jZXNzVGVsZW1ldHJ5VW5sb2FkQ29udGV4dCwgdW5sb2FkU3RhdGU/OiBJVGVsZW1ldHJ5VW5sb2FkU3RhdGUsXHJcbiAgICAgICAgICAgICAgICBhc3luY0NhbGxiYWNrPzogKCkgPT4gdm9pZCk6IHZvaWQgfCBib29sZWFuID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChfYW5hbHl0aWNzUGx1Z2luICYmIF9lcnJvclNlcnZpY2VJbnN0YW5jZSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIF9lcnJvclNlcnZpY2VJbnN0YW5jZS5wbHVnaW4gPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChfYW5ndWxhckNmZykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoX2FuZ3VsYXJDZmcuZXJyb3JTZXJ2aWNlcyAmJiBBcnJheS5pc0FycmF5KF9hbmd1bGFyQ2ZnLmVycm9yU2VydmljZXMpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZXJyb3JTZXJ2aWNlSW5zdGFuY2UuY2xlYXJFcnJvckhhbmRsZXJzKCk7XHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgaWYgKF9ldmVudFN1YnNjcmlwdGlvbikge1xyXG4gICAgICAgICAgICAgICAgICAgIF9ldmVudFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIF9ldmVudFN1YnNjcmlwdGlvbiA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBfaW5pdERlZmF1bHRzKCk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGQgUGFydCBBIGZpZWxkcyB0byB0aGUgZXZlbnRcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gZXZlbnQgVGhlIGV2ZW50IHRoYXQgbmVlZHMgdG8gYmUgcHJvY2Vzc2VkXHJcbiAgICAgKi9cclxuICAgIHByb2Nlc3NUZWxlbWV0cnkoZXZlbnQ6IElUZWxlbWV0cnlJdGVtLCBpdGVtQ3R4PzogSVByb2Nlc3NUZWxlbWV0cnlDb250ZXh0KSB7XHJcbiAgICAgICAgdGhpcy5wcm9jZXNzTmV4dChldmVudCwgaXRlbUN0eCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGluaXRpYWxpemUoY29uZmlnOiBJQ29uZmlndXJhdGlvbiAmIElDb25maWcsIGNvcmU6IElBcHBJbnNpZ2h0c0NvcmUsIGV4dGVuc2lvbnM6IElQbHVnaW5bXSwgcGx1Z2luQ2hhaW4/OiBJVGVsZW1ldHJ5UGx1Z2luQ2hhaW4pIHtcclxuICAgICAgICAvLyBARHluYW1pY1Byb3RvU3R1YiAtLSBETyBOT1QgYWRkIGFueSBjb2RlIGFzIHRoaXMgd2lsbCBiZSByZW1vdmVkIGR1cmluZyBwYWNrYWdpbmdcclxuICAgIH1cclxuXHJcbiAgICB0cmFja1BhZ2VWaWV3KHBhZ2VWaWV3OiBJUGFnZVZpZXdUZWxlbWV0cnkpIHtcclxuICAgICAgICAvLyBARHluYW1pY1Byb3RvU3R1YiAtLSBETyBOT1QgYWRkIGFueSBjb2RlIGFzIHRoaXMgd2lsbCBiZSByZW1vdmVkIGR1cmluZyBwYWNrYWdpbmdcclxuICAgIH1cclxuXHJcblxyXG4gICBcclxufVxyXG4iXX0=
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { NgModule } from
|
|
2
|
-
import { AngularPlugin } from
|
|
3
|
-
import { ApplicationinsightsAngularpluginErrorService } from
|
|
1
|
+
import { NgModule } from "@angular/core";
|
|
2
|
+
import { AngularPlugin } from "./applicationinsights-angularplugin-js.component";
|
|
3
|
+
import { ApplicationinsightsAngularpluginErrorService } from "./applicationinsights-angularplugin-error.service";
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export class ApplicationinsightsAngularpluginJsModule {
|
|
6
6
|
}
|
|
@@ -20,4 +20,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
20
20
|
]
|
|
21
21
|
}]
|
|
22
22
|
}] });
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb25pbnNpZ2h0cy1hbmd1bGFycGx1Z2luLWpzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FwcGxpY2F0aW9uaW5zaWdodHMtYW5ndWxhcnBsdWdpbi1qcy9zcmMvbGliL2FwcGxpY2F0aW9uaW5zaWdodHMtYW5ndWxhcnBsdWdpbi1qcy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDakYsT0FBTyxFQUFFLDRDQUE0QyxFQUFFLE1BQU0sbURBQW1ELENBQUM7O0FBV2pILE1BQU0sT0FBTyx3Q0FBd0M7O3FJQUF4Qyx3Q0FBd0M7c0lBQXhDLHdDQUF3QyxpQkFSbEMsYUFBYSxhQUdsQixhQUFhO3NJQUtkLHdDQUF3QyxhQUp0QztRQUNQLDRDQUE0QztLQUMvQzsyRkFFUSx3Q0FBd0M7a0JBVHBELFFBQVE7bUJBQUM7b0JBQ04sWUFBWSxFQUFFLENBQUMsYUFBYSxDQUFDO29CQUM3QixPQUFPLEVBQUUsRUFDUjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxhQUFhLENBQUM7b0JBQ3hCLFNBQVMsRUFBRTt3QkFDUCw0Q0FBNEM7cUJBQy9DO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBBbmd1bGFyUGx1Z2luIH0gZnJvbSBcIi4vYXBwbGljYXRpb25pbnNpZ2h0cy1hbmd1bGFycGx1Z2luLWpzLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBBcHBsaWNhdGlvbmluc2lnaHRzQW5ndWxhcnBsdWdpbkVycm9yU2VydmljZSB9IGZyb20gXCIuL2FwcGxpY2F0aW9uaW5zaWdodHMtYW5ndWxhcnBsdWdpbi1lcnJvci5zZXJ2aWNlXCI7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gICAgZGVjbGFyYXRpb25zOiBbQW5ndWxhclBsdWdpbl0sXHJcbiAgICBpbXBvcnRzOiBbXHJcbiAgICBdLFxyXG4gICAgZXhwb3J0czogW0FuZ3VsYXJQbHVnaW5dLFxyXG4gICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgQXBwbGljYXRpb25pbnNpZ2h0c0FuZ3VsYXJwbHVnaW5FcnJvclNlcnZpY2VcclxuICAgIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEFwcGxpY2F0aW9uaW5zaWdodHNBbmd1bGFycGx1Z2luSnNNb2R1bGUgeyB9XHJcbiJdfQ==
|
package/esm2020/public-api.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* Public API Surface of applicationinsights-angularplugin-js
|
|
3
3
|
*/
|
|
4
|
-
export * from
|
|
5
|
-
export * from
|
|
6
|
-
export * from
|
|
7
|
-
export * from
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
4
|
+
export * from "./lib/applicationinsights-angularplugin-js.component";
|
|
5
|
+
export * from "./lib/applicationinsights-angularplugin-js.module";
|
|
6
|
+
export * from "./lib/applicationinsights-angularplugin-error.service";
|
|
7
|
+
export * from "./lib/IErrorService";
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FwcGxpY2F0aW9uaW5zaWdodHMtYW5ndWxhcnBsdWdpbi1qcy9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLHVEQUF1RCxDQUFDO0FBQ3RFLGNBQWMscUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgYXBwbGljYXRpb25pbnNpZ2h0cy1hbmd1bGFycGx1Z2luLWpzXHJcbiAqL1xyXG5cclxuZXhwb3J0ICogZnJvbSBcIi4vbGliL2FwcGxpY2F0aW9uaW5zaWdodHMtYW5ndWxhcnBsdWdpbi1qcy5jb21wb25lbnRcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vbGliL2FwcGxpY2F0aW9uaW5zaWdodHMtYW5ndWxhcnBsdWdpbi1qcy5tb2R1bGVcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vbGliL2FwcGxpY2F0aW9uaW5zaWdodHMtYW5ndWxhcnBsdWdpbi1lcnJvci5zZXJ2aWNlXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9JRXJyb3JTZXJ2aWNlXCI7XHJcbiJdfQ==
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { Injectable, Component, NgModule } from '@angular/core';
|
|
3
3
|
import { PropertiesPluginIdentifier, AnalyticsPluginIdentifier } from '@microsoft/applicationinsights-common';
|
|
4
|
-
import { isFunction, arrForEach, BaseTelemetryPlugin, getLocation, generateW3CId, _throwInternal } from '@microsoft/applicationinsights-core-js';
|
|
4
|
+
import { isFunction, arrForEach, BaseTelemetryPlugin, onConfigChange, isArray, getLocation, generateW3CId, _throwInternal } from '@microsoft/applicationinsights-core-js';
|
|
5
|
+
import dynamicProto from '@microsoft/dynamicproto-js';
|
|
5
6
|
import { NavigationEnd } from '@angular/router';
|
|
7
|
+
import { objDeepFreeze } from '@nevware21/ts-utils';
|
|
6
8
|
|
|
7
9
|
class ApplicationinsightsAngularpluginErrorService {
|
|
8
10
|
constructor() {
|
|
@@ -14,6 +16,9 @@ class ApplicationinsightsAngularpluginErrorService {
|
|
|
14
16
|
set plugin(analyticsPlugin) {
|
|
15
17
|
this.analyticsPlugin = analyticsPlugin;
|
|
16
18
|
}
|
|
19
|
+
clearErrorHandlers() {
|
|
20
|
+
this.errorServices = [];
|
|
21
|
+
}
|
|
17
22
|
addErrorHandler(errorService) {
|
|
18
23
|
if (errorService && isFunction(errorService.handleError)) {
|
|
19
24
|
this.errorServices.push(errorService);
|
|
@@ -42,84 +47,136 @@ class ApplicationinsightsAngularpluginErrorService {
|
|
|
42
47
|
}
|
|
43
48
|
ApplicationinsightsAngularpluginErrorService.instance = null;
|
|
44
49
|
ApplicationinsightsAngularpluginErrorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ApplicationinsightsAngularpluginErrorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
45
|
-
ApplicationinsightsAngularpluginErrorService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ApplicationinsightsAngularpluginErrorService, providedIn:
|
|
50
|
+
ApplicationinsightsAngularpluginErrorService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ApplicationinsightsAngularpluginErrorService, providedIn: "root" });
|
|
46
51
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ApplicationinsightsAngularpluginErrorService, decorators: [{
|
|
47
52
|
type: Injectable,
|
|
48
53
|
args: [{
|
|
49
|
-
providedIn:
|
|
54
|
+
providedIn: "root"
|
|
50
55
|
}]
|
|
51
56
|
}], ctorParameters: function () { return []; } });
|
|
52
57
|
|
|
58
|
+
let undefValue;
|
|
59
|
+
const defaultAngularExtensionConfig = objDeepFreeze({
|
|
60
|
+
router: { blkVal: true, v: undefValue },
|
|
61
|
+
errorServices: { blkVal: true, v: undefValue }
|
|
62
|
+
});
|
|
53
63
|
// eslint-disable-next-line @angular-eslint/component-class-suffix
|
|
54
64
|
class AngularPlugin extends BaseTelemetryPlugin {
|
|
55
|
-
constructor() {
|
|
65
|
+
constructor(_injector) {
|
|
56
66
|
super();
|
|
67
|
+
this._injector = _injector;
|
|
57
68
|
this.priority = 186;
|
|
58
|
-
this.identifier =
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
let
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
69
|
+
this.identifier = "AngularPlugin";
|
|
70
|
+
let _analyticsPlugin;
|
|
71
|
+
let _propertiesPlugin;
|
|
72
|
+
let _angularCfg;
|
|
73
|
+
let _eventSubscription;
|
|
74
|
+
let _isPageInitialLoad;
|
|
75
|
+
let _prevRouter;
|
|
76
|
+
let _errorServiceInstance;
|
|
77
|
+
dynamicProto(AngularPlugin, this, (_self, _base) => {
|
|
78
|
+
const _initDefaults = () => {
|
|
79
|
+
_analyticsPlugin = null;
|
|
80
|
+
_propertiesPlugin = null;
|
|
81
|
+
_angularCfg = null;
|
|
82
|
+
_eventSubscription = null;
|
|
83
|
+
_isPageInitialLoad = true;
|
|
84
|
+
_prevRouter = undefValue;
|
|
85
|
+
};
|
|
86
|
+
_initDefaults();
|
|
87
|
+
_self.initialize = (config, core, extensions, pluginChain) => {
|
|
88
|
+
super.initialize(config, core, extensions, pluginChain);
|
|
89
|
+
_self._addHook(onConfigChange(config, (details) => {
|
|
90
|
+
var _a, _b;
|
|
91
|
+
let ctx = _self._getTelCtx();
|
|
92
|
+
_angularCfg = ctx.getExtCfg(_self.identifier, defaultAngularExtensionConfig);
|
|
93
|
+
_propertiesPlugin = (_a = core.getPlugin(PropertiesPluginIdentifier)) === null || _a === void 0 ? void 0 : _a.plugin;
|
|
94
|
+
_analyticsPlugin = (_b = core.getPlugin(AnalyticsPluginIdentifier)) === null || _b === void 0 ? void 0 : _b.plugin;
|
|
95
|
+
if (_angularCfg.useInjector && _injector) {
|
|
96
|
+
_errorServiceInstance = this._injector.get(ApplicationinsightsAngularpluginErrorService);
|
|
97
|
+
}
|
|
98
|
+
_errorServiceInstance = _errorServiceInstance ? _errorServiceInstance
|
|
99
|
+
: ApplicationinsightsAngularpluginErrorService.instance;
|
|
100
|
+
// two instance of errorService
|
|
101
|
+
if (_analyticsPlugin) {
|
|
102
|
+
if (_errorServiceInstance !== null) {
|
|
103
|
+
_errorServiceInstance.plugin = _analyticsPlugin;
|
|
104
|
+
if (_angularCfg.errorServices && isArray(_angularCfg.errorServices)) {
|
|
105
|
+
_errorServiceInstance.clearErrorHandlers();
|
|
106
|
+
arrForEach(_angularCfg.errorServices, (errorService) => {
|
|
107
|
+
_errorServiceInstance.addErrorHandler(errorService);
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
if (_angularCfg.router !== _prevRouter) {
|
|
113
|
+
// router is changed, or has not been initialized yet
|
|
114
|
+
// unsubscribe previous router events
|
|
115
|
+
if (_eventSubscription) {
|
|
116
|
+
_eventSubscription.unsubscribe();
|
|
117
|
+
}
|
|
118
|
+
if (_angularCfg.router) {
|
|
119
|
+
// only track page view if it is the initial page load for this plugin
|
|
120
|
+
if (_isPageInitialLoad) {
|
|
121
|
+
const pageViewTelemetry = {
|
|
122
|
+
uri: _angularCfg.router.url
|
|
123
|
+
};
|
|
124
|
+
_self.trackPageView(pageViewTelemetry);
|
|
125
|
+
}
|
|
126
|
+
// subscribe to new router events
|
|
127
|
+
_eventSubscription = _angularCfg.router.events.subscribe(event => {
|
|
128
|
+
if (_self.isInitialized()) {
|
|
129
|
+
if (event instanceof NavigationEnd) {
|
|
130
|
+
// for page initial load, do not call trackPageView twice
|
|
131
|
+
if (_isPageInitialLoad) {
|
|
132
|
+
_isPageInitialLoad = false;
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
const pvt = {
|
|
136
|
+
uri: _angularCfg.router.url,
|
|
137
|
+
properties: { duration: 0 } // SPA route change loading durations are undefined, so send 0
|
|
138
|
+
};
|
|
139
|
+
_self.trackPageView(pvt);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
_prevRouter = _angularCfg.router;
|
|
145
|
+
}
|
|
146
|
+
}));
|
|
147
|
+
// for test purpose only
|
|
148
|
+
_self["_getDbgPlgTargets"] = () => _angularCfg;
|
|
149
|
+
_self["_getErrorService"] = () => _errorServiceInstance;
|
|
150
|
+
};
|
|
151
|
+
_self.trackPageView = (pageView) => {
|
|
152
|
+
if (_analyticsPlugin) {
|
|
153
|
+
const location = getLocation();
|
|
154
|
+
if (_propertiesPlugin && _propertiesPlugin.context && _propertiesPlugin.context.telemetryTrace) {
|
|
155
|
+
_propertiesPlugin.context.telemetryTrace.traceID = generateW3CId();
|
|
156
|
+
_propertiesPlugin.context.telemetryTrace.name = location && location.pathname || "_unknown_";
|
|
70
157
|
}
|
|
158
|
+
_analyticsPlugin.trackPageView(pageView);
|
|
71
159
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
self._eventSubscription.unsubscribe();
|
|
75
|
-
self._eventSubscription = null;
|
|
76
|
-
}
|
|
77
|
-
self.analyticsPlugin = null;
|
|
78
|
-
self.propertiesPlugin = null;
|
|
79
|
-
self._angularCfg = null;
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
initialize(config, core, extensions, pluginChain) {
|
|
83
|
-
var _a, _b;
|
|
84
|
-
super.initialize(config, core, extensions, pluginChain);
|
|
85
|
-
const self = this;
|
|
86
|
-
const ctx = self._getTelCtx();
|
|
87
|
-
const extConfig = ctx.getExtCfg(self.identifier, { router: null, errorServices: null });
|
|
88
|
-
self.propertiesPlugin = (_a = core.getPlugin(PropertiesPluginIdentifier)) === null || _a === void 0 ? void 0 : _a.plugin;
|
|
89
|
-
self.analyticsPlugin = (_b = core.getPlugin(AnalyticsPluginIdentifier)) === null || _b === void 0 ? void 0 : _b.plugin;
|
|
90
|
-
if (self.analyticsPlugin) {
|
|
91
|
-
if (ApplicationinsightsAngularpluginErrorService.instance !== null) {
|
|
92
|
-
ApplicationinsightsAngularpluginErrorService.instance.plugin = self.analyticsPlugin;
|
|
93
|
-
if (extConfig.errorServices && Array.isArray(extConfig.errorServices)) {
|
|
94
|
-
arrForEach(extConfig.errorServices, (errorService) => {
|
|
95
|
-
ApplicationinsightsAngularpluginErrorService.instance.addErrorHandler(errorService);
|
|
96
|
-
});
|
|
160
|
+
else {
|
|
161
|
+
_throwInternal(_self.diagLog(), 1 /* eLoggingSeverity.CRITICAL */, 64 /* _eInternalMessageId.TelemetryInitializerFailed */, "Analytics plugin is not available, Angular plugin telemetry will not be sent: ");
|
|
97
162
|
}
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
if (extConfig.router) {
|
|
101
|
-
let isPageInitialLoad = true;
|
|
102
|
-
const pageViewTelemetry = {
|
|
103
|
-
uri: extConfig.router.url
|
|
104
163
|
};
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
if (
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
isPageInitialLoad = false;
|
|
112
|
-
return;
|
|
164
|
+
_self._doTeardown = (unloadCtx, unloadState, asyncCallback) => {
|
|
165
|
+
if (_analyticsPlugin && _errorServiceInstance !== null) {
|
|
166
|
+
_errorServiceInstance.plugin = null;
|
|
167
|
+
if (_angularCfg) {
|
|
168
|
+
if (_angularCfg.errorServices && Array.isArray(_angularCfg.errorServices)) {
|
|
169
|
+
_errorServiceInstance.clearErrorHandlers();
|
|
113
170
|
}
|
|
114
|
-
const pvt = {
|
|
115
|
-
uri: extConfig.router.url,
|
|
116
|
-
properties: { duration: 0 } // SPA route change loading durations are undefined, so send 0
|
|
117
|
-
};
|
|
118
|
-
self.trackPageView(pvt);
|
|
119
171
|
}
|
|
120
172
|
}
|
|
121
|
-
|
|
122
|
-
|
|
173
|
+
if (_eventSubscription) {
|
|
174
|
+
_eventSubscription.unsubscribe();
|
|
175
|
+
_eventSubscription = null;
|
|
176
|
+
}
|
|
177
|
+
_initDefaults();
|
|
178
|
+
};
|
|
179
|
+
});
|
|
123
180
|
}
|
|
124
181
|
/**
|
|
125
182
|
* Add Part A fields to the event
|
|
@@ -129,27 +186,19 @@ class AngularPlugin extends BaseTelemetryPlugin {
|
|
|
129
186
|
processTelemetry(event, itemCtx) {
|
|
130
187
|
this.processNext(event, itemCtx);
|
|
131
188
|
}
|
|
189
|
+
initialize(config, core, extensions, pluginChain) {
|
|
190
|
+
// @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging
|
|
191
|
+
}
|
|
132
192
|
trackPageView(pageView) {
|
|
133
|
-
|
|
134
|
-
if (self.analyticsPlugin) {
|
|
135
|
-
const location = getLocation();
|
|
136
|
-
if (self.propertiesPlugin && self.propertiesPlugin.context && self.propertiesPlugin.context.telemetryTrace) {
|
|
137
|
-
self.propertiesPlugin.context.telemetryTrace.traceID = generateW3CId();
|
|
138
|
-
self.propertiesPlugin.context.telemetryTrace.name = location && location.pathname || '_unknown_';
|
|
139
|
-
}
|
|
140
|
-
self.analyticsPlugin.trackPageView(pageView);
|
|
141
|
-
}
|
|
142
|
-
else {
|
|
143
|
-
_throwInternal(self.diagLog(), 1 /* eLoggingSeverity.CRITICAL */, 64 /* _eInternalMessageId.TelemetryInitializerFailed */, 'Analytics plugin is not available, Angular plugin telemetry will not be sent: ');
|
|
144
|
-
}
|
|
193
|
+
// @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging
|
|
145
194
|
}
|
|
146
195
|
}
|
|
147
|
-
AngularPlugin.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AngularPlugin, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
148
|
-
AngularPlugin.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: AngularPlugin, selector: "lib-applicationinsights-angularplugin-js", usesInheritance: true, ngImport: i0, template:
|
|
196
|
+
AngularPlugin.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AngularPlugin, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
197
|
+
AngularPlugin.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: AngularPlugin, selector: "lib-applicationinsights-angularplugin-js", usesInheritance: true, ngImport: i0, template: "", isInline: true });
|
|
149
198
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AngularPlugin, decorators: [{
|
|
150
199
|
type: Component,
|
|
151
|
-
args: [{ selector:
|
|
152
|
-
}], ctorParameters: function () { return []; } });
|
|
200
|
+
args: [{ selector: "lib-applicationinsights-angularplugin-js", template: "" }]
|
|
201
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
153
202
|
|
|
154
203
|
class ApplicationinsightsAngularpluginJsModule {
|
|
155
204
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"microsoft-applicationinsights-angularplugin-js.mjs","sources":["../../../projects/applicationinsights-angularplugin-js/src/lib/applicationinsights-angularplugin-error.service.ts","../../../projects/applicationinsights-angularplugin-js/src/lib/applicationinsights-angularplugin-js.component.ts","../../../projects/applicationinsights-angularplugin-js/src/lib/applicationinsights-angularplugin-js.module.ts","../../../projects/applicationinsights-angularplugin-js/src/public-api.ts","../../../projects/applicationinsights-angularplugin-js/src/microsoft-applicationinsights-angularplugin-js.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { IAppInsights } from '@microsoft/applicationinsights-common';\r\nimport { arrForEach, isFunction } from '@microsoft/applicationinsights-core-js';\r\nimport { IErrorService } from './IErrorService';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ApplicationinsightsAngularpluginErrorService implements IErrorService {\r\n public static instance: ApplicationinsightsAngularpluginErrorService = null;\r\n private analyticsPlugin: IAppInsights;\r\n private errorServices: IErrorService[] = [];\r\n\r\n constructor() {\r\n if (ApplicationinsightsAngularpluginErrorService.instance === null) {\r\n ApplicationinsightsAngularpluginErrorService.instance = this;\r\n }\r\n }\r\n\r\n public set plugin(analyticsPlugin: IAppInsights) {\r\n this.analyticsPlugin = analyticsPlugin;\r\n }\r\n\r\n public addErrorHandler(errorService: IErrorService): void {\r\n if (errorService && isFunction(errorService.handleError)) {\r\n this.errorServices.push(errorService);\r\n }\r\n }\r\n\r\n public removeErrorHandler(errorService: IErrorService): void {\r\n if (errorService && isFunction(errorService.handleError)) {\r\n const idx = this.errorServices.indexOf(errorService);\r\n if (idx !== -1) {\r\n this.errorServices.splice(idx, 1);\r\n }\r\n }\r\n }\r\n\r\n handleError(error: any): void {\r\n if (this.analyticsPlugin) {\r\n this.analyticsPlugin.trackException({ exception: error });\r\n }\r\n\r\n if (this.errorServices && this.errorServices.length > 0) {\r\n arrForEach(this.errorServices, errorService => {\r\n if (isFunction(errorService.handleError)) {\r\n errorService.handleError(error);\r\n }\r\n });\r\n }\r\n }\r\n}\r\n\r\n","import { Component } from '@angular/core';\r\nimport {\r\n IConfig, IPageViewTelemetry, IAppInsights, PropertiesPluginIdentifier, AnalyticsPluginIdentifier\r\n} from '@microsoft/applicationinsights-common';\r\nimport {\r\n IPlugin, IConfiguration, IAppInsightsCore,\r\n BaseTelemetryPlugin, arrForEach, ITelemetryItem, ITelemetryPluginChain,\r\n IProcessTelemetryContext, getLocation, _throwInternal, eLoggingSeverity, _eInternalMessageId, IProcessTelemetryUnloadContext, ITelemetryUnloadState, generateW3CId\r\n} from '@microsoft/applicationinsights-core-js';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\n// For types only\r\nimport * as properties from '@microsoft/applicationinsights-properties-js';\r\nimport { ApplicationinsightsAngularpluginErrorService } from './applicationinsights-angularplugin-error.service';\r\nimport { IErrorService } from './IErrorService';\r\nimport { Subscription } from 'rxjs';\r\nimport { AnalyticsPlugin } from '@microsoft/applicationinsights-analytics-js';\r\n\r\ninterface IAngularExtensionConfig {\r\n /**\r\n * Angular router for enabling Application Insights PageView tracking.\r\n */\r\n router?: Router;\r\n\r\n /**\r\n * Custom error service for global error handling.\r\n */\r\n errorServices?: IErrorService[];\r\n}\r\n\r\n@Component({\r\n selector: 'lib-applicationinsights-angularplugin-js',\r\n template: ``,\r\n styles: []\r\n})\r\n// eslint-disable-next-line @angular-eslint/component-class-suffix\r\nexport class AngularPlugin extends BaseTelemetryPlugin {\r\n public priority = 186;\r\n public identifier = 'AngularPlugin';\r\n\r\n private analyticsPlugin: AnalyticsPlugin;\r\n private propertiesPlugin: properties.PropertiesPlugin;\r\n private _angularCfg: IAngularExtensionConfig = null;\r\n private _eventSubscription: Subscription = null;\r\n\r\n\r\n constructor() {\r\n super();\r\n let self = this;\r\n\r\n self._doTeardown = (unloadCtx?: IProcessTelemetryUnloadContext, unloadState?: ITelemetryUnloadState, asyncCallback?: () => void): void | boolean => {\r\n if (this.analyticsPlugin && ApplicationinsightsAngularpluginErrorService.instance !== null) {\r\n ApplicationinsightsAngularpluginErrorService.instance.plugin = null;\r\n if (self._angularCfg) {\r\n if (self._angularCfg.errorServices && Array.isArray(self._angularCfg.errorServices)) {\r\n arrForEach(self._angularCfg.errorServices, (errorService: IErrorService) => {\r\n ApplicationinsightsAngularpluginErrorService.instance.removeErrorHandler(errorService);\r\n });\r\n }\r\n }\r\n }\r\n\r\n if (self._eventSubscription) {\r\n self._eventSubscription.unsubscribe();\r\n self._eventSubscription = null;\r\n }\r\n\r\n self.analyticsPlugin = null;\r\n self.propertiesPlugin = null;\r\n self._angularCfg = null;\r\n }\r\n }\r\n\r\n initialize(config: IConfiguration & IConfig, core: IAppInsightsCore, extensions: IPlugin[], pluginChain?: ITelemetryPluginChain) {\r\n super.initialize(config, core, extensions, pluginChain);\r\n const self = this;\r\n const ctx = self._getTelCtx();\r\n const extConfig = ctx.getExtCfg<IAngularExtensionConfig>(self.identifier, { router: null, errorServices: null });\r\n\r\n self.propertiesPlugin = core.getPlugin<properties.PropertiesPlugin>(PropertiesPluginIdentifier)?.plugin;\r\n self.analyticsPlugin = core.getPlugin<AnalyticsPlugin>(AnalyticsPluginIdentifier)?.plugin;\r\n if (self.analyticsPlugin) {\r\n if (ApplicationinsightsAngularpluginErrorService.instance !== null) {\r\n ApplicationinsightsAngularpluginErrorService.instance.plugin = self.analyticsPlugin;\r\n if (extConfig.errorServices && Array.isArray(extConfig.errorServices)) {\r\n arrForEach(extConfig.errorServices, (errorService: IErrorService) => {\r\n ApplicationinsightsAngularpluginErrorService.instance.addErrorHandler(errorService);\r\n });\r\n }\r\n }\r\n }\r\n\r\n if (extConfig.router) {\r\n let isPageInitialLoad = true;\r\n const pageViewTelemetry: IPageViewTelemetry = {\r\n uri: extConfig.router.url\r\n };\r\n self.trackPageView(pageViewTelemetry);\r\n self._eventSubscription = extConfig.router.events.subscribe(event => {\r\n if (self.isInitialized()) {\r\n if (event instanceof NavigationEnd) {\r\n // for page initial load, do not call trackPageView twice\r\n if (isPageInitialLoad) {\r\n isPageInitialLoad = false;\r\n return;\r\n }\r\n const pvt: IPageViewTelemetry = {\r\n uri: extConfig.router.url,\r\n properties: { duration: 0 } // SPA route change loading durations are undefined, so send 0\r\n };\r\n self.trackPageView(pvt);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Add Part A fields to the event\r\n *\r\n * @param event The event that needs to be processed\r\n */\r\n processTelemetry(event: ITelemetryItem, itemCtx?: IProcessTelemetryContext) {\r\n this.processNext(event, itemCtx);\r\n }\r\n\r\n trackPageView(pageView: IPageViewTelemetry) {\r\n const self = this;\r\n\r\n if (self.analyticsPlugin) {\r\n const location = getLocation();\r\n if (self.propertiesPlugin && self.propertiesPlugin.context && self.propertiesPlugin.context.telemetryTrace) {\r\n self.propertiesPlugin.context.telemetryTrace.traceID = generateW3CId();\r\n self.propertiesPlugin.context.telemetryTrace.name = location && location.pathname || '_unknown_';\r\n }\r\n self.analyticsPlugin.trackPageView(pageView);\r\n } else {\r\n _throwInternal(self.diagLog(),\r\n // eslint-disable-next-line max-len\r\n eLoggingSeverity.CRITICAL, _eInternalMessageId.TelemetryInitializerFailed, 'Analytics plugin is not available, Angular plugin telemetry will not be sent: ');\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { AngularPlugin } from './applicationinsights-angularplugin-js.component';\r\nimport { ApplicationinsightsAngularpluginErrorService } from './applicationinsights-angularplugin-error.service';\r\n\r\n@NgModule({\r\n declarations: [AngularPlugin],\r\n imports: [\r\n ],\r\n exports: [AngularPlugin],\r\n providers: [\r\n ApplicationinsightsAngularpluginErrorService\r\n ]\r\n})\r\nexport class ApplicationinsightsAngularpluginJsModule { }\r\n","/*\r\n * Public API Surface of applicationinsights-angularplugin-js\r\n */\r\n\r\nexport * from './lib/applicationinsights-angularplugin-js.component';\r\nexport * from './lib/applicationinsights-angularplugin-js.module';\r\nexport * from './lib/applicationinsights-angularplugin-error.service';\r\nexport * from './lib/IErrorService';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;MAQa,4CAA4C,CAAA;AAKrD,IAAA,WAAA,GAAA;AAFQ,QAAA,IAAa,CAAA,aAAA,GAAoB,EAAE,CAAC;AAGxC,QAAA,IAAI,4CAA4C,CAAC,QAAQ,KAAK,IAAI,EAAE;AAChE,YAAA,4CAA4C,CAAC,QAAQ,GAAG,IAAI,CAAC;AAChE,SAAA;KACJ;IAED,IAAW,MAAM,CAAC,eAA6B,EAAA;AAC3C,QAAA,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;KAC1C;AAEM,IAAA,eAAe,CAAC,YAA2B,EAAA;QAC9C,IAAI,YAAY,IAAI,UAAU,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE;AACtD,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACzC,SAAA;KACJ;AAEM,IAAA,kBAAkB,CAAC,YAA2B,EAAA;QACjD,IAAI,YAAY,IAAI,UAAU,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE;YACtD,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AACrD,YAAA,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE;gBACZ,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACrC,aAAA;AACJ,SAAA;KACJ;AAED,IAAA,WAAW,CAAC,KAAU,EAAA;QAClB,IAAI,IAAI,CAAC,eAAe,EAAE;YACtB,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AAC7D,SAAA;QAED,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AACrD,YAAA,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,IAAG;AAC1C,gBAAA,IAAI,UAAU,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE;AACtC,oBAAA,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACnC,iBAAA;AACL,aAAC,CAAC,CAAC;AACN,SAAA;KACJ;;AAzCa,4CAAQ,CAAA,QAAA,GAAiD,IAAK,CAAA;yIADnE,4CAA4C,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA5C,4CAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4CAA4C,cAFzC,MAAM,EAAA,CAAA,CAAA;2FAET,4CAA4C,EAAA,UAAA,EAAA,CAAA;kBAHxD,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;iBACrB,CAAA;;;AC2BD;AACM,MAAO,aAAc,SAAQ,mBAAmB,CAAA;AAUlD,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE,CAAC;AAVL,QAAA,IAAQ,CAAA,QAAA,GAAG,GAAG,CAAC;AACf,QAAA,IAAU,CAAA,UAAA,GAAG,eAAe,CAAC;AAI5B,QAAA,IAAW,CAAA,WAAA,GAA4B,IAAI,CAAC;AAC5C,QAAA,IAAkB,CAAA,kBAAA,GAAiB,IAAI,CAAC;QAK5C,IAAI,IAAI,GAAG,IAAI,CAAC;QAEhB,IAAI,CAAC,WAAW,GAAG,CAAC,SAA0C,EAAE,WAAmC,EAAE,aAA0B,KAAoB;YAC/I,IAAI,IAAI,CAAC,eAAe,IAAI,4CAA4C,CAAC,QAAQ,KAAK,IAAI,EAAE;AACxF,gBAAA,4CAA4C,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;gBACpE,IAAI,IAAI,CAAC,WAAW,EAAE;AAClB,oBAAA,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE;wBACjF,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,YAA2B,KAAI;AACvE,4BAAA,4CAA4C,CAAC,QAAQ,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;AAC3F,yBAAC,CAAC,CAAC;AACN,qBAAA;AACJ,iBAAA;AACJ,aAAA;YAED,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACzB,gBAAA,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC;AACtC,gBAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;AAClC,aAAA;AAED,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAC5B,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC7B,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC5B,SAAC,CAAA;KACJ;AAED,IAAA,UAAU,CAAC,MAAgC,EAAE,IAAsB,EAAE,UAAqB,EAAE,WAAmC,EAAA;;QAC3H,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QACxD,MAAM,IAAI,GAAG,IAAI,CAAC;AAClB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAA0B,IAAI,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;AAEjH,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,CAA8B,0BAA0B,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,CAAC;AACxG,QAAA,IAAI,CAAC,eAAe,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,CAAkB,yBAAyB,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,CAAC;QAC1F,IAAI,IAAI,CAAC,eAAe,EAAE;AACtB,YAAA,IAAI,4CAA4C,CAAC,QAAQ,KAAK,IAAI,EAAE;gBAChE,4CAA4C,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;AACpF,gBAAA,IAAI,SAAS,CAAC,aAAa,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE;oBACnE,UAAU,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC,YAA2B,KAAI;AAChE,wBAAA,4CAA4C,CAAC,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;AACxF,qBAAC,CAAC,CAAC;AACN,iBAAA;AACJ,aAAA;AACJ,SAAA;QAED,IAAI,SAAS,CAAC,MAAM,EAAE;YAClB,IAAI,iBAAiB,GAAG,IAAI,CAAC;AAC7B,YAAA,MAAM,iBAAiB,GAAuB;AAC1C,gBAAA,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG;aAC5B,CAAC;AACF,YAAA,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;AACtC,YAAA,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAG;AAChE,gBAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;oBACtB,IAAI,KAAK,YAAY,aAAa,EAAE;;AAEhC,wBAAA,IAAI,iBAAiB,EAAE;4BACnB,iBAAiB,GAAG,KAAK,CAAC;4BAC1B,OAAO;AACV,yBAAA;AACD,wBAAA,MAAM,GAAG,GAAuB;AAC5B,4BAAA,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG;AACzB,4BAAA,UAAU,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE;yBAC9B,CAAC;AACF,wBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AAC3B,qBAAA;AACJ,iBAAA;AACL,aAAC,CAAC,CAAC;AACN,SAAA;KACJ;AAED;;;;AAIG;IACH,gBAAgB,CAAC,KAAqB,EAAE,OAAkC,EAAA;AACtE,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;KACpC;AAED,IAAA,aAAa,CAAC,QAA4B,EAAA;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,IAAI,IAAI,CAAC,eAAe,EAAE;AACtB,YAAA,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;AAC/B,YAAA,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,cAAc,EAAE;gBACxG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,GAAG,aAAa,EAAE,CAAC;AACvE,gBAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,GAAG,QAAQ,IAAI,QAAQ,CAAC,QAAQ,IAAI,WAAW,CAAC;AACpG,aAAA;AACD,YAAA,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAChD,SAAA;AAAM,aAAA;AACH,YAAA,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,EAEkD,CAAA,kCAAA,EAAA,uDAAA,gFAAgF,CAAC,CAAC;AACpK,SAAA;KACJ;;0GAzGQ,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,aAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,uGAJZ,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAIH,aAAa,EAAA,UAAA,EAAA,CAAA;kBANzB,SAAS;YACI,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0CAA0C,YAC1C,CAAE,CAAA,EAAA,CAAA;;;MClBH,wCAAwC,CAAA;;qIAAxC,wCAAwC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;sIAAxC,wCAAwC,EAAA,YAAA,EAAA,CARlC,aAAa,CAAA,EAAA,OAAA,EAAA,CAGlB,aAAa,CAAA,EAAA,CAAA,CAAA;AAKd,wCAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wCAAwC,EAJtC,SAAA,EAAA;QACP,4CAA4C;AAC/C,KAAA,EAAA,CAAA,CAAA;2FAEQ,wCAAwC,EAAA,UAAA,EAAA,CAAA;kBATpD,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,YAAY,EAAE,CAAC,aAAa,CAAC;AAC7B,oBAAA,OAAO,EAAE,EACR;oBACD,OAAO,EAAE,CAAC,aAAa,CAAC;AACxB,oBAAA,SAAS,EAAE;wBACP,4CAA4C;AAC/C,qBAAA;iBACJ,CAAA;;;ACZD;;AAEG;;ACFH;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"microsoft-applicationinsights-angularplugin-js.mjs","sources":["../../../projects/applicationinsights-angularplugin-js/src/lib/applicationinsights-angularplugin-error.service.ts","../../../projects/applicationinsights-angularplugin-js/src/lib/applicationinsights-angularplugin-js.component.ts","../../../projects/applicationinsights-angularplugin-js/src/lib/applicationinsights-angularplugin-js.module.ts","../../../projects/applicationinsights-angularplugin-js/src/public-api.ts","../../../projects/applicationinsights-angularplugin-js/src/microsoft-applicationinsights-angularplugin-js.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\r\nimport { IAppInsights } from \"@microsoft/applicationinsights-common\";\r\nimport { arrForEach, isFunction } from \"@microsoft/applicationinsights-core-js\";\r\nimport { IErrorService } from \"./IErrorService\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class ApplicationinsightsAngularpluginErrorService implements IErrorService {\r\n public static instance: ApplicationinsightsAngularpluginErrorService = null;\r\n private analyticsPlugin: IAppInsights;\r\n private errorServices: IErrorService[] = [];\r\n\r\n constructor() {\r\n if (ApplicationinsightsAngularpluginErrorService.instance === null) {\r\n ApplicationinsightsAngularpluginErrorService.instance = this;\r\n }\r\n }\r\n\r\n public set plugin(analyticsPlugin: IAppInsights) {\r\n this.analyticsPlugin = analyticsPlugin;\r\n }\r\n\r\n public clearErrorHandlers() {\r\n this.errorServices = [];\r\n }\r\n\r\n public addErrorHandler(errorService: IErrorService): void {\r\n if (errorService && isFunction(errorService.handleError)) {\r\n this.errorServices.push(errorService);\r\n }\r\n }\r\n\r\n public removeErrorHandler(errorService: IErrorService): void {\r\n if (errorService && isFunction(errorService.handleError)) {\r\n const idx = this.errorServices.indexOf(errorService);\r\n if (idx !== -1) {\r\n this.errorServices.splice(idx, 1);\r\n }\r\n }\r\n }\r\n\r\n handleError(error: any): void {\r\n if (this.analyticsPlugin) {\r\n this.analyticsPlugin.trackException({ exception: error });\r\n }\r\n\r\n if (this.errorServices && this.errorServices.length > 0) {\r\n arrForEach(this.errorServices, errorService => {\r\n if (isFunction(errorService.handleError)) {\r\n errorService.handleError(error);\r\n }\r\n });\r\n }\r\n }\r\n}\r\n\r\n","import { Component, Injector} from \"@angular/core\";\r\nimport {\r\n IConfig, IPageViewTelemetry, PropertiesPluginIdentifier, AnalyticsPluginIdentifier\r\n} from \"@microsoft/applicationinsights-common\";\r\nimport {\r\n IPlugin, IConfiguration, IAppInsightsCore, BaseTelemetryPlugin, arrForEach, ITelemetryItem, ITelemetryPluginChain,\r\n IProcessTelemetryContext, getLocation, _throwInternal, eLoggingSeverity, _eInternalMessageId, IProcessTelemetryUnloadContext,\r\n ITelemetryUnloadState, generateW3CId, onConfigChange, IConfigDefaults, isArray\r\n} from \"@microsoft/applicationinsights-core-js\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { NavigationEnd, Router } from \"@angular/router\";\r\nimport { ApplicationinsightsAngularpluginErrorService } from \"./applicationinsights-angularplugin-error.service\";\r\nimport { IErrorService } from \"./IErrorService\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { AnalyticsPlugin } from \"@microsoft/applicationinsights-analytics-js\";\r\nimport {objDeepFreeze} from \"@nevware21/ts-utils\";\r\nimport { PropertiesPlugin } from \"@microsoft/applicationinsights-properties-js\";\r\n\r\ninterface IAngularExtensionConfig {\r\n /**\r\n * Angular router for enabling Application Insights PageView tracking.\r\n */\r\n router?: Router;\r\n\r\n /**\r\n * Custom error service for global error handling.\r\n */\r\n errorServices?: IErrorService[];\r\n useInjector?: boolean;\r\n}\r\n\r\nlet undefValue;\r\n\r\nconst defaultAngularExtensionConfig: IConfigDefaults<IAngularExtensionConfig> = objDeepFreeze({\r\n router: { blkVal: true, v: undefValue},\r\n errorServices: { blkVal: true, v: undefValue}\r\n});\r\n\r\n@Component({\r\n selector: \"lib-applicationinsights-angularplugin-js\",\r\n template: \"\",\r\n styles: []\r\n})\r\n// eslint-disable-next-line @angular-eslint/component-class-suffix\r\nexport class AngularPlugin extends BaseTelemetryPlugin {\r\n public priority = 186;\r\n public identifier = \"AngularPlugin\";\r\n\r\n constructor(private _injector?: Injector) { // _injector is optional to provide\r\n super();\r\n let _analyticsPlugin: AnalyticsPlugin;\r\n let _propertiesPlugin: PropertiesPlugin;\r\n let _angularCfg: IAngularExtensionConfig;\r\n let _eventSubscription: Subscription;\r\n let _isPageInitialLoad: boolean;\r\n let _prevRouter: Router;\r\n let _errorServiceInstance: ApplicationinsightsAngularpluginErrorService;\r\n\r\n dynamicProto(AngularPlugin, this, (_self, _base) => {\r\n\r\n const _initDefaults = () => {\r\n _analyticsPlugin = null;\r\n _propertiesPlugin = null;\r\n _angularCfg = null;\r\n _eventSubscription = null;\r\n _isPageInitialLoad = true;\r\n _prevRouter = undefValue;\r\n };\r\n\r\n _initDefaults();\r\n\r\n _self.initialize = (config: IConfiguration & IConfig, core: IAppInsightsCore, extensions: IPlugin[],\r\n pluginChain?: ITelemetryPluginChain) => {\r\n super.initialize(config, core, extensions, pluginChain);\r\n \r\n _self._addHook(onConfigChange(config, (details) => {\r\n let ctx = _self._getTelCtx();\r\n _angularCfg = ctx.getExtCfg<IAngularExtensionConfig>(_self.identifier, defaultAngularExtensionConfig);\r\n _propertiesPlugin = core.getPlugin<PropertiesPlugin>(PropertiesPluginIdentifier)?.plugin as PropertiesPlugin;\r\n _analyticsPlugin = core.getPlugin<AnalyticsPlugin>(AnalyticsPluginIdentifier)?.plugin as AnalyticsPlugin;\r\n \r\n if (_angularCfg.useInjector && _injector){\r\n _errorServiceInstance = this._injector.get(ApplicationinsightsAngularpluginErrorService);\r\n }\r\n _errorServiceInstance = _errorServiceInstance ? _errorServiceInstance\r\n : ApplicationinsightsAngularpluginErrorService.instance;\r\n\r\n // two instance of errorService\r\n\r\n if (_analyticsPlugin) {\r\n if (_errorServiceInstance !== null) {\r\n _errorServiceInstance.plugin = _analyticsPlugin;\r\n if (_angularCfg.errorServices && isArray(_angularCfg.errorServices)) {\r\n _errorServiceInstance.clearErrorHandlers();\r\n arrForEach(_angularCfg.errorServices, (errorService: IErrorService) => {\r\n _errorServiceInstance.addErrorHandler(errorService);\r\n });\r\n }\r\n }\r\n }\r\n \r\n if (_angularCfg.router !== _prevRouter) {\r\n // router is changed, or has not been initialized yet\r\n\r\n // unsubscribe previous router events\r\n if (_eventSubscription) {\r\n _eventSubscription.unsubscribe();\r\n }\r\n\r\n if (_angularCfg.router){\r\n // only track page view if it is the initial page load for this plugin\r\n if (_isPageInitialLoad){\r\n const pageViewTelemetry: IPageViewTelemetry = {\r\n uri: _angularCfg.router.url\r\n };\r\n _self.trackPageView(pageViewTelemetry);\r\n }\r\n \r\n // subscribe to new router events\r\n _eventSubscription = _angularCfg.router.events.subscribe(event => {\r\n if (_self.isInitialized()) {\r\n if (event instanceof NavigationEnd) {\r\n // for page initial load, do not call trackPageView twice\r\n if (_isPageInitialLoad) {\r\n _isPageInitialLoad = false;\r\n return;\r\n }\r\n const pvt: IPageViewTelemetry = {\r\n uri: _angularCfg.router.url,\r\n properties: { duration: 0 } // SPA route change loading durations are undefined, so send 0\r\n };\r\n _self.trackPageView(pvt);\r\n }\r\n }\r\n });\r\n }\r\n _prevRouter = _angularCfg.router;\r\n }\r\n }));\r\n\r\n // for test purpose only\r\n _self[\"_getDbgPlgTargets\"] = () => _angularCfg;\r\n _self[\"_getErrorService\"] = () => _errorServiceInstance;\r\n };\r\n\r\n _self.trackPageView = (pageView: IPageViewTelemetry) => {\r\n if (_analyticsPlugin) {\r\n const location = getLocation();\r\n if (_propertiesPlugin && _propertiesPlugin.context && _propertiesPlugin.context.telemetryTrace) {\r\n _propertiesPlugin.context.telemetryTrace.traceID = generateW3CId();\r\n _propertiesPlugin.context.telemetryTrace.name = location && location.pathname || \"_unknown_\";\r\n }\r\n _analyticsPlugin.trackPageView(pageView);\r\n } else {\r\n _throwInternal(_self.diagLog(),\r\n // eslint-disable-next-line max-len\r\n eLoggingSeverity.CRITICAL, _eInternalMessageId.TelemetryInitializerFailed, \"Analytics plugin is not available, Angular plugin telemetry will not be sent: \");\r\n }\r\n };\r\n \r\n\r\n _self._doTeardown = (unloadCtx?: IProcessTelemetryUnloadContext, unloadState?: ITelemetryUnloadState,\r\n asyncCallback?: () => void): void | boolean => {\r\n if (_analyticsPlugin && _errorServiceInstance !== null) {\r\n _errorServiceInstance.plugin = null;\r\n if (_angularCfg) {\r\n if (_angularCfg.errorServices && Array.isArray(_angularCfg.errorServices)) {\r\n _errorServiceInstance.clearErrorHandlers();\r\n \r\n }\r\n }\r\n }\r\n \r\n if (_eventSubscription) {\r\n _eventSubscription.unsubscribe();\r\n _eventSubscription = null;\r\n }\r\n _initDefaults();\r\n };\r\n });\r\n\r\n }\r\n /**\r\n * Add Part A fields to the event\r\n *\r\n * @param event The event that needs to be processed\r\n */\r\n processTelemetry(event: ITelemetryItem, itemCtx?: IProcessTelemetryContext) {\r\n this.processNext(event, itemCtx);\r\n }\r\n\r\n\r\n initialize(config: IConfiguration & IConfig, core: IAppInsightsCore, extensions: IPlugin[], pluginChain?: ITelemetryPluginChain) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n }\r\n\r\n trackPageView(pageView: IPageViewTelemetry) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n }\r\n\r\n\r\n \r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { AngularPlugin } from \"./applicationinsights-angularplugin-js.component\";\r\nimport { ApplicationinsightsAngularpluginErrorService } from \"./applicationinsights-angularplugin-error.service\";\r\n\r\n@NgModule({\r\n declarations: [AngularPlugin],\r\n imports: [\r\n ],\r\n exports: [AngularPlugin],\r\n providers: [\r\n ApplicationinsightsAngularpluginErrorService\r\n ]\r\n})\r\nexport class ApplicationinsightsAngularpluginJsModule { }\r\n","/*\r\n * Public API Surface of applicationinsights-angularplugin-js\r\n */\r\n\r\nexport * from \"./lib/applicationinsights-angularplugin-js.component\";\r\nexport * from \"./lib/applicationinsights-angularplugin-js.module\";\r\nexport * from \"./lib/applicationinsights-angularplugin-error.service\";\r\nexport * from \"./lib/IErrorService\";\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { Injectable, Component, NgModule } from '@angular/core';
|
|
3
3
|
import { PropertiesPluginIdentifier, AnalyticsPluginIdentifier } from '@microsoft/applicationinsights-common';
|
|
4
|
-
import { isFunction, arrForEach, BaseTelemetryPlugin, getLocation, generateW3CId, _throwInternal } from '@microsoft/applicationinsights-core-js';
|
|
4
|
+
import { isFunction, arrForEach, BaseTelemetryPlugin, onConfigChange, isArray, getLocation, generateW3CId, _throwInternal } from '@microsoft/applicationinsights-core-js';
|
|
5
|
+
import dynamicProto from '@microsoft/dynamicproto-js';
|
|
5
6
|
import { NavigationEnd } from '@angular/router';
|
|
7
|
+
import { objDeepFreeze } from '@nevware21/ts-utils';
|
|
6
8
|
|
|
7
9
|
class ApplicationinsightsAngularpluginErrorService {
|
|
8
10
|
constructor() {
|
|
@@ -14,6 +16,9 @@ class ApplicationinsightsAngularpluginErrorService {
|
|
|
14
16
|
set plugin(analyticsPlugin) {
|
|
15
17
|
this.analyticsPlugin = analyticsPlugin;
|
|
16
18
|
}
|
|
19
|
+
clearErrorHandlers() {
|
|
20
|
+
this.errorServices = [];
|
|
21
|
+
}
|
|
17
22
|
addErrorHandler(errorService) {
|
|
18
23
|
if (errorService && isFunction(errorService.handleError)) {
|
|
19
24
|
this.errorServices.push(errorService);
|
|
@@ -42,83 +47,135 @@ class ApplicationinsightsAngularpluginErrorService {
|
|
|
42
47
|
}
|
|
43
48
|
ApplicationinsightsAngularpluginErrorService.instance = null;
|
|
44
49
|
ApplicationinsightsAngularpluginErrorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ApplicationinsightsAngularpluginErrorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
45
|
-
ApplicationinsightsAngularpluginErrorService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ApplicationinsightsAngularpluginErrorService, providedIn:
|
|
50
|
+
ApplicationinsightsAngularpluginErrorService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ApplicationinsightsAngularpluginErrorService, providedIn: "root" });
|
|
46
51
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ApplicationinsightsAngularpluginErrorService, decorators: [{
|
|
47
52
|
type: Injectable,
|
|
48
53
|
args: [{
|
|
49
|
-
providedIn:
|
|
54
|
+
providedIn: "root"
|
|
50
55
|
}]
|
|
51
56
|
}], ctorParameters: function () { return []; } });
|
|
52
57
|
|
|
58
|
+
let undefValue;
|
|
59
|
+
const defaultAngularExtensionConfig = objDeepFreeze({
|
|
60
|
+
router: { blkVal: true, v: undefValue },
|
|
61
|
+
errorServices: { blkVal: true, v: undefValue }
|
|
62
|
+
});
|
|
53
63
|
// eslint-disable-next-line @angular-eslint/component-class-suffix
|
|
54
64
|
class AngularPlugin extends BaseTelemetryPlugin {
|
|
55
|
-
constructor() {
|
|
65
|
+
constructor(_injector) {
|
|
56
66
|
super();
|
|
67
|
+
this._injector = _injector;
|
|
57
68
|
this.priority = 186;
|
|
58
|
-
this.identifier =
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
let
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
69
|
+
this.identifier = "AngularPlugin";
|
|
70
|
+
let _analyticsPlugin;
|
|
71
|
+
let _propertiesPlugin;
|
|
72
|
+
let _angularCfg;
|
|
73
|
+
let _eventSubscription;
|
|
74
|
+
let _isPageInitialLoad;
|
|
75
|
+
let _prevRouter;
|
|
76
|
+
let _errorServiceInstance;
|
|
77
|
+
dynamicProto(AngularPlugin, this, (_self, _base) => {
|
|
78
|
+
const _initDefaults = () => {
|
|
79
|
+
_analyticsPlugin = null;
|
|
80
|
+
_propertiesPlugin = null;
|
|
81
|
+
_angularCfg = null;
|
|
82
|
+
_eventSubscription = null;
|
|
83
|
+
_isPageInitialLoad = true;
|
|
84
|
+
_prevRouter = undefValue;
|
|
85
|
+
};
|
|
86
|
+
_initDefaults();
|
|
87
|
+
_self.initialize = (config, core, extensions, pluginChain) => {
|
|
88
|
+
super.initialize(config, core, extensions, pluginChain);
|
|
89
|
+
_self._addHook(onConfigChange(config, (details) => {
|
|
90
|
+
let ctx = _self._getTelCtx();
|
|
91
|
+
_angularCfg = ctx.getExtCfg(_self.identifier, defaultAngularExtensionConfig);
|
|
92
|
+
_propertiesPlugin = core.getPlugin(PropertiesPluginIdentifier)?.plugin;
|
|
93
|
+
_analyticsPlugin = core.getPlugin(AnalyticsPluginIdentifier)?.plugin;
|
|
94
|
+
if (_angularCfg.useInjector && _injector) {
|
|
95
|
+
_errorServiceInstance = this._injector.get(ApplicationinsightsAngularpluginErrorService);
|
|
96
|
+
}
|
|
97
|
+
_errorServiceInstance = _errorServiceInstance ? _errorServiceInstance
|
|
98
|
+
: ApplicationinsightsAngularpluginErrorService.instance;
|
|
99
|
+
// two instance of errorService
|
|
100
|
+
if (_analyticsPlugin) {
|
|
101
|
+
if (_errorServiceInstance !== null) {
|
|
102
|
+
_errorServiceInstance.plugin = _analyticsPlugin;
|
|
103
|
+
if (_angularCfg.errorServices && isArray(_angularCfg.errorServices)) {
|
|
104
|
+
_errorServiceInstance.clearErrorHandlers();
|
|
105
|
+
arrForEach(_angularCfg.errorServices, (errorService) => {
|
|
106
|
+
_errorServiceInstance.addErrorHandler(errorService);
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
if (_angularCfg.router !== _prevRouter) {
|
|
112
|
+
// router is changed, or has not been initialized yet
|
|
113
|
+
// unsubscribe previous router events
|
|
114
|
+
if (_eventSubscription) {
|
|
115
|
+
_eventSubscription.unsubscribe();
|
|
116
|
+
}
|
|
117
|
+
if (_angularCfg.router) {
|
|
118
|
+
// only track page view if it is the initial page load for this plugin
|
|
119
|
+
if (_isPageInitialLoad) {
|
|
120
|
+
const pageViewTelemetry = {
|
|
121
|
+
uri: _angularCfg.router.url
|
|
122
|
+
};
|
|
123
|
+
_self.trackPageView(pageViewTelemetry);
|
|
124
|
+
}
|
|
125
|
+
// subscribe to new router events
|
|
126
|
+
_eventSubscription = _angularCfg.router.events.subscribe(event => {
|
|
127
|
+
if (_self.isInitialized()) {
|
|
128
|
+
if (event instanceof NavigationEnd) {
|
|
129
|
+
// for page initial load, do not call trackPageView twice
|
|
130
|
+
if (_isPageInitialLoad) {
|
|
131
|
+
_isPageInitialLoad = false;
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
const pvt = {
|
|
135
|
+
uri: _angularCfg.router.url,
|
|
136
|
+
properties: { duration: 0 } // SPA route change loading durations are undefined, so send 0
|
|
137
|
+
};
|
|
138
|
+
_self.trackPageView(pvt);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
_prevRouter = _angularCfg.router;
|
|
144
|
+
}
|
|
145
|
+
}));
|
|
146
|
+
// for test purpose only
|
|
147
|
+
_self["_getDbgPlgTargets"] = () => _angularCfg;
|
|
148
|
+
_self["_getErrorService"] = () => _errorServiceInstance;
|
|
149
|
+
};
|
|
150
|
+
_self.trackPageView = (pageView) => {
|
|
151
|
+
if (_analyticsPlugin) {
|
|
152
|
+
const location = getLocation();
|
|
153
|
+
if (_propertiesPlugin && _propertiesPlugin.context && _propertiesPlugin.context.telemetryTrace) {
|
|
154
|
+
_propertiesPlugin.context.telemetryTrace.traceID = generateW3CId();
|
|
155
|
+
_propertiesPlugin.context.telemetryTrace.name = location && location.pathname || "_unknown_";
|
|
70
156
|
}
|
|
157
|
+
_analyticsPlugin.trackPageView(pageView);
|
|
71
158
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
self._eventSubscription.unsubscribe();
|
|
75
|
-
self._eventSubscription = null;
|
|
76
|
-
}
|
|
77
|
-
self.analyticsPlugin = null;
|
|
78
|
-
self.propertiesPlugin = null;
|
|
79
|
-
self._angularCfg = null;
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
initialize(config, core, extensions, pluginChain) {
|
|
83
|
-
super.initialize(config, core, extensions, pluginChain);
|
|
84
|
-
const self = this;
|
|
85
|
-
const ctx = self._getTelCtx();
|
|
86
|
-
const extConfig = ctx.getExtCfg(self.identifier, { router: null, errorServices: null });
|
|
87
|
-
self.propertiesPlugin = core.getPlugin(PropertiesPluginIdentifier)?.plugin;
|
|
88
|
-
self.analyticsPlugin = core.getPlugin(AnalyticsPluginIdentifier)?.plugin;
|
|
89
|
-
if (self.analyticsPlugin) {
|
|
90
|
-
if (ApplicationinsightsAngularpluginErrorService.instance !== null) {
|
|
91
|
-
ApplicationinsightsAngularpluginErrorService.instance.plugin = self.analyticsPlugin;
|
|
92
|
-
if (extConfig.errorServices && Array.isArray(extConfig.errorServices)) {
|
|
93
|
-
arrForEach(extConfig.errorServices, (errorService) => {
|
|
94
|
-
ApplicationinsightsAngularpluginErrorService.instance.addErrorHandler(errorService);
|
|
95
|
-
});
|
|
159
|
+
else {
|
|
160
|
+
_throwInternal(_self.diagLog(), 1 /* eLoggingSeverity.CRITICAL */, 64 /* _eInternalMessageId.TelemetryInitializerFailed */, "Analytics plugin is not available, Angular plugin telemetry will not be sent: ");
|
|
96
161
|
}
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
if (extConfig.router) {
|
|
100
|
-
let isPageInitialLoad = true;
|
|
101
|
-
const pageViewTelemetry = {
|
|
102
|
-
uri: extConfig.router.url
|
|
103
162
|
};
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
if (
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
isPageInitialLoad = false;
|
|
111
|
-
return;
|
|
163
|
+
_self._doTeardown = (unloadCtx, unloadState, asyncCallback) => {
|
|
164
|
+
if (_analyticsPlugin && _errorServiceInstance !== null) {
|
|
165
|
+
_errorServiceInstance.plugin = null;
|
|
166
|
+
if (_angularCfg) {
|
|
167
|
+
if (_angularCfg.errorServices && Array.isArray(_angularCfg.errorServices)) {
|
|
168
|
+
_errorServiceInstance.clearErrorHandlers();
|
|
112
169
|
}
|
|
113
|
-
const pvt = {
|
|
114
|
-
uri: extConfig.router.url,
|
|
115
|
-
properties: { duration: 0 } // SPA route change loading durations are undefined, so send 0
|
|
116
|
-
};
|
|
117
|
-
self.trackPageView(pvt);
|
|
118
170
|
}
|
|
119
171
|
}
|
|
120
|
-
|
|
121
|
-
|
|
172
|
+
if (_eventSubscription) {
|
|
173
|
+
_eventSubscription.unsubscribe();
|
|
174
|
+
_eventSubscription = null;
|
|
175
|
+
}
|
|
176
|
+
_initDefaults();
|
|
177
|
+
};
|
|
178
|
+
});
|
|
122
179
|
}
|
|
123
180
|
/**
|
|
124
181
|
* Add Part A fields to the event
|
|
@@ -128,27 +185,19 @@ class AngularPlugin extends BaseTelemetryPlugin {
|
|
|
128
185
|
processTelemetry(event, itemCtx) {
|
|
129
186
|
this.processNext(event, itemCtx);
|
|
130
187
|
}
|
|
188
|
+
initialize(config, core, extensions, pluginChain) {
|
|
189
|
+
// @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging
|
|
190
|
+
}
|
|
131
191
|
trackPageView(pageView) {
|
|
132
|
-
|
|
133
|
-
if (self.analyticsPlugin) {
|
|
134
|
-
const location = getLocation();
|
|
135
|
-
if (self.propertiesPlugin && self.propertiesPlugin.context && self.propertiesPlugin.context.telemetryTrace) {
|
|
136
|
-
self.propertiesPlugin.context.telemetryTrace.traceID = generateW3CId();
|
|
137
|
-
self.propertiesPlugin.context.telemetryTrace.name = location && location.pathname || '_unknown_';
|
|
138
|
-
}
|
|
139
|
-
self.analyticsPlugin.trackPageView(pageView);
|
|
140
|
-
}
|
|
141
|
-
else {
|
|
142
|
-
_throwInternal(self.diagLog(), 1 /* eLoggingSeverity.CRITICAL */, 64 /* _eInternalMessageId.TelemetryInitializerFailed */, 'Analytics plugin is not available, Angular plugin telemetry will not be sent: ');
|
|
143
|
-
}
|
|
192
|
+
// @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging
|
|
144
193
|
}
|
|
145
194
|
}
|
|
146
|
-
AngularPlugin.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AngularPlugin, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
147
|
-
AngularPlugin.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: AngularPlugin, selector: "lib-applicationinsights-angularplugin-js", usesInheritance: true, ngImport: i0, template:
|
|
195
|
+
AngularPlugin.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AngularPlugin, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
196
|
+
AngularPlugin.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: AngularPlugin, selector: "lib-applicationinsights-angularplugin-js", usesInheritance: true, ngImport: i0, template: "", isInline: true });
|
|
148
197
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AngularPlugin, decorators: [{
|
|
149
198
|
type: Component,
|
|
150
|
-
args: [{ selector:
|
|
151
|
-
}], ctorParameters: function () { return []; } });
|
|
199
|
+
args: [{ selector: "lib-applicationinsights-angularplugin-js", template: "" }]
|
|
200
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
152
201
|
|
|
153
202
|
class ApplicationinsightsAngularpluginJsModule {
|
|
154
203
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"microsoft-applicationinsights-angularplugin-js.mjs","sources":["../../../projects/applicationinsights-angularplugin-js/src/lib/applicationinsights-angularplugin-error.service.ts","../../../projects/applicationinsights-angularplugin-js/src/lib/applicationinsights-angularplugin-js.component.ts","../../../projects/applicationinsights-angularplugin-js/src/lib/applicationinsights-angularplugin-js.module.ts","../../../projects/applicationinsights-angularplugin-js/src/public-api.ts","../../../projects/applicationinsights-angularplugin-js/src/microsoft-applicationinsights-angularplugin-js.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { IAppInsights } from '@microsoft/applicationinsights-common';\r\nimport { arrForEach, isFunction } from '@microsoft/applicationinsights-core-js';\r\nimport { IErrorService } from './IErrorService';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ApplicationinsightsAngularpluginErrorService implements IErrorService {\r\n public static instance: ApplicationinsightsAngularpluginErrorService = null;\r\n private analyticsPlugin: IAppInsights;\r\n private errorServices: IErrorService[] = [];\r\n\r\n constructor() {\r\n if (ApplicationinsightsAngularpluginErrorService.instance === null) {\r\n ApplicationinsightsAngularpluginErrorService.instance = this;\r\n }\r\n }\r\n\r\n public set plugin(analyticsPlugin: IAppInsights) {\r\n this.analyticsPlugin = analyticsPlugin;\r\n }\r\n\r\n public addErrorHandler(errorService: IErrorService): void {\r\n if (errorService && isFunction(errorService.handleError)) {\r\n this.errorServices.push(errorService);\r\n }\r\n }\r\n\r\n public removeErrorHandler(errorService: IErrorService): void {\r\n if (errorService && isFunction(errorService.handleError)) {\r\n const idx = this.errorServices.indexOf(errorService);\r\n if (idx !== -1) {\r\n this.errorServices.splice(idx, 1);\r\n }\r\n }\r\n }\r\n\r\n handleError(error: any): void {\r\n if (this.analyticsPlugin) {\r\n this.analyticsPlugin.trackException({ exception: error });\r\n }\r\n\r\n if (this.errorServices && this.errorServices.length > 0) {\r\n arrForEach(this.errorServices, errorService => {\r\n if (isFunction(errorService.handleError)) {\r\n errorService.handleError(error);\r\n }\r\n });\r\n }\r\n }\r\n}\r\n\r\n","import { Component } from '@angular/core';\r\nimport {\r\n IConfig, IPageViewTelemetry, IAppInsights, PropertiesPluginIdentifier, AnalyticsPluginIdentifier\r\n} from '@microsoft/applicationinsights-common';\r\nimport {\r\n IPlugin, IConfiguration, IAppInsightsCore,\r\n BaseTelemetryPlugin, arrForEach, ITelemetryItem, ITelemetryPluginChain,\r\n IProcessTelemetryContext, getLocation, _throwInternal, eLoggingSeverity, _eInternalMessageId, IProcessTelemetryUnloadContext, ITelemetryUnloadState, generateW3CId\r\n} from '@microsoft/applicationinsights-core-js';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\n// For types only\r\nimport * as properties from '@microsoft/applicationinsights-properties-js';\r\nimport { ApplicationinsightsAngularpluginErrorService } from './applicationinsights-angularplugin-error.service';\r\nimport { IErrorService } from './IErrorService';\r\nimport { Subscription } from 'rxjs';\r\nimport { AnalyticsPlugin } from '@microsoft/applicationinsights-analytics-js';\r\n\r\ninterface IAngularExtensionConfig {\r\n /**\r\n * Angular router for enabling Application Insights PageView tracking.\r\n */\r\n router?: Router;\r\n\r\n /**\r\n * Custom error service for global error handling.\r\n */\r\n errorServices?: IErrorService[];\r\n}\r\n\r\n@Component({\r\n selector: 'lib-applicationinsights-angularplugin-js',\r\n template: ``,\r\n styles: []\r\n})\r\n// eslint-disable-next-line @angular-eslint/component-class-suffix\r\nexport class AngularPlugin extends BaseTelemetryPlugin {\r\n public priority = 186;\r\n public identifier = 'AngularPlugin';\r\n\r\n private analyticsPlugin: AnalyticsPlugin;\r\n private propertiesPlugin: properties.PropertiesPlugin;\r\n private _angularCfg: IAngularExtensionConfig = null;\r\n private _eventSubscription: Subscription = null;\r\n\r\n\r\n constructor() {\r\n super();\r\n let self = this;\r\n\r\n self._doTeardown = (unloadCtx?: IProcessTelemetryUnloadContext, unloadState?: ITelemetryUnloadState, asyncCallback?: () => void): void | boolean => {\r\n if (this.analyticsPlugin && ApplicationinsightsAngularpluginErrorService.instance !== null) {\r\n ApplicationinsightsAngularpluginErrorService.instance.plugin = null;\r\n if (self._angularCfg) {\r\n if (self._angularCfg.errorServices && Array.isArray(self._angularCfg.errorServices)) {\r\n arrForEach(self._angularCfg.errorServices, (errorService: IErrorService) => {\r\n ApplicationinsightsAngularpluginErrorService.instance.removeErrorHandler(errorService);\r\n });\r\n }\r\n }\r\n }\r\n\r\n if (self._eventSubscription) {\r\n self._eventSubscription.unsubscribe();\r\n self._eventSubscription = null;\r\n }\r\n\r\n self.analyticsPlugin = null;\r\n self.propertiesPlugin = null;\r\n self._angularCfg = null;\r\n }\r\n }\r\n\r\n initialize(config: IConfiguration & IConfig, core: IAppInsightsCore, extensions: IPlugin[], pluginChain?: ITelemetryPluginChain) {\r\n super.initialize(config, core, extensions, pluginChain);\r\n const self = this;\r\n const ctx = self._getTelCtx();\r\n const extConfig = ctx.getExtCfg<IAngularExtensionConfig>(self.identifier, { router: null, errorServices: null });\r\n\r\n self.propertiesPlugin = core.getPlugin<properties.PropertiesPlugin>(PropertiesPluginIdentifier)?.plugin;\r\n self.analyticsPlugin = core.getPlugin<AnalyticsPlugin>(AnalyticsPluginIdentifier)?.plugin;\r\n if (self.analyticsPlugin) {\r\n if (ApplicationinsightsAngularpluginErrorService.instance !== null) {\r\n ApplicationinsightsAngularpluginErrorService.instance.plugin = self.analyticsPlugin;\r\n if (extConfig.errorServices && Array.isArray(extConfig.errorServices)) {\r\n arrForEach(extConfig.errorServices, (errorService: IErrorService) => {\r\n ApplicationinsightsAngularpluginErrorService.instance.addErrorHandler(errorService);\r\n });\r\n }\r\n }\r\n }\r\n\r\n if (extConfig.router) {\r\n let isPageInitialLoad = true;\r\n const pageViewTelemetry: IPageViewTelemetry = {\r\n uri: extConfig.router.url\r\n };\r\n self.trackPageView(pageViewTelemetry);\r\n self._eventSubscription = extConfig.router.events.subscribe(event => {\r\n if (self.isInitialized()) {\r\n if (event instanceof NavigationEnd) {\r\n // for page initial load, do not call trackPageView twice\r\n if (isPageInitialLoad) {\r\n isPageInitialLoad = false;\r\n return;\r\n }\r\n const pvt: IPageViewTelemetry = {\r\n uri: extConfig.router.url,\r\n properties: { duration: 0 } // SPA route change loading durations are undefined, so send 0\r\n };\r\n self.trackPageView(pvt);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Add Part A fields to the event\r\n *\r\n * @param event The event that needs to be processed\r\n */\r\n processTelemetry(event: ITelemetryItem, itemCtx?: IProcessTelemetryContext) {\r\n this.processNext(event, itemCtx);\r\n }\r\n\r\n trackPageView(pageView: IPageViewTelemetry) {\r\n const self = this;\r\n\r\n if (self.analyticsPlugin) {\r\n const location = getLocation();\r\n if (self.propertiesPlugin && self.propertiesPlugin.context && self.propertiesPlugin.context.telemetryTrace) {\r\n self.propertiesPlugin.context.telemetryTrace.traceID = generateW3CId();\r\n self.propertiesPlugin.context.telemetryTrace.name = location && location.pathname || '_unknown_';\r\n }\r\n self.analyticsPlugin.trackPageView(pageView);\r\n } else {\r\n _throwInternal(self.diagLog(),\r\n // eslint-disable-next-line max-len\r\n eLoggingSeverity.CRITICAL, _eInternalMessageId.TelemetryInitializerFailed, 'Analytics plugin is not available, Angular plugin telemetry will not be sent: ');\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { AngularPlugin } from './applicationinsights-angularplugin-js.component';\r\nimport { ApplicationinsightsAngularpluginErrorService } from './applicationinsights-angularplugin-error.service';\r\n\r\n@NgModule({\r\n declarations: [AngularPlugin],\r\n imports: [\r\n ],\r\n exports: [AngularPlugin],\r\n providers: [\r\n ApplicationinsightsAngularpluginErrorService\r\n ]\r\n})\r\nexport class ApplicationinsightsAngularpluginJsModule { }\r\n","/*\r\n * Public API Surface of applicationinsights-angularplugin-js\r\n */\r\n\r\nexport * from './lib/applicationinsights-angularplugin-js.component';\r\nexport * from './lib/applicationinsights-angularplugin-js.module';\r\nexport * from './lib/applicationinsights-angularplugin-error.service';\r\nexport * from './lib/IErrorService';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"microsoft-applicationinsights-angularplugin-js.mjs","sources":["../../../projects/applicationinsights-angularplugin-js/src/lib/applicationinsights-angularplugin-error.service.ts","../../../projects/applicationinsights-angularplugin-js/src/lib/applicationinsights-angularplugin-js.component.ts","../../../projects/applicationinsights-angularplugin-js/src/lib/applicationinsights-angularplugin-js.module.ts","../../../projects/applicationinsights-angularplugin-js/src/public-api.ts","../../../projects/applicationinsights-angularplugin-js/src/microsoft-applicationinsights-angularplugin-js.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\r\nimport { IAppInsights } from \"@microsoft/applicationinsights-common\";\r\nimport { arrForEach, isFunction } from \"@microsoft/applicationinsights-core-js\";\r\nimport { IErrorService } from \"./IErrorService\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class ApplicationinsightsAngularpluginErrorService implements IErrorService {\r\n public static instance: ApplicationinsightsAngularpluginErrorService = null;\r\n private analyticsPlugin: IAppInsights;\r\n private errorServices: IErrorService[] = [];\r\n\r\n constructor() {\r\n if (ApplicationinsightsAngularpluginErrorService.instance === null) {\r\n ApplicationinsightsAngularpluginErrorService.instance = this;\r\n }\r\n }\r\n\r\n public set plugin(analyticsPlugin: IAppInsights) {\r\n this.analyticsPlugin = analyticsPlugin;\r\n }\r\n\r\n public clearErrorHandlers() {\r\n this.errorServices = [];\r\n }\r\n\r\n public addErrorHandler(errorService: IErrorService): void {\r\n if (errorService && isFunction(errorService.handleError)) {\r\n this.errorServices.push(errorService);\r\n }\r\n }\r\n\r\n public removeErrorHandler(errorService: IErrorService): void {\r\n if (errorService && isFunction(errorService.handleError)) {\r\n const idx = this.errorServices.indexOf(errorService);\r\n if (idx !== -1) {\r\n this.errorServices.splice(idx, 1);\r\n }\r\n }\r\n }\r\n\r\n handleError(error: any): void {\r\n if (this.analyticsPlugin) {\r\n this.analyticsPlugin.trackException({ exception: error });\r\n }\r\n\r\n if (this.errorServices && this.errorServices.length > 0) {\r\n arrForEach(this.errorServices, errorService => {\r\n if (isFunction(errorService.handleError)) {\r\n errorService.handleError(error);\r\n }\r\n });\r\n }\r\n }\r\n}\r\n\r\n","import { Component, Injector} from \"@angular/core\";\r\nimport {\r\n IConfig, IPageViewTelemetry, PropertiesPluginIdentifier, AnalyticsPluginIdentifier\r\n} from \"@microsoft/applicationinsights-common\";\r\nimport {\r\n IPlugin, IConfiguration, IAppInsightsCore, BaseTelemetryPlugin, arrForEach, ITelemetryItem, ITelemetryPluginChain,\r\n IProcessTelemetryContext, getLocation, _throwInternal, eLoggingSeverity, _eInternalMessageId, IProcessTelemetryUnloadContext,\r\n ITelemetryUnloadState, generateW3CId, onConfigChange, IConfigDefaults, isArray\r\n} from \"@microsoft/applicationinsights-core-js\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { NavigationEnd, Router } from \"@angular/router\";\r\nimport { ApplicationinsightsAngularpluginErrorService } from \"./applicationinsights-angularplugin-error.service\";\r\nimport { IErrorService } from \"./IErrorService\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { AnalyticsPlugin } from \"@microsoft/applicationinsights-analytics-js\";\r\nimport {objDeepFreeze} from \"@nevware21/ts-utils\";\r\nimport { PropertiesPlugin } from \"@microsoft/applicationinsights-properties-js\";\r\n\r\ninterface IAngularExtensionConfig {\r\n /**\r\n * Angular router for enabling Application Insights PageView tracking.\r\n */\r\n router?: Router;\r\n\r\n /**\r\n * Custom error service for global error handling.\r\n */\r\n errorServices?: IErrorService[];\r\n useInjector?: boolean;\r\n}\r\n\r\nlet undefValue;\r\n\r\nconst defaultAngularExtensionConfig: IConfigDefaults<IAngularExtensionConfig> = objDeepFreeze({\r\n router: { blkVal: true, v: undefValue},\r\n errorServices: { blkVal: true, v: undefValue}\r\n});\r\n\r\n@Component({\r\n selector: \"lib-applicationinsights-angularplugin-js\",\r\n template: \"\",\r\n styles: []\r\n})\r\n// eslint-disable-next-line @angular-eslint/component-class-suffix\r\nexport class AngularPlugin extends BaseTelemetryPlugin {\r\n public priority = 186;\r\n public identifier = \"AngularPlugin\";\r\n\r\n constructor(private _injector?: Injector) { // _injector is optional to provide\r\n super();\r\n let _analyticsPlugin: AnalyticsPlugin;\r\n let _propertiesPlugin: PropertiesPlugin;\r\n let _angularCfg: IAngularExtensionConfig;\r\n let _eventSubscription: Subscription;\r\n let _isPageInitialLoad: boolean;\r\n let _prevRouter: Router;\r\n let _errorServiceInstance: ApplicationinsightsAngularpluginErrorService;\r\n\r\n dynamicProto(AngularPlugin, this, (_self, _base) => {\r\n\r\n const _initDefaults = () => {\r\n _analyticsPlugin = null;\r\n _propertiesPlugin = null;\r\n _angularCfg = null;\r\n _eventSubscription = null;\r\n _isPageInitialLoad = true;\r\n _prevRouter = undefValue;\r\n };\r\n\r\n _initDefaults();\r\n\r\n _self.initialize = (config: IConfiguration & IConfig, core: IAppInsightsCore, extensions: IPlugin[],\r\n pluginChain?: ITelemetryPluginChain) => {\r\n super.initialize(config, core, extensions, pluginChain);\r\n \r\n _self._addHook(onConfigChange(config, (details) => {\r\n let ctx = _self._getTelCtx();\r\n _angularCfg = ctx.getExtCfg<IAngularExtensionConfig>(_self.identifier, defaultAngularExtensionConfig);\r\n _propertiesPlugin = core.getPlugin<PropertiesPlugin>(PropertiesPluginIdentifier)?.plugin as PropertiesPlugin;\r\n _analyticsPlugin = core.getPlugin<AnalyticsPlugin>(AnalyticsPluginIdentifier)?.plugin as AnalyticsPlugin;\r\n \r\n if (_angularCfg.useInjector && _injector){\r\n _errorServiceInstance = this._injector.get(ApplicationinsightsAngularpluginErrorService);\r\n }\r\n _errorServiceInstance = _errorServiceInstance ? _errorServiceInstance\r\n : ApplicationinsightsAngularpluginErrorService.instance;\r\n\r\n // two instance of errorService\r\n\r\n if (_analyticsPlugin) {\r\n if (_errorServiceInstance !== null) {\r\n _errorServiceInstance.plugin = _analyticsPlugin;\r\n if (_angularCfg.errorServices && isArray(_angularCfg.errorServices)) {\r\n _errorServiceInstance.clearErrorHandlers();\r\n arrForEach(_angularCfg.errorServices, (errorService: IErrorService) => {\r\n _errorServiceInstance.addErrorHandler(errorService);\r\n });\r\n }\r\n }\r\n }\r\n \r\n if (_angularCfg.router !== _prevRouter) {\r\n // router is changed, or has not been initialized yet\r\n\r\n // unsubscribe previous router events\r\n if (_eventSubscription) {\r\n _eventSubscription.unsubscribe();\r\n }\r\n\r\n if (_angularCfg.router){\r\n // only track page view if it is the initial page load for this plugin\r\n if (_isPageInitialLoad){\r\n const pageViewTelemetry: IPageViewTelemetry = {\r\n uri: _angularCfg.router.url\r\n };\r\n _self.trackPageView(pageViewTelemetry);\r\n }\r\n \r\n // subscribe to new router events\r\n _eventSubscription = _angularCfg.router.events.subscribe(event => {\r\n if (_self.isInitialized()) {\r\n if (event instanceof NavigationEnd) {\r\n // for page initial load, do not call trackPageView twice\r\n if (_isPageInitialLoad) {\r\n _isPageInitialLoad = false;\r\n return;\r\n }\r\n const pvt: IPageViewTelemetry = {\r\n uri: _angularCfg.router.url,\r\n properties: { duration: 0 } // SPA route change loading durations are undefined, so send 0\r\n };\r\n _self.trackPageView(pvt);\r\n }\r\n }\r\n });\r\n }\r\n _prevRouter = _angularCfg.router;\r\n }\r\n }));\r\n\r\n // for test purpose only\r\n _self[\"_getDbgPlgTargets\"] = () => _angularCfg;\r\n _self[\"_getErrorService\"] = () => _errorServiceInstance;\r\n };\r\n\r\n _self.trackPageView = (pageView: IPageViewTelemetry) => {\r\n if (_analyticsPlugin) {\r\n const location = getLocation();\r\n if (_propertiesPlugin && _propertiesPlugin.context && _propertiesPlugin.context.telemetryTrace) {\r\n _propertiesPlugin.context.telemetryTrace.traceID = generateW3CId();\r\n _propertiesPlugin.context.telemetryTrace.name = location && location.pathname || \"_unknown_\";\r\n }\r\n _analyticsPlugin.trackPageView(pageView);\r\n } else {\r\n _throwInternal(_self.diagLog(),\r\n // eslint-disable-next-line max-len\r\n eLoggingSeverity.CRITICAL, _eInternalMessageId.TelemetryInitializerFailed, \"Analytics plugin is not available, Angular plugin telemetry will not be sent: \");\r\n }\r\n };\r\n \r\n\r\n _self._doTeardown = (unloadCtx?: IProcessTelemetryUnloadContext, unloadState?: ITelemetryUnloadState,\r\n asyncCallback?: () => void): void | boolean => {\r\n if (_analyticsPlugin && _errorServiceInstance !== null) {\r\n _errorServiceInstance.plugin = null;\r\n if (_angularCfg) {\r\n if (_angularCfg.errorServices && Array.isArray(_angularCfg.errorServices)) {\r\n _errorServiceInstance.clearErrorHandlers();\r\n \r\n }\r\n }\r\n }\r\n \r\n if (_eventSubscription) {\r\n _eventSubscription.unsubscribe();\r\n _eventSubscription = null;\r\n }\r\n _initDefaults();\r\n };\r\n });\r\n\r\n }\r\n /**\r\n * Add Part A fields to the event\r\n *\r\n * @param event The event that needs to be processed\r\n */\r\n processTelemetry(event: ITelemetryItem, itemCtx?: IProcessTelemetryContext) {\r\n this.processNext(event, itemCtx);\r\n }\r\n\r\n\r\n initialize(config: IConfiguration & IConfig, core: IAppInsightsCore, extensions: IPlugin[], pluginChain?: ITelemetryPluginChain) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n }\r\n\r\n trackPageView(pageView: IPageViewTelemetry) {\r\n // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging\r\n }\r\n\r\n\r\n \r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { AngularPlugin } from \"./applicationinsights-angularplugin-js.component\";\r\nimport { ApplicationinsightsAngularpluginErrorService } from \"./applicationinsights-angularplugin-error.service\";\r\n\r\n@NgModule({\r\n declarations: [AngularPlugin],\r\n imports: [\r\n ],\r\n exports: [AngularPlugin],\r\n providers: [\r\n ApplicationinsightsAngularpluginErrorService\r\n ]\r\n})\r\nexport class ApplicationinsightsAngularpluginJsModule { }\r\n","/*\r\n * Public API Surface of applicationinsights-angularplugin-js\r\n */\r\n\r\nexport * from \"./lib/applicationinsights-angularplugin-js.component\";\r\nexport * from \"./lib/applicationinsights-angularplugin-js.module\";\r\nexport * from \"./lib/applicationinsights-angularplugin-error.service\";\r\nexport * from \"./lib/IErrorService\";\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
package/lib/IErrorService.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { IAppInsights } from
|
|
2
|
-
import { IErrorService } from
|
|
1
|
+
import { IAppInsights } from "@microsoft/applicationinsights-common";
|
|
2
|
+
import { IErrorService } from "./IErrorService";
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export declare class ApplicationinsightsAngularpluginErrorService implements IErrorService {
|
|
5
5
|
static instance: ApplicationinsightsAngularpluginErrorService;
|
|
@@ -7,6 +7,7 @@ export declare class ApplicationinsightsAngularpluginErrorService implements IEr
|
|
|
7
7
|
private errorServices;
|
|
8
8
|
constructor();
|
|
9
9
|
set plugin(analyticsPlugin: IAppInsights);
|
|
10
|
+
clearErrorHandlers(): void;
|
|
10
11
|
addErrorHandler(errorService: IErrorService): void;
|
|
11
12
|
removeErrorHandler(errorService: IErrorService): void;
|
|
12
13
|
handleError(error: any): void;
|
|
@@ -1,21 +1,19 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { Injector } from "@angular/core";
|
|
2
|
+
import { IConfig, IPageViewTelemetry } from "@microsoft/applicationinsights-common";
|
|
3
|
+
import { IPlugin, IConfiguration, IAppInsightsCore, BaseTelemetryPlugin, ITelemetryItem, ITelemetryPluginChain, IProcessTelemetryContext } from "@microsoft/applicationinsights-core-js";
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
5
|
export declare class AngularPlugin extends BaseTelemetryPlugin {
|
|
6
|
+
private _injector?;
|
|
5
7
|
priority: number;
|
|
6
8
|
identifier: string;
|
|
7
|
-
|
|
8
|
-
private propertiesPlugin;
|
|
9
|
-
private _angularCfg;
|
|
10
|
-
private _eventSubscription;
|
|
11
|
-
constructor();
|
|
12
|
-
initialize(config: IConfiguration & IConfig, core: IAppInsightsCore, extensions: IPlugin[], pluginChain?: ITelemetryPluginChain): void;
|
|
9
|
+
constructor(_injector?: Injector);
|
|
13
10
|
/**
|
|
14
11
|
* Add Part A fields to the event
|
|
15
12
|
*
|
|
16
13
|
* @param event The event that needs to be processed
|
|
17
14
|
*/
|
|
18
15
|
processTelemetry(event: ITelemetryItem, itemCtx?: IProcessTelemetryContext): void;
|
|
16
|
+
initialize(config: IConfiguration & IConfig, core: IAppInsightsCore, extensions: IPlugin[], pluginChain?: ITelemetryPluginChain): void;
|
|
19
17
|
trackPageView(pageView: IPageViewTelemetry): void;
|
|
20
18
|
static ɵfac: i0.ɵɵFactoryDeclaration<AngularPlugin, never>;
|
|
21
19
|
static ɵcmp: i0.ɵɵComponentDeclaration<AngularPlugin, "lib-applicationinsights-angularplugin-js", never, {}, {}, never, never, false>;
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@microsoft/applicationinsights-angularplugin-js",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "14.0.0",
|
|
4
4
|
"description": "Microsoft Application Insights Angular plugin",
|
|
5
5
|
"author": "Microsoft Application Insights Team",
|
|
6
6
|
"license": "MIT",
|
|
@@ -13,14 +13,14 @@
|
|
|
13
13
|
},
|
|
14
14
|
"homepage": "https://github.com/microsoft/applicationinsights-angularplugin-js#readme",
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@microsoft/applicationinsights-shims": "^
|
|
17
|
-
"@microsoft/applicationinsights-common": "^
|
|
18
|
-
"@microsoft/applicationinsights-core-js": "^
|
|
19
|
-
"@microsoft/applicationinsights-properties-js": "^
|
|
16
|
+
"@microsoft/applicationinsights-shims": "^3.0.1",
|
|
17
|
+
"@microsoft/applicationinsights-common": "^3.0.3",
|
|
18
|
+
"@microsoft/applicationinsights-core-js": "^3.0.3",
|
|
19
|
+
"@microsoft/applicationinsights-properties-js": "^3.0.3",
|
|
20
20
|
"tslib": "^2.0.0"
|
|
21
21
|
},
|
|
22
22
|
"peerDependencies": {
|
|
23
|
-
"@microsoft/applicationinsights-analytics-js": "^
|
|
23
|
+
"@microsoft/applicationinsights-analytics-js": "^3.0.3",
|
|
24
24
|
"@angular/common": ">= 14.0.3",
|
|
25
25
|
"@angular/core": ">= 14.0.3"
|
|
26
26
|
},
|
package/public-api.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from
|
|
3
|
-
export * from
|
|
4
|
-
export * from
|
|
1
|
+
export * from "./lib/applicationinsights-angularplugin-js.component";
|
|
2
|
+
export * from "./lib/applicationinsights-angularplugin-js.module";
|
|
3
|
+
export * from "./lib/applicationinsights-angularplugin-error.service";
|
|
4
|
+
export * from "./lib/IErrorService";
|
|
Binary file
|