@aotter/mantle-runtime 0.0.11-alpha.73 → 0.1.0-alpha.10

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 (337) hide show
  1. package/README.md +37 -4
  2. package/dist/MantleRuntime.d.ts +96 -0
  3. package/dist/MantleRuntime.d.ts.map +1 -0
  4. package/dist/MantleRuntime.js +197 -0
  5. package/dist/MantleRuntime.js.map +1 -0
  6. package/dist/domain/model/EntryRow.d.ts +2 -2
  7. package/dist/domain/model/HandlerContext.d.ts +3 -4
  8. package/dist/domain/model/HandlerContext.d.ts.map +1 -1
  9. package/dist/domain/model/PreparedMantleRevision.d.ts +14 -0
  10. package/dist/domain/model/PreparedMantleRevision.d.ts.map +1 -0
  11. package/dist/domain/model/PreparedMantleRevision.js +8 -0
  12. package/dist/domain/model/PreparedMantleRevision.js.map +1 -0
  13. package/dist/domain/model/index.d.ts +1 -2
  14. package/dist/domain/model/index.d.ts.map +1 -1
  15. package/dist/domain/model/index.js +0 -1
  16. package/dist/domain/model/index.js.map +1 -1
  17. package/dist/domain/port/Clock.d.ts +1 -2
  18. package/dist/domain/port/Clock.d.ts.map +1 -1
  19. package/dist/domain/port/Clock.js.map +1 -1
  20. package/dist/domain/port/DatabaseDriver.d.ts +13 -21
  21. package/dist/domain/port/DatabaseDriver.d.ts.map +1 -1
  22. package/dist/domain/port/EntryReader.d.ts +1 -1
  23. package/dist/domain/port/EntryReader.d.ts.map +1 -1
  24. package/dist/domain/port/EntryRepository.d.ts +19 -4
  25. package/dist/domain/port/EntryRepository.d.ts.map +1 -1
  26. package/dist/domain/port/HandlerRegistry.d.ts +1 -1
  27. package/dist/domain/port/IdGenerator.d.ts +3 -4
  28. package/dist/domain/port/IdGenerator.d.ts.map +1 -1
  29. package/dist/domain/port/IdGenerator.js.map +1 -1
  30. package/dist/domain/port/MantleStorageAdapter.d.ts +23 -0
  31. package/dist/domain/port/MantleStorageAdapter.d.ts.map +1 -0
  32. package/dist/domain/port/MantleStorageAdapter.js +2 -0
  33. package/dist/domain/port/MantleStorageAdapter.js.map +1 -0
  34. package/dist/domain/port/SiteConfigRepository.d.ts +12 -10
  35. package/dist/domain/port/SiteConfigRepository.d.ts.map +1 -1
  36. package/dist/domain/port/ViewQueryExecutor.d.ts +29 -0
  37. package/dist/domain/port/ViewQueryExecutor.d.ts.map +1 -0
  38. package/dist/domain/port/ViewQueryExecutor.js +2 -0
  39. package/dist/domain/port/ViewQueryExecutor.js.map +1 -0
  40. package/dist/domain/port/index.d.ts +5 -4
  41. package/dist/domain/port/index.d.ts.map +1 -1
  42. package/dist/domain/port/index.js.map +1 -1
  43. package/dist/domain/service/LocaleNegotiator.d.ts.map +1 -1
  44. package/dist/domain/service/LocaleNegotiator.js +2 -2
  45. package/dist/domain/service/LocaleNegotiator.js.map +1 -1
  46. package/dist/domain/service/RuntimePlanCompiler.d.ts +89 -0
  47. package/dist/domain/service/RuntimePlanCompiler.d.ts.map +1 -0
  48. package/dist/domain/service/RuntimePlanCompiler.js +230 -0
  49. package/dist/domain/service/RuntimePlanCompiler.js.map +1 -0
  50. package/dist/domain/service/TriggerIndex.d.ts +5 -3
  51. package/dist/domain/service/TriggerIndex.d.ts.map +1 -1
  52. package/dist/domain/service/TriggerIndex.js +16 -4
  53. package/dist/domain/service/TriggerIndex.js.map +1 -1
  54. package/dist/domain/service/ViewParamCoercer.d.ts +1 -1
  55. package/dist/domain/service/ViewParamCoercer.js +1 -1
  56. package/dist/domain/service/index.d.ts +1 -10
  57. package/dist/domain/service/index.d.ts.map +1 -1
  58. package/dist/domain/service/index.js +1 -10
  59. package/dist/domain/service/index.js.map +1 -1
  60. package/dist/domain/service/io/EntryDeleteGuard.js +1 -1
  61. package/dist/domain/service/io/EntryDeleteGuard.js.map +1 -1
  62. package/dist/domain/service/io/EntryWriteGuard.d.ts +4 -3
  63. package/dist/domain/service/io/EntryWriteGuard.d.ts.map +1 -1
  64. package/dist/domain/service/io/EntryWriteGuard.js +3 -6
  65. package/dist/domain/service/io/EntryWriteGuard.js.map +1 -1
  66. package/dist/domain/service/io/JoinedEntryReader.d.ts +2 -3
  67. package/dist/domain/service/io/JoinedEntryReader.d.ts.map +1 -1
  68. package/dist/domain/service/io/JoinedEntryReader.js +2 -3
  69. package/dist/domain/service/io/JoinedEntryReader.js.map +1 -1
  70. package/dist/index.d.ts +17 -14
  71. package/dist/index.d.ts.map +1 -1
  72. package/dist/index.js +10 -12
  73. package/dist/index.js.map +1 -1
  74. package/dist/infrastructure/boot/SqliteMigrationRunner.d.ts +10 -0
  75. package/dist/infrastructure/boot/SqliteMigrationRunner.d.ts.map +1 -0
  76. package/dist/infrastructure/boot/SqliteMigrationRunner.js +41 -0
  77. package/dist/infrastructure/boot/SqliteMigrationRunner.js.map +1 -0
  78. package/dist/infrastructure/boot/bootState.d.ts +9 -0
  79. package/dist/infrastructure/boot/bootState.d.ts.map +1 -0
  80. package/dist/infrastructure/boot/bootState.js +32 -0
  81. package/dist/infrastructure/boot/bootState.js.map +1 -0
  82. package/dist/infrastructure/boot/canonicalMigrations.d.ts +2 -0
  83. package/dist/infrastructure/boot/canonicalMigrations.d.ts.map +1 -1
  84. package/dist/infrastructure/boot/canonicalMigrations.js +181 -88
  85. package/dist/infrastructure/boot/canonicalMigrations.js.map +1 -1
  86. package/dist/infrastructure/boot/index.d.ts +3 -1
  87. package/dist/infrastructure/boot/index.d.ts.map +1 -1
  88. package/dist/infrastructure/boot/index.js +3 -1
  89. package/dist/infrastructure/boot/index.js.map +1 -1
  90. package/dist/infrastructure/http/createMantleRequestHandler.d.ts +12 -0
  91. package/dist/infrastructure/http/createMantleRequestHandler.d.ts.map +1 -0
  92. package/dist/infrastructure/http/createMantleRequestHandler.js +127 -0
  93. package/dist/infrastructure/http/createMantleRequestHandler.js.map +1 -0
  94. package/dist/infrastructure/index.d.ts +0 -1
  95. package/dist/infrastructure/index.d.ts.map +1 -1
  96. package/dist/infrastructure/index.js +0 -1
  97. package/dist/infrastructure/index.js.map +1 -1
  98. package/dist/infrastructure/mcp/McpJsonRpcDispatcher.d.ts +18 -23
  99. package/dist/infrastructure/mcp/McpJsonRpcDispatcher.d.ts.map +1 -1
  100. package/dist/infrastructure/mcp/McpJsonRpcDispatcher.js +64 -39
  101. package/dist/infrastructure/mcp/McpJsonRpcDispatcher.js.map +1 -1
  102. package/dist/infrastructure/mcp/McpToolCatalog.d.ts.map +1 -1
  103. package/dist/infrastructure/mcp/McpToolCatalog.js +84 -19
  104. package/dist/infrastructure/mcp/McpToolCatalog.js.map +1 -1
  105. package/dist/infrastructure/mcp/index.d.ts +1 -1
  106. package/dist/infrastructure/mcp/index.d.ts.map +1 -1
  107. package/dist/infrastructure/mcp/index.js.map +1 -1
  108. package/dist/infrastructure/persistence/DatabaseEntryRepository.d.ts +4 -8
  109. package/dist/infrastructure/persistence/DatabaseEntryRepository.d.ts.map +1 -1
  110. package/dist/infrastructure/persistence/DatabaseEntryRepository.js +80 -35
  111. package/dist/infrastructure/persistence/DatabaseEntryRepository.js.map +1 -1
  112. package/dist/infrastructure/persistence/DatabaseSiteConfigRepository.d.ts.map +1 -1
  113. package/dist/infrastructure/persistence/DatabaseSiteConfigRepository.js +39 -31
  114. package/dist/infrastructure/persistence/DatabaseSiteConfigRepository.js.map +1 -1
  115. package/dist/infrastructure/persistence/Pagination.d.ts +5 -0
  116. package/dist/infrastructure/persistence/Pagination.d.ts.map +1 -1
  117. package/dist/infrastructure/persistence/Pagination.js +49 -0
  118. package/dist/infrastructure/persistence/Pagination.js.map +1 -1
  119. package/dist/infrastructure/storage/SqliteMantleStorageAdapter.d.ts +22 -0
  120. package/dist/infrastructure/storage/SqliteMantleStorageAdapter.d.ts.map +1 -0
  121. package/dist/infrastructure/storage/SqliteMantleStorageAdapter.js +86 -0
  122. package/dist/infrastructure/storage/SqliteMantleStorageAdapter.js.map +1 -0
  123. package/dist/{domain/service/ViewSqlCompiler.d.ts → infrastructure/storage/SqliteViewCompiler.d.ts} +12 -10
  124. package/dist/infrastructure/storage/SqliteViewCompiler.d.ts.map +1 -0
  125. package/dist/infrastructure/storage/SqliteViewCompiler.js +307 -0
  126. package/dist/infrastructure/storage/SqliteViewCompiler.js.map +1 -0
  127. package/dist/infrastructure/testing/IndexCoverageHarness.d.ts +2 -2
  128. package/dist/infrastructure/testing/IndexCoverageHarness.d.ts.map +1 -1
  129. package/dist/infrastructure/testing/IndexCoverageHarness.js +10 -9
  130. package/dist/infrastructure/testing/IndexCoverageHarness.js.map +1 -1
  131. package/dist/usecase/boot/ValidateBootUseCase.d.ts +16 -35
  132. package/dist/usecase/boot/ValidateBootUseCase.d.ts.map +1 -1
  133. package/dist/usecase/boot/ValidateBootUseCase.js +79 -254
  134. package/dist/usecase/boot/ValidateBootUseCase.js.map +1 -1
  135. package/dist/usecase/boot/index.d.ts +1 -1
  136. package/dist/usecase/boot/index.d.ts.map +1 -1
  137. package/dist/usecase/boot/index.js +1 -1
  138. package/dist/usecase/boot/index.js.map +1 -1
  139. package/dist/usecase/content/ArchiveUseCase.d.ts +2 -4
  140. package/dist/usecase/content/ArchiveUseCase.d.ts.map +1 -1
  141. package/dist/usecase/content/ArchiveUseCase.js +2 -6
  142. package/dist/usecase/content/ArchiveUseCase.js.map +1 -1
  143. package/dist/usecase/content/CreateDraftUseCase.d.ts +5 -4
  144. package/dist/usecase/content/CreateDraftUseCase.d.ts.map +1 -1
  145. package/dist/usecase/content/CreateDraftUseCase.js +10 -7
  146. package/dist/usecase/content/CreateDraftUseCase.js.map +1 -1
  147. package/dist/usecase/content/DeleteEntryUseCase.d.ts +3 -5
  148. package/dist/usecase/content/DeleteEntryUseCase.d.ts.map +1 -1
  149. package/dist/usecase/content/DeleteEntryUseCase.js +3 -5
  150. package/dist/usecase/content/DeleteEntryUseCase.js.map +1 -1
  151. package/dist/usecase/content/ListEntriesUseCase.d.ts.map +1 -1
  152. package/dist/usecase/content/ListEntriesUseCase.js +30 -3
  153. package/dist/usecase/content/ListEntriesUseCase.js.map +1 -1
  154. package/dist/usecase/content/RequestPublishUseCase.d.ts +6 -15
  155. package/dist/usecase/content/RequestPublishUseCase.d.ts.map +1 -1
  156. package/dist/usecase/content/RequestPublishUseCase.js +7 -26
  157. package/dist/usecase/content/RequestPublishUseCase.js.map +1 -1
  158. package/dist/usecase/content/UnpublishUseCase.d.ts +1 -3
  159. package/dist/usecase/content/UnpublishUseCase.d.ts.map +1 -1
  160. package/dist/usecase/content/UnpublishUseCase.js +1 -5
  161. package/dist/usecase/content/UnpublishUseCase.js.map +1 -1
  162. package/dist/usecase/content/UpdateDraftUseCase.d.ts +4 -3
  163. package/dist/usecase/content/UpdateDraftUseCase.d.ts.map +1 -1
  164. package/dist/usecase/content/UpdateDraftUseCase.js +9 -6
  165. package/dist/usecase/content/UpdateDraftUseCase.js.map +1 -1
  166. package/dist/usecase/content/diagnostics.d.ts +1 -0
  167. package/dist/usecase/content/diagnostics.d.ts.map +1 -1
  168. package/dist/usecase/content/diagnostics.js +10 -0
  169. package/dist/usecase/content/diagnostics.js.map +1 -1
  170. package/dist/usecase/dto/content/index.d.ts +10 -1
  171. package/dist/usecase/dto/content/index.d.ts.map +1 -1
  172. package/dist/usecase/dto/index.d.ts +0 -1
  173. package/dist/usecase/dto/index.d.ts.map +1 -1
  174. package/dist/usecase/dto/index.js +0 -1
  175. package/dist/usecase/dto/index.js.map +1 -1
  176. package/dist/usecase/dto/view/ExecuteViewRequest.d.ts +2 -2
  177. package/dist/usecase/dto/view/ExecuteViewRequest.d.ts.map +1 -1
  178. package/dist/usecase/index.d.ts +0 -1
  179. package/dist/usecase/index.d.ts.map +1 -1
  180. package/dist/usecase/index.js +0 -1
  181. package/dist/usecase/index.js.map +1 -1
  182. package/dist/usecase/media/diagnostics.js +1 -1
  183. package/dist/usecase/procedure/InvokeBuiltinUseCase.d.ts +5 -4
  184. package/dist/usecase/procedure/InvokeBuiltinUseCase.d.ts.map +1 -1
  185. package/dist/usecase/procedure/InvokeBuiltinUseCase.js +8 -4
  186. package/dist/usecase/procedure/InvokeBuiltinUseCase.js.map +1 -1
  187. package/dist/usecase/site/UpdateSiteSettingsUseCase.d.ts +4 -5
  188. package/dist/usecase/site/UpdateSiteSettingsUseCase.d.ts.map +1 -1
  189. package/dist/usecase/site/UpdateSiteSettingsUseCase.js +36 -6
  190. package/dist/usecase/site/UpdateSiteSettingsUseCase.js.map +1 -1
  191. package/dist/usecase/view/ExecuteViewUseCase.d.ts +8 -16
  192. package/dist/usecase/view/ExecuteViewUseCase.d.ts.map +1 -1
  193. package/dist/usecase/view/ExecuteViewUseCase.js +24 -94
  194. package/dist/usecase/view/ExecuteViewUseCase.js.map +1 -1
  195. package/dist/usecase/view/index.d.ts +2 -1
  196. package/dist/usecase/view/index.d.ts.map +1 -1
  197. package/dist/usecase/view/index.js.map +1 -1
  198. package/package.json +4 -4
  199. package/dist/domain/model/SeoMeta.d.ts +0 -47
  200. package/dist/domain/model/SeoMeta.d.ts.map +0 -1
  201. package/dist/domain/model/SeoMeta.js +0 -2
  202. package/dist/domain/model/SeoMeta.js.map +0 -1
  203. package/dist/domain/model/TemplateRegistry.d.ts +0 -50
  204. package/dist/domain/model/TemplateRegistry.d.ts.map +0 -1
  205. package/dist/domain/model/TemplateRegistry.js +0 -17
  206. package/dist/domain/model/TemplateRegistry.js.map +0 -1
  207. package/dist/domain/port/AssetServer.d.ts +0 -21
  208. package/dist/domain/port/AssetServer.d.ts.map +0 -1
  209. package/dist/domain/port/AssetServer.js +0 -2
  210. package/dist/domain/port/AssetServer.js.map +0 -1
  211. package/dist/domain/port/KvCache.d.ts +0 -34
  212. package/dist/domain/port/KvCache.d.ts.map +0 -1
  213. package/dist/domain/port/KvCache.js +0 -2
  214. package/dist/domain/port/KvCache.js.map +0 -1
  215. package/dist/domain/port/PublishOrchestrator.d.ts +0 -26
  216. package/dist/domain/port/PublishOrchestrator.d.ts.map +0 -1
  217. package/dist/domain/port/PublishOrchestrator.js +0 -2
  218. package/dist/domain/port/PublishOrchestrator.js.map +0 -1
  219. package/dist/domain/service/AbsoluteUrl.d.ts +0 -6
  220. package/dist/domain/service/AbsoluteUrl.d.ts.map +0 -1
  221. package/dist/domain/service/AbsoluteUrl.js +0 -33
  222. package/dist/domain/service/AbsoluteUrl.js.map +0 -1
  223. package/dist/domain/service/HtmlEscaping.d.ts +0 -2
  224. package/dist/domain/service/HtmlEscaping.d.ts.map +0 -1
  225. package/dist/domain/service/HtmlEscaping.js +0 -9
  226. package/dist/domain/service/HtmlEscaping.js.map +0 -1
  227. package/dist/domain/service/HtmlRenderer.d.ts +0 -36
  228. package/dist/domain/service/HtmlRenderer.d.ts.map +0 -1
  229. package/dist/domain/service/HtmlRenderer.js +0 -78
  230. package/dist/domain/service/HtmlRenderer.js.map +0 -1
  231. package/dist/domain/service/MarkdownSerializer.d.ts +0 -48
  232. package/dist/domain/service/MarkdownSerializer.d.ts.map +0 -1
  233. package/dist/domain/service/MarkdownSerializer.js +0 -109
  234. package/dist/domain/service/MarkdownSerializer.js.map +0 -1
  235. package/dist/domain/service/McpToolNaming.d.ts +0 -31
  236. package/dist/domain/service/McpToolNaming.d.ts.map +0 -1
  237. package/dist/domain/service/McpToolNaming.js +0 -48
  238. package/dist/domain/service/McpToolNaming.js.map +0 -1
  239. package/dist/domain/service/PreviewBanner.d.ts +0 -10
  240. package/dist/domain/service/PreviewBanner.d.ts.map +0 -1
  241. package/dist/domain/service/PreviewBanner.js +0 -30
  242. package/dist/domain/service/PreviewBanner.js.map +0 -1
  243. package/dist/domain/service/PublicPathResolver.d.ts +0 -41
  244. package/dist/domain/service/PublicPathResolver.d.ts.map +0 -1
  245. package/dist/domain/service/PublicPathResolver.js +0 -24
  246. package/dist/domain/service/PublicPathResolver.js.map +0 -1
  247. package/dist/domain/service/PublishKeys.d.ts +0 -42
  248. package/dist/domain/service/PublishKeys.d.ts.map +0 -1
  249. package/dist/domain/service/PublishKeys.js +0 -71
  250. package/dist/domain/service/PublishKeys.js.map +0 -1
  251. package/dist/domain/service/SeoMetaComposer.d.ts +0 -47
  252. package/dist/domain/service/SeoMetaComposer.d.ts.map +0 -1
  253. package/dist/domain/service/SeoMetaComposer.js +0 -164
  254. package/dist/domain/service/SeoMetaComposer.js.map +0 -1
  255. package/dist/domain/service/SitemapSerializer.d.ts +0 -19
  256. package/dist/domain/service/SitemapSerializer.d.ts.map +0 -1
  257. package/dist/domain/service/SitemapSerializer.js +0 -27
  258. package/dist/domain/service/SitemapSerializer.js.map +0 -1
  259. package/dist/domain/service/ViewSqlCompiler.d.ts.map +0 -1
  260. package/dist/domain/service/ViewSqlCompiler.js +0 -193
  261. package/dist/domain/service/ViewSqlCompiler.js.map +0 -1
  262. package/dist/domain/service/io/MediaAssetReferences.d.ts +0 -13
  263. package/dist/domain/service/io/MediaAssetReferences.d.ts.map +0 -1
  264. package/dist/domain/service/io/MediaAssetReferences.js +0 -48
  265. package/dist/domain/service/io/MediaAssetReferences.js.map +0 -1
  266. package/dist/infrastructure/render/HtmlPublishOrchestrator.d.ts +0 -38
  267. package/dist/infrastructure/render/HtmlPublishOrchestrator.d.ts.map +0 -1
  268. package/dist/infrastructure/render/HtmlPublishOrchestrator.js +0 -129
  269. package/dist/infrastructure/render/HtmlPublishOrchestrator.js.map +0 -1
  270. package/dist/infrastructure/render/index.d.ts +0 -2
  271. package/dist/infrastructure/render/index.d.ts.map +0 -1
  272. package/dist/infrastructure/render/index.js +0 -2
  273. package/dist/infrastructure/render/index.js.map +0 -1
  274. package/dist/runtime.d.ts +0 -150
  275. package/dist/runtime.d.ts.map +0 -1
  276. package/dist/runtime.js +0 -181
  277. package/dist/runtime.js.map +0 -1
  278. package/dist/usecase/content/ContentPublishEffects.d.ts +0 -11
  279. package/dist/usecase/content/ContentPublishEffects.d.ts.map +0 -1
  280. package/dist/usecase/content/ContentPublishEffects.js +0 -21
  281. package/dist/usecase/content/ContentPublishEffects.js.map +0 -1
  282. package/dist/usecase/dto/render/ComposeEntrySeoMetaRequest.d.ts +0 -14
  283. package/dist/usecase/dto/render/ComposeEntrySeoMetaRequest.d.ts.map +0 -1
  284. package/dist/usecase/dto/render/ComposeEntrySeoMetaRequest.js +0 -2
  285. package/dist/usecase/dto/render/ComposeEntrySeoMetaRequest.js.map +0 -1
  286. package/dist/usecase/dto/render/ComposeLlmsTxtRequest.d.ts +0 -8
  287. package/dist/usecase/dto/render/ComposeLlmsTxtRequest.d.ts.map +0 -1
  288. package/dist/usecase/dto/render/ComposeLlmsTxtRequest.js +0 -2
  289. package/dist/usecase/dto/render/ComposeLlmsTxtRequest.js.map +0 -1
  290. package/dist/usecase/dto/render/ComposeSitemapRequest.d.ts +0 -11
  291. package/dist/usecase/dto/render/ComposeSitemapRequest.d.ts.map +0 -1
  292. package/dist/usecase/dto/render/ComposeSitemapRequest.js +0 -2
  293. package/dist/usecase/dto/render/ComposeSitemapRequest.js.map +0 -1
  294. package/dist/usecase/dto/render/PreviewEntryRequest.d.ts +0 -13
  295. package/dist/usecase/dto/render/PreviewEntryRequest.d.ts.map +0 -1
  296. package/dist/usecase/dto/render/PreviewEntryRequest.js +0 -2
  297. package/dist/usecase/dto/render/PreviewEntryRequest.js.map +0 -1
  298. package/dist/usecase/dto/render/RenderEntryLiveRequest.d.ts +0 -14
  299. package/dist/usecase/dto/render/RenderEntryLiveRequest.d.ts.map +0 -1
  300. package/dist/usecase/dto/render/RenderEntryLiveRequest.js +0 -2
  301. package/dist/usecase/dto/render/RenderEntryLiveRequest.js.map +0 -1
  302. package/dist/usecase/dto/render/RenderListLiveRequest.d.ts +0 -11
  303. package/dist/usecase/dto/render/RenderListLiveRequest.d.ts.map +0 -1
  304. package/dist/usecase/dto/render/RenderListLiveRequest.js +0 -2
  305. package/dist/usecase/dto/render/RenderListLiveRequest.js.map +0 -1
  306. package/dist/usecase/dto/render/index.d.ts +0 -7
  307. package/dist/usecase/dto/render/index.d.ts.map +0 -1
  308. package/dist/usecase/dto/render/index.js +0 -7
  309. package/dist/usecase/dto/render/index.js.map +0 -1
  310. package/dist/usecase/render/ComposeEntrySeoMetaUseCase.d.ts +0 -28
  311. package/dist/usecase/render/ComposeEntrySeoMetaUseCase.d.ts.map +0 -1
  312. package/dist/usecase/render/ComposeEntrySeoMetaUseCase.js +0 -59
  313. package/dist/usecase/render/ComposeEntrySeoMetaUseCase.js.map +0 -1
  314. package/dist/usecase/render/ComposeLlmsTxtUseCase.d.ts +0 -19
  315. package/dist/usecase/render/ComposeLlmsTxtUseCase.d.ts.map +0 -1
  316. package/dist/usecase/render/ComposeLlmsTxtUseCase.js +0 -39
  317. package/dist/usecase/render/ComposeLlmsTxtUseCase.js.map +0 -1
  318. package/dist/usecase/render/ComposeSitemapUseCase.d.ts +0 -15
  319. package/dist/usecase/render/ComposeSitemapUseCase.d.ts.map +0 -1
  320. package/dist/usecase/render/ComposeSitemapUseCase.js +0 -28
  321. package/dist/usecase/render/ComposeSitemapUseCase.js.map +0 -1
  322. package/dist/usecase/render/PreviewEntryUseCase.d.ts +0 -28
  323. package/dist/usecase/render/PreviewEntryUseCase.d.ts.map +0 -1
  324. package/dist/usecase/render/PreviewEntryUseCase.js +0 -72
  325. package/dist/usecase/render/PreviewEntryUseCase.js.map +0 -1
  326. package/dist/usecase/render/RenderEntryLiveUseCase.d.ts +0 -37
  327. package/dist/usecase/render/RenderEntryLiveUseCase.d.ts.map +0 -1
  328. package/dist/usecase/render/RenderEntryLiveUseCase.js +0 -63
  329. package/dist/usecase/render/RenderEntryLiveUseCase.js.map +0 -1
  330. package/dist/usecase/render/RenderListLiveUseCase.d.ts +0 -25
  331. package/dist/usecase/render/RenderListLiveUseCase.d.ts.map +0 -1
  332. package/dist/usecase/render/RenderListLiveUseCase.js +0 -45
  333. package/dist/usecase/render/RenderListLiveUseCase.js.map +0 -1
  334. package/dist/usecase/render/index.d.ts +0 -7
  335. package/dist/usecase/render/index.d.ts.map +0 -1
  336. package/dist/usecase/render/index.js +0 -7
  337. package/dist/usecase/render/index.js.map +0 -1
