415gotit
This commit is contained in:
247
node_modules/msgpack-lite/lib/benchmark-stream.js
generated
vendored
Executable file
247
node_modules/msgpack-lite/lib/benchmark-stream.js
generated
vendored
Executable file
@@ -0,0 +1,247 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
var PassThrough = require("stream").PassThrough;
|
||||
var async = require("async");
|
||||
|
||||
var msgpack = require("../");
|
||||
var Encoder = require("./encoder").Encoder;
|
||||
var Decoder = require("./decoder").Decoder;
|
||||
var notepack = require("notepack");
|
||||
|
||||
var pkg = require("../package.json");
|
||||
|
||||
// a sample fluentd message
|
||||
var data = ["tag", [[1440949922, {"message": "hi there"}]]];
|
||||
var packed = msgpack.encode(data); // 30 bytes per message
|
||||
var packsize = packed.length;
|
||||
var opcount = 1000000;
|
||||
var joincount = 100;
|
||||
var packjoin = repeatbuf(packed, joincount); // 3KB per chunk
|
||||
var limit = 2;
|
||||
|
||||
var argv = Array.prototype.slice.call(process.argv, 2);
|
||||
|
||||
if (argv[0] === "-v") {
|
||||
console.warn(pkg.name + " " + pkg.version);
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
if (argv[0] - 0) limit = argv.shift() - 0;
|
||||
|
||||
var list = [
|
||||
['stream.write(msgpack.encode(obj));', encode1],
|
||||
['stream.write(notepack.encode(obj));', encode4],
|
||||
['msgpack.Encoder().on("data",ondata).encode(obj);', encode2],
|
||||
['msgpack.createEncodeStream().write(obj);', encode3],
|
||||
['stream.write(msgpack.decode(buf));', decode1],
|
||||
['stream.write(notepack.decode(buf));', decode4],
|
||||
['msgpack.Decoder().on("data",ondata).decode(buf);', decode2],
|
||||
['msgpack.createDecodeStream().write(buf);', decode3]
|
||||
];
|
||||
|
||||
function encode1(callback) {
|
||||
var stream = new PassThrough();
|
||||
var cnt = counter(callback);
|
||||
stream.on("data", cnt.buf);
|
||||
stream.on("end", cnt.end);
|
||||
for (var j = 0; j < opcount; j++) {
|
||||
stream.write(msgpack.encode(data));
|
||||
}
|
||||
stream.end();
|
||||
}
|
||||
|
||||
function encode2(callback) {
|
||||
var stream = new PassThrough();
|
||||
var cnt = counter(callback);
|
||||
stream.on("data", cnt.buf);
|
||||
stream.on("end", cnt.end);
|
||||
var encoder = Encoder();
|
||||
encoder.on("data", function(chunk) {
|
||||
stream.write(chunk);
|
||||
});
|
||||
encoder.on("end", function() {
|
||||
stream.end();
|
||||
});
|
||||
for (var j = 0; j < opcount; j++) {
|
||||
encoder.encode(data);
|
||||
}
|
||||
encoder.end();
|
||||
}
|
||||
|
||||
function encode3(callback) {
|
||||
var stream = msgpack.createEncodeStream();
|
||||
var cnt = counter(callback);
|
||||
stream.on("data", cnt.buf);
|
||||
stream.on("end", cnt.end);
|
||||
for (var j = 0; j < opcount; j++) {
|
||||
stream.write(data);
|
||||
}
|
||||
stream.end();
|
||||
}
|
||||
|
||||
function encode4(callback) {
|
||||
var stream = new PassThrough();
|
||||
var cnt = counter(callback);
|
||||
stream.on("data", cnt.buf);
|
||||
stream.on("end", cnt.end);
|
||||
for (var j = 0; j < opcount; j++) {
|
||||
stream.write(notepack.encode(data));
|
||||
}
|
||||
stream.end();
|
||||
}
|
||||
|
||||
function decode1(callback) {
|
||||
var stream = new PassThrough({objectMode: true});
|
||||
var cnt = counter(callback);
|
||||
stream.on("data", cnt.inc);
|
||||
stream.on("end", cnt.end);
|
||||
for (var j = 0; j < opcount; j++) {
|
||||
stream.write(msgpack.decode(packed));
|
||||
}
|
||||
stream.end();
|
||||
}
|
||||
|
||||
function decode2(callback) {
|
||||
var stream = new PassThrough({objectMode: true});
|
||||
var cnt = counter(callback);
|
||||
stream.on("data", cnt.inc);
|
||||
stream.on("end", cnt.end);
|
||||
var decoder = Decoder();
|
||||
decoder.on("data", function(chunk) {
|
||||
stream.write(chunk);
|
||||
});
|
||||
decoder.on("end", function() {
|
||||
stream.end();
|
||||
});
|
||||
for (var j = 0; j < opcount / joincount; j++) {
|
||||
decoder.decode(packjoin);
|
||||
}
|
||||
decoder.end();
|
||||
}
|
||||
|
||||
function decode3(callback) {
|
||||
var stream = msgpack.createDecodeStream();
|
||||
var cnt = counter(callback);
|
||||
stream.on("data", cnt.inc);
|
||||
stream.on("end", cnt.end);
|
||||
for (var j = 0; j < opcount / joincount; j++) {
|
||||
stream.write(packjoin);
|
||||
}
|
||||
stream.end();
|
||||
}
|
||||
|
||||
function decode4(callback) {
|
||||
var stream = new PassThrough({objectMode: true});
|
||||
var cnt = counter(callback);
|
||||
stream.on("data", cnt.inc);
|
||||
stream.on("end", cnt.end);
|
||||
for (var j = 0; j < opcount; j++) {
|
||||
stream.write(notepack.decode(packed));
|
||||
}
|
||||
stream.end();
|
||||
}
|
||||
|
||||
function rpad(str, len, chr) {
|
||||
if (!chr) chr = " ";
|
||||
str += "";
|
||||
while (str.length < len) str += chr;
|
||||
return str;
|
||||
}
|
||||
|
||||
function lpad(str, len, chr) {
|
||||
if (!chr) chr = " ";
|
||||
str += "";
|
||||
while (str.length < len) str = chr + str;
|
||||
return str;
|
||||
}
|
||||
|
||||
function repeatbuf(buf, cnt) {
|
||||
var array = [];
|
||||
for (var i = 0; i < cnt; i++) {
|
||||
array.push(buf);
|
||||
}
|
||||
return Buffer.concat(array);
|
||||
}
|
||||
|
||||
function counter(callback) {
|
||||
var cnt = 0;
|
||||
return {buf: b, inc: i, end: e};
|
||||
|
||||
function b(buf) {
|
||||
cnt += buf.length / packsize;
|
||||
}
|
||||
|
||||
function i() {
|
||||
cnt++;
|
||||
}
|
||||
|
||||
function e() {
|
||||
cnt = Math.round(cnt);
|
||||
callback(null, cnt);
|
||||
}
|
||||
}
|
||||
|
||||
function run() {
|
||||
// task filter
|
||||
if (argv.length) {
|
||||
list = list.filter(function(pair) {
|
||||
var name = pair[0];
|
||||
var match = argv.filter(function(grep) {
|
||||
return (name.indexOf(grep) > -1);
|
||||
});
|
||||
return match.length;
|
||||
});
|
||||
}
|
||||
|
||||
// run tasks repeatedly
|
||||
var tasks = [];
|
||||
for (var i = 0; i < limit; i++) {
|
||||
tasks.push(oneset);
|
||||
}
|
||||
async.series(tasks, end);
|
||||
|
||||
// run a series of tasks
|
||||
function oneset(callback) {
|
||||
async.eachSeries(list, bench, callback);
|
||||
}
|
||||
|
||||
// run a single benchmark
|
||||
function bench(pair, callback) {
|
||||
process.stdout.write(".");
|
||||
var func = pair[1];
|
||||
var start = new Date() - 0;
|
||||
func(function(err, cnt) {
|
||||
var end = new Date() - 0;
|
||||
var array = pair[2] || (pair[2] = []);
|
||||
array.push(end - start);
|
||||
pair[3] = cnt;
|
||||
setTimeout(callback, 100);
|
||||
});
|
||||
}
|
||||
|
||||
// show result
|
||||
function end() {
|
||||
var title = "operation (" + opcount + " x " + limit + ")";
|
||||
process.stdout.write("\n");
|
||||
|
||||
// table header
|
||||
var COL1 = 48;
|
||||
console.log(rpad(title, COL1), "|", " op ", "|", " ms ", "|", " op/s ");
|
||||
console.log(rpad("", COL1, "-"), "|", "------:", "|", "----:", "|", "-----:");
|
||||
|
||||
// table body
|
||||
list.forEach(function(pair) {
|
||||
var name = pair[0];
|
||||
var op = pair[3];
|
||||
var array = pair[2];
|
||||
array = array.sort(function(a, b) {
|
||||
return a > b;
|
||||
});
|
||||
var fastest = array[0];
|
||||
var score = Math.floor(opcount / fastest * 1000);
|
||||
console.log(rpad(name, COL1), "|", lpad(op, 7), "|", lpad(fastest, 5), "|", lpad(score, 6));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
run();
|
||||
157
node_modules/msgpack-lite/lib/benchmark.js
generated
vendored
Executable file
157
node_modules/msgpack-lite/lib/benchmark.js
generated
vendored
Executable file
@@ -0,0 +1,157 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
var msgpack_node = try_require("msgpack");
|
||||
var msgpack_lite = try_require("../index");
|
||||
var msgpack_js = try_require("msgpack-js");
|
||||
var msgpack_js_v5 = try_require("msgpack-js-v5");
|
||||
var msgpack5 = try_require("msgpack5");
|
||||
var msgpack_unpack = try_require("msgpack-unpack");
|
||||
var msgpack_codec = try_require("msgpack.codec");
|
||||
var notepack = try_require("notepack");
|
||||
|
||||
msgpack5 = msgpack5 && msgpack5();
|
||||
msgpack_codec = msgpack_codec && msgpack_codec.msgpack;
|
||||
|
||||
var pkg = require("../package.json");
|
||||
var data = require("../test/example");
|
||||
var packed = msgpack_lite.encode(data);
|
||||
var expected = JSON.stringify(data);
|
||||
|
||||
var argv = Array.prototype.slice.call(process.argv, 2);
|
||||
|
||||
if (argv[0] === "-v") {
|
||||
console.warn(pkg.name + " " + pkg.version);
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
var limit = 5;
|
||||
if (argv[0] - 0) limit = argv.shift() - 0;
|
||||
limit *= 1000;
|
||||
|
||||
var COL1 = 57;
|
||||
var COL2 = 6;
|
||||
var COL3 = 5;
|
||||
var COL4 = 6;
|
||||
|
||||
console.log(rpad("operation", COL1), "|", " op ", "|", " ms ", "|", " op/s ");
|
||||
console.log(rpad("", COL1, "-"), "|", lpad(":", COL2, "-"), "|", lpad(":", COL3, "-"), "|", lpad(":", COL4, "-"));
|
||||
|
||||
var buf, obj;
|
||||
|
||||
if (JSON) {
|
||||
buf = bench('buf = Buffer(JSON.stringify(obj));', JSON_stringify, data);
|
||||
obj = bench('obj = JSON.parse(buf);', JSON.parse, buf);
|
||||
test(obj);
|
||||
}
|
||||
|
||||
if (msgpack_lite) {
|
||||
buf = bench('buf = require("msgpack-lite").encode(obj);', msgpack_lite.encode, data);
|
||||
obj = bench('obj = require("msgpack-lite").decode(buf);', msgpack_lite.decode, packed);
|
||||
test(obj);
|
||||
}
|
||||
|
||||
if (msgpack_node) {
|
||||
buf = bench('buf = require("msgpack").pack(obj);', msgpack_node.pack, data);
|
||||
obj = bench('obj = require("msgpack").unpack(buf);', msgpack_node.unpack, buf);
|
||||
test(obj);
|
||||
}
|
||||
|
||||
if (msgpack_codec) {
|
||||
buf = bench('buf = Buffer(require("msgpack.codec").msgpack.pack(obj));', msgpack_codec_pack, data);
|
||||
obj = bench('obj = require("msgpack.codec").msgpack.unpack(buf);', msgpack_codec.unpack, buf);
|
||||
test(obj);
|
||||
}
|
||||
|
||||
if (msgpack_js_v5) {
|
||||
buf = bench('buf = require("msgpack-js-v5").encode(obj);', msgpack_js_v5.encode, data);
|
||||
obj = bench('obj = require("msgpack-js-v5").decode(buf);', msgpack_js_v5.decode, buf);
|
||||
test(obj);
|
||||
}
|
||||
|
||||
if (msgpack_js) {
|
||||
buf = bench('buf = require("msgpack-js").encode(obj);', msgpack_js.encode, data);
|
||||
obj = bench('obj = require("msgpack-js").decode(buf);', msgpack_js.decode, buf);
|
||||
test(obj);
|
||||
}
|
||||
|
||||
if (msgpack5) {
|
||||
buf = bench('buf = require("msgpack5")().encode(obj);', msgpack5.encode, data);
|
||||
obj = bench('obj = require("msgpack5")().decode(buf);', msgpack5.decode, buf);
|
||||
test(obj);
|
||||
}
|
||||
|
||||
if (notepack) {
|
||||
buf = bench('buf = require("notepack").encode(obj);', notepack.encode, data);
|
||||
obj = bench('obj = require("notepack").decode(buf);', notepack.decode, buf);
|
||||
test(obj);
|
||||
}
|
||||
|
||||
if (msgpack_unpack) {
|
||||
obj = bench('obj = require("msgpack-unpack").decode(buf);', msgpack_unpack, packed);
|
||||
test(obj);
|
||||
}
|
||||
|
||||
function JSON_stringify(src) {
|
||||
return Buffer(JSON.stringify(src));
|
||||
}
|
||||
|
||||
function msgpack_codec_pack(data) {
|
||||
return Buffer(msgpack_codec.pack(data));
|
||||
}
|
||||
|
||||
function bench(name, func, src) {
|
||||
if (argv.length) {
|
||||
var match = argv.filter(function(grep) {
|
||||
return (name.indexOf(grep) > -1);
|
||||
});
|
||||
if (!match.length) return SKIP;
|
||||
}
|
||||
var ret, duration;
|
||||
var start = new Date() - 0;
|
||||
var count = 0;
|
||||
while (1) {
|
||||
var end = new Date() - 0;
|
||||
duration = end - start;
|
||||
if (duration >= limit) break;
|
||||
while ((++count) % 100) ret = func(src);
|
||||
}
|
||||
name = rpad(name, COL1);
|
||||
var score = Math.floor(count / duration * 1000);
|
||||
count = lpad(count, COL2);
|
||||
duration = lpad(duration, COL3);
|
||||
score = lpad(score, COL4);
|
||||
console.log(name, "|", count, "|", duration, "|", score);
|
||||
return ret;
|
||||
}
|
||||
|
||||
function rpad(str, len, chr) {
|
||||
if (!chr) chr = " ";
|
||||
while (str.length < len) str += chr;
|
||||
return str;
|
||||
}
|
||||
|
||||
function lpad(str, len, chr) {
|
||||
if (!chr) chr = " ";
|
||||
str += "";
|
||||
while (str.length < len) str = chr + str;
|
||||
return str;
|
||||
}
|
||||
|
||||
function test(actual) {
|
||||
if (actual === SKIP) return;
|
||||
actual = JSON.stringify(actual);
|
||||
if (actual === expected) return;
|
||||
console.warn("expected: " + expected);
|
||||
console.warn("actual: " + actual);
|
||||
}
|
||||
|
||||
function SKIP() {
|
||||
}
|
||||
|
||||
function try_require(name) {
|
||||
try {
|
||||
return require(name);
|
||||
} catch (e) {
|
||||
// ignore
|
||||
}
|
||||
}
|
||||
10
node_modules/msgpack-lite/lib/browser.js
generated
vendored
Normal file
10
node_modules/msgpack-lite/lib/browser.js
generated
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
// browser.js
|
||||
|
||||
exports.encode = require("./encode").encode;
|
||||
exports.decode = require("./decode").decode;
|
||||
|
||||
exports.Encoder = require("./encoder").Encoder;
|
||||
exports.Decoder = require("./decoder").Decoder;
|
||||
|
||||
exports.createCodec = require("./ext").createCodec;
|
||||
exports.codec = require("./codec").codec;
|
||||
11
node_modules/msgpack-lite/lib/buffer-global.js
generated
vendored
Normal file
11
node_modules/msgpack-lite/lib/buffer-global.js
generated
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
/* globals Buffer */
|
||||
|
||||
module.exports =
|
||||
c(("undefined" !== typeof Buffer) && Buffer) ||
|
||||
c(this.Buffer) ||
|
||||
c(("undefined" !== typeof window) && window.Buffer) ||
|
||||
this.Buffer;
|
||||
|
||||
function c(B) {
|
||||
return B && B.isBuffer && B;
|
||||
}
|
||||
134
node_modules/msgpack-lite/lib/buffer-lite.js
generated
vendored
Normal file
134
node_modules/msgpack-lite/lib/buffer-lite.js
generated
vendored
Normal file
@@ -0,0 +1,134 @@
|
||||
// buffer-lite.js
|
||||
|
||||
var MAXBUFLEN = 8192;
|
||||
|
||||
exports.copy = copy;
|
||||
exports.toString = toString;
|
||||
exports.write = write;
|
||||
|
||||
/**
|
||||
* Buffer.prototype.write()
|
||||
*
|
||||
* @param string {String}
|
||||
* @param [offset] {Number}
|
||||
* @returns {Number}
|
||||
*/
|
||||
|
||||
function write(string, offset) {
|
||||
var buffer = this;
|
||||
var index = offset || (offset |= 0);
|
||||
var length = string.length;
|
||||
var chr = 0;
|
||||
var i = 0;
|
||||
while (i < length) {
|
||||
chr = string.charCodeAt(i++);
|
||||
|
||||
if (chr < 128) {
|
||||
buffer[index++] = chr;
|
||||
} else if (chr < 0x800) {
|
||||
// 2 bytes
|
||||
buffer[index++] = 0xC0 | (chr >>> 6);
|
||||
buffer[index++] = 0x80 | (chr & 0x3F);
|
||||
} else if (chr < 0xD800 || chr > 0xDFFF) {
|
||||
// 3 bytes
|
||||
buffer[index++] = 0xE0 | (chr >>> 12);
|
||||
buffer[index++] = 0x80 | ((chr >>> 6) & 0x3F);
|
||||
buffer[index++] = 0x80 | (chr & 0x3F);
|
||||
} else {
|
||||
// 4 bytes - surrogate pair
|
||||
chr = (((chr - 0xD800) << 10) | (string.charCodeAt(i++) - 0xDC00)) + 0x10000;
|
||||
buffer[index++] = 0xF0 | (chr >>> 18);
|
||||
buffer[index++] = 0x80 | ((chr >>> 12) & 0x3F);
|
||||
buffer[index++] = 0x80 | ((chr >>> 6) & 0x3F);
|
||||
buffer[index++] = 0x80 | (chr & 0x3F);
|
||||
}
|
||||
}
|
||||
return index - offset;
|
||||
}
|
||||
|
||||
/**
|
||||
* Buffer.prototype.toString()
|
||||
*
|
||||
* @param [encoding] {String} ignored
|
||||
* @param [start] {Number}
|
||||
* @param [end] {Number}
|
||||
* @returns {String}
|
||||
*/
|
||||
|
||||
function toString(encoding, start, end) {
|
||||
var buffer = this;
|
||||
var index = start|0;
|
||||
if (!end) end = buffer.length;
|
||||
var string = '';
|
||||
var chr = 0;
|
||||
|
||||
while (index < end) {
|
||||
chr = buffer[index++];
|
||||
if (chr < 128) {
|
||||
string += String.fromCharCode(chr);
|
||||
continue;
|
||||
}
|
||||
|
||||
if ((chr & 0xE0) === 0xC0) {
|
||||
// 2 bytes
|
||||
chr = (chr & 0x1F) << 6 |
|
||||
(buffer[index++] & 0x3F);
|
||||
|
||||
} else if ((chr & 0xF0) === 0xE0) {
|
||||
// 3 bytes
|
||||
chr = (chr & 0x0F) << 12 |
|
||||
(buffer[index++] & 0x3F) << 6 |
|
||||
(buffer[index++] & 0x3F);
|
||||
|
||||
} else if ((chr & 0xF8) === 0xF0) {
|
||||
// 4 bytes
|
||||
chr = (chr & 0x07) << 18 |
|
||||
(buffer[index++] & 0x3F) << 12 |
|
||||
(buffer[index++] & 0x3F) << 6 |
|
||||
(buffer[index++] & 0x3F);
|
||||
}
|
||||
|
||||
if (chr >= 0x010000) {
|
||||
// A surrogate pair
|
||||
chr -= 0x010000;
|
||||
|
||||
string += String.fromCharCode((chr >>> 10) + 0xD800, (chr & 0x3FF) + 0xDC00);
|
||||
} else {
|
||||
string += String.fromCharCode(chr);
|
||||
}
|
||||
}
|
||||
|
||||
return string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Buffer.prototype.copy()
|
||||
*
|
||||
* @param target {Buffer}
|
||||
* @param [targetStart] {Number}
|
||||
* @param [start] {Number}
|
||||
* @param [end] {Number}
|
||||
* @returns {number}
|
||||
*/
|
||||
|
||||
function copy(target, targetStart, start, end) {
|
||||
var i;
|
||||
if (!start) start = 0;
|
||||
if (!end && end !== 0) end = this.length;
|
||||
if (!targetStart) targetStart = 0;
|
||||
var len = end - start;
|
||||
|
||||
if (target === this && start < targetStart && targetStart < end) {
|
||||
// descending
|
||||
for (i = len - 1; i >= 0; i--) {
|
||||
target[i + targetStart] = this[i + start];
|
||||
}
|
||||
} else {
|
||||
// ascending
|
||||
for (i = 0; i < len; i++) {
|
||||
target[i + targetStart] = this[i + start];
|
||||
}
|
||||
}
|
||||
|
||||
return len;
|
||||
}
|
||||
41
node_modules/msgpack-lite/lib/bufferish-array.js
generated
vendored
Normal file
41
node_modules/msgpack-lite/lib/bufferish-array.js
generated
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
// bufferish-array.js
|
||||
|
||||
var Bufferish = require("./bufferish");
|
||||
|
||||
var exports = module.exports = alloc(0);
|
||||
|
||||
exports.alloc = alloc;
|
||||
exports.concat = Bufferish.concat;
|
||||
exports.from = from;
|
||||
|
||||
/**
|
||||
* @param size {Number}
|
||||
* @returns {Buffer|Uint8Array|Array}
|
||||
*/
|
||||
|
||||
function alloc(size) {
|
||||
return new Array(size);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param value {Array|ArrayBuffer|Buffer|String}
|
||||
* @returns {Array}
|
||||
*/
|
||||
|
||||
function from(value) {
|
||||
if (!Bufferish.isBuffer(value) && Bufferish.isView(value)) {
|
||||
// TypedArray to Uint8Array
|
||||
value = Bufferish.Uint8Array.from(value);
|
||||
} else if (Bufferish.isArrayBuffer(value)) {
|
||||
// ArrayBuffer to Uint8Array
|
||||
value = new Uint8Array(value);
|
||||
} else if (typeof value === "string") {
|
||||
// String to Array
|
||||
return Bufferish.from.call(exports, value);
|
||||
} else if (typeof value === "number") {
|
||||
throw new TypeError('"value" argument must not be a number');
|
||||
}
|
||||
|
||||
// Array-like to Array
|
||||
return Array.prototype.slice.call(value);
|
||||
}
|
||||
46
node_modules/msgpack-lite/lib/bufferish-buffer.js
generated
vendored
Normal file
46
node_modules/msgpack-lite/lib/bufferish-buffer.js
generated
vendored
Normal file
@@ -0,0 +1,46 @@
|
||||
// bufferish-buffer.js
|
||||
|
||||
var Bufferish = require("./bufferish");
|
||||
var Buffer = Bufferish.global;
|
||||
|
||||
var exports = module.exports = Bufferish.hasBuffer ? alloc(0) : [];
|
||||
|
||||
exports.alloc = Bufferish.hasBuffer && Buffer.alloc || alloc;
|
||||
exports.concat = Bufferish.concat;
|
||||
exports.from = from;
|
||||
|
||||
/**
|
||||
* @param size {Number}
|
||||
* @returns {Buffer|Uint8Array|Array}
|
||||
*/
|
||||
|
||||
function alloc(size) {
|
||||
return new Buffer(size);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param value {Array|ArrayBuffer|Buffer|String}
|
||||
* @returns {Buffer}
|
||||
*/
|
||||
|
||||
function from(value) {
|
||||
if (!Bufferish.isBuffer(value) && Bufferish.isView(value)) {
|
||||
// TypedArray to Uint8Array
|
||||
value = Bufferish.Uint8Array.from(value);
|
||||
} else if (Bufferish.isArrayBuffer(value)) {
|
||||
// ArrayBuffer to Uint8Array
|
||||
value = new Uint8Array(value);
|
||||
} else if (typeof value === "string") {
|
||||
// String to Buffer
|
||||
return Bufferish.from.call(exports, value);
|
||||
} else if (typeof value === "number") {
|
||||
throw new TypeError('"value" argument must not be a number');
|
||||
}
|
||||
|
||||
// Array-like to Buffer
|
||||
if (Buffer.from && Buffer.from.length !== 1) {
|
||||
return Buffer.from(value); // node v6+
|
||||
} else {
|
||||
return new Buffer(value); // node v4
|
||||
}
|
||||
}
|
||||
86
node_modules/msgpack-lite/lib/bufferish-proto.js
generated
vendored
Normal file
86
node_modules/msgpack-lite/lib/bufferish-proto.js
generated
vendored
Normal file
@@ -0,0 +1,86 @@
|
||||
// bufferish-proto.js
|
||||
|
||||
/* jshint eqnull:true */
|
||||
|
||||
var BufferLite = require("./buffer-lite");
|
||||
|
||||
exports.copy = copy;
|
||||
exports.slice = slice;
|
||||
exports.toString = toString;
|
||||
exports.write = gen("write");
|
||||
|
||||
var Bufferish = require("./bufferish");
|
||||
var Buffer = Bufferish.global;
|
||||
|
||||
var isBufferShim = Bufferish.hasBuffer && ("TYPED_ARRAY_SUPPORT" in Buffer);
|
||||
var brokenTypedArray = isBufferShim && !Buffer.TYPED_ARRAY_SUPPORT;
|
||||
|
||||
/**
|
||||
* @param target {Buffer|Uint8Array|Array}
|
||||
* @param [targetStart] {Number}
|
||||
* @param [start] {Number}
|
||||
* @param [end] {Number}
|
||||
* @returns {Buffer|Uint8Array|Array}
|
||||
*/
|
||||
|
||||
function copy(target, targetStart, start, end) {
|
||||
var thisIsBuffer = Bufferish.isBuffer(this);
|
||||
var targetIsBuffer = Bufferish.isBuffer(target);
|
||||
if (thisIsBuffer && targetIsBuffer) {
|
||||
// Buffer to Buffer
|
||||
return this.copy(target, targetStart, start, end);
|
||||
} else if (!brokenTypedArray && !thisIsBuffer && !targetIsBuffer &&
|
||||
Bufferish.isView(this) && Bufferish.isView(target)) {
|
||||
// Uint8Array to Uint8Array (except for minor some browsers)
|
||||
var buffer = (start || end != null) ? slice.call(this, start, end) : this;
|
||||
target.set(buffer, targetStart);
|
||||
return buffer.length;
|
||||
} else {
|
||||
// other cases
|
||||
return BufferLite.copy.call(this, target, targetStart, start, end);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param [start] {Number}
|
||||
* @param [end] {Number}
|
||||
* @returns {Buffer|Uint8Array|Array}
|
||||
*/
|
||||
|
||||
function slice(start, end) {
|
||||
// for Buffer, Uint8Array (except for minor some browsers) and Array
|
||||
var f = this.slice || (!brokenTypedArray && this.subarray);
|
||||
if (f) return f.call(this, start, end);
|
||||
|
||||
// Uint8Array (for minor some browsers)
|
||||
var target = Bufferish.alloc.call(this, end - start);
|
||||
copy.call(this, target, 0, start, end);
|
||||
return target;
|
||||
}
|
||||
|
||||
/**
|
||||
* Buffer.prototype.toString()
|
||||
*
|
||||
* @param [encoding] {String} ignored
|
||||
* @param [start] {Number}
|
||||
* @param [end] {Number}
|
||||
* @returns {String}
|
||||
*/
|
||||
|
||||
function toString(encoding, start, end) {
|
||||
var f = (!isBufferShim && Bufferish.isBuffer(this)) ? this.toString : BufferLite.toString;
|
||||
return f.apply(this, arguments);
|
||||
}
|
||||
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
|
||||
function gen(method) {
|
||||
return wrap;
|
||||
|
||||
function wrap() {
|
||||
var f = this[method] || BufferLite[method];
|
||||
return f.apply(this, arguments);
|
||||
}
|
||||
}
|
||||
51
node_modules/msgpack-lite/lib/bufferish-uint8array.js
generated
vendored
Normal file
51
node_modules/msgpack-lite/lib/bufferish-uint8array.js
generated
vendored
Normal file
@@ -0,0 +1,51 @@
|
||||
// bufferish-uint8array.js
|
||||
|
||||
var Bufferish = require("./bufferish");
|
||||
|
||||
var exports = module.exports = Bufferish.hasArrayBuffer ? alloc(0) : [];
|
||||
|
||||
exports.alloc = alloc;
|
||||
exports.concat = Bufferish.concat;
|
||||
exports.from = from;
|
||||
|
||||
/**
|
||||
* @param size {Number}
|
||||
* @returns {Buffer|Uint8Array|Array}
|
||||
*/
|
||||
|
||||
function alloc(size) {
|
||||
return new Uint8Array(size);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param value {Array|ArrayBuffer|Buffer|String}
|
||||
* @returns {Uint8Array}
|
||||
*/
|
||||
|
||||
function from(value) {
|
||||
if (Bufferish.isView(value)) {
|
||||
// TypedArray to ArrayBuffer
|
||||
var byteOffset = value.byteOffset;
|
||||
var byteLength = value.byteLength;
|
||||
value = value.buffer;
|
||||
if (value.byteLength !== byteLength) {
|
||||
if (value.slice) {
|
||||
value = value.slice(byteOffset, byteOffset + byteLength);
|
||||
} else {
|
||||
// Android 4.1 does not have ArrayBuffer.prototype.slice
|
||||
value = new Uint8Array(value);
|
||||
if (value.byteLength !== byteLength) {
|
||||
// TypedArray to ArrayBuffer to Uint8Array to Array
|
||||
value = Array.prototype.slice.call(value, byteOffset, byteOffset + byteLength);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (typeof value === "string") {
|
||||
// String to Uint8Array
|
||||
return Bufferish.from.call(exports, value);
|
||||
} else if (typeof value === "number") {
|
||||
throw new TypeError('"value" argument must not be a number');
|
||||
}
|
||||
|
||||
return new Uint8Array(value);
|
||||
}
|
||||
108
node_modules/msgpack-lite/lib/bufferish.js
generated
vendored
Normal file
108
node_modules/msgpack-lite/lib/bufferish.js
generated
vendored
Normal file
@@ -0,0 +1,108 @@
|
||||
// bufferish.js
|
||||
|
||||
var Buffer = exports.global = require("./buffer-global");
|
||||
var hasBuffer = exports.hasBuffer = Buffer && !!Buffer.isBuffer;
|
||||
var hasArrayBuffer = exports.hasArrayBuffer = ("undefined" !== typeof ArrayBuffer);
|
||||
|
||||
var isArray = exports.isArray = require("isarray");
|
||||
exports.isArrayBuffer = hasArrayBuffer ? isArrayBuffer : _false;
|
||||
var isBuffer = exports.isBuffer = hasBuffer ? Buffer.isBuffer : _false;
|
||||
var isView = exports.isView = hasArrayBuffer ? (ArrayBuffer.isView || _is("ArrayBuffer", "buffer")) : _false;
|
||||
|
||||
exports.alloc = alloc;
|
||||
exports.concat = concat;
|
||||
exports.from = from;
|
||||
|
||||
var BufferArray = exports.Array = require("./bufferish-array");
|
||||
var BufferBuffer = exports.Buffer = require("./bufferish-buffer");
|
||||
var BufferUint8Array = exports.Uint8Array = require("./bufferish-uint8array");
|
||||
var BufferProto = exports.prototype = require("./bufferish-proto");
|
||||
|
||||
/**
|
||||
* @param value {Array|ArrayBuffer|Buffer|String}
|
||||
* @returns {Buffer|Uint8Array|Array}
|
||||
*/
|
||||
|
||||
function from(value) {
|
||||
if (typeof value === "string") {
|
||||
return fromString.call(this, value);
|
||||
} else {
|
||||
return auto(this).from(value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param size {Number}
|
||||
* @returns {Buffer|Uint8Array|Array}
|
||||
*/
|
||||
|
||||
function alloc(size) {
|
||||
return auto(this).alloc(size);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param list {Array} array of (Buffer|Uint8Array|Array)s
|
||||
* @param [length]
|
||||
* @returns {Buffer|Uint8Array|Array}
|
||||
*/
|
||||
|
||||
function concat(list, length) {
|
||||
if (!length) {
|
||||
length = 0;
|
||||
Array.prototype.forEach.call(list, dryrun);
|
||||
}
|
||||
var ref = (this !== exports) && this || list[0];
|
||||
var result = alloc.call(ref, length);
|
||||
var offset = 0;
|
||||
Array.prototype.forEach.call(list, append);
|
||||
return result;
|
||||
|
||||
function dryrun(buffer) {
|
||||
length += buffer.length;
|
||||
}
|
||||
|
||||
function append(buffer) {
|
||||
offset += BufferProto.copy.call(buffer, result, offset);
|
||||
}
|
||||
}
|
||||
|
||||
var _isArrayBuffer = _is("ArrayBuffer");
|
||||
|
||||
function isArrayBuffer(value) {
|
||||
return (value instanceof ArrayBuffer) || _isArrayBuffer(value);
|
||||
}
|
||||
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
|
||||
function fromString(value) {
|
||||
var expected = value.length * 3;
|
||||
var that = alloc.call(this, expected);
|
||||
var actual = BufferProto.write.call(that, value);
|
||||
if (expected !== actual) {
|
||||
that = BufferProto.slice.call(that, 0, actual);
|
||||
}
|
||||
return that;
|
||||
}
|
||||
|
||||
function auto(that) {
|
||||
return isBuffer(that) ? BufferBuffer
|
||||
: isView(that) ? BufferUint8Array
|
||||
: isArray(that) ? BufferArray
|
||||
: hasBuffer ? BufferBuffer
|
||||
: hasArrayBuffer ? BufferUint8Array
|
||||
: BufferArray;
|
||||
}
|
||||
|
||||
function _false() {
|
||||
return false;
|
||||
}
|
||||
|
||||
function _is(name, key) {
|
||||
/* jshint eqnull:true */
|
||||
name = "[object " + name + "]";
|
||||
return function(value) {
|
||||
return (value != null) && {}.toString.call(key ? value[key] : value) === name;
|
||||
};
|
||||
}
|
||||
97
node_modules/msgpack-lite/lib/cli.js
generated
vendored
Normal file
97
node_modules/msgpack-lite/lib/cli.js
generated
vendored
Normal file
@@ -0,0 +1,97 @@
|
||||
// cli.js
|
||||
|
||||
var fs = require("fs");
|
||||
var Stream = require("stream");
|
||||
var msgpack = require("../");
|
||||
|
||||
exports.CLI = CLI;
|
||||
|
||||
function help() {
|
||||
var cfgmap = {
|
||||
"M": "input MessagePack (default)",
|
||||
"J": "input JSON",
|
||||
"S": "input JSON(s) '\\n' separated stream",
|
||||
"m": "output MessagePack (default)",
|
||||
"j": "output JSON(s)",
|
||||
"h": "show help message",
|
||||
"1": "add a spacer for JSON output"
|
||||
};
|
||||
var keys = Object.keys(cfgmap);
|
||||
var flags = keys.join("");
|
||||
process.stderr.write("Usage: msgpack-lite [-" + flags + "] [infile] [outfile]\n");
|
||||
keys.forEach(function(key) {
|
||||
process.stderr.write(" -" + key + " " + cfgmap[key] + "\n");
|
||||
});
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
function CLI() {
|
||||
var input;
|
||||
var pass = new Stream.PassThrough({objectMode: true});
|
||||
var output;
|
||||
|
||||
var args = {};
|
||||
Array.prototype.forEach.call(arguments, function(val) {
|
||||
if (val[0] === "-") {
|
||||
val.split("").forEach(function(c) {
|
||||
args[c] = true;
|
||||
});
|
||||
} else if (!input) {
|
||||
input = val;
|
||||
} else {
|
||||
output = val;
|
||||
}
|
||||
});
|
||||
|
||||
if (args.h) return help();
|
||||
if (!Object.keys(args).length) return help();
|
||||
|
||||
if (input === "-") input = null;
|
||||
if (output === "-") output = null;
|
||||
input = input ? fs.createReadStream(input) : process.stdin;
|
||||
output = output ? fs.createWriteStream(output) : process.stdout;
|
||||
|
||||
if (args.j) {
|
||||
var spacer = args[2] ? " " : args[1] ? " " : null;
|
||||
pass.on("data", function(data) {
|
||||
output.write(JSON.stringify(data, null, spacer) + "\n");
|
||||
});
|
||||
} else {
|
||||
// pass.pipe(msgpack.createEncodeStream()).pipe(output);
|
||||
pass.on("data", function(data) {
|
||||
output.write(msgpack.encode(data));
|
||||
});
|
||||
}
|
||||
|
||||
if (args.J || args.S) {
|
||||
decodeJSON(input, pass, args);
|
||||
} else {
|
||||
input.pipe(msgpack.createDecodeStream()).pipe(pass);
|
||||
}
|
||||
}
|
||||
|
||||
function decodeJSON(input, output, args) {
|
||||
var buf = "";
|
||||
input.on("data", function(chunk) {
|
||||
buf += chunk;
|
||||
if (args.S) sendStreaming();
|
||||
});
|
||||
input.on("end", function() {
|
||||
sendAll();
|
||||
});
|
||||
|
||||
function sendAll() {
|
||||
if (!buf.length) return;
|
||||
output.write(JSON.parse(buf));
|
||||
}
|
||||
|
||||
function sendStreaming(leave) {
|
||||
var list = buf.split("\n");
|
||||
buf = list.pop();
|
||||
list.forEach(function(str) {
|
||||
str = str.replace(/,\s*$/, "");
|
||||
if (!str.length) return;
|
||||
output.write(JSON.parse(str));
|
||||
});
|
||||
}
|
||||
}
|
||||
67
node_modules/msgpack-lite/lib/codec-base.js
generated
vendored
Normal file
67
node_modules/msgpack-lite/lib/codec-base.js
generated
vendored
Normal file
@@ -0,0 +1,67 @@
|
||||
// codec-base.js
|
||||
|
||||
var IS_ARRAY = require("isarray");
|
||||
|
||||
exports.createCodec = createCodec;
|
||||
exports.install = install;
|
||||
exports.filter = filter;
|
||||
|
||||
var Bufferish = require("./bufferish");
|
||||
|
||||
function Codec(options) {
|
||||
if (!(this instanceof Codec)) return new Codec(options);
|
||||
this.options = options;
|
||||
this.init();
|
||||
}
|
||||
|
||||
Codec.prototype.init = function() {
|
||||
var options = this.options;
|
||||
|
||||
if (options && options.uint8array) {
|
||||
this.bufferish = Bufferish.Uint8Array;
|
||||
}
|
||||
|
||||
return this;
|
||||
};
|
||||
|
||||
function install(props) {
|
||||
for (var key in props) {
|
||||
Codec.prototype[key] = add(Codec.prototype[key], props[key]);
|
||||
}
|
||||
}
|
||||
|
||||
function add(a, b) {
|
||||
return (a && b) ? ab : (a || b);
|
||||
|
||||
function ab() {
|
||||
a.apply(this, arguments);
|
||||
return b.apply(this, arguments);
|
||||
}
|
||||
}
|
||||
|
||||
function join(filters) {
|
||||
filters = filters.slice();
|
||||
|
||||
return function(value) {
|
||||
return filters.reduce(iterator, value);
|
||||
};
|
||||
|
||||
function iterator(value, filter) {
|
||||
return filter(value);
|
||||
}
|
||||
}
|
||||
|
||||
function filter(filter) {
|
||||
return IS_ARRAY(filter) ? join(filter) : filter;
|
||||
}
|
||||
|
||||
// @public
|
||||
// msgpack.createCodec()
|
||||
|
||||
function createCodec(options) {
|
||||
return new Codec(options);
|
||||
}
|
||||
|
||||
// default shared codec
|
||||
|
||||
exports.preset = createCodec({preset: true});
|
||||
12
node_modules/msgpack-lite/lib/codec.js
generated
vendored
Normal file
12
node_modules/msgpack-lite/lib/codec.js
generated
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
// codec.js
|
||||
|
||||
// load both interfaces
|
||||
require("./read-core");
|
||||
require("./write-core");
|
||||
|
||||
// @public
|
||||
// msgpack.codec.preset
|
||||
|
||||
exports.codec = {
|
||||
preset: require("./codec-base").preset
|
||||
};
|
||||
27
node_modules/msgpack-lite/lib/decode-buffer.js
generated
vendored
Normal file
27
node_modules/msgpack-lite/lib/decode-buffer.js
generated
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
// decode-buffer.js
|
||||
|
||||
exports.DecodeBuffer = DecodeBuffer;
|
||||
|
||||
var preset = require("./read-core").preset;
|
||||
|
||||
var FlexDecoder = require("./flex-buffer").FlexDecoder;
|
||||
|
||||
FlexDecoder.mixin(DecodeBuffer.prototype);
|
||||
|
||||
function DecodeBuffer(options) {
|
||||
if (!(this instanceof DecodeBuffer)) return new DecodeBuffer(options);
|
||||
|
||||
if (options) {
|
||||
this.options = options;
|
||||
if (options.codec) {
|
||||
var codec = this.codec = options.codec;
|
||||
if (codec.bufferish) this.bufferish = codec.bufferish;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
DecodeBuffer.prototype.codec = preset;
|
||||
|
||||
DecodeBuffer.prototype.fetch = function() {
|
||||
return this.codec.decode(this);
|
||||
};
|
||||
32
node_modules/msgpack-lite/lib/decode-stream.js
generated
vendored
Normal file
32
node_modules/msgpack-lite/lib/decode-stream.js
generated
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
// decode-stream.js
|
||||
|
||||
exports.createDecodeStream = DecodeStream;
|
||||
|
||||
var util = require("util");
|
||||
var Transform = require("stream").Transform;
|
||||
var DecodeBuffer = require("./decode-buffer").DecodeBuffer;
|
||||
|
||||
util.inherits(DecodeStream, Transform);
|
||||
|
||||
var DEFAULT_OPTIONS = {objectMode: true};
|
||||
|
||||
function DecodeStream(options) {
|
||||
if (!(this instanceof DecodeStream)) return new DecodeStream(options);
|
||||
if (options) {
|
||||
options.objectMode = true;
|
||||
} else {
|
||||
options = DEFAULT_OPTIONS;
|
||||
}
|
||||
Transform.call(this, options);
|
||||
var stream = this;
|
||||
var decoder = this.decoder = new DecodeBuffer(options);
|
||||
decoder.push = function(chunk) {
|
||||
stream.push(chunk);
|
||||
};
|
||||
}
|
||||
|
||||
DecodeStream.prototype._transform = function(chunk, encoding, callback) {
|
||||
this.decoder.write(chunk);
|
||||
this.decoder.flush();
|
||||
if (callback) callback();
|
||||
};
|
||||
11
node_modules/msgpack-lite/lib/decode.js
generated
vendored
Normal file
11
node_modules/msgpack-lite/lib/decode.js
generated
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
// decode.js
|
||||
|
||||
exports.decode = decode;
|
||||
|
||||
var DecodeBuffer = require("./decode-buffer").DecodeBuffer;
|
||||
|
||||
function decode(input, options) {
|
||||
var decoder = new DecodeBuffer(options);
|
||||
decoder.write(input);
|
||||
return decoder.read();
|
||||
}
|
||||
29
node_modules/msgpack-lite/lib/decoder.js
generated
vendored
Normal file
29
node_modules/msgpack-lite/lib/decoder.js
generated
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
// decoder.js
|
||||
|
||||
exports.Decoder = Decoder;
|
||||
|
||||
var EventLite = require("event-lite");
|
||||
var DecodeBuffer = require("./decode-buffer").DecodeBuffer;
|
||||
|
||||
function Decoder(options) {
|
||||
if (!(this instanceof Decoder)) return new Decoder(options);
|
||||
DecodeBuffer.call(this, options);
|
||||
}
|
||||
|
||||
Decoder.prototype = new DecodeBuffer();
|
||||
|
||||
EventLite.mixin(Decoder.prototype);
|
||||
|
||||
Decoder.prototype.decode = function(chunk) {
|
||||
if (arguments.length) this.write(chunk);
|
||||
this.flush();
|
||||
};
|
||||
|
||||
Decoder.prototype.push = function(chunk) {
|
||||
this.emit("data", chunk);
|
||||
};
|
||||
|
||||
Decoder.prototype.end = function(chunk) {
|
||||
this.decode(chunk);
|
||||
this.emit("end");
|
||||
};
|
||||
27
node_modules/msgpack-lite/lib/encode-buffer.js
generated
vendored
Normal file
27
node_modules/msgpack-lite/lib/encode-buffer.js
generated
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
// encode-buffer.js
|
||||
|
||||
exports.EncodeBuffer = EncodeBuffer;
|
||||
|
||||
var preset = require("./write-core").preset;
|
||||
|
||||
var FlexEncoder = require("./flex-buffer").FlexEncoder;
|
||||
|
||||
FlexEncoder.mixin(EncodeBuffer.prototype);
|
||||
|
||||
function EncodeBuffer(options) {
|
||||
if (!(this instanceof EncodeBuffer)) return new EncodeBuffer(options);
|
||||
|
||||
if (options) {
|
||||
this.options = options;
|
||||
if (options.codec) {
|
||||
var codec = this.codec = options.codec;
|
||||
if (codec.bufferish) this.bufferish = codec.bufferish;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
EncodeBuffer.prototype.codec = preset;
|
||||
|
||||
EncodeBuffer.prototype.write = function(input) {
|
||||
this.codec.encode(this, input);
|
||||
};
|
||||
37
node_modules/msgpack-lite/lib/encode-stream.js
generated
vendored
Normal file
37
node_modules/msgpack-lite/lib/encode-stream.js
generated
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
// encode-stream.js
|
||||
|
||||
exports.createEncodeStream = EncodeStream;
|
||||
|
||||
var util = require("util");
|
||||
var Transform = require("stream").Transform;
|
||||
var EncodeBuffer = require("./encode-buffer").EncodeBuffer;
|
||||
|
||||
util.inherits(EncodeStream, Transform);
|
||||
|
||||
var DEFAULT_OPTIONS = {objectMode: true};
|
||||
|
||||
function EncodeStream(options) {
|
||||
if (!(this instanceof EncodeStream)) return new EncodeStream(options);
|
||||
if (options) {
|
||||
options.objectMode = true;
|
||||
} else {
|
||||
options = DEFAULT_OPTIONS;
|
||||
}
|
||||
Transform.call(this, options);
|
||||
|
||||
var stream = this;
|
||||
var encoder = this.encoder = new EncodeBuffer(options);
|
||||
encoder.push = function(chunk) {
|
||||
stream.push(chunk);
|
||||
};
|
||||
}
|
||||
|
||||
EncodeStream.prototype._transform = function(chunk, encoding, callback) {
|
||||
this.encoder.write(chunk);
|
||||
if (callback) callback();
|
||||
};
|
||||
|
||||
EncodeStream.prototype._flush = function(callback) {
|
||||
this.encoder.flush();
|
||||
if (callback) callback();
|
||||
};
|
||||
11
node_modules/msgpack-lite/lib/encode.js
generated
vendored
Normal file
11
node_modules/msgpack-lite/lib/encode.js
generated
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
// encode.js
|
||||
|
||||
exports.encode = encode;
|
||||
|
||||
var EncodeBuffer = require("./encode-buffer").EncodeBuffer;
|
||||
|
||||
function encode(input, options) {
|
||||
var encoder = new EncodeBuffer(options);
|
||||
encoder.write(input);
|
||||
return encoder.read();
|
||||
}
|
||||
26
node_modules/msgpack-lite/lib/encoder.js
generated
vendored
Normal file
26
node_modules/msgpack-lite/lib/encoder.js
generated
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
// encoder.js
|
||||
|
||||
exports.Encoder = Encoder;
|
||||
|
||||
var EventLite = require("event-lite");
|
||||
var EncodeBuffer = require("./encode-buffer").EncodeBuffer;
|
||||
|
||||
function Encoder(options) {
|
||||
if (!(this instanceof Encoder)) return new Encoder(options);
|
||||
EncodeBuffer.call(this, options);
|
||||
}
|
||||
|
||||
Encoder.prototype = new EncodeBuffer();
|
||||
|
||||
EventLite.mixin(Encoder.prototype);
|
||||
|
||||
Encoder.prototype.encode = function(chunk) {
|
||||
this.write(chunk);
|
||||
this.emit("data", this.read());
|
||||
};
|
||||
|
||||
Encoder.prototype.end = function(chunk) {
|
||||
if (arguments.length) this.encode(chunk);
|
||||
this.flush();
|
||||
this.emit("end");
|
||||
};
|
||||
11
node_modules/msgpack-lite/lib/ext-buffer.js
generated
vendored
Normal file
11
node_modules/msgpack-lite/lib/ext-buffer.js
generated
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
// ext-buffer.js
|
||||
|
||||
exports.ExtBuffer = ExtBuffer;
|
||||
|
||||
var Bufferish = require("./bufferish");
|
||||
|
||||
function ExtBuffer(buffer, type) {
|
||||
if (!(this instanceof ExtBuffer)) return new ExtBuffer(buffer, type);
|
||||
this.buffer = Bufferish.from(buffer);
|
||||
this.type = type;
|
||||
}
|
||||
78
node_modules/msgpack-lite/lib/ext-packer.js
generated
vendored
Normal file
78
node_modules/msgpack-lite/lib/ext-packer.js
generated
vendored
Normal file
@@ -0,0 +1,78 @@
|
||||
// ext-packer.js
|
||||
|
||||
exports.setExtPackers = setExtPackers;
|
||||
|
||||
var Bufferish = require("./bufferish");
|
||||
var Buffer = Bufferish.global;
|
||||
var packTypedArray = Bufferish.Uint8Array.from;
|
||||
var _encode;
|
||||
|
||||
var ERROR_COLUMNS = {name: 1, message: 1, stack: 1, columnNumber: 1, fileName: 1, lineNumber: 1};
|
||||
|
||||
function setExtPackers(codec) {
|
||||
codec.addExtPacker(0x0E, Error, [packError, encode]);
|
||||
codec.addExtPacker(0x01, EvalError, [packError, encode]);
|
||||
codec.addExtPacker(0x02, RangeError, [packError, encode]);
|
||||
codec.addExtPacker(0x03, ReferenceError, [packError, encode]);
|
||||
codec.addExtPacker(0x04, SyntaxError, [packError, encode]);
|
||||
codec.addExtPacker(0x05, TypeError, [packError, encode]);
|
||||
codec.addExtPacker(0x06, URIError, [packError, encode]);
|
||||
|
||||
codec.addExtPacker(0x0A, RegExp, [packRegExp, encode]);
|
||||
codec.addExtPacker(0x0B, Boolean, [packValueOf, encode]);
|
||||
codec.addExtPacker(0x0C, String, [packValueOf, encode]);
|
||||
codec.addExtPacker(0x0D, Date, [Number, encode]);
|
||||
codec.addExtPacker(0x0F, Number, [packValueOf, encode]);
|
||||
|
||||
if ("undefined" !== typeof Uint8Array) {
|
||||
codec.addExtPacker(0x11, Int8Array, packTypedArray);
|
||||
codec.addExtPacker(0x12, Uint8Array, packTypedArray);
|
||||
codec.addExtPacker(0x13, Int16Array, packTypedArray);
|
||||
codec.addExtPacker(0x14, Uint16Array, packTypedArray);
|
||||
codec.addExtPacker(0x15, Int32Array, packTypedArray);
|
||||
codec.addExtPacker(0x16, Uint32Array, packTypedArray);
|
||||
codec.addExtPacker(0x17, Float32Array, packTypedArray);
|
||||
|
||||
// PhantomJS/1.9.7 doesn't have Float64Array
|
||||
if ("undefined" !== typeof Float64Array) {
|
||||
codec.addExtPacker(0x18, Float64Array, packTypedArray);
|
||||
}
|
||||
|
||||
// IE10 doesn't have Uint8ClampedArray
|
||||
if ("undefined" !== typeof Uint8ClampedArray) {
|
||||
codec.addExtPacker(0x19, Uint8ClampedArray, packTypedArray);
|
||||
}
|
||||
|
||||
codec.addExtPacker(0x1A, ArrayBuffer, packTypedArray);
|
||||
codec.addExtPacker(0x1D, DataView, packTypedArray);
|
||||
}
|
||||
|
||||
if (Bufferish.hasBuffer) {
|
||||
codec.addExtPacker(0x1B, Buffer, Bufferish.from);
|
||||
}
|
||||
}
|
||||
|
||||
function encode(input) {
|
||||
if (!_encode) _encode = require("./encode").encode; // lazy load
|
||||
return _encode(input);
|
||||
}
|
||||
|
||||
function packValueOf(value) {
|
||||
return (value).valueOf();
|
||||
}
|
||||
|
||||
function packRegExp(value) {
|
||||
value = RegExp.prototype.toString.call(value).split("/");
|
||||
value.shift();
|
||||
var out = [value.pop()];
|
||||
out.unshift(value.join("/"));
|
||||
return out;
|
||||
}
|
||||
|
||||
function packError(value) {
|
||||
var out = {};
|
||||
for (var key in ERROR_COLUMNS) {
|
||||
out[key] = value[key];
|
||||
}
|
||||
return out;
|
||||
}
|
||||
81
node_modules/msgpack-lite/lib/ext-unpacker.js
generated
vendored
Normal file
81
node_modules/msgpack-lite/lib/ext-unpacker.js
generated
vendored
Normal file
@@ -0,0 +1,81 @@
|
||||
// ext-unpacker.js
|
||||
|
||||
exports.setExtUnpackers = setExtUnpackers;
|
||||
|
||||
var Bufferish = require("./bufferish");
|
||||
var Buffer = Bufferish.global;
|
||||
var _decode;
|
||||
|
||||
var ERROR_COLUMNS = {name: 1, message: 1, stack: 1, columnNumber: 1, fileName: 1, lineNumber: 1};
|
||||
|
||||
function setExtUnpackers(codec) {
|
||||
codec.addExtUnpacker(0x0E, [decode, unpackError(Error)]);
|
||||
codec.addExtUnpacker(0x01, [decode, unpackError(EvalError)]);
|
||||
codec.addExtUnpacker(0x02, [decode, unpackError(RangeError)]);
|
||||
codec.addExtUnpacker(0x03, [decode, unpackError(ReferenceError)]);
|
||||
codec.addExtUnpacker(0x04, [decode, unpackError(SyntaxError)]);
|
||||
codec.addExtUnpacker(0x05, [decode, unpackError(TypeError)]);
|
||||
codec.addExtUnpacker(0x06, [decode, unpackError(URIError)]);
|
||||
|
||||
codec.addExtUnpacker(0x0A, [decode, unpackRegExp]);
|
||||
codec.addExtUnpacker(0x0B, [decode, unpackClass(Boolean)]);
|
||||
codec.addExtUnpacker(0x0C, [decode, unpackClass(String)]);
|
||||
codec.addExtUnpacker(0x0D, [decode, unpackClass(Date)]);
|
||||
codec.addExtUnpacker(0x0F, [decode, unpackClass(Number)]);
|
||||
|
||||
if ("undefined" !== typeof Uint8Array) {
|
||||
codec.addExtUnpacker(0x11, unpackClass(Int8Array));
|
||||
codec.addExtUnpacker(0x12, unpackClass(Uint8Array));
|
||||
codec.addExtUnpacker(0x13, [unpackArrayBuffer, unpackClass(Int16Array)]);
|
||||
codec.addExtUnpacker(0x14, [unpackArrayBuffer, unpackClass(Uint16Array)]);
|
||||
codec.addExtUnpacker(0x15, [unpackArrayBuffer, unpackClass(Int32Array)]);
|
||||
codec.addExtUnpacker(0x16, [unpackArrayBuffer, unpackClass(Uint32Array)]);
|
||||
codec.addExtUnpacker(0x17, [unpackArrayBuffer, unpackClass(Float32Array)]);
|
||||
|
||||
// PhantomJS/1.9.7 doesn't have Float64Array
|
||||
if ("undefined" !== typeof Float64Array) {
|
||||
codec.addExtUnpacker(0x18, [unpackArrayBuffer, unpackClass(Float64Array)]);
|
||||
}
|
||||
|
||||
// IE10 doesn't have Uint8ClampedArray
|
||||
if ("undefined" !== typeof Uint8ClampedArray) {
|
||||
codec.addExtUnpacker(0x19, unpackClass(Uint8ClampedArray));
|
||||
}
|
||||
|
||||
codec.addExtUnpacker(0x1A, unpackArrayBuffer);
|
||||
codec.addExtUnpacker(0x1D, [unpackArrayBuffer, unpackClass(DataView)]);
|
||||
}
|
||||
|
||||
if (Bufferish.hasBuffer) {
|
||||
codec.addExtUnpacker(0x1B, unpackClass(Buffer));
|
||||
}
|
||||
}
|
||||
|
||||
function decode(input) {
|
||||
if (!_decode) _decode = require("./decode").decode; // lazy load
|
||||
return _decode(input);
|
||||
}
|
||||
|
||||
function unpackRegExp(value) {
|
||||
return RegExp.apply(null, value);
|
||||
}
|
||||
|
||||
function unpackError(Class) {
|
||||
return function(value) {
|
||||
var out = new Class();
|
||||
for (var key in ERROR_COLUMNS) {
|
||||
out[key] = value[key];
|
||||
}
|
||||
return out;
|
||||
};
|
||||
}
|
||||
|
||||
function unpackClass(Class) {
|
||||
return function(value) {
|
||||
return new Class(value);
|
||||
};
|
||||
}
|
||||
|
||||
function unpackArrayBuffer(value) {
|
||||
return (new Uint8Array(value)).buffer;
|
||||
}
|
||||
7
node_modules/msgpack-lite/lib/ext.js
generated
vendored
Normal file
7
node_modules/msgpack-lite/lib/ext.js
generated
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
// ext.js
|
||||
|
||||
// load both interfaces
|
||||
require("./read-core");
|
||||
require("./write-core");
|
||||
|
||||
exports.createCodec = require("./codec-base").createCodec;
|
||||
194
node_modules/msgpack-lite/lib/flex-buffer.js
generated
vendored
Normal file
194
node_modules/msgpack-lite/lib/flex-buffer.js
generated
vendored
Normal file
@@ -0,0 +1,194 @@
|
||||
// flex-buffer.js
|
||||
|
||||
exports.FlexDecoder = FlexDecoder;
|
||||
exports.FlexEncoder = FlexEncoder;
|
||||
|
||||
var Bufferish = require("./bufferish");
|
||||
|
||||
var MIN_BUFFER_SIZE = 2048;
|
||||
var MAX_BUFFER_SIZE = 65536;
|
||||
var BUFFER_SHORTAGE = "BUFFER_SHORTAGE";
|
||||
|
||||
function FlexDecoder() {
|
||||
if (!(this instanceof FlexDecoder)) return new FlexDecoder();
|
||||
}
|
||||
|
||||
function FlexEncoder() {
|
||||
if (!(this instanceof FlexEncoder)) return new FlexEncoder();
|
||||
}
|
||||
|
||||
FlexDecoder.mixin = mixinFactory(getDecoderMethods());
|
||||
FlexDecoder.mixin(FlexDecoder.prototype);
|
||||
|
||||
FlexEncoder.mixin = mixinFactory(getEncoderMethods());
|
||||
FlexEncoder.mixin(FlexEncoder.prototype);
|
||||
|
||||
function getDecoderMethods() {
|
||||
return {
|
||||
bufferish: Bufferish,
|
||||
write: write,
|
||||
fetch: fetch,
|
||||
flush: flush,
|
||||
push: push,
|
||||
pull: pull,
|
||||
read: read,
|
||||
reserve: reserve,
|
||||
offset: 0
|
||||
};
|
||||
|
||||
function write(chunk) {
|
||||
var prev = this.offset ? Bufferish.prototype.slice.call(this.buffer, this.offset) : this.buffer;
|
||||
this.buffer = prev ? (chunk ? this.bufferish.concat([prev, chunk]) : prev) : chunk;
|
||||
this.offset = 0;
|
||||
}
|
||||
|
||||
function flush() {
|
||||
while (this.offset < this.buffer.length) {
|
||||
var start = this.offset;
|
||||
var value;
|
||||
try {
|
||||
value = this.fetch();
|
||||
} catch (e) {
|
||||
if (e && e.message != BUFFER_SHORTAGE) throw e;
|
||||
// rollback
|
||||
this.offset = start;
|
||||
break;
|
||||
}
|
||||
this.push(value);
|
||||
}
|
||||
}
|
||||
|
||||
function reserve(length) {
|
||||
var start = this.offset;
|
||||
var end = start + length;
|
||||
if (end > this.buffer.length) throw new Error(BUFFER_SHORTAGE);
|
||||
this.offset = end;
|
||||
return start;
|
||||
}
|
||||
}
|
||||
|
||||
function getEncoderMethods() {
|
||||
return {
|
||||
bufferish: Bufferish,
|
||||
write: write,
|
||||
fetch: fetch,
|
||||
flush: flush,
|
||||
push: push,
|
||||
pull: pull,
|
||||
read: read,
|
||||
reserve: reserve,
|
||||
send: send,
|
||||
maxBufferSize: MAX_BUFFER_SIZE,
|
||||
minBufferSize: MIN_BUFFER_SIZE,
|
||||
offset: 0,
|
||||
start: 0
|
||||
};
|
||||
|
||||
function fetch() {
|
||||
var start = this.start;
|
||||
if (start < this.offset) {
|
||||
var end = this.start = this.offset;
|
||||
return Bufferish.prototype.slice.call(this.buffer, start, end);
|
||||
}
|
||||
}
|
||||
|
||||
function flush() {
|
||||
while (this.start < this.offset) {
|
||||
var value = this.fetch();
|
||||
if (value) this.push(value);
|
||||
}
|
||||
}
|
||||
|
||||
function pull() {
|
||||
var buffers = this.buffers || (this.buffers = []);
|
||||
var chunk = buffers.length > 1 ? this.bufferish.concat(buffers) : buffers[0];
|
||||
buffers.length = 0; // buffer exhausted
|
||||
return chunk;
|
||||
}
|
||||
|
||||
function reserve(length) {
|
||||
var req = length | 0;
|
||||
|
||||
if (this.buffer) {
|
||||
var size = this.buffer.length;
|
||||
var start = this.offset | 0;
|
||||
var end = start + req;
|
||||
|
||||
// is it long enough?
|
||||
if (end < size) {
|
||||
this.offset = end;
|
||||
return start;
|
||||
}
|
||||
|
||||
// flush current buffer
|
||||
this.flush();
|
||||
|
||||
// resize it to 2x current length
|
||||
length = Math.max(length, Math.min(size * 2, this.maxBufferSize));
|
||||
}
|
||||
|
||||
// minimum buffer size
|
||||
length = Math.max(length, this.minBufferSize);
|
||||
|
||||
// allocate new buffer
|
||||
this.buffer = this.bufferish.alloc(length);
|
||||
this.start = 0;
|
||||
this.offset = req;
|
||||
return 0;
|
||||
}
|
||||
|
||||
function send(buffer) {
|
||||
var length = buffer.length;
|
||||
if (length > this.minBufferSize) {
|
||||
this.flush();
|
||||
this.push(buffer);
|
||||
} else {
|
||||
var offset = this.reserve(length);
|
||||
Bufferish.prototype.copy.call(buffer, this.buffer, offset);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// common methods
|
||||
|
||||
function write() {
|
||||
throw new Error("method not implemented: write()");
|
||||
}
|
||||
|
||||
function fetch() {
|
||||
throw new Error("method not implemented: fetch()");
|
||||
}
|
||||
|
||||
function read() {
|
||||
var length = this.buffers && this.buffers.length;
|
||||
|
||||
// fetch the first result
|
||||
if (!length) return this.fetch();
|
||||
|
||||
// flush current buffer
|
||||
this.flush();
|
||||
|
||||
// read from the results
|
||||
return this.pull();
|
||||
}
|
||||
|
||||
function push(chunk) {
|
||||
var buffers = this.buffers || (this.buffers = []);
|
||||
buffers.push(chunk);
|
||||
}
|
||||
|
||||
function pull() {
|
||||
var buffers = this.buffers || (this.buffers = []);
|
||||
return buffers.shift();
|
||||
}
|
||||
|
||||
function mixinFactory(source) {
|
||||
return mixin;
|
||||
|
||||
function mixin(target) {
|
||||
for (var key in source) {
|
||||
target[key] = source[key];
|
||||
}
|
||||
return target;
|
||||
}
|
||||
}
|
||||
52
node_modules/msgpack-lite/lib/read-core.js
generated
vendored
Normal file
52
node_modules/msgpack-lite/lib/read-core.js
generated
vendored
Normal file
@@ -0,0 +1,52 @@
|
||||
// read-core.js
|
||||
|
||||
var ExtBuffer = require("./ext-buffer").ExtBuffer;
|
||||
var ExtUnpacker = require("./ext-unpacker");
|
||||
var readUint8 = require("./read-format").readUint8;
|
||||
var ReadToken = require("./read-token");
|
||||
var CodecBase = require("./codec-base");
|
||||
|
||||
CodecBase.install({
|
||||
addExtUnpacker: addExtUnpacker,
|
||||
getExtUnpacker: getExtUnpacker,
|
||||
init: init
|
||||
});
|
||||
|
||||
exports.preset = init.call(CodecBase.preset);
|
||||
|
||||
function getDecoder(options) {
|
||||
var readToken = ReadToken.getReadToken(options);
|
||||
return decode;
|
||||
|
||||
function decode(decoder) {
|
||||
var type = readUint8(decoder);
|
||||
var func = readToken[type];
|
||||
if (!func) throw new Error("Invalid type: " + (type ? ("0x" + type.toString(16)) : type));
|
||||
return func(decoder);
|
||||
}
|
||||
}
|
||||
|
||||
function init() {
|
||||
var options = this.options;
|
||||
this.decode = getDecoder(options);
|
||||
|
||||
if (options && options.preset) {
|
||||
ExtUnpacker.setExtUnpackers(this);
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
function addExtUnpacker(etype, unpacker) {
|
||||
var unpackers = this.extUnpackers || (this.extUnpackers = []);
|
||||
unpackers[etype] = CodecBase.filter(unpacker);
|
||||
}
|
||||
|
||||
function getExtUnpacker(type) {
|
||||
var unpackers = this.extUnpackers || (this.extUnpackers = []);
|
||||
return unpackers[type] || extUnpacker;
|
||||
|
||||
function extUnpacker(buffer) {
|
||||
return new ExtBuffer(buffer, type);
|
||||
}
|
||||
}
|
||||
181
node_modules/msgpack-lite/lib/read-format.js
generated
vendored
Normal file
181
node_modules/msgpack-lite/lib/read-format.js
generated
vendored
Normal file
@@ -0,0 +1,181 @@
|
||||
// read-format.js
|
||||
|
||||
var ieee754 = require("ieee754");
|
||||
var Int64Buffer = require("int64-buffer");
|
||||
var Uint64BE = Int64Buffer.Uint64BE;
|
||||
var Int64BE = Int64Buffer.Int64BE;
|
||||
|
||||
exports.getReadFormat = getReadFormat;
|
||||
exports.readUint8 = uint8;
|
||||
|
||||
var Bufferish = require("./bufferish");
|
||||
var BufferProto = require("./bufferish-proto");
|
||||
|
||||
var HAS_MAP = ("undefined" !== typeof Map);
|
||||
var NO_ASSERT = true;
|
||||
|
||||
function getReadFormat(options) {
|
||||
var binarraybuffer = Bufferish.hasArrayBuffer && options && options.binarraybuffer;
|
||||
var int64 = options && options.int64;
|
||||
var usemap = HAS_MAP && options && options.usemap;
|
||||
|
||||
var readFormat = {
|
||||
map: (usemap ? map_to_map : map_to_obj),
|
||||
array: array,
|
||||
str: str,
|
||||
bin: (binarraybuffer ? bin_arraybuffer : bin_buffer),
|
||||
ext: ext,
|
||||
uint8: uint8,
|
||||
uint16: uint16,
|
||||
uint32: uint32,
|
||||
uint64: read(8, int64 ? readUInt64BE_int64 : readUInt64BE),
|
||||
int8: int8,
|
||||
int16: int16,
|
||||
int32: int32,
|
||||
int64: read(8, int64 ? readInt64BE_int64 : readInt64BE),
|
||||
float32: read(4, readFloatBE),
|
||||
float64: read(8, readDoubleBE)
|
||||
};
|
||||
|
||||
return readFormat;
|
||||
}
|
||||
|
||||
function map_to_obj(decoder, len) {
|
||||
var value = {};
|
||||
var i;
|
||||
var k = new Array(len);
|
||||
var v = new Array(len);
|
||||
|
||||
var decode = decoder.codec.decode;
|
||||
for (i = 0; i < len; i++) {
|
||||
k[i] = decode(decoder);
|
||||
v[i] = decode(decoder);
|
||||
}
|
||||
for (i = 0; i < len; i++) {
|
||||
value[k[i]] = v[i];
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
function map_to_map(decoder, len) {
|
||||
var value = new Map();
|
||||
var i;
|
||||
var k = new Array(len);
|
||||
var v = new Array(len);
|
||||
|
||||
var decode = decoder.codec.decode;
|
||||
for (i = 0; i < len; i++) {
|
||||
k[i] = decode(decoder);
|
||||
v[i] = decode(decoder);
|
||||
}
|
||||
for (i = 0; i < len; i++) {
|
||||
value.set(k[i], v[i]);
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
function array(decoder, len) {
|
||||
var value = new Array(len);
|
||||
var decode = decoder.codec.decode;
|
||||
for (var i = 0; i < len; i++) {
|
||||
value[i] = decode(decoder);
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
function str(decoder, len) {
|
||||
var start = decoder.reserve(len);
|
||||
var end = start + len;
|
||||
return BufferProto.toString.call(decoder.buffer, "utf-8", start, end);
|
||||
}
|
||||
|
||||
function bin_buffer(decoder, len) {
|
||||
var start = decoder.reserve(len);
|
||||
var end = start + len;
|
||||
var buf = BufferProto.slice.call(decoder.buffer, start, end);
|
||||
return Bufferish.from(buf);
|
||||
}
|
||||
|
||||
function bin_arraybuffer(decoder, len) {
|
||||
var start = decoder.reserve(len);
|
||||
var end = start + len;
|
||||
var buf = BufferProto.slice.call(decoder.buffer, start, end);
|
||||
return Bufferish.Uint8Array.from(buf).buffer;
|
||||
}
|
||||
|
||||
function ext(decoder, len) {
|
||||
var start = decoder.reserve(len+1);
|
||||
var type = decoder.buffer[start++];
|
||||
var end = start + len;
|
||||
var unpack = decoder.codec.getExtUnpacker(type);
|
||||
if (!unpack) throw new Error("Invalid ext type: " + (type ? ("0x" + type.toString(16)) : type));
|
||||
var buf = BufferProto.slice.call(decoder.buffer, start, end);
|
||||
return unpack(buf);
|
||||
}
|
||||
|
||||
function uint8(decoder) {
|
||||
var start = decoder.reserve(1);
|
||||
return decoder.buffer[start];
|
||||
}
|
||||
|
||||
function int8(decoder) {
|
||||
var start = decoder.reserve(1);
|
||||
var value = decoder.buffer[start];
|
||||
return (value & 0x80) ? value - 0x100 : value;
|
||||
}
|
||||
|
||||
function uint16(decoder) {
|
||||
var start = decoder.reserve(2);
|
||||
var buffer = decoder.buffer;
|
||||
return (buffer[start++] << 8) | buffer[start];
|
||||
}
|
||||
|
||||
function int16(decoder) {
|
||||
var start = decoder.reserve(2);
|
||||
var buffer = decoder.buffer;
|
||||
var value = (buffer[start++] << 8) | buffer[start];
|
||||
return (value & 0x8000) ? value - 0x10000 : value;
|
||||
}
|
||||
|
||||
function uint32(decoder) {
|
||||
var start = decoder.reserve(4);
|
||||
var buffer = decoder.buffer;
|
||||
return (buffer[start++] * 16777216) + (buffer[start++] << 16) + (buffer[start++] << 8) + buffer[start];
|
||||
}
|
||||
|
||||
function int32(decoder) {
|
||||
var start = decoder.reserve(4);
|
||||
var buffer = decoder.buffer;
|
||||
return (buffer[start++] << 24) | (buffer[start++] << 16) | (buffer[start++] << 8) | buffer[start];
|
||||
}
|
||||
|
||||
function read(len, method) {
|
||||
return function(decoder) {
|
||||
var start = decoder.reserve(len);
|
||||
return method.call(decoder.buffer, start, NO_ASSERT);
|
||||
};
|
||||
}
|
||||
|
||||
function readUInt64BE(start) {
|
||||
return new Uint64BE(this, start).toNumber();
|
||||
}
|
||||
|
||||
function readInt64BE(start) {
|
||||
return new Int64BE(this, start).toNumber();
|
||||
}
|
||||
|
||||
function readUInt64BE_int64(start) {
|
||||
return new Uint64BE(this, start);
|
||||
}
|
||||
|
||||
function readInt64BE_int64(start) {
|
||||
return new Int64BE(this, start);
|
||||
}
|
||||
|
||||
function readFloatBE(start) {
|
||||
return ieee754.read(this, start, false, 23, 4);
|
||||
}
|
||||
|
||||
function readDoubleBE(start) {
|
||||
return ieee754.read(this, start, false, 52, 8);
|
||||
}
|
||||
161
node_modules/msgpack-lite/lib/read-token.js
generated
vendored
Normal file
161
node_modules/msgpack-lite/lib/read-token.js
generated
vendored
Normal file
@@ -0,0 +1,161 @@
|
||||
// read-token.js
|
||||
|
||||
var ReadFormat = require("./read-format");
|
||||
|
||||
exports.getReadToken = getReadToken;
|
||||
|
||||
function getReadToken(options) {
|
||||
var format = ReadFormat.getReadFormat(options);
|
||||
|
||||
if (options && options.useraw) {
|
||||
return init_useraw(format);
|
||||
} else {
|
||||
return init_token(format);
|
||||
}
|
||||
}
|
||||
|
||||
function init_token(format) {
|
||||
var i;
|
||||
var token = new Array(256);
|
||||
|
||||
// positive fixint -- 0x00 - 0x7f
|
||||
for (i = 0x00; i <= 0x7f; i++) {
|
||||
token[i] = constant(i);
|
||||
}
|
||||
|
||||
// fixmap -- 0x80 - 0x8f
|
||||
for (i = 0x80; i <= 0x8f; i++) {
|
||||
token[i] = fix(i - 0x80, format.map);
|
||||
}
|
||||
|
||||
// fixarray -- 0x90 - 0x9f
|
||||
for (i = 0x90; i <= 0x9f; i++) {
|
||||
token[i] = fix(i - 0x90, format.array);
|
||||
}
|
||||
|
||||
// fixstr -- 0xa0 - 0xbf
|
||||
for (i = 0xa0; i <= 0xbf; i++) {
|
||||
token[i] = fix(i - 0xa0, format.str);
|
||||
}
|
||||
|
||||
// nil -- 0xc0
|
||||
token[0xc0] = constant(null);
|
||||
|
||||
// (never used) -- 0xc1
|
||||
token[0xc1] = null;
|
||||
|
||||
// false -- 0xc2
|
||||
// true -- 0xc3
|
||||
token[0xc2] = constant(false);
|
||||
token[0xc3] = constant(true);
|
||||
|
||||
// bin 8 -- 0xc4
|
||||
// bin 16 -- 0xc5
|
||||
// bin 32 -- 0xc6
|
||||
token[0xc4] = flex(format.uint8, format.bin);
|
||||
token[0xc5] = flex(format.uint16, format.bin);
|
||||
token[0xc6] = flex(format.uint32, format.bin);
|
||||
|
||||
// ext 8 -- 0xc7
|
||||
// ext 16 -- 0xc8
|
||||
// ext 32 -- 0xc9
|
||||
token[0xc7] = flex(format.uint8, format.ext);
|
||||
token[0xc8] = flex(format.uint16, format.ext);
|
||||
token[0xc9] = flex(format.uint32, format.ext);
|
||||
|
||||
// float 32 -- 0xca
|
||||
// float 64 -- 0xcb
|
||||
token[0xca] = format.float32;
|
||||
token[0xcb] = format.float64;
|
||||
|
||||
// uint 8 -- 0xcc
|
||||
// uint 16 -- 0xcd
|
||||
// uint 32 -- 0xce
|
||||
// uint 64 -- 0xcf
|
||||
token[0xcc] = format.uint8;
|
||||
token[0xcd] = format.uint16;
|
||||
token[0xce] = format.uint32;
|
||||
token[0xcf] = format.uint64;
|
||||
|
||||
// int 8 -- 0xd0
|
||||
// int 16 -- 0xd1
|
||||
// int 32 -- 0xd2
|
||||
// int 64 -- 0xd3
|
||||
token[0xd0] = format.int8;
|
||||
token[0xd1] = format.int16;
|
||||
token[0xd2] = format.int32;
|
||||
token[0xd3] = format.int64;
|
||||
|
||||
// fixext 1 -- 0xd4
|
||||
// fixext 2 -- 0xd5
|
||||
// fixext 4 -- 0xd6
|
||||
// fixext 8 -- 0xd7
|
||||
// fixext 16 -- 0xd8
|
||||
token[0xd4] = fix(1, format.ext);
|
||||
token[0xd5] = fix(2, format.ext);
|
||||
token[0xd6] = fix(4, format.ext);
|
||||
token[0xd7] = fix(8, format.ext);
|
||||
token[0xd8] = fix(16, format.ext);
|
||||
|
||||
// str 8 -- 0xd9
|
||||
// str 16 -- 0xda
|
||||
// str 32 -- 0xdb
|
||||
token[0xd9] = flex(format.uint8, format.str);
|
||||
token[0xda] = flex(format.uint16, format.str);
|
||||
token[0xdb] = flex(format.uint32, format.str);
|
||||
|
||||
// array 16 -- 0xdc
|
||||
// array 32 -- 0xdd
|
||||
token[0xdc] = flex(format.uint16, format.array);
|
||||
token[0xdd] = flex(format.uint32, format.array);
|
||||
|
||||
// map 16 -- 0xde
|
||||
// map 32 -- 0xdf
|
||||
token[0xde] = flex(format.uint16, format.map);
|
||||
token[0xdf] = flex(format.uint32, format.map);
|
||||
|
||||
// negative fixint -- 0xe0 - 0xff
|
||||
for (i = 0xe0; i <= 0xff; i++) {
|
||||
token[i] = constant(i - 0x100);
|
||||
}
|
||||
|
||||
return token;
|
||||
}
|
||||
|
||||
function init_useraw(format) {
|
||||
var i;
|
||||
var token = init_token(format).slice();
|
||||
|
||||
// raw 8 -- 0xd9
|
||||
// raw 16 -- 0xda
|
||||
// raw 32 -- 0xdb
|
||||
token[0xd9] = token[0xc4];
|
||||
token[0xda] = token[0xc5];
|
||||
token[0xdb] = token[0xc6];
|
||||
|
||||
// fixraw -- 0xa0 - 0xbf
|
||||
for (i = 0xa0; i <= 0xbf; i++) {
|
||||
token[i] = fix(i - 0xa0, format.bin);
|
||||
}
|
||||
|
||||
return token;
|
||||
}
|
||||
|
||||
function constant(value) {
|
||||
return function() {
|
||||
return value;
|
||||
};
|
||||
}
|
||||
|
||||
function flex(lenFunc, decodeFunc) {
|
||||
return function(decoder) {
|
||||
var len = lenFunc(decoder);
|
||||
return decodeFunc(decoder, len);
|
||||
};
|
||||
}
|
||||
|
||||
function fix(len, method) {
|
||||
return function(decoder) {
|
||||
return method(decoder, len);
|
||||
};
|
||||
}
|
||||
69
node_modules/msgpack-lite/lib/write-core.js
generated
vendored
Normal file
69
node_modules/msgpack-lite/lib/write-core.js
generated
vendored
Normal file
@@ -0,0 +1,69 @@
|
||||
// write-core.js
|
||||
|
||||
var ExtBuffer = require("./ext-buffer").ExtBuffer;
|
||||
var ExtPacker = require("./ext-packer");
|
||||
var WriteType = require("./write-type");
|
||||
var CodecBase = require("./codec-base");
|
||||
|
||||
CodecBase.install({
|
||||
addExtPacker: addExtPacker,
|
||||
getExtPacker: getExtPacker,
|
||||
init: init
|
||||
});
|
||||
|
||||
exports.preset = init.call(CodecBase.preset);
|
||||
|
||||
function getEncoder(options) {
|
||||
var writeType = WriteType.getWriteType(options);
|
||||
return encode;
|
||||
|
||||
function encode(encoder, value) {
|
||||
var func = writeType[typeof value];
|
||||
if (!func) throw new Error("Unsupported type \"" + (typeof value) + "\": " + value);
|
||||
func(encoder, value);
|
||||
}
|
||||
}
|
||||
|
||||
function init() {
|
||||
var options = this.options;
|
||||
this.encode = getEncoder(options);
|
||||
|
||||
if (options && options.preset) {
|
||||
ExtPacker.setExtPackers(this);
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
function addExtPacker(etype, Class, packer) {
|
||||
packer = CodecBase.filter(packer);
|
||||
var name = Class.name;
|
||||
if (name && name !== "Object") {
|
||||
var packers = this.extPackers || (this.extPackers = {});
|
||||
packers[name] = extPacker;
|
||||
} else {
|
||||
// fallback for IE
|
||||
var list = this.extEncoderList || (this.extEncoderList = []);
|
||||
list.unshift([Class, extPacker]);
|
||||
}
|
||||
|
||||
function extPacker(value) {
|
||||
if (packer) value = packer(value);
|
||||
return new ExtBuffer(value, etype);
|
||||
}
|
||||
}
|
||||
|
||||
function getExtPacker(value) {
|
||||
var packers = this.extPackers || (this.extPackers = {});
|
||||
var c = value.constructor;
|
||||
var e = c && c.name && packers[c.name];
|
||||
if (e) return e;
|
||||
|
||||
// fallback for IE
|
||||
var list = this.extEncoderList || (this.extEncoderList = []);
|
||||
var len = list.length;
|
||||
for (var i = 0; i < len; i++) {
|
||||
var pair = list[i];
|
||||
if (c === pair[0]) return pair[1];
|
||||
}
|
||||
}
|
||||
227
node_modules/msgpack-lite/lib/write-token.js
generated
vendored
Normal file
227
node_modules/msgpack-lite/lib/write-token.js
generated
vendored
Normal file
@@ -0,0 +1,227 @@
|
||||
// write-token.js
|
||||
|
||||
var ieee754 = require("ieee754");
|
||||
var Int64Buffer = require("int64-buffer");
|
||||
var Uint64BE = Int64Buffer.Uint64BE;
|
||||
var Int64BE = Int64Buffer.Int64BE;
|
||||
|
||||
var uint8 = require("./write-uint8").uint8;
|
||||
var Bufferish = require("./bufferish");
|
||||
var Buffer = Bufferish.global;
|
||||
var IS_BUFFER_SHIM = Bufferish.hasBuffer && ("TYPED_ARRAY_SUPPORT" in Buffer);
|
||||
var NO_TYPED_ARRAY = IS_BUFFER_SHIM && !Buffer.TYPED_ARRAY_SUPPORT;
|
||||
var Buffer_prototype = Bufferish.hasBuffer && Buffer.prototype || {};
|
||||
|
||||
exports.getWriteToken = getWriteToken;
|
||||
|
||||
function getWriteToken(options) {
|
||||
if (options && options.uint8array) {
|
||||
return init_uint8array();
|
||||
} else if (NO_TYPED_ARRAY || (Bufferish.hasBuffer && options && options.safe)) {
|
||||
return init_safe();
|
||||
} else {
|
||||
return init_token();
|
||||
}
|
||||
}
|
||||
|
||||
function init_uint8array() {
|
||||
var token = init_token();
|
||||
|
||||
// float 32 -- 0xca
|
||||
// float 64 -- 0xcb
|
||||
token[0xca] = writeN(0xca, 4, writeFloatBE);
|
||||
token[0xcb] = writeN(0xcb, 8, writeDoubleBE);
|
||||
|
||||
return token;
|
||||
}
|
||||
|
||||
// Node.js and browsers with TypedArray
|
||||
|
||||
function init_token() {
|
||||
// (immediate values)
|
||||
// positive fixint -- 0x00 - 0x7f
|
||||
// nil -- 0xc0
|
||||
// false -- 0xc2
|
||||
// true -- 0xc3
|
||||
// negative fixint -- 0xe0 - 0xff
|
||||
var token = uint8.slice();
|
||||
|
||||
// bin 8 -- 0xc4
|
||||
// bin 16 -- 0xc5
|
||||
// bin 32 -- 0xc6
|
||||
token[0xc4] = write1(0xc4);
|
||||
token[0xc5] = write2(0xc5);
|
||||
token[0xc6] = write4(0xc6);
|
||||
|
||||
// ext 8 -- 0xc7
|
||||
// ext 16 -- 0xc8
|
||||
// ext 32 -- 0xc9
|
||||
token[0xc7] = write1(0xc7);
|
||||
token[0xc8] = write2(0xc8);
|
||||
token[0xc9] = write4(0xc9);
|
||||
|
||||
// float 32 -- 0xca
|
||||
// float 64 -- 0xcb
|
||||
token[0xca] = writeN(0xca, 4, (Buffer_prototype.writeFloatBE || writeFloatBE), true);
|
||||
token[0xcb] = writeN(0xcb, 8, (Buffer_prototype.writeDoubleBE || writeDoubleBE), true);
|
||||
|
||||
// uint 8 -- 0xcc
|
||||
// uint 16 -- 0xcd
|
||||
// uint 32 -- 0xce
|
||||
// uint 64 -- 0xcf
|
||||
token[0xcc] = write1(0xcc);
|
||||
token[0xcd] = write2(0xcd);
|
||||
token[0xce] = write4(0xce);
|
||||
token[0xcf] = writeN(0xcf, 8, writeUInt64BE);
|
||||
|
||||
// int 8 -- 0xd0
|
||||
// int 16 -- 0xd1
|
||||
// int 32 -- 0xd2
|
||||
// int 64 -- 0xd3
|
||||
token[0xd0] = write1(0xd0);
|
||||
token[0xd1] = write2(0xd1);
|
||||
token[0xd2] = write4(0xd2);
|
||||
token[0xd3] = writeN(0xd3, 8, writeInt64BE);
|
||||
|
||||
// str 8 -- 0xd9
|
||||
// str 16 -- 0xda
|
||||
// str 32 -- 0xdb
|
||||
token[0xd9] = write1(0xd9);
|
||||
token[0xda] = write2(0xda);
|
||||
token[0xdb] = write4(0xdb);
|
||||
|
||||
// array 16 -- 0xdc
|
||||
// array 32 -- 0xdd
|
||||
token[0xdc] = write2(0xdc);
|
||||
token[0xdd] = write4(0xdd);
|
||||
|
||||
// map 16 -- 0xde
|
||||
// map 32 -- 0xdf
|
||||
token[0xde] = write2(0xde);
|
||||
token[0xdf] = write4(0xdf);
|
||||
|
||||
return token;
|
||||
}
|
||||
|
||||
// safe mode: for old browsers and who needs asserts
|
||||
|
||||
function init_safe() {
|
||||
// (immediate values)
|
||||
// positive fixint -- 0x00 - 0x7f
|
||||
// nil -- 0xc0
|
||||
// false -- 0xc2
|
||||
// true -- 0xc3
|
||||
// negative fixint -- 0xe0 - 0xff
|
||||
var token = uint8.slice();
|
||||
|
||||
// bin 8 -- 0xc4
|
||||
// bin 16 -- 0xc5
|
||||
// bin 32 -- 0xc6
|
||||
token[0xc4] = writeN(0xc4, 1, Buffer.prototype.writeUInt8);
|
||||
token[0xc5] = writeN(0xc5, 2, Buffer.prototype.writeUInt16BE);
|
||||
token[0xc6] = writeN(0xc6, 4, Buffer.prototype.writeUInt32BE);
|
||||
|
||||
// ext 8 -- 0xc7
|
||||
// ext 16 -- 0xc8
|
||||
// ext 32 -- 0xc9
|
||||
token[0xc7] = writeN(0xc7, 1, Buffer.prototype.writeUInt8);
|
||||
token[0xc8] = writeN(0xc8, 2, Buffer.prototype.writeUInt16BE);
|
||||
token[0xc9] = writeN(0xc9, 4, Buffer.prototype.writeUInt32BE);
|
||||
|
||||
// float 32 -- 0xca
|
||||
// float 64 -- 0xcb
|
||||
token[0xca] = writeN(0xca, 4, Buffer.prototype.writeFloatBE);
|
||||
token[0xcb] = writeN(0xcb, 8, Buffer.prototype.writeDoubleBE);
|
||||
|
||||
// uint 8 -- 0xcc
|
||||
// uint 16 -- 0xcd
|
||||
// uint 32 -- 0xce
|
||||
// uint 64 -- 0xcf
|
||||
token[0xcc] = writeN(0xcc, 1, Buffer.prototype.writeUInt8);
|
||||
token[0xcd] = writeN(0xcd, 2, Buffer.prototype.writeUInt16BE);
|
||||
token[0xce] = writeN(0xce, 4, Buffer.prototype.writeUInt32BE);
|
||||
token[0xcf] = writeN(0xcf, 8, writeUInt64BE);
|
||||
|
||||
// int 8 -- 0xd0
|
||||
// int 16 -- 0xd1
|
||||
// int 32 -- 0xd2
|
||||
// int 64 -- 0xd3
|
||||
token[0xd0] = writeN(0xd0, 1, Buffer.prototype.writeInt8);
|
||||
token[0xd1] = writeN(0xd1, 2, Buffer.prototype.writeInt16BE);
|
||||
token[0xd2] = writeN(0xd2, 4, Buffer.prototype.writeInt32BE);
|
||||
token[0xd3] = writeN(0xd3, 8, writeInt64BE);
|
||||
|
||||
// str 8 -- 0xd9
|
||||
// str 16 -- 0xda
|
||||
// str 32 -- 0xdb
|
||||
token[0xd9] = writeN(0xd9, 1, Buffer.prototype.writeUInt8);
|
||||
token[0xda] = writeN(0xda, 2, Buffer.prototype.writeUInt16BE);
|
||||
token[0xdb] = writeN(0xdb, 4, Buffer.prototype.writeUInt32BE);
|
||||
|
||||
// array 16 -- 0xdc
|
||||
// array 32 -- 0xdd
|
||||
token[0xdc] = writeN(0xdc, 2, Buffer.prototype.writeUInt16BE);
|
||||
token[0xdd] = writeN(0xdd, 4, Buffer.prototype.writeUInt32BE);
|
||||
|
||||
// map 16 -- 0xde
|
||||
// map 32 -- 0xdf
|
||||
token[0xde] = writeN(0xde, 2, Buffer.prototype.writeUInt16BE);
|
||||
token[0xdf] = writeN(0xdf, 4, Buffer.prototype.writeUInt32BE);
|
||||
|
||||
return token;
|
||||
}
|
||||
|
||||
function write1(type) {
|
||||
return function(encoder, value) {
|
||||
var offset = encoder.reserve(2);
|
||||
var buffer = encoder.buffer;
|
||||
buffer[offset++] = type;
|
||||
buffer[offset] = value;
|
||||
};
|
||||
}
|
||||
|
||||
function write2(type) {
|
||||
return function(encoder, value) {
|
||||
var offset = encoder.reserve(3);
|
||||
var buffer = encoder.buffer;
|
||||
buffer[offset++] = type;
|
||||
buffer[offset++] = value >>> 8;
|
||||
buffer[offset] = value;
|
||||
};
|
||||
}
|
||||
|
||||
function write4(type) {
|
||||
return function(encoder, value) {
|
||||
var offset = encoder.reserve(5);
|
||||
var buffer = encoder.buffer;
|
||||
buffer[offset++] = type;
|
||||
buffer[offset++] = value >>> 24;
|
||||
buffer[offset++] = value >>> 16;
|
||||
buffer[offset++] = value >>> 8;
|
||||
buffer[offset] = value;
|
||||
};
|
||||
}
|
||||
|
||||
function writeN(type, len, method, noAssert) {
|
||||
return function(encoder, value) {
|
||||
var offset = encoder.reserve(len + 1);
|
||||
encoder.buffer[offset++] = type;
|
||||
method.call(encoder.buffer, value, offset, noAssert);
|
||||
};
|
||||
}
|
||||
|
||||
function writeUInt64BE(value, offset) {
|
||||
new Uint64BE(this, offset, value);
|
||||
}
|
||||
|
||||
function writeInt64BE(value, offset) {
|
||||
new Int64BE(this, offset, value);
|
||||
}
|
||||
|
||||
function writeFloatBE(value, offset) {
|
||||
ieee754.write(this, value, offset, false, 23, 4);
|
||||
}
|
||||
|
||||
function writeDoubleBE(value, offset) {
|
||||
ieee754.write(this, value, offset, false, 52, 8);
|
||||
}
|
||||
269
node_modules/msgpack-lite/lib/write-type.js
generated
vendored
Normal file
269
node_modules/msgpack-lite/lib/write-type.js
generated
vendored
Normal file
@@ -0,0 +1,269 @@
|
||||
// write-type.js
|
||||
|
||||
var IS_ARRAY = require("isarray");
|
||||
var Int64Buffer = require("int64-buffer");
|
||||
var Uint64BE = Int64Buffer.Uint64BE;
|
||||
var Int64BE = Int64Buffer.Int64BE;
|
||||
|
||||
var Bufferish = require("./bufferish");
|
||||
var BufferProto = require("./bufferish-proto");
|
||||
var WriteToken = require("./write-token");
|
||||
var uint8 = require("./write-uint8").uint8;
|
||||
var ExtBuffer = require("./ext-buffer").ExtBuffer;
|
||||
|
||||
var HAS_UINT8ARRAY = ("undefined" !== typeof Uint8Array);
|
||||
var HAS_MAP = ("undefined" !== typeof Map);
|
||||
|
||||
var extmap = [];
|
||||
extmap[1] = 0xd4;
|
||||
extmap[2] = 0xd5;
|
||||
extmap[4] = 0xd6;
|
||||
extmap[8] = 0xd7;
|
||||
extmap[16] = 0xd8;
|
||||
|
||||
exports.getWriteType = getWriteType;
|
||||
|
||||
function getWriteType(options) {
|
||||
var token = WriteToken.getWriteToken(options);
|
||||
var useraw = options && options.useraw;
|
||||
var binarraybuffer = HAS_UINT8ARRAY && options && options.binarraybuffer;
|
||||
var isBuffer = binarraybuffer ? Bufferish.isArrayBuffer : Bufferish.isBuffer;
|
||||
var bin = binarraybuffer ? bin_arraybuffer : bin_buffer;
|
||||
var usemap = HAS_MAP && options && options.usemap;
|
||||
var map = usemap ? map_to_map : obj_to_map;
|
||||
|
||||
var writeType = {
|
||||
"boolean": bool,
|
||||
"function": nil,
|
||||
"number": number,
|
||||
"object": (useraw ? object_raw : object),
|
||||
"string": _string(useraw ? raw_head_size : str_head_size),
|
||||
"symbol": nil,
|
||||
"undefined": nil
|
||||
};
|
||||
|
||||
return writeType;
|
||||
|
||||
// false -- 0xc2
|
||||
// true -- 0xc3
|
||||
function bool(encoder, value) {
|
||||
var type = value ? 0xc3 : 0xc2;
|
||||
token[type](encoder, value);
|
||||
}
|
||||
|
||||
function number(encoder, value) {
|
||||
var ivalue = value | 0;
|
||||
var type;
|
||||
if (value !== ivalue) {
|
||||
// float 64 -- 0xcb
|
||||
type = 0xcb;
|
||||
token[type](encoder, value);
|
||||
return;
|
||||
} else if (-0x20 <= ivalue && ivalue <= 0x7F) {
|
||||
// positive fixint -- 0x00 - 0x7f
|
||||
// negative fixint -- 0xe0 - 0xff
|
||||
type = ivalue & 0xFF;
|
||||
} else if (0 <= ivalue) {
|
||||
// uint 8 -- 0xcc
|
||||
// uint 16 -- 0xcd
|
||||
// uint 32 -- 0xce
|
||||
type = (ivalue <= 0xFF) ? 0xcc : (ivalue <= 0xFFFF) ? 0xcd : 0xce;
|
||||
} else {
|
||||
// int 8 -- 0xd0
|
||||
// int 16 -- 0xd1
|
||||
// int 32 -- 0xd2
|
||||
type = (-0x80 <= ivalue) ? 0xd0 : (-0x8000 <= ivalue) ? 0xd1 : 0xd2;
|
||||
}
|
||||
token[type](encoder, ivalue);
|
||||
}
|
||||
|
||||
// uint 64 -- 0xcf
|
||||
function uint64(encoder, value) {
|
||||
var type = 0xcf;
|
||||
token[type](encoder, value.toArray());
|
||||
}
|
||||
|
||||
// int 64 -- 0xd3
|
||||
function int64(encoder, value) {
|
||||
var type = 0xd3;
|
||||
token[type](encoder, value.toArray());
|
||||
}
|
||||
|
||||
// str 8 -- 0xd9
|
||||
// str 16 -- 0xda
|
||||
// str 32 -- 0xdb
|
||||
// fixstr -- 0xa0 - 0xbf
|
||||
function str_head_size(length) {
|
||||
return (length < 32) ? 1 : (length <= 0xFF) ? 2 : (length <= 0xFFFF) ? 3 : 5;
|
||||
}
|
||||
|
||||
// raw 16 -- 0xda
|
||||
// raw 32 -- 0xdb
|
||||
// fixraw -- 0xa0 - 0xbf
|
||||
function raw_head_size(length) {
|
||||
return (length < 32) ? 1 : (length <= 0xFFFF) ? 3 : 5;
|
||||
}
|
||||
|
||||
function _string(head_size) {
|
||||
return string;
|
||||
|
||||
function string(encoder, value) {
|
||||
// prepare buffer
|
||||
var length = value.length;
|
||||
var maxsize = 5 + length * 3;
|
||||
encoder.offset = encoder.reserve(maxsize);
|
||||
var buffer = encoder.buffer;
|
||||
|
||||
// expected header size
|
||||
var expected = head_size(length);
|
||||
|
||||
// expected start point
|
||||
var start = encoder.offset + expected;
|
||||
|
||||
// write string
|
||||
length = BufferProto.write.call(buffer, value, start);
|
||||
|
||||
// actual header size
|
||||
var actual = head_size(length);
|
||||
|
||||
// move content when needed
|
||||
if (expected !== actual) {
|
||||
var targetStart = start + actual - expected;
|
||||
var end = start + length;
|
||||
BufferProto.copy.call(buffer, buffer, targetStart, start, end);
|
||||
}
|
||||
|
||||
// write header
|
||||
var type = (actual === 1) ? (0xa0 + length) : (actual <= 3) ? (0xd7 + actual) : 0xdb;
|
||||
token[type](encoder, length);
|
||||
|
||||
// move cursor
|
||||
encoder.offset += length;
|
||||
}
|
||||
}
|
||||
|
||||
function object(encoder, value) {
|
||||
// null
|
||||
if (value === null) return nil(encoder, value);
|
||||
|
||||
// Buffer
|
||||
if (isBuffer(value)) return bin(encoder, value);
|
||||
|
||||
// Array
|
||||
if (IS_ARRAY(value)) return array(encoder, value);
|
||||
|
||||
// int64-buffer objects
|
||||
if (Uint64BE.isUint64BE(value)) return uint64(encoder, value);
|
||||
if (Int64BE.isInt64BE(value)) return int64(encoder, value);
|
||||
|
||||
// ext formats
|
||||
var packer = encoder.codec.getExtPacker(value);
|
||||
if (packer) value = packer(value);
|
||||
if (value instanceof ExtBuffer) return ext(encoder, value);
|
||||
|
||||
// plain old Objects or Map
|
||||
map(encoder, value);
|
||||
}
|
||||
|
||||
function object_raw(encoder, value) {
|
||||
// Buffer
|
||||
if (isBuffer(value)) return raw(encoder, value);
|
||||
|
||||
// others
|
||||
object(encoder, value);
|
||||
}
|
||||
|
||||
// nil -- 0xc0
|
||||
function nil(encoder, value) {
|
||||
var type = 0xc0;
|
||||
token[type](encoder, value);
|
||||
}
|
||||
|
||||
// fixarray -- 0x90 - 0x9f
|
||||
// array 16 -- 0xdc
|
||||
// array 32 -- 0xdd
|
||||
function array(encoder, value) {
|
||||
var length = value.length;
|
||||
var type = (length < 16) ? (0x90 + length) : (length <= 0xFFFF) ? 0xdc : 0xdd;
|
||||
token[type](encoder, length);
|
||||
|
||||
var encode = encoder.codec.encode;
|
||||
for (var i = 0; i < length; i++) {
|
||||
encode(encoder, value[i]);
|
||||
}
|
||||
}
|
||||
|
||||
// bin 8 -- 0xc4
|
||||
// bin 16 -- 0xc5
|
||||
// bin 32 -- 0xc6
|
||||
function bin_buffer(encoder, value) {
|
||||
var length = value.length;
|
||||
var type = (length < 0xFF) ? 0xc4 : (length <= 0xFFFF) ? 0xc5 : 0xc6;
|
||||
token[type](encoder, length);
|
||||
encoder.send(value);
|
||||
}
|
||||
|
||||
function bin_arraybuffer(encoder, value) {
|
||||
bin_buffer(encoder, new Uint8Array(value));
|
||||
}
|
||||
|
||||
// fixext 1 -- 0xd4
|
||||
// fixext 2 -- 0xd5
|
||||
// fixext 4 -- 0xd6
|
||||
// fixext 8 -- 0xd7
|
||||
// fixext 16 -- 0xd8
|
||||
// ext 8 -- 0xc7
|
||||
// ext 16 -- 0xc8
|
||||
// ext 32 -- 0xc9
|
||||
function ext(encoder, value) {
|
||||
var buffer = value.buffer;
|
||||
var length = buffer.length;
|
||||
var type = extmap[length] || ((length < 0xFF) ? 0xc7 : (length <= 0xFFFF) ? 0xc8 : 0xc9);
|
||||
token[type](encoder, length);
|
||||
uint8[value.type](encoder);
|
||||
encoder.send(buffer);
|
||||
}
|
||||
|
||||
// fixmap -- 0x80 - 0x8f
|
||||
// map 16 -- 0xde
|
||||
// map 32 -- 0xdf
|
||||
function obj_to_map(encoder, value) {
|
||||
var keys = Object.keys(value);
|
||||
var length = keys.length;
|
||||
var type = (length < 16) ? (0x80 + length) : (length <= 0xFFFF) ? 0xde : 0xdf;
|
||||
token[type](encoder, length);
|
||||
|
||||
var encode = encoder.codec.encode;
|
||||
keys.forEach(function(key) {
|
||||
encode(encoder, key);
|
||||
encode(encoder, value[key]);
|
||||
});
|
||||
}
|
||||
|
||||
// fixmap -- 0x80 - 0x8f
|
||||
// map 16 -- 0xde
|
||||
// map 32 -- 0xdf
|
||||
function map_to_map(encoder, value) {
|
||||
if (!(value instanceof Map)) return obj_to_map(encoder, value);
|
||||
|
||||
var length = value.size;
|
||||
var type = (length < 16) ? (0x80 + length) : (length <= 0xFFFF) ? 0xde : 0xdf;
|
||||
token[type](encoder, length);
|
||||
|
||||
var encode = encoder.codec.encode;
|
||||
value.forEach(function(val, key, m) {
|
||||
encode(encoder, key);
|
||||
encode(encoder, val);
|
||||
});
|
||||
}
|
||||
|
||||
// raw 16 -- 0xda
|
||||
// raw 32 -- 0xdb
|
||||
// fixraw -- 0xa0 - 0xbf
|
||||
function raw(encoder, value) {
|
||||
var length = value.length;
|
||||
var type = (length < 32) ? (0xa0 + length) : (length <= 0xFFFF) ? 0xda : 0xdb;
|
||||
token[type](encoder, length);
|
||||
encoder.send(value);
|
||||
}
|
||||
}
|
||||
14
node_modules/msgpack-lite/lib/write-uint8.js
generated
vendored
Normal file
14
node_modules/msgpack-lite/lib/write-uint8.js
generated
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
// write-unit8.js
|
||||
|
||||
var constant = exports.uint8 = new Array(256);
|
||||
|
||||
for (var i = 0x00; i <= 0xFF; i++) {
|
||||
constant[i] = write0(i);
|
||||
}
|
||||
|
||||
function write0(type) {
|
||||
return function(encoder) {
|
||||
var offset = encoder.reserve(1);
|
||||
encoder.buffer[offset] = type;
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user