@twin.org/telemetry-service 0.0.2-next.3 → 0.0.3-next.10

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 (34) hide show
  1. package/README.md +1 -1
  2. package/dist/es/index.js +10 -0
  3. package/dist/es/index.js.map +1 -0
  4. package/dist/es/metricsCollectorService.js +114 -0
  5. package/dist/es/metricsCollectorService.js.map +1 -0
  6. package/dist/es/models/IMetricsCollectorServiceConfig.js +4 -0
  7. package/dist/es/models/IMetricsCollectorServiceConfig.js.map +1 -0
  8. package/dist/es/models/IMetricsCollectorServiceConstructorOptions.js +2 -0
  9. package/dist/es/models/IMetricsCollectorServiceConstructorOptions.js.map +1 -0
  10. package/dist/es/models/ITelemetryServiceConstructorOptions.js +4 -0
  11. package/dist/es/models/ITelemetryServiceConstructorOptions.js.map +1 -0
  12. package/dist/es/restEntryPoints.js +10 -0
  13. package/dist/es/restEntryPoints.js.map +1 -0
  14. package/dist/{esm/index.mjs → es/telemetryRoutes.js} +14 -125
  15. package/dist/es/telemetryRoutes.js.map +1 -0
  16. package/dist/es/telemetryService.js +109 -0
  17. package/dist/es/telemetryService.js.map +1 -0
  18. package/dist/types/index.d.ts +7 -4
  19. package/dist/types/metricsCollectorService.d.ts +38 -0
  20. package/dist/types/models/IMetricsCollectorServiceConfig.d.ts +10 -0
  21. package/dist/types/models/IMetricsCollectorServiceConstructorOptions.d.ts +15 -0
  22. package/dist/types/telemetryService.d.ts +8 -3
  23. package/docs/changelog.md +190 -22
  24. package/docs/examples.md +83 -1
  25. package/docs/open-api/spec.json +40 -50
  26. package/docs/reference/classes/MetricsCollectorService.md +98 -0
  27. package/docs/reference/classes/TelemetryService.md +28 -10
  28. package/docs/reference/index.md +3 -0
  29. package/docs/reference/interfaces/IMetricsCollectorServiceConfig.md +17 -0
  30. package/docs/reference/interfaces/IMetricsCollectorServiceConstructorOptions.md +25 -0
  31. package/docs/reference/interfaces/ITelemetryServiceConstructorOptions.md +2 -2
  32. package/locales/en.json +7 -1
  33. package/package.json +10 -11
  34. package/dist/cjs/index.cjs +0 -582
@@ -139,8 +139,9 @@
139
139
  "in": "query",
140
140
  "required": false,
141
141
  "schema": {
142
- "$ref": "#/components/schemas/MetricType"
143
- }
142
+ "type": "string"
143
+ },
144
+ "example": "0"
144
145
  },
145
146
  {
146
147
  "name": "cursor",
@@ -707,10 +708,7 @@
707
708
  "in": "query",
708
709
  "required": false,
709
710
  "schema": {
710
- "type": [
711
- "number",
712
- "string"
713
- ]
711
+ "type": "string"
714
712
  }
715
713
  },
716
714
  {
@@ -719,10 +717,7 @@
719
717
  "in": "query",
720
718
  "required": false,
721
719
  "schema": {
722
- "type": [
723
- "number",
724
- "string"
725
- ]
720
+ "type": "string"
726
721
  }
727
722
  },
