@monstermann/graph 0.1.0 → 0.2.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 (37) hide show
  1. package/dist/Graph/batch.d.mts +0 -1
  2. package/dist/Graph/create.d.mts +0 -1
  3. package/dist/Graph/findEdge.d.mts +0 -1
  4. package/dist/Graph/findEdges.d.mts +0 -1
  5. package/dist/Graph/findNeighbor.d.mts +0 -1
  6. package/dist/Graph/findNeighbors.d.mts +0 -1
  7. package/dist/Graph/findNode.d.mts +0 -1
  8. package/dist/Graph/findNodes.d.mts +0 -1
  9. package/dist/Graph/forEachEdge.d.mts +0 -1
  10. package/dist/Graph/forEachNeighbor.d.mts +0 -1
  11. package/dist/Graph/forEachNode.d.mts +0 -1
  12. package/dist/Graph/fromJS.d.mts +0 -1
  13. package/dist/Graph/getEdge.d.mts +0 -1
  14. package/dist/Graph/getEdges.d.mts +0 -1
  15. package/dist/Graph/getNeighbor.d.mts +0 -1
  16. package/dist/Graph/getNeighbors.d.mts +0 -1
  17. package/dist/Graph/getNode.d.mts +0 -1
  18. package/dist/Graph/getNodes.d.mts +0 -1
  19. package/dist/Graph/hasEdge.d.mts +0 -1
  20. package/dist/Graph/hasNode.d.mts +0 -1
  21. package/dist/Graph/index.d.mts +0 -1
  22. package/dist/Graph/internals/types.d.mts +1 -1
  23. package/dist/Graph/mapEdge.d.mts +0 -1
  24. package/dist/Graph/mapNode.d.mts +0 -1
  25. package/dist/Graph/mapNode.mjs +6 -6
  26. package/dist/Graph/mergeEdge.d.mts +0 -1
  27. package/dist/Graph/mergeNode.d.mts +0 -1
  28. package/dist/Graph/mergeNode.mjs +5 -5
  29. package/dist/Graph/removeEdge.d.mts +0 -1
  30. package/dist/Graph/removeEdge.mjs +4 -4
  31. package/dist/Graph/removeNode.d.mts +0 -1
  32. package/dist/Graph/removeNode.mjs +5 -5
  33. package/dist/Graph/setEdge.d.mts +0 -1
  34. package/dist/Graph/setEdge.mjs +4 -4
  35. package/dist/Graph/setNode.d.mts +0 -1
  36. package/dist/Graph/toJS.d.mts +0 -1
  37. package/package.json +1 -1
@@ -1,7 +1,6 @@
1
1
  import { Edges, Graph, Node } from "./types.mjs";
2
2
 
3
3
  //#region src/Graph/batch.d.ts
