@linklabjs/core 0.1.0 → 0.1.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 (206) hide show
  1. package/dist/api/DomainNode.d.ts +154 -0
  2. package/dist/api/DomainNode.d.ts.map +1 -0
  3. package/dist/api/DomainNode.js +1157 -0
  4. package/dist/api/DomainNode.js.map +1 -0
  5. package/dist/api/Graph.d.ts +117 -0
  6. package/dist/api/Graph.d.ts.map +1 -0
  7. package/dist/api/Graph.js +212 -0
  8. package/dist/api/Graph.js.map +1 -0
  9. package/dist/api/PathBuilder.d.ts +76 -0
  10. package/dist/api/PathBuilder.d.ts.map +1 -0
  11. package/dist/api/PathBuilder.js +182 -0
  12. package/dist/api/PathBuilder.js.map +1 -0
  13. package/dist/api/index.d.ts +8 -0
  14. package/dist/api/index.d.ts.map +1 -0
  15. package/dist/api/index.js +7 -0
  16. package/dist/api/index.js.map +1 -0
  17. package/dist/api/loadGraph.d.ts +57 -0
  18. package/dist/api/loadGraph.d.ts.map +1 -0
  19. package/dist/api/loadGraph.js +153 -0
  20. package/dist/api/loadGraph.js.map +1 -0
  21. package/dist/api/test-api.d.ts +9 -0
  22. package/dist/api/test-api.d.ts.map +1 -0
  23. package/dist/api/test-api.js +133 -0
  24. package/dist/api/test-api.js.map +1 -0
  25. package/dist/api/test-domain.d.ts +13 -0
  26. package/dist/api/test-domain.d.ts.map +1 -0
  27. package/dist/api/test-domain.js +105 -0
  28. package/dist/api/test-domain.js.map +1 -0
  29. package/dist/api/types.d.ts +69 -0
  30. package/dist/api/types.d.ts.map +1 -0
  31. package/dist/api/types.js +22 -0
  32. package/dist/api/types.js.map +1 -0
  33. package/dist/config/synonyms.json +25 -0
  34. package/dist/core/EventBus.d.ts +56 -0
  35. package/dist/core/EventBus.d.ts.map +1 -0
  36. package/dist/core/EventBus.js +147 -0
  37. package/dist/core/EventBus.js.map +1 -0
  38. package/dist/core/GraphEvents.d.ts +118 -0
  39. package/dist/core/GraphEvents.d.ts.map +1 -0
  40. package/dist/core/GraphEvents.js +23 -0
  41. package/dist/core/GraphEvents.js.map +1 -0
  42. package/dist/core/PathFinder.d.ts +43 -0
  43. package/dist/core/PathFinder.d.ts.map +1 -0
  44. package/dist/core/PathFinder.js +264 -0
  45. package/dist/core/PathFinder.js.map +1 -0
  46. package/dist/formatters/BaseFormatter.d.ts +15 -0
  47. package/dist/formatters/BaseFormatter.d.ts.map +1 -0
  48. package/dist/formatters/BaseFormatter.js +9 -0
  49. package/dist/formatters/BaseFormatter.js.map +1 -0
  50. package/dist/graph/GraphAssembler.d.ts +14 -0
  51. package/dist/graph/GraphAssembler.d.ts.map +1 -0
  52. package/dist/graph/GraphAssembler.js +44 -0
  53. package/dist/graph/GraphAssembler.js.map +1 -0
  54. package/dist/graph/GraphCompiler.d.ts +37 -0
  55. package/dist/graph/GraphCompiler.d.ts.map +1 -0
  56. package/dist/graph/GraphCompiler.js +355 -0
  57. package/dist/graph/GraphCompiler.js.map +1 -0
  58. package/dist/graph/GraphExtractor.d.ts +21 -0
  59. package/dist/graph/GraphExtractor.d.ts.map +1 -0
  60. package/dist/graph/GraphExtractor.js +145 -0
  61. package/dist/graph/GraphExtractor.js.map +1 -0
  62. package/dist/graph/GraphOptimizer.d.ts +104 -0
  63. package/dist/graph/GraphOptimizer.d.ts.map +1 -0
  64. package/dist/graph/GraphOptimizer.js +306 -0
  65. package/dist/graph/GraphOptimizer.js.map +1 -0
  66. package/dist/graph/GraphTrainer.d.ts +52 -0
  67. package/dist/graph/GraphTrainer.d.ts.map +1 -0
  68. package/dist/graph/GraphTrainer.js +188 -0
  69. package/dist/graph/GraphTrainer.js.map +1 -0
  70. package/dist/http/LinkBuilder.d.ts +82 -0
  71. package/dist/http/LinkBuilder.d.ts.map +1 -0
  72. package/dist/http/LinkBuilder.js +190 -0
  73. package/dist/http/LinkBuilder.js.map +1 -0
  74. package/dist/http/TrailRequest.d.ts +39 -0
  75. package/dist/http/TrailRequest.d.ts.map +1 -0
  76. package/dist/http/TrailRequest.js +22 -0
  77. package/dist/http/TrailRequest.js.map +1 -0
  78. package/dist/http/example-netflix.d.ts +6 -0
  79. package/dist/http/example-netflix.d.ts.map +1 -0
  80. package/dist/http/example-netflix.js +52 -0
  81. package/dist/http/example-netflix.js.map +1 -0
  82. package/dist/http/index.d.ts +32 -0
  83. package/dist/http/index.d.ts.map +1 -0
  84. package/dist/http/index.js +27 -0
  85. package/dist/http/index.js.map +1 -0
  86. package/dist/http/plugin.d.ts +110 -0
  87. package/dist/http/plugin.d.ts.map +1 -0
  88. package/dist/http/plugin.js +217 -0
  89. package/dist/http/plugin.js.map +1 -0
  90. package/dist/index.d.ts +55 -0
  91. package/dist/index.d.ts.map +1 -0
  92. package/dist/index.js +71 -0
  93. package/dist/index.js.map +1 -0
  94. package/dist/instrumentation/TelemetryShim.d.ts +114 -0
  95. package/dist/instrumentation/TelemetryShim.d.ts.map +1 -0
  96. package/dist/instrumentation/TelemetryShim.js +107 -0
  97. package/dist/instrumentation/TelemetryShim.js.map +1 -0
  98. package/dist/navigation/NavigationEngine.d.ts +69 -0
  99. package/dist/navigation/NavigationEngine.d.ts.map +1 -0
  100. package/dist/navigation/NavigationEngine.js +361 -0
  101. package/dist/navigation/NavigationEngine.js.map +1 -0
  102. package/dist/navigation/Resolver.d.ts +35 -0
  103. package/dist/navigation/Resolver.d.ts.map +1 -0
  104. package/dist/navigation/Resolver.js +113 -0
  105. package/dist/navigation/Resolver.js.map +1 -0
  106. package/dist/navigation/Scheduler.d.ts +36 -0
  107. package/dist/navigation/Scheduler.d.ts.map +1 -0
  108. package/dist/navigation/Scheduler.js +107 -0
  109. package/dist/navigation/Scheduler.js.map +1 -0
  110. package/dist/navigation/Trail.d.ts +129 -0
  111. package/dist/navigation/Trail.d.ts.map +1 -0
  112. package/dist/navigation/Trail.js +202 -0
  113. package/dist/navigation/Trail.js.map +1 -0
  114. package/dist/navigation/TrailParser.d.ts +96 -0
  115. package/dist/navigation/TrailParser.d.ts.map +1 -0
  116. package/dist/navigation/TrailParser.js +180 -0
  117. package/dist/navigation/TrailParser.js.map +1 -0
  118. package/dist/navigation/index.d.ts +10 -0
  119. package/dist/navigation/index.d.ts.map +1 -0
  120. package/dist/navigation/index.js +9 -0
  121. package/dist/navigation/index.js.map +1 -0
  122. package/dist/providers/MockProvider.d.ts +29 -0
  123. package/dist/providers/MockProvider.d.ts.map +1 -0
  124. package/dist/providers/MockProvider.js +55 -0
  125. package/dist/providers/MockProvider.js.map +1 -0
  126. package/dist/providers/PostgresProvider.d.ts +46 -0
  127. package/dist/providers/PostgresProvider.d.ts.map +1 -0
  128. package/dist/providers/PostgresProvider.js +152 -0
  129. package/dist/providers/PostgresProvider.js.map +1 -0
  130. package/dist/runtime/CompiledGraphEngine.d.ts +74 -0
  131. package/dist/runtime/CompiledGraphEngine.d.ts.map +1 -0
  132. package/dist/runtime/CompiledGraphEngine.js +211 -0
  133. package/dist/runtime/CompiledGraphEngine.js.map +1 -0
  134. package/dist/runtime/DataLoader.d.ts +90 -0
  135. package/dist/runtime/DataLoader.d.ts.map +1 -0
  136. package/dist/runtime/DataLoader.js +178 -0
  137. package/dist/runtime/DataLoader.js.map +1 -0
  138. package/dist/runtime/Engine.d.ts +36 -0
  139. package/dist/runtime/Engine.d.ts.map +1 -0
  140. package/dist/runtime/Engine.js +128 -0
  141. package/dist/runtime/Engine.js.map +1 -0
  142. package/dist/runtime/QueryEngine.d.ts +80 -0
  143. package/dist/runtime/QueryEngine.d.ts.map +1 -0
  144. package/dist/runtime/QueryEngine.js +188 -0
  145. package/dist/runtime/QueryEngine.js.map +1 -0
  146. package/dist/scenarios/test-metro-paris/config.json +6 -0
  147. package/dist/scenarios/test-metro-paris/graph.json +16325 -0
  148. package/dist/scenarios/test-metro-paris/queries.d.ts +22 -0
  149. package/dist/scenarios/test-metro-paris/queries.d.ts.map +1 -0
  150. package/dist/scenarios/test-metro-paris/queries.js +128 -0
  151. package/dist/scenarios/test-metro-paris/queries.js.map +1 -0
  152. package/dist/scenarios/test-metro-paris/stack.json +1 -0
  153. package/dist/scenarios/test-musicians/config.json +10 -0
  154. package/dist/scenarios/test-musicians/graph.json +20 -0
  155. package/dist/scenarios/test-musicians/stack.json +1 -0
  156. package/dist/scenarios/test-netflix/actions.d.ts +14 -0
  157. package/dist/scenarios/test-netflix/actions.d.ts.map +1 -0
  158. package/dist/scenarios/test-netflix/actions.js +86 -0
  159. package/dist/scenarios/test-netflix/actions.js.map +1 -0
  160. package/dist/scenarios/test-netflix/config.json +6 -0
  161. package/dist/scenarios/test-netflix/data/categories.json +1 -0
  162. package/dist/scenarios/test-netflix/data/companies.json +1 -0
  163. package/dist/scenarios/test-netflix/data/credits.json +19797 -0
  164. package/dist/scenarios/test-netflix/data/departments.json +18 -0
  165. package/dist/scenarios/test-netflix/data/jobs.json +142 -0
  166. package/dist/scenarios/test-netflix/data/movies.json +3497 -0
  167. package/dist/scenarios/test-netflix/data/people.json +1 -0
  168. package/dist/scenarios/test-netflix/data/synonyms.json +7 -0
  169. package/dist/scenarios/test-netflix/data/users.json +70 -0
  170. package/dist/scenarios/test-netflix/graph.json +1017 -0
  171. package/dist/scenarios/test-netflix/queries.d.ts +29 -0
  172. package/dist/scenarios/test-netflix/queries.d.ts.map +1 -0
  173. package/dist/scenarios/test-netflix/queries.js +134 -0
  174. package/dist/scenarios/test-netflix/queries.js.map +1 -0
  175. package/dist/scenarios/test-netflix/stack.json +14 -0
  176. package/dist/schema/GraphBuilder.d.ts +9 -0
  177. package/dist/schema/GraphBuilder.d.ts.map +1 -0
  178. package/dist/schema/GraphBuilder.js +90 -0
  179. package/dist/schema/GraphBuilder.js.map +1 -0
  180. package/dist/schema/JsonSchemaExtractor.d.ts +21 -0
  181. package/dist/schema/JsonSchemaExtractor.d.ts.map +1 -0
  182. package/dist/schema/JsonSchemaExtractor.js +88 -0
  183. package/dist/schema/JsonSchemaExtractor.js.map +1 -0
  184. package/dist/schema/SchemaAnalyzer.d.ts +41 -0
  185. package/dist/schema/SchemaAnalyzer.d.ts.map +1 -0
  186. package/dist/schema/SchemaAnalyzer.js +144 -0
  187. package/dist/schema/SchemaAnalyzer.js.map +1 -0
  188. package/dist/schema/SchemaExtractor.d.ts +10 -0
  189. package/dist/schema/SchemaExtractor.d.ts.map +1 -0
  190. package/dist/schema/SchemaExtractor.js +90 -0
  191. package/dist/schema/SchemaExtractor.js.map +1 -0
  192. package/dist/schema/SynonymResolver.d.ts +55 -0
  193. package/dist/schema/SynonymResolver.d.ts.map +1 -0
  194. package/dist/schema/SynonymResolver.js +121 -0
  195. package/dist/schema/SynonymResolver.js.map +1 -0
  196. package/dist/scripts/dictionary.json +796 -0
  197. package/dist/scripts/graph.json +664 -0
  198. package/dist/scripts/regenerate.d.ts +23 -0
  199. package/dist/scripts/regenerate.d.ts.map +1 -0
  200. package/dist/scripts/regenerate.js +206 -0
  201. package/dist/scripts/regenerate.js.map +1 -0
  202. package/dist/types/index.d.ts +394 -0
  203. package/dist/types/index.d.ts.map +1 -0
  204. package/dist/types/index.js +21 -0
  205. package/dist/types/index.js.map +1 -0
  206. package/package.json +1 -1
