@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.
- package/LICENSE +15 -0
- package/README.md +190 -0
- package/build/GenerateNodes.d.ts +2 -0
- package/build/GenerateNodes.d.ts.map +1 -0
- package/build/GenerateNodes.js +36 -0
- package/build/Nodes.html +1729 -0
- package/build/Nodes.js +32 -0
- package/build/Plugins.js +74 -0
- package/build/core/NodeConstructor.d.ts +188 -0
- package/build/core/NodeConstructor.d.ts.map +1 -0
- package/build/core/NodeConstructor.js +679 -0
- package/build/core/NodeGenerator.d.ts +37 -0
- package/build/core/NodeGenerator.d.ts.map +1 -0
- package/build/core/NodeGenerator.js +300 -0
- package/build/core/Utils.d.ts +7 -0
- package/build/core/Utils.d.ts.map +1 -0
- package/build/core/Utils.js +19 -0
- package/build/core/logger/LoggerDecorator.d.ts +2 -0
- package/build/core/logger/LoggerDecorator.d.ts.map +1 -0
- package/build/core/logger/LoggerDecorator.js +93 -0
- package/build/core/logger/node/ConsoleLoggerConfigNode.d.ts +16 -0
- package/build/core/logger/node/ConsoleLoggerConfigNode.d.ts.map +1 -0
- package/build/core/logger/node/ConsoleLoggerConfigNode.html +131 -0
- package/build/core/logger/node/ConsoleLoggerConfigNode.js +47 -0
- package/build/core/logger/node/LoggerConfigNode.d.ts +30 -0
- package/build/core/logger/node/LoggerConfigNode.d.ts.map +1 -0
- package/build/core/logger/node/LoggerConfigNode.html +307 -0
- package/build/core/logger/node/LoggerConfigNode.js +60 -0
- package/build/core/logger/node/LokiLoggerConfigNode.d.ts +20 -0
- package/build/core/logger/node/LokiLoggerConfigNode.d.ts.map +1 -0
- package/build/core/logger/node/LokiLoggerConfigNode.html +153 -0
- package/build/core/logger/node/LokiLoggerConfigNode.js +52 -0
- package/build/core/logger/node/RestLoggerConfigNode.d.ts +24 -0
- package/build/core/logger/node/RestLoggerConfigNode.d.ts.map +1 -0
- package/build/core/logger/node/RestLoggerConfigNode.html +209 -0
- package/build/core/logger/node/RestLoggerConfigNode.js +57 -0
- package/build/core/logger/service/LoggerService.d.ts +88 -0
- package/build/core/logger/service/LoggerService.d.ts.map +1 -0
- package/build/core/logger/service/LoggerService.js +204 -0
- package/build/core/logger/service/LoggerServiceTypes.d.ts +24 -0
- package/build/core/logger/service/LoggerServiceTypes.d.ts.map +1 -0
- package/build/core/logger/service/LoggerServiceTypes.js +30 -0
- package/build/core/logger/template/LoggerTemplate.d.ts +11 -0
- package/build/core/logger/template/LoggerTemplate.d.ts.map +1 -0
- package/build/core/logger/template/LoggerTemplate.html +328 -0
- package/build/core/logger/template/LoggerTemplate.js +12 -0
- package/build/core/metrics/MetricsDecorator.d.ts +40 -0
- package/build/core/metrics/MetricsDecorator.d.ts.map +1 -0
- package/build/core/metrics/MetricsDecorator.js +166 -0
- package/build/core/metrics/node/CounterMetricConfigNode.d.ts +16 -0
- package/build/core/metrics/node/CounterMetricConfigNode.d.ts.map +1 -0
- package/build/core/metrics/node/CounterMetricConfigNode.html +48 -0
- package/build/core/metrics/node/CounterMetricConfigNode.js +61 -0
- package/build/core/metrics/node/GaugeMetricConfigNode.d.ts +17 -0
- package/build/core/metrics/node/GaugeMetricConfigNode.d.ts.map +1 -0
- package/build/core/metrics/node/GaugeMetricConfigNode.html +48 -0
- package/build/core/metrics/node/GaugeMetricConfigNode.js +61 -0
- package/build/core/metrics/node/MetricsConfigNode.d.ts +14 -0
- package/build/core/metrics/node/MetricsConfigNode.d.ts.map +1 -0
- package/build/core/metrics/node/MetricsConfigNode.html +21 -0
- package/build/core/metrics/node/MetricsConfigNode.js +56 -0
- package/build/core/metrics/node/TimerMetricConfigNode.d.ts +28 -0
- package/build/core/metrics/node/TimerMetricConfigNode.d.ts.map +1 -0
- package/build/core/metrics/node/TimerMetricConfigNode.html +190 -0
- package/build/core/metrics/node/TimerMetricConfigNode.js +101 -0
- package/build/core/metrics/service/MetricsService.d.ts +187 -0
- package/build/core/metrics/service/MetricsService.d.ts.map +1 -0
- package/build/core/metrics/service/MetricsService.js +385 -0
- package/build/core/metrics/template/CounterMetricTemplate.d.ts +5 -0
- package/build/core/metrics/template/CounterMetricTemplate.d.ts.map +1 -0
- package/build/core/metrics/template/CounterMetricTemplate.html +40 -0
- package/build/core/metrics/template/CounterMetricTemplate.js +12 -0
- package/build/core/metrics/template/GaugeMetricTemplate.d.ts +5 -0
- package/build/core/metrics/template/GaugeMetricTemplate.d.ts.map +1 -0
- package/build/core/metrics/template/GaugeMetricTemplate.html +39 -0
- package/build/core/metrics/template/GaugeMetricTemplate.js +12 -0
- package/build/core/metrics/template/MetricsTemplate.d.ts +8 -0
- package/build/core/metrics/template/MetricsTemplate.d.ts.map +1 -0
- package/build/core/metrics/template/MetricsTemplate.html +54 -0
- package/build/core/metrics/template/MetricsTemplate.js +12 -0
- package/build/core/metrics/template/TimerMetricTemplate.d.ts +5 -0
- package/build/core/metrics/template/TimerMetricTemplate.d.ts.map +1 -0
- package/build/core/metrics/template/TimerMetricTemplate.html +39 -0
- package/build/core/metrics/template/TimerMetricTemplate.js +12 -0
- package/build/core/other/InputDecorator.d.ts +3 -0
- package/build/core/other/InputDecorator.d.ts.map +1 -0
- package/build/core/other/InputDecorator.js +43 -0
- package/build/core/other/service/InputService.d.ts +16 -0
- package/build/core/other/service/InputService.d.ts.map +1 -0
- package/build/core/other/service/InputService.js +31 -0
- package/build/core/other/service/SettingsService.d.ts +25 -0
- package/build/core/other/service/SettingsService.d.ts.map +1 -0
- package/build/core/other/service/SettingsService.js +74 -0
- package/build/core/other/template/BasicTemplate.d.ts +5 -0
- package/build/core/other/template/BasicTemplate.d.ts.map +1 -0
- package/build/core/other/template/BasicTemplate.html +76 -0
- package/build/core/other/template/BasicTemplate.js +11 -0
- package/build/core/other/template/SettingsTemplate.d.ts +5 -0
- package/build/core/other/template/SettingsTemplate.d.ts.map +1 -0
- package/build/core/other/template/SettingsTemplate.html +128 -0
- package/build/core/other/template/SettingsTemplate.js +11 -0
- package/build/core/tagging/NodeDescriptionDecorator.d.ts +17 -0
- package/build/core/tagging/NodeDescriptionDecorator.d.ts.map +1 -0
- package/build/core/tagging/NodeDescriptionDecorator.js +25 -0
- package/build/core/tagging/service/NodeTypeService.d.ts +15 -0
- package/build/core/tagging/service/NodeTypeService.d.ts.map +1 -0
- package/build/core/tagging/service/NodeTypeService.js +47 -0
- package/build/core/webhook/WebhookDecorator.d.ts +3 -0
- package/build/core/webhook/WebhookDecorator.d.ts.map +1 -0
- package/build/core/webhook/WebhookDecorator.js +45 -0
- package/build/core/webhook/node/WebhookServerConfigNode.d.ts +16 -0
- package/build/core/webhook/node/WebhookServerConfigNode.d.ts.map +1 -0
- package/build/core/webhook/node/WebhookServerConfigNode.html +61 -0
- package/build/core/webhook/node/WebhookServerConfigNode.js +40 -0
- package/build/core/webhook/service/ReverseProxyTypeService.d.ts +29 -0
- package/build/core/webhook/service/ReverseProxyTypeService.d.ts.map +1 -0
- package/build/core/webhook/service/ReverseProxyTypeService.js +24 -0
- package/build/core/webhook/service/WebhookServerService.d.ts +52 -0
- package/build/core/webhook/service/WebhookServerService.d.ts.map +1 -0
- package/build/core/webhook/service/WebhookServerService.js +146 -0
- package/build/core/webhook/template/WebhookTemplate.d.ts +22 -0
- package/build/core/webhook/template/WebhookTemplate.d.ts.map +1 -0
- package/build/core/webhook/template/WebhookTemplate.html +434 -0
- package/build/core/webhook/template/WebhookTemplate.js +12 -0
- package/build/index.d.ts +33 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +55 -0
- package/package.json +67 -0
- package/src/GenerateNodes.ts +42 -0
- package/src/core/NodeConstructor.ts +889 -0
- package/src/core/NodeGenerator.ts +331 -0
- package/src/core/Utils.ts +19 -0
- package/src/core/logger/LoggerDecorator.ts +105 -0
- package/src/core/logger/node/ConsoleLoggerConfigNode.html +131 -0
- package/src/core/logger/node/ConsoleLoggerConfigNode.ts +46 -0
- package/src/core/logger/node/LoggerConfigNode.html +307 -0
- package/src/core/logger/node/LoggerConfigNode.ts +95 -0
- package/src/core/logger/node/LokiLoggerConfigNode.html +153 -0
- package/src/core/logger/node/LokiLoggerConfigNode.ts +58 -0
- package/src/core/logger/node/RestLoggerConfigNode.html +209 -0
- package/src/core/logger/node/RestLoggerConfigNode.ts +67 -0
- package/src/core/logger/service/LoggerService.ts +317 -0
- package/src/core/logger/service/LoggerServiceTypes.ts +26 -0
- package/src/core/logger/template/LoggerTemplate.html +328 -0
- package/src/core/logger/template/LoggerTemplate.ts +23 -0
- package/src/core/metrics/MetricsDecorator.ts +227 -0
- package/src/core/metrics/node/CounterMetricConfigNode.html +48 -0
- package/src/core/metrics/node/CounterMetricConfigNode.ts +62 -0
- package/src/core/metrics/node/GaugeMetricConfigNode.html +48 -0
- package/src/core/metrics/node/GaugeMetricConfigNode.ts +62 -0
- package/src/core/metrics/node/MetricsConfigNode.html +21 -0
- package/src/core/metrics/node/MetricsConfigNode.ts +55 -0
- package/src/core/metrics/node/TimerMetricConfigNode.html +190 -0
- package/src/core/metrics/node/TimerMetricConfigNode.ts +118 -0
- package/src/core/metrics/service/MetricsService.ts +560 -0
- package/src/core/metrics/template/CounterMetricTemplate.html +40 -0
- package/src/core/metrics/template/CounterMetricTemplate.ts +15 -0
- package/src/core/metrics/template/GaugeMetricTemplate.html +39 -0
- package/src/core/metrics/template/GaugeMetricTemplate.ts +15 -0
- package/src/core/metrics/template/MetricsTemplate.html +54 -0
- package/src/core/metrics/template/MetricsTemplate.ts +18 -0
- package/src/core/metrics/template/TimerMetricTemplate.html +39 -0
- package/src/core/metrics/template/TimerMetricTemplate.ts +14 -0
- package/src/core/other/InputDecorator.ts +57 -0
- package/src/core/other/service/InputService.ts +36 -0
- package/src/core/other/service/SettingsService.ts +103 -0
- package/src/core/other/template/BasicTemplate.html +76 -0
- package/src/core/other/template/BasicTemplate.ts +15 -0
- package/src/core/other/template/SettingsTemplate.html +128 -0
- package/src/core/other/template/SettingsTemplate.ts +17 -0
- package/src/core/tagging/NodeDescriptionDecorator.ts +39 -0
- package/src/core/tagging/service/NodeTypeService.ts +67 -0
- package/src/core/webhook/WebhookDecorator.ts +70 -0
- package/src/core/webhook/node/WebhookServerConfigNode.html +61 -0
- package/src/core/webhook/node/WebhookServerConfigNode.ts +38 -0
- package/src/core/webhook/service/ReverseProxyTypeService.ts +46 -0
- package/src/core/webhook/service/WebhookServerService.ts +211 -0
- package/src/core/webhook/template/WebhookTemplate.html +434 -0
- package/src/core/webhook/template/WebhookTemplate.ts +36 -0
- package/src/index.ts +47 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Template, NodeDescriptor, ServiceDescriptor, TemplateDescriptor } from "./NodeConstructor";
|
|
2
|
+
export interface ITemplateClass {
|
|
3
|
+
new (): Template;
|
|
4
|
+
getTemplateDescriptor(): TemplateDescriptor;
|
|
5
|
+
}
|
|
6
|
+
export interface INodeClass {
|
|
7
|
+
getNodeDescriptor(): NodeDescriptor;
|
|
8
|
+
}
|
|
9
|
+
export interface IServiceClass {
|
|
10
|
+
getServiceDescriptor(): ServiceDescriptor;
|
|
11
|
+
}
|
|
12
|
+
declare class NodeGenerator {
|
|
13
|
+
private static headerWidth;
|
|
14
|
+
private static warning;
|
|
15
|
+
private _rootFolder;
|
|
16
|
+
private _nodes;
|
|
17
|
+
private _services;
|
|
18
|
+
private _templates;
|
|
19
|
+
constructor(rootFolder: string);
|
|
20
|
+
private addDependency;
|
|
21
|
+
registerTemplate(template: ITemplateClass): NodeGenerator;
|
|
22
|
+
registerNode(node: INodeClass): NodeGenerator;
|
|
23
|
+
registerService(service: IServiceClass): NodeGenerator;
|
|
24
|
+
generate(nodesOutputFile: string, pluginsOutputFile: string): void;
|
|
25
|
+
private static generateHeader;
|
|
26
|
+
}
|
|
27
|
+
export { NodeGenerator };
|
|
28
|
+
export interface INamedType {
|
|
29
|
+
name: string;
|
|
30
|
+
}
|
|
31
|
+
export declare class SourceUtility {
|
|
32
|
+
static getSourcePath(buildPath: string, sourcePath: string): string;
|
|
33
|
+
}
|
|
34
|
+
export type Message = {
|
|
35
|
+
[key: string]: any;
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=NodeGenerator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NodeGenerator.d.ts","sourceRoot":"","sources":["../../src/core/NodeGenerator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,QAAQ,EAAE,cAAc,EAAe,iBAAiB,EAA4B,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAIrJ,MAAM,WAAW,cAAc;IAC3B,QAAQ,QAAQ,CAAC;IACjB,qBAAqB,IAAI,kBAAkB,CAAC;CAC/C;AAED,MAAM,WAAW,UAAU;IACvB,iBAAiB,IAAG,cAAc,CAAC;CACtC;AAED,MAAM,WAAW,aAAa;IAC1B,oBAAoB,IAAG,iBAAiB,CAAC;CAC5C;AAED,cAAM,aAAa;IAEf,OAAO,CAAC,MAAM,CAAC,WAAW,CAAM;IAChC,OAAO,CAAC,MAAM,CAAC,OAAO,CAKpB;IAEF,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,MAAM,CAA4E;IAC1F,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,UAAU,CAA2B;gBAE1B,UAAU,EAAC,MAAM;IAIpC,OAAO,CAAC,aAAa;IAmBd,gBAAgB,CAAC,QAAQ,EAAE,cAAc,GAAG,aAAa;IAiBzD,YAAY,CAAC,IAAI,EAAC,UAAU,GAAE,aAAa;IAiB3C,eAAe,CAAC,OAAO,EAAE,aAAa,GAAE,aAAa;IAerD,QAAQ,CAAC,eAAe,EAAC,MAAM,EAAE,iBAAiB,EAAC,MAAM;IA0IhE,OAAO,CAAC,MAAM,CAAC,cAAc;CAQhC;AAID,OAAO,EACH,aAAa,EAChB,CAAA;AAED,MAAM,WAAW,UAAU;IACvB,IAAI,EAAC,MAAM,CAAC;CACf;AAmCD,qBAAa,aAAa;WAER,aAAa,CAAC,SAAS,EAAC,MAAM,EAAE,UAAU,EAAC,MAAM,GAAE,MAAM;CA2B1E;AAED,MAAM,MAAM,OAAO,GAAG;IAClB,CAAC,GAAG,EAAC,MAAM,GAAE,GAAG,CAAC;CACpB,CAAA"}
|
|
@@ -0,0 +1,300 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.SourceUtility = exports.NodeGenerator = void 0;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const NodeConstructor_1 = require("./NodeConstructor");
|
|
39
|
+
const templatePropertyKeys = ["onIncludeOnce", "onIncludeDefaults", "onIncludeEditPrepare", "onIncludeEditPrepare", "onIncludeEditSave", "onIncludeEditForm"];
|
|
40
|
+
class NodeGenerator {
|
|
41
|
+
constructor(rootFolder) {
|
|
42
|
+
this._nodes = {};
|
|
43
|
+
this._services = [];
|
|
44
|
+
this._templates = [];
|
|
45
|
+
this._rootFolder = rootFolder;
|
|
46
|
+
}
|
|
47
|
+
addDependency(dependency) {
|
|
48
|
+
let hierarchy = TypeUtility.getHierrarchy(dependency);
|
|
49
|
+
// check if its a node.
|
|
50
|
+
if (hierarchy.instanceOf(NodeConstructor_1.BaseNode)) {
|
|
51
|
+
this.registerNode(dependency);
|
|
52
|
+
}
|
|
53
|
+
// check if its a service.
|
|
54
|
+
if (hierarchy.instanceOf(NodeConstructor_1.BaseService)) {
|
|
55
|
+
this.registerService(dependency);
|
|
56
|
+
}
|
|
57
|
+
// check if its a template.
|
|
58
|
+
if (hierarchy.instanceOf(NodeConstructor_1.Template)) {
|
|
59
|
+
this.registerTemplate(dependency);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
registerTemplate(template) {
|
|
63
|
+
try {
|
|
64
|
+
// verify that we dont already have this template.
|
|
65
|
+
let descriptor = template.getTemplateDescriptor();
|
|
66
|
+
if (!this._templates.map(t => t.name()).includes(descriptor.name())) {
|
|
67
|
+
this._templates.push(descriptor);
|
|
68
|
+
// FIXME: skip recursive dependency resolution for now.
|
|
69
|
+
// descriptor.dependencies().forEach(dependency => this.addDependency(dependency));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
console.log("ERROR:", error);
|
|
74
|
+
}
|
|
75
|
+
return this;
|
|
76
|
+
}
|
|
77
|
+
registerNode(node) {
|
|
78
|
+
try {
|
|
79
|
+
// verify that we have dont already have this node.
|
|
80
|
+
let descriptor = node.getNodeDescriptor();
|
|
81
|
+
if (!this._nodes[descriptor.name()]) {
|
|
82
|
+
this._nodes[descriptor.name()] = { nodeClass: node, descriptor: descriptor };
|
|
83
|
+
// skip the recursive dependencies for now.
|
|
84
|
+
//descriptor.dependencies().forEach(dependency => this.addDependency(dependency));
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
console.log("ERROR:", error);
|
|
89
|
+
}
|
|
90
|
+
return this;
|
|
91
|
+
}
|
|
92
|
+
registerService(service) {
|
|
93
|
+
try {
|
|
94
|
+
let descriptor = service.getServiceDescriptor();
|
|
95
|
+
if (!this._services.map(s => s.name()).includes(descriptor.name())) {
|
|
96
|
+
this._services.push(descriptor);
|
|
97
|
+
// FIXME: skip recursive dependency resolution for now.
|
|
98
|
+
//descriptor.dependencies().forEach(dependency => this.addDependency(dependency));
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
console.log("ERROR:", service, error);
|
|
103
|
+
}
|
|
104
|
+
return this;
|
|
105
|
+
}
|
|
106
|
+
generate(nodesOutputFile, pluginsOutputFile) {
|
|
107
|
+
// STEP 1. Compile the templates.
|
|
108
|
+
// let templateInclude = this._templates
|
|
109
|
+
// .map(template => new (template.clazz()))
|
|
110
|
+
// .map(template => {
|
|
111
|
+
// return template.onIncludeOnce();
|
|
112
|
+
// })
|
|
113
|
+
// .join("\n");
|
|
114
|
+
let templateInclude = "";
|
|
115
|
+
// STEP 2. compose the HTMLStructure of each of the nodes.
|
|
116
|
+
let nodeHTMLOutut = Object.values(this._nodes)
|
|
117
|
+
.map(node => {
|
|
118
|
+
console.log(`Processing node: ${node.descriptor.name()}`);
|
|
119
|
+
return (0, NodeConstructor_1.buildNode)(node.nodeClass);
|
|
120
|
+
})
|
|
121
|
+
.join("\n");
|
|
122
|
+
fs.writeFileSync(nodesOutputFile + ".html", `
|
|
123
|
+
<!--
|
|
124
|
+
${NodeGenerator.warning}
|
|
125
|
+
-->
|
|
126
|
+
${templateInclude}
|
|
127
|
+
${nodeHTMLOutut}
|
|
128
|
+
|
|
129
|
+
`);
|
|
130
|
+
// Step 3. compose the JS structure for each of the nodes.
|
|
131
|
+
// 1. get a list of the files to import.
|
|
132
|
+
let importList = [
|
|
133
|
+
...Object.values(this._nodes).map(node => {
|
|
134
|
+
return `const ${node.descriptor.name()} = require("${node.descriptor.package()}").${node.descriptor.name()};`;
|
|
135
|
+
//let nodeFile = "./" + node.group() + "/" + node.sourceFile();
|
|
136
|
+
//return `const ${node.name()} = require("${nodeFile}");`;
|
|
137
|
+
}),
|
|
138
|
+
]
|
|
139
|
+
.join("\n");
|
|
140
|
+
// 2. get the exported modules that have to be regestered by the node manager.
|
|
141
|
+
let moduleExports = Object.values(this._nodes).map(node => {
|
|
142
|
+
return ` manager.registerNodeType("${node.descriptor.name()}", ${node.descriptor.name()});`;
|
|
143
|
+
}).join("\n");
|
|
144
|
+
fs.writeFileSync(nodesOutputFile + ".js", `
|
|
145
|
+
/*
|
|
146
|
+
${NodeGenerator.warning}
|
|
147
|
+
*/
|
|
148
|
+
"use strict";
|
|
149
|
+
const NodeManager = require("@theotherwillembotha/node-red-plugincore").NodeManager;
|
|
150
|
+
${importList}
|
|
151
|
+
module.exports = (RED) => {
|
|
152
|
+
let manager = new NodeManager(RED);
|
|
153
|
+
${moduleExports}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
`);
|
|
157
|
+
console.log(`Done building ${Object.keys(this._nodes).length} nodes\n${Object.values(this._nodes).map(node => " - " + node.descriptor.name() + "\n").join("")}\n`);
|
|
158
|
+
let serviceExports = this._services.map(service => {
|
|
159
|
+
return ` manager.registerService(${service.name()}.${service.name()});`;
|
|
160
|
+
}).join("\n");
|
|
161
|
+
let serviceImports = [...this._services.map(service => {
|
|
162
|
+
return `const ${service.name()} = require("${service.sourceFile()}").${service.name()};`;
|
|
163
|
+
})].join("\n");
|
|
164
|
+
let output = `
|
|
165
|
+
/*
|
|
166
|
+
${NodeGenerator.warning}
|
|
167
|
+
*/
|
|
168
|
+
"use strict";
|
|
169
|
+
const runtime = require("node-red").runtime;
|
|
170
|
+
${serviceImports}
|
|
171
|
+
|
|
172
|
+
module.exports = function (RED) {
|
|
173
|
+
|
|
174
|
+
// 1. make a list of all the plugins that need to be installed.
|
|
175
|
+
let pluginList = [${this._services.map(service => service.name()).join(", ")}]
|
|
176
|
+
.map(service => service.getServiceDescriptor())
|
|
177
|
+
.filter(plugin => !RED.plugins.get(plugin.id()));
|
|
178
|
+
|
|
179
|
+
// 2. register a listener if there are any plugins in the pluginList.
|
|
180
|
+
if(pluginList.length > 0){
|
|
181
|
+
RED.events.on('registry:plugin-added', async pluginID => {
|
|
182
|
+
|
|
183
|
+
let addedPlugin = pluginList.find(plugin => plugin.id() === pluginID);
|
|
184
|
+
let plugin = RED.plugins.get(pluginID);
|
|
185
|
+
|
|
186
|
+
if(addedPlugin && plugin.instantiate && !plugin.instance){
|
|
187
|
+
console.log("Deploying instance of: " + plugin.id);
|
|
188
|
+
plugin.instance = new plugin.class();
|
|
189
|
+
|
|
190
|
+
// instantiate the plugin.
|
|
191
|
+
await plugin.instance.init(RED);
|
|
192
|
+
|
|
193
|
+
// publish an event that it has ben deployed.
|
|
194
|
+
RED.events.emit("plugin.instantiated", pluginID);
|
|
195
|
+
|
|
196
|
+
pluginList.splice(pluginList.findIndex(current => current.id() === addedPlugin.id()), 1);
|
|
197
|
+
|
|
198
|
+
// register a flow deployment listener.
|
|
199
|
+
let startupDeployment = true;
|
|
200
|
+
RED.events.on('runtime-event', async (event) => {
|
|
201
|
+
// startup deployment.
|
|
202
|
+
if ("runtime-deploy" === event?.id && startupDeployment) {
|
|
203
|
+
console.log("STARTUP DEPLOYMENT");
|
|
204
|
+
startupDeployment = false;
|
|
205
|
+
const flows = await runtime.flows.getFlows({});
|
|
206
|
+
await plugin.instance.onDeploy(flows);
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
// stopping flows on redeployment.
|
|
210
|
+
if ("runtime-state" === event?.id && event?.payload?.state === "stop" && event?.payload?.deploy) {
|
|
211
|
+
console.log("REDEPLOY!");
|
|
212
|
+
const flows = await runtime.flows.getFlows({});
|
|
213
|
+
await plugin.instance.onDeploy(flows);
|
|
214
|
+
}
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
// 3. register the plugins.
|
|
221
|
+
[...pluginList].forEach(plugin => {
|
|
222
|
+
RED.plugins.registerPlugin(plugin.id(), {
|
|
223
|
+
type: plugin.type(),
|
|
224
|
+
instantiate:true,
|
|
225
|
+
class: plugin.clazz()
|
|
226
|
+
});
|
|
227
|
+
})
|
|
228
|
+
};
|
|
229
|
+
`;
|
|
230
|
+
fs.writeFileSync(pluginsOutputFile + ".js", output);
|
|
231
|
+
console.log(`Done building ${this._services.length} services\n${this._services.map(service => " - " + service.name() + "\n").join("")}\n`);
|
|
232
|
+
}
|
|
233
|
+
static generateHeader(node) {
|
|
234
|
+
let padding = ' '.repeat(Math.max(0, Math.floor(NodeGenerator.headerWidth - node.name().length) / 2));
|
|
235
|
+
return `
|
|
236
|
+
<!-- *${'*'.repeat(NodeGenerator.headerWidth)}* -->
|
|
237
|
+
<!-- ${padding} ${node.name()} ${padding} -->
|
|
238
|
+
<!-- *${'*'.repeat(NodeGenerator.headerWidth)}* -->
|
|
239
|
+
`;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
exports.NodeGenerator = NodeGenerator;
|
|
243
|
+
NodeGenerator.headerWidth = 50;
|
|
244
|
+
NodeGenerator.warning = `
|
|
245
|
+
This file was automatically generated using the NODERED Core utility.
|
|
246
|
+
Any modifications to his file will be overwritten the next time the code is regenerated.
|
|
247
|
+
|
|
248
|
+
You have been warned.
|
|
249
|
+
`;
|
|
250
|
+
class TypeUtility {
|
|
251
|
+
constructor() { }
|
|
252
|
+
static getPrototypes(t) {
|
|
253
|
+
if (!t.name) {
|
|
254
|
+
return [];
|
|
255
|
+
}
|
|
256
|
+
else {
|
|
257
|
+
let types = TypeUtility.getPrototypes(Object.getPrototypeOf(t));
|
|
258
|
+
types.push(t.name);
|
|
259
|
+
return types;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
static getHierrarchy(t) {
|
|
263
|
+
return new Hierarchy(TypeUtility.getPrototypes(t));
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
class Hierarchy {
|
|
267
|
+
constructor(types) {
|
|
268
|
+
this.types = types;
|
|
269
|
+
}
|
|
270
|
+
instanceOf(type) {
|
|
271
|
+
return this.types.includes(type.name);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
class SourceUtility {
|
|
275
|
+
static getSourcePath(buildPath, sourcePath) {
|
|
276
|
+
// use the stack to find the caller of this function.
|
|
277
|
+
let _pst = Error.prepareStackTrace;
|
|
278
|
+
Error.prepareStackTrace = function (err, stack) { return stack; };
|
|
279
|
+
try {
|
|
280
|
+
// get the crrent stack.
|
|
281
|
+
let err = new Error();
|
|
282
|
+
// the first item in the stack is the current file. call and ignore.
|
|
283
|
+
err.stack.shift().getFileName();
|
|
284
|
+
// the second item in the stack is the actual caller.
|
|
285
|
+
let callerFile = err.stack.shift().getFileName();
|
|
286
|
+
// strip away the filename
|
|
287
|
+
callerFile = callerFile.substring(0, callerFile.lastIndexOf("/") + 1);
|
|
288
|
+
// spit on the buildPath indicator
|
|
289
|
+
let pcs = callerFile.split(buildPath);
|
|
290
|
+
// extract the last piece.
|
|
291
|
+
let lastPc = pcs.pop();
|
|
292
|
+
// recombine with the buildPath indicator and glue on the last piece with the source pathIndicator
|
|
293
|
+
return pcs.join(buildPath) + sourcePath + lastPc;
|
|
294
|
+
}
|
|
295
|
+
finally {
|
|
296
|
+
Error.prepareStackTrace = _pst;
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
exports.SourceUtility = SourceUtility;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Utils.d.ts","sourceRoot":"","sources":["../../src/core/Utils.ts"],"names":[],"mappings":"AAAA,cAAM,QAAQ;WACI,UAAU,CAAC,MAAM,EAAC;QAAC,CAAC,GAAG,EAAC,MAAM,GAAE,GAAG,CAAA;KAAC,EAAE,QAAQ,EAAC,MAAM,EAAE,QAAQ,EAAC,GAAG,GAAE,GAAG;CAazF;AAED,OAAO,EACH,QAAQ,EACX,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.JsonUtil = void 0;
|
|
4
|
+
class JsonUtil {
|
|
5
|
+
static jsonUpdate(source, location, newValue) {
|
|
6
|
+
let pointer = source;
|
|
7
|
+
let keys = location.split(".");
|
|
8
|
+
while (keys.length > 1) {
|
|
9
|
+
let key = keys.shift();
|
|
10
|
+
if (!pointer[key]) {
|
|
11
|
+
pointer[key] = {};
|
|
12
|
+
}
|
|
13
|
+
pointer = pointer[key];
|
|
14
|
+
}
|
|
15
|
+
pointer[keys.shift()] = newValue;
|
|
16
|
+
return source;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
exports.JsonUtil = JsonUtil;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoggerDecorator.d.ts","sourceRoot":"","sources":["../../../src/core/logger/LoggerDecorator.ts"],"names":[],"mappings":"AAKA,wBAAgB,MAAM,CAAC,KAAK,CAAC,EAAC,MAAM,GAAE,QAAQ,CAmG7C"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Logger = Logger;
|
|
4
|
+
const NodeConstructor_1 = require("../NodeConstructor");
|
|
5
|
+
function Logger(debug) {
|
|
6
|
+
return function (target, propertyKey) {
|
|
7
|
+
// if the type is a string, then its probably defined in the local (core) module.
|
|
8
|
+
if (typeof propertyKey === "string") {
|
|
9
|
+
const valueSymbol = Symbol(`_${String(propertyKey)}_value`);
|
|
10
|
+
Object.defineProperty(target, propertyKey, {
|
|
11
|
+
get: function () {
|
|
12
|
+
if (!this[valueSymbol]) {
|
|
13
|
+
let node = this;
|
|
14
|
+
//console.log("setting logger on node " + node.name() + " (localized)");
|
|
15
|
+
let config = node.config();
|
|
16
|
+
let logger;
|
|
17
|
+
if (config.logEnabled) {
|
|
18
|
+
let registration = {
|
|
19
|
+
id: config.id,
|
|
20
|
+
flow: node.flow(),
|
|
21
|
+
type: node.type(),
|
|
22
|
+
name: node.name(),
|
|
23
|
+
enabled: config.logEnabled,
|
|
24
|
+
override: config.logTemplateOverrideEnabled,
|
|
25
|
+
template: config.logTemplateOverride
|
|
26
|
+
};
|
|
27
|
+
// get a reference to the loggerService.
|
|
28
|
+
try {
|
|
29
|
+
logger = NodeConstructor_1.NodeManager.RED.nodes.getNode(config.logger).node().registerLogger(registration);
|
|
30
|
+
}
|
|
31
|
+
catch (e) {
|
|
32
|
+
console.log("failed getting logger ", config.logger, e);
|
|
33
|
+
logger = { log() { } };
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
logger = { log() { } };
|
|
38
|
+
}
|
|
39
|
+
this[valueSymbol] = logger;
|
|
40
|
+
}
|
|
41
|
+
return this[valueSymbol];
|
|
42
|
+
},
|
|
43
|
+
enumerable: true,
|
|
44
|
+
configurable: false
|
|
45
|
+
});
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
let property = propertyKey;
|
|
50
|
+
//property.addInitializer(() => {
|
|
51
|
+
property.addInitializer(function () {
|
|
52
|
+
let node = this;
|
|
53
|
+
const valueSymbol = Symbol(`_${String(property.name)}_value`);
|
|
54
|
+
Object.defineProperty(node, property.name, {
|
|
55
|
+
get: function () {
|
|
56
|
+
if (!this[valueSymbol]) {
|
|
57
|
+
//console.log("setting logger on node " + node.name()+ " (externalized)");
|
|
58
|
+
let config = node.config();
|
|
59
|
+
let logger;
|
|
60
|
+
if (config.logEnabled) {
|
|
61
|
+
let registration = {
|
|
62
|
+
id: config.id,
|
|
63
|
+
flow: node.flow(),
|
|
64
|
+
type: node.type(),
|
|
65
|
+
name: node.name(),
|
|
66
|
+
enabled: config.logEnabled,
|
|
67
|
+
override: config.logTemplateOverrideEnabled,
|
|
68
|
+
template: config.logTemplateOverride
|
|
69
|
+
};
|
|
70
|
+
// get a reference to the loggerService.
|
|
71
|
+
try {
|
|
72
|
+
logger = NodeConstructor_1.NodeManager.RED.nodes.getNode(config.logger).node().registerLogger(registration);
|
|
73
|
+
}
|
|
74
|
+
catch (e) {
|
|
75
|
+
console.log("failed getting logger ", config.logger, e);
|
|
76
|
+
logger = { log() { } };
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
logger = { log() { } };
|
|
81
|
+
}
|
|
82
|
+
this[valueSymbol] = logger;
|
|
83
|
+
}
|
|
84
|
+
return this[valueSymbol];
|
|
85
|
+
},
|
|
86
|
+
enumerable: true,
|
|
87
|
+
configurable: false
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Node } from "node-red";
|
|
2
|
+
import { ConfigNode, ConfigNodeConfig } from "../../NodeConstructor";
|
|
3
|
+
import { Log, LoggerRegistration } from "../service/LoggerService";
|
|
4
|
+
import { Level } from "../service/LoggerServiceTypes";
|
|
5
|
+
interface ConsoleLoggerConfigNodeConfig extends ConfigNodeConfig {
|
|
6
|
+
id: string;
|
|
7
|
+
level: Level;
|
|
8
|
+
template: string;
|
|
9
|
+
}
|
|
10
|
+
export declare class ConsoleLoggerConfigNode extends ConfigNode<ConsoleLoggerConfigNodeConfig> {
|
|
11
|
+
private _logger;
|
|
12
|
+
constructor(node: Node, config: ConsoleLoggerConfigNodeConfig);
|
|
13
|
+
registerLogger(registration: LoggerRegistration): Log;
|
|
14
|
+
}
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=ConsoleLoggerConfigNode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConsoleLoggerConfigNode.d.ts","sourceRoot":"","sources":["../../../../src/core/logger/node/ConsoleLoggerConfigNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACpE,OAAO,EAAa,GAAG,EAAE,kBAAkB,EAAiB,MAAM,0BAA0B,CAAA;AAE5F,OAAO,EAAE,KAAK,EAAgB,MAAM,+BAA+B,CAAC;AAGpE,UAAU,6BAA8B,SAAQ,gBAAgB;IAC5D,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAC,KAAK,CAAC;IACZ,QAAQ,EAAC,MAAM,CAAC;CACnB;AAED,qBASa,uBAAwB,SAAQ,UAAU,CAAC,6BAA6B,CAAC;IAElF,OAAO,CAAC,OAAO,CAAkB;gBAErB,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,6BAA6B;IAetD,cAAc,CAAC,YAAY,EAAC,kBAAkB,GAAE,GAAG;CAG7D"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
|
|
2
|
+
<script type="text/javascript" template-section="onCompose">
|
|
3
|
+
node
|
|
4
|
+
.addDefault("name", {value:"Logger Example", required:true})
|
|
5
|
+
.addDefault("platform", {value:"rest", required:true})
|
|
6
|
+
.addDefault("template", {value:`message:{{msg}}`, required:true})
|
|
7
|
+
.addDefault("level", {value:"info", required:true})
|
|
8
|
+
.setPaletteLabel("Console Logger Config Node")
|
|
9
|
+
.setLabel(function() {return this.name })
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
<script type="text/javascript" template-section="onIncludeEditPrepare">
|
|
13
|
+
{
|
|
14
|
+
let node = this;
|
|
15
|
+
|
|
16
|
+
let levelSelection = $("#node-config-input-level");
|
|
17
|
+
levelSelection.typedInput({type:"level", types:[{
|
|
18
|
+
value: "level",
|
|
19
|
+
options: [
|
|
20
|
+
{ value: "DEBUG", label: "debug"},
|
|
21
|
+
{ value: "INFO", label: "info"},
|
|
22
|
+
{ value: "WARNING", label: "warning"},
|
|
23
|
+
{ value: "ERROR", label: "error"},
|
|
24
|
+
]
|
|
25
|
+
}]});
|
|
26
|
+
|
|
27
|
+
this.editor = RED.editor.createEditor({
|
|
28
|
+
id: 'node-config-input-templateEditor',
|
|
29
|
+
mode: 'ace/mode/handlebars',
|
|
30
|
+
value: this.template
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
</script>
|
|
34
|
+
|
|
35
|
+
<script type="text/javascript" template-section="onIncludeEditSave">
|
|
36
|
+
{
|
|
37
|
+
let node = this;
|
|
38
|
+
|
|
39
|
+
this.template = this.editor.getValue();
|
|
40
|
+
this.editor.destroy();
|
|
41
|
+
delete this.editor;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
</script>
|
|
45
|
+
|
|
46
|
+
<script type="text/html" template-section="onIncludeEditForm">
|
|
47
|
+
<div id="LoggerConfig">
|
|
48
|
+
<div class="form-row">
|
|
49
|
+
<label for="node-config-input-name"><i class="fa fa-tag"></i> Name</label>
|
|
50
|
+
<input type="text" id="node-config-input-name" />
|
|
51
|
+
</div>
|
|
52
|
+
|
|
53
|
+
<div class="form-row">
|
|
54
|
+
<label for="node-config-input-level"><i class="fa fa-tag"></i> Level</label>
|
|
55
|
+
<input type="text" id="node-config-input-level" />
|
|
56
|
+
</div>
|
|
57
|
+
|
|
58
|
+
<div class="form-row">
|
|
59
|
+
<label for="node-config-input-templateEditor"><i class="fa fa-tag"></i> Template</label>
|
|
60
|
+
<div style="height: 250px; min-height:150px;" class="node-text-editor" id="node-config-input-templateEditor"></div>
|
|
61
|
+
</div>
|
|
62
|
+
</div>
|
|
63
|
+
</script>
|
|
64
|
+
|
|
65
|
+
<script type="text/markdown" template-section="onIncludeDocumentation">
|
|
66
|
+
Configuration node for the Logger Integration
|
|
67
|
+
|
|
68
|
+
## Inputs
|
|
69
|
+
: *name* (string) : The common name for the logger Configuration
|
|
70
|
+
: *level* (level) : The logging level - debug, info, warning, error
|
|
71
|
+
: *platform*(string) : The common name for the logger Configuration
|
|
72
|
+
: *template*(mustache) : A template for the log messages.
|
|
73
|
+
|
|
74
|
+
## Logger platform
|
|
75
|
+
Currently supported logging platforms
|
|
76
|
+
|
|
77
|
+
### Console
|
|
78
|
+
The log message will be printed out to stdio
|
|
79
|
+
|
|
80
|
+
### Http / Https
|
|
81
|
+
Publish the message to an http endpoint using a http / https POST command.
|
|
82
|
+
|
|
83
|
+
: *url* (url) : The endpoint for the url where requests are to be posted to.
|
|
84
|
+
: *ignore ssl errors* (boolean) : If enabled, the invalid ssl certificates will be ignored.
|
|
85
|
+
: *authentication* (auth method) : what auth method should be used for the http request. (none, basic, api key)
|
|
86
|
+
|
|
87
|
+
#### Authentication
|
|
88
|
+
##### Basic
|
|
89
|
+
Provides basic authentication using the Authorization header
|
|
90
|
+
|
|
91
|
+
: *username* (string) : the username used for basic authentication
|
|
92
|
+
: *password* (string) : the password used for basic authentication
|
|
93
|
+
|
|
94
|
+
##### APIKey
|
|
95
|
+
Provides authentication using a matrix parameter, header or query parameter and an apikey
|
|
96
|
+
|
|
97
|
+
: *mechanism* (mechanism) : the mechanism that will be used for transmitting the key (header, queryparam, matrixparam)
|
|
98
|
+
: *apikey name* (string) : the name of the key used for api authentication. (path variable or query param name)
|
|
99
|
+
: *apikey value*(string) : the value of the api key that will be transmitted. (beware of special characters)
|
|
100
|
+
|
|
101
|
+
### Loki
|
|
102
|
+
Publish the message to a loki endpoint.
|
|
103
|
+
|
|
104
|
+
: *host* (string) : the host and port\ of the loki instance that it being logged to
|
|
105
|
+
: *tenant* (string) : the tenant id that will be used to log to
|
|
106
|
+
: *username* (string) : the username for the loki instance.
|
|
107
|
+
: *authtoken* (string) : the authtoken for the loki instance.
|
|
108
|
+
|
|
109
|
+
# Mustache Templating
|
|
110
|
+
Mustache / Handlebars are used for building up the logged message payloads that are sent to the logging backend.
|
|
111
|
+
The resultant message will be interpreted as a string, meaning care should be taken in the event that a string representation of a json object is built.
|
|
112
|
+
|
|
113
|
+
### Provided Properties
|
|
114
|
+
A couple of values are provided to the logging context by default.
|
|
115
|
+
|
|
116
|
+
: *msg* (object) : an object containing the payload or message that should be parsed through the template.
|
|
117
|
+
: *currentTime* (object) : a string containing the current time in ISO8601 format
|
|
118
|
+
|
|
119
|
+
### Mustache Helpers
|
|
120
|
+
In addition to the provided properties, some "helpers" have also been provided to assist in serialization.
|
|
121
|
+
|
|
122
|
+
: *json* (helper) : converts a json object to a string using the JSON.stringify method.
|
|
123
|
+
|
|
124
|
+
## Examples
|
|
125
|
+
- {{{json msg}}} - serializes the the msg object to json format.
|
|
126
|
+
|
|
127
|
+
# References
|
|
128
|
+
- [Mustache - Wikipedia](https://en.wikipedia.org/wiki/Mustache_(template_system))
|
|
129
|
+
- [Mustache - Playground](https://jgonggrijp.gitlab.io/wontache/playground.html)
|
|
130
|
+
</script>
|
|
131
|
+
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.ConsoleLoggerConfigNode = void 0;
|
|
13
|
+
const NodeConstructor_1 = require("../../NodeConstructor");
|
|
14
|
+
const LoggerService_1 = require("../service/LoggerService");
|
|
15
|
+
const NodeGenerator_1 = require("../../NodeGenerator");
|
|
16
|
+
const LoggerServiceTypes_1 = require("../service/LoggerServiceTypes");
|
|
17
|
+
const NodeDescriptionDecorator_1 = require("../../tagging/NodeDescriptionDecorator");
|
|
18
|
+
let ConsoleLoggerConfigNode = class ConsoleLoggerConfigNode extends NodeConstructor_1.ConfigNode {
|
|
19
|
+
constructor(node, config) {
|
|
20
|
+
super(node, config);
|
|
21
|
+
let _this = this;
|
|
22
|
+
// instantiate the logger.
|
|
23
|
+
let loggerConfig = {
|
|
24
|
+
id: this.id(),
|
|
25
|
+
type: LoggerServiceTypes_1.PlatformType.console,
|
|
26
|
+
template: config.template,
|
|
27
|
+
level: config.level,
|
|
28
|
+
};
|
|
29
|
+
this._logger = LoggerService_1.LoggerService.get(loggerConfig);
|
|
30
|
+
}
|
|
31
|
+
registerLogger(registration) {
|
|
32
|
+
return this._logger.register(registration);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
exports.ConsoleLoggerConfigNode = ConsoleLoggerConfigNode;
|
|
36
|
+
exports.ConsoleLoggerConfigNode = ConsoleLoggerConfigNode = __decorate([
|
|
37
|
+
(0, NodeDescriptionDecorator_1.NodeDescription)({
|
|
38
|
+
id: "ConsoleLoggerConfigNode",
|
|
39
|
+
name: "Console Logger",
|
|
40
|
+
group: "config",
|
|
41
|
+
sourceFile: NodeGenerator_1.SourceUtility.getSourcePath("/build/", "/src/") + "ConsoleLoggerConfigNode.html",
|
|
42
|
+
package: "@theotherwillembotha/node-red-plugincore",
|
|
43
|
+
dependencies: [LoggerService_1.LoggerService],
|
|
44
|
+
tags: ["LoggerType"]
|
|
45
|
+
}),
|
|
46
|
+
__metadata("design:paramtypes", [Object, Object])
|
|
47
|
+
], ConsoleLoggerConfigNode);
|