UNPKG

vtils

Version:

一个面向业务的 JavaScript/TypeScript 实用程序库。

180 lines (162 loc) 4.21 kB
/** * 第三方工具封装库。 * * @packageDocumentation */ /// <reference types="node" /> import { BinaryLike } from 'crypto'; import { CookieJar } from 'tough-cookie'; import { J2xOptionsOptional } from 'fast-xml-parser'; import Redis from 'ioredis'; import { X2jOptionsOptional } from 'fast-xml-parser'; /** * 创建 XML 文本。 * * @param data 数据 * @param options 选项 */ export declare function createXml(data: any, options?: J2xOptionsOptional): string; export declare namespace createXml { var array: <T = any>(value: T[]) => any; var attr: <T = any>(value: T) => any; var text: <T = any>(value: T) => any; var cdata: <T = any>(value: T) => any; } /** * 生成 CUID。 * * @see https://www.npmjs.com/package/cuid */ export declare function cuid(): string; /** * 生成 Cuid2。 * * @param length 长度,默认: 24 * @see https://github.com/paralleldrive/cuid2 */ export declare function cuid2(length?: number): string; /** * 生成一个 [nanoid](https://github.com/ai/nanoid/)。 * * @param size 生成的 ID 长度,默认 21 * @example * ```typescript * nanoid() // => "Uakgb_J5m9g-0JDMbcJqL" * ``` */ export declare function nanoid(size?: number): string; /** * 解析 XML 文本。 * * @param text XML 文本 * @param options 选项 */ export declare function parseXml<T>(text: string, options?: X2jOptionsOptional): T; /** * 使用 Redis 作为 Cookie Jar。 */ export declare class RedisCookieJar extends CookieJar { private static prefix; constructor(options: RedisCookieJarOptions); } export declare interface RedisCookieJarOptions extends CookieJar.Options { /** * 唯一的键名。 */ key: string; /** * Redis 实例或选项,内部使用 `ioredis`。 */ redis: Redis.Redis | Redis.RedisOptions; } /** * 获取给定值的 sha1 哈希。 * * @param value 给定值 */ export declare function sha1(value: BinaryLike): string; /** * 生成 RFC4122 V4 版本的 UUID。 * * @see https://www.npmjs.com/package/uuid */ export declare function uuid(): string; /** * 微信公众号消息加解密。 */ export declare class WechatMessageCrypto { private options; private aesKey; private iv; constructor(options: WechatMessageCryptoOptions); /** * 加密原始消息。 * * @param msg 原始消息 */ encryptMsg(msg: string): string; /** * 签名。 * * @param options 选项 */ sign(options: WechatMessageCryptoSignOptions): string; /** * 签名加密后的消息。 * * @param encryptedMsg 加密后的消息 */ signEncryptedMsg(encryptedMsg: string): WechatMessageCryptoSignEncryptedMsgResult; /** * 签名加密后的消息并返回封装好的 XML。 * * @param encryptedMsg 加密后的消息 */ signEncryptedMsgAsXml(encryptedMsg: string): string; /** * 检查签名是否正确。 * * @param signature 要验证的签名 * @param payload 载荷 */ checkSignature(signature: string, payload: WechatMessageCryptoSignOptions): boolean; /** * 解密加密后的消息。 * * @param encryptedMsg 加密后的消息 */ decryptEncryptedMsg(encryptedMsg: string): string; /** * 解密加密后的消息并作为 XML 解码返回。 * * @param encryptedMsg 加密后的消息 */ decryptEncryptedMsgAsXml<T>(encryptedMsg: string): T; private PKCS7Decode; private PKCS7Encode; } export declare interface WechatMessageCryptoOptions { /** 公众号/第三方平台的 APPID */ appId: string; /** 消息校验口令 */ token: string; /** 消息加解密密钥 */ encodingAESKey: string; } export declare interface WechatMessageCryptoSignEncryptedMsgResult { /** Unix 时间戳 */ timestamp: number; /** 随机字符串 */ nonceStr: string; /** 签名 */ signature: string; } export declare interface WechatMessageCryptoSignOptions { /** Unix 时间戳 */ timestamp: number; /** 随机字符串 */ nonceStr: string; /** 加密后的消息 */ encryptedMsg: string; } export { }