summaryrefslogtreecommitdiff
path: root/ext/io/12_io.js
diff options
context:
space:
mode:
authorAsher Gomez <ashersaupingomez@gmail.com>2024-01-25 06:09:49 +1100
committerGitHub <noreply@github.com>2024-01-24 20:09:49 +0100
commit300eeb343efa00d9572d3befa47ca88fb51c7ac6 (patch)
tree419963878caaa24bfacaa9e9950931cb6cb2d4e8 /ext/io/12_io.js
parent547468e625a7b040690a6f26901597b5672ac413 (diff)
feat: deprecate `Deno.{stdin,stdout,stderr}.rid` (#22073)
For removal in Deno v2. There are two issues: 1. Any script being run causes the output of `warnOnDeprecatedApi()` to be printed, even when none of the `rid` properties are called. 2. `.rid` of these classes is used in multiple tests. I'm not sure how to account for that. I thought of having `STDIN_RID`, and friends, constants, whose values can be shared between the tests and the classes themselves. Should we go with that or do something else? --------- Co-authored-by: Bartek IwaƄczuk <biwanczuk@gmail.com>
Diffstat (limited to 'ext/io/12_io.js')
-rw-r--r--ext/io/12_io.js64
1 files changed, 46 insertions, 18 deletions
diff --git a/ext/io/12_io.js b/ext/io/12_io.js
index 2a0d589a7..acb54f648 100644
--- a/ext/io/12_io.js
+++ b/ext/io/12_io.js
@@ -3,6 +3,7 @@
// Interfaces 100% copied from Go.
// Documentation liberally lifted from them too.
// Thank you! We love Go! <3
+
import { core, internals, primordials } from "ext:core/mod.js";
const {
op_stdin_set_raw,
@@ -179,31 +180,41 @@ function concatBuffers(buffers) {
return contents;
}
+const STDIN_RID = 0;
+const STDOUT_RID = 1;
+const STDERR_RID = 2;
+
class Stdin {
+ #rid = STDIN_RID;
#readable;
constructor() {
}
get rid() {
- return 0;
+ internals.warnOnDeprecatedApi(
+ "Deno.stdin.rid",
+ new Error().stack,
+ "Use `Deno.stdin` instance methods instead.",
+ );
+ return this.#rid;
}
read(p) {
- return read(this.rid, p);
+ return read(this.#rid, p);
}
readSync(p) {
- return readSync(this.rid, p);
+ return readSync(this.#rid, p);
}
close() {
- core.tryClose(this.rid);
+ core.tryClose(this.#rid);
}
get readable() {
if (this.#readable === undefined) {
- this.#readable = readableStreamForRid(this.rid);
+ this.#readable = readableStreamForRid(this.#rid);
}
return this.#readable;
}
@@ -214,75 +225,87 @@ class Stdin {
}
isTerminal() {
- return op_is_terminal(this.rid);
+ return op_is_terminal(this.#rid);
}
}
class Stdout {
+ #rid = STDOUT_RID;
#writable;
constructor() {
}
get rid() {
- return 1;
+ internals.warnOnDeprecatedApi(
+ "Deno.stdout.rid",
+ new Error().stack,
+ "Use `Deno.stdout` instance methods instead.",
+ );
+ return this.#rid;
}
write(p) {
- return write(this.rid, p);
+ return write(this.#rid, p);
}
writeSync(p) {
- return writeSync(this.rid, p);
+ return writeSync(this.#rid, p);
}
close() {
- core.close(this.rid);
+ core.close(this.#rid);
}
get writable() {
if (this.#writable === undefined) {
- this.#writable = writableStreamForRid(this.rid);
+ this.#writable = writableStreamForRid(this.#rid);
}
return this.#writable;
}
isTerminal() {
- return op_is_terminal(this.rid);
+ return op_is_terminal(this.#rid);
}
}
class Stderr {
+ #rid = STDERR_RID;
#writable;
constructor() {
}
get rid() {
- return 2;
+ internals.warnOnDeprecatedApi(
+ "Deno.stderr.rid",
+ new Error().stack,
+ "Use `Deno.stderr` instance methods instead.",
+ );
+ return this.#rid;
}
write(p) {
- return write(this.rid, p);
+ return write(this.#rid, p);
}
writeSync(p) {
- return writeSync(this.rid, p);
+ return writeSync(this.#rid, p);
}
close() {
- core.close(this.rid);
+ core.close(this.#rid);
}
get writable() {
if (this.#writable === undefined) {
- this.#writable = writableStreamForRid(this.rid);
+ this.#writable = writableStreamForRid(this.#rid);
}
return this.#writable;
}
isTerminal() {
- return op_is_terminal(this.rid);
+ return op_is_terminal(this.#rid);
}
}
@@ -299,9 +322,14 @@ export {
readAllSync,
readSync,
SeekMode,
+ Stderr,
stderr,
+ STDERR_RID,
stdin,
+ STDIN_RID,
+ Stdout,
stdout,
+ STDOUT_RID,
write,
writeSync,
};