@linklabjs/core 0.1.2 → 0.1.3

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 (63) hide show
  1. package/package.json +1 -1
  2. package/dist/scenarios/test-metro-paris/config.json +0 -6
  3. package/dist/scenarios/test-metro-paris/graph.json +0 -16325
  4. package/dist/scenarios/test-metro-paris/queries.d.ts +0 -22
  5. package/dist/scenarios/test-metro-paris/queries.d.ts.map +0 -1
  6. package/dist/scenarios/test-metro-paris/queries.js +0 -128
  7. package/dist/scenarios/test-metro-paris/queries.js.map +0 -1
  8. package/dist/scenarios/test-metro-paris/stack.json +0 -1
  9. package/dist/scenarios/test-musicians/config.json +0 -10
  10. package/dist/scenarios/test-musicians/graph.json +0 -20
  11. package/dist/scenarios/test-musicians/stack.json +0 -1
  12. package/dist/scenarios/test-netflix/actions.d.ts +0 -14
  13. package/dist/scenarios/test-netflix/actions.d.ts.map +0 -1
  14. package/dist/scenarios/test-netflix/actions.js +0 -86
  15. package/dist/scenarios/test-netflix/actions.js.map +0 -1
  16. package/dist/scenarios/test-netflix/config.json +0 -6
  17. package/dist/scenarios/test-netflix/data/categories.json +0 -1
  18. package/dist/scenarios/test-netflix/data/companies.json +0 -1
  19. package/dist/scenarios/test-netflix/data/credits.json +0 -19797
  20. package/dist/scenarios/test-netflix/data/departments.json +0 -18
  21. package/dist/scenarios/test-netflix/data/jobs.json +0 -142
  22. package/dist/scenarios/test-netflix/data/movies.json +0 -3497
  23. package/dist/scenarios/test-netflix/data/people.json +0 -1
  24. package/dist/scenarios/test-netflix/data/synonyms.json +0 -7
  25. package/dist/scenarios/test-netflix/data/users.json +0 -70
  26. package/dist/scenarios/test-netflix/graph.json +0 -1017
  27. package/dist/scenarios/test-netflix/queries.d.ts +0 -29
  28. package/dist/scenarios/test-netflix/queries.d.ts.map +0 -1
  29. package/dist/scenarios/test-netflix/queries.js +0 -134
  30. package/dist/scenarios/test-netflix/queries.js.map +0 -1
  31. package/dist/scenarios/test-netflix/stack.json +0 -14
  32. package/dist/scripts/dictionary.json +0 -796
  33. package/dist/scripts/graph.json +0 -664
  34. package/dist/scripts/regenerate.d.ts +0 -23
  35. package/dist/scripts/regenerate.d.ts.map +0 -1
  36. package/dist/scripts/regenerate.js +0 -206
  37. package/dist/scripts/regenerate.js.map +0 -1
  38. package/src/scenarios/test-metro-paris/config.json +0 -6
  39. package/src/scenarios/test-metro-paris/graph.json +0 -16325
  40. package/src/scenarios/test-metro-paris/queries.ts +0 -152
  41. package/src/scenarios/test-metro-paris/stack.json +0 -1
  42. package/src/scenarios/test-musicians/config.json +0 -10
  43. package/src/scenarios/test-musicians/graph.json +0 -20
  44. package/src/scenarios/test-musicians/stack.json +0 -1
  45. package/src/scenarios/test-netflix/MIGRATION.md +0 -23
  46. package/src/scenarios/test-netflix/README.md +0 -138
  47. package/src/scenarios/test-netflix/actions.ts +0 -92
  48. package/src/scenarios/test-netflix/config.json +0 -6
  49. package/src/scenarios/test-netflix/data/categories.json +0 -1
  50. package/src/scenarios/test-netflix/data/companies.json +0 -1
  51. package/src/scenarios/test-netflix/data/credits.json +0 -19797
  52. package/src/scenarios/test-netflix/data/departments.json +0 -18
  53. package/src/scenarios/test-netflix/data/jobs.json +0 -142
  54. package/src/scenarios/test-netflix/data/movies.json +0 -3497
  55. package/src/scenarios/test-netflix/data/people.json +0 -1
  56. package/src/scenarios/test-netflix/data/synonyms.json +0 -8
  57. package/src/scenarios/test-netflix/data/users.json +0 -70
  58. package/src/scenarios/test-netflix/graph.json +0 -1017
  59. package/src/scenarios/test-netflix/queries.ts +0 -159
  60. package/src/scenarios/test-netflix/stack.json +0 -14
  61. package/src/scripts/dictionary.json +0 -796
  62. package/src/scripts/graph.json +0 -664
  63. package/src/scripts/regenerate.ts +0 -248
