unified-keys 0.3.0 → 0.5.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/README.md CHANGED
@@ -48,11 +48,11 @@ const result = await verifyKey(
48
48
  ### `createClient({ baseUrl, rootKey })` → client
49
49
  管理客户端。`rootKey` 用于管理 API(verify 端点不需要)。
50
50
 
51
- ### `client.createKey({ appId, prefix?, credits?, maxUses?, meta?, externalId?, expiresAt?, count? })`
52
- 创建 key。返回 `{ keys: [{ key, keyId }] }`,`key` 是完整明文。`appId` 首次自动注册。
51
+ ### `client.createKey({ appId, prefix?, length?, credits?, maxUses?, meta?, externalId?, expiresAt?, count? })`
52
+ 创建 key。返回 `{ keys: [{ key, keyId }] }`,`key` 是完整明文(`<prefix>_<base62 length>`)。`appId` 首次自动注册。`length` 默认 8(短期邀请码等);**长期付费 key 传 16**(≈95 bit 防爆破)。
53
53
 
54
54
  ### `verifyKey({ key, decrement?, autoDelete?, context? })`
55
- 公开验证(无需 rootKey,baseUrl 内置默认)。`decrement: true` 扣减 + 写 verify log;`false` 只查。`autoDelete: true` 扣减后额度用尽(remaining=0)自动删 key(一次性 key,避免 DB 堆积)。SDK 前置 `isValidKeyFormat` 校验,格式不对直接返回不查 DB。
55
+ 公开验证(无需 rootKey,baseUrl 内置默认)。`decrement: true` 扣减 + 写 verify log;`false` 只查。`autoDelete`:扣减后额度用尽(remaining=0)自动删——`true` 立即删;`"3m"`/`"2h"`/`"3d"` 延迟删(set deleteAt,Cron 每 10min 清理过期 key,保留记录供 admin 查看一段时间)。SDK 前置 `isValidKeyFormat` 校验,格式不对直接返回不查 DB。
56
56
  返回 `{ valid, found, keyId, remaining, maxUses, meta, externalId, appId, enabled, expiresAt, createdAt }`。
57
57
 
58
58
  ### `client.listKeys({ appId, limit?, offset? })`
package/SKILL.md CHANGED
@@ -38,6 +38,7 @@ const { keys } = await client.createKey({
38
38
  appId: "my-app",
39
39
  credits: 5, // 初始剩余次数
40
40
  maxUses: 5, // 总额度(0 = 无限)
41
+ length: 8, // body 位数(默认 8;长期付费 key 用 16 防爆破)
41
42
  externalId: "user-123", // 应用层关联业务实体(可选)
42
43
  meta: { plan: "pro" }, // 任意元数据(可选)
43
44
  count: 1, // 批量创建数
@@ -99,7 +100,7 @@ if (!isValidKeyFormat(inputKey)) return invalid();
99
100
  | 选项 | 默认 | 说明 |
100
101
  |---|---|---|
101
102
  | `decrement` | true | true 扣减 + 写 verify log;false 只查 |
102
- | `autoDelete` | false | 扣减后 remaining=0 自动删 key(一次性 key,避免 DB 堆积无用 key |
103
+ | `autoDelete` | false | 扣减后 remaining=0 自动删:`true` 立即删;`"3m"`/`"2h"`/`"3d"` 延迟删(set deleteAt,Cron 10min 清理过期 key,保留记录供 admin 查看一段时间) |
103
104
  | `context` | - | 写入 usage_log({username, ip, source, ...}) |
104
105
 
105
106
  **SDK 前置校验**:verify 前先 `isValidKeyFormat(key)`,格式不对直接返回 `{valid:false, found:false}`,不查 DB(省时间)。应用也可单独用 `isValidKeyFormat` 做手输校验。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "unified-keys",
3
- "version": "0.3.0",
3
+ "version": "0.5.0",
4
4
  "description": "自建通用 API key 管理 SDK(明文存储 + 明文返回 + 完整使用记录),调用 keys.932324.xyz 服务",
5
5
  "type": "module",
6
6
  "main": "./src/index.ts",
package/src/types.ts CHANGED
@@ -37,6 +37,8 @@ export interface CreateKeyInput {
37
37
  expiresAt?: string;
38
38
  /** 应用层关联业务实体(如 github-inviter 的 configSlug) */
39
39
  externalId?: string;
40
+ /** key body 长度(base62 位数),默认 8;长期付费 key 建议 16(防爆破) */
41
+ length?: number;
40
42
  /** 总额度(0=无限),默认等于 credits */
41
43
  maxUses?: number;
42
44
  /** 应用层任意元数据 */
@@ -124,8 +126,11 @@ export interface GetKeyResult {
124
126
  }
125
127
 
126
128
  export interface VerifyInput {
127
- /** 扣减后额度用尽(remaining=0)时自动删除 key,避免 DB 堆积无用 key */
128
- autoDelete?: boolean;
129
+ /**
130
+ * 扣减后额度用尽(remaining=0)自动删除:true 立即删;
131
+ * "3m"/"2h"/"3d" 等延迟删(set deleteAt,Cron 定期清理,保留记录一段时间)
132
+ */
133
+ autoDelete?: boolean | string;
129
134
  /** 上下文,写入 usage_log(如 {username, source, ip}) */
130
135
  context?: Record<string, unknown>;
131
136
  /** 默认 true;false 时只查不扣(写 verify log 但不扣减) */