refactor(cache): 提升 upstash-modules 类型声明至 shared/lib
This commit is contained in:
71
src/shared/lib/rate-limit/upstash-modules.d.ts
vendored
71
src/shared/lib/rate-limit/upstash-modules.d.ts
vendored
@@ -1,69 +1,8 @@
|
||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||
/**
|
||||
* Upstash SDK 可选依赖类型声明(audit-P1-6)
|
||||
* 向后兼容 shim:实际声明已提升至 shared/lib/upstash-modules.d.ts
|
||||
* rate-limit 与 cache 模块共用同一份类型声明。
|
||||
*
|
||||
* 这两个包通过动态 import 在运行时加载,仅在 `RATE_LIMIT_DRIVER=redis`
|
||||
* 时才需要安装。默认内存模式下无需安装。
|
||||
*
|
||||
* 安装命令:
|
||||
* npm install @upstash/ratelimit @upstash/redis
|
||||
*
|
||||
* 安装后这两个包自带的类型声明将覆盖此处的 any 声明,
|
||||
* 提供完整的类型检查。
|
||||
* 保留此文件避免破坏现有 import 路径。
|
||||
* 新代码请直接从 @/shared/lib/upstash-modules.d.ts 引用。
|
||||
*/
|
||||
|
||||
declare module "@upstash/ratelimit" {
|
||||
export class Ratelimit {
|
||||
constructor(config: {
|
||||
redis: any
|
||||
limiter: any
|
||||
analytics?: boolean
|
||||
prefix?: string
|
||||
})
|
||||
limit(
|
||||
identifier: string,
|
||||
): Promise<{
|
||||
success: boolean
|
||||
limit: number
|
||||
remaining: number
|
||||
reset: number
|
||||
pending: Promise<unknown>
|
||||
}>
|
||||
reset(identifier: string): Promise<void>
|
||||
static slidingWindow(
|
||||
max: number,
|
||||
window: string,
|
||||
): { type: "sliding-window"; max: number; window: string }
|
||||
static fixedWindow(
|
||||
max: number,
|
||||
window: string,
|
||||
): { type: "fixed-window"; max: number; window: string }
|
||||
static tokenBucket(
|
||||
max: number,
|
||||
window: string,
|
||||
refillRate: number,
|
||||
): { type: "token-bucket"; max: number; window: string; refillRate: number }
|
||||
}
|
||||
}
|
||||
|
||||
declare module "@upstash/redis" {
|
||||
export class Redis {
|
||||
constructor(config: {
|
||||
url: string
|
||||
token: string
|
||||
automaticDeserialization?: boolean
|
||||
responseEncoding?: "base64" | "none"
|
||||
retry?: {
|
||||
retries: number
|
||||
backoff: (retryCount: number) => number
|
||||
}
|
||||
})
|
||||
get(key: string): Promise<string | null>
|
||||
set(key: string, value: string): Promise<"OK">
|
||||
del(...keys: string[]): Promise<number>
|
||||
incr(key: string): Promise<number>
|
||||
expire(key: string, seconds: number): Promise<number>
|
||||
pexpire(key: string, milliseconds: number): Promise<number>
|
||||
[key: string]: any
|
||||
}
|
||||
}
|
||||
export {}
|
||||
|
||||
72
src/shared/lib/upstash-modules.d.ts
vendored
Normal file
72
src/shared/lib/upstash-modules.d.ts
vendored
Normal file
@@ -0,0 +1,72 @@
|
||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||
/**
|
||||
* Upstash SDK 可选依赖类型声明(cache + rate-limit 共用)
|
||||
*
|
||||
* 这两个包通过动态 import 在运行时加载,仅在 `RATE_LIMIT_DRIVER=redis`
|
||||
* 或 `CACHE_DRIVER=redis` 时才需要安装。默认内存模式下无需安装。
|
||||
*
|
||||
* 安装命令:
|
||||
* npm install @upstash/ratelimit @upstash/redis
|
||||
*
|
||||
* 安装后这两个包自带的类型声明将覆盖此处的 any 声明,
|
||||
* 提供完整的类型检查。
|
||||
*
|
||||
* 注意:rate-limit 与 cache 模块共用同一份类型声明,
|
||||
* 避免在多处重复维护。
|
||||
*/
|
||||
|
||||
declare module "@upstash/ratelimit" {
|
||||
export class Ratelimit {
|
||||
constructor(config: {
|
||||
redis: any
|
||||
limiter: any
|
||||
analytics?: boolean
|
||||
prefix?: string
|
||||
})
|
||||
limit(
|
||||
identifier: string,
|
||||
): Promise<{
|
||||
success: boolean
|
||||
limit: number
|
||||
remaining: number
|
||||
reset: number
|
||||
pending: Promise<unknown>
|
||||
}>
|
||||
reset(identifier: string): Promise<void>
|
||||
static slidingWindow(
|
||||
max: number,
|
||||
window: string,
|
||||
): { type: "sliding-window"; max: number; window: string }
|
||||
static fixedWindow(
|
||||
max: number,
|
||||
window: string,
|
||||
): { type: "fixed-window"; max: number; window: string }
|
||||
static tokenBucket(
|
||||
max: number,
|
||||
window: string,
|
||||
refillRate: number,
|
||||
): { type: "token-bucket"; max: number; window: string; refillRate: number }
|
||||
}
|
||||
}
|
||||
|
||||
declare module "@upstash/redis" {
|
||||
export class Redis {
|
||||
constructor(config: {
|
||||
url: string
|
||||
token: string
|
||||
automaticDeserialization?: boolean
|
||||
responseEncoding?: "base64" | "none"
|
||||
retry?: {
|
||||
retries: number
|
||||
backoff: (retryCount: number) => number
|
||||
}
|
||||
})
|
||||
get(key: string): Promise<string | null>
|
||||
set(key: string, value: string): Promise<"OK">
|
||||
del(...keys: string[]): Promise<number>
|
||||
incr(key: string): Promise<number>
|
||||
expire(key: string, seconds: number): Promise<number>
|
||||
pexpire(key: string, milliseconds: number): Promise<number>
|
||||
[key: string]: any
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user