@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,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ContentPipelineController = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const common_1 = require("@nestjs/common");
6
+ const identity_server_1 = require("@orthacms/identity-server");
7
+ const workspaces_server_1 = require("@orthacms/workspaces-server");
8
+ const content_insights_query_1 = require("../../infrastructure/queries/content-insights.query");
9
+ /**
10
+ * `GET /api/insights/content/pipeline` — the draft/published split for every
11
+ * content type that has at least one entry in the workspace.
12
+ *
13
+ * Takes no `?days=`: this is a snapshot of what exists now, not a flow over
14
+ * time. Filtering it by a window would answer a different and much less useful
15
+ * question ("what was created recently") under the same name.
16
+ */
17
+ let ContentPipelineController = class ContentPipelineController {
18
+ insights;
19
+ constructor(insights) {
20
+ this.insights = insights;
21
+ }
22
+ pipeline(workspaceId) {
23
+ return this.insights.pipeline(workspaceId);
24
+ }
25
+ };
26
+ exports.ContentPipelineController = ContentPipelineController;
27
+ tslib_1.__decorate([
28
+ (0, common_1.Get)('pipeline'),
29
+ tslib_1.__param(0, (0, workspaces_server_1.CurrentWorkspace)()),
30
+ tslib_1.__metadata("design:type", Function),
31
+ tslib_1.__metadata("design:paramtypes", [String]),
32
+ tslib_1.__metadata("design:returntype", Promise)
33
+ ], ContentPipelineController.prototype, "pipeline", null);
34
+ exports.ContentPipelineController = ContentPipelineController = tslib_1.__decorate([
35
+ (0, common_1.UseGuards)(identity_server_1.PermissionsGuard, workspaces_server_1.WorkspaceGuard),
36
+ (0, identity_server_1.RequirePermissions)(identity_server_1.PERMISSIONS.CONTENT_READ),
37
+ (0, common_1.Controller)('insights/content'),
38
+ tslib_1.__metadata("design:paramtypes", [content_insights_query_1.ContentInsightsQuery])
39
+ ], ContentPipelineController);
@@ -0,0 +1,18 @@
1
+ import { ContentInsightsQuery } from '../../infrastructure/queries/content-insights.query';
2
+ import type { ContentPunchcardView } from '../../types/content-insights-view';
3
+ import { InsightsRangeQueryDto } from '../dto/insights-range-query.dto';
4
+ /**
5
+ * `GET /api/insights/content/punchcard` — editing activity by weekday and hour.
6
+ *
7
+ * Reads `content_entry_revisions` rather than the activity log: a revision is
8
+ * written on every save and carries a `workspace_id`, whereas `activity_events`
9
+ * is a global table with no workspace column, so a workspace-scoped answer
10
+ * simply isn't available from it. Saves are also the better signal — they cover
11
+ * the editing work, not only the moments something went live.
12
+ */
13
+ export declare class ContentPunchcardController {
14
+ private readonly insights;
15
+ constructor(insights: ContentInsightsQuery);
16
+ punchcard(query: InsightsRangeQueryDto, workspaceId: string): Promise<ContentPunchcardView>;
17
+ }
18
+ //# sourceMappingURL=content-punchcard.controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-punchcard.controller.d.ts","sourceRoot":"","sources":["../../../../../src/lib/insights/http/controllers/content-punchcard.controller.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,oBAAoB,EAAE,MAAM,qDAAqD,CAAC;AAC3F,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAEH,qBAAqB,EACxB,MAAM,iCAAiC,CAAC;AAEzC;;;;;;;;GAQG;AACH,qBAGa,0BAA0B;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,oBAAoB;IAG3D,SAAS,CACI,KAAK,EAAE,qBAAqB,EACjB,WAAW,EAAE,MAAM,GACxC,OAAO,CAAC,oBAAoB,CAAC;CAMnC"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ContentPunchcardController = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const common_1 = require("@nestjs/common");
6
+ const identity_server_1 = require("@orthacms/identity-server");
7
+ const workspaces_server_1 = require("@orthacms/workspaces-server");
8
+ const content_insights_query_1 = require("../../infrastructure/queries/content-insights.query");
9
+ const insights_range_query_dto_1 = require("../dto/insights-range-query.dto");
10
+ /**
11
+ * `GET /api/insights/content/punchcard` — editing activity by weekday and hour.
12
+ *
13
+ * Reads `content_entry_revisions` rather than the activity log: a revision is
14
+ * written on every save and carries a `workspace_id`, whereas `activity_events`
15
+ * is a global table with no workspace column, so a workspace-scoped answer
16
+ * simply isn't available from it. Saves are also the better signal — they cover
17
+ * the editing work, not only the moments something went live.
18
+ */
19
+ let ContentPunchcardController = class ContentPunchcardController {
20
+ insights;
21
+ constructor(insights) {
22
+ this.insights = insights;
23
+ }
24
+ punchcard(query, workspaceId) {
25
+ return this.insights.punchcard(workspaceId, query.days ?? insights_range_query_dto_1.DEFAULT_INSIGHTS_DAYS);
26
+ }
27
+ };
28
+ exports.ContentPunchcardController = ContentPunchcardController;
29
+ tslib_1.__decorate([
30
+ (0, common_1.Get)('punchcard'),
31
+ tslib_1.__param(0, (0, common_1.Query)()),
32
+ tslib_1.__param(1, (0, workspaces_server_1.CurrentWorkspace)()),
33
+ tslib_1.__metadata("design:type", Function),
34
+ tslib_1.__metadata("design:paramtypes", [insights_range_query_dto_1.InsightsRangeQueryDto, String]),
35
+ tslib_1.__metadata("design:returntype", Promise)
36
+ ], ContentPunchcardController.prototype, "punchcard", null);
37
+ exports.ContentPunchcardController = ContentPunchcardController = tslib_1.__decorate([
38
+ (0, common_1.UseGuards)(identity_server_1.PermissionsGuard, workspaces_server_1.WorkspaceGuard),
39
+ (0, identity_server_1.RequirePermissions)(identity_server_1.PERMISSIONS.CONTENT_READ),
40
+ (0, common_1.Controller)('insights/content'),
41
+ tslib_1.__metadata("design:paramtypes", [content_insights_query_1.ContentInsightsQuery])
42
+ ], ContentPunchcardController);
@@ -0,0 +1,17 @@
1
+ import { ContentInsightsQuery } from '../../infrastructure/queries/content-insights.query';
2
+ import type { ContentStaleView } from '../../types/content-insights-view';
3
+ /**
4
+ * `GET /api/insights/content/stale` — published entries bucketed by how long
5
+ * ago they were last edited.
6
+ *
7
+ * Takes no `?days=`: the buckets *are* the time axis, and they are fixed
8
+ * (30/90/180/365/older) so the answer means the same thing whichever range the
9
+ * page is set to. "What has nobody touched in a year" is not a question about
10
+ * the last 7 days.
11
+ */
12
+ export declare class ContentStaleController {
13
+ private readonly insights;
14
+ constructor(insights: ContentInsightsQuery);
15
+ stale(workspaceId: string): Promise<ContentStaleView>;
16
+ }
17
+ //# sourceMappingURL=content-stale.controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-stale.controller.d.ts","sourceRoot":"","sources":["../../../../../src/lib/insights/http/controllers/content-stale.controller.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,oBAAoB,EAAE,MAAM,qDAAqD,CAAC;AAC3F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAE1E;;;;;;;;GAQG;AACH,qBAGa,sBAAsB;IACnB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,oBAAoB;IAG3D,KAAK,CAAqB,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAG5E"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ContentStaleController = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const common_1 = require("@nestjs/common");
6
+ const identity_server_1 = require("@orthacms/identity-server");
7
+ const workspaces_server_1 = require("@orthacms/workspaces-server");
8
+ const content_insights_query_1 = require("../../infrastructure/queries/content-insights.query");
9
+ /**
10
+ * `GET /api/insights/content/stale` — published entries bucketed by how long
11
+ * ago they were last edited.
12
+ *
13
+ * Takes no `?days=`: the buckets *are* the time axis, and they are fixed
14
+ * (30/90/180/365/older) so the answer means the same thing whichever range the
15
+ * page is set to. "What has nobody touched in a year" is not a question about
16
+ * the last 7 days.
17
+ */
18
+ let ContentStaleController = class ContentStaleController {
19
+ insights;
20
+ constructor(insights) {
21
+ this.insights = insights;
22
+ }
23
+ stale(workspaceId) {
24
+ return this.insights.stale(workspaceId);
25
+ }
26
+ };
27
+ exports.ContentStaleController = ContentStaleController;
28
+ tslib_1.__decorate([
29
+ (0, common_1.Get)('stale'),
30
+ tslib_1.__param(0, (0, workspaces_server_1.CurrentWorkspace)()),
31
+ tslib_1.__metadata("design:type", Function),
32
+ tslib_1.__metadata("design:paramtypes", [String]),
33
+ tslib_1.__metadata("design:returntype", Promise)
34
+ ], ContentStaleController.prototype, "stale", null);
35
+ exports.ContentStaleController = ContentStaleController = tslib_1.__decorate([
36
+ (0, common_1.UseGuards)(identity_server_1.PermissionsGuard, workspaces_server_1.WorkspaceGuard),
37
+ (0, identity_server_1.RequirePermissions)(identity_server_1.PERMISSIONS.CONTENT_READ),
38
+ (0, common_1.Controller)('insights/content'),
39
+ tslib_1.__metadata("design:paramtypes", [content_insights_query_1.ContentInsightsQuery])
40
+ ], ContentStaleController);
@@ -0,0 +1,18 @@
1
+ import { ContentInsightsQuery } from '../../infrastructure/queries/content-insights.query';
2
+ import type { ContentTotalsView } from '../../types/content-insights-view';
3
+ import { InsightsRangeQueryDto } from '../dto/insights-range-query.dto';
4
+ /**
5
+ * `GET /api/insights/content/totals` — entry, published and draft counts for
6
+ * the workspace, with the change over the window and a short history for the
7
+ * stat tiles' sparklines.
8
+ *
9
+ * Its own endpoint rather than a field on a combined Insights response: each
10
+ * widget on the page owns its own request, so a slow or failing aggregate
11
+ * degrades one card instead of blanking the dashboard.
12
+ */
13
+ export declare class ContentTotalsController {
14
+ private readonly insights;
15
+ constructor(insights: ContentInsightsQuery);
16
+ totals(query: InsightsRangeQueryDto, workspaceId: string): Promise<ContentTotalsView>;
17
+ }
18
+ //# sourceMappingURL=content-totals.controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-totals.controller.d.ts","sourceRoot":"","sources":["../../../../../src/lib/insights/http/controllers/content-totals.controller.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,oBAAoB,EAAE,MAAM,qDAAqD,CAAC;AAC3F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAEH,qBAAqB,EACxB,MAAM,iCAAiC,CAAC;AAEzC;;;;;;;;GAQG;AACH,qBAGa,uBAAuB;IACpB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,oBAAoB;IAG3D,MAAM,CACO,KAAK,EAAE,qBAAqB,EACjB,WAAW,EAAE,MAAM,GACxC,OAAO,CAAC,iBAAiB,CAAC;CAMhC"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ContentTotalsController = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const common_1 = require("@nestjs/common");
6
+ const identity_server_1 = require("@orthacms/identity-server");
7
+ const workspaces_server_1 = require("@orthacms/workspaces-server");
8
+ const content_insights_query_1 = require("../../infrastructure/queries/content-insights.query");
9
+ const insights_range_query_dto_1 = require("../dto/insights-range-query.dto");
10
+ /**
11
+ * `GET /api/insights/content/totals` — entry, published and draft counts for
12
+ * the workspace, with the change over the window and a short history for the
13
+ * stat tiles' sparklines.
14
+ *
15
+ * Its own endpoint rather than a field on a combined Insights response: each
16
+ * widget on the page owns its own request, so a slow or failing aggregate
17
+ * degrades one card instead of blanking the dashboard.
18
+ */
19
+ let ContentTotalsController = class ContentTotalsController {
20
+ insights;
21
+ constructor(insights) {
22
+ this.insights = insights;
23
+ }
24
+ totals(query, workspaceId) {
25
+ return this.insights.totals(workspaceId, query.days ?? insights_range_query_dto_1.DEFAULT_INSIGHTS_DAYS);
26
+ }
27
+ };
28
+ exports.ContentTotalsController = ContentTotalsController;
29
+ tslib_1.__decorate([
30
+ (0, common_1.Get)('totals'),
31
+ tslib_1.__param(0, (0, common_1.Query)()),
32
+ tslib_1.__param(1, (0, workspaces_server_1.CurrentWorkspace)()),
33
+ tslib_1.__metadata("design:type", Function),
34
+ tslib_1.__metadata("design:paramtypes", [insights_range_query_dto_1.InsightsRangeQueryDto, String]),
35
+ tslib_1.__metadata("design:returntype", Promise)
36
+ ], ContentTotalsController.prototype, "totals", null);
37
+ exports.ContentTotalsController = ContentTotalsController = tslib_1.__decorate([
38
+ (0, common_1.UseGuards)(identity_server_1.PermissionsGuard, workspaces_server_1.WorkspaceGuard),
39
+ (0, identity_server_1.RequirePermissions)(identity_server_1.PERMISSIONS.CONTENT_READ),
40
+ (0, common_1.Controller)('insights/content'),
41
+ tslib_1.__metadata("design:paramtypes", [content_insights_query_1.ContentInsightsQuery])
42
+ ], ContentTotalsController);
@@ -0,0 +1,17 @@
1
+ import { ContentInsightsQuery } from '../../infrastructure/queries/content-insights.query';
2
+ import type { ContentUnshippedView } from '../../types/content-insights-view';
3
+ /**
4
+ * `GET /api/insights/content/unshipped` — entries that are live but carry
5
+ * unpublished edits (the admin's **Modified** state), per type and in total.
6
+ *
7
+ * Takes no `?days=`, for the same reason `stale` doesn't: a pending edit is
8
+ * pending whether it was made this morning or last spring, and windowing it
9
+ * would quietly answer "changes made recently that are unpublished" under a name
10
+ * that promises the backlog.
11
+ */
12
+ export declare class ContentUnshippedController {
13
+ private readonly insights;
14
+ constructor(insights: ContentInsightsQuery);
15
+ unshipped(workspaceId: string): Promise<ContentUnshippedView>;
16
+ }
17
+ //# sourceMappingURL=content-unshipped.controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-unshipped.controller.d.ts","sourceRoot":"","sources":["../../../../../src/lib/insights/http/controllers/content-unshipped.controller.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,oBAAoB,EAAE,MAAM,qDAAqD,CAAC;AAC3F,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAE9E;;;;;;;;GAQG;AACH,qBAGa,0BAA0B;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,oBAAoB;IAG3D,SAAS,CACe,WAAW,EAAE,MAAM,GACxC,OAAO,CAAC,oBAAoB,CAAC;CAGnC"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ContentUnshippedController = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const common_1 = require("@nestjs/common");
6
+ const identity_server_1 = require("@orthacms/identity-server");
7
+ const workspaces_server_1 = require("@orthacms/workspaces-server");
8
+ const content_insights_query_1 = require("../../infrastructure/queries/content-insights.query");
9
+ /**
10
+ * `GET /api/insights/content/unshipped` — entries that are live but carry
11
+ * unpublished edits (the admin's **Modified** state), per type and in total.
12
+ *
13
+ * Takes no `?days=`, for the same reason `stale` doesn't: a pending edit is
14
+ * pending whether it was made this morning or last spring, and windowing it
15
+ * would quietly answer "changes made recently that are unpublished" under a name
16
+ * that promises the backlog.
17
+ */
18
+ let ContentUnshippedController = class ContentUnshippedController {
19
+ insights;
20
+ constructor(insights) {
21
+ this.insights = insights;
22
+ }
23
+ unshipped(workspaceId) {
24
+ return this.insights.unshipped(workspaceId);
25
+ }
26
+ };
27
+ exports.ContentUnshippedController = ContentUnshippedController;
28
+ tslib_1.__decorate([
29
+ (0, common_1.Get)('unshipped'),
30
+ tslib_1.__param(0, (0, workspaces_server_1.CurrentWorkspace)()),
31
+ tslib_1.__metadata("design:type", Function),
32
+ tslib_1.__metadata("design:paramtypes", [String]),
33
+ tslib_1.__metadata("design:returntype", Promise)
34
+ ], ContentUnshippedController.prototype, "unshipped", null);
35
+ exports.ContentUnshippedController = ContentUnshippedController = tslib_1.__decorate([
36
+ (0, common_1.UseGuards)(identity_server_1.PermissionsGuard, workspaces_server_1.WorkspaceGuard),
37
+ (0, identity_server_1.RequirePermissions)(identity_server_1.PERMISSIONS.CONTENT_READ),
38
+ (0, common_1.Controller)('insights/content'),
39
+ tslib_1.__metadata("design:paramtypes", [content_insights_query_1.ContentInsightsQuery])
40
+ ], ContentUnshippedController);
@@ -0,0 +1,17 @@
1
+ import { ContentInsightsQuery } from '../../infrastructure/queries/content-insights.query';
2
+ import type { ContentVelocityView } from '../../types/content-insights-view';
3
+ import { InsightsRangeQueryDto } from '../dto/insights-range-query.dto';
4
+ /**
5
+ * `GET /api/insights/content/velocity` — entries published per time bucket
6
+ * across the selected window.
7
+ *
8
+ * Counts `published_at`, so an entry that was published, unpublished and
9
+ * published again contributes at its latest publish only. The column records a
10
+ * state, not a log, and the widget's caption is written to match.
11
+ */
12
+ export declare class ContentVelocityController {
13
+ private readonly insights;
14
+ constructor(insights: ContentInsightsQuery);
15
+ velocity(query: InsightsRangeQueryDto, workspaceId: string): Promise<ContentVelocityView>;
16
+ }
17
+ //# sourceMappingURL=content-velocity.controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-velocity.controller.d.ts","sourceRoot":"","sources":["../../../../../src/lib/insights/http/controllers/content-velocity.controller.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,oBAAoB,EAAE,MAAM,qDAAqD,CAAC;AAC3F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAEH,qBAAqB,EACxB,MAAM,iCAAiC,CAAC;AAEzC;;;;;;;GAOG;AACH,qBAGa,yBAAyB;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,oBAAoB;IAG3D,QAAQ,CACK,KAAK,EAAE,qBAAqB,EACjB,WAAW,EAAE,MAAM,GACxC,OAAO,CAAC,mBAAmB,CAAC;CAMlC"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ContentVelocityController = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const common_1 = require("@nestjs/common");
6
+ const identity_server_1 = require("@orthacms/identity-server");
7
+ const workspaces_server_1 = require("@orthacms/workspaces-server");
8
+ const content_insights_query_1 = require("../../infrastructure/queries/content-insights.query");
9
+ const insights_range_query_dto_1 = require("../dto/insights-range-query.dto");
10
+ /**
11
+ * `GET /api/insights/content/velocity` — entries published per time bucket
12
+ * across the selected window.
13
+ *
14
+ * Counts `published_at`, so an entry that was published, unpublished and
15
+ * published again contributes at its latest publish only. The column records a
16
+ * state, not a log, and the widget's caption is written to match.
17
+ */
18
+ let ContentVelocityController = class ContentVelocityController {
19
+ insights;
20
+ constructor(insights) {
21
+ this.insights = insights;
22
+ }
23
+ velocity(query, workspaceId) {
24
+ return this.insights.velocity(workspaceId, query.days ?? insights_range_query_dto_1.DEFAULT_INSIGHTS_DAYS);
25
+ }
26
+ };
27
+ exports.ContentVelocityController = ContentVelocityController;
28
+ tslib_1.__decorate([
29
+ (0, common_1.Get)('velocity'),
30
+ tslib_1.__param(0, (0, common_1.Query)()),
31
+ tslib_1.__param(1, (0, workspaces_server_1.CurrentWorkspace)()),
32
+ tslib_1.__metadata("design:type", Function),
33
+ tslib_1.__metadata("design:paramtypes", [insights_range_query_dto_1.InsightsRangeQueryDto, String]),
34
+ tslib_1.__metadata("design:returntype", Promise)
35
+ ], ContentVelocityController.prototype, "velocity", null);
36
+ exports.ContentVelocityController = ContentVelocityController = tslib_1.__decorate([
37
+ (0, common_1.UseGuards)(identity_server_1.PermissionsGuard, workspaces_server_1.WorkspaceGuard),
38
+ (0, identity_server_1.RequirePermissions)(identity_server_1.PERMISSIONS.CONTENT_READ),
39
+ (0, common_1.Controller)('insights/content'),
40
+ tslib_1.__metadata("design:paramtypes", [content_insights_query_1.ContentInsightsQuery])
41
+ ], ContentVelocityController);
@@ -0,0 +1,15 @@
1
+ /** Window used when a request names none — matches the page's default range. */
2
+ export declare const DEFAULT_INSIGHTS_DAYS = 30;
3
+ /**
4
+ * Longest window an Insights read may ask for.
5
+ *
6
+ * Bounded because every one of these endpoints fans out across each content
7
+ * type's table: an unbounded `?days=` would let a single request scan the whole
8
+ * history of every collection in the workspace.
9
+ */
10
+ export declare const MAX_INSIGHTS_DAYS = 365;
11
+ /** `?days=` — the window an Insights read reports over. */
12
+ export declare class InsightsRangeQueryDto {
13
+ days?: number;
14
+ }
15
+ //# sourceMappingURL=insights-range-query.dto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insights-range-query.dto.d.ts","sourceRoot":"","sources":["../../../../../src/lib/insights/http/dto/insights-range-query.dto.ts"],"names":[],"mappings":"AAIA,gFAAgF;AAChF,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAErC,2DAA2D;AAC3D,qBAAa,qBAAqB;IAe9B,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InsightsRangeQueryDto = exports.MAX_INSIGHTS_DAYS = exports.DEFAULT_INSIGHTS_DAYS = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const swagger_1 = require("@nestjs/swagger");
6
+ const class_transformer_1 = require("class-transformer");
7
+ const class_validator_1 = require("class-validator");
8
+ /** Window used when a request names none — matches the page's default range. */
9
+ exports.DEFAULT_INSIGHTS_DAYS = 30;
10
+ /**
11
+ * Longest window an Insights read may ask for.
12
+ *
13
+ * Bounded because every one of these endpoints fans out across each content
14
+ * type's table: an unbounded `?days=` would let a single request scan the whole
15
+ * history of every collection in the workspace.
16
+ */
17
+ exports.MAX_INSIGHTS_DAYS = 365;
18
+ /** `?days=` — the window an Insights read reports over. */
19
+ class InsightsRangeQueryDto {
20
+ days;
21
+ }
22
+ exports.InsightsRangeQueryDto = InsightsRangeQueryDto;
23
+ tslib_1.__decorate([
24
+ (0, swagger_1.ApiPropertyOptional)({
25
+ type: 'integer',
26
+ minimum: 1,
27
+ maximum: exports.MAX_INSIGHTS_DAYS,
28
+ default: exports.DEFAULT_INSIGHTS_DAYS,
29
+ description: 'How many days back to report over. Bucket width is chosen from this: up to 31 days is grouped by day, up to 120 by week, beyond that by month.',
30
+ example: 30
31
+ }),
32
+ (0, class_validator_1.IsOptional)(),
33
+ (0, class_transformer_1.Type)(() => Number),
34
+ (0, class_validator_1.IsInt)(),
35
+ (0, class_validator_1.Min)(1),
36
+ (0, class_validator_1.Max)(exports.MAX_INSIGHTS_DAYS),
37
+ tslib_1.__metadata("design:type", Number)
38
+ ], InsightsRangeQueryDto.prototype, "days", void 0);
@@ -0,0 +1,77 @@
1
+ import { type Database } from '@orthacms/database';
2
+ import type { ContentTypeRegistry } from '../../../registry/content-type-registry';
3
+ import type { ContentPipelineView, ContentPunchcardView, ContentStaleView, ContentTotalsView, ContentUnshippedView, ContentVelocityView } from '../../types/content-insights-view';
4
+ /**
5
+ * Live read-model for the content Insights widgets.
6
+ *
7
+ * Every figure is aggregated **on demand** from the collection tables rather
8
+ * than folded into a projection. That is a deliberate trade for this stage: the
9
+ * counts are workspace-scoped and hit the existing
10
+ * `(workspace_id, …)` list indexes, so they are cheap at the scale a single
11
+ * workspace's content reaches, and a projection would add a table, migrations
12
+ * and a rebuild path to maintain before anything proved it was needed. The seam
13
+ * to change later is this class alone — the HTTP contract and the widgets don't
14
+ * know where the numbers come from.
15
+ *
16
+ * Each method queries **per content type** and merges in memory. There is no
17
+ * single table to group over: a collection is its own generated
18
+ * `content_<name>` table, so "entries in this workspace" is inherently a fan-out.
19
+ */
20
+ export declare class ContentInsightsQuery {
21
+ private readonly db;
22
+ private readonly registry;
23
+ constructor(db: Database, registry: ContentTypeRegistry);
24
+ /**
25
+ * Restricts a read to one workspace, and to rows that still exist.
26
+ *
27
+ * The soft-delete clause is why this is shared rather than inlined: a
28
+ * tombstoned entry is still a row, and a count that forgets `deleted_at`
29
+ * silently reports deleted content as live — the kind of wrong number a
30
+ * dashboard is believed on.
31
+ */
32
+ private scope;
33
+ /** Counts rows of one type matching an extra predicate. */
34
+ private countOf;
35
+ /**
36
+ * Counts rows per time bucket over a window, for one type and one
37
+ * timestamp column. Returns raw buckets — the caller decides whether they
38
+ * are a series or the increments of a cumulative total.
39
+ */
40
+ private bucketed;
41
+ /** Headline counts, deltas and sparkline history for the stat tiles. */
42
+ totals(workspaceId: string, days: number): Promise<ContentTotalsView>;
43
+ /** Published entries grouped by how long ago they were last edited. */
44
+ stale(workspaceId: string): Promise<ContentStaleView>;
45
+ /** Draft/published split per content type. */
46
+ pipeline(workspaceId: string): Promise<ContentPipelineView>;
47
+ /**
48
+ * Live content carrying unpublished edits, per type and in total.
49
+ *
50
+ * The three figures come out of **one** grouped query per type rather than
51
+ * three `countOf` calls, because they partition the same rows: a scan that
52
+ * has already found a row can decide which of the three it belongs to.
53
+ *
54
+ * A **non-publishable** type contributes nothing at all — not even to
55
+ * `live`. It has no draft stage, so every row is trivially current, and
56
+ * folding those rows into the denominator would make "3 of 900 live records
57
+ * have pending edits" a number about a workspace's always-live singletons
58
+ * rather than about anything an editor can ship.
59
+ */
60
+ unshipped(workspaceId: string): Promise<ContentUnshippedView>;
61
+ /** Entries published per time bucket across the window. */
62
+ velocity(workspaceId: string, days: number): Promise<ContentVelocityView>;
63
+ /**
64
+ * Editing activity by weekday and hour, from the revision store.
65
+ *
66
+ * The one content figure that is a single grouped query rather than a
67
+ * fan-out: `content_entry_revisions` is generic across every type, so the
68
+ * whole workspace's editing history lives in one table.
69
+ *
70
+ * Hours come out in the database session's timezone (UTC in every
71
+ * deployment we run). Rendering them as local time would need each
72
+ * viewer's offset applied to the grouping, not to the labels — shifting
73
+ * the labels alone would silently mislabel the buckets.
74
+ */
75
+ punchcard(workspaceId: string, days: number): Promise<ContentPunchcardView>;
76
+ }
77
+ //# sourceMappingURL=content-insights.query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-insights.query.d.ts","sourceRoot":"","sources":["../../../../../src/lib/insights/infrastructure/queries/content-insights.query.ts"],"names":[],"mappings":"AAGA,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAInF,OAAO,KAAK,EACR,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EAEtB,MAAM,mCAAmC,CAAC;AAoE3C;;;;;;;;;;;;;;;GAeG;AACH,qBACa,oBAAoB;IAEP,OAAO,CAAC,QAAQ,CAAC,EAAE;IACZ,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBADf,EAAE,EAAE,QAAQ,EACL,QAAQ,EAAE,mBAAmB;IAG3E;;;;;;;OAOG;IACH,OAAO,CAAC,KAAK;IAQb,2DAA2D;YAC7C,OAAO;IAYrB;;;;OAIG;YACW,QAAQ;IAyBtB,wEAAwE;IAClE,MAAM,CACR,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,GACb,OAAO,CAAC,iBAAiB,CAAC;IA2E7B,uEAAuE;IACjE,KAAK,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAoD3D,8CAA8C;IACxC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAqCjE;;;;;;;;;;;;OAYG;IACG,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAkDnE,2DAA2D;IACrD,QAAQ,CACV,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,GACb,OAAO,CAAC,mBAAmB,CAAC;IAqB/B;;;;;;;;;;;OAWG;IACG,SAAS,CACX,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,GACb,OAAO,CAAC,oBAAoB,CAAC;CAyBnC"}