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
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Joining a URL prefix onto a root-relative path, in ONE place.
3
+ *
4
+ * Two surfaces need the identical operation and had drifted into two implementations:
5
+ *
6
+ * - `static/seo.ts`'s `resolveSeoUrl` puts a site origin in front of an entry's URL path.
7
+ * - `assets/asset-url.ts`'s `assetUrl` puts an asset-space mount point in front of a stored
8
+ * `/assets/…` src.
9
+ *
10
+ * The asset copy was the weaker one - it checked neither absoluteness of the path nor the shape
11
+ * of the prefix - so it silently produced `/prefix/https://cdn.example.com/x.png` for an
12
+ * off-site src, and a *document-relative* URL for a prefix that had no leading slash. Both bugs
13
+ * were already solved on the SEO side. Sharing one function is what stops a third caller from
14
+ * inheriting the weaker half again.
15
+ *
16
+ * Dependency-free apart from `./sanitize-href` (itself pure - its only dependency is the global
17
+ * `URL`), because this is reachable from client bundles via `assets/asset-url.ts`. Do not add a
18
+ * node built-in here; `pnpm lint:bundle` fails the build if you do.
19
+ */
20
+ /**
21
+ * Whether `url` is a DECLARED off-site pointer - a scheme-qualified absolute URL
22
+ * (`https://example.com/x`) or a literal protocol-relative one (`//cdn.example.com/x`).
23
+ *
24
+ * Deliberately narrower than "resolves off-origin": a WHATWG-backslash-equivalent spelling
25
+ * (`/\evil.com`, `\\evil.com`, `\/evil.com` — see `utils/sanitize-href.ts`'s
26
+ * `isImplicitlyOffOrigin`) also resolves off-origin in a browser, but is NOT recognized here as
27
+ * an intentional off-site pointer the way a literal `//cdn…` is. Callers handle that case
28
+ * separately, by neutralizing (`neutralizeImplicitOffOrigin`) rather than passing through: a
29
+ * `false` result here isn't a guarantee the value is a safe site-relative path on its own, only
30
+ * that it isn't a *declared* off-site one.
31
+ */
32
+ export declare function isAbsoluteUrl(url: string): boolean;
33
+ /**
34
+ * Strip trailing slashes without a regex.
35
+ *
36
+ * The obvious `replace(/\/+$/, '')` is a polynomial-ReDoS shape (CodeQL
37
+ * `js/polynomial-redos`, flagged high): on a value that is mostly slashes but does not end in
38
+ * one, the engine retries `\/+` from every position and the match cost is quadratic in the
39
+ * input length. Both prefixes that reach here - a `siteUrl` and an asset `baseUrl` - are
40
+ * adopter-supplied and can come from config or an env var, so they count as uncontrolled. A
41
+ * character scan is linear and needs no reasoning about backtracking.
42
+ *
43
+ * Exported (from `canopycms/server`) so adopter code normalizing its own site-origin env var —
44
+ * e.g. a `SITE_URL` constant built from `NEXT_PUBLIC_SITE_URL` — has a package-provided linear
45
+ * way to do it instead of reaching for the same regex this function replaced.
46
+ */
47
+ export declare function stripTrailingSlashes(value: string): string;
48
+ /**
49
+ * Reduce a URL reference to a value that is safe to emit as a SAME-ORIGIN path.
50
+ *
51
+ * `neutralizeImplicitOffOrigin` alone is not sufficient, and this is the subtle part: it returns
52
+ * `pathname + search + hash`, and a WHATWG `pathname` can ITSELF begin with `//`. `/\evil.com//a`
53
+ * parses to host `evil.com` with pathname `//a`, so neutralizing yields the string `//a` — which,
54
+ * re-emitted as a URL reference, reads as protocol-relative all over again and points at a host
55
+ * literally named `a`. Neutralizing a second time does not help: the value is now indistinguishable
56
+ * from a caller's legitimate `//cdn.example.com` pointer, so every absolute-URL check downstream
57
+ * (correctly) passes it straight through, prefix and all.
58
+ *
59
+ * The value is same-origin by construction at this point, so collapse the leading slash run to a
60
+ * single slash. Linear scan rather than a regex, for the reason `stripTrailingSlashes` documents.
61
+ *
62
+ * Use this instead of calling `neutralizeImplicitOffOrigin` directly anywhere the result is going
63
+ * to be prefixed or emitted as a path.
64
+ */
65
+ export declare function toSameOriginPath(url: string): string;
66
+ /**
67
+ * Whether `url` is something a prefix cannot meaningfully be put in front of.
68
+ *
69
+ * Two kinds: **scheme-bearing** (`data:`, `blob:`, `mailto:`, `https://…`) and **literal
70
+ * protocol-relative** (`//cdn.example.com/x`). Neither is a site-relative path, so rooting or
71
+ * prefixing them only corrupts them (`data:image/png;…` → `/data:image/png;…`, a broken
72
+ * `<img src>`).
73
+ *
74
+ * NOTE this is deliberately NOT consulted by `joinUrlPrefix` for the scheme half. A URL-space
75
+ * mount point (`assetUrl`) wants scheme-bearing values handed back untouched; a site ORIGIN
76
+ * (`resolveSeoUrl`) does not - it must still produce an absolute URL, because a non-absolute
77
+ * sitemap `<loc>` invalidates the whole sitemap. Letting the two share one rule silently made
78
+ * `resolveSeoUrl('mailto:a@b.c', { siteUrl })` return `mailto:a@b.c` and drop the origin. Callers
79
+ * that want the pass-through opt in by checking this themselves.
80
+ */
81
+ export declare function isUnprefixablePath(url: string): boolean;
82
+ /**
83
+ * Make `url` safe to emit AS-IS, changing nothing else.
84
+ *
85
+ * For a caller with no mount point to apply, which must hand a value back byte-identical wherever
86
+ * it legitimately can: an `isUnprefixablePath` value passes straight through, and everything else
87
+ * goes through `toSameOriginPath`, so a value that merely *reads* as off-origin to a browser (the
88
+ * backslash spellings) is still neutralized rather than passed along.
89
+ */
90
+ export declare function sanitizeUnprefixedPath(url: string): string;
91
+ /**
92
+ * Put `prefix` in front of the root-relative `path`, and return `path` untouched when it is
93
+ * already a declared off-site URL.
94
+ *
95
+ * ORDER MATTERS — the absolute check on `path` runs FIRST. An absolute or protocol-relative
96
+ * value is a deliberate off-site pointer (syndication, a partner-hosted copy, a CDN image) and
97
+ * must pass through verbatim; prefixing first turns `https://other.org/page` into
98
+ * `<prefix>/https://other.org/page`.
99
+ *
100
+ * `prefix` normalization, in order:
101
+ * - Empty/undefined, or nothing but slashes (`'/'`, `'///'`) → no prefix at all, so the result
102
+ * stays root-relative. This is what makes an unset option a clean no-op. It also kills a
103
+ * `'//'` prefix, which would otherwise concatenate to `//assets/…` — read by browsers as
104
+ * protocol-relative, i.e. a request to a host literally named `assets`.
105
+ * - A declared off-site prefix (`https://cdn.example.com`, `//cdn.example.com`) is used as-is.
106
+ * A literal protocol-relative prefix is an intentionally-supported off-site pointer here (see
107
+ * `utils/sanitize-href.ts`), so it is NOT collapsed to a path.
108
+ * - Anything else is a same-origin path prefix and is given a leading slash if it lacks one.
109
+ * Without this, a prefix like `preview-123` (the shape an env var often carries) produces a
110
+ * *document-relative* URL that resolves to a different place on every page — an intermittent
111
+ * failure that is harder to diagnose than the plain 404 it replaced.
112
+ *
113
+ * `path` is run through `toSameOriginPath` when it is not a pass-through, so a
114
+ * backslash-equivalent spelling that `isAbsoluteUrl` correctly declines to call "absolute"
115
+ * (see its doc) can't still be read by a browser as protocol-relative once emitted. Note this
116
+ * needs the `//`-pathname collapse, not just neutralization — see `toSameOriginPath`.
117
+ *
118
+ * `prefix` is NOT neutralized: it is adopter-supplied configuration rather than content, and
119
+ * neutralizing it would silently rewrite a legitimate protocol-relative CDN base into a path.
120
+ */
121
+ export declare function joinUrlPrefix(prefix: string | undefined, path: string): string;
@@ -0,0 +1,158 @@
1
+ /**
2
+ * Joining a URL prefix onto a root-relative path, in ONE place.
3
+ *
4
+ * Two surfaces need the identical operation and had drifted into two implementations:
5
+ *
6
+ * - `static/seo.ts`'s `resolveSeoUrl` puts a site origin in front of an entry's URL path.
7
+ * - `assets/asset-url.ts`'s `assetUrl` puts an asset-space mount point in front of a stored
8
+ * `/assets/…` src.
9
+ *
10
+ * The asset copy was the weaker one - it checked neither absoluteness of the path nor the shape
11
+ * of the prefix - so it silently produced `/prefix/https://cdn.example.com/x.png` for an
12
+ * off-site src, and a *document-relative* URL for a prefix that had no leading slash. Both bugs
13
+ * were already solved on the SEO side. Sharing one function is what stops a third caller from
14
+ * inheriting the weaker half again.
15
+ *
16
+ * Dependency-free apart from `./sanitize-href` (itself pure - its only dependency is the global
17
+ * `URL`), because this is reachable from client bundles via `assets/asset-url.ts`. Do not add a
18
+ * node built-in here; `pnpm lint:bundle` fails the build if you do.
19
+ */
20
+ import { declaresScheme, neutralizeImplicitOffOrigin } from './sanitize-href.js';
21
+ /**
22
+ * Whether `url` is a DECLARED off-site pointer - a scheme-qualified absolute URL
23
+ * (`https://example.com/x`) or a literal protocol-relative one (`//cdn.example.com/x`).
24
+ *
25
+ * Deliberately narrower than "resolves off-origin": a WHATWG-backslash-equivalent spelling
26
+ * (`/\evil.com`, `\\evil.com`, `\/evil.com` — see `utils/sanitize-href.ts`'s
27
+ * `isImplicitlyOffOrigin`) also resolves off-origin in a browser, but is NOT recognized here as
28
+ * an intentional off-site pointer the way a literal `//cdn…` is. Callers handle that case
29
+ * separately, by neutralizing (`neutralizeImplicitOffOrigin`) rather than passing through: a
30
+ * `false` result here isn't a guarantee the value is a safe site-relative path on its own, only
31
+ * that it isn't a *declared* off-site one.
32
+ */
33
+ export function isAbsoluteUrl(url) {
34
+ return /^[a-z][a-z0-9+.-]*:\/\//i.test(url) || url.startsWith('//');
35
+ }
36
+ /**
37
+ * Strip trailing slashes without a regex.
38
+ *
39
+ * The obvious `replace(/\/+$/, '')` is a polynomial-ReDoS shape (CodeQL
40
+ * `js/polynomial-redos`, flagged high): on a value that is mostly slashes but does not end in
41
+ * one, the engine retries `\/+` from every position and the match cost is quadratic in the
42
+ * input length. Both prefixes that reach here - a `siteUrl` and an asset `baseUrl` - are
43
+ * adopter-supplied and can come from config or an env var, so they count as uncontrolled. A
44
+ * character scan is linear and needs no reasoning about backtracking.
45
+ *
46
+ * Exported (from `canopycms/server`) so adopter code normalizing its own site-origin env var —
47
+ * e.g. a `SITE_URL` constant built from `NEXT_PUBLIC_SITE_URL` — has a package-provided linear
48
+ * way to do it instead of reaching for the same regex this function replaced.
49
+ */
50
+ export function stripTrailingSlashes(value) {
51
+ let end = value.length;
52
+ while (end > 0 && value.charCodeAt(end - 1) === 47 /* '/' */)
53
+ end--;
54
+ return value.slice(0, end);
55
+ }
56
+ /**
57
+ * Reduce a URL reference to a value that is safe to emit as a SAME-ORIGIN path.
58
+ *
59
+ * `neutralizeImplicitOffOrigin` alone is not sufficient, and this is the subtle part: it returns
60
+ * `pathname + search + hash`, and a WHATWG `pathname` can ITSELF begin with `//`. `/\evil.com//a`
61
+ * parses to host `evil.com` with pathname `//a`, so neutralizing yields the string `//a` — which,
62
+ * re-emitted as a URL reference, reads as protocol-relative all over again and points at a host
63
+ * literally named `a`. Neutralizing a second time does not help: the value is now indistinguishable
64
+ * from a caller's legitimate `//cdn.example.com` pointer, so every absolute-URL check downstream
65
+ * (correctly) passes it straight through, prefix and all.
66
+ *
67
+ * The value is same-origin by construction at this point, so collapse the leading slash run to a
68
+ * single slash. Linear scan rather than a regex, for the reason `stripTrailingSlashes` documents.
69
+ *
70
+ * Use this instead of calling `neutralizeImplicitOffOrigin` directly anywhere the result is going
71
+ * to be prefixed or emitted as a path.
72
+ */
73
+ export function toSameOriginPath(url) {
74
+ const neutralized = neutralizeImplicitOffOrigin(url);
75
+ let slashes = 0;
76
+ while (slashes < neutralized.length && neutralized.charCodeAt(slashes) === 47 /* '/' */)
77
+ slashes++;
78
+ return slashes > 1 ? `/${neutralized.slice(slashes)}` : neutralized;
79
+ }
80
+ /**
81
+ * Whether `url` is something a prefix cannot meaningfully be put in front of.
82
+ *
83
+ * Two kinds: **scheme-bearing** (`data:`, `blob:`, `mailto:`, `https://…`) and **literal
84
+ * protocol-relative** (`//cdn.example.com/x`). Neither is a site-relative path, so rooting or
85
+ * prefixing them only corrupts them (`data:image/png;…` → `/data:image/png;…`, a broken
86
+ * `<img src>`).
87
+ *
88
+ * NOTE this is deliberately NOT consulted by `joinUrlPrefix` for the scheme half. A URL-space
89
+ * mount point (`assetUrl`) wants scheme-bearing values handed back untouched; a site ORIGIN
90
+ * (`resolveSeoUrl`) does not - it must still produce an absolute URL, because a non-absolute
91
+ * sitemap `<loc>` invalidates the whole sitemap. Letting the two share one rule silently made
92
+ * `resolveSeoUrl('mailto:a@b.c', { siteUrl })` return `mailto:a@b.c` and drop the origin. Callers
93
+ * that want the pass-through opt in by checking this themselves.
94
+ */
95
+ export function isUnprefixablePath(url) {
96
+ return declaresScheme(url) || isAbsoluteUrl(url);
97
+ }
98
+ /**
99
+ * Make `url` safe to emit AS-IS, changing nothing else.
100
+ *
101
+ * For a caller with no mount point to apply, which must hand a value back byte-identical wherever
102
+ * it legitimately can: an `isUnprefixablePath` value passes straight through, and everything else
103
+ * goes through `toSameOriginPath`, so a value that merely *reads* as off-origin to a browser (the
104
+ * backslash spellings) is still neutralized rather than passed along.
105
+ */
106
+ export function sanitizeUnprefixedPath(url) {
107
+ if (isUnprefixablePath(url))
108
+ return url;
109
+ return toSameOriginPath(url);
110
+ }
111
+ /**
112
+ * Put `prefix` in front of the root-relative `path`, and return `path` untouched when it is
113
+ * already a declared off-site URL.
114
+ *
115
+ * ORDER MATTERS — the absolute check on `path` runs FIRST. An absolute or protocol-relative
116
+ * value is a deliberate off-site pointer (syndication, a partner-hosted copy, a CDN image) and
117
+ * must pass through verbatim; prefixing first turns `https://other.org/page` into
118
+ * `<prefix>/https://other.org/page`.
119
+ *
120
+ * `prefix` normalization, in order:
121
+ * - Empty/undefined, or nothing but slashes (`'/'`, `'///'`) → no prefix at all, so the result
122
+ * stays root-relative. This is what makes an unset option a clean no-op. It also kills a
123
+ * `'//'` prefix, which would otherwise concatenate to `//assets/…` — read by browsers as
124
+ * protocol-relative, i.e. a request to a host literally named `assets`.
125
+ * - A declared off-site prefix (`https://cdn.example.com`, `//cdn.example.com`) is used as-is.
126
+ * A literal protocol-relative prefix is an intentionally-supported off-site pointer here (see
127
+ * `utils/sanitize-href.ts`), so it is NOT collapsed to a path.
128
+ * - Anything else is a same-origin path prefix and is given a leading slash if it lacks one.
129
+ * Without this, a prefix like `preview-123` (the shape an env var often carries) produces a
130
+ * *document-relative* URL that resolves to a different place on every page — an intermittent
131
+ * failure that is harder to diagnose than the plain 404 it replaced.
132
+ *
133
+ * `path` is run through `toSameOriginPath` when it is not a pass-through, so a
134
+ * backslash-equivalent spelling that `isAbsoluteUrl` correctly declines to call "absolute"
135
+ * (see its doc) can't still be read by a browser as protocol-relative once emitted. Note this
136
+ * needs the `//`-pathname collapse, not just neutralization — see `toSameOriginPath`.
137
+ *
138
+ * `prefix` is NOT neutralized: it is adopter-supplied configuration rather than content, and
139
+ * neutralizing it would silently rewrite a legitimate protocol-relative CDN base into a path.
140
+ */
141
+ export function joinUrlPrefix(prefix, path) {
142
+ // Only a DECLARED off-site pointer passes through. A scheme-bearing but non-absolute value
143
+ // (`mailto:x`, `data:…`) is rooted, which is what a site origin needs - see
144
+ // `isUnprefixablePath` for why this deliberately differs from the asset-mount case.
145
+ if (isAbsoluteUrl(path))
146
+ return path;
147
+ const safePath = toSameOriginPath(path);
148
+ const normalizedPath = safePath.startsWith('/') ? safePath : `/${safePath}`;
149
+ if (!prefix)
150
+ return normalizedPath;
151
+ const trimmedPrefix = stripTrailingSlashes(prefix);
152
+ if (!trimmedPrefix)
153
+ return normalizedPath;
154
+ const normalizedPrefix = isAbsoluteUrl(trimmedPrefix) || trimmedPrefix.startsWith('/')
155
+ ? trimmedPrefix
156
+ : `/${trimmedPrefix}`;
157
+ return `${normalizedPrefix}${normalizedPath}`;
158
+ }
@@ -0,0 +1,42 @@
1
+ /**
2
+ * The keys a block item carries that are STRUCTURE rather than content.
3
+ *
4
+ * A block on disk is `{ template: 'hero', value: { ...fields } }` — the canonical shape the
5
+ * editor writes and `ContentStore` persists — or, defensively, the inline `{ _type: 'hero',
6
+ * ...fields }` shape (see `resolveBlockItem` in `./field-traversal`). Either way the
7
+ * discriminator names the block's TEMPLATE, which is a category label shared by every block of
8
+ * that kind, not an identifier for this particular block.
9
+ *
10
+ * That distinction matters to two callers for opposite-looking reasons, which is why the list
11
+ * lives here rather than in either of them:
12
+ *
13
+ * - `findUnknownKeys` (./entry-validator) must not report the discriminator as a stale key: it
14
+ * is not a schema field, but it is supposed to be there.
15
+ * - `looksLikeSameItem` (../utils/content-serialize) must not accept the discriminator as
16
+ * evidence that two list items are the same item: two `hero` blocks share `template: hero`,
17
+ * so counting it migrated an editorial comment off a deleted block onto an unrelated
18
+ * survivor.
19
+ *
20
+ * A single list keeps those two from drifting apart — a third discriminator added for one of
21
+ * them but not the other would resurrect exactly one of those bugs.
22
+ *
23
+ * Note that two other readers deliberately still spell the keys out themselves, because they
24
+ * READ the discriminator's value positionally rather than testing membership, and they do not
25
+ * agree on precedence: `resolveBlockItem` prefers `template`, while `ai/json-to-markdown.ts`
26
+ * prefers `_type`. Reconciling that is a behaviour question, not a refactor — see
27
+ * `.claude/future-tasks/block-discriminator-precedence-disagreement.md`.
28
+ *
29
+ * Dependency-free on purpose: both importers are reachable from contexts that must not pull in
30
+ * schema types or node built-ins.
31
+ */
32
+ /**
33
+ * The discriminator keys, in the precedence `resolveBlockItem` reads them.
34
+ *
35
+ * Ordered (rather than a bare Set) so a caller that needs the VALUE can iterate it, and so the
36
+ * canonical shape's key stays visibly first.
37
+ */
38
+ export declare const BLOCK_DISCRIMINATOR_KEYS: readonly ["template", "_type"];
39
+ /** Membership form of {@link BLOCK_DISCRIMINATOR_KEYS}, for the two set-test callers. */
40
+ export declare const BLOCK_STRUCTURAL_KEYS: ReadonlySet<string>;
41
+ /** True for a key that names a block's template rather than holding any of its content. */
42
+ export declare function isBlockStructuralKey(key: string): boolean;
@@ -0,0 +1,44 @@
1
+ /**
2
+ * The keys a block item carries that are STRUCTURE rather than content.
3
+ *
4
+ * A block on disk is `{ template: 'hero', value: { ...fields } }` — the canonical shape the
5
+ * editor writes and `ContentStore` persists — or, defensively, the inline `{ _type: 'hero',
6
+ * ...fields }` shape (see `resolveBlockItem` in `./field-traversal`). Either way the
7
+ * discriminator names the block's TEMPLATE, which is a category label shared by every block of
8
+ * that kind, not an identifier for this particular block.
9
+ *
10
+ * That distinction matters to two callers for opposite-looking reasons, which is why the list
11
+ * lives here rather than in either of them:
12
+ *
13
+ * - `findUnknownKeys` (./entry-validator) must not report the discriminator as a stale key: it
14
+ * is not a schema field, but it is supposed to be there.
15
+ * - `looksLikeSameItem` (../utils/content-serialize) must not accept the discriminator as
16
+ * evidence that two list items are the same item: two `hero` blocks share `template: hero`,
17
+ * so counting it migrated an editorial comment off a deleted block onto an unrelated
18
+ * survivor.
19
+ *
20
+ * A single list keeps those two from drifting apart — a third discriminator added for one of
21
+ * them but not the other would resurrect exactly one of those bugs.
22
+ *
23
+ * Note that two other readers deliberately still spell the keys out themselves, because they
24
+ * READ the discriminator's value positionally rather than testing membership, and they do not
25
+ * agree on precedence: `resolveBlockItem` prefers `template`, while `ai/json-to-markdown.ts`
26
+ * prefers `_type`. Reconciling that is a behaviour question, not a refactor — see
27
+ * `.claude/future-tasks/block-discriminator-precedence-disagreement.md`.
28
+ *
29
+ * Dependency-free on purpose: both importers are reachable from contexts that must not pull in
30
+ * schema types or node built-ins.
31
+ */
32
+ /**
33
+ * The discriminator keys, in the precedence `resolveBlockItem` reads them.
34
+ *
35
+ * Ordered (rather than a bare Set) so a caller that needs the VALUE can iterate it, and so the
36
+ * canonical shape's key stays visibly first.
37
+ */
38
+ export const BLOCK_DISCRIMINATOR_KEYS = ['template', '_type'];
39
+ /** Membership form of {@link BLOCK_DISCRIMINATOR_KEYS}, for the two set-test callers. */
40
+ export const BLOCK_STRUCTURAL_KEYS = new Set(BLOCK_DISCRIMINATOR_KEYS);
41
+ /** True for a key that names a block's template rather than holding any of its content. */
42
+ export function isBlockStructuralKey(key) {
43
+ return BLOCK_STRUCTURAL_KEYS.has(key);
44
+ }
@@ -1,7 +1,7 @@
1
- import type { ContentStore } from '../content-store';
2
- import type { ContentIdIndex } from '../content-id-index';
3
- import type { FieldConfig } from '../config';
4
- import { type LogicalPath, type Slug } from '../paths';
1
+ import type { ContentStore } from '../content-store.js';
2
+ import type { ContentIdIndex } from '../content-id-index.js';
3
+ import type { FieldConfig } from '../config/index.js';
4
+ import { type LogicalPath, type Slug } from '../paths/index.js';
5
5
  export interface ReferenceInfo {
6
6
  entryPath: string;
7
7
  entryTitle?: string;
@@ -63,4 +63,3 @@ export declare class DeletionChecker {
63
63
  */
64
64
  private listEntriesInCollection;
65
65
  }
66
- //# sourceMappingURL=deletion-checker.d.ts.map
@@ -162,4 +162,3 @@ export class DeletionChecker {
162
162
  return entries;
163
163
  }
164
164
  }
