canopycms 0.0.63 → 0.0.64

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 (1209) hide show
  1. package/README.md +153 -19
  2. package/dist/ai/generate.d.ts +4 -5
  3. package/dist/ai/generate.js +0 -1
  4. package/dist/ai/handler.d.ts +3 -4
  5. package/dist/ai/handler.js +0 -1
  6. package/dist/ai/index.d.ts +7 -8
  7. package/dist/ai/index.js +0 -1
  8. package/dist/ai/json-to-markdown.d.ts +1 -2
  9. package/dist/ai/json-to-markdown.js +11 -2
  10. package/dist/ai/resolve-branch.d.ts +1 -2
  11. package/dist/ai/resolve-branch.js +0 -1
  12. package/dist/ai/strip-mdx.d.ts +0 -1
  13. package/dist/ai/strip-mdx.js +0 -1
  14. package/dist/ai/to-plain-text.d.ts +4 -1
  15. package/dist/ai/to-plain-text.js +47 -1
  16. package/dist/ai/transform-components.d.ts +1 -2
  17. package/dist/ai/transform-components.js +0 -1
  18. package/dist/ai/types.d.ts +1 -2
  19. package/dist/ai/types.js +0 -1
  20. package/dist/api/admin-branch-health.d.ts +7 -8
  21. package/dist/api/admin-branch-health.js +0 -1
  22. package/dist/api/admin.d.ts +16 -17
  23. package/dist/api/admin.js +0 -1
  24. package/dist/api/assets.d.ts +8 -9
  25. package/dist/api/assets.js +0 -1
  26. package/dist/api/branch-merge.d.ts +3 -4
  27. package/dist/api/branch-merge.js +0 -1
  28. package/dist/api/branch-review.d.ts +5 -6
  29. package/dist/api/branch-review.js +0 -1
  30. package/dist/api/branch-status.d.ts +15 -16
  31. package/dist/api/branch-status.js +0 -1
  32. package/dist/api/branch-withdraw.d.ts +3 -4
  33. package/dist/api/branch-withdraw.js +0 -1
  34. package/dist/api/branch.d.ts +13 -14
  35. package/dist/api/branch.js +0 -1
  36. package/dist/api/client.d.ts +14 -15
  37. package/dist/api/client.js +0 -1
  38. package/dist/api/comments.d.ts +11 -12
  39. package/dist/api/comments.js +0 -1
  40. package/dist/api/content.d.ts +22 -24
  41. package/dist/api/content.js +132 -18
  42. package/dist/api/entries-constants.d.ts +0 -1
  43. package/dist/api/entries-constants.js +0 -1
  44. package/dist/api/entries.d.ts +12 -13
  45. package/dist/api/entries.js +12 -2
  46. package/dist/api/github-sync.d.ts +2 -3
  47. package/dist/api/github-sync.js +0 -1
  48. package/dist/api/groups.d.ts +6 -7
  49. package/dist/api/groups.js +0 -1
  50. package/dist/api/guards.d.ts +2 -3
  51. package/dist/api/guards.js +0 -1
  52. package/dist/api/index.d.ts +18 -19
  53. package/dist/api/index.js +0 -1
  54. package/dist/api/permissions.d.ts +10 -11
  55. package/dist/api/permissions.js +0 -1
  56. package/dist/api/reference-options.d.ts +3 -4
  57. package/dist/api/reference-options.js +0 -1
  58. package/dist/api/request-body-hash.d.ts +0 -1
  59. package/dist/api/request-body-hash.js +0 -1
  60. package/dist/api/resolve-references.d.ts +6 -7
  61. package/dist/api/resolve-references.js +24 -6
  62. package/dist/api/route-builder.d.ts +2 -3
  63. package/dist/api/route-builder.js +0 -1
  64. package/dist/api/schema.d.ts +43 -44
  65. package/dist/api/schema.js +0 -1
  66. package/dist/api/settings-helpers.d.ts +2 -3
  67. package/dist/api/settings-helpers.js +0 -1
  68. package/dist/api/types.d.ts +6 -7
  69. package/dist/api/types.js +0 -1
  70. package/dist/api/user.d.ts +2 -3
  71. package/dist/api/user.js +0 -1
  72. package/dist/api/validators.d.ts +3 -4
  73. package/dist/api/validators.js +0 -1
  74. package/dist/assets/asset-prefixes.d.ts +1 -2
  75. package/dist/assets/asset-prefixes.js +0 -1
  76. package/dist/assets/asset-src.d.ts +17 -5
  77. package/dist/assets/asset-src.js +15 -3
  78. package/dist/assets/asset-url.d.ts +28 -7
  79. package/dist/assets/asset-url.js +20 -15
  80. package/dist/assets/factory.d.ts +2 -3
  81. package/dist/assets/factory.js +0 -2
  82. package/dist/assets/finalize.d.ts +2 -3
  83. package/dist/assets/finalize.js +0 -1
  84. package/dist/assets/index.d.ts +12 -13
  85. package/dist/assets/index.js +0 -1
  86. package/dist/assets/keys.d.ts +1 -2
  87. package/dist/assets/keys.js +0 -1
  88. package/dist/assets/pipeline.d.ts +1 -2
  89. package/dist/assets/pipeline.js +0 -1
  90. package/dist/assets/store-local.d.ts +1 -2
  91. package/dist/assets/store-local.js +0 -1
  92. package/dist/assets/store-s3.d.ts +2 -4
  93. package/dist/assets/store-s3.js +0 -1
  94. package/dist/assets/svg-sanitizer.d.ts +0 -1
  95. package/dist/assets/svg-sanitizer.js +0 -1
  96. package/dist/assets/transform-directives.d.ts +0 -1
  97. package/dist/assets/transform-directives.js +0 -1
  98. package/dist/assets/transform.d.ts +1 -2
  99. package/dist/assets/transform.js +0 -1
  100. package/dist/assets/types.d.ts +0 -1
  101. package/dist/assets/types.js +0 -1
  102. package/dist/auth/cache.d.ts +2 -3
  103. package/dist/auth/cache.js +0 -1
  104. package/dist/auth/caching-auth-plugin.d.ts +3 -4
  105. package/dist/auth/caching-auth-plugin.js +0 -1
  106. package/dist/auth/context-helpers.d.ts +1 -2
  107. package/dist/auth/context-helpers.js +0 -1
  108. package/dist/auth/file-based-auth-cache.d.ts +3 -4
  109. package/dist/auth/file-based-auth-cache.js +0 -1
  110. package/dist/auth/index.d.ts +6 -7
  111. package/dist/auth/index.js +0 -1
  112. package/dist/auth/plugin.d.ts +3 -4
  113. package/dist/auth/plugin.js +0 -1
  114. package/dist/auth/types.d.ts +1 -2
  115. package/dist/auth/types.js +0 -1
  116. package/dist/authorization/branch.d.ts +4 -5
  117. package/dist/authorization/branch.js +0 -1
  118. package/dist/authorization/content.d.ts +6 -7
  119. package/dist/authorization/content.js +0 -1
  120. package/dist/authorization/groups/index.d.ts +2 -3
  121. package/dist/authorization/groups/index.js +0 -1
  122. package/dist/authorization/groups/loader.d.ts +3 -4
  123. package/dist/authorization/groups/loader.js +0 -1
  124. package/dist/authorization/groups/schema.d.ts +1 -2
  125. package/dist/authorization/groups/schema.js +0 -1
  126. package/dist/authorization/helpers.d.ts +0 -1
  127. package/dist/authorization/helpers.js +0 -1
  128. package/dist/authorization/index.d.ts +11 -12
  129. package/dist/authorization/index.js +0 -1
  130. package/dist/authorization/path.d.ts +4 -5
  131. package/dist/authorization/path.js +0 -1
  132. package/dist/authorization/permissions/index.d.ts +2 -3
  133. package/dist/authorization/permissions/index.js +0 -1
  134. package/dist/authorization/permissions/loader.d.ts +4 -5
  135. package/dist/authorization/permissions/loader.js +0 -1
  136. package/dist/authorization/permissions/schema.d.ts +2 -3
  137. package/dist/authorization/permissions/schema.js +0 -1
  138. package/dist/authorization/protected-branch.d.ts +2 -3
  139. package/dist/authorization/protected-branch.js +0 -1
  140. package/dist/authorization/settings-file-store.d.ts +1 -2
  141. package/dist/authorization/settings-file-store.js +0 -1
  142. package/dist/authorization/types.d.ts +6 -7
  143. package/dist/authorization/types.js +0 -1
  144. package/dist/authorization/validation.d.ts +1 -2
  145. package/dist/authorization/validation.js +0 -1
  146. package/dist/branch-health.d.ts +2 -3
  147. package/dist/branch-health.js +0 -1
  148. package/dist/branch-metadata.d.ts +2 -3
  149. package/dist/branch-metadata.js +0 -1
  150. package/dist/branch-registry.d.ts +1 -2
  151. package/dist/branch-registry.js +0 -1
  152. package/dist/branch-schema-cache.d.ts +4 -5
  153. package/dist/branch-schema-cache.js +0 -1
  154. package/dist/branch-workspace.d.ts +4 -5
  155. package/dist/branch-workspace.js +0 -1
  156. package/dist/build/generate-ai-content.d.ts +21 -5
  157. package/dist/build/generate-ai-content.js +98 -6
  158. package/dist/build/index.d.ts +2 -3
  159. package/dist/build/index.js +0 -1
  160. package/dist/build-canopy.d.ts +5 -6
  161. package/dist/build-canopy.js +0 -1
  162. package/dist/build-mode.d.ts +1 -2
  163. package/dist/build-mode.js +0 -1
  164. package/dist/cli/cli.d.ts +1 -2
  165. package/dist/cli/cli.js +1131 -486
  166. package/dist/cli/generate-ai-content.d.ts +0 -1
  167. package/dist/cli/generate-ai-content.js +1000 -360
  168. package/dist/cli/init.d.ts +1 -2
  169. package/dist/cli/init.js +12 -2
  170. package/dist/cli/migrate.d.ts +5 -3
  171. package/dist/cli/migrate.js +5 -3
  172. package/dist/cli/project-detect.d.ts +5 -2
  173. package/dist/cli/project-detect.js +5 -1
  174. package/dist/cli/project-root.d.ts +0 -1
  175. package/dist/cli/project-root.js +0 -1
  176. package/dist/cli/sync.d.ts +0 -1
  177. package/dist/cli/sync.js +0 -1
  178. package/dist/cli/template-files/deploy-cms.yml.template +8 -6
  179. package/dist/cli/templates.d.ts +0 -1
  180. package/dist/cli/templates.js +0 -1
  181. package/dist/client.d.ts +13 -14
  182. package/dist/client.js +0 -1
  183. package/dist/comment-store.d.ts +0 -1
  184. package/dist/comment-store.js +0 -1
  185. package/dist/config/flatten.d.ts +1 -2
  186. package/dist/config/flatten.js +0 -1
  187. package/dist/config/helpers.d.ts +3 -4
  188. package/dist/config/helpers.js +2 -2
  189. package/dist/config/index.d.ts +10 -11
  190. package/dist/config/index.js +0 -1
  191. package/dist/config/schemas/collection.d.ts +0 -1
  192. package/dist/config/schemas/collection.js +0 -1
  193. package/dist/config/schemas/config.d.ts +7 -4
  194. package/dist/config/schemas/config.js +12 -1
  195. package/dist/config/schemas/field.d.ts +3 -1
  196. package/dist/config/schemas/field.js +5 -1
  197. package/dist/config/schemas/media.d.ts +0 -1
  198. package/dist/config/schemas/media.js +0 -1
  199. package/dist/config/schemas/permissions.d.ts +0 -1
  200. package/dist/config/schemas/permissions.js +0 -1
  201. package/dist/config/types.d.ts +55 -9
  202. package/dist/config/types.js +0 -1
  203. package/dist/config/validation.d.ts +1 -2
  204. package/dist/config/validation.js +0 -1
  205. package/dist/config.d.ts +2 -3
  206. package/dist/config.js +0 -1
  207. package/dist/content-id-index.d.ts +1 -2
  208. package/dist/content-id-index.js +0 -1
  209. package/dist/content-index-generation.d.ts +0 -1
  210. package/dist/content-index-generation.js +0 -1
  211. package/dist/content-index-registry.d.ts +0 -1
  212. package/dist/content-index-registry.js +0 -1
  213. package/dist/content-listing.d.ts +75 -59
  214. package/dist/content-listing.js +76 -83
  215. package/dist/content-reader.d.ts +4 -5
  216. package/dist/content-reader.js +22 -3
  217. package/dist/content-store.d.ts +137 -6
  218. package/dist/content-store.js +294 -22
  219. package/dist/content-tree.d.ts +15 -5
  220. package/dist/content-tree.js +27 -8
  221. package/dist/context.d.ts +9 -6
  222. package/dist/context.js +0 -1
  223. package/dist/dev-content-watcher.d.ts +2 -3
  224. package/dist/dev-content-watcher.js +0 -1
  225. package/dist/editor/BranchManager.d.ts +4 -5
  226. package/dist/editor/BranchManager.js +0 -1
  227. package/dist/editor/CanopyEditor.d.ts +2 -3
  228. package/dist/editor/CanopyEditor.js +1 -2
  229. package/dist/editor/CanopyEditorPage.d.ts +2 -3
  230. package/dist/editor/CanopyEditorPage.js +0 -1
  231. package/dist/editor/CommentsPanel.d.ts +2 -3
  232. package/dist/editor/CommentsPanel.js +0 -1
  233. package/dist/editor/Editor.d.ts +13 -8
  234. package/dist/editor/Editor.js +4 -5
  235. package/dist/editor/EditorPanes.d.ts +0 -1
  236. package/dist/editor/EditorPanes.js +0 -1
  237. package/dist/editor/EntryNavigator.d.ts +1 -2
  238. package/dist/editor/EntryNavigator.js +0 -1
  239. package/dist/editor/FormRenderer.d.ts +2 -3
  240. package/dist/editor/FormRenderer.js +22 -3
  241. package/dist/editor/GroupManager.d.ts +2 -3
  242. package/dist/editor/GroupManager.js +0 -1
  243. package/dist/editor/PermissionManager.d.ts +2 -3
  244. package/dist/editor/PermissionManager.js +0 -1
  245. package/dist/editor/admin/SystemHealthPanel.d.ts +0 -1
  246. package/dist/editor/admin/SystemHealthPanel.js +0 -1
  247. package/dist/editor/admin/useSystemHealth.d.ts +2 -3
  248. package/dist/editor/admin/useSystemHealth.js +0 -1
  249. package/dist/editor/canopy-path.d.ts +0 -1
  250. package/dist/editor/canopy-path.js +0 -1
  251. package/dist/editor/client-reference-resolver.d.ts +13 -4
  252. package/dist/editor/client-reference-resolver.js +18 -8
  253. package/dist/editor/comments/BranchComments.d.ts +2 -3
  254. package/dist/editor/comments/BranchComments.js +0 -1
  255. package/dist/editor/comments/EntryComments.d.ts +1 -2
  256. package/dist/editor/comments/EntryComments.js +0 -1
  257. package/dist/editor/comments/FieldWrapper.d.ts +1 -2
  258. package/dist/editor/comments/FieldWrapper.js +0 -1
  259. package/dist/editor/comments/InlineCommentThread.d.ts +2 -3
  260. package/dist/editor/comments/InlineCommentThread.js +0 -1
  261. package/dist/editor/comments/ThreadCarousel.d.ts +2 -3
  262. package/dist/editor/comments/ThreadCarousel.js +0 -1
  263. package/dist/editor/components/ConfirmDeleteModal.d.ts +0 -1
  264. package/dist/editor/components/ConfirmDeleteModal.js +0 -1
  265. package/dist/editor/components/EditorFooter.d.ts +0 -1
  266. package/dist/editor/components/EditorFooter.js +0 -1
  267. package/dist/editor/components/EditorHeader.d.ts +4 -5
  268. package/dist/editor/components/EditorHeader.js +0 -1
  269. package/dist/editor/components/EditorSidebar.d.ts +1 -2
  270. package/dist/editor/components/EditorSidebar.js +0 -1
  271. package/dist/editor/components/EntryCreateModal.d.ts +0 -1
  272. package/dist/editor/components/EntryCreateModal.js +21 -10
  273. package/dist/editor/components/RenameEntryModal.d.ts +0 -1
  274. package/dist/editor/components/RenameEntryModal.js +0 -1
  275. package/dist/editor/components/UserBadge.d.ts +2 -3
  276. package/dist/editor/components/UserBadge.js +0 -1
  277. package/dist/editor/components/index.d.ts +3 -4
  278. package/dist/editor/components/index.js +0 -1
  279. package/dist/editor/context/ApiClientContext.d.ts +9 -3
  280. package/dist/editor/context/ApiClientContext.js +8 -4
  281. package/dist/editor/context/AssetContext.d.ts +26 -2
  282. package/dist/editor/context/AssetContext.js +23 -3
  283. package/dist/editor/context/EditorStateContext.d.ts +1 -2
  284. package/dist/editor/context/EditorStateContext.js +0 -1
  285. package/dist/editor/context/SWRProvider.d.ts +0 -1
  286. package/dist/editor/context/SWRProvider.js +0 -1
  287. package/dist/editor/context/index.d.ts +4 -5
  288. package/dist/editor/context/index.js +0 -1
  289. package/dist/editor/editor-config.d.ts +2 -3
  290. package/dist/editor/editor-config.js +0 -1
  291. package/dist/editor/editor-utils.d.ts +22 -10
  292. package/dist/editor/editor-utils.js +41 -10
  293. package/dist/editor/fields/BlockField.d.ts +1 -2
  294. package/dist/editor/fields/BlockField.js +0 -1
  295. package/dist/editor/fields/CodeField.d.ts +0 -1
  296. package/dist/editor/fields/CodeField.js +0 -1
  297. package/dist/editor/fields/DateTimeField.d.ts +0 -1
  298. package/dist/editor/fields/DateTimeField.js +0 -1
  299. package/dist/editor/fields/ImageField.d.ts +1 -2
  300. package/dist/editor/fields/ImageField.js +0 -1
  301. package/dist/editor/fields/InlineGroupField.d.ts +2 -3
  302. package/dist/editor/fields/InlineGroupField.js +0 -1
  303. package/dist/editor/fields/MarkdownField.d.ts +0 -1
  304. package/dist/editor/fields/MarkdownField.js +0 -1
  305. package/dist/editor/fields/MdxImageDialog.d.ts +0 -1
  306. package/dist/editor/fields/MdxImageDialog.js +0 -1
  307. package/dist/editor/fields/NumberField.d.ts +0 -1
  308. package/dist/editor/fields/NumberField.js +0 -1
  309. package/dist/editor/fields/NumberListField.d.ts +0 -1
  310. package/dist/editor/fields/NumberListField.js +0 -1
  311. package/dist/editor/fields/ObjectField.d.ts +11 -2
  312. package/dist/editor/fields/ObjectField.js +3 -4
  313. package/dist/editor/fields/ReferenceField.d.ts +0 -1
  314. package/dist/editor/fields/ReferenceField.js +8 -3
  315. package/dist/editor/fields/SelectField.d.ts +0 -1
  316. package/dist/editor/fields/SelectField.js +0 -1
  317. package/dist/editor/fields/StringListField.d.ts +0 -1
  318. package/dist/editor/fields/StringListField.js +0 -1
  319. package/dist/editor/fields/TextField.d.ts +0 -1
  320. package/dist/editor/fields/TextField.js +0 -1
  321. package/dist/editor/fields/ToggleField.d.ts +0 -1
  322. package/dist/editor/fields/ToggleField.js +0 -1
  323. package/dist/editor/fields/entry-link/EntryLinkContext.d.ts +1 -2
  324. package/dist/editor/fields/entry-link/EntryLinkContext.js +0 -1
  325. package/dist/editor/fields/entry-link/InsertEntryLink.d.ts +0 -1
  326. package/dist/editor/fields/entry-link/InsertEntryLink.js +0 -1
  327. package/dist/editor/fields/entry-link/index.d.ts +2 -3
  328. package/dist/editor/fields/entry-link/index.js +0 -1
  329. package/dist/editor/group-manager/ExternalGroupsTab.d.ts +1 -2
  330. package/dist/editor/group-manager/ExternalGroupsTab.js +0 -1
  331. package/dist/editor/group-manager/GroupCard.d.ts +1 -2
  332. package/dist/editor/group-manager/GroupCard.js +0 -1
  333. package/dist/editor/group-manager/GroupForm.d.ts +1 -2
  334. package/dist/editor/group-manager/GroupForm.js +0 -1
  335. package/dist/editor/group-manager/InternalGroupsTab.d.ts +1 -2
  336. package/dist/editor/group-manager/InternalGroupsTab.js +0 -1
  337. package/dist/editor/group-manager/MemberList.d.ts +1 -2
  338. package/dist/editor/group-manager/MemberList.js +0 -1
  339. package/dist/editor/group-manager/hooks/useExternalGroupSearch.d.ts +1 -2
  340. package/dist/editor/group-manager/hooks/useExternalGroupSearch.js +0 -1
  341. package/dist/editor/group-manager/hooks/useGroupState.d.ts +1 -2
  342. package/dist/editor/group-manager/hooks/useGroupState.js +0 -1
  343. package/dist/editor/group-manager/hooks/useUserSearch.d.ts +1 -2
  344. package/dist/editor/group-manager/hooks/useUserSearch.js +0 -1
  345. package/dist/editor/group-manager/index.d.ts +5 -6
  346. package/dist/editor/group-manager/index.js +0 -1
  347. package/dist/editor/group-manager/types.d.ts +4 -5
  348. package/dist/editor/group-manager/types.js +0 -1
  349. package/dist/editor/hooks/index.d.ts +14 -15
  350. package/dist/editor/hooks/index.js +0 -1
  351. package/dist/editor/hooks/useBranchActions.d.ts +0 -1
  352. package/dist/editor/hooks/useBranchActions.js +0 -1
  353. package/dist/editor/hooks/useBranchManager.d.ts +4 -5
  354. package/dist/editor/hooks/useBranchManager.js +0 -1
  355. package/dist/editor/hooks/useBranchesData.d.ts +2 -3
  356. package/dist/editor/hooks/useBranchesData.js +0 -1
  357. package/dist/editor/hooks/useCommentSystem.d.ts +2 -3
  358. package/dist/editor/hooks/useCommentSystem.js +0 -1
  359. package/dist/editor/hooks/useCommentsData.d.ts +2 -3
  360. package/dist/editor/hooks/useCommentsData.js +0 -1
  361. package/dist/editor/hooks/useDraftManager.d.ts +3 -4
  362. package/dist/editor/hooks/useDraftManager.js +0 -1
  363. package/dist/editor/hooks/useEditorLayout.d.ts +1 -2
  364. package/dist/editor/hooks/useEditorLayout.js +0 -1
  365. package/dist/editor/hooks/useEntriesData.d.ts +3 -5
  366. package/dist/editor/hooks/useEntriesData.js +0 -3
  367. package/dist/editor/hooks/useEntryLinkResolution.d.ts +2 -3
  368. package/dist/editor/hooks/useEntryLinkResolution.js +0 -1
  369. package/dist/editor/hooks/useEntryManager.d.ts +5 -7
  370. package/dist/editor/hooks/useEntryManager.js +8 -3
  371. package/dist/editor/hooks/useGroupManager.d.ts +2 -3
  372. package/dist/editor/hooks/useGroupManager.js +0 -1
  373. package/dist/editor/hooks/usePermissionManager.d.ts +2 -3
  374. package/dist/editor/hooks/usePermissionManager.js +0 -1
  375. package/dist/editor/hooks/useReferenceResolution.d.ts +1 -2
  376. package/dist/editor/hooks/useReferenceResolution.js +8 -3
  377. package/dist/editor/hooks/useSchemaManager.d.ts +2 -3
  378. package/dist/editor/hooks/useSchemaManager.js +0 -1
  379. package/dist/editor/hooks/useUserContext.d.ts +1 -2
  380. package/dist/editor/hooks/useUserContext.js +8 -3
  381. package/dist/editor/hooks/useUserMetadata.d.ts +2 -3
  382. package/dist/editor/hooks/useUserMetadata.js +0 -1
  383. package/dist/editor/media/AssetCard.d.ts +1 -2
  384. package/dist/editor/media/AssetCard.js +0 -1
  385. package/dist/editor/media/CropStep.d.ts +1 -2
  386. package/dist/editor/media/CropStep.js +0 -1
  387. package/dist/editor/media/MediaLibrary.d.ts +1 -2
  388. package/dist/editor/media/MediaLibrary.js +0 -1
  389. package/dist/editor/media/MediaLibraryBody.d.ts +1 -2
  390. package/dist/editor/media/MediaLibraryBody.js +0 -1
  391. package/dist/editor/media/crop-math.d.ts +1 -2
  392. package/dist/editor/media/crop-math.js +0 -1
  393. package/dist/editor/media/upload-asset.d.ts +2 -3
  394. package/dist/editor/media/upload-asset.js +0 -1
  395. package/dist/editor/media/upload-constants.d.ts +0 -1
  396. package/dist/editor/media/upload-constants.js +0 -1
  397. package/dist/editor/media/useAssetUpload.d.ts +1 -2
  398. package/dist/editor/media/useAssetUpload.js +0 -1
  399. package/dist/editor/media/xhr-upload.d.ts +0 -1
  400. package/dist/editor/media/xhr-upload.js +0 -1
  401. package/dist/editor/permission-manager/GroupSelector.d.ts +1 -2
  402. package/dist/editor/permission-manager/GroupSelector.js +0 -1
  403. package/dist/editor/permission-manager/PermissionEditor.d.ts +1 -2
  404. package/dist/editor/permission-manager/PermissionEditor.js +0 -1
  405. package/dist/editor/permission-manager/PermissionLevelBadge.d.ts +1 -2
  406. package/dist/editor/permission-manager/PermissionLevelBadge.js +0 -1
  407. package/dist/editor/permission-manager/PermissionTree.d.ts +1 -2
  408. package/dist/editor/permission-manager/PermissionTree.js +0 -1
  409. package/dist/editor/permission-manager/UserSelector.d.ts +1 -2
  410. package/dist/editor/permission-manager/UserSelector.js +0 -1
  411. package/dist/editor/permission-manager/constants.d.ts +1 -2
  412. package/dist/editor/permission-manager/constants.js +0 -1
  413. package/dist/editor/permission-manager/hooks/useGroupsAndUsers.d.ts +1 -2
  414. package/dist/editor/permission-manager/hooks/useGroupsAndUsers.js +0 -1
  415. package/dist/editor/permission-manager/hooks/usePermissionTree.d.ts +2 -3
  416. package/dist/editor/permission-manager/hooks/usePermissionTree.js +0 -1
  417. package/dist/editor/permission-manager/index.d.ts +4 -5
  418. package/dist/editor/permission-manager/index.js +0 -1
  419. package/dist/editor/permission-manager/types.d.ts +3 -4
  420. package/dist/editor/permission-manager/types.js +0 -1
  421. package/dist/editor/permission-manager/utils.d.ts +2 -3
  422. package/dist/editor/permission-manager/utils.js +0 -1
  423. package/dist/editor/preview-bridge.d.ts +1 -2
  424. package/dist/editor/preview-bridge.js +0 -1
  425. package/dist/editor/relative-time.d.ts +0 -1
  426. package/dist/editor/relative-time.js +0 -1
  427. package/dist/editor/schema-editor/CollectionEditor.d.ts +4 -5
  428. package/dist/editor/schema-editor/CollectionEditor.js +0 -1
  429. package/dist/editor/schema-editor/EntryTypeEditor.d.ts +2 -3
  430. package/dist/editor/schema-editor/EntryTypeEditor.js +0 -1
  431. package/dist/editor/schema-editor/index.d.ts +2 -3
  432. package/dist/editor/schema-editor/index.js +0 -1
  433. package/dist/editor/theme.d.ts +0 -1
  434. package/dist/editor/theme.js +0 -1
  435. package/dist/editor/utils/env.d.ts +0 -1
  436. package/dist/editor/utils/env.js +0 -1
  437. package/dist/entry-link-resolver.d.ts +1 -2
  438. package/dist/entry-link-resolver.js +0 -1
  439. package/dist/entry-schema-registry.d.ts +3 -4
  440. package/dist/entry-schema-registry.js +6 -2
  441. package/dist/entry-schema.d.ts +114 -3
  442. package/dist/entry-schema.js +46 -1
  443. package/dist/git-manager.d.ts +1 -2
  444. package/dist/git-manager.js +0 -1
  445. package/dist/github-service.d.ts +1 -2
  446. package/dist/github-service.js +0 -1
  447. package/dist/http/handler.d.ts +6 -7
  448. package/dist/http/handler.js +0 -1
  449. package/dist/http/index.d.ts +6 -7
  450. package/dist/http/index.js +0 -1
  451. package/dist/http/router.d.ts +2 -3
  452. package/dist/http/router.js +0 -1
  453. package/dist/http/types.d.ts +0 -1
  454. package/dist/http/types.js +0 -1
  455. package/dist/id.d.ts +2 -3
  456. package/dist/id.js +0 -1
  457. package/dist/index.d.ts +17 -18
  458. package/dist/index.js +0 -1
  459. package/dist/operating-mode/client-safe-strategy.d.ts +1 -2
  460. package/dist/operating-mode/client-safe-strategy.js +0 -1
  461. package/dist/operating-mode/client-unsafe-strategy.d.ts +1 -2
  462. package/dist/operating-mode/client-unsafe-strategy.js +0 -1
  463. package/dist/operating-mode/client.d.ts +3 -4
  464. package/dist/operating-mode/client.js +0 -1
  465. package/dist/operating-mode/deployment-name-fixtures.d.ts +0 -1
  466. package/dist/operating-mode/deployment-name-fixtures.js +0 -1
  467. package/dist/operating-mode/deployment-name.d.ts +0 -1
  468. package/dist/operating-mode/deployment-name.js +0 -1
  469. package/dist/operating-mode/index.d.ts +5 -6
  470. package/dist/operating-mode/index.js +0 -1
  471. package/dist/operating-mode/mode-env.d.ts +1 -2
  472. package/dist/operating-mode/mode-env.js +0 -1
  473. package/dist/operating-mode/types.d.ts +2 -3
  474. package/dist/operating-mode/types.js +0 -1
  475. package/dist/paths/branch-name.d.ts +1 -2
  476. package/dist/paths/branch-name.js +0 -1
  477. package/dist/paths/branch.d.ts +3 -4
  478. package/dist/paths/branch.js +0 -1
  479. package/dist/paths/index.d.ts +8 -9
  480. package/dist/paths/index.js +0 -1
  481. package/dist/paths/normalize-server.d.ts +1 -2
  482. package/dist/paths/normalize-server.js +0 -1
  483. package/dist/paths/normalize.d.ts +1 -2
  484. package/dist/paths/normalize.js +0 -1
  485. package/dist/paths/resolve.d.ts +2 -3
  486. package/dist/paths/resolve.js +0 -1
  487. package/dist/paths/types.d.ts +0 -1
  488. package/dist/paths/types.js +0 -1
  489. package/dist/paths/validation.d.ts +1 -2
  490. package/dist/paths/validation.js +0 -1
  491. package/dist/reference-resolver.d.ts +3 -4
  492. package/dist/reference-resolver.js +0 -1
  493. package/dist/resolve-canopy-user.d.ts +3 -4
  494. package/dist/resolve-canopy-user.js +0 -1
  495. package/dist/resource-generation.d.ts +0 -1
  496. package/dist/resource-generation.js +0 -1
  497. package/dist/schema/index.d.ts +3 -4
  498. package/dist/schema/index.js +0 -1
  499. package/dist/schema/meta-loader.d.ts +3 -4
  500. package/dist/schema/meta-loader.js +3 -3
  501. package/dist/schema/resolver.d.ts +2 -3
  502. package/dist/schema/resolver.js +0 -1
  503. package/dist/schema/schema-store-types.d.ts +2 -3
  504. package/dist/schema/schema-store-types.js +0 -1
  505. package/dist/schema/schema-store.d.ts +6 -7
  506. package/dist/schema/schema-store.js +33 -1
  507. package/dist/schema/types.d.ts +1 -2
  508. package/dist/schema/types.js +0 -1
  509. package/dist/server.d.ts +54 -45
  510. package/dist/server.js +11 -3
  511. package/dist/services.d.ts +10 -11
  512. package/dist/services.js +0 -1
  513. package/dist/settings-workspace.d.ts +12 -15
  514. package/dist/settings-workspace.js +10 -13
  515. package/dist/static/index.d.ts +164 -6
  516. package/dist/static/index.js +242 -7
  517. package/dist/static/seo.d.ts +8 -30
  518. package/dist/static/seo.js +19 -46
  519. package/dist/sync-core.d.ts +0 -1
  520. package/dist/sync-core.js +0 -1
  521. package/dist/task-queue/index.d.ts +2 -3
  522. package/dist/task-queue/index.js +0 -1
  523. package/dist/task-queue/task-queue.d.ts +1 -2
  524. package/dist/task-queue/task-queue.js +0 -1
  525. package/dist/task-queue/types.d.ts +0 -1
  526. package/dist/task-queue/types.js +0 -1
  527. package/dist/types.d.ts +3 -4
  528. package/dist/types.js +0 -1
  529. package/dist/url-collision.d.ts +86 -0
  530. package/dist/url-collision.js +186 -0
  531. package/dist/url-path-resolver.d.ts +11 -2
  532. package/dist/url-path-resolver.js +37 -5
  533. package/dist/user.d.ts +3 -4
  534. package/dist/user.js +0 -1
  535. package/dist/utils/async-mutex.d.ts +0 -1
  536. package/dist/utils/async-mutex.js +0 -1
  537. package/dist/utils/atomic-write.d.ts +0 -1
  538. package/dist/utils/atomic-write.js +0 -1
  539. package/dist/utils/body-field.d.ts +12 -2
  540. package/dist/utils/body-field.js +17 -1
  541. package/dist/utils/content-serialize.d.ts +37 -0
  542. package/dist/utils/content-serialize.js +429 -0
  543. package/dist/utils/content-write-lock.d.ts +12 -16
  544. package/dist/utils/content-write-lock.js +38 -22
  545. package/dist/utils/debug.d.ts +0 -1
  546. package/dist/utils/debug.js +0 -1
  547. package/dist/utils/entry-url.d.ts +17 -1
  548. package/dist/utils/entry-url.js +21 -3
  549. package/dist/utils/error.d.ts +0 -1
  550. package/dist/utils/error.js +0 -1
  551. package/dist/utils/flatten-group-fields.d.ts +1 -2
  552. package/dist/utils/flatten-group-fields.js +0 -1
  553. package/dist/utils/format.d.ts +1 -2
  554. package/dist/utils/format.js +0 -1
  555. package/dist/utils/fs.d.ts +7 -1
  556. package/dist/utils/fs.js +16 -1
  557. package/dist/utils/git.d.ts +1 -2
  558. package/dist/utils/git.js +0 -1
  559. package/dist/utils/logger.d.ts +0 -1
  560. package/dist/utils/logger.js +0 -1
  561. package/dist/utils/occ-json-write.d.ts +0 -1
  562. package/dist/utils/occ-json-write.js +0 -1
  563. package/dist/utils/provisioning-lock.d.ts +17 -4
  564. package/dist/utils/provisioning-lock.js +94 -14
  565. package/dist/utils/sanitize-href.d.ts +2 -3
  566. package/dist/utils/sanitize-href.js +2 -3
  567. package/dist/utils/title-field.d.ts +1 -2
  568. package/dist/utils/title-field.js +0 -1
  569. package/dist/utils/typed-filename.d.ts +61 -0
  570. package/dist/utils/typed-filename.js +92 -0
  571. package/dist/utils/url-prefix.d.ts +121 -0
  572. package/dist/utils/url-prefix.js +158 -0
  573. package/dist/validation/block-structural-keys.d.ts +42 -0
  574. package/dist/validation/block-structural-keys.js +44 -0
  575. package/dist/validation/deletion-checker.d.ts +4 -5
  576. package/dist/validation/deletion-checker.js +0 -1
  577. package/dist/validation/entry-link-validator.d.ts +2 -3
  578. package/dist/validation/entry-link-validator.js +0 -1
  579. package/dist/validation/entry-type-reference-validator.d.ts +1 -2
  580. package/dist/validation/entry-type-reference-validator.js +0 -1
  581. package/dist/validation/entry-validator.d.ts +23 -2
  582. package/dist/validation/entry-validator.js +34 -2
  583. package/dist/validation/field-traversal.d.ts +28 -4
  584. package/dist/validation/field-traversal.js +24 -7
  585. package/dist/validation/reference-validator.d.ts +2 -3
  586. package/dist/validation/reference-validator.js +0 -1
  587. package/dist/worker/cms-worker.d.ts +9 -2
  588. package/dist/worker/cms-worker.js +59 -2
  589. package/dist/worker/log.d.ts +0 -1
  590. package/dist/worker/log.js +0 -1
  591. package/dist/worker/task-queue-config.d.ts +1 -2
  592. package/dist/worker/task-queue-config.js +0 -1
  593. package/dist/worker/task-queue.d.ts +3 -4
  594. package/dist/worker/task-queue.js +0 -1
  595. package/dist/worker/worker-status.d.ts +1 -2
  596. package/dist/worker/worker-status.js +0 -1
  597. package/package.json +2 -6
  598. package/dist/ai/generate.d.ts.map +0 -1
  599. package/dist/ai/generate.js.map +0 -1
  600. package/dist/ai/handler.d.ts.map +0 -1
  601. package/dist/ai/handler.js.map +0 -1
  602. package/dist/ai/index.d.ts.map +0 -1
  603. package/dist/ai/index.js.map +0 -1
  604. package/dist/ai/json-to-markdown.d.ts.map +0 -1
  605. package/dist/ai/json-to-markdown.js.map +0 -1
  606. package/dist/ai/resolve-branch.d.ts.map +0 -1
  607. package/dist/ai/resolve-branch.js.map +0 -1
  608. package/dist/ai/strip-mdx.d.ts.map +0 -1
  609. package/dist/ai/strip-mdx.js.map +0 -1
  610. package/dist/ai/to-plain-text.d.ts.map +0 -1
  611. package/dist/ai/to-plain-text.js.map +0 -1
  612. package/dist/ai/transform-components.d.ts.map +0 -1
  613. package/dist/ai/transform-components.js.map +0 -1
  614. package/dist/ai/types.d.ts.map +0 -1
  615. package/dist/ai/types.js.map +0 -1
  616. package/dist/api/__test__/mock-client.d.ts +0 -231
  617. package/dist/api/__test__/mock-client.d.ts.map +0 -1
  618. package/dist/api/__test__/mock-client.js +0 -388
  619. package/dist/api/__test__/mock-client.js.map +0 -1
  620. package/dist/api/admin-branch-health.d.ts.map +0 -1
  621. package/dist/api/admin-branch-health.js.map +0 -1
  622. package/dist/api/admin.d.ts.map +0 -1
  623. package/dist/api/admin.js.map +0 -1
  624. package/dist/api/assets.d.ts.map +0 -1
  625. package/dist/api/assets.js.map +0 -1
  626. package/dist/api/branch-merge.d.ts.map +0 -1
  627. package/dist/api/branch-merge.js.map +0 -1
  628. package/dist/api/branch-review.d.ts.map +0 -1
  629. package/dist/api/branch-review.js.map +0 -1
  630. package/dist/api/branch-status.d.ts.map +0 -1
  631. package/dist/api/branch-status.js.map +0 -1
  632. package/dist/api/branch-withdraw.d.ts.map +0 -1
  633. package/dist/api/branch-withdraw.js.map +0 -1
  634. package/dist/api/branch.d.ts.map +0 -1
  635. package/dist/api/branch.js.map +0 -1
  636. package/dist/api/client.d.ts.map +0 -1
  637. package/dist/api/client.js.map +0 -1
  638. package/dist/api/comments.d.ts.map +0 -1
  639. package/dist/api/comments.js.map +0 -1
  640. package/dist/api/content.d.ts.map +0 -1
  641. package/dist/api/content.js.map +0 -1
  642. package/dist/api/entries-constants.d.ts.map +0 -1
  643. package/dist/api/entries-constants.js.map +0 -1
  644. package/dist/api/entries.d.ts.map +0 -1
  645. package/dist/api/entries.js.map +0 -1
  646. package/dist/api/github-sync.d.ts.map +0 -1
  647. package/dist/api/github-sync.js.map +0 -1
  648. package/dist/api/groups.d.ts.map +0 -1
  649. package/dist/api/groups.js.map +0 -1
  650. package/dist/api/guards.d.ts.map +0 -1
  651. package/dist/api/guards.js.map +0 -1
  652. package/dist/api/index.d.ts.map +0 -1
  653. package/dist/api/index.js.map +0 -1
  654. package/dist/api/permissions.d.ts.map +0 -1
  655. package/dist/api/permissions.js.map +0 -1
  656. package/dist/api/reference-options.d.ts.map +0 -1
  657. package/dist/api/reference-options.js.map +0 -1
  658. package/dist/api/request-body-hash.d.ts.map +0 -1
  659. package/dist/api/request-body-hash.js.map +0 -1
  660. package/dist/api/resolve-references.d.ts.map +0 -1
  661. package/dist/api/resolve-references.js.map +0 -1
  662. package/dist/api/route-builder.d.ts.map +0 -1
  663. package/dist/api/route-builder.js.map +0 -1
  664. package/dist/api/schema.d.ts.map +0 -1
  665. package/dist/api/schema.js.map +0 -1
  666. package/dist/api/settings-helpers.d.ts.map +0 -1
  667. package/dist/api/settings-helpers.js.map +0 -1
  668. package/dist/api/types.d.ts.map +0 -1
  669. package/dist/api/types.js.map +0 -1
  670. package/dist/api/user.d.ts.map +0 -1
  671. package/dist/api/user.js.map +0 -1
  672. package/dist/api/validators.d.ts.map +0 -1
  673. package/dist/api/validators.js.map +0 -1
  674. package/dist/assets/asset-prefixes.d.ts.map +0 -1
  675. package/dist/assets/asset-prefixes.js.map +0 -1
  676. package/dist/assets/asset-src.d.ts.map +0 -1
  677. package/dist/assets/asset-src.js.map +0 -1
  678. package/dist/assets/asset-url.d.ts.map +0 -1
  679. package/dist/assets/asset-url.js.map +0 -1
  680. package/dist/assets/factory.d.ts.map +0 -1
  681. package/dist/assets/factory.js.map +0 -1
  682. package/dist/assets/finalize.d.ts.map +0 -1
  683. package/dist/assets/finalize.js.map +0 -1
  684. package/dist/assets/index.d.ts.map +0 -1
  685. package/dist/assets/index.js.map +0 -1
  686. package/dist/assets/keys.d.ts.map +0 -1
  687. package/dist/assets/keys.js.map +0 -1
  688. package/dist/assets/pipeline.d.ts.map +0 -1
  689. package/dist/assets/pipeline.js.map +0 -1
  690. package/dist/assets/store-local.d.ts.map +0 -1
  691. package/dist/assets/store-local.js.map +0 -1
  692. package/dist/assets/store-s3.d.ts.map +0 -1
  693. package/dist/assets/store-s3.js.map +0 -1
  694. package/dist/assets/svg-sanitizer.d.ts.map +0 -1
  695. package/dist/assets/svg-sanitizer.js.map +0 -1
  696. package/dist/assets/transform-directives.d.ts.map +0 -1
  697. package/dist/assets/transform-directives.js.map +0 -1
  698. package/dist/assets/transform.d.ts.map +0 -1
  699. package/dist/assets/transform.js.map +0 -1
  700. package/dist/assets/types.d.ts.map +0 -1
  701. package/dist/assets/types.js.map +0 -1
  702. package/dist/auth/cache.d.ts.map +0 -1
  703. package/dist/auth/cache.js.map +0 -1
  704. package/dist/auth/caching-auth-plugin.d.ts.map +0 -1
  705. package/dist/auth/caching-auth-plugin.js.map +0 -1
  706. package/dist/auth/context-helpers.d.ts.map +0 -1
  707. package/dist/auth/context-helpers.js.map +0 -1
  708. package/dist/auth/file-based-auth-cache.d.ts.map +0 -1
  709. package/dist/auth/file-based-auth-cache.js.map +0 -1
  710. package/dist/auth/index.d.ts.map +0 -1
  711. package/dist/auth/index.js.map +0 -1
  712. package/dist/auth/plugin.d.ts.map +0 -1
  713. package/dist/auth/plugin.js.map +0 -1
  714. package/dist/auth/types.d.ts.map +0 -1
  715. package/dist/auth/types.js.map +0 -1
  716. package/dist/authorization/branch.d.ts.map +0 -1
  717. package/dist/authorization/branch.js.map +0 -1
  718. package/dist/authorization/content.d.ts.map +0 -1
  719. package/dist/authorization/content.js.map +0 -1
  720. package/dist/authorization/groups/index.d.ts.map +0 -1
  721. package/dist/authorization/groups/index.js.map +0 -1
  722. package/dist/authorization/groups/loader.d.ts.map +0 -1
  723. package/dist/authorization/groups/loader.js.map +0 -1
  724. package/dist/authorization/groups/schema.d.ts.map +0 -1
  725. package/dist/authorization/groups/schema.js.map +0 -1
  726. package/dist/authorization/helpers.d.ts.map +0 -1
  727. package/dist/authorization/helpers.js.map +0 -1
  728. package/dist/authorization/index.d.ts.map +0 -1
  729. package/dist/authorization/index.js.map +0 -1
  730. package/dist/authorization/path.d.ts.map +0 -1
  731. package/dist/authorization/path.js.map +0 -1
  732. package/dist/authorization/permissions/index.d.ts.map +0 -1
  733. package/dist/authorization/permissions/index.js.map +0 -1
  734. package/dist/authorization/permissions/loader.d.ts.map +0 -1
  735. package/dist/authorization/permissions/loader.js.map +0 -1
  736. package/dist/authorization/permissions/schema.d.ts.map +0 -1
  737. package/dist/authorization/permissions/schema.js.map +0 -1
  738. package/dist/authorization/protected-branch.d.ts.map +0 -1
  739. package/dist/authorization/protected-branch.js.map +0 -1
  740. package/dist/authorization/settings-file-store.d.ts.map +0 -1
  741. package/dist/authorization/settings-file-store.js.map +0 -1
  742. package/dist/authorization/test-utils.d.ts +0 -26
  743. package/dist/authorization/test-utils.d.ts.map +0 -1
  744. package/dist/authorization/test-utils.js +0 -23
  745. package/dist/authorization/test-utils.js.map +0 -1
  746. package/dist/authorization/types.d.ts.map +0 -1
  747. package/dist/authorization/types.js.map +0 -1
  748. package/dist/authorization/validation.d.ts.map +0 -1
  749. package/dist/authorization/validation.js.map +0 -1
  750. package/dist/branch-health.d.ts.map +0 -1
  751. package/dist/branch-health.js.map +0 -1
  752. package/dist/branch-metadata.d.ts.map +0 -1
  753. package/dist/branch-metadata.js.map +0 -1
  754. package/dist/branch-registry.d.ts.map +0 -1
  755. package/dist/branch-registry.js.map +0 -1
  756. package/dist/branch-schema-cache.d.ts.map +0 -1
  757. package/dist/branch-schema-cache.js.map +0 -1
  758. package/dist/branch-workspace.d.ts.map +0 -1
  759. package/dist/branch-workspace.js.map +0 -1
  760. package/dist/build/generate-ai-content.d.ts.map +0 -1
  761. package/dist/build/generate-ai-content.js.map +0 -1
  762. package/dist/build/index.d.ts.map +0 -1
  763. package/dist/build/index.js.map +0 -1
  764. package/dist/build-canopy.d.ts.map +0 -1
  765. package/dist/build-canopy.js.map +0 -1
  766. package/dist/build-mode.d.ts.map +0 -1
  767. package/dist/build-mode.js.map +0 -1
  768. package/dist/cli/cli.d.ts.map +0 -1
  769. package/dist/cli/cli.js.map +0 -1
  770. package/dist/cli/generate-ai-content.d.ts.map +0 -1
  771. package/dist/cli/generate-ai-content.js.map +0 -1
  772. package/dist/cli/init.d.ts.map +0 -1
  773. package/dist/cli/init.js.map +0 -1
  774. package/dist/cli/migrate.d.ts.map +0 -1
  775. package/dist/cli/migrate.js.map +0 -1
  776. package/dist/cli/project-detect.d.ts.map +0 -1
  777. package/dist/cli/project-detect.js.map +0 -1
  778. package/dist/cli/project-root.d.ts.map +0 -1
  779. package/dist/cli/project-root.js.map +0 -1
  780. package/dist/cli/sync.d.ts.map +0 -1
  781. package/dist/cli/sync.js.map +0 -1
  782. package/dist/cli/templates.d.ts.map +0 -1
  783. package/dist/cli/templates.js.map +0 -1
  784. package/dist/client.d.ts.map +0 -1
  785. package/dist/client.js.map +0 -1
  786. package/dist/comment-store.d.ts.map +0 -1
  787. package/dist/comment-store.js.map +0 -1
  788. package/dist/config/flatten.d.ts.map +0 -1
  789. package/dist/config/flatten.js.map +0 -1
  790. package/dist/config/helpers.d.ts.map +0 -1
  791. package/dist/config/helpers.js.map +0 -1
  792. package/dist/config/index.d.ts.map +0 -1
  793. package/dist/config/index.js.map +0 -1
  794. package/dist/config/schemas/collection.d.ts.map +0 -1
  795. package/dist/config/schemas/collection.js.map +0 -1
  796. package/dist/config/schemas/config.d.ts.map +0 -1
  797. package/dist/config/schemas/config.js.map +0 -1
  798. package/dist/config/schemas/field.d.ts.map +0 -1
  799. package/dist/config/schemas/field.js.map +0 -1
  800. package/dist/config/schemas/media.d.ts.map +0 -1
  801. package/dist/config/schemas/media.js.map +0 -1
  802. package/dist/config/schemas/permissions.d.ts.map +0 -1
  803. package/dist/config/schemas/permissions.js.map +0 -1
  804. package/dist/config/types.d.ts.map +0 -1
  805. package/dist/config/types.js.map +0 -1
  806. package/dist/config/validation.d.ts.map +0 -1
  807. package/dist/config/validation.js.map +0 -1
  808. package/dist/config-test.d.ts +0 -20
  809. package/dist/config-test.d.ts.map +0 -1
  810. package/dist/config-test.js +0 -49
  811. package/dist/config-test.js.map +0 -1
  812. package/dist/config.d.ts.map +0 -1
  813. package/dist/config.js.map +0 -1
  814. package/dist/content-id-index.d.ts.map +0 -1
  815. package/dist/content-id-index.js.map +0 -1
  816. package/dist/content-index-generation.d.ts.map +0 -1
  817. package/dist/content-index-generation.js.map +0 -1
  818. package/dist/content-index-registry.d.ts.map +0 -1
  819. package/dist/content-index-registry.js.map +0 -1
  820. package/dist/content-listing.d.ts.map +0 -1
  821. package/dist/content-listing.js.map +0 -1
  822. package/dist/content-reader.d.ts.map +0 -1
  823. package/dist/content-reader.js.map +0 -1
  824. package/dist/content-store.d.ts.map +0 -1
  825. package/dist/content-store.js.map +0 -1
  826. package/dist/content-tree.d.ts.map +0 -1
  827. package/dist/content-tree.js.map +0 -1
  828. package/dist/context.d.ts.map +0 -1
  829. package/dist/context.js.map +0 -1
  830. package/dist/dev-content-watcher.d.ts.map +0 -1
  831. package/dist/dev-content-watcher.js.map +0 -1
  832. package/dist/editor/BranchManager.d.ts.map +0 -1
  833. package/dist/editor/BranchManager.js.map +0 -1
  834. package/dist/editor/CanopyEditor.d.ts.map +0 -1
  835. package/dist/editor/CanopyEditor.js.map +0 -1
  836. package/dist/editor/CanopyEditorPage.d.ts.map +0 -1
  837. package/dist/editor/CanopyEditorPage.js.map +0 -1
  838. package/dist/editor/CommentsPanel.d.ts.map +0 -1
  839. package/dist/editor/CommentsPanel.js.map +0 -1
  840. package/dist/editor/Editor.d.ts.map +0 -1
  841. package/dist/editor/Editor.js.map +0 -1
  842. package/dist/editor/EditorPanes.d.ts.map +0 -1
  843. package/dist/editor/EditorPanes.js.map +0 -1
  844. package/dist/editor/EntryNavigator.d.ts.map +0 -1
  845. package/dist/editor/EntryNavigator.js.map +0 -1
  846. package/dist/editor/FormRenderer.d.ts.map +0 -1
  847. package/dist/editor/FormRenderer.js.map +0 -1
  848. package/dist/editor/GroupManager.d.ts.map +0 -1
  849. package/dist/editor/GroupManager.js.map +0 -1
  850. package/dist/editor/PermissionManager.d.ts.map +0 -1
  851. package/dist/editor/PermissionManager.js.map +0 -1
  852. package/dist/editor/admin/SystemHealthPanel.d.ts.map +0 -1
  853. package/dist/editor/admin/SystemHealthPanel.js.map +0 -1
  854. package/dist/editor/admin/useSystemHealth.d.ts.map +0 -1
  855. package/dist/editor/admin/useSystemHealth.js.map +0 -1
  856. package/dist/editor/canopy-path.d.ts.map +0 -1
  857. package/dist/editor/canopy-path.js.map +0 -1
  858. package/dist/editor/client-reference-resolver.d.ts.map +0 -1
  859. package/dist/editor/client-reference-resolver.js.map +0 -1
  860. package/dist/editor/comments/BranchComments.d.ts.map +0 -1
  861. package/dist/editor/comments/BranchComments.js.map +0 -1
  862. package/dist/editor/comments/EntryComments.d.ts.map +0 -1
  863. package/dist/editor/comments/EntryComments.js.map +0 -1
  864. package/dist/editor/comments/FieldWrapper.d.ts.map +0 -1
  865. package/dist/editor/comments/FieldWrapper.js.map +0 -1
  866. package/dist/editor/comments/InlineCommentThread.d.ts.map +0 -1
  867. package/dist/editor/comments/InlineCommentThread.js.map +0 -1
  868. package/dist/editor/comments/ThreadCarousel.d.ts.map +0 -1
  869. package/dist/editor/comments/ThreadCarousel.js.map +0 -1
  870. package/dist/editor/components/ConfirmDeleteModal.d.ts.map +0 -1
  871. package/dist/editor/components/ConfirmDeleteModal.js.map +0 -1
  872. package/dist/editor/components/EditorFooter.d.ts.map +0 -1
  873. package/dist/editor/components/EditorFooter.js.map +0 -1
  874. package/dist/editor/components/EditorHeader.d.ts.map +0 -1
  875. package/dist/editor/components/EditorHeader.js.map +0 -1
  876. package/dist/editor/components/EditorSidebar.d.ts.map +0 -1
  877. package/dist/editor/components/EditorSidebar.js.map +0 -1
  878. package/dist/editor/components/EntryCreateModal.d.ts.map +0 -1
  879. package/dist/editor/components/EntryCreateModal.js.map +0 -1
  880. package/dist/editor/components/RenameEntryModal.d.ts.map +0 -1
  881. package/dist/editor/components/RenameEntryModal.js.map +0 -1
  882. package/dist/editor/components/UserBadge.d.ts.map +0 -1
  883. package/dist/editor/components/UserBadge.js.map +0 -1
  884. package/dist/editor/components/index.d.ts.map +0 -1
  885. package/dist/editor/components/index.js.map +0 -1
  886. package/dist/editor/context/ApiClientContext.d.ts.map +0 -1
  887. package/dist/editor/context/ApiClientContext.js.map +0 -1
  888. package/dist/editor/context/AssetContext.d.ts.map +0 -1
  889. package/dist/editor/context/AssetContext.js.map +0 -1
  890. package/dist/editor/context/EditorStateContext.d.ts.map +0 -1
  891. package/dist/editor/context/EditorStateContext.js.map +0 -1
  892. package/dist/editor/context/SWRProvider.d.ts.map +0 -1
  893. package/dist/editor/context/SWRProvider.js.map +0 -1
  894. package/dist/editor/context/index.d.ts.map +0 -1
  895. package/dist/editor/context/index.js.map +0 -1
  896. package/dist/editor/editor-config.d.ts.map +0 -1
  897. package/dist/editor/editor-config.js.map +0 -1
  898. package/dist/editor/editor-utils.d.ts.map +0 -1
  899. package/dist/editor/editor-utils.js.map +0 -1
  900. package/dist/editor/fields/BlockField.d.ts.map +0 -1
  901. package/dist/editor/fields/BlockField.js.map +0 -1
  902. package/dist/editor/fields/CodeField.d.ts.map +0 -1
  903. package/dist/editor/fields/CodeField.js.map +0 -1
  904. package/dist/editor/fields/DateTimeField.d.ts.map +0 -1
  905. package/dist/editor/fields/DateTimeField.js.map +0 -1
  906. package/dist/editor/fields/ImageField.d.ts.map +0 -1
  907. package/dist/editor/fields/ImageField.js.map +0 -1
  908. package/dist/editor/fields/InlineGroupField.d.ts.map +0 -1
  909. package/dist/editor/fields/InlineGroupField.js.map +0 -1
  910. package/dist/editor/fields/MarkdownField.d.ts.map +0 -1
  911. package/dist/editor/fields/MarkdownField.js.map +0 -1
  912. package/dist/editor/fields/MdxImageDialog.d.ts.map +0 -1
  913. package/dist/editor/fields/MdxImageDialog.js.map +0 -1
  914. package/dist/editor/fields/NumberField.d.ts.map +0 -1
  915. package/dist/editor/fields/NumberField.js.map +0 -1
  916. package/dist/editor/fields/NumberListField.d.ts.map +0 -1
  917. package/dist/editor/fields/NumberListField.js.map +0 -1
  918. package/dist/editor/fields/ObjectField.d.ts.map +0 -1
  919. package/dist/editor/fields/ObjectField.js.map +0 -1
  920. package/dist/editor/fields/ReferenceField.d.ts.map +0 -1
  921. package/dist/editor/fields/ReferenceField.js.map +0 -1
  922. package/dist/editor/fields/SelectField.d.ts.map +0 -1
  923. package/dist/editor/fields/SelectField.js.map +0 -1
  924. package/dist/editor/fields/StringListField.d.ts.map +0 -1
  925. package/dist/editor/fields/StringListField.js.map +0 -1
  926. package/dist/editor/fields/TextField.d.ts.map +0 -1
  927. package/dist/editor/fields/TextField.js.map +0 -1
  928. package/dist/editor/fields/ToggleField.d.ts.map +0 -1
  929. package/dist/editor/fields/ToggleField.js.map +0 -1
  930. package/dist/editor/fields/entry-link/EntryLinkContext.d.ts.map +0 -1
  931. package/dist/editor/fields/entry-link/EntryLinkContext.js.map +0 -1
  932. package/dist/editor/fields/entry-link/InsertEntryLink.d.ts.map +0 -1
  933. package/dist/editor/fields/entry-link/InsertEntryLink.js.map +0 -1
  934. package/dist/editor/fields/entry-link/index.d.ts.map +0 -1
  935. package/dist/editor/fields/entry-link/index.js.map +0 -1
  936. package/dist/editor/group-manager/ExternalGroupsTab.d.ts.map +0 -1
  937. package/dist/editor/group-manager/ExternalGroupsTab.js.map +0 -1
  938. package/dist/editor/group-manager/GroupCard.d.ts.map +0 -1
  939. package/dist/editor/group-manager/GroupCard.js.map +0 -1
  940. package/dist/editor/group-manager/GroupForm.d.ts.map +0 -1
  941. package/dist/editor/group-manager/GroupForm.js.map +0 -1
  942. package/dist/editor/group-manager/InternalGroupsTab.d.ts.map +0 -1
  943. package/dist/editor/group-manager/InternalGroupsTab.js.map +0 -1
  944. package/dist/editor/group-manager/MemberList.d.ts.map +0 -1
  945. package/dist/editor/group-manager/MemberList.js.map +0 -1
  946. package/dist/editor/group-manager/hooks/useExternalGroupSearch.d.ts.map +0 -1
  947. package/dist/editor/group-manager/hooks/useExternalGroupSearch.js.map +0 -1
  948. package/dist/editor/group-manager/hooks/useGroupState.d.ts.map +0 -1
  949. package/dist/editor/group-manager/hooks/useGroupState.js.map +0 -1
  950. package/dist/editor/group-manager/hooks/useUserSearch.d.ts.map +0 -1
  951. package/dist/editor/group-manager/hooks/useUserSearch.js.map +0 -1
  952. package/dist/editor/group-manager/index.d.ts.map +0 -1
  953. package/dist/editor/group-manager/index.js.map +0 -1
  954. package/dist/editor/group-manager/types.d.ts.map +0 -1
  955. package/dist/editor/group-manager/types.js.map +0 -1
  956. package/dist/editor/hooks/__test__/test-utils.d.ts +0 -164
  957. package/dist/editor/hooks/__test__/test-utils.d.ts.map +0 -1
  958. package/dist/editor/hooks/__test__/test-utils.js +0 -203
  959. package/dist/editor/hooks/__test__/test-utils.js.map +0 -1
  960. package/dist/editor/hooks/index.d.ts.map +0 -1
  961. package/dist/editor/hooks/index.js.map +0 -1
  962. package/dist/editor/hooks/useBranchActions.d.ts.map +0 -1
  963. package/dist/editor/hooks/useBranchActions.js.map +0 -1
  964. package/dist/editor/hooks/useBranchManager.d.ts.map +0 -1
  965. package/dist/editor/hooks/useBranchManager.js.map +0 -1
  966. package/dist/editor/hooks/useBranchesData.d.ts.map +0 -1
  967. package/dist/editor/hooks/useBranchesData.js.map +0 -1
  968. package/dist/editor/hooks/useCommentSystem.d.ts.map +0 -1
  969. package/dist/editor/hooks/useCommentSystem.js.map +0 -1
  970. package/dist/editor/hooks/useCommentsData.d.ts.map +0 -1
  971. package/dist/editor/hooks/useCommentsData.js.map +0 -1
  972. package/dist/editor/hooks/useDraftManager.d.ts.map +0 -1
  973. package/dist/editor/hooks/useDraftManager.js.map +0 -1
  974. package/dist/editor/hooks/useEditorLayout.d.ts.map +0 -1
  975. package/dist/editor/hooks/useEditorLayout.js.map +0 -1
  976. package/dist/editor/hooks/useEntriesData.d.ts.map +0 -1
  977. package/dist/editor/hooks/useEntriesData.js.map +0 -1
  978. package/dist/editor/hooks/useEntryLinkResolution.d.ts.map +0 -1
  979. package/dist/editor/hooks/useEntryLinkResolution.js.map +0 -1
  980. package/dist/editor/hooks/useEntryManager.d.ts.map +0 -1
  981. package/dist/editor/hooks/useEntryManager.js.map +0 -1
  982. package/dist/editor/hooks/useGroupManager.d.ts.map +0 -1
  983. package/dist/editor/hooks/useGroupManager.js.map +0 -1
  984. package/dist/editor/hooks/usePermissionManager.d.ts.map +0 -1
  985. package/dist/editor/hooks/usePermissionManager.js.map +0 -1
  986. package/dist/editor/hooks/useReferenceResolution.d.ts.map +0 -1
  987. package/dist/editor/hooks/useReferenceResolution.js.map +0 -1
  988. package/dist/editor/hooks/useSchemaManager.d.ts.map +0 -1
  989. package/dist/editor/hooks/useSchemaManager.js.map +0 -1
  990. package/dist/editor/hooks/useUserContext.d.ts.map +0 -1
  991. package/dist/editor/hooks/useUserContext.js.map +0 -1
  992. package/dist/editor/hooks/useUserMetadata.d.ts.map +0 -1
  993. package/dist/editor/hooks/useUserMetadata.js.map +0 -1
  994. package/dist/editor/media/AssetCard.d.ts.map +0 -1
  995. package/dist/editor/media/AssetCard.js.map +0 -1
  996. package/dist/editor/media/CropStep.d.ts.map +0 -1
  997. package/dist/editor/media/CropStep.js.map +0 -1
  998. package/dist/editor/media/MediaLibrary.d.ts.map +0 -1
  999. package/dist/editor/media/MediaLibrary.js.map +0 -1
  1000. package/dist/editor/media/MediaLibraryBody.d.ts.map +0 -1
  1001. package/dist/editor/media/MediaLibraryBody.js.map +0 -1
  1002. package/dist/editor/media/crop-math.d.ts.map +0 -1
  1003. package/dist/editor/media/crop-math.js.map +0 -1
  1004. package/dist/editor/media/upload-asset.d.ts.map +0 -1
  1005. package/dist/editor/media/upload-asset.js.map +0 -1
  1006. package/dist/editor/media/upload-constants.d.ts.map +0 -1
  1007. package/dist/editor/media/upload-constants.js.map +0 -1
  1008. package/dist/editor/media/useAssetUpload.d.ts.map +0 -1
  1009. package/dist/editor/media/useAssetUpload.js.map +0 -1
  1010. package/dist/editor/media/xhr-upload.d.ts.map +0 -1
  1011. package/dist/editor/media/xhr-upload.js.map +0 -1
  1012. package/dist/editor/permission-manager/GroupSelector.d.ts.map +0 -1
  1013. package/dist/editor/permission-manager/GroupSelector.js.map +0 -1
  1014. package/dist/editor/permission-manager/PermissionEditor.d.ts.map +0 -1
  1015. package/dist/editor/permission-manager/PermissionEditor.js.map +0 -1
  1016. package/dist/editor/permission-manager/PermissionLevelBadge.d.ts.map +0 -1
  1017. package/dist/editor/permission-manager/PermissionLevelBadge.js.map +0 -1
  1018. package/dist/editor/permission-manager/PermissionTree.d.ts.map +0 -1
  1019. package/dist/editor/permission-manager/PermissionTree.js.map +0 -1
  1020. package/dist/editor/permission-manager/UserSelector.d.ts.map +0 -1
  1021. package/dist/editor/permission-manager/UserSelector.js.map +0 -1
  1022. package/dist/editor/permission-manager/constants.d.ts.map +0 -1
  1023. package/dist/editor/permission-manager/constants.js.map +0 -1
  1024. package/dist/editor/permission-manager/hooks/useGroupsAndUsers.d.ts.map +0 -1
  1025. package/dist/editor/permission-manager/hooks/useGroupsAndUsers.js.map +0 -1
  1026. package/dist/editor/permission-manager/hooks/usePermissionTree.d.ts.map +0 -1
  1027. package/dist/editor/permission-manager/hooks/usePermissionTree.js.map +0 -1
  1028. package/dist/editor/permission-manager/index.d.ts.map +0 -1
  1029. package/dist/editor/permission-manager/index.js.map +0 -1
  1030. package/dist/editor/permission-manager/types.d.ts.map +0 -1
  1031. package/dist/editor/permission-manager/types.js.map +0 -1
  1032. package/dist/editor/permission-manager/utils.d.ts.map +0 -1
  1033. package/dist/editor/permission-manager/utils.js.map +0 -1
  1034. package/dist/editor/preview-bridge.d.ts.map +0 -1
  1035. package/dist/editor/preview-bridge.js.map +0 -1
  1036. package/dist/editor/relative-time.d.ts.map +0 -1
  1037. package/dist/editor/relative-time.js.map +0 -1
  1038. package/dist/editor/schema-editor/CollectionEditor.d.ts.map +0 -1
  1039. package/dist/editor/schema-editor/CollectionEditor.js.map +0 -1
  1040. package/dist/editor/schema-editor/EntryTypeEditor.d.ts.map +0 -1
  1041. package/dist/editor/schema-editor/EntryTypeEditor.js.map +0 -1
  1042. package/dist/editor/schema-editor/index.d.ts.map +0 -1
  1043. package/dist/editor/schema-editor/index.js.map +0 -1
  1044. package/dist/editor/setup-test-dom.d.ts +0 -1
  1045. package/dist/editor/setup-test-dom.d.ts.map +0 -1
  1046. package/dist/editor/setup-test-dom.js +0 -12
  1047. package/dist/editor/setup-test-dom.js.map +0 -1
  1048. package/dist/editor/test-setup.d.ts +0 -6
  1049. package/dist/editor/test-setup.d.ts.map +0 -1
  1050. package/dist/editor/test-setup.js +0 -42
  1051. package/dist/editor/test-setup.js.map +0 -1
  1052. package/dist/editor/theme.d.ts.map +0 -1
  1053. package/dist/editor/theme.js.map +0 -1
  1054. package/dist/editor/utils/env.d.ts.map +0 -1
  1055. package/dist/editor/utils/env.js.map +0 -1
  1056. package/dist/entry-link-resolver.d.ts.map +0 -1
  1057. package/dist/entry-link-resolver.js.map +0 -1
  1058. package/dist/entry-schema-registry.d.ts.map +0 -1
  1059. package/dist/entry-schema-registry.js.map +0 -1
  1060. package/dist/entry-schema.d.ts.map +0 -1
  1061. package/dist/entry-schema.js.map +0 -1
  1062. package/dist/git-manager.d.ts.map +0 -1
  1063. package/dist/git-manager.js.map +0 -1
  1064. package/dist/github-service.d.ts.map +0 -1
  1065. package/dist/github-service.js.map +0 -1
  1066. package/dist/http/handler.d.ts.map +0 -1
  1067. package/dist/http/handler.js.map +0 -1
  1068. package/dist/http/index.d.ts.map +0 -1
  1069. package/dist/http/index.js.map +0 -1
  1070. package/dist/http/router.d.ts.map +0 -1
  1071. package/dist/http/router.js.map +0 -1
  1072. package/dist/http/types.d.ts.map +0 -1
  1073. package/dist/http/types.js.map +0 -1
  1074. package/dist/id.d.ts.map +0 -1
  1075. package/dist/id.js.map +0 -1
  1076. package/dist/index.d.ts.map +0 -1
  1077. package/dist/index.js.map +0 -1
  1078. package/dist/operating-mode/client-safe-strategy.d.ts.map +0 -1
  1079. package/dist/operating-mode/client-safe-strategy.js.map +0 -1
  1080. package/dist/operating-mode/client-unsafe-strategy.d.ts.map +0 -1
  1081. package/dist/operating-mode/client-unsafe-strategy.js.map +0 -1
  1082. package/dist/operating-mode/client.d.ts.map +0 -1
  1083. package/dist/operating-mode/client.js.map +0 -1
  1084. package/dist/operating-mode/deployment-name-fixtures.d.ts.map +0 -1
  1085. package/dist/operating-mode/deployment-name-fixtures.js.map +0 -1
  1086. package/dist/operating-mode/deployment-name.d.ts.map +0 -1
  1087. package/dist/operating-mode/deployment-name.js.map +0 -1
  1088. package/dist/operating-mode/index.d.ts.map +0 -1
  1089. package/dist/operating-mode/index.js.map +0 -1
  1090. package/dist/operating-mode/mode-env.d.ts.map +0 -1
  1091. package/dist/operating-mode/mode-env.js.map +0 -1
  1092. package/dist/operating-mode/types.d.ts.map +0 -1
  1093. package/dist/operating-mode/types.js.map +0 -1
  1094. package/dist/paths/branch-name.d.ts.map +0 -1
  1095. package/dist/paths/branch-name.js.map +0 -1
  1096. package/dist/paths/branch.d.ts.map +0 -1
  1097. package/dist/paths/branch.js.map +0 -1
  1098. package/dist/paths/index.d.ts.map +0 -1
  1099. package/dist/paths/index.js.map +0 -1
  1100. package/dist/paths/normalize-server.d.ts.map +0 -1
  1101. package/dist/paths/normalize-server.js.map +0 -1
  1102. package/dist/paths/normalize.d.ts.map +0 -1
  1103. package/dist/paths/normalize.js.map +0 -1
  1104. package/dist/paths/resolve.d.ts.map +0 -1
  1105. package/dist/paths/resolve.js.map +0 -1
  1106. package/dist/paths/test-utils.d.ts +0 -22
  1107. package/dist/paths/test-utils.d.ts.map +0 -1
  1108. package/dist/paths/test-utils.js +0 -21
  1109. package/dist/paths/test-utils.js.map +0 -1
  1110. package/dist/paths/types.d.ts.map +0 -1
  1111. package/dist/paths/types.js.map +0 -1
  1112. package/dist/paths/validation.d.ts.map +0 -1
  1113. package/dist/paths/validation.js.map +0 -1
  1114. package/dist/reference-resolver.d.ts.map +0 -1
  1115. package/dist/reference-resolver.js.map +0 -1
  1116. package/dist/resolve-canopy-user.d.ts.map +0 -1
  1117. package/dist/resolve-canopy-user.js.map +0 -1
  1118. package/dist/resource-generation.d.ts.map +0 -1
  1119. package/dist/resource-generation.js.map +0 -1
  1120. package/dist/schema/index.d.ts.map +0 -1
  1121. package/dist/schema/index.js.map +0 -1
  1122. package/dist/schema/meta-loader.d.ts.map +0 -1
  1123. package/dist/schema/meta-loader.js.map +0 -1
  1124. package/dist/schema/resolver.d.ts.map +0 -1
  1125. package/dist/schema/resolver.js.map +0 -1
  1126. package/dist/schema/schema-store-types.d.ts.map +0 -1
  1127. package/dist/schema/schema-store-types.js.map +0 -1
  1128. package/dist/schema/schema-store.d.ts.map +0 -1
  1129. package/dist/schema/schema-store.js.map +0 -1
  1130. package/dist/schema/types.d.ts.map +0 -1
  1131. package/dist/schema/types.js.map +0 -1
  1132. package/dist/server.d.ts.map +0 -1
  1133. package/dist/server.js.map +0 -1
  1134. package/dist/services.d.ts.map +0 -1
  1135. package/dist/services.js.map +0 -1
  1136. package/dist/settings-workspace.d.ts.map +0 -1
  1137. package/dist/settings-workspace.js.map +0 -1
  1138. package/dist/static/index.d.ts.map +0 -1
  1139. package/dist/static/index.js.map +0 -1
  1140. package/dist/static/seo.d.ts.map +0 -1
  1141. package/dist/static/seo.js.map +0 -1
  1142. package/dist/sync-core.d.ts.map +0 -1
  1143. package/dist/sync-core.js.map +0 -1
  1144. package/dist/task-queue/index.d.ts.map +0 -1
  1145. package/dist/task-queue/index.js.map +0 -1
  1146. package/dist/task-queue/task-queue.d.ts.map +0 -1
  1147. package/dist/task-queue/task-queue.js.map +0 -1
  1148. package/dist/task-queue/types.d.ts.map +0 -1
  1149. package/dist/task-queue/types.js.map +0 -1
  1150. package/dist/types.d.ts.map +0 -1
  1151. package/dist/types.js.map +0 -1
  1152. package/dist/url-path-resolver.d.ts.map +0 -1
  1153. package/dist/url-path-resolver.js.map +0 -1
  1154. package/dist/user.d.ts.map +0 -1
  1155. package/dist/user.js.map +0 -1
  1156. package/dist/utils/async-mutex.d.ts.map +0 -1
  1157. package/dist/utils/async-mutex.js.map +0 -1
  1158. package/dist/utils/atomic-write.d.ts.map +0 -1
  1159. package/dist/utils/atomic-write.js.map +0 -1
  1160. package/dist/utils/body-field.d.ts.map +0 -1
  1161. package/dist/utils/body-field.js.map +0 -1
  1162. package/dist/utils/content-write-lock.d.ts.map +0 -1
  1163. package/dist/utils/content-write-lock.js.map +0 -1
  1164. package/dist/utils/debug.d.ts.map +0 -1
  1165. package/dist/utils/debug.js.map +0 -1
  1166. package/dist/utils/entry-url.d.ts.map +0 -1
  1167. package/dist/utils/entry-url.js.map +0 -1
  1168. package/dist/utils/error.d.ts.map +0 -1
  1169. package/dist/utils/error.js.map +0 -1
  1170. package/dist/utils/flatten-group-fields.d.ts.map +0 -1
  1171. package/dist/utils/flatten-group-fields.js.map +0 -1
  1172. package/dist/utils/format.d.ts.map +0 -1
  1173. package/dist/utils/format.js.map +0 -1
  1174. package/dist/utils/fs.d.ts.map +0 -1
  1175. package/dist/utils/fs.js.map +0 -1
  1176. package/dist/utils/git.d.ts.map +0 -1
  1177. package/dist/utils/git.js.map +0 -1
  1178. package/dist/utils/logger.d.ts.map +0 -1
  1179. package/dist/utils/logger.js.map +0 -1
  1180. package/dist/utils/occ-json-write.d.ts.map +0 -1
  1181. package/dist/utils/occ-json-write.js.map +0 -1
  1182. package/dist/utils/provisioning-lock.d.ts.map +0 -1
  1183. package/dist/utils/provisioning-lock.js.map +0 -1
  1184. package/dist/utils/sanitize-href.d.ts.map +0 -1
  1185. package/dist/utils/sanitize-href.js.map +0 -1
  1186. package/dist/utils/title-field.d.ts.map +0 -1
  1187. package/dist/utils/title-field.js.map +0 -1
  1188. package/dist/validation/deletion-checker.d.ts.map +0 -1
  1189. package/dist/validation/deletion-checker.js.map +0 -1
  1190. package/dist/validation/entry-link-validator.d.ts.map +0 -1
  1191. package/dist/validation/entry-link-validator.js.map +0 -1
  1192. package/dist/validation/entry-type-reference-validator.d.ts.map +0 -1
  1193. package/dist/validation/entry-type-reference-validator.js.map +0 -1
  1194. package/dist/validation/entry-validator.d.ts.map +0 -1
  1195. package/dist/validation/entry-validator.js.map +0 -1
  1196. package/dist/validation/field-traversal.d.ts.map +0 -1
  1197. package/dist/validation/field-traversal.js.map +0 -1
  1198. package/dist/validation/reference-validator.d.ts.map +0 -1
  1199. package/dist/validation/reference-validator.js.map +0 -1
  1200. package/dist/worker/cms-worker.d.ts.map +0 -1
  1201. package/dist/worker/cms-worker.js.map +0 -1
  1202. package/dist/worker/log.d.ts.map +0 -1
  1203. package/dist/worker/log.js.map +0 -1
  1204. package/dist/worker/task-queue-config.d.ts.map +0 -1
  1205. package/dist/worker/task-queue-config.js.map +0 -1
  1206. package/dist/worker/task-queue.d.ts.map +0 -1
  1207. package/dist/worker/task-queue.js.map +0 -1
  1208. package/dist/worker/worker-status.d.ts.map +0 -1
  1209. package/dist/worker/worker-status.js.map +0 -1
