// Type definitions for mem-fs-editor 7.0 // Project: https://github.com/SBoudrias/mem-fs-editor#readme // Definitions by: My Food Bag // Jason Kwok // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.4 /// import { Data as TemplateData, Options as TemplateOptions } from "ejs"; import { GlobbyOptions as GlobOptions } from "globby"; import { JSONSchema7Type } from "json-schema"; import { Store } from "mem-fs"; import { Transform } from "stream"; import * as File from "vinyl"; export function create(store: Store): Editor; // #region Editor export interface Editor { read(filepath: string, options?: ReadStringOptions): string; read(filepath: string, options: ReadRawOptions): ReadRawContents; readJSON(filepath: string): JSONSchema7Type | undefined; readJSON(filepath: string, defaults: JSONSchema7Type): JSONSchema7Type; write(filepath: string, contents: WriteContents): string; writeJSON(filepath: string, contents: any, replacer?: WriteJsonReplacer, space?: WriteJsonSpace): string; append(filepath: string, contents: WriteContents, options?: AppendOptions): string; extendJSON(filepath: string, contents: any, replacer?: WriteJsonReplacer, space?: WriteJsonSpace): void; delete(filepath: FilePaths, options?: WithGlobOptions): void; copy( from: FilePaths, to: string, options?: CopyOptions, context?: TemplateData, templateOptions?: TemplateOptions, ): void; copyTpl( from: FilePaths, to: string, context?: TemplateData, templateOptions?: TemplateOptions, copyOptions?: CopyOptions, ): void; move(from: FilePaths, to: string, options?: WithGlobOptions): void; exists(filepath: string): boolean; commit(callback: CommitCallback): void; commit(filters: ReadonlyArray, callback: CommitCallback): void; } export interface WithGlobOptions { globOptions?: GlobOptions | undefined; } type FilePaths = string | string[]; // #region Editor#read export interface ReadStringOptions { raw?: false | undefined; defaults?: string | undefined; } export interface ReadRawOptions { raw: true; defaults?: ReadRawContents | undefined; } type ReadRawContents = Exclude; // #endregion // #region Editor#write type WriteContents = string | Buffer; // #endregion // #region Editor#writeJSON type WriteJsonReplacer = ((key: string, value: any) => any) | Array; type WriteJsonSpace = number | string; // #endregion // #region Editor#append export interface AppendOptions { trimEnd?: boolean | undefined; separator?: string | undefined; } // #endregion // #region Editor#copy export interface CopyOptions extends WithGlobOptions { ignoreNoMatch?: boolean | undefined; process?: ProcessingFunction | undefined; processDestinationPath?: ((path: string) => string) | undefined; } export type ProcessingFunction = (contents: Buffer, path: string) => WriteContents; // #endregion // #region Editor#commit type CommitCallback = (err: any) => void; // #endregion // #endregion export {};