@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,134 +1,59 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
if (
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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 __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
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);
|
|
37
10
|
};
|
|
38
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.MetricsService = exports.MetricsContainer = exports.
|
|
12
|
+
exports.MetricsService = exports.DoNothingMetricsContainer = exports.MetricsContainer = exports.DoNothingSummaryMetric = exports.PercentileType = exports.DoNothingHistogramMetric = exports.BucketType = exports.DoNothingGaugeMetric = exports.DoNothingCounterMetric = exports.Metric = exports.MetricCapability = void 0;
|
|
40
13
|
const NodeConstructor_1 = require("../../NodeConstructor");
|
|
41
|
-
const
|
|
42
|
-
|
|
14
|
+
const ServiceDescriptionDecorator_1 = require("../../tagging/ServiceDescriptionDecorator");
|
|
15
|
+
// ******************************************************* //
|
|
16
|
+
// Capability //
|
|
17
|
+
// ******************************************************* //
|
|
18
|
+
var MetricCapability;
|
|
19
|
+
(function (MetricCapability) {
|
|
20
|
+
MetricCapability["Counter"] = "Counter";
|
|
21
|
+
MetricCapability["Gauge"] = "Gauge";
|
|
22
|
+
MetricCapability["Histogram"] = "Histogram";
|
|
23
|
+
MetricCapability["Summary"] = "Summary";
|
|
24
|
+
})(MetricCapability || (exports.MetricCapability = MetricCapability = {}));
|
|
43
25
|
class Metric {
|
|
44
26
|
constructor(config) {
|
|
45
27
|
this._config = config;
|
|
46
|
-
this._labels = {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
28
|
+
this._labels = {
|
|
29
|
+
flow: config.node.flow,
|
|
30
|
+
type: config.node.type,
|
|
31
|
+
name: config.node.name,
|
|
32
|
+
id: config.node.id,
|
|
33
|
+
metric: config.metricname
|
|
34
|
+
};
|
|
53
35
|
}
|
|
36
|
+
labels() { return this._labels; }
|
|
37
|
+
config() { return this._config; }
|
|
54
38
|
}
|
|
55
39
|
exports.Metric = Metric;
|
|
56
|
-
class
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
help: (config.metricdescription) ? config.metricdescription : config.metricname,
|
|
63
|
-
labelNames: Object.keys(this.labels()),
|
|
64
|
-
registers: [registry]
|
|
65
|
-
});
|
|
66
|
-
this.counter.reset();
|
|
67
|
-
this.internalCounter = this.counter.labels(this.labels());
|
|
68
|
-
}
|
|
69
|
-
inc() {
|
|
70
|
-
this.internalCounter.inc();
|
|
71
|
-
this.get().then(state => Object.values(this.subscribers).forEach(callback => callback(state)));
|
|
72
|
-
return this;
|
|
73
|
-
}
|
|
74
|
-
async get() {
|
|
75
|
-
return this.counter.get().then(t => t.values[0]);
|
|
76
|
-
}
|
|
77
|
-
reset() {
|
|
78
|
-
this.counter.reset();
|
|
79
|
-
}
|
|
80
|
-
subscribe(node, callback) {
|
|
81
|
-
this.subscribers[node.id()] = callback;
|
|
82
|
-
}
|
|
83
|
-
unsubscribe(node) {
|
|
84
|
-
delete this.subscribers[node.id()];
|
|
85
|
-
}
|
|
40
|
+
class DoNothingCounterMetric {
|
|
41
|
+
inc() { return this; }
|
|
42
|
+
reset() { }
|
|
43
|
+
get() { return Promise.resolve({ value: 0, labels: {} }); }
|
|
44
|
+
subscribe(_node, _callback) { }
|
|
45
|
+
unsubscribe(_node) { }
|
|
86
46
|
}
|
|
87
|
-
exports.
|
|
88
|
-
class
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
name: id,
|
|
96
|
-
help: (config.metricdescription) ? config.metricdescription : config.metricname,
|
|
97
|
-
registers: [registry],
|
|
98
|
-
labelNames: Object.keys(this.labels()),
|
|
99
|
-
// this function is called every time the stats are collected.
|
|
100
|
-
// the response value needs to be set.
|
|
101
|
-
collect() { this.labels(_this.labels()).set(_this.collector); }
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
inc() {
|
|
105
|
-
this.collector += 1;
|
|
106
|
-
let state = this.get();
|
|
107
|
-
Object.values(this.subscribers).forEach(sub => sub(state));
|
|
108
|
-
return this;
|
|
109
|
-
}
|
|
110
|
-
dec() {
|
|
111
|
-
this.collector -= 1;
|
|
112
|
-
let state = this.get();
|
|
113
|
-
Object.values(this.subscribers).forEach(sub => sub(state));
|
|
114
|
-
return this;
|
|
115
|
-
}
|
|
116
|
-
get() {
|
|
117
|
-
return {
|
|
118
|
-
value: this.collector,
|
|
119
|
-
};
|
|
120
|
-
}
|
|
121
|
-
reset() {
|
|
122
|
-
this.collector = 0;
|
|
123
|
-
}
|
|
124
|
-
subscribe(node, callback) {
|
|
125
|
-
this.subscribers[node.id()] = callback;
|
|
126
|
-
}
|
|
127
|
-
unsubscribe(node) {
|
|
128
|
-
delete this.subscribers[node.id()];
|
|
129
|
-
}
|
|
47
|
+
exports.DoNothingCounterMetric = DoNothingCounterMetric;
|
|
48
|
+
class DoNothingGaugeMetric {
|
|
49
|
+
inc() { return this; }
|
|
50
|
+
dec() { return this; }
|
|
51
|
+
reset() { }
|
|
52
|
+
get() { return { value: 0 }; }
|
|
53
|
+
subscribe(_node, _callback) { }
|
|
54
|
+
unsubscribe(_node) { }
|
|
130
55
|
}
|
|
131
|
-
exports.
|
|
56
|
+
exports.DoNothingGaugeMetric = DoNothingGaugeMetric;
|
|
132
57
|
var BucketType;
|
|
133
58
|
(function (BucketType) {
|
|
134
59
|
BucketType["default"] = "default";
|
|
@@ -136,250 +61,108 @@ var BucketType;
|
|
|
136
61
|
BucketType["linear"] = "linear";
|
|
137
62
|
BucketType["exponential"] = "exponential";
|
|
138
63
|
})(BucketType || (exports.BucketType = BucketType = {}));
|
|
139
|
-
class
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
// Build the Histogram Config.
|
|
144
|
-
let histogramConfig = {
|
|
145
|
-
name: id,
|
|
146
|
-
help: (config.metricdescription) ? config.metricdescription : config.metricname,
|
|
147
|
-
labelNames: Object.keys(this.labels()),
|
|
148
|
-
registers: [registry]
|
|
149
|
-
};
|
|
150
|
-
if (config.buckettype === BucketType.default) {
|
|
151
|
-
let bucketConfig = config.bucketconfig;
|
|
152
|
-
// do nothing
|
|
153
|
-
}
|
|
154
|
-
if (config.buckettype === BucketType.manual) {
|
|
155
|
-
let bucketConfig = config.bucketconfig;
|
|
156
|
-
histogramConfig.buckets = bucketConfig.intervals;
|
|
157
|
-
}
|
|
158
|
-
if (config.buckettype === BucketType.linear) {
|
|
159
|
-
let bucketConfig = config.bucketconfig;
|
|
160
|
-
histogramConfig.buckets = prom_client_1.default.linearBuckets(bucketConfig.start, bucketConfig.interval, bucketConfig.count);
|
|
161
|
-
}
|
|
162
|
-
if (config.buckettype === BucketType.exponential) {
|
|
163
|
-
let bucketConfig = config.bucketconfig;
|
|
164
|
-
histogramConfig.buckets = prom_client_1.default.exponentialBuckets(bucketConfig.start, bucketConfig.factor, bucketConfig.count);
|
|
165
|
-
}
|
|
166
|
-
this.histogram = new prom_client_1.Histogram(histogramConfig);
|
|
167
|
-
this.histogram.zero(this.labels());
|
|
168
|
-
}
|
|
169
|
-
observe(value) {
|
|
170
|
-
this.histogram.labels(this.labels()).observe(value);
|
|
171
|
-
this.get().then(status => Object.values(this.subscribers).forEach(subscriber => subscriber(status)));
|
|
172
|
-
}
|
|
173
|
-
async get() {
|
|
174
|
-
return this.histogram.get().then(t => new HistogramState(t.values));
|
|
175
|
-
}
|
|
176
|
-
subscribe(node, callback) {
|
|
177
|
-
this.subscribers[node.id()] = callback;
|
|
178
|
-
}
|
|
179
|
-
unsubscribe(node) {
|
|
180
|
-
delete this.subscribers[node.id()];
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
exports.HistogramMetric = HistogramMetric;
|
|
184
|
-
class HistogramState {
|
|
185
|
-
constructor(values) {
|
|
186
|
-
this._values = values;
|
|
187
|
-
let sum = this._values.find(value => value.metricName?.endsWith("_sum"))?.value;
|
|
188
|
-
let count = this._values.find(value => value.metricName?.endsWith("_count"))?.value;
|
|
189
|
-
this._average = (sum && count) ? sum / count : undefined;
|
|
190
|
-
}
|
|
191
|
-
average() {
|
|
192
|
-
return this._average;
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
class SummaryState {
|
|
196
|
-
constructor(values) {
|
|
197
|
-
this._values = values;
|
|
198
|
-
let sum = this._values.find(value => value.metricName?.endsWith("_sum"))?.value;
|
|
199
|
-
let count = this._values.find(value => value.metricName?.endsWith("_count"))?.value;
|
|
200
|
-
this._average = (sum && count) ? sum / count : undefined;
|
|
201
|
-
}
|
|
202
|
-
average() {
|
|
203
|
-
return this._average;
|
|
204
|
-
}
|
|
64
|
+
class DoNothingHistogramMetric {
|
|
65
|
+
observe(_value) { }
|
|
66
|
+
subscribe(_node, _callback) { }
|
|
67
|
+
unsubscribe(_node) { }
|
|
205
68
|
}
|
|
69
|
+
exports.DoNothingHistogramMetric = DoNothingHistogramMetric;
|
|
206
70
|
var PercentileType;
|
|
207
71
|
(function (PercentileType) {
|
|
208
72
|
PercentileType["default"] = "default";
|
|
209
73
|
PercentileType["manual"] = "manual";
|
|
210
74
|
})(PercentileType || (exports.PercentileType = PercentileType = {}));
|
|
211
|
-
class
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
let summaryConfig = {
|
|
216
|
-
name: id,
|
|
217
|
-
help: (config.metricdescription) ? config.metricdescription : config.metricname,
|
|
218
|
-
labelNames: Object.keys(this.labels()),
|
|
219
|
-
registers: [registry],
|
|
220
|
-
};
|
|
221
|
-
if (config.percentileType === PercentileType.default) {
|
|
222
|
-
// do nothing.
|
|
223
|
-
let perceintileConfig = config.percentileConfig;
|
|
224
|
-
summaryConfig.percentiles = [0.01, 0.1, 0.9, 0.99];
|
|
225
|
-
}
|
|
226
|
-
if (config.percentileType === PercentileType.manual) {
|
|
227
|
-
let percentilesConfig = config.percentileConfig;
|
|
228
|
-
summaryConfig.percentiles = percentilesConfig.percentiles;
|
|
229
|
-
}
|
|
230
|
-
this.summary = new prom_client_1.Summary(summaryConfig);
|
|
231
|
-
//this.summary.zero(this._labels as any);
|
|
232
|
-
}
|
|
233
|
-
observe(value) {
|
|
234
|
-
this.summary.labels(this.labels()).observe(value);
|
|
235
|
-
this.get().then(status => Object.values(this.subscribers).forEach(subscriber => subscriber(status)));
|
|
236
|
-
}
|
|
237
|
-
async get() {
|
|
238
|
-
return this.summary.get().then(s => new SummaryState(s.values));
|
|
239
|
-
}
|
|
240
|
-
subscribe(node, callback) {
|
|
241
|
-
this.subscribers[node.id()] = callback;
|
|
242
|
-
}
|
|
243
|
-
unsubscribe(node) {
|
|
244
|
-
delete this.subscribers[node.id()];
|
|
245
|
-
}
|
|
75
|
+
class DoNothingSummaryMetric {
|
|
76
|
+
observe(_value) { }
|
|
77
|
+
subscribe(_node, _callback) { }
|
|
78
|
+
unsubscribe(_node) { }
|
|
246
79
|
}
|
|
247
|
-
exports.
|
|
80
|
+
exports.DoNothingSummaryMetric = DoNothingSummaryMetric;
|
|
81
|
+
// ******************************************************* //
|
|
82
|
+
// MetricsContainer //
|
|
83
|
+
// ******************************************************* //
|
|
248
84
|
class MetricsContainer {
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
this.summaries = {};
|
|
254
|
-
this._config = config;
|
|
255
|
-
// create a registry with the config.
|
|
256
|
-
this._registry = new prom_client_1.default.Registry();
|
|
257
|
-
}
|
|
258
|
-
close() {
|
|
259
|
-
this._registry.clear();
|
|
260
|
-
}
|
|
261
|
-
registry() {
|
|
262
|
-
return this._registry;
|
|
263
|
-
}
|
|
264
|
-
// return true if the two configurations are not the same.
|
|
265
|
-
hasChanged(config) {
|
|
266
|
-
return !(this._config.metricsPath === config.metricsPath &&
|
|
267
|
-
this._config.metricsPort === config.metricsPort);
|
|
85
|
+
// Default implementations warn and return DoNothing - providers override what they support.
|
|
86
|
+
counter(_config) {
|
|
87
|
+
console.warn(`[PluginCore] MetricsContainer: Counter is not supported by this provider.`);
|
|
88
|
+
return new DoNothingCounterMetric();
|
|
268
89
|
}
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
if (counter) {
|
|
273
|
-
// check if the config has changed much.
|
|
274
|
-
if (!(0, deep_equal_1.default)(counter.config(), config)) {
|
|
275
|
-
this._registry.removeSingleMetric(counterId);
|
|
276
|
-
this.counters[counterId] = (counter = new CounterMetric(counterId, config, this._registry));
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
else {
|
|
280
|
-
this.counters[counterId] = (counter = new CounterMetric(counterId, config, this._registry));
|
|
281
|
-
}
|
|
282
|
-
return counter;
|
|
90
|
+
gauge(_config) {
|
|
91
|
+
console.warn(`[PluginCore] MetricsContainer: Gauge is not supported by this provider.`);
|
|
92
|
+
return new DoNothingGaugeMetric();
|
|
283
93
|
}
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
if (gauge) {
|
|
288
|
-
// check if the config has changed much.
|
|
289
|
-
if (!(0, deep_equal_1.default)(gauge.config(), config)) {
|
|
290
|
-
this._registry.removeSingleMetric(gaugeId);
|
|
291
|
-
this.gauges[gaugeId] = (gauge = new GaugeMetric(gaugeId, config, this._registry));
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
else {
|
|
295
|
-
this.gauges[gaugeId] = (gauge = new GaugeMetric(gaugeId, config, this._registry));
|
|
296
|
-
}
|
|
297
|
-
return gauge;
|
|
94
|
+
histogram(_config) {
|
|
95
|
+
console.warn(`[PluginCore] MetricsContainer: Histogram is not supported by this provider.`);
|
|
96
|
+
return new DoNothingHistogramMetric();
|
|
298
97
|
}
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
if (histogram) {
|
|
303
|
-
// check if the config has changed much.
|
|
304
|
-
if (!(0, deep_equal_1.default)(histogram.config(), config)) {
|
|
305
|
-
this._registry.removeSingleMetric(histogramId);
|
|
306
|
-
this.histograms[histogramId] = (histogram = new HistogramMetric(histogramId, config, this._registry));
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
else {
|
|
310
|
-
this.histograms[histogramId] = (histogram = new HistogramMetric(histogramId, config, this._registry));
|
|
311
|
-
}
|
|
312
|
-
return histogram;
|
|
313
|
-
}
|
|
314
|
-
summary(config) {
|
|
315
|
-
const summaryId = `summary_${config.node.id}`;
|
|
316
|
-
let summary = this.summaries[summaryId];
|
|
317
|
-
if (summary) {
|
|
318
|
-
if (!(0, deep_equal_1.default)(summary.config(), config)) {
|
|
319
|
-
this._registry.removeSingleMetric(summaryId);
|
|
320
|
-
this.summaries[summaryId] = (summary = new SummaryMetric(summaryId, config, this._registry));
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
else {
|
|
324
|
-
this.summaries[summaryId] = (summary = new SummaryMetric(summaryId, config, this._registry));
|
|
325
|
-
}
|
|
326
|
-
return summary;
|
|
98
|
+
summary(_config) {
|
|
99
|
+
console.warn(`[PluginCore] MetricsContainer: Summary is not supported by this provider.`);
|
|
100
|
+
return new DoNothingSummaryMetric();
|
|
327
101
|
}
|
|
328
102
|
}
|
|
329
103
|
exports.MetricsContainer = MetricsContainer;
|
|
330
|
-
|
|
331
|
-
|
|
104
|
+
// Silent DoNothing - returned when no provider is installed. Does not warn since this is expected.
|
|
105
|
+
class DoNothingMetricsContainer extends MetricsContainer {
|
|
106
|
+
supports(_capability) { return false; }
|
|
107
|
+
hasChanged(_config) { return false; }
|
|
108
|
+
close() { }
|
|
109
|
+
counter(_config) { return new DoNothingCounterMetric(); }
|
|
110
|
+
gauge(_config) { return new DoNothingGaugeMetric(); }
|
|
111
|
+
histogram(_config) { return new DoNothingHistogramMetric(); }
|
|
112
|
+
summary(_config) { return new DoNothingSummaryMetric(); }
|
|
113
|
+
}
|
|
114
|
+
exports.DoNothingMetricsContainer = DoNothingMetricsContainer;
|
|
115
|
+
// ******************************************************* //
|
|
116
|
+
// MetricsService //
|
|
117
|
+
// ******************************************************* //
|
|
118
|
+
const _GLOBAL_METRICS_KEY = '__plugincore_metrics__';
|
|
119
|
+
function getMetricsStore() {
|
|
120
|
+
if (!global[_GLOBAL_METRICS_KEY])
|
|
121
|
+
global[_GLOBAL_METRICS_KEY] = {};
|
|
122
|
+
return global[_GLOBAL_METRICS_KEY];
|
|
123
|
+
}
|
|
124
|
+
let MetricsService = class MetricsService extends NodeConstructor_1.BaseService {
|
|
332
125
|
constructor() {
|
|
333
126
|
super("MetricsService");
|
|
334
127
|
}
|
|
335
128
|
init(red) {
|
|
336
129
|
this.red = red;
|
|
337
130
|
}
|
|
338
|
-
deinit(
|
|
339
|
-
}
|
|
131
|
+
deinit(_red) { }
|
|
340
132
|
async onDeploy(deployment) {
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
.filter(
|
|
345
|
-
.forEach(
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
.filter(([id, metric]) => !configNodes[id] || metric.hasChanged(configNodes[id]))
|
|
349
|
-
.forEach(([id, metric]) => {
|
|
350
|
-
delete MetricsService.metrics[id];
|
|
351
|
-
metric.close();
|
|
352
|
-
});
|
|
353
|
-
// create the new metrics.
|
|
354
|
-
Object.entries(configNodes)
|
|
355
|
-
.filter(([id, metricConfig]) => !MetricsService.metrics[id])
|
|
356
|
-
.forEach(([id, metricConfig]) => {
|
|
357
|
-
MetricsService.metrics[id] = new MetricsContainer(metricConfig);
|
|
133
|
+
const store = getMetricsStore();
|
|
134
|
+
const flowIds = new Set(deployment.flows.map(e => e.id));
|
|
135
|
+
Object.entries(store)
|
|
136
|
+
.filter(([id]) => !flowIds.has(id))
|
|
137
|
+
.forEach(([id, container]) => {
|
|
138
|
+
delete store[id];
|
|
139
|
+
container.close();
|
|
358
140
|
});
|
|
359
141
|
return Promise.resolve();
|
|
360
142
|
}
|
|
361
|
-
|
|
362
|
-
|
|
143
|
+
/**
|
|
144
|
+
* Called by MetricsConfigNode subclasses on construction.
|
|
145
|
+
* Preserves an existing container across redeploys if the config has not changed
|
|
146
|
+
* (so counters/gauges are not reset unnecessarily).
|
|
147
|
+
*/
|
|
148
|
+
static register(id, config, factory) {
|
|
149
|
+
const store = getMetricsStore();
|
|
150
|
+
const existing = store[id];
|
|
151
|
+
if (existing && !existing.hasChanged(config))
|
|
152
|
+
return;
|
|
153
|
+
if (existing)
|
|
154
|
+
existing.close();
|
|
155
|
+
store[id] = factory();
|
|
363
156
|
}
|
|
364
|
-
static
|
|
365
|
-
return
|
|
157
|
+
static get(reference) {
|
|
158
|
+
return getMetricsStore()[reference.metricsReference] ?? new DoNothingMetricsContainer();
|
|
366
159
|
}
|
|
367
|
-
}
|
|
160
|
+
};
|
|
368
161
|
exports.MetricsService = MetricsService;
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
users should be able to access it in this way:
|
|
378
|
-
|
|
379
|
-
MetricsService.get(<MetricReference>).createCounter(<counterConfig>), though this is mostly just intended for use in the MetricConfigClass.
|
|
380
|
-
|
|
381
|
-
Normally, a handle on the MetricsService should be gained by pulling a reference to the MetricsConfigNode, eg
|
|
382
|
-
this._metrics = (NodeManager.RED.nodes.getNode(config.metricsReference) as any).node().metrics();
|
|
383
|
-
this._counter = this._metrics.counter(this, "messages", "Number of messages that have passed through this node");
|
|
384
|
-
|
|
385
|
-
*/
|
|
162
|
+
exports.MetricsService = MetricsService = __decorate([
|
|
163
|
+
(0, ServiceDescriptionDecorator_1.ServiceDescription)({
|
|
164
|
+
id: "@theotherwillembotha/metricsservice",
|
|
165
|
+
sourceFile: "@theotherwillembotha/node-red-plugincore"
|
|
166
|
+
}),
|
|
167
|
+
__metadata("design:paramtypes", [])
|
|
168
|
+
], MetricsService);
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { Template
|
|
1
|
+
import { Template } from "../../NodeConstructor";
|
|
2
2
|
export declare class CounterMetricTemplate extends Template {
|
|
3
|
-
static getTemplateDescriptor(): TemplateDescriptor;
|
|
4
3
|
}
|
|
5
4
|
//# sourceMappingURL=CounterMetricTemplate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CounterMetricTemplate.d.ts","sourceRoot":"","sources":["../../../../src/core/metrics/template/CounterMetricTemplate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"CounterMetricTemplate.d.ts","sourceRoot":"","sources":["../../../../src/core/metrics/template/CounterMetricTemplate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAIhD,qBAKa,qBAAsB,SAAQ,QAAQ;CAClD"}
|
|
@@ -1,12 +1,23 @@
|
|
|
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.CounterMetricTemplate = void 0;
|
|
4
10
|
const NodeGenerator_1 = require("../../NodeGenerator");
|
|
5
11
|
const NodeConstructor_1 = require("../../NodeConstructor");
|
|
12
|
+
const TemplateDescriptionDecorator_1 = require("../../tagging/TemplateDescriptionDecorator");
|
|
6
13
|
const CounterMetricConfigNode_1 = require("../node/CounterMetricConfigNode");
|
|
7
|
-
class CounterMetricTemplate extends NodeConstructor_1.Template {
|
|
8
|
-
|
|
9
|
-
return new NodeConstructor_1.TemplateDescriptor("countermetric", CounterMetricTemplate, NodeGenerator_1.SourceUtility.getSourcePath("/build/", "/src/") + "CounterMetricTemplate.html", [CounterMetricConfigNode_1.CounterMetricConfigNode]);
|
|
10
|
-
}
|
|
11
|
-
}
|
|
14
|
+
let CounterMetricTemplate = class CounterMetricTemplate extends NodeConstructor_1.Template {
|
|
15
|
+
};
|
|
12
16
|
exports.CounterMetricTemplate = CounterMetricTemplate;
|
|
17
|
+
exports.CounterMetricTemplate = CounterMetricTemplate = __decorate([
|
|
18
|
+
(0, TemplateDescriptionDecorator_1.TemplateDescription)({
|
|
19
|
+
name: "countermetric",
|
|
20
|
+
templateFile: NodeGenerator_1.SourceUtility.getSourcePath("/build/", "/src/") + "CounterMetricTemplate.html",
|
|
21
|
+
dependencies: [CounterMetricConfigNode_1.CounterMetricConfigNode],
|
|
22
|
+
})
|
|
23
|
+
], CounterMetricTemplate);
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { Template
|
|
1
|
+
import { Template } from "../../NodeConstructor";
|
|
2
2
|
export declare class GaugeMetricTemplate extends Template {
|
|
3
|
-
static getTemplateDescriptor(): TemplateDescriptor;
|
|
4
3
|
}
|
|
5
4
|
//# sourceMappingURL=GaugeMetricTemplate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GaugeMetricTemplate.d.ts","sourceRoot":"","sources":["../../../../src/core/metrics/template/GaugeMetricTemplate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"GaugeMetricTemplate.d.ts","sourceRoot":"","sources":["../../../../src/core/metrics/template/GaugeMetricTemplate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAIhD,qBAKa,mBAAoB,SAAQ,QAAQ;CAChD"}
|
|
@@ -1,12 +1,23 @@
|
|
|
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.GaugeMetricTemplate = void 0;
|
|
4
10
|
const NodeGenerator_1 = require("../../NodeGenerator");
|
|
5
11
|
const NodeConstructor_1 = require("../../NodeConstructor");
|
|
12
|
+
const TemplateDescriptionDecorator_1 = require("../../tagging/TemplateDescriptionDecorator");
|
|
6
13
|
const GaugeMetricConfigNode_1 = require("../node/GaugeMetricConfigNode");
|
|
7
|
-
class GaugeMetricTemplate extends NodeConstructor_1.Template {
|
|
8
|
-
|
|
9
|
-
return new NodeConstructor_1.TemplateDescriptor("gaugemetric", GaugeMetricTemplate, NodeGenerator_1.SourceUtility.getSourcePath("/build/", "/src/") + "GaugeMetricTemplate.html", [GaugeMetricConfigNode_1.GaugeMetricConfigNode]);
|
|
10
|
-
}
|
|
11
|
-
}
|
|
14
|
+
let GaugeMetricTemplate = class GaugeMetricTemplate extends NodeConstructor_1.Template {
|
|
15
|
+
};
|
|
12
16
|
exports.GaugeMetricTemplate = GaugeMetricTemplate;
|
|
17
|
+
exports.GaugeMetricTemplate = GaugeMetricTemplate = __decorate([
|
|
18
|
+
(0, TemplateDescriptionDecorator_1.TemplateDescription)({
|
|
19
|
+
name: "gaugemetric",
|
|
20
|
+
templateFile: NodeGenerator_1.SourceUtility.getSourcePath("/build/", "/src/") + "GaugeMetricTemplate.html",
|
|
21
|
+
dependencies: [GaugeMetricConfigNode_1.GaugeMetricConfigNode],
|
|
22
|
+
})
|
|
23
|
+
], GaugeMetricTemplate);
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { BaseNodeConfig, Template
|
|
1
|
+
import { BaseNodeConfig, Template } from "../../NodeConstructor";
|
|
2
2
|
import { MetricsReference } from "../service/MetricsService";
|
|
3
3
|
export interface MetricsTemplateConfig extends BaseNodeConfig, MetricsReference {
|
|
4
4
|
}
|
|
5
5
|
export declare class MetricsTemplate extends Template {
|
|
6
|
-
static getTemplateDescriptor(): TemplateDescriptor;
|
|
7
6
|
}
|
|
8
7
|
//# sourceMappingURL=MetricsTemplate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetricsTemplate.d.ts","sourceRoot":"","sources":["../../../../src/core/metrics/template/MetricsTemplate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"MetricsTemplate.d.ts","sourceRoot":"","sources":["../../../../src/core/metrics/template/MetricsTemplate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAIhE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D,MAAM,WAAW,qBAAsB,SAAQ,cAAc,EAAE,gBAAgB;CAC9E;AAED,qBAKa,eAAgB,SAAQ,QAAQ;CAC5C"}
|
|
@@ -1,12 +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.MetricsTemplate = void 0;
|
|
4
10
|
const NodeGenerator_1 = require("../../NodeGenerator");
|
|
5
11
|
const NodeConstructor_1 = require("../../NodeConstructor");
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
+
const TemplateDescriptionDecorator_1 = require("../../tagging/TemplateDescriptionDecorator");
|
|
13
|
+
const DelegatedConfigReferenceNode_1 = require("../../other/node/DelegatedConfigReferenceNode");
|
|
14
|
+
const MetricsService_1 = require("../service/MetricsService");
|
|
15
|
+
let MetricsTemplate = class MetricsTemplate extends NodeConstructor_1.Template {
|
|
16
|
+
};
|
|
12
17
|
exports.MetricsTemplate = MetricsTemplate;
|
|
18
|
+
exports.MetricsTemplate = MetricsTemplate = __decorate([
|
|
19
|
+
(0, TemplateDescriptionDecorator_1.TemplateDescription)({
|
|
20
|
+
name: "metrics",
|
|
21
|
+
templateFile: NodeGenerator_1.SourceUtility.getSourcePath("/build/", "/src/") + "MetricsTemplate.html",
|
|
22
|
+
dependencies: [DelegatedConfigReferenceNode_1.DelegatedConfigReferenceNode, MetricsService_1.MetricsService],
|
|
23
|
+
})
|
|
24
|
+
], MetricsTemplate);
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { Template
|
|
1
|
+
import { Template } from "../../NodeConstructor";
|
|
2
2
|
export declare class TimerMetricTemplate extends Template {
|
|
3
|
-
static getTemplateDescriptor(): TemplateDescriptor;
|
|
4
3
|
}
|
|
5
4
|
//# sourceMappingURL=TimerMetricTemplate.d.ts.map
|