@@ -2,13 +2,13 @@
2
2
  * Type definitions for CanopyCMS configuration.
3
3
  * These are pure TypeScript types - Zod schemas are in ./schemas/
4
4
  */
5
- import type { CanopyGroupId, CanopyUserId } from '../types';
6
- import type { OperatingMode } from '../operating-mode';
7
- import type { AuthPlugin } from '../auth/plugin';
8
- import type { LogicalPath, ContentId } from '../paths/types';
9
- import type { PermissionPath } from '../authorization/types';
10
- import type { EntryLinkUrlResolver } from '../entry-link-resolver';
11
- import type { CropRect } from '../assets/transform-directives';
5
+ import type { CanopyGroupId, CanopyUserId } from '../types.js';
6
+ import type { OperatingMode } from '../operating-mode/index.js';
7
+ import type { AuthPlugin } from '../auth/plugin.js';
8
+ import type { LogicalPath, ContentId } from '../paths/types.js';
9
+ import type { PermissionPath } from '../authorization/types.js';
10
+ import type { EntryLinkUrlResolver } from '../entry-link-resolver.js';
11
+ import type { CropRect } from '../assets/transform-directives.js';
12
12
  export declare const primitiveFieldTypes: readonly ["string", "number", "boolean", "datetime", "markdown", "mdx", "code"];
