@zlooks.cn/blog-server 1.0.6 → 1.0.7

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 (546) hide show
  1. package/dist/blog/blog-application.d.ts +14 -0
  2. package/dist/blog/blog-application.d.ts.map +1 -1
  3. package/dist/blog/blog-application.js +5 -3
  4. package/dist/blog/blog-application.js.map +1 -1
  5. package/dist/blog/comment-client-metadata.d.ts +6 -3
  6. package/dist/blog/comment-client-metadata.d.ts.map +1 -1
  7. package/dist/blog/comment-client-metadata.js +13 -3
  8. package/dist/blog/comment-client-metadata.js.map +1 -1
  9. package/dist/blog/errors.d.ts +6 -0
  10. package/dist/blog/errors.d.ts.map +1 -1
  11. package/dist/blog/errors.js +42 -2
  12. package/dist/blog/errors.js.map +1 -1
  13. package/dist/blog/post-content-audit.d.ts.map +1 -1
  14. package/dist/blog/post-content-audit.js +48 -11
  15. package/dist/blog/post-content-audit.js.map +1 -1
  16. package/dist/blog/public-blog-service.d.ts +47 -18
  17. package/dist/blog/public-blog-service.d.ts.map +1 -1
  18. package/dist/blog/public-blog-service.js +132 -91
  19. package/dist/blog/public-blog-service.js.map +1 -1
  20. package/dist/browser-api/http-message.d.ts +53 -0
  21. package/dist/browser-api/http-message.d.ts.map +1 -0
  22. package/dist/browser-api/http-message.js +157 -0
  23. package/dist/browser-api/http-message.js.map +1 -0
  24. package/dist/config/schema.d.ts.map +1 -1
  25. package/dist/config/schema.js +10 -3
  26. package/dist/config/schema.js.map +1 -1
  27. package/dist/contracts/public-api.d.ts +1 -1
  28. package/dist/contracts/public-api.d.ts.map +1 -1
  29. package/dist/contracts/public-api.js +1 -1
  30. package/dist/contracts/public-api.js.map +1 -1
  31. package/dist/events/blog-domain-events.d.ts.map +1 -1
  32. package/dist/events/blog-domain-events.js +54 -21
  33. package/dist/events/blog-domain-events.js.map +1 -1
  34. package/dist/mcp/blog-provider.d.ts +2 -3
  35. package/dist/mcp/blog-provider.d.ts.map +1 -1
  36. package/dist/mcp/blog-provider.js +3 -3
  37. package/dist/mcp/blog-provider.js.map +1 -1
  38. package/dist/mcp/blog-resources.d.ts +2 -1
  39. package/dist/mcp/blog-resources.d.ts.map +1 -1
  40. package/dist/mcp/blog-resources.js +25 -63
  41. package/dist/mcp/blog-resources.js.map +1 -1
  42. package/dist/mcp/category-tools.d.ts +2 -2
  43. package/dist/mcp/category-tools.d.ts.map +1 -1
  44. package/dist/mcp/category-tools.js +17 -7
  45. package/dist/mcp/category-tools.js.map +1 -1
  46. package/dist/mcp/comment-tools.d.ts +2 -2
  47. package/dist/mcp/comment-tools.d.ts.map +1 -1
  48. package/dist/mcp/comment-tools.js +23 -9
  49. package/dist/mcp/comment-tools.js.map +1 -1
  50. package/dist/mcp/friend-link-tools.d.ts +2 -2
  51. package/dist/mcp/friend-link-tools.d.ts.map +1 -1
  52. package/dist/mcp/friend-link-tools.js +22 -10
  53. package/dist/mcp/friend-link-tools.js.map +1 -1
  54. package/dist/mcp/page-tools.d.ts +2 -2
  55. package/dist/mcp/page-tools.d.ts.map +1 -1
  56. package/dist/mcp/page-tools.js +13 -14
  57. package/dist/mcp/page-tools.js.map +1 -1
  58. package/dist/mcp/post-tools.d.ts +2 -2
  59. package/dist/mcp/post-tools.d.ts.map +1 -1
  60. package/dist/mcp/post-tools.js +104 -70
  61. package/dist/mcp/post-tools.js.map +1 -1
  62. package/dist/mcp/tag-tools.d.ts +2 -2
  63. package/dist/mcp/tag-tools.d.ts.map +1 -1
  64. package/dist/mcp/tag-tools.js +15 -7
  65. package/dist/mcp/tag-tools.js.map +1 -1
  66. package/dist/mcp/theme-tools.d.ts +2 -2
  67. package/dist/mcp/theme-tools.d.ts.map +1 -1
  68. package/dist/mcp/theme-tools.js +69 -40
  69. package/dist/mcp/theme-tools.js.map +1 -1
  70. package/dist/mcp/tool-support.d.ts +16 -111
  71. package/dist/mcp/tool-support.d.ts.map +1 -1
  72. package/dist/mcp/tool-support.js +84 -93
  73. package/dist/mcp/tool-support.js.map +1 -1
  74. package/dist/messages/api/blog/[path+]/index.msg.d.ts +3 -0
  75. package/dist/messages/api/blog/[path+]/index.msg.d.ts.map +1 -0
  76. package/dist/messages/api/blog/[path+]/index.msg.js +7 -0
  77. package/dist/messages/api/blog/[path+]/index.msg.js.map +1 -0
  78. package/dist/messages/api/blog/categories/index.msg.d.ts +3 -0
  79. package/dist/messages/api/blog/categories/index.msg.d.ts.map +1 -0
  80. package/dist/messages/api/blog/categories/index.msg.js +9 -0
  81. package/dist/messages/api/blog/categories/index.msg.js.map +1 -0
  82. package/dist/messages/api/blog/friend-links/index.msg.d.ts +3 -0
  83. package/dist/messages/api/blog/friend-links/index.msg.d.ts.map +1 -0
  84. package/dist/messages/api/blog/friend-links/index.msg.js +9 -0
  85. package/dist/messages/api/blog/friend-links/index.msg.js.map +1 -0
  86. package/dist/messages/api/blog/likes/[slug]/index.msg.d.ts +3 -0
  87. package/dist/messages/api/blog/likes/[slug]/index.msg.d.ts.map +1 -0
  88. package/dist/messages/api/blog/likes/[slug]/index.msg.js +17 -0
  89. package/dist/messages/api/blog/likes/[slug]/index.msg.js.map +1 -0
  90. package/dist/messages/api/blog/posts/[slug]/comments/index.msg.d.ts +3 -0
  91. package/dist/messages/api/blog/posts/[slug]/comments/index.msg.d.ts.map +1 -0
  92. package/dist/messages/api/blog/posts/[slug]/comments/index.msg.js +21 -0
  93. package/dist/messages/api/blog/posts/[slug]/comments/index.msg.js.map +1 -0
  94. package/dist/messages/api/blog/posts/[slug]/index.msg.d.ts +3 -0
  95. package/dist/messages/api/blog/posts/[slug]/index.msg.d.ts.map +1 -0
  96. package/dist/messages/api/blog/posts/[slug]/index.msg.js +14 -0
  97. package/dist/messages/api/blog/posts/[slug]/index.msg.js.map +1 -0
  98. package/dist/messages/api/blog/posts/index.msg.d.ts +3 -0
  99. package/dist/messages/api/blog/posts/index.msg.d.ts.map +1 -0
  100. package/dist/messages/api/blog/posts/index.msg.js +15 -0
  101. package/dist/messages/api/blog/posts/index.msg.js.map +1 -0
  102. package/dist/messages/api/blog/search/index.msg.d.ts +3 -0
  103. package/dist/messages/api/blog/search/index.msg.d.ts.map +1 -0
  104. package/dist/messages/api/blog/search/index.msg.js +12 -0
  105. package/dist/messages/api/blog/search/index.msg.js.map +1 -0
  106. package/dist/messages/api/blog/tags/index.msg.d.ts +3 -0
  107. package/dist/messages/api/blog/tags/index.msg.d.ts.map +1 -0
  108. package/dist/messages/api/blog/tags/index.msg.js +9 -0
  109. package/dist/messages/api/blog/tags/index.msg.js.map +1 -0
  110. package/dist/messages/management/categories.msg.d.ts +3 -0
  111. package/dist/messages/management/categories.msg.d.ts.map +1 -0
  112. package/dist/messages/management/categories.msg.js +21 -0
  113. package/dist/messages/management/categories.msg.js.map +1 -0
  114. package/dist/messages/{browser/dispatch.msg.d.ts → management/comments.msg.d.ts} +1 -1
  115. package/dist/messages/management/comments.msg.d.ts.map +1 -0
  116. package/dist/messages/management/comments.msg.js +24 -0
  117. package/dist/messages/management/comments.msg.js.map +1 -0
  118. package/dist/messages/management/friend-links.msg.d.ts +3 -0
  119. package/dist/messages/management/friend-links.msg.d.ts.map +1 -0
  120. package/dist/messages/management/friend-links.msg.js +27 -0
  121. package/dist/messages/management/friend-links.msg.js.map +1 -0
  122. package/dist/messages/management/pages.msg.d.ts +3 -0
  123. package/dist/messages/management/pages.msg.d.ts.map +1 -0
  124. package/dist/messages/management/pages.msg.js +27 -0
  125. package/dist/messages/management/pages.msg.js.map +1 -0
  126. package/dist/messages/management/posts.msg.d.ts +3 -0
  127. package/dist/messages/management/posts.msg.d.ts.map +1 -0
  128. package/dist/messages/management/posts.msg.js +48 -0
  129. package/dist/messages/management/posts.msg.js.map +1 -0
  130. package/dist/messages/management/tags.msg.d.ts +3 -0
  131. package/dist/messages/management/tags.msg.d.ts.map +1 -0
  132. package/dist/messages/management/tags.msg.js +21 -0
  133. package/dist/messages/management/tags.msg.js.map +1 -0
  134. package/dist/messages/management/themes.msg.d.ts +3 -0
  135. package/dist/messages/management/themes.msg.d.ts.map +1 -0
  136. package/dist/messages/management/themes.msg.js +18 -0
  137. package/dist/messages/management/themes.msg.js.map +1 -0
  138. package/dist/messages/model-message.d.ts +5 -0
  139. package/dist/messages/model-message.d.ts.map +1 -0
  140. package/dist/messages/model-message.js +9 -0
  141. package/dist/messages/model-message.js.map +1 -0
  142. package/dist/messages/public/categories/list.msg.js +3 -7
  143. package/dist/messages/public/categories/list.msg.js.map +1 -1
  144. package/dist/messages/public/comments/create.msg.d.ts +3 -0
  145. package/dist/messages/public/comments/create.msg.d.ts.map +1 -0
  146. package/dist/messages/public/comments/create.msg.js +38 -0
  147. package/dist/messages/public/comments/create.msg.js.map +1 -0
  148. package/dist/messages/public/comments/list.msg.js +20 -4
  149. package/dist/messages/public/comments/list.msg.js.map +1 -1
  150. package/dist/messages/public/comments/recent.msg.js +12 -4
  151. package/dist/messages/public/comments/recent.msg.js.map +1 -1
  152. package/dist/messages/public/friend-links/list.msg.js +3 -7
  153. package/dist/messages/public/friend-links/list.msg.js.map +1 -1
  154. package/dist/messages/public/pages/list.msg.js +3 -7
  155. package/dist/messages/public/pages/list.msg.js.map +1 -1
  156. package/dist/messages/public/pages/read.msg.js +3 -7
  157. package/dist/messages/public/pages/read.msg.js.map +1 -1
  158. package/dist/messages/public/posts/archive.msg.js +3 -7
  159. package/dist/messages/public/posts/archive.msg.js.map +1 -1
  160. package/dist/messages/public/posts/connections.msg.js +3 -7
  161. package/dist/messages/public/posts/connections.msg.js.map +1 -1
  162. package/dist/messages/public/posts/list.msg.js +20 -4
  163. package/dist/messages/public/posts/list.msg.js.map +1 -1
  164. package/dist/messages/public/posts/open.msg.js +12 -4
  165. package/dist/messages/public/posts/open.msg.js.map +1 -1
  166. package/dist/messages/public/posts/read.msg.js +3 -7
  167. package/dist/messages/public/posts/read.msg.js.map +1 -1
  168. package/dist/messages/public/posts/search.msg.d.ts +3 -0
  169. package/dist/messages/public/posts/search.msg.d.ts.map +1 -0
  170. package/dist/messages/public/posts/search.msg.js +4 -0
  171. package/dist/messages/public/posts/search.msg.js.map +1 -0
  172. package/dist/messages/public/posts/set-liked.msg.d.ts +3 -0
  173. package/dist/messages/public/posts/set-liked.msg.d.ts.map +1 -0
  174. package/dist/messages/public/posts/set-liked.msg.js +36 -0
  175. package/dist/messages/public/posts/set-liked.msg.js.map +1 -0
  176. package/dist/messages/public/tags/list.msg.js +3 -7
  177. package/dist/messages/public/tags/list.msg.js.map +1 -1
  178. package/dist/messages/resources/event-catalog.msg.d.ts +3 -0
  179. package/dist/messages/resources/event-catalog.msg.d.ts.map +1 -0
  180. package/dist/messages/resources/event-catalog.msg.js +4 -0
  181. package/dist/messages/resources/event-catalog.msg.js.map +1 -0
  182. package/dist/messages/resources/theme-authoring-contract.msg.d.ts +3 -0
  183. package/dist/messages/resources/theme-authoring-contract.msg.d.ts.map +1 -0
  184. package/dist/messages/resources/theme-authoring-contract.msg.js +4 -0
  185. package/dist/messages/resources/theme-authoring-contract.msg.js.map +1 -0
  186. package/dist/messages/sitemap/entries.msg.d.ts +3 -0
  187. package/dist/messages/sitemap/entries.msg.d.ts.map +1 -0
  188. package/dist/messages/sitemap/entries.msg.js +9 -0
  189. package/dist/messages/sitemap/entries.msg.js.map +1 -0
  190. package/dist/messages/user-context.d.ts +21 -0
  191. package/dist/messages/user-context.d.ts.map +1 -0
  192. package/dist/messages/user-context.js +47 -0
  193. package/dist/messages/user-context.js.map +1 -0
  194. package/dist/migrations/index.d.ts +2 -0
  195. package/dist/migrations/index.d.ts.map +1 -1
  196. package/dist/migrations/index.js +6 -0
  197. package/dist/migrations/index.js.map +1 -1
  198. package/dist/models/blog-resource-documents.d.ts +33 -0
  199. package/dist/models/blog-resource-documents.d.ts.map +1 -0
  200. package/dist/models/blog-resource-documents.js +60 -0
  201. package/dist/models/blog-resource-documents.js.map +1 -0
  202. package/dist/models/management/approve-comment.model.d.ts +23 -0
  203. package/dist/models/management/approve-comment.model.d.ts.map +1 -0
  204. package/dist/models/management/approve-comment.model.js +14 -0
  205. package/dist/models/management/approve-comment.model.js.map +1 -0
  206. package/dist/models/management/archive-page.model.d.ts +21 -0
  207. package/dist/models/management/archive-page.model.d.ts.map +1 -0
  208. package/dist/models/management/archive-page.model.js +14 -0
  209. package/dist/models/management/archive-page.model.js.map +1 -0
  210. package/dist/models/management/archive-post.model.d.ts +28 -0
  211. package/dist/models/management/archive-post.model.d.ts.map +1 -0
  212. package/dist/models/management/archive-post.model.js +14 -0
  213. package/dist/models/management/archive-post.model.js.map +1 -0
  214. package/dist/models/management/audit-post-content.model.d.ts +21 -0
  215. package/dist/models/management/audit-post-content.model.d.ts.map +1 -0
  216. package/dist/models/management/audit-post-content.model.js +12 -0
  217. package/dist/models/management/audit-post-content.model.js.map +1 -0
  218. package/dist/models/management/create-category.model.d.ts +17 -0
  219. package/dist/models/management/create-category.model.d.ts.map +1 -0
  220. package/dist/models/management/create-category.model.js +14 -0
  221. package/dist/models/management/create-category.model.js.map +1 -0
  222. package/dist/models/management/create-friend-link.model.d.ts +19 -0
  223. package/dist/models/management/create-friend-link.model.d.ts.map +1 -0
  224. package/dist/models/management/create-friend-link.model.js +14 -0
  225. package/dist/models/management/create-friend-link.model.js.map +1 -0
  226. package/dist/models/management/create-page.model.d.ts +21 -0
  227. package/dist/models/management/create-page.model.d.ts.map +1 -0
  228. package/dist/models/management/create-page.model.js +14 -0
  229. package/dist/models/management/create-page.model.js.map +1 -0
  230. package/dist/models/management/create-post.model.d.ts +28 -0
  231. package/dist/models/management/create-post.model.d.ts.map +1 -0
  232. package/dist/models/management/create-post.model.js +14 -0
  233. package/dist/models/management/create-post.model.js.map +1 -0
  234. package/dist/models/management/create-tag.model.d.ts +15 -0
  235. package/dist/models/management/create-tag.model.d.ts.map +1 -0
  236. package/dist/models/management/create-tag.model.js +14 -0
  237. package/dist/models/management/create-tag.model.js.map +1 -0
  238. package/dist/models/management/delete-category.model.d.ts +10 -0
  239. package/dist/models/management/delete-category.model.d.ts.map +1 -0
  240. package/dist/models/management/delete-category.model.js +12 -0
  241. package/dist/models/management/delete-category.model.js.map +1 -0
  242. package/dist/models/management/delete-comment.model.d.ts +10 -0
  243. package/dist/models/management/delete-comment.model.d.ts.map +1 -0
  244. package/dist/models/management/delete-comment.model.js +12 -0
  245. package/dist/models/management/delete-comment.model.js.map +1 -0
  246. package/dist/models/management/delete-friend-link.model.d.ts +10 -0
  247. package/dist/models/management/delete-friend-link.model.d.ts.map +1 -0
  248. package/dist/models/management/delete-friend-link.model.js +12 -0
  249. package/dist/models/management/delete-friend-link.model.js.map +1 -0
  250. package/dist/models/management/delete-page.model.d.ts +10 -0
  251. package/dist/models/management/delete-page.model.d.ts.map +1 -0
  252. package/dist/models/management/delete-page.model.js +12 -0
  253. package/dist/models/management/delete-page.model.js.map +1 -0
  254. package/dist/models/management/delete-post.model.d.ts +10 -0
  255. package/dist/models/management/delete-post.model.d.ts.map +1 -0
  256. package/dist/models/management/delete-post.model.js +12 -0
  257. package/dist/models/management/delete-post.model.js.map +1 -0
  258. package/dist/models/management/delete-tag.model.d.ts +10 -0
  259. package/dist/models/management/delete-tag.model.d.ts.map +1 -0
  260. package/dist/models/management/delete-tag.model.js +12 -0
  261. package/dist/models/management/delete-tag.model.js.map +1 -0
  262. package/dist/models/management/disable-friend-link.model.d.ts +19 -0
  263. package/dist/models/management/disable-friend-link.model.d.ts.map +1 -0
  264. package/dist/models/management/disable-friend-link.model.js +14 -0
  265. package/dist/models/management/disable-friend-link.model.js.map +1 -0
  266. package/dist/models/management/enable-friend-link.model.d.ts +19 -0
  267. package/dist/models/management/enable-friend-link.model.d.ts.map +1 -0
  268. package/dist/models/management/enable-friend-link.model.js +14 -0
  269. package/dist/models/management/enable-friend-link.model.js.map +1 -0
  270. package/dist/models/management/list-category.model.d.ts +18 -0
  271. package/dist/models/management/list-category.model.d.ts.map +1 -0
  272. package/dist/models/management/list-category.model.js +13 -0
  273. package/dist/models/management/list-category.model.js.map +1 -0
  274. package/dist/models/management/list-comment.model.d.ts +24 -0
  275. package/dist/models/management/list-comment.model.d.ts.map +1 -0
  276. package/dist/models/management/list-comment.model.js +13 -0
  277. package/dist/models/management/list-comment.model.js.map +1 -0
  278. package/dist/models/management/list-friend-link.model.d.ts +20 -0
  279. package/dist/models/management/list-friend-link.model.d.ts.map +1 -0
  280. package/dist/models/management/list-friend-link.model.js +16 -0
  281. package/dist/models/management/list-friend-link.model.js.map +1 -0
  282. package/dist/models/management/list-page.model.d.ts +22 -0
  283. package/dist/models/management/list-page.model.d.ts.map +1 -0
  284. package/dist/models/management/list-page.model.js +13 -0
  285. package/dist/models/management/list-page.model.js.map +1 -0
  286. package/dist/models/management/list-post-archive.model.d.ts +30 -0
  287. package/dist/models/management/list-post-archive.model.d.ts.map +1 -0
  288. package/dist/models/management/list-post-archive.model.js +32 -0
  289. package/dist/models/management/list-post-archive.model.js.map +1 -0
  290. package/dist/models/management/list-post.model.d.ts +29 -0
  291. package/dist/models/management/list-post.model.d.ts.map +1 -0
  292. package/dist/models/management/list-post.model.js +13 -0
  293. package/dist/models/management/list-post.model.js.map +1 -0
  294. package/dist/models/management/list-tag.model.d.ts +16 -0
  295. package/dist/models/management/list-tag.model.d.ts.map +1 -0
  296. package/dist/models/management/list-tag.model.js +13 -0
  297. package/dist/models/management/list-tag.model.js.map +1 -0
  298. package/dist/models/management/list-theme.model.d.ts +3 -0
  299. package/dist/models/management/list-theme.model.d.ts.map +1 -0
  300. package/dist/models/management/list-theme.model.js +12 -0
  301. package/dist/models/management/list-theme.model.js.map +1 -0
  302. package/dist/models/management/publish-page.model.d.ts +21 -0
  303. package/dist/models/management/publish-page.model.d.ts.map +1 -0
  304. package/dist/models/management/publish-page.model.js +14 -0
  305. package/dist/models/management/publish-page.model.js.map +1 -0
  306. package/dist/models/management/publish-post.model.d.ts +28 -0
  307. package/dist/models/management/publish-post.model.d.ts.map +1 -0
  308. package/dist/models/management/publish-post.model.js +14 -0
  309. package/dist/models/management/publish-post.model.js.map +1 -0
  310. package/dist/models/management/read-category.model.d.ts +17 -0
  311. package/dist/models/management/read-category.model.d.ts.map +1 -0
  312. package/dist/models/management/read-category.model.js +14 -0
  313. package/dist/models/management/read-category.model.js.map +1 -0
  314. package/dist/models/management/read-comment.model.d.ts +23 -0
  315. package/dist/models/management/read-comment.model.d.ts.map +1 -0
  316. package/dist/models/management/read-comment.model.js +14 -0
  317. package/dist/models/management/read-comment.model.js.map +1 -0
  318. package/dist/models/management/read-friend-link.model.d.ts +19 -0
  319. package/dist/models/management/read-friend-link.model.d.ts.map +1 -0
  320. package/dist/models/management/read-friend-link.model.js +14 -0
  321. package/dist/models/management/read-friend-link.model.js.map +1 -0
  322. package/dist/models/management/read-page.model.d.ts +21 -0
  323. package/dist/models/management/read-page.model.d.ts.map +1 -0
  324. package/dist/models/management/read-page.model.js +14 -0
  325. package/dist/models/management/read-page.model.js.map +1 -0
  326. package/dist/models/management/read-post.model.d.ts +28 -0
  327. package/dist/models/management/read-post.model.d.ts.map +1 -0
  328. package/dist/models/management/read-post.model.js +14 -0
  329. package/dist/models/management/read-post.model.js.map +1 -0
  330. package/dist/models/management/read-tag.model.d.ts +15 -0
  331. package/dist/models/management/read-tag.model.d.ts.map +1 -0
  332. package/dist/models/management/read-tag.model.js +14 -0
  333. package/dist/models/management/read-tag.model.js.map +1 -0
  334. package/dist/models/management/read-theme-selection.model.d.ts +8 -0
  335. package/dist/models/management/read-theme-selection.model.d.ts.map +1 -0
  336. package/dist/models/management/read-theme-selection.model.js +12 -0
  337. package/dist/models/management/read-theme-selection.model.js.map +1 -0
  338. package/dist/models/management/read-theme-status.model.d.ts +3 -0
  339. package/dist/models/management/read-theme-status.model.d.ts.map +1 -0
  340. package/dist/models/management/read-theme-status.model.js +14 -0
  341. package/dist/models/management/read-theme-status.model.js.map +1 -0
  342. package/dist/models/management/reject-comment.model.d.ts +23 -0
  343. package/dist/models/management/reject-comment.model.d.ts.map +1 -0
  344. package/dist/models/management/reject-comment.model.js +14 -0
  345. package/dist/models/management/reject-comment.model.js.map +1 -0
  346. package/dist/models/management/reply-comment.model.d.ts +23 -0
  347. package/dist/models/management/reply-comment.model.d.ts.map +1 -0
  348. package/dist/models/management/reply-comment.model.js +18 -0
  349. package/dist/models/management/reply-comment.model.js.map +1 -0
  350. package/dist/models/management/search-post.model.d.ts +27 -0
  351. package/dist/models/management/search-post.model.d.ts.map +1 -0
  352. package/dist/models/management/search-post.model.js +18 -0
  353. package/dist/models/management/search-post.model.js.map +1 -0
  354. package/dist/models/management/select-theme.model.d.ts +3 -0
  355. package/dist/models/management/select-theme.model.d.ts.map +1 -0
  356. package/dist/models/management/select-theme.model.js +16 -0
  357. package/dist/models/management/select-theme.model.js.map +1 -0
  358. package/dist/models/management/update-category.model.d.ts +17 -0
  359. package/dist/models/management/update-category.model.d.ts.map +1 -0
  360. package/dist/models/management/update-category.model.js +16 -0
  361. package/dist/models/management/update-category.model.js.map +1 -0
  362. package/dist/models/management/update-friend-link.model.d.ts +19 -0
  363. package/dist/models/management/update-friend-link.model.d.ts.map +1 -0
  364. package/dist/models/management/update-friend-link.model.js +16 -0
  365. package/dist/models/management/update-friend-link.model.js.map +1 -0
  366. package/dist/models/management/update-page.model.d.ts +21 -0
  367. package/dist/models/management/update-page.model.d.ts.map +1 -0
  368. package/dist/models/management/update-page.model.js +16 -0
  369. package/dist/models/management/update-page.model.js.map +1 -0
  370. package/dist/models/management/update-post.model.d.ts +28 -0
  371. package/dist/models/management/update-post.model.d.ts.map +1 -0
  372. package/dist/models/management/update-post.model.js +16 -0
  373. package/dist/models/management/update-post.model.js.map +1 -0
  374. package/dist/models/management/update-tag.model.d.ts +15 -0
  375. package/dist/models/management/update-tag.model.d.ts.map +1 -0
  376. package/dist/models/management/update-tag.model.js +16 -0
  377. package/dist/models/management/update-tag.model.js.map +1 -0
  378. package/dist/models/management-projection.d.ts +97 -0
  379. package/dist/models/management-projection.d.ts.map +1 -0
  380. package/dist/models/management-projection.js +76 -0
  381. package/dist/models/management-projection.js.map +1 -0
  382. package/dist/models/public/create-comment.model.d.ts +24 -0
  383. package/dist/models/public/create-comment.model.d.ts.map +1 -0
  384. package/dist/models/public/create-comment.model.js +12 -0
  385. package/dist/models/public/create-comment.model.js.map +1 -0
  386. package/dist/models/public/list-categories.model.d.ts +14 -0
  387. package/dist/models/public/list-categories.model.d.ts.map +1 -0
  388. package/dist/models/public/list-categories.model.js +11 -0
  389. package/dist/models/public/list-categories.model.js.map +1 -0
  390. package/dist/models/public/list-comments.model.d.ts +13 -0
  391. package/dist/models/public/list-comments.model.d.ts.map +1 -0
  392. package/dist/models/public/list-comments.model.js +16 -0
  393. package/dist/models/public/list-comments.model.js.map +1 -0
  394. package/dist/models/public/list-friend-links.model.d.ts +14 -0
  395. package/dist/models/public/list-friend-links.model.d.ts.map +1 -0
  396. package/dist/models/public/list-friend-links.model.js +11 -0
  397. package/dist/models/public/list-friend-links.model.js.map +1 -0
  398. package/dist/models/public/list-pages.model.d.ts +16 -0
  399. package/dist/models/public/list-pages.model.d.ts.map +1 -0
  400. package/dist/models/public/list-pages.model.js +11 -0
  401. package/dist/models/public/list-pages.model.js.map +1 -0
  402. package/dist/models/public/list-post-archive.model.d.ts +36 -0
  403. package/dist/models/public/list-post-archive.model.d.ts.map +1 -0
  404. package/dist/models/public/list-post-archive.model.js +11 -0
  405. package/dist/models/public/list-post-archive.model.js.map +1 -0
  406. package/dist/models/public/list-posts.model.d.ts +31 -0
  407. package/dist/models/public/list-posts.model.d.ts.map +1 -0
  408. package/dist/models/public/list-posts.model.js +17 -0
  409. package/dist/models/public/list-posts.model.js.map +1 -0
  410. package/dist/models/public/list-recent-comments.model.d.ts +10 -0
  411. package/dist/models/public/list-recent-comments.model.d.ts.map +1 -0
  412. package/dist/models/public/list-recent-comments.model.js +15 -0
  413. package/dist/models/public/list-recent-comments.model.js.map +1 -0
  414. package/dist/models/public/list-tags.model.d.ts +11 -0
  415. package/dist/models/public/list-tags.model.d.ts.map +1 -0
  416. package/dist/models/public/list-tags.model.js +11 -0
  417. package/dist/models/public/list-tags.model.js.map +1 -0
  418. package/dist/models/public/open-post.model.d.ts +38 -0
  419. package/dist/models/public/open-post.model.d.ts.map +1 -0
  420. package/dist/models/public/open-post.model.js +13 -0
  421. package/dist/models/public/open-post.model.js.map +1 -0
  422. package/dist/models/public/project-comments.model.d.ts +27 -0
  423. package/dist/models/public/project-comments.model.d.ts.map +1 -0
  424. package/dist/models/public/project-comments.model.js +12 -0
  425. package/dist/models/public/project-comments.model.js.map +1 -0
  426. package/dist/models/public/project-recent-comments.model.d.ts +31 -0
  427. package/dist/models/public/project-recent-comments.model.d.ts.map +1 -0
  428. package/dist/models/public/project-recent-comments.model.js +12 -0
  429. package/dist/models/public/project-recent-comments.model.js.map +1 -0
  430. package/dist/models/public/public-model-inputs.d.ts +99 -0
  431. package/dist/models/public/public-model-inputs.d.ts.map +1 -0
  432. package/dist/models/public/public-model-inputs.js +102 -0
  433. package/dist/models/public/public-model-inputs.js.map +1 -0
  434. package/dist/models/public/read-page.model.d.ts +22 -0
  435. package/dist/models/public/read-page.model.d.ts.map +1 -0
  436. package/dist/models/public/read-page.model.js +12 -0
  437. package/dist/models/public/read-page.model.js.map +1 -0
  438. package/dist/models/public/read-post-connections.model.d.ts +76 -0
  439. package/dist/models/public/read-post-connections.model.d.ts.map +1 -0
  440. package/dist/models/public/read-post-connections.model.js +12 -0
  441. package/dist/models/public/read-post-connections.model.js.map +1 -0
  442. package/dist/models/public/read-post.model.d.ts +33 -0
  443. package/dist/models/public/read-post.model.d.ts.map +1 -0
  444. package/dist/models/public/read-post.model.js +12 -0
  445. package/dist/models/public/read-post.model.js.map +1 -0
  446. package/dist/models/public/search-posts.model.d.ts +29 -0
  447. package/dist/models/public/search-posts.model.d.ts.map +1 -0
  448. package/dist/models/public/search-posts.model.js +11 -0
  449. package/dist/models/public/search-posts.model.js.map +1 -0
  450. package/dist/models/public/set-post-liked.model.d.ts +10 -0
  451. package/dist/models/public/set-post-liked.model.d.ts.map +1 -0
  452. package/dist/models/public/set-post-liked.model.js +12 -0
  453. package/dist/models/public/set-post-liked.model.js.map +1 -0
  454. package/dist/models/read-event-catalog.model.d.ts +3 -0
  455. package/dist/models/read-event-catalog.model.d.ts.map +1 -0
  456. package/dist/models/read-event-catalog.model.js +9 -0
  457. package/dist/models/read-event-catalog.model.js.map +1 -0
  458. package/dist/models/read-theme-authoring-contract.model.d.ts +33 -0
  459. package/dist/models/read-theme-authoring-contract.model.d.ts.map +1 -0
  460. package/dist/models/read-theme-authoring-contract.model.js +9 -0
  461. package/dist/models/read-theme-authoring-contract.model.js.map +1 -0
  462. package/dist/persistence/category-store.d.ts.map +1 -1
  463. package/dist/persistence/category-store.js +28 -11
  464. package/dist/persistence/category-store.js.map +1 -1
  465. package/dist/persistence/comment-store.d.ts.map +1 -1
  466. package/dist/persistence/comment-store.js +61 -20
  467. package/dist/persistence/comment-store.js.map +1 -1
  468. package/dist/persistence/entities.d.ts.map +1 -1
  469. package/dist/persistence/entities.js +15 -3
  470. package/dist/persistence/entities.js.map +1 -1
  471. package/dist/persistence/friend-link-store.d.ts.map +1 -1
  472. package/dist/persistence/friend-link-store.js +24 -7
  473. package/dist/persistence/friend-link-store.js.map +1 -1
  474. package/dist/persistence/page-store.d.ts +12 -0
  475. package/dist/persistence/page-store.d.ts.map +1 -1
  476. package/dist/persistence/page-store.js +33 -0
  477. package/dist/persistence/page-store.js.map +1 -1
  478. package/dist/persistence/post-store.d.ts +12 -0
  479. package/dist/persistence/post-store.d.ts.map +1 -1
  480. package/dist/persistence/post-store.js +240 -62
  481. package/dist/persistence/post-store.js.map +1 -1
  482. package/dist/persistence/tag-store.d.ts.map +1 -1
  483. package/dist/persistence/tag-store.js +23 -8
  484. package/dist/persistence/tag-store.js.map +1 -1
  485. package/dist/services/blog-runtime.service.d.ts +4 -4
  486. package/dist/services/blog-runtime.service.d.ts.map +1 -1
  487. package/dist/services/blog-runtime.service.js +10 -15
  488. package/dist/services/blog-runtime.service.js.map +1 -1
  489. package/dist/services/blog.boot.d.ts +1 -1
  490. package/dist/services/blog.boot.js +4 -4
  491. package/dist/services/blog.boot.js.map +1 -1
  492. package/dist/services/database.service.js +18 -3
  493. package/dist/services/database.service.js.map +1 -1
  494. package/dist/services/mcp-provider.service.js +3 -6
  495. package/dist/services/mcp-provider.service.js.map +1 -1
  496. package/dist/services/sitemap-provider.service.d.ts +4 -0
  497. package/dist/services/sitemap-provider.service.d.ts.map +1 -0
  498. package/dist/services/sitemap-provider.service.js +25 -0
  499. package/dist/services/sitemap-provider.service.js.map +1 -0
  500. package/dist/sitemap/blog-sitemap-provider.d.ts +34 -0
  501. package/dist/sitemap/blog-sitemap-provider.d.ts.map +1 -0
  502. package/dist/sitemap/blog-sitemap-provider.js +116 -0
  503. package/dist/sitemap/blog-sitemap-provider.js.map +1 -0
  504. package/dist/themes/theme-catalog.d.ts.map +1 -1
  505. package/dist/themes/theme-catalog.js +43 -26
  506. package/dist/themes/theme-catalog.js.map +1 -1
  507. package/dist/themes/theme-control.d.ts.map +1 -1
  508. package/dist/themes/theme-control.js +17 -7
  509. package/dist/themes/theme-control.js.map +1 -1
  510. package/dist/themes/theme-discovery-runtime.d.ts.map +1 -1
  511. package/dist/themes/theme-discovery-runtime.js +17 -7
  512. package/dist/themes/theme-discovery-runtime.js.map +1 -1
  513. package/dist/themes/theme-generation-store.d.ts.map +1 -1
  514. package/dist/themes/theme-generation-store.js +10 -5
  515. package/dist/themes/theme-generation-store.js.map +1 -1
  516. package/dist/themes/theme-selection-publisher.d.ts.map +1 -1
  517. package/dist/themes/theme-selection-publisher.js +11 -5
  518. package/dist/themes/theme-selection-publisher.js.map +1 -1
  519. package/package.json +23 -20
  520. package/dist/blog/micro-user-directory.d.ts +0 -11
  521. package/dist/blog/micro-user-directory.d.ts.map +0 -1
  522. package/dist/blog/micro-user-directory.js +0 -18
  523. package/dist/blog/micro-user-directory.js.map +0 -1
  524. package/dist/blog/public-blog-micro.d.ts +0 -291
  525. package/dist/blog/public-blog-micro.d.ts.map +0 -1
  526. package/dist/blog/public-blog-micro.js +0 -71
  527. package/dist/blog/public-blog-micro.js.map +0 -1
  528. package/dist/browser-api/dispatch-stream.d.ts +0 -5
  529. package/dist/browser-api/dispatch-stream.d.ts.map +0 -1
  530. package/dist/browser-api/dispatch-stream.js +0 -4
  531. package/dist/browser-api/dispatch-stream.js.map +0 -1
  532. package/dist/browser-api/dispatcher.d.ts +0 -15
  533. package/dist/browser-api/dispatcher.d.ts.map +0 -1
  534. package/dist/browser-api/dispatcher.js +0 -145
  535. package/dist/browser-api/dispatcher.js.map +0 -1
  536. package/dist/browser-api/provider-publisher.d.ts +0 -24
  537. package/dist/browser-api/provider-publisher.d.ts.map +0 -1
  538. package/dist/browser-api/provider-publisher.js +0 -107
  539. package/dist/browser-api/provider-publisher.js.map +0 -1
  540. package/dist/messages/browser/dispatch.msg.d.ts.map +0 -1
  541. package/dist/messages/browser/dispatch.msg.js +0 -9
  542. package/dist/messages/browser/dispatch.msg.js.map +0 -1
  543. package/dist/services/browser-api-provider.service.d.ts +0 -4
  544. package/dist/services/browser-api-provider.service.d.ts.map +0 -1
  545. package/dist/services/browser-api-provider.service.js +0 -25
  546. package/dist/services/browser-api-provider.service.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"page-store.js","sourceRoot":"","sources":["../../src/persistence/page-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"page-store.js","sourceRoot":"","sources":["../../src/persistence/page-store.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,11 @@ export interface PostInput {
13
13
  export interface PostView extends BlogPostRow {
14
14
  readonly tags: readonly BlogTagRow[];
15
15
  }
16
+ export interface PublishedPostReference {
17
+ readonly id: string;
18
+ readonly slug: string;
19
+ readonly updatedAt: Date;
20
+ }
16
21
  export interface PostConnections {
17
22
  readonly previousPost: PostView | null;
18
23
  readonly nextPost: PostView | null;
@@ -55,6 +60,13 @@ export declare class PostStore {
55
60
  nextCursor: string | null;
56
61
  total: number;
57
62
  }>;
63
+ listPublishedReferences(input: {
64
+ readonly limit: number;
65
+ readonly cursor?: string;
66
+ }, signal?: AbortSignal): Promise<Readonly<{
67
+ items: readonly PublishedPostReference[];
68
+ nextCursor: string | null;
69
+ }>>;
58
70
  listPublishedArchive(options: {
59
71
  limit: number;
60
72
  monthLimit: number;
@@ -1 +1 @@
1
- {"version":3,"file":"post-store.d.ts","sourceRoot":"","sources":["../../src/persistence/post-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"post-store.d.ts","sourceRoot":"","sources":["../../src/persistence/post-store.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { And, Equal, ILike, In, LessThan, MoreThan, MoreThanOrEqual } from 'typeorm';
2
- import { BlogConflictError, BlogCursorError, BlogNotFoundError, PostContentBlockedError } from '../blog/errors.js';
1
+ import { And, Equal, ILike, In, LessThan, MoreThan, MoreThanOrEqual, } from 'typeorm';
2
+ import { BlogConflictError, BlogCursorError, BlogNotFoundError, PostContentBlockedError, } from '../blog/errors.js';
3
3
  import { auditPostContent } from '../blog/post-content-audit.js';
4
4
  import { buildBlogPostArchivedEvent, buildBlogPostPublicationUpdatedEvent, buildBlogPostPublishedEvent, } from '../events/blog-domain-events.js';
5
5
  import { BlogCategoryEntity, BlogPostEntity, BlogPostTagEntity, BlogTagEntity, } from './entities.js';
@@ -15,7 +15,8 @@ export class PostStore {
15
15
  }
16
16
  async countPublishedByCategory(signal) {
17
17
  signal?.throwIfAborted();
18
- const rows = await this.dataSource.getRepository(BlogPostEntity)
18
+ const rows = await this.dataSource
19
+ .getRepository(BlogPostEntity)
19
20
  .createQueryBuilder('post')
20
21
  .select('post.categoryId', 'categoryId')
21
22
  .addSelect('COUNT(post.id)', 'postCount')
@@ -23,44 +24,75 @@ export class PostStore {
23
24
  .groupBy('post.categoryId')
24
25
  .getRawMany();
25
26
  signal?.throwIfAborted();
26
- return new Map(rows.map(({ categoryId, postCount }) => [categoryId, parsePostCount(postCount)]));
27
+ return new Map(rows.map(({ categoryId, postCount }) => [
28
+ categoryId,
29
+ parsePostCount(postCount),
30
+ ]));
27
31
  }
28
32
  async list(input, signal) {
29
33
  signal?.throwIfAborted();
30
- const base = { ...(input.status ? { status: input.status } : {}), ...(input.categoryId ? { categoryId: input.categoryId } : {}) };
31
- const cursor = input.cursor ? await this.dataSource.getRepository(BlogPostEntity).findOne({ where: { id: input.cursor, ...base } }) : undefined;
34
+ const base = {
35
+ ...(input.status ? { status: input.status } : {}),
36
+ ...(input.categoryId ? { categoryId: input.categoryId } : {}),
37
+ };
38
+ const cursor = input.cursor
39
+ ? await this.dataSource
40
+ .getRepository(BlogPostEntity)
41
+ .findOne({ where: { id: input.cursor, ...base } })
42
+ : undefined;
32
43
  signal?.throwIfAborted();
33
44
  if (input.cursor && !cursor)
34
45
  throw new BlogCursorError('Post cursor not found in current filter');
35
46
  const where = cursor
36
- ? [{ ...base, createdAt: LessThan(cursor.createdAt) }, { ...base, createdAt: Equal(cursor.createdAt), id: LessThan(cursor.id) }]
47
+ ? [
48
+ { ...base, createdAt: LessThan(cursor.createdAt) },
49
+ {
50
+ ...base,
51
+ createdAt: Equal(cursor.createdAt),
52
+ id: LessThan(cursor.id),
53
+ },
54
+ ]
37
55
  : base;
38
- const posts = await this.dataSource.getRepository(BlogPostEntity).find({ where, order: { createdAt: 'DESC', id: 'DESC' }, take: input.limit + 1 });
56
+ const posts = await this.dataSource
57
+ .getRepository(BlogPostEntity)
58
+ .find({
59
+ where,
60
+ order: { createdAt: 'DESC', id: 'DESC' },
61
+ take: input.limit + 1,
62
+ });
39
63
  signal?.throwIfAborted();
40
64
  const hasMore = posts.length > input.limit;
41
65
  const bounded = hasMore ? posts.slice(0, input.limit) : posts;
42
- return { items: await this.withTags(bounded, this.dataSource.manager, signal), nextCursor: hasMore ? bounded.at(-1)?.id ?? null : null };
66
+ return {
67
+ items: await this.withTags(bounded, this.dataSource.manager, signal),
68
+ nextCursor: hasMore ? (bounded.at(-1)?.id ?? null) : null,
69
+ };
43
70
  }
44
71
  async listPublished(options, signal) {
45
72
  signal?.throwIfAborted();
46
73
  let categoryId;
47
74
  let tagId;
48
75
  if (options.categorySlug) {
49
- const category = await this.dataSource.getRepository(BlogCategoryEntity).findOneBy({ slug: options.categorySlug });
76
+ const category = await this.dataSource
77
+ .getRepository(BlogCategoryEntity)
78
+ .findOneBy({ slug: options.categorySlug });
50
79
  signal?.throwIfAborted();
51
80
  if (!category)
52
81
  return { items: [], nextCursor: null, total: 0 };
53
82
  categoryId = category.id;
54
83
  }
55
84
  if (options.tagSlug) {
56
- const tag = await this.dataSource.getRepository(BlogTagEntity).findOneBy({ slug: options.tagSlug });
85
+ const tag = await this.dataSource
86
+ .getRepository(BlogTagEntity)
87
+ .findOneBy({ slug: options.tagSlug });
57
88
  signal?.throwIfAborted();
58
89
  if (!tag)
59
90
  return { items: [], nextCursor: null, total: 0 };
60
91
  tagId = tag.id;
61
92
  }
62
93
  const base = {
63
- status: 'published', ...(categoryId ? { categoryId } : {}),
94
+ status: 'published',
95
+ ...(categoryId ? { categoryId } : {}),
64
96
  ...(tagId ? { postTags: { tagId } } : {}),
65
97
  };
66
98
  const repository = this.dataSource.getRepository(BlogPostEntity);
@@ -76,7 +108,9 @@ export class PostStore {
76
108
  signal?.throwIfAborted();
77
109
  return {
78
110
  items: await this.withTags(posts, this.dataSource.manager, signal),
79
- nextCursor: options.page * options.limit < total ? posts.at(-1)?.id ?? null : null,
111
+ nextCursor: options.page * options.limit < total
112
+ ? (posts.at(-1)?.id ?? null)
113
+ : null,
80
114
  total,
81
115
  };
82
116
  }
@@ -91,16 +125,69 @@ export class PostStore {
91
125
  const where = cursor?.publishedAt
92
126
  ? [
93
127
  { ...base, publishedAt: LessThan(cursor.publishedAt) },
94
- { ...base, publishedAt: Equal(cursor.publishedAt), id: LessThan(cursor.id) },
128
+ {
129
+ ...base,
130
+ publishedAt: Equal(cursor.publishedAt),
131
+ id: LessThan(cursor.id),
132
+ },
95
133
  ]
96
134
  : base;
97
135
  const posts = await repository.find({
98
- where, order: { publishedAt: 'DESC', id: 'DESC' }, take: options.limit + 1,
136
+ where,
137
+ order: { publishedAt: 'DESC', id: 'DESC' },
138
+ take: options.limit + 1,
99
139
  });
100
140
  signal?.throwIfAborted();
101
141
  const hasMore = posts.length > options.limit;
102
142
  const bounded = hasMore ? posts.slice(0, options.limit) : posts;
103
- return { items: await this.withTags(bounded, this.dataSource.manager, signal), nextCursor: hasMore ? bounded.at(-1)?.id ?? null : null, total };
143
+ return {
144
+ items: await this.withTags(bounded, this.dataSource.manager, signal),
145
+ nextCursor: hasMore ? (bounded.at(-1)?.id ?? null) : null,
146
+ total,
147
+ };
148
+ }
149
+ async listPublishedReferences(input, signal) {
150
+ signal?.throwIfAborted();
151
+ const repository = this.dataSource.getRepository(BlogPostEntity);
152
+ const cursor = input.cursor
153
+ ? await repository.findOne({
154
+ select: { id: true, publishedAt: true },
155
+ where: { id: input.cursor, status: 'published' },
156
+ })
157
+ : undefined;
158
+ signal?.throwIfAborted();
159
+ if (input.cursor && !cursor)
160
+ throw new BlogCursorError('Post cursor not found in current filter');
161
+ if (cursor && !cursor.publishedAt)
162
+ throw new Error('Published post cursor is incomplete');
163
+ const base = { status: 'published' };
164
+ const where = cursor
165
+ ? [
166
+ { ...base, publishedAt: LessThan(cursor.publishedAt) },
167
+ {
168
+ ...base,
169
+ publishedAt: Equal(cursor.publishedAt),
170
+ id: LessThan(cursor.id),
171
+ },
172
+ ]
173
+ : base;
174
+ const rows = await repository.find({
175
+ select: { id: true, slug: true, updatedAt: true, publishedAt: true },
176
+ where,
177
+ order: { publishedAt: 'DESC', id: 'DESC' },
178
+ take: input.limit + 1,
179
+ });
180
+ signal?.throwIfAborted();
181
+ const hasMore = rows.length > input.limit;
182
+ const bounded = hasMore ? rows.slice(0, input.limit) : rows;
183
+ return {
184
+ items: bounded.map(({ id, slug, updatedAt }) => ({
185
+ id,
186
+ slug,
187
+ updatedAt,
188
+ })),
189
+ nextCursor: hasMore ? (bounded.at(-1)?.id ?? null) : null,
190
+ };
104
191
  }
105
192
  async listPublishedArchive(options, signal) {
106
193
  signal?.throwIfAborted();
@@ -136,7 +223,9 @@ export class PostStore {
136
223
  return {
137
224
  items: await this.withTags(posts, this.dataSource.manager, signal),
138
225
  months,
139
- nextCursor: options.page * options.limit < total ? posts.at(-1)?.id ?? null : null,
226
+ nextCursor: options.page * options.limit < total
227
+ ? (posts.at(-1)?.id ?? null)
228
+ : null,
140
229
  total,
141
230
  };
142
231
  }
@@ -156,11 +245,17 @@ export class PostStore {
156
245
  ? And(publishedAt, LessThan(cursor.publishedAt))
157
246
  : LessThan(cursor.publishedAt),
158
247
  },
159
- { ...base, publishedAt: Equal(cursor.publishedAt), id: LessThan(cursor.id) },
248
+ {
249
+ ...base,
250
+ publishedAt: Equal(cursor.publishedAt),
251
+ id: LessThan(cursor.id),
252
+ },
160
253
  ]
161
254
  : base;
162
255
  const posts = await repository.find({
163
- where, order: { publishedAt: 'DESC', id: 'DESC' }, take: options.limit + 1,
256
+ where,
257
+ order: { publishedAt: 'DESC', id: 'DESC' },
258
+ take: options.limit + 1,
164
259
  });
165
260
  signal?.throwIfAborted();
166
261
  const hasMore = posts.length > options.limit;
@@ -168,7 +263,7 @@ export class PostStore {
168
263
  return {
169
264
  items: await this.withTags(bounded, this.dataSource.manager, signal),
170
265
  months,
171
- nextCursor: hasMore ? bounded.at(-1)?.id ?? null : null,
266
+ nextCursor: hasMore ? (bounded.at(-1)?.id ?? null) : null,
172
267
  total,
173
268
  };
174
269
  }
@@ -190,7 +285,9 @@ export class PostStore {
190
285
  }
191
286
  async read(id, signal) {
192
287
  signal?.throwIfAborted();
193
- const post = await this.dataSource.getRepository(BlogPostEntity).findOneBy({ id });
288
+ const post = await this.dataSource
289
+ .getRepository(BlogPostEntity)
290
+ .findOneBy({ id });
194
291
  signal?.throwIfAborted();
195
292
  if (!post)
196
293
  throw new BlogNotFoundError('Post not found');
@@ -198,9 +295,13 @@ export class PostStore {
198
295
  }
199
296
  async readPublishedBySlug(slug, signal) {
200
297
  signal?.throwIfAborted();
201
- const post = await this.dataSource.getRepository(BlogPostEntity).findOneBy({ slug, status: 'published' });
298
+ const post = await this.dataSource
299
+ .getRepository(BlogPostEntity)
300
+ .findOneBy({ slug, status: 'published' });
202
301
  signal?.throwIfAborted();
203
- return post ? (await this.withTags([post], this.dataSource.manager, signal))[0] : undefined;
302
+ return post
303
+ ? (await this.withTags([post], this.dataSource.manager, signal))[0]
304
+ : undefined;
204
305
  }
205
306
  async readPublishedByIds(ids, signal) {
206
307
  signal?.throwIfAborted();
@@ -222,7 +323,11 @@ export class PostStore {
222
323
  const previous = await repository.find({
223
324
  where: [
224
325
  { status: 'published', publishedAt: LessThan(current.publishedAt) },
225
- { status: 'published', publishedAt: Equal(current.publishedAt), id: LessThan(current.id) },
326
+ {
327
+ status: 'published',
328
+ publishedAt: Equal(current.publishedAt),
329
+ id: LessThan(current.id),
330
+ },
226
331
  ],
227
332
  order: { publishedAt: 'DESC', id: 'DESC' },
228
333
  take: 1,
@@ -231,7 +336,11 @@ export class PostStore {
231
336
  const next = await repository.find({
232
337
  where: [
233
338
  { status: 'published', publishedAt: MoreThan(current.publishedAt) },
234
- { status: 'published', publishedAt: Equal(current.publishedAt), id: MoreThan(current.id) },
339
+ {
340
+ status: 'published',
341
+ publishedAt: Equal(current.publishedAt),
342
+ id: MoreThan(current.id),
343
+ },
235
344
  ],
236
345
  order: { publishedAt: 'ASC', id: 'ASC' },
237
346
  take: 1,
@@ -241,14 +350,13 @@ export class PostStore {
241
350
  ? await this.listRelated(current.id, relatedLimit, signal)
242
351
  : [];
243
352
  signal?.throwIfAborted();
244
- const adjacentPosts = await this.withTags([
245
- ...(previous[0] ? [previous[0]] : []),
246
- ...(next[0] ? [next[0]] : []),
247
- ], this.dataSource.manager, signal);
353
+ const adjacentPosts = await this.withTags([...(previous[0] ? [previous[0]] : []), ...(next[0] ? [next[0]] : [])], this.dataSource.manager, signal);
248
354
  const adjacentById = new Map(adjacentPosts.map((post) => [post.id, post]));
249
355
  return {
250
- previousPost: previous[0] ? adjacentById.get(previous[0].id) ?? null : null,
251
- nextPost: next[0] ? adjacentById.get(next[0].id) ?? null : null,
356
+ previousPost: previous[0]
357
+ ? (adjacentById.get(previous[0].id) ?? null)
358
+ : null,
359
+ nextPost: next[0] ? (adjacentById.get(next[0].id) ?? null) : null,
252
360
  relatedPosts: related,
253
361
  };
254
362
  }
@@ -259,7 +367,10 @@ export class PostStore {
259
367
  signal?.throwIfAborted();
260
368
  const repository = manager.getRepository(BlogPostEntity);
261
369
  const post = await repository.save(repository.create({
262
- ...withoutTagIds(input), status: 'draft', publishedAt: null, viewCount: 0,
370
+ ...withoutTagIds(input),
371
+ status: 'draft',
372
+ publishedAt: null,
373
+ viewCount: 0,
263
374
  }));
264
375
  signal?.throwIfAborted();
265
376
  await this.replaceTags(manager, post.id, input.tagIds, signal);
@@ -271,7 +382,8 @@ export class PostStore {
271
382
  signal?.throwIfAborted();
272
383
  const result = await this.dataSource.transaction(async (manager) => {
273
384
  const current = await manager.getRepository(BlogPostEntity).findOne({
274
- where: { id }, lock: { mode: 'pessimistic_write' },
385
+ where: { id },
386
+ lock: { mode: 'pessimistic_write' },
275
387
  });
276
388
  signal?.throwIfAborted();
277
389
  if (!current)
@@ -285,11 +397,15 @@ export class PostStore {
285
397
  if (!changedFields.length)
286
398
  return { value: currentView };
287
399
  const occurredAt = this.clock();
288
- await manager.getRepository(BlogPostEntity).update({ id }, { ...withoutTagIds(input), updatedAt: occurredAt });
400
+ await manager
401
+ .getRepository(BlogPostEntity)
402
+ .update({ id }, { ...withoutTagIds(input), updatedAt: occurredAt });
289
403
  signal?.throwIfAborted();
290
404
  await this.replaceTags(manager, id, input.tagIds, signal);
291
405
  signal?.throwIfAborted();
292
- const post = await manager.getRepository(BlogPostEntity).findOneByOrFail({ id });
406
+ const post = await manager
407
+ .getRepository(BlogPostEntity)
408
+ .findOneByOrFail({ id });
293
409
  signal?.throwIfAborted();
294
410
  const updated = (await this.withTags([post], manager, signal))[0];
295
411
  const event = current.status === 'published'
@@ -305,22 +421,34 @@ export class PostStore {
305
421
  signal?.throwIfAborted();
306
422
  const result = await this.dataSource.transaction(async (manager) => {
307
423
  const repository = manager.getRepository(BlogPostEntity);
308
- const post = await repository.findOne({ where: { id }, lock: { mode: 'pessimistic_write' } });
424
+ const post = await repository.findOne({
425
+ where: { id },
426
+ lock: { mode: 'pessimistic_write' },
427
+ });
309
428
  signal?.throwIfAborted();
310
429
  if (!post)
311
430
  throw new BlogNotFoundError('Post not found');
312
431
  assertPublishableContent(post);
313
432
  if (post.status !== 'published') {
314
433
  const occurredAt = this.clock();
315
- await repository.update({ id }, { status: 'published', publishedAt: occurredAt, updatedAt: occurredAt });
434
+ await repository.update({ id }, {
435
+ status: 'published',
436
+ publishedAt: occurredAt,
437
+ updatedAt: occurredAt,
438
+ });
316
439
  signal?.throwIfAborted();
317
440
  const updated = await repository.findOneByOrFail({ id });
318
441
  const view = (await this.withTags([updated], manager, signal))[0];
319
- return { value: view, event: await buildBlogPostPublishedEvent(manager, view, occurredAt) };
442
+ return {
443
+ value: view,
444
+ event: await buildBlogPostPublishedEvent(manager, view, occurredAt),
445
+ };
320
446
  }
321
447
  const updated = await repository.findOneByOrFail({ id });
322
448
  signal?.throwIfAborted();
323
- return { value: (await this.withTags([updated], manager, signal))[0] };
449
+ return {
450
+ value: (await this.withTags([updated], manager, signal))[0],
451
+ };
324
452
  });
325
453
  if (result.event)
326
454
  await this.events.publish(result.event);
@@ -330,7 +458,10 @@ export class PostStore {
330
458
  signal?.throwIfAborted();
331
459
  const result = await this.dataSource.transaction(async (manager) => {
332
460
  const repository = manager.getRepository(BlogPostEntity);
333
- const post = await repository.findOne({ where: { id }, lock: { mode: 'pessimistic_write' } });
461
+ const post = await repository.findOne({
462
+ where: { id },
463
+ lock: { mode: 'pessimistic_write' },
464
+ });
334
465
  signal?.throwIfAborted();
335
466
  if (!post)
336
467
  throw new BlogNotFoundError('Post not found');
@@ -340,12 +471,16 @@ export class PostStore {
340
471
  signal?.throwIfAborted();
341
472
  const updated = await repository.findOneByOrFail({ id });
342
473
  const view = (await this.withTags([updated], manager, signal))[0];
343
- const event = post.status === 'published' ? await buildBlogPostArchivedEvent(manager, view, occurredAt) : undefined;
474
+ const event = post.status === 'published'
475
+ ? await buildBlogPostArchivedEvent(manager, view, occurredAt)
476
+ : undefined;
344
477
  return { value: view, event };
345
478
  }
346
479
  const updated = await repository.findOneByOrFail({ id });
347
480
  signal?.throwIfAborted();
348
- return { value: (await this.withTags([updated], manager, signal))[0] };
481
+ return {
482
+ value: (await this.withTags([updated], manager, signal))[0],
483
+ };
349
484
  });
350
485
  if (result.event)
351
486
  await this.events.publish(result.event);
@@ -355,7 +490,10 @@ export class PostStore {
355
490
  signal?.throwIfAborted();
356
491
  return this.dataSource.transaction(async (manager) => {
357
492
  const repository = manager.getRepository(BlogPostEntity);
358
- const post = await repository.findOne({ where: { id }, lock: { mode: 'pessimistic_write' } });
493
+ const post = await repository.findOne({
494
+ where: { id },
495
+ lock: { mode: 'pessimistic_write' },
496
+ });
359
497
  signal?.throwIfAborted();
360
498
  if (!post)
361
499
  throw new BlogNotFoundError('Post not found');
@@ -367,7 +505,9 @@ export class PostStore {
367
505
  }
368
506
  async assertReferences(manager, input, signal) {
369
507
  signal?.throwIfAborted();
370
- const category = await manager.getRepository(BlogCategoryEntity).findOneBy({ id: input.categoryId });
508
+ const category = await manager
509
+ .getRepository(BlogCategoryEntity)
510
+ .findOneBy({ id: input.categoryId });
371
511
  signal?.throwIfAborted();
372
512
  if (!category)
373
513
  throw new BlogNotFoundError('Category not found');
@@ -377,7 +517,9 @@ export class PostStore {
377
517
  throw new BlogConflictError('Post cannot contain more than 20 tags');
378
518
  if (!input.tagIds.length)
379
519
  return;
380
- const tags = await manager.getRepository(BlogTagEntity).countBy({ id: In([...input.tagIds]) });
520
+ const tags = await manager
521
+ .getRepository(BlogTagEntity)
522
+ .countBy({ id: In([...input.tagIds]) });
381
523
  signal?.throwIfAborted();
382
524
  if (tags !== input.tagIds.length)
383
525
  throw new BlogNotFoundError('Tag not found');
@@ -387,7 +529,9 @@ export class PostStore {
387
529
  await manager.getRepository(BlogPostTagEntity).delete({ postId });
388
530
  signal?.throwIfAborted();
389
531
  if (tagIds.length) {
390
- await manager.getRepository(BlogPostTagEntity).insert(tagIds.map((tagId) => ({ postId, tagId })));
532
+ await manager
533
+ .getRepository(BlogPostTagEntity)
534
+ .insert(tagIds.map((tagId) => ({ postId, tagId })));
391
535
  signal?.throwIfAborted();
392
536
  }
393
537
  }
@@ -396,10 +540,14 @@ export class PostStore {
396
540
  if (!posts.length)
397
541
  return [];
398
542
  const postIds = posts.map(({ id }) => id);
399
- const links = await manager.getRepository(BlogPostTagEntity).findBy({ postId: In(postIds) });
543
+ const links = await manager
544
+ .getRepository(BlogPostTagEntity)
545
+ .findBy({ postId: In(postIds) });
400
546
  signal?.throwIfAborted();
401
547
  const tagIds = [...new Set(links.map(({ tagId }) => tagId))];
402
- const tags = tagIds.length ? await manager.getRepository(BlogTagEntity).findBy({ id: In(tagIds) }) : [];
548
+ const tags = tagIds.length
549
+ ? await manager.getRepository(BlogTagEntity).findBy({ id: In(tagIds) })
550
+ : [];
403
551
  signal?.throwIfAborted();
404
552
  const tagById = new Map(tags.map((tag) => [tag.id, tag]));
405
553
  const tagsByPost = new Map();
@@ -411,15 +559,21 @@ export class PostStore {
411
559
  current.push(tag);
412
560
  tagsByPost.set(link.postId, current);
413
561
  }
414
- return posts.map((post) => ({ ...post, tags: tagsByPost.get(post.id) ?? [] }));
562
+ return posts.map((post) => ({
563
+ ...post,
564
+ tags: tagsByPost.get(post.id) ?? [],
565
+ }));
415
566
  }
416
567
  async listRelated(postId, limit, signal) {
417
- const currentLinks = await this.dataSource.getRepository(BlogPostTagEntity).findBy({ postId });
568
+ const currentLinks = await this.dataSource
569
+ .getRepository(BlogPostTagEntity)
570
+ .findBy({ postId });
418
571
  signal?.throwIfAborted();
419
572
  if (!currentLinks.length)
420
573
  return [];
421
574
  const tagIds = currentLinks.map(({ tagId }) => tagId);
422
- const ranked = await this.dataSource.getRepository(BlogPostTagEntity)
575
+ const ranked = await this.dataSource
576
+ .getRepository(BlogPostTagEntity)
423
577
  .createQueryBuilder('postTag')
424
578
  .select('postTag.postId', 'postId')
425
579
  .addSelect('COUNT(postTag.tagId)', 'sharedTagCount')
@@ -439,10 +593,12 @@ export class PostStore {
439
593
  const ids = ranked.map(({ postId: id }) => id);
440
594
  if (!ids.length)
441
595
  return [];
442
- const posts = await this.dataSource.getRepository(BlogPostEntity).findBy({ id: In(ids) });
596
+ const posts = await this.dataSource
597
+ .getRepository(BlogPostEntity)
598
+ .findBy({ id: In(ids) });
443
599
  signal?.throwIfAborted();
444
600
  const byId = new Map(posts.map((post) => [post.id, post]));
445
- return this.withTags(ids.flatMap((id) => byId.get(id) ? [byId.get(id)] : []), this.dataSource.manager, signal);
601
+ return this.withTags(ids.flatMap((id) => (byId.get(id) ? [byId.get(id)] : [])), this.dataSource.manager, signal);
446
602
  }
447
603
  }
448
604
  function parsePostCount(value) {
@@ -459,13 +615,21 @@ function assertPublishableContent(input) {
459
615
  }
460
616
  function postChangedFields(current, input) {
461
617
  const changed = [];
462
- for (const field of ['categoryId', 'title', 'slug', 'summary', 'coverUrl', 'content']) {
618
+ for (const field of [
619
+ 'categoryId',
620
+ 'title',
621
+ 'slug',
622
+ 'summary',
623
+ 'coverUrl',
624
+ 'content',
625
+ ]) {
463
626
  if (current[field] !== input[field])
464
627
  changed.push(field);
465
628
  }
466
629
  const currentTags = current.tags.map(({ id }) => id).sort();
467
630
  const nextTags = [...input.tagIds].sort();
468
- if (currentTags.length !== nextTags.length || currentTags.some((id, index) => id !== nextTags[index])) {
631
+ if (currentTags.length !== nextTags.length ||
632
+ currentTags.some((id, index) => id !== nextTags[index])) {
469
633
  changed.push('tagIds');
470
634
  }
471
635
  return changed;
@@ -474,18 +638,32 @@ function escapeLikePattern(value) {
474
638
  return value.replace(/[\\%_]/g, (character) => `\\${character}`);
475
639
  }
476
640
  function archivePublishedAtRange(options) {
477
- const isRange = options.startYear !== undefined && options.startMonth !== undefined
478
- && options.endYear !== undefined && options.endMonth !== undefined;
641
+ const isRange = options.startYear !== undefined &&
642
+ options.startMonth !== undefined &&
643
+ options.endYear !== undefined &&
644
+ options.endMonth !== undefined;
479
645
  if (!isRange && options.year === undefined)
480
646
  return undefined;
481
- const startYear = isRange ? options.startYear : options.year;
482
- const startMonth = isRange ? options.startMonth - 1 : options.month === undefined ? 0 : options.month - 1;
483
- const selectedEndYear = isRange ? options.endYear : options.year;
484
- const selectedEndMonth = isRange ? options.endMonth : options.month;
647
+ const startYear = isRange
648
+ ? options.startYear
649
+ : options.year;
650
+ const startMonth = isRange
651
+ ? options.startMonth - 1
652
+ : options.month === undefined
653
+ ? 0
654
+ : options.month - 1;
655
+ const selectedEndYear = isRange
656
+ ? options.endYear
657
+ : options.year;
658
+ const selectedEndMonth = isRange
659
+ ? options.endMonth
660
+ : options.month;
485
661
  const endYear = selectedEndMonth === undefined || selectedEndMonth === 12
486
662
  ? selectedEndYear + 1
487
663
  : selectedEndYear;
488
- const endMonth = selectedEndMonth === undefined || selectedEndMonth === 12 ? 0 : selectedEndMonth;
664
+ const endMonth = selectedEndMonth === undefined || selectedEndMonth === 12
665
+ ? 0
666
+ : selectedEndMonth;
489
667
  return And(MoreThanOrEqual(new Date(Date.UTC(startYear, startMonth, 1))), LessThan(new Date(Date.UTC(endYear, endMonth, 1))));
490
668
  }
491
669
  function aggregateArchiveMonths(posts, limit) {