telegram-ssh-bot 2.0.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (184) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +103 -22
  3. package/deploy/.env.example +86 -0
  4. package/dist/config/index.d.ts +68 -0
  5. package/dist/config/index.d.ts.map +1 -0
  6. package/dist/config/index.js +315 -0
  7. package/dist/config/index.js.map +1 -0
  8. package/dist/config/schema.d.ts +6 -0
  9. package/dist/config/schema.d.ts.map +1 -0
  10. package/dist/config/schema.js +50 -0
  11. package/dist/config/schema.js.map +1 -0
  12. package/dist/core/Bot.d.ts +91 -0
  13. package/dist/core/Bot.d.ts.map +1 -0
  14. package/dist/core/Bot.js +263 -0
  15. package/dist/core/Bot.js.map +1 -0
  16. package/dist/core/ConnectionPool.d.ts +125 -0
  17. package/dist/core/ConnectionPool.d.ts.map +1 -0
  18. package/dist/core/ConnectionPool.js +397 -0
  19. package/dist/core/ConnectionPool.js.map +1 -0
  20. package/dist/core/SSHClient.d.ts +112 -0
  21. package/dist/core/SSHClient.d.ts.map +1 -0
  22. package/dist/core/SSHClient.js +367 -0
  23. package/dist/core/SSHClient.js.map +1 -0
  24. package/dist/core/ServerManager.d.ts +80 -0
  25. package/dist/core/ServerManager.d.ts.map +1 -0
  26. package/dist/core/ServerManager.js +207 -0
  27. package/dist/core/ServerManager.js.map +1 -0
  28. package/dist/core/index.d.ts +8 -0
  29. package/dist/core/index.d.ts.map +1 -0
  30. package/dist/core/index.js +8 -0
  31. package/dist/core/index.js.map +1 -0
  32. package/dist/errors/AuthError.d.ts +30 -0
  33. package/dist/errors/AuthError.d.ts.map +1 -0
  34. package/dist/errors/AuthError.js +35 -0
  35. package/dist/errors/AuthError.js.map +1 -0
  36. package/dist/errors/BaseError.d.ts +17 -0
  37. package/dist/errors/BaseError.d.ts.map +1 -0
  38. package/dist/errors/BaseError.js +34 -0
  39. package/dist/errors/BaseError.js.map +1 -0
  40. package/dist/errors/ConfigurationError.d.ts +24 -0
  41. package/dist/errors/ConfigurationError.d.ts.map +1 -0
  42. package/dist/errors/ConfigurationError.js +24 -0
  43. package/dist/errors/ConfigurationError.js.map +1 -0
  44. package/dist/errors/PoolError.d.ts +21 -0
  45. package/dist/errors/PoolError.d.ts.map +1 -0
  46. package/dist/errors/PoolError.js +30 -0
  47. package/dist/errors/PoolError.js.map +1 -0
  48. package/dist/errors/SSHError.d.ts +24 -0
  49. package/dist/errors/SSHError.d.ts.map +1 -0
  50. package/dist/errors/SSHError.js +38 -0
  51. package/dist/errors/SSHError.js.map +1 -0
  52. package/dist/errors/StorageError.d.ts +24 -0
  53. package/dist/errors/StorageError.d.ts.map +1 -0
  54. package/dist/errors/StorageError.js +35 -0
  55. package/dist/errors/StorageError.js.map +1 -0
  56. package/dist/errors/ValidationError.d.ts +29 -0
  57. package/dist/errors/ValidationError.d.ts.map +1 -0
  58. package/dist/errors/ValidationError.js +35 -0
  59. package/dist/errors/ValidationError.js.map +1 -0
  60. package/dist/errors/index.d.ts +11 -0
  61. package/dist/errors/index.d.ts.map +1 -0
  62. package/dist/errors/index.js +18 -0
  63. package/dist/errors/index.js.map +1 -0
  64. package/dist/handlers/BaseHandler.d.ts +50 -0
  65. package/dist/handlers/BaseHandler.d.ts.map +1 -0
  66. package/dist/handlers/BaseHandler.js +87 -0
  67. package/dist/handlers/BaseHandler.js.map +1 -0
  68. package/dist/handlers/CommandHandler.d.ts +23 -0
  69. package/dist/handlers/CommandHandler.d.ts.map +1 -0
  70. package/dist/handlers/CommandHandler.js +99 -0
  71. package/dist/handlers/CommandHandler.js.map +1 -0
  72. package/dist/handlers/HealthHandler.d.ts +25 -0
  73. package/dist/handlers/HealthHandler.d.ts.map +1 -0
  74. package/dist/handlers/HealthHandler.js +51 -0
  75. package/dist/handlers/HealthHandler.js.map +1 -0
  76. package/dist/handlers/HelpHandler.d.ts +32 -0
  77. package/dist/handlers/HelpHandler.d.ts.map +1 -0
  78. package/dist/handlers/HelpHandler.js +76 -0
  79. package/dist/handlers/HelpHandler.js.map +1 -0
  80. package/dist/handlers/ServerHandler.d.ts +72 -0
  81. package/dist/handlers/ServerHandler.d.ts.map +1 -0
  82. package/dist/handlers/ServerHandler.js +272 -0
  83. package/dist/handlers/ServerHandler.js.map +1 -0
  84. package/dist/handlers/index.d.ts +9 -0
  85. package/dist/handlers/index.d.ts.map +1 -0
  86. package/dist/handlers/index.js +9 -0
  87. package/dist/handlers/index.js.map +1 -0
  88. package/dist/index.d.ts +10 -0
  89. package/dist/index.d.ts.map +1 -0
  90. package/dist/index.js +348 -0
  91. package/dist/index.js.map +1 -0
  92. package/dist/middleware/AuthMiddleware.d.ts +28 -0
  93. package/dist/middleware/AuthMiddleware.d.ts.map +1 -0
  94. package/dist/middleware/AuthMiddleware.js +49 -0
  95. package/dist/middleware/AuthMiddleware.js.map +1 -0
  96. package/dist/middleware/RateLimitMiddleware.d.ts +23 -0
  97. package/dist/middleware/RateLimitMiddleware.d.ts.map +1 -0
  98. package/dist/middleware/RateLimitMiddleware.js +34 -0
  99. package/dist/middleware/RateLimitMiddleware.js.map +1 -0
  100. package/dist/middleware/index.d.ts +6 -0
  101. package/dist/middleware/index.d.ts.map +1 -0
  102. package/dist/middleware/index.js +6 -0
  103. package/dist/middleware/index.js.map +1 -0
  104. package/dist/services/BackupService.d.ts +119 -0
  105. package/dist/services/BackupService.d.ts.map +1 -0
  106. package/dist/services/BackupService.js +313 -0
  107. package/dist/services/BackupService.js.map +1 -0
  108. package/dist/services/CryptoService.d.ts +37 -0
  109. package/dist/services/CryptoService.d.ts.map +1 -0
  110. package/dist/services/CryptoService.js +108 -0
  111. package/dist/services/CryptoService.js.map +1 -0
  112. package/dist/services/HealthService.d.ts +126 -0
  113. package/dist/services/HealthService.d.ts.map +1 -0
  114. package/dist/services/HealthService.js +213 -0
  115. package/dist/services/HealthService.js.map +1 -0
  116. package/dist/services/LoggingService.d.ts +115 -0
  117. package/dist/services/LoggingService.d.ts.map +1 -0
  118. package/dist/services/LoggingService.js +334 -0
  119. package/dist/services/LoggingService.js.map +1 -0
  120. package/dist/services/MonitoringService.d.ts +119 -0
  121. package/dist/services/MonitoringService.d.ts.map +1 -0
  122. package/dist/services/MonitoringService.js +267 -0
  123. package/dist/services/MonitoringService.js.map +1 -0
  124. package/dist/services/NotificationService.d.ts +132 -0
  125. package/dist/services/NotificationService.d.ts.map +1 -0
  126. package/dist/services/NotificationService.js +297 -0
  127. package/dist/services/NotificationService.js.map +1 -0
  128. package/dist/services/RateLimiter.d.ts +51 -0
  129. package/dist/services/RateLimiter.d.ts.map +1 -0
  130. package/dist/services/RateLimiter.js +141 -0
  131. package/dist/services/RateLimiter.js.map +1 -0
  132. package/dist/services/ValidationService.d.ts +49 -0
  133. package/dist/services/ValidationService.d.ts.map +1 -0
  134. package/dist/services/ValidationService.js +158 -0
  135. package/dist/services/ValidationService.js.map +1 -0
  136. package/dist/services/index.d.ts +12 -0
  137. package/dist/services/index.d.ts.map +1 -0
  138. package/dist/services/index.js +12 -0
  139. package/dist/services/index.js.map +1 -0
  140. package/dist/types/Bot.d.ts +63 -0
  141. package/dist/types/Bot.d.ts.map +1 -0
  142. package/dist/types/Bot.js +5 -0
  143. package/dist/types/Bot.js.map +1 -0
  144. package/dist/types/Config.d.ts +57 -0
  145. package/dist/types/Config.d.ts.map +1 -0
  146. package/dist/types/Config.js +5 -0
  147. package/dist/types/Config.js.map +1 -0
  148. package/dist/types/Errors.d.ts +37 -0
  149. package/dist/types/Errors.d.ts.map +1 -0
  150. package/dist/types/Errors.js +34 -0
  151. package/dist/types/Errors.js.map +1 -0
  152. package/dist/types/SSH.d.ts +56 -0
  153. package/dist/types/SSH.d.ts.map +1 -0
  154. package/dist/types/SSH.js +6 -0
  155. package/dist/types/SSH.js.map +1 -0
  156. package/dist/types/Server.d.ts +39 -0
  157. package/dist/types/Server.d.ts.map +1 -0
  158. package/dist/types/Server.js +5 -0
  159. package/dist/types/Server.js.map +1 -0
  160. package/dist/types/index.d.ts +10 -0
  161. package/dist/types/index.d.ts.map +1 -0
  162. package/dist/types/index.js +6 -0
  163. package/dist/types/index.js.map +1 -0
  164. package/dist/utils/commandUtils.d.ts +25 -0
  165. package/dist/utils/commandUtils.d.ts.map +1 -0
  166. package/dist/utils/commandUtils.js +94 -0
  167. package/dist/utils/commandUtils.js.map +1 -0
  168. package/dist/utils/fileUtils.d.ts +40 -0
  169. package/dist/utils/fileUtils.d.ts.map +1 -0
  170. package/dist/utils/fileUtils.js +114 -0
  171. package/dist/utils/fileUtils.js.map +1 -0
  172. package/dist/utils/index.d.ts +7 -0
  173. package/dist/utils/index.d.ts.map +1 -0
  174. package/dist/utils/index.js +7 -0
  175. package/dist/utils/index.js.map +1 -0
  176. package/dist/utils/pathUtils.d.ts +40 -0
  177. package/dist/utils/pathUtils.d.ts.map +1 -0
  178. package/dist/utils/pathUtils.js +140 -0
  179. package/dist/utils/pathUtils.js.map +1 -0
  180. package/package.json +31 -5
  181. package/scripts/build.sh +20 -0
  182. package/scripts/postinstall.js +87 -0
  183. package/scripts/release.sh +22 -0
  184. package/scripts/setup-env.js +237 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Auth Middleware
