vtils
Version:
一个面向业务的 JavaScript/TypeScript 实用程序库。
180 lines (162 loc) • 4.21 kB
TypeScript
/**
* 第三方工具封装库。
*
* @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 { }