@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,116 @@
1
+ export async function readPublishedEntries(db, filter = {}) {
2
+ const conditions = ["status = 'published'"];
3
+ const binds = [];
4
+ if (filter.locale === null) {
5
+ conditions.push(`json_extract(data, '$.locale') IS NULL`);
6
+ }
7
+ else if (typeof filter.locale === "string") {
8
+ conditions.push(`json_extract(data, '$.locale') = ?`);
9
+ binds.push(filter.locale);
10
+ }
11
+ if (filter.collection) {
12
+ conditions.push("collection = ?");
13
+ binds.push(filter.collection);
14
+ }
15
+ let sql = `SELECT id, collection, status, version, data, created_at, updated_at` +
16
+ ` FROM entries WHERE ${conditions.join(" AND ")} ORDER BY updated_at DESC`;
17
+ if (typeof filter.limit === "number" && Number.isFinite(filter.limit) && filter.limit > 0) {
18
+ sql += ` LIMIT ${Math.floor(filter.limit)}`;
19
+ }
20
+ const rows = await db.prepare(sql).bind(...binds).all();
21
+ return rows.map(rowToEntry);
22
+ }
23
+ /** Single-entry lookup by id. Used by the publish pipeline to load
24
+ * the entry it's about to render; lifted into the domain service so
25
+ * the orchestrator stops owning row-to-domain mapping. */
26
+ export async function readEntryById(db, id) {
27
+ const row = await db
28
+ .prepare(`SELECT id, collection, status, version, data, created_at, updated_at` +
29
+ ` FROM entries WHERE id = ?`)
30
+ .bind(id)
31
+ .first();
32
+ return row ? rowToEntry(row) : null;
33
+ }
34
+ export async function readEntryBySlug(db, args) {
35
+ return readEntryByDataField(db, {
36
+ collection: args.collection,
37
+ field: "slug",
38
+ value: args.slug,
39
+ locale: args.locale,
40
+ status: args.status,
41
+ });
42
+ }
43
+ // Single-segment allowlist (no dots). Deliberately stricter than
44
+ // ViewSqlCompiler.SAFE_FIELD_NAME (which accepts dotted JSON paths
45
+ // like `foo.bar` for multi-segment view projections). Both regexes
46
+ // exist on purpose; keep them in sync conceptually but distinct.
47
+ const SAFE_FIELD_RE = /^[A-Za-z_][A-Za-z0-9_]*$/;
48
+ function assertSafeField(field) {
49
+ if (!SAFE_FIELD_RE.test(field)) {
50
+ throw new Error(`field name ${JSON.stringify(field)} fails ${SAFE_FIELD_RE} — schema field names must be plain identifiers (SQL-injection backstop for json_extract path interpolation)`);
51
+ }
52
+ }
53
+ export async function readEntryByDataField(db, args) {
54
+ assertSafeField(args.field);
55
+ const conditions = [
56
+ "collection = ?",
57
+ `json_extract(data, '$.${args.field}') = ?`,
58
+ ];
59
+ const binds = [args.collection, args.value];
60
+ if (args.locale === null) {
61
+ conditions.push(`json_extract(data, '$.locale') IS NULL`);
62
+ }
63
+ else if (typeof args.locale === "string") {
64
+ conditions.push(`json_extract(data, '$.locale') = ?`);
65
+ binds.push(args.locale);
66
+ }
67
+ if (args.status) {
68
+ conditions.push("status = ?");
69
+ binds.push(args.status);
70
+ }
71
+ const sql = `SELECT id, collection, status, version, data, created_at, updated_at` +
72
+ ` FROM entries WHERE ${conditions.join(" AND ")} ORDER BY updated_at DESC LIMIT 1`;
73
+ const row = await db.prepare(sql).bind(...binds).first();
74
+ return row ? rowToEntry(row) : null;
75
+ }
76
+ export async function readEntriesByDataFieldIn(db, args) {
77
+ if (args.values.length === 0)
78
+ return [];
79
+ assertSafeField(args.field);
80
+ const placeholders = args.values.map(() => "?").join(", ");
81
+ const conditions = [
82
+ "collection = ?",
83
+ `json_extract(data, '$.${args.field}') IN (${placeholders})`,
84
+ ];
85
+ const binds = [args.collection, ...args.values];
86
+ if (args.locale === null) {
87
+ conditions.push(`json_extract(data, '$.locale') IS NULL`);
88
+ }
89
+ else if (typeof args.locale === "string") {
90
+ conditions.push(`json_extract(data, '$.locale') = ?`);
91
+ binds.push(args.locale);
92
+ }
93
+ if (args.status) {
94
+ conditions.push("status = ?");
95
+ binds.push(args.status);
96
+ }
97
+ const sql = `SELECT id, collection, status, version, data, created_at, updated_at` +
98
+ ` FROM entries WHERE ${conditions.join(" AND ")} ORDER BY updated_at DESC`;
99
+ const rows = await db.prepare(sql).bind(...binds).all();
100
+ return rows.map(rowToEntry);
101
+ }
102
+ function rowToEntry(row) {
103
+ const data = JSON.parse(row.data);
104
+ const dataLocale = data["locale"];
105
+ return {
106
+ id: row.id,
107
+ collection: row.collection,
108
+ locale: typeof dataLocale === "string" ? dataLocale : undefined,
109
+ status: row.status,
110
+ version: row.version,
111
+ data,
112
+ createdAt: row.created_at,
113
+ updatedAt: row.updated_at,
114
+ };
115
+ }
116
+ //# sourceMappingURL=PublishedEntries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PublishedEntries.js","sourceRoot":"","sources":["../../../../src/domain/service/io/PublishedEntries.ts"],"names":[],"mappings":"AAmCA,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,EAAkB,EAClB,SAAiC,EAAE;IAEnC,MAAM,UAAU,GAAa,CAAC,sBAAsB,CAAC,CAAC;IACtD,MAAM,KAAK,GAAc,EAAE,CAAC;IAC5B,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QAC3B,UAAU,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;SAAM,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC7C,UAAU,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QACtD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IACD,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;IACD,IAAI,GAAG,GACL,sEAAsE;QACtE,uBAAuB,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC;IAC7E,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;QAC1F,GAAG,IAAI,UAAU,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;IAC9C,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,EAAc,CAAC;IACpE,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC9B,CAAC;AAED;;2DAE2D;AAC3D,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,EAAkB,EAClB,EAAU;IAEV,MAAM,GAAG,GAAG,MAAM,EAAE;SACjB,OAAO,CACN,sEAAsE;QACpE,4BAA4B,CAC/B;SACA,IAAI,CAAC,EAAE,CAAC;SACR,KAAK,EAAc,CAAC;IACvB,OAAO,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACtC,CAAC;AAgBD,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,EAAkB,EAClB,IAAyB;IAEzB,OAAO,oBAAoB,CAAC,EAAE,EAAE;QAC9B,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,KAAK,EAAE,MAAM;QACb,KAAK,EAAE,IAAI,CAAC,IAAI;QAChB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,MAAM,EAAE,IAAI,CAAC,MAAM;KACpB,CAAC,CAAC;AACL,CAAC;AAcD,iEAAiE;AACjE,mEAAmE;AACnE,mEAAmE;AACnE,iEAAiE;AACjE,MAAM,aAAa,GAAG,0BAA0B,CAAC;AAEjD,SAAS,eAAe,CAAC,KAAa;IACpC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CACb,cAAc,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,aAAa,8GAA8G,CACzK,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,EAAkB,EAClB,IAA8B;IAE9B,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5B,MAAM,UAAU,GAAa;QAC3B,gBAAgB;QAChB,yBAAyB,IAAI,CAAC,KAAK,QAAQ;KAC5C,CAAC;IACF,MAAM,KAAK,GAAc,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACvD,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QACzB,UAAU,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;SAAM,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC3C,UAAU,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QACtD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IACD,MAAM,GAAG,GACP,sEAAsE;QACtE,uBAAuB,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,mCAAmC,CAAC;IACrF,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,EAAc,CAAC;IACrE,OAAO,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACtC,CAAC;AAgBD,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,EAAkB,EAClB,IAAkC;IAElC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACxC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,MAAM,UAAU,GAAa;QAC3B,gBAAgB;QAChB,yBAAyB,IAAI,CAAC,KAAK,UAAU,YAAY,GAAG;KAC7D,CAAC;IACF,MAAM,KAAK,GAAc,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3D,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QACzB,UAAU,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;SAAM,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC3C,UAAU,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QACtD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IACD,MAAM,GAAG,GACP,sEAAsE;QACtE,uBAAuB,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC;IAC7E,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,EAAc,CAAC;IACpE,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,UAAU,CAAC,GAAe;IACjC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAA4B,CAAC;IAC7D,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClC,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,MAAM,EAAE,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;QAC/D,MAAM,EAAE,GAAG,CAAC,MAAsB;QAClC,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,IAAI;QACJ,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,SAAS,EAAE,GAAG,CAAC,UAAU;KAC1B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * `domain/service/io/` — read helpers that take a `DatabaseDriver`.
3
+ * Domain-level deps but perform real IO, so kept out of the parent
4
+ * `domain/service` barrel's purity claim.
5
+ */
6
+ export * from "./PublishedEntries.js";
7
+ export * from "./JoinedEntryReader.js";
8
+ export * from "./EntryWriteGuard.js";
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/domain/service/io/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * `domain/service/io/` — read helpers that take a `DatabaseDriver`.
3
+ * Domain-level deps but perform real IO, so kept out of the parent
4
+ * `domain/service` barrel's purity claim.
5
+ */
6
+ export * from "./PublishedEntries.js";
7
+ export * from "./JoinedEntryReader.js";
8
+ export * from "./EntryWriteGuard.js";
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/domain/service/io/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * `@aotter/mantle-runtime` — public surface.
3
+ *
4
+ * Adapter-agnostic runtime engine for mantle. Layered per the
5
+ * Aotter clean-architecture convention (mirrors `aotter-clam/clam/core`):
6
+ *
7
+ * domain ← usecase ← infrastructure ← runtime.ts (assembly root)
8
+ *
9
+ * Adapters (e.g. `@aotter/mantle-cloudflare`) implement the
10
+ * required port interfaces in `domain/port/` and call `createCmsRuntime`
11
+ * to compose everything. Optional feature ports (for example media
12
+ * hosting) stay adapter-agnostic and are only wired when enabled.
13
+ *
14
+ * MUST NOT import `D1Database` / `KVNamespace` / any Cloudflare-
15
+ * specific type. The Netlify stub package exists as a public reminder.
16
+ */
17
+ export { createCmsRuntime, type CreateCmsRuntimeArgs, type CmsRuntime, } from "./runtime.js";
18
+ export type { DatabaseDriver, PreparedStatement, RunResult, BatchResult, MigrationRunner, Migration, } from "./domain/port/DatabaseDriver.js";
19
+ export type { KvCache, KvPutOptions, KvListResult } from "./domain/port/KvCache.js";
20
+ export type { AssetServer } from "./domain/port/AssetServer.js";
21
+ export type { MediaStorage, CreateUploadArgs, CreateUploadResult, CommitUploadArgs, GetPublicUrlArgs, DeleteAssetArgs, MediaAsset, } from "./domain/port/MediaStorage.js";
22
+ export type { EmailSender, EmailSendArgs, } from "./domain/port/EmailSender.js";
23
+ export { extensionForMime } from "./usecase/media/mediaAllowlist.js";
24
+ export type { DeferredHookDispatcher, DeferredHookEnvelope, CtxSnapshot, } from "./domain/port/DeferredHookDispatcher.js";
25
+ export { type IdGenerator, RandomUuidGenerator } from "./domain/port/IdGenerator.js";
26
+ export type { AnyHandler, HandlerContext, } from "./domain/model/HandlerContext.js";
27
+ export type { SeoMeta } from "./domain/model/SeoMeta.js";
28
+ export { TemplateRegistry, type EntryContext, type ListContext, type EntryTemplate, type ListTemplate, } from "./domain/model/TemplateRegistry.js";
29
+ export { createPublicPathResolver, type PublicPathResolver, type PublicPathResolverConfig, type CollectionRoute, } from "./domain/service/PublicPathResolver.js";
30
+ export { composeEntrySeoMeta, renderSeoTagsHtml, type ComposeEntrySeoMetaArgs, type SiblingTranslation, } from "./domain/service/SeoMetaComposer.js";
31
+ export { entryHtmlKey, entryMarkdownKey, entryHtmlKeyFromParts, entryMarkdownKeyFromParts, listHtmlKey, llmsTxtKey, } from "./domain/service/PublishKeys.js";
32
+ export { serializeEntryAsMarkdown } from "./domain/service/MarkdownSerializer.js";
33
+ export { readEntryBySlug } from "./domain/service/io/PublishedEntries.js";
34
+ export { inferLocaleFromPath, isKnownLocale, siteConfigFromDefaults, toUrlLocale, } from "./domain/service/LocaleNegotiator.js";
35
+ export { matchPath } from "./domain/service/PathMatcher.js";
36
+ export { evaluateAuthAll } from "./domain/service/AuthPredicateEvaluator.js";
37
+ export { coerceViewParams, ViewParamCoercionError, } from "./domain/service/ViewParamCoercer.js";
38
+ export { McpJsonRpcDispatcher, type McpAuthContext, type McpUseCases, } from "./infrastructure/mcp/McpJsonRpcDispatcher.js";
39
+ export { CANONICAL_MIGRATIONS } from "./infrastructure/boot/canonicalMigrations.js";
40
+ export { InvokeFailure } from "./usecase/procedure/InvokeProcedureUseCase.js";
41
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EACL,gBAAgB,EAChB,KAAK,oBAAoB,EACzB,KAAK,UAAU,GAChB,MAAM,cAAc,CAAC;AAKtB,YAAY,EACV,cAAc,EACd,iBAAiB,EACjB,SAAS,EACT,WAAW,EACX,eAAe,EACf,SAAS,GACV,MAAM,iCAAiC,CAAC;AACzC,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACpF,YAAY,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,UAAU,GACX,MAAM,+BAA+B,CAAC;AACvC,YAAY,EACV,WAAW,EACX,aAAa,GACd,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,YAAY,EACV,sBAAsB,EACtB,oBAAoB,EACpB,WAAW,GACZ,MAAM,yCAAyC,CAAC;AAKjD,OAAO,EAAE,KAAK,WAAW,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAGrF,YAAY,EACV,UAAU,EACV,cAAc,GACf,MAAM,kCAAkC,CAAC;AAC1C,YAAY,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EACL,gBAAgB,EAChB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,YAAY,GAClB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,wBAAwB,EACxB,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,eAAe,GACrB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,GACxB,MAAM,qCAAqC,CAAC;AAI7C,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,qBAAqB,EACrB,yBAAyB,EACzB,WAAW,EACX,UAAU,GACX,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC1E,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,sBAAsB,EACtB,WAAW,GACZ,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AAC7E,OAAO,EACL,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,sCAAsC,CAAC;AAI9C,OAAO,EACL,oBAAoB,EACpB,KAAK,cAAc,EACnB,KAAK,WAAW,GACjB,MAAM,8CAA8C,CAAC;AAItD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8CAA8C,CAAC;AAIpF,OAAO,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,45 @@
1
+ /**
2
+ * `@aotter/mantle-runtime` — public surface.
3
+ *
4
+ * Adapter-agnostic runtime engine for mantle. Layered per the
5
+ * Aotter clean-architecture convention (mirrors `aotter-clam/clam/core`):
6
+ *
7
+ * domain ← usecase ← infrastructure ← runtime.ts (assembly root)
8
+ *
9
+ * Adapters (e.g. `@aotter/mantle-cloudflare`) implement the
10
+ * required port interfaces in `domain/port/` and call `createCmsRuntime`
11
+ * to compose everything. Optional feature ports (for example media
12
+ * hosting) stay adapter-agnostic and are only wired when enabled.
13
+ *
14
+ * MUST NOT import `D1Database` / `KVNamespace` / any Cloudflare-
15
+ * specific type. The Netlify stub package exists as a public reminder.
16
+ */
17
+ // Assembly root.
18
+ export { createCmsRuntime, } from "./runtime.js";
19
+ export { extensionForMime } from "./usecase/media/mediaAllowlist.js";
20
+ // ID source — adapters wire this into binding-side helpers that need
21
+ // random IDs. Default `RandomUuidGenerator` (`crypto.randomUUID()`)
22
+ // can be swapped in tests with a deterministic counter.
23
+ export { RandomUuidGenerator } from "./domain/port/IdGenerator.js";
24
+ export { TemplateRegistry, } from "./domain/model/TemplateRegistry.js";
25
+ export { createPublicPathResolver, } from "./domain/service/PublicPathResolver.js";
26
+ export { composeEntrySeoMeta, renderSeoTagsHtml, } from "./domain/service/SeoMetaComposer.js";
27
+ // Public route / starter fixture helpers. These are intentionally
28
+ // exported one-by-one instead of exposing the whole service barrel.
29
+ export { entryHtmlKey, entryMarkdownKey, entryHtmlKeyFromParts, entryMarkdownKeyFromParts, listHtmlKey, llmsTxtKey, } from "./domain/service/PublishKeys.js";
30
+ export { serializeEntryAsMarkdown } from "./domain/service/MarkdownSerializer.js";
31
+ export { readEntryBySlug } from "./domain/service/io/PublishedEntries.js";
32
+ export { inferLocaleFromPath, isKnownLocale, siteConfigFromDefaults, toUrlLocale, } from "./domain/service/LocaleNegotiator.js";
33
+ export { matchPath } from "./domain/service/PathMatcher.js";
34
+ export { evaluateAuthAll } from "./domain/service/AuthPredicateEvaluator.js";
35
+ export { coerceViewParams, ViewParamCoercionError, } from "./domain/service/ViewParamCoercer.js";
36
+ // Explicit adapter contract for the Cloudflare MCP mount. Do not
37
+ // export the whole MCP infrastructure barrel from the root.
38
+ export { McpJsonRpcDispatcher, } from "./infrastructure/mcp/McpJsonRpcDispatcher.js";
39
+ // Starter fixture support. Kept explicit so persistence/http
40
+ // infrastructure do not become root public API by accident.
41
+ export { CANONICAL_MIGRATIONS } from "./infrastructure/boot/canonicalMigrations.js";
42
+ // Procedure handler failure carrier used by platform helper handlers
43
+ // such as Cloudflare Turnstile.
44
+ export { InvokeFailure } from "./usecase/procedure/InvokeProcedureUseCase.js";
45
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,iBAAiB;AACjB,OAAO,EACL,gBAAgB,GAGjB,MAAM,cAAc,CAAC;AA4BtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAOrE,qEAAqE;AACrE,oEAAoE;AACpE,wDAAwD;AACxD,OAAO,EAAoB,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAQrF,OAAO,EACL,gBAAgB,GAKjB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,wBAAwB,GAIzB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,mBAAmB,EACnB,iBAAiB,GAGlB,MAAM,qCAAqC,CAAC;AAE7C,kEAAkE;AAClE,oEAAoE;AACpE,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,qBAAqB,EACrB,yBAAyB,EACzB,WAAW,EACX,UAAU,GACX,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC1E,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,sBAAsB,EACtB,WAAW,GACZ,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AAC7E,OAAO,EACL,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,sCAAsC,CAAC;AAE9C,iEAAiE;AACjE,4DAA4D;AAC5D,OAAO,EACL,oBAAoB,GAGrB,MAAM,8CAA8C,CAAC;AAEtD,6DAA6D;AAC7D,4DAA4D;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8CAA8C,CAAC;AAEpF,qEAAqE;AACrE,gCAAgC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { Migration } from "../../domain/port/DatabaseDriver.js";
2
+ /**
3
+ * Canonical migration list — the runtime owns the schema; adapters
4
+ * just execute. `id` strings are stable forever; the `_migrations`
5
+ * tracking table makes subsequent boots idempotent. Append-only from
6
+ * v0.1.0 onwards.
7
+ */
8
+ export declare const CANONICAL_MIGRATIONS: readonly Migration[];
9
+ //# sourceMappingURL=canonicalMigrations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canonicalMigrations.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/boot/canonicalMigrations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAErE;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAE,SAAS,SAAS,EA2JpD,CAAC"}
@@ -0,0 +1,162 @@
1
+ /**
2
+ * Canonical migration list — the runtime owns the schema; adapters
3
+ * just execute. `id` strings are stable forever; the `_migrations`
4
+ * tracking table makes subsequent boots idempotent. Append-only from
5
+ * v0.1.0 onwards.
6
+ */
7
+ export const CANONICAL_MIGRATIONS = [
8
+ {
9
+ id: "0001-init",
10
+ description: "v0.1.0 schema: entries / revisions / approvals / site_config + Better Auth tables (ADR-0014)",
11
+ // SQLite: Better Auth serializes Date → ISO 8601 string and
12
+ // boolean → 0/1, so date columns are TEXT and booleans INTEGER.
13
+ sql: `
14
+ CREATE TABLE IF NOT EXISTS entries (
15
+ id TEXT PRIMARY KEY,
16
+ collection TEXT NOT NULL,
17
+ status TEXT NOT NULL,
18
+ version INTEGER NOT NULL DEFAULT 1,
19
+ data TEXT NOT NULL,
20
+ author_id TEXT,
21
+ created_at INTEGER NOT NULL,
22
+ updated_at INTEGER NOT NULL
23
+ );
24
+ CREATE INDEX IF NOT EXISTS entries_by_collection_updated
25
+ ON entries (collection, updated_at DESC);
26
+ CREATE INDEX IF NOT EXISTS entries_by_collection_status
27
+ ON entries (collection, status);
28
+
29
+ CREATE TABLE IF NOT EXISTS revisions (
30
+ id TEXT PRIMARY KEY,
31
+ entry_id TEXT NOT NULL,
32
+ version INTEGER NOT NULL,
33
+ data TEXT NOT NULL,
34
+ created_at INTEGER NOT NULL,
35
+ author_id TEXT,
36
+ note TEXT
37
+ );
38
+ CREATE INDEX IF NOT EXISTS revisions_by_entry_version
39
+ ON revisions (entry_id, version DESC);
40
+
41
+ CREATE TABLE IF NOT EXISTS approvals (
42
+ id TEXT PRIMARY KEY,
43
+ entry_id TEXT NOT NULL,
44
+ requested_by TEXT NOT NULL,
45
+ requested_at INTEGER NOT NULL,
46
+ note TEXT,
47
+ status TEXT NOT NULL,
48
+ resolved_by TEXT,
49
+ resolved_at INTEGER
50
+ );
51
+ CREATE INDEX IF NOT EXISTS approvals_by_entry
52
+ ON approvals (entry_id);
53
+
54
+ CREATE TABLE IF NOT EXISTS site_config (
55
+ key TEXT PRIMARY KEY,
56
+ value TEXT NOT NULL
57
+ );
58
+
59
+ CREATE TABLE IF NOT EXISTS user (
60
+ id TEXT PRIMARY KEY NOT NULL,
61
+ name TEXT NOT NULL,
62
+ email TEXT NOT NULL UNIQUE,
63
+ emailVerified INTEGER NOT NULL DEFAULT 0,
64
+ image TEXT,
65
+ createdAt TEXT NOT NULL,
66
+ updatedAt TEXT NOT NULL,
67
+ role TEXT,
68
+ banned INTEGER DEFAULT 0,
69
+ banReason TEXT,
70
+ banExpires TEXT,
71
+ githubLogin TEXT
72
+ );
73
+ -- Partial index keeps ensureBootstrapOwner's role-IN scan off
74
+ -- the pile of role=NULL rows.
75
+ CREATE INDEX IF NOT EXISTS user_role_idx ON user (role) WHERE role IS NOT NULL;
76
+
77
+ CREATE TABLE IF NOT EXISTS session (
78
+ id TEXT PRIMARY KEY NOT NULL,
79
+ expiresAt TEXT NOT NULL,
80
+ token TEXT NOT NULL UNIQUE,
81
+ createdAt TEXT NOT NULL,
82
+ updatedAt TEXT NOT NULL,
83
+ ipAddress TEXT,
84
+ userAgent TEXT,
85
+ userId TEXT NOT NULL REFERENCES user(id) ON DELETE CASCADE,
86
+ impersonatedBy TEXT
87
+ );
88
+ CREATE INDEX IF NOT EXISTS session_userId_idx ON session (userId);
89
+
90
+ CREATE TABLE IF NOT EXISTS account (
91
+ id TEXT PRIMARY KEY NOT NULL,
92
+ accountId TEXT NOT NULL,
93
+ providerId TEXT NOT NULL,
94
+ userId TEXT NOT NULL REFERENCES user(id) ON DELETE CASCADE,
95
+ accessToken TEXT,
96
+ refreshToken TEXT,
97
+ idToken TEXT,
98
+ accessTokenExpiresAt TEXT,
99
+ refreshTokenExpiresAt TEXT,
100
+ scope TEXT,
101
+ password TEXT,
102
+ createdAt TEXT NOT NULL,
103
+ updatedAt TEXT NOT NULL
104
+ );
105
+ CREATE INDEX IF NOT EXISTS account_userId_idx ON account (userId);
106
+
107
+ CREATE TABLE IF NOT EXISTS verification (
108
+ id TEXT PRIMARY KEY NOT NULL,
109
+ identifier TEXT NOT NULL,
110
+ value TEXT NOT NULL,
111
+ expiresAt TEXT NOT NULL,
112
+ createdAt TEXT NOT NULL,
113
+ updatedAt TEXT NOT NULL
114
+ );
115
+ CREATE INDEX IF NOT EXISTS verification_identifier_idx ON verification (identifier);
116
+
117
+ CREATE TABLE IF NOT EXISTS oauthApplication (
118
+ id TEXT PRIMARY KEY NOT NULL,
119
+ name TEXT NOT NULL,
120
+ icon TEXT,
121
+ metadata TEXT,
122
+ clientId TEXT NOT NULL UNIQUE,
123
+ clientSecret TEXT,
124
+ redirectUrls TEXT NOT NULL,
125
+ type TEXT NOT NULL,
126
+ disabled INTEGER DEFAULT 0,
127
+ userId TEXT REFERENCES user(id) ON DELETE CASCADE,
128
+ createdAt TEXT NOT NULL,
129
+ updatedAt TEXT NOT NULL
130
+ );
131
+ CREATE INDEX IF NOT EXISTS oauthApplication_userId_idx ON oauthApplication (userId);
132
+
133
+ CREATE TABLE IF NOT EXISTS oauthAccessToken (
134
+ id TEXT PRIMARY KEY NOT NULL,
135
+ accessToken TEXT NOT NULL UNIQUE,
136
+ refreshToken TEXT NOT NULL UNIQUE,
137
+ accessTokenExpiresAt TEXT NOT NULL,
138
+ refreshTokenExpiresAt TEXT NOT NULL,
139
+ clientId TEXT NOT NULL REFERENCES oauthApplication(clientId) ON DELETE CASCADE,
140
+ userId TEXT REFERENCES user(id) ON DELETE CASCADE,
141
+ scopes TEXT NOT NULL,
142
+ createdAt TEXT NOT NULL,
143
+ updatedAt TEXT NOT NULL
144
+ );
145
+ CREATE INDEX IF NOT EXISTS oauthAccessToken_clientId_idx ON oauthAccessToken (clientId);
146
+ CREATE INDEX IF NOT EXISTS oauthAccessToken_userId_idx ON oauthAccessToken (userId);
147
+
148
+ CREATE TABLE IF NOT EXISTS oauthConsent (
149
+ id TEXT PRIMARY KEY NOT NULL,
150
+ clientId TEXT NOT NULL REFERENCES oauthApplication(clientId) ON DELETE CASCADE,
151
+ userId TEXT NOT NULL REFERENCES user(id) ON DELETE CASCADE,
152
+ scopes TEXT NOT NULL,
153
+ createdAt TEXT NOT NULL,
154
+ updatedAt TEXT NOT NULL,
155
+ consentGiven INTEGER NOT NULL
156
+ );
157
+ CREATE INDEX IF NOT EXISTS oauthConsent_clientId_idx ON oauthConsent (clientId);
158
+ CREATE INDEX IF NOT EXISTS oauthConsent_userId_idx ON oauthConsent (userId);
159
+ `,
160
+ },
161
+ ];
162
+ //# sourceMappingURL=canonicalMigrations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canonicalMigrations.js","sourceRoot":"","sources":["../../../src/infrastructure/boot/canonicalMigrations.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAyB;IACxD;QACE,EAAE,EAAE,WAAW;QACf,WAAW,EACT,8FAA8F;QAChG,4DAA4D;QAC5D,gEAAgE;QAChE,GAAG,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAkJJ;KACF;CACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { CANONICAL_MIGRATIONS } from "./canonicalMigrations.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/boot/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { CANONICAL_MIGRATIONS } from "./canonicalMigrations.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/infrastructure/boot/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { type Diagnostic } from "@aotter/mantle-spec";
2
+ /**
3
+ * Build the HTTP response for a Diagnostic. Strips `candidates` per
4
+ * ADR-0008 (security: don't leak schema info to untrusted callers)
5
+ * and looks up the HTTP status from the spec's central mapping so
6
+ * every adapter agrees on one wire shape.
7
+ *
8
+ * Framework-agnostic — returns a plain `Response` so the cms-cloudflare
9
+ * Hono mounts (and any future adapter) can hand it back unchanged.
10
+ */
11
+ export declare function diagnosticResponse(d: Diagnostic): Response;
12
+ //# sourceMappingURL=DiagnosticResponse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiagnosticResponse.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/http/DiagnosticResponse.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,qBAAqB,CAAC;AAE7B;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,UAAU,GAAG,QAAQ,CAE1D"}
@@ -0,0 +1,14 @@
1
+ import { httpStatusFor, redactForWire, } from "@aotter/mantle-spec";
2
+ /**
3
+ * Build the HTTP response for a Diagnostic. Strips `candidates` per
4
+ * ADR-0008 (security: don't leak schema info to untrusted callers)
5
+ * and looks up the HTTP status from the spec's central mapping so
6
+ * every adapter agrees on one wire shape.
7
+ *
8
+ * Framework-agnostic — returns a plain `Response` so the cms-cloudflare
9
+ * Hono mounts (and any future adapter) can hand it back unchanged.
10
+ */
11
+ export function diagnosticResponse(d) {
12
+ return Response.json(redactForWire(d), { status: httpStatusFor(d) });
13
+ }
14
+ //# sourceMappingURL=DiagnosticResponse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiagnosticResponse.js","sourceRoot":"","sources":["../../../src/infrastructure/http/DiagnosticResponse.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,aAAa,GAEd,MAAM,qBAAqB,CAAC;AAE7B;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,CAAa;IAC9C,OAAO,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { diagnosticResponse } from "./DiagnosticResponse.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/http/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { diagnosticResponse } from "./DiagnosticResponse.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/infrastructure/http/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * `infrastructure/` — adapters that bind to ports + thin transport
3
+ * layers. Per the clean-arch rule, MCP / HTTP adapters are thin: no
4
+ * business logic, no validation, no transformation — just envelope
5
+ * handling + delegation to a use case.
6
+ */
7
+ export * from "./persistence/index.js";
8
+ export * from "./render/index.js";
9
+ export * from "./mcp/index.js";
10
+ export * from "./boot/index.js";
11
+ export * from "./http/index.js";
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/infrastructure/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * `infrastructure/` — adapters that bind to ports + thin transport
3
+ * layers. Per the clean-arch rule, MCP / HTTP adapters are thin: no
4
+ * business logic, no validation, no transformation — just envelope
5
+ * handling + delegation to a use case.
6
+ */
7
+ export * from "./persistence/index.js";
8
+ export * from "./render/index.js";
9
+ export * from "./mcp/index.js";
10
+ export * from "./boot/index.js";
11
+ export * from "./http/index.js";
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/infrastructure/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,60 @@
1
+ import { type SchemaManifest, type StaffRole, type ViewManifest } from "@aotter/mantle-spec";
2
+ import { ArchiveUseCase, CreateDraftUseCase, DeleteEntryUseCase, GetEntryUseCase, ListEntriesUseCase, RequestPublishUseCase, UnpublishUseCase, UpdateDraftUseCase } from "../../usecase/content/index.js";
3
+ import { CommitMediaUploadUseCase, CreateMediaUploadUseCase } from "../../usecase/media/index.js";
4
+ import { ExecuteViewUseCase } from "../../usecase/view/index.js";
5
+ import { type McpToolSurface } from "./McpToolCatalog.js";
6
+ /** JSON-RPC dispatcher for the MCP transport. Env-agnostic; the
7
+ * adapter resolves the caller's identity and hands `dispatch` a
8
+ * `McpAuthContext` plus the use-case bag. */
9
+ export interface McpAuthContext {
10
+ readonly userId: string;
11
+ /** Caller's staff role; null for non-staff bearers. */
12
+ readonly staff: {
13
+ readonly userId: string;
14
+ readonly role: StaffRole;
15
+ } | null;
16
+ }
17
+ /**
18
+ * The use-case bag the dispatcher needs. Adapter constructs this once
19
+ * per isolate from the runtime's pre-built use cases (the runtime's
20
+ * assembly root assembles these alongside everything else).
21
+ */
22
+ export interface McpUseCases {
23
+ readonly listEntries: ListEntriesUseCase;
24
+ readonly getEntry: GetEntryUseCase;
25
+ readonly createDraft: CreateDraftUseCase;
26
+ readonly updateDraft: UpdateDraftUseCase;
27
+ readonly requestPublish: RequestPublishUseCase;
28
+ readonly unpublish: UnpublishUseCase;
29
+ readonly archive: ArchiveUseCase;
30
+ readonly deleteEntry: DeleteEntryUseCase;
31
+ readonly executeView?: ExecuteViewUseCase;
32
+ /** Optional. When set, `create_media_upload` and `commit_media_upload`
33
+ * appear in the catalog and route here. */
34
+ readonly media?: {
35
+ readonly createUpload: CreateMediaUploadUseCase;
36
+ readonly commitUpload: CommitMediaUploadUseCase;
37
+ readonly purposes: readonly string[];
38
+ };
39
+ }
40
+ export declare class McpJsonRpcDispatcher {
41
+ private readonly useCases;
42
+ private readonly schemas;
43
+ private readonly options;
44
+ private readonly catalog;
45
+ private readonly catalogWireJson;
46
+ /** segment → original `Schema.metadata.name`. Built once at
47
+ * construction; the per-collection routing path looks up the
48
+ * segment from the tool name and recovers the canonical
49
+ * collection name. */
50
+ private readonly schemaBySegment;
51
+ private readonly viewBySegment;
52
+ constructor(useCases: McpUseCases, schemas: ReadonlyArray<SchemaManifest>, options?: {
53
+ readonly surface?: McpToolSurface;
54
+ readonly views?: ReadonlyArray<ViewManifest>;
55
+ });
56
+ dispatch(req: Request, auth: McpAuthContext): Promise<Response>;
57
+ private handleToolCall;
58
+ private dispatchToolByName;
59
+ }
60
+ //# sourceMappingURL=McpJsonRpcDispatcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"McpJsonRpcDispatcher.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/mcp/McpJsonRpcDispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,YAAY,EAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACzB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAML,KAAK,cAAc,EAEpB,MAAM,qBAAqB,CAAC;AAO7B;;8CAE8C;AAC9C,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,uDAAuD;IACvD,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;KAAE,GAAG,IAAI,CAAC;CAC9E;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;IACzC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;IACzC,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;IACzC,QAAQ,CAAC,cAAc,EAAE,qBAAqB,CAAC;IAC/C,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;IACzC,QAAQ,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAC;IAC1C;gDAC4C;IAC5C,QAAQ,CAAC,KAAK,CAAC,EAAE;QACf,QAAQ,CAAC,YAAY,EAAE,wBAAwB,CAAC;QAChD,QAAQ,CAAC,YAAY,EAAE,wBAAwB,CAAC;QAChD,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;KACtC,CAAC;CACH;AAED,qBAAa,oBAAoB;IAW7B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAZ1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+B;IACvD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC;;;2BAGuB;IACvB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA8B;IAC9D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoC;gBAG/C,QAAQ,EAAE,WAAW,EACrB,OAAO,EAAE,aAAa,CAAC,cAAc,CAAC,EACtC,OAAO,GAAE;QACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC;QAClC,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;KACzC;IAiBF,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC;YAgCvD,cAAc;YAkCd,kBAAkB;CAqJjC"}