@3sixty/telemetry-models 0.0.0-stage → 0.20.0-next.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 (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 +59 -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 +9 -0
  88. package/docs/examples.md +142 -0
  89. package/docs/reference/classes/MetricHelper.md +232 -0
  90. package/docs/reference/classes/MultiTelemetryConnector.md +359 -0
  91. package/docs/reference/classes/SilentTelemetryConnector.md +193 -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 +273 -0
  98. package/docs/reference/interfaces/ITelemetryConnector.md +273 -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];
@@ -0,0 +1,9 @@
1
+ # Changelog
2
+
3
+ ## [0.20.0-next.1](https://github.com/3sixtyglobal/telemetry/compare/telemetry-models-v0.20.0-next.0...telemetry-models-v0.20.0-next.1) (2026-10-23)
4
+
5
+
6
+ ### Features
7
+
8
+ * publish packages under the [@3sixty](https://github.com/3sixty) namespace ([e488a8c](https://github.com/3sixtyglobal/telemetry/commit/e488a8cbe26251de694077a0164af480cab61c3a))
9
+ * updated ts compile ([4490a7b](https://github.com/3sixtyglobal/telemetry/commit/4490a7b854bdea72a79946d2dbb708a47e81b56f))
@@ -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,232 @@
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
+ \{\[`key`: `string`\]: `unknown`; \}
97
+
98
+ Optional custom data for the increment.
99
+
100
+ ##### onError?
101
+
102
+ (`err`) => `void` \| `Promise`\<`void`\>
103
+
104
+ Optional callback invoked with the swallowed error, for callers that want visibility.
105
+
106
+ #### Returns
107
+
108
+ `Promise`\<`void`\>
109
+
110
+ A promise that resolves when the increment has been recorded or the error swallowed.
111
+
112
+ ***
113
+
114
+ ### metricDecrement() {#metricdecrement}
115
+
116
+ > `static` **metricDecrement**(`telemetryComponent`, `id`, `customData?`, `onError?`): `Promise`\<`void`\>
117
+
118
+ Decrement a metric counter, swallowing any telemetry errors.
119
+
120
+ #### Parameters
121
+
122
+ ##### telemetryComponent
123
+
124
+ [`ITelemetryComponent`](../interfaces/ITelemetryComponent.md) \| `undefined`
125
+
126
+ The telemetry component to use for decrementing the metric.
127
+
128
+ ##### id
129
+
130
+ `string`
131
+
132
+ The metric ID.
133
+
134
+ ##### customData?
135
+
136
+ \{\[`key`: `string`\]: `unknown`; \}
137
+
138
+ Optional custom data for the decrement.
139
+
140
+ ##### onError?
141
+
142
+ (`err`) => `void` \| `Promise`\<`void`\>
143
+
144
+ Optional callback invoked with the swallowed error, for callers that want visibility.
145
+
146
+ #### Returns
147
+
148
+ `Promise`\<`void`\>
149
+
150
+ A promise that resolves when the decrement has been recorded or the error swallowed.
151
+
152
+ ***
153
+
154
+ ### metricValue() {#metricvalue}
155
+
156
+ > `static` **metricValue**(`telemetryComponent`, `id`, `value`, `customData?`, `onError?`): `Promise`\<`void`\>
157
+
158
+ Set a metric value, swallowing any telemetry errors.
159
+
160
+ #### Parameters
161
+
162
+ ##### telemetryComponent
163
+
164
+ [`ITelemetryComponent`](../interfaces/ITelemetryComponent.md) \| `undefined`
165
+
166
+ The telemetry component to use for setting the metric value.
167
+
168
+ ##### id
169
+
170
+ `string`
171
+
172
+ The metric ID.
173
+
174
+ ##### value
175
+
176
+ `number`
177
+
178
+ The metric value to set.
179
+
180
+ ##### customData?
181
+
182
+ \{\[`key`: `string`\]: `unknown`; \}
183
+
184
+ Optional custom data for setting the value.
185
+
186
+ ##### onError?
187
+
188
+ (`err`) => `void` \| `Promise`\<`void`\>
189
+
190
+ Optional callback invoked with the swallowed error, for callers that want visibility.
191
+
192
+ #### Returns
193
+
194
+ `Promise`\<`void`\>
195
+
196
+ A promise that resolves when the value has been recorded or the error swallowed.
197
+
198
+ ***
199
+
200
+ ### metricValues() {#metricvalues}
201
+
202
+ > `static` **metricValues**(`telemetryComponent`, `values`, `onError?`): `Promise`\<`void`\>
203
+
204
+ Set several metric values at once, swallowing any telemetry errors.
205
+ Components which support it record the whole set in one operation, which for a persisted
206
+ connector is a single write rather than one per value.
207
+
208
+ #### Parameters
209
+
210
+ ##### telemetryComponent
211
+
212
+ [`ITelemetryComponent`](../interfaces/ITelemetryComponent.md) \| `undefined`
213
+
214
+ The telemetry component to use for setting the metric values.
215
+
216
+ ##### values
217
+
218
+ [`ITelemetryMetricValueEntry`](../interfaces/ITelemetryMetricValueEntry.md)[]
219
+
220
+ The metric values to set.
221
+
222
+ ##### onError?
223
+
224
+ (`err`) => `void` \| `Promise`\<`void`\>
225
+
226
+ Optional callback invoked with the swallowed error, for callers that want visibility.
227
+
228
+ #### Returns
229
+
230
+ `Promise`\<`void`\>
231
+
232
+ A promise that resolves when the values have been recorded or the error swallowed.