@graffy/common 0.16.0-alpha.10 → 0.16.0-alpha.12

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.
package/index.cjs CHANGED
@@ -118,6 +118,9 @@ const stringifyDescriptor = {
118
118
  }
119
119
  };
120
120
  function addStringify(buffer) {
121
+ if (Object.hasOwn(buffer, "toJSON") || Object.hasOwn(buffer, "toString") || Object.hasOwn(buffer, Symbol.for("nodejs.util.inspect.custom"))) {
122
+ return buffer;
123
+ }
121
124
  Object.defineProperties(buffer, {
122
125
  toJSON: stringifyDescriptor,
123
126
  toString: stringifyDescriptor,
@@ -282,10 +285,12 @@ function keyStep(key) {
282
285
  switch (key[l]) {
283
286
  case 0:
284
287
  newKey = key.slice(0, l);
288
+ addStringify(newKey);
285
289
  step = 1;
286
290
  break;
287
291
  case 255:
288
292
  newKey = key.slice(0, l);
293
+ addStringify(newKey);
289
294
  newKey[l - 1]++;
290
295
  step = -1;
291
296
  break;
@@ -293,7 +298,7 @@ function keyStep(key) {
293
298
  newKey = key;
294
299
  step = 0;
295
300
  }
296
- return { key: addStringify(newKey), step };
301
+ return { key: newKey, step };
297
302
  }
298
303
  function keyBefore(key) {
299
304
  if (isMinKey(key) || isMaxKey(key))
@@ -1016,7 +1021,7 @@ function setVersion(graph, version, onlyIfZero = false) {
1016
1021
  if (!onlyIfZero || !node.version)
1017
1022
  node.version = version;
1018
1023
  if (node.children)
1019
- setVersion(node.children, version);
1024
+ setVersion(node.children, version, onlyIfZero);
1020
1025
  }
1021
1026
  return graph;
1022
1027
  }
@@ -1038,13 +1043,13 @@ function getKnown(graph, version = 0) {
1038
1043
  }
1039
1044
  return query;
1040
1045
  }
1041
- function finalize(graph, query, version = Date.now(), suppressSetVersion = false) {
1046
+ function finalize(graph, query, version = Date.now()) {
1042
1047
  let result = [{ key: MIN_KEY, end: MAX_KEY, version: 0 }];
1043
1048
  merge(result, graph);
1044
1049
  if (query)
1045
1050
  result = slice(result, query).known || [];
1046
- if (!suppressSetVersion)
1047
- result = setVersion(result, version);
1051
+ if (!version !== false)
1052
+ result = setVersion(result, version, true);
1048
1053
  return result;
1049
1054
  }
1050
1055
  const PRE_CHI_PUT = Symbol("PREFIX_CHILDREN_$PUT");
@@ -1506,45 +1511,47 @@ function encode(value, { version, isGraph } = {}) {
1506
1511
  if (typeof object === "object" && object && isEmpty(object))
1507
1512
  return;
1508
1513
  const { $key, $ver, $ref, $val, $chi, $put, ...props2 } = object || {};
1509
- if (typeof object === "object" && object && !Array.isArray(object)) {
1510
- object = Object.fromEntries(
1511
- Object.entries({ $key, $ver, $ref, $val, $chi, $put, ...props2 }).filter(
1512
- ([_, val]) => isDef(val)
1513
- )
1514
- );
1515
- }
1516
1514
  if (isDef($ver))
1517
1515
  ver = $ver;
1518
1516
  if (isPlainObject($key)) {
1519
1517
  const [page, filter] = splitArgs($key);
1520
- const foundPuts = parentPuts.filter(([_, putFilter]) => isEqual__default.default(filter, putFilter)).map(([range]) => range);
1521
- if (isGraph && page && !isDef(page.$cursor) && ($ref || $val || $chi || $put || !isEmpty(props2))) {
1522
- const node2 = makeNode2(
1523
- { ...object, $key: filter || {}, $put: foundPuts },
1524
- key,
1525
- ver
1526
- );
1527
- if (!filter)
1528
- node2.key = MIN_KEY;
1529
- node2.prefix = true;
1530
- return node2;
1531
- }
1532
- if ((!isDef(key) || Number.isInteger(key)) && page && (filter || isDef(page.$cursor))) {
1533
- const node2 = makeNode2(
1534
- {
1535
- $key: filter || {},
1536
- $chi: [
1537
- { ...object, $key: isDef(page.$cursor) ? page.$cursor : page }
1538
- ],
1539
- ...isGraph ? { $put: foundPuts } : {}
1540
- },
1541
- key,
1542
- ver
1543
- );
1544
- if (!filter)
1545
- node2.key = MIN_KEY;
1546
- node2.prefix = true;
1547
- return node2;
1518
+ if (page) {
1519
+ if (typeof object === "object" && object && !Array.isArray(object)) {
1520
+ object = {
1521
+ ...Object.fromEntries(
1522
+ Object.entries({
1523
+ $key,
1524
+ $ver,
1525
+ $ref,
1526
+ $val,
1527
+ $chi,
1528
+ $put
1529
+ }).filter(([_, val]) => isDef(val))
1530
+ ),
1531
+ ...props2
1532
+ };
1533
+ }
1534
+ const foundPuts = parentPuts.filter(([_, putFilter]) => isEqual__default.default(filter, putFilter)).map(([range]) => range);
1535
+ if (isGraph && !isDef(page.$cursor) && ($ref || $val || $chi || $put || !isEmpty(props2))) {
1536
+ object.$key = filter || {};
1537
+ object.$put = foundPuts;
1538
+ const node2 = makeNode2(object, key, ver);
1539
+ if (!filter)
1540
+ node2.key = MIN_KEY;
1541
+ node2.prefix = true;
1542
+ return node2;
1543
+ }
1544
+ if ((!isDef(key) || Number.isInteger(key)) && (filter || isDef(page.$cursor))) {
1545
+ object.$key = isDef(page.$cursor) ? page.$cursor : page;
1546
+ const wrapper = { $key: filter || {}, $chi: [object] };
1547
+ if (isGraph)
1548
+ wrapper.$put = foundPuts;
1549
+ const node2 = makeNode2(wrapper, key, ver);
1550
+ if (!filter)
1551
+ node2.key = MIN_KEY;
1552
+ node2.prefix = true;
1553
+ return node2;
1554
+ }
1548
1555
  }
1549
1556
  }
1550
1557
  let putQuery = [], prefixPuts = [];
@@ -1617,12 +1624,7 @@ function encode(value, { version, isGraph } = {}) {
1617
1624
  }
1618
1625
  }
1619
1626
  if (isGraph && (putQuery === null || putQuery.length)) {
1620
- node.children = finalize(
1621
- node.children || [],
1622
- putQuery,
1623
- node.version,
1624
- true
1625
- );
1627
+ node.children = finalize(node.children || [], putQuery, false);
1626
1628
  }
1627
1629
  if (((_a2 = node.children) == null ? void 0 : _a2.length) || isDef(node.end) || isDef(node.value) || isDef(node.path)) {
1628
1630
  return node;
@@ -1637,7 +1639,9 @@ function encode(value, { version, isGraph } = {}) {
1637
1639
  return result;
1638
1640
  }
1639
1641
  function encodeGraph(obj, version = Date.now()) {
1640
- return setVersion(encode(obj, { version, isGraph: true }), version, true);
1642
+ const encoded = encode(obj, { version, isGraph: true });
1643
+ const versioned = setVersion(encoded, version, true);
1644
+ return versioned;
1641
1645
  }
1642
1646
  function encodeQuery(obj, version = 0) {
1643
1647
  return encode(obj, { version, isGraph: false });
package/index.mjs CHANGED
@@ -113,6 +113,9 @@ const stringifyDescriptor = {
113
113
  }
114
114
  };
115
115
  function addStringify(buffer) {
116
+ if (Object.hasOwn(buffer, "toJSON") || Object.hasOwn(buffer, "toString") || Object.hasOwn(buffer, Symbol.for("nodejs.util.inspect.custom"))) {
117
+ return buffer;
118
+ }
116
119
  Object.defineProperties(buffer, {
117
120
  toJSON: stringifyDescriptor,
118
121
  toString: stringifyDescriptor,
@@ -277,10 +280,12 @@ function keyStep(key) {
277
280
  switch (key[l]) {
278
281
  case 0:
279
282
  newKey = key.slice(0, l);
283
+ addStringify(newKey);
280
284
  step = 1;
281
285
  break;
282
286
  case 255:
283
287
  newKey = key.slice(0, l);
288
+ addStringify(newKey);
284
289
  newKey[l - 1]++;
285
290
  step = -1;
286
291
  break;
@@ -288,7 +293,7 @@ function keyStep(key) {
288
293
  newKey = key;
289
294
  step = 0;
290
295
  }
291
- return { key: addStringify(newKey), step };
296
+ return { key: newKey, step };
292
297
  }
293
298
  function keyBefore(key) {
294
299
  if (isMinKey(key) || isMaxKey(key))
@@ -1011,7 +1016,7 @@ function setVersion(graph, version, onlyIfZero = false) {
1011
1016
  if (!onlyIfZero || !node.version)
1012
1017
  node.version = version;
1013
1018
  if (node.children)
1014
- setVersion(node.children, version);
1019
+ setVersion(node.children, version, onlyIfZero);
1015
1020
  }
1016
1021
  return graph;
1017
1022
  }
@@ -1033,13 +1038,13 @@ function getKnown(graph, version = 0) {
1033
1038
  }
1034
1039
  return query;
1035
1040
  }
1036
- function finalize(graph, query, version = Date.now(), suppressSetVersion = false) {
1041
+ function finalize(graph, query, version = Date.now()) {
1037
1042
  let result = [{ key: MIN_KEY, end: MAX_KEY, version: 0 }];
1038
1043
  merge(result, graph);
1039
1044
  if (query)
1040
1045
  result = slice(result, query).known || [];
1041
- if (!suppressSetVersion)
1042
- result = setVersion(result, version);
1046
+ if (!version !== false)
1047
+ result = setVersion(result, version, true);
1043
1048
  return result;
1044
1049
  }
1045
1050
  const PRE_CHI_PUT = Symbol("PREFIX_CHILDREN_$PUT");
@@ -1501,45 +1506,47 @@ function encode(value, { version, isGraph } = {}) {
1501
1506
  if (typeof object === "object" && object && isEmpty(object))
1502
1507
  return;
1503
1508
  const { $key, $ver, $ref, $val, $chi, $put, ...props2 } = object || {};
1504
- if (typeof object === "object" && object && !Array.isArray(object)) {
1505
- object = Object.fromEntries(
1506
- Object.entries({ $key, $ver, $ref, $val, $chi, $put, ...props2 }).filter(
1507
- ([_, val]) => isDef(val)
1508
- )
1509
- );
1510
- }
1511
1509
  if (isDef($ver))
1512
1510
  ver = $ver;
1513
1511
  if (isPlainObject($key)) {
1514
1512
  const [page, filter] = splitArgs($key);
1515
- const foundPuts = parentPuts.filter(([_, putFilter]) => isEqual(filter, putFilter)).map(([range]) => range);
1516
- if (isGraph && page && !isDef(page.$cursor) && ($ref || $val || $chi || $put || !isEmpty(props2))) {
1517
- const node2 = makeNode2(
1518
- { ...object, $key: filter || {}, $put: foundPuts },
1519
- key,
1520
- ver
1521
- );
1522
- if (!filter)
1523
- node2.key = MIN_KEY;
1524
- node2.prefix = true;
1525
- return node2;
1526
- }
1527
- if ((!isDef(key) || Number.isInteger(key)) && page && (filter || isDef(page.$cursor))) {
1528
- const node2 = makeNode2(
1529
- {
1530
- $key: filter || {},
1531
- $chi: [
1532
- { ...object, $key: isDef(page.$cursor) ? page.$cursor : page }
1533
- ],
1534
- ...isGraph ? { $put: foundPuts } : {}
1535
- },
1536
- key,
1537
- ver
1538
- );
1539
- if (!filter)
1540
- node2.key = MIN_KEY;
1541
- node2.prefix = true;
1542
- return node2;
1513
+ if (page) {
1514
+ if (typeof object === "object" && object && !Array.isArray(object)) {
1515
+ object = {
1516
+ ...Object.fromEntries(
1517
+ Object.entries({
1518
+ $key,
1519
+ $ver,
1520
+ $ref,
1521
+ $val,
1522
+ $chi,
1523
+ $put
1524
+ }).filter(([_, val]) => isDef(val))
1525
+ ),
1526
+ ...props2
1527
+ };
1528
+ }
1529
+ const foundPuts = parentPuts.filter(([_, putFilter]) => isEqual(filter, putFilter)).map(([range]) => range);
1530
+ if (isGraph && !isDef(page.$cursor) && ($ref || $val || $chi || $put || !isEmpty(props2))) {
1531
+ object.$key = filter || {};
1532
+ object.$put = foundPuts;
1533
+ const node2 = makeNode2(object, key, ver);
1534
+ if (!filter)
1535
+ node2.key = MIN_KEY;
1536
+ node2.prefix = true;
1537
+ return node2;
1538
+ }
1539
+ if ((!isDef(key) || Number.isInteger(key)) && (filter || isDef(page.$cursor))) {
1540
+ object.$key = isDef(page.$cursor) ? page.$cursor : page;
1541
+ const wrapper = { $key: filter || {}, $chi: [object] };
1542
+ if (isGraph)
1543
+ wrapper.$put = foundPuts;
1544
+ const node2 = makeNode2(wrapper, key, ver);
1545
+ if (!filter)
1546
+ node2.key = MIN_KEY;
1547
+ node2.prefix = true;
1548
+ return node2;
1549
+ }
1543
1550
  }
1544
1551
  }
1545
1552
  let putQuery = [], prefixPuts = [];
@@ -1612,12 +1619,7 @@ function encode(value, { version, isGraph } = {}) {
1612
1619
  }
1613
1620
  }
1614
1621
  if (isGraph && (putQuery === null || putQuery.length)) {
1615
- node.children = finalize(
1616
- node.children || [],
1617
- putQuery,
1618
- node.version,
1619
- true
1620
- );
1622
+ node.children = finalize(node.children || [], putQuery, false);
1621
1623
  }
1622
1624
  if (((_a2 = node.children) == null ? void 0 : _a2.length) || isDef(node.end) || isDef(node.value) || isDef(node.path)) {
1623
1625
  return node;
@@ -1632,7 +1634,9 @@ function encode(value, { version, isGraph } = {}) {
1632
1634
  return result;
1633
1635
  }
1634
1636
  function encodeGraph(obj, version = Date.now()) {
1635
- return setVersion(encode(obj, { version, isGraph: true }), version, true);
1637
+ const encoded = encode(obj, { version, isGraph: true });
1638
+ const versioned = setVersion(encoded, version, true);
1639
+ return versioned;
1636
1640
  }
1637
1641
  function encodeQuery(obj, version = 0) {
1638
1642
  return encode(obj, { version, isGraph: false });
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@graffy/common",
3
3
  "description": "Common libraries that used by various Graffy modules.",
4
4
  "author": "aravind (https://github.com/aravindet)",
5
- "version": "0.16.0-alpha.10",
5
+ "version": "0.16.0-alpha.12",
6
6
  "main": "./index.cjs",
7
7
  "exports": {
8
8
  "import": "./index.mjs",
@@ -17,7 +17,7 @@
17
17
  "license": "Apache-2.0",
18
18
  "dependencies": {
19
19
  "lodash": "^4.17.19",
20
- "merge-async-iterators": "^0.2.1",
21
- "@graffy/stream": "0.16.0-alpha.10"
20
+ "@graffy/stream": "0.16.0-alpha.12",
21
+ "merge-async-iterators": "^0.2.1"
22
22
  }
23
23
  }
@@ -1,4 +1,11 @@
1
- export default function finalize(graph: any, query: any, version?: number, suppressSetVersion?: boolean): {
1
+ /**
2
+ *
3
+ * @param {any} graph
4
+ * @param {any} query
5
+ * @param {number | false} version
6
+ * @returns any
7
+ */
8
+ export default function finalize(graph: any, query: any, version?: number | false): {
2
9
  key: Uint8Array;
3
10
  end: Uint8Array;
4
11
  version: number;