165
- //# sourceMappingURL=deletion-checker.js.map
@@ -6,8 +6,8 @@
6
6
  * This parallels ReferenceValidator but operates on inline links in text content
7
7
  * rather than structured reference fields.
8
8
  */
9
- import type { ContentIdIndex } from '../content-id-index';
10
- import type { FieldConfig } from '../config';
9
+ import type { ContentIdIndex } from '../content-id-index.js';
10
+ import type { FieldConfig } from '../config/index.js';
11
11
  export interface EntryLinkWarning {
12
12
  field: string;
13
13
  fieldPath: string;
@@ -24,4 +24,3 @@ export interface EntryLinkValidationResult {
24
24
  * and checks that each referenced ID exists in the content index.
25
25
  */
26
26
  export declare function validateEntryLinks(data: Record<string, unknown>, schema: readonly FieldConfig[], idIndex: ContentIdIndex, bodyContent?: string): EntryLinkValidationResult;
27
- //# sourceMappingURL=entry-link-validator.d.ts.map
@@ -46,4 +46,3 @@ function checkText(text, fieldName, fieldPath, idIndex, warnings) {
46
46
  }
47
47
  }
48
48
  }
49
- //# sourceMappingURL=entry-link-validator.js.map
@@ -13,7 +13,7 @@
13
13
  * at entry-schema *registration* (entry-schema-registry.ts), before any branch
