{
  "version": 3,
  "sources": ["../src/index.ts", "../src/common-fs-types.ts"],
  "sourcesContent": ["export * from \"./base-api\";\nexport * from \"./common-fs-types\";\nexport * from \"./extended-api\";\nexport * from \"./path\";\n", "export type BufferEncoding =\n  | \"ascii\"\n  | \"utf8\"\n  | \"utf-8\"\n  | \"utf16le\"\n  | \"ucs2\"\n  | \"ucs-2\"\n  | \"base64\"\n  | \"latin1\"\n  | \"binary\"\n  | \"hex\";\n\nexport interface StatSyncOptions {\n  /**\n   * Whether an exception will be thrown if no file system entry exists, rather than returning `undefined`.\n   * @default true\n   */\n  throwIfNoEntry?: boolean;\n}\n\nexport type WriteFileOptions =\n  | {\n      encoding?: BufferEncoding | null;\n      mode?: number | string;\n      flag?: string;\n    }\n  | BufferEncoding\n  | null;\n\nexport type ReadFileOptions =\n  | {\n      encoding?: BufferEncoding | null;\n      flag?: string;\n    }\n  | BufferEncoding\n  | null;\n\nexport const FileSystemConstants = {\n  /**\n   * When passed as a flag to `copyFile` or `copyFileSync`,\n   * causes operation to fail if destination already exists.\n   */\n  COPYFILE_EXCL: 1,\n} as const;\n\nexport interface IDirectoryContents<T extends Uint8Array | string = string> {\n  [nodeName: string]: T | IDirectoryContents<T>;\n}\n\n/**\n * Subset of the original `fs.Dirent` class.\n */\nexport interface IDirectoryEntry {\n  /**\n   * Base name of the entry.\n   *\n   * @example `package.json`\n   */\n  name: string;\n\n  /**\n   * Whether the entry points to a file.\n   */\n  isFile(): boolean;\n\n  /**\n   * Whether the entry points to a directory.\n   */\n  isDirectory(): boolean;\n\n  /**\n   * Whether the entry is a symbolic link.\n   */\n  isSymbolicLink(): boolean;\n}\n\n/**\n * Subset of the original `fs.Stats` interface\n */\nexport interface IFileSystemStats {\n  /**\n   * The timestamp indicating the creation time of this file.\n   */\n  birthtime: Date;\n\n  /**\n   * The timestamp indicating the last time the file status was changed.\n   */\n  ctime: Date;\n\n  /**\n   * The timestamp indicating the last time this file was modified.\n   */\n  mtime: Date;\n\n  /**\n   * is the path pointing to a file\n   */\n  isFile(): boolean;\n\n  /**\n   * is the path pointing to a directory\n   */\n  isDirectory(): boolean;\n\n  /**\n   * is the path pointing to a symbolic link\n   */\n  isSymbolicLink(): boolean;\n}\n\n/**\n * Descriptor object for an existing file system path.\n */\nexport interface IFileSystemDescriptor {\n  /**\n   * Base name of the file system node.\n   *\n   * @example 'package.json'\n   */\n  name: string;\n\n  /**\n   * Absolute path to the file system node.\n   *\n   * @example '/path/to/package.json'\n   */\n  path: string;\n}\n\nexport interface IWalkOptions {\n  /**\n   * Optional file filtering function that receives a file descriptor and returns\n   * whether it should be included in the result.\n   *\n   * @default true returned for all files.\n   */\n  filterFile?(pathDesc: IFileSystemDescriptor): boolean;\n\n  /**\n   * Optional directory filtering function that receives a directory descriptor and returns\n   * whether it should be walked into.\n   *\n   * @default true returned for all directories.\n   */\n  filterDirectory?(pathDesc: IFileSystemDescriptor): boolean;\n}\n\nexport interface RmOptions {\n  /**\n   * When `true`, exceptions will be ignored if `path` does not exist.\n   * @default false\n   */\n  force?: boolean | undefined;\n\n  /**\n   * If `true`, perform a recursive directory removal.\n   * @default false\n   */\n  recursive?: boolean | undefined;\n}\n\nexport interface WatchOptions {\n  /**\n   * When watching a directory, also watch deeply nested children.\n   * @default false\n   */\n  recursive?: boolean;\n}\n\nexport type WatchChangeEventListener = (eventType: \"change\" | \"rename\", relativePath: string) => void;\n\nexport interface FSWatcher {\n  /**\n   * Stop watching for changes on the given `FSWatcher`. Once stopped, the `FSWatcher` object is no longer usable.\n   */\n  close(): void;\n\n  on(event: \"change\", listener: WatchChangeEventListener): this;\n  on(event: \"close\", listener: () => void): this;\n  on(event: \"error\", listener: (error: Error) => void): this;\n\n  off(event: \"change\", listener: WatchChangeEventListener): this;\n  off(event: \"close\", listener: () => void): this;\n  off(event: \"error\", listener: (error: Error) => void): this;\n}\n"],
  "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACqCO,IAAM,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKjC,eAAe;AACjB;",
  "names": []
}
