@theotherwillembotha/node-red-plugincore 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/README.md +616 -220
  2. package/build/GenerateNodes.js +3 -6
  3. package/build/Nodes.html +3 -1504
  4. package/build/Nodes.js +5 -15
  5. package/build/Plugins.html +227 -0
  6. package/build/Plugins.js +18 -8
  7. package/build/core/NodeConstructor.d.ts +9 -16
  8. package/build/core/NodeConstructor.d.ts.map +1 -1
  9. package/build/core/NodeConstructor.js +109 -146
  10. package/build/core/NodeGenerator.d.ts.map +1 -1
  11. package/build/core/NodeGenerator.js +79 -28
  12. package/build/core/NodeManagerRuntime.d.ts +44 -0
  13. package/build/core/NodeManagerRuntime.d.ts.map +1 -0
  14. package/build/core/NodeManagerRuntime.js +140 -0
  15. package/build/core/Utils.d.ts.map +1 -1
  16. package/build/core/logger/service/LoggerService.d.ts +6 -5
  17. package/build/core/logger/service/LoggerService.d.ts.map +1 -1
  18. package/build/core/logger/service/LoggerService.js +51 -20
  19. package/build/core/logger/template/LoggerTemplate.d.ts.map +1 -1
  20. package/build/core/metrics/MetricsDecorator.d.ts +1 -2
  21. package/build/core/metrics/MetricsDecorator.d.ts.map +1 -1
  22. package/build/core/metrics/MetricsDecorator.js +89 -116
  23. package/build/core/metrics/node/CounterMetricConfigNode.d.ts.map +1 -1
  24. package/build/core/metrics/node/CounterMetricConfigNode.js +4 -5
  25. package/build/core/metrics/node/GaugeMetricConfigNode.d.ts.map +1 -1
  26. package/build/core/metrics/node/GaugeMetricConfigNode.js +5 -6
  27. package/build/core/metrics/node/MetricsConfigNode.d.ts +19 -9
  28. package/build/core/metrics/node/MetricsConfigNode.d.ts.map +1 -1
  29. package/build/core/metrics/node/MetricsConfigNode.js +14 -45
  30. package/build/core/metrics/node/TimerMetricConfigNode.d.ts.map +1 -1
  31. package/build/core/metrics/node/TimerMetricConfigNode.js +11 -17
  32. package/build/core/metrics/service/MetricsService.d.ts +110 -114
  33. package/build/core/metrics/service/MetricsService.d.ts.map +1 -1
  34. package/build/core/metrics/service/MetricsService.js +122 -339
  35. package/build/core/metrics/template/CounterMetricTemplate.d.ts.map +1 -1
  36. package/build/core/metrics/template/GaugeMetricTemplate.d.ts.map +1 -1
  37. package/build/core/metrics/template/MetricsTemplate.d.ts.map +1 -1
  38. package/build/core/metrics/template/MetricsTemplate.js +1 -2
  39. package/build/core/metrics/template/TimerMetricTemplate.d.ts.map +1 -1
  40. package/build/core/other/node/DelegatedConfigReferenceNode.d.ts +1 -1
  41. package/build/core/other/node/DelegatedConfigReferenceNode.d.ts.map +1 -1
  42. package/build/core/other/node/DelegatedConfigReferenceNode.js +1 -1
  43. package/build/core/other/service/InputService.d.ts.map +1 -1
  44. package/build/core/other/service/SettingsService.d.ts +1 -2
  45. package/build/core/other/service/SettingsService.d.ts.map +1 -1
  46. package/build/core/other/service/SettingsService.js +19 -5
  47. package/build/core/other/template/BasicTemplate.d.ts.map +1 -1
  48. package/build/core/other/template/SettingsTemplate.d.ts.map +1 -1
  49. package/build/core/state/node/InternalStateConfigNode.d.ts +16 -0
  50. package/build/core/state/node/InternalStateConfigNode.d.ts.map +1 -0
  51. package/build/core/state/node/InternalStateConfigNode.js +89 -0
  52. package/build/core/state/node/StateConfigNode.d.ts +24 -0
  53. package/build/core/state/node/StateConfigNode.d.ts.map +1 -0
  54. package/build/core/state/node/StateConfigNode.js +22 -0
  55. package/build/core/state/service/StateService.d.ts +34 -0
  56. package/build/core/state/service/StateService.d.ts.map +1 -0
  57. package/build/core/state/service/StateService.js +201 -0
  58. package/build/core/state/template/StateTemplate.d.ts +8 -0
  59. package/build/core/state/template/StateTemplate.d.ts.map +1 -0
  60. package/build/core/state/template/StateTemplate.js +11 -0
  61. package/build/core/tagging/ServiceDescriptionDecorator.d.ts +10 -0
  62. package/build/core/tagging/ServiceDescriptionDecorator.d.ts.map +1 -0
  63. package/build/core/tagging/ServiceDescriptionDecorator.js +10 -0
  64. package/build/core/tagging/service/NodeTypeService.d.ts +1 -2
  65. package/build/core/tagging/service/NodeTypeService.d.ts.map +1 -1
  66. package/build/core/tagging/service/NodeTypeService.js +19 -5
  67. package/build/core/ui/template/ScriptEditorTemplate.d.ts.map +1 -1
  68. package/build/core/ui/template/UIHelperTemplate.d.ts.map +1 -1
  69. package/build/core/webhook/node/WebhookServerConfigNode.d.ts.map +1 -1
  70. package/build/core/webhook/service/ReverseProxyTypeService.d.ts.map +1 -1
  71. package/build/core/webhook/service/WebhookServerService.d.ts +3 -4
  72. package/build/core/webhook/service/WebhookServerService.d.ts.map +1 -1
  73. package/build/core/webhook/service/WebhookServerService.js +48 -18
  74. package/build/core/webhook/template/WebhookTemplate.d.ts.map +1 -1
  75. package/build/index.d.ts +5 -2
  76. package/build/index.d.ts.map +1 -1
  77. package/build/index.js +6 -2
  78. package/build/runtime/NodeManagerRuntime.js +140 -0
  79. package/documentation/CounterMetricConfigNode.png +0 -0
  80. package/documentation/GaugeMetricConfigNode.png +0 -0
  81. package/documentation/LoggerTemplate.png +0 -0
  82. package/documentation/MetricsTemplate.png +0 -0
  83. package/documentation/StateTemplate.png +0 -0
  84. package/documentation/TimerMetricConfigNode_histogram.png +0 -0
  85. package/documentation/TimerMetricConfigNode_summary.png +0 -0
  86. package/documentation/WebhookServerConfigNode.png +0 -0
  87. package/documentation/WebhookTemplate.png +0 -0
  88. package/package.json +4 -10
  89. package/src/GenerateNodes.ts +7 -11
  90. package/src/core/NodeConstructor.ts +130 -186
  91. package/src/core/NodeGenerator.ts +88 -33
  92. package/src/core/NodeManagerRuntime.ts +179 -0
  93. package/src/core/logger/service/LoggerService.ts +39 -26
  94. package/src/core/logger/template/LoggerTemplate.html +11 -6
  95. package/src/core/metrics/MetricsDecorator.ts +140 -168
  96. package/src/core/metrics/node/CounterMetricConfigNode.ts +20 -20
  97. package/src/core/metrics/node/GaugeMetricConfigNode.ts +24 -25
  98. package/src/core/metrics/node/MetricsConfigNode.ts +29 -48
  99. package/src/core/metrics/node/TimerMetricConfigNode.ts +50 -59
  100. package/src/core/metrics/service/MetricsService.ts +214 -489
  101. package/src/core/metrics/template/CounterMetricTemplate.html +0 -1
  102. package/src/core/metrics/template/GaugeMetricTemplate.html +1 -1
  103. package/src/core/metrics/template/MetricsTemplate.html +132 -13
  104. package/src/core/metrics/template/MetricsTemplate.ts +3 -4
  105. package/src/core/other/node/DelegatedConfigReferenceNode.ts +1 -1
  106. package/src/core/other/service/SettingsService.ts +6 -10
  107. package/src/core/other/template/BasicTemplate.html +1 -1
  108. package/src/core/state/node/InternalStateConfigNode.html +77 -0
  109. package/src/core/state/node/InternalStateConfigNode.ts +102 -0
  110. package/src/core/state/node/StateConfigNode.ts +29 -0
  111. package/src/core/state/service/StateService.ts +180 -0
  112. package/src/core/state/template/StateTemplate.html +244 -0
  113. package/src/core/state/template/StateTemplate.ts +17 -0
  114. package/src/core/tagging/ServiceDescriptionDecorator.ts +23 -0
  115. package/src/core/tagging/service/NodeTypeService.ts +6 -11
  116. package/src/core/ui/template/UIHelperTemplate.html +41 -26
  117. package/src/core/webhook/service/WebhookServerService.ts +39 -23
  118. package/src/core/webhook/template/WebhookTemplate.html +28 -35
  119. package/src/index.ts +7 -2
  120. package/build/core/logger/node/ConsoleLoggerConfigNode.d.ts +0 -20
  121. package/build/core/logger/node/ConsoleLoggerConfigNode.d.ts.map +0 -1
  122. package/build/core/logger/node/ConsoleLoggerConfigNode.js +0 -62
  123. package/build/core/logger/node/RestLoggerConfigNode.d.ts +0 -40
  124. package/build/core/logger/node/RestLoggerConfigNode.d.ts.map +0 -1
  125. package/build/core/logger/node/RestLoggerConfigNode.js +0 -128
  126. package/documentation/ConsoleLoggerConfigNode.png +0 -0
  127. package/documentation/MetricsConfigNode.png +0 -0
  128. package/documentation/RestLoggerConfigNode.png +0 -0
  129. package/documentation/TimerMetricConfigNode.png +0 -0
  130. package/documentation/WebhookNode.png +0 -0
  131. package/src/core/logger/node/ConsoleLoggerConfigNode.html +0 -90
  132. package/src/core/logger/node/ConsoleLoggerConfigNode.ts +0 -71
  133. package/src/core/logger/node/RestLoggerConfigNode.html +0 -183
  134. package/src/core/logger/node/RestLoggerConfigNode.ts +0 -170