14
14
  * schema exists, and so cannot perform this check.
15
15
  */
16
- import type { RootCollectionConfig } from '../config';
16
+ import type { RootCollectionConfig } from '../config/index.js';
17
17
  /**
18
18
  * Collect every entry type name defined anywhere in the schema.
19
19
  *
@@ -30,4 +30,3 @@ export declare const collectEntryTypeNames: (schema: RootCollectionConfig) => Se
30
30
  * @returns One human-readable message per offending value; empty when valid.
31
31
  */
32
32
  export declare const validateReferenceEntryTypes: (schema: RootCollectionConfig) => string[];
33
- //# sourceMappingURL=entry-type-reference-validator.d.ts.map
@@ -107,4 +107,3 @@ export const validateReferenceEntryTypes = (schema) => {
107
107
  });
108
108
  return issues;
109
109
  };
110
- //# sourceMappingURL=entry-type-reference-validator.js.map
@@ -21,7 +21,7 @@
21
21
  * content ID index (filesystem) and is enforced server-side only, by running
22
22
  * `ReferenceValidator` at the write boundary.
23
23
  */
24
- import type { ContentFormat, EntrySchema } from '../config';
24
+ import type { ContentFormat, EntrySchema } from '../config/index.js';
25
25
  /**
26
26
  * One per-field validation error. `fieldPath` uses the canonical CanopyCMS
27
27
  * path format shared with field-traversal and the editor's canopy-path
@@ -56,6 +56,28 @@ export declare function validateEntryData(fields: EntrySchema, data: Record<stri
56
56
  * schema's body field before validating so required/type checks see it.
57
57
  */
