@theotherwillembotha/node-red-nginxproxymanager 0.1.0 → 0.4.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 (34) hide show
  1. package/build/GenerateNodes.d.ts +2 -0
  2. package/build/GenerateNodes.d.ts.map +1 -0
  3. package/build/GenerateNodes.js +7 -6
  4. package/build/Nodes.html +653 -420
  5. package/build/Nodes.js +34995 -12
  6. package/build/Plugins.html +37 -0
  7. package/build/Plugins.js +34650 -54
  8. package/build/index.d.ts +5 -0
  9. package/build/index.d.ts.map +1 -0
  10. package/build/nginx/node/NginxGetHostsNode.d.ts +19 -0
  11. package/build/nginx/node/NginxGetHostsNode.d.ts.map +1 -0
  12. package/build/nginx/node/NginxGetHostsNode.js +2 -2
  13. package/build/nginx/node/NginxProxyManagerConfigNode.d.ts +15 -0
  14. package/build/nginx/node/NginxProxyManagerConfigNode.d.ts.map +1 -0
  15. package/build/nginx/node/NginxProxyManagerConfigNode.js +4 -3
  16. package/build/nginx/node/UpdateHostNode.d.ts +18 -0
  17. package/build/nginx/node/UpdateHostNode.d.ts.map +1 -0
  18. package/build/nginx/node/UpdateHostNode.js +2 -3
  19. package/build/nginx/service/NginxProxyManagerClient.d.ts +9 -0
  20. package/build/nginx/service/NginxProxyManagerClient.d.ts.map +1 -0
  21. package/build/nginx/service/NginxProxyManagerService.d.ts +9 -0
  22. package/build/nginx/service/NginxProxyManagerService.d.ts.map +1 -0
  23. package/build/nginx/service/NginxProxyManagerService.js +21 -5
  24. package/build/nginx/service/client/NginxClient.d.ts +69 -0
  25. package/build/nginx/service/client/NginxClient.d.ts.map +1 -0
  26. package/build/nginx/service/client/NginxHttpClient.d.ts +26 -0
  27. package/build/nginx/service/client/NginxHttpClient.d.ts.map +1 -0
  28. package/build/nginx/service/client/types.d.ts +291 -0
  29. package/build/nginx/service/client/types.d.ts.map +1 -0
  30. package/build/runtime/NodeManagerRuntime.js +140 -0
  31. package/package.json +10 -6
  32. package/documentation/GetHostsNode.png +0 -0
  33. package/documentation/NginxProxyManagerConfig.png +0 -0
  34. package/documentation/UpdateHostNode.png +0 -0
@@ -0,0 +1,5 @@
1
+ export * from "./nginx/service/NginxProxyManagerService";
2
+ export * from "./nginx/node/NginxProxyManagerConfigNode";
3
+ export * from "./nginx/node/UpdateHostNode";
4
+ export * from "./nginx/node/NginxGetHostsNode";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,0CAA0C,CAAC;AAIzD,cAAc,0CAA0C,CAAC;AACzD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { Node } from "node-red";
2
+ import { BaseNode, BaseNodeConfig } from "@theotherwillembotha/node-red-plugincore";
3
+ import { MetricsTemplateConfig } from "@theotherwillembotha/node-red-plugincore";
4
+ import { LoggerTemplateConfig } from "@theotherwillembotha/node-red-plugincore";
5
+ interface NginxGetHostsNodeConfig extends BaseNodeConfig, MetricsTemplateConfig, LoggerTemplateConfig {
6
+ proxymanagerconfig: string;
7
+ outputpath: string;
8
+ }
9
+ export declare class NginxGetHostsNode extends BaseNode<NginxGetHostsNodeConfig> {
10
+ private log;
11
+ private counter;
12
+ private _client;
13
+ constructor(node: Node, config: NginxGetHostsNodeConfig);
14
+ protected onInput(message: {
15
+ [key: string]: any;
16
+ }, errorHandler: Function): Promise<void>;
17
+ }
18
+ export {};
19
+ //# sourceMappingURL=NginxGetHostsNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NginxGetHostsNode.d.ts","sourceRoot":"","sources":["../../../src/nginx/node/NginxGetHostsNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAwD,MAAM,0CAA0C,CAAC;AAC1I,OAAO,EAAuD,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AACtI,OAAO,EAA+B,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAI7G,UAAU,uBAAwB,SAAQ,cAAc,EAAE,qBAAqB,EAAE,oBAAoB;IACjG,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,qBAaa,iBAAkB,SAAQ,QAAQ,CAAC,uBAAuB,CAAC;IAGpE,OAAO,CAAC,GAAG,CAAO;IAGlB,OAAO,CAAC,OAAO,CAAiB;IAEhC,OAAO,CAAC,OAAO,CAA0B;IAEzC,YAAY,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,uBAAuB,EAGtD;IAED,UACgB,OAAO,CAAC,OAAO,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,EAAE,YAAY,EAAE,QAAQ,iBAW9E;CACJ"}
@@ -37,7 +37,7 @@ __decorate([
37
37
  ], NginxGetHostsNode.prototype, "log", void 0);
