milens 0.4.0 → 0.4.2

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 (59) hide show
  1. package/LICENSE +75 -75
  2. package/README.md +479 -453
  3. package/dist/analyzer/config.d.ts +8 -0
  4. package/dist/analyzer/config.d.ts.map +1 -0
  5. package/dist/analyzer/config.js +132 -0
  6. package/dist/analyzer/config.js.map +1 -0
  7. package/dist/analyzer/engine.d.ts.map +1 -1
  8. package/dist/analyzer/engine.js +77 -4
  9. package/dist/analyzer/engine.js.map +1 -1
  10. package/dist/analyzer/enrich.d.ts +18 -0
  11. package/dist/analyzer/enrich.d.ts.map +1 -0
  12. package/dist/analyzer/enrich.js +139 -0
  13. package/dist/analyzer/enrich.js.map +1 -0
  14. package/dist/analyzer/resolver.d.ts +10 -1
  15. package/dist/analyzer/resolver.d.ts.map +1 -1
  16. package/dist/analyzer/resolver.js +309 -18
  17. package/dist/analyzer/resolver.js.map +1 -1
  18. package/dist/cli.js +478 -32
  19. package/dist/cli.js.map +1 -1
  20. package/dist/parser/extract.d.ts +2 -0
  21. package/dist/parser/extract.d.ts.map +1 -1
  22. package/dist/parser/extract.js +27 -3
  23. package/dist/parser/extract.js.map +1 -1
  24. package/dist/parser/lang-go.js +22 -22
  25. package/dist/parser/lang-go.js.map +1 -1
  26. package/dist/parser/lang-java.d.ts.map +1 -1
  27. package/dist/parser/lang-java.js +29 -25
  28. package/dist/parser/lang-java.js.map +1 -1
  29. package/dist/parser/lang-js.d.ts.map +1 -1
  30. package/dist/parser/lang-js.js +60 -43
  31. package/dist/parser/lang-js.js.map +1 -1
  32. package/dist/parser/lang-php.d.ts.map +1 -1
  33. package/dist/parser/lang-php.js +39 -33
  34. package/dist/parser/lang-php.js.map +1 -1
  35. package/dist/parser/lang-py.js +31 -31
  36. package/dist/parser/lang-ruby.d.ts +4 -0
  37. package/dist/parser/lang-ruby.d.ts.map +1 -0
  38. package/dist/parser/lang-ruby.js +50 -0
  39. package/dist/parser/lang-ruby.js.map +1 -0
  40. package/dist/parser/lang-rust.js +24 -24
  41. package/dist/parser/lang-ts.d.ts.map +1 -1
  42. package/dist/parser/lang-ts.js +73 -57
  43. package/dist/parser/lang-ts.js.map +1 -1
  44. package/dist/parser/languages.d.ts.map +1 -1
  45. package/dist/parser/languages.js +2 -1
  46. package/dist/parser/languages.js.map +1 -1
  47. package/dist/server/mcp.d.ts.map +1 -1
  48. package/dist/server/mcp.js +883 -95
  49. package/dist/server/mcp.js.map +1 -1
  50. package/dist/skills.js +100 -88
  51. package/dist/skills.js.map +1 -1
  52. package/dist/store/db.d.ts +62 -0
  53. package/dist/store/db.d.ts.map +1 -1
  54. package/dist/store/db.js +244 -59
  55. package/dist/store/db.js.map +1 -1
  56. package/dist/store/schema.sql +83 -60
  57. package/dist/types.d.ts +14 -0
  58. package/dist/types.d.ts.map +1 -1
  59. package/package.json +60 -60
package/dist/cli.js CHANGED
@@ -1,13 +1,17 @@
1
1
  #!/usr/bin/env node
2
2
  import { Command } from 'commander';
3
3
  import { resolve, join, dirname, basename } from 'node:path';
4
- import { mkdirSync, existsSync, readFileSync, rmSync } from 'node:fs';
4
+ import { mkdirSync, readFileSync, rmSync } from 'node:fs';
5
5
  import { createHash } from 'node:crypto';
6
+ import { fileURLToPath } from 'node:url';
7
+ import { loadAliases } from './analyzer/config.js';
6
8
  const program = new Command();
9
+ const __filename = fileURLToPath(import.meta.url);
10
+ const PKG_VERSION = JSON.parse(readFileSync(join(dirname(__filename), '..', 'package.json'), 'utf-8')).version;
7
11
  program
8
12
  .name('milens')
9
13
  .description('Code intelligence engine — analyze codebases, build knowledge graphs, serve via MCP')
10
- .version('0.3.1');
14
+ .version(PKG_VERSION);
11
15
  program
12
16
  .command('analyze')
13
17
  .description('Index a codebase: parse symbols, resolve dependencies, build search index')
@@ -232,40 +236,77 @@ program
232
236
  console.log(`Cleaned index for ${rootPath}`);
233
237
  }
234
238
  });
