zlib stream compression (#2028)

This commit is contained in:
Gus Caplan
2017-10-25 11:30:03 -05:00
committed by Amish Shah
parent 0277d1de78
commit 0589b7d7f1
7 changed files with 48 additions and 30 deletions

View File

@@ -1,6 +1,9 @@
const { browser } = require('./util/Constants');
const zlib = require('zlib');
const querystring = require('querystring');
try {
var erlpack = require('erlpack');
if (!erlpack.pack) erlpack = null;
} catch (err) {} // eslint-disable-line no-empty
if (browser) {
exports.WebSocket = window.WebSocket; // eslint-disable-line no-undef
@@ -12,25 +15,14 @@ if (browser) {
}
}
try {
var erlpack = require('erlpack');
if (!erlpack.pack) erlpack = null;
} catch (err) {} // eslint-disable-line no-empty
exports.encoding = erlpack ? 'etf' : 'json';
exports.pack = erlpack ? erlpack.pack : JSON.stringify;
exports.unpack = data => {
if (Array.isArray(data)) data = Buffer.concat(data);
if (!browser && data instanceof ArrayBuffer) data = Buffer.from(new Uint8Array(data));
if (erlpack && typeof data !== 'string') {
return erlpack.unpack(data);
} else if (data instanceof ArrayBuffer || (!browser && data instanceof Buffer)) {
data = zlib.inflateSync(data).toString();
}
return JSON.parse(data);
if (!erlpack || data[0] === '{') return JSON.parse(data);
if (!(data instanceof Buffer)) data = Buffer.from(new Uint8Array(data));
return erlpack.unpack(data);
};
exports.create = (gateway, query = {}, ...args) => {