zkjson 0.6.4 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/cjs/circomlibjs.js +149 -0
  2. package/cjs/collection.js +196 -0
  3. package/cjs/db.js +731 -0
  4. package/cjs/doc.js +132 -0
  5. package/cjs/encoder-v1_5.js +1731 -0
  6. package/cjs/encoder.js +668 -0
  7. package/cjs/index.js +64 -0
  8. package/cjs/json.js +54 -0
  9. package/cjs/nft.js +165 -0
  10. package/cjs/parse.js +256 -0
  11. package/cjs/uint.js +580 -0
  12. package/{circomlibjs.js → esm/circomlibjs.js} +27 -35
  13. package/{collection.js → esm/collection.js} +4 -6
  14. package/{db.js → esm/db.js} +8 -10
  15. package/{doc.js → esm/doc.js} +7 -7
  16. package/{encoder-v1_5.js → esm/encoder-v1_5.js} +3 -3
  17. package/{encoder.js → esm/encoder.js} +2 -2
  18. package/esm/index.js +7 -0
  19. package/{json.js → esm/json.js} +2 -2
  20. package/{nft.js → esm/nft.js} +7 -7
  21. package/esm/package.json +3 -0
  22. package/{parse.js → esm/parse.js} +4 -4
  23. package/{uint.js → esm/uint.js} +1 -1
  24. package/package.json +21 -5
  25. package/index.js +0 -6
  26. /package/{contracts → esm/contracts}/NORollup.sol +0 -0
  27. /package/{contracts → esm/contracts}/OPRollup.sol +0 -0
  28. /package/{contracts → esm/contracts}/ZKIPFS.sol +0 -0
  29. /package/{contracts → esm/contracts}/ZKJson.sol +0 -0
  30. /package/{contracts → esm/contracts}/ZKQuery.sol +0 -0
  31. /package/{contracts → esm/contracts}/ZKRollup.sol +0 -0
  32. /package/{contracts → esm/contracts}/apps/SimpleJSON.sol +0 -0
  33. /package/{contracts → esm/contracts}/apps/SimpleOPRU.sol +0 -0
  34. /package/{contracts → esm/contracts}/apps/SimpleRU.sol +0 -0
  35. /package/{contracts → esm/contracts}/apps/Token.sol +0 -0
  36. /package/{contracts → esm/contracts}/apps/ZKArweave.sol +0 -0
  37. /package/{contracts → esm/contracts}/apps/ZKBridge.sol +0 -0
  38. /package/{contracts → esm/contracts}/apps/ZKNFT.sol +0 -0
  39. /package/{contracts → esm/contracts}/verifiers/verifier_db.sol +0 -0
  40. /package/{contracts → esm/contracts}/verifiers/verifier_ipfs.sol +0 -0
  41. /package/{contracts → esm/contracts}/verifiers/verifier_json.sol +0 -0
  42. /package/{contracts → esm/contracts}/verifiers/verifier_rollup.sol +0 -0
