bare-buffer 3.1.2 → 3.1.4
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 +63 -87
- package/index.js +51 -32
- package/package.json +1 -1
- package/prebuilds/android-arm/bare-buffer.bare +0 -0
- package/prebuilds/android-arm64/bare-buffer.bare +0 -0
- package/prebuilds/android-ia32/bare-buffer.bare +0 -0
- package/prebuilds/android-x64/bare-buffer.bare +0 -0
- package/prebuilds/darwin-arm64/bare-buffer.bare +0 -0
- package/prebuilds/darwin-x64/bare-buffer.bare +0 -0
- package/prebuilds/ios-arm64/bare-buffer.bare +0 -0
- package/prebuilds/ios-arm64-simulator/bare-buffer.bare +0 -0
- package/prebuilds/ios-x64-simulator/bare-buffer.bare +0 -0
- package/prebuilds/linux-arm64/bare-buffer.bare +0 -0
- package/prebuilds/linux-x64/bare-buffer.bare +0 -0
- package/prebuilds/win32-arm64/bare-buffer.bare +0 -0
- package/prebuilds/win32-x64/bare-buffer.bare +0 -0
package/binding.c
CHANGED
|
@@ -7,8 +7,6 @@
|
|
|
7
7
|
#include <string.h>
|
|
8
8
|
#include <utf.h>
|
|
9
9
|
|
|
10
|
-
static js_type_tag_t bare_buffer__tag = {0xfea3e944b70b0812, 0xe53bb5c343c040b6};
|
|
11
|
-
|
|
12
10
|
static inline int
|
|
13
11
|
bare_buffer__memcmp(void *a, size_t a_len, void *b, size_t b_len) {
|
|
14
12
|
int r = memcmp(a, b, a_len < b_len ? a_len : b_len);
|
|
@@ -143,18 +141,20 @@ bare_buffer_typed_write_utf8(js_value_t *receiver, js_value_t *typedarray, js_va
|
|
|
143
141
|
err = js_get_typed_callback_info(info, &env, NULL);
|
|
144
142
|
assert(err == 0);
|
|
145
143
|
|
|
144
|
+
js_handle_scope_t *scope;
|
|
145
|
+
err = js_open_handle_scope(env, &scope);
|
|
146
|
+
assert(err == 0);
|
|
147
|
+
|
|
146
148
|
void *buf;
|
|
147
149
|
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);
|
|
150
|
+
err = js_get_typedarray_info(env, typedarray, NULL, &buf, &buf_len, NULL, NULL);
|
|
151
151
|
assert(err == 0);
|
|
152
152
|
|
|
153
153
|
size_t str_len;
|
|
154
154
|
err = js_get_value_string_utf8(env, string, buf, buf_len, &str_len);
|
|
155
155
|
assert(err == 0);
|
|
156
156
|
|
|
157
|
-
err =
|
|
157
|
+
err = js_close_handle_scope(env, scope);
|
|
158
158
|
assert(err == 0);
|
|
159
159
|
|
|
160
160
|
return (uint32_t) str_len;
|
|
@@ -222,11 +222,13 @@ bare_buffer_typed_write_utf16le(js_value_t *receiver, js_value_t *typedarray, js
|
|
|
222
222
|
err = js_get_typed_callback_info(info, &env, NULL);
|
|
223
223
|
assert(err == 0);
|
|
224
224
|
|
|
225
|
+
js_handle_scope_t *scope;
|
|
226
|
+
err = js_open_handle_scope(env, &scope);
|
|
227
|
+
assert(err == 0);
|
|
228
|
+
|
|
225
229
|
void *buf;
|
|
226
230
|
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);
|
|
231
|
+
err = js_get_typedarray_info(env, typedarray, NULL, &buf, &buf_len, NULL, NULL);
|
|
230
232
|
assert(err == 0);
|
|
231
233
|
|
|
232
234
|
buf_len /= sizeof(utf16_t);
|
|
@@ -237,7 +239,7 @@ bare_buffer_typed_write_utf16le(js_value_t *receiver, js_value_t *typedarray, js
|
|
|
237
239
|
|
|
238
240
|
str_len *= sizeof(utf16_t);
|
|
239
241
|
|
|
240
|
-
err =
|
|
242
|
+
err = js_close_handle_scope(env, scope);
|
|
241
243
|
assert(err == 0);
|
|
242
244
|
|
|
243
245
|
return (uint32_t) str_len;
|
|
@@ -307,18 +309,20 @@ bare_buffer_typed_write_latin1(js_value_t *receiver, js_value_t *typedarray, js_
|
|
|
307
309
|
err = js_get_typed_callback_info(info, &env, NULL);
|
|
308
310
|
assert(err == 0);
|
|
309
311
|
|
|
312
|
+
js_handle_scope_t *scope;
|
|
313
|
+
err = js_open_handle_scope(env, &scope);
|
|
314
|
+
assert(err == 0);
|
|
315
|
+
|
|
310
316
|
void *buf;
|
|
311
317
|
size_t buf_len;
|
|
312
|
-
|
|
313
|
-
js_typedarray_view_t *buf_view;
|
|
314
|
-
err = js_get_typedarray_view(env, typedarray, NULL, &buf, &buf_len, &buf_view);
|
|
318
|
+
err = js_get_typedarray_info(env, typedarray, NULL, &buf, &buf_len, NULL, NULL);
|
|
315
319
|
assert(err == 0);
|
|
316
320
|
|
|
317
321
|
size_t str_len;
|
|
318
322
|
err = js_get_value_string_latin1(env, string, buf, buf_len, &str_len);
|
|
319
323
|
assert(err == 0);
|
|
320
324
|
|
|
321
|
-
err =
|
|
325
|
+
err = js_close_handle_scope(env, scope);
|
|
322
326
|
assert(err == 0);
|
|
323
327
|
|
|
324
328
|
return (uint32_t) str_len;
|
|
@@ -392,11 +396,13 @@ bare_buffer_typed_write_base64(js_value_t *receiver, js_value_t *typedarray, js_
|
|
|
392
396
|
err = js_get_typed_callback_info(info, &env, NULL);
|
|
393
397
|
assert(err == 0);
|
|
394
398
|
|
|
399
|
+
js_handle_scope_t *scope;
|
|
400
|
+
err = js_open_handle_scope(env, &scope);
|
|
401
|
+
assert(err == 0);
|
|
402
|
+
|
|
395
403
|
void *buf;
|
|
396
404
|
size_t buf_len;
|
|
397
|
-
|
|
398
|
-
js_typedarray_view_t *buf_view;
|
|
399
|
-
err = js_get_typedarray_view(env, typedarray, NULL, &buf, &buf_len, &buf_view);
|
|
405
|
+
err = js_get_typedarray_info(env, typedarray, NULL, &buf, &buf_len, NULL, NULL);
|
|
400
406
|
assert(err == 0);
|
|
401
407
|
|
|
402
408
|
js_string_encoding_t encoding;
|
|
@@ -418,7 +424,7 @@ bare_buffer_typed_write_base64(js_value_t *receiver, js_value_t *typedarray, js_
|
|
|
418
424
|
err = js_release_string_view(env, str_view);
|
|
419
425
|
assert(err == 0);
|
|
420
426
|
|
|
421
|
-
err =
|
|
427
|
+
err = js_close_handle_scope(env, scope);
|
|
422
428
|
assert(err == 0);
|
|
423
429
|
|
|
424
430
|
return buf_len;
|
|
@@ -507,11 +513,13 @@ bare_buffer_typed_write_hex(js_value_t *receiver, js_value_t *typedarray, js_val
|
|
|
507
513
|
err = js_get_typed_callback_info(info, &env, NULL);
|
|
508
514
|
assert(err == 0);
|
|
509
515
|
|
|
516
|
+
js_handle_scope_t *scope;
|
|
517
|
+
err = js_open_handle_scope(env, &scope);
|
|
518
|
+
assert(err == 0);
|
|
519
|
+
|
|
510
520
|
void *buf;
|
|
511
521
|
size_t buf_len;
|
|
512
|
-
|
|
513
|
-
js_typedarray_view_t *buf_view;
|
|
514
|
-
err = js_get_typedarray_view(env, typedarray, NULL, &buf, &buf_len, &buf_view);
|
|
522
|
+
err = js_get_typedarray_info(env, typedarray, NULL, &buf, &buf_len, NULL, NULL);
|
|
515
523
|
assert(err == 0);
|
|
516
524
|
|
|
517
525
|
js_string_encoding_t encoding;
|
|
@@ -533,7 +541,7 @@ bare_buffer_typed_write_hex(js_value_t *receiver, js_value_t *typedarray, js_val
|
|
|
533
541
|
err = js_release_string_view(env, str_view);
|
|
534
542
|
assert(err == 0);
|
|
535
543
|
|
|
536
|
-
err =
|
|
544
|
+
err = js_close_handle_scope(env, scope);
|
|
537
545
|
assert(err == 0);
|
|
538
546
|
|
|
539
547
|
return buf_len;
|
|
@@ -583,7 +591,16 @@ bare_buffer_write_hex(js_env_t *env, js_callback_info_t *info) {
|
|
|
583
591
|
}
|
|
584
592
|
|
|
585
593
|
static int32_t
|
|
586
|
-
bare_buffer_typed_compare(
|
|
594
|
+
bare_buffer_typed_compare(
|
|
595
|
+
js_value_t *receiver,
|
|
596
|
+
js_value_t *a_handle,
|
|
597
|
+
uint32_t a_offset,
|
|
598
|
+
uint32_t a_len,
|
|
599
|
+
js_value_t *b_handle,
|
|
600
|
+
uint32_t b_offset,
|
|
601
|
+
uint32_t b_len,
|
|
602
|
+
js_typed_callback_info_t *info
|
|
603
|
+
) {
|
|
587
604
|
int err;
|
|
588
605
|
|
|
589
606
|
js_env_t *env;
|
|
@@ -591,95 +608,54 @@ bare_buffer_typed_compare(js_value_t *receiver, js_value_t *source, js_value_t *
|
|
|
591
608
|
assert(err == 0);
|
|
592
609
|
|
|
593
610
|
void *a;
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
js_typedarray_view_t *a_view;
|
|
597
|
-
err = js_get_typedarray_view(env, source, NULL, &a, &a_len, &a_view);
|
|
611
|
+
err = js_get_arraybuffer_info(env, a_handle, &a, NULL);
|
|
598
612
|
assert(err == 0);
|
|
599
613
|
|
|
600
614
|
void *b;
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
js_typedarray_view_t *b_view;
|
|
604
|
-
err = js_get_typedarray_view(env, target, NULL, &b, &b_len, &b_view);
|
|
605
|
-
assert(err == 0);
|
|
606
|
-
|
|
607
|
-
int result = bare_buffer__memcmp(a, a_len, b, b_len);
|
|
608
|
-
|
|
609
|
-
err = js_release_typedarray_view(env, a_view);
|
|
610
|
-
assert(err == 0);
|
|
611
|
-
|
|
612
|
-
err = js_release_typedarray_view(env, b_view);
|
|
615
|
+
err = js_get_arraybuffer_info(env, b_handle, &b, NULL);
|
|
613
616
|
assert(err == 0);
|
|
614
617
|
|
|
615
|
-
return
|
|
618
|
+
return bare_buffer__memcmp(&a[a_offset], a_len, &b[b_offset], b_len);
|
|
616
619
|
}
|
|
617
620
|
|
|
618
621
|
static js_value_t *
|
|
619
622
|
bare_buffer_compare(js_env_t *env, js_callback_info_t *info) {
|
|
620
623
|
int err;
|
|
621
624
|
|
|
622
|
-
size_t argc =
|
|
623
|
-
js_value_t *argv[
|
|
625
|
+
size_t argc = 6;
|
|
626
|
+
js_value_t *argv[6];
|
|
624
627
|
|
|
625
628
|
err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
|
|
626
629
|
assert(err == 0);
|
|
627
630
|
|
|
628
|
-
assert(argc ==
|
|
631
|
+
assert(argc == 6);
|
|
629
632
|
|
|
630
633
|
void *a;
|
|
631
|
-
|
|
632
|
-
err = js_get_typedarray_info(env, argv[0], NULL, &a, &a_len, NULL, NULL);
|
|
633
|
-
assert(err == 0);
|
|
634
|
-
|
|
635
|
-
void *b;
|
|
636
|
-
size_t b_len;
|
|
637
|
-
err = js_get_typedarray_info(env, argv[1], NULL, &b, &b_len, NULL, NULL);
|
|
634
|
+
err = js_get_arraybuffer_info(env, argv[0], &a, NULL);
|
|
638
635
|
assert(err == 0);
|
|
639
636
|
|
|
640
|
-
|
|
641
|
-
err =
|
|
637
|
+
uint32_t a_offset;
|
|
638
|
+
err = js_get_value_uint32(env, argv[1], &a_offset);
|
|
642
639
|
assert(err == 0);
|
|
643
640
|
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
static js_value_t *
|
|
648
|
-
bare_buffer_tag(js_env_t *env, js_callback_info_t *info) {
|
|
649
|
-
int err;
|
|
650
|
-
|
|
651
|
-
size_t argc = 1;
|
|
652
|
-
js_value_t *argv[1];
|
|
653
|
-
|
|
654
|
-
err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
|
|
641
|
+
uint32_t a_len;
|
|
642
|
+
err = js_get_value_uint32(env, argv[2], &a_len);
|
|
655
643
|
assert(err == 0);
|
|
656
644
|
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
err = js_add_type_tag(env, argv[0], &bare_buffer__tag);
|
|
645
|
+
void *b;
|
|
646
|
+
err = js_get_arraybuffer_info(env, argv[3], &b, NULL);
|
|
660
647
|
assert(err == 0);
|
|
661
648
|
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
static js_value_t *
|
|
666
|
-
bare_buffer_is_tagged(js_env_t *env, js_callback_info_t *info) {
|
|
667
|
-
int err;
|
|
668
|
-
|
|
669
|
-
size_t argc = 1;
|
|
670
|
-
js_value_t *argv[1];
|
|
671
|
-
|
|
672
|
-
err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
|
|
649
|
+
uint32_t b_offset;
|
|
650
|
+
err = js_get_value_uint32(env, argv[4], &b_offset);
|
|
673
651
|
assert(err == 0);
|
|
674
652
|
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
bool is_tagged;
|
|
678
|
-
err = js_check_type_tag(env, argv[0], &bare_buffer__tag, &is_tagged);
|
|
653
|
+
uint32_t b_len;
|
|
654
|
+
err = js_get_value_uint32(env, argv[5], &b_len);
|
|
679
655
|
assert(err == 0);
|
|
680
656
|
|
|
681
657
|
js_value_t *result;
|
|
682
|
-
err =
|
|
658
|
+
err = js_create_int32(env, bare_buffer__memcmp(&a[a_offset], a_len, &b[b_offset], b_len), &result);
|
|
683
659
|
assert(err == 0);
|
|
684
660
|
|
|
685
661
|
return result;
|
|
@@ -818,19 +794,19 @@ bare_buffer_exports(js_env_t *env, js_value_t *exports) {
|
|
|
818
794
|
&((js_callback_signature_t) {
|
|
819
795
|
.version = 0,
|
|
820
796
|
.result = js_int32,
|
|
821
|
-
.args_len =
|
|
797
|
+
.args_len = 7,
|
|
822
798
|
.args = (int[]) {
|
|
823
799
|
js_object,
|
|
824
800
|
js_object,
|
|
801
|
+
js_uint32,
|
|
802
|
+
js_uint32,
|
|
825
803
|
js_object,
|
|
804
|
+
js_uint32,
|
|
805
|
+
js_uint32,
|
|
826
806
|
}
|
|
827
807
|
}),
|
|
828
808
|
bare_buffer_typed_compare
|
|
829
809
|
);
|
|
830
|
-
|
|
831
|
-
V("tag", bare_buffer_tag, NULL, NULL);
|
|
832
|
-
|
|
833
|
-
V("isTagged", bare_buffer_is_tagged, NULL, NULL);
|
|
834
810
|
#undef V
|
|
835
811
|
|
|
836
812
|
return exports;
|
package/index.js
CHANGED
|
@@ -7,11 +7,13 @@ const utf16le = require('./lib/utf16le')
|
|
|
7
7
|
const latin1 = require('./lib/latin1')
|
|
8
8
|
const binding = require('./binding')
|
|
9
9
|
|
|
10
|
+
const kind = Symbol.for('bare.buffer.kind')
|
|
11
|
+
|
|
10
12
|
let poolSize = 0
|
|
11
13
|
|
|
12
14
|
module.exports = exports = class Buffer extends Uint8Array {
|
|
13
|
-
static {
|
|
14
|
-
|
|
15
|
+
static get [kind]() {
|
|
16
|
+
return 0 // Compatibility version
|
|
15
17
|
}
|
|
16
18
|
|
|
17
19
|
static get poolSize() {
|
|
@@ -60,8 +62,8 @@ module.exports = exports = class Buffer extends Uint8Array {
|
|
|
60
62
|
super(arrayBuffer, offset, length)
|
|
61
63
|
}
|
|
62
64
|
|
|
63
|
-
[
|
|
64
|
-
return Buffer
|
|
65
|
+
get [kind]() {
|
|
66
|
+
return Buffer[kind]
|
|
65
67
|
}
|
|
66
68
|
|
|
67
69
|
copy(target, targetStart = 0, sourceStart = 0, sourceEnd = this.byteLength) {
|
|
@@ -104,7 +106,16 @@ module.exports = exports = class Buffer extends Uint8Array {
|
|
|
104
106
|
|
|
105
107
|
if (source.byteLength !== target.byteLength) return false
|
|
106
108
|
|
|
107
|
-
return
|
|
109
|
+
return (
|
|
110
|
+
binding.compare(
|
|
111
|
+
source.buffer,
|
|
112
|
+
source.byteOffset,
|
|
113
|
+
source.byteLength,
|
|
114
|
+
target.buffer,
|
|
115
|
+
target.byteOffset,
|
|
116
|
+
target.byteLength
|
|
117
|
+
) === 0
|
|
118
|
+
)
|
|
108
119
|
}
|
|
109
120
|
|
|
110
121
|
compare(
|
|
@@ -118,29 +129,36 @@ module.exports = exports = class Buffer extends Uint8Array {
|
|
|
118
129
|
|
|
119
130
|
if (source === target) return 0
|
|
120
131
|
|
|
121
|
-
if (arguments.length
|
|
132
|
+
if (arguments.length > 1) {
|
|
133
|
+
if (targetStart < 0) targetStart = 0
|
|
134
|
+
if (targetStart > target.byteLength) targetStart = target.byteLength
|
|
122
135
|
|
|
123
|
-
|
|
124
|
-
|
|
136
|
+
if (targetEnd < targetStart) targetEnd = targetStart
|
|
137
|
+
if (targetEnd > target.byteLength) targetEnd = target.byteLength
|
|
125
138
|
|
|
126
|
-
|
|
127
|
-
|
|
139
|
+
if (sourceStart < 0) sourceStart = 0
|
|
140
|
+
if (sourceStart > source.byteLength) sourceStart = source.byteLength
|
|
128
141
|
|
|
129
|
-
|
|
130
|
-
|
|
142
|
+
if (sourceEnd < sourceStart) sourceEnd = sourceStart
|
|
143
|
+
if (sourceEnd > source.byteLength) sourceEnd = source.byteLength
|
|
131
144
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
if (sourceStart !== 0 || sourceEnd !== source.byteLength) {
|
|
136
|
-
source = source.subarray(sourceStart, sourceEnd)
|
|
137
|
-
}
|
|
145
|
+
if (sourceStart !== 0 || sourceEnd !== source.byteLength) {
|
|
146
|
+
source = source.subarray(sourceStart, sourceEnd)
|
|
147
|
+
}
|
|
138
148
|
|
|
139
|
-
|
|
140
|
-
|
|
149
|
+
if (targetStart !== 0 || targetEnd !== target.byteLength) {
|
|
150
|
+
target = target.subarray(targetStart, targetEnd)
|
|
151
|
+
}
|
|
141
152
|
}
|
|
142
153
|
|
|
143
|
-
return binding.compare(
|
|
154
|
+
return binding.compare(
|
|
155
|
+
source.buffer,
|
|
156
|
+
source.byteOffset,
|
|
157
|
+
source.byteLength,
|
|
158
|
+
target.buffer,
|
|
159
|
+
target.byteOffset,
|
|
160
|
+
target.byteLength
|
|
161
|
+
)
|
|
144
162
|
}
|
|
145
163
|
|
|
146
164
|
fill(value, offset = 0, end = this.byteLength, encoding = 'utf8') {
|
|
@@ -545,17 +563,11 @@ function viewOf(buffer) {
|
|
|
545
563
|
}
|
|
546
564
|
|
|
547
565
|
exports.isBuffer = function isBuffer(value) {
|
|
548
|
-
if (
|
|
549
|
-
|
|
550
|
-
let constructor = value.constructor
|
|
551
|
-
|
|
552
|
-
while (typeof constructor === 'function') {
|
|
553
|
-
if (binding.isTagged(constructor)) return true
|
|
554
|
-
|
|
555
|
-
constructor = Reflect.getPrototypeOf(constructor)
|
|
556
|
-
}
|
|
566
|
+
if (value instanceof Buffer) return true
|
|
557
567
|
|
|
558
|
-
return
|
|
568
|
+
return (
|
|
569
|
+
typeof value === 'object' && value !== null && value[kind] === Buffer[kind]
|
|
570
|
+
)
|
|
559
571
|
}
|
|
560
572
|
|
|
561
573
|
exports.isEncoding = function isEncoding(encoding) {
|
|
@@ -590,7 +602,14 @@ exports.byteLength = function byteLength(string, encoding) {
|
|
|
590
602
|
}
|
|
591
603
|
|
|
592
604
|
exports.compare = function compare(a, b) {
|
|
593
|
-
return binding.compare(
|
|
605
|
+
return binding.compare(
|
|
606
|
+
a.buffer,
|
|
607
|
+
a.byteOffset,
|
|
608
|
+
a.byteLength,
|
|
609
|
+
b.buffer,
|
|
610
|
+
b.byteOffset,
|
|
611
|
+
b.byteLength
|
|
612
|
+
)
|
|
594
613
|
}
|
|
595
614
|
|
|
596
615
|
exports.concat = function concat(buffers, length) {
|
package/package.json
CHANGED
|
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
|