@geekity/cms 0.3.0 → 0.4.0

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 (637) hide show
  1. package/README.md +2091 -214
  2. package/admin/components/fields.njk +165 -0
  3. package/admin/layouts/base.njk +1 -1
  4. package/admin/layouts/settings-page.njk +26 -0
  5. package/admin/layouts/shell.njk +17 -3
  6. package/admin/pages/account/forgot.njk +47 -0
  7. package/admin/pages/account/login.njk +26 -0
  8. package/admin/pages/account/reset.njk +38 -0
  9. package/admin/pages/account/setup.njk +28 -0
  10. package/admin/pages/appearance/themes.njk +69 -0
  11. package/admin/pages/comments/all.njk +133 -0
  12. package/admin/{layouts/dashboard.njk → pages/dashboard/home.njk} +8 -15
  13. package/admin/{layouts/document-conflict.njk → pages/documents/conflict.njk} +1 -0
  14. package/admin/pages/documents/editor.njk +196 -0
  15. package/admin/{layouts/document-list.njk → pages/documents/list.njk} +19 -2
  16. package/admin/pages/documents/taxonomy.njk +95 -0
  17. package/admin/pages/federation/followers.njk +238 -0
  18. package/admin/pages/media/library.njk +160 -0
  19. package/admin/pages/messages/all.njk +110 -0
  20. package/admin/{layouts → pages}/placeholder.njk +5 -1
  21. package/admin/pages/settings/discussion.njk +99 -0
  22. package/admin/pages/settings/email.njk +203 -0
  23. package/admin/pages/settings/federation.njk +75 -0
  24. package/admin/pages/settings/general.njk +29 -0
  25. package/admin/pages/settings/permalinks.njk +50 -0
  26. package/admin/pages/settings/reading.njk +72 -0
  27. package/admin/pages/users/edit.njk +239 -0
  28. package/admin/pages/users/list.njk +48 -0
  29. package/admin/pages/users/new.njk +41 -0
  30. package/admin/static/admin.css +498 -3
  31. package/admin/static/copy.js +52 -0
  32. package/admin/static/editor.js +16 -16
  33. package/admin/static/slug.js +61 -0
  34. package/dist/admin/accounts.d.ts +413 -0
  35. package/dist/admin/accounts.d.ts.map +1 -0
  36. package/dist/admin/accounts.js +680 -0
  37. package/dist/admin/accounts.js.map +1 -0
  38. package/dist/admin/appearance.d.ts +80 -0
  39. package/dist/admin/appearance.d.ts.map +1 -0
  40. package/dist/admin/appearance.js +136 -0
  41. package/dist/admin/appearance.js.map +1 -0
  42. package/dist/admin/comments.d.ts +90 -0
  43. package/dist/admin/comments.d.ts.map +1 -0
  44. package/dist/admin/comments.js +244 -0
  45. package/dist/admin/comments.js.map +1 -0
  46. package/dist/admin/credentials.d.ts +26 -2
  47. package/dist/admin/credentials.d.ts.map +1 -1
  48. package/dist/admin/credentials.js +35 -2
  49. package/dist/admin/credentials.js.map +1 -1
  50. package/dist/admin/documents.d.ts +127 -10
  51. package/dist/admin/documents.d.ts.map +1 -1
  52. package/dist/admin/documents.js +360 -41
  53. package/dist/admin/documents.js.map +1 -1
  54. package/dist/admin/federation.d.ts +151 -50
  55. package/dist/admin/federation.d.ts.map +1 -1
  56. package/dist/admin/federation.js +225 -93
  57. package/dist/admin/federation.js.map +1 -1
  58. package/dist/admin/formatting.d.ts +20 -0
  59. package/dist/admin/formatting.d.ts.map +1 -0
  60. package/dist/admin/formatting.js +72 -0
  61. package/dist/admin/formatting.js.map +1 -0
  62. package/dist/admin/headers.d.ts +65 -0
  63. package/dist/admin/headers.d.ts.map +1 -0
  64. package/dist/admin/headers.js +104 -0
  65. package/dist/admin/headers.js.map +1 -0
  66. package/dist/admin/index.d.ts +38 -12
  67. package/dist/admin/index.d.ts.map +1 -1
  68. package/dist/admin/index.js +25 -7
  69. package/dist/admin/index.js.map +1 -1
  70. package/dist/admin/media.d.ts +168 -0
  71. package/dist/admin/media.d.ts.map +1 -0
  72. package/dist/admin/media.js +295 -0
  73. package/dist/admin/media.js.map +1 -0
  74. package/dist/admin/menu.d.ts +79 -0
  75. package/dist/admin/menu.d.ts.map +1 -0
  76. package/dist/admin/menu.js +126 -0
  77. package/dist/admin/menu.js.map +1 -0
  78. package/dist/admin/messages.d.ts +80 -0
  79. package/dist/admin/messages.d.ts.map +1 -0
  80. package/dist/admin/messages.js +152 -0
  81. package/dist/admin/messages.js.map +1 -0
  82. package/dist/admin/preview.d.ts.map +1 -1
  83. package/dist/admin/preview.js +31 -7
  84. package/dist/admin/preview.js.map +1 -1
  85. package/dist/admin/recovery.d.ts +92 -0
  86. package/dist/admin/recovery.d.ts.map +1 -0
  87. package/dist/admin/recovery.js +229 -0
  88. package/dist/admin/recovery.js.map +1 -0
  89. package/dist/admin/routes.d.ts +0 -20
  90. package/dist/admin/routes.d.ts.map +1 -1
  91. package/dist/admin/routes.js +155 -105
  92. package/dist/admin/routes.js.map +1 -1
  93. package/dist/admin/settings-discussion.d.ts +37 -0
  94. package/dist/admin/settings-discussion.d.ts.map +1 -0
  95. package/dist/admin/settings-discussion.js +117 -0
  96. package/dist/admin/settings-discussion.js.map +1 -0
  97. package/dist/admin/settings-email.d.ts +54 -0
  98. package/dist/admin/settings-email.d.ts.map +1 -0
  99. package/dist/admin/settings-email.js +189 -0
  100. package/dist/admin/settings-email.js.map +1 -0
  101. package/dist/admin/settings-federation.d.ts +39 -0
  102. package/dist/admin/settings-federation.d.ts.map +1 -0
  103. package/dist/admin/settings-federation.js +103 -0
  104. package/dist/admin/settings-federation.js.map +1 -0
  105. package/dist/admin/settings-general.d.ts +12 -0
  106. package/dist/admin/settings-general.d.ts.map +1 -0
  107. package/dist/admin/settings-general.js +48 -0
  108. package/dist/admin/settings-general.js.map +1 -0
  109. package/dist/admin/settings-page.d.ts +102 -0
  110. package/dist/admin/settings-page.d.ts.map +1 -0
  111. package/dist/admin/settings-page.js +126 -0
  112. package/dist/admin/settings-page.js.map +1 -0
  113. package/dist/admin/settings-pages.d.ts +19 -0
  114. package/dist/admin/settings-pages.d.ts.map +1 -0
  115. package/dist/admin/settings-pages.js +33 -0
  116. package/dist/admin/settings-pages.js.map +1 -0
  117. package/dist/admin/settings-permalinks.d.ts +16 -0
  118. package/dist/admin/settings-permalinks.d.ts.map +1 -0
  119. package/dist/admin/settings-permalinks.js +32 -0
  120. package/dist/admin/settings-permalinks.js.map +1 -0
  121. package/dist/admin/settings-reading.d.ts +33 -0
  122. package/dist/admin/settings-reading.d.ts.map +1 -0
  123. package/dist/admin/settings-reading.js +48 -0
  124. package/dist/admin/settings-reading.js.map +1 -0
  125. package/dist/admin/settings.d.ts +325 -96
  126. package/dist/admin/settings.d.ts.map +1 -1
  127. package/dist/admin/settings.js +650 -308
  128. package/dist/admin/settings.js.map +1 -1
  129. package/dist/admin/store.d.ts +606 -152
  130. package/dist/admin/store.d.ts.map +1 -1
  131. package/dist/admin/store.js +863 -268
  132. package/dist/admin/store.js.map +1 -1
  133. package/dist/admin/taxonomy.d.ts +114 -0
  134. package/dist/admin/taxonomy.d.ts.map +1 -0
  135. package/dist/admin/taxonomy.js +289 -0
  136. package/dist/admin/taxonomy.js.map +1 -0
  137. package/dist/admin/templates.d.ts +44 -14
  138. package/dist/admin/templates.d.ts.map +1 -1
  139. package/dist/admin/templates.js +44 -14
  140. package/dist/admin/templates.js.map +1 -1
  141. package/dist/admin/throttle.d.ts +84 -0
  142. package/dist/admin/throttle.d.ts.map +1 -0
  143. package/dist/admin/throttle.js +143 -0
  144. package/dist/admin/throttle.js.map +1 -0
  145. package/dist/admin/uploads.d.ts +28 -2
  146. package/dist/admin/uploads.d.ts.map +1 -1
  147. package/dist/admin/uploads.js +43 -4
  148. package/dist/admin/uploads.js.map +1 -1
  149. package/dist/admin/users.d.ts +100 -13
  150. package/dist/admin/users.d.ts.map +1 -1
  151. package/dist/admin/users.js +412 -39
  152. package/dist/admin/users.js.map +1 -1
  153. package/dist/cache.d.ts +141 -0
  154. package/dist/cache.d.ts.map +1 -0
  155. package/dist/cache.js +207 -0
  156. package/dist/cache.js.map +1 -0
  157. package/dist/cli.d.ts +14 -2
  158. package/dist/cli.d.ts.map +1 -1
  159. package/dist/cli.js +424 -21
  160. package/dist/cli.js.map +1 -1
  161. package/dist/comments/akismet.d.ts +130 -0
  162. package/dist/comments/akismet.d.ts.map +1 -0
  163. package/dist/comments/akismet.js +274 -0
  164. package/dist/comments/akismet.js.map +1 -0
  165. package/dist/comments/conversation.d.ts +29 -0
  166. package/dist/comments/conversation.d.ts.map +1 -0
  167. package/dist/comments/conversation.js +60 -0
  168. package/dist/comments/conversation.js.map +1 -0
  169. package/dist/comments/form.d.ts +75 -0
  170. package/dist/comments/form.d.ts.map +1 -0
  171. package/dist/comments/form.js +64 -0
  172. package/dist/comments/form.js.map +1 -0
  173. package/dist/comments/index.d.ts +15 -0
  174. package/dist/comments/index.d.ts.map +1 -0
  175. package/dist/comments/index.js +9 -0
  176. package/dist/comments/index.js.map +1 -0
  177. package/dist/comments/markdown.d.ts +8 -0
  178. package/dist/comments/markdown.d.ts.map +1 -0
  179. package/dist/comments/markdown.js +85 -0
  180. package/dist/comments/markdown.js.map +1 -0
  181. package/dist/comments/moderate.d.ts +71 -0
  182. package/dist/comments/moderate.d.ts.map +1 -0
  183. package/dist/comments/moderate.js +88 -0
  184. package/dist/comments/moderate.js.map +1 -0
  185. package/dist/comments/policy.d.ts +57 -0
  186. package/dist/comments/policy.d.ts.map +1 -0
  187. package/dist/comments/policy.js +80 -0
  188. package/dist/comments/policy.js.map +1 -0
  189. package/dist/comments/records.d.ts +266 -0
  190. package/dist/comments/records.d.ts.map +1 -0
  191. package/dist/comments/records.js +487 -0
  192. package/dist/comments/records.js.map +1 -0
  193. package/dist/comments/routes.d.ts +58 -0
  194. package/dist/comments/routes.d.ts.map +1 -0
  195. package/dist/comments/routes.js +177 -0
  196. package/dist/comments/routes.js.map +1 -0
  197. package/dist/comments/submission.d.ts +263 -0
  198. package/dist/comments/submission.d.ts.map +1 -0
  199. package/dist/comments/submission.js +241 -0
  200. package/dist/comments/submission.js.map +1 -0
  201. package/dist/config.d.ts +190 -5
  202. package/dist/config.d.ts.map +1 -1
  203. package/dist/config.js +118 -6
  204. package/dist/config.js.map +1 -1
  205. package/dist/contact/delivery.d.ts +60 -0
  206. package/dist/contact/delivery.d.ts.map +1 -0
  207. package/dist/contact/delivery.js +87 -0
  208. package/dist/contact/delivery.js.map +1 -0
  209. package/dist/contact/form.d.ts +130 -0
  210. package/dist/contact/form.d.ts.map +1 -0
  211. package/dist/contact/form.js +163 -0
  212. package/dist/contact/form.js.map +1 -0
  213. package/dist/contact/index.d.ts +17 -0
  214. package/dist/contact/index.d.ts.map +1 -0
  215. package/dist/contact/index.js +13 -0
  216. package/dist/contact/index.js.map +1 -0
  217. package/dist/contact/records.d.ts +124 -0
  218. package/dist/contact/records.d.ts.map +1 -0
  219. package/dist/contact/records.js +218 -0
  220. package/dist/contact/records.js.map +1 -0
  221. package/dist/contact/routes.d.ts +17 -0
  222. package/dist/contact/routes.d.ts.map +1 -0
  223. package/dist/contact/routes.js +127 -0
  224. package/dist/contact/routes.js.map +1 -0
  225. package/dist/contact/submission.d.ts +103 -0
  226. package/dist/contact/submission.d.ts.map +1 -0
  227. package/dist/contact/submission.js +166 -0
  228. package/dist/contact/submission.js.map +1 -0
  229. package/dist/content/document.d.ts +7 -2
  230. package/dist/content/document.d.ts.map +1 -1
  231. package/dist/content/document.js +1 -0
  232. package/dist/content/document.js.map +1 -1
  233. package/dist/content/index.d.ts +7 -2
  234. package/dist/content/index.d.ts.map +1 -1
  235. package/dist/content/index.js +4 -1
  236. package/dist/content/index.js.map +1 -1
  237. package/dist/content/markdown.d.ts.map +1 -1
  238. package/dist/content/markdown.js +24 -2
  239. package/dist/content/markdown.js.map +1 -1
  240. package/dist/content/parser.d.ts.map +1 -1
  241. package/dist/content/parser.js +11 -4
  242. package/dist/content/parser.js.map +1 -1
  243. package/dist/content/save.d.ts +5 -0
  244. package/dist/content/save.d.ts.map +1 -1
  245. package/dist/content/save.js +44 -1
  246. package/dist/content/save.js.map +1 -1
  247. package/dist/content/schedule.d.ts +125 -0
  248. package/dist/content/schedule.d.ts.map +1 -0
  249. package/dist/content/schedule.js +207 -0
  250. package/dist/content/schedule.js.map +1 -0
  251. package/dist/content/search.d.ts +64 -0
  252. package/dist/content/search.d.ts.map +1 -0
  253. package/dist/content/search.js +136 -0
  254. package/dist/content/search.js.map +1 -0
  255. package/dist/content/store.d.ts +202 -7
  256. package/dist/content/store.d.ts.map +1 -1
  257. package/dist/content/store.js +374 -67
  258. package/dist/content/store.js.map +1 -1
  259. package/dist/content/sync.d.ts +7 -1
  260. package/dist/content/sync.d.ts.map +1 -1
  261. package/dist/content/sync.js +18 -10
  262. package/dist/content/sync.js.map +1 -1
  263. package/dist/content/time.d.ts +56 -0
  264. package/dist/content/time.d.ts.map +1 -0
  265. package/dist/content/time.js +141 -0
  266. package/dist/content/time.js.map +1 -0
  267. package/dist/content/writer.d.ts.map +1 -1
  268. package/dist/content/writer.js +3 -0
  269. package/dist/content/writer.js.map +1 -1
  270. package/dist/env.d.ts +58 -4
  271. package/dist/env.d.ts.map +1 -1
  272. package/dist/federation/actor.d.ts +95 -41
  273. package/dist/federation/actor.d.ts.map +1 -1
  274. package/dist/federation/actor.js +180 -53
  275. package/dist/federation/actor.js.map +1 -1
  276. package/dist/federation/article.d.ts +44 -17
  277. package/dist/federation/article.d.ts.map +1 -1
  278. package/dist/federation/article.js +98 -46
  279. package/dist/federation/article.js.map +1 -1
  280. package/dist/federation/delivery.d.ts +63 -15
  281. package/dist/federation/delivery.d.ts.map +1 -1
  282. package/dist/federation/delivery.js +154 -80
  283. package/dist/federation/delivery.js.map +1 -1
  284. package/dist/federation/federation.d.ts +22 -17
  285. package/dist/federation/federation.d.ts.map +1 -1
  286. package/dist/federation/federation.js +98 -77
  287. package/dist/federation/federation.js.map +1 -1
  288. package/dist/federation/followers.d.ts +3 -2
  289. package/dist/federation/followers.d.ts.map +1 -1
  290. package/dist/federation/followers.js +6 -5
  291. package/dist/federation/followers.js.map +1 -1
  292. package/dist/federation/import-wordpress.d.ts +128 -0
  293. package/dist/federation/import-wordpress.d.ts.map +1 -0
  294. package/dist/federation/import-wordpress.js +426 -0
  295. package/dist/federation/import-wordpress.js.map +1 -0
  296. package/dist/federation/inbox.d.ts +36 -13
  297. package/dist/federation/inbox.d.ts.map +1 -1
  298. package/dist/federation/inbox.js +120 -49
  299. package/dist/federation/inbox.js.map +1 -1
  300. package/dist/federation/index.d.ts +22 -10
  301. package/dist/federation/index.d.ts.map +1 -1
  302. package/dist/federation/index.js +13 -8
  303. package/dist/federation/index.js.map +1 -1
  304. package/dist/federation/keys.d.ts +98 -20
  305. package/dist/federation/keys.d.ts.map +1 -1
  306. package/dist/federation/keys.js +269 -39
  307. package/dist/federation/keys.js.map +1 -1
  308. package/dist/federation/mount.d.ts +42 -10
  309. package/dist/federation/mount.d.ts.map +1 -1
  310. package/dist/federation/mount.js +266 -26
  311. package/dist/federation/mount.js.map +1 -1
  312. package/dist/federation/paths.d.ts +23 -35
  313. package/dist/federation/paths.d.ts.map +1 -1
  314. package/dist/federation/paths.js +26 -39
  315. package/dist/federation/paths.js.map +1 -1
  316. package/dist/federation/records.d.ts +223 -0
  317. package/dist/federation/records.d.ts.map +1 -0
  318. package/dist/federation/records.js +506 -0
  319. package/dist/federation/records.js.map +1 -0
  320. package/dist/federation/relays.d.ts +114 -0
  321. package/dist/federation/relays.d.ts.map +1 -0
  322. package/dist/federation/relays.js +290 -0
  323. package/dist/federation/relays.js.map +1 -0
  324. package/dist/federation/replies.d.ts +80 -0
  325. package/dist/federation/replies.d.ts.map +1 -0
  326. package/dist/federation/replies.js +166 -0
  327. package/dist/federation/replies.js.map +1 -0
  328. package/dist/federation/wordpress.d.ts +131 -0
  329. package/dist/federation/wordpress.d.ts.map +1 -0
  330. package/dist/federation/wordpress.js +341 -0
  331. package/dist/federation/wordpress.js.map +1 -0
  332. package/dist/files/atomic.d.ts +103 -0
  333. package/dist/files/atomic.d.ts.map +1 -0
  334. package/dist/files/atomic.js +150 -0
  335. package/dist/files/atomic.js.map +1 -0
  336. package/dist/files/index.d.ts +3 -0
  337. package/dist/files/index.d.ts.map +1 -0
  338. package/dist/files/index.js +2 -0
  339. package/dist/files/index.js.map +1 -0
  340. package/dist/forms/protection.d.ts +85 -0
  341. package/dist/forms/protection.d.ts.map +1 -0
  342. package/dist/forms/protection.js +116 -0
  343. package/dist/forms/protection.js.map +1 -0
  344. package/dist/images/icons.d.ts +59 -0
  345. package/dist/images/icons.d.ts.map +1 -0
  346. package/dist/images/icons.js +131 -0
  347. package/dist/images/icons.js.map +1 -0
  348. package/dist/images/index.d.ts +7 -0
  349. package/dist/images/index.d.ts.map +1 -0
  350. package/dist/images/index.js +4 -0
  351. package/dist/images/index.js.map +1 -0
  352. package/dist/images/markup.d.ts +47 -0
  353. package/dist/images/markup.d.ts.map +1 -0
  354. package/dist/images/markup.js +175 -0
  355. package/dist/images/markup.js.map +1 -0
  356. package/dist/images/paths.d.ts +34 -0
  357. package/dist/images/paths.d.ts.map +1 -0
  358. package/dist/images/paths.js +41 -0
  359. package/dist/images/paths.js.map +1 -0
  360. package/dist/images/variants.d.ts +104 -0
  361. package/dist/images/variants.d.ts.map +1 -0
  362. package/dist/images/variants.js +320 -0
  363. package/dist/images/variants.js.map +1 -0
  364. package/dist/index.d.ts +123 -19
  365. package/dist/index.d.ts.map +1 -1
  366. package/dist/index.js +327 -25
  367. package/dist/index.js.map +1 -1
  368. package/dist/init.d.ts +18 -0
  369. package/dist/init.d.ts.map +1 -1
  370. package/dist/init.js +34 -3
  371. package/dist/init.js.map +1 -1
  372. package/dist/mail/brevo.d.ts +35 -0
  373. package/dist/mail/brevo.d.ts.map +1 -0
  374. package/dist/mail/brevo.js +85 -0
  375. package/dist/mail/brevo.js.map +1 -0
  376. package/dist/mail/credentials.d.ts +62 -0
  377. package/dist/mail/credentials.d.ts.map +1 -0
  378. package/dist/mail/credentials.js +86 -0
  379. package/dist/mail/credentials.js.map +1 -0
  380. package/dist/mail/index.d.ts +15 -0
  381. package/dist/mail/index.d.ts.map +1 -0
  382. package/dist/mail/index.js +8 -0
  383. package/dist/mail/index.js.map +1 -0
  384. package/dist/mail/memory.d.ts +35 -0
  385. package/dist/mail/memory.d.ts.map +1 -0
  386. package/dist/mail/memory.js +29 -0
  387. package/dist/mail/memory.js.map +1 -0
  388. package/dist/mail/provider.d.ts +80 -0
  389. package/dist/mail/provider.d.ts.map +1 -0
  390. package/dist/mail/provider.js +23 -0
  391. package/dist/mail/provider.js.map +1 -0
  392. package/dist/mail/service.d.ts +156 -0
  393. package/dist/mail/service.d.ts.map +1 -0
  394. package/dist/mail/service.js +265 -0
  395. package/dist/mail/service.js.map +1 -0
  396. package/dist/mail/smtp.d.ts +39 -0
  397. package/dist/mail/smtp.d.ts.map +1 -0
  398. package/dist/mail/smtp.js +58 -0
  399. package/dist/mail/smtp.js.map +1 -0
  400. package/dist/mail/templates.d.ts +91 -0
  401. package/dist/mail/templates.d.ts.map +1 -0
  402. package/dist/mail/templates.js +69 -0
  403. package/dist/mail/templates.js.map +1 -0
  404. package/dist/notifications/comments.d.ts +66 -0
  405. package/dist/notifications/comments.d.ts.map +1 -0
  406. package/dist/notifications/comments.js +151 -0
  407. package/dist/notifications/comments.js.map +1 -0
  408. package/dist/notifications/digest.d.ts +135 -0
  409. package/dist/notifications/digest.d.ts.map +1 -0
  410. package/dist/notifications/digest.js +287 -0
  411. package/dist/notifications/digest.js.map +1 -0
  412. package/dist/notifications/index.d.ts +13 -0
  413. package/dist/notifications/index.d.ts.map +1 -0
  414. package/dist/notifications/index.js +8 -0
  415. package/dist/notifications/index.js.map +1 -0
  416. package/dist/notifications/links.d.ts +60 -0
  417. package/dist/notifications/links.d.ts.map +1 -0
  418. package/dist/notifications/links.js +63 -0
  419. package/dist/notifications/links.js.map +1 -0
  420. package/dist/notifications/optouts.d.ts +48 -0
  421. package/dist/notifications/optouts.d.ts.map +1 -0
  422. package/dist/notifications/optouts.js +93 -0
  423. package/dist/notifications/optouts.js.map +1 -0
  424. package/dist/notifications/preferences.d.ts +158 -0
  425. package/dist/notifications/preferences.d.ts.map +1 -0
  426. package/dist/notifications/preferences.js +195 -0
  427. package/dist/notifications/preferences.js.map +1 -0
  428. package/dist/notifications/routes.d.ts +28 -0
  429. package/dist/notifications/routes.d.ts.map +1 -0
  430. package/dist/notifications/routes.js +184 -0
  431. package/dist/notifications/routes.js.map +1 -0
  432. package/dist/notifications/tokens.d.ts +60 -0
  433. package/dist/notifications/tokens.d.ts.map +1 -0
  434. package/dist/notifications/tokens.js +125 -0
  435. package/dist/notifications/tokens.js.map +1 -0
  436. package/dist/notify.d.ts +84 -0
  437. package/dist/notify.d.ts.map +1 -0
  438. package/dist/notify.js +149 -0
  439. package/dist/notify.js.map +1 -0
  440. package/dist/web/archive.d.ts +49 -0
  441. package/dist/web/archive.d.ts.map +1 -0
  442. package/dist/web/archive.js +59 -0
  443. package/dist/web/archive.js.map +1 -0
  444. package/dist/web/assets.d.ts +6 -5
  445. package/dist/web/assets.d.ts.map +1 -1
  446. package/dist/web/assets.js +5 -7
  447. package/dist/web/assets.js.map +1 -1
  448. package/dist/web/authors.d.ts +143 -0
  449. package/dist/web/authors.d.ts.map +1 -0
  450. package/dist/web/authors.js +178 -0
  451. package/dist/web/authors.js.map +1 -0
  452. package/dist/web/comments.d.ts +60 -0
  453. package/dist/web/comments.d.ts.map +1 -0
  454. package/dist/web/comments.js +207 -0
  455. package/dist/web/comments.js.map +1 -0
  456. package/dist/web/context.d.ts +162 -28
  457. package/dist/web/context.d.ts.map +1 -1
  458. package/dist/web/context.js +123 -26
  459. package/dist/web/context.js.map +1 -1
  460. package/dist/web/conversation.d.ts +209 -0
  461. package/dist/web/conversation.d.ts.map +1 -0
  462. package/dist/web/conversation.js +557 -0
  463. package/dist/web/conversation.js.map +1 -0
  464. package/dist/web/documents.d.ts +36 -6
  465. package/dist/web/documents.d.ts.map +1 -1
  466. package/dist/web/documents.js +52 -10
  467. package/dist/web/documents.js.map +1 -1
  468. package/dist/web/feed-atom.d.ts +22 -0
  469. package/dist/web/feed-atom.d.ts.map +1 -0
  470. package/dist/web/feed-atom.js +83 -0
  471. package/dist/web/feed-atom.js.map +1 -0
  472. package/dist/web/feed-item.d.ts +145 -0
  473. package/dist/web/feed-item.d.ts.map +1 -0
  474. package/dist/web/feed-item.js +120 -0
  475. package/dist/web/feed-item.js.map +1 -0
  476. package/dist/web/feed-json.d.ts +79 -0
  477. package/dist/web/feed-json.d.ts.map +1 -0
  478. package/dist/web/feed-json.js +53 -0
  479. package/dist/web/feed-json.js.map +1 -0
  480. package/dist/web/feed-rss.d.ts +26 -0
  481. package/dist/web/feed-rss.d.ts.map +1 -0
  482. package/dist/web/feed-rss.js +203 -0
  483. package/dist/web/feed-rss.js.map +1 -0
  484. package/dist/web/feed-source.d.ts +244 -0
  485. package/dist/web/feed-source.d.ts.map +1 -0
  486. package/dist/web/feed-source.js +201 -0
  487. package/dist/web/feed-source.js.map +1 -0
  488. package/dist/web/feed-xml.d.ts +63 -0
  489. package/dist/web/feed-xml.d.ts.map +1 -0
  490. package/dist/web/feed-xml.js +116 -0
  491. package/dist/web/feed-xml.js.map +1 -0
  492. package/dist/web/feeds.d.ts +31 -96
  493. package/dist/web/feeds.d.ts.map +1 -1
  494. package/dist/web/feeds.js +94 -198
  495. package/dist/web/feeds.js.map +1 -1
  496. package/dist/web/health.d.ts +31 -0
  497. package/dist/web/health.d.ts.map +1 -0
  498. package/dist/web/health.js +44 -0
  499. package/dist/web/health.js.map +1 -0
  500. package/dist/web/index.d.ts +30 -10
  501. package/dist/web/index.d.ts.map +1 -1
  502. package/dist/web/index.js +18 -7
  503. package/dist/web/index.js.map +1 -1
  504. package/dist/web/navigation.d.ts +73 -0
  505. package/dist/web/navigation.d.ts.map +1 -0
  506. package/dist/web/navigation.js +110 -0
  507. package/dist/web/navigation.js.map +1 -0
  508. package/dist/web/negotiate.d.ts +9 -0
  509. package/dist/web/negotiate.d.ts.map +1 -1
  510. package/dist/web/negotiate.js +6 -1
  511. package/dist/web/negotiate.js.map +1 -1
  512. package/dist/web/recent.d.ts +43 -0
  513. package/dist/web/recent.d.ts.map +1 -0
  514. package/dist/web/recent.js +37 -0
  515. package/dist/web/recent.js.map +1 -0
  516. package/dist/web/render.d.ts +197 -9
  517. package/dist/web/render.d.ts.map +1 -1
  518. package/dist/web/render.js +334 -17
  519. package/dist/web/render.js.map +1 -1
  520. package/dist/web/routes.d.ts +25 -8
  521. package/dist/web/routes.d.ts.map +1 -1
  522. package/dist/web/routes.js +845 -93
  523. package/dist/web/routes.js.map +1 -1
  524. package/dist/web/sanitize.d.ts +19 -0
  525. package/dist/web/sanitize.d.ts.map +1 -0
  526. package/dist/web/sanitize.js +272 -0
  527. package/dist/web/sanitize.js.map +1 -0
  528. package/dist/web/search.d.ts +79 -0
  529. package/dist/web/search.d.ts.map +1 -0
  530. package/dist/web/search.js +94 -0
  531. package/dist/web/search.js.map +1 -0
  532. package/dist/web/sitemap.d.ts +120 -0
  533. package/dist/web/sitemap.d.ts.map +1 -0
  534. package/dist/web/sitemap.js +199 -0
  535. package/dist/web/sitemap.js.map +1 -0
  536. package/dist/web/taxonomy.d.ts +152 -0
  537. package/dist/web/taxonomy.d.ts.map +1 -0
  538. package/dist/web/taxonomy.js +237 -0
  539. package/dist/web/taxonomy.js.map +1 -0
  540. package/dist/web/templates.d.ts +54 -16
  541. package/dist/web/templates.d.ts.map +1 -1
  542. package/dist/web/templates.js +109 -28
  543. package/dist/web/templates.js.map +1 -1
  544. package/dist/web/themes.d.ts +205 -0
  545. package/dist/web/themes.d.ts.map +1 -0
  546. package/dist/web/themes.js +277 -0
  547. package/dist/web/themes.js.map +1 -0
  548. package/dist/webmention/discovery.d.ts +51 -0
  549. package/dist/webmention/discovery.d.ts.map +1 -0
  550. package/dist/webmention/discovery.js +176 -0
  551. package/dist/webmention/discovery.js.map +1 -0
  552. package/dist/webmention/html.d.ts +71 -0
  553. package/dist/webmention/html.d.ts.map +1 -0
  554. package/dist/webmention/html.js +285 -0
  555. package/dist/webmention/html.js.map +1 -0
  556. package/dist/webmention/index.d.ts +12 -0
  557. package/dist/webmention/index.d.ts.map +1 -0
  558. package/dist/webmention/index.js +8 -0
  559. package/dist/webmention/index.js.map +1 -0
  560. package/dist/webmention/links.d.ts +18 -0
  561. package/dist/webmention/links.d.ts.map +1 -0
  562. package/dist/webmention/links.js +64 -0
  563. package/dist/webmention/links.js.map +1 -0
  564. package/dist/webmention/microformats.d.ts +93 -0
  565. package/dist/webmention/microformats.d.ts.map +1 -0
  566. package/dist/webmention/microformats.js +376 -0
  567. package/dist/webmention/microformats.js.map +1 -0
  568. package/dist/webmention/receive.d.ts +141 -0
  569. package/dist/webmention/receive.d.ts.map +1 -0
  570. package/dist/webmention/receive.js +264 -0
  571. package/dist/webmention/receive.js.map +1 -0
  572. package/dist/webmention/routes.d.ts +37 -0
  573. package/dist/webmention/routes.d.ts.map +1 -0
  574. package/dist/webmention/routes.js +75 -0
  575. package/dist/webmention/routes.js.map +1 -0
  576. package/dist/webmention/service.d.ts +94 -0
  577. package/dist/webmention/service.d.ts.map +1 -0
  578. package/dist/webmention/service.js +207 -0
  579. package/dist/webmention/service.js.map +1 -0
  580. package/package.json +11 -6
  581. package/templates/site/content/_data/site.json +1 -0
  582. package/templates/site/content/posts/2026-01-01-hello-world.md +5 -3
  583. package/templates/site/geekity.config.ts +11 -1
  584. package/templates/site/tsconfig.json +1 -1
  585. package/themes/default/README.md +1096 -50
  586. package/themes/default/layouts/404.njk +2 -3
  587. package/themes/default/layouts/author.njk +37 -0
  588. package/themes/default/layouts/base.njk +172 -31
  589. package/themes/default/layouts/category.njk +27 -0
  590. package/themes/default/layouts/front-page.njk +57 -0
  591. package/themes/default/layouts/home.njk +17 -1
  592. package/themes/default/layouts/page.njk +57 -5
  593. package/themes/default/layouts/post.njk +78 -19
  594. package/themes/default/layouts/search.njk +57 -0
  595. package/themes/default/layouts/tag.njk +3 -6
  596. package/themes/default/mail/comment-digest.html.njk +37 -0
  597. package/themes/default/mail/comment-digest.subject.njk +3 -0
  598. package/themes/default/mail/comment-digest.txt.njk +40 -0
  599. package/themes/default/mail/comment-pending.html.njk +27 -0
  600. package/themes/default/mail/comment-pending.subject.njk +2 -0
  601. package/themes/default/mail/comment-pending.txt.njk +24 -0
  602. package/themes/default/mail/comment-reply.html.njk +21 -0
  603. package/themes/default/mail/comment-reply.subject.njk +2 -0
  604. package/themes/default/mail/comment-reply.txt.njk +22 -0
  605. package/themes/default/mail/contact-message.html.njk +24 -0
  606. package/themes/default/mail/contact-message.subject.njk +5 -0
  607. package/themes/default/mail/contact-message.txt.njk +20 -0
  608. package/themes/default/mail/password-changed.html.njk +18 -0
  609. package/themes/default/mail/password-changed.subject.njk +2 -0
  610. package/themes/default/mail/password-changed.txt.njk +17 -0
  611. package/themes/default/mail/password-reset.html.njk +22 -0
  612. package/themes/default/mail/password-reset.subject.njk +2 -0
  613. package/themes/default/mail/password-reset.txt.njk +18 -0
  614. package/themes/default/mail/test.html.njk +14 -0
  615. package/themes/default/mail/test.subject.njk +2 -0
  616. package/themes/default/mail/test.txt.njk +12 -0
  617. package/themes/default/partials/archive.njk +27 -0
  618. package/themes/default/partials/bio.njk +77 -0
  619. package/themes/default/partials/comment-form.njk +109 -0
  620. package/themes/default/partials/contact-form.njk +88 -0
  621. package/themes/default/partials/conversation.njk +139 -0
  622. package/themes/default/partials/feeds.njk +26 -0
  623. package/themes/default/partials/jsonld.njk +120 -0
  624. package/themes/default/partials/pagination.njk +12 -6
  625. package/themes/default/partials/post-list.njk +51 -18
  626. package/themes/default/partials/search-form.njk +17 -0
  627. package/themes/default/partials/tags.njk +26 -5
  628. package/themes/default/static/highlight.js +4 -0
  629. package/themes/default/static/style.css +1119 -194
  630. package/themes/default/theme.json +5 -0
  631. package/admin/layouts/document-editor.njk +0 -167
  632. package/admin/layouts/federation.njk +0 -145
  633. package/admin/layouts/login.njk +0 -23
  634. package/admin/layouts/settings.njk +0 -116
  635. package/admin/layouts/setup.njk +0 -27
  636. package/admin/layouts/users.njk +0 -91
  637. /package/admin/{layouts/_flash.njk → components/flash.njk} +0 -0
