bare-buffer 3.1.2 → 3.1.3

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 CHANGED
@@ -143,18 +143,20 @@ bare_buffer_typed_write_utf8(js_value_t *receiver, js_value_t *typedarray, js_va
143
143
  err = js_get_typed_callback_info(info, &env, NULL);
144
144
  assert(err == 0);
145
145
 
146
+ js_handle_scope_t *scope;
147
+ err = js_open_handle_scope(env, &scope);
148
+ assert(err == 0);
149
+
146
150
  void *buf;
147
151
  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);
152
+ err = js_get_typedarray_info(env, typedarray, NULL, &buf, &buf_len, NULL, NULL);
151
153
  assert(err == 0);
152
154
 
153
155
  size_t str_len;
154
156
  err = js_get_value_string_utf8(env, string, buf, buf_len, &str_len);
155
157
  assert(err == 0);
156
158
 
157
- err = js_release_typedarray_view(env, buf_view);
159
+ err = js_close_handle_scope(env, scope);
158
160
  assert(err == 0);
159
161
 
160
162
  return (uint32_t) str_len;
@@ -222,11 +224,13 @@ bare_buffer_typed_write_utf16le(js_value_t *receiver, js_value_t *typedarray, js
222
224
  err = js_get_typed_callback_info(info, &env, NULL);
223
225
  assert(err == 0);
224
226
 
227
+ js_handle_scope_t *scope;
228
+ err = js_open_handle_scope(env, &scope);
229
+ assert(err == 0);
230
+
225
231
  void *buf;
226
232
  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);
233
+ err = js_get_typedarray_info(env, typedarray, NULL, &buf, &buf_len, NULL, NULL);
230
234
  assert(err == 0);
231
235
 
232
236
  buf_len /= sizeof(utf16_t);
