@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.
- package/README.md +20 -0
- package/dist/integration/options.d.ts +117 -0
- package/dist/integration/options.d.ts.map +1 -1
- package/dist/integration/options.js +19 -0
- package/dist/integration/options.js.map +1 -1
- package/dist/routes/config.d.ts +4 -0
- package/dist/routes/config.d.ts.map +1 -1
- package/dist/routes/config.js +1 -0
- package/dist/routes/config.js.map +1 -1
- package/dist/routes/content.d.ts.map +1 -1
- package/dist/routes/content.js +7 -5
- package/dist/routes/content.js.map +1 -1
- package/dist/ui/api/_content-config.d.ts.map +1 -1
- package/dist/ui/api/_content-config.js +6 -0
- package/dist/ui/api/_content-config.js.map +1 -1
- package/dist/ui/client/mount.d.ts.map +1 -1
- package/dist/ui/client/mount.js +1 -0
- package/dist/ui/client/mount.js.map +1 -1
- package/dist/ui/editor/ContentForm.d.ts +3 -2
- package/dist/ui/editor/ContentForm.d.ts.map +1 -1
- package/dist/ui/editor/ContentForm.js +18 -4
- package/dist/ui/editor/ContentForm.js.map +1 -1
- package/dist/ui/editor/content-payload.d.ts +4 -1
- package/dist/ui/editor/content-payload.d.ts.map +1 -1
- package/dist/ui/editor/content-payload.js +9 -1
- package/dist/ui/editor/content-payload.js.map +1 -1
- package/dist/ui/screens/ContentRoute.d.ts +3 -2
- package/dist/ui/screens/ContentRoute.d.ts.map +1 -1
- package/dist/ui/screens/ContentRoute.js +2 -2
- package/dist/ui/screens/ContentRoute.js.map +1 -1
- package/dist/ui/screens/EditorScreen.d.ts +3 -2
- package/dist/ui/screens/EditorScreen.d.ts.map +1 -1
- package/dist/ui/screens/EditorScreen.js +2 -2
- package/dist/ui/screens/EditorScreen.js.map +1 -1
- package/dist/ui/screens/registry.d.ts +3 -2
- package/dist/ui/screens/registry.d.ts.map +1 -1
- package/dist/ui/screens/registry.js +2 -2
- package/dist/ui/screens/registry.js.map +1 -1
- package/package.json +1 -1
- package/src/integration/options.ts +23 -0
- package/src/routes/config.ts +5 -0
- package/src/routes/content.ts +8 -5
- package/src/ui/api/_content-config.ts +9 -0
- package/src/ui/client/mount.tsx +1 -0
- package/src/ui/editor/ContentForm.tsx +45 -3
- package/src/ui/editor/content-payload.ts +8 -0
- package/src/ui/screens/ContentRoute.tsx +4 -1
- package/src/ui/screens/EditorScreen.tsx +4 -1
- 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;
|
|
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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"}
|
package/dist/routes/config.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/routes/config.js
CHANGED
|
@@ -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;
|
|
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":"AAgEA,OAAO,KAAK,EAAE,aAAa,EAAuB,MAAM,oBAAoB,CAAA;AAE5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEjD,OAAO,EAAQ,KAAK,YAAY,EAAa,MAAM,cAAc,CAAA;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAExD,YAAY,EAAE,mBAAmB,EAAE,CAAA;AASnC,MAAM,WAAW,oBAAoB;IACpC,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,KAAK,EAAE,OAAO,CAAA;IACd,QAAQ,EAAE,MAAM,EAAE,CAAA;CAClB;AA4DD;;;;;GAKG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,KAAK,EAAE;IAC3C,GAAG,EAAE,YAAY,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,OAAO,CAAA;CACd,KAAK,OAAO,CAAC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAElF;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE;IACrC,GAAG,EAAE,YAAY,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,OAAO,CAAA;CACd,KAAK,OAAO,CAAC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAElF,MAAM,WAAW,uBAAuB;IACvC,KAAK,EAAE,OAAO,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE;IAC1C,GAAG,EAAE,YAAY,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,WAAW,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;CACd,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAA;AAEtC,MAAM,WAAW,kBAAmB,SAAQ,cAAc;IACzD,wEAAwE;IACxE,iBAAiB,CAAC,EAAE,qBAAqB,CAAA;IACzC,uEAAuE;IACvE,WAAW,CAAC,EAAE,eAAe,CAAA;IAC7B,iFAAiF;IACjF,gBAAgB,CAAC,EAAE,oBAAoB,CAAA;IACvC,0EAA0E;IAC1E,8BAA8B,CAAC,EAAE,OAAO,CAAA;IACxC,gFAAgF;IAChF,sBAAsB,CAAC,EAAE,aAAa,CAAA;IACtC;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,mBAAmB,CAAA;IACrC;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAKD,KAAK,WAAW,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,YAAY,GAAG,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../src/routes/content.ts"],"names":[],"mappings":"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"}
|
package/dist/routes/content.js
CHANGED
|
@@ -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
|
-
|
|
240
|
+
baseSchemaFor('article').extend({
|
|
239
241
|
type: z.literal('article'),
|
|
240
242
|
content: BodyContentCreateSchema,
|
|
241
243
|
}),
|
|
242
|
-
|
|
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
|
-
|
|
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
|
-
|
|
275
|
+
baseSchemaFor('newsletter').extend({
|
|
274
276
|
type: z.literal('newsletter'),
|
|
275
277
|
content: BodyContentCreateSchema,
|
|
276
278
|
}),
|
|
277
|
-
|
|
279
|
+
baseSchemaFor('page').extend({
|
|
278
280
|
type: z.literal('page'),
|
|
279
281
|
content: BodyContentCreateSchema,
|
|
280
282
|
}),
|