///
import { Minimatch } from 'minimatch';
export interface KnownProps {
end_of_line?: 'lf' | 'crlf' | 'unset';
indent_style?: 'tab' | 'space' | 'unset';
indent_size?: number | 'tab' | 'unset';
insert_final_newline?: true | false | 'unset';
tab_width?: number | 'unset';
trim_trailing_whitespace?: true | false | 'unset';
charset?: string | 'unset';
}
interface UnknownMap {
[index: string]: unknown;
}
export type Props = KnownProps & UnknownMap;
export interface ECFile {
name: string;
contents?: Buffer;
}
type SectionGlob = Minimatch | null;
type GlobbedProps = [SectionName, Props, SectionGlob][];
export interface ProcessedFileConfig {
root: boolean;
name: string;
config: GlobbedProps;
notfound?: true;
}
export interface Visited {
fileName: string;
glob: string;
}
export interface Cache {
get(path: string): ProcessedFileConfig | undefined;
set(path: string, config: ProcessedFileConfig): this;
}
export interface ParseOptions {
config?: string;
version?: string;
root?: string;
files?: Visited[];
cache?: Cache;
}
export type SectionName = string | null;
export interface SectionBody {
[key: string]: string;
}
export type ParseStringResult = [SectionName, SectionBody][];
/**
* Parse a buffer using the faster one-ini WASM approach into something
* relatively easy to deal with in JS.
*
* @param data UTF8-encoded bytes.
* @returns Parsed contents. Will be truncated if there was a parse error.
*/
export declare function parseBuffer(data: Buffer): ParseStringResult;
/**
* Parses a string. If possible, you should always use ParseBuffer instead,
* since this function does a UTF16-to-UTF8 conversion first.
*
* @param data String to parse.
* @returns Parsed contents. Will be truncated if there was a parse error.
* @deprecated Use {@link ParseBuffer} instead.
*/
export declare function parseString(data: string): ParseStringResult;
/**
* Low-level interface, which exists only for backward-compatibility.
* Deprecated.
*
* @param filepath The name of the target file, relative to process.cwd().
* @param files A promise for a list of objects describing the files.
* @param options All options
* @returns The properties found for filepath
* @deprecated
*/
export declare function parseFromFiles(filepath: string, files: Promise, options?: ParseOptions): Promise;
/**
* Low-level interface, which exists only for backward-compatibility.
* Deprecated.
*
* @param filepath The name of the target file, relative to process.cwd().
* @param files A list of objects describing the files.
* @param options All options
* @returns The properties found for filepath
* @deprecated
*/
export declare function parseFromFilesSync(filepath: string, files: ECFile[], options?: ParseOptions): Props;
/**
* Find all of the properties from matching sections in config files in the
* same directory or toward the root of the filesystem.
*
* @param filepath The target file name, relative to process.cwd().
* @param options All options
* @returns Combined properties for the target file
*/
export declare function parse(filepath: string, options?: ParseOptions): Promise;
/**
* Find all of the properties from matching sections in config files in the
* same directory or toward the root of the filesystem. Synchronous.
*
* @param filepath The target file name, relative to process.cwd().
* @param options All options
* @returns Combined properties for the target file
*/
export declare function parseSync(filepath: string, options?: ParseOptions): Props;
export {};