@@ -0,0 +1,264 @@
1
+ /**
2
+ * PathFinder - Dijkstra + DFS limité
3
+ *
4
+ * Deux algorithmes selon l'usage :
5
+ *
6
+ * findShortestPath() → Dijkstra (chemin optimal garanti, performant)
7
+ * findAllPaths() → DFS limité (N meilleurs chemins alternatifs)
8
+ *
9
+ * Sur un graphe de métro (300+ stations, 900+ arêtes),
10
+ * le DFS pur explose. Dijkstra est l'algorithme correct.
11
+ */
12
+ export class PathFinder {
13
+ graph;
14
+ adjacencyList;
15
+ constructor(graph) {
16
+ this.graph = graph;
17
+ this.adjacencyList = this.buildAdjacencyList(graph);
18
+ }
19
+ // ==================== DIJKSTRA ====================
20
+ /**
21
+ * Chemin le plus court par poids (Dijkstra).
22
+ * Garanti optimal. Performant sur grands graphes.
23
+ */
24
+ findShortestPath(from, to) {
25
+ const dist = new Map();
26
+ const prev = new Map();
27
+ const visited = new Set();
28
+ // Initialisation
29
+ for (const node of this.graph.nodes) {
30
+ dist.set(node.id, Infinity);
31
+ }
32
+ dist.set(from, 0);
33
+ prev.set(from, null);
34
+ // Priority queue simple (pour notre taille, suffisant)
35
+ const queue = new Set(this.graph.nodes.map(n => n.id));
36
+ while (queue.size > 0) {
37
+ // Nœud non visité avec distance minimale
38
+ let u = null;
39
+ let minDist = Infinity;
40
+ for (const node of queue) {
41
+ const d = dist.get(node) ?? Infinity;
42
+ if (d < minDist) {
43
+ minDist = d;
44
+ u = node;
45
+ }
46
+ }
47
+ if (u === null || u === to)
48
+ break;
49
+ if (minDist === Infinity)
50
+ break; // Graphe non connexe
51
+ queue.delete(u);
52
+ visited.add(u);
53
+ const neighbors = this.adjacencyList.get(u) ?? [];
54
+ for (const { to: v, edge } of neighbors) {
55
+ if (visited.has(v))
56
+ continue;
57
+ const alt = (dist.get(u) ?? Infinity) + edge.weight;
58
+ if (alt < (dist.get(v) ?? Infinity)) {
59
+ dist.set(v, alt);
60
+ prev.set(v, { node: u, edge });
61
+ }
62
+ }
63
+ }
64
+ if (!prev.has(to) && to !== from)
65
+ return null;
66
+ if ((dist.get(to) ?? Infinity) === Infinity)
67
+ return null;
68
+ // Reconstruction du chemin
69
+ const path = [];
70
+ const edges = [];
71
+ let current = to;
72
+ while (current !== null) {
73
+ path.unshift(current);
74
+ const p = prev.get(current);
75
+ if (p) {
76
+ edges.unshift(p.edge);
77
+ current = p.node;
78
+ }
79
+ else {
80
+ current = null;
81
+ }
82
+ }
83
+ return {
84
+ path,
85
+ edges,
86
+ length: path.length,
87
+ joins: path.length - 1,
88
+ weight: dist.get(to) ?? 0,
89
+ indirect: path.length > 2
90
+ };
91
+ }
92
+ /**
93
+ * N meilleurs chemins (Yen's K-shortest paths simplifié).
94
+ * Trouve le plus court via Dijkstra, puis des alternatives
95
+ * en pénalisant les arêtes du chemin précédent.
96
+ */
97
+ findAllPaths(from, to, maxPaths = 3, _maxDepth = 50, transferPenalty = 0, allowedVia, minHops = 0) {
98
+ const results = [];
99
+ const penalized = new Set(); // arêtes temporairement exclues
100
+ for (let k = 0; k < maxPaths; k++) {
101
+ const result = this.dijkstraWithExclusions(from, to, penalized, transferPenalty, allowedVia, minHops);
102
+ if (!result)
103
+ break;
104
+ results.push(result);
105
+ // Pénaliser la dernière arête du chemin trouvé pour forcer une alternative
106
+ if (result.edges.length > 0) {
107
+ const lastEdge = result.edges[result.edges.length - 1];
108
+ penalized.add(lastEdge.name ?? `${lastEdge.from}->${lastEdge.to}`);
109
+ }
110
+ }
111
+ return results.map(r => r.path);
112
+ }
113
+ /**
114
+ * Dijkstra avec exclusion d'arêtes (pour les chemins alternatifs)
115
+ */
116
+ dijkstraWithExclusions(from, to, excluded, transferPenalty = 0, allowedVia, minHops = 0) {
117
+ const dist = new Map();
118
+ const prev = new Map();
119
+ const visited = new Set();
120
+ for (const node of this.graph.nodes)
121
+ dist.set(node.id, Infinity);
122
+ dist.set(from, 0);
123
+ prev.set(from, null);
124
+ const queue = new Set(this.graph.nodes.map(n => n.id));
125
+ while (queue.size > 0) {
126
+ let u = null;
127
+ let minDist = Infinity;
128
+ for (const node of queue) {
129
+ const d = dist.get(node) ?? Infinity;
130
+ if (d < minDist) {
131
+ minDist = d;
132
+ u = node;
133
+ }
134
+ }
135
+ if (u === null || u === to || minDist === Infinity)
136
+ break;
137
+ queue.delete(u);
138
+ visited.add(u);
139
+ for (const { to: v, edge } of this.adjacencyList.get(u) ?? []) {
140
+ if (visited.has(v))
141
+ continue;
142
+ const edgeKey = edge.name ?? `${edge.from}->${edge.to}`;
143
+ if (excluded.has(edgeKey))
144
+ continue;
145
+ // Filtre via — si spécifié, ignorer les arêtes dont le type n'est pas dans la liste
146
+ if (allowedVia && allowedVia.length > 0) {
147
+ const edgeType = edge.metadata?.type ?? edge.via;
148
+ if (!allowedVia.includes(edgeType))
149
+ continue;
150
+ }
151
+ // Pénalité sur changement de ligne — deux cas :
152
+ // 1. Arête explicitement TRANSFER (self-loop de correspondance)
153
+ // 2. Changement de ligne implicite (arête DIRECT mais ligne différente de la précédente)
154
+ let penalty = 0;
155
+ if (transferPenalty > 0) {
156
+ const isExplicitTransfer = edge.metadata?.type === 'TRANSFER';
157
+ const prevEdge = prev.get(u);
158
+ const prevLineId = prevEdge?.edge?.metadata?.lineId;
159
+ const currLineId = edge.metadata?.lineId;
160
+ const isLineChange = prevLineId && currLineId && prevLineId !== currLineId
161
+ && edge.metadata?.type !== 'TRANSFER';
162
+ if (isExplicitTransfer || isLineChange) {
163
+ penalty = transferPenalty;
164
+ }
165
+ }
166
+ const alt = (dist.get(u) ?? Infinity) + edge.weight + penalty;
167
+ if (alt < (dist.get(v) ?? Infinity)) {
168
+ dist.set(v, alt);
169
+ prev.set(v, { node: u, edge });
170
+ }
171
+ }
172
+ }
173
+ if ((dist.get(to) ?? Infinity) === Infinity)
174
+ return null;
175
+ const path = [];
176
+ const edges = [];
177
+ let current = to;
178
+ while (current !== null) {
179
+ path.unshift(current);
180
+ const p = prev.get(current);
181
+ if (p) {
182
+ edges.unshift(p.edge);
183
+ current = p.node;
184
+ }
185
+ else
186
+ current = null;
187
+ }
188
+ // Filtre minHops — rejeter les chemins trop courts
189
+ if (minHops > 0 && path.length - 1 < minHops)
190
+ return null;
191
+ return {
192
+ path, edges,
193
+ length: path.length,
194
+ joins: path.length - 1,
195
+ weight: dist.get(to) ?? 0,
196
+ indirect: path.length > 2
197
+ };
198
+ }
199
+ // ==================== HELPERS ====================
200
+ getPathWeight(path) {
201
+ let total = 0;
202
+ for (let i = 0; i < path.length - 1; i++) {
203
+ const edge = this.graph.edges.find(e => e.from === path[i] && e.to === path[i + 1]);
204
+ if (edge)
205
+ total += edge.weight;
206
+ }
207
+ return total;
208
+ }
209
+ getPathDetails(path) {
210
+ const edges = [];
211
+ for (let i = 0; i < path.length - 1; i++) {
212
+ const edge = this.graph.edges.find(e => e.from === path[i] && e.to === path[i + 1]);
213
+ if (edge)
214
+ edges.push(edge);
215
+ }
216
+ return {
217
+ path, edges,
218
+ length: path.length,
219
+ joins: path.length - 1,
220
+ weight: this.getPathWeight(path),
221
+ indirect: path.length > 2
222
+ };
223
+ }
224
+ hasPath(from, to) {
225
+ return this.findShortestPath(from, to) !== null;
226
+ }
227
+ getReachableNodes(from, maxDepth = 50) {
228
+ const reachable = new Set();
229
+ const visited = new Set();
230
+ const dfs = (node, depth) => {
231
+ if (depth > maxDepth || visited.has(node))
232
+ return;
233
+ visited.add(node);
234
+ reachable.add(node);
235
+ for (const { to } of this.adjacencyList.get(node) ?? [])
236
+ dfs(to, depth + 1);
237
+ };
238
+ dfs(from, 0);
239
+ reachable.delete(from);
240
+ return reachable;
241
+ }
242
+ buildAdjacencyList(graph) {
243
+ const adj = new Map();
244
+ for (const edge of graph.edges) {
245
+ if (!adj.has(edge.from))
246
+ adj.set(edge.from, []);
247
+ adj.get(edge.from).push({ to: edge.to, edge });
248
+ if (!adj.has(edge.to))
249
+ adj.set(edge.to, []);
250
+ }
251
+ return adj;
252
+ }
253
+ getStats() {
254
+ const degrees = new Map();
255
+ for (const node of this.graph.nodes)
256
+ degrees.set(node.id, 0);
257
+ for (const edge of this.graph.edges) {
258
+ degrees.set(edge.from, (degrees.get(edge.from) ?? 0) + 1);
259
+ }
260
+ const avgDegree = Array.from(degrees.values()).reduce((s, d) => s + d, 0) / degrees.size;
261
+ return { nodes: this.graph.nodes.length, edges: this.graph.edges.length, avgDegree };
262
+ }
263
+ }
264
+ //# sourceMappingURL=PathFinder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PathFinder.js","sourceRoot":"","sources":["../../src/core/PathFinder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * BaseFormatter - Interface pour les formatters de sortie
3
+ *
4
+ * Chaque scénario peut avoir son propre formatter.
5
+ * Le formatter transforme un résultat brut du NavigationEngine
6
+ * en sortie lisible par un humain.
7
+ */
8
+ import type { NavigationPath, EngineStepResult } from '../types/index.js';
9
+ export interface PathFormatter {
10
+ /** Formate un chemin pour l'affichage humain */
11
+ format(path: NavigationPath): string;
12
+ /** Formate un step complet de résultat */
13
+ formatResult(result: EngineStepResult): string;
14
+ }
15
+ //# sourceMappingURL=BaseFormatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseFormatter.d.ts","sourceRoot":"","sources":["../../src/formatters/BaseFormatter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEzE,MAAM,WAAW,aAAa;IAC5B,gDAAgD;IAChD,MAAM,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAAA;IAEpC,0CAA0C;IAC1C,YAAY,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAAA;CAC/C"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * BaseFormatter - Interface pour les formatters de sortie
3
+ *
4
+ * Chaque scénario peut avoir son propre formatter.
5
+ * Le formatter transforme un résultat brut du NavigationEngine
6
+ * en sortie lisible par un humain.
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=BaseFormatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseFormatter.js","sourceRoot":"","sources":["../../src/formatters/BaseFormatter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * GraphAssembler — Dictionary → Graph V3
3
+ *
4
+ * Transforme le Dictionary produit par GraphBuilder
5
+ * en Graph V3 (nodes + edges) prêt pour PathFinder.
6
+ *
7
+ * Corrige le bug d'itération : dictionary.tables est une Table[]
8
+ * (liste), pas un Record<string, Table> (dictionnaire).
9
+ */
10
+ import type { Dictionary, Graph } from '../types/index.js';
11
+ export declare class GraphAssembler {
12
+ assemble(dictionary: Dictionary): Graph;
13
+ }
14
+ //# sourceMappingURL=GraphAssembler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphAssembler.d.ts","sourceRoot":"","sources":["../../src/graph/GraphAssembler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAwB,MAAM,mBAAmB,CAAA;AAEhF,qBAAa,cAAc;IAEzB,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,KAAK;CAmCxC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * GraphAssembler — Dictionary → Graph V3
3
+ *
4
+ * Transforme le Dictionary produit par GraphBuilder
5
+ * en Graph V3 (nodes + edges) prêt pour PathFinder.
6
+ *
7
+ * Corrige le bug d'itération : dictionary.tables est une Table[]
8
+ * (liste), pas un Record<string, Table> (dictionnaire).
9
+ */
10
+ export class GraphAssembler {
11
+ assemble(dictionary) {
12
+ const nodes = [];
13
+ const edges = [];
14
+ // 1. Tables → Nodes
15
+ // dictionary.tables est une Table[] — itération sur les éléments, pas les indices
16
+ for (const table of dictionary.tables) {
17
+ nodes.push({
18
+ id: table.name,
19
+ type: 'table',
20
+ rowCount: table.rowCount,
21
+ columns: table.columns.map(c => ({ name: c, type: 'string' }))
22
+ });
23
+ }
24
+ // 2. Relations → Edges
25
+ for (const rel of dictionary.relations) {
26
+ edges.push({
27
+ name: rel.label,
28
+ from: rel.from,
29
+ to: rel.to,
30
+ via: rel.via,
31
+ weight: typeof rel.weight === 'string'
32
+ ? parseFloat(rel.weight)
33
+ : (rel.weight ?? 1),
34
+ metadata: {
35
+ type: rel.type,
36
+ condition: rel.condition,
37
+ metadataField: rel.metadataField
38
+ }
39
+ });
40
+ }
41
+ return { nodes, edges };
42
+ }
43
+ }
44
+ //# sourceMappingURL=GraphAssembler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphAssembler.js","sourceRoot":"","sources":["../../src/graph/GraphAssembler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,MAAM,OAAO,cAAc;IAEzB,QAAQ,CAAC,UAAsB;QAC7B,MAAM,KAAK,GAAgB,EAAE,CAAA;QAC7B,MAAM,KAAK,GAAgB,EAAE,CAAA;QAE7B,oBAAoB;QACpB,kFAAkF;QAClF,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;YACtC,KAAK,CAAC,IAAI,CAAC;gBACT,EAAE,EAAE,KAAK,CAAC,IAAI;gBACd,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;aAC/D,CAAC,CAAA;QACJ,CAAC;QAED,uBAAuB;QACvB,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,GAAG,CAAC,KAAK;gBACf,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,EAAE,EAAE,GAAG,CAAC,EAAE;gBACV,GAAG,EAAE,GAAG,CAAC,GAAG;gBACZ,MAAM,EAAE,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ;oBACpC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC;oBACxB,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;gBACrB,QAAQ,EAAE;oBACR,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,SAAS,EAAE,GAAG,CAAC,SAAS;oBACxB,aAAa,EAAE,GAAG,CAAC,aAAa;iBACjC;aACF,CAAC,CAAA;QACJ,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;IACzB,CAAC;CACF"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * GraphCompiler — v2.0.0
3
+ *
4
+ * Changements vs v1 :
5
+ * - Routes sémantiques (semantic_view) compilées et incluses
6
+ * - compiled-graph contient physical + semantic routes
7
+ * - version bump : '2.0.0'
8
+ *
9
+ * v2.1 :
10
+ * - Support expose config (ADR-0010)
11
+ * - node.exposed compilé depuis CompilerConfig.expose
12
+ */
13
+ import type { Graph, CompiledGraph, CompilerConfig, MetricsMap } from '../types/index.js';
14
+ export interface EdgeMetadata {
15
+ fromCol: string;
16
+ toCol: string;
17
+ condition?: Record<string, unknown>;
18
+ label?: string;
19
+ }
20
+ export declare class GraphCompiler {
21
+ private config;
22
+ constructor(config?: Partial<CompilerConfig>);
23
+ compile(graph: Graph, metrics: MetricsMap): CompiledGraph;
24
+ private compileNodes;
25
+ private compileSemanticRoute;
26
+ private getAllPairs;
27
+ private compilePath;
28
+ private resolveEdges;
29
+ static getStats(compiled: CompiledGraph): {
30
+ totalRoutes: number;
31
+ fallbackRatio: string;
32
+ semantic: number;
33
+ physical: number;
34
+ composed: number;
35
+ };
36
+ }
37
+ //# sourceMappingURL=GraphCompiler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphCompiler.d.ts","sourceRoot":"","sources":["../../src/graph/GraphCompiler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,cAAc,EAAa,UAAU,EAA2B,MAAM,mBAAmB,CAAA;AAG7H,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACnC,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAqE;gBAEvE,MAAM,GAAE,OAAO,CAAC,cAAc,CAAM;IAUhD,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,GAAG,aAAa;IAiLzD,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,oBAAoB;IAmD5B,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,WAAW;IA6EnB,OAAO,CAAC,YAAY;IA4BpB,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,aAAa;;;;;;;CAgBxC"}