@donartcha/openlag 0.1.1 → 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/dist/assets/{arc-BJpiUvSh.js → arc-CQVyn5E3.js} +1 -1
  2. package/dist/assets/{architectureDiagram-3BPJPVTR-Dc7Q7uiQ.js → architectureDiagram-3BPJPVTR-BK7dvXUP.js} +1 -1
  3. package/dist/assets/{blockDiagram-GPEHLZMM-dYx8zJHa.js → blockDiagram-GPEHLZMM-CZACUlID.js} +1 -1
  4. package/dist/assets/{c4Diagram-AAUBKEIU-DEW1mepT.js → c4Diagram-AAUBKEIU-BaIdnoVu.js} +1 -1
  5. package/dist/assets/channel-cdJUve2-.js +1 -0
  6. package/dist/assets/{chunk-2J33WTMH-DI5V_htM.js → chunk-2J33WTMH-I6mjZe22.js} +1 -1
  7. package/dist/assets/{chunk-4BX2VUAB-Dpc1Oo7a.js → chunk-4BX2VUAB-Bni2aQg6.js} +1 -1
  8. package/dist/assets/{chunk-55IACEB6-BVCvy2y7.js → chunk-55IACEB6-BVvD3auX.js} +1 -1
  9. package/dist/assets/{chunk-727SXJPM-CiQJMcWK.js → chunk-727SXJPM-BvRYlYfC.js} +1 -1
  10. package/dist/assets/{chunk-AQP2D5EJ-CfIJf1-T.js → chunk-AQP2D5EJ-DODUUYy0.js} +1 -1
  11. package/dist/assets/{chunk-FMBD7UC4-CSSwZdAo.js → chunk-FMBD7UC4-CSnOrzk-.js} +1 -1
  12. package/dist/assets/{chunk-ND2GUHAM-CpsO12XK.js → chunk-ND2GUHAM-Cwj-8YlS.js} +1 -1
  13. package/dist/assets/{chunk-QZHKN3VN-CWuoRpFf.js → chunk-QZHKN3VN-DvvnV7FS.js} +1 -1
  14. package/dist/assets/classDiagram-4FO5ZUOK-cojzztnL.js +1 -0
  15. package/dist/assets/classDiagram-v2-Q7XG4LA2-cojzztnL.js +1 -0
  16. package/dist/assets/{cose-bilkent-S5V4N54A-COfB4T0K.js → cose-bilkent-S5V4N54A-CpzWWErA.js} +1 -1
  17. package/dist/assets/{dagre-BM42HDAG-C1H0EKAG.js → dagre-BM42HDAG-BoDP4qSL.js} +1 -1
  18. package/dist/assets/{diagram-2AECGRRQ-D6sEKSEZ.js → diagram-2AECGRRQ-DHIQUqF0.js} +1 -1
  19. package/dist/assets/{diagram-5GNKFQAL-Brd_bOCT.js → diagram-5GNKFQAL-xlx_pjV_.js} +1 -1
  20. package/dist/assets/{diagram-KO2AKTUF-Dt0MCanV.js → diagram-KO2AKTUF-B8MO1HgW.js} +1 -1
  21. package/dist/assets/{diagram-LMA3HP47-DQrGF35P.js → diagram-LMA3HP47-CRSJknuZ.js} +1 -1
  22. package/dist/assets/{diagram-OG6HWLK6-Dm7seF-q.js → diagram-OG6HWLK6-CeTvy4fY.js} +1 -1
  23. package/dist/assets/{erDiagram-TEJ5UH35-U6Gl6mUU.js → erDiagram-TEJ5UH35-DFtC0ScP.js} +1 -1
  24. package/dist/assets/{flowDiagram-I6XJVG4X-C7K7oK1X.js → flowDiagram-I6XJVG4X-DMRa3J_m.js} +1 -1
  25. package/dist/assets/{ganttDiagram-6RSMTGT7-CNvz6W3E.js → ganttDiagram-6RSMTGT7-Bxuykf6p.js} +1 -1
  26. package/dist/assets/{gitGraphDiagram-PVQCEYII-CyhbUvLq.js → gitGraphDiagram-PVQCEYII-CXTm84QI.js} +1 -1
  27. package/dist/assets/index-D02phRy3.css +1 -0
  28. package/dist/assets/index-Dvw-BZIp.js +734 -0
  29. package/dist/assets/{infoDiagram-5YYISTIA-DyHSE0hy.js → infoDiagram-5YYISTIA-D2tvLdtC.js} +1 -1
  30. package/dist/assets/{ishikawaDiagram-YF4QCWOH-fjlmrHx3.js → ishikawaDiagram-YF4QCWOH-D0jVP7EP.js} +1 -1
  31. package/dist/assets/{journeyDiagram-JHISSGLW-DOoASPaf.js → journeyDiagram-JHISSGLW-Ca5D6tBE.js} +1 -1
  32. package/dist/assets/{kanban-definition-UN3LZRKU-BEiKB1N_.js → kanban-definition-UN3LZRKU-BQ6UUXz2.js} +1 -1
  33. package/dist/assets/{linear-CPWtktbJ.js → linear-ARjH3_jK.js} +1 -1
  34. package/dist/assets/{mindmap-definition-RKZ34NQL-DliBjc9v.js → mindmap-definition-RKZ34NQL-CRRCJeZm.js} +1 -1
  35. package/dist/assets/{pieDiagram-4H26LBE5-CDu9kWU3.js → pieDiagram-4H26LBE5-BwtLTkTI.js} +1 -1
  36. package/dist/assets/{quadrantDiagram-W4KKPZXB-CEp1tT5r.js → quadrantDiagram-W4KKPZXB-BZ6VcAAZ.js} +1 -1
  37. package/dist/assets/{requirementDiagram-4Y6WPE33-BD2uboSV.js → requirementDiagram-4Y6WPE33-CmuAE86r.js} +1 -1
  38. package/dist/assets/{sankeyDiagram-5OEKKPKP-ZNgAHRIH.js → sankeyDiagram-5OEKKPKP-DRMutNq4.js} +1 -1
  39. package/dist/assets/{sequenceDiagram-3UESZ5HK-BrBpCFjG.js → sequenceDiagram-3UESZ5HK-DXssdhHI.js} +1 -1
  40. package/dist/assets/{stateDiagram-AJRCARHV-CDZcNxGe.js → stateDiagram-AJRCARHV-jyjJA7Vx.js} +1 -1
  41. package/dist/assets/stateDiagram-v2-BHNVJYJU-CmxCW1S9.js +1 -0
  42. package/dist/assets/{timeline-definition-PNZ67QCA-BszoRXfI.js → timeline-definition-PNZ67QCA-CMZ7Ow2L.js} +1 -1
  43. package/dist/assets/{vennDiagram-CIIHVFJN-CqnUhalx.js → vennDiagram-CIIHVFJN-GcmWlOLV.js} +1 -1
  44. package/dist/assets/{wardley-L42UT6IY-Cw8Z6Ke3.js → wardley-L42UT6IY-DbIT5rBc.js} +1 -1
  45. package/dist/assets/{wardleyDiagram-YWT4CUSO-TUrrIhGl.js → wardleyDiagram-YWT4CUSO-gYWXw-3o.js} +1 -1
  46. package/dist/assets/{xychartDiagram-2RQKCTM6-DWvpHqB8.js → xychartDiagram-2RQKCTM6-BVhFPdW8.js} +1 -1
  47. package/dist/cli/openlag.js +37 -4
  48. package/dist/index.html +3 -3
  49. package/index.html +1 -1
  50. package/package.json +2 -2
  51. package/scripts/cli/generate.ts +14 -2
  52. package/scripts/cli/init.ts +27 -4
  53. package/scripts/cli/openlag.ts +3 -1
  54. package/src/App.tsx +3 -2
  55. package/src/components/DocumentationView.tsx +92 -440
  56. package/src/components/GraphView.tsx +26 -3
  57. package/src/store.ts +6 -2
  58. package/dist/assets/channel-CfEECmqT.js +0 -1
  59. package/dist/assets/classDiagram-4FO5ZUOK-CqWhRzlO.js +0 -1
  60. package/dist/assets/classDiagram-v2-Q7XG4LA2-CqWhRzlO.js +0 -1
  61. package/dist/assets/index-By2WPc1i.js +0 -729
  62. package/dist/assets/index-CBSt31g-.css +0 -1
  63. package/dist/assets/stateDiagram-v2-BHNVJYJU-MAgBD3Ln.js +0 -1
