/** 单次逐出的观察结果(供日志 | 诊断)。 */ export interface EsmCacheEviction { /** 是否可达一个带内部模块缓存的 loader。 */ loaderFound: boolean; /** 属于本包而被移除的 ESM 缓存条目数。 */ cleared: number; /** 缓存里的键总数(诊断用:0 表示缓存本身为空,非锚点问题)。 */ keys?: number; /** 其中与本包锚点匹配的键数(诊断用:见 keys 与 cleared 的差异)。 */ matched?: number; /** 不可达原因(诊断用)。 */ reason?: string; } /** 一次完整换血所需的缓存备份(失败时回滚,见 hot-reload.ts)。 */ export interface ModuleCacheBackup { /** ESM loadCache 条目:url → 原 ModuleJob。 */ esm: Map; /** CJS require.cache 条目:filepath → 原模块对象。 */ cjs: Map; } /** * 清掉本包的模块缓存,返回可回滚的备份。 * * 与 {@link evictOwnModuleCache} 的区别:这个函数面向「立刻要重新 import * 本包入口」的换血流(复刻官方 `partialReload` 的第 1 步),因此额外清理 * CJS `require.cache` 并把原值备份出来。 * * @param loader Cordis loader(`ctx.get('loader')`)。 * @returns 逐出统计 + 备份;不可达时 `backup` 为空表。 */ export declare function evictOwnModuleCacheForReload(loader: unknown): { eviction: EsmCacheEviction; backup: ModuleCacheBackup; }; /** 换血失败时把缓存恢复原状,避免把进程留在半清空状态。 */ export declare function restoreModuleCache(loader: unknown, backup: ModuleCacheBackup): void; export declare function evictOwnModuleCache(loader: unknown): EsmCacheEviction; //# sourceMappingURL=esm-cache.d.ts.map