bare-buffer 3.2.0 → 3.3.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 +1 -1
- package/binding.c +76 -4
- package/index.js +3 -1
- package/lib/base64url.js +27 -0
- 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/CMakeLists.txt
CHANGED
|
@@ -6,7 +6,7 @@ find_package(cmake-fetch REQUIRED PATHS node_modules/cmake-fetch)
|
|
|
6
6
|
project(bare_buffer C)
|
|
7
7
|
|
|
8
8
|
fetch_package("github:holepunchto/libutf#9509b28")
|
|
9
|
-
fetch_package("github:holepunchto/libbase64#
|
|
9
|
+
fetch_package("github:holepunchto/libbase64#86afd29")
|
|
10
10
|
fetch_package("github:holepunchto/libhex#1dfad95")
|
|
11
11
|
|
|
12
12
|
add_bare_module(bare_buffer)
|
package/binding.c
CHANGED
|
@@ -437,6 +437,45 @@ bare_buffer_to_string_base64(js_env_t *env, js_callback_info_t *info) {
|
|
|
437
437
|
return result;
|
|
438
438
|
}
|
|
439
439
|
|
|
440
|
+
static js_value_t *
|
|
441
|
+
bare_buffer_to_string_base64url(js_env_t *env, js_callback_info_t *info) {
|
|
442
|
+
int err;
|
|
443
|
+
|
|
444
|
+
size_t argc = 3;
|
|
445
|
+
js_value_t *argv[3];
|
|
446
|
+
|
|
447
|
+
err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
|
|
448
|
+
assert(err == 0);
|
|
449
|
+
|
|
450
|
+
assert(argc == 3);
|
|
451
|
+
|
|
452
|
+
utf8_t *buf;
|
|
453
|
+
err = js_get_arraybuffer_info(env, argv[0], (void **) &buf, NULL);
|
|
454
|
+
assert(err == 0);
|
|
455
|
+
|
|
456
|
+
int64_t offset;
|
|
457
|
+
err = js_get_value_int64(env, argv[1], &offset);
|
|
458
|
+
assert(err == 0);
|
|
459
|
+
|
|
460
|
+
int64_t len;
|
|
461
|
+
err = js_get_value_int64(env, argv[2], &len);
|
|
462
|
+
assert(err == 0);
|
|
463
|
+
|
|
464
|
+
size_t str_len;
|
|
465
|
+
err = base64url_encode_utf8(&buf[offset], len, NULL, &str_len);
|
|
466
|
+
assert(err == 0);
|
|
467
|
+
|
|
468
|
+
utf8_t *str = malloc(str_len);
|
|
469
|
+
err = base64url_encode_utf8(&buf[offset], len, str, &str_len);
|
|
470
|
+
assert(err == 0);
|
|
471
|
+
|
|
472
|
+
js_value_t *result;
|
|
473
|
+
err = js_create_external_string_latin1(env, str, str_len, bare_buffer__on_finalize_string, NULL, &result, NULL);
|
|
474
|
+
assert(err == 0);
|
|
475
|
+
|
|
476
|
+
return result;
|
|
477
|
+
}
|
|
478
|
+
|
|
440
479
|
static int64_t
|
|
441
480
|
bare_buffer_typed_write_base64(
|
|
442
481
|
js_value_t *receiver,
|
|
@@ -468,10 +507,18 @@ bare_buffer_typed_write_base64(
|
|
|
468
507
|
|
|
469
508
|
if (encoding == js_utf16le) {
|
|
470
509
|
err = base64_decode_utf16le(str, str_len, &buf[offset], &written);
|
|
471
|
-
assert(err == 0);
|
|
472
510
|
} else {
|
|
473
511
|
err = base64_decode_utf8(str, str_len, &buf[offset], &written);
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
if (err != 0) {
|
|
515
|
+
err = js_throw_error(env, NULL, "Invalid input");
|
|
474
516
|
assert(err == 0);
|
|
517
|
+
|
|
518
|
+
err = js_release_string_view(env, str_view);
|
|
519
|
+
assert(err == 0);
|
|
520
|
+
|
|
521
|
+
return 0;
|
|
475
522
|
}
|
|
476
523
|
|
|
477
524
|
err = js_release_string_view(env, str_view);
|
|
@@ -516,10 +563,18 @@ bare_buffer_write_base64(js_env_t *env, js_callback_info_t *info) {
|
|
|
516
563
|
|
|
517
564
|
if (encoding == js_utf16le) {
|
|
518
565
|
err = base64_decode_utf16le(str, str_len, &buf[offset], &written);
|
|
519
|
-
assert(err == 0);
|
|
520
566
|
} else {
|
|
521
567
|
err = base64_decode_utf8(str, str_len, &buf[offset], &written);
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
if (err != 0) {
|
|
571
|
+
err = js_throw_error(env, NULL, "Invalid input");
|
|
522
572
|
assert(err == 0);
|
|
573
|
+
|
|
574
|
+
err = js_release_string_view(env, str_view);
|
|
575
|
+
assert(err == 0);
|
|
576
|
+
|
|
577
|
+
return NULL;
|
|
523
578
|
}
|
|
524
579
|
|
|
525
580
|
err = js_release_string_view(env, str_view);
|
|
@@ -602,10 +657,18 @@ bare_buffer_typed_write_hex(
|
|
|
602
657
|
|
|
603
658
|
if (encoding == js_utf16le) {
|
|
604
659
|
err = hex_decode_utf16le(str, str_len, &buf[offset], &written);
|
|
605
|
-
assert(err == 0);
|
|
606
660
|
} else {
|
|
607
661
|
err = hex_decode_utf8(str, str_len, &buf[offset], &written);
|
|
662
|
+
}
|
|
663
|
+
|
|
664
|
+
if (err != 0) {
|
|
665
|
+
err = js_throw_error(env, NULL, "Invalid input");
|
|
666
|
+
assert(err == 0);
|
|
667
|
+
|
|
668
|
+
err = js_release_string_view(env, str_view);
|
|
608
669
|
assert(err == 0);
|
|
670
|
+
|
|
671
|
+
return 0;
|
|
609
672
|
}
|
|
610
673
|
|
|
611
674
|
err = js_release_string_view(env, str_view);
|
|
@@ -650,10 +713,18 @@ bare_buffer_write_hex(js_env_t *env, js_callback_info_t *info) {
|
|
|
650
713
|
|
|
651
714
|
if (encoding == js_utf16le) {
|
|
652
715
|
err = hex_decode_utf16le(str, str_len, &buf[offset], &written);
|
|
653
|
-
assert(err == 0);
|
|
654
716
|
} else {
|
|
655
717
|
err = hex_decode_utf8(str, str_len, &buf[offset], &written);
|
|
718
|
+
}
|
|
719
|
+
|
|
720
|
+
if (err != 0) {
|
|
721
|
+
err = js_throw_error(env, NULL, "Invalid input");
|
|
656
722
|
assert(err == 0);
|
|
723
|
+
|
|
724
|
+
err = js_release_string_view(env, str_view);
|
|
725
|
+
assert(err == 0);
|
|
726
|
+
|
|
727
|
+
return NULL;
|
|
657
728
|
}
|
|
658
729
|
|
|
659
730
|
err = js_release_string_view(env, str_view);
|
|
@@ -864,6 +935,7 @@ bare_buffer_exports(js_env_t *env, js_value_t *exports) {
|
|
|
864
935
|
);
|
|
865
936
|
|
|
866
937
|
V("toStringBase64", bare_buffer_to_string_base64, NULL, NULL);
|
|
938
|
+
V("toStringBase64URL", bare_buffer_to_string_base64url, NULL, NULL);
|
|
867
939
|
|
|
868
940
|
V(
|
|
869
941
|
"writeBase64",
|
package/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
const constants = require('./lib/constants')
|
|
2
2
|
const ascii = require('./lib/ascii')
|
|
3
3
|
const base64 = require('./lib/base64')
|
|
4
|
+
const base64url = require('./lib/base64url')
|
|
4
5
|
const hex = require('./lib/hex')
|
|
5
6
|
const utf8 = require('./lib/utf8')
|
|
6
7
|
const utf16le = require('./lib/utf16le')
|
|
@@ -536,6 +537,7 @@ const codecs = Object.create(null)
|
|
|
536
537
|
|
|
537
538
|
codecs.ascii = ascii
|
|
538
539
|
codecs.base64 = base64
|
|
540
|
+
codecs.base64url = base64url
|
|
539
541
|
codecs.hex = hex
|
|
540
542
|
codecs.utf8 = codecs['utf-8'] = utf8
|
|
541
543
|
codecs.utf16le = codecs.ucs2 = codecs['utf-16le'] = codecs['ucs-2'] = utf16le
|
|
@@ -548,7 +550,7 @@ function codecFor(encoding = 'utf8') {
|
|
|
548
550
|
|
|
549
551
|
if (encoding in codecs) return codecs[encoding]
|
|
550
552
|
|
|
551
|
-
throw new Error(`Unknown encoding
|
|
553
|
+
throw new Error(`Unknown encoding '${encoding}'`)
|
|
552
554
|
}
|
|
553
555
|
|
|
554
556
|
const views = new WeakMap()
|
package/lib/base64url.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
const binding = require('../binding')
|
|
2
|
+
|
|
3
|
+
exports.byteLength = function byteLength(string) {
|
|
4
|
+
let len = string.length
|
|
5
|
+
|
|
6
|
+
if (string.charCodeAt(len - 1) === 0x3d) len--
|
|
7
|
+
if (len > 1 && string.charCodeAt(len - 1) === 0x3d) len--
|
|
8
|
+
|
|
9
|
+
return (len * 3) >>> 2
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
exports.toString = function toString(buffer) {
|
|
13
|
+
return binding.toStringBase64URL(
|
|
14
|
+
buffer.buffer,
|
|
15
|
+
buffer.byteOffset,
|
|
16
|
+
buffer.byteLength
|
|
17
|
+
)
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
exports.write = function write(buffer, string) {
|
|
21
|
+
return binding.writeBase64(
|
|
22
|
+
buffer.buffer,
|
|
23
|
+
buffer.byteOffset,
|
|
24
|
+
buffer.byteLength,
|
|
25
|
+
string
|
|
26
|
+
)
|
|
27
|
+
}
|
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
|