@microsoft/applicationinsights-common 2.8.0-beta.2202-06 → 2.8.0-beta.2203-02
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/browser/applicationinsights-common.integrity.json +9 -9
- package/browser/applicationinsights-common.js +418 -237
- package/browser/applicationinsights-common.js.map +1 -1
- package/browser/applicationinsights-common.min.js +2 -2
- package/browser/applicationinsights-common.min.js.map +1 -1
- package/dist/applicationinsights-common.api.json +102 -51
- package/dist/applicationinsights-common.api.md +14 -4
- package/dist/applicationinsights-common.d.ts +18 -10
- package/dist/applicationinsights-common.js +418 -237
- package/dist/applicationinsights-common.js.map +1 -1
- package/dist/applicationinsights-common.min.js +2 -2
- package/dist/applicationinsights-common.min.js.map +1 -1
- package/dist/applicationinsights-common.rollup.d.ts +18 -10
- package/dist-esm/ConnectionStringParser.js +1 -1
- package/dist-esm/Constants.js +1 -1
- package/dist-esm/DomHelperFuncs.js +1 -1
- package/dist-esm/Enums.js +11 -24
- package/dist-esm/Enums.js.map +1 -1
- package/dist-esm/HelperFuncs.js +7 -6
- package/dist-esm/HelperFuncs.js.map +1 -1
- package/dist-esm/Interfaces/ConnectionString.js +1 -1
- package/dist-esm/Interfaces/Context/IApplication.js +1 -1
- package/dist-esm/Interfaces/Context/IDevice.js +1 -1
- package/dist-esm/Interfaces/Context/IInternal.js +1 -1
- package/dist-esm/Interfaces/Context/ILocation.js +1 -1
- package/dist-esm/Interfaces/Context/IOperatingSystem.js +1 -1
- package/dist-esm/Interfaces/Context/ISample.js +1 -1
- package/dist-esm/Interfaces/Context/ISession.js +1 -1
- package/dist-esm/Interfaces/Context/ITelemetryTrace.js +1 -1
- package/dist-esm/Interfaces/Context/IUser.js +1 -1
- package/dist-esm/Interfaces/Context/IWeb.js +1 -1
- package/dist-esm/Interfaces/Contracts/AvailabilityData.js +52 -0
- package/dist-esm/Interfaces/Contracts/AvailabilityData.js.map +1 -0
- package/dist-esm/Interfaces/Contracts/ContextTagKeys.js +89 -0
- package/dist-esm/Interfaces/Contracts/ContextTagKeys.js.map +1 -0
- package/dist-esm/Interfaces/Contracts/DataPointType.js +8 -0
- package/dist-esm/Interfaces/Contracts/DataPointType.js.map +1 -0
- package/dist-esm/Interfaces/Contracts/DependencyKind.js +8 -0
- package/dist-esm/Interfaces/Contracts/DependencyKind.js.map +1 -0
- package/dist-esm/Interfaces/Contracts/DependencySourceType.js +8 -0
- package/dist-esm/Interfaces/Contracts/DependencySourceType.js.map +1 -0
- package/dist-esm/Interfaces/Contracts/Generated/AvailabilityData.js +1 -1
- package/dist-esm/Interfaces/Contracts/Generated/Base.js +1 -1
- package/dist-esm/Interfaces/Contracts/Generated/ContextTagKeys.js +1 -1
- package/dist-esm/Interfaces/Contracts/Generated/Data.js +1 -1
- package/dist-esm/Interfaces/Contracts/Generated/DataPoint.js +1 -1
- package/dist-esm/Interfaces/Contracts/Generated/DataPointType.js +1 -1
- package/dist-esm/Interfaces/Contracts/Generated/DependencyKind.js +1 -1
- package/dist-esm/Interfaces/Contracts/Generated/DependencySourceType.js +1 -1
- package/dist-esm/Interfaces/Contracts/Generated/Domain.js +1 -1
- package/dist-esm/Interfaces/Contracts/Generated/Envelope.js +1 -1
- package/dist-esm/Interfaces/Contracts/Generated/EventData.js +1 -1
- package/dist-esm/Interfaces/Contracts/Generated/ExceptionData.js +1 -1
- package/dist-esm/Interfaces/Contracts/Generated/ExceptionDetails.js +1 -1
- package/dist-esm/Interfaces/Contracts/Generated/MessageData.js +1 -1
- package/dist-esm/Interfaces/Contracts/Generated/MetricData.js +1 -1
- package/dist-esm/Interfaces/Contracts/Generated/PageViewData.js +1 -1
- package/dist-esm/Interfaces/Contracts/Generated/PageViewPerfData.js +1 -1
- package/dist-esm/Interfaces/Contracts/Generated/RemoteDependencyData.js +1 -1
- package/dist-esm/Interfaces/Contracts/Generated/RequestData.js +1 -1
- package/dist-esm/Interfaces/Contracts/Generated/SeverityLevel.js +1 -1
- package/dist-esm/Interfaces/Contracts/Generated/StackFrame.js +1 -1
- package/dist-esm/Interfaces/Contracts/IBase.js +8 -0
- package/dist-esm/Interfaces/Contracts/IBase.js.map +1 -0
- package/dist-esm/Interfaces/Contracts/IData.js +8 -0
- package/dist-esm/Interfaces/Contracts/IData.js.map +1 -0
- package/dist-esm/Interfaces/Contracts/IDataPoint.js +6 -0
- package/dist-esm/Interfaces/Contracts/IDataPoint.js.map +1 -0
- package/dist-esm/Interfaces/Contracts/IDomain.js +8 -0
- package/dist-esm/Interfaces/Contracts/IDomain.js.map +1 -0
- package/dist-esm/Interfaces/Contracts/IEnvelope.js +46 -0
- package/dist-esm/Interfaces/Contracts/IEnvelope.js.map +1 -0
- package/dist-esm/Interfaces/Contracts/IEventData.js +8 -0
- package/dist-esm/Interfaces/Contracts/IEventData.js.map +1 -0
- package/dist-esm/Interfaces/Contracts/IExceptionData.js +8 -0
- package/dist-esm/Interfaces/Contracts/IExceptionData.js.map +1 -0
- package/dist-esm/Interfaces/Contracts/IExceptionDetails.js +8 -0
- package/dist-esm/Interfaces/Contracts/IExceptionDetails.js.map +1 -0
- package/dist-esm/Interfaces/Contracts/IMessageData.js +8 -0
- package/dist-esm/Interfaces/Contracts/IMessageData.js.map +1 -0
- package/dist-esm/Interfaces/Contracts/IMetricData.js +8 -0
- package/dist-esm/Interfaces/Contracts/IMetricData.js.map +1 -0
- package/dist-esm/Interfaces/Contracts/IPageViewData.js +8 -0
- package/dist-esm/Interfaces/Contracts/IPageViewData.js.map +1 -0
- package/dist-esm/Interfaces/Contracts/IPageViewPerfData.js +8 -0
- package/dist-esm/Interfaces/Contracts/IPageViewPerfData.js.map +1 -0
- package/dist-esm/Interfaces/Contracts/IRemoteDependencyData.js +8 -0
- package/dist-esm/Interfaces/Contracts/IRemoteDependencyData.js.map +1 -0
- package/dist-esm/Interfaces/Contracts/IStackFrame.js +8 -0
- package/dist-esm/Interfaces/Contracts/IStackFrame.js.map +1 -0
- package/dist-esm/Interfaces/Contracts/RequestData.js +46 -0
- package/dist-esm/Interfaces/Contracts/RequestData.js.map +1 -0
- package/dist-esm/Interfaces/Contracts/SeverityLevel.js +19 -0
- package/dist-esm/Interfaces/Contracts/SeverityLevel.js.map +1 -0
- package/dist-esm/Interfaces/IAppInsights.js +1 -1
- package/dist-esm/Interfaces/IChannelControlsAI.js +1 -1
- package/dist-esm/Interfaces/IConfig.js +1 -1
- package/dist-esm/Interfaces/ICorrelationConfig.js +1 -1
- package/dist-esm/Interfaces/IDependencyTelemetry.js +1 -1
- package/dist-esm/Interfaces/IEventTelemetry.js +1 -1
- package/dist-esm/Interfaces/IExceptionTelemetry.js +1 -1
- package/dist-esm/Interfaces/IMetricTelemetry.js +1 -1
- package/dist-esm/Interfaces/IPageViewPerformanceTelemetry.js +1 -1
- package/dist-esm/Interfaces/IPageViewTelemetry.js +1 -1
- package/dist-esm/Interfaces/IPartC.js +1 -1
- package/dist-esm/Interfaces/IPropertiesPlugin.js +1 -1
- package/dist-esm/Interfaces/IRequestContext.js +1 -1
- package/dist-esm/Interfaces/ITelemetryContext.js +1 -1
- package/dist-esm/Interfaces/ITraceTelemetry.js +1 -1
- package/dist-esm/Interfaces/PartAExtensions.js +1 -1
- package/dist-esm/Interfaces/Telemetry/IEnvelope.js +1 -1
- package/dist-esm/Interfaces/Telemetry/ISerializable.js +1 -1
- package/dist-esm/RequestResponseHeaders.js +1 -1
- package/dist-esm/StorageHelperFuncs.js +8 -8
- package/dist-esm/StorageHelperFuncs.js.map +1 -1
- package/dist-esm/Telemetry/Common/Base.js +1 -1
- package/dist-esm/Telemetry/Common/Data.js +1 -1
- package/dist-esm/Telemetry/Common/DataPoint.js +1 -1
- package/dist-esm/Telemetry/Common/DataSanitizer.js +8 -8
- package/dist-esm/Telemetry/Common/DataSanitizer.js.map +1 -1
- package/dist-esm/Telemetry/Common/Envelope.js +1 -1
- package/dist-esm/Telemetry/Event.js +1 -1
- package/dist-esm/Telemetry/Exception.js +1 -1
- package/dist-esm/Telemetry/Metric.js +1 -1
- package/dist-esm/Telemetry/PageView.js +1 -1
- package/dist-esm/Telemetry/PageViewPerformance.js +1 -1
- package/dist-esm/Telemetry/RemoteDependencyData.js +1 -1
- package/dist-esm/Telemetry/Trace.js +1 -1
- package/dist-esm/TelemetryItemCreator.js +1 -1
- package/dist-esm/UrlHelperFuncs.js +1 -1
- package/dist-esm/Util.js +1 -1
- package/dist-esm/applicationinsights-common.js +1 -1
- package/package.json +2 -2
- package/src/Enums.ts +19 -3
- package/src/HelperFuncs.ts +7 -5
- package/src/Interfaces/Contracts/AvailabilityData.ts +57 -0
- package/src/Interfaces/Contracts/ContextTagKeys.ts +299 -0
- package/src/Interfaces/Contracts/DataPointType.ts +10 -0
- package/src/Interfaces/Contracts/DependencyKind.ts +11 -0
- package/src/Interfaces/Contracts/DependencySourceType.ts +11 -0
- package/src/Interfaces/Contracts/IBase.ts +13 -0
- package/src/Interfaces/Contracts/IData.ts +19 -0
- package/src/Interfaces/Contracts/IDataPoint.ts +44 -0
- package/src/Interfaces/Contracts/IDomain.ts +8 -0
- package/src/Interfaces/Contracts/IEnvelope.ts +50 -0
- package/src/Interfaces/Contracts/IEventData.ts +30 -0
- package/src/Interfaces/Contracts/IExceptionData.ts +37 -0
- package/src/Interfaces/Contracts/IExceptionDetails.ts +45 -0
- package/src/Interfaces/Contracts/IMessageData.ts +36 -0
- package/src/Interfaces/Contracts/IMetricData.ts +31 -0
- package/src/Interfaces/Contracts/IPageViewData.ts +26 -0
- package/src/Interfaces/Contracts/IPageViewPerfData.ts +35 -0
- package/src/Interfaces/Contracts/IRemoteDependencyData.ts +65 -0
- package/src/Interfaces/Contracts/IStackFrame.ts +33 -0
- package/src/Interfaces/Contracts/RequestData.ts +50 -0
- package/src/Interfaces/Contracts/SeverityLevel.ts +15 -0
- package/src/StorageHelperFuncs.ts +7 -7
- package/src/Telemetry/Common/DataSanitizer.ts +7 -7
- package/src/applicationinsights-common.ts +1 -1
- package/types/Enums.d.ts +13 -2
- package/types/Interfaces/Contracts/AvailabilityData.d.ts +0 -0
- package/types/Interfaces/Contracts/ContextTagKeys.d.ts +175 -0
- package/types/Interfaces/Contracts/DataPointType.d.ts +7 -0
- package/types/Interfaces/Contracts/DependencyKind.d.ts +8 -0
- package/types/Interfaces/Contracts/DependencySourceType.d.ts +8 -0
- package/types/Interfaces/Contracts/IBase.d.ts +9 -0
- package/types/Interfaces/Contracts/IData.d.ts +14 -0
- package/types/Interfaces/Contracts/IDataPoint.d.ts +34 -0
- package/types/Interfaces/Contracts/IDomain.d.ts +5 -0
- package/types/Interfaces/Contracts/IEnvelope.d.ts +0 -0
- package/types/Interfaces/Contracts/IEventData.d.ts +22 -0
- package/types/Interfaces/Contracts/IExceptionData.d.ts +28 -0
- package/types/Interfaces/Contracts/IExceptionDetails.d.ts +34 -0
- package/types/Interfaces/Contracts/IMessageData.d.ts +27 -0
- package/types/Interfaces/Contracts/IMetricData.d.ts +23 -0
- package/types/Interfaces/Contracts/IPageViewData.d.ts +18 -0
- package/types/Interfaces/Contracts/IPageViewPerfData.d.ts +26 -0
- package/types/Interfaces/Contracts/IRemoteDependencyData.d.ts +50 -0
- package/types/Interfaces/Contracts/IStackFrame.d.ts +25 -0
- package/types/Interfaces/Contracts/RequestData.d.ts +0 -0
- package/types/Interfaces/Contracts/SeverityLevel.d.ts +10 -0
- package/types/applicationinsights-common.d.ts +1 -1
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
2
|
+
// Licensed under the MIT License.
|
|
3
|
+
|
|
4
|
+
import { IPageViewData } from "./IPageViewData";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* An instance of PageViewPerf represents: a page view with no performance data, a page view with performance data, or just the performance data of an earlier page request.
|
|
8
|
+
*/
|
|
9
|
+
export interface IPageViewPerfData extends IPageViewData {
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Performance total in TimeSpan 'G' (general long) format: d:hh:mm:ss.fffffff
|
|
13
|
+
*/
|
|
14
|
+
perfTotal: string;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Network connection time in TimeSpan 'G' (general long) format: d:hh:mm:ss.fffffff
|
|
18
|
+
*/
|
|
19
|
+
networkConnect: string;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Sent request time in TimeSpan 'G' (general long) format: d:hh:mm:ss.fffffff
|
|
23
|
+
*/
|
|
24
|
+
sentRequest: string;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Received response time in TimeSpan 'G' (general long) format: d:hh:mm:ss.fffffff
|
|
28
|
+
*/
|
|
29
|
+
receivedResponse: string;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* DOM processing time in TimeSpan 'G' (general long) format: d:hh:mm:ss.fffffff
|
|
33
|
+
*/
|
|
34
|
+
domProcessing: string;
|
|
35
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
2
|
+
// Licensed under the MIT License.
|
|
3
|
+
|
|
4
|
+
import { IDomain } from "./IDomain";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* An instance of Remote Dependency represents an interaction of the monitored component with a remote component/service like SQL or an HTTP endpoint.
|
|
8
|
+
*/
|
|
9
|
+
export interface IRemoteDependencyData extends IDomain {
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Schema version
|
|
13
|
+
*/
|
|
14
|
+
ver: number; /* 2 */
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Name of the command initiated with this dependency call. Low cardinality value. Examples are stored procedure name and URL path template.
|
|
18
|
+
*/
|
|
19
|
+
name: string;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Identifier of a dependency call instance. Used for correlation with the request telemetry item corresponding to this dependency call.
|
|
23
|
+
*/
|
|
24
|
+
id: string;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Result code of a dependency call. Examples are SQL error code and HTTP status code.
|
|
28
|
+
*/
|
|
29
|
+
resultCode: string;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Request duration in format: DD.HH:MM:SS.MMMMMM. Must be less than 1000 days.
|
|
33
|
+
*/
|
|
34
|
+
duration: string;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Indication of successful or unsuccessful call.
|
|
38
|
+
*/
|
|
39
|
+
success: boolean; /* true */
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Command initiated by this dependency call. Examples are SQL statement and HTTP URL's with all query parameters.
|
|
43
|
+
*/
|
|
44
|
+
data: string;
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Target site of a dependency call. Examples are server name, host address.
|
|
48
|
+
*/
|
|
49
|
+
target: string;
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Dependency type name. Very low cardinality value for logical grouping of dependencies and interpretation of other fields like commandName and resultCode. Examples are SQL, Azure table, and HTTP.
|
|
53
|
+
*/
|
|
54
|
+
type: string;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Collection of custom properties.
|
|
58
|
+
*/
|
|
59
|
+
properties: any; /* {} */
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Collection of custom measurements.
|
|
63
|
+
*/
|
|
64
|
+
measurements: any; /* {} */
|
|
65
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
2
|
+
// Licensed under the MIT License.
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Stack frame information.
|
|
6
|
+
*/
|
|
7
|
+
export interface IStackFrame {
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Level in the call stack. For the long stacks SDK may not report every function in a call stack.
|
|
11
|
+
*/
|
|
12
|
+
level: number;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Method name.
|
|
16
|
+
*/
|
|
17
|
+
method: string;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Name of the assembly (dll, jar, etc.) containing this function.
|
|
21
|
+
*/
|
|
22
|
+
assembly: string;
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* File name or URL of the method implementation.
|
|
26
|
+
*/
|
|
27
|
+
fileName: string;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Line number of the code implementation.
|
|
31
|
+
*/
|
|
32
|
+
line: number;
|
|
33
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
// // Copyright (c) Microsoft Corporation. All rights reserved.
|
|
2
|
+
// // Licensed under the MIT License.
|
|
3
|
+
|
|
4
|
+
// import { IDomain } from "./IDomain";
|
|
5
|
+
|
|
6
|
+
// /**
|
|
7
|
+
// * An instance of Request represents completion of an external request to the application to do work and contains a summary of that request execution and the results.
|
|
8
|
+
// */
|
|
9
|
+
// export class RequestData implements IDomain {
|
|
10
|
+
|
|
11
|
+
// /**
|
|
12
|
+
// * Schema version
|
|
13
|
+
// */
|
|
14
|
+
// public ver: number = 2;
|
|
15
|
+
|
|
16
|
+
// /**
|
|
17
|
+
// * Identifier of a request call instance. Used for correlation between request and other telemetry items.
|
|
18
|
+
// */
|
|
19
|
+
// public id: string;
|
|
20
|
+
|
|
21
|
+
// /**
|
|
22
|
+
// * Source of the request. Examples are the instrumentation key of the caller or the ip address of the caller.
|
|
23
|
+
// */
|
|
24
|
+
// public source: string;
|
|
25
|
+
|
|
26
|
+
// /**
|
|
27
|
+
// * Name of the request. Represents code path taken to process request. Low cardinality value to allow better grouping of requests. For HTTP requests it represents the HTTP method and URL path template like 'GET /values/{id}'.
|
|
28
|
+
// */
|
|
29
|
+
// public name: string;
|
|
30
|
+
|
|
31
|
+
// /**
|
|
32
|
+
// * Indication of successful or unsuccessful call.
|
|
33
|
+
// */
|
|
34
|
+
// public success: boolean;
|
|
35
|
+
|
|
36
|
+
// /**
|
|
37
|
+
// * Request URL with all query string parameters.
|
|
38
|
+
// */
|
|
39
|
+
// public url: string;
|
|
40
|
+
|
|
41
|
+
// /**
|
|
42
|
+
// * Collection of custom properties.
|
|
43
|
+
// */
|
|
44
|
+
// public properties: any = {};
|
|
45
|
+
|
|
46
|
+
// /**
|
|
47
|
+
// * Collection of custom measurements.
|
|
48
|
+
// */
|
|
49
|
+
// public measurements: any = {};
|
|
50
|
+
// }
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
2
|
+
// Licensed under the MIT License.
|
|
3
|
+
|
|
4
|
+
// THIS FILE WAS AUTOGENERATED
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Defines the level of severity for the event.
|
|
8
|
+
*/
|
|
9
|
+
export enum SeverityLevel {
|
|
10
|
+
Verbose = 0,
|
|
11
|
+
Information = 1,
|
|
12
|
+
Warning = 2,
|
|
13
|
+
Error = 3,
|
|
14
|
+
Critical = 4,
|
|
15
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
2
2
|
// Licensed under the MIT License.
|
|
3
3
|
|
|
4
|
-
import { dumpObj, getExceptionName, getGlobal, getGlobalInst, IDiagnosticLogger, isNullOrUndefined,
|
|
4
|
+
import { dumpObj, getExceptionName, getGlobal, getGlobalInst, IDiagnosticLogger, isNullOrUndefined, eLoggingSeverity, objForEachKey, _InternalMessageId } from "@microsoft/applicationinsights-core-js";
|
|
5
5
|
import { StorageType } from "./Enums";
|
|
6
6
|
|
|
7
7
|
let _canUseLocalStorage: boolean = undefined;
|
|
@@ -79,7 +79,7 @@ export function utlGetLocalStorage(logger: IDiagnosticLogger, name: string): str
|
|
|
79
79
|
_canUseLocalStorage = false;
|
|
80
80
|
|
|
81
81
|
logger.throwInternal(
|
|
82
|
-
|
|
82
|
+
eLoggingSeverity.WARNING,
|
|
83
83
|
_InternalMessageId.BrowserCannotReadLocalStorage,
|
|
84
84
|
"Browser failed read of local storage. " + getExceptionName(e),
|
|
85
85
|
{ exception: dumpObj(e) });
|
|
@@ -98,7 +98,7 @@ export function utlSetLocalStorage(logger: IDiagnosticLogger, name: string, data
|
|
|
98
98
|
_canUseLocalStorage = false;
|
|
99
99
|
|
|
100
100
|
logger.throwInternal(
|
|
101
|
-
|
|
101
|
+
eLoggingSeverity.WARNING,
|
|
102
102
|
_InternalMessageId.BrowserCannotWriteLocalStorage,
|
|
103
103
|
"Browser failed write to local storage. " + getExceptionName(e),
|
|
104
104
|
{ exception: dumpObj(e) });
|
|
@@ -117,7 +117,7 @@ export function utlRemoveStorage(logger: IDiagnosticLogger, name: string): boole
|
|
|
117
117
|
_canUseLocalStorage = false;
|
|
118
118
|
|
|
119
119
|
logger.throwInternal(
|
|
120
|
-
|
|
120
|
+
eLoggingSeverity.WARNING,
|
|
121
121
|
_InternalMessageId.BrowserFailedRemovalFromLocalStorage,
|
|
122
122
|
"Browser failed removal of local storage item. " + getExceptionName(e),
|
|
123
123
|
{ exception: dumpObj(e) });
|
|
@@ -155,7 +155,7 @@ export function utlGetSessionStorage(logger: IDiagnosticLogger, name: string): s
|
|
|
155
155
|
_canUseSessionStorage = false;
|
|
156
156
|
|
|
157
157
|
logger.throwInternal(
|
|
158
|
-
|
|
158
|
+
eLoggingSeverity.WARNING,
|
|
159
159
|
_InternalMessageId.BrowserCannotReadSessionStorage,
|
|
160
160
|
"Browser failed read of session storage. " + getExceptionName(e),
|
|
161
161
|
{ exception: dumpObj(e) });
|
|
@@ -174,7 +174,7 @@ export function utlSetSessionStorage(logger: IDiagnosticLogger, name: string, da
|
|
|
174
174
|
_canUseSessionStorage = false;
|
|
175
175
|
|
|
176
176
|
logger.throwInternal(
|
|
177
|
-
|
|
177
|
+
eLoggingSeverity.WARNING,
|
|
178
178
|
_InternalMessageId.BrowserCannotWriteSessionStorage,
|
|
179
179
|
"Browser failed write to session storage. " + getExceptionName(e),
|
|
180
180
|
{ exception: dumpObj(e) });
|
|
@@ -193,7 +193,7 @@ export function utlRemoveSessionStorage(logger: IDiagnosticLogger, name: string)
|
|
|
193
193
|
_canUseSessionStorage = false;
|
|
194
194
|
|
|
195
195
|
logger.throwInternal(
|
|
196
|
-
|
|
196
|
+
eLoggingSeverity.WARNING,
|
|
197
197
|
_InternalMessageId.BrowserFailedRemovalFromSessionStorage,
|
|
198
198
|
"Browser failed removal of session storage item. " + getExceptionName(e),
|
|
199
199
|
{ exception: dumpObj(e) });
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
2
2
|
// Licensed under the MIT License.
|
|
3
3
|
|
|
4
|
-
import { IDiagnosticLogger,
|
|
4
|
+
import { IDiagnosticLogger, eLoggingSeverity, _InternalMessageId, hasJSON, getJSON, objForEachKey, isObject, strTrim } from "@microsoft/applicationinsights-core-js";
|
|
5
5
|
|
|
6
6
|
export const enum DataSanitizerValues {
|
|
7
7
|
/**
|
|
@@ -67,7 +67,7 @@ export function dataSanitizeKey(logger: IDiagnosticLogger, name: any) {
|
|
|
67
67
|
if (name.length > DataSanitizerValues.MAX_NAME_LENGTH) {
|
|
68
68
|
nameTrunc = name.substring(0, DataSanitizerValues.MAX_NAME_LENGTH);
|
|
69
69
|
logger && logger.throwInternal(
|
|
70
|
-
|
|
70
|
+
eLoggingSeverity.WARNING,
|
|
71
71
|
_InternalMessageId.NameTooLong,
|
|
72
72
|
"name is too long. It has been truncated to " + DataSanitizerValues.MAX_NAME_LENGTH + " characters.",
|
|
73
73
|
{ name }, true);
|
|
@@ -85,7 +85,7 @@ export function dataSanitizeString(logger: IDiagnosticLogger, value: any, maxLen
|
|
|
85
85
|
if (value.toString().length > maxLength) {
|
|
86
86
|
valueTrunc = value.toString().substring(0, maxLength);
|
|
87
87
|
logger && logger.throwInternal(
|
|
88
|
-
|
|
88
|
+
eLoggingSeverity.WARNING,
|
|
89
89
|
_InternalMessageId.StringValueTooLong,
|
|
90
90
|
"string value is too long. It has been truncated to " + maxLength + " characters.",
|
|
91
91
|
{ value }, true);
|
|
@@ -105,7 +105,7 @@ export function dataSanitizeMessage(logger: IDiagnosticLogger, message: any) {
|
|
|
105
105
|
if (message.length > DataSanitizerValues.MAX_MESSAGE_LENGTH) {
|
|
106
106
|
messageTrunc = message.substring(0, DataSanitizerValues.MAX_MESSAGE_LENGTH);
|
|
107
107
|
logger && logger.throwInternal(
|
|
108
|
-
|
|
108
|
+
eLoggingSeverity.WARNING, _InternalMessageId.MessageTruncated,
|
|
109
109
|
"message is too long, it has been truncated to " + DataSanitizerValues.MAX_MESSAGE_LENGTH + " characters.",
|
|
110
110
|
{ message },
|
|
111
111
|
true);
|
|
@@ -123,7 +123,7 @@ export function dataSanitizeException(logger: IDiagnosticLogger, exception: any)
|
|
|
123
123
|
if (value.length > DataSanitizerValues.MAX_EXCEPTION_LENGTH) {
|
|
124
124
|
exceptionTrunc = value.substring(0, DataSanitizerValues.MAX_EXCEPTION_LENGTH);
|
|
125
125
|
logger && logger.throwInternal(
|
|
126
|
-
|
|
126
|
+
eLoggingSeverity.WARNING, _InternalMessageId.ExceptionTruncated, "exception is too long, it has been truncated to " + DataSanitizerValues.MAX_EXCEPTION_LENGTH + " characters.",
|
|
127
127
|
{ exception }, true);
|
|
128
128
|
}
|
|
129
129
|
}
|
|
@@ -140,7 +140,7 @@ export function dataSanitizeProperties(logger: IDiagnosticLogger, properties: an
|
|
|
140
140
|
try {
|
|
141
141
|
value = getJSON().stringify(value);
|
|
142
142
|
} catch (e) {
|
|
143
|
-
logger && logger.throwInternal(
|
|
143
|
+
logger && logger.throwInternal(eLoggingSeverity.WARNING, _InternalMessageId.CannotSerializeObjectNonSerializable, "custom property is not valid", { exception: e}, true);
|
|
144
144
|
}
|
|
145
145
|
}
|
|
146
146
|
value = dataSanitizeString(logger, value, DataSanitizerValues.MAX_PROPERTY_LENGTH);
|
|
@@ -178,7 +178,7 @@ export function dataSanitizeInput(logger: IDiagnosticLogger, input: any, maxLeng
|
|
|
178
178
|
if (input.length > maxLength) {
|
|
179
179
|
inputTrunc = input.substring(0, maxLength);
|
|
180
180
|
logger && logger.throwInternal(
|
|
181
|
-
|
|
181
|
+
eLoggingSeverity.WARNING,
|
|
182
182
|
_msgId,
|
|
183
183
|
"input is too long, it has been truncated to " + maxLength + " characters.",
|
|
184
184
|
{ data: input },
|
|
@@ -57,7 +57,7 @@ export { IPropertiesPlugin } from "./Interfaces/IPropertiesPlugin";
|
|
|
57
57
|
export { IUser, IUserContext } from "./Interfaces/Context/IUser";
|
|
58
58
|
export { ITelemetryTrace, ITraceState } from "./Interfaces/Context/ITelemetryTrace";
|
|
59
59
|
export { IRequestContext } from "./Interfaces/IRequestContext";
|
|
60
|
-
export { DistributedTracingModes } from "./Enums";
|
|
60
|
+
export { eDistributedTracingModes, DistributedTracingModes } from "./Enums";
|
|
61
61
|
export { stringToBoolOrDefault, msToTimeSpan, getExtensionByName, isCrossOriginError } from "./HelperFuncs";
|
|
62
62
|
export { isBeaconsSupported as isBeaconApiSupported } from "@microsoft/applicationinsights-core-js"
|
|
63
63
|
export { createDomEvent } from "./DomHelperFuncs";
|
package/types/Enums.d.ts
CHANGED
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Type of storage to differentiate between local storage and session storage
|
|
3
3
|
*/
|
|
4
|
-
export declare enum
|
|
4
|
+
export declare const enum eStorageType {
|
|
5
5
|
LocalStorage = 0,
|
|
6
6
|
SessionStorage = 1
|
|
7
7
|
}
|
|
8
|
+
export declare const StorageType: {
|
|
9
|
+
LocalStorage: number;
|
|
10
|
+
SessionStorage: number;
|
|
11
|
+
};
|
|
12
|
+
export declare type StorageType = eStorageType | typeof StorageType;
|
|
8
13
|
/**
|
|
9
14
|
* Enum is used in aiDataContract to describe how fields are serialized.
|
|
10
15
|
* For instance: (Fieldtype.Required | FieldType.Array) will mark the field as required and indicate it's an array
|
|
@@ -15,7 +20,7 @@ export declare const enum FieldType {
|
|
|
15
20
|
Array = 2,
|
|
16
21
|
Hidden = 4
|
|
17
22
|
}
|
|
18
|
-
export declare enum
|
|
23
|
+
export declare const enum eDistributedTracingModes {
|
|
19
24
|
/**
|
|
20
25
|
* (Default) Send Application Insights correlation headers
|
|
21
26
|
*/
|
|
@@ -29,3 +34,9 @@ export declare enum DistributedTracingModes {
|
|
|
29
34
|
*/
|
|
30
35
|
W3C = 2
|
|
31
36
|
}
|
|
37
|
+
export declare const DistributedTracingModes: {
|
|
38
|
+
AI: number;
|
|
39
|
+
AI_AND_W3C: number;
|
|
40
|
+
W3C: number;
|
|
41
|
+
};
|
|
42
|
+
export declare type DistributedTracingModes = number | eDistributedTracingModes;
|
|
File without changes
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
export interface IContextTagKeys {
|
|
2
|
+
/**
|
|
3
|
+
* Application version. Information in the application context fields is always about the application that is sending the telemetry.
|
|
4
|
+
*/
|
|
5
|
+
readonly applicationVersion: string;
|
|
6
|
+
/**
|
|
7
|
+
* Application build.
|
|
8
|
+
*/
|
|
9
|
+
readonly applicationBuild: string;
|
|
10
|
+
/**
|
|
11
|
+
* Application type id.
|
|
12
|
+
*/
|
|
13
|
+
readonly applicationTypeId: string;
|
|
14
|
+
/**
|
|
15
|
+
* Application id.
|
|
16
|
+
*/
|
|
17
|
+
readonly applicationId: string;
|
|
18
|
+
/**
|
|
19
|
+
* Application layer.
|
|
20
|
+
*/
|
|
21
|
+
readonly applicationLayer: string;
|
|
22
|
+
/**
|
|
23
|
+
* Unique client device id. Computer name in most cases.
|
|
24
|
+
*/
|
|
25
|
+
readonly deviceId: string;
|
|
26
|
+
readonly deviceIp: string;
|
|
27
|
+
readonly deviceLanguage: string;
|
|
28
|
+
/**
|
|
29
|
+
* Device locale using <language>-<REGION> pattern, following RFC 5646. Example 'en-US'.
|
|
30
|
+
*/
|
|
31
|
+
readonly deviceLocale: string;
|
|
32
|
+
/**
|
|
33
|
+
* Model of the device the end user of the application is using. Used for client scenarios. If this field is empty then it is derived from the user agent.
|
|
34
|
+
*/
|
|
35
|
+
readonly deviceModel: string;
|
|
36
|
+
readonly deviceFriendlyName: string;
|
|
37
|
+
readonly deviceNetwork: string;
|
|
38
|
+
readonly deviceNetworkName: string;
|
|
39
|
+
/**
|
|
40
|
+
* Client device OEM name taken from the browser.
|
|
41
|
+
*/
|
|
42
|
+
readonly deviceOEMName: string;
|
|
43
|
+
readonly deviceOS: string;
|
|
44
|
+
/**
|
|
45
|
+
* Operating system name and version of the device the end user of the application is using. If this field is empty then it is derived from the user agent. Example 'Windows 10 Pro 10.0.10586.0'
|
|
46
|
+
*/
|
|
47
|
+
readonly deviceOSVersion: string;
|
|
48
|
+
/**
|
|
49
|
+
* Name of the instance where application is running. Computer name for on-premisis, instance name for Azure.
|
|
50
|
+
*/
|
|
51
|
+
readonly deviceRoleInstance: string;
|
|
52
|
+
/**
|
|
53
|
+
* Name of the role application is part of. Maps directly to the role name in azure.
|
|
54
|
+
*/
|
|
55
|
+
readonly deviceRoleName: string;
|
|
56
|
+
readonly deviceScreenResolution: string;
|
|
57
|
+
/**
|
|
58
|
+
* The type of the device the end user of the application is using. Used primarily to distinguish JavaScript telemetry from server side telemetry. Examples: 'PC', 'Phone', 'Browser'. 'PC' is the default value.
|
|
59
|
+
*/
|
|
60
|
+
readonly deviceType: string;
|
|
61
|
+
readonly deviceMachineName: string;
|
|
62
|
+
readonly deviceVMName: string;
|
|
63
|
+
readonly deviceBrowser: string;
|
|
64
|
+
/**
|
|
65
|
+
* The browser name and version as reported by the browser.
|
|
66
|
+
*/
|
|
67
|
+
readonly deviceBrowserVersion: string;
|
|
68
|
+
/**
|
|
69
|
+
* The IP address of the client device. IPv4 and IPv6 are supported. Information in the location context fields is always about the end user. When telemetry is sent from a service, the location context is about the user that initiated the operation in the service.
|
|
70
|
+
*/
|
|
71
|
+
readonly locationIp: string;
|
|
72
|
+
/**
|
|
73
|
+
* The country of the client device. If any of Country, Province, or City is specified, those values will be preferred over geolocation of the IP address field. Information in the location context fields is always about the end user. When telemetry is sent from a service, the location context is about the user that initiated the operation in the service.
|
|
74
|
+
*/
|
|
75
|
+
readonly locationCountry: string;
|
|
76
|
+
/**
|
|
77
|
+
* The province/state of the client device. If any of Country, Province, or City is specified, those values will be preferred over geolocation of the IP address field. Information in the location context fields is always about the end user. When telemetry is sent from a service, the location context is about the user that initiated the operation in the service.
|
|
78
|
+
*/
|
|
79
|
+
readonly locationProvince: string;
|
|
80
|
+
/**
|
|
81
|
+
* The city of the client device. If any of Country, Province, or City is specified, those values will be preferred over geolocation of the IP address field. Information in the location context fields is always about the end user. When telemetry is sent from a service, the location context is about the user that initiated the operation in the service.
|
|
82
|
+
*/
|
|
83
|
+
readonly locationCity: string;
|
|
84
|
+
/**
|
|
85
|
+
* A unique identifier for the operation instance. The operation.id is created by either a request or a page view. All other telemetry sets this to the value for the containing request or page view. Operation.id is used for finding all the telemetry items for a specific operation instance.
|
|
86
|
+
*/
|
|
87
|
+
readonly operationId: string;
|
|
88
|
+
/**
|
|
89
|
+
* The name (group) of the operation. The operation.name is created by either a request or a page view. All other telemetry items set this to the value for the containing request or page view. Operation.name is used for finding all the telemetry items for a group of operations (i.e. 'GET Home/Index').
|
|
90
|
+
*/
|
|
91
|
+
readonly operationName: string;
|
|
92
|
+
/**
|
|
93
|
+
* The unique identifier of the telemetry item's immediate parent.
|
|
94
|
+
*/
|
|
95
|
+
readonly operationParentId: string;
|
|
96
|
+
readonly operationRootId: string;
|
|
97
|
+
/**
|
|
98
|
+
* Name of synthetic source. Some telemetry from the application may represent a synthetic traffic. It may be web crawler indexing the web site, site availability tests or traces from diagnostic libraries like Application Insights SDK itself.
|
|
99
|
+
*/
|
|
100
|
+
readonly operationSyntheticSource: string;
|
|
101
|
+
/**
|
|
102
|
+
* The correlation vector is a light weight vector clock which can be used to identify and order related events across clients and services.
|
|
103
|
+
*/
|
|
104
|
+
readonly operationCorrelationVector: string;
|
|
105
|
+
/**
|
|
106
|
+
* Session ID - the instance of the user's interaction with the app. Information in the session context fields is always about the end user. When telemetry is sent from a service, the session context is about the user that initiated the operation in the service.
|
|
107
|
+
*/
|
|
108
|
+
readonly sessionId: string;
|
|
109
|
+
/**
|
|
110
|
+
* Boolean value indicating whether the session identified by ai.session.id is first for the user or not.
|
|
111
|
+
*/
|
|
112
|
+
readonly sessionIsFirst: string;
|
|
113
|
+
readonly sessionIsNew: string;
|
|
114
|
+
readonly userAccountAcquisitionDate: string;
|
|
115
|
+
/**
|
|
116
|
+
* In multi-tenant applications this is the account ID or name which the user is acting with. Examples may be subscription ID for Azure portal or blog name blogging platform.
|
|
117
|
+
*/
|
|
118
|
+
readonly userAccountId: string;
|
|
119
|
+
/**
|
|
120
|
+
* The browser's user agent string as reported by the browser. This property will be used to extract informaiton regarding the customer's browser but will not be stored. Use custom properties to store the original user agent.
|
|
121
|
+
*/
|
|
122
|
+
readonly userAgent: string;
|
|
123
|
+
/**
|
|
124
|
+
* Anonymous user id. Represents the end user of the application. When telemetry is sent from a service, the user context is about the user that initiated the operation in the service.
|
|
125
|
+
*/
|
|
126
|
+
readonly userId: string;
|
|
127
|
+
/**
|
|
128
|
+
* Store region for UWP applications.
|
|
129
|
+
*/
|
|
130
|
+
readonly userStoreRegion: string;
|
|
131
|
+
/**
|
|
132
|
+
* Authenticated user id. The opposite of ai.user.id, this represents the user with a friendly name. Since it's PII information it is not collected by default by most SDKs.
|
|
133
|
+
*/
|
|
134
|
+
readonly userAuthUserId: string;
|
|
135
|
+
readonly userAnonymousUserAcquisitionDate: string;
|
|
136
|
+
readonly userAuthenticatedUserAcquisitionDate: string;
|
|
137
|
+
readonly cloudName: string;
|
|
138
|
+
/**
|
|
139
|
+
* Name of the role the application is a part of. Maps directly to the role name in azure.
|
|
140
|
+
*/
|
|
141
|
+
readonly cloudRole: string;
|
|
142
|
+
readonly cloudRoleVer: string;
|
|
143
|
+
/**
|
|
144
|
+
* Name of the instance where the application is running. Computer name for on-premisis, instance name for Azure.
|
|
145
|
+
*/
|
|
146
|
+
readonly cloudRoleInstance: string;
|
|
147
|
+
readonly cloudEnvironment: string;
|
|
148
|
+
readonly cloudLocation: string;
|
|
149
|
+
readonly cloudDeploymentUnit: string;
|
|
150
|
+
/**
|
|
151
|
+
* SDK version. See https://github.com/microsoft/ApplicationInsights-Home/blob/master/SDK-AUTHORING.md#sdk-version-specification for information.
|
|
152
|
+
*/
|
|
153
|
+
readonly internalSdkVersion: string;
|
|
154
|
+
/**
|
|
155
|
+
* Agent version. Used to indicate the version of StatusMonitor installed on the computer if it is used for data collection.
|
|
156
|
+
*/
|
|
157
|
+
readonly internalAgentVersion: string;
|
|
158
|
+
/**
|
|
159
|
+
* This is the node name used for billing purposes. Use it to override the standard detection of nodes.
|
|
160
|
+
*/
|
|
161
|
+
readonly internalNodeName: string;
|
|
162
|
+
/**
|
|
163
|
+
* This identifies the version of the snippet that was used to initialize the SDK
|
|
164
|
+
*/
|
|
165
|
+
readonly internalSnippet: string;
|
|
166
|
+
/**
|
|
167
|
+
* This identifies the source of the Sdk script (used to identify whether the SDK was loaded via the CDN)
|
|
168
|
+
*/
|
|
169
|
+
readonly internalSdkSrc: string;
|
|
170
|
+
}
|
|
171
|
+
declare const ContextTagKeys_base: new () => IContextTagKeys;
|
|
172
|
+
export declare class ContextTagKeys extends ContextTagKeys_base {
|
|
173
|
+
constructor();
|
|
174
|
+
}
|
|
175
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { IBase } from "./IBase";
|
|
2
|
+
/**
|
|
3
|
+
* Data struct to contain both B and C sections.
|
|
4
|
+
*/
|
|
5
|
+
export interface IData<TDomain> extends IBase {
|
|
6
|
+
/**
|
|
7
|
+
* Name of item (B section) if any. If telemetry data is derived straight from this, this should be null.
|
|
8
|
+
*/
|
|
9
|
+
baseType: string;
|
|
10
|
+
/**
|
|
11
|
+
* Container for data item (B section).
|
|
12
|
+
*/
|
|
13
|
+
baseData: TDomain;
|
|
14
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { DataPointType } from "./DataPointType";
|
|
2
|
+
/**
|
|
3
|
+
* Metric data single measurement.
|
|
4
|
+
*/
|
|
5
|
+
export interface IDataPoint {
|
|
6
|
+
/**
|
|
7
|
+
* Name of the metric.
|
|
8
|
+
*/
|
|
9
|
+
name: string;
|
|
10
|
+
/**
|
|
11
|
+
* Metric type. Single measurement or the aggregated value.
|
|
12
|
+
*/
|
|
13
|
+
kind: DataPointType;
|
|
14
|
+
/**
|
|
15
|
+
* Single value for measurement. Sum of individual measurements for the aggregation.
|
|
16
|
+
*/
|
|
17
|
+
value: number;
|
|
18
|
+
/**
|
|
19
|
+
* Metric weight of the aggregated metric. Should not be set for a measurement.
|
|
20
|
+
*/
|
|
21
|
+
count: number;
|
|
22
|
+
/**
|
|
23
|
+
* Minimum value of the aggregated metric. Should not be set for a measurement.
|
|
24
|
+
*/
|
|
25
|
+
min: number;
|
|
26
|
+
/**
|
|
27
|
+
* Maximum value of the aggregated metric. Should not be set for a measurement.
|
|
28
|
+
*/
|
|
29
|
+
max: number;
|
|
30
|
+
/**
|
|
31
|
+
* Standard deviation of the aggregated metric. Should not be set for a measurement.
|
|
32
|
+
*/
|
|
33
|
+
stdDev: number;
|
|
34
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { IDomain } from "./IDomain";
|
|
2
|
+
/**
|
|
3
|
+
* Instances of Event represent structured event records that can be grouped and searched by their properties. Event data item also creates a metric of event count by name.
|
|
4
|
+
*/
|
|
5
|
+
export interface IEventData extends IDomain {
|
|
6
|
+
/**
|
|
7
|
+
* Schema version
|
|
8
|
+
*/
|
|
9
|
+
ver: number;
|
|
10
|
+
/**
|
|
11
|
+
* Event name. Keep it low cardinality to allow proper grouping and useful metrics.
|
|
12
|
+
*/
|
|
13
|
+
name: string;
|
|
14
|
+
/**
|
|
15
|
+
* Collection of custom properties.
|
|
16
|
+
*/
|
|
17
|
+
properties: any;
|
|
18
|
+
/**
|
|
19
|
+
* Collection of custom measurements.
|
|
20
|
+
*/
|
|
21
|
+
measurements: any;
|
|
22
|
+
}
|