@aotter/mantle-runtime 0.0.11-alpha.11

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 (439) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +14 -0
  3. package/dist/domain/index.d.ts +4 -0
  4. package/dist/domain/index.d.ts.map +1 -0
  5. package/dist/domain/index.js +4 -0
  6. package/dist/domain/index.js.map +1 -0
  7. package/dist/domain/model/EntryRow.d.ts +59 -0
  8. package/dist/domain/model/EntryRow.d.ts.map +1 -0
  9. package/dist/domain/model/EntryRow.js +42 -0
  10. package/dist/domain/model/EntryRow.js.map +1 -0
  11. package/dist/domain/model/HandlerContext.d.ts +65 -0
  12. package/dist/domain/model/HandlerContext.d.ts.map +1 -0
  13. package/dist/domain/model/HandlerContext.js +2 -0
  14. package/dist/domain/model/HandlerContext.js.map +1 -0
  15. package/dist/domain/model/SeoMeta.d.ts +49 -0
  16. package/dist/domain/model/SeoMeta.d.ts.map +1 -0
  17. package/dist/domain/model/SeoMeta.js +2 -0
  18. package/dist/domain/model/SeoMeta.js.map +1 -0
  19. package/dist/domain/model/TemplateRegistry.d.ts +47 -0
  20. package/dist/domain/model/TemplateRegistry.d.ts.map +1 -0
  21. package/dist/domain/model/TemplateRegistry.js +17 -0
  22. package/dist/domain/model/TemplateRegistry.js.map +1 -0
  23. package/dist/domain/model/index.d.ts +7 -0
  24. package/dist/domain/model/index.d.ts.map +1 -0
  25. package/dist/domain/model/index.js +6 -0
  26. package/dist/domain/model/index.js.map +1 -0
  27. package/dist/domain/port/AssetServer.d.ts +21 -0
  28. package/dist/domain/port/AssetServer.d.ts.map +1 -0
  29. package/dist/domain/port/AssetServer.js +2 -0
  30. package/dist/domain/port/AssetServer.js.map +1 -0
  31. package/dist/domain/port/Clock.d.ts +13 -0
  32. package/dist/domain/port/Clock.d.ts.map +1 -0
  33. package/dist/domain/port/Clock.js +2 -0
  34. package/dist/domain/port/Clock.js.map +1 -0
  35. package/dist/domain/port/DatabaseDriver.d.ts +91 -0
  36. package/dist/domain/port/DatabaseDriver.d.ts.map +1 -0
  37. package/dist/domain/port/DatabaseDriver.js +2 -0
  38. package/dist/domain/port/DatabaseDriver.js.map +1 -0
  39. package/dist/domain/port/DeferredHookDispatcher.d.ts +55 -0
  40. package/dist/domain/port/DeferredHookDispatcher.d.ts.map +1 -0
  41. package/dist/domain/port/DeferredHookDispatcher.js +16 -0
  42. package/dist/domain/port/DeferredHookDispatcher.js.map +1 -0
  43. package/dist/domain/port/EmailSender.d.ts +31 -0
  44. package/dist/domain/port/EmailSender.d.ts.map +1 -0
  45. package/dist/domain/port/EmailSender.js +2 -0
  46. package/dist/domain/port/EmailSender.js.map +1 -0
  47. package/dist/domain/port/EntryRepository.d.ts +132 -0
  48. package/dist/domain/port/EntryRepository.d.ts.map +1 -0
  49. package/dist/domain/port/EntryRepository.js +2 -0
  50. package/dist/domain/port/EntryRepository.js.map +1 -0
  51. package/dist/domain/port/HandlerRegistry.d.ts +38 -0
  52. package/dist/domain/port/HandlerRegistry.d.ts.map +1 -0
  53. package/dist/domain/port/HandlerRegistry.js +27 -0
  54. package/dist/domain/port/HandlerRegistry.js.map +1 -0
  55. package/dist/domain/port/IdGenerator.d.ts +28 -0
  56. package/dist/domain/port/IdGenerator.d.ts.map +1 -0
  57. package/dist/domain/port/IdGenerator.js +5 -0
  58. package/dist/domain/port/IdGenerator.js.map +1 -0
  59. package/dist/domain/port/KvCache.d.ts +34 -0
  60. package/dist/domain/port/KvCache.d.ts.map +1 -0
  61. package/dist/domain/port/KvCache.js +2 -0
  62. package/dist/domain/port/KvCache.js.map +1 -0
  63. package/dist/domain/port/LifecycleHookRunner.d.ts +41 -0
  64. package/dist/domain/port/LifecycleHookRunner.d.ts.map +1 -0
  65. package/dist/domain/port/LifecycleHookRunner.js +2 -0
  66. package/dist/domain/port/LifecycleHookRunner.js.map +1 -0
  67. package/dist/domain/port/MediaStorage.d.ts +102 -0
  68. package/dist/domain/port/MediaStorage.d.ts.map +1 -0
  69. package/dist/domain/port/MediaStorage.js +2 -0
  70. package/dist/domain/port/MediaStorage.js.map +1 -0
  71. package/dist/domain/port/PublishOrchestrator.d.ts +25 -0
  72. package/dist/domain/port/PublishOrchestrator.d.ts.map +1 -0
  73. package/dist/domain/port/PublishOrchestrator.js +2 -0
  74. package/dist/domain/port/PublishOrchestrator.js.map +1 -0
  75. package/dist/domain/port/SiteConfigRepository.d.ts +27 -0
  76. package/dist/domain/port/SiteConfigRepository.d.ts.map +1 -0
  77. package/dist/domain/port/SiteConfigRepository.js +2 -0
  78. package/dist/domain/port/SiteConfigRepository.js.map +1 -0
  79. package/dist/domain/port/index.d.ts +30 -0
  80. package/dist/domain/port/index.d.ts.map +1 -0
  81. package/dist/domain/port/index.js +5 -0
  82. package/dist/domain/port/index.js.map +1 -0
  83. package/dist/domain/service/AbsoluteUrl.d.ts +6 -0
  84. package/dist/domain/service/AbsoluteUrl.d.ts.map +1 -0
  85. package/dist/domain/service/AbsoluteUrl.js +33 -0
  86. package/dist/domain/service/AbsoluteUrl.js.map +1 -0
  87. package/dist/domain/service/AuthPredicateEvaluator.d.ts +29 -0
  88. package/dist/domain/service/AuthPredicateEvaluator.d.ts.map +1 -0
  89. package/dist/domain/service/AuthPredicateEvaluator.js +48 -0
  90. package/dist/domain/service/AuthPredicateEvaluator.js.map +1 -0
  91. package/dist/domain/service/BuiltinProjector.d.ts +50 -0
  92. package/dist/domain/service/BuiltinProjector.d.ts.map +1 -0
  93. package/dist/domain/service/BuiltinProjector.js +61 -0
  94. package/dist/domain/service/BuiltinProjector.js.map +1 -0
  95. package/dist/domain/service/EntrySeoSupport.d.ts +27 -0
  96. package/dist/domain/service/EntrySeoSupport.d.ts.map +1 -0
  97. package/dist/domain/service/EntrySeoSupport.js +13 -0
  98. package/dist/domain/service/EntrySeoSupport.js.map +1 -0
  99. package/dist/domain/service/HtmlRenderer.d.ts +32 -0
  100. package/dist/domain/service/HtmlRenderer.d.ts.map +1 -0
  101. package/dist/domain/service/HtmlRenderer.js +38 -0
  102. package/dist/domain/service/HtmlRenderer.js.map +1 -0
  103. package/dist/domain/service/LocaleNegotiator.d.ts +29 -0
  104. package/dist/domain/service/LocaleNegotiator.d.ts.map +1 -0
  105. package/dist/domain/service/LocaleNegotiator.js +62 -0
  106. package/dist/domain/service/LocaleNegotiator.js.map +1 -0
  107. package/dist/domain/service/MarkdownSerializer.d.ts +48 -0
  108. package/dist/domain/service/MarkdownSerializer.d.ts.map +1 -0
  109. package/dist/domain/service/MarkdownSerializer.js +109 -0
  110. package/dist/domain/service/MarkdownSerializer.js.map +1 -0
  111. package/dist/domain/service/McpToolNaming.d.ts +12 -0
  112. package/dist/domain/service/McpToolNaming.d.ts.map +1 -0
  113. package/dist/domain/service/McpToolNaming.js +14 -0
  114. package/dist/domain/service/McpToolNaming.js.map +1 -0
  115. package/dist/domain/service/Pagination.d.ts +15 -0
  116. package/dist/domain/service/Pagination.d.ts.map +1 -0
  117. package/dist/domain/service/Pagination.js +29 -0
  118. package/dist/domain/service/Pagination.js.map +1 -0
  119. package/dist/domain/service/PathMatcher.d.ts +15 -0
  120. package/dist/domain/service/PathMatcher.d.ts.map +1 -0
  121. package/dist/domain/service/PathMatcher.js +54 -0
  122. package/dist/domain/service/PathMatcher.js.map +1 -0
  123. package/dist/domain/service/PreviewBanner.d.ts +10 -0
  124. package/dist/domain/service/PreviewBanner.d.ts.map +1 -0
  125. package/dist/domain/service/PreviewBanner.js +37 -0
  126. package/dist/domain/service/PreviewBanner.js.map +1 -0
  127. package/dist/domain/service/PublicPathResolver.d.ts +41 -0
  128. package/dist/domain/service/PublicPathResolver.d.ts.map +1 -0
  129. package/dist/domain/service/PublicPathResolver.js +24 -0
  130. package/dist/domain/service/PublicPathResolver.js.map +1 -0
  131. package/dist/domain/service/PublishKeys.d.ts +42 -0
  132. package/dist/domain/service/PublishKeys.d.ts.map +1 -0
  133. package/dist/domain/service/PublishKeys.js +69 -0
  134. package/dist/domain/service/PublishKeys.js.map +1 -0
  135. package/dist/domain/service/SeoMetaComposer.d.ts +47 -0
  136. package/dist/domain/service/SeoMetaComposer.d.ts.map +1 -0
  137. package/dist/domain/service/SeoMetaComposer.js +174 -0
  138. package/dist/domain/service/SeoMetaComposer.js.map +1 -0
  139. package/dist/domain/service/SitemapSerializer.d.ts +19 -0
  140. package/dist/domain/service/SitemapSerializer.d.ts.map +1 -0
  141. package/dist/domain/service/SitemapSerializer.js +27 -0
  142. package/dist/domain/service/SitemapSerializer.js.map +1 -0
  143. package/dist/domain/service/TriggerIndex.d.ts +27 -0
  144. package/dist/domain/service/TriggerIndex.d.ts.map +1 -0
  145. package/dist/domain/service/TriggerIndex.js +52 -0
  146. package/dist/domain/service/TriggerIndex.js.map +1 -0
  147. package/dist/domain/service/ViewParamCoercer.d.ts +20 -0
  148. package/dist/domain/service/ViewParamCoercer.d.ts.map +1 -0
  149. package/dist/domain/service/ViewParamCoercer.js +82 -0
  150. package/dist/domain/service/ViewParamCoercer.js.map +1 -0
  151. package/dist/domain/service/ViewSqlCompiler.d.ts +29 -0
  152. package/dist/domain/service/ViewSqlCompiler.d.ts.map +1 -0
  153. package/dist/domain/service/ViewSqlCompiler.js +147 -0
  154. package/dist/domain/service/ViewSqlCompiler.js.map +1 -0
  155. package/dist/domain/service/index.d.ts +28 -0
  156. package/dist/domain/service/index.d.ts.map +1 -0
  157. package/dist/domain/service/index.js +28 -0
  158. package/dist/domain/service/index.js.map +1 -0
  159. package/dist/domain/service/io/EntryWriteGuard.d.ts +19 -0
  160. package/dist/domain/service/io/EntryWriteGuard.d.ts.map +1 -0
  161. package/dist/domain/service/io/EntryWriteGuard.js +109 -0
  162. package/dist/domain/service/io/EntryWriteGuard.js.map +1 -0
  163. package/dist/domain/service/io/JoinedEntryReader.d.ts +33 -0
  164. package/dist/domain/service/io/JoinedEntryReader.d.ts.map +1 -0
  165. package/dist/domain/service/io/JoinedEntryReader.js +95 -0
  166. package/dist/domain/service/io/JoinedEntryReader.js.map +1 -0
  167. package/dist/domain/service/io/PublishedEntries.d.ts +69 -0
  168. package/dist/domain/service/io/PublishedEntries.d.ts.map +1 -0
  169. package/dist/domain/service/io/PublishedEntries.js +116 -0
  170. package/dist/domain/service/io/PublishedEntries.js.map +1 -0
  171. package/dist/domain/service/io/index.d.ts +9 -0
  172. package/dist/domain/service/io/index.d.ts.map +1 -0
  173. package/dist/domain/service/io/index.js +9 -0
  174. package/dist/domain/service/io/index.js.map +1 -0
  175. package/dist/index.d.ts +41 -0
  176. package/dist/index.d.ts.map +1 -0
  177. package/dist/index.js +45 -0
  178. package/dist/index.js.map +1 -0
  179. package/dist/infrastructure/boot/canonicalMigrations.d.ts +9 -0
  180. package/dist/infrastructure/boot/canonicalMigrations.d.ts.map +1 -0
  181. package/dist/infrastructure/boot/canonicalMigrations.js +162 -0
  182. package/dist/infrastructure/boot/canonicalMigrations.js.map +1 -0
  183. package/dist/infrastructure/boot/index.d.ts +2 -0
  184. package/dist/infrastructure/boot/index.d.ts.map +1 -0
  185. package/dist/infrastructure/boot/index.js +2 -0
  186. package/dist/infrastructure/boot/index.js.map +1 -0
  187. package/dist/infrastructure/http/DiagnosticResponse.d.ts +12 -0
  188. package/dist/infrastructure/http/DiagnosticResponse.d.ts.map +1 -0
  189. package/dist/infrastructure/http/DiagnosticResponse.js +14 -0
  190. package/dist/infrastructure/http/DiagnosticResponse.js.map +1 -0
  191. package/dist/infrastructure/http/index.d.ts +2 -0
  192. package/dist/infrastructure/http/index.d.ts.map +1 -0
  193. package/dist/infrastructure/http/index.js +2 -0
  194. package/dist/infrastructure/http/index.js.map +1 -0
  195. package/dist/infrastructure/index.d.ts +12 -0
  196. package/dist/infrastructure/index.d.ts.map +1 -0
  197. package/dist/infrastructure/index.js +12 -0
  198. package/dist/infrastructure/index.js.map +1 -0
  199. package/dist/infrastructure/mcp/McpJsonRpcDispatcher.d.ts +60 -0
  200. package/dist/infrastructure/mcp/McpJsonRpcDispatcher.d.ts.map +1 -0
  201. package/dist/infrastructure/mcp/McpJsonRpcDispatcher.js +281 -0
  202. package/dist/infrastructure/mcp/McpJsonRpcDispatcher.js.map +1 -0
  203. package/dist/infrastructure/mcp/McpResponses.d.ts +14 -0
  204. package/dist/infrastructure/mcp/McpResponses.d.ts.map +1 -0
  205. package/dist/infrastructure/mcp/McpResponses.js +49 -0
  206. package/dist/infrastructure/mcp/McpResponses.js.map +1 -0
  207. package/dist/infrastructure/mcp/McpToolCatalog.d.ts +68 -0
  208. package/dist/infrastructure/mcp/McpToolCatalog.d.ts.map +1 -0
  209. package/dist/infrastructure/mcp/McpToolCatalog.js +231 -0
  210. package/dist/infrastructure/mcp/McpToolCatalog.js.map +1 -0
  211. package/dist/infrastructure/mcp/index.d.ts +4 -0
  212. package/dist/infrastructure/mcp/index.d.ts.map +1 -0
  213. package/dist/infrastructure/mcp/index.js +4 -0
  214. package/dist/infrastructure/mcp/index.js.map +1 -0
  215. package/dist/infrastructure/persistence/DatabaseEntryRepository.d.ts +35 -0
  216. package/dist/infrastructure/persistence/DatabaseEntryRepository.d.ts.map +1 -0
  217. package/dist/infrastructure/persistence/DatabaseEntryRepository.js +228 -0
  218. package/dist/infrastructure/persistence/DatabaseEntryRepository.js.map +1 -0
  219. package/dist/infrastructure/persistence/DatabaseSiteConfigRepository.d.ts +12 -0
  220. package/dist/infrastructure/persistence/DatabaseSiteConfigRepository.d.ts.map +1 -0
  221. package/dist/infrastructure/persistence/DatabaseSiteConfigRepository.js +101 -0
  222. package/dist/infrastructure/persistence/DatabaseSiteConfigRepository.js.map +1 -0
  223. package/dist/infrastructure/persistence/LifecycleHookingEntryRepository.d.ts +74 -0
  224. package/dist/infrastructure/persistence/LifecycleHookingEntryRepository.d.ts.map +1 -0
  225. package/dist/infrastructure/persistence/LifecycleHookingEntryRepository.js +208 -0
  226. package/dist/infrastructure/persistence/LifecycleHookingEntryRepository.js.map +1 -0
  227. package/dist/infrastructure/persistence/index.d.ts +4 -0
  228. package/dist/infrastructure/persistence/index.d.ts.map +1 -0
  229. package/dist/infrastructure/persistence/index.js +4 -0
  230. package/dist/infrastructure/persistence/index.js.map +1 -0
  231. package/dist/infrastructure/render/HtmlPublishOrchestrator.d.ts +34 -0
  232. package/dist/infrastructure/render/HtmlPublishOrchestrator.d.ts.map +1 -0
  233. package/dist/infrastructure/render/HtmlPublishOrchestrator.js +116 -0
  234. package/dist/infrastructure/render/HtmlPublishOrchestrator.js.map +1 -0
  235. package/dist/infrastructure/render/index.d.ts +2 -0
  236. package/dist/infrastructure/render/index.d.ts.map +1 -0
  237. package/dist/infrastructure/render/index.js +2 -0
  238. package/dist/infrastructure/render/index.js.map +1 -0
  239. package/dist/runtime.d.ts +132 -0
  240. package/dist/runtime.d.ts.map +1 -0
  241. package/dist/runtime.js +142 -0
  242. package/dist/runtime.js.map +1 -0
  243. package/dist/usecase/boot/ValidateBootUseCase.d.ts +57 -0
  244. package/dist/usecase/boot/ValidateBootUseCase.d.ts.map +1 -0
  245. package/dist/usecase/boot/ValidateBootUseCase.js +181 -0
  246. package/dist/usecase/boot/ValidateBootUseCase.js.map +1 -0
  247. package/dist/usecase/boot/index.d.ts +2 -0
  248. package/dist/usecase/boot/index.d.ts.map +1 -0
  249. package/dist/usecase/boot/index.js +2 -0
  250. package/dist/usecase/boot/index.js.map +1 -0
  251. package/dist/usecase/content/ArchiveUseCase.d.ts +20 -0
  252. package/dist/usecase/content/ArchiveUseCase.d.ts.map +1 -0
  253. package/dist/usecase/content/ArchiveUseCase.js +47 -0
  254. package/dist/usecase/content/ArchiveUseCase.js.map +1 -0
  255. package/dist/usecase/content/ContentPublishEffects.d.ts +11 -0
  256. package/dist/usecase/content/ContentPublishEffects.d.ts.map +1 -0
  257. package/dist/usecase/content/ContentPublishEffects.js +21 -0
  258. package/dist/usecase/content/ContentPublishEffects.js.map +1 -0
  259. package/dist/usecase/content/CreateDraftUseCase.d.ts +22 -0
  260. package/dist/usecase/content/CreateDraftUseCase.d.ts.map +1 -0
  261. package/dist/usecase/content/CreateDraftUseCase.js +61 -0
  262. package/dist/usecase/content/CreateDraftUseCase.js.map +1 -0
  263. package/dist/usecase/content/DeleteEntryUseCase.d.ts +20 -0
  264. package/dist/usecase/content/DeleteEntryUseCase.d.ts.map +1 -0
  265. package/dist/usecase/content/DeleteEntryUseCase.js +34 -0
  266. package/dist/usecase/content/DeleteEntryUseCase.js.map +1 -0
  267. package/dist/usecase/content/GetEntryUseCase.d.ts +13 -0
  268. package/dist/usecase/content/GetEntryUseCase.d.ts.map +1 -0
  269. package/dist/usecase/content/GetEntryUseCase.js +24 -0
  270. package/dist/usecase/content/GetEntryUseCase.js.map +1 -0
  271. package/dist/usecase/content/ListEntriesUseCase.d.ts +39 -0
  272. package/dist/usecase/content/ListEntriesUseCase.d.ts.map +1 -0
  273. package/dist/usecase/content/ListEntriesUseCase.js +58 -0
  274. package/dist/usecase/content/ListEntriesUseCase.js.map +1 -0
  275. package/dist/usecase/content/RequestPublishUseCase.d.ts +30 -0
  276. package/dist/usecase/content/RequestPublishUseCase.d.ts.map +1 -0
  277. package/dist/usecase/content/RequestPublishUseCase.js +111 -0
  278. package/dist/usecase/content/RequestPublishUseCase.js.map +1 -0
  279. package/dist/usecase/content/UnpublishUseCase.d.ts +19 -0
  280. package/dist/usecase/content/UnpublishUseCase.d.ts.map +1 -0
  281. package/dist/usecase/content/UnpublishUseCase.js +46 -0
  282. package/dist/usecase/content/UnpublishUseCase.js.map +1 -0
  283. package/dist/usecase/content/UpdateDraftUseCase.d.ts +20 -0
  284. package/dist/usecase/content/UpdateDraftUseCase.d.ts.map +1 -0
  285. package/dist/usecase/content/UpdateDraftUseCase.js +86 -0
  286. package/dist/usecase/content/UpdateDraftUseCase.js.map +1 -0
  287. package/dist/usecase/content/diagnostics.d.ts +26 -0
  288. package/dist/usecase/content/diagnostics.d.ts.map +1 -0
  289. package/dist/usecase/content/diagnostics.js +100 -0
  290. package/dist/usecase/content/diagnostics.js.map +1 -0
  291. package/dist/usecase/content/index.d.ts +15 -0
  292. package/dist/usecase/content/index.d.ts.map +1 -0
  293. package/dist/usecase/content/index.js +15 -0
  294. package/dist/usecase/content/index.js.map +1 -0
  295. package/dist/usecase/dto/content/index.d.ts +73 -0
  296. package/dist/usecase/dto/content/index.d.ts.map +1 -0
  297. package/dist/usecase/dto/content/index.js +2 -0
  298. package/dist/usecase/dto/content/index.js.map +1 -0
  299. package/dist/usecase/dto/index.d.ts +13 -0
  300. package/dist/usecase/dto/index.d.ts.map +1 -0
  301. package/dist/usecase/dto/index.js +13 -0
  302. package/dist/usecase/dto/index.js.map +1 -0
  303. package/dist/usecase/dto/lifecycle/index.d.ts +15 -0
  304. package/dist/usecase/dto/lifecycle/index.d.ts.map +1 -0
  305. package/dist/usecase/dto/lifecycle/index.js +2 -0
  306. package/dist/usecase/dto/lifecycle/index.js.map +1 -0
  307. package/dist/usecase/dto/media/index.d.ts +32 -0
  308. package/dist/usecase/dto/media/index.d.ts.map +1 -0
  309. package/dist/usecase/dto/media/index.js +8 -0
  310. package/dist/usecase/dto/media/index.js.map +1 -0
  311. package/dist/usecase/dto/procedure/index.d.ts +37 -0
  312. package/dist/usecase/dto/procedure/index.d.ts.map +1 -0
  313. package/dist/usecase/dto/procedure/index.js +2 -0
  314. package/dist/usecase/dto/procedure/index.js.map +1 -0
  315. package/dist/usecase/dto/render/ComposeEntrySeoMetaRequest.d.ts +14 -0
  316. package/dist/usecase/dto/render/ComposeEntrySeoMetaRequest.d.ts.map +1 -0
  317. package/dist/usecase/dto/render/ComposeEntrySeoMetaRequest.js +2 -0
  318. package/dist/usecase/dto/render/ComposeEntrySeoMetaRequest.js.map +1 -0
  319. package/dist/usecase/dto/render/ComposeLlmsTxtRequest.d.ts +8 -0
  320. package/dist/usecase/dto/render/ComposeLlmsTxtRequest.d.ts.map +1 -0
  321. package/dist/usecase/dto/render/ComposeLlmsTxtRequest.js +2 -0
  322. package/dist/usecase/dto/render/ComposeLlmsTxtRequest.js.map +1 -0
  323. package/dist/usecase/dto/render/ComposeSitemapRequest.d.ts +11 -0
  324. package/dist/usecase/dto/render/ComposeSitemapRequest.d.ts.map +1 -0
  325. package/dist/usecase/dto/render/ComposeSitemapRequest.js +2 -0
  326. package/dist/usecase/dto/render/ComposeSitemapRequest.js.map +1 -0
  327. package/dist/usecase/dto/render/PreviewEntryRequest.d.ts +27 -0
  328. package/dist/usecase/dto/render/PreviewEntryRequest.d.ts.map +1 -0
  329. package/dist/usecase/dto/render/PreviewEntryRequest.js +2 -0
  330. package/dist/usecase/dto/render/PreviewEntryRequest.js.map +1 -0
  331. package/dist/usecase/dto/render/RenderEntryLiveRequest.d.ts +17 -0
  332. package/dist/usecase/dto/render/RenderEntryLiveRequest.d.ts.map +1 -0
  333. package/dist/usecase/dto/render/RenderEntryLiveRequest.js +2 -0
  334. package/dist/usecase/dto/render/RenderEntryLiveRequest.js.map +1 -0
  335. package/dist/usecase/dto/render/RenderListLiveRequest.d.ts +11 -0
  336. package/dist/usecase/dto/render/RenderListLiveRequest.d.ts.map +1 -0
  337. package/dist/usecase/dto/render/RenderListLiveRequest.js +2 -0
  338. package/dist/usecase/dto/render/RenderListLiveRequest.js.map +1 -0
  339. package/dist/usecase/dto/render/index.d.ts +7 -0
  340. package/dist/usecase/dto/render/index.d.ts.map +1 -0
  341. package/dist/usecase/dto/render/index.js +7 -0
  342. package/dist/usecase/dto/render/index.js.map +1 -0
  343. package/dist/usecase/dto/view/ExecuteViewRequest.d.ts +16 -0
  344. package/dist/usecase/dto/view/ExecuteViewRequest.d.ts.map +1 -0
  345. package/dist/usecase/dto/view/ExecuteViewRequest.js +2 -0
  346. package/dist/usecase/dto/view/ExecuteViewRequest.js.map +1 -0
  347. package/dist/usecase/dto/view/index.d.ts +2 -0
  348. package/dist/usecase/dto/view/index.d.ts.map +1 -0
  349. package/dist/usecase/dto/view/index.js +2 -0
  350. package/dist/usecase/dto/view/index.js.map +1 -0
  351. package/dist/usecase/index.d.ts +16 -0
  352. package/dist/usecase/index.d.ts.map +1 -0
  353. package/dist/usecase/index.js +16 -0
  354. package/dist/usecase/index.js.map +1 -0
  355. package/dist/usecase/lifecycle/RunDeferredHookUseCase.d.ts +26 -0
  356. package/dist/usecase/lifecycle/RunDeferredHookUseCase.d.ts.map +1 -0
  357. package/dist/usecase/lifecycle/RunDeferredHookUseCase.js +44 -0
  358. package/dist/usecase/lifecycle/RunDeferredHookUseCase.js.map +1 -0
  359. package/dist/usecase/lifecycle/RunLifecycleHooksUseCase.d.ts +38 -0
  360. package/dist/usecase/lifecycle/RunLifecycleHooksUseCase.d.ts.map +1 -0
  361. package/dist/usecase/lifecycle/RunLifecycleHooksUseCase.js +67 -0
  362. package/dist/usecase/lifecycle/RunLifecycleHooksUseCase.js.map +1 -0
  363. package/dist/usecase/lifecycle/index.d.ts +3 -0
  364. package/dist/usecase/lifecycle/index.d.ts.map +1 -0
  365. package/dist/usecase/lifecycle/index.js +3 -0
  366. package/dist/usecase/lifecycle/index.js.map +1 -0
  367. package/dist/usecase/media/CommitMediaUploadUseCase.d.ts +15 -0
  368. package/dist/usecase/media/CommitMediaUploadUseCase.d.ts.map +1 -0
  369. package/dist/usecase/media/CommitMediaUploadUseCase.js +43 -0
  370. package/dist/usecase/media/CommitMediaUploadUseCase.js.map +1 -0
  371. package/dist/usecase/media/CreateMediaUploadUseCase.d.ts +18 -0
  372. package/dist/usecase/media/CreateMediaUploadUseCase.d.ts.map +1 -0
  373. package/dist/usecase/media/CreateMediaUploadUseCase.js +71 -0
  374. package/dist/usecase/media/CreateMediaUploadUseCase.js.map +1 -0
  375. package/dist/usecase/media/PendingUploadRecord.d.ts +17 -0
  376. package/dist/usecase/media/PendingUploadRecord.d.ts.map +1 -0
  377. package/dist/usecase/media/PendingUploadRecord.js +2 -0
  378. package/dist/usecase/media/PendingUploadRecord.js.map +1 -0
  379. package/dist/usecase/media/diagnostics.d.ts +15 -0
  380. package/dist/usecase/media/diagnostics.d.ts.map +1 -0
  381. package/dist/usecase/media/diagnostics.js +88 -0
  382. package/dist/usecase/media/diagnostics.js.map +1 -0
  383. package/dist/usecase/media/index.d.ts +4 -0
  384. package/dist/usecase/media/index.d.ts.map +1 -0
  385. package/dist/usecase/media/index.js +4 -0
  386. package/dist/usecase/media/index.js.map +1 -0
  387. package/dist/usecase/media/mediaAllowlist.d.ts +30 -0
  388. package/dist/usecase/media/mediaAllowlist.d.ts.map +1 -0
  389. package/dist/usecase/media/mediaAllowlist.js +53 -0
  390. package/dist/usecase/media/mediaAllowlist.js.map +1 -0
  391. package/dist/usecase/procedure/InvokeBuiltinUseCase.d.ts +43 -0
  392. package/dist/usecase/procedure/InvokeBuiltinUseCase.d.ts.map +1 -0
  393. package/dist/usecase/procedure/InvokeBuiltinUseCase.js +202 -0
  394. package/dist/usecase/procedure/InvokeBuiltinUseCase.js.map +1 -0
  395. package/dist/usecase/procedure/InvokeProcedureUseCase.d.ts +50 -0
  396. package/dist/usecase/procedure/InvokeProcedureUseCase.d.ts.map +1 -0
  397. package/dist/usecase/procedure/InvokeProcedureUseCase.js +191 -0
  398. package/dist/usecase/procedure/InvokeProcedureUseCase.js.map +1 -0
  399. package/dist/usecase/procedure/index.d.ts +3 -0
  400. package/dist/usecase/procedure/index.d.ts.map +1 -0
  401. package/dist/usecase/procedure/index.js +3 -0
  402. package/dist/usecase/procedure/index.js.map +1 -0
  403. package/dist/usecase/render/ComposeEntrySeoMetaUseCase.d.ts +25 -0
  404. package/dist/usecase/render/ComposeEntrySeoMetaUseCase.d.ts.map +1 -0
  405. package/dist/usecase/render/ComposeEntrySeoMetaUseCase.js +55 -0
  406. package/dist/usecase/render/ComposeEntrySeoMetaUseCase.js.map +1 -0
  407. package/dist/usecase/render/ComposeLlmsTxtUseCase.d.ts +19 -0
  408. package/dist/usecase/render/ComposeLlmsTxtUseCase.d.ts.map +1 -0
  409. package/dist/usecase/render/ComposeLlmsTxtUseCase.js +40 -0
  410. package/dist/usecase/render/ComposeLlmsTxtUseCase.js.map +1 -0
  411. package/dist/usecase/render/ComposeSitemapUseCase.d.ts +15 -0
  412. package/dist/usecase/render/ComposeSitemapUseCase.d.ts.map +1 -0
  413. package/dist/usecase/render/ComposeSitemapUseCase.js +29 -0
  414. package/dist/usecase/render/ComposeSitemapUseCase.js.map +1 -0
  415. package/dist/usecase/render/PreviewEntryUseCase.d.ts +26 -0
  416. package/dist/usecase/render/PreviewEntryUseCase.d.ts.map +1 -0
  417. package/dist/usecase/render/PreviewEntryUseCase.js +69 -0
  418. package/dist/usecase/render/PreviewEntryUseCase.js.map +1 -0
  419. package/dist/usecase/render/RenderEntryLiveUseCase.d.ts +35 -0
  420. package/dist/usecase/render/RenderEntryLiveUseCase.d.ts.map +1 -0
  421. package/dist/usecase/render/RenderEntryLiveUseCase.js +59 -0
  422. package/dist/usecase/render/RenderEntryLiveUseCase.js.map +1 -0
  423. package/dist/usecase/render/RenderListLiveUseCase.d.ts +23 -0
  424. package/dist/usecase/render/RenderListLiveUseCase.d.ts.map +1 -0
  425. package/dist/usecase/render/RenderListLiveUseCase.js +41 -0
  426. package/dist/usecase/render/RenderListLiveUseCase.js.map +1 -0
  427. package/dist/usecase/render/index.d.ts +7 -0
  428. package/dist/usecase/render/index.d.ts.map +1 -0
  429. package/dist/usecase/render/index.js +10 -0
  430. package/dist/usecase/render/index.js.map +1 -0
  431. package/dist/usecase/view/ExecuteViewUseCase.d.ts +31 -0
  432. package/dist/usecase/view/ExecuteViewUseCase.d.ts.map +1 -0
  433. package/dist/usecase/view/ExecuteViewUseCase.js +78 -0
  434. package/dist/usecase/view/ExecuteViewUseCase.js.map +1 -0
  435. package/dist/usecase/view/index.d.ts +2 -0
  436. package/dist/usecase/view/index.d.ts.map +1 -0
  437. package/dist/usecase/view/index.js +2 -0
  438. package/dist/usecase/view/index.js.map +1 -0
  439. package/package.json +49 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArchiveUseCase.js","sourceRoot":"","sources":["../../../src/usecase/content/ArchiveUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,eAAe,GAEhB,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EACL,cAAc,GAEf,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,2BAA2B,EAC3B,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAE1B;;;;GAIG;AACH,MAAM,OAAO,cAAc;IAEN;IACA;IACA;IACA;IAJnB,YACmB,OAAwB,EACxB,OAA4C,EAC5C,KAAY,EACZ,OAA+B;QAH/B,YAAO,GAAP,OAAO,CAAiB;QACxB,YAAO,GAAP,OAAO,CAAqC;QAC5C,UAAK,GAAL,KAAK,CAAO;QACZ,YAAO,GAAP,OAAO,CAAwB;IAC/C,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,OAAuB;QACnC,MAAM,MAAM,GAAG,mBAAmB,OAAO,CAAC,EAAE,EAAE,CAAC;QAC/C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,eAAe,CAAC,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACjF,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACrD,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC;YACxD,MAAM,IAAI,eAAe,CACvB,2BAA2B,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,CACjE,CAAC;QACJ,CAAC;QACD,4DAA4D;QAC5D,6DAA6D;QAC7D,mDAAmD;QACnD,8DAA8D;QAC9D,+CAA+C;QAC/C,MAAM,QAAQ,GAAG,MAAM,sBAAsB,CAAC,MAAM,EAAE,GAAG,EAAE,CACzD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;YACnB,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,eAAe,EAAE,QAAQ,CAAC,OAAO;YACjC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;YACrB,WAAW,EAAE,OAAO,CAAC,GAAG;YACxB,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC,CAAC,CACH,CAAC;QACF,MAAM,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;QAChD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF"}
