@commonpub/schema 0.16.0 → 0.18.0
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.
- package/README.md +2 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/layout.d.ts +698 -0
- package/dist/layout.d.ts.map +1 -0
- package/dist/layout.js +148 -0
- package/dist/layout.js.map +1 -0
- package/dist/openapi.d.ts.map +1 -1
- package/dist/openapi.js +122 -0
- package/dist/openapi.js.map +1 -1
- package/dist/sectionConfigs.d.ts +207 -0
- package/dist/sectionConfigs.d.ts.map +1 -0
- package/dist/sectionConfigs.js +179 -0
- package/dist/sectionConfigs.js.map +1 -0
- package/dist/validators.d.ts +509 -2
- package/dist/validators.d.ts.map +1 -1
- package/dist/validators.js +185 -0
- package/dist/validators.js.map +1 -1
- package/migrations/0005_wonderful_blue_marvel.sql +64 -0
- package/migrations/meta/0005_snapshot.json +10607 -0
- package/migrations/meta/_journal.json +7 -0
- package/package.json +1 -1
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-section Zod config schemas — the source-of-truth for what shapes
|
|
3
|
+
* each registered section's `config` blob may take.
|
|
4
|
+
*
|
|
5
|
+
* Lives in `@commonpub/schema` rather than `layers/base/sections/builtin/`
|
|
6
|
+
* so the server's Nitro bundle can import them WITHOUT pulling in the
|
|
7
|
+
* registry, which transitively imports `.vue` component files. The
|
|
8
|
+
* layer's section registry (see `layers/base/sections/registry.ts`)
|
|
9
|
+
* imports from here too so there's exactly one source.
|
|
10
|
+
*
|
|
11
|
+
* Each section ships:
|
|
12
|
+
* - a named `{type}ConfigSchema` Zod schema (the wire contract)
|
|
13
|
+
* - a TS type alias inferred from it (consumer convenience)
|
|
14
|
+
*
|
|
15
|
+
* The `SECTION_CONFIG_SCHEMAS` map at the bottom is the canonical
|
|
16
|
+
* type → schema lookup used by `validateSectionConfigs` server-side.
|
|
17
|
+
*
|
|
18
|
+
* Adding a new section:
|
|
19
|
+
* 1. Define + export `{type}ConfigSchema` here
|
|
20
|
+
* 2. Add it to `SECTION_CONFIG_SCHEMAS`
|
|
21
|
+
* 3. Add the section definition in `layers/base/sections/builtin/{type}.ts`
|
|
22
|
+
* importing the schema from here
|
|
23
|
+
* 4. Register in `layers/base/sections/registry.ts`
|
|
24
|
+
*
|
|
25
|
+
* Provenance: extracted from `layers/base/sections/builtin/*.ts` in
|
|
26
|
+
* session 161 to close R2's deferred per-section validation. Behavior
|
|
27
|
+
* preserved exactly — same `.max()`, `.min()`, `.regex()`, `.default()`
|
|
28
|
+
* chains as the inline versions they replace.
|
|
29
|
+
*/
|
|
30
|
+
import { z } from 'zod';
|
|
31
|
+
// ---------------------------------------------------------------------------
|
|
32
|
+
// Shared URL regex constants
|
|
33
|
+
//
|
|
34
|
+
// Empty-string variants use the explicit `$` branch (NOT empty-alternation
|
|
35
|
+
// like `(?:|...|...)`) — empty alternation matches ANY string at position 0,
|
|
36
|
+
// which caught a XSS payload accepting `javascript:` in session 158.
|
|
37
|
+
// See `feedback-regex-empty-alternation` memory.
|
|
38
|
+
// ---------------------------------------------------------------------------
|
|
39
|
+
/**
|
|
40
|
+
* Anchor-style link: http(s), root-relative, fragment, mailto, tel.
|
|
41
|
+
* Must be non-empty — pair with `.min(1)`. Used by cta + hero CTA hrefs.
|
|
42
|
+
*
|
|
43
|
+
* No `URL_LINK_OR_EMPTY` counterpart exists: every current caller pairs
|
|
44
|
+
* the regex with `.min(1)`, which makes the empty branch dead. If a
|
|
45
|
+
* future caller needs the optional variant, add it back then.
|
|
46
|
+
*/
|
|
47
|
+
export const URL_LINK_STRICT = /^(https?:\/\/|\/|#|mailto:|tel:)/i;
|
|
48
|
+
/** Media src: http(s) or root-relative path or empty. */
|
|
49
|
+
export const URL_MEDIA_OR_EMPTY = /^(?:$|https?:\/\/|\/)/i;
|
|
50
|
+
/** Strict http(s) only or empty — for embeds where loose paths shouldn't apply. */
|
|
51
|
+
export const URL_HTTPS_OR_EMPTY = /^(?:$|https?:\/\/)/i;
|
|
52
|
+
// ---------------------------------------------------------------------------
|
|
53
|
+
// Layout — divider, heading, paragraph
|
|
54
|
+
// ---------------------------------------------------------------------------
|
|
55
|
+
export const dividerConfigSchema = z.object({
|
|
56
|
+
variant: z.enum(['solid', 'dashed', 'dotted', 'accent']).default('solid'),
|
|
57
|
+
spacingY: z.enum(['sm', 'md', 'lg', 'xl']).default('md'),
|
|
58
|
+
});
|
|
59
|
+
export const headingConfigSchema = z.object({
|
|
60
|
+
level: z.union([z.literal(1), z.literal(2), z.literal(3), z.literal(4), z.literal(5), z.literal(6)]).default(2),
|
|
61
|
+
text: z.string().min(1).max(240).default('Section heading'),
|
|
62
|
+
});
|
|
63
|
+
export const paragraphConfigSchema = z.object({
|
|
64
|
+
html: z.string().max(8000).default('<p>Paragraph body.</p>'),
|
|
65
|
+
});
|
|
66
|
+
// ---------------------------------------------------------------------------
|
|
67
|
+
// Content — image, gallery, video, embed, markdown, custom-html
|
|
68
|
+
// ---------------------------------------------------------------------------
|
|
69
|
+
export const imageConfigSchema = z.object({
|
|
70
|
+
src: z.string().max(2048).regex(URL_MEDIA_OR_EMPTY, { message: 'src must be an http(s) URL, root path, or empty' }).default(''),
|
|
71
|
+
alt: z.string().max(240).default(''),
|
|
72
|
+
caption: z.string().max(480).default(''),
|
|
73
|
+
size: z.enum(['s', 'm', 'l', 'full']).default('l'),
|
|
74
|
+
});
|
|
75
|
+
export const galleryImageSchema = z.object({
|
|
76
|
+
src: z.string().max(2048).regex(URL_MEDIA_OR_EMPTY, { message: 'src must be an http(s) URL, root path, or empty' }),
|
|
77
|
+
alt: z.string().max(240).default(''),
|
|
78
|
+
caption: z.string().max(240).default(''),
|
|
79
|
+
});
|
|
80
|
+
export const galleryConfigSchema = z.object({
|
|
81
|
+
images: z.array(galleryImageSchema).max(20).default([]),
|
|
82
|
+
});
|
|
83
|
+
export const videoConfigSchema = z.object({
|
|
84
|
+
url: z.string().max(2048).regex(URL_MEDIA_OR_EMPTY, { message: 'url must be an http(s) URL, root path, or empty' }).default(''),
|
|
85
|
+
});
|
|
86
|
+
export const embedConfigSchema = z.object({
|
|
87
|
+
url: z.string().max(2048).regex(URL_HTTPS_OR_EMPTY, { message: 'url must be an http(s) URL or empty' }).default(''),
|
|
88
|
+
});
|
|
89
|
+
export const markdownConfigSchema = z.object({
|
|
90
|
+
source: z.string().max(100_000).default(''),
|
|
91
|
+
});
|
|
92
|
+
export const customHtmlConfigSchema = z.object({
|
|
93
|
+
heading: z.string().max(255).default(''),
|
|
94
|
+
html: z.string().max(50_000).default(''),
|
|
95
|
+
});
|
|
96
|
+
// ---------------------------------------------------------------------------
|
|
97
|
+
// Interactive — hero, cta
|
|
98
|
+
// ---------------------------------------------------------------------------
|
|
99
|
+
export const heroCtaSchema = z.object({
|
|
100
|
+
label: z.string().min(1).max(80),
|
|
101
|
+
href: z.string().min(1).max(2048).regex(URL_LINK_STRICT, { message: 'href must be an http(s) URL, root path, anchor, mailto:, or tel:' }),
|
|
102
|
+
variant: z.enum(['primary', 'secondary']).default('primary'),
|
|
103
|
+
});
|
|
104
|
+
export const heroConfigSchema = z.object({
|
|
105
|
+
variant: z.enum(['default', 'compact', 'centered']).default('default'),
|
|
106
|
+
customTitle: z.string().max(255).default(''),
|
|
107
|
+
customSubtitle: z.string().max(500).default(''),
|
|
108
|
+
ctas: z.array(heroCtaSchema).max(2).default([]),
|
|
109
|
+
});
|
|
110
|
+
export const ctaButtonSchema = z.object({
|
|
111
|
+
label: z.string().min(1).max(80),
|
|
112
|
+
href: z.string().min(1).max(2048).regex(URL_LINK_STRICT, { message: 'href must be an http(s) URL, root path, anchor, mailto:, or tel:' }),
|
|
113
|
+
variant: z.enum(['primary', 'secondary', 'ghost']).default('primary'),
|
|
114
|
+
});
|
|
115
|
+
export const ctaConfigSchema = z.object({
|
|
116
|
+
variant: z.enum(['default', 'contrast', 'minimal']).default('default'),
|
|
117
|
+
heading: z.string().min(1).max(240).default('Take the next step'),
|
|
118
|
+
body: z.string().max(800).default(''),
|
|
119
|
+
buttons: z.array(ctaButtonSchema).max(3).default([]),
|
|
120
|
+
align: z.enum(['left', 'center']).default('left'),
|
|
121
|
+
});
|
|
122
|
+
// ---------------------------------------------------------------------------
|
|
123
|
+
// Data — content-feed, editorial, stats, hubs, contests, learning
|
|
124
|
+
// ---------------------------------------------------------------------------
|
|
125
|
+
export const contentFeedConfigSchema = z.object({
|
|
126
|
+
heading: z.string().max(120).default(''),
|
|
127
|
+
contentType: z.string().max(64).default(''),
|
|
128
|
+
sort: z.enum(['recent', 'popular', 'featured', 'editorial']).default('recent'),
|
|
129
|
+
limit: z.number().int().min(1).max(24).default(12),
|
|
130
|
+
columns: z.union([z.literal(2), z.literal(3), z.literal(4)]).default(2),
|
|
131
|
+
categorySlug: z.string().max(64).default(''),
|
|
132
|
+
});
|
|
133
|
+
export const editorialConfigSchema = z.object({
|
|
134
|
+
limit: z.number().int().min(1).max(12).default(3),
|
|
135
|
+
});
|
|
136
|
+
/** Stats has no per-instance config (the section pulls its data from API). */
|
|
137
|
+
export const statsConfigSchema = z.object({});
|
|
138
|
+
export const hubsConfigSchema = z.object({
|
|
139
|
+
limit: z.number().int().min(1).max(20).default(4),
|
|
140
|
+
});
|
|
141
|
+
export const contestsConfigSchema = z.object({
|
|
142
|
+
limit: z.number().int().min(1).max(10).default(3),
|
|
143
|
+
});
|
|
144
|
+
export const learningConfigSchema = z.object({
|
|
145
|
+
heading: z.string().max(120).default('Learning Paths'),
|
|
146
|
+
limit: z.number().int().min(1).max(12).default(6),
|
|
147
|
+
columns: z.union([z.literal(1), z.literal(2), z.literal(3), z.literal(4)]).default(3),
|
|
148
|
+
});
|
|
149
|
+
// ---------------------------------------------------------------------------
|
|
150
|
+
// Lookup map — the canonical type → schema map used by
|
|
151
|
+
// `validateSectionConfigs` to enforce per-type validation server-side.
|
|
152
|
+
// Keep this in sync with the per-section files in
|
|
153
|
+
// `layers/base/sections/builtin/*.ts` and the registrations in
|
|
154
|
+
// `layers/base/sections/registry.ts`.
|
|
155
|
+
// ---------------------------------------------------------------------------
|
|
156
|
+
export const SECTION_CONFIG_SCHEMAS = {
|
|
157
|
+
// Layout
|
|
158
|
+
divider: dividerConfigSchema,
|
|
159
|
+
heading: headingConfigSchema,
|
|
160
|
+
paragraph: paragraphConfigSchema,
|
|
161
|
+
// Content
|
|
162
|
+
image: imageConfigSchema,
|
|
163
|
+
gallery: galleryConfigSchema,
|
|
164
|
+
video: videoConfigSchema,
|
|
165
|
+
embed: embedConfigSchema,
|
|
166
|
+
markdown: markdownConfigSchema,
|
|
167
|
+
'custom-html': customHtmlConfigSchema,
|
|
168
|
+
// Interactive
|
|
169
|
+
hero: heroConfigSchema,
|
|
170
|
+
cta: ctaConfigSchema,
|
|
171
|
+
// Data
|
|
172
|
+
'content-feed': contentFeedConfigSchema,
|
|
173
|
+
editorial: editorialConfigSchema,
|
|
174
|
+
stats: statsConfigSchema,
|
|
175
|
+
hubs: hubsConfigSchema,
|
|
176
|
+
contests: contestsConfigSchema,
|
|
177
|
+
learning: learningConfigSchema,
|
|
178
|
+
};
|
|
179
|
+
//# sourceMappingURL=sectionConfigs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sectionConfigs.js","sourceRoot":"","sources":["../src/sectionConfigs.ts"],"names":[],"mappings":"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"}
|