@orthacms/content-server 0.0.0-reserve.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 (396) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +7 -0
  3. package/dist/define.d.ts +17 -0
  4. package/dist/define.d.ts.map +1 -0
  5. package/dist/define.js +28 -0
  6. package/dist/index.d.ts +48 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +109 -0
  9. package/dist/lib/collection/define.d.ts +35 -0
  10. package/dist/lib/collection/define.d.ts.map +1 -0
  11. package/dist/lib/collection/define.js +217 -0
  12. package/dist/lib/collection/table-builder.d.ts +28 -0
  13. package/dist/lib/collection/table-builder.d.ts.map +1 -0
  14. package/dist/lib/collection/table-builder.js +306 -0
  15. package/dist/lib/content-types/controllers/get-content-schema.controller.d.ts +24 -0
  16. package/dist/lib/content-types/controllers/get-content-schema.controller.d.ts.map +1 -0
  17. package/dist/lib/content-types/controllers/get-content-schema.controller.js +58 -0
  18. package/dist/lib/content-types/controllers/get-filter-fields.controller.d.ts +35 -0
  19. package/dist/lib/content-types/controllers/get-filter-fields.controller.d.ts.map +1 -0
  20. package/dist/lib/content-types/controllers/get-filter-fields.controller.js +74 -0
  21. package/dist/lib/content-types/controllers/list-content-schema.controller.d.ts +15 -0
  22. package/dist/lib/content-types/controllers/list-content-schema.controller.d.ts.map +1 -0
  23. package/dist/lib/content-types/controllers/list-content-schema.controller.js +38 -0
  24. package/dist/lib/content-types/queries/workspace-grants.query.d.ts +25 -0
  25. package/dist/lib/content-types/queries/workspace-grants.query.d.ts.map +1 -0
  26. package/dist/lib/content-types/queries/workspace-grants.query.js +45 -0
  27. package/dist/lib/content.module.d.ts +21 -0
  28. package/dist/lib/content.module.d.ts.map +1 -0
  29. package/dist/lib/content.module.js +264 -0
  30. package/dist/lib/content.tokens.d.ts +5 -0
  31. package/dist/lib/content.tokens.d.ts.map +1 -0
  32. package/dist/lib/content.tokens.js +9 -0
  33. package/dist/lib/copilot/content-tool.provider.d.ts +64 -0
  34. package/dist/lib/copilot/content-tool.provider.d.ts.map +1 -0
  35. package/dist/lib/copilot/content-tool.provider.js +309 -0
  36. package/dist/lib/copilot/diff-snapshots.d.ts +42 -0
  37. package/dist/lib/copilot/diff-snapshots.d.ts.map +1 -0
  38. package/dist/lib/copilot/diff-snapshots.js +77 -0
  39. package/dist/lib/copilot/entry-proposal.applier.d.ts +89 -0
  40. package/dist/lib/copilot/entry-proposal.applier.d.ts.map +1 -0
  41. package/dist/lib/copilot/entry-proposal.applier.js +245 -0
  42. package/dist/lib/copilot/entry-proposal.provider.d.ts +157 -0
  43. package/dist/lib/copilot/entry-proposal.provider.d.ts.map +1 -0
  44. package/dist/lib/copilot/entry-proposal.provider.js +619 -0
  45. package/dist/lib/copilot/filter-schema.d.ts +61 -0
  46. package/dist/lib/copilot/filter-schema.d.ts.map +1 -0
  47. package/dist/lib/copilot/filter-schema.js +139 -0
  48. package/dist/lib/copilot/project-entry.d.ts +23 -0
  49. package/dist/lib/copilot/project-entry.d.ts.map +1 -0
  50. package/dist/lib/copilot/project-entry.js +36 -0
  51. package/dist/lib/copilot/proposal-kinds.d.ts +30 -0
  52. package/dist/lib/copilot/proposal-kinds.d.ts.map +1 -0
  53. package/dist/lib/copilot/proposal-kinds.js +32 -0
  54. package/dist/lib/copilot/revision-tool.provider.d.ts +56 -0
  55. package/dist/lib/copilot/revision-tool.provider.d.ts.map +1 -0
  56. package/dist/lib/copilot/revision-tool.provider.js +215 -0
  57. package/dist/lib/docs/content-schemas.d.ts +34 -0
  58. package/dist/lib/docs/content-schemas.d.ts.map +1 -0
  59. package/dist/lib/docs/content-schemas.js +617 -0
  60. package/dist/lib/docs/describe-content-api.d.ts +22 -0
  61. package/dist/lib/docs/describe-content-api.d.ts.map +1 -0
  62. package/dist/lib/docs/describe-content-api.js +173 -0
  63. package/dist/lib/docs/field-schema.d.ts +28 -0
  64. package/dist/lib/docs/field-schema.d.ts.map +1 -0
  65. package/dist/lib/docs/field-schema.js +214 -0
  66. package/dist/lib/entries/application/use-cases/bulk-publish-entries.use-case.d.ts +23 -0
  67. package/dist/lib/entries/application/use-cases/bulk-publish-entries.use-case.d.ts.map +1 -0
  68. package/dist/lib/entries/application/use-cases/bulk-publish-entries.use-case.js +77 -0
  69. package/dist/lib/entries/application/use-cases/bulk-unpublish-entries.use-case.d.ts +23 -0
  70. package/dist/lib/entries/application/use-cases/bulk-unpublish-entries.use-case.d.ts.map +1 -0
  71. package/dist/lib/entries/application/use-cases/bulk-unpublish-entries.use-case.js +66 -0
  72. package/dist/lib/entries/application/use-cases/publish-entry.use-case.d.ts +43 -0
  73. package/dist/lib/entries/application/use-cases/publish-entry.use-case.d.ts.map +1 -0
  74. package/dist/lib/entries/application/use-cases/publish-entry.use-case.js +106 -0
  75. package/dist/lib/entries/application/use-cases/unpublish-entry.use-case.d.ts +30 -0
  76. package/dist/lib/entries/application/use-cases/unpublish-entry.use-case.d.ts.map +1 -0
  77. package/dist/lib/entries/application/use-cases/unpublish-entry.use-case.js +70 -0
  78. package/dist/lib/entries/controllers/bulk-entries.controller.d.ts +26 -0
  79. package/dist/lib/entries/controllers/bulk-entries.controller.d.ts.map +1 -0
  80. package/dist/lib/entries/controllers/create-entry.controller.d.ts +20 -0
  81. package/dist/lib/entries/controllers/create-entry.controller.d.ts.map +1 -0
  82. package/dist/lib/entries/controllers/delete-entry.controller.d.ts +24 -0
  83. package/dist/lib/entries/controllers/delete-entry.controller.d.ts.map +1 -0
  84. package/dist/lib/entries/controllers/get-entry.controller.d.ts +34 -0
  85. package/dist/lib/entries/controllers/get-entry.controller.d.ts.map +1 -0
  86. package/dist/lib/entries/controllers/list-entries.controller.d.ts +20 -0
  87. package/dist/lib/entries/controllers/list-entries.controller.d.ts.map +1 -0
  88. package/dist/lib/entries/controllers/publish-entry.controller.d.ts +19 -0
  89. package/dist/lib/entries/controllers/publish-entry.controller.d.ts.map +1 -0
  90. package/dist/lib/entries/controllers/resolve-type.d.ts +9 -0
  91. package/dist/lib/entries/controllers/resolve-type.d.ts.map +1 -0
  92. package/dist/lib/entries/controllers/update-entry.controller.d.ts +18 -0
  93. package/dist/lib/entries/controllers/update-entry.controller.d.ts.map +1 -0
  94. package/dist/lib/entries/domain/entry-publish-blocked.error.d.ts +13 -0
  95. package/dist/lib/entries/domain/entry-publish-blocked.error.d.ts.map +1 -0
  96. package/dist/lib/entries/domain/entry-publish-blocked.error.js +19 -0
  97. package/dist/lib/entries/domain/entry.d.ts +71 -0
  98. package/dist/lib/entries/domain/entry.d.ts.map +1 -0
  99. package/dist/lib/entries/domain/entry.js +90 -0
  100. package/dist/lib/entries/domain/events/entry-events.d.ts +67 -0
  101. package/dist/lib/entries/domain/events/entry-events.d.ts.map +1 -0
  102. package/dist/lib/entries/domain/events/entry-events.js +100 -0
  103. package/dist/lib/entries/dto/bulk-ids.dto.d.ts +11 -0
  104. package/dist/lib/entries/dto/bulk-ids.dto.d.ts.map +1 -0
  105. package/dist/lib/entries/dto/list-entries-query.dto.d.ts +46 -0
  106. package/dist/lib/entries/dto/list-entries-query.dto.d.ts.map +1 -0
  107. package/dist/lib/entries/dto/relation-delta-map.validator.d.ts +19 -0
  108. package/dist/lib/entries/dto/relation-delta-map.validator.d.ts.map +1 -0
  109. package/dist/lib/entries/dto/save-entry.dto.d.ts +46 -0
  110. package/dist/lib/entries/dto/save-entry.dto.d.ts.map +1 -0
  111. package/dist/lib/entries/entries.constants.d.ts +19 -0
  112. package/dist/lib/entries/entries.constants.d.ts.map +1 -0
  113. package/dist/lib/entries/entries.constants.js +21 -0
  114. package/dist/lib/entries/http/controllers/bulk-entries.controller.d.ts +33 -0
  115. package/dist/lib/entries/http/controllers/bulk-entries.controller.d.ts.map +1 -0
  116. package/dist/lib/entries/http/controllers/bulk-entries.controller.js +143 -0
  117. package/dist/lib/entries/http/controllers/create-entry.controller.d.ts +21 -0
  118. package/dist/lib/entries/http/controllers/create-entry.controller.d.ts.map +1 -0
  119. package/dist/lib/entries/http/controllers/create-entry.controller.js +52 -0
  120. package/dist/lib/entries/http/controllers/delete-entry.controller.d.ts +25 -0
  121. package/dist/lib/entries/http/controllers/delete-entry.controller.d.ts.map +1 -0
  122. package/dist/lib/entries/http/controllers/delete-entry.controller.js +84 -0
  123. package/dist/lib/entries/http/controllers/get-entry.controller.d.ts +44 -0
  124. package/dist/lib/entries/http/controllers/get-entry.controller.d.ts.map +1 -0
  125. package/dist/lib/entries/http/controllers/get-entry.controller.js +124 -0
  126. package/dist/lib/entries/http/controllers/list-entries.controller.d.ts +20 -0
  127. package/dist/lib/entries/http/controllers/list-entries.controller.d.ts.map +1 -0
  128. package/dist/lib/entries/http/controllers/list-entries.controller.js +52 -0
  129. package/dist/lib/entries/http/controllers/publish-entry.controller.d.ts +22 -0
  130. package/dist/lib/entries/http/controllers/publish-entry.controller.d.ts.map +1 -0
  131. package/dist/lib/entries/http/controllers/publish-entry.controller.js +68 -0
  132. package/dist/lib/entries/http/controllers/resolve-type.d.ts +9 -0
  133. package/dist/lib/entries/http/controllers/resolve-type.d.ts.map +1 -0
  134. package/dist/lib/entries/http/controllers/resolve-type.js +16 -0
  135. package/dist/lib/entries/http/controllers/to-actor.d.ts +13 -0
  136. package/dist/lib/entries/http/controllers/to-actor.d.ts.map +1 -0
  137. package/dist/lib/entries/http/controllers/to-actor.js +15 -0
  138. package/dist/lib/entries/http/controllers/update-entry.controller.d.ts +19 -0
  139. package/dist/lib/entries/http/controllers/update-entry.controller.d.ts.map +1 -0
  140. package/dist/lib/entries/http/controllers/update-entry.controller.js +51 -0
  141. package/dist/lib/entries/http/dto/bulk-ids.dto.d.ts +11 -0
  142. package/dist/lib/entries/http/dto/bulk-ids.dto.d.ts.map +1 -0
  143. package/dist/lib/entries/http/dto/bulk-ids.dto.js +33 -0
  144. package/dist/lib/entries/http/dto/list-entries-query.dto.d.ts +66 -0
  145. package/dist/lib/entries/http/dto/list-entries-query.dto.d.ts.map +1 -0
  146. package/dist/lib/entries/http/dto/list-entries-query.dto.js +192 -0
  147. package/dist/lib/entries/http/dto/relation-delta-map.validator.d.ts +30 -0
  148. package/dist/lib/entries/http/dto/relation-delta-map.validator.d.ts.map +1 -0
  149. package/dist/lib/entries/http/dto/relation-delta-map.validator.js +102 -0
  150. package/dist/lib/entries/http/dto/save-entry.dto.d.ts +48 -0
  151. package/dist/lib/entries/http/dto/save-entry.dto.d.ts.map +1 -0
  152. package/dist/lib/entries/http/dto/save-entry.dto.js +120 -0
  153. package/dist/lib/entries/http/guards/content-grant.guard.d.ts +37 -0
  154. package/dist/lib/entries/http/guards/content-grant.guard.d.ts.map +1 -0
  155. package/dist/lib/entries/http/guards/content-grant.guard.js +67 -0
  156. package/dist/lib/entries/infrastructure/persistence/bulk-publish-verdicts.d.ts +22 -0
  157. package/dist/lib/entries/infrastructure/persistence/bulk-publish-verdicts.d.ts.map +1 -0
  158. package/dist/lib/entries/infrastructure/persistence/bulk-publish-verdicts.js +81 -0
  159. package/dist/lib/entries/infrastructure/persistence/entry-counter.service.d.ts +42 -0
  160. package/dist/lib/entries/infrastructure/persistence/entry-counter.service.d.ts.map +1 -0
  161. package/dist/lib/entries/infrastructure/persistence/entry-counter.service.js +73 -0
  162. package/dist/lib/entries/infrastructure/persistence/entry-row.d.ts +56 -0
  163. package/dist/lib/entries/infrastructure/persistence/entry-row.d.ts.map +1 -0
  164. package/dist/lib/entries/infrastructure/persistence/entry-row.js +185 -0
  165. package/dist/lib/entries/infrastructure/persistence/entry-writer.service.d.ts +392 -0
  166. package/dist/lib/entries/infrastructure/persistence/entry-writer.service.d.ts.map +1 -0
  167. package/dist/lib/entries/infrastructure/persistence/entry-writer.service.js +1223 -0
  168. package/dist/lib/entries/infrastructure/persistence/field-selection.d.ts +24 -0
  169. package/dist/lib/entries/infrastructure/persistence/field-selection.d.ts.map +1 -0
  170. package/dist/lib/entries/infrastructure/persistence/media-accept.d.ts +23 -0
  171. package/dist/lib/entries/infrastructure/persistence/media-accept.d.ts.map +1 -0
  172. package/dist/lib/entries/infrastructure/persistence/media-accept.js +55 -0
  173. package/dist/lib/entries/infrastructure/persistence/relation-link.service.d.ts +327 -0
  174. package/dist/lib/entries/infrastructure/persistence/relation-link.service.d.ts.map +1 -0
  175. package/dist/lib/entries/infrastructure/persistence/relation-link.service.js +1008 -0
  176. package/dist/lib/entries/infrastructure/queries/bulk-publish-preview.query.d.ts +19 -0
  177. package/dist/lib/entries/infrastructure/queries/bulk-publish-preview.query.d.ts.map +1 -0
  178. package/dist/lib/entries/infrastructure/queries/bulk-publish-preview.query.js +39 -0
  179. package/dist/lib/entries/infrastructure/queries/entries.service.d.ts +64 -0
  180. package/dist/lib/entries/infrastructure/queries/entries.service.d.ts.map +1 -0
  181. package/dist/lib/entries/infrastructure/queries/entries.service.js +202 -0
  182. package/dist/lib/entries/infrastructure/queries/entry-filter-schema.d.ts +40 -0
  183. package/dist/lib/entries/infrastructure/queries/entry-filter-schema.d.ts.map +1 -0
  184. package/dist/lib/entries/infrastructure/queries/entry-filter-surface.d.ts +38 -0
  185. package/dist/lib/entries/infrastructure/queries/entry-filter-surface.d.ts.map +1 -0
  186. package/dist/lib/entries/infrastructure/queries/entry-filter-surface.js +310 -0
  187. package/dist/lib/entries/infrastructure/queries/entry-scalar-fields.d.ts +25 -0
  188. package/dist/lib/entries/infrastructure/queries/entry-scalar-fields.d.ts.map +1 -0
  189. package/dist/lib/entries/infrastructure/queries/entry-scalar-fields.js +51 -0
  190. package/dist/lib/entries/infrastructure/queries/entry-search.d.ts +19 -0
  191. package/dist/lib/entries/infrastructure/queries/entry-search.d.ts.map +1 -0
  192. package/dist/lib/entries/infrastructure/queries/entry-search.js +52 -0
  193. package/dist/lib/entries/infrastructure/queries/media-refs.query.d.ts +21 -0
  194. package/dist/lib/entries/infrastructure/queries/media-refs.query.d.ts.map +1 -0
  195. package/dist/lib/entries/infrastructure/queries/media-refs.query.js +117 -0
  196. package/dist/lib/entries/services/entries.service.d.ts +59 -0
  197. package/dist/lib/entries/services/entries.service.d.ts.map +1 -0
  198. package/dist/lib/entries/services/entry-counter.service.d.ts +31 -0
  199. package/dist/lib/entries/services/entry-counter.service.d.ts.map +1 -0
  200. package/dist/lib/entries/services/entry-filter-schema.d.ts +32 -0
  201. package/dist/lib/entries/services/entry-filter-schema.d.ts.map +1 -0
  202. package/dist/lib/entries/services/entry-row.d.ts +56 -0
  203. package/dist/lib/entries/services/entry-row.d.ts.map +1 -0
  204. package/dist/lib/entries/services/entry-writer.service.d.ts +193 -0
  205. package/dist/lib/entries/services/entry-writer.service.d.ts.map +1 -0
  206. package/dist/lib/entries/services/relation-link.service.d.ts +115 -0
  207. package/dist/lib/entries/services/relation-link.service.d.ts.map +1 -0
  208. package/dist/lib/entries/types/bulk-publish.d.ts +75 -0
  209. package/dist/lib/entries/types/bulk-publish.d.ts.map +1 -0
  210. package/dist/lib/entries/types/bulk-publish.js +22 -0
  211. package/dist/lib/entries/types/entry-list-view.d.ts +205 -0
  212. package/dist/lib/entries/types/entry-list-view.d.ts.map +1 -0
  213. package/dist/lib/entries/types/entry-list-view.js +5 -0
  214. package/dist/lib/entries/types/filter-surface.d.ts +35 -0
  215. package/dist/lib/entries/types/filter-surface.d.ts.map +1 -0
  216. package/dist/lib/entries/types/filter-surface.js +2 -0
  217. package/dist/lib/extension/entry-extension-boot-check.d.ts +16 -0
  218. package/dist/lib/extension/entry-extension-boot-check.d.ts.map +1 -0
  219. package/dist/lib/extension/entry-extension-boot-check.js +42 -0
  220. package/dist/lib/extension/entry-extension.d.ts +225 -0
  221. package/dist/lib/extension/entry-extension.d.ts.map +1 -0
  222. package/dist/lib/extension/entry-extension.js +27 -0
  223. package/dist/lib/extension/media-asset-resolver.d.ts +85 -0
  224. package/dist/lib/extension/media-asset-resolver.d.ts.map +1 -0
  225. package/dist/lib/extension/media-asset-resolver.js +26 -0
  226. package/dist/lib/extension/per-locale-relation.d.ts +18 -0
  227. package/dist/lib/extension/per-locale-relation.d.ts.map +1 -0
  228. package/dist/lib/extension/relation-locale-sync.d.ts +62 -0
  229. package/dist/lib/extension/relation-locale-sync.d.ts.map +1 -0
  230. package/dist/lib/extension/relation-locale-sync.js +88 -0
  231. package/dist/lib/fields/index.d.ts +94 -0
  232. package/dist/lib/fields/index.d.ts.map +1 -0
  233. package/dist/lib/fields/index.js +203 -0
  234. package/dist/lib/insights/http/controllers/content-pipeline.controller.d.ts +16 -0
  235. package/dist/lib/insights/http/controllers/content-pipeline.controller.d.ts.map +1 -0
  236. package/dist/lib/insights/http/controllers/content-pipeline.controller.js +39 -0
  237. package/dist/lib/insights/http/controllers/content-punchcard.controller.d.ts +18 -0
  238. package/dist/lib/insights/http/controllers/content-punchcard.controller.d.ts.map +1 -0
  239. package/dist/lib/insights/http/controllers/content-punchcard.controller.js +42 -0
  240. package/dist/lib/insights/http/controllers/content-stale.controller.d.ts +17 -0
  241. package/dist/lib/insights/http/controllers/content-stale.controller.d.ts.map +1 -0
  242. package/dist/lib/insights/http/controllers/content-stale.controller.js +40 -0
  243. package/dist/lib/insights/http/controllers/content-totals.controller.d.ts +18 -0
  244. package/dist/lib/insights/http/controllers/content-totals.controller.d.ts.map +1 -0
  245. package/dist/lib/insights/http/controllers/content-totals.controller.js +42 -0
  246. package/dist/lib/insights/http/controllers/content-unshipped.controller.d.ts +17 -0
  247. package/dist/lib/insights/http/controllers/content-unshipped.controller.d.ts.map +1 -0
  248. package/dist/lib/insights/http/controllers/content-unshipped.controller.js +40 -0
  249. package/dist/lib/insights/http/controllers/content-velocity.controller.d.ts +17 -0
  250. package/dist/lib/insights/http/controllers/content-velocity.controller.d.ts.map +1 -0
  251. package/dist/lib/insights/http/controllers/content-velocity.controller.js +41 -0
  252. package/dist/lib/insights/http/dto/insights-range-query.dto.d.ts +15 -0
  253. package/dist/lib/insights/http/dto/insights-range-query.dto.d.ts.map +1 -0
  254. package/dist/lib/insights/http/dto/insights-range-query.dto.js +38 -0
  255. package/dist/lib/insights/infrastructure/queries/content-insights.query.d.ts +77 -0
  256. package/dist/lib/insights/infrastructure/queries/content-insights.query.d.ts.map +1 -0
  257. package/dist/lib/insights/infrastructure/queries/content-insights.query.js +380 -0
  258. package/dist/lib/insights/types/content-insights-view.d.ts +134 -0
  259. package/dist/lib/insights/types/content-insights-view.d.ts.map +1 -0
  260. package/dist/lib/insights/types/content-insights-view.js +10 -0
  261. package/dist/lib/mcp/content-tools.provider.d.ts +83 -0
  262. package/dist/lib/mcp/content-tools.provider.d.ts.map +1 -0
  263. package/dist/lib/mcp/content-tools.provider.js +441 -0
  264. package/dist/lib/mcp/tool-input.d.ts +43 -0
  265. package/dist/lib/mcp/tool-input.d.ts.map +1 -0
  266. package/dist/lib/mcp/tool-input.js +117 -0
  267. package/dist/lib/mcp/tool-schemas.d.ts +34 -0
  268. package/dist/lib/mcp/tool-schemas.d.ts.map +1 -0
  269. package/dist/lib/mcp/tool-schemas.js +282 -0
  270. package/dist/lib/public/controllers/get-public-entry.controller.d.ts +26 -0
  271. package/dist/lib/public/controllers/get-public-entry.controller.d.ts.map +1 -0
  272. package/dist/lib/public/controllers/list-public-entries.controller.d.ts +24 -0
  273. package/dist/lib/public/controllers/list-public-entries.controller.d.ts.map +1 -0
  274. package/dist/lib/public/controllers/public-schema.controller.d.ts +18 -0
  275. package/dist/lib/public/controllers/public-schema.controller.d.ts.map +1 -0
  276. package/dist/lib/public-api/http/api-token-request.d.ts +41 -0
  277. package/dist/lib/public-api/http/api-token-request.d.ts.map +1 -0
  278. package/dist/lib/public-api/http/api-token-request.js +2 -0
  279. package/dist/lib/public-api/http/controllers/public-content-types.controller.d.ts +31 -0
  280. package/dist/lib/public-api/http/controllers/public-content-types.controller.d.ts.map +1 -0
  281. package/dist/lib/public-api/http/controllers/public-content-types.controller.js +93 -0
  282. package/dist/lib/public-api/http/controllers/public-entries.controller.d.ts +101 -0
  283. package/dist/lib/public-api/http/controllers/public-entries.controller.d.ts.map +1 -0
  284. package/dist/lib/public-api/http/controllers/public-entries.controller.js +307 -0
  285. package/dist/lib/public-api/http/controllers/public-entry-writes.controller.d.ts +76 -0
  286. package/dist/lib/public-api/http/controllers/public-entry-writes.controller.d.ts.map +1 -0
  287. package/dist/lib/public-api/http/controllers/public-entry-writes.controller.js +353 -0
  288. package/dist/lib/public-api/http/controllers/resolve-granted-type.d.ts +42 -0
  289. package/dist/lib/public-api/http/controllers/resolve-granted-type.d.ts.map +1 -0
  290. package/dist/lib/public-api/http/controllers/resolve-granted-type.js +25 -0
  291. package/dist/lib/public-api/http/decorators/current-api-token.decorator.d.ts +8 -0
  292. package/dist/lib/public-api/http/decorators/current-api-token.decorator.d.ts.map +1 -0
  293. package/dist/lib/public-api/http/decorators/current-api-token.decorator.js +17 -0
  294. package/dist/lib/public-api/http/dto/public-bulk.dto.d.ts +58 -0
  295. package/dist/lib/public-api/http/dto/public-bulk.dto.d.ts.map +1 -0
  296. package/dist/lib/public-api/http/dto/public-bulk.dto.js +118 -0
  297. package/dist/lib/public-api/http/dto/public-list-entries-query.dto.d.ts +106 -0
  298. package/dist/lib/public-api/http/dto/public-list-entries-query.dto.d.ts.map +1 -0
  299. package/dist/lib/public-api/http/dto/public-list-entries-query.dto.js +297 -0
  300. package/dist/lib/public-api/http/dto/public-save-entry.dto.d.ts +39 -0
  301. package/dist/lib/public-api/http/dto/public-save-entry.dto.d.ts.map +1 -0
  302. package/dist/lib/public-api/http/dto/public-save-entry.dto.js +112 -0
  303. package/dist/lib/public-api/http/guards/api-token-workspace.guard.d.ts +25 -0
  304. package/dist/lib/public-api/http/guards/api-token-workspace.guard.d.ts.map +1 -0
  305. package/dist/lib/public-api/http/guards/api-token-workspace.guard.js +58 -0
  306. package/dist/lib/public-api/http/guards/api-token.guard.d.ts +32 -0
  307. package/dist/lib/public-api/http/guards/api-token.guard.d.ts.map +1 -0
  308. package/dist/lib/public-api/http/guards/api-token.guard.js +92 -0
  309. package/dist/lib/public-api/http/guards/draft-visibility.guard.d.ts +25 -0
  310. package/dist/lib/public-api/http/guards/draft-visibility.guard.d.ts.map +1 -0
  311. package/dist/lib/public-api/http/guards/draft-visibility.guard.js +56 -0
  312. package/dist/lib/public-api/infrastructure/bulk-save-op.d.ts +55 -0
  313. package/dist/lib/public-api/infrastructure/bulk-save-op.d.ts.map +1 -0
  314. package/dist/lib/public-api/infrastructure/bulk-save-op.js +61 -0
  315. package/dist/lib/public-api/infrastructure/field-selection.d.ts +21 -0
  316. package/dist/lib/public-api/infrastructure/field-selection.d.ts.map +1 -0
  317. package/dist/lib/public-api/infrastructure/field-selection.js +72 -0
  318. package/dist/lib/public-api/infrastructure/public-entries.query.d.ts +248 -0
  319. package/dist/lib/public-api/infrastructure/public-entries.query.d.ts.map +1 -0
  320. package/dist/lib/public-api/infrastructure/public-entries.query.js +557 -0
  321. package/dist/lib/public-api/infrastructure/public-entry-row.d.ts +31 -0
  322. package/dist/lib/public-api/infrastructure/public-entry-row.d.ts.map +1 -0
  323. package/dist/lib/public-api/infrastructure/public-entry-row.js +76 -0
  324. package/dist/lib/public-api/infrastructure/public-entry-writes.service.d.ts +188 -0
  325. package/dist/lib/public-api/infrastructure/public-entry-writes.service.d.ts.map +1 -0
  326. package/dist/lib/public-api/infrastructure/public-entry-writes.service.js +321 -0
  327. package/dist/lib/public-api/infrastructure/public-expansion.query.d.ts +98 -0
  328. package/dist/lib/public-api/infrastructure/public-expansion.query.d.ts.map +1 -0
  329. package/dist/lib/public-api/infrastructure/public-expansion.query.js +384 -0
  330. package/dist/lib/public-api/types/public-bulk.d.ts +77 -0
  331. package/dist/lib/public-api/types/public-bulk.d.ts.map +1 -0
  332. package/dist/lib/public-api/types/public-bulk.js +23 -0
  333. package/dist/lib/public-api/types/public-entry.d.ts +97 -0
  334. package/dist/lib/public-api/types/public-entry.d.ts.map +1 -0
  335. package/dist/lib/public-api/types/public-entry.js +8 -0
  336. package/dist/lib/public-api/types/public-expansion.d.ts +92 -0
  337. package/dist/lib/public-api/types/public-expansion.d.ts.map +1 -0
  338. package/dist/lib/public-api/types/public-expansion.js +2 -0
  339. package/dist/lib/registry/content-type-registry.d.ts +103 -0
  340. package/dist/lib/registry/content-type-registry.d.ts.map +1 -0
  341. package/dist/lib/registry/content-type-registry.js +155 -0
  342. package/dist/lib/revisions/application/ports/revision-store.d.ts +71 -0
  343. package/dist/lib/revisions/application/ports/revision-store.d.ts.map +1 -0
  344. package/dist/lib/revisions/application/ports/revision-store.js +9 -0
  345. package/dist/lib/revisions/application/use-cases/publish-revision.use-case.d.ts +40 -0
  346. package/dist/lib/revisions/application/use-cases/publish-revision.use-case.d.ts.map +1 -0
  347. package/dist/lib/revisions/application/use-cases/publish-revision.use-case.js +66 -0
  348. package/dist/lib/revisions/application/use-cases/restore-revision.use-case.d.ts +36 -0
  349. package/dist/lib/revisions/application/use-cases/restore-revision.use-case.d.ts.map +1 -0
  350. package/dist/lib/revisions/application/use-cases/restore-revision.use-case.js +57 -0
  351. package/dist/lib/revisions/domain/revision-status.d.ts +18 -0
  352. package/dist/lib/revisions/domain/revision-status.d.ts.map +1 -0
  353. package/dist/lib/revisions/domain/revision-status.js +18 -0
  354. package/dist/lib/revisions/domain/revision.d.ts +80 -0
  355. package/dist/lib/revisions/domain/revision.d.ts.map +1 -0
  356. package/dist/lib/revisions/domain/revision.js +84 -0
  357. package/dist/lib/revisions/http/controllers/publish-revision.controller.d.ts +19 -0
  358. package/dist/lib/revisions/http/controllers/publish-revision.controller.d.ts.map +1 -0
  359. package/dist/lib/revisions/http/controllers/publish-revision.controller.js +51 -0
  360. package/dist/lib/revisions/http/controllers/restore-revision.controller.d.ts +17 -0
  361. package/dist/lib/revisions/http/controllers/restore-revision.controller.d.ts.map +1 -0
  362. package/dist/lib/revisions/http/controllers/restore-revision.controller.js +49 -0
  363. package/dist/lib/revisions/http/controllers/revisions.controller.d.ts +20 -0
  364. package/dist/lib/revisions/http/controllers/revisions.controller.d.ts.map +1 -0
  365. package/dist/lib/revisions/http/controllers/revisions.controller.js +76 -0
  366. package/dist/lib/revisions/infrastructure/persistence/drizzle-revision.store.d.ts +33 -0
  367. package/dist/lib/revisions/infrastructure/persistence/drizzle-revision.store.d.ts.map +1 -0
  368. package/dist/lib/revisions/infrastructure/persistence/drizzle-revision.store.js +174 -0
  369. package/dist/lib/revisions/infrastructure/persistence/revision-snapshot.d.ts +17 -0
  370. package/dist/lib/revisions/infrastructure/persistence/revision-snapshot.d.ts.map +1 -0
  371. package/dist/lib/revisions/infrastructure/persistence/revision-snapshot.js +20 -0
  372. package/dist/lib/revisions/infrastructure/persistence/revision-table.d.ts +228 -0
  373. package/dist/lib/revisions/infrastructure/persistence/revision-table.d.ts.map +1 -0
  374. package/dist/lib/revisions/infrastructure/persistence/revision-table.js +57 -0
  375. package/dist/lib/revisions/infrastructure/queries/revision-refs.query.d.ts +22 -0
  376. package/dist/lib/revisions/infrastructure/queries/revision-refs.query.d.ts.map +1 -0
  377. package/dist/lib/revisions/infrastructure/queries/revision-refs.query.js +66 -0
  378. package/dist/lib/revisions/revisions.constants.d.ts +10 -0
  379. package/dist/lib/revisions/revisions.constants.d.ts.map +1 -0
  380. package/dist/lib/revisions/revisions.constants.js +12 -0
  381. package/dist/lib/revisions/types/revision-view.d.ts +74 -0
  382. package/dist/lib/revisions/types/revision-view.d.ts.map +1 -0
  383. package/dist/lib/revisions/types/revision-view.js +2 -0
  384. package/dist/lib/types/content-type.d.ts +131 -0
  385. package/dist/lib/types/content-type.d.ts.map +1 -0
  386. package/dist/lib/types/content-type.js +28 -0
  387. package/dist/lib/types/fields.d.ts +303 -0
  388. package/dist/lib/types/fields.d.ts.map +1 -0
  389. package/dist/lib/types/fields.js +52 -0
  390. package/dist/lib/utils/content-plugin.d.ts +35 -0
  391. package/dist/lib/utils/content-plugin.d.ts.map +1 -0
  392. package/dist/lib/utils/content-plugin.js +35 -0
  393. package/dist/lib/validation/services/entry-validation.service.d.ts +24 -0
  394. package/dist/lib/validation/services/entry-validation.service.d.ts.map +1 -0
  395. package/dist/lib/validation/services/entry-validation.service.js +35 -0
  396. package/package.json +54 -0
