bare-tty 2.0.1 → 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 +50 -0
  2. package/index.js +4 -0
  3. package/package.json +1 -1
package/binding.c CHANGED
@@ -463,6 +463,51 @@ bare_tty_set_mode (js_env_t *env, js_callback_info_t *info) {
463
463
  return NULL;
464
464
  }
465
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
+
466
511
  static js_value_t *
467
512
  init (js_env_t *env, js_value_t *exports) {
468
513
  {
@@ -500,6 +545,11 @@ init (js_env_t *env, js_value_t *exports) {
500
545
  js_create_function(env, "setMode", -1, bare_tty_set_mode, NULL, &fn);
501
546
  js_set_named_property(env, exports, "setMode", fn);
502
547
  }
548
+ {
549
+ js_value_t *fn;
550
+ js_create_function(env, "getWindowSize", -1, bare_tty_get_window_size, NULL, &fn);
551
+ js_set_named_property(env, exports, "getWindowSize", fn);
552
+ }
503
553
  {
504
554
  js_value_t *val;
505
555
  js_create_uint32(env, UV_TTY_MODE_NORMAL, &val);
package/index.js CHANGED
@@ -102,6 +102,10 @@ exports.WriteStream = class TTYWriteStream extends Writable {
102
102
  return true
103
103
  }
104
104
 
105
+ getWindowSize () {
106
+ return binding.getWindowSize(this._handle)
107
+ }
108
+
105
109
  _writev (datas, cb) {
106
110
  this._pendingWrite = cb
107
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.1",
3
+ "version": "2.1.0",
4
4
  "description": "Native TTY streams for JavaScript",
5
5
  "main": "index.js",
6
6
  "files": [