@pengzi/kms 1.2.0 → 1.3.1
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/README.md +794 -20
- package/dist/client.d.ts +25 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +61 -3
- package/dist/client.js.map +1 -1
- package/dist/services/audit.service.d.ts +4 -0
- package/dist/services/audit.service.d.ts.map +1 -1
- package/dist/services/audit.service.js +16 -0
- package/dist/services/audit.service.js.map +1 -1
- package/dist/services/key.service.d.ts +14 -1
- package/dist/services/key.service.d.ts.map +1 -1
- package/dist/services/key.service.js +72 -13
- package/dist/services/key.service.js.map +1 -1
- package/dist/services/project.service.d.ts +14 -1
- package/dist/services/project.service.d.ts.map +1 -1
- package/dist/services/project.service.js +50 -0
- package/dist/services/project.service.js.map +1 -1
- package/dist/src/client.js +61 -3
- package/dist/src/services/audit.service.js +16 -0
- package/dist/src/services/key.service.js +72 -13
- package/dist/src/services/project.service.js +50 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/package.json +1 -1
package/dist/src/client.js
CHANGED
|
@@ -26,6 +26,8 @@ class KMSClient {
|
|
|
26
26
|
this.options = options;
|
|
27
27
|
this.connected = false;
|
|
28
28
|
this.currentUserId = null;
|
|
29
|
+
this.defaultProjectId = null;
|
|
30
|
+
this.defaultMasterPassword = null;
|
|
29
31
|
const connectionString = this.resolveConnectionString(options);
|
|
30
32
|
// 构建 MongoClient 配置
|
|
31
33
|
const clientOptions = {
|
|
@@ -82,6 +84,8 @@ class KMSClient {
|
|
|
82
84
|
this.initializeServices();
|
|
83
85
|
// 创建索引
|
|
84
86
|
await this.initializeIndexes();
|
|
87
|
+
// 如果配置了默认项目和主密码,自动初始化
|
|
88
|
+
await this.initDefaultProject();
|
|
85
89
|
}
|
|
86
90
|
catch (error) {
|
|
87
91
|
throw (0, error_handler_1.createKMSError)(error_handler_1.ErrorCode.CONNECTION_FAILED, error instanceof Error ? error.message : 'Failed to connect to database');
|
|
@@ -119,6 +123,29 @@ class KMSClient {
|
|
|
119
123
|
async initializeIndexes() {
|
|
120
124
|
// 索引在Repository的构造函数中自动创建
|
|
121
125
|
}
|
|
126
|
+
/**
|
|
127
|
+
* 初始化默认项目(简化 API 使用)
|
|
128
|
+
*/
|
|
129
|
+
async initDefaultProject() {
|
|
130
|
+
const opts = this.options;
|
|
131
|
+
const projectName = opts.defaultProjectName;
|
|
132
|
+
const masterPassword = opts.masterPassword;
|
|
133
|
+
if (projectName && masterPassword) {
|
|
134
|
+
const { project } = await this.projectService.getOrCreateProject(projectName, masterPassword);
|
|
135
|
+
this.defaultProjectId = project.projectId;
|
|
136
|
+
this.defaultMasterPassword = masterPassword;
|
|
137
|
+
this.currentUserId = '__sdk_auto__';
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* 确保默认项目已初始化(简化 API 使用)
|
|
142
|
+
*/
|
|
143
|
+
ensureDefaultProject() {
|
|
144
|
+
if (!this.defaultProjectId || !this.defaultMasterPassword) {
|
|
145
|
+
throw (0, error_handler_1.createKMSError)(error_handler_1.ErrorCode.VALIDATION_ERROR, 'defaultProjectName and masterPassword must be set in KMSClient options to use simplified API');
|
|
146
|
+
}
|
|
147
|
+
return { projectId: this.defaultProjectId, masterPassword: this.defaultMasterPassword };
|
|
148
|
+
}
|
|
122
149
|
/**
|
|
123
150
|
* 设置当前用户(用于权限验证)
|
|
124
151
|
*/
|
|
@@ -176,11 +203,20 @@ class KMSClient {
|
|
|
176
203
|
}
|
|
177
204
|
/**
|
|
178
205
|
* 获取密钥(解密)
|
|
206
|
+
* 支持两种调用方式:
|
|
207
|
+
* 1. 简化版: getKey(keyName) - 需要配置 defaultProjectName + masterPassword
|
|
208
|
+
* 2. 完整版: getKey(projectId, masterPassword, keyId) - 需要 setCurrentUser
|
|
179
209
|
*/
|
|
180
|
-
async getKey(
|
|
210
|
+
async getKey(arg1, arg2, arg3) {
|
|
181
211
|
await this.ensureConnected();
|
|
182
|
-
|
|
183
|
-
|
|
212
|
+
// 完整版: getKey(projectId, masterPassword, keyId)
|
|
213
|
+
if (arg2 !== undefined && arg3 !== undefined) {
|
|
214
|
+
const userId = this.getCurrentUserId();
|
|
215
|
+
return await this.keyService.getKey(arg1, userId, arg2, arg3);
|
|
216
|
+
}
|
|
217
|
+
// 简化版: getKey(keyName)
|
|
218
|
+
const { projectId, masterPassword } = this.ensureDefaultProject();
|
|
219
|
+
return await this.keyService.getKeyByName(projectId, '__sdk_auto__', masterPassword, arg1).then((kv) => kv.value);
|
|
184
220
|
}
|
|
185
221
|
/**
|
|
186
222
|
* 列出密钥
|
|
@@ -206,6 +242,28 @@ class KMSClient {
|
|
|
206
242
|
const userId = this.getCurrentUserId();
|
|
207
243
|
await this.keyService.deleteKey(projectId, userId, keyId);
|
|
208
244
|
}
|
|
245
|
+
// ============ 简化 API(一行代码使用) ============
|
|
246
|
+
/**
|
|
247
|
+
* 设置密钥(极简 API)
|
|
248
|
+
* 用法: await kms.setKey('api-key', 'secret123')
|
|
249
|
+
* 需要 KMSClient 配置 defaultProjectName + masterPassword
|
|
250
|
+
*/
|
|
251
|
+
async setKey(keyName, value) {
|
|
252
|
+
await this.ensureConnected();
|
|
253
|
+
const { projectId, masterPassword } = this.ensureDefaultProject();
|
|
254
|
+
await this.keyService.setKey(projectId, '__sdk_auto__', masterPassword, keyName, value);
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* 通过项目名称获取密钥(简化 API)
|
|
258
|
+
* 需要传入项目名称和主密码
|
|
259
|
+
*/
|
|
260
|
+
async getKeyByName(projectName, keyName, masterPassword) {
|
|
261
|
+
await this.ensureConnected();
|
|
262
|
+
const { project } = await this.projectService.getOrCreateProject(projectName, masterPassword);
|
|
263
|
+
const userId = '__sdk_auto__';
|
|
264
|
+
this.currentUserId = userId;
|
|
265
|
+
return await this.keyService.getKeyByName(project.projectId, userId, masterPassword, keyName);
|
|
266
|
+
}
|
|
209
267
|
// ============ 用户管理 ============
|
|
210
268
|
/**
|
|
211
269
|
* 创建用户
|
|
@@ -91,6 +91,22 @@ class AuditService {
|
|
|
91
91
|
},
|
|
92
92
|
});
|
|
93
93
|
}
|
|
94
|
+
/**
|
|
95
|
+
* 记录密钥更新
|
|
96
|
+
*/
|
|
97
|
+
async logKeyUpdated(projectId, userId, keyId, keyName, success) {
|
|
98
|
+
await this.log({
|
|
99
|
+
projectId,
|
|
100
|
+
userId,
|
|
101
|
+
action: types_1.AuditAction.UPDATE_KEY,
|
|
102
|
+
resourceType: types_1.ResourceType.KEY,
|
|
103
|
+
resourceId: keyId,
|
|
104
|
+
details: {
|
|
105
|
+
keyName,
|
|
106
|
+
success,
|
|
107
|
+
},
|
|
108
|
+
});
|
|
109
|
+
}
|
|
94
110
|
/**
|
|
95
111
|
* 记录密钥删除
|
|
96
112
|
*/
|
|
@@ -5,9 +5,10 @@
|
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.KeyService = void 0;
|
|
8
|
-
const key_model_1 = require("../models/key.model");
|
|
9
8
|
const types_1 = require("../types");
|
|
9
|
+
const key_model_1 = require("../models/key.model");
|
|
10
10
|
const types_2 = require("../types");
|
|
11
|
+
const types_3 = require("../types");
|
|
11
12
|
const crypto_1 = require("../core/crypto");
|
|
12
13
|
class KeyService {
|
|
13
14
|
constructor(keyRepo, auditService, permissionService, cryptoService) {
|
|
@@ -27,16 +28,16 @@ class KeyService {
|
|
|
27
28
|
*/
|
|
28
29
|
async createKey(projectId, userId, masterPassword, keyData) {
|
|
29
30
|
// 验证权限
|
|
30
|
-
await this.permissionService.requirePermission(projectId, userId,
|
|
31
|
+
await this.permissionService.requirePermission(projectId, userId, types_3.Permission.KEY_CREATE);
|
|
31
32
|
// 验证密钥数据
|
|
32
33
|
const validation = (0, key_model_1.validateKey)(keyData);
|
|
33
34
|
if (!validation.valid) {
|
|
34
|
-
throw new
|
|
35
|
+
throw new types_2.ValidationError(validation.errors.join(', '));
|
|
35
36
|
}
|
|
36
37
|
// 检查密钥名称是否已存在
|
|
37
38
|
const existingKey = await this.keyRepo.findByProjectAndName(projectId, keyData.keyName);
|
|
38
39
|
if (existingKey) {
|
|
39
|
-
throw new
|
|
40
|
+
throw new types_2.ValidationError('Key with this name already exists');
|
|
40
41
|
}
|
|
41
42
|
// 加密密钥值
|
|
42
43
|
const masterKeyHex = await this.getMasterKey(projectId, masterPassword);
|
|
@@ -54,19 +55,19 @@ class KeyService {
|
|
|
54
55
|
*/
|
|
55
56
|
async getKey(projectId, userId, masterPassword, keyId) {
|
|
56
57
|
// 验证权限
|
|
57
|
-
await this.permissionService.requirePermission(projectId, userId,
|
|
58
|
+
await this.permissionService.requirePermission(projectId, userId, types_3.Permission.KEY_READ);
|
|
58
59
|
// 获取密钥
|
|
59
60
|
const key = await this.keyRepo.findByKeyId(keyId);
|
|
60
61
|
if (!key) {
|
|
61
|
-
throw new
|
|
62
|
+
throw new types_2.KeyNotFoundError(keyId);
|
|
62
63
|
}
|
|
63
64
|
// 验证项目
|
|
64
65
|
if (key.projectId !== projectId) {
|
|
65
|
-
throw new
|
|
66
|
+
throw new types_2.ValidationError('Key does not belong to this project');
|
|
66
67
|
}
|
|
67
68
|
// 检查密钥是否可访问
|
|
68
69
|
if (!(0, key_model_1.isKeyAccessible)(key)) {
|
|
69
|
-
throw new
|
|
70
|
+
throw new types_2.ValidationError('Key is not accessible');
|
|
70
71
|
}
|
|
71
72
|
// 解密密钥值
|
|
72
73
|
const masterKeyHex = await this.getMasterKey(projectId, masterPassword);
|
|
@@ -83,7 +84,7 @@ class KeyService {
|
|
|
83
84
|
*/
|
|
84
85
|
async listKeys(projectId, userId, filters, options) {
|
|
85
86
|
// 验证权限
|
|
86
|
-
await this.permissionService.requirePermission(projectId, userId,
|
|
87
|
+
await this.permissionService.requirePermission(projectId, userId, types_3.Permission.KEY_LIST);
|
|
87
88
|
return await this.keyRepo.findByProjectId(projectId, filters, options);
|
|
88
89
|
}
|
|
89
90
|
/**
|
|
@@ -91,11 +92,11 @@ class KeyService {
|
|
|
91
92
|
*/
|
|
92
93
|
async updateKey(projectId, userId, masterPassword, keyId, updates) {
|
|
93
94
|
// 验证权限
|
|
94
|
-
await this.permissionService.requirePermission(projectId, userId,
|
|
95
|
+
await this.permissionService.requirePermission(projectId, userId, types_3.Permission.KEY_UPDATE);
|
|
95
96
|
const key = await this.keyRepo.getByKeyId(keyId);
|
|
96
97
|
// 验证项目
|
|
97
98
|
if (key.projectId !== projectId) {
|
|
98
|
-
throw new
|
|
99
|
+
throw new types_2.ValidationError('Key does not belong to this project');
|
|
99
100
|
}
|
|
100
101
|
let newEncryptedData;
|
|
101
102
|
// 如果更新密钥值,需要重新加密
|
|
@@ -113,16 +114,74 @@ class KeyService {
|
|
|
113
114
|
*/
|
|
114
115
|
async deleteKey(projectId, userId, keyId) {
|
|
115
116
|
// 验证权限
|
|
116
|
-
await this.permissionService.requirePermission(projectId, userId,
|
|
117
|
+
await this.permissionService.requirePermission(projectId, userId, types_3.Permission.KEY_DELETE);
|
|
117
118
|
const key = await this.keyRepo.getByKeyId(keyId);
|
|
118
119
|
// 验证项目
|
|
119
120
|
if (key.projectId !== projectId) {
|
|
120
|
-
throw new
|
|
121
|
+
throw new types_2.ValidationError('Key does not belong to this project');
|
|
121
122
|
}
|
|
122
123
|
await this.keyRepo.softDeleteKey(keyId);
|
|
123
124
|
// 记录审计日志
|
|
124
125
|
await this.auditService.logKeyDeleted(projectId, userId, keyId, key.keyName, true);
|
|
125
126
|
}
|
|
127
|
+
/**
|
|
128
|
+
* 设置密钥(简化 API:自动创建或更新)
|
|
129
|
+
* 如果密钥已存在则更新,不存在则创建
|
|
130
|
+
*/
|
|
131
|
+
async setKey(projectId, userId, masterPassword, keyName, value, options) {
|
|
132
|
+
// 验证权限
|
|
133
|
+
await this.permissionService.requirePermission(projectId, userId, types_3.Permission.KEY_CREATE);
|
|
134
|
+
// 检查密钥是否已存在
|
|
135
|
+
const existingKey = await this.keyRepo.findByProjectAndName(projectId, keyName);
|
|
136
|
+
if (existingKey) {
|
|
137
|
+
// 验证更新权限
|
|
138
|
+
await this.permissionService.requirePermission(projectId, userId, types_3.Permission.KEY_UPDATE);
|
|
139
|
+
let newEncryptedData;
|
|
140
|
+
const masterKeyHex = await this.getMasterKey(projectId, masterPassword);
|
|
141
|
+
const masterKey = (0, crypto_1.hexToBuffer)(masterKeyHex);
|
|
142
|
+
newEncryptedData = await this.cryptoService.encryptKey(value, masterKey);
|
|
143
|
+
const updatedKey = (0, key_model_1.updateKey)(existingKey, {
|
|
144
|
+
value,
|
|
145
|
+
tags: options?.tags,
|
|
146
|
+
description: options?.description,
|
|
147
|
+
}, newEncryptedData);
|
|
148
|
+
await this.keyRepo.updateKey(existingKey.keyId, updatedKey);
|
|
149
|
+
// 记录审计日志
|
|
150
|
+
await this.auditService.logKeyUpdated(projectId, userId, existingKey.keyId, keyName, true);
|
|
151
|
+
// 返回解密后的值
|
|
152
|
+
return (0, key_model_1.toKeyValue)(updatedKey, value);
|
|
153
|
+
}
|
|
154
|
+
// 创建新密钥
|
|
155
|
+
const keyData = {
|
|
156
|
+
keyName,
|
|
157
|
+
keyType: options?.keyType || types_1.KeyType.CUSTOM,
|
|
158
|
+
value,
|
|
159
|
+
tags: options?.tags,
|
|
160
|
+
description: options?.description,
|
|
161
|
+
};
|
|
162
|
+
const validation = (0, key_model_1.validateKey)(keyData);
|
|
163
|
+
if (!validation.valid) {
|
|
164
|
+
throw new types_2.ValidationError(validation.errors.join(', '));
|
|
165
|
+
}
|
|
166
|
+
const masterKeyHex = await this.getMasterKey(projectId, masterPassword);
|
|
167
|
+
const masterKey = (0, crypto_1.hexToBuffer)(masterKeyHex);
|
|
168
|
+
const encryptedData = await this.cryptoService.encryptKey(value, masterKey);
|
|
169
|
+
const key = (0, key_model_1.createKey)(projectId, keyData, encryptedData, userId);
|
|
170
|
+
await this.keyRepo.insertOne(key);
|
|
171
|
+
// 记录审计日志
|
|
172
|
+
await this.auditService.logKeyCreated(projectId, userId, key.keyId, key.keyName, key.keyType, true);
|
|
173
|
+
return (0, key_model_1.toKeyValue)(key, value);
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* 通过密钥名称获取密钥(简化 API)
|
|
177
|
+
*/
|
|
178
|
+
async getKeyByName(projectId, userId, masterPassword, keyName) {
|
|
179
|
+
const key = await this.keyRepo.findByProjectAndName(projectId, keyName);
|
|
180
|
+
if (!key) {
|
|
181
|
+
throw new types_2.KeyNotFoundError(keyName);
|
|
182
|
+
}
|
|
183
|
+
return await this.getKey(projectId, userId, masterPassword, key.keyId);
|
|
184
|
+
}
|
|
126
185
|
/**
|
|
127
186
|
* 获取项目主密钥(需要从项目服务获取)
|
|
128
187
|
*/
|
|
@@ -98,5 +98,55 @@ class ProjectService {
|
|
|
98
98
|
const masterKey = await this.cryptoService.unlockProjectMasterKey(masterPassword, project.salt, project.masterKeyHash);
|
|
99
99
|
return masterKey.toString('hex');
|
|
100
100
|
}
|
|
101
|
+
/**
|
|
102
|
+
* 获取或创建项目(简化 API 使用)
|
|
103
|
+
* 如果项目不存在,自动创建项目并生成默认 SDK 用户
|
|
104
|
+
*/
|
|
105
|
+
async getOrCreateProject(projectName, masterPassword) {
|
|
106
|
+
// 查找现有项目
|
|
107
|
+
let project = await this.projectRepo.findByProjectName(projectName);
|
|
108
|
+
if (project) {
|
|
109
|
+
// 验证主密码是否正确
|
|
110
|
+
await this.unlockProjectMasterKey(project.projectId, masterPassword);
|
|
111
|
+
// 确保存在 SDK 默认用户
|
|
112
|
+
await this.ensureSdkUser(project.projectId, masterPassword);
|
|
113
|
+
return { project, isNew: false };
|
|
114
|
+
}
|
|
115
|
+
// 创建新项目,使用 SDK 默认用户作为创建者
|
|
116
|
+
project = await this.createProject({ projectName, masterPassword }, '__sdk_auto__');
|
|
117
|
+
return { project, isNew: true };
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* 确保项目存在 SDK 默认用户(用于简化 API 的权限绕过)
|
|
121
|
+
* 如果项目是通过 CLI 创建的,可能没有 __sdk_auto__ 用户,此时自动创建
|
|
122
|
+
*/
|
|
123
|
+
async ensureSdkUser(projectId, masterPassword) {
|
|
124
|
+
// 尝试查找 SDK 默认用户
|
|
125
|
+
let user = await this.userRepo.findByProjectAndUsername(projectId, '__sdk_auto__');
|
|
126
|
+
if (user) {
|
|
127
|
+
return user;
|
|
128
|
+
}
|
|
129
|
+
// 不存在则自动创建(仅当主密码正确时)
|
|
130
|
+
// 先验证主密码
|
|
131
|
+
await this.unlockProjectMasterKey(projectId, masterPassword);
|
|
132
|
+
const sdkUser = (0, user_model_1.createUser)(projectId, {
|
|
133
|
+
username: '__sdk_auto__',
|
|
134
|
+
password: masterPassword,
|
|
135
|
+
roles: [types_1.Role.ADMIN],
|
|
136
|
+
}, await (0, bcrypt_1.hash)(masterPassword, 10));
|
|
137
|
+
await this.userRepo.insertOne(sdkUser);
|
|
138
|
+
await this.auditService.log({
|
|
139
|
+
projectId,
|
|
140
|
+
userId: '__sdk_auto__',
|
|
141
|
+
action: types_3.AuditAction.CREATE_USER,
|
|
142
|
+
resourceType: types_3.ResourceType.USER,
|
|
143
|
+
resourceId: sdkUser.userId,
|
|
144
|
+
details: {
|
|
145
|
+
success: true,
|
|
146
|
+
note: 'Auto-created SDK default user',
|
|
147
|
+
},
|
|
148
|
+
});
|
|
149
|
+
return sdkUser;
|
|
150
|
+
}
|
|
101
151
|
}
|
|
102
152
|
exports.ProjectService = ProjectService;
|
package/dist/types/index.d.ts
CHANGED
|
@@ -27,6 +27,10 @@ export interface KMSClientOptions {
|
|
|
27
27
|
/** 最小连接池大小 */
|
|
28
28
|
minPoolSize?: number;
|
|
29
29
|
};
|
|
30
|
+
/** 默认项目名称(简化 API 使用) */
|
|
31
|
+
defaultProjectName?: string;
|
|
32
|
+
/** 主密码(简化 API 使用,可选) */
|
|
33
|
+
masterPassword?: string;
|
|
30
34
|
}
|
|
31
35
|
/**
|
|
32
36
|
* 加密的 KMS 客户端配置选项
|
|
@@ -54,6 +58,10 @@ export interface EncryptedKMSClientOptions {
|
|
|
54
58
|
privateKey?: string;
|
|
55
59
|
/** 私钥密码(如果私钥有密码保护),默认从 KMS_PRIVATE_KEY_PASSPHRASE 环境变量读取 */
|
|
56
60
|
privateKeyPassphrase?: string;
|
|
61
|
+
/** 默认项目名称(简化 API 使用) */
|
|
62
|
+
defaultProjectName?: string;
|
|
63
|
+
/** 主密码(简化 API 使用,可选) */
|
|
64
|
+
masterPassword?: string;
|
|
57
65
|
}
|
|
58
66
|
/**
|
|
59
67
|
* 错误类型
|
|
@@ -1 +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;
|
|
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;IACF,wBAAwB;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,wBAAwB;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;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;IAC9B,wBAAwB;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,wBAAwB;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;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"}
|
package/dist/types/index.js.map
CHANGED
|
@@ -1 +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;
|
|
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;AA6D9B;;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"}
|