@@ -1,37 +1,84 @@
1
1
  import { Article, Create, Delete, Hashtag, PUBLIC_COLLECTION, Source, Tombstone, Update, } from '@fedify/vocab';
2
2
  import { Temporal as TemporalPolyfill } from '@js-temporal/polyfill';
3
- import { isPublicDocument } from '../web/documents.js';
3
+ import { listUsers, primaryUser } from '../admin/accounts.js';
4
+ import { readSiteSettings, taxonomyBasesFromSettings } from '../admin/settings.js';
5
+ import { userForAuthor } from '../web/authors.js';
6
+ import { isPublicDocument, postObjectId } from '../web/documents.js';
4
7
  import { absoluteUrl } from '../web/negotiate.js';
5
- import { tagHref } from '../web/routes.js';
6
- import { SITE_ACTOR_IDENTIFIER } from './keys.js';
8
+ import { categoryHref, tagHref } from '../web/taxonomy.js';
9
+ import { actorId } from './actor.js';
7
10
  import { createActivityId, deleteActivityId, updateActivityId } from './paths.js';
11
+ /**
12
+ * The user a post is announced by: the one its `author` names, and the site's
13
+ * first account for one that names nobody.
14
+ *
15
+ * decision-14 attributes a post to a person rather than to the site, and
16
+ * `userForAuthor` is the one rule that decides which — a username exactly, a
17
+ * display name only when exactly one person answers to it (TASK-67). The
18
+ * fallback matters because an `author` is free text in a file: a post that
19
+ * names a person who has since been deleted, or names nobody at all, is still
20
+ * a post this site has to be able to announce, and the first account is the
21
+ * only actor that can be chosen without guessing between people.
22
+ *
23
+ * `undefined` only for a site with no accounts, which is one in first-run
24
+ * setup and federates nothing.
25
+ */
26
+ export function documentAuthor(context, document) {
27
+ const { dataDir } = context.data.config;
28
+ return userForAuthor(listUsers(dataDir), document.author) ?? primaryUser(dataDir);
29
+ }
30
+ /**
31
+ * The actor id and followers collection a post's activities are addressed
32
+ * with, or a thrown error for a site with no accounts.
33
+ *
34
+ * Every activity in this module names the same two URLs, and they have to be
35
+ * the same two: an `Article` attributed to one actor and `cc`'d to another's
36
+ * followers would be a post nobody could place.
37
+ */
38
+ function attribution(context, document) {
39
+ const user = documentAuthor(context, document);
40
+ if (user === undefined) {
41
+ throw new Error(`The post "${document.slug}" cannot be federated: the site has no accounts, ` +
42
+ 'and decision-14 makes a user the actor a post is announced by.');
43
+ }
44
+ return { actor: actorId(context, user), followers: context.getFollowersUri(user.username) };
45
+ }
8
46
  /** The media type an `Article`'s `source` is labelled with. */
