@pengzi/kms 1.0.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 (127) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +325 -0
  3. package/dist/client.d.ts +130 -0
  4. package/dist/client.d.ts.map +1 -0
  5. package/dist/client.js +266 -0
  6. package/dist/client.js.map +1 -0
  7. package/dist/config.d.ts +20 -0
  8. package/dist/config.d.ts.map +1 -0
  9. package/dist/config.js +54 -0
  10. package/dist/config.js.map +1 -0
  11. package/dist/core/asymmetric-crypto.d.ts +81 -0
  12. package/dist/core/asymmetric-crypto.d.ts.map +1 -0
  13. package/dist/core/asymmetric-crypto.js +171 -0
  14. package/dist/core/asymmetric-crypto.js.map +1 -0
  15. package/dist/core/crypto.d.ts +37 -0
  16. package/dist/core/crypto.d.ts.map +1 -0
  17. package/dist/core/crypto.js +100 -0
  18. package/dist/core/crypto.js.map +1 -0
  19. package/dist/core/crypto.service.d.ts +35 -0
  20. package/dist/core/crypto.service.d.ts.map +1 -0
  21. package/dist/core/crypto.service.js +67 -0
  22. package/dist/core/crypto.service.js.map +1 -0
  23. package/dist/core/key-derivation.d.ts +25 -0
  24. package/dist/core/key-derivation.d.ts.map +1 -0
  25. package/dist/core/key-derivation.js +96 -0
  26. package/dist/core/key-derivation.js.map +1 -0
  27. package/dist/index.d.ts +10 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +51 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/models/audit.model.d.ts +40 -0
  32. package/dist/models/audit.model.d.ts.map +1 -0
  33. package/dist/models/audit.model.js +83 -0
  34. package/dist/models/audit.model.js.map +1 -0
  35. package/dist/models/key.model.d.ts +40 -0
  36. package/dist/models/key.model.d.ts.map +1 -0
  37. package/dist/models/key.model.js +120 -0
  38. package/dist/models/key.model.js.map +1 -0
  39. package/dist/models/project.model.d.ts +20 -0
  40. package/dist/models/project.model.d.ts.map +1 -0
  41. package/dist/models/project.model.js +54 -0
  42. package/dist/models/project.model.js.map +1 -0
  43. package/dist/models/user.model.d.ts +48 -0
  44. package/dist/models/user.model.d.ts.map +1 -0
  45. package/dist/models/user.model.js +141 -0
  46. package/dist/models/user.model.js.map +1 -0
  47. package/dist/repositories/audit.repository.d.ts +37 -0
  48. package/dist/repositories/audit.repository.d.ts.map +1 -0
  49. package/dist/repositories/audit.repository.js +116 -0
  50. package/dist/repositories/audit.repository.js.map +1 -0
  51. package/dist/repositories/base.repository.d.ts +54 -0
  52. package/dist/repositories/base.repository.d.ts.map +1 -0
  53. package/dist/repositories/base.repository.js +97 -0
  54. package/dist/repositories/base.repository.js.map +1 -0
  55. package/dist/repositories/key.repository.d.ts +60 -0
  56. package/dist/repositories/key.repository.d.ts.map +1 -0
  57. package/dist/repositories/key.repository.js +126 -0
  58. package/dist/repositories/key.repository.js.map +1 -0
  59. package/dist/repositories/project.repository.d.ts +42 -0
  60. package/dist/repositories/project.repository.d.ts.map +1 -0
  61. package/dist/repositories/project.repository.js +82 -0
  62. package/dist/repositories/project.repository.js.map +1 -0
  63. package/dist/repositories/user.repository.d.ts +58 -0
  64. package/dist/repositories/user.repository.d.ts.map +1 -0
  65. package/dist/repositories/user.repository.js +102 -0
  66. package/dist/repositories/user.repository.js.map +1 -0
  67. package/dist/services/audit.service.d.ts +63 -0
  68. package/dist/services/audit.service.d.ts.map +1 -0
  69. package/dist/services/audit.service.js +113 -0
  70. package/dist/services/audit.service.js.map +1 -0
  71. package/dist/services/auth.service.d.ts +39 -0
  72. package/dist/services/auth.service.d.ts.map +1 -0
  73. package/dist/services/auth.service.js +179 -0
  74. package/dist/services/auth.service.js.map +1 -0
  75. package/dist/services/key.service.d.ts +47 -0
  76. package/dist/services/key.service.d.ts.map +1 -0
  77. package/dist/services/key.service.js +135 -0
  78. package/dist/services/key.service.js.map +1 -0
  79. package/dist/services/permission.service.d.ts +37 -0
  80. package/dist/services/permission.service.d.ts.map +1 -0
  81. package/dist/services/permission.service.js +140 -0
  82. package/dist/services/permission.service.js.map +1 -0
  83. package/dist/services/project.service.d.ts +37 -0
  84. package/dist/services/project.service.d.ts.map +1 -0
  85. package/dist/services/project.service.js +96 -0
  86. package/dist/services/project.service.js.map +1 -0
  87. package/dist/types/audit.types.d.ts +122 -0
  88. package/dist/types/audit.types.d.ts.map +1 -0
  89. package/dist/types/audit.types.js +55 -0
  90. package/dist/types/audit.types.js.map +1 -0
  91. package/dist/types/client.types.d.ts +47 -0
  92. package/dist/types/client.types.d.ts.map +1 -0
  93. package/dist/types/client.types.js +6 -0
  94. package/dist/types/client.types.js.map +1 -0
  95. package/dist/types/crypto.types.d.ts +48 -0
  96. package/dist/types/crypto.types.d.ts.map +1 -0
  97. package/dist/types/crypto.types.js +6 -0
  98. package/dist/types/crypto.types.js.map +1 -0
  99. package/dist/types/index.d.ts +86 -0
  100. package/dist/types/index.d.ts.map +1 -0
  101. package/dist/types/index.js +92 -0
  102. package/dist/types/index.js.map +1 -0
  103. package/dist/types/key.types.d.ts +125 -0
  104. package/dist/types/key.types.d.ts.map +1 -0
  105. package/dist/types/key.types.js +28 -0
  106. package/dist/types/key.types.js.map +1 -0
  107. package/dist/types/project.types.d.ts +57 -0
  108. package/dist/types/project.types.d.ts.map +1 -0
  109. package/dist/types/project.types.js +16 -0
  110. package/dist/types/project.types.js.map +1 -0
  111. package/dist/types/user.types.d.ts +110 -0
  112. package/dist/types/user.types.d.ts.map +1 -0
  113. package/dist/types/user.types.js +49 -0
  114. package/dist/types/user.types.js.map +1 -0
  115. package/dist/utils/config-loader.d.ts +64 -0
  116. package/dist/utils/config-loader.d.ts.map +1 -0
  117. package/dist/utils/config-loader.js +126 -0
  118. package/dist/utils/config-loader.js.map +1 -0
  119. package/dist/utils/constants.d.ts +62 -0
  120. package/dist/utils/constants.d.ts.map +1 -0
  121. package/dist/utils/constants.js +119 -0
  122. package/dist/utils/constants.js.map +1 -0
  123. package/dist/utils/error-handler.d.ts +48 -0
  124. package/dist/utils/error-handler.d.ts.map +1 -0
  125. package/dist/utils/error-handler.js +109 -0
  126. package/dist/utils/error-handler.js.map +1 -0
  127. package/package.json +53 -0
