mira-app-server
Version:
Mira Server - standalone server application using mira-app-core
62 lines • 3.12 kB
TypeScript
/**
* 同步过滤器
*
* 把原来散落在三处(LibraryWatcher chokidar ignored、LibraryWatcher.shouldIgnore、
* FsRouter scanDiskFiles)的硬编码忽略规则,统一成一份默认规则,并叠加用户在表单里
* 配置的「黑名单 / 白名单」(gitignore 语义)。
*
* 语义(与 .gitignore 一致):
* 1. 先算默认排除 + 用户黑名单 → 命中即视为「排除」
* 2. 再看白名单 → 命中则「强制包含」(覆盖第 1 步的排除)
* 3. 没命中黑名单的文件 → 直接包含
*
* 黑名单里支持以 `!` 开头的「反向规则」:直接把该项挪到白名单,符合 gitignore 直觉。
*
* 模式语法(.gitignore 风格的子集):
* - `*` 匹配单层任意字符(不含 `/`)
* - `**` 匹配多层任意字符(含 `/`)
* - `?` 匹配单个字符(不含 `/`)
* - `foo/` 目录前缀:匹配 foo 目录及其下所有内容
* - 普通字面量按原样匹配
* - 以 `#` 开头的行视为注释,空行忽略
*/
/** 默认排除规则(从原 3 处硬编码合并而来) */
export declare const DEFAULT_IGNORE_PATTERNS: readonly string[];
/** 库配置里 customFields 可能放同步过滤相关字段 */
export interface SyncFilterConfig {
/** 用户黑名单(多行文本,每行一个 glob) */
syncBlacklist?: string;
/** 用户白名单(多行文本,每行一个 glob,强制包含) */
syncWhitelist?: string;
}
export type ShouldSyncFn = (relPath: string) => boolean;
/**
* 把 glob 模式编译成一条正则。支持 `*` / `**` / `?`,对其它特殊字符做字面转义。
* `**` 匹配任意层级(含 `/`),`*` 与 `?` 不跨 `/`。
*/
export declare function globToRegExp(pattern: string): RegExp;
/**
* 解析多行 textarea 文本:去掉空行与 `#` 注释,提取以 `!` 开头的反向规则。
* @returns { include: 普通规则, reinclude: 以 ! 开头的反向规则(去掉 ! 后的正文) }
*/
export declare function parsePatternLines(raw: string | undefined | null): {
include: string[];
reinclude: string[];
};
/**
* 构造一个同步判定函数。
*
* @param customFields 库配置里的同步过滤字段
* @param extraIgnore 额外的黑名单规则(例如某些调用点临时需要追加排除)
*/
export declare function createSyncFilter(customFields?: SyncFilterConfig | undefined | null, extraIgnore?: string[]): ShouldSyncFn;
/** 单条 glob 匹配(暴露出来便于外部 / 测试使用) */
export declare function matchGlob(relPath: string, pattern: string): boolean;
/**
* 返回用于 fast-glob / chokidar 的「黑名单 glob 数组」(默认 + 用户黑名单)。
* 注意:fast-glob 的 ignore 只能表达「排除」,无法表达白名单的「强制包含」。
* 因此调用方在拿到 glob 结果后,还需用 createSyncFilter() 返回的 shouldSync
* 做一次白名单覆盖判定。
*/
export declare function getIgnoreGlobs(customFields?: SyncFilterConfig | undefined | null): string[];
//# sourceMappingURL=SyncFilter.d.ts.map