@theotherwillembotha/node-red-plugincore 0.0.55 → 0.2.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.
- package/README.md +616 -217
- package/build/GenerateNodes.js +3 -6
- package/build/Nodes.html +3 -1502
- package/build/Nodes.js +5 -15
- package/build/Plugins.html +227 -0
- package/build/Plugins.js +18 -9
- package/build/core/NodeConstructor.d.ts +10 -16
- package/build/core/NodeConstructor.d.ts.map +1 -1
- package/build/core/NodeConstructor.js +112 -156
- package/build/core/NodeGenerator.d.ts.map +1 -1
- package/build/core/NodeGenerator.js +79 -29
- package/build/core/NodeManagerRuntime.d.ts +44 -0
- package/build/core/NodeManagerRuntime.d.ts.map +1 -0
- package/build/core/NodeManagerRuntime.js +140 -0
- package/build/core/Utils.d.ts.map +1 -1
- package/build/core/logger/service/LoggerService.d.ts +6 -5
- package/build/core/logger/service/LoggerService.d.ts.map +1 -1
- package/build/core/logger/service/LoggerService.js +51 -20
- package/build/core/logger/template/LoggerTemplate.d.ts.map +1 -1
- package/build/core/metrics/MetricsDecorator.d.ts +1 -2
- package/build/core/metrics/MetricsDecorator.d.ts.map +1 -1
- package/build/core/metrics/MetricsDecorator.js +89 -116
- package/build/core/metrics/node/CounterMetricConfigNode.d.ts.map +1 -1
- package/build/core/metrics/node/CounterMetricConfigNode.js +4 -5
- package/build/core/metrics/node/GaugeMetricConfigNode.d.ts.map +1 -1
- package/build/core/metrics/node/GaugeMetricConfigNode.js +5 -6
- package/build/core/metrics/node/MetricsConfigNode.d.ts +19 -9
- package/build/core/metrics/node/MetricsConfigNode.d.ts.map +1 -1
- package/build/core/metrics/node/MetricsConfigNode.js +14 -45
- package/build/core/metrics/node/TimerMetricConfigNode.d.ts.map +1 -1
- package/build/core/metrics/node/TimerMetricConfigNode.js +11 -17
- package/build/core/metrics/service/MetricsService.d.ts +110 -114
- package/build/core/metrics/service/MetricsService.d.ts.map +1 -1
- package/build/core/metrics/service/MetricsService.js +122 -339
- package/build/core/metrics/template/CounterMetricTemplate.d.ts.map +1 -1
- package/build/core/metrics/template/GaugeMetricTemplate.d.ts.map +1 -1
- package/build/core/metrics/template/MetricsTemplate.d.ts.map +1 -1
- package/build/core/metrics/template/MetricsTemplate.js +1 -2
- package/build/core/metrics/template/TimerMetricTemplate.d.ts.map +1 -1
- package/build/core/other/node/DelegatedConfigReferenceNode.d.ts +1 -1
- package/build/core/other/node/DelegatedConfigReferenceNode.d.ts.map +1 -1
- package/build/core/other/node/DelegatedConfigReferenceNode.js +1 -1
- package/build/core/other/service/InputService.d.ts.map +1 -1
- package/build/core/other/service/SettingsService.d.ts +1 -2
- package/build/core/other/service/SettingsService.d.ts.map +1 -1
- package/build/core/other/service/SettingsService.js +19 -5
- package/build/core/other/template/BasicTemplate.d.ts.map +1 -1
- package/build/core/other/template/SettingsTemplate.d.ts.map +1 -1
- package/build/core/state/node/InternalStateConfigNode.d.ts +16 -0
- package/build/core/state/node/InternalStateConfigNode.d.ts.map +1 -0
- package/build/core/state/node/InternalStateConfigNode.js +89 -0
- package/build/core/state/node/StateConfigNode.d.ts +24 -0
- package/build/core/state/node/StateConfigNode.d.ts.map +1 -0
- package/build/core/state/node/StateConfigNode.js +22 -0
- package/build/core/state/service/StateService.d.ts +34 -0
- package/build/core/state/service/StateService.d.ts.map +1 -0
- package/build/core/state/service/StateService.js +201 -0
- package/build/core/state/template/StateTemplate.d.ts +8 -0
- package/build/core/state/template/StateTemplate.d.ts.map +1 -0
- package/build/core/state/template/StateTemplate.js +11 -0
- package/build/core/tagging/ServiceDescriptionDecorator.d.ts +10 -0
- package/build/core/tagging/ServiceDescriptionDecorator.d.ts.map +1 -0
- package/build/core/tagging/ServiceDescriptionDecorator.js +10 -0
- package/build/core/tagging/service/NodeTypeService.d.ts +1 -2
- package/build/core/tagging/service/NodeTypeService.d.ts.map +1 -1
- package/build/core/tagging/service/NodeTypeService.js +19 -5
- package/build/core/ui/template/ScriptEditorTemplate.d.ts.map +1 -1
- package/build/core/ui/template/UIHelperTemplate.d.ts.map +1 -1
- package/build/core/webhook/WebhookDecorator.d.ts.map +1 -1
- package/build/core/webhook/WebhookDecorator.js +43 -6
- package/build/core/webhook/node/WebhookServerConfigNode.d.ts.map +1 -1
- package/build/core/webhook/service/ReverseProxyTypeService.d.ts +1 -0
- package/build/core/webhook/service/ReverseProxyTypeService.d.ts.map +1 -1
- package/build/core/webhook/service/WebhookServerService.d.ts +3 -4
- package/build/core/webhook/service/WebhookServerService.d.ts.map +1 -1
- package/build/core/webhook/service/WebhookServerService.js +48 -23
- package/build/core/webhook/template/WebhookTemplate.d.ts.map +1 -1
- package/build/index.d.ts +5 -2
- package/build/index.d.ts.map +1 -1
- package/build/index.js +6 -2
- package/build/runtime/NodeManagerRuntime.js +140 -0
- package/documentation/CounterMetricConfigNode.png +0 -0
- package/documentation/GaugeMetricConfigNode.png +0 -0
- package/documentation/LoggerTemplate.png +0 -0
- package/documentation/MetricsTemplate.png +0 -0
- package/documentation/StateTemplate.png +0 -0
- package/documentation/TimerMetricConfigNode_histogram.png +0 -0
- package/documentation/TimerMetricConfigNode_summary.png +0 -0
- package/documentation/WebhookServerConfigNode.png +0 -0
- package/documentation/WebhookTemplate.png +0 -0
- package/package.json +5 -12
- package/src/GenerateNodes.ts +7 -11
- package/src/core/NodeConstructor.ts +134 -197
- package/src/core/NodeGenerator.ts +88 -34
- package/src/core/NodeManagerRuntime.ts +179 -0
- package/src/core/logger/service/LoggerService.ts +39 -26
- package/src/core/logger/template/LoggerTemplate.html +13 -8
- package/src/core/metrics/MetricsDecorator.ts +140 -168
- package/src/core/metrics/node/CounterMetricConfigNode.ts +20 -20
- package/src/core/metrics/node/GaugeMetricConfigNode.ts +24 -25
- package/src/core/metrics/node/MetricsConfigNode.ts +29 -48
- package/src/core/metrics/node/TimerMetricConfigNode.html +2 -2
- package/src/core/metrics/node/TimerMetricConfigNode.ts +50 -59
- package/src/core/metrics/service/MetricsService.ts +214 -489
- package/src/core/metrics/template/CounterMetricTemplate.html +0 -1
- package/src/core/metrics/template/GaugeMetricTemplate.html +1 -1
- package/src/core/metrics/template/MetricsTemplate.html +132 -13
- package/src/core/metrics/template/MetricsTemplate.ts +3 -4
- package/src/core/other/node/DelegatedConfigReferenceNode.ts +1 -1
- package/src/core/other/service/SettingsService.ts +6 -10
- package/src/core/other/template/BasicTemplate.html +5 -2
- package/src/core/state/node/InternalStateConfigNode.html +77 -0
- package/src/core/state/node/InternalStateConfigNode.ts +102 -0
- package/src/core/state/node/StateConfigNode.ts +29 -0
- package/src/core/state/service/StateService.ts +180 -0
- package/src/core/state/template/StateTemplate.html +244 -0
- package/src/core/state/template/StateTemplate.ts +17 -0
- package/src/core/tagging/ServiceDescriptionDecorator.ts +23 -0
- package/src/core/tagging/service/NodeTypeService.ts +6 -11
- package/src/core/ui/template/UIHelperTemplate.html +41 -26
- package/src/core/webhook/WebhookDecorator.ts +53 -10
- package/src/core/webhook/service/ReverseProxyTypeService.ts +1 -0
- package/src/core/webhook/service/WebhookServerService.ts +39 -28
- package/src/core/webhook/template/WebhookTemplate.html +29 -36
- package/src/index.ts +7 -2
- package/build/core/logger/node/ConsoleLoggerConfigNode.d.ts +0 -20
- package/build/core/logger/node/ConsoleLoggerConfigNode.d.ts.map +0 -1
- package/build/core/logger/node/ConsoleLoggerConfigNode.html +0 -90
- package/build/core/logger/node/ConsoleLoggerConfigNode.js +0 -62
- package/build/core/logger/node/RestLoggerConfigNode.d.ts +0 -40
- package/build/core/logger/node/RestLoggerConfigNode.d.ts.map +0 -1
- package/build/core/logger/node/RestLoggerConfigNode.html +0 -183
- package/build/core/logger/node/RestLoggerConfigNode.js +0 -128
- package/build/core/logger/template/LoggerTemplate.html +0 -331
- package/build/core/metrics/node/CounterMetricConfigNode.html +0 -48
- package/build/core/metrics/node/GaugeMetricConfigNode.html +0 -48
- package/build/core/metrics/node/MetricsConfigNode.html +0 -21
- package/build/core/metrics/node/TimerMetricConfigNode.html +0 -190
- package/build/core/metrics/template/CounterMetricTemplate.html +0 -40
- package/build/core/metrics/template/GaugeMetricTemplate.html +0 -39
- package/build/core/metrics/template/MetricsTemplate.html +0 -54
- package/build/core/metrics/template/TimerMetricTemplate.html +0 -39
- package/build/core/other/node/DelegatedConfigReferenceNode.html +0 -1
- package/build/core/other/template/BasicTemplate.html +0 -76
- package/build/core/other/template/SettingsTemplate.html +0 -128
- package/build/core/ui/template/ScriptEditorTemplate.html +0 -50
- package/build/core/ui/template/UIHelperTemplate.html +0 -229
- package/build/core/webhook/node/WebhookServerConfigNode.html +0 -61
- package/build/core/webhook/template/WebhookTemplate.html +0 -442
- package/documentation/ConsoleLoggerConfigNode.png +0 -0
- package/documentation/MetricsConfigNode.png +0 -0
- package/documentation/RestLoggerConfigNode.png +0 -0
- package/documentation/TimerMetricConfigNode.png +0 -0
- package/documentation/WebhookNode.png +0 -0
- package/src/core/logger/node/ConsoleLoggerConfigNode.html +0 -90
- package/src/core/logger/node/ConsoleLoggerConfigNode.ts +0 -71
- package/src/core/logger/node/RestLoggerConfigNode.html +0 -183
- package/src/core/logger/node/RestLoggerConfigNode.ts +0 -170
|
@@ -13,15 +13,14 @@ exports.GaugeMetricConfigNode = void 0;
|
|
|
13
13
|
const NodeConstructor_1 = require("../../NodeConstructor");
|
|
14
14
|
const MetricsService_1 = require("../service/MetricsService");
|
|
15
15
|
const NodeGenerator_1 = require("../../NodeGenerator");
|
|
16
|
-
const MetricsConfigNode_1 = require("./MetricsConfigNode");
|
|
17
16
|
const MetricsTemplate_1 = require("../template/MetricsTemplate");
|
|
18
17
|
const NodeDescriptionDecorator_1 = require("../../tagging/NodeDescriptionDecorator");
|
|
19
18
|
let GaugeMetricConfigNode = class GaugeMetricConfigNode extends NodeConstructor_1.ConfigNode {
|
|
20
19
|
constructor(node, config) {
|
|
21
20
|
super(node, config);
|
|
22
|
-
|
|
23
|
-
this._metrics =
|
|
24
|
-
|
|
21
|
+
const refNode = config.metricsEnabled && config.metricsReference ? NodeConstructor_1.NodeManager.RED.nodes.getNode(config.metricsReference) : null;
|
|
22
|
+
this._metrics = refNode ? refNode.node().metrics() : new MetricsService_1.DoNothingMetricsContainer();
|
|
23
|
+
const gaugeConfig = {
|
|
25
24
|
metricname: config.name,
|
|
26
25
|
metricdescription: config.description,
|
|
27
26
|
node: {
|
|
@@ -33,7 +32,7 @@ let GaugeMetricConfigNode = class GaugeMetricConfigNode extends NodeConstructor_
|
|
|
33
32
|
};
|
|
34
33
|
this._gauge = this._metrics.gauge(gaugeConfig);
|
|
35
34
|
if (config.reset) {
|
|
36
|
-
|
|
35
|
+
this._gauge.reset();
|
|
37
36
|
}
|
|
38
37
|
}
|
|
39
38
|
metrics() {
|
|
@@ -54,7 +53,7 @@ exports.GaugeMetricConfigNode = GaugeMetricConfigNode = __decorate([
|
|
|
54
53
|
templates: [
|
|
55
54
|
{ template: MetricsTemplate_1.MetricsTemplate, config: {} }
|
|
56
55
|
],
|
|
57
|
-
dependencies: [
|
|
56
|
+
dependencies: [MetricsService_1.MetricsService],
|
|
58
57
|
tags: ["Core", "Metric"]
|
|
59
58
|
}),
|
|
60
59
|
__metadata("design:paramtypes", [Object, Object])
|
|
@@ -1,14 +1,24 @@
|
|
|
1
1
|
import { Node } from "node-red";
|
|
2
2
|
import { ConfigNode, ConfigNodeConfig } from "../../NodeConstructor";
|
|
3
|
-
import { MetricsContainer } from "../service/MetricsService";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
3
|
+
import { MetricsContainer, MetricsConfig } from "../service/MetricsService";
|
|
4
|
+
/**
|
|
5
|
+
* Abstract base for all metrics provider config nodes.
|
|
6
|
+
*
|
|
7
|
+
* Concrete implementations (e.g. PrometheusMetricsConfigNode) extend this class,
|
|
8
|
+
* decorate with @NodeDescription + tags: ["MetricsProvider"], and implement
|
|
9
|
+
* createContainer() to return their backend-specific MetricsContainer.
|
|
10
|
+
*
|
|
11
|
+
* This class is intentionally NOT decorated with @NodeDescription - it is never
|
|
12
|
+
* registered as a Node-RED node type directly. Only concrete subclasses are registered.
|
|
13
|
+
*/
|
|
14
|
+
export declare abstract class MetricsConfigNode extends ConfigNode<ConfigNodeConfig> {
|
|
15
|
+
constructor(node: Node, config: ConfigNodeConfig);
|
|
16
|
+
/**
|
|
17
|
+
* Called once on construction to create the backend MetricsContainer.
|
|
18
|
+
* MetricsService preserves the container across redeploys if the config
|
|
19
|
+
* has not changed, so metric state (counters, gauges) is not reset.
|
|
20
|
+
*/
|
|
21
|
+
protected abstract createContainer(config: MetricsConfig): MetricsContainer;
|
|
10
22
|
metrics(): MetricsContainer;
|
|
11
|
-
private onWebhookRequest;
|
|
12
23
|
}
|
|
13
|
-
export {};
|
|
14
24
|
//# sourceMappingURL=MetricsConfigNode.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetricsConfigNode.d.ts","sourceRoot":"","sources":["../../../../src/core/metrics/node/MetricsConfigNode.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MetricsConfigNode.d.ts","sourceRoot":"","sources":["../../../../src/core/metrics/node/MetricsConfigNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACpE,OAAO,EAAE,gBAAgB,EAAkB,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAE3F;;;;;;;;;GASG;AACH,8BAAsB,iBAAkB,SAAQ,UAAU,CAAC,gBAAgB,CAAC;IAExE,YAAY,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAO/C;IAED;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE,aAAa,GAAG,gBAAgB,CAAC;IAErE,OAAO,IAAI,gBAAgB,CAEjC;CACJ"}
|
|
@@ -1,56 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
};
|
|
8
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
-
};
|
|
11
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.MetricsConfigNode = void 0;
|
|
13
4
|
const NodeConstructor_1 = require("../../NodeConstructor");
|
|
14
5
|
const MetricsService_1 = require("../service/MetricsService");
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
6
|
+
/**
|
|
7
|
+
* Abstract base for all metrics provider config nodes.
|
|
8
|
+
*
|
|
9
|
+
* Concrete implementations (e.g. PrometheusMetricsConfigNode) extend this class,
|
|
10
|
+
* decorate with @NodeDescription + tags: ["MetricsProvider"], and implement
|
|
11
|
+
* createContainer() to return their backend-specific MetricsContainer.
|
|
12
|
+
*
|
|
13
|
+
* This class is intentionally NOT decorated with @NodeDescription - it is never
|
|
14
|
+
* registered as a Node-RED node type directly. Only concrete subclasses are registered.
|
|
15
|
+
*/
|
|
16
|
+
class MetricsConfigNode extends NodeConstructor_1.ConfigNode {
|
|
22
17
|
constructor(node, config) {
|
|
23
18
|
super(node, config);
|
|
24
|
-
|
|
25
|
-
this._metrics = MetricsService_1.MetricsService.get({ metricsEnabled: false, metricsReference: this.id() });
|
|
19
|
+
MetricsService_1.MetricsService.register(config.id, { id: config.id }, () => this.createContainer({ id: config.id }));
|
|
26
20
|
}
|
|
27
21
|
metrics() {
|
|
28
|
-
return this.
|
|
22
|
+
return MetricsService_1.MetricsService.get({ metricsEnabled: true, metricsReference: this.id() });
|
|
29
23
|
}
|
|
30
|
-
|
|
31
|
-
response.set('Content-Type', prom_client_1.register.contentType);
|
|
32
|
-
this._metrics.registry().metrics().then((data) => response.status(200).send(data));
|
|
33
|
-
}
|
|
34
|
-
};
|
|
24
|
+
}
|
|
35
25
|
exports.MetricsConfigNode = MetricsConfigNode;
|
|
36
|
-
__decorate([
|
|
37
|
-
(0, WebhookDecorator_1.Webhook)({ name: "MetricsConfigNode", methods: [WebhookServerService_1.EndpointMethodType.GET] }),
|
|
38
|
-
__metadata("design:type", Function),
|
|
39
|
-
__metadata("design:paramtypes", [Object, Object]),
|
|
40
|
-
__metadata("design:returntype", void 0)
|
|
41
|
-
], MetricsConfigNode.prototype, "onWebhookRequest", null);
|
|
42
|
-
exports.MetricsConfigNode = MetricsConfigNode = __decorate([
|
|
43
|
-
(0, NodeDescriptionDecorator_1.NodeDescription)({
|
|
44
|
-
id: "MetricsConfigNode",
|
|
45
|
-
name: "Metrics Config Node",
|
|
46
|
-
group: "config",
|
|
47
|
-
sourceFile: NodeGenerator_1.SourceUtility.getSourcePath("/build/", "/src/") + "MetricsConfigNode.html",
|
|
48
|
-
package: "@theotherwillembotha/node-red-plugincore",
|
|
49
|
-
templates: [
|
|
50
|
-
{ template: WebhookTemplate_1.WebhookTemplate, config: {} }
|
|
51
|
-
],
|
|
52
|
-
dependencies: [MetricsService_1.MetricsService],
|
|
53
|
-
tags: []
|
|
54
|
-
}),
|
|
55
|
-
__metadata("design:paramtypes", [Object, Object])
|
|
56
|
-
], MetricsConfigNode);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimerMetricConfigNode.d.ts","sourceRoot":"","sources":["../../../../src/core/metrics/node/TimerMetricConfigNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"TimerMetricConfigNode.d.ts","sourceRoot":"","sources":["../../../../src/core/metrics/node/TimerMetricConfigNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAe,MAAM,uBAAuB,CAAA;AACjF,OAAO,EAAE,gBAAgB,EAAkB,UAAU,EAAE,eAAe,EAA8C,cAAc,EAAE,aAAa,EAA4B,MAAM,2BAA2B,CAAA;AAE9M,OAAO,EAAmB,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAG1D,UAAU,2BAA4B,SAAQ,gBAAgB,EAAE,qBAAqB;IACjF,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,mBAAmB,CAAC;IAEhC,UAAU,EAAE,UAAU,CAAC;IACvB,2BAA2B,EAAE,MAAM,CAAC;IACpC,uBAAuB,EAAE,MAAM,CAAC;IAChC,0BAA0B,EAAE,MAAM,CAAC;IACnC,uBAAuB,EAAE,MAAM,CAAC;IAChC,4BAA4B,EAAE,MAAM,CAAC;IACrC,6BAA6B,EAAE,MAAM,CAAC;IACtC,4BAA4B,EAAE,MAAM,CAAC;IAErC,cAAc,EAAE,cAAc,CAAC;IAC/B,+BAA+B,EAAE,MAAM,CAAC;CAC3C;AAED,qBAYa,qBAAsB,SAAQ,UAAU,CAAC,2BAA2B,CAAC;IAC9E,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,MAAM,CAAmC;IAEjD,YAAY,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,2BAA2B,EAyD1D;IAEM,OAAO,IAAI,gBAAgB,CAEjC;IAEM,KAAK,IAAI,eAAe,GAAG,aAAa,CAE9C;CACJ"}
|
|
@@ -13,40 +13,34 @@ exports.TimerMetricConfigNode = void 0;
|
|
|
13
13
|
const NodeConstructor_1 = require("../../NodeConstructor");
|
|
14
14
|
const MetricsService_1 = require("../service/MetricsService");
|
|
15
15
|
const NodeGenerator_1 = require("../../NodeGenerator");
|
|
16
|
-
const MetricsConfigNode_1 = require("./MetricsConfigNode");
|
|
17
16
|
const MetricsTemplate_1 = require("../template/MetricsTemplate");
|
|
18
17
|
const MetricsDecorator_1 = require("../MetricsDecorator");
|
|
19
18
|
const NodeDescriptionDecorator_1 = require("../../tagging/NodeDescriptionDecorator");
|
|
20
19
|
let TimerMetricConfigNode = class TimerMetricConfigNode extends NodeConstructor_1.ConfigNode {
|
|
21
20
|
constructor(node, config) {
|
|
22
21
|
super(node, config);
|
|
23
|
-
|
|
24
|
-
this._metrics =
|
|
25
|
-
|
|
22
|
+
const refNode = config.metricsEnabled && config.metricsReference ? NodeConstructor_1.NodeManager.RED.nodes.getNode(config.metricsReference) : null;
|
|
23
|
+
this._metrics = refNode ? refNode.node().metrics() : new MetricsService_1.DoNothingMetricsContainer();
|
|
24
|
+
const bucketConfig = {};
|
|
26
25
|
switch (config.buckettype) {
|
|
27
|
-
case MetricsService_1.BucketType.
|
|
28
|
-
// do nothing
|
|
29
|
-
break;
|
|
30
|
-
}
|
|
31
|
-
case MetricsService_1.BucketType.manual: {
|
|
26
|
+
case MetricsService_1.BucketType.manual:
|
|
32
27
|
bucketConfig.intervals = config.buckettype_manual_intervals.split(",").map(i => Number.parseFloat(i.trim()));
|
|
33
28
|
break;
|
|
34
|
-
|
|
35
|
-
case MetricsService_1.BucketType.linear: {
|
|
29
|
+
case MetricsService_1.BucketType.linear:
|
|
36
30
|
bucketConfig.start = config.buckettype_linear_start;
|
|
37
31
|
bucketConfig.interval = config.buckettype_linear_interval;
|
|
38
32
|
bucketConfig.count = config.buckettype_linear_count;
|
|
39
33
|
break;
|
|
40
|
-
|
|
41
|
-
case MetricsService_1.BucketType.exponential: {
|
|
34
|
+
case MetricsService_1.BucketType.exponential:
|
|
42
35
|
bucketConfig.start = config.buckettype_exponential_start;
|
|
43
36
|
bucketConfig.factor = config.buckettype_exponential_factor;
|
|
44
37
|
bucketConfig.count = config.buckettype_exponential_count;
|
|
45
38
|
break;
|
|
46
|
-
|
|
39
|
+
default:
|
|
40
|
+
break;
|
|
47
41
|
}
|
|
48
42
|
if (config.metricType === MetricsDecorator_1.MetricCollectorType.histogram) {
|
|
49
|
-
|
|
43
|
+
const timerConfig = {
|
|
50
44
|
node: {
|
|
51
45
|
id: this.id(),
|
|
52
46
|
name: this.name(),
|
|
@@ -61,7 +55,7 @@ let TimerMetricConfigNode = class TimerMetricConfigNode extends NodeConstructor_
|
|
|
61
55
|
this._timer = this._metrics.histogram(timerConfig);
|
|
62
56
|
}
|
|
63
57
|
if (config.metricType === MetricsDecorator_1.MetricCollectorType.summary) {
|
|
64
|
-
|
|
58
|
+
const timerConfig = {
|
|
65
59
|
node: {
|
|
66
60
|
id: this.id(),
|
|
67
61
|
name: this.name(),
|
|
@@ -94,7 +88,7 @@ exports.TimerMetricConfigNode = TimerMetricConfigNode = __decorate([
|
|
|
94
88
|
templates: [
|
|
95
89
|
{ template: MetricsTemplate_1.MetricsTemplate, config: { isConfigNode: true } }
|
|
96
90
|
],
|
|
97
|
-
dependencies: [
|
|
91
|
+
dependencies: [MetricsService_1.MetricsService],
|
|
98
92
|
tags: ["Core", "Metric"]
|
|
99
93
|
}),
|
|
100
94
|
__metadata("design:paramtypes", [Object, Object])
|
|
@@ -1,6 +1,36 @@
|
|
|
1
|
-
import { BaseNode, BaseNodeConfig, BaseService, FlowDeployment
|
|
2
|
-
import client, { Registry } from "prom-client";
|
|
1
|
+
import { BaseNode, BaseNodeConfig, BaseService, FlowDeployment } from "../../NodeConstructor";
|
|
3
2
|
import { NodeAPI, NodeAPISettingsWithData } from "node-red";
|
|
3
|
+
export declare enum MetricCapability {
|
|
4
|
+
Counter = "Counter",
|
|
5
|
+
Gauge = "Gauge",
|
|
6
|
+
Histogram = "Histogram",
|
|
7
|
+
Summary = "Summary"
|
|
8
|
+
}
|
|
9
|
+
export type MetricsReference = {
|
|
10
|
+
metricsEnabled: boolean;
|
|
11
|
+
metricsReference: string;
|
|
12
|
+
};
|
|
13
|
+
export interface MetricsConfig {
|
|
14
|
+
id: string;
|
|
15
|
+
}
|
|
16
|
+
export interface NodeReference {
|
|
17
|
+
name: string;
|
|
18
|
+
type: string;
|
|
19
|
+
flow: string;
|
|
20
|
+
id: string;
|
|
21
|
+
}
|
|
22
|
+
export interface MetricConfig {
|
|
23
|
+
node: NodeReference;
|
|
24
|
+
metricname: string;
|
|
25
|
+
metricdescription?: string;
|
|
26
|
+
}
|
|
27
|
+
interface Labels {
|
|
28
|
+
flow: string;
|
|
29
|
+
type: string;
|
|
30
|
+
name: string;
|
|
31
|
+
id: string;
|
|
32
|
+
metric: string;
|
|
33
|
+
}
|
|
4
34
|
export declare abstract class Metric<ConfigType extends MetricConfig> {
|
|
5
35
|
private _config;
|
|
6
36
|
private _labels;
|
|
@@ -8,53 +38,59 @@ export declare abstract class Metric<ConfigType extends MetricConfig> {
|
|
|
8
38
|
labels(): Labels;
|
|
9
39
|
config(): ConfigType;
|
|
10
40
|
}
|
|
11
|
-
export type MetricsReference = {
|
|
12
|
-
metricsEnabled: boolean;
|
|
13
|
-
metricsReference: string;
|
|
14
|
-
};
|
|
15
|
-
type CounterCallback = {
|
|
16
|
-
(state: CounterState): void;
|
|
17
|
-
};
|
|
18
41
|
export type CounterState = {
|
|
19
42
|
value: number;
|
|
20
43
|
labels: {};
|
|
21
44
|
};
|
|
45
|
+
export type CounterCallback = (state: CounterState) => void;
|
|
22
46
|
export interface CounterMetricConfig extends MetricConfig {
|
|
23
47
|
}
|
|
24
|
-
export
|
|
25
|
-
|
|
26
|
-
private internalCounter;
|
|
27
|
-
private subscribers;
|
|
28
|
-
constructor(id: string, config: CounterMetricConfig, registry: client.Registry);
|
|
29
|
-
inc(): CounterMetric;
|
|
30
|
-
get(): Promise<CounterState>;
|
|
48
|
+
export interface CounterMetric {
|
|
49
|
+
inc(): this;
|
|
31
50
|
reset(): void;
|
|
51
|
+
get(): Promise<CounterState>;
|
|
32
52
|
subscribe(node: BaseNode<BaseNodeConfig>, callback: CounterCallback): void;
|
|
33
53
|
unsubscribe(node: BaseNode<BaseNodeConfig>): void;
|
|
34
54
|
}
|
|
35
|
-
|
|
36
|
-
(
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
55
|
+
export declare class DoNothingCounterMetric implements CounterMetric {
|
|
56
|
+
inc(): this;
|
|
57
|
+
reset(): void;
|
|
58
|
+
get(): Promise<CounterState>;
|
|
59
|
+
subscribe(_node: BaseNode<BaseNodeConfig>, _callback: CounterCallback): void;
|
|
60
|
+
unsubscribe(_node: BaseNode<BaseNodeConfig>): void;
|
|
40
61
|
}
|
|
62
|
+
export type GaugeState = {
|
|
63
|
+
value: number;
|
|
64
|
+
};
|
|
65
|
+
export type GaugeCallback = (state: GaugeState) => void;
|
|
41
66
|
export interface GaugeMetricConfig extends MetricConfig {
|
|
42
67
|
}
|
|
43
|
-
export
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
private subscribers;
|
|
47
|
-
constructor(id: string, config: GaugeMetricConfig, registry: client.Registry);
|
|
48
|
-
inc(): GaugeMetric;
|
|
49
|
-
dec(): GaugeMetric;
|
|
50
|
-
get(): GaugeState;
|
|
68
|
+
export interface GaugeMetric {
|
|
69
|
+
inc(): this;
|
|
70
|
+
dec(): this;
|
|
51
71
|
reset(): void;
|
|
72
|
+
get(): GaugeState;
|
|
52
73
|
subscribe(node: BaseNode<BaseNodeConfig>, callback: GaugeCallback): void;
|
|
53
74
|
unsubscribe(node: BaseNode<BaseNodeConfig>): void;
|
|
54
75
|
}
|
|
55
|
-
|
|
56
|
-
(
|
|
76
|
+
export declare class DoNothingGaugeMetric implements GaugeMetric {
|
|
77
|
+
inc(): this;
|
|
78
|
+
dec(): this;
|
|
79
|
+
reset(): void;
|
|
80
|
+
get(): GaugeState;
|
|
81
|
+
subscribe(_node: BaseNode<BaseNodeConfig>, _callback: GaugeCallback): void;
|
|
82
|
+
unsubscribe(_node: BaseNode<BaseNodeConfig>): void;
|
|
83
|
+
}
|
|
84
|
+
export type HistogramState = {
|
|
85
|
+
average(): number | undefined;
|
|
57
86
|
};
|
|
87
|
+
export type HistogramCallback = (state: HistogramState) => void;
|
|
88
|
+
export declare enum BucketType {
|
|
89
|
+
default = "default",
|
|
90
|
+
manual = "manual",
|
|
91
|
+
linear = "linear",
|
|
92
|
+
exponential = "exponential"
|
|
93
|
+
}
|
|
58
94
|
export interface DefaultBucketConfig {
|
|
59
95
|
}
|
|
60
96
|
export interface ManualBucketConfig {
|
|
@@ -74,114 +110,74 @@ export interface HistogramMetricConfig extends MetricConfig {
|
|
|
74
110
|
buckettype: BucketType;
|
|
75
111
|
bucketconfig: DefaultBucketConfig | ManualBucketConfig | LinearBucketConfig | ExponentialBucketConfig;
|
|
76
112
|
}
|
|
77
|
-
export
|
|
78
|
-
default = "default",
|
|
79
|
-
manual = "manual",
|
|
80
|
-
linear = "linear",
|
|
81
|
-
exponential = "exponential"
|
|
82
|
-
}
|
|
83
|
-
export declare class HistogramMetric extends Metric<HistogramMetricConfig> {
|
|
84
|
-
private histogram;
|
|
85
|
-
private subscribers;
|
|
86
|
-
constructor(id: string, config: HistogramMetricConfig, registry: Registry);
|
|
113
|
+
export interface HistogramMetric {
|
|
87
114
|
observe(value: number): void;
|
|
88
|
-
get(): Promise<HistogramState>;
|
|
89
115
|
subscribe(node: BaseNode<BaseNodeConfig>, callback: HistogramCallback): void;
|
|
90
116
|
unsubscribe(node: BaseNode<BaseNodeConfig>): void;
|
|
91
117
|
}
|
|
92
|
-
declare class
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
labels: any;
|
|
97
|
-
value: number;
|
|
98
|
-
metricName?: string;
|
|
99
|
-
}[]);
|
|
100
|
-
average(): number | undefined;
|
|
101
|
-
}
|
|
102
|
-
interface PercentileConfig {
|
|
118
|
+
export declare class DoNothingHistogramMetric implements HistogramMetric {
|
|
119
|
+
observe(_value: number): void;
|
|
120
|
+
subscribe(_node: BaseNode<BaseNodeConfig>, _callback: HistogramCallback): void;
|
|
121
|
+
unsubscribe(_node: BaseNode<BaseNodeConfig>): void;
|
|
103
122
|
}
|
|
104
|
-
|
|
105
|
-
private _values;
|
|
106
|
-
private _average;
|
|
107
|
-
constructor(values: {
|
|
108
|
-
labels: any;
|
|
109
|
-
value: number;
|
|
110
|
-
metricName?: string;
|
|
111
|
-
}[]);
|
|
123
|
+
export type SummaryState = {
|
|
112
124
|
average(): number | undefined;
|
|
125
|
+
};
|
|
126
|
+
export type SummaryCallback = (state: SummaryState) => void;
|
|
127
|
+
export declare enum PercentileType {
|
|
128
|
+
default = "default",
|
|
129
|
+
manual = "manual"
|
|
113
130
|
}
|
|
114
|
-
|
|
115
|
-
export interface DefaultPercentileConfig extends PercentileConfig {
|
|
131
|
+
export interface DefaultPercentileConfig {
|
|
116
132
|
}
|
|
117
|
-
export interface ManualPercentileConfig
|
|
133
|
+
export interface ManualPercentileConfig {
|
|
118
134
|
percentiles: number[];
|
|
119
135
|
}
|
|
120
136
|
export interface SummaryMetricConfig extends MetricConfig {
|
|
121
137
|
percentileType: PercentileType;
|
|
122
|
-
percentileConfig:
|
|
123
|
-
}
|
|
124
|
-
export declare enum PercentileType {
|
|
125
|
-
default = "default",
|
|
126
|
-
manual = "manual"
|
|
138
|
+
percentileConfig: DefaultPercentileConfig | ManualPercentileConfig;
|
|
127
139
|
}
|
|
128
|
-
export
|
|
129
|
-
private summary;
|
|
130
|
-
private subscribers;
|
|
131
|
-
constructor(id: string, config: SummaryMetricConfig, registry: Registry);
|
|
140
|
+
export interface SummaryMetric {
|
|
132
141
|
observe(value: number): void;
|
|
133
|
-
get(): Promise<SummaryState>;
|
|
134
142
|
subscribe(node: BaseNode<BaseNodeConfig>, callback: SummaryCallback): void;
|
|
135
143
|
unsubscribe(node: BaseNode<BaseNodeConfig>): void;
|
|
136
144
|
}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
145
|
+
export declare class DoNothingSummaryMetric implements SummaryMetric {
|
|
146
|
+
observe(_value: number): void;
|
|
147
|
+
subscribe(_node: BaseNode<BaseNodeConfig>, _callback: SummaryCallback): void;
|
|
148
|
+
unsubscribe(_node: BaseNode<BaseNodeConfig>): void;
|
|
149
|
+
}
|
|
150
|
+
export declare abstract class MetricsContainer {
|
|
151
|
+
abstract supports(capability: MetricCapability): boolean;
|
|
152
|
+
abstract hasChanged(config: MetricsConfig): boolean;
|
|
153
|
+
abstract close(): void;
|
|
154
|
+
counter(_config: CounterMetricConfig): CounterMetric;
|
|
155
|
+
gauge(_config: GaugeMetricConfig): GaugeMetric;
|
|
156
|
+
histogram(_config: HistogramMetricConfig): HistogramMetric;
|
|
157
|
+
summary(_config: SummaryMetricConfig): SummaryMetric;
|
|
158
|
+
}
|
|
159
|
+
export declare class DoNothingMetricsContainer extends MetricsContainer {
|
|
160
|
+
supports(_capability: MetricCapability): boolean;
|
|
161
|
+
hasChanged(_config: MetricsConfig): boolean;
|
|
152
162
|
close(): void;
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
histogram(config: HistogramMetricConfig): HistogramMetric;
|
|
158
|
-
summary(config: SummaryMetricConfig): SummaryMetric;
|
|
163
|
+
counter(_config: CounterMetricConfig): CounterMetric;
|
|
164
|
+
gauge(_config: GaugeMetricConfig): GaugeMetric;
|
|
165
|
+
histogram(_config: HistogramMetricConfig): HistogramMetric;
|
|
166
|
+
summary(_config: SummaryMetricConfig): SummaryMetric;
|
|
159
167
|
}
|
|
160
168
|
export declare class MetricsService extends BaseService {
|
|
161
|
-
private static metrics;
|
|
162
169
|
private red;
|
|
163
170
|
constructor();
|
|
164
171
|
init(red: NodeAPI<NodeAPISettingsWithData>): void;
|
|
165
|
-
deinit(
|
|
172
|
+
deinit(_red: NodeAPI<NodeAPISettingsWithData>): void;
|
|
166
173
|
onDeploy(deployment: FlowDeployment): Promise<void>;
|
|
174
|
+
/**
|
|
175
|
+
* Called by MetricsConfigNode subclasses on construction.
|
|
176
|
+
* Preserves an existing container across redeploys if the config has not changed
|
|
177
|
+
* (so counters/gauges are not reset unnecessarily).
|
|
178
|
+
*/
|
|
179
|
+
static register(id: string, config: MetricsConfig, factory: () => MetricsContainer): void;
|
|
167
180
|
static get(reference: MetricsReference): MetricsContainer;
|
|
168
|
-
static getServiceDescriptor(): ServiceDescriptor;
|
|
169
|
-
}
|
|
170
|
-
export interface MetricsConfig {
|
|
171
|
-
id: string;
|
|
172
|
-
metricsPath: string;
|
|
173
|
-
metricsPort: number;
|
|
174
|
-
}
|
|
175
|
-
export interface NodeReference {
|
|
176
|
-
name: string;
|
|
177
|
-
type: string;
|
|
178
|
-
flow: string;
|
|
179
|
-
id: string;
|
|
180
|
-
}
|
|
181
|
-
export interface MetricConfig {
|
|
182
|
-
node: NodeReference;
|
|
183
|
-
metricname: string;
|
|
184
|
-
metricdescription?: string;
|
|
185
181
|
}
|
|
186
182
|
export {};
|
|
187
183
|
//# sourceMappingURL=MetricsService.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetricsService.d.ts","sourceRoot":"","sources":["../../../../src/core/metrics/service/MetricsService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"MetricsService.d.ts","sourceRoot":"","sources":["../../../../src/core/metrics/service/MetricsService.ts"],"names":[],"mappings":"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"}
|