UNPKG

mira-app-server

Version:

Mira Server - standalone server application using mira-app-core

62 lines 3.12 kB
/** * 同步过滤器 * * 把原来散落在三处(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