msgpack-lite 0.1.20 → 0.1.27
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/.github/workflows/nodejs.yml +23 -0
- package/.github/workflows/publish.yml +64 -0
- package/LICENSE +1 -1
- package/Makefile +8 -13
- package/README.md +28 -91
- 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/decode-stream.js +7 -3
- package/lib/encode-buffer.js +6 -79
- package/lib/encode-stream.js +12 -4
- 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 +22 -12
- package/test/10.encode.js +53 -33
- package/test/11.decode.js +16 -3
- package/test/14.codec.js +10 -3
- package/test/15.useraw.js +4 -4
- 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 +54 -34
- package/test/23.extbuffer.js +46 -4
- package/test/27.usemap.js +66 -0
- package/test/30.stream.js +49 -1
- package/test/50.compat.js +6 -6
- 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/.npmignore +0 -7
- package/.travis.yml +0 -25
- package/.zuul.yml +0 -20
- package/bower.json +0 -34
- package/lib/buffer-shortage.js +0 -8
- package/lib/ext-preset.js +0 -188
- package/test/60.buffer-lite.js +0 -98
- package/test/zuul/ie.html +0 -4
package/test/20.roundtrip.js
CHANGED
|
@@ -33,20 +33,40 @@ function pattern(min, max, offset) {
|
|
|
33
33
|
return array;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
+
var HAS_UINT8ARRAY = ("undefined" !== typeof Uint8Array);
|
|
37
|
+
|
|
36
38
|
describe(TITLE, function() {
|
|
39
|
+
describe("Buffer", function() {
|
|
40
|
+
run_tests();
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
var describe_Uint8Array = HAS_UINT8ARRAY ? describe : describe.skip;
|
|
44
|
+
describe_Uint8Array("Uint8Array", function() {
|
|
45
|
+
run_tests({uint8array: true});
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
function run_tests(codecopt) {
|
|
50
|
+
var options;
|
|
51
|
+
|
|
52
|
+
if (codecopt) it(JSON.stringify(codecopt), function() {
|
|
53
|
+
var codec = msgpack.createCodec(codecopt);
|
|
54
|
+
assert.ok(codec);
|
|
55
|
+
options = {codec: codec};
|
|
56
|
+
});
|
|
37
57
|
|
|
38
58
|
it("null", function() {
|
|
39
59
|
[null, undefined].forEach(function(value) {
|
|
40
|
-
var encoded = msgpack.encode(value);
|
|
41
|
-
var decoded = msgpack.decode(encoded);
|
|
60
|
+
var encoded = msgpack.encode(value, options);
|
|
61
|
+
var decoded = msgpack.decode(encoded, options);
|
|
42
62
|
assert.equal(decoded, value);
|
|
43
63
|
});
|
|
44
64
|
});
|
|
45
65
|
|
|
46
66
|
it("boolean", function() {
|
|
47
67
|
[true, false].forEach(function(value) {
|
|
48
|
-
var encoded = msgpack.encode(value);
|
|
49
|
-
var decoded = msgpack.decode(encoded);
|
|
68
|
+
var encoded = msgpack.encode(value, options);
|
|
69
|
+
var decoded = msgpack.decode(encoded, options);
|
|
50
70
|
assert.equal(decoded, value);
|
|
51
71
|
});
|
|
52
72
|
});
|
|
@@ -54,16 +74,16 @@ describe(TITLE, function() {
|
|
|
54
74
|
it("positive int (small)", function() {
|
|
55
75
|
pattern(0, 0x40000000).forEach(function(value) {
|
|
56
76
|
value = value | 0; // integer
|
|
57
|
-
var encoded = msgpack.encode(value);
|
|
58
|
-
var decoded = msgpack.decode(encoded);
|
|
77
|
+
var encoded = msgpack.encode(value, options);
|
|
78
|
+
var decoded = msgpack.decode(encoded, options);
|
|
59
79
|
assert.equal(decoded, value);
|
|
60
80
|
});
|
|
61
81
|
});
|
|
62
82
|
|
|
63
83
|
it("positive int (large)", function() {
|
|
64
84
|
pattern(0x40000000, 0xFFFFFFFF).forEach(function(value) {
|
|
65
|
-
var encoded = msgpack.encode(value);
|
|
66
|
-
var decoded = msgpack.decode(encoded);
|
|
85
|
+
var encoded = msgpack.encode(value, options);
|
|
86
|
+
var decoded = msgpack.decode(encoded, options);
|
|
67
87
|
assert.equal(decoded, value);
|
|
68
88
|
});
|
|
69
89
|
});
|
|
@@ -71,8 +91,8 @@ describe(TITLE, function() {
|
|
|
71
91
|
it("negative int (small)", function() {
|
|
72
92
|
pattern(0, 0x40000000).forEach(function(value) {
|
|
73
93
|
value = -value | 0; // integer
|
|
74
|
-
var encoded = msgpack.encode(value);
|
|
75
|
-
var decoded = msgpack.decode(encoded);
|
|
94
|
+
var encoded = msgpack.encode(value, options);
|
|
95
|
+
var decoded = msgpack.decode(encoded, options);
|
|
76
96
|
assert.equal(decoded, value);
|
|
77
97
|
});
|
|
78
98
|
});
|
|
@@ -80,16 +100,16 @@ describe(TITLE, function() {
|
|
|
80
100
|
it("negative int (large)", function() {
|
|
81
101
|
pattern(0x40000000, 0xFFFFFFFF).forEach(function(value) {
|
|
82
102
|
value = -value;
|
|
83
|
-
var encoded = msgpack.encode(value);
|
|
84
|
-
var decoded = msgpack.decode(encoded);
|
|
103
|
+
var encoded = msgpack.encode(value, options);
|
|
104
|
+
var decoded = msgpack.decode(encoded, options);
|
|
85
105
|
assert.equal(decoded, value);
|
|
86
106
|
});
|
|
87
107
|
});
|
|
88
108
|
|
|
89
109
|
it("float", function() {
|
|
90
110
|
[1.1, 10.01, 100.001, 1000.0001, 10000.00001, 100000.000001, 1000000.0000001].forEach(function(value) {
|
|
91
|
-
var encoded = msgpack.encode(value);
|
|
92
|
-
var decoded = msgpack.decode(encoded);
|
|
111
|
+
var encoded = msgpack.encode(value, options);
|
|
112
|
+
var decoded = msgpack.decode(encoded, options);
|
|
93
113
|
assert.equal(decoded, value);
|
|
94
114
|
});
|
|
95
115
|
});
|
|
@@ -98,8 +118,8 @@ describe(TITLE, function() {
|
|
|
98
118
|
this.timeout(30000);
|
|
99
119
|
pattern(0, 65537).forEach(function(length) {
|
|
100
120
|
var value = STRING_ASCII.substr(0, length);
|
|
101
|
-
var encoded = msgpack.encode(value);
|
|
102
|
-
var decoded = msgpack.decode(encoded);
|
|
121
|
+
var encoded = msgpack.encode(value, options);
|
|
122
|
+
var decoded = msgpack.decode(encoded, options);
|
|
103
123
|
assert.equal(decoded, value);
|
|
104
124
|
});
|
|
105
125
|
});
|
|
@@ -108,8 +128,8 @@ describe(TITLE, function() {
|
|
|
108
128
|
this.timeout(30000);
|
|
109
129
|
pattern(0, 65537).forEach(function(length) {
|
|
110
130
|
var value = STRING_GREEK.substr(0, length);
|
|
111
|
-
var encoded = msgpack.encode(value);
|
|
112
|
-
var decoded = msgpack.decode(encoded);
|
|
131
|
+
var encoded = msgpack.encode(value, options);
|
|
132
|
+
var decoded = msgpack.decode(encoded, options);
|
|
113
133
|
assert.equal(decoded, value);
|
|
114
134
|
});
|
|
115
135
|
});
|
|
@@ -118,8 +138,8 @@ describe(TITLE, function() {
|
|
|
118
138
|
this.timeout(30000);
|
|
119
139
|
pattern(0, 65537).forEach(function(length) {
|
|
120
140
|
var value = STRING_ASIAN.substr(0, length);
|
|
121
|
-
var encoded = msgpack.encode(value);
|
|
122
|
-
var decoded = msgpack.decode(encoded);
|
|
141
|
+
var encoded = msgpack.encode(value, options);
|
|
142
|
+
var decoded = msgpack.decode(encoded, options);
|
|
123
143
|
assert.equal(decoded, value);
|
|
124
144
|
});
|
|
125
145
|
});
|
|
@@ -131,8 +151,8 @@ describe(TITLE, function() {
|
|
|
131
151
|
value[i] = String.fromCharCode(i);
|
|
132
152
|
}
|
|
133
153
|
assert.equal(value.length, length);
|
|
134
|
-
var encoded = msgpack.encode(value);
|
|
135
|
-
var decoded = msgpack.decode(encoded);
|
|
154
|
+
var encoded = msgpack.encode(value, options);
|
|
155
|
+
var decoded = msgpack.decode(encoded, options);
|
|
136
156
|
assert.equal(decoded.length, length);
|
|
137
157
|
assert.equal(decoded[0], value[0]);
|
|
138
158
|
assert.equal(decoded[length - 1], value[length - 1]);
|
|
@@ -144,15 +164,15 @@ describe(TITLE, function() {
|
|
|
144
164
|
pattern(0, 65537).forEach(function(length) {
|
|
145
165
|
var value = new Array(length);
|
|
146
166
|
assert.equal(value.length, length);
|
|
147
|
-
var encoded = msgpack.encode(value);
|
|
148
|
-
var decoded = msgpack.decode(encoded);
|
|
167
|
+
var encoded = msgpack.encode(value, options);
|
|
168
|
+
var decoded = msgpack.decode(encoded, options);
|
|
149
169
|
assert.equal(decoded.length, length);
|
|
150
170
|
assert.equal(decoded[0], value[0]);
|
|
151
171
|
assert.equal(decoded[length - 1], value[length - 1]);
|
|
152
172
|
});
|
|
153
173
|
});
|
|
154
174
|
|
|
155
|
-
it("map (small)", function() {
|
|
175
|
+
it("object map (small)", function() {
|
|
156
176
|
pattern(0, 257).forEach(function(length) {
|
|
157
177
|
var value = {};
|
|
158
178
|
for (var i = 0; i < length; i++) {
|
|
@@ -160,15 +180,15 @@ describe(TITLE, function() {
|
|
|
160
180
|
value[key] = length;
|
|
161
181
|
}
|
|
162
182
|
assert.equal(Object.keys(value).length, length);
|
|
163
|
-
var encoded = msgpack.encode(value);
|
|
164
|
-
var decoded = msgpack.decode(encoded);
|
|
183
|
+
var encoded = msgpack.encode(value, options);
|
|
184
|
+
var decoded = msgpack.decode(encoded, options);
|
|
165
185
|
assert.equal(Object.keys(decoded).length, length);
|
|
166
186
|
assert.equal(decoded[0], value[0]);
|
|
167
187
|
assert.equal(decoded[length - 1], value[length - 1]);
|
|
168
188
|
});
|
|
169
189
|
});
|
|
170
190
|
|
|
171
|
-
it("map (large)", function() {
|
|
191
|
+
it("object map (large)", function() {
|
|
172
192
|
this.timeout(30000);
|
|
173
193
|
pattern(65536, 65537).forEach(function(length) {
|
|
174
194
|
var value = {};
|
|
@@ -176,8 +196,8 @@ describe(TITLE, function() {
|
|
|
176
196
|
value[i] = length;
|
|
177
197
|
}
|
|
178
198
|
assert.equal(Object.keys(value).length, length);
|
|
179
|
-
var encoded = msgpack.encode(value);
|
|
180
|
-
var decoded = msgpack.decode(encoded);
|
|
199
|
+
var encoded = msgpack.encode(value, options);
|
|
200
|
+
var decoded = msgpack.decode(encoded, options);
|
|
181
201
|
assert.equal(Object.keys(decoded).length, length);
|
|
182
202
|
assert.equal(decoded[0], value[0]);
|
|
183
203
|
assert.equal(decoded[length - 1], value[length - 1]);
|
|
@@ -187,14 +207,14 @@ describe(TITLE, function() {
|
|
|
187
207
|
it("buffer", function() {
|
|
188
208
|
this.timeout(30000);
|
|
189
209
|
pattern(2, 65537).forEach(function(length, idx) {
|
|
190
|
-
var value =
|
|
210
|
+
var value = Buffer.alloc(length);
|
|
191
211
|
value.fill(idx);
|
|
192
212
|
assert.equal(value.length, length);
|
|
193
|
-
var encoded = msgpack.encode(value);
|
|
194
|
-
var decoded = msgpack.decode(encoded);
|
|
213
|
+
var encoded = msgpack.encode(value, options);
|
|
214
|
+
var decoded = msgpack.decode(encoded, options);
|
|
195
215
|
assert.equal(decoded.length, length);
|
|
196
216
|
assert.equal(decoded[0], value[0]);
|
|
197
217
|
assert.equal(decoded[length - 1], value[length - 1]);
|
|
198
218
|
});
|
|
199
219
|
});
|
|
200
|
-
}
|
|
220
|
+
}
|
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,10 +21,16 @@ 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
|
-
var header =
|
|
25
|
-
var content =
|
|
32
|
+
var header = Buffer.from([0xd7, type]);
|
|
33
|
+
var content = Buffer.alloc(8);
|
|
26
34
|
for (var i = 0; i < 8; i++) {
|
|
27
35
|
content[i] = (type + i) & 0x7F;
|
|
28
36
|
}
|
|
@@ -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.from([x & 0x7F, (x + 1) & 0x7F]);
|
|
53
|
+
}
|
|
54
|
+
// fixarray len 10
|
|
55
|
+
var arrayHeader = Buffer.from([0x9a]);
|
|
56
|
+
var fullBuffer = arrayHeader;
|
|
57
|
+
for (var j = 0; j < 10; j++) {
|
|
58
|
+
// fixext 2 -- 0xd5
|
|
59
|
+
var header = Buffer.from([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
|
+
});
|
package/test/30.stream.js
CHANGED
|
@@ -22,6 +22,9 @@ var encoded = [
|
|
|
22
22
|
|
|
23
23
|
var encodeall = Buffer.concat(encoded);
|
|
24
24
|
|
|
25
|
+
// invalid msgpack type
|
|
26
|
+
var invalencoded = Buffer.from([0xc1]);
|
|
27
|
+
|
|
25
28
|
describe(TITLE, function() {
|
|
26
29
|
|
|
27
30
|
it("msgpack.createEncodeStream()", function(done) {
|
|
@@ -108,7 +111,7 @@ describe(TITLE, function() {
|
|
|
108
111
|
|
|
109
112
|
// write a single byte into the decode stream
|
|
110
113
|
function each(x) {
|
|
111
|
-
decoder.write(Buffer([x]));
|
|
114
|
+
decoder.write(Buffer.from([x]));
|
|
112
115
|
}
|
|
113
116
|
|
|
114
117
|
function onData(data) {
|
|
@@ -116,4 +119,49 @@ describe(TITLE, function() {
|
|
|
116
119
|
if (++count === 3) done();
|
|
117
120
|
}
|
|
118
121
|
});
|
|
122
|
+
|
|
123
|
+
it("msgpack.createDecodeStream().on('error',fn)", function(done) {
|
|
124
|
+
var decoder = msgpack.createDecodeStream();
|
|
125
|
+
|
|
126
|
+
decoder.on("error", function(e) {
|
|
127
|
+
if (!(e instanceof Error)) return done(new Error("should be an error"));
|
|
128
|
+
if (!/Invalid type/.test(e.message)) return done(new Error("unexpected: " + e.message));
|
|
129
|
+
done();
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
decoder.on("data", function() {
|
|
133
|
+
// throwing here would be captured by the try/catch under test
|
|
134
|
+
done(new Error("should not emit data"));
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
decoder.end(invalencoded);
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
it("msgpack.createEncodeStream().on('error',fn)", function(done) {
|
|
141
|
+
var circular = [];
|
|
142
|
+
circular.push(circular);
|
|
143
|
+
|
|
144
|
+
// the error event should carry what the synchronous API throws
|
|
145
|
+
var expected;
|
|
146
|
+
try {
|
|
147
|
+
msgpack.encode(circular);
|
|
148
|
+
} catch (e) {
|
|
149
|
+
expected = e;
|
|
150
|
+
}
|
|
151
|
+
assert.ok(expected instanceof Error, "encode() should throw for circular references");
|
|
152
|
+
|
|
153
|
+
var encoder = msgpack.createEncodeStream();
|
|
154
|
+
|
|
155
|
+
encoder.on("error", function(e) {
|
|
156
|
+
if (!(e instanceof Error)) return done(new Error("should be an error"));
|
|
157
|
+
if (e.name !== expected.name) return done(new Error("unexpected: " + e.name));
|
|
158
|
+
done();
|
|
159
|
+
});
|
|
160
|
+
|
|
161
|
+
// partial output is flushed as the internal buffer overflows
|
|
162
|
+
encoder.resume();
|
|
163
|
+
|
|
164
|
+
encoder.end(circular);
|
|
165
|
+
});
|
|
166
|
+
|
|
119
167
|
});
|
package/test/50.compat.js
CHANGED
|
@@ -10,28 +10,28 @@ var data = require("./example.json");
|
|
|
10
10
|
describe(TITLE, function() {
|
|
11
11
|
test("msgpack", function(they) {
|
|
12
12
|
assert.deepEqual(they.unpack(msgpack.encode(data)), data);
|
|
13
|
-
assert.deepEqual(msgpack.decode(Buffer(they.pack(data))), data);
|
|
13
|
+
assert.deepEqual(msgpack.decode(Buffer.from(they.pack(data))), data);
|
|
14
14
|
});
|
|
15
15
|
|
|
16
16
|
test("msgpack-js", function(they) {
|
|
17
17
|
assert.deepEqual(they.decode(msgpack.encode(data)), data);
|
|
18
|
-
assert.deepEqual(msgpack.decode(Buffer(they.encode(data))), data);
|
|
18
|
+
assert.deepEqual(msgpack.decode(Buffer.from(they.encode(data))), data);
|
|
19
19
|
});
|
|
20
20
|
|
|
21
21
|
test("msgpack-js-v5", function(they) {
|
|
22
22
|
assert.deepEqual(they.decode(msgpack.encode(data)), data);
|
|
23
|
-
assert.deepEqual(msgpack.decode(Buffer(they.encode(data))), data);
|
|
23
|
+
assert.deepEqual(msgpack.decode(Buffer.from(they.encode(data))), data);
|
|
24
24
|
});
|
|
25
25
|
|
|
26
26
|
test("msgpack5", function(they) {
|
|
27
27
|
they = they();
|
|
28
28
|
assert.deepEqual(they.decode(msgpack.encode(data)), data);
|
|
29
|
-
assert.deepEqual(msgpack.decode(Buffer(they.encode(data))), data);
|
|
29
|
+
assert.deepEqual(msgpack.decode(Buffer.from(they.encode(data))), data);
|
|
30
30
|
});
|
|
31
31
|
|
|
32
32
|
test("notepack", function(they) {
|
|
33
33
|
assert.deepEqual(they.decode(msgpack.encode(data)), data);
|
|
34
|
-
assert.deepEqual(msgpack.decode(Buffer(they.encode(data))), data);
|
|
34
|
+
assert.deepEqual(msgpack.decode(Buffer.from(they.encode(data))), data);
|
|
35
35
|
});
|
|
36
36
|
|
|
37
37
|
test("msgpack-unpack", function(they) {
|
|
@@ -41,7 +41,7 @@ describe(TITLE, function() {
|
|
|
41
41
|
test("msgpack.codec", function(they) {
|
|
42
42
|
they = they.msgpack;
|
|
43
43
|
assert.deepEqual(they.unpack(msgpack.encode(data)), data);
|
|
44
|
-
assert.deepEqual(msgpack.decode(Buffer(they.pack(data))), data);
|
|
44
|
+
assert.deepEqual(msgpack.decode(Buffer.from(they.pack(data))), data);
|
|
45
45
|
});
|
|
46
46
|
});
|
|
47
47
|
|
|
@@ -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(Buffer.from([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(Buffer.from([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/.npmignore
DELETED
package/.travis.yml
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
sudo: false
|
|
2
|
-
|
|
3
|
-
language: node_js
|
|
4
|
-
|
|
5
|
-
matrix:
|
|
6
|
-
include:
|
|
7
|
-
- node_js: "0.12"
|
|
8
|
-
env: BROWSER=1
|
|
9
|
-
- node_js: "0.10"
|
|
10
|
-
- node_js: "0.12"
|
|
11
|
-
- node_js: "4"
|
|
12
|
-
- node_js: "5"
|
|
13
|
-
|
|
14
|
-
env:
|
|
15
|
-
global:
|
|
16
|
-
- CXX=g++-4.8
|
|
17
|
-
- secure: P5H38v7QLRCYOWZkDKkl5ubJK0WxaAeVPDqbRlZDXbzEthjNf/rVMF6vnjyssbgbujTaU7xJmnVXKxjKtwAZXRrv3D9pmqqAOXdBNxaIs+Y05exA0pPBfBQNxVWKx6jbCoW7a12yWBreOAVd7sqjT86Plr2LsLM72BLaSl2v+18wOAnxYPFdDTEU17DegDUeQfmt+qFVNIUfuLcHyuiNFnLisWjhJmm3JmcjBL2WuSj2JC5Qll/zr7ezZns8qzqXqFsRRkLie4nVERV0kXvZRH5t5iB9444vwXhkVcOa2HSH+aVEDXoRVkj7JLmvYBGay/DKrGUDST91f7d5DpNYwZYNi5YHfpySaEEM8RDd+TM7oHr2YeWykqjBv4lfqVq3t9WFpC3YvLujaTNtNh01P24jvx81/XCKYWtYmBeGD7I8lVmFbOt7JNRSvfz2kP5qT47AIj3bpSBfouhntOVPkFz+e3pvK4w8wBBOLhRgXaFJZnE5IK5CRqNuEps/dBmAk5ANwoTewtLXmr2pJXVBBKmaj6E/1EmOb3KBC8F5yqid4UWJMgGK9g+QtY24mYfkIB5mldK5t9sePtNxkEqfxPO22IS7CEydr/LCB6g5zftcy7WN28DhCr3UbAC9Ydsa1k8LFsgznQ0sfyxOi/8c6lOdCLR947elLy5tAaemi20=
|
|
18
|
-
- secure: Lqm+pi1xprYlJurnEGmShpcohkWh7BwT2WvZXbfTwFH4K1BQIzbTbmhdkBTpfrJzF05q0zUGvYOTOpmz4K0JKsJfCdrjjEkpsZxTMrOvJG/C0aDLAsaiOtXTNA4unjL4qlaOA82btry6ATOsxYDWyYtjQKBUJvFEYgjBUkLarWxywU7cw8OcL4ICfHjFVA4ODvOmxUQ9ESCc1E6JkacjyprVx5gmrzEfN0JL6wcaXewt7prx02U5iDFONkntpx8VEhTwBGM2nWGzbPgiuRfOV879YXkPPWUNJc/P1Q8r8T3hvFGmg2b1x8aNZ60ir64ArXannsQhJB3rZ15rp5cAptuhMAMuuc+aF0z0VIDVStSNsLxWa/u6pH8ctMvHokrguFUSpQpduOdke/B4y719fRLUS3IW98Z10+dw0LQUn1TDmryK4ELy0IDLYPNeJJ0NoaUCv7a6OT22II085iAjGw+vMaiTm/3MRIe4kjIg2jJaCsYUZ1VFW9O/0aqtUpjuHmLg0cAxfrjBW/+sexhfO3/Ea6NCmTjaC9T7fB5YzCiEvYCHRoDUj1aloYvMBog8eE0BvDLCtbwqGBIwa5G9TEfu1ywJLQPmRXf1U1c5HUvUc+P82XOX1fs0AeeskHRSkIBLkuzYXQNcp6hU3Iy1/FOClBcAdHSi3OExJdSFHHo=
|
|
19
|
-
|
|
20
|
-
addons:
|
|
21
|
-
apt:
|
|
22
|
-
sources:
|
|
23
|
-
- ubuntu-toolchain-r-test
|
|
24
|
-
packages:
|
|
25
|
-
- g++-4.8
|
package/.zuul.yml
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
sauce_username: msgpack-lite
|
|
2
|
-
sauce_key: "32947ef3-a727-4848-9aee-cebe65df3be4"
|
|
3
|
-
name: msgpack-lite
|
|
4
|
-
ui: mocha-bdd
|
|
5
|
-
html: "test/zuul/ie.html"
|
|
6
|
-
scripts:
|
|
7
|
-
- "dist/msgpack.min.js"
|
|
8
|
-
browsers:
|
|
9
|
-
- name: ie
|
|
10
|
-
version: "9..latest"
|
|
11
|
-
- name: chrome
|
|
12
|
-
version: "latest"
|
|
13
|
-
- name: firefox
|
|
14
|
-
version: "latest"
|
|
15
|
-
- name: safari
|
|
16
|
-
version: "7..latest"
|
|
17
|
-
- name: iphone
|
|
18
|
-
version: ["7.1", "8.4", "9.2..latest"]
|
|
19
|
-
- name: android
|
|
20
|
-
version: ["4.1", "4.4", "5.1..latest"]
|
package/bower.json
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "msgpack-lite",
|
|
3
|
-
"description": "Fast Pure JavaScript MessagePack Encoder and Decoder",
|
|
4
|
-
"authors": [
|
|
5
|
-
"@kawanet"
|
|
6
|
-
],
|
|
7
|
-
"license": "MIT",
|
|
8
|
-
"moduleType": [
|
|
9
|
-
"globals"
|
|
10
|
-
],
|
|
11
|
-
"keywords": [
|
|
12
|
-
"buffer",
|
|
13
|
-
"fluentd",
|
|
14
|
-
"messagepack",
|
|
15
|
-
"msgpack",
|
|
16
|
-
"serialize",
|
|
17
|
-
"stream",
|
|
18
|
-
"typedarray",
|
|
19
|
-
"arraybuffer",
|
|
20
|
-
"uint8array"
|
|
21
|
-
],
|
|
22
|
-
"homepage": "https://github.com/kawanet/msgpack-lite",
|
|
23
|
-
"ignore": [
|
|
24
|
-
".*",
|
|
25
|
-
"Makefile",
|
|
26
|
-
"bin",
|
|
27
|
-
"bower_components",
|
|
28
|
-
"global.js",
|
|
29
|
-
"index.js",
|
|
30
|
-
"lib",
|
|
31
|
-
"node_modules",
|
|
32
|
-
"test"
|
|
33
|
-
]
|
|
34
|
-
}
|