create-gardener 2.1.0 → 2.1.1

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 (61) hide show
  1. package/package.json +1 -1
  2. package/template/build/backend/controllers/gardener/addComponent.d.ts +0 -8
  3. package/template/build/backend/controllers/gardener/addComponent.d.ts.map +0 -1
  4. package/template/build/backend/controllers/gardener/addComponent.js +0 -19
  5. package/template/build/backend/controllers/gardener/addComponent.js.map +0 -1
  6. package/template/build/backend/controllers/gardener/addPage.d.ts +0 -3
  7. package/template/build/backend/controllers/gardener/addPage.d.ts.map +0 -1
  8. package/template/build/backend/controllers/gardener/addPage.js +0 -76
  9. package/template/build/backend/controllers/gardener/addPage.js.map +0 -1
  10. package/template/build/backend/controllers/gardener/createStatic.d.ts +0 -3
  11. package/template/build/backend/controllers/gardener/createStatic.d.ts.map +0 -1
  12. package/template/build/backend/controllers/gardener/createStatic.js +0 -61
  13. package/template/build/backend/controllers/gardener/createStatic.js.map +0 -1
  14. package/template/build/backend/controllers/gardener/imageOptimiser.d.ts +0 -3
  15. package/template/build/backend/controllers/gardener/imageOptimiser.d.ts.map +0 -1
  16. package/template/build/backend/controllers/gardener/imageOptimiser.js +0 -54
  17. package/template/build/backend/controllers/gardener/imageOptimiser.js.map +0 -1
  18. package/template/build/backend/controllers/gardener/index.d.ts +0 -6
  19. package/template/build/backend/controllers/gardener/index.d.ts.map +0 -1
  20. package/template/build/backend/controllers/gardener/index.js +0 -6
  21. package/template/build/backend/controllers/gardener/index.js.map +0 -1
  22. package/template/build/backend/controllers/gardener/saveTemplate.d.ts +0 -3
  23. package/template/build/backend/controllers/gardener/saveTemplate.d.ts.map +0 -1
  24. package/template/build/backend/controllers/gardener/saveTemplate.js +0 -36
  25. package/template/build/backend/controllers/gardener/saveTemplate.js.map +0 -1
  26. package/template/build/backend/libs/generateWebp.d.ts +0 -2
  27. package/template/build/backend/libs/generateWebp.d.ts.map +0 -1
  28. package/template/build/backend/libs/generateWebp.js +0 -18
  29. package/template/build/backend/libs/generateWebp.js.map +0 -1
  30. package/template/build/backend/routes/gardener.route.d.ts +0 -4
  31. package/template/build/backend/routes/gardener.route.d.ts.map +0 -1
  32. package/template/build/backend/routes/gardener.route.js +0 -13
  33. package/template/build/backend/routes/gardener.route.js.map +0 -1
  34. package/template/build/backend/server.d.ts +0 -2
  35. package/template/build/backend/server.d.ts.map +0 -1
  36. package/template/build/backend/server.js +0 -20
  37. package/template/build/backend/server.js.map +0 -1
  38. package/template/build/frontend/assets/favicon.png +0 -0
  39. package/template/build/frontend/assets/gardener.jpg +0 -0
  40. package/template/build/frontend/static/cache/favicon_500x500.webp +0 -0
  41. package/template/build/frontend/static/cache/favicon_50x50.webp +0 -0
  42. package/template/build/frontend/static/cache/gardener_500x500.webp +0 -0
  43. package/template/build/frontend/static/cache/gardener_50x50.webp +0 -0
  44. package/template/build/frontend/static/components/copybtn.js +0 -86
  45. package/template/build/frontend/static/components/nonui/api.js +0 -39
  46. package/template/build/frontend/static/components/nonui/navigation.js +0 -59
  47. package/template/build/frontend/static/components/notification.js +0 -67
  48. package/template/build/frontend/static/gardener.js +0 -89
  49. package/template/build/frontend/static/gardener.test.js +0 -364
  50. package/template/build/frontend/static/gardenerConfig.js +0 -1
  51. package/template/build/frontend/static/gardenerDev.js +0 -499
  52. package/template/build/frontend/static/global.js +0 -4
  53. package/template/build/frontend/static/pages/pages._.js +0 -20
  54. package/template/build/frontend/static/style.css +0 -2
  55. package/template/build/frontend/static/style2.css +0 -26
  56. package/template/build/frontend/static/zod.js +0 -8
  57. package/template/build/frontend/style.css +0 -1045
  58. package/template/build/frontend/tailwind.css +0 -1
  59. package/template/build/frontend/views/_.ejs +0 -121
  60. package/template/build/frontend/views/partials/icons/clipboard.ejs +0 -1
  61. package/template/build/frontend/views/partials/icons/clipboardok.ejs +0 -1
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "type": "git",
6
6
  "url": "https://github.com/ritishDas/gardener"