4
-
5
4
  /**
6
5
  * # batch
7
6
  *
@@ -1,7 +1,6 @@
1
1
  import { Edges, Graph, Node, NodeType } from "./types.mjs";
2
2
 
3
3
  //#region src/Graph/create.d.ts
4
-
5
4
  /**
6
5
  * # create
7
6
  *
@@ -2,7 +2,6 @@ import { Bimap } from "./internals/types.mjs";
2
2
  import { Edges, Graph, Node, NodeIdentifier, NodeType } from "./types.mjs";
3
3
 
4
4
  //#region src/Graph/findEdge.d.ts
5
-
6
5
  /**
7
6
  * # findEdge
8
7
  *
@@ -2,7 +2,6 @@ import { Bimap } from "./internals/types.mjs";
2
2
  import { Edges, Graph, Node, NodeIdentifier, NodeType } from "./types.mjs";
3
3
 
4
4
  //#region src/Graph/findEdges.d.ts
5
-
6
5
  /**
7
6
  * # findEdges
8
7
  *
@@ -2,7 +2,6 @@ import { Bimap } from "./internals/types.mjs";
2
2
  import { Edges, Graph, Node, NodeIdentifier, NodeOfType, NodeType } from "./types.mjs";
3
3
 
4
4
  //#region src/Graph/findNeighbor.d.ts
5
-
6
5
  /**
7
6
  * # findNeighbor
8
7
  *
@@ -2,7 +2,6 @@ import { Bimap } from "./internals/types.mjs";
2
2
  import { Edges, Graph, Node, NodeIdentifier, NodeOfType, NodeType } from "./types.mjs";
3
3
 
4
4
  //#region src/Graph/findNeighbors.d.ts
5
-
6
5
  /**
7
6
  * # findNeighbors
8
7
  *
@@ -1,7 +1,6 @@
1
1
  import { Edges, Graph, Node, NodeOfType, NodeType } from "./types.mjs";
2
2
 
3
3
  //#region src/Graph/findNode.d.ts
4
-
5
4
  /**
6
5
  * # findNode
7
6
  *
@@ -1,7 +1,6 @@
1
1
  import { Edges, Graph, Node, NodeOfType, NodeType } from "./types.mjs";
2
2
 
3
3
  //#region src/Graph/findNodes.d.ts
4
-
5
4
  /**
6
5
  * # findNodes
7
6
  *
@@ -2,7 +2,6 @@ import { Bimap } from "./internals/types.mjs";
2
2
  import { Edges, Graph, Node, NodeIdentifier, NodeType } from "./types.mjs";
3
3
 
4
4
  //#region src/Graph/forEachEdge.d.ts
5
-
6
5
  /**
7
6
  * # forEachEdge
8
7
  *
@@ -2,7 +2,6 @@ import { Bimap } from "./internals/types.mjs";
2
2
  import { Edges, Graph, Node, NodeIdentifier, NodeOfType, NodeType } from "./types.mjs";
3
3
 
4
4
  //#region src/Graph/forEachNeighbor.d.ts
5
-
6
5
  /**
7
6
  * # forEachNeighbor
8
7
  *
@@ -1,7 +1,6 @@
1
1
  import { Edges, Graph, Node, NodeOfType, NodeType } from "./types.mjs";
2
2
 
3
3
  //#region src/Graph/forEachNode.d.ts
4
-
5
4
  /**
6
5
  * # forEachNode
7
6
  *
@@ -1,7 +1,6 @@
1
1
  import { Edge, Edges, Graph, Node, NodeId } from "./types.mjs";
2
2
 
3
3
  //#region src/Graph/fromJS.d.ts
4
-
5
4
  /**
6
5
  * # fromJS
7
6
  *
@@ -2,7 +2,6 @@ import { Bimap } from "./internals/types.mjs";
2
2
  import { Edges, Graph, Node, NodeIdentifier, NodeType } from "./types.mjs";
3
3
 
4
4
  //#region src/Graph/getEdge.d.ts
5
-
6
5
  /**
7
6
  * # getEdge
8
7
  *
@@ -2,7 +2,6 @@ import { Bimap } from "./internals/types.mjs";
2
2
  import { Edges, Graph, Node, NodeIdentifier, NodeType } from "./types.mjs";
3
3
 
4
4
  //#region src/Graph/getEdges.d.ts
5
-
6
5
  /**
7
6
  * # getEdges
8
7
  *
@@ -2,7 +2,6 @@ import { Bimap } from "./internals/types.mjs";
2
2
  import { Edges, Graph, Node, NodeIdentifier, NodeOfType, NodeType } from "./types.mjs";
3
3
 
4
4
  //#region src/Graph/getNeighbor.d.ts
5
-
6
5
  /**
7
6
  * # getNeighbor
8
7
  *
@@ -2,7 +2,6 @@ import { Bimap } from "./internals/types.mjs";
2
2
  import { Edges, Graph, Node, NodeIdentifier, NodeOfType, NodeType } from "./types.mjs";
3
3
 
4
4
  //#region src/Graph/getNeighbors.d.ts
5
-
6
5
  /**
7
6
  * # getNeighbors
8
7
  *
@@ -1,7 +1,6 @@
1
1
  import { Edges, Graph, Node, NodeIdentifier, NodeOfType, NodeType } from "./types.mjs";
2
2
 
3
3
  //#region src/Graph/getNode.d.ts
4
-
5
4
  /**
6
5
  * # getNode
7
6
  *
@@ -1,7 +1,6 @@
1
1
  import { Edges, Graph, Node, NodeOfType, NodeType } from "./types.mjs";
2
2
 
3
3
  //#region src/Graph/getNodes.d.ts
4
-
5
4
  /**
6
5
  * # getNodes
7
6
  *
@@ -2,7 +2,6 @@ import { Bimap } from "./internals/types.mjs";
2
2
  import { Edges, Graph, Node, NodeIdentifier, NodeType } from "./types.mjs";
3
3
 
4
4
  //#region src/Graph/hasEdge.d.ts
5
-
6
5
  /**
7
6
  * # hasEdge
8
7
  *
@@ -1,7 +1,6 @@
1
1
  import { Edges, Graph, Node, NodeIdentifier, NodeType } from "./types.mjs";
2
2
 
3
3
  //#region src/Graph/hasNode.d.ts
4
-
5
4
  /**
6
5
  * # hasNode
7
6
  *
@@ -29,7 +29,6 @@ import { setNode } from "./setNode.mjs";
29
29
  import { toJS } from "./toJS.mjs";
30
30
 
31
31
  //#region src/Graph/index.d.ts
32
-
33
32
  type NodeId = PropertyKey;
34
33
  type Node = {
35
34
  id: NodeId;
@@ -10,7 +10,7 @@ type TargetTypesMap = ReadonlyMap<any, TargetIdsMap>;
10
10
  type TargetIdsMap = ReadonlyMap<NodeId, Edge>;
11
11
  type NodeIdsMap<T extends Node, U extends NodeType<T> = NodeType<T>> = ReadonlyMap<NodeId, NodeOfType<T, U>>;
12
12
  interface NodeTypesMap<T extends Node> extends ReadonlyMap<NodeType<T>, NodeIdsMap<T, NodeType<T>>> {
13
- get: <V$1 extends NodeType<T>>(type: V$1) => NodeIdsMap<T, V$1> | undefined;
13
+ get: <V extends NodeType<T>>(type: V) => NodeIdsMap<T, V> | undefined;
14
14
  }
15
15
  //#endregion
16
16
  export { Bimap, NodeTypesMap, SourceTypesMap };
@@ -2,7 +2,6 @@ import { Bimap } from "./internals/types.mjs";
2
2
  import { Edges, Graph, Node, NodeIdentifier, NodeType } from "./types.mjs";
3
3
 
4
4
  //#region src/Graph/mapEdge.d.ts
5
-
6
5
  /**
7
6
  * # mapEdge
8
7
  *
@@ -1,7 +1,6 @@
1
1
  import { Edges, Graph, Node, NodeIdentifier, NodeOfType, NodeType } from "./types.mjs";
2
2
 
3
3
  //#region src/Graph/mapNode.d.ts
4
-
5
4
  /**
6
5
  * # mapNode
7
6
  *
@@ -70,12 +70,12 @@ function mapNode(graph, node, update) {
70
70
  const next = update(prev);
71
71
  if (prev === next) return graph;
72
72
  if (prev.id === next.id && prev.type === next.type) return setNode(graph, next);
73
- return batch(graph, (graph$1) => {
74
- graph$1 = setNode(graph$1, next);
75
- const edges = graph$1.get("edges");
76
- for (const [targetType, targetIds] of edges?.get(prev.type)?.get(prev.id) ?? []) for (const [targetId, targetData] of targetIds) graph$1 = setEdge(graph$1, [next.type, next.id], [targetType, targetId], targetData);
77
- graph$1 = removeNode(graph$1, prev);
78
- return graph$1;
73
+ return batch(graph, (graph) => {
74
+ graph = setNode(graph, next);
75
+ const edges = graph.get("edges");
76
+ for (const [targetType, targetIds] of edges?.get(prev.type)?.get(prev.id) ?? []) for (const [targetId, targetData] of targetIds) graph = setEdge(graph, [next.type, next.id], [targetType, targetId], targetData);
77
+ graph = removeNode(graph, prev);
78
+ return graph;
79
79
  });
80
80
  }
81
81
 
@@ -2,7 +2,6 @@ import { Bimap } from "./internals/types.mjs";
2
2
  import { Edges, Graph, Node, NodeIdentifier, NodeType } from "./types.mjs";
3
3
 
4
4
  //#region src/Graph/mergeEdge.d.ts
5
-
6
5
  /**
7
6
  * # mergeEdge
8
7
  *
@@ -1,7 +1,6 @@
1
1
  import { Edges, Graph, Node, NodeIdentifier, NodeOfType, NodeType } from "./types.mjs";
2
2
 
3
3
  //#region src/Graph/mergeNode.d.ts
4
-
5
4
  /**
6
5
  * # mergeNode
7
6
  *
@@ -46,13 +46,13 @@ import { mapNode } from "./mapNode.mjs";
46
46
  *
47
47
  */