58
58
  export declare function validateEntryFormValue(fields: EntrySchema, format: ContentFormat | undefined, value: Record<string, unknown>): EntryFieldError[];
59
+ /**
60
+ * Find data keys that have no counterpart in the schema, as canonical field paths
61
+ * (`author.nickname`, `blocks[2].headline`).
62
+ *
63
+ * `validateEntryData` iterates the SCHEMA, so it can only ever report fields the schema knows
64
+ * about. Nothing reported the inverse: rename or reshape a field and the old key persists on
65
+ * disk forever, because the editor's form state is the whole record verbatim and every save
66
+ * posts it back. The only symptom is a component quietly receiving `undefined`.
67
+ *
68
+ * Pure — safe in the browser. Reports rather than rejects: a save carrying a stale key still
69
+ * succeeds (and now the write path even preserves the key and its comments), so this feeds the
70
+ * non-blocking `validationWarnings` channel, not the 422 path.
71
+ *
72
+ * Two things it deliberately does not report:
73
+ *
74
+ * - **A container with no fields at all.** `api/content.ts` falls back to `[]` for a collection
75
+ * with no configured entry type; "no schema" is not "every key is unknown".
76
+ * - **Anything inside a `reference` value.** Reads resolve references by default, so a reference
77
+ * field's value is `{ ...target data, id, slug, collection, urlPath }`. The traversal only
78
+ * descends into `object` and `block`, so it never looks inside one.
79
+ */
80
+ export declare function findUnknownKeys(fields: EntrySchema, data: Record<string, unknown>): string[];
59
81
  /**
60
82
  * Return a copy of `data` with resolved reference objects (`{ id, ... }`)
61
83
  * collapsed back to their id strings, recursing through objects, lists, and
@@ -64,4 +86,3 @@ export declare function validateEntryFormValue(fields: EntrySchema, format: Cont
64
86
  * that may still carry resolved objects from a prior read.
65
87
  */
