@aotter/mantle-runtime 0.1.0-alpha.7 → 0.1.0-alpha.9

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 (257) 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/HandlerContext.d.ts +3 -4
  7. package/dist/domain/model/HandlerContext.d.ts.map +1 -1
  8. package/dist/domain/model/PreparedMantleRevision.d.ts +14 -0
  9. package/dist/domain/model/PreparedMantleRevision.d.ts.map +1 -0
  10. package/dist/domain/model/PreparedMantleRevision.js +8 -0
  11. package/dist/domain/model/PreparedMantleRevision.js.map +1 -0
  12. package/dist/domain/model/index.d.ts +1 -2
  13. package/dist/domain/model/index.d.ts.map +1 -1
  14. package/dist/domain/model/index.js +0 -1
  15. package/dist/domain/model/index.js.map +1 -1
  16. package/dist/domain/port/Clock.d.ts +1 -2
  17. package/dist/domain/port/Clock.d.ts.map +1 -1
  18. package/dist/domain/port/Clock.js.map +1 -1
  19. package/dist/domain/port/DatabaseDriver.d.ts +13 -21
  20. package/dist/domain/port/DatabaseDriver.d.ts.map +1 -1
  21. package/dist/domain/port/HandlerRegistry.d.ts +1 -1
  22. package/dist/domain/port/IdGenerator.d.ts +1 -2
  23. package/dist/domain/port/IdGenerator.d.ts.map +1 -1
  24. package/dist/domain/port/IdGenerator.js.map +1 -1
  25. package/dist/domain/port/MantleStorageAdapter.d.ts +23 -0
  26. package/dist/domain/port/MantleStorageAdapter.d.ts.map +1 -0
  27. package/dist/domain/port/MantleStorageAdapter.js +2 -0
  28. package/dist/domain/port/MantleStorageAdapter.js.map +1 -0
  29. package/dist/domain/port/SiteConfigRepository.d.ts +10 -8
  30. package/dist/domain/port/SiteConfigRepository.d.ts.map +1 -1
  31. package/dist/domain/port/ViewQueryExecutor.d.ts +29 -0
  32. package/dist/domain/port/ViewQueryExecutor.d.ts.map +1 -0
  33. package/dist/domain/port/ViewQueryExecutor.js +2 -0
  34. package/dist/domain/port/ViewQueryExecutor.js.map +1 -0
  35. package/dist/domain/port/index.d.ts +5 -2
  36. package/dist/domain/port/index.d.ts.map +1 -1
  37. package/dist/domain/port/index.js.map +1 -1
  38. package/dist/domain/service/RuntimePlanCompiler.d.ts +89 -0
  39. package/dist/domain/service/RuntimePlanCompiler.d.ts.map +1 -0
  40. package/dist/domain/service/RuntimePlanCompiler.js +230 -0
  41. package/dist/domain/service/RuntimePlanCompiler.js.map +1 -0
  42. package/dist/domain/service/TriggerIndex.d.ts +3 -0
  43. package/dist/domain/service/TriggerIndex.d.ts.map +1 -1
  44. package/dist/domain/service/TriggerIndex.js +14 -1
  45. package/dist/domain/service/TriggerIndex.js.map +1 -1
  46. package/dist/domain/service/index.d.ts +1 -9
  47. package/dist/domain/service/index.d.ts.map +1 -1
  48. package/dist/domain/service/index.js +1 -9
  49. package/dist/domain/service/index.js.map +1 -1
  50. package/dist/domain/service/io/EntryWriteGuard.d.ts +2 -2
  51. package/dist/domain/service/io/EntryWriteGuard.d.ts.map +1 -1
  52. package/dist/domain/service/io/EntryWriteGuard.js +1 -3
  53. package/dist/domain/service/io/EntryWriteGuard.js.map +1 -1
  54. package/dist/index.d.ts +15 -11
  55. package/dist/index.d.ts.map +1 -1
  56. package/dist/index.js +9 -11
  57. package/dist/index.js.map +1 -1
  58. package/dist/infrastructure/boot/SqliteMigrationRunner.d.ts +10 -0
  59. package/dist/infrastructure/boot/SqliteMigrationRunner.d.ts.map +1 -0
  60. package/dist/infrastructure/boot/SqliteMigrationRunner.js +41 -0
  61. package/dist/infrastructure/boot/SqliteMigrationRunner.js.map +1 -0
  62. package/dist/infrastructure/boot/bootState.d.ts +2 -4
  63. package/dist/infrastructure/boot/bootState.d.ts.map +1 -1
  64. package/dist/infrastructure/boot/bootState.js +1 -1
  65. package/dist/infrastructure/boot/bootState.js.map +1 -1
  66. package/dist/infrastructure/boot/canonicalMigrations.d.ts.map +1 -1
  67. package/dist/infrastructure/boot/canonicalMigrations.js +124 -60
  68. package/dist/infrastructure/boot/canonicalMigrations.js.map +1 -1
  69. package/dist/infrastructure/boot/index.d.ts +1 -0
  70. package/dist/infrastructure/boot/index.d.ts.map +1 -1
  71. package/dist/infrastructure/boot/index.js +1 -0
  72. package/dist/infrastructure/boot/index.js.map +1 -1
  73. package/dist/infrastructure/http/createMantleRequestHandler.d.ts +12 -0
  74. package/dist/infrastructure/http/createMantleRequestHandler.d.ts.map +1 -0
  75. package/dist/infrastructure/http/createMantleRequestHandler.js +127 -0
  76. package/dist/infrastructure/http/createMantleRequestHandler.js.map +1 -0
  77. package/dist/infrastructure/mcp/McpJsonRpcDispatcher.d.ts +2 -2
  78. package/dist/infrastructure/mcp/McpJsonRpcDispatcher.d.ts.map +1 -1
  79. package/dist/infrastructure/mcp/McpJsonRpcDispatcher.js +1 -1
  80. package/dist/infrastructure/mcp/McpJsonRpcDispatcher.js.map +1 -1
  81. package/dist/infrastructure/mcp/McpToolCatalog.d.ts.map +1 -1
  82. package/dist/infrastructure/mcp/McpToolCatalog.js +6 -7
  83. package/dist/infrastructure/mcp/McpToolCatalog.js.map +1 -1
  84. package/dist/infrastructure/persistence/DatabaseEntryRepository.d.ts +1 -1
  85. package/dist/infrastructure/persistence/DatabaseEntryRepository.d.ts.map +1 -1
  86. package/dist/infrastructure/persistence/DatabaseEntryRepository.js +1 -1
  87. package/dist/infrastructure/persistence/DatabaseEntryRepository.js.map +1 -1
  88. package/dist/infrastructure/persistence/DatabaseSiteConfigRepository.js +3 -3
  89. package/dist/infrastructure/storage/SqliteMantleStorageAdapter.d.ts +22 -0
  90. package/dist/infrastructure/storage/SqliteMantleStorageAdapter.d.ts.map +1 -0
  91. package/dist/infrastructure/storage/SqliteMantleStorageAdapter.js +86 -0
  92. package/dist/infrastructure/storage/SqliteMantleStorageAdapter.js.map +1 -0
  93. package/dist/{domain/service/ViewSqlCompiler.d.ts → infrastructure/storage/SqliteViewCompiler.d.ts} +9 -20
  94. package/dist/infrastructure/storage/SqliteViewCompiler.d.ts.map +1 -0
  95. package/dist/infrastructure/storage/SqliteViewCompiler.js +307 -0
  96. package/dist/infrastructure/storage/SqliteViewCompiler.js.map +1 -0
  97. package/dist/infrastructure/testing/IndexCoverageHarness.d.ts +2 -2
  98. package/dist/infrastructure/testing/IndexCoverageHarness.d.ts.map +1 -1
  99. package/dist/infrastructure/testing/IndexCoverageHarness.js +4 -4
  100. package/dist/infrastructure/testing/IndexCoverageHarness.js.map +1 -1
  101. package/dist/usecase/boot/ValidateBootUseCase.d.ts +15 -38
  102. package/dist/usecase/boot/ValidateBootUseCase.d.ts.map +1 -1
  103. package/dist/usecase/boot/ValidateBootUseCase.js +79 -274
  104. package/dist/usecase/boot/ValidateBootUseCase.js.map +1 -1
  105. package/dist/usecase/boot/index.d.ts +1 -1
  106. package/dist/usecase/boot/index.d.ts.map +1 -1
  107. package/dist/usecase/boot/index.js +1 -1
  108. package/dist/usecase/boot/index.js.map +1 -1
  109. package/dist/usecase/content/CreateDraftUseCase.d.ts +2 -2
  110. package/dist/usecase/content/CreateDraftUseCase.d.ts.map +1 -1
  111. package/dist/usecase/content/CreateDraftUseCase.js.map +1 -1
  112. package/dist/usecase/content/RequestPublishUseCase.d.ts +2 -2
  113. package/dist/usecase/content/RequestPublishUseCase.d.ts.map +1 -1
  114. package/dist/usecase/content/RequestPublishUseCase.js.map +1 -1
  115. package/dist/usecase/content/UpdateDraftUseCase.d.ts +2 -2
  116. package/dist/usecase/content/UpdateDraftUseCase.d.ts.map +1 -1
  117. package/dist/usecase/content/UpdateDraftUseCase.js.map +1 -1
  118. package/dist/usecase/dto/index.d.ts +0 -1
  119. package/dist/usecase/dto/index.d.ts.map +1 -1
  120. package/dist/usecase/dto/index.js +0 -1
  121. package/dist/usecase/dto/index.js.map +1 -1
  122. package/dist/usecase/dto/view/ExecuteViewRequest.d.ts +2 -2
  123. package/dist/usecase/dto/view/ExecuteViewRequest.d.ts.map +1 -1
  124. package/dist/usecase/index.d.ts +0 -1
  125. package/dist/usecase/index.d.ts.map +1 -1
  126. package/dist/usecase/index.js +0 -1
  127. package/dist/usecase/index.js.map +1 -1
  128. package/dist/usecase/media/diagnostics.js +1 -1
  129. package/dist/usecase/procedure/InvokeBuiltinUseCase.d.ts +2 -2
  130. package/dist/usecase/procedure/InvokeBuiltinUseCase.d.ts.map +1 -1
  131. package/dist/usecase/procedure/InvokeBuiltinUseCase.js.map +1 -1
  132. package/dist/usecase/site/UpdateSiteSettingsUseCase.d.ts.map +1 -1
  133. package/dist/usecase/site/UpdateSiteSettingsUseCase.js +8 -1
  134. package/dist/usecase/site/UpdateSiteSettingsUseCase.js.map +1 -1
  135. package/dist/usecase/view/ExecuteViewUseCase.d.ts +8 -16
  136. package/dist/usecase/view/ExecuteViewUseCase.d.ts.map +1 -1
  137. package/dist/usecase/view/ExecuteViewUseCase.js +19 -95
  138. package/dist/usecase/view/ExecuteViewUseCase.js.map +1 -1
  139. package/dist/usecase/view/index.d.ts +2 -1
  140. package/dist/usecase/view/index.d.ts.map +1 -1
  141. package/dist/usecase/view/index.js.map +1 -1
  142. package/package.json +4 -4
  143. package/dist/domain/model/SeoMeta.d.ts +0 -47
  144. package/dist/domain/model/SeoMeta.d.ts.map +0 -1
  145. package/dist/domain/model/SeoMeta.js +0 -2
  146. package/dist/domain/model/SeoMeta.js.map +0 -1
  147. package/dist/domain/model/TemplateRegistry.d.ts +0 -49
  148. package/dist/domain/model/TemplateRegistry.d.ts.map +0 -1
  149. package/dist/domain/model/TemplateRegistry.js +0 -17
  150. package/dist/domain/model/TemplateRegistry.js.map +0 -1
  151. package/dist/domain/port/AssetServer.d.ts +0 -22
  152. package/dist/domain/port/AssetServer.d.ts.map +0 -1
  153. package/dist/domain/port/AssetServer.js +0 -2
  154. package/dist/domain/port/AssetServer.js.map +0 -1
  155. package/dist/domain/service/AbsoluteUrl.d.ts +0 -6
  156. package/dist/domain/service/AbsoluteUrl.d.ts.map +0 -1
  157. package/dist/domain/service/AbsoluteUrl.js +0 -33
  158. package/dist/domain/service/AbsoluteUrl.js.map +0 -1
  159. package/dist/domain/service/HtmlEscaping.d.ts +0 -2
  160. package/dist/domain/service/HtmlEscaping.d.ts.map +0 -1
  161. package/dist/domain/service/HtmlEscaping.js +0 -9
  162. package/dist/domain/service/HtmlEscaping.js.map +0 -1
  163. package/dist/domain/service/HtmlRenderer.d.ts +0 -38
  164. package/dist/domain/service/HtmlRenderer.d.ts.map +0 -1
  165. package/dist/domain/service/HtmlRenderer.js +0 -73
  166. package/dist/domain/service/HtmlRenderer.js.map +0 -1
  167. package/dist/domain/service/MarkdownSerializer.d.ts +0 -45
  168. package/dist/domain/service/MarkdownSerializer.d.ts.map +0 -1
  169. package/dist/domain/service/MarkdownSerializer.js +0 -154
  170. package/dist/domain/service/MarkdownSerializer.js.map +0 -1
  171. package/dist/domain/service/McpToolNaming.d.ts +0 -31
  172. package/dist/domain/service/McpToolNaming.d.ts.map +0 -1
  173. package/dist/domain/service/McpToolNaming.js +0 -48
  174. package/dist/domain/service/McpToolNaming.js.map +0 -1
  175. package/dist/domain/service/PreviewBanner.d.ts +0 -10
  176. package/dist/domain/service/PreviewBanner.d.ts.map +0 -1
  177. package/dist/domain/service/PreviewBanner.js +0 -30
  178. package/dist/domain/service/PreviewBanner.js.map +0 -1
  179. package/dist/domain/service/PublicPathResolver.d.ts +0 -46
  180. package/dist/domain/service/PublicPathResolver.d.ts.map +0 -1
  181. package/dist/domain/service/PublicPathResolver.js +0 -36
  182. package/dist/domain/service/PublicPathResolver.js.map +0 -1
  183. package/dist/domain/service/SeoMetaComposer.d.ts +0 -60
  184. package/dist/domain/service/SeoMetaComposer.d.ts.map +0 -1
  185. package/dist/domain/service/SeoMetaComposer.js +0 -213
  186. package/dist/domain/service/SeoMetaComposer.js.map +0 -1
  187. package/dist/domain/service/SitemapSerializer.d.ts +0 -19
  188. package/dist/domain/service/SitemapSerializer.d.ts.map +0 -1
  189. package/dist/domain/service/SitemapSerializer.js +0 -27
  190. package/dist/domain/service/SitemapSerializer.js.map +0 -1
  191. package/dist/domain/service/ViewSqlCompiler.d.ts.map +0 -1
  192. package/dist/domain/service/ViewSqlCompiler.js +0 -244
  193. package/dist/domain/service/ViewSqlCompiler.js.map +0 -1
  194. package/dist/domain/service/io/MediaAssetReferences.d.ts +0 -13
  195. package/dist/domain/service/io/MediaAssetReferences.d.ts.map +0 -1
  196. package/dist/domain/service/io/MediaAssetReferences.js +0 -48
  197. package/dist/domain/service/io/MediaAssetReferences.js.map +0 -1
  198. package/dist/runtime.d.ts +0 -145
  199. package/dist/runtime.d.ts.map +0 -1
  200. package/dist/runtime.js +0 -224
  201. package/dist/runtime.js.map +0 -1
  202. package/dist/usecase/dto/render/ComposeEntrySeoMetaRequest.d.ts +0 -18
  203. package/dist/usecase/dto/render/ComposeEntrySeoMetaRequest.d.ts.map +0 -1
  204. package/dist/usecase/dto/render/ComposeEntrySeoMetaRequest.js +0 -2
  205. package/dist/usecase/dto/render/ComposeEntrySeoMetaRequest.js.map +0 -1
  206. package/dist/usecase/dto/render/ComposeLlmsTxtRequest.d.ts +0 -13
  207. package/dist/usecase/dto/render/ComposeLlmsTxtRequest.d.ts.map +0 -1
  208. package/dist/usecase/dto/render/ComposeLlmsTxtRequest.js +0 -2
  209. package/dist/usecase/dto/render/ComposeLlmsTxtRequest.js.map +0 -1
  210. package/dist/usecase/dto/render/ComposeSitemapRequest.d.ts +0 -13
  211. package/dist/usecase/dto/render/ComposeSitemapRequest.d.ts.map +0 -1
  212. package/dist/usecase/dto/render/ComposeSitemapRequest.js +0 -2
  213. package/dist/usecase/dto/render/ComposeSitemapRequest.js.map +0 -1
  214. package/dist/usecase/dto/render/PreviewEntryRequest.d.ts +0 -18
  215. package/dist/usecase/dto/render/PreviewEntryRequest.d.ts.map +0 -1
  216. package/dist/usecase/dto/render/PreviewEntryRequest.js +0 -2
  217. package/dist/usecase/dto/render/PreviewEntryRequest.js.map +0 -1
  218. package/dist/usecase/dto/render/RenderEntryLiveRequest.d.ts +0 -19
  219. package/dist/usecase/dto/render/RenderEntryLiveRequest.d.ts.map +0 -1
  220. package/dist/usecase/dto/render/RenderEntryLiveRequest.js +0 -2
  221. package/dist/usecase/dto/render/RenderEntryLiveRequest.js.map +0 -1
  222. package/dist/usecase/dto/render/RenderListLiveRequest.d.ts +0 -15
  223. package/dist/usecase/dto/render/RenderListLiveRequest.d.ts.map +0 -1
  224. package/dist/usecase/dto/render/RenderListLiveRequest.js +0 -2
  225. package/dist/usecase/dto/render/RenderListLiveRequest.js.map +0 -1
  226. package/dist/usecase/dto/render/index.d.ts +0 -7
  227. package/dist/usecase/dto/render/index.d.ts.map +0 -1
  228. package/dist/usecase/dto/render/index.js +0 -7
  229. package/dist/usecase/dto/render/index.js.map +0 -1
  230. package/dist/usecase/render/ComposeEntrySeoMetaUseCase.d.ts +0 -28
  231. package/dist/usecase/render/ComposeEntrySeoMetaUseCase.d.ts.map +0 -1
  232. package/dist/usecase/render/ComposeEntrySeoMetaUseCase.js +0 -66
  233. package/dist/usecase/render/ComposeEntrySeoMetaUseCase.js.map +0 -1
  234. package/dist/usecase/render/ComposeLlmsTxtUseCase.d.ts +0 -18
  235. package/dist/usecase/render/ComposeLlmsTxtUseCase.d.ts.map +0 -1
  236. package/dist/usecase/render/ComposeLlmsTxtUseCase.js +0 -47
  237. package/dist/usecase/render/ComposeLlmsTxtUseCase.js.map +0 -1
  238. package/dist/usecase/render/ComposeSitemapUseCase.d.ts +0 -15
  239. package/dist/usecase/render/ComposeSitemapUseCase.d.ts.map +0 -1
  240. package/dist/usecase/render/ComposeSitemapUseCase.js +0 -38
  241. package/dist/usecase/render/ComposeSitemapUseCase.js.map +0 -1
  242. package/dist/usecase/render/PreviewEntryUseCase.d.ts +0 -28
  243. package/dist/usecase/render/PreviewEntryUseCase.d.ts.map +0 -1
  244. package/dist/usecase/render/PreviewEntryUseCase.js +0 -72
  245. package/dist/usecase/render/PreviewEntryUseCase.js.map +0 -1
  246. package/dist/usecase/render/RenderEntryLiveUseCase.d.ts +0 -36
  247. package/dist/usecase/render/RenderEntryLiveUseCase.d.ts.map +0 -1
  248. package/dist/usecase/render/RenderEntryLiveUseCase.js +0 -62
  249. package/dist/usecase/render/RenderEntryLiveUseCase.js.map +0 -1
  250. package/dist/usecase/render/RenderListLiveUseCase.d.ts +0 -25
  251. package/dist/usecase/render/RenderListLiveUseCase.d.ts.map +0 -1
  252. package/dist/usecase/render/RenderListLiveUseCase.js +0 -46
  253. package/dist/usecase/render/RenderListLiveUseCase.js.map +0 -1
  254. package/dist/usecase/render/index.d.ts +0 -7
  255. package/dist/usecase/render/index.d.ts.map +0 -1
  256. package/dist/usecase/render/index.js +0 -7
  257. package/dist/usecase/render/index.js.map +0 -1