728
723
  {
@@ -849,6 +844,7 @@
849
844
  "components": {
850
845
  "schemas": {
851
846
  "Error": {
847
+ "description": "Model to describe serialized error.",
852
848
  "type": "object",
853
849
  "properties": {
854
850
  "name": {
@@ -857,7 +853,7 @@
857
853
  },
858
854
  "message": {
859
855
  "type": "string",
860
- "description": "The message for the error."
856
+ "description": "The message for the error as an i18n key."
861
857
  },
862
858
  "source": {
863
859
  "type": "string",
@@ -879,29 +875,37 @@
879
875
  "required": [
880
876
  "name",
881
877
  "message"
882
- ],
883
- "additionalProperties": false,
884
- "description": "Model to describe serialized error."
878
+ ]
879
+ },
880
+ "MetricCounterOperation": {
881
+ "description": "The types of metric counter operations.",
882
+ "anyOf": [
883
+ {
884
+ "const": "inc",
885
+ "description": "Increment Counter."
886
+ },
887
+ {
888
+ "const": "dec",
889
+ "description": "Decrement Counter."
890
+ }
891
+ ]
885
892
  },
886
893
  "MetricType": {
894
+ "description": "The types of metrics.",
887
895
  "anyOf": [
888
896
  {
889
- "type": "number",
890
897
  "const": 0,
891
898
  "description": "Counter."
892
899
  },
893
900
  {
894
- "type": "number",
895
901
  "const": 1,
896
902
  "description": "Increment Decrement Counter."
897
903
  },
898
904
  {
899
- "type": "number",
900
905
  "const": 2,
901
906
  "description": "Gauge."
902
907
  }
903
- ],
904
- "description": "The types of metrics."
908
+ ]
905
909
  },
906
910
  "TelemetryAddMetricValueRequest": {
907
911
  "type": "object",
@@ -909,12 +913,7 @@
909
913
  "value": {
910
914
  "anyOf": [
911
915
  {
912
- "type": "string",
913
- "const": "inc"
914
- },
915
- {
916
- "type": "string",
917
- "const": "dec"
916
+ "$ref": "#/components/schemas/MetricCounterOperation"
918
917
  },
919
918
  {
920
919
  "type": "number"
@@ -931,7 +930,6 @@
931
930
  "required": [
932
931
  "value"
933
932
  ],
934
- "additionalProperties": false,
935
933
  "description": "The data to be used in the update."
936
934
  },
937
935
  "TelemetryGetMetricResponse": {
@@ -948,7 +946,6 @@
948
946
  "metric",
949
947
  "value"
950
948
  ],
951
- "additionalProperties": false,
952
949
  "description": "The body parameters."
953
950
  },
954
951
  "TelemetryListResponse": {
@@ -956,13 +953,10 @@
956
953
  "properties": {
957
954
  "entities": {
958
955
  "type": "array",
959
- "items": false,
960
- "description": "The metrics.",
961
- "prefixItems": [
962
- {
963
- "$ref": "#/components/schemas/TelemetryMetric"
964
- }
965
- ]
956
+ "items": {
957
+ "$ref": "#/components/schemas/TelemetryMetric"
958
+ },
959
+ "description": "The metrics."
966
960
  },
967
961
  "cursor": {
968
962
  "type": "string",
@@ -972,10 +966,10 @@
972
966
  "required": [
973
967
  "entities"
974
968
  ],
975
- "additionalProperties": false,
976
969
  "description": "The response payload."
977
970
  },
978
971
  "TelemetryMetric": {
972
+ "description": "Interface describing a telemetry metric.",
979
973
  "type": "object",
980
974
  "properties": {
981
975
  "id": {
@@ -996,17 +990,20 @@
996
990
  "unit": {
997
991
  "type": "string",
998
992
  "description": "The unit the metric describes."
993
+ },
994
+ "maxHistory": {
995
+ "type": "number",
996
+ "description": "The maximum number of values to retain; oldest are trimmed on each addMetricValue call.\nUnlimited when absent."
999
997
  }
1000
998
  },
1001
999
  "required": [
1002
1000
  "id",
1003
1001
  "label",
1004
1002
  "type"
1005
- ],
1006
- "additionalProperties": false,
1007
- "description": "Interface describing a telemetry metric."
1003
+ ]
1008
1004
  },
1009
1005
  "TelemetryMetricValue": {
1006
+ "description": "Interface describing a telemetry metric value.",
1010
1007
  "type": "object",
1011
1008
  "properties": {
1012
1009
  "id": {
@@ -1031,9 +1028,7 @@
1031
1028
  "id",
1032
1029
  "ts",
1033
1030
  "value"
1034
- ],
1035
- "additionalProperties": false,
1036
- "description": "Interface describing a telemetry metric value."
1031
+ ]
1037
1032
  },
1038
1033
  "TelemetryUpdateMetricRequest": {
1039
1034
  "type": "object",
@@ -1054,7 +1049,6 @@
1054
1049
  "required": [
1055
1050
  "label"
1056
1051
  ],
1057
- "additionalProperties": false,
1058
1052
  "description": "The data to be used in the update."
1059
1053
  },
1060
1054
  "TelemetryValuesListResponse": {
@@ -1065,13 +1059,10 @@
1065
1059
  },
1066
1060
  "entities": {
1067
1061
  "type": "array",
1068
- "items": false,
1069
- "description": "The metric values.",
1070
- "prefixItems": [
1071
- {
1072
- "$ref": "#/components/schemas/TelemetryMetricValue"
1073
- }
1074
- ]
1062
+ "items": {
1063
+ "$ref": "#/components/schemas/TelemetryMetricValue"
1064
+ },
1065
+ "description": "The metric values."
1075
1066
  },
1076
1067
  "cursor": {
1077
1068
  "type": "string",
@@ -1082,7 +1073,6 @@
1082
1073
  "metric",
1083
1074
  "entities"
1084
1075
  ],
1085
- "additionalProperties": false,
1086
1076
  "description": "The response payload."
1087
1077
  }
1088
1078
  },
@@ -0,0 +1,98 @@
1
+ # Class: MetricsCollectorService
2
+
3
+ Collects metrics from registered producers at a fixed interval.
4
+
5
+ ## Implements
6
+
7
+ - `IMetricsCollectorComponent`
8
+
9
+ ## Constructors
10
+
11
+ ### Constructor
12
+
13
+ > **new MetricsCollectorService**(`options?`): `MetricsCollectorService`
14
+
15
+ Create a new instance of MetricsCollectorService.
16
+
17
+ #### Parameters
18
+
19
+ ##### options?
20
+
21
+ [`IMetricsCollectorServiceConstructorOptions`](../interfaces/IMetricsCollectorServiceConstructorOptions.md)
22
+
23
+ The options for the service.
24
+
25
+ #### Returns
26
+
27
+ `MetricsCollectorService`
28
+
29
+ ## Properties
30
+
31
+ ### CLASS\_NAME {#class_name}
32
+
33
+ > `readonly` `static` **CLASS\_NAME**: `string`
34
+
35
+ Runtime name for the class.
36
+
37
+ ## Methods
38
+
39
+ ### className() {#classname}
40
+
41
+ > **className**(): `string`
42
+
43
+ Returns the class name of the component.
44
+
45
+ #### Returns
46
+
47
+ `string`
48
+
49
+ The class name of the component.
50
+
51
+ #### Implementation of
52
+
53
+ `IMetricsCollectorComponent.className`
54
+
55
+ ***
56
+
57
+ ### start() {#start}
58
+
59
+ > **start**(): `Promise`\<`void`\>
60
+
61
+ Start the service: register all producers and begin the polling cycle.
62
+
63
+ #### Returns
64
+
65
+ `Promise`\<`void`\>
66
+
67
+ #### Implementation of
68
+
69
+ `IMetricsCollectorComponent.start`
70
+
71
+ ***
72
+
73
+ ### stop() {#stop}
74
+
75
+ > **stop**(): `Promise`\<`void`\>
76
+
77
+ Stop the service and cancel the pending timer.
78
+
79
+ #### Returns
80
+
81
+ `Promise`\<`void`\>
82
+
83
+ #### Implementation of
84
+
85
+ `IMetricsCollectorComponent.stop`
86
+
87
+ ***
88
+
89
+ ### tick() {#tick}
90
+
91
+ > **tick**(): `Promise`\<`void`\>
92
+
93
+ One collection cycle across all registered producers.
94
+ Public so tests can drive it deterministically.
95
+
96
+ #### Returns
97
+
98
+ `Promise`\<`void`\>
@@ -28,7 +28,7 @@ The options for the connector.
28
28
 
29
29
  ## Properties
30
30
 
31
- ### CLASS\_NAME
31
+ ### CLASS\_NAME {#class_name}
32
32
 
33
33
  > `readonly` `static` **CLASS\_NAME**: `string`
34
34
 
@@ -36,7 +36,25 @@ Runtime name for the class.
36
36
 
37
37
  ## Methods
38
38
 
39
- ### createMetric()
39
+ ### className() {#classname}
40
+
41
+ > **className**(): `string`
42
+
43
+ Returns the class name of the component.
44
+
45
+ #### Returns
46
+
47
+ `string`
48
+
49
+ The class name of the component.
50
+
51
+ #### Implementation of
52
+
53
+ `ITelemetryComponent.className`
54
+
55
+ ***
56
+
57
+ ### createMetric() {#createmetric}
40
58
 
41
59
  > **createMetric**(`metric`): `Promise`\<`void`\>
42
60
 
@@ -62,7 +80,7 @@ Nothing.
62
80
 
63
81
  ***
64
82
 
65
- ### getMetric()
83
+ ### getMetric() {#getmetric}
66
84
 
67
85
  > **getMetric**(`id`): `Promise`\<\{ `metric`: `ITelemetryMetric`; `value`: `ITelemetryMetricValue`; \}\>
68
86
 
@@ -88,7 +106,7 @@ The metric details and it's most recent value.
88
106
 
89
107
  ***
90
108
 
91
- ### updateMetric()
109
+ ### updateMetric() {#updatemetric}
92
110
 
93
111
  > **updateMetric**(`metric`): `Promise`\<`void`\>
94
112
 
@@ -114,7 +132,7 @@ Nothing.
114
132
 
115
133
  ***
116
134
 
117
- ### addMetricValue()
135
+ ### addMetricValue() {#addmetricvalue}
118
136
 
119
137
  > **addMetricValue**(`id`, `value`, `customData?`): `Promise`\<`string`\>
120
138
 
@@ -130,9 +148,9 @@ The id of the metric.
130
148
 
131
149
  ##### value
132
150
 
133
- The value for the add operation.
151
+ `number` \| `MetricCounterOperation`
134
152
 
135
- `number` | `"inc"` | `"dec"`
153
+ The value for the add operation.
136
154
 
137
155
  ##### customData?
138
156
 
@@ -150,7 +168,7 @@ The created metric value id.
150
168
 
151
169
  ***
152
170
 
153
- ### removeMetric()
171
+ ### removeMetric() {#removemetric}
154
172
 
155
173
  > **removeMetric**(`id`): `Promise`\<`void`\>
156
174
 
@@ -176,7 +194,7 @@ Nothing.
176
194
 
177
195
  ***
178
196
 
179
- ### query()
197
+ ### query() {#query}
180
198
 
181
199
  > **query**(`type?`, `cursor?`, `limit?`): `Promise`\<\{ `entities`: `ITelemetryMetric`[]; `cursor?`: `string`; \}\>
182
200
 
@@ -219,7 +237,7 @@ NotImplementedError if the implementation does not support retrieval.
219
237
 
220
238
  ***
221
239
 
222
- ### queryValues()
240
+ ### queryValues() {#queryvalues}
223
241
 
224
242
  > **queryValues**(`id`, `timeStart?`, `timeEnd?`, `cursor?`, `limit?`): `Promise`\<\{ `metric`: `ITelemetryMetric`; `entities`: `ITelemetryMetricValue`[]; `cursor?`: `string`; \}\>
225
243
 
@@ -2,10 +2,13 @@
2
2
 
3
3
  ## Classes
4
4
 
5
+ - [MetricsCollectorService](classes/MetricsCollectorService.md)
5
6
  - [TelemetryService](classes/TelemetryService.md)
6
7
 
7
8
  ## Interfaces
8
9
 
10
+ - [IMetricsCollectorServiceConfig](interfaces/IMetricsCollectorServiceConfig.md)
11
+ - [IMetricsCollectorServiceConstructorOptions](interfaces/IMetricsCollectorServiceConstructorOptions.md)
9
12
  - [ITelemetryServiceConstructorOptions](interfaces/ITelemetryServiceConstructorOptions.md)
10
13
 
11
14
  ## Variables
@@ -0,0 +1,17 @@
1
+ # Interface: IMetricsCollectorServiceConfig
2
+
3
+ The options for the metrics collector service config.
4
+
5
+ ## Properties
6
+
7
+ ### intervalMs? {#intervalms}
8
+
9
+ > `optional` **intervalMs?**: `number`
10
+
11
+ Polling interval in milliseconds.
12
+
13
+ #### Default
14
+
15
+ ```ts
16
+ 60000
17
+ ```
@@ -0,0 +1,25 @@
1
+ # Interface: IMetricsCollectorServiceConstructorOptions
2
+
3
+ The options for the metrics collector service constructor.
4
+
5
+ ## Properties
6
+
7
+ ### loggingComponentType? {#loggingcomponenttype}
8
+
9
+ > `optional` **loggingComponentType?**: `string`
10
+
11
+ The type of the logging component to use.
12
+
13
+ #### Default
14
+
15
+ ```ts
16
+ logging
17
+ ```
18
+
19
+ ***
20
+
21
+ ### config? {#config}
22
+
23
+ > `optional` **config?**: [`IMetricsCollectorServiceConfig`](IMetricsCollectorServiceConfig.md)
24
+
25
+ The configuration options for the metrics collector service.
@@ -4,9 +4,9 @@ The options for the telemetry service constructor.
4
4
 
5
5
  ## Properties
6
6
 
7
- ### telemetryConnectorType?
7
+ ### telemetryConnectorType? {#telemetryconnectortype}
8
8
 
9
- > `optional` **telemetryConnectorType**: `string`
9
+ > `optional` **telemetryConnectorType?**: `string`
10
10
 
11
11
  The type of the telemetry connector to use.
12
12
 
package/locales/en.json CHANGED
@@ -1 +1,7 @@
1
- {}
1
+ {
2
+ "error": {
3
+ "metricsCollectorService": {
4
+ "producerCollectionFailed": "Failed to collect metrics from producer \"{producer}\""
5
+ }
6
+ }
7
+ }
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@twin.org/telemetry-service",
3
- "version": "0.0.2-next.3",
4
- "description": "Telemetry contract implementation and REST endpoint definitions",
3
+ "version": "0.0.3-next.10",
4
+ "description": "Telemetry service implementation with REST entry points.",
5
5
  "repository": {
6
6
  "type": "git",
7
- "url": "git+https://github.com/twinfoundation/telemetry.git",
7
+ "url": "git+https://github.com/iotaledger/telemetry.git",
8
8
  "directory": "packages/telemetry-service"
9
9
  },
10
10
  "author": "martyn.janes@iota.org",
@@ -17,24 +17,23 @@
17
17
  "@twin.org/api-models": "next",
18
18
  "@twin.org/core": "next",
19
19
  "@twin.org/entity": "next",
20
+ "@twin.org/logging-models": "next",
20
21
  "@twin.org/nameof": "next",
21
- "@twin.org/telemetry-models": "0.0.2-next.3",
22
+ "@twin.org/telemetry-models": "0.0.3-next.10",
22
23
  "@twin.org/web": "next"
23
24
  },
24
- "main": "./dist/cjs/index.cjs",
25
- "module": "./dist/esm/index.mjs",
25
+ "main": "./dist/es/index.js",
26
26
  "types": "./dist/types/index.d.ts",
27
27
  "exports": {
28
28
  ".": {
29
29
  "types": "./dist/types/index.d.ts",
30
- "require": "./dist/cjs/index.cjs",
31
- "import": "./dist/esm/index.mjs"
30
+ "import": "./dist/es/index.js",
31
+ "default": "./dist/es/index.js"
32
32
  },
33
33
  "./locales/*.json": "./locales/*.json"
34
34
  },
35
35
  "files": [
36
- "dist/cjs",
37
- "dist/esm",
36
+ "dist/es",
38
37
  "dist/types",
39
38
  "locales",
40
39
  "docs"
@@ -51,7 +50,7 @@
51
50
  "business-logic"
52
51
  ],
53
52
  "bugs": {
54
- "url": "git+https://github.com/twinfoundation/telemetry/issues"
53
+ "url": "git+https://github.com/iotaledger/telemetry/issues"
55
54
  },
56
55
  "homepage": "https://twindev.org"
57
56
  }