13
13
  export declare const fieldTypes: readonly ["string", "number", "boolean", "datetime", "markdown", "mdx", "code", "image", "select", "reference", "object", "block", "group"];
14
14
  export type PrimitiveFieldType = (typeof primitiveFieldTypes)[number];
@@ -68,6 +68,27 @@ export interface ReferenceFieldConfig extends BaseFieldConfig {
68
68
  entryTypes?: string[];
69
69
  displayField?: string;
70
70
  options?: ReferenceOption[];
71
+ /**
72
+ * Include the referenced entry's body in the resolved value, under that entry type's own
73
+ * body field name (`isBody: true`, else `body`). Defaults to `false`.
74
+ *
75
+ * This is the embed-vs-link distinction, declared where it is actually known. A reference
76
+ * that **embeds** its target — a shared call-to-action block rendered inline — needs the
77
+ * target's prose, and without this a resolved md/mdx target arrives as frontmatter only, so
78
+ * a search index built over pages with shared blocks silently contains nothing for them. A
79
+ * reference that merely **links** to its target — related posts, an author byline — wants
80
+ * `urlPath` and a title, and emphatically not the target's full body inlined into every
81
+ * page read.
82
+ *
83
+ * It lives on the field rather than on `read()`/`listEntries()` because one call routinely
84
+ * contains both kinds: a page with a shared CTA *and* a related-posts list cannot be served
85
+ * by a single call-level setting, and a call-level flag would mean the same field resolved
86
+ * to different shapes in different places.
87
+ *
88
+ * Only affects formats that HAVE a separate body — md and mdx. A json/yaml target's whole
89
+ * document is already its data, so this is a no-op there.
90
+ */
91
+ includeBody?: boolean;
71
92
  }
