@aotter/mantle-runtime 0.1.0-alpha.1 → 0.1.0-alpha.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (298) 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/EntryReader.d.ts +1 -1
  22. package/dist/domain/port/EntryReader.d.ts.map +1 -1
  23. package/dist/domain/port/EntryRepository.d.ts +19 -4
  24. package/dist/domain/port/EntryRepository.d.ts.map +1 -1
  25. package/dist/domain/port/HandlerRegistry.d.ts +1 -1
  26. package/dist/domain/port/IdGenerator.d.ts +3 -4
  27. package/dist/domain/port/IdGenerator.d.ts.map +1 -1
  28. package/dist/domain/port/IdGenerator.js.map +1 -1
  29. package/dist/domain/port/MantleStorageAdapter.d.ts +23 -0
  30. package/dist/domain/port/MantleStorageAdapter.d.ts.map +1 -0
  31. package/dist/domain/port/MantleStorageAdapter.js +2 -0
  32. package/dist/domain/port/MantleStorageAdapter.js.map +1 -0
  33. package/dist/domain/port/SiteConfigRepository.d.ts +12 -10
  34. package/dist/domain/port/SiteConfigRepository.d.ts.map +1 -1
  35. package/dist/domain/port/ViewQueryExecutor.d.ts +29 -0
  36. package/dist/domain/port/ViewQueryExecutor.d.ts.map +1 -0
  37. package/dist/domain/port/ViewQueryExecutor.js +2 -0
  38. package/dist/domain/port/ViewQueryExecutor.js.map +1 -0
  39. package/dist/domain/port/index.d.ts +5 -2
  40. package/dist/domain/port/index.d.ts.map +1 -1
  41. package/dist/domain/port/index.js.map +1 -1
  42. package/dist/domain/service/LocaleNegotiator.d.ts.map +1 -1
  43. package/dist/domain/service/LocaleNegotiator.js +2 -2
  44. package/dist/domain/service/LocaleNegotiator.js.map +1 -1
  45. package/dist/domain/service/RuntimePlanCompiler.d.ts +89 -0
  46. package/dist/domain/service/RuntimePlanCompiler.d.ts.map +1 -0
  47. package/dist/domain/service/RuntimePlanCompiler.js +230 -0
  48. package/dist/domain/service/RuntimePlanCompiler.js.map +1 -0
  49. package/dist/domain/service/TriggerIndex.d.ts +5 -3
  50. package/dist/domain/service/TriggerIndex.d.ts.map +1 -1
  51. package/dist/domain/service/TriggerIndex.js +16 -4
  52. package/dist/domain/service/TriggerIndex.js.map +1 -1
  53. package/dist/domain/service/ViewParamCoercer.d.ts +1 -1
  54. package/dist/domain/service/ViewParamCoercer.js +1 -1
  55. package/dist/domain/service/index.d.ts +1 -9
  56. package/dist/domain/service/index.d.ts.map +1 -1
  57. package/dist/domain/service/index.js +1 -9
  58. package/dist/domain/service/index.js.map +1 -1
  59. package/dist/domain/service/io/EntryDeleteGuard.js +1 -1
  60. package/dist/domain/service/io/EntryDeleteGuard.js.map +1 -1
  61. package/dist/domain/service/io/EntryWriteGuard.d.ts +2 -2
  62. package/dist/domain/service/io/EntryWriteGuard.d.ts.map +1 -1
  63. package/dist/domain/service/io/EntryWriteGuard.js +1 -3
  64. package/dist/domain/service/io/EntryWriteGuard.js.map +1 -1
  65. package/dist/index.d.ts +17 -12
  66. package/dist/index.d.ts.map +1 -1
  67. package/dist/index.js +10 -11
  68. package/dist/index.js.map +1 -1
  69. package/dist/infrastructure/boot/SqliteMigrationRunner.d.ts +10 -0
  70. package/dist/infrastructure/boot/SqliteMigrationRunner.d.ts.map +1 -0
  71. package/dist/infrastructure/boot/SqliteMigrationRunner.js +41 -0
  72. package/dist/infrastructure/boot/SqliteMigrationRunner.js.map +1 -0
  73. package/dist/infrastructure/boot/bootState.d.ts +9 -0
  74. package/dist/infrastructure/boot/bootState.d.ts.map +1 -0
  75. package/dist/infrastructure/boot/bootState.js +32 -0
  76. package/dist/infrastructure/boot/bootState.js.map +1 -0
  77. package/dist/infrastructure/boot/canonicalMigrations.d.ts +2 -0
  78. package/dist/infrastructure/boot/canonicalMigrations.d.ts.map +1 -1
  79. package/dist/infrastructure/boot/canonicalMigrations.js +166 -87
  80. package/dist/infrastructure/boot/canonicalMigrations.js.map +1 -1
  81. package/dist/infrastructure/boot/index.d.ts +3 -1
  82. package/dist/infrastructure/boot/index.d.ts.map +1 -1
  83. package/dist/infrastructure/boot/index.js +3 -1
  84. package/dist/infrastructure/boot/index.js.map +1 -1
  85. package/dist/infrastructure/http/createMantleRequestHandler.d.ts +12 -0
  86. package/dist/infrastructure/http/createMantleRequestHandler.d.ts.map +1 -0
  87. package/dist/infrastructure/http/createMantleRequestHandler.js +127 -0
  88. package/dist/infrastructure/http/createMantleRequestHandler.js.map +1 -0
  89. package/dist/infrastructure/mcp/McpJsonRpcDispatcher.d.ts +18 -23
  90. package/dist/infrastructure/mcp/McpJsonRpcDispatcher.d.ts.map +1 -1
  91. package/dist/infrastructure/mcp/McpJsonRpcDispatcher.js +64 -39
  92. package/dist/infrastructure/mcp/McpJsonRpcDispatcher.js.map +1 -1
  93. package/dist/infrastructure/mcp/McpToolCatalog.d.ts.map +1 -1
  94. package/dist/infrastructure/mcp/McpToolCatalog.js +84 -19
  95. package/dist/infrastructure/mcp/McpToolCatalog.js.map +1 -1
  96. package/dist/infrastructure/mcp/index.d.ts +1 -1
  97. package/dist/infrastructure/mcp/index.d.ts.map +1 -1
  98. package/dist/infrastructure/mcp/index.js.map +1 -1
  99. package/dist/infrastructure/persistence/DatabaseEntryRepository.d.ts +4 -8
  100. package/dist/infrastructure/persistence/DatabaseEntryRepository.d.ts.map +1 -1
  101. package/dist/infrastructure/persistence/DatabaseEntryRepository.js +75 -36
  102. package/dist/infrastructure/persistence/DatabaseEntryRepository.js.map +1 -1
  103. package/dist/infrastructure/persistence/DatabaseSiteConfigRepository.d.ts.map +1 -1
  104. package/dist/infrastructure/persistence/DatabaseSiteConfigRepository.js +39 -31
  105. package/dist/infrastructure/persistence/DatabaseSiteConfigRepository.js.map +1 -1
  106. package/dist/infrastructure/persistence/Pagination.d.ts +3 -0
  107. package/dist/infrastructure/persistence/Pagination.d.ts.map +1 -1
  108. package/dist/infrastructure/persistence/Pagination.js +28 -0
  109. package/dist/infrastructure/persistence/Pagination.js.map +1 -1
  110. package/dist/infrastructure/storage/SqliteMantleStorageAdapter.d.ts +22 -0
  111. package/dist/infrastructure/storage/SqliteMantleStorageAdapter.d.ts.map +1 -0
  112. package/dist/infrastructure/storage/SqliteMantleStorageAdapter.js +86 -0
  113. package/dist/infrastructure/storage/SqliteMantleStorageAdapter.js.map +1 -0
  114. package/dist/{domain/service/ViewSqlCompiler.d.ts → infrastructure/storage/SqliteViewCompiler.d.ts} +9 -10
  115. package/dist/infrastructure/storage/SqliteViewCompiler.d.ts.map +1 -0
  116. package/dist/infrastructure/storage/SqliteViewCompiler.js +307 -0
  117. package/dist/infrastructure/storage/SqliteViewCompiler.js.map +1 -0
  118. package/dist/infrastructure/testing/IndexCoverageHarness.d.ts +2 -2
  119. package/dist/infrastructure/testing/IndexCoverageHarness.d.ts.map +1 -1
  120. package/dist/infrastructure/testing/IndexCoverageHarness.js +9 -8
  121. package/dist/infrastructure/testing/IndexCoverageHarness.js.map +1 -1
  122. package/dist/usecase/boot/ValidateBootUseCase.d.ts +16 -35
  123. package/dist/usecase/boot/ValidateBootUseCase.d.ts.map +1 -1
  124. package/dist/usecase/boot/ValidateBootUseCase.js +79 -254
  125. package/dist/usecase/boot/ValidateBootUseCase.js.map +1 -1
  126. package/dist/usecase/boot/index.d.ts +1 -1
  127. package/dist/usecase/boot/index.d.ts.map +1 -1
  128. package/dist/usecase/boot/index.js +1 -1
  129. package/dist/usecase/boot/index.js.map +1 -1
  130. package/dist/usecase/content/ArchiveUseCase.d.ts +1 -1
  131. package/dist/usecase/content/ArchiveUseCase.js +1 -1
  132. package/dist/usecase/content/CreateDraftUseCase.d.ts +3 -3
  133. package/dist/usecase/content/CreateDraftUseCase.d.ts.map +1 -1
  134. package/dist/usecase/content/CreateDraftUseCase.js +5 -5
  135. package/dist/usecase/content/CreateDraftUseCase.js.map +1 -1
  136. package/dist/usecase/content/DeleteEntryUseCase.d.ts +3 -5
  137. package/dist/usecase/content/DeleteEntryUseCase.d.ts.map +1 -1
  138. package/dist/usecase/content/DeleteEntryUseCase.js +3 -5
  139. package/dist/usecase/content/DeleteEntryUseCase.js.map +1 -1
  140. package/dist/usecase/content/ListEntriesUseCase.d.ts.map +1 -1
  141. package/dist/usecase/content/ListEntriesUseCase.js +30 -3
  142. package/dist/usecase/content/ListEntriesUseCase.js.map +1 -1
  143. package/dist/usecase/content/RequestPublishUseCase.d.ts +4 -12
  144. package/dist/usecase/content/RequestPublishUseCase.d.ts.map +1 -1
  145. package/dist/usecase/content/RequestPublishUseCase.js +3 -21
  146. package/dist/usecase/content/RequestPublishUseCase.js.map +1 -1
  147. package/dist/usecase/content/UpdateDraftUseCase.d.ts +2 -2
  148. package/dist/usecase/content/UpdateDraftUseCase.d.ts.map +1 -1
  149. package/dist/usecase/content/UpdateDraftUseCase.js +4 -4
  150. package/dist/usecase/content/UpdateDraftUseCase.js.map +1 -1
  151. package/dist/usecase/content/diagnostics.d.ts +1 -0
  152. package/dist/usecase/content/diagnostics.d.ts.map +1 -1
  153. package/dist/usecase/content/diagnostics.js +10 -0
  154. package/dist/usecase/content/diagnostics.js.map +1 -1
  155. package/dist/usecase/dto/content/index.d.ts +10 -1
  156. package/dist/usecase/dto/content/index.d.ts.map +1 -1
  157. package/dist/usecase/dto/index.d.ts +0 -1
  158. package/dist/usecase/dto/index.d.ts.map +1 -1
  159. package/dist/usecase/dto/index.js +0 -1
  160. package/dist/usecase/dto/index.js.map +1 -1
  161. package/dist/usecase/dto/view/ExecuteViewRequest.d.ts +2 -2
  162. package/dist/usecase/dto/view/ExecuteViewRequest.d.ts.map +1 -1
  163. package/dist/usecase/index.d.ts +0 -1
  164. package/dist/usecase/index.d.ts.map +1 -1
  165. package/dist/usecase/index.js +0 -1
  166. package/dist/usecase/index.js.map +1 -1
  167. package/dist/usecase/media/diagnostics.js +1 -1
  168. package/dist/usecase/procedure/InvokeBuiltinUseCase.d.ts +3 -3
  169. package/dist/usecase/procedure/InvokeBuiltinUseCase.d.ts.map +1 -1
  170. package/dist/usecase/procedure/InvokeBuiltinUseCase.js +2 -2
  171. package/dist/usecase/procedure/InvokeBuiltinUseCase.js.map +1 -1
  172. package/dist/usecase/site/UpdateSiteSettingsUseCase.d.ts +3 -2
  173. package/dist/usecase/site/UpdateSiteSettingsUseCase.d.ts.map +1 -1
  174. package/dist/usecase/site/UpdateSiteSettingsUseCase.js +35 -2
  175. package/dist/usecase/site/UpdateSiteSettingsUseCase.js.map +1 -1
  176. package/dist/usecase/view/ExecuteViewUseCase.d.ts +8 -16
  177. package/dist/usecase/view/ExecuteViewUseCase.d.ts.map +1 -1
  178. package/dist/usecase/view/ExecuteViewUseCase.js +23 -94
  179. package/dist/usecase/view/ExecuteViewUseCase.js.map +1 -1
  180. package/dist/usecase/view/index.d.ts +2 -1
  181. package/dist/usecase/view/index.d.ts.map +1 -1
  182. package/dist/usecase/view/index.js.map +1 -1
  183. package/package.json +4 -4
  184. package/dist/domain/model/SeoMeta.d.ts +0 -47
  185. package/dist/domain/model/SeoMeta.d.ts.map +0 -1
  186. package/dist/domain/model/SeoMeta.js +0 -2
  187. package/dist/domain/model/SeoMeta.js.map +0 -1
  188. package/dist/domain/model/TemplateRegistry.d.ts +0 -50
  189. package/dist/domain/model/TemplateRegistry.d.ts.map +0 -1
  190. package/dist/domain/model/TemplateRegistry.js +0 -17
  191. package/dist/domain/model/TemplateRegistry.js.map +0 -1
  192. package/dist/domain/port/AssetServer.d.ts +0 -21
  193. package/dist/domain/port/AssetServer.d.ts.map +0 -1
  194. package/dist/domain/port/AssetServer.js +0 -2
  195. package/dist/domain/port/AssetServer.js.map +0 -1
  196. package/dist/domain/service/AbsoluteUrl.d.ts +0 -6
  197. package/dist/domain/service/AbsoluteUrl.d.ts.map +0 -1
  198. package/dist/domain/service/AbsoluteUrl.js +0 -33
  199. package/dist/domain/service/AbsoluteUrl.js.map +0 -1
  200. package/dist/domain/service/HtmlEscaping.d.ts +0 -2
  201. package/dist/domain/service/HtmlEscaping.d.ts.map +0 -1
  202. package/dist/domain/service/HtmlEscaping.js +0 -9
  203. package/dist/domain/service/HtmlEscaping.js.map +0 -1
  204. package/dist/domain/service/HtmlRenderer.d.ts +0 -36
  205. package/dist/domain/service/HtmlRenderer.d.ts.map +0 -1
  206. package/dist/domain/service/HtmlRenderer.js +0 -73
  207. package/dist/domain/service/HtmlRenderer.js.map +0 -1
  208. package/dist/domain/service/MarkdownSerializer.d.ts +0 -48
  209. package/dist/domain/service/MarkdownSerializer.d.ts.map +0 -1
  210. package/dist/domain/service/MarkdownSerializer.js +0 -109
  211. package/dist/domain/service/MarkdownSerializer.js.map +0 -1
  212. package/dist/domain/service/McpToolNaming.d.ts +0 -31
  213. package/dist/domain/service/McpToolNaming.d.ts.map +0 -1
  214. package/dist/domain/service/McpToolNaming.js +0 -48
  215. package/dist/domain/service/McpToolNaming.js.map +0 -1
  216. package/dist/domain/service/PreviewBanner.d.ts +0 -10
  217. package/dist/domain/service/PreviewBanner.d.ts.map +0 -1
  218. package/dist/domain/service/PreviewBanner.js +0 -30
  219. package/dist/domain/service/PreviewBanner.js.map +0 -1
  220. package/dist/domain/service/PublicPathResolver.d.ts +0 -46
  221. package/dist/domain/service/PublicPathResolver.d.ts.map +0 -1
  222. package/dist/domain/service/PublicPathResolver.js +0 -36
  223. package/dist/domain/service/PublicPathResolver.js.map +0 -1
  224. package/dist/domain/service/SeoMetaComposer.d.ts +0 -47
  225. package/dist/domain/service/SeoMetaComposer.d.ts.map +0 -1
  226. package/dist/domain/service/SeoMetaComposer.js +0 -164
  227. package/dist/domain/service/SeoMetaComposer.js.map +0 -1
  228. package/dist/domain/service/SitemapSerializer.d.ts +0 -19
  229. package/dist/domain/service/SitemapSerializer.d.ts.map +0 -1
  230. package/dist/domain/service/SitemapSerializer.js +0 -27
  231. package/dist/domain/service/SitemapSerializer.js.map +0 -1
  232. package/dist/domain/service/ViewSqlCompiler.d.ts.map +0 -1
  233. package/dist/domain/service/ViewSqlCompiler.js +0 -198
  234. package/dist/domain/service/ViewSqlCompiler.js.map +0 -1
  235. package/dist/domain/service/io/MediaAssetReferences.d.ts +0 -13
  236. package/dist/domain/service/io/MediaAssetReferences.d.ts.map +0 -1
  237. package/dist/domain/service/io/MediaAssetReferences.js +0 -48
  238. package/dist/domain/service/io/MediaAssetReferences.js.map +0 -1
  239. package/dist/runtime.d.ts +0 -141
  240. package/dist/runtime.d.ts.map +0 -1
  241. package/dist/runtime.js +0 -177
  242. package/dist/runtime.js.map +0 -1
  243. package/dist/usecase/dto/render/ComposeEntrySeoMetaRequest.d.ts +0 -14
  244. package/dist/usecase/dto/render/ComposeEntrySeoMetaRequest.d.ts.map +0 -1
  245. package/dist/usecase/dto/render/ComposeEntrySeoMetaRequest.js +0 -2
  246. package/dist/usecase/dto/render/ComposeEntrySeoMetaRequest.js.map +0 -1
  247. package/dist/usecase/dto/render/ComposeLlmsTxtRequest.d.ts +0 -8
  248. package/dist/usecase/dto/render/ComposeLlmsTxtRequest.d.ts.map +0 -1
  249. package/dist/usecase/dto/render/ComposeLlmsTxtRequest.js +0 -2
  250. package/dist/usecase/dto/render/ComposeLlmsTxtRequest.js.map +0 -1
  251. package/dist/usecase/dto/render/ComposeSitemapRequest.d.ts +0 -11
  252. package/dist/usecase/dto/render/ComposeSitemapRequest.d.ts.map +0 -1
  253. package/dist/usecase/dto/render/ComposeSitemapRequest.js +0 -2
  254. package/dist/usecase/dto/render/ComposeSitemapRequest.js.map +0 -1
  255. package/dist/usecase/dto/render/PreviewEntryRequest.d.ts +0 -13
  256. package/dist/usecase/dto/render/PreviewEntryRequest.d.ts.map +0 -1
  257. package/dist/usecase/dto/render/PreviewEntryRequest.js +0 -2
  258. package/dist/usecase/dto/render/PreviewEntryRequest.js.map +0 -1
  259. package/dist/usecase/dto/render/RenderEntryLiveRequest.d.ts +0 -14
  260. package/dist/usecase/dto/render/RenderEntryLiveRequest.d.ts.map +0 -1
  261. package/dist/usecase/dto/render/RenderEntryLiveRequest.js +0 -2
  262. package/dist/usecase/dto/render/RenderEntryLiveRequest.js.map +0 -1
  263. package/dist/usecase/dto/render/RenderListLiveRequest.d.ts +0 -11
  264. package/dist/usecase/dto/render/RenderListLiveRequest.d.ts.map +0 -1
  265. package/dist/usecase/dto/render/RenderListLiveRequest.js +0 -2
  266. package/dist/usecase/dto/render/RenderListLiveRequest.js.map +0 -1
  267. package/dist/usecase/dto/render/index.d.ts +0 -7
  268. package/dist/usecase/dto/render/index.d.ts.map +0 -1
  269. package/dist/usecase/dto/render/index.js +0 -7
  270. package/dist/usecase/dto/render/index.js.map +0 -1
  271. package/dist/usecase/render/ComposeEntrySeoMetaUseCase.d.ts +0 -28
  272. package/dist/usecase/render/ComposeEntrySeoMetaUseCase.d.ts.map +0 -1
  273. package/dist/usecase/render/ComposeEntrySeoMetaUseCase.js +0 -59
  274. package/dist/usecase/render/ComposeEntrySeoMetaUseCase.js.map +0 -1
  275. package/dist/usecase/render/ComposeLlmsTxtUseCase.d.ts +0 -16
  276. package/dist/usecase/render/ComposeLlmsTxtUseCase.d.ts.map +0 -1
  277. package/dist/usecase/render/ComposeLlmsTxtUseCase.js +0 -36
  278. package/dist/usecase/render/ComposeLlmsTxtUseCase.js.map +0 -1
  279. package/dist/usecase/render/ComposeSitemapUseCase.d.ts +0 -15
  280. package/dist/usecase/render/ComposeSitemapUseCase.d.ts.map +0 -1
  281. package/dist/usecase/render/ComposeSitemapUseCase.js +0 -28
  282. package/dist/usecase/render/ComposeSitemapUseCase.js.map +0 -1
  283. package/dist/usecase/render/PreviewEntryUseCase.d.ts +0 -28
  284. package/dist/usecase/render/PreviewEntryUseCase.d.ts.map +0 -1
  285. package/dist/usecase/render/PreviewEntryUseCase.js +0 -72
  286. package/dist/usecase/render/PreviewEntryUseCase.js.map +0 -1
  287. package/dist/usecase/render/RenderEntryLiveUseCase.d.ts +0 -36
  288. package/dist/usecase/render/RenderEntryLiveUseCase.d.ts.map +0 -1
  289. package/dist/usecase/render/RenderEntryLiveUseCase.js +0 -62
  290. package/dist/usecase/render/RenderEntryLiveUseCase.js.map +0 -1
  291. package/dist/usecase/render/RenderListLiveUseCase.d.ts +0 -25
  292. package/dist/usecase/render/RenderListLiveUseCase.d.ts.map +0 -1
  293. package/dist/usecase/render/RenderListLiveUseCase.js +0 -45
  294. package/dist/usecase/render/RenderListLiveUseCase.js.map +0 -1
  295. package/dist/usecase/render/index.d.ts +0 -7
  296. package/dist/usecase/render/index.d.ts.map +0 -1
  297. package/dist/usecase/render/index.js +0 -7
  298. package/dist/usecase/render/index.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"DatabaseEntryRepository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/persistence/DatabaseEntryRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,KAAK,EACV,KAAK,cAAc,EACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,eAAe,EACf,wBAAwB,EACxB,yBAAyB,EACzB,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EAChB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EACV,WAAW,EACX,8BAA8B,EAC9B,4BAA4B,EAC5B,wBAAwB,EACxB,mBAAmB,EACnB,wBAAwB,EACzB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAE1E,OAAO,EAKL,KAAK,QAAQ,EACd,MAAM,gCAAgC,CAAC;AAOxC;;;;;;;;;;;;;;GAcG;AACH,qBAAa,uBAAwB,YAAW,eAAe,EAAE,WAAW;IAExE,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,aAAa;gBADb,EAAE,EAAE,cAAc,EAClB,aAAa,GAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAa;IAG3E,MAAM,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC;IA6BhD,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAWzC,MAAM,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC;IAoBhD,MAAM,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC;QAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAuCrE,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAuC/D,IAAI,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA+CvD,eAAe,CAAC,IAAI,EAAE,wBAAwB,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAQzE,gBAAgB,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAI3E,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAK3C,UAAU,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAU5D,eAAe,CAAC,IAAI,EAAE,wBAAwB,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAUtE,iBAAiB,CACrB,IAAI,EAAE,4BAA4B,GACjC,OAAO,CAAC,SAAS,KAAK,EAAE,CAAC;IAiCtB,aAAa,CACjB,IAAI,GAAE,wBAA6B,GAClC,OAAO,CAAC,SAAS,KAAK,EAAE,CAAC;IA2BtB,mBAAmB,CACvB,IAAI,EAAE,8BAA8B,GACnC,OAAO,CAAC,SAAS,KAAK,EAAE,CAAC;YAuBd,mBAAmB;YA0CnB,eAAe;CAU9B;AA6GD;2EAC2E;AAC3E,wBAAsB,eAAe,CACnC,EAAE,EAAE,cAAc,EAClB,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAEvB"}
