bare-buffer 3.0.0-0 → 3.0.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/CMakeLists.txt CHANGED
@@ -5,9 +5,9 @@ find_package(cmake-fetch REQUIRED PATHS node_modules/cmake-fetch)
5
5
 
6
6
  project(bare_buffer C)
7
7
 
8
- fetch_package("github:holepunchto/libutf#65b6ba0")
9
- fetch_package("github:holepunchto/libbase64#4cd8d8b")
10
- fetch_package("github:holepunchto/libhex#939999b")
8
+ fetch_package("github:holepunchto/libutf#9509b28")
9
+ fetch_package("github:holepunchto/libbase64#cded073")
10
+ fetch_package("github:holepunchto/libhex#1dfad95")
11
11
 
12
12
  add_bare_module(bare_buffer)
13
13
 
package/binding.c CHANGED
@@ -3,13 +3,30 @@
3
3
  #include <base64.h>
4
4
  #include <hex.h>
5
5
  #include <js.h>
6
- #include <js/ffi.h>
7
6
  #include <stdlib.h>
8
7
  #include <string.h>
9
8
  #include <utf.h>
10
9
 
11
10
  static js_type_tag_t bare_buffer__tag = {0xfea3e944b70b0812, 0xe53bb5c343c040b6};
12
11
 
12
+ static inline int
13
+ bare_buffer__memcmp (void *a, size_t a_len, void *b, size_t b_len) {
14
+ int r = memcmp(a, b, a_len < b_len ? a_len : b_len);
15
+
16
+ if (r == 0) {
17
+ if (a_len < b_len) return -1;
18
+ if (a_len > b_len) return 1;
19
+ return 0;
20
+ }
21
+
22
+ return r < 0 ? -1 : 1;
23
+ }
24
+
25
+ static void
26
+ bare_buffer__on_free_string (js_env_t *env, void *data, void *finalize_hint) {
27
+ free(data);
28
+ }
29
+
13
30
  static js_value_t *
