profound-logoProfound CMS
⌘K
Admin
Theme
DocsTutorialBlogPhilosophy
DocsTutorialBlogPhilosophy

Hybrid

Collection of Pages with ComponentsTypes of ComponentsSetup server sent events (SSE) content refetchAdminipaneeli puhverserveri seadistamineCEL Scripting in Template BuilderProject ScaffoldingMedia Library

Headless

KiirkÀivitusSplit Screen JSON Component Builder with LLMComponent Zod Pull

RESTi API

REST API OverviewgetConnect your websitegetMarsruutide hankiminegetGET /routegetGET /blocksgetGET /blocks/with-cel-cachegetGET /blocks/generatedgetGET /componentsgetGET /components/{name}getGET /dataset/{schema_name}getGET /content-changes (SSE)patchPATCH /dataset/{schema_name}postPOST /translationpatchPATCH /translationsgetGET /usagepostPOST /csvpatchPATCH /csv
All Systems Operational
Powered Byprofound-logo
Theme

Component Zod Pull

TÔmba oma komponentide Zodi kirjeldus kompileerimise ajal skripti abil

See funktsioon vĂ”imaldab saada oma komponendi kirjelduse tĂŒĂŒpturvalise „Zodi” kirjelduse kujul, mis pakub TS-eeskĂ€tt skeemi valideerimist ja staatilist tĂŒĂŒbijĂ€reldust sinu sisule.

https://zod.dev

Et tÔmmata meie Zodi skeem, laadime mÔned sÔltuvused ja loome skripti, mis kasutab mÔningaid tööriistu meie cms-rendererist.

Alustame oma projektistruktuurist

apps/
 web/
 app/
   page.tsx
 scripts/
   generate-schemas.ts // siin asub meie skript

NĂŒĂŒd muudame seda faili generated-schema.ts

import { fetchAllCustomSchemaFields, saveZodSchemaCode } from 'cms-renderer/lib/custom-schemas';
import { cmsConfig } from '../lib/cms-config'; // impordin oma konfiguratsiooni

async function main() {
  const { cmsUrl, websiteId, apiKey } = cmsConfig;

  if (!cmsUrl) {
    throw new Error(
      '[generate-schemas] NEXT_PUBLIC_CMS_API_URL ei ole mÀÀratud. MÀÀra see oma keskkonnas vÔi .env-failis.'
    );
  }
  if (!websiteId) {
    throw new Error(
      '[generate-schemas] NEXT_PUBLIC_PROFOUND_WEBSITE_ID ei ole mÀÀratud. MÀÀra see oma keskkonnas vÔi .env-failis.'
    );
  }
  if (!apiKey) {
    throw new Error(
      '[generate-schemas] PROFOUND_API_KEY ei ole mÀÀratud. MÀÀra see oma keskkonnas vÔi .env-failis.'
    );
  }

  const schemas = await fetchAllCustomSchemaFields({ cmsUrl, websiteId, apiKey });

  if (schemas.length === 0) {
    throw new Error(
      '[generate-schemas] API ei tagastanud ĂŒhtegi komponenti. Kontrolli, et PROFOUND_API_KEY oleks kehtiv ja osutaks Ă”igele veebisaidile.'
    );
  }

  await saveZodSchemaCode(schemas, './generated/cms-schemas.ts');

  console.log('[generate-schemas] Valmis.');
}

main().catch((err) => {
 console.error('[generate-schemas] Nurjus:', err);
  process.exit(1);
});

Sinu CmsConfig peaks vÀlja nÀgema jÀrgmine

export const cmsConfig = {
  cmsUrl: process.env.NEXT_PUBLIC_CMS_API_URL,
  apiKey: process.env.CMS_API_KEY,
  websiteId: '...',
};

Failis package.json mÀÀratleme, kuidas skripti kÀivitada, ning mÔned sÔltuvused

MÄRKUS: Kui sul ei ole tsconfig'it, vĂ”id --tsconfig lipu ja selle vÀÀrtuse eemaldada

{
  "name": "web",
  "version": "0.1.0",
  "type": "module",
  "private": true,
  "scripts": {
    "generate-schemas": "tsx --tsconfig tsconfig.json scripts/generate-schemas.ts",
    "...": "..."
  },
  "dependencies": {
    "cms-renderer": "0.3.1",
    "zod": "^4.3.6",
    "...": "..."
  },
  "devDependencies": {
    "tsx": "^4.21.0",
    "object-hash": "^3.0.0",
    "...": "..."
  }
}

NĂŒĂŒd, kui kĂ€ivitame

$ bun run generate-schemas
tsx --tsconfig tsconfig.json scripts/generate-schemas.ts
[generate-schemas] Valmis.

Peaksime saama sarnase vÀljundi ning nÀeme oma projektistruktuuris uut faili

apps/
 web/
 app/
   page.tsx
 scripts/
   generated-schema.ts // siin asub meie skript
 generated/
   cms-schema.ts // genereeritud Zodi skeem

Saad seda faili uurida ja nĂ€ha, milline sinu skeem vĂ€lja nĂ€eb. Selle faili uuendamiseks pead kĂ€su bun run generate-schemas uuesti kĂ€ivitama; selle saad ĂŒhendada oma dev- vĂ”i build-töövooga.

SeejÀrel saame need Zodi objektid faili page.tsx jÀrgmise nÀite abil tuua

import type { PetFoodPost, SiteConfig } from '@/generated/cms-schemas';
import { petFoodPostSchema } from '@/generated/cms-schemas';

// kutsu petFoodPostSchema.parse(obj), et objekte tĂŒĂŒpturvaliselt parsida

Saad oma komponenti adminpaneelis uuendada ning tÔmmata uuendatud skeemi uuesti, et arendus oleks lihtsam

Continue Reading
Previousâ€čSplit Screen JSON Component Builder with LLM