canopycms 0.0.40 → 0.0.42

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 (55) hide show
  1. package/dist/branch-schema-cache.d.ts +10 -0
  2. package/dist/branch-schema-cache.d.ts.map +1 -1
  3. package/dist/branch-schema-cache.js +14 -2
  4. package/dist/branch-schema-cache.js.map +1 -1
  5. package/dist/cli/generate-ai-content.js +16 -11
  6. package/dist/cli/init.js +2 -9
  7. package/dist/cli/template-files/schemas.ts.template +20 -5
  8. package/dist/config/flatten.d.ts +1 -6
  9. package/dist/config/flatten.d.ts.map +1 -1
  10. package/dist/config/flatten.js +1 -23
  11. package/dist/config/flatten.js.map +1 -1
  12. package/dist/config/helpers.d.ts +10 -5
  13. package/dist/config/helpers.d.ts.map +1 -1
  14. package/dist/config/helpers.js +10 -5
  15. package/dist/config/helpers.js.map +1 -1
  16. package/dist/config/index.d.ts +2 -2
  17. package/dist/config/index.d.ts.map +1 -1
  18. package/dist/config/index.js +2 -2
  19. package/dist/config/index.js.map +1 -1
  20. package/dist/config/schemas/collection.d.ts +0 -53
  21. package/dist/config/schemas/collection.d.ts.map +1 -1
  22. package/dist/config/schemas/collection.js +0 -6
  23. package/dist/config/schemas/collection.js.map +1 -1
  24. package/dist/config/schemas/config.d.ts +1 -80
  25. package/dist/config/schemas/config.d.ts.map +1 -1
  26. package/dist/config/schemas/config.js +6 -5
  27. package/dist/config/schemas/config.js.map +1 -1
  28. package/dist/config/validation.d.ts +13 -6
  29. package/dist/config/validation.d.ts.map +1 -1
  30. package/dist/config/validation.js +65 -127
  31. package/dist/config/validation.js.map +1 -1
  32. package/dist/config-test.d.ts +1 -1
  33. package/dist/config-test.d.ts.map +1 -1
  34. package/dist/config-test.js.map +1 -1
  35. package/dist/content-tree.d.ts +85 -7
  36. package/dist/content-tree.d.ts.map +1 -1
  37. package/dist/content-tree.js +34 -9
  38. package/dist/content-tree.js.map +1 -1
  39. package/dist/context.d.ts +9 -3
  40. package/dist/context.d.ts.map +1 -1
  41. package/dist/context.js.map +1 -1
  42. package/dist/entry-schema-registry.d.ts +54 -10
  43. package/dist/entry-schema-registry.d.ts.map +1 -1
  44. package/dist/entry-schema-registry.js +62 -10
  45. package/dist/entry-schema-registry.js.map +1 -1
  46. package/dist/entry-schema.d.ts +34 -0
  47. package/dist/entry-schema.d.ts.map +1 -1
  48. package/dist/entry-schema.js.map +1 -1
  49. package/dist/index.d.ts +1 -1
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/server.d.ts +53 -3
  52. package/dist/server.d.ts.map +1 -1
  53. package/dist/server.js +50 -2
  54. package/dist/server.js.map +1 -1
  55. package/package.json +1 -1
@@ -51,59 +51,6 @@ export declare const editorConfigSchema: z.ZodObject<{
51
51
  AccountComponent?: import("react").ComponentType<{}> | undefined;
52
52
  }>;
