use-on-demand
Version:
86 lines (75 loc) • 2.45 kB
TypeScript
type SuccessType = 1 | 0
type EnableType = boolean | undefined;
interface GeeOption {
gt: string;
challenge: string;
offline: boolean; // 表示用户后台检测【极验服务器】是否宕机
new_captcha: true; // 用于宕机时表示是否【新验证码版本】的宕机
product?: 'bind' | 'float' | 'popup'; // 产品形式,包括:float,popup
width?: '100%' | string;
lang?: 'zh' | 'zh-tw' | 'en';
}
interface Window {
initGeetest(
option: GeeOption,
cb: (captchaObj: GeeCtrl) => void,
): void;
}
interface GeePreInfo {
enable: EnableType,
gt: string,
ip: string,
success: SuccessType,
//
sign: string | undefined,
challenge: string | undefined,
}
declare namespace SdkVerifyFingerResNS {
type _RawData_SucType = { // 内部情况一
geetest_challenge: string;
geetest_validate: string;
geetest_seccode: string;
} //
// 原始数据
type RawData = _RawData_SucType // 情况一
| { // 情况二
sign: string;
} | { // 情况三
sign?: string;
}
// 转化后的头部
type ParsedHeader = { // 情况一
'gt-challenge': string;
'gt-validate': string;
'gt-seccode': string;
} | { // 情况二
'gt-sign': string;
} | { // 情况三
'gt-sign'?: string;
}
}
type RegistType = 'email' | 'mobile';
interface InnerCb {
(): void; // 无参
} //
interface LogicCb {
(geeCtrl: GeeCtrl): void;// 一个参数
} //
interface __GeeCtrlCbs {
onReady(cb: InnerCb): void; //
onSuccess(cb: InnerCb): void; //
onError(cb: InnerCb): void; //
}
type ToListen_GeeCtrlCbs = {
// [key in keyof __GeeCtrlCbs]: LogicCb;
onReadySuc: LogicCb;
onFingerSuc: LogicCb;
onReadyFailure: LogicCb;
}
interface GeeCtrl extends __GeeCtrlCbs {
verify(): void; // 按钮模式
appendTo(domId: string): void; // 指令模式
reset(): void; // 重置
//
getValidate(): SdkVerifyFingerResNS.RawData; // 获取用户进行成功验证(onSuccess)所得到的结果,该结果用于进行服务端 SDK 进行二次验证。
}