/*! * Copyright 2019 Palantir Technologies, Inc. * * Licensed under the MIT license. See LICENSE file in the project root for details. * */ import { Context } from "./Context.js"; import { WorkspaceContext } from "./WorkspaceContext.js"; // TODO: extract all these types to their own files export interface RuleEntry { readonly options?: T; readonly excludePackages?: ReadonlyArray; readonly includePackages?: ReadonlyArray; readonly includeWorkspaceRoot?: boolean; readonly id?: string; } export interface RuleModule { readonly check: (context: Context) => Promise | unknown; readonly name: string; readonly id: string; readonly validateOptions: (options: X) => void; readonly printStats?: () => void; readonly ruleEntry: RuleEntry; } export interface Config { // eslint-disable-next-line @typescript-eslint/no-explicit-any readonly rules: RuleModule[]; } export type ConfigFn = (context: WorkspaceContext) => Promise | Config; export interface Options { readonly verbose?: boolean; readonly fix?: boolean; readonly paths?: ReadonlyArray; readonly silent?: boolean; readonly stats?: boolean; } export type ResolvedRule = RuleModule; export interface ResolvedConfig extends Options { readonly rules: ReadonlyArray; }