@@ -0,0 +1,11 @@
1
+ import type { TemplateRegistry } from "../../domain/model/TemplateRegistry.js";
2
+ import type { PublishOrchestrator } from "../../domain/port/PublishOrchestrator.js";
3
+ import type { SiteConfigRepository } from "../../domain/port/SiteConfigRepository.js";
4
+ export interface ContentPublishEffects {
5
+ readonly publishOrchestrator: PublishOrchestrator;
6
+ readonly siteConfig: SiteConfigRepository;
7
+ readonly templates: TemplateRegistry;
8
+ }
9
+ export declare function publishCache(effects: ContentPublishEffects | undefined, entryId: string): Promise<void>;
10
+ export declare function unpublishCache(effects: ContentPublishEffects | undefined, entryId: string): Promise<void>;
11
+ //# sourceMappingURL=ContentPublishEffects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContentPublishEffects.d.ts","sourceRoot":"","sources":["../../../src/usecase/content/ContentPublishEffects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC/E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEtF,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;IAClD,QAAQ,CAAC,UAAU,EAAE,oBAAoB,CAAC;IAC1C,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;CACtC;AAED,wBAAsB,YAAY,CAChC,OAAO,EAAE,qBAAqB,GAAG,SAAS,EAC1C,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAQf;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,qBAAqB,GAAG,SAAS,EAC1C,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAQf"}
@@ -0,0 +1,21 @@
1
+ export async function publishCache(effects, entryId) {
2
+ if (!effects)
3
+ return;
4
+ const site = await effects.siteConfig.load();
5
+ await effects.publishOrchestrator.publish({
6
+ entryId,
7
+ site,
8
+ templates: effects.templates,
9
+ });
10
+ }
11
+ export async function unpublishCache(effects, entryId) {
12
+ if (!effects)
13
+ return;
14
+ const site = await effects.siteConfig.load();
15
+ await effects.publishOrchestrator.unpublish({
16
+ entryId,
17
+ site,
18
+ templates: effects.templates,
19
+ });
20
+ }
21
+ //# sourceMappingURL=ContentPublishEffects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContentPublishEffects.js","sourceRoot":"","sources":["../../../src/usecase/content/ContentPublishEffects.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAA0C,EAC1C,OAAe;IAEf,IAAI,CAAC,OAAO;QAAE,OAAO;IACrB,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IAC7C,MAAM,OAAO,CAAC,mBAAmB,CAAC,OAAO,CAAC;QACxC,OAAO;QACP,IAAI;QACJ,SAAS,EAAE,OAAO,CAAC,SAAS;KAC7B,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAA0C,EAC1C,OAAe;IAEf,IAAI,CAAC,OAAO;QAAE,OAAO;IACrB,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IAC7C,MAAM,OAAO,CAAC,mBAAmB,CAAC,SAAS,CAAC;QAC1C,OAAO;QACP,IAAI;QACJ,SAAS,EAAE,OAAO,CAAC,SAAS;KAC7B,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { type SchemaManifest } from "@aotter/mantle-spec";
2
+ import type { EntryRow } from "../../domain/model/EntryRow.js";
3
+ import type { Clock } from "../../domain/port/Clock.js";
4
+ import type { EntryRepository } from "../../domain/port/EntryRepository.js";
5
+ import type { IdGenerator } from "../../domain/port/IdGenerator.js";
6
+ import type { SiteConfigRepository } from "../../domain/port/SiteConfigRepository.js";
7
+ import type { CreateDraftRequest } from "../dto/content/index.js";
8
+ /**
9
+ * `CreateDraftUseCase` — create a new draft entry. Both `simple` and
10
+ * `editorial` lifecycles start in `'draft'`; the difference shows up
11
+ * at publish time.
12
+ */
13
+ export declare class CreateDraftUseCase {
14
+ private readonly entries;
15
+ private readonly schemas;
16
+ private readonly clock;
17
+ private readonly idgen;
18
+ private readonly siteConfig?;
19
+ constructor(entries: EntryRepository, schemas: ReadonlyMap<string, SchemaManifest>, clock: Clock, idgen: IdGenerator, siteConfig?: SiteConfigRepository | undefined);
20
+ execute(request: CreateDraftRequest): Promise<EntryRow>;
21
+ }
22
+ //# sourceMappingURL=CreateDraftUseCase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreateDraftUseCase.d.ts","sourceRoot":"","sources":["../../../src/usecase/content/CreateDraftUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EACpB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEtF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAOlE;;;;GAIG;AACH,qBAAa,kBAAkB;IAE3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAJX,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,EAC5C,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,WAAW,EAClB,UAAU,CAAC,EAAE,oBAAoB,YAAA;IAG9C,OAAO,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,QAAQ,CAAC;CAgC9D"}
@@ -0,0 +1,61 @@
1
+ import { DiagnosticError, } from "@aotter/mantle-spec";
2
+ import { projectAndStamp } from "../../domain/service/BuiltinProjector.js";
3
+ import { schemaUnknownDiagnostic, withConflictDiagnostic, } from "./diagnostics.js";
4
+ import { assertEntryWritable } from "../../domain/service/io/EntryWriteGuard.js";
5
+ /**
6
+ * `CreateDraftUseCase` — create a new draft entry. Both `simple` and
7
+ * `editorial` lifecycles start in `'draft'`; the difference shows up
8
+ * at publish time.
9
+ */
10
+ export class CreateDraftUseCase {
11
+ entries;
12
+ schemas;
13
+ clock;
14
+ idgen;
15
+ siteConfig;
16
+ constructor(entries, schemas, clock, idgen, siteConfig) {
17
+ this.entries = entries;
18
+ this.schemas = schemas;
19
+ this.clock = clock;
20
+ this.idgen = idgen;
21
+ this.siteConfig = siteConfig;
22
+ }
23
+ async execute(request) {
24
+ const opPath = `usecase/CreateDraft/${request.collection}`;
25
+ const schema = this.schemas.get(request.collection);
26
+ if (!schema) {
27
+ throw new DiagnosticError(schemaUnknownDiagnostic(opPath, request.collection, [...this.schemas.keys()]));
28
+ }
29
+ const id = this.idgen.next();
30
+ const now = this.clock.now();
31
+ const ctx = authoringContext(request.ctx, request.authorId);
32
+ const data = projectAndStamp({ schema, input: request.data, ctx, clockNow: now });
33
+ await assertEntryWritable({
34
+ opPath,
35
+ entries: this.entries,
36
+ schema,
37
+ data,
38
+ siteConfig: this.siteConfig,
39
+ });
40
+ return withConflictDiagnostic(opPath, () => this.entries.create({
41
+ id,
42
+ collection: request.collection,
43
+ status: "draft",
44
+ data,
45
+ authorId: request.authorId,
46
+ now,
47
+ hookContext: ctx,
48
+ originalInput: request.originalInput,
49
+ }));
50
+ }
51
+ }
52
+ function authoringContext(ctx, authorId) {
53
+ if (ctx)
54
+ return ctx;
55
+ return {
56
+ user: authorId ? { id: authorId } : null,
57
+ staff: null,
58
+ env: {},
59
+ };
60
+ }
61
+ //# sourceMappingURL=CreateDraftUseCase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreateDraftUseCase.js","sourceRoot":"","sources":["../../../src/usecase/content/CreateDraftUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,GAEhB,MAAM,qBAAqB,CAAC;AAO7B,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAE3E,OAAO,EACL,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AAEjF;;;;GAIG;AACH,MAAM,OAAO,kBAAkB;IAEV;IACA;IACA;IACA;IACA;IALnB,YACmB,OAAwB,EACxB,OAA4C,EAC5C,KAAY,EACZ,KAAkB,EAClB,UAAiC;QAJjC,YAAO,GAAP,OAAO,CAAiB;QACxB,YAAO,GAAP,OAAO,CAAqC;QAC5C,UAAK,GAAL,KAAK,CAAO;QACZ,UAAK,GAAL,KAAK,CAAa;QAClB,eAAU,GAAV,UAAU,CAAuB;IACjD,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,OAA2B;QACvC,MAAM,MAAM,GAAG,uBAAuB,OAAO,CAAC,UAAU,EAAE,CAAC;QAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,eAAe,CACvB,uBAAuB,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAC9E,CAAC;QACJ,CAAC;QACD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5D,MAAM,IAAI,GAAG,eAAe,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;QAClF,MAAM,mBAAmB,CAAC;YACxB,MAAM;YACN,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM;YACN,IAAI;YACJ,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC,CAAC;QACH,OAAO,sBAAsB,CAAC,MAAM,EAAE,GAAG,EAAE,CACzC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YAClB,EAAE;YACF,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,MAAM,EAAE,OAAO;YACf,IAAI;YACJ,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,GAAG;YACH,WAAW,EAAE,GAAG;YAChB,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC,CAAC,CACH,CAAC;IACJ,CAAC;CACF;AAED,SAAS,gBAAgB,CAAC,GAA+B,EAAE,QAAuB;IAChF,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC;IACpB,OAAO;QACL,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI;QACxC,KAAK,EAAE,IAAI;QACX,GAAG,EAAE,EAAE;KACR,CAAC;AACJ,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { EntryRepository } from "../../domain/port/EntryRepository.js";
2
+ import type { DeleteEntryRequest, DeleteEntryResponse } from "../dto/content/index.js";
3
+ /**
4
+ * `DeleteEntryUseCase` — permanently delete an entry + cascade
5
+ * revisions / approvals. Distinct from `Archive` — archive is a
6
+ * status flip, delete removes rows.
7
+ *
8
+ * The chokepoint enforces the cascade via `DatabaseDriver.batch`. We
9
+ * still read the row first so missing ids surface as a structured
10
+ * `NOT_FOUND` (matching every other content-op use case) instead of
11
+ * a silent `{ removed: false }` — callers building UIs need the
12
+ * diagnostic to distinguish "you deleted nothing" from "you tried to
13
+ * delete a ghost."
14
+ */
15
+ export declare class DeleteEntryUseCase {
16
+ private readonly entries;
17
+ constructor(entries: EntryRepository);
18
+ execute(request: DeleteEntryRequest): Promise<DeleteEntryResponse>;
19
+ }
20
+ //# sourceMappingURL=DeleteEntryUseCase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeleteEntryUseCase.d.ts","sourceRoot":"","sources":["../../../src/usecase/content/DeleteEntryUseCase.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,yBAAyB,CAAC;AAGjC;;;;;;;;;;;GAWG;AACH,qBAAa,kBAAkB;IACjB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,eAAe;IAE/C,OAAO,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAazE"}
@@ -0,0 +1,34 @@
1
+ import { DiagnosticError } from "@aotter/mantle-spec";
2
+ import { notFoundDiagnostic } from "./diagnostics.js";
3
+ /**
4
+ * `DeleteEntryUseCase` — permanently delete an entry + cascade
5
+ * revisions / approvals. Distinct from `Archive` — archive is a
6
+ * status flip, delete removes rows.
7
+ *
8
+ * The chokepoint enforces the cascade via `DatabaseDriver.batch`. We
9
+ * still read the row first so missing ids surface as a structured
10
+ * `NOT_FOUND` (matching every other content-op use case) instead of
11
+ * a silent `{ removed: false }` — callers building UIs need the
12
+ * diagnostic to distinguish "you deleted nothing" from "you tried to
13
+ * delete a ghost."
14
+ */
15
+ export class DeleteEntryUseCase {
16
+ entries;
17
+ constructor(entries) {
18
+ this.entries = entries;
19
+ }
20
+ async execute(request) {
21
+ const opPath = `usecase/DeleteEntry/${request.id}`;
22
+ const existing = await this.entries.get(request.id);
23
+ if (!existing) {
24
+ throw new DiagnosticError(notFoundDiagnostic(opPath, "<unknown>", request.id));
25
+ }
26
+ return this.entries.delete({
27
+ id: request.id,
28
+ collection: existing.collection,
29
+ hookContext: request.ctx,
30
+ originalInput: request.originalInput,
31
+ });
32
+ }
33
+ }
34
+ //# sourceMappingURL=DeleteEntryUseCase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeleteEntryUseCase.js","sourceRoot":"","sources":["../../../src/usecase/content/DeleteEntryUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAMtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,kBAAkB;IACA;IAA7B,YAA6B,OAAwB;QAAxB,YAAO,GAAP,OAAO,CAAiB;IAAG,CAAC;IAEzD,KAAK,CAAC,OAAO,CAAC,OAA2B;QACvC,MAAM,MAAM,GAAG,uBAAuB,OAAO,CAAC,EAAE,EAAE,CAAC;QACnD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,eAAe,CAAC,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACjF,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YACzB,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,WAAW,EAAE,OAAO,CAAC,GAAG;YACxB,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,13 @@
1
+ import type { EntryRow } from "../../domain/model/EntryRow.js";
2
+ import type { EntryRepository } from "../../domain/port/EntryRepository.js";
3
+ import type { GetEntryRequest } from "../dto/content/index.js";
4
+ /**
5
+ * `GetEntryUseCase` — fetch an entry by id, optionally asserting its
6
+ * collection matches.
7
+ */
8
+ export declare class GetEntryUseCase {
9
+ private readonly entries;
10
+ constructor(entries: EntryRepository);
11
+ execute(request: GetEntryRequest): Promise<EntryRow>;
12
+ }
13
+ //# sourceMappingURL=GetEntryUseCase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GetEntryUseCase.d.ts","sourceRoot":"","sources":["../../../src/usecase/content/GetEntryUseCase.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG/D;;;GAGG;AACH,qBAAa,eAAe;IACd,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,eAAe;IAE/C,OAAO,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC;CAe3D"}
@@ -0,0 +1,24 @@
1
+ import { DiagnosticError } from "@aotter/mantle-spec";
2
+ import { notFoundDiagnostic } from "./diagnostics.js";
3
+ /**
4
+ * `GetEntryUseCase` — fetch an entry by id, optionally asserting its
5
+ * collection matches.
6
+ */
7
+ export class GetEntryUseCase {
8
+ entries;
9
+ constructor(entries) {
10
+ this.entries = entries;
11
+ }
12
+ async execute(request) {
13
+ const opPath = `usecase/GetEntry/${request.id}`;
14
+ const row = await this.entries.get(request.id);
15
+ if (!row) {
16
+ throw new DiagnosticError(notFoundDiagnostic(opPath, request.collection ?? "<any>", request.id));
17
+ }
18
+ if (request.collection && row.collection !== request.collection) {
19
+ throw new DiagnosticError(notFoundDiagnostic(opPath, request.collection, request.id));
20
+ }
21
+ return row;
22
+ }
23
+ }
24
+ //# sourceMappingURL=GetEntryUseCase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GetEntryUseCase.js","sourceRoot":"","sources":["../../../src/usecase/content/GetEntryUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAItD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD;;;GAGG;AACH,MAAM,OAAO,eAAe;IACG;IAA7B,YAA6B,OAAwB;QAAxB,YAAO,GAAP,OAAO,CAAiB;IAAG,CAAC;IAEzD,KAAK,CAAC,OAAO,CAAC,OAAwB;QACpC,MAAM,MAAM,GAAG,oBAAoB,OAAO,CAAC,EAAE,EAAE,CAAC;QAChD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,eAAe,CACvB,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,IAAI,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,CACtE,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,KAAK,OAAO,CAAC,UAAU,EAAE,CAAC;YAChE,MAAM,IAAI,eAAe,CACvB,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,CAAC,CAC3D,CAAC;QACJ,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF"}
@@ -0,0 +1,39 @@
1
+ import { type SchemaManifest } from "@aotter/mantle-spec";
2
+ import type { EntryRow } from "../../domain/model/EntryRow.js";
3
+ import type { EntryRepository } from "../../domain/port/EntryRepository.js";
4
+ import type { ListEntriesRequest, ListEntriesResponse } from "../dto/content/index.js";
5
+ /**
6
+ * `ListEntriesUseCase` — list entries in a collection, optionally
7
+ * filtered by status. Asserts the collection is a declared Schema.
8
+ *
9
+ * Two methods, two audiences:
10
+ *
11
+ * - `execute(req): readonly EntryRow[]` — what app code wants. A flat
12
+ * array, ready for `.find(...)` / `.filter(...)` / `.map(...)`. No
13
+ * pagination wrapper to unwrap. Returns one clamped page; if the
14
+ * collection has more rows than `limit`, they're silently dropped
15
+ * — agent authors who care about that reach for `executePage`.
16
+ *
17
+ * - `executePage(req): ListEntriesResponse<EntryRow>` — what
18
+ * cursor-aware callers (MCP `list_entries`, admin pagination,
19
+ * long-tail walkers) want. Returns `{ rows, nextCursor? }`.
20
+ *
21
+ * Why split: the CLAM thesis says the runtime should carry complexity
22
+ * away from authors. Asking a starter author to write
23
+ * `runtime.listEntries.execute(...).rows.find(...)` for the 99% case
24
+ * (small collection, single page is enough) is the runtime pushing
25
+ * cursor-walking concerns into authoring code. Two methods is one
26
+ * extra symbol on the use case — paid by the runtime, not the author.
27
+ *
28
+ * Caller-supplied `limit` is clamped at this layer (the trust
29
+ * boundary between MCP / admin transports and the chokepoint
30
+ * `EntryRepository`). Cursor is round-tripped opaquely.
31
+ */
32
+ export declare class ListEntriesUseCase {
33
+ private readonly entries;
34
+ private readonly schemas;
35
+ constructor(entries: EntryRepository, schemas: ReadonlyMap<string, SchemaManifest>);
36
+ execute(request: ListEntriesRequest): Promise<readonly EntryRow[]>;
37
+ executePage(request: ListEntriesRequest): Promise<ListEntriesResponse<EntryRow>>;
38
+ }
39
+ //# sourceMappingURL=ListEntriesUseCase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListEntriesUseCase.d.ts","sourceRoot":"","sources":["../../../src/usecase/content/ListEntriesUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAE5E,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,yBAAyB,CAAC;AAGjC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,kBAAkB;IAE3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBADP,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC;IAGzD,OAAO,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,SAAS,QAAQ,EAAE,CAAC;IAKlE,WAAW,CACf,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;CAiB1C"}
@@ -0,0 +1,58 @@
1
+ import { DiagnosticError, } from "@aotter/mantle-spec";
2
+ import { clampLimit } from "../../domain/service/Pagination.js";
3
+ import { schemaUnknownDiagnostic } from "./diagnostics.js";
4
+ /**
5
+ * `ListEntriesUseCase` — list entries in a collection, optionally
6
+ * filtered by status. Asserts the collection is a declared Schema.
7
+ *
8
+ * Two methods, two audiences:
9
+ *
10
+ * - `execute(req): readonly EntryRow[]` — what app code wants. A flat
11
+ * array, ready for `.find(...)` / `.filter(...)` / `.map(...)`. No
12
+ * pagination wrapper to unwrap. Returns one clamped page; if the
13
+ * collection has more rows than `limit`, they're silently dropped
14
+ * — agent authors who care about that reach for `executePage`.
15
+ *
16
+ * - `executePage(req): ListEntriesResponse<EntryRow>` — what
17
+ * cursor-aware callers (MCP `list_entries`, admin pagination,
18
+ * long-tail walkers) want. Returns `{ rows, nextCursor? }`.
19
+ *
20
+ * Why split: the CLAM thesis says the runtime should carry complexity
21
+ * away from authors. Asking a starter author to write
22
+ * `runtime.listEntries.execute(...).rows.find(...)` for the 99% case
23
+ * (small collection, single page is enough) is the runtime pushing
24
+ * cursor-walking concerns into authoring code. Two methods is one
25
+ * extra symbol on the use case — paid by the runtime, not the author.
26
+ *
27
+ * Caller-supplied `limit` is clamped at this layer (the trust
28
+ * boundary between MCP / admin transports and the chokepoint
29
+ * `EntryRepository`). Cursor is round-tripped opaquely.
30
+ */
31
+ export class ListEntriesUseCase {
32
+ entries;
33
+ schemas;
34
+ constructor(entries, schemas) {
35
+ this.entries = entries;
36
+ this.schemas = schemas;
37
+ }
38
+ async execute(request) {
39
+ const page = await this.executePage(request);
40
+ return page.rows;
41
+ }
42
+ async executePage(request) {
43
+ const opPath = `usecase/ListEntries/${request.collection}`;
44
+ if (!this.schemas.has(request.collection)) {
45
+ throw new DiagnosticError(schemaUnknownDiagnostic(opPath, request.collection, [...this.schemas.keys()]));
46
+ }
47
+ // `ListEntriesResult` is structurally identical to
48
+ // `ListEntriesResponse<EntryRow>` — pass it through rather than
49
+ // re-spreading field-by-field.
50
+ return this.entries.list({
51
+ collection: request.collection,
52
+ status: request.status,
53
+ limit: clampLimit(request.limit),
54
+ cursor: request.cursor,
55
+ });
56
+ }
57
+ }
58
+ //# sourceMappingURL=ListEntriesUseCase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListEntriesUseCase.js","sourceRoot":"","sources":["../../../src/usecase/content/ListEntriesUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,GAEhB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAKhE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAE3D;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,OAAO,kBAAkB;IAEV;IACA;IAFnB,YACmB,OAAwB,EACxB,OAA4C;QAD5C,YAAO,GAAP,OAAO,CAAiB;QACxB,YAAO,GAAP,OAAO,CAAqC;IAC5D,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,OAA2B;QACvC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,WAAW,CACf,OAA2B;QAE3B,MAAM,MAAM,GAAG,uBAAuB,OAAO,CAAC,UAAU,EAAE,CAAC;QAC3D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,eAAe,CACvB,uBAAuB,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAC9E,CAAC;QACJ,CAAC;QACD,mDAAmD;QACnD,gEAAgE;QAChE,+BAA+B;QAC/B,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YACvB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC;YAChC,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,30 @@
1
+ import { type SchemaManifest } from "@aotter/mantle-spec";
2
+ import type { EntryRow } from "../../domain/model/EntryRow.js";
3
+ import type { Clock } from "../../domain/port/Clock.js";
4
+ import type { EntryRepository } from "../../domain/port/EntryRepository.js";
5
+ import type { SiteConfigRepository } from "../../domain/port/SiteConfigRepository.js";
6
+ import type { RequestPublishRequest } from "../dto/content/index.js";
7
+ import { type ContentPublishEffects } from "./ContentPublishEffects.js";
8
+ /**
9
+ * `RequestPublishUseCase` — publish or queue-for-approval, depending
10
+ * on the Schema's `lifecycle` mode.
11
+ *
12
+ * v0.1.0 ships `simple` only — request goes straight to `published`
13
+ * with a status guard via the spec's state machine. The Schema parser
14
+ * accepts `lifecycle: editorial` (it's a v0.1.x-committed mode in
15
+ * `V01_LIFECYCLE_MODES`), so this use case is the only line of
16
+ * defense: when a Schema declares `editorial`, it surfaces a
17
+ * structured `LIFECYCLE_NOT_IN_V010` error here at request time.
18
+ * The approvals-queue branch lands in v0.1.x.
19
+ */
20
+ export declare class RequestPublishUseCase {
21
+ private readonly entries;
22
+ private readonly schemas;
23
+ private readonly clock;
24
+ private readonly effects?;
25
+ private readonly siteConfig?;
26
+ constructor(entries: EntryRepository, schemas: ReadonlyMap<string, SchemaManifest>, clock: Clock, effects?: ContentPublishEffects | undefined, siteConfig?: SiteConfigRepository | undefined);
27
+ execute(request: RequestPublishRequest): Promise<EntryRow>;
28
+ private assertTranslatesParentPublished;
29
+ }
30
+ //# sourceMappingURL=RequestPublishUseCase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RequestPublishUseCase.d.ts","sourceRoot":"","sources":["../../../src/usecase/content/RequestPublishUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,cAAc,EACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,4BAA4B,CAAC;AAQpC;;;;;;;;;;;GAWG;AACH,qBAAa,qBAAqB;IAE9B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAJX,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,EAC5C,KAAK,EAAE,KAAK,EACZ,OAAO,CAAC,EAAE,qBAAqB,YAAA,EAC/B,UAAU,CAAC,EAAE,oBAAoB,YAAA;IAG9C,OAAO,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,QAAQ,CAAC;YAwDlD,+BAA+B;CAsB9C"}
@@ -0,0 +1,111 @@
1
+ import { canTransition, DiagnosticError, publishRequiresApproval, resolveLifecycle, runtimeDiagnostic, } from "@aotter/mantle-spec";
2
+ import { publishCache, } from "./ContentPublishEffects.js";
3
+ import { illegalTransitionDiagnostic, notFoundDiagnostic, withConflictDiagnostic, } from "./diagnostics.js";
4
+ import { assertEntryWritable } from "../../domain/service/io/EntryWriteGuard.js";
5
+ /**
6
+ * `RequestPublishUseCase` — publish or queue-for-approval, depending
7
+ * on the Schema's `lifecycle` mode.
8
+ *
9
+ * v0.1.0 ships `simple` only — request goes straight to `published`
10
+ * with a status guard via the spec's state machine. The Schema parser
11
+ * accepts `lifecycle: editorial` (it's a v0.1.x-committed mode in
12
+ * `V01_LIFECYCLE_MODES`), so this use case is the only line of
13
+ * defense: when a Schema declares `editorial`, it surfaces a
14
+ * structured `LIFECYCLE_NOT_IN_V010` error here at request time.
15
+ * The approvals-queue branch lands in v0.1.x.
16
+ */
17
+ export class RequestPublishUseCase {
18
+ entries;
19
+ schemas;
20
+ clock;
21
+ effects;
22
+ siteConfig;
23
+ constructor(entries, schemas, clock, effects, siteConfig) {
24
+ this.entries = entries;
25
+ this.schemas = schemas;
26
+ this.clock = clock;
27
+ this.effects = effects;
28
+ this.siteConfig = siteConfig;
29
+ }
30
+ async execute(request) {
31
+ const opPath = `usecase/RequestPublish/${request.id}`;
32
+ const existing = await this.entries.get(request.id);
33
+ if (!existing) {
34
+ throw new DiagnosticError(notFoundDiagnostic(opPath, "<unknown>", request.id));
35
+ }
36
+ const schema = this.schemas.get(existing.collection);
37
+ if (publishRequiresApproval(schema)) {
38
+ throw new DiagnosticError(runtimeDiagnostic({
39
+ code: "LIFECYCLE_NOT_IN_V010",
40
+ severity: "error",
41
+ path: opPath,
42
+ value: resolveLifecycle(schema),
43
+ expected: "lifecycle: 'simple' (editorial lands in v0.1.x)",
44
+ message: `Schema '${existing.collection}' uses lifecycle: 'editorial', which is v0.1.x-committed. v0.1.0 only supports 'simple' lifecycle.`,
45
+ }));
46
+ }
47
+ if (!canTransition(schema, existing.status, "published")) {
48
+ throw new DiagnosticError(illegalTransitionDiagnostic(opPath, existing.status, "published"));
49
+ }
50
+ if (schema) {
51
+ await assertEntryWritable({
52
+ opPath,
53
+ entries: this.entries,
54
+ schema,
55
+ data: existing.data,
56
+ excludeId: existing.id,
57
+ siteConfig: this.siteConfig,
58
+ });
59
+ }
60
+ await this.assertTranslatesParentPublished(opPath, existing, schema);
61
+ const published = await withConflictDiagnostic(opPath, () => this.entries.transitionStatus({
62
+ id: request.id,
63
+ collection: existing.collection,
64
+ to: "published",
65
+ expectedStatus: existing.status,
66
+ // Validation above ran against this version; a concurrent
67
+ // UpdateDraft between then and the flip must fail rather than
68
+ // publish stale-but-passed data.
69
+ expectedVersion: existing.version,
70
+ now: this.clock.now(),
71
+ hookContext: request.ctx,
72
+ originalInput: request.originalInput,
73
+ }));
74
+ await publishCache(this.effects, published.id);
75
+ return published;
76
+ }
77
+ async assertTranslatesParentPublished(path, entry, schema) {
78
+ const translates = schema?.spec.translates;
79
+ if (!translates)
80
+ return;
81
+ const value = entry.data[translates.on];
82
+ if (value === undefined || value === null || value === "") {
83
+ throw missingTranslatesParentDiagnostic(path, entry, translates, value);
84
+ }
85
+ const parent = await this.entries.findByDataField({
86
+ collection: translates.parent,
87
+ status: "published",
88
+ field: translates.on,
89
+ value,
90
+ });
91
+ if (parent)
92
+ return;
93
+ throw missingTranslatesParentDiagnostic(path, entry, translates, value);
94
+ }
95
+ }
96
+ function missingTranslatesParentDiagnostic(path, entry, translates, value) {
97
+ return new DiagnosticError(runtimeDiagnostic({
98
+ code: "TRANSLATES_PARENT_UNKNOWN",
99
+ severity: "error",
100
+ path: `${path}/translates`,
101
+ value: {
102
+ child: entry.collection,
103
+ parent: translates.parent,
104
+ field: translates.on,
105
+ value,
106
+ },
107
+ expected: `published parent entry in '${translates.parent}' where data.${translates.on} === ${JSON.stringify(value)}`,
108
+ message: `Cannot publish '${entry.collection}' translation '${entry.id}' because no published parent '${translates.parent}' entry has ${translates.on}=${JSON.stringify(value)}. Publish the parent first.`,
109
+ }));
110
+ }
111
+ //# sourceMappingURL=RequestPublishUseCase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RequestPublishUseCase.js","sourceRoot":"","sources":["../../../src/usecase/content/RequestPublishUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,eAAe,EACf,uBAAuB,EACvB,gBAAgB,EAChB,iBAAiB,GAElB,MAAM,qBAAqB,CAAC;AAM7B,OAAO,EACL,YAAY,GAEb,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,2BAA2B,EAC3B,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AAEjF;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,qBAAqB;IAEb;IACA;IACA;IACA;IACA;IALnB,YACmB,OAAwB,EACxB,OAA4C,EAC5C,KAAY,EACZ,OAA+B,EAC/B,UAAiC;QAJjC,YAAO,GAAP,OAAO,CAAiB;QACxB,YAAO,GAAP,OAAO,CAAqC;QAC5C,UAAK,GAAL,KAAK,CAAO;QACZ,YAAO,GAAP,OAAO,CAAwB;QAC/B,eAAU,GAAV,UAAU,CAAuB;IACjD,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,OAA8B;QAC1C,MAAM,MAAM,GAAG,0BAA0B,OAAO,CAAC,EAAE,EAAE,CAAC;QACtD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,eAAe,CAAC,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACjF,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACrD,IAAI,uBAAuB,CAAC,MAAM,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,eAAe,CACvB,iBAAiB,CAAC;gBAChB,IAAI,EAAE,uBAAuB;gBAC7B,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,gBAAgB,CAAC,MAAM,CAAC;gBAC/B,QAAQ,EAAE,iDAAiD;gBAC3D,OAAO,EAAE,WAAW,QAAQ,CAAC,UAAU,oGAAoG;aAC5I,CAAC,CACH,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC;YACzD,MAAM,IAAI,eAAe,CACvB,2BAA2B,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,CAClE,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,mBAAmB,CAAC;gBACxB,MAAM;gBACN,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,MAAM;gBACN,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,SAAS,EAAE,QAAQ,CAAC,EAAE;gBACtB,UAAU,EAAE,IAAI,CAAC,UAAU;aAC5B,CAAC,CAAC;QACL,CAAC;QACD,MAAM,IAAI,CAAC,+BAA+B,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAErE,MAAM,SAAS,GAAG,MAAM,sBAAsB,CAAC,MAAM,EAAE,GAAG,EAAE,CAC1D,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;YAC5B,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,EAAE,EAAE,WAAW;YACf,cAAc,EAAE,QAAQ,CAAC,MAAM;YAC/B,0DAA0D;YAC1D,8DAA8D;YAC9D,iCAAiC;YACjC,eAAe,EAAE,QAAQ,CAAC,OAAO;YACjC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;YACrB,WAAW,EAAE,OAAO,CAAC,GAAG;YACxB,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC,CAAC,CACH,CAAC;QACF,MAAM,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;QAC/C,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,KAAK,CAAC,+BAA+B,CAC3C,IAAY,EACZ,KAAe,EACf,MAAkC;QAElC,MAAM,UAAU,GAAG,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC;QAC3C,IAAI,CAAC,UAAU;YAAE,OAAO;QAExB,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACxC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;YAC1D,MAAM,iCAAiC,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QAC1E,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;YAChD,UAAU,EAAE,UAAU,CAAC,MAAM;YAC7B,MAAM,EAAE,WAAW;YACnB,KAAK,EAAE,UAAU,CAAC,EAAE;YACpB,KAAK;SACN,CAAC,CAAC;QACH,IAAI,MAAM;YAAE,OAAO;QAEnB,MAAM,iCAAiC,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;IAC1E,CAAC;CACF;AAED,SAAS,iCAAiC,CACxC,IAAY,EACZ,KAAe,EACf,UAA4D,EAC5D,KAAc;IAEd,OAAO,IAAI,eAAe,CACxB,iBAAiB,CAAC;QAChB,IAAI,EAAE,2BAA2B;QACjC,QAAQ,EAAE,OAAO;QACjB,IAAI,EAAE,GAAG,IAAI,aAAa;QAC1B,KAAK,EAAE;YACL,KAAK,EAAE,KAAK,CAAC,UAAU;YACvB,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,KAAK,EAAE,UAAU,CAAC,EAAE;YACpB,KAAK;SACN;QACD,QAAQ,EAAE,8BAA8B,UAAU,CAAC,MAAM,gBAAgB,UAAU,CAAC,EAAE,QAAQ,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;QACrH,OAAO,EAAE,mBAAmB,KAAK,CAAC,UAAU,kBAAkB,KAAK,CAAC,EAAE,kCAAkC,UAAU,CAAC,MAAM,eAAe,UAAU,CAAC,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,6BAA6B;KAC5M,CAAC,CACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { type SchemaManifest } from "@aotter/mantle-spec";
2
+ import type { EntryRow } from "../../domain/model/EntryRow.js";
3
+ import type { Clock } from "../../domain/port/Clock.js";
4
+ import type { EntryRepository } from "../../domain/port/EntryRepository.js";
5
+ import type { UnpublishRequest } from "../dto/content/index.js";
6
+ import { type ContentPublishEffects } from "./ContentPublishEffects.js";
7
+ /**
8
+ * `UnpublishUseCase` — flip published / archived rows back to
9
+ * `'draft'`. Used by the admin SPA's "edit a published entry" flow.
10
+ */
11
+ export declare class UnpublishUseCase {
12
+ private readonly entries;
13
+ private readonly schemas;
14
+ private readonly clock;
15
+ private readonly effects?;
16
+ constructor(entries: EntryRepository, schemas: ReadonlyMap<string, SchemaManifest>, clock: Clock, effects?: ContentPublishEffects | undefined);
17
+ execute(request: UnpublishRequest): Promise<EntryRow>;
18
+ }
19
+ //# sourceMappingURL=UnpublishUseCase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UnpublishUseCase.d.ts","sourceRoot":"","sources":["../../../src/usecase/content/UnpublishUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,4BAA4B,CAAC;AAOpC;;;GAGG;AACH,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAHR,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,EAC5C,KAAK,EAAE,KAAK,EACZ,OAAO,CAAC,EAAE,qBAAqB,YAAA;IAG5C,OAAO,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC;CA8B5D"}
@@ -0,0 +1,46 @@
1
+ import { canTransition, DiagnosticError, } from "@aotter/mantle-spec";
2
+ import { unpublishCache, } from "./ContentPublishEffects.js";
3
+ import { illegalTransitionDiagnostic, notFoundDiagnostic, withConflictDiagnostic, } from "./diagnostics.js";
4
+ /**
5
+ * `UnpublishUseCase` — flip published / archived rows back to
6
+ * `'draft'`. Used by the admin SPA's "edit a published entry" flow.
7
+ */
8
+ export class UnpublishUseCase {
9
+ entries;
10
+ schemas;
11
+ clock;
12
+ effects;
13
+ constructor(entries, schemas, clock, effects) {
14
+ this.entries = entries;
15
+ this.schemas = schemas;
16
+ this.clock = clock;
17
+ this.effects = effects;
18
+ }
19
+ async execute(request) {
20
+ const opPath = `usecase/Unpublish/${request.id}`;
21
+ const existing = await this.entries.get(request.id);
22
+ if (!existing) {
23
+ throw new DiagnosticError(notFoundDiagnostic(opPath, "<unknown>", request.id));
24
+ }
25
+ const schema = this.schemas.get(existing.collection);
26
+ if (!canTransition(schema, existing.status, "draft")) {
27
+ throw new DiagnosticError(illegalTransitionDiagnostic(opPath, existing.status, "draft"));
28
+ }
29
+ const unpublished = await withConflictDiagnostic(opPath, () => this.entries.transitionStatus({
30
+ id: request.id,
31
+ collection: existing.collection,
32
+ to: "draft",
33
+ expectedStatus: existing.status,
34
+ // Pin the version we read above — a concurrent mutation between
35
+ // get() and the flip must fail rather than silently unpublish a
36
+ // row whose state has moved on. Matches RequestPublishUseCase.
37
+ expectedVersion: existing.version,
38
+ now: this.clock.now(),
39
+ hookContext: request.ctx,
40
+ originalInput: request.originalInput,
41
+ }));
42
+ await unpublishCache(this.effects, unpublished.id);
43
+ return unpublished;
44
+ }
45
+ }
46
+ //# sourceMappingURL=UnpublishUseCase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UnpublishUseCase.js","sourceRoot":"","sources":["../../../src/usecase/content/UnpublishUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,eAAe,GAEhB,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EACL,cAAc,GAEf,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,2BAA2B,EAC3B,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAE1B;;;GAGG;AACH,MAAM,OAAO,gBAAgB;IAER;IACA;IACA;IACA;IAJnB,YACmB,OAAwB,EACxB,OAA4C,EAC5C,KAAY,EACZ,OAA+B;QAH/B,YAAO,GAAP,OAAO,CAAiB;QACxB,YAAO,GAAP,OAAO,CAAqC;QAC5C,UAAK,GAAL,KAAK,CAAO;QACZ,YAAO,GAAP,OAAO,CAAwB;IAC/C,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,OAAyB;QACrC,MAAM,MAAM,GAAG,qBAAqB,OAAO,CAAC,EAAE,EAAE,CAAC;QACjD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,eAAe,CAAC,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACjF,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACrD,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,eAAe,CACvB,2BAA2B,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAC9D,CAAC;QACJ,CAAC;QACD,MAAM,WAAW,GAAG,MAAM,sBAAsB,CAAC,MAAM,EAAE,GAAG,EAAE,CAC5D,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;YAC5B,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,EAAE,EAAE,OAAO;YACX,cAAc,EAAE,QAAQ,CAAC,MAAM;YAC/B,gEAAgE;YAChE,gEAAgE;YAChE,+DAA+D;YAC/D,eAAe,EAAE,QAAQ,CAAC,OAAO;YACjC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;YACrB,WAAW,EAAE,OAAO,CAAC,GAAG;YACxB,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC,CAAC,CACH,CAAC;QACF,MAAM,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;QACnD,OAAO,WAAW,CAAC;IACrB,CAAC;CACF"}
@@ -0,0 +1,20 @@
1
+ import { type SchemaManifest } from "@aotter/mantle-spec";
2
+ import type { EntryRow } from "../../domain/model/EntryRow.js";
3
+ import type { Clock } from "../../domain/port/Clock.js";
4
+ import type { EntryRepository } from "../../domain/port/EntryRepository.js";
5
+ import type { SiteConfigRepository } from "../../domain/port/SiteConfigRepository.js";
6
+ import type { UpdateDraftRequest } from "../dto/content/index.js";
7
+ /**
8
+ * `UpdateDraftUseCase` — update a draft's data. Only entries in
9
+ * `'draft'` status are editable — `published` / `archived` go via the
10
+ * unpublish (back to draft) path first.
11
+ */
12
+ export declare class UpdateDraftUseCase {
13
+ private readonly entries;
14
+ private readonly schemas;
15
+ private readonly clock;
16
+ private readonly siteConfig?;
17
+ constructor(entries: EntryRepository, schemas: ReadonlyMap<string, SchemaManifest>, clock: Clock, siteConfig?: SiteConfigRepository | undefined);
18
+ execute(request: UpdateDraftRequest): Promise<EntryRow>;
19
+ }
20
+ //# sourceMappingURL=UpdateDraftUseCase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UpdateDraftUseCase.d.ts","sourceRoot":"","sources":["../../../src/usecase/content/UpdateDraftUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEtF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAOlE;;;;GAIG;AACH,qBAAa,kBAAkB;IAE3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAHX,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,EAC5C,KAAK,EAAE,KAAK,EACZ,UAAU,CAAC,EAAE,oBAAoB,YAAA;IAG9C,OAAO,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,QAAQ,CAAC;CA6D9D"}