14
31
  bare_buffer_alloc (js_env_t *env, js_callback_info_t *info) {
15
32
  int err;
@@ -56,6 +73,21 @@ bare_buffer_alloc_unsafe (js_env_t *env, js_callback_info_t *info) {
56
73
  return result;
57
74
  }
58
75
 
76
+ static uint32_t
77
+ bare_buffer_typed_byte_length_utf8 (js_value_t *receiver, js_value_t *str, js_typed_callback_info_t *info) {
78
+ int err;
79
+
80
+ js_env_t *env;
81
+ err = js_get_typed_callback_info(info, &env, NULL);
82
+ assert(err == 0);
83
+
84
+ size_t str_len;
85
+ err = js_get_value_string_utf8(env, str, NULL, 0, &str_len);
86
+ assert(err == 0);
87
+
88
+ return (uint32_t) str_len;
89
+ }
90
+
59
91
  static js_value_t *
60
92
  bare_buffer_byte_length_utf8 (js_env_t *env, js_callback_info_t *info) {
61
93
  int err;
@@ -91,18 +123,43 @@ bare_buffer_to_string_utf8 (js_env_t *env, js_callback_info_t *info) {
91
123
 
92
124
  assert(argc == 1);
93
125
 
94
- size_t str_len;
95
- utf8_t *str;
96
- err = js_get_typedarray_info(env, argv[0], NULL, (void **) &str, &str_len, NULL, NULL);
126
+ utf8_t *buf;
127
+ size_t buf_len;
128
+ err = js_get_typedarray_info(env, argv[0], NULL, (void **) &buf, &buf_len, NULL, NULL);
97
129
  assert(err == 0);
98
130
 
99
131
  js_value_t *result;
100
- err = js_create_string_utf8(env, str, str_len, &result);
132
+ err = js_create_string_utf8(env, buf, buf_len, &result);
101
133
  assert(err == 0);
102
134
 
103
135
  return result;
104
136
  }
105
137
 
138
+ static uint32_t
139
+ bare_buffer_typed_write_utf8 (js_value_t *receiver, js_value_t *typedarray, js_value_t *string, js_typed_callback_info_t *info) {
140
+ int err;
141
+
142
+ js_env_t *env;
143
+ err = js_get_typed_callback_info(info, &env, NULL);
144
+ assert(err == 0);
145
+
146
+ void *buf;
147
+ size_t buf_len;
148
+
149
+ js_typedarray_view_t *buf_view;
150
+ err = js_get_typedarray_view(env, typedarray, NULL, &buf, &buf_len, &buf_view);
151
+ assert(err == 0);
152
+
153
+ size_t str_len;
154
+ err = js_get_value_string_utf8(env, string, buf, buf_len, &str_len);
155
+ assert(err == 0);
156
+
157
+ err = js_release_typedarray_view(env, buf_view);
158
+ assert(err == 0);
159
+
160
+ return (uint32_t) str_len;
161
+ }
162
+
106
163
  static js_value_t *
107
164
  bare_buffer_write_utf8 (js_env_t *env, js_callback_info_t *info) {
108
165
  int err;
@@ -115,8 +172,8 @@ bare_buffer_write_utf8 (js_env_t *env, js_callback_info_t *info) {
115
172
 
116
173
  assert(argc == 2);
117
174
 
118
- size_t buf_len;
119
175
  void *buf;
176
+ size_t buf_len;
120
177
  err = js_get_typedarray_info(env, argv[0], NULL, &buf, &buf_len, NULL, NULL);
121
178
  assert(err == 0);
122
179
 
@@ -143,20 +200,49 @@ bare_buffer_to_string_utf16le (js_env_t *env, js_callback_info_t *info) {
143
200
 
144
201
  assert(argc == 1);
145
202
 
146
- size_t str_len;
147
- utf16_t *str;
148
- err = js_get_typedarray_info(env, argv[0], NULL, (void **) &str, &str_len, NULL, NULL);
203
+ utf16_t *buf;
204
+ size_t buf_len;
205
+ err = js_get_typedarray_info(env, argv[0], NULL, (void **) &buf, &buf_len, NULL, NULL);
149
206
  assert(err == 0);
150
207
 
151
- str_len /= sizeof(utf16_t);
208
+ buf_len /= sizeof(utf16_t);
152
209
 
153
210
  js_value_t *result;
154
- err = js_create_string_utf16le(env, str, str_len, &result);
211
+ err = js_create_string_utf16le(env, buf, buf_len, &result);
155
212
  assert(err == 0);
156
213
 
157
214
  return result;
158
215
  }
159
216
 
217
+ static uint32_t
218
+ bare_buffer_typed_write_utf16le (js_value_t *receiver, js_value_t *typedarray, js_value_t *string, js_typed_callback_info_t *info) {
219
+ int err;
220
+
221
+ js_env_t *env;
222
+ err = js_get_typed_callback_info(info, &env, NULL);
223
+ assert(err == 0);
224
+
225
+ void *buf;
226
+ size_t buf_len;
227
+
228
+ js_typedarray_view_t *buf_view;
229
+ err = js_get_typedarray_view(env, typedarray, NULL, &buf, &buf_len, &buf_view);
230
+ assert(err == 0);
231
+
232
+ buf_len /= sizeof(utf16_t);
233
+
234
+ size_t str_len;
235
+ err = js_get_value_string_utf16le(env, string, buf, buf_len, &str_len);
236
+ assert(err == 0);
237
+
238
+ str_len *= sizeof(utf16_t);
239
+
240
+ err = js_release_typedarray_view(env, buf_view);
241
+ assert(err == 0);
242
+
243
+ return (uint32_t) str_len;
244
+ }
245
+
160
246
  static js_value_t *
161
247
  bare_buffer_write_utf16le (js_env_t *env, js_callback_info_t *info) {
162
248
  int err;
@@ -169,8 +255,8 @@ bare_buffer_write_utf16le (js_env_t *env, js_callback_info_t *info) {
169
255
 
170
256
  assert(argc == 2);
171
257
 
172
- size_t buf_len;
173
258
  void *buf;
259
+ size_t buf_len;
174
260
  err = js_get_typedarray_info(env, argv[0], NULL, &buf, &buf_len, NULL, NULL);
175
261
  assert(err == 0);
176
262
 
@@ -201,28 +287,66 @@ bare_buffer_to_string_base64 (js_env_t *env, js_callback_info_t *info) {
201
287
 
202
288
  assert(argc == 1);
203
289
 
204
- size_t buf_len;
205
290
  void *buf;
291
+ size_t buf_len;
206
292
  err = js_get_typedarray_info(env, argv[0], NULL, &buf, &buf_len, NULL, NULL);
207
293
  assert(err == 0);
208
294
 
209
295
  size_t str_len;
210
- err = base64_encode(buf, buf_len, NULL, &str_len);
296
+ err = base64_encode_utf8(buf, buf_len, NULL, &str_len);
211
297
  assert(err == 0);
212
298
 
213
299
  utf8_t *str = malloc(str_len);
214
- err = base64_encode(buf, buf_len, str, &str_len);
300
+ err = base64_encode_utf8(buf, buf_len, str, &str_len);
215
301
  assert(err == 0);
216
302
 
217
303
  js_value_t *result;
218
- err = js_create_string_utf8(env, str, str_len, &result);
304
+ err = js_create_external_string_latin1(env, str, str_len, bare_buffer__on_free_string, NULL, &result, NULL);
219
305
  assert(err == 0);
220
306
 
221
- free(str);
222
-
223
307
  return result;
224
308
  }
225
309
 
310
+ static uint32_t
311
+ bare_buffer_typed_write_base64 (js_value_t *receiver, js_value_t *typedarray, js_value_t *string, js_typed_callback_info_t *info) {
312
+ int err;
313
+
314
+ js_env_t *env;
315
+ err = js_get_typed_callback_info(info, &env, NULL);
316
+ assert(err == 0);
317
+
318
+ void *buf;
319
+ size_t buf_len;
320
+
321
+ js_typedarray_view_t *buf_view;
322
+ err = js_get_typedarray_view(env, typedarray, NULL, &buf, &buf_len, &buf_view);
323
+ assert(err == 0);
324
+
325
+ js_string_encoding_t encoding;
326
+ const void *str;
327
+ size_t str_len;
328
+
329
+ js_string_view_t *str_view;
330
+ err = js_get_string_view(env, string, &encoding, &str, &str_len, &str_view);
331
+ assert(err == 0);
332
+
333
+ if (encoding == js_utf16le) {
334
+ err = base64_decode_utf16le(str, str_len, buf, &buf_len);
335
+ assert(err == 0);
336
+ } else {
337
+ err = base64_decode_utf8(str, str_len, buf, &buf_len);
338
+ assert(err == 0);
339
+ }
340
+
341
+ err = js_release_string_view(env, str_view);
342
+ assert(err == 0);
343
+
344
+ err = js_release_typedarray_view(env, buf_view);
345
+ assert(err == 0);
346
+
347
+ return buf_len;
348
+ }
349
+
226
350
  static js_value_t *
227
351
  bare_buffer_write_base64 (js_env_t *env, js_callback_info_t *info) {
228
352
  int err;
@@ -235,23 +359,29 @@ bare_buffer_write_base64 (js_env_t *env, js_callback_info_t *info) {
235
359
 
236
360
  assert(argc == 2);
237
361
 
238
- size_t buf_len;
239
362
  void *buf;
363
+ size_t buf_len;
240
364
  err = js_get_typedarray_info(env, argv[0], NULL, &buf, &buf_len, NULL, NULL);
241
365
  assert(err == 0);
242
366
 
367
+ js_string_encoding_t encoding;
368
+ const void *str;
243
369
  size_t str_len;
244
- err = js_get_value_string_utf8(env, argv[1], NULL, 0, &str_len);
245
- assert(err == 0);
246
370
 
247
- utf8_t *str = malloc(str_len);
248
- err = js_get_value_string_utf8(env, argv[1], str, str_len, NULL);
371
+ js_string_view_t *str_view;
372
+ err = js_get_string_view(env, argv[1], &encoding, &str, &str_len, &str_view);
249
373
  assert(err == 0);
250
374
 
251
- err = base64_decode(str, str_len, buf, &buf_len);
252
- assert(err == 0);
375
+ if (encoding == js_utf16le) {
376
+ err = base64_decode_utf16le(str, str_len, buf, &buf_len);
377
+ assert(err == 0);
378
+ } else {
379
+ err = base64_decode_utf8(str, str_len, buf, &buf_len);
380
+ assert(err == 0);
381
+ }
253
382
 
254
- free(str);
383
+ err = js_release_string_view(env, str_view);
384
+ assert(err == 0);
255
385
 
256
386
  js_value_t *result;
257
387
  err = js_create_uint32(env, (uint32_t) buf_len, &result);
@@ -272,28 +402,66 @@ bare_buffer_to_string_hex (js_env_t *env, js_callback_info_t *info) {
272
402
 
273
403
  assert(argc == 1);
274
404
 
275
- size_t buf_len;
276
405
  void *buf;
406
+ size_t buf_len;
277
407
  err = js_get_typedarray_info(env, argv[0], NULL, &buf, &buf_len, NULL, NULL);
278
408
  assert(err == 0);
279
409
 
280
410
  size_t str_len;
281
- err = hex_encode(buf, buf_len, NULL, &str_len);
411
+ err = hex_encode_utf8(buf, buf_len, NULL, &str_len);
282
412
  assert(err == 0);
283
413
 
284
414
  utf8_t *str = malloc(str_len);
285
- err = hex_encode(buf, buf_len, str, &str_len);
415
+ err = hex_encode_utf8(buf, buf_len, str, &str_len);
286
416
  assert(err == 0);
287
417
 
288
418
  js_value_t *result;
289
- err = js_create_string_utf8(env, str, str_len, &result);
419
+ err = js_create_external_string_latin1(env, str, str_len, bare_buffer__on_free_string, NULL, &result, NULL);
290
420
  assert(err == 0);
291
421
 
292
- free(str);
293
-
294
422
  return result;
295
423
  }
296
424
 
425
+ static uint32_t
426
+ bare_buffer_typed_write_hex (js_value_t *receiver, js_value_t *typedarray, js_value_t *string, js_typed_callback_info_t *info) {
427
+ int err;
428
+
429
+ js_env_t *env;
430
+ err = js_get_typed_callback_info(info, &env, NULL);
431
+ assert(err == 0);
432
+
433
+ void *buf;
434
+ size_t buf_len;
435
+
436
+ js_typedarray_view_t *buf_view;
437
+ err = js_get_typedarray_view(env, typedarray, NULL, &buf, &buf_len, &buf_view);
438
+ assert(err == 0);
439
+
440
+ js_string_encoding_t encoding;
441
+ const void *str;
442
+ size_t str_len;
443
+
444
+ js_string_view_t *str_view;
445
+ err = js_get_string_view(env, string, &encoding, &str, &str_len, &str_view);
446
+ assert(err == 0);
447
+
448
+ if (encoding == js_utf16le) {
449
+ err = hex_decode_utf16le(str, str_len, buf, &buf_len);
450
+ assert(err == 0);
451
+ } else {
452
+ err = hex_decode_utf8(str, str_len, buf, &buf_len);
453
+ assert(err == 0);
454
+ }
455
+
456
+ err = js_release_string_view(env, str_view);
457
+ assert(err == 0);
458
+
459
+ err = js_release_typedarray_view(env, buf_view);
460
+ assert(err == 0);
461
+
462
+ return buf_len;
463
+ }
464
+
297
465
  static js_value_t *
298
466
  bare_buffer_write_hex (js_env_t *env, js_callback_info_t *info) {
299
467
  int err;
@@ -306,23 +474,29 @@ bare_buffer_write_hex (js_env_t *env, js_callback_info_t *info) {
306
474
 
307
475
  assert(argc == 2);
308
476
 
309
- size_t buf_len;
310
477
  void *buf;
478
+ size_t buf_len;
311
479
  err = js_get_typedarray_info(env, argv[0], NULL, &buf, &buf_len, NULL, NULL);
312
480
  assert(err == 0);
313
481
 
482
+ js_string_encoding_t encoding;
483
+ const void *str;
314
484
  size_t str_len;
315
- err = js_get_value_string_utf8(env, argv[1], NULL, 0, &str_len);
316
- assert(err == 0);
317
485
 
318
- utf8_t *str = malloc(str_len);
319
- err = js_get_value_string_utf8(env, argv[1], str, str_len, NULL);
486
+ js_string_view_t *str_view;
487
+ err = js_get_string_view(env, argv[1], &encoding, &str, &str_len, &str_view);
320
488
  assert(err == 0);
321
489
 
322
- err = hex_decode(str, str_len, buf, &buf_len);
323
- assert(err == 0);
490
+ if (encoding == js_utf16le) {
491
+ err = hex_decode_utf16le(str, str_len, buf, &buf_len);
492
+ assert(err == 0);
493
+ } else {
494
+ err = hex_decode_utf8(str, str_len, buf, &buf_len);
495
+ assert(err == 0);
496
+ }
324
497
 
325
- free(str);
498
+ err = js_release_string_view(env, str_view);
499
+ assert(err == 0);
326
500
 
327
501
  js_value_t *result;
328
502
  err = js_create_uint32(env, (uint32_t) buf_len, &result);
@@ -331,17 +505,25 @@ bare_buffer_write_hex (js_env_t *env, js_callback_info_t *info) {
331
505
  return result;
332
506
  }
333
507
 
334
- static inline int
335
- bare_buffer__compare (void *a, size_t a_len, void *b, size_t b_len) {
336
- int r = memcmp(a, b, a_len < b_len ? a_len : b_len);
508
+ static int32_t
509
+ bare_buffer_typed_compare (js_value_t *receiver, js_value_t *source, js_value_t *target, js_typed_callback_info_t *info) {
510
+ int err;
337
511
 
338
- if (r == 0) {
339
- if (a_len < b_len) return -1;
340
- if (a_len > b_len) return 1;
341
- return 0;
342
- }
512
+ js_env_t *env;
513
+ err = js_get_typed_callback_info(info, &env, NULL);
514
+ assert(err == 0);
343
515
 
344
- return r < 0 ? -1 : 1;
516
+ void *a;
517
+ size_t a_len;
518
+ err = js_get_typedarray_info(env, source, NULL, &a, &a_len, NULL, NULL);
519
+ assert(err == 0);
520
+
521
+ void *b;
522
+ size_t b_len;
523
+ err = js_get_typedarray_info(env, target, NULL, &b, &b_len, NULL, NULL);
524
+ assert(err == 0);
525
+
526
+ return bare_buffer__memcmp(a, a_len, b, b_len);
345
527
  }
346
528
 
347
529
  static js_value_t *
@@ -356,18 +538,18 @@ bare_buffer_compare (js_env_t *env, js_callback_info_t *info) {
356
538
 
357
539
  assert(argc == 2);
358
540
 
359
- size_t a_len;
360
541
  void *a;
542
+ size_t a_len;
361
543
  err = js_get_typedarray_info(env, argv[0], NULL, &a, &a_len, NULL, NULL);
362
544
  assert(err == 0);
363
545
 
364
- size_t b_len;
365
546
  void *b;
547
+ size_t b_len;
366
548
  err = js_get_typedarray_info(env, argv[1], NULL, &b, &b_len, NULL, NULL);
367
549
  assert(err == 0);
368
550
 
369
551
  js_value_t *result;
370
- err = js_create_int32(env, bare_buffer__compare(a, a_len, b, b_len), &result);
552
+ err = js_create_int32(env, bare_buffer__memcmp(a, a_len, b, b_len), &result);
371
553
  assert(err == 0);
372
554
 
373
555
  return result;
@@ -403,12 +585,12 @@ bare_buffer_is_tagged (js_env_t *env, js_callback_info_t *info) {
403
585
 
404
586
  assert(argc == 1);
405
587
 
406
- bool is_buffer;
407
- err = js_check_type_tag(env, argv[0], &bare_buffer__tag, &is_buffer);
588
+ bool is_tagged;
589
+ err = js_check_type_tag(env, argv[0], &bare_buffer__tag, &is_tagged);
408
590
  assert(err == 0);
409
591
 
410
592
  js_value_t *result;
411
- err = js_get_boolean(env, is_buffer, &result);
593
+ err = js_get_boolean(env, is_tagged, &result);
412
594
  assert(err == 0);
413
595
 
414
596
  return result;
@@ -418,34 +600,130 @@ static js_value_t *
418
600
  bare_buffer_exports (js_env_t *env, js_value_t *exports) {
419
601
  int err;
420
602
 
421
- #define V(name, fn) \
603
+ #define V(name, untyped, signature, typed) \
422
604
  { \
423
605
  js_value_t *val; \
424
- err = js_create_function(env, name, -1, fn, NULL, &val); \
425
- assert(err == 0); \
606
+ if (signature) { \
607
+ err = js_create_typed_function(env, name, -1, untyped, signature, typed, NULL, &val); \
608
+ assert(err == 0); \
609
+ } else { \
610
+ err = js_create_function(env, name, -1, untyped, NULL, &val); \
611
+ assert(err == 0); \
612
+ } \
426
613
  err = js_set_named_property(env, exports, name, val); \
427
614
  assert(err == 0); \
428
615
  }
429
616
 
430
- V("alloc", bare_buffer_alloc);
431
- V("allocUnsafe", bare_buffer_alloc_unsafe);
432
-
433
- V("byteLengthUTF8", bare_buffer_byte_length_utf8);
434
- V("toStringUTF8", bare_buffer_to_string_utf8);
435
- V("writeUTF8", bare_buffer_write_utf8);
436
-
437
- V("toStringUTF16LE", bare_buffer_to_string_utf16le);
438
- V("writeUTF16LE", bare_buffer_write_utf16le);
439
-
440
- V("toStringBase64", bare_buffer_to_string_base64);
441
- V("writeBase64", bare_buffer_write_base64);
442
-
443
- V("toStringHex", bare_buffer_to_string_hex);
444
- V("writeHex", bare_buffer_write_hex);
445
-
446
- V("compare", bare_buffer_compare);
447
- V("tag", bare_buffer_tag);
448
- V("isTagged", bare_buffer_is_tagged);
617
+ V("alloc", bare_buffer_alloc, NULL, NULL);
618
+
619
+ V("allocUnsafe", bare_buffer_alloc_unsafe, NULL, NULL);
620
+
621
+ V(
622
+ "byteLengthUTF8",
623
+ bare_buffer_byte_length_utf8,
624
+ &((js_callback_signature_t) {
625
+ .version = 0,
626
+ .result = js_uint32,
627
+ .args_len = 2,
628
+ .args = (int[]) {
629
+ js_object,
630
+ js_string,
631
+ }
632
+ }),
633
+ bare_buffer_typed_byte_length_utf8
634
+ );
635
+
636
+ V("toStringUTF8", bare_buffer_to_string_utf8, NULL, NULL);
637
+
638
+ V(
639
+ "writeUTF8",
640
+ bare_buffer_write_utf8,
641
+ &((js_callback_signature_t) {
642
+ .version = 0,
643
+ .result = js_uint32,
644
+ .args_len = 3,
645
+ .args = (int[]) {
646
+ js_object,
647
+ js_object,
648
+ js_string,
649
+ }
650
+ }),
651
+ bare_buffer_typed_write_utf8
652
+ );
653
+
654
+ V("toStringUTF16LE", bare_buffer_to_string_utf16le, NULL, NULL);
655
+
656
+ V(
657
+ "writeUTF16LE",
658
+ bare_buffer_write_utf16le,
659
+ &((js_callback_signature_t) {
660
+ .version = 0,
661
+ .result = js_uint32,
662
+ .args_len = 3,
663
+ .args = (int[]) {
664
+ js_object,
665
+ js_object,
666
+ js_string,
667
+ }
668
+ }),
669
+ bare_buffer_typed_write_utf16le
670
+ );
671
+
672
+ V("toStringBase64", bare_buffer_to_string_base64, NULL, NULL);
673
+
674
+ V(
675
+ "writeBase64",
676
+ bare_buffer_write_base64,
677
+ &((js_callback_signature_t) {
678
+ .version = 0,
679
+ .result = js_uint32,
680
+ .args_len = 3,
681
+ .args = (int[]) {
682
+ js_object,
683
+ js_object,
684
+ js_string,
685
+ }
686
+ }),
687
+ bare_buffer_typed_write_base64
688
+ );
689
+
690
+ V("toStringHex", bare_buffer_to_string_hex, NULL, NULL);
691
+
692
+ V(
693
+ "writeHex",
694
+ bare_buffer_write_hex,
695
+ &((js_callback_signature_t) {
696
+ .version = 0,
697
+ .result = js_uint32,
698
+ .args_len = 3,
699
+ .args = (int[]) {
700
+ js_object,
701
+ js_object,
702
+ js_string,
703
+ }
704
+ }),
705
+ bare_buffer_typed_write_hex
706
+ );
707
+
708
+ V(
709
+ "compare",
710
+ bare_buffer_compare,
711
+ &((js_callback_signature_t) {
712
+ .version = 0,
713
+ .result = js_int32,
714
+ .args_len = 3,
715
+ .args = (int[]) {
716
+ js_object,
717
+ js_object,
718
+ js_object,
719
+ }
720
+ }),
721
+ bare_buffer_typed_compare
722
+ );
723
+
724
+ V("tag", bare_buffer_tag, NULL, NULL);
725
+
726
+ V("isTagged", bare_buffer_is_tagged, NULL, NULL);
449
727
  #undef V
450
728
 
451
729
  return exports;
package/index.d.ts CHANGED
@@ -136,7 +136,7 @@ declare class Buffer extends Uint8Array {
136
136
  }
137
137
 
138
138
  declare namespace Buffer {
139
- export { Buffer }
139
+ export { Buffer, BufferEncoding }
140
140
 
141
141
  export let poolSize: number
142
142
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bare-buffer",
3
- "version": "3.0.0-0",
3
+ "version": "3.0.0",
4
4
  "description": "Native buffers for JavaScript",
5
5
  "exports": {
6
6
  ".": {