import { WeakLRUCache } from 'weak-lru-cache'; import { RegulationSolution, SpartitoMeasure } from '../../src/starry'; const lruCache = new WeakLRUCache(); interface SolutionStore { get: (key: string) => Promise; set: (key: string, val: RegulationSolution) => Promise; batchGet: (keys: string[]) => Promise; } // 默认store const DefaultSolutionStore: SolutionStore = { async get(key: string) { return lruCache.getValue(key) as RegulationSolution; }, async set(key: string, val: RegulationSolution) { lruCache.setValue(key, val); }, async batchGet(keys: string[]) { return keys.map((key) => lruCache.getValue(key) as RegulationSolution); }, }; const enum MeasureStatus { Discard = -1, Solved = 0, Issue = 1, Fatal = 2, } interface IssueMeasure { scoreId: string; measureIndex: number; measure: SpartitoMeasure; status: MeasureStatus; } type SaveIssueMeasure = (data: Omit) => void; export { SolutionStore, DefaultSolutionStore, MeasureStatus, IssueMeasure, SaveIssueMeasure };