53
53
  export declare const CanopyConfigSchema: z.ZodObject<{
54
- schema: z.ZodOptional<z.ZodObject<{
55
- entries: z.ZodOptional<z.ZodArray<z.ZodObject<{
56
- name: z.ZodString;
57
- format: z.ZodEnum<["md", "mdx", "json", "yaml"]>;
58
- schema: z.ZodArray<z.ZodLazy<z.ZodTypeAny>, "many">;
59
- label: z.ZodOptional<z.ZodString>;
60
- description: z.ZodOptional<z.ZodString>;
61
- default: z.ZodOptional<z.ZodBoolean>;
62
- maxItems: z.ZodOptional<z.ZodNumber>;
63
- }, "strip", z.ZodTypeAny, {
64
- name: string;
65
- format: "mdx" | "md" | "json" | "yaml";
66
- schema: any[];
67
- description?: string | undefined;
68
- default?: boolean | undefined;
69
- label?: string | undefined;
70
- maxItems?: number | undefined;
71
- }, {
72
- name: string;
73
- format: "mdx" | "md" | "json" | "yaml";
74
- schema: any[];
75
- description?: string | undefined;
76
- default?: boolean | undefined;
77
- label?: string | undefined;
78
- maxItems?: number | undefined;
79
- }>, "many">>;
80
- collections: z.ZodOptional<z.ZodArray<z.ZodTypeAny, "many">>;
81
- order: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
82
- }, "strip", z.ZodTypeAny, {
83
- entries?: {
84
- name: string;
85
- format: "mdx" | "md" | "json" | "yaml";
86
- schema: any[];
87
- description?: string | undefined;
88
- default?: boolean | undefined;
89
- label?: string | undefined;
90
- maxItems?: number | undefined;
91
- }[] | undefined;
92
- collections?: any[] | undefined;
93
- order?: string[] | undefined;
94
- }, {
95
- entries?: {
96
- name: string;
97
- format: "mdx" | "md" | "json" | "yaml";
98
- schema: any[];
99
- description?: string | undefined;
100
- default?: boolean | undefined;
101
- label?: string | undefined;
102
- maxItems?: number | undefined;
103
- }[] | undefined;
104
- collections?: any[] | undefined;
105
- order?: string[] | undefined;
106
- }>>;
107
54
  media: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
108
55
  adapter: z.ZodLiteral<"local">;
109
56
  publicBaseUrl: z.ZodOptional<z.ZodString>;
@@ -197,7 +144,7 @@ export declare const CanopyConfigSchema: z.ZodObject<{
197
144
  }, {
198
145
  contentSync?: "off" | "warn" | undefined;
199
146
  }>>;
200
- }, "strip", z.ZodTypeAny, {
147
+ }, "strict", z.ZodTypeAny, {
201
148
  gitBotAuthorName: string;
202
149
  gitBotAuthorEmail: string;
203
150
  mode: "prod" | "dev";
@@ -243,19 +190,6 @@ export declare const CanopyConfigSchema: z.ZodObject<{
243
190
  } | undefined;
244
191
  authPlugin?: AuthPlugin | undefined;
245
192
  entryLinkUrl?: EntryLinkUrlResolver | undefined;
246
- schema?: {
247
- entries?: {
248
- name: string;
249
- format: "mdx" | "md" | "json" | "yaml";
250
- schema: any[];
251
- description?: string | undefined;
252
- default?: boolean | undefined;
253
- label?: string | undefined;
254
- maxItems?: number | undefined;
255
- }[] | undefined;
256
- collections?: any[] | undefined;
257
- order?: string[] | undefined;
258
- } | undefined;
259
193
  }, {
260
194
  gitBotAuthorName: string;
261
195
  gitBotAuthorEmail: string;
@@ -302,19 +236,6 @@ export declare const CanopyConfigSchema: z.ZodObject<{
302
236
  } | undefined;
303
237
  authPlugin?: AuthPlugin | undefined;
304
238
  entryLinkUrl?: EntryLinkUrlResolver | undefined;
305
- schema?: {
306
- entries?: {
307
- name: string;
308
- format: "mdx" | "md" | "json" | "yaml";
309
- schema: any[];
310
- description?: string | undefined;
311
- default?: boolean | undefined;
312
- label?: string | undefined;
313
- maxItems?: number | undefined;
314
- }[] | undefined;
315
- collections?: any[] | undefined;
316
- order?: string[] | undefined;
317
- } | undefined;
318
239
  }>;