package/dist/index.html CHANGED
@@ -4,11 +4,11 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>My OpenLAG Project | OpenLAG</title>
7
- <script type="module" crossorigin src="/assets/index-By2WPc1i.js"></script>
8
- <link rel="stylesheet" crossorigin href="/assets/index-CBSt31g-.css">
7
+ <meta name="description" content="Living Architecture documentation for my system." />
8
+ <script type="module" crossorigin src="/assets/index-Dvw-BZIp.js"></script>
9
+ <link rel="stylesheet" crossorigin href="/assets/index-D02phRy3.css">
9
10
  </head>
10
11
  <body>
11
12
  <div id="root"></div>
12
13
  </body>
13
14
  </html>
14
-
package/index.html CHANGED
@@ -4,10 +4,10 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>My OpenLAG Project | OpenLAG</title>
7
+ <meta name="description" content="Living Architecture documentation for my system." />
7
8
  </head>
8
9
  <body>
9
10
  <div id="root"></div>
10
11
  <script type="module" src="/src/main.tsx"></script>
11
12
  </body>
12
13
  </html>
13
-
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@donartcha/openlag",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "Architecture as Code traceability graph generator",
5
5
  "type": "module",
6
6
  "license": "MPL-2.0",
7
7
  "bin": {
8
- "openlag": "./bin/openlag.js"
8
+ "openlag": "bin/openlag.js"
9
9
  },
