@graphty/algorithms 1.0.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 (155) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +193 -0
  3. package/dist/src/algorithms/centrality/betweenness.d.ts +34 -0
  4. package/dist/src/algorithms/centrality/betweenness.d.ts.map +1 -0
  5. package/dist/src/algorithms/centrality/betweenness.js +223 -0
  6. package/dist/src/algorithms/centrality/betweenness.js.map +1 -0
  7. package/dist/src/algorithms/centrality/closeness.d.ts +43 -0
  8. package/dist/src/algorithms/centrality/closeness.d.ts.map +1 -0
  9. package/dist/src/algorithms/centrality/closeness.js +202 -0
  10. package/dist/src/algorithms/centrality/closeness.js.map +1 -0
  11. package/dist/src/algorithms/centrality/degree.d.ts +17 -0
  12. package/dist/src/algorithms/centrality/degree.d.ts.map +1 -0
  13. package/dist/src/algorithms/centrality/degree.js +86 -0
  14. package/dist/src/algorithms/centrality/degree.js.map +1 -0
  15. package/dist/src/algorithms/centrality/index.d.ts +11 -0
  16. package/dist/src/algorithms/centrality/index.d.ts.map +1 -0
  17. package/dist/src/algorithms/centrality/index.js +8 -0
  18. package/dist/src/algorithms/centrality/index.js.map +1 -0
  19. package/dist/src/algorithms/centrality/pagerank.d.ts +74 -0
  20. package/dist/src/algorithms/centrality/pagerank.d.ts.map +1 -0
  21. package/dist/src/algorithms/centrality/pagerank.js +191 -0
  22. package/dist/src/algorithms/centrality/pagerank.js.map +1 -0
  23. package/dist/src/algorithms/components/connected.d.ts +58 -0
  24. package/dist/src/algorithms/components/connected.d.ts.map +1 -0
  25. package/dist/src/algorithms/components/connected.js +234 -0
  26. package/dist/src/algorithms/components/connected.js.map +1 -0
  27. package/dist/src/algorithms/components/index.d.ts +5 -0
  28. package/dist/src/algorithms/components/index.d.ts.map +1 -0
  29. package/dist/src/algorithms/components/index.js +5 -0
  30. package/dist/src/algorithms/components/index.js.map +1 -0
  31. package/dist/src/algorithms/index.d.ts +8 -0
  32. package/dist/src/algorithms/index.d.ts.map +1 -0
  33. package/dist/src/algorithms/index.js +12 -0
  34. package/dist/src/algorithms/index.js.map +1 -0
  35. package/dist/src/algorithms/shortest-path/bellman-ford.d.ts +52 -0
  36. package/dist/src/algorithms/shortest-path/bellman-ford.d.ts.map +1 -0
  37. package/dist/src/algorithms/shortest-path/bellman-ford.js +131 -0
  38. package/dist/src/algorithms/shortest-path/bellman-ford.js.map +1 -0
  39. package/dist/src/algorithms/shortest-path/dijkstra.d.ts +26 -0
  40. package/dist/src/algorithms/shortest-path/dijkstra.d.ts.map +1 -0
  41. package/dist/src/algorithms/shortest-path/dijkstra.js +199 -0
  42. package/dist/src/algorithms/shortest-path/dijkstra.js.map +1 -0
  43. package/dist/src/algorithms/shortest-path/index.d.ts +7 -0
  44. package/dist/src/algorithms/shortest-path/index.d.ts.map +1 -0
  45. package/dist/src/algorithms/shortest-path/index.js +6 -0
  46. package/dist/src/algorithms/shortest-path/index.js.map +1 -0
  47. package/dist/src/algorithms/traversal/bfs.d.ts +25 -0
  48. package/dist/src/algorithms/traversal/bfs.d.ts.map +1 -0
  49. package/dist/src/algorithms/traversal/bfs.js +189 -0
  50. package/dist/src/algorithms/traversal/bfs.js.map +1 -0
  51. package/dist/src/algorithms/traversal/dfs.d.ts +32 -0
  52. package/dist/src/algorithms/traversal/dfs.d.ts.map +1 -0
  53. package/dist/src/algorithms/traversal/dfs.js +259 -0
  54. package/dist/src/algorithms/traversal/dfs.js.map +1 -0
  55. package/dist/src/algorithms/traversal/index.d.ts +7 -0
  56. package/dist/src/algorithms/traversal/index.d.ts.map +1 -0
  57. package/dist/src/algorithms/traversal/index.js +6 -0
  58. package/dist/src/algorithms/traversal/index.js.map +1 -0
  59. package/dist/src/core/graph.d.ts +100 -0
  60. package/dist/src/core/graph.d.ts.map +1 -0
  61. package/dist/src/core/graph.js +276 -0
  62. package/dist/src/core/graph.js.map +1 -0
  63. package/dist/src/data-structures/index.d.ts +6 -0
  64. package/dist/src/data-structures/index.d.ts.map +1 -0
  65. package/dist/src/data-structures/index.js +6 -0
  66. package/dist/src/data-structures/index.js.map +1 -0
  67. package/dist/src/data-structures/priority-queue.d.ts +60 -0
  68. package/dist/src/data-structures/priority-queue.d.ts.map +1 -0
  69. package/dist/src/data-structures/priority-queue.js +152 -0
  70. package/dist/src/data-structures/priority-queue.js.map +1 -0
  71. package/dist/src/data-structures/union-find.d.ts +54 -0
  72. package/dist/src/data-structures/union-find.d.ts.map +1 -0
  73. package/dist/src/data-structures/union-find.js +145 -0
  74. package/dist/src/data-structures/union-find.js.map +1 -0
  75. package/dist/src/index.d.ts +11 -0
  76. package/dist/src/index.d.ts.map +1 -0
  77. package/dist/src/index.js +13 -0
  78. package/dist/src/index.js.map +1 -0
  79. package/dist/src/types/index.d.ts +74 -0
  80. package/dist/src/types/index.d.ts.map +1 -0
  81. package/dist/src/types/index.js +5 -0
  82. package/dist/src/types/index.js.map +1 -0
  83. package/dist/test/browser/basic.test.d.ts +2 -0
  84. package/dist/test/browser/basic.test.d.ts.map +1 -0
  85. package/dist/test/browser/basic.test.js +70 -0
  86. package/dist/test/browser/basic.test.js.map +1 -0
  87. package/dist/test/unit/bellman-ford.test.d.ts +2 -0
  88. package/dist/test/unit/bellman-ford.test.d.ts.map +1 -0
  89. package/dist/test/unit/bellman-ford.test.js +231 -0
  90. package/dist/test/unit/bellman-ford.test.js.map +1 -0
  91. package/dist/test/unit/betweenness-centrality.test.d.ts +2 -0
  92. package/dist/test/unit/betweenness-centrality.test.d.ts.map +1 -0
  93. package/dist/test/unit/betweenness-centrality.test.js +311 -0
  94. package/dist/test/unit/betweenness-centrality.test.js.map +1 -0
  95. package/dist/test/unit/bfs.test.d.ts +2 -0
  96. package/dist/test/unit/bfs.test.d.ts.map +1 -0
  97. package/dist/test/unit/bfs.test.js +277 -0
  98. package/dist/test/unit/bfs.test.js.map +1 -0
  99. package/dist/test/unit/closeness.test.d.ts +2 -0
  100. package/dist/test/unit/closeness.test.d.ts.map +1 -0
  101. package/dist/test/unit/closeness.test.js +266 -0
  102. package/dist/test/unit/closeness.test.js.map +1 -0
  103. package/dist/test/unit/connected-components.test.d.ts +2 -0
  104. package/dist/test/unit/connected-components.test.d.ts.map +1 -0
  105. package/dist/test/unit/connected-components.test.js +355 -0
  106. package/dist/test/unit/connected-components.test.js.map +1 -0
  107. package/dist/test/unit/degree-centrality.test.d.ts +2 -0
  108. package/dist/test/unit/degree-centrality.test.d.ts.map +1 -0
  109. package/dist/test/unit/degree-centrality.test.js +260 -0
  110. package/dist/test/unit/degree-centrality.test.js.map +1 -0
  111. package/dist/test/unit/dfs.test.d.ts +2 -0
  112. package/dist/test/unit/dfs.test.d.ts.map +1 -0
  113. package/dist/test/unit/dfs.test.js +350 -0
  114. package/dist/test/unit/dfs.test.js.map +1 -0
  115. package/dist/test/unit/dijkstra.test.d.ts +2 -0
  116. package/dist/test/unit/dijkstra.test.d.ts.map +1 -0
  117. package/dist/test/unit/dijkstra.test.js +311 -0
  118. package/dist/test/unit/dijkstra.test.js.map +1 -0
  119. package/dist/test/unit/graph.test.d.ts +2 -0
  120. package/dist/test/unit/graph.test.d.ts.map +1 -0
  121. package/dist/test/unit/graph.test.js +175 -0
  122. package/dist/test/unit/graph.test.js.map +1 -0
  123. package/dist/test/unit/pagerank.test.d.ts +2 -0
  124. package/dist/test/unit/pagerank.test.d.ts.map +1 -0
  125. package/dist/test/unit/pagerank.test.js +281 -0
  126. package/dist/test/unit/pagerank.test.js.map +1 -0
  127. package/dist/test/unit/priority-queue.test.d.ts +2 -0
  128. package/dist/test/unit/priority-queue.test.d.ts.map +1 -0
  129. package/dist/test/unit/priority-queue.test.js +189 -0
  130. package/dist/test/unit/priority-queue.test.js.map +1 -0
  131. package/dist/test/unit/union-find.test.d.ts +2 -0
  132. package/dist/test/unit/union-find.test.d.ts.map +1 -0
  133. package/dist/test/unit/union-find.test.js +245 -0
  134. package/dist/test/unit/union-find.test.js.map +1 -0
  135. package/package.json +100 -0
  136. package/src/algorithms/centrality/betweenness.ts +303 -0
  137. package/src/algorithms/centrality/closeness.ts +296 -0
  138. package/src/algorithms/centrality/degree.ts +105 -0
  139. package/src/algorithms/centrality/index.ts +11 -0
  140. package/src/algorithms/centrality/pagerank.ts +302 -0
  141. package/src/algorithms/components/connected.ts +298 -0
  142. package/src/algorithms/components/index.ts +17 -0
  143. package/src/algorithms/index.ts +15 -0
  144. package/src/algorithms/shortest-path/bellman-ford.ts +214 -0
  145. package/src/algorithms/shortest-path/dijkstra.ts +256 -0
  146. package/src/algorithms/shortest-path/index.ts +7 -0
  147. package/src/algorithms/traversal/bfs.ts +236 -0
  148. package/src/algorithms/traversal/dfs.ts +367 -0
  149. package/src/algorithms/traversal/index.ts +7 -0
  150. package/src/core/graph.ts +326 -0
  151. package/src/data-structures/index.ts +6 -0
  152. package/src/data-structures/priority-queue.ts +180 -0
  153. package/src/data-structures/union-find.ts +170 -0
  154. package/src/index.ts +35 -0
  155. package/src/types/index.ts +95 -0