@@ -0,0 +1,617 @@
1
+ "use strict";
2
+ /**
3
+ * The OpenAPI schemas this plugin contributes: one set **per registered content
4
+ * type** (generated from the registry) plus the fixed shapes its routes share.
5
+ *
6
+ * Content types are code-defined runtime data, not decorated classes, so
7
+ * `@nestjs/swagger` cannot see them. This module is how they become visible.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.ref = ref;
11
+ exports.pascalCase = pascalCase;
12
+ exports.schemaNamesOf = schemaNamesOf;
13
+ exports.buildContentSchemas = buildContentSchemas;
14
+ const content_type_1 = require("../types/content-type");
15
+ const revision_status_1 = require("../revisions/domain/revision-status");
16
+ const field_schema_1 = require("./field-schema");
17
+ const UUID = { type: 'string', format: 'uuid' };
18
+ const DATE_TIME = { type: 'string', format: 'date-time' };
19
+ /** `#/components/schemas/<name>`. */
20
+ function ref(name) {
21
+ return { $ref: `#/components/schemas/${name}` };
22
+ }
23
+ /**
24
+ * `article` → `Article`, `seo_meta` → `SeoMeta`. Content-type names are
25
+ * snake_case machine names; schema names are the PascalCase convention the rest
26
+ * of the document uses.
27
+ */
28
+ function pascalCase(name) {
29
+ return name
30
+ .split(/[^a-zA-Z0-9]+/)
31
+ .filter(Boolean)
32
+ .map((part) => part[0].toUpperCase() + part.slice(1))
33
+ .join('');
34
+ }
35
+ /** The three schema names a content type contributes. */
36
+ function schemaNamesOf(type) {
37
+ const base = pascalCase(type.name);
38
+ return {
39
+ values: `${base}Values`,
40
+ entry: `${base}Entry`,
41
+ listPage: `${base}ListPage`
42
+ };
43
+ }
44
+ /** A one-line summary of a type's envelope flags, for the schema description. */
45
+ function envelopeNote(type) {
46
+ const traits = [
47
+ type.publishable ? 'publishable (`status` + `publishedAt`)' : null,
48
+ type.paranoid ? 'soft-deleted (`?deleted=only` lists the trash)' : null,
49
+ type.i18n
50
+ ? 'localized (one row per locale, `localeGroupId` shared)'
51
+ : null
52
+ ].filter(Boolean);
53
+ return traits.length ? ` This type is ${traits.join(', ')}.` : '';
54
+ }
55
+ /** The `values` bag of one content type. */
56
+ function valuesSchema(type) {
57
+ const fields = type.fields.filter(field_schema_1.isValueField);
58
+ const linkManaged = type.fields
59
+ .filter((field) => !(0, field_schema_1.isValueField)(field))
60
+ .map((field) => field.name);
61
+ const properties = {};
62
+ for (const field of fields) {
63
+ properties[field.name] = (0, field_schema_1.fieldSchema)(field);
64
+ }
65
+ // A publishable type's required fields are required *to publish*, not to
66
+ // save — a draft may legitimately be incomplete — so they are only listed
67
+ // as `required` on a type that is always live.
68
+ const required = type.publishable
69
+ ? []
70
+ : fields.filter((field) => field.required).map((field) => field.name);
71
+ const notes = [
72
+ `Field values keyed by field name, for one \`${type.name}\` entry.`,
73
+ type.publishable
74
+ ? 'Fields marked required in the content type are required **to publish**, not to save, so a draft may omit them.'
75
+ : '',
76
+ linkManaged.length
77
+ ? `Link-managed relations (${linkManaged
78
+ .map((name) => `\`${name}\``)
79
+ .join(', ')}) are not part of this bag — their links live in join tables; read them via \`/relations\` and write them with the \`relations\` delta on a save.`
80
+ : ''
81
+ ].filter(Boolean);
82
+ return {
83
+ type: 'object',
84
+ title: `${type.label} values`,
85
+ description: notes.join(' '),
86
+ properties,
87
+ ...(required.length ? { required } : {}),
88
+ additionalProperties: false
89
+ };
90
+ }
91
+ /** One entry of a content type: the storage envelope plus its values. */
92
+ function entrySchema(type, names) {
93
+ const properties = {
94
+ id: { ...UUID, description: 'Entry id.' },
95
+ ...(type.publishable
96
+ ? {
97
+ status: {
98
+ type: 'string',
99
+ enum: Object.values(content_type_1.ENTRY_STATUS),
100
+ description: 'Publish state.'
101
+ },
102
+ publishedAt: {
103
+ ...DATE_TIME,
104
+ nullable: true,
105
+ description: 'When this entry last went live, or `null` if it never has. Survives an edit, so `draft` + a `publishedAt` means "live content with unpublished changes".'
106
+ }
107
+ }
108
+ : {}),
109
+ ...(type.i18n
110
+ ? {
111
+ locale: {
112
+ type: 'string',
113
+ description: 'Locale slug of this row.'
114
+ },
115
+ localeGroupId: {
116
+ ...UUID,
117
+ description: 'Translation group — the sibling rows of this entry in other locales share it.'
118
+ }
119
+ }
120
+ : {}),
121
+ createdAt: DATE_TIME,
122
+ updatedAt: DATE_TIME,
123
+ values: ref(names.values),
124
+ relations: {
125
+ type: 'object',
126
+ additionalProperties: ref('RelationFieldPage'),
127
+ description: 'Capped relation preview, keyed by relation field — present only with `?relations=preview&relationFields=…`.'
128
+ }
129
+ };
130
+ return {
131
+ type: 'object',
132
+ title: type.label,
133
+ description: `One \`${type.name}\` entry.${envelopeNote(type)}`,
134
+ properties,
135
+ required: [
136
+ 'id',
137
+ 'createdAt',
138
+ 'updatedAt',
139
+ 'values',
140
+ ...(type.publishable ? ['status'] : []),
141
+ ...(type.i18n ? ['locale', 'localeGroupId'] : [])
142
+ ]
143
+ };
144
+ }
145
+ /** One page of a content type's entries. */
146
+ function listPageSchema(type, names) {
147
+ return {
148
+ type: 'object',
149
+ title: `${type.label} page`,
150
+ description: `One page of \`${type.name}\` entries. \`total\` is the count across all pages.`,
151
+ properties: {
152
+ items: { type: 'array', items: ref(names.entry) },
153
+ total: { type: 'integer' },
154
+ page: { type: 'integer' },
155
+ pageSize: { type: 'integer' }
156
+ },
157
+ required: ['items', 'total', 'page', 'pageSize']
158
+ };
159
+ }
160
+ /**
161
+ * The shapes every content route shares, whatever the type — relation/media
162
+ * refs, the bulk results, revisions, and the content-schema read models.
163
+ */
164
+ function sharedSchemas() {
165
+ return {
166
+ RelationRef: {
167
+ type: 'object',
168
+ description: 'One linked record, resolved for display. A link whose target cannot be resolved (soft-deleted, or outside the workspace) is returned id-only and flagged `missing`, so `items` never runs shorter than `total`.',
169
+ properties: {
170
+ id: UUID,
171
+ title: {
172
+ type: 'string',
173
+ description: 'Display title (first text/select field, else the id).'
174
+ },
175
+ slug: {
176
+ type: 'string',
177
+ description: "The target's slug-field value, when it has one."
178
+ },
179
+ status: {
180
+ type: 'string',
181
+ enum: Object.values(content_type_1.ENTRY_STATUS),
182
+ description: 'Only for a publishable target type.'
183
+ },
184
+ missing: {
185
+ type: 'boolean',
186
+ description: 'The target could not be resolved.'
187
+ }
188
+ },
189
+ required: ['id', 'title']
190
+ },
191
+ MediaRef: {
192
+ type: 'object',
193
+ description: 'One attached asset, resolved for display. Mirrors `RelationRef`: an unresolvable asset is id-only and flagged `missing`.',
194
+ properties: {
195
+ id: UUID,
196
+ name: { type: 'string' },
197
+ url: {
198
+ type: 'string',
199
+ description: 'Raw-stream route for the original bytes.'
200
+ },
201
+ thumbUrl: {
202
+ type: 'string',
203
+ description: '~320px derivative, when one was generated (absent for non-images, SVGs, and images too small to derive).'
204
+ },
205
+ previewUrl: {
206
+ type: 'string',
207
+ description: '~1280px derivative, same caveats as `thumbUrl`.'
208
+ },
209
+ kind: {
210
+ type: 'string',
211
+ description: 'Coarse kind — image/video/audio/document/archive.'
212
+ },
213
+ mimeType: { type: 'string' },
214
+ alt: { type: 'string', nullable: true },
215
+ missing: { type: 'boolean' }
216
+ },
217
+ required: ['id', 'name', 'url', 'kind', 'mimeType']
218
+ },
219
+ RelationFieldPage: {
220
+ type: 'object',
221
+ description: "One relation field's links: a windowed page of refs plus the total across the whole set.",
222
+ properties: {
223
+ items: { type: 'array', items: ref('RelationRef') },
224
+ total: { type: 'integer' }
225
+ },
226
+ required: ['items', 'total']
227
+ },
228
+ EntryRelations: {
229
+ type: 'object',
230
+ description: "Every relation field's first page of links, keyed by field name.",
231
+ properties: {
232
+ relations: {
233
+ type: 'object',
234
+ additionalProperties: ref('RelationFieldPage')
235
+ }
236
+ },
237
+ required: ['relations']
238
+ },
239
+ EntryMedia: {
240
+ type: 'object',
241
+ description: "Every media field's attached assets, keyed by field name. Empty when no media resolver is bound.",
242
+ properties: {
243
+ media: {
244
+ type: 'object',
245
+ additionalProperties: {
246
+ type: 'array',
247
+ items: ref('MediaRef')
248
+ }
249
+ }
250
+ },
251
+ required: ['media']
252
+ },
253
+ ValidationIssue: {
254
+ type: 'object',
255
+ description: 'One field-level validation failure (the body of a 422).',
256
+ properties: {
257
+ field: { type: 'string' },
258
+ message: { type: 'string' }
259
+ },
260
+ required: ['field', 'message']
261
+ },
262
+ BulkPublishCheck: {
263
+ type: 'object',
264
+ description: "One field's publish-gate check — passed fields included, so the admin can show a full checklist.",
265
+ properties: {
266
+ field: { type: 'string' },
267
+ label: { type: 'string' },
268
+ ok: { type: 'boolean' },
269
+ message: {
270
+ type: 'string',
271
+ description: 'The failure message when `ok` is false.'
272
+ }
273
+ },
274
+ required: ['field', 'label', 'ok']
275
+ },
276
+ BulkPublishVerdict: {
277
+ type: 'object',
278
+ properties: {
279
+ id: UUID,
280
+ title: { type: 'string' },
281
+ status: {
282
+ type: 'string',
283
+ enum: Object.values(content_type_1.ENTRY_STATUS),
284
+ nullable: true,
285
+ description: 'Current publish state, or `null` when not found.'
286
+ },
287
+ verdict: {
288
+ type: 'string',
289
+ enum: [
290
+ 'publishable',
291
+ 'already-published',
292
+ 'blocked',
293
+ 'not-found'
294
+ ]
295
+ },
296
+ issues: { type: 'array', items: ref('ValidationIssue') },
297
+ checks: { type: 'array', items: ref('BulkPublishCheck') }
298
+ },
299
+ required: ['id', 'title', 'status', 'verdict', 'issues', 'checks']
300
+ },
301
+ BulkPublishPreview: {
302
+ type: 'object',
303
+ description: 'Dry run: one verdict per requested id, in request order.',
304
+ properties: {
305
+ items: { type: 'array', items: ref('BulkPublishVerdict') }
306
+ },
307
+ required: ['items']
308
+ },
309
+ BulkPublishResult: {
310
+ type: 'object',
311
+ description: 'The committed publish — partial success is normal: only the valid drafts transition.',
312
+ properties: {
313
+ published: {
314
+ type: 'array',
315
+ items: UUID,
316
+ description: 'Ids actually transitioned to published.'
317
+ },
318
+ skipped: {
319
+ type: 'array',
320
+ description: 'Ids left untouched, with why.',
321
+ items: {
322
+ type: 'object',
323
+ properties: {
324
+ id: UUID,
325
+ reason: {
326
+ type: 'string',
327
+ enum: [
328
+ 'publishable',
329
+ 'already-published',
330
+ 'blocked',
331
+ 'not-found'
332
+ ]
333
+ }
334
+ },
335
+ required: ['id', 'reason']
336
+ }
337
+ }
338
+ },
339
+ required: ['published', 'skipped']
340
+ },
341
+ BulkActionResult: {
342
+ type: 'object',
343
+ description: 'How many rows the bulk action changed.',
344
+ properties: { count: { type: 'integer' } },
345
+ required: ['count']
346
+ },
347
+ BulkSaveError: {
348
+ type: 'object',
349
+ description: 'Why one item of a bulk save did not go through — the status and message the same write would have returned on its own.',
350
+ properties: {
351
+ status: { type: 'integer' },
352
+ message: { type: 'string' },
353
+ issues: {
354
+ type: 'array',
355
+ items: ref('ValidationIssue'),
356
+ description: 'Present on a 422.'
357
+ }
358
+ },
359
+ required: ['status', 'message']
360
+ },
361
+ BulkSaveItemResult: {
362
+ type: 'object',
363
+ description: 'What became of one submitted item, at the position it was sent in.',
364
+ properties: {
365
+ index: {
366
+ type: 'integer',
367
+ description: '0-based position in the submitted `items`.'
368
+ },
369
+ op: { type: 'string', enum: ['create', 'update'] },
370
+ ok: { type: 'boolean' },
371
+ entry: {
372
+ type: 'object',
373
+ additionalProperties: true,
374
+ description: 'The saved entry, in the same shape a single-entry write returns. Absent when `ok` is false.'
375
+ },
376
+ error: ref('BulkSaveError')
377
+ },
378
+ required: ['index', 'op', 'ok']
379
+ },
380
+ BulkSaveResult: {
381
+ type: 'object',
382
+ description: 'One verdict per submitted item, in request order, plus the tallies. Partial success is the contract — the call is a 200 whether or not every item saved.',
383
+ properties: {
384
+ items: { type: 'array', items: ref('BulkSaveItemResult') },
385
+ created: { type: 'integer' },
386
+ updated: { type: 'integer' },
387
+ failed: { type: 'integer' }
388
+ },
389
+ required: ['items', 'created', 'updated', 'failed']
390
+ },
391
+ RevisionSnapshot: {
392
+ type: 'object',
393
+ description: 'The captured document — the values bag plus the ordered link sets that never travel in it.',
394
+ properties: {
395
+ values: { type: 'object', additionalProperties: true },
396
+ relations: {
397
+ type: 'object',
398
+ additionalProperties: { type: 'array', items: UUID }
399
+ }
400
+ },
401
+ required: ['values', 'relations']
402
+ },
403
+ RevisionSummary: {
404
+ type: 'object',
405
+ description: 'One version in an entry’s timeline, without its body.',
406
+ properties: {
407
+ id: UUID,
408
+ number: {
409
+ type: 'integer',
410
+ description: 'Monotonic version number within the entry (1-based).'
411
+ },
412
+ status: {
413
+ type: 'string',
414
+ enum: Object.values(revision_status_1.REVISION_STATUS)
415
+ },
416
+ isPublished: {
417
+ type: 'boolean',
418
+ description: "Whether this is the entry's current live version."
419
+ },
420
+ isLatest: { type: 'boolean' },
421
+ createdAt: DATE_TIME,
422
+ publishedAt: DATE_TIME,
423
+ authorId: UUID
424
+ },
425
+ required: [
426
+ 'id',
427
+ 'number',
428
+ 'status',
429
+ 'isPublished',
430
+ 'isLatest',
431
+ 'createdAt'
432
+ ]
433
+ },
434
+ RevisionList: {
435
+ type: 'object',
436
+ description: 'The version timeline, newest first.',
437
+ properties: {
438
+ items: { type: 'array', items: ref('RevisionSummary') },
439
+ total: { type: 'integer' }
440
+ },
441
+ required: ['items', 'total']
442
+ },
443
+ RevisionDetail: {
444
+ allOf: [
445
+ ref('RevisionSummary'),
446
+ {
447
+ type: 'object',
448
+ properties: {
449
+ snapshot: ref('RevisionSnapshot'),
450
+ relationRefs: {
451
+ type: 'object',
452
+ additionalProperties: {
453
+ type: 'array',
454
+ items: ref('RelationRef')
455
+ },
456
+ description: "Each relation field's snapshot ids resolved to display refs, capped per field."
457
+ },
458
+ relationTotals: {
459
+ type: 'object',
460
+ additionalProperties: { type: 'integer' },
461
+ description: 'True link count per relation field (may exceed the capped refs).'
462
+ },
463
+ mediaRefs: {
464
+ type: 'object',
465
+ additionalProperties: {
466
+ type: 'array',
467
+ items: ref('MediaRef')
468
+ }
469
+ }
470
+ },
471
+ required: ['snapshot']
472
+ }
473
+ ]
474
+ },
475
+ ContentTypeSummary: {
476
+ type: 'object',
477
+ description: 'A content type as the wizard sees it — identity and envelope flags, no fields.',
478
+ properties: {
479
+ name: {
480
+ type: 'string',
481
+ description: 'Machine name (the `typeName` segment).'
482
+ },
483
+ kind: { type: 'string', enum: ['collection', 'single'] },
484
+ label: { type: 'string' },
485
+ description: { type: 'string' },
486
+ path: {
487
+ type: 'string',
488
+ description: 'Route of a `single` page type.'
489
+ },
490
+ publishable: { type: 'boolean' },
491
+ paranoid: { type: 'boolean' },
492
+ i18n: { type: 'boolean' }
493
+ },
494
+ required: [
495
+ 'name',
496
+ 'kind',
497
+ 'label',
498
+ 'publishable',
499
+ 'paranoid',
500
+ 'i18n'
501
+ ]
502
+ },
503
+ ContentFieldSchema: {
504
+ type: 'object',
505
+ description: 'One field of a content type: its type, validation rules, and admin presentation props.',
506
+ properties: {
507
+ name: { type: 'string' },
508
+ type: {
509
+ type: 'string',
510
+ description: 'Field type — `text`, `relation`, `media`, …'
511
+ },
512
+ required: { type: 'boolean' },
513
+ localized: { type: 'boolean' },
514
+ validation: { type: 'object', additionalProperties: true },
515
+ admin: { type: 'object', additionalProperties: true },
516
+ options: { type: 'array', items: { type: 'string' } },
517
+ multiple: { type: 'boolean' },
518
+ accept: {
519
+ type: 'object',
520
+ properties: {
521
+ kinds: { type: 'array', items: { type: 'string' } },
522
+ mimeTypes: { type: 'array', items: { type: 'string' } }
523
+ }
524
+ },
525
+ relation: {
526
+ type: 'object',
527
+ properties: {
528
+ to: { type: 'string' },
529
+ many: { type: 'boolean' },
530
+ onDelete: {
531
+ type: 'string',
532
+ enum: ['cascade', 'set null', 'restrict']
533
+ },
534
+ unique: { type: 'boolean' },
535
+ inverse: {
536
+ type: 'object',
537
+ properties: { field: { type: 'string' } },
538
+ required: ['field']
539
+ }
540
+ },
541
+ required: ['to', 'many']
542
+ }
543
+ },
544
+ required: ['name', 'type', 'required', 'validation', 'admin']
545
+ },
546
+ ContentTypeSummaryList: {
547
+ type: 'array',
548
+ items: ref('ContentTypeSummary')
549
+ },
550
+ ContentTypeSchema: {
551
+ allOf: [
552
+ ref('ContentTypeSummary'),
553
+ {
554
+ type: 'object',
555
+ properties: {
556
+ fields: {
557
+ type: 'array',
558
+ items: ref('ContentFieldSchema')
559
+ }
560
+ },
561
+ required: ['fields']
562
+ }
563
+ ]
564
+ },
565
+ FilterField: {
566
+ type: 'object',
567
+ description: 'One filterable path the query builder may use — dotted for a relation hop (`author.name`).',
568
+ properties: {
569
+ path: { type: 'string' },
570
+ label: { type: 'string' },
571
+ type: {
572
+ type: 'string',
573
+ enum: [
574
+ 'string',
575
+ 'number',
576
+ 'boolean',
577
+ 'uuid',
578
+ 'date',
579
+ 'enum'
580
+ ]
581
+ },
582
+ enumValues: { type: 'array', items: { type: 'string' } },
583
+ group: {
584
+ type: 'array',
585
+ items: { type: 'string' },
586
+ description: 'Breadcrumb of relation labels, root-first.'
587
+ },
588
+ relationTarget: {
589
+ type: 'string',
590
+ description: "For a relation's own `id` field: the target content type."
591
+ }
592
+ },
593
+ required: ['path', 'label', 'type', 'group']
594
+ },
595
+ FilterFields: {
596
+ type: 'object',
597
+ properties: {
598
+ fields: { type: 'array', items: ref('FilterField') }
599
+ },
600
+ required: ['fields']
601
+ }
602
+ };
603
+ }
604
+ /**
605
+ * Every schema this plugin contributes: the shared shapes plus, for each
606
+ * registered content type, its `Values` / `Entry` / `ListPage` trio.
607
+ */
608
+ function buildContentSchemas(types) {
609
+ const schemas = sharedSchemas();
610
+ for (const type of types) {
611
+ const names = schemaNamesOf(type);
612
+ schemas[names.values] = valuesSchema(type);
613
+ schemas[names.entry] = entrySchema(type, names);
614
+ schemas[names.listPage] = listPageSchema(type, names);
615
+ }
616
+ return schemas;
617
+ }
@@ -0,0 +1,22 @@
1
+ /**
2
+ * The content plugin's pass over the host's OpenAPI document.
3
+ *
4
+ * `@nestjs/swagger` reflects static TypeScript, and this plugin's contract is
5
+ * runtime data: one generic controller set serves **every** code-defined
6
+ * content type, so the scanner sees `/content/{typeName}` with an opaque string
7
+ * param and no response shape at all. This pass fills both gaps from the
8
+ * registry — the real type names as an enum, and a typed entry/list schema per
9
+ * type — so a reader of the reference sees `article` and `home_page`, not
10
+ * "some object".
11
+ *
12
+ * Pure: it takes the document and the serialized types, and mutates only the
13
+ * paths this plugin owns.
14
+ */
15
+ import type { OpenApiDocument } from '@orthacms/bootstrap-server';
16
+ import type { SerializedContentType } from '../registry/content-type-registry';
17
+ /**
18
+ * Adds this plugin's schemas to `document` and describes its own operations:
19
+ * the `typeName` enum, per-type response schemas, and the documented failures.
20
+ */
21
+ export declare function describeContentApi(document: OpenApiDocument, types: readonly SerializedContentType[]): void;
22
+ //# sourceMappingURL=describe-content-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"describe-content-api.d.ts","sourceRoot":"","sources":["../../../src/lib/docs/describe-content-api.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAuJ/E;;;GAGG;AACH,wBAAgB,kBAAkB,CAC9B,QAAQ,EAAE,eAAe,EACzB,KAAK,EAAE,SAAS,qBAAqB,EAAE,GACxC,IAAI,CA2EN"}