235
- program.parse();
236
- // ── Helpers ──
237
- function loadAliases(rootPath) {
238
- const aliases = {};
239
- const tsconfigPath = join(rootPath, 'tsconfig.json');
240
- if (existsSync(tsconfigPath)) {
241
- try {
242
- const raw = readFileSync(tsconfigPath, 'utf-8')
243
- .replace(/\/\/.*$/gm, '')
244
- .replace(/\/\*[\s\S]*?\*\//g, '');
245
- const cfg = JSON.parse(raw);
246
- const paths = cfg.compilerOptions?.paths ?? {};
247
- for (const [alias, targets] of Object.entries(paths)) {
248
- const clean = alias.replace('/*', '');
249
- const target = targets[0]?.replace('/*', '').replace('./', '') ?? '';
250
- if (clean && target)
251
- aliases[clean] = target;
239
+ program
240
+ .command('dashboard')
241
+ .description('Open usage analytics dashboard in your browser')
242
+ .option('--port <port>', 'Port for the dashboard server', '3200')
243
+ .action(async (opts) => {
244
+ const { join: joinPath } = await import('node:path');
245
+ const { homedir: getHomedir } = await import('node:os');
246
+ const { existsSync } = await import('node:fs');
247
+ const { createServer: createHttpServer } = await import('node:http');
248
+ const trackDbPath = joinPath(getHomedir(), '.milens', 'tracking.db');
249
+ if (!existsSync(trackDbPath)) {
250
+ console.log('No usage data yet. Use milens MCP tools first, then check back.');
251
+ return;
252
+ }
253
+ const { Database } = await import('./store/db.js');
254
+ const db = new Database(trackDbPath);
255
+ const stats = db.getToolUsageStats();
256
+ db.close();
257
+ if (stats.totalCalls === 0) {
258
+ console.log('No usage data yet. Use milens MCP tools first, then check back.');
259
+ return;
260
+ }
261
+ const html = generateDashboardHtml(stats);
262
+ const port = parseInt(opts.port);
263
+ const server = createHttpServer((req, res) => {
264
+ if (req.url === '/' || req.url === '/dashboard') {
265
+ res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
266
+ res.end(html);
267
+ }
268
+ else if (req.url === '/api/stats') {
269
+ // Live refresh endpoint — re-read DB
270
+ try {
271
+ const liveDb = new Database(trackDbPath);
272
+ const liveStats = liveDb.getToolUsageStats();
273
+ liveDb.close();
274
+ res.writeHead(200, { 'Content-Type': 'application/json' });
275
+ res.end(JSON.stringify(liveStats));
276
+ }
277
+ catch {
278
+ res.writeHead(500);
279
+ res.end('Error reading stats');
252
280
  }
253
281
  }
254
- catch { /* ignore */ }
255
- }
256
- // PSR-4 from composer.json
257
- const composerPath = join(rootPath, 'composer.json');
258
- if (existsSync(composerPath)) {
282
+ else {
283
+ res.writeHead(404);
284
+ res.end('Not found');
285
+ }
286
+ });
287
+ server.listen(port, '127.0.0.1', () => {
288
+ const url = `http://127.0.0.1:${port}`;
289
+ console.log(`\n📊 milens Dashboard → ${url}\n`);
290
+ console.log(` Total tool calls: ${stats.totalCalls}`);
291
+ console.log(` Tokens returned: ${stats.totalTokensOut.toLocaleString()}`);
292
+ console.log(` Tokens saved: ${stats.totalTokensSaved.toLocaleString()}`);
293
+ console.log(` Response time (avg): ${stats.totalCalls > 0 ? Math.round(stats.totalDurationMs / stats.totalCalls) : 0}ms`);
294
+ console.log(`\nPress Ctrl+C to stop.\n`);
295
+ // Try to open browser
259
296
  try {
260
- const composer = JSON.parse(readFileSync(composerPath, 'utf-8'));
261
- for (const [ns, dir] of Object.entries(composer.autoload?.['psr-4'] ?? {})) {
262
- aliases[ns] = dir.replace(/\/$/, '');
263
- }
297
+ const { execSync: exec } = require('node:child_process');
298
+ if (process.platform === 'win32')
299
+ exec(`start ${url}`, { stdio: 'ignore' });
300
+ else if (process.platform === 'darwin')
301
+ exec(`open ${url}`, { stdio: 'ignore' });
302
+ else
303
+ exec(`xdg-open ${url}`, { stdio: 'ignore' });
264
304
  }
265
- catch { /* ignore */ }
266
- }
267
- return aliases;
268
- }
305
+ catch { /* browser open is best-effort */ }
306
+ });
307
+ });
308
+ program.parse();
309
+ // ── Helpers ──
269
310
  function deleteIndex(dbPath) {
270
311
  const dir = dirname(dbPath);
271
312
  if (basename(dir) === '.milens') {
@@ -280,4 +321,409 @@ function deleteIndex(dbPath) {
280
321
  }
281
322
  }
282
323
  }
324
+ function generateDashboardHtml(stats) {
325
+ const byToolJson = JSON.stringify(stats.byTool);
326
+ const byDayJson = JSON.stringify(stats.byDay);
327
+ const recentJson = JSON.stringify(stats.recentCalls);
328
+ const savingsPercent = stats.totalTokensOut > 0
329
+ ? Math.round((stats.totalTokensSaved / (stats.totalTokensOut + stats.totalTokensSaved)) * 100)
330
+ : 0;
331
+ const fmtNum = (n) => n >= 1_000_000 ? (n / 1_000_000).toFixed(1) + 'M' : n >= 1_000 ? (n / 1_000).toFixed(1) + 'K' : String(n);
332
+ return `<!DOCTYPE html>
333
+ <html lang="en">
334
+ <head>
335
+ <meta charset="UTF-8">
336
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
337
+ <title>milens Dashboard</title>
338
+ <script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.7/dist/chart.umd.min.js"></script>
339
+ <style>
340
+ :root {
341
+ --bg: #0a0e14; --surface: #12171e; --card: #161d27; --card-hover: #1a2332;
342
+ --border: #1e2a3a; --border-light: #2a3a4e;
343
+ --text: #e2e8f0; --text-secondary: #94a3b8; --text-muted: #64748b;
344
+ --accent: #60a5fa; --accent-dim: #60a5fa22;
345
+ --green: #34d399; --green-dim: #34d39915;
346
+ --orange: #fbbf24; --orange-dim: #fbbf2415;
347
+ --purple: #a78bfa; --purple-dim: #a78bfa15;
348
+ --red: #f87171;
349
+ --radius: 16px; --radius-sm: 10px;
350
+ }
351
+ * { margin: 0; padding: 0; box-sizing: border-box; }
352
+ body {
353
+ background: var(--bg); color: var(--text);
354
+ font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
355
+ line-height: 1.5; min-height: 100vh;
356
+ }
357
+
358
+ /* ── Layout ── */
359
+ .wrapper { max-width: 1400px; margin: 0 auto; padding: 32px 24px 80px; }
360
+
361
+ /* ── Header ── */
362
+ .header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 32px; }
363
+ .header-left { display: flex; align-items: center; gap: 14px; }
364
+ .logo { width: 40px; height: 40px; border-radius: 12px; background: linear-gradient(135deg, var(--accent), var(--purple)); display: flex; align-items: center; justify-content: center; font-weight: 800; font-size: 18px; color: #fff; }
365
+ .header h1 { font-size: 22px; font-weight: 700; letter-spacing: -0.3px; }
366
+ .header h1 span { color: var(--text-muted); font-weight: 400; font-size: 14px; margin-left: 8px; }
367
+ .header-right { display: flex; align-items: center; gap: 12px; }
368
+ .status-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--green); animation: pulse 2s infinite; }
369
+ @keyframes pulse { 0%,80%,100% { opacity: 1; } 40% { opacity: 0.4; } }
370
+ .status-text { font-size: 12px; color: var(--text-muted); }
371
+ .refresh-btn {
372
+ background: var(--accent-dim); color: var(--accent); border: 1px solid var(--border);
373
+ border-radius: var(--radius-sm); padding: 8px 16px; cursor: pointer;
374
+ font-weight: 500; font-size: 13px; transition: all 0.2s;
375
+ }
376
+ .refresh-btn:hover { background: var(--accent); color: #0a0e14; }
377
+
378
+ /* ── KPI Cards ── */
379
+ .kpi-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; margin-bottom: 28px; }
380
+ .kpi {
381
+ background: var(--card); border: 1px solid var(--border); border-radius: var(--radius);
382
+ padding: 24px; position: relative; overflow: hidden; transition: border-color 0.2s;
383
+ }
384
+ .kpi:hover { border-color: var(--border-light); }
385
+ .kpi-icon { width: 40px; height: 40px; border-radius: 12px; display: flex; align-items: center; justify-content: center; font-size: 20px; margin-bottom: 16px; }
386
+ .kpi-icon.blue { background: var(--accent-dim); }
387
+ .kpi-icon.green { background: var(--green-dim); }
388
+ .kpi-icon.purple { background: var(--purple-dim); }
389
+ .kpi-icon.orange { background: var(--orange-dim); }
390
+ .kpi .value { font-size: 32px; font-weight: 800; letter-spacing: -1px; line-height: 1; }
391
+ .kpi .value.blue { color: var(--accent); }
392
+ .kpi .value.green { color: var(--green); }
393
+ .kpi .value.purple { color: var(--purple); }
394
+ .kpi .value.orange { color: var(--orange); }
395
+ .kpi .label { color: var(--text-muted); font-size: 13px; margin-top: 6px; font-weight: 500; }
396
+ .kpi .sub { color: var(--text-secondary); font-size: 12px; margin-top: 4px; }
397
+ .kpi-glow {
398
+ position: absolute; top: -40px; right: -40px; width: 120px; height: 120px;
399
+ border-radius: 50%; opacity: 0.06; pointer-events: none;
400
+ }
401
+ .kpi-glow.blue { background: var(--accent); }
402
+ .kpi-glow.green { background: var(--green); }
403
+ .kpi-glow.purple { background: var(--purple); }
404
+ .kpi-glow.orange { background: var(--orange); }
405
+
406
+ /* ── Charts ── */
407
+ .grid-2 { display: grid; grid-template-columns: 5fr 7fr; gap: 16px; margin-bottom: 16px; }
408
+ .grid-full { margin-bottom: 16px; }
409
+ .card {
410
+ background: var(--card); border: 1px solid var(--border); border-radius: var(--radius);
411
+ padding: 24px; transition: border-color 0.2s;
412
+ }
413
+ .card:hover { border-color: var(--border-light); }
414
+ .card-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 20px; }
415
+ .card-title { font-size: 14px; font-weight: 600; color: var(--text); }
416
+ .card-subtitle { font-size: 12px; color: var(--text-muted); }
417
+
418
+ /* ── Chart containers ── */
419
+ .chart-container { position: relative; width: 100%; }
420
+ .chart-container.h-280 { height: 280px; }
421
+ .chart-container.h-300 { height: 300px; }
422
+
423
+ /* ── Top Tools Bar ── */
424
+ .tool-bars { display: flex; flex-direction: column; gap: 10px; }
425
+ .tool-bar-row { display: flex; align-items: center; gap: 12px; }
426
+ .tool-bar-name { width: 140px; font-size: 12px; font-family: 'SF Mono', 'Fira Code', monospace; color: var(--text-secondary); text-align: right; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
427
+ .tool-bar-track { flex: 1; height: 28px; background: var(--surface); border-radius: 6px; overflow: hidden; position: relative; }
428
+ .tool-bar-fill { height: 100%; border-radius: 6px; display: flex; align-items: center; padding: 0 10px; font-size: 11px; font-weight: 600; color: #fff; min-width: fit-content; transition: width 0.6s ease; }
429
+ .tool-bar-count { font-size: 12px; color: var(--text-muted); min-width: 36px; text-align: right; }
430
+
431
+ /* ── Recent Table ── */
432
+ .table-wrapper { max-height: 400px; overflow-y: auto; border-radius: var(--radius-sm); }
433
+ .table-wrapper::-webkit-scrollbar { width: 6px; }
434
+ .table-wrapper::-webkit-scrollbar-track { background: transparent; }
435
+ .table-wrapper::-webkit-scrollbar-thumb { background: var(--border-light); border-radius: 3px; }
436
+ table { width: 100%; border-collapse: collapse; font-size: 13px; }
437
+ thead { position: sticky; top: 0; z-index: 1; }
438
+ th {
439
+ text-align: left; color: var(--text-muted); font-weight: 500; padding: 10px 16px;
440
+ background: var(--card); border-bottom: 1px solid var(--border); font-size: 11px;
441
+ text-transform: uppercase; letter-spacing: 0.5px;
442
+ }
443
+ td { padding: 10px 16px; border-bottom: 1px solid var(--border); }
444
+ tr:hover td { background: var(--surface); }
445
+ .tool-badge {
446
+ display: inline-flex; align-items: center; gap: 4px;
447
+ background: var(--accent-dim); color: var(--accent); padding: 3px 10px;
448
+ border-radius: 6px; font-family: 'SF Mono', 'Fira Code', monospace; font-size: 11px; font-weight: 500;
449
+ }
450
+ .when-text { color: var(--text-muted); }
451
+ .duration-text { color: var(--text-secondary); font-family: 'SF Mono', 'Fira Code', monospace; font-size: 12px; }
452
+ .saved-text { color: var(--green); font-weight: 600; font-family: 'SF Mono', 'Fira Code', monospace; font-size: 12px; }
453
+
454
+ /* ── Footer ── */
455
+ .footer { text-align: center; padding: 24px 0 0; color: var(--text-muted); font-size: 12px; }
456
+
457
+ /* ── Responsive ── */
458
+ @media (max-width: 1024px) { .kpi-grid { grid-template-columns: repeat(2, 1fr); } .grid-2 { grid-template-columns: 1fr; } }
459
+ @media (max-width: 640px) { .kpi-grid { grid-template-columns: 1fr; } .wrapper { padding: 16px 12px 80px; } }
460
+ </style>
461
+ </head>
462
+ <body>
463
+ <div class="wrapper">
464
+
465
+ <!-- Header -->
466
+ <div class="header">
467
+ <div class="header-left">
468
+ <div class="logo">m</div>
469
+ <h1>milens <span>dashboard</span></h1>
470
+ </div>
471
+ <div class="header-right">
472
+ <div class="status-dot"></div>
473
+ <span class="status-text">Live</span>
474
+ <button class="refresh-btn" onclick="refreshData()">&#8635; Refresh</button>
475
+ </div>
476
+ </div>
477
+
478
+ <!-- KPIs -->
479
+ <div class="kpi-grid">
480
+ <div class="kpi">
481
+ <div class="kpi-icon blue">&#9881;</div>
482
+ <div class="value blue" id="kpi-calls">${fmtNum(stats.totalCalls)}</div>
483
+ <div class="label">Tool Calls</div>
484
+ <div class="sub" id="kpi-calls-sub">${stats.totalCalls.toLocaleString()} total invocations</div>
485
+ <div class="kpi-glow blue"></div>
486
+ </div>
487
+ <div class="kpi">
488
+ <div class="kpi-icon green">&#9889;</div>
489
+ <div class="value green" id="kpi-saved">${fmtNum(stats.totalTokensSaved)}</div>
490
+ <div class="label">Tokens Saved</div>
491
+ <div class="sub" id="kpi-saved-sub">${stats.totalTokensSaved.toLocaleString()} tokens not wasted</div>
492
+ <div class="kpi-glow green"></div>
493
+ </div>
494
+ <div class="kpi">
495
+ <div class="kpi-icon purple">&#9733;</div>
496
+ <div class="value purple" id="kpi-pct">${savingsPercent}%</div>
497
+ <div class="label">Token Efficiency</div>
498
+ <div class="sub">${fmtNum(stats.totalTokensOut)} returned vs ${fmtNum(stats.totalTokensSaved)} saved</div>
499
+ <div class="kpi-glow purple"></div>
500
+ </div>
501
+ <div class="kpi">
502
+ <div class="kpi-icon orange">&#9201;</div>
503
+ <div class="value orange" id="kpi-avg">${stats.totalCalls > 0 ? Math.round(stats.totalDurationMs / stats.totalCalls) : 0}ms</div>
504
+ <div class="label">Avg Response Time</div>
505
+ <div class="sub">${(stats.totalDurationMs / 1000).toFixed(1)}s total processing</div>
506
+ <div class="kpi-glow orange"></div>
507
+ </div>
508
+ </div>
509
+
510
+ <!-- Charts Row -->
511
+ <div class="grid-2">
512
+ <div class="card">
513
+ <div class="card-header">
514
+ <div>
515
+ <div class="card-title">Top Tools</div>
516
+ <div class="card-subtitle">By number of calls</div>
517
+ </div>
518
+ </div>
519
+ <div id="toolBars" class="tool-bars"></div>
520
+ </div>
521
+ <div class="card">
522
+ <div class="card-header">
523
+ <div>
524
+ <div class="card-title">Daily Activity</div>
525
+ <div class="card-subtitle">Calls &amp; tokens saved over the last 30 days</div>
526
+ </div>
527
+ </div>
528
+ <div class="chart-container h-280"><canvas id="dayChart"></canvas></div>
529
+ </div>
530
+ </div>
531
+
532
+ <!-- Savings Distribution -->
533
+ <div class="grid-2" style="grid-template-columns: 7fr 5fr;">
534
+ <div class="card">
535
+ <div class="card-header">
536
+ <div>
537
+ <div class="card-title">Recent Tool Calls</div>
538
+ <div class="card-subtitle">Last 50 invocations</div>
539
+ </div>
540
+ </div>
541
+ <div class="table-wrapper">
542
+ <table>
543
+ <thead><tr><th>Tool</th><th>When</th><th>Duration</th><th style="text-align:right">Tokens Saved</th></tr></thead>
544
+ <tbody id="recentBody"></tbody>
545
+ </table>
546
+ </div>
547
+ </div>
548
+ <div class="card">
549
+ <div class="card-header">
550
+ <div>
551
+ <div class="card-title">Savings by Tool</div>
552
+ <div class="card-subtitle">Token savings distribution</div>
553
+ </div>
554
+ </div>
555
+ <div class="chart-container h-300"><canvas id="savingsChart"></canvas></div>
556
+ </div>
557
+ </div>
558
+
559
+ <div class="footer">milens &middot; auto-refreshes every 30s</div>
560
+ </div>
561
+
562
+ <script>
563
+ const COLORS = ['#60a5fa','#34d399','#fbbf24','#a78bfa','#f87171','#2dd4bf','#818cf8','#fb923c','#e879f9','#38bdf8','#4ade80','#facc15','#f472b6','#22d3ee','#a3e635','#c084fc'];
564
+ const BAR_COLORS = ['#60a5fa','#34d399','#fbbf24','#a78bfa','#f87171','#2dd4bf','#818cf8','#fb923c','#e879f9','#38bdf8'];
565
+ let byTool = ${byToolJson};
566
+ let byDay = ${byDayJson};
567
+
568
+ function fmtK(n) { return n >= 1e6 ? (n/1e6).toFixed(1)+'M' : n >= 1e3 ? (n/1e3).toFixed(1)+'K' : n; }
569
+
570
+ /* ── Top Tools Horizontal Bars ── */
571
+ function renderToolBars() {
572
+ const el = document.getElementById('toolBars');
573
+ const sorted = [...byTool].sort((a,b) => b.calls - a.calls).slice(0, 10);
574
+ const maxCalls = sorted[0]?.calls || 1;
575
+ el.innerHTML = sorted.map((t, i) => {
576
+ const pct = Math.max(8, (t.calls / maxCalls) * 100);
577
+ const col = BAR_COLORS[i % BAR_COLORS.length];
578
+ return \`<div class="tool-bar-row">
579
+ <span class="tool-bar-name">\${t.tool}</span>
580
+ <div class="tool-bar-track">
581
+ <div class="tool-bar-fill" style="width:\${pct}%;background:linear-gradient(90deg,\${col}dd,\${col}88)">\${t.calls}</div>
582
+ </div>
583
+ <span class="tool-bar-count">\${fmtK(t.tokensSaved)}</span>
584
+ </div>\`;
585
+ }).join('');
586
+ }
587
+
588
+ /* ── Daily Activity Chart ── */
589
+ let dayChartInstance = null;
590
+ function renderDayChart() {
591
+ if (dayChartInstance) dayChartInstance.destroy();
592
+ const ctx = document.getElementById('dayChart');
593
+ const labels = byDay.map(d => {
594
+ const parts = d.date.split('-');
595
+ return parts[1] + '/' + parts[2];
596
+ });
597
+ dayChartInstance = new Chart(ctx, {
598
+ type: 'bar',
599
+ data: {
600
+ labels,
601
+ datasets: [
602
+ {
603
+ label: 'Calls', data: byDay.map(d => d.calls),
604
+ backgroundColor: '#60a5fa44', hoverBackgroundColor: '#60a5fa88',
605
+ borderRadius: 4, borderSkipped: false, yAxisID: 'y', barPercentage: 0.7,
606
+ },
607
+ {
608
+ label: 'Tokens Saved', data: byDay.map(d => d.tokensSaved),
609
+ type: 'line', borderColor: '#34d399', pointBackgroundColor: '#34d399',
610
+ pointRadius: 2, pointHoverRadius: 5, borderWidth: 2.5,
611
+ yAxisID: 'y1', tension: 0.4, fill: { target: 'origin', above: '#34d39910' },
612
+ },
613
+ ],
614
+ },
615
+ options: {
616
+ responsive: true, maintainAspectRatio: false,
617
+ interaction: { mode: 'index', intersect: false },
618
+ scales: {
619
+ x: {
620
+ ticks: { color: '#64748b', font: { size: 11 }, maxRotation: 0, autoSkip: true, maxTicksLimit: 15 },
621
+ grid: { display: false },
622
+ },
623
+ y: {
624
+ position: 'left', ticks: { color: '#60a5fa', font: { size: 11 } },
625
+ grid: { color: '#1e2a3a' }, title: { display: true, text: 'Calls', color: '#60a5fa', font: { size: 11 } },
626
+ },
627
+ y1: {
628
+ position: 'right', ticks: { color: '#34d399', font: { size: 11 }, callback: v => fmtK(v) },
629
+ grid: { drawOnChartArea: false }, title: { display: true, text: 'Tokens Saved', color: '#34d399', font: { size: 11 } },
630
+ },
631
+ },
632
+ plugins: {
633
+ legend: { labels: { color: '#94a3b8', boxWidth: 12, usePointStyle: true, padding: 16 } },
634
+ tooltip: {
635
+ backgroundColor: '#1e293b', borderColor: '#334155', borderWidth: 1, titleColor: '#e2e8f0',
636
+ bodyColor: '#94a3b8', cornerRadius: 8, padding: 12,
637
+ callbacks: { label: ctx => ctx.dataset.label + ': ' + (ctx.datasetIndex === 1 ? fmtK(ctx.raw) : ctx.raw) },
638
+ },
639
+ },
640
+ },
641
+ });
642
+ }
643
+
644
+ /* ── Savings Doughnut ── */
645
+ function renderSavingsChart() {
646
+ const ctx = document.getElementById('savingsChart');
647
+ const sorted = [...byTool].sort((a,b) => b.tokensSaved - a.tokensSaved);
648
+ const top = sorted.slice(0, 8);
649
+ const rest = sorted.slice(8);
650
+ if (rest.length) top.push({ tool: 'others', tokensSaved: rest.reduce((s,t) => s + t.tokensSaved, 0), calls: 0 });
651
+ new Chart(ctx, {
652
+ type: 'doughnut',
653
+ data: {
654
+ labels: top.map(t => t.tool),
655
+ datasets: [{
656
+ data: top.map(t => t.tokensSaved),
657
+ backgroundColor: top.map((_, i) => COLORS[i]),
658
+ borderWidth: 0, hoverOffset: 6,
659
+ }],
660
+ },
661
+ options: {
662
+ responsive: true, cutout: '68%',
663
+ plugins: {
664
+ legend: { position: 'right', labels: { color: '#94a3b8', font: { size: 12 }, padding: 8, usePointStyle: true, pointStyleWidth: 10 } },
665
+ tooltip: {
666
+ backgroundColor: '#1e293b', borderColor: '#334155', borderWidth: 1, titleColor: '#e2e8f0',
667
+ bodyColor: '#94a3b8', cornerRadius: 8, padding: 12,
668
+ callbacks: { label: ctx => ' ' + ctx.label + ': ' + fmtK(ctx.raw) + ' tokens' },
669
+ },
670
+ },
671
+ },
672
+ });
673
+ }
674
+
675
+ /* ── Recent Calls Table ── */
676
+ function renderRecent(data) {
677
+ const tbody = document.getElementById('recentBody');
678
+ tbody.innerHTML = data.map(r => {
679
+ const ago = timeAgo(r.calledAt);
680
+ return \`<tr>
681
+ <td><span class="tool-badge">\${r.tool}</span></td>
682
+ <td class="when-text">\${ago}</td>
683
+ <td class="duration-text">\${r.durationMs}ms</td>
684
+ <td class="saved-text" style="text-align:right">+\${r.tokensSaved.toLocaleString()}</td>
685
+ </tr>\`;
686
+ }).join('');
687
+ }
688
+
689
+ function timeAgo(iso) {
690
+ const d = new Date(iso.includes('T') ? iso : iso + 'Z');
691
+ const s = Math.floor((Date.now() - d.getTime()) / 1000);
692
+ if (s < 0) return 'just now';
693
+ if (s < 60) return s + 's ago';
694
+ if (s < 3600) return Math.floor(s/60) + 'm ago';
695
+ if (s < 86400) return Math.floor(s/3600) + 'h ago';
696
+ return Math.floor(s/86400) + 'd ago';
697
+ }
698
+
699
+ /* ── Refresh ── */
700
+ async function refreshData() {
701
+ const btn = document.querySelector('.refresh-btn');
702
+ btn.textContent = '⟳ Loading...';
703
+ try {
704
+ const res = await fetch('/api/stats');
705
+ const data = await res.json();
706
+ byTool = data.byTool; byDay = data.byDay;
707
+ document.getElementById('kpi-calls').textContent = fmtK(data.totalCalls);
708
+ document.getElementById('kpi-calls-sub').textContent = data.totalCalls.toLocaleString() + ' total invocations';
709
+ document.getElementById('kpi-saved').textContent = fmtK(data.totalTokensSaved);
710
+ document.getElementById('kpi-saved-sub').textContent = data.totalTokensSaved.toLocaleString() + ' tokens not wasted';
711
+ const pct = data.totalTokensOut > 0 ? Math.round((data.totalTokensSaved / (data.totalTokensOut + data.totalTokensSaved)) * 100) : 0;
712
+ document.getElementById('kpi-pct').textContent = pct + '%';
713
+ document.getElementById('kpi-avg').textContent = (data.totalCalls > 0 ? Math.round(data.totalDurationMs / data.totalCalls) : 0) + 'ms';
714
+ renderToolBars(); renderDayChart(); renderRecent(data.recentCalls);
715
+ } catch(e) { console.error('Refresh failed', e); }
716
+ btn.innerHTML = '&#8635; Refresh';
717
+ }
718
+
719
+ /* ── Init ── */
720
+ renderToolBars();
721
+ renderDayChart();
722
+ renderSavingsChart();
723
+ renderRecent(${recentJson});
724
+ setInterval(refreshData, 30000);
725
+ </script>
726
+ </body>
727
+ </html>`;
728
+ }
283
729
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,WAAW,GAAW,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;AAEvH,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,qFAAqF,CAAC;KAClG,OAAO,CAAC,WAAW,CAAC,CAAC;AAExB,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,2EAA2E,CAAC;KACxF,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,EAAE,GAAG,CAAC;KACxD,MAAM,CAAC,oBAAoB,EAAE,+BAA+B,CAAC;KAC7D,MAAM,CAAC,eAAe,EAAE,wBAAwB,CAAC;KACjD,MAAM,CAAC,aAAa,EAAE,qBAAqB,CAAC;KAC5C,MAAM,CAAC,cAAc,EAAE,gDAAgD,CAAC;KACxE,MAAM,CAAC,kBAAkB,EAAE,8CAA8C,CAAC;KAC1E,MAAM,CAAC,iBAAiB,EAAE,sCAAsC,CAAC;KACjE,MAAM,CAAC,iBAAiB,EAAE,2CAA2C,CAAC;KACtE,MAAM,CAAC,iBAAiB,EAAE,yCAAyC,CAAC;KACpE,MAAM,CAAC,mBAAmB,EAAE,mCAAmC,CAAC;KAChE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACxD,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAEzC,8CAA8C;IAC9C,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IAEtC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;IACzD,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC;QAC1B,QAAQ;QACR,MAAM;QACN,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,OAAO;KACR,CAAC,CAAC;IAEH,8BAA8B;IAC9B,MAAM,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAClG,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAC7D,IAAI,YAAY,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAE3D,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,WAAW,aAAa,KAAK,CAAC,SAAS,iBAAiB,KAAK,CAAC,WAAW,WAAW,KAAK,CAAC,UAAU,KAAK,CAAC,CAAC;IAE5I,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5H,MAAM,OAAO,GAAyB,IAAI,CAAC,MAAM;YAC/C,CAAC,CAAC,SAAS,CAAE,cAAc;YAC3B,CAAC,CAAC;gBACE,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1C,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;aAC7C,CAAC;QACN,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QACnD,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;QACvD,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;QAChC,MAAM,MAAM,GAAG,cAAc,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QACrD,EAAE,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,KAAK,oBAAoB,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC;QAC5G,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI;YAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACrD,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,wBAAwB,CAAC;KACrC,MAAM,CAAC,iBAAiB,EAAE,aAAa,EAAE,IAAI,CAAC;KAC9C,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,EAAE,GAAG,CAAC;KACxD,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;IAC5B,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IACnD,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACjE,IAAI,CAAC,MAAM,EAAE,CAAC;QAAC,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;IAC5F,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9D,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACtG,CAAC;IACD,EAAE,CAAC,KAAK,EAAE,CAAC;AACb,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,kBAAkB,CAAC;KAC3B,WAAW,CAAC,8CAA8C,CAAC;KAC3D,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,EAAE,GAAG,CAAC;KACxD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;IAC7B,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IACnD,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACjE,IAAI,CAAC,MAAM,EAAE,CAAC;QAAC,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;IAC5F,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,OAAO,GAAG,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC5C,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;QAC5E,MAAM,QAAQ,GAAG,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC7C,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAC3B,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACzB,MAAM,IAAI,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBACzC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,EAAE,QAAQ,IAAI,GAAG,GAAG,CAAC,CAAC;YACrF,CAAC;QACH,CAAC;QACD,MAAM,QAAQ,GAAG,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC7C,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAC3B,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACzB,MAAM,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACrC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,EAAE,EAAE,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,EAAE,EAAE,QAAQ,IAAI,GAAG,GAAG,CAAC,CAAC;YAC/E,CAAC;QACH,CAAC;IACH,CAAC;IACD,EAAE,CAAC,KAAK,EAAE,CAAC;AACb,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,iBAAiB,CAAC;KAC1B,WAAW,CAAC,mDAAmD,CAAC;KAChE,MAAM,CAAC,uBAAuB,EAAE,wBAAwB,EAAE,UAAU,CAAC;KACrE,MAAM,CAAC,aAAa,EAAE,qBAAqB,EAAE,GAAG,CAAC;KACjD,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,EAAE,GAAG,CAAC;KACxD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;IAC7B,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IACnD,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACjE,IAAI,CAAC,MAAM,EAAE,CAAC;QAAC,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;IAC5F,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,OAAO,GAAG,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;QACpF,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,KAAK,UAAU;YACxC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC;YAChC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACrC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,SAAS,gBAAgB,CAAC,CAAC;QACtD,CAAC;QACD,KAAK,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,IAAI,EAAE,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,SAAS,KAAK,GAAG,GAAG,CAAC,CAAC;QACpG,CAAC;IACH,CAAC;IACD,EAAE,CAAC,KAAK,EAAE,CAAC;AACb,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,kBAAkB,CAAC;KAC/B,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,EAAE,GAAG,CAAC;KACxD,MAAM,CAAC,QAAQ,EAAE,qCAAqC,CAAC;KACvD,MAAM,CAAC,eAAe,EAAE,WAAW,EAAE,MAAM,CAAC;KAC5C,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACtD,MAAM,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3D,CAAC;SAAM,CAAC;QACN,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACvD,MAAM,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACvC,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,mBAAmB,CAAC;KAChC,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,EAAE,GAAG,CAAC;KACxD,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IACnD,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAC7D,MAAM,GAAG,GAAG,IAAI,YAAY,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACjD,IAAI,CAAC,KAAK,EAAE,CAAC;QAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAAC,OAAO;IAAC,CAAC;IACpD,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1C,EAAE,CAAC,KAAK,EAAE,CAAC;AACb,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,+BAA+B,CAAC;KAC5C,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAC7D,MAAM,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC,OAAO,EAAE,CAAC;IAC7C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;QACxC,OAAO;IACT,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,0BAA0B,CAAC,CAAC;IACzD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,+BAA+B,CAAC;KAC5C,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,EAAE,GAAG,CAAC;KACxD,MAAM,CAAC,OAAO,EAAE,oBAAoB,CAAC;KACrC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAC7D,MAAM,GAAG,GAAG,IAAI,YAAY,EAAE,CAAC;IAC/B,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;QAC9B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACtB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,WAAW,OAAO,CAAC,MAAM,gBAAgB,CAAC,CAAC;IACzD,CAAC;SAAM,CAAC;QACN,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAC5B,OAAO;QACT,CAAC;QACD,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC1B,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,gDAAgD,CAAC;KAC7D,MAAM,CAAC,eAAe,EAAE,+BAA+B,EAAE,MAAM,CAAC;KAChE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;IACrD,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;IACxD,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;IAC/C,MAAM,EAAE,YAAY,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;IAErE,MAAM,WAAW,GAAG,QAAQ,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;IACrE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;QAC/E,OAAO;IACT,CAAC;IAED,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IACnD,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,EAAE,CAAC,iBAAiB,EAAE,CAAC;IACrC,EAAE,CAAC,KAAK,EAAE,CAAC;IAEX,IAAI,KAAK,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;QAC/E,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEjC,MAAM,MAAM,GAAG,gBAAgB,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC3C,IAAI,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,GAAG,CAAC,GAAG,KAAK,YAAY,EAAE,CAAC;YAChD,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,0BAA0B,EAAE,CAAC,CAAC;YACnE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC;aAAM,IAAI,GAAG,CAAC,GAAG,KAAK,YAAY,EAAE,CAAC;YACpC,qCAAqC;YACrC,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC;gBACzC,MAAM,SAAS,GAAG,MAAM,CAAC,iBAAiB,EAAE,CAAC;gBAC7C,MAAM,CAAC,KAAK,EAAE,CAAC;gBACf,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;gBAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;YACrC,CAAC;YAAC,MAAM,CAAC;gBACP,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACnB,GAAG,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACnB,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE;QACpC,MAAM,GAAG,GAAG,oBAAoB,IAAI,EAAE,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,2BAA2B,GAAG,IAAI,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,0BAA0B,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,0BAA0B,KAAK,CAAC,cAAc,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QAC/E,OAAO,CAAC,GAAG,CAAC,0BAA0B,KAAK,CAAC,gBAAgB,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QACjF,OAAO,CAAC,GAAG,CAAC,0BAA0B,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC3H,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QAEzC,sBAAsB;QACtB,IAAI,CAAC;YACH,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;YACzD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;gBAAE,IAAI,CAAC,SAAS,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;iBACvE,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ;gBAAE,IAAI,CAAC,QAAQ,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;;gBAC5E,IAAI,CAAC,YAAY,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACpD,CAAC;QAAC,MAAM,CAAC,CAAC,iCAAiC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC;AAEhB,gBAAgB;AAEhB,SAAS,WAAW,CAAC,MAAc;IACjC,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5B,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;QAChC,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;SAAM,CAAC;QACN,KAAK,MAAM,MAAM,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;YAC1C,IAAI,CAAC;gBAAC,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAwE;IACrG,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAErD,MAAM,cAAc,GAAG,KAAK,CAAC,cAAc,GAAG,CAAC;QAC7C,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,gBAAgB,GAAG,CAAC,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC,GAAG,GAAG,CAAC;QAC9F,CAAC,CAAC,CAAC,CAAC;IAEN,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAExI,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+CAsJsC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;;4CAE3B,KAAK,CAAC,UAAU,CAAC,cAAc,EAAE;;;;;gDAK7B,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC;;4CAElC,KAAK,CAAC,gBAAgB,CAAC,cAAc,EAAE;;;;;+CAKpC,cAAc;;yBAEpC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,gBAAgB,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC;;;;;+CAKpD,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;;yBAErG,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eA4DnD,UAAU;cACX,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eA6JR,UAAU;;;;QAIjB,CAAC;AACT,CAAC"}
@@ -12,9 +12,11 @@ export interface LangSpec {
12
12
  enums?: string;
13
13
  structs?: string;
14
14
  traits?: string;
15
+ modules?: string;
15
16
  imports?: string;
16
17
  calls?: string;
17
18
  exports?: string;
19
+ reExports?: string;
18
20
  heritage?: string;
19
21
  };
20
22
  resolveImport(raw: string, fromFile: string, root: string, aliases: Record<string, string>): string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../src/parser/extract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAC;AAC1C,OAAO,KAAK,EAA+C,gBAAgB,EAAc,MAAM,aAAa,CAAC;AAI7G,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE;QACP,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC;CAC5G;AAqBD,wBAAgB,eAAe,IAAI,IAAI,CAEtC;AAqHD,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,CAAC,IAAI,EACjB,IAAI,EAAE,MAAM,CAAC,QAAQ,EACrB,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,MAAM,GACf,gBAAgB,CA2IlB"}
1
+ {"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../src/parser/extract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAC;AAC1C,OAAO,KAAK,EAA4D,gBAAgB,EAAc,MAAM,aAAa,CAAC;AAI1H,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE;QACP,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC;CAC5G;AAqBD,wBAAgB,eAAe,IAAI,IAAI,CAEtC;AAsHD,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,CAAC,IAAI,EACjB,IAAI,EAAE,MAAM,CAAC,QAAQ,EACrB,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,MAAM,GACf,gBAAgB,CAqKlB"}