diff options
Diffstat (limited to 'js/write_file.ts')
-rw-r--r-- | js/write_file.ts | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/js/write_file.ts b/js/write_file.ts new file mode 100644 index 000000000..60c6ff6ab --- /dev/null +++ b/js/write_file.ts @@ -0,0 +1,54 @@ +// Copyright 2018 the Deno authors. All rights reserved. MIT license. +import * as fbs from "gen/msg_generated"; +import { flatbuffers } from "flatbuffers"; +import * as dispatch from "./dispatch"; + +/** + * Write a new file, with given filename and data synchronously. + * + * import { writeFileSync } from "deno"; + * + * const encoder = new TextEncoder("utf-8"); + * const data = encoder.encode("Hello world\n"); + * writeFileSync("hello.txt", data); + */ +export function writeFileSync( + filename: string, + data: Uint8Array, + perm = 0o666 +): void { + dispatch.sendSync(...req(filename, data, perm)); +} + +/** + * Write a new file, with given filename and data. + * + * import { writeFile } from "deno"; + * + * const encoder = new TextEncoder("utf-8"); + * const data = encoder.encode("Hello world\n"); + * await writeFile("hello.txt", data); + */ +export async function writeFile( + filename: string, + data: Uint8Array, + perm = 0o666 +): Promise<void> { + await dispatch.sendAsync(...req(filename, data, perm)); +} + +function req( + filename: string, + data: Uint8Array, + perm: number +): [flatbuffers.Builder, fbs.Any, flatbuffers.Offset] { + const builder = new flatbuffers.Builder(); + const filename_ = builder.createString(filename); + const dataOffset = fbs.WriteFile.createDataVector(builder, data); + fbs.WriteFile.startWriteFile(builder); + fbs.WriteFile.addFilename(builder, filename_); + fbs.WriteFile.addData(builder, dataOffset); + fbs.WriteFile.addPerm(builder, perm); + const msg = fbs.WriteFile.endWriteFile(builder); + return [builder, fbs.Any.WriteFile, msg]; +} |