@growth-labs/cms 0.6.7 → 0.6.8

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.
Files changed (49) hide show
  1. package/README.md +20 -0
  2. package/dist/integration/options.d.ts +117 -0
  3. package/dist/integration/options.d.ts.map +1 -1
  4. package/dist/integration/options.js +19 -0
  5. package/dist/integration/options.js.map +1 -1
  6. package/dist/routes/config.d.ts +4 -0
  7. package/dist/routes/config.d.ts.map +1 -1
  8. package/dist/routes/config.js +1 -0
  9. package/dist/routes/config.js.map +1 -1
  10. package/dist/routes/content.d.ts.map +1 -1
  11. package/dist/routes/content.js +7 -5
  12. package/dist/routes/content.js.map +1 -1
  13. package/dist/ui/api/_content-config.d.ts.map +1 -1
  14. package/dist/ui/api/_content-config.js +6 -0
  15. package/dist/ui/api/_content-config.js.map +1 -1
  16. package/dist/ui/client/mount.d.ts.map +1 -1
  17. package/dist/ui/client/mount.js +1 -0
  18. package/dist/ui/client/mount.js.map +1 -1
  19. package/dist/ui/editor/ContentForm.d.ts +3 -2
  20. package/dist/ui/editor/ContentForm.d.ts.map +1 -1
  21. package/dist/ui/editor/ContentForm.js +18 -4
  22. package/dist/ui/editor/ContentForm.js.map +1 -1
  23. package/dist/ui/editor/content-payload.d.ts +4 -1
  24. package/dist/ui/editor/content-payload.d.ts.map +1 -1
  25. package/dist/ui/editor/content-payload.js +9 -1
  26. package/dist/ui/editor/content-payload.js.map +1 -1
  27. package/dist/ui/screens/ContentRoute.d.ts +3 -2
  28. package/dist/ui/screens/ContentRoute.d.ts.map +1 -1
  29. package/dist/ui/screens/ContentRoute.js +2 -2
  30. package/dist/ui/screens/ContentRoute.js.map +1 -1
  31. package/dist/ui/screens/EditorScreen.d.ts +3 -2
  32. package/dist/ui/screens/EditorScreen.d.ts.map +1 -1
  33. package/dist/ui/screens/EditorScreen.js +2 -2
  34. package/dist/ui/screens/EditorScreen.js.map +1 -1
  35. package/dist/ui/screens/registry.d.ts +3 -2
  36. package/dist/ui/screens/registry.d.ts.map +1 -1
  37. package/dist/ui/screens/registry.js +2 -2
  38. package/dist/ui/screens/registry.js.map +1 -1
  39. package/package.json +1 -1
  40. package/src/integration/options.ts +23 -0
  41. package/src/routes/config.ts +5 -0
  42. package/src/routes/content.ts +8 -5
  43. package/src/ui/api/_content-config.ts +9 -0
  44. package/src/ui/client/mount.tsx +1 -0
  45. package/src/ui/editor/ContentForm.tsx +45 -3
  46. package/src/ui/editor/content-payload.ts +8 -0
  47. package/src/ui/screens/ContentRoute.tsx +4 -1
  48. package/src/ui/screens/EditorScreen.tsx +4 -1
  49. package/src/ui/screens/registry.tsx +4 -1
package/README.md CHANGED
@@ -103,6 +103,26 @@ Masthead consumers can expose named category controls by passing
103
103
  persists the selected slug through `primaryCategory`, and the Library can filter
104
104
  the same canonical `content_items.channel` value.
105
105
 
106
+ Consumers can require a bounded primary-topic selection for chosen content
107
+ types. The editor persists the selected slug through `primaryTopic` on the
108
+ initial create request and every later update; it does not derive or alter the
109
+ content slug:
110
+
111
+ ```ts
112
+ primaryTopic: {
113
+ label: 'Region',
114
+ contentTypes: ['article', 'video', 'podcast'],
115
+ options: [
116
+ { slug: 'middle-east', label: 'Middle East' },
117
+ { slug: 'global', label: 'Global' },
118
+ ],
119
+ }
120
+ ```
121
+
122
+ When this control applies to a content type, Masthead will not create the item
123
+ until an editor makes a selection. Content types outside `contentTypes` keep
124
+ the package's existing topic behavior.
125
+
106
126
  Sites can also expose bounded metadata selects without forking Masthead:
