📅 You're Invited: Meet the Socket team at RSAC (April 28 – May 1).RSVP
Socket
Sign inDemoInstall
Socket

compressed-json

Package Overview
Dependencies
Maintainers
1
Versions
17
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

compressed-json - npm Package Compare versions

Comparing version

to
1.0.7

.idea/dictionaries/okuni.xml

15

lib/compress.js

@@ -9,2 +9,3 @@ /**

const stringConverter = require('./converters/stringConverter')
const dateConverter = require('./converters/dateConverter')

@@ -17,3 +18,3 @@ /** @lends module:compressed-json.compress */

const knownValuesDict = {}
const sharedStrings = []
const pinters = []
const keys = []

@@ -31,2 +32,5 @@ const wrappers = {}

}
const dateValueFor = (value) => {
return dateConverter.toString(value)
}
const stringValueFor = (value, keyPath) => {

@@ -40,4 +44,4 @@ const canBeShared = MIN_SHARE_STRING_LENGTH <= value.length &&

}
const index = sharedStrings.length
sharedStrings.push(value)
const index = pinters.length
pinters.push(value)
const pointer = stringConverter.toPointer(index)

@@ -66,2 +70,5 @@ knownValuesDict[value].pointer = pointer

case 'object': {
if(values instanceof Date){
return dateValueFor(values)
}
const compressed = {}

@@ -94,3 +101,3 @@ const keys = Object.keys(values)

K: keys,
S: sharedStrings,
P: pinters,
_: converted,

@@ -97,0 +104,0 @@ }