@@ -0,0 +1,1731 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports._encode = _encode;
7
+ exports.compress = compress;
8
+ exports.decode = decode;
9
+ exports.decodePath = decodePath;
10
+ exports.decodeQuery = decodeQuery;
11
+ exports.decodeVal = decodeVal;
12
+ exports.decompress = decompress;
13
+ exports.encode = encode;
14
+ exports.encodePath = encodePath;
15
+ exports.encodeQuery = encodeQuery;
16
+ exports.encodeVal = encodeVal;
17
+ exports.flattenPath = flattenPath;
18
+ exports.from128 = from128;
19
+ exports.from128s = from128s;
20
+ exports.fromIndex = void 0;
21
+ exports.fromSignal = fromSignal;
22
+ exports.fromUint8 = fromUint8;
23
+ exports.get = void 0;
24
+ exports.pad = pad;
25
+ exports.query = exports.path = void 0;
26
+ exports.to128 = to128;
27
+ exports.to128s = to128s;
28
+ exports.toIndex = void 0;
29
+ exports.toSignal = toSignal;
30
+ exports.toUint8 = toUint8;
31
+ exports.val = void 0;
32
+ var _ramda = require("ramda");
33
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
34
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
35
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
36
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
37
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
38
+ function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
39
+ function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
40
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
41
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
42
+ function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
43
+ function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
44
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
45
+ function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
46
+ function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
47
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
48
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
49
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
50
+ var ops = {
51
+ $eq: 10,
52
+ $ne: 11,
53
+ $gt: 12,
54
+ $gte: 13,
55
+ $lt: 14,
56
+ $lte: 15,
57
+ $in: 16,
58
+ $nin: 17,
59
+ $contains: 18,
60
+ $contains_any: 19,
61
+ $contains_all: 20,
62
+ $contains_none: 21
63
+ };
64
+ var opMap = {};
65
+ for (var k in ops) opMap[ops[k]] = k;
66
+ var base64Map = {
67
+ A: "00",
68
+ B: "01",
69
+ C: "02",
70
+ D: "03",
71
+ E: "04",
72
+ F: "05",
73
+ G: "06",
74
+ H: "07",
75
+ I: "08",
76
+ J: "09",
77
+ K: "10",
78
+ L: "11",
79
+ M: "12",
80
+ N: "13",
81
+ O: "14",
82
+ P: "15",
83
+ Q: "16",
84
+ R: "17",
85
+ S: "18",
86
+ T: "19",
87
+ U: "20",
88
+ V: "21",
89
+ W: "22",
90
+ X: "23",
91
+ Y: "24",
92
+ Z: "25",
93
+ a: "26",
94
+ b: "27",
95
+ c: "28",
96
+ d: "29",
97
+ e: "30",
98
+ f: "31",
99
+ g: "32",
100
+ h: "33",
101
+ i: "34",
102
+ j: "35",
103
+ k: "36",
104
+ l: "37",
105
+ m: "38",
106
+ n: "39",
107
+ o: "40",
108
+ p: "41",
109
+ q: "42",
110
+ r: "43",
111
+ s: "44",
112
+ t: "45",
113
+ u: "46",
114
+ v: "47",
115
+ w: "48",
116
+ x: "49",
117
+ y: "50",
118
+ z: "51",
119
+ 0: "52",
120
+ 1: "53",
121
+ 2: "54",
122
+ 3: "55",
123
+ 4: "56",
124
+ 5: "57",
125
+ 6: "58",
126
+ 7: "59",
127
+ 8: "60",
128
+ 9: "61",
129
+ "-": "62",
130
+ _: "63"
131
+ };
132
+ var strMap = {};
133
+ for (var _k in base64Map) strMap[base64Map[_k]] = _k;
134
+ function pad(arr) {
135
+ var max = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
136
+ arr = arr.map(function (n) {
137
+ return n.toString();
138
+ });
139
+ for (var i = arr.length; i < max; i++) {
140
+ arr.push("0");
141
+ }
142
+ return arr;
143
+ }
144
+ function encodePath(path) {
145
+ var parts = [];
146
+ var str = "";
147
+ var num = 0;
148
+ var _iterator = _createForOfIteratorHelper(path),
149
+ _step;
150
+ try {
151
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
152
+ var s = _step.value;
153
+ if (num == 2 && !(s == "." || s == "[")) throw Error();
154
+ if (s == ".") {
155
+ if (num == 2) {
156
+ num = 0;
157
+ } else {
158
+ parts.push(str);
159
+ str = "";
160
+ }
161
+ } else if (s == "[") {
162
+ if (num != 2) {
163
+ if (str != "" || parts.length > 0) parts.push(str);
164
+ str = "";
165
+ }
166
+ num = 1;
167
+ } else if (s == "]") {
168
+ if (num != 1) throw Error();
169
+ num = 2;
170
+ if (str == "" || Number.isNaN(+str)) throw Error();
171
+ parts.push(+str);
172
+ str = "";
173
+ } else {
174
+ str += s;
175
+ }
176
+ }
177
+ } catch (err) {
178
+ _iterator.e(err);
179
+ } finally {
180
+ _iterator.f();
181
+ }
182
+ if (str != "") parts.push(str);
183
+ if (parts.length == 0) parts.push("");
184
+ var encoded = [parts.length];
185
+ for (var _i = 0, _parts = parts; _i < _parts.length; _i++) {
186
+ var p = _parts[_i];
187
+ if (typeof p == "number") {
188
+ encoded = encoded.concat([0, 0, p]);
189
+ } else {
190
+ var plen = [p.length];
191
+ if (p.length == 0) plen.push(1);
192
+ encoded = encoded.concat([].concat(plen, _toConsumableArray(p.split("").map(function (c) {
193
+ return c.charCodeAt(0);
194
+ }))));
195
+ }
196
+ }
197
+ return encoded;
198
+ }
199
+ function decodePath(path) {
200
+ var str = "";
201
+ var p = [];
202
+ var len = path.shift();
203
+ while (path.length > 0) {
204
+ var type = path.shift();
205
+ var _val2 = null;
206
+ if (type == 0) {
207
+ var type2 = path.shift();
208
+ if (type2 == 0) {
209
+ _val2 = [type2, path.shift()];
210
+ } else {
211
+ _val2 = [type2];
212
+ }
213
+ } else {
214
+ _val2 = [];
215
+ for (var _i2 = 0; _i2 < type; _i2++) {
216
+ _val2.push(path.shift());
217
+ }
218
+ }
219
+ p.push([type].concat(_toConsumableArray(_val2)));
220
+ }
221
+ var i = 0;
222
+ for (var _i3 = 0, _p = p; _i3 < _p.length; _i3++) {
223
+ var s = _p[_i3];
224
+ if (s[0] == 0 && s[1] == 0) str += "[".concat(s[2], "]");else if (s[0] == 0 && s[1] == 1) {
225
+ if (str != "") str += ".";
226
+ } else {
227
+ str += "".concat(i == 0 ? "" : ".").concat(s.slice(1).map(function (c) {
228
+ return String.fromCharCode(Number(c));
229
+ }).join(""));
230
+ }
231
+ i++;
232
+ }
233
+ return str;
234
+ }
235
+ function flattenPath(path) {
236
+ var p = _toConsumableArray(to128(path.length));
237
+ var _iterator2 = _createForOfIteratorHelper(path),
238
+ _step2;
239
+ try {
240
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
241
+ var v = _step2.value;
242
+ p = p.concat(v);
243
+ }
244
+ } catch (err) {
245
+ _iterator2.e(err);
246
+ } finally {
247
+ _iterator2.f();
248
+ }
249
+ return p;
250
+ }
251
+ var u8 = /*#__PURE__*/_createClass(function u8() {
252
+ var size = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 100;
253
+ _classCallCheck(this, u8);
254
+ this.size = size;
255
+ this.chunks = [new Uint8Array(this.size)];
256
+ this.len = 0;
257
+ });
258
+ function _encode(v) {
259
+ var path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
260
+ var vals = [];
261
+ if (typeof v == "number") vals.push([path, encodeVal(v)]);else if (typeof v == "boolean") vals.push([path, encodeVal(v)]);else if (v == null) vals.push([path, encodeVal(v)]);else if (typeof v == "string") vals.push([path, encodeVal(v)]);else if (Array.isArray(v)) {
262
+ var i = 0;
263
+ var _iterator3 = _createForOfIteratorHelper(v),
264
+ _step3;
265
+ try {
266
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
267
+ var v2 = _step3.value;
268
+ var _iterator4 = _createForOfIteratorHelper(_encode(v2, [].concat(_toConsumableArray(path), [i]))),
269
+ _step4;
270
+ try {
271
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
272
+ var v3 = _step4.value;
273
+ vals.push(v3);
274
+ }
275
+ } catch (err) {
276
+ _iterator4.e(err);
277
+ } finally {
278
+ _iterator4.f();
279
+ }
280
+ i++;
281
+ }
282
+ } catch (err) {
283
+ _iterator3.e(err);
284
+ } finally {
285
+ _iterator3.f();
286
+ }
287
+ } else if (_typeof(v) == "object") {
288
+ for (var _k2 in v) {
289
+ var _iterator5 = _createForOfIteratorHelper(_encode(v[_k2], [].concat(_toConsumableArray(path), [_k2]))),
290
+ _step5;
291
+ try {
292
+ for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
293
+ var v4 = _step5.value;
294
+ vals.push(v4);
295
+ }
296
+ } catch (err) {
297
+ _iterator5.e(err);
298
+ } finally {
299
+ _iterator5.f();
300
+ }
301
+ }
302
+ }
303
+ return vals;
304
+ }
305
+ var filterDic = function filterDic(keys) {
306
+ return keys.filter(function (entry) {
307
+ return entry.count > 1;
308
+ });
309
+ };
310
+ function countKeys(keys) {
311
+ var keys2 = [];
312
+ var _iterator6 = _createForOfIteratorHelper(keys),
313
+ _step6;
314
+ try {
315
+ for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
316
+ var v = _step6.value;
317
+ var i = 0;
318
+ var _iterator7 = _createForOfIteratorHelper(v),
319
+ _step7;
320
+ try {
321
+ for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
322
+ var v2 = _step7.value;
323
+ var _key = v.slice(0, i + 1);
324
+ var exists = false;
325
+ var _iterator8 = _createForOfIteratorHelper(keys2),
326
+ _step8;
327
+ try {
328
+ for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
329
+ var v3 = _step8.value;
330
+ if ((0, _ramda.equals)(_key, v3.key)) {
331
+ v3.count += 1;
332
+ exists = true;
333
+ }
334
+ }
335
+ } catch (err) {
336
+ _iterator8.e(err);
337
+ } finally {
338
+ _iterator8.f();
339
+ }
340
+ if (!exists) keys2.push({
341
+ key: _key,
342
+ count: 1
343
+ });
344
+ i++;
345
+ }
346
+ } catch (err) {
347
+ _iterator7.e(err);
348
+ } finally {
349
+ _iterator7.f();
350
+ }
351
+ }
352
+ } catch (err) {
353
+ _iterator6.e(err);
354
+ } finally {
355
+ _iterator6.f();
356
+ }
357
+ return keys2;
358
+ }
359
+ function sortKeys(keys) {
360
+ return keys.sort(function (a, b) {
361
+ if (b.count !== a.count) return b.count - a.count;
362
+ for (var i = 0; i < Math.min(a.key.length, b.key.length); i++) {
363
+ var aVal = a.key[i];
364
+ var bVal = b.key[i];
365
+ if (typeof aVal === "number" && typeof bVal === "string") return -1;
366
+ if (typeof aVal === "string" && typeof bVal === "number") return 1;
367
+ if (aVal < bVal) return -1;
368
+ if (aVal > bVal) return 1;
369
+ }
370
+ return a.key.length - b.key.length;
371
+ });
372
+ }
373
+ function buildDic(data) {
374
+ // --- Step 1. (Optional) Save original input order if needed.
375
+ data.forEach(function (entry, idx) {
376
+ return entry._origIdx = idx;
377
+ });
378
+
379
+ // --- Step 2. Sort the data in "dictionary order."
380
+ // Primary: by key array length (shorter arrays come first).
381
+ // Secondary: for keys of equal length, by the total character length (ascending)
382
+ // so that, for example, ["jane"] (4 chars) comes before ["alice"] (5 chars).
383
+ // Tertiary: if still equal, compare element-by-element using natural order.
384
+ data.sort(function (a, b) {
385
+ var keyA = a.key;
386
+ var keyB = b.key;
387
+
388
+ // Primary: Compare array lengths.
389
+ if (keyA.length !== keyB.length) return keyA.length - keyB.length;
390
+
391
+ // Secondary: Compare total character lengths (ascending).
392
+ var totalA = keyA.reduce(function (acc, x) {
393
+ return acc + x.toString().length;
394
+ }, 0);
395
+ var totalB = keyB.reduce(function (acc, x) {
396
+ return acc + x.toString().length;
397
+ }, 0);
398
+ if (totalA !== totalB) return totalA - totalB;
399
+ // Tertiary: Compare element-by-element using natural order.
400
+ for (var i = 0; i < keyA.length; i++) {
401
+ var elA = keyA[i];
402
+ var elB = keyB[i];
403
+ if (_typeof(elA) === _typeof(elB)) {
404
+ if (typeof elA === "number") {
405
+ if (elA !== elB) return elA - elB;
406
+ } else if (typeof elA === "string") {
407
+ var cmp = elA.localeCompare(elB, undefined, {
408
+ numeric: true
409
+ });
410
+ if (cmp !== 0) return cmp;
411
+ } else {
412
+ // Fallback: compare string representations.
413
+ var _cmp = elA.toString().localeCompare(elB.toString(), undefined, {
414
+ numeric: true
415
+ });
416
+ if (_cmp !== 0) return _cmp;
417
+ }
418
+ } else {
419
+ // If types differ, compare string representations.
420
+ var _cmp2 = elA.toString().localeCompare(elB.toString(), undefined, {
421
+ numeric: true
422
+ });
423
+ if (_cmp2 !== 0) return _cmp2;
424
+ }
425
+ }
426
+ return 0;
427
+ });
428
+
429
+ // --- Step 3. Build the dictionary.
430
+ // Each dictionary entry will be stored as an object with:
431
+ // - original: the original key (an array)
432
+ // - compressed: the computed compressed representation.
433
+ var dict = [];
434
+
435
+ // Helper: For a given string, look for a previously defined simple key (an array of length 1).
436
+ function getPointerIndex(str) {
437
+ for (var i = 0; i < dict.length; i++) {
438
+ if (dict[i].original.length === 1 && dict[i].original[0] === str) return i;
439
+ }
440
+ return -1;
441
+ }
442
+
443
+ // Helper: Element-by-element compression.
444
+ // For each element in a composite key, if it is a string that already exists as a simple key,
445
+ // replace one or more consecutive occurrences with a pointer.
446
+ // A single occurrence becomes [dictIndex]; a group becomes [dictIndex, 0].
447
+ function compressElementByElement(key) {
448
+ var rep = [];
449
+ var i = 0;
450
+ while (i < key.length) {
451
+ var el = key[i];
452
+ if (typeof el === "string") {
453
+ var ptrIndex = getPointerIndex(el);
454
+ if (ptrIndex !== -1) {
455
+ var j = i;
456
+ while (j < key.length && key[j] === el) {
457
+ j++;
458
+ }
459
+ var groupLen = j - i;
460
+ rep.push(groupLen === 1 ? [ptrIndex] : [ptrIndex, 0]);
461
+ i = j;
462
+ continue;
463
+ }
464
+ }
465
+ rep.push(el);
466
+ i++;
467
+ }
468
+ return rep;
469
+ }
470
+
471
+ // Helper: Compute a "cost" for a given representation.
472
+ // Each literal (number or string) counts as 1; a pointer array counts as the number of numbers it holds.
473
+ function computeCost(rep) {
474
+ var cost = 0;
475
+ var _iterator9 = _createForOfIteratorHelper(rep),
476
+ _step9;
477
+ try {
478
+ for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
479
+ var token = _step9.value;
480
+ cost += Array.isArray(token) ? token.length : 1;
481
+ }
482
+ } catch (err) {
483
+ _iterator9.e(err);
484
+ } finally {
485
+ _iterator9.f();
486
+ }
487
+ return cost;
488
+ }
489
+
490
+ // Helper: Full segmentation compression.
491
+ // Try to segment the entire key as a concatenation of one or more previously defined dictionary entries.
492
+ // Uses dynamic programming over the key array.
493
+ // Returns an object { cost, seg } where seg is an array of dictionary indices.
494
+ function segmentKey(key) {
495
+ var n = key.length;
496
+ var dp = Array(n + 1).fill(null);
497
+ dp[n] = {
498
+ cost: 0,
499
+ seg: []
500
+ };
501
+ for (var i = n - 1; i >= 0; i--) {
502
+ var best = null;
503
+ // Try every dictionary entry.
504
+ for (var d = 0; d < dict.length; d++) {
505
+ var candidate = dict[d].original;
506
+ var m = candidate.length;
507
+ if (i + m <= n) {
508
+ var match = true;
509
+ for (var _k3 = 0; _k3 < m; _k3++) {
510
+ if (key[i + _k3] !== candidate[_k3]) {
511
+ match = false;
512
+ break;
513
+ }
514
+ }
515
+ if (match && dp[i + m] !== null) {
516
+ var candidateCost = 1 + dp[i + m].cost; // cost 1 for using this pointer.
517
+ if (best === null || candidateCost < best.cost) {
518
+ best = {
519
+ cost: candidateCost,
520
+ seg: [d].concat(dp[i + m].seg)
521
+ };
522
+ }
523
+ }
524
+ }
525
+ }
526
+ dp[i] = best;
527
+ }
528
+ return dp[0];
529
+ }
530
+
531
+ // Process each entry (in the sorted, deterministic order).
532
+ var _iterator0 = _createForOfIteratorHelper(data),
533
+ _step0;
534
+ try {
535
+ for (_iterator0.s(); !(_step0 = _iterator0.n()).done;) {
536
+ var entry = _step0.value;
537
+ var key = entry.key;
538
+ var compressed = void 0;
539
+ if (key.length === 1) {
540
+ // For simple keys, copy as-is.
541
+ compressed = key.slice();
542
+ } else {
543
+ // Try element-by-element compression.
544
+ var repA = compressElementByElement(key);
545
+ var bestCost = computeCost(repA);
546
+ var bestRep = repA;
547
+
548
+ // Also try full segmentation over the entire key.
549
+ var segRes = segmentKey(key);
550
+ if (segRes !== null) {
551
+ var repB = [segRes.seg]; // Represent segmentation as a pointer.
552
+ var costB = segRes.cost;
553
+ if (costB < bestCost) {
554
+ bestCost = costB;
555
+ bestRep = repB;
556
+ }
557
+ }
558
+
559
+ // Now try partial segmentation: try segmenting a prefix and then appending the literal remainder.
560
+ var n = key.length;
561
+ for (var i = 1; i < n; i++) {
562
+ var prefixSeg = segmentKey(key.slice(0, i));
563
+ if (prefixSeg !== null) {
564
+ var literalPart = key.slice(i);
565
+ var candidateCost = prefixSeg.cost + computeCost(literalPart);
566
+ if (candidateCost < bestCost) {
567
+ bestCost = candidateCost;
568
+ // Build candidate representation: pointer for the segmented prefix followed by literal remainder.
569
+ bestRep = [prefixSeg.seg].concat(literalPart);
570
+ }
571
+ }
572
+ }
573
+ compressed = bestRep;
574
+ }
575
+ dict.push({
576
+ original: key,
577
+ compressed: compressed
578
+ });
579
+ }
580
+
581
+ // --- Step 4. Return the dictionary and key map.
582
+ // "dictionary" is an array of compressed keys.
583
+ // "keyMap" is the array of original keys (in the same, deterministic order).
584
+ } catch (err) {
585
+ _iterator0.e(err);
586
+ } finally {
587
+ _iterator0.f();
588
+ }
589
+ return {
590
+ dictionary: dict.map(function (entry) {
591
+ return entry.compressed.length === 1 && !(0, _ramda.is)(Array, entry.compressed[0]) ? entry.compressed[0] : entry.compressed;
592
+ }),
593
+ keyMap: dict.map(function (entry) {
594
+ return entry.original;
595
+ })
596
+ };
597
+ }
598
+ var genDic = (0, _ramda.compose)(buildDic, filterDic, sortKeys, countKeys, listKeys);
599
+ function listKeys(v) {
600
+ var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
601
+ var keys = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
602
+ if (Array.isArray(v)) {
603
+ var i = 0;
604
+ var _iterator1 = _createForOfIteratorHelper(v),
605
+ _step1;
606
+ try {
607
+ for (_iterator1.s(); !(_step1 = _iterator1.n()).done;) {
608
+ var v2 = _step1.value;
609
+ listKeys(v2, (0, _ramda.append)(i, key), keys);
610
+ i++;
611
+ }
612
+ } catch (err) {
613
+ _iterator1.e(err);
614
+ } finally {
615
+ _iterator1.f();
616
+ }
617
+ } else if (_typeof(v) === "object" && v !== null) {
618
+ for (var _k4 in v) listKeys(v[_k4], (0, _ramda.append)(_k4, key), keys);
619
+ } else {
620
+ keys.push(key);
621
+ }
622
+ return keys;
623
+ }
624
+ function isPrefix(path, prefix) {
625
+ if (prefix.length > path.length) return false;
626
+ for (var i = 0; i < prefix.length; i++) {
627
+ if (!(0, _ramda.equals)(path[i], prefix[i])) return false;
628
+ }
629
+ return true;
630
+ }
631
+ function applyDicToPath(path, sortedDic) {
632
+ // Base case: if the path is empty, nothing to replace.
633
+ if (path.length === 0) return [];
634
+ // Iterate over the dictionary entries in descending order.
635
+ var _iterator10 = _createForOfIteratorHelper(sortedDic),
636
+ _step10;
637
+ try {
638
+ for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {
639
+ var _step10$value = _step10.value,
640
+ entry = _step10$value.entry,
641
+ index = _step10$value.index;
642
+ if (isPrefix(path, entry)) {
643
+ // Found a match: remove the matched prefix.
644
+ var remainder = path.slice(entry.length);
645
+ // Recursively apply dictionary replacement on the remainder.
646
+ var replacedRemainder = applyDicToPath(remainder, sortedDic);
647
+ // If the remainder is completely replaced (i.e. replacedRemainder is a single dictionary reference array),
648
+ // then merge the current dictionary index with that.
649
+ if (replacedRemainder.length === 0) {
650
+ // No remainder: simply return the dictionary reference.
651
+ return [[index]];
652
+ }
653
+ if (Array.isArray(replacedRemainder[0])) {
654
+ // The first component is already a dictionary reference: merge the indices.
655
+ return [[index].concat(_toConsumableArray(replacedRemainder[0]))];
656
+ } else {
657
+ // Otherwise, return the dictionary reference for the prefix and then the literal remainder.
658
+ return [[index]].concat(replacedRemainder);
659
+ }
660
+ }
661
+ }
662
+ // If no dictionary entry applies, return the original literal path.
663
+ } catch (err) {
664
+ _iterator10.e(err);
665
+ } finally {
666
+ _iterator10.f();
667
+ }
668
+ return path;
669
+ }
670
+ function applyDic(arr, dic) {
671
+ // Build sorted dictionary entries in descending order by length.
672
+ var sortedDic = dic.map(function (entry, index) {
673
+ return {
674
+ entry: entry,
675
+ index: index
676
+ };
677
+ }).sort(function (a, b) {
678
+ return b.entry.length - a.entry.length;
679
+ });
680
+ // For each pair, apply dictionary replacement to the path.
681
+ return arr.map(function (pair) {
682
+ var newPath = applyDicToPath(pair[0], sortedDic);
683
+ return [newPath, pair[1]];
684
+ });
685
+ }
686
+ function encodePaths(data) {
687
+ var index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
688
+ var i = 0;
689
+ var _iterator11 = _createForOfIteratorHelper(data),
690
+ _step11;
691
+ try {
692
+ for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {
693
+ var v = _step11.value;
694
+ var _path = [];
695
+ var _iterator12 = _createForOfIteratorHelper(v[0]),
696
+ _step12;
697
+ try {
698
+ for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {
699
+ var v2 = _step12.value;
700
+ if ((0, _ramda.is)(Number, v2)) {
701
+ _path.push([0, 0].concat(_toConsumableArray(to128(v2))));
702
+ } else if ((0, _ramda.is)(String, v2)) {
703
+ var key = v2.split("").map(function (c) {
704
+ return c.charCodeAt(0);
705
+ });
706
+ var _k5 = [];
707
+ push(_k5, [key.length].concat(_toConsumableArray(key.length == 0 ? [1] : key)));
708
+ _path.push(_k5);
709
+ } else if ((0, _ramda.is)(Array, v2)) {
710
+ if (v2.length === 1) _path.push([0, 3].concat(_toConsumableArray(to128(v2[0]))));else _path.push([0, 4].concat(_toConsumableArray(to128(v2.length)), _toConsumableArray(to128s(v2))));
711
+ }
712
+ }
713
+ } catch (err) {
714
+ _iterator12.e(err);
715
+ } finally {
716
+ _iterator12.f();
717
+ }
718
+ v[0] = _path;
719
+ if (index) v.push(i);
720
+ i++;
721
+ }
722
+ } catch (err) {
723
+ _iterator11.e(err);
724
+ } finally {
725
+ _iterator11.f();
726
+ }
727
+ return data;
728
+ }
729
+ function mapDic(dic, len) {
730
+ var _map = [];
731
+ while (dic.length > 0) {
732
+ var dlen = shift(dic);
733
+ var _elms = [];
734
+ while (dlen > 0) {
735
+ var type = dic.shift();
736
+ var elms = [];
737
+ if (type == 7) {
738
+ var slen = shift(dic);
739
+ elms.push(slen);
740
+ for (var i = 0; i < slen; i++) elms.push(shift(dic));
741
+ _elms.push(elms);
742
+ } else if (type == 3) {
743
+ elms = (0, _ramda.concat)(elms, [0, 0, shift(dic)]);
744
+ _elms.push(elms);
745
+ } else if (type == 9) {
746
+ var _iterator13 = _createForOfIteratorHelper(_map[shift(dic)]),
747
+ _step13;
748
+ try {
749
+ for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {
750
+ var v2 = _step13.value;
751
+ _elms.push(v2);
752
+ }
753
+ } catch (err) {
754
+ _iterator13.e(err);
755
+ } finally {
756
+ _iterator13.f();
757
+ }
758
+ }
759
+ dlen--;
760
+ }
761
+ _map.push(_elms);
762
+ if (_map.length === len) break;
763
+ }
764
+ return _map;
765
+ }
766
+ function encodeDic(dict) {
767
+ var enc = [];
768
+ var offsets = [];
769
+ var i = 0;
770
+ var _iterator14 = _createForOfIteratorHelper(dict),
771
+ _step14;
772
+ try {
773
+ for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) {
774
+ var v = _step14.value;
775
+ var len = 1;
776
+ var elms = [];
777
+ if (!(0, _ramda.is)(String, v)) {
778
+ len = 0;
779
+ var _iterator15 = _createForOfIteratorHelper(v),
780
+ _step15;
781
+ try {
782
+ for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {
783
+ var v2 = _step15.value;
784
+ if ((0, _ramda.is)(Array, v2)) {
785
+ len += v2.length;
786
+ var _iterator16 = _createForOfIteratorHelper(v2),
787
+ _step16;
788
+ try {
789
+ for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) {
790
+ var v3 = _step16.value;
791
+ push(elms, [9, v3]);
792
+ }
793
+ } catch (err) {
794
+ _iterator16.e(err);
795
+ } finally {
796
+ _iterator16.f();
797
+ }
798
+ } else {
799
+ len += 1;
800
+ if ((0, _ramda.is)(String, v2)) {
801
+ elms.push(7);
802
+ push(elms, v2.length);
803
+ push(elms, v2.split("").map(function (c) {
804
+ return c.charCodeAt(0);
805
+ }));
806
+ } else {
807
+ push(elms, [3, v2]);
808
+ }
809
+ }
810
+ }
811
+ } catch (err) {
812
+ _iterator15.e(err);
813
+ } finally {
814
+ _iterator15.f();
815
+ }
816
+ } else {
817
+ elms.push(7);
818
+ push(elms, v.length);
819
+ push(elms, v.split("").map(function (c) {
820
+ return c.charCodeAt(0);
821
+ }));
822
+ }
823
+ var _elms = [].concat(_toConsumableArray(to128(len)), elms);
824
+ push(offsets, _elms.length);
825
+ enc = (0, _ramda.concat)(enc, _elms);
826
+ i++;
827
+ }
828
+ } catch (err) {
829
+ _iterator14.e(err);
830
+ } finally {
831
+ _iterator14.f();
832
+ }
833
+ return {
834
+ offsets: offsets,
835
+ enc: enc
836
+ };
837
+ }
838
+ var addDicPos = function addDicPos(ret) {
839
+ var dic_pos0 = to128(ret.length + 1);
840
+ var dic_pos = ret.length + dic_pos0.length;
841
+ var dic_pos2 = to128(dic_pos);
842
+ if (dic_pos0.length !== dic_pos2.length) dic_pos += 1;
843
+ unshift(ret, dic_pos); // if length > 256 offset changes
844
+ };
845
+ var sortEnc = function sortEnc(enc, sort) {
846
+ if (!sort) return null;else {
847
+ var _enc = (0, _ramda.clone)(enc);
848
+ _enc = encodePaths(_enc, true);
849
+ _enc.sort(function (a, b) {
850
+ var isUndefined = function isUndefined(v) {
851
+ return typeof v == "undefined";
852
+ };
853
+ var max = Math.max(a[0].length, b[0].length);
854
+ if (max > 0) {
855
+ for (var i = 1; i < max; i++) {
856
+ var exA = !isUndefined(a[0][i]);
857
+ var exB = !isUndefined(b[0][i]);
858
+ if (exA && !exB) return 1;
859
+ if (!exA && exB) return -1;
860
+ var max2 = Math.max(a[0][i].length, b[0][i].length);
861
+ if (max2 > 0) {
862
+ for (var i2 = 0; i2 < max2; i2++) {
863
+ var vA = a[0][i][i2];
864
+ var vB = b[0][i][i2];
865
+ var _exA = !isUndefined(vA);
866
+ var _exB = !isUndefined(vB);
867
+ if (_exA && !_exB) return 1;
868
+ if (!_exA && _exB) return -1;
869
+ if (vA > vB) return 1;
870
+ if (vA < vB) return -1;
871
+ }
872
+ }
873
+ }
874
+ }
875
+ return 0;
876
+ });
877
+ return _enc;
878
+ }
879
+ };
880
+ var getDic = function getDic(json, enc, dict) {
881
+ var dic = null;
882
+ var dic_offsets = null;
883
+ var diclen = 0;
884
+ if (dict) {
885
+ var dictionary = [];
886
+ var keyMap;
887
+ var _genDic = genDic(json);
888
+ dictionary = _genDic.dictionary;
889
+ keyMap = _genDic.keyMap;
890
+ if (dictionary.length > 0) {
891
+ ;
892
+ var _encodeDic = encodeDic(dictionary);
893
+ dic = _encodeDic.enc;
894
+ dic_offsets = _encodeDic.offsets;
895
+ }
896
+ if (dic) enc = applyDic(enc, keyMap);
897
+ diclen = dictionary.length;
898
+ }
899
+ return {
900
+ dic_offsets: dic_offsets,
901
+ diclen: diclen,
902
+ dic: dic,
903
+ enc: enc
904
+ };
905
+ };
906
+ function encode(json) {
907
+ var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
908
+ _ref$dict = _ref.dict,
909
+ dict = _ref$dict === void 0 ? true : _ref$dict,
910
+ _ref$offset = _ref.offset,
911
+ offset = _ref$offset === void 0 ? true : _ref$offset,
912
+ _ref$sort = _ref.sort,
913
+ sort = _ref$sort === void 0 ? true : _ref$sort;
914
+ var enc = _encode(json);
915
+ var _enc = sortEnc(enc, sort);
916
+ var _getDic = getDic(json, enc, dict),
917
+ dic_offsets = _getDic.dic_offsets,
918
+ diclen = _getDic.diclen,
919
+ dic = _getDic.dic,
920
+ enc3 = _getDic.enc;
921
+ enc = enc3;
922
+ enc = encodePaths(enc);
923
+ enc = sort ? _enc.map(function (v) {
924
+ return enc[v[2]];
925
+ }) : enc;
926
+
927
+ // build encode
928
+ var ret = (0, _ramda.concat)(dic !== null && dic !== void 0 ? dic : [], enc.reduce(function (arr, v) {
929
+ return arr.concat([].concat(_toConsumableArray(flattenPath(v[0])), _toConsumableArray(v[1])));
930
+ }, []));
931
+ addDicPos(ret);
932
+ if (offset) {
933
+ // add dictionary offsets
934
+ if (diclen > 0) {
935
+ push(ret, diclen);
936
+ var _iterator17 = _createForOfIteratorHelper(dic_offsets),
937
+ _step17;
938
+ try {
939
+ for (_iterator17.s(); !(_step17 = _iterator17.n()).done;) {
940
+ var v = _step17.value;
941
+ push(ret, v);
942
+ }
943
+ } catch (err) {
944
+ _iterator17.e(err);
945
+ } finally {
946
+ _iterator17.f();
947
+ }
948
+ } else ret.push(0);
949
+
950
+ // add offset table
951
+ var _iterator18 = _createForOfIteratorHelper(enc),
952
+ _step18;
953
+ try {
954
+ for (_iterator18.s(); !(_step18 = _iterator18.n()).done;) {
955
+ var _v = _step18.value;
956
+ push(ret, (0, _ramda.flatten)(_v[0]).length + (0, _ramda.flatten)(_v[1]).length + 1);
957
+ }
958
+ } catch (err) {
959
+ _iterator18.e(err);
960
+ } finally {
961
+ _iterator18.f();
962
+ }
963
+ }
964
+ return ret;
965
+ }
966
+ function _decode(arr) {
967
+ var vals = [];
968
+ var dic = [];
969
+ var len = arr.length;
970
+ var _shift = shift(arr, true),
971
+ _shift2 = _slicedToArray(_shift, 2),
972
+ offset = _shift2[0],
973
+ offset_len = _shift2[1];
974
+ var isDic = arr[offset - offset_len];
975
+ if (isDic > 0) dic = mapDic(arr, isDic);
976
+ while (len - offset + 1 < arr.length) {
977
+ var keylen = arr.shift(); // key length
978
+ var keys = [];
979
+ var _val3 = null;
980
+ while (keylen > 0) {
981
+ var plen2 = shift(arr);
982
+ if (plen2 == 0) {
983
+ var plen3 = arr.shift(); // 02 is not used shift 3,4
984
+ if (plen3 == 1) {
985
+ // bare (01)
986
+ keys.push([plen2, plen3]);
987
+ } else if (plen3 == 0) {
988
+ // array (00)
989
+ keys.push([plen2, plen3, shift(arr)]);
990
+ } else if (plen3 == 3) {
991
+ // ref (03)
992
+ var _keys = dic[shift(arr)];
993
+ var _iterator19 = _createForOfIteratorHelper(_keys),
994
+ _step19;
995
+ try {
996
+ for (_iterator19.s(); !(_step19 = _iterator19.n()).done;) {
997
+ var _k6 = _step19.value;
998
+ keys.push(_k6);
999
+ }
1000
+ } catch (err) {
1001
+ _iterator19.e(err);
1002
+ } finally {
1003
+ _iterator19.f();
1004
+ }
1005
+ } else if (plen3 == 4) {
1006
+ // multi refs (04)
1007
+ var key = [];
1008
+ var plen4 = shift(arr);
1009
+ for (var i2 = 0; i2 < plen4; i2++) {
1010
+ var _keys2 = dic[shift(arr)];
1011
+ var _iterator20 = _createForOfIteratorHelper(_keys2),
1012
+ _step20;
1013
+ try {
1014
+ for (_iterator20.s(); !(_step20 = _iterator20.n()).done;) {
1015
+ var _k7 = _step20.value;
1016
+ keys.push(_k7);
1017
+ }
1018
+ } catch (err) {
1019
+ _iterator20.e(err);
1020
+ } finally {
1021
+ _iterator20.f();
1022
+ }
1023
+ }
1024
+ }
1025
+ } else if (plen2 != 0) {
1026
+ // string
1027
+ var _key2 = [];
1028
+ move(arr, _key2, plen2);
1029
+ keys.push([plen2].concat(_key2));
1030
+ }
1031
+ keylen--;
1032
+ }
1033
+ var type = arr.shift();
1034
+ _val3 = [type];
1035
+ if (type == 5 || type == 6) {
1036
+ move(arr, _val3);
1037
+ _val3.push(arr.shift());
1038
+ } else if (type == 3 || type == 4) {
1039
+ move(arr, _val3);
1040
+ } else if (type == 7) {
1041
+ move(arr, _val3);
1042
+ var strlen = _val3[_val3.length - 1];
1043
+ move(arr, _val3, strlen);
1044
+ }
1045
+ vals.push([keys, _val3]);
1046
+ }
1047
+ return vals;
1048
+ }
1049
+
1050
+ // 0: null, 1: true, 2: false, 3: positive integer, 4: negative integer, 5: positive float, 6: negative float, 7: string, 8: object, 9: ref
1051
+
1052
+ function encodeVal(v) {
1053
+ var _vals = new u8();
1054
+ var vals = [];
1055
+ if (typeof v == "number" || typeof v == "bigint") {
1056
+ var _int = Number.isInteger(v);
1057
+ var moved = 0;
1058
+ var num = v;
1059
+ while (num % 1 != 0) {
1060
+ num *= 10;
1061
+ moved += 1;
1062
+ }
1063
+ var type = 3;
1064
+ if (v >= 0) {
1065
+ if (moved > 0) type = 5;
1066
+ } else {
1067
+ if (moved > 0) type = 6;else type = 4;
1068
+ }
1069
+ vals.push(type);
1070
+ if (moved > 0) vals.push(moved);
1071
+ push(vals, v < 0 ? -num : num);
1072
+ } else if (typeof v == "boolean") vals.push(v ? 1 : 2);else if (v == null) vals = [0];else if (typeof v == "string") {
1073
+ vals = [7];
1074
+ push(vals, v.length);
1075
+ var _iterator21 = _createForOfIteratorHelper(v.split("")),
1076
+ _step21;
1077
+ try {
1078
+ for (_iterator21.s(); !(_step21 = _iterator21.n()).done;) {
1079
+ var v2 = _step21.value;
1080
+ push(vals, v2.charCodeAt(0));
1081
+ }
1082
+ } catch (err) {
1083
+ _iterator21.e(err);
1084
+ } finally {
1085
+ _iterator21.f();
1086
+ }
1087
+ } else vals = [8].concat(_toConsumableArray(encode(v)));
1088
+ return vals;
1089
+ }
1090
+ function decodeVal(arr) {
1091
+ if (!(0, _ramda.is)(Array, arr)) return;
1092
+ var type = arr[0];
1093
+ var _val = arr[1];
1094
+ var val = null;
1095
+ if (type == 0) {
1096
+ val = null;
1097
+ } else if (type == 1) {
1098
+ val = true;
1099
+ } else if (type == 2) {
1100
+ val = false;
1101
+ } else if (type == 3) {
1102
+ val = arr[1];
1103
+ } else if (type == 4) {
1104
+ val = arr[1] * -1;
1105
+ } else if (type == 5) {
1106
+ val = arr[2];
1107
+ for (var i = 0; i < arr[1]; i++) {
1108
+ val /= 10;
1109
+ }
1110
+ } else if (type == 6) {
1111
+ val = arr[2] * -1;
1112
+ for (var _i4 = 0; _i4 < arr[1]; _i4++) {
1113
+ val /= 10;
1114
+ }
1115
+ } else if (type == 7) {
1116
+ var _arr = arr.slice(2);
1117
+ val = _arr.map(function (c) {
1118
+ return String.fromCharCode(Number(c));
1119
+ }).join("");
1120
+ } else if (type == 8) {
1121
+ val = decode(arr.slice(1));
1122
+ }
1123
+ return val;
1124
+ }
1125
+ function decode(_arr) {
1126
+ var _decoded$, _decoded$2;
1127
+ var arr = Array.from(_arr);
1128
+ var decoded = _decode(arr);
1129
+ var json = ((_decoded$ = decoded[0]) === null || _decoded$ === void 0 || (_decoded$ = _decoded$[0]) === null || _decoded$ === void 0 || (_decoded$ = _decoded$[0]) === null || _decoded$ === void 0 ? void 0 : _decoded$[0]) == 0 && ((_decoded$2 = decoded[0]) === null || _decoded$2 === void 0 || (_decoded$2 = _decoded$2[0]) === null || _decoded$2 === void 0 || (_decoded$2 = _decoded$2[0]) === null || _decoded$2 === void 0 ? void 0 : _decoded$2[1]) == 0 ? [] : {};
1130
+ var _iterator22 = _createForOfIteratorHelper(decoded),
1131
+ _step22;
1132
+ try {
1133
+ for (_iterator22.s(); !(_step22 = _iterator22.n()).done;) {
1134
+ var v = _step22.value;
1135
+ var keys = v[0].map(function (v2) {
1136
+ if (v2[0] == 0) {
1137
+ if (v2[1] == 1) return "";
1138
+ return v2[2];
1139
+ } else {
1140
+ return v2.slice(1).map(function (c) {
1141
+ return String.fromCharCode(Number(c));
1142
+ }).join("");
1143
+ }
1144
+ });
1145
+ if (keys.length == 0) json = decodeVal(v[1]);else {
1146
+ var obj = json;
1147
+ var i = 0;
1148
+ var _iterator23 = _createForOfIteratorHelper(keys),
1149
+ _step23;
1150
+ try {
1151
+ for (_iterator23.s(); !(_step23 = _iterator23.n()).done;) {
1152
+ var _k8 = _step23.value;
1153
+ if (typeof _k8 == "number") {
1154
+ if (typeof keys[i + 1] == "undefined") {
1155
+ obj[_k8] = decodeVal(v[1]);
1156
+ } else {
1157
+ if (typeof obj[_k8] == "undefined") {
1158
+ if (typeof keys[i + 1] == "string") {
1159
+ obj[_k8] = {};
1160
+ } else {
1161
+ obj[_k8] = [];
1162
+ }
1163
+ }
1164
+ }
1165
+ } else {
1166
+ if (typeof obj[_k8] == "undefined") {
1167
+ if (typeof keys[i + 1] == "undefined") {
1168
+ obj[_k8] = decodeVal(v[1]);
1169
+ } else if (typeof keys[i + 1] == "string") {
1170
+ obj[_k8] = {};
1171
+ } else {
1172
+ obj[_k8] = [];
1173
+ }
1174
+ }
1175
+ }
1176
+ obj = obj[_k8];
1177
+ i++;
1178
+ }
1179
+ } catch (err) {
1180
+ _iterator23.e(err);
1181
+ } finally {
1182
+ _iterator23.f();
1183
+ }
1184
+ }
1185
+ }
1186
+ } catch (err) {
1187
+ _iterator22.e(err);
1188
+ } finally {
1189
+ _iterator22.f();
1190
+ }
1191
+ return json;
1192
+ }
1193
+ var toIndex = exports.toIndex = function toIndex(str) {
1194
+ return "1" + str.split("").map(function (s) {
1195
+ return base64Map[s];
1196
+ }).join("");
1197
+ };
1198
+ var fromIndex = exports.fromIndex = function fromIndex(id) {
1199
+ var _id = id.toString().split("");
1200
+ _id.shift();
1201
+ return (0, _ramda.splitEvery)(2, _id).map(function (s) {
1202
+ return strMap[s.join("")];
1203
+ }).join("");
1204
+ };
1205
+ function toSignal(arr) {
1206
+ var uint_len = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 75;
1207
+ var _arr = (0, _ramda.flatten)(arr.map(function (n) {
1208
+ var str = (0, _ramda.splitEvery)(8, n.toString().split(""));
1209
+ var i = 0;
1210
+ str = str.map(function (s) {
1211
+ var len = i == str.length - 1 ? s.length : 9;
1212
+ i++;
1213
+ return len.toString() + s.join("");
1214
+ });
1215
+ return str;
1216
+ }));
1217
+ var _arr2 = [];
1218
+ var one = 0;
1219
+ var i = 0;
1220
+ var start = null;
1221
+ if (!uint_len) uint_len = _arr * 100;
1222
+ var _iterator24 = _createForOfIteratorHelper(_arr),
1223
+ _step24;
1224
+ try {
1225
+ for (_iterator24.s(); !(_step24 = _iterator24.n()).done;) {
1226
+ var _v3 = _step24.value;
1227
+ _arr2.push(_v3);
1228
+ if (_v3.length - 1 == 1) {
1229
+ if (start == null) start = i;
1230
+ one += _v3.length - 1;
1231
+ if (one == 9) {
1232
+ _arr2[start] = "0".concat(one).concat(_arr2[start][1]);
1233
+ for (var _i7 = start + 1; _i7 <= i; _i7++) _arr2[_i7] = "".concat(_arr2[_i7][1]);
1234
+ one = 0;
1235
+ start = null;
1236
+ }
1237
+ } else {
1238
+ if (one > 2) {
1239
+ _arr2[start] = "0".concat(one).concat(_arr2[start][1]);
1240
+ for (var _i8 = start + 1; _i8 < i; _i8++) _arr2[_i8] = "".concat(_arr2[_i8][1]);
1241
+ }
1242
+ one = 0;
1243
+ start = null;
1244
+ }
1245
+ i++;
1246
+ }
1247
+ } catch (err) {
1248
+ _iterator24.e(err);
1249
+ } finally {
1250
+ _iterator24.f();
1251
+ }
1252
+ if (one > 2) {
1253
+ _arr2[start] = "0".concat(one).concat(_arr2[start][1]);
1254
+ for (var i2 = start + 1; i2 <= i - 1; i2++) _arr2[i2] = "".concat(_arr2[i2][1]);
1255
+ }
1256
+ var _arr3 = [];
1257
+ var chain = null;
1258
+ var cur = 0;
1259
+ var num = "";
1260
+ for (var _i5 = 0, _arr4 = _arr2; _i5 < _arr4.length; _i5++) {
1261
+ var v = _arr4[_i5];
1262
+ if (chain == null && +v[0] == 0) {
1263
+ chain = +v[1];
1264
+ cur = 1;
1265
+ num = v;
1266
+ } else if (chain != null) {
1267
+ num += v;
1268
+ cur++;
1269
+ if (chain == cur) {
1270
+ _arr3.push(num);
1271
+ chain = null;
1272
+ num = "";
1273
+ cur = 0;
1274
+ }
1275
+ } else {
1276
+ _arr3.push(v);
1277
+ }
1278
+ }
1279
+ if (chain != null) _arr3.push(num);
1280
+ var arrs2 = [];
1281
+ var len2 = 0;
1282
+ var str2 = "";
1283
+ for (var _i6 = 0, _arr5 = _arr3; _i6 < _arr5.length; _i6++) {
1284
+ var _v2 = _arr5[_i6];
1285
+ if (len2 + _v2.length > uint_len) {
1286
+ arrs2.push("1" + str2);
1287
+ if (+_v2[0] == 0) {
1288
+ var len3 = uint_len - len2;
1289
+ if (len3 == 2 || len3 == 3) {
1290
+ arrs2[arrs2.length - 1] += "1".concat(_v2[2]);
1291
+ var new_len = +_v2[1] - 1;
1292
+ if (new_len == 2) {
1293
+ _v2 = "1".concat(_v2[3], "1").concat(_v2[4]);
1294
+ } else {
1295
+ _v2 = "0".concat(new_len).concat(_v2.slice(3));
1296
+ }
1297
+ } else if (len3 > 3) {
1298
+ var _new_len = +_v2[1] - 2;
1299
+ var old_len = 2;
1300
+ if (len3 == 4) {
1301
+ arrs2[arrs2.length - 1] += "1".concat(_v2[2], "1").concat(_v2[3]);
1302
+ } else {
1303
+ old_len = len3 - 2;
1304
+ _new_len = +_v2[1] - old_len;
1305
+ arrs2[arrs2.length - 1] += "0".concat(old_len).concat(_v2.slice(2, 2 + old_len));
1306
+ }
1307
+ if (_new_len == 1) {
1308
+ _v2 = "1".concat(_v2[old_len + 2]);
1309
+ } else if (_new_len == 2) {
1310
+ _v2 = "1".concat(_v2[old_len + 2], "1").concat(_v2[old_len + 3]);
1311
+ } else {
1312
+ _v2 = "0".concat(_new_len).concat(_v2.slice(old_len + 2));
1313
+ }
1314
+ }
1315
+ }
1316
+ len2 = 0;
1317
+ str2 = "";
1318
+ }
1319
+ len2 += _v2.length;
1320
+ str2 += _v2;
1321
+ }
1322
+ if (str2 != "") arrs2.push("1" + str2);
1323
+ return arrs2;
1324
+ }
1325
+ function fromSignal(arr) {
1326
+ var _arr = [];
1327
+ var prev = "";
1328
+ var _iterator25 = _createForOfIteratorHelper(arr),
1329
+ _step25;
1330
+ try {
1331
+ for (_iterator25.s(); !(_step25 = _iterator25.n()).done;) {
1332
+ var s = _step25.value;
1333
+ s = s.slice(1);
1334
+ var str = s.split("");
1335
+ while (str.length > 0) {
1336
+ var len = +str.shift();
1337
+ if (len == 0) {
1338
+ var len2 = +str.shift();
1339
+ for (var i2 = 0; i2 < len2; i2++) {
1340
+ _arr.push(+str[i2]);
1341
+ }
1342
+ str = str.slice(len2);
1343
+ } else if (len == 9) {
1344
+ prev += str.slice(0, 8).join("");
1345
+ str = str.slice(8);
1346
+ } else {
1347
+ var nums = str.slice(0, len).join("");
1348
+ str = str.slice(len);
1349
+ _arr.push(+(prev + nums));
1350
+ prev = "";
1351
+ }
1352
+ }
1353
+ }
1354
+ } catch (err) {
1355
+ _iterator25.e(err);
1356
+ } finally {
1357
+ _iterator25.f();
1358
+ }
1359
+ return _arr;
1360
+ }
1361
+ var path = exports.path = function path(p) {
1362
+ return toSignal(encodePath(p));
1363
+ };
1364
+ var val = exports.val = function val(v) {
1365
+ return toSignal(encodeVal(v));
1366
+ };
1367
+ var query = exports.query = function query(v) {
1368
+ return toSignal(encodeQuery(v));
1369
+ };
1370
+ function encodeQuery(v) {
1371
+ if (!Array.isArray(v)) throw Error("query must be an array");
1372
+ var op = v[0];
1373
+ if ((0, _ramda.isNil)(ops[op])) throw Error("query not supported: ".concat(op));
1374
+ return [ops[op]].concat(_toConsumableArray(encodeVal(v[1])));
1375
+ }
1376
+ function decodeQuery(v) {
1377
+ var op = opMap[v[0]];
1378
+ if ((0, _ramda.isNil)(op)) throw Error("op doens't exist");
1379
+ return [op, decodeVal(v.slice(1))];
1380
+ }
1381
+ function toUint8(sig) {
1382
+ var num = BigInt(sig);
1383
+ var byteArray = [];
1384
+ while (num > 0) {
1385
+ byteArray.push(Number(num % 256n));
1386
+ num /= 256n;
1387
+ }
1388
+ return new Uint8Array(byteArray.reverse());
1389
+ }
1390
+ function compress(arr) {
1391
+ var sig = toSignal(arr, false);
1392
+ return toUint8(sig);
1393
+ }
1394
+ function decompress(arr) {
1395
+ var str = fromUint8(arr);
1396
+ return fromSignal([str]);
1397
+ }
1398
+ function fromUint8(arr) {
1399
+ var num = 0n;
1400
+ var _iterator26 = _createForOfIteratorHelper(arr),
1401
+ _step26;
1402
+ try {
1403
+ for (_iterator26.s(); !(_step26 = _iterator26.n()).done;) {
1404
+ var _byte = _step26.value;
1405
+ num = num * 256n + BigInt(_byte);
1406
+ }
1407
+ } catch (err) {
1408
+ _iterator26.e(err);
1409
+ } finally {
1410
+ _iterator26.f();
1411
+ }
1412
+ return num.toString();
1413
+ }
1414
+ var get = exports.get = function get(data, path) {
1415
+ return decodeVal(getraw(data, encodePath(path)));
1416
+ };
1417
+ function getraw(_data, path) {
1418
+ var data = Array.from(_data);
1419
+ var dic = [];
1420
+ var _view = view(data),
1421
+ _view2 = _slicedToArray(_view, 2),
1422
+ offset = _view2[0],
1423
+ offset_len = _view2[1]; // only view
1424
+ var isDic = data[offset];
1425
+ if (isDic > 0) dic = mapDic(data.slice(offset_len), isDic); // handle this
1426
+ var cur = offset + 1;
1427
+ var offsets = {
1428
+ dic: [],
1429
+ data: []
1430
+ };
1431
+ var p = offset_len;
1432
+ if (isDic > 0) {
1433
+ offsets.dic[0] = offset_len;
1434
+ for (var i2 = 0; i2 < isDic; i2++) {
1435
+ var _view3 = view(data, cur),
1436
+ _view4 = _slicedToArray(_view3, 2),
1437
+ o = _view4[0],
1438
+ len = _view4[1];
1439
+ p += o;
1440
+ cur += len;
1441
+ offsets.dic.push(p);
1442
+ }
1443
+ } else offsets.data[0] = 0;
1444
+ while (cur < data.length) {
1445
+ offsets.data.push(p);
1446
+ var _view5 = view(data, cur),
1447
+ _view6 = _slicedToArray(_view5, 2),
1448
+ _o = _view6[0],
1449
+ _len2 = _view6[1];
1450
+ p += _o;
1451
+ cur += _len2;
1452
+ }
1453
+ for (var i3 = 0; i3 < offsets.data.length; i3++) {
1454
+ var c = offsets.data[i3]; // cursor
1455
+ var pc = 0; // keep track of path cursor
1456
+ var _view7 = view(data, c),
1457
+ _view8 = _slicedToArray(_view7, 2),
1458
+ klen = _view8[0],
1459
+ _len3 = _view8[1];
1460
+ c += _len3;
1461
+ pc++;
1462
+ var ok = true;
1463
+ var _loop = function _loop() {
1464
+ var _view9 = view(data, c),
1465
+ _view0 = _slicedToArray(_view9, 2),
1466
+ type = _view0[0],
1467
+ len = _view0[1];
1468
+ c += len;
1469
+ if (type === 0) {
1470
+ var _view1 = view(data, c),
1471
+ _view10 = _slicedToArray(_view1, 2),
1472
+ subtype = _view10[0],
1473
+ sublen = _view10[1];
1474
+ c += sublen;
1475
+ if (subtype === 3) {
1476
+ // no check
1477
+ var _view11 = view(data, c),
1478
+ _view12 = _slicedToArray(_view11, 2),
1479
+ ref = _view12[0],
1480
+ reflen = _view12[1];
1481
+ c += reflen;
1482
+ var d = offsets.dic[ref];
1483
+ var _getDic3 = function _getDic2(x) {
1484
+ var _view13 = view(data, x),
1485
+ _view14 = _slicedToArray(_view13, 2),
1486
+ _len = _view14[0],
1487
+ len = _view14[1];
1488
+ x += len;
1489
+ var res = [];
1490
+ for (var i = 0; i < _len; i++) {
1491
+ var _view15 = view(data, x),
1492
+ _view16 = _slicedToArray(_view15, 2),
1493
+ dtype = _view16[0],
1494
+ _len4 = _view16[1];
1495
+ x += _len4;
1496
+ if (dtype === 9) {
1497
+ res = (0, _ramda.concat)(res, _getDic3(offsets.dic[data[x++]]));
1498
+ } else if (dtype === 7) {
1499
+ var _view17 = view(data, x),
1500
+ _view18 = _slicedToArray(_view17, 2),
1501
+ slen = _view18[0],
1502
+ _len5 = _view18[1];
1503
+ x += _len5;
1504
+ res.push(slen);
1505
+ for (var _i0 = 0; _i0 < slen; _i0++) {
1506
+ var _view19 = view(data, x),
1507
+ _view20 = _slicedToArray(_view19, 2),
1508
+ y = _view20[0],
1509
+ _len6 = _view20[1];
1510
+ x += _len6;
1511
+ res.push(y);
1512
+ }
1513
+ } else {
1514
+ res.push(0);
1515
+ res.push(0);
1516
+ var _view21 = view(data, x),
1517
+ _view22 = _slicedToArray(_view21, 2),
1518
+ _y = _view22[0],
1519
+ _len7 = _view22[1];
1520
+ x += _len7;
1521
+ res.push(_y);
1522
+ }
1523
+ }
1524
+ return res;
1525
+ };
1526
+ var _dic = _getDic3(d);
1527
+ var _iterator27 = _createForOfIteratorHelper(_dic),
1528
+ _step27;
1529
+ try {
1530
+ for (_iterator27.s(); !(_step27 = _iterator27.n()).done;) {
1531
+ var v3 = _step27.value;
1532
+ if (path[pc++] !== v3) {
1533
+ ok = false;
1534
+ break;
1535
+ }
1536
+ }
1537
+ } catch (err) {
1538
+ _iterator27.e(err);
1539
+ } finally {
1540
+ _iterator27.f();
1541
+ }
1542
+ } else if (subtype === 0) {
1543
+ // check
1544
+ if (path[pc++] !== type) {
1545
+ ok = false;
1546
+ return 0; // break
1547
+ }
1548
+ if (path[pc++] !== subtype) {
1549
+ ok = false;
1550
+ return 0; // break
1551
+ }
1552
+ var _view23 = view(data, c),
1553
+ _view24 = _slicedToArray(_view23, 2),
1554
+ y = _view24[0],
1555
+ _len8 = _view24[1];
1556
+ c += _len8;
1557
+ if (path[pc++] !== y) {
1558
+ ok = false;
1559
+ return 0; // break
1560
+ }
1561
+ }
1562
+ } else {
1563
+ // this is string
1564
+ var slen = type;
1565
+ if (path[pc++] !== slen) {
1566
+ ok = false;
1567
+ return 0; // break
1568
+ }
1569
+ for (var _i1 = 0; _i1 < slen; _i1++) {
1570
+ var _view25 = view(data, c),
1571
+ _view26 = _slicedToArray(_view25, 2),
1572
+ _y2 = _view26[0],
1573
+ _len9 = _view26[1];
1574
+ c += _len9;
1575
+ if (path[pc++] !== _y2) {
1576
+ ok = false;
1577
+ break;
1578
+ }
1579
+ }
1580
+ }
1581
+ },
1582
+ _ret;
1583
+ for (var _i9 = 0; _i9 < klen; _i9++) {
1584
+ _ret = _loop();
1585
+ if (_ret === 0) break;
1586
+ }
1587
+ if (!ok) continue;
1588
+ if (pc === path.length) {
1589
+ return from128s(data.slice(c, offsets.data[i3 + 1])).arr;
1590
+ break;
1591
+ }
1592
+ }
1593
+ return;
1594
+ }
1595
+ function to128(number) {
1596
+ var encoded = [];
1597
+ while (number >= 128) {
1598
+ encoded.push(number & 0x7f | 0x80);
1599
+ number >>= 7;
1600
+ }
1601
+ encoded.push(number);
1602
+ return encoded;
1603
+ }
1604
+ function from128(bytes) {
1605
+ var value = 0;
1606
+ var shift = 0;
1607
+ var _iterator28 = _createForOfIteratorHelper(bytes),
1608
+ _step28;
1609
+ try {
1610
+ for (_iterator28.s(); !(_step28 = _iterator28.n()).done;) {
1611
+ var _byte2 = _step28.value;
1612
+ value |= (_byte2 & 0x7f) << shift;
1613
+ if ((_byte2 & 0x80) === 0) break;
1614
+ shift += 7;
1615
+ }
1616
+ } catch (err) {
1617
+ _iterator28.e(err);
1618
+ } finally {
1619
+ _iterator28.f();
1620
+ }
1621
+ return value;
1622
+ }
1623
+ function from128s(bytes, limit) {
1624
+ var result = [];
1625
+ var i = 0;
1626
+ while (i < bytes.length && (limit === undefined || result.length < limit)) {
1627
+ var chunk = [];
1628
+ // Collect bytes for one LH128-encoded number.
1629
+ while (i < bytes.length) {
1630
+ chunk.push(bytes[i]);
1631
+ if ((bytes[i] & 0x80) === 0) {
1632
+ i++; // move past the terminating byte
1633
+ break;
1634
+ }
1635
+ i++;
1636
+ }
1637
+ result.push(from128(chunk));
1638
+ }
1639
+ return {
1640
+ arr: result,
1641
+ len: i
1642
+ };
1643
+ }
1644
+ function to128s(numbers) {
1645
+ var result = [];
1646
+ var _iterator29 = _createForOfIteratorHelper(numbers),
1647
+ _step29;
1648
+ try {
1649
+ for (_iterator29.s(); !(_step29 = _iterator29.n()).done;) {
1650
+ var num = _step29.value;
1651
+ result.push.apply(result, _toConsumableArray(to128(num)));
1652
+ }
1653
+ } catch (err) {
1654
+ _iterator29.e(err);
1655
+ } finally {
1656
+ _iterator29.f();
1657
+ }
1658
+ return result;
1659
+ }
1660
+ var shift = function shift(arr) {
1661
+ var len = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
1662
+ var res = from128s(arr, 1);
1663
+ arr.splice(0, res.len);
1664
+ return len ? [res.arr[0], res.len] : res.arr[0];
1665
+ };
1666
+ var view = function view(arr) {
1667
+ var start = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
1668
+ var res = from128s(arr.slice(start), 1);
1669
+ return [res.arr[0], res.len];
1670
+ };
1671
+ var move = function move(arr) {
1672
+ var val = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
1673
+ var limit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
1674
+ var res = from128s(arr, limit);
1675
+ var _iterator30 = _createForOfIteratorHelper(res.arr),
1676
+ _step30;
1677
+ try {
1678
+ for (_iterator30.s(); !(_step30 = _iterator30.n()).done;) {
1679
+ var v = _step30.value;
1680
+ val.push(v);
1681
+ }
1682
+ } catch (err) {
1683
+ _iterator30.e(err);
1684
+ } finally {
1685
+ _iterator30.f();
1686
+ }
1687
+ arr.splice(0, res.len);
1688
+ };
1689
+ var push = function push(vals, _num) {
1690
+ if ((0, _ramda.is)(Array, _num)) {
1691
+ var _iterator31 = _createForOfIteratorHelper(_num),
1692
+ _step31;
1693
+ try {
1694
+ for (_iterator31.s(); !(_step31 = _iterator31.n()).done;) {
1695
+ var v = _step31.value;
1696
+ vals.splice.apply(vals, [vals.length, 0].concat(_toConsumableArray(to128(v))));
1697
+ }
1698
+ } catch (err) {
1699
+ _iterator31.e(err);
1700
+ } finally {
1701
+ _iterator31.f();
1702
+ }
1703
+ } else {
1704
+ vals.splice.apply(vals, [vals.length, 0].concat(_toConsumableArray(to128(_num))));
1705
+ }
1706
+ };
1707
+ var unshift = function unshift(vals, _num) {
1708
+ var addedCount = 0;
1709
+ if ((0, _ramda.is)(Array, _num)) {
1710
+ var encodedBytes = [];
1711
+ var _iterator32 = _createForOfIteratorHelper(_num),
1712
+ _step32;
1713
+ try {
1714
+ for (_iterator32.s(); !(_step32 = _iterator32.n()).done;) {
1715
+ var v = _step32.value;
1716
+ encodedBytes = encodedBytes.concat(to128(v));
1717
+ }
1718
+ } catch (err) {
1719
+ _iterator32.e(err);
1720
+ } finally {
1721
+ _iterator32.f();
1722
+ }
1723
+ addedCount = encodedBytes.length;
1724
+ vals.splice.apply(vals, [0, 0].concat(_toConsumableArray(encodedBytes)));
1725
+ } else {
1726
+ var encoded = to128(_num);
1727
+ addedCount = encoded.length;
1728
+ vals.splice.apply(vals, [0, 0].concat(_toConsumableArray(encoded)));
1729
+ }
1730
+ return addedCount;
1731
+ };