summaryrefslogtreecommitdiff
path: root/runtime/js
diff options
context:
space:
mode:
authorAsher Gomez <ashersaupingomez@gmail.com>2024-09-06 18:28:05 +1000
committerGitHub <noreply@github.com>2024-09-06 18:28:05 +1000
commitd8f3123c365d17bfb0f73431160dcb1a2af19c32 (patch)
tree5c42703ee742a71506eff63e5edab9794f34ee11 /runtime/js
parent7937ae3f2f5a8c11f52c42676ba56d12fcb59aeb (diff)
BREAKING(buffer): remove `Deno.Buffer` (#25441)
Towards #22079 --------- Signed-off-by: Asher Gomez <ashersaupingomez@gmail.com>
Diffstat (limited to 'runtime/js')
-rw-r--r--runtime/js/13_buffer.js237
-rw-r--r--runtime/js/90_deno_ns.js4
-rw-r--r--runtime/js/99_main.js3
3 files changed, 0 insertions, 244 deletions
diff --git a/runtime/js/13_buffer.js b/runtime/js/13_buffer.js
deleted file mode 100644
index 4d3f08d4d..000000000
--- a/runtime/js/13_buffer.js
+++ /dev/null
@@ -1,237 +0,0 @@
-// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
-
-// This code has been ported almost directly from Go's src/bytes/buffer.go
-// Copyright 2009 The Go Authors. All rights reserved. BSD license.
-// https://github.com/golang/go/blob/master/LICENSE
-
-import { internals, primordials } from "ext:core/mod.js";
-const {
- ArrayBufferPrototypeGetByteLength,
- TypedArrayPrototypeSubarray,
- TypedArrayPrototypeSlice,
- TypedArrayPrototypeSet,
- TypedArrayPrototypeGetBuffer,
- TypedArrayPrototypeGetByteLength,
- MathFloor,
- MathMin,
- PromiseResolve,
- Uint8Array,
- Error,
-} = primordials;
-
-import { assert } from "ext:deno_web/00_infra.js";
-
-// MIN_READ is the minimum ArrayBuffer size passed to a read call by
-// buffer.ReadFrom. As long as the Buffer has at least MIN_READ bytes beyond
-// what is required to hold the contents of r, readFrom() will not grow the
-// underlying buffer.
-const MIN_READ = 32 * 1024;
-const MAX_SIZE = 2 ** 32 - 2;
-
-// `off` is the offset into `dst` where it will at which to begin writing values
-// from `src`.
-// Returns the number of bytes copied.
-function copyBytes(src, dst, off = 0) {
- const r = TypedArrayPrototypeGetByteLength(dst) - off;
- if (TypedArrayPrototypeGetByteLength(src) > r) {
- src = TypedArrayPrototypeSubarray(src, 0, r);
- }
- TypedArrayPrototypeSet(dst, src, off);
- return TypedArrayPrototypeGetByteLength(src);
-}
-
-class Buffer {
- #buf = null; // contents are the bytes buf[off : len(buf)]
- #off = 0; // read at buf[off], write at buf[buf.byteLength]
-
- constructor(ab) {
- internals.warnOnDeprecatedApi(
- "new Deno.Buffer()",
- new Error().stack,
- "Use `Buffer` from `https://jsr.io/@std/io/doc/buffer/~` instead.",
- );
- if (ab == null) {
- this.#buf = new Uint8Array(0);
- return;
- }
-
- this.#buf = new Uint8Array(ab);
- }
-
- bytes(options = { copy: true }) {
- if (options.copy === false) {
- return TypedArrayPrototypeSubarray(this.#buf, this.#off);
- }
- return TypedArrayPrototypeSlice(this.#buf, this.#off);
- }
-
- empty() {
- return TypedArrayPrototypeGetByteLength(this.#buf) <= this.#off;
- }
-
- get length() {
- return TypedArrayPrototypeGetByteLength(this.#buf) - this.#off;
- }
-
- get capacity() {
- return ArrayBufferPrototypeGetByteLength(
- TypedArrayPrototypeGetBuffer(this.#buf),
- );
- }
-
- truncate(n) {
- if (n === 0) {
- this.reset();
- return;
- }
- if (n < 0 || n > this.length) {
- throw Error("bytes.Buffer: truncation out of range");
- }
- this.#reslice(this.#off + n);
- }
-
- reset() {
- this.#reslice(0);
- this.#off = 0;
- }
-
- #tryGrowByReslice(n) {
- const l = TypedArrayPrototypeGetByteLength(this.#buf);
- if (n <= this.capacity - l) {
- this.#reslice(l + n);
- return l;
- }
- return -1;
- }
-
- #reslice(len) {
- const ab = TypedArrayPrototypeGetBuffer(this.#buf);
- assert(len <= ArrayBufferPrototypeGetByteLength(ab));
- this.#buf = new Uint8Array(ab, 0, len);
- }
-
- readSync(p) {
- if (this.empty()) {
- // Buffer is empty, reset to recover space.
- this.reset();
- if (TypedArrayPrototypeGetByteLength(p) === 0) {
- // this edge case is tested in 'bufferReadEmptyAtEOF' test
- return 0;
- }
- return null;
- }
- const nread = copyBytes(
- TypedArrayPrototypeSubarray(this.#buf, this.#off),
- p,
- );
- this.#off += nread;
- return nread;
- }
-
- read(p) {
- const rr = this.readSync(p);
- return PromiseResolve(rr);
- }
-
- writeSync(p) {
- const m = this.#grow(TypedArrayPrototypeGetByteLength(p));
- return copyBytes(p, this.#buf, m);
- }
-
- write(p) {
- const n = this.writeSync(p);
- return PromiseResolve(n);
- }
-
- #grow(n) {
- const m = this.length;
- // If buffer is empty, reset to recover space.
- if (m === 0 && this.#off !== 0) {
- this.reset();
- }
- // Fast: Try to grow by means of a reslice.
- const i = this.#tryGrowByReslice(n);
- if (i >= 0) {
- return i;
- }
- const c = this.capacity;
- if (n <= MathFloor(c / 2) - m) {
- // We can slide things down instead of allocating a new
- // ArrayBuffer. We only need m+n <= c to slide, but
- // we instead let capacity get twice as large so we
- // don't spend all our time copying.
- copyBytes(TypedArrayPrototypeSubarray(this.#buf, this.#off), this.#buf);
- } else if (c + n > MAX_SIZE) {
- throw new Error("The buffer cannot be grown beyond the maximum size.");
- } else {
- // Not enough space anywhere, we need to allocate.
- const buf = new Uint8Array(MathMin(2 * c + n, MAX_SIZE));
- copyBytes(TypedArrayPrototypeSubarray(this.#buf, this.#off), buf);
- this.#buf = buf;
- }
- // Restore this.#off and len(this.#buf).
- this.#off = 0;
- this.#reslice(MathMin(m + n, MAX_SIZE));
- return m;
- }
-
- grow(n) {
- if (n < 0) {
- throw Error("Buffer.grow: negative count");
- }
- const m = this.#grow(n);
- this.#reslice(m);
- }
-
- async readFrom(r) {
- let n = 0;
- const tmp = new Uint8Array(MIN_READ);
- while (true) {
- const shouldGrow = this.capacity - this.length < MIN_READ;
- // read into tmp buffer if there's not enough room
- // otherwise read directly into the internal buffer
- const buf = shouldGrow
- ? tmp
- : new Uint8Array(TypedArrayPrototypeGetBuffer(this.#buf), this.length);
-
- const nread = await r.read(buf);
- if (nread === null) {
- return n;
- }
-
- // write will grow if needed
- if (shouldGrow) {
- this.writeSync(TypedArrayPrototypeSubarray(buf, 0, nread));
- } else this.#reslice(this.length + nread);
-
- n += nread;
- }
- }
-
- readFromSync(r) {
- let n = 0;
- const tmp = new Uint8Array(MIN_READ);
- while (true) {
- const shouldGrow = this.capacity - this.length < MIN_READ;
- // read into tmp buffer if there's not enough room
- // otherwise read directly into the internal buffer
- const buf = shouldGrow
- ? tmp
- : new Uint8Array(TypedArrayPrototypeGetBuffer(this.#buf), this.length);
-
- const nread = r.readSync(buf);
- if (nread === null) {
- return n;
- }
-
- // write will grow if needed
- if (shouldGrow) {
- this.writeSync(TypedArrayPrototypeSubarray(buf, 0, nread));
- } else this.#reslice(this.length + nread);
-
- n += nread;
- }
- }
-}
-
-export { Buffer };
diff --git a/runtime/js/90_deno_ns.js b/runtime/js/90_deno_ns.js
index e8e1ad57a..19f3e46a9 100644
--- a/runtime/js/90_deno_ns.js
+++ b/runtime/js/90_deno_ns.js
@@ -20,7 +20,6 @@ import * as errors from "ext:runtime/01_errors.js";
import * as version from "ext:runtime/01_version.ts";
import * as permissions from "ext:runtime/10_permissions.js";
import * as io from "ext:deno_io/12_io.js";
-import * as buffer from "ext:runtime/13_buffer.js";
import * as fs from "ext:deno_fs/30_fs.js";
import * as os from "ext:runtime/30_os.js";
import * as fsEvents from "ext:runtime/40_fs_events.js";
@@ -82,9 +81,6 @@ const denoNs = {
env: os.env,
exit: os.exit,
execPath: os.execPath,
- Buffer: buffer.Buffer,
- readAll: buffer.readAll,
- readAllSync: buffer.readAllSync,
copy: io.copy,
SeekMode: io.SeekMode,
File: fs.File,
diff --git a/runtime/js/99_main.js b/runtime/js/99_main.js
index e00c592f1..d83bfbff1 100644
--- a/runtime/js/99_main.js
+++ b/runtime/js/99_main.js
@@ -1,4 +1,3 @@
-// deno-lint-ignore-file no-deprecated-deno-api
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
// Remove Intl.v8BreakIterator because it is a non-standard API.
@@ -800,7 +799,6 @@ function bootstrapMainRuntime(runtimeOptions, warmup = false) {
}
if (internals.future) {
delete globalThis.window;
- delete Deno.Buffer;
delete Deno.FsFile.prototype.rid;
}
} else {
@@ -959,7 +957,6 @@ function bootstrapWorkerRuntime(
}
if (internals.future) {
- delete Deno.Buffer;
delete Deno.FsFile.prototype.rid;
}
} else {