@vedangiitb/qwintly-core 1.6.4 → 1.6.5
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/indexer/projectInfoIndex.d.ts.map +1 -1
- package/dist/indexer/projectInfoIndex.js +2 -102
- package/dist/indexer/projectInfoIndex.js.map +1 -1
- package/dist/tests/projectInfoIndex.test.js +1 -9
- package/dist/tests/projectInfoIndex.test.js.map +1 -1
- package/dist/types/projectInfo.types.d.ts +0 -5
- package/dist/types/projectInfo.types.d.ts.map +1 -1
- package/dist/types/projectInfo.types.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectInfoIndex.d.ts","sourceRoot":"","sources":["../../src/indexer/projectInfoIndex.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"projectInfoIndex.d.ts","sourceRoot":"","sources":["../../src/indexer/projectInfoIndex.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAU5D,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,WAAW,CAAC,CA+BtB"}
|
|
@@ -1,92 +1,10 @@
|
|
|
1
|
-
import { getAvailableRoutes,
|
|
2
|
-
import {
|
|
3
|
-
const sectionNameFromId = (id) => {
|
|
4
|
-
if (!id)
|
|
5
|
-
return "";
|
|
6
|
-
if (id.endsWith("-section"))
|
|
7
|
-
return id.slice(0, -"-section".length);
|
|
8
|
-
if (id.endsWith("-container"))
|
|
9
|
-
return id.slice(0, -"-container".length);
|
|
10
|
-
return id;
|
|
11
|
-
};
|
|
1
|
+
import { getAvailableRoutes, } from "../ai/tools/helpers/pageConfigJson.helpers.js";
|
|
2
|
+
import { safeReadDir } from "../utils/workspace.js";
|
|
12
3
|
const computePageNameFromRoute = (pageRoute) => {
|
|
13
4
|
if (pageRoute === "/")
|
|
14
5
|
return "root";
|
|
15
6
|
return pageRoute.slice(1).split("/").join("-");
|
|
16
7
|
};
|
|
17
|
-
const findRootElement = (els) => {
|
|
18
|
-
let rootElement = null;
|
|
19
|
-
const findRoot = (items) => {
|
|
20
|
-
for (const el of items) {
|
|
21
|
-
if (el && typeof el === "object") {
|
|
22
|
-
if (el.type === "div" && el.id === "root") {
|
|
23
|
-
rootElement = el;
|
|
24
|
-
return;
|
|
25
|
-
}
|
|
26
|
-
if (Array.isArray(el.children)) {
|
|
27
|
-
findRoot(el.children);
|
|
28
|
-
if (rootElement)
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
};
|
|
34
|
-
findRoot(els);
|
|
35
|
-
return rootElement;
|
|
36
|
-
};
|
|
37
|
-
const extractRootSections = (rootElement) => {
|
|
38
|
-
if (!rootElement || !Array.isArray(rootElement.children))
|
|
39
|
-
return [];
|
|
40
|
-
const rootSections = [];
|
|
41
|
-
for (const child of rootElement.children) {
|
|
42
|
-
if (child &&
|
|
43
|
-
typeof child === "object" &&
|
|
44
|
-
child.type === "div" &&
|
|
45
|
-
child.id &&
|
|
46
|
-
child.id !== "root") {
|
|
47
|
-
const name = sectionNameFromId(child.id);
|
|
48
|
-
if (name) {
|
|
49
|
-
rootSections.push(name);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
return rootSections;
|
|
54
|
-
};
|
|
55
|
-
const collectFallbackSections = (elements) => {
|
|
56
|
-
const seen = new Set();
|
|
57
|
-
const results = [];
|
|
58
|
-
const collectFallback = (els) => {
|
|
59
|
-
for (const el of els) {
|
|
60
|
-
if (el && typeof el === "object") {
|
|
61
|
-
if (el.type === "div" &&
|
|
62
|
-
el.id &&
|
|
63
|
-
el.id !== "root" &&
|
|
64
|
-
(el.id.endsWith("-section") || el.id.endsWith("-container"))) {
|
|
65
|
-
const sectionName = sectionNameFromId(el.id);
|
|
66
|
-
if (sectionName && !seen.has(sectionName)) {
|
|
67
|
-
seen.add(sectionName);
|
|
68
|
-
results.push(sectionName);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
if (Array.isArray(el.children)) {
|
|
72
|
-
collectFallback(el.children);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
};
|
|
77
|
-
collectFallback(elements);
|
|
78
|
-
return results;
|
|
79
|
-
};
|
|
80
|
-
const extractSectionNamesFromParsedConfig = (config) => {
|
|
81
|
-
if (!config || !Array.isArray(config.elements))
|
|
82
|
-
return [];
|
|
83
|
-
const rootElement = findRootElement(config.elements);
|
|
84
|
-
const rootSections = extractRootSections(rootElement);
|
|
85
|
-
if (rootSections.length > 0) {
|
|
86
|
-
return rootSections;
|
|
87
|
-
}
|
|
88
|
-
return collectFallbackSections(config.elements);
|
|
89
|
-
};
|
|
90
8
|
export async function computeProjectInfo(rootDir) {
|
|
91
9
|
const routes = await getAvailableRoutes({
|
|
92
10
|
workspaceRoot: rootDir,
|
|
@@ -96,29 +14,11 @@ export async function computeProjectInfo(rootDir) {
|
|
|
96
14
|
for (const pageRoute of routes) {
|
|
97
15
|
const pageName = computePageNameFromRoute(pageRoute);
|
|
98
16
|
const description = `${pageName} page for this project`;
|
|
99
|
-
let sectionNames = [];
|
|
100
|
-
try {
|
|
101
|
-
const configPath = getPageConfigJsonPath(rootDir, pageRoute);
|
|
102
|
-
const content = await readFile(configPath);
|
|
103
|
-
if (content) {
|
|
104
|
-
const config = JSON.parse(content);
|
|
105
|
-
sectionNames = extractSectionNamesFromParsedConfig(config);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
catch {
|
|
109
|
-
// Ignore reading/parsing errors, treat as no sections
|
|
110
|
-
}
|
|
111
17
|
const page = {
|
|
112
18
|
pageRoute,
|
|
113
19
|
pageName,
|
|
114
20
|
description,
|
|
115
21
|
};
|
|
116
|
-
if (sectionNames.length > 0) {
|
|
117
|
-
page.sections = sectionNames.map((sectionName) => ({
|
|
118
|
-
sectionName,
|
|
119
|
-
description: `${sectionName} section for this page`,
|
|
120
|
-
}));
|
|
121
|
-
}
|
|
122
22
|
uiPages.push(page);
|
|
123
23
|
}
|
|
124
24
|
uiPages.sort((a, b) => a.pageRoute.localeCompare(b.pageRoute, undefined, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectInfoIndex.js","sourceRoot":"","sources":["../../src/indexer/projectInfoIndex.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,
|
|
1
|
+
{"version":3,"file":"projectInfoIndex.js","sourceRoot":"","sources":["../../src/indexer/projectInfoIndex.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,GACnB,MAAM,+CAA+C,CAAC;AAEvD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAIpD,MAAM,wBAAwB,GAAG,CAAC,SAAiB,EAAU,EAAE;IAC7D,IAAI,SAAS,KAAK,GAAG;QAAE,OAAO,MAAM,CAAC;IACrC,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACjD,CAAC,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAe;IAEf,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC;QACtC,aAAa,EAAE,OAAO;QACtB,EAAE,EAAE,EAAE,WAAW,EAAE;KACpB,CAAC,CAAC;IAEH,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,KAAK,MAAM,SAAS,IAAI,MAAM,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,wBAAwB,CAAC,SAAS,CAAC,CAAC;QACrD,MAAM,WAAW,GAAG,GAAG,QAAQ,wBAAwB,CAAC;QAExD,MAAM,IAAI,GAAW;YACnB,SAAS;YACT,QAAQ;YACR,WAAW;SACZ,CAAC;QAEF,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACpB,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE;QAChD,WAAW,EAAE,MAAM;KACpB,CAAC,CACH,CAAC;IAEF,OAAO;QACL,OAAO;QACP,sBAAsB,EAAE,CAAC;KAC1B,CAAC;AACJ,CAAC","sourcesContent":["import {\n getAvailableRoutes,\n} from \"../ai/tools/helpers/pageConfigJson.helpers.js\";\nimport { ProjectInfo } from \"../types/projectInfo.types.js\";\nimport { safeReadDir } from \"../utils/workspace.js\";\n\ntype UiPage = ProjectInfo[\"uiPages\"][number];\n\nconst computePageNameFromRoute = (pageRoute: string): string => {\n if (pageRoute === \"/\") return \"root\";\n return pageRoute.slice(1).split(\"/\").join(\"-\");\n};\n\nexport async function computeProjectInfo(\n rootDir: string,\n): Promise<ProjectInfo> {\n const routes = await getAvailableRoutes({\n workspaceRoot: rootDir,\n fs: { safeReadDir },\n });\n\n const uiPages: UiPage[] = [];\n\n for (const pageRoute of routes) {\n const pageName = computePageNameFromRoute(pageRoute);\n const description = `${pageName} page for this project`;\n\n const page: UiPage = {\n pageRoute,\n pageName,\n description,\n };\n\n uiPages.push(page);\n }\n\n uiPages.sort((a, b) =>\n a.pageRoute.localeCompare(b.pageRoute, undefined, {\n sensitivity: \"base\",\n }),\n );\n\n return {\n uiPages,\n lastUpdatedPlanVersion: 1,\n };\n}"]}
|
|
@@ -4,7 +4,7 @@ import path from "node:path";
|
|
|
4
4
|
import os from "node:os";
|
|
5
5
|
import fs from "node:fs/promises";
|
|
6
6
|
import { computeProjectInfo } from "../indexer/projectInfoIndex.js";
|
|
7
|
-
test("computeProjectInfo: scans routes
|
|
7
|
+
test("computeProjectInfo: scans routes from directories and constructs pages", async () => {
|
|
8
8
|
const workspaceRoot = await fs.mkdtemp(path.join(os.tmpdir(), "qwintly-core-project-info-"));
|
|
9
9
|
try {
|
|
10
10
|
// 1. Create a root pageConfig.json with a div root and two sections
|
|
@@ -49,24 +49,16 @@ test("computeProjectInfo: scans routes and sections from pageConfig.json files",
|
|
|
49
49
|
assert.ok(rootPage);
|
|
50
50
|
assert.equal(rootPage.pageName, "root");
|
|
51
51
|
assert.equal(rootPage.description, "root page for this project");
|
|
52
|
-
assert.deepEqual(rootPage.sections, [
|
|
53
|
-
{ sectionName: "hero", description: "hero section for this page" },
|
|
54
|
-
{ sectionName: "footer", description: "footer section for this page" }
|
|
55
|
-
]);
|
|
56
52
|
// /dashboard route
|
|
57
53
|
const dashboardPage = projectInfo.uiPages.find(p => p.pageRoute === "/dashboard");
|
|
58
54
|
assert.ok(dashboardPage);
|
|
59
55
|
assert.equal(dashboardPage.pageName, "dashboard");
|
|
60
56
|
assert.equal(dashboardPage.description, "dashboard page for this project");
|
|
61
|
-
assert.equal(dashboardPage.sections, undefined);
|
|
62
57
|
// /dashboard/settings route
|
|
63
58
|
const settingsPage = projectInfo.uiPages.find(p => p.pageRoute === "/dashboard/settings");
|
|
64
59
|
assert.ok(settingsPage);
|
|
65
60
|
assert.equal(settingsPage.pageName, "dashboard-settings");
|
|
66
61
|
assert.equal(settingsPage.description, "dashboard-settings page for this project");
|
|
67
|
-
assert.deepEqual(settingsPage.sections, [
|
|
68
|
-
{ sectionName: "settings", description: "settings section for this page" }
|
|
69
|
-
]);
|
|
70
62
|
}
|
|
71
63
|
finally {
|
|
72
64
|
await fs.rm(workspaceRoot, { recursive: true, force: true });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectInfoIndex.test.js","sourceRoot":"","sources":["../../src/tests/projectInfoIndex.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"projectInfoIndex.test.js","sourceRoot":"","sources":["../../src/tests/projectInfoIndex.test.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from \"node:assert/strict\";\nimport test from \"node:test\";\nimport path from \"node:path\";\nimport os from \"node:os\";\nimport fs from \"node:fs/promises\";\nimport { computeProjectInfo } from \"../indexer/projectInfoIndex.js\";\n\ntest(\"computeProjectInfo: scans routes from directories and constructs pages\", async () => {\n const workspaceRoot = await fs.mkdtemp(path.join(os.tmpdir(), \"qwintly-core-project-info-\"));\n try {\n // 1. Create a root pageConfig.json with a div root and two sections\n const rootDir = path.join(workspaceRoot, \"app\");\n await fs.mkdir(rootDir, { recursive: true });\n await fs.writeFile(\n path.join(rootDir, \"pageConfig.json\"),\n JSON.stringify({\n elements: [\n {\n id: \"root\",\n type: \"div\",\n children: [\n { id: \"hero-section\", type: \"div\", children: [] },\n { id: \"footer-container\", type: \"div\", children: [] },\n { id: \"some-text\", type: \"text\", props: { text: \"hello\" } }\n ]\n }\n ]\n })\n );\n\n // 2. Create a nested pageConfig.json under /dashboard/settings with a fallback section\n const settingsDir = path.join(workspaceRoot, \"app\", \"dashboard\", \"settings\");\n await fs.mkdir(settingsDir, { recursive: true });\n await fs.writeFile(\n path.join(settingsDir, \"pageConfig.json\"),\n JSON.stringify({\n elements: [\n {\n id: \"settings-container\",\n type: \"div\",\n children: []\n }\n ]\n })\n );\n\n // 3. Create a nested pageConfig.json under /dashboard with no sections\n const dashboardDir = path.join(workspaceRoot, \"app\", \"dashboard\");\n await fs.mkdir(dashboardDir, { recursive: true });\n await fs.writeFile(\n path.join(dashboardDir, \"pageConfig.json\"),\n JSON.stringify({\n elements: []\n })\n );\n\n const projectInfo = await computeProjectInfo(workspaceRoot);\n\n assert.equal(projectInfo.uiPages.length, 3);\n assert.equal(projectInfo.lastUpdatedPlanVersion, 1);\n\n // / route\n const rootPage = projectInfo.uiPages.find(p => p.pageRoute === \"/\");\n assert.ok(rootPage);\n assert.equal(rootPage.pageName, \"root\");\n assert.equal(rootPage.description, \"root page for this project\");\n\n // /dashboard route\n const dashboardPage = projectInfo.uiPages.find(p => p.pageRoute === \"/dashboard\");\n assert.ok(dashboardPage);\n assert.equal(dashboardPage.pageName, \"dashboard\");\n assert.equal(dashboardPage.description, \"dashboard page for this project\");\n\n // /dashboard/settings route\n const settingsPage = projectInfo.uiPages.find(p => p.pageRoute === \"/dashboard/settings\");\n assert.ok(settingsPage);\n assert.equal(settingsPage.pageName, \"dashboard-settings\");\n assert.equal(settingsPage.description, \"dashboard-settings page for this project\");\n\n } finally {\n await fs.rm(workspaceRoot, { recursive: true, force: true });\n }\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectInfo.types.d.ts","sourceRoot":"","sources":["../../src/types/projectInfo.types.ts"],"names":[],"mappings":"AAAA,UAAU,
|
|
1
|
+
{"version":3,"file":"projectInfo.types.d.ts","sourceRoot":"","sources":["../../src/types/projectInfo.types.ts"],"names":[],"mappings":"AAAA,UAAU,IAAI;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,IAAI,EAAE,CAAC;IAChB,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectInfo.types.js","sourceRoot":"","sources":["../../src/types/projectInfo.types.ts"],"names":[],"mappings":"","sourcesContent":["interface
|
|
1
|
+
{"version":3,"file":"projectInfo.types.js","sourceRoot":"","sources":["../../src/types/projectInfo.types.ts"],"names":[],"mappings":"","sourcesContent":["interface Page {\n pageRoute: string;\n pageName: string;\n description: string;\n}\n\nexport interface ProjectInfo {\n uiPages: Page[];\n lastUpdatedPlanVersion?: number;\n}\n"]}
|