@bililive-tools/manager
Version:
Batch scheduling recorders
74 lines (73 loc) • 3.73 kB
TypeScript
import { DebouncedFunc } from "lodash-es";
export type AnyObject = Record<string, any>;
export type UnknownObject = Record<string, unknown>;
export type PickRequired<T, K extends keyof T> = T & Pick<Required<T>, K>;
export declare function asyncThrottle(fn: () => Promise<void>, time: number, opts?: {
immediateRunWhenEndOfDefer?: boolean;
}): DebouncedFunc<() => void>;
export declare function replaceExtName(filePath: string, newExtName: string): string;
/**
* 接收 fn ,返回一个和 fn 签名一致的函数 fn'。当已经有一个 fn' 在运行时,再调用
* fn' 会直接返回运行中 fn' 的 Promise,直到 Promise 结束 pending 状态
*/
export declare function singleton<Fn extends (...args: any) => Promise<any>>(fn: Fn): Fn;
/**
* 从数组中按照特定算法提取一些值(允许同个索引重复提取)。
* 算法的行为类似 flex 的 space-between。
*
* examples:
* ```
* console.log(getValuesFromArrayLikeFlexSpaceBetween([1, 2, 3, 4, 5, 6, 7], 1))
* // [1]
* console.log(getValuesFromArrayLikeFlexSpaceBetween([1, 2, 3, 4, 5, 6, 7], 3))
* // [1, 4, 7]
* console.log(getValuesFromArrayLikeFlexSpaceBetween([1, 2, 3, 4, 5, 6, 7], 4))
* // [1, 3, 5, 7]
* console.log(getValuesFromArrayLikeFlexSpaceBetween([1, 2, 3, 4, 5, 6, 7], 11))
* // [1, 1, 2, 3, 3, 4, 5, 5, 6, 7, 7]
* ```
*/
export declare function getValuesFromArrayLikeFlexSpaceBetween<T>(array: T[], columnCount: number): T[];
export declare function ensureFolderExist(fileOrFolderPath: string): void;
export declare function assert(assertion: unknown, msg?: string): asserts assertion;
export declare function assertStringType(data: unknown, msg?: string): asserts data is string;
export declare function assertNumberType(data: unknown, msg?: string): asserts data is number;
export declare function assertObjectType(data: unknown, msg?: string): asserts data is object;
export declare function formatDate(date: Date, format: string): string;
export declare function removeSystemReservedChars(filename: string): string;
export declare function isFfmpegStartSegment(line: string): boolean;
export declare function isFfmpegStart(line: string): boolean;
export declare const formatTemplate: (string: string, ...args: any[]) => string;
export declare function createInvalidStreamChecker(count?: number): (ffmpegLogLine: string) => boolean;
export declare function createTimeoutChecker(onTimeout: () => void, time: number): {
update: () => void;
stop: () => void;
};
export declare function downloadImage(imageUrl: string, savePath: string): Promise<void>;
/**
* 根据指定的顺序对对象数组进行排序
* @param objects 要排序的对象数组
* @param order 指定的顺序
* @param key 用于排序的键
* @returns 排序后的对象数组
*/
export declare function sortByKeyOrder<T, K extends keyof T>(objects: T[], order: T[K][], key: K): T[];
declare const _default: {
replaceExtName: typeof replaceExtName;
singleton: typeof singleton;
getValuesFromArrayLikeFlexSpaceBetween: typeof getValuesFromArrayLikeFlexSpaceBetween;
ensureFolderExist: typeof ensureFolderExist;
assert: typeof assert;
assertStringType: typeof assertStringType;
assertNumberType: typeof assertNumberType;
assertObjectType: typeof assertObjectType;
asyncThrottle: typeof asyncThrottle;
isFfmpegStartSegment: typeof isFfmpegStartSegment;
createInvalidStreamChecker: typeof createInvalidStreamChecker;
createTimeoutChecker: typeof createTimeoutChecker;
downloadImage: typeof downloadImage;
md5: (str: string) => string;
uuid: () => `${string}-${string}-${string}-${string}-${string}`;
sortByKeyOrder: typeof sortByKeyOrder;
};
export default _default;