vona-module-a-captcha 5.1.15 → 5.1.17
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/dist/bean/bean.captcha.d.ts +6 -3
- package/dist/bean/bean.captcha.d.ts.map +1 -1
- package/dist/bean/cacheRedis.captcha.d.ts +38 -0
- package/dist/bean/cacheRedis.captcha.d.ts.map +1 -1
- package/dist/index.js +482 -143
- package/dist/index.js.map +1 -1
- package/dist/lib/captchaLua.d.ts +5 -0
- package/dist/lib/captchaLua.d.ts.map +1 -0
- package/dist/types/captcha.d.ts +15 -1
- package/dist/types/captcha.d.ts.map +1 -1
- package/dist/types/captchaProvider.d.ts +27 -1
- package/dist/types/captchaProvider.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/bean/bean.captcha.ts +271 -137
- package/src/bean/cacheRedis.captcha.ts +199 -2
- package/src/lib/captchaLua.ts +90 -0
- package/src/types/captcha.ts +15 -1
- package/src/types/captchaProvider.ts +38 -1
|
@@ -2,13 +2,16 @@ import { BeanBase } from 'vona';
|
|
|
2
2
|
import type { ICaptchaData, ICaptchaDataCache } from '../types/captcha.ts';
|
|
3
3
|
import type { ICaptchaSceneRecord } from '../types/captchaScene.ts';
|
|
4
4
|
export declare class BeanCaptcha extends BeanBase {
|
|
5
|
-
create(sceneName: keyof ICaptchaSceneRecord): Promise<ICaptchaData>;
|
|
5
|
+
create(sceneName: keyof ICaptchaSceneRecord, context?: unknown): Promise<ICaptchaData>;
|
|
6
|
+
private _createBound;
|
|
6
7
|
refresh(id: string, sceneName: keyof ICaptchaSceneRecord): Promise<ICaptchaData>;
|
|
7
|
-
verify(id: string, token: unknown, sceneName: keyof ICaptchaSceneRecord): Promise<boolean>;
|
|
8
|
-
private
|
|
8
|
+
verify(id: string, token: unknown, sceneName: keyof ICaptchaSceneRecord, context?: unknown): Promise<boolean>;
|
|
9
|
+
private _verifyBound;
|
|
9
10
|
verifyImmediate(id: string, token: unknown): Promise<false | string>;
|
|
10
11
|
getCaptchaData(id: string): Promise<ICaptchaDataCache | undefined>;
|
|
11
12
|
updateCaptchaToken(id: string, token: unknown): Promise<undefined>;
|
|
13
|
+
private _authorize;
|
|
14
|
+
private _bindingMatches;
|
|
12
15
|
private _getProviderInstance;
|
|
13
16
|
private _getProviderOptions;
|
|
14
17
|
private _resolveProvider;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bean.captcha.d.ts","sourceRoot":"","sources":["../../src/bean/bean.captcha.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"bean.captcha.d.ts","sourceRoot":"","sources":["../../src/bean/bean.captcha.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAqC,MAAM,MAAM,CAAC;AAGnE,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAO3E,OAAO,KAAK,EAGV,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAGlC,qBACa,WAAY,SAAQ,QAAQ;IACjC,MAAM,CAAC,SAAS,EAAE,MAAM,mBAAmB,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC;YAyB9E,YAAY;IA8EpB,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,mBAAmB;IAgCxD,MAAM,CACV,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,MAAM,mBAAmB,EACpC,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,OAAO,CAAC;YA2BL,YAAY;IAoCpB,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC;IAyBpE,cAAc,CAAC,EAAE,EAAE,MAAM;IAIzB,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;YAqBrC,UAAU;IAyBxB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,mBAAmB;YAOb,gBAAgB;IAY9B,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,iBAAiB;CAmB1B"}
|
|
@@ -1,7 +1,45 @@
|
|
|
1
1
|
import { ServiceCacheRedisBase } from 'vona-module-a-cache';
|
|
2
2
|
import type { ICaptchaDataCache } from '../types/captcha.ts';
|
|
3
|
+
import type { ICaptchaAuthorization } from '../types/captchaProvider.ts';
|
|
3
4
|
export type TCacheRedisCaptchaKey = string;
|
|
4
5
|
export type TCacheRedisCaptchaData = ICaptchaDataCache;
|
|
6
|
+
export interface ICaptchaSnapshot {
|
|
7
|
+
raw: string;
|
|
8
|
+
data: ICaptchaDataCache;
|
|
9
|
+
}
|
|
5
10
|
export declare class CacheRedisCaptcha extends ServiceCacheRedisBase<TCacheRedisCaptchaKey, TCacheRedisCaptchaData> {
|
|
11
|
+
snapshot(id: string): Promise<ICaptchaSnapshot | undefined>;
|
|
12
|
+
createImage(id: string, data: ICaptchaDataCache, ttl: number): Promise<boolean>;
|
|
13
|
+
compareAndSet(id: string, snapshot: ICaptchaSnapshot, data?: ICaptchaDataCache, ttl?: number): Promise<boolean>;
|
|
14
|
+
boundPrefix(): string;
|
|
15
|
+
/** Opaque, instance-local cache keys, also available for precise test cleanup. */
|
|
16
|
+
boundKeys(authorization: Pick<ICaptchaAuthorization, 'scope' | 'ip' | 'recipientLimits' | 'ipLimits'>): {
|
|
17
|
+
pointer: string;
|
|
18
|
+
cooldown: string;
|
|
19
|
+
budgets: string[];
|
|
20
|
+
};
|
|
21
|
+
reserveBound(id: string, data: ICaptchaDataCache, authorization: ICaptchaAuthorization): Promise<{
|
|
22
|
+
reserved: false;
|
|
23
|
+
retryAt: number;
|
|
24
|
+
resendAt: number;
|
|
25
|
+
snapshot?: undefined;
|
|
26
|
+
} | {
|
|
27
|
+
reserved: true;
|
|
28
|
+
snapshot: {
|
|
29
|
+
raw: string;
|
|
30
|
+
data: ICaptchaDataCache;
|
|
31
|
+
};
|
|
32
|
+
retryAt?: undefined;
|
|
33
|
+
resendAt?: undefined;
|
|
34
|
+
}>;
|
|
35
|
+
finalizeBound(id: string, snapshot: ICaptchaSnapshot, data?: ICaptchaDataCache): Promise<boolean>;
|
|
36
|
+
/** -1 asks the verifier to reread a competing wrong-attempt update. */
|
|
37
|
+
consumeBound(id: string, snapshot: ICaptchaSnapshot, verified: boolean): Promise<number>;
|
|
38
|
+
validateAuthorization(authorization: ICaptchaAuthorization): void;
|
|
39
|
+
private _validateAuthorization;
|
|
40
|
+
private _validateTtl;
|
|
41
|
+
private _validateBoundId;
|
|
42
|
+
private _redisKeys;
|
|
43
|
+
private _eval;
|
|
6
44
|
}
|
|
7
45
|
//# sourceMappingURL=cacheRedis.captcha.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cacheRedis.captcha.d.ts","sourceRoot":"","sources":["../../src/bean/cacheRedis.captcha.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cacheRedis.captcha.d.ts","sourceRoot":"","sources":["../../src/bean/cacheRedis.captcha.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAc,MAAM,qBAAqB,CAAC;AAExE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AASzE,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC;AAC3C,MAAM,MAAM,sBAAsB,GAAG,iBAAiB,CAAC;AAEvD,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,iBAAiB,CAAC;CACzB;AAED,qBACa,iBAAkB,SAAQ,qBAAqB,CAC1D,qBAAqB,EACrB,sBAAsB,CACvB;IACO,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAM3D,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,MAAM;IAM5D,aAAa,CACjB,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,gBAAgB,EAC1B,IAAI,CAAC,EAAE,iBAAiB,EACxB,GAAG,CAAC,EAAE,MAAM;IAWd,WAAW;IAKX,kFAAkF;IAClF,SAAS,CACP,aAAa,EAAE,IAAI,CAAC,qBAAqB,EAAE,OAAO,GAAG,IAAI,GAAG,iBAAiB,GAAG,UAAU,CAAC;;;;;IAevF,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,aAAa,EAAE,qBAAqB;;;;;;;;;kBAqB7B,iBAAiB;;;;;IAI1E,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,IAAI,CAAC,EAAE,iBAAiB;IAapF,uEAAuE;IACjE,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,OAAO;IAmB5E,qBAAqB,CAAC,aAAa,EAAE,qBAAqB;IAI1D,OAAO,CAAC,sBAAsB;IA8C9B,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,UAAU;YAMJ,KAAK;CAIpB"}
|