bare-tty 5.0.0 → 5.0.2
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 +34 -15
- package/index.d.ts +47 -0
- package/index.js +2 -2
- package/package.json +7 -3
- package/prebuilds/android-arm/bare-tty.bare +0 -0
- package/prebuilds/android-arm64/bare-tty.bare +0 -0
- package/prebuilds/android-ia32/bare-tty.bare +0 -0
- package/prebuilds/android-x64/bare-tty.bare +0 -0
- package/prebuilds/darwin-arm64/bare-tty.bare +0 -0
- package/prebuilds/darwin-x64/bare-tty.bare +0 -0
- package/prebuilds/ios-arm64/bare-tty.bare +0 -0
- package/prebuilds/ios-arm64-simulator/bare-tty.bare +0 -0
- package/prebuilds/ios-x64-simulator/bare-tty.bare +0 -0
- package/prebuilds/linux-arm64/bare-tty.bare +0 -0
- package/prebuilds/linux-x64/bare-tty.bare +0 -0
- package/prebuilds/win32-arm64/bare-tty.bare +0 -0
- package/prebuilds/win32-x64/bare-tty.bare +0 -0
package/binding.c
CHANGED
|
@@ -20,8 +20,10 @@ typedef struct {
|
|
|
20
20
|
js_ref_t *on_read;
|
|
21
21
|
js_ref_t *on_close;
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
bool closing;
|
|
24
24
|
bool exiting;
|
|
25
|
+
|
|
26
|
+
js_deferred_teardown_t *teardown;
|
|
25
27
|
} bare_tty_t;
|
|
26
28
|
|
|
27
29
|
static void
|
|
@@ -30,6 +32,8 @@ bare_tty__on_write(uv_write_t *req, int status) {
|
|
|
30
32
|
|
|
31
33
|
bare_tty_t *tty = (bare_tty_t *) req->data;
|
|
32
34
|
|
|
35
|
+
if (tty->exiting) return;
|
|
36
|
+
|
|
33
37
|
js_env_t *env = tty->env;
|
|
34
38
|
|
|
35
39
|
js_handle_scope_t *scope;
|
|
@@ -77,6 +81,8 @@ bare_tty__on_read(uv_stream_t *stream, ssize_t nread, const uv_buf_t *buf) {
|
|
|
77
81
|
|
|
78
82
|
bare_tty_t *tty = (bare_tty_t *) stream;
|
|
79
83
|
|
|
84
|
+
if (tty->exiting) return;
|
|
85
|
+
|
|
80
86
|
js_env_t *env = tty->env;
|
|
81
87
|
|
|
82
88
|
js_handle_scope_t *scope;
|
|
@@ -129,7 +135,7 @@ bare_tty__on_close(uv_handle_t *handle) {
|
|
|
129
135
|
|
|
130
136
|
js_env_t *env = tty->env;
|
|
131
137
|
|
|
132
|
-
|
|
138
|
+
js_deferred_teardown_t *teardown = tty->teardown;
|
|
133
139
|
|
|
134
140
|
js_handle_scope_t *scope;
|
|
135
141
|
err = js_open_handle_scope(env, &scope);
|
|
@@ -143,15 +149,6 @@ bare_tty__on_close(uv_handle_t *handle) {
|
|
|
143
149
|
err = js_get_reference_value(env, tty->on_close, &callback);
|
|
144
150
|
assert(err == 0);
|
|
145
151
|
|
|
146
|
-
js_call_function(env, ctx, callback, 0, NULL, NULL);
|
|
147
|
-
|
|
148
|
-
err = js_close_handle_scope(env, scope);
|
|
149
|
-
assert(err == 0);
|
|
150
|
-
|
|
151
|
-
finalize:
|
|
152
|
-
err = js_finish_deferred_teardown_callback(tty->teardown);
|
|
153
|
-
assert(err == 0);
|
|
154
|
-
|
|
155
152
|
err = js_delete_reference(env, tty->on_write);
|
|
156
153
|
assert(err == 0);
|
|
157
154
|
|
|
@@ -163,6 +160,14 @@ finalize:
|
|
|
163
160
|
|
|
164
161
|
err = js_delete_reference(env, tty->ctx);
|
|
165
162
|
assert(err == 0);
|
|
163
|
+
|
|
164
|
+
if (!tty->exiting) js_call_function(env, ctx, callback, 0, NULL, NULL);
|
|
165
|
+
|
|
166
|
+
err = js_close_handle_scope(env, scope);
|
|
167
|
+
assert(err == 0);
|
|
168
|
+
|
|
169
|
+
err = js_finish_deferred_teardown_callback(teardown);
|
|
170
|
+
assert(err == 0);
|
|
166
171
|
}
|
|
167
172
|
|
|
168
173
|
static void
|
|
@@ -171,6 +176,8 @@ bare_tty__on_teardown(js_deferred_teardown_t *handle, void *data) {
|
|
|
171
176
|
|
|
172
177
|
tty->exiting = true;
|
|
173
178
|
|
|
179
|
+
if (tty->closing) return;
|
|
180
|
+
|
|
174
181
|
uv_close((uv_handle_t *) &tty->handle, bare_tty__on_close);
|
|
175
182
|
}
|
|
176
183
|
|
|
@@ -194,7 +201,8 @@ bare_tty_init(js_env_t *env, js_callback_info_t *info) {
|
|
|
194
201
|
assert(argc == 6);
|
|
195
202
|
|
|
196
203
|
uv_loop_t *loop;
|
|
197
|
-
js_get_env_loop(env, &loop);
|
|
204
|
+
err = js_get_env_loop(env, &loop);
|
|
205
|
+
assert(err == 0);
|
|
198
206
|
|
|
199
207
|
js_value_t *handle;
|
|
200
208
|
|
|
@@ -219,6 +227,7 @@ bare_tty_init(js_env_t *env, js_callback_info_t *info) {
|
|
|
219
227
|
(void) err;
|
|
220
228
|
|
|
221
229
|
tty->env = env;
|
|
230
|
+
tty->closing = false;
|
|
222
231
|
tty->exiting = false;
|
|
223
232
|
|
|
224
233
|
err = js_get_typedarray_info(env, argv[1], NULL, (void **) &tty->read.base, (size_t *) &tty->read.len, NULL, NULL);
|
|
@@ -266,16 +275,24 @@ bare_tty_writev(js_env_t *env, js_callback_info_t *info) {
|
|
|
266
275
|
|
|
267
276
|
uv_buf_t *bufs = malloc(sizeof(uv_buf_t) * bufs_len);
|
|
268
277
|
|
|
278
|
+
js_value_t **elements = malloc(sizeof(js_value_t *) * bufs_len);
|
|
279
|
+
|
|
280
|
+
uint32_t fetched;
|
|
281
|
+
err = js_get_array_elements(env, arr, elements, bufs_len, 0, &fetched);
|
|
282
|
+
assert(err == 0);
|
|
283
|
+
assert(fetched == bufs_len);
|
|
284
|
+
|
|
285
|
+
|
|
269
286
|
for (uint32_t i = 0; i < bufs_len; i++) {
|
|
270
|
-
js_value_t *item;
|
|
271
|
-
err = js_get_element(env, arr, i, &item);
|
|
272
|
-
assert(err == 0);
|
|
287
|
+
js_value_t *item = elements[i];
|
|
273
288
|
|
|
274
289
|
uv_buf_t *buf = &bufs[i];
|
|
275
290
|
err = js_get_typedarray_info(env, item, NULL, (void **) &buf->base, (size_t *) &buf->len, NULL, NULL);
|
|
276
291
|
assert(err == 0);
|
|
277
292
|
}
|
|
278
293
|
|
|
294
|
+
free(elements);
|
|
295
|
+
|
|
279
296
|
uv_write_t *req = &tty->requests.write;
|
|
280
297
|
|
|
281
298
|
req->data = tty;
|
|
@@ -366,6 +383,8 @@ bare_tty_close(js_env_t *env, js_callback_info_t *info) {
|
|
|
366
383
|
// close an output stream.
|
|
367
384
|
(void) err;
|
|
368
385
|
|
|
386
|
+
tty->closing = true;
|
|
387
|
+
|
|
369
388
|
uv_close((uv_handle_t *) &tty->handle, bare_tty__on_close);
|
|
370
389
|
|
|
371
390
|
return NULL;
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Readable,
|
|
3
|
+
ReadableOptions,
|
|
4
|
+
Writable,
|
|
5
|
+
WritableEvents,
|
|
6
|
+
WritableOptions
|
|
7
|
+
} from 'bare-stream'
|
|
8
|
+
|
|
9
|
+
interface ReadStream extends Readable {
|
|
10
|
+
readonly isTTY: true
|
|
11
|
+
|
|
12
|
+
setMode(mode: number): this
|
|
13
|
+
|
|
14
|
+
setRawMode(mode: boolean): this
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
declare class ReadStream extends Readable {
|
|
18
|
+
constructor(fd: number, opts?: ReadableOptions)
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
interface WriteStreamEvents extends WritableEvents {
|
|
22
|
+
resize: []
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
interface WriteStream<M extends WriteStreamEvents = WriteStreamEvents>
|
|
26
|
+
extends Writable<M> {
|
|
27
|
+
readonly isTTY: true
|
|
28
|
+
readonly columns: number
|
|
29
|
+
readonly rows: number
|
|
30
|
+
|
|
31
|
+
getWindowSize(): [width: number, height: number]
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
declare class WriteStream<
|
|
35
|
+
M extends WriteStreamEvents = WriteStreamEvents
|
|
36
|
+
> extends Writable<M> {
|
|
37
|
+
constructor(fd: number, opts?: WritableOptions)
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
declare function isTTY(fd: number): boolean
|
|
41
|
+
|
|
42
|
+
declare const constants: {
|
|
43
|
+
mode: { NORMAL: number; RAW: number; IO: number }
|
|
44
|
+
state: { READING: number; CLOSING: number }
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export { ReadStream, WriteStream, isTTY, isTTY as isatty, constants }
|
package/index.js
CHANGED
|
@@ -40,8 +40,8 @@ exports.ReadStream = class TTYReadStream extends Readable {
|
|
|
40
40
|
return this
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
setRawMode(
|
|
44
|
-
return this.setMode(
|
|
43
|
+
setRawMode(enabled) {
|
|
44
|
+
return this.setMode(enabled ? constants.mode.RAW : constants.mode.NORMAL)
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
_read() {
|
package/package.json
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bare-tty",
|
|
3
|
-
"version": "5.0.
|
|
3
|
+
"version": "5.0.2",
|
|
4
4
|
"description": "Native TTY streams for JavaScript",
|
|
5
5
|
"exports": {
|
|
6
|
-
".":
|
|
6
|
+
".": {
|
|
7
|
+
"types": "./index.d.ts",
|
|
8
|
+
"default": "./index.js"
|
|
9
|
+
},
|
|
7
10
|
"./package": "./package.json",
|
|
8
11
|
"./constants": "./lib/constants.js"
|
|
9
12
|
},
|
|
10
13
|
"files": [
|
|
11
14
|
"index.js",
|
|
15
|
+
"index.d.ts",
|
|
12
16
|
"binding.c",
|
|
13
17
|
"binding.js",
|
|
14
18
|
"CMakeLists.txt",
|
|
@@ -30,7 +34,7 @@
|
|
|
30
34
|
},
|
|
31
35
|
"homepage": "https://github.com/holepunchto/bare-tty#readme",
|
|
32
36
|
"engines": {
|
|
33
|
-
"bare": ">=1.
|
|
37
|
+
"bare": ">=1.16.0"
|
|
34
38
|
},
|
|
35
39
|
"dependencies": {
|
|
36
40
|
"bare-events": "^2.2.0",
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|