<commit_before>export type ProjectConfig =
    | string
    | {
          path: string;
          watch?: boolean;
          compiler?: string;
      };

export type MtscConfig = {
    debug?: boolean;
    watch?: boolean;
    compiler?: string;
    projects: ProjectConfig[];
};
<commit_msg>Add tslint options to config + explaination comments<commit_after>// Tsconfig is only allowed for project tslint settings
export type TslintCfg =
    | boolean // Enable tslint? Will search in project specific folder or global tslint file (will search to tslint.json if not provided)
    | string // Rules file
    | TslintCfgObject & {
          // Will search in project specific folder or else in root dir to tsconfig.json if not provided. NOTE: Must be a file name (not a full path).
          tsconfig?: string;
      };

export type TslintCfgObject = {
    // Default value is true
    enabled?: boolean;
    // Default value is false
    autofix?: boolean;
    // Will search in project specific folder or else in root dir to tslint.json if not provided. NOTE: Must be a file name (not a full path).
    rulesFile?: string;
};

export type ProjectConfig =
    | string // Project path (doesn't have to be path/tsconfig.json but is recommended)
    | {
          // Project path (doesn't have to be path/tsconfig.json but is recommended)
          path: string;
          // Watch this project? Default is true, since that is the whole purpose of creating mtsc
          watch?: boolean;
          tslint?: TslintCfg;
          // Path to the executable tsc
          compiler?: string;
      };

// Specific settings win from global settings. Global settings can be seen as default settings for each project.
export type MtscConfig = {
    // Use MTSC Debug for extensive logging of what is happening
    debug?: boolean;
    // Default: watch project (default value is true)
    watch?: boolean;
    // Default: Enabled | Rulesfile | TslintConfigObject
    tslint?: boolean | string | TslintCfgObject;
    // Default: Path to the executable tsc
    compiler?: string;
    projects: ProjectConfig[];
};

{'fraction_non_alphanumeric': 0.08087535680304472, 'fraction_numerical': 0.0, 'mean_word_length': 2.607204116638079, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6478163', 'n_tokens_mistral': 555, 'n_tokens_neox': 546, 'n_words': 245}