@theotherwillembotha/node-red-plugincore 0.1.0 → 0.3.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 -220
- package/build/GenerateNodes.js +9 -33
- package/build/Nodes.html +2 -1505
- package/build/Nodes.js +5 -19
- package/build/Plugins.html +11 -0
- package/build/Plugins.js +17 -12
- package/build/core/NodeConstructor.d.ts +12 -16
- package/build/core/NodeConstructor.d.ts.map +1 -1
- package/build/core/NodeConstructor.js +125 -185
- package/build/core/NodeGenerator.d.ts +3 -1
- package/build/core/NodeGenerator.d.ts.map +1 -1
- package/build/core/NodeGenerator.js +139 -43
- 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 +8 -6
- package/build/core/logger/service/LoggerService.d.ts.map +1 -1
- package/build/core/logger/service/LoggerService.js +101 -23
- package/build/core/logger/template/LoggerTemplate.d.ts +1 -2
- package/build/core/logger/template/LoggerTemplate.d.ts.map +1 -1
- package/build/core/logger/template/LoggerTemplate.js +18 -5
- 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 +1 -2
- package/build/core/metrics/template/CounterMetricTemplate.d.ts.map +1 -1
- package/build/core/metrics/template/CounterMetricTemplate.js +16 -5
- package/build/core/metrics/template/GaugeMetricTemplate.d.ts +1 -2
- package/build/core/metrics/template/GaugeMetricTemplate.d.ts.map +1 -1
- package/build/core/metrics/template/GaugeMetricTemplate.js +16 -5
- package/build/core/metrics/template/MetricsTemplate.d.ts +1 -2
- package/build/core/metrics/template/MetricsTemplate.d.ts.map +1 -1
- package/build/core/metrics/template/MetricsTemplate.js +18 -6
- package/build/core/metrics/template/TimerMetricTemplate.d.ts +1 -2
- package/build/core/metrics/template/TimerMetricTemplate.d.ts.map +1 -1
- package/build/core/metrics/template/TimerMetricTemplate.js +16 -5
- 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 +1 -2
- package/build/core/other/template/BasicTemplate.d.ts.map +1 -1
- package/build/core/other/template/BasicTemplate.js +15 -5
- package/build/core/other/template/SettingsTemplate.d.ts +1 -2
- package/build/core/other/template/SettingsTemplate.d.ts.map +1 -1
- package/build/core/other/template/SettingsTemplate.js +17 -5
- 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 +7 -0
- package/build/core/state/template/StateTemplate.d.ts.map +1 -0
- package/build/core/state/template/StateTemplate.js +25 -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/TemplateDescriptionDecorator.d.ts +8 -0
- package/build/core/tagging/TemplateDescriptionDecorator.d.ts.map +1 -0
- package/build/core/tagging/TemplateDescriptionDecorator.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 +1 -2
- package/build/core/ui/template/ScriptEditorTemplate.d.ts.map +1 -1
- package/build/core/ui/template/ScriptEditorTemplate.js +15 -5
- package/build/core/ui/template/UIHelperTemplate.d.ts +1 -2
- package/build/core/ui/template/UIHelperTemplate.d.ts.map +1 -1
- package/build/core/ui/template/UIHelperTemplate.js +15 -5
- package/build/core/webhook/node/WebhookServerConfigNode.d.ts.map +1 -1
- 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 -18
- package/build/core/webhook/template/WebhookTemplate.d.ts +1 -2
- package/build/core/webhook/template/WebhookTemplate.d.ts.map +1 -1
- package/build/core/webhook/template/WebhookTemplate.js +19 -6
- package/build/index.d.ts +6 -2
- package/build/index.d.ts.map +1 -1
- package/build/index.js +7 -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 +4 -11
- package/src/GenerateNodes.ts +10 -40
- package/src/core/NodeConstructor.ts +150 -228
- package/src/core/NodeGenerator.ts +156 -47
- package/src/core/NodeManagerRuntime.ts +179 -0
- package/src/core/logger/service/LoggerService.ts +60 -32
- package/src/core/logger/template/LoggerTemplate.html +11 -6
- package/src/core/logger/template/LoggerTemplate.ts +9 -11
- 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.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/CounterMetricTemplate.ts +8 -11
- package/src/core/metrics/template/GaugeMetricTemplate.html +1 -1
- package/src/core/metrics/template/GaugeMetricTemplate.ts +8 -11
- package/src/core/metrics/template/MetricsTemplate.html +132 -13
- package/src/core/metrics/template/MetricsTemplate.ts +9 -10
- package/src/core/metrics/template/TimerMetricTemplate.ts +8 -10
- 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 +1 -1
- package/src/core/other/template/BasicTemplate.ts +6 -11
- package/src/core/other/template/SettingsTemplate.ts +8 -13
- 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 +18 -0
- package/src/core/tagging/ServiceDescriptionDecorator.ts +23 -0
- package/src/core/tagging/TemplateDescriptionDecorator.ts +19 -0
- package/src/core/tagging/service/NodeTypeService.ts +6 -11
- package/src/core/ui/template/ScriptEditorTemplate.ts +6 -10
- package/src/core/ui/template/UIHelperTemplate.html +41 -26
- package/src/core/ui/template/UIHelperTemplate.ts +6 -10
- package/src/core/webhook/service/WebhookServerService.ts +39 -23
- package/src/core/webhook/template/WebhookTemplate.html +28 -35
- package/src/core/webhook/template/WebhookTemplate.ts +10 -12
- package/src/index.ts +8 -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.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.js +0 -128
- 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
|
@@ -1,18 +1,77 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
19
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
20
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
21
|
+
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;
|
|
22
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
23
|
+
};
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
42
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
4
43
|
};
|
|
44
|
+
var LoggerService_1;
|
|
5
45
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
46
|
exports.DoNothingAppender = exports.LoggerConfigNode = exports.LoggerService = exports.AbstractLogger = exports.Log = exports.ApiKeyMechanismType = exports.RestAuthType = exports.Level = void 0;
|
|
47
|
+
const os = __importStar(require("os"));
|
|
7
48
|
const NodeConstructor_1 = require("../../NodeConstructor");
|
|
8
|
-
const
|
|
49
|
+
const ServiceDescriptionDecorator_1 = require("../../tagging/ServiceDescriptionDecorator");
|
|
9
50
|
const LoggerTemplate_1 = require("../template/LoggerTemplate");
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
51
|
+
// Build-time / optional runtime deps - lazy so they are never required at bundle load time.
|
|
52
|
+
function getHandlebars() { return require('handlebars'); }
|
|
53
|
+
function getLocalIpAddress() {
|
|
54
|
+
const interfaces = os.networkInterfaces();
|
|
55
|
+
for (const name of Object.keys(interfaces)) {
|
|
56
|
+
for (const iface of interfaces[name] ?? []) {
|
|
57
|
+
if (iface.family === 'IPv4' && !iface.internal) {
|
|
58
|
+
return iface.address;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return '127.0.0.1';
|
|
63
|
+
}
|
|
64
|
+
let _helpersRegistered = false;
|
|
65
|
+
function ensureHelpersRegistered() {
|
|
66
|
+
if (_helpersRegistered)
|
|
67
|
+
return;
|
|
68
|
+
_helpersRegistered = true;
|
|
69
|
+
// helper for serializing json objects inside handlebars tags.
|
|
70
|
+
// you can then convert it like this: {{{json myobject}}}
|
|
71
|
+
getHandlebars().registerHelper('json', function (context) {
|
|
72
|
+
return JSON.stringify(context);
|
|
73
|
+
});
|
|
74
|
+
}
|
|
16
75
|
var Level;
|
|
17
76
|
(function (Level) {
|
|
18
77
|
Level["DEBUG"] = "DEBUG";
|
|
@@ -34,8 +93,9 @@ var ApiKeyMechanismType;
|
|
|
34
93
|
})(ApiKeyMechanismType || (exports.ApiKeyMechanismType = ApiKeyMechanismType = {}));
|
|
35
94
|
class Log {
|
|
36
95
|
constructor(config) {
|
|
96
|
+
this._compiledTemplate = null;
|
|
37
97
|
this._config = config;
|
|
38
|
-
this.
|
|
98
|
+
this._templateStr = config.template;
|
|
39
99
|
this.tags = {
|
|
40
100
|
id: config.id,
|
|
41
101
|
node: config.name,
|
|
@@ -44,13 +104,20 @@ class Log {
|
|
|
44
104
|
instance: LoggerService.instanceID
|
|
45
105
|
};
|
|
46
106
|
}
|
|
107
|
+
getTemplate() {
|
|
108
|
+
if (!this._compiledTemplate) {
|
|
109
|
+
ensureHelpersRegistered();
|
|
110
|
+
this._compiledTemplate = getHandlebars().compile(this._templateStr);
|
|
111
|
+
}
|
|
112
|
+
return this._compiledTemplate;
|
|
113
|
+
}
|
|
47
114
|
config() {
|
|
48
115
|
return this._config;
|
|
49
116
|
}
|
|
50
117
|
log(payload) {
|
|
51
118
|
try {
|
|
52
119
|
// step 1. serialize the payload using the template engine.
|
|
53
|
-
let message = (payload instanceof String) ? payload : this.
|
|
120
|
+
let message = (payload instanceof String) ? payload : this.getTemplate()({ msg: payload });
|
|
54
121
|
// step 2. write to the log appender.
|
|
55
122
|
this.writeToLog(this.config().level, message, this.tags);
|
|
56
123
|
}
|
|
@@ -79,24 +146,33 @@ class AbstractLogger {
|
|
|
79
146
|
}
|
|
80
147
|
}
|
|
81
148
|
exports.AbstractLogger = AbstractLogger;
|
|
82
|
-
class LoggerService extends NodeConstructor_1.BaseService {
|
|
149
|
+
let LoggerService = LoggerService_1 = class LoggerService extends NodeConstructor_1.BaseService {
|
|
150
|
+
// Backed by a global so the value is shared across separately-bundled copies
|
|
151
|
+
// of plugincore (Nodes.js and Plugins.js each inline their own copy).
|
|
152
|
+
static get instanceID() {
|
|
153
|
+
return global.__plugincore_instance_id__ ?? '';
|
|
154
|
+
}
|
|
155
|
+
static set instanceID(value) {
|
|
156
|
+
global.__plugincore_instance_id__ = value;
|
|
157
|
+
}
|
|
83
158
|
constructor() {
|
|
84
159
|
super("logger");
|
|
85
160
|
}
|
|
86
161
|
init(red) {
|
|
87
162
|
this.red = red;
|
|
88
|
-
|
|
89
|
-
network.get_active_interface((err, obj) => {
|
|
90
|
-
LoggerService.instanceID = obj.ip_address;
|
|
91
|
-
});
|
|
92
|
-
});
|
|
163
|
+
LoggerService_1.instanceID = getLocalIpAddress();
|
|
93
164
|
}
|
|
94
165
|
deinit(red) { }
|
|
95
|
-
|
|
96
|
-
return new NodeConstructor_1.ServiceDescriptor("@theotherwillembotha/loggerservice", "LoggerService", "services-plugin", "@theotherwillembotha/node-red-plugincore", LoggerService, [LoggerTemplate_1.LoggerTemplate]);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
166
|
+
};
|
|
99
167
|
exports.LoggerService = LoggerService;
|
|
168
|
+
exports.LoggerService = LoggerService = LoggerService_1 = __decorate([
|
|
169
|
+
(0, ServiceDescriptionDecorator_1.ServiceDescription)({
|
|
170
|
+
id: "@theotherwillembotha/loggerservice",
|
|
171
|
+
sourceFile: "@theotherwillembotha/node-red-plugincore",
|
|
172
|
+
dependencies: [LoggerTemplate_1.LoggerTemplate]
|
|
173
|
+
}),
|
|
174
|
+
__metadata("design:paramtypes", [])
|
|
175
|
+
], LoggerService);
|
|
100
176
|
class LoggerConfigNode extends NodeConstructor_1.ConfigNode {
|
|
101
177
|
constructor(node, config) {
|
|
102
178
|
super(node, config);
|
|
@@ -107,9 +183,11 @@ class LoggerConfigNode extends NodeConstructor_1.ConfigNode {
|
|
|
107
183
|
}
|
|
108
184
|
exports.LoggerConfigNode = LoggerConfigNode;
|
|
109
185
|
class DoNothingAppender extends Log {
|
|
110
|
-
static { this.
|
|
186
|
+
static { this._instance = null; }
|
|
111
187
|
static get() {
|
|
112
|
-
|
|
188
|
+
if (!DoNothingAppender._instance)
|
|
189
|
+
DoNothingAppender._instance = new DoNothingAppender();
|
|
190
|
+
return DoNothingAppender._instance;
|
|
113
191
|
}
|
|
114
192
|
constructor() {
|
|
115
193
|
super({ flow: "", id: "", level: "", name: "", template: "", type: "" });
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BaseNodeConfig, Template
|
|
1
|
+
import { BaseNodeConfig, Template } from "../../NodeConstructor";
|
|
2
2
|
export interface LoggerTemplateNodeConfig extends BaseNodeConfig {
|
|
3
3
|
logEnabled: boolean;
|
|
4
4
|
logger: string;
|
|
@@ -14,6 +14,5 @@ export type LoggerTemplateConfig = {
|
|
|
14
14
|
level: string;
|
|
15
15
|
};
|
|
16
16
|
export declare class LoggerTemplate extends Template {
|
|
17
|
-
static getTemplateDescriptor(): TemplateDescriptor;
|
|
18
17
|
}
|
|
19
18
|
//# sourceMappingURL=LoggerTemplate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LoggerTemplate.d.ts","sourceRoot":"","sources":["../../../../src/core/logger/template/LoggerTemplate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"LoggerTemplate.d.ts","sourceRoot":"","sources":["../../../../src/core/logger/template/LoggerTemplate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAMhE,MAAM,WAAW,wBAAyB,SAAQ,cAAc;IAC5D,UAAU,EAAC,OAAO,CAAC;IACnB,MAAM,EAAC,MAAM,CAAC;IACd,0BAA0B,EAAC,OAAO,CAAC;IACnC,mBAAmB,EAAC,MAAM,CAAC;CAC9B;AAED,MAAM,MAAM,oBAAoB,GAAG;IAC/B,EAAE,EAAC,MAAM,CAAC;IACV,IAAI,EAAC,MAAM,CAAC;IACZ,IAAI,EAAC,MAAM,CAAC;IACZ,IAAI,EAAC,MAAM,CAAC;IACZ,QAAQ,EAAC,MAAM,CAAC;IAChB,KAAK,EAAC,MAAM,CAAC;CAChB,CAAA;AAED,qBAKa,cAAe,SAAQ,QAAQ;CAC3C"}
|
|
@@ -1,11 +1,24 @@
|
|
|
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
|
+
};
|
|
2
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
9
|
exports.LoggerTemplate = void 0;
|
|
4
10
|
const NodeGenerator_1 = require("../../NodeGenerator");
|
|
5
11
|
const NodeConstructor_1 = require("../../NodeConstructor");
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
}
|
|
12
|
+
const TemplateDescriptionDecorator_1 = require("../../tagging/TemplateDescriptionDecorator");
|
|
13
|
+
const DelegatedConfigReferenceNode_1 = require("../../other/node/DelegatedConfigReferenceNode");
|
|
14
|
+
const LoggerService_1 = require("../service/LoggerService");
|
|
15
|
+
let LoggerTemplate = class LoggerTemplate extends NodeConstructor_1.Template {
|
|
16
|
+
};
|
|
11
17
|
exports.LoggerTemplate = LoggerTemplate;
|
|
18
|
+
exports.LoggerTemplate = LoggerTemplate = __decorate([
|
|
19
|
+
(0, TemplateDescriptionDecorator_1.TemplateDescription)({
|
|
20
|
+
name: "logger",
|
|
21
|
+
templateFile: NodeGenerator_1.SourceUtility.getSourcePath("/build/", "/src/") + "LoggerTemplate.html",
|
|
22
|
+
dependencies: [DelegatedConfigReferenceNode_1.DelegatedConfigReferenceNode, LoggerService_1.LoggerService],
|
|
23
|
+
})
|
|
24
|
+
], LoggerTemplate);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BucketType
|
|
1
|
+
import { BucketType } from "./service/MetricsService";
|
|
2
2
|
export declare enum MetricType {
|
|
3
3
|
Counter = "Counter",
|
|
4
4
|
Timer = "Timer",
|
|
@@ -32,7 +32,6 @@ type HistogramTimerMetricDecoratorConfig = TimerMetricDecoratorConfig & {
|
|
|
32
32
|
};
|
|
33
33
|
type DefaultHistogramTimerMetricDecoratorConfig = HistogramTimerMetricDecoratorConfig & {
|
|
34
34
|
buckettype: BucketType.default;
|
|
35
|
-
bucketconfig?: DefaultBucketConfig;
|
|
36
35
|
};
|
|
37
36
|
type MetricsConfig = CounterMetricDecoratorConfig | GaugeMetricDecoratorConfig | SummaryTimerMetricDecoratorConfig | DefaultHistogramTimerMetricDecoratorConfig;
|
|
38
37
|
export declare function Metrics(metricsConfig: MetricsConfig): Function;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetricsDecorator.d.ts","sourceRoot":"","sources":["../../../src/core/metrics/MetricsDecorator.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"MetricsDecorator.d.ts","sourceRoot":"","sources":["../../../src/core/metrics/MetricsDecorator.ts"],"names":[],"mappings":"AAEA,OAAO,EAML,UAAU,EAUX,MAAM,0BAA0B,CAAC;AAGlC,oBAAY,UAAU;IACpB,OAAO,YAAY;IACnB,KAAK,UAAY;IACjB,KAAK,UAAY;CAClB;AAED,oBAAY,mBAAmB;IAC3B,SAAS,cAAc;IACvB,OAAO,YAAc;CACxB;AAED,KAAK,yBAAyB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACvB,CAAA;AAED,KAAK,4BAA4B,GAAG,yBAAyB,GAAG;IAAE,IAAI,EAAE,UAAU,CAAC,OAAO,CAAA;CAAE,CAAA;AAC5F,KAAK,0BAA0B,GAAK,yBAAyB,GAAG;IAAE,IAAI,EAAE,UAAU,CAAC,KAAK,CAAA;CAAE,CAAA;AAE1F,KAAK,0BAA0B,GAAG,yBAAyB,GAAG;IAC5D,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC;IACvB,SAAS,EAAE,mBAAmB,CAAC;CAChC,CAAA;AAED,KAAK,iCAAiC,GAAG,0BAA0B,GAAG;IACpE,SAAS,EAAE,mBAAmB,CAAC,OAAO,CAAC;CACxC,CAAA;AAED,KAAK,mCAAmC,GAAG,0BAA0B,GAAG;IACtE,SAAS,EAAE,mBAAmB,CAAC,SAAS,CAAC;IACzC,UAAU,EAAE,UAAU,CAAC;CACxB,CAAA;AAED,KAAK,0CAA0C,GAAG,mCAAmC,GAAG;IACtF,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC;CAChC,CAAA;AAED,KAAK,aAAa,GAChB,4BAA4B,GAC5B,0BAA0B,GAC1B,iCAAiC,GACjC,0CAA0C,CAAA;AAkF5C,wBAAgB,OAAO,CAAC,aAAa,EAAE,aAAa,GAAG,QAAQ,CAqD9D"}
|
|
@@ -15,146 +15,119 @@ var MetricCollectorType;
|
|
|
15
15
|
MetricCollectorType["histogram"] = "histogram";
|
|
16
16
|
MetricCollectorType["summary"] = "summary";
|
|
17
17
|
})(MetricCollectorType || (exports.MetricCollectorType = MetricCollectorType = {}));
|
|
18
|
+
function resolveMetric(node, metricsConfig, _metrics) {
|
|
19
|
+
const nde = {
|
|
20
|
+
id: node.id(),
|
|
21
|
+
name: node.name(),
|
|
22
|
+
flow: node.flow(),
|
|
23
|
+
type: node.type()
|
|
24
|
+
};
|
|
25
|
+
if (metricsConfig.type === MetricType.Counter) {
|
|
26
|
+
if (!_metrics.supports(MetricsService_1.MetricCapability.Counter)) {
|
|
27
|
+
console.warn(`[PluginCore] @Metrics Counter requested by node "${node.name()}" (${node.type()}) but the selected provider does not support Counter. Using DoNothing.`);
|
|
28
|
+
}
|
|
29
|
+
const counterConfig = {
|
|
30
|
+
metricname: metricsConfig.name,
|
|
31
|
+
metricdescription: metricsConfig.description,
|
|
32
|
+
node: nde
|
|
33
|
+
};
|
|
34
|
+
return _metrics.counter(counterConfig);
|
|
35
|
+
}
|
|
36
|
+
if (metricsConfig.type === MetricType.Gauge) {
|
|
37
|
+
if (!_metrics.supports(MetricsService_1.MetricCapability.Gauge)) {
|
|
38
|
+
console.warn(`[PluginCore] @Metrics Gauge requested by node "${node.name()}" (${node.type()}) but the selected provider does not support Gauge. Using DoNothing.`);
|
|
39
|
+
}
|
|
40
|
+
const gaugeConfig = {
|
|
41
|
+
metricname: metricsConfig.name,
|
|
42
|
+
metricdescription: metricsConfig.description,
|
|
43
|
+
node: nde
|
|
44
|
+
};
|
|
45
|
+
return _metrics.gauge(gaugeConfig);
|
|
46
|
+
}
|
|
47
|
+
if (metricsConfig.type === MetricType.Timer) {
|
|
48
|
+
if (metricsConfig.collector === MetricCollectorType.histogram) {
|
|
49
|
+
if (!_metrics.supports(MetricsService_1.MetricCapability.Histogram)) {
|
|
50
|
+
console.warn(`[PluginCore] @Metrics Histogram requested by node "${node.name()}" (${node.type()}) but the selected provider does not support Histogram. Using DoNothing.`);
|
|
51
|
+
}
|
|
52
|
+
if (metricsConfig.buckettype === MetricsService_1.BucketType.default) {
|
|
53
|
+
const histogramConfig = {
|
|
54
|
+
metricname: metricsConfig.name,
|
|
55
|
+
metricdescription: metricsConfig.description,
|
|
56
|
+
buckettype: metricsConfig.buckettype,
|
|
57
|
+
bucketconfig: {},
|
|
58
|
+
node: nde
|
|
59
|
+
};
|
|
60
|
+
return _metrics.histogram(histogramConfig);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
if (metricsConfig.collector === MetricCollectorType.summary) {
|
|
64
|
+
if (!_metrics.supports(MetricsService_1.MetricCapability.Summary)) {
|
|
65
|
+
console.warn(`[PluginCore] @Metrics Summary requested by node "${node.name()}" (${node.type()}) but the selected provider does not support Summary. Using DoNothing.`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
console.error("[PluginCore] @Metrics: no factory matched for config", metricsConfig);
|
|
70
|
+
return undefined;
|
|
71
|
+
}
|
|
72
|
+
function resolveContainer(metricsReference) {
|
|
73
|
+
if (!metricsReference)
|
|
74
|
+
return new MetricsService_1.DoNothingMetricsContainer();
|
|
75
|
+
const refNode = NodeConstructor_1.NodeManager.RED.nodes.getNode(metricsReference);
|
|
76
|
+
return refNode ? refNode.node().metrics() : new MetricsService_1.DoNothingMetricsContainer();
|
|
77
|
+
}
|
|
78
|
+
function dudForType(metricsConfig) {
|
|
79
|
+
if (metricsConfig.type === MetricType.Counter)
|
|
80
|
+
return new MetricsService_1.DoNothingCounterMetric();
|
|
81
|
+
if (metricsConfig.type === MetricType.Gauge)
|
|
82
|
+
return new MetricsService_1.DoNothingGaugeMetric();
|
|
83
|
+
if (metricsConfig.type === MetricType.Timer) {
|
|
84
|
+
if (metricsConfig.collector === MetricCollectorType.histogram)
|
|
85
|
+
return new MetricsService_1.DoNothingHistogramMetric();
|
|
86
|
+
if (metricsConfig.collector === MetricCollectorType.summary)
|
|
87
|
+
return new MetricsService_1.DoNothingSummaryMetric();
|
|
88
|
+
}
|
|
89
|
+
return undefined;
|
|
90
|
+
}
|
|
18
91
|
function Metrics(metricsConfig) {
|
|
19
92
|
return function (target, propertyKey) {
|
|
20
|
-
// if the type is a string, then its probably defined in the local (core) module.
|
|
21
93
|
if (typeof propertyKey === "string") {
|
|
22
94
|
const valueSymbol = Symbol(`_${String(propertyKey)}_value`);
|
|
23
95
|
Object.defineProperty(target, propertyKey, {
|
|
24
96
|
get: function () {
|
|
25
|
-
if (this[valueSymbol])
|
|
97
|
+
if (this[valueSymbol])
|
|
26
98
|
return this[valueSymbol];
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
let node = this;
|
|
30
|
-
let config = node.config();
|
|
99
|
+
const node = this;
|
|
100
|
+
const config = node.config();
|
|
31
101
|
if (config.metricsEnabled) {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
type: node.type()
|
|
38
|
-
};
|
|
39
|
-
// counter metric
|
|
40
|
-
if (metricsConfig.type === MetricType.Counter) {
|
|
41
|
-
let counterConfig = {
|
|
42
|
-
metricname: metricsConfig.name,
|
|
43
|
-
metricdescription: metricsConfig.description,
|
|
44
|
-
node: nde
|
|
45
|
-
};
|
|
46
|
-
this[valueSymbol] = _metrics.counter(counterConfig);
|
|
47
|
-
return this[valueSymbol];
|
|
48
|
-
}
|
|
49
|
-
// gauge metric
|
|
50
|
-
if (metricsConfig.type === MetricType.Gauge) {
|
|
51
|
-
let gaugeConfig = {
|
|
52
|
-
metricname: metricsConfig.name,
|
|
53
|
-
metricdescription: metricsConfig.description,
|
|
54
|
-
node: nde
|
|
55
|
-
};
|
|
56
|
-
this[valueSymbol] = _metrics.gauge(gaugeConfig);
|
|
57
|
-
return this[valueSymbol];
|
|
58
|
-
}
|
|
59
|
-
// timer metric.
|
|
60
|
-
if (metricsConfig.type === MetricType.Timer) {
|
|
61
|
-
// handle it as a histogram collector.
|
|
62
|
-
if (metricsConfig.collector === MetricCollectorType.histogram) {
|
|
63
|
-
// handle it as the default bucket.
|
|
64
|
-
if (metricsConfig.buckettype === MetricsService_1.BucketType.default) {
|
|
65
|
-
let histogramConfig = {
|
|
66
|
-
metricname: metricsConfig.name,
|
|
67
|
-
metricdescription: metricsConfig.description,
|
|
68
|
-
buckettype: metricsConfig.buckettype,
|
|
69
|
-
bucketconfig: {},
|
|
70
|
-
node: nde
|
|
71
|
-
};
|
|
72
|
-
this[valueSymbol] = _metrics.histogram(histogramConfig);
|
|
73
|
-
return this[valueSymbol];
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
console.error("No Metric Factory type defined for ", metricsConfig);
|
|
78
|
-
return this[valueSymbol];
|
|
102
|
+
const _metrics = resolveContainer(config.metricsReference);
|
|
103
|
+
this[valueSymbol] = resolveMetric(node, metricsConfig, _metrics);
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
this[valueSymbol] = dudForType(metricsConfig);
|
|
79
107
|
}
|
|
80
|
-
this[valueSymbol] =
|
|
81
|
-
(metricsConfig.type === MetricType.Counter) ? { inc() { }, reset() { } } :
|
|
82
|
-
(metricsConfig.type === MetricType.Gauge) ? { inc() { }, dec() { }, reset() { } } :
|
|
83
|
-
(metricsConfig.type === MetricType.Timer) ? { observe(val) { } }
|
|
84
|
-
: undefined;
|
|
85
108
|
return this[valueSymbol];
|
|
86
109
|
},
|
|
87
110
|
enumerable: true,
|
|
88
111
|
configurable: false
|
|
89
112
|
});
|
|
90
|
-
return;
|
|
91
113
|
}
|
|
92
114
|
else {
|
|
93
115
|
let property = propertyKey;
|
|
94
116
|
property.addInitializer(function () {
|
|
95
|
-
|
|
117
|
+
const node = this;
|
|
96
118
|
const valueSymbol = Symbol(`_${String(property.name)}_value`);
|
|
97
119
|
Object.defineProperty(node, property.name, {
|
|
98
120
|
get: function () {
|
|
99
|
-
if (this[valueSymbol])
|
|
121
|
+
if (this[valueSymbol])
|
|
100
122
|
return this[valueSymbol];
|
|
101
|
-
|
|
102
|
-
//console.log("injecting metric", valueSymbol);
|
|
103
|
-
let config = node.config();
|
|
123
|
+
const config = node.config();
|
|
104
124
|
if (config.metricsEnabled) {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
type: node.type()
|
|
111
|
-
};
|
|
112
|
-
// counter metric
|
|
113
|
-
if (metricsConfig.type === MetricType.Counter) {
|
|
114
|
-
let counterConfig = {
|
|
115
|
-
metricname: metricsConfig.name,
|
|
116
|
-
metricdescription: metricsConfig.description,
|
|
117
|
-
node: nde
|
|
118
|
-
};
|
|
119
|
-
this[valueSymbol] = _metrics.counter(counterConfig);
|
|
120
|
-
return this[valueSymbol];
|
|
121
|
-
}
|
|
122
|
-
// gauge metric
|
|
123
|
-
if (metricsConfig.type === MetricType.Gauge) {
|
|
124
|
-
let gaugeConfig = {
|
|
125
|
-
metricname: metricsConfig.name,
|
|
126
|
-
metricdescription: metricsConfig.description,
|
|
127
|
-
node: nde
|
|
128
|
-
};
|
|
129
|
-
this[valueSymbol] = _metrics.gauge(gaugeConfig);
|
|
130
|
-
return this[valueSymbol];
|
|
131
|
-
}
|
|
132
|
-
// timer metric.
|
|
133
|
-
if (metricsConfig.type === MetricType.Timer) {
|
|
134
|
-
// handle it as a histogram collector.
|
|
135
|
-
if (metricsConfig.collector === MetricCollectorType.histogram) {
|
|
136
|
-
// handle it as the default bucket.
|
|
137
|
-
if (metricsConfig.buckettype === MetricsService_1.BucketType.default) {
|
|
138
|
-
let histogramConfig = {
|
|
139
|
-
metricname: metricsConfig.name,
|
|
140
|
-
metricdescription: metricsConfig.description,
|
|
141
|
-
buckettype: metricsConfig.buckettype,
|
|
142
|
-
bucketconfig: {},
|
|
143
|
-
node: nde
|
|
144
|
-
};
|
|
145
|
-
this[valueSymbol] = _metrics.histogram(histogramConfig);
|
|
146
|
-
return this[valueSymbol];
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
console.error("No Metric Factory type defined for ", metricsConfig);
|
|
151
|
-
return this[valueSymbol];
|
|
125
|
+
const _metrics = resolveContainer(config.metricsReference);
|
|
126
|
+
this[valueSymbol] = resolveMetric(node, metricsConfig, _metrics);
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
this[valueSymbol] = dudForType(metricsConfig);
|
|
152
130
|
}
|
|
153
|
-
this[valueSymbol] =
|
|
154
|
-
(metricsConfig.type === MetricType.Counter) ? { inc() { }, reset() { } } :
|
|
155
|
-
(metricsConfig.type === MetricType.Gauge) ? { inc() { }, dec() { }, reset() { } } :
|
|
156
|
-
(metricsConfig.type === MetricType.Timer) ? { observe(val) { } }
|
|
157
|
-
: undefined;
|
|
158
131
|
return this[valueSymbol];
|
|
159
132
|
},
|
|
160
133
|
enumerable: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CounterMetricConfigNode.d.ts","sourceRoot":"","sources":["../../../../src/core/metrics/node/CounterMetricConfigNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"CounterMetricConfigNode.d.ts","sourceRoot":"","sources":["../../../../src/core/metrics/node/CounterMetricConfigNode.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,gBAAgB,EAAE,aAAa,EAAE,mBAAmB,EAA4B,MAAM,2BAA2B,CAAA;AAM5J,UAAU,6BAA8B,SAAQ,gBAAgB,EAAE,mBAAmB,EAAE,gBAAgB;IACnG,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,OAAO,CAAA;CACjB;AAED,qBAYa,uBAAwB,SAAQ,UAAU,CAAC,6BAA6B,CAAC;IAClF,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,QAAQ,CAAgB;IAEhC,YAAY,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,6BAA6B,EAsB5D;IAEM,OAAO,IAAI,gBAAgB,CAEjC;IAEM,OAAO,IAAI,aAAa,CAE9B;CACJ"}
|
|
@@ -13,15 +13,14 @@ exports.CounterMetricConfigNode = 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 CounterMetricConfigNode = class CounterMetricConfigNode 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 counterConfig = {
|
|
25
24
|
metricname: config.name,
|
|
26
25
|
metricdescription: config.description,
|
|
27
26
|
node: {
|
|
@@ -54,7 +53,7 @@ exports.CounterMetricConfigNode = CounterMetricConfigNode = __decorate([
|
|
|
54
53
|
templates: [
|
|
55
54
|
{ template: MetricsTemplate_1.MetricsTemplate, config: {} }
|
|
56
55
|
],
|
|
57
|
-
dependencies: [
|
|
56
|
+
dependencies: [MetricsService_1.MetricsService],
|
|
58
57
|
tags: ["MetricType"]
|
|
59
58
|
}),
|
|
60
59
|
__metadata("design:paramtypes", [Object, Object])
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GaugeMetricConfigNode.d.ts","sourceRoot":"","sources":["../../../../src/core/metrics/node/GaugeMetricConfigNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"GaugeMetricConfigNode.d.ts","sourceRoot":"","sources":["../../../../src/core/metrics/node/GaugeMetricConfigNode.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,iBAAiB,EAAE,WAAW,EAA8C,MAAM,2BAA2B,CAAA;AAExJ,OAAO,EAAmB,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAGrF,UAAU,2BAA4B,SAAQ,gBAAgB,EAAE,iBAAiB,EAAE,qBAAqB;IACpG,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,OAAO,CAAA;CACjB;AAED,qBAYa,qBAAsB,SAAQ,UAAU,CAAC,2BAA2B,CAAC;IAC9E,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,MAAM,CAAc;IAE5B,YAAY,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,2BAA2B,EAsB1D;IAEM,OAAO,IAAI,gBAAgB,CAEjC;IAEM,KAAK,IAAI,WAAW,CAE1B;CACJ"}
|
|
@@ -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"}
|