107
127
 
108
128
  ```ts
@@ -1,4 +1,47 @@
1
1
  import { z } from 'zod';
2
+ declare const primaryTopicControlSchema: z.ZodEffects<z.ZodObject<{
3
+ label: z.ZodString;
4
+ contentTypes: z.ZodArray<z.ZodEnum<["article", "video", "podcast", "newsletter", "page"]>, "many">;
5
+ options: z.ZodArray<z.ZodObject<{
6
+ slug: z.ZodString;
7
+ label: z.ZodString;
8
+ }, "strip", z.ZodTypeAny, {
9
+ slug: string;
10
+ label: string;
11
+ }, {
12
+ slug: string;
13
+ label: string;
14
+ }>, "many">;
15
+ }, "strict", z.ZodTypeAny, {
16
+ options: {
17
+ slug: string;
18
+ label: string;
19
+ }[];
20
+ label: string;
21
+ contentTypes: ("article" | "video" | "podcast" | "newsletter" | "page")[];
22
+ }, {
23
+ options: {
24
+ slug: string;
25
+ label: string;
26
+ }[];
27
+ label: string;
28
+ contentTypes: ("article" | "video" | "podcast" | "newsletter" | "page")[];
29
+ }>, {
30
+ options: {
31
+ slug: string;
32
+ label: string;
33
+ }[];
34
+ label: string;
35
+ contentTypes: ("article" | "video" | "podcast" | "newsletter" | "page")[];
36
+ }, {
37
+ options: {
38
+ slug: string;
39
+ label: string;
40
+ }[];
41
+ label: string;
42
+ contentTypes: ("article" | "video" | "podcast" | "newsletter" | "page")[];
43
+ }>;
44
+ export type PrimaryTopicControl = z.output<typeof primaryTopicControlSchema>;
2
45
  declare const contentMetadataSelectFieldSchema: z.ZodEffects<z.ZodObject<{
3
46
  key: z.ZodString;
4
47
  label: z.ZodString;
@@ -89,6 +132,48 @@ export declare const cmsIntegrationOptionsSchema: z.ZodEffects<z.ZodObject<{
89
132
  slug: string;
90
133
  label: string;
91
134
  }>, "many">>;
135
+ primaryTopic: z.ZodOptional<z.ZodEffects<z.ZodObject<{
136
+ label: z.ZodString;
137
+ contentTypes: z.ZodArray<z.ZodEnum<["article", "video", "podcast", "newsletter", "page"]>, "many">;
138
+ options: z.ZodArray<z.ZodObject<{
139
+ slug: z.ZodString;
140
+ label: z.ZodString;
141
+ }, "strip", z.ZodTypeAny, {
142
+ slug: string;
143
+ label: string;
144
+ }, {
145
+ slug: string;
146
+ label: string;
147
+ }>, "many">;
148
+ }, "strict", z.ZodTypeAny, {
149
+ options: {
150
+ slug: string;
151
+ label: string;
152
+ }[];
153
+ label: string;
154
+ contentTypes: ("article" | "video" | "podcast" | "newsletter" | "page")[];
155
+ }, {
156
+ options: {
157
+ slug: string;
158
+ label: string;
159
+ }[];
160
+ label: string;
161
+ contentTypes: ("article" | "video" | "podcast" | "newsletter" | "page")[];
162
+ }>, {
163
+ options: {
164
+ slug: string;
165
+ label: string;
166
+ }[];
167
+ label: string;
168
+ contentTypes: ("article" | "video" | "podcast" | "newsletter" | "page")[];
169
+ }, {
170
+ options: {
171
+ slug: string;
172
+ label: string;
173
+ }[];
174
+ label: string;
175
+ contentTypes: ("article" | "video" | "podcast" | "newsletter" | "page")[];
176
+ }>>;
92
177
  contentMetadataSelects: z.ZodDefault<z.ZodEffects<z.ZodArray<z.ZodEffects<z.ZodObject<{
93
178
  key: z.ZodString;
94
179
  label: z.ZodString;
@@ -242,6 +327,14 @@ export declare const cmsIntegrationOptionsSchema: z.ZodEffects<z.ZodObject<{
242
327
  socialSharing: {
243
328
  allowInlineAuthorCreation: boolean;
244
329
  };
330
+ primaryTopic?: {
331
+ options: {
332
+ slug: string;
333
+ label: string;
334
+ }[];
335
+ label: string;
336
+ contentTypes: ("article" | "video" | "podcast" | "newsletter" | "page")[];
337
+ } | undefined;
245
338
  activeWorkspaceId?: string | undefined;
246
339
  surveyResults?: {
247
340
  surveyId: string;
@@ -253,6 +346,14 @@ export declare const cmsIntegrationOptionsSchema: z.ZodEffects<z.ZodObject<{
253
346
  meta?: string | undefined;
254
347
  color?: string | undefined;
255
348
  }[];
349
+ primaryTopic?: {
350
+ options: {
351
+ slug: string;
352
+ label: string;
353
+ }[];
354
+ label: string;
355
+ contentTypes: ("article" | "video" | "podcast" | "newsletter" | "page")[];
356
+ } | undefined;
256
357
  primaryCategories?: {
257
358
  slug: string;
258
359
  label: string;
@@ -321,6 +422,14 @@ export declare const cmsIntegrationOptionsSchema: z.ZodEffects<z.ZodObject<{
321
422
  socialSharing: {
322
423
  allowInlineAuthorCreation: boolean;
323
424
  };
425
+ primaryTopic?: {
426
+ options: {
427
+ slug: string;
428
+ label: string;
429
+ }[];
430
+ label: string;
431
+ contentTypes: ("article" | "video" | "podcast" | "newsletter" | "page")[];
432
+ } | undefined;
324
433
  surveyResults?: {
325
434
  surveyId: string;
326
435
  } | undefined;
@@ -331,6 +440,14 @@ export declare const cmsIntegrationOptionsSchema: z.ZodEffects<z.ZodObject<{
331
440
  meta?: string | undefined;
332
441
  color?: string | undefined;
333
442
  }[];
443
+ primaryTopic?: {
444
+ options: {
445
+ slug: string;
446
+ label: string;
447
+ }[];
448
+ label: string;
449
+ contentTypes: ("article" | "video" | "podcast" | "newsletter" | "page")[];
450
+ } | undefined;
334
451
  primaryCategories?: {
335
452
  slug: string;
336
453
  label: string;
@@ -1 +1 @@
1
- {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/integration/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAmBvB,QAAA,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2CnC,CAAA;AAmBH,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,gCAAgC,CAAC,CAAA;AAuB1F,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmBoD,CAAA;AAE5F,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAA;AAC/E,MAAM,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,2BAA2B,CAAC,CAAA"}
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/integration/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAiBvB,QAAA,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgB5B,CAAA;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAM5E,QAAA,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2CnC,CAAA;AAmBH,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,gCAAgC,CAAC,CAAA;AAuB1F,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoBoD,CAAA;AAE5F,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAA;AAC/E,MAAM,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,2BAA2B,CAAC,CAAA"}
@@ -10,6 +10,24 @@ const primaryCategorySchema = z.object({
10
10
  slug: z.string().min(1),
11
11
  label: z.string().min(1),
12
12
  });
13
+ const contentTypeSchema = z.enum(['article', 'video', 'podcast', 'newsletter', 'page']);
14
+ const primaryTopicControlSchema = z
15
+ .object({
16
+ label: z.string().trim().min(1).max(100),
17
+ contentTypes: z.array(contentTypeSchema).min(1),
18
+ options: z.array(primaryCategorySchema).min(1),
19
+ })
20
+ .strict()
21
+ .superRefine((control, ctx) => {
22
+ const slugs = control.options.map(({ slug }) => slug);
23
+ if (new Set(slugs).size !== slugs.length) {
24
+ ctx.addIssue({
25
+ code: 'custom',
26
+ path: ['options'],
27
+ message: 'primary topic option slugs must be unique',
28
+ });
29
+ }
30
+ });
13
31
  const contentMetadataKeySchema = z
14
32
  .string()
15
33
  .regex(/^[a-z][a-z0-9_]{0,63}$/, 'metadata keys must be lowercase snake_case');
@@ -93,6 +111,7 @@ export const cmsIntegrationOptionsSchema = z
93
111
  .object({
94
112
  workspaces: z.array(workspaceSchema).min(1, 'at least one workspace is required'),
95
113
  primaryCategories: z.array(primaryCategorySchema).default([]),
114
+ primaryTopic: primaryTopicControlSchema.optional(),
96
115
  contentMetadataSelects: contentMetadataSelectsSchema,
97
116
  activeWorkspaceId: z.string().optional(),
98
117
  adminBasePath: z.string().default('/admin'),
@@ -1 +1 @@
1
- {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/integration/options.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/integration/options.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import type { OgImageRenderer } from '../engine/og-render.js';
2
2
  import type { CmsProviders, FoundryDispatch, LlmDispatch } from '../providers/types.js';
3
+ import type { ContentType } from '../schema/types.js';
3
4
  import type { Authz } from './context.js';
4
5
  /**
5
6
  * Taxonomy + theme tokens + binding names + authz the site supplies. All fields
@@ -27,6 +28,8 @@ export interface CmsRouteConfig {
27
28
  primaryTopicSlugs?: readonly [string, ...string[]];
28
29
  /** Default primary topic for create (Fronts: 'global'). */
29
30
  defaultPrimaryTopic?: string;
31
+ /** Content types for which `primaryTopic` is required on create. */
32
+ requiredPrimaryTopicContentTypes?: readonly ContentType[];
30
33
  /** R2 binding name recorded on media rows. Fronts default: 'PUBLIC_MEDIA'. */
31
34
  mediaR2Binding?: string;
32
35
  /** `media_assets.site_id` value. Fronts default: 'fronts'. */
@@ -54,6 +57,7 @@ export interface ResolvedCmsRouteConfig {
54
57
  defaultPrimaryCategory: string;
55
58
  primaryTopicSlugs: readonly string[] | null;
56
59
  defaultPrimaryTopic: string;
60
+ requiredPrimaryTopicContentTypes: readonly ContentType[];
57
61
  mediaR2Binding: string;
58
62
  mediaSiteId: string;
59
63
  mediaPublicDomain: string;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/routes/config.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAE7D,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACvF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAEzC;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC9B,qDAAqD;IACrD,KAAK,EAAE,KAAK,CAAA;IAEZ;;;;;;OAMG;IACH,oBAAoB,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAA;IACrD,gEAAgE;IAChE,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAA;IAClD,2DAA2D;IAC3D,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAE5B,8EAA8E;IAC9E,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,8DAA8D;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,+EAA+E;IAC/E,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,oEAAoE;IACpE,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAEjC,2EAA2E;IAC3E,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;IACjC,yFAAyF;IACzF,KAAK,CAAC,EAAE;QACP,GAAG,CAAC,EAAE,WAAW,CAAA;QACjB,YAAY,CAAC,EAAE,eAAe,CAAA;QAC9B;yFACiF;QACjF,UAAU,CAAC,EAAE,eAAe,CAAA;KAC5B,CAAA;CACD;AAED,MAAM,WAAW,sBAAsB;IACtC,KAAK,EAAE,KAAK,CAAA;IACZ,oBAAoB,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAA;IAC9C,sBAAsB,EAAE,MAAM,CAAA;IAC9B,iBAAiB,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAA;IAC3C,mBAAmB,EAAE,MAAM,CAAA;IAC3B,cAAc,EAAE,MAAM,CAAA;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,iBAAiB,EAAE,MAAM,CAAA;IACzB,aAAa,EAAE,SAAS,MAAM,EAAE,CAAA;IAChC,eAAe,EAAE,MAAM,CAAA;IACvB,SAAS,EAAE,YAAY,CAAA;IACvB,KAAK,EAAE;QACN,GAAG,CAAC,EAAE,WAAW,CAAA;QACjB,YAAY,CAAC,EAAE,eAAe,CAAA;QAC9B,UAAU,CAAC,EAAE,eAAe,CAAA;KAC5B,CAAA;CACD;AAID,wBAAgB,aAAa,CAAC,MAAM,EAAE,cAAc,GAAG,sBAAsB,CAe5E"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/routes/config.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAE7D,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACvF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAEzC;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC9B,qDAAqD;IACrD,KAAK,EAAE,KAAK,CAAA;IAEZ;;;;;;OAMG;IACH,oBAAoB,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAA;IACrD,gEAAgE;IAChE,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAA;IAClD,2DAA2D;IAC3D,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,oEAAoE;IACpE,gCAAgC,CAAC,EAAE,SAAS,WAAW,EAAE,CAAA;IAEzD,8EAA8E;IAC9E,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,8DAA8D;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,+EAA+E;IAC/E,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,oEAAoE;IACpE,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAEjC,2EAA2E;IAC3E,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;IACjC,yFAAyF;IACzF,KAAK,CAAC,EAAE;QACP,GAAG,CAAC,EAAE,WAAW,CAAA;QACjB,YAAY,CAAC,EAAE,eAAe,CAAA;QAC9B;yFACiF;QACjF,UAAU,CAAC,EAAE,eAAe,CAAA;KAC5B,CAAA;CACD;AAED,MAAM,WAAW,sBAAsB;IACtC,KAAK,EAAE,KAAK,CAAA;IACZ,oBAAoB,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAA;IAC9C,sBAAsB,EAAE,MAAM,CAAA;IAC9B,iBAAiB,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAA;IAC3C,mBAAmB,EAAE,MAAM,CAAA;IAC3B,gCAAgC,EAAE,SAAS,WAAW,EAAE,CAAA;IACxD,cAAc,EAAE,MAAM,CAAA;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,iBAAiB,EAAE,MAAM,CAAA;IACzB,aAAa,EAAE,SAAS,MAAM,EAAE,CAAA;IAChC,eAAe,EAAE,MAAM,CAAA;IACvB,SAAS,EAAE,YAAY,CAAA;IACvB,KAAK,EAAE;QACN,GAAG,CAAC,EAAE,WAAW,CAAA;QACjB,YAAY,CAAC,EAAE,eAAe,CAAA;QAC9B,UAAU,CAAC,EAAE,eAAe,CAAA;KAC5B,CAAA;CACD;AAID,wBAAgB,aAAa,CAAC,MAAM,EAAE,cAAc,GAAG,sBAAsB,CAgB5E"}
@@ -11,6 +11,7 @@ export function resolveConfig(config) {
11
11
  defaultPrimaryCategory: config.defaultPrimaryCategory ?? 'analysis',
12
12
  primaryTopicSlugs: config.primaryTopicSlugs ?? null,
13
13
  defaultPrimaryTopic: config.defaultPrimaryTopic ?? 'global',
14
+ requiredPrimaryTopicContentTypes: config.requiredPrimaryTopicContentTypes ?? [],
14
15
  mediaR2Binding: config.mediaR2Binding ?? 'PUBLIC_MEDIA',
15
16
  mediaSiteId: config.mediaSiteId ?? 'fronts',
16
17
  mediaPublicDomain: config.mediaPublicDomain ?? 'media.fronts.co',
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/routes/config.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,yEAAyE;AACzE,6EAA6E;AAC7E,mEAAmE;AAGnE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AA2EpD,MAAM,6BAA6B,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAU,CAAA;AAE/F,MAAM,UAAU,aAAa,CAAC,MAAsB;IACnD,OAAO;QACN,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,oBAAoB,EAAE,MAAM,CAAC,oBAAoB,IAAI,IAAI;QACzD,sBAAsB,EAAE,MAAM,CAAC,sBAAsB,IAAI,UAAU;QACnE,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,IAAI,IAAI;QACnD,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,IAAI,QAAQ;QAC3D,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,cAAc;QACvD,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,QAAQ;QAC3C,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,IAAI,iBAAiB;QAChE,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,6BAA6B;QACpE,eAAe,EAAE,MAAM,CAAC,eAAe,IAAI,cAAc;QACzD,SAAS,EAAE,EAAE,GAAG,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE;QAC5D,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;KACzB,CAAA;AACF,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/routes/config.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,yEAAyE;AACzE,6EAA6E;AAC7E,mEAAmE;AAGnE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AA+EpD,MAAM,6BAA6B,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAU,CAAA;AAE/F,MAAM,UAAU,aAAa,CAAC,MAAsB;IACnD,OAAO;QACN,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,oBAAoB,EAAE,MAAM,CAAC,oBAAoB,IAAI,IAAI;QACzD,sBAAsB,EAAE,MAAM,CAAC,sBAAsB,IAAI,UAAU;QACnE,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,IAAI,IAAI;QACnD,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,IAAI,QAAQ;QAC3D,gCAAgC,EAAE,MAAM,CAAC,gCAAgC,IAAI,EAAE;QAC/E,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,cAAc;QACvD,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,QAAQ;QAC3C,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,IAAI,iBAAiB;QAChE,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,6BAA6B;QACpE,eAAe,EAAE,MAAM,CAAC,eAAe,IAAI,cAAc;QACzD,SAAS,EAAE,EAAE,GAAG,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE;QAC5D,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;KACzB,CAAA;AACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../src/routes/content.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../src/routes/content.ts"],"names":[],"mappings":"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"}
@@ -234,12 +234,14 @@ function buildSchemas(resolved) {
234
234
  tags: z.array(z.string()).optional(),
235
235
  metadata: ContentMetadataSchema.optional(),
236
236
  });
237
+ const requiredTopicTypes = new Set(resolved.requiredPrimaryTopicContentTypes);
238
+ const baseSchemaFor = (type) => requiredTopicTypes.has(type) ? BaseSchema.extend({ primaryTopic: topic }) : BaseSchema;
237
239
  const CreateSchema = z.discriminatedUnion('type', [
238
- BaseSchema.extend({
240
+ baseSchemaFor('article').extend({
239
241
  type: z.literal('article'),
240
242
  content: BodyContentCreateSchema,
241
243
  }),
242
- BaseSchema.extend({
244
+ baseSchemaFor('video').extend({
243
245
  type: z.literal('video'),
244
246
  content: z.object({
245
247
  script: z.string().default(''),
@@ -250,7 +252,7 @@ function buildSchemas(resolved) {
250
252
  processingSourceKind: z.string().min(1).optional().nullable(),
251
253
  }),
252
254
  }),
253
- BaseSchema.extend({
255
+ baseSchemaFor('podcast').extend({
254
256
  type: z.literal('podcast'),
255
257
  content: z.object({
256
258
  // Empty allowed: a podcast is created as a draft with audio uploaded
@@ -270,11 +272,11 @@ function buildSchemas(resolved) {
270
272
  processingSourceKind: z.string().min(1).optional().nullable(),
271
273
  }),
272
274
  }),
273
- BaseSchema.extend({
275
+ baseSchemaFor('newsletter').extend({
274
276
  type: z.literal('newsletter'),
275
277
  content: BodyContentCreateSchema,
276
278
  }),
277
- BaseSchema.extend({
279
+ baseSchemaFor('page').extend({
278
280
  type: z.literal('page'),
279
281
  content: BodyContentCreateSchema,
280
282
  }),