7
7
  },
8
- "version": "2.1.0",
8
+ "version": "2.1.1",
9
9
  "description": "A dom gardener converting dom elements into json and vice versa",
10
10
  "main": "index.js",
11
11
  "bin": {
@@ -1,8 +0,0 @@
1
- import type { Request, Response } from "express";
2
- interface AddComponentBody {
3
- path: string;
4
- component: string;
5
- }
6
- export declare function addComponent(req: Request<{}, {}, AddComponentBody>, res: Response): Promise<void>;
7
- export {};
8
- //# sourceMappingURL=addComponent.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"addComponent.d.ts","sourceRoot":"","sources":["../../../../src/backend/controllers/gardener/addComponent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAIjD,UAAU,gBAAgB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAQD,wBAAsB,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,gBAAgB,CAAC,EAAE,GAAG,EAAE,QAAQ,iBAWvF"}
@@ -1,19 +0,0 @@
1
- import fsp from "fs/promises";
2
- import path from 'path';
3
- import { fileURLToPath } from "url";
4
- const __filename = fileURLToPath(import.meta.url);
5
- const __dirname = path.dirname(__filename);
6
- const frontendDir = path.resolve(__dirname, '..', '..', '..', 'frontend');
7
- export async function addComponent(req, res) {
8
- try {
9
- const { path: filePath, component } = req.body;
10
- await fsp.mkdir(path.join(frontendDir, 'static', 'components'), { recursive: true });
11
- await fsp.writeFile(path.join(frontendDir, `${filePath}`), component, "utf8");
12
- res.json({ success: true });
13
- }
14
- catch (err) {
15
- const error = err;
16
- res.json({ success: false, msg: error.message });
17
- }
18
- }
19
- //# sourceMappingURL=addComponent.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"addComponent.js","sourceRoot":"","sources":["../../../../src/backend/controllers/gardener/addComponent.ts"],"names":[],"mappings":"AACA,OAAO,GAAG,MAAM,aAAa,CAAC;AAC9B,OAAO,IAAI,MAAM,MAAM,CAAC;AAOxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;AAE1E,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAsC,EAAE,GAAa;IACtF,IAAI,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QAC/C,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACrF,MAAM,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAC9E,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAE9B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,KAAK,GAAG,GAAY,CAAC;QAC3B,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACnD,CAAC;AACH,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { Request, Response } from "express";
2
- export declare function addPage(req: Request, res: Response): Promise<void>;
3
- //# sourceMappingURL=addPage.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"addPage.d.ts","sourceRoot":"","sources":["../../../../src/backend/controllers/gardener/addPage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AA2CjD,wBAAsB,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,iBAkCxD"}
@@ -1,76 +0,0 @@
1
- import fsp from "fs/promises";
2
- import { access } from "fs/promises";
3
- import path from 'path';
4
- import { fileURLToPath } from "url";
5
- const __filename = fileURLToPath(import.meta.url);
6
- const __dirname = path.dirname(__filename);
7
- const frontendDir = path.resolve(__dirname, '..', '..', '..', 'frontend');
8
- const templateDir = path.join(frontendDir, 'template');
9
- async function findTemplate(fileName) {
10
- while (fileName.length !== 0) {
11
- console.log(fileName);
12
- const searchFile = `template.${fileName}.ejs`;
13
- console.log(searchFile);
14
- const searchPath = path.join(templateDir, searchFile);
15
- console.log(searchPath);
16
- try {
17
- await access(searchPath); // ✅ checks if file exists
18
- return searchPath; // return full path immediately
19
- }
20
- catch {
21
- // file does not exist → continue
22
- }
23
- let lastUnderscore = fileName.lastIndexOf('_');
24
- if (lastUnderscore === -1)
25
- break;
26
- if (lastUnderscore === 0)
27
- lastUnderscore += 1;
28
- fileName = fileName.substring(0, lastUnderscore);
29
- console.log(fileName);
30
- }
31
- // ❗ explicit failure instead of silent bug
32
- throw new Error("Template not found");
33
- }
34
- export async function addPage(req, res) {
35
- try {
36
- const pagename = req.body.page;
37
- const name = pagename.replaceAll('/', '_');
38
- const templatePath = await findTemplate(name); //path.join(frontendDir, findTemplate(name)); //path.join(frontendDir, 'frontendtemplate.ejs');
39
- const viewPath = path.join(frontendDir, `views`, `${name}.ejs`);
40
- const routePath = path.resolve(__dirname, '..', '..', 'routes', 'gardener.route.ts');
41
- const jsDir = path.join(frontendDir, 'static/pages');
42
- const jsFilePath = path.join(jsDir, `pages.${name}.js`);
43
- const templateContent = await fsp.readFile(templatePath, 'utf8');
44
- await fsp.writeFile(viewPath, templateContent, "utf8");
45
- await replaceLastOccurrence(viewPath, '<script', `<script src="/static/pages/pages.${name}.js" type='module'></script>`);
46
- const routeEntry = `router.route("${pagename}").get((req: Request, res: Response) => res.render("${name}",{fileName:"${name}"}));\n`;
47
- await fsp.appendFile(routePath, routeEntry, "utf8");
48
- await fsp.mkdir(jsDir, { recursive: true });
49
- const jsContent = 'import { gardener, fetchElement, replaceElement, appendElement } from "/static/gardener.js";\n import {log, parser, addEl, State} from "/static/gardenerDev.js"';
50
- await fsp.writeFile(jsFilePath, jsContent, "utf8");
51
- res.json({ success: true });
52
- }
53
- catch (err) {
54
- const error = err;
55
- res.json({ success: false, msg: error.message });
56
- }
57
- }
58
- async function replaceLastOccurrence(filePath, searchPattern, replacementLine) {
59
- const content = await fsp.readFile(filePath, 'utf8');
60
- const lines = content.split('\n');
61
- let found = false;
62
- for (let i = lines.length - 1; i >= 0; i--) {
63
- if (lines[i].includes(searchPattern)) {
64
- lines[i] = `${replacementLine}\n${lines[i]}`;
65
- found = true;
66
- break;
67
- }
68
- }
69
- if (found) {
70
- await fsp.writeFile(filePath, lines.join('\n'), 'utf8');
71
- }
72
- else {
73
- console.warn(`Pattern "${searchPattern}" not found in ${filePath}`);
74
- }
75
- }
76
- //# sourceMappingURL=addPage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"addPage.js","sourceRoot":"","sources":["../../../../src/backend/controllers/gardener/addPage.ts"],"names":[],"mappings":"AACA,OAAO,GAAG,MAAM,aAAa,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;AAC1E,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;AAIvD,KAAK,UAAU,YAAY,CAAC,QAAgB;IAC1C,OAAO,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAE7B,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACrB,MAAM,UAAU,GAAG,YAAY,QAAQ,MAAM,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QACvB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAEtD,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QACvB,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,0BAA0B;YACpD,OAAO,UAAU,CAAC,CAAQ,+BAA+B;QAC3D,CAAC;QAAC,MAAM,CAAC;YACP,iCAAiC;QACnC,CAAC;QAED,IAAI,cAAc,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC/C,IAAI,cAAc,KAAK,CAAC,CAAC;YAAE,MAAM;QAEjC,IAAI,cAAc,KAAK,CAAC;YAAE,cAAc,IAAI,CAAC,CAAC;QAE9C,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACxB,CAAC;IAED,2CAA2C;IAC3C,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,GAAY,EAAE,GAAa;IACvD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAW,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;QACvC,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAI3C,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC,CAAA,+FAA+F;QAK7I,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC;QAChE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;QACrF,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QACrD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,IAAI,KAAK,CAAC,CAAC;QAExD,MAAM,eAAe,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QACjE,MAAM,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC;QAEvD,MAAM,qBAAqB,CAAC,QAAQ,EAAE,SAAS,EAAE,oCAAoC,IAAI,8BAA8B,CAAC,CAAC;QAEzH,MAAM,UAAU,GAAG,iBAAiB,QAAQ,uDAAuD,IAAI,gBAAgB,IAAI,SAAS,CAAC;QACrI,MAAM,GAAG,CAAC,UAAU,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAEpD,MAAM,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,MAAM,SAAS,GAAG,iKAAiK,CAAC;QACpL,MAAM,GAAG,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAEnD,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,KAAK,GAAG,GAAY,CAAC;QAC3B,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACnD,CAAC;AACH,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,QAAgB,EAAE,aAAqB,EAAE,eAAuB;IACnG,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,KAAK,GAAG,KAAK,CAAC;IAElB,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAE3C,IAAI,KAAK,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YACtC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,eAAe,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7C,KAAK,GAAG,IAAI,CAAC;YACb,MAAM;QACR,CAAC;IACH,CAAC;IAED,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;IAC1D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC,YAAY,aAAa,kBAAkB,QAAQ,EAAE,CAAC,CAAC;IACtE,CAAC;AACH,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { Request, Response } from "express";
2
- export declare function createStatic(req: Request, res: Response): Promise<Response<any, Record<string, any>>>;
3
- //# sourceMappingURL=createStatic.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createStatic.d.ts","sourceRoot":"","sources":["../../../../src/backend/controllers/gardener/createStatic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAWjD,wBAAsB,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,+CAwE7D"}
@@ -1,61 +0,0 @@
1
- import path from "path";
2
- import fsp from "fs/promises";
3
- import ejs from "ejs";
4
- import { fileURLToPath } from "url";
5
- const __filename = fileURLToPath(import.meta.url);
6
- const __dirname = path.dirname(__filename);
7
- const frontendDir = path.resolve(__dirname, '..', '..', '..', 'frontend');
8
- export async function createStatic(req, res) {
9
- try {
10
- const viewsDir = path.join(frontendDir, "views");
11
- const outDir = path.resolve("src/tempfrontend");
12
- const finalOut = path.resolve("src/frontendStatic");
13
- await fsp.mkdir(outDir, { recursive: true });
14
- await fsp.mkdir(finalOut, { recursive: true });
15
- const entries = await fsp.readdir(viewsDir, { withFileTypes: true });
16
- const rendered = [];
17
- for (const entry of entries) {
18
- // skip folders (partials, layouts, etc.)
19
- if (!entry.isFile())
20
- continue;
21
- if (!entry.name.endsWith(".ejs"))
22
- continue;
23
- const inputPath = path.join(viewsDir, entry.name);
24
- const outputName = entry.name.replace(/\.ejs$/, ".html");
25
- const outputPath = path.join(outDir, outputName);
26
- const html = await ejs.renderFile(inputPath, {}, {
27
- // async: true,
28
- views: [viewsDir], // needed for includes
29
- });
30
- await fsp.writeFile(outputPath, html, "utf8");
31
- rendered.push(outputName);
32
- }
33
- const entries3 = await fsp.readdir(outDir, { withFileTypes: true });
34
- for (const entry of entries3) {
35
- // "_path1_path2_path3.html" -> ["path1", "path2", "path3"]
36
- const parts = entry.name
37
- .replace(/^_/, "")
38
- .replace(/\.html$/, "")
39
- .split("_");
40
- const targetDir = path.join(finalOut, ...parts);
41
- const targetFile = path.join(targetDir, "index.html");
42
- // ensure directories exist
43
- await fsp.mkdir(targetDir, { recursive: true });
44
- console.log('done');
45
- // copy file
46
- await fsp.copyFile(path.join(outDir, entry.name), targetFile);
47
- }
48
- await fsp.rm(outDir, { recursive: true, force: true });
49
- await fsp.cp(path.join(frontendDir, "static"), path.join(finalOut, 'static'), { recursive: true });
50
- return res.json({
51
- success: true,
52
- generated: rendered,
53
- outDir,
54
- });
55
- }
56
- catch (err) {
57
- console.error(err);
58
- return res.status(500).json({ error: "Static build failed" });
59
- }
60
- }
61
- //# sourceMappingURL=createStatic.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createStatic.js","sourceRoot":"","sources":["../../../../src/backend/controllers/gardener/createStatic.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,GAAG,MAAM,aAAa,CAAC;AAC9B,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;AAE1E,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAY,EAAE,GAAa;IAC5D,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QAEpD,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,MAAM,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE/C,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAErE,MAAM,QAAQ,GAAa,EAAE,CAAC;QAG9B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,yCAAyC;YACzC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;gBAAE,SAAS;YAC9B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,SAAS;YAE3C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAClD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACzD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YAEjD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,UAAU,CAC/B,SAAS,EACT,EACC,EACD;gBACE,eAAe;gBACf,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,sBAAsB;aAC1C,CACF,CAAC;YAEF,MAAM,GAAG,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YAC9C,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5B,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QACpE,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;YAE7B,2DAA2D;YAC3D,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI;iBACrB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;iBACjB,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;iBACtB,KAAK,CAAC,GAAG,CAAC,CAAC;YAEd,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC,CAAC;YAChD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;YAEtD,2BAA2B;YAC3B,MAAM,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpB,YAAY;YACZ,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC;QAEhE,CAAC;QACD,MAAM,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACvD,MAAM,GAAG,CAAC,EAAE,CACV,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,EAChC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAC7B,EAAE,SAAS,EAAE,IAAI,EAAE,CACpB,CAAC;QAEF,OAAO,GAAG,CAAC,IAAI,CAAC;YACd,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,QAAQ;YACnB,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC,CAAC;IAChE,CAAC;AACH,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { Request, Response } from "express";
2
- export declare function imageOptimiser(req: Request, res: Response): Promise<void | Response<any, Record<string, any>>>;
3
- //# sourceMappingURL=imageOptimiser.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"imageOptimiser.d.ts","sourceRoot":"","sources":["../../../../src/backend/controllers/gardener/imageOptimiser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAWjD,wBAAsB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,sDAuD/D"}
@@ -1,54 +0,0 @@
1
- import fsp from "fs/promises";
2
- import path from "path";
3
- import generateWebP from "../../libs/generateWebp.js";
4
- import { fileURLToPath } from "url";
5
- const __filename = fileURLToPath(import.meta.url);
6
- const __dirname = path.dirname(__filename);
7
- export async function imageOptimiser(req, res) {
8
- try {
9
- const { name } = req.params;
10
- if (typeof name !== 'string')
11
- return res.status(400).json({ success: false, message: "invalid path" });
12
- // name format: test_500x300.webp
13
- const match = name.match(/^(.+?)_(\d+)x(\d+)\.webp$/);
14
- if (!match) {
15
- return res.status(400).json({ error: "Invalid image format" });
16
- }
17
- const [, baseName, widthStr, heightStr] = match;
18
- if (!widthStr || !heightStr)
19
- return;
20
- const width = parseInt(widthStr, 10);
21
- const height = parseInt(heightStr, 10);
22
- const cacheDir = path.join(__dirname, "..", "..", "..", "frontend", "static", "cache");
23
- await fsp.mkdir(cacheDir, { recursive: true });
24
- const outputPath = path.join(cacheDir, name);
25
- try {
26
- await fsp.access(outputPath);
27
- return res.sendFile(path.basename(outputPath), {
28
- root: path.dirname(outputPath),
29
- });
30
- }
31
- catch {
32
- // not cached → continue
33
- }
34
- const assetsDir = path.resolve(__dirname, '..', '..', '..', "frontend", "assets");
35
- const files = await fsp.readdir(assetsDir);
36
- const sourceFile = files.find((file) => {
37
- const parsed = path.parse(file);
38
- return parsed.name === baseName;
39
- });
40
- if (!sourceFile) {
41
- return res.status(404).json({ error: "Source image not found" });
42
- }
43
- const inputPath = path.join(assetsDir, sourceFile);
44
- await generateWebP(inputPath, outputPath, width, height);
45
- return res.sendFile(path.basename(outputPath), {
46
- root: path.dirname(outputPath),
47
- });
48
- }
49
- catch (err) {
50
- console.error(err);
51
- return res.status(500).json({ error: "Image optimisation failed" });
52
- }
53
- }
54
- //# sourceMappingURL=imageOptimiser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"imageOptimiser.js","sourceRoot":"","sources":["../../../../src/backend/controllers/gardener/imageOptimiser.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- export * from './imageOptimiser.js';
2
- export * from './addPage.js';
3
- export * from './createStatic.js';
4
- export * from './addComponent.js';
5
- export * from './saveTemplate.js';
6
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/backend/controllers/gardener/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC"}
@@ -1,6 +0,0 @@
1
- export * from './imageOptimiser.js';
2
- export * from './addPage.js';
3
- export * from './createStatic.js';
4
- export * from './addComponent.js';
5
- export * from './saveTemplate.js';
6
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/backend/controllers/gardener/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { Request, Response } from "express";
2
- export declare function saveTemplate(req: Request, res: Response): Promise<Response<any, Record<string, any>>>;
3
- //# sourceMappingURL=saveTemplate.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"saveTemplate.d.ts","sourceRoot":"","sources":["../../../../src/backend/controllers/gardener/saveTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAWjD,wBAAsB,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,+CA8B7D"}
@@ -1,36 +0,0 @@
1
- import fsp from "fs/promises";
2
- import path from "path";
3
- import { fileURLToPath } from "url";
4
- const __filename = fileURLToPath(import.meta.url);
5
- const __dirname = path.dirname(__filename);
6
- const frontendDir = path.resolve(__dirname, "..", "..", "..", "frontend");
7
- const templateDir = path.join(frontendDir, "template");
8
- export async function saveTemplate(req, res) {
9
- try {
10
- const { path: reqPath } = req.body; // ✅ renamed
11
- const name = reqPath;
12
- const sourceFile = path.join(frontendDir, 'views', `${name}.ejs`);
13
- const sourceFileContent = await fsp.readFile(sourceFile, "utf-8");
14
- const targetFileContent = replaceLastOccurrence(sourceFileContent, `/static/pages/pages.${name}.js`, "");
15
- // ✅ ensure directory exists
16
- await fsp.mkdir(templateDir, { recursive: true });
17
- await fsp.writeFile(path.join(templateDir, `template.${name}.ejs`), targetFileContent, "utf-8");
18
- return res.json({ message: "Template Saved Successfully" });
19
- }
20
- catch (err) {
21
- console.error(err);
22
- return res.status(500).json({ message: "Something went wrong" });
23
- }
24
- }
25
- function replaceLastOccurrence(content, searchPattern, replacementLine) {
26
- const lines = content.split("\n");
27
- for (let i = lines.length - 1; i >= 0; i--) {
28
- if (lines[i].includes(searchPattern)) {
29
- lines[i] = replacementLine; // ✅ replace cleanly
30
- return lines.join("\n"); // ✅ return result
31
- }
32
- }
33
- console.warn(`Pattern not found: ${searchPattern}`);
34
- return content; // fallback
35
- }
36
- //# sourceMappingURL=saveTemplate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"saveTemplate.js","sourceRoot":"","sources":["../../../../src/backend/controllers/gardener/saveTemplate.ts"],"names":[],"mappings":"AACA,OAAO,GAAG,MAAM,aAAa,CAAC;AAC9B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;AAC1E,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;AAEvD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAY,EAAE,GAAa;IAC5D,IAAI,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,YAAY;QAEhD,MAAM,IAAI,GAAG,OAAO,CAAC;QAErB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC;QAElE,MAAM,iBAAiB,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAElE,MAAM,iBAAiB,GAAG,qBAAqB,CAC7C,iBAAiB,EACjB,uBAAuB,IAAI,KAAK,EAChC,EAAE,CACH,CAAC;QAEF,4BAA4B;QAC5B,MAAM,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAElD,MAAM,GAAG,CAAC,SAAS,CACjB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,IAAI,MAAM,CAAC,EAC9C,iBAAiB,EACjB,OAAO,CACR,CAAC;QAEF,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC,CAAC;IAC9D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC,CAAC;IACnE,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAC5B,OAAe,EACf,aAAqB,EACrB,eAAuB;IAEvB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAElC,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,IAAI,KAAK,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YACtC,KAAK,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,oBAAoB;YAChD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAI,kBAAkB;QAChD,CAAC;IACH,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,sBAAsB,aAAa,EAAE,CAAC,CAAC;IACpD,OAAO,OAAO,CAAC,CAAC,WAAW;AAC7B,CAAC"}
@@ -1,2 +0,0 @@
1
- export default function generateWebP(inputPath: string, outputPath: string, width: number, height: number): Promise<void>;
2
- //# sourceMappingURL=generateWebp.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generateWebp.d.ts","sourceRoot":"","sources":["../../../src/backend/libs/generateWebp.ts"],"names":[],"mappings":"AAIA,wBAA8B,YAAY,CACxC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAgBf"}
@@ -1,18 +0,0 @@
1
- import path from "path";
2
- import fsp from "fs/promises";
3
- import sharp from "sharp";
4
- export default async function generateWebP(inputPath, outputPath, width, height) {
5
- const cacheDir = path.dirname(outputPath);
6
- await fsp.mkdir(cacheDir, { recursive: true });
7
- console.log(`Processing image: ${inputPath}`);
8
- console.log(`Output path: ${outputPath}`);
9
- await sharp(inputPath)
10
- .resize(width, height, {
11
- fit: "inside",
12
- withoutEnlargement: true,
13
- })
14
- .webp({ quality: 100 })
15
- .toFile(outputPath);
16
- console.log("✅ Image successfully generated");
17
- }
18
- //# sourceMappingURL=generateWebp.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generateWebp.js","sourceRoot":"","sources":["../../../src/backend/libs/generateWebp.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,GAAG,MAAM,aAAa,CAAC;AAC9B,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,YAAY,CACxC,SAAiB,EACjB,UAAkB,EAClB,KAAa,EACb,MAAc;IAEd,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC1C,MAAM,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE/C,OAAO,CAAC,GAAG,CAAC,qBAAqB,SAAS,EAAE,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,gBAAgB,UAAU,EAAE,CAAC,CAAC;IAE1C,MAAM,KAAK,CAAC,SAAS,CAAC;SACnB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE;QACrB,GAAG,EAAE,QAAQ;QACb,kBAAkB,EAAE,IAAI;KACzB,CAAC;SACD,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;SACtB,MAAM,CAAC,UAAU,CAAC,CAAC;IAEtB,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;AAChD,CAAC"}
@@ -1,4 +0,0 @@
1
- import { Router } from "express";
2
- declare const router: Router;
3
- export default router;
4
- //# sourceMappingURL=gardener.route.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gardener.route.d.ts","sourceRoot":"","sources":["../../../src/backend/routes/gardener.route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGjC,QAAA,MAAM,MAAM,EAAE,MAAiB,CAAC;AAChC,eAAe,MAAM,CAAC"}
@@ -1,13 +0,0 @@
1
- import { Router } from "express";
2
- import { addComponent, addPage, createStatic, imageOptimiser, saveTemplate } from "../controllers/gardener/index.js";
3
- const router = Router();
4
- export default router;
5
- router.route("/static/cache/:name").get(imageOptimiser);
6
- if (process.env.NODE_ENV !== 'production') {
7
- router.route("/createstatic").get(createStatic);
8
- router.route('/addcomponent').post(addComponent);
9
- router.route('/addpage').post(addPage);
10
- router.route('/savetemplate').post(saveTemplate);
11
- }
12
- router.route('/').get((req, res) => res.render('_', { fileName: '_' }));
13
- //# sourceMappingURL=gardener.route.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gardener.route.js","sourceRoot":"","sources":["../../../src/backend/routes/gardener.route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAErH,MAAM,MAAM,GAAW,MAAM,EAAE,CAAC;AAChC,eAAe,MAAM,CAAC;AAKtB,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AAExD,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;IAC1C,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAChD,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACjD,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACnD,CAAC;AAMD,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- import 'dotenv/config';
2
- //# sourceMappingURL=server.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/backend/server.ts"],"names":[],"mappings":"AACA,OAAO,eAAe,CAAC"}
@@ -1,20 +0,0 @@
1
- // server.ts
2
- import 'dotenv/config';
3
- import express from 'express';
4
- import frontendRoute from './routes/gardener.route.js';
5
- import path from "path";
6
- const app = express();
7
- import { fileURLToPath } from "url";
8
- const __filename = fileURLToPath(import.meta.url);
9
- const __dirname = path.dirname(__filename);
10
- const staticFiles = path.resolve(__dirname, '..', 'frontend');
11
- app.set('views', path.join(staticFiles, 'views'));
12
- app.set("view engine", "ejs");
13
- app.use(express.static(staticFiles));
14
- app.use(express.json());
15
- app.use(frontendRoute);
16
- const PORT = process.env.PORT || 3000;
17
- app.listen(PORT, () => {
18
- console.log("server listening 🚀🚀🚀 PORT:", PORT);
19
- });
20
- //# sourceMappingURL=server.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/backend/server.ts"],"names":[],"mappings":"AAAA,YAAY;AACZ,OAAO,eAAe,CAAC;AACvB,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,aAAa,MAAM,4BAA4B,CAAA;AACtD,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;AAGtB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,UAAU,CAAC,CAAA;AAE7D,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;AAClD,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;AAC9B,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;AACrC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AACxB,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AAEvB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC;AAEtC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;IACpB,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,IAAI,CAAC,CAAC;AACrD,CAAC,CAAC,CAAC"}
@@ -1,86 +0,0 @@
1
-
2
- import { gardener, fetchElement, replaceElement } from '../gardener.js'
3
-
4
- export function copybtn() {
5
- return gardener({
6
- "t": "button",
7
- "cn": [
8
- "copybtn",
9
- "flex",
10
- "items-center",
11
- "justify-center",
12
- "p-2",
13
- "text-gray-400",
14
- "hover:text-white",
15
- "hover:bg-white/10",
16
- "rounded",
17
- "transition-all",
18
- "duration-200",
19
- "active:scale-95"
20
- ],
21
- "attr": {
22
- "title": "Copy to clipboard"
23
- },
24
- "children": [
25
- {
26
- "t": "span",
27
- "cn": [
28
- "w-5",
29
- "h-5"
30
- ],
31
- "children": [
32
- {
33
- "t": "svg",
34
- "cn": [
35
- "icon",
36
- "icon-tabler",
37
- "icons-tabler-outline",
38
- "icon-tabler-clipboard-check"
39
- ],
40
- "attr": {
41
- "xmlns": "http://www.w3.org/2000/svg",
42
- "width": "24",
43
- "height": "24",
44
- "viewBox": "0 0 24 24",
45
- "fill": "none",
46
- "stroke": "currentColor",
47
- "stroke-width": "2",
48
- "stroke-linecap": "round",
49
- "stroke-linejoin": "round"
50
- },
51
- "children": [
52
- {
53
- "t": "path",
54
- "attr": {
55
- "stroke": "none",
56
- "d": "M0 0h24v24H0z",
57
- "fill": "none"
58
- }
59
- },
60
- {
61
- "t": "path",
62
- "attr": {
63
- "d": "M9 5h-2a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-12a2 2 0 0 0 -2 -2h-2"
64
- }
65
- },
66
- {
67
- "t": "path",
68
- "attr": {
69
- "d": "M9 5a2 2 0 0 1 2 -2h2a2 2 0 0 1 2 2a2 2 0 0 1 -2 2h-2a2 2 0 0 1 -2 -2"
70
- }
71
- },
72
- {
73
- "t": "path",
74
- "attr": {
75
- "d": "M9 14l2 2l4 -4"
76
- }
77
- }
78
- ]
79
- }
80
- ]
81
- }
82
- ]
83
- })
84
- }
85
-
86
-
@@ -1,39 +0,0 @@
1
- const baseName = '';
2
-
3
- export async function Fetch(
4
- path,
5
- body,
6
- method = 'POST'
7
- ) {
8
-
9
- try {
10
-
11
- const headers = {
12
- "Content-Type": "application/json",
13
- "ngrok-skip-browser-warning": 'true'
14
- // "Authorization": 'Bearer ' + auth
15
- }
16
- let res;
17
- if (method === 'GET' || method === 'DELETE')
18
- res = await fetch(baseName + path, {
19
- credentials: "include",
20
- headers: headers,
21
- method,
22
- });
23
-
24
- else
25
- res = await fetch(baseName + path, {
26
- credentials: "include",
27
- headers: headers,
28
- method,
29
- body: JSON.stringify(body),
30
- });
31
-
32
-
33
-
34
- return res
35
- }
36
- catch (err) {
37
- console.log(err)
38
- }
39
- }