id-scanner-lib
Version:
Browser-based ID card, QR code, and face recognition scanner with liveness detection
176 lines (175 loc) • 5.09 kB
TypeScript
/**
* @file 工具集
* @description 提供通用工具函数
* @module utils
*/
/**
* 创建延迟Promise
* @param ms 延迟毫秒数
*/
export declare function delay(ms: number): Promise<void>;
/**
* 节流函数
* @param fn 要节流的函数
* @param wait 等待时间(ms)
*/
export declare function throttle<T extends (...args: any[]) => any>(fn: T, wait: number): (...args: Parameters<T>) => ReturnType<T> | undefined;
/**
* 防抖函数
* @param fn 要防抖的函数
* @param wait 等待时间(ms)
* @param immediate 是否立即执行
*/
export declare function debounce<T extends (...args: any[]) => any>(fn: T, wait: number, immediate?: boolean): (...args: Parameters<T>) => void;
/**
* 格式化字节大小
* @param bytes 字节数
* @param decimals 小数位数
*/
export declare function formatBytes(bytes: number, decimals?: number): string;
/**
* 生成UUID
*/
export declare function generateUUID(): string;
/**
* 检查浏览器支持的功能
*/
export declare const browserCapabilities: {
/**
* 检查是否支持摄像头
*/
hasCamera(): boolean;
/**
* 检查是否支持WebAssembly
*/
hasWasm(): boolean;
/**
* 检查是否支持WebWorker
*/
hasWebWorker(): boolean;
/**
* 检查是否支持WebGL
*/
hasWebGL(): boolean;
/**
* 检查是否支持SharedArrayBuffer
*/
hasSharedArrayBuffer(): boolean;
/**
* 检查是否支持特定的功能
* @param feature 功能名称
*/
supports(feature: string): boolean;
};
/**
* 数组分块
* @param array 要分块的数组
* @param chunkSize 每块大小
*/
export declare function chunk<T>(array: T[], chunkSize: number): T[][];
/**
* 安全解析JSON
* @param text JSON字符串
* @param fallback 解析失败时的默认值
*/
export declare function safeParseJSON<T = any>(text: string, fallback: T): T;
/**
* 限制值在指定范围内
* @param value 要限制的值
* @param min 最小值
* @param max 最大值
*/
export declare function clamp(value: number, min: number, max: number): number;
/**
* 等待加载图片
* @param url 图片URL
*/
export declare function loadImage(url: string): Promise<HTMLImageElement>;
/**
* 将Blob转换为Base64
* @param blob Blob对象
*/
export declare function blobToBase64(blob: Blob): Promise<string>;
/**
* 将Base64转换为Blob
* @param base64 Base64字符串
* @param contentType 内容类型
*/
export declare function base64ToBlob(base64: string, contentType?: string): Blob;
/**
* 获取媒体约束
* @param width 宽度
* @param height 高度
* @param facingMode 前后置摄像头
* @param frameRate 帧率
*/
export declare function getMediaConstraints(width?: number, height?: number, facingMode?: 'user' | 'environment', frameRate?: number): MediaStreamConstraints;
/**
* 检查URL是否有效
* @param url 要检查的URL
*/
export declare function isValidUrl(url: string): boolean;
/**
* DOM帮助函数
*/
export declare const dom: {
/**
* 创建元素
* @param tag 标签名
* @param attributes 属性
* @param children 子元素
*/
createElement<K extends keyof HTMLElementTagNameMap>(tag: K, attributes?: Record<string, any>, children?: (string | Node)[]): HTMLElementTagNameMap[K];
/**
* 查找元素
* @param selector 选择器
* @param parent 父元素
*/
find<E extends Element = Element>(selector: string, parent?: Document | Element): E | null;
/**
* 查找所有元素
* @param selector 选择器
* @param parent 父元素
*/
findAll<E_1 extends Element = Element>(selector: string, parent?: Document | Element): E_1[];
/**
* 添加事件监听器
* @param element 元素
* @param event 事件名称
* @param handler 处理函数
* @param options 选项
*/
on<K_1 extends keyof HTMLElementEventMap>(element: HTMLElement, event: K_1, handler: (event: HTMLElementEventMap[K_1]) => any, options?: AddEventListenerOptions): void;
/**
* 移除事件监听器
* @param element 元素
* @param event 事件名称
* @param handler 处理函数
* @param options 选项
*/
off<K_2 extends keyof HTMLElementEventMap>(element: HTMLElement, event: K_2, handler: (event: HTMLElementEventMap[K_2]) => any, options?: EventListenerOptions): void;
/**
* 设置样式
* @param element 元素
* @param styles 样式对象
*/
setStyles(element: HTMLElement, styles: Partial<CSSStyleDeclaration>): void;
/**
* 添加类名
* @param element 元素
* @param classNames 类名
*/
addClass(element: HTMLElement, ...classNames: string[]): void;
/**
* 移除类名
* @param element 元素
* @param classNames 类名
*/
removeClass(element: HTMLElement, ...classNames: string[]): void;
/**
* 判断是否包含类名
* @param element 元素
* @param className 类名
*/
hasClass(element: HTMLElement, className: string): boolean;
};