Skip to content

Commit 7ca8fc5

Browse files
authored
add missing Buffer constants (#312)
1 parent bbceed0 commit 7ca8fc5

2 files changed

Lines changed: 30 additions & 7 deletions

File tree

index.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,22 @@ exports.INSPECT_MAX_BYTES = 50
2222
const K_MAX_LENGTH = 0x7fffffff
2323
exports.kMaxLength = K_MAX_LENGTH
2424

25+
/**
26+
* Not used internally, but exported to maintain api compatability
27+
* Uses 32-bit implementation value from Node defined in String:kMaxLength
28+
*
29+
* @see https://github.com/nodejs/node/blob/main/deps/v8/include/v8-primitive.h#L126
30+
* @see https://github.com/nodejs/node/blob/main/src/node_buffer.cc#L1298
31+
* @see https://github.com/nodejs/node/blob/main/lib/buffer.js#L142
32+
*/
33+
const K_STRING_MAX_LENGTH = (1 << 28) - 16
34+
exports.kStringMaxLength = K_STRING_MAX_LENGTH
35+
36+
exports.constants = {
37+
MAX_LENGTH: K_MAX_LENGTH,
38+
MAX_STRING_LENGTH: K_STRING_MAX_LENGTH
39+
}
40+
2541
/**
2642
* If `Buffer.TYPED_ARRAY_SUPPORT`:
2743
* === true Use Uint8Array implementation (fastest)

test/node/test-buffer.js

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ var Buffer = require('../../').Buffer;
44
var common = { skip: function () {} };
55
var assert = require('assert');
66

7+
const buffer = require('../../');
78
var Buffer = require('../../').Buffer;
89
var SlowBuffer = require('../../').SlowBuffer;
910

@@ -442,10 +443,10 @@ for (var i = 0; i < Buffer.byteLength(utf8String); i++) {
442443
{
443444
// Bug regression test
444445
var testValue = '\u00F6\u65E5\u672C\u8A9E'; // ö日本語
445-
var buffer = new Buffer(32);
446-
var size = buffer.write(testValue, 0, 'utf8');
447-
// console.log('bytes written to buffer: ' + size);
448-
var slice = buffer.toString('utf8', 0, size);
446+
var testBuffer = new Buffer(32);
447+
var size = testBuffer.write(testValue, 0, 'utf8');
448+
// console.log('bytes written to testBuffer: ' + size);
449+
var slice = testBuffer.toString('utf8', 0, size);
449450
assert.equal(slice, testValue);
450451
}
451452

@@ -1050,12 +1051,12 @@ Buffer(Buffer(0), 0, 0);
10501051

10511052
// GH-5110
10521053
{
1053-
var buffer = new Buffer('test');
1054-
var string = JSON.stringify(buffer);
1054+
var testBuffer = new Buffer('test');
1055+
var string = JSON.stringify(testBuffer);
10551056

10561057
assert.strictEqual(string, '{"type":"Buffer","data":[116,101,115,116]}');
10571058

1058-
assert.deepStrictEqual(buffer, JSON.parse(string, function(key, value) {
1059+
assert.deepStrictEqual(testBuffer, JSON.parse(string, function(key, value) {
10591060
return value && value.type === 'Buffer'
10601061
? new Buffer(value.data)
10611062
: value;
@@ -1498,3 +1499,9 @@ assert.throws(() => Buffer(-100),
14981499
assert.throws(() => Buffer(-1),
14991500
'"size" argument must not be negative');
15001501

1502+
// Verify constants
1503+
assert.equal(0x7fffffff, buffer.kMaxLength)
1504+
assert.equal(buffer.kMaxLength, buffer.constants.MAX_LENGTH)
1505+
1506+
assert.equal((1 << 28) - 16, buffer.kStringMaxLength)
1507+
assert.equal(buffer.kStringMaxLength, buffer.constants.MAX_STRING_LENGTH)

0 commit comments

Comments
 (0)