graphwise 1.7.0 → 1.8.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.
Files changed (130) hide show
  1. package/README.md +81 -30
  2. package/dist/adjacency-map-B6wPtmaq.cjs +234 -0
  3. package/dist/adjacency-map-B6wPtmaq.cjs.map +1 -0
  4. package/dist/adjacency-map-D-Ul7V1r.js +229 -0
  5. package/dist/adjacency-map-D-Ul7V1r.js.map +1 -0
  6. package/dist/async/index.cjs +16 -0
  7. package/dist/async/index.js +3 -0
  8. package/dist/expansion/dfs-priority.d.ts +11 -0
  9. package/dist/expansion/dfs-priority.d.ts.map +1 -1
  10. package/dist/expansion/dome.d.ts +20 -0
  11. package/dist/expansion/dome.d.ts.map +1 -1
  12. package/dist/expansion/edge.d.ts +18 -0
  13. package/dist/expansion/edge.d.ts.map +1 -1
  14. package/dist/expansion/flux.d.ts +16 -0
  15. package/dist/expansion/flux.d.ts.map +1 -1
  16. package/dist/expansion/frontier-balanced.d.ts +11 -0
  17. package/dist/expansion/frontier-balanced.d.ts.map +1 -1
  18. package/dist/expansion/fuse.d.ts +16 -0
  19. package/dist/expansion/fuse.d.ts.map +1 -1
  20. package/dist/expansion/hae.d.ts +16 -0
  21. package/dist/expansion/hae.d.ts.map +1 -1
  22. package/dist/expansion/index.cjs +43 -0
  23. package/dist/expansion/index.js +2 -0
  24. package/dist/expansion/lace.d.ts +16 -0
  25. package/dist/expansion/lace.d.ts.map +1 -1
  26. package/dist/expansion/maze.d.ts +17 -0
  27. package/dist/expansion/maze.d.ts.map +1 -1
  28. package/dist/expansion/pipe.d.ts +16 -0
  29. package/dist/expansion/pipe.d.ts.map +1 -1
  30. package/dist/expansion/random-priority.d.ts +18 -0
  31. package/dist/expansion/random-priority.d.ts.map +1 -1
  32. package/dist/expansion/reach.d.ts +17 -0
  33. package/dist/expansion/reach.d.ts.map +1 -1
  34. package/dist/expansion/sage.d.ts +15 -0
  35. package/dist/expansion/sage.d.ts.map +1 -1
  36. package/dist/expansion/sift.d.ts +16 -0
  37. package/dist/expansion/sift.d.ts.map +1 -1
  38. package/dist/expansion/standard-bfs.d.ts +11 -0
  39. package/dist/expansion/standard-bfs.d.ts.map +1 -1
  40. package/dist/expansion/tide.d.ts +16 -0
  41. package/dist/expansion/tide.d.ts.map +1 -1
  42. package/dist/expansion/warp.d.ts +16 -0
  43. package/dist/expansion/warp.d.ts.map +1 -1
  44. package/dist/expansion-FkmEYlrQ.cjs +1949 -0
  45. package/dist/expansion-FkmEYlrQ.cjs.map +1 -0
  46. package/dist/expansion-sldRognt.js +1704 -0
  47. package/dist/expansion-sldRognt.js.map +1 -0
  48. package/dist/extraction/index.cjs +630 -0
  49. package/dist/extraction/index.cjs.map +1 -0
  50. package/dist/extraction/index.js +621 -0
  51. package/dist/extraction/index.js.map +1 -0
  52. package/dist/graph/index.cjs +2 -229
  53. package/dist/graph/index.js +1 -228
  54. package/dist/index/index.cjs +131 -3406
  55. package/dist/index/index.js +14 -3334
  56. package/dist/index.d.ts +1 -0
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/jaccard-Bmd1IEFO.cjs +50 -0
  59. package/dist/jaccard-Bmd1IEFO.cjs.map +1 -0
  60. package/dist/jaccard-Yddrtt5D.js +39 -0
  61. package/dist/jaccard-Yddrtt5D.js.map +1 -0
  62. package/dist/{kmeans-BIgSyGKu.cjs → kmeans-D3yX5QFs.cjs} +1 -1
  63. package/dist/{kmeans-BIgSyGKu.cjs.map → kmeans-D3yX5QFs.cjs.map} +1 -1
  64. package/dist/{kmeans-87ExSUNZ.js → kmeans-DVCe61Me.js} +1 -1
  65. package/dist/{kmeans-87ExSUNZ.js.map → kmeans-DVCe61Me.js.map} +1 -1
  66. package/dist/ops-4nmI-pwk.cjs +277 -0
  67. package/dist/ops-4nmI-pwk.cjs.map +1 -0
  68. package/dist/ops-Zsu4ecEG.js +212 -0
  69. package/dist/ops-Zsu4ecEG.js.map +1 -0
  70. package/dist/priority-queue-ChVLoG6T.cjs +148 -0
  71. package/dist/priority-queue-ChVLoG6T.cjs.map +1 -0
  72. package/dist/priority-queue-DqCuFTR8.js +143 -0
  73. package/dist/priority-queue-DqCuFTR8.js.map +1 -0
  74. package/dist/ranking/index.cjs +43 -0
  75. package/dist/ranking/index.js +4 -0
  76. package/dist/ranking/mi/adamic-adar.d.ts +8 -0
  77. package/dist/ranking/mi/adamic-adar.d.ts.map +1 -1
  78. package/dist/ranking/mi/adaptive.d.ts +8 -0
  79. package/dist/ranking/mi/adaptive.d.ts.map +1 -1
  80. package/dist/ranking/mi/cosine.d.ts +7 -0
  81. package/dist/ranking/mi/cosine.d.ts.map +1 -1
  82. package/dist/ranking/mi/etch.d.ts +8 -0
  83. package/dist/ranking/mi/etch.d.ts.map +1 -1
  84. package/dist/ranking/mi/hub-promoted.d.ts +7 -0
  85. package/dist/ranking/mi/hub-promoted.d.ts.map +1 -1
  86. package/dist/ranking/mi/index.cjs +581 -0
  87. package/dist/ranking/mi/index.cjs.map +1 -0
  88. package/dist/ranking/mi/index.js +555 -0
  89. package/dist/ranking/mi/index.js.map +1 -0
  90. package/dist/ranking/mi/jaccard.d.ts +7 -0
  91. package/dist/ranking/mi/jaccard.d.ts.map +1 -1
  92. package/dist/ranking/mi/notch.d.ts +8 -0
  93. package/dist/ranking/mi/notch.d.ts.map +1 -1
  94. package/dist/ranking/mi/overlap-coefficient.d.ts +7 -0
  95. package/dist/ranking/mi/overlap-coefficient.d.ts.map +1 -1
  96. package/dist/ranking/mi/resource-allocation.d.ts +8 -0
  97. package/dist/ranking/mi/resource-allocation.d.ts.map +1 -1
  98. package/dist/ranking/mi/scale.d.ts +7 -0
  99. package/dist/ranking/mi/scale.d.ts.map +1 -1
  100. package/dist/ranking/mi/skew.d.ts +7 -0
  101. package/dist/ranking/mi/skew.d.ts.map +1 -1
  102. package/dist/ranking/mi/sorensen.d.ts +7 -0
  103. package/dist/ranking/mi/sorensen.d.ts.map +1 -1
  104. package/dist/ranking/mi/span.d.ts +8 -0
  105. package/dist/ranking/mi/span.d.ts.map +1 -1
  106. package/dist/ranking/mi/types.d.ts +12 -0
  107. package/dist/ranking/mi/types.d.ts.map +1 -1
  108. package/dist/ranking/parse.d.ts +24 -1
  109. package/dist/ranking/parse.d.ts.map +1 -1
  110. package/dist/ranking-mUm9rV-C.js +1016 -0
  111. package/dist/ranking-mUm9rV-C.js.map +1 -0
  112. package/dist/ranking-riRrEVAR.cjs +1093 -0
  113. package/dist/ranking-riRrEVAR.cjs.map +1 -0
  114. package/dist/seeds/index.cjs +1 -1
  115. package/dist/seeds/index.js +1 -1
  116. package/dist/structures/index.cjs +2 -143
  117. package/dist/structures/index.js +1 -142
  118. package/dist/utils/index.cjs +1 -1
  119. package/dist/utils/index.js +1 -1
  120. package/dist/utils-CcIrKAEb.js +22 -0
  121. package/dist/utils-CcIrKAEb.js.map +1 -0
  122. package/dist/utils-CpyzmzIF.cjs +33 -0
  123. package/dist/utils-CpyzmzIF.cjs.map +1 -0
  124. package/package.json +6 -1
  125. package/dist/graph/index.cjs.map +0 -1
  126. package/dist/graph/index.js.map +0 -1
  127. package/dist/index/index.cjs.map +0 -1
  128. package/dist/index/index.js.map +0 -1
  129. package/dist/structures/index.cjs.map +0 -1
  130. package/dist/structures/index.js.map +0 -1
