canopycms 0.0.0

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 (1276) hide show
  1. package/README.md +404 -0
  2. package/dist/__integration__/fixtures/content-seeds.d.ts +43 -0
  3. package/dist/__integration__/fixtures/content-seeds.d.ts.map +1 -0
  4. package/dist/__integration__/fixtures/content-seeds.js +99 -0
  5. package/dist/__integration__/fixtures/content-seeds.js.map +1 -0
  6. package/dist/__integration__/fixtures/schemas.d.ts +12 -0
  7. package/dist/__integration__/fixtures/schemas.d.ts.map +1 -0
  8. package/dist/__integration__/fixtures/schemas.js +65 -0
  9. package/dist/__integration__/fixtures/schemas.js.map +1 -0
  10. package/dist/__integration__/test-utils/api-client.d.ts +123 -0
  11. package/dist/__integration__/test-utils/api-client.d.ts.map +1 -0
  12. package/dist/__integration__/test-utils/api-client.js +118 -0
  13. package/dist/__integration__/test-utils/api-client.js.map +1 -0
  14. package/dist/__integration__/test-utils/multi-user.d.ts +25 -0
  15. package/dist/__integration__/test-utils/multi-user.d.ts.map +1 -0
  16. package/dist/__integration__/test-utils/multi-user.js +105 -0
  17. package/dist/__integration__/test-utils/multi-user.js.map +1 -0
  18. package/dist/__integration__/test-utils/test-workspace.d.ts +25 -0
  19. package/dist/__integration__/test-utils/test-workspace.d.ts.map +1 -0
  20. package/dist/__integration__/test-utils/test-workspace.js +102 -0
  21. package/dist/__integration__/test-utils/test-workspace.js.map +1 -0
  22. package/dist/ai/generate.d.ts +31 -0
  23. package/dist/ai/generate.d.ts.map +1 -0
  24. package/dist/ai/generate.js +277 -0
  25. package/dist/ai/generate.js.map +1 -0
  26. package/dist/ai/handler.d.ts +38 -0
  27. package/dist/ai/handler.d.ts.map +1 -0
  28. package/dist/ai/handler.js +99 -0
  29. package/dist/ai/handler.js.map +1 -0
  30. package/dist/ai/index.d.ts +13 -0
  31. package/dist/ai/index.d.ts.map +1 -0
  32. package/dist/ai/index.js +10 -0
  33. package/dist/ai/index.js.map +1 -0
  34. package/dist/ai/json-to-markdown.d.ts +15 -0
  35. package/dist/ai/json-to-markdown.d.ts.map +1 -0
  36. package/dist/ai/json-to-markdown.js +318 -0
  37. package/dist/ai/json-to-markdown.js.map +1 -0
  38. package/dist/ai/resolve-branch.d.ts +13 -0
  39. package/dist/ai/resolve-branch.d.ts.map +1 -0
  40. package/dist/ai/resolve-branch.js +27 -0
  41. package/dist/ai/resolve-branch.js.map +1 -0
  42. package/dist/ai/types.d.ts +133 -0
  43. package/dist/ai/types.d.ts.map +1 -0
  44. package/dist/ai/types.js +14 -0
  45. package/dist/ai/types.js.map +1 -0
  46. package/dist/api/__test__/mock-client.d.ts +194 -0
  47. package/dist/api/__test__/mock-client.d.ts.map +1 -0
  48. package/dist/api/__test__/mock-client.js +322 -0
  49. package/dist/api/__test__/mock-client.js.map +1 -0
  50. package/dist/api/assets.d.ts +52 -0
  51. package/dist/api/assets.d.ts.map +1 -0
  52. package/dist/api/assets.js +106 -0
  53. package/dist/api/assets.js.map +1 -0
  54. package/dist/api/branch-merge.d.ts +28 -0
  55. package/dist/api/branch-merge.d.ts.map +1 -0
  56. package/dist/api/branch-merge.js +87 -0
  57. package/dist/api/branch-merge.js.map +1 -0
  58. package/dist/api/branch-review.d.ts +42 -0
  59. package/dist/api/branch-review.d.ts.map +1 -0
  60. package/dist/api/branch-review.js +102 -0
  61. package/dist/api/branch-review.js.map +1 -0
  62. package/dist/api/branch-status.d.ts +81 -0
  63. package/dist/api/branch-status.d.ts.map +1 -0
  64. package/dist/api/branch-status.js +125 -0
  65. package/dist/api/branch-status.js.map +1 -0
  66. package/dist/api/branch-withdraw.d.ts +18 -0
  67. package/dist/api/branch-withdraw.d.ts.map +1 -0
  68. package/dist/api/branch-withdraw.js +64 -0
  69. package/dist/api/branch-withdraw.js.map +1 -0
  70. package/dist/api/branch.d.ts +188 -0
  71. package/dist/api/branch.d.ts.map +1 -0
  72. package/dist/api/branch.js +381 -0
  73. package/dist/api/branch.js.map +1 -0
  74. package/dist/api/client.d.ts +289 -0
  75. package/dist/api/client.d.ts.map +1 -0
  76. package/dist/api/client.js +412 -0
  77. package/dist/api/client.js.map +1 -0
  78. package/dist/api/comments.d.ts +84 -0
  79. package/dist/api/comments.d.ts.map +1 -0
  80. package/dist/api/comments.js +142 -0
  81. package/dist/api/comments.js.map +1 -0
  82. package/dist/api/content.d.ts +154 -0
  83. package/dist/api/content.d.ts.map +1 -0
  84. package/dist/api/content.js +308 -0
  85. package/dist/api/content.js.map +1 -0
  86. package/dist/api/entries.d.ts +155 -0
  87. package/dist/api/entries.d.ts.map +1 -0
  88. package/dist/api/entries.js +466 -0
  89. package/dist/api/entries.js.map +1 -0
  90. package/dist/api/github-sync.d.ts +22 -0
  91. package/dist/api/github-sync.d.ts.map +1 -0
  92. package/dist/api/github-sync.js +121 -0
  93. package/dist/api/github-sync.js.map +1 -0
  94. package/dist/api/groups.d.ts +91 -0
  95. package/dist/api/groups.d.ts.map +1 -0
  96. package/dist/api/groups.js +270 -0
  97. package/dist/api/groups.js.map +1 -0
  98. package/dist/api/guards.d.ts +58 -0
  99. package/dist/api/guards.d.ts.map +1 -0
  100. package/dist/api/guards.js +166 -0
  101. package/dist/api/guards.js.map +1 -0
  102. package/dist/api/index.d.ts +18 -0
  103. package/dist/api/index.d.ts.map +1 -0
  104. package/dist/api/index.js +8 -0
  105. package/dist/api/index.js.map +1 -0
  106. package/dist/api/permissions.d.ts +278 -0
  107. package/dist/api/permissions.d.ts.map +1 -0
  108. package/dist/api/permissions.js +257 -0
  109. package/dist/api/permissions.js.map +1 -0
  110. package/dist/api/reference-options.d.ts +27 -0
  111. package/dist/api/reference-options.d.ts.map +1 -0
  112. package/dist/api/reference-options.js +88 -0
  113. package/dist/api/reference-options.js.map +1 -0
  114. package/dist/api/resolve-references.d.ts +32 -0
  115. package/dist/api/resolve-references.d.ts.map +1 -0
  116. package/dist/api/resolve-references.js +77 -0
  117. package/dist/api/resolve-references.js.map +1 -0
  118. package/dist/api/route-builder.d.ts +120 -0
  119. package/dist/api/route-builder.d.ts.map +1 -0
  120. package/dist/api/route-builder.js +108 -0
  121. package/dist/api/route-builder.js.map +1 -0
  122. package/dist/api/schema.d.ts +713 -0
  123. package/dist/api/schema.d.ts.map +1 -0
  124. package/dist/api/schema.js +656 -0
  125. package/dist/api/schema.js.map +1 -0
  126. package/dist/api/settings-helpers.d.ts +33 -0
  127. package/dist/api/settings-helpers.d.ts.map +1 -0
  128. package/dist/api/settings-helpers.js +61 -0
  129. package/dist/api/settings-helpers.js.map +1 -0
  130. package/dist/api/types.d.ts +37 -0
  131. package/dist/api/types.d.ts.map +1 -0
  132. package/dist/api/types.js +2 -0
  133. package/dist/api/types.js.map +1 -0
  134. package/dist/api/user.d.ts +9 -0
  135. package/dist/api/user.d.ts.map +1 -0
  136. package/dist/api/user.js +34 -0
  137. package/dist/api/user.js.map +1 -0
  138. package/dist/api/validators.d.ts +85 -0
  139. package/dist/api/validators.d.ts.map +1 -0
  140. package/dist/api/validators.js +160 -0
  141. package/dist/api/validators.js.map +1 -0
  142. package/dist/asset-store.d.ts +32 -0
  143. package/dist/asset-store.d.ts.map +1 -0
  144. package/dist/asset-store.js +84 -0
  145. package/dist/asset-store.js.map +1 -0
  146. package/dist/auth/cache.d.ts +8 -0
  147. package/dist/auth/cache.d.ts.map +1 -0
  148. package/dist/auth/cache.js +8 -0
  149. package/dist/auth/cache.js.map +1 -0
  150. package/dist/auth/caching-auth-plugin.d.ts +42 -0
  151. package/dist/auth/caching-auth-plugin.d.ts.map +1 -0
  152. package/dist/auth/caching-auth-plugin.js +78 -0
  153. package/dist/auth/caching-auth-plugin.js.map +1 -0
  154. package/dist/auth/context-helpers.d.ts +31 -0
  155. package/dist/auth/context-helpers.d.ts.map +1 -0
  156. package/dist/auth/context-helpers.js +53 -0
  157. package/dist/auth/context-helpers.js.map +1 -0
  158. package/dist/auth/file-based-auth-cache.d.ts +46 -0
  159. package/dist/auth/file-based-auth-cache.d.ts.map +1 -0
  160. package/dist/auth/file-based-auth-cache.js +226 -0
  161. package/dist/auth/file-based-auth-cache.js.map +1 -0
  162. package/dist/auth/index.d.ts +6 -0
  163. package/dist/auth/index.d.ts.map +1 -0
  164. package/dist/auth/index.js +2 -0
  165. package/dist/auth/index.js.map +1 -0
  166. package/dist/auth/plugin.d.ts +48 -0
  167. package/dist/auth/plugin.d.ts.map +1 -0
  168. package/dist/auth/plugin.js +2 -0
  169. package/dist/auth/plugin.js.map +1 -0
  170. package/dist/auth/types.d.ts +36 -0
  171. package/dist/auth/types.d.ts.map +1 -0
  172. package/dist/auth/types.js +2 -0
  173. package/dist/auth/types.js.map +1 -0
  174. package/dist/authorization/branch.d.ts +29 -0
  175. package/dist/authorization/branch.d.ts.map +1 -0
  176. package/dist/authorization/branch.js +67 -0
  177. package/dist/authorization/branch.js.map +1 -0
  178. package/dist/authorization/content.d.ts +38 -0
  179. package/dist/authorization/content.d.ts.map +1 -0
  180. package/dist/authorization/content.js +65 -0
  181. package/dist/authorization/content.js.map +1 -0
  182. package/dist/authorization/groups/index.d.ts +6 -0
  183. package/dist/authorization/groups/index.d.ts.map +1 -0
  184. package/dist/authorization/groups/index.js +6 -0
  185. package/dist/authorization/groups/index.js.map +1 -0
  186. package/dist/authorization/groups/loader.d.ts +24 -0
  187. package/dist/authorization/groups/loader.d.ts.map +1 -0
  188. package/dist/authorization/groups/loader.js +98 -0
  189. package/dist/authorization/groups/loader.js.map +1 -0
  190. package/dist/authorization/groups/schema.d.ts +67 -0
  191. package/dist/authorization/groups/schema.d.ts.map +1 -0
  192. package/dist/authorization/groups/schema.js +31 -0
  193. package/dist/authorization/groups/schema.js.map +1 -0
  194. package/dist/authorization/helpers.d.ts +35 -0
  195. package/dist/authorization/helpers.d.ts.map +1 -0
  196. package/dist/authorization/helpers.js +42 -0
  197. package/dist/authorization/helpers.js.map +1 -0
  198. package/dist/authorization/index.d.ts +36 -0
  199. package/dist/authorization/index.d.ts.map +1 -0
  200. package/dist/authorization/index.js +42 -0
  201. package/dist/authorization/index.js.map +1 -0
  202. package/dist/authorization/path.d.ts +29 -0
  203. package/dist/authorization/path.d.ts.map +1 -0
  204. package/dist/authorization/path.js +71 -0
  205. package/dist/authorization/path.js.map +1 -0
  206. package/dist/authorization/permissions/index.d.ts +6 -0
  207. package/dist/authorization/permissions/index.d.ts.map +1 -0
  208. package/dist/authorization/permissions/index.js +6 -0
  209. package/dist/authorization/permissions/index.js.map +1 -0
  210. package/dist/authorization/permissions/loader.d.ts +33 -0
  211. package/dist/authorization/permissions/loader.d.ts.map +1 -0
  212. package/dist/authorization/permissions/loader.js +85 -0
  213. package/dist/authorization/permissions/loader.js.map +1 -0
  214. package/dist/authorization/permissions/schema.d.ts +133 -0
  215. package/dist/authorization/permissions/schema.d.ts.map +1 -0
  216. package/dist/authorization/permissions/schema.js +56 -0
  217. package/dist/authorization/permissions/schema.js.map +1 -0
  218. package/dist/authorization/test-utils.d.ts +14 -0
  219. package/dist/authorization/test-utils.d.ts.map +1 -0
  220. package/dist/authorization/test-utils.js +13 -0
  221. package/dist/authorization/test-utils.js.map +1 -0
  222. package/dist/authorization/types.d.ts +55 -0
  223. package/dist/authorization/types.d.ts.map +1 -0
  224. package/dist/authorization/types.js +8 -0
  225. package/dist/authorization/types.js.map +1 -0
  226. package/dist/authorization/validation.d.ts +32 -0
  227. package/dist/authorization/validation.d.ts.map +1 -0
  228. package/dist/authorization/validation.js +53 -0
  229. package/dist/authorization/validation.js.map +1 -0
  230. package/dist/branch-metadata.d.ts +52 -0
  231. package/dist/branch-metadata.d.ts.map +1 -0
  232. package/dist/branch-metadata.js +125 -0
  233. package/dist/branch-metadata.js.map +1 -0
  234. package/dist/branch-registry.d.ts +44 -0
  235. package/dist/branch-registry.d.ts.map +1 -0
  236. package/dist/branch-registry.js +129 -0
  237. package/dist/branch-registry.js.map +1 -0
  238. package/dist/branch-schema-cache.d.ts +60 -0
  239. package/dist/branch-schema-cache.d.ts.map +1 -0
  240. package/dist/branch-schema-cache.js +142 -0
  241. package/dist/branch-schema-cache.js.map +1 -0
  242. package/dist/branch-workspace.d.ts +25 -0
  243. package/dist/branch-workspace.d.ts.map +1 -0
  244. package/dist/branch-workspace.js +87 -0
  245. package/dist/branch-workspace.js.map +1 -0
  246. package/dist/build/generate-ai-content.d.ts +28 -0
  247. package/dist/build/generate-ai-content.d.ts.map +1 -0
  248. package/dist/build/generate-ai-content.js +56 -0
  249. package/dist/build/generate-ai-content.js.map +1 -0
  250. package/dist/build/index.d.ts +8 -0
  251. package/dist/build/index.d.ts.map +1 -0
  252. package/dist/build/index.js +7 -0
  253. package/dist/build/index.js.map +1 -0
  254. package/dist/build-mode.d.ts +12 -0
  255. package/dist/build-mode.d.ts.map +1 -0
  256. package/dist/build-mode.js +25 -0
  257. package/dist/build-mode.js.map +1 -0
  258. package/dist/cli/generate-ai-content.d.ts +13 -0
  259. package/dist/cli/generate-ai-content.d.ts.map +1 -0
  260. package/dist/cli/generate-ai-content.js +78 -0
  261. package/dist/cli/generate-ai-content.js.map +1 -0
  262. package/dist/cli/init.d.ts +34 -0
  263. package/dist/cli/init.d.ts.map +1 -0
  264. package/dist/cli/init.js +372 -0
  265. package/dist/cli/init.js.map +1 -0
  266. package/dist/cli/templates.d.ts +20 -0
  267. package/dist/cli/templates.d.ts.map +1 -0
  268. package/dist/cli/templates.js +38 -0
  269. package/dist/cli/templates.js.map +1 -0
  270. package/dist/client.d.ts +11 -0
  271. package/dist/client.d.ts.map +1 -0
  272. package/dist/client.js +11 -0
  273. package/dist/client.js.map +1 -0
  274. package/dist/comment-store.d.ts +94 -0
  275. package/dist/comment-store.d.ts.map +1 -0
  276. package/dist/comment-store.js +234 -0
  277. package/dist/comment-store.js.map +1 -0
  278. package/dist/config/flatten.d.ts +29 -0
  279. package/dist/config/flatten.d.ts.map +1 -0
  280. package/dist/config/flatten.js +153 -0
  281. package/dist/config/flatten.js.map +1 -0
  282. package/dist/config/helpers.d.ts +48 -0
  283. package/dist/config/helpers.d.ts.map +1 -0
  284. package/dist/config/helpers.js +138 -0
  285. package/dist/config/helpers.js.map +1 -0
  286. package/dist/config/index.d.ts +21 -0
  287. package/dist/config/index.d.ts.map +1 -0
  288. package/dist/config/index.js +23 -0
  289. package/dist/config/index.js.map +1 -0
  290. package/dist/config/schemas/collection.d.ts +94 -0
  291. package/dist/config/schemas/collection.d.ts.map +1 -0
  292. package/dist/config/schemas/collection.js +57 -0
  293. package/dist/config/schemas/collection.js.map +1 -0
  294. package/dist/config/schemas/config.d.ts +304 -0
  295. package/dist/config/schemas/config.d.ts.map +1 -0
  296. package/dist/config/schemas/config.js +70 -0
  297. package/dist/config/schemas/config.js.map +1 -0
  298. package/dist/config/schemas/field.d.ts +276 -0
  299. package/dist/config/schemas/field.d.ts.map +1 -0
  300. package/dist/config/schemas/field.js +90 -0
  301. package/dist/config/schemas/field.js.map +1 -0
  302. package/dist/config/schemas/media.d.ts +48 -0
  303. package/dist/config/schemas/media.d.ts.map +1 -0
  304. package/dist/config/schemas/media.js +26 -0
  305. package/dist/config/schemas/media.js.map +1 -0
  306. package/dist/config/schemas/permissions.d.ts +76 -0
  307. package/dist/config/schemas/permissions.d.ts.map +1 -0
  308. package/dist/config/schemas/permissions.js +17 -0
  309. package/dist/config/schemas/permissions.js.map +1 -0
  310. package/dist/config/types.d.ts +272 -0
  311. package/dist/config/types.d.ts.map +1 -0
  312. package/dist/config/types.js +24 -0
  313. package/dist/config/types.js.map +1 -0
  314. package/dist/config/validation.d.ts +19 -0
  315. package/dist/config/validation.d.ts.map +1 -0
  316. package/dist/config/validation.js +66 -0
  317. package/dist/config/validation.js.map +1 -0
  318. package/dist/config-test.d.ts +18 -0
  319. package/dist/config-test.d.ts.map +1 -0
  320. package/dist/config-test.js +42 -0
  321. package/dist/config-test.js.map +1 -0
  322. package/dist/config.d.ts +10 -0
  323. package/dist/config.d.ts.map +1 -0
  324. package/dist/config.js +11 -0
  325. package/dist/config.js.map +1 -0
  326. package/dist/content-id-index.d.ts +152 -0
  327. package/dist/content-id-index.d.ts.map +1 -0
  328. package/dist/content-id-index.js +416 -0
  329. package/dist/content-id-index.js.map +1 -0
  330. package/dist/content-reader.d.ts +36 -0
  331. package/dist/content-reader.d.ts.map +1 -0
  332. package/dist/content-reader.js +149 -0
  333. package/dist/content-reader.js.map +1 -0
  334. package/dist/content-store.d.ts +129 -0
  335. package/dist/content-store.d.ts.map +1 -0
  336. package/dist/content-store.js +611 -0
  337. package/dist/content-store.js.map +1 -0
  338. package/dist/context.d.ts +44 -0
  339. package/dist/context.d.ts.map +1 -0
  340. package/dist/context.js +69 -0
  341. package/dist/context.js.map +1 -0
  342. package/dist/editor/BranchManager.d.ts +62 -0
  343. package/dist/editor/BranchManager.d.ts.map +1 -0
  344. package/dist/editor/BranchManager.js +87 -0
  345. package/dist/editor/BranchManager.js.map +1 -0
  346. package/dist/editor/BranchManager.stories.d.ts +8 -0
  347. package/dist/editor/BranchManager.stories.d.ts.map +1 -0
  348. package/dist/editor/BranchManager.stories.js +74 -0
  349. package/dist/editor/BranchManager.stories.js.map +1 -0
  350. package/dist/editor/CanopyEditor.d.ts +10 -0
  351. package/dist/editor/CanopyEditor.d.ts.map +1 -0
  352. package/dist/editor/CanopyEditor.js +20 -0
  353. package/dist/editor/CanopyEditor.js.map +1 -0
  354. package/dist/editor/CanopyEditor.stories.d.ts +7 -0
  355. package/dist/editor/CanopyEditor.stories.d.ts.map +1 -0
  356. package/dist/editor/CanopyEditor.stories.js +99 -0
  357. package/dist/editor/CanopyEditor.stories.js.map +1 -0
  358. package/dist/editor/CanopyEditorPage.d.ts +12 -0
  359. package/dist/editor/CanopyEditorPage.d.ts.map +1 -0
  360. package/dist/editor/CanopyEditorPage.js +13 -0
  361. package/dist/editor/CanopyEditorPage.js.map +1 -0
  362. package/dist/editor/CommentsPanel.d.ts +21 -0
  363. package/dist/editor/CommentsPanel.d.ts.map +1 -0
  364. package/dist/editor/CommentsPanel.js +77 -0
  365. package/dist/editor/CommentsPanel.js.map +1 -0
  366. package/dist/editor/CommentsPanel.stories.d.ts +10 -0
  367. package/dist/editor/CommentsPanel.stories.d.ts.map +1 -0
  368. package/dist/editor/CommentsPanel.stories.js +175 -0
  369. package/dist/editor/CommentsPanel.stories.js.map +1 -0
  370. package/dist/editor/Editor.d.ts +72 -0
  371. package/dist/editor/Editor.d.ts.map +1 -0
  372. package/dist/editor/Editor.js +568 -0
  373. package/dist/editor/Editor.js.map +1 -0
  374. package/dist/editor/Editor.stories.d.ts +7 -0
  375. package/dist/editor/Editor.stories.d.ts.map +1 -0
  376. package/dist/editor/Editor.stories.js +95 -0
  377. package/dist/editor/Editor.stories.js.map +1 -0
  378. package/dist/editor/EditorPanes.d.ts +11 -0
  379. package/dist/editor/EditorPanes.d.ts.map +1 -0
  380. package/dist/editor/EditorPanes.js +99 -0
  381. package/dist/editor/EditorPanes.js.map +1 -0
  382. package/dist/editor/EditorPanes.stories.d.ts +7 -0
  383. package/dist/editor/EditorPanes.stories.d.ts.map +1 -0
  384. package/dist/editor/EditorPanes.stories.js +116 -0
  385. package/dist/editor/EditorPanes.stories.js.map +1 -0
  386. package/dist/editor/EntryNavigator.d.ts +48 -0
  387. package/dist/editor/EntryNavigator.d.ts.map +1 -0
  388. package/dist/editor/EntryNavigator.js +331 -0
  389. package/dist/editor/EntryNavigator.js.map +1 -0
  390. package/dist/editor/EntryNavigator.stories.d.ts +8 -0
  391. package/dist/editor/EntryNavigator.stories.d.ts.map +1 -0
  392. package/dist/editor/EntryNavigator.stories.js +42 -0
  393. package/dist/editor/EntryNavigator.stories.js.map +1 -0
  394. package/dist/editor/FormRenderer.d.ts +34 -0
  395. package/dist/editor/FormRenderer.d.ts.map +1 -0
  396. package/dist/editor/FormRenderer.js +127 -0
  397. package/dist/editor/FormRenderer.js.map +1 -0
  398. package/dist/editor/FormRenderer.stories.d.ts +7 -0
  399. package/dist/editor/FormRenderer.stories.d.ts.map +1 -0
  400. package/dist/editor/FormRenderer.stories.js +115 -0
  401. package/dist/editor/FormRenderer.stories.js.map +1 -0
  402. package/dist/editor/GroupManager.d.ts +7 -0
  403. package/dist/editor/GroupManager.d.ts.map +1 -0
  404. package/dist/editor/GroupManager.js +7 -0
  405. package/dist/editor/GroupManager.js.map +1 -0
  406. package/dist/editor/GroupManager.stories.d.ts +19 -0
  407. package/dist/editor/GroupManager.stories.d.ts.map +1 -0
  408. package/dist/editor/GroupManager.stories.js +265 -0
  409. package/dist/editor/GroupManager.stories.js.map +1 -0
  410. package/dist/editor/PermissionManager.d.ts +9 -0
  411. package/dist/editor/PermissionManager.d.ts.map +1 -0
  412. package/dist/editor/PermissionManager.js +9 -0
  413. package/dist/editor/PermissionManager.js.map +1 -0
  414. package/dist/editor/PermissionManager.stories.d.ts +20 -0
  415. package/dist/editor/PermissionManager.stories.d.ts.map +1 -0
  416. package/dist/editor/PermissionManager.stories.js +506 -0
  417. package/dist/editor/PermissionManager.stories.js.map +1 -0
  418. package/dist/editor/canopy-path.d.ts +17 -0
  419. package/dist/editor/canopy-path.d.ts.map +1 -0
  420. package/dist/editor/canopy-path.js +49 -0
  421. package/dist/editor/canopy-path.js.map +1 -0
  422. package/dist/editor/client-reference-resolver.d.ts +18 -0
  423. package/dist/editor/client-reference-resolver.d.ts.map +1 -0
  424. package/dist/editor/client-reference-resolver.js +87 -0
  425. package/dist/editor/client-reference-resolver.js.map +1 -0
  426. package/dist/editor/comments/BranchComments.d.ts +27 -0
  427. package/dist/editor/comments/BranchComments.d.ts.map +1 -0
  428. package/dist/editor/comments/BranchComments.js +26 -0
  429. package/dist/editor/comments/BranchComments.js.map +1 -0
  430. package/dist/editor/comments/EntryComments.d.ts +26 -0
  431. package/dist/editor/comments/EntryComments.d.ts.map +1 -0
  432. package/dist/editor/comments/EntryComments.js +26 -0
  433. package/dist/editor/comments/EntryComments.js.map +1 -0
  434. package/dist/editor/comments/FieldWrapper.d.ts +32 -0
  435. package/dist/editor/comments/FieldWrapper.d.ts.map +1 -0
  436. package/dist/editor/comments/FieldWrapper.js +41 -0
  437. package/dist/editor/comments/FieldWrapper.js.map +1 -0
  438. package/dist/editor/comments/FieldWrapper.stories.d.ts +10 -0
  439. package/dist/editor/comments/FieldWrapper.stories.d.ts.map +1 -0
  440. package/dist/editor/comments/FieldWrapper.stories.js +173 -0
  441. package/dist/editor/comments/FieldWrapper.stories.js.map +1 -0
  442. package/dist/editor/comments/InlineCommentThread.d.ts +23 -0
  443. package/dist/editor/comments/InlineCommentThread.d.ts.map +1 -0
  444. package/dist/editor/comments/InlineCommentThread.js +82 -0
  445. package/dist/editor/comments/InlineCommentThread.js.map +1 -0
  446. package/dist/editor/comments/ThreadCarousel.d.ts +110 -0
  447. package/dist/editor/comments/ThreadCarousel.d.ts.map +1 -0
  448. package/dist/editor/comments/ThreadCarousel.js +223 -0
  449. package/dist/editor/comments/ThreadCarousel.js.map +1 -0
  450. package/dist/editor/components/ConfirmDeleteModal.d.ts +15 -0
  451. package/dist/editor/components/ConfirmDeleteModal.d.ts.map +1 -0
  452. package/dist/editor/components/ConfirmDeleteModal.js +11 -0
  453. package/dist/editor/components/ConfirmDeleteModal.js.map +1 -0
  454. package/dist/editor/components/EditorContext.d.ts +35 -0
  455. package/dist/editor/components/EditorContext.d.ts.map +1 -0
  456. package/dist/editor/components/EditorContext.js +19 -0
  457. package/dist/editor/components/EditorContext.js.map +1 -0
  458. package/dist/editor/components/EditorFooter.d.ts +20 -0
  459. package/dist/editor/components/EditorFooter.d.ts.map +1 -0
  460. package/dist/editor/components/EditorFooter.js +15 -0
  461. package/dist/editor/components/EditorFooter.js.map +1 -0
  462. package/dist/editor/components/EditorHeader.d.ts +166 -0
  463. package/dist/editor/components/EditorHeader.d.ts.map +1 -0
  464. package/dist/editor/components/EditorHeader.js +99 -0
  465. package/dist/editor/components/EditorHeader.js.map +1 -0
  466. package/dist/editor/components/EditorSidebar.d.ts +76 -0
  467. package/dist/editor/components/EditorSidebar.d.ts.map +1 -0
  468. package/dist/editor/components/EditorSidebar.js +40 -0
  469. package/dist/editor/components/EditorSidebar.js.map +1 -0
  470. package/dist/editor/components/EntryCreateModal.d.ts +27 -0
  471. package/dist/editor/components/EntryCreateModal.d.ts.map +1 -0
  472. package/dist/editor/components/EntryCreateModal.js +78 -0
  473. package/dist/editor/components/EntryCreateModal.js.map +1 -0
  474. package/dist/editor/components/RenameEntryModal.d.ts +18 -0
  475. package/dist/editor/components/RenameEntryModal.d.ts.map +1 -0
  476. package/dist/editor/components/RenameEntryModal.js +62 -0
  477. package/dist/editor/components/RenameEntryModal.js.map +1 -0
  478. package/dist/editor/components/UserBadge.d.ts +28 -0
  479. package/dist/editor/components/UserBadge.d.ts.map +1 -0
  480. package/dist/editor/components/UserBadge.js +93 -0
  481. package/dist/editor/components/UserBadge.js.map +1 -0
  482. package/dist/editor/components/index.d.ts +4 -0
  483. package/dist/editor/components/index.d.ts.map +1 -0
  484. package/dist/editor/components/index.js +6 -0
  485. package/dist/editor/components/index.js.map +1 -0
  486. package/dist/editor/context/ApiClientContext.d.ts +33 -0
  487. package/dist/editor/context/ApiClientContext.d.ts.map +1 -0
  488. package/dist/editor/context/ApiClientContext.js +43 -0
  489. package/dist/editor/context/ApiClientContext.js.map +1 -0
  490. package/dist/editor/context/EditorStateContext.d.ts +93 -0
  491. package/dist/editor/context/EditorStateContext.d.ts.map +1 -0
  492. package/dist/editor/context/EditorStateContext.js +143 -0
  493. package/dist/editor/context/EditorStateContext.js.map +1 -0
  494. package/dist/editor/context/index.d.ts +20 -0
  495. package/dist/editor/context/index.d.ts.map +1 -0
  496. package/dist/editor/context/index.js +20 -0
  497. package/dist/editor/context/index.js.map +1 -0
  498. package/dist/editor/editor-config.d.ts +14 -0
  499. package/dist/editor/editor-config.d.ts.map +1 -0
  500. package/dist/editor/editor-config.js +79 -0
  501. package/dist/editor/editor-config.js.map +1 -0
  502. package/dist/editor/editor-utils.d.ts +92 -0
  503. package/dist/editor/editor-utils.d.ts.map +1 -0
  504. package/dist/editor/editor-utils.js +238 -0
  505. package/dist/editor/editor-utils.js.map +1 -0
  506. package/dist/editor/env.d.ts +5 -0
  507. package/dist/editor/env.d.ts.map +1 -0
  508. package/dist/editor/env.js +5 -0
  509. package/dist/editor/env.js.map +1 -0
  510. package/dist/editor/fields/BlockField.d.ts +19 -0
  511. package/dist/editor/fields/BlockField.d.ts.map +1 -0
  512. package/dist/editor/fields/BlockField.js +86 -0
  513. package/dist/editor/fields/BlockField.js.map +1 -0
  514. package/dist/editor/fields/BlockField.stories.d.ts +7 -0
  515. package/dist/editor/fields/BlockField.stories.d.ts.map +1 -0
  516. package/dist/editor/fields/BlockField.stories.js +50 -0
  517. package/dist/editor/fields/BlockField.stories.js.map +1 -0
  518. package/dist/editor/fields/CodeField.d.ts +12 -0
  519. package/dist/editor/fields/CodeField.d.ts.map +1 -0
  520. package/dist/editor/fields/CodeField.js +11 -0
  521. package/dist/editor/fields/CodeField.js.map +1 -0
  522. package/dist/editor/fields/MarkdownField.d.ts +11 -0
  523. package/dist/editor/fields/MarkdownField.d.ts.map +1 -0
  524. package/dist/editor/fields/MarkdownField.js +94 -0
  525. package/dist/editor/fields/MarkdownField.js.map +1 -0
  526. package/dist/editor/fields/ObjectField.d.ts +15 -0
  527. package/dist/editor/fields/ObjectField.d.ts.map +1 -0
  528. package/dist/editor/fields/ObjectField.js +12 -0
  529. package/dist/editor/fields/ObjectField.js.map +1 -0
  530. package/dist/editor/fields/ReferenceField.d.ts +20 -0
  531. package/dist/editor/fields/ReferenceField.d.ts.map +1 -0
  532. package/dist/editor/fields/ReferenceField.js +66 -0
  533. package/dist/editor/fields/ReferenceField.js.map +1 -0
  534. package/dist/editor/fields/SelectField.d.ts +18 -0
  535. package/dist/editor/fields/SelectField.d.ts.map +1 -0
  536. package/dist/editor/fields/SelectField.js +17 -0
  537. package/dist/editor/fields/SelectField.js.map +1 -0
  538. package/dist/editor/fields/TextField.d.ts +11 -0
  539. package/dist/editor/fields/TextField.d.ts.map +1 -0
  540. package/dist/editor/fields/TextField.js +10 -0
  541. package/dist/editor/fields/TextField.js.map +1 -0
  542. package/dist/editor/fields/ToggleField.d.ts +12 -0
  543. package/dist/editor/fields/ToggleField.d.ts.map +1 -0
  544. package/dist/editor/fields/ToggleField.js +10 -0
  545. package/dist/editor/fields/ToggleField.js.map +1 -0
  546. package/dist/editor/fields/fields.stories.d.ts +8 -0
  547. package/dist/editor/fields/fields.stories.d.ts.map +1 -0
  548. package/dist/editor/fields/fields.stories.js +34 -0
  549. package/dist/editor/fields/fields.stories.js.map +1 -0
  550. package/dist/editor/group-manager/ExternalGroupsTab.d.ts +16 -0
  551. package/dist/editor/group-manager/ExternalGroupsTab.d.ts.map +1 -0
  552. package/dist/editor/group-manager/ExternalGroupsTab.js +16 -0
  553. package/dist/editor/group-manager/ExternalGroupsTab.js.map +1 -0
  554. package/dist/editor/group-manager/GroupCard.d.ts +24 -0
  555. package/dist/editor/group-manager/GroupCard.d.ts.map +1 -0
  556. package/dist/editor/group-manager/GroupCard.js +9 -0
  557. package/dist/editor/group-manager/GroupCard.js.map +1 -0
  558. package/dist/editor/group-manager/GroupForm.d.ts +15 -0
  559. package/dist/editor/group-manager/GroupForm.d.ts.map +1 -0
  560. package/dist/editor/group-manager/GroupForm.js +7 -0
  561. package/dist/editor/group-manager/GroupForm.js.map +1 -0
  562. package/dist/editor/group-manager/InternalGroupsTab.d.ts +26 -0
  563. package/dist/editor/group-manager/InternalGroupsTab.d.ts.map +1 -0
  564. package/dist/editor/group-manager/InternalGroupsTab.js +18 -0
  565. package/dist/editor/group-manager/InternalGroupsTab.js.map +1 -0
  566. package/dist/editor/group-manager/MemberList.d.ts +23 -0
  567. package/dist/editor/group-manager/MemberList.d.ts.map +1 -0
  568. package/dist/editor/group-manager/MemberList.js +13 -0
  569. package/dist/editor/group-manager/MemberList.js.map +1 -0
  570. package/dist/editor/group-manager/hooks/useExternalGroupSearch.d.ts +16 -0
  571. package/dist/editor/group-manager/hooks/useExternalGroupSearch.d.ts.map +1 -0
  572. package/dist/editor/group-manager/hooks/useExternalGroupSearch.js +43 -0
  573. package/dist/editor/group-manager/hooks/useExternalGroupSearch.js.map +1 -0
  574. package/dist/editor/group-manager/hooks/useGroupState.d.ts +24 -0
  575. package/dist/editor/group-manager/hooks/useGroupState.d.ts.map +1 -0
  576. package/dist/editor/group-manager/hooks/useGroupState.js +97 -0
  577. package/dist/editor/group-manager/hooks/useGroupState.js.map +1 -0
  578. package/dist/editor/group-manager/hooks/useUserSearch.d.ts +20 -0
  579. package/dist/editor/group-manager/hooks/useUserSearch.d.ts.map +1 -0
  580. package/dist/editor/group-manager/hooks/useUserSearch.js +60 -0
  581. package/dist/editor/group-manager/hooks/useUserSearch.js.map +1 -0
  582. package/dist/editor/group-manager/index.d.ts +14 -0
  583. package/dist/editor/group-manager/index.d.ts.map +1 -0
  584. package/dist/editor/group-manager/index.js +71 -0
  585. package/dist/editor/group-manager/index.js.map +1 -0
  586. package/dist/editor/group-manager/types.d.ts +24 -0
  587. package/dist/editor/group-manager/types.d.ts.map +1 -0
  588. package/dist/editor/group-manager/types.js +5 -0
  589. package/dist/editor/group-manager/types.js.map +1 -0
  590. package/dist/editor/hooks/__test__/test-utils.d.ts +129 -0
  591. package/dist/editor/hooks/__test__/test-utils.d.ts.map +1 -0
  592. package/dist/editor/hooks/__test__/test-utils.js +157 -0
  593. package/dist/editor/hooks/__test__/test-utils.js.map +1 -0
  594. package/dist/editor/hooks/index.d.ts +12 -0
  595. package/dist/editor/hooks/index.d.ts.map +1 -0
  596. package/dist/editor/hooks/index.js +15 -0
  597. package/dist/editor/hooks/index.js.map +1 -0
  598. package/dist/editor/hooks/useBranchActions.d.ts +34 -0
  599. package/dist/editor/hooks/useBranchActions.d.ts.map +1 -0
  600. package/dist/editor/hooks/useBranchActions.js +95 -0
  601. package/dist/editor/hooks/useBranchActions.js.map +1 -0
  602. package/dist/editor/hooks/useBranchManager.d.ts +88 -0
  603. package/dist/editor/hooks/useBranchManager.d.ts.map +1 -0
  604. package/dist/editor/hooks/useBranchManager.js +245 -0
  605. package/dist/editor/hooks/useBranchManager.js.map +1 -0
  606. package/dist/editor/hooks/useCommentSystem.d.ts +93 -0
  607. package/dist/editor/hooks/useCommentSystem.d.ts.map +1 -0
  608. package/dist/editor/hooks/useCommentSystem.js +240 -0
  609. package/dist/editor/hooks/useCommentSystem.js.map +1 -0
  610. package/dist/editor/hooks/useDraftManager.d.ts +64 -0
  611. package/dist/editor/hooks/useDraftManager.d.ts.map +1 -0
  612. package/dist/editor/hooks/useDraftManager.js +228 -0
  613. package/dist/editor/hooks/useDraftManager.js.map +1 -0
  614. package/dist/editor/hooks/useEditorLayout.d.ts +34 -0
  615. package/dist/editor/hooks/useEditorLayout.d.ts.map +1 -0
  616. package/dist/editor/hooks/useEditorLayout.js +52 -0
  617. package/dist/editor/hooks/useEditorLayout.js.map +1 -0
  618. package/dist/editor/hooks/useEntryManager.d.ts +66 -0
  619. package/dist/editor/hooks/useEntryManager.d.ts.map +1 -0
  620. package/dist/editor/hooks/useEntryManager.js +305 -0
  621. package/dist/editor/hooks/useEntryManager.js.map +1 -0
  622. package/dist/editor/hooks/useGroupManager.d.ts +43 -0
  623. package/dist/editor/hooks/useGroupManager.d.ts.map +1 -0
  624. package/dist/editor/hooks/useGroupManager.js +122 -0
  625. package/dist/editor/hooks/useGroupManager.js.map +1 -0
  626. package/dist/editor/hooks/usePermissionManager.d.ts +40 -0
  627. package/dist/editor/hooks/usePermissionManager.d.ts.map +1 -0
  628. package/dist/editor/hooks/usePermissionManager.js +94 -0
  629. package/dist/editor/hooks/usePermissionManager.js.map +1 -0
  630. package/dist/editor/hooks/useReferenceResolution.d.ts +47 -0
  631. package/dist/editor/hooks/useReferenceResolution.d.ts.map +1 -0
  632. package/dist/editor/hooks/useReferenceResolution.js +207 -0
  633. package/dist/editor/hooks/useReferenceResolution.js.map +1 -0
  634. package/dist/editor/hooks/useSchemaManager.d.ts +46 -0
  635. package/dist/editor/hooks/useSchemaManager.d.ts.map +1 -0
  636. package/dist/editor/hooks/useSchemaManager.js +235 -0
  637. package/dist/editor/hooks/useSchemaManager.js.map +1 -0
  638. package/dist/editor/hooks/useUserContext.d.ts +22 -0
  639. package/dist/editor/hooks/useUserContext.d.ts.map +1 -0
  640. package/dist/editor/hooks/useUserContext.js +49 -0
  641. package/dist/editor/hooks/useUserContext.js.map +1 -0
  642. package/dist/editor/hooks/useUserMetadata.d.ts +16 -0
  643. package/dist/editor/hooks/useUserMetadata.d.ts.map +1 -0
  644. package/dist/editor/hooks/useUserMetadata.js +55 -0
  645. package/dist/editor/hooks/useUserMetadata.js.map +1 -0
  646. package/dist/editor/permission-manager/GroupSelector.d.ts +13 -0
  647. package/dist/editor/permission-manager/GroupSelector.d.ts.map +1 -0
  648. package/dist/editor/permission-manager/GroupSelector.js +22 -0
  649. package/dist/editor/permission-manager/GroupSelector.js.map +1 -0
  650. package/dist/editor/permission-manager/PermissionEditor.d.ts +34 -0
  651. package/dist/editor/permission-manager/PermissionEditor.d.ts.map +1 -0
  652. package/dist/editor/permission-manager/PermissionEditor.js +30 -0
  653. package/dist/editor/permission-manager/PermissionEditor.js.map +1 -0
  654. package/dist/editor/permission-manager/PermissionLevelBadge.d.ts +16 -0
  655. package/dist/editor/permission-manager/PermissionLevelBadge.d.ts.map +1 -0
  656. package/dist/editor/permission-manager/PermissionLevelBadge.js +22 -0
  657. package/dist/editor/permission-manager/PermissionLevelBadge.js.map +1 -0
  658. package/dist/editor/permission-manager/PermissionTree.d.ts +37 -0
  659. package/dist/editor/permission-manager/PermissionTree.d.ts.map +1 -0
  660. package/dist/editor/permission-manager/PermissionTree.js +45 -0
  661. package/dist/editor/permission-manager/PermissionTree.js.map +1 -0
  662. package/dist/editor/permission-manager/UserSelector.d.ts +16 -0
  663. package/dist/editor/permission-manager/UserSelector.d.ts.map +1 -0
  664. package/dist/editor/permission-manager/UserSelector.js +14 -0
  665. package/dist/editor/permission-manager/UserSelector.js.map +1 -0
  666. package/dist/editor/permission-manager/constants.d.ts +12 -0
  667. package/dist/editor/permission-manager/constants.d.ts.map +1 -0
  668. package/dist/editor/permission-manager/constants.js +9 -0
  669. package/dist/editor/permission-manager/constants.js.map +1 -0
  670. package/dist/editor/permission-manager/hooks/useGroupsAndUsers.d.ts +30 -0
  671. package/dist/editor/permission-manager/hooks/useGroupsAndUsers.d.ts.map +1 -0
  672. package/dist/editor/permission-manager/hooks/useGroupsAndUsers.js +102 -0
  673. package/dist/editor/permission-manager/hooks/useGroupsAndUsers.js.map +1 -0
  674. package/dist/editor/permission-manager/hooks/usePermissionTree.d.ts +41 -0
  675. package/dist/editor/permission-manager/hooks/usePermissionTree.d.ts.map +1 -0
  676. package/dist/editor/permission-manager/hooks/usePermissionTree.js +125 -0
  677. package/dist/editor/permission-manager/hooks/usePermissionTree.js.map +1 -0
  678. package/dist/editor/permission-manager/index.d.ts +14 -0
  679. package/dist/editor/permission-manager/index.d.ts.map +1 -0
  680. package/dist/editor/permission-manager/index.js +125 -0
  681. package/dist/editor/permission-manager/index.js.map +1 -0
  682. package/dist/editor/permission-manager/types.d.ts +53 -0
  683. package/dist/editor/permission-manager/types.d.ts.map +1 -0
  684. package/dist/editor/permission-manager/types.js +5 -0
  685. package/dist/editor/permission-manager/types.js.map +1 -0
  686. package/dist/editor/permission-manager/utils.d.ts +60 -0
  687. package/dist/editor/permission-manager/utils.d.ts.map +1 -0
  688. package/dist/editor/permission-manager/utils.js +152 -0
  689. package/dist/editor/permission-manager/utils.js.map +1 -0
  690. package/dist/editor/preview-bridge.d.ts +64 -0
  691. package/dist/editor/preview-bridge.d.ts.map +1 -0
  692. package/dist/editor/preview-bridge.js +225 -0
  693. package/dist/editor/preview-bridge.js.map +1 -0
  694. package/dist/editor/schema-editor/CollectionEditor.d.ts +53 -0
  695. package/dist/editor/schema-editor/CollectionEditor.d.ts.map +1 -0
  696. package/dist/editor/schema-editor/CollectionEditor.js +220 -0
  697. package/dist/editor/schema-editor/CollectionEditor.js.map +1 -0
  698. package/dist/editor/schema-editor/EntryTypeEditor.d.ts +39 -0
  699. package/dist/editor/schema-editor/EntryTypeEditor.d.ts.map +1 -0
  700. package/dist/editor/schema-editor/EntryTypeEditor.js +161 -0
  701. package/dist/editor/schema-editor/EntryTypeEditor.js.map +1 -0
  702. package/dist/editor/schema-editor/index.d.ts +10 -0
  703. package/dist/editor/schema-editor/index.d.ts.map +1 -0
  704. package/dist/editor/schema-editor/index.js +10 -0
  705. package/dist/editor/schema-editor/index.js.map +1 -0
  706. package/dist/editor/setup-test-dom.d.ts +1 -0
  707. package/dist/editor/setup-test-dom.d.ts.map +1 -0
  708. package/dist/editor/setup-test-dom.js +12 -0
  709. package/dist/editor/setup-test-dom.js.map +1 -0
  710. package/dist/editor/test-setup.d.ts +6 -0
  711. package/dist/editor/test-setup.d.ts.map +1 -0
  712. package/dist/editor/test-setup.js +34 -0
  713. package/dist/editor/test-setup.js.map +1 -0
  714. package/dist/editor/theme.d.ts +165 -0
  715. package/dist/editor/theme.d.ts.map +1 -0
  716. package/dist/editor/theme.js +66 -0
  717. package/dist/editor/theme.js.map +1 -0
  718. package/dist/editor/utils/env.d.ts +23 -0
  719. package/dist/editor/utils/env.d.ts.map +1 -0
  720. package/dist/editor/utils/env.js +38 -0
  721. package/dist/editor/utils/env.js.map +1 -0
  722. package/dist/entry-schema-registry.d.ts +44 -0
  723. package/dist/entry-schema-registry.d.ts.map +1 -0
  724. package/dist/entry-schema-registry.js +101 -0
  725. package/dist/entry-schema-registry.js.map +1 -0
  726. package/dist/entry-schema.d.ts +74 -0
  727. package/dist/entry-schema.d.ts.map +1 -0
  728. package/dist/entry-schema.js +5 -0
  729. package/dist/entry-schema.js.map +1 -0
  730. package/dist/git-manager.d.ts +144 -0
  731. package/dist/git-manager.d.ts.map +1 -0
  732. package/dist/git-manager.js +563 -0
  733. package/dist/git-manager.js.map +1 -0
  734. package/dist/github-service.d.ts +93 -0
  735. package/dist/github-service.d.ts.map +1 -0
  736. package/dist/github-service.js +228 -0
  737. package/dist/github-service.js.map +1 -0
  738. package/dist/http/handler.d.ts +57 -0
  739. package/dist/http/handler.d.ts.map +1 -0
  740. package/dist/http/handler.js +197 -0
  741. package/dist/http/handler.js.map +1 -0
  742. package/dist/http/index.d.ts +7 -0
  743. package/dist/http/index.d.ts.map +1 -0
  744. package/dist/http/index.js +4 -0
  745. package/dist/http/index.js.map +1 -0
  746. package/dist/http/router.d.ts +49 -0
  747. package/dist/http/router.d.ts.map +1 -0
  748. package/dist/http/router.js +100 -0
  749. package/dist/http/router.js.map +1 -0
  750. package/dist/http/types.d.ts +34 -0
  751. package/dist/http/types.d.ts.map +1 -0
  752. package/dist/http/types.js +7 -0
  753. package/dist/http/types.js.map +1 -0
  754. package/dist/id.d.ts +17 -0
  755. package/dist/id.d.ts.map +1 -0
  756. package/dist/id.js +20 -0
  757. package/dist/id.js.map +1 -0
  758. package/dist/index.d.ts +11 -0
  759. package/dist/index.d.ts.map +1 -0
  760. package/dist/index.js +9 -0
  761. package/dist/index.js.map +1 -0
  762. package/dist/operating-mode/client-safe-strategy.d.ts +57 -0
  763. package/dist/operating-mode/client-safe-strategy.d.ts.map +1 -0
  764. package/dist/operating-mode/client-safe-strategy.js +154 -0
  765. package/dist/operating-mode/client-safe-strategy.js.map +1 -0
  766. package/dist/operating-mode/client-unsafe-strategy.d.ts +26 -0
  767. package/dist/operating-mode/client-unsafe-strategy.d.ts.map +1 -0
  768. package/dist/operating-mode/client-unsafe-strategy.js +234 -0
  769. package/dist/operating-mode/client-unsafe-strategy.js.map +1 -0
  770. package/dist/operating-mode/client.d.ts +13 -0
  771. package/dist/operating-mode/client.d.ts.map +1 -0
  772. package/dist/operating-mode/client.js +11 -0
  773. package/dist/operating-mode/client.js.map +1 -0
  774. package/dist/operating-mode/index.d.ts +28 -0
  775. package/dist/operating-mode/index.d.ts.map +1 -0
  776. package/dist/operating-mode/index.js +28 -0
  777. package/dist/operating-mode/index.js.map +1 -0
  778. package/dist/operating-mode/types.d.ts +130 -0
  779. package/dist/operating-mode/types.d.ts.map +1 -0
  780. package/dist/operating-mode/types.js +9 -0
  781. package/dist/operating-mode/types.js.map +1 -0
  782. package/dist/paths/branch.d.ts +45 -0
  783. package/dist/paths/branch.d.ts.map +1 -0
  784. package/dist/paths/branch.js +84 -0
  785. package/dist/paths/branch.js.map +1 -0
  786. package/dist/paths/index.d.ts +22 -0
  787. package/dist/paths/index.d.ts.map +1 -0
  788. package/dist/paths/index.js +30 -0
  789. package/dist/paths/index.js.map +1 -0
  790. package/dist/paths/normalize-server.d.ts +20 -0
  791. package/dist/paths/normalize-server.d.ts.map +1 -0
  792. package/dist/paths/normalize-server.js +35 -0
  793. package/dist/paths/normalize-server.js.map +1 -0
  794. package/dist/paths/normalize.d.ts +59 -0
  795. package/dist/paths/normalize.d.ts.map +1 -0
  796. package/dist/paths/normalize.js +96 -0
  797. package/dist/paths/normalize.js.map +1 -0
  798. package/dist/paths/resolve.d.ts +30 -0
  799. package/dist/paths/resolve.d.ts.map +1 -0
  800. package/dist/paths/resolve.js +51 -0
  801. package/dist/paths/resolve.js.map +1 -0
  802. package/dist/paths/test-utils.d.ts +24 -0
  803. package/dist/paths/test-utils.d.ts.map +1 -0
  804. package/dist/paths/test-utils.js +23 -0
  805. package/dist/paths/test-utils.js.map +1 -0
  806. package/dist/paths/types.d.ts +72 -0
  807. package/dist/paths/types.d.ts.map +1 -0
  808. package/dist/paths/types.js +13 -0
  809. package/dist/paths/types.js.map +1 -0
  810. package/dist/paths/validation.d.ts +181 -0
  811. package/dist/paths/validation.d.ts.map +1 -0
  812. package/dist/paths/validation.js +322 -0
  813. package/dist/paths/validation.js.map +1 -0
  814. package/dist/reference-resolver.d.ts +58 -0
  815. package/dist/reference-resolver.d.ts.map +1 -0
  816. package/dist/reference-resolver.js +118 -0
  817. package/dist/reference-resolver.js.map +1 -0
  818. package/dist/schema/index.d.ts +18 -0
  819. package/dist/schema/index.d.ts.map +1 -0
  820. package/dist/schema/index.js +19 -0
  821. package/dist/schema/index.js.map +1 -0
  822. package/dist/schema/meta-loader.d.ts +73 -0
  823. package/dist/schema/meta-loader.d.ts.map +1 -0
  824. package/dist/schema/meta-loader.js +273 -0
  825. package/dist/schema/meta-loader.js.map +1 -0
  826. package/dist/schema/resolver.d.ts +42 -0
  827. package/dist/schema/resolver.d.ts.map +1 -0
  828. package/dist/schema/resolver.js +70 -0
  829. package/dist/schema/resolver.js.map +1 -0
  830. package/dist/schema/schema-store-types.d.ts +48 -0
  831. package/dist/schema/schema-store-types.d.ts.map +1 -0
  832. package/dist/schema/schema-store-types.js +8 -0
  833. package/dist/schema/schema-store-types.js.map +1 -0
  834. package/dist/schema/schema-store.d.ts +249 -0
  835. package/dist/schema/schema-store.d.ts.map +1 -0
  836. package/dist/schema/schema-store.js +624 -0
  837. package/dist/schema/schema-store.js.map +1 -0
  838. package/dist/schema/types.d.ts +30 -0
  839. package/dist/schema/types.d.ts.map +1 -0
  840. package/dist/schema/types.js +5 -0
  841. package/dist/schema/types.js.map +1 -0
  842. package/dist/server.d.ts +11 -0
  843. package/dist/server.d.ts.map +1 -0
  844. package/dist/server.js +10 -0
  845. package/dist/server.js.map +1 -0
  846. package/dist/services.d.ts +94 -0
  847. package/dist/services.d.ts.map +1 -0
  848. package/dist/services.js +251 -0
  849. package/dist/services.js.map +1 -0
  850. package/dist/settings-branch-utils.d.ts +21 -0
  851. package/dist/settings-branch-utils.d.ts.map +1 -0
  852. package/dist/settings-branch-utils.js +33 -0
  853. package/dist/settings-branch-utils.js.map +1 -0
  854. package/dist/settings-workspace.d.ts +30 -0
  855. package/dist/settings-workspace.d.ts.map +1 -0
  856. package/dist/settings-workspace.js +137 -0
  857. package/dist/settings-workspace.js.map +1 -0
  858. package/dist/task-queue/index.d.ts +3 -0
  859. package/dist/task-queue/index.d.ts.map +1 -0
  860. package/dist/task-queue/index.js +2 -0
  861. package/dist/task-queue/index.js.map +1 -0
  862. package/dist/task-queue/task-queue.d.ts +81 -0
  863. package/dist/task-queue/task-queue.d.ts.map +1 -0
  864. package/dist/task-queue/task-queue.js +434 -0
  865. package/dist/task-queue/task-queue.js.map +1 -0
  866. package/dist/task-queue/types.d.ts +39 -0
  867. package/dist/task-queue/types.d.ts.map +1 -0
  868. package/dist/task-queue/types.js +2 -0
  869. package/dist/task-queue/types.js.map +1 -0
  870. package/dist/test-utils/api-test-helpers.d.ts +238 -0
  871. package/dist/test-utils/api-test-helpers.d.ts.map +1 -0
  872. package/dist/test-utils/api-test-helpers.js +347 -0
  873. package/dist/test-utils/api-test-helpers.js.map +1 -0
  874. package/dist/test-utils/console-spy.d.ts +56 -0
  875. package/dist/test-utils/console-spy.d.ts.map +1 -0
  876. package/dist/test-utils/console-spy.js +81 -0
  877. package/dist/test-utils/console-spy.js.map +1 -0
  878. package/dist/test-utils/git-helpers.d.ts +21 -0
  879. package/dist/test-utils/git-helpers.d.ts.map +1 -0
  880. package/dist/test-utils/git-helpers.js +23 -0
  881. package/dist/test-utils/git-helpers.js.map +1 -0
  882. package/dist/test-utils/index.d.ts +5 -0
  883. package/dist/test-utils/index.d.ts.map +1 -0
  884. package/dist/test-utils/index.js +4 -0
  885. package/dist/test-utils/index.js.map +1 -0
  886. package/dist/types.d.ts +46 -0
  887. package/dist/types.d.ts.map +1 -0
  888. package/dist/types.js +2 -0
  889. package/dist/types.js.map +1 -0
  890. package/dist/user.d.ts +62 -0
  891. package/dist/user.d.ts.map +1 -0
  892. package/dist/user.js +69 -0
  893. package/dist/user.js.map +1 -0
  894. package/dist/utils/debug.d.ts +44 -0
  895. package/dist/utils/debug.d.ts.map +1 -0
  896. package/dist/utils/debug.js +99 -0
  897. package/dist/utils/debug.js.map +1 -0
  898. package/dist/utils/error.d.ts +63 -0
  899. package/dist/utils/error.d.ts.map +1 -0
  900. package/dist/utils/error.js +79 -0
  901. package/dist/utils/error.js.map +1 -0
  902. package/dist/utils/format.d.ts +8 -0
  903. package/dist/utils/format.d.ts.map +1 -0
  904. package/dist/utils/format.js +13 -0
  905. package/dist/utils/format.js.map +1 -0
  906. package/dist/validation/deletion-checker.d.ts +66 -0
  907. package/dist/validation/deletion-checker.d.ts.map +1 -0
  908. package/dist/validation/deletion-checker.js +163 -0
  909. package/dist/validation/deletion-checker.js.map +1 -0
  910. package/dist/validation/field-traversal.d.ts +62 -0
  911. package/dist/validation/field-traversal.d.ts.map +1 -0
  912. package/dist/validation/field-traversal.js +95 -0
  913. package/dist/validation/field-traversal.js.map +1 -0
  914. package/dist/validation/reference-validator.d.ts +45 -0
  915. package/dist/validation/reference-validator.d.ts.map +1 -0
  916. package/dist/validation/reference-validator.js +140 -0
  917. package/dist/validation/reference-validator.js.map +1 -0
  918. package/dist/worker/cms-worker.d.ts +122 -0
  919. package/dist/worker/cms-worker.d.ts.map +1 -0
  920. package/dist/worker/cms-worker.js +660 -0
  921. package/dist/worker/cms-worker.js.map +1 -0
  922. package/dist/worker/task-queue-config.d.ts +11 -0
  923. package/dist/worker/task-queue-config.d.ts.map +1 -0
  924. package/dist/worker/task-queue-config.js +24 -0
  925. package/dist/worker/task-queue-config.js.map +1 -0
  926. package/dist/worker/task-queue.d.ts +18 -0
  927. package/dist/worker/task-queue.d.ts.map +1 -0
  928. package/dist/worker/task-queue.js +20 -0
  929. package/dist/worker/task-queue.js.map +1 -0
  930. package/package.json +144 -0
  931. package/src/__integration__/errors/invalid-content.test.ts +238 -0
  932. package/src/__integration__/errors/permission-denied.test.ts +220 -0
  933. package/src/__integration__/fixtures/content-seeds.ts +105 -0
  934. package/src/__integration__/fixtures/schemas.ts +67 -0
  935. package/src/__integration__/initialization/prod-sim-init.test.ts +139 -0
  936. package/src/__integration__/permissions/path-permissions.test.ts +314 -0
  937. package/src/__integration__/permissions/role-permissions.test.ts +354 -0
  938. package/src/__integration__/permissions/settings-branch-isolation.test.ts +317 -0
  939. package/src/__integration__/settings/groups-api.test.ts +403 -0
  940. package/src/__integration__/test-utils/api-client.ts +167 -0
  941. package/src/__integration__/test-utils/multi-user.ts +129 -0
  942. package/src/__integration__/test-utils/test-workspace.ts +130 -0
  943. package/src/__integration__/user/user-context.test.ts +174 -0
  944. package/src/__integration__/validation/input-validation.test.ts +166 -0
  945. package/src/__integration__/workflows/api-editing-workflow.test.ts +244 -0
  946. package/src/__integration__/workflows/conflict-resolution.test.ts +259 -0
  947. package/src/__integration__/workflows/editing-workflow.test.ts +205 -0
  948. package/src/__integration__/workflows/review-workflow.test.ts +260 -0
  949. package/src/ai/__tests__/build.integration.test.ts +224 -0
  950. package/src/ai/__tests__/generate.integration.test.ts +495 -0
  951. package/src/ai/__tests__/handler.integration.test.ts +212 -0
  952. package/src/ai/__tests__/json-to-markdown.test.ts +553 -0
  953. package/src/ai/generate.ts +410 -0
  954. package/src/ai/handler.ts +123 -0
  955. package/src/ai/index.ts +26 -0
  956. package/src/ai/json-to-markdown.ts +424 -0
  957. package/src/ai/resolve-branch.ts +34 -0
  958. package/src/ai/types.ts +160 -0
  959. package/src/api/AGENTS.md +81 -0
  960. package/src/api/__test__/mock-client.ts +404 -0
  961. package/src/api/assets.test.ts +140 -0
  962. package/src/api/assets.ts +154 -0
  963. package/src/api/branch-merge.test.ts +163 -0
  964. package/src/api/branch-merge.ts +113 -0
  965. package/src/api/branch-review.test.ts +297 -0
  966. package/src/api/branch-review.ts +136 -0
  967. package/src/api/branch-status.test.ts +85 -0
  968. package/src/api/branch-status.ts +153 -0
  969. package/src/api/branch-withdraw.test.ts +146 -0
  970. package/src/api/branch-withdraw.ts +81 -0
  971. package/src/api/branch-workflow.integration.test.ts +578 -0
  972. package/src/api/branch.test.ts +620 -0
  973. package/src/api/branch.ts +492 -0
  974. package/src/api/client.test.ts +349 -0
  975. package/src/api/client.ts +506 -0
  976. package/src/api/comments.test.ts +285 -0
  977. package/src/api/comments.ts +210 -0
  978. package/src/api/content.test.ts +345 -0
  979. package/src/api/content.ts +454 -0
  980. package/src/api/entries.test.ts +1339 -0
  981. package/src/api/entries.ts +650 -0
  982. package/src/api/github-sync.ts +144 -0
  983. package/src/api/groups.test.ts +1013 -0
  984. package/src/api/groups.ts +375 -0
  985. package/src/api/guards.test.ts +533 -0
  986. package/src/api/guards.ts +271 -0
  987. package/src/api/index.ts +87 -0
  988. package/src/api/permissions.test.ts +766 -0
  989. package/src/api/permissions.ts +334 -0
  990. package/src/api/reference-options.ts +118 -0
  991. package/src/api/resolve-references.ts +107 -0
  992. package/src/api/route-builder.ts +289 -0
  993. package/src/api/schema.test.ts +840 -0
  994. package/src/api/schema.ts +936 -0
  995. package/src/api/security.test.ts +233 -0
  996. package/src/api/settings-helpers.ts +84 -0
  997. package/src/api/types.ts +40 -0
  998. package/src/api/user.test.ts +127 -0
  999. package/src/api/user.ts +42 -0
  1000. package/src/api/validators.test.ts +275 -0
  1001. package/src/api/validators.ts +176 -0
  1002. package/src/asset-store.test.ts +37 -0
  1003. package/src/asset-store.ts +110 -0
  1004. package/src/auth/cache.ts +7 -0
  1005. package/src/auth/caching-auth-plugin.test.ts +154 -0
  1006. package/src/auth/caching-auth-plugin.ts +109 -0
  1007. package/src/auth/context-helpers.ts +75 -0
  1008. package/src/auth/file-based-auth-cache.test.ts +257 -0
  1009. package/src/auth/file-based-auth-cache.ts +279 -0
  1010. package/src/auth/index.ts +12 -0
  1011. package/src/auth/plugin.ts +51 -0
  1012. package/src/auth/types.ts +38 -0
  1013. package/src/authorization/__tests__/branch.test.ts +260 -0
  1014. package/src/authorization/__tests__/content.test.ts +142 -0
  1015. package/src/authorization/__tests__/path.test.ts +133 -0
  1016. package/src/authorization/__tests__/permissions-loader.test.ts +200 -0
  1017. package/src/authorization/branch.ts +94 -0
  1018. package/src/authorization/content.ts +93 -0
  1019. package/src/authorization/groups/index.ts +11 -0
  1020. package/src/authorization/groups/loader.ts +127 -0
  1021. package/src/authorization/groups/schema.ts +48 -0
  1022. package/src/authorization/helpers.ts +48 -0
  1023. package/src/authorization/index.ts +84 -0
  1024. package/src/authorization/path.ts +112 -0
  1025. package/src/authorization/permissions/index.ts +11 -0
  1026. package/src/authorization/permissions/loader.ts +116 -0
  1027. package/src/authorization/permissions/schema.ts +66 -0
  1028. package/src/authorization/test-utils.ts +15 -0
  1029. package/src/authorization/types.ts +66 -0
  1030. package/src/authorization/validation.test.ts +100 -0
  1031. package/src/authorization/validation.ts +62 -0
  1032. package/src/branch-metadata.test.ts +168 -0
  1033. package/src/branch-metadata.ts +166 -0
  1034. package/src/branch-registry.test.ts +248 -0
  1035. package/src/branch-registry.ts +152 -0
  1036. package/src/branch-schema-cache.test.ts +275 -0
  1037. package/src/branch-schema-cache.ts +189 -0
  1038. package/src/branch-workspace.test.ts +183 -0
  1039. package/src/branch-workspace.ts +124 -0
  1040. package/src/build/generate-ai-content.ts +78 -0
  1041. package/src/build/index.ts +8 -0
  1042. package/src/build-mode.ts +27 -0
  1043. package/src/cli/generate-ai-content.ts +100 -0
  1044. package/src/cli/init.test.ts +240 -0
  1045. package/src/cli/init.ts +457 -0
  1046. package/src/cli/templates/Dockerfile.cms.template +19 -0
  1047. package/src/cli/templates/canopy.ts.template +55 -0
  1048. package/src/cli/templates/canopycms.config.ts.template +11 -0
  1049. package/src/cli/templates/deploy-cms.yml.template +27 -0
  1050. package/src/cli/templates/edit-page.tsx.template +32 -0
  1051. package/src/cli/templates/route.ts.template +12 -0
  1052. package/src/cli/templates/schemas.ts.template +16 -0
  1053. package/src/cli/templates.ts +47 -0
  1054. package/src/client.ts +12 -0
  1055. package/src/comment-store.test.ts +442 -0
  1056. package/src/comment-store.ts +301 -0
  1057. package/src/config/__tests__/config.test.ts +513 -0
  1058. package/src/config/flatten.ts +174 -0
  1059. package/src/config/helpers.ts +167 -0
  1060. package/src/config/index.ts +86 -0
  1061. package/src/config/schemas/collection.ts +67 -0
  1062. package/src/config/schemas/config.ts +77 -0
  1063. package/src/config/schemas/field.ts +108 -0
  1064. package/src/config/schemas/media.ts +27 -0
  1065. package/src/config/schemas/permissions.ts +21 -0
  1066. package/src/config/types.ts +321 -0
  1067. package/src/config/validation.ts +70 -0
  1068. package/src/config-test.ts +65 -0
  1069. package/src/config.ts +11 -0
  1070. package/src/content-id-index.test.ts +512 -0
  1071. package/src/content-id-index.ts +479 -0
  1072. package/src/content-reader.test.ts +478 -0
  1073. package/src/content-reader.ts +214 -0
  1074. package/src/content-store.test.ts +1126 -0
  1075. package/src/content-store.ts +793 -0
  1076. package/src/context.ts +111 -0
  1077. package/src/editor/BranchManager.stories.tsx +80 -0
  1078. package/src/editor/BranchManager.test.tsx +324 -0
  1079. package/src/editor/BranchManager.tsx +461 -0
  1080. package/src/editor/CanopyEditor.stories.tsx +128 -0
  1081. package/src/editor/CanopyEditor.test.tsx +81 -0
  1082. package/src/editor/CanopyEditor.tsx +73 -0
  1083. package/src/editor/CanopyEditorPage.test.tsx +59 -0
  1084. package/src/editor/CanopyEditorPage.tsx +25 -0
  1085. package/src/editor/CommentsPanel.stories.tsx +184 -0
  1086. package/src/editor/CommentsPanel.tsx +338 -0
  1087. package/src/editor/Editor.integration.test.tsx +227 -0
  1088. package/src/editor/Editor.stories.tsx +119 -0
  1089. package/src/editor/Editor.tsx +1221 -0
  1090. package/src/editor/EditorPanes.stories.tsx +256 -0
  1091. package/src/editor/EditorPanes.test.tsx +77 -0
  1092. package/src/editor/EditorPanes.tsx +180 -0
  1093. package/src/editor/EntryNavigator.stories.tsx +65 -0
  1094. package/src/editor/EntryNavigator.test.tsx +598 -0
  1095. package/src/editor/EntryNavigator.tsx +665 -0
  1096. package/src/editor/FormRenderer.stories.tsx +212 -0
  1097. package/src/editor/FormRenderer.test.tsx +194 -0
  1098. package/src/editor/FormRenderer.tsx +432 -0
  1099. package/src/editor/GroupManager.stories.tsx +301 -0
  1100. package/src/editor/GroupManager.test.tsx +682 -0
  1101. package/src/editor/GroupManager.tsx +9 -0
  1102. package/src/editor/PermissionManager.stories.tsx +539 -0
  1103. package/src/editor/PermissionManager.test.tsx +864 -0
  1104. package/src/editor/PermissionManager.tsx +12 -0
  1105. package/src/editor/canopy-path.test.ts +23 -0
  1106. package/src/editor/canopy-path.ts +52 -0
  1107. package/src/editor/client-reference-resolver.ts +118 -0
  1108. package/src/editor/comments/BranchComments.tsx +93 -0
  1109. package/src/editor/comments/EntryComments.tsx +94 -0
  1110. package/src/editor/comments/FieldWrapper.stories.tsx +210 -0
  1111. package/src/editor/comments/FieldWrapper.tsx +129 -0
  1112. package/src/editor/comments/InlineCommentThread.test.tsx +384 -0
  1113. package/src/editor/comments/InlineCommentThread.tsx +246 -0
  1114. package/src/editor/comments/ThreadCarousel.test.tsx +393 -0
  1115. package/src/editor/comments/ThreadCarousel.tsx +525 -0
  1116. package/src/editor/components/ConfirmDeleteModal.tsx +49 -0
  1117. package/src/editor/components/EditorContext.tsx +49 -0
  1118. package/src/editor/components/EditorFooter.tsx +47 -0
  1119. package/src/editor/components/EditorHeader.tsx +492 -0
  1120. package/src/editor/components/EditorSidebar.tsx +193 -0
  1121. package/src/editor/components/EntryCreateModal.tsx +193 -0
  1122. package/src/editor/components/RenameEntryModal.tsx +152 -0
  1123. package/src/editor/components/UserBadge.test.tsx +274 -0
  1124. package/src/editor/components/UserBadge.tsx +240 -0
  1125. package/src/editor/components/index.ts +6 -0
  1126. package/src/editor/context/ApiClientContext.tsx +56 -0
  1127. package/src/editor/context/EditorStateContext.tsx +221 -0
  1128. package/src/editor/context/index.ts +40 -0
  1129. package/src/editor/editor-config.test.ts +385 -0
  1130. package/src/editor/editor-config.ts +94 -0
  1131. package/src/editor/editor-utils.test.ts +772 -0
  1132. package/src/editor/editor-utils.ts +303 -0
  1133. package/src/editor/env.ts +4 -0
  1134. package/src/editor/fields/BlockField.stories.tsx +79 -0
  1135. package/src/editor/fields/BlockField.tsx +267 -0
  1136. package/src/editor/fields/CodeField.tsx +41 -0
  1137. package/src/editor/fields/MarkdownField.tsx +205 -0
  1138. package/src/editor/fields/ObjectField.tsx +71 -0
  1139. package/src/editor/fields/ReferenceField.tsx +138 -0
  1140. package/src/editor/fields/SelectField.tsx +76 -0
  1141. package/src/editor/fields/TextField.tsx +35 -0
  1142. package/src/editor/fields/ToggleField.tsx +37 -0
  1143. package/src/editor/fields/fields.stories.tsx +40 -0
  1144. package/src/editor/group-manager/ExternalGroupsTab.tsx +114 -0
  1145. package/src/editor/group-manager/GroupCard.tsx +102 -0
  1146. package/src/editor/group-manager/GroupForm.tsx +66 -0
  1147. package/src/editor/group-manager/InternalGroupsTab.tsx +147 -0
  1148. package/src/editor/group-manager/MemberList.tsx +184 -0
  1149. package/src/editor/group-manager/hooks/useExternalGroupSearch.ts +63 -0
  1150. package/src/editor/group-manager/hooks/useGroupState.ts +134 -0
  1151. package/src/editor/group-manager/hooks/useUserSearch.ts +84 -0
  1152. package/src/editor/group-manager/index.tsx +210 -0
  1153. package/src/editor/group-manager/types.ts +28 -0
  1154. package/src/editor/hooks/README.md +26 -0
  1155. package/src/editor/hooks/__test__/test-utils.tsx +183 -0
  1156. package/src/editor/hooks/index.ts +23 -0
  1157. package/src/editor/hooks/useBranchActions.test.tsx +267 -0
  1158. package/src/editor/hooks/useBranchActions.tsx +121 -0
  1159. package/src/editor/hooks/useBranchManager.test.tsx +391 -0
  1160. package/src/editor/hooks/useBranchManager.tsx +326 -0
  1161. package/src/editor/hooks/useCommentSystem.test.ts +615 -0
  1162. package/src/editor/hooks/useCommentSystem.ts +347 -0
  1163. package/src/editor/hooks/useDraftManager.test.ts +375 -0
  1164. package/src/editor/hooks/useDraftManager.ts +259 -0
  1165. package/src/editor/hooks/useEditorLayout.test.ts +147 -0
  1166. package/src/editor/hooks/useEditorLayout.ts +67 -0
  1167. package/src/editor/hooks/useEntryManager.test.ts +588 -0
  1168. package/src/editor/hooks/useEntryManager.ts +387 -0
  1169. package/src/editor/hooks/useGroupManager.test.ts +277 -0
  1170. package/src/editor/hooks/useGroupManager.ts +139 -0
  1171. package/src/editor/hooks/usePermissionManager.test.ts +211 -0
  1172. package/src/editor/hooks/usePermissionManager.ts +113 -0
  1173. package/src/editor/hooks/useReferenceResolution.ts +248 -0
  1174. package/src/editor/hooks/useSchemaManager.test.ts +370 -0
  1175. package/src/editor/hooks/useSchemaManager.ts +310 -0
  1176. package/src/editor/hooks/useUserContext.tsx +57 -0
  1177. package/src/editor/hooks/useUserMetadata.test.ts +191 -0
  1178. package/src/editor/hooks/useUserMetadata.ts +71 -0
  1179. package/src/editor/permission-manager/GroupSelector.tsx +73 -0
  1180. package/src/editor/permission-manager/PermissionEditor.tsx +321 -0
  1181. package/src/editor/permission-manager/PermissionLevelBadge.tsx +53 -0
  1182. package/src/editor/permission-manager/PermissionTree.tsx +237 -0
  1183. package/src/editor/permission-manager/UserSelector.tsx +95 -0
  1184. package/src/editor/permission-manager/constants.tsx +18 -0
  1185. package/src/editor/permission-manager/hooks/useGroupsAndUsers.ts +153 -0
  1186. package/src/editor/permission-manager/hooks/usePermissionTree.ts +200 -0
  1187. package/src/editor/permission-manager/index.tsx +294 -0
  1188. package/src/editor/permission-manager/types.ts +58 -0
  1189. package/src/editor/permission-manager/utils.ts +179 -0
  1190. package/src/editor/preview-bridge.test.tsx +50 -0
  1191. package/src/editor/preview-bridge.tsx +294 -0
  1192. package/src/editor/schema-editor/CollectionEditor.test.tsx +238 -0
  1193. package/src/editor/schema-editor/CollectionEditor.tsx +520 -0
  1194. package/src/editor/schema-editor/EntryTypeEditor.test.tsx +215 -0
  1195. package/src/editor/schema-editor/EntryTypeEditor.tsx +367 -0
  1196. package/src/editor/schema-editor/index.ts +19 -0
  1197. package/src/editor/setup-test-dom.ts +10 -0
  1198. package/src/editor/test-setup.ts +33 -0
  1199. package/src/editor/theme.tsx +119 -0
  1200. package/src/editor/utils/env.ts +39 -0
  1201. package/src/entry-schema-registry.test.ts +281 -0
  1202. package/src/entry-schema-registry.ts +121 -0
  1203. package/src/entry-schema.ts +84 -0
  1204. package/src/git-manager.test.ts +552 -0
  1205. package/src/git-manager.ts +667 -0
  1206. package/src/github-service.test.ts +312 -0
  1207. package/src/github-service.ts +295 -0
  1208. package/src/http/handler.test.ts +275 -0
  1209. package/src/http/handler.ts +280 -0
  1210. package/src/http/index.ts +11 -0
  1211. package/src/http/router.ts +164 -0
  1212. package/src/http/types.ts +44 -0
  1213. package/src/id.test.ts +48 -0
  1214. package/src/id.ts +22 -0
  1215. package/src/index.ts +26 -0
  1216. package/src/operating-mode/__tests__/strategies.test.ts +511 -0
  1217. package/src/operating-mode/client-safe-strategy.ts +184 -0
  1218. package/src/operating-mode/client-unsafe-strategy.ts +303 -0
  1219. package/src/operating-mode/client.ts +13 -0
  1220. package/src/operating-mode/index.ts +34 -0
  1221. package/src/operating-mode/types.ts +186 -0
  1222. package/src/paths/__tests__/branch.test.ts +53 -0
  1223. package/src/paths/__tests__/normalize.test.ts +141 -0
  1224. package/src/paths/__tests__/resolve.test.ts +207 -0
  1225. package/src/paths/__tests__/validation.test.ts +61 -0
  1226. package/src/paths/branch.ts +115 -0
  1227. package/src/paths/index.ts +73 -0
  1228. package/src/paths/normalize-server.ts +40 -0
  1229. package/src/paths/normalize.ts +107 -0
  1230. package/src/paths/resolve.ts +61 -0
  1231. package/src/paths/test-utils.ts +37 -0
  1232. package/src/paths/types.ts +68 -0
  1233. package/src/paths/validation.test.ts +480 -0
  1234. package/src/paths/validation.ts +391 -0
  1235. package/src/reference-resolver.test.ts +107 -0
  1236. package/src/reference-resolver.ts +157 -0
  1237. package/src/schema/index.ts +29 -0
  1238. package/src/schema/meta-loader.ts +366 -0
  1239. package/src/schema/resolver.ts +83 -0
  1240. package/src/schema/schema-store-types.ts +56 -0
  1241. package/src/schema/schema-store.test.ts +816 -0
  1242. package/src/schema/schema-store.ts +795 -0
  1243. package/src/schema/types.ts +33 -0
  1244. package/src/schema-meta-loader.test.ts +447 -0
  1245. package/src/server.ts +15 -0
  1246. package/src/services.test.ts +559 -0
  1247. package/src/services.ts +373 -0
  1248. package/src/settings-branch-utils.ts +53 -0
  1249. package/src/settings-workspace.ts +156 -0
  1250. package/src/task-queue/README.md +144 -0
  1251. package/src/task-queue/index.ts +14 -0
  1252. package/src/task-queue/task-queue.test.ts +524 -0
  1253. package/src/task-queue/task-queue.ts +514 -0
  1254. package/src/task-queue/types.ts +41 -0
  1255. package/src/test-utils/api-test-helpers.ts +445 -0
  1256. package/src/test-utils/console-spy.test.ts +14 -0
  1257. package/src/test-utils/console-spy.ts +125 -0
  1258. package/src/test-utils/git-helpers.ts +31 -0
  1259. package/src/test-utils/index.ts +4 -0
  1260. package/src/types.ts +54 -0
  1261. package/src/user.ts +118 -0
  1262. package/src/utils/debug.test.ts +114 -0
  1263. package/src/utils/debug.ts +127 -0
  1264. package/src/utils/error.test.ts +92 -0
  1265. package/src/utils/error.ts +83 -0
  1266. package/src/utils/format.ts +12 -0
  1267. package/src/validation/__tests__/field-traversal.test.ts +263 -0
  1268. package/src/validation/deletion-checker.ts +234 -0
  1269. package/src/validation/field-traversal.ts +146 -0
  1270. package/src/validation/reference-validator.ts +168 -0
  1271. package/src/worker/cms-worker-rebase.test.ts +473 -0
  1272. package/src/worker/cms-worker.ts +777 -0
  1273. package/src/worker/integration.test.ts +289 -0
  1274. package/src/worker/task-queue-config.ts +25 -0
  1275. package/src/worker/task-queue.test.ts +452 -0
  1276. package/src/worker/task-queue.ts +58 -0
