UNPKG

@patchworkdev/pdk

Version:

Patchwork Development Kit

51 lines (50 loc) 2.24 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.generateDemoPage = generateDemoPage; const promises_1 = __importDefault(require("fs/promises")); const path_1 = __importDefault(require("path")); const api_1 = require("../common/helpers/api"); const error_1 = require("../common/helpers/error"); const file_1 = require("../common/helpers/file"); const logger_1 = require("../common/helpers/logger"); const text_1 = require("../common/helpers/text"); async function generateDemoPage(configPath) { const configDir = path_1.default.dirname(configPath); const trpcRouter = path_1.default.join(configDir, 'ponder', 'src', 'generated', 'api.ts'); const demoFile = path_1.default.join(configDir, 'www', 'app', 'demo', 'page.tsx'); const apiStructure = (0, api_1.analyzeAPI)(trpcRouter); const demoFileArray = [`"use client";\n\nimport React from "react";\n`]; const components = []; for (let key in apiStructure) { if (key.includes('getPaginated')) { const entity = key.split('.')[0]; const component = `${(0, text_1.pascalCase)(entity)}List`; components.push(component); demoFileArray.push(`import ${component} from "../../src/generated/components/${component}";\n`); } } demoFileArray.push(` export default function Home() { return ( <main className="flex min-h-screen flex-col items-center justify-between p-24"> `); for (let component of components) { demoFileArray.push(` <${component} />\n`); } demoFileArray.push(` </main> ); }`); // Ensure the demo directory exists const demoDir = path_1.default.dirname(demoFile); try { await promises_1.default.mkdir(demoDir, { recursive: true }); } catch (error) { throw new error_1.PDKError(error_1.ErrorCode.DIR_NOT_FOUND, `Error creating demo directory at ${demoDir}`); } await (0, file_1.formatAndSaveFile)(demoFile, demoFileArray.join('')); logger_1.logger.info(`Demo page generated successfully at ${demoFile}`); }