aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Derrick Farris <mr.dcfarris@gmail.com> 2023-03-06 13:09:52 -0800
committerGravatar GitHub <noreply@github.com> 2023-03-06 13:09:52 -0800
commita512bdad8d5930a008ac1efa631835cb1c1e0d19 (patch)
tree74c9e87831f8f183fdd2fb2ff6bb1fc2bad257ca
parent3e1d368a27529c5abe8aa4b96f4e2fc2c86fc3e5 (diff)
downloadbun-a512bdad8d5930a008ac1efa631835cb1c1e0d19.tar.gz
bun-a512bdad8d5930a008ac1efa631835cb1c1e0d19.tar.zst
bun-a512bdad8d5930a008ac1efa631835cb1c1e0d19.zip
feat(tty): add some `tty.WriteStream` methods to `process.{stdout, stderr}` (#2320)
* feat(stdio): add some `tty.WriteStream` methods * chore(builtins): add process builtin gen'd code
-rw-r--r--src/bun.js/builtins/cpp/ProcessObjectInternalsBuiltins.cpp25
-rw-r--r--src/bun.js/builtins/js/ProcessObjectInternals.js23
2 files changed, 47 insertions, 1 deletions
diff --git a/src/bun.js/builtins/cpp/ProcessObjectInternalsBuiltins.cpp b/src/bun.js/builtins/cpp/ProcessObjectInternalsBuiltins.cpp
index 574d18f20..d44656f75 100644
--- a/src/bun.js/builtins/cpp/ProcessObjectInternalsBuiltins.cpp
+++ b/src/bun.js/builtins/cpp/ProcessObjectInternalsBuiltins.cpp
@@ -51,7 +51,7 @@ namespace WebCore {
const JSC::ConstructAbility s_processObjectInternalsGetStdioWriteStreamCodeConstructAbility = JSC::ConstructAbility::CannotConstruct;
const JSC::ConstructorKind s_processObjectInternalsGetStdioWriteStreamCodeConstructorKind = JSC::ConstructorKind::None;
const JSC::ImplementationVisibility s_processObjectInternalsGetStdioWriteStreamCodeImplementationVisibility = JSC::ImplementationVisibility::Public;
-const int s_processObjectInternalsGetStdioWriteStreamCodeLength = 9767;
+const int s_processObjectInternalsGetStdioWriteStreamCodeLength = 10295;
static const JSC::Intrinsic s_processObjectInternalsGetStdioWriteStreamCodeIntrinsic = JSC::NoIntrinsic;
const char* const s_processObjectInternalsGetStdioWriteStreamCode =
"(function (fd_, rawRequire) {\n" \
@@ -224,6 +224,8 @@ const char* const s_processObjectInternalsGetStdioWriteStreamCode =
" return normalied === \"utf8\" || normalied === \"utf-8\" || normalied === \"buffer\" || normalied === \"binary\";\n" \
" }\n" \
"\n" \
+ " var readline;\n" \
+ "\n" \
" var FastStdioWriteStream = class StdioWriteStream extends EventEmitter {\n" \
" #fd;\n" \
" #innerStream;\n" \
@@ -275,6 +277,27 @@ const char* const s_processObjectInternalsGetStdioWriteStreamCode =
" return (this.#isTTY ??= require(\"node:tty\").isatty(this.#fd));\n" \
" }\n" \
"\n" \
+ " cursorTo(x, y, callback) {\n" \
+ " return (readline ??= require(\"readline\")).cursorTo(this, x, y, callback);\n" \
+ " }\n" \
+ "\n" \
+ " moveCursor(dx, dy, callback) {\n" \
+ " return (readline ??= require(\"readline\")).moveCursor(this, dx, dy, callback);\n" \
+ " }\n" \
+ "\n" \
+ " clearLine(dir, callback) {\n" \
+ " return (readline ??= require(\"readline\")).clearLine(this, dir, callback);\n" \
+ " }\n" \
+ "\n" \
+ " clearScreenDown(callback) {\n" \
+ " return (readline ??= require(\"readline\")).clearScreenDown(this, callback);\n" \
+ " }\n" \
+ "\n" \
+ " //\n" \
+ " //\n" \
+ " //\n" \
+ " //\n" \
+ "\n" \
" ref() {\n" \
" this.#getWriter().ref();\n" \
" }\n" \
diff --git a/src/bun.js/builtins/js/ProcessObjectInternals.js b/src/bun.js/builtins/js/ProcessObjectInternals.js
index 723528fec..c1898d686 100644
--- a/src/bun.js/builtins/js/ProcessObjectInternals.js
+++ b/src/bun.js/builtins/js/ProcessObjectInternals.js
@@ -191,6 +191,8 @@ function getStdioWriteStream(fd_, rawRequire) {
return normalied === "utf8" || normalied === "utf-8" || normalied === "buffer" || normalied === "binary";
}
+ var readline;
+
var FastStdioWriteStream = class StdioWriteStream extends EventEmitter {
#fd;
#innerStream;
@@ -242,6 +244,27 @@ function getStdioWriteStream(fd_, rawRequire) {
return (this.#isTTY ??= require("node:tty").isatty(this.#fd));
}
+ cursorTo(x, y, callback) {
+ return (readline ??= require("readline")).cursorTo(this, x, y, callback);
+ }
+
+ moveCursor(dx, dy, callback) {
+ return (readline ??= require("readline")).moveCursor(this, dx, dy, callback);
+ }
+
+ clearLine(dir, callback) {
+ return (readline ??= require("readline")).clearLine(this, dir, callback);
+ }
+
+ clearScreenDown(callback) {
+ return (readline ??= require("readline")).clearScreenDown(this, callback);
+ }
+
+ // TODO: once implemented this.columns and this.rows should be uncommented
+ // getWindowSize() {
+ // return [this.columns, this.rows];
+ // }
+
ref() {
this.#getWriter().ref();
}