@3sixty/telemetry-models 0.0.0-stage → 0.20.0-next.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.
Files changed (120) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +24 -2
  3. package/dist/es/connectors/multiTelemetryConnector.js +184 -0
  4. package/dist/es/connectors/multiTelemetryConnector.js.map +1 -0
  5. package/dist/es/connectors/silentTelemetryConnector.js +57 -0
  6. package/dist/es/connectors/silentTelemetryConnector.js.map +1 -0
  7. package/dist/es/factories/metricsProducerFactory.js +13 -0
  8. package/dist/es/factories/metricsProducerFactory.js.map +1 -0
  9. package/dist/es/factories/telemetryConnectorFactory.js +9 -0
  10. package/dist/es/factories/telemetryConnectorFactory.js.map +1 -0
  11. package/dist/es/helpers/metricHelper.js +139 -0
  12. package/dist/es/helpers/metricHelper.js.map +1 -0
  13. package/dist/es/index.js +30 -0
  14. package/dist/es/index.js.map +1 -0
  15. package/dist/es/models/IMetricsCollectorComponent.js +2 -0
  16. package/dist/es/models/IMetricsCollectorComponent.js.map +1 -0
  17. package/dist/es/models/IMetricsProducer.js +2 -0
  18. package/dist/es/models/IMetricsProducer.js.map +1 -0
  19. package/dist/es/models/IMultiTelemetryConnectorConstructorOptions.js +4 -0
  20. package/dist/es/models/IMultiTelemetryConnectorConstructorOptions.js.map +1 -0
  21. package/dist/es/models/ITelemetryComponent.js +2 -0
  22. package/dist/es/models/ITelemetryComponent.js.map +1 -0
  23. package/dist/es/models/ITelemetryConnector.js +2 -0
  24. package/dist/es/models/ITelemetryConnector.js.map +1 -0
  25. package/dist/es/models/ITelemetryMetric.js +2 -0
  26. package/dist/es/models/ITelemetryMetric.js.map +1 -0
  27. package/dist/es/models/ITelemetryMetricValue.js +4 -0
  28. package/dist/es/models/ITelemetryMetricValue.js.map +1 -0
  29. package/dist/es/models/ITelemetryMetricValueEntry.js +2 -0
  30. package/dist/es/models/ITelemetryMetricValueEntry.js.map +1 -0
  31. package/dist/es/models/api/ITelemetryAddMetricValueRequest.js +2 -0
  32. package/dist/es/models/api/ITelemetryAddMetricValueRequest.js.map +1 -0
  33. package/dist/es/models/api/ITelemetryCreateMetricRequest.js +2 -0
  34. package/dist/es/models/api/ITelemetryCreateMetricRequest.js.map +1 -0
  35. package/dist/es/models/api/ITelemetryGetMetricRequest.js +4 -0
  36. package/dist/es/models/api/ITelemetryGetMetricRequest.js.map +1 -0
  37. package/dist/es/models/api/ITelemetryGetMetricResponse.js +2 -0
  38. package/dist/es/models/api/ITelemetryGetMetricResponse.js.map +1 -0
  39. package/dist/es/models/api/ITelemetryGetMetricValueRequest.js +4 -0
  40. package/dist/es/models/api/ITelemetryGetMetricValueRequest.js.map +1 -0
  41. package/dist/es/models/api/ITelemetryGetMetricValueResponse.js +2 -0
  42. package/dist/es/models/api/ITelemetryGetMetricValueResponse.js.map +1 -0
  43. package/dist/es/models/api/ITelemetryListRequest.js +4 -0
  44. package/dist/es/models/api/ITelemetryListRequest.js.map +1 -0
  45. package/dist/es/models/api/ITelemetryListResponse.js +2 -0
  46. package/dist/es/models/api/ITelemetryListResponse.js.map +1 -0
  47. package/dist/es/models/api/ITelemetryRemoveMetricRequest.js +4 -0
  48. package/dist/es/models/api/ITelemetryRemoveMetricRequest.js.map +1 -0
  49. package/dist/es/models/api/ITelemetryUpdateMetricRequest.js +4 -0
  50. package/dist/es/models/api/ITelemetryUpdateMetricRequest.js.map +1 -0
  51. package/dist/es/models/api/ITelemetryValuesListRequest.js +4 -0
  52. package/dist/es/models/api/ITelemetryValuesListRequest.js.map +1 -0
  53. package/dist/es/models/api/ITelemetryValuesListResponse.js +2 -0
  54. package/dist/es/models/api/ITelemetryValuesListResponse.js.map +1 -0
  55. package/dist/es/models/metricCounterOperation.js +17 -0
  56. package/dist/es/models/metricCounterOperation.js.map +1 -0
  57. package/dist/es/models/metricType.js +21 -0
  58. package/dist/es/models/metricType.js.map +1 -0
  59. package/dist/types/connectors/multiTelemetryConnector.d.ts +124 -0
  60. package/dist/types/connectors/silentTelemetryConnector.d.ts +56 -0
  61. package/dist/types/factories/metricsProducerFactory.d.ts +10 -0
  62. package/dist/types/factories/telemetryConnectorFactory.d.ts +6 -0
  63. package/dist/types/helpers/metricHelper.d.ts +67 -0
  64. package/dist/types/index.d.ts +27 -0
  65. package/dist/types/models/IMetricsCollectorComponent.d.ts +6 -0
  66. package/dist/types/models/IMetricsProducer.d.ts +27 -0
  67. package/dist/types/models/IMultiTelemetryConnectorConstructorOptions.d.ts +9 -0
  68. package/dist/types/models/ITelemetryComponent.d.ts +109 -0
  69. package/dist/types/models/ITelemetryConnector.d.ts +109 -0
  70. package/dist/types/models/ITelemetryMetric.d.ts +31 -0
  71. package/dist/types/models/ITelemetryMetricValue.d.ts +23 -0
  72. package/dist/types/models/ITelemetryMetricValueEntry.d.ts +20 -0
  73. package/dist/types/models/api/ITelemetryAddMetricValueRequest.d.ts +30 -0
  74. package/dist/types/models/api/ITelemetryCreateMetricRequest.d.ts +11 -0
  75. package/dist/types/models/api/ITelemetryGetMetricRequest.d.ts +14 -0
  76. package/dist/types/models/api/ITelemetryGetMetricResponse.d.ts +20 -0
  77. package/dist/types/models/api/ITelemetryGetMetricValueRequest.d.ts +18 -0
  78. package/dist/types/models/api/ITelemetryGetMetricValueResponse.d.ts +10 -0
  79. package/dist/types/models/api/ITelemetryListRequest.d.ts +22 -0
  80. package/dist/types/models/api/ITelemetryListResponse.d.ts +19 -0
  81. package/dist/types/models/api/ITelemetryRemoveMetricRequest.d.ts +14 -0
  82. package/dist/types/models/api/ITelemetryUpdateMetricRequest.d.ts +31 -0
  83. package/dist/types/models/api/ITelemetryValuesListRequest.d.ts +35 -0
  84. package/dist/types/models/api/ITelemetryValuesListResponse.d.ts +24 -0
  85. package/dist/types/models/metricCounterOperation.d.ts +17 -0
  86. package/dist/types/models/metricType.d.ts +21 -0
  87. package/docs/changelog.md +0 -0
  88. package/docs/examples.md +142 -0
  89. package/docs/reference/classes/MetricHelper.md +226 -0
  90. package/docs/reference/classes/MultiTelemetryConnector.md +357 -0
  91. package/docs/reference/classes/SilentTelemetryConnector.md +191 -0
  92. package/docs/reference/index.md +42 -0
  93. package/docs/reference/interfaces/IMetricsCollectorComponent.md +7 -0
  94. package/docs/reference/interfaces/IMetricsProducer.md +45 -0
  95. package/docs/reference/interfaces/IMultiTelemetryConnectorConstructorOptions.md +11 -0
  96. package/docs/reference/interfaces/ITelemetryAddMetricValueRequest.md +41 -0
  97. package/docs/reference/interfaces/ITelemetryComponent.md +271 -0
  98. package/docs/reference/interfaces/ITelemetryConnector.md +271 -0
  99. package/docs/reference/interfaces/ITelemetryCreateMetricRequest.md +12 -0
  100. package/docs/reference/interfaces/ITelemetryGetMetricRequest.md +17 -0
  101. package/docs/reference/interfaces/ITelemetryGetMetricResponse.md +23 -0
  102. package/docs/reference/interfaces/ITelemetryGetMetricValueRequest.md +23 -0
  103. package/docs/reference/interfaces/ITelemetryGetMetricValueResponse.md +11 -0
  104. package/docs/reference/interfaces/ITelemetryListRequest.md +29 -0
  105. package/docs/reference/interfaces/ITelemetryListResponse.md +23 -0
  106. package/docs/reference/interfaces/ITelemetryMetric.md +52 -0
  107. package/docs/reference/interfaces/ITelemetryMetricValue.md +39 -0
  108. package/docs/reference/interfaces/ITelemetryMetricValueEntry.md +31 -0
  109. package/docs/reference/interfaces/ITelemetryRemoveMetricRequest.md +17 -0
  110. package/docs/reference/interfaces/ITelemetryUpdateMetricRequest.md +43 -0
  111. package/docs/reference/interfaces/ITelemetryValuesListRequest.md +49 -0
  112. package/docs/reference/interfaces/ITelemetryValuesListResponse.md +29 -0
  113. package/docs/reference/type-aliases/MetricCounterOperation.md +5 -0
  114. package/docs/reference/type-aliases/MetricType.md +5 -0
  115. package/docs/reference/variables/MetricCounterOperation.md +19 -0
  116. package/docs/reference/variables/MetricType.md +25 -0
  117. package/docs/reference/variables/MetricsProducerFactory.md +9 -0
  118. package/docs/reference/variables/TelemetryConnectorFactory.md +5 -0
  119. package/locales/en.json +7 -0
  120. package/package.json +51 -5
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Remove a telemetry metric and it's values.
3
+ */
4
+ export interface ITelemetryRemoveMetricRequest {
5
+ /**
6
+ * The path parameters.
7
+ */
8
+ pathParams: {
9
+ /**
10
+ * The id of the metric.
11
+ */
12
+ id: string;
13
+ };
14
+ }
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Update a telemetry metric.
3
+ */
4
+ export interface ITelemetryUpdateMetricRequest {
5
+ /**
6
+ * The path parameters.
7
+ */
8
+ pathParams: {
9
+ /**
10
+ * The id of the metric.
11
+ */
12
+ id: string;
13
+ };
14
+ /**
15
+ * The data to be used in the update.
16
+ */
17
+ body: {
18
+ /**
19
+ * The label of the metric.
20
+ */
21
+ label: string;
22
+ /**
23
+ * The description of the metric.
24
+ */
25
+ description?: string;
26
+ /**
27
+ * The unit of the metric.
28
+ */
29
+ unit?: string;
30
+ };
31
+ }
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Get the a list of the telemetry values.
3
+ */
4
+ export interface ITelemetryValuesListRequest {
5
+ /**
6
+ * The path parameters.
7
+ */
8
+ pathParams: {
9
+ /**
10
+ * The id of the metric.
11
+ */
12
+ id: string;
13
+ };
14
+ /**
15
+ * The query parameters.
16
+ */
17
+ query?: {
18
+ /**
19
+ * The start time of the metrics to retrieve as a timestamp in ms.
20
+ */
21
+ timeStart?: string;
22
+ /**
23
+ * The end time of the metrics to retrieve as a timestamp in ms.
24
+ */
25
+ timeEnd?: string;
26
+ /**
27
+ * The optional cursor to get next chunk.
28
+ */
29
+ cursor?: string;
30
+ /**
31
+ * Limit the number of entities to return.
32
+ */
33
+ limit?: string;
34
+ };
35
+ }
@@ -0,0 +1,24 @@
1
+ import type { ITelemetryMetric } from "../ITelemetryMetric.js";
2
+ import type { ITelemetryMetricValue } from "../ITelemetryMetricValue.js";
3
+ /**
4
+ * Response for telemetry list request.
5
+ */
6
+ export interface ITelemetryValuesListResponse {
7
+ /**
8
+ * The response payload.
9
+ */
10
+ body: {
11
+ /**
12
+ * The main metric details.
13
+ */
14
+ metric: ITelemetryMetric;
15
+ /**
16
+ * The metric values.
17
+ */
18
+ entities: ITelemetryMetricValue[];
19
+ /**
20
+ * An optional cursor, when defined can be used to call find to get more entities.
21
+ */
22
+ cursor?: string;
23
+ };
24
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * The types of metric value operations for increment decrement counter metrics.
3
+ */
4
+ export declare const MetricCounterOperation: {
5
+ /**
6
+ * Increment Counter.
7
+ */
8
+ readonly Increment: "inc";
9
+ /**
10
+ * Decrement Counter.
11
+ */
12
+ readonly Decrement: "dec";
13
+ };
14
+ /**
15
+ * The types of metric counter operations.
16
+ */
17
+ export type MetricCounterOperation = (typeof MetricCounterOperation)[keyof typeof MetricCounterOperation];
@@ -0,0 +1,21 @@
1
+ /**
2
+ * The types of metrics.
3
+ */
4
+ export declare const MetricType: {
5
+ /**
6
+ * Counter.
7
+ */
8
+ readonly Counter: 0;
9
+ /**
10
+ * Increment Decrement Counter.
11
+ */
12
+ readonly IncDecCounter: 1;
13
+ /**
14
+ * Gauge.
15
+ */
16
+ readonly Gauge: 2;
17
+ };
18
+ /**
19
+ * The types of metrics.
20
+ */
21
+ export type MetricType = (typeof MetricType)[keyof typeof MetricType];
File without changes
@@ -0,0 +1,142 @@
1
+ # Telemetry Models Examples
2
+
3
+ These examples demonstrate how to compose telemetry connectors and use the shared telemetry contracts when building integrations.
4
+
5
+ ## MultiTelemetryConnector
6
+
7
+ ```typescript
8
+ import {
9
+ MetricType,
10
+ MultiTelemetryConnector,
11
+ SilentTelemetryConnector,
12
+ TelemetryConnectorFactory
13
+ } from '@3sixty/telemetry-models';
14
+
15
+ TelemetryConnectorFactory.register('silent-a', () => new SilentTelemetryConnector());
16
+ TelemetryConnectorFactory.register('silent-b', () => new SilentTelemetryConnector());
17
+
18
+ const multi = new MultiTelemetryConnector({
19
+ telemetryConnectorTypes: ['silent-a', 'silent-b']
20
+ });
21
+
22
+ console.log(multi.className()); // multiTelemetryConnector
23
+
24
+ await multi.createMetric({
25
+ id: 'heartbeat-total',
26
+ label: 'Heartbeat Total',
27
+ description: 'Number of heartbeats sent',
28
+ unit: 'events',
29
+ type: MetricType.Counter
30
+ });
31
+
32
+ await multi.updateMetric({
33
+ id: 'heartbeat-total',
34
+ label: 'Heartbeat Events',
35
+ description: 'Total heartbeats sent by all nodes',
36
+ unit: 'events'
37
+ });
38
+
39
+ const metricValueId = await multi.addMetricValue('heartbeat-total', 'inc', {
40
+ nodeId: 'node-7'
41
+ });
42
+
43
+ console.log(metricValueId.length === 0); // true
44
+ ```
45
+
46
+ ```typescript
47
+ import {
48
+ MetricType,
49
+ MultiTelemetryConnector,
50
+ SilentTelemetryConnector,
51
+ TelemetryConnectorFactory
52
+ } from '@3sixty/telemetry-models';
53
+
54
+ TelemetryConnectorFactory.register('silent-a', () => new SilentTelemetryConnector());
55
+ TelemetryConnectorFactory.register('silent-b', () => new SilentTelemetryConnector());
56
+
57
+ const multi = new MultiTelemetryConnector({
58
+ telemetryConnectorTypes: ['silent-a', 'silent-b']
59
+ });
60
+
61
+ await multi.removeMetric('heartbeat-total');
62
+
63
+ const counters = await multi.query(MetricType.Counter, undefined, 50);
64
+ console.log(counters.entities.length); // 0
65
+
66
+ const values = await multi.queryValues(
67
+ 'heartbeat-total',
68
+ Date.now() - 86_400_000,
69
+ Date.now(),
70
+ undefined,
71
+ 100
72
+ );
73
+ console.log(values.entities.length); // 0
74
+
75
+ const metric = await multi.getMetric('heartbeat-total');
76
+ console.log(metric.metric.id); // heartbeat-total
77
+ ```
78
+
79
+ ## SilentTelemetryConnector
80
+
81
+ ```typescript
82
+ import { MetricType, SilentTelemetryConnector } from '@3sixty/telemetry-models';
83
+
84
+ const silent = new SilentTelemetryConnector();
85
+
86
+ console.log(silent.className()); // silentTelemetryConnector
87
+
88
+ await silent.createMetric({
89
+ id: 'dropped-messages',
90
+ label: 'Dropped Messages',
91
+ type: MetricType.Counter
92
+ });
93
+
94
+ await silent.updateMetric({
95
+ id: 'dropped-messages',
96
+ label: 'Dropped Messages Total'
97
+ });
98
+
99
+ await silent.addMetricValue('dropped-messages', 1);
100
+ await silent.removeMetric('dropped-messages');
101
+ ```
102
+
103
+ ```typescript
104
+ import { SilentTelemetryConnector } from '@3sixty/telemetry-models';
105
+
106
+ const silent = new SilentTelemetryConnector();
107
+
108
+ try {
109
+ await silent.getMetric('dropped-messages');
110
+ } catch (error) {
111
+ if (error instanceof Error) {
112
+ console.log(error.name); // NotSupportedError
113
+ }
114
+ }
115
+
116
+ try {
117
+ await silent.query();
118
+ } catch (error) {
119
+ if (error instanceof Error) {
120
+ console.log(error.name); // NotSupportedError
121
+ }
122
+ }
123
+
124
+ try {
125
+ await silent.queryValues('dropped-messages');
126
+ } catch (error) {
127
+ if (error instanceof Error) {
128
+ console.log(error.name); // NotSupportedError
129
+ }
130
+ }
131
+ ```
132
+
133
+ ## TelemetryConnectorFactory
134
+
135
+ ```typescript
136
+ import { SilentTelemetryConnector, TelemetryConnectorFactory } from '@3sixty/telemetry-models';
137
+
138
+ TelemetryConnectorFactory.register('silent-default', () => new SilentTelemetryConnector());
139
+
140
+ const connector = TelemetryConnectorFactory.get('silent-default');
141
+ console.log(connector.className()); // silentTelemetryConnector
142
+ ```
@@ -0,0 +1,226 @@
1
+ # Class: MetricHelper
2
+
3
+ Helper class for performing common metric operations, swallowing any errors from the telemetry component.
4
+
5
+ ## Constructors
6
+
7
+ ### Constructor
8
+
9
+ > **new MetricHelper**(): `MetricHelper`
10
+
11
+ #### Returns
12
+
13
+ `MetricHelper`
14
+
15
+ ## Methods
16
+
17
+ ### createMetrics() {#createmetrics}
18
+
19
+ > `static` **createMetrics**(`telemetryComponent`, `metrics`): `Promise`\<`void`\>
20
+
21
+ Create multiple metrics if they don't already exist, swallowing any already exists errors.
22
+ A convenience wrapper over createMetric for callers that always have a list.
23
+
24
+ #### Parameters
25
+
26
+ ##### telemetryComponent
27
+
28
+ [`ITelemetryComponent`](../interfaces/ITelemetryComponent.md) \| `undefined`
29
+
30
+ The telemetry component to use for creating the metrics.
31
+
32
+ ##### metrics
33
+
34
+ [`ITelemetryMetric`](../interfaces/ITelemetryMetric.md)[]
35
+
36
+ The telemetry metrics to create.
37
+
38
+ #### Returns
39
+
40
+ `Promise`\<`void`\>
41
+
42
+ A promise that resolves when all metrics have been created or confirmed to exist.
43
+
44
+ ***
45
+
46
+ ### createMetric() {#createmetric}
47
+
48
+ > `static` **createMetric**(`telemetryComponent`, `metric`): `Promise`\<`void`\>
49
+
50
+ Create one or more metrics if they don't already exist, swallowing any already exists errors.
51
+
52
+ #### Parameters
53
+
54
+ ##### telemetryComponent
55
+
56
+ [`ITelemetryComponent`](../interfaces/ITelemetryComponent.md) \| `undefined`
57
+
58
+ The telemetry component to use for creating the metrics.
59
+
60
+ ##### metric
61
+
62
+ [`ITelemetryMetric`](../interfaces/ITelemetryMetric.md) \| [`ITelemetryMetric`](../interfaces/ITelemetryMetric.md)[]
63
+
64
+ The telemetry metric to create, or the metrics to create.
65
+
66
+ #### Returns
67
+
68
+ `Promise`\<`void`\>
69
+
70
+ A promise that resolves when the metrics have been created or confirmed to exist.
71
+
72
+ ***
73
+
74
+ ### metricIncrement() {#metricincrement}
75
+
76
+ > `static` **metricIncrement**(`telemetryComponent`, `id`, `customData?`, `onError?`): `Promise`\<`void`\>
77
+
78
+ Increment a metric counter, swallowing any telemetry errors.
79
+
80
+ #### Parameters
81
+
82
+ ##### telemetryComponent
83
+
84
+ [`ITelemetryComponent`](../interfaces/ITelemetryComponent.md) \| `undefined`
85
+
86
+ The telemetry component to use for incrementing the metric.
87
+
88
+ ##### id
89
+
90
+ `string`
91
+
92
+ The metric ID.
93
+
94
+ ##### customData?
95
+
96
+ Optional custom data for the increment.
97
+
98
+ ##### onError?
99
+
100
+ (`err`) => `void` \| `Promise`\<`void`\>
101
+
102
+ Optional callback invoked with the swallowed error, for callers that want visibility.
103
+
104
+ #### Returns
105
+
106
+ `Promise`\<`void`\>
107
+
108
+ A promise that resolves when the increment has been recorded or the error swallowed.
109
+
110
+ ***
111
+
112
+ ### metricDecrement() {#metricdecrement}
113
+
114
+ > `static` **metricDecrement**(`telemetryComponent`, `id`, `customData?`, `onError?`): `Promise`\<`void`\>
115
+
116
+ Decrement a metric counter, swallowing any telemetry errors.
117
+
118
+ #### Parameters
119
+
120
+ ##### telemetryComponent
121
+
122
+ [`ITelemetryComponent`](../interfaces/ITelemetryComponent.md) \| `undefined`
123
+
124
+ The telemetry component to use for decrementing the metric.
125
+
126
+ ##### id
127
+
128
+ `string`
129
+
130
+ The metric ID.
131
+
132
+ ##### customData?
133
+
134
+ Optional custom data for the decrement.
135
+
136
+ ##### onError?
137
+
138
+ (`err`) => `void` \| `Promise`\<`void`\>
139
+
140
+ Optional callback invoked with the swallowed error, for callers that want visibility.
141
+
142
+ #### Returns
143
+
144
+ `Promise`\<`void`\>
145
+
146
+ A promise that resolves when the decrement has been recorded or the error swallowed.
147
+
148
+ ***
149
+
150
+ ### metricValue() {#metricvalue}
151
+
152
+ > `static` **metricValue**(`telemetryComponent`, `id`, `value`, `customData?`, `onError?`): `Promise`\<`void`\>
153
+
154
+ Set a metric value, swallowing any telemetry errors.
155
+
156
+ #### Parameters
157
+
158
+ ##### telemetryComponent
159
+
160
+ [`ITelemetryComponent`](../interfaces/ITelemetryComponent.md) \| `undefined`
161
+
162
+ The telemetry component to use for setting the metric value.
163
+
164
+ ##### id
165
+
166
+ `string`
167
+
168
+ The metric ID.
169
+
170
+ ##### value
171
+
172
+ `number`
173
+
174
+ The metric value to set.
175
+
176
+ ##### customData?
177
+
178
+ Optional custom data for setting the value.
179
+
180
+ ##### onError?
181
+
182
+ (`err`) => `void` \| `Promise`\<`void`\>
183
+
184
+ Optional callback invoked with the swallowed error, for callers that want visibility.
185
+
186
+ #### Returns
187
+
188
+ `Promise`\<`void`\>
189
+
190
+ A promise that resolves when the value has been recorded or the error swallowed.
191
+
192
+ ***
193
+
194
+ ### metricValues() {#metricvalues}
195
+
196
+ > `static` **metricValues**(`telemetryComponent`, `values`, `onError?`): `Promise`\<`void`\>
197
+
198
+ Set several metric values at once, swallowing any telemetry errors.
199
+ Components which support it record the whole set in one operation, which for a persisted
200
+ connector is a single write rather than one per value.
201
+
202
+ #### Parameters
203
+
204
+ ##### telemetryComponent
205
+
206
+ [`ITelemetryComponent`](../interfaces/ITelemetryComponent.md) \| `undefined`
207
+
208
+ The telemetry component to use for setting the metric values.
209
+
210
+ ##### values
211
+
212
+ [`ITelemetryMetricValueEntry`](../interfaces/ITelemetryMetricValueEntry.md)[]
213
+
214
+ The metric values to set.
215
+
216
+ ##### onError?
217
+
218
+ (`err`) => `void` \| `Promise`\<`void`\>
219
+
220
+ Optional callback invoked with the swallowed error, for callers that want visibility.
221
+
222
+ #### Returns
223
+
224
+ `Promise`\<`void`\>
225
+
226
+ A promise that resolves when the values have been recorded or the error swallowed.