bare-tty 2.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/binding.c +55 -13
- package/index.js +4 -2
- package/package.json +1 -1
package/binding.c
CHANGED
|
@@ -421,17 +421,14 @@ bare_tty_close (js_env_t *env, js_callback_info_t *info) {
|
|
|
421
421
|
err = js_get_arraybuffer_info(env, argv[0], (void **) &tty, NULL);
|
|
422
422
|
assert(err == 0);
|
|
423
423
|
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
return NULL;
|
|
427
|
-
}
|
|
424
|
+
err = uv_tty_set_mode(&tty->handle, UV_TTY_MODE_NORMAL);
|
|
428
425
|
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
426
|
+
if (err < 0) {
|
|
427
|
+
js_throw_error(env, uv_err_name(err), uv_strerror(err));
|
|
428
|
+
return NULL;
|
|
429
|
+
}
|
|
432
430
|
|
|
433
|
-
|
|
434
|
-
assert(err == 0);
|
|
431
|
+
uv_close((uv_handle_t *) &tty->handle, on_close);
|
|
435
432
|
|
|
436
433
|
return NULL;
|
|
437
434
|
}
|
|
@@ -466,6 +463,51 @@ bare_tty_set_mode (js_env_t *env, js_callback_info_t *info) {
|
|
|
466
463
|
return NULL;
|
|
467
464
|
}
|
|
468
465
|
|
|
466
|
+
static js_value_t *
|
|
467
|
+
bare_tty_get_window_size (js_env_t *env, js_callback_info_t *info) {
|
|
468
|
+
int err;
|
|
469
|
+
|
|
470
|
+
size_t argc = 1;
|
|
471
|
+
js_value_t *argv[1];
|
|
472
|
+
|
|
473
|
+
err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
|
|
474
|
+
assert(err == 0);
|
|
475
|
+
|
|
476
|
+
assert(argc == 1);
|
|
477
|
+
|
|
478
|
+
bare_tty_t *tty;
|
|
479
|
+
err = js_get_arraybuffer_info(env, argv[0], (void **) &tty, NULL);
|
|
480
|
+
assert(err == 0);
|
|
481
|
+
|
|
482
|
+
int width, height;
|
|
483
|
+
err = uv_tty_get_winsize(&tty->handle, &width, &height);
|
|
484
|
+
|
|
485
|
+
if (err < 0) {
|
|
486
|
+
js_throw_error(env, uv_err_name(err), uv_strerror(err));
|
|
487
|
+
return NULL;
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
js_value_t *result;
|
|
491
|
+
err = js_create_array_with_length(env, 2, &result);
|
|
492
|
+
assert(err == 0);
|
|
493
|
+
|
|
494
|
+
js_value_t *value;
|
|
495
|
+
|
|
496
|
+
err = js_create_int32(env, width, &value);
|
|
497
|
+
assert(err == 0);
|
|
498
|
+
|
|
499
|
+
err = js_set_element(env, result, 0, value);
|
|
500
|
+
assert(err == 0);
|
|
501
|
+
|
|
502
|
+
err = js_create_int32(env, height, &value);
|
|
503
|
+
assert(err == 0);
|
|
504
|
+
|
|
505
|
+
err = js_set_element(env, result, 1, value);
|
|
506
|
+
assert(err == 0);
|
|
507
|
+
|
|
508
|
+
return result;
|
|
509
|
+
}
|
|
510
|
+
|
|
469
511
|
static js_value_t *
|
|
470
512
|
init (js_env_t *env, js_value_t *exports) {
|
|
471
513
|
{
|
|
@@ -500,13 +542,13 @@ init (js_env_t *env, js_value_t *exports) {
|
|
|
500
542
|
}
|
|
501
543
|
{
|
|
502
544
|
js_value_t *fn;
|
|
503
|
-
js_create_function(env, "
|
|
504
|
-
js_set_named_property(env, exports, "
|
|
545
|
+
js_create_function(env, "setMode", -1, bare_tty_set_mode, NULL, &fn);
|
|
546
|
+
js_set_named_property(env, exports, "setMode", fn);
|
|
505
547
|
}
|
|
506
548
|
{
|
|
507
549
|
js_value_t *fn;
|
|
508
|
-
js_create_function(env, "
|
|
509
|
-
js_set_named_property(env, exports, "
|
|
550
|
+
js_create_function(env, "getWindowSize", -1, bare_tty_get_window_size, NULL, &fn);
|
|
551
|
+
js_set_named_property(env, exports, "getWindowSize", fn);
|
|
510
552
|
}
|
|
511
553
|
{
|
|
512
554
|
js_value_t *val;
|
package/index.js
CHANGED
|
@@ -3,8 +3,6 @@ const binding = require('./binding')
|
|
|
3
3
|
|
|
4
4
|
const DEFAULT_READ_BUFFER = 65536
|
|
5
5
|
|
|
6
|
-
process.on('exit', () => binding.reset())
|
|
7
|
-
|
|
8
6
|
exports.ReadStream = class TTYReadStream extends Readable {
|
|
9
7
|
constructor (fd, opts = {}) {
|
|
10
8
|
super()
|
|
@@ -104,6 +102,10 @@ exports.WriteStream = class TTYWriteStream extends Writable {
|
|
|
104
102
|
return true
|
|
105
103
|
}
|
|
106
104
|
|
|
105
|
+
getWindowSize () {
|
|
106
|
+
return binding.getWindowSize(this._handle)
|
|
107
|
+
}
|
|
108
|
+
|
|
107
109
|
_writev (datas, cb) {
|
|
108
110
|
this._pendingWrite = cb
|
|
109
111
|
binding.writev(this._handle, datas)
|