@@ -1,206 +0,0 @@
1
- /**
2
- * regenerate.ts — Script de régénération des graphes compilés
3
- *
4
- * Usage :
5
- * npx tsx regenerate.ts netflix
6
- * npx tsx regenerate.ts dvdrental --pg host=localhost user=postgres password=secret
7
- * npx tsx regenerate.ts all
8
- *
9
- * Régénère compiled-graph.json pour chaque scénario.
10
- * Bumpe automatiquement la version dans le fichier produit.
11
- *
12
- * Versioning :
13
- * - Graphes générés (netflix, dvdrental) : version dans compiled-graph.json
14
- * format : MAJOR.MINOR.PATCH ex: 2.0.0
15
- * MAJOR = version du GraphCompiler (structure breaking)
16
- * MINOR = changement de schéma (nouvelles tables/relations)
17
- * PATCH = recompilation (nouveaux poids, métriques)
18
- *
19
- * - Graphes manuels (metro, musicians) : version dans raw-graph.json + compiled
20
- * Patch manuel dans raw-graph.json, puis npx tsx regenerate.ts metro
21
- */
22
- import * as fs from 'fs';
23
- import * as path from 'path';
24
- import { fileURLToPath } from 'url';
25
- import { dirname } from 'path';
26
- import { JsonSchemaExtractor } from '../schema/JsonSchemaExtractor.js';
27
- import { SchemaAnalyzer } from '../schema/SchemaAnalyzer.js';
28
- import { GraphBuilder } from '../schema/GraphBuilder.js';
29
- import { GraphAssembler } from '../graph/GraphAssembler.js';
30
- import { GraphCompiler } from '../graph/GraphCompiler.js';
31
- import { PathFinder } from '../core/PathFinder.js';
32
- const __filename = fileURLToPath(import.meta.url);
33
- const __dirname = dirname(__filename);
34
- const ROOT = path.join(__dirname, '..', 'examples');
35
- const CONFIG_DIR = path.join(__dirname, '..', '..', 'config');
36
- // ── Helpers ───────────────────────────────────────────────────────────────────
37
- function save(filepath, data) {
38
- fs.writeFileSync(filepath, JSON.stringify(data, null, 2));
39
- const kb = (fs.statSync(filepath).size / 1024).toFixed(1);
40
- console.log(` 💾 ${path.basename(filepath).padEnd(25)} ${kb} KB`);
41
- }
42
- function bumpPatch(current) {
43
- const parts = current.split('.').map(Number);
44
- if (parts.length !== 3 || parts.some(isNaN))
45
- return '2.0.0';
46
- parts[2]++;
47
- return parts.join('.');
48
- }
49
- function readCurrentVersion(compiledPath) {
50
- try {
51
- const c = JSON.parse(fs.readFileSync(compiledPath, 'utf-8'));
52
- return c.version ?? '2.0.0';
53
- }
54
- catch {
55
- return '2.0.0';
56
- }
57
- }
58
- // ── Entraînement local (sans provider externe) ────────────────────────────────
59
- function trainLocal(graph, useCases) {
60
- const metrics = new Map();
61
- const finder = new PathFinder(graph);
62
- for (const uc of useCases) {
63
- const paths = finder.findAllPaths(uc.from, uc.to);
64
- for (const p of paths) {
65
- metrics.set(p.join('→'), {
66
- path: p,
67
- executions: 10,
68
- successes: 10,
69
- totalTime: 100,
70
- avgTime: 10,
71
- minTime: 8,
72
- maxTime: 12,
73
- used: true,
74
- failed: false
75
- });
76
- }
77
- }
78
- return metrics;
79
- }
80
- // ── Pipeline JSON (netflix, cinema, etc.) ─────────────────────────────────────
81
- async function regenerateFromJSON(scenario) {
82
- const dir = path.join(ROOT, scenario);
83
- const dataDir = path.join(dir, 'data');
84
- const compiledOut = path.join(dir, 'compiled-graph.json');
85
- if (!fs.existsSync(dataDir)) {
86
- console.error(` ❌ data/ not found: ${dataDir}`);
87
- return;
88
- }
89
- console.log(`\n🔄 ${scenario} — pipeline JSON`);
90
- console.log('─'.repeat(50));
91
- // Step 1 : Extraction
92
- const extractor = new JsonSchemaExtractor(dataDir);
93
- const techSchema = await extractor.extract();
94
- save(path.join(dir, 'schema.json'), techSchema);
95
- // Step 2 : Analyse
96
- const analyzer = new SchemaAnalyzer(CONFIG_DIR, dataDir);
97
- const analyzedSchema = analyzer.analyze(techSchema);
98
- save(path.join(dir, 'analyzed-schema.json'), analyzedSchema);
99
- // Step 3 : Dictionnaire
100
- const builder = new GraphBuilder();
101
- const dictionary = builder.build(analyzedSchema, dataDir);
102
- save(path.join(dir, 'dictionary.json'), dictionary);
103
- // Step 4 : Graphe brut
104
- const assembler = new GraphAssembler();
105
- const rawGraph = assembler.assemble(dictionary);
106
- save(path.join(dir, 'raw-graph.json'), rawGraph);
107
- console.log(` 📊 ${rawGraph.nodes.length} nœuds · ${rawGraph.edges.length} arêtes`);
108
- // Step 5 : Use cases (lire depuis use-cases.json si présent, sinon défaut)
109
- const ucFile = path.join(dir, 'use-cases.json');
110
- const useCases = fs.existsSync(ucFile)
111
- ? JSON.parse(fs.readFileSync(ucFile, 'utf-8'))
112
- : buildDefaultUseCases(rawGraph);
113
- const metrics = trainLocal(rawGraph, useCases);
114
- save(path.join(dir, 'metrics.json'), Object.fromEntries(metrics));
115
- // Step 6 : Compilation
116
- const prevVersion = readCurrentVersion(compiledOut);
117
- const newVersion = bumpPatch(prevVersion);
118
- const compiler = new GraphCompiler({ weightThreshold: 1000, keepFallbacks: true });
119
- const compiledGraph = compiler.compile(rawGraph, metrics);
120
- compiledGraph.version = newVersion;
121
- compiledGraph.scenario = scenario;
122
- save(compiledOut, compiledGraph);
123
- const stats = GraphCompiler.getStats(compiledGraph);
124
- console.log(`\n ✅ ${stats.totalRoutes} routes (${stats.physical} physical · ${stats.semantic} semantic)`);
125
- console.log(` 📌 version: ${prevVersion} → ${newVersion}`);
126
- }
127
- // ── Pipeline manuel (metro, musicians) ───────────────────────────────────────
128
- // raw-graph.json édité à la main → on recompile seulement
129
- async function recompileManual(scenario) {
130
- const dir = path.join(ROOT, scenario);
131
- const rawPath = path.join(dir, 'raw-graph.json');
132
- const compiledOut = path.join(dir, 'compiled-graph.json');
133
- if (!fs.existsSync(rawPath)) {
134
- console.error(` ❌ raw-graph.json not found: ${rawPath}`);
135
- return;
136
- }
137
- console.log(`\n🔄 ${scenario} — recompile manual graph`);
138
- console.log('─'.repeat(50));
139
- const rawGraph = JSON.parse(fs.readFileSync(rawPath, 'utf-8'));
140
- const ucFile = path.join(dir, 'use-cases.json');
141
- const useCases = fs.existsSync(ucFile)
142
- ? JSON.parse(fs.readFileSync(ucFile, 'utf-8'))
143
- : buildDefaultUseCases(rawGraph);
144
- const metrics = trainLocal(rawGraph, useCases);
145
- const prevVersion = readCurrentVersion(compiledOut);
146
- const newVersion = bumpPatch(prevVersion);
147
- const compiler = new GraphCompiler({ weightThreshold: 1000, keepFallbacks: true });
148
- const compiledGraph = compiler.compile(rawGraph, metrics);
149
- compiledGraph.version = newVersion;
150
- compiledGraph.scenario = scenario;
151
- save(compiledOut, compiledGraph);
152
- const stats = GraphCompiler.getStats(compiledGraph);
153
- console.log(` ✅ ${stats.totalRoutes} routes (${stats.physical} physical · ${stats.semantic} semantic)`);
154
- console.log(` 📌 version: ${prevVersion} → ${newVersion}`);
155
- }
156
- // ── Déterminer le type de scénario ────────────────────────────────────────────
157
- function scenarioType(scenario) {
158
- const dir = path.join(ROOT, scenario);
159
- if (fs.existsSync(path.join(dir, 'data')))
160
- return 'json';
161
- if (fs.existsSync(path.join(dir, 'raw-graph.json')))
162
- return 'manual';
163
- return 'unknown';
164
- }
165
- function buildDefaultUseCases(graph) {
166
- // Générer des use cases par défaut depuis les nœuds du graphe
167
- const nodes = graph.nodes.map((n) => n.id);
168
- const cases = [];
169
- for (let i = 0; i < Math.min(nodes.length, 4); i++) {
170
- for (let j = 0; j < Math.min(nodes.length, 4); j++) {
171
- if (i !== j)
172
- cases.push({ from: nodes[i], to: nodes[j], description: `${nodes[i]}→${nodes[j]}` });
173
- }
174
- }
175
- return cases;
176
- }
177
- // ── Main ──────────────────────────────────────────────────────────────────────
178
- async function main() {
179
- const args = process.argv.slice(2);
180
- const scenarios = args[0] === 'all'
181
- ? fs.readdirSync(ROOT).filter(d => fs.statSync(path.join(ROOT, d)).isDirectory())
182
- : args.filter(a => !a.startsWith('--'));
183
- if (!scenarios.length) {
184
- console.log('Usage: npx tsx regenerate.ts <scenario|all> [--pg ...]');
185
- console.log('Examples:');
186
- console.log(' npx tsx regenerate.ts netflix');
187
- console.log(' npx tsx regenerate.ts metro musicians');
188
- console.log(' npx tsx regenerate.ts all');
189
- process.exit(0);
190
- }
191
- for (const scenario of scenarios) {
192
- const type = scenarioType(scenario);
193
- if (type === 'json')
194
- await regenerateFromJSON(scenario);
195
- else if (type === 'manual')
196
- await recompileManual(scenario);
197
- else
198
- console.warn(` ⚠️ ${scenario}: unknown scenario type (no data/ nor raw-graph.json)`);
199
- }
200
- console.log('\n✅ Done\n');
201
- }
202
- main().catch(err => {
203
- console.error('❌', err);
204
- process.exit(1);
205
- });
206
- //# sourceMappingURL=regenerate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"regenerate.js","sourceRoot":"","sources":["../../src/scripts/regenerate.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- {
2
- "mode": "PATHFIND",
3
- "description": "Métro Parisien — 312 stations, 14 lignes, poids en minutes réels RATP",
4
- "defaultQuery": "chatelet-opera",
5
- "queriesFile": "./queries.ts"
6
- }