66
88
  export declare function normalizeReferenceValues(fields: EntrySchema, data: Record<string, unknown>): Record<string, unknown>;
67
- //# sourceMappingURL=entry-validator.d.ts.map
@@ -23,8 +23,10 @@
23
23
  */
24
24
  import { fieldTypes } from '../config/index.js';
25
25
  import { isValidCropRect } from '../assets/transform-directives.js';
26
- import { resolveBlockItem } from './field-traversal.js';
26
+ import { BLOCK_STRUCTURAL_KEYS } from './block-structural-keys.js';
27
+ import { resolveBlockItem, traverseFields } from './field-traversal.js';
27
28
  import { findBodyFieldName } from '../utils/body-field.js';
29
+ import { flattenGroupFields } from '../utils/flatten-group-fields.js';
28
30
  import { isDataOnlyFormat } from '../utils/format.js';
29
31
  const KNOWN_FIELD_TYPES = new Set(fieldTypes);
30
32
  /** Field types whose value is a plain string. */
@@ -273,6 +275,37 @@ export function validateEntryFormValue(fields, format, value) {
273
275
  }
274
276
  return validateEntryData(fields, value);
275
277
  }
278
+ /**
279
+ * Find data keys that have no counterpart in the schema, as canonical field paths
280
+ * (`author.nickname`, `blocks[2].headline`).
281
+ *
282
+ * `validateEntryData` iterates the SCHEMA, so it can only ever report fields the schema knows
283
+ * about. Nothing reported the inverse: rename or reshape a field and the old key persists on
284
+ * disk forever, because the editor's form state is the whole record verbatim and every save
285
+ * posts it back. The only symptom is a component quietly receiving `undefined`.
286
+ *
287
+ * Pure — safe in the browser. Reports rather than rejects: a save carrying a stale key still
288
+ * succeeds (and now the write path even preserves the key and its comments), so this feeds the
289
+ * non-blocking `validationWarnings` channel, not the 422 path.
290
+ *
291
+ * Two things it deliberately does not report:
292
+ *
293
+ * - **A container with no fields at all.** `api/content.ts` falls back to `[]` for a collection
294
+ * with no configured entry type; "no schema" is not "every key is unknown".
295
+ * - **Anything inside a `reference` value.** Reads resolve references by default, so a reference
296
+ * field's value is `{ ...target data, id, slug, collection, urlPath }`. The traversal only
297
+ * descends into `object` and `block`, so it never looks inside one.
298
+ */
299
+ export function findUnknownKeys(fields, data) {
300
+ return traverseFields(fields, data, () => [], '', ({ fields: containerFields, data: record, path }) => {
301
+ if (containerFields.length === 0)
302
+ return [];
303
+ const known = new Set(flattenGroupFields(containerFields).map((field) => field.name));
304
+ return Object.keys(record)
305
+ .filter((key) => !known.has(key) && !BLOCK_STRUCTURAL_KEYS.has(key))
306
+ .map((key) => (path ? `${path}.${key}` : key));
307
+ });
308
+ }
276
309
  /**
277
310
  * Return a copy of `data` with resolved reference objects (`{ id, ... }`)
278
311
  * collapsed back to their id strings, recursing through objects, lists, and
@@ -329,4 +362,3 @@ export function normalizeReferenceValues(fields, data) {
329
362
  }
330
363
  return result;
331
364
  }
332
- //# sourceMappingURL=entry-validator.js.map
@@ -5,7 +5,7 @@
5
5
  * according to a schema, handling objects, blocks, and arrays with their
6
6
  * own schemas.
7
7
  */