9
47
  export const SOURCE_MEDIA_TYPE = 'text/markdown';
10
48
  /**
11
49
  * Whether a document is one of the objects this site federates.
12
50
  *
13
51
  * doc-4 federates published posts and nothing else: pages are standing
14
- * content with no place in a timeline, and a draft or a trashed post is not
15
- * public at all. This is the one rule, so the object dispatcher, the outbox
16
- * and the permalink all agree about what exists.
52
+ * content with no place in a timeline, and a draft, a trashed post or one
53
+ * whose date has not arrived is not public at all. This is the one rule, so
54
+ * the object dispatcher, the outbox and the permalink all agree about what
55
+ * exists.
17
56
  */
18
- export function isFederatedDocument(document) {
19
- return document.type === 'post' && isPublicDocument(document);
57
+ export function isFederatedDocument(document, now = new Date()) {
58
+ return document.type === 'post' && isPublicDocument(document, now);
20
59
  }
21
60
  /**
22
61
  * One post as the `Article` doc-4 describes.
23
62
  *
24
- * The id comes from the Fedify context rather than from string concatenation,
25
- * so it stays in step with the path the object dispatcher is registered under,
26
- * and it is built from the slug rather than from the permalink, so moving a
27
- * post does not mint a second object. `url` is the permalink, which is the
28
- * page a human should land on.
63
+ * Its `id` and its `url` are the same URL — the permalink — because
64
+ * decision-13 gives a post one name for both audiences: a browser asking for
65
+ * HTML gets the page, a peer asking for ActivityStreams gets this. The
66
+ * exception is a post whose file already names an `activitypub.id`, which
67
+ * keeps it; see {@link articleObjectId}.
29
68
  *
30
69
  * `source` carries the Markdown the file holds, so a peer that wants to quote
31
70
  * or re-render the post has the text rather than only the rendering of it.
71
+ *
72
+ * `attributedTo` is the actor of the user the post's `author` names
73
+ * (decision-14), and `cc` is that user's followers: a post belongs to a person
74
+ * on this site, not to the site.
32
75
  */
33
76
  export function postArticle(context, document) {
34
77
  const { baseUrl } = context.data.config;
78
+ const { actor, followers } = attribution(context, document);
79
+ // The archives an activity points at are wherever the site currently serves
80
+ // them, which is a setting rather than a constant (TASK-36).
81
+ const bases = taxonomyBasesFromSettings(readSiteSettings(context.data.config.contentDir));
35
82
  return new Article({
36
83
  id: articleObjectId(context, document),
37
84
  url: new URL(absoluteUrl(document.permalink, baseUrl)),
@@ -40,17 +87,24 @@ export function postArticle(context, document) {
40
87
  source: new Source({ content: document.body, mediaType: SOURCE_MEDIA_TYPE }),
41
88
  published: toInstant(document.date) ?? null,
42
89
  updated: toInstant(document.updated) ?? null,
43
- attribution: context.getActorUri(SITE_ACTOR_IDENTIFIER),
90
+ attribution: actor,
44
91
  // Public addressing, as a blog post is: anybody may fetch it, and every
45
- // follower is told about it.
92
+ // follower of its author is told about it.
46
93
  to: PUBLIC_COLLECTION,
47
- cc: context.getFollowersUri(SITE_ACTOR_IDENTIFIER),
48
- tags: document.tags.map((tag) => new Hashtag({
49
- name: `#${tag}`,
50
- href: new URL(absoluteUrl(tagHref(tag, 0), baseUrl)),
51
- })),
94
+ cc: followers,
95
+ // Both taxonomies become hashtags: a relay or a search that keys on a
96
+ // hashtag has no reason to care which of the two a term came from, and
97
+ // each one points at the archive the site serves for it.
98
+ tags: [
99
+ ...document.tags.map((tag) => hashtag(tag, tagHref(tag, 0, bases), baseUrl)),
100
+ ...document.categories.map((category) => hashtag(category, categoryHref(category, 0, bases), baseUrl)),
101
+ ],
52
102
  });
53
103
  }
104
+ /** One taxonomy term as a `Hashtag` pointing at its archive. */
105
+ function hashtag(term, href, baseUrl) {
106
+ return new Hashtag({ name: `#${term}`, href: new URL(absoluteUrl(href, baseUrl)) });
107
+ }
54
108
  /**
55
109
  * The `Create` that announces a post: what the outbox lists, and what delivery
56
110
  * sends.
@@ -61,13 +115,14 @@ export function postArticle(context, document) {
61
115
  */
62
116
  export function postCreateActivity(context, document) {
63
117
  const article = postArticle(context, document);
118
+ const { actor, followers } = attribution(context, document);
64
119
  return new Create({
65
120
  id: createActivityId(articleObjectId(context, document)),
66
- actor: context.getActorUri(SITE_ACTOR_IDENTIFIER),
121
+ actor,
67
122
  object: article,
68
123
  published: toInstant(document.date) ?? null,
69
124
  to: PUBLIC_COLLECTION,
70
- cc: context.getFollowersUri(SITE_ACTOR_IDENTIFIER),
125
+ cc: followers,
71
126
  });
72
127
  }
73
128
  /**
@@ -77,16 +132,23 @@ export function postCreateActivity(context, document) {
77
132
  * ActivityPub offers and all a peer can apply. Its id carries the document's
78
133
  * hash, so two edits are two activities and the same edit delivered twice is
79
134
  * one; see {@link updateActivityId}.
135
+ *
136
+ * `revision` overrides that. A resend (decision-9) is asking for a revision
137
+ * the followers have already been offered to be offered again, and an activity
138
+ * id a peer has seen is one it is entitled to drop, so a resend passes the
139
+ * moment instead of the hash. Everything else about the activity is the same,
140
+ * which is what makes a resent `Update` and a saved one the same shape.
80
141
  */
81
- export function postUpdateActivity(context, document) {
142
+ export function postUpdateActivity(context, document, revision = revisionOf(document)) {
82
143
  const article = postArticle(context, document);
144
+ const { actor, followers } = attribution(context, document);
83
145
  return new Update({
84
- id: updateActivityId(articleObjectId(context, document), revisionOf(document)),
85
- actor: context.getActorUri(SITE_ACTOR_IDENTIFIER),
146
+ id: updateActivityId(articleObjectId(context, document), revision),
147
+ actor,
86
148
  object: article,
87
149
  published: toInstant(document.updated ?? document.date) ?? null,
88
150
  to: PUBLIC_COLLECTION,
89
- cc: context.getFollowersUri(SITE_ACTOR_IDENTIFIER),
151
+ cc: followers,
90
152
  });
91
153
  }
92
154
  /**
@@ -103,40 +165,30 @@ export function postUpdateActivity(context, document) {
103
165
  */
104
166
  export function postDeleteActivity(context, document, deleted) {
105
167
  const objectId = articleObjectId(context, document);
168
+ const { actor, followers } = attribution(context, document);
106
169
  return new Delete({
107
170
  id: deleteActivityId(objectId, deleted),
108
- actor: context.getActorUri(SITE_ACTOR_IDENTIFIER),
171
+ actor,
109
172
  object: new Tombstone({
110
173
  id: objectId,
111
174
  formerType: Article,
112
175
  deleted: toInstant(deleted) ?? null,
113
176
  }),
114
177
  to: PUBLIC_COLLECTION,
115
- cc: context.getFollowersUri(SITE_ACTOR_IDENTIFIER),
178
+ cc: followers,
116
179
  });
117
180
  }
118
181
  /**
119
- * A post's ActivityStreams object id: the one written into its front matter if
120
- * it has been federated, and the one its slug implies if it has not.
182
+ * A post's ActivityStreams object id, off the Fedify context: its permalink,
183
+ * or the id its file already names (decision-13).
121
184
  *
122
- * The stored id is what makes a rename invisible to a follower. Ids are minted
123
- * from the slug, so a post renamed after it was announced would otherwise
124
- * become a second object and be delivered as a `Create` all over again; doc-4
125
- * asks the `activitypub.id` key to prevent exactly that. The object dispatcher
126
- * resolves a stored id back to its post, so the old URL keeps answering.
185
+ * A thin wrapper over {@link postObjectId} so everything in this module reads
186
+ * the id the same way and off the same base URL the article's `url` is built
187
+ * on. The rule itself lives in `web/documents.ts`, because the page, the feed
188
+ * item and the object are one identity now rather than three.
127
189
  */
128
190
  export function articleObjectId(context, document) {
129
- const stored = document.activitypub?.id;
130
- if (stored !== undefined && stored !== '') {
131
- try {
132
- return new URL(stored);
133
- }
134
- catch {
135
- // A hand-written `activitypub.id` that is not a URL is not an id. Fall
136
- // back to the derived one rather than failing the delivery.
137
- }
138
- }
139
- return context.getObjectUri(Article, { slug: document.slug });
191
+ return new URL(postObjectId(document, context.data.config.baseUrl));
140
192
  }
141
193
  /**
142
194
  * Which revision of a document an `Update` is announcing.
@@ -1 +1 @@
1
- {"version":3,"file":"article.js","sourceRoot":"","sources":["../../src/federation/article.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"article.js","sourceRoot":"","sources":["../../src/federation/article.ts"],"names":[],"mappings":"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"}
@@ -1,20 +1,25 @@
1
+ import type { Recipient } from '@fedify/vocab';
2
+ import type { User } from '../admin/accounts.ts';
1
3
  import type { AdminStore, Delivery, Follower } from '../admin/store.ts';
2
4
  import type { ResolvedConfig } from '../config.ts';
3
5
  import type { ContentStore } from '../content/store.ts';
4
6
  import type { DocumentChange } from '../content/sync.ts';
5
7
  import type { SiteFederation } from './federation.ts';
6
- /** What one activity's delivery came to, follower by follower. */
8
+ /** What one activity's delivery came to, recipient by recipient. */
7
9
  export interface DeliveryReport {
8
10
  /** The activity that went out. */
9
11
  readonly activityId: string;
10
12
  /** `Create`, `Update` or `Delete`. */
11
13
  readonly activityType: string;
12
14
  /**
13
- * The ActivityStreams id of what it was about: a post, or the site's own
14
- * actor when the profile itself was what moved.
15
+ * The ActivityStreams id of what it was about: a post, or a user's own actor
16
+ * when the profile itself was what moved.
15
17
  */
16
18
  readonly objectId: string;
17
- /** One row per follower, as recorded. Empty when nobody follows the site. */
19
+ /**
20
+ * One row per follower and per accepted relay, as recorded. Empty when the
21
+ * author has no followers and the site has no relay.
22
+ */
18
23
  readonly deliveries: readonly Delivery[];
19
24
  }
20
25
  /** Where a delivery service reports what it could not do. `console` will do. */
@@ -35,7 +40,8 @@ export interface CreateDeliveryServiceOptions {
35
40
  logger?: DeliveryLogger | undefined;
36
41
  }
37
42
  /**
38
- * Sends a site's posts to its followers, and remembers how that went.
43
+ * Sends a site's posts to its followers and its relays, and remembers how that
44
+ * went.
39
45
  *
40
46
  * Deliveries run one after another on a queue of their own rather than at
41
47
  * once, because ActivityPub has no way of saying that a `Create` came before
@@ -50,22 +56,34 @@ export interface DeliveryService {
50
56
  */
51
57
  handle(change: DocumentChange): Promise<void>;
52
58
  /**
53
- * Tell the followers that the site's own profile has moved: an `Update`
54
- * whose object is the actor, which is how a peer learns that the name, the
59
+ * Tell one user's followers that their profile has moved: an `Update` whose
60
+ * object is their actor, which is how a peer learns that the name, the
55
61
  * summary or the avatar it cached is out of date.
56
62
  *
57
- * `undefined` when nobody follows the site, in which case nothing is built
58
- * and nothing is recorded: there is no cached profile anywhere to refresh.
63
+ * `undefined` when that user has no followers and the site has no accepted
64
+ * relay, in which case nothing is built and nothing is recorded: there is no
65
+ * cached profile anywhere to refresh.
59
66
  */
60
- updateActor(): Promise<DeliveryReport | undefined>;
67
+ updateActor(user: User): Promise<DeliveryReport | undefined>;
61
68
  /**
62
- * Send a recorded activity again, to every follower the site has now.
69
+ * Send one post as it now reads to every follower and every accepted relay
70
+ * the site has.
71
+ *
72
+ * Not "send that activity again": the activity is built from the file at the
73
+ * moment this is called (decision-9), so a follower whose server was down
74
+ * ends up holding the post as it stands rather than the revision that failed
75
+ * to reach it. Which activity that is follows the same rule a save does — a
76
+ * published post no follower has been told about is a `Create` and is
77
+ * stamped, a published post they have is an `Update`, a draft or a trashed
78
+ * one is a `Delete` of a `Tombstone` — so a resend and an ordinary publish
79
+ * produce the same shapes.
63
80
  *
64
- * decision-5 accepts that an activity queued when the process exits is lost
65
- * and promises this as the way back. `undefined` means no such activity was
66
- * ever sent.
81
+ * `undefined` when there is nothing to send: no post answers to that slug,
82
+ * or the post is one nobody outside the site has ever been told about and is
83
+ * not published now, so there is neither a copy to withdraw nor anything to
84
+ * announce.
67
85
  */
68
- redeliver(activityId: string): Promise<DeliveryReport | undefined>;
86
+ resend(slug: string): Promise<DeliveryReport | undefined>;
69
87
  /** Resolve once every queued delivery has finished, however it finished. */
70
88
  settled(): Promise<void>;
71
89
  }
@@ -82,6 +100,36 @@ export interface DeliveryService {
82
100
  * archive to every follower every time somebody deleted the database.
83
101
  */
84
102
  export declare function createDeliveryService(options: CreateDeliveryServiceOptions): DeliveryService;
103
+ /**
104
+ * One inbox a POST goes to, and who is behind it.
105
+ *
106
+ * The unit a fan-out works in. A follower group and a relay are the same thing
107
+ * from here — an inbox, the recipients Fedify addresses it with, and the actors
108
+ * whose delivery rows the outcome is written to — which is what lets a relay
109
+ * be recorded like a follower without pretending to be one.
110
+ */
111
+ export interface DeliveryTarget {
112
+ /** The inbox one POST reaches: a shared inbox, a personal one, or a relay's. */
113
+ readonly inboxId: string;
114
+ /** What Fedify is handed to address it. */
115
+ readonly recipients: Recipient[];
116
+ /** Whose outcome rows this delivery writes: the followers, or the relay. */
117
+ readonly actorIds: readonly string[];
118
+ }
119
+ /**
120
+ * Everywhere one public activity goes: one user's followers, grouped by the
121
+ * inbox they share, and every accepted relay.
122
+ *
123
+ * The followers are one person's (decision-14) and the relays are the site's:
124
+ * a relay subscribes to everything public this site sends, whoever wrote it,
125
+ * so it is a target of every author's activities.
126
+ *
127
+ * A relay is one target of its own rather than a member of a group, because it
128
+ * is one inbox with one actor behind it and no shared inbox to fold into. A
129
+ * pending or rejected relay is not here at all — {@link acceptedRelays} is
130
+ * where that rule lives.
131
+ */
132
+ export declare function deliveryTargets(admin: AdminStore, username: string): DeliveryTarget[];
85
133
  /**
86
134
  * Followers keyed by the inbox one POST to which reaches them: the instance's
87
135
  * shared inbox where it published one, and the follower's own where it did not.
@@ -1 +1 @@
1
- {"version":3,"file":"delivery.d.ts","sourceRoot":"","sources":["../../src/federation/delivery.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAkB,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACxF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAGnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAUzD,OAAO,KAAK,EAAyB,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAK7E,kEAAkE;AAClE,MAAM,WAAW,cAAc;IAC7B,kCAAkC;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,sCAAsC;IACtC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,6EAA6E;IAC7E,QAAQ,CAAC,UAAU,EAAE,SAAS,QAAQ,EAAE,CAAC;CAC1C;AAED,gFAAgF;AAChF,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,gDAAgD;AAChD,MAAM,WAAW,4BAA4B;IAC3C,gFAAgF;IAChF,UAAU,EAAE,cAAc,CAAC;IAC3B,sCAAsC;IACtC,KAAK,EAAE,UAAU,CAAC;IAClB,yEAAyE;IACzE,KAAK,EAAE,YAAY,CAAC;IACpB,uDAAuD;IACvD,MAAM,EAAE,cAAc,CAAC;IACvB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;CACrC;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C;;;;;;;OAOG;IACH,WAAW,IAAI,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;IACnD;;;;;;OAMG;IACH,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;IACnE,4EAA4E;IAC5E,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,4BAA4B,GAAG,eAAe,CAkR5F;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,SAAS,QAAQ,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAWpF"}
1
+ {"version":3,"file":"delivery.d.ts","sourceRoot":"","sources":["../../src/federation/delivery.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAkB,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACxF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAGnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAWzD,OAAO,KAAK,EAAyB,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAK7E,oEAAoE;AACpE,MAAM,WAAW,cAAc;IAC7B,kCAAkC;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,sCAAsC;IACtC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,QAAQ,CAAC,UAAU,EAAE,SAAS,QAAQ,EAAE,CAAC;CAC1C;AAED,gFAAgF;AAChF,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,gDAAgD;AAChD,MAAM,WAAW,4BAA4B;IAC3C,gFAAgF;IAChF,UAAU,EAAE,cAAc,CAAC;IAC3B,sCAAsC;IACtC,KAAK,EAAE,UAAU,CAAC;IAClB,yEAAyE;IACzE,KAAK,EAAE,YAAY,CAAC;IACpB,uDAAuD;IACvD,MAAM,EAAE,cAAc,CAAC;IACvB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;CACrC;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C;;;;;;;;OAQG;IACH,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;IAC7D;;;;;;;;;;;;;;;;;OAiBG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;IAC1D,4EAA4E;IAC5E,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,4BAA4B,GAAG,eAAe,CAyT5F;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,cAAc;IAC7B,gFAAgF;IAChF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,2CAA2C;IAC3C,QAAQ,CAAC,UAAU,EAAE,SAAS,EAAE,CAAC;IACjC,4EAA4E;IAC5E,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,cAAc,EAAE,CAuBrF;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,SAAS,QAAQ,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAWpF"}