summaryrefslogtreecommitdiff
path: root/cli/rt/30_files.js
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2020-12-13 19:45:53 +0100
committerGitHub <noreply@github.com>2020-12-13 19:45:53 +0100
commit2e74f164b6dcf0ecbf8dd38fba9fae550d784bd0 (patch)
tree61abe8e09d5331ace5d9de529f0e2737a8e05dbb /cli/rt/30_files.js
parent84ef9bd21fb48fb6b5fbc8dafc3de9f361bade3b (diff)
refactor: deno_runtime crate (#8640)
This commit moves Deno JS runtime, ops, permissions and inspector implementation to new "deno_runtime" crate located in "runtime/" directory. Details in "runtime/README.md". Co-authored-by: Ryan Dahl <ry@tinyclouds.org>
Diffstat (limited to 'cli/rt/30_files.js')
-rw-r--r--cli/rt/30_files.js209
1 files changed, 0 insertions, 209 deletions
diff --git a/cli/rt/30_files.js b/cli/rt/30_files.js
deleted file mode 100644
index 679b184fd..000000000
--- a/cli/rt/30_files.js
+++ /dev/null
@@ -1,209 +0,0 @@
-// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
-
-((window) => {
- const core = window.Deno.core;
- const { read, readSync, write, writeSync } = window.__bootstrap.io;
- const { pathFromURL } = window.__bootstrap.util;
-
- function seekSync(
- rid,
- offset,
- whence,
- ) {
- return core.jsonOpSync("op_seek_sync", { rid, offset, whence });
- }
-
- function seek(
- rid,
- offset,
- whence,
- ) {
- return core.jsonOpAsync("op_seek_async", { rid, offset, whence });
- }
-
- function openSync(
- path,
- options = { read: true },
- ) {
- checkOpenOptions(options);
- const mode = options?.mode;
- const rid = core.jsonOpSync(
- "op_open_sync",
- { path: pathFromURL(path), options, mode },
- );
-
- return new File(rid);
- }
-
- async function open(
- path,
- options = { read: true },
- ) {
- checkOpenOptions(options);
- const mode = options?.mode;
- const rid = await core.jsonOpAsync(
- "op_open_async",
- { path: pathFromURL(path), options, mode },
- );
-
- return new File(rid);
- }
-
- function createSync(path) {
- return openSync(path, {
- read: true,
- write: true,
- truncate: true,
- create: true,
- });
- }
-
- function create(path) {
- return open(path, {
- read: true,
- write: true,
- truncate: true,
- create: true,
- });
- }
-
- class File {
- #rid = 0;
-
- constructor(rid) {
- this.#rid = rid;
- }
-
- get rid() {
- return this.#rid;
- }
-
- write(p) {
- return write(this.rid, p);
- }
-
- writeSync(p) {
- return writeSync(this.rid, p);
- }
-
- read(p) {
- return read(this.rid, p);
- }
-
- readSync(p) {
- return readSync(this.rid, p);
- }
-
- seek(offset, whence) {
- return seek(this.rid, offset, whence);
- }
-
- seekSync(offset, whence) {
- return seekSync(this.rid, offset, whence);
- }
-
- close() {
- core.close(this.rid);
- }
- }
-
- class Stdin {
- constructor() {
- }
-
- get rid() {
- return 0;
- }
-
- read(p) {
- return read(this.rid, p);
- }
-
- readSync(p) {
- return readSync(this.rid, p);
- }
-
- close() {
- core.close(this.rid);
- }
- }
-
- class Stdout {
- constructor() {
- }
-
- get rid() {
- return 1;
- }
-
- write(p) {
- return write(this.rid, p);
- }
-
- writeSync(p) {
- return writeSync(this.rid, p);
- }
-
- close() {
- core.close(this.rid);
- }
- }
-
- class Stderr {
- constructor() {
- }
-
- get rid() {
- return 2;
- }
-
- write(p) {
- return write(this.rid, p);
- }
-
- writeSync(p) {
- return writeSync(this.rid, p);
- }
-
- close() {
- core.close(this.rid);
- }
- }
-
- const stdin = new Stdin();
- const stdout = new Stdout();
- const stderr = new Stderr();
-
- function checkOpenOptions(options) {
- if (Object.values(options).filter((val) => val === true).length === 0) {
- throw new Error("OpenOptions requires at least one option to be true");
- }
-
- if (options.truncate && !options.write) {
- throw new Error("'truncate' option requires 'write' option");
- }
-
- const createOrCreateNewWithoutWriteOrAppend =
- (options.create || options.createNew) &&
- !(options.write || options.append);
-
- if (createOrCreateNewWithoutWriteOrAppend) {
- throw new Error(
- "'create' or 'createNew' options require 'write' or 'append' option",
- );
- }
- }
-
- window.__bootstrap.files = {
- stdin,
- stdout,
- stderr,
- File,
- create,
- createSync,
- open,
- openSync,
- seek,
- seekSync,
- };
-})(this);