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.
Files changed (3) hide show
  1. package/binding.c +55 -13
  2. package/index.js +4 -2
  3. 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
- uv_close((uv_handle_t *) &tty->handle, on_close);
425
-
426
- return NULL;
427
- }
424
+ err = uv_tty_set_mode(&tty->handle, UV_TTY_MODE_NORMAL);
428
425
 
429
- static js_value_t *
430
- bare_tty_reset (js_env_t *env, js_callback_info_t *info) {
431
- int err;
426
+ if (err < 0) {
427
+ js_throw_error(env, uv_err_name(err), uv_strerror(err));
428
+ return NULL;
429
+ }
432
430
 
433
- err = uv_tty_reset_mode();
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, "reset", -1, bare_tty_reset, NULL, &fn);
504
- js_set_named_property(env, exports, "reset", fn);
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, "setMode", -1, bare_tty_set_mode, NULL, &fn);
509
- js_set_named_property(env, exports, "setMode", fn);
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)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bare-tty",
3
- "version": "2.0.0",
3
+ "version": "2.1.0",
4
4
  "description": "Native TTY streams for JavaScript",
5
5
  "main": "index.js",
6
6
  "files": [