@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,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SettingsTemplate = void 0;
4
+ const NodeConstructor_1 = require("../../NodeConstructor");
5
+ const NodeGenerator_1 = require("../../NodeGenerator");
6
+ class SettingsTemplate extends NodeConstructor_1.Template {
7
+ static getTemplateDescriptor() {
8
+ return new NodeConstructor_1.TemplateDescriptor("settings", SettingsTemplate, NodeGenerator_1.SourceUtility.getSourcePath("/build/", "/src/") + "SettingsTemplate.html", []);
9
+ }
10
+ }
11
+ exports.SettingsTemplate = SettingsTemplate;
@@ -0,0 +1,17 @@
1
+ import { NodeDependencyType, TemplateConfig } from "../NodeConstructor";
2
+ import { ITemplateClass } from "../NodeGenerator";
3
+ export type NodeDescriptionConfig = {
4
+ id: string;
5
+ name: string;
6
+ group: string;
7
+ sourceFile: string;
8
+ package: string;
9
+ templates?: {
10
+ template: ITemplateClass;
11
+ config: TemplateConfig;
12
+ }[];
13
+ dependencies?: NodeDependencyType[];
14
+ tags?: string[];
15
+ };
16
+ export declare function NodeDescription(config: NodeDescriptionConfig): (target: any) => void;
17
+ //# sourceMappingURL=NodeDescriptionDecorator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeDescriptionDecorator.d.ts","sourceRoot":"","sources":["../../../src/core/tagging/NodeDescriptionDecorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAkB,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACxF,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,MAAM,qBAAqB,GAAG;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAC,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE;QAAC,QAAQ,EAAC,cAAc,CAAC;QAAC,MAAM,EAAC,cAAc,CAAA;KAAC,EAAE,CAAC;IAC/D,YAAY,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACpC,IAAI,CAAC,EAAC,MAAM,EAAE,CAAC;CAClB,CAAA;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAC,qBAAqB,YAChC,GAAG,UAuB9B"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NodeDescription = NodeDescription;
4
+ const NodeConstructor_1 = require("../NodeConstructor");
5
+ function NodeDescription(config) {
6
+ return function (target) {
7
+ let descriptor = new NodeConstructor_1.NodeDescriptor(config.group, config.id, config.sourceFile, config.package);
8
+ if (config.templates) {
9
+ for (let template of config.templates) {
10
+ descriptor.addTemplate(template.template, template.config);
11
+ }
12
+ }
13
+ if (config.tags) {
14
+ for (let tag of config.tags) {
15
+ descriptor.addTag(tag);
16
+ }
17
+ }
18
+ if (config.dependencies) {
19
+ for (let dependency of config.dependencies) {
20
+ descriptor.addDependency(dependency);
21
+ }
22
+ }
23
+ target.getNodeDescriptor = () => descriptor;
24
+ };
25
+ }
@@ -0,0 +1,15 @@
1
+ import { INodeClass } from "../../NodeGenerator";
2
+ import { BaseService, FlowDeployment, ServiceDescriptor } from "../../NodeConstructor";
3
+ import { NodeAPI, NodeAPISettingsWithData } from "node-red";
4
+ export declare class NodeTypeService extends BaseService {
5
+ private red;
6
+ private nodeTypes;
7
+ constructor();
8
+ init(red: NodeAPI<NodeAPISettingsWithData>): void | Promise<void>;
9
+ deinit(red: NodeAPI<NodeAPISettingsWithData>): void | Promise<void>;
10
+ onDeploy(flowDeployment: FlowDeployment): void | Promise<void>;
11
+ registerNodeType(tag: string, resource: INodeClass): Promise<void>;
12
+ getNodeTypesForTag(tag: string): INodeClass[];
13
+ static getServiceDescriptor(): ServiceDescriptor;
14
+ }
15
+ //# sourceMappingURL=NodeTypeService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeTypeService.d.ts","sourceRoot":"","sources":["../../../../src/core/tagging/service/NodeTypeService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAc,cAAc,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACnG,OAAO,EAAE,OAAO,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAG5D,qBAAa,eAAgB,SAAQ,WAAW;IAC5C,OAAO,CAAC,GAAG,CAAoC;IAC/C,OAAO,CAAC,SAAS,CAAkC;;IAM5C,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,uBAAuB,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBjE,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,uBAAuB,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAInE,QAAQ,CAAC,cAAc,EAAE,cAAc,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9D,gBAAgB,CAAC,GAAG,EAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IASjE,kBAAkB,CAAC,GAAG,EAAC,MAAM,GAAE,UAAU,EAAE;WAIlC,oBAAoB,IAAG,iBAAiB;CAU3D"}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NodeTypeService = void 0;
4
+ const NodeConstructor_1 = require("../../NodeConstructor");
5
+ class NodeTypeService extends NodeConstructor_1.BaseService {
6
+ constructor() {
7
+ super("nodetypes");
8
+ this.nodeTypes = {};
9
+ }
10
+ init(red) {
11
+ this.red = red;
12
+ // update the config/
13
+ this.red.httpAdmin.get("/nodetypeservice/find", this.red.auth.needsPermission("inject.write"), (request, response) => {
14
+ let tag = request.query.tag;
15
+ // serialize the types to a javascript friendly format
16
+ let types = this.getNodeTypesForTag(tag).map(type => {
17
+ let description = type.getNodeDescriptor();
18
+ return {
19
+ "id": description.name(),
20
+ "name": description.name(),
21
+ };
22
+ });
23
+ response.send(types);
24
+ });
25
+ return Promise.resolve();
26
+ }
27
+ deinit(red) {
28
+ return Promise.resolve();
29
+ }
30
+ onDeploy(flowDeployment) {
31
+ }
32
+ registerNodeType(tag, resource) {
33
+ let nodes = this.nodeTypes[tag];
34
+ if (!nodes) {
35
+ this.nodeTypes[tag] = nodes = [];
36
+ }
37
+ nodes.push(resource);
38
+ return Promise.resolve();
39
+ }
40
+ getNodeTypesForTag(tag) {
41
+ return this.nodeTypes[tag] ? this.nodeTypes[tag] : [];
42
+ }
43
+ static getServiceDescriptor() {
44
+ return new NodeConstructor_1.ServiceDescriptor("@theotherwillembotha/nodetypeservice", "NodeTypeService", "services-plugin", "@theotherwillembotha/node-red-plugincore", NodeTypeService, []);
45
+ }
46
+ }
47
+ exports.NodeTypeService = NodeTypeService;
@@ -0,0 +1,3 @@
1
+ declare const Webhook: any;
2
+ export { Webhook };
3
+ //# sourceMappingURL=WebhookDecorator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebhookDecorator.d.ts","sourceRoot":"","sources":["../../../src/core/webhook/WebhookDecorator.ts"],"names":[],"mappings":"AAYA,QAAA,MAAM,OAAO,KAoDD,CAAC;AAGb,OAAO,EACH,OAAO,EACV,CAAA"}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Webhook = void 0;
4
+ const LoggerServiceTypes_1 = require("../logger/service/LoggerServiceTypes");
5
+ const NodeConstructor_1 = require("../NodeConstructor");
6
+ const Webhook = (0, NodeConstructor_1.createPostConstructDecorator)('Webhook')
7
+ .withInitLogic(async (instance, propertyKey, webhookconfig) => {
8
+ //console.log(`Registering webhook callback`, "PROPERTYKEY", propertyKey, "WEBHOOK CONFIG", webhookconfig, "THIS", this);
9
+ let node = instance;
10
+ let nodeConfig = node.config();
11
+ // create the authentication.
12
+ let authentication = (nodeConfig.webhookAuth === LoggerServiceTypes_1.RestAuthType.basic) ? { type: LoggerServiceTypes_1.RestAuthType.basic, username: nodeConfig.webhookAuth_basic_username, password: nodeConfig.webhookAuth_basic_password } :
13
+ (nodeConfig.webhookAuth === LoggerServiceTypes_1.RestAuthType.apikey) ? { type: LoggerServiceTypes_1.RestAuthType.apikey, mechanism: nodeConfig.webhookAuth_apikey_mechanism, key: nodeConfig.webhookAuth_apikey_key, value: nodeConfig.webhookAuth_apikey_value } :
14
+ { type: LoggerServiceTypes_1.RestAuthType.none };
15
+ // register a callback listener to the webserver.
16
+ let endpointConfig = {
17
+ path: nodeConfig.webhookPath,
18
+ methods: webhookconfig.methods,
19
+ authentication: authentication
20
+ };
21
+ let webhookServer = NodeConstructor_1.NodeManager.RED.nodes.getNode(nodeConfig.webhook).node().server();
22
+ webhookServer.attach(endpointConfig, (request, respponse) => instance[propertyKey](request, respponse));
23
+ if (nodeConfig.reverseProxies_enabled) {
24
+ await Promise.all(nodeConfig.reverseProxies_connections.map(async (proxy) => {
25
+ try {
26
+ // get a n instance of reverseProxNode.
27
+ let reverseProxyNode = NodeConstructor_1.NodeManager.RED.nodes.getNode(proxy.proxy).node();
28
+ // TODO: ReverseProxyConfigNodes need to become their own subtype of config nodes so we can enforce the ".client()" method.
29
+ let proxyClient = reverseProxyNode.client();
30
+ console.log("List of known hosts: ", await proxyClient.getHosts());
31
+ //console.log("ADD REVERSE PROXY:" + proxy.proxy + " to " + node.id(), proxyClient);
32
+ }
33
+ catch (e) {
34
+ console.log(e);
35
+ }
36
+ return Promise.resolve();
37
+ }));
38
+ }
39
+ // register a close listener to the node.
40
+ node.node().on("close", () => {
41
+ webhookServer.detach(endpointConfig);
42
+ });
43
+ })
44
+ .build();
45
+ exports.Webhook = Webhook;
@@ -0,0 +1,16 @@
1
+ import { Node } from "node-red";
2
+ import { ConfigNode, ConfigNodeConfig } from "../../NodeConstructor";
3
+ import { WebhookServer } from "../service/WebhookServerService";
4
+ interface WebhookServerConfigNodeConfig extends ConfigNodeConfig {
5
+ id: string;
6
+ port: number;
7
+ externalHost: string;
8
+ externalPort: number;
9
+ }
10
+ export declare class WebhookServerConfigNode extends ConfigNode<WebhookServerConfigNodeConfig> {
11
+ private _server;
12
+ constructor(node: Node, config: WebhookServerConfigNodeConfig);
13
+ server(): WebhookServer;
14
+ }
15
+ export {};
16
+ //# sourceMappingURL=WebhookServerConfigNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebhookServerConfigNode.d.ts","sourceRoot":"","sources":["../../../../src/core/webhook/node/WebhookServerConfigNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAEpE,OAAO,EAAE,aAAa,EAAwB,MAAM,iCAAiC,CAAC;AAGtF,UAAU,6BAA8B,SAAQ,gBAAgB;IAC5D,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAC,MAAM,CAAC;IACpB,YAAY,EAAC,MAAM,CAAC;CACvB;AAED,qBASa,uBAAwB,SAAQ,UAAU,CAAC,6BAA6B,CAAC;IAClF,OAAO,CAAC,OAAO,CAAgB;gBAEnB,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,6BAA6B;IAQtD,MAAM,IAAG,aAAa;CAGhC"}
@@ -0,0 +1,61 @@
1
+
2
+ <script type="text/javascript" template-section="onCompose">
3
+ node
4
+ .addDefault("name", { value:"Webhook Example", required:true})
5
+ .addDefault("port", { value:6644, required:true})
6
+ .addDefault("externalHost", { value:"localhost", required:true })
7
+ .addDefault("externalPort", { value:6644, required:true})
8
+ .addDefault("name", { value:"Example Test Node", required:true})
9
+ .setPaletteLabel("Webhook")
10
+ .setLabelStyle("node_label_white")
11
+ .setLabel(function() {return this.name })
12
+ .setColor("#0050E5")
13
+ .setInput("testInput")
14
+ .addOutputs("testOutput1","testOutput2","testOutput3")
15
+ </script>
16
+
17
+ <div template-section="onIncludeOnce">
18
+ </div>
19
+
20
+
21
+ <script type="text/html" template-section="onIncludeEditForm">\
22
+ <div id="WebhookServerConfig">
23
+ <div class="form-row">
24
+ <label for="node-config-input-name"><i class="fa fa-tag"></i> Name</label>
25
+ <input type="text" id="node-config-input-name" />
26
+ </div>
27
+
28
+ <div class="form-row">
29
+ <label for="node-config-input-port"><i class="fa fa-tag"></i> Port</label>
30
+ <input type="number" id="node-config-input-port" />
31
+ </div>
32
+
33
+ <div class="form-row">
34
+ <label for="node-config-input-externalHost"><i class="fa fa-tag"></i> External Host</label>
35
+ <input type="text" id="node-config-input-externalHost" />
36
+ </div>
37
+
38
+ <div class="form-row">
39
+ <label for="node-config-input-externalPort"><i class="fa fa-tag"></i> External Port</label>
40
+ <input type="number" id="node-config-input-externalPort" />
41
+ </div>
42
+ <!-- add a button here to autmatically find an open port -->
43
+ </div>
44
+
45
+ </script>
46
+
47
+ <script type="text/markdown" template-section="onIncludeDocumentation">
48
+ Configuration node for an Express HTTP server that webhook nodes attach to. A single server instance is shared by all webhook nodes that reference it. The server is started when the flow is first deployed and stopped when it is torn down.
49
+
50
+ ### Inputs
51
+ : *name* (string) : A descriptive name for this webhook server.
52
+ : *port* (number) : The local port the HTTP server will listen on. Defaults to `6644`. Each server instance must use a unique port.
53
+
54
+ ### Reverse Proxy
55
+ When this server sits behind a reverse proxy, configure the following fields so that webhook nodes know the externally-visible address. This is used when registering endpoints with a reverse proxy service.
56
+
57
+ : *external host* (string) : The public hostname or IP of the reverse proxy (e.g. `myserver.example.com`).
58
+ : *external port* (number) : The public port exposed by the reverse proxy.
59
+ </script>
60
+
61
+
@@ -0,0 +1,40 @@
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.WebhookServerConfigNode = void 0;
13
+ const NodeConstructor_1 = require("../../NodeConstructor");
14
+ const NodeGenerator_1 = require("../../NodeGenerator");
15
+ const WebhookServerService_1 = require("../service/WebhookServerService");
16
+ const NodeDescriptionDecorator_1 = require("../../tagging/NodeDescriptionDecorator");
17
+ let WebhookServerConfigNode = class WebhookServerConfigNode extends NodeConstructor_1.ConfigNode {
18
+ constructor(node, config) {
19
+ super(node, config);
20
+ let _this = this;
21
+ // instantiate the webhook here.. or get a reference to it atleast.
22
+ this._server = WebhookServerService_1.WebhookServerService.get(config);
23
+ }
24
+ server() {
25
+ return this._server;
26
+ }
27
+ };
28
+ exports.WebhookServerConfigNode = WebhookServerConfigNode;
29
+ exports.WebhookServerConfigNode = WebhookServerConfigNode = __decorate([
30
+ (0, NodeDescriptionDecorator_1.NodeDescription)({
31
+ id: "WebhookServerConfigNode",
32
+ name: "Webhook Server Config Node",
33
+ group: "config",
34
+ sourceFile: NodeGenerator_1.SourceUtility.getSourcePath("/build/", "/src/") + "WebhookServerConfigNode.html",
35
+ package: "@theotherwillembotha/node-red-plugincore",
36
+ dependencies: [WebhookServerService_1.WebhookServerService],
37
+ tags: ["Core"]
38
+ }),
39
+ __metadata("design:paramtypes", [Object, Object])
40
+ ], WebhookServerConfigNode);
@@ -0,0 +1,29 @@
1
+ export declare abstract class ReverseProxyType {
2
+ private _id;
3
+ private _name;
4
+ constructor(id: string, name: string);
5
+ id(): string;
6
+ name(): string;
7
+ }
8
+ export interface ProxyManagerClient {
9
+ updateHost(data: Partial<HostEntry>): Promise<void>;
10
+ getHosts(): Promise<Partial<HostEntry>[]>;
11
+ }
12
+ export declare abstract class ReverseProxyClient {
13
+ }
14
+ export type HostEntry = {
15
+ id: number;
16
+ domainNames: string[];
17
+ scheme: HTTPScheme;
18
+ forwardHost: string;
19
+ forwardPort: number;
20
+ accessList: string;
21
+ cacheAssets: boolean;
22
+ blockCommonExploits: boolean;
23
+ websocketSupport: boolean;
24
+ };
25
+ export declare enum HTTPScheme {
26
+ HTTP = "http",
27
+ HTTPS = "https"
28
+ }
29
+ //# sourceMappingURL=ReverseProxyTypeService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReverseProxyTypeService.d.ts","sourceRoot":"","sources":["../../../../src/core/webhook/service/ReverseProxyTypeService.ts"],"names":[],"mappings":"AAGA,8BAAsB,gBAAgB;IAElC,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,KAAK,CAAS;gBAEV,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC,MAAM;IAK3B,EAAE,IAAG,MAAM;IAGX,IAAI,IAAG,MAAM;CAGvB;AAED,MAAM,WAAW,kBAAkB;IAC/B,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,GAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,QAAQ,IAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;CAC5C;AAED,8BAAsB,kBAAkB;CAEvC;AAED,MAAM,MAAM,SAAS,GAAG;IACpB,EAAE,EAAC,MAAM,CAAC;IACV,WAAW,EAAC,MAAM,EAAE,CAAC;IACrB,MAAM,EAAC,UAAU,CAAC;IAClB,WAAW,EAAC,MAAM,CAAC;IACnB,WAAW,EAAC,MAAM,CAAC;IACnB,UAAU,EAAC,MAAM,CAAC;IAClB,WAAW,EAAC,OAAO,CAAC;IACpB,mBAAmB,EAAC,OAAO,CAAC;IAC5B,gBAAgB,EAAC,OAAO,CAAC;CAC5B,CAAA;AAED,oBAAY,UAAU;IAClB,IAAI,SAAS;IACb,KAAK,UAAU;CAClB"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HTTPScheme = exports.ReverseProxyClient = exports.ReverseProxyType = void 0;
4
+ class ReverseProxyType {
5
+ constructor(id, name) {
6
+ this._id = id;
7
+ this._name = name;
8
+ }
9
+ id() {
10
+ return this._id;
11
+ }
12
+ name() {
13
+ return this._name;
14
+ }
15
+ }
16
+ exports.ReverseProxyType = ReverseProxyType;
17
+ class ReverseProxyClient {
18
+ }
19
+ exports.ReverseProxyClient = ReverseProxyClient;
20
+ var HTTPScheme;
21
+ (function (HTTPScheme) {
22
+ HTTPScheme["HTTP"] = "http";
23
+ HTTPScheme["HTTPS"] = "https";
24
+ })(HTTPScheme || (exports.HTTPScheme = HTTPScheme = {}));
@@ -0,0 +1,52 @@
1
+ import { BaseService, FlowDeployment, ServiceDescriptor } from "../../NodeConstructor";
2
+ import { NodeAPI, NodeAPISettingsWithData } from "node-red";
3
+ import { Request, Response } from "express";
4
+ import { ApiKeyMechanismType, RestAuthType } from "../../logger/service/LoggerServiceTypes";
5
+ export declare enum EndpointMethodType {
6
+ GET = "GET",
7
+ POST = "POST"
8
+ }
9
+ export type NoAuthenticationConfig = {
10
+ type: RestAuthType.none;
11
+ };
12
+ export type BasicAuthenticationConfig = {
13
+ type: RestAuthType.basic;
14
+ username: string;
15
+ password: string;
16
+ };
17
+ export type ApiKeyAuthenticationConfig = {
18
+ type: RestAuthType.apikey;
19
+ mechanism: ApiKeyMechanismType;
20
+ key: string;
21
+ value: string;
22
+ };
23
+ export type EndpointConfig = {
24
+ path: string;
25
+ methods: EndpointMethodType[];
26
+ authentication: NoAuthenticationConfig | BasicAuthenticationConfig | ApiKeyAuthenticationConfig;
27
+ };
28
+ export declare class WebhookServer {
29
+ private _config;
30
+ private _app;
31
+ private _listener;
32
+ constructor(config: WebhookServerConfig);
33
+ attach(endpoint: EndpointConfig, callback: (request: Request, response: Response) => any): void;
34
+ detach(configuration: EndpointConfig): void;
35
+ config(): WebhookServerConfig;
36
+ }
37
+ export type WebhookServerConfig = {
38
+ id: string;
39
+ port: number;
40
+ externalHost: string;
41
+ externalPort: number;
42
+ };
43
+ export declare class WebhookServerService extends BaseService {
44
+ private static webhookServers;
45
+ constructor();
46
+ init(red: NodeAPI<NodeAPISettingsWithData>): void | Promise<void>;
47
+ deinit(red: NodeAPI<NodeAPISettingsWithData>): void | Promise<void>;
48
+ onDeploy(flowDeployment: FlowDeployment): void | Promise<void>;
49
+ static get(config: WebhookServerConfig): WebhookServer;
50
+ static getServiceDescriptor(): ServiceDescriptor;
51
+ }
52
+ //# sourceMappingURL=WebhookServerService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebhookServerService.d.ts","sourceRoot":"","sources":["../../../../src/core/webhook/service/WebhookServerService.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,WAAW,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACtF,OAAO,EAAE,OAAO,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAG5D,OAAgB,EAAU,OAAO,EAAE,QAAQ,EAAC,MAAM,SAAS,CAAC;AAE5D,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAI5F,oBAAY,kBAAkB;IAC1B,GAAG,QAAQ;IACX,IAAI,SAAS;CAChB;AAED,MAAM,MAAM,sBAAsB,GAAG;IACjC,IAAI,EAAC,YAAY,CAAC,IAAI,CAAC;CAC1B,CAAA;AAED,MAAM,MAAM,yBAAyB,GAAG;IACpC,IAAI,EAAC,YAAY,CAAC,KAAK,CAAA;IACvB,QAAQ,EAAC,MAAM,CAAC;IAChB,QAAQ,EAAC,MAAM,CAAC;CACnB,CAAA;AAED,MAAM,MAAM,0BAA0B,GAAG;IACrC,IAAI,EAAC,YAAY,CAAC,MAAM,CAAC;IACzB,SAAS,EAAC,mBAAmB,CAAC;IAC9B,GAAG,EAAC,MAAM,CAAC;IACX,KAAK,EAAC,MAAM,CAAC;CAChB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAC,kBAAkB,EAAE,CAAC;IAC7B,cAAc,EAAE,sBAAsB,GAAG,yBAAyB,GAAG,0BAA0B,CAAC;CACnG,CAAA;AAED,qBAAa,aAAa;IAEtB,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,IAAI,CAAU;IACtB,OAAO,CAAC,SAAS,CAAS;gBAEP,MAAM,EAAC,mBAAmB;IAQtC,MAAM,CAAC,QAAQ,EAAC,cAAc,EAAE,QAAQ,EAAC,CAAC,OAAO,EAAC,OAAO,EAAE,QAAQ,EAAC,QAAQ,KAAK,GAAG;IA+CpF,MAAM,CAAC,aAAa,EAAC,cAAc;IAsBnC,MAAM,IAAG,mBAAmB;CAGtC;AAED,MAAM,MAAO,mBAAmB,GAAG;IAC/B,EAAE,EAAC,MAAM,CAAA;IACT,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAC,MAAM,CAAC;IACpB,YAAY,EAAC,MAAM,CAAC;CACvB,CAAA;AAED,qBAAa,oBAAqB,SAAQ,WAAW;IAEjD,OAAO,CAAC,MAAM,CAAC,cAAc,CAAmC;;IAMzD,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,uBAAuB,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjE,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,uBAAuB,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAInE,QAAQ,CAAC,cAAc,EAAE,cAAc,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;WAyCvD,GAAG,CAAE,MAAM,EAAC,mBAAmB,GAAG,aAAa;WAS7C,oBAAoB,IAAG,iBAAiB;CAU3D"}
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.WebhookServerService = exports.WebhookServer = exports.EndpointMethodType = void 0;
7
+ const NodeConstructor_1 = require("../../NodeConstructor");
8
+ const WebhookServerConfigNode_1 = require("../node/WebhookServerConfigNode");
9
+ const WebhookTemplate_1 = require("../template/WebhookTemplate");
10
+ const express_1 = __importDefault(require("express"));
11
+ const LoggerServiceTypes_1 = require("../../logger/service/LoggerServiceTypes");
12
+ var bodyParser = require('body-parser');
13
+ var EndpointMethodType;
14
+ (function (EndpointMethodType) {
15
+ EndpointMethodType["GET"] = "GET";
16
+ EndpointMethodType["POST"] = "POST";
17
+ })(EndpointMethodType || (exports.EndpointMethodType = EndpointMethodType = {}));
18
+ class WebhookServer {
19
+ constructor(config) {
20
+ this._config = config;
21
+ this._app = (0, express_1.default)();
22
+ this._app.use(bodyParser.json({ type: "application/json", limit: '50mb' }));
23
+ this._listener = this._app.listen(this._config.port, '0.0.0.0');
24
+ }
25
+ attach(endpoint, callback) {
26
+ let authenticator;
27
+ if (endpoint.authentication.type === LoggerServiceTypes_1.RestAuthType.none) {
28
+ authenticator = (request, response) => Promise.resolve(true);
29
+ }
30
+ if (endpoint.authentication.type === LoggerServiceTypes_1.RestAuthType.basic) {
31
+ let header = "Basic " + Buffer.from(`${endpoint.authentication.username}:${endpoint.authentication.password}`).toString("base64");
32
+ authenticator = (request, response) => {
33
+ return Promise.resolve(header === request.headers.authorization);
34
+ };
35
+ }
36
+ if (endpoint.authentication.type === LoggerServiceTypes_1.RestAuthType.apikey) {
37
+ let auth = endpoint.authentication;
38
+ authenticator = (request, response) => {
39
+ if (auth.mechanism === LoggerServiceTypes_1.ApiKeyMechanismType.header) {
40
+ return Promise.resolve(request.headers[auth.key] === auth.value);
41
+ }
42
+ console.log("No APIKEY Authentication Handler Implementation for Type: " + auth.mechanism);
43
+ return Promise.resolve(false);
44
+ };
45
+ }
46
+ let handlerChain = (request, response) => authenticator(request, response)
47
+ .then(result => {
48
+ if (result) {
49
+ callback(request, response);
50
+ }
51
+ else {
52
+ response.status(401).send();
53
+ }
54
+ });
55
+ if (endpoint.methods.includes(EndpointMethodType.GET)) {
56
+ this._app.get(endpoint.path, handlerChain);
57
+ }
58
+ if (endpoint.methods.includes(EndpointMethodType.POST)) {
59
+ this._app.post(endpoint.path, handlerChain);
60
+ }
61
+ console.log("added endpoint to " + endpoint.path);
62
+ }
63
+ detach(configuration) {
64
+ configuration.methods.forEach(method => {
65
+ this._app.router.stack = this._app.router.stack.filter(layer => {
66
+ // if the path doesnt match, keep it.
67
+ if (layer.route?.path !== configuration.path) {
68
+ return true;
69
+ }
70
+ switch (method) {
71
+ case EndpointMethodType.GET: {
72
+ return !layer.route?.methods.get;
73
+ }
74
+ case EndpointMethodType.POST: {
75
+ return !layer.route?.methods.post;
76
+ }
77
+ }
78
+ ;
79
+ });
80
+ });
81
+ console.log("ROUTES REMOVED!");
82
+ this._app.router.stack.forEach(route => console.log("KNOWN ROUTE", route, route.route?.path, route.route.methods.post));
83
+ }
84
+ config() {
85
+ return this._config;
86
+ }
87
+ }
88
+ exports.WebhookServer = WebhookServer;
89
+ class WebhookServerService extends NodeConstructor_1.BaseService {
90
+ constructor() {
91
+ super("wehbookserver");
92
+ }
93
+ init(red) {
94
+ return Promise.resolve();
95
+ }
96
+ deinit(red) {
97
+ return Promise.resolve();
98
+ }
99
+ onDeploy(flowDeployment) {
100
+ let removedServers = [];
101
+ let addedServers = [];
102
+ let webhookServerNodes = flowDeployment.flows.filter(node => node.type === "WebhookServerConfigNode");
103
+ // find all the nodes that have been removed or changed.
104
+ Object.entries(WebhookServerService.webhookServers).forEach(([key, serverService]) => {
105
+ let webhookServerNode = webhookServerNodes.find(node => node.id === key);
106
+ let serverServiceConfig = serverService.config();
107
+ // compare the properties.
108
+ if (!webhookServerNode) {
109
+ // the node has been removed: TODO: alert the listeners that it has been removed.
110
+ console.log("Webhook Service Removed", serverServiceConfig);
111
+ removedServers.push(serverServiceConfig);
112
+ }
113
+ else {
114
+ // check if the node has changed at all.
115
+ let serviceChanged = webhookServerNode.port !== serverServiceConfig.port ||
116
+ webhookServerNode.externalHost !== serverServiceConfig.externalHost ||
117
+ webhookServerNode.externalPort !== serverServiceConfig.externalPort;
118
+ if (serviceChanged) {
119
+ // TODO: notify the subscribers that the server has chaned.
120
+ console.log("Notify the subscribers WebhookServer has changed.", serverServiceConfig, webhookServerNode);
121
+ removedServers.push(serverServiceConfig);
122
+ addedServers.push(webhookServerNode);
123
+ }
124
+ }
125
+ });
126
+ // find all the servers that have been added.
127
+ webhookServerNodes
128
+ .filter(node => !WebhookServerService.webhookServers[node.id])
129
+ .forEach(node => addedServers.push(node));
130
+ //console.log("REMOVED SERVERS:", removedServers);
131
+ //console.log("ADDED SERVERS:", addedServers);
132
+ }
133
+ static get(config) {
134
+ let server = (this.webhookServers[config.id]);
135
+ if (!server) {
136
+ this.webhookServers[config.id] = server = new WebhookServer(config);
137
+ console.log(`Creating webhook server on port ${config.port}`);
138
+ }
139
+ return server;
140
+ }
141
+ static getServiceDescriptor() {
142
+ return new NodeConstructor_1.ServiceDescriptor("@theotherwillembotha/webhookserverservice", "WebhookServerService", "services-plugin", "@theotherwillembotha/node-red-plugincore", WebhookServerService, [WebhookServerConfigNode_1.WebhookServerConfigNode, WebhookTemplate_1.WebhookTemplate]);
143
+ }
144
+ }
145
+ exports.WebhookServerService = WebhookServerService;
146
+ WebhookServerService.webhookServers = {};
@@ -0,0 +1,22 @@
1
+ import { BaseNodeConfig, Template, TemplateDescriptor } from "../../NodeConstructor";
2
+ import { ApiKeyMechanismType, RestAuthType } from "../../logger/service/LoggerServiceTypes";
3
+ export interface WebhookTemplateConfig extends BaseNodeConfig {
4
+ webhook: string;
5
+ webhookPath: string;
6
+ webhookAuth: RestAuthType;
7
+ webhookAuth_basic_username: string;
8
+ webhookAuth_basic_password: string;
9
+ webhookAuth_apikey_mechanism: ApiKeyMechanismType;
10
+ webhookAuth_apikey_key: string;
11
+ webhookAuth_apikey_value: string;
12
+ reverseProxies_enabled: boolean;
13
+ reverseProxies_connections: ReverseproxyConnection[];
14
+ }
15
+ export type ReverseproxyConnection = {
16
+ proxy: string;
17
+ domainname: string;
18
+ };
19
+ export declare class WebhookTemplate extends Template {
20
+ static getTemplateDescriptor(): TemplateDescriptor;
21
+ }
22
+ //# sourceMappingURL=WebhookTemplate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebhookTemplate.d.ts","sourceRoot":"","sources":["../../../../src/core/webhook/template/WebhookTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAGpF,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAE5F,MAAM,WAAW,qBAAsB,SAAQ,cAAc;IACzD,OAAO,EAAC,MAAM,CAAC;IACf,WAAW,EAAC,MAAM,CAAC;IACnB,WAAW,EAAC,YAAY,CAAC;IACzB,0BAA0B,EAAC,MAAM,CAAC;IAClC,0BAA0B,EAAC,MAAM,CAAC;IAClC,4BAA4B,EAAC,mBAAmB,CAAC;IACjD,sBAAsB,EAAC,MAAM,CAAC;IAC9B,wBAAwB,EAAC,MAAM,CAAC;IAEhC,sBAAsB,EAAC,OAAO,CAAC;IAC/B,0BAA0B,EAAC,sBAAsB,EAAE,CAAC;CACvD;AAED,MAAM,MAAM,sBAAsB,GAAG;IACjC,KAAK,EAAC,MAAM,CAAC;IACb,UAAU,EAAC,MAAM,CAAA;CACpB,CAAA;AAED,qBAAa,eAAgB,SAAQ,QAAQ;IAEzC,MAAM,CAAC,qBAAqB,IAAI,kBAAkB;CAMrD"}