@commonpub/schema 0.17.0 → 0.19.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.
@@ -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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"}
@@ -476,6 +476,20 @@ export declare const productCategorySchema: z.ZodEnum<{
476
476
  tool: "tool";
477
477
  }>;
478
478
  export type ProductCategory = z.infer<typeof productCategorySchema>;
479
+ export declare const contestPrizeSchema: z.ZodObject<{
480
+ place: z.ZodOptional<z.ZodNumber>;
481
+ category: z.ZodOptional<z.ZodString>;
482
+ title: z.ZodString;
483
+ description: z.ZodOptional<z.ZodString>;
484
+ value: z.ZodOptional<z.ZodString>;
485
+ }, z.core.$strip>;
486
+ export type ContestPrize = z.infer<typeof contestPrizeSchema>;
487
+ export declare const contestJudgingCriterionSchema: z.ZodObject<{
488
+ label: z.ZodString;
489
+ weight: z.ZodOptional<z.ZodNumber>;
490
+ description: z.ZodOptional<z.ZodString>;
491
+ }, z.core.$strip>;
492
+ export type ContestJudgingCriterion = z.infer<typeof contestJudgingCriterionSchema>;
479
493
  export declare const createContestSchema: z.ZodObject<{
480
494
  title: z.ZodString;
481
495
  description: z.ZodOptional<z.ZodString>;
@@ -485,29 +499,53 @@ export declare const createContestSchema: z.ZodObject<{
485
499
  endDate: z.ZodString;
486
500
  judgingEndDate: z.ZodOptional<z.ZodString>;
487
501
  prizes: z.ZodOptional<z.ZodArray<z.ZodObject<{
488
- place: z.ZodNumber;
502
+ place: z.ZodOptional<z.ZodNumber>;
503
+ category: z.ZodOptional<z.ZodString>;
489
504
  title: z.ZodString;
490
505
  description: z.ZodOptional<z.ZodString>;
491
506
  value: z.ZodOptional<z.ZodString>;
492
507
  }, z.core.$strip>>>;
508
+ judgingCriteria: z.ZodOptional<z.ZodArray<z.ZodObject<{
509
+ label: z.ZodString;
510
+ weight: z.ZodOptional<z.ZodNumber>;
511
+ description: z.ZodOptional<z.ZodString>;
512
+ }, z.core.$strip>>>;
493
513
  judges: z.ZodOptional<z.ZodArray<z.ZodString>>;
514
+ communityVotingEnabled: z.ZodOptional<z.ZodBoolean>;
515
+ judgingVisibility: z.ZodOptional<z.ZodEnum<{
516
+ public: "public";
517
+ private: "private";
518
+ "judges-only": "judges-only";
519
+ }>>;
494
520
  }, z.core.$strip>;
495
521
  export type CreateContestInput = z.infer<typeof createContestSchema>;
496
522
  export declare const updateContestSchema: z.ZodObject<{
497
523
  title: z.ZodOptional<z.ZodString>;
498
- description: z.ZodOptional<z.ZodOptional<z.ZodString>>;
499
- rules: z.ZodOptional<z.ZodOptional<z.ZodString>>;
500
- bannerUrl: z.ZodOptional<z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodOptional<z.ZodString>>>;
524
+ description: z.ZodOptional<z.ZodString>;
525
+ rules: z.ZodOptional<z.ZodString>;
526
+ bannerUrl: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodOptional<z.ZodString>>;
501
527
  startDate: z.ZodOptional<z.ZodString>;
502
528
  endDate: z.ZodOptional<z.ZodString>;
503
- judgingEndDate: z.ZodOptional<z.ZodOptional<z.ZodString>>;
504
- prizes: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodObject<{
505
- place: z.ZodNumber;
529
+ judgingEndDate: z.ZodOptional<z.ZodString>;
530
+ prizes: z.ZodOptional<z.ZodArray<z.ZodObject<{
531
+ place: z.ZodOptional<z.ZodNumber>;
532
+ category: z.ZodOptional<z.ZodString>;
506
533
  title: z.ZodString;
507
534
  description: z.ZodOptional<z.ZodString>;
508
535
  value: z.ZodOptional<z.ZodString>;
509
- }, z.core.$strip>>>>;
510
- judges: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
536
+ }, z.core.$strip>>>;
537
+ judgingCriteria: z.ZodOptional<z.ZodArray<z.ZodObject<{
538
+ label: z.ZodString;
539
+ weight: z.ZodOptional<z.ZodNumber>;
540
+ description: z.ZodOptional<z.ZodString>;
541
+ }, z.core.$strip>>>;
542
+ judges: z.ZodOptional<z.ZodArray<z.ZodString>>;
543
+ communityVotingEnabled: z.ZodOptional<z.ZodBoolean>;
544
+ judgingVisibility: z.ZodOptional<z.ZodEnum<{
545
+ public: "public";
546
+ private: "private";
547
+ "judges-only": "judges-only";
548
+ }>>;
511
549
  }, z.core.$strip>;
512
550
  export type UpdateContestInput = z.infer<typeof updateContestSchema>;
513
551
  export declare const judgeEntrySchema: z.ZodObject<{
@@ -814,10 +852,10 @@ export declare const contentFiltersSchema: z.ZodObject<{
814
852
  search: z.ZodOptional<z.ZodString>;
815
853
  tag: z.ZodOptional<z.ZodString>;
816
854
  sort: z.ZodOptional<z.ZodEnum<{
817
- featured: "featured";
818
- editorial: "editorial";
819
855
  recent: "recent";
820
856
  popular: "popular";
857
+ featured: "featured";
858
+ editorial: "editorial";
821
859
  }>>;
822
860
  limit: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
823
861
  offset: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
@@ -1087,8 +1125,8 @@ export declare const layoutRowConfigSchema: z.ZodObject<{
1087
1125
  lg: "lg";
1088
1126
  }>>;
1089
1127
  align: z.ZodOptional<z.ZodEnum<{
1090
- start: "start";
1091
1128
  center: "center";
1129
+ start: "start";
1092
1130
  stretch: "stretch";
1093
1131
  }>>;
1094
1132
  background: z.ZodOptional<z.ZodString>;
@@ -1113,8 +1151,8 @@ export declare const layoutRowSchema: z.ZodObject<{
1113
1151
  lg: "lg";
1114
1152
  }>>;
1115
1153
  align: z.ZodOptional<z.ZodEnum<{
1116
- start: "start";
1117
1154
  center: "center";
1155
+ start: "start";
1118
1156
  stretch: "stretch";
1119
1157
  }>>;
1120
1158
  background: z.ZodOptional<z.ZodString>;
@@ -1172,8 +1210,8 @@ export declare const layoutZoneSchema: z.ZodObject<{
1172
1210
  lg: "lg";
1173
1211
  }>>;
1174
1212
  align: z.ZodOptional<z.ZodEnum<{
1175
- start: "start";
1176
1213
  center: "center";
1214
+ start: "start";
1177
1215
  stretch: "stretch";
1178
1216
  }>>;
1179
1217
  background: z.ZodOptional<z.ZodString>;
@@ -1273,8 +1311,8 @@ export declare const layoutSchema: z.ZodObject<{
1273
1311
  lg: "lg";
1274
1312
  }>>;
1275
1313
  align: z.ZodOptional<z.ZodEnum<{
1276
- start: "start";
1277
1314
  center: "center";
1315
+ start: "start";
1278
1316
  stretch: "stretch";
1279
1317
  }>>;
1280
1318
  background: z.ZodOptional<z.ZodString>;
@@ -1385,8 +1423,8 @@ export declare const layoutCreateSchema: z.ZodObject<{
1385
1423
  lg: "lg";
1386
1424
  }>>;
1387
1425
  align: z.ZodOptional<z.ZodEnum<{
1388
- start: "start";
1389
1426
  center: "center";
1427
+ start: "start";
1390
1428
  stretch: "stretch";
1391
1429
  }>>;
1392
1430
  background: z.ZodOptional<z.ZodString>;
@@ -1 +1 @@
1
- {"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"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"}
@@ -237,7 +237,20 @@ export const productCategorySchema = z.enum([
237
237
  'communication', 'power', 'mechanical', 'software', 'tool', 'other',
238
238
  ]);
239
239
  // --- Contest validators ---
240
- export const createContestSchema = z.object({
240
+ export const contestPrizeSchema = z.object({
241
+ place: z.number().int().positive().optional(),
242
+ category: z.string().max(120).optional(),
243
+ title: z.string().max(255),
244
+ description: z.string().max(1000).optional(),
245
+ value: z.string().max(128).optional(),
246
+ });
247
+ export const contestJudgingCriterionSchema = z.object({
248
+ label: z.string().min(1).max(120),
249
+ weight: z.number().int().min(0).max(100).optional(),
250
+ description: z.string().max(500).optional(),
251
+ });
252
+ export const createContestSchema = z
253
+ .object({
241
254
  title: z.string().min(1).max(255),
242
255
  description: z.string().max(10000).optional(),
243
256
  rules: z.string().max(10000).optional(),
@@ -245,20 +258,44 @@ export const createContestSchema = z.object({
245
258
  startDate: z.string().datetime(),
246
259
  endDate: z.string().datetime(),
247
260
  judgingEndDate: z.string().datetime().optional(),
248
- prizes: z
249
- .array(z.object({
250
- place: z.number().int().positive(),
251
- title: z.string().max(255),
252
- description: z.string().max(1000).optional(),
253
- value: z.string().max(128).optional(),
254
- }))
255
- .optional(),
256
- judges: z.array(z.string().uuid()).optional(),
261
+ prizes: z.array(contestPrizeSchema).max(50).optional(),
262
+ judgingCriteria: z.array(contestJudgingCriterionSchema).max(20).optional(),
263
+ judges: z.array(z.string().uuid()).max(50).optional(),
264
+ communityVotingEnabled: z.boolean().optional(),
265
+ judgingVisibility: z.enum(['public', 'judges-only', 'private']).optional(),
266
+ })
267
+ .refine((d) => new Date(d.endDate) > new Date(d.startDate), {
268
+ message: 'End date must be after the start date',
269
+ path: ['endDate'],
270
+ })
271
+ .refine((d) => !d.judgingEndDate || new Date(d.judgingEndDate) >= new Date(d.endDate), {
272
+ message: 'Judging end date must be on or after the end date',
273
+ path: ['judgingEndDate'],
274
+ });
275
+ // `.partial()` is unavailable on a refined object, so derive the update schema
276
+ // from the underlying shape and re-apply the cross-field date guards.
277
+ export const updateContestSchema = z
278
+ .object({
279
+ title: z.string().min(1).max(255).optional(),
280
+ description: z.string().max(10000).optional(),
281
+ rules: z.string().max(10000).optional(),
282
+ bannerUrl: optionalUrl(),
283
+ startDate: z.string().datetime().optional(),
284
+ endDate: z.string().datetime().optional(),
285
+ judgingEndDate: z.string().datetime().optional(),
286
+ prizes: z.array(contestPrizeSchema).max(50).optional(),
287
+ judgingCriteria: z.array(contestJudgingCriterionSchema).max(20).optional(),
288
+ judges: z.array(z.string().uuid()).max(50).optional(),
289
+ communityVotingEnabled: z.boolean().optional(),
290
+ judgingVisibility: z.enum(['public', 'judges-only', 'private']).optional(),
291
+ })
292
+ .refine((d) => !d.startDate || !d.endDate || new Date(d.endDate) > new Date(d.startDate), {
293
+ message: 'End date must be after the start date',
294
+ path: ['endDate'],
257
295
  });
258
- export const updateContestSchema = createContestSchema.partial();
259
296
  export const judgeEntrySchema = z.object({
260
297
  entryId: z.string().uuid(),
261
- score: z.number().int().min(0).max(100),
298
+ score: z.number().int().min(1).max(100),
262
299
  feedback: z.string().max(2000).optional(),
263
300
  });
264
301
  export const contestTransitionSchema = z.object({
@@ -536,7 +573,15 @@ export const layoutScopeSchema = z.discriminatedUnion('type', [
536
573
  export const pageMetaSchema = z.object({
537
574
  title: z.string().min(1).max(256),
538
575
  description: z.string().max(2000).optional(),
539
- ogImage: z.string().url().max(2048).optional(),
576
+ // ogImage MUST be an http(s) URL. Zod's plain .url() accepts
577
+ // javascript:, data:, blob:, file: etc — which would render into
578
+ // the `<meta property="og:image">` content attribute and become a
579
+ // downstream vector for social-media scrapers (the URL is also
580
+ // sometimes fetched server-side by SSR proxies). Refining here
581
+ // closes the entire surface at the validation layer. Session 160
582
+ // audit P1. Protocol-relative `//` is rejected by Zod's url()
583
+ // anyway (no scheme); document for clarity.
584
+ ogImage: z.string().url().max(2048).refine((v) => /^https?:\/\//i.test(v), { message: 'ogImage must be an http:// or https:// URL' }).optional(),
540
585
  noindex: z.boolean().optional().default(false),
541
586
  ogType: z.enum(['website', 'article', 'profile']).optional().default('website'),
542
587
  /** Server-side render gate. 'public' = anyone, 'members' = authenticated, 'admin' = admin only. */
@@ -593,7 +638,11 @@ export const layoutRowSchema = z
593
638
  id: z.string().uuid(),
594
639
  order: z.number().int().min(0),
595
640
  config: layoutRowConfigSchema.optional(),
596
- sections: z.array(layoutSectionSchema).default([]),
641
+ // Max 24 sections per row — comfortable headroom for the 12-col
642
+ // grid (12 col / 1-col each = 12 sections natural max; 24 covers
643
+ // multi-row stacking pre-row-split). Bounded to cap payload-bomb
644
+ // DOS from a malicious admin sending 10k sections (audit P2).
645
+ sections: z.array(layoutSectionSchema).max(24).default([]),
597
646
  })
598
647
  .refine((row) => row.sections.reduce((sum, s) => sum + s.colSpan, 0) <= 12, { message: 'Sum of section colSpans in a row must be ≤ 12' })
599
648
  .refine((row) => new Set(row.sections.map((s) => s.order)).size === row.sections.length, { message: 'Section orders within a row must be unique' });
@@ -601,7 +650,9 @@ export const layoutRowSchema = z
601
650
  export const layoutZoneSchema = z
602
651
  .object({
603
652
  zone: slug64,
604
- rows: z.array(layoutRowSchema).default([]),
653
+ // Max 200 rows per zone — a complex marketing page rarely exceeds
654
+ // 50; 200 is comfortable headroom. Caps payload-bomb DOS (audit P2).
655
+ rows: z.array(layoutRowSchema).max(200).default([]),
605
656
  })
606
657
  .refine((z) => new Set(z.rows.map((r) => r.order)).size === z.rows.length, { message: 'Row orders within a zone must be unique' });
607
658
  // Layout shape — base object kept .omit-able by deferring the cross-field
@@ -613,7 +664,10 @@ const layoutBaseObject = z.object({
613
664
  scope: layoutScopeSchema,
614
665
  name: z.string().min(1).max(256),
615
666
  pageMeta: pageMetaSchema.optional(),
616
- zones: z.array(layoutZoneSchema).default([]),
667
+ // Max 16 zones — covers narrow/wide/two-column/three-column/sidebar-*
668
+ // frames + virtual zones (footer, not-found, error) + room for
669
+ // operator-defined frames. Caps payload-bomb DOS (audit P2).
670
+ zones: z.array(layoutZoneSchema).max(16).default([]),
617
671
  state: z.enum(['draft', 'published']).default('draft'),
618
672
  publishedVersionId: z.string().uuid().optional(),
619
673
  createdAt: z.string().datetime().optional(),