@@ -237,7 +241,7 @@ bare_buffer_typed_write_utf16le(js_value_t *receiver, js_value_t *typedarray, js
237
241
 
238
242
  str_len *= sizeof(utf16_t);
239
243
 
240
- err = js_release_typedarray_view(env, buf_view);
244
+ err = js_close_handle_scope(env, scope);
241
245
  assert(err == 0);
242
246
 
243
247
  return (uint32_t) str_len;
@@ -307,18 +311,20 @@ bare_buffer_typed_write_latin1(js_value_t *receiver, js_value_t *typedarray, js_
307
311
  err = js_get_typed_callback_info(info, &env, NULL);
308
312
  assert(err == 0);
309
313
 
314
+ js_handle_scope_t *scope;
315
+ err = js_open_handle_scope(env, &scope);
316
+ assert(err == 0);
317
+
310
318
  void *buf;
311
319
  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);
320
+ err = js_get_typedarray_info(env, typedarray, NULL, &buf, &buf_len, NULL, NULL);
315
321
  assert(err == 0);
316
322
 
317
323
  size_t str_len;
318
324
  err = js_get_value_string_latin1(env, string, buf, buf_len, &str_len);
319
325
  assert(err == 0);
320
326
 
321
- err = js_release_typedarray_view(env, buf_view);
327
+ err = js_close_handle_scope(env, scope);
322
328
  assert(err == 0);
323
329
 
324
330
  return (uint32_t) str_len;
@@ -392,11 +398,13 @@ bare_buffer_typed_write_base64(js_value_t *receiver, js_value_t *typedarray, js_
392
398
  err = js_get_typed_callback_info(info, &env, NULL);
393
399
  assert(err == 0);
394
400
 
401
+ js_handle_scope_t *scope;
402
+ err = js_open_handle_scope(env, &scope);
403
+ assert(err == 0);
404
+
395
405
  void *buf;
396
406
  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);
407
+ err = js_get_typedarray_info(env, typedarray, NULL, &buf, &buf_len, NULL, NULL);
400
408
  assert(err == 0);
401
409
 
402
410
  js_string_encoding_t encoding;
@@ -418,7 +426,7 @@ bare_buffer_typed_write_base64(js_value_t *receiver, js_value_t *typedarray, js_
418
426
  err = js_release_string_view(env, str_view);
419
427
  assert(err == 0);
420
428
 
421
- err = js_release_typedarray_view(env, buf_view);
429
+ err = js_close_handle_scope(env, scope);
422
430
  assert(err == 0);
423
431
 
424
432
  return buf_len;
@@ -507,11 +515,13 @@ bare_buffer_typed_write_hex(js_value_t *receiver, js_value_t *typedarray, js_val
507
515
  err = js_get_typed_callback_info(info, &env, NULL);
508
516
  assert(err == 0);
509
517
 
518
+ js_handle_scope_t *scope;
519
+ err = js_open_handle_scope(env, &scope);
520
+ assert(err == 0);
521
+
510
522
  void *buf;
511
523
  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);
524
+ err = js_get_typedarray_info(env, typedarray, NULL, &buf, &buf_len, NULL, NULL);
515
525
  assert(err == 0);
516
526
 
517
527
  js_string_encoding_t encoding;
@@ -533,7 +543,7 @@ bare_buffer_typed_write_hex(js_value_t *receiver, js_value_t *typedarray, js_val
533
543
  err = js_release_string_view(env, str_view);
534
544
  assert(err == 0);
535
545
 
536
- err = js_release_typedarray_view(env, buf_view);
546
+ err = js_close_handle_scope(env, scope);
537
547
  assert(err == 0);
538
548
 
539
549
  return buf_len;
@@ -583,7 +593,16 @@ bare_buffer_write_hex(js_env_t *env, js_callback_info_t *info) {
583
593
  }
584
594
 
585
595
  static int32_t
586
- bare_buffer_typed_compare(js_value_t *receiver, js_value_t *source, js_value_t *target, js_typed_callback_info_t *info) {
596
+ bare_buffer_typed_compare(
597
+ js_value_t *receiver,
598
+ js_value_t *a_handle,
599
+ uint32_t a_offset,
600
+ uint32_t a_len,
601
+ js_value_t *b_handle,
602
+ uint32_t b_offset,
603
+ uint32_t b_len,
604
+ js_typed_callback_info_t *info
605
+ ) {
587
606
  int err;
588
607
 
589
608
  js_env_t *env;
@@ -591,54 +610,54 @@ bare_buffer_typed_compare(js_value_t *receiver, js_value_t *source, js_value_t *
591
610
  assert(err == 0);
592
611
 
593
612
  void *a;
594
- size_t a_len;
595
-
596
- js_typedarray_view_t *a_view;
597
- err = js_get_typedarray_view(env, source, NULL, &a, &a_len, &a_view);
613
+ err = js_get_arraybuffer_info(env, a_handle, &a, NULL);
598
614
  assert(err == 0);
599
615
 
600
616
  void *b;
601
- size_t b_len;
602
-
603
- js_typedarray_view_t *b_view;
604
- err = js_get_typedarray_view(env, target, NULL, &b, &b_len, &b_view);
617
+ err = js_get_arraybuffer_info(env, b_handle, &b, NULL);
605
618
  assert(err == 0);
606
619
 
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);
613
- assert(err == 0);
614
-
615
- return result;
620
+ return bare_buffer__memcmp(&a[a_offset], a_len, &b[b_offset], b_len);
616
621
  }
617
622
 
618
623
  static js_value_t *
619
624
  bare_buffer_compare(js_env_t *env, js_callback_info_t *info) {
620
625
  int err;
621
626
 
622
- size_t argc = 2;
623
- js_value_t *argv[2];
627
+ size_t argc = 6;
628
+ js_value_t *argv[6];
624
629
 
625
630
  err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
626
631
  assert(err == 0);
627
632
 
628
- assert(argc == 2);
633
+ assert(argc == 6);
629
634
 
630
635
  void *a;
631
- size_t a_len;
632
- err = js_get_typedarray_info(env, argv[0], NULL, &a, &a_len, NULL, NULL);
636
+ err = js_get_arraybuffer_info(env, argv[0], &a, NULL);
637
+ assert(err == 0);
638
+
639
+ uint32_t a_offset;
640
+ err = js_get_value_uint32(env, argv[1], &a_offset);
641
+ assert(err == 0);
642
+
643
+ uint32_t a_len;
644
+ err = js_get_value_uint32(env, argv[2], &a_len);
633
645
  assert(err == 0);
634
646
 
635
647
  void *b;
636
- size_t b_len;
637
- err = js_get_typedarray_info(env, argv[1], NULL, &b, &b_len, NULL, NULL);
648
+ err = js_get_arraybuffer_info(env, argv[3], &b, NULL);
649
+ assert(err == 0);
650
+
651
+ uint32_t b_offset;
652
+ err = js_get_value_uint32(env, argv[4], &b_offset);
653
+ assert(err == 0);
654
+
655
+ uint32_t b_len;
656
+ err = js_get_value_uint32(env, argv[5], &b_len);
638
657
  assert(err == 0);
639
658
 
640
659
  js_value_t *result;
641
- err = js_create_int32(env, bare_buffer__memcmp(a, a_len, b, b_len), &result);
660
+ err = js_create_int32(env, bare_buffer__memcmp(&a[a_offset], a_len, &b[b_offset], b_len), &result);
642
661
  assert(err == 0);
643
662
 
644
663
  return result;
@@ -818,11 +837,15 @@ bare_buffer_exports(js_env_t *env, js_value_t *exports) {
818
837
  &((js_callback_signature_t) {
819
838
  .version = 0,
820
839
  .result = js_int32,
821
- .args_len = 3,
840
+ .args_len = 7,
822
841
  .args = (int[]) {
823
842
  js_object,
824
843
  js_object,
844
+ js_uint32,
845
+ js_uint32,
825
846
  js_object,
847
+ js_uint32,
848
+ js_uint32,
826
849
  }
827
850
  }),
828
851
  bare_buffer_typed_compare
package/index.js CHANGED
@@ -104,7 +104,16 @@ module.exports = exports = class Buffer extends Uint8Array {
104
104
 
105
105
  if (source.byteLength !== target.byteLength) return false
106
106
 
107
- return binding.compare(source, target) === 0
107
+ return (
108
+ binding.compare(
109
+ source.buffer,
110
+ source.byteOffset,
111
+ source.byteLength,
112
+ target.buffer,
113
+ target.byteOffset,
114
+ target.byteLength
115
+ ) === 0
116
+ )
108
117
  }
109
118
 
110
119
  compare(
@@ -118,29 +127,36 @@ module.exports = exports = class Buffer extends Uint8Array {
118
127
 
119
128
  if (source === target) return 0
120
129
 
121
- if (arguments.length === 1) return binding.compare(source, target)
130
+ if (arguments.length > 1) {
131
+ if (targetStart < 0) targetStart = 0
132
+ if (targetStart > target.byteLength) targetStart = target.byteLength
122
133
 
123
- if (targetStart < 0) targetStart = 0
124
- if (targetStart > target.byteLength) targetStart = target.byteLength
134
+ if (targetEnd < targetStart) targetEnd = targetStart
135
+ if (targetEnd > target.byteLength) targetEnd = target.byteLength
125
136
 
126
- if (targetEnd < targetStart) targetEnd = targetStart
127
- if (targetEnd > target.byteLength) targetEnd = target.byteLength
137
+ if (sourceStart < 0) sourceStart = 0
138
+ if (sourceStart > source.byteLength) sourceStart = source.byteLength
128
139
 
129
- if (sourceStart < 0) sourceStart = 0
130
- if (sourceStart > source.byteLength) sourceStart = source.byteLength
140
+ if (sourceEnd < sourceStart) sourceEnd = sourceStart
141
+ if (sourceEnd > source.byteLength) sourceEnd = source.byteLength
131
142
 
132
- if (sourceEnd < sourceStart) sourceEnd = sourceStart
133
- if (sourceEnd > source.byteLength) sourceEnd = source.byteLength
134
-
135
- if (sourceStart !== 0 || sourceEnd !== source.byteLength) {
136
- source = source.subarray(sourceStart, sourceEnd)
137
- }
143
+ if (sourceStart !== 0 || sourceEnd !== source.byteLength) {
144
+ source = source.subarray(sourceStart, sourceEnd)
145
+ }
138
146
 
139
- if (targetStart !== 0 || targetEnd !== target.byteLength) {
140
- target = target.subarray(targetStart, targetEnd)
147
+ if (targetStart !== 0 || targetEnd !== target.byteLength) {
148
+ target = target.subarray(targetStart, targetEnd)
149
+ }
141
150
  }
142
151
 
143
- return binding.compare(source, target)
152
+ return binding.compare(
153
+ source.buffer,
154
+ source.byteOffset,
155
+ source.byteLength,
156
+ target.buffer,
157
+ target.byteOffset,
158
+ target.byteLength
159
+ )
144
160
  }
145
161
 
146
162
  fill(value, offset = 0, end = this.byteLength, encoding = 'utf8') {
@@ -545,6 +561,7 @@ function viewOf(buffer) {
545
561
  }
546
562
 
547
563
  exports.isBuffer = function isBuffer(value) {
564
+ if (value instanceof Buffer) return true
548
565
  if (typeof value !== 'object' || value === null) return false
549
566
 
550
567
  let constructor = value.constructor
@@ -590,7 +607,14 @@ exports.byteLength = function byteLength(string, encoding) {
590
607
  }
591
608
 
592
609
  exports.compare = function compare(a, b) {
593
- return binding.compare(a, b)
610
+ return binding.compare(
611
+ a.buffer,
612
+ a.byteOffset,
613
+ a.byteLength,
614
+ b.buffer,
615
+ b.byteOffset,
616
+ b.byteLength
617
+ )
594
618
  }
595
619
 
596
620
  exports.concat = function concat(buffers, length) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bare-buffer",
3
- "version": "3.1.2",
3
+ "version": "3.1.3",
4
4
  "description": "Native buffers for JavaScript",
5
5
  "exports": {
6
6
  "./package": "./package.json",