@@ -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"}
package/dist/runtime.d.ts DELETED
@@ -1,145 +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 { MediaStorage } from "./domain/port/MediaStorage.js";
9
- import type { SiteConfigRepository } from "./domain/port/SiteConfigRepository.js";
10
- import { type Clock } from "./domain/port/Clock.js";
11
- import { type IdGenerator } from "./domain/port/IdGenerator.js";
12
- import { type HandlerRegistry } from "./domain/port/HandlerRegistry.js";
13
- import { ArchiveUseCase, CreateDraftUseCase, DeleteEntryUseCase, GetEntryUseCase, ListEntriesUseCase, RequestPublishUseCase, UnpublishUseCase, UpdateDraftUseCase } from "./usecase/content/index.js";
14
- import { InvokeProcedureUseCase } from "./usecase/procedure/index.js";
15
- import { ExecuteViewUseCase } from "./usecase/view/index.js";
16
- import { ValidateBootUseCase } from "./usecase/boot/index.js";
17
- import { RunDeferredHookUseCase } from "./usecase/lifecycle/index.js";
18
- import { ComposeEntrySeoMetaUseCase, ComposeLlmsTxtUseCase, ComposeSitemapUseCase, PreviewEntryUseCase, RenderEntryLiveUseCase, RenderListLiveUseCase } from "./usecase/render/index.js";
19
- import { CommitMediaUploadUseCase, CreateMediaUploadUseCase, ListMediaAssetsUseCase, GetMediaAssetUseCase, UpdateMediaAssetUseCase, DeleteMediaAssetUseCase } from "./usecase/media/index.js";
20
- import { UpdateSiteSettingsUseCase } from "./usecase/site/index.js";
21
- import type { PublicPathResolver } from "./domain/service/PublicPathResolver.js";
22
- import type { MediaAsset } from "./domain/port/MediaStorage.js";
23
- /**
24
- * `createCmsRuntime` — assembly root. Per the clean-architecture
25
- * convention, this file is the only place that wires concrete
26
- * adapters (`infrastructure/persistence/*`, `infrastructure/render/*`)
27
- * to use cases (`usecase/content/*`, etc.) via ports
28
- * (`domain/port/*`).
29
- *
30
- * Adapters call this once at boot, pass the required ADR-0011 ports +
31
- * the consumer's manifests + handlers + templates + siteDefaults, and
32
- * receive a `CmsRuntime` they expose to their HTTP framework's
33
- * routing layer.
34
- *
35
- * `bootInit()` runs migrations, seeds `siteDefaults`, and validates
36
- * the manifest set against the registry. Throws `BootValidationError`
37
- * on any boot diagnostic — adapters surface the error in their init
38
- * logs.
39
- */
40
- export interface CreateCmsRuntimeArgs {
41
- readonly manifests: readonly Manifest[];
42
- readonly handlers?: Readonly<Record<string, AnyHandler>>;
43
- readonly templates?: TemplateRegistry;
44
- readonly siteDefaults?: SiteDefaults;
45
- /** Adapter-owned HTTP namespaces that manifest Triggers must not claim. */
46
- readonly reservedHttpPathPrefixes?: readonly string[];
47
- /** Required adapter ports. */
48
- readonly db: DatabaseDriver;
49
- readonly assets: AssetServer;
50
- /** Optional public-path resolver for sitemap and SEO sibling URLs. */
51
- readonly publicPathResolver?: PublicPathResolver;
52
- /** Optional media storage adapter. When unset, media MCP tools and
53
- * admin upload endpoints are not registered — uploads return 404 /
54
- * `MEDIA_NOT_CONFIGURED`. When set, the runtime wires
55
- * `CreateMediaUpload` + `CommitMediaUpload` use cases backed by
56
- * this adapter. Pending create-to-commit state remains canonical in DB. */
57
- readonly mediaStorage?: MediaStorage;
58
- /** Whether the SVG mime is allowed in `CreateMediaUpload`. Default
59
- * false; object stores don't sanitize SVG payloads. */
60
- readonly mediaAllowSvg?: boolean;
61
- /** Optional at-least-once dispatcher for `after_*` lifecycle hooks.
62
- * Queue acceptance is not atomic with the entry write. A rejection
63
- * falls back, with the same event id, to best-effort `waitUntil`
64
- * then inline execution. */
65
- readonly deferredHookDispatcher?: DeferredHookDispatcher;
66
- /** Optional clock — test seam. Defaults to `SystemClock`. */
67
- readonly clock?: Clock;
68
- /** Optional id generator — test seam. Defaults to `RandomUuidGenerator`. */
69
- readonly idgen?: IdGenerator;
70
- /** Adapter-owned invalidation after any successful content/site mutation. */
71
- readonly onPublicChange?: () => Promise<void>;
72
- }
73
- export interface CmsRuntime {
74
- /** Raw database driver, retained for adapter compatibility.
75
- * @deprecated Use purpose-shaped surfaces such as `entryReader` and
76
- * `siteConfig`; adapters should retain their injected driver for tables
77
- * they own. */
78
- readonly db: DatabaseDriver;
79
- readonly assets: AssetServer;
80
- /** Schema-aware, lifecycle-neutral entry reads for adapter-owned routes. */
81
- readonly entryReader: EntryReader;
82
- /** Use cases (pre-wired with ports + clock + idgen). */
83
- readonly createDraft: CreateDraftUseCase;
84
- readonly updateDraft: UpdateDraftUseCase;
85
- readonly getEntry: GetEntryUseCase;
86
- readonly listEntries: ListEntriesUseCase;
87
- readonly requestPublish: RequestPublishUseCase;
88
- readonly unpublish: UnpublishUseCase;
89
- readonly archive: ArchiveUseCase;
90
- readonly deleteEntry: DeleteEntryUseCase;
91
- readonly invokeProcedure: InvokeProcedureUseCase;
92
- readonly executeView: ExecuteViewUseCase;
93
- readonly composeLlmsTxt: ComposeLlmsTxtUseCase;
94
- readonly composeSitemap: ComposeSitemapUseCase;
95
- readonly composeEntrySeoMeta: ComposeEntrySeoMetaUseCase;
96
- readonly renderEntryLive: RenderEntryLiveUseCase;
97
- readonly renderListLive: RenderListLiveUseCase;
98
- readonly previewEntry: PreviewEntryUseCase;
99
- readonly validateBoot: ValidateBootUseCase;
100
- readonly siteConfig: SiteConfigRepository;
101
- readonly updateSiteSettings: UpdateSiteSettingsUseCase;
102
- /** The resolver passed at boot, or `null` when the consumer didn't
103
- * supply one. Adapters use this to derive URLs (sitemap, SEO
104
- * hreflangs) without rebuilding the mapping. */
105
- readonly publicPathResolver: PublicPathResolver | null;
106
- /** Pre-wired media use cases when `mediaStorage` was supplied; null
107
- * otherwise. Adapters route admin endpoints + MCP tools off this.
108
- *
109
- * `resolve` / `resolveMany` materialise the variants set of a
110
- * committed asset by id — entry data references assets via
111
- * `x-mantle-ref: media_assets`, and renderers call these to emit
112
- * `<picture>`. `resolveMany` batches a render-pass's worth of
113
- * references in one DB round trip. */
114
- readonly media: {
115
- readonly storage: MediaStorage;
116
- readonly createUpload: CreateMediaUploadUseCase;
117
- readonly commitUpload: CommitMediaUploadUseCase;
118
- /** Admin media-library use cases (#434): list/get/patch/delete over
119
- * committed assets. Adapters route `/admin/api/media*` off these. */
120
- readonly listAssets: ListMediaAssetsUseCase;
121
- readonly getAsset: GetMediaAssetUseCase;
122
- readonly updateAsset: UpdateMediaAssetUseCase;
123
- readonly deleteAsset: DeleteMediaAssetUseCase;
124
- resolve(id: string): Promise<MediaAsset | null>;
125
- resolveMany(ids: readonly string[]): Promise<ReadonlyMap<string, MediaAsset>>;
126
- } | null;
127
- /** Validate and drive a deferred after-hook from an untrusted Queue
128
- * body. Failures escape so the adapter can retry/DLQ the event. */
129
- readonly runDeferredHook: RunDeferredHookUseCase;
130
- /** Adapter-helper bag. */
131
- readonly registry: HandlerRegistry;
132
- readonly templates: TemplateRegistry;
133
- readonly schemasByName: ReadonlyMap<string, SchemaManifest>;
134
- readonly proceduresByName: ReadonlyMap<string, ProcedureManifest>;
135
- readonly viewsByName: ReadonlyMap<string, ViewManifest>;
136
- readonly triggers: readonly TriggerManifest[];
137
- readonly triggersByName: ReadonlyMap<string, TriggerManifest>;
138
- readonly clock: Clock;
139
- readonly idgen: IdGenerator;
140
- /** Run migrations, seed siteDefaults, and validate boot. Adapters
141
- * call this once per isolate before routing requests. */
142
- bootInit(): Promise<void>;
143
- }
144
- export declare function createCmsRuntime(args: CreateCmsRuntimeArgs): CmsRuntime;
145
- //# 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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"}
package/dist/runtime.js DELETED
@@ -1,224 +0,0 @@
1
- import { EntryDataValidator, runtimeDiagnostic, } from "@aotter/mantle-spec";
2
- import { partitionManifests } from "@aotter/mantle-spec/partition";
3
- import { SystemClock } from "./domain/port/Clock.js";
4
- import { RandomUuidGenerator, } from "./domain/port/IdGenerator.js";
5
- import { buildHandlerRegistry, } from "./domain/port/HandlerRegistry.js";
6
- import { ArchiveUseCase, CreateDraftUseCase, DeleteEntryUseCase, GetEntryUseCase, ListEntriesUseCase, RequestPublishUseCase, UnpublishUseCase, UpdateDraftUseCase, } from "./usecase/content/index.js";
7
- import { InvokeBuiltinUseCase, InvokeProcedureUseCase, } from "./usecase/procedure/index.js";
8
- import { ExecuteViewUseCase } from "./usecase/view/index.js";
9
- import { ValidateBootUseCase } from "./usecase/boot/index.js";
10
- import { RunDeferredHookUseCase, RunLifecycleHooksUseCase, } from "./usecase/lifecycle/index.js";
11
- import { ComposeEntrySeoMetaUseCase, ComposeLlmsTxtUseCase, ComposeSitemapUseCase, PreviewEntryUseCase, RenderEntryLiveUseCase, RenderListLiveUseCase, } from "./usecase/render/index.js";
12
- import { CommitMediaUploadUseCase, CreateMediaUploadUseCase, ListMediaAssetsUseCase, GetMediaAssetUseCase, UpdateMediaAssetUseCase, DeleteMediaAssetUseCase, } from "./usecase/media/index.js";
13
- import { UpdateSiteSettingsUseCase } from "./usecase/site/index.js";
14
- import { TemplateRegistry as TemplateRegistryImpl } from "./domain/model/TemplateRegistry.js";
15
- import { TriggerIndex } from "./domain/service/TriggerIndex.js";
16
- import { DatabaseEntryRepository } from "./infrastructure/persistence/DatabaseEntryRepository.js";
17
- import { DatabaseMediaAssetRepository } from "./infrastructure/persistence/DatabaseMediaAssetRepository.js";
18
- import { DatabasePendingUploadRepository } from "./infrastructure/persistence/DatabasePendingUploadRepository.js";
19
- import { DatabaseSiteConfigRepository } from "./infrastructure/persistence/DatabaseSiteConfigRepository.js";
20
- import { LifecycleHookingEntryRepository } from "./infrastructure/persistence/LifecycleHookingEntryRepository.js";
21
- import { bootFingerprint, CANONICAL_MIGRATIONS, isBootCurrent, markBootCurrent, reconcileSchemaIndexes, schemaIndexMigrations, reconcileSchemaSqlViews, } from "./infrastructure/boot/index.js";
22
- export function createCmsRuntime(args) {
23
- const partitioned = partitionManifests([...args.manifests]);
24
- const schemasByName = new Map();
25
- for (const s of partitioned.schemas)
26
- schemasByName.set(s.metadata.name, s);
27
- const proceduresByName = new Map();
28
- for (const p of partitioned.procedures)
29
- proceduresByName.set(p.metadata.name, p);
30
- const viewsByName = new Map();
31
- for (const v of partitioned.views)
32
- viewsByName.set(v.metadata.name, v);
33
- const triggersByName = new Map();
34
- for (const t of partitioned.triggers)
35
- triggersByName.set(t.metadata.name, t);
36
- const registry = buildHandlerRegistry(args.handlers ?? {});
37
- const templates = args.templates ?? new TemplateRegistryImpl();
38
- const clock = args.clock ?? SystemClock;
39
- const idgen = args.idgen ?? RandomUuidGenerator;
40
- const entryDataValidator = new EntryDataValidator();
41
- // Repositories: DB-backed inner + lifecycle-hook decorator. Every
42
- // mutation through `entries` (create / update / delete /
43
- // transitionStatus) fires the matching Triggers via
44
- // `RunLifecycleHooksUseCase`. Symmetric chokepoint per POC ADR-0014:
45
- // MCP, admin, and builtin paths all hit the same wrapped repository.
46
- const innerEntries = new DatabaseEntryRepository(args.db, schemasByName);
47
- const entryReader = innerEntries;
48
- const triggerIndex = new TriggerIndex(partitioned.triggers);
49
- const siteConfig = new DatabaseSiteConfigRepository(args.db);
50
- // `entries` is filled below — assigned via `let` so the lifecycle
51
- // hooks (which run procedures, which can themselves write entries
52
- // via builtin handlers) close over the wrapped repo, not the bare
53
- // DB-backed one. Without this every builtin write inside a hook
54
- // would skip the decorator and silently bypass downstream hooks.
55
- let entries;
56
- const entriesProxy = {
57
- create: (a) => entries.create(a),
58
- get: (id) => entries.get(id),
59
- update: (a) => entries.update(a),
60
- delete: (a) => entries.delete(a),
61
- transitionStatus: (a) => entries.transitionStatus(a),
62
- list: (a) => entries.list(a),
63
- findByDataField: (a) => entries.findByDataField(a),
64
- findByDataFields: (a) => entries.findByDataFields(a),
65
- };
66
- const invokeBuiltin = new InvokeBuiltinUseCase(entriesProxy, schemasByName, clock, idgen, siteConfig, entryDataValidator);
67
- const invokeProcedure = new InvokeProcedureUseCase(registry, invokeBuiltin, proceduresByName);
68
- const lifecycleHooks = new RunLifecycleHooksUseCase(triggerIndex, proceduresByName, (req) => invokeProcedure.execute(req));
69
- entries = invalidateAfterWrites(new LifecycleHookingEntryRepository(innerEntries, triggerIndex, lifecycleHooks, idgen, args.deferredHookDispatcher), args.onPublicChange, (collection) => (schemasByName.get(collection)?.spec.lifecycle ?? "publishing") === "publishing");
70
- const runDeferredHook = new RunDeferredHookUseCase(lifecycleHooks);
71
- const publicPathResolver = args.publicPathResolver ?? null;
72
- const composeEntrySeoMeta = new ComposeEntrySeoMetaUseCase(entryReader);
73
- const composeLlmsTxt = new ComposeLlmsTxtUseCase(entryReader, publicPathResolver);
74
- const mediaAssets = new DatabaseMediaAssetRepository(args.db);
75
- const pendingUploads = new DatabasePendingUploadRepository(args.db);
76
- const updateSiteSettings = new UpdateSiteSettingsUseCase(siteConfig, args.onPublicChange);
77
- // Content / view / boot use cases. They see `entries` only as the
78
- // chokepoint port — hook firing is invisible to them.
79
- const createDraft = new CreateDraftUseCase(entries, schemasByName, clock, idgen, siteConfig, entryDataValidator);
80
- const updateDraft = new UpdateDraftUseCase(entries, schemasByName, clock, siteConfig, entryDataValidator);
81
- const getEntry = new GetEntryUseCase(entries);
82
- const listEntries = new ListEntriesUseCase(entries, schemasByName);
83
- const requestPublish = new RequestPublishUseCase(entries, schemasByName, clock, siteConfig, entryDataValidator);
84
- const unpublish = new UnpublishUseCase(entries, schemasByName, clock);
85
- const archive = new ArchiveUseCase(entries, schemasByName, clock);
86
- const deleteEntry = new DeleteEntryUseCase(entries, schemasByName);
87
- const executeView = new ExecuteViewUseCase(args.db, async (request) => {
88
- const procedure = proceduresByName.get(request.procedure);
89
- if (!procedure) {
90
- return {
91
- ok: false,
92
- diagnostic: runtimeDiagnostic({
93
- code: "GUARD_PROCEDURE_UNKNOWN",
94
- severity: "error",
95
- path: request.pathPrefix,
96
- value: request.procedure,
97
- expected: "name of a declared Procedure",
98
- }),
99
- };
100
- }
101
- return invokeProcedure.execute({
102
- procedure,
103
- input: request.input,
104
- ctx: request.ctx,
105
- pathPrefix: request.pathPrefix,
106
- });
107
- }, schemasByName);
108
- const composeSitemap = new ComposeSitemapUseCase(entryReader);
109
- const renderEntryLive = new RenderEntryLiveUseCase(entryReader, templates, publicPathResolver, composeEntrySeoMeta, schemasByName, mediaAssets);
110
- const renderListLive = new RenderListLiveUseCase(entryReader, templates, schemasByName, mediaAssets);
111
- const previewEntry = new PreviewEntryUseCase(entryReader, templates, publicPathResolver, composeEntrySeoMeta, schemasByName, mediaAssets);
112
- const validateBoot = new ValidateBootUseCase();
113
- const media = args.mediaStorage
114
- ? {
115
- storage: args.mediaStorage,
116
- createUpload: new CreateMediaUploadUseCase(args.mediaStorage, pendingUploads, clock, idgen, siteConfig, { allowSvg: args.mediaAllowSvg ?? false }),
117
- commitUpload: new CommitMediaUploadUseCase(args.mediaStorage, pendingUploads, clock, mediaAssets),
118
- listAssets: new ListMediaAssetsUseCase(mediaAssets),
119
- getAsset: new GetMediaAssetUseCase(mediaAssets),
120
- updateAsset: new UpdateMediaAssetUseCase(mediaAssets),
121
- deleteAsset: new DeleteMediaAssetUseCase(args.mediaStorage, mediaAssets),
122
- resolve: (id) => mediaAssets.findById(id),
123
- resolveMany: (ids) => mediaAssets.findManyByIds(ids),
124
- }
125
- : null;
126
- return {
127
- db: args.db,
128
- assets: args.assets,
129
- entryReader,
130
- createDraft,
131
- updateDraft,
132
- getEntry,
133
- listEntries,
134
- requestPublish,
135
- unpublish,
136
- archive,
137
- deleteEntry,
138
- invokeProcedure,
139
- executeView,
140
- composeLlmsTxt,
141
- composeSitemap,
142
- composeEntrySeoMeta,
143
- renderEntryLive,
144
- renderListLive,
145
- previewEntry,
146
- validateBoot,
147
- siteConfig,
148
- updateSiteSettings,
149
- publicPathResolver,
150
- media,
151
- runDeferredHook,
152
- registry,
153
- templates,
154
- schemasByName,
155
- proceduresByName,
156
- viewsByName,
157
- triggers: partitioned.triggers,
158
- triggersByName,
159
- clock,
160
- idgen,
161
- async bootInit() {
162
- const schemas = partitioned.schemas;
163
- const fingerprint = await bootFingerprint({
164
- manifests: args.manifests,
165
- siteDefaults: args.siteDefaults,
166
- handlers: [...registry.list()].sort(),
167
- reservedHttpPathPrefixes: args.reservedHttpPathPrefixes,
168
- });
169
- if (await isBootCurrent(args.db, fingerprint))
170
- return;
171
- await args.db.migrations.runAll(CANONICAL_MIGRATIONS);
172
- await siteConfig.seed(args.siteDefaults);
173
- const siteLocales = await siteConfig.readLocales();
174
- validateBoot.assert({
175
- manifests: args.manifests,
176
- registry,
177
- siteLocales,
178
- reservedHttpPathPrefixes: args.reservedHttpPathPrefixes,
179
- });
180
- const indexMigrations = schemaIndexMigrations(schemas);
181
- await args.db.migrations.runAll(indexMigrations);
182
- await reconcileSchemaIndexes(args.db, indexMigrations, schemas);
183
- await reconcileSchemaSqlViews(args.db, schemas);
184
- // ponytail: the marker trusts Mantle-owned writes; repair manual D1
185
- // schema edits by deleting this row or changing the manifest.
186
- await markBootCurrent(args.db, fingerprint);
187
- },
188
- };
189
- }
190
- function invalidateAfterWrites(inner, invalidate, affectsPublicOutput) {
191
- if (!invalidate)
192
- return inner;
193
- return {
194
- async create(args) {
195
- const row = await inner.create(args);
196
- if (affectsPublicOutput(args.collection))
197
- await invalidate();
198
- return row;
199
- },
200
- get: (id) => inner.get(id),
201
- async update(args) {
202
- const row = await inner.update(args);
203
- if (affectsPublicOutput(args.collection))
204
- await invalidate();
205
- return row;
206
- },
207
- async delete(args) {
208
- const result = await inner.delete(args);
209
- if (result.removed && affectsPublicOutput(args.collection))
210
- await invalidate();
211
- return result;
212
- },
213
- async transitionStatus(args) {
214
- const row = await inner.transitionStatus(args);
215
- if (affectsPublicOutput(args.collection))
216
- await invalidate();
217
- return row;
218
- },
219
- list: (args) => inner.list(args),
220
- findByDataField: (args) => inner.findByDataField(args),
221
- findByDataFields: (args) => inner.findByDataFields(args),
222
- };
223
- }
224
- //# sourceMappingURL=runtime.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- import type { Entry, SiteConfig } from "@aotter/mantle-spec";
2
- import type { PublicPathResolver } from "../../../domain/service/PublicPathResolver.js";
3
- import type { SiblingTranslation } from "../../../domain/service/SeoMetaComposer.js";
4
- /**
5
- * Request DTO for `ComposeEntrySeoMetaUseCase`. Caller passes the
6
- * entry, the site, and the resolver; the use case figures out
7
- * sibling translations for hreflang.
8
- */
9
- export interface ComposeEntrySeoMetaRequest {
10
- readonly entry: Entry;
11
- readonly site: SiteConfig;
12
- readonly paths: PublicPathResolver;
13
- readonly type?: "article" | "website";
14
- readonly publicPath?: string;
15
- readonly publicLocale?: string;
16
- readonly siblings?: ReadonlyArray<SiblingTranslation>;
17
- }
18
- //# sourceMappingURL=ComposeEntrySeoMetaRequest.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ComposeEntrySeoMetaRequest.d.ts","sourceRoot":"","sources":["../../../../src/usecase/dto/render/ComposeEntrySeoMetaRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+CAA+C,CAAC;AACxF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAErF;;;;GAIG;AACH,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC;IACnC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;CACvD"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=ComposeEntrySeoMetaRequest.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ComposeEntrySeoMetaRequest.js","sourceRoot":"","sources":["../../../../src/usecase/dto/render/ComposeEntrySeoMetaRequest.ts"],"names":[],"mappings":""}
@@ -1,13 +0,0 @@
1
- import type { Entry, SiteConfig } from "@aotter/mantle-spec";
2
- export interface ComposeLlmsTxtRequest {
3
- readonly site: SiteConfig;
4
- /** locale: string → entries with that locale; locale: null →
5
- * non-localized only (matches publish-pipeline semantic). */
6
- readonly locale: string | null;
7
- /** Include public non-localized entries alongside the requested locale. */
8
- readonly includeUnlocalized?: boolean;
9
- /** Optional collection limit used by collection-list markdown mirrors. */
10
- readonly collection?: string;
11
- readonly pathFor?: (entry: Entry) => string | null;
12
- }
13
- //# sourceMappingURL=ComposeLlmsTxtRequest.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ComposeLlmsTxtRequest.d.ts","sourceRoot":"","sources":["../../../../src/usecase/dto/render/ComposeLlmsTxtRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE7D,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B;kEAC8D;IAC9D,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,2EAA2E;IAC3E,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IACtC,0EAA0E;IAC1E,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,GAAG,IAAI,CAAC;CACpD"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=ComposeLlmsTxtRequest.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ComposeLlmsTxtRequest.js","sourceRoot":"","sources":["../../../../src/usecase/dto/render/ComposeLlmsTxtRequest.ts"],"names":[],"mappings":""}
@@ -1,13 +0,0 @@
1
- import type { Entry, SiteConfig } from "@aotter/mantle-spec";
2
- export interface ComposeSitemapRequest {
3
- readonly site: SiteConfig;
4
- /** Map storage row → one or more public routes. Returning `null` skips. */
5
- readonly pathFor?: (entry: Entry) => string | readonly string[] | null;
6
- /** Public routes without a backing Entry, such as home and collection lists. */
7
- readonly additionalPaths?: readonly string[];
8
- /** Caps the SQL read + memory cost. Defaults to
9
- * SITEMAP_MAX_URLS_DEFAULT (50,000 — the sitemap-protocol per-file
10
- * ceiling). */
11
- readonly maxUrls?: number;
12
- }
13
- //# sourceMappingURL=ComposeSitemapRequest.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ComposeSitemapRequest.d.ts","sourceRoot":"","sources":["../../../../src/usecase/dto/render/ComposeSitemapRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE7D,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,2EAA2E;IAC3E,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IACvE,gFAAgF;IAChF,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C;;oBAEgB;IAChB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=ComposeSitemapRequest.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ComposeSitemapRequest.js","sourceRoot":"","sources":["../../../../src/usecase/dto/render/ComposeSitemapRequest.ts"],"names":[],"mappings":""}
@@ -1,18 +0,0 @@
1
- import type { SiteConfig } from "@aotter/mantle-spec";
2
- import type { SiblingTranslation } from "../../../domain/service/SeoMetaComposer.js";
3
- /**
4
- * Request DTO for `PreviewEntryUseCase`. Looks up the entry,
5
- * preferring draft → published → archived; renders via the registered template; injects a
6
- * preview banner.
7
- */
8
- export interface PreviewEntryRequest {
9
- readonly collection: string;
10
- readonly slug: string;
11
- readonly locale: string;
12
- readonly contentLocale?: string | null;
13
- readonly publicPath?: string;
14
- readonly publicLocale?: string;
15
- readonly siblings?: ReadonlyArray<SiblingTranslation>;
16
- readonly site: SiteConfig;
17
- }
18
- //# sourceMappingURL=PreviewEntryRequest.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PreviewEntryRequest.d.ts","sourceRoot":"","sources":["../../../../src/usecase/dto/render/PreviewEntryRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAErF;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IACtD,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;CAC3B"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=PreviewEntryRequest.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PreviewEntryRequest.js","sourceRoot":"","sources":["../../../../src/usecase/dto/render/PreviewEntryRequest.ts"],"names":[],"mappings":""}
@@ -1,19 +0,0 @@
1
- import type { SiteConfig } from "@aotter/mantle-spec";
2
- import type { SiblingTranslation } from "../../../domain/service/SeoMetaComposer.js";
3
- /**
4
- * Request DTO for `RenderEntryLiveUseCase` — renders a single entry
5
- * from current DB state on demand (no KV read), returning either the
6
- * full HTML doc or `null` if no matching entry / no registered
7
- * template.
8
- */
9
- export interface RenderEntryLiveRequest {
10
- readonly collection: string;
11
- readonly slug: string;
12
- readonly locale: string;
13
- readonly contentLocale?: string | null;
14
- readonly publicPath?: string;
15
- readonly publicLocale?: string;
16
- readonly siblings?: ReadonlyArray<SiblingTranslation>;
17
- readonly site: SiteConfig;
18
- }
19
- //# sourceMappingURL=RenderEntryLiveRequest.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RenderEntryLiveRequest.d.ts","sourceRoot":"","sources":["../../../../src/usecase/dto/render/RenderEntryLiveRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAErF;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IACtD,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;CAC3B"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=RenderEntryLiveRequest.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RenderEntryLiveRequest.js","sourceRoot":"","sources":["../../../../src/usecase/dto/render/RenderEntryLiveRequest.ts"],"names":[],"mappings":""}
@@ -1,15 +0,0 @@
1
- import type { SiteConfig } from "@aotter/mantle-spec";
2
- import type { SeoMeta } from "../../../domain/model/SeoMeta.js";
3
- /**
4
- * Request DTO for `RenderListLiveUseCase` — renders a collection's
5
- * list page from current DB state on demand (no KV read).
6
- */
7
- export interface RenderListLiveRequest {
8
- readonly collection: string;
9
- readonly locale: string;
10
- /** DB locale filter; null for non-localized collections mounted under a locale URL. */
11
- readonly contentLocale?: string | null;
12
- readonly site: SiteConfig;
13
- readonly seo?: SeoMeta;
14
- }
15
- //# sourceMappingURL=RenderListLiveRequest.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RenderListLiveRequest.d.ts","sourceRoot":"","sources":["../../../../src/usecase/dto/render/RenderListLiveRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAEhE;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,uFAAuF;IACvF,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;CACxB"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=RenderListLiveRequest.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RenderListLiveRequest.js","sourceRoot":"","sources":["../../../../src/usecase/dto/render/RenderListLiveRequest.ts"],"names":[],"mappings":""}