diff options
author | Kevin (Kun) "Kassimo" Qian <kevinkassimo@gmail.com> | 2018-09-11 09:00:57 -0700 |
---|---|---|
committer | Ryan Dahl <ry@tinyclouds.org> | 2018-09-11 12:00:57 -0400 |
commit | 05f87a0cf23a370c0009db8343b3770b518799c8 (patch) | |
tree | b2279e3257382ea1c1ec8c259e9fecdac9e78820 /js/write_file.ts | |
parent | c2663e1d82521e9b68a7e2e96197030a4ee00c30 (diff) |
Move writeFileSync to write_file.ts, add writeFile and tests (#728)
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]; +} |