@vedangiitb/qwintly-core 1.2.1 → 1.3.0
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/ai/prompts/codegen.prompt.d.ts +9 -0
- package/dist/ai/prompts/codegen.prompt.d.ts.map +1 -0
- package/dist/ai/prompts/codegen.prompt.js +53 -0
- package/dist/ai/prompts/codegen.prompt.js.map +1 -0
- package/dist/ai/prompts/examples/codegen.examples.d.ts +2 -0
- package/dist/ai/prompts/examples/codegen.examples.d.ts.map +1 -0
- package/dist/ai/prompts/examples/codegen.examples.js +81 -0
- package/dist/ai/prompts/examples/codegen.examples.js.map +1 -0
- package/dist/ai/prompts/examples/planner.examples.d.ts +2 -0
- package/dist/ai/prompts/examples/planner.examples.d.ts.map +1 -0
- package/dist/ai/prompts/examples/planner.examples.js +3 -0
- package/dist/ai/prompts/examples/planner.examples.js.map +1 -0
- package/dist/ai/prompts/helpers/promptParts.helper.d.ts +8 -0
- package/dist/ai/prompts/helpers/promptParts.helper.d.ts.map +1 -0
- package/dist/ai/prompts/helpers/promptParts.helper.js +37 -0
- package/dist/ai/prompts/helpers/promptParts.helper.js.map +1 -0
- package/dist/ai/prompts/planner.prompt.d.ts +10 -0
- package/dist/ai/prompts/planner.prompt.d.ts.map +1 -0
- package/dist/ai/prompts/planner.prompt.js +49 -0
- package/dist/ai/prompts/planner.prompt.js.map +1 -0
- package/dist/ai/prompts/prompts.d.ts +4 -0
- package/dist/ai/prompts/prompts.d.ts.map +1 -0
- package/dist/ai/prompts/prompts.js +4 -0
- package/dist/ai/prompts/prompts.js.map +1 -0
- package/dist/ai/prompts/validator.prompt.d.ts +15 -0
- package/dist/ai/prompts/validator.prompt.d.ts.map +1 -0
- package/dist/ai/prompts/validator.prompt.js +55 -0
- package/dist/ai/prompts/validator.prompt.js.map +1 -0
- package/dist/ai/tools/helpers/elementid.helpers.d.ts +4 -0
- package/dist/ai/tools/helpers/elementid.helpers.d.ts.map +1 -0
- package/dist/ai/tools/helpers/elementid.helpers.js +19 -0
- package/dist/ai/tools/helpers/elementid.helpers.js.map +1 -0
- package/dist/ai/tools/helpers/getImage.helper.d.ts +2 -0
- package/dist/ai/tools/helpers/getImage.helper.d.ts.map +1 -0
- package/dist/ai/tools/helpers/getImage.helper.js +2 -0
- package/dist/ai/tools/helpers/getImage.helper.js.map +1 -0
- package/dist/ai/tools/helpers/pageConfigJson.helpers.d.ts +15 -0
- package/dist/ai/tools/helpers/pageConfigJson.helpers.d.ts.map +1 -0
- package/dist/ai/tools/helpers/pageConfigJson.helpers.js +172 -0
- package/dist/ai/tools/helpers/pageConfigJson.helpers.js.map +1 -0
- package/dist/ai/tools/implementations/createNewRoute.impl.d.ts +5 -0
- package/dist/ai/tools/implementations/createNewRoute.impl.d.ts.map +1 -0
- package/dist/ai/tools/implementations/createNewRoute.impl.js +101 -0
- package/dist/ai/tools/implementations/createNewRoute.impl.js.map +1 -0
- package/dist/ai/tools/implementations/deleteElement.impl.d.ts +18 -0
- package/dist/ai/tools/implementations/deleteElement.impl.d.ts.map +1 -0
- package/dist/ai/tools/implementations/deleteElement.impl.js +60 -0
- package/dist/ai/tools/implementations/deleteElement.impl.js.map +1 -0
- package/dist/ai/tools/implementations/factories.d.ts +72 -0
- package/dist/ai/tools/implementations/factories.d.ts.map +1 -1
- package/dist/ai/tools/implementations/factories.js +20 -0
- package/dist/ai/tools/implementations/factories.js.map +1 -1
- package/dist/ai/tools/implementations/insertElement.impl.d.ts +14 -0
- package/dist/ai/tools/implementations/insertElement.impl.d.ts.map +1 -0
- package/dist/ai/tools/implementations/insertElement.impl.js +73 -0
- package/dist/ai/tools/implementations/insertElement.impl.js.map +1 -0
- package/dist/ai/tools/implementations/updateClassName.impl.d.ts +13 -0
- package/dist/ai/tools/implementations/updateClassName.impl.d.ts.map +1 -0
- package/dist/ai/tools/implementations/updateClassName.impl.js +61 -0
- package/dist/ai/tools/implementations/updateClassName.impl.js.map +1 -0
- package/dist/ai/tools/implementations/updateProps.impl.d.ts +33 -0
- package/dist/ai/tools/implementations/updateProps.impl.d.ts.map +1 -0
- package/dist/ai/tools/implementations/updateProps.impl.js +90 -0
- package/dist/ai/tools/implementations/updateProps.impl.js.map +1 -0
- package/dist/ai/tools/schemas/createNewRoute.schema.d.ts +20 -0
- package/dist/ai/tools/schemas/createNewRoute.schema.d.ts.map +1 -0
- package/dist/ai/tools/schemas/createNewRoute.schema.js +20 -0
- package/dist/ai/tools/schemas/createNewRoute.schema.js.map +1 -0
- package/dist/ai/tools/schemas/deleteElement.schema.d.ts +20 -0
- package/dist/ai/tools/schemas/deleteElement.schema.d.ts.map +1 -0
- package/dist/ai/tools/schemas/deleteElement.schema.js +20 -0
- package/dist/ai/tools/schemas/deleteElement.schema.js.map +1 -0
- package/dist/ai/tools/schemas/insertElement.schema.d.ts +23 -0
- package/dist/ai/tools/schemas/insertElement.schema.d.ts.map +1 -0
- package/dist/ai/tools/schemas/insertElement.schema.js +133 -0
- package/dist/ai/tools/schemas/insertElement.schema.js.map +1 -0
- package/dist/ai/tools/schemas/updateClassName.schema.d.ts +23 -0
- package/dist/ai/tools/schemas/updateClassName.schema.d.ts.map +1 -0
- package/dist/ai/tools/schemas/updateClassName.schema.js +21 -0
- package/dist/ai/tools/schemas/updateClassName.schema.js.map +1 -0
- package/dist/ai/tools/schemas/updateProps.schema.d.ts +91 -0
- package/dist/ai/tools/schemas/updateProps.schema.d.ts.map +1 -0
- package/dist/ai/tools/schemas/updateProps.schema.js +87 -0
- package/dist/ai/tools/schemas/updateProps.schema.js.map +1 -0
- package/dist/ai/tools/toolsets/codegenTools.d.ts.map +1 -1
- package/dist/ai/tools/toolsets/codegenTools.js +12 -4
- package/dist/ai/tools/toolsets/codegenTools.js.map +1 -1
- package/dist/core.d.ts +4 -0
- package/dist/core.d.ts.map +1 -1
- package/dist/core.js +7 -0
- package/dist/core.js.map +1 -1
- package/dist/image/unsplash.service.d.ts +22 -0
- package/dist/image/unsplash.service.d.ts.map +1 -0
- package/dist/image/unsplash.service.js +120 -0
- package/dist/image/unsplash.service.js.map +1 -0
- package/dist/indexer/codegenIndex.d.ts.map +1 -1
- package/dist/indexer/codegenIndex.js +2 -5
- package/dist/indexer/codegenIndex.js.map +1 -1
- package/dist/indexer/data/configs.constants.d.ts +32 -56
- package/dist/indexer/data/configs.constants.d.ts.map +1 -1
- package/dist/indexer/data/configs.constants.js +61 -88
- package/dist/indexer/data/configs.constants.js.map +1 -1
- package/dist/indexer/plannerIndex.d.ts.map +1 -1
- package/dist/indexer/plannerIndex.js +2 -7
- package/dist/indexer/plannerIndex.js.map +1 -1
- package/dist/indexer/validatorIndex.d.ts.map +1 -1
- package/dist/indexer/validatorIndex.js +1 -0
- package/dist/indexer/validatorIndex.js.map +1 -1
- package/dist/tests/createNewRoute.impl.test.d.ts +2 -0
- package/dist/tests/createNewRoute.impl.test.d.ts.map +1 -0
- package/dist/tests/createNewRoute.impl.test.js +72 -0
- package/dist/tests/createNewRoute.impl.test.js.map +1 -0
- package/dist/tests/deleteElement.impl.test.d.ts +2 -0
- package/dist/tests/deleteElement.impl.test.d.ts.map +1 -0
- package/dist/tests/deleteElement.impl.test.js +88 -0
- package/dist/tests/deleteElement.impl.test.js.map +1 -0
- package/dist/tests/insertUpdate.impl.test.d.ts +2 -0
- package/dist/tests/insertUpdate.impl.test.d.ts.map +1 -0
- package/dist/tests/insertUpdate.impl.test.js +68 -0
- package/dist/tests/insertUpdate.impl.test.js.map +1 -0
- package/dist/types/elements.d.ts +43 -0
- package/dist/types/elements.d.ts.map +1 -0
- package/dist/types/elements.js +13 -0
- package/dist/types/elements.js.map +1 -0
- package/dist/types/image.d.ts +19 -0
- package/dist/types/image.d.ts.map +1 -0
- package/dist/types/image.js +3 -0
- package/dist/types/image.js.map +1 -0
- package/dist/types/index/configs.types.d.ts +2 -3
- package/dist/types/index/configs.types.d.ts.map +1 -1
- package/dist/types/index/configs.types.js.map +1 -1
- package/dist/types/index/index.types.d.ts +4 -6
- package/dist/types/index/index.types.d.ts.map +1 -1
- package/dist/types/index/index.types.js.map +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"insertUpdate.impl.test.d.ts","sourceRoot":"","sources":["../../src/tests/insertUpdate.impl.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import assert from "node:assert/strict";
|
|
2
|
+
import test from "node:test";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import os from "node:os";
|
|
5
|
+
import fs from "node:fs/promises";
|
|
6
|
+
import { createInsertElementImpl } from "../ai/tools/implementations/insertElement.impl.js";
|
|
7
|
+
import { createUpdatePropsImpl } from "../ai/tools/implementations/updateProps.impl.js";
|
|
8
|
+
import { createUpdateClassNameImpl } from "../ai/tools/implementations/updateClassName.impl.js";
|
|
9
|
+
const makeRealFs = (overrides) => {
|
|
10
|
+
return {
|
|
11
|
+
readFile: async (absolutePath) => fs.readFile(absolutePath, "utf-8"),
|
|
12
|
+
writeFile: async (absolutePath, content) => fs.writeFile(absolutePath, content ?? "", "utf-8"),
|
|
13
|
+
mkdirp: async (absoluteDir) => {
|
|
14
|
+
await fs.mkdir(absoluteDir, { recursive: true });
|
|
15
|
+
},
|
|
16
|
+
rmFile: async (absolutePath) => fs.rm(absolutePath, { force: true }),
|
|
17
|
+
stat: async (absolutePath) => fs.stat(absolutePath),
|
|
18
|
+
safeReadDir: async (absoluteDir) => fs.readdir(absoluteDir, { withFileTypes: true }),
|
|
19
|
+
...(overrides ?? {}),
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
test("insert/update tools: inject ids, insert under parent, update props and classname", async () => {
|
|
23
|
+
const workspaceRoot = await fs.mkdtemp(path.join(os.tmpdir(), "qwintly-core-"));
|
|
24
|
+
try {
|
|
25
|
+
const routeDir = path.join(workspaceRoot, "app", "a");
|
|
26
|
+
await fs.mkdir(routeDir, { recursive: true });
|
|
27
|
+
const filePath = path.join(routeDir, "pageConfig.json");
|
|
28
|
+
await fs.writeFile(filePath, JSON.stringify({
|
|
29
|
+
elements: [
|
|
30
|
+
{
|
|
31
|
+
id: "root",
|
|
32
|
+
type: "div",
|
|
33
|
+
children: [{ id: "existing", type: "text", props: { text: "x" } }],
|
|
34
|
+
},
|
|
35
|
+
],
|
|
36
|
+
}, null, 2) + "\n", "utf-8");
|
|
37
|
+
const deps = { workspaceRoot, fs: makeRealFs() };
|
|
38
|
+
const insert = createInsertElementImpl(deps);
|
|
39
|
+
const updateProps = createUpdatePropsImpl(deps);
|
|
40
|
+
const updateClassName = createUpdateClassNameImpl(deps);
|
|
41
|
+
const inserted = await insert("/a", "root", {
|
|
42
|
+
type: "text",
|
|
43
|
+
props: { text: "hello" },
|
|
44
|
+
});
|
|
45
|
+
assert.equal(inserted.success, true, `unexpected response: ${JSON.stringify(inserted)}`);
|
|
46
|
+
const insertedId = inserted.inserted_id;
|
|
47
|
+
assert.ok(typeof insertedId === "string" && insertedId.startsWith("el_"));
|
|
48
|
+
const up1 = await updateProps({
|
|
49
|
+
route: "/a",
|
|
50
|
+
element_id: insertedId,
|
|
51
|
+
text: "updated",
|
|
52
|
+
href: "/x",
|
|
53
|
+
});
|
|
54
|
+
assert.equal(up1.success, true);
|
|
55
|
+
const up2 = await updateClassName("/a", insertedId, "text-red-500");
|
|
56
|
+
assert.equal(up2.success, true);
|
|
57
|
+
const after = JSON.parse(await fs.readFile(filePath, "utf-8"));
|
|
58
|
+
const found = after.elements[0].children.find((e) => e.id === insertedId);
|
|
59
|
+
assert.ok(found);
|
|
60
|
+
assert.equal(found.props.text, "updated");
|
|
61
|
+
assert.equal(found.props.href, "/x");
|
|
62
|
+
assert.equal(found.className, "text-red-500");
|
|
63
|
+
}
|
|
64
|
+
finally {
|
|
65
|
+
await fs.rm(workspaceRoot, { recursive: true, force: true });
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
//# sourceMappingURL=insertUpdate.impl.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"insertUpdate.impl.test.js","sourceRoot":"","sources":["../../src/tests/insertUpdate.impl.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 { createInsertElementImpl } from \"../ai/tools/implementations/insertElement.impl.js\";\nimport { createUpdatePropsImpl } from \"../ai/tools/implementations/updateProps.impl.js\";\nimport { createUpdateClassNameImpl } from \"../ai/tools/implementations/updateClassName.impl.js\";\n\ntype Deps = Parameters<typeof createInsertElementImpl>[0];\ntype CoreFs = Deps[\"fs\"];\n\nconst makeRealFs = (overrides?: Partial<CoreFs>): CoreFs => {\n return {\n readFile: async (absolutePath) => fs.readFile(absolutePath, \"utf-8\"),\n writeFile: async (absolutePath, content) =>\n fs.writeFile(absolutePath, content ?? \"\", \"utf-8\"),\n mkdirp: async (absoluteDir) => {\n await fs.mkdir(absoluteDir, { recursive: true });\n },\n rmFile: async (absolutePath) => fs.rm(absolutePath, { force: true }),\n stat: async (absolutePath) => fs.stat(absolutePath),\n safeReadDir: async (absoluteDir) =>\n fs.readdir(absoluteDir, { withFileTypes: true }),\n ...(overrides ?? {}),\n };\n};\n\ntest(\"insert/update tools: inject ids, insert under parent, update props and classname\", async () => {\n const workspaceRoot = await fs.mkdtemp(path.join(os.tmpdir(), \"qwintly-core-\"));\n try {\n const routeDir = path.join(workspaceRoot, \"app\", \"a\");\n await fs.mkdir(routeDir, { recursive: true });\n const filePath = path.join(routeDir, \"pageConfig.json\");\n await fs.writeFile(\n filePath,\n JSON.stringify(\n {\n elements: [\n {\n id: \"root\",\n type: \"div\",\n children: [{ id: \"existing\", type: \"text\", props: { text: \"x\" } }],\n },\n ],\n },\n null,\n 2,\n ) + \"\\n\",\n \"utf-8\",\n );\n\n const deps = { workspaceRoot, fs: makeRealFs() } as any;\n const insert = createInsertElementImpl(deps);\n const updateProps = createUpdatePropsImpl(deps);\n const updateClassName = createUpdateClassNameImpl(deps);\n\n const inserted = await insert(\"/a\", \"root\", {\n type: \"text\",\n props: { text: \"hello\" },\n } as any);\n assert.equal(\n (inserted as any).success,\n true,\n `unexpected response: ${JSON.stringify(inserted)}`,\n );\n const insertedId = (inserted as any).inserted_id as string;\n assert.ok(typeof insertedId === \"string\" && insertedId.startsWith(\"el_\"));\n\n const up1 = await updateProps({\n route: \"/a\",\n element_id: insertedId,\n text: \"updated\",\n href: \"/x\",\n } as any);\n assert.equal((up1 as any).success, true);\n\n const up2 = await updateClassName(\"/a\", insertedId, \"text-red-500\");\n assert.equal((up2 as any).success, true);\n\n const after = JSON.parse(await fs.readFile(filePath, \"utf-8\"));\n const found = (after.elements[0].children as any[]).find((e) => e.id === insertedId);\n assert.ok(found);\n assert.equal(found.props.text, \"updated\");\n assert.equal(found.props.href, \"/x\");\n assert.equal(found.className, \"text-red-500\");\n } finally {\n await fs.rm(workspaceRoot, { recursive: true, force: true });\n }\n});\n"]}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export declare const ELEMENT_TYPES: readonly ["fragment", "div", "text", "image", "button", "input", "textarea", "link", "icon"];
|
|
2
|
+
export type ElementType = (typeof ELEMENT_TYPES)[number];
|
|
3
|
+
export type OnClickAction = {
|
|
4
|
+
kind: "route";
|
|
5
|
+
href: string;
|
|
6
|
+
replace?: boolean;
|
|
7
|
+
} | {
|
|
8
|
+
kind: "back";
|
|
9
|
+
} | {
|
|
10
|
+
kind: "reload";
|
|
11
|
+
} | {
|
|
12
|
+
kind: "external";
|
|
13
|
+
href: string;
|
|
14
|
+
newTab?: boolean;
|
|
15
|
+
};
|
|
16
|
+
export type BuilderElement = {
|
|
17
|
+
id: string;
|
|
18
|
+
type: ElementType;
|
|
19
|
+
props?: {
|
|
20
|
+
onClick?: OnClickAction;
|
|
21
|
+
text?: string;
|
|
22
|
+
src?: string;
|
|
23
|
+
href?: string;
|
|
24
|
+
placeholder?: string;
|
|
25
|
+
alt?: string;
|
|
26
|
+
target?: string;
|
|
27
|
+
rel?: string;
|
|
28
|
+
value?: string;
|
|
29
|
+
type?: string;
|
|
30
|
+
name?: string;
|
|
31
|
+
size?: number;
|
|
32
|
+
color?: string;
|
|
33
|
+
strokeWidth?: number;
|
|
34
|
+
};
|
|
35
|
+
children?: BuilderElement[];
|
|
36
|
+
visible?: boolean;
|
|
37
|
+
meta?: {
|
|
38
|
+
name?: string;
|
|
39
|
+
locked?: boolean;
|
|
40
|
+
};
|
|
41
|
+
className?: string;
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=elements.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"elements.d.ts","sourceRoot":"","sources":["../../src/types/elements.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,8FAUhB,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAClD;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAEzD,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,WAAW,CAAC;IAElB,KAAK,CAAC,EAAE;QACN,OAAO,CAAC,EAAE,aAAa,CAAC;QAExB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QAGd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IAEF,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;IAE5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,IAAI,CAAC,EAAE;QACL,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,CAAC;IAEF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"elements.js","sourceRoot":"","sources":["../../src/types/elements.ts"],"names":[],"mappings":"AAAA,oBAAoB;AAEpB,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,UAAU;IACV,KAAK;IACL,MAAM;IACN,OAAO;IACP,QAAQ;IACR,OAAO;IACP,UAAU;IACV,MAAM;IACN,MAAM;CACE,CAAC","sourcesContent":["// types/elements.ts\n\nexport const ELEMENT_TYPES = [\n \"fragment\",\n \"div\",\n \"text\",\n \"image\",\n \"button\",\n \"input\",\n \"textarea\",\n \"link\",\n \"icon\",\n] as const;\n\nexport type ElementType = (typeof ELEMENT_TYPES)[number];\n\nexport type OnClickAction =\n | { kind: \"route\"; href: string; replace?: boolean }\n | { kind: \"back\" }\n | { kind: \"reload\" }\n | { kind: \"external\"; href: string; newTab?: boolean };\n\nexport type BuilderElement = {\n id: string;\n type: ElementType;\n\n props?: {\n onClick?: OnClickAction;\n\n text?: string;\n src?: string;\n href?: string;\n placeholder?: string;\n alt?: string;\n target?: string;\n rel?: string;\n value?: string;\n type?: string; // input type\n\n // icon\n name?: string;\n size?: number;\n color?: string;\n strokeWidth?: number;\n };\n\n children?: BuilderElement[];\n\n visible?: boolean;\n\n meta?: {\n name?: string;\n locked?: boolean;\n };\n\n className?: string; // Tailwind only\n};"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export type AspectRatio = "16:9" | "1:1" | "4:3";
|
|
2
|
+
export interface ImageIntent {
|
|
3
|
+
alt: string;
|
|
4
|
+
query: string;
|
|
5
|
+
aspectRatio?: AspectRatio;
|
|
6
|
+
visualStyle?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface ResolvedImage {
|
|
9
|
+
id: string;
|
|
10
|
+
alt: string;
|
|
11
|
+
imageUrl: string;
|
|
12
|
+
thumbUrl: string;
|
|
13
|
+
photographer: string;
|
|
14
|
+
photographerUrl: string;
|
|
15
|
+
unsplashUrl: string;
|
|
16
|
+
width: number;
|
|
17
|
+
height: number;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=image.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../src/types/image.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;AAEjD,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image.js","sourceRoot":"","sources":["../../src/types/image.ts"],"names":[],"mappings":"AAAA,iBAAiB","sourcesContent":["// types/image.ts\r\n\r\nexport type AspectRatio = \"16:9\" | \"1:1\" | \"4:3\";\r\n\r\nexport interface ImageIntent {\r\n alt: string;\r\n query: string;\r\n aspectRatio?: AspectRatio;\r\n visualStyle?: string;\r\n}\r\n\r\nexport interface ResolvedImage {\r\n id: string;\r\n alt: string;\r\n imageUrl: string;\r\n thumbUrl: string;\r\n photographer: string;\r\n photographerUrl: string;\r\n unsplashUrl: string;\r\n width: number;\r\n height: number;\r\n}"]}
|
|
@@ -2,18 +2,17 @@ export interface ProjectConfigsConfig {
|
|
|
2
2
|
frameworkConfig: ProjectConfigsFrameworkConfig;
|
|
3
3
|
runtimeConfig: ProjectConfigsRuntimeConfig;
|
|
4
4
|
toolingConfig: ProjectConfigsToolingConfig;
|
|
5
|
+
renderingConfig: any;
|
|
5
6
|
}
|
|
6
7
|
export interface ProjectConfigsFrameworkConfig {
|
|
7
8
|
name: string;
|
|
8
9
|
router: string;
|
|
9
10
|
language: string;
|
|
11
|
+
icons: string;
|
|
10
12
|
styling: string;
|
|
11
|
-
ui: string;
|
|
12
|
-
stateManagement: string;
|
|
13
13
|
}
|
|
14
14
|
export interface ProjectConfigsRuntimeConfig {
|
|
15
15
|
target: string;
|
|
16
|
-
rendering: string;
|
|
17
16
|
serverActions: string;
|
|
18
17
|
apiRoutes: string;
|
|
19
18
|
dataFetching: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configs.types.d.ts","sourceRoot":"","sources":["../../../src/types/index/configs.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,eAAe,EAAE,6BAA6B,CAAC;IAC/C,aAAa,EAAE,2BAA2B,CAAC;IAC3C,aAAa,EAAE,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"configs.types.d.ts","sourceRoot":"","sources":["../../../src/types/index/configs.types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,eAAe,EAAE,6BAA6B,CAAC;IAC/C,aAAa,EAAE,2BAA2B,CAAC;IAC3C,aAAa,EAAE,2BAA2B,CAAC;IAC3C,eAAe,EAAE,GAAG,CAAC;CACtB;AAED,MAAM,WAAW,6BAA6B;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,2BAA2B;IAC1C,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configs.types.js","sourceRoot":"","sources":["../../../src/types/index/configs.types.ts"],"names":[],"mappings":"","sourcesContent":["export interface ProjectConfigsConfig {\n frameworkConfig: ProjectConfigsFrameworkConfig;\n runtimeConfig: ProjectConfigsRuntimeConfig;\n toolingConfig: ProjectConfigsToolingConfig;\n}\n\nexport interface ProjectConfigsFrameworkConfig {\n name: string;\n router: string;\n language: string;\n
|
|
1
|
+
{"version":3,"file":"configs.types.js","sourceRoot":"","sources":["../../../src/types/index/configs.types.ts"],"names":[],"mappings":"","sourcesContent":["export interface ProjectConfigsConfig {\n frameworkConfig: ProjectConfigsFrameworkConfig;\n runtimeConfig: ProjectConfigsRuntimeConfig;\n toolingConfig: ProjectConfigsToolingConfig;\n renderingConfig: any;\n}\n\nexport interface ProjectConfigsFrameworkConfig {\n name: string;\n router: string;\n language: string;\n icons: string;\n styling: string;\n}\n\nexport interface ProjectConfigsRuntimeConfig {\n target: string;\n serverActions: string;\n apiRoutes: string;\n dataFetching: string;\n}\n\nexport interface ProjectConfigsToolingConfig {\n packageManager: string;\n linting: string;\n formatting: string;\n typecheck: string;\n testing: string;\n}\n"]}
|
|
@@ -1,16 +1,14 @@
|
|
|
1
|
-
import { projectConfigs
|
|
1
|
+
import { projectConfigs } from "../../indexer/data/configs.constants.js";
|
|
2
2
|
export type CodegenIndex = {
|
|
3
3
|
folderTree: string;
|
|
4
|
-
projectConfigs: Pick<typeof projectConfigs, "frameworkConfig" | "runtimeConfig">;
|
|
5
|
-
projectConventions: Pick<typeof projectConventions, "importsConventions" | "uiArchitecture">;
|
|
4
|
+
projectConfigs: Pick<typeof projectConfigs, "frameworkConfig" | "runtimeConfig" | "renderingConfig">;
|
|
6
5
|
};
|
|
7
6
|
export type PlannerIndex = {
|
|
8
7
|
folderTree: string;
|
|
9
|
-
projectConfigs: Pick<typeof projectConfigs, "frameworkConfig" | "runtimeConfig" | "toolingConfig">;
|
|
10
|
-
projectConventions: Pick<typeof projectConventions, "folderConventions" | "importsConventions" | "routingConventions" | "namingConventions">;
|
|
8
|
+
projectConfigs: Pick<typeof projectConfigs, "frameworkConfig" | "runtimeConfig" | "toolingConfig" | "renderingConfig">;
|
|
11
9
|
};
|
|
12
10
|
export type ValidatorIndex = {
|
|
13
11
|
folderTree: string;
|
|
14
|
-
projectConfigs: Pick<typeof projectConfigs, "frameworkConfig" | "runtimeConfig" | "toolingConfig">;
|
|
12
|
+
projectConfigs: Pick<typeof projectConfigs, "frameworkConfig" | "runtimeConfig" | "toolingConfig" | "renderingConfig">;
|
|
15
13
|
};
|
|
16
14
|
//# sourceMappingURL=index.types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.types.d.ts","sourceRoot":"","sources":["../../../src/types/index/index.types.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.types.d.ts","sourceRoot":"","sources":["../../../src/types/index/index.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAEzE,MAAM,MAAM,YAAY,GAAG;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,IAAI,CAClB,OAAO,cAAc,EACrB,iBAAiB,GAAG,eAAe,GAAG,iBAAiB,CACxD,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,IAAI,CAClB,OAAO,cAAc,EACrB,iBAAiB,GAAG,eAAe,GAAG,eAAe,GAAG,iBAAiB,CAC1E,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,IAAI,CAClB,OAAO,cAAc,EACrB,iBAAiB,GAAG,eAAe,GAAG,eAAe,GAAG,iBAAiB,CAC1E,CAAC;CACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.types.js","sourceRoot":"","sources":["../../../src/types/index/index.types.ts"],"names":[],"mappings":"","sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"index.types.js","sourceRoot":"","sources":["../../../src/types/index/index.types.ts"],"names":[],"mappings":"","sourcesContent":["import { projectConfigs } from \"../../indexer/data/configs.constants.js\";\r\n\r\nexport type CodegenIndex = {\r\n folderTree: string;\r\n projectConfigs: Pick<\r\n typeof projectConfigs,\r\n \"frameworkConfig\" | \"runtimeConfig\" | \"renderingConfig\"\r\n >;\r\n};\r\n\r\nexport type PlannerIndex = {\r\n folderTree: string;\r\n projectConfigs: Pick<\r\n typeof projectConfigs,\r\n \"frameworkConfig\" | \"runtimeConfig\" | \"toolingConfig\" | \"renderingConfig\"\r\n >;\r\n};\r\n\r\nexport type ValidatorIndex = {\r\n folderTree: string;\r\n projectConfigs: Pick<\r\n typeof projectConfigs,\r\n \"frameworkConfig\" | \"runtimeConfig\" | \"toolingConfig\" | \"renderingConfig\"\r\n >;\r\n};\r\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vedangiitb/qwintly-core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "Qwintly Core",
|
|
5
5
|
"homepage": "https://github.com/vedangiitb/qwintly-core#readme",
|
|
6
6
|
"bugs": {
|
|
@@ -41,6 +41,7 @@
|
|
|
41
41
|
"dependencies": {
|
|
42
42
|
"@supabase/supabase-js": "^2.105.1",
|
|
43
43
|
"@upstash/redis": "^1.37.0",
|
|
44
|
+
"nanoid": "^5.1.11",
|
|
44
45
|
"zod": "^4.3.6",
|
|
45
46
|
"zod-to-json-schema": "^3.25.2"
|
|
46
47
|
},
|