@theotherwillembotha/node-red-plugincore 0.0.50

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (180) hide show
  1. package/LICENSE +15 -0
  2. package/README.md +190 -0
  3. package/build/GenerateNodes.d.ts +2 -0
  4. package/build/GenerateNodes.d.ts.map +1 -0
  5. package/build/GenerateNodes.js +36 -0
  6. package/build/Nodes.html +1729 -0
  7. package/build/Nodes.js +32 -0
  8. package/build/Plugins.js +74 -0
  9. package/build/core/NodeConstructor.d.ts +188 -0
  10. package/build/core/NodeConstructor.d.ts.map +1 -0
  11. package/build/core/NodeConstructor.js +679 -0
  12. package/build/core/NodeGenerator.d.ts +37 -0
  13. package/build/core/NodeGenerator.d.ts.map +1 -0
  14. package/build/core/NodeGenerator.js +300 -0
  15. package/build/core/Utils.d.ts +7 -0
  16. package/build/core/Utils.d.ts.map +1 -0
  17. package/build/core/Utils.js +19 -0
  18. package/build/core/logger/LoggerDecorator.d.ts +2 -0
  19. package/build/core/logger/LoggerDecorator.d.ts.map +1 -0
  20. package/build/core/logger/LoggerDecorator.js +93 -0
  21. package/build/core/logger/node/ConsoleLoggerConfigNode.d.ts +16 -0
  22. package/build/core/logger/node/ConsoleLoggerConfigNode.d.ts.map +1 -0
  23. package/build/core/logger/node/ConsoleLoggerConfigNode.html +131 -0
  24. package/build/core/logger/node/ConsoleLoggerConfigNode.js +47 -0
  25. package/build/core/logger/node/LoggerConfigNode.d.ts +30 -0
  26. package/build/core/logger/node/LoggerConfigNode.d.ts.map +1 -0
  27. package/build/core/logger/node/LoggerConfigNode.html +307 -0
  28. package/build/core/logger/node/LoggerConfigNode.js +60 -0
  29. package/build/core/logger/node/LokiLoggerConfigNode.d.ts +20 -0
  30. package/build/core/logger/node/LokiLoggerConfigNode.d.ts.map +1 -0
  31. package/build/core/logger/node/LokiLoggerConfigNode.html +153 -0
  32. package/build/core/logger/node/LokiLoggerConfigNode.js +52 -0
  33. package/build/core/logger/node/RestLoggerConfigNode.d.ts +24 -0
  34. package/build/core/logger/node/RestLoggerConfigNode.d.ts.map +1 -0
  35. package/build/core/logger/node/RestLoggerConfigNode.html +209 -0
  36. package/build/core/logger/node/RestLoggerConfigNode.js +57 -0
  37. package/build/core/logger/service/LoggerService.d.ts +88 -0
  38. package/build/core/logger/service/LoggerService.d.ts.map +1 -0
  39. package/build/core/logger/service/LoggerService.js +204 -0
  40. package/build/core/logger/service/LoggerServiceTypes.d.ts +24 -0
  41. package/build/core/logger/service/LoggerServiceTypes.d.ts.map +1 -0
  42. package/build/core/logger/service/LoggerServiceTypes.js +30 -0
  43. package/build/core/logger/template/LoggerTemplate.d.ts +11 -0
  44. package/build/core/logger/template/LoggerTemplate.d.ts.map +1 -0
  45. package/build/core/logger/template/LoggerTemplate.html +328 -0
  46. package/build/core/logger/template/LoggerTemplate.js +12 -0
  47. package/build/core/metrics/MetricsDecorator.d.ts +40 -0
  48. package/build/core/metrics/MetricsDecorator.d.ts.map +1 -0
  49. package/build/core/metrics/MetricsDecorator.js +166 -0
  50. package/build/core/metrics/node/CounterMetricConfigNode.d.ts +16 -0
  51. package/build/core/metrics/node/CounterMetricConfigNode.d.ts.map +1 -0
  52. package/build/core/metrics/node/CounterMetricConfigNode.html +48 -0
  53. package/build/core/metrics/node/CounterMetricConfigNode.js +61 -0
  54. package/build/core/metrics/node/GaugeMetricConfigNode.d.ts +17 -0
  55. package/build/core/metrics/node/GaugeMetricConfigNode.d.ts.map +1 -0
  56. package/build/core/metrics/node/GaugeMetricConfigNode.html +48 -0
  57. package/build/core/metrics/node/GaugeMetricConfigNode.js +61 -0
  58. package/build/core/metrics/node/MetricsConfigNode.d.ts +14 -0
  59. package/build/core/metrics/node/MetricsConfigNode.d.ts.map +1 -0
  60. package/build/core/metrics/node/MetricsConfigNode.html +21 -0
  61. package/build/core/metrics/node/MetricsConfigNode.js +56 -0
  62. package/build/core/metrics/node/TimerMetricConfigNode.d.ts +28 -0
  63. package/build/core/metrics/node/TimerMetricConfigNode.d.ts.map +1 -0
  64. package/build/core/metrics/node/TimerMetricConfigNode.html +190 -0
  65. package/build/core/metrics/node/TimerMetricConfigNode.js +101 -0
  66. package/build/core/metrics/service/MetricsService.d.ts +187 -0
  67. package/build/core/metrics/service/MetricsService.d.ts.map +1 -0
  68. package/build/core/metrics/service/MetricsService.js +385 -0
  69. package/build/core/metrics/template/CounterMetricTemplate.d.ts +5 -0
  70. package/build/core/metrics/template/CounterMetricTemplate.d.ts.map +1 -0
  71. package/build/core/metrics/template/CounterMetricTemplate.html +40 -0
  72. package/build/core/metrics/template/CounterMetricTemplate.js +12 -0
  73. package/build/core/metrics/template/GaugeMetricTemplate.d.ts +5 -0
  74. package/build/core/metrics/template/GaugeMetricTemplate.d.ts.map +1 -0
  75. package/build/core/metrics/template/GaugeMetricTemplate.html +39 -0
  76. package/build/core/metrics/template/GaugeMetricTemplate.js +12 -0
  77. package/build/core/metrics/template/MetricsTemplate.d.ts +8 -0
  78. package/build/core/metrics/template/MetricsTemplate.d.ts.map +1 -0
  79. package/build/core/metrics/template/MetricsTemplate.html +54 -0
  80. package/build/core/metrics/template/MetricsTemplate.js +12 -0
  81. package/build/core/metrics/template/TimerMetricTemplate.d.ts +5 -0
  82. package/build/core/metrics/template/TimerMetricTemplate.d.ts.map +1 -0
  83. package/build/core/metrics/template/TimerMetricTemplate.html +39 -0
  84. package/build/core/metrics/template/TimerMetricTemplate.js +12 -0
  85. package/build/core/other/InputDecorator.d.ts +3 -0
  86. package/build/core/other/InputDecorator.d.ts.map +1 -0
  87. package/build/core/other/InputDecorator.js +43 -0
  88. package/build/core/other/service/InputService.d.ts +16 -0
  89. package/build/core/other/service/InputService.d.ts.map +1 -0
  90. package/build/core/other/service/InputService.js +31 -0
  91. package/build/core/other/service/SettingsService.d.ts +25 -0
  92. package/build/core/other/service/SettingsService.d.ts.map +1 -0
  93. package/build/core/other/service/SettingsService.js +74 -0
  94. package/build/core/other/template/BasicTemplate.d.ts +5 -0
  95. package/build/core/other/template/BasicTemplate.d.ts.map +1 -0
  96. package/build/core/other/template/BasicTemplate.html +76 -0
  97. package/build/core/other/template/BasicTemplate.js +11 -0
  98. package/build/core/other/template/SettingsTemplate.d.ts +5 -0
  99. package/build/core/other/template/SettingsTemplate.d.ts.map +1 -0
  100. package/build/core/other/template/SettingsTemplate.html +128 -0
  101. package/build/core/other/template/SettingsTemplate.js +11 -0
  102. package/build/core/tagging/NodeDescriptionDecorator.d.ts +17 -0
  103. package/build/core/tagging/NodeDescriptionDecorator.d.ts.map +1 -0
  104. package/build/core/tagging/NodeDescriptionDecorator.js +25 -0
  105. package/build/core/tagging/service/NodeTypeService.d.ts +15 -0
  106. package/build/core/tagging/service/NodeTypeService.d.ts.map +1 -0
  107. package/build/core/tagging/service/NodeTypeService.js +47 -0
  108. package/build/core/webhook/WebhookDecorator.d.ts +3 -0
  109. package/build/core/webhook/WebhookDecorator.d.ts.map +1 -0
  110. package/build/core/webhook/WebhookDecorator.js +45 -0
  111. package/build/core/webhook/node/WebhookServerConfigNode.d.ts +16 -0
  112. package/build/core/webhook/node/WebhookServerConfigNode.d.ts.map +1 -0
  113. package/build/core/webhook/node/WebhookServerConfigNode.html +61 -0
  114. package/build/core/webhook/node/WebhookServerConfigNode.js +40 -0
  115. package/build/core/webhook/service/ReverseProxyTypeService.d.ts +29 -0
  116. package/build/core/webhook/service/ReverseProxyTypeService.d.ts.map +1 -0
  117. package/build/core/webhook/service/ReverseProxyTypeService.js +24 -0
  118. package/build/core/webhook/service/WebhookServerService.d.ts +52 -0
  119. package/build/core/webhook/service/WebhookServerService.d.ts.map +1 -0
  120. package/build/core/webhook/service/WebhookServerService.js +146 -0
  121. package/build/core/webhook/template/WebhookTemplate.d.ts +22 -0
  122. package/build/core/webhook/template/WebhookTemplate.d.ts.map +1 -0
  123. package/build/core/webhook/template/WebhookTemplate.html +434 -0
  124. package/build/core/webhook/template/WebhookTemplate.js +12 -0
  125. package/build/index.d.ts +33 -0
  126. package/build/index.d.ts.map +1 -0
  127. package/build/index.js +55 -0
  128. package/package.json +67 -0
  129. package/src/GenerateNodes.ts +42 -0
  130. package/src/core/NodeConstructor.ts +889 -0
  131. package/src/core/NodeGenerator.ts +331 -0
  132. package/src/core/Utils.ts +19 -0
  133. package/src/core/logger/LoggerDecorator.ts +105 -0
  134. package/src/core/logger/node/ConsoleLoggerConfigNode.html +131 -0
  135. package/src/core/logger/node/ConsoleLoggerConfigNode.ts +46 -0
  136. package/src/core/logger/node/LoggerConfigNode.html +307 -0
  137. package/src/core/logger/node/LoggerConfigNode.ts +95 -0
  138. package/src/core/logger/node/LokiLoggerConfigNode.html +153 -0
  139. package/src/core/logger/node/LokiLoggerConfigNode.ts +58 -0
  140. package/src/core/logger/node/RestLoggerConfigNode.html +209 -0
  141. package/src/core/logger/node/RestLoggerConfigNode.ts +67 -0
  142. package/src/core/logger/service/LoggerService.ts +317 -0
  143. package/src/core/logger/service/LoggerServiceTypes.ts +26 -0
  144. package/src/core/logger/template/LoggerTemplate.html +328 -0
  145. package/src/core/logger/template/LoggerTemplate.ts +23 -0
  146. package/src/core/metrics/MetricsDecorator.ts +227 -0
  147. package/src/core/metrics/node/CounterMetricConfigNode.html +48 -0
  148. package/src/core/metrics/node/CounterMetricConfigNode.ts +62 -0
  149. package/src/core/metrics/node/GaugeMetricConfigNode.html +48 -0
  150. package/src/core/metrics/node/GaugeMetricConfigNode.ts +62 -0
  151. package/src/core/metrics/node/MetricsConfigNode.html +21 -0
  152. package/src/core/metrics/node/MetricsConfigNode.ts +55 -0
  153. package/src/core/metrics/node/TimerMetricConfigNode.html +190 -0
  154. package/src/core/metrics/node/TimerMetricConfigNode.ts +118 -0
  155. package/src/core/metrics/service/MetricsService.ts +560 -0
  156. package/src/core/metrics/template/CounterMetricTemplate.html +40 -0
  157. package/src/core/metrics/template/CounterMetricTemplate.ts +15 -0
  158. package/src/core/metrics/template/GaugeMetricTemplate.html +39 -0
  159. package/src/core/metrics/template/GaugeMetricTemplate.ts +15 -0
  160. package/src/core/metrics/template/MetricsTemplate.html +54 -0
  161. package/src/core/metrics/template/MetricsTemplate.ts +18 -0
  162. package/src/core/metrics/template/TimerMetricTemplate.html +39 -0
  163. package/src/core/metrics/template/TimerMetricTemplate.ts +14 -0
  164. package/src/core/other/InputDecorator.ts +57 -0
  165. package/src/core/other/service/InputService.ts +36 -0
  166. package/src/core/other/service/SettingsService.ts +103 -0
  167. package/src/core/other/template/BasicTemplate.html +76 -0
  168. package/src/core/other/template/BasicTemplate.ts +15 -0
  169. package/src/core/other/template/SettingsTemplate.html +128 -0
  170. package/src/core/other/template/SettingsTemplate.ts +17 -0
  171. package/src/core/tagging/NodeDescriptionDecorator.ts +39 -0
  172. package/src/core/tagging/service/NodeTypeService.ts +67 -0
  173. package/src/core/webhook/WebhookDecorator.ts +70 -0
  174. package/src/core/webhook/node/WebhookServerConfigNode.html +61 -0
  175. package/src/core/webhook/node/WebhookServerConfigNode.ts +38 -0
  176. package/src/core/webhook/service/ReverseProxyTypeService.ts +46 -0
  177. package/src/core/webhook/service/WebhookServerService.ts +211 -0
  178. package/src/core/webhook/template/WebhookTemplate.html +434 -0
  179. package/src/core/webhook/template/WebhookTemplate.ts +36 -0
  180. package/src/index.ts +47 -0
