msgpack-lite 0.1.20 → 0.1.26
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/.npmignore +1 -0
- package/.travis.yml +1 -0
- package/.zuul.yml +1 -1
- package/Makefile +2 -2
- package/README.md +27 -7
- package/dist/msgpack.min.js +2 -2
- package/lib/buffer-global.js +11 -0
- package/lib/buffer-lite.js +88 -60
- package/lib/bufferish-array.js +41 -0
- package/lib/bufferish-buffer.js +46 -0
- package/lib/bufferish-proto.js +86 -0
- package/lib/bufferish-uint8array.js +51 -0
- package/lib/bufferish.js +108 -0
- package/lib/codec-base.js +67 -0
- package/lib/codec.js +8 -1
- package/lib/decode-buffer.js +6 -50
- package/lib/encode-buffer.js +6 -79
- package/lib/ext-buffer.js +3 -1
- package/lib/ext-packer.js +78 -0
- package/lib/ext-unpacker.js +81 -0
- package/lib/ext.js +4 -77
- package/lib/flex-buffer.js +194 -0
- package/lib/read-core.js +36 -2
- package/lib/read-format.js +83 -56
- package/lib/read-token.js +1 -1
- package/lib/write-core.js +55 -2
- package/lib/write-token.js +54 -26
- package/lib/write-type.js +81 -73
- package/lib/write-uint8.js +2 -2
- package/package.json +23 -13
- package/test/10.encode.js +50 -30
- package/test/11.decode.js +2 -0
- package/test/14.codec.js +8 -1
- package/test/16.binarraybuffer.js +91 -0
- package/test/17.uint8array.js +43 -0
- package/test/18.utf8.js +59 -0
- package/test/20.roundtrip.js +53 -33
- package/test/23.extbuffer.js +44 -2
- package/test/27.usemap.js +66 -0
- package/test/61.encode-only.js +26 -0
- package/test/62.decode-only.js +23 -0
- package/test/63.module-deps.js +77 -0
- package/lib/buffer-shortage.js +0 -8
- package/lib/ext-preset.js +0 -188
- package/test/60.buffer-lite.js +0 -98
package/test/23.extbuffer.js
CHANGED
|
@@ -8,6 +8,8 @@ var isBrowser = ("undefined" !== typeof window);
|
|
|
8
8
|
var msgpack = isBrowser && window.msgpack || require(msgpackJS);
|
|
9
9
|
var TITLE = __filename.replace(/^.*\//, "");
|
|
10
10
|
|
|
11
|
+
var HAS_UINT8ARRAY = ("undefined" !== typeof Uint8Array);
|
|
12
|
+
|
|
11
13
|
describe(TITLE, function() {
|
|
12
14
|
it("ExtBuffer (0x00)", function() {
|
|
13
15
|
testExtBuffer(0);
|
|
@@ -19,6 +21,12 @@ describe(TITLE, function() {
|
|
|
19
21
|
}
|
|
20
22
|
});
|
|
21
23
|
|
|
24
|
+
it("ExtBuffer Array (0x20-0xFF)", function() {
|
|
25
|
+
for (var i = 32; i < 256; i++) {
|
|
26
|
+
testExtBufferArray(i);
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
|
|
22
30
|
function testExtBuffer(type) {
|
|
23
31
|
// fixext 8 -- 0xd7
|
|
24
32
|
var header = new Buffer([0xd7, type]);
|
|
@@ -30,8 +38,42 @@ describe(TITLE, function() {
|
|
|
30
38
|
var decoded = msgpack.decode(source);
|
|
31
39
|
assert.equal(decoded.type, type);
|
|
32
40
|
assert.equal(decoded.buffer.length, content.length);
|
|
33
|
-
assert.deepEqual(decoded.buffer, content);
|
|
41
|
+
assert.deepEqual(toArray(decoded.buffer), toArray(content));
|
|
34
42
|
var encoded = msgpack.encode(decoded);
|
|
35
|
-
assert.deepEqual(encoded, source);
|
|
43
|
+
assert.deepEqual(toArray(encoded), toArray(source));
|
|
36
44
|
}
|
|
45
|
+
|
|
46
|
+
// Unpack and re-pack an array of extension types.
|
|
47
|
+
// Tests, among other things, that the right number of bytes are
|
|
48
|
+
// consumed with each ext type read.
|
|
49
|
+
function testExtBufferArray(type) {
|
|
50
|
+
function content(j) {
|
|
51
|
+
var x = j * type;
|
|
52
|
+
return Buffer([x & 0x7F, (x + 1) & 0x7F]);
|
|
53
|
+
}
|
|
54
|
+
// fixarray len 10
|
|
55
|
+
var arrayHeader = new Buffer([0x9a]);
|
|
56
|
+
var fullBuffer = arrayHeader;
|
|
57
|
+
for (var j = 0; j < 10; j++) {
|
|
58
|
+
// fixext 2 -- 0xd5
|
|
59
|
+
var header = new Buffer([0xd5, type]);
|
|
60
|
+
fullBuffer = Buffer.concat([fullBuffer, header, content(j)]);
|
|
61
|
+
}
|
|
62
|
+
var decoded = msgpack.decode(fullBuffer);
|
|
63
|
+
assert.equal(true, decoded instanceof Array);
|
|
64
|
+
assert.equal(decoded.length, 10);
|
|
65
|
+
for (j = 0; j < 10; j++) {
|
|
66
|
+
assert.equal(decoded[j].type, type);
|
|
67
|
+
assert.equal(decoded[j].buffer.length, 2);
|
|
68
|
+
assert.deepEqual(decoded[j].buffer, content(j));
|
|
69
|
+
}
|
|
70
|
+
var encoded = msgpack.encode(decoded);
|
|
71
|
+
assert.deepEqual(encoded, fullBuffer);
|
|
72
|
+
}
|
|
73
|
+
|
|
37
74
|
});
|
|
75
|
+
|
|
76
|
+
function toArray(array) {
|
|
77
|
+
if (HAS_UINT8ARRAY && array instanceof ArrayBuffer) array = new Uint8Array(array);
|
|
78
|
+
return Array.prototype.slice.call(array);
|
|
79
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
#!/usr/bin/env mocha -R spec
|
|
2
|
+
|
|
3
|
+
var assert = require("assert");
|
|
4
|
+
var msgpackJS = "../index";
|
|
5
|
+
var isBrowser = ("undefined" !== typeof window);
|
|
6
|
+
var HAS_MAP = ("undefined" !== typeof Map);
|
|
7
|
+
var msgpack = isBrowser && window.msgpack || require(msgpackJS);
|
|
8
|
+
var TITLE = __filename.replace(/^.*\//, "");
|
|
9
|
+
|
|
10
|
+
function pattern(min, max, offset) {
|
|
11
|
+
var array = [];
|
|
12
|
+
var check = {};
|
|
13
|
+
var val = min - 1;
|
|
14
|
+
while (val <= max) {
|
|
15
|
+
if (min <= val && !check[val]) array.push(val);
|
|
16
|
+
check[val++] = 1;
|
|
17
|
+
if (val <= max && !check[val]) array.push(val);
|
|
18
|
+
check[val++] = 1;
|
|
19
|
+
if (val <= max && !check[val]) array.push(val);
|
|
20
|
+
check[val--] = 1;
|
|
21
|
+
val = val ? val * 2 - 1 : 1;
|
|
22
|
+
}
|
|
23
|
+
return array;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// Run these tests when Map is available
|
|
27
|
+
var describeSkip = HAS_MAP ? describe : describe.skip;
|
|
28
|
+
|
|
29
|
+
describeSkip(TITLE, function() {
|
|
30
|
+
|
|
31
|
+
it("Map (small)", function() {
|
|
32
|
+
pattern(0, 257).forEach(function(length) {
|
|
33
|
+
var value = new Map();
|
|
34
|
+
assert.equal(true, value instanceof Map);
|
|
35
|
+
for (var i = 0; i < length; i++) {
|
|
36
|
+
var key = String.fromCharCode(i);
|
|
37
|
+
value.set(key, length);
|
|
38
|
+
}
|
|
39
|
+
assert.equal(value.size, length);
|
|
40
|
+
var options = {codec: msgpack.createCodec({usemap: true})};
|
|
41
|
+
var encoded = msgpack.encode(value, options);
|
|
42
|
+
var decoded = msgpack.decode(encoded, options);
|
|
43
|
+
assert.equal(true, decoded instanceof Map);
|
|
44
|
+
assert.equal(decoded.size, length);
|
|
45
|
+
assert.equal(decoded.get(String.fromCharCode(0)), value.get(String.fromCharCode(0)));
|
|
46
|
+
assert.equal(decoded.get(String.fromCharCode(length - 1)), value.get(String.fromCharCode(length - 1)));
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
it("Map (large)", function() {
|
|
51
|
+
this.timeout(30000);
|
|
52
|
+
pattern(65536, 65537).forEach(function(length) {
|
|
53
|
+
var value = new Map();
|
|
54
|
+
for (var i = 0; i < length; i++) {
|
|
55
|
+
value.set(i, length);
|
|
56
|
+
}
|
|
57
|
+
assert.equal(value.size, length);
|
|
58
|
+
var options = {codec: msgpack.createCodec({usemap: true})};
|
|
59
|
+
var encoded = msgpack.encode(value, options);
|
|
60
|
+
var decoded = msgpack.decode(encoded, options);
|
|
61
|
+
assert.equal(decoded.size, length);
|
|
62
|
+
assert.equal(decoded.get(0), value.get(0));
|
|
63
|
+
assert.equal(decoded.get(length - 1), value.get(length - 1));
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
});
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
#!/usr/bin/env mocha -R spec
|
|
2
|
+
|
|
3
|
+
var assert = require("assert");
|
|
4
|
+
|
|
5
|
+
var encode = require("../lib/encode").encode;
|
|
6
|
+
var ExtBuffer = require("../lib/ext-buffer").ExtBuffer;
|
|
7
|
+
var TITLE = __filename.replace(/^.*\//, "");
|
|
8
|
+
|
|
9
|
+
describe(TITLE, function() {
|
|
10
|
+
it("encode", function() {
|
|
11
|
+
// int
|
|
12
|
+
assert.deepEqual(toArray(encode(1)), [1]);
|
|
13
|
+
|
|
14
|
+
// str
|
|
15
|
+
assert.deepEqual(toArray(encode("a")), [161, 97]);
|
|
16
|
+
|
|
17
|
+
// ExtBuffer
|
|
18
|
+
var ext = new ExtBuffer(new Buffer([1]), 127);
|
|
19
|
+
assert.ok(ext instanceof ExtBuffer);
|
|
20
|
+
assert.deepEqual(toArray(encode(ext)), [212, 127, 1]);
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
function toArray(buffer) {
|
|
25
|
+
return Array.prototype.slice.call(buffer);
|
|
26
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
#!/usr/bin/env mocha -R spec
|
|
2
|
+
|
|
3
|
+
var assert = require("assert");
|
|
4
|
+
|
|
5
|
+
var decode = require("../lib/decode").decode;
|
|
6
|
+
var ExtBuffer = require("../lib/ext-buffer").ExtBuffer;
|
|
7
|
+
var TITLE = __filename.replace(/^.*\//, "");
|
|
8
|
+
|
|
9
|
+
describe(TITLE, function() {
|
|
10
|
+
it("decode", function() {
|
|
11
|
+
// int
|
|
12
|
+
assert.equal(decode([1]), 1);
|
|
13
|
+
|
|
14
|
+
// str
|
|
15
|
+
assert.equal(decode([161, 97]), "a");
|
|
16
|
+
|
|
17
|
+
// ExtBuffer
|
|
18
|
+
var ext = decode(new Buffer([212, 127, 1]));
|
|
19
|
+
assert.ok(ext instanceof ExtBuffer);
|
|
20
|
+
assert.equal(ext.buffer[0], 1);
|
|
21
|
+
assert.equal(ext.type, 127);
|
|
22
|
+
});
|
|
23
|
+
});
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
#!/usr/bin/env mocha -R spec
|
|
2
|
+
|
|
3
|
+
var TITLE = __filename.replace(/^.*\//, "");
|
|
4
|
+
|
|
5
|
+
describe(TITLE, function() {
|
|
6
|
+
var mdeps;
|
|
7
|
+
var itSkip = it;
|
|
8
|
+
|
|
9
|
+
try {
|
|
10
|
+
mdeps = require("browserify/node_modules/module-deps");
|
|
11
|
+
} catch (e) {
|
|
12
|
+
itSkip = it.skip;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
// index.js should not require stream modules
|
|
16
|
+
|
|
17
|
+
itSkip("index.js dependencies", function(next) {
|
|
18
|
+
var opt = {file: __dirname + "/../index.js"};
|
|
19
|
+
var list = [];
|
|
20
|
+
mdeps().on("data", onData).on("end", onEnd).end(opt);
|
|
21
|
+
|
|
22
|
+
function onData(data) {
|
|
23
|
+
list.push(data.file);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function onEnd() {
|
|
27
|
+
var hit = list.filter(check)[0];
|
|
28
|
+
next(hit && new Error(hit));
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function check(value) {
|
|
32
|
+
return value.match(/stream/) && !value.match(/node_modules/);
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
// decode.js should not require encode|write modules
|
|
37
|
+
|
|
38
|
+
itSkip("decode.js dependencies", function(next) {
|
|
39
|
+
var opt = {file: __dirname + "/../lib/decode.js"};
|
|
40
|
+
var list = [];
|
|
41
|
+
mdeps().on("data", onData).on("end", onEnd).end(opt);
|
|
42
|
+
|
|
43
|
+
function onData(data) {
|
|
44
|
+
list.push(data.file);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function onEnd() {
|
|
48
|
+
var hit = list.filter(check)[0];
|
|
49
|
+
next(hit && new Error(hit));
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
function check(value) {
|
|
53
|
+
return value.match(/encode|write/) && !value.match(/node_modules/);
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
// encode.js should not require decode|read modules
|
|
58
|
+
|
|
59
|
+
itSkip("encode.js dependencies", function(next) {
|
|
60
|
+
var opt = {file: __dirname + "/../lib/encode.js"};
|
|
61
|
+
var list = [];
|
|
62
|
+
mdeps().on("data", onData).on("end", onEnd).end(opt);
|
|
63
|
+
|
|
64
|
+
function onData(data) {
|
|
65
|
+
list.push(data.file);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
function onEnd() {
|
|
69
|
+
var hit = list.filter(check)[0];
|
|
70
|
+
next(hit && new Error(hit));
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
function check(value) {
|
|
74
|
+
return value.match(/decode|read/) && !value.match(/node_modules/);
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
});
|
package/lib/buffer-shortage.js
DELETED
package/lib/ext-preset.js
DELETED
|
@@ -1,188 +0,0 @@
|
|
|
1
|
-
// ext-preset.js
|
|
2
|
-
|
|
3
|
-
exports.setExtPreset = setExtPreset;
|
|
4
|
-
|
|
5
|
-
var _encode, _decode;
|
|
6
|
-
var hasUint8Array = ("undefined" !== typeof Uint8Array);
|
|
7
|
-
var hasFloat64Array = ("undefined" !== typeof Float64Array);
|
|
8
|
-
var hasUint8ClampedArray = ("undefined" !== typeof Uint8ClampedArray);
|
|
9
|
-
|
|
10
|
-
var ERROR_COLUMNS = {name: 1, message: 1, stack: 1, columnNumber: 1, fileName: 1, lineNumber: 1};
|
|
11
|
-
|
|
12
|
-
function setExtPreset(codec) {
|
|
13
|
-
setExtPackers(codec);
|
|
14
|
-
setExtUnpackers(codec);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
function setExtPackers(preset) {
|
|
18
|
-
preset.addExtPacker(0x0E, Error, [packError, encode]);
|
|
19
|
-
preset.addExtPacker(0x01, EvalError, [packError, encode]);
|
|
20
|
-
preset.addExtPacker(0x02, RangeError, [packError, encode]);
|
|
21
|
-
preset.addExtPacker(0x03, ReferenceError, [packError, encode]);
|
|
22
|
-
preset.addExtPacker(0x04, SyntaxError, [packError, encode]);
|
|
23
|
-
preset.addExtPacker(0x05, TypeError, [packError, encode]);
|
|
24
|
-
preset.addExtPacker(0x06, URIError, [packError, encode]);
|
|
25
|
-
|
|
26
|
-
preset.addExtPacker(0x0A, RegExp, [packRegExp, encode]);
|
|
27
|
-
preset.addExtPacker(0x0B, Boolean, [packValueOf, encode]);
|
|
28
|
-
preset.addExtPacker(0x0C, String, [packValueOf, encode]);
|
|
29
|
-
preset.addExtPacker(0x0D, Date, [Number, encode]);
|
|
30
|
-
preset.addExtPacker(0x0F, Number, [packValueOf, encode]);
|
|
31
|
-
|
|
32
|
-
if (hasUint8Array) {
|
|
33
|
-
preset.addExtPacker(0x11, Int8Array, packBuffer);
|
|
34
|
-
preset.addExtPacker(0x12, Uint8Array, packBuffer);
|
|
35
|
-
preset.addExtPacker(0x13, Int16Array, packTypedArray);
|
|
36
|
-
preset.addExtPacker(0x14, Uint16Array, packTypedArray);
|
|
37
|
-
preset.addExtPacker(0x15, Int32Array, packTypedArray);
|
|
38
|
-
preset.addExtPacker(0x16, Uint32Array, packTypedArray);
|
|
39
|
-
preset.addExtPacker(0x17, Float32Array, packTypedArray);
|
|
40
|
-
|
|
41
|
-
if (hasFloat64Array) {
|
|
42
|
-
// PhantomJS/1.9.7 doesn't have Float64Array
|
|
43
|
-
preset.addExtPacker(0x18, Float64Array, packTypedArray);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
if (hasUint8ClampedArray) {
|
|
47
|
-
// IE10 doesn't have Uint8ClampedArray
|
|
48
|
-
preset.addExtPacker(0x19, Uint8ClampedArray, packBuffer);
|
|
49
|
-
preset.addExtUnpacker(0x19, unpackClass(Uint8ClampedArray));
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
preset.addExtPacker(0x1A, ArrayBuffer, packArrayBuffer);
|
|
53
|
-
preset.addExtPacker(0x1D, DataView, packTypedArray);
|
|
54
|
-
preset.addExtUnpacker(0x1A, unpackArrayBuffer);
|
|
55
|
-
preset.addExtUnpacker(0x1D, [unpackArrayBuffer, unpackClass(DataView)]);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
function setExtUnpackers(preset) {
|
|
60
|
-
preset.addExtPacker(0x0E, Error, [packError, encode]);
|
|
61
|
-
preset.addExtPacker(0x01, EvalError, [packError, encode]);
|
|
62
|
-
preset.addExtPacker(0x02, RangeError, [packError, encode]);
|
|
63
|
-
preset.addExtPacker(0x03, ReferenceError, [packError, encode]);
|
|
64
|
-
preset.addExtPacker(0x04, SyntaxError, [packError, encode]);
|
|
65
|
-
preset.addExtPacker(0x05, TypeError, [packError, encode]);
|
|
66
|
-
preset.addExtPacker(0x06, URIError, [packError, encode]);
|
|
67
|
-
|
|
68
|
-
preset.addExtUnpacker(0x0E, [decode, unpackError(Error)]);
|
|
69
|
-
preset.addExtUnpacker(0x01, [decode, unpackError(EvalError)]);
|
|
70
|
-
preset.addExtUnpacker(0x02, [decode, unpackError(RangeError)]);
|
|
71
|
-
preset.addExtUnpacker(0x03, [decode, unpackError(ReferenceError)]);
|
|
72
|
-
preset.addExtUnpacker(0x04, [decode, unpackError(SyntaxError)]);
|
|
73
|
-
preset.addExtUnpacker(0x05, [decode, unpackError(TypeError)]);
|
|
74
|
-
preset.addExtUnpacker(0x06, [decode, unpackError(URIError)]);
|
|
75
|
-
|
|
76
|
-
preset.addExtPacker(0x0A, RegExp, [packRegExp, encode]);
|
|
77
|
-
preset.addExtPacker(0x0B, Boolean, [packValueOf, encode]);
|
|
78
|
-
preset.addExtPacker(0x0C, String, [packValueOf, encode]);
|
|
79
|
-
preset.addExtPacker(0x0D, Date, [Number, encode]);
|
|
80
|
-
preset.addExtPacker(0x0F, Number, [packValueOf, encode]);
|
|
81
|
-
|
|
82
|
-
preset.addExtUnpacker(0x0A, [decode, unpackRegExp]);
|
|
83
|
-
preset.addExtUnpacker(0x0B, [decode, unpackClass(Boolean)]);
|
|
84
|
-
preset.addExtUnpacker(0x0C, [decode, unpackClass(String)]);
|
|
85
|
-
preset.addExtUnpacker(0x0D, [decode, unpackClass(Date)]);
|
|
86
|
-
preset.addExtUnpacker(0x0F, [decode, unpackClass(Number)]);
|
|
87
|
-
|
|
88
|
-
if (hasUint8Array) {
|
|
89
|
-
preset.addExtPacker(0x11, Int8Array, packBuffer);
|
|
90
|
-
preset.addExtPacker(0x12, Uint8Array, packBuffer);
|
|
91
|
-
preset.addExtPacker(0x13, Int16Array, packTypedArray);
|
|
92
|
-
preset.addExtPacker(0x14, Uint16Array, packTypedArray);
|
|
93
|
-
preset.addExtPacker(0x15, Int32Array, packTypedArray);
|
|
94
|
-
preset.addExtPacker(0x16, Uint32Array, packTypedArray);
|
|
95
|
-
preset.addExtPacker(0x17, Float32Array, packTypedArray);
|
|
96
|
-
|
|
97
|
-
preset.addExtUnpacker(0x11, unpackClass(Int8Array));
|
|
98
|
-
preset.addExtUnpacker(0x12, unpackClass(Uint8Array));
|
|
99
|
-
preset.addExtUnpacker(0x13, [unpackArrayBuffer, unpackClass(Int16Array)]);
|
|
100
|
-
preset.addExtUnpacker(0x14, [unpackArrayBuffer, unpackClass(Uint16Array)]);
|
|
101
|
-
preset.addExtUnpacker(0x15, [unpackArrayBuffer, unpackClass(Int32Array)]);
|
|
102
|
-
preset.addExtUnpacker(0x16, [unpackArrayBuffer, unpackClass(Uint32Array)]);
|
|
103
|
-
preset.addExtUnpacker(0x17, [unpackArrayBuffer, unpackClass(Float32Array)]);
|
|
104
|
-
|
|
105
|
-
if (hasFloat64Array) {
|
|
106
|
-
// PhantomJS/1.9.7 doesn't have Float64Array
|
|
107
|
-
preset.addExtPacker(0x18, Float64Array, packTypedArray);
|
|
108
|
-
preset.addExtUnpacker(0x18, [unpackArrayBuffer, unpackClass(Float64Array)]);
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
if (hasUint8ClampedArray) {
|
|
112
|
-
// IE10 doesn't have Uint8ClampedArray
|
|
113
|
-
preset.addExtPacker(0x19, Uint8ClampedArray, packBuffer);
|
|
114
|
-
preset.addExtUnpacker(0x19, unpackClass(Uint8ClampedArray));
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
preset.addExtPacker(0x1A, ArrayBuffer, packArrayBuffer);
|
|
118
|
-
preset.addExtPacker(0x1D, DataView, packTypedArray);
|
|
119
|
-
preset.addExtUnpacker(0x1A, unpackArrayBuffer);
|
|
120
|
-
preset.addExtUnpacker(0x1D, [unpackArrayBuffer, unpackClass(DataView)]);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
function encode(input) {
|
|
125
|
-
if (!_encode) _encode = require("./encode").encode; // lazy load
|
|
126
|
-
return _encode(input);
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
function decode(input) {
|
|
130
|
-
if (!_decode) _decode = require("./decode").decode; // lazy load
|
|
131
|
-
return _decode(input);
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
function packBuffer(value) {
|
|
135
|
-
return new Buffer(value);
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
function packValueOf(value) {
|
|
139
|
-
return (value).valueOf();
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
function packRegExp(value) {
|
|
143
|
-
value = RegExp.prototype.toString.call(value).split("/");
|
|
144
|
-
value.shift();
|
|
145
|
-
var out = [value.pop()];
|
|
146
|
-
out.unshift(value.join("/"));
|
|
147
|
-
return out;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
function unpackRegExp(value) {
|
|
151
|
-
return RegExp.apply(null, value);
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
function packError(value) {
|
|
155
|
-
var out = {};
|
|
156
|
-
for (var key in ERROR_COLUMNS) {
|
|
157
|
-
out[key] = value[key];
|
|
158
|
-
}
|
|
159
|
-
return out;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
function unpackError(Class) {
|
|
163
|
-
return function(value) {
|
|
164
|
-
var out = new Class();
|
|
165
|
-
for (var key in ERROR_COLUMNS) {
|
|
166
|
-
out[key] = value[key];
|
|
167
|
-
}
|
|
168
|
-
return out;
|
|
169
|
-
};
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
function unpackClass(Class) {
|
|
173
|
-
return function(value) {
|
|
174
|
-
return new Class(value);
|
|
175
|
-
};
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
function packTypedArray(value) {
|
|
179
|
-
return new Buffer(new Uint8Array(value.buffer));
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
function packArrayBuffer(value) {
|
|
183
|
-
return new Buffer(new Uint8Array(value));
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
function unpackArrayBuffer(value) {
|
|
187
|
-
return (new Uint8Array(value)).buffer;
|
|
188
|
-
}
|
package/test/60.buffer-lite.js
DELETED
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env mocha -R spec
|
|
2
|
-
|
|
3
|
-
var assert = require("assert");
|
|
4
|
-
|
|
5
|
-
var msgpack = require("../index");
|
|
6
|
-
var BufferLite = require("../lib/buffer-lite");
|
|
7
|
-
var TITLE = __filename.replace(/^.*\//, "");
|
|
8
|
-
|
|
9
|
-
describe(TITLE, function() {
|
|
10
|
-
|
|
11
|
-
it("BufferLite.writeUint64BE() 1...", function() {
|
|
12
|
-
var exp = [
|
|
13
|
-
[0xcf, 0, 0, 0, 0, 0, 0, 0, 1], // 1
|
|
14
|
-
[0xcf, 0, 0, 0, 0, 0, 0, 1, 0], // 256
|
|
15
|
-
[0xcf, 0, 0, 0, 0, 0, 1, 0, 0], // 65536
|
|
16
|
-
[0xcf, 0, 0, 0, 0, 1, 0, 0, 0],
|
|
17
|
-
[0xcf, 0, 0, 0, 1, 0, 0, 0, 0],
|
|
18
|
-
[0xcf, 0, 0, 1, 0, 0, 0, 0, 0],
|
|
19
|
-
[0xcf, 0, 1, 0, 0, 0, 0, 0, 0],
|
|
20
|
-
[0xcf, 1, 0, 0, 0, 0, 0, 0, 0]
|
|
21
|
-
];
|
|
22
|
-
var val = 1;
|
|
23
|
-
for (var i = 0; i < exp.length; i++) {
|
|
24
|
-
var buffer = Buffer(9);
|
|
25
|
-
buffer[0] = 0xcf;
|
|
26
|
-
BufferLite.writeUint64BE.call(buffer, val, 1);
|
|
27
|
-
assert.deepEqual(buffer, Buffer(exp[i]));
|
|
28
|
-
assert.equal(msgpack.decode(buffer), val);
|
|
29
|
-
val *= 256;
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
it("BufferLite.writeUint64BE() 32767...", function() {
|
|
34
|
-
var exp = [
|
|
35
|
-
[0xcf, 0, 0, 0, 0, 0, 0, 0x7F, 0xFF], // 32767
|
|
36
|
-
[0xcf, 0, 0, 0, 0, 0, 0x7F, 0xFF, 0],
|
|
37
|
-
[0xcf, 0, 0, 0, 0, 0x7F, 0xFF, 0, 0],
|
|
38
|
-
[0xcf, 0, 0, 0, 0x7F, 0xFF, 0, 0, 0],
|
|
39
|
-
[0xcf, 0, 0, 0x7F, 0xFF, 0, 0, 0, 0],
|
|
40
|
-
[0xcf, 0, 0x7F, 0xFF, 0, 0, 0, 0, 0],
|
|
41
|
-
[0xcf, 0x7F, 0xFF, 0, 0, 0, 0, 0, 0]
|
|
42
|
-
];
|
|
43
|
-
var val = 32767;
|
|
44
|
-
for (var i = 0; i < exp.length; i++) {
|
|
45
|
-
var buffer = Buffer(9);
|
|
46
|
-
buffer[0] = 0xcf;
|
|
47
|
-
BufferLite.writeUint64BE.call(buffer, val, 1);
|
|
48
|
-
assert.deepEqual(buffer, Buffer(exp[i]));
|
|
49
|
-
assert.equal(msgpack.decode(buffer), val);
|
|
50
|
-
val *= 256;
|
|
51
|
-
}
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
it("BufferLite.writeInt64BE() -2...", function() {
|
|
55
|
-
var exp = [
|
|
56
|
-
[0xd3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE], // -2
|
|
57
|
-
[0xd3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF], // -257
|
|
58
|
-
[0xd3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF], // -65537
|
|
59
|
-
[0xd3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF],
|
|
60
|
-
[0xd3, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF],
|
|
61
|
-
[0xd3, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF],
|
|
62
|
-
[0xd3, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF],
|
|
63
|
-
[0xd3, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF]
|
|
64
|
-
];
|
|
65
|
-
var value = 1;
|
|
66
|
-
for (var i = 0; i < exp.length; i++) {
|
|
67
|
-
var buffer = Buffer(9);
|
|
68
|
-
buffer[0] = 0xd3;
|
|
69
|
-
var val = -value - 1;
|
|
70
|
-
BufferLite.writeInt64BE.call(buffer, val, 1);
|
|
71
|
-
assert.deepEqual(buffer, Buffer(exp[i]));
|
|
72
|
-
assert.equal(msgpack.decode(buffer), val);
|
|
73
|
-
value *= 256;
|
|
74
|
-
}
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
it("BufferLite.writeInt64BE() -32768...", function() {
|
|
78
|
-
var exp = [
|
|
79
|
-
[0xd3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0], // -32768
|
|
80
|
-
[0xd3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0, 0xFF],
|
|
81
|
-
[0xd3, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0, 0xFF, 0xFF],
|
|
82
|
-
[0xd3, 0xFF, 0xFF, 0xFF, 0x80, 0, 0xFF, 0xFF, 0xFF],
|
|
83
|
-
[0xd3, 0xFF, 0xFF, 0x80, 0, 0xFF, 0xFF, 0xFF, 0xFF],
|
|
84
|
-
[0xd3, 0xFF, 0x80, 0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF],
|
|
85
|
-
[0xd3, 0x80, 0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF]
|
|
86
|
-
];
|
|
87
|
-
var val = -32768;
|
|
88
|
-
for (var i = 0; i < exp.length; i++) {
|
|
89
|
-
var buffer = Buffer(9);
|
|
90
|
-
buffer[0] = 0xd3;
|
|
91
|
-
BufferLite.writeInt64BE.call(buffer, val, 1);
|
|
92
|
-
assert.deepEqual(buffer, Buffer(exp[i]));
|
|
93
|
-
assert.equal(msgpack.decode(buffer), val);
|
|
94
|
-
val *= 256;
|
|
95
|
-
val += 255;
|
|
96
|
-
}
|
|
97
|
-
});
|
|
98
|
-
});
|