1
+ {"version":3,"file":"DatabaseEntryRepository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/persistence/DatabaseEntryRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,KAAK,EACV,KAAK,cAAc,EACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,eAAe,EACf,wBAAwB,EACxB,yBAAyB,EACzB,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EAChB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EACV,WAAW,EACX,8BAA8B,EAC9B,4BAA4B,EAC5B,wBAAwB,EACxB,mBAAmB,EACnB,wBAAwB,EACzB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAE1E,OAAO,EAKL,KAAK,QAAQ,EACd,MAAM,gCAAgC,CAAC;AAOxC;;;;;;;;;;GAUG;AACH,qBAAa,uBAAwB,YAAW,eAAe,EAAE,WAAW;IAExE,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,aAAa;gBADb,EAAE,EAAE,cAAc,EAClB,aAAa,GAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAa;IAG3E,MAAM,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC;IA6BhD,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAWzC,MAAM,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC;IAoBhD,MAAM,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC;QAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAyBrE,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAuC/D,IAAI,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA0EvD,eAAe,CAAC,IAAI,EAAE,wBAAwB,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAQzE,gBAAgB,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAI3E,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAK3C,UAAU,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAU5D,eAAe,CAAC,IAAI,EAAE,wBAAwB,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAUtE,iBAAiB,CACrB,IAAI,EAAE,4BAA4B,GACjC,OAAO,CAAC,SAAS,KAAK,EAAE,CAAC;IAiCtB,aAAa,CACjB,IAAI,GAAE,wBAA6B,GAClC,OAAO,CAAC,SAAS,KAAK,EAAE,CAAC;IA2BtB,mBAAmB,CACvB,IAAI,EAAE,8BAA8B,GACnC,OAAO,CAAC,SAAS,KAAK,EAAE,CAAC;YAuBd,mBAAmB;YA0CnB,eAAe;CAU9B;AAgID;0EAC0E;AAC1E,wBAAsB,eAAe,CACnC,EAAE,EAAE,cAAc,EAClB,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAEvB"}
@@ -1,18 +1,14 @@
1
1
  import { schemaIndexedFieldSql, } from "@aotter/mantle-spec";