319
240
  /**
320
241
  * Helper to get schema default values.
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/config/schemas/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAKrE,eAAO,MAAM,yBAAyB,4CAA4C,CAAA;AAClF,eAAO,MAAM,uBAAuB,4CAA4C,CAAA;AAChF,eAAO,MAAM,uBAAuB,2BAA6B,CAAA;AACjE,eAAO,MAAM,uBAAuB,2BAA+B,CAAA;AACnE,eAAO,MAAM,sBAAsB,aAAoB,CAAA;AACvD,eAAO,MAAM,sBAAsB,aAAoB,CAAA;AACvD,eAAO,MAAM,uBAAuB,aAAqB,CAAA;AACzD,eAAO,MAAM,uBAAuB,2BAAyC,CAAA;AAC7E,eAAO,MAAM,mBAAmB,0CAAyC,CAAA;AACzE,eAAO,MAAM,gBAAgB,+CAAiD,CAAA;AAC9E,eAAO,MAAM,iBAAiB,qHAAwC,CAAA;AACtE,eAAO,MAAM,gBAAgB,4BAA+B,CAAA;AAC5D,eAAO,MAAM,oBAAoB,2BAA6B,CAAA;AAC9D,eAAO,MAAM,oBAAoB,0CAA0C,CAAA;AAG3E,eAAO,MAAM,eAAe;;;;;;EAE1B,CAAA;AAGF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;EAU7B,CAAA;AAGF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuB7B,CAAA;AAEF;;;GAGG;AACH,2FAA2F;AAC3F,eAAO,MAAM,sBAAsB,uBAAuB,CAAA;AAE1D,eAAO,MAAM,iBAAiB;;;;;;;;;;CAU5B,CAAA"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/config/schemas/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAKrE,eAAO,MAAM,yBAAyB,4CAA4C,CAAA;AAClF,eAAO,MAAM,uBAAuB,4CAA4C,CAAA;AAChF,eAAO,MAAM,uBAAuB,2BAA6B,CAAA;AACjE,eAAO,MAAM,uBAAuB,2BAA+B,CAAA;AACnE,eAAO,MAAM,sBAAsB,aAAoB,CAAA;AACvD,eAAO,MAAM,sBAAsB,aAAoB,CAAA;AACvD,eAAO,MAAM,uBAAuB,aAAqB,CAAA;AACzD,eAAO,MAAM,uBAAuB,2BAAyC,CAAA;AAC7E,eAAO,MAAM,mBAAmB,0CAAyC,CAAA;AACzE,eAAO,MAAM,gBAAgB,+CAAiD,CAAA;AAC9E,eAAO,MAAM,iBAAiB,qHAAwC,CAAA;AACtE,eAAO,MAAM,gBAAgB,4BAA+B,CAAA;AAC5D,eAAO,MAAM,oBAAoB,2BAA6B,CAAA;AAC9D,eAAO,MAAM,oBAAoB,0CAA0C,CAAA;AAG3E,eAAO,MAAM,eAAe;;;;;;EAE1B,CAAA;AAGF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;EAU7B,CAAA;AAGF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwBpB,CAAA;AAEX;;;GAGG;AACH,2FAA2F;AAC3F,eAAO,MAAM,sBAAsB,uBAAuB,CAAA;AAE1D,eAAO,MAAM,iBAAiB;;;;;;;;;;CAU5B,CAAA"}
@@ -2,7 +2,7 @@
2
2
  * Main CanopyConfig Zod schema - composes all sub-schemas.
3
3
  */
4
4
  import { z } from 'zod';
5
- import { rootCollectionSchema, relativePathSchema } from './collection.js';
5
+ import { relativePathSchema } from './collection.js';
6
6
  import { mediaSchema } from './media.js';
7
7
  // Default value schemas
8
8
  export const defaultBranchAccessSchema = z.enum(['allow', 'deny']).default('deny');
@@ -35,9 +35,9 @@ export const editorConfigSchema = z.object({
35
35
  // Optional: custom account component (e.g., Clerk's UserButton)
36
36
  AccountComponent: z.custom().optional(),
37
37
  });
