@microsoft/applicationinsights-angularplugin-js 15.0.2 → 15.1.1

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.
Files changed (35) hide show
  1. package/.eslintrc.json +74 -0
  2. package/NOTICE +17 -0
  3. package/PRIVACY +3 -0
  4. package/SECURITY.md +41 -0
  5. package/SUPPORT.md +14 -0
  6. package/karma.conf.js +43 -0
  7. package/ng-package.json +15 -0
  8. package/package.json +30 -47
  9. package/{lib/IErrorService.d.ts → src/lib/IErrorService.ts} +1 -0
  10. package/src/lib/applicationininsights-angularplugin-multiple-instace.spec.ts +245 -0
  11. package/src/lib/applicationinsights-angularplugin-error.service.spec.ts +113 -0
  12. package/src/lib/applicationinsights-angularplugin-error.service.ts +57 -0
  13. package/src/lib/applicationinsights-angularplugin-js.component.spec.ts +158 -0
  14. package/src/lib/applicationinsights-angularplugin-js.component.ts +203 -0
  15. package/src/lib/applicationinsights-angularplugin-js.module.ts +14 -0
  16. package/{public-api.d.ts → src/public-api.ts} +4 -0
  17. package/src/test.ts +13 -0
  18. package/tsconfig.lib.json +30 -0
  19. package/tsconfig.lib.prod.json +10 -0
  20. package/tsconfig.spec.json +17 -0
  21. package/esm2020/lib/IErrorService.mjs +0 -2
  22. package/esm2020/lib/applicationinsights-angularplugin-error.service.mjs +0 -52
  23. package/esm2020/lib/applicationinsights-angularplugin-js.component.mjs +0 -152
  24. package/esm2020/lib/applicationinsights-angularplugin-js.module.mjs +0 -23
  25. package/esm2020/microsoft-applicationinsights-angularplugin-js.mjs +0 -5
  26. package/esm2020/public-api.mjs +0 -8
  27. package/fesm2015/microsoft-applicationinsights-angularplugin-js.mjs +0 -231
  28. package/fesm2015/microsoft-applicationinsights-angularplugin-js.mjs.map +0 -1
  29. package/fesm2020/microsoft-applicationinsights-angularplugin-js.mjs +0 -230
  30. package/fesm2020/microsoft-applicationinsights-angularplugin-js.mjs.map +0 -1
  31. package/index.d.ts +0 -5
  32. package/lib/applicationinsights-angularplugin-error.service.d.ts +0 -16
  33. package/lib/applicationinsights-angularplugin-js.component.d.ts +0 -20
  34. package/lib/applicationinsights-angularplugin-js.module.d.ts +0 -7
  35. package/microsoft-applicationinsights-angularplugin-js-15.0.2.tgz +0 -0