48
48
  function mergeNode(graph, node, update) {
49
- return mapNode(graph, node, (node$1) => {
49
+ return mapNode(graph, node, (node) => {
50
50
  const keys = Object.keys(update);
51
- if (keys.length === 0) return node$1;
52
- return keys.some((k) => update[k] !== node$1[k]) ? {
53
- ...node$1,
51
+ if (keys.length === 0) return node;
52
+ return keys.some((k) => update[k] !== node[k]) ? {
53
+ ...node,
54
54
  ...update
55
- } : node$1;
55
+ } : node;
56
56
  });
57
57
  }
58
58
 
@@ -2,7 +2,6 @@ import { Bimap } from "./internals/types.mjs";
2
2
  import { Edges, Graph, Node, NodeIdentifier, NodeType } from "./types.mjs";
3
3
 
4
4
  //#region src/Graph/removeEdge.d.ts
5
-
6
5
  /**
7
6
  * # removeEdge
8
7
  *
@@ -48,22 +48,22 @@ import { unsetInGraph } from "./internals/core.mjs";
48
48
  function removeEdge(graph, source, target) {
49
49
  const [sourceType, sourceId] = parseNodeIdentifier(source);
50
50
  const [targetType, targetId] = parseNodeIdentifier(target);
51
- return batch(graph, (graph$1) => {
52
- graph$1 = unsetInGraph(graph$1, [
51
+ return batch(graph, (graph) => {
52
+ graph = unsetInGraph(graph, [
53
53
  "edges",
54
54
  sourceType,
55
55
  sourceId,
56
56
  targetType,
57
57
  targetId
58
58
  ]);
59
- graph$1 = unsetInGraph(graph$1, [
59
+ graph = unsetInGraph(graph, [
60
60
  "edges",
61
61
  targetType,
62
62
  targetId,
63
63
  sourceType,
64
64
  sourceId
65
65
  ]);
66
- return graph$1;
66
+ return graph;
67
67
  });
68
68
  }
69
69
 
@@ -1,7 +1,6 @@
1
1
  import { Edges, Graph, Node, NodeIdentifier, NodeType } from "./types.mjs";
2
2
 
3
3
  //#region src/Graph/removeNode.d.ts
4
-
5
4
  /**
6
5
  * # removeNode
7
6
  *
@@ -45,25 +45,25 @@ import { unsetInGraph } from "./internals/core.mjs";
45
45
  */
46
46
  function removeNode(graph, node) {
47
47
  const [sourceType, sourceId] = parseNodeIdentifier(node);
48
- return batch(graph, (graph$1) => {
49
- for (const [targetType, targets] of graph$1.get("edges")?.get(sourceType)?.get(sourceId) ?? []) for (const targetId of targets.keys()) graph$1 = unsetInGraph(graph$1, [
48
+ return batch(graph, (graph) => {
49
+ for (const [targetType, targets] of graph.get("edges")?.get(sourceType)?.get(sourceId) ?? []) for (const targetId of targets.keys()) graph = unsetInGraph(graph, [
50
50
  "edges",
51
51
  targetType,
52
52
  targetId,
53
53
  sourceType,
54
54
  sourceId
55
55
  ]);
56
- graph$1 = unsetInGraph(graph$1, [
56
+ graph = unsetInGraph(graph, [
57
57
  "edges",
58
58
  sourceType,
59
59
  sourceId
60
60
  ]);
61
- graph$1 = unsetInGraph(graph$1, [
61
+ graph = unsetInGraph(graph, [
62
62
  "nodes",
63
63
  sourceType,
64
64
  sourceId
65
65
  ]);
66
- return graph$1;
66
+ return graph;
67
67
  });
68
68
  }
69
69
 
@@ -2,7 +2,6 @@ import { Bimap } from "./internals/types.mjs";
2
2
  import { Edges, Graph, Node, NodeIdentifier, NodeType } from "./types.mjs";
3
3
 
4
4
  //#region src/Graph/setEdge.d.ts
5
-
6
5
  /**
7
6
  * # setEdge
8
7
  *
@@ -55,22 +55,22 @@ function setEdge(graph, source, target, ...args) {
55
55
  const [targetType, targetId] = parseNodeIdentifier(target);
56
56
  if (!hasNode(graph, source)) return graph;
57
57
  if (!hasNode(graph, target)) return graph;
58
- return batch(graph, (graph$1) => {
59
- graph$1 = setInGraph(graph$1, [
58
+ return batch(graph, (graph) => {
59
+ graph = setInGraph(graph, [
60
60
  "edges",
61
61
  sourceType,
62
62
  sourceId,
63
63
  targetType,
64
64
  targetId
65
65
  ], edge);
66
- graph$1 = setInGraph(graph$1, [
66
+ graph = setInGraph(graph, [
67
67
  "edges",
68
68
  targetType,
69
69
  targetId,
70
70
  sourceType,
71
71
  sourceId
72
72
  ], edge);
73
- return graph$1;
73
+ return graph;
74
74
  });
75
75
  }
76
76
 
@@ -1,7 +1,6 @@
1
1
  import { Edges, Graph, Node } from "./types.mjs";
2
2
 
3
3
  //#region src/Graph/setNode.d.ts
4
-
5
4
  /**
6
5
  * # setNode
7
6
  *
@@ -1,7 +1,6 @@
1
1
  import { Edge, Edges, Graph, Node, NodeId } from "./types.mjs";
2
2
 
3
3
  //#region src/Graph/toJS.d.ts
4
-
5
4
  /**
6
5
  * # toJS
7
6
  *
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@monstermann/graph",
3
3
  "type": "module",
4
- "version": "0.1.0",
4
+ "version": "0.2.0",
5
5
  "description": "Functional graph data-structure.",
6
6
  "author": "Michael Ostermann <michaelostermann@me.com>",
7
7
  "license": "MIT",