@descryy/core 0.10.0 → 0.10.1
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persist.d.ts","sourceRoot":"","sources":["../../src/graph/persist.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAc,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACrF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;IACxC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,4FAA4F;IAC5F,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,SAAS,OAAO,EAAE,EAC3B,KAAK,EAAE,WAAW,EAClB,OAAO,GAAE,YAAiB,GACzB,aAAa,
|
|
1
|
+
{"version":3,"file":"persist.d.ts","sourceRoot":"","sources":["../../src/graph/persist.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAc,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACrF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;IACxC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,4FAA4F;IAC5F,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,SAAS,OAAO,EAAE,EAC3B,KAAK,EAAE,WAAW,EAClB,OAAO,GAAE,YAAiB,GACzB,aAAa,CA2Bf"}
|
package/dist/graph/persist.js
CHANGED
|
@@ -4,16 +4,17 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { writeBatch } from "../store/writer.js";
|
|
6
6
|
export function persistGraph(driver, batches, built, options = {}) {
|
|
7
|
+
const owner = rowOwners(batches);
|
|
7
8
|
const writes = [];
|
|
8
9
|
const evicted = new Set();
|
|
9
|
-
|
|
10
|
+
batches.forEach((batch, index) => {
|
|
10
11
|
writes.push(writeBatch(driver, {
|
|
11
12
|
...batch,
|
|
12
|
-
nodes: built.nodes.filter((node) => node.producedBy ===
|
|
13
|
-
edges: built.edges.filter((edge) => edge.producedBy ===
|
|
14
|
-
unresolved: built.unresolved.filter((ref) => ref.producedBy ===
|
|
13
|
+
nodes: built.nodes.filter((node) => owner.ofNode(node.producedBy, node.id) === index),
|
|
14
|
+
edges: built.edges.filter((edge) => owner.ofRowFrom(edge.producedBy, edge.from) === index),
|
|
15
|
+
unresolved: built.unresolved.filter((ref) => owner.ofRowFrom(ref.producedBy, ref.fromNodeId) === index),
|
|
15
16
|
}, options));
|
|
16
|
-
}
|
|
17
|
+
});
|
|
17
18
|
for (const write of writes)
|
|
18
19
|
for (const file of write.evictedFiles)
|
|
19
20
|
evicted.add(file);
|
|
@@ -26,4 +27,41 @@ export function persistGraph(driver, batches, built, options = {}) {
|
|
|
26
27
|
orphanedEdges: writes.reduce((n, w) => n + w.orphanedEdges, 0),
|
|
27
28
|
};
|
|
28
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* Which batch writes a merged row. By `producedBy` (DEC-014) — except that one adapter reading
|
|
32
|
+
* several repositories of a workspace hands in several batches with the SAME `producedBy`, and a
|
|
33
|
+
* split on it alone gave every one of them every row: the first repository's write won each
|
|
34
|
+
* node's run, so a frontend's functions were stored as the backend's and every repo-scoped read
|
|
35
|
+
* missed them. Batches sharing a producer are split by what each emitted — a node by its id, an
|
|
36
|
+
* edge or unresolved ref by its source node (an edge's target can be rewritten by a workspace join,
|
|
37
|
+
* its source is not). A row none of them emitted falls to the first, as every row did before, so
|
|
38
|
+
* nothing is dropped.
|
|
39
|
+
*/
|
|
40
|
+
function rowOwners(batches) {
|
|
41
|
+
const first = new Map();
|
|
42
|
+
const shared = new Set();
|
|
43
|
+
batches.forEach((batch, index) => {
|
|
44
|
+
if (first.has(batch.producedBy))
|
|
45
|
+
shared.add(batch.producedBy);
|
|
46
|
+
else
|
|
47
|
+
first.set(batch.producedBy, index);
|
|
48
|
+
});
|
|
49
|
+
const emittedBy = new Map();
|
|
50
|
+
batches.forEach((batch, index) => {
|
|
51
|
+
if (!shared.has(batch.producedBy))
|
|
52
|
+
return;
|
|
53
|
+
for (const node of batch.nodes) {
|
|
54
|
+
const key = JSON.stringify([batch.producedBy, node.id]);
|
|
55
|
+
if (!emittedBy.has(key))
|
|
56
|
+
emittedBy.set(key, index);
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
const owner = (producedBy, nodeId) => {
|
|
60
|
+
const fallback = first.get(producedBy) ?? -1;
|
|
61
|
+
if (!shared.has(producedBy))
|
|
62
|
+
return fallback;
|
|
63
|
+
return emittedBy.get(JSON.stringify([producedBy, nodeId])) ?? fallback;
|
|
64
|
+
};
|
|
65
|
+
return { ofNode: owner, ofRowFrom: owner };
|
|
66
|
+
}
|
|
29
67
|
//# sourceMappingURL=persist.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persist.js","sourceRoot":"","sources":["../../src/graph/persist.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,UAAU,EAAuC,MAAM,oBAAoB,CAAC;AAarF,MAAM,UAAU,YAAY,CAC1B,MAAiB,EACjB,OAA2B,EAC3B,KAAkB,EAClB,UAAwB,EAAE;IAE1B,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"persist.js","sourceRoot":"","sources":["../../src/graph/persist.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED