@alphablue/content-model
v0.2.1
Published
Framework-neutral contracts and validation for AlphaBlue website content.
Readme
@alphablue/content-model
Website Portal 内容的 framework-neutral、版本化 contract。当前由此包统一拥有:
ArticleDocument的 block/mark 类型与 Zod schema;- locale body、title、excerpt、slug、status 的 validation;
- Content API 使用的
ArticleSummary、ArticleDetail、ArticlesPage; migrateArticleDocument()与未知版本错误;- 安全链接判断与 Article 图片引用收集。
它刻意不依赖 React、Astro、BlockNote、Cloudflare runtime 或数据库。编辑器 JSON、 渲染 HTML 与 Cloudflare Images delivery URL 都不是持久化 contract。
import {
articleDocumentSchema,
collectArticleImageIds,
migrateArticleDocument,
type ArticleDetail,
type ArticleDocument,
} from "@alphablue/content-model";
const document: ArticleDocument = articleDocumentSchema.parse(input);
const migrated = migrateArticleDocument(storedValue);
const imageIds = collectArticleImageIds(migrated);升级 document format 时,必须先增加显式 migration 和测试;不得让 consumer 静默忽略未知 version。
发布 gate
pnpm --filter @alphablue/content-model test
pnpm --filter @alphablue/content-model typecheck
pnpm --filter @alphablue/content-model build
pnpm --dir packages/content-model pack --pack-destination <temp-dir>此包必须先于 @alphablue/astro-site 发布。
License
MIT
