profound-logoProfound CMS
⌘K
Admin
Theme
DocsTutorialBlogPhilosophy
DocsTutorialBlogPhilosophy

Hybrid

Parametriskā maršrutēšanaKomponentu veidiSetup server sent events (SSE) content refetchIestatīt administratora paneļa starpniekserveriSkriptēšana veidņu veidotājāProject ScaffoldingMultivides bibliotēka

Headless

Ātrā uzsākšanaSplit Screen JSON Component Builder with LLMComponent Zod Pull

REST API

REST API OverviewgetConnect your websitegetSaņemt maršrutusgetGET /routegetGET /blocksgetGET /blocks/with-cel-cachegetGET /blocks/generatedgetGET /componentsgetGET /components/{name}getGET /dataset/{schema_name}getGET /content-changes (SSE)patchPATCH /dataset/{schema_name}postPēctulkošanapatchTulkojumu labojumigetGET /usagepostPOST /csvpatchPATCH /csv
All Systems Operational
Powered Byprofound-logo
Theme

Component Zod Pull

Iegūstiet savu komponentu Zod aprakstu kompilēšanas laikā, izmantojot skriptu

Šī funkcija ļauj iegūt jūsu komponenta aprakstu tipdrošā "Zod" apraksta formā, kas nodrošina TS-pirmo shēmas validāciju un statisku tipu inferenci jūsu saturam.

https://zod.dev

Lai iegūtu mūsu Zod shēmu, mēs ielādēsim dažas atkarības un izveidosim skriptu, kas izmanto dažus rīkus no mūsu cms-renderer.

Sāksim ar mūsu projekta struktūru

apps/
 web/
 app/
   page.tsx
 scripts/
   generate-schemas.ts // šeit atrodas mūsu skripts

Tagad rediģēsim šo generated-schema.ts failu

import { fetchAllCustomSchemaFields, saveZodSchemaCode } from 'cms-renderer/lib/custom-schemas';
import { cmsConfig } from '../lib/cms-config'; // importēju savu konfigurāciju

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

  if (!cmsUrl) {
    throw new Error(
      '[generate-schemas] NEXT_PUBLIC_CMS_API_URL nav iestatīts. Iestatiet to savā vidē vai .env failā.'
    );
  }
  if (!websiteId) {
    throw new Error(
      '[generate-schemas] NEXT_PUBLIC_PROFOUND_WEBSITE_ID nav iestatīts. Iestatiet to savā vidē vai .env failā.'
    );
  }
  if (!apiKey) {
    throw new Error(
      '[generate-schemas] PROFOUND_API_KEY nav iestatīts. Iestatiet to savā vidē vai .env failā.'
    );
  }

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

  if (schemas.length === 0) {
    throw new Error(
      '[generate-schemas] API neatgrieza nevienu komponentu. Pārbaudiet, vai PROFOUND_API_KEY ir derīgs un norāda uz pareizo vietni.'
    );
  }

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

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

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

Jūsu CmsConfig jāizskatās šādi

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

Failā package.json mēs definējam, kā palaist skriptu, un dažas atkarības

PIEZĪME: Ja jums nav tsconfig, varat noņemt karogu --tsconfig un tā vērtību

{
  "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",
    "...": "..."
  }
}

Tagad, kad mēs palaižam

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

Mums vajadzētu saņemt līdzīgu izvadi, un mēs redzam jaunu failu mūsu projekta struktūrā

apps/
 web/
 app/
   page.tsx
 scripts/
   generated-schema.ts // šeit atrodas mūsu skripts
 generated/
   cms-schema.ts // ģenerētā Zod shēma

Jūs varat to izpētīt un apskatīt, kā izskatās jūsu shēma. Lai atjauninātu šo failu, jums vēlreiz jāpalaiž komanda bun run generate-schemas, ko varat piesaistīt savai dev vai build darba plūsmai.

Pēc tam mēs varam ielādēt šos Zod objektus savā page.tsx failā šādi

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

// izsauciet petFoodPostSchema.parse(obj), lai tipdroši parsētu objektus

Varat atjaunināt savu komponentu administratora panelī un vēlreiz iegūt atjaunināto shēmu ērtai izstrādei

Continue Reading
Previous‹Split Screen JSON Component Builder with LLM