import type { CLIMain } from '@teambit/cli'; import type { Workspace } from '@teambit/workspace'; import type { EnvsMain, Environment, ExecutionContext } from '@teambit/envs'; import type { LoggerMain, Logger } from '@teambit/logger'; import type { ConfigWriterEntry } from './config-writer-entry'; import type { EnvsWrittenExtendingConfigFiles, EnvsWrittenRealConfigFiles } from './writers'; /** * Configs that can be configured in the workspace.jsonc file */ export type WorkspaceConfigFilesAspectConfig = { /** * The root directory for real configuration files * This is usually under node_modules */ configsRootDir?: string; /** * The root directory for component files * We will hoist config files only up to this directory */ componentsRootDir?: string; /** * Whether to use the default directory as components root dir for configuration files * This will take the config from: * "teambit.workspace/workspace": { * "componentsRootDir": "bit-components/{scope}/{name}" * } * it will take the constant part from it, up until the first { */ useDefaultDirectory?: boolean; enableWorkspaceConfigWrite?: boolean; }; export type EnvConfigWriter = { envId: string; executionContext: ExecutionContext; configWriters: ConfigWriterEntry[]; }; export type EnvConfigWriterEntry = { envId: string; configWriter: ConfigWriterEntry; executionContext: ExecutionContext; }; export type EnvConfigWritersList = Array; export type CleanConfigFilesOptions = { silent?: boolean; dryRun?: boolean; writers?: string[]; }; export type WriteConfigFilesOptions = { clean?: boolean; silent?: boolean; dedupe?: boolean; dryRun?: boolean; throw?: boolean; writers?: string[]; }; export type CompPathExtendingHashMap = { [compPath: string]: string; }; export type EnvMapValue = { env: Environment; id: string[]; paths: string[]; }; export type EnvCompsDirsMap = { [envId: string]: EnvMapValue; }; export type OneConfigWriterIdResult = { writerId: string; totalWrittenFiles: number; realConfigFiles: EnvsWrittenRealConfigFiles; totalRealConfigFiles: number; extendingConfigFiles: EnvsWrittenExtendingConfigFiles; totalExtendingConfigFiles: number; }; export type WriteResults = { writersResult: OneConfigWriterIdResult[]; totalWrittenFiles: number; totalRealConfigFiles: number; totalExtendingConfigFiles: number; }; export type WriteConfigFilesResult = { cleanResults?: string[]; writeResults: WriteResults; wsDir: string; err?: Error; }; export declare class WorkspaceConfigFilesMain { private workspace; private envs; private logger; private config; private envsNotImplementing; constructor(workspace: Workspace, envs: EnvsMain, logger: Logger, config: WorkspaceConfigFilesAspectConfig); /** * It writes the configuration files for the workspace * for example: tsconfig, eslint config and prettier config files. * @param {WriteConfigFilesOptions} options - WriteConfigFilesOptions = {} * @returns An object with the following properties: * - writeResults: An object with the following properties: * - aspectsWritersResults: An array of objects with the following properties: * - aspect: The aspect that was written * - totalWrittenFiles: The number of files that were written * - totalWrittenFiles: The total number of files that were written * - cleanResults: array of deleted paths */ writeConfigFiles(options?: WriteConfigFilesOptions): Promise; /** * This will check the config.enableWorkspaceConfigWrite before writing the config files. */ writeConfigFilesIfEnabled(options?: WriteConfigFilesOptions): Promise; /** * It cleans (delete) the config files from the workspace. * This will check each file and will only delete it in case it was generated by bit * @param {CleanConfigFilesOptions} options - CleanConfigFilesOptions = {} * @returns An array of strings. */ cleanConfigFiles(options?: CleanConfigFilesOptions): Promise; /** * The function checks if the auto writing of workspace configuration is enabled. * if it's enabled we will re-generate the configuration files upon bit create * @returns the boolean value of `!!this.config.enableWorkspaceConfigWrite`. */ isWorkspaceConfigWriteEnabled(): boolean; /** * It returns a list of all the config writers that have been registered with the config writer slot * @returns An array of objects with aspectId and configWriter properties. */ listConfigWriters(): Promise; private groupByWriterId; private write; private handleOneIdWriter; private getConfigsRootDir; private getComponentsRootDirFromComponentsRootDir; private getComponentsRootDirFromDefaultDir; private getComponentsRootDir; private getCacheDir; private getExecContext; private getEnvComponentsDirsMap; private getConfigWriters; private getFlatConfigWriters; /** * Clean config files written by the config-writers * @param envsExecutionContext * @param param1 * @returns Array of paths of deleted config files */ clean({ dryRun, silent, writers }: WriteConfigFilesOptions): Promise; private calcPathsToClean; private addToEnvsNotImplementing; getEnvsNotImplementing(): string[]; private promptForCleaning; private deleteFiles; static slots: never[]; static dependencies: import("@teambit/harmony").Aspect[]; static runtime: import("@teambit/harmony").RuntimeDefinition; static defaultConfig: Partial; static provider([cli, workspace, envs, loggerAspect]: [CLIMain, Workspace, EnvsMain, LoggerMain], config: WorkspaceConfigFilesAspectConfig): Promise; } export default WorkspaceConfigFilesMain;