UNPKG

id-scanner-lib

Version:

Browser-based ID card, QR code, and face recognition scanner with liveness detection

176 lines (175 loc) 5.09 kB
/** * @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; };