@@ -1,152 +0,0 @@
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";
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
- });
14
- // eslint-disable-next-line @angular-eslint/component-class-suffix
15
- export class AngularPlugin extends BaseTelemetryPlugin {
16
- constructor(_injector) {
17
- super();
18
- this._injector = _injector;
19
- this.priority = 186;
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_";
107
- }
108
- _analyticsPlugin.trackPageView(pageView);
109
- }
110
- else {
111
- _throwInternal(_self.diagLog(), 1 /* eLoggingSeverity.CRITICAL */, 64 /* _eInternalMessageId.TelemetryInitializerFailed */, "Analytics plugin is not available, Angular plugin telemetry will not be sent: ");
112
- }
113
- };
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();
120
- }
121
- }
122
- }
123
- if (_eventSubscription) {
124
- _eventSubscription.unsubscribe();
125
- _eventSubscription = null;
126
- }
127
- _initDefaults();
128
- };
129
- });
130
- }
131
- /**
132
- * Add Part A fields to the event
133
- *
134
- * @param event The event that needs to be processed
135
- */
136
- processTelemetry(event, itemCtx) {
137
- this.processNext(event, itemCtx);
138
- }
139
- initialize(config, core, extensions, pluginChain) {
140
- // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging
141
- }
142
- trackPageView(pageView) {
143
- // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging
144
- }
145
- }
146
- AngularPlugin.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AngularPlugin, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
147
- AngularPlugin.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: AngularPlugin, selector: "lib-applicationinsights-angularplugin-js", usesInheritance: true, ngImport: i0, template: "", isInline: true });
148
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AngularPlugin, decorators: [{
149
- type: Component,
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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QUUsT0FBTyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUdELFVBQVUsQ0FBQyxNQUFnQyxFQUFFLElBQXNCLEVBQUUsVUFBcUIsRUFBRSxXQUFtQztRQUMzSCxvRkFBb0Y7SUFDeEYsQ0FBQztJQUVELGFBQWEsQ0FBQyxRQUE0QjtRQUN0QyxvRkFBb0Y7SUFDeEYsQ0FBQzs7MkdBMUpRLGFBQWE7K0ZBQWIsYUFBYSx1R0FKWixFQUFFOzRGQUlILGFBQWE7a0JBTnpCLFNBQVM7K0JBQ0ksMENBQTBDLFlBQzFDLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdG9yfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge1xyXG4gICAgSUNvbmZpZywgSVBhZ2VWaWV3VGVsZW1ldHJ5LCBQcm9wZXJ0aWVzUGx1Z2luSWRlbnRpZmllciwgQW5hbHl0aWNzUGx1Z2luSWRlbnRpZmllclxyXG59IGZyb20gXCJAbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtY29tbW9uXCI7XHJcbmltcG9ydCB7XHJcbiAgICBJUGx1Z2luLCBJQ29uZmlndXJhdGlvbiwgSUFwcEluc2lnaHRzQ29yZSwgQmFzZVRlbGVtZXRyeVBsdWdpbiwgYXJyRm9yRWFjaCwgSVRlbGVtZXRyeUl0ZW0sIElUZWxlbWV0cnlQbHVnaW5DaGFpbixcclxuICAgIElQcm9jZXNzVGVsZW1ldHJ5Q29udGV4dCwgZ2V0TG9jYXRpb24sIF90aHJvd0ludGVybmFsLCBlTG9nZ2luZ1NldmVyaXR5LCBfZUludGVybmFsTWVzc2FnZUlkLCBJUHJvY2Vzc1RlbGVtZXRyeVVubG9hZENvbnRleHQsXHJcbiAgICBJVGVsZW1ldHJ5VW5sb2FkU3RhdGUsIGdlbmVyYXRlVzNDSWQsIG9uQ29uZmlnQ2hhbmdlLCBJQ29uZmlnRGVmYXVsdHMsIGlzQXJyYXlcclxufSBmcm9tIFwiQG1pY3Jvc29mdC9hcHBsaWNhdGlvbmluc2lnaHRzLWNvcmUtanNcIjtcclxuaW1wb3J0IGR5bmFtaWNQcm90byBmcm9tIFwiQG1pY3Jvc29mdC9keW5hbWljcHJvdG8tanNcIjtcclxuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBBcHBsaWNhdGlvbmluc2lnaHRzQW5ndWxhcnBsdWdpbkVycm9yU2VydmljZSB9IGZyb20gXCIuL2FwcGxpY2F0aW9uaW5zaWdodHMtYW5ndWxhcnBsdWdpbi1lcnJvci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IElFcnJvclNlcnZpY2UgfSBmcm9tIFwiLi9JRXJyb3JTZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IEFuYWx5dGljc1BsdWdpbiB9IGZyb20gXCJAbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtYW5hbHl0aWNzLWpzXCI7XHJcbmltcG9ydCB7b2JqRGVlcEZyZWV6ZX0gZnJvbSBcIkBuZXZ3YXJlMjEvdHMtdXRpbHNcIjtcclxuaW1wb3J0IHsgUHJvcGVydGllc1BsdWdpbiB9IGZyb20gXCJAbWljcm9zb2Z0L2FwcGxpY2F0aW9uaW5zaWdodHMtcHJvcGVydGllcy1qc1wiO1xyXG5cclxuaW50ZXJmYWNlIElBbmd1bGFyRXh0ZW5zaW9uQ29uZmlnIHtcclxuICAgIC8qKlxyXG4gICAgICogQW5ndWxhciByb3V0ZXIgZm9yIGVuYWJsaW5nIEFwcGxpY2F0aW9uIEluc2lnaHRzIFBhZ2VWaWV3IHRyYWNraW5nLlxyXG4gICAgICovXHJcbiAgICByb3V0ZXI/OiBSb3V0ZXI7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDdXN0b20gZXJyb3Igc2VydmljZSBmb3IgZ2xvYmFsIGVycm9yIGhhbmRsaW5nLlxyXG4gICAgICovXHJcbiAgICBlcnJvclNlcnZpY2VzPzogSUVycm9yU2VydmljZVtdO1xyXG4gICAgdXNlSW5qZWN0b3I/OiBib29sZWFuO1xyXG59XHJcblxyXG5sZXQgdW5kZWZWYWx1ZTtcclxuXHJcbmNvbnN0IGRlZmF1bHRBbmd1bGFyRXh0ZW5zaW9uQ29uZmlnOiBJQ29uZmlnRGVmYXVsdHM8SUFuZ3VsYXJFeHRlbnNpb25Db25maWc+ID0gb2JqRGVlcEZyZWV6ZSh7XHJcbiAgICByb3V0ZXI6IHsgYmxrVmFsOiB0cnVlLCB2OiB1bmRlZlZhbHVlfSxcclxuICAgIGVycm9yU2VydmljZXM6IHsgYmxrVmFsOiB0cnVlLCB2OiB1bmRlZlZhbHVlfVxyXG59KTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6IFwibGliLWFwcGxpY2F0aW9uaW5zaWdodHMtYW5ndWxhcnBsdWdpbi1qc1wiLFxyXG4gICAgdGVtcGxhdGU6IFwiXCIsXHJcbiAgICBzdHlsZXM6IFtdXHJcbn0pXHJcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LWNsYXNzLXN1ZmZpeFxyXG5leHBvcnQgY2xhc3MgQW5ndWxhclBsdWdpbiBleHRlbmRzIEJhc2VUZWxlbWV0cnlQbHVnaW4ge1xyXG4gICAgcHVibGljIHByaW9yaXR5ID0gMTg2O1xyXG4gICAgcHVibGljIGlkZW50aWZpZXIgPSBcIkFuZ3VsYXJQbHVnaW5cIjtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9pbmplY3Rvcj86IEluamVjdG9yKSB7IC8vIF9pbmplY3RvciBpcyBvcHRpb25hbCB0byBwcm92aWRlXHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBsZXQgX2FuYWx5dGljc1BsdWdpbjogQW5hbHl0aWNzUGx1Z2luO1xyXG4gICAgICAgIGxldCBfcHJvcGVydGllc1BsdWdpbjogUHJvcGVydGllc1BsdWdpbjtcclxuICAgICAgICBsZXQgX2FuZ3VsYXJDZmc6IElBbmd1bGFyRXh0ZW5zaW9uQ29uZmlnO1xyXG4gICAgICAgIGxldCBfZXZlbnRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICAgICAgICBsZXQgX2lzUGFnZUluaXRpYWxMb2FkOiBib29sZWFuO1xyXG4gICAgICAgIGxldCBfcHJldlJvdXRlcjogUm91dGVyO1xyXG4gICAgICAgIGxldCBfZXJyb3JTZXJ2aWNlSW5zdGFuY2U6IEFwcGxpY2F0aW9uaW5zaWdodHNBbmd1bGFycGx1Z2luRXJyb3JTZXJ2aWNlO1xyXG5cclxuICAgICAgICBkeW5hbWljUHJvdG8oQW5ndWxhclBsdWdpbiwgdGhpcywgKF9zZWxmLCBfYmFzZSkgPT4ge1xyXG5cclxuICAgICAgICAgICAgY29uc3QgX2luaXREZWZhdWx0cyA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIF9hbmFseXRpY3NQbHVnaW4gPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgX3Byb3BlcnRpZXNQbHVnaW4gPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgX2FuZ3VsYXJDZmcgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgX2V2ZW50U3Vic2NyaXB0aW9uID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIF9pc1BhZ2VJbml0aWFsTG9hZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBfcHJldlJvdXRlciA9IHVuZGVmVmFsdWU7XHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBfaW5pdERlZmF1bHRzKCk7XHJcblxyXG4gICAgICAgICAgICBfc2VsZi5pbml0aWFsaXplID0gKGNvbmZpZzogSUNvbmZpZ3VyYXRpb24gJiBJQ29uZmlnLCBjb3JlOiBJQXBwSW5zaWdodHNDb3JlLCBleHRlbnNpb25zOiBJUGx1Z2luW10sXHJcbiAgICAgICAgICAgICAgICBwbHVnaW5DaGFpbj86IElUZWxlbWV0cnlQbHVnaW5DaGFpbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgc3VwZXIuaW5pdGlhbGl6ZShjb25maWcsIGNvcmUsIGV4dGVuc2lvbnMsIHBsdWdpbkNoYWluKTtcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgIF9zZWxmLl9hZGRIb29rKG9uQ29uZmlnQ2hhbmdlKGNvbmZpZywgKGRldGFpbHMpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY3R4ID0gX3NlbGYuX2dldFRlbEN0eCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIF9hbmd1bGFyQ2ZnID0gY3R4LmdldEV4dENmZzxJQW5ndWxhckV4dGVuc2lvbkNvbmZpZz4oX3NlbGYuaWRlbnRpZmllciwgZGVmYXVsdEFuZ3VsYXJFeHRlbnNpb25Db25maWcpO1xyXG4gICAgICAgICAgICAgICAgICAgIF9wcm9wZXJ0aWVzUGx1Z2luID0gY29yZS5nZXRQbHVnaW48UHJvcGVydGllc1BsdWdpbj4oUHJvcGVydGllc1BsdWdpbklkZW50aWZpZXIpPy5wbHVnaW4gYXMgUHJvcGVydGllc1BsdWdpbjtcclxuICAgICAgICAgICAgICAgICAgICBfYW5hbHl0aWNzUGx1Z2luID0gY29yZS5nZXRQbHVnaW48QW5hbHl0aWNzUGx1Z2luPihBbmFseXRpY3NQbHVnaW5JZGVudGlmaWVyKT8ucGx1Z2luIGFzIEFuYWx5dGljc1BsdWdpbjtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBpZiAoX2FuZ3VsYXJDZmcudXNlSW5qZWN0b3IgJiYgX2luamVjdG9yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX2Vycm9yU2VydmljZUluc3RhbmNlID0gdGhpcy5faW5qZWN0b3IuZ2V0KEFwcGxpY2F0aW9uaW5zaWdodHNBbmd1bGFycGx1Z2luRXJyb3JTZXJ2aWNlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgX2Vycm9yU2VydmljZUluc3RhbmNlID0gX2Vycm9yU2VydmljZUluc3RhbmNlID8gX2Vycm9yU2VydmljZUluc3RhbmNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogQXBwbGljYXRpb25pbnNpZ2h0c0FuZ3VsYXJwbHVnaW5FcnJvclNlcnZpY2UuaW5zdGFuY2U7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHR3byBpbnN0YW5jZSBvZiBlcnJvclNlcnZpY2VcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKF9hbmFseXRpY3NQbHVnaW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9lcnJvclNlcnZpY2VJbnN0YW5jZSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Vycm9yU2VydmljZUluc3RhbmNlLnBsdWdpbiA9IF9hbmFseXRpY3NQbHVnaW47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX2FuZ3VsYXJDZmcuZXJyb3JTZXJ2aWNlcyAmJiBpc0FycmF5KF9hbmd1bGFyQ2ZnLmVycm9yU2VydmljZXMpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Vycm9yU2VydmljZUluc3RhbmNlLmNsZWFyRXJyb3JIYW5kbGVycygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyckZvckVhY2goX2FuZ3VsYXJDZmcuZXJyb3JTZXJ2aWNlcywgKGVycm9yU2VydmljZTogSUVycm9yU2VydmljZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZXJyb3JTZXJ2aWNlSW5zdGFuY2UuYWRkRXJyb3JIYW5kbGVyKGVycm9yU2VydmljZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKF9hbmd1bGFyQ2ZnLnJvdXRlciAhPT0gX3ByZXZSb3V0ZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gcm91dGVyIGlzIGNoYW5nZWQsIG9yIGhhcyBub3QgYmVlbiBpbml0aWFsaXplZCB5ZXRcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVuc3Vic2NyaWJlIHByZXZpb3VzIHJvdXRlciBldmVudHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9ldmVudFN1YnNjcmlwdGlvbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2V2ZW50U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfYW5ndWxhckNmZy5yb3V0ZXIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb25seSB0cmFjayBwYWdlIHZpZXcgaWYgaXQgaXMgdGhlIGluaXRpYWwgcGFnZSBsb2FkIGZvciB0aGlzIHBsdWdpblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9pc1BhZ2VJbml0aWFsTG9hZCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFnZVZpZXdUZWxlbWV0cnk6IElQYWdlVmlld1RlbGVtZXRyeSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJpOiBfYW5ndWxhckNmZy5yb3V0ZXIudXJsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfc2VsZi50cmFja1BhZ2VWaWV3KHBhZ2VWaWV3VGVsZW1ldHJ5KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3Vic2NyaWJlIHRvIG5ldyByb3V0ZXIgZXZlbnRzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZXZlbnRTdWJzY3JpcHRpb24gPSBfYW5ndWxhckNmZy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9zZWxmLmlzSW5pdGlhbGl6ZWQoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgcGFnZSBpbml0aWFsIGxvYWQsIGRvIG5vdCBjYWxsIHRyYWNrUGFnZVZpZXcgdHdpY2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfaXNQYWdlSW5pdGlhbExvYWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfaXNQYWdlSW5pdGlhbExvYWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwdnQ6IElQYWdlVmlld1RlbGVtZXRyeSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmk6IF9hbmd1bGFyQ2ZnLnJvdXRlci51cmwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczogeyBkdXJhdGlvbjogMCB9IC8vIFNQQSByb3V0ZSBjaGFuZ2UgbG9hZGluZyBkdXJhdGlvbnMgYXJlIHVuZGVmaW5lZCwgc28gc2VuZCAwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3NlbGYudHJhY2tQYWdlVmlldyhwdnQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgX3ByZXZSb3V0ZXIgPSBfYW5ndWxhckNmZy5yb3V0ZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSkpO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIGZvciB0ZXN0IHB1cnBvc2Ugb25seVxyXG4gICAgICAgICAgICAgICAgX3NlbGZbXCJfZ2V0RGJnUGxnVGFyZ2V0c1wiXSA9ICgpID0+IF9hbmd1bGFyQ2ZnO1xyXG4gICAgICAgICAgICAgICAgX3NlbGZbXCJfZ2V0RXJyb3JTZXJ2aWNlXCJdID0gKCkgPT4gX2Vycm9yU2VydmljZUluc3RhbmNlO1xyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgX3NlbGYudHJhY2tQYWdlVmlldyA9IChwYWdlVmlldzogSVBhZ2VWaWV3VGVsZW1ldHJ5KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoX2FuYWx5dGljc1BsdWdpbikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxvY2F0aW9uID0gZ2V0TG9jYXRpb24oKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoX3Byb3BlcnRpZXNQbHVnaW4gJiYgX3Byb3BlcnRpZXNQbHVnaW4uY29udGV4dCAmJiBfcHJvcGVydGllc1BsdWdpbi5jb250ZXh0LnRlbGVtZXRyeVRyYWNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9wcm9wZXJ0aWVzUGx1Z2luLmNvbnRleHQudGVsZW1ldHJ5VHJhY2UudHJhY2VJRCA9IGdlbmVyYXRlVzNDSWQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgX3Byb3BlcnRpZXNQbHVnaW4uY29udGV4dC50ZWxlbWV0cnlUcmFjZS5uYW1lID0gbG9jYXRpb24gJiYgbG9jYXRpb24ucGF0aG5hbWUgfHwgXCJfdW5rbm93bl9cIjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgX2FuYWx5dGljc1BsdWdpbi50cmFja1BhZ2VWaWV3KHBhZ2VWaWV3KTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgX3Rocm93SW50ZXJuYWwoX3NlbGYuZGlhZ0xvZygpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlTG9nZ2luZ1NldmVyaXR5LkNSSVRJQ0FMLCBfZUludGVybmFsTWVzc2FnZUlkLlRlbGVtZXRyeUluaXRpYWxpemVyRmFpbGVkLCBcIkFuYWx5dGljcyBwbHVnaW4gaXMgbm90IGF2YWlsYWJsZSwgQW5ndWxhciBwbHVnaW4gdGVsZW1ldHJ5IHdpbGwgbm90IGJlIHNlbnQ6IFwiKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICBcclxuXHJcbiAgICAgICAgICAgIF9zZWxmLl9kb1RlYXJkb3duID0gKHVubG9hZEN0eD86IElQcm9jZXNzVGVsZW1ldHJ5VW5sb2FkQ29udGV4dCwgdW5sb2FkU3RhdGU/OiBJVGVsZW1ldHJ5VW5sb2FkU3RhdGUsXHJcbiAgICAgICAgICAgICAgICBhc3luY0NhbGxiYWNrPzogKCkgPT4gdm9pZCk6IHZvaWQgfCBib29sZWFuID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChfYW5hbHl0aWNzUGx1Z2luICYmIF9lcnJvclNlcnZpY2VJbnN0YW5jZSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIF9lcnJvclNlcnZpY2VJbnN0YW5jZS5wbHVnaW4gPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChfYW5ndWxhckNmZykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoX2FuZ3VsYXJDZmcuZXJyb3JTZXJ2aWNlcyAmJiBBcnJheS5pc0FycmF5KF9hbmd1bGFyQ2ZnLmVycm9yU2VydmljZXMpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZXJyb3JTZXJ2aWNlSW5zdGFuY2UuY2xlYXJFcnJvckhhbmRsZXJzKCk7XHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgaWYgKF9ldmVudFN1YnNjcmlwdGlvbikge1xyXG4gICAgICAgICAgICAgICAgICAgIF9ldmVudFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIF9ldmVudFN1YnNjcmlwdGlvbiA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBfaW5pdERlZmF1bHRzKCk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGQgUGFydCBBIGZpZWxkcyB0byB0aGUgZXZlbnRcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gZXZlbnQgVGhlIGV2ZW50IHRoYXQgbmVlZHMgdG8gYmUgcHJvY2Vzc2VkXHJcbiAgICAgKi9cclxuICAgIHByb2Nlc3NUZWxlbWV0cnkoZXZlbnQ6IElUZWxlbWV0cnlJdGVtLCBpdGVtQ3R4PzogSVByb2Nlc3NUZWxlbWV0cnlDb250ZXh0KSB7XHJcbiAgICAgICAgdGhpcy5wcm9jZXNzTmV4dChldmVudCwgaXRlbUN0eCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGluaXRpYWxpemUoY29uZmlnOiBJQ29uZmlndXJhdGlvbiAmIElDb25maWcsIGNvcmU6IElBcHBJbnNpZ2h0c0NvcmUsIGV4dGVuc2lvbnM6IElQbHVnaW5bXSwgcGx1Z2luQ2hhaW4/OiBJVGVsZW1ldHJ5UGx1Z2luQ2hhaW4pIHtcclxuICAgICAgICAvLyBARHluYW1pY1Byb3RvU3R1YiAtLSBETyBOT1QgYWRkIGFueSBjb2RlIGFzIHRoaXMgd2lsbCBiZSByZW1vdmVkIGR1cmluZyBwYWNrYWdpbmdcclxuICAgIH1cclxuXHJcbiAgICB0cmFja1BhZ2VWaWV3KHBhZ2VWaWV3OiBJUGFnZVZpZXdUZWxlbWV0cnkpIHtcclxuICAgICAgICAvLyBARHluYW1pY1Byb3RvU3R1YiAtLSBETyBOT1QgYWRkIGFueSBjb2RlIGFzIHRoaXMgd2lsbCBiZSByZW1vdmVkIGR1cmluZyBwYWNrYWdpbmdcclxuICAgIH1cclxuXHJcblxyXG4gICBcclxufVxyXG4iXX0=
@@ -1,23 +0,0 @@
1
- import { NgModule } from "@angular/core";
2
- import { AngularPlugin } from "./applicationinsights-angularplugin-js.component";
3
- import { ApplicationinsightsAngularpluginErrorService } from "./applicationinsights-angularplugin-error.service";
4
- import * as i0 from "@angular/core";
5
- export class ApplicationinsightsAngularpluginJsModule {
6
- }
7
- ApplicationinsightsAngularpluginJsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApplicationinsightsAngularpluginJsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8
- ApplicationinsightsAngularpluginJsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: ApplicationinsightsAngularpluginJsModule, declarations: [AngularPlugin], exports: [AngularPlugin] });
9
- ApplicationinsightsAngularpluginJsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApplicationinsightsAngularpluginJsModule, providers: [
10
- ApplicationinsightsAngularpluginErrorService
11
- ] });
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApplicationinsightsAngularpluginJsModule, decorators: [{
13
- type: NgModule,
14
- args: [{
15
- declarations: [AngularPlugin],
16
- imports: [],
17
- exports: [AngularPlugin],
18
- providers: [
19
- ApplicationinsightsAngularpluginErrorService
20
- ]
21
- }]
22
- }] });
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb25pbnNpZ2h0cy1hbmd1bGFycGx1Z2luLWpzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FwcGxpY2F0aW9uaW5zaWdodHMtYW5ndWxhcnBsdWdpbi1qcy9zcmMvbGliL2FwcGxpY2F0aW9uaW5zaWdodHMtYW5ndWxhcnBsdWdpbi1qcy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDakYsT0FBTyxFQUFFLDRDQUE0QyxFQUFFLE1BQU0sbURBQW1ELENBQUM7O0FBV2pILE1BQU0sT0FBTyx3Q0FBd0M7O3NJQUF4Qyx3Q0FBd0M7dUlBQXhDLHdDQUF3QyxpQkFSbEMsYUFBYSxhQUdsQixhQUFhO3VJQUtkLHdDQUF3QyxhQUp0QztRQUNQLDRDQUE0QztLQUMvQzs0RkFFUSx3Q0FBd0M7a0JBVHBELFFBQVE7bUJBQUM7b0JBQ04sWUFBWSxFQUFFLENBQUMsYUFBYSxDQUFDO29CQUM3QixPQUFPLEVBQUUsRUFDUjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxhQUFhLENBQUM7b0JBQ3hCLFNBQVMsRUFBRTt3QkFDUCw0Q0FBNEM7cUJBQy9DO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBBbmd1bGFyUGx1Z2luIH0gZnJvbSBcIi4vYXBwbGljYXRpb25pbnNpZ2h0cy1hbmd1bGFycGx1Z2luLWpzLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBBcHBsaWNhdGlvbmluc2lnaHRzQW5ndWxhcnBsdWdpbkVycm9yU2VydmljZSB9IGZyb20gXCIuL2FwcGxpY2F0aW9uaW5zaWdodHMtYW5ndWxhcnBsdWdpbi1lcnJvci5zZXJ2aWNlXCI7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gICAgZGVjbGFyYXRpb25zOiBbQW5ndWxhclBsdWdpbl0sXHJcbiAgICBpbXBvcnRzOiBbXHJcbiAgICBdLFxyXG4gICAgZXhwb3J0czogW0FuZ3VsYXJQbHVnaW5dLFxyXG4gICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgQXBwbGljYXRpb25pbnNpZ2h0c0FuZ3VsYXJwbHVnaW5FcnJvclNlcnZpY2VcclxuICAgIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEFwcGxpY2F0aW9uaW5zaWdodHNBbmd1bGFycGx1Z2luSnNNb2R1bGUgeyB9XHJcbiJdfQ==
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm9zb2Z0LWFwcGxpY2F0aW9uaW5zaWdodHMtYW5ndWxhcnBsdWdpbi1qcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FwcGxpY2F0aW9uaW5zaWdodHMtYW5ndWxhcnBsdWdpbi1qcy9zcmMvbWljcm9zb2Z0LWFwcGxpY2F0aW9uaW5zaWdodHMtYW5ndWxhcnBsdWdpbi1qcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
@@ -1,8 +0,0 @@
1
- /*
2
- * Public API Surface of applicationinsights-angularplugin-js
3
- */
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,231 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { Injectable, Component, NgModule } from '@angular/core';
3
- import { PropertiesPluginIdentifier, AnalyticsPluginIdentifier } from '@microsoft/applicationinsights-common';
4
- import { isFunction, arrForEach, BaseTelemetryPlugin, onConfigChange, isArray, getLocation, generateW3CId, _throwInternal } from '@microsoft/applicationinsights-core-js';
5
- import dynamicProto from '@microsoft/dynamicproto-js';
6
- import { NavigationEnd } from '@angular/router';
7
- import { objDeepFreeze } from '@nevware21/ts-utils';
8
-
9
- class ApplicationinsightsAngularpluginErrorService {
10
- constructor() {
11
- this.errorServices = [];
12
- if (ApplicationinsightsAngularpluginErrorService.instance === null) {
13
- ApplicationinsightsAngularpluginErrorService.instance = this;
14
- }
15
- }
16
- set plugin(analyticsPlugin) {
17
- this.analyticsPlugin = analyticsPlugin;
18
- }
19
- clearErrorHandlers() {
20
- this.errorServices = [];
21
- }
22
- addErrorHandler(errorService) {
23
- if (errorService && isFunction(errorService.handleError)) {
24
- this.errorServices.push(errorService);
25
- }
26
- }
27
- removeErrorHandler(errorService) {
28
- if (errorService && isFunction(errorService.handleError)) {
29
- const idx = this.errorServices.indexOf(errorService);
30
- if (idx !== -1) {
31
- this.errorServices.splice(idx, 1);
32
- }
33
- }
34
- }
35
- handleError(error) {
36
- if (this.analyticsPlugin) {
37
- this.analyticsPlugin.trackException({ exception: error });
38
- }
39
- if (this.errorServices && this.errorServices.length > 0) {
40
- arrForEach(this.errorServices, errorService => {
41
- if (isFunction(errorService.handleError)) {
42
- errorService.handleError(error);
43
- }
44
- });
45
- }
46
- }
47
- }
48
- ApplicationinsightsAngularpluginErrorService.instance = null;
49
- ApplicationinsightsAngularpluginErrorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApplicationinsightsAngularpluginErrorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
50
- ApplicationinsightsAngularpluginErrorService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApplicationinsightsAngularpluginErrorService, providedIn: "root" });
51
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApplicationinsightsAngularpluginErrorService, decorators: [{
52
- type: Injectable,
53
- args: [{
54
- providedIn: "root"
55
- }]
56
- }], ctorParameters: function () { return []; } });
57
-
58
- let undefValue;
59
- const defaultAngularExtensionConfig = objDeepFreeze({
60
- router: { blkVal: true, v: undefValue },
61
- errorServices: { blkVal: true, v: undefValue }
62
- });
63
- // eslint-disable-next-line @angular-eslint/component-class-suffix
64
- class AngularPlugin extends BaseTelemetryPlugin {
65
- constructor(_injector) {
66
- super();
67
- this._injector = _injector;
68
- this.priority = 186;
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_";
157
- }
158
- _analyticsPlugin.trackPageView(pageView);
159
- }
160
- else {
161
- _throwInternal(_self.diagLog(), 1 /* eLoggingSeverity.CRITICAL */, 64 /* _eInternalMessageId.TelemetryInitializerFailed */, "Analytics plugin is not available, Angular plugin telemetry will not be sent: ");
162
- }
163
- };
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();
170
- }
171
- }
172
- }
173
- if (_eventSubscription) {
174
- _eventSubscription.unsubscribe();
175
- _eventSubscription = null;
176
- }
177
- _initDefaults();
178
- };
179
- });
180
- }
181
- /**
182
- * Add Part A fields to the event
183
- *
184
- * @param event The event that needs to be processed
185
- */
186
- processTelemetry(event, itemCtx) {
187
- this.processNext(event, itemCtx);
188
- }
189
- initialize(config, core, extensions, pluginChain) {
190
- // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging
191
- }
192
- trackPageView(pageView) {
193
- // @DynamicProtoStub -- DO NOT add any code as this will be removed during packaging
194
- }
195
- }
196
- AngularPlugin.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AngularPlugin, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
197
- AngularPlugin.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: AngularPlugin, selector: "lib-applicationinsights-angularplugin-js", usesInheritance: true, ngImport: i0, template: "", isInline: true });
198
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AngularPlugin, decorators: [{
199
- type: Component,
200
- args: [{ selector: "lib-applicationinsights-angularplugin-js", template: "" }]
201
- }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
202
-
203
- class ApplicationinsightsAngularpluginJsModule {
204
- }
205
- ApplicationinsightsAngularpluginJsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApplicationinsightsAngularpluginJsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
206
- ApplicationinsightsAngularpluginJsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: ApplicationinsightsAngularpluginJsModule, declarations: [AngularPlugin], exports: [AngularPlugin] });
207
- ApplicationinsightsAngularpluginJsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApplicationinsightsAngularpluginJsModule, providers: [
208
- ApplicationinsightsAngularpluginErrorService
209
- ] });
210
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ApplicationinsightsAngularpluginJsModule, decorators: [{
211
- type: NgModule,
212
- args: [{
213
- declarations: [AngularPlugin],
214
- imports: [],
215
- exports: [AngularPlugin],
216
- providers: [
217
- ApplicationinsightsAngularpluginErrorService
218
- ]
219
- }]
220
- }] });
221
-
222
- /*
223
- * Public API Surface of applicationinsights-angularplugin-js
224
- */
225
-
226
- /**
227
- * Generated bundle index. Do not edit.
228
- */
229
-
230
- export { AngularPlugin, ApplicationinsightsAngularpluginErrorService, ApplicationinsightsAngularpluginJsModule };
231
- //# sourceMappingURL=microsoft-applicationinsights-angularplugin-js.mjs.map
@@ -1 +0,0 @@
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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"}