72
93
  /**
73
94
  * Image field config. The value is a structured object (see `ImageFieldValue`
@@ -215,6 +236,15 @@ export interface CanopyEditorConfig {
215
236
  title?: string;
216
237
  subtitle?: string;
217
238
  theme?: unknown;
239
+ /**
240
+ * Per-collection overrides for the preview pane's URL, keyed by collection path or name
241
+ * (e.g. `{ 'content/posts': '/blog' }`) for sites whose routes don't mirror their content tree.
242
+ *
243
+ * Values are **site-relative** and must NOT include the deployment `basePath` — that is applied
244
+ * on top of whatever this yields (see `CanopyConfig.basePath`), so including it here would
245
+ * prefix it twice. An absolute value (`https://…`) is passed through untouched instead, which
246
+ * is the escape hatch for previewing against a different origin entirely.
247
+ */
218
248
  previewBase?: Record<string, string>;
219
249
  onAccountClick?: () => void;
220
250
  onLogoutClick?: () => void;
@@ -315,6 +345,21 @@ export interface CanopyConfig {
315
345
  deploymentName?: string;
316
346
  contentRoot: ContentRoot;
317
347
  sourceRoot?: SourceRoot;
348
+ /**
349
+ * The deployment prefix the host Next.js app is served under (e.g. `/preview-123`), matching
350
+ * that app's `next.config` `basePath`. CanopyCMS cannot read `next.config` at runtime, so this
351
+ * must be stated here explicitly if the app sets one — without it, editor requests, the preview
352
+ * iframe `src`, and preview↔editor path matching all target the un-prefixed root and 404 or
353
+ * silently stop syncing. Normalized (leading slash added, trailing slashes stripped) via
354
+ * `joinUrlPrefix` at every use site; unset/empty means the app is served at its origin's root.
355
+ *
356
+ * NOT the same option as `collectStaticParams`'s `basePath` in
357
+ * `packages/canopycms-next/src/static.ts` — that one means "the route prefix of a nested
358
+ * catch-all route" (e.g. `/docs` for `app/docs/[[...slug]]`) and *filters* enumerated entries
359
+ * down to that prefix. Passing this deployment basePath to `collectStaticParams` instead would
360
+ * silently filter out every entry (zero static params, a build that goes green with no pages).
361
+ */
362
+ basePath?: string;
318
363
  editor?: CanopyEditorConfig;
319
364
  authPlugin?: AuthPlugin;
320
365
  /** Custom URL resolver for entry links. Overrides the default URL computation. */
@@ -362,6 +407,8 @@ export interface CanopyConfigInput {
362
407
  deploymentName?: string;
363
408
  contentRoot?: string;
364
409
  sourceRoot?: string;
410
+ /** See `CanopyConfig.basePath` — the deployment prefix the host Next.js app is served under. */
411
+ basePath?: string;
365
412
  editor?: CanopyEditorConfig;
366
413
  authPlugin?: AuthPlugin;
367
414
  /** Custom URL resolver for entry links. Overrides the default URL computation. */
@@ -413,7 +460,7 @@ export type FlatSchemaItem = {
413
460
  * Use flatSchema for O(1) cached access to the flattened schema structure.
414
461
  * Schema is loaded from .collection.json files on the server and provided as flatSchema.
415
462
  */
416
- export type CanopyClientConfig = Pick<CanopyConfig, 'defaultBaseBranch' | 'defaultActiveBranch' | 'contentRoot' | 'editor' | 'mode' | 'entryLinkUrl'> & {
463
+ export type CanopyClientConfig = Pick<CanopyConfig, 'defaultBaseBranch' | 'defaultActiveBranch' | 'contentRoot' | 'editor' | 'mode' | 'entryLinkUrl' | 'basePath'> & {
417
464
  flatSchema: FlatSchemaItem[];
418
465
  /**
419
466
  * `media.publicBaseUrl`, when configured - the only part of `media` safe/
@@ -431,4 +478,3 @@ export interface ClientOnlyFields {
431
478
  AccountComponent?: React.ComponentType;
432
479
  };
433
480
  }
434
- //# sourceMappingURL=types.d.ts.map
@@ -24,4 +24,3 @@ export const fieldTypes = [
24
24
  'block',
25
25
  'group',
26
26
  ];
27
- //# sourceMappingURL=types.js.map
@@ -5,7 +5,7 @@
5
5
  * from `createEntrySchemaRegistry` so the canonical schema-authoring path runs
6
6
  * the same checks. Exported so the test suite can exercise them directly.
7
7
  */
8
- import type { CanopyConfig } from './types';
8
+ import type { CanopyConfig } from './types.js';
9
9
  /**
10
10
  * Recursively check that all select fields have options defined.
11
11
  * Throws an error if a select field is missing options.
@@ -59,4 +59,3 @@ export declare const ensureNoGroupsInsideComplexFields: (fields: unknown) => voi
59
59
  * @throws Error if validation fails
60
60
  */
61
61
  export declare const validateCanopyConfig: (config: unknown) => CanopyConfig;
62
- //# sourceMappingURL=validation.d.ts.map
@@ -200,4 +200,3 @@ export const validateCanopyConfig = (config) => {
200
200
  };
201
201
  return normalized;
202
202
  };
203
- //# sourceMappingURL=validation.js.map
package/dist/config.d.ts CHANGED
@@ -2,9 +2,8 @@
2
2
  * CanopyCMS Configuration
3
3
  *
4
4
  * This file re-exports from the config module for backward compatibility.
5
- * New code should import directly from './config/index' or './config'.
5
+ * New code should import directly from './config/index.js' or './config'.
6
6
  *
7
7
  * @module config
8
8
  */
9
- export * from './config/index';
10
- //# sourceMappingURL=config.d.ts.map
9
+ export * from './config/index.js';
package/dist/config.js CHANGED
@@ -8,4 +8,3 @@
8
8
  */
9
9
  // Re-export everything from the config module
10
10
  export * from './config/index.js';
11
- //# sourceMappingURL=config.js.map
@@ -1,4 +1,4 @@
1
- import { type LogicalPath, type PhysicalPath, type Slug, type ContentId } from './paths';
1
+ import { type LogicalPath, type PhysicalPath, type Slug, type ContentId } from './paths/index.js';
2
2
  export interface IdLocation {
3
3
  id: ContentId;
4
4
  type: 'entry' | 'collection';
@@ -267,4 +267,3 @@ export declare function extractEntryTypeFromFilename(filename: string): string |
267
267
  * If provided and matches first part, strips it from slug
268
268
  */
269
269
  export declare function extractSlugFromFilename(filename: string, entryTypeName?: string): Slug;
270
- //# sourceMappingURL=content-id-index.d.ts.map
@@ -616,4 +616,3 @@ export function extractSlugFromFilename(filename, entryTypeName) {
616
616
  }
617
617
  return filename.toLowerCase();
618
618
  }
619
- //# sourceMappingURL=content-id-index.js.map
@@ -63,4 +63,3 @@ export declare function invalidateContentIndexesDurable(root: string): Promise<v
63
63
  * staleness behavior plus whatever backstop the consumer implements.
64
64
  */
65
65
  export declare function invalidateBranchContentCaches(root: string): Promise<void>;
66
- //# sourceMappingURL=content-index-generation.d.ts.map
@@ -125,4 +125,3 @@ export async function invalidateBranchContentCaches(root) {
125
125
  await bumpResourceGeneration(root, SCHEMA_GENERATION_RESOURCE);
126
126
  invalidateContentIndexesForRoot(root);
127
127
  }
128
- //# sourceMappingURL=content-index-generation.js.map
@@ -35,4 +35,3 @@ export declare function registerContentIndexForInvalidation(root: string, target
35
35
  * index access, so calling this for a root with no live stores is free.
36
36
  */
37
37
  export declare function invalidateContentIndexesForRoot(root: string): void;
38
- //# sourceMappingURL=content-index-registry.d.ts.map
@@ -50,4 +50,3 @@ export function invalidateContentIndexesForRoot(root) {
50
50
  registry.delete(storeRoot);
51
51
  }
52
52
  }
53
- //# sourceMappingURL=content-index-registry.js.map
@@ -3,8 +3,9 @@
3
3
  *
4
4
  * Extracted from api/entries.ts to avoid duplication.
5
5
  */
6
- import type { ContentFormat, FlatSchemaItem, EntryTypeConfig, EntrySchema } from './config';
7
- import type { LogicalPath, PhysicalPath, Slug, ContentId } from './paths/types';
6
+ import type { ContentFormat, FlatSchemaItem, EntrySchema } from './config/index.js';
7
+ import type { LogicalPath, PhysicalPath, Slug, ContentId } from './paths/types.js';
8
+ import { ContentStore, type ReferenceResolveCache } from './content-store.js';
8
9
  /**
9
10
  * An entry listing item with raw data from the filesystem.
10
11
  * Does not include API-specific fields like canEdit.
@@ -30,60 +31,7 @@ export interface CollectionListItem {
30
31
  * Returns an empty object on read/parse failure.
31
32
  */
32
33
  export declare const readEntryData: (filePath: string, format: ContentFormat, bodyFieldName?: string) => Promise<Record<string, unknown>>;
33
- /**
34
- * Parse a Canopy content filename into its `{type}.{slug}.{id}.{ext}` parts.
35
- *
36
- * ## Filename grammar
37
- *
38
- * Every entry file on disk is named `{type}.{slug}.{id}.{ext}`:
39
- * - `type` — the entry type name (a key in the collection's `entries` config).
40
- * - `slug` — the entry's URL slug. May itself contain dots (e.g. a slug of
41
- * `getting.started.guide`), so the type and ID anchor the split: the ID is
42
- * always the second-to-last dot-separated segment, and the slug is
43
- * everything between the type and the ID. The returned `slug` is
44
- * lowercased.
45
- * - `id` — a 12-character Base58 content ID (`generateId()`/`isValidId()`).
46
- * Base58 excludes the ambiguous characters `0`, `O`, `I`, `l` so IDs are
47
- * unambiguous when read aloud or hand-transcribed. A filename whose
48
- * would-be ID segment doesn't pass `isValidId` is rejected — the whole
49
- * parse returns `null`, even if the rest of the shape looks right.
50
- * - `ext` — the format extension (`.md`, `.mdx`, `.json`, `.yaml`), stripped
51
- * before parsing and not part of the returned result.
52
- *
53
- * @param filename - The bare filename (no directory component). **This precondition is
54
- * not enforced.** The parser splits purely on `.`, so a `/` or `\` you pass in is not
55
- * rejected and is not treated as special — it becomes part of whichever segment it
56
- * falls in, most often the `type` segment (e.g. `'foo/bar.slug.<validId>.md'` parses
57
- * to `type: 'foo/bar'`). Strip any directory component yourself (e.g.
58
- * `path.basename(filePath)`) before calling this — every internal caller already does.
59
- * @param entryTypes - When provided, the parsed `type` segment must match one
60
- * of these entry types by name, or the parse is rejected (this is how
61
- * `listCollectionEntries` filters out files that don't belong to the
62
- * collection's configured entry types). Omit this argument to parse
63
- * structurally without validating the type against a known list — useful
64
- * for adopter code that needs to recover `{type, slug, id}` from a
65
- * filename without having a schema/entry-types list on hand (e.g. a
66
- * filesystem walk over content for tooling or diagnostics). Even without
67
- * `entryTypes`, a leading-dot filename (dotfile, editor swap/backup file)
68
- * is always rejected — an empty string is never a legal type, matching the
69
- * `filename.startsWith('.')` guard `extractEntryTypeFromFilename` in
70
- * `content-id-index.ts` already applies.
71
- * @returns `{ type, slug, id }`, or `null` if `filename` doesn't match the
72
- * `{type}.{slug}.{id}.{ext}` shape (too few segments, no extension, a
73
- * leading dot, an invalid ID, or — when `entryTypes` is given — an
74
- * unrecognized type). `id` is validated (`isValidId`) and safe to trust. **`slug` is
75
- * not** — it is the raw dot-joined middle segment(s), lowercased, cast to the branded
76
- * `Slug` type without running `parseSlug`'s validation. A filename with an
77
- * unconventional slug segment (e.g. containing a space) still parses and still
78
- * receives the `Slug` brand. Callers that need a validated slug must run the result
79
- * through `parseSlug` themselves; this function's contract is "split the filename
80
- * grammar apart," not "validate every part."
81
- */
82
- export declare const parseTypedFilename: (filename: string, entryTypes?: readonly EntryTypeConfig[]) => {
83
- type: string;
84
- slug: Slug;
85
- id: ContentId;
86
- } | null;
34
+ export { parseTypedFilename } from './utils/typed-filename.js';
87
35
  /**
88
36
  * A flat entry item from listEntries.
89
37
  * Structural metadata is always present; `data` is controlled by the extract option.
@@ -97,7 +45,12 @@ export interface ListEntriesItem<T = Record<string, unknown>> {
97
45
  * For regular entries: '/guides/glossary-of-terms'.
98
46
  * For a root index entry: '/'.
99
47
  *
100
- * Round-trip safe: `readByUrlPath(item.urlPath)` resolves to the same entry.
48
+ * Round-trip safe: `readByUrlPath(item.urlPath)` resolves to the same entry. That guarantee
49
+ * depends on `slug` passing `parseSlug` — the filename grammar (`utils/typed-filename.ts`)
50
+ * allows a slug to contain characters `parseSlug` rejects (a dot, most commonly), and an entry
51
+ * whose slug does is listed here same as any other but can never be read back by URL.
52
+ * `static/index.ts`'s `assertRoutableSlugs` is the build-time guard that catches this outside
53
+ * this doc comment's promise.
101
54
  */
102
55
  urlPath: string;
103
56
  /** Entry slug within its collection */
@@ -152,6 +105,33 @@ export interface ListEntriesOptions<T = Record<string, unknown>> {
152
105
  rootPath?: string;
153
106
  /** Custom sort. */
154
107
  sort?: (a: ListEntriesItem<T>, b: ListEntriesItem<T>) => number;
108
+ /**
109
+ * Resolve `reference` fields to the referenced entry's data, the way
110
+ * `read()`/`readByUrlPath()` do — including references nested inside `object` fields,
111
+ * inline `group`s and block templates (so a shared/referenced block finally carries its
112
+ * snippet's content here). Off leaves them as the bare id string, or `null`.
113
+ *
114
+ * **Defaults to `false`, unlike `read()`, which defaults to `true`.** The asymmetry is
115
+ * deliberate rather than an oversight. `data` is `T` and `extract` receives an untyped
116
+ * `Record<string, unknown>`, so turning this on changes a reference from `'a1b2c3d4e5f6'`
117
+ * to `{ ...data, id, slug, collection, urlPath }` with no compile error anywhere to catch it — an
118
+ * `/authors/${data.author}` template silently becomes `/authors/[object Object]`. Opting
119
+ * in is a decision you make per call site, next to the code that reads the field. It also
120
+ * keeps the common batch uses free: `collectStaticPaths` discards `data` outright, and
121
+ * `build/generate-ai-content.ts` lists purely to validate entry shapes.
122
+ *
123
+ * **Cost, and why it is bounded.** Resolution needs a `ContentStore` and its ContentId
124
+ * index, so turning it on adds one index scan per call plus one read per DISTINCT
125
+ * referenced entry — not per referencing entry. A single {@link ReferenceResolveCache}
126
+ * spans the whole call, so a shared block referenced by 40 pages is read once, not 40
127
+ * times. Nothing is constructed and nothing is scanned when this is off.
128
+ *
129
+ * **Path ACLs are not applied to the resolved targets**, matching `read()` exactly: a
130
+ * reference can resolve to an entry the user could not `read()` directly. The entries
131
+ * being LISTED are still ACL-filtered as always, and a filtered-out entry is never
132
+ * resolved at all.
133
+ */
134
+ resolveReferences?: boolean;
155
135
  }
156
136
  /**
157
137
  * Server-only path-ACL predicate, applied to raw entries before any of their data
@@ -170,6 +150,43 @@ export interface ContentVisibilityOptions {
170
150
  /** Return false to drop an entry. Receives the entry's branch-root-relative physical path. */
171
151
  shouldInclude?: (physicalPath: PhysicalPath) => boolean;
172
152
  }
153
+ /** A collection node from the flattened schema. */
154
+ export type CollectionSchemaItem = Extract<FlatSchemaItem, {
155
+ type: 'collection';
156
+ }>;
157
+ /**
158
+ * Build the `ContentStore` + shared cache that a batch listing resolves references through.
159
+ *
160
+ * Unrelated to the `ReferenceResolver` class in reference-resolver.ts despite the adjacent
161
+ * name — that one resolves an id to a human-readable *display label* for the editor UI. This
162
+ * resolves a reference to the referenced entry's *data* for server-side listings.
163
+ *
164
+ * Constructed lazily by each listing surface, and ONLY when the caller opted in — a store
165
+ * builds a ContentId index on first use, which is a full scan of the content tree, and the
166
+ * default (`resolveReferences` off) must stay a pure filesystem walk with no index at all.
167
+ *
168
+ * One store and one cache per listing call, not per collection: the cache is the reason a
169
+ * shared block referenced from 40 pages costs one read instead of 40, so it has to span the
170
+ * whole batch. Per-call construction is the established shape here — content-reader.ts's
171
+ * `resolveStore` builds a store per read, and content-index-registry.ts holds stores through
172
+ * `WeakRef` + a `FinalizationRegistry` precisely so short-lived instances stay collectable.
173
+ */
174
+ export declare const createReferenceResolver: (branchRoot: string, flatSchema: FlatSchemaItem[], contentRootName: string) => {
175
+ store: ContentStore;
176
+ cache: ReferenceResolveCache;
177
+ };
178
+ /**
179
+ * Resolve `reference` fields in a collection's listed entries, in place of their raw data.
180
+ *
181
+ * Shared by `listEntries` and `buildContentTree` so both opt into resolution through one
182
+ * implementation. Each entry resolves against its OWN entry type's field list, since that is
183
+ * what says which fields are references at all; an entry whose type has no resolvable schema
184
+ * is returned untouched rather than guessed at.
185
+ */
186
+ export declare const resolveCollectionItemReferences: (items: CollectionListItem[], collection: CollectionSchemaItem, resolver: {
187
+ store: ContentStore;
188
+ cache: ReferenceResolveCache;
189
+ }) => Promise<CollectionListItem[]>;
173
190
  /**
174
191
  * List all content entries as a flat array.
175
192
  *
@@ -196,7 +213,7 @@ export interface ContentVisibilityOptions {
196
213
  * @param branchRoot - Absolute path to the branch workspace root
197
214
  * @param flatSchema - Flattened schema items (from flattenSchema)
198
215
  * @param contentRootName - The content root name (e.g. "content")
199
- * @param options - Listing options (extract, filter, rootPath, sort)
216
+ * @param options - Listing options (extract, filter, rootPath, sort, resolveReferences)
200
217
  * @param visibility - Internal path-ACL predicate; see `ContentVisibilityOptions`
201
218
  */
202
219
  export declare function listEntries<T = Record<string, unknown>>(branchRoot: string, flatSchema: FlatSchemaItem[], contentRootName: string, options?: ListEntriesOptions<T>, visibility?: ContentVisibilityOptions): Promise<ListEntriesItem<T>[]>;
@@ -231,4 +248,3 @@ export interface SkippedListingFile {
231
248
  * failure instead of a silent one.
232
249
  */
233
250
  export declare const listCollectionEntries: (root: string, collection: FlatSchemaItem, onSkip?: (file: SkippedListingFile) => void) => Promise<CollectionListItem[]>;
234
- //# sourceMappingURL=content-listing.d.ts.map
@@ -8,13 +8,13 @@ import path from 'node:path';
8
8
  import matter from 'gray-matter';
9
9
  import { parse as yamlParse } from 'yaml';
10
10
  import { findBodyFieldName } from './utils/body-field.js';
11
+ import { computeEntryUrl } from './utils/entry-url.js';
11
12
  import { asRecord, getFormatExtension } from './utils/format.js';
12
13
  import { resolveCollectionPath } from './content-id-index.js';
13
14
  import { validateAndNormalizePath } from './paths/index.js';
14
15
  import { isNotFoundError, getErrorMessage } from './utils/error.js';
15
16
  import { createDebugLogger } from './utils/debug.js';
16
- import { isValidId } from './id.js';
17
- import { ContentStoreError } from './content-store.js';
17
+ import { ContentStore, ContentStoreError, createReferenceResolveCache, } from './content-store.js';
18
18
  import { isBuildMode } from './build-mode.js';
19
19
  const log = createDebugLogger({ prefix: 'ContentListing' });
20
20
  /**
@@ -45,7 +45,17 @@ export const readEntryData = async (filePath, format, bodyFieldName = 'body') =>
45
45
  return asRecord(yamlParse(raw));
46
46
  }
47
47
  const parsed = matter(raw);
48
- const data = parsed.data ?? {};
48
+ // Copy before writing the body in. gray-matter keeps a PROCESS-GLOBAL cache keyed by file
49
+ // content and hands every caller the same `data` object instance, so mutating it in place
50
+ // wrote the body into a shared object that later, unrelated `matter()` calls then saw as
51
+ // frontmatter. Concretely, before this copy: listing a collection that contains an md entry
52
+ // poisoned the cache, and a subsequent reference resolution to that same entry — which goes
53
+ // through `ContentStore.read()`, whose md branch calls `matter()` again — returned the body
54
+ // as a frontmatter field. So a resolved md snippet came back WITH `body` on a whole-site
55
+ // listing and WITHOUT it on one scoped past its own collection: the same entry, two shapes,
56
+ // decided by unrelated scoping. Regression coverage lives with the reference-resolution
57
+ // tests in content-listing.test.ts.
58
+ const data = { ...(parsed.data ?? {}) };
49
59
  if (parsed.content) {
50
60
  data[bodyFieldName] = parsed.content;
51
61
  }
@@ -58,87 +68,52 @@ export const readEntryData = async (filePath, format, bodyFieldName = 'body') =>
58
68
  return {};
59
69
  }
60
70
  };
71
+ // `parseTypedFilename` now lives in utils/typed-filename.ts so dependency-light modules can
72
+ // use it without importing this one (which pulls in ContentStore). Re-exported here because
73
+ // this is where callers -- and `canopycms/server` -- have always imported it from.
74
+ export { parseTypedFilename } from './utils/typed-filename.js';
75
+ import { parseTypedFilename } from './utils/typed-filename.js';
76
+ // ---------------------------------------------------------------------------
77
+ // Reference resolution for batch listings
78
+ // ---------------------------------------------------------------------------
61
79
  /**
62
- * Parse a Canopy content filename into its `{type}.{slug}.{id}.{ext}` parts.
80
+ * Build the `ContentStore` + shared cache that a batch listing resolves references through.
63
81
  *
64
- * ## Filename grammar
82
+ * Unrelated to the `ReferenceResolver` class in reference-resolver.ts despite the adjacent
83
+ * name — that one resolves an id to a human-readable *display label* for the editor UI. This
84
+ * resolves a reference to the referenced entry's *data* for server-side listings.
65
85
  *
66
- * Every entry file on disk is named `{type}.{slug}.{id}.{ext}`:
67
- * - `type` — the entry type name (a key in the collection's `entries` config).
68
- * - `slug` — the entry's URL slug. May itself contain dots (e.g. a slug of
69
- * `getting.started.guide`), so the type and ID anchor the split: the ID is
70
- * always the second-to-last dot-separated segment, and the slug is
71
- * everything between the type and the ID. The returned `slug` is
72
- * lowercased.
73
- * - `id` — a 12-character Base58 content ID (`generateId()`/`isValidId()`).
74
- * Base58 excludes the ambiguous characters `0`, `O`, `I`, `l` so IDs are
75
- * unambiguous when read aloud or hand-transcribed. A filename whose
76
- * would-be ID segment doesn't pass `isValidId` is rejected — the whole
77
- * parse returns `null`, even if the rest of the shape looks right.
78
- * - `ext` — the format extension (`.md`, `.mdx`, `.json`, `.yaml`), stripped
79
- * before parsing and not part of the returned result.
86
+ * Constructed lazily by each listing surface, and ONLY when the caller opted in — a store
87
+ * builds a ContentId index on first use, which is a full scan of the content tree, and the
88
+ * default (`resolveReferences` off) must stay a pure filesystem walk with no index at all.
80
89
  *
81
- * @param filename - The bare filename (no directory component). **This precondition is
82
- * not enforced.** The parser splits purely on `.`, so a `/` or `\` you pass in is not
83
- * rejected and is not treated as special — it becomes part of whichever segment it
84
- * falls in, most often the `type` segment (e.g. `'foo/bar.slug.<validId>.md'` parses
85
- * to `type: 'foo/bar'`). Strip any directory component yourself (e.g.
86
- * `path.basename(filePath)`) before calling this — every internal caller already does.
87
- * @param entryTypes - When provided, the parsed `type` segment must match one
88
- * of these entry types by name, or the parse is rejected (this is how
89
- * `listCollectionEntries` filters out files that don't belong to the
90
- * collection's configured entry types). Omit this argument to parse
91
- * structurally without validating the type against a known list — useful
92
- * for adopter code that needs to recover `{type, slug, id}` from a
93
- * filename without having a schema/entry-types list on hand (e.g. a
94
- * filesystem walk over content for tooling or diagnostics). Even without
95
- * `entryTypes`, a leading-dot filename (dotfile, editor swap/backup file)
96
- * is always rejected — an empty string is never a legal type, matching the
97
- * `filename.startsWith('.')` guard `extractEntryTypeFromFilename` in
98
- * `content-id-index.ts` already applies.
99
- * @returns `{ type, slug, id }`, or `null` if `filename` doesn't match the
100
- * `{type}.{slug}.{id}.{ext}` shape (too few segments, no extension, a
101
- * leading dot, an invalid ID, or — when `entryTypes` is given — an
102
- * unrecognized type). `id` is validated (`isValidId`) and safe to trust. **`slug` is
103
- * not** — it is the raw dot-joined middle segment(s), lowercased, cast to the branded
104
- * `Slug` type without running `parseSlug`'s validation. A filename with an
105
- * unconventional slug segment (e.g. containing a space) still parses and still
106
- * receives the `Slug` brand. Callers that need a validated slug must run the result
107
- * through `parseSlug` themselves; this function's contract is "split the filename
108
- * grammar apart," not "validate every part."
90
+ * One store and one cache per listing call, not per collection: the cache is the reason a
91
+ * shared block referenced from 40 pages costs one read instead of 40, so it has to span the
92
+ * whole batch. Per-call construction is the established shape here — content-reader.ts's
93
+ * `resolveStore` builds a store per read, and content-index-registry.ts holds stores through
94
+ * `WeakRef` + a `FinalizationRegistry` precisely so short-lived instances stay collectable.
109
95
  */
110
- export const parseTypedFilename = (filename, entryTypes) => {
111
- // Reject dotfiles outright (matching extractEntryTypeFromFilename's guard in
112
- // content-id-index.ts): a leading dot can never be a legal entry type, and this
113
- // is exactly the shape of the files a structural (no-entryTypes) parse would
114
- // otherwise misparse -- e.g. '.hidden.file.aB3cD4eF5gH6.md' -> potentialType ''.
115
- if (filename.startsWith('.'))
116
- return null;
117
- // Remove extension
118
- const lastDot = filename.lastIndexOf('.');
119
- if (lastDot === -1)
120
- return null;
121
- const nameWithoutExt = filename.slice(0, lastDot);
122
- // Parse: {type}.{slug}.{id}
123
- const parts = nameWithoutExt.split('.');
124
- if (parts.length < 3)
125
- return null;
126
- const potentialType = parts[0];
127
- // When a known-types list is supplied, the first segment must match one of
128
- // them. Without it, any non-empty first segment is accepted as the type.
129
- if (entryTypes && !entryTypes.some((e) => e.name === potentialType)) {
130
- return null;
131
- }
132
- const id = parts[parts.length - 1];
133
- if (!isValidId(id))
134
- return null;
135
- const slug = parts.slice(1, -1).join('.').toLowerCase();
96
+ export const createReferenceResolver = (branchRoot, flatSchema, contentRootName) => ({
97
+ store: new ContentStore(branchRoot, flatSchema, { contentRootName }),
98
+ cache: createReferenceResolveCache(),
99
+ });
100
+ /**
101
+ * Resolve `reference` fields in a collection's listed entries, in place of their raw data.
102
+ *
103
+ * Shared by `listEntries` and `buildContentTree` so both opt into resolution through one
104
+ * implementation. Each entry resolves against its OWN entry type's field list, since that is
105
+ * what says which fields are references at all; an entry whose type has no resolvable schema
106
+ * is returned untouched rather than guessed at.
107
+ */
108
+ export const resolveCollectionItemReferences = async (items, collection, resolver) => Promise.all(items.map(async (item) => {
109
+ const fields = collection.entries?.find((e) => e.name === item.entryType)?.schema;
110
+ if (!fields)
111
+ return item;
136
112
  return {
137
- type: potentialType,
138
- slug: slug,
139
- id: id,
113
+ ...item,
114
+ data: await resolver.store.resolveReferences(item.data, fields, resolver.cache),
140
115
  };
141
- };
116
+ }));
142
117
  /**
143
118
  * List all content entries as a flat array.
144
119
  *
@@ -165,7 +140,7 @@ export const parseTypedFilename = (filename, entryTypes) => {
165
140
  * @param branchRoot - Absolute path to the branch workspace root
166
141
  * @param flatSchema - Flattened schema items (from flattenSchema)
167
142
  * @param contentRootName - The content root name (e.g. "content")
168
- * @param options - Listing options (extract, filter, rootPath, sort)
143
+ * @param options - Listing options (extract, filter, rootPath, sort, resolveReferences)
169
144
  * @param visibility - Internal path-ACL predicate; see `ContentVisibilityOptions`
170
145
  */
171
146
  export async function listEntries(branchRoot, flatSchema, contentRootName, options, visibility) {
@@ -182,10 +157,21 @@ export async function listEntries(branchRoot, flatSchema, contentRootName, optio
182
157
  // data never reaches `extract` (let alone the returned items).
183
158
  const shouldInclude = visibility?.shouldInclude;
184
159
  const skippedFiles = [];
160
+ // One store + cache for the whole call, or nothing at all when the caller did not opt in.
161
+ // See the `resolveReferences` option for the cost this buys back.
162
+ const resolver = options?.resolveReferences
163
+ ? createReferenceResolver(branchRoot, flatSchema, contentRootName)
164
+ : null;
185
165
  const collectionResults = await Promise.all(collections.map(async (collection) => {
186
166
  const entries = await listCollectionEntries(branchRoot, collection, (file) => skippedFiles.push(file));
187
167
  const visible = shouldInclude ? entries.filter((e) => shouldInclude(e.physicalPath)) : entries;
188
- return visible.map((entry) => ({ entry, collection }));
168
+ // Resolve AFTER the visibility filter (a denied entry is never resolved, so its
169
+ // references cost nothing and leak nothing) and BEFORE the mapping below, so
170
+ // `extract` and `filter` both see resolved data — which is the entire point.
171
+ const resolved = resolver
172
+ ? await resolveCollectionItemReferences(visible, collection, resolver)
173
+ : visible;
174
+ return resolved.map((entry) => ({ entry, collection }));
189
175
  }));
190
176
  // Build-time only: fail loudly rather than silently shipping a build with a page missing. See
191
177
  // the build-time-only-failure note in this function's own doc comment above. Only files that
@@ -214,9 +200,17 @@ export async function listEntries(branchRoot, flatSchema, contentRootName, optio
214
200
  ? entry.logicalPath.slice(contentPrefix.length)
215
201
  : entry.logicalPath;
216
202
  const pathSegments = pathWithoutRoot.split('/').filter(Boolean);
217
- // Compute urlPath: collapse index entries to parent collection path
218
- const urlSegments = entry.slug === 'index' ? pathSegments.slice(0, -1) : pathSegments;
219
- const urlPath = urlSegments.length > 0 ? `/${urlSegments.join('/')}`.toLowerCase() : '/';
203
+ // Compute urlPath (collapses an `index` entry to its parent collection path) through
204
+ // the SHARED rule rather than a local copy of it. A resolved reference now carries a
205
+ // `urlPath` too, and the whole point of that field is that it addresses the same entry
206
+ // this listing does, so the two must not be free to drift apart.
207
+ //
208
+ // One deliberate copy of this rule remains: `content-tree.ts`'s `defaultBuildPath`,
209
+ // which is exported for adopters to extend and also handles the collection case
210
+ // `computeEntryUrl` does not model. It agrees today; folding it in is tracked in
211
+ // `.claude/future-tasks/default-build-path-url-rule-copy.md`.
212
+ // `content-listing.test.ts` pins the listing-vs-resolved-reference agreement.
213
+ const urlPath = computeEntryUrl(entry.collectionPath, entry.slug, contentRootName);
220
214
  const raw = entry.data;
221
215
  const meta = {
222
216
  entryPath: entry.logicalPath,
@@ -398,4 +392,3 @@ export const listCollectionEntries = async (root, collection, onSkip) => {
398
392
  }));
399
393
  return entries.filter((e) => e !== null);
400
394
  };
401
- //# sourceMappingURL=content-listing.js.map
@@ -1,7 +1,7 @@
1
- import { type ContentId, type LogicalPath, type PhysicalPath, type Slug } from './paths';
2
- import type { CanopyServices } from './services';
3
- import type { BranchContext } from './types';
4
- import type { CanopyUser } from './user';
1
+ import { type ContentId, type LogicalPath, type PhysicalPath, type Slug } from './paths/index.js';
2
+ import type { CanopyServices } from './services.js';
3
+ import type { BranchContext } from './types.js';
4
+ import type { CanopyUser } from './user.js';
5
5
  export interface ContentReaderOptions {
6
6
  services: CanopyServices;
7
7
  basePathOverride?: string;
@@ -73,4 +73,3 @@ export interface ContentReader {
73
73
  * Falls back to creating the branch workspace (metadata + checkout) if missing.
74
74
  */
75
75
  export declare const createContentReader: (options: ContentReaderOptions) => ContentReader;
76
- //# sourceMappingURL=content-reader.d.ts.map