8
- import type { FieldConfig, BlockFieldConfig } from '../config';
8
+ import type { FieldConfig, BlockFieldConfig } from '../config/index.js';
9
9
  /**
10
10
  * Context provided to the visitor function for each field.
11
11
  */
@@ -22,6 +22,26 @@ export interface TraversalContext {
22
22
  * Return an empty array to skip this field, or return items to collect.
23
23
  */
24
24
  export type FieldVisitor<T> = (context: TraversalContext) => T[];
25
+ /**
26
+ * Context for a CONTAINER — one data record together with the field list that governs it.
27
+ *
28
+ * The field visitor is driven by the schema, so it can only ever see keys the schema already
29
+ * knows about. A container visitor sees the record itself, which is what a check on the data's
30
+ * OWN keys needs (`findUnknownKeys` in entry-validator.ts).
31
+ */
32
+ export interface ContainerContext {
33
+ /** The schema fields governing this record. Inline groups are NOT flattened. */
34
+ fields: readonly FieldConfig[];
35
+ /** The data record those fields govern. */
36
+ data: Record<string, unknown>;
37
+ /** Path to the record itself ('' at the top level, e.g. `blocks[0]` inside a block). */
38
+ path: string;
39
+ }
40
+ /**
41
+ * Visitor called once per container, before its fields are walked.
42
+ * Return an empty array to collect nothing.
43
+ */
44
+ export type ContainerVisitor<T> = (context: ContainerContext) => T[];
25
45
  /**
26
46
  * A block item resolved to its template fields and the data record that
27
47
  * holds the nested field values.
@@ -58,7 +78,12 @@ export declare function resolveBlockItem(blockField: BlockFieldConfig, item: Rec
58
78
  * @param data - The data object to traverse
59
79
  * @param visitor - Function called for each field, returns items to collect
60
80
  * @param pathPrefix - Current path prefix for nested fields
61
- * @returns Array of all items returned by the visitor
81
+ * @param onContainer - Optional, called once per container (this record plus the fields
82
+ * governing it) before its fields are walked: the top level, each object value, each
83
+ * object-list item, and each block item's resolved data. Inline groups do NOT fire it — a
84
+ * group is transparent to the data and shares its parent's record, so its children are already
85
+ * covered by the parent's container call.
86
+ * @returns Array of all items returned by the visitors
62
87
  *
63
88
  * @example
64
89
  * ```ts
@@ -71,7 +96,7 @@ export declare function resolveBlockItem(blockField: BlockFieldConfig, item: Rec
71
96
  * })
72
97
  * ```
73
98
  */
74
- export declare function traverseFields<T>(fields: readonly FieldConfig[], data: Record<string, unknown>, visitor: FieldVisitor<T>, pathPrefix?: string): T[];
99
+ export declare function traverseFields<T>(fields: readonly FieldConfig[], data: Record<string, unknown>, visitor: FieldVisitor<T>, pathPrefix?: string, onContainer?: ContainerVisitor<T>): T[];
75
100
  /**
76
101
  * Find all fields of a specific type in the data.
77
102
  *
@@ -81,4 +106,3 @@ export declare function traverseFields<T>(fields: readonly FieldConfig[], data:
81
106
  * @returns Array of { field, value, path } for matching fields
82
107
  */
83
108
  export declare function findFieldsByType(fields: readonly FieldConfig[], data: Record<string, unknown>, fieldType: string): TraversalContext[];
84
- //# sourceMappingURL=field-traversal.d.ts.map