confinode
Version:
Node application configuration reader
63 lines (62 loc) • 1.97 kB
TypeScript
import FileDescription from '../FileDescription';
import { LoaderDescription } from '../Loader';
import { Message } from '../messages';
/**
* The options for confinode, without the mode.
*/
interface ConfinodeOptionsWithoutMode {
/**
* Indicate if the search or load result should be cached.
*/
cache: boolean;
/**
* The folder where configuration file search should stop.
*/
searchStop: string;
/**
* Extra paths to search for loader modules.
*/
modulePaths: string | string[];
/**
* The logger. Default logger will simply display warnings to the console.
*/
logger: (message: Message<any>) => void;
/**
* Configuration file names, or default file names filter.
*/
files: FileDescription[] | Array<(files: FileDescription[]) => FileDescription[]>;
/**
* The custom loaders, if needed.
*/
customLoaders: {
[name: string]: LoaderDescription;
};
}
/**
* Type guard to check if file names are actually filters rather than real file descriptions.
*
* @param files - The variable to check.
* @returns True if files are actually a filter array.
*/
export declare function filesAreFilters(files: FileDescription[] | Array<(fileDescriptions: FileDescription[]) => FileDescription[]>): files is Array<(fileDescriptions: FileDescription[]) => FileDescription[]>;
/**
* Some default configuration options.
*/
export declare const defaultConfig: Partial<ConfinodeOptionsWithoutMode>;
/**
* The definitive options, ready to be used by the application.
*/
export interface ConfinodeParameters extends ConfinodeOptionsWithoutMode {
modulePaths: string[];
files: FileDescription[];
mode: 'async' | 'sync';
}
/**
* The options for confinode.
*/
declare type ConfinodeOptions<M extends 'async' | 'sync'> = Partial<ConfinodeOptionsWithoutMode> & (M extends 'async' ? {
mode?: M;
} : {
mode: M;
});
export default ConfinodeOptions;