38
- // Main CanopyConfig schema
39
- export const CanopyConfigSchema = z.object({
40
- schema: rootCollectionSchema.optional(),
38
+ // Main CanopyConfig schema.
39
+ export const CanopyConfigSchema = z
40
+ .object({
41
41
  media: mediaSchema.optional(),
42
42
  defaultBranchAccess: defaultBranchAccessSchema.optional(),
43
43
  defaultPathAccess: defaultPathAccessSchema.optional(),
@@ -59,7 +59,8 @@ export const CanopyConfigSchema = z.object({
59
59
  authPlugin: z.custom().optional(),
60
60
  entryLinkUrl: z.custom().optional(),
61
61
  dev: devConfigSchema.optional(),
62
- });
62
+ })
63
+ .strict();
63
64
  /**
64
65
  * Helper to get schema default values.
65
66
  * This centralizes default value extraction from Zod schemas.
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/config/schemas/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/config/schemas/config.ts"],"names":[],"mappings":"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"}
@@ -1,33 +1,40 @@
1
1
  /**
2
- * Configuration validation utilities.
2
+ * Field-shape validation utilities for entry schemas.
3
+ *
4
+ * These helpers validate individual `EntrySchema` field arrays — they're invoked
5
+ * from `createEntrySchemaRegistry` so the canonical schema-authoring path runs
6
+ * the same checks. Exported so the test suite can exercise them directly.
3
7
  */
4
8
  import type { CanopyConfig } from './types';
5
9
  /**
6
10
  * Recursively check that all select fields have options defined.
7
11
  * Throws an error if a select field is missing options.
8
12
  */
9
- export declare const ensureSelectFieldsHaveOptions: (config: unknown) => void;
13
+ export declare const ensureSelectFieldsHaveOptions: (fields: unknown) => void;
10
14
  /**
11
15
  * Recursively check that all reference fields have at least one of `collections` or `entryTypes`.
12
16
  * Throws an error if a reference field has neither.
13
17
  */
14
- export declare const ensureReferenceFieldsHaveScope: (config: unknown) => void;
18
+ export declare const ensureReferenceFieldsHaveScope: (fields: unknown) => void;
15
19
  /**
16
20
  * Validate that inline groups don't cause field name collisions within the same scope.
17
21
  * Because inline groups flatten their children into the parent scope, a field name used
18
22
  * in a group that also appears as a sibling field (or in another group) will silently
19
23
  * overwrite data on read/write.
24
+ *
25
+ * Pass a label (typically the entry-type name from the registry) for clearer error messages.
20
26
  */
21
- export declare const ensureNoFlattenedFieldNameCollisions: (config: unknown) => void;
27
+ export declare const ensureNoFlattenedFieldNameCollisions: (fields: unknown, scopeLabel?: string) => void;
22
28
  /**
23
29
  * Validate that inline groups (type: 'group') only appear at the top level of entry
24
30
  * schemas, not inside object or block fields. Groups inside complex fields would produce
25
31
  * correct TypeScript types but broken editor rendering.
26
32
  */
27
- export declare const ensureNoGroupsInsideComplexFields: (config: unknown) => void;
33
+ export declare const ensureNoGroupsInsideComplexFields: (fields: unknown) => void;
28
34
  /**
29
35
  * Validate and normalize a CanopyConfig object.
30
- * Performs Zod validation, checks select field options, and normalizes paths.
36
+ * Performs Zod validation and normalizes paths. Field-shape validation for
37
+ * entry schemas runs at `createEntrySchemaRegistry` time.
31
38
  *
32
39
  * @param config - Raw configuration input
33
40
  * @returns Validated and normalized CanopyConfig
@@ -1 +1 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/config/validation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAE3C;;;GAGG;AACH,eAAO,MAAM,6BAA6B,GAAI,QAAQ,OAAO,KAAG,IAwC/D,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,8BAA8B,GAAI,QAAQ,OAAO,KAAG,IA4ChE,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,oCAAoC,GAAI,QAAQ,OAAO,KAAG,IA2EtE,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,iCAAiC,GAAI,QAAQ,OAAO,KAAG,IA0CnE,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,GAAI,QAAQ,OAAO,KAAG,YAatD,CAAA"}
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/config/validation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAE3C;;;GAGG;AACH,eAAO,MAAM,6BAA6B,GAAI,QAAQ,OAAO,KAAG,IAoB/D,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,8BAA8B,GAAI,QAAQ,OAAO,KAAG,IA0BhE,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,oCAAoC,GAC/C,QAAQ,OAAO,EACf,mBAA2B,KAC1B,IA0DF,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,iCAAiC,GAAI,QAAQ,OAAO,KAAG,IA4BnE,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,GAAI,QAAQ,OAAO,KAAG,YAQtD,CAAA"}
@@ -1,111 +1,81 @@
1
1
  /**
2
- * Configuration validation utilities.
2
+ * Field-shape validation utilities for entry schemas.
3
+ *
4
+ * These helpers validate individual `EntrySchema` field arrays — they're invoked
5
+ * from `createEntrySchemaRegistry` so the canonical schema-authoring path runs
6
+ * the same checks. Exported so the test suite can exercise them directly.
3
7
  */
4
8
  import { CanopyConfigSchema } from './schemas/config.js';
5
- import { normalizePathValue, normalizeSchemaPathsRoot } from './flatten.js';
9
+ import { normalizePathValue } from './flatten.js';
6
10
  /**
7
11
  * Recursively check that all select fields have options defined.
8
12
  * Throws an error if a select field is missing options.
9
13
  */
10
- export const ensureSelectFieldsHaveOptions = (config) => {
11
- const checkFields = (fields) => {
12
- if (!Array.isArray(fields))
13
- return;
14
- for (const field of fields) {
15
- const f = field;
16
- if (f?.type === 'select' && (!Array.isArray(f.options) || f.options.length === 0)) {
17
- const fieldName = f?.name ?? 'unknown';
18
- throw new Error(`Select field "${fieldName}" requires options`);
19
- }
20
- if (f?.type === 'group') {
21
- checkFields(f.fields);
22
- }
23
- if (f?.type === 'object') {
24
- checkFields(f.fields);
25
- }
26
- if (f?.type === 'block' && Array.isArray(f.templates)) {
27
- for (const template of f.templates) {
28
- checkFields(template.fields);
29
- }
30
- }
14
+ export const ensureSelectFieldsHaveOptions = (fields) => {
15
+ if (!Array.isArray(fields))
16
+ return;
17
+ for (const field of fields) {
18
+ const f = field;
19
+ if (f?.type === 'select' && (!Array.isArray(f.options) || f.options.length === 0)) {
20
+ const fieldName = f?.name ?? 'unknown';
21
+ throw new Error(`Select field "${fieldName}" requires options`);
31
22
  }
32
- };
33
- const walkSchema = (root) => {
34
- if (!root)
35
- return;
36
- // Check entries fields (now an array of entry types)
37
- if (Array.isArray(root.entries)) {
38
- for (const entryType of root.entries) {
39
- checkFields(entryType?.schema);
40
- }
23
+ if (f?.type === 'group') {
24
+ ensureSelectFieldsHaveOptions(f.fields);
25
+ }
26
+ if (f?.type === 'object') {
27
+ ensureSelectFieldsHaveOptions(f.fields);
41
28
  }
42
- // Recursively check nested collections
43
- if (Array.isArray(root.collections)) {
44
- for (const collection of root.collections) {
45
- walkSchema(collection);
29
+ if (f?.type === 'block' && Array.isArray(f.templates)) {
30
+ for (const template of f.templates) {
31
+ ensureSelectFieldsHaveOptions(template.fields);
46
32
  }
47
33
  }
48
- };
49
- walkSchema(config?.schema);
34
+ }
50
35
  };
51
36
  /**
52
37
  * Recursively check that all reference fields have at least one of `collections` or `entryTypes`.
53
38
  * Throws an error if a reference field has neither.
54
39
  */
55
- export const ensureReferenceFieldsHaveScope = (config) => {
56
- const checkFields = (fields) => {
57
- if (!Array.isArray(fields))
58
- return;
59
- for (const field of fields) {
60
- const f = field;
61
- if (f?.type === 'reference') {
62
- const hasCollections = Array.isArray(f.collections) && f.collections.length > 0;
63
- const hasEntryTypes = Array.isArray(f.entryTypes) && f.entryTypes.length > 0;
64
- if (!hasCollections && !hasEntryTypes) {
65
- const fieldName = f?.name ?? 'unknown';
66
- throw new Error(`Reference field "${fieldName}" requires at least one of "collections" or "entryTypes"`);
67
- }
68
- }
69
- if (f?.type === 'group') {
70
- checkFields(f.fields);
71
- }
72
- if (f?.type === 'object') {
73
- checkFields(f.fields);
74
- }
75
- if (f?.type === 'block' && Array.isArray(f.templates)) {
76
- for (const template of f.templates) {
77
- checkFields(template.fields);
78
- }
40
+ export const ensureReferenceFieldsHaveScope = (fields) => {
41
+ if (!Array.isArray(fields))
42
+ return;
43
+ for (const field of fields) {
44
+ const f = field;
45
+ if (f?.type === 'reference') {
46
+ const hasCollections = Array.isArray(f.collections) && f.collections.length > 0;
47
+ const hasEntryTypes = Array.isArray(f.entryTypes) && f.entryTypes.length > 0;
48
+ if (!hasCollections && !hasEntryTypes) {
49
+ const fieldName = f?.name ?? 'unknown';
50
+ throw new Error(`Reference field "${fieldName}" requires at least one of "collections" or "entryTypes"`);
79
51
  }
80
52
  }
81
- };
82
- const walkSchema = (root) => {
83
- if (!root)
84
- return;
85
- if (Array.isArray(root.entries)) {
86
- for (const entryType of root.entries) {
87
- checkFields(entryType?.schema);
88
- }
53
+ if (f?.type === 'group') {
54
+ ensureReferenceFieldsHaveScope(f.fields);
89
55
  }
90
- if (Array.isArray(root.collections)) {
91
- for (const collection of root.collections) {
92
- walkSchema(collection);
56
+ if (f?.type === 'object') {
57
+ ensureReferenceFieldsHaveScope(f.fields);
58
+ }
59
+ if (f?.type === 'block' && Array.isArray(f.templates)) {
60
+ for (const template of f.templates) {
61
+ ensureReferenceFieldsHaveScope(template.fields);
93
62
  }
94
63
  }
95
- };
96
- walkSchema(config?.schema);
64
+ }
97
65
  };
98
66
  /**
99
67
  * Validate that inline groups don't cause field name collisions within the same scope.
100
68
  * Because inline groups flatten their children into the parent scope, a field name used
101
69
  * in a group that also appears as a sibling field (or in another group) will silently
102
70
  * overwrite data on read/write.
71
+ *
72
+ * Pass a label (typically the entry-type name from the registry) for clearer error messages.
103
73
  */
104
- export const ensureNoFlattenedFieldNameCollisions = (config) => {
74
+ export const ensureNoFlattenedFieldNameCollisions = (fields, scopeLabel = 'entry schema') => {
105
75
  // Collect all effective field names at a scope level (groups are transparent)
106
- const collectNamesAtScope = (fields) => {
76
+ const collectNamesAtScope = (scopeFields) => {
107
77
  const names = [];
108
- for (const field of fields) {
78
+ for (const field of scopeFields) {
109
79
  const f = field;
110
80
  if (f?.type === 'group') {
111
81
  names.push(...collectNamesAtScope(f.fields ?? []));
@@ -117,9 +87,9 @@ export const ensureNoFlattenedFieldNameCollisions = (config) => {
117
87
  return names;
118
88
  };
119
89
  // Collect all object/block fields at a scope level (including those inside groups)
120
- const collectComplexFields = (fields) => {
90
+ const collectComplexFields = (scopeFields) => {
121
91
  const result = [];
122
- for (const field of fields) {
92
+ for (const field of scopeFields) {
123
93
  const f = field;
124
94
  if (f?.type === 'group') {
125
95
  result.push(...collectComplexFields(f.fields ?? []));
@@ -130,57 +100,43 @@ export const ensureNoFlattenedFieldNameCollisions = (config) => {
130
100
  }
131
101
  return result;
132
102
  };
133
- const checkScope = (fields, scopeLabel) => {
134
- if (!Array.isArray(fields))
103
+ const checkScope = (scopeFields, label) => {
104
+ if (!Array.isArray(scopeFields))
135
105
  return;
136
106
  // Check for collisions at this scope (groups flattened in)
137
- const names = collectNamesAtScope(fields);
107
+ const names = collectNamesAtScope(scopeFields);
138
108
  const seen = new Set();
139
109
  for (const name of names) {
140
110
  if (seen.has(name)) {
141
- throw new Error(`Field name collision in ${scopeLabel}: field "${name}" appears more than once. ` +
111
+ throw new Error(`Field name collision in ${label}: field "${name}" appears more than once. ` +
142
112
  `Note: inline groups flatten their fields into the parent scope.`);
143
113
  }
144
114
  seen.add(name);
145
115
  }
146
116
  // Recurse into nested scopes (object fields and block templates have their own scope)
147
- for (const f of collectComplexFields(fields)) {
117
+ for (const f of collectComplexFields(scopeFields)) {
148
118
  if (f.type === 'object') {
149
- checkScope(f.fields, `${scopeLabel} > object "${f.name}"`);
119
+ checkScope(f.fields, `${label} > object "${f.name}"`);
150
120
  }
151
121
  else if (f.type === 'block' && Array.isArray(f.templates)) {
152
122
  for (const template of f.templates) {
153
- checkScope(template.fields, `${scopeLabel} > block "${f.name}" template "${template.name}"`);
123
+ checkScope(template.fields, `${label} > block "${f.name}" template "${template.name}"`);
154
124
  }
155
125
  }
156
126
  }
157
127
  };
158
- const walkSchema = (root) => {
159
- if (!root)
160
- return;
161
- if (Array.isArray(root.entries)) {
162
- for (const entryType of root.entries) {
163
- checkScope(entryType?.schema, `entry type "${entryType.name}"`);
164
- }
165
- }
166
- if (Array.isArray(root.collections)) {
167
- for (const collection of root.collections) {
168
- walkSchema(collection);
169
- }
170
- }
171
- };
172
- walkSchema(config?.schema);
128
+ checkScope(Array.isArray(fields) ? fields : undefined, scopeLabel);
173
129
  };
174
130
  /**
175
131
  * Validate that inline groups (type: 'group') only appear at the top level of entry
176
132
  * schemas, not inside object or block fields. Groups inside complex fields would produce
177
133
  * correct TypeScript types but broken editor rendering.
178
134
  */
179
- export const ensureNoGroupsInsideComplexFields = (config) => {
180
- const checkFields = (fields, parentType) => {
181
- if (!Array.isArray(fields))
135
+ export const ensureNoGroupsInsideComplexFields = (fields) => {
136
+ const checkFields = (scopeFields, parentType) => {
137
+ if (!Array.isArray(scopeFields))
182
138
  return;
183
- for (const field of fields) {
139
+ for (const field of scopeFields) {
184
140
  const f = field;
185
141
  if (f?.type === 'group') {
186
142
  if (parentType) {
@@ -201,40 +157,22 @@ export const ensureNoGroupsInsideComplexFields = (config) => {
201
157
  }
202
158
  }
203
159
  };
204
- const walkSchema = (root) => {
205
- if (!root)
206
- return;
207
- if (Array.isArray(root.entries)) {
208
- for (const entryType of root.entries) {
209
- checkFields(entryType?.schema);
210
- }
211
- }
212
- if (Array.isArray(root.collections)) {
213
- for (const collection of root.collections) {
214
- walkSchema(collection);
215
- }
216
- }
217
- };
218
- walkSchema(config?.schema);
160
+ checkFields(Array.isArray(fields) ? fields : undefined);
219
161
  };
220
162
  /**
221
163
  * Validate and normalize a CanopyConfig object.
222
- * Performs Zod validation, checks select field options, and normalizes paths.
164
+ * Performs Zod validation and normalizes paths. Field-shape validation for
165
+ * entry schemas runs at `createEntrySchemaRegistry` time.
223
166
  *
224
167
  * @param config - Raw configuration input
225
168
  * @returns Validated and normalized CanopyConfig
226
169
  * @throws Error if validation fails
227
170
  */
228
171
  export const validateCanopyConfig = (config) => {
229
- ensureSelectFieldsHaveOptions(config);
230
- ensureReferenceFieldsHaveScope(config);
231
- ensureNoGroupsInsideComplexFields(config);
232
- ensureNoFlattenedFieldNameCollisions(config);
233
172
  const parsed = CanopyConfigSchema.parse(config);
234
173
  const normalized = {
235
174
  ...parsed,
236
175
  contentRoot: normalizePathValue(parsed.contentRoot ?? 'content'),
237
- schema: parsed.schema ? normalizeSchemaPathsRoot(parsed.schema) : undefined,
238
176
  };
239
177
  return normalized;
240
178
  };
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/config/validation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/config/validation.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { CanopyConfig, CanopyConfigInput, RootCollectionConfig } from './config';
2
2
  import { type CanopyServices, type CreateCanopyServicesOptions } from './services';
3
- type TestConfigInput = Omit<CanopyConfigInput, 'gitBotAuthorName' | 'gitBotAuthorEmail' | 'schema'> & {
3
+ type TestConfigInput = Omit<CanopyConfigInput, 'gitBotAuthorName' | 'gitBotAuthorEmail'> & {
4
4
  schema: RootCollectionConfig;
5
5
  } & Partial<Pick<CanopyConfigInput, 'gitBotAuthorName' | 'gitBotAuthorEmail'>>;
6
6
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"config-test.d.ts","sourceRoot":"","sources":["../src/config-test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAErF,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,2BAA2B,EACjC,MAAM,YAAY,CAAA;AAOnB,KAAK,eAAe,GAAG,IAAI,CACzB,iBAAiB,EACjB,kBAAkB,GAAG,mBAAmB,GAAG,QAAQ,CACpD,GAAG;IACF,MAAM,EAAE,oBAAoB,CAAA;CAC7B,GAAG,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,kBAAkB,GAAG,mBAAmB,CAAC,CAAC,CAAA;AAE9E;;;GAGG;AACH,eAAO,MAAM,sBAAsB,GACjC,QAAQ,eAAe,EACvB,YAAY,OAAO,CAAC,iBAAiB,CAAC,KACrC,YAQF,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,eAAe,EACvB,UAAU,2BAA2B,KACpC,OAAO,CAAC,cAAc,CAkBxB,CAAA"}
1
+ {"version":3,"file":"config-test.d.ts","sourceRoot":"","sources":["../src/config-test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAErF,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,2BAA2B,EACjC,MAAM,YAAY,CAAA;AAOnB,KAAK,eAAe,GAAG,IAAI,CAAC,iBAAiB,EAAE,kBAAkB,GAAG,mBAAmB,CAAC,GAAG;IACzF,MAAM,EAAE,oBAAoB,CAAA;CAC7B,GAAG,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,kBAAkB,GAAG,mBAAmB,CAAC,CAAC,CAAA;AAE9E;;;GAGG;AACH,eAAO,MAAM,sBAAsB,GACjC,QAAQ,eAAe,EACvB,YAAY,OAAO,CAAC,iBAAiB,CAAC,KACrC,YAQF,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,eAAe,EACvB,UAAU,2BAA2B,KACpC,OAAO,CAAC,cAAc,CAkBxB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"config-test.js","sourceRoot":"","sources":["../src/config-test.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAC5D,OAAO,EACL,wBAAwB,GAGzB,MAAM,YAAY,CAAA;AAEnB,MAAM,eAAe,GAAG;IACtB,gBAAgB,EAAE,oBAAoB;IACtC,iBAAiB,EAAE,4BAA4B;CAChD,CAAA;AASD;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,MAAuB,EACvB,SAAsC,EACxB,EAAE;IAChB,0EAA0E;IAC1E,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,mBAAmB,EAAE,GAAG,MAAM,CAAA;IAC1D,OAAO,kBAAkB,CAAC;QACxB,GAAG,eAAe;QAClB,GAAG,mBAAmB;QACtB,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC;KACrB,CAAC,CAAC,MAAM,CAAA;AACX,CAAC,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EACrC,MAAuB,EACvB,OAAqC,EACZ,EAAE;IAC3B,MAAM,YAAY,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAA;IACnD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,WAAW,CAAC,CAAA;IAEzE,+DAA+D;IAC/D,MAAM,qBAAqB,GAAG;QAC5B,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;YACtB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,UAAU;SACX,CAAC;QACF,UAAU,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;KAC3B,CAAA;IAED,OAAO,wBAAwB,CAAC,YAAY,EAAE;QAC5C,GAAG,OAAO;QACV,iBAAiB,EACf,qBAAoF;KACvF,CAAC,CAAA;AACJ,CAAC,CAAA"}
1
+ {"version":3,"file":"config-test.js","sourceRoot":"","sources":["../src/config-test.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAC5D,OAAO,EACL,wBAAwB,GAGzB,MAAM,YAAY,CAAA;AAEnB,MAAM,eAAe,GAAG;IACtB,gBAAgB,EAAE,oBAAoB;IACtC,iBAAiB,EAAE,4BAA4B;CAChD,CAAA;AAMD;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,MAAuB,EACvB,SAAsC,EACxB,EAAE;IAChB,0EAA0E;IAC1E,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,mBAAmB,EAAE,GAAG,MAAM,CAAA;IAC1D,OAAO,kBAAkB,CAAC;QACxB,GAAG,eAAe;QAClB,GAAG,mBAAmB;QACtB,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC;KACrB,CAAC,CAAC,MAAM,CAAA;AACX,CAAC,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EACrC,MAAuB,EACvB,OAAqC,EACZ,EAAE;IAC3B,MAAM,YAAY,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAA;IACnD,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,WAAW,CAAC,CAAA;IAEzE,+DAA+D;IAC/D,MAAM,qBAAqB,GAAG;QAC5B,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;YACtB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,UAAU;SACX,CAAC;QACF,UAAU,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;KAC3B,CAAA;IAED,OAAO,wBAAwB,CAAC,YAAY,EAAE;QAC5C,GAAG,OAAO;QACV,iBAAiB,EACf,qBAAoF;KACvF,CAAC,CAAA;AACJ,CAAC,CAAA"}