@donartcha/openlag 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.
- package/dist/assets/{arc-BJpiUvSh.js → arc-CQVyn5E3.js} +1 -1
- package/dist/assets/{architectureDiagram-3BPJPVTR-Dc7Q7uiQ.js → architectureDiagram-3BPJPVTR-BK7dvXUP.js} +1 -1
- package/dist/assets/{blockDiagram-GPEHLZMM-dYx8zJHa.js → blockDiagram-GPEHLZMM-CZACUlID.js} +1 -1
- package/dist/assets/{c4Diagram-AAUBKEIU-DEW1mepT.js → c4Diagram-AAUBKEIU-BaIdnoVu.js} +1 -1
- package/dist/assets/channel-cdJUve2-.js +1 -0
- package/dist/assets/{chunk-2J33WTMH-DI5V_htM.js → chunk-2J33WTMH-I6mjZe22.js} +1 -1
- package/dist/assets/{chunk-4BX2VUAB-Dpc1Oo7a.js → chunk-4BX2VUAB-Bni2aQg6.js} +1 -1
- package/dist/assets/{chunk-55IACEB6-BVCvy2y7.js → chunk-55IACEB6-BVvD3auX.js} +1 -1
- package/dist/assets/{chunk-727SXJPM-CiQJMcWK.js → chunk-727SXJPM-BvRYlYfC.js} +1 -1
- package/dist/assets/{chunk-AQP2D5EJ-CfIJf1-T.js → chunk-AQP2D5EJ-DODUUYy0.js} +1 -1
- package/dist/assets/{chunk-FMBD7UC4-CSSwZdAo.js → chunk-FMBD7UC4-CSnOrzk-.js} +1 -1
- package/dist/assets/{chunk-ND2GUHAM-CpsO12XK.js → chunk-ND2GUHAM-Cwj-8YlS.js} +1 -1
- package/dist/assets/{chunk-QZHKN3VN-CWuoRpFf.js → chunk-QZHKN3VN-DvvnV7FS.js} +1 -1
- package/dist/assets/classDiagram-4FO5ZUOK-cojzztnL.js +1 -0
- package/dist/assets/classDiagram-v2-Q7XG4LA2-cojzztnL.js +1 -0
- package/dist/assets/{cose-bilkent-S5V4N54A-COfB4T0K.js → cose-bilkent-S5V4N54A-CpzWWErA.js} +1 -1
- package/dist/assets/{dagre-BM42HDAG-C1H0EKAG.js → dagre-BM42HDAG-BoDP4qSL.js} +1 -1
- package/dist/assets/{diagram-2AECGRRQ-D6sEKSEZ.js → diagram-2AECGRRQ-DHIQUqF0.js} +1 -1
- package/dist/assets/{diagram-5GNKFQAL-Brd_bOCT.js → diagram-5GNKFQAL-xlx_pjV_.js} +1 -1
- package/dist/assets/{diagram-KO2AKTUF-Dt0MCanV.js → diagram-KO2AKTUF-B8MO1HgW.js} +1 -1
- package/dist/assets/{diagram-LMA3HP47-DQrGF35P.js → diagram-LMA3HP47-CRSJknuZ.js} +1 -1
- package/dist/assets/{diagram-OG6HWLK6-Dm7seF-q.js → diagram-OG6HWLK6-CeTvy4fY.js} +1 -1
- package/dist/assets/{erDiagram-TEJ5UH35-U6Gl6mUU.js → erDiagram-TEJ5UH35-DFtC0ScP.js} +1 -1
- package/dist/assets/{flowDiagram-I6XJVG4X-C7K7oK1X.js → flowDiagram-I6XJVG4X-DMRa3J_m.js} +1 -1
- package/dist/assets/{ganttDiagram-6RSMTGT7-CNvz6W3E.js → ganttDiagram-6RSMTGT7-Bxuykf6p.js} +1 -1
- package/dist/assets/{gitGraphDiagram-PVQCEYII-CyhbUvLq.js → gitGraphDiagram-PVQCEYII-CXTm84QI.js} +1 -1
- package/dist/assets/index-D02phRy3.css +1 -0
- package/dist/assets/index-Dvw-BZIp.js +734 -0
- package/dist/assets/{infoDiagram-5YYISTIA-DyHSE0hy.js → infoDiagram-5YYISTIA-D2tvLdtC.js} +1 -1
- package/dist/assets/{ishikawaDiagram-YF4QCWOH-fjlmrHx3.js → ishikawaDiagram-YF4QCWOH-D0jVP7EP.js} +1 -1
- package/dist/assets/{journeyDiagram-JHISSGLW-DOoASPaf.js → journeyDiagram-JHISSGLW-Ca5D6tBE.js} +1 -1
- package/dist/assets/{kanban-definition-UN3LZRKU-BEiKB1N_.js → kanban-definition-UN3LZRKU-BQ6UUXz2.js} +1 -1
- package/dist/assets/{linear-CPWtktbJ.js → linear-ARjH3_jK.js} +1 -1
- package/dist/assets/{mindmap-definition-RKZ34NQL-DliBjc9v.js → mindmap-definition-RKZ34NQL-CRRCJeZm.js} +1 -1
- package/dist/assets/{pieDiagram-4H26LBE5-CDu9kWU3.js → pieDiagram-4H26LBE5-BwtLTkTI.js} +1 -1
- package/dist/assets/{quadrantDiagram-W4KKPZXB-CEp1tT5r.js → quadrantDiagram-W4KKPZXB-BZ6VcAAZ.js} +1 -1
- package/dist/assets/{requirementDiagram-4Y6WPE33-BD2uboSV.js → requirementDiagram-4Y6WPE33-CmuAE86r.js} +1 -1
- package/dist/assets/{sankeyDiagram-5OEKKPKP-ZNgAHRIH.js → sankeyDiagram-5OEKKPKP-DRMutNq4.js} +1 -1
- package/dist/assets/{sequenceDiagram-3UESZ5HK-BrBpCFjG.js → sequenceDiagram-3UESZ5HK-DXssdhHI.js} +1 -1
- package/dist/assets/{stateDiagram-AJRCARHV-CDZcNxGe.js → stateDiagram-AJRCARHV-jyjJA7Vx.js} +1 -1
- package/dist/assets/stateDiagram-v2-BHNVJYJU-CmxCW1S9.js +1 -0
- package/dist/assets/{timeline-definition-PNZ67QCA-BszoRXfI.js → timeline-definition-PNZ67QCA-CMZ7Ow2L.js} +1 -1
- package/dist/assets/{vennDiagram-CIIHVFJN-CqnUhalx.js → vennDiagram-CIIHVFJN-GcmWlOLV.js} +1 -1
- package/dist/assets/{wardley-L42UT6IY-Cw8Z6Ke3.js → wardley-L42UT6IY-DbIT5rBc.js} +1 -1
- package/dist/assets/{wardleyDiagram-YWT4CUSO-TUrrIhGl.js → wardleyDiagram-YWT4CUSO-gYWXw-3o.js} +1 -1
- package/dist/assets/{xychartDiagram-2RQKCTM6-DWvpHqB8.js → xychartDiagram-2RQKCTM6-BVhFPdW8.js} +1 -1
- package/dist/cli/openlag.js +34 -3
- package/dist/index.html +3 -3
- package/index.html +1 -1
- package/package.json +2 -2
- package/scripts/cli/generate.ts +14 -2
- package/scripts/cli/init.ts +27 -4
- package/src/App.tsx +3 -2
- package/src/components/DocumentationView.tsx +92 -440
- package/src/components/GraphView.tsx +26 -3
- package/src/store.ts +6 -2
- package/dist/assets/channel-CfEECmqT.js +0 -1
- package/dist/assets/classDiagram-4FO5ZUOK-CqWhRzlO.js +0 -1
- package/dist/assets/classDiagram-v2-Q7XG4LA2-CqWhRzlO.js +0 -1
- package/dist/assets/index-By2WPc1i.js +0 -729
- package/dist/assets/index-CBSt31g-.css +0 -1
- package/dist/assets/stateDiagram-v2-BHNVJYJU-MAgBD3Ln.js +0 -1
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@donartcha/openlag",
|
|
3
|
-
"version": "0.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": "
|
|
8
|
+
"openlag": "bin/openlag.js"
|
|
9
9
|
},
|
|
10
10
|
"files": [
|
|
11
11
|
"bin",
|
package/scripts/cli/generate.ts
CHANGED
|
@@ -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
|
};
|
package/scripts/cli/init.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
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">
|