compressed-json
Advanced tools
Comparing version
@@ -6,3 +6,3 @@ { | ||
{ | ||
"2": 1, | ||
"2": 100, | ||
"3": "Dog", | ||
@@ -15,3 +15,3 @@ "4": "This is desc of dog", | ||
{ | ||
"2": 1, | ||
"2": 101, | ||
"3": "Cat", | ||
@@ -18,0 +18,0 @@ "4": "This is desc of cat", |
@@ -5,3 +5,3 @@ { | ||
{ | ||
"id": 1, | ||
"id": 100, | ||
"name": "Dog", | ||
@@ -12,3 +12,3 @@ "desc": "This is desc of dog", | ||
{ | ||
"id": 1, | ||
"id": 101, | ||
"name": "Cat", | ||
@@ -15,0 +15,0 @@ "desc": "This is desc of cat", |
@@ -10,4 +10,3 @@ 'use strict' | ||
// Convert json string | ||
const compressedString = cjson.compress.toString({ /* Some large json */ }) | ||
const restoredFromString = cjson.decompress.fromString(compressedString) |
@@ -0,1 +1,7 @@ | ||
'use strict' | ||
const stringConverter = require('./converters/stringConverter') | ||
const RADIX = 36 | ||
/** | ||
@@ -7,7 +13,2 @@ * @memberof module:compressed-json | ||
*/ | ||
'use strict' | ||
const stringConverter = require('./converters/stringConverter') | ||
/** @lends module:compressed-json.decompress */ | ||
function decompress (compressed, options = {}) { | ||
@@ -26,3 +27,3 @@ const { | ||
if (stringConverter.isPointer(value)) { | ||
const index = stringConverter.fromPointer(value) | ||
const index = parseInt(stringConverter.fromPointer(value), RADIX) | ||
return pointers[index] | ||
@@ -50,3 +51,3 @@ } | ||
const value = values[shortKey] | ||
const key = keys[parseInt(shortKey, 36)] | ||
const key = keys[parseInt(shortKey, RADIX)] | ||
decompressed[key] = convert(value, { keyPath: [keyPath, shortKey].join('/') }) | ||
@@ -53,0 +54,0 @@ } |
{ | ||
"name": "compressed-json", | ||
"version": "1.0.14", | ||
"version": "1.0.15", | ||
"description": "String base JSON compressor", | ||
@@ -5,0 +5,0 @@ "main": "lib", |
@@ -33,3 +33,2 @@ # compressed-json | ||
// Convert json string | ||
const compressedString = cjson.compress.toString({ /* Some large json */ }) | ||
@@ -56,3 +55,3 @@ const restoredFromString = cjson.decompress.fromString(compressedString) | ||
{ | ||
"id": 1, | ||
"id": 100, | ||
"name": "Dog", | ||
@@ -63,3 +62,3 @@ "desc": "This is desc of dog", | ||
{ | ||
"id": 1, | ||
"id": 101, | ||
"name": "Cat", | ||
@@ -88,3 +87,3 @@ "desc": "This is desc of cat", | ||
{ | ||
"2": 1, | ||
"2": 100, | ||
"3": "Dog", | ||
@@ -97,3 +96,3 @@ "4": "This is desc of dog", | ||
{ | ||
"2": 1, | ||
"2": 101, | ||
"3": "Cat", | ||
@@ -133,5 +132,5 @@ "4": "This is desc of cat", | ||
| --- | ----------- | | ||
| `K` | Array of original keys | | ||
| `P` | Pointed string values | | ||
| `_` | Compressed payload | | ||
| `K` | Array of original keys. Object keys are replaced with index of `K` in the compressed json | | ||
| `P` | Pointed string values. Values are replaced with index of `P` in the compressed json | | ||
| `_` | Compressed payload. Keeps original structure, but keys and values may be replaced with pointers to `K` or `P` | | ||
@@ -145,2 +144,4 @@ | ||
The more same key appears in original json, the more better compression. | ||
<a name="string-value-pointing-logic" /> | ||
@@ -151,1 +152,3 @@ | ||
String values appeared at least two will replaced with pointer string with contains index of array stored in `P` of compressed JSON. | ||
The more same string value appears in original json, the more better compression. |
@@ -1,7 +0,1 @@ | ||
/** | ||
* @memberof module:compressed-json | ||
* @function decompress | ||
* @param {Object} compressed | ||
* @param {Object} [options={}] - Optional settings | ||
*/ | ||
'use strict'; | ||
@@ -20,4 +14,10 @@ | ||
import stringConverter from './converters/stringConverter'; | ||
/** @lends module:compressed-json.decompress */ | ||
var RADIX = 36; | ||
/** | ||
* @memberof module:compressed-json | ||
* @function decompress | ||
* @param {Object} compressed | ||
* @param {Object} [options={}] - Optional settings | ||
*/ | ||
@@ -45,3 +45,3 @@ function decompress(compressed) { | ||
if (stringConverter.isPointer(value)) { | ||
var index = stringConverter.fromPointer(value); | ||
var index = parseInt(stringConverter.fromPointer(value), RADIX); | ||
return pointers[index]; | ||
@@ -87,3 +87,3 @@ } | ||
var value = values[shortKey]; | ||
var key = keys[parseInt(shortKey, 36)]; | ||
var key = keys[parseInt(shortKey, RADIX)]; | ||
decompressed[key] = convert(value, { | ||
@@ -114,2 +114,2 @@ keyPath: [keyPath, shortKey].join('/') | ||
export default decompress; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9kZWNvbXByZXNzLmpzIl0sIm5hbWVzIjpbInN0cmluZ0NvbnZlcnRlciIsInJlcXVpcmUiLCJkZWNvbXByZXNzIiwiY29tcHJlc3NlZCIsIm9wdGlvbnMiLCJyZXNlcnZlZEtleXMiLCJyZXNlcnZlZFZhbHVlcyIsIksiLCJQIiwidmFsdWVzIiwiXyIsImtleXMiLCJwb2ludGVycyIsInN0cmluZ1ZhbHVlRm9yIiwidmFsdWUiLCJpc1BvaW50ZXIiLCJpbmRleCIsImZyb21Qb2ludGVyIiwiZnJvbUVzY2FwZWQiLCJjb252ZXJ0Iiwia2V5UGF0aCIsIkFycmF5IiwiaXNBcnJheSIsIm1hcCIsInYiLCJpIiwiam9pbiIsImRlY29tcHJlc3NlZCIsInNob3J0S2V5cyIsIk9iamVjdCIsInNob3J0S2V5Iiwia2V5IiwicGFyc2VJbnQiLCJmcm9tU3RyaW5nIiwiZGVjb21wcmVzc0Zyb21TdHJpbmciLCJjb21wcmVzc2VkU3RyaW5nIiwiSlNPTiIsInBhcnNlIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztBQU1BOzs7Ozs7Ozs7Ozs7QUFFQSxJQUFNQSxlQUFlLEdBQUdDLE9BQU8sQ0FBQyw4QkFBRCxDQUEvQjtBQUVBOzs7QUFDQSxTQUFTQyxVQUFULENBQXFCQyxVQUFyQixFQUErQztBQUFBLE1BQWRDLE9BQWMsdUVBQUosRUFBSTtBQUFBLDhCQUl6Q0EsT0FKeUMsQ0FFM0NDLFlBRjJDO0FBQUEsTUFFM0NBLFlBRjJDLHNDQUU1QixFQUY0QjtBQUFBLDhCQUl6Q0QsT0FKeUMsQ0FHM0NFLGNBSDJDO0FBQUEsTUFHM0NBLGNBSDJDLHNDQUcxQixFQUgwQjs7QUFLN0MsTUFBSSxDQUFDSCxVQUFMLEVBQWlCO0FBQ2YsV0FBTyxJQUFQO0FBQ0Q7O0FBUDRDLHNCQVFQQSxVQVJPLENBUXJDSSxDQVJxQztBQUFBLE1BUXJDQSxDQVJxQyw4QkFRakMsRUFSaUM7QUFBQSxzQkFRUEosVUFSTyxDQVE3QkssQ0FSNkI7QUFBQSxNQVE3QkEsQ0FSNkIsOEJBUXpCLEVBUnlCO0FBQUEsTUFRbEJDLE1BUmtCLEdBUVBOLFVBUk8sQ0FRckJPLENBUnFCO0FBUzdDLE1BQU1DLElBQUksZ0NBQU9OLFlBQVAsc0JBQXdCRSxDQUF4QixFQUFWO0FBQ0EsTUFBTUssUUFBUSxnQ0FBT04sY0FBUCxzQkFBMEJFLENBQTFCLEVBQWQ7O0FBQ0EsTUFBTUssY0FBYyxHQUFHLFNBQWpCQSxjQUFpQixDQUFDQyxLQUFELEVBQVc7QUFDaEMsUUFBSWQsZUFBZSxDQUFDZSxTQUFoQixDQUEwQkQsS0FBMUIsQ0FBSixFQUFzQztBQUNwQyxVQUFNRSxLQUFLLEdBQUdoQixlQUFlLENBQUNpQixXQUFoQixDQUE0QkgsS0FBNUIsQ0FBZDtBQUNBLGFBQU9GLFFBQVEsQ0FBQ0ksS0FBRCxDQUFmO0FBQ0Q7O0FBQ0QsV0FBT2hCLGVBQWUsQ0FBQ2tCLFdBQWhCLENBQTRCSixLQUE1QixDQUFQO0FBQ0QsR0FORDs7QUFPQSxNQUFNSyxPQUFPLEdBQUcsU0FBVkEsT0FBVSxDQUFDVixNQUFELEVBQW1DO0FBQUEsbUZBQVAsRUFBTztBQUFBLDRCQUF4QlcsT0FBd0I7QUFBQSxRQUF4QkEsT0FBd0IsNkJBQWQsRUFBYzs7QUFDakQsUUFBSUMsS0FBSyxDQUFDQyxPQUFOLENBQWNiLE1BQWQsQ0FBSixFQUEyQjtBQUN6QixhQUFPQSxNQUFNLENBQUNjLEdBQVAsQ0FBVyxVQUFDQyxDQUFELEVBQUlDLENBQUo7QUFBQSxlQUFVTixPQUFPLENBQUNLLENBQUQsRUFBSTtBQUFFSixVQUFBQSxPQUFPLEVBQUUsQ0FBQ0EsT0FBRCxFQUFVSyxDQUFWLEVBQWFDLElBQWIsQ0FBa0IsR0FBbEI7QUFBWCxTQUFKLENBQWpCO0FBQUEsT0FBWCxDQUFQO0FBQ0Q7O0FBQ0QsUUFBSWpCLE1BQU0sS0FBSyxJQUFmLEVBQXFCO0FBQ25CLGFBQU8sSUFBUDtBQUNEOztBQUNELG9CQUFlQSxNQUFmO0FBQ0UsV0FBSyxXQUFMO0FBQWtCO0FBQ2hCO0FBQ0Q7O0FBQ0QsV0FBSyxVQUFMO0FBQ0UsZUFBTyxJQUFQOztBQUNGLFdBQUssUUFBTDtBQUFlO0FBQ2IsY0FBTWtCLFlBQVksR0FBRyxFQUFyQjtBQUNBLGNBQU1DLFNBQVMsR0FBR0MsTUFBTSxDQUFDbEIsSUFBUCxDQUFZRixNQUFaLENBQWxCOztBQUNBLHdDQUF1Qm1CLFNBQXZCLGdDQUFrQztBQUE3QixnQkFBTUUsUUFBUSxpQkFBZDtBQUNILGdCQUFNaEIsS0FBSyxHQUFHTCxNQUFNLENBQUNxQixRQUFELENBQXBCO0FBQ0EsZ0JBQU1DLEdBQUcsR0FBR3BCLElBQUksQ0FBQ3FCLFFBQVEsQ0FBQ0YsUUFBRCxFQUFXLEVBQVgsQ0FBVCxDQUFoQjtBQUNBSCxZQUFBQSxZQUFZLENBQUNJLEdBQUQsQ0FBWixHQUFvQlosT0FBTyxDQUFDTCxLQUFELEVBQVE7QUFBRU0sY0FBQUEsT0FBTyxFQUFFLENBQUNBLE9BQUQsRUFBVVUsUUFBVixFQUFvQkosSUFBcEIsQ0FBeUIsR0FBekI7QUFBWCxhQUFSLENBQTNCO0FBQ0Q7O0FBQ0QsaUJBQU9DLFlBQVA7QUFDRDs7QUFDRCxXQUFLLFFBQUw7QUFDRSxlQUFPZCxjQUFjLENBQUNKLE1BQUQsRUFBU1csT0FBVCxDQUFyQjs7QUFDRjtBQUNFLGVBQU9YLE1BQVA7QUFuQko7QUFxQkQsR0E1QkQ7O0FBNkJBLFNBQU9VLE9BQU8sQ0FBQ1YsTUFBRCxDQUFkO0FBQ0Q7O0FBRURQLFVBQVUsQ0FBQytCLFVBQVgsR0FBd0IsU0FBU0Msb0JBQVQsQ0FBK0JDLGdCQUEvQixFQUE0RDtBQUFBLE1BQVovQixPQUFZLHVFQUFKLEVBQUk7QUFDbEYsU0FBT0YsVUFBVSxDQUFDa0MsSUFBSSxDQUFDQyxLQUFMLENBQVdGLGdCQUFYLENBQUQsRUFBOEIvQixPQUE5QixDQUFqQjtBQUNELENBRkQ7O0FBSUFrQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJyQyxVQUFqQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1lbWJlcm9mIG1vZHVsZTpjb21wcmVzc2VkLWpzb25cbiAqIEBmdW5jdGlvbiBkZWNvbXByZXNzXG4gKiBAcGFyYW0ge09iamVjdH0gY29tcHJlc3NlZFxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zPXt9XSAtIE9wdGlvbmFsIHNldHRpbmdzXG4gKi9cbid1c2Ugc3RyaWN0J1xuXG5jb25zdCBzdHJpbmdDb252ZXJ0ZXIgPSByZXF1aXJlKCcuL2NvbnZlcnRlcnMvc3RyaW5nQ29udmVydGVyJylcblxuLyoqIEBsZW5kcyBtb2R1bGU6Y29tcHJlc3NlZC1qc29uLmRlY29tcHJlc3MgKi9cbmZ1bmN0aW9uIGRlY29tcHJlc3MgKGNvbXByZXNzZWQsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgcmVzZXJ2ZWRLZXlzID0gW10sXG4gICAgcmVzZXJ2ZWRWYWx1ZXMgPSBbXSxcbiAgfSA9IG9wdGlvbnNcbiAgaWYgKCFjb21wcmVzc2VkKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICBjb25zdCB7IEsgPSBbXSwgUCA9IFtdLCBfOiB2YWx1ZXMgfSA9IGNvbXByZXNzZWRcbiAgY29uc3Qga2V5cyA9IFsuLi5yZXNlcnZlZEtleXMsIC4uLktdXG4gIGNvbnN0IHBvaW50ZXJzID0gWy4uLnJlc2VydmVkVmFsdWVzLCAuLi5QXVxuICBjb25zdCBzdHJpbmdWYWx1ZUZvciA9ICh2YWx1ZSkgPT4ge1xuICAgIGlmIChzdHJpbmdDb252ZXJ0ZXIuaXNQb2ludGVyKHZhbHVlKSkge1xuICAgICAgY29uc3QgaW5kZXggPSBzdHJpbmdDb252ZXJ0ZXIuZnJvbVBvaW50ZXIodmFsdWUpXG4gICAgICByZXR1cm4gcG9pbnRlcnNbaW5kZXhdXG4gICAgfVxuICAgIHJldHVybiBzdHJpbmdDb252ZXJ0ZXIuZnJvbUVzY2FwZWQodmFsdWUpXG4gIH1cbiAgY29uc3QgY29udmVydCA9ICh2YWx1ZXMsIHsga2V5UGF0aCA9ICcnIH0gPSB7fSkgPT4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlcykpIHtcbiAgICAgIHJldHVybiB2YWx1ZXMubWFwKCh2LCBpKSA9PiBjb252ZXJ0KHYsIHsga2V5UGF0aDogW2tleVBhdGgsIGldLmpvaW4oJy8nKSB9KSlcbiAgICB9XG4gICAgaWYgKHZhbHVlcyA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgc3dpdGNoICh0eXBlb2YgdmFsdWVzKSB7XG4gICAgICBjYXNlICd1bmRlZmluZWQnOiB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgY2FzZSAnZnVuY3Rpb24nOlxuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgY2FzZSAnb2JqZWN0Jzoge1xuICAgICAgICBjb25zdCBkZWNvbXByZXNzZWQgPSB7fVxuICAgICAgICBjb25zdCBzaG9ydEtleXMgPSBPYmplY3Qua2V5cyh2YWx1ZXMpXG4gICAgICAgIGZvciAoY29uc3Qgc2hvcnRLZXkgb2Ygc2hvcnRLZXlzKSB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSB2YWx1ZXNbc2hvcnRLZXldXG4gICAgICAgICAgY29uc3Qga2V5ID0ga2V5c1twYXJzZUludChzaG9ydEtleSwgMzYpXVxuICAgICAgICAgIGRlY29tcHJlc3NlZFtrZXldID0gY29udmVydCh2YWx1ZSwgeyBrZXlQYXRoOiBba2V5UGF0aCwgc2hvcnRLZXldLmpvaW4oJy8nKSB9KVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkZWNvbXByZXNzZWRcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgIHJldHVybiBzdHJpbmdWYWx1ZUZvcih2YWx1ZXMsIGtleVBhdGgpXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdmFsdWVzXG4gICAgfVxuICB9XG4gIHJldHVybiBjb252ZXJ0KHZhbHVlcylcbn1cblxuZGVjb21wcmVzcy5mcm9tU3RyaW5nID0gZnVuY3Rpb24gZGVjb21wcmVzc0Zyb21TdHJpbmcgKGNvbXByZXNzZWRTdHJpbmcsb3B0aW9ucz17fSkge1xuICByZXR1cm4gZGVjb21wcmVzcyhKU09OLnBhcnNlKGNvbXByZXNzZWRTdHJpbmcpLG9wdGlvbnMpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gZGVjb21wcmVzc1xuIl19 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9kZWNvbXByZXNzLmpzIl0sIm5hbWVzIjpbInN0cmluZ0NvbnZlcnRlciIsInJlcXVpcmUiLCJSQURJWCIsImRlY29tcHJlc3MiLCJjb21wcmVzc2VkIiwib3B0aW9ucyIsInJlc2VydmVkS2V5cyIsInJlc2VydmVkVmFsdWVzIiwiSyIsIlAiLCJ2YWx1ZXMiLCJfIiwia2V5cyIsInBvaW50ZXJzIiwic3RyaW5nVmFsdWVGb3IiLCJ2YWx1ZSIsImlzUG9pbnRlciIsImluZGV4IiwicGFyc2VJbnQiLCJmcm9tUG9pbnRlciIsImZyb21Fc2NhcGVkIiwiY29udmVydCIsImtleVBhdGgiLCJBcnJheSIsImlzQXJyYXkiLCJtYXAiLCJ2IiwiaSIsImpvaW4iLCJkZWNvbXByZXNzZWQiLCJzaG9ydEtleXMiLCJPYmplY3QiLCJzaG9ydEtleSIsImtleSIsImZyb21TdHJpbmciLCJkZWNvbXByZXNzRnJvbVN0cmluZyIsImNvbXByZXNzZWRTdHJpbmciLCJKU09OIiwicGFyc2UiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFDQTs7Ozs7Ozs7Ozs7O0FBRUEsSUFBTUEsZUFBZSxHQUFHQyxPQUFPLENBQUMsOEJBQUQsQ0FBL0I7O0FBQ0EsSUFBTUMsS0FBSyxHQUFHLEVBQWQ7QUFFQTs7Ozs7OztBQU1BLFNBQVNDLFVBQVQsQ0FBcUJDLFVBQXJCLEVBQStDO0FBQUEsTUFBZEMsT0FBYyx1RUFBSixFQUFJO0FBQUEsOEJBSXpDQSxPQUp5QyxDQUUzQ0MsWUFGMkM7QUFBQSxNQUUzQ0EsWUFGMkMsc0NBRTVCLEVBRjRCO0FBQUEsOEJBSXpDRCxPQUp5QyxDQUczQ0UsY0FIMkM7QUFBQSxNQUczQ0EsY0FIMkMsc0NBRzFCLEVBSDBCOztBQUs3QyxNQUFJLENBQUNILFVBQUwsRUFBaUI7QUFDZixXQUFPLElBQVA7QUFDRDs7QUFQNEMsc0JBUVBBLFVBUk8sQ0FRckNJLENBUnFDO0FBQUEsTUFRckNBLENBUnFDLDhCQVFqQyxFQVJpQztBQUFB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OlsiXG4ndXNlIHN0cmljdCdcblxuY29uc3Qgc3RyaW5nQ29udmVydGVyID0gcmVxdWlyZSgnLi9jb252ZXJ0ZXJzL3N0cmluZ0NvbnZlcnRlcicpXG5jb25zdCBSQURJWCA9IDM2XG5cbi8qKlxuICogQG1lbWJlcm9mIG1vZHVsZTpjb21wcmVzc2VkLWpzb25cbiAqIEBmdW5jdGlvbiBkZWNvbXByZXNzXG4gKiBAcGFyYW0ge09iamVjdH0gY29tcHJlc3NlZFxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zPXt9XSAtIE9wdGlvbmFsIHNldHRpbmdzXG4gKi9cbmZ1bmN0aW9uIGRlY29tcHJlc3MgKGNvbXByZXNzZWQsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgcmVzZXJ2ZWRLZXlzID0gW10sXG4gICAgcmVzZXJ2ZWRWYWx1ZXMgPSBbXSxcbiAgfSA9IG9wdGlvbnNcbiAgaWYgKCFjb21wcmVzc2VkKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICBjb25zdCB7IEsgPSBbXSwgUCA9IFtdLCBfOiB2YWx1ZXMgfSA9IGNvbXByZXNzZWRcbiAgY29uc3Qga2V5cyA9IFsuLi5yZXNlcnZlZEtleXMsIC4uLktdXG4gIGNvbnN0IHBvaW50ZXJzID0gWy4uLnJlc2VydmVkVmFsdWVzLCAuLi5QXVxuICBjb25zdCBzdHJpbmdWYWx1ZUZvciA9ICh2YWx1ZSkgPT4ge1xuICAgIGlmIChzdHJpbmdDb252ZXJ0ZXIuaXNQb2ludGVyKHZhbHVlKSkge1xuICAgICAgY29uc3QgaW5kZXggPSBwYXJzZUludChzdHJpbmdDb252ZXJ0ZXIuZnJvbVBvaW50ZXIodmFsdWUpLCBSQURJWClcbiAgICAgIHJldHVybiBwb2ludGVyc1tpbmRleF1cbiAgICB9XG4gICAgcmV0dXJuIHN0cmluZ0NvbnZlcnRlci5mcm9tRXNjYXBlZCh2YWx1ZSlcbiAgfVxuICBjb25zdCBjb252ZXJ0ID0gKHZhbHVlcywgeyBrZXlQYXRoID0gJycgfSA9IHt9KSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWVzKSkge1xuICAgICAgcmV0dXJuIHZhbHVlcy5tYXAoKHYsIGkpID0+IGNvbnZlcnQodiwgeyBrZXlQYXRoOiBba2V5UGF0aCwgaV0uam9pbignLycpIH0pKVxuICAgIH1cbiAgICBpZiAodmFsdWVzID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICBzd2l0Y2ggKHR5cGVvZiB2YWx1ZXMpIHtcbiAgICAgIGNhc2UgJ3VuZGVmaW5lZCc6IHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBjYXNlICdmdW5jdGlvbic6XG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICBjYXNlICdvYmplY3QnOiB7XG4gICAgICAgIGNvbnN0IGRlY29tcHJlc3NlZCA9IHt9XG4gICAgICAgIGNvbnN0IHNob3J0S2V5cyA9IE9iamVjdC5rZXlzKHZhbHVlcylcbiAgICAgICAgZm9yIChjb25zdCBzaG9ydEtleSBvZiBzaG9ydEtleXMpIHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IHZhbHVlc1tzaG9ydEtleV1cbiAgICAgICAgICBjb25zdCBrZXkgPSBrZXlzW3BhcnNlSW50KHNob3J0S2V5LCBSQURJWCldXG4gICAgICAgICAgZGVjb21wcmVzc2VkW2tleV0gPSBjb252ZXJ0KHZhbHVlLCB7IGtleVBhdGg6IFtrZXlQYXRoLCBzaG9ydEtleV0uam9pbignLycpIH0pXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRlY29tcHJlc3NlZFxuICAgICAgfVxuICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgcmV0dXJuIHN0cmluZ1ZhbHVlRm9yKHZhbHVlcywga2V5UGF0aClcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB2YWx1ZXNcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNvbnZlcnQodmFsdWVzKVxufVxuXG5kZWNvbXByZXNzLmZyb21TdHJpbmcgPSBmdW5jdGlvbiBkZWNvbXByZXNzRnJvbVN0cmluZyAoY29tcHJlc3NlZFN0cmluZyxvcHRpb25zPXt9KSB7XG4gIHJldHVybiBkZWNvbXByZXNzKEpTT04ucGFyc2UoY29tcHJlc3NlZFN0cmluZyksb3B0aW9ucylcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBkZWNvbXByZXNzXG4iXX0= |
@@ -171,4 +171,12 @@ /** | ||
}) | ||
it('With large keys', () => { | ||
const { decompress } = index | ||
const compressed = require('../misc/mocks/large-data') | ||
const { reservedKeys, reservedValues } = require('../misc/mocks/large-reserved') | ||
const decompressed = decompress(compressed, { reservedKeys, reservedValues }) | ||
equal(decompressed.trail.beacons[0].type, 'home') | ||
}) | ||
}) | ||
/* global describe, it */ |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
104675
7.69%872
0.81%147
2.08%