compressed-json
Advanced tools
Comparing version
@@ -8,5 +8,12 @@ /** | ||
const stringConverter = require('./converters/stringConverter') | ||
/** @lends module:compressed-json.compress */ | ||
function compress (src) { | ||
const MIN_SHARE_STRING_LENGTH = 4 | ||
const MAX_SHARE_STRING_LENGTH = 256 | ||
const keyDict = {} | ||
const knownValuesDict = {} | ||
const sharedStrings = [] | ||
const wrappers = {} | ||
let keyNumber = 0 | ||
@@ -22,5 +29,26 @@ const shortKeyFor = (key) => { | ||
} | ||
const convert = (values) => { | ||
const stringValueFor = (value, keyPath) => { | ||
const canBeShared = MIN_SHARE_STRING_LENGTH <= value.length && | ||
value.length <= MAX_SHARE_STRING_LENGTH | ||
if (canBeShared) { | ||
if (value in knownValuesDict) { | ||
if(knownValuesDict[value].shared){ | ||
return knownValuesDict[value].pointer | ||
} | ||
const index = sharedStrings.length | ||
sharedStrings.push(value) | ||
const pointer = stringConverter.toPointer(index) | ||
knownValuesDict[value].pointer = pointer | ||
knownValuesDict[value].shared = true | ||
return pointer | ||
} | ||
} | ||
knownValuesDict[value] = { keyPath, shared: false, pointer:null } | ||
return stringConverter.toEscaped(value) | ||
} | ||
const convert = (values, { keyPath = '' } = {}) => { | ||
if (Array.isArray(values)) { | ||
return values.map((v) => convert(v)) | ||
const arr = values.map((v, i) => convert(v, { keyPath: [keyPath, i].join('/') })) | ||
wrappers[keyPath] = arr | ||
return arr | ||
} | ||
@@ -40,6 +68,9 @@ if (values === null) { | ||
const shortKey = shortKeyFor(key) | ||
compressed[shortKey] = convert(value) | ||
compressed[shortKey] = convert(value, { keyPath: [keyPath, shortKey].join('/') }) | ||
} | ||
wrappers[keyPath] = compressed | ||
return compressed | ||
} | ||
case 'string': | ||
return stringValueFor(values, keyPath) | ||
default: | ||
@@ -50,4 +81,15 @@ return values | ||
const converted = convert(src) | ||
for(const {pointer, shared, keyPath} of Object.values(knownValuesDict)){ | ||
if(shared){ | ||
const keys = keyPath.split('/') | ||
const lastKey = keys.pop() | ||
const wrapper = wrappers[keys.join('/')] | ||
wrapper[lastKey] = pointer | ||
} | ||
} | ||
return { | ||
$: Object.entries(keyDict).map((kv) => kv.reverse().join('=')).join('&'), | ||
$: { | ||
K: Object.entries(keyDict).map((kv) => kv.reverse().join('=')).join('&'), | ||
S: sharedStrings, | ||
}, | ||
...converted, | ||
@@ -54,0 +96,0 @@ } |
@@ -8,2 +8,4 @@ /** | ||
const stringConverter = require('./converters/stringConverter') | ||
/** @lends module:compressed-json.decompress */ | ||
@@ -14,24 +16,28 @@ function decompress (compressed) { | ||
} | ||
const { $:keyDictString, ...values } = compressed | ||
const { $ = {}, ...values } = compressed | ||
const { K: keyDictString = '', S: sharedStrings = [] } = $ | ||
const keyDict = Object.assign({}, | ||
...keyDictString.split('&').map(kv => { | ||
const [k,v] = kv.split('=') | ||
return {[k]:v} | ||
const [k, v] = kv.split('=') | ||
return { [k]: v } | ||
}) | ||
) | ||
const convert = (values) => { | ||
const stringValueFor = (value) => { | ||
if (stringConverter.isPointer(value)) { | ||
const index = stringConverter.fromPointer(value) | ||
return sharedStrings[index] | ||
} | ||
return stringConverter.fromEscaped(value) | ||
} | ||
const convert = (values, { keyPath = '' } = {}) => { | ||
if (Array.isArray(values)) { | ||
return values.map((v) => convert(v)) | ||
return values.map((v, i) => convert(v, { keyPath: [keyPath, i].join('/') })) | ||
} | ||
if(values === null){ | ||
if (values === null) { | ||
return null | ||
} | ||
switch (typeof values) { | ||
case 'undefined':{ | ||
case 'undefined': { | ||
return | ||
} | ||
case 'number': | ||
return values | ||
case 'string': | ||
return values | ||
case 'function': | ||
@@ -45,6 +51,8 @@ return null | ||
const key = keyDict[shortKey] | ||
decompressed[key] = convert(value) | ||
decompressed[key] = convert(value, { keyPath: [keyPath, shortKey].join('/') }) | ||
} | ||
return decompressed | ||
} | ||
case 'string': | ||
return stringValueFor(values, keyPath) | ||
default: | ||
@@ -51,0 +59,0 @@ return values |
{ | ||
"name": "compressed-json", | ||
"version": "1.0.2", | ||
"version": "1.0.3", | ||
"description": "JSON key compressor", | ||
@@ -5,0 +5,0 @@ "main": "lib", |
@@ -7,3 +7,2 @@ /** | ||
'use strict'; | ||
/** @lends module:compressed-json.compress */ | ||
@@ -18,4 +17,13 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } | ||
import stringConverter from './converters/stringConverter'; | ||
/** @lends module:compressed-json.compress */ | ||
function compress(src) { | ||
var MIN_SHARE_STRING_LENGTH = 4; | ||
var MAX_SHARE_STRING_LENGTH = 256; | ||
var keyDict = {}; | ||
var knownValuesDict = {}; | ||
var sharedStrings = []; | ||
var wrappers = {}; | ||
var keyNumber = 0; | ||
@@ -34,7 +42,41 @@ | ||
var stringValueFor = function stringValueFor(value, keyPath) { | ||
var canBeShared = MIN_SHARE_STRING_LENGTH <= value.length && value.length <= MAX_SHARE_STRING_LENGTH; | ||
if (canBeShared) { | ||
if (value in knownValuesDict) { | ||
if (knownValuesDict[value].shared) { | ||
return knownValuesDict[value].pointer; | ||
} | ||
var index = sharedStrings.length; | ||
sharedStrings.push(value); | ||
var pointer = stringConverter.toPointer(index); | ||
knownValuesDict[value].pointer = pointer; | ||
knownValuesDict[value].shared = true; | ||
return pointer; | ||
} | ||
} | ||
knownValuesDict[value] = { | ||
keyPath: keyPath, | ||
shared: false, | ||
pointer: null | ||
}; | ||
return stringConverter.toEscaped(value); | ||
}; | ||
var convert = function convert(values) { | ||
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, | ||
_ref$keyPath = _ref.keyPath, | ||
keyPath = _ref$keyPath === void 0 ? '' : _ref$keyPath; | ||
if (Array.isArray(values)) { | ||
return values.map(function (v) { | ||
return convert(v); | ||
var arr = values.map(function (v, i) { | ||
return convert(v, { | ||
keyPath: [keyPath, i].join('/') | ||
}); | ||
}); | ||
wrappers[keyPath] = arr; | ||
return arr; | ||
} | ||
@@ -61,8 +103,14 @@ | ||
var shortKey = shortKeyFor(key); | ||
compressed[shortKey] = convert(value); | ||
compressed[shortKey] = convert(value, { | ||
keyPath: [keyPath, shortKey].join('/') | ||
}); | ||
} | ||
wrappers[keyPath] = compressed; | ||
return compressed; | ||
} | ||
case 'string': | ||
return stringValueFor(values, keyPath); | ||
default: | ||
@@ -74,6 +122,24 @@ return values; | ||
var converted = convert(src); | ||
for (var _i2 = 0, _Object$values = Object.values(knownValuesDict); _i2 < _Object$values.length; _i2++) { | ||
var _Object$values$_i = _Object$values[_i2], | ||
pointer = _Object$values$_i.pointer, | ||
shared = _Object$values$_i.shared, | ||
keyPath = _Object$values$_i.keyPath; | ||
if (shared) { | ||
var keys = keyPath.split('/'); | ||
var lastKey = keys.pop(); | ||
var wrapper = wrappers[keys.join('/')]; | ||
wrapper[lastKey] = pointer; | ||
} | ||
} | ||
return _objectSpread({ | ||
$: Object.entries(keyDict).map(function (kv) { | ||
return kv.reverse().join('='); | ||
}).join('&') | ||
$: { | ||
K: Object.entries(keyDict).map(function (kv) { | ||
return kv.reverse().join('='); | ||
}).join('&'), | ||
S: sharedStrings | ||
} | ||
}, converted); | ||
@@ -88,2 +154,2 @@ } | ||
export default compress; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9jb21wcmVzcy5qcyJdLCJuYW1lcyI6WyJjb21wcmVzcyIsInNyYyIsImtleURpY3QiLCJrZXlOdW1iZXIiLCJzaG9ydEtleUZvciIsImtleSIsInNob3J0S2V5IiwidG9TdHJpbmciLCJjb252ZXJ0IiwidmFsdWVzIiwiQXJyYXkiLCJpc0FycmF5IiwibWFwIiwidiIsInR5cGUiLCJjb21wcmVzc2VkIiwia2V5cyIsIk9iamVjdCIsInZhbHVlIiwiY29udmVydGVkIiwiJCIsImVudHJpZXMiLCJrdiIsInJldmVyc2UiLCJqb2luIiwiY29tcHJlc3NUb1N0cmluZyIsImRhdGEiLCJKU09OIiwic3RyaW5naWZ5IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0FBS0E7QUFFQTs7Ozs7Ozs7OztBQUNBLFNBQVNBLFFBQVQsQ0FBbUJDLEdBQW5CLEVBQXdCO0FBQ3RCLE1BQU1DLE9BQU8sR0FBRyxFQUFoQjtBQUNBLE1BQUlDLFNBQVMsR0FBRyxDQUFoQjs7QUFDQSxNQUFNQyxXQUFXLEdBQUcsU0FBZEEsV0FBYyxDQUFDQyxHQUFELEVBQVM7QUFDM0IsUUFBSUEsR0FBRyxJQUFJSCxPQUFYLEVBQW9CO0FBQ2xCLGFBQU9BLE9BQU8sQ0FBQ0csR0FBRCxDQUFkO0FBQ0Q7O0FBQ0QsUUFBTUMsUUFBUSxHQUFJSCxTQUFELENBQVlJLFFBQVosQ0FBcUIsRUFBckIsQ0FBakI7QUFDQUwsSUFBQUEsT0FBTyxDQUFDRyxHQUFELENBQVAsR0FBZUMsUUFBZjtBQUNBSCxJQUFBQSxTQUFTLElBQUksQ0FBYjtBQUNBLFdBQU9HLFFBQVA7QUFDRCxHQVJEOztBQVNBLE1BQU1FLE9BQU8sR0FBRyxTQUFWQSxPQUFVLENBQUNDLE1BQUQsRUFBWTtBQUMxQixRQUFJQyxLQUFLLENBQUNDLE9BQU4sQ0FBY0YsTUFBZCxDQUFKLEVBQTJCO0FBQ3pCLGFBQU9BLE1BQU0sQ0FBQ0csR0FBUCxDQUFXLFVBQUNDLENBQUQ7QUFBQSxlQUFPTCxPQUFPLENBQUNLLENBQUQsQ0FBZDtBQUFBLE9BQVgsQ0FBUDtBQUNEOztBQUNELFFBQUlKLE1BQU0sS0FBSyxJQUFmLEVBQXFCO0FBQ25CLGFBQU8sSUFBUDtBQUNEOztBQUNELFFBQU1LLElBQUksV0FBVUwsTUFBVixDQUFWOztBQUNBLFlBQVFLLElBQVI7QUFDRSxXQUFLLFVBQUw7QUFDRSxlQUFPLElBQVA7O0FBQ0YsV0FBSyxRQUFMO0FBQWU7QUFDYixjQUFNQyxVQUFVLEdBQUcsRUFBbkI7QUFDQSxjQUFNQyxJQUFJLEdBQUdDLE1BQU0sQ0FBQ0QsSUFBUCxDQUFZUCxNQUFaLENBQWI7O0FBQ0EsbUNBQWtCTyxJQUFsQiwyQkFBd0I7QUFBbkIsZ0JBQU1YLEdBQUcsWUFBVDtBQUNILGdCQUFNYSxLQUFLLEdBQUdULE1BQU0sQ0FBQ0osR0FBRCxDQUFwQjtBQUNBLGdCQUFNQyxRQUFRLEdBQUdGLFdBQVcsQ0FBQ0MsR0FBRCxDQUE1QjtBQUNBVSxZQUFBQSxVQUFVLENBQUNULFFBQUQsQ0FBVixHQUF1QkUsT0FBTyxDQUFDVSxLQUFELENBQTlCO0FBQ0Q7O0FBQ0QsaUJBQU9ILFVBQVA7QUFDRDs7QUFDRDtBQUNFLGVBQU9OLE1BQVA7QUFkSjtBQWdCRCxHQXhCRDs7QUF5QkEsTUFBTVUsU0FBUyxHQUFHWCxPQUFPLENBQUNQLEdBQUQsQ0FBekI7QUFDQTtBQUNFbUIsSUFBQUEsQ0FBQyxFQUFFSCxNQUFNLENBQUNJLE9BQVAsQ0FBZW5CLE9BQWYsRUFBd0JVLEdBQXhCLENBQTRCLFVBQUNVLEVBQUQ7QUFBQSxhQUFRQSxFQUFFLENBQUNDLE9BQUgsR0FBYUMsSUFBYixDQUFrQixHQUFsQixDQUFSO0FBQUEsS0FBNUIsRUFBNERBLElBQTVELENBQWlFLEdBQWpFO0FBREwsS0FFS0wsU0FGTDtBQUlEOztBQUVEbkIsUUFBUSxDQUFDTyxRQUFULEdBQW9CLFNBQVNrQixnQkFBVCxDQUEyQkMsSUFBM0IsRUFBaUM7QUFDbkQsTUFBTVgsVUFBVSxHQUFHZixRQUFRLENBQUMwQixJQUFELENBQTNCO0FBQ0EsU0FBT0MsSUFBSSxDQUFDQyxTQUFMLENBQWViLFVBQWYsQ0FBUDtBQUNELENBSEQ7O0FBS0FjLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQjlCLFFBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbWVtYmVyb2YgbW9kdWxlOmNvbXByZXNzZWQtanNvblxuICogQGZ1bmN0aW9uIGNvbXByZXNzXG4gKiBAcGFyYW0ge09iamVjdH0gZGF0YVxuICovXG4ndXNlIHN0cmljdCdcblxuLyoqIEBsZW5kcyBtb2R1bGU6Y29tcHJlc3NlZC1qc29uLmNvbXByZXNzICovXG5mdW5jdGlvbiBjb21wcmVzcyAoc3JjKSB7XG4gIGNvbnN0IGtleURpY3QgPSB7fVxuICBsZXQga2V5TnVtYmVyID0gMFxuICBjb25zdCBzaG9ydEtleUZvciA9IChrZXkpID0+IHtcbiAgICBpZiAoa2V5IGluIGtleURpY3QpIHtcbiAgICAgIHJldHVybiBrZXlEaWN0W2tleV1cbiAgICB9XG4gICAgY29uc3Qgc2hvcnRLZXkgPSAoa2V5TnVtYmVyKS50b1N0cmluZygzNilcbiAgICBrZXlEaWN0W2tleV0gPSBzaG9ydEtleVxuICAgIGtleU51bWJlciArPSAxXG4gICAgcmV0dXJuIHNob3J0S2V5XG4gIH1cbiAgY29uc3QgY29udmVydCA9ICh2YWx1ZXMpID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZXMpKSB7XG4gICAgICByZXR1cm4gdmFsdWVzLm1hcCgodikgPT4gY29udmVydCh2KSlcbiAgICB9XG4gICAgaWYgKHZhbHVlcyA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgY29uc3QgdHlwZSA9IHR5cGVvZiB2YWx1ZXNcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ2Z1bmN0aW9uJzpcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIGNhc2UgJ29iamVjdCc6IHtcbiAgICAgICAgY29uc3QgY29tcHJlc3NlZCA9IHt9XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh2YWx1ZXMpXG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IHZhbHVlc1trZXldXG4gICAgICAgICAgY29uc3Qgc2hvcnRLZXkgPSBzaG9ydEtleUZvcihrZXkpXG4gICAgICAgICAgY29tcHJlc3NlZFtzaG9ydEtleV0gPSBjb252ZXJ0KHZhbHVlKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb21wcmVzc2VkXG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdmFsdWVzXG4gICAgfVxuICB9XG4gIGNvbnN0IGNvbnZlcnRlZCA9IGNvbnZlcnQoc3JjKVxuICByZXR1cm4ge1xuICAgICQ6IE9iamVjdC5lbnRyaWVzKGtleURpY3QpLm1hcCgoa3YpID0+IGt2LnJldmVyc2UoKS5qb2luKCc9JykpLmpvaW4oJyYnKSxcbiAgICAuLi5jb252ZXJ0ZWQsXG4gIH1cbn1cblxuY29tcHJlc3MudG9TdHJpbmcgPSBmdW5jdGlvbiBjb21wcmVzc1RvU3RyaW5nIChkYXRhKSB7XG4gIGNvbnN0IGNvbXByZXNzZWQgPSBjb21wcmVzcyhkYXRhKVxuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoY29tcHJlc3NlZClcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjb21wcmVzc1xuIl19 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9jb21wcmVzcy5qcyJdLCJuYW1lcyI6WyJzdHJpbmdDb252ZXJ0ZXIiLCJyZXF1aXJlIiwiY29tcHJlc3MiLCJzcmMiLCJNSU5fU0hBUkVfU1RSSU5HX0xFTkdUSCIsIk1BWF9TSEFSRV9TVFJJTkdfTEVOR1RIIiwia2V5RGljdCIsImtub3duVmFsdWVzRGljdCIsInNoYXJlZFN0cmluZ3MiLCJ3cmFwcGVycyIsImtleU51bWJlciIsInNob3J0S2V5Rm9yIiwia2V5Iiwic2hvcnRLZXkiLCJ0b1N0cmluZyIsInN0cmluZ1ZhbHVlRm9yIiwidmFsdWUiLCJrZXlQYXRoIiwiY2FuQmVTaGFyZWQiLCJsZW5ndGgiLCJzaGFyZWQiLCJwb2ludGVyIiwiaW5kZXgiLCJwdXNoIiwidG9Qb2ludGVyIiwidG9Fc2NhcGVkIiwiY29udmVydCIsInZhbHVlcyIsIkFycmF5IiwiaXNBcnJheSIsImFyciIsIm1hcCIsInYiLCJpIiwiam9pbiIsInR5cGUiLCJjb21wcmVzc2VkIiwia2V5cyIsIk9iamVjdCIsImNvbnZlcnRlZCIsInNwbGl0IiwibGFzdEtleSIsInBvcCIsIndyYXBwZXIiLCIkIiwiSyIsImVudHJpZXMiLCJrdiIsInJldmVyc2UiLCJTIiwiY29tcHJlc3NUb1N0cmluZyIsImRhdGEiLCJKU09OIiwic3RyaW5naWZ5IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0FBS0E7Ozs7Ozs7Ozs7QUFFQSxJQUFNQSxlQUFlLEdBQUdDLE9BQU8sQ0FBQyw4QkFBRCxDQUEvQjtBQUVBOzs7QUFDQSxTQUFTQyxRQUFULENBQW1CQyxHQUFuQixFQUF3QjtBQUN0QixNQUFNQyx1QkFBdUIsR0FBRyxDQUFoQztBQUNBLE1BQU1DLHVCQUF1QixHQUFHLEdBQWhDO0FBQ0EsTUFBTUMsT0FBTyxHQUFHLEVBQWhCO0FBQ0EsTUFBTUMsZUFBZSxHQUFHLEVBQXhCO0FBQ0EsTUFBTUMsYUFBYSxHQUFHLEVBQXRCO0FBQ0EsTUFBTUMsUUFB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Q0V1QixJQUFBQSxDQUFDLEVBQUU7QUFDREMsTUFBQUEsQ0FBQyxFQUFFUCxNQUFNLENBQUNRLE9BQVAsQ0FBZXhDLE9BQWYsRUFBd0J5QixHQUF4QixDQUE0QixVQUFDZ0IsRUFBRDtBQUFBLGVBQVFBLEVBQUUsQ0FBQ0MsT0FBSCxHQUFhZCxJQUFiLENBQWtCLEdBQWxCLENBQVI7QUFBQSxPQUE1QixFQUE0REEsSUFBNUQsQ0FBaUUsR0FBakUsQ0FERjtBQUVEZSxNQUFBQSxDQUFDLEVBQUV6QztBQUZGO0FBREwsS0FLSytCLFNBTEw7QUFPRDs7QUFFRHJDLFFBQVEsQ0FBQ1ksUUFBVCxHQUFvQixTQUFTb0MsZ0JBQVQsQ0FBMkJDLElBQTNCLEVBQWlDO0FBQ25ELE1BQU1mLFVBQVUsR0FBR2xDLFFBQVEsQ0FBQ2lELElBQUQsQ0FBM0I7QUFDQSxTQUFPQyxJQUFJLENBQUNDLFNBQUwsQ0FBZWpCLFVBQWYsQ0FBUDtBQUNELENBSEQ7O0FBS0FrQixNQUFNLENBQUNDLE9BQVAsR0FBaUJyRCxRQUFqQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1lbWJlcm9mIG1vZHVsZTpjb21wcmVzc2VkLWpzb25cbiAqIEBmdW5jdGlvbiBjb21wcmVzc1xuICogQHBhcmFtIHtPYmplY3R9IGRhdGFcbiAqL1xuJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IHN0cmluZ0NvbnZlcnRlciA9IHJlcXVpcmUoJy4vY29udmVydGVycy9zdHJpbmdDb252ZXJ0ZXInKVxuXG4vKiogQGxlbmRzIG1vZHVsZTpjb21wcmVzc2VkLWpzb24uY29tcHJlc3MgKi9cbmZ1bmN0aW9uIGNvbXByZXNzIChzcmMpIHtcbiAgY29uc3QgTUlOX1NIQVJFX1NUUklOR19MRU5HVEggPSA0XG4gIGNvbnN0IE1BWF9TSEFSRV9TVFJJTkdfTEVOR1RIID0gMjU2XG4gIGNvbnN0IGtleURpY3QgPSB7fVxuICBjb25zdCBrbm93blZhbHVlc0RpY3QgPSB7fVxuICBjb25zdCBzaGFyZWRTdHJpbmdzID0gW11cbiAgY29uc3Qgd3JhcHBlcnMgPSB7fVxuICBsZXQga2V5TnVtYmVyID0gMFxuICBjb25zdCBzaG9ydEtleUZvciA9IChrZXkpID0+IHtcbiAgICBpZiAoa2V5IGluIGtleURpY3QpIHtcbiAgICAgIHJldHVybiBrZXlEaWN0W2tleV1cbiAgICB9XG4gICAgY29uc3Qgc2hvcnRLZXkgPSAoa2V5TnVtYmVyKS50b1N0cmluZygzNilcbiAgICBrZXlEaWN0W2tleV0gPSBzaG9ydEtleVxuICAgIGtleU51bWJlciArPSAxXG4gICAgcmV0dXJuIHNob3J0S2V5XG4gIH1cbiAgY29uc3Qgc3RyaW5nVmFsdWVGb3IgPSAodmFsdWUsIGtleVBhdGgpID0+IHtcbiAgICBjb25zdCBjYW5CZVNoYXJlZCA9IE1JTl9TSEFSRV9TVFJJTkdfTEVOR1RIIDw9IHZhbHVlLmxlbmd0aCAmJlxuICAgICAgdmFsdWUubGVuZ3RoIDw9IE1BWF9TSEFSRV9TVFJJTkdfTEVOR1RIXG4gICAgaWYgKGNhbkJlU2hhcmVkKSB7XG4gICAgICBpZiAodmFsdWUgaW4ga25vd25WYWx1ZXNEaWN0KSB7XG4gICAgICAgIGlmKGtub3duVmFsdWVzRGljdFt2YWx1ZV0uc2hhcmVkKXtcbiAgICAgICAgICByZXR1cm4ga25vd25WYWx1ZXNEaWN0W3ZhbHVlXS5wb2ludGVyXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaW5kZXggPSBzaGFyZWRTdHJpbmdzLmxlbmd0aFxuICAgICAgICBzaGFyZWRTdHJpbmdzLnB1c2godmFsdWUpXG4gICAgICAgIGNvbnN0IHBvaW50ZXIgPSBzdHJpbmdDb252ZXJ0ZXIudG9Qb2ludGVyKGluZGV4KVxuICAgICAgICBrbm93blZhbHVlc0RpY3RbdmFsdWVdLnBvaW50ZXIgPSBwb2ludGVyXG4gICAgICAgIGtub3duVmFsdWVzRGljdFt2YWx1ZV0uc2hhcmVkID0gdHJ1ZVxuICAgICAgICByZXR1cm4gcG9pbnRlclxuICAgICAgfVxuICAgIH1cbiAgICBrbm93blZhbHVlc0RpY3RbdmFsdWVdID0geyBrZXlQYXRoLCBzaGFyZWQ6IGZhbHNlLCBwb2ludGVyOm51bGwgfVxuICAgIHJldHVybiBzdHJpbmdDb252ZXJ0ZXIudG9Fc2NhcGVkKHZhbHVlKVxuICB9XG4gIGNvbnN0IGNvbnZlcnQgPSAodmFsdWVzLCB7IGtleVBhdGggPSAnJyB9ID0ge30pID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZXMpKSB7XG4gICAgICBjb25zdCBhcnIgPSB2YWx1ZXMubWFwKCh2LCBpKSA9PiBjb252ZXJ0KHYsIHsga2V5UGF0aDogW2tleVBhdGgsIGldLmpvaW4oJy8nKSB9KSlcbiAgICAgIHdyYXBwZXJzW2tleVBhdGhdID0gYXJyXG4gICAgICByZXR1cm4gYXJyXG4gICAgfVxuICAgIGlmICh2YWx1ZXMgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIGNvbnN0IHR5cGUgPSB0eXBlb2YgdmFsdWVzXG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdmdW5jdGlvbic6XG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICBjYXNlICdvYmplY3QnOiB7XG4gICAgICAgIGNvbnN0IGNvbXByZXNzZWQgPSB7fVxuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModmFsdWVzKVxuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSB2YWx1ZXNba2V5XVxuICAgICAgICAgIGNvbnN0IHNob3J0S2V5ID0gc2hvcnRLZXlGb3Ioa2V5KVxuICAgICAgICAgIGNvbXByZXNzZWRbc2hvcnRLZXldID0gY29udmVydCh2YWx1ZSwgeyBrZXlQYXRoOiBba2V5UGF0aCwgc2hvcnRLZXldLmpvaW4oJy8nKSB9KVxuICAgICAgICB9XG4gICAgICAgIHdyYXBwZXJzW2tleVBhdGhdID0gY29tcHJlc3NlZFxuICAgICAgICByZXR1cm4gY29tcHJlc3NlZFxuICAgICAgfVxuICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgcmV0dXJuIHN0cmluZ1ZhbHVlRm9yKHZhbHVlcywga2V5UGF0aClcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB2YWx1ZXNcbiAgICB9XG4gIH1cbiAgY29uc3QgY29udmVydGVkID0gY29udmVydChzcmMpXG4gIGZvcihjb25zdCB7cG9pbnRlciwgc2hhcmVkLCBrZXlQYXRofSBvZiBPYmplY3QudmFsdWVzKGtub3duVmFsdWVzRGljdCkpe1xuICAgIGlmKHNoYXJlZCl7XG4gICAgICBjb25zdCBrZXlzID0ga2V5UGF0aC5zcGxpdCgnLycpXG4gICAgICBjb25zdCBsYXN0S2V5ID0ga2V5cy5wb3AoKVxuICAgICAgY29uc3Qgd3JhcHBlciA9IHdyYXBwZXJzW2tleXMuam9pbignLycpXVxuICAgICAgd3JhcHBlcltsYXN0S2V5XSA9IHBvaW50ZXJcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICAkOiB7XG4gICAgICBLOiBPYmplY3QuZW50cmllcyhrZXlEaWN0KS5tYXAoKGt2KSA9PiBrdi5yZXZlcnNlKCkuam9pbignPScpKS5qb2luKCcmJyksXG4gICAgICBTOiBzaGFyZWRTdHJpbmdzLFxuICAgIH0sXG4gICAgLi4uY29udmVydGVkLFxuICB9XG59XG5cbmNvbXByZXNzLnRvU3RyaW5nID0gZnVuY3Rpb24gY29tcHJlc3NUb1N0cmluZyAoZGF0YSkge1xuICBjb25zdCBjb21wcmVzc2VkID0gY29tcHJlc3MoZGF0YSlcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGNvbXByZXNzZWQpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29tcHJlc3NcbiJdfQ== |
@@ -7,3 +7,2 @@ /** | ||
'use strict'; | ||
/** @lends module:compressed-json.decompress */ | ||
@@ -34,2 +33,6 @@ function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } | ||
import stringConverter from './converters/stringConverter'; | ||
/** @lends module:compressed-json.decompress */ | ||
function decompress(compressed) { | ||
@@ -40,5 +43,10 @@ if (!compressed) { | ||
var keyDictString = compressed.$, | ||
var _compressed$$ = compressed.$, | ||
$ = _compressed$$ === void 0 ? {} : _compressed$$, | ||
values = _objectWithoutProperties(compressed, ["$"]); | ||
var _$$K = $.K, | ||
keyDictString = _$$K === void 0 ? '' : _$$K, | ||
_$$S = $.S, | ||
sharedStrings = _$$S === void 0 ? [] : _$$S; | ||
var keyDict = Object.assign.apply(Object, [{}].concat(_toConsumableArray(keyDictString.split('&').map(function (kv) { | ||
@@ -53,6 +61,21 @@ var _kv$split = kv.split('='), | ||
var stringValueFor = function stringValueFor(value) { | ||
if (stringConverter.isPointer(value)) { | ||
var index = stringConverter.fromPointer(value); | ||
return sharedStrings[index]; | ||
} | ||
return stringConverter.fromEscaped(value); | ||
}; | ||
var convert = function convert(values) { | ||
var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, | ||
_ref2$keyPath = _ref2.keyPath, | ||
keyPath = _ref2$keyPath === void 0 ? '' : _ref2$keyPath; | ||
if (Array.isArray(values)) { | ||
return values.map(function (v) { | ||
return convert(v); | ||
return values.map(function (v, i) { | ||
return convert(v, { | ||
keyPath: [keyPath, i].join('/') | ||
}); | ||
}); | ||
@@ -71,8 +94,2 @@ } | ||
case 'number': | ||
return values; | ||
case 'string': | ||
return values; | ||
case 'function': | ||
@@ -90,3 +107,5 @@ return null; | ||
var key = keyDict[shortKey]; | ||
decompressed[key] = convert(value); | ||
decompressed[key] = convert(value, { | ||
keyPath: [keyPath, shortKey].join('/') | ||
}); | ||
} | ||
@@ -97,2 +116,5 @@ | ||
case 'string': | ||
return stringValueFor(values, keyPath); | ||
default: | ||
@@ -111,2 +133,2 @@ return values; | ||
export default decompress; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9kZWNvbXByZXNzLmpzIl0sIm5hbWVzIjpbImRlY29tcHJlc3MiLCJjb21wcmVzc2VkIiwia2V5RGljdFN0cmluZyIsIiQiLCJ2YWx1ZXMiLCJrZXlEaWN0IiwiT2JqZWN0IiwiYXNzaWduIiwic3BsaXQiLCJtYXAiLCJrdiIsImsiLCJ2IiwiY29udmVydCIsIkFycmF5IiwiaXNBcnJheSIsImRlY29tcHJlc3NlZCIsInNob3J0S2V5cyIsImtleXMiLCJzaG9ydEtleSIsInZhbHVlIiwia2V5IiwiZnJvbVN0cmluZyIsImRlY29tcHJlc3NGcm9tU3RyaW5nIiwiY29tcHJlc3NlZFN0cmluZyIsIkpTT04iLCJwYXJzZSIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBOzs7OztBQUtBO0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsU0FBU0EsVUFBVCxDQUFxQkMsVUFBckIsRUFBaUM7QUFDL0IsTUFBSSxDQUFDQSxVQUFMLEVBQWlCO0FBQ2YsV0FBTyxJQUFQO0FBQ0Q7O0FBSDhCLE1BSXJCQyxhQUpxQixHQUlRRCxVQUpSLENBSXZCRSxDQUp1QjtBQUFBLE1BSUhDLE1BSkcsNEJBSVFILFVBSlI7O0FBSy9CLE1BQU1JLE9BQU8sR0FBR0MsTUFBTSxDQUFDQyxNQUFQLE9BQUFELE1BQU0sR0FBUSxFQUFSLDRCQUNqQkosYUFBYSxDQUFDTSxLQUFkLENBQW9CLEdBQXBCLEVBQXlCQyxHQUF6QixDQUE2QixVQUFBQyxFQUFFLEVBQUk7QUFBQSxvQkFDdEJBLEVBQUUsQ0FBQ0YsS0FBSCxDQUFTLEdBQVQsQ0FEc0I7QUFBQTtBQUFBLFFBQzdCRyxDQUQ2QjtBQUFBLFFBQzNCQyxDQUQyQjs7QUFFcEMsK0JBQVNELENBQVQsRUFBWUMsQ0FBWjtBQUNELEdBSEUsQ0FEaUIsR0FBdEI7O0FBTUEsTUFBTUMsT0FBTyxHQUFHLFNBQVZBLE9BQVUsQ0FBQ1QsTUFBRCxFQUFZO0FBQzFCLFFBQUlVLEtBQUssQ0FBQ0MsT0FBTixDQUFjWCxNQUFkLENBQUosRUFBMkI7QUFDekIsYUFBT0EsTUFBTSxDQUFDSyxHQUFQLENBQVcsVUFBQ0csQ0FBRDtBQUFBLGVBQU9DLE9BQU8sQ0FBQ0QsQ0FBRCxDQUFkO0FBQUEsT0FBWCxDQUFQO0FBQ0Q7O0FBQ0QsUUFBR1IsTUFBTSxLQUFLLElBQWQsRUFBbUI7QUFDakIsYUFBTyxJQUFQO0FBQ0Q7O0FBQ0Qsb0JBQWVBLE1BQWY7QUFDRSxXQUFLLFdBQUw7QUFBaUI7QUFDZjtBQUNEOztBQUNELFdBQUssUUFBTDtBQUNFLGVBQU9BLE1BQVA7O0FBQ0YsV0FBSyxRQUFMO0FBQ0UsZUFBT0EsTUFBUDs7QUFDRixXQUFLLFVBQUw7QUFDRSxlQUFPLElBQVA7O0FBQ0YsV0FBSyxRQUFMO0FBQWU7QUFDYixjQUFNWSxZQUFZLEdBQUcsRUFBckI7QUFDQSxjQUFNQyxTQUFTLEdBQUdYLE1BQU0sQ0FBQ1ksSUFBUCxDQUFZZCxNQUFaLENBQWxCOztBQUNBLHlDQUF1QmEsU0FBdkIsa0NBQWtDO0FBQTdCLGdCQUFNRSxRQUFRLGtCQUFkO0FBQ0gsZ0JBQU1DLEtBQUssR0FBR2hCLE1BQU0sQ0FBQ2UsUUFBRCxDQUFwQjtBQUNBLGdCQUFNRSxHQUFHLEdBQUdoQixPQUFPLENBQUNjLFFBQUQsQ0FBbkI7QUFDQUgsWUFBQUEsWUFBWSxDQUFDSyxHQUFELENBQVosR0FBb0JSLE9BQU8sQ0FBQ08sS0FBRCxDQUEzQjtBQUNEOztBQUNELGlCQUFPSixZQUFQO0FBQ0Q7O0FBQ0Q7QUFDRSxlQUFPWixNQUFQO0FBckJKO0FBdUJELEdBOUJEOztBQStCQSxTQUFPUyxPQUFPLENBQUNULE1BQUQsQ0FBZDtBQUNEOztBQUVESixVQUFVLENBQUNzQixVQUFYLEdBQXdCLFNBQVNDLG9CQUFULENBQStCQyxnQkFBL0IsRUFBaUQ7QUFDdkUsU0FBT3hCLFVBQVUsQ0FBQ3lCLElBQUksQ0FBQ0MsS0FBTCxDQUFXRixnQkFBWCxDQUFELENBQWpCO0FBQ0QsQ0FGRDs7QUFJQUcsTUFBTSxDQUFDQyxPQUFQLEdBQWlCNUIsVUFBakIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtZW1iZXJvZiBtb2R1bGU6Y29tcHJlc3NlZC1qc29uXG4gKiBAZnVuY3Rpb24gZGVjb21wcmVzc1xuICogQHBhcmFtIHtPYmplY3R9IGNvbXByZXNzZWRcbiAqL1xuJ3VzZSBzdHJpY3QnXG5cbi8qKiBAbGVuZHMgbW9kdWxlOmNvbXByZXNzZWQtanNvbi5kZWNvbXByZXNzICovXG5mdW5jdGlvbiBkZWNvbXByZXNzIChjb21wcmVzc2VkKSB7XG4gIGlmICghY29tcHJlc3NlZCkge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgY29uc3QgeyAkOmtleURpY3RTdHJpbmcsIC4uLnZhbHVlcyB9ID0gY29tcHJlc3NlZFxuICBjb25zdCBrZXlEaWN0ID0gT2JqZWN0LmFzc2lnbih7fSxcbiAgICAuLi5rZXlEaWN0U3RyaW5nLnNwbGl0KCcmJykubWFwKGt2ID0+IHtcbiAgICAgIGNvbnN0IFtrLHZdID0ga3Yuc3BsaXQoJz0nKVxuICAgICAgcmV0dXJuIHtba106dn1cbiAgICB9KVxuICApXG4gIGNvbnN0IGNvbnZlcnQgPSAodmFsdWVzKSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWVzKSkge1xuICAgICAgcmV0dXJuIHZhbHVlcy5tYXAoKHYpID0+IGNvbnZlcnQodikpXG4gICAgfVxuICAgIGlmKHZhbHVlcyA9PT0gbnVsbCl7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICBzd2l0Y2ggKHR5cGVvZiB2YWx1ZXMpIHtcbiAgICAgIGNhc2UgJ3VuZGVmaW5lZCc6e1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgIHJldHVybiB2YWx1ZXNcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgIHJldHVybiB2YWx1ZXNcbiAgICAgIGNhc2UgJ2Z1bmN0aW9uJzpcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIGNhc2UgJ29iamVjdCc6IHtcbiAgICAgICAgY29uc3QgZGVjb21wcmVzc2VkID0ge31cbiAgICAgICAgY29uc3Qgc2hvcnRLZXlzID0gT2JqZWN0LmtleXModmFsdWVzKVxuICAgICAgICBmb3IgKGNvbnN0IHNob3J0S2V5IG9mIHNob3J0S2V5cykge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gdmFsdWVzW3Nob3J0S2V5XVxuICAgICAgICAgIGNvbnN0IGtleSA9IGtleURpY3Rbc2hvcnRLZXldXG4gICAgICAgICAgZGVjb21wcmVzc2VkW2tleV0gPSBjb252ZXJ0KHZhbHVlKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkZWNvbXByZXNzZWRcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB2YWx1ZXNcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNvbnZlcnQodmFsdWVzKVxufVxuXG5kZWNvbXByZXNzLmZyb21TdHJpbmcgPSBmdW5jdGlvbiBkZWNvbXByZXNzRnJvbVN0cmluZyAoY29tcHJlc3NlZFN0cmluZykge1xuICByZXR1cm4gZGVjb21wcmVzcyhKU09OLnBhcnNlKGNvbXByZXNzZWRTdHJpbmcpKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGRlY29tcHJlc3NcbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9kZWNvbXByZXNzLmpzIl0sIm5hbWVzIjpbInN0cmluZ0NvbnZlcnRlciIsInJlcXVpcmUiLCJkZWNvbXByZXNzIiwiY29tcHJlc3NlZCIsIiQiLCJ2YWx1ZXMiLCJLIiwia2V5RGljdFN0cmluZyIsIlMiLCJzaGFyZWRTdHJpbmdzIiwia2V5RGljdCIsIk9iamVjdCIsImFzc2lnbiIsInNwbGl0IiwibWFwIiwia3YiLCJrIiwidiIsInN0cmluZ1ZhbHVlRm9yIiwidmFsdWUiLCJpc1BvaW50ZXIiLCJpbmRleCIsImZyb21Qb2ludGVyIiwiZnJvbUVzY2FwZWQiLCJjb252ZXJ0Iiwia2V5UGF0aCIsIkFycmF5IiwiaXNBcnJheSIsImkiLCJqb2luIiwiZGVjb21wcmVzc2VkIiwic2hvcnRLZXlzIiwia2V5cyIsInNob3J0S2V5Iiwia2V5IiwiZnJvbVN0cmluZyIsImRlY29tcHJlc3NGcm9tU3RyaW5nIiwiY29tcHJlc3NlZFN0cmluZyIsIkpTT04iLCJwYXJzZSIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBOzs7OztBQUtBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLElBQU1BLGVBQWUsR0FBR0MsT0FBTyxDQUFDLDhCQUFELENBQS9CO0FBRUE7OztBQUNBLFNBQVNDLFVBQVQsQ0FBcUJDLFVBQXJCLEVBQWlDO0FBQy9CLE1BQUksQ0FBQ0EsVUFBTCxFQUFpQjtBQUNmLFdBQU8sSUFBUDtBQUNEOztBQUg4QixzQkFJREEsVUFKQyxDQUl2QkMsQ0FKdUI7QUFBQSxNQUl2QkEsQ0FKdUIsOEJBSW5CLEVBSm1CO0FBQUEsTUFJWkMsTUFKWSw0QkFJREYsVUFKQzs7QUFBQSxhQUswQkMsQ0FMMUIsQ0FLdkJFLENBTHVCO0FBQUEsTUFLcEJDLGFBTG9CLHFCQUtKLEVBTEk7QUFBQSxhQUswQkgsQ0FMMUIsQ0FLQUksQ0FMQTtBQUFBLE1BS0dDLGFBTEgscUJBS21CLEVBTG5CO0FBTS9CLE1BQU1DLE9BQU8sR0FBR0Ms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LWpzb25cbiAqIEBmdW5jdGlvbiBkZWNvbXByZXNzXG4gKiBAcGFyYW0ge09iamVjdH0gY29tcHJlc3NlZFxuICovXG4ndXNlIHN0cmljdCdcblxuY29uc3Qgc3RyaW5nQ29udmVydGVyID0gcmVxdWlyZSgnLi9jb252ZXJ0ZXJzL3N0cmluZ0NvbnZlcnRlcicpXG5cbi8qKiBAbGVuZHMgbW9kdWxlOmNvbXByZXNzZWQtanNvbi5kZWNvbXByZXNzICovXG5mdW5jdGlvbiBkZWNvbXByZXNzIChjb21wcmVzc2VkKSB7XG4gIGlmICghY29tcHJlc3NlZCkge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgY29uc3QgeyAkID0ge30sIC4uLnZhbHVlcyB9ID0gY29tcHJlc3NlZFxuICBjb25zdCB7IEs6IGtleURpY3RTdHJpbmcgPSAnJywgUzogc2hhcmVkU3RyaW5ncyA9IFtdIH0gPSAkXG4gIGNvbnN0IGtleURpY3QgPSBPYmplY3QuYXNzaWduKHt9LFxuICAgIC4uLmtleURpY3RTdHJpbmcuc3BsaXQoJyYnKS5tYXAoa3YgPT4ge1xuICAgICAgY29uc3QgW2ssIHZdID0ga3Yuc3BsaXQoJz0nKVxuICAgICAgcmV0dXJuIHsgW2tdOiB2IH1cbiAgICB9KVxuICApXG4gIGNvbnN0IHN0cmluZ1ZhbHVlRm9yID0gKHZhbHVlKSA9PiB7XG4gICAgaWYgKHN0cmluZ0NvbnZlcnRlci5pc1BvaW50ZXIodmFsdWUpKSB7XG4gICAgICBjb25zdCBpbmRleCA9IHN0cmluZ0NvbnZlcnRlci5mcm9tUG9pbnRlcih2YWx1ZSlcbiAgICAgIHJldHVybiBzaGFyZWRTdHJpbmdzW2luZGV4XVxuICAgIH1cbiAgICByZXR1cm4gc3RyaW5nQ29udmVydGVyLmZyb21Fc2NhcGVkKHZhbHVlKVxuICB9XG4gIGNvbnN0IGNvbnZlcnQgPSAodmFsdWVzLCB7IGtleVBhdGggPSAnJyB9ID0ge30pID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZXMpKSB7XG4gICAgICByZXR1cm4gdmFsdWVzLm1hcCgodiwgaSkgPT4gY29udmVydCh2LCB7IGtleVBhdGg6IFtrZXlQYXRoLCBpXS5qb2luKCcvJykgfSkpXG4gICAgfVxuICAgIGlmICh2YWx1ZXMgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIHN3aXRjaCAodHlwZW9mIHZhbHVlcykge1xuICAgICAgY2FzZSAndW5kZWZpbmVkJzoge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGNhc2UgJ2Z1bmN0aW9uJzpcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIGNhc2UgJ29iamVjdCc6IHtcbiAgICAgICAgY29uc3QgZGVjb21wcmVzc2VkID0ge31cbiAgICAgICAgY29uc3Qgc2hvcnRLZXlzID0gT2JqZWN0LmtleXModmFsdWVzKVxuICAgICAgICBmb3IgKGNvbnN0IHNob3J0S2V5IG9mIHNob3J0S2V5cykge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gdmFsdWVzW3Nob3J0S2V5XVxuICAgICAgICAgIGNvbnN0IGtleSA9IGtleURpY3Rbc2hvcnRLZXldXG4gICAgICAgICAgZGVjb21wcmVzc2VkW2tleV0gPSBjb252ZXJ0KHZhbHVlLCB7IGtleVBhdGg6IFtrZXlQYXRoLCBzaG9ydEtleV0uam9pbignLycpIH0pXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRlY29tcHJlc3NlZFxuICAgICAgfVxuICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgcmV0dXJuIHN0cmluZ1ZhbHVlRm9yKHZhbHVlcywga2V5UGF0aClcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB2YWx1ZXNcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNvbnZlcnQodmFsdWVzKVxufVxuXG5kZWNvbXByZXNzLmZyb21TdHJpbmcgPSBmdW5jdGlvbiBkZWNvbXByZXNzRnJvbVN0cmluZyAoY29tcHJlc3NlZFN0cmluZykge1xuICByZXR1cm4gZGVjb21wcmVzcyhKU09OLnBhcnNlKGNvbXByZXNzZWRTdHJpbmcpKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGRlY29tcHJlc3NcbiJdfQ== |
@@ -22,3 +22,3 @@ /** | ||
[ | ||
['Hey'] | ||
['Hey',12, null] | ||
] | ||
@@ -33,7 +33,7 @@ ], | ||
nnn:'hoge', | ||
asdf:'hoge', | ||
jjj:'hoge', | ||
n: 'p:143243', | ||
j: 'e:3' | ||
}) | ||
console.log( | ||
compressed | ||
) | ||
ok(compressed) | ||
@@ -49,4 +49,8 @@ const restored = decompress(compressed) | ||
equal(restored.ddd.eee[0][0][0], 'Hey') | ||
equal(restored.ddd.eee[0][0][1], 12) | ||
equal(restored.ddd.fff.ggg.hhh, 'hoge') | ||
equal(restored.jjj, 'hoge') | ||
equal(restored.nnn, 'hoge') | ||
equal(restored.n, 'p:143243') | ||
equal(restored.j, 'e:3') | ||
}) | ||
@@ -59,6 +63,7 @@ | ||
name: `This is item-${i}`, | ||
text:'x#123143243234324324242t343234234', | ||
text2:'x#123213', | ||
$$entity: true, | ||
})) | ||
ok(JSON.stringify(arr).length > compress.toString(arr).length) | ||
const rate = compress.toString(arr).length / JSON.stringify(arr).length | ||
@@ -65,0 +70,0 @@ console.log('compress rage',rate) |
Sorry, the diff of this file is not supported yet
73821
48.01%24
50%588
73.96%