@@ -0,0 +1,229 @@
1
+ //#region src/graph/adjacency-map.ts
2
+ /**
3
+ * Graph implementation using adjacency map data structure.
4
+ *
5
+ * Uses Map<NodeId, N> for node storage and Map<NodeId, Map<NodeId, E>>
6
+ * for adjacency representation. This provides O(1) average-case lookup
7
+ * for nodes and edges, with memory proportional to V + E.
8
+ *
9
+ * @typeParam N - Node data type, must extend NodeData
10
+ * @typeParam E - Edge data type, must extend EdgeData
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * // Create a directed citation graph
15
+ * const graph = AdjacencyMapGraph.directed<AuthorNode, CitationEdge>()
16
+ * .addNode({ id: 'A1', name: 'Alice' })
17
+ * .addNode({ id: 'B1', name: 'Bob' })
18
+ * .addEdge({ source: 'A1', target: 'B1', year: 2024 });
19
+ * ```
20
+ */
21
+ var AdjacencyMapGraph = class AdjacencyMapGraph {
22
+ directed;
23
+ nodes;
24
+ adjacency;
25
+ reverseAdjacency;
26
+ _edgeCount;
27
+ constructor(directed) {
28
+ this.directed = directed;
29
+ this.nodes = /* @__PURE__ */ new Map();
30
+ this.adjacency = /* @__PURE__ */ new Map();
31
+ this.reverseAdjacency = directed ? /* @__PURE__ */ new Map() : null;
32
+ this._edgeCount = 0;
33
+ }
34
+ /**
35
+ * Create a new directed graph.
36
+ *
37
+ * In a directed graph, edges have direction from source to target.
38
+ * The `neighbours` method with direction 'out' returns successors,
39
+ * and direction 'in' returns predecessors.
40
+ *
41
+ * @typeParam N - Node data type
42
+ * @typeParam E - Edge data type
43
+ * @returns A new empty directed graph
44
+ */
45
+ static directed() {
46
+ return new AdjacencyMapGraph(true);
47
+ }
48
+ /**
49
+ * Create a new undirected graph.
50
+ *
51
+ * In an undirected graph, edges have no direction. Adding an edge
52
+ * from A to B automatically creates the connection from B to A.
53
+ *
54
+ * @typeParam N - Node data type
55
+ * @typeParam E - Edge data type
56
+ * @returns A new empty undirected graph
57
+ */
58
+ static undirected() {
59
+ return new AdjacencyMapGraph(false);
60
+ }
61
+ get nodeCount() {
62
+ return this.nodes.size;
63
+ }
64
+ get edgeCount() {
65
+ return this._edgeCount;
66
+ }
67
+ hasNode(id) {
68
+ return this.nodes.has(id);
69
+ }
70
+ getNode(id) {
71
+ return this.nodes.get(id);
72
+ }
73
+ /**
74
+ * Iterate over all node identifiers in the graph.
75
+ *
76
+ * @returns An iterable of all node IDs
77
+ */
78
+ *nodeIds() {
79
+ yield* this.nodes.keys();
80
+ }
81
+ neighbours(id, direction = "out") {
82
+ if (!this.nodes.has(id)) return [];
83
+ if (this.directed) {
84
+ if (direction === "out") return this.adjacency.get(id)?.keys() ?? [];
85
+ if (direction === "in") return this.reverseAdjacency?.get(id)?.keys() ?? [];
86
+ return this.iterateBothDirections(id);
87
+ }
88
+ return this.adjacency.get(id)?.keys() ?? [];
89
+ }
90
+ *iterateBothDirections(id) {
91
+ const seen = /* @__PURE__ */ new Set();
92
+ const outNeighbours = this.adjacency.get(id);
93
+ if (outNeighbours !== void 0) {
94
+ for (const neighbour of outNeighbours.keys()) if (!seen.has(neighbour)) {
95
+ seen.add(neighbour);
96
+ yield neighbour;
97
+ }
98
+ }
99
+ const inNeighbours = this.reverseAdjacency?.get(id);
100
+ if (inNeighbours !== void 0) {
101
+ for (const neighbour of inNeighbours.keys()) if (!seen.has(neighbour)) {
102
+ seen.add(neighbour);
103
+ yield neighbour;
104
+ }
105
+ }
106
+ }
107
+ degree(id, direction = "out") {
108
+ if (!this.nodes.has(id)) return 0;
109
+ if (this.directed) {
110
+ if (direction === "out") return this.adjacency.get(id)?.size ?? 0;
111
+ if (direction === "in") return this.reverseAdjacency?.get(id)?.size ?? 0;
112
+ return (this.adjacency.get(id)?.size ?? 0) + (this.reverseAdjacency?.get(id)?.size ?? 0);
113
+ }
114
+ return this.adjacency.get(id)?.size ?? 0;
115
+ }
116
+ getEdge(source, target) {
117
+ const forward = this.adjacency.get(source)?.get(target);
118
+ if (forward !== void 0) return forward;
119
+ if (!this.directed) return this.adjacency.get(target)?.get(source);
120
+ }
121
+ *edges() {
122
+ const emitted = /* @__PURE__ */ new Set();
123
+ for (const [, neighbours] of this.adjacency) for (const [, edge] of neighbours) if (this.directed) yield edge;
124
+ else {
125
+ const key = this.edgeKey(edge.source, edge.target);
126
+ if (!emitted.has(key)) {
127
+ emitted.add(key);
128
+ yield edge;
129
+ }
130
+ }
131
+ }
132
+ edgeKey(source, target) {
133
+ const [a, b] = source < target ? [source, target] : [target, source];
134
+ return `${a}::${b}`;
135
+ }
136
+ /**
137
+ * Add a node to the graph (builder pattern).
138
+ *
139
+ * If a node with the same ID already exists, it is not replaced.
140
+ *
141
+ * @param node - The node data to add
142
+ * @returns this (for method chaining)
143
+ */
144
+ addNode(node) {
145
+ if (!this.nodes.has(node.id)) this.nodes.set(node.id, node);
146
+ return this;
147
+ }
148
+ /**
149
+ * Add an edge to the graph (builder pattern).
150
+ *
151
+ * @param edge - The edge data to add
152
+ * @returns this (for method chaining)
153
+ * @throws Error if either endpoint node does not exist
154
+ */
155
+ addEdge(edge) {
156
+ if (!this.nodes.has(edge.source) || !this.nodes.has(edge.target)) throw new Error(`Cannot add edge: nodes ${edge.source} and/or ${edge.target} do not exist`);
157
+ if (!this.directed) {
158
+ const [cSource, cTarget] = edge.source < edge.target ? [edge.source, edge.target] : [edge.target, edge.source];
159
+ if (this.adjacency.get(cSource)?.get(cTarget) !== void 0) {
160
+ this.adjacency.get(cSource)?.set(cTarget, edge);
161
+ return this;
162
+ }
163
+ }
164
+ let forwardMap = this.adjacency.get(edge.source);
165
+ if (forwardMap === void 0) {
166
+ forwardMap = /* @__PURE__ */ new Map();
167
+ this.adjacency.set(edge.source, forwardMap);
168
+ }
169
+ const isNewEdge = !forwardMap.has(edge.target);
170
+ forwardMap.set(edge.target, edge);
171
+ if (this.directed) {
172
+ let reverseMap = this.reverseAdjacency?.get(edge.target);
173
+ if (reverseMap === void 0) {
174
+ reverseMap = /* @__PURE__ */ new Map();
175
+ this.reverseAdjacency?.set(edge.target, reverseMap);
176
+ }
177
+ reverseMap.set(edge.source, edge);
178
+ } else {
179
+ let reverseMap = this.adjacency.get(edge.target);
180
+ if (reverseMap === void 0) {
181
+ reverseMap = /* @__PURE__ */ new Map();
182
+ this.adjacency.set(edge.target, reverseMap);
183
+ }
184
+ reverseMap.set(edge.source, edge);
185
+ }
186
+ if (isNewEdge) this._edgeCount++;
187
+ return this;
188
+ }
189
+ removeNode(id) {
190
+ if (!this.nodes.has(id)) return false;
191
+ const outNeighbours = [...this.adjacency.get(id)?.keys() ?? []];
192
+ for (const neighbour of outNeighbours) this.removeEdgeInternal(id, neighbour);
193
+ if (this.directed && this.reverseAdjacency !== null) {
194
+ const inNeighbours = [...this.reverseAdjacency.get(id)?.keys() ?? []];
195
+ for (const neighbour of inNeighbours) this.removeEdgeFromDirected(neighbour, id);
196
+ }
197
+ this.nodes.delete(id);
198
+ this.adjacency.delete(id);
199
+ this.reverseAdjacency?.delete(id);
200
+ return true;
201
+ }
202
+ /**
203
+ * Remove an edge from a directed graph, updating both adjacency maps.
204
+ * This handles the case where we're removing an edge that points TO the removed node.
205
+ */
206
+ removeEdgeFromDirected(source, target) {
207
+ if (this.adjacency.get(source)?.delete(target) === true) this._edgeCount--;
208
+ this.reverseAdjacency?.get(target)?.delete(source);
209
+ }
210
+ removeEdgeInternal(source, target) {
211
+ if (this.adjacency.get(source)?.delete(target) === true) this._edgeCount--;
212
+ if (this.directed) this.reverseAdjacency?.get(target)?.delete(source);
213
+ else this.adjacency.get(target)?.delete(source);
214
+ }
215
+ removeEdge(source, target) {
216
+ if (!this.hasEdgeInternal(source, target)) return false;
217
+ this.removeEdgeInternal(source, target);
218
+ return true;
219
+ }
220
+ hasEdgeInternal(source, target) {
221
+ if (this.adjacency.get(source)?.has(target) === true) return true;
222
+ if (!this.directed) return this.adjacency.get(target)?.has(source) === true;
223
+ return false;
224
+ }
225
+ };
226
+ //#endregion
227
+ export { AdjacencyMapGraph as t };
228
+
229
+ //# sourceMappingURL=adjacency-map-D-Ul7V1r.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adjacency-map-D-Ul7V1r.js","names":[],"sources":["../src/graph/adjacency-map.ts"],"sourcesContent":["/**\n * Adjacency map graph implementation.\n *\n * This module provides a flexible graph implementation using nested Maps\n * for efficient adjacency list representation. It supports both directed\n * and undirected graphs with builder pattern for convenient construction.\n */\n\nimport type { NodeId, NodeData, EdgeData, Direction } from \"./types\";\nimport type { MutableGraph } from \"./interfaces\";\n\n/**\n * Graph implementation using adjacency map data structure.\n *\n * Uses Map<NodeId, N> for node storage and Map<NodeId, Map<NodeId, E>>\n * for adjacency representation. This provides O(1) average-case lookup\n * for nodes and edges, with memory proportional to V + E.\n *\n * @typeParam N - Node data type, must extend NodeData\n * @typeParam E - Edge data type, must extend EdgeData\n *\n * @example\n * ```typescript\n * // Create a directed citation graph\n * const graph = AdjacencyMapGraph.directed<AuthorNode, CitationEdge>()\n * .addNode({ id: 'A1', name: 'Alice' })\n * .addNode({ id: 'B1', name: 'Bob' })\n * .addEdge({ source: 'A1', target: 'B1', year: 2024 });\n * ```\n */\nexport class AdjacencyMapGraph<\n\tN extends NodeData = NodeData,\n\tE extends EdgeData = EdgeData,\n> implements MutableGraph<N, E> {\n\treadonly directed: boolean;\n\n\tprivate readonly nodes: Map<NodeId, N>;\n\tprivate readonly adjacency: Map<NodeId, Map<NodeId, E>>;\n\tprivate readonly reverseAdjacency: Map<NodeId, Map<NodeId, E>> | null;\n\tprivate _edgeCount: number;\n\n\tprivate constructor(directed: boolean) {\n\t\tthis.directed = directed;\n\t\tthis.nodes = new Map();\n\t\tthis.adjacency = new Map();\n\t\tthis.reverseAdjacency = directed ? new Map() : null;\n\t\tthis._edgeCount = 0;\n\t}\n\n\t/**\n\t * Create a new directed graph.\n\t *\n\t * In a directed graph, edges have direction from source to target.\n\t * The `neighbours` method with direction 'out' returns successors,\n\t * and direction 'in' returns predecessors.\n\t *\n\t * @typeParam N - Node data type\n\t * @typeParam E - Edge data type\n\t * @returns A new empty directed graph\n\t */\n\tstatic directed<\n\t\tN extends NodeData = NodeData,\n\t\tE extends EdgeData = EdgeData,\n\t>(): AdjacencyMapGraph<N, E> {\n\t\treturn new AdjacencyMapGraph<N, E>(true);\n\t}\n\n\t/**\n\t * Create a new undirected graph.\n\t *\n\t * In an undirected graph, edges have no direction. Adding an edge\n\t * from A to B automatically creates the connection from B to A.\n\t *\n\t * @typeParam N - Node data type\n\t * @typeParam E - Edge data type\n\t * @returns A new empty undirected graph\n\t */\n\tstatic undirected<\n\t\tN extends NodeData = NodeData,\n\t\tE extends EdgeData = EdgeData,\n\t>(): AdjacencyMapGraph<N, E> {\n\t\treturn new AdjacencyMapGraph<N, E>(false);\n\t}\n\n\tget nodeCount(): number {\n\t\treturn this.nodes.size;\n\t}\n\n\tget edgeCount(): number {\n\t\treturn this._edgeCount;\n\t}\n\n\thasNode(id: NodeId): boolean {\n\t\treturn this.nodes.has(id);\n\t}\n\n\tgetNode(id: NodeId): N | undefined {\n\t\treturn this.nodes.get(id);\n\t}\n\n\t/**\n\t * Iterate over all node identifiers in the graph.\n\t *\n\t * @returns An iterable of all node IDs\n\t */\n\t*nodeIds(): Iterable<NodeId> {\n\t\tyield* this.nodes.keys();\n\t}\n\n\tneighbours(id: NodeId, direction: Direction = \"out\"): Iterable<NodeId> {\n\t\tif (!this.nodes.has(id)) {\n\t\t\treturn [];\n\t\t}\n\n\t\tif (this.directed) {\n\t\t\tif (direction === \"out\") {\n\t\t\t\treturn this.adjacency.get(id)?.keys() ?? [];\n\t\t\t}\n\t\t\tif (direction === \"in\") {\n\t\t\t\treturn this.reverseAdjacency?.get(id)?.keys() ?? [];\n\t\t\t}\n\t\t\t// direction === 'both'\n\t\t\treturn this.iterateBothDirections(id);\n\t\t}\n\n\t\t// Undirected: all neighbours are in adjacency\n\t\treturn this.adjacency.get(id)?.keys() ?? [];\n\t}\n\n\tprivate *iterateBothDirections(id: NodeId): Iterable<NodeId> {\n\t\tconst seen = new Set<NodeId>();\n\n\t\t// Yield outgoing neighbours\n\t\tconst outNeighbours = this.adjacency.get(id);\n\t\tif (outNeighbours !== undefined) {\n\t\t\tfor (const neighbour of outNeighbours.keys()) {\n\t\t\t\tif (!seen.has(neighbour)) {\n\t\t\t\t\tseen.add(neighbour);\n\t\t\t\t\tyield neighbour;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Yield incoming neighbours\n\t\tconst inNeighbours = this.reverseAdjacency?.get(id);\n\t\tif (inNeighbours !== undefined) {\n\t\t\tfor (const neighbour of inNeighbours.keys()) {\n\t\t\t\tif (!seen.has(neighbour)) {\n\t\t\t\t\tseen.add(neighbour);\n\t\t\t\t\tyield neighbour;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tdegree(id: NodeId, direction: Direction = \"out\"): number {\n\t\tif (!this.nodes.has(id)) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tif (this.directed) {\n\t\t\tif (direction === \"out\") {\n\t\t\t\treturn this.adjacency.get(id)?.size ?? 0;\n\t\t\t}\n\t\t\tif (direction === \"in\") {\n\t\t\t\treturn this.reverseAdjacency?.get(id)?.size ?? 0;\n\t\t\t}\n\t\t\t// direction === 'both': count unique neighbours\n\t\t\tconst outSize = this.adjacency.get(id)?.size ?? 0;\n\t\t\tconst inSize = this.reverseAdjacency?.get(id)?.size ?? 0;\n\t\t\t// Simple sum is sufficient as edges are stored separately\n\t\t\treturn outSize + inSize;\n\t\t}\n\n\t\t// Undirected\n\t\treturn this.adjacency.get(id)?.size ?? 0;\n\t}\n\n\tgetEdge(source: NodeId, target: NodeId): E | undefined {\n\t\t// For undirected, try both orders\n\t\tconst forward = this.adjacency.get(source)?.get(target);\n\t\tif (forward !== undefined) {\n\t\t\treturn forward;\n\t\t}\n\n\t\tif (!this.directed) {\n\t\t\treturn this.adjacency.get(target)?.get(source);\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\t*edges(): Iterable<E> {\n\t\tconst emitted = new Set<string>();\n\n\t\tfor (const [, neighbours] of this.adjacency) {\n\t\t\tfor (const [, edge] of neighbours) {\n\t\t\t\tif (this.directed) {\n\t\t\t\t\tyield edge;\n\t\t\t\t} else {\n\t\t\t\t\t// For undirected, avoid emitting duplicate edges\n\t\t\t\t\tconst key = this.edgeKey(edge.source, edge.target);\n\t\t\t\t\tif (!emitted.has(key)) {\n\t\t\t\t\t\temitted.add(key);\n\t\t\t\t\t\tyield edge;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate edgeKey(source: NodeId, target: NodeId): string {\n\t\t// Create a canonical key for undirected edges\n\t\tconst [a, b] = source < target ? [source, target] : [target, source];\n\t\treturn `${a}::${b}`;\n\t}\n\n\t/**\n\t * Add a node to the graph (builder pattern).\n\t *\n\t * If a node with the same ID already exists, it is not replaced.\n\t *\n\t * @param node - The node data to add\n\t * @returns this (for method chaining)\n\t */\n\taddNode(node: N): this {\n\t\tif (!this.nodes.has(node.id)) {\n\t\t\tthis.nodes.set(node.id, node);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Add an edge to the graph (builder pattern).\n\t *\n\t * @param edge - The edge data to add\n\t * @returns this (for method chaining)\n\t * @throws Error if either endpoint node does not exist\n\t */\n\taddEdge(edge: E): this {\n\t\t// Ensure both nodes exist\n\t\tif (!this.nodes.has(edge.source) || !this.nodes.has(edge.target)) {\n\t\t\tthrow new Error(\n\t\t\t\t`Cannot add edge: nodes ${edge.source} and/or ${edge.target} do not exist`,\n\t\t\t);\n\t\t}\n\n\t\tif (!this.directed) {\n\t\t\t// Canonical direction: source < target (prevents duplicate storage)\n\t\t\tconst [cSource, cTarget] =\n\t\t\t\tedge.source < edge.target\n\t\t\t\t\t? [edge.source, edge.target]\n\t\t\t\t\t: [edge.target, edge.source];\n\t\t\t// Check if edge already exists before incrementing edgeCount\n\t\t\tconst existingEdge = this.adjacency.get(cSource)?.get(cTarget);\n\t\t\tif (existingEdge !== undefined) {\n\t\t\t\t// Edge already exists — update data but don't increment count\n\t\t\t\tthis.adjacency.get(cSource)?.set(cTarget, edge);\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}\n\n\t\t// Store in forward adjacency\n\t\tlet forwardMap = this.adjacency.get(edge.source);\n\t\tif (forwardMap === undefined) {\n\t\t\tforwardMap = new Map();\n\t\t\tthis.adjacency.set(edge.source, forwardMap);\n\t\t}\n\n\t\tconst isNewEdge = !forwardMap.has(edge.target);\n\t\tforwardMap.set(edge.target, edge);\n\n\t\tif (this.directed) {\n\t\t\t// Store reverse reference for efficient predecessor lookup\n\t\t\tlet reverseMap = this.reverseAdjacency?.get(edge.target);\n\t\t\tif (reverseMap === undefined) {\n\t\t\t\treverseMap = new Map();\n\t\t\t\tthis.reverseAdjacency?.set(edge.target, reverseMap);\n\t\t\t}\n\t\t\treverseMap.set(edge.source, edge);\n\t\t} else {\n\t\t\t// For undirected, also store in reverse direction\n\t\t\tlet reverseMap = this.adjacency.get(edge.target);\n\t\t\tif (reverseMap === undefined) {\n\t\t\t\treverseMap = new Map();\n\t\t\t\tthis.adjacency.set(edge.target, reverseMap);\n\t\t\t}\n\t\t\treverseMap.set(edge.source, edge);\n\t\t}\n\n\t\tif (isNewEdge) {\n\t\t\tthis._edgeCount++;\n\t\t}\n\t\treturn this;\n\t}\n\n\tremoveNode(id: NodeId): boolean {\n\t\tif (!this.nodes.has(id)) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Remove all outgoing edges from this node\n\t\tconst outNeighbours = [...(this.adjacency.get(id)?.keys() ?? [])];\n\t\tfor (const neighbour of outNeighbours) {\n\t\t\tthis.removeEdgeInternal(id, neighbour);\n\t\t}\n\n\t\t// For directed graphs, also remove incoming edges to this node\n\t\tif (this.directed && this.reverseAdjacency !== null) {\n\t\t\tconst inNeighbours = [...(this.reverseAdjacency.get(id)?.keys() ?? [])];\n\t\t\tfor (const neighbour of inNeighbours) {\n\t\t\t\t// Remove the edge from neighbour -> id\n\t\t\t\tthis.removeEdgeFromDirected(neighbour, id);\n\t\t\t}\n\t\t}\n\n\t\t// Remove the node itself\n\t\tthis.nodes.delete(id);\n\t\tthis.adjacency.delete(id);\n\t\tthis.reverseAdjacency?.delete(id);\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Remove an edge from a directed graph, updating both adjacency maps.\n\t * This handles the case where we're removing an edge that points TO the removed node.\n\t */\n\tprivate removeEdgeFromDirected(source: NodeId, target: NodeId): void {\n\t\t// Remove from forward adjacency (source -> target)\n\t\tconst forwardMap = this.adjacency.get(source);\n\t\tif (forwardMap?.delete(target) === true) {\n\t\t\tthis._edgeCount--;\n\t\t}\n\n\t\t// Remove from reverse adjacency\n\t\tthis.reverseAdjacency?.get(target)?.delete(source);\n\t}\n\n\tprivate removeEdgeInternal(source: NodeId, target: NodeId): void {\n\t\t// Remove from forward adjacency\n\t\tconst forwardMap = this.adjacency.get(source);\n\t\tif (forwardMap?.delete(target) === true) {\n\t\t\tthis._edgeCount--;\n\t\t}\n\n\t\tif (this.directed) {\n\t\t\t// Remove from reverse adjacency\n\t\t\tthis.reverseAdjacency?.get(target)?.delete(source);\n\t\t} else {\n\t\t\t// For undirected, remove both directions\n\t\t\tthis.adjacency.get(target)?.delete(source);\n\t\t}\n\t}\n\n\tremoveEdge(source: NodeId, target: NodeId): boolean {\n\t\t// Check if edge exists\n\t\tif (!this.hasEdgeInternal(source, target)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.removeEdgeInternal(source, target);\n\t\treturn true;\n\t}\n\n\tprivate hasEdgeInternal(source: NodeId, target: NodeId): boolean {\n\t\tconst forward = this.adjacency.get(source)?.has(target) === true;\n\t\tif (forward) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (!this.directed) {\n\t\t\treturn this.adjacency.get(target)?.has(source) === true;\n\t\t}\n\n\t\treturn false;\n\t}\n}\n"],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_utils = require("../utils-CpyzmzIF.cjs");
3
+ const require_ops = require("../ops-4nmI-pwk.cjs");
4
+ exports.collectAsyncIterable = require_utils.collectAsyncIterable;
5
+ exports.defaultYieldStrategy = require_utils.defaultYieldStrategy;
6
+ exports.opDegree = require_ops.opDegree;
7
+ exports.opGetEdge = require_ops.opGetEdge;
8
+ exports.opGetNode = require_ops.opGetNode;
9
+ exports.opHasNode = require_ops.opHasNode;
10
+ exports.opNeighbours = require_ops.opNeighbours;
11
+ exports.opProgress = require_ops.opProgress;
12
+ exports.opYield = require_ops.opYield;
13
+ exports.resolveAsyncOp = require_ops.resolveAsyncOp;
14
+ exports.resolveSyncOp = require_ops.resolveSyncOp;
15
+ exports.runAsync = require_ops.runAsync;
16
+ exports.runSync = require_ops.runSync;
@@ -0,0 +1,3 @@
1
+ import { n as defaultYieldStrategy, t as collectAsyncIterable } from "../utils-CcIrKAEb.js";
2
+ import { a as opNeighbours, c as resolveAsyncOp, d as runSync, i as opHasNode, l as resolveSyncOp, n as opGetEdge, o as opProgress, r as opGetNode, s as opYield, t as opDegree, u as runAsync } from "../ops-Zsu4ecEG.js";
3
+ export { collectAsyncIterable, defaultYieldStrategy, opDegree, opGetEdge, opGetNode, opHasNode, opNeighbours, opProgress, opYield, resolveAsyncOp, resolveSyncOp, runAsync, runSync };
@@ -1,5 +1,7 @@
1
1
  import { NodeData, EdgeData, ReadableGraph } from '../graph';