10
10
  "files": [
11
11
  "bin",
@@ -10,6 +10,7 @@ interface StaticState {
10
10
  systemVersions: SystemVersion[];
11
11
  graphs: Record<string, GraphSnapshot>;
12
12
  changes: Change[];
13
+ metadata?: { name: string; description: string; [key: string]: any };
13
14
  }
14
15
 
15
16
  function isDescendant(currentVersionId: string, artifactVersionId: string, versions: Version[]): boolean {
@@ -32,11 +33,22 @@ export function generateData(docsDir: string, outputDir: string, silent = false)
32
33
 
33
34
  const parsedData = parseOpenLagDocs(docsDir);
34
35
 
36
+ let metadata = { name: "OpenLAG Project", description: "Architecture documentation." };
37
+ const metadataPath = path.join(docsDir, '..', 'metadata.json');
38
+ if (fs.existsSync(metadataPath)) {
39
+ try {
40
+ metadata = JSON.parse(fs.readFileSync(metadataPath, 'utf-8'));
41
+ } catch {
42
+ if (!silent) console.warn(chalk.yellow("⚠️ Could not parse metadata.json"));
43
+ }
44
+ }
45
+
35
46
  const state: StaticState = {
36
47
  versions: parsedData.versions,
37
48
  systemVersions: parsedData.systemVersions,
38
49
  graphs: {},
39
- changes: parsedData.changes
50
+ changes: parsedData.changes,
51
+ metadata
40
52
  };
41
53
 
42
54
  const allArtifacts = parsedData.artifacts;
@@ -74,7 +86,7 @@ export function watchData(docsDir: string, outputDir: string) {
74
86
  try {
75
87
  generateData(docsDir, outputDir, true);
76
88
  console.log(chalk.dim(`[${new Date().toLocaleTimeString()}] `) + chalk.green("Regenerated graph-data.json"));
77
- } catch (e) {
89
+ } catch (e) {
78
90
  console.error(chalk.red("❌ Error during regeneration:"), e);
79
91
  }
80
92
  };
@@ -11,11 +11,18 @@ export async function initProject(projectName?: string, projectDesc?: string, in
11
11
  const name = projectName || process.env.PROJECT_NAME || 'My OpenLAG Project';
12
12
  const desc = projectDesc || process.env.PROJECT_DESCRIPTION || 'Living Architecture documentation for my system.';
13
13
 
14
- const ROOT_DIR = process.cwd();
14
+ let ROOT_DIR = process.cwd();
15
+ if (projectName) {
16
+ ROOT_DIR = path.join(process.cwd(), projectName);
17
+ if (!fs.existsSync(ROOT_DIR)) {
18
+ fs.mkdirSync(ROOT_DIR, { recursive: true });
19
+ console.log(chalk.green(`✅ Created project directory: ${projectName}`));
20
+ }
21
+ }
15
22
 
16
23
  console.log(chalk.blue(`🛠️ Initializing OpenLAG for: `) + chalk.bold(name));
17
24
 
18
- // 1. Update metadata.json
25
+ // 1. Update or Create metadata.json
19
26
  const metadataPath = path.join(ROOT_DIR, 'metadata.json');
20
27
  if (fs.existsSync(metadataPath)) {
21
28
  const metadata = JSON.parse(fs.readFileSync(metadataPath, 'utf-8'));
@@ -23,15 +30,31 @@ export async function initProject(projectName?: string, projectDesc?: string, in
23
30
  metadata.description = desc;
24
31
  fs.writeFileSync(metadataPath, JSON.stringify(metadata, null, 2));
25
32
  console.log(chalk.green('✅ Updated metadata.json'));
33
+ } else {
34
+ const metadata = {
35
+ name: name,
36
+ description: desc
37
+ };
38
+ fs.writeFileSync(metadataPath, JSON.stringify(metadata, null, 2));
39
+ console.log(chalk.green('✅ Created metadata.json'));
26
40
  }
27
41
 
28
- // 2. Update index.html title
42
+ // 2. Update index.html title if exists, or create a basic one?
43
+ // Wait, openlag is used as a tool inside an app? Or is it a scaffold?
29
44
  const htmlPath = path.join(ROOT_DIR, 'index.html');
30
45
  if (fs.existsSync(htmlPath)) {
31
46
  let html = fs.readFileSync(htmlPath, 'utf-8');
32
47
  html = html.replace(/<title>.*?<\/title>/, `<title>${name} | OpenLAG</title>`);
48
+
49
+ const descMetaRegex = /<meta name="description" content=".*?"\s*\/?>/;
50
+ if (descMetaRegex.test(html)) {
51
+ html = html.replace(descMetaRegex, `<meta name="description" content="${desc}" />`);
52
+ } else {
53
+ html = html.replace(/<\/title>/, `</title>\n <meta name="description" content="${desc}" />`);
54
+ }
55
+
33
56
  fs.writeFileSync(htmlPath, html);
34
- console.log(chalk.green('✅ Updated index.html title'));
57
+ console.log(chalk.green('✅ Updated index.html title and description'));
35
58
  }
36
59
 
37
60
  // 3. Initialize /docs if empty or missing
@@ -1,5 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { execFileSync } from 'child_process';
3
+ import { readFileSync } from 'fs';
3
4
  import path from 'path';
4
5
  import { fileURLToPath } from 'url';
5
6
 
@@ -15,6 +16,7 @@ import { resolveViteBin } from './vite-bin.js';
15
16
 
16
17
  const program = new Command();
17
18
  const packageRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../..');
19
+ const pkg = JSON.parse(readFileSync(path.join(packageRoot, 'package.json'), 'utf8')) as { version: string };
18
20
 
19
21
  function runVitePreview() {
20
22
  const viteBin = resolveViteBin(import.meta.url);
@@ -28,7 +30,7 @@ function runVitePreview() {
28
30
  });
29
31
  }
30
32
 
31
- program.name('openlag').description('Architecture as Code traceability graph generator').version('0.1.0');
33
+ program.name('openlag').description('Architecture as Code traceability graph generator').version(pkg.version);
32
34
 
33
35
  program
34
36
  .command('init')
package/src/App.tsx CHANGED
@@ -17,7 +17,8 @@ export default function App() {
17
17
  activeView,
18
18
  setView,
19
19
  isLoading,
20
- systemVersions
20
+ systemVersions,
21
+ metadata
21
22
  } = useStore();
22
23
 
23
24
  useEffect(() => {
@@ -87,7 +88,7 @@ export default function App() {
87
88
  {/* Top Header */}
88
89
  <header className="h-16 bg-[#0f0f0f] border-b border-white/10 flex items-center px-8 justify-between shrink-0 z-10">
89
90
  <div className="font-serif text-xl italic tracking-tight flex items-center gap-2">
90
- OpenLAG <span className="text-xs font-mono opacity-50 ml-2 not-italic">| Lifecycle Engine</span>
91
+ OpenLAG <span className="text-xs font-mono opacity-50 ml-2 not-italic">| {metadata?.name || 'Lifecycle Engine'}</span>
91
92
  </div>
92
93
 
93
94
  <div className="flex items-center gap-6">