@@ -0,0 +1,281 @@
1
+ /* eslint-disable dot-notation */
2
+ import { describe, expect, it } from "vitest";
3
+ import { pageRank, pageRankCentrality, personalizedPageRank, topPageRankNodes, } from "../../src/algorithms/centrality/pagerank.js";
4
+ import { Graph } from "../../src/core/graph.js";
5
+ describe("PageRank Algorithm", () => {
6
+ describe("pageRank", () => {
7
+ it("should calculate PageRank for a simple directed graph", () => {
8
+ const graph = new Graph({ directed: true });
9
+ graph.addEdge("A", "B");
10
+ graph.addEdge("B", "C");
11
+ graph.addEdge("C", "A");
12
+ const result = pageRank(graph);
13
+ expect(result.converged).toBe(true);
14
+ expect(result.iterations).toBeLessThan(100);
15
+ // In a cycle, all nodes should have equal PageRank
16
+ expect(result.ranks["A"]).toBeCloseTo(result.ranks["B"] ?? 0, 5);
17
+ expect(result.ranks["B"]).toBeCloseTo(result.ranks["C"] ?? 0, 5);
18
+ // Sum should be approximately 1
19
+ const sum = Object.values(result.ranks).reduce((a, b) => a + b, 0);
20
+ expect(sum).toBeCloseTo(1, 5);
21
+ });
22
+ it("should throw error for undirected graph", () => {
23
+ const graph = new Graph({ directed: false });
24
+ graph.addEdge("A", "B");
25
+ expect(() => {
26
+ pageRank(graph);
27
+ }).toThrow("PageRank requires a directed graph");
28
+ });
29
+ it("should handle dangling nodes", () => {
30
+ const graph = new Graph({ directed: true });
31
+ graph.addEdge("A", "B");
32
+ graph.addEdge("B", "C");
33
+ // C is a dangling node (no outgoing edges)
34
+ const result = pageRank(graph);
35
+ expect(result.converged).toBe(true);
36
+ // C should still have some PageRank due to random surfer model
37
+ expect(result.ranks["C"]).toBeGreaterThan(0);
38
+ });
39
+ it("should handle empty graph", () => {
40
+ const graph = new Graph({ directed: true });
41
+ const result = pageRank(graph);
42
+ expect(result.converged).toBe(true);
43
+ expect(result.iterations).toBe(0);
44
+ expect(result.ranks).toEqual({});
45
+ });
46
+ it("should handle single node", () => {
47
+ const graph = new Graph({ directed: true });
48
+ graph.addNode("A");
49
+ const result = pageRank(graph);
50
+ expect(result.converged).toBe(true);
51
+ expect(result.ranks["A"]).toBeCloseTo(1);
52
+ });
53
+ it("should handle self-loops", () => {
54
+ const graph = new Graph({ directed: true });
55
+ graph.addEdge("A", "A");
56
+ graph.addEdge("A", "B");
57
+ graph.addEdge("B", "A");
58
+ const result = pageRank(graph);
59
+ expect(result.converged).toBe(true);
60
+ const sum = Object.values(result.ranks).reduce((a, b) => a + b, 0);
61
+ expect(sum).toBeCloseTo(1, 5);
62
+ });
63
+ it("should respect damping factor", () => {
64
+ const graph = new Graph({ directed: true });
65
+ graph.addEdge("A", "B");
66
+ graph.addEdge("B", "C");
67
+ const result1 = pageRank(graph, { dampingFactor: 0.85 });
68
+ const result2 = pageRank(graph, { dampingFactor: 0.5 });
69
+ // Different damping factors should produce different results
70
+ expect(result1.ranks["A"]).not.toBeCloseTo(result2.ranks["A"] ?? 0, 2);
71
+ });
72
+ it("should throw error for invalid damping factor", () => {
73
+ const graph = new Graph({ directed: true });
74
+ graph.addEdge("A", "B");
75
+ expect(() => {
76
+ pageRank(graph, { dampingFactor: -0.1 });
77
+ }).toThrow("Damping factor must be between 0 and 1");
78
+ expect(() => {
79
+ pageRank(graph, { dampingFactor: 1.1 });
80
+ }).toThrow("Damping factor must be between 0 and 1");
81
+ });
82
+ it("should respect tolerance parameter", () => {
83
+ const graph = new Graph({ directed: true });
84
+ graph.addEdge("A", "B");
85
+ graph.addEdge("B", "C");
86
+ graph.addEdge("C", "A");
87
+ const result1 = pageRank(graph, { tolerance: 1e-6 });
88
+ const result2 = pageRank(graph, { tolerance: 1e-3 });
89
+ // Looser tolerance should converge faster
90
+ expect(result2.iterations).toBeLessThanOrEqual(result1.iterations);
91
+ });
92
+ it("should handle max iterations limit", () => {
93
+ const graph = new Graph({ directed: true });
94
+ // Create a simple graph
95
+ graph.addEdge("A", "B");
96
+ graph.addEdge("B", "C");
97
+ graph.addEdge("C", "A");
98
+ const result = pageRank(graph, { maxIterations: 2, tolerance: 1e-10 });
99
+ expect(result.iterations).toBeLessThanOrEqual(2);
100
+ // With very strict tolerance and only 2 iterations, should not converge
101
+ if (result.iterations === 2) {
102
+ expect(result.converged).toBe(false);
103
+ }
104
+ });
105
+ it("should handle initial ranks", () => {
106
+ const graph = new Graph({ directed: true });
107
+ graph.addEdge("A", "B");
108
+ graph.addEdge("B", "C");
109
+ graph.addEdge("C", "A");
110
+ const initialRanks = new Map([
111
+ ["A", 0.5],
112
+ ["B", 0.3],
113
+ ["C", 0.2],
114
+ ]);
115
+ const result = pageRank(graph, { initialRanks, maxIterations: 1 });
116
+ // After one iteration, ranks should have changed from initial
117
+ expect(result.ranks["A"]).not.toBeCloseTo(0.5);
118
+ });
119
+ it("should handle weighted PageRank", () => {
120
+ const graph = new Graph({ directed: true });
121
+ graph.addEdge("A", "B");
122
+ graph.addEdge("A", "C");
123
+ graph.addEdge("B", "D");
124
+ graph.addEdge("C", "D");
125
+ const result = pageRank(graph);
126
+ expect(result.converged).toBe(true);
127
+ // Basic PageRank should work
128
+ const sum = Object.values(result.ranks).reduce((a, b) => a + b, 0);
129
+ expect(sum).toBeCloseTo(1, 5);
130
+ });
131
+ it("should handle star graph", () => {
132
+ const graph = new Graph({ directed: true });
133
+ // All nodes point to center
134
+ graph.addEdge("A", "center");
135
+ graph.addEdge("B", "center");
136
+ graph.addEdge("C", "center");
137
+ graph.addEdge("D", "center");
138
+ const result = pageRank(graph);
139
+ // Center should have highest PageRank
140
+ expect(result.ranks["center"]).toBeGreaterThan(result.ranks["A"] ?? 0);
141
+ expect(result.ranks["center"]).toBeGreaterThan(result.ranks["B"] ?? 0);
142
+ });
143
+ it("should handle complex graph structure", () => {
144
+ const graph = new Graph({ directed: true });
145
+ // Create a more complex structure
146
+ graph.addEdge("A", "B");
147
+ graph.addEdge("A", "C");
148
+ graph.addEdge("B", "C");
149
+ graph.addEdge("B", "D");
150
+ graph.addEdge("C", "A");
151
+ graph.addEdge("C", "D");
152
+ graph.addEdge("D", "A");
153
+ const result = pageRank(graph);
154
+ expect(result.converged).toBe(true);
155
+ const sum = Object.values(result.ranks).reduce((a, b) => a + b, 0);
156
+ expect(sum).toBeCloseTo(1, 5);
157
+ });
158
+ });
159
+ describe("personalizedPageRank", () => {
160
+ it("should calculate personalized PageRank", () => {
161
+ const graph = new Graph({ directed: true });
162
+ graph.addEdge("A", "B");
163
+ graph.addEdge("B", "C");
164
+ graph.addEdge("C", "A");
165
+ graph.addEdge("C", "D");
166
+ const result = personalizedPageRank(graph, ["A"]);
167
+ expect(result.converged).toBe(true);
168
+ // A should have higher rank in personalized PageRank
169
+ expect(result.ranks["A"]).toBeGreaterThan(result.ranks["D"] ?? 0);
170
+ });
171
+ it("should handle multiple personal nodes", () => {
172
+ const graph = new Graph({ directed: true });
173
+ graph.addEdge("A", "B");
174
+ graph.addEdge("B", "C");
175
+ graph.addEdge("C", "D");
176
+ graph.addEdge("D", "A");
177
+ const result = personalizedPageRank(graph, ["A", "C"]);
178
+ expect(result.converged).toBe(true);
179
+ // A and C should have relatively higher ranks
180
+ const avgPersonal = ((result.ranks["A"] ?? 0) + (result.ranks["C"] ?? 0)) / 2;
181
+ const avgOther = ((result.ranks["B"] ?? 0) + (result.ranks["D"] ?? 0)) / 2;
182
+ expect(avgPersonal).toBeGreaterThan(avgOther);
183
+ });
184
+ it("should throw error for non-existent personal node", () => {
185
+ const graph = new Graph({ directed: true });
186
+ graph.addEdge("A", "B");
187
+ expect(() => {
188
+ personalizedPageRank(graph, ["X"]);
189
+ }).toThrow("Personal node X not found in graph");
190
+ });
191
+ it("should handle empty personal nodes array", () => {
192
+ const graph = new Graph({ directed: true });
193
+ graph.addEdge("A", "B");
194
+ // Empty array will cause division by zero when calculating personalValue
195
+ const result = personalizedPageRank(graph, []);
196
+ // Should handle gracefully, all values will be NaN or 0
197
+ expect(result.converged).toBeDefined();
198
+ });
199
+ });
200
+ describe("pageRankCentrality", () => {
201
+ it("should return PageRank scores as centrality", () => {
202
+ const graph = new Graph({ directed: true });
203
+ graph.addEdge("A", "B");
204
+ graph.addEdge("B", "C");
205
+ graph.addEdge("C", "A");
206
+ const centrality = pageRankCentrality(graph);
207
+ expect(centrality).toHaveProperty("A");
208
+ expect(centrality).toHaveProperty("B");
209
+ expect(centrality).toHaveProperty("C");
210
+ const sum = Object.values(centrality).reduce((a, b) => a + b, 0);
211
+ expect(sum).toBeCloseTo(1, 5);
212
+ });
213
+ it("should accept options", () => {
214
+ const graph = new Graph({ directed: true });
215
+ // Create a more complex graph where damping factor matters
216
+ graph.addEdge("A", "B");
217
+ graph.addEdge("B", "C");
218
+ graph.addEdge("C", "D");
219
+ graph.addEdge("D", "E");
220
+ graph.addEdge("E", "A");
221
+ graph.addEdge("C", "A"); // Extra edge
222
+ const centrality1 = pageRankCentrality(graph, { dampingFactor: 0.9 });
223
+ const centrality2 = pageRankCentrality(graph, { dampingFactor: 0.1 });
224
+ // Very different damping factors should produce different results
225
+ // At least one node should have noticeably different centrality
226
+ let maxDiff = 0;
227
+ for (const node of ["A", "B", "C", "D", "E"]) {
228
+ const diff = Math.abs((centrality1[node] ?? 0) - (centrality2[node] ?? 0));
229
+ maxDiff = Math.max(maxDiff, diff);
230
+ }
231
+ expect(maxDiff).toBeGreaterThan(0.01);
232
+ });
233
+ });
234
+ describe("topPageRankNodes", () => {
235
+ it("should return top k nodes by PageRank", () => {
236
+ const graph = new Graph({ directed: true });
237
+ // Create a hub-like structure
238
+ graph.addEdge("A", "hub");
239
+ graph.addEdge("B", "hub");
240
+ graph.addEdge("C", "hub");
241
+ graph.addEdge("D", "hub");
242
+ graph.addEdge("E", "hub");
243
+ graph.addEdge("hub", "out");
244
+ const top2 = topPageRankNodes(graph, 2);
245
+ expect(top2).toHaveLength(2);
246
+ // Hub should be in top 2
247
+ const nodes = top2.map((n) => n.node);
248
+ expect(nodes).toContain("hub");
249
+ expect(top2[0]?.rank ?? 0).toBeGreaterThanOrEqual(top2[1]?.rank ?? 0);
250
+ });
251
+ it("should handle k larger than number of nodes", () => {
252
+ const graph = new Graph({ directed: true });
253
+ graph.addEdge("A", "B");
254
+ graph.addEdge("B", "C");
255
+ const top5 = topPageRankNodes(graph, 5);
256
+ expect(top5).toHaveLength(3);
257
+ });
258
+ it("should handle k = 0", () => {
259
+ const graph = new Graph({ directed: true });
260
+ graph.addEdge("A", "B");
261
+ const top0 = topPageRankNodes(graph, 0);
262
+ expect(top0).toHaveLength(0);
263
+ });
264
+ it("should handle empty graph", () => {
265
+ const graph = new Graph({ directed: true });
266
+ const top3 = topPageRankNodes(graph, 3);
267
+ expect(top3).toHaveLength(0);
268
+ });
269
+ it("should work with weighted PageRank", () => {
270
+ const graph = new Graph({ directed: true });
271
+ graph.addEdge("A", "B");
272
+ graph.addEdge("A", "C");
273
+ graph.addEdge("B", "D");
274
+ graph.addEdge("C", "D");
275
+ const top2 = topPageRankNodes(graph, 2);
276
+ expect(top2).toHaveLength(2);
277
+ expect(top2[0]?.rank ?? 0).toBeGreaterThanOrEqual(top2[1]?.rank ?? 0);
278
+ });
279
+ });
280
+ });
281
+ //# sourceMappingURL=pagerank.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagerank.test.js","sourceRoot":"","sources":["../../../test/unit/pagerank.test.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,OAAO,EAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAC,MAAM,QAAQ,CAAC;AAE5C,OAAO,EACH,QAAQ,EACR,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,GACnB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAC,KAAK,EAAC,MAAM,yBAAyB,CAAC;AAE9C,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAChC,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACtB,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;YAC7D,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;YAC1C,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACxB,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACxB,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAExB,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;YAE/B,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YAE5C,mDAAmD;YACnD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACjE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAEjE,gCAAgC;YAChC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YACnE,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YAC/C,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAC,QAAQ,EAAE,KAAK,EAAC,CAAC,CAAC;YAC3C,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAExB,MAAM,CAAC,GAAG,EAAE;gBACR,QAAQ,CAAC,KAAK,CAAC,CAAC;YACpB,CAAC,CAAC,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACpC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;YAC1C,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACxB,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACxB,2CAA2C;YAE3C,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;YAE/B,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpC,+DAA+D;YAC/D,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACjC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;YAE1C,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;YAE/B,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACjC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;YAC1C,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAEnB,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;YAE/B,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;YAChC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;YAC1C,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACxB,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACxB,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAExB,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;YAE/B,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YACnE,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;YACrC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;YAC1C,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACxB,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAExB,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAC,aAAa,EAAE,IAAI,EAAC,CAAC,CAAC;YACvD,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAC,aAAa,EAAE,GAAG,EAAC,CAAC,CAAC;YAEtD,6DAA6D;YAC7D,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;YACrD,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;YAC1C,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAExB,MAAM,CAAC,GAAG,EAAE;gBACR,QAAQ,CAAC,KAAK,EAAE,EAAC,aAAa,EAAE,CAAC,GAAG,EAAC,CAAC,CAAC;YAC3C,CAAC,CAAC,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC;YAErD,MAAM,CAAC,GAAG,EAAE;gBACR,QAAQ,CAAC,KAAK,EAAE,EAAC,aAAa,EAAE,GAAG,EAAC,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC1C,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;YAC1C,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACxB,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACxB,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAExB,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;YACnD,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;YAEnD,0CAA0C;YAC1C,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC1C,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;YAC1C,wBAAwB;YACxB,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACxB,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACxB,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAExB,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAC,aAAa,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,EAAC,CAAC,CAAC;YAErE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;YACjD,wEAAwE;YACxE,IAAI,MAAM,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;gBAC1B,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;YACnC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;YAC1C,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACxB,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACxB,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAExB,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;gBACzB,CAAC,GAAG,EAAE,GAAG,CAAC;gBACV,CAAC,GAAG,EAAE,GAAG,CAAC;gBACV,CAAC,GAAG,EAAE,GAAG,CAAC;aACb,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAC,YAAY,EAAE,aAAa,EAAE,CAAC,EAAC,CAAC,CAAC;YAEjE,8DAA8D;YAC9D,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACvC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;YAC1C,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACxB,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACxB,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACxB,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAExB,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;YAE/B,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpC,6BAA6B;YAC7B,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YACnE,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;YAChC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;YAC1C,4BAA4B;YAC5B,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAC7B,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAC7B,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAC7B,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAE7B,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;YAE/B,sCAAsC;YACtC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;YACvE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC7C,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;YAC1C,kCAAkC;YAClC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACxB,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACxB,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACxB,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACxB,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACxB,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACxB,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAExB,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;YAE/B,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YACnE,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAClC,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;YAC9C,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;YAC1C,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACxB,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACxB,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACxB,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAExB,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAElD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpC,qDAAqD;YACrD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC7C,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;YAC1C,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACxB,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACxB,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACxB,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAExB,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;YAEvD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpC,8CAA8C;YAC9C,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC9E,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC3E,MAAM,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;YACzD,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;YAC1C,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAExB,MAAM,CAAC,GAAG,EAAE;gBACR,oBAAoB,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACvC,CAAC,CAAC,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAChD,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;YAC1C,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAExB,yEAAyE;YACzE,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC/C,wDAAwD;YACxD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;QAC3C,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAChC,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;YACnD,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;YAC1C,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACxB,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACxB,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAExB,MAAM,UAAU,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAE7C,MAAM,CAAC,UAAU,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;YACvC,MAAM,CAAC,UAAU,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;YACvC,MAAM,CAAC,UAAU,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;YAEvC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YACjE,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;YAC7B,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;YAC1C,2DAA2D;YAC3D,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACxB,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACxB,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACxB,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACxB,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACxB,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,aAAa;YAEtC,MAAM,WAAW,GAAG,kBAAkB,CAAC,KAAK,EAAE,EAAC,aAAa,EAAE,GAAG,EAAC,CAAC,CAAC;YACpE,MAAM,WAAW,GAAG,kBAAkB,CAAC,KAAK,EAAE,EAAC,aAAa,EAAE,GAAG,EAAC,CAAC,CAAC;YAEpE,kEAAkE;YAClE,gEAAgE;YAChE,IAAI,OAAO,GAAG,CAAC,CAAC;YAChB,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;gBAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC3E,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACtC,CAAC;YACD,MAAM,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC7C,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;YAC1C,8BAA8B;YAC9B,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC1B,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC1B,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC1B,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC1B,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC1B,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAE5B,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAExC,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC7B,yBAAyB;YACzB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACtC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC/B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;YACnD,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;YAC1C,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACxB,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAExB,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAExC,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;YAC3B,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;YAC1C,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAExB,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAExC,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACjC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;YAE1C,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAExC,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC1C,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;YAC1C,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACxB,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACxB,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACxB,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAExB,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAExC,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=priority-queue.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"priority-queue.test.d.ts","sourceRoot":"","sources":["../../../test/unit/priority-queue.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,189 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { PriorityQueue } from "../../src/data-structures/priority-queue.js";
3
+ describe("PriorityQueue", () => {
4
+ describe("constructor", () => {
5
+ it("should create an empty priority queue", () => {
6
+ const pq = new PriorityQueue();
7
+ expect(pq.isEmpty()).toBe(true);
8
+ expect(pq.size()).toBe(0);
9
+ expect(pq.peek()).toBeUndefined();
10
+ });
11
+ it("should accept custom comparison function", () => {
12
+ // Max-heap (reverse of default min-heap)
13
+ const pq = new PriorityQueue((a, b) => b - a);
14
+ pq.enqueue("low", 1);
15
+ pq.enqueue("high", 10);
16
+ pq.enqueue("medium", 5);
17
+ expect(pq.dequeue()).toBe("high");
18
+ expect(pq.dequeue()).toBe("medium");
19
+ expect(pq.dequeue()).toBe("low");
20
+ });
21
+ });
22
+ describe("enqueue and dequeue", () => {
23
+ it("should maintain min-heap property by default", () => {
24
+ const pq = new PriorityQueue();
25
+ pq.enqueue("medium", 5);
26
+ pq.enqueue("high", 10);
27
+ pq.enqueue("low", 1);
28
+ pq.enqueue("lowest", 0);
29
+ expect(pq.dequeue()).toBe("lowest");
30
+ expect(pq.dequeue()).toBe("low");
31
+ expect(pq.dequeue()).toBe("medium");
32
+ expect(pq.dequeue()).toBe("high");
33
+ });
34
+ it("should handle equal priorities correctly", () => {
35
+ const pq = new PriorityQueue();
36
+ pq.enqueue("first", 5);
37
+ pq.enqueue("second", 5);
38
+ pq.enqueue("third", 5);
39
+ // Should maintain some consistent order
40
+ const results = [pq.dequeue(), pq.dequeue(), pq.dequeue()];
41
+ expect(results).toContain("first");
42
+ expect(results).toContain("second");
43
+ expect(results).toContain("third");
44
+ });
45
+ it("should return undefined when dequeuing from empty queue", () => {
46
+ const pq = new PriorityQueue();
47
+ expect(pq.dequeue()).toBeUndefined();
48
+ });
49
+ it("should handle single element correctly", () => {
50
+ const pq = new PriorityQueue();
51
+ pq.enqueue("only", 42);
52
+ expect(pq.size()).toBe(1);
53
+ expect(pq.peek()).toBe("only");
54
+ expect(pq.dequeue()).toBe("only");
55
+ expect(pq.isEmpty()).toBe(true);
56
+ });
57
+ });
58
+ describe("peek", () => {
59
+ it("should return highest priority item without removing it", () => {
60
+ const pq = new PriorityQueue();
61
+ pq.enqueue("medium", 5);
62
+ pq.enqueue("low", 1);
63
+ pq.enqueue("high", 10);
64
+ expect(pq.peek()).toBe("low");
65
+ expect(pq.size()).toBe(3);
66
+ expect(pq.peek()).toBe("low"); // Should still be there
67
+ });
68
+ it("should return undefined for empty queue", () => {
69
+ const pq = new PriorityQueue();
70
+ expect(pq.peek()).toBeUndefined();
71
+ });
72
+ });
73
+ describe("updatePriority", () => {
74
+ it("should update priority and maintain heap property", () => {
75
+ const pq = new PriorityQueue();
76
+ pq.enqueue("a", 5);
77
+ pq.enqueue("b", 10);
78
+ pq.enqueue("c", 15);
79
+ expect(pq.updatePriority("b", 1)).toBe(true);
80
+ expect(pq.dequeue()).toBe("b"); // Should now be highest priority
81
+ });
82
+ it("should return false for non-existent item", () => {
83
+ const pq = new PriorityQueue();
84
+ pq.enqueue("a", 5);
85
+ expect(pq.updatePriority("nonexistent", 1)).toBe(false);
86
+ });
87
+ it("should handle priority increase correctly", () => {
88
+ const pq = new PriorityQueue();
89
+ pq.enqueue("a", 1);
90
+ pq.enqueue("b", 5);
91
+ pq.enqueue("c", 10);
92
+ expect(pq.updatePriority("a", 15)).toBe(true);
93
+ expect(pq.dequeue()).toBe("b"); // 'a' should now be last
94
+ expect(pq.dequeue()).toBe("c");
95
+ expect(pq.dequeue()).toBe("a");
96
+ });
97
+ });
98
+ describe("clear", () => {
99
+ it("should remove all items from queue", () => {
100
+ const pq = new PriorityQueue();
101
+ pq.enqueue("a", 1);
102
+ pq.enqueue("b", 2);
103
+ pq.enqueue("c", 3);
104
+ expect(pq.size()).toBe(3);
105
+ pq.clear();
106
+ expect(pq.size()).toBe(0);
107
+ expect(pq.isEmpty()).toBe(true);
108
+ expect(pq.peek()).toBeUndefined();
109
+ });
110
+ });
111
+ describe("toArray", () => {
112
+ it("should return array representation of queue", () => {
113
+ const pq = new PriorityQueue();
114
+ pq.enqueue("a", 1);
115
+ pq.enqueue("b", 2);
116
+ pq.enqueue("c", 3);
117
+ const array = pq.toArray();
118
+ expect(array).toHaveLength(3);
119
+ expect(array.every((item) => typeof item.item === "string")).toBe(true);
120
+ expect(array.every((item) => typeof item.priority === "number")).toBe(true);
121
+ });
122
+ it("should return copy of internal array", () => {
123
+ const pq = new PriorityQueue();
124
+ pq.enqueue("a", 1);
125
+ const array1 = pq.toArray();
126
+ const array2 = pq.toArray();
127
+ expect(array1).not.toBe(array2); // Different array instances
128
+ expect(array1).toEqual(array2); // But same content
129
+ });
130
+ });
131
+ describe("stress test", () => {
132
+ it("should handle large number of operations efficiently", () => {
133
+ const pq = new PriorityQueue();
134
+ const items = 1000;
135
+ // Add items in random order
136
+ for (let i = 0; i < items; i++) {
137
+ pq.enqueue(i, Math.random() * 1000);
138
+ }
139
+ expect(pq.size()).toBe(items);
140
+ // Dequeue all items - should come out in priority order
141
+ const lastPriority = -Infinity;
142
+ for (let i = 0; i < items; i++) {
143
+ const item = pq.dequeue();
144
+ expect(item).toBeDefined();
145
+ // Get the priority from the remaining queue state
146
+ // This is a simplified check since we can't easily get the priority of dequeued item
147
+ if (!pq.isEmpty()) {
148
+ // The next item should have equal or higher priority (min-heap)
149
+ const nextArray = pq.toArray();
150
+ if (nextArray.length > 0) {
151
+ const minPriority = Math.min(...nextArray.map((x) => x.priority));
152
+ expect(minPriority).toBeGreaterThanOrEqual(lastPriority);
153
+ }
154
+ }
155
+ }
156
+ expect(pq.isEmpty()).toBe(true);
157
+ });
158
+ });
159
+ describe("edge cases", () => {
160
+ it("should handle negative priorities", () => {
161
+ const pq = new PriorityQueue();
162
+ pq.enqueue("negative", -5);
163
+ pq.enqueue("positive", 5);
164
+ pq.enqueue("zero", 0);
165
+ expect(pq.dequeue()).toBe("negative");
166
+ expect(pq.dequeue()).toBe("zero");
167
+ expect(pq.dequeue()).toBe("positive");
168
+ });
169
+ it("should handle floating point priorities", () => {
170
+ const pq = new PriorityQueue();
171
+ pq.enqueue("a", 1.5);
172
+ pq.enqueue("b", 1.1);
173
+ pq.enqueue("c", 1.9);
174
+ expect(pq.dequeue()).toBe("b");
175
+ expect(pq.dequeue()).toBe("a");
176
+ expect(pq.dequeue()).toBe("c");
177
+ });
178
+ it("should handle complex objects as items", () => {
179
+ const pq = new PriorityQueue();
180
+ const item1 = { id: "1", value: 100 };
181
+ const item2 = { id: "2", value: 200 };
182
+ pq.enqueue(item1, 10);
183
+ pq.enqueue(item2, 5);
184
+ expect(pq.dequeue()).toBe(item2);
185
+ expect(pq.dequeue()).toBe(item1);
186
+ });
187
+ });
188
+ });
189
+ //# sourceMappingURL=priority-queue.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"priority-queue.test.js","sourceRoot":"","sources":["../../../test/unit/priority-queue.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=union-find.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"union-find.test.d.ts","sourceRoot":"","sources":["../../../test/unit/union-find.test.ts"],"names":[],"mappings":""}