@@ -1,193 +0,0 @@
1
- import { DiagnosticError, isParamRef, runtimeDiagnostic, schemaIndexedFieldSql, } from "@aotter/mantle-spec";
2
- import { clampPage, clampShow } from "./Pagination.js";
3
- // alias → SQL column. Aliases mirror RESERVED_ENTRY_COLUMNS from
4
- // spec; SQL column shape (snake_case) is local to the storage layout.
5
- // The compile-time check below ensures the alias set stays in sync —
6
- // adding to spec without updating here is a type error.
7
- const RESERVED_COLUMN = {
8
- id: "id",
9
- status: "status",
10
- version: "version",
11
- createdAt: "created_at",
12
- updatedAt: "updated_at",
13
- authorId: "author_id",
14
- };
15
- const _aliasCheck = RESERVED_COLUMN;
16
- void _aliasCheck;
17
- const DEFAULT_PROJECTION = Object.entries(RESERVED_COLUMN)
18
- .map(([alias, col]) => (alias === col ? col : `${col} AS ${alias}`))
19
- .join(", ");
20
- const SQL_COMPARISON_OP = {
21
- eq: "=",
22
- gt: ">",
23
- gte: ">=",
24
- lt: "<",
25
- lte: "<=",
26
- };
27
- export function compileView(view, options = {}, schema) {
28
- if (schema && schema.metadata.name !== view.spec.from) {
29
- throw new DiagnosticError(runtimeDiagnostic({
30
- code: "INTERNAL_ERROR",
31
- severity: "error",
32
- path: "compileView/schema",
33
- value: schema.metadata.name,
34
- expected: `Schema '${view.spec.from}' referenced by View.spec.from`,
35
- message: `View '${view.metadata.name}' cannot compile against Schema '${schema.metadata.name}'.`,
36
- }));
37
- }
38
- const sqlParams = [view.spec.from];
39
- const selectExpr = buildSelect(view.spec.fields, schema);
40
- const whereParts = ["collection = ?"];
41
- if (view.spec.filter) {
42
- const compiled = compileFilter(view.spec.filter, options.params ?? {}, schema);
43
- if (compiled !== null) {
44
- whereParts.push(`(${compiled.sql})`);
45
- sqlParams.push(...compiled.params);
46
- }
47
- }
48
- const where = `WHERE ${whereParts.join(" AND ")}`;
49
- const orderBy = buildOrderBy(view.spec.orderBy, schema);
50
- const effectiveShow = clampShow(options.show, view.spec.limit);
51
- const effectivePage = clampPage(options.page);
52
- // Cap the offset so a huge `?page=` can't render in exponential
53
- // notation (`5e+21`) or exceed SQLite's INT64 range — either makes
54
- // D1 reject the literal and surfaces as a 500 instead of an empty
55
- // page. MAX_SAFE_INTEGER (~9e15) stringifies as plain digits and is
56
- // well under INT64 max; any page past the data just returns no rows.
57
- const offset = Math.min((effectivePage - 1) * effectiveShow, Number.MAX_SAFE_INTEGER);
58
- const sql = `SELECT ${selectExpr} FROM entries ${where}${orderBy} LIMIT ${effectiveShow} OFFSET ${offset}`;
59
- return { sql, params: sqlParams, effectivePage, effectiveShow };
60
- }
61
- function buildSelect(fields, schema) {
62
- if (!fields || fields.length === 0)
63
- return DEFAULT_PROJECTION;
64
- return fields.map((field) => fieldExpr(field, schema)).join(", ");
65
- }
66
- function fieldExpr(field, schema) {
67
- const reserved = RESERVED_COLUMN[field];
68
- const expression = fieldRefExpr(field, schema);
69
- if (reserved === field)
70
- return expression;
71
- return `${expression} AS ${reserved ? field : quoteIdent(field)}`;
72
- }
73
- function fieldRefExpr(field, schema) {
74
- const reserved = RESERVED_COLUMN[field];
75
- if (reserved)
76
- return reserved;
77
- const indexed = schema ? schemaIndexedFieldSql(schema, field) : null;
78
- if (indexed)
79
- return indexed;
80
- return `json_extract(data, ${quotedJsonPath(field)})`;
81
- }
82
- /**
83
- * Returns `null` when the node has no constraint to emit: an `eq`
84
- * whose `{ $param }` ref is unresolved, or an AND/OR whose children
85
- * all dropped. v0.1.0 parser enforces required-only param refs so
86
- * the drop path is dead today; kept so v0.1.x "optional param ref"
87
- * promotion is a parser-only change.
88
- *
89
- * Each node returns its own `{ sql, params }` (vs. pushing into a
90
- * shared array) so a dropped sub-tree can never leave orphan params
91
- * bound to the parent's `?` placeholders.
92
- */
93
- function compileFilter(node, paramValues, schema) {
94
- const comparison = getFilterComparison(node);
95
- if (comparison) {
96
- const value = comparison.node.value;
97
- let bound;
98
- if (isParamRef(value)) {
99
- const resolved = paramValues[value.$param];
100
- if (resolved === undefined)
101
- return null;
102
- bound = resolved;
103
- }
104
- else {
105
- bound = value;
106
- }
107
- return {
108
- sql: `${fieldRefExpr(comparison.node.field, schema)} ${SQL_COMPARISON_OP[comparison.op]} ?`,
109
- params: [bound],
110
- };
111
- }
112
- const op = "and" in node ? "AND" : "OR";
113
- const children = "and" in node ? node.and : "or" in node ? node.or : [];
114
- const compiled = children
115
- .map((c) => compileFilter(c, paramValues, schema))
116
- .filter((c) => c !== null);
117
- if (compiled.length === 0)
118
- return null;
119
- return {
120
- sql: compiled.map((c) => `(${c.sql})`).join(` ${op} `),
121
- params: compiled.flatMap((c) => c.params),
122
- };
123
- }
124
- function getFilterComparison(node) {
125
- if ("eq" in node)
126
- return { op: "eq", node: node.eq };
127
- if ("gt" in node)
128
- return { op: "gt", node: node.gt };
129
- if ("gte" in node)
130
- return { op: "gte", node: node.gte };
131
- if ("lt" in node)
132
- return { op: "lt", node: node.lt };
133
- if ("lte" in node)
134
- return { op: "lte", node: node.lte };
135
- return null;
136
- }
137
- function buildOrderBy(orderBy, schema) {
138
- if (!orderBy || orderBy.length === 0)
139
- return "";
140
- const parts = orderBy.map((o) => {
141
- // Closed-set map, never interpolate the raw value: `direction` is
142
- // only a compile-time "asc"|"desc" type, but manifests are parsed
143
- // from YAML, so an out-of-enum string (e.g. `DESC LIMIT 0 --`)
144
- // could otherwise reach the SQL string verbatim.
145
- const dir = o.direction === "desc" ? "DESC" : "ASC";
146
- return `${fieldRefExpr(o.field, schema)} ${dir}`;
147
- });
148
- return ` ORDER BY ${parts.join(", ")}`;
149
- }
150
- // Schema JSON property keys can be arbitrary strings per RFC 8259,
151
- // but SQLite's JSON1 path syntax (`$."key"`) has no documented way
152
- // to escape an inner `"` or `\` inside a quoted key — doubled-quote
153
- // escaping is the SQLite identifier convention, NOT a JSON-path
154
- // convention. So we always quote the path/alias (admitting hyphens,
155
- // spaces, etc.) but refuse `"`, `\`, and `\0` in field names —
156
- // those break either the JSON-path resolution or the SQL string
157
- // literal. Real Schema authors don't use those characters in keys;
158
- // rejecting them keeps the path always-resolvable.
159
- const FORBIDDEN_FIELD_CHARS = /["\\\0]/;
160
- function assertFieldNameSafe(name, callsite) {
161
- if (!FORBIDDEN_FIELD_CHARS.test(name))
162
- return;
163
- throw new DiagnosticError(runtimeDiagnostic({
164
- code: "INTERNAL_ERROR",
165
- severity: "error",
166
- path: `compileView/${callsite}`,
167
- value: name,
168
- expected: 'field name without `"`, `\\`, or NUL',
169
- message: `field name '${name}' contains an unrepresentable character (\", \\, or NUL); Schema validation should have caught this.`,
170
- }));
171
- }
172
- /**
173
- * Emit `'$."<field>"'` — a SQL string literal containing a SQLite
174
- * JSON path. Doubles single quotes for the surrounding SQL literal
175
- * (SQLite literal escape). Field name itself is guaranteed free of
176
- * `"` / `\` / NUL by `assertFieldNameSafe`, so the inner double-
177
- * quoted key needs no further escape.
178
- */
179
- function quotedJsonPath(field) {
180
- assertFieldNameSafe(field, "quotedJsonPath");
181
- // Only `'` needs escaping for the surrounding SQL literal; field
182
- // is guaranteed free of `"` / `\` / NUL.
183
- return `'$."${field.replace(/'/g, "''")}"'`;
184
- }
185
- /**
186
- * SQLite quoted-identifier alias (`"hero-image"`). Used as the result
187
- * column name so callers read the field back under its declared key.
188
- */
189
- function quoteIdent(name) {
190
- assertFieldNameSafe(name, "quoteIdent");
191
- return `"${name}"`;
192
- }
193
- //# sourceMappingURL=ViewSqlCompiler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ViewSqlCompiler.js","sourceRoot":"","sources":["../../../src/domain/service/ViewSqlCompiler.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- import type { Entry } from "@aotter/mantle-spec";
2
- import type { MediaAssetRepository } from "../../port/MediaAssetRepository.js";
3
- import type { MediaAsset } from "../../port/MediaStorage.js";
4
- /**
5
- * Extract media asset references from entry data by convention.
6
- * Starters use `coverAssetId`, `imageAssetId`, nested `{ assetId }`, etc.
7
- * The schema-level source of truth remains `x-mantle-ref: media_assets`;
8
- * this convention keeps the render path schema-agnostic until the
9
- * manifest compiler exposes field metadata at runtime.
10
- */
11
- export declare function collectMediaAssetIds(value: unknown): readonly string[];
12
- export declare function resolveMediaAssetsForEntries(repo: MediaAssetRepository | null, entries: readonly Entry[]): Promise<ReadonlyMap<string, MediaAsset> | undefined>;
13
- //# sourceMappingURL=MediaAssetReferences.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MediaAssetReferences.d.ts","sourceRoot":"","sources":["../../../../src/domain/service/io/MediaAssetReferences.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAE7D;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,MAAM,EAAE,CAItE;AAED,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,oBAAoB,GAAG,IAAI,EACjC,OAAO,EAAE,SAAS,KAAK,EAAE,GACxB,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,SAAS,CAAC,CAKtD"}
@@ -1,48 +0,0 @@
1
- /**
2
- * Extract media asset references from entry data by convention.
3
- * Starters use `coverAssetId`, `imageAssetId`, nested `{ assetId }`, etc.
4
- * The schema-level source of truth remains `x-mantle-ref: media_assets`;
5
- * this convention keeps the render path schema-agnostic until the
6
- * manifest compiler exposes field metadata at runtime.
7
- */
8
- export function collectMediaAssetIds(value) {
9
- const out = [];
10
- collect(value, out);
11
- return [...new Set(out)];
12
- }
13
- export async function resolveMediaAssetsForEntries(repo, entries) {
14
- if (!repo)
15
- return undefined;
16
- const ids = collectMediaAssetIds(entries.map((entry) => entry.data));
17
- if (ids.length === 0)
18
- return undefined;
19
- return repo.findManyByIds(ids);
20
- }
21
- function collect(value, out) {
22
- if (value == null)
23
- return;
24
- if (Array.isArray(value)) {
25
- for (const item of value)
26
- collect(item, out);
27
- return;
28
- }
29
- if (typeof value !== "object")
30
- return;
31
- for (const [key, child] of Object.entries(value)) {
32
- if (typeof child === "string" &&
33
- (key === "assetId" || key.endsWith("AssetId")) &&
34
- child.length > 0) {
35
- out.push(child);
36
- continue;
37
- }
38
- if (Array.isArray(child) && key.endsWith("AssetIds")) {
39
- for (const item of child) {
40
- if (typeof item === "string" && item.length > 0)
41
- out.push(item);
42
- }
43
- continue;
44
- }
45
- collect(child, out);
46
- }
47
- }
48
- //# sourceMappingURL=MediaAssetReferences.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MediaAssetReferences.js","sourceRoot":"","sources":["../../../../src/domain/service/io/MediaAssetReferences.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACpB,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,IAAiC,EACjC,OAAyB;IAEzB,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,MAAM,GAAG,GAAG,oBAAoB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACrE,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACvC,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,OAAO,CAAC,KAAc,EAAE,GAAa;IAC5C,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO;IAC1B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,KAAK,MAAM,IAAI,IAAI,KAAK;YAAE,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC7C,OAAO;IACT,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO;IACtC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,EAAE,CAAC;QAC5E,IACE,OAAO,KAAK,KAAK,QAAQ;YACzB,CAAC,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YAC9C,KAAK,CAAC,MAAM,GAAG,CAAC,EAChB,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChB,SAAS;QACX,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACrD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;oBAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClE,CAAC;YACD,SAAS;QACX,CAAC;QACD,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACtB,CAAC;AACH,CAAC"}
@@ -1,38 +0,0 @@
1
- import { type SchemaManifest, type SiteConfig } from "@aotter/mantle-spec";
2
- import type { EntryReader } from "../../domain/port/EntryReader.js";
3
- import type { KvCache } from "../../domain/port/KvCache.js";
4
- import type { MediaAssetRepository } from "../../domain/port/MediaAssetRepository.js";
5
- import type { PublishEntryRequest, PublishOrchestrator } from "../../domain/port/PublishOrchestrator.js";
6
- import type { PublicPathResolver } from "../../domain/service/PublicPathResolver.js";
7
- import { type ComposeEntrySeoMetaUseCase } from "../../usecase/render/ComposeEntrySeoMetaUseCase.js";
8
- /**
9
- * Structural contract of the llms.txt composer the orchestrator
10
- * accepts. Kept here (vs. importing the concrete use-case class) so
11
- * infrastructure doesn't cross the `infrastructure→usecase` boundary
12
- * — the runtime assembly root wires in `ComposeLlmsTxtUseCase`,
13
- * which satisfies this shape.
14
- */
15
- export interface LlmsTxtComposer {
16
- execute(args: {
17
- readonly site: SiteConfig;
18
- readonly locale: string | null;
19
- }): Promise<string>;
20
- }
21
- export declare class HtmlPublishOrchestrator implements PublishOrchestrator {
22
- private readonly reader;
23
- private readonly kv;
24
- private readonly paths;
25
- private readonly composeSeo;
26
- private readonly composeLlmsTxt;
27
- private readonly schemas;
28
- private readonly mediaAssets;
29
- constructor(reader: EntryReader, kv: KvCache, paths: PublicPathResolver | null, composeSeo: Pick<ComposeEntrySeoMetaUseCase, "execute">, composeLlmsTxt: LlmsTxtComposer, schemas: ReadonlyMap<string, SchemaManifest>, mediaAssets?: MediaAssetRepository | null);
30
- publish(request: PublishEntryRequest): Promise<void>;
31
- unpublish(request: PublishEntryRequest): Promise<void>;
32
- invalidateAll(): Promise<void>;
33
- private deletePrefix;
34
- private renderEntry;
35
- private renderList;
36
- private renderLlmsTxt;
37
- }
38
- //# sourceMappingURL=HtmlPublishOrchestrator.d.ts.map
@@ -1 +0,0 @@
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,WAAW,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,0CAA0C,CAAC;AAgBlD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAErF,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,oDAAoD,CAAC;AAE5D;;;;;;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,MAAM;IACvB,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;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW;gBANX,MAAM,EAAE,WAAW,EACnB,EAAE,EAAE,OAAO,EACX,KAAK,EAAE,kBAAkB,GAAG,IAAI,EAChC,UAAU,EAAE,IAAI,CAAC,0BAA0B,EAAE,SAAS,CAAC,EACvD,cAAc,EAAE,eAAe,EAC/B,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,EAC5C,WAAW,GAAE,oBAAoB,GAAG,IAAW;IAG5D,OAAO,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBpD,SAAS,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBtD,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;YAQtB,YAAY;YASZ,WAAW;YAkBX,UAAU;YA0BV,aAAa;CAI5B"}
@@ -1,129 +0,0 @@
1
- import { DiagnosticError, runtimeDiagnostic, } from "@aotter/mantle-spec";
2
- import { entryHtmlKey, entryMarkdownKey, listHtmlKey, llmsTxtKey, } from "../../domain/service/PublishKeys.js";
3
- import { joinParentForList, joinParentIfTranslation, } from "../../domain/service/io/JoinedEntryReader.js";
4
- import { serializeEntryAsMarkdown } from "../../domain/service/MarkdownSerializer.js";
5
- import { renderEntryHtml, renderListHtml, } from "../../domain/service/HtmlRenderer.js";
6
- import { resolveMediaAssetsForEntries } from "../../domain/service/io/MediaAssetReferences.js";
7
- import { composeSeoIfPathed, } from "../../usecase/render/ComposeEntrySeoMetaUseCase.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
- reader;
23
- kv;
24
- paths;
25
- composeSeo;
26
- composeLlmsTxt;
27
- schemas;
28
- mediaAssets;
29
- constructor(reader, kv, paths, composeSeo, composeLlmsTxt, schemas, mediaAssets = null) {
30
- this.reader = reader;
31
- this.kv = kv;
32
- this.paths = paths;
33
- this.composeSeo = composeSeo;
34
- this.composeLlmsTxt = composeLlmsTxt;
35
- this.schemas = schemas;
36
- this.mediaAssets = mediaAssets;
37
- }
38
- async publish(request) {
39
- const raw = await requireEntry(this.reader, request.entryId, "usecase/PublishEntry");
40
- // Materialize parent fields into the translation's data before
41
- // rendering (ADR-0010). RequestPublishUseCase has already asserted
42
- // the parent is published, so a status filter is safe here.
43
- const entry = await joinParentIfTranslation(this.reader, this.schemas, raw, {
44
- parentStatus: "published",
45
- });
46
- const indexLocale = entry.locale ?? null;
47
- await Promise.all([
48
- this.renderEntry(entry, request.site, request.templates, DEFAULT_DOCTYPE),
49
- this.renderList(entry.collection, indexLocale, request.site, request.templates, DEFAULT_DOCTYPE),
50
- this.renderLlmsTxt(indexLocale, request.site),
51
- ...(indexLocale === null ? [] : [this.kv.delete(llmsTxtKey(""))]),
52
- ]);
53
- }
54
- async unpublish(request) {
55
- const entry = await requireEntry(this.reader, request.entryId, "usecase/UnpublishEntryCache");
56
- const indexLocale = entry.locale ?? null;
57
- await Promise.all([
58
- this.kv.delete(entryHtmlKey(entry)),
59
- this.kv.delete(entryMarkdownKey(entry)),
60
- this.renderList(entry.collection, indexLocale, request.site, request.templates, DEFAULT_DOCTYPE),
61
- this.renderLlmsTxt(indexLocale, request.site),
62
- ...(indexLocale === null ? [] : [this.kv.delete(llmsTxtKey(""))]),
63
- ]);
64
- }
65
- async invalidateAll() {
66
- await Promise.all([
67
- this.deletePrefix("entry:html:"),
68
- this.deletePrefix("list:html:"),
69
- this.deletePrefix("llms:"),
70
- ]);
71
- }
72
- async deletePrefix(prefix) {
73
- let cursor = null;
74
- do {
75
- const page = await this.kv.list(prefix, cursor);
76
- await Promise.all(page.keys.map((key) => this.kv.delete(key)));
77
- cursor = page.cursor;
78
- } while (cursor);
79
- }
80
- async renderEntry(entry, site, templates, doctype) {
81
- const seo = await composeSeoIfPathed(this.composeSeo, this.paths, entry, site);
82
- const mediaAssets = await resolveMediaAssetsForEntries(this.mediaAssets, [entry]);
83
- const html = renderEntryHtml({ entry, site, templates, doctype, mediaAssets, seo });
84
- if (html !== null) {
85
- await this.kv.put(entryHtmlKey(entry), html);
86
- }
87
- const md = serializeEntryAsMarkdown(entry);
88
- if (md) {
89
- await this.kv.put(entryMarkdownKey(entry), md);
90
- }
91
- }
92
- async renderList(collection, locale, site, templates, doctype) {
93
- const raw = await this.reader.readPublished({ locale, collection });
94
- const entries = await joinParentForList(this.reader, this.schemas, raw, {
95
- parentStatus: "published",
96
- });
97
- const mediaAssets = await resolveMediaAssetsForEntries(this.mediaAssets, entries);
98
- const html = renderListHtml({
99
- collection,
100
- locale: locale ?? "",
101
- entries,
102
- site,
103
- templates,
104
- doctype,
105
- mediaAssets,
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
- async function requireEntry(reader, entryId, pathPrefix) {
117
- const entry = await reader.readById(entryId);
118
- if (entry)
119
- return entry;
120
- throw new DiagnosticError(runtimeDiagnostic({
121
- code: "NOT_FOUND",
122
- severity: "error",
123
- path: `${pathPrefix}/${entryId}`,
124
- value: entryId,
125
- expected: "id of an existing entry",
126
- message: `Entry not found: ${entryId}.`,
127
- }));
128
- }
129
- //# sourceMappingURL=HtmlPublishOrchestrator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"HtmlPublishOrchestrator.js","sourceRoot":"","sources":["../../../src/infrastructure/render/HtmlPublishOrchestrator.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export { HtmlPublishOrchestrator } from "./HtmlPublishOrchestrator.js";
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/render/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC"}
@@ -1,2 +0,0 @@
1
- export { HtmlPublishOrchestrator } from "./HtmlPublishOrchestrator.js";
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/infrastructure/render/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC"}
package/dist/runtime.d.ts DELETED
@@ -1,150 +0,0 @@
1
- import { type Manifest, type ProcedureManifest, type SchemaManifest, type SiteDefaults, type TriggerManifest, type ViewManifest } from "@aotter/mantle-spec";
2
- import type { AnyHandler } from "./domain/model/HandlerContext.js";
3
- import type { TemplateRegistry } from "./domain/model/TemplateRegistry.js";
4
- import type { AssetServer } from "./domain/port/AssetServer.js";
5
- import type { DatabaseDriver } from "./domain/port/DatabaseDriver.js";
6
- import type { DeferredHookDispatcher } from "./domain/port/DeferredHookDispatcher.js";
7
- import type { EntryReader } from "./domain/port/EntryReader.js";
8
- import type { KvCache } from "./domain/port/KvCache.js";
9
- import type { MediaStorage } from "./domain/port/MediaStorage.js";
10
- import type { PublishOrchestrator } from "./domain/port/PublishOrchestrator.js";
11
- import type { SiteConfigRepository } from "./domain/port/SiteConfigRepository.js";
12
- import { type Clock } from "./domain/port/Clock.js";
13
- import { type IdGenerator } from "./domain/port/IdGenerator.js";
14
- import { type HandlerRegistry } from "./domain/port/HandlerRegistry.js";
15
- import { ArchiveUseCase, CreateDraftUseCase, DeleteEntryUseCase, GetEntryUseCase, ListEntriesUseCase, RequestPublishUseCase, UnpublishUseCase, UpdateDraftUseCase } from "./usecase/content/index.js";
16
- import { InvokeProcedureUseCase } from "./usecase/procedure/index.js";
17
- import { ExecuteViewUseCase } from "./usecase/view/index.js";
18
- import { ValidateBootUseCase } from "./usecase/boot/index.js";
19
- import { RunDeferredHookUseCase } from "./usecase/lifecycle/index.js";
20
- import { ComposeEntrySeoMetaUseCase, ComposeLlmsTxtUseCase, ComposeSitemapUseCase, PreviewEntryUseCase, RenderEntryLiveUseCase, RenderListLiveUseCase } from "./usecase/render/index.js";
21
- import { CommitMediaUploadUseCase, CreateMediaUploadUseCase, ListMediaAssetsUseCase, GetMediaAssetUseCase, UpdateMediaAssetUseCase, DeleteMediaAssetUseCase } from "./usecase/media/index.js";
22
- import { UpdateSiteSettingsUseCase } from "./usecase/site/index.js";
23
- import type { PublicPathResolver } from "./domain/service/PublicPathResolver.js";
24
- import type { MediaAsset } from "./domain/port/MediaStorage.js";
25
- /**
26
- * `createCmsRuntime` — assembly root. Per the clean-architecture
27
- * convention, this file is the only place that wires concrete
28
- * adapters (`infrastructure/persistence/*`, `infrastructure/render/*`)
29
- * to use cases (`usecase/content/*`, etc.) via ports
30
- * (`domain/port/*`).
31
- *
32
- * Adapters call this once at boot, pass the required ADR-0011 ports +
33
- * the consumer's manifests + handlers + templates + siteDefaults, and
34
- * receive a `CmsRuntime` they expose to their HTTP framework's
35
- * routing layer.
36
- *
37
- * `bootInit()` runs migrations, seeds `siteDefaults`, and validates
38
- * the manifest set against the registry. Throws `BootValidationError`
39
- * on any boot diagnostic — adapters surface the error in their init
40
- * logs.
41
- */
42
- export interface CreateCmsRuntimeArgs {
43
- readonly manifests: readonly Manifest[];
44
- readonly handlers?: Readonly<Record<string, AnyHandler>>;
45
- readonly templates?: TemplateRegistry;
46
- readonly siteDefaults?: SiteDefaults;
47
- /** Required ADR-0011 ports. */
48
- readonly db: DatabaseDriver;
49
- readonly kv: KvCache;
50
- readonly assets: AssetServer;
51
- /** Optional public-path resolver. When set, the publish pipeline
52
- * composes SEO/AEO meta on every entry render and the resolved
53
- * paths drive sitemap / hreflang sibling URLs. Adapters that
54
- * expose request-time render routes should also pass this through
55
- * so request-time HTML matches publish-time HTML. */
56
- readonly publicPathResolver?: PublicPathResolver;
57
- /** Optional media storage adapter. When unset, media MCP tools and
58
- * admin upload endpoints are not registered — uploads return 404 /
59
- * `MEDIA_NOT_CONFIGURED`. When set, the runtime wires
60
- * `CreateMediaUpload` + `CommitMediaUpload` use cases backed by
61
- * this adapter. Pending create-to-commit state remains canonical in DB. */
62
- readonly mediaStorage?: MediaStorage;
63
- /** Whether the SVG mime is allowed in `CreateMediaUpload`. Default
64
- * false; object stores don't sanitize SVG payloads. */
65
- readonly mediaAllowSvg?: boolean;
66
- /** Optional at-least-once dispatcher for `after_*` lifecycle hooks.
67
- * Queue acceptance is not atomic with the entry write. A rejection
68
- * falls back, with the same event id, to best-effort `waitUntil`
69
- * then inline execution. */
70
- readonly deferredHookDispatcher?: DeferredHookDispatcher;
71
- /** Optional clock — test seam. Defaults to `SystemClock`. */
72
- readonly clock?: Clock;
73
- /** Optional id generator — test seam. Defaults to `RandomUuidGenerator`. */
74
- readonly idgen?: IdGenerator;
75
- }
76
- export interface CmsRuntime {
77
- /** Raw ADR-0011 database driver, retained for adapter compatibility.
78
- * @deprecated Use purpose-shaped surfaces such as `entryReader` and
79
- * `siteConfig`; adapters should retain their injected driver for tables
80
- * they own. */
81
- readonly db: DatabaseDriver;
82
- readonly kv: KvCache;
83
- readonly assets: AssetServer;
84
- /** Schema-aware, lifecycle-neutral entry reads for adapter-owned routes. */
85
- readonly entryReader: EntryReader;
86
- /** Use cases (pre-wired with ports + clock + idgen). */
87
- readonly createDraft: CreateDraftUseCase;
88
- readonly updateDraft: UpdateDraftUseCase;
89
- readonly getEntry: GetEntryUseCase;
90
- readonly listEntries: ListEntriesUseCase;
91
- readonly requestPublish: RequestPublishUseCase;
92
- readonly unpublish: UnpublishUseCase;
93
- readonly archive: ArchiveUseCase;
94
- readonly deleteEntry: DeleteEntryUseCase;
95
- readonly invokeProcedure: InvokeProcedureUseCase;
96
- readonly executeView: ExecuteViewUseCase;
97
- readonly composeLlmsTxt: ComposeLlmsTxtUseCase;
98
- readonly composeSitemap: ComposeSitemapUseCase;
99
- readonly composeEntrySeoMeta: ComposeEntrySeoMetaUseCase;
100
- readonly renderEntryLive: RenderEntryLiveUseCase;
101
- readonly renderListLive: RenderListLiveUseCase;
102
- readonly previewEntry: PreviewEntryUseCase;
103
- readonly validateBoot: ValidateBootUseCase;
104
- readonly publishOrchestrator: PublishOrchestrator;
105
- readonly siteConfig: SiteConfigRepository;
106
- readonly updateSiteSettings: UpdateSiteSettingsUseCase;
107
- /** The resolver passed at boot, or `null` when the consumer didn't
108
- * supply one. Adapters use this to derive URLs (sitemap, SEO
109
- * hreflangs) without rebuilding the mapping. */
110
- readonly publicPathResolver: PublicPathResolver | null;
111
- /** Pre-wired media use cases when `mediaStorage` was supplied; null
112
- * otherwise. Adapters route admin endpoints + MCP tools off this.
113
- *
114
- * `resolve` / `resolveMany` materialise the variants set of a
115
- * committed asset by id — entry data references assets via
116
- * `x-mantle-ref: media_assets`, and renderers call these to emit
117
- * `<picture>`. `resolveMany` batches a render-pass's worth of
118
- * references in one DB round trip. */
119
- readonly media: {
120
- readonly storage: MediaStorage;
121
- readonly createUpload: CreateMediaUploadUseCase;
122
- readonly commitUpload: CommitMediaUploadUseCase;
123
- /** Admin media-library use cases (#434): list/get/patch/delete over
124
- * committed assets. Adapters route `/admin/api/media*` off these. */
125
- readonly listAssets: ListMediaAssetsUseCase;
126
- readonly getAsset: GetMediaAssetUseCase;
127
- readonly updateAsset: UpdateMediaAssetUseCase;
128
- readonly deleteAsset: DeleteMediaAssetUseCase;
129
- resolve(id: string): Promise<MediaAsset | null>;
130
- resolveMany(ids: readonly string[]): Promise<ReadonlyMap<string, MediaAsset>>;
131
- } | null;
132
- /** Validate and drive a deferred after-hook from an untrusted Queue
133
- * body. Failures escape so the adapter can retry/DLQ the event. */
134
- readonly runDeferredHook: RunDeferredHookUseCase;
135
- /** Adapter-helper bag. */
136
- readonly registry: HandlerRegistry;
137
- readonly templates: TemplateRegistry;
138
- readonly schemasByName: ReadonlyMap<string, SchemaManifest>;
139
- readonly proceduresByName: ReadonlyMap<string, ProcedureManifest>;
140
- readonly viewsByName: ReadonlyMap<string, ViewManifest>;
141
- readonly triggers: readonly TriggerManifest[];
142
- readonly triggersByName: ReadonlyMap<string, TriggerManifest>;
143
- readonly clock: Clock;
144
- readonly idgen: IdGenerator;
145
- /** Run migrations, seed siteDefaults, and validate boot. Adapters
146
- * call this once per isolate before routing requests. */
147
- bootInit(): Promise<void>;
148
- }
149
- export declare function createCmsRuntime(args: CreateCmsRuntimeArgs): CmsRuntime;
150
- //# sourceMappingURL=runtime.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}