@@ -1,134 +1,59 @@
1
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 };
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.SummaryMetric = exports.PercentileType = exports.HistogramMetric = exports.BucketType = exports.GaugeMetric = exports.CounterMetric = exports.Metric = void 0;
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 prom_client_1 = __importStar(require("prom-client"));
42
- const deep_equal_1 = __importDefault(require("deep-equal"));
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 = { 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;
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 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
- }
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.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
- }
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.GaugeMetric = GaugeMetric;
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 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
- }
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 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
- }
75
+ class DoNothingSummaryMetric {
76
+ observe(_value) { }
77
+ subscribe(_node, _callback) { }
78
+ unsubscribe(_node) { }
246
79
  }
247
- exports.SummaryMetric = SummaryMetric;
80
+ exports.DoNothingSummaryMetric = DoNothingSummaryMetric;
81
+ // ******************************************************* //
82
+ // MetricsContainer //
83
+ // ******************************************************* //
248
84
  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);
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
- 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;
90
+ gauge(_config) {
91
+ console.warn(`[PluginCore] MetricsContainer: Gauge is not supported by this provider.`);
92
+ return new DoNothingGaugeMetric();
283
93
  }
284
- gauge(config) {
285
- var gaugeId = `gauge_${config.node.id}`;
286
- var gauge = this.gauges[gaugeId];
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
- 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;
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
- class MetricsService extends NodeConstructor_1.BaseService {
331
- static { this.metrics = {}; }
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(red) {
339
- }
131
+ deinit(_red) { }
340
132
  async onDeploy(deployment) {
341
- // get the FlowElements.
342
- let configNodes = {};
343
- deployment.flows
344
- .filter(element => element.type === "MetricsConfigNode")
345
- .forEach(element => configNodes[element.id] = element);
346
- // retire metrics that have been removed or that have changed.
347
- Object.entries(MetricsService.metrics)
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
- static get(reference) {
362
- return MetricsService.metrics[reference.metricsReference];
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 getServiceDescriptor() {
365
- return new NodeConstructor_1.ServiceDescriptor("@theotherwillembotha/metricsservice", "MetricsService", "services-plugin", "@theotherwillembotha/node-red-plugincore", MetricsService);
157
+ static get(reference) {
158
+ return getMetricsStore()[reference.metricsReference] ?? new DoNothingMetricsContainer();
366
159
  }
367
- }
160
+ };
368
161
  exports.MetricsService = MetricsService;
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
- */
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 +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"}
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;IAG/C,OAAc,qBAAqB,IAAI,kBAAkB,CAMxD;CACJ"}
@@ -1 +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"}
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;IAG7C,OAAc,qBAAqB,IAAI,kBAAkB,CAMxD;CACJ"}
@@ -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,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAEpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D,MAAM,WAAW,qBAAsB,SAAQ,cAAc,EAAE,gBAAgB;CAC9E;AAED,qBAAa,eAAgB,SAAQ,QAAQ;WAE3B,qBAAqB,IAAI,kBAAkB;CAO5D"}
1
+ {"version":3,"file":"MetricsTemplate.d.ts","sourceRoot":"","sources":["../../../../src/core/metrics/template/MetricsTemplate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AACpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D,MAAM,WAAW,qBAAsB,SAAQ,cAAc,EAAE,gBAAgB;CAC9E;AAED,qBAAa,eAAgB,SAAQ,QAAQ;IAEzC,OAAc,qBAAqB,IAAI,kBAAkB,CAMxD;CACJ"}
@@ -3,10 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MetricsTemplate = void 0;
4
4
  const NodeGenerator_1 = require("../../NodeGenerator");
5
5
  const NodeConstructor_1 = require("../../NodeConstructor");
6
- const MetricsConfigNode_1 = require("../node/MetricsConfigNode");
7
6
  class MetricsTemplate extends NodeConstructor_1.Template {
8
7
  static getTemplateDescriptor() {
9
- return new NodeConstructor_1.TemplateDescriptor("metrics", MetricsTemplate, NodeGenerator_1.SourceUtility.getSourcePath("/build/", "/src/") + "MetricsTemplate.html", [MetricsConfigNode_1.MetricsConfigNode]);
8
+ return new NodeConstructor_1.TemplateDescriptor("metrics", MetricsTemplate, NodeGenerator_1.SourceUtility.getSourcePath("/build/", "/src/") + "MetricsTemplate.html", []);
10
9
  }
11
10
  }
12
11
  exports.MetricsTemplate = MetricsTemplate;
@@ -1 +1 @@
1
- {"version":3,"file":"TimerMetricTemplate.d.ts","sourceRoot":"","sources":["../../../../src/core/metrics/template/TimerMetricTemplate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAG,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAGrE,qBAAa,mBAAoB,SAAQ,QAAQ;WAE/B,qBAAqB,IAAI,kBAAkB;CAO5D"}
1
+ {"version":3,"file":"TimerMetricTemplate.d.ts","sourceRoot":"","sources":["../../../../src/core/metrics/template/TimerMetricTemplate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAG,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAGrE,qBAAa,mBAAoB,SAAQ,QAAQ;IAE7C,OAAc,qBAAqB,IAAI,kBAAkB,CAMxD;CACJ"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * DelegatedConfigReferenceNode a framework-internal sentinel type.
2
+ * DelegatedConfigReferenceNode - a framework-internal sentinel type.
3
3
  *
4
4
  * PROBLEM
5
5
  * Node-RED's reference counter (the usage count shown on config nodes in the
@@ -1 +1 @@
1
- {"version":3,"file":"DelegatedConfigReferenceNode.d.ts","sourceRoot":"","sources":["../../../../src/core/other/node/DelegatedConfigReferenceNode.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAIpE,UAAU,kCAAmC,SAAQ,gBAAgB;CAAG;AAExE,qBAOa,4BAA6B,SAAQ,UAAU,CAAC,kCAAkC,CAAC;gBAEhF,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,kCAAkC;CAGrE"}
1
+ {"version":3,"file":"DelegatedConfigReferenceNode.d.ts","sourceRoot":"","sources":["../../../../src/core/other/node/DelegatedConfigReferenceNode.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAIpE,UAAU,kCAAmC,SAAQ,gBAAgB;CAAG;AAExE,qBAOa,4BAA6B,SAAQ,UAAU,CAAC,kCAAkC,CAAC;IAE5F,YAAY,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,kCAAkC,EAEjE;CACJ"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  /**
3
- * DelegatedConfigReferenceNode a framework-internal sentinel type.
3
+ * DelegatedConfigReferenceNode - a framework-internal sentinel type.
4
4
  *
5
5
  * PROBLEM
6
6
  * Node-RED's reference counter (the usage count shown on config nodes in the
@@ -1 +1 @@
1
- {"version":3,"file":"InputService.d.ts","sourceRoot":"","sources":["../../../../src/core/other/service/InputService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAE3E,qBAAa,KAAK;gBACF,IAAI,EAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,EAAC,WAAW,EAAE,OAAO,EAAC,CAAC,OAAO,EAAC,GAAG,EAAE,YAAY,EAAC,CAAC,KAAK,EAAC,GAAG,KAAK,IAAI,KAAK,IAAI;CAWjI;AAED,qBAAa,YAAY;IACrB,OAAO;IAEP,MAAM,CAAC,MAAM,CAAC,IAAI,EAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,EAAC,WAAW,EAAE,OAAO,EAAC,CAAC,OAAO,EAAC,GAAG,EAAE,YAAY,EAAC,QAAQ,KAAK,IAAI,GAAE,KAAK;CAG/H;AAED,MAAM,WAAW,WAAY,SAAQ,cAAc;CAElD;AAED,8BAAsB,YAAY;aACd,OAAO,CAAC,OAAO,EAAC,GAAG,EAAE,YAAY,EAAC,QAAQ,GAAE,IAAI;CACnE;AAED,qBAAa,aAAc,SAAQ,QAAQ;CAE1C"}
1
+ {"version":3,"file":"InputService.d.ts","sourceRoot":"","sources":["../../../../src/core/other/service/InputService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAE3E,qBAAa,KAAK;IACd,YAAY,IAAI,EAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,EAAC,WAAW,EAAE,OAAO,EAAC,CAAC,OAAO,EAAC,GAAG,EAAE,YAAY,EAAC,CAAC,KAAK,EAAC,GAAG,KAAK,IAAI,KAAK,IAAI,EAU7H;CACJ;AAED,qBAAa,YAAY;IACrB,OAAO,eAAgB;IAEvB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,EAAC,WAAW,EAAE,OAAO,EAAC,CAAC,OAAO,EAAC,GAAG,EAAE,YAAY,EAAC,QAAQ,KAAK,IAAI,GAAE,KAAK,CAE3H;CACJ;AAED,MAAM,WAAW,WAAY,SAAQ,cAAc;CAElD;AAED,8BAAsB,YAAY;IAC9B,SAAgB,OAAO,CAAC,OAAO,EAAC,GAAG,EAAE,YAAY,EAAC,QAAQ,GAAE,IAAI,CAAC;CACpE;AAED,qBAAa,aAAc,SAAQ,QAAQ;CAE1C"}
@@ -1,11 +1,10 @@
1
- import { BaseNode, BaseNodeConfig, BaseService, ServiceDescriptor } from "../../NodeConstructor";
1
+ import { BaseNode, BaseNodeConfig, BaseService } from "../../NodeConstructor";
2
2
  import { NodeAPI, NodeAPISettingsWithData } from "node-red";
3
3
  export declare class SettingsService extends BaseService {
4
4
  static create(node: BaseNode<BaseNodeConfig>, config: SettingsConfig): Settings;
5
5
  constructor();
6
6
  init(red: NodeAPI<NodeAPISettingsWithData>): void;
7
7
  deinit(red: NodeAPI<NodeAPISettingsWithData>): void;
8
- static getServiceDescriptor(): ServiceDescriptor;
9
8
  }
10
9
  export declare class Settings {
11
10
  private _settings;
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsService.d.ts","sourceRoot":"","sources":["../../../../src/core/other/service/SettingsService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAe,iBAAiB,EAAC,MAAM,uBAAuB,CAAA;AAC3G,OAAO,EAAQ,OAAO,EAAW,uBAAuB,EAAC,MAAM,UAAU,CAAC;AAE1E,qBAAa,eAAgB,SAAQ,WAAW;IAE5C,MAAM,CAAC,MAAM,CAAC,IAAI,EAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,EAAC,cAAc,GAAG,QAAQ;;IAetE,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,uBAAuB,CAAC,GAAG,IAAI;IAgBjD,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,uBAAuB,CAAC,GAAG,IAAI;WAM1C,oBAAoB,IAAG,iBAAiB;CAS3D;AAED,qBAAa,QAAQ;IAEjB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,OAAO,CAAK;gBAER,QAAQ,EAAC,cAAc,EAAE,MAAM,EAAC,cAAc;IAU1D,KAAK,CAAC,GAAG,EAAC,MAAM,GAAE,GAAG;IAIrB,MAAM,IAAG,GAAG;IAIZ,MAAM,CAAC,GAAG,EAAC,MAAM,EAAE,KAAK,EAAC,GAAG;IAI5B,SAAS,CAAC,KAAK,EAAC,GAAG;IAKnB,UAAU,IAAG,OAAO;IAIpB,OAAO;IAKP,MAAM;CAIT;AAED,MAAM,WAAW,cAAe,SAAQ,cAAc;IAClD,iBAAiB,EAAC,MAAM,CAAA;CAC3B"}
1
+ {"version":3,"file":"SettingsService.d.ts","sourceRoot":"","sources":["../../../../src/core/other/service/SettingsService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAc,MAAM,uBAAuB,CAAA;AAExF,OAAO,EAAQ,OAAO,EAAW,uBAAuB,EAAC,MAAM,UAAU,CAAC;AAE1E,qBAIa,eAAgB,SAAQ,WAAW;IAE5C,MAAM,CAAC,MAAM,CAAC,IAAI,EAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,EAAC,cAAc,GAAG,QAAQ,CAS5E;IAED,cAEC;IAEM,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,uBAAuB,CAAC,GAAG,IAAI,CAcvD;IAEM,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,uBAAuB,CAAC,GAAG,IAAI,CAIzD;CAEJ;AAED,qBAAa,QAAQ;IAEjB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,OAAO,CAAK;IAEpB,YAAY,QAAQ,EAAC,cAAc,EAAE,MAAM,EAAC,cAAc,EAQzD;IAED,KAAK,CAAC,GAAG,EAAC,MAAM,GAAE,GAAG,CAEpB;IAED,MAAM,IAAG,GAAG,CAEX;IAED,MAAM,CAAC,GAAG,EAAC,MAAM,EAAE,KAAK,EAAC,GAAG,QAE3B;IAED,SAAS,CAAC,KAAK,EAAC,GAAG,QAElB;IAGD,UAAU,IAAG,OAAO,CAEnB;IAED,OAAO,SAGN;IAED,MAAM,SAGL;CACJ;AAED,MAAM,WAAW,cAAe,SAAQ,cAAc;IAClD,iBAAiB,EAAC,MAAM,CAAA;CAC3B"}
@@ -1,8 +1,18 @@
1
1
  "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
2
11
  Object.defineProperty(exports, "__esModule", { value: true });
3
12
  exports.Settings = exports.SettingsService = void 0;
4
13
  const NodeConstructor_1 = require("../../NodeConstructor");
5
- class SettingsService extends NodeConstructor_1.BaseService {
14
+ const ServiceDescriptionDecorator_1 = require("../../tagging/ServiceDescriptionDecorator");
15
+ let SettingsService = class SettingsService extends NodeConstructor_1.BaseService {
6
16
  static create(node, config) {
7
17
  // load the settings from the settings file.
8
18
  let settings = NodeConstructor_1.NodeManager.RED.settings.get("NodeSettings_" + config.id);
@@ -32,11 +42,15 @@ class SettingsService extends NodeConstructor_1.BaseService {
32
42
  response.status(404);
33
43
  });
34
44
  }
35
- static getServiceDescriptor() {
36
- return new NodeConstructor_1.ServiceDescriptor("@theotherwillembotha/settingsservice", "SettingsService", "services-plugin", "@theotherwillembotha/node-red-plugincore", SettingsService);
37
- }
38
- }
45
+ };
39
46
  exports.SettingsService = SettingsService;
47
+ exports.SettingsService = SettingsService = __decorate([
48
+ (0, ServiceDescriptionDecorator_1.ServiceDescription)({
49
+ id: "@theotherwillembotha/settingsservice",
50
+ sourceFile: "@theotherwillembotha/node-red-plugincore"
51
+ }),
52
+ __metadata("design:paramtypes", [])
53
+ ], SettingsService);
40
54
  class Settings {
41
55
  constructor(settings, config) {
42
56
  this._settings = settings;
@@ -1 +1 @@
1
- {"version":3,"file":"BasicTemplate.d.ts","sourceRoot":"","sources":["../../../../src/core/other/template/BasicTemplate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAGpE,qBAAa,aAAc,SAAQ,QAAQ;WAE3B,qBAAqB,IAAI,kBAAkB;CAQ1D"}
1
+ {"version":3,"file":"BasicTemplate.d.ts","sourceRoot":"","sources":["../../../../src/core/other/template/BasicTemplate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAGpE,qBAAa,aAAc,SAAQ,QAAQ;IAEzC,OAAc,qBAAqB,IAAI,kBAAkB,CAOxD;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsTemplate.d.ts","sourceRoot":"","sources":["../../../../src/core/other/template/SettingsTemplate.ts"],"names":[],"mappings":"AACA,OAAO,EAAyC,QAAQ,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAG3G,qBAAa,gBAAiB,SAAQ,QAAQ;WAI5B,qBAAqB,IAAI,kBAAkB;CAQ5D"}
1
+ {"version":3,"file":"SettingsTemplate.d.ts","sourceRoot":"","sources":["../../../../src/core/other/template/SettingsTemplate.ts"],"names":[],"mappings":"AACA,OAAO,EAAyC,QAAQ,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAG3G,qBAAa,gBAAiB,SAAQ,QAAQ;IAI1C,OAAc,qBAAqB,IAAI,kBAAkB,CAOxD;CACJ"}