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.
- package/LICENSE +21 -0
- package/README.md +103 -22
- package/deploy/.env.example +86 -0
- package/dist/config/index.d.ts +68 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +315 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/schema.d.ts +6 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +50 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/core/Bot.d.ts +91 -0
- package/dist/core/Bot.d.ts.map +1 -0
- package/dist/core/Bot.js +263 -0
- package/dist/core/Bot.js.map +1 -0
- package/dist/core/ConnectionPool.d.ts +125 -0
- package/dist/core/ConnectionPool.d.ts.map +1 -0
- package/dist/core/ConnectionPool.js +397 -0
- package/dist/core/ConnectionPool.js.map +1 -0
- package/dist/core/SSHClient.d.ts +112 -0
- package/dist/core/SSHClient.d.ts.map +1 -0
- package/dist/core/SSHClient.js +367 -0
- package/dist/core/SSHClient.js.map +1 -0
- package/dist/core/ServerManager.d.ts +80 -0
- package/dist/core/ServerManager.d.ts.map +1 -0
- package/dist/core/ServerManager.js +207 -0
- package/dist/core/ServerManager.js.map +1 -0
- package/dist/core/index.d.ts +8 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +8 -0
- package/dist/core/index.js.map +1 -0
- package/dist/errors/AuthError.d.ts +30 -0
- package/dist/errors/AuthError.d.ts.map +1 -0
- package/dist/errors/AuthError.js +35 -0
- package/dist/errors/AuthError.js.map +1 -0
- package/dist/errors/BaseError.d.ts +17 -0
- package/dist/errors/BaseError.d.ts.map +1 -0
- package/dist/errors/BaseError.js +34 -0
- package/dist/errors/BaseError.js.map +1 -0
- package/dist/errors/ConfigurationError.d.ts +24 -0
- package/dist/errors/ConfigurationError.d.ts.map +1 -0
- package/dist/errors/ConfigurationError.js +24 -0
- package/dist/errors/ConfigurationError.js.map +1 -0
- package/dist/errors/PoolError.d.ts +21 -0
- package/dist/errors/PoolError.d.ts.map +1 -0
- package/dist/errors/PoolError.js +30 -0
- package/dist/errors/PoolError.js.map +1 -0
- package/dist/errors/SSHError.d.ts +24 -0
- package/dist/errors/SSHError.d.ts.map +1 -0
- package/dist/errors/SSHError.js +38 -0
- package/dist/errors/SSHError.js.map +1 -0
- package/dist/errors/StorageError.d.ts +24 -0
- package/dist/errors/StorageError.d.ts.map +1 -0
- package/dist/errors/StorageError.js +35 -0
- package/dist/errors/StorageError.js.map +1 -0
- package/dist/errors/ValidationError.d.ts +29 -0
- package/dist/errors/ValidationError.d.ts.map +1 -0
- package/dist/errors/ValidationError.js +35 -0
- package/dist/errors/ValidationError.js.map +1 -0
- package/dist/errors/index.d.ts +11 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +18 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/handlers/BaseHandler.d.ts +50 -0
- package/dist/handlers/BaseHandler.d.ts.map +1 -0
- package/dist/handlers/BaseHandler.js +87 -0
- package/dist/handlers/BaseHandler.js.map +1 -0
- package/dist/handlers/CommandHandler.d.ts +23 -0
- package/dist/handlers/CommandHandler.d.ts.map +1 -0
- package/dist/handlers/CommandHandler.js +99 -0
- package/dist/handlers/CommandHandler.js.map +1 -0
- package/dist/handlers/HealthHandler.d.ts +25 -0
- package/dist/handlers/HealthHandler.d.ts.map +1 -0
- package/dist/handlers/HealthHandler.js +51 -0
- package/dist/handlers/HealthHandler.js.map +1 -0
- package/dist/handlers/HelpHandler.d.ts +32 -0
- package/dist/handlers/HelpHandler.d.ts.map +1 -0
- package/dist/handlers/HelpHandler.js +76 -0
- package/dist/handlers/HelpHandler.js.map +1 -0
- package/dist/handlers/ServerHandler.d.ts +72 -0
- package/dist/handlers/ServerHandler.d.ts.map +1 -0
- package/dist/handlers/ServerHandler.js +272 -0
- package/dist/handlers/ServerHandler.js.map +1 -0
- package/dist/handlers/index.d.ts +9 -0
- package/dist/handlers/index.d.ts.map +1 -0
- package/dist/handlers/index.js +9 -0
- package/dist/handlers/index.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +348 -0
- package/dist/index.js.map +1 -0
- package/dist/middleware/AuthMiddleware.d.ts +28 -0
- package/dist/middleware/AuthMiddleware.d.ts.map +1 -0
- package/dist/middleware/AuthMiddleware.js +49 -0
- package/dist/middleware/AuthMiddleware.js.map +1 -0
- package/dist/middleware/RateLimitMiddleware.d.ts +23 -0
- package/dist/middleware/RateLimitMiddleware.d.ts.map +1 -0
- package/dist/middleware/RateLimitMiddleware.js +34 -0
- package/dist/middleware/RateLimitMiddleware.js.map +1 -0
- package/dist/middleware/index.d.ts +6 -0
- package/dist/middleware/index.d.ts.map +1 -0
- package/dist/middleware/index.js +6 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/services/BackupService.d.ts +119 -0
- package/dist/services/BackupService.d.ts.map +1 -0
- package/dist/services/BackupService.js +313 -0
- package/dist/services/BackupService.js.map +1 -0
- package/dist/services/CryptoService.d.ts +37 -0
- package/dist/services/CryptoService.d.ts.map +1 -0
- package/dist/services/CryptoService.js +108 -0
- package/dist/services/CryptoService.js.map +1 -0
- package/dist/services/HealthService.d.ts +126 -0
- package/dist/services/HealthService.d.ts.map +1 -0
- package/dist/services/HealthService.js +213 -0
- package/dist/services/HealthService.js.map +1 -0
- package/dist/services/LoggingService.d.ts +115 -0
- package/dist/services/LoggingService.d.ts.map +1 -0
- package/dist/services/LoggingService.js +334 -0
- package/dist/services/LoggingService.js.map +1 -0
- package/dist/services/MonitoringService.d.ts +119 -0
- package/dist/services/MonitoringService.d.ts.map +1 -0
- package/dist/services/MonitoringService.js +267 -0
- package/dist/services/MonitoringService.js.map +1 -0
- package/dist/services/NotificationService.d.ts +132 -0
- package/dist/services/NotificationService.d.ts.map +1 -0
- package/dist/services/NotificationService.js +297 -0
- package/dist/services/NotificationService.js.map +1 -0
- package/dist/services/RateLimiter.d.ts +51 -0
- package/dist/services/RateLimiter.d.ts.map +1 -0
- package/dist/services/RateLimiter.js +141 -0
- package/dist/services/RateLimiter.js.map +1 -0
- package/dist/services/ValidationService.d.ts +49 -0
- package/dist/services/ValidationService.d.ts.map +1 -0
- package/dist/services/ValidationService.js +158 -0
- package/dist/services/ValidationService.js.map +1 -0
- package/dist/services/index.d.ts +12 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +12 -0
- package/dist/services/index.js.map +1 -0
- package/dist/types/Bot.d.ts +63 -0
- package/dist/types/Bot.d.ts.map +1 -0
- package/dist/types/Bot.js +5 -0
- package/dist/types/Bot.js.map +1 -0
- package/dist/types/Config.d.ts +57 -0
- package/dist/types/Config.d.ts.map +1 -0
- package/dist/types/Config.js +5 -0
- package/dist/types/Config.js.map +1 -0
- package/dist/types/Errors.d.ts +37 -0
- package/dist/types/Errors.d.ts.map +1 -0
- package/dist/types/Errors.js +34 -0
- package/dist/types/Errors.js.map +1 -0
- package/dist/types/SSH.d.ts +56 -0
- package/dist/types/SSH.d.ts.map +1 -0
- package/dist/types/SSH.js +6 -0
- package/dist/types/SSH.js.map +1 -0
- package/dist/types/Server.d.ts +39 -0
- package/dist/types/Server.d.ts.map +1 -0
- package/dist/types/Server.js +5 -0
- package/dist/types/Server.js.map +1 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +6 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/commandUtils.d.ts +25 -0
- package/dist/utils/commandUtils.d.ts.map +1 -0
- package/dist/utils/commandUtils.js +94 -0
- package/dist/utils/commandUtils.js.map +1 -0
- package/dist/utils/fileUtils.d.ts +40 -0
- package/dist/utils/fileUtils.d.ts.map +1 -0
- package/dist/utils/fileUtils.js +114 -0
- package/dist/utils/fileUtils.js.map +1 -0
- package/dist/utils/index.d.ts +7 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +7 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/pathUtils.d.ts +40 -0
- package/dist/utils/pathUtils.d.ts.map +1 -0
- package/dist/utils/pathUtils.js +140 -0
- package/dist/utils/pathUtils.js.map +1 -0
- package/package.json +31 -5
- package/scripts/build.sh +20 -0
- package/scripts/postinstall.js +87 -0
- package/scripts/release.sh +22 -0
- package/scripts/setup-env.js +237 -0
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core modules index - exports all core components
|
|
3
|
+
*/
|
|
4
|
+
export { Bot } from "./Bot.js";
|
|
5
|
+
export { ConnectionPool } from "./ConnectionPool.js";
|
|
6
|
+
export { ServerManager } from "./ServerManager.js";
|
|
7
|
+
export { SSHClient } from "./SSHClient.js";
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core modules index - exports all core components
|
|
3
|
+
*/
|
|
4
|
+
export { Bot } from "./Bot.js";
|
|
5
|
+
export { ConnectionPool } from "./ConnectionPool.js";
|
|
6
|
+
export { ServerManager } from "./ServerManager.js";
|
|
7
|
+
export { SSHClient } from "./SSHClient.js";
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Authentication error classes
|
|
3
|
+
*/
|
|
4
|
+
import { ErrorCode } from "../types/index.js";
|
|
5
|
+
import { BaseError } from "./BaseError.js";
|
|
6
|
+
export declare class AuthError extends BaseError {
|
|
7
|
+
constructor(code: ErrorCode, message: string, options?: {
|
|
8
|
+
context?: Record<string, unknown>;
|
|
9
|
+
cause?: Error;
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
export declare class UnauthorizedError extends AuthError {
|
|
13
|
+
constructor(userId: number, options?: {
|
|
14
|
+
context?: Record<string, unknown>;
|
|
15
|
+
cause?: Error;
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
export declare class InvalidCredentialsError extends AuthError {
|
|
19
|
+
constructor(serverId: string, options?: {
|
|
20
|
+
context?: Record<string, unknown>;
|
|
21
|
+
cause?: Error;
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
export declare class RateLimitedError extends AuthError {
|
|
25
|
+
constructor(retryAfter: number, options?: {
|
|
26
|
+
context?: Record<string, unknown>;
|
|
27
|
+
cause?: Error;
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=AuthError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthError.d.ts","sourceRoot":"","sources":["../../src/errors/AuthError.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,qBAAa,SAAU,SAAQ,SAAS;gBAEpC,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE;CAIjE;AAED,qBAAa,iBAAkB,SAAQ,SAAS;gBAE5C,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE;CAOjE;AAED,qBAAa,uBAAwB,SAAQ,SAAS;gBAElD,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE;CAOjE;AAED,qBAAa,gBAAiB,SAAQ,SAAS;gBAE3C,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE;CAWjE"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Authentication error classes
|
|
3
|
+
*/
|
|
4
|
+
import { ErrorCode } from "../types/index.js";
|
|
5
|
+
import { BaseError } from "./BaseError.js";
|
|
6
|
+
export class AuthError extends BaseError {
|
|
7
|
+
constructor(code, message, options) {
|
|
8
|
+
super(code, message, options);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export class UnauthorizedError extends AuthError {
|
|
12
|
+
constructor(userId, options) {
|
|
13
|
+
super(ErrorCode.UNAUTHORIZED, "Unauthorized access attempt", {
|
|
14
|
+
...options,
|
|
15
|
+
context: { ...options?.context, userId },
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export class InvalidCredentialsError extends AuthError {
|
|
20
|
+
constructor(serverId, options) {
|
|
21
|
+
super(ErrorCode.INVALID_CREDENTIALS, "Invalid credentials provided", {
|
|
22
|
+
...options,
|
|
23
|
+
context: { ...options?.context, serverId },
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export class RateLimitedError extends AuthError {
|
|
28
|
+
constructor(retryAfter, options) {
|
|
29
|
+
super(ErrorCode.RATE_LIMITED, `Rate limited. Try again in ${retryAfter} seconds`, {
|
|
30
|
+
...options,
|
|
31
|
+
context: { ...options?.context, retryAfter },
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=AuthError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthError.js","sourceRoot":"","sources":["../../src/errors/AuthError.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,OAAO,SAAU,SAAQ,SAAS;IACtC,YACE,IAAe,EACf,OAAe,EACf,OAA8D;QAE9D,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAChC,CAAC;CACF;AAED,MAAM,OAAO,iBAAkB,SAAQ,SAAS;IAC9C,YACE,MAAc,EACd,OAA8D;QAE9D,KAAK,CAAC,SAAS,CAAC,YAAY,EAAE,6BAA6B,EAAE;YAC3D,GAAG,OAAO;YACV,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE;SACzC,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,OAAO,uBAAwB,SAAQ,SAAS;IACpD,YACE,QAAgB,EAChB,OAA8D;QAE9D,KAAK,CAAC,SAAS,CAAC,mBAAmB,EAAE,8BAA8B,EAAE;YACnE,GAAG,OAAO;YACV,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE;SAC3C,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,OAAO,gBAAiB,SAAQ,SAAS;IAC7C,YACE,UAAkB,EAClB,OAA8D;QAE9D,KAAK,CACH,SAAS,CAAC,YAAY,EACtB,8BAA8B,UAAU,UAAU,EAClD;YACE,GAAG,OAAO;YACV,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE;SAC7C,CACF,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base error class for all application errors
|
|
3
|
+
*/
|
|
4
|
+
import { ErrorCode, type ErrorDetails } from "../types/index.js";
|
|
5
|
+
export declare abstract class BaseError extends Error {
|
|
6
|
+
readonly code: ErrorCode;
|
|
7
|
+
readonly timestamp: Date;
|
|
8
|
+
readonly context?: Record<string, unknown>;
|
|
9
|
+
readonly cause?: Error;
|
|
10
|
+
constructor(code: ErrorCode, message: string, options?: {
|
|
11
|
+
context?: Record<string, unknown>;
|
|
12
|
+
cause?: Error;
|
|
13
|
+
});
|
|
14
|
+
toJSON(): ErrorDetails;
|
|
15
|
+
toString(): string;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=BaseError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseError.d.ts","sourceRoot":"","sources":["../../src/errors/BaseError.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjE,8BAAsB,SAAU,SAAQ,KAAK;IAC3C,SAAgB,IAAI,EAAE,SAAS,CAAC;IAChC,SAAgB,SAAS,EAAE,IAAI,CAAC;IAChC,SAAgB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClD,SAAgB,KAAK,CAAC,EAAE,KAAK,CAAC;gBAG5B,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE;IAwBhE,MAAM,IAAI,YAAY;IAStB,QAAQ,IAAI,MAAM;CAGnB"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base error class for all application errors
|
|
3
|
+
*/
|
|
4
|
+
export class BaseError extends Error {
|
|
5
|
+
code;
|
|
6
|
+
timestamp;
|
|
7
|
+
context;
|
|
8
|
+
cause;
|
|
9
|
+
constructor(code, message, options) {
|
|
10
|
+
super(message);
|
|
11
|
+
this.name = this.constructor.name;
|
|
12
|
+
this.code = code;
|
|
13
|
+
this.timestamp = new Date();
|
|
14
|
+
this.context = options?.context;
|
|
15
|
+
this.cause = options?.cause;
|
|
16
|
+
// Maintains proper stack trace for where error was thrown (only in V8/Node.js)
|
|
17
|
+
const captureStackTrace = Error.captureStackTrace;
|
|
18
|
+
if (captureStackTrace) {
|
|
19
|
+
captureStackTrace(this, this.constructor);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
toJSON() {
|
|
23
|
+
return {
|
|
24
|
+
code: this.code,
|
|
25
|
+
message: this.message,
|
|
26
|
+
context: this.context,
|
|
27
|
+
cause: this.cause,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
toString() {
|
|
31
|
+
return `${this.name} [${this.code}]: ${this.message}`;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=BaseError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseError.js","sourceRoot":"","sources":["../../src/errors/BaseError.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,OAAgB,SAAU,SAAQ,KAAK;IAC3B,IAAI,CAAY;IAChB,SAAS,CAAO;IAChB,OAAO,CAA2B;IAClC,KAAK,CAAS;IAE9B,YACE,IAAe,EACf,OAAe,EACf,OAA8D;QAE9D,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,CAAC;QAChC,IAAI,CAAC,KAAK,GAAG,OAAO,EAAE,KAAK,CAAC;QAE5B,+EAA+E;QAC/E,MAAM,iBAAiB,GACrB,KAMD,CAAC,iBAAiB,CAAC;QAEpB,IAAI,iBAAiB,EAAE,CAAC;YACtB,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,MAAM;QACJ,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;IACJ,CAAC;IAED,QAAQ;QACN,OAAO,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACxD,CAAC;CACF"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration error classes
|
|
3
|
+
*/
|
|
4
|
+
import { ErrorCode } from "../types/index.js";
|
|
5
|
+
import { BaseError } from "./BaseError.js";
|
|
6
|
+
export declare class ConfigurationError extends BaseError {
|
|
7
|
+
constructor(code: ErrorCode, message: string, options?: {
|
|
8
|
+
context?: Record<string, unknown>;
|
|
9
|
+
cause?: Error;
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
export declare class MissingConfigError extends ConfigurationError {
|
|
13
|
+
constructor(configKey: string, options?: {
|
|
14
|
+
context?: Record<string, unknown>;
|
|
15
|
+
cause?: Error;
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
export declare class InvalidConfigError extends ConfigurationError {
|
|
19
|
+
constructor(message: string, options?: {
|
|
20
|
+
context?: Record<string, unknown>;
|
|
21
|
+
cause?: Error;
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=ConfigurationError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfigurationError.d.ts","sourceRoot":"","sources":["../../src/errors/ConfigurationError.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,qBAAa,kBAAmB,SAAQ,SAAS;gBAE7C,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE;CAIjE;AAED,qBAAa,kBAAmB,SAAQ,kBAAkB;gBAEtD,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE;CAWjE;AAED,qBAAa,kBAAmB,SAAQ,kBAAkB;gBAEtD,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE;CAIjE"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration error classes
|
|
3
|
+
*/
|
|
4
|
+
import { ErrorCode } from "../types/index.js";
|
|
5
|
+
import { BaseError } from "./BaseError.js";
|
|
6
|
+
export class ConfigurationError extends BaseError {
|
|
7
|
+
constructor(code, message, options) {
|
|
8
|
+
super(code, message, options);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export class MissingConfigError extends ConfigurationError {
|
|
12
|
+
constructor(configKey, options) {
|
|
13
|
+
super(ErrorCode.MISSING_CONFIG, `Missing required configuration: ${configKey}`, {
|
|
14
|
+
...options,
|
|
15
|
+
context: { ...options?.context, configKey },
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export class InvalidConfigError extends ConfigurationError {
|
|
20
|
+
constructor(message, options) {
|
|
21
|
+
super(ErrorCode.INVALID_CONFIG, message, options);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=ConfigurationError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfigurationError.js","sourceRoot":"","sources":["../../src/errors/ConfigurationError.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,OAAO,kBAAmB,SAAQ,SAAS;IAC/C,YACE,IAAe,EACf,OAAe,EACf,OAA8D;QAE9D,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAChC,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,kBAAkB;IACxD,YACE,SAAiB,EACjB,OAA8D;QAE9D,KAAK,CACH,SAAS,CAAC,cAAc,EACxB,mCAAmC,SAAS,EAAE,EAC9C;YACE,GAAG,OAAO;YACV,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE;SAC5C,CACF,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,kBAAkB;IACxD,YACE,OAAe,EACf,OAA8D;QAE9D,KAAK,CAAC,SAAS,CAAC,cAAc,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;CACF"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pool-related errors
|
|
3
|
+
*/
|
|
4
|
+
import { BaseError } from "./BaseError.js";
|
|
5
|
+
/**
|
|
6
|
+
* Error thrown when connection pool is exhausted
|
|
7
|
+
*/
|
|
8
|
+
export declare class PoolExhaustedError extends BaseError {
|
|
9
|
+
readonly maxConnections: number;
|
|
10
|
+
readonly timeout: number;
|
|
11
|
+
constructor(maxConnections: number, timeout: number);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Error thrown when a connection acquisition times out
|
|
15
|
+
*/
|
|
16
|
+
export declare class ConnectionAcquireTimeoutError extends BaseError {
|
|
17
|
+
readonly serverId: string;
|
|
18
|
+
readonly timeout: number;
|
|
19
|
+
constructor(serverId: string, timeout: number);
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=PoolError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PoolError.d.ts","sourceRoot":"","sources":["../../src/errors/PoolError.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,SAAS;IAC/C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;gBAEb,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAQpD;AAED;;GAEG;AACH,qBAAa,6BAA8B,SAAQ,SAAS;IAC1D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;gBAEb,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAQ9C"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pool-related errors
|
|
3
|
+
*/
|
|
4
|
+
import { ErrorCode } from "../types/Errors.js";
|
|
5
|
+
import { BaseError } from "./BaseError.js";
|
|
6
|
+
/**
|
|
7
|
+
* Error thrown when connection pool is exhausted
|
|
8
|
+
*/
|
|
9
|
+
export class PoolExhaustedError extends BaseError {
|
|
10
|
+
maxConnections;
|
|
11
|
+
timeout;
|
|
12
|
+
constructor(maxConnections, timeout) {
|
|
13
|
+
super(ErrorCode.POOL_EXHAUSTED, `Connection pool exhausted (max: ${maxConnections}, timeout: ${timeout}ms)`);
|
|
14
|
+
this.maxConnections = maxConnections;
|
|
15
|
+
this.timeout = timeout;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Error thrown when a connection acquisition times out
|
|
20
|
+
*/
|
|
21
|
+
export class ConnectionAcquireTimeoutError extends BaseError {
|
|
22
|
+
serverId;
|
|
23
|
+
timeout;
|
|
24
|
+
constructor(serverId, timeout) {
|
|
25
|
+
super(ErrorCode.CONNECTION_ACQUIRE_TIMEOUT, `Timeout acquiring connection for server ${serverId} after ${timeout}ms`);
|
|
26
|
+
this.serverId = serverId;
|
|
27
|
+
this.timeout = timeout;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=PoolError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PoolError.js","sourceRoot":"","sources":["../../src/errors/PoolError.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,SAAS;IACtC,cAAc,CAAS;IACvB,OAAO,CAAS;IAEzB,YAAY,cAAsB,EAAE,OAAe;QACjD,KAAK,CACH,SAAS,CAAC,cAAc,EACxB,mCAAmC,cAAc,cAAc,OAAO,KAAK,CAC5E,CAAC;QACF,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,6BAA8B,SAAQ,SAAS;IACjD,QAAQ,CAAS;IACjB,OAAO,CAAS;IAEzB,YAAY,QAAgB,EAAE,OAAe;QAC3C,KAAK,CACH,SAAS,CAAC,0BAA0B,EACpC,2CAA2C,QAAQ,UAAU,OAAO,IAAI,CACzE,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SSH error classes
|
|
3
|
+
*/
|
|
4
|
+
import { ErrorCode } from "../types/index.js";
|
|
5
|
+
import { BaseError } from "./BaseError.js";
|
|
6
|
+
export declare class SSHError extends BaseError {
|
|
7
|
+
constructor(code: ErrorCode, message: string, options?: {
|
|
8
|
+
context?: Record<string, unknown>;
|
|
9
|
+
cause?: Error;
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
export declare class ConnectionFailedError extends SSHError {
|
|
13
|
+
constructor(host: string, cause?: Error);
|
|
14
|
+
}
|
|
15
|
+
export declare class CommandFailedError extends SSHError {
|
|
16
|
+
constructor(command: string, exitCode: number | null, stderr: string);
|
|
17
|
+
}
|
|
18
|
+
export declare class ConnectionTimeoutError extends SSHError {
|
|
19
|
+
constructor(host: string, timeout: number);
|
|
20
|
+
}
|
|
21
|
+
export declare class DisconnectedError extends SSHError {
|
|
22
|
+
constructor(message?: string);
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=SSHError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SSHError.d.ts","sourceRoot":"","sources":["../../src/errors/SSHError.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,qBAAa,QAAS,SAAQ,SAAS;gBAEnC,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE;CAIjE;AAED,qBAAa,qBAAsB,SAAQ,QAAQ;gBACrC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAMxC;AAED,qBAAa,kBAAmB,SAAQ,QAAQ;gBAClC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM;CASrE;AAED,qBAAa,sBAAuB,SAAQ,QAAQ;gBACtC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAS1C;AAED,qBAAa,iBAAkB,SAAQ,QAAQ;gBACjC,OAAO,GAAE,MAAmC;CAGzD"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SSH error classes
|
|
3
|
+
*/
|
|
4
|
+
import { ErrorCode } from "../types/index.js";
|
|
5
|
+
import { BaseError } from "./BaseError.js";
|
|
6
|
+
export class SSHError extends BaseError {
|
|
7
|
+
constructor(code, message, options) {
|
|
8
|
+
super(code, message, options);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export class ConnectionFailedError extends SSHError {
|
|
12
|
+
constructor(host, cause) {
|
|
13
|
+
super(ErrorCode.CONNECTION_FAILED, `Failed to connect to ${host}`, {
|
|
14
|
+
context: { host },
|
|
15
|
+
cause,
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export class CommandFailedError extends SSHError {
|
|
20
|
+
constructor(command, exitCode, stderr) {
|
|
21
|
+
super(ErrorCode.COMMAND_FAILED, `Command failed with exit code ${exitCode ?? "unknown"}`, {
|
|
22
|
+
context: { command, exitCode, stderr },
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export class ConnectionTimeoutError extends SSHError {
|
|
27
|
+
constructor(host, timeout) {
|
|
28
|
+
super(ErrorCode.CONNECTION_TIMEOUT, `Connection to ${host} timed out after ${timeout}ms`, {
|
|
29
|
+
context: { host, timeout },
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export class DisconnectedError extends SSHError {
|
|
34
|
+
constructor(message = "No active SSH connection") {
|
|
35
|
+
super(ErrorCode.DISCONNECTED, message);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=SSHError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SSHError.js","sourceRoot":"","sources":["../../src/errors/SSHError.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,OAAO,QAAS,SAAQ,SAAS;IACrC,YACE,IAAe,EACf,OAAe,EACf,OAA8D;QAE9D,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAChC,CAAC;CACF;AAED,MAAM,OAAO,qBAAsB,SAAQ,QAAQ;IACjD,YAAY,IAAY,EAAE,KAAa;QACrC,KAAK,CAAC,SAAS,CAAC,iBAAiB,EAAE,wBAAwB,IAAI,EAAE,EAAE;YACjE,OAAO,EAAE,EAAE,IAAI,EAAE;YACjB,KAAK;SACN,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,QAAQ;IAC9C,YAAY,OAAe,EAAE,QAAuB,EAAE,MAAc;QAClE,KAAK,CACH,SAAS,CAAC,cAAc,EACxB,iCAAiC,QAAQ,IAAI,SAAS,EAAE,EACxD;YACE,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE;SACvC,CACF,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,QAAQ;IAClD,YAAY,IAAY,EAAE,OAAe;QACvC,KAAK,CACH,SAAS,CAAC,kBAAkB,EAC5B,iBAAiB,IAAI,oBAAoB,OAAO,IAAI,EACpD;YACE,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;SAC3B,CACF,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,iBAAkB,SAAQ,QAAQ;IAC7C,YAAY,UAAkB,0BAA0B;QACtD,KAAK,CAAC,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;CACF"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Storage error classes
|
|
3
|
+
*/
|
|
4
|
+
import { ErrorCode } from "../types/index.js";
|
|
5
|
+
import { BaseError } from "./BaseError.js";
|
|
6
|
+
export declare class StorageError extends BaseError {
|
|
7
|
+
constructor(code: ErrorCode, message: string, options?: {
|
|
8
|
+
context?: Record<string, unknown>;
|
|
9
|
+
cause?: Error;
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
export declare class FileNotFoundError extends StorageError {
|
|
13
|
+
constructor(filePath: string, options?: {
|
|
14
|
+
context?: Record<string, unknown>;
|
|
15
|
+
cause?: Error;
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
export declare class FileReadError extends StorageError {
|
|
19
|
+
constructor(filePath: string, cause?: Error);
|
|
20
|
+
}
|
|
21
|
+
export declare class FileWriteError extends StorageError {
|
|
22
|
+
constructor(filePath: string, cause?: Error);
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=StorageError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StorageError.d.ts","sourceRoot":"","sources":["../../src/errors/StorageError.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,qBAAa,YAAa,SAAQ,SAAS;gBAEvC,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE;CAIjE;AAED,qBAAa,iBAAkB,SAAQ,YAAY;gBAE/C,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE;CAOjE;AAED,qBAAa,aAAc,SAAQ,YAAY;gBACjC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAM5C;AAED,qBAAa,cAAe,SAAQ,YAAY;gBAClC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAM5C"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Storage error classes
|
|
3
|
+
*/
|
|
4
|
+
import { ErrorCode } from "../types/index.js";
|
|
5
|
+
import { BaseError } from "./BaseError.js";
|
|
6
|
+
export class StorageError extends BaseError {
|
|
7
|
+
constructor(code, message, options) {
|
|
8
|
+
super(code, message, options);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export class FileNotFoundError extends StorageError {
|
|
12
|
+
constructor(filePath, options) {
|
|
13
|
+
super(ErrorCode.FILE_NOT_FOUND, `File not found: ${filePath}`, {
|
|
14
|
+
...options,
|
|
15
|
+
context: { ...options?.context, filePath },
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export class FileReadError extends StorageError {
|
|
20
|
+
constructor(filePath, cause) {
|
|
21
|
+
super(ErrorCode.FILE_READ_ERROR, `Failed to read file: ${filePath}`, {
|
|
22
|
+
context: { filePath },
|
|
23
|
+
cause,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export class FileWriteError extends StorageError {
|
|
28
|
+
constructor(filePath, cause) {
|
|
29
|
+
super(ErrorCode.FILE_WRITE_ERROR, `Failed to write file: ${filePath}`, {
|
|
30
|
+
context: { filePath },
|
|
31
|
+
cause,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=StorageError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StorageError.js","sourceRoot":"","sources":["../../src/errors/StorageError.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,OAAO,YAAa,SAAQ,SAAS;IACzC,YACE,IAAe,EACf,OAAe,EACf,OAA8D;QAE9D,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAChC,CAAC;CACF;AAED,MAAM,OAAO,iBAAkB,SAAQ,YAAY;IACjD,YACE,QAAgB,EAChB,OAA8D;QAE9D,KAAK,CAAC,SAAS,CAAC,cAAc,EAAE,mBAAmB,QAAQ,EAAE,EAAE;YAC7D,GAAG,OAAO;YACV,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE;SAC3C,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,OAAO,aAAc,SAAQ,YAAY;IAC7C,YAAY,QAAgB,EAAE,KAAa;QACzC,KAAK,CAAC,SAAS,CAAC,eAAe,EAAE,wBAAwB,QAAQ,EAAE,EAAE;YACnE,OAAO,EAAE,EAAE,QAAQ,EAAE;YACrB,KAAK;SACN,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,OAAO,cAAe,SAAQ,YAAY;IAC9C,YAAY,QAAgB,EAAE,KAAa;QACzC,KAAK,CAAC,SAAS,CAAC,gBAAgB,EAAE,yBAAyB,QAAQ,EAAE,EAAE;YACrE,OAAO,EAAE,EAAE,QAAQ,EAAE;YACrB,KAAK;SACN,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validation error classes
|
|
3
|
+
*/
|
|
4
|
+
import { BaseError } from "./BaseError.js";
|
|
5
|
+
export declare class ValidationError extends BaseError {
|
|
6
|
+
constructor(message: string, options?: {
|
|
7
|
+
context?: Record<string, unknown>;
|
|
8
|
+
cause?: Error;
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
export declare class InvalidServerConfigError extends ValidationError {
|
|
12
|
+
constructor(details: string, options?: {
|
|
13
|
+
context?: Record<string, unknown>;
|
|
14
|
+
cause?: Error;
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
export declare class InvalidCommandError extends ValidationError {
|
|
18
|
+
constructor(command: string, reason: string, options?: {
|
|
19
|
+
context?: Record<string, unknown>;
|
|
20
|
+
cause?: Error;
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
export declare class InvalidPathError extends ValidationError {
|
|
24
|
+
constructor(path: string, reason: string, options?: {
|
|
25
|
+
context?: Record<string, unknown>;
|
|
26
|
+
cause?: Error;
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=ValidationError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ValidationError.d.ts","sourceRoot":"","sources":["../../src/errors/ValidationError.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,qBAAa,eAAgB,SAAQ,SAAS;gBAE1C,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE;CAIjE;AAED,qBAAa,wBAAyB,SAAQ,eAAe;gBAEzD,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE;CAOjE;AAED,qBAAa,mBAAoB,SAAQ,eAAe;gBAEpD,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE;CAOjE;AAED,qBAAa,gBAAiB,SAAQ,eAAe;gBAEjD,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE;CAOjE"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validation error classes
|
|
3
|
+
*/
|
|
4
|
+
import { ErrorCode } from "../types/index.js";
|
|
5
|
+
import { BaseError } from "./BaseError.js";
|
|
6
|
+
export class ValidationError extends BaseError {
|
|
7
|
+
constructor(message, options) {
|
|
8
|
+
super(ErrorCode.INVALID_INPUT, message, options);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export class InvalidServerConfigError extends ValidationError {
|
|
12
|
+
constructor(details, options) {
|
|
13
|
+
super(`Invalid server configuration: ${details}`, {
|
|
14
|
+
...options,
|
|
15
|
+
context: { ...options?.context, details },
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export class InvalidCommandError extends ValidationError {
|
|
20
|
+
constructor(command, reason, options) {
|
|
21
|
+
super(`Invalid command: ${reason}`, {
|
|
22
|
+
...options,
|
|
23
|
+
context: { ...options?.context, command },
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export class InvalidPathError extends ValidationError {
|
|
28
|
+
constructor(path, reason, options) {
|
|
29
|
+
super(`Invalid path: ${reason}`, {
|
|
30
|
+
...options,
|
|
31
|
+
context: { ...options?.context, path },
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=ValidationError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ValidationError.js","sourceRoot":"","sources":["../../src/errors/ValidationError.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,OAAO,eAAgB,SAAQ,SAAS;IAC5C,YACE,OAAe,EACf,OAA8D;QAE9D,KAAK,CAAC,SAAS,CAAC,aAAa,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;CACF;AAED,MAAM,OAAO,wBAAyB,SAAQ,eAAe;IAC3D,YACE,OAAe,EACf,OAA8D;QAE9D,KAAK,CAAC,iCAAiC,OAAO,EAAE,EAAE;YAChD,GAAG,OAAO;YACV,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE;SAC1C,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,eAAe;IACtD,YACE,OAAe,EACf,MAAc,EACd,OAA8D;QAE9D,KAAK,CAAC,oBAAoB,MAAM,EAAE,EAAE;YAClC,GAAG,OAAO;YACV,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE;SAC1C,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,OAAO,gBAAiB,SAAQ,eAAe;IACnD,YACE,IAAY,EACZ,MAAc,EACd,OAA8D;QAE9D,KAAK,CAAC,iBAAiB,MAAM,EAAE,EAAE;YAC/B,GAAG,OAAO;YACV,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;SACvC,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error classes index - exports all errors
|
|
3
|
+
*/
|
|
4
|
+
export { BaseError } from "./BaseError.js";
|
|
5
|
+
export { InvalidCommandError, InvalidPathError, InvalidServerConfigError, ValidationError, } from "./ValidationError.js";
|
|
6
|
+
export { AuthError, InvalidCredentialsError, RateLimitedError, UnauthorizedError, } from "./AuthError.js";
|
|
7
|
+
export { CommandFailedError, ConnectionFailedError, ConnectionTimeoutError, DisconnectedError, SSHError, } from "./SSHError.js";
|
|
8
|
+
export { ConfigurationError, InvalidConfigError, MissingConfigError, } from "./ConfigurationError.js";
|
|
9
|
+
export { FileNotFoundError, FileReadError, FileWriteError, StorageError, } from "./StorageError.js";
|
|
10
|
+
export { ConnectionAcquireTimeoutError, PoolExhaustedError, } from "./PoolError.js";
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,wBAAwB,EACxB,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,SAAS,EACT,uBAAuB,EACvB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,QAAQ,GACT,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,YAAY,GACb,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,6BAA6B,EAC7B,kBAAkB,GACnB,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error classes index - exports all errors
|
|
3
|
+
*/
|
|
4
|
+
// Base error
|
|
5
|
+
export { BaseError } from "./BaseError.js";
|
|
6
|
+
// Validation errors
|
|
7
|
+
export { InvalidCommandError, InvalidPathError, InvalidServerConfigError, ValidationError, } from "./ValidationError.js";
|
|
8
|
+
// Auth errors
|
|
9
|
+
export { AuthError, InvalidCredentialsError, RateLimitedError, UnauthorizedError, } from "./AuthError.js";
|
|
10
|
+
// SSH errors
|
|
11
|
+
export { CommandFailedError, ConnectionFailedError, ConnectionTimeoutError, DisconnectedError, SSHError, } from "./SSHError.js";
|
|
12
|
+
// Configuration errors
|
|
13
|
+
export { ConfigurationError, InvalidConfigError, MissingConfigError, } from "./ConfigurationError.js";
|
|
14
|
+
// Storage errors
|
|
15
|
+
export { FileNotFoundError, FileReadError, FileWriteError, StorageError, } from "./StorageError.js";
|
|
16
|
+
// Pool errors
|
|
17
|
+
export { ConnectionAcquireTimeoutError, PoolExhaustedError, } from "./PoolError.js";
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,aAAa;AACb,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,oBAAoB;AACpB,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,wBAAwB,EACxB,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAE9B,cAAc;AACd,OAAO,EACL,SAAS,EACT,uBAAuB,EACvB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAExB,aAAa;AACb,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,QAAQ,GACT,MAAM,eAAe,CAAC;AAEvB,uBAAuB;AACvB,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AAEjC,iBAAiB;AACjB,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,cAAc;AACd,OAAO,EACL,6BAA6B,EAC7B,kBAAkB,GACnB,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base Command Handler
|
|
3
|
+
* Provides common functionality for all command handlers
|
|
4
|
+
*/
|
|
5
|
+
import { ServerManager } from "../core/ServerManager.js";
|
|
6
|
+
import { SSHClient } from "../core/SSHClient.js";
|
|
7
|
+
import { LoggingService } from "../services/LoggingService.js";
|
|
8
|
+
import type { CommandContext, IBot, ICommandHandler, Server } from "../types/index.js";
|
|
9
|
+
/**
|
|
10
|
+
* Base command handler with common functionality
|
|
11
|
+
*/
|
|
12
|
+
export declare abstract class BaseHandler implements ICommandHandler {
|
|
13
|
+
abstract readonly name: string;
|
|
14
|
+
abstract readonly description: string;
|
|
15
|
+
abstract readonly pattern: RegExp;
|
|
16
|
+
protected readonly serverManager: ServerManager;
|
|
17
|
+
protected readonly sshClient: SSHClient;
|
|
18
|
+
protected readonly bot: IBot;
|
|
19
|
+
protected readonly logger: LoggingService;
|
|
20
|
+
constructor(serverManager: ServerManager, sshClient: SSHClient, bot: IBot, logger: LoggingService);
|
|
21
|
+
/**
|
|
22
|
+
* Execute the command handler
|
|
23
|
+
*/
|
|
24
|
+
abstract execute(context: CommandContext): Promise<void>;
|
|
25
|
+
/**
|
|
26
|
+
* Send a message to the chat
|
|
27
|
+
*/
|
|
28
|
+
protected send(chatId: number, message: string): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* Send a markdown message to the chat
|
|
31
|
+
*/
|
|
32
|
+
protected sendMarkdown(chatId: number, message: string): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* Get current server or send error message
|
|
35
|
+
*/
|
|
36
|
+
protected getCurrentServerOrError(chatId: number): Server | null;
|
|
37
|
+
/**
|
|
38
|
+
* Check if SSH is connected or send error message
|
|
39
|
+
*/
|
|
40
|
+
protected checkConnectionOrError(chatId: number): boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Format server list for display
|
|
43
|
+
*/
|
|
44
|
+
protected formatServerList(servers: Server[]): string;
|
|
45
|
+
/**
|
|
46
|
+
* Format server info for display
|
|
47
|
+
*/
|
|
48
|
+
protected formatServerInfo(server: Server): string;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=BaseHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/BaseHandler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,KAAK,EACV,cAAc,EACd,IAAI,EACJ,eAAe,EACf,MAAM,EACP,MAAM,mBAAmB,CAAC;AAE3B;;GAEG;AACH,8BAAsB,WAAY,YAAW,eAAe;IAC1D,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAElC,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IAChD,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IACxC,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;IAC7B,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;gBAGxC,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,IAAI,EACT,MAAM,EAAE,cAAc;IAQxB;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAExD;;OAEG;cACa,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpE;;OAEG;cACa,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5E;;OAEG;IACH,SAAS,CAAC,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAYhE;;OAEG;IACH,SAAS,CAAC,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAWzD;;OAEG;IACH,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM;IAqBrD;;OAEG;IACH,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;CAenD"}
|