3
+ * Validates that only authorized users can interact with the bot
4
+ */
5
+ import { LoggingService } from "../services/LoggingService.js";
6
+ import type { IMiddleware, MiddlewareContext } from "../types/index.js";
7
+ /**
8
+ * Authorization middleware
9
+ */
10
+ export declare class AuthMiddleware implements IMiddleware {
11
+ private readonly ownerIds;
12
+ private readonly logger;
13
+ constructor(ownerIds: string[], logger: LoggingService);
14
+ execute(context: MiddlewareContext): Promise<void>;
15
+ /**
16
+ * Check if a user ID is authorized
17
+ */
18
+ isAuthorized(userId: number): boolean;
19
+ /**
20
+ * Add an owner ID
21
+ */
22
+ addOwner(userId: string): void;
23
+ /**
24
+ * Remove an owner ID
25
+ */
26
+ removeOwner(userId: string): void;
27
+ }
28
+ //# sourceMappingURL=AuthMiddleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthMiddleware.d.ts","sourceRoot":"","sources":["../../src/middleware/AuthMiddleware.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAExE;;GAEG;AACH,qBAAa,cAAe,YAAW,WAAW;IAChD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAc;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;gBAE5B,QAAQ,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,cAAc;IAKhD,OAAO,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBxD;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIrC;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI9B;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAGlC"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Auth Middleware
3
+ * Validates that only authorized users can interact with the bot
4
+ */
5
+ import { UnauthorizedError } from "../errors/index.js";
6
+ /**
7
+ * Authorization middleware
8
+ */
9
+ export class AuthMiddleware {
10
+ ownerIds;
11
+ logger;
12
+ constructor(ownerIds, logger) {
13
+ this.ownerIds = new Set(ownerIds);
14
+ this.logger = logger;
15
+ }
16
+ async execute(context) {
17
+ const userId = context.userId;
18
+ // Check if user is authorized
19
+ if (!this.ownerIds.has(String(userId))) {
20
+ this.logger.warn("Unauthorized access attempt", {
21
+ userId,
22
+ chatId: context.chatId,
23
+ text: context.text,
24
+ });
25
+ throw new UnauthorizedError(userId);
26
+ }
27
+ // User is authorized, continue
28
+ await context.next();
29
+ }
30
+ /**
31
+ * Check if a user ID is authorized
32
+ */
33
+ isAuthorized(userId) {
34
+ return this.ownerIds.has(String(userId));
35
+ }
36
+ /**
37
+ * Add an owner ID
38
+ */
39
+ addOwner(userId) {
40
+ this.ownerIds.add(userId);
41
+ }
42
+ /**
43
+ * Remove an owner ID
44
+ */
45
+ removeOwner(userId) {
46
+ this.ownerIds.delete(userId);
47
+ }
48
+ }
49
+ //# sourceMappingURL=AuthMiddleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthMiddleware.js","sourceRoot":"","sources":["../../src/middleware/AuthMiddleware.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAIvD;;GAEG;AACH,MAAM,OAAO,cAAc;IACR,QAAQ,CAAc;IACtB,MAAM,CAAiB;IAExC,YAAY,QAAkB,EAAE,MAAsB;QACpD,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAA0B;QACtC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAE9B,8BAA8B;QAC9B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE;gBAC9C,MAAM;gBACN,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,IAAI,EAAE,OAAO,CAAC,IAAI;aACnB,CAAC,CAAC;YAEH,MAAM,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC;QAED,+BAA+B;QAC/B,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,MAAc;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,MAAc;QACrB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,MAAc;QACxB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;CACF"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Rate Limit Middleware
3
+ * Limits the number of requests per user
4
+ */
5
+ import { RateLimiter } from "../services/RateLimiter.js";
6
+ import type { IMiddleware, MiddlewareContext } from "../types/index.js";
7
+ /**
8
+ * Rate limiting middleware
9
+ */
10
+ export declare class RateLimitMiddleware implements IMiddleware {
11
+ private readonly rateLimiter;
12
+ constructor(rateLimiter: RateLimiter);
13
+ execute(context: MiddlewareContext): Promise<void>;
14
+ /**
15
+ * Get remaining requests for a chat
16
+ */
17
+ getRemaining(chatId: number): number;
18
+ /**
19
+ * Reset rate limit for a chat
20
+ */
21
+ reset(chatId: number): void;
22
+ }
23
+ //# sourceMappingURL=RateLimitMiddleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RateLimitMiddleware.d.ts","sourceRoot":"","sources":["../../src/middleware/RateLimitMiddleware.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAExE;;GAEG;AACH,qBAAa,mBAAoB,YAAW,WAAW;IACrD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;gBAE9B,WAAW,EAAE,WAAW;IAI9B,OAAO,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAWxD;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAIpC;;OAEG;IACH,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAG5B"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Rate Limit Middleware
3
+ * Limits the number of requests per user
4
+ */
5
+ /**
6
+ * Rate limiting middleware
7
+ */
8
+ export class RateLimitMiddleware {
9
+ rateLimiter;
10
+ constructor(rateLimiter) {
11
+ this.rateLimiter = rateLimiter;
12
+ }
13
+ async execute(context) {
14
+ // Use chat ID as identifier for rate limiting
15
+ const identifier = String(context.chatId);
16
+ // Check rate limit (throws if exceeded)
17
+ this.rateLimiter.checkLimit(identifier);
18
+ // Continue to next middleware/handler
19
+ await context.next();
20
+ }
21
+ /**
22
+ * Get remaining requests for a chat
23
+ */
24
+ getRemaining(chatId) {
25
+ return this.rateLimiter.getRemaining(String(chatId));
26
+ }
27
+ /**
28
+ * Reset rate limit for a chat
29
+ */
30
+ reset(chatId) {
31
+ this.rateLimiter.reset(String(chatId));
32
+ }
33
+ }
34
+ //# sourceMappingURL=RateLimitMiddleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RateLimitMiddleware.js","sourceRoot":"","sources":["../../src/middleware/RateLimitMiddleware.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH;;GAEG;AACH,MAAM,OAAO,mBAAmB;IACb,WAAW,CAAc;IAE1C,YAAY,WAAwB;QAClC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAA0B;QACtC,8CAA8C;QAC9C,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE1C,wCAAwC;QACxC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAExC,sCAAsC;QACtC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,MAAc;QACzB,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAc;QAClB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACzC,CAAC;CACF"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Middleware modules index - exports all middleware
3
+ */
4
+ export { AuthMiddleware } from './AuthMiddleware.js';
5
+ export { RateLimitMiddleware } from './RateLimitMiddleware.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/middleware/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Middleware modules index - exports all middleware
3
+ */
4
+ export { AuthMiddleware } from './AuthMiddleware.js';
5
+ export { RateLimitMiddleware } from './RateLimitMiddleware.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/middleware/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,119 @@
1
+ /**
2
+ * Backup Service
3
+ * Provides automatic backup and recovery for server configurations
4
+ */
5
+ import type { LogContext, ServerStorage } from "../types/index.js";
6
+ import { LoggingService } from "./LoggingService.js";
7
+ /**
8
+ * Backup metadata
9
+ */
10
+ interface BackupMetadata {
11
+ id: string;
12
+ filename: string;
13
+ createdAt: Date;
14
+ size: number;
15
+ version: number;
16
+ checksum: string;
17
+ reason: "automatic" | "manual" | "pre-migration";
18
+ }
19
+ /**
20
+ * Backup configuration
21
+ */
22
+ export interface BackupConfig {
23
+ enabled: boolean;
24
+ backupDir: string;
25
+ maxBackups: number;
26
+ backupInterval: number;
27
+ backupBeforeWrite: boolean;
28
+ }
29
+ /**
30
+ * Backup result
31
+ */
32
+ export interface BackupResult {
33
+ success: boolean;
34
+ backupId?: string;
35
+ filename?: string;
36
+ error?: string;
37
+ }
38
+ /**
39
+ * Service for managing backups
40
+ */
41
+ export declare class BackupService {
42
+ private readonly logger;
43
+ private readonly config;
44
+ private readonly backups;
45
+ private backupTimer;
46
+ constructor(config: Partial<BackupConfig>, logger: LoggingService);
47
+ /**
48
+ * Initialize the backup service
49
+ */
50
+ initialize(): Promise<void>;
51
+ /**
52
+ * Create a backup
53
+ */
54
+ createBackup(data: ServerStorage, reason?: "automatic" | "manual" | "pre-migration"): Promise<BackupResult>;
55
+ /**
56
+ * Restore from a backup
57
+ */
58
+ restoreBackup(backupId: string): Promise<ServerStorage>;
59
+ /**
60
+ * List available backups
61
+ */
62
+ listBackups(): BackupMetadata[];
63
+ /**
64
+ * Delete a backup
65
+ */
66
+ deleteBackup(backupId: string): Promise<boolean>;
67
+ /**
68
+ * Get latest backup
69
+ */
70
+ getLatestBackup(): BackupMetadata | undefined;
71
+ /**
72
+ * Stop the backup service
73
+ */
74
+ stop(): void;
75
+ /**
76
+ * Get backup statistics
77
+ */
78
+ getStats(): {
79
+ enabled: boolean;
80
+ totalBackups: number;
81
+ totalSize: number;
82
+ oldestBackup: Date | null;
83
+ newestBackup: Date | null;
84
+ };
85
+ /**
86
+ * Get log context for backup-related logs
87
+ */
88
+ getLogContext(): LogContext;
89
+ /**
90
+ * Start automatic backup timer
91
+ */
92
+ private startBackupTimer;
93
+ /**
94
+ * Perform automatic backup (emits event for caller to provide data)
95
+ */
96
+ private performAutomaticBackup;
97
+ /**
98
+ * Load backup metadata from disk
99
+ */
100
+ private loadBackupMetadata;
101
+ /**
102
+ * Save backup metadata to disk
103
+ */
104
+ private saveBackupMetadata;
105
+ /**
106
+ * Rotate old backups to maintain max count
107
+ */
108
+ private rotateBackups;
109
+ /**
110
+ * Generate unique backup ID
111
+ */
112
+ private generateBackupId;
113
+ /**
114
+ * Calculate checksum for content
115
+ */
116
+ private calculateChecksum;
117
+ }
118
+ export {};
119
+ //# sourceMappingURL=BackupService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BackupService.d.ts","sourceRoot":"","sources":["../../src/services/BackupService.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEnE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD;;GAEG;AACH,UAAU,cAAc;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,IAAI,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,eAAe,CAAC;CAClD;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAWD;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAChD,OAAO,CAAC,WAAW,CAA+B;gBAEtC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,cAAc;IAWjE;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA8BjC;;OAEG;IACG,YAAY,CAChB,IAAI,EAAE,aAAa,EACnB,MAAM,GAAE,WAAW,GAAG,QAAQ,GAAG,eAA0B,GAC1D,OAAO,CAAC,YAAY,CAAC;IAoDxB;;OAEG;IACG,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAuC7D;;OAEG;IACH,WAAW,IAAI,cAAc,EAAE;IAM/B;;OAEG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA4BtD;;OAEG;IACH,eAAe,IAAI,cAAc,GAAG,SAAS;IAQ7C;;OAEG;IACH,IAAI,IAAI,IAAI;IAQZ;;OAEG;IACH,QAAQ,IAAI;QACV,OAAO,EAAE,OAAO,CAAC;QACjB,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,IAAI,GAAG,IAAI,CAAC;QAC1B,YAAY,EAAE,IAAI,GAAG,IAAI,CAAC;KAC3B;IAgBD;;OAEG;IACH,aAAa,IAAI,UAAU;IAS3B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAQxB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAM9B;;OAEG;YACW,kBAAkB;IAuBhC;;OAEG;YACW,kBAAkB;IAchC;;OAEG;YACW,aAAa;IAyB3B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAMxB;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAU1B"}
@@ -0,0 +1,313 @@
1
+ /**
2
+ * Backup Service
3
+ * Provides automatic backup and recovery for server configurations
4
+ */
5
+ import { promises as fs } from "fs";
6
+ import * as path from "path";
7
+ import { BaseError } from "../errors/BaseError.js";
8
+ import { FileReadError, FileWriteError } from "../errors/index.js";
9
+ import { ErrorCode } from "../types/index.js";
10
+ /**
11
+ * Custom backup error
12
+ */
13
+ class BackupError extends BaseError {
14
+ constructor(message, cause) {
15
+ super(ErrorCode.FILE_WRITE_ERROR, message, { cause });
16
+ }
17
+ }
18
+ /**
19
+ * Service for managing backups
20
+ */
21
+ export class BackupService {
22
+ logger;
23
+ config;
24
+ backups = [];
25
+ backupTimer = null;
26
+ constructor(config, logger) {
27
+ this.config = {
28
+ enabled: config.enabled ?? true,
29
+ backupDir: config.backupDir ?? "./backups",
30
+ maxBackups: config.maxBackups ?? 10,
31
+ backupInterval: config.backupInterval ?? 86400000, // 24 hours
32
+ backupBeforeWrite: config.backupBeforeWrite ?? true,
33
+ };
34
+ this.logger = logger;
35
+ }
36
+ /**
37
+ * Initialize the backup service
38
+ */
39
+ async initialize() {
40
+ if (!this.config.enabled) {
41
+ this.logger.info("Backup service disabled");
42
+ return;
43
+ }
44
+ try {
45
+ // Ensure backup directory exists
46
+ await fs.mkdir(this.config.backupDir, { recursive: true });
47
+ // Load existing backup metadata
48
+ await this.loadBackupMetadata();
49
+ // Start automatic backup timer
50
+ this.startBackupTimer();
51
+ this.logger.info("Backup service initialized", {
52
+ backupDir: this.config.backupDir,
53
+ maxBackups: this.config.maxBackups,
54
+ existingBackups: this.backups.length,
55
+ });
56
+ }
57
+ catch (error) {
58
+ this.logger.error("Failed to initialize backup service", error);
59
+ throw new BackupError("Failed to initialize backup service", error instanceof Error ? error : new Error(String(error)));
60
+ }
61
+ }
62
+ /**
63
+ * Create a backup
64
+ */
65
+ async createBackup(data, reason = "manual") {
66
+ if (!this.config.enabled) {
67
+ return { success: false, error: "Backup service is disabled" };
68
+ }
69
+ try {
70
+ const backupId = this.generateBackupId();
71
+ const filename = `servers_${backupId}.json`;
72
+ const filepath = path.join(this.config.backupDir, filename);
73
+ // Serialize data
74
+ const content = JSON.stringify(data, null, 2);
75
+ const checksum = this.calculateChecksum(content);
76
+ // Write backup file
77
+ await fs.writeFile(filepath, content, "utf-8");
78
+ // Get file size
79
+ const stats = await fs.stat(filepath);
80
+ // Create metadata
81
+ const metadata = {
82
+ id: backupId,
83
+ filename,
84
+ createdAt: new Date(),
85
+ size: stats.size,
86
+ version: data.version,
87
+ checksum,
88
+ reason,
89
+ };
90
+ this.backups.push(metadata);
91
+ await this.saveBackupMetadata();
92
+ // Rotate old backups
93
+ await this.rotateBackups();
94
+ this.logger.info("Backup created", {
95
+ backupId,
96
+ filename,
97
+ size: stats.size,
98
+ reason,
99
+ });
100
+ return { success: true, backupId, filename };
101
+ }
102
+ catch (error) {
103
+ const message = error instanceof Error ? error.message : "Unknown error";
104
+ this.logger.error("Failed to create backup", error);
105
+ return { success: false, error: message };
106
+ }
107
+ }
108
+ /**
109
+ * Restore from a backup
110
+ */
111
+ async restoreBackup(backupId) {
112
+ const metadata = this.backups.find((b) => b.id === backupId);
113
+ if (!metadata) {
114
+ throw new BackupError(`Backup not found: ${backupId}`);
115
+ }
116
+ const filepath = path.join(this.config.backupDir, metadata.filename);
117
+ try {
118
+ const content = await fs.readFile(filepath, "utf-8");
119
+ // Verify checksum
120
+ const checksum = this.calculateChecksum(content);
121
+ if (checksum !== metadata.checksum) {
122
+ throw new BackupError("Backup checksum mismatch - file may be corrupted");
123
+ }
124
+ const data = JSON.parse(content);
125
+ this.logger.info("Backup restored", {
126
+ backupId,
127
+ filename: metadata.filename,
128
+ version: metadata.version,
129
+ });
130
+ return data;
131
+ }
132
+ catch (error) {
133
+ if (error instanceof BaseError) {
134
+ throw error;
135
+ }
136
+ throw new FileReadError(filepath, error instanceof Error ? error : new Error(String(error)));
137
+ }
138
+ }
139
+ /**
140
+ * List available backups
141
+ */
142
+ listBackups() {
143
+ return [...this.backups].sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime());
144
+ }
145
+ /**
146
+ * Delete a backup
147
+ */
148
+ async deleteBackup(backupId) {
149
+ const index = this.backups.findIndex((b) => b.id === backupId);
150
+ if (index === -1) {
151
+ return false;
152
+ }
153
+ const metadata = this.backups[index];
154
+ if (!metadata) {
155
+ return false;
156
+ }
157
+ const filepath = path.join(this.config.backupDir, metadata.filename);
158
+ try {
159
+ await fs.unlink(filepath);
160
+ this.backups.splice(index, 1);
161
+ await this.saveBackupMetadata();
162
+ this.logger.info("Backup deleted", { backupId });
163
+ return true;
164
+ }
165
+ catch (error) {
166
+ this.logger.error("Failed to delete backup", error, {
167
+ backupId,
168
+ });
169
+ return false;
170
+ }
171
+ }
172
+ /**
173
+ * Get latest backup
174
+ */
175
+ getLatestBackup() {
176
+ if (this.backups.length === 0) {
177
+ return undefined;
178
+ }
179
+ const sorted = this.listBackups();
180
+ return sorted[0];
181
+ }
182
+ /**
183
+ * Stop the backup service
184
+ */
185
+ stop() {
186
+ if (this.backupTimer) {
187
+ clearTimeout(this.backupTimer);
188
+ this.backupTimer = null;
189
+ }
190
+ this.logger.info("Backup service stopped");
191
+ }
192
+ /**
193
+ * Get backup statistics
194
+ */
195
+ getStats() {
196
+ const totalSize = this.backups.reduce((sum, b) => sum + b.size, 0);
197
+ const sorted = this.listBackups();
198
+ return {
199
+ enabled: this.config.enabled,
200
+ totalBackups: this.backups.length,
201
+ totalSize,
202
+ oldestBackup: sorted.length > 0
203
+ ? (sorted[sorted.length - 1]?.createdAt ?? null)
204
+ : null,
205
+ newestBackup: sorted.length > 0 ? (sorted[0]?.createdAt ?? null) : null,
206
+ };
207
+ }
208
+ /**
209
+ * Get log context for backup-related logs
210
+ */
211
+ getLogContext() {
212
+ const stats = this.getStats();
213
+ return {
214
+ backupEnabled: stats.enabled,
215
+ totalBackups: stats.totalBackups,
216
+ backupSize: stats.totalSize,
217
+ };
218
+ }
219
+ /**
220
+ * Start automatic backup timer
221
+ */
222
+ startBackupTimer() {
223
+ if (this.config.backupInterval > 0) {
224
+ this.backupTimer = setInterval(() => {
225
+ this.performAutomaticBackup();
226
+ }, this.config.backupInterval);
227
+ }
228
+ }
229
+ /**
230
+ * Perform automatic backup (emits event for caller to provide data)
231
+ */
232
+ performAutomaticBackup() {
233
+ this.logger.debug("Automatic backup triggered");
234
+ // Note: In practice, this would need to be called with actual data
235
+ // The caller should handle this event and provide the data
236
+ }
237
+ /**
238
+ * Load backup metadata from disk
239
+ */
240
+ async loadBackupMetadata() {
241
+ const metaFile = path.join(this.config.backupDir, "backups_meta.json");
242
+ try {
243
+ const content = await fs.readFile(metaFile, "utf-8");
244
+ const data = JSON.parse(content);
245
+ // Convert date strings back to Date objects
246
+ for (const meta of data) {
247
+ meta.createdAt = new Date(meta.createdAt);
248
+ }
249
+ this.backups.push(...data);
250
+ }
251
+ catch (error) {
252
+ // File doesn't exist or is invalid - start fresh
253
+ if (error.code !== "ENOENT") {
254
+ this.logger.warn("Could not load backup metadata, starting fresh", {
255
+ error: error instanceof Error ? error.message : String(error),
256
+ });
257
+ }
258
+ }
259
+ }
260
+ /**
261
+ * Save backup metadata to disk
262
+ */
263
+ async saveBackupMetadata() {
264
+ const metaFile = path.join(this.config.backupDir, "backups_meta.json");
265
+ try {
266
+ const content = JSON.stringify(this.backups, null, 2);
267
+ await fs.writeFile(metaFile, content, "utf-8");
268
+ }
269
+ catch (error) {
270
+ throw new FileWriteError(metaFile, error instanceof Error ? error : new Error(String(error)));
271
+ }
272
+ }
273
+ /**
274
+ * Rotate old backups to maintain max count
275
+ */
276
+ async rotateBackups() {
277
+ if (this.backups.length <= this.config.maxBackups) {
278
+ return;
279
+ }
280
+ // Sort by creation date (oldest first)
281
+ const sorted = [...this.backups].sort((a, b) => a.createdAt.getTime() - b.createdAt.getTime());
282
+ const toRemove = sorted.slice(0, this.backups.length - this.config.maxBackups);
283
+ for (const meta of toRemove) {
284
+ await this.deleteBackup(meta.id);
285
+ }
286
+ this.logger.info("Rotated old backups", {
287
+ removed: toRemove.length,
288
+ remaining: this.backups.length,
289
+ });
290
+ }
291
+ /**
292
+ * Generate unique backup ID
293
+ */
294
+ generateBackupId() {
295
+ const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
296
+ const random = Math.random().toString(36).substring(2, 8);
297
+ return `${timestamp}_${random}`;
298
+ }
299
+ /**
300
+ * Calculate checksum for content
301
+ */
302
+ calculateChecksum(content) {
303
+ // Simple hash function for checksum
304
+ let hash = 0;
305
+ for (let i = 0; i < content.length; i++) {
306
+ const char = content.charCodeAt(i);
307
+ hash = (hash << 5) - hash + char;
308
+ hash = hash & hash; // Convert to 32-bit integer
309
+ }
310
+ return hash.toString(16);
311
+ }
312
+ }
313
+ //# sourceMappingURL=BackupService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BackupService.js","sourceRoot":"","sources":["../../src/services/BackupService.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEnE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAqC9C;;GAEG;AACH,MAAM,WAAY,SAAQ,SAAS;IACjC,YAAY,OAAe,EAAE,KAAa;QACxC,KAAK,CAAC,SAAS,CAAC,gBAAgB,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IACxD,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,aAAa;IACP,MAAM,CAAiB;IACvB,MAAM,CAAe;IACrB,OAAO,GAAqB,EAAE,CAAC;IACxC,WAAW,GAA0B,IAAI,CAAC;IAElD,YAAY,MAA6B,EAAE,MAAsB;QAC/D,IAAI,CAAC,MAAM,GAAG;YACZ,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,IAAI;YAC/B,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,WAAW;YAC1C,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,EAAE;YACnC,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,QAAQ,EAAE,WAAW;YAC9D,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,IAAI,IAAI;SACpD,CAAC;QACF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACzB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YAC5C,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,iCAAiC;YACjC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAE3D,gCAAgC;YAChC,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAEhC,+BAA+B;YAC/B,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAExB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE;gBAC7C,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;gBAChC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;gBAClC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;aACrC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAc,CAAC,CAAC;YACzE,MAAM,IAAI,WAAW,CACnB,qCAAqC,EACrC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAC1D,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAChB,IAAmB,EACnB,SAAmD,QAAQ;QAE3D,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACzB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,4BAA4B,EAAE,CAAC;QACjE,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACzC,MAAM,QAAQ,GAAG,WAAW,QAAQ,OAAO,CAAC;YAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAE5D,iBAAiB;YACjB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAEjD,oBAAoB;YACpB,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAE/C,gBAAgB;YAChB,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEtC,kBAAkB;YAClB,MAAM,QAAQ,GAAmB;gBAC/B,EAAE,EAAE,QAAQ;gBACZ,QAAQ;gBACR,SAAS,EAAE,IAAI,IAAI,EAAE;gBACrB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,QAAQ;gBACR,MAAM;aACP,CAAC;YAEF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC5B,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAEhC,qBAAqB;YACrB,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;YAE3B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE;gBACjC,QAAQ;gBACR,QAAQ;gBACR,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,MAAM;aACP,CAAC,CAAC;YAEH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;QAC/C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YACzE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAc,CAAC,CAAC;YAC7D,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QAC5C,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,QAAgB;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;QAC7D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,WAAW,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAErE,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAErD,kBAAkB;YAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACjD,IAAI,QAAQ,KAAK,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACnC,MAAM,IAAI,WAAW,CACnB,kDAAkD,CACnD,CAAC;YACJ,CAAC;YAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAkB,CAAC;YAElD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE;gBAClC,QAAQ;gBACR,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,OAAO,EAAE,QAAQ,CAAC,OAAO;aAC1B,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;gBAC/B,MAAM,KAAK,CAAC;YACd,CAAC;YACD,MAAM,IAAI,aAAa,CACrB,QAAQ,EACR,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAC1D,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAC3B,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,CACxD,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,QAAgB;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;QAC/D,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAErE,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC1B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC9B,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAEhC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;YACjD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAc,EAAE;gBAC3D,QAAQ;aACT,CAAC,CAAC;YACH,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,eAAe;QACb,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAClC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,IAAI;QACF,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC/B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC1B,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,QAAQ;QAON,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACnE,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAElC,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;YAC5B,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;YACjC,SAAS;YACT,YAAY,EACV,MAAM,CAAC,MAAM,GAAG,CAAC;gBACf,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,SAAS,IAAI,IAAI,CAAC;gBAChD,CAAC,CAAC,IAAI;YACV,YAAY,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;SACxE,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,aAAa;QACX,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,OAAO;YACL,aAAa,EAAE,KAAK,CAAC,OAAO;YAC5B,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,UAAU,EAAE,KAAK,CAAC,SAAS;SAC5B,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,gBAAgB;QACtB,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE;gBAClC,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAChC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED;;OAEG;IACK,sBAAsB;QAC5B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,mEAAmE;QACnE,2DAA2D;IAC7D,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,kBAAkB;QAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;QAEvE,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAqB,CAAC;YAErD,4CAA4C;YAC5C,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;gBACxB,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC5C,CAAC;YAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,iDAAiD;YACjD,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACvD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gDAAgD,EAAE;oBACjE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;iBAC9D,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,kBAAkB;QAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;QAEvE,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YACtD,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,cAAc,CACtB,QAAQ,EACR,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAC1D,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa;QACzB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAClD,OAAO;QACT,CAAC;QAED,uCAAuC;QACvC,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CACnC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,CACxD,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAC3B,CAAC,EACD,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAC7C,CAAC;QAEF,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnC,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE;YACtC,OAAO,EAAE,QAAQ,CAAC,MAAM;YACxB,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;SAC/B,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,gBAAgB;QACtB,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACjE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1D,OAAO,GAAG,SAAS,IAAI,MAAM,EAAE,CAAC;IAClC,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,OAAe;QACvC,oCAAoC;QACpC,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACnC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;YACjC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,4BAA4B;QAClD,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;CACF"}