-
Notifications
You must be signed in to change notification settings - Fork 73
/
Copy pathzparams.js
51 lines (42 loc) · 982 Bytes
/
zparams.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
"use strict";
var lzma = require( "lzma" );
module.exports = {
unzip: function( zipped, callback ) {
var data,
intoDec = function( hex ) {
var dec = parseInt( hex, 16 );
if ( dec >= 128 ) {
dec = dec - 256;
}
return dec;
};
// Split string into an array of hexes
data = [];
while ( zipped.length ) {
data.push( zipped.slice( -2 ) );
zipped = zipped.slice( 0, -2 );
}
data = data.reverse();
lzma.decompress( data.map( intoDec ), function( unzipped ) {
callback( JSON.parse( unzipped ) );
} );
},
zip: function( obj, callback ) {
var data = JSON.stringify( obj ),
intoHex = function( byteFF ) {
var hex;
if ( byteFF < 0 ) {
byteFF = byteFF + 256;
}
hex = byteFF.toString( 16 );
// Add leading zero.
if ( hex.length === 1 ) {
hex = "0" + hex;
}
return hex;
};
lzma.compress( data, 0, function( zipped ) {
callback( zipped.map( intoHex ).join( "" ) );
} );
}
};