@@ -11,4 +11,5 @@ /**

ESCAPED_PREFIX:'e:',
DATE_PREFIX:'d:',
}
module.exports = Prefixes

@@ -9,2 +9,3 @@ /**

const stringConverter = require('./converters/stringConverter')
const dateConverter = require('./converters/dateConverter')

@@ -16,7 +17,10 @@ /** @lends module:compressed-json.decompress */

}
const { K: keys = [], S: sharedStrings = [], _: values } = compressed
const { K: keys = [], P: pointers = [], _: values } = compressed
const stringValueFor = (value) => {
if(dateConverter.isDateString(value)){
return dateConverter.fromString(value)
}
if (stringConverter.isPointer(value)) {
const index = stringConverter.fromPointer(value)
return sharedStrings[index]
return pointers[index]
}

@@ -23,0 +27,0 @@ return stringConverter.fromEscaped(value)

{
"name": "compressed-json",
"version": "1.0.6",
"description": "JSON key compressor",
"version": "1.0.7",
"description": "String base JSON compressor",
"main": "lib",

@@ -9,3 +9,5 @@ "browser": "shim",

"test": "mocha test",
"prepare": "babel lib --out-dir shim --presets=@babel/preset-env --source-maps inline --copy-files; lebab --replace 'shim/**/*.js' --transform commonjs"
"transpile": "babel lib --out-dir shim --presets=@babel/preset-env --source-maps inline --copy-files; lebab --replace 'shim/**/*.js' --transform commonjs",
"build": "coz render .*.bud example/.*.bud",
"prepare": "npm run build;npm run transpile"
},

@@ -26,4 +28,9 @@ "repository": {

"devDependencies": {
"@babel/cli": "^7.5.5",
"@babel/core": "^7.5.5",
"@babel/preset-env": "^7.5.5",
"coz": "^7.0.19",
"lebab": "^3.1.0",
"mocha": "^6.2.0"
}
}
# compressed-json
JSON key compressor
[bd_npm_shield_url]: http://img.shields.io/npm/v/install-if-needed.svg?style=flat
[bd_npm_url]: http://www.npmjs.org/package/compressed-json
[![npm Version][bd_npm_shield_url]][bd_npm_url]
String base JSON compressor
If you want seriously reduce your data size, consider using [msgpack](https://msgpack.org/index.html).
Use compressed-json only if you cannot handle binary for some reason.
## Install

@@ -11,5 +21,7 @@

## Usage
## Usage
```node
```js
'use strict'
const cjson = require('compressed-json')

@@ -27,1 +39,107 @@

```
## How It Works
compressed-json has two logics:
* [Key-Compression](#key-compression-logic)
* [String-Value-Pointing](#string-value-pointing-logic)
### Example compression
**example-src.json**
```json
{
"description": "This is example json",
"entities": [
{
"id": 1,
"name": "Dog",
"desc": "This is desc of dog",
"tag": ["animal"]
},
{
"id": 1,
"name": "Cat",
"desc": "This is desc of cat",
"tag": ["animal"]
}
],
"notes": [
"Unique string will be kept as is",
"Duplicated string will be combined",
"Duplicated string will be combined",
"p: string start with 'p:' will be escaped "
]
}
```
**example-compressed.json**
```json
{
"_": {
"0": "This is example json",
"1": [
{
"2": 1,
"3": "Dog",
"4": "This is desc of dog",
"5": [
"p:0"
]
},
{
"2": 1,
"3": "Cat",
"4": "This is desc of cat",
"5": [
"p:0"
]
}
],
"6": [
"Unique string will be kept as is",
"p:1",
"p:1",
"e:p: string start with 'p:' will be escaped "
]
},
"K": [
"description",
"entities",
"id",
"name",
"desc",
"tag",
"notes"
],
"P": [
"animal",
"Duplicated string will be combined"
]
}
```
### Structure of compressed json
| Key | Description |
| --- | ----------- |
| `K` | Array of original keys |
| `P` | Pointed string values |
| `_` | Compressed payload |
<a name="key-compression-logic"/>
### Key-Compression logic
All object keys are replaced with index of array stored in `K` of compressed JSON.
<a name="string-value-pointing-logic" />
### String-Value-Pointing
String values appeared at least two will replaced with pointer string with contains index of array stored in `P` of compressed JSON.

@@ -11,2 +11,3 @@ /**

import stringConverter from './converters/stringConverter';
import dateConverter from './converters/dateConverter';
/** @lends module:compressed-json.compress */

@@ -20,3 +21,3 @@

var knownValuesDict = {};
var sharedStrings = [];
var pinters = [];
var keys = [];

@@ -37,2 +38,6 @@ var wrappers = {};

var dateValueFor = function dateValueFor(value) {
return dateConverter.toString(value);
};
var stringValueFor = function stringValueFor(value, keyPath) {

@@ -47,4 +52,4 @@ var canBeShared = MIN_SHARE_STRING_LENGTH <= value.length && value.length <= MAX_SHARE_STRING_LENGTH;

var index = sharedStrings.length;
sharedStrings.push(value);
var index = pinters.length;
pinters.push(value);
var pointer = stringConverter.toPointer(index);

@@ -92,2 +97,6 @@ knownValuesDict[value].pointer = pointer;

{
if (values instanceof Date) {
return dateValueFor(values);
}
var compressed = {};

@@ -139,3 +148,3 @@

K: keys,
S: sharedStrings,
P: pinters,
_: converted

@@ -151,2 +160,2 @@ };

export default compress;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9jb21wcmVzcy5qcyJdLCJuYW1lcyI6WyJzdHJpbmdDb252ZXJ0ZXIiLCJyZXF1aXJlIiwiY29tcHJlc3MiLCJzcmMiLCJNSU5fU0hBUkVfU1RSSU5HX0xFTkdUSCIsIk1BWF9TSEFSRV9TVFJJTkdfTEVOR1RIIiwia2V5c0RpY3QiLCJrbm93blZhbHVlc0RpY3QiLCJzaGFyZWRTdHJpbmdzIiwia2V5cyIsIndyYXBwZXJzIiwic2hvcnRLZXlGb3IiLCJrZXkiLCJrZXlJbmRleCIsImxlbmd0aCIsInNob3J0S2V5IiwidG9TdHJpbmciLCJwdXNoIiwic3RyaW5nVmFsdWVGb3IiLCJ2YWx1ZSIsImtleVBhdGgiLCJjYW5CZVNoYXJlZCIsInNoYXJlZCIsInBvaW50ZXIiLCJpbmRleCIsInRvUG9pbnRlciIsInRvRXNjYXBlZCIsImNvbnZlcnQiLCJ2YWx1ZXMiLCJBcnJheSIsImlzQXJyYXkiLCJhcnIiLCJtYXAiLCJ2IiwiaSIsImpvaW4iLCJ0eXBlIiwiY29tcHJlc3NlZCIsIk9iamVjdCIsImNvbnZlcnRlZCIsInNwbGl0IiwibGFzdEtleSIsInBvcCIsIndyYXBwZXIiLCJLIiwiUyIsIl8iLCJjb21wcmVzc1RvU3RyaW5nIiwiZGF0YSIsIkpTT04iLCJzdHJpbmdpZnkiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7QUFLQTs7OztBQUVBLElBQU1BLGVBQWUsR0FBR0MsT0FBTyxDQUFDLDhCQUFELENBQS9CO0FBRUE7OztBQUNBLFNBQVNDLFFBQVQsQ0FBbUJDLEdBQW5CLEVBQXdCO0FBQ3RCLE1BQU1DLHVCQUF1QixHQUFHLENBQWhDO0FBQ0EsTUFBTUMsdUJBQXVCLEdBQUcsR0FBaEM7QUFDQSxNQUFNQyxRQUFRLEdBQUcsRUFBakI7QUFDQSxNQUFNQyxlQUFlLEdBQUcsRUFBeEI7QUFDQSxNQUFNQyxhQUFhLEdBQUcsRUFBdEI7QUFDQSxNQUFNQyxJQUFJLEdBQUcsRUFBYjtBQUNBLE1BQU1DLFFBQVEsR0FB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QUFQLEdBQW1CbEIsT0FBbkI7QUFDRDtBQUNGOztBQUNELFNBQU87QUFDTHFCLElBQUFBLENBQUMsRUFBRW5DLElBREU7QUFFTG9DLElBQUFBLENBQUMsRUFBRXJDLGFBRkU7QUFHTHNDLElBQUFBLENBQUMsRUFBRVA7QUFIRSxHQUFQO0FBS0Q7O0FBRURyQyxRQUFRLENBQUNjLFFBQVQsR0FBb0IsU0FBUytCLGdCQUFULENBQTJCQyxJQUEzQixFQUFpQztBQUNuRCxNQUFNWCxVQUFVLEdBQUduQyxRQUFRLENBQUM4QyxJQUFELENBQTNCO0FBQ0EsU0FBT0MsSUFBSSxDQUFDQyxTQUFMLENBQWViLFVBQWYsQ0FBUDtBQUNELENBSEQ7O0FBS0FjLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQmxELFFBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbWVtYmVyb2YgbW9kdWxlOmNvbXByZXNzZWQtanNvblxuICogQGZ1bmN0aW9uIGNvbXByZXNzXG4gKiBAcGFyYW0ge09iamVjdH0gZGF0YVxuICovXG4ndXNlIHN0cmljdCdcblxuY29uc3Qgc3RyaW5nQ29udmVydGVyID0gcmVxdWlyZSgnLi9jb252ZXJ0ZXJzL3N0cmluZ0NvbnZlcnRlcicpXG5cbi8qKiBAbGVuZHMgbW9kdWxlOmNvbXByZXNzZWQtanNvbi5jb21wcmVzcyAqL1xuZnVuY3Rpb24gY29tcHJlc3MgKHNyYykge1xuICBjb25zdCBNSU5fU0hBUkVfU1RSSU5HX0xFTkdUSCA9IDRcbiAgY29uc3QgTUFYX1NIQVJFX1NUUklOR19MRU5HVEggPSA1MTJcbiAgY29uc3Qga2V5c0RpY3QgPSB7fVxuICBjb25zdCBrbm93blZhbHVlc0RpY3QgPSB7fVxuICBjb25zdCBzaGFyZWRTdHJpbmdzID0gW11cbiAgY29uc3Qga2V5cyA9IFtdXG4gIGNvbnN0IHdyYXBwZXJzID0ge31cbiAgY29uc3Qgc2hvcnRLZXlGb3IgPSAoa2V5KSA9PiB7XG4gICAgaWYgKGtleSBpbiBrZXlzRGljdCkge1xuICAgICAgcmV0dXJuIGtleXNEaWN0W2tleV1cbiAgICB9XG4gICAgY29uc3Qga2V5SW5kZXggPSBrZXlzLmxlbmd0aFxuICAgIGNvbnN0IHNob3J0S2V5ID0gKGtleUluZGV4KS50b1N0cmluZygzNilcbiAgICBrZXlzRGljdFtrZXldID0gc2hvcnRLZXlcbiAgICBrZXlzLnB1c2goa2V5KVxuICAgIHJldHVybiBzaG9ydEtleVxuICB9XG4gIGNvbnN0IHN0cmluZ1ZhbHVlRm9yID0gKHZhbHVlLCBrZXlQYXRoKSA9PiB7XG4gICAgY29uc3QgY2FuQmVTaGFyZWQgPSBNSU5fU0hBUkVfU1RSSU5HX0xFTkdUSCA8PSB2YWx1ZS5sZW5ndGggJiZcbiAgICAgIHZhbHVlLmxlbmd0aCA8PSBNQVhfU0hBUkVfU1RSSU5HX0xFTkdUSFxuICAgIGlmIChjYW5CZVNoYXJlZCkge1xuICAgICAgaWYgKHZhbHVlIGluIGtub3duVmFsdWVzRGljdCkge1xuICAgICAgICBpZiAoa25vd25WYWx1ZXNEaWN0W3ZhbHVlXS5zaGFyZWQpIHtcbiAgICAgICAgICByZXR1cm4ga25vd25WYWx1ZXNEaWN0W3ZhbHVlXS5wb2ludGVyXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaW5kZXggPSBzaGFyZWRTdHJpbmdzLmxlbmd0aFxuICAgICAgICBzaGFyZWRTdHJpbmdzLnB1c2godmFsdWUpXG4gICAgICAgIGNvbnN0IHBvaW50ZXIgPSBzdHJpbmdDb252ZXJ0ZXIudG9Qb2ludGVyKGluZGV4KVxuICAgICAgICBrbm93blZhbHVlc0RpY3RbdmFsdWVdLnBvaW50ZXIgPSBwb2ludGVyXG4gICAgICAgIGtub3duVmFsdWVzRGljdFt2YWx1ZV0uc2hhcmVkID0gdHJ1ZVxuICAgICAgICByZXR1cm4gcG9pbnRlclxuICAgICAgfVxuICAgIH1cbiAgICBrbm93blZhbHVlc0RpY3RbdmFsdWVdID0geyBrZXlQYXRoLCBzaGFyZWQ6IGZhbHNlLCBwb2ludGVyOiBudWxsIH1cbiAgICByZXR1cm4gc3RyaW5nQ29udmVydGVyLnRvRXNjYXBlZCh2YWx1ZSlcbiAgfVxuICBjb25zdCBjb252ZXJ0ID0gKHZhbHVlcywgeyBrZXlQYXRoID0gJycgfSA9IHt9KSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWVzKSkge1xuICAgICAgY29uc3QgYXJyID0gdmFsdWVzLm1hcCgodiwgaSkgPT4gY29udmVydCh2LCB7IGtleVBhdGg6IFtrZXlQYXRoLCBpXS5qb2luKCcvJykgfSkpXG4gICAgICB3cmFwcGVyc1trZXlQYXRoXSA9IGFyclxuICAgICAgcmV0dXJuIGFyclxuICAgIH1cbiAgICBpZiAodmFsdWVzID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICBjb25zdCB0eXBlID0gdHlwZW9mIHZhbHVlc1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnZnVuY3Rpb24nOlxuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgY2FzZSAnb2JqZWN0Jzoge1xuICAgICAgICBjb25zdCBjb21wcmVzc2VkID0ge31cbiAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHZhbHVlcylcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gdmFsdWVzW2tleV1cbiAgICAgICAgICBjb25zdCBzaG9ydEtleSA9IHNob3J0S2V5Rm9yKGtleSlcbiAgICAgICAgICBjb21wcmVzc2VkW3Nob3J0S2V5XSA9IGNvbnZlcnQodmFsdWUsIHsga2V5UGF0aDogW2tleVBhdGgsIHNob3J0S2V5XS5qb2luKCcvJykgfSlcbiAgICAgICAgfVxuICAgICAgICB3cmFwcGVyc1trZXlQYXRoXSA9IGNvbXByZXNzZWRcbiAgICAgICAgcmV0dXJuIGNvbXByZXNzZWRcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgIHJldHVybiBzdHJpbmdWYWx1ZUZvcih2YWx1ZXMsIGtleVBhdGgpXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdmFsdWVzXG4gICAgfVxuICB9XG4gIGNvbnN0IGNvbnZlcnRlZCA9IGNvbnZlcnQoc3JjKVxuICBmb3IgKGNvbnN0IHsgcG9pbnRlciwgc2hhcmVkLCBrZXlQYXRoIH0gb2YgT2JqZWN0LnZhbHVlcyhrbm93blZhbHVlc0RpY3QpKSB7XG4gICAgaWYgKHNoYXJlZCkge1xuICAgICAgY29uc3Qga2V5cyA9IGtleVBhdGguc3BsaXQoJy8nKVxuICAgICAgY29uc3QgbGFzdEtleSA9IGtleXMucG9wKClcbiAgICAgIGNvbnN0IHdyYXBwZXIgPSB3cmFwcGVyc1trZXlzLmpvaW4oJy8nKV1cbiAgICAgIHdyYXBwZXJbbGFzdEtleV0gPSBwb2ludGVyXG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgSzoga2V5cyxcbiAgICBTOiBzaGFyZWRTdHJpbmdzLFxuICAgIF86IGNvbnZlcnRlZCxcbiAgfVxufVxuXG5jb21wcmVzcy50b1N0cmluZyA9IGZ1bmN0aW9uIGNvbXByZXNzVG9TdHJpbmcgKGRhdGEpIHtcbiAgY29uc3QgY29tcHJlc3NlZCA9IGNvbXByZXNzKGRhdGEpXG4gIHJldHVybiBKU09OLnN0cmluZ2lmeShjb21wcmVzc2VkKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbXByZXNzXG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9jb21wcmVzcy5qcyJdLCJuYW1lcyI6WyJzdHJpbmdDb252ZXJ0ZXIiLCJyZXF1aXJlIiwiZGF0ZUNvbnZlcnRlciIsImNvbXByZXNzIiwic3JjIiwiTUlOX1NIQVJFX1NUUklOR19MRU5HVEgiLCJNQVhfU0hBUkVfU1RSSU5HX0xFTkdUSCIsImtleXNEaWN0Iiwia25vd25WYWx1ZXNEaWN0IiwicGludGVycyIsImtleXMiLCJ3cmFwcGVycyIsInNob3J0S2V5Rm9yIiwia2V5Iiwia2V5SW5kZXgiLCJsZW5ndGgiLCJzaG9ydEtleSIsInRvU3RyaW5nIiwicHVzaCIsImRhdGVWYWx1ZUZvciIsInZhbHVlIiwic3RyaW5nVmFsdWVGb3IiLCJrZXlQYXRoIiwiY2FuQmVTaGFyZWQiLCJzaGFyZWQiLCJwb2ludGVyIiwiaW5kZXgiLCJ0b1BvaW50ZXIiLCJ0b0VzY2FwZWQiLCJjb252ZXJ0IiwidmFsdWVzIiwiQXJyYXkiLCJpc0FycmF5IiwiYXJyIiwibWFwIiwidiIsImkiLCJqb2luIiwidHlwZSIsIkRhdGUiLCJjb21wcmVzc2VkIiwiT2JqZWN0IiwiY29udmVydGVkIiwic3BsaXQiLCJsYXN0S2V5IiwicG9wIiwid3JhcHBlciIsIksiLCJQIiwiXyIsImNvbXByZXNzVG9TdHJpbmciLCJkYXRhIiwiSlNPTiIsInN0cmluZ2lmeSIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBOzs7OztBQUtBOzs7O0FBRUEsSUFBTUEsZUFBZSxHQUFHQyxPQUFPLENBQUMsOEJBQUQsQ0FBL0I7O0FBQ0EsSUFBTUMsYUFBYSxHQUFHRCxPQUFPLENBQUMsNEJBQUQsQ0FBN0I7QUFFQTs7O0FBQ0EsU0FBU0UsUUFBVCxDQUFtQkMsR0FBbkIsRUFBd0I7QUFDdEIsTUFBTUMsdUJBQXVCLEdBQUcsQ0FBaEM7QUFDQSxNQUFNQyx1QkFBdUIsR0FBRyxHQUFoQztBQUNBLE1BQU1DLFFBQVEsR0FBRyxFQUFqQjtBQUNBLE1BQU1DLGVBQWUsR0FBRyxF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QUFBLFFBQTdDRixPQUE2QyxxQkFBN0NBLE9BQTZDOztBQUN6RSxRQUFJRSxNQUFKLEVBQVk7QUFDVixVQUFNZCxNQUFJLEdBQUdZLE9BQU8sQ0FBQ3FCLEtBQVIsQ0FBYyxHQUFkLENBQWI7O0FBQ0EsVUFBTUMsT0FBTyxHQUFHbEMsTUFBSSxDQUFDbUMsR0FBTCxFQUFoQjs7QUFDQSxVQUFNQyxPQUFPLEdBQUduQyxRQUFRLENBQUNELE1BQUksQ0FBQzJCLElBQUwsQ0FBVSxHQUFWLENBQUQsQ0FBeEI7O0FBQ0FTLE1BQUFBLE9BQU8sQ0FBQ0YsT0FBRCxDQUFQLEdBQW1CbkIsT0FBbkI7QUFDRDtBQUNGOztBQUNELFNBQU87QUFDTHNCLElBQUFBLENBQUMsRUFBRXJDLElBREU7QUFFTHNDLElBQUFBLENBQUMsRUFBRXZDLE9BRkU7QUFHTHdDLElBQUFBLENBQUMsRUFBRVA7QUFIRSxHQUFQO0FBS0Q7O0FBRUR2QyxRQUFRLENBQUNjLFFBQVQsR0FBb0IsU0FBU2lDLGdCQUFULENBQTJCQyxJQUEzQixFQUFpQztBQUNuRCxNQUFNWCxVQUFVLEdBQUdyQyxRQUFRLENBQUNnRCxJQUFELENBQTNCO0FBQ0EsU0FBT0MsSUFBSSxDQUFDQyxTQUFMLENBQWViLFVBQWYsQ0FBUDtBQUNELENBSEQ7O0FBS0FjLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQnBELFFBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbWVtYmVyb2YgbW9kdWxlOmNvbXByZXNzZWQtanNvblxuICogQGZ1bmN0aW9uIGNvbXByZXNzXG4gKiBAcGFyYW0ge09iamVjdH0gZGF0YVxuICovXG4ndXNlIHN0cmljdCdcblxuY29uc3Qgc3RyaW5nQ29udmVydGVyID0gcmVxdWlyZSgnLi9jb252ZXJ0ZXJzL3N0cmluZ0NvbnZlcnRlcicpXG5jb25zdCBkYXRlQ29udmVydGVyID0gcmVxdWlyZSgnLi9jb252ZXJ0ZXJzL2RhdGVDb252ZXJ0ZXInKVxuXG4vKiogQGxlbmRzIG1vZHVsZTpjb21wcmVzc2VkLWpzb24uY29tcHJlc3MgKi9cbmZ1bmN0aW9uIGNvbXByZXNzIChzcmMpIHtcbiAgY29uc3QgTUlOX1NIQVJFX1NUUklOR19MRU5HVEggPSA0XG4gIGNvbnN0IE1BWF9TSEFSRV9TVFJJTkdfTEVOR1RIID0gNTEyXG4gIGNvbnN0IGtleXNEaWN0ID0ge31cbiAgY29uc3Qga25vd25WYWx1ZXNEaWN0ID0ge31cbiAgY29uc3QgcGludGVycyA9IFtdXG4gIGNvbnN0IGtleXMgPSBbXVxuICBjb25zdCB3cmFwcGVycyA9IHt9XG4gIGNvbnN0IHNob3J0S2V5Rm9yID0gKGtleSkgPT4ge1xuICAgIGlmIChrZXkgaW4ga2V5c0RpY3QpIHtcbiAgICAgIHJldHVybiBrZXlzRGljdFtrZXldXG4gICAgfVxuICAgIGNvbnN0IGtleUluZGV4ID0ga2V5cy5sZW5ndGhcbiAgICBjb25zdCBzaG9ydEtleSA9IChrZXlJbmRleCkudG9TdHJpbmcoMzYpXG4gICAga2V5c0RpY3Rba2V5XSA9IHNob3J0S2V5XG4gICAga2V5cy5wdXNoKGtleSlcbiAgICByZXR1cm4gc2hvcnRLZXlcbiAgfVxuICBjb25zdCBkYXRlVmFsdWVGb3IgPSAodmFsdWUpID0+IHtcbiAgICByZXR1cm4gZGF0ZUNvbnZlcnRlci50b1N0cmluZyh2YWx1ZSlcbiAgfVxuICBjb25zdCBzdHJpbmdWYWx1ZUZvciA9ICh2YWx1ZSwga2V5UGF0aCkgPT4ge1xuICAgIGNvbnN0IGNhbkJlU2hhcmVkID0gTUlOX1NIQVJFX1NUUklOR19MRU5HVEggPD0gdmFsdWUubGVuZ3RoICYmXG4gICAgICB2YWx1ZS5sZW5ndGggPD0gTUFYX1NIQVJFX1NUUklOR19MRU5HVEhcbiAgICBpZiAoY2FuQmVTaGFyZWQpIHtcbiAgICAgIGlmICh2YWx1ZSBpbiBrbm93blZhbHVlc0RpY3QpIHtcbiAgICAgICAgaWYgKGtub3duVmFsdWVzRGljdFt2YWx1ZV0uc2hhcmVkKSB7XG4gICAgICAgICAgcmV0dXJuIGtub3duVmFsdWVzRGljdFt2YWx1ZV0ucG9pbnRlclxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGluZGV4ID0gcGludGVycy5sZW5ndGhcbiAgICAgICAgcGludGVycy5wdXNoKHZhbHVlKVxuICAgICAgICBjb25zdCBwb2ludGVyID0gc3RyaW5nQ29udmVydGVyLnRvUG9pbnRlcihpbmRleClcbiAgICAgICAga25vd25WYWx1ZXNEaWN0W3ZhbHVlXS5wb2ludGVyID0gcG9pbnRlclxuICAgICAgICBrbm93blZhbHVlc0RpY3RbdmFsdWVdLnNoYXJlZCA9IHRydWVcbiAgICAgICAgcmV0dXJuIHBvaW50ZXJcbiAgICAgIH1cbiAgICB9XG4gICAga25vd25WYWx1ZXNEaWN0W3ZhbHVlXSA9IHsga2V5UGF0aCwgc2hhcmVkOiBmYWxzZSwgcG9pbnRlcjogbnVsbCB9XG4gICAgcmV0dXJuIHN0cmluZ0NvbnZlcnRlci50b0VzY2FwZWQodmFsdWUpXG4gIH1cbiAgY29uc3QgY29udmVydCA9ICh2YWx1ZXMsIHsga2V5UGF0aCA9ICcnIH0gPSB7fSkgPT4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlcykpIHtcbiAgICAgIGNvbnN0IGFyciA9IHZhbHVlcy5tYXAoKHYsIGkpID0+IGNvbnZlcnQodiwgeyBrZXlQYXRoOiBba2V5UGF0aCwgaV0uam9pbignLycpIH0pKVxuICAgICAgd3JhcHBlcnNba2V5UGF0aF0gPSBhcnJcbiAgICAgIHJldHVybiBhcnJcbiAgICB9XG4gICAgaWYgKHZhbHVlcyA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgY29uc3QgdHlwZSA9IHR5cGVvZiB2YWx1ZXNcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ2Z1bmN0aW9uJzpcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIGNhc2UgJ29iamVjdCc6IHtcbiAgICAgICAgaWYodmFsdWVzIGluc3RhbmNlb2YgRGF0ZSl7XG4gICAgICAgICAgcmV0dXJuIGRhdGVWYWx1ZUZvcih2YWx1ZXMpXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY29tcHJlc3NlZCA9IHt9XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh2YWx1ZXMpXG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IHZhbHVlc1trZXldXG4gICAgICAgICAgY29uc3Qgc2hvcnRLZXkgPSBzaG9ydEtleUZvcihrZXkpXG4gICAgICAgICAgY29tcHJlc3NlZFtzaG9ydEtleV0gPSBjb252ZXJ0KHZhbHVlLCB7IGtleVBhdGg6IFtrZXlQYXRoLCBzaG9ydEtleV0uam9pbignLycpIH0pXG4gICAgICAgIH1cbiAgICAgICAgd3JhcHBlcnNba2V5UGF0aF0gPSBjb21wcmVzc2VkXG4gICAgICAgIHJldHVybiBjb21wcmVzc2VkXG4gICAgICB9XG4gICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICByZXR1cm4gc3RyaW5nVmFsdWVGb3IodmFsdWVzLCBrZXlQYXRoKVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHZhbHVlc1xuICAgIH1cbiAgfVxuICBjb25zdCBjb252ZXJ0ZWQgPSBjb252ZXJ0KHNyYylcbiAgZm9yIChjb25zdCB7IHBvaW50ZXIsIHNoYXJlZCwga2V5UGF0aCB9IG9mIE9iamVjdC52YWx1ZXMoa25vd25WYWx1ZXNEaWN0KSkge1xuICAgIGlmIChzaGFyZWQpIHtcbiAgICAgIGNvbnN0IGtleXMgPSBrZXlQYXRoLnNwbGl0KCcvJylcbiAgICAgIGNvbnN0IGxhc3RLZXkgPSBrZXlzLnBvcCgpXG4gICAgICBjb25zdCB3cmFwcGVyID0gd3JhcHBlcnNba2V5cy5qb2luKCcvJyldXG4gICAgICB3cmFwcGVyW2xhc3RLZXldID0gcG9pbnRlclxuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIEs6IGtleXMsXG4gICAgUDogcGludGVycyxcbiAgICBfOiBjb252ZXJ0ZWQsXG4gIH1cbn1cblxuY29tcHJlc3MudG9TdHJpbmcgPSBmdW5jdGlvbiBjb21wcmVzc1RvU3RyaW5nIChkYXRhKSB7XG4gIGNvbnN0IGNvbXByZXNzZWQgPSBjb21wcmVzcyhkYXRhKVxuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoY29tcHJlc3NlZClcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjb21wcmVzc1xuIl19

@@ -10,6 +10,7 @@ /**

POINTER_PREFIX: 'p:',
ESCAPED_PREFIX: 'e:'
ESCAPED_PREFIX: 'e:',
DATE_PREFIX: 'd:'
};
export default Prefixes;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9jb25zdGFudHMvUHJlZml4ZXMuanMiXSwibmFtZXMiOlsiUHJlZml4ZXMiLCJQT0lOVEVSX1BSRUZJWCIsIkVTQ0FQRURfUFJFRklYIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7QUFJQTtBQUVBOztBQUNBLElBQU1BLFFBQVEsR0FBRztBQUNmQyxFQUFBQSxjQUFjLEVBQUUsSUFERDtBQUVmQyxFQUFBQSxjQUFjLEVBQUM7QUFGQSxDQUFqQjtBQUtBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJKLFFBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbWVtYmVyb2YgbW9kdWxlOmNvbXByZXNzZWQtanNvbi5jb25zdGFudHNcbiAqIEBuYW1lc3BhY2UgUHJlZml4ZXNcbiAqL1xuJ3VzZSBzdHJpY3QnXG5cbi8qKiBAbGVuZHMgbW9kdWxlOmNvbXByZXNzZWQtanNvbi5jb25zdGFudHMuUHJlZml4ZXMgKi9cbmNvbnN0IFByZWZpeGVzID0ge1xuICBQT0lOVEVSX1BSRUZJWDogJ3A6JyxcbiAgRVNDQVBFRF9QUkVGSVg6J2U6Jyxcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBQcmVmaXhlc1xuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9jb25zdGFudHMvUHJlZml4ZXMuanMiXSwibmFtZXMiOlsiUHJlZml4ZXMiLCJQT0lOVEVSX1BSRUZJWCIsIkVTQ0FQRURfUFJFRklYIiwiREFURV9QUkVGSVgiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQTs7OztBQUlBO0FBRUE7O0FBQ0EsSUFBTUEsUUFBUSxHQUFHO0FBQ2ZDLEVBQUFBLGNBQWMsRUFBRSxJQUREO0FBRWZDLEVBQUFBLGNBQWMsRUFBQyxJQUZBO0FBR2ZDLEVBQUFBLFdBQVcsRUFBQztBQUhHLENBQWpCO0FBTUFDLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQkwsUUFBakIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtZW1iZXJvZiBtb2R1bGU6Y29tcHJlc3NlZC1qc29uLmNvbnN0YW50c1xuICogQG5hbWVzcGFjZSBQcmVmaXhlc1xuICovXG4ndXNlIHN0cmljdCdcblxuLyoqIEBsZW5kcyBtb2R1bGU6Y29tcHJlc3NlZC1qc29uLmNvbnN0YW50cy5QcmVmaXhlcyAqL1xuY29uc3QgUHJlZml4ZXMgPSB7XG4gIFBPSU5URVJfUFJFRklYOiAncDonLFxuICBFU0NBUEVEX1BSRUZJWDonZTonLFxuICBEQVRFX1BSRUZJWDonZDonLFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFByZWZpeGVzXG4iXX0=

@@ -11,2 +11,3 @@ /**

import stringConverter from './converters/stringConverter';
import dateConverter from './converters/dateConverter';
/** @lends module:compressed-json.decompress */

@@ -22,10 +23,14 @@

keys = _compressed$K === void 0 ? [] : _compressed$K,
_compressed$S = compressed.S,
sharedStrings = _compressed$S === void 0 ? [] : _compressed$S,
_compressed$P = compressed.P,
pointers = _compressed$P === void 0 ? [] : _compressed$P,
values = compressed._;
var stringValueFor = function stringValueFor(value) {
if (dateConverter.isDateString(value)) {
return dateConverter.fromString(value);
}
if (stringConverter.isPointer(value)) {
var index = stringConverter.fromPointer(value);
return sharedStrings[index];
return pointers[index];
}

@@ -95,2 +100,2 @@

export default decompress;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9kZWNvbXByZXNzLmpzIl0sIm5hbWVzIjpbInN0cmluZ0NvbnZlcnRlciIsInJlcXVpcmUiLCJkZWNvbXByZXNzIiwiY29tcHJlc3NlZCIsIksiLCJrZXlzIiwiUyIsInNoYXJlZFN0cmluZ3MiLCJ2YWx1ZXMiLCJfIiwic3RyaW5nVmFsdWVGb3IiLCJ2YWx1ZSIsImlzUG9pbnRlciIsImluZGV4IiwiZnJvbVBvaW50ZXIiLCJmcm9tRXNjYXBlZCIsImNvbnZlcnQiLCJrZXlQYXRoIiwiQXJyYXkiLCJpc0FycmF5IiwibWFwIiwidiIsImkiLCJqb2luIiwiZGVjb21wcmVzc2VkIiwic2hvcnRLZXlzIiwiT2JqZWN0Iiwic2hvcnRLZXkiLCJrZXkiLCJwYXJzZUludCIsImZyb21TdHJpbmciLCJkZWNvbXByZXNzRnJvbVN0cmluZyIsImNvbXByZXNzZWRTdHJpbmciLCJKU09OIiwicGFyc2UiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7QUFLQTs7OztBQUVBLElBQU1BLGVBQWUsR0FBR0MsT0FBTyxDQUFDLDhCQUFELENBQS9CO0FBRUE7OztBQUNBLFNBQVNDLFVBQVQsQ0FBcUJDLFVBQXJCLEVBQWlDO0FBQy9CLE1BQUksQ0FBQ0EsVUFBTCxFQUFpQjtBQUNmLFdBQU8sSUFBUDtBQUNEOztBQUg4QixzQkFJNEJBLFVBSjVCLENBSXZCQyxDQUp1QjtBQUFBLE1BSXBCQyxJQUpvQiw4QkFJYixFQUphO0FBQUEsc0JBSTRCRixVQUo1QixDQUlURyxDQUpTO0FBQUEsTUFJTkMsYUFKTSw4QkFJVSxFQUpWO0FBQUEsTUFJaUJDLE1BSmpCLEdBSTRCTCxVQUo1QixDQUljTSxDQUpkOztBQUsvQixNQUFNQyxjQUFjLEdBQUcsU0FBakJBLGNBQWlCLENBQUNDLEtBQUQsRUFBVztBQUNoQyxRQUFJWCxlQUFlLENBQUNZLFNBQWhCLENBQTBCRCxLQUExQixDQUFKLEVBQXNDO0FBQ3BDLFVBQU1FLEtBQUssR0FBR2IsZUFBZSxDQUFDYyxXQUFoQixDQUE0QkgsS0FBNUIsQ0FBZDtBQUNBLGFBQU9KLGFBQWEsQ0FBQ00sS0FBRCxDQUFwQjtBQUNEOztBQUNELFdBQU9iLGVBQWUsQ0FBQ2UsV0FBaEIsQ0FBNEJKLEtBQTVCLENBQVA7QUFDRCxHQU5EOztBQU9BLE1BQU1LLE9BQU8sR0FBRyxTQUFWQSxPQUFVLENBQUNSLE1BQUQsRUFBbUM7QUFBQSxtRkFBUCxFQUFPO0FBQUEsNEJBQXhCUyxPQUF3QjtBQUFBLFFBQXhCQSxPQUF3Qiw2QkFBZCxFQUFjOztBQUNqRCxRQUFJQyxLQUFLLENBQUNDLE9BQU4sQ0FBY1gsTUFBZCxDQUFKLEVBQTJCO0FBQ3pCLGFBQU9BLE1BQU0sQ0FBQ1ksR0FBUCxDQUFXLFVBQUNDLENBQUQsRUFBSUMsQ0FBSjtBQUFBLGVBQVVOLE9BQU8sQ0FBQ0ssQ0FBRCxFQUFJO0FBQUVKLFVBQUFBLE9BQU8sRUFBRSxDQUFDQSxPQUFELEVBQVVLLENBQVYsRUFBYUMsSUFBYixDQUFrQixHQUFsQjtBQUFYLFNBQUosQ0FBakI7QUFBQSxPQUFYLENBQVA7QUFDRDs7QUFDRCxRQUFJZixNQUFNLEtBQUssSUFBZixFQUFxQjtBQUNuQixhQUFPLElBQVA7QUFDRDs7QUFDRCxvQkFBZUEsTUFBZjtBQUNFLFdBQUssV0FBTDtBQUFrQjtBQUNoQjtBQUNEOztBQUNELFdBQUssVUFBTDtBQUNFLGVBQU8sSUFBUDs7QUFDRixXQUFLLFFBQUw7QUFBZTtBQUNiLGNBQU1nQixZQUFZLEdBQUcsRUFBckI7QUFDQSxjQUFNQyxTQUFTLEdBQUdDLE1BQU0sQ0FBQ3JCLElBQVAsQ0FBWUcsTUFBWixDQUFsQjs7QUFDQSx3Q0FBdUJpQixTQUF2QixnQ0FBa0M7QUFBN0IsZ0JBQU1FLFFBQVEsaUJBQWQ7QUFDSCxnQkFBTWhCLEtBQUssR0FBR0gsTUFBTSxDQUFDbUIsUUFBRCxDQUFwQjtBQUNBLGdCQUFNQyxHQUFHLEdBQUd2QixJQUFJLENBQUN3QixRQUFRLENBQUNGLFFBQUQsRUFBVyxFQUFYLENBQVQsQ0FBaEI7QUFDQUgsWUFBQUEsWUFBWSxDQUFDSSxHQUFELENBQVosR0FBb0JaLE9BQU8sQ0FBQ0wsS0FBRCxFQUFRO0FBQUVNLGNBQUFBLE9BQU8sRUFBRSxDQUFDQSxPQUFELEVBQVVVLFFBQVYsRUFBb0JKLElBQXBCLENBQXlCLEdBQXpCO0FBQVgsYUFBUixDQUEzQjtBQUNEOztBQUNELGlCQUFPQyxZQUFQO0FBQ0Q7O0FBQ0QsV0FBSyxRQUFMO0FBQ0UsZUFBT2QsY0FBYyxDQUFDRixNQUFELEVBQVNTLE9BQVQsQ0FBckI7O0FBQ0Y7QUFDRSxlQUFPVCxNQUFQO0FBbkJKO0FBcUJELEdBNUJEOztBQTZCQSxTQUFPUSxPQUFPLENBQUNSLE1BQUQsQ0FBZDtBQUNEOztBQUVETixVQUFVLENBQUM0QixVQUFYLEdBQXdCLFNBQVNDLG9CQUFULENBQStCQyxnQkFBL0IsRUFBaUQ7QUFDdkUsU0FBTzlCLFVBQVUsQ0FBQytCLElBQUksQ0FBQ0MsS0FBTCxDQUFXRixnQkFBWCxDQUFELENBQWpCO0FBQ0QsQ0FGRDs7QUFJQUcsTUFBTSxDQUFDQyxPQUFQLEdBQWlCbEMsVUFBakIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtZW1iZXJvZiBtb2R1bGU6Y29tcHJlc3NlZC1qc29uXG4gKiBAZnVuY3Rpb24gZGVjb21wcmVzc1xuICogQHBhcmFtIHtPYmplY3R9IGNvbXByZXNzZWRcbiAqL1xuJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IHN0cmluZ0NvbnZlcnRlciA9IHJlcXVpcmUoJy4vY29udmVydGVycy9zdHJpbmdDb252ZXJ0ZXInKVxuXG4vKiogQGxlbmRzIG1vZHVsZTpjb21wcmVzc2VkLWpzb24uZGVjb21wcmVzcyAqL1xuZnVuY3Rpb24gZGVjb21wcmVzcyAoY29tcHJlc3NlZCkge1xuICBpZiAoIWNvbXByZXNzZWQpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IHsgSzoga2V5cyA9IFtdLCBTOiBzaGFyZWRTdHJpbmdzID0gW10sIF86IHZhbHVlcyB9ID0gY29tcHJlc3NlZFxuICBjb25zdCBzdHJpbmdWYWx1ZUZvciA9ICh2YWx1ZSkgPT4ge1xuICAgIGlmIChzdHJpbmdDb252ZXJ0ZXIuaXNQb2ludGVyKHZhbHVlKSkge1xuICAgICAgY29uc3QgaW5kZXggPSBzdHJpbmdDb252ZXJ0ZXIuZnJvbVBvaW50ZXIodmFsdWUpXG4gICAgICByZXR1cm4gc2hhcmVkU3RyaW5nc1tpbmRleF1cbiAgICB9XG4gICAgcmV0dXJuIHN0cmluZ0NvbnZlcnRlci5mcm9tRXNjYXBlZCh2YWx1ZSlcbiAgfVxuICBjb25zdCBjb252ZXJ0ID0gKHZhbHVlcywgeyBrZXlQYXRoID0gJycgfSA9IHt9KSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWVzKSkge1xuICAgICAgcmV0dXJuIHZhbHVlcy5tYXAoKHYsIGkpID0+IGNvbnZlcnQodiwgeyBrZXlQYXRoOiBba2V5UGF0aCwgaV0uam9pbignLycpIH0pKVxuICAgIH1cbiAgICBpZiAodmFsdWVzID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICBzd2l0Y2ggKHR5cGVvZiB2YWx1ZXMpIHtcbiAgICAgIGNhc2UgJ3VuZGVmaW5lZCc6IHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBjYXNlICdmdW5jdGlvbic6XG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICBjYXNlICdvYmplY3QnOiB7XG4gICAgICAgIGNvbnN0IGRlY29tcHJlc3NlZCA9IHt9XG4gICAgICAgIGNvbnN0IHNob3J0S2V5cyA9IE9iamVjdC5rZXlzKHZhbHVlcylcbiAgICAgICAgZm9yIChjb25zdCBzaG9ydEtleSBvZiBzaG9ydEtleXMpIHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IHZhbHVlc1tzaG9ydEtleV1cbiAgICAgICAgICBjb25zdCBrZXkgPSBrZXlzW3BhcnNlSW50KHNob3J0S2V5LCAzNildXG4gICAgICAgICAgZGVjb21wcmVzc2VkW2tleV0gPSBjb252ZXJ0KHZhbHVlLCB7IGtleVBhdGg6IFtrZXlQYXRoLCBzaG9ydEtleV0uam9pbignLycpIH0pXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRlY29tcHJlc3NlZFxuICAgICAgfVxuICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgcmV0dXJuIHN0cmluZ1ZhbHVlRm9yKHZhbHVlcywga2V5UGF0aClcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB2YWx1ZXNcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNvbnZlcnQodmFsdWVzKVxufVxuXG5kZWNvbXByZXNzLmZyb21TdHJpbmcgPSBmdW5jdGlvbiBkZWNvbXByZXNzRnJvbVN0cmluZyAoY29tcHJlc3NlZFN0cmluZykge1xuICByZXR1cm4gZGVjb21wcmVzcyhKU09OLnBhcnNlKGNvbXByZXNzZWRTdHJpbmcpKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGRlY29tcHJlc3NcbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9kZWNvbXByZXNzLmpzIl0sIm5hbWVzIjpbInN0cmluZ0NvbnZlcnRlciIsInJlcXVpcmUiLCJkYXRlQ29udmVydGVyIiwiZGVjb21wcmVzcyIsImNvbXByZXNzZWQiLCJLIiwia2V5cyIsIlAiLCJwb2ludGVycyIsInZhbHVlcyIsIl8iLCJzdHJpbmdWYWx1ZUZvciIsInZhbHVlIiwiaXNEYXRlU3RyaW5nIiwiZnJvbVN0cmluZyIsImlzUG9pbnRlciIsImluZGV4IiwiZnJvbVBvaW50ZXIiLCJmcm9tRXNjYXBlZCIsImNvbnZlcnQiLCJrZXlQYXRoIiwiQXJyYXkiLCJpc0FycmF5IiwibWFwIiwidiIsImkiLCJqb2luIiwiZGVjb21wcmVzc2VkIiwic2hvcnRLZXlzIiwiT2JqZWN0Iiwic2hvcnRLZXkiLCJrZXkiLCJwYXJzZUludCIsImRlY29tcHJlc3NGcm9tU3RyaW5nIiwiY29tcHJlc3NlZFN0cmluZyIsIkpTT04iLCJwYXJzZSIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBOzs7OztBQUtBOzs7O0FBRUEsSUFBTUEsZUFBZSxHQUFHQyxPQUFPLENBQUMsOEJBQUQsQ0FBL0I7O0FBQ0EsSUFBTUMsYUFBYSxHQUFHRCxPQUFPLENBQUMsNEJBQUQsQ0FBN0I7QUFFQTs7O0FBQ0EsU0FBU0UsVUFBVCxDQUFxQkMsVUFBckIsRUFBaUM7QUFDL0IsTUFBSSxDQUFDQSxVQUFMLEVBQWlCO0FBQ2YsV0FBTyxJQUFQO0FBQ0Q7O0FBSDhCLHNCQUl1QkEsVUFKdkIsQ0FJdkJDLENBSnVCO0FBQUEsTUFJcEJDLElBSm9CLDhCQUliLEVBSmE7QUFBQSxzQkFJdUJGLFVBSnZCLENBSVRHLENBSlM7QUFBQSxNQUlOQyxRQUpNLDhCQUlLLEVBSkw7QUFBQSxNQUlZQyxNQUpaLEdBSXVCTCxVQUp2QixDQUlTTSxDQUpUOztBQUsvQixNQUFNQyxjQUFjLEdBQUcsU0FBakJBLGNBQWlCLENBQUNDLEtBQUQsRUFBVztBQUNoQyxRQUFHVixhQUFhLENBQUNXLFlBQWQsQ0FBMkJELEtBQTNCLENBQUgsRUFBcUM7QUFDbkMsYUFBT1YsYUFBYSxDQUFDWSxVQUFkLENBQXlCRixLQUF6QixDQUFQO0FBQ0Q7O0FBQ0QsUUFBSVosZUFBZSxDQUFDZSxTQUFoQixDQUEwQkgsS0FBMUIsQ0FBSixFQUFzQztBQUNwQyxVQUFNSSxLQUFLLEdBQUdoQixlQUFlLENBQUNpQixXQUFoQixDQUE0QkwsS0FBNUIsQ0FBZDtBQUNBLGFBQU9KLFFBQVEsQ0FBQ1EsS0FBRCxDQUFmO0FBQ0Q7O0FBQ0QsV0FBT2hCLGVBQWUsQ0FBQ2tCLFdBQWhCLENBQTRCTixLQUE1QixDQUFQO0FBQ0QsR0FURDs7QUFVQSxNQUFNTyxPQUFPLEdBQUcsU0FBVkEsT0FBVSxDQUFDVixNQUFELEVBQW1DO0FBQUEsbUZBQVAsRUFBTztBQUFBLDRCQUF4QlcsT0FBd0I7QUFBQSxRQUF4QkEsT0FBd0IsNkJBQWQsRUFBYzs7QUFDakQsUUFBSUMsS0FBSyxDQUFDQyxPQUFOLENBQWNiLE1BQWQsQ0FBSixFQUEyQjtBQUN6QixhQUFPQSxNQUFNLENBQUNjLEdBQVAsQ0FBVyxVQUFDQyxDQUFELEVBQUlDLENBQUo7QUFBQSxlQUFVTixPQUFPLENBQUNLLENBQUQsRUFBSTtBQUFFSixVQUFBQSxPQUFPLEVBQUUsQ0FBQ0EsT0FBRCxFQUFVSyxDQUFWLEVBQWFDLElBQWIsQ0FBa0IsR0FBbEI7QUFBWCxTQUFKLENBQWpCO0FBQUEsT0FBWCxDQUFQO0FBQ0Q7O0FBQ0QsUUFBSWpCLE1BQU0sS0FBSyxJQUFmLEVBQXFCO0FBQ25CLGFBQU8sSUFBUDtBQUNEOztBQUNELG9CQUFlQSxNQUFmO0FBQ0UsV0FBSyxXQUFMO0FBQWtCO0FBQ2hCO0FBQ0Q7O0FBQ0QsV0FBSyxVQUFMO0FBQ0UsZUFBTyxJQUFQOztBQUNGLFdBQUssUUFBTDtBQUFlO0FBQ2IsY0FBTWtCLFlBQVksR0FBRyxFQUFyQjtBQUNBLGNBQU1DLFNBQVMsR0FBR0MsTUFBTSxDQUFDdkIsSUFBUCxDQUFZRyxNQUFaLENBQWxCOztBQUNBLHdDQUF1Qm1CLFNBQXZCLGdDQUFrQztBQUE3QixnQkFBTUUsUUFBUSxpQkFBZDtBQUNILGdCQUFNbEIsS0FBSyxHQUFHSCxNQUFNLENBQUNxQixRQUFELENBQXBCO0FBQ0EsZ0JBQU1DLEdBQUcsR0FBR3pCLElBQUksQ0FBQzBCLFFBQVEsQ0FBQ0YsUUFBRCxFQUFXLEVBQVgsQ0FBVCxDQUFoQjtBQUNBSCxZQUFBQSxZQUFZLENBQUNJLEdBQUQsQ0FBWixHQUFvQlosT0FBTyxDQUFDUCxLQUFELEVBQVE7QUFBRVEsY0FBQUEsT0FBTyxFQUFFLENBQUNBLE9BQUQsRUFBVVUsUUFBVixFQUFvQkosSUFBcEIsQ0FBeUIsR0FBekI7QUFBWCxhQUFSLENBQTNCO0FBQ0Q7O0FBQ0QsaUJBQU9DLFlBQVA7QUFDRDs7QUFDRCxXQUFLLFFBQUw7QUFDRSxlQUFPaEIsY0FBYyxDQUFDRixNQUFELEVBQVNXLE9BQVQsQ0FBckI7O0FBQ0Y7QUFDRSxlQUFPWCxNQUFQO0FBbkJKO0FBcUJELEdBNUJEOztBQTZCQSxTQUFPVSxPQUFPLENBQUNWLE1BQUQsQ0FBZDtBQUNEOztBQUVETixVQUFVLENBQUNXLFVBQVgsR0FBd0IsU0FBU21CLG9CQUFULENBQStCQyxnQkFBL0IsRUFBaUQ7QUFDdkUsU0FBTy9CLFVBQVUsQ0FBQ2dDLElBQUksQ0FBQ0MsS0FBTCxDQUFXRixnQkFBWCxDQUFELENBQWpCO0FBQ0QsQ0FGRDs7QUFJQUcsTUFBTSxDQUFDQyxPQUFQLEdBQWlCbkMsVUFBakIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtZW1iZXJvZiBtb2R1bGU6Y29tcHJlc3NlZC1qc29uXG4gKiBAZnVuY3Rpb24gZGVjb21wcmVzc1xuICogQHBhcmFtIHtPYmplY3R9IGNvbXByZXNzZWRcbiAqL1xuJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IHN0cmluZ0NvbnZlcnRlciA9IHJlcXVpcmUoJy4vY29udmVydGVycy9zdHJpbmdDb252ZXJ0ZXInKVxuY29uc3QgZGF0ZUNvbnZlcnRlciA9IHJlcXVpcmUoJy4vY29udmVydGVycy9kYXRlQ29udmVydGVyJylcblxuLyoqIEBsZW5kcyBtb2R1bGU6Y29tcHJlc3NlZC1qc29uLmRlY29tcHJlc3MgKi9cbmZ1bmN0aW9uIGRlY29tcHJlc3MgKGNvbXByZXNzZWQpIHtcbiAgaWYgKCFjb21wcmVzc2VkKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICBjb25zdCB7IEs6IGtleXMgPSBbXSwgUDogcG9pbnRlcnMgPSBbXSwgXzogdmFsdWVzIH0gPSBjb21wcmVzc2VkXG4gIGNvbnN0IHN0cmluZ1ZhbHVlRm9yID0gKHZhbHVlKSA9PiB7XG4gICAgaWYoZGF0ZUNvbnZlcnRlci5pc0RhdGVTdHJpbmcodmFsdWUpKXtcbiAgICAgIHJldHVybiBkYXRlQ29udmVydGVyLmZyb21TdHJpbmcodmFsdWUpXG4gICAgfVxuICAgIGlmIChzdHJpbmdDb252ZXJ0ZXIuaXNQb2ludGVyKHZhbHVlKSkge1xuICAgICAgY29uc3QgaW5kZXggPSBzdHJpbmdDb252ZXJ0ZXIuZnJvbVBvaW50ZXIodmFsdWUpXG4gICAgICByZXR1cm4gcG9pbnRlcnNbaW5kZXhdXG4gICAgfVxuICAgIHJldHVybiBzdHJpbmdDb252ZXJ0ZXIuZnJvbUVzY2FwZWQodmFsdWUpXG4gIH1cbiAgY29uc3QgY29udmVydCA9ICh2YWx1ZXMsIHsga2V5UGF0aCA9ICcnIH0gPSB7fSkgPT4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlcykpIHtcbiAgICAgIHJldHVybiB2YWx1ZXMubWFwKCh2LCBpKSA9PiBjb252ZXJ0KHYsIHsga2V5UGF0aDogW2tleVBhdGgsIGldLmpvaW4oJy8nKSB9KSlcbiAgICB9XG4gICAgaWYgKHZhbHVlcyA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgc3dpdGNoICh0eXBlb2YgdmFsdWVzKSB7XG4gICAgICBjYXNlICd1bmRlZmluZWQnOiB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgY2FzZSAnZnVuY3Rpb24nOlxuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgY2FzZSAnb2JqZWN0Jzoge1xuICAgICAgICBjb25zdCBkZWNvbXByZXNzZWQgPSB7fVxuICAgICAgICBjb25zdCBzaG9ydEtleXMgPSBPYmplY3Qua2V5cyh2YWx1ZXMpXG4gICAgICAgIGZvciAoY29uc3Qgc2hvcnRLZXkgb2Ygc2hvcnRLZXlzKSB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSB2YWx1ZXNbc2hvcnRLZXldXG4gICAgICAgICAgY29uc3Qga2V5ID0ga2V5c1twYXJzZUludChzaG9ydEtleSwgMzYpXVxuICAgICAgICAgIGRlY29tcHJlc3NlZFtrZXldID0gY29udmVydCh2YWx1ZSwgeyBrZXlQYXRoOiBba2V5UGF0aCwgc2hvcnRLZXldLmpvaW4oJy8nKSB9KVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkZWNvbXByZXNzZWRcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgIHJldHVybiBzdHJpbmdWYWx1ZUZvcih2YWx1ZXMsIGtleVBhdGgpXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdmFsdWVzXG4gICAgfVxuICB9XG4gIHJldHVybiBjb252ZXJ0KHZhbHVlcylcbn1cblxuZGVjb21wcmVzcy5mcm9tU3RyaW5nID0gZnVuY3Rpb24gZGVjb21wcmVzc0Zyb21TdHJpbmcgKGNvbXByZXNzZWRTdHJpbmcpIHtcbiAgcmV0dXJuIGRlY29tcHJlc3MoSlNPTi5wYXJzZShjb21wcmVzc2VkU3RyaW5nKSlcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBkZWNvbXByZXNzXG4iXX0=

@@ -36,3 +36,5 @@ /**

n: 'p:143243',
j: 'e:3'
j: 'e:3',
d: new Date('2019/09/09'),
d2: 'd:1567954800000'
})

@@ -55,2 +57,8 @@ ok(compressed)

equal(restored.j, 'e:3')
equal(
restored.d - new Date('2019/09/09'),
0
)
ok(restored.d instanceof Date)
equal(restored.d2, 'd:1567954800000')
})

@@ -57,0 +65,0 @@

Sorry, the diff of this file is not supported yet