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
@@ -9,14 +9,82 @@
9
9
  * adopter via the `extract` callback.
10
10
  */
11
11
  import type { FlatSchemaItem, ContentFormat } from './config';
12
+ /**
13
+ * Adopter-supplied registry mapping entry type names (as they appear in
14
+ * filenames: `partner.index.yaml` → `'partner'`) to their data shapes.
15
+ *
16
+ * Pair with `TypeFromEntrySchema<typeof yourSchema>` to derive shapes from
17
+ * schemas you've already defined — no redeclaration needed.
18
+ *
19
+ * @example
20
+ * ```ts
21
+ * import { defineEntrySchema, type TypeFromEntrySchema } from 'canopycms'
22
+ *
23
+ * const partnerSchema = defineEntrySchema([
24
+ * { name: 'name', type: 'string', isTitle: true },
25
+ * { name: 'tagline', type: 'string' },
26
+ * ])
27
+ * const docSchema = defineEntrySchema([
28
+ * { name: 'title', type: 'string' },
29
+ * ])
30
+ *
31
+ * interface MyEntries {
32
+ * partner: TypeFromEntrySchema<typeof partnerSchema>
33
+ * doc: TypeFromEntrySchema<typeof docSchema>
34
+ * }
35
+ *
36
+ * const canopy = await getCanopyForBuild()
37
+ * await canopy.buildContentTree<NavFields, MyEntries>({
38
+ * extract: (data, meta) => {
39
+ * if (meta.kind === 'collection' && meta.indexEntry?.entryType === 'partner') {
40
+ * // meta.indexEntry.data is narrowed to PartnerContent
41
+ * return { name: meta.indexEntry.data.name }
42
+ * }
43
+ * return { name: '' }
44
+ * },
45
+ * })
46
+ * ```
47
+ */
48
+ export type EntryTypeMap = Record<string, object>;
49
+ /**
50
+ * Default TEntryTypes when an adopter hasn't supplied one.
51
+ * The index signature preserves the loose shape — `meta.indexEntry.data`
52
+ * stays `Record<string, unknown>`, useful for unstructured access without
53
+ * opting in to the discriminated-union pattern. Exported so callers wrapping
54
+ * `buildContentTree` (e.g. CanopyBuildContext) share the same default.
55
+ */
56
+ export type DefaultEntryTypes = {
57
+ [entryType: string]: Record<string, unknown>;
58
+ };
12
59
  /** Metadata passed to the extract callback. */
