UNPKG

1.58 kBTypeScriptView Raw
1// Type definitions for write 2.0
2// Project: https://github.com/jonschlinkert/write
3// Definitions by: Junxiao Shi <https://github.com/yoursunny>
4// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
5// TypeScript Version: 3.5
6
7/// <reference types="node" />
8import * as fs from "fs";
9
10type Data = string|Buffer|Uint8Array;
11
12interface CommonOptions {
13 newline?: boolean | undefined;
14 overwrite?: boolean | undefined;
15 increment?: boolean | undefined;
16}
17
18type Options = Omit<fs.WriteFileOptions, "encoding"> &
19 Omit<fs.MakeDirectoryOptions, "recursive"> &
20 CommonOptions;
21
22type CreateWriteStreamOptions = Extract<Parameters<typeof fs.createWriteStream>[1], Record<string, any>>;
23
24type StreamOptions = Omit<CreateWriteStreamOptions, "encoding"> &
25 Omit<fs.MakeDirectoryOptions, "recursive"> &
26 CommonOptions;
27
28interface Result<T extends Data> {
29 path: string;
30 data: T;
31}
32
33type Callback<T extends Data> = (err: Error|null, result?: Result<T>) => any;
34
35declare function write<T extends Data>(filepath: string, data: T, options: Options, callback: Callback<T>): void;
36declare function write<T extends Data>(filepath: string, data: T, callback: Callback<T>): void;
37declare function write<T extends Data>(filepath: string, data: T, options?: Options): Promise<Result<T>>;
38
39declare namespace write {
40 function sync<T extends Data>(filepath: string, data: T, options?: Options): Result<T>;
41
42 function stream(filepath: string, options?: StreamOptions): fs.WriteStream;
43}
44
45export = write;