2
2
  import { clampLimit } from "../../domain/service/Pagination.js";
3
3
  import { EntryStatusConflict, EntryVersionConflict, liftLocale, projectPublicEntry, } from "../../domain/model/EntryRow.js";
4
- import { decodeEntryCursor, encodeEntryCursor, escapeLikeTerm, } from "./Pagination.js";
4
+ import { decodeEntrySortCursor, encodeEntrySortCursor, escapeLikeTerm, } from "./Pagination.js";
5
5
  /**
6
6
  * `EntryRepository` impl backed by `DatabaseDriver`. Adapters that
7
- * implement `DatabaseDriver` (CF binds D1; future Postgres, Neon,
8
- * etc.) get this repository for free; the SQL is SQLite-shaped
9
- * (which Postgres can also execute via Hyperdrive when v0.2 lands).
7
+ * implement the SQLite-shaped `DatabaseDriver` contract get this
8
+ * repository for free.
10
9
  *
11
10
  * `UPDATE … RETURNING` collapses the post-write SELECT to one round
12
- * trip on SQLite ≥ 3.35 / Postgres. `delete` uses
13
- * `DatabaseDriver.batch` because SQLite doesn't enforce FK ON DELETE
14
- * CASCADE by default and we'd otherwise orphan revisions / approvals
15
- * when the parent goes.
11
+ * trip on SQLite ≥ 3.35 / Postgres.
16
12
  *
17
13
  * Lifts `data.locale` to `EntryRow.locale` at the rowFromDb boundary
18
14
  * — see ADR-0010 + `domain/model/EntryRow.ts`.
@@ -70,21 +66,11 @@ export class DatabaseEntryRepository {
70
66
  args.expectedStatus,
71
67
  args.expectedVersion,
72
68
  ];
73
- const result = await this.db.batch([
74
- this.db
75
- .prepare(`DELETE FROM revisions WHERE entry_id = ?
76
- AND EXISTS (SELECT 1 FROM entries WHERE ${parentMatches})`)
77
- .bind(args.id, ...parentSnapshot),
78
- this.db
79
- .prepare(`DELETE FROM approvals WHERE entry_id = ?
80
- AND EXISTS (SELECT 1 FROM entries WHERE ${parentMatches})`)
81
- .bind(args.id, ...parentSnapshot),
82
- this.db
83
- .prepare(`DELETE FROM entries WHERE ${parentMatches}`)
84
- .bind(...parentSnapshot),
85
- ]);
86
- const last = result[result.length - 1];
87
- if ((last?.meta.changes ?? 0) > 0)
69
+ const result = await this.db
70
+ .prepare(`DELETE FROM entries WHERE ${parentMatches}`)
71
+ .bind(...parentSnapshot)
72
+ .run();
73
+ if (result.meta.changes > 0)
88
74
  return { removed: true };
89
75
  const after = await this.db
90
76
  .prepare(`SELECT collection, status, version FROM entries WHERE id = ?`)
@@ -135,7 +121,16 @@ export class DatabaseEntryRepository {
135
121
  // adapters that bypass the use case) get the same default page
136
122
  // size as ListEntriesUseCase — not a silently different 100.
137
123
  const limit = clampLimit(args.limit);
138
- const cursor = decodeEntryCursor(args.cursor);
124
+ const sort = args.sort ?? { field: "updatedAt", direction: "desc" };
125
+ const schema = this.schemasByName.get(args.collection);
126
+ const sortSql = entrySortSql(schema, sort.field);
127
+ if (!sortSql)
128
+ throw new Error(`unavailable entry sort field: ${sort.field}`);
129
+ const cursor = decodeEntrySortCursor(args.cursor, sort.field, sort.direction);
130
+ const backward = args.cursorDirection === "backward" && cursor !== null;
131
+ const queryDirection = backward
132
+ ? (sort.direction === "asc" ? "DESC" : "ASC")
133
+ : sort.direction.toUpperCase();
139
134
  // Fetch limit+1 to detect a next page without a second query —
140
135
  // the extra row never reaches the caller.
141
136
  const probe = limit + 1;
@@ -146,31 +141,51 @@ export class DatabaseEntryRepository {
146
141
  binds.push(args.status);
147
142
  }
148
143
  if (args.search) {
149
- // LIKE over the raw JSON blob is dumb but fine at this scale —
150
- // there's no FTS index. Escape the caller's own wildcards so a
151
- // search for "50%" or "a_b" doesn't turn into an unintended
152
- // pattern.
153
144
  const term = escapeLikeTerm(args.search);
154
- conditions.push("(id LIKE '%'||?||'%' ESCAPE '\\' OR data LIKE '%'||?||'%' ESCAPE '\\')");
155
- binds.push(term, term);
145
+ const searchConditions = ["id LIKE '%'||?||'%' ESCAPE '\\'"];
146
+ binds.push(term);
147
+ for (const field of args.searchFields ?? []) {
148
+ searchConditions.push("json_extract(data, ?) LIKE '%'||?||'%' ESCAPE '\\'");
149
+ binds.push(jsonPathForTopLevelField(field), term);
150
+ }
151
+ conditions.push(`(${searchConditions.join(" OR ")})`);
152
+ }
153
+ if (args.filter) {
154
+ const compiled = compileDataPredicates(schema, [{
155
+ field: args.filter.field,
156
+ kind: "equal",
157
+ value: args.filter.value,
158
+ }]);
159
+ conditions.push(...compiled.conditions);
160
+ binds.push(...compiled.binds);
156
161
  }
157
162
  if (cursor) {
158
- conditions.push("(updated_at, id) < (?, ?)");
163
+ const comparison = backward
164
+ ? (sort.direction === "asc" ? "<" : ">")
165
+ : (sort.direction === "asc" ? ">" : "<");
166
+ conditions.push(`(${sortSql}, id) ${comparison} (?, ?)`);
159
167
  binds.push(...cursor);
160
168
  }
161
169
  binds.push(probe);
162
170
  const stmt = this.db
163
171
  .prepare(`SELECT id, collection, status, version, data, author_id, created_at, updated_at
164
172
  FROM entries WHERE ${conditions.join(" AND ")}
165
- ORDER BY updated_at DESC, id DESC LIMIT ?`)
173
+ ORDER BY ${sortSql} ${queryDirection}, id ${queryDirection} LIMIT ?`)
166
174
  .bind(...binds);
167
175
  const rows = await stmt.all();
168
176
  const hasMore = rows.length > limit;
169
- const page = hasMore ? rows.slice(0, limit) : rows;
177
+ const page = [...(hasMore ? rows.slice(0, limit) : rows)];
178
+ if (backward)
179
+ page.reverse();
180
+ const first = page[0];
181
+ const last = page[page.length - 1];
170
182
  return {
171
183
  rows: page.map(rowFromDb),
172
- nextCursor: hasMore && page.length > 0
173
- ? encodeEntryCursor(page[page.length - 1].updated_at, page[page.length - 1].id)
184
+ previousCursor: first && (backward ? hasMore : cursor !== null)
185
+ ? encodeEntrySortCursor(sort.field, sort.direction, entrySortValueFromDb(first, sort.field), first.id)
186
+ : undefined,
187
+ nextCursor: last && (backward ? cursor !== null : hasMore)
188
+ ? encodeEntrySortCursor(sort.field, sort.direction, entrySortValueFromDb(last, sort.field), last.id)
174
189
  : undefined,
175
190
  };
176
191
  }
@@ -381,6 +396,30 @@ function usableIndexedFields(schema, predicates) {
381
396
  }
382
397
  return usable;
383
398
  }
399
+ function entrySortSql(schema, field) {
400
+ if (field === "id")
401
+ return "id";
402
+ if (field === "status")
403
+ return "status";
404
+ if (field === "updatedAt")
405
+ return "updated_at";
406
+ return schema ? schemaIndexedFieldSql(schema, field) : null;
407
+ }
408
+ function entrySortValueFromDb(row, field) {
409
+ if (field === "id")
410
+ return row.id;
411
+ if (field === "status")
412
+ return row.status;
413
+ if (field === "updatedAt")
414
+ return row.updated_at;
415
+ const value = JSON.parse(row.data)[field];
416
+ if (typeof value === "boolean")
417
+ return Number(value);
418
+ if (typeof value !== "string" && typeof value !== "number") {
419
+ throw new Error(`non-scalar sort value for ${field}`);
420
+ }
421
+ return value;
422
+ }
384
423
  function rowFromDb(row) {
385
424
  const data = JSON.parse(row.data);
386
425
  return {
@@ -399,7 +438,7 @@ function jsonPathForTopLevelField(field) {
399
438
  return `$."${field.replace(/\\/g, "\\\\").replace(/"/g, '\\"')}"`;
400
439
  }
401
440
  /** Public compatibility helper. Without a Schema map it intentionally uses
402
- * the safe JSON fallback; in-repo callers use `CmsRuntime.entryReader`. */
441
+ * the safe JSON fallback; in-repo callers use `MantleRuntime.entries`. */
403
442
  export async function readEntryBySlug(db, args) {
404
443
  return new DatabaseEntryRepository(db).readBySlug(args);
405
444
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DatabaseEntryRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/persistence/DatabaseEntryRepository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DatabaseEntryRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/persistence/DatabaseEntryRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,GAItB,MAAM,qBAAqB,CAAC;AAqB7B,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,UAAU,EACV,kBAAkB,GAEnB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,cAAc,GACf,MAAM,iBAAiB,CAAC;AAEzB;;;;;;;;;;GAUG;AACH,MAAM,OAAO,uBAAuB;IAEf;IACA;IAFnB,YACmB,EAAkB,EAClB,gBAAqD,IAAI,GAAG,EAAE;QAD9D,OAAE,GAAF,EAAE,CAAgB;QAClB,kBAAa,GAAb,aAAa,CAAiD;IAC9E,CAAC;IAEJ,KAAK,CAAC,MAAM,CAAC,IAAqB;QAChC,MAAM,IAAI,CAAC,EAAE;aACV,OAAO,CACN;yCACiC,CAClC;aACA,IAAI,CACH,IAAI,CAAC,EAAE,EACP,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EACzB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,GAAG,EACR,IAAI,CAAC,GAAG,CACT;aACA,GAAG,EAAE,CAAC;QACT,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;YAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,CAAC;YACV,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,SAAS,EAAE,IAAI,CAAC,GAAG;YACnB,SAAS,EAAE,IAAI,CAAC,GAAG;SACpB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,EAAU;QAClB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE;aACtB,OAAO,CACN;mCAC2B,CAC5B;aACA,IAAI,CAAC,EAAE,CAAC;aACR,KAAK,EAAc,CAAC;QACvB,OAAO,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAqB;QAChC,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE;aACtB,OAAO,CACN;;4FAEoF,CACrF;aACA,IAAI,CACH,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EACzB,UAAU,EACV,IAAI,CAAC,GAAG,EACR,IAAI,CAAC,EAAE,EACP,IAAI,CAAC,eAAe,CACrB;aACA,KAAK,EAAc,CAAC;QACvB,IAAI,CAAC,GAAG;YAAE,MAAM,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAC1E,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAqB;QAChC,MAAM,aAAa,GACjB,0DAA0D,CAAC;QAC7D,MAAM,cAAc,GAAG;YACrB,IAAI,CAAC,EAAE;YACP,IAAI,CAAC,UAAU;YACf,IAAI,CAAC,cAAc;YACnB,IAAI,CAAC,eAAe;SACZ,CAAC;QACX,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE;aACzB,OAAO,CAAC,6BAA6B,aAAa,EAAE,CAAC;aACrD,IAAI,CAAC,GAAG,cAAc,CAAC;aACvB,GAAG,EAAE,CAAC;QACT,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC;YAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACtD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,EAAE;aACxB,OAAO,CAAC,8DAA8D,CAAC;aACvE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;aACb,KAAK,EAAiE,CAAC;QAC1E,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU;YAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC9E,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,eAAe,EAAE,CAAC;YAC3C,MAAM,IAAI,oBAAoB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/E,CAAC;QACD,MAAM,IAAI,mBAAmB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,IAA0B;QAC/C,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;QACjD,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAc,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACtD,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC7B,CAAC;QACD,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;YAClC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAChC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC9B,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE;aACtB,OAAO,CACN;uBACe,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;4FACsD,CACrF;aACA,IAAI,CAAC,GAAG,KAAK,CAAC;aACd,KAAK,EAAc,CAAC;QACvB,IAAI,GAAG;YAAE,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;QAC/B,mEAAmE;QACnE,kEAAkE;QAClE,+DAA+D;QAC/D,0BAA0B;QAC1B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,EAAE;aACxB,OAAO,CAAC,kDAAkD,CAAC;aAC3D,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;aACb,KAAK,EAAuC,CAAC;QAChD,IAAI,eAAe,KAAK,SAAS,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,eAAe,EAAE,CAAC;YAChF,MAAM,IAAI,oBAAoB,CAAC,IAAI,CAAC,EAAE,EAAE,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAC1E,CAAC;QACD,MAAM,IAAI,mBAAmB,CAC3B,IAAI,CAAC,EAAE,EACP,cAAc,IAAI,IAAI,CAAC,EAAE,EACxB,KAAK,EAAE,MAAmC,IAAI,IAAI,CAAC,EAAE,CACvD,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAqB;QAC9B,6DAA6D;QAC7D,+DAA+D;QAC/D,6DAA6D;QAC7D,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;QACpE,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvD,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC7E,MAAM,MAAM,GAAG,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9E,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,KAAK,UAAU,IAAI,MAAM,KAAK,IAAI,CAAC;QACxE,MAAM,cAAc,GAAG,QAAQ;YAC7B,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;YAC7C,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;QACjC,+DAA+D;QAC/D,0CAA0C;QAC1C,MAAM,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;QACxB,MAAM,UAAU,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACtC,MAAM,KAAK,GAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3C,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC9B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzC,MAAM,gBAAgB,GAAG,CAAC,iCAAiC,CAAC,CAAC;YAC7D,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,YAAY,IAAI,EAAE,EAAE,CAAC;gBAC5C,gBAAgB,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;gBAC5E,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;YACpD,CAAC;YACD,UAAU,CAAC,IAAI,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,EAAE,CAAC;oBAC9C,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;oBACxB,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;iBACzB,CAAC,CAAC,CAAC;YACJ,UAAU,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;YACxC,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;QACD,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,UAAU,GAAG,QAAQ;gBACzB,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;gBACxC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC3C,UAAU,CAAC,IAAI,CAAC,IAAI,OAAO,SAAS,UAAU,SAAS,CAAC,CAAC;YACzD,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;QACxB,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE;aACjB,OAAO,CACN;8BACsB,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;oBAClC,OAAO,IAAI,cAAc,QAAQ,cAAc,UAAU,CACtE;aACA,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;QAClB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,EAAc,CAAC;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpC,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1D,IAAI,QAAQ;YAAE,IAAI,CAAC,OAAO,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACnC,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;YACzB,cAAc,EAAE,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC;gBAC7D,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;gBACtG,CAAC,CAAC,SAAS;YACb,UAAU,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;gBACxD,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;gBACpG,CAAC,CAAC,SAAS;SACd,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,IAA8B;QAClD,OAAO,IAAI,CAAC,mBAAmB,CAAC;YAC9B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE;SACrC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,IAA+B;QACpD,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,EAAU;QACvB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC/B,OAAO,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAyB;QACxC,OAAO,IAAI,CAAC,eAAe,CAAC;YAC1B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,KAAK,EAAE,MAAM;YACb,KAAK,EAAE,IAAI,CAAC,IAAI;YAChB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,IAA8B;QAClD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC;YACzC,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE;YACpC,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;QACH,OAAO,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,iBAAiB,CACrB,IAAkC;QAElC,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACzC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAEnC,MAAM,OAAO,GAAY,EAAE,CAAC;QAC5B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,qBAAqB,EAAE,CAAC;YAC1E,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,qBAAqB,CAAC,CAAC;YACjE,MAAM,UAAU,GAAG,CAAC,gBAAgB,CAAC,CAAC;YACtC,MAAM,KAAK,GAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACvD,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,EAAE;gBAC7C,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;gBAChD,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC;aACjC,CAAC,CAAC;YACH,UAAU,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;YACxC,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC9B,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC9B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1B,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE;iBACvB,OAAO,CACN,UAAU,aAAa;mBACd,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAC7D;iBACA,IAAI,CAAC,GAAG,KAAK,CAAC;iBACd,GAAG,EAAc,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;QAClD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,OAAiC,EAAE;QAEnC,MAAM,UAAU,GAAG,CAAC,sBAAsB,CAAC,CAAC;QAC5C,MAAM,KAAK,GAAc,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YACzB,UAAU,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;aAAM,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACrC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9B,CAAC;QACD,IAAI,GAAG,GACL,UAAU,aAAa,gBAAgB;YACvC,SAAS,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC;QAC/D,IACE,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;YAC9B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;YAC3B,IAAI,CAAC,KAAK,GAAG,CAAC,EACd,CAAC;YACD,GAAG,IAAI,UAAU,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5C,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,EAAc,CAAC;QACzE,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,mBAAmB,CACvB,IAAoC;QAEpC,MAAM,UAAU,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACtC,MAAM,KAAK,GAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,qBAAqB,CACpC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,EACvC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAC1D,CAAC;QACF,UAAU,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC;YACzD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;YACxB,CAAC,CAAC,CAAC,CAAC;QACN,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE;aACvB,OAAO,CACN,UAAU,aAAa;iBACd,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;mDACU,KAAK,EAAE,CACnD;aACA,IAAI,CAAC,GAAG,KAAK,CAAC;aACd,GAAG,EAAc,CAAC;QACrB,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACrD,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAC,IAMjC;QACC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACtC,MAAM,UAAU,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACtC,MAAM,KAAK,GAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC9B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;QACD,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,EAAE;YAC7C,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;gBAClC,KAAK;gBACL,IAAI,EAAE,OAAgB;gBACtB,KAAK;aACN,CAAC,CAAC;YACH,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC;SACjC,CAAC,CAAC;QACH,UAAU,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7B,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE;aACtB,OAAO,CACN;;iBAES,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;0CACC,CACnC;aACA,IAAI,CAAC,GAAG,KAAK,CAAC;aACd,KAAK,EAAc,CAAC;QACvB,OAAO,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACrC,CAAC;IAEO,KAAK,CAAC,eAAe,CAC3B,EAAU,EACV,QAAgB;QAEhB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,EAAE;aACxB,OAAO,CAAC,0CAA0C,CAAC;aACnD,IAAI,CAAC,EAAE,CAAC;aACR,KAAK,EAAuB,CAAC;QAChC,OAAO,IAAI,oBAAoB,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;IACtE,CAAC;CACF;AAED,MAAM,aAAa,GACjB,0EAA0E,CAAC;AAE7E,yEAAyE;AACzE,4EAA4E;AAC5E,wCAAwC;AACxC,MAAM,qBAAqB,GAAG,EAAE,CAAC;AAOjC,SAAS,gBAAgB,CAAC,MAAiC;IACzD,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACpC,OAAO,MAAM,KAAK,IAAI;QACpB,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACrC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,qBAAqB,CAC5B,MAAkC,EAClC,UAAoC;IAEpC,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,KAAK,GAAc,EAAE,CAAC;IAC5B,MAAM,OAAO,GAAG,mBAAmB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,SAAS,GAAG,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC;YACtD,CAAC,CAAC,qBAAqB,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC;YAChD,CAAC,CAAC,IAAI,CAAC;QACT,MAAM,SAAS,GAAG,SAAS,IAAI,uBAAuB,CAAC;QACvD,IAAI,CAAC,SAAS;YAAE,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QACtE,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC9B,UAAU,CAAC,IAAI,CAAC,GAAG,SAAS,UAAU,CAAC,CAAC;QAC1C,CAAC;aAAM,IAAI,SAAS,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACnC,UAAU,CAAC,IAAI,CACb,GAAG,SAAS,QAAQ,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAClE,CAAC;YACF,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,IAAI,CAAC,GAAG,SAAS,MAAM,CAAC,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AAC/B,CAAC;AAED,SAAS,mBAAmB,CAC1B,MAAkC,EAClC,UAAoC;IAEpC,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,GAAG,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IACrF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,MAAM,YAAY,GAAG;QACnB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC;QACpC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;KAC/B,CAAC;IACF,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACvC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YAC3D,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAE,CAAC;YAClC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACrC,IAAI,CAAC,SAAS;gBAAE,MAAM;YACtB,IACE,KAAK,KAAK,CAAC;gBACX,CAAC,SAAS,CAAC,IAAI,KAAK,MAAM;oBACxB,CAAC,SAAS,CAAC,IAAI,KAAK,OAAO,IAAI,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,EAC3D,CAAC;gBACD,MAAM;YACR,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAaD,SAAS,YAAY,CAAC,MAAkC,EAAE,KAAa;IACrE,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IACxC,IAAI,KAAK,KAAK,WAAW;QAAE,OAAO,YAAY,CAAC;IAC/C,OAAO,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9D,CAAC;AAED,SAAS,oBAAoB,CAAC,GAAe,EAAE,KAAa;IAC1D,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,GAAG,CAAC,EAAE,CAAC;IAClC,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC;IAC1C,IAAI,KAAK,KAAK,WAAW;QAAE,OAAO,GAAG,CAAC,UAAU,CAAC;IACjD,MAAM,KAAK,GAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAA6B,CAAC,KAAK,CAAC,CAAC;IACvE,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACrD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,6BAA6B,KAAK,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,SAAS,CAAC,GAAe;IAChC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAA4B,CAAC;IAC7D,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC;QACxB,MAAM,EAAE,GAAG,CAAC,MAAsB;QAClC,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,IAAI;QACJ,QAAQ,EAAE,GAAG,CAAC,SAAS;QACvB,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,SAAS,EAAE,GAAG,CAAC,UAAU;KAC1B,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAa;IAC7C,OAAO,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC;AACpE,CAAC;AAED;0EAC0E;AAC1E,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,EAAkB,EAClB,IAAyB;IAEzB,OAAO,IAAI,uBAAuB,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC1D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"DatabaseSiteConfigRepository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/persistence/DatabaseSiteConfigRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,UAAU,EACf,KAAK,YAAY,EAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,KAAK,EACV,oBAAoB,EACpB,4BAA4B,EAC7B,MAAM,2CAA2C,CAAC;AA2EnD,qBAAa,4BAA6B,YAAW,oBAAoB;IAI3D,OAAO,CAAC,QAAQ,CAAC,EAAE;IAH/B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,aAAa,CAAgC;gBAExB,EAAE,EAAE,cAAc;IAEzC,IAAI,CAAC,QAAQ,EAAE,YAAY,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;YA4D/C,eAAe;IAS7B,OAAO,CAAC,MAAM;IAQR,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC;IAqB3B,cAAc,CAAC,MAAM,EAAE,4BAA4B,GAAG,OAAO,CAAC,IAAI,CAAC;IAUnE,WAAW,IAAI,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC;IAWzC,iBAAiB,IAAI,OAAO,CAAC,SAAS,kBAAkB,EAAE,CAAC;CAOlE"}
1
+ {"version":3,"file":"DatabaseSiteConfigRepository.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/persistence/DatabaseSiteConfigRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,UAAU,EACf,KAAK,YAAY,EAElB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,KAAK,EACV,oBAAoB,EACpB,4BAA4B,EAC7B,MAAM,2CAA2C,CAAC;AAwFnD,qBAAa,4BAA6B,YAAW,oBAAoB;IAI3D,OAAO,CAAC,QAAQ,CAAC,EAAE;IAH/B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,aAAa,CAAgC;gBAExB,EAAE,EAAE,cAAc;IAEzC,IAAI,CAAC,QAAQ,EAAE,YAAY,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;YAyD/C,eAAe;IAS7B,OAAO,CAAC,MAAM;IAQR,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC;IAqB3B,cAAc,CAAC,MAAM,EAAE,4BAA4B,GAAG,OAAO,CAAC,IAAI,CAAC;IAUnE,WAAW,IAAI,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC;IAWzC,iBAAiB,IAAI,OAAO,CAAC,SAAS,kBAAkB,EAAE,CAAC;CAOlE"}
@@ -1,17 +1,17 @@
1
- import { assertSiteDefaultsCanonical, } from "@aotter/mantle-spec";
1
+ import { assertSiteDefaultsCanonical, DEFAULT_SITE_ICONS, } from "@aotter/mantle-spec";
2
2
  /**
3
- * `site_config` row read/write. `seed` runs once per boot (called from
4
- * `bootInit`) and treats keys differently depending on who owns them:
3
+ * `site_config` row read/write. SQLite preparation calls `seed` once per
4
+ * changed revision and treats keys differently depending on who owns them:
5
5
  *
6
6
  * - **UI-editable, seed-once** (`brand`, `title`, `description`,
7
- * `origin`, `faviconUrl`, `ga4MeasurementId`, `facebookPixelId`):
7
+ * `ga4MeasurementId`, `facebookPixelId`):
8
8
  * written via INSERT … ON CONFLICT DO NOTHING. The admin settings
9
9
  * UI (`/admin/api/site-settings`) can edit a subset of these
10
10
  * directly, and the rest are conceptually the same "operator can
11
11
  * override" bucket — either way, DB wins once the row exists, so a
12
12
  * later `src/mantle/config.ts` edit never clobbers an operator's change.
13
13
  *
14
- * - **code-canonical, boot-synced** (`mediaPurposes`, `locales`):
14
+ * - **code-canonical, boot-synced** (`origin`, `icons`, `mediaPurposes`, `locales`):
15
15
  * these have no admin-UI edit path — `src/mantle/config.ts` is the only
16
16
  * source of truth — so `seed` upserts them on every boot, writing
17
17
  * only when the serialized value actually differs from what's
@@ -21,7 +21,7 @@ import { assertSiteDefaultsCanonical, } from "@aotter/mantle-spec";
21
21
  * purpose, adjusted `maxBytes`) silently never reached a
22
22
  * already-deployed site's D1 row.
23
23
  *
24
- * The runtime calls `seed` once during bootInit; the result of `load`
24
+ * SQLite preparation calls `seed`; the result of `load`
25
25
  * is what every render path and template sees.
26
26
  *
27
27
  * `mediaPurposes` is JSON-encoded (an array of `MediaPurposePolicy`
@@ -72,6 +72,20 @@ function parseMediaPurposes(raw) {
72
72
  return [];
73
73
  }
74
74
  }
75
+ function parseIcons(raw) {
76
+ if (!raw)
77
+ return DEFAULT_SITE_ICONS;
78
+ try {
79
+ const parsed = JSON.parse(raw);
80
+ return Array.isArray(parsed) && parsed.length > 0
81
+ ? parsed
82
+ : DEFAULT_SITE_ICONS;
83
+ }
84
+ catch {
85
+ // Alpha compatibility: older releases stored one plain favicon URL.
86
+ return [{ src: raw }];
87
+ }
88
+ }
75
89
  export class DatabaseSiteConfigRepository {
76
90
  db;
77
91
  cacheLocales = false;
@@ -87,34 +101,26 @@ export class DatabaseSiteConfigRepository {
87
101
  return;
88
102
  }
89
103
  assertSiteDefaultsCanonical(defaults);
90
- const stmts = [];
104
+ const seedOnceValues = [
105
+ [KEYS.brand, defaults.brand],
106
+ [KEYS.title, defaults.title],
107
+ [KEYS.description, defaults.description],
108
+ [KEYS.ga4MeasurementId, defaults.ga4MeasurementId],
109
+ [KEYS.facebookPixelId, defaults.facebookPixelId],
110
+ ];
91
111
  const insertOnce = (key, value) => this.db
92
112
  .prepare(`INSERT INTO site_config (key, value) VALUES (?, ?) ON CONFLICT(key) DO NOTHING`)
93
113
  .bind(key, value);
94
114
  // UI-editable, seed-once — DB wins once the row exists.
95
- if (defaults.brand && defaults.brand.length > 0) {
96
- stmts.push(insertOnce(KEYS.brand, defaults.brand));
97
- }
98
- if (defaults.title && defaults.title.length > 0) {
99
- stmts.push(insertOnce(KEYS.title, defaults.title));
100
- }
101
- if (defaults.description && defaults.description.length > 0) {
102
- stmts.push(insertOnce(KEYS.description, defaults.description));
103
- }
104
- if (defaults.origin && defaults.origin.length > 0) {
105
- stmts.push(insertOnce(KEYS.origin, defaults.origin));
106
- }
107
- if (defaults.faviconUrl && defaults.faviconUrl.length > 0) {
108
- stmts.push(insertOnce(KEYS.faviconUrl, defaults.faviconUrl));
109
- }
110
- if (defaults.ga4MeasurementId && defaults.ga4MeasurementId.length > 0) {
111
- stmts.push(insertOnce(KEYS.ga4MeasurementId, defaults.ga4MeasurementId));
112
- }
113
- if (defaults.facebookPixelId && defaults.facebookPixelId.length > 0) {
114
- stmts.push(insertOnce(KEYS.facebookPixelId, defaults.facebookPixelId));
115
- }
116
- if (stmts.length > 0) {
117
- await this.db.batch(stmts);
115
+ const wanted = seedOnceValues.filter((entry) => Boolean(entry[1] && entry[1].length > 0));
116
+ if (wanted.length > 0) {
117
+ const existing = new Set((await this.db.prepare(`SELECT key, value FROM site_config`).all())
118
+ .map(({ key }) => key));
119
+ const missing = wanted
120
+ .filter(([key]) => !existing.has(key))
121
+ .map(([key, value]) => insertOnce(key, value));
122
+ if (missing.length > 0)
123
+ await this.db.batch(missing);
118
124
  }
119
125
  // Code-canonical, boot-synced — no admin-UI edit path for these
120
126
  // keys, so `src/mantle/config.ts` is the only source of truth. Upsert
@@ -122,6 +128,8 @@ export class DatabaseSiteConfigRepository {
122
128
  // read-compare-write avoids issuing a write on every boot when
123
129
  // nothing actually changed (#441).
124
130
  const syncedValues = [
131
+ [KEYS.origin, defaults.origin && defaults.origin.length > 0 ? defaults.origin : undefined],
132
+ [KEYS.faviconUrl, defaults.icons ? JSON.stringify(defaults.icons) : undefined],
125
133
  [KEYS.locales, defaults.locales && defaults.locales.length > 0 ? defaults.locales.join(",") : undefined],
126
134
  [
127
135
  KEYS.mediaPurposes,
@@ -165,7 +173,7 @@ export class DatabaseSiteConfigRepository {
165
173
  locales,
166
174
  canonicalLocale: locales[0] ?? null,
167
175
  brand: m.get(KEYS.brand) ?? "AotterMantle",
168
- faviconUrl: m.get(KEYS.faviconUrl) || undefined,
176
+ icons: parseIcons(m.get(KEYS.faviconUrl)),
169
177
  ga4MeasurementId: m.get(KEYS.ga4MeasurementId) || undefined,
170
178
  facebookPixelId: m.get(KEYS.facebookPixelId) || undefined,
171
179
  media: { purposes },
@@ -1 +1 @@
1
- {"version":3,"file":"DatabaseSiteConfigRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/persistence/DatabaseSiteConfigRepository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DatabaseSiteConfigRepository.js","sourceRoot":"","sources":["../../../src/infrastructure/persistence/DatabaseSiteConfigRepository.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,9 @@
1
+ export type EntryCursorValue = string | number;
1
2
  export declare function encodeCursor(offset: number): string;
2
3
  export declare function decodeCursor(cursor: string | undefined): number;
3
4
  export declare function encodeEntryCursor(updatedAt: number, id: string): string;
4
5
  export declare function decodeEntryCursor(cursor: string | undefined): readonly [updatedAt: number, id: string] | null;
6
+ export declare function encodeEntrySortCursor(field: string, direction: "asc" | "desc", value: EntryCursorValue, id: string): string;
7
+ export declare function decodeEntrySortCursor(cursor: string | undefined, field: string, direction: "asc" | "desc"): readonly [value: EntryCursorValue, id: string] | null;
5
8
  export declare function escapeLikeTerm(term: string): string;
6
9
  //# sourceMappingURL=Pagination.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Pagination.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/persistence/Pagination.ts"],"names":[],"mappings":"AAIA,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAI/D;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,IAAI,CAajD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD"}
1
+ {"version":3,"file":"Pagination.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/persistence/Pagination.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,MAAM,CAAC;AAE/C,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAI/D;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,IAAI,CAajD;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,KAAK,GAAG,MAAM,EACzB,KAAK,EAAE,gBAAgB,EACvB,EAAE,EAAE,MAAM,GACT,MAAM,CAKR;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,KAAK,GAAG,MAAM,GACxB,SAAS,CAAC,KAAK,EAAE,gBAAgB,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,IAAI,CAgBvD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD"}
@@ -1,6 +1,7 @@
1
1
  const CURSOR_PREFIX = "o:";
2
2
  const MAX_CURSOR_OFFSET = 1_000_000;
3
3
  const ENTRY_CURSOR_PREFIX = "e:";
4
+ const SORT_CURSOR_PREFIX = "s:";
4
5
  export function encodeCursor(offset) {
5
6
  return `${CURSOR_PREFIX}${offset}`;
6
7
  }
@@ -30,6 +31,33 @@ export function decodeEntryCursor(cursor) {
30
31
  return null;
31
32
  }
32
33
  }
34
+ export function encodeEntrySortCursor(field, direction, value, id) {
35
+ if (field === "updatedAt" && direction === "desc" && typeof value === "number") {
36
+ return encodeEntryCursor(value, id);
37
+ }
38
+ return `${SORT_CURSOR_PREFIX}${encodeURIComponent(JSON.stringify([field, direction, value, id]))}`;
39
+ }
40
+ export function decodeEntrySortCursor(cursor, field, direction) {
41
+ if (field === "updatedAt" && direction === "desc")
42
+ return decodeEntryCursor(cursor);
43
+ if (!cursor?.startsWith(SORT_CURSOR_PREFIX))
44
+ return null;
45
+ try {
46
+ const parsed = JSON.parse(decodeURIComponent(cursor.slice(SORT_CURSOR_PREFIX.length)));
47
+ if (!Array.isArray(parsed) || parsed.length !== 4)
48
+ return null;
49
+ const [cursorField, cursorDirection, value, id] = parsed;
50
+ return cursorField === field &&
51
+ cursorDirection === direction &&
52
+ (typeof value === "string" || typeof value === "number") &&
53
+ typeof id === "string" && id
54
+ ? [value, id]
55
+ : null;
56
+ }
57
+ catch {
58
+ return null;
59
+ }
60
+ }
33
61
  export function escapeLikeTerm(term) {
34
62
  return term.replace(/[\\%_]/g, (character) => `\\${character}`);
35
63
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Pagination.js","sourceRoot":"","sources":["../../../src/infrastructure/persistence/Pagination.ts"],"names":[],"mappings":"AAAA,MAAM,aAAa,GAAG,IAAI,CAAC;AAC3B,MAAM,iBAAiB,GAAG,SAAS,CAAC;AACpC,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAEjC,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,OAAO,GAAG,aAAa,GAAG,MAAM,EAAE,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAA0B;IACrD,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,aAAa,CAAC;QAAE,OAAO,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1D,OAAO,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,IAAI,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7F,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,SAAiB,EAAE,EAAU;IAC7D,OAAO,GAAG,mBAAmB,GAAG,SAAS,IAAI,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,MAA0B;IAE1B,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,mBAAmB,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1D,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAClE,IAAI,SAAS,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/B,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IAC9E,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;QAC3D,OAAO,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,SAAS,IAAI,CAAC,IAAI,EAAE;YAC5D,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC;YACjB,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,KAAK,SAAS,EAAE,CAAC,CAAC;AAClE,CAAC"}
1
+ {"version":3,"file":"Pagination.js","sourceRoot":"","sources":["../../../src/infrastructure/persistence/Pagination.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { type SiteDefaults } from "@aotter/mantle-spec";
2
+ import type { DatabaseDriver } from "../../domain/port/DatabaseDriver.js";
3
+ import type { MantleStorageAdapter, PreparedMantleStorage } from "../../domain/port/MantleStorageAdapter.js";
4
+ import type { ViewQueryExecutor, ViewQueryRequest, ViewQueryResult } from "../../domain/port/ViewQueryExecutor.js";
5
+ import type { SiteConfigRepository } from "../../domain/port/SiteConfigRepository.js";
6
+ import type { RuntimePlan } from "../../domain/service/RuntimePlanCompiler.js";
7
+ /** Existing SQLite/D1 implementation behind the semantic preparation seam. */
8
+ export declare class SqliteMantleStorageAdapter implements MantleStorageAdapter {
9
+ private readonly db;
10
+ private readonly siteDefaults?;
11
+ readonly nativeViewDialects: readonly ["sqlite"];
12
+ readonly siteConfig: SiteConfigRepository;
13
+ constructor(db: DatabaseDriver, siteDefaults?: SiteDefaults | undefined);
14
+ prepare(plan: RuntimePlan): Promise<PreparedMantleStorage>;
15
+ }
16
+ export declare class SqliteViewQueryExecutor implements ViewQueryExecutor {
17
+ private readonly db;
18
+ private readonly prepared;
19
+ constructor(db: DatabaseDriver, plan: RuntimePlan);
20
+ execute<R = Record<string, unknown>>(request: ViewQueryRequest): Promise<ViewQueryResult<R>>;
21
+ }
22
+ //# sourceMappingURL=SqliteMantleStorageAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SqliteMantleStorageAdapter.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/storage/SqliteMantleStorageAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,YAAY,EAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,KAAK,EACV,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,2CAA2C,CAAC;AACnD,OAAO,KAAK,EACV,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EAChB,MAAM,wCAAwC,CAAC;AAChD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAoB/E,8EAA8E;AAC9E,qBAAa,0BAA2B,YAAW,oBAAoB;IAKnE,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;IALhC,QAAQ,CAAC,kBAAkB,sBAAuB;IAClD,QAAQ,CAAC,UAAU,EAAE,oBAAoB,CAAC;gBAGvB,EAAE,EAAE,cAAc,EAClB,YAAY,CAAC,EAAE,YAAY,YAAA;IAKxC,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,qBAAqB,CAAC;CAqBjE;AAED,qBAAa,uBAAwB,YAAW,iBAAiB;IAI7D,OAAO,CAAC,QAAQ,CAAC,EAAE;IAHrB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyC;gBAG/C,EAAE,EAAE,cAAc,EACnC,IAAI,EAAE,WAAW;IAUb,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;CAqB/B"}
@@ -0,0 +1,86 @@
1
+ import { DiagnosticError, runtimeDiagnostic, } from "@aotter/mantle-spec";
2
+ import { prepareSqliteView, } from "./SqliteViewCompiler.js";
3
+ import { assertDeploymentPlan } from "../../usecase/boot/ValidateBootUseCase.js";
4
+ import { bootFingerprint, CANONICAL_MIGRATIONS, isBootCurrent, markBootCurrent, reconcileSchemaIndexes, reconcileSchemaSqlViews, schemaIndexMigrations, } from "../boot/index.js";
5
+ import { DatabaseEntryRepository } from "../persistence/DatabaseEntryRepository.js";
6
+ import { DatabaseMediaAssetRepository } from "../persistence/DatabaseMediaAssetRepository.js";
7
+ import { DatabasePendingUploadRepository } from "../persistence/DatabasePendingUploadRepository.js";
8
+ import { DatabaseSiteConfigRepository } from "../persistence/DatabaseSiteConfigRepository.js";
9
+ /** Existing SQLite/D1 implementation behind the semantic preparation seam. */
10
+ export class SqliteMantleStorageAdapter {
11
+ db;
12
+ siteDefaults;
13
+ nativeViewDialects = ["sqlite"];
14
+ siteConfig;
15
+ constructor(db, siteDefaults) {
16
+ this.db = db;
17
+ this.siteDefaults = siteDefaults;
18
+ this.siteConfig = new DatabaseSiteConfigRepository(db);
19
+ }
20
+ async prepare(plan) {
21
+ const prepared = sqliteStoragePorts(this.db, plan, this.siteConfig);
22
+ const fingerprint = await bootFingerprint({
23
+ semanticFingerprint: plan.semanticFingerprint,
24
+ siteDefaults: this.siteDefaults,
25
+ });
26
+ if (await isBootCurrent(this.db, fingerprint))
27
+ return prepared;
28
+ await this.db.migrations.runAll(CANONICAL_MIGRATIONS);
29
+ await this.siteConfig.seed(this.siteDefaults);
30
+ assertDeploymentPlan(plan, { siteLocales: await this.siteConfig.readLocales() });
31
+ const schemas = Object.values(plan.schemas).map((schema) => schema.manifest);
32
+ const indexMigrations = schemaIndexMigrations(schemas);
33
+ await this.db.migrations.runAll(indexMigrations);
34
+ await reconcileSchemaIndexes(this.db, indexMigrations, schemas);
35
+ await reconcileSchemaSqlViews(this.db, schemas);
36
+ // Mark only after every check and reconciliation succeeds so retry is safe.
37
+ await markBootCurrent(this.db, fingerprint);
38
+ return prepared;
39
+ }
40
+ }
41
+ export class SqliteViewQueryExecutor {
42
+ db;
43
+ prepared = new Map();
44
+ constructor(db, plan) {
45
+ this.db = db;
46
+ for (const view of Object.values(plan.views)) {
47
+ const schema = view.query.kind === "declarative"
48
+ ? plan.schemas[view.query.from]?.manifest
49
+ : undefined;
50
+ this.prepared.set(view.name, prepareSqliteView(view.query, view.name, schema));
51
+ }
52
+ }
53
+ async execute(request) {
54
+ const prepared = this.prepared.get(request.view);
55
+ if (!prepared) {
56
+ throw new DiagnosticError(runtimeDiagnostic({
57
+ code: "NOT_FOUND",
58
+ severity: "error",
59
+ path: `manifest:View/${request.view}`,
60
+ value: request.view,
61
+ expected: "a View in the prepared RuntimePlan",
62
+ }));
63
+ }
64
+ const compiled = prepared.bind(request);
65
+ const rows = await this.db.prepare(compiled.sql).bind(...compiled.params).all();
66
+ const normalized = prepared.normalizeRows(rows);
67
+ return {
68
+ rows: normalized,
69
+ page: compiled.effectivePage,
70
+ show: compiled.effectiveShow,
71
+ hasMore: normalized.length === compiled.effectiveShow,
72
+ };
73
+ }
74
+ }
75
+ function sqliteStoragePorts(db, plan, localePolicy) {
76
+ const schemas = new Map(Object.values(plan.schemas).map((schema) => [schema.name, schema.manifest]));
77
+ return {
78
+ entries: new DatabaseEntryRepository(db, schemas),
79
+ views: new SqliteViewQueryExecutor(db, plan),
80
+ localePolicy,
81
+ siteConfig: localePolicy,
82
+ mediaAssets: new DatabaseMediaAssetRepository(db),
83
+ pendingUploads: new DatabasePendingUploadRepository(db),
84
+ };
85
+ }
86
+ //# sourceMappingURL=SqliteMantleStorageAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SqliteMantleStorageAdapter.js","sourceRoot":"","sources":["../../../src/infrastructure/storage/SqliteMantleStorageAdapter.ts"],"names":[],"mappings":"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"}