@@ -0,0 +1,187 @@
1
+ import { BaseNode, BaseNodeConfig, BaseService, FlowDeployment, ServiceDescriptor } from "../../NodeConstructor";
2
+ import client, { Registry } from "prom-client";
3
+ import { NodeAPI, NodeAPISettingsWithData } from "node-red";
4
+ export declare abstract class Metric<ConfigType extends MetricConfig> {
5
+ private _config;
6
+ private _labels;
7
+ protected constructor(config: ConfigType);
8
+ labels(): Labels;
9
+ config(): ConfigType;
10
+ }
11
+ export type MetricsReference = {
12
+ metricsEnabled: boolean;
13
+ metricsReference: string;
14
+ };
15
+ type CounterCallback = {
16
+ (state: CounterState): void;
17
+ };
18
+ export type CounterState = {
19
+ value: number;
20
+ labels: {};
21
+ };
22
+ export interface CounterMetricConfig extends MetricConfig {
23
+ }
24
+ export declare class CounterMetric extends Metric<CounterMetricConfig> {
25
+ private counter;
26
+ private internalCounter;
27
+ private subscribers;
28
+ constructor(id: string, config: CounterMetricConfig, registry: client.Registry);
29
+ inc(): CounterMetric;
30
+ get(): Promise<CounterState>;
31
+ reset(): void;
32
+ subscribe(node: BaseNode<BaseNodeConfig>, callback: CounterCallback): void;
33
+ unsubscribe(node: BaseNode<BaseNodeConfig>): void;
34
+ }
35
+ type GaugeCallback = {
36
+ (state: GaugeState): void;
37
+ };
38
+ export interface GaugeState {
39
+ value: number;
40
+ }
41
+ export interface GaugeMetricConfig extends MetricConfig {
42
+ }
43
+ export declare class GaugeMetric extends Metric<GaugeMetricConfig> {
44
+ private collector;
45
+ private gauge;
46
+ private subscribers;
47
+ constructor(id: string, config: GaugeMetricConfig, registry: client.Registry);
48
+ inc(): GaugeMetric;
49
+ dec(): GaugeMetric;
50
+ get(): GaugeState;
51
+ reset(): void;
52
+ subscribe(node: BaseNode<BaseNodeConfig>, callback: GaugeCallback): void;
53
+ unsubscribe(node: BaseNode<BaseNodeConfig>): void;
54
+ }
55
+ type HistogramCallback = {
56
+ (state: HistogramState): void;
57
+ };
58
+ export interface DefaultBucketConfig {
59
+ }
60
+ export interface ManualBucketConfig {
61
+ intervals: number[];
62
+ }
63
+ export interface LinearBucketConfig {
64
+ start: number;
65
+ interval: number;
66
+ count: number;
67
+ }
68
+ export interface ExponentialBucketConfig {
69
+ start: number;
70
+ factor: number;
71
+ count: number;
72
+ }
73
+ export interface HistogramMetricConfig extends MetricConfig {
74
+ buckettype: BucketType;
75
+ bucketconfig: DefaultBucketConfig | ManualBucketConfig | LinearBucketConfig | ExponentialBucketConfig;
76
+ }
77
+ export declare enum BucketType {
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);
87
+ observe(value: number): void;
88
+ get(): Promise<HistogramState>;
89
+ subscribe(node: BaseNode<BaseNodeConfig>, callback: HistogramCallback): void;
90
+ unsubscribe(node: BaseNode<BaseNodeConfig>): void;
91
+ }
92
+ declare class HistogramState {
93
+ private _values;
94
+ private _average;
95
+ constructor(values: {
96
+ labels: any;
97
+ value: number;
98
+ metricName?: string;
99
+ }[]);
100
+ average(): number | undefined;
101
+ }
102
+ interface PercentileConfig {
103
+ }
104
+ declare class SummaryState {
105
+ private _values;
106
+ private _average;
107
+ constructor(values: {
108
+ labels: any;
109
+ value: number;
110
+ metricName?: string;
111
+ }[]);
112
+ average(): number | undefined;
113
+ }
114
+ type SummaryCallback = (state: SummaryState) => void;
115
+ export interface DefaultPercentileConfig extends PercentileConfig {
116
+ }
117
+ export interface ManualPercentileConfig extends PercentileConfig {
118
+ percentiles: number[];
119
+ }
120
+ export interface SummaryMetricConfig extends MetricConfig {
121
+ percentileType: PercentileType;
122
+ percentileConfig: PercentileConfig;
123
+ }
124
+ export declare enum PercentileType {
125
+ default = "default",
126
+ manual = "manual"
127
+ }
128
+ export declare class SummaryMetric extends Metric<SummaryMetricConfig> {
129
+ private summary;
130
+ private subscribers;
131
+ constructor(id: string, config: SummaryMetricConfig, registry: Registry);
132
+ observe(value: number): void;
133
+ get(): Promise<SummaryState>;
134
+ subscribe(node: BaseNode<BaseNodeConfig>, callback: SummaryCallback): void;
135
+ unsubscribe(node: BaseNode<BaseNodeConfig>): void;
136
+ }
137
+ interface Labels {
138
+ flow: string;
139
+ type: string;
140
+ name: string;
141
+ id: string;
142
+ metric: string;
143
+ }
144
+ export declare class MetricsContainer {
145
+ private _config;
146
+ private _registry;
147
+ private counters;
148
+ private histograms;
149
+ private gauges;
150
+ private summaries;
151
+ constructor(config: MetricsConfig);
152
+ close(): void;
153
+ registry(): client.Registry;
154
+ hasChanged(config: MetricsConfig): boolean;
155
+ counter(config: CounterMetricConfig): CounterMetric;
156
+ guage(config: GaugeMetricConfig): GaugeMetric;
157
+ histogram(config: HistogramMetricConfig): HistogramMetric;
158
+ summary(config: SummaryMetricConfig): SummaryMetric;
159
+ }
160
+ export declare class MetricsService extends BaseService {
161
+ private static metrics;
162
+ private red;
163
+ constructor();
164
+ init(red: NodeAPI<NodeAPISettingsWithData>): void;
165
+ deinit(red: NodeAPI<NodeAPISettingsWithData>): void;
166
+ onDeploy(deployment: FlowDeployment): Promise<void>;
167
+ 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
+ }
186
+ export {};
187
+ //# sourceMappingURL=MetricsService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MetricsService.d.ts","sourceRoot":"","sources":["../../../../src/core/metrics/service/MetricsService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,385 @@
1
+ "use strict";
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 __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 };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.MetricsService = exports.MetricsContainer = exports.SummaryMetric = exports.PercentileType = exports.HistogramMetric = exports.BucketType = exports.GaugeMetric = exports.CounterMetric = exports.Metric = void 0;
40
+ const NodeConstructor_1 = require("../../NodeConstructor");
41
+ const prom_client_1 = __importStar(require("prom-client"));
42
+ const deep_equal_1 = __importDefault(require("deep-equal"));
43
+ class Metric {
44
+ constructor(config) {
45
+ this._config = config;
46
+ this._labels = { flow: config.node.flow, type: config.node.type, name: config.node.name, id: config.node.id, metric: config.metricname };
47
+ }
48
+ labels() {
49
+ return this._labels;
50
+ }
51
+ config() {
52
+ return this._config;
53
+ }
54
+ }
55
+ exports.Metric = Metric;
56
+ class CounterMetric extends Metric {
57
+ constructor(id, config, registry) {
58
+ super(config);
59
+ this.subscribers = {};
60
+ this.counter = new prom_client_1.Counter({
61
+ name: id,
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
+ }
86
+ }
87
+ exports.CounterMetric = CounterMetric;
88
+ class GaugeMetric extends Metric {
89
+ constructor(id, config, registry) {
90
+ super(config);
91
+ this.collector = 0;
92
+ this.subscribers = {};
93
+ let _this = this;
94
+ this.gauge = new prom_client_1.default.Gauge({
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
+ }
130
+ }
131
+ exports.GaugeMetric = GaugeMetric;
132
+ var BucketType;
133
+ (function (BucketType) {
134
+ BucketType["default"] = "default";
135
+ BucketType["manual"] = "manual";
136
+ BucketType["linear"] = "linear";
137
+ BucketType["exponential"] = "exponential";
138
+ })(BucketType || (exports.BucketType = BucketType = {}));
139
+ class HistogramMetric extends Metric {
140
+ constructor(id, config, registry) {
141
+ super(config);
142
+ this.subscribers = {};
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
+ }
205
+ }
206
+ var PercentileType;
207
+ (function (PercentileType) {
208
+ PercentileType["default"] = "default";
209
+ PercentileType["manual"] = "manual";
210
+ })(PercentileType || (exports.PercentileType = PercentileType = {}));
211
+ class SummaryMetric extends Metric {
212
+ constructor(id, config, registry) {
213
+ super(config);
214
+ this.subscribers = {};
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
+ }
246
+ }
247
+ exports.SummaryMetric = SummaryMetric;
248
+ class MetricsContainer {
249
+ constructor(config) {
250
+ this.counters = {};
251
+ this.histograms = {};
252
+ this.gauges = {};
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);
268
+ }
269
+ counter(config) {
270
+ const counterId = `counter_${config.node.id}`;
271
+ let counter = this.counters[counterId];
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;
283
+ }
284
+ guage(config) {
285
+ var guageId = `gauge_${config.node.id}`;
286
+ var gauge = this.gauges[guageId];
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(guageId);
291
+ this.gauges[guageId] = (gauge = new GaugeMetric(guageId, config, this._registry));
292
+ }
293
+ }
294
+ else {
295
+ this.gauges[guageId] = (gauge = new GaugeMetric(guageId, config, this._registry));
296
+ }
297
+ return gauge;
298
+ }
299
+ histogram(config) {
300
+ const histogramId = `histogram_${config.node.id}`;
301
+ let histogram = this.histograms[histogramId];
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;
327
+ }
328
+ }
329
+ exports.MetricsContainer = MetricsContainer;
330
+ class MetricsService extends NodeConstructor_1.BaseService {
331
+ constructor() {
332
+ super("MetricsService");
333
+ }
334
+ init(red) {
335
+ this.red = red;
336
+ }
337
+ deinit(red) {
338
+ }
339
+ async onDeploy(deployment) {
340
+ // get the FlowElements.
341
+ let configNodes = {};
342
+ deployment.flows
343
+ .filter(element => element.type === "MetricsConfigNode")
344
+ .forEach(element => configNodes[element.id] = element);
345
+ // retire metrics that have been removed or that have changed.
346
+ Object.entries(MetricsService.metrics)
347
+ .filter(([id, metric]) => !configNodes[id] || metric.hasChanged(configNodes[id]))
348
+ .forEach(([id, metric]) => {
349
+ delete MetricsService.metrics[id];
350
+ metric.close();
351
+ });
352
+ // create the new metrics.
353
+ Object.entries(configNodes)
354
+ .filter(([id, metricConfig]) => !MetricsService.metrics[id])
355
+ .forEach(([id, metricConfig]) => {
356
+ MetricsService.metrics[id] = new MetricsContainer(metricConfig);
357
+ });
358
+ return Promise.resolve();
359
+ }
360
+ static get(reference) {
361
+ return MetricsService.metrics[reference.metricsReference];
362
+ }
363
+ static getServiceDescriptor() {
364
+ return new NodeConstructor_1.ServiceDescriptor("@theotherwillembotha/metricsservice", "MetricsService", "services-plugin", "@theotherwillembotha/node-red-plugincore", MetricsService);
365
+ }
366
+ }
367
+ exports.MetricsService = MetricsService;
368
+ MetricsService.metrics = {};
369
+ /*
370
+ Quick explanation of how this is supposed to work:
371
+
372
+ when you deploy a new metricConfig, it should create an instance of "Metric" in the backend.
373
+ this instance should survive flow redeployments, but should be removed if the flow that
374
+ gets deployed no longer contains the metric. The idea is to not have the metrics reset between
375
+ flow deployments or to have the Metric / Repository become unavialable between deployments.
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
+ */
@@ -0,0 +1,5 @@
1
+ import { Template, TemplateDescriptor } from "../../NodeConstructor";
2
+ export declare class CounterMetricTemplate extends Template {
3
+ static getTemplateDescriptor(): TemplateDescriptor;
4
+ }
5
+ //# sourceMappingURL=CounterMetricTemplate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CounterMetricTemplate.d.ts","sourceRoot":"","sources":["../../../../src/core/metrics/template/CounterMetricTemplate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAG,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAGrE,qBAAa,qBAAsB,SAAQ,QAAQ;WAGjC,qBAAqB,IAAI,kBAAkB;CAO5D"}
@@ -0,0 +1,40 @@
1
+ <script type="text/javascript" template-section="onCompose">
2
+ node
3
+ .addDefault("counterConfig", { type:"CounterMetricConfigNode", required: true })
4
+ </script>
5
+
6
+ <script type="text/javascript" template-section="onIncludeEditPrepare">
7
+
8
+ let metricsEnabled = $("#node-{{#if config.isConfigNode}}config-{{/if}}input-metricsEnabled");
9
+ let metricsEnabledSection = $("#section_metricsEnabled");
10
+
11
+ metricsEnabled.on('change', function() {
12
+ if(metricsEnabled.prop("checked")){
13
+ metricsEnabledSection.show();
14
+ node._def.defaults.metricsReference.required = true;
15
+ }
16
+ else{
17
+ metricsEnabledSection.hide()
18
+ node._def.defaults.metricsReference.required = false;
19
+ }
20
+ });
21
+ </script>
22
+
23
+ <script type="text/javascript" template-section="onIncludeEditSave">
24
+
25
+ </script>
26
+
27
+ <script type="text/html" template-section="onIncludeEditForm">
28
+ <!-- CounterMetric -->
29
+ <div id="section_countermetricconfig">
30
+ <div class="form-row">
31
+ <label for="node-input-counterConfig"><i class="fa fa-tag"></i> Counter</label>
32
+ <input type="text" id="node-input-counterConfig" />
33
+ </div>
34
+ </div>
35
+ </script>
36
+
37
+ <script type="text/markdown" template-section="onIncludeDocumentation">
38
+ ### Counter
39
+ : *counter* (counterconfig) : the counter that would be incremented whenever a message is received.
40
+ </script>
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CounterMetricTemplate = void 0;
4
+ const NodeGenerator_1 = require("../../NodeGenerator");
5
+ const NodeConstructor_1 = require("../../NodeConstructor");
6
+ const CounterMetricConfigNode_1 = require("../node/CounterMetricConfigNode");
7
+ class CounterMetricTemplate extends NodeConstructor_1.Template {
8
+ static getTemplateDescriptor() {
9
+ return new NodeConstructor_1.TemplateDescriptor("countermetric", CounterMetricTemplate, NodeGenerator_1.SourceUtility.getSourcePath("/build/", "/src/") + "CounterMetricTemplate.html", [CounterMetricConfigNode_1.CounterMetricConfigNode]);
10
+ }
11
+ }
12
+ exports.CounterMetricTemplate = CounterMetricTemplate;
@@ -0,0 +1,5 @@
1
+ import { Template, TemplateDescriptor } from "../../NodeConstructor";
2
+ export declare class GaugeMetricTemplate extends Template {
3
+ static getTemplateDescriptor(): TemplateDescriptor;
4
+ }
5
+ //# sourceMappingURL=GaugeMetricTemplate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GaugeMetricTemplate.d.ts","sourceRoot":"","sources":["../../../../src/core/metrics/template/GaugeMetricTemplate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAG,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAGrE,qBAAa,mBAAoB,SAAQ,QAAQ;WAG/B,qBAAqB,IAAI,kBAAkB;CAO5D"}