@@ -0,0 +1,118 @@
1
+ import path from 'node:path';
2
+ import { extractSlugFromFilename } from './content-id-index';
3
+ /**
4
+ * ReferenceResolver resolves content IDs to display values for reference fields.
5
+ *
6
+ * This class provides utilities for:
7
+ * - Resolving a single ID to its display value (e.g., title)
8
+ * - Loading all available options for a reference field
9
+ * - Filtering options by collection constraints
10
+ * - Searching options by display value
11
+ */
12
+ export class ReferenceResolver {
13
+ constructor(store, idIndex) {
14
+ this.store = store;
15
+ this.idIndex = idIndex;
16
+ }
17
+ /**
18
+ * Resolve a content ID to a display value.
19
+ * Returns null if the ID doesn't exist or points to a collection.
20
+ *
21
+ * @param id - The content ID to resolve
22
+ * @param displayField - The field to use for display value (default: 'title')
23
+ */
24
+ async resolve(id, displayField = 'title') {
25
+ const location = this.idIndex.findById(id);
26
+ if (!location || location.type !== 'entry') {
27
+ return {
28
+ id,
29
+ exists: false,
30
+ displayValue: id, // Fallback to showing the ID itself
31
+ };
32
+ }
33
+ try {
34
+ const doc = await this.store.read(location.collection, location.slug);
35
+ const displayValue = String(doc.data[displayField] || doc.data.title || location.slug);
36
+ return {
37
+ id,
38
+ exists: true,
39
+ displayValue,
40
+ collection: location.collection,
41
+ slug: location.slug,
42
+ };
43
+ }
44
+ catch (error) {
45
+ console.error('Failed to resolve reference:', { id, error });
46
+ return {
47
+ id,
48
+ exists: false,
49
+ displayValue: id,
50
+ };
51
+ }
52
+ }
53
+ /**
54
+ * Load all available reference options for a reference field.
55
+ *
56
+ * This method scans the specified collections and returns options
57
+ * suitable for a dropdown/select field.
58
+ *
59
+ * @param collections - Collection paths to search (e.g., ['posts', 'docs'])
60
+ * @param displayField - Field to use for option labels (default: 'title')
61
+ * @param search - Optional search string to filter options
62
+ */
63
+ async loadReferenceOptions(collections, displayField = 'title', search) {
64
+ const options = [];
65
+ for (const collectionPath of collections) {
66
+ // Get all entries in this collection
67
+ const entries = await this.listEntriesInCollection(collectionPath);
68
+ for (const entry of entries) {
69
+ const id = this.idIndex.findByPath(entry.relativePath);
70
+ if (!id)
71
+ continue;
72
+ try {
73
+ // The slug from the index may include the entry type prefix for new-format files
74
+ // (e.g., "author.alice" instead of just "alice"). We need to strip the type prefix
75
+ // before passing to store.read() to avoid double-prefixing.
76
+ // Use extractSlugFromFilename to properly extract just the slug part.
77
+ const filename = path.basename(entry.relativePath);
78
+ const normalizedSlug = extractSlugFromFilename(filename);
79
+ const doc = await this.store.read(entry.collection, normalizedSlug);
80
+ const label = String(doc.data[displayField] || doc.data.title || normalizedSlug);
81
+ // Apply search filter if provided
82
+ if (search && !label.toLowerCase().includes(search.toLowerCase())) {
83
+ continue;
84
+ }
85
+ options.push({
86
+ id,
87
+ label,
88
+ collection: entry.collection,
89
+ });
90
+ }
91
+ catch (error) {
92
+ // Skip entries that can't be read
93
+ console.error('Failed to read entry for reference options:', {
94
+ collection: entry.collection,
95
+ slug: entry.slug,
96
+ error,
97
+ });
98
+ continue;
99
+ }
100
+ }
101
+ }
102
+ return options.sort((a, b) => a.label.localeCompare(b.label));
103
+ }
104
+ /**
105
+ * Helper to list all entries in a collection.
106
+ */
107
+ async listEntriesInCollection(collectionPath) {
108
+ return this.store.listCollectionEntries(collectionPath);
109
+ }
110
+ /**
111
+ * Resolve multiple IDs at once.
112
+ * Useful for displaying lists of referenced items.
113
+ */
114
+ async resolveMany(ids, displayField = 'title') {
115
+ return Promise.all(ids.map((id) => this.resolve(id, displayField)));
116
+ }
117
+ }
118
+ //# sourceMappingURL=reference-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reference-resolver.js","sourceRoot":"","sources":["../src/reference-resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Schema Module
3
+ *
4
+ * This module provides schema loading and resolution for CanopyCMS.
5
+ * Schema structure is defined in .collection.json files (single source of truth)
6
+ * while field schemas are defined in an entry schema registry for reusability.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * import { resolveSchema } from 'canopycms/schema'
11
+ *
12
+ * const { schema, sources } = await resolveSchema(contentRoot, entrySchemaRegistry)
13
+ * ```
14
+ */
15
+ export type { EntrySchemaRegistry, SchemaSourceInfo, SchemaResolutionResult } from './types';
16
+ export { loadCollectionMetaFiles, resolveCollectionReferences, watchCollectionMetaFiles, type CollectionMeta, type RootCollectionMeta, } from './meta-loader';
17
+ export { resolveSchema, hasSchemaFiles, isValidSchema } from './resolver';
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAG5F,OAAO,EACL,uBAAuB,EACvB,2BAA2B,EAC3B,wBAAwB,EACxB,KAAK,cAAc,EACnB,KAAK,kBAAkB,GACxB,MAAM,eAAe,CAAA;AAGtB,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Schema Module
3
+ *
4
+ * This module provides schema loading and resolution for CanopyCMS.
5
+ * Schema structure is defined in .collection.json files (single source of truth)
6
+ * while field schemas are defined in an entry schema registry for reusability.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * import { resolveSchema } from 'canopycms/schema'
11
+ *
12
+ * const { schema, sources } = await resolveSchema(contentRoot, entrySchemaRegistry)
13
+ * ```
14
+ */
15
+ // Meta loader (low-level API)
16
+ export { loadCollectionMetaFiles, resolveCollectionReferences, watchCollectionMetaFiles, } from './meta-loader';
17
+ // Resolver (high-level API)
18
+ export { resolveSchema, hasSchemaFiles, isValidSchema } from './resolver';
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH,8BAA8B;AAC9B,OAAO,EACL,uBAAuB,EACvB,2BAA2B,EAC3B,wBAAwB,GAGzB,MAAM,eAAe,CAAA;AAEtB,4BAA4B;AAC5B,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA"}
@@ -0,0 +1,73 @@
1
+ import type { RootCollectionConfig } from '../config';
2
+ import type { ContentId } from '../paths/types';
3
+ import type { EntrySchemaRegistry } from './types';
4
+ export type EntryTypeMeta = {
5
+ name: string;
6
+ format: 'md' | 'mdx' | 'json';
7
+ schema: string;
8
+ label?: string;
9
+ default?: boolean;
10
+ maxItems?: number;
11
+ };
12
+ export type CollectionMeta = {
13
+ name: string;
14
+ label?: string;
15
+ entries?: EntryTypeMeta[];
16
+ order: string[];
17
+ };
18
+ export type RootCollectionMeta = {
19
+ label?: string;
20
+ entries?: EntryTypeMeta[];
21
+ order?: string[];
22
+ };
23
+ /**
24
+ * Loads all .collection.json meta files from contentRoot, including root.
25
+ *
26
+ * This function orchestrates the complete discovery process:
27
+ * 1. Attempts to load the root .collection.json (contentRoot/.collection.json) - optional
28
+ * 2. Recursively scans all subdirectories for .collection.json files
29
+ * 3. Returns both root configuration and nested collections
30
+ *
31
+ * Meta File Structure:
32
+ * - Root: contentRoot/.collection.json (optional, defines root-level entry types)
33
+ * - Collections: contentRoot/[path]/.collection.json (defines collection in that directory)
34
+ *
35
+ * @param contentRoot - Absolute path to the content directory
36
+ * @returns Object containing root meta (if exists) and array of collection metas with paths
37
+ * @throws Error if any .collection.json file is malformed or invalid
38
+ */
39
+ export declare function loadCollectionMetaFiles(contentRoot: string): Promise<{
40
+ root: RootCollectionMeta | null;
41
+ collections: Array<CollectionMeta & {
42
+ path: string;
43
+ contentId?: ContentId;
44
+ }>;
45
+ }>;
46
+ /**
47
+ * Resolve schema references for root collection and all collections.
48
+ *
49
+ * This function takes the loaded meta files (which contain string references like "postSchema")
50
+ * and resolves them to actual EntrySchema arrays from the entry schema registry.
51
+ *
52
+ * Resolution Process:
53
+ * 1. Root entry types: Resolve "schema" string to entry schema registry lookup
54
+ * 2. Top-level collections: Resolve recursively, building nested tree structure
55
+ * 3. Nested collections: Automatically grouped under their parent collections
56
+ *
57
+ * @param metaFiles - Loaded meta files from loadCollectionMetaFiles()
58
+ * @param entrySchemaRegistry - Map of schema names to EntrySchema arrays
59
+ * @returns Fully resolved root collection config ready for use by CanopyCMS
60
+ * @throws Error if any schema reference doesn't exist in registry (with helpful suggestions)
61
+ */
62
+ export declare function resolveCollectionReferences(metaFiles: {
63
+ root: RootCollectionMeta | null;
64
+ collections: Array<CollectionMeta & {
65
+ path: string;
66
+ contentId?: ContentId;
67
+ }>;
68
+ }, entrySchemaRegistry: EntrySchemaRegistry): RootCollectionConfig;
69
+ /**
70
+ * Watch for changes to .collection.json files
71
+ */
72
+ export declare function watchCollectionMetaFiles(contentRoot: string, onChange: () => void): () => void;
73
+ //# sourceMappingURL=meta-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta-loader.d.ts","sourceRoot":"","sources":["../../src/schema/meta-loader.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAGV,oBAAoB,EAErB,MAAM,WAAW,CAAA;AAClB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAkDlD,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,IAAI,GAAG,KAAK,GAAG,MAAM,CAAA;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,aAAa,EAAE,CAAA;IACzB,KAAK,EAAE,MAAM,EAAE,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,aAAa,EAAE,CAAA;IACzB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;CACjB,CAAA;AAyFD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1E,IAAI,EAAE,kBAAkB,GAAG,IAAI,CAAA;IAC/B,WAAW,EAAE,KAAK,CAAC,cAAc,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,SAAS,CAAA;KAAE,CAAC,CAAA;CAC7E,CAAC,CAiCD;AAuED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,2BAA2B,CACzC,SAAS,EAAE;IACT,IAAI,EAAE,kBAAkB,GAAG,IAAI,CAAA;IAC/B,WAAW,EAAE,KAAK,CAAC,cAAc,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,SAAS,CAAA;KAAE,CAAC,CAAA;CAC7E,EACD,mBAAmB,EAAE,mBAAmB,GACvC,oBAAoB,CAiCtB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAW9F"}
@@ -0,0 +1,273 @@
1
+ import { promises as fs } from 'fs';
2
+ import { join } from 'pathe';
3
+ import { z } from 'zod';
4
+ import chokidar from 'chokidar';
5
+ import { extractSlugFromFilename, extractIdFromFilename } from '../content-id-index';
6
+ /**
7
+ * Zod schema for entry type metadata in .collection.json files.
8
+ * Each entry type has a name, format, and schema reference to the entry schema registry.
9
+ */
10
+ const entryTypeMetaSchema = z.object({
11
+ name: z.string().min(1),
12
+ format: z.enum(['md', 'mdx', 'json']),
13
+ schema: z.string().min(1), // Entry schema registry key (validated at resolution time)
14
+ label: z.string().optional(),
15
+ default: z.boolean().optional(),
16
+ maxItems: z.number().int().positive().optional(),
17
+ });
18
+ /**
19
+ * Zod schema for .collection.json files
20
+ *
21
+ * A collection folder can contain:
22
+ * - entries: Array of entry types with their own schemas
23
+ * - collections: Nested collections (discovered via their own .collection.json files)
24
+ *
25
+ * Note: We can't validate `schema` against entry schema registry keys at parse time because:
26
+ * 1. Entry schema registry is passed at runtime (not available during Zod schema definition)
27
+ * 2. Would create circular dependency (loader → services → config → loader)
28
+ *
29
+ * Validation of schema references happens in resolution functions with clear error messages.
30
+ */
31
+ const collectionMetaSchema = z
32
+ .object({
33
+ name: z.string().min(1),
34
+ label: z.string().optional(),
35
+ entries: z.array(entryTypeMetaSchema).optional(),
36
+ order: z.array(z.string()), // Embedded IDs for ordering items (required)
37
+ })
38
+ .refine((data) => data.entries && data.entries.length > 0, {
39
+ message: 'Collection must have at least one entry type',
40
+ });
41
+ /**
42
+ * Zod schema for root .collection.json file (content/.collection.json)
43
+ * Like other collections but no name/path (derived from contentRoot)
44
+ */
45
+ const rootCollectionMetaSchema = z.object({
46
+ label: z.string().optional(),
47
+ entries: z.array(entryTypeMetaSchema).optional(),
48
+ order: z.array(z.string()).optional(), // Embedded IDs for ordering items
49
+ });
50
+ /**
51
+ * Recursively scans a directory for .collection.json files.
52
+ *
53
+ * Discovery Rules:
54
+ * - Scans recursively from the base directory (content root)
55
+ * - Each directory can have at most ONE .collection.json file
56
+ * - Collection path is derived from the directory structure (e.g., "docs/api" for content/docs/api/)
57
+ * - Collection name comes from the "name" field in .collection.json, NOT the directory name
58
+ * - Directories without .collection.json are still scanned for nested collections
59
+ * - Invalid .collection.json files cause the entire scan to fail with a descriptive error
60
+ *
61
+ * @param baseDir - The directory to scan (absolute path)
62
+ * @param relativePath - Current path relative to content root (used for recursion)
63
+ * @returns Array of collection metadata with resolved paths
64
+ */
65
+ /**
66
+ * Strip embedded ID from a directory or file name.
67
+ * e.g., "docs.bChqT78gcaLd" -> "docs"
68
+ * e.g., "home.home.agfzDt2RLpSn.json" -> "home"
69
+ */
70
+ function stripEmbeddedIdFromName(name) {
71
+ // Use extractSlugFromFilename which handles the ID extraction logic
72
+ return extractSlugFromFilename(name);
73
+ }
74
+ async function scanForCollectionMeta(baseDir, relativePath = '') {
75
+ const collections = [];
76
+ try {
77
+ const entries = await fs.readdir(baseDir, { withFileTypes: true });
78
+ for (const entry of entries) {
79
+ if (!entry.isDirectory())
80
+ continue;
81
+ const folderName = entry.name;
82
+ // Strip embedded ID from folder name for logical path
83
+ // e.g., "docs.bChqT78gcaLd" -> "docs"
84
+ const logicalName = stripEmbeddedIdFromName(folderName);
85
+ // Extract embedded ContentId from directory name (e.g., "posts.a1b2c3d4e5f6" → "a1b2c3d4e5f6")
86
+ const collectionContentId = extractIdFromFilename(folderName) ?? undefined;
87
+ const folderPath = relativePath ? `${relativePath}/${logicalName}` : logicalName;
88
+ const absolutePath = join(baseDir, folderName);
89
+ const metaPath = join(absolutePath, '.collection.json');
90
+ // Try to load collection meta file
91
+ try {
92
+ await fs.access(metaPath);
93
+ const content = await fs.readFile(metaPath, 'utf-8');
94
+ const parsed = JSON.parse(content);
95
+ // Validate with Zod
96
+ const meta = collectionMetaSchema.parse(parsed);
97
+ collections.push({
98
+ ...meta,
99
+ path: folderPath, // Path derived from folder name
100
+ contentId: collectionContentId,
101
+ });
102
+ // Recursively scan for nested collection folders (they'll have their own .collection.json files)
103
+ const nestedCollections = await scanForCollectionMeta(absolutePath, folderPath);
104
+ collections.push(...nestedCollections);
105
+ }
106
+ catch (err) {
107
+ if (err.code !== 'ENOENT') {
108
+ // File exists but is invalid
109
+ console.error(`Error loading ${metaPath}:`, err);
110
+ throw new Error(`Invalid .collection.json in ${folderPath}: ${err.message}`);
111
+ }
112
+ // No .collection.json - still scan subfolders in case they have collections
113
+ const nestedCollections = await scanForCollectionMeta(absolutePath, folderPath);
114
+ collections.push(...nestedCollections);
115
+ }
116
+ }
117
+ return collections;
118
+ }
119
+ catch (err) {
120
+ if (err.code === 'ENOENT') {
121
+ return [];
122
+ }
123
+ throw err;
124
+ }
125
+ }
126
+ /**
127
+ * Loads all .collection.json meta files from contentRoot, including root.
128
+ *
129
+ * This function orchestrates the complete discovery process:
130
+ * 1. Attempts to load the root .collection.json (contentRoot/.collection.json) - optional
131
+ * 2. Recursively scans all subdirectories for .collection.json files
132
+ * 3. Returns both root configuration and nested collections
133
+ *
134
+ * Meta File Structure:
135
+ * - Root: contentRoot/.collection.json (optional, defines root-level entry types)
136
+ * - Collections: contentRoot/[path]/.collection.json (defines collection in that directory)
137
+ *
138
+ * @param contentRoot - Absolute path to the content directory
139
+ * @returns Object containing root meta (if exists) and array of collection metas with paths
140
+ * @throws Error if any .collection.json file is malformed or invalid
141
+ */
142
+ export async function loadCollectionMetaFiles(contentRoot) {
143
+ // Load root .collection.json (optional)
144
+ let root = null;
145
+ const rootMetaPath = join(contentRoot, '.collection.json');
146
+ try {
147
+ await fs.access(rootMetaPath);
148
+ }
149
+ catch (err) {
150
+ // No root .collection.json - that's okay
151
+ if (err.code === 'ENOENT') {
152
+ // File doesn't exist, that's fine
153
+ }
154
+ else {
155
+ throw err;
156
+ }
157
+ }
158
+ // If file exists, try to read and parse it
159
+ try {
160
+ const content = await fs.readFile(rootMetaPath, 'utf-8');
161
+ const parsed = JSON.parse(content);
162
+ root = rootCollectionMetaSchema.parse(parsed);
163
+ }
164
+ catch (err) {
165
+ // Only handle errors if the file exists (not ENOENT)
166
+ const errno = err.code;
167
+ if (errno !== 'ENOENT') {
168
+ throw new Error(`Invalid root .collection.json`);
169
+ }
170
+ }
171
+ // Scan for collection folders
172
+ const collections = await scanForCollectionMeta(contentRoot);
173
+ return { root, collections };
174
+ }
175
+ /**
176
+ * Resolve schema references for entry types
177
+ */
178
+ function resolveEntryTypes(entryTypes, entrySchemaRegistry, contextName) {
179
+ return entryTypes.map((entryType) => {
180
+ const resolvedSchema = entrySchemaRegistry[entryType.schema];
181
+ if (!resolvedSchema) {
182
+ throw new Error(`Schema reference "${entryType.schema}" in entry type "${entryType.name}" (${contextName}) not found in registry. ` +
183
+ `Available schemas: ${Object.keys(entrySchemaRegistry).join(', ')}`);
184
+ }
185
+ return {
186
+ name: entryType.name,
187
+ label: entryType.label,
188
+ format: entryType.format,
189
+ schema: resolvedSchema,
190
+ schemaRef: entryType.schema,
191
+ default: entryType.default,
192
+ maxItems: entryType.maxItems,
193
+ };
194
+ });
195
+ }
196
+ /**
197
+ * Resolve schema references for a single collection
198
+ */
199
+ function resolveCollectionMeta(meta, entrySchemaRegistry, allCollections) {
200
+ // Resolve entry types
201
+ const entries = meta.entries && meta.entries.length > 0
202
+ ? resolveEntryTypes(meta.entries, entrySchemaRegistry, `collection "${meta.name}"`)
203
+ : undefined;
204
+ // Find nested collections (subfolders with .collection.json)
205
+ const nestedCollections = allCollections.filter((col) => {
206
+ return (col.path.startsWith(`${meta.path}/`) &&
207
+ col.path.split('/').length === meta.path.split('/').length + 1);
208
+ });
209
+ const collections = nestedCollections.length > 0
210
+ ? nestedCollections.map((nestedMeta) => resolveCollectionMeta(nestedMeta, entrySchemaRegistry, allCollections))
211
+ : undefined;
212
+ return {
213
+ name: meta.name,
214
+ label: meta.label,
215
+ path: meta.path,
216
+ contentId: meta.contentId,
217
+ ...(entries && { entries }),
218
+ ...(meta.order && { order: meta.order }),
219
+ ...(collections && { collections }),
220
+ };
221
+ }
222
+ /**
223
+ * Resolve schema references for root collection and all collections.
224
+ *
225
+ * This function takes the loaded meta files (which contain string references like "postSchema")
226
+ * and resolves them to actual EntrySchema arrays from the entry schema registry.
227
+ *
228
+ * Resolution Process:
229
+ * 1. Root entry types: Resolve "schema" string to entry schema registry lookup
230
+ * 2. Top-level collections: Resolve recursively, building nested tree structure
231
+ * 3. Nested collections: Automatically grouped under their parent collections
232
+ *
233
+ * @param metaFiles - Loaded meta files from loadCollectionMetaFiles()
234
+ * @param entrySchemaRegistry - Map of schema names to EntrySchema arrays
235
+ * @returns Fully resolved root collection config ready for use by CanopyCMS
236
+ * @throws Error if any schema reference doesn't exist in registry (with helpful suggestions)
237
+ */
238
+ export function resolveCollectionReferences(metaFiles, entrySchemaRegistry) {
239
+ // Build result object dynamically to avoid readonly conflicts
240
+ const result = {};
241
+ // Pass through root label if present
242
+ if (metaFiles.root?.label) {
243
+ result.label = metaFiles.root.label;
244
+ }
245
+ // Resolve root entry types
246
+ if (metaFiles.root?.entries && metaFiles.root.entries.length > 0) {
247
+ result.entries = resolveEntryTypes(metaFiles.root.entries, entrySchemaRegistry, 'root collection');
248
+ }
249
+ // Pass through root order array (embedded IDs for sorting)
250
+ if (metaFiles.root?.order) {
251
+ result.order = metaFiles.root.order;
252
+ }
253
+ // Resolve top-level collections (no slashes in path)
254
+ const topLevelCollections = metaFiles.collections.filter((meta) => !meta.path.includes('/'));
255
+ if (topLevelCollections.length > 0) {
256
+ result.collections = topLevelCollections.map((meta) => resolveCollectionMeta(meta, entrySchemaRegistry, metaFiles.collections));
257
+ }
258
+ return result;
259
+ }
260
+ /**
261
+ * Watch for changes to .collection.json files
262
+ */
263
+ export function watchCollectionMetaFiles(contentRoot, onChange) {
264
+ const watcher = chokidar.watch(`${contentRoot}/**/.collection.json`, {
265
+ ignoreInitial: true,
266
+ });
267
+ watcher.on('add', onChange);
268
+ watcher.on('change', onChange);
269
+ watcher.on('unlink', onChange);
270
+ // Return cleanup function
271
+ return () => watcher.close();
272
+ }
273
+ //# sourceMappingURL=meta-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta-loader.js","sourceRoot":"","sources":["../../src/schema/meta-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Schema resolver for CanopyCMS.
3
+ *
4
+ * Loads and resolves schema from .collection.json files in the content directory.
5
+ * This is the single source of truth for collection structure.
6
+ *
7
+ * Field schemas are defined in the entry schema registry and referenced by name
8
+ * in .collection.json files for reusability and type safety.
9
+ */
10
+ import type { RootCollectionConfig } from '../config';
11
+ import type { EntrySchemaRegistry, SchemaResolutionResult } from './types';
12
+ /**
13
+ * Resolve schema from .collection.json files.
14
+ *
15
+ * This is the primary entry point for loading schema configuration.
16
+ * It discovers all .collection.json files in the content directory
17
+ * and resolves schema references using the provided registry.
18
+ *
19
+ * @param contentRoot - Path to the content directory
20
+ * @param entrySchemaRegistry - Map of entry schema names to field definitions
21
+ * @returns Resolved schema configuration
22
+ * @throws Error if schema references cannot be resolved
23
+ */
24
+ export declare function resolveSchema(contentRoot: string, entrySchemaRegistry: EntrySchemaRegistry): Promise<SchemaResolutionResult>;
25
+ /**
26
+ * Check if content root has any .collection.json files.
27
+ *
28
+ * @param contentRoot - Path to the content directory
29
+ * @returns true if at least one .collection.json file exists
30
+ */
31
+ export declare function hasSchemaFiles(contentRoot: string): Promise<boolean>;
32
+ /**
33
+ * Validate schema completeness.
34
+ *
35
+ * Checks that the resolved schema has at least one collection or
36
+ * root entries definition.
37
+ *
38
+ * @param schema - Resolved schema to validate
39
+ * @returns true if schema is valid
40
+ */
41
+ export declare function isValidSchema(schema: RootCollectionConfig): boolean;
42
+ //# sourceMappingURL=resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/schema/resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,sBAAsB,EAAoB,MAAM,SAAS,CAAA;AAG5F;;;;;;;;;;;GAWG;AACH,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,mBAAmB,EAAE,mBAAmB,GACvC,OAAO,CAAC,sBAAsB,CAAC,CA2BjC;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAG1E;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAInE"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Schema resolver for CanopyCMS.
3
+ *
4
+ * Loads and resolves schema from .collection.json files in the content directory.
5
+ * This is the single source of truth for collection structure.
6
+ *
7
+ * Field schemas are defined in the entry schema registry and referenced by name
8
+ * in .collection.json files for reusability and type safety.
9
+ */
10
+ import { loadCollectionMetaFiles, resolveCollectionReferences } from './meta-loader';
11
+ /**
12
+ * Resolve schema from .collection.json files.
13
+ *
14
+ * This is the primary entry point for loading schema configuration.
15
+ * It discovers all .collection.json files in the content directory
16
+ * and resolves schema references using the provided registry.
17
+ *
18
+ * @param contentRoot - Path to the content directory
19
+ * @param entrySchemaRegistry - Map of entry schema names to field definitions
20
+ * @returns Resolved schema configuration
21
+ * @throws Error if schema references cannot be resolved
22
+ */
23
+ export async function resolveSchema(contentRoot, entrySchemaRegistry) {
24
+ // Load all .collection.json meta files
25
+ const metaFiles = await loadCollectionMetaFiles(contentRoot);
26
+ // Build source info for debugging
27
+ const sources = [];
28
+ if (metaFiles.root) {
29
+ sources.push({
30
+ path: '.collection.json',
31
+ type: 'root',
32
+ collections: [],
33
+ });
34
+ }
35
+ for (const collection of metaFiles.collections) {
36
+ sources.push({
37
+ path: `${collection.path}/.collection.json`,
38
+ type: 'collection',
39
+ collections: [collection.name],
40
+ });
41
+ }
42
+ // Resolve schema references to actual field definitions
43
+ const schema = resolveCollectionReferences(metaFiles, entrySchemaRegistry);
44
+ return { schema, sources };
45
+ }
46
+ /**
47
+ * Check if content root has any .collection.json files.
48
+ *
49
+ * @param contentRoot - Path to the content directory
50
+ * @returns true if at least one .collection.json file exists
51
+ */
52
+ export async function hasSchemaFiles(contentRoot) {
53
+ const metaFiles = await loadCollectionMetaFiles(contentRoot);
54
+ return metaFiles.root !== null || metaFiles.collections.length > 0;
55
+ }
56
+ /**
57
+ * Validate schema completeness.
58
+ *
59
+ * Checks that the resolved schema has at least one collection or
60
+ * root entries definition.
61
+ *
62
+ * @param schema - Resolved schema to validate
63
+ * @returns true if schema is valid
64
+ */
65
+ export function isValidSchema(schema) {
66
+ const hasEntries = !!(schema.entries && schema.entries.length > 0);
67
+ const hasCollections = !!(schema.collections && schema.collections.length > 0);
68
+ return hasEntries || hasCollections;
69
+ }
70
+ //# sourceMappingURL=resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../src/schema/resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAA;AAEpF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,WAAmB,EACnB,mBAAwC;IAExC,uCAAuC;IACvC,MAAM,SAAS,GAAG,MAAM,uBAAuB,CAAC,WAAW,CAAC,CAAA;IAE5D,kCAAkC;IAClC,MAAM,OAAO,GAAuB,EAAE,CAAA;IAEtC,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,kBAAkB;YACxB,IAAI,EAAE,MAAM;YACZ,WAAW,EAAE,EAAE;SAChB,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,MAAM,UAAU,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;QAC/C,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,GAAG,UAAU,CAAC,IAAI,mBAAmB;YAC3C,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;SAC/B,CAAC,CAAA;IACJ,CAAC;IAED,wDAAwD;IACxD,MAAM,MAAM,GAAG,2BAA2B,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAA;IAE1E,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;AAC5B,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,WAAmB;IACtD,MAAM,SAAS,GAAG,MAAM,uBAAuB,CAAC,WAAW,CAAC,CAAA;IAC5D,OAAO,SAAS,CAAC,IAAI,KAAK,IAAI,IAAI,SAAS,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAA;AACpE,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAAC,MAA4B;IACxD,MAAM,UAAU,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAClE,MAAM,cAAc,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAC9E,OAAO,UAAU,IAAI,cAAc,CAAA;AACrC,CAAC"}