2
+ import { AsyncReadableGraph } from '../graph/async-interfaces';
2
3
  import { Seed, ExpansionResult, ExpansionConfig, PriorityContext } from './types';
4
+ import { AsyncExpansionConfig } from './base';
3
5
  /**
4
6
  * DFS priority function: negative iteration produces LIFO ordering.
5
7
  *
@@ -20,4 +22,13 @@ export declare function dfsPriorityFn<N extends NodeData, E extends EdgeData>(_n
20
22
  * @returns Expansion result with discovered paths
21
23
  */
22
24
  export declare function dfsPriority<N extends NodeData, E extends EdgeData>(graph: ReadableGraph<N, E>, seeds: readonly Seed[], config?: ExpansionConfig<N, E>): ExpansionResult;
25
+ /**
26
+ * Run DFS-priority expansion asynchronously (LIFO discovery order).
27
+ *
28
+ * @param graph - Async source graph
29
+ * @param seeds - Seed nodes for expansion
30
+ * @param config - Expansion and async runner configuration
31
+ * @returns Promise resolving to the expansion result
32
+ */
33
+ export declare function dfsPriorityAsync<N extends NodeData, E extends EdgeData>(graph: AsyncReadableGraph<N, E>, seeds: readonly Seed[], config?: AsyncExpansionConfig<N, E>): Promise<ExpansionResult>;
23
34
  //# sourceMappingURL=dfs-priority.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dfs-priority.d.ts","sourceRoot":"","sources":["../../src/expansion/dfs-priority.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,KAAK,EACX,IAAI,EACJ,eAAe,EACf,eAAe,EACf,eAAe,EACf,MAAM,SAAS,CAAC;AAGjB;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EACnE,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,GAC5B,MAAM,CAER;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EACjE,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,MAAM,CAAC,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,GAC5B,eAAe,CAKjB"}
