@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,101 @@
1
+ import { assertSiteDefaultsCanonical, } from "@aotter/mantle-spec";
2
+ /**
3
+ * `site_config` row read/write. Ships the seed declared by
4
+ * `clam.config.ts > siteDefaults` on first deploy via INSERT … ON
5
+ * CONFLICT DO NOTHING so operator edits are never overwritten on
6
+ * subsequent deploys.
7
+ *
8
+ * The runtime calls `seed` once during bootInit; the result of `load`
9
+ * is what every render path and template sees.
10
+ *
11
+ * Lives in `infrastructure/persistence/` because it talks to the DB
12
+ * directly. Pure-domain validation (`assertSiteDefaultsCanonical`)
13
+ * comes from spec.
14
+ */
15
+ const KEYS = {
16
+ brand: "brand",
17
+ title: "title",
18
+ description: "description",
19
+ origin: "origin",
20
+ locales: "locales",
21
+ faviconUrl: "faviconUrl",
22
+ mediaPurposes: "mediaPurposes",
23
+ };
24
+ function splitCsv(raw) {
25
+ if (!raw)
26
+ return [];
27
+ return raw.split(",").map((s) => s.trim()).filter((s) => s.length > 0);
28
+ }
29
+ export class DatabaseSiteConfigRepository {
30
+ db;
31
+ constructor(db) {
32
+ this.db = db;
33
+ }
34
+ async seed(defaults) {
35
+ if (!defaults)
36
+ return;
37
+ assertSiteDefaultsCanonical(defaults);
38
+ const stmts = [];
39
+ const insert = (key, value) => this.db
40
+ .prepare(`INSERT INTO site_config (key, value) VALUES (?, ?) ON CONFLICT(key) DO NOTHING`)
41
+ .bind(key, value);
42
+ if (defaults.brand && defaults.brand.length > 0) {
43
+ stmts.push(insert(KEYS.brand, defaults.brand));
44
+ }
45
+ if (defaults.title && defaults.title.length > 0) {
46
+ stmts.push(insert(KEYS.title, defaults.title));
47
+ }
48
+ if (defaults.description && defaults.description.length > 0) {
49
+ stmts.push(insert(KEYS.description, defaults.description));
50
+ }
51
+ if (defaults.origin && defaults.origin.length > 0) {
52
+ stmts.push(insert(KEYS.origin, defaults.origin));
53
+ }
54
+ if (defaults.faviconUrl && defaults.faviconUrl.length > 0) {
55
+ stmts.push(insert(KEYS.faviconUrl, defaults.faviconUrl));
56
+ }
57
+ if (defaults.locales && defaults.locales.length > 0) {
58
+ stmts.push(insert(KEYS.locales, defaults.locales.join(",")));
59
+ }
60
+ const purposes = defaults.media?.purposes;
61
+ if (purposes && purposes.length > 0) {
62
+ stmts.push(insert(KEYS.mediaPurposes, purposes.join(",")));
63
+ }
64
+ if (stmts.length > 0) {
65
+ await this.db.batch(stmts);
66
+ }
67
+ }
68
+ async load() {
69
+ const rows = await this.db
70
+ .prepare(`SELECT key, value FROM site_config`)
71
+ .all();
72
+ const m = new Map(rows.map((r) => [r.key, r.value]));
73
+ const locales = splitCsv(m.get(KEYS.locales));
74
+ const purposes = splitCsv(m.get(KEYS.mediaPurposes));
75
+ return {
76
+ title: m.get(KEYS.title) ?? "CMS",
77
+ description: m.get(KEYS.description) ?? "",
78
+ origin: m.get(KEYS.origin) ?? "",
79
+ locales,
80
+ canonicalLocale: locales[0] ?? null,
81
+ brand: m.get(KEYS.brand) ?? "AotterMantle",
82
+ faviconUrl: m.get(KEYS.faviconUrl) || undefined,
83
+ media: { purposes },
84
+ };
85
+ }
86
+ async readLocales() {
87
+ const row = await this.db
88
+ .prepare(`SELECT value FROM site_config WHERE key = ?`)
89
+ .bind(KEYS.locales)
90
+ .first();
91
+ return splitCsv(row?.value);
92
+ }
93
+ async readMediaPurposes() {
94
+ const row = await this.db
95
+ .prepare(`SELECT value FROM site_config WHERE key = ?`)
96
+ .bind(KEYS.mediaPurposes)
97
+ .first();
98
+ return splitCsv(row?.value);
99
+ }
100
+ }
101
+ //# sourceMappingURL=DatabaseSiteConfigRepository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DatabaseSiteConfigRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/persistence/DatabaseSiteConfigRepository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ import type { EntryRow } from "../../domain/model/EntryRow.js";
2
+ import { type DeferredHookDispatcher } from "../../domain/port/DeferredHookDispatcher.js";
3
+ import type { ArchiveEntryArgs, CreateEntryArgs, DeleteEntryArgs, EntryRepository, FindEntryByDataFieldArgs, FindEntryByDataFieldsArgs, ListEntriesArgs, ListEntriesResult, TransitionStatusArgs, UpdateEntryArgs } from "../../domain/port/EntryRepository.js";
4
+ import type { LifecycleHookRunner } from "../../domain/port/LifecycleHookRunner.js";
5
+ import type { TriggerIndex } from "../../domain/service/TriggerIndex.js";
6
+ /**
7
+ * Decorator that wraps any `EntryRepository` and fires lifecycle
8
+ * Triggers around every mutation (POC ADR-0014).
9
+ *
10
+ * Symmetry rule: MCP, admin, and builtin write paths all hit the same
11
+ * chokepoint, so all three pay (and gain) the same hook semantics —
12
+ * authors don't need to remember "hooks fire on path X but not Y."
13
+ *
14
+ * Hook → mutation mapping:
15
+ * - `create` → `before_create` / `after_create`
16
+ * - `update` → `before_update` / `after_update`
17
+ * - `delete` → `before_delete` / `after_delete`
18
+ * - `archive` → `before_update` / `after_update` (status flip is
19
+ * a kind of update; explicit archive hooks are v0.2 if needed)
20
+ * - `transitionStatus({ to: 'published' })` → `before_publish` /
21
+ * `after_publish`; other targets fire `before_update` /
22
+ * `after_update`
23
+ *
24
+ * Short-circuits when no Trigger watches the row's collection — no
25
+ * hook runner call, no per-mutation overhead.
26
+ *
27
+ * `before_*` runs synchronously: a thrown `DiagnosticError` from the
28
+ * runner cancels the mutation. `after_*` runs after the inner write
29
+ * succeeds — fire-and-forget via `ctx.waitUntil` if the adapter
30
+ * populated it; otherwise inline-await.
31
+ */
32
+ export declare class LifecycleHookingEntryRepository implements EntryRepository {
33
+ private readonly inner;
34
+ private readonly triggers;
35
+ private readonly hooks;
36
+ private readonly deferred?;
37
+ constructor(inner: EntryRepository, triggers: TriggerIndex, hooks: LifecycleHookRunner, deferred?: DeferredHookDispatcher | undefined);
38
+ create(args: CreateEntryArgs): Promise<EntryRow>;
39
+ get(id: string): Promise<EntryRow | null>;
40
+ update(args: UpdateEntryArgs): Promise<EntryRow>;
41
+ delete(args: DeleteEntryArgs): Promise<{
42
+ readonly removed: boolean;
43
+ }>;
44
+ archive(args: ArchiveEntryArgs): Promise<EntryRow>;
45
+ transitionStatus(args: TransitionStatusArgs): Promise<EntryRow>;
46
+ list(args: ListEntriesArgs): Promise<ListEntriesResult>;
47
+ findByDataField(args: FindEntryByDataFieldArgs): Promise<EntryRow | null>;
48
+ findByDataFields(args: FindEntryByDataFieldsArgs): Promise<EntryRow | null>;
49
+ /**
50
+ * After-hook execution. Tries delivery rungs in order:
51
+ *
52
+ * 1. `deferred.enqueue(envelope)` — adapter-backed deferred path
53
+ * (CF Workers Queues, Inngest, pg-boss, …). Survives isolate
54
+ * death; consume invocation rehydrates the envelope and re-fires
55
+ * via `CmsRuntime.runDeferredHook`. A rejection downgrades to
56
+ * the next rung rather than dropping the hook silently.
57
+ * 2. `ctx.waitUntil(promise)` — adapter-populated fire-and-forget
58
+ * bridge (CF Workers `ExecutionContext`). Fast but non-durable:
59
+ * isolate death between response and resolution loses the work.
60
+ * 3. inline `await promise` — non-Workers runtimes (Bun / Node /
61
+ * tests) where detached promises get cancelled with the request.
62
+ * Trades response latency for hook-fire reliability.
63
+ *
64
+ * Hook throws are surfaced via `RunLifecycleHooksUseCase`'s
65
+ * `errorPolicy` semantics; for `continue` the runner already
66
+ * `console.error`s and swallows. Anything that escapes the inline
67
+ * branch here is an abort-policy throw on a before_* (impossible —
68
+ * the parser rejects `errorPolicy: abort` on after_* hooks) or an
69
+ * unexpected internal error; we log and swallow so the mutation
70
+ * result still reaches the caller.
71
+ */
72
+ private fireAfter;
73
+ }
74
+ //# sourceMappingURL=LifecycleHookingEntryRepository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LifecycleHookingEntryRepository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/persistence/LifecycleHookingEntryRepository.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAE/D,OAAO,EAEL,KAAK,sBAAsB,EAE5B,MAAM,6CAA6C,CAAC;AACrD,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,eAAe,EACf,wBAAwB,EACxB,yBAAyB,EACzB,eAAe,EACf,iBAAiB,EAEjB,oBAAoB,EACpB,eAAe,EAChB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAIzE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,+BAAgC,YAAW,eAAe;IAEnE,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAHT,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,YAAY,EACtB,KAAK,EAAE,mBAAmB,EAC1B,QAAQ,CAAC,EAAE,sBAAsB,YAAA;IAG9C,MAAM,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC;IAiBtD,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAInC,MAAM,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC;IAmBhD,MAAM,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC;QAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAqBrE,OAAO,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAmBlD,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAsBrE,IAAI,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAIvD,eAAe,CAAC,IAAI,EAAE,wBAAwB,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAIzE,gBAAgB,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAI3E;;;;;;;;;;;;;;;;;;;;;;OAsBG;YACW,SAAS;CAuCxB"}
@@ -0,0 +1,208 @@
1
+ import { ctxSnapshotFrom, } from "../../domain/port/DeferredHookDispatcher.js";
2
+ const ANON_CTX = { user: null, staff: null, env: {} };
3
+ /**
4
+ * Decorator that wraps any `EntryRepository` and fires lifecycle
5
+ * Triggers around every mutation (POC ADR-0014).
6
+ *
7
+ * Symmetry rule: MCP, admin, and builtin write paths all hit the same
8
+ * chokepoint, so all three pay (and gain) the same hook semantics —
9
+ * authors don't need to remember "hooks fire on path X but not Y."
10
+ *
11
+ * Hook → mutation mapping:
12
+ * - `create` → `before_create` / `after_create`
13
+ * - `update` → `before_update` / `after_update`
14
+ * - `delete` → `before_delete` / `after_delete`
15
+ * - `archive` → `before_update` / `after_update` (status flip is
16
+ * a kind of update; explicit archive hooks are v0.2 if needed)
17
+ * - `transitionStatus({ to: 'published' })` → `before_publish` /
18
+ * `after_publish`; other targets fire `before_update` /
19
+ * `after_update`
20
+ *
21
+ * Short-circuits when no Trigger watches the row's collection — no
22
+ * hook runner call, no per-mutation overhead.
23
+ *
24
+ * `before_*` runs synchronously: a thrown `DiagnosticError` from the
25
+ * runner cancels the mutation. `after_*` runs after the inner write
26
+ * succeeds — fire-and-forget via `ctx.waitUntil` if the adapter
27
+ * populated it; otherwise inline-await.
28
+ */
29
+ export class LifecycleHookingEntryRepository {
30
+ inner;
31
+ triggers;
32
+ hooks;
33
+ deferred;
34
+ constructor(inner, triggers, hooks, deferred) {
35
+ this.inner = inner;
36
+ this.triggers = triggers;
37
+ this.hooks = hooks;
38
+ this.deferred = deferred;
39
+ }
40
+ async create(args) {
41
+ const ctx = ctxOf(args);
42
+ if (!this.triggers.hasAny(args.collection)) {
43
+ return this.inner.create(args);
44
+ }
45
+ await this.hooks.run({
46
+ hook: "before_create",
47
+ schema: args.collection,
48
+ entry: null,
49
+ ctx,
50
+ originalInput: args.originalInput,
51
+ });
52
+ const row = await this.inner.create(args);
53
+ await this.fireAfter("after_create", row, ctx, args);
54
+ return row;
55
+ }
56
+ get(id) {
57
+ return this.inner.get(id);
58
+ }
59
+ async update(args) {
60
+ if (!this.triggers.hasAny(args.collection)) {
61
+ return this.inner.update(args);
62
+ }
63
+ const existing = await this.inner.get(args.id);
64
+ if (!existing)
65
+ return this.inner.update(args);
66
+ const ctx = ctxOf(args);
67
+ await this.hooks.run({
68
+ hook: "before_update",
69
+ schema: args.collection,
70
+ entry: existing,
71
+ ctx,
72
+ originalInput: args.originalInput,
73
+ });
74
+ const row = await this.inner.update(args);
75
+ await this.fireAfter("after_update", row, ctx, args);
76
+ return row;
77
+ }
78
+ async delete(args) {
79
+ if (!this.triggers.hasAny(args.collection)) {
80
+ return this.inner.delete(args);
81
+ }
82
+ const existing = await this.inner.get(args.id);
83
+ if (!existing)
84
+ return this.inner.delete(args);
85
+ const ctx = ctxOf(args);
86
+ await this.hooks.run({
87
+ hook: "before_delete",
88
+ schema: args.collection,
89
+ entry: existing,
90
+ ctx,
91
+ originalInput: args.originalInput,
92
+ });
93
+ const result = await this.inner.delete(args);
94
+ if (result.removed) {
95
+ await this.fireAfter("after_delete", existing, ctx, args);
96
+ }
97
+ return result;
98
+ }
99
+ async archive(args) {
100
+ if (!this.triggers.hasAny(args.collection)) {
101
+ return this.inner.archive(args);
102
+ }
103
+ const existing = await this.inner.get(args.id);
104
+ if (!existing)
105
+ return this.inner.archive(args);
106
+ const ctx = ctxOf(args);
107
+ await this.hooks.run({
108
+ hook: "before_update",
109
+ schema: args.collection,
110
+ entry: existing,
111
+ ctx,
112
+ originalInput: args.originalInput,
113
+ });
114
+ const row = await this.inner.archive(args);
115
+ await this.fireAfter("after_update", row, ctx, args);
116
+ return row;
117
+ }
118
+ async transitionStatus(args) {
119
+ if (!this.triggers.hasAny(args.collection)) {
120
+ return this.inner.transitionStatus(args);
121
+ }
122
+ const isPublish = args.to === "published";
123
+ const beforeHook = isPublish ? "before_publish" : "before_update";
124
+ const afterHook = isPublish ? "after_publish" : "after_update";
125
+ const existing = await this.inner.get(args.id);
126
+ if (!existing)
127
+ return this.inner.transitionStatus(args);
128
+ const ctx = ctxOf(args);
129
+ await this.hooks.run({
130
+ hook: beforeHook,
131
+ schema: args.collection,
132
+ entry: existing,
133
+ ctx,
134
+ originalInput: args.originalInput,
135
+ });
136
+ const row = await this.inner.transitionStatus(args);
137
+ await this.fireAfter(afterHook, row, ctx, args);
138
+ return row;
139
+ }
140
+ list(args) {
141
+ return this.inner.list(args);
142
+ }
143
+ findByDataField(args) {
144
+ return this.inner.findByDataField(args);
145
+ }
146
+ findByDataFields(args) {
147
+ return this.inner.findByDataFields(args);
148
+ }
149
+ /**
150
+ * After-hook execution. Tries delivery rungs in order:
151
+ *
152
+ * 1. `deferred.enqueue(envelope)` — adapter-backed deferred path
153
+ * (CF Workers Queues, Inngest, pg-boss, …). Survives isolate
154
+ * death; consume invocation rehydrates the envelope and re-fires
155
+ * via `CmsRuntime.runDeferredHook`. A rejection downgrades to
156
+ * the next rung rather than dropping the hook silently.
157
+ * 2. `ctx.waitUntil(promise)` — adapter-populated fire-and-forget
158
+ * bridge (CF Workers `ExecutionContext`). Fast but non-durable:
159
+ * isolate death between response and resolution loses the work.
160
+ * 3. inline `await promise` — non-Workers runtimes (Bun / Node /
161
+ * tests) where detached promises get cancelled with the request.
162
+ * Trades response latency for hook-fire reliability.
163
+ *
164
+ * Hook throws are surfaced via `RunLifecycleHooksUseCase`'s
165
+ * `errorPolicy` semantics; for `continue` the runner already
166
+ * `console.error`s and swallows. Anything that escapes the inline
167
+ * branch here is an abort-policy throw on a before_* (impossible —
168
+ * the parser rejects `errorPolicy: abort` on after_* hooks) or an
169
+ * unexpected internal error; we log and swallow so the mutation
170
+ * result still reaches the caller.
171
+ */
172
+ async fireAfter(hook, entry, ctx, args) {
173
+ if (this.deferred && this.triggers.forHook(entry.collection, hook).length > 0) {
174
+ const envelope = {
175
+ hook,
176
+ schema: entry.collection,
177
+ entry,
178
+ originalInput: args.originalInput,
179
+ ctxSnapshot: ctxSnapshotFrom(ctx),
180
+ };
181
+ try {
182
+ await this.deferred.enqueue(envelope);
183
+ return;
184
+ }
185
+ catch (err) {
186
+ console.error(`[lifecycle] deferred enqueue for ${hook} on ${entry.collection}/${entry.id} failed; falling back`, err);
187
+ }
188
+ }
189
+ const promise = this.hooks.run({
190
+ hook,
191
+ schema: entry.collection,
192
+ entry,
193
+ ctx,
194
+ originalInput: args.originalInput,
195
+ }).catch((err) => {
196
+ console.error(`[lifecycle] ${hook} on ${entry.collection}/${entry.id} failed`, err);
197
+ });
198
+ if (ctx.waitUntil) {
199
+ ctx.waitUntil(promise);
200
+ return;
201
+ }
202
+ await promise;
203
+ }
204
+ }
205
+ function ctxOf(args) {
206
+ return args.hookContext ?? ANON_CTX;
207
+ }
208
+ //# sourceMappingURL=LifecycleHookingEntryRepository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LifecycleHookingEntryRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/persistence/LifecycleHookingEntryRepository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { DatabaseEntryRepository } from "./DatabaseEntryRepository.js";
2
+ export { DatabaseSiteConfigRepository } from "./DatabaseSiteConfigRepository.js";
3
+ export { LifecycleHookingEntryRepository } from "./LifecycleHookingEntryRepository.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/persistence/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { DatabaseEntryRepository } from "./DatabaseEntryRepository.js";
2
+ export { DatabaseSiteConfigRepository } from "./DatabaseSiteConfigRepository.js";
3
+ export { LifecycleHookingEntryRepository } from "./LifecycleHookingEntryRepository.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/infrastructure/persistence/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,OAAO,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { type SchemaManifest, type SiteConfig } from "@aotter/mantle-spec";
2
+ import type { DatabaseDriver } from "../../domain/port/DatabaseDriver.js";
3
+ import type { KvCache } from "../../domain/port/KvCache.js";
4
+ import type { PublishEntryRequest, PublishOrchestrator } from "../../domain/port/PublishOrchestrator.js";
5
+ import type { PublicPathResolver } from "../../domain/service/PublicPathResolver.js";
6
+ import { type SeoComposer } from "../../domain/service/EntrySeoSupport.js";
7
+ /**
8
+ * Structural contract of the llms.txt composer the orchestrator
9
+ * accepts. Kept here (vs. importing the concrete use-case class) so
10
+ * infrastructure doesn't cross the `infrastructure→usecase` boundary
11
+ * — the runtime assembly root wires in `ComposeLlmsTxtUseCase`,
12
+ * which satisfies this shape.
13
+ */
14
+ export interface LlmsTxtComposer {
15
+ execute(args: {
16
+ readonly site: SiteConfig;
17
+ readonly locale: string | null;
18
+ }): Promise<string>;
19
+ }
20
+ export declare class HtmlPublishOrchestrator implements PublishOrchestrator {
21
+ private readonly db;
22
+ private readonly kv;
23
+ private readonly paths;
24
+ private readonly composeSeo;
25
+ private readonly composeLlmsTxt;
26
+ private readonly schemas;
27
+ constructor(db: DatabaseDriver, kv: KvCache, paths: PublicPathResolver | null, composeSeo: SeoComposer, composeLlmsTxt: LlmsTxtComposer, schemas: ReadonlyMap<string, SchemaManifest>);
28
+ publish(request: PublishEntryRequest): Promise<void>;
29
+ unpublish(request: PublishEntryRequest): Promise<void>;
30
+ private renderEntry;
31
+ private renderList;
32
+ private renderLlmsTxt;
33
+ }
34
+ //# sourceMappingURL=HtmlPublishOrchestrator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HtmlPublishOrchestrator.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/render/HtmlPublishOrchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,UAAU,EAChB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,0CAA0C,CAAC;AAoBlD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AACrF,OAAO,EAEL,KAAK,WAAW,EACjB,MAAM,yCAAyC,CAAC;AAEjD;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,IAAI,EAAE;QACZ,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;QAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;KAChC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACrB;AAgBD,qBAAa,uBAAwB,YAAW,mBAAmB;IAE/D,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO;gBALP,EAAE,EAAE,cAAc,EAClB,EAAE,EAAE,OAAO,EACX,KAAK,EAAE,kBAAkB,GAAG,IAAI,EAChC,UAAU,EAAE,WAAW,EACvB,cAAc,EAAE,eAAe,EAC/B,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC;IAGzD,OAAO,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BpD,SAAS,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;YAyB9C,WAAW;YAiBX,UAAU;YAwBV,aAAa;CAI5B"}
@@ -0,0 +1,116 @@
1
+ import { DiagnosticError, runtimeDiagnostic, } from "@aotter/mantle-spec";
2
+ import { entryHtmlKey, entryMarkdownKey, listHtmlKey, llmsTxtKey, } from "../../domain/service/PublishKeys.js";
3
+ import { readEntryById, readPublishedEntries, } from "../../domain/service/io/PublishedEntries.js";
4
+ import { joinParentForList, joinParentIfTranslation, } from "../../domain/service/io/JoinedEntryReader.js";
5
+ import { serializeEntryAsMarkdown } from "../../domain/service/MarkdownSerializer.js";
6
+ import { renderEntryHtml, renderListHtml, } from "../../domain/service/HtmlRenderer.js";
7
+ import { composeSeoIfPathed, } from "../../domain/service/EntrySeoSupport.js";
8
+ /**
9
+ * `HtmlPublishOrchestrator` — the publish pipeline. Renders + writes
10
+ * to `KvCache`:
11
+ * 1. Entry HTML (if a template is registered for the collection)
12
+ * 2. Entry `.md` mirror (if the entry has a `content` field)
13
+ * 3. Collection list HTML for the entry's locale
14
+ * 4. `/llms.txt` for the entry's locale (composed by ComposeLlmsTxtUseCase)
15
+ *
16
+ * Idempotent — invoking twice with the same entry id is safe; KV
17
+ * writes overwrite. Non-localized entries publish under empty-string
18
+ * locale.
19
+ */
20
+ const DEFAULT_DOCTYPE = "<!DOCTYPE html>\n";
21
+ export class HtmlPublishOrchestrator {
22
+ db;
23
+ kv;
24
+ paths;
25
+ composeSeo;
26
+ composeLlmsTxt;
27
+ schemas;
28
+ constructor(db, kv, paths, composeSeo, composeLlmsTxt, schemas) {
29
+ this.db = db;
30
+ this.kv = kv;
31
+ this.paths = paths;
32
+ this.composeSeo = composeSeo;
33
+ this.composeLlmsTxt = composeLlmsTxt;
34
+ this.schemas = schemas;
35
+ }
36
+ async publish(request) {
37
+ const raw = await readEntryById(this.db, request.entryId);
38
+ if (!raw) {
39
+ throw new DiagnosticError(runtimeDiagnostic({
40
+ code: "NOT_FOUND",
41
+ severity: "error",
42
+ path: `usecase/PublishEntry/${request.entryId}`,
43
+ value: request.entryId,
44
+ expected: "id of an existing entry",
45
+ message: `Entry not found: ${request.entryId}.`,
46
+ }));
47
+ }
48
+ // Materialize parent fields into the translation's data before
49
+ // rendering (ADR-0010). RequestPublishUseCase has already asserted
50
+ // the parent is published, so a status filter is safe here.
51
+ const entry = await joinParentIfTranslation(this.db, this.schemas, raw, {
52
+ parentStatus: "published",
53
+ });
54
+ const indexLocale = entry.locale ?? null;
55
+ const doctype = request.htmlDoctype ?? DEFAULT_DOCTYPE;
56
+ await Promise.all([
57
+ this.renderEntry(entry, request.site, request.templates, doctype),
58
+ this.renderList(entry.collection, indexLocale, request.site, request.templates, doctype),
59
+ this.renderLlmsTxt(indexLocale, request.site),
60
+ ]);
61
+ }
62
+ async unpublish(request) {
63
+ const entry = await readEntryById(this.db, request.entryId);
64
+ if (!entry) {
65
+ throw new DiagnosticError(runtimeDiagnostic({
66
+ code: "NOT_FOUND",
67
+ severity: "error",
68
+ path: `usecase/UnpublishEntryCache/${request.entryId}`,
69
+ value: request.entryId,
70
+ expected: "id of an existing entry",
71
+ message: `Entry not found: ${request.entryId}.`,
72
+ }));
73
+ }
74
+ const indexLocale = entry.locale ?? null;
75
+ const doctype = request.htmlDoctype ?? DEFAULT_DOCTYPE;
76
+ await Promise.all([
77
+ this.kv.delete(entryHtmlKey(entry)),
78
+ this.kv.delete(entryMarkdownKey(entry)),
79
+ this.renderList(entry.collection, indexLocale, request.site, request.templates, doctype),
80
+ this.renderLlmsTxt(indexLocale, request.site),
81
+ ]);
82
+ }
83
+ async renderEntry(entry, site, templates, doctype) {
84
+ const seo = await composeSeoIfPathed(this.composeSeo, this.paths, entry, site);
85
+ const html = renderEntryHtml({ entry, site, templates, doctype, seo });
86
+ if (html !== null) {
87
+ await this.kv.put(entryHtmlKey(entry), html);
88
+ }
89
+ const md = serializeEntryAsMarkdown(entry);
90
+ if (md) {
91
+ await this.kv.put(entryMarkdownKey(entry), md);
92
+ }
93
+ }
94
+ async renderList(collection, locale, site, templates, doctype) {
95
+ const raw = await readPublishedEntries(this.db, { locale, collection });
96
+ const entries = await joinParentForList(this.db, this.schemas, raw, {
97
+ parentStatus: "published",
98
+ });
99
+ const html = renderListHtml({
100
+ collection,
101
+ locale: locale ?? "",
102
+ entries,
103
+ site,
104
+ templates,
105
+ doctype,
106
+ });
107
+ if (html !== null) {
108
+ await this.kv.put(listHtmlKey(collection, locale ?? ""), html);
109
+ }
110
+ }
111
+ async renderLlmsTxt(locale, site) {
112
+ const body = await this.composeLlmsTxt.execute({ site, locale });
113
+ await this.kv.put(llmsTxtKey(locale ?? ""), body);
114
+ }
115
+ }
116
+ //# sourceMappingURL=HtmlPublishOrchestrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HtmlPublishOrchestrator.js","sourceRoot":"","sources":["../../../src/infrastructure/render/HtmlPublishOrchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,iBAAiB,GAIlB,MAAM,qBAAqB,CAAC;AAQ7B,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,UAAU,GACX,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,aAAa,EACb,oBAAoB,GACrB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EACL,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,4CAA4C,CAAC;AACtF,OAAO,EACL,eAAe,EACf,cAAc,GACf,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EACL,kBAAkB,GAEnB,MAAM,yCAAyC,CAAC;AAgBjD;;;;;;;;;;;GAWG;AACH,MAAM,eAAe,GAAG,mBAAmB,CAAC;AAE5C,MAAM,OAAO,uBAAuB;IAEf;IACA;IACA;IACA;IACA;IACA;IANnB,YACmB,EAAkB,EAClB,EAAW,EACX,KAAgC,EAChC,UAAuB,EACvB,cAA+B,EAC/B,OAA4C;QAL5C,OAAE,GAAF,EAAE,CAAgB;QAClB,OAAE,GAAF,EAAE,CAAS;QACX,UAAK,GAAL,KAAK,CAA2B;QAChC,eAAU,GAAV,UAAU,CAAa;QACvB,mBAAc,GAAd,cAAc,CAAiB;QAC/B,YAAO,GAAP,OAAO,CAAqC;IAC5D,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,OAA4B;QACxC,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAC1D,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,eAAe,CACvB,iBAAiB,CAAC;gBAChB,IAAI,EAAE,WAAW;gBACjB,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,wBAAwB,OAAO,CAAC,OAAO,EAAE;gBAC/C,KAAK,EAAE,OAAO,CAAC,OAAO;gBACtB,QAAQ,EAAE,yBAAyB;gBACnC,OAAO,EAAE,oBAAoB,OAAO,CAAC,OAAO,GAAG;aAChD,CAAC,CACH,CAAC;QACJ,CAAC;QACD,+DAA+D;QAC/D,mEAAmE;QACnE,4DAA4D;QAC5D,MAAM,KAAK,GAAG,MAAM,uBAAuB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;YACtE,YAAY,EAAE,WAAW;SAC1B,CAAC,CAAC;QACH,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC;QACzC,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,IAAI,eAAe,CAAC;QAEvD,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC;YACjE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,EAAE,WAAW,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC;YACxF,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC;SAC9C,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAA4B;QAC1C,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAC5D,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,eAAe,CACvB,iBAAiB,CAAC;gBAChB,IAAI,EAAE,WAAW;gBACjB,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,+BAA+B,OAAO,CAAC,OAAO,EAAE;gBACtD,KAAK,EAAE,OAAO,CAAC,OAAO;gBACtB,QAAQ,EAAE,yBAAyB;gBACnC,OAAO,EAAE,oBAAoB,OAAO,CAAC,OAAO,GAAG;aAChD,CAAC,CACH,CAAC;QACJ,CAAC;QACD,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC;QACzC,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,IAAI,eAAe,CAAC;QAEvD,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YACvC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,EAAE,WAAW,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC;YACxF,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC;SAC9C,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,WAAW,CACvB,KAAY,EACZ,IAAgB,EAChB,SAA2B,EAC3B,OAAe;QAEf,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAC/E,MAAM,IAAI,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;QACvE,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;QAC/C,CAAC;QACD,MAAM,EAAE,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,EAAE,EAAE,CAAC;YACP,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,UAAU,CACtB,UAAkB,EAClB,MAAqB,EACrB,IAAgB,EAChB,SAA2B,EAC3B,OAAe;QAEf,MAAM,GAAG,GAAG,MAAM,oBAAoB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QACxE,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;YAClE,YAAY,EAAE,WAAW;SAC1B,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,cAAc,CAAC;YAC1B,UAAU;YACV,MAAM,EAAE,MAAM,IAAI,EAAE;YACpB,OAAO;YACP,IAAI;YACJ,SAAS;YACT,OAAO;SACR,CAAC,CAAC;QACH,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,MAAqB,EAAE,IAAgB;QACjE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QACjE,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export { HtmlPublishOrchestrator } from "./HtmlPublishOrchestrator.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/render/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { HtmlPublishOrchestrator } from "./HtmlPublishOrchestrator.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/infrastructure/render/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC"}