import type { Logger } from '../logger'; import type { BasicPlugin } from './types'; export type CPanyFetchPlugin = CachePlugin | FetchPlugin | QueryPlugin; // Cache manipulation export interface CachePlugin extends BasicPlugin { cache: (context: FetchContext) => Promise; } // Fetch a single file export interface FetchPlugin extends BasicPlugin { fetch: (context: FetchContext) => Promise; } // Query export interface QueryPlugin extends BasicPlugin { query: ( payload: string, context: FetchContext ) => Promise; } export interface FetchContext { logger: Logger; readJsonFile: (filename: string) => Promise; readJsonDir: (rootDir: string) => Promise; listDir: (rootDir: string) => Promise; writeFile: (content: string, filename: string) => Promise; removeFile: (filename: string) => Promise; } export interface FetchResult { filename: string; content: string; }