38
38
  __decorate([
39
39
  (0, node_red_plugincore_2.Metrics)({ name: "get_hosts_requests", type: node_red_plugincore_2.MetricType.Counter, description: "number of get hosts requests made" }),
40
- __metadata("design:type", node_red_plugincore_2.CounterMetric)
40
+ __metadata("design:type", Object)
41
41
  ], NginxGetHostsNode.prototype, "counter", void 0);
42
42
  __decorate([
43
43
  (0, node_red_plugincore_1.onInput)(),
@@ -51,7 +51,7 @@ exports.NginxGetHostsNode = NginxGetHostsNode = __decorate([
51
51
  name: "Nginx Get Hosts",
52
52
  group: "nginxproxymanager",
53
53
  sourceFile: node_red_plugincore_1.SourceUtility.getSourcePath("/build/", "/src/") + "NginxGetHostsNode.html",
54
- package: "@theotherwillembotha/nodered_nginxproxymanager",
54
+ package: "@theotherwillembotha/node-red-nginxproxymanager",
55
55
  templates: [
56
56
  { template: node_red_plugincore_3.LoggerTemplate, config: {} },
57
57
  { template: node_red_plugincore_2.MetricsTemplate, config: {} }
@@ -0,0 +1,15 @@
1
+ import { Node } from "node-red";
2
+ import { ConfigNode, ConfigNodeConfig } from "@theotherwillembotha/node-red-plugincore";
3
+ import { NginxProxyManagerClient } from "../service/NginxProxyManagerClient";
4
+ interface NginxProxyManagerConfigNodeConfig extends ConfigNodeConfig {
5
+ url: string;
6
+ email: string;
7
+ password: string;
8
+ }
9
+ export declare class NginxProxyManagerConfigNode extends ConfigNode<NginxProxyManagerConfigNodeConfig> {
10
+ private _client;
11
+ constructor(node: Node, config: NginxProxyManagerConfigNodeConfig);
12
+ client(): NginxProxyManagerClient;
13
+ }
14
+ export {};
15
+ //# sourceMappingURL=NginxProxyManagerConfigNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NginxProxyManagerConfigNode.d.ts","sourceRoot":"","sources":["../../../src/nginx/node/NginxProxyManagerConfigNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAoD,MAAM,0CAA0C,CAAC;AAC1I,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAG7E,UAAU,iCAAkC,SAAQ,gBAAgB;IAChE,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,qBAYa,2BAA4B,SAAQ,UAAU,CAAC,iCAAiC,CAAC;IAE1F,OAAO,CAAC,OAAO,CAA2B;IAE1C,YAAY,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,iCAAiC,EAGhE;IAEM,MAAM,IAAI,uBAAuB,CAEvC;CACJ"}
@@ -12,10 +12,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.NginxProxyManagerConfigNode = void 0;
13
13
  const node_red_plugincore_1 = require("@theotherwillembotha/node-red-plugincore");
14
14
  const NginxProxyManagerClient_1 = require("../service/NginxProxyManagerClient");
15
+ const NginxProxyManagerService_1 = require("../service/NginxProxyManagerService");
15
16
  let NginxProxyManagerConfigNode = class NginxProxyManagerConfigNode extends node_red_plugincore_1.ConfigNode {
16
17
  constructor(node, config) {
17
18
  super(node, config);
18
- let _this = this;
19
19
  this._client = new NginxProxyManagerClient_1.NginxProxyManagerClient(config.url, config.email, config.password);
20
20
  }
21
21
  client() {
@@ -29,11 +29,12 @@ exports.NginxProxyManagerConfigNode = NginxProxyManagerConfigNode = __decorate([
29
29
  name: "Nginx Proxy Manager Config",
30
30
  group: "config",
31
31
  sourceFile: node_red_plugincore_1.SourceUtility.getSourcePath("/build/", "/src/") + "NginxProxyManagerConfigNode.html",
32
- package: "@theotherwillembotha/nodered_nginxproxymanager",
32
+ package: "@theotherwillembotha/node-red-nginxproxymanager",
33
33
  tags: ["ReverseProxyType"],
34
34
  templates: [
35
35
  { template: node_red_plugincore_1.UIHelperTemplate, config: {} }
36
- ]
36
+ ],
37
+ dependencies: [NginxProxyManagerService_1.NginxProxyManagerService]
37
38
  }),
38
39
  __metadata("design:paramtypes", [Object, Object])
39
40
  ], NginxProxyManagerConfigNode);
@@ -0,0 +1,18 @@
1
+ import { Node } from "node-red";
2
+ import { BaseNode, BaseNodeConfig } from "@theotherwillembotha/node-red-plugincore";
3
+ import { MetricsTemplateConfig } from "@theotherwillembotha/node-red-plugincore";
4
+ import { LoggerTemplateConfig } from "@theotherwillembotha/node-red-plugincore";
5
+ interface UpdateNginxHostNodeConfig extends BaseNodeConfig, MetricsTemplateConfig, LoggerTemplateConfig {
6
+ proxymanagerconfig: string;
7
+ }
8
+ export declare class UpdateNginxHostNode extends BaseNode<UpdateNginxHostNodeConfig> {
9
+ private log;
10
+ private counter;
11
+ private _client;
12
+ constructor(node: Node, config: UpdateNginxHostNodeConfig);
13
+ protected onInput(message: {
14
+ [key: string]: any;
15
+ }, errorHandler: Function): Promise<void>;
16
+ }
17
+ export {};
18
+ //# sourceMappingURL=UpdateHostNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UpdateHostNode.d.ts","sourceRoot":"","sources":["../../../src/nginx/node/UpdateHostNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAwD,MAAM,0CAA0C,CAAC;AAC1I,OAAO,EAAuD,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AACtI,OAAO,EAA+B,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAK7G,UAAU,yBAA0B,SAAQ,cAAc,EAAE,qBAAqB,EAAE,oBAAoB;IACnG,kBAAkB,EAAC,MAAM,CAAC;CAC7B;AAED,qBAaa,mBAAoB,SAAQ,QAAQ,CAAC,yBAAyB,CAAC;IAGxE,OAAO,CAAC,GAAG,CAAM;IAGjB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,OAAO,CAA0B;IAEzC,YAAY,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,yBAAyB,EAIxD;IAED,UACgB,OAAO,CAAC,OAAO,EAAC;QAAC,CAAC,GAAG,EAAC,MAAM,GAAE,GAAG,CAAA;KAAC,EAAE,YAAY,EAAC,QAAQ,iBAKxE;CACJ"}
@@ -17,7 +17,6 @@ const NginxProxyManagerConfigNode_1 = require("./NginxProxyManagerConfigNode");
17
17
  let UpdateNginxHostNode = class UpdateNginxHostNode extends node_red_plugincore_1.BaseNode {
18
18
  constructor(node, config) {
19
19
  super(node, config);
20
- let _this = this;
21
20
  // get a reference to the NGINXPROXYMANAGER client.
22
21
  this._client = node_red_plugincore_1.NodeManager.RED.nodes.getNode(config.proxymanagerconfig).node().client();
23
22
  }
@@ -35,7 +34,7 @@ __decorate([
35
34
  ], UpdateNginxHostNode.prototype, "log", void 0);
36
35
  __decorate([
37
36
  (0, node_red_plugincore_2.Metrics)({ name: "request", type: node_red_plugincore_2.MetricType.Counter, description: "number of requests made" }),
38
- __metadata("design:type", node_red_plugincore_2.CounterMetric)
37
+ __metadata("design:type", Object)
39
38
  ], UpdateNginxHostNode.prototype, "counter", void 0);
40
39
  __decorate([
41
40
  (0, node_red_plugincore_1.onInput)(),
@@ -49,7 +48,7 @@ exports.UpdateNginxHostNode = UpdateNginxHostNode = __decorate([
49
48
  name: "Update Nginx Host",
50
49
  group: "nginxproxymanager",
51
50
  sourceFile: node_red_plugincore_1.SourceUtility.getSourcePath("/build/", "/src/") + "UpdateHostNode.html",
52
- package: "@theotherwillembotha/nodered_nginxproxymanager",
51
+ package: "@theotherwillembotha/node-red-nginxproxymanager",
53
52
  templates: [
54
53
  { template: node_red_plugincore_3.LoggerTemplate, config: {} },
55
54
  { template: node_red_plugincore_2.MetricsTemplate, config: {} }
@@ -0,0 +1,9 @@
1
+ import { ProxyManagerClient, HostEntry } from "@theotherwillembotha/node-red-plugincore";
2
+ export declare class NginxProxyManagerClient implements ProxyManagerClient {
3
+ private readonly _client;
4
+ constructor(url: string, email: string, password: string);
5
+ updateHost(data: Partial<HostEntry>): Promise<void>;
6
+ getHosts(): Promise<Partial<HostEntry>[]>;
7
+ deleteHost(id: number): Promise<void>;
8
+ }
9
+ //# sourceMappingURL=NginxProxyManagerClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NginxProxyManagerClient.d.ts","sourceRoot":"","sources":["../../../src/nginx/service/NginxProxyManagerClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAc,MAAM,0CAA0C,CAAC;AAIrG,qBAAa,uBAAwB,YAAW,kBAAkB;IAE9D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;IAEtC,YAAY,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAEvD;IAEY,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB/D;IAEY,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CASrD;IAEY,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEjD;CACJ"}
@@ -0,0 +1,9 @@
1
+ import { NodeAPI, NodeAPISettingsWithData } from "node-red";
2
+ import { BaseService } from "@theotherwillembotha/node-red-plugincore";
3
+ export declare class NginxProxyManagerService extends BaseService {
4
+ private red;
5
+ constructor();
6
+ init(red: NodeAPI<NodeAPISettingsWithData>): void;
7
+ deinit(red: NodeAPI<NodeAPISettingsWithData>): void;
8
+ }
9
+ //# sourceMappingURL=NginxProxyManagerService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NginxProxyManagerService.d.ts","sourceRoot":"","sources":["../../../src/nginx/service/NginxProxyManagerService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAA;AAyBtE,qBAMa,wBAAyB,SAAQ,WAAW;IAErD,OAAO,CAAC,GAAG,CAAoC;IAE/C,cAEC;IAED,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,uBAAuB,CAAC,GAAG,IAAI,CA4EhD;IAED,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,uBAAuB,CAAC,GAAG,IAAI,CAElD;CAEJ"}
@@ -1,10 +1,20 @@
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.NginxProxyManagerService = void 0;
4
13
  const node_red_plugincore_1 = require("@theotherwillembotha/node-red-plugincore");
14
+ const node_red_plugincore_2 = require("@theotherwillembotha/node-red-plugincore");
5
15
  const NginxClient_1 = require("./client/NginxClient");
6
16
  const NginxHttpClient_1 = require("./client/NginxHttpClient");
7
- class NginxProxyManagerService extends node_red_plugincore_1.BaseService {
17
+ let NginxProxyManagerService = class NginxProxyManagerService extends node_red_plugincore_1.BaseService {
8
18
  constructor() {
9
19
  super("NginxProxyManagerService");
10
20
  }
@@ -83,8 +93,14 @@ class NginxProxyManagerService extends node_red_plugincore_1.BaseService {
83
93
  deinit(red) {
84
94
  console.log("STOPPING SERVICE: " + this.name());
85
95
  }
86
- static getServiceDescriptor() {
87
- return new node_red_plugincore_1.ServiceDescriptor("@theotherwillembotha/nginxproxymanagerservice", "NginxProxyManagerService", "integration-plugin", "./nginx/service/NginxProxyManagerService", NginxProxyManagerService);
88
- }
89
- }
96
+ };
90
97
  exports.NginxProxyManagerService = NginxProxyManagerService;
98
+ exports.NginxProxyManagerService = NginxProxyManagerService = __decorate([
99
+ (0, node_red_plugincore_2.ServiceDescription)({
100
+ id: "@theotherwillembotha/nginxproxymanagerservice",
101
+ name: "NginxProxyManagerService",
102
+ type: "integration-plugin",
103
+ sourceFile: "./nginx/service/NginxProxyManagerService"
104
+ }),
105
+ __metadata("design:paramtypes", [])
106
+ ], NginxProxyManagerService);
@@ -0,0 +1,69 @@
1
+ import { AccessList, AuditLogEntry, Certificate, CreateAccessListRequest, CreateCertificateRequest, CreateDeadHostRequest, CreateProxyHostRequest, CreateRedirectionHostRequest, CreateStreamRequest, CreateUserRequest, DeadHost, HostReport, ProxyHost, RedirectionHost, Setting, Stream, UpdateAccessListRequest, UpdateDeadHostRequest, UpdateProxyHostRequest, UpdateRedirectionHostRequest, UpdateStreamRequest, UpdateUserRequest, User } from "./types";
2
+ /**
3
+ * High-level Nginx Proxy Manager API client.
4
+ * Covers all resources exposed by the NPM REST API.
5
+ */
6
+ export declare class NginxClient {
7
+ private readonly http;
8
+ constructor(baseUrl: string, email: string, password: string);
9
+ listProxyHosts(): Promise<ProxyHost[]>;
10
+ getProxyHost(id: number): Promise<ProxyHost>;
11
+ createProxyHost(data: CreateProxyHostRequest): Promise<ProxyHost>;
12
+ updateProxyHost(id: number, data: UpdateProxyHostRequest): Promise<ProxyHost>;
13
+ deleteProxyHost(id: number): Promise<void>;
14
+ enableProxyHost(id: number): Promise<void>;
15
+ disableProxyHost(id: number): Promise<void>;
16
+ listAccessLists(): Promise<AccessList[]>;
17
+ getAccessList(id: number): Promise<AccessList>;
18
+ createAccessList(data: CreateAccessListRequest): Promise<AccessList>;
19
+ updateAccessList(id: number, data: UpdateAccessListRequest): Promise<AccessList>;
20
+ deleteAccessList(id: number): Promise<void>;
21
+ listCertificates(): Promise<Certificate[]>;
22
+ getCertificate(id: number): Promise<Certificate>;
23
+ createCertificate(data: CreateCertificateRequest): Promise<Certificate>;
24
+ deleteCertificate(id: number): Promise<void>;
25
+ renewCertificate(id: number): Promise<Certificate>;
26
+ validateCertificate(data: {
27
+ certificate: string;
28
+ certificate_key: string;
29
+ }): Promise<void>;
30
+ listDnsProviders(): Promise<Record<string, unknown>[]>;
31
+ listRedirectionHosts(): Promise<RedirectionHost[]>;
32
+ getRedirectionHost(id: number): Promise<RedirectionHost>;
33
+ createRedirectionHost(data: CreateRedirectionHostRequest): Promise<RedirectionHost>;
34
+ updateRedirectionHost(id: number, data: UpdateRedirectionHostRequest): Promise<RedirectionHost>;
35
+ deleteRedirectionHost(id: number): Promise<void>;
36
+ enableRedirectionHost(id: number): Promise<void>;
37
+ disableRedirectionHost(id: number): Promise<void>;
38
+ listDeadHosts(): Promise<DeadHost[]>;
39
+ getDeadHost(id: number): Promise<DeadHost>;
40
+ createDeadHost(data: CreateDeadHostRequest): Promise<DeadHost>;
41
+ updateDeadHost(id: number, data: UpdateDeadHostRequest): Promise<DeadHost>;
42
+ deleteDeadHost(id: number): Promise<void>;
43
+ enableDeadHost(id: number): Promise<void>;
44
+ disableDeadHost(id: number): Promise<void>;
45
+ listStreams(): Promise<Stream[]>;
46
+ getStream(id: number): Promise<Stream>;
47
+ createStream(data: CreateStreamRequest): Promise<Stream>;
48
+ updateStream(id: number, data: UpdateStreamRequest): Promise<Stream>;
49
+ deleteStream(id: number): Promise<void>;
50
+ enableStream(id: number): Promise<void>;
51
+ disableStream(id: number): Promise<void>;
52
+ listUsers(): Promise<User[]>;
53
+ getUser(id: number): Promise<User>;
54
+ createUser(data: CreateUserRequest): Promise<User>;
55
+ updateUser(id: number, data: UpdateUserRequest): Promise<User>;
56
+ deleteUser(id: number): Promise<void>;
57
+ listSettings(): Promise<Setting[]>;
58
+ getSetting(id: string): Promise<Setting>;
59
+ updateSetting(id: string, value: unknown): Promise<Setting>;
60
+ getHostReport(): Promise<HostReport>;
61
+ listAuditLog(): Promise<AuditLogEntry[]>;
62
+ getAuditLogEntry(id: number): Promise<AuditLogEntry>;
63
+ /**
64
+ * Verifies credentials by authenticating against the NPM API.
65
+ * Resolves on success, rejects with NginxApiError on failure.
66
+ */
67
+ testConnection(): Promise<void>;
68
+ }
69
+ //# sourceMappingURL=NginxClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NginxClient.d.ts","sourceRoot":"","sources":["../../../../src/nginx/service/client/NginxClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ export declare class NginxApiError extends Error {
2
+ readonly statusCode: number;
3
+ readonly apiMessage: string;
4
+ constructor(statusCode: number, apiMessage: string);
5
+ }
6
+ /**
7
+ * Low-level HTTP transport for the Nginx Proxy Manager API.
8
+ * Handles authentication, token caching, and automatic re-auth on expiry.
9
+ */
10
+ export declare class NginxHttpClient {
11
+ private readonly baseUrl;
12
+ private readonly email;
13
+ private readonly password;
14
+ private token;
15
+ private tokenExpires;
16
+ constructor(baseUrl: string, email: string, password: string);
17
+ private isTokenValid;
18
+ private authenticate;
19
+ private ensureAuthenticated;
20
+ private request;
21
+ get<T>(path: string): Promise<T>;
22
+ post<T>(path: string, body?: unknown): Promise<T>;
23
+ put<T>(path: string, body: unknown): Promise<T>;
24
+ delete(path: string): Promise<void>;
25
+ }
26
+ //# sourceMappingURL=NginxHttpClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NginxHttpClient.d.ts","sourceRoot":"","sources":["../../../../src/nginx/service/client/NginxHttpClient.ts"],"names":[],"mappings":"AAEA,qBAAa,aAAc,SAAQ,KAAK;aAEhB,UAAU,EAAE,MAAM;aAClB,UAAU,EAAE,MAAM;IAFtC,YACoB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAIrC;CACJ;AAED;;;GAGG;AACH,qBAAa,eAAe;IAKpB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAN7B,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,YAAY,CAAqB;IAEzC,YACqB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EACjC;IAIJ,OAAO,CAAC,YAAY;YAMN,YAAY;YAkBZ,mBAAmB;YAQnB,OAAO;IAoCd,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAEtC;IAEM,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAEvD;IAEM,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAErD;IAEM,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzC;CACJ"}
@@ -0,0 +1,291 @@
1
+ export type ForwardScheme = "http" | "https";
2
+ export type SslProvider = "letsencrypt" | "other";
3
+ export type AccessDirective = "allow" | "deny";
4
+ export type PermissionLevel = "manage" | "view" | "hidden";
5
+ export type VisibilityLevel = "all" | "user";
6
+ export interface TokenRequest {
7
+ identity: string;
8
+ secret: string;
9
+ scope?: "user";
10
+ }
11
+ export interface TokenResponse {
12
+ expires: string;
13
+ token: string;
14
+ }
15
+ export interface TokenChallenge {
16
+ token: string;
17
+ }
18
+ export interface UserPermissions {
19
+ visibility: VisibilityLevel;
20
+ proxy_hosts: PermissionLevel;
21
+ redirection_hosts: PermissionLevel;
22
+ dead_hosts: PermissionLevel;
23
+ streams: PermissionLevel;
24
+ access_lists: PermissionLevel;
25
+ certificates: PermissionLevel;
26
+ }
27
+ export interface User {
28
+ id: number;
29
+ created_on: string;
30
+ modified_on: string;
31
+ is_disabled: boolean;
32
+ email: string;
33
+ name: string;
34
+ nickname: string;
35
+ avatar: string;
36
+ roles: string[];
37
+ permissions?: UserPermissions;
38
+ }
39
+ export interface CreateUserRequest {
40
+ name: string;
41
+ nickname: string;
42
+ email: string;
43
+ roles: string[];
44
+ is_disabled?: boolean;
45
+ auth?: {
46
+ type: "password";
47
+ secret: string;
48
+ };
49
+ }
50
+ export interface UpdateUserRequest {
51
+ name?: string;
52
+ nickname?: string;
53
+ email?: string;
54
+ roles?: string[];
55
+ is_disabled?: boolean;
56
+ }
57
+ export interface CertificateMeta {
58
+ certificate?: string;
59
+ certificate_key?: string;
60
+ dns_challenge?: boolean;
61
+ dns_provider_credentials?: string;
62
+ dns_provider?: string;
63
+ letsencrypt_certificate?: Record<string, unknown>;
64
+ propagation_seconds?: number;
65
+ key_type?: "rsa" | "ecdsa";
66
+ }
67
+ export interface Certificate {
68
+ id: number;
69
+ created_on: string;
70
+ modified_on: string;
71
+ owner_user_id: number;
72
+ provider: SslProvider;
73
+ nice_name: string;
74
+ domain_names: string[];
75
+ expires_on: string;
76
+ meta: CertificateMeta;
77
+ owner?: User;
78
+ }
79
+ export interface CreateCertificateRequest {
80
+ provider: SslProvider;
81
+ nice_name?: string;
82
+ domain_names: string[];
83
+ meta?: CertificateMeta;
84
+ }
85
+ export interface AccessListAuthItem {
86
+ username: string;
87
+ password?: string;
88
+ }
89
+ export interface AccessListClient {
90
+ address: string;
91
+ directive: AccessDirective;
92
+ }
93
+ export interface AccessList {
94
+ id: number;
95
+ created_on: string;
96
+ modified_on: string;
97
+ owner_user_id: number;
98
+ name: string;
99
+ meta: Record<string, unknown>;
100
+ satisfy_any: boolean;
101
+ pass_auth: boolean;
102
+ proxy_host_count: number;
103
+ owner?: User;
104
+ items?: AccessListAuthItem[];
105
+ clients?: AccessListClient[];
106
+ }
107
+ export interface CreateAccessListRequest {
108
+ name: string;
109
+ satisfy_any?: boolean;
110
+ pass_auth?: boolean;
111
+ items?: AccessListAuthItem[];
112
+ clients?: AccessListClient[];
113
+ }
114
+ export type UpdateAccessListRequest = Partial<CreateAccessListRequest>;
115
+ export interface ProxyHostLocation {
116
+ id?: number | null;
117
+ path: string;
118
+ forward_scheme: ForwardScheme;
119
+ forward_host: string;
120
+ forward_port: number;
121
+ forward_path?: string;
122
+ advanced_config?: string;
123
+ }
124
+ export interface ProxyHost {
125
+ id: number;
126
+ created_on: string;
127
+ modified_on: string;
128
+ owner_user_id: number;
129
+ domain_names: string[];
130
+ forward_host: string;
131
+ forward_port: number;
132
+ access_list_id: number;
133
+ certificate_id: number | string;
134
+ ssl_forced: boolean;
135
+ caching_enabled: boolean;
136
+ block_exploits: boolean;
137
+ advanced_config: string;
138
+ meta: Record<string, unknown>;
139
+ allow_websocket_upgrade: boolean;
140
+ http2_support: boolean;
141
+ forward_scheme: ForwardScheme;
142
+ enabled: boolean;
143
+ locations: ProxyHostLocation[];
144
+ hsts_enabled: boolean;
145
+ hsts_subdomains: boolean;
146
+ trust_forwarded_proto: boolean;
147
+ certificate?: Certificate | null;
148
+ owner?: User;
149
+ access_list?: AccessList | null;
150
+ }
151
+ export interface CreateProxyHostRequest {
152
+ domain_names: string[];
153
+ forward_scheme: ForwardScheme;
154
+ forward_host: string;
155
+ forward_port: number;
156
+ access_list_id?: number;
157
+ certificate_id?: number | string;
158
+ ssl_forced?: boolean;
159
+ hsts_enabled?: boolean;
160
+ hsts_subdomains?: boolean;
161
+ trust_forwarded_proto?: boolean;
162
+ http2_support?: boolean;
163
+ block_exploits?: boolean;
164
+ caching_enabled?: boolean;
165
+ allow_websocket_upgrade?: boolean;
166
+ advanced_config?: string;
167
+ enabled?: boolean;
168
+ meta?: Record<string, unknown>;
169
+ locations?: ProxyHostLocation[];
170
+ }
171
+ export type UpdateProxyHostRequest = Partial<CreateProxyHostRequest>;
172
+ export type RedirectionScheme = "auto" | "http" | "https";
173
+ export interface RedirectionHost {
174
+ id: number;
175
+ created_on: string;
176
+ modified_on: string;
177
+ owner_user_id: number;
178
+ domain_names: string[];
179
+ forward_http_code: number;
180
+ forward_scheme: RedirectionScheme;
181
+ forward_domain_name: string;
182
+ preserve_path: boolean;
183
+ certificate_id: number | string;
184
+ ssl_forced: boolean;
185
+ hsts_enabled: boolean;
186
+ hsts_subdomains: boolean;
187
+ http2_support: boolean;
188
+ block_exploits: boolean;
189
+ advanced_config: string;
190
+ enabled: boolean;
191
+ meta: Record<string, unknown>;
192
+ certificate?: Certificate | null;
193
+ owner?: User;
194
+ }
195
+ export interface CreateRedirectionHostRequest {
196
+ domain_names: string[];
197
+ forward_http_code: number;
198
+ forward_scheme: RedirectionScheme;
199
+ forward_domain_name: string;
200
+ preserve_path?: boolean;
201
+ certificate_id?: number | string;
202
+ ssl_forced?: boolean;
203
+ hsts_enabled?: boolean;
204
+ hsts_subdomains?: boolean;
205
+ http2_support?: boolean;
206
+ block_exploits?: boolean;
207
+ advanced_config?: string;
208
+ }
209
+ export type UpdateRedirectionHostRequest = Partial<CreateRedirectionHostRequest>;
210
+ export interface DeadHost {
211
+ id: number;
212
+ created_on: string;
213
+ modified_on: string;
214
+ owner_user_id: number;
215
+ domain_names: string[];
216
+ certificate_id: number | string;
217
+ ssl_forced: boolean;
218
+ hsts_enabled: boolean;
219
+ hsts_subdomains: boolean;
220
+ http2_support: boolean;
221
+ advanced_config: string;
222
+ enabled: boolean;
223
+ meta: Record<string, unknown>;
224
+ certificate?: Certificate | null;
225
+ owner?: User;
226
+ }
227
+ export interface CreateDeadHostRequest {
228
+ domain_names: string[];
229
+ certificate_id?: number | string;
230
+ ssl_forced?: boolean;
231
+ hsts_enabled?: boolean;
232
+ hsts_subdomains?: boolean;
233
+ http2_support?: boolean;
234
+ advanced_config?: string;
235
+ }
236
+ export type UpdateDeadHostRequest = Partial<CreateDeadHostRequest>;
237
+ export interface Stream {
238
+ id: number;
239
+ created_on: string;
240
+ modified_on: string;
241
+ owner_user_id: number;
242
+ incoming_port: number;
243
+ forwarding_host: string;
244
+ forwarding_port: number;
245
+ tcp_forwarding: boolean;
246
+ udp_forwarding: boolean;
247
+ enabled: boolean;
248
+ certificate_id?: number | string;
249
+ meta: Record<string, unknown>;
250
+ certificate?: Certificate | null;
251
+ owner?: User;
252
+ }
253
+ export interface CreateStreamRequest {
254
+ incoming_port: number;
255
+ forwarding_host: string;
256
+ forwarding_port: number;
257
+ tcp_forwarding: boolean;
258
+ udp_forwarding: boolean;
259
+ certificate_id?: number | string;
260
+ }
261
+ export type UpdateStreamRequest = Partial<CreateStreamRequest>;
262
+ export interface Setting {
263
+ id: string;
264
+ name: string;
265
+ description: string;
266
+ value: unknown;
267
+ meta: Record<string, unknown>;
268
+ }
269
+ export interface HostReport {
270
+ proxy: number;
271
+ redirection: number;
272
+ stream: number;
273
+ dead: number;
274
+ }
275
+ export interface AuditLogEntry {
276
+ id: number;
277
+ created_on: string;
278
+ user_id: number;
279
+ object_type: string;
280
+ object_id: number;
281
+ action: string;
282
+ meta: Record<string, unknown>;
283
+ user?: User;
284
+ }
285
+ export interface NginxApiErrorBody {
286
+ error: {
287
+ code: number;
288
+ message: string;
289
+ };
290
+ }
291
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/nginx/service/client/types.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,OAAO,CAAC;AAC7C,MAAM,MAAM,WAAW,GAAG,aAAa,GAAG,OAAO,CAAC;AAClD,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,MAAM,CAAC;AAC/C,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;AAC3D,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,MAAM,CAAC;AAI7C,MAAM,WAAW,YAAY;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACjB;AAGD,MAAM,WAAW,cAAc;IAC3B,KAAK,EAAE,MAAM,CAAC;CACjB;AAID,MAAM,WAAW,eAAe;IAC5B,UAAU,EAAE,eAAe,CAAC;IAC5B,WAAW,EAAE,eAAe,CAAC;IAC7B,iBAAiB,EAAE,eAAe,CAAC;IACnC,UAAU,EAAE,eAAe,CAAC;IAC5B,OAAO,EAAE,eAAe,CAAC;IACzB,YAAY,EAAE,eAAe,CAAC;IAC9B,YAAY,EAAE,eAAe,CAAC;CACjC;AAED,MAAM,WAAW,IAAI;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,CAAC,EAAE,eAAe,CAAC;CACjC;AAED,MAAM,WAAW,iBAAiB;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE;QACH,IAAI,EAAE,UAAU,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;KAClB,CAAC;CACL;AAED,MAAM,WAAW,iBAAiB;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AAID,MAAM,WAAW,eAAe;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uBAAuB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,WAAW;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,WAAW,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,eAAe,CAAC;IACtB,KAAK,CAAC,EAAE,IAAI,CAAC;CAChB;AAED,MAAM,WAAW,wBAAwB;IACrC,QAAQ,EAAE,WAAW,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,IAAI,CAAC,EAAE,eAAe,CAAC;CAC1B;AAID,MAAM,WAAW,kBAAkB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,eAAe,CAAC;CAC9B;AAED,MAAM,WAAW,UAAU;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,KAAK,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,uBAAuB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAChC;AAED,MAAM,MAAM,uBAAuB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;AAIvE,MAAM,WAAW,iBAAiB;IAC9B,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,aAAa,CAAC;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,SAAS;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,GAAG,MAAM,CAAC;IAChC,UAAU,EAAE,OAAO,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,uBAAuB,EAAE,OAAO,CAAC;IACjC,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,aAAa,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;IACzB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACjC,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,WAAW,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,sBAAsB;IACnC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,EAAE,aAAa,CAAC;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,SAAS,CAAC,EAAE,iBAAiB,EAAE,CAAC;CACnC;AAED,MAAM,MAAM,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;AAIrE,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE1D,MAAM,WAAW,eAAe;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,iBAAiB,CAAC;IAClC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,MAAM,GAAG,MAAM,CAAC;IAChC,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACjC,KAAK,CAAC,EAAE,IAAI,CAAC;CAChB;AAED,MAAM,WAAW,4BAA4B;IACzC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,iBAAiB,CAAC;IAClC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,MAAM,4BAA4B,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAAC;AAIjF,MAAM,WAAW,QAAQ;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,EAAE,MAAM,GAAG,MAAM,CAAC;IAChC,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACjC,KAAK,CAAC,EAAE,IAAI,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IAClC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,MAAM,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;AAInE,MAAM,WAAW,MAAM;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACjC,KAAK,CAAC,EAAE,IAAI,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACpC;AAED,MAAM,MAAM,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAI/D,MAAM,WAAW,OAAO;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAID,MAAM,WAAW,UAAU;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CAChB;AAID,MAAM,WAAW,aAAa;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,IAAI,CAAC,EAAE,IAAI,CAAC;CACf;AAID,MAAM,WAAW,iBAAiB;IAC9B,KAAK,EAAE;QACH,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACnB,CAAC;CACL"}