13
- export interface ContentTreeExtractMeta {
60
+ export interface ContentTreeExtractMeta<TEntryTypes = DefaultEntryTypes> {
14
61
  kind: 'collection' | 'entry';
15
62
  logicalPath: LogicalPath;
16
- /** Entry type name — present when kind is 'entry'. */
17
- entryType?: string;
63
+ /**
64
+ * Entry type name — present when kind is 'entry'.
65
+ * Narrows to a literal union when TEntryTypes is supplied.
66
+ */
67
+ entryType?: keyof TEntryTypes & string;
18
68
  /** Content format — present when kind is 'entry'. */
19
69
  format?: ContentFormat;
70
+ /**
71
+ * The entry with slug 'index' inside a collection, when present.
72
+ * Represents the collection's "identity" under the directory-as-page pattern
73
+ * (e.g., a partner's metadata for /data-catalog/<partner>/, a section landing
74
+ * for /docs/<section>/). Only populated when kind === 'collection' AND the
75
+ * collection contains an entry with slug 'index'. Undefined for collections
76
+ * at the maxDepth cap (entries aren't loaded there).
77
+ *
78
+ * When TEntryTypes is supplied, this becomes a discriminated union: narrow
79
+ * on `indexEntry.entryType` and `data` is typed accordingly.
80
+ */
81
+ indexEntry?: {
82
+ [K in keyof TEntryTypes & string]: {
83
+ entryType: K;
84
+ format: ContentFormat;
85
+ data: TEntryTypes[K];
86
+ };
87
+ }[keyof TEntryTypes & string];
20
88
  }
21
89
  import type { LogicalPath, ContentId, Slug } from './paths/types';
22
90
  export interface ContentTreeNode<T = unknown> {
@@ -46,18 +114,28 @@ export interface ContentTreeNode<T = unknown> {
46
114
  /** Children (entries + subcollections interleaved by order array) */
47
115
  children?: ContentTreeNode<T>[];
48
116
  }
49
- export interface BuildContentTreeOptions<T = unknown> {
117
+ export interface BuildContentTreeOptions<T = unknown, TEntryTypes = DefaultEntryTypes> {
50
118
  /** Starting collection path. Defaults to content root. */
51
119
  rootPath?: string;
52
120
  /**
53
121
  * Extract typed custom fields from each node's raw data.
54
122
  * For entries: data is frontmatter + body (md/mdx) or parsed JSON.
55
123
  * For collections: data is `{ name, label }` from the schema.
124
+ *
125
+ * Supply TEntryTypes to get narrowed access to `meta.indexEntry.data`
126
+ * via discriminated-union narrowing on `meta.indexEntry.entryType`.
127
+ *
128
+ * Note: extract should be a pure mapping. It may be invoked on entry nodes
129
+ * that `filter` later removes (the tree-walk extracts then filters), so any
130
+ * side effects (logging, counters, populating an external index) will see
131
+ * those rejected nodes too.
56
132
  */
57
- extract?: (data: Record<string, unknown>, meta: ContentTreeExtractMeta) => T;
133
+ extract?: (data: Record<string, unknown>, meta: ContentTreeExtractMeta<TEntryTypes>) => T;
58
134
  /**
59
135
  * Filter: return false to exclude a node and its descendants.
60
- * Runs after extract, so `fields` is available.
136
+ * Runs after extract, so `fields` is available. Rejecting a collection
137
+ * short-circuits descendant traversal (no recursion into child collections
138
+ * or entry reads beneath the rejected node).
61
139
  */
62
140
  filter?: (node: ContentTreeNode<T>) => boolean;
63
141
  /** Custom URL path builder. Default: strips content root prefix, collapses index entries to parent path, lowercases. */
@@ -79,5 +157,5 @@ export interface BuildContentTreeOptions<T = unknown> {
79
157
  * @param contentRootName - The content root name (e.g. "content")
80
158
  * @param options - Tree-building options
81
159
  */
82
- export declare function buildContentTree<T = unknown>(branchRoot: string, flatSchema: FlatSchemaItem[], contentRootName: string, options?: BuildContentTreeOptions<T>): Promise<ContentTreeNode<T>[]>;
160
+ export declare function buildContentTree<T = unknown, TEntryTypes = DefaultEntryTypes>(branchRoot: string, flatSchema: FlatSchemaItem[], contentRootName: string, options?: BuildContentTreeOptions<T, TEntryTypes>): Promise<ContentTreeNode<T>[]>;
83
161
  //# sourceMappingURL=content-tree.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"content-tree.d.ts","sourceRoot":"","sources":["../src/content-tree.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAE7D,+CAA+C;AAC/C,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAA;IAC5B,WAAW,EAAE,WAAW,CAAA;IACxB,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,qDAAqD;IACrD,MAAM,CAAC,EAAE,aAAa,CAAA;CACvB;AACD,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AAOjE,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,OAAO;IAC1C,4EAA4E;IAC5E,IAAI,EAAE,MAAM,CAAA;IACZ,uBAAuB;IACvB,WAAW,EAAE,WAAW,CAAA;IACxB,8BAA8B;IAC9B,IAAI,EAAE,YAAY,GAAG,OAAO,CAAA;IAC5B,kEAAkE;IAClE,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,+DAA+D;IAC/D,UAAU,CAAC,EAAE;QACX,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,CAAA;IACD,qDAAqD;IACrD,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,IAAI,CAAA;QACV,SAAS,EAAE,MAAM,CAAA;QACjB,MAAM,EAAE,aAAa,CAAA;QACrB,qEAAqE;QACrE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAC9B,CAAA;IACD,gEAAgE;IAChE,MAAM,CAAC,EAAE,CAAC,CAAA;IACV,qEAAqE;IACrE,QAAQ,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,CAAA;CAChC;AAED,MAAM,WAAW,uBAAuB,CAAC,CAAC,GAAG,OAAO;IAClD,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;;OAIG;IACH,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,sBAAsB,KAAK,CAAC,CAAA;IAC5E;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,OAAO,CAAA;IAC9C,wHAAwH;IACxH,SAAS,CAAC,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,KAAK,MAAM,CAAA;IAC9E;;;;OAIG;IACH,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,MAAM,CAAA;IAC/D,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAoDD;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,GAAG,OAAO,EAChD,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,cAAc,EAAE,EAC5B,eAAe,EAAE,MAAM,EACvB,OAAO,CAAC,EAAE,uBAAuB,CAAC,CAAC,CAAC,GACnC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAmG/B"}
1
+ {"version":3,"file":"content-tree.d.ts","sourceRoot":"","sources":["../src/content-tree.ts"],"names":[],"mappings":"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"}
@@ -67,7 +67,6 @@ export async function buildContentTree(branchRoot, flatSchema, contentRootName,
67
67
  if (!rootCollection)
68
68
  return [];
69
69
  const buildNode = async (collection, depth) => {
70
- // Build collection node (before children, so filter can reject early)
71
70
  const collectionData = {
72
71
  name: collection.name,
73
72
  label: collection.label,
@@ -82,23 +81,47 @@ export async function buildContentTree(branchRoot, flatSchema, contentRootName,
82
81
  label: collection.label,
83
82
  },
84
83
  };
84
+ // maxDepth branch: don't load entries (no children would be exposed anyway).
85
+ // Consequence: extract sees no indexEntry on depth-capped collections.
86
+ if (maxDepth !== undefined && depth >= maxDepth) {
87
+ if (extract) {
88
+ node.fields = extract(collectionData, {
89
+ kind: 'collection',
90
+ logicalPath: collection.logicalPath,
91
+ });
92
+ }
93
+ if (filter && !filter(node))
94
+ return null;
95
+ return node;
96
+ }
97
+ // Load this collection's entries first (needed for indexEntry detection).
98
+ // We deliberately do NOT parallelize the child-collection recursion here:
99
+ // if `filter` rejects this collection, returning early short-circuits all
100
+ // descendant I/O — preserving the pre-existing "filter prunes whole subtree"
101
+ // optimization that the directory-as-page reorder would otherwise lose.
102
+ const entries = await listCollectionEntries(branchRoot, collection);
103
+ // Surface the 'index' entry (when present) to extract via meta.
104
+ // 'index' is the same magic slug Canopy uses in defaultBuildPath to collapse
105
+ // /foo/index URLs to /foo/, keeping conventions consistent. If a collection
106
+ // contains multiple slug==='index' entries (only possible via hand-edited or
107
+ // merged content — the write path forbids it), the first by filename order
108
+ // wins.
109
+ // The cast bridges runtime string keys to the parametric discriminated union;
110
+ // the adopter narrows on `indexEntry.entryType` to get the typed `data`.
111
+ const idx = entries.find((e) => e.slug === 'index');
112
+ const indexEntry = (idx ? { entryType: idx.entryType, format: idx.format, data: idx.data } : undefined);
85
113
  if (extract) {
86
114
  node.fields = extract(collectionData, {
87
115
  kind: 'collection',
88
116
  logicalPath: collection.logicalPath,
117
+ indexEntry,
89
118
  });
90
119
  }
91
120
  if (filter && !filter(node))
92
121
  return null;
93
- // If at max depth, return collection without children
94
- if (maxDepth !== undefined && depth >= maxDepth)
95
- return node;
96
- // Gather child collections and entries in parallel
122
+ // Now recurse into child collections (after filter has had a chance to prune)
97
123
  const childCollections = childrenByParent.get(collection.logicalPath) ?? [];
98
- const [childCollectionNodes, entries] = await Promise.all([
99
- Promise.all(childCollections.map((child) => buildNode(child, depth + 1))),
100
- listCollectionEntries(branchRoot, collection),
101
- ]);
124
+ const childCollectionNodes = await Promise.all(childCollections.map((child) => buildNode(child, depth + 1)));
102
125
  // Build entry nodes
103
126
  const entryNodes = [];
104
127
  for (const entry of entries) {
@@ -146,6 +169,8 @@ function buildEntryNode(entry, buildPath, extract) {
146
169
  },
147
170
  };
148
171
  if (extract) {
172
+ // Runtime gives us the raw string entryType; cast to the parametric key
173
+ // type so callers who supply TEntryTypes get the discriminated-union narrowing.
149
174
  node.fields = extract(entry.data, {
150
175
  kind: 'entry',
151
176
  logicalPath: entry.logicalPath,
@@ -1 +1 @@
1
- {"version":3,"file":"content-tree.js","sourceRoot":"","sources":["../src/content-tree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"content-tree.js","sourceRoot":"","sources":["../src/content-tree.ts"],"names":[],"mappings":"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"}
package/dist/context.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import type { CanopyUser } from './user';
2
2
  import type { CanopyServices } from './services';
3
- import { type BuildContentTreeOptions, type ContentTreeNode } from './content-tree';
3
+ import { type BuildContentTreeOptions, type ContentTreeNode, type DefaultEntryTypes } from './content-tree';
4
4
  import { type ListEntriesOptions, type ListEntriesItem } from './content-listing';
5
5
  export interface CanopyContextOptions {
6
6
  services: CanopyServices;
@@ -26,8 +26,14 @@ export interface CanopyContextOptions {
26
26
  * scanning the whole collection.
27
27
  */
28
28
  export interface CanopyBuildContext {
29
- /** Build a content tree from the schema and filesystem entries. */
30
- buildContentTree: <T = unknown>(options?: BuildContentTreeOptions<T>) => Promise<ContentTreeNode<T>[]>;
29
+ /**
30
+ * Build a content tree from the schema and filesystem entries.
31
+ *
32
+ * Supply TEntryTypes (a map of entry type name → data shape, typically
33
+ * derived via `TypeFromEntrySchema<typeof yourSchema>`) to get narrowed
34
+ * access to `meta.indexEntry.data` inside the `extract` callback.
35
+ */
36
+ buildContentTree: <T = unknown, TEntryTypes = DefaultEntryTypes>(options?: BuildContentTreeOptions<T, TEntryTypes>) => Promise<ContentTreeNode<T>[]>;
31
37
  /** List all content entries as a flat array. */
32
38
  listEntries: <T = Record<string, unknown>>(options?: ListEntriesOptions<T>) => Promise<ListEntriesItem<T>[]>;
33
39
  /** Content reader (auth context applied automatically — admin at build time). */
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AACxC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAQhD,OAAO,EAEL,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACrB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACrB,MAAM,mBAAmB,CAAA;AAO1B,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,cAAc,CAAA;IACxB;;;;;OAKG;IACH,WAAW,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAA;CACvC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,kBAAkB;IACjC,mEAAmE;IACnE,gBAAgB,EAAE,CAAC,CAAC,GAAG,OAAO,EAC5B,OAAO,CAAC,EAAE,uBAAuB,CAAC,CAAC,CAAC,KACjC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IAElC,gDAAgD;IAChD,WAAW,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,KAC5B,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IAElC,iFAAiF;IACjF,IAAI,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE;QACzB,SAAS,EAAE,MAAM,CAAA;QACjB,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAC5B,KAAK,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAExC;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,aAAa,EAAE,CAAC,CAAC,GAAG,OAAO,EACzB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAE,KACvD,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAA;IAE9C,0BAA0B;IAC1B,QAAQ,EAAE,cAAc,CAAA;CACzB;AAED,MAAM,WAAW,aAAc,SAAQ,kBAAkB;IACvD,iCAAiC;IACjC,IAAI,EAAE,UAAU,CAAA;CACjB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB;sBAsBlC,OAAO,CAAC,aAAa,CAAC;;EA0HpD"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AACxC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAQhD,OAAO,EAEL,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACvB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACrB,MAAM,mBAAmB,CAAA;AAO1B,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,cAAc,CAAA;IACxB;;;;;OAKG;IACH,WAAW,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAA;CACvC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;;;OAMG;IACH,gBAAgB,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,WAAW,GAAG,iBAAiB,EAC7D,OAAO,CAAC,EAAE,uBAAuB,CAAC,CAAC,EAAE,WAAW,CAAC,KAC9C,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IAElC,gDAAgD;IAChD,WAAW,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,KAC5B,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IAElC,iFAAiF;IACjF,IAAI,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE;QACzB,SAAS,EAAE,MAAM,CAAA;QACjB,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAC5B,KAAK,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAExC;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,aAAa,EAAE,CAAC,CAAC,GAAG,OAAO,EACzB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAE,KACvD,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAA;IAE9C,0BAA0B;IAC1B,QAAQ,EAAE,cAAc,CAAA;CACzB;AAED,MAAM,WAAW,aAAc,SAAQ,kBAAkB;IACvD,iCAAiC;IACjC,IAAI,EAAE,UAAU,CAAA;CACjB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB;sBAsBlC,OAAO,CAAC,aAAa,CAAC;;EA6HpD"}
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
@@ -1,25 +1,69 @@
1
1
  import type { EntrySchema } from './config';
2
2
  import type { EntrySchemaRegistry } from './schema/types';
3
3
  /**
4
- * Creates a type-safe entry schema registry with runtime validation.
4
+ * Create a type-safe entry schema registry with runtime validation.
5
5
  *
6
- * Maps entry schema names to their field definitions. These names are
7
- * referenced by `.collection.json` files via the `"schema"` property.
6
+ * The KEYS in the registry are the strings that `.collection.json` files (and
7
+ * the editor wire format) use to look up each schema via the `entry.schema`
8
+ * property. You can pick any string — but the **recommended convention is to
9
+ * key by the entry-type name** (the filename token, the same string that
10
+ * appears in `meta.entryType` in `buildContentTree` callbacks). When you do
11
+ * that, `EntryTypesFromRegistry<typeof yourRegistry>` derives the
12
+ * discriminated-union map for `buildContentTree`'s `TEntryTypes` parameter
13
+ * automatically — no parallel interface to maintain.
8
14
  *
9
15
  * @example
16
+ * Recommended — keys are entry-type names:
10
17
  * ```typescript
11
18
  * import { createEntrySchemaRegistry } from 'canopycms/server'
19
+ * import { type EntryTypesFromRegistry, defineEntrySchema } from 'canopycms'
12
20
  *
21
+ * export const partnerSchema = defineEntrySchema([
22
+ * { name: 'name', type: 'string', label: 'Name', isTitle: true },
23
+ * { name: 'isFictional', type: 'boolean', label: 'Fictional?' },
24
+ * ])
25
+ * export const docSchema = defineEntrySchema([
26
+ * { name: 'title', type: 'string', label: 'Title' },
27
+ * ])
28
+ *
29
+ * export const entrySchemaRegistry = createEntrySchemaRegistry({
30
+ * partner: partnerSchema,
31
+ * doc: docSchema,
32
+ * })
33
+ *
34
+ * // Then in .collection.json:
35
+ * // { "name": "partner", "format": "yaml", "schema": "partner" }
36
+ *
37
+ * // Derive entry-type map for typed narrowing:
38
+ * export type EntryTypes = EntryTypesFromRegistry<typeof entrySchemaRegistry>
39
+ *
40
+ * // Per-schema aliases stay one line each, anchored to the registry:
41
+ * export type PartnerContent = EntryTypes['partner']
42
+ * ```
43
+ *
44
+ * @example
45
+ * Also valid — keys are schema-variable names (prior convention):
46
+ * ```typescript
13
47
  * export const entrySchemaRegistry = createEntrySchemaRegistry({
14
- * postSchema: [
15
- * { type: 'string', name: 'title', label: 'Title', required: true },
16
- * { type: 'markdown', name: 'body', label: 'Body' },
17
- * ],
18
- * authorSchema: [
19
- * { type: 'string', name: 'name', label: 'Name', required: true },
20
- * ],
48
+ * partnerSchema, // JS shorthand — key is the string "partnerSchema"
49
+ * docSchema,
21
50
  * })
51
+ *
52
+ * // .collection.json must then say:
53
+ * // { "name": "partner", "schema": "partnerSchema" }
54
+ * //
55
+ * // EntryTypesFromRegistry produces a map keyed by "partnerSchema" rather than
56
+ * // by "partner", so it can't plug straight into buildContentTree's TEntryTypes.
57
+ * // Either rekey the registry to the recommended convention, or declare the
58
+ * // entry-type map manually using TypeFromEntrySchema<typeof partnerSchema>.
22
59
  * ```
60
+ *
61
+ * Runtime validation: registry must be non-empty, each schema must be a
62
+ * non-empty `EntrySchema` array, at most one `isTitle` per schema (string
63
+ * fields only), at most one `isBody` per schema (markdown/mdx only). Field-
64
+ * shape checks: select fields must have options, reference fields must have
65
+ * `collections` or `entryTypes`, no inline groups inside object/block fields,
66
+ * no field-name collisions after group flattening.
23
67
  */
24
68
  export declare function createEntrySchemaRegistry<T extends Record<string, EntrySchema>>(registry: T): T;
25
69
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"entry-schema-registry.d.ts","sourceRoot":"","sources":["../src/entry-schema-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAe,MAAM,UAAU,CAAA;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AA2BzD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAoD/F;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,2BAA2B,CAC/C,mBAAmB,EAAE,mBAAmB,EACxC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAmDf"}
1
+ {"version":3,"file":"entry-schema-registry.d.ts","sourceRoot":"","sources":["../src/entry-schema-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAe,MAAM,UAAU,CAAA;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAiCzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgEG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CA2D/F;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,2BAA2B,CAC/C,mBAAmB,EAAE,mBAAmB,EACxC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAmDf"}
@@ -1,6 +1,7 @@
1
1
  import { countTitleFields, findInvalidTitleFields, findTitleFieldsInLists, } from './utils/title-field.js';
2
2
  import { countBodyFields, findInvalidBodyFields } from './utils/body-field.js';
3
3
  import { flattenGroupFields } from './utils/flatten-group-fields.js';
4
+ import { ensureSelectFieldsHaveOptions, ensureReferenceFieldsHaveScope, ensureNoFlattenedFieldNameCollisions, ensureNoGroupsInsideComplexFields, } from './config/validation.js';
4
5
  /** Look up a field's type by dotted path (e.g., "meta.order").
5
6
  * Groups are transparent — their children are searched at the same path level. */
6
7
  function findFieldType(fields, dottedPath) {
@@ -22,25 +23,69 @@ function findFieldType(fields, dottedPath) {
22
23
  return 'unknown';
23
24
  }
24
25
  /**
25
- * Creates a type-safe entry schema registry with runtime validation.
26
+ * Create a type-safe entry schema registry with runtime validation.
26
27
  *
27
- * Maps entry schema names to their field definitions. These names are
28
- * referenced by `.collection.json` files via the `"schema"` property.
28
+ * The KEYS in the registry are the strings that `.collection.json` files (and
29
+ * the editor wire format) use to look up each schema via the `entry.schema`
30
+ * property. You can pick any string — but the **recommended convention is to
31
+ * key by the entry-type name** (the filename token, the same string that
32
+ * appears in `meta.entryType` in `buildContentTree` callbacks). When you do
33
+ * that, `EntryTypesFromRegistry<typeof yourRegistry>` derives the
34
+ * discriminated-union map for `buildContentTree`'s `TEntryTypes` parameter
35
+ * automatically — no parallel interface to maintain.
29
36
  *
30
37
  * @example
38
+ * Recommended — keys are entry-type names:
31
39
  * ```typescript
32
40
  * import { createEntrySchemaRegistry } from 'canopycms/server'
41
+ * import { type EntryTypesFromRegistry, defineEntrySchema } from 'canopycms'
33
42
  *
43
+ * export const partnerSchema = defineEntrySchema([
44
+ * { name: 'name', type: 'string', label: 'Name', isTitle: true },
45
+ * { name: 'isFictional', type: 'boolean', label: 'Fictional?' },
46
+ * ])
47
+ * export const docSchema = defineEntrySchema([
48
+ * { name: 'title', type: 'string', label: 'Title' },
49
+ * ])
50
+ *
51
+ * export const entrySchemaRegistry = createEntrySchemaRegistry({
52
+ * partner: partnerSchema,
53
+ * doc: docSchema,
54
+ * })
55
+ *
56
+ * // Then in .collection.json:
57
+ * // { "name": "partner", "format": "yaml", "schema": "partner" }
58
+ *
59
+ * // Derive entry-type map for typed narrowing:
60
+ * export type EntryTypes = EntryTypesFromRegistry<typeof entrySchemaRegistry>
61
+ *
62
+ * // Per-schema aliases stay one line each, anchored to the registry:
63
+ * export type PartnerContent = EntryTypes['partner']
64
+ * ```
65
+ *
66
+ * @example
67
+ * Also valid — keys are schema-variable names (prior convention):
68
+ * ```typescript
34
69
  * export const entrySchemaRegistry = createEntrySchemaRegistry({
35
- * postSchema: [
36
- * { type: 'string', name: 'title', label: 'Title', required: true },
37
- * { type: 'markdown', name: 'body', label: 'Body' },
38
- * ],
39
- * authorSchema: [
40
- * { type: 'string', name: 'name', label: 'Name', required: true },
41
- * ],
70
+ * partnerSchema, // JS shorthand — key is the string "partnerSchema"
71
+ * docSchema,
42
72
  * })
73
+ *
74
+ * // .collection.json must then say:
75
+ * // { "name": "partner", "schema": "partnerSchema" }
76
+ * //
77
+ * // EntryTypesFromRegistry produces a map keyed by "partnerSchema" rather than
78
+ * // by "partner", so it can't plug straight into buildContentTree's TEntryTypes.
79
+ * // Either rekey the registry to the recommended convention, or declare the
80
+ * // entry-type map manually using TypeFromEntrySchema<typeof partnerSchema>.
43
81
  * ```
82
+ *
83
+ * Runtime validation: registry must be non-empty, each schema must be a
84
+ * non-empty `EntrySchema` array, at most one `isTitle` per schema (string
85
+ * fields only), at most one `isBody` per schema (markdown/mdx only). Field-
86
+ * shape checks: select fields must have options, reference fields must have
87
+ * `collections` or `entryTypes`, no inline groups inside object/block fields,
88
+ * no field-name collisions after group flattening.
44
89
  */
45
90
  export function createEntrySchemaRegistry(registry) {
46
91
  // Validate that registry is not empty
@@ -79,6 +124,13 @@ export function createEntrySchemaRegistry(registry) {
79
124
  if (invalidBodyFields.length > 0) {
80
125
  throw new Error(`Entry schema registry entry "${key}": field "${invalidBodyFields[0]}" has isBody: true but is type "${findFieldType(schema, invalidBodyFields[0])}" — isBody is only valid on markdown or mdx fields`);
81
126
  }
127
+ // Field-shape checks moved here from validateCanopyConfig — these used to walk
128
+ // the (now-removed) inline-config schema; the registry is now the canonical
129
+ // entry point for entry schemas, so they run here.
130
+ ensureSelectFieldsHaveOptions(schema);
131
+ ensureReferenceFieldsHaveScope(schema);
132
+ ensureNoGroupsInsideComplexFields(schema);
133
+ ensureNoFlattenedFieldNameCollisions(schema, `entry schema "${key}"`);
82
134
  }
83
135
  return registry;
84
136
  }
@@ -1 +1 @@
1
- {"version":3,"file":"entry-schema-registry.js","sourceRoot":"","sources":["../src/entry-schema-registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entry-schema-registry.js","sourceRoot":"","sources":["../src/entry-schema-registry.ts"],"names":[],"mappings":"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"}
@@ -105,6 +105,40 @@ export declare const defineEntrySchema: <const T extends readonly InferableField
105
105
  * Convenience alias to derive the content shape from a `defineEntrySchema` result.
106
106
  */
107
107
  export type TypeFromEntrySchema<T extends readonly InferableField[]> = InferContentShape<T>;
108
+ /**
109
+ * Derive a map of entry-type-name → content-shape from an `entrySchemaRegistry`.
110
+ *
111
+ * Pass `typeof entrySchemaRegistry` as the type argument. The registry must be keyed
112
+ * by entry-type name (the filename token, also the value of `meta.entryType` in
113
+ * `buildContentTree` callbacks) for the derived map to plug straight into
114
+ * `buildContentTree`'s `TEntryTypes` generic.
115
+ *
116
+ * @example
117
+ * ```ts
118
+ * export const entrySchemaRegistry = createEntrySchemaRegistry({
119
+ * partner: partnerSchema,
120
+ * doc: docSchema,
121
+ * home: homeSchema,
122
+ * })
123
+ *
124
+ * export type EntryTypes = EntryTypesFromRegistry<typeof entrySchemaRegistry>
125
+ *
126
+ * // Then per-schema aliases stay one line each, anchored to the registry:
127
+ * export type PartnerContent = EntryTypes['partner']
128
+ *
129
+ * // And the tree-builder narrows on entryType:
130
+ * await canopy.buildContentTree<NavFields, EntryTypes>({
131
+ * extract: (data, meta) => {
132
+ * if (meta.kind === 'collection' && meta.indexEntry?.entryType === 'partner') {
133
+ * // meta.indexEntry.data is typed PartnerContent
134
+ * }
135
+ * },
136
+ * })
137
+ * ```
138
+ */
139
+ export type EntryTypesFromRegistry<T extends Record<string, readonly InferableField[]>> = {
140
+ [K in keyof T]: TypeFromEntrySchema<T[K]>;
141
+ };
108
142
  /**
109
143
  * Define a reusable inline field group — a visual container in the editor that groups
110
144
  * related fields together without creating a nested data key. The group's fields are
@@ -1 +1 @@
1
- {"version":3,"file":"entry-schema.d.ts","sourceRoot":"","sources":["../src/entry-schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entry-schema.d.ts","sourceRoot":"","sources":["../src/entry-schema.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"entry-schema.js","sourceRoot":"","sources":["../src/entry-schema.ts"],"names":[],"mappings":"AA2GA;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAA4C,MAAS,EAAK,EAAE,CAAC,MAAM,CAAA;AAOpG;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAQpC,KAAQ,EACwB,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,OAAgB,EAAE,CAAC,CAAA;AAE3E;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAGpC,KAAQ,EACyB,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,QAAiB,EAAE,CAAC,CAAA;AAE7E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAQjC,QAAW,EACR,EAAE,CAAC,QAAQ,CAAA"}
1
+ {"version":3,"file":"entry-schema.js","sourceRoot":"","sources":["../src/entry-schema.ts"],"names":[],"mappings":"AA2GA;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAA4C,MAAS,EAAK,EAAE,CAAC,MAAM,CAAA;AA0CpG;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAQpC,KAAQ,EACwB,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,OAAgB,EAAE,CAAC,CAAA;AAE3E;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAGpC,KAAQ,EACyB,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,QAAiB,EAAE,CAAC,CAAA;AAE7E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAQjC,QAAW,EACR,EAAE,CAAC,QAAQ,CAAA"}
package/dist/index.d.ts CHANGED
@@ -9,6 +9,6 @@ export type { AuthPlugin, AuthPluginFactory } from './auth/plugin';
9
9
  export type { UserSearchResult, GroupMetadata, AuthenticationResult } from './auth/types';
10
10
  export { isCanopyRequest, isHeadersLike, extractHeaders, validateAuthContext, } from './auth/context-helpers';
11
11
  export type { HeadersLike } from './auth/context-helpers';
12
- export type { ContentTreeNode, BuildContentTreeOptions, ContentTreeExtractMeta, } from './content-tree';
12
+ export type { ContentTreeNode, BuildContentTreeOptions, ContentTreeExtractMeta, EntryTypeMap, DefaultEntryTypes, } from './content-tree';
13
13
  export type { ListEntriesItem, ListEntriesOptions } from './content-listing';
14
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,cAAc,UAAU,CAAA;AACxB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AAGtB,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAClD,YAAY,EACV,eAAe,EACf,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,eAAe,GAChB,MAAM,YAAY,CAAA;AAGnB,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAClE,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACzF,OAAO,EACL,eAAe,EACf,aAAa,EACb,cAAc,EACd,mBAAmB,GACpB,MAAM,wBAAwB,CAAA;AAC/B,YAAY,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACzD,YAAY,EACV,eAAe,EACf,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,gBAAgB,CAAA;AACvB,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,cAAc,UAAU,CAAA;AACxB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AAGtB,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAClD,YAAY,EACV,eAAe,EACf,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,eAAe,GAChB,MAAM,YAAY,CAAA;AAGnB,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAClE,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACzF,OAAO,EACL,eAAe,EACf,aAAa,EACb,cAAc,EACd,mBAAmB,GACpB,MAAM,wBAAwB,CAAA;AAC/B,YAAY,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACzD,YAAY,EACV,eAAe,EACf,uBAAuB,EACvB,sBAAsB,EACtB,YAAY,EACZ,iBAAiB,GAClB,MAAM,gBAAgB,CAAA;AACvB,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA"}