@@ -0,0 +1,86 @@
1
+ /**
2
+ * 类型定义统一导出
3
+ */
4
+ export * from './crypto.types';
5
+ export * from './project.types';
6
+ export * from './key.types';
7
+ export * from './user.types';
8
+ export * from './audit.types';
9
+ /**
10
+ * KMS客户端配置
11
+ */
12
+ export interface KMSClientOptions {
13
+ /** MongoDB连接字符串 */
14
+ connectionString: string;
15
+ /** 数据库名称 */
16
+ databaseName: string;
17
+ /** 连接选项 */
18
+ connectionOptions?: {
19
+ /** 连接超时(毫秒) */
20
+ connectTimeoutMS?: number;
21
+ /** Socket超时(毫秒) */
22
+ socketTimeoutMS?: number;
23
+ /** 服务器选择超时(毫秒) */
24
+ serverSelectionTimeoutMS?: number;
25
+ /** 最大连接池大小 */
26
+ maxPoolSize?: number;
27
+ /** 最小连接池大小 */
28
+ minPoolSize?: number;
29
+ };
30
+ }
31
+ /**
32
+ * 加密的 KMS 客户端配置选项
33
+ * 用于安全地存储数据库连接字符串
34
+ */
35
+ export interface EncryptedKMSClientOptions {
36
+ /** 加密的连接字符串(JSON 格式) */
37
+ encryptedConnectionString: string;
38
+ /** 数据库名称 */
39
+ databaseName: string;
40
+ /** 连接选项 */
41
+ connectionOptions?: {
42
+ /** 连接超时(毫秒) */
43
+ connectTimeoutMS?: number;
44
+ /** Socket超时(毫秒) */
45
+ socketTimeoutMS?: number;
46
+ /** 服务器选择超时(毫秒) */
47
+ serverSelectionTimeoutMS?: number;
48
+ /** 最大连接池大小 */
49
+ maxPoolSize?: number;
50
+ /** 最小连接池大小 */
51
+ minPoolSize?: number;
52
+ };
53
+ /** 私钥(PEM 格式),默认从 KMS_PRIVATE_KEY 环境变量读取 */
54
+ privateKey?: string;
55
+ /** 私钥密码(如果私钥有密码保护),默认从 KMS_PRIVATE_KEY_PASSPHRASE 环境变量读取 */
56
+ privateKeyPassphrase?: string;
57
+ }
58
+ /**
59
+ * 错误类型
60
+ */
61
+ export declare class KMSError extends Error {
62
+ code: string;
63
+ constructor(message: string, code: string);
64
+ }
65
+ export declare class ProjectNotFoundError extends KMSError {
66
+ constructor(projectId: string);
67
+ }
68
+ export declare class KeyNotFoundError extends KMSError {
69
+ constructor(keyId: string);
70
+ }
71
+ export declare class UserNotFoundError extends KMSError {
72
+ constructor(userId: string);
73
+ }
74
+ export declare class AuthenticationError extends KMSError {
75
+ constructor(message?: string);
76
+ }
77
+ export declare class ForbiddenError extends KMSError {
78
+ constructor(message?: string);
79
+ }
80
+ export declare class ValidationError extends KMSError {
81
+ constructor(message: string);
82
+ }
83
+ export declare class CryptoError extends KMSError {
84
+ constructor(message: string);
85
+ }
86
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,cAAc,gBAAgB,CAAC;AAG/B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,aAAa,CAAC;AAG5B,cAAc,cAAc,CAAC;AAG7B,cAAc,eAAe,CAAC;AAE9B;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,mBAAmB;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW;IACX,iBAAiB,CAAC,EAAE;QAClB,eAAe;QACf,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,mBAAmB;QACnB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,kBAAkB;QAClB,wBAAwB,CAAC,EAAE,MAAM,CAAC;QAClC,cAAc;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,cAAc;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,wBAAwB;IACxB,yBAAyB,EAAE,MAAM,CAAC;IAClC,YAAY;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW;IACX,iBAAiB,CAAC,EAAE;QAClB,eAAe;QACf,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,mBAAmB;QACnB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,kBAAkB;QAClB,wBAAwB,CAAC,EAAE,MAAM,CAAC;QAClC,cAAc;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,cAAc;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;GAEG;AACH,qBAAa,QAAS,SAAQ,KAAK;IACG,IAAI,EAAE,MAAM;gBAApC,OAAO,EAAE,MAAM,EAAS,IAAI,EAAE,MAAM;CAIjD;AAED,qBAAa,oBAAqB,SAAQ,QAAQ;gBACpC,SAAS,EAAE,MAAM;CAI9B;AAED,qBAAa,gBAAiB,SAAQ,QAAQ;gBAChC,KAAK,EAAE,MAAM;CAI1B;AAED,qBAAa,iBAAkB,SAAQ,QAAQ;gBACjC,MAAM,EAAE,MAAM;CAI3B;AAED,qBAAa,mBAAoB,SAAQ,QAAQ;gBACnC,OAAO,GAAE,MAAgC;CAItD;AAED,qBAAa,cAAe,SAAQ,QAAQ;gBAC9B,OAAO,GAAE,MAA4B;CAIlD;AAED,qBAAa,eAAgB,SAAQ,QAAQ;gBAC/B,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,WAAY,SAAQ,QAAQ;gBAC3B,OAAO,EAAE,MAAM;CAI5B"}
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ /**
3
+ * 类型定义统一导出
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
17
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.CryptoError = exports.ValidationError = exports.ForbiddenError = exports.AuthenticationError = exports.UserNotFoundError = exports.KeyNotFoundError = exports.ProjectNotFoundError = exports.KMSError = void 0;
21
+ // 加密相关
22
+ __exportStar(require("./crypto.types"), exports);
23
+ // 项目相关
24
+ __exportStar(require("./project.types"), exports);
25
+ // 密钥相关
26
+ __exportStar(require("./key.types"), exports);
27
+ // 用户相关
28
+ __exportStar(require("./user.types"), exports);
29
+ // 审计日志相关
30
+ __exportStar(require("./audit.types"), exports);
31
+ /**
32
+ * 错误类型
33
+ */
34
+ class KMSError extends Error {
35
+ code;
36
+ constructor(message, code) {
37
+ super(message);
38
+ this.code = code;
39
+ this.name = 'KMSError';
40
+ }
41
+ }
42
+ exports.KMSError = KMSError;
43
+ class ProjectNotFoundError extends KMSError {
44
+ constructor(projectId) {
45
+ super(`Project not found: ${projectId}`, 'PROJECT_NOT_FOUND');
46
+ this.name = 'ProjectNotFoundError';
47
+ }
48
+ }
49
+ exports.ProjectNotFoundError = ProjectNotFoundError;
50
+ class KeyNotFoundError extends KMSError {
51
+ constructor(keyId) {
52
+ super(`Key not found: ${keyId}`, 'KEY_NOT_FOUND');
53
+ this.name = 'KeyNotFoundError';
54
+ }
55
+ }
56
+ exports.KeyNotFoundError = KeyNotFoundError;
57
+ class UserNotFoundError extends KMSError {
58
+ constructor(userId) {
59
+ super(`User not found: ${userId}`, 'USER_NOT_FOUND');
60
+ this.name = 'UserNotFoundError';
61
+ }
62
+ }
63
+ exports.UserNotFoundError = UserNotFoundError;
64
+ class AuthenticationError extends KMSError {
65
+ constructor(message = 'Authentication failed') {
66
+ super(message, 'AUTHENTICATION_FAILED');
67
+ this.name = 'AuthenticationError';
68
+ }
69
+ }
70
+ exports.AuthenticationError = AuthenticationError;
71
+ class ForbiddenError extends KMSError {
72
+ constructor(message = 'Permission denied') {
73
+ super(message, 'PERMISSION_DENIED');
74
+ this.name = 'ForbiddenError';
75
+ }
76
+ }
77
+ exports.ForbiddenError = ForbiddenError;
78
+ class ValidationError extends KMSError {
79
+ constructor(message) {
80
+ super(message, 'VALIDATION_ERROR');
81
+ this.name = 'ValidationError';
82
+ }
83
+ }
84
+ exports.ValidationError = ValidationError;
85
+ class CryptoError extends KMSError {
86
+ constructor(message) {
87
+ super(message, 'CRYPTO_ERROR');
88
+ this.name = 'CryptoError';
89
+ }
90
+ }
91
+ exports.CryptoError = CryptoError;
92
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;AAEH,OAAO;AACP,iDAA+B;AAE/B,OAAO;AACP,kDAAgC;AAEhC,OAAO;AACP,8CAA4B;AAE5B,OAAO;AACP,+CAA6B;AAE7B,SAAS;AACT,gDAA8B;AAqD9B;;GAEG;AACH,MAAa,QAAS,SAAQ,KAAK;IACG;IAApC,YAAY,OAAe,EAAS,IAAY;QAC9C,KAAK,CAAC,OAAO,CAAC,CAAC;QADmB,SAAI,GAAJ,IAAI,CAAQ;QAE9C,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;CACF;AALD,4BAKC;AAED,MAAa,oBAAqB,SAAQ,QAAQ;IAChD,YAAY,SAAiB;QAC3B,KAAK,CAAC,sBAAsB,SAAS,EAAE,EAAE,mBAAmB,CAAC,CAAC;QAC9D,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AALD,oDAKC;AAED,MAAa,gBAAiB,SAAQ,QAAQ;IAC5C,YAAY,KAAa;QACvB,KAAK,CAAC,kBAAkB,KAAK,EAAE,EAAE,eAAe,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AALD,4CAKC;AAED,MAAa,iBAAkB,SAAQ,QAAQ;IAC7C,YAAY,MAAc;QACxB,KAAK,CAAC,mBAAmB,MAAM,EAAE,EAAE,gBAAgB,CAAC,CAAC;QACrD,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AALD,8CAKC;AAED,MAAa,mBAAoB,SAAQ,QAAQ;IAC/C,YAAY,UAAkB,uBAAuB;QACnD,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AALD,kDAKC;AAED,MAAa,cAAe,SAAQ,QAAQ;IAC1C,YAAY,UAAkB,mBAAmB;QAC/C,KAAK,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AALD,wCAKC;AAED,MAAa,eAAgB,SAAQ,QAAQ;IAC3C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AALD,0CAKC;AAED,MAAa,WAAY,SAAQ,QAAQ;IACvC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AALD,kCAKC"}
@@ -0,0 +1,125 @@
1
+ /**
2
+ * 密钥相关类型定义
3
+ */
4
+ /**
5
+ * 密钥类型
6
+ */
7
+ export declare enum KeyType {
8
+ MONGODB = "mongodb",
9
+ MYSQL = "mysql",
10
+ POSTGRESQL = "postgresql",
11
+ REDIS = "redis",
12
+ CUSTOM = "custom"
13
+ }
14
+ /**
15
+ * 密钥状态
16
+ */
17
+ export declare enum KeyStatus {
18
+ ACTIVE = "active",
19
+ DISABLED = "disabled",
20
+ EXPIRED = "expired",
21
+ DELETED = "deleted"
22
+ }
23
+ /**
24
+ * 密钥数据结构(不含明文值)
25
+ */
26
+ export interface Key {
27
+ /** MongoDB ObjectId */
28
+ _id?: string;
29
+ /** 密钥唯一标识符 */
30
+ keyId: string;
31
+ /** 关联项目ID */
32
+ projectId: string;
33
+ /** 密钥名称 */
34
+ keyName: string;
35
+ /** 密钥类型 */
36
+ keyType: KeyType;
37
+ /** 加密后的密钥值 */
38
+ encryptedValue: string;
39
+ /** 初始化向量 */
40
+ iv: string;
41
+ /** 认证标签 */
42
+ authTag: string;
43
+ /** 密钥版本号 */
44
+ version: number;
45
+ /** 标签 */
46
+ tags: string[];
47
+ /** 描述 */
48
+ description?: string;
49
+ /** 创建者 */
50
+ createdBy: string;
51
+ /** 创建时间 */
52
+ createdAt: Date;
53
+ /** 更新时间 */
54
+ updatedAt: Date;
55
+ /** 最后访问时间 */
56
+ lastAccessedAt?: Date;
57
+ /** 最后轮换时间 */
58
+ lastRotatedAt?: Date;
59
+ /** 过期时间 */
60
+ expiresAt?: Date;
61
+ /** 密钥状态 */
62
+ status: KeyStatus;
63
+ }
64
+ /**
65
+ * 密钥值(包含解密后的明文)
66
+ */
67
+ export interface KeyValue extends Omit<Key, 'encryptedValue' | 'iv' | 'authTag'> {
68
+ /** 解密后的明文值 */
69
+ value: string;
70
+ }
71
+ /**
72
+ * 创建密钥数据
73
+ */
74
+ export interface CreateKeyData {
75
+ /** 密钥名称 */
76
+ keyName: string;
77
+ /** 密钥类型 */
78
+ keyType: KeyType;
79
+ /** 明文密钥值 */
80
+ value: string;
81
+ /** 标签 */
82
+ tags?: string[];
83
+ /** 描述 */
84
+ description?: string;
85
+ /** 过期时间 */
86
+ expiresAt?: Date;
87
+ }
88
+ /**
89
+ * 更新密钥数据
90
+ */
91
+ export interface UpdateKeyData {
92
+ /** 新的密钥值 */
93
+ value?: string;
94
+ /** 标签 */
95
+ tags?: string[];
96
+ /** 描述 */
97
+ description?: string;
98
+ /** 过期时间 */
99
+ expiresAt?: Date;
100
+ /** 状态 */
101
+ status?: KeyStatus;
102
+ }
103
+ /**
104
+ * 密钥查询过滤器
105
+ */
106
+ export interface KeyFilters {
107
+ /** 密钥类型 */
108
+ keyType?: KeyType;
109
+ /** 标签过滤(包含任一标签) */
110
+ tags?: string[];
111
+ /** 密钥状态 */
112
+ status?: KeyStatus;
113
+ /** 搜索密钥名称(模糊匹配) */
114
+ search?: string;
115
+ }
116
+ /**
117
+ * 密钥轮换结果
118
+ */
119
+ export interface KeyRotationResult {
120
+ /** 旧版本密钥 */
121
+ oldKey: Key;
122
+ /** 新版本密钥 */
123
+ newKey: Key;
124
+ }
125
+ //# sourceMappingURL=key.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"key.types.d.ts","sourceRoot":"","sources":["../../src/types/key.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,oBAAY,OAAO;IACjB,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,UAAU,eAAe;IACzB,KAAK,UAAU;IACf,MAAM,WAAW;CAClB;AAED;;GAEG;AACH,oBAAY,SAAS;IACnB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,GAAG;IAClB,uBAAuB;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,cAAc;IACd,KAAK,EAAE,MAAM,CAAC;IACd,aAAa;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,WAAW;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS;IACT,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,SAAS;IACT,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU;IACV,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW;IACX,SAAS,EAAE,IAAI,CAAC;IAChB,WAAW;IACX,SAAS,EAAE,IAAI,CAAC;IAChB,aAAa;IACb,cAAc,CAAC,EAAE,IAAI,CAAC;IACtB,aAAa;IACb,aAAa,CAAC,EAAE,IAAI,CAAC;IACrB,WAAW;IACX,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,WAAW;IACX,MAAM,EAAE,SAAS,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,QAAS,SAAQ,IAAI,CAAC,GAAG,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,CAAC;IAC9E,cAAc;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,WAAW;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,SAAS;IACT,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS;IACT,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW;IACX,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,YAAY;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS;IACT,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS;IACT,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW;IACX,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,SAAS;IACT,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,WAAW;IACX,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mBAAmB;IACnB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW;IACX,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,mBAAmB;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,YAAY;IACZ,MAAM,EAAE,GAAG,CAAC;IACZ,YAAY;IACZ,MAAM,EAAE,GAAG,CAAC;CACb"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ /**
3
+ * 密钥相关类型定义
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.KeyStatus = exports.KeyType = void 0;
7
+ /**
8
+ * 密钥类型
9
+ */
10
+ var KeyType;
11
+ (function (KeyType) {
12
+ KeyType["MONGODB"] = "mongodb";
13
+ KeyType["MYSQL"] = "mysql";
14
+ KeyType["POSTGRESQL"] = "postgresql";
15
+ KeyType["REDIS"] = "redis";
16
+ KeyType["CUSTOM"] = "custom";
17
+ })(KeyType || (exports.KeyType = KeyType = {}));
18
+ /**
19
+ * 密钥状态
20
+ */
21
+ var KeyStatus;
22
+ (function (KeyStatus) {
23
+ KeyStatus["ACTIVE"] = "active";
24
+ KeyStatus["DISABLED"] = "disabled";
25
+ KeyStatus["EXPIRED"] = "expired";
26
+ KeyStatus["DELETED"] = "deleted";
27
+ })(KeyStatus || (exports.KeyStatus = KeyStatus = {}));
28
+ //# sourceMappingURL=key.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"key.types.js","sourceRoot":"","sources":["../../src/types/key.types.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH;;GAEG;AACH,IAAY,OAMX;AAND,WAAY,OAAO;IACjB,8BAAmB,CAAA;IACnB,0BAAe,CAAA;IACf,oCAAyB,CAAA;IACzB,0BAAe,CAAA;IACf,4BAAiB,CAAA;AACnB,CAAC,EANW,OAAO,uBAAP,OAAO,QAMlB;AAED;;GAEG;AACH,IAAY,SAKX;AALD,WAAY,SAAS;IACnB,8BAAiB,CAAA;IACjB,kCAAqB,CAAA;IACrB,gCAAmB,CAAA;IACnB,gCAAmB,CAAA;AACrB,CAAC,EALW,SAAS,yBAAT,SAAS,QAKpB"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * 项目相关类型定义
3
+ */
4
+ /**
5
+ * 项目状态
6
+ */
7
+ export declare enum ProjectStatus {
8
+ ACTIVE = "active",
9
+ SUSPENDED = "suspended",
10
+ DELETED = "deleted"
11
+ }
12
+ /**
13
+ * 项目数据结构
14
+ */
15
+ export interface Project {
16
+ /** MongoDB ObjectId */
17
+ _id?: string;
18
+ /** 项目唯一标识符 */
19
+ projectId: string;
20
+ /** 项目名称 */
21
+ projectName: string;
22
+ /** 主密钥哈希(用于验证) */
23
+ masterKeyHash: string;
24
+ /** 加密后的主密钥 */
25
+ masterKeyEncrypted: string;
26
+ /** 盐值 */
27
+ salt: string;
28
+ /** 创建时间 */
29
+ createdAt: Date;
30
+ /** 更新时间 */
31
+ updatedAt: Date;
32
+ /** 项目状态 */
33
+ status: ProjectStatus;
34
+ /** 元数据 */
35
+ metadata?: Record<string, any>;
36
+ }
37
+ /**
38
+ * 创建项目选项
39
+ */
40
+ export interface CreateProjectOptions {
41
+ /** 项目名称 */
42
+ projectName: string;
43
+ /** 主密码(用于派生主密钥) */
44
+ masterPassword: string;
45
+ /** 元数据 */
46
+ metadata?: Record<string, any>;
47
+ }
48
+ /**
49
+ * 项目查询过滤器
50
+ */
51
+ export interface ProjectFilter {
52
+ /** 项目状态 */
53
+ status?: ProjectStatus;
54
+ /** 项目名称(模糊搜索) */
55
+ projectName?: string;
56
+ }
57
+ //# sourceMappingURL=project.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.types.d.ts","sourceRoot":"","sources":["../../src/types/project.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,oBAAY,aAAa;IACvB,MAAM,WAAW;IACjB,SAAS,cAAc;IACvB,OAAO,YAAY;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,uBAAuB;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,cAAc;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc;IACd,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS;IACT,IAAI,EAAE,MAAM,CAAC;IACb,WAAW;IACX,SAAS,EAAE,IAAI,CAAC;IAChB,WAAW;IACX,SAAS,EAAE,IAAI,CAAC;IAChB,WAAW;IACX,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU;IACV,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,WAAW;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU;IACV,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,WAAW;IACX,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,iBAAiB;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ /**
3
+ * 项目相关类型定义
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ProjectStatus = void 0;
7
+ /**
8
+ * 项目状态
9
+ */
10
+ var ProjectStatus;
11
+ (function (ProjectStatus) {
12
+ ProjectStatus["ACTIVE"] = "active";
13
+ ProjectStatus["SUSPENDED"] = "suspended";
14
+ ProjectStatus["DELETED"] = "deleted";
15
+ })(ProjectStatus || (exports.ProjectStatus = ProjectStatus = {}));
16
+ //# sourceMappingURL=project.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.types.js","sourceRoot":"","sources":["../../src/types/project.types.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH;;GAEG;AACH,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,kCAAiB,CAAA;IACjB,wCAAuB,CAAA;IACvB,oCAAmB,CAAA;AACrB,CAAC,EAJW,aAAa,6BAAb,aAAa,QAIxB"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * 用户相关类型定义
3
+ */
4
+ /**
5
+ * 用户角色
6
+ */
7
+ export declare enum Role {
8
+ ADMIN = "admin",
9
+ OPERATOR = "operator",
10
+ DEVELOPER = "developer",
11
+ READONLY = "readonly",
12
+ AUDITOR = "auditor"
13
+ }
14
+ /**
15
+ * 用户权限
16
+ */
17
+ export declare enum Permission {
18
+ PROJECT_CREATE = "project:create",
19
+ PROJECT_UPDATE = "project:update",
20
+ PROJECT_DELETE = "project:delete",
21
+ KEY_CREATE = "key:create",
22
+ KEY_READ = "key:read",
23
+ KEY_UPDATE = "key:update",
24
+ KEY_DELETE = "key:delete",
25
+ KEY_LIST = "key:list",
26
+ USER_CREATE = "user:create",
27
+ USER_UPDATE = "user:update",
28
+ USER_DELETE = "user:delete",
29
+ AUDIT_READ = "audit:read"
30
+ }
31
+ /**
32
+ * 用户状态
33
+ */
34
+ export declare enum UserStatus {
35
+ ACTIVE = "active",
36
+ INACTIVE = "inactive",
37
+ LOCKED = "locked"
38
+ }
39
+ /**
40
+ * 用户数据结构
41
+ */
42
+ export interface User {
43
+ /** MongoDB ObjectId */
44
+ _id?: string;
45
+ /** 用户唯一标识符 */
46
+ userId: string;
47
+ /** 关联项目ID */
48
+ projectId: string;
49
+ /** 用户名 */
50
+ username: string;
51
+ /** 密码哈希 */
52
+ passwordHash: string;
53
+ /** 角色列表 */
54
+ roles: Role[];
55
+ /** 直接权限列表 */
56
+ permissions: Permission[];
57
+ /** API密钥哈希 */
58
+ apiKeyHash?: string;
59
+ /** 创建时间 */
60
+ createdAt: Date;
61
+ /** 更新时间 */
62
+ updatedAt: Date;
63
+ /** 最后登录时间 */
64
+ lastLoginAt?: Date;
65
+ /** 用户状态 */
66
+ status: UserStatus;
67
+ }
68
+ /**
69
+ * 创建用户数据
70
+ */
71
+ export interface CreateUserData {
72
+ /** 用户名 */
73
+ username: string;
74
+ /** 密码 */
75
+ password: string;
76
+ /** 角色 */
77
+ roles?: Role[];
78
+ /** 直接权限 */
79
+ permissions?: Permission[];
80
+ }
81
+ /**
82
+ * 用户认证信息
83
+ */
84
+ export interface AuthCredentials {
85
+ /** 用户名 */
86
+ username: string;
87
+ /** 密码 */
88
+ password: string;
89
+ }
90
+ /**
91
+ * 认证结果
92
+ */
93
+ export interface AuthResult {
94
+ /** 是否成功 */
95
+ success: boolean;
96
+ /** 用户信息 */
97
+ user?: User;
98
+ /** 错误信息 */
99
+ error?: string;
100
+ }
101
+ /**
102
+ * API密钥信息
103
+ */
104
+ export interface ApiKeyInfo {
105
+ /** API密钥(明文,仅创建时返回一次) */
106
+ apiKey: string;
107
+ /** API密钥哈希(存储) */
108
+ apiKeyHash: string;
109
+ }
110
+ //# sourceMappingURL=user.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.types.d.ts","sourceRoot":"","sources":["../../src/types/user.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,oBAAY,IAAI;IACd,KAAK,UAAU;IACf,QAAQ,aAAa;IACrB,SAAS,cAAc;IACvB,QAAQ,aAAa;IACrB,OAAO,YAAY;CACpB;AAED;;GAEG;AACH,oBAAY,UAAU;IAEpB,cAAc,mBAAmB;IACjC,cAAc,mBAAmB;IACjC,cAAc,mBAAmB;IAGjC,UAAU,eAAe;IACzB,QAAQ,aAAa;IACrB,UAAU,eAAe;IACzB,UAAU,eAAe;IACzB,QAAQ,aAAa;IAGrB,WAAW,gBAAgB;IAC3B,WAAW,gBAAgB;IAC3B,WAAW,gBAAgB;IAG3B,UAAU,eAAe;CAC1B;AAED;;GAEG;AACH,oBAAY,UAAU;IACpB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,MAAM,WAAW;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,uBAAuB;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,cAAc;IACd,MAAM,EAAE,MAAM,CAAC;IACf,aAAa;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU;IACV,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW;IACX,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,aAAa;IACb,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,cAAc;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW;IACX,SAAS,EAAE,IAAI,CAAC;IAChB,WAAW;IACX,SAAS,EAAE,IAAI,CAAC;IAChB,aAAa;IACb,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,WAAW;IACX,MAAM,EAAE,UAAU,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,UAAU;IACV,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS;IACT,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS;IACT,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,WAAW;IACX,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,UAAU;IACV,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS;IACT,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,WAAW;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW;IACX,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,WAAW;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,yBAAyB;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ /**
3
+ * 用户相关类型定义
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.UserStatus = exports.Permission = exports.Role = void 0;
7
+ /**
8
+ * 用户角色
9
+ */
10
+ var Role;
11
+ (function (Role) {
12
+ Role["ADMIN"] = "admin";
13
+ Role["OPERATOR"] = "operator";
14
+ Role["DEVELOPER"] = "developer";
15
+ Role["READONLY"] = "readonly";
16
+ Role["AUDITOR"] = "auditor";
17
+ })(Role || (exports.Role = Role = {}));
18
+ /**
19
+ * 用户权限
20
+ */
21
+ var Permission;
22
+ (function (Permission) {
23
+ // 项目管理
24
+ Permission["PROJECT_CREATE"] = "project:create";
25
+ Permission["PROJECT_UPDATE"] = "project:update";
26
+ Permission["PROJECT_DELETE"] = "project:delete";
27
+ // 密钥管理
28
+ Permission["KEY_CREATE"] = "key:create";
29
+ Permission["KEY_READ"] = "key:read";
30
+ Permission["KEY_UPDATE"] = "key:update";
31
+ Permission["KEY_DELETE"] = "key:delete";
32
+ Permission["KEY_LIST"] = "key:list";
33
+ // 用户管理
34
+ Permission["USER_CREATE"] = "user:create";
35
+ Permission["USER_UPDATE"] = "user:update";
36
+ Permission["USER_DELETE"] = "user:delete";
37
+ // 审计
38
+ Permission["AUDIT_READ"] = "audit:read";
39
+ })(Permission || (exports.Permission = Permission = {}));
40
+ /**
41
+ * 用户状态
42
+ */
43
+ var UserStatus;
44
+ (function (UserStatus) {
45
+ UserStatus["ACTIVE"] = "active";
46
+ UserStatus["INACTIVE"] = "inactive";
47
+ UserStatus["LOCKED"] = "locked";
48
+ })(UserStatus || (exports.UserStatus = UserStatus = {}));
49
+ //# sourceMappingURL=user.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.types.js","sourceRoot":"","sources":["../../src/types/user.types.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH;;GAEG;AACH,IAAY,IAMX;AAND,WAAY,IAAI;IACd,uBAAe,CAAA;IACf,6BAAqB,CAAA;IACrB,+BAAuB,CAAA;IACvB,6BAAqB,CAAA;IACrB,2BAAmB,CAAA;AACrB,CAAC,EANW,IAAI,oBAAJ,IAAI,QAMf;AAED;;GAEG;AACH,IAAY,UAoBX;AApBD,WAAY,UAAU;IACpB,OAAO;IACP,+CAAiC,CAAA;IACjC,+CAAiC,CAAA;IACjC,+CAAiC,CAAA;IAEjC,OAAO;IACP,uCAAyB,CAAA;IACzB,mCAAqB,CAAA;IACrB,uCAAyB,CAAA;IACzB,uCAAyB,CAAA;IACzB,mCAAqB,CAAA;IAErB,OAAO;IACP,yCAA2B,CAAA;IAC3B,yCAA2B,CAAA;IAC3B,yCAA2B,CAAA;IAE3B,KAAK;IACL,uCAAyB,CAAA;AAC3B,CAAC,EApBW,UAAU,0BAAV,UAAU,QAoBrB;AAED;;GAEG;AACH,IAAY,UAIX;AAJD,WAAY,UAAU;IACpB,+BAAiB,CAAA;IACjB,mCAAqB,CAAA;IACrB,+BAAiB,CAAA;AACnB,CAAC,EAJW,UAAU,0BAAV,UAAU,QAIrB"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * 配置加载工具
3
+ * 用于从加密配置文件中加载连接字符串
4
+ */
5
+ /**
6
+ * 加密的数据库配置
7
+ */
8
+ export interface EncryptedDatabaseConfig {
9
+ encryptedConnectionString: string;
10
+ algorithm?: string;
11
+ keyId?: string;
12
+ createdAt?: string;
13
+ databaseName?: string;
14
+ connectionOptions?: {
15
+ connectTimeoutMS?: number;
16
+ socketTimeoutMS?: number;
17
+ serverSelectionTimeoutMS?: number;
18
+ maxPoolSize?: number;
19
+ minPoolSize?: number;
20
+ };
21
+ }
22
+ /**
23
+ * KMS 客户端配置
24
+ */
25
+ export interface KMSClientConfig {
26
+ connectionString: string;
27
+ databaseName: string;
28
+ connectionOptions?: {
29
+ connectTimeoutMS?: number;
30
+ socketTimeoutMS?: number;
31
+ serverSelectionTimeoutMS?: number;
32
+ maxPoolSize?: number;
33
+ minPoolSize?: number;
34
+ };
35
+ }
36
+ /**
37
+ * 从加密配置文件加载配置
38
+ * @param configPath 配置文件路径
39
+ * @param privateKeyPem 私钥(可选,默认从环境变量读取)
40
+ * @param passphrase 私钥密码(可选,默认从环境变量读取)
41
+ * @returns KMS 客户端配置
42
+ */
43
+ export declare function loadEncryptedConfig(configPath: string, privateKeyPem?: string, passphrase?: string): KMSClientConfig;
44
+ /**
45
+ * 从环境变量和文件加载配置
46
+ * 优先级:加密配置文件 > 环境变量
47
+ * @returns KMS 客户端配置
48
+ */
49
+ export declare function loadConfigFromEnvironment(): KMSClientConfig;
50
+ /**
51
+ * 创建 KMS 客户端(从加密配置)
52
+ * @param configPath 配置文件路径
53
+ * @param privateKeyPem 私钥(可选)
54
+ * @param passphrase 私钥密码(可选)
55
+ * @returns KMS 客户端选项
56
+ */
57
+ export declare function createClientFromEncryptedConfig(configPath: string, privateKeyPem?: string, passphrase?: string): KMSClientConfig;
58
+ /**
59
+ * 读取私钥文件
60
+ * @param filePath 私钥文件路径
61
+ * @returns 私钥内容
62
+ */
63
+ export declare function readPrivateKeyFile(filePath: string): string;
64
+ //# sourceMappingURL=config-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../src/utils/config-loader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,yBAAyB,EAAE,MAAM,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE;QAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,wBAAwB,CAAC,EAAE,MAAM,CAAC;QAClC,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE;QAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,wBAAwB,CAAC,EAAE,MAAM,CAAC;QAClC,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,MAAM,EACtB,UAAU,CAAC,EAAE,MAAM,GAClB,eAAe,CA2BjB;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,IAAI,eAAe,CA4B3D;AAED;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAC7C,UAAU,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,MAAM,EACtB,UAAU,CAAC,EAAE,MAAM,GAClB,eAAe,CAEjB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAM3D"}