1
+ {"version":3,"file":"dfs-priority.d.ts","sourceRoot":"","sources":["../../src/expansion/dfs-priority.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EACX,IAAI,EACJ,eAAe,EACf,eAAe,EACf,eAAe,EACf,MAAM,SAAS,CAAC;AAEjB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AAEnD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EACnE,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,GAC5B,MAAM,CAER;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EACjE,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,MAAM,CAAC,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,GAC5B,eAAe,CAKjB;AAED;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAC5E,KAAK,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,EAC/B,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,MAAM,CAAC,EAAE,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,GACjC,OAAO,CAAC,eAAe,CAAC,CAE1B"}
@@ -1,5 +1,7 @@
1
1
  import { NodeData, EdgeData, ReadableGraph } from '../graph';
2
+ import { AsyncReadableGraph } from '../graph/async-interfaces';
2
3
  import { Seed, ExpansionResult, ExpansionConfig } from './types';
4
+ import { AsyncExpansionConfig } from './base';
3
5
  /**
4
6
  * Run DOME expansion (degree-ordered).
5
7
  *
@@ -9,8 +11,26 @@ import { Seed, ExpansionResult, ExpansionConfig } from './types';
9
11
  * @returns Expansion result with discovered paths
10
12
  */
11
13
  export declare function dome<N extends NodeData, E extends EdgeData>(graph: ReadableGraph<N, E>, seeds: readonly Seed[], config?: ExpansionConfig<N, E>): ExpansionResult;
14
+ /**
15
+ * Run DOME expansion asynchronously (degree-ordered).
16
+ *
17
+ * @param graph - Async source graph
18
+ * @param seeds - Seed nodes for expansion
19
+ * @param config - Expansion and async runner configuration
20
+ * @returns Promise resolving to the expansion result
21
+ */
22
+ export declare function domeAsync<N extends NodeData, E extends EdgeData>(graph: AsyncReadableGraph<N, E>, seeds: readonly Seed[], config?: AsyncExpansionConfig<N, E>): Promise<ExpansionResult>;
12
23
  /**
13
24
  * DOME with reverse priority (high degree first).
14
25
  */
15
26
  export declare function domeHighDegree<N extends NodeData, E extends EdgeData>(graph: ReadableGraph<N, E>, seeds: readonly Seed[], config?: ExpansionConfig<N, E>): ExpansionResult;
27
+ /**
28
+ * Run DOME high-degree expansion asynchronously (high degree first).
29
+ *
30
+ * @param graph - Async source graph
31
+ * @param seeds - Seed nodes for expansion
32
+ * @param config - Expansion and async runner configuration
33
+ * @returns Promise resolving to the expansion result
34
+ */
35
+ export declare function domeHighDegreeAsync<N extends NodeData, E extends EdgeData>(graph: AsyncReadableGraph<N, E>, seeds: readonly Seed[], config?: AsyncExpansionConfig<N, E>): Promise<ExpansionResult>;
16
36
  //# sourceMappingURL=dome.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dome.d.ts","sourceRoot":"","sources":["../../src/expansion/dome.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,KAAK,EACX,IAAI,EACJ,eAAe,EACf,eAAe,EAEf,MAAM,SAAS,CAAC;AAGjB;;;;;;;GAOG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAC1D,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,MAAM,CAAC,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,GAC5B,eAAe,CAajB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EACpE,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,MAAM,CAAC,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,GAC5B,eAAe,CAajB"}
1
+ {"version":3,"file":"dome.d.ts","sourceRoot":"","sources":["../../src/expansion/dome.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EACX,IAAI,EACJ,eAAe,EACf,eAAe,EAEf,MAAM,SAAS,CAAC;AAEjB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AAsBnD;;;;;;;GAOG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAC1D,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,MAAM,CAAC,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,GAC5B,eAAe,CAKjB;AAED;;;;;;;GAOG;AACH,wBAAsB,SAAS,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EACrE,KAAK,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,EAC/B,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,MAAM,CAAC,EAAE,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,GACjC,OAAO,CAAC,eAAe,CAAC,CAE1B;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EACpE,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,MAAM,CAAC,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,GAC5B,eAAe,CAKjB;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACxC,CAAC,SAAS,QAAQ,EAClB,CAAC,SAAS,QAAQ,EAElB,KAAK,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,EAC/B,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,MAAM,CAAC,EAAE,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,GACjC,OAAO,CAAC,eAAe,CAAC,CAK1B"}
@@ -1,5 +1,7 @@
1
1
  import { NodeData, EdgeData, ReadableGraph } from '../graph';
2
+ import { AsyncReadableGraph } from '../graph/async-interfaces';
2
3
  import { Seed, ExpansionResult, ExpansionConfig } from './types';
4
+ import { AsyncExpansionConfig } from './base';
3
5
  /**
4
6
  * Run EDGE expansion (Entropy-Driven Graph Expansion).
5
7
  *
@@ -12,4 +14,20 @@ import { Seed, ExpansionResult, ExpansionConfig } from './types';
12
14
  * @returns Expansion result with discovered paths
13
15
  */
14
16
  export declare function edge<N extends NodeData, E extends EdgeData>(graph: ReadableGraph<N, E>, seeds: readonly Seed[], config?: ExpansionConfig<N, E>): ExpansionResult;
17
+ /**
18
+ * Run EDGE expansion asynchronously.
19
+ *
20
+ * Delegates to `haeAsync` with the default `node.type` mapper.
21
+ *
22
+ * Note: the HAE priority function accesses `context.graph` to retrieve
23
+ * neighbour types. Full async equivalence requires PriorityContext
24
+ * refactoring (Phase 4b deferred). This export establishes the async API
25
+ * surface; use with a `wrapAsync`-wrapped sync graph for testing.
26
+ *
27
+ * @param graph - Async source graph
28
+ * @param seeds - Seed nodes for expansion
29
+ * @param config - Expansion and async runner configuration
30
+ * @returns Promise resolving to the expansion result
31
+ */
32
+ export declare function edgeAsync<N extends NodeData, E extends EdgeData>(graph: AsyncReadableGraph<N, E>, seeds: readonly Seed[], config?: AsyncExpansionConfig<N, E>): Promise<ExpansionResult>;
15
33
  //# sourceMappingURL=edge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"edge.d.ts","sourceRoot":"","sources":["../../src/expansion/edge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAOtE;;;;;;;;;;GAUG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAC1D,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,MAAM,CAAC,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,GAC5B,eAAe,CAKjB"}
1
+ {"version":3,"file":"edge.d.ts","sourceRoot":"","sources":["../../src/expansion/edge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AACtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AAOnD;;;;;;;;;;GAUG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAC1D,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,MAAM,CAAC,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,GAC5B,eAAe,CAKjB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,SAAS,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EACrE,KAAK,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,EAC/B,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,MAAM,CAAC,EAAE,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,GACjC,OAAO,CAAC,eAAe,CAAC,CAK1B"}
@@ -1,5 +1,7 @@
1
1
  import { NodeData, EdgeData, ReadableGraph } from '../graph';
2
+ import { AsyncReadableGraph } from '../graph/async-interfaces';
2
3
  import { Seed, ExpansionResult, ExpansionConfig } from './types';
4
+ import { AsyncExpansionConfig } from './base';
3
5
  /**
4
6
  * Configuration for MAZE expansion.
5
7
  */
@@ -22,4 +24,18 @@ export interface MAZEConfig<N extends NodeData = NodeData, E extends EdgeData =
22
24
  * @returns Expansion result with discovered paths
23
25
  */
24
26
  export declare function flux<N extends NodeData, E extends EdgeData>(graph: ReadableGraph<N, E>, seeds: readonly Seed[], config?: MAZEConfig<N, E>): ExpansionResult;
27
+ /**
28
+ * Run FLUX expansion asynchronously.
29
+ *
30
+ * Note: the FLUX priority function accesses `context.graph` to compute
31
+ * local density and cross-frontier bridge scores. Full async equivalence
32
+ * requires PriorityContext refactoring (Phase 4b deferred). This export
33
+ * establishes the async API surface.
34
+ *
35
+ * @param graph - Async source graph
36
+ * @param seeds - Seed nodes for expansion
37
+ * @param config - FLUX (MAZEConfig) configuration combined with async runner options
38
+ * @returns Promise resolving to the expansion result
39
+ */
40
+ export declare function fluxAsync<N extends NodeData, E extends EdgeData>(graph: AsyncReadableGraph<N, E>, seeds: readonly Seed[], config?: MAZEConfig<N, E> & AsyncExpansionConfig<N, E>): Promise<ExpansionResult>;
25
41
  //# sourceMappingURL=flux.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"flux.d.ts","sourceRoot":"","sources":["../../src/expansion/flux.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,KAAK,EACX,IAAI,EACJ,eAAe,EACf,eAAe,EAEf,MAAM,SAAS,CAAC;AAIjB;;GAEG;AACH,MAAM,WAAW,UAAU,CAC1B,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAC7B,CAAC,SAAS,QAAQ,GAAG,QAAQ,CAC5B,SAAQ,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9B,kEAAkE;IAClE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,iEAAiE;IACjE,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CAClC;AA0ED;;;;;;;;;;;GAWG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAC1D,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,GACvB,eAAe,CAcjB"}
1
+ {"version":3,"file":"flux.d.ts","sourceRoot":"","sources":["../../src/expansion/flux.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EACX,IAAI,EACJ,eAAe,EACf,eAAe,EAEf,MAAM,SAAS,CAAC;AAEjB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AAInD;;GAEG;AACH,MAAM,WAAW,UAAU,CAC1B,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAC7B,CAAC,SAAS,QAAQ,GAAG,QAAQ,CAC5B,SAAQ,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9B,kEAAkE;IAClE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,iEAAiE;IACjE,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CAClC;AA0ED;;;;;;;;;;;GAWG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAC1D,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,GACvB,eAAe,CAcjB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,SAAS,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EACrE,KAAK,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,EAC/B,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,GACpD,OAAO,CAAC,eAAe,CAAC,CAW1B"}
@@ -1,5 +1,7 @@
1
1
  import { NodeData, EdgeData, ReadableGraph } from '../graph';
2
+ import { AsyncReadableGraph } from '../graph/async-interfaces';
2
3
  import { Seed, ExpansionResult, ExpansionConfig } from './types';
4
+ import { AsyncExpansionConfig } from './base';
3
5
  /**
4
6
  * Run frontier-balanced expansion (round-robin across frontiers).
5
7
  *
@@ -9,4 +11,13 @@ import { Seed, ExpansionResult, ExpansionConfig } from './types';
9
11
  * @returns Expansion result with discovered paths
10
12
  */
11
13
  export declare function frontierBalanced<N extends NodeData, E extends EdgeData>(graph: ReadableGraph<N, E>, seeds: readonly Seed[], config?: ExpansionConfig<N, E>): ExpansionResult;
14
+ /**
15
+ * Run frontier-balanced expansion asynchronously (round-robin across frontiers).
16
+ *
17
+ * @param graph - Async source graph
18
+ * @param seeds - Seed nodes for expansion
19
+ * @param config - Expansion and async runner configuration
20
+ * @returns Promise resolving to the expansion result
21
+ */
22
+ export declare function frontierBalancedAsync<N extends NodeData, E extends EdgeData>(graph: AsyncReadableGraph<N, E>, seeds: readonly Seed[], config?: AsyncExpansionConfig<N, E>): Promise<ExpansionResult>;
12
23
  //# sourceMappingURL=frontier-balanced.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"frontier-balanced.d.ts","sourceRoot":"","sources":["../../src/expansion/frontier-balanced.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,KAAK,EACX,IAAI,EACJ,eAAe,EACf,eAAe,EAEf,MAAM,SAAS,CAAC;AAGjB;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EACtE,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,MAAM,CAAC,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,GAC5B,eAAe,CAkBjB"}
1
+ {"version":3,"file":"frontier-balanced.d.ts","sourceRoot":"","sources":["../../src/expansion/frontier-balanced.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EACX,IAAI,EACJ,eAAe,EACf,eAAe,EAEf,MAAM,SAAS,CAAC;AAEjB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AAanD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EACtE,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,MAAM,CAAC,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,GAC5B,eAAe,CAKjB;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CAC1C,CAAC,SAAS,QAAQ,EAClB,CAAC,SAAS,QAAQ,EAElB,KAAK,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,EAC/B,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,MAAM,CAAC,EAAE,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,GACjC,OAAO,CAAC,eAAe,CAAC,CAE1B"}
@@ -1,5 +1,7 @@
1
1
  import { NodeData, EdgeData, ReadableGraph } from '../graph';
2
+ import { AsyncReadableGraph } from '../graph/async-interfaces';
2
3
  import { Seed, ExpansionResult, ExpansionConfig } from './types';
4
+ import { AsyncExpansionConfig } from './base';
3
5
  /**
4
6
  * Configuration for FUSE expansion.
5
7
  */
@@ -25,4 +27,18 @@ export type SAGEConfig<N extends NodeData = NodeData, E extends EdgeData = EdgeD
25
27
  * @returns Expansion result with discovered paths
26
28
  */
27
29
  export declare function fuse<N extends NodeData, E extends EdgeData>(graph: ReadableGraph<N, E>, seeds: readonly Seed[], config?: FUSEConfig<N, E>): ExpansionResult;
30
+ /**
31
+ * Run FUSE expansion asynchronously.
32
+ *
33
+ * Note: the FUSE priority function accesses `context.graph` via
34
+ * `avgFrontierMI`. Full async equivalence requires PriorityContext
35
+ * refactoring (Phase 4b deferred). This export establishes the async
36
+ * API surface.
37
+ *
38
+ * @param graph - Async source graph
39
+ * @param seeds - Seed nodes for expansion
40
+ * @param config - FUSE configuration combined with async runner options
41
+ * @returns Promise resolving to the expansion result
42
+ */
43
+ export declare function fuseAsync<N extends NodeData, E extends EdgeData>(graph: AsyncReadableGraph<N, E>, seeds: readonly Seed[], config?: FUSEConfig<N, E> & AsyncExpansionConfig<N, E>): Promise<ExpansionResult>;
28
44
  //# sourceMappingURL=fuse.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fuse.d.ts","sourceRoot":"","sources":["../../src/expansion/fuse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,KAAK,EACX,IAAI,EACJ,eAAe,EACf,eAAe,EAEf,MAAM,SAAS,CAAC;AAKjB;;GAEG;AACH,MAAM,WAAW,UAAU,CAC1B,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAC7B,CAAC,SAAS,QAAQ,GAAG,QAAQ,CAC5B,SAAQ,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9B,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,CAAC,EAAE,CACb,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,KACV,MAAM,CAAC;IACZ,wDAAwD;IACxD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,CACrB,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAC7B,CAAC,SAAS,QAAQ,GAAG,QAAQ,IAC1B,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAwBrB;;;;;;;;;;GAUG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAC1D,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,GACvB,eAAe,CAUjB"}
1
+ {"version":3,"file":"fuse.d.ts","sourceRoot":"","sources":["../../src/expansion/fuse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EACX,IAAI,EACJ,eAAe,EACf,eAAe,EAEf,MAAM,SAAS,CAAC;AAEjB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AAKnD;;GAEG;AACH,MAAM,WAAW,UAAU,CAC1B,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAC7B,CAAC,SAAS,QAAQ,GAAG,QAAQ,CAC5B,SAAQ,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9B,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,CAAC,EAAE,CACb,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,KACV,MAAM,CAAC;IACZ,wDAAwD;IACxD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,CACrB,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAC7B,CAAC,SAAS,QAAQ,GAAG,QAAQ,IAC1B,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAwBrB;;;;;;;;;;GAUG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAC1D,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,GACvB,eAAe,CAUjB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,SAAS,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EACrE,KAAK,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,EAC/B,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,GACpD,OAAO,CAAC,eAAe,CAAC,CAO1B"}
@@ -1,5 +1,7 @@
1
1
  import { NodeData, EdgeData, ReadableGraph } from '../graph';
2
+ import { AsyncReadableGraph } from '../graph/async-interfaces';
2
3
  import { Seed, ExpansionResult, ExpansionConfig } from './types';
4
+ import { AsyncExpansionConfig } from './base';
3
5
  /**
4
6
  * Configuration for HAE, extending base ExpansionConfig.
5
7
  */
@@ -19,4 +21,18 @@ export interface HAEConfig<N extends NodeData = NodeData, E extends EdgeData = E
19
21
  * @returns Expansion result with discovered paths
20
22
  */
21
23
  export declare function hae<N extends NodeData, E extends EdgeData>(graph: ReadableGraph<N, E>, seeds: readonly Seed[], config?: HAEConfig<N, E>): ExpansionResult;
24
+ /**
25
+ * Run HAE expansion asynchronously.
26
+ *
27
+ * Note: the HAE priority function accesses `context.graph` to retrieve
28
+ * neighbour types. Full async equivalence requires PriorityContext
29
+ * refactoring (Phase 4b deferred). This export establishes the async API
30
+ * surface; use with a `wrapAsync`-wrapped sync graph for testing.
31
+ *
32
+ * @param graph - Async source graph
33
+ * @param seeds - Seed nodes for expansion
34
+ * @param config - HAE configuration combined with async runner options
35
+ * @returns Promise resolving to the expansion result
36
+ */
37
+ export declare function haeAsync<N extends NodeData, E extends EdgeData>(graph: AsyncReadableGraph<N, E>, seeds: readonly Seed[], config?: HAEConfig<N, E> & AsyncExpansionConfig<N, E>): Promise<ExpansionResult>;
22
38
  //# sourceMappingURL=hae.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hae.d.ts","sourceRoot":"","sources":["../../src/expansion/hae.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,KAAK,EACX,IAAI,EACJ,eAAe,EACf,eAAe,EAEf,MAAM,SAAS,CAAC;AAMjB;;GAEG;AACH,MAAM,WAAW,SAAS,CACzB,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAC7B,CAAC,SAAS,QAAQ,GAAG,QAAQ,CAC5B,SAAQ,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9B,gEAAgE;IAChE,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC;CAC1C;AAuCD;;;;;;;;;;GAUG;AACH,wBAAgB,GAAG,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EACzD,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GACtB,eAAe,CAOjB"}
1
+ {"version":3,"file":"hae.d.ts","sourceRoot":"","sources":["../../src/expansion/hae.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EACX,IAAI,EACJ,eAAe,EACf,eAAe,EAEf,MAAM,SAAS,CAAC;AAEjB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AAMnD;;GAEG;AACH,MAAM,WAAW,SAAS,CACzB,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAC7B,CAAC,SAAS,QAAQ,GAAG,QAAQ,CAC5B,SAAQ,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9B,gEAAgE;IAChE,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC;CAC1C;AAuCD;;;;;;;;;;GAUG;AACH,wBAAgB,GAAG,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EACzD,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GACtB,eAAe,CAOjB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,QAAQ,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EACpE,KAAK,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,EAC/B,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,GACnD,OAAO,CAAC,eAAe,CAAC,CAO1B"}
@@ -0,0 +1,43 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_expansion = require("../expansion-FkmEYlrQ.cjs");
3
+ exports.base = require_expansion.base;
4
+ exports.baseAsync = require_expansion.baseAsync;
5
+ exports.dfsPriority = require_expansion.dfsPriority;
6
+ exports.dfsPriorityAsync = require_expansion.dfsPriorityAsync;
7
+ exports.dfsPriorityFn = require_expansion.dfsPriorityFn;
8
+ exports.dome = require_expansion.dome;
9
+ exports.domeAsync = require_expansion.domeAsync;
10
+ exports.domeHighDegree = require_expansion.domeHighDegree;
11
+ exports.domeHighDegreeAsync = require_expansion.domeHighDegreeAsync;
12
+ exports.edge = require_expansion.edge;
13
+ exports.edgeAsync = require_expansion.edgeAsync;
14
+ exports.flux = require_expansion.flux;
15
+ exports.fluxAsync = require_expansion.fluxAsync;
16
+ exports.frontierBalanced = require_expansion.frontierBalanced;
17
+ exports.frontierBalancedAsync = require_expansion.frontierBalancedAsync;
18
+ exports.fuse = require_expansion.fuse;
19
+ exports.fuseAsync = require_expansion.fuseAsync;
20
+ exports.hae = require_expansion.hae;
21
+ exports.haeAsync = require_expansion.haeAsync;
22
+ exports.kHop = require_expansion.kHop;
23
+ exports.lace = require_expansion.lace;
24
+ exports.laceAsync = require_expansion.laceAsync;
25
+ exports.maze = require_expansion.maze;
26
+ exports.mazeAsync = require_expansion.mazeAsync;
27
+ exports.pipe = require_expansion.pipe;
28
+ exports.pipeAsync = require_expansion.pipeAsync;
29
+ exports.randomPriority = require_expansion.randomPriority;
30
+ exports.randomPriorityAsync = require_expansion.randomPriorityAsync;
31
+ exports.randomWalk = require_expansion.randomWalk;
32
+ exports.reach = require_expansion.reach;
33
+ exports.reachAsync = require_expansion.reachAsync;
34
+ exports.sage = require_expansion.sage;
35
+ exports.sageAsync = require_expansion.sageAsync;
36
+ exports.sift = require_expansion.sift;
37
+ exports.siftAsync = require_expansion.siftAsync;
38
+ exports.standardBfs = require_expansion.standardBfs;
39
+ exports.standardBfsAsync = require_expansion.standardBfsAsync;
40
+ exports.tide = require_expansion.tide;
41
+ exports.tideAsync = require_expansion.tideAsync;
42
+ exports.warp = require_expansion.warp;
43
+ exports.warpAsync = require_expansion.warpAsync;
@@ -0,0 +1,2 @@
1
+ import { A as pipe, B as base, C as tideAsync, D as reachAsync, E as reach, F as haeAsync, I as dome, L as domeAsync, M as edge, N as edgeAsync, O as sage, P as hae, R as domeHighDegree, S as tide, T as mazeAsync, V as baseAsync, _ as fuseAsync, a as dfsPriorityFn, b as lace, c as frontierBalanced, d as standardBfsAsync, f as flux, g as fuse, h as siftAsync, i as dfsPriorityAsync, j as pipeAsync, k as sageAsync, l as frontierBalancedAsync, m as sift, n as kHop, o as randomPriority, p as fluxAsync, r as dfsPriority, s as randomPriorityAsync, t as randomWalk, u as standardBfs, v as warp, w as maze, x as laceAsync, y as warpAsync, z as domeHighDegreeAsync } from "../expansion-sldRognt.js";
2
+ export { base, baseAsync, dfsPriority, dfsPriorityAsync, dfsPriorityFn, dome, domeAsync, domeHighDegree, domeHighDegreeAsync, edge, edgeAsync, flux, fluxAsync, frontierBalanced, frontierBalancedAsync, fuse, fuseAsync, hae, haeAsync, kHop, lace, laceAsync, maze, mazeAsync, pipe, pipeAsync, randomPriority, randomPriorityAsync, randomWalk, reach, reachAsync, sage, sageAsync, sift, siftAsync, standardBfs, standardBfsAsync, tide, tideAsync, warp, warpAsync };
@@ -1,5 +1,7 @@
1
1
  import { NodeData, EdgeData, ReadableGraph } from '../graph';
2
+ import { AsyncReadableGraph } from '../graph/async-interfaces';
2
3
  import { Seed, ExpansionResult, ExpansionConfig } from './types';
4
+ import { AsyncExpansionConfig } from './base';
3
5
  /**
4
6
  * Configuration for LACE expansion.
5
7
  */
@@ -19,4 +21,18 @@ export interface LACEConfig<N extends NodeData = NodeData, E extends EdgeData =
19
21
  * @returns Expansion result with discovered paths
20
22
  */
21
23
  export declare function lace<N extends NodeData, E extends EdgeData>(graph: ReadableGraph<N, E>, seeds: readonly Seed[], config?: LACEConfig<N, E>): ExpansionResult;
24
+ /**
25
+ * Run LACE expansion asynchronously.
26
+ *
27
+ * Note: the LACE priority function accesses `context.graph` via
28
+ * `avgFrontierMI`. Full async equivalence requires PriorityContext
29
+ * refactoring (Phase 4b deferred). This export establishes the async
30
+ * API surface.
31
+ *
32
+ * @param graph - Async source graph
33
+ * @param seeds - Seed nodes for expansion
34
+ * @param config - LACE configuration combined with async runner options
35
+ * @returns Promise resolving to the expansion result
36
+ */
37
+ export declare function laceAsync<N extends NodeData, E extends EdgeData>(graph: AsyncReadableGraph<N, E>, seeds: readonly Seed[], config?: LACEConfig<N, E> & AsyncExpansionConfig<N, E>): Promise<ExpansionResult>;
22
38
  //# sourceMappingURL=lace.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lace.d.ts","sourceRoot":"","sources":["../../src/expansion/lace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,KAAK,EACX,IAAI,EACJ,eAAe,EACf,eAAe,EAEf,MAAM,SAAS,CAAC;AAKjB;;GAEG;AACH,MAAM,WAAW,UAAU,CAC1B,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAC7B,CAAC,SAAS,QAAQ,GAAG,QAAQ,CAC5B,SAAQ,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9B,mEAAmE;IACnE,QAAQ,CAAC,EAAE,CAAC,EAAE,CACb,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,KACV,MAAM,CAAC;CACZ;AAkBD;;;;;;;;;;GAUG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAC1D,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,GACvB,eAAe,CAUjB"}
1
+ {"version":3,"file":"lace.d.ts","sourceRoot":"","sources":["../../src/expansion/lace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EACX,IAAI,EACJ,eAAe,EACf,eAAe,EAEf,MAAM,SAAS,CAAC;AAEjB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AAKnD;;GAEG;AACH,MAAM,WAAW,UAAU,CAC1B,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAC7B,CAAC,SAAS,QAAQ,GAAG,QAAQ,CAC5B,SAAQ,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9B,mEAAmE;IACnE,QAAQ,CAAC,EAAE,CAAC,EAAE,CACb,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,KACV,MAAM,CAAC;CACZ;AAkBD;;;;;;;;;;GAUG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EAC1D,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,GACvB,eAAe,CAUjB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,SAAS,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,QAAQ,EACrE,KAAK,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,EAC/B,KAAK,EAAE,SAAS,IAAI,EAAE,EACtB,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,GACpD,OAAO,CAAC,eAAe,CAAC,CAO1B"}