All files / src Config.ts

0% Statements 0/1
0% Branches 0/1
0% Functions 0/1
0% Lines 0/1

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49                                                                                                 
/*!
 * 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<T = unknown> {
  readonly options?: T;
  readonly excludePackages?: ReadonlyArray<string>;
  readonly includePackages?: ReadonlyArray<string>;
  readonly includeWorkspaceRoot?: boolean;
  readonly id?: string;
}
 
export interface RuleModule<X = unknown> {
  readonly check: (context: Context) => Promise<unknown> | unknown;
  readonly name: string;
  readonly id: string;
  readonly validateOptions: (options: X) => void;
  readonly printStats?: () => void;
  readonly ruleEntry: RuleEntry<X>;
}
 
export interface Config {
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
  readonly rules: RuleModule<any>[];
}
 
export type ConfigFn = (context: WorkspaceContext) => Promise<Config> | Config;
 
export interface Options {
  readonly verbose?: boolean;
  readonly fix?: boolean;
  readonly paths?: ReadonlyArray<string>;
  readonly silent?: boolean;
  readonly stats?: boolean;
}
 
export type ResolvedRule<X = unknown> = RuleModule<X>;
 
export interface ResolvedConfig extends Options {
  readonly rules: ReadonlyArray<ResolvedRule>;
}