@kazura/node-util
Version:
147 lines (139 loc) • 4.41 kB
TypeScript
import { PackageJson } from 'pkg-types';
import { ValidTotpConfig, TotpConfig } from 'time2fa';
import { WorkerOptions as WorkerOptions$1 } from 'worker_threads';
declare class GitUtil {
readonly repositoryPath: string;
constructor(repositoryPath: string);
private changeDirectory;
getBranchName(): Promise<string>;
getShortCommitId(): Promise<string>;
getCommitId(): Promise<string>;
getUserName(): Promise<string>;
getUserEmail(): Promise<string>;
add(file: string): Promise<void>;
addAll(): Promise<void>;
commit(message: string): Promise<void>;
commitAll(message: string): Promise<void>;
submodulesUpdateInit(): Promise<void>;
pullRebaseOrigin(): Promise<void>;
pullNoRebaseOrigin(): Promise<void>;
checkout(branch: string): Promise<void>;
checkoutOrigin(branch: string): Promise<void>;
pushOrigin(localBranch: string, remoteBranch?: string): Promise<void>;
}
declare class TotpBase {
readonly config: ValidTotpConfig;
constructor(config?: TotpConfig);
generateSecret(): string;
generatePasscodes(secret: string): string;
validate(passcode: string, secret: string): boolean;
generateUrl(issuer: string, user: string, secret: string): string;
}
declare const Totp: TotpBase;
/**
* 压缩目录为 zip 文件
* @param sourceDir 要压缩的目录
* @param outPath 输出的 zip 文件路径
*/
declare function zip(sourceDir: string, outPath: string): Promise<void>;
/**
* 解压 zip 文件到指定目录
* @param zipFilePath ZIP 文件路径
* @param outDir 解压到的目录
*/
declare function unzip(zipFilePath: string, outDir: string): Promise<void>;
interface WorkerOptions extends WorkerOptions$1 {
/**
* 最大并发数 (默认为 CPU 核心数 - 1)
*/
max?: number;
}
declare class Worker<Args extends any[], Ret = any> {
private filename;
private options;
/**
* 工作线程池
*/
private pool;
/**
* 空闲的线程
*/
private idlePool;
/**
* 等待的任务
*/
private queue;
constructor(filename: string | URL, options?: WorkerOptions);
run(...args: Args): Promise<Ret>;
/**
* 停止所有工作线程
*/
stop(): void;
/**
* 获取可用的工作线程
* @returns
*/
private getAvailableWorker;
/**
* 分配完成的工作线程
* @param worker
* @returns
*/
private assignDoneWorker;
}
/**
* 任务工作者
*
* @example
* ```typescript
* class Demo extends TaskWorker<[number, number], number> {
* public async doWork(a: number, b: number): Promise<number> {
* return a + b
* }
*
* new Demo()
*
* ```
*
*/
declare abstract class TaskWorker<Args extends any[], Ret = any> {
readonly workerData: any;
constructor();
abstract doWork(...args: Args): Ret | Promise<Ret>;
}
interface LookupFileOptions {
/**
* 如果设置为 true,则表示只返回文件的完整路径,而不返回文件内容。如果未指定或设置为 false,则返回文件的内容。
*/
pathOnly?: boolean;
/**
* 查找文件时的根目录。只有当父目录与 rootDir 匹配或是根目录时,函数才会继续向上查找文件。
*/
rootDir?: string;
/**
* 用于检查文件是否符合特定条件。只有当文件满足这个条件时,函数才会返回结果。
* @param file
* @returns
*/
predicate?: (file: string) => boolean;
}
/**
* 用于在文件系统中查找特定文件
* @param dir 要在其中查找文件的起始目录。
* @param formats 要查找的文件的数组。函数将遍历这些格式,直到找到匹配的文件为止。
* @param options
* @returns
*/
declare function lookupFile(dir: string, formats: string[], options?: LookupFileOptions): string | undefined;
declare function getPkgJson(root: string): PackageJson;
declare function getPkgName(name: string): string;
/**
* 将指定内容写入文件
* @param filename
* @param content
*/
declare function writeFile(filename: string, content: string | Uint8Array): void;
declare function md5(text: string): string;
declare function getHash(text: string): string;
export { GitUtil, TaskWorker, Totp, TotpBase, Worker, getHash, getPkgJson, getPkgName, lookupFile, md5, unzip, writeFile, zip };
export type { LookupFileOptions, WorkerOptions };