@geekity/cms 0.29.0 → 0.31.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 (1393) hide show
  1. package/README.md +26 -4214
  2. package/admin/pages/settings/privacy.njk +1 -1
  3. package/dist/access-log.d.ts +2 -10
  4. package/dist/access-log.d.ts.map +1 -1
  5. package/dist/access-log.js +1 -1
  6. package/dist/access-log.js.map +1 -1
  7. package/dist/{web → admin}/admin-bar.d.ts +3 -2
  8. package/dist/admin/admin-bar.d.ts.map +1 -0
  9. package/dist/{web → admin}/admin-bar.js +20 -17
  10. package/dist/admin/admin-bar.js.map +1 -0
  11. package/dist/{indieauth → admin}/app-activity.d.ts +2 -2
  12. package/dist/admin/app-activity.d.ts.map +1 -0
  13. package/dist/{indieauth → admin}/app-activity.js +5 -5
  14. package/dist/admin/app-activity.js.map +1 -0
  15. package/dist/admin/appearance.d.ts +3 -3
  16. package/dist/admin/appearance.d.ts.map +1 -1
  17. package/dist/admin/appearance.js +12 -6
  18. package/dist/admin/appearance.js.map +1 -1
  19. package/dist/admin/assets.d.ts +1 -8
  20. package/dist/admin/assets.d.ts.map +1 -1
  21. package/dist/admin/assets.js +2 -9
  22. package/dist/admin/assets.js.map +1 -1
  23. package/dist/admin/comments.d.ts +2 -2
  24. package/dist/admin/comments.d.ts.map +1 -1
  25. package/dist/admin/comments.js +16 -17
  26. package/dist/admin/comments.js.map +1 -1
  27. package/dist/{indieauth → admin}/connected-apps.d.ts +2 -2
  28. package/dist/admin/connected-apps.d.ts.map +1 -0
  29. package/dist/{indieauth → admin}/connected-apps.js +18 -19
  30. package/dist/admin/connected-apps.js.map +1 -0
  31. package/dist/admin/credentials.js +1 -1
  32. package/dist/admin/credentials.js.map +1 -1
  33. package/dist/admin/dev-mode.d.ts +1 -1
  34. package/dist/admin/dev-mode.d.ts.map +1 -1
  35. package/dist/admin/documents.d.ts +16 -301
  36. package/dist/admin/documents.d.ts.map +1 -1
  37. package/dist/admin/documents.js +74 -1032
  38. package/dist/admin/documents.js.map +1 -1
  39. package/dist/admin/editor-actions.d.ts +3 -2
  40. package/dist/admin/editor-actions.d.ts.map +1 -1
  41. package/dist/admin/editor-actions.js +8 -8
  42. package/dist/admin/editor-actions.js.map +1 -1
  43. package/dist/admin/editor-fields.d.ts +45 -0
  44. package/dist/admin/editor-fields.d.ts.map +1 -0
  45. package/dist/admin/editor-fields.js +71 -0
  46. package/dist/admin/editor-fields.js.map +1 -0
  47. package/dist/admin/editor-layout.d.ts +2 -10
  48. package/dist/admin/editor-layout.d.ts.map +1 -1
  49. package/dist/admin/editor-layout.js +1 -1
  50. package/dist/admin/editor-layout.js.map +1 -1
  51. package/dist/admin/federation.d.ts +5 -5
  52. package/dist/admin/federation.d.ts.map +1 -1
  53. package/dist/admin/federation.js +16 -18
  54. package/dist/admin/federation.js.map +1 -1
  55. package/dist/admin/flash.d.ts +2 -2
  56. package/dist/admin/flash.d.ts.map +1 -1
  57. package/dist/admin/headers.d.ts +1 -1
  58. package/dist/admin/headers.d.ts.map +1 -1
  59. package/dist/admin/headers.js +1 -1
  60. package/dist/admin/headers.js.map +1 -1
  61. package/dist/admin/index.d.ts +38 -20
  62. package/dist/admin/index.d.ts.map +1 -1
  63. package/dist/admin/index.js +27 -13
  64. package/dist/admin/index.js.map +1 -1
  65. package/dist/{indieauth/consent.d.ts → admin/indieauth-consent.d.ts} +4 -4
  66. package/dist/admin/indieauth-consent.d.ts.map +1 -0
  67. package/dist/{indieauth/consent.js → admin/indieauth-consent.js} +17 -18
  68. package/dist/admin/indieauth-consent.js.map +1 -0
  69. package/dist/admin/legacy-migrations.d.ts +131 -0
  70. package/dist/admin/legacy-migrations.d.ts.map +1 -0
  71. package/dist/admin/legacy-migrations.js +235 -0
  72. package/dist/admin/legacy-migrations.js.map +1 -0
  73. package/dist/admin/media.d.ts +4 -108
  74. package/dist/admin/media.d.ts.map +1 -1
  75. package/dist/admin/media.js +19 -187
  76. package/dist/admin/media.js.map +1 -1
  77. package/dist/admin/menu.d.ts.map +1 -1
  78. package/dist/admin/menu.js +7 -7
  79. package/dist/admin/menu.js.map +1 -1
  80. package/dist/admin/messages.d.ts +1 -1
  81. package/dist/admin/messages.d.ts.map +1 -1
  82. package/dist/admin/messages.js +10 -12
  83. package/dist/admin/messages.js.map +1 -1
  84. package/dist/admin/navigation.d.ts +3 -3
  85. package/dist/admin/navigation.d.ts.map +1 -1
  86. package/dist/admin/navigation.js +9 -12
  87. package/dist/admin/navigation.js.map +1 -1
  88. package/dist/admin/personal-data.d.ts +1 -1
  89. package/dist/admin/personal-data.d.ts.map +1 -1
  90. package/dist/admin/personal-data.js +3 -6
  91. package/dist/admin/personal-data.js.map +1 -1
  92. package/dist/admin/plugins.d.ts +1 -1
  93. package/dist/admin/plugins.d.ts.map +1 -1
  94. package/dist/admin/plugins.js +11 -15
  95. package/dist/admin/plugins.js.map +1 -1
  96. package/dist/admin/preview.d.ts +2 -1
  97. package/dist/admin/preview.d.ts.map +1 -1
  98. package/dist/admin/preview.js +28 -32
  99. package/dist/admin/preview.js.map +1 -1
  100. package/dist/admin/recovery.d.ts +3 -3
  101. package/dist/admin/recovery.d.ts.map +1 -1
  102. package/dist/admin/recovery.js +10 -12
  103. package/dist/admin/recovery.js.map +1 -1
  104. package/dist/admin/routes.d.ts +1 -3
  105. package/dist/admin/routes.d.ts.map +1 -1
  106. package/dist/admin/routes.js +28 -26
  107. package/dist/admin/routes.js.map +1 -1
  108. package/dist/admin/settings-discussion.d.ts.map +1 -1
  109. package/dist/admin/settings-discussion.js +7 -4
  110. package/dist/admin/settings-discussion.js.map +1 -1
  111. package/dist/admin/settings-email.d.ts +1 -1
  112. package/dist/admin/settings-email.d.ts.map +1 -1
  113. package/dist/admin/settings-email.js +13 -10
  114. package/dist/admin/settings-email.js.map +1 -1
  115. package/dist/admin/settings-general.d.ts.map +1 -1
  116. package/dist/admin/settings-general.js +10 -7
  117. package/dist/admin/settings-general.js.map +1 -1
  118. package/dist/admin/settings-page.d.ts +3 -4
  119. package/dist/admin/settings-page.d.ts.map +1 -1
  120. package/dist/admin/settings-page.js +5 -6
  121. package/dist/admin/settings-page.js.map +1 -1
  122. package/dist/admin/settings-pages.d.ts +1 -1
  123. package/dist/admin/settings-pages.d.ts.map +1 -1
  124. package/dist/admin/settings-permalinks.js +1 -1
  125. package/dist/admin/settings-permalinks.js.map +1 -1
  126. package/dist/admin/settings-reading.d.ts +2 -2
  127. package/dist/admin/settings-reading.d.ts.map +1 -1
  128. package/dist/admin/settings-reading.js +4 -3
  129. package/dist/admin/settings-reading.js.map +1 -1
  130. package/dist/admin/settings.d.ts +0 -579
  131. package/dist/admin/settings.d.ts.map +1 -1
  132. package/dist/admin/settings.js +1 -1155
  133. package/dist/admin/settings.js.map +1 -1
  134. package/dist/admin/syndication-targets.d.ts +1 -1
  135. package/dist/admin/syndication-targets.d.ts.map +1 -1
  136. package/dist/admin/syndication-targets.js +11 -15
  137. package/dist/admin/syndication-targets.js.map +1 -1
  138. package/dist/admin/taxonomy.d.ts +2 -2
  139. package/dist/admin/taxonomy.d.ts.map +1 -1
  140. package/dist/admin/taxonomy.js +8 -11
  141. package/dist/admin/taxonomy.js.map +1 -1
  142. package/dist/admin/templates.js +1 -1
  143. package/dist/admin/templates.js.map +1 -1
  144. package/dist/admin/tools.d.ts +4 -4
  145. package/dist/admin/tools.d.ts.map +1 -1
  146. package/dist/admin/tools.js +3 -6
  147. package/dist/admin/tools.js.map +1 -1
  148. package/dist/admin/uploads.d.ts +1 -106
  149. package/dist/admin/uploads.d.ts.map +1 -1
  150. package/dist/admin/uploads.js +2 -191
  151. package/dist/admin/uploads.js.map +1 -1
  152. package/dist/admin/users.d.ts +20 -15
  153. package/dist/admin/users.d.ts.map +1 -1
  154. package/dist/admin/users.js +83 -80
  155. package/dist/admin/users.js.map +1 -1
  156. package/dist/avatars/avatars.d.ts +2 -2
  157. package/dist/avatars/avatars.d.ts.map +1 -1
  158. package/dist/avatars/avatars.js +6 -9
  159. package/dist/avatars/avatars.js.map +1 -1
  160. package/dist/avatars/index.d.ts +0 -1
  161. package/dist/avatars/index.d.ts.map +1 -1
  162. package/dist/avatars/index.js +0 -1
  163. package/dist/avatars/index.js.map +1 -1
  164. package/dist/cache.d.ts +4 -2
  165. package/dist/cache.d.ts.map +1 -1
  166. package/dist/cache.js +11 -5
  167. package/dist/cache.js.map +1 -1
  168. package/dist/cli.d.ts +2 -33
  169. package/dist/cli.d.ts.map +1 -1
  170. package/dist/cli.js +245 -267
  171. package/dist/cli.js.map +1 -1
  172. package/dist/cms/app.d.ts +11 -0
  173. package/dist/cms/app.d.ts.map +1 -0
  174. package/dist/cms/app.js +115 -0
  175. package/dist/cms/app.js.map +1 -0
  176. package/dist/cms/boot.d.ts +14 -0
  177. package/dist/cms/boot.d.ts.map +1 -0
  178. package/dist/cms/boot.js +107 -0
  179. package/dist/cms/boot.js.map +1 -0
  180. package/dist/cms/create.d.ts +248 -0
  181. package/dist/cms/create.d.ts.map +1 -0
  182. package/dist/cms/create.js +167 -0
  183. package/dist/cms/create.js.map +1 -0
  184. package/dist/cms/lifecycle.d.ts +11 -0
  185. package/dist/cms/lifecycle.d.ts.map +1 -0
  186. package/dist/cms/lifecycle.js +15 -0
  187. package/dist/cms/lifecycle.js.map +1 -0
  188. package/dist/{web/errors.d.ts → cms/server-error.d.ts} +2 -8
  189. package/dist/cms/server-error.d.ts.map +1 -0
  190. package/dist/{web/errors.js → cms/server-error.js} +4 -14
  191. package/dist/cms/server-error.js.map +1 -0
  192. package/dist/cms/services.d.ts +55 -0
  193. package/dist/cms/services.d.ts.map +1 -0
  194. package/dist/cms/services.js +353 -0
  195. package/dist/cms/services.js.map +1 -0
  196. package/dist/cms/site-records.d.ts +4 -0
  197. package/dist/cms/site-records.d.ts.map +1 -0
  198. package/dist/cms/site-records.js +15 -0
  199. package/dist/cms/site-records.js.map +1 -0
  200. package/dist/comments/akismet.d.ts +1 -1
  201. package/dist/comments/akismet.d.ts.map +1 -1
  202. package/dist/comments/akismet.js +1 -3
  203. package/dist/comments/akismet.js.map +1 -1
  204. package/dist/comments/conversation.d.ts +334 -0
  205. package/dist/comments/conversation.d.ts.map +1 -0
  206. package/dist/comments/conversation.js +51 -0
  207. package/dist/comments/conversation.js.map +1 -0
  208. package/dist/comments/form.d.ts +2 -2
  209. package/dist/comments/form.d.ts.map +1 -1
  210. package/dist/comments/form.js +2 -2
  211. package/dist/comments/form.js.map +1 -1
  212. package/dist/comments/index.d.ts +12 -6
  213. package/dist/comments/index.d.ts.map +1 -1
  214. package/dist/comments/index.js +7 -4
  215. package/dist/comments/index.js.map +1 -1
  216. package/dist/comments/intake.d.ts +147 -0
  217. package/dist/comments/intake.d.ts.map +1 -0
  218. package/dist/comments/intake.js +161 -0
  219. package/dist/comments/intake.js.map +1 -0
  220. package/dist/comments/markdown.d.ts.map +1 -1
  221. package/dist/comments/markdown.js +2 -9
  222. package/dist/comments/markdown.js.map +1 -1
  223. package/dist/comments/migrations.d.ts +45 -0
  224. package/dist/comments/migrations.d.ts.map +1 -0
  225. package/dist/comments/migrations.js +194 -0
  226. package/dist/comments/migrations.js.map +1 -0
  227. package/dist/comments/moderate.d.ts +2 -2
  228. package/dist/comments/moderate.d.ts.map +1 -1
  229. package/dist/comments/moderate.js +3 -13
  230. package/dist/comments/moderate.js.map +1 -1
  231. package/dist/comments/page-form.d.ts +52 -0
  232. package/dist/comments/page-form.d.ts.map +1 -0
  233. package/dist/comments/page-form.js +62 -0
  234. package/dist/comments/page-form.js.map +1 -0
  235. package/dist/comments/policy.d.ts +1 -9
  236. package/dist/comments/policy.d.ts.map +1 -1
  237. package/dist/comments/policy.js +3 -18
  238. package/dist/comments/policy.js.map +1 -1
  239. package/dist/comments/records.d.ts +25 -173
  240. package/dist/comments/records.d.ts.map +1 -1
  241. package/dist/comments/records.js +69 -265
  242. package/dist/comments/records.js.map +1 -1
  243. package/dist/comments/reply-notices.d.ts +5 -5
  244. package/dist/comments/reply-notices.d.ts.map +1 -1
  245. package/dist/comments/reply-notices.js +6 -6
  246. package/dist/comments/reply-notices.js.map +1 -1
  247. package/dist/comments/reply-post.d.ts +2 -2
  248. package/dist/comments/reply-post.d.ts.map +1 -1
  249. package/dist/comments/reply-post.js +7 -5
  250. package/dist/comments/reply-post.js.map +1 -1
  251. package/dist/comments/routes.d.ts +3 -3
  252. package/dist/comments/routes.d.ts.map +1 -1
  253. package/dist/comments/routes.js +22 -34
  254. package/dist/comments/routes.js.map +1 -1
  255. package/dist/comments/submission.d.ts +5 -100
  256. package/dist/comments/submission.d.ts.map +1 -1
  257. package/dist/comments/submission.js +5 -20
  258. package/dist/comments/submission.js.map +1 -1
  259. package/dist/comments/viewer.d.ts +1 -25
  260. package/dist/comments/viewer.d.ts.map +1 -1
  261. package/dist/comments/viewer.js +1 -44
  262. package/dist/comments/viewer.js.map +1 -1
  263. package/dist/config-loader.d.ts +35 -0
  264. package/dist/config-loader.d.ts.map +1 -0
  265. package/dist/config-loader.js +116 -0
  266. package/dist/config-loader.js.map +1 -0
  267. package/dist/config.d.ts +72 -50
  268. package/dist/config.d.ts.map +1 -1
  269. package/dist/config.js +132 -180
  270. package/dist/config.js.map +1 -1
  271. package/dist/contact/delivery.d.ts +1 -1
  272. package/dist/contact/delivery.d.ts.map +1 -1
  273. package/dist/contact/delivery.js +5 -13
  274. package/dist/contact/delivery.js.map +1 -1
  275. package/dist/contact/form.d.ts +2 -4
  276. package/dist/contact/form.d.ts.map +1 -1
  277. package/dist/contact/form.js +3 -4
  278. package/dist/contact/form.js.map +1 -1
  279. package/dist/contact/index.d.ts +2 -2
  280. package/dist/contact/index.d.ts.map +1 -1
  281. package/dist/contact/index.js +2 -2
  282. package/dist/contact/index.js.map +1 -1
  283. package/dist/contact/records.d.ts.map +1 -1
  284. package/dist/contact/records.js +8 -11
  285. package/dist/contact/records.js.map +1 -1
  286. package/dist/contact/submission.d.ts +2 -2
  287. package/dist/contact/submission.d.ts.map +1 -1
  288. package/dist/contact/submission.js +7 -16
  289. package/dist/contact/submission.js.map +1 -1
  290. package/dist/{images → content}/alt-text.d.ts +1 -1
  291. package/dist/content/alt-text.d.ts.map +1 -0
  292. package/dist/{images → content}/alt-text.js +3 -5
  293. package/dist/content/alt-text.js.map +1 -0
  294. package/dist/content/authors.d.ts +79 -0
  295. package/dist/content/authors.d.ts.map +1 -0
  296. package/dist/content/authors.js +106 -0
  297. package/dist/content/authors.js.map +1 -0
  298. package/dist/content/citation.d.ts +3 -0
  299. package/dist/content/citation.d.ts.map +1 -1
  300. package/dist/content/citation.js +3 -0
  301. package/dist/content/citation.js.map +1 -1
  302. package/dist/content/comments.d.ts +3 -0
  303. package/dist/content/comments.d.ts.map +1 -0
  304. package/dist/content/comments.js +3 -0
  305. package/dist/content/comments.js.map +1 -0
  306. package/dist/content/contact.d.ts +3 -0
  307. package/dist/content/contact.d.ts.map +1 -0
  308. package/dist/content/contact.js +3 -0
  309. package/dist/content/contact.js.map +1 -0
  310. package/dist/content/document-form.d.ts +195 -0
  311. package/dist/content/document-form.d.ts.map +1 -0
  312. package/dist/content/document-form.js +201 -0
  313. package/dist/content/document-form.js.map +1 -0
  314. package/dist/content/document-kind.d.ts +55 -0
  315. package/dist/content/document-kind.d.ts.map +1 -0
  316. package/dist/content/document-kind.js +30 -0
  317. package/dist/content/document-kind.js.map +1 -0
  318. package/dist/{admin/enclosure-field.d.ts → content/enclosure-form.d.ts} +14 -34
  319. package/dist/content/enclosure-form.d.ts.map +1 -0
  320. package/dist/{admin/enclosure-field.js → content/enclosure-form.js} +39 -76
  321. package/dist/content/enclosure-form.js.map +1 -0
  322. package/dist/content/enclosure.d.ts.map +1 -1
  323. package/dist/content/enclosure.js +3 -4
  324. package/dist/content/enclosure.js.map +1 -1
  325. package/dist/{admin/event-field.d.ts → content/event-form.d.ts} +6 -5
  326. package/dist/content/event-form.d.ts.map +1 -0
  327. package/dist/{admin/event-field.js → content/event-form.js} +45 -12
  328. package/dist/content/event-form.js.map +1 -0
  329. package/dist/content/excerpt.d.ts +25 -0
  330. package/dist/content/excerpt.d.ts.map +1 -0
  331. package/dist/content/excerpt.js +43 -0
  332. package/dist/content/excerpt.js.map +1 -0
  333. package/dist/content/form-error.d.ts +10 -0
  334. package/dist/content/form-error.d.ts.map +1 -0
  335. package/dist/content/form-error.js +2 -0
  336. package/dist/content/form-error.js.map +1 -0
  337. package/dist/{web → content}/guids.d.ts +14 -19
  338. package/dist/content/guids.d.ts.map +1 -0
  339. package/dist/{web → content}/guids.js +30 -19
  340. package/dist/content/guids.js.map +1 -0
  341. package/dist/content/image-tags.d.ts +25 -0
  342. package/dist/content/image-tags.d.ts.map +1 -0
  343. package/dist/content/image-tags.js +55 -0
  344. package/dist/content/image-tags.js.map +1 -0
  345. package/dist/content/index.d.ts +9 -4
  346. package/dist/content/index.d.ts.map +1 -1
  347. package/dist/content/index.js +5 -2
  348. package/dist/content/index.js.map +1 -1
  349. package/dist/content/language.d.ts +19 -0
  350. package/dist/content/language.d.ts.map +1 -0
  351. package/dist/content/language.js +19 -0
  352. package/dist/content/language.js.map +1 -0
  353. package/dist/content/license.d.ts.map +1 -0
  354. package/dist/content/license.js.map +1 -0
  355. package/dist/{web → content}/locale.d.ts +0 -6
  356. package/dist/content/locale.d.ts.map +1 -0
  357. package/dist/{web → content}/locale.js +1 -6
  358. package/dist/content/locale.js.map +1 -0
  359. package/dist/content/location-form.d.ts +17 -0
  360. package/dist/content/location-form.d.ts.map +1 -0
  361. package/dist/{admin/location-field.js → content/location-form.js} +2 -23
  362. package/dist/content/location-form.js.map +1 -0
  363. package/dist/content/location.d.ts.map +1 -1
  364. package/dist/content/location.js +1 -3
  365. package/dist/content/location.js.map +1 -1
  366. package/dist/content/markdown-links.d.ts +11 -0
  367. package/dist/content/markdown-links.d.ts.map +1 -0
  368. package/dist/content/markdown-links.js +223 -0
  369. package/dist/content/markdown-links.js.map +1 -0
  370. package/dist/content/markdown.d.ts +2 -1
  371. package/dist/content/markdown.d.ts.map +1 -1
  372. package/dist/content/markdown.js +1 -1
  373. package/dist/content/markdown.js.map +1 -1
  374. package/dist/content/migrated.js +1 -1
  375. package/dist/content/migrated.js.map +1 -1
  376. package/dist/content/parser.d.ts.map +1 -1
  377. package/dist/content/parser.js +1 -12
  378. package/dist/content/parser.js.map +1 -1
  379. package/dist/content/permalinks.d.ts +34 -0
  380. package/dist/content/permalinks.d.ts.map +1 -0
  381. package/dist/{web/documents.js → content/permalinks.js} +6 -56
  382. package/dist/content/permalinks.js.map +1 -0
  383. package/dist/content/photo-form.d.ts +28 -0
  384. package/dist/content/photo-form.d.ts.map +1 -0
  385. package/dist/{admin/photo-field.js → content/photo-form.js} +36 -36
  386. package/dist/content/photo-form.js.map +1 -0
  387. package/dist/content/photo.d.ts +1 -1
  388. package/dist/content/photo.d.ts.map +1 -1
  389. package/dist/content/photo.js +1 -1
  390. package/dist/content/photo.js.map +1 -1
  391. package/dist/content/post-fields.d.ts +40 -0
  392. package/dist/content/post-fields.d.ts.map +1 -0
  393. package/dist/content/post-fields.js +256 -0
  394. package/dist/content/post-fields.js.map +1 -0
  395. package/dist/{admin/read-field.d.ts → content/read-form.d.ts} +6 -4
  396. package/dist/content/read-form.d.ts.map +1 -0
  397. package/dist/content/read-form.js +99 -0
  398. package/dist/content/read-form.js.map +1 -0
  399. package/dist/content/read.d.ts.map +1 -1
  400. package/dist/content/read.js +7 -11
  401. package/dist/content/read.js.map +1 -1
  402. package/dist/content/redirects.d.ts +84 -0
  403. package/dist/content/redirects.d.ts.map +1 -0
  404. package/dist/content/redirects.js +234 -0
  405. package/dist/content/redirects.js.map +1 -0
  406. package/dist/content/sanitize.d.ts +13 -0
  407. package/dist/content/sanitize.d.ts.map +1 -0
  408. package/dist/{web → content}/sanitize.js +4 -71
  409. package/dist/content/sanitize.js.map +1 -0
  410. package/dist/content/save.d.ts +5 -8
  411. package/dist/content/save.d.ts.map +1 -1
  412. package/dist/content/save.js +5 -26
  413. package/dist/content/save.js.map +1 -1
  414. package/dist/content/schedule.d.ts +2 -2
  415. package/dist/content/schedule.d.ts.map +1 -1
  416. package/dist/content/schedule.js +1 -3
  417. package/dist/content/schedule.js.map +1 -1
  418. package/dist/content/served.d.ts +58 -0
  419. package/dist/content/served.d.ts.map +1 -0
  420. package/dist/content/served.js +65 -0
  421. package/dist/content/served.js.map +1 -0
  422. package/dist/content/site-links.d.ts +72 -0
  423. package/dist/content/site-links.d.ts.map +1 -0
  424. package/dist/content/site-links.js +191 -0
  425. package/dist/content/site-links.js.map +1 -0
  426. package/dist/content/sqlite/archive.d.ts +4 -0
  427. package/dist/content/sqlite/archive.d.ts.map +1 -0
  428. package/dist/content/sqlite/archive.js +96 -0
  429. package/dist/content/sqlite/archive.js.map +1 -0
  430. package/dist/content/sqlite/backlinks.d.ts +4 -0
  431. package/dist/content/sqlite/backlinks.d.ts.map +1 -0
  432. package/dist/content/sqlite/backlinks.js +46 -0
  433. package/dist/content/sqlite/backlinks.js.map +1 -0
  434. package/dist/content/sqlite/catalog.d.ts +4 -0
  435. package/dist/content/sqlite/catalog.d.ts.map +1 -0
  436. package/dist/content/sqlite/catalog.js +62 -0
  437. package/dist/content/sqlite/catalog.js.map +1 -0
  438. package/dist/content/sqlite/clauses.d.ts +57 -0
  439. package/dist/content/sqlite/clauses.d.ts.map +1 -0
  440. package/dist/content/sqlite/clauses.js +76 -0
  441. package/dist/content/sqlite/clauses.js.map +1 -0
  442. package/dist/content/sqlite/database.d.ts +26 -0
  443. package/dist/content/sqlite/database.d.ts.map +1 -0
  444. package/dist/content/sqlite/database.js +27 -0
  445. package/dist/content/sqlite/database.js.map +1 -0
  446. package/dist/content/sqlite/documents.d.ts +12 -0
  447. package/dist/content/sqlite/documents.d.ts.map +1 -0
  448. package/dist/content/sqlite/documents.js +40 -0
  449. package/dist/content/sqlite/documents.js.map +1 -0
  450. package/dist/content/sqlite/lookups.d.ts +6 -0
  451. package/dist/content/sqlite/lookups.d.ts.map +1 -0
  452. package/dist/content/sqlite/lookups.js +25 -0
  453. package/dist/content/sqlite/lookups.js.map +1 -0
  454. package/dist/content/sqlite/open.d.ts +8 -0
  455. package/dist/content/sqlite/open.d.ts.map +1 -0
  456. package/dist/content/sqlite/open.js +63 -0
  457. package/dist/content/sqlite/open.js.map +1 -0
  458. package/dist/content/sqlite/replies.d.ts +4 -0
  459. package/dist/content/sqlite/replies.d.ts.map +1 -0
  460. package/dist/content/sqlite/replies.js +21 -0
  461. package/dist/content/sqlite/replies.js.map +1 -0
  462. package/dist/content/sqlite/rows.d.ts +22 -0
  463. package/dist/content/sqlite/rows.d.ts.map +1 -0
  464. package/dist/content/sqlite/rows.js +93 -0
  465. package/dist/content/sqlite/rows.js.map +1 -0
  466. package/dist/content/sqlite/schedule.d.ts +4 -0
  467. package/dist/content/sqlite/schedule.d.ts.map +1 -0
  468. package/dist/content/sqlite/schedule.js +16 -0
  469. package/dist/content/sqlite/schedule.js.map +1 -0
  470. package/dist/content/sqlite/schema.d.ts +10 -0
  471. package/dist/content/sqlite/schema.d.ts.map +1 -0
  472. package/dist/content/sqlite/schema.js +209 -0
  473. package/dist/content/sqlite/schema.js.map +1 -0
  474. package/dist/content/sqlite/search.d.ts +4 -0
  475. package/dist/content/sqlite/search.d.ts.map +1 -0
  476. package/dist/content/sqlite/search.js +54 -0
  477. package/dist/content/sqlite/search.js.map +1 -0
  478. package/dist/content/sqlite/spellings.d.ts +6 -0
  479. package/dist/content/sqlite/spellings.d.ts.map +1 -0
  480. package/dist/content/sqlite/spellings.js +80 -0
  481. package/dist/content/sqlite/spellings.js.map +1 -0
  482. package/dist/content/sqlite/taxonomy.d.ts +4 -0
  483. package/dist/content/sqlite/taxonomy.d.ts.map +1 -0
  484. package/dist/content/sqlite/taxonomy.js +75 -0
  485. package/dist/content/sqlite/taxonomy.js.map +1 -0
  486. package/dist/content/sqlite/writes.d.ts +9 -0
  487. package/dist/content/sqlite/writes.d.ts.map +1 -0
  488. package/dist/content/sqlite/writes.js +164 -0
  489. package/dist/content/sqlite/writes.js.map +1 -0
  490. package/dist/content/store.d.ts +142 -137
  491. package/dist/content/store.d.ts.map +1 -1
  492. package/dist/content/store.js +0 -1050
  493. package/dist/content/store.js.map +1 -1
  494. package/dist/content/sync.d.ts +12 -4
  495. package/dist/content/sync.d.ts.map +1 -1
  496. package/dist/content/sync.js +24 -41
  497. package/dist/content/sync.js.map +1 -1
  498. package/dist/content/syndicate-to.d.ts +25 -0
  499. package/dist/content/syndicate-to.d.ts.map +1 -0
  500. package/dist/content/syndicate-to.js +8 -0
  501. package/dist/content/syndicate-to.js.map +1 -0
  502. package/dist/{web → content}/taxonomy.d.ts +1 -1
  503. package/dist/content/taxonomy.d.ts.map +1 -0
  504. package/dist/{web → content}/taxonomy.js +2 -2
  505. package/dist/content/taxonomy.js.map +1 -0
  506. package/dist/content/time.d.ts +2 -2
  507. package/dist/content/time.d.ts.map +1 -1
  508. package/dist/content/time.js +3 -3
  509. package/dist/content/time.js.map +1 -1
  510. package/dist/content/trash.d.ts +35 -0
  511. package/dist/content/trash.d.ts.map +1 -0
  512. package/dist/content/trash.js +83 -0
  513. package/dist/content/trash.js.map +1 -0
  514. package/dist/content/uploads.d.ts +24 -0
  515. package/dist/content/uploads.d.ts.map +1 -0
  516. package/dist/content/uploads.js +27 -0
  517. package/dist/content/uploads.js.map +1 -0
  518. package/dist/content/video.d.ts.map +1 -1
  519. package/dist/content/video.js +3 -5
  520. package/dist/content/video.js.map +1 -1
  521. package/dist/content/write.d.ts +84 -0
  522. package/dist/content/write.d.ts.map +1 -0
  523. package/dist/content/write.js +566 -0
  524. package/dist/content/write.js.map +1 -0
  525. package/dist/content/writer.d.ts.map +1 -1
  526. package/dist/content/writer.js +1 -2
  527. package/dist/content/writer.js.map +1 -1
  528. package/dist/dev-mode.d.ts +5 -3
  529. package/dist/dev-mode.d.ts.map +1 -1
  530. package/dist/dev-mode.js +3 -3
  531. package/dist/dev-mode.js.map +1 -1
  532. package/dist/drain.d.ts +2 -3
  533. package/dist/drain.d.ts.map +1 -1
  534. package/dist/drain.js +2 -1
  535. package/dist/drain.js.map +1 -1
  536. package/dist/exports.d.ts +26 -0
  537. package/dist/exports.d.ts.map +1 -0
  538. package/dist/exports.js +8 -0
  539. package/dist/exports.js.map +1 -0
  540. package/dist/federation/actor.d.ts +1 -1
  541. package/dist/federation/actor.d.ts.map +1 -1
  542. package/dist/federation/actor.js +6 -13
  543. package/dist/federation/actor.js.map +1 -1
  544. package/dist/federation/article.d.ts +4 -14
  545. package/dist/federation/article.d.ts.map +1 -1
  546. package/dist/federation/article.js +19 -32
  547. package/dist/federation/article.js.map +1 -1
  548. package/dist/federation/backfill.d.ts +4 -4
  549. package/dist/federation/backfill.d.ts.map +1 -1
  550. package/dist/federation/backfill.js +12 -13
  551. package/dist/federation/backfill.js.map +1 -1
  552. package/dist/federation/citations.d.ts.map +1 -1
  553. package/dist/federation/citations.js.map +1 -1
  554. package/dist/federation/cited-post.d.ts.map +1 -1
  555. package/dist/federation/cited-post.js +2 -4
  556. package/dist/federation/cited-post.js.map +1 -1
  557. package/dist/federation/delivery-plan.d.ts +85 -0
  558. package/dist/federation/delivery-plan.d.ts.map +1 -0
  559. package/dist/federation/delivery-plan.js +137 -0
  560. package/dist/federation/delivery-plan.js.map +1 -0
  561. package/dist/federation/delivery.d.ts +7 -32
  562. package/dist/federation/delivery.d.ts.map +1 -1
  563. package/dist/federation/delivery.js +64 -201
  564. package/dist/federation/delivery.js.map +1 -1
  565. package/dist/federation/federation.d.ts +5 -5
  566. package/dist/federation/federation.d.ts.map +1 -1
  567. package/dist/federation/federation.js +7 -6
  568. package/dist/federation/federation.js.map +1 -1
  569. package/dist/federation/followers.d.ts +1 -1
  570. package/dist/federation/followers.d.ts.map +1 -1
  571. package/dist/federation/inbox.d.ts +1 -1
  572. package/dist/federation/inbox.d.ts.map +1 -1
  573. package/dist/federation/inbox.js +5 -4
  574. package/dist/federation/inbox.js.map +1 -1
  575. package/dist/federation/index.d.ts +10 -8
  576. package/dist/federation/index.d.ts.map +1 -1
  577. package/dist/federation/index.js +7 -5
  578. package/dist/federation/index.js.map +1 -1
  579. package/dist/federation/keys.d.ts +8 -27
  580. package/dist/federation/keys.d.ts.map +1 -1
  581. package/dist/federation/keys.js +4 -47
  582. package/dist/federation/keys.js.map +1 -1
  583. package/dist/federation/mount.d.ts +2 -2
  584. package/dist/federation/mount.d.ts.map +1 -1
  585. package/dist/federation/mount.js +9 -7
  586. package/dist/federation/mount.js.map +1 -1
  587. package/dist/federation/paths.d.ts +1 -9
  588. package/dist/federation/paths.d.ts.map +1 -1
  589. package/dist/federation/paths.js +2 -12
  590. package/dist/federation/paths.js.map +1 -1
  591. package/dist/federation/profiles.d.ts +1 -1
  592. package/dist/federation/profiles.d.ts.map +1 -1
  593. package/dist/federation/profiles.js +5 -8
  594. package/dist/federation/profiles.js.map +1 -1
  595. package/dist/federation/quotes.d.ts +2 -2
  596. package/dist/federation/quotes.d.ts.map +1 -1
  597. package/dist/federation/quotes.js +4 -4
  598. package/dist/federation/quotes.js.map +1 -1
  599. package/dist/federation/records.d.ts +2 -2
  600. package/dist/federation/records.d.ts.map +1 -1
  601. package/dist/federation/records.js +12 -19
  602. package/dist/federation/records.js.map +1 -1
  603. package/dist/federation/relays.d.ts +2 -3
  604. package/dist/federation/relays.d.ts.map +1 -1
  605. package/dist/federation/relays.js +22 -30
  606. package/dist/federation/relays.js.map +1 -1
  607. package/dist/federation/site-loaders.js +1 -1
  608. package/dist/federation/site-loaders.js.map +1 -1
  609. package/dist/federation/webfinger.d.ts +23 -0
  610. package/dist/federation/webfinger.d.ts.map +1 -0
  611. package/dist/federation/webfinger.js +70 -0
  612. package/dist/federation/webfinger.js.map +1 -0
  613. package/dist/files/atomic.d.ts.map +1 -1
  614. package/dist/files/atomic.js +4 -9
  615. package/dist/files/atomic.js.map +1 -1
  616. package/dist/files/static-files.d.ts +21 -0
  617. package/dist/files/static-files.d.ts.map +1 -0
  618. package/dist/files/static-files.js +88 -0
  619. package/dist/files/static-files.js.map +1 -0
  620. package/dist/forms/checker.d.ts +93 -0
  621. package/dist/forms/checker.d.ts.map +1 -0
  622. package/dist/forms/checker.js +2 -0
  623. package/dist/forms/checker.js.map +1 -0
  624. package/dist/forms/protection.d.ts +3 -1
  625. package/dist/forms/protection.d.ts.map +1 -1
  626. package/dist/forms/protection.js +3 -1
  627. package/dist/forms/protection.js.map +1 -1
  628. package/dist/images/icons.js +2 -2
  629. package/dist/images/icons.js.map +1 -1
  630. package/dist/images/index.d.ts +2 -1
  631. package/dist/images/index.d.ts.map +1 -1
  632. package/dist/images/index.js +2 -1
  633. package/dist/images/index.js.map +1 -1
  634. package/dist/images/markup.d.ts +0 -20
  635. package/dist/images/markup.d.ts.map +1 -1
  636. package/dist/images/markup.js +5 -64
  637. package/dist/images/markup.js.map +1 -1
  638. package/dist/images/paths.d.ts +0 -10
  639. package/dist/images/paths.d.ts.map +1 -1
  640. package/dist/images/paths.js +3 -11
  641. package/dist/images/paths.js.map +1 -1
  642. package/dist/images/variants.d.ts +2 -2
  643. package/dist/images/variants.d.ts.map +1 -1
  644. package/dist/images/variants.js +4 -3
  645. package/dist/images/variants.js.map +1 -1
  646. package/dist/index.d.ts +3 -291
  647. package/dist/index.d.ts.map +1 -1
  648. package/dist/index.js +2 -838
  649. package/dist/index.js.map +1 -1
  650. package/dist/indexnow.d.ts.map +1 -1
  651. package/dist/indexnow.js +21 -26
  652. package/dist/indexnow.js.map +1 -1
  653. package/dist/indieauth/client.d.ts +1 -1
  654. package/dist/indieauth/client.d.ts.map +1 -1
  655. package/dist/indieauth/client.js +1 -1
  656. package/dist/indieauth/client.js.map +1 -1
  657. package/dist/indieauth/grants.d.ts +1 -1
  658. package/dist/indieauth/grants.d.ts.map +1 -1
  659. package/dist/indieauth/identity.d.ts +2 -2
  660. package/dist/indieauth/identity.d.ts.map +1 -1
  661. package/dist/indieauth/identity.js +5 -7
  662. package/dist/indieauth/identity.js.map +1 -1
  663. package/dist/indieauth/redeem.d.ts +1 -1
  664. package/dist/indieauth/redeem.d.ts.map +1 -1
  665. package/dist/indieauth/redeem.js.map +1 -1
  666. package/dist/indieauth/request.d.ts +5 -1
  667. package/dist/indieauth/request.d.ts.map +1 -1
  668. package/dist/indieauth/request.js +6 -2
  669. package/dist/indieauth/request.js.map +1 -1
  670. package/dist/indieauth/tokens.d.ts +1 -1
  671. package/dist/indieauth/tokens.d.ts.map +1 -1
  672. package/dist/indieauth/tokens.js +2 -2
  673. package/dist/indieauth/tokens.js.map +1 -1
  674. package/dist/mail/index.d.ts +1 -5
  675. package/dist/mail/index.d.ts.map +1 -1
  676. package/dist/mail/index.js +0 -2
  677. package/dist/mail/index.js.map +1 -1
  678. package/dist/mail/provider.d.ts +7 -0
  679. package/dist/mail/provider.d.ts.map +1 -1
  680. package/dist/maintenance.d.ts +1 -1
  681. package/dist/maintenance.d.ts.map +1 -1
  682. package/dist/media/library.d.ts +99 -0
  683. package/dist/media/library.d.ts.map +1 -0
  684. package/dist/media/library.js +157 -0
  685. package/dist/media/library.js.map +1 -0
  686. package/dist/media/uploads.d.ts +106 -0
  687. package/dist/media/uploads.d.ts.map +1 -0
  688. package/dist/media/uploads.js +192 -0
  689. package/dist/media/uploads.js.map +1 -0
  690. package/dist/micropub/content.js +1 -1
  691. package/dist/micropub/content.js.map +1 -1
  692. package/dist/micropub/create.d.ts +7 -15
  693. package/dist/micropub/create.d.ts.map +1 -1
  694. package/dist/micropub/create.js +48 -184
  695. package/dist/micropub/create.js.map +1 -1
  696. package/dist/micropub/endpoint.d.ts +2 -2
  697. package/dist/micropub/endpoint.d.ts.map +1 -1
  698. package/dist/micropub/endpoint.js +29 -40
  699. package/dist/micropub/endpoint.js.map +1 -1
  700. package/dist/micropub/media.d.ts +1 -1
  701. package/dist/micropub/media.d.ts.map +1 -1
  702. package/dist/micropub/media.js +6 -6
  703. package/dist/micropub/media.js.map +1 -1
  704. package/dist/micropub/update.d.ts +6 -14
  705. package/dist/micropub/update.d.ts.map +1 -1
  706. package/dist/micropub/update.js +37 -90
  707. package/dist/micropub/update.js.map +1 -1
  708. package/dist/notifications/comments.d.ts +4 -4
  709. package/dist/notifications/comments.d.ts.map +1 -1
  710. package/dist/notifications/comments.js +6 -14
  711. package/dist/notifications/comments.js.map +1 -1
  712. package/dist/notifications/digest.d.ts +4 -4
  713. package/dist/notifications/digest.d.ts.map +1 -1
  714. package/dist/notifications/digest.js +6 -16
  715. package/dist/notifications/digest.js.map +1 -1
  716. package/dist/notifications/index.d.ts +6 -3
  717. package/dist/notifications/index.d.ts.map +1 -1
  718. package/dist/notifications/index.js +3 -2
  719. package/dist/notifications/index.js.map +1 -1
  720. package/dist/notifications/links.d.ts.map +1 -1
  721. package/dist/notifications/links.js +2 -2
  722. package/dist/notifications/links.js.map +1 -1
  723. package/dist/{mail/service.d.ts → notifications/mail-service.d.ts} +7 -13
  724. package/dist/notifications/mail-service.d.ts.map +1 -0
  725. package/dist/{mail/service.js → notifications/mail-service.js} +33 -54
  726. package/dist/notifications/mail-service.js.map +1 -0
  727. package/dist/{mail/templates.d.ts → notifications/mail-templates.d.ts} +4 -2
  728. package/dist/notifications/mail-templates.d.ts.map +1 -0
  729. package/dist/{mail/templates.js → notifications/mail-templates.js} +5 -3
  730. package/dist/notifications/mail-templates.js.map +1 -0
  731. package/dist/notifications/tokens.d.ts +2 -2
  732. package/dist/notifications/tokens.d.ts.map +1 -1
  733. package/dist/notifications/tokens.js +2 -2
  734. package/dist/notifications/tokens.js.map +1 -1
  735. package/dist/notify.d.ts.map +1 -1
  736. package/dist/notify.js +12 -24
  737. package/dist/notify.js.map +1 -1
  738. package/dist/plugin.d.ts +48 -2
  739. package/dist/plugin.d.ts.map +1 -1
  740. package/dist/plugin.js +28 -2
  741. package/dist/plugin.js.map +1 -1
  742. package/dist/plugins/enabled.d.ts.map +1 -1
  743. package/dist/plugins/enabled.js +2 -4
  744. package/dist/plugins/enabled.js.map +1 -1
  745. package/dist/plugins/fetch.d.ts +1 -1
  746. package/dist/plugins/fetch.d.ts.map +1 -1
  747. package/dist/plugins/fetch.js +1 -1
  748. package/dist/plugins/fetch.js.map +1 -1
  749. package/dist/plugins/folder.d.ts.map +1 -1
  750. package/dist/plugins/folder.js +1 -3
  751. package/dist/plugins/folder.js.map +1 -1
  752. package/dist/plugins/install.d.ts.map +1 -1
  753. package/dist/plugins/install.js +7 -3
  754. package/dist/plugins/install.js.map +1 -1
  755. package/dist/plugins/manage.d.ts +1 -1
  756. package/dist/plugins/manage.d.ts.map +1 -1
  757. package/dist/plugins/registry.d.ts.map +1 -1
  758. package/dist/plugins/registry.js +7 -9
  759. package/dist/plugins/registry.js.map +1 -1
  760. package/dist/plugins/settings.d.ts.map +1 -1
  761. package/dist/plugins/settings.js +2 -3
  762. package/dist/plugins/settings.js.map +1 -1
  763. package/dist/plugins/site.d.ts +1 -1
  764. package/dist/plugins/site.d.ts.map +1 -1
  765. package/dist/plugins/site.js +10 -4
  766. package/dist/plugins/site.js.map +1 -1
  767. package/dist/plugins/upgrade.d.ts.map +1 -1
  768. package/dist/plugins/upgrade.js +4 -3
  769. package/dist/plugins/upgrade.js.map +1 -1
  770. package/dist/privacy/erase.d.ts +1 -1
  771. package/dist/privacy/erase.d.ts.map +1 -1
  772. package/dist/privacy/retention.d.ts +2 -2
  773. package/dist/privacy/retention.d.ts.map +1 -1
  774. package/dist/privacy/retention.js +9 -11
  775. package/dist/privacy/retention.js.map +1 -1
  776. package/dist/site/admin-paths.d.ts +23 -0
  777. package/dist/site/admin-paths.d.ts.map +1 -0
  778. package/dist/site/admin-paths.js +25 -0
  779. package/dist/site/admin-paths.js.map +1 -0
  780. package/dist/site/admin-theme.d.ts.map +1 -0
  781. package/dist/site/admin-theme.js.map +1 -0
  782. package/dist/{web → site}/authors.d.ts +1 -72
  783. package/dist/site/authors.d.ts.map +1 -0
  784. package/dist/site/authors.js +107 -0
  785. package/dist/site/authors.js.map +1 -0
  786. package/dist/site/feed-settings.d.ts +28 -0
  787. package/dist/site/feed-settings.d.ts.map +1 -0
  788. package/dist/site/feed-settings.js +22 -0
  789. package/dist/site/feed-settings.js.map +1 -0
  790. package/dist/{web/indexnow.d.ts → site/indexnow-key.d.ts} +1 -1
  791. package/dist/site/indexnow-key.d.ts.map +1 -0
  792. package/dist/{web/indexnow.js → site/indexnow-key.js} +1 -1
  793. package/dist/site/indexnow-key.js.map +1 -0
  794. package/dist/{web → site}/navigation.d.ts +7 -1
  795. package/dist/site/navigation.d.ts.map +1 -0
  796. package/dist/{web → site}/navigation.js +18 -0
  797. package/dist/site/navigation.js.map +1 -0
  798. package/dist/{notifications/preferences.d.ts → site/notification-preferences.d.ts} +2 -2
  799. package/dist/site/notification-preferences.d.ts.map +1 -0
  800. package/dist/{notifications/preferences.js → site/notification-preferences.js} +1 -1
  801. package/dist/site/notification-preferences.js.map +1 -0
  802. package/dist/site/passwords.d.ts.map +1 -0
  803. package/dist/site/passwords.js.map +1 -0
  804. package/dist/{privacy/policy.d.ts → site/retention-policy.d.ts} +1 -1
  805. package/dist/site/retention-policy.d.ts.map +1 -0
  806. package/dist/{privacy/policy.js → site/retention-policy.js} +1 -1
  807. package/dist/site/retention-policy.js.map +1 -0
  808. package/dist/site/robots.d.ts +62 -0
  809. package/dist/site/robots.d.ts.map +1 -0
  810. package/dist/site/robots.js +130 -0
  811. package/dist/site/robots.js.map +1 -0
  812. package/dist/site/setting-rows.d.ts +46 -0
  813. package/dist/site/setting-rows.d.ts.map +1 -0
  814. package/dist/site/setting-rows.js +480 -0
  815. package/dist/site/setting-rows.js.map +1 -0
  816. package/dist/site/setting-values.d.ts +63 -0
  817. package/dist/site/setting-values.d.ts.map +1 -0
  818. package/dist/site/setting-values.js +170 -0
  819. package/dist/site/setting-values.js.map +1 -0
  820. package/dist/site/settings-form.d.ts +30 -0
  821. package/dist/site/settings-form.d.ts.map +1 -0
  822. package/dist/site/settings-form.js +58 -0
  823. package/dist/site/settings-form.js.map +1 -0
  824. package/dist/site/settings.d.ts +345 -0
  825. package/dist/site/settings.d.ts.map +1 -0
  826. package/dist/site/settings.js +107 -0
  827. package/dist/site/settings.js.map +1 -0
  828. package/dist/site/site-json.d.ts +69 -0
  829. package/dist/site/site-json.d.ts.map +1 -0
  830. package/dist/site/site-json.js +113 -0
  831. package/dist/site/site-json.js.map +1 -0
  832. package/dist/{admin/accounts.d.ts → site/users.d.ts} +25 -41
  833. package/dist/site/users.d.ts.map +1 -0
  834. package/dist/{admin/accounts.js → site/users.js} +49 -155
  835. package/dist/site/users.js.map +1 -0
  836. package/dist/store/admin-store.d.ts +72 -0
  837. package/dist/store/admin-store.d.ts.map +1 -0
  838. package/dist/store/admin-store.js +62 -0
  839. package/dist/store/admin-store.js.map +1 -0
  840. package/dist/store/comments.d.ts +253 -0
  841. package/dist/store/comments.d.ts.map +1 -0
  842. package/dist/store/comments.js +234 -0
  843. package/dist/store/comments.js.map +1 -0
  844. package/dist/store/conversation.d.ts +28 -0
  845. package/dist/store/conversation.d.ts.map +1 -0
  846. package/dist/store/conversation.js +16 -0
  847. package/dist/store/conversation.js.map +1 -0
  848. package/dist/store/deliveries.d.ts +92 -0
  849. package/dist/store/deliveries.d.ts.map +1 -0
  850. package/dist/store/deliveries.js +88 -0
  851. package/dist/store/deliveries.js.map +1 -0
  852. package/dist/store/followers.d.ts +91 -0
  853. package/dist/store/followers.d.ts.map +1 -0
  854. package/dist/store/followers.js +79 -0
  855. package/dist/store/followers.js.map +1 -0
  856. package/dist/{federation/replies.d.ts → store/inbox-replies.d.ts} +2 -2
  857. package/dist/store/inbox-replies.d.ts.map +1 -0
  858. package/dist/{federation/replies.js → store/inbox-replies.js} +2 -4
  859. package/dist/store/inbox-replies.js.map +1 -0
  860. package/dist/store/inbox.d.ts +132 -0
  861. package/dist/store/inbox.d.ts.map +1 -0
  862. package/dist/store/inbox.js +157 -0
  863. package/dist/store/inbox.js.map +1 -0
  864. package/dist/store/profiles.d.ts +49 -0
  865. package/dist/store/profiles.d.ts.map +1 -0
  866. package/dist/store/profiles.js +71 -0
  867. package/dist/store/profiles.js.map +1 -0
  868. package/dist/store/relays.d.ts +66 -0
  869. package/dist/store/relays.d.ts.map +1 -0
  870. package/dist/store/relays.js +69 -0
  871. package/dist/store/relays.js.map +1 -0
  872. package/dist/store/rows.d.ts +33 -0
  873. package/dist/store/rows.d.ts.map +1 -0
  874. package/dist/store/rows.js +44 -0
  875. package/dist/store/rows.js.map +1 -0
  876. package/dist/store/schema.d.ts +14 -0
  877. package/dist/store/schema.d.ts.map +1 -0
  878. package/dist/store/schema.js +588 -0
  879. package/dist/store/schema.js.map +1 -0
  880. package/dist/store/sessions.d.ts +90 -0
  881. package/dist/store/sessions.d.ts.map +1 -0
  882. package/dist/store/sessions.js +107 -0
  883. package/dist/store/sessions.js.map +1 -0
  884. package/dist/store/state.d.ts +18 -0
  885. package/dist/store/state.d.ts.map +1 -0
  886. package/dist/store/state.js +19 -0
  887. package/dist/store/state.js.map +1 -0
  888. package/dist/store/tokens.d.ts +75 -0
  889. package/dist/store/tokens.d.ts.map +1 -0
  890. package/dist/store/tokens.js +82 -0
  891. package/dist/store/tokens.js.map +1 -0
  892. package/dist/store/webmentions.d.ts +66 -0
  893. package/dist/store/webmentions.d.ts.map +1 -0
  894. package/dist/store/webmentions.js +84 -0
  895. package/dist/store/webmentions.js.map +1 -0
  896. package/dist/supervisor/primary.d.ts +1 -1
  897. package/dist/supervisor/primary.d.ts.map +1 -1
  898. package/dist/supervisor/primary.js +31 -11
  899. package/dist/supervisor/primary.js.map +1 -1
  900. package/dist/supervisor/worker.d.ts +6 -2
  901. package/dist/supervisor/worker.d.ts.map +1 -1
  902. package/dist/supervisor/worker.js +4 -4
  903. package/dist/supervisor/worker.js.map +1 -1
  904. package/dist/testing.d.ts +8 -0
  905. package/dist/testing.d.ts.map +1 -0
  906. package/dist/testing.js +6 -0
  907. package/dist/testing.js.map +1 -0
  908. package/dist/{web → theme}/assets.d.ts +1 -32
  909. package/dist/theme/assets.d.ts.map +1 -0
  910. package/dist/{web → theme}/assets.js +2 -100
  911. package/dist/theme/assets.js.map +1 -0
  912. package/dist/theme/site-data.d.ts +187 -0
  913. package/dist/theme/site-data.d.ts.map +1 -0
  914. package/dist/theme/site-data.js +160 -0
  915. package/dist/theme/site-data.js.map +1 -0
  916. package/dist/{web → theme}/templates.d.ts +2 -0
  917. package/dist/theme/templates.d.ts.map +1 -0
  918. package/dist/{web → theme}/templates.js +9 -32
  919. package/dist/theme/templates.js.map +1 -0
  920. package/dist/{web → theme}/themes.d.ts +1 -0
  921. package/dist/theme/themes.d.ts.map +1 -0
  922. package/dist/{web → theme}/themes.js +6 -3
  923. package/dist/theme/themes.js.map +1 -0
  924. package/dist/util/client-id.d.ts.map +1 -0
  925. package/dist/util/client-id.js.map +1 -0
  926. package/dist/util/clock.d.ts +9 -0
  927. package/dist/util/clock.d.ts.map +1 -0
  928. package/dist/util/clock.js +2 -0
  929. package/dist/util/clock.js.map +1 -0
  930. package/dist/util/errors.d.ts +3 -0
  931. package/dist/util/errors.d.ts.map +1 -0
  932. package/dist/util/errors.js +5 -0
  933. package/dist/util/errors.js.map +1 -0
  934. package/dist/util/files.d.ts +5 -0
  935. package/dist/util/files.d.ts.map +1 -0
  936. package/dist/util/files.js +38 -0
  937. package/dist/util/files.js.map +1 -0
  938. package/dist/util/forms.d.ts +5 -0
  939. package/dist/util/forms.d.ts.map +1 -0
  940. package/dist/util/forms.js +17 -0
  941. package/dist/util/forms.js.map +1 -0
  942. package/dist/util/guards.d.ts +4 -0
  943. package/dist/util/guards.d.ts.map +1 -0
  944. package/dist/util/guards.js +12 -0
  945. package/dist/util/guards.js.map +1 -0
  946. package/dist/{webmention/html.d.ts → util/html-tree.d.ts} +2 -2
  947. package/dist/util/html-tree.d.ts.map +1 -0
  948. package/dist/{webmention/html.js → util/html-tree.js} +3 -64
  949. package/dist/util/html-tree.js.map +1 -0
  950. package/dist/util/html.d.ts +4 -0
  951. package/dist/util/html.d.ts.map +1 -0
  952. package/dist/util/html.js +34 -0
  953. package/dist/util/html.js.map +1 -0
  954. package/dist/util/public-address.d.ts.map +1 -0
  955. package/dist/util/public-address.js.map +1 -0
  956. package/dist/util/queue.d.ts +7 -0
  957. package/dist/util/queue.d.ts.map +1 -0
  958. package/dist/util/queue.js +23 -0
  959. package/dist/util/queue.js.map +1 -0
  960. package/dist/util/retry.d.ts +11 -0
  961. package/dist/util/retry.d.ts.map +1 -0
  962. package/dist/util/retry.js +14 -0
  963. package/dist/util/retry.js.map +1 -0
  964. package/dist/util/url.d.ts +11 -0
  965. package/dist/util/url.d.ts.map +1 -0
  966. package/dist/util/url.js +20 -0
  967. package/dist/util/url.js.map +1 -0
  968. package/dist/web/absolute-urls.js +1 -1
  969. package/dist/web/absolute-urls.js.map +1 -1
  970. package/dist/web/archive.js +2 -2
  971. package/dist/web/archive.js.map +1 -1
  972. package/dist/web/asset-routes.d.ts +48 -0
  973. package/dist/web/asset-routes.d.ts.map +1 -0
  974. package/dist/web/asset-routes.js +107 -0
  975. package/dist/web/asset-routes.js.map +1 -0
  976. package/dist/{avatars/routes.d.ts → web/avatar-routes.d.ts} +2 -2
  977. package/dist/web/avatar-routes.d.ts.map +1 -0
  978. package/dist/{avatars/routes.js → web/avatar-routes.js} +3 -3
  979. package/dist/web/avatar-routes.js.map +1 -0
  980. package/dist/web/comment-routes.d.ts +18 -0
  981. package/dist/web/comment-routes.d.ts.map +1 -0
  982. package/dist/web/comment-routes.js +177 -0
  983. package/dist/web/comment-routes.js.map +1 -0
  984. package/dist/web/compression.d.ts.map +1 -1
  985. package/dist/web/compression.js +1 -2
  986. package/dist/web/compression.js.map +1 -1
  987. package/dist/{contact/routes.d.ts → web/contact-routes.d.ts} +2 -2
  988. package/dist/web/contact-routes.d.ts.map +1 -0
  989. package/dist/{contact/routes.js → web/contact-routes.js} +14 -17
  990. package/dist/web/contact-routes.js.map +1 -0
  991. package/dist/web/context.d.ts +1 -187
  992. package/dist/web/context.d.ts.map +1 -1
  993. package/dist/web/context.js +5 -171
  994. package/dist/web/context.js.map +1 -1
  995. package/dist/web/conversation.d.ts +6 -333
  996. package/dist/web/conversation.d.ts.map +1 -1
  997. package/dist/web/conversation.js +280 -220
  998. package/dist/web/conversation.js.map +1 -1
  999. package/dist/web/document-page.d.ts +13 -0
  1000. package/dist/web/document-page.d.ts.map +1 -0
  1001. package/dist/web/document-page.js +136 -0
  1002. package/dist/web/document-page.js.map +1 -0
  1003. package/dist/web/document-site.d.ts +14 -0
  1004. package/dist/web/document-site.d.ts.map +1 -0
  1005. package/dist/web/document-site.js +28 -0
  1006. package/dist/web/document-site.js.map +1 -0
  1007. package/dist/web/embed.d.ts +13 -0
  1008. package/dist/web/embed.d.ts.map +1 -0
  1009. package/dist/web/embed.js +66 -0
  1010. package/dist/web/embed.js.map +1 -0
  1011. package/dist/{env.d.ts → web/env.d.ts} +27 -26
  1012. package/dist/web/env.d.ts.map +1 -0
  1013. package/dist/web/env.js.map +1 -0
  1014. package/dist/web/federation-routes.d.ts +33 -0
  1015. package/dist/web/federation-routes.d.ts.map +1 -0
  1016. package/dist/web/federation-routes.js +280 -0
  1017. package/dist/web/federation-routes.js.map +1 -0
  1018. package/dist/web/feed-atom.d.ts.map +1 -1
  1019. package/dist/web/feed-atom.js +4 -3
  1020. package/dist/web/feed-atom.js.map +1 -1
  1021. package/dist/web/feed-item.d.ts +4 -39
  1022. package/dist/web/feed-item.d.ts.map +1 -1
  1023. package/dist/web/feed-item.js +8 -72
  1024. package/dist/web/feed-item.js.map +1 -1
  1025. package/dist/web/feed-json.js +2 -2
  1026. package/dist/web/feed-json.js.map +1 -1
  1027. package/dist/web/feed-routes.d.ts +36 -0
  1028. package/dist/web/feed-routes.d.ts.map +1 -0
  1029. package/dist/web/feed-routes.js +124 -0
  1030. package/dist/web/feed-routes.js.map +1 -0
  1031. package/dist/web/feed-rss.d.ts.map +1 -1
  1032. package/dist/web/feed-rss.js +9 -6
  1033. package/dist/web/feed-rss.js.map +1 -1
  1034. package/dist/web/feed-source.d.ts +13 -40
  1035. package/dist/web/feed-source.d.ts.map +1 -1
  1036. package/dist/web/feed-source.js +14 -43
  1037. package/dist/web/feed-source.js.map +1 -1
  1038. package/dist/web/feeds.d.ts +4 -2
  1039. package/dist/web/feeds.d.ts.map +1 -1
  1040. package/dist/web/feeds.js +8 -5
  1041. package/dist/web/feeds.js.map +1 -1
  1042. package/dist/web/health.d.ts +1 -1
  1043. package/dist/web/health.d.ts.map +1 -1
  1044. package/dist/web/index.d.ts +53 -29
  1045. package/dist/web/index.d.ts.map +1 -1
  1046. package/dist/web/index.js +37 -18
  1047. package/dist/web/index.js.map +1 -1
  1048. package/dist/{indieauth/activity-log.d.ts → web/indieauth-activity-log.d.ts} +3 -3
  1049. package/dist/web/indieauth-activity-log.d.ts.map +1 -0
  1050. package/dist/{indieauth/activity-log.js → web/indieauth-activity-log.js} +5 -6
  1051. package/dist/web/indieauth-activity-log.js.map +1 -0
  1052. package/dist/{indieauth/bearer.d.ts → web/indieauth-bearer.d.ts} +5 -5
  1053. package/dist/web/indieauth-bearer.d.ts.map +1 -0
  1054. package/dist/{indieauth/bearer.js → web/indieauth-bearer.js} +4 -4
  1055. package/dist/web/indieauth-bearer.js.map +1 -0
  1056. package/dist/{indieauth/discovery.d.ts → web/indieauth-discovery.d.ts} +2 -7
  1057. package/dist/web/indieauth-discovery.d.ts.map +1 -0
  1058. package/dist/{indieauth/discovery.js → web/indieauth-discovery.js} +6 -9
  1059. package/dist/web/indieauth-discovery.js.map +1 -0
  1060. package/dist/{indieauth/token.d.ts → web/indieauth-token.d.ts} +2 -2
  1061. package/dist/web/indieauth-token.d.ts.map +1 -0
  1062. package/dist/{indieauth/token.js → web/indieauth-token.js} +7 -7
  1063. package/dist/web/indieauth-token.js.map +1 -0
  1064. package/dist/web/listing-pages.d.ts +19 -0
  1065. package/dist/web/listing-pages.d.ts.map +1 -0
  1066. package/dist/web/listing-pages.js +148 -0
  1067. package/dist/web/listing-pages.js.map +1 -0
  1068. package/dist/web/listing-subject.d.ts +58 -0
  1069. package/dist/web/listing-subject.d.ts.map +1 -0
  1070. package/dist/web/listing-subject.js +89 -0
  1071. package/dist/web/listing-subject.js.map +1 -0
  1072. package/dist/web/llms.d.ts +16 -15
  1073. package/dist/web/llms.d.ts.map +1 -1
  1074. package/dist/web/llms.js +23 -35
  1075. package/dist/web/llms.js.map +1 -1
  1076. package/dist/web/maintenance.d.ts +1 -1
  1077. package/dist/web/maintenance.d.ts.map +1 -1
  1078. package/dist/web/maintenance.js +7 -13
  1079. package/dist/web/maintenance.js.map +1 -1
  1080. package/dist/web/manifest.d.ts +1 -1
  1081. package/dist/web/manifest.d.ts.map +1 -1
  1082. package/dist/web/manifest.js +2 -1
  1083. package/dist/web/manifest.js.map +1 -1
  1084. package/dist/web/markdown-page.d.ts +76 -0
  1085. package/dist/web/markdown-page.d.ts.map +1 -0
  1086. package/dist/web/markdown-page.js +79 -0
  1087. package/dist/web/markdown-page.js.map +1 -0
  1088. package/dist/web/markdown-representation.d.ts +15 -0
  1089. package/dist/web/markdown-representation.d.ts.map +1 -0
  1090. package/dist/web/markdown-representation.js +130 -0
  1091. package/dist/web/markdown-representation.js.map +1 -0
  1092. package/dist/web/negotiate.d.ts +5 -12
  1093. package/dist/web/negotiate.d.ts.map +1 -1
  1094. package/dist/web/negotiate.js +11 -18
  1095. package/dist/web/negotiate.js.map +1 -1
  1096. package/dist/{notifications/routes.d.ts → web/notification-routes.d.ts} +2 -2
  1097. package/dist/web/notification-routes.d.ts.map +1 -0
  1098. package/dist/{notifications/routes.js → web/notification-routes.js} +24 -29
  1099. package/dist/web/notification-routes.js.map +1 -0
  1100. package/dist/web/oembed.d.ts +2 -2
  1101. package/dist/web/oembed.d.ts.map +1 -1
  1102. package/dist/web/oembed.js +5 -4
  1103. package/dist/web/oembed.js.map +1 -1
  1104. package/dist/web/opensearch.d.ts.map +1 -1
  1105. package/dist/web/opensearch.js +2 -1
  1106. package/dist/web/opensearch.js.map +1 -1
  1107. package/dist/web/page-sources.d.ts +15 -0
  1108. package/dist/web/page-sources.d.ts.map +1 -0
  1109. package/dist/web/page-sources.js +44 -0
  1110. package/dist/web/page-sources.js.map +1 -0
  1111. package/dist/web/pagination.d.ts +1 -0
  1112. package/dist/web/pagination.d.ts.map +1 -1
  1113. package/dist/web/pagination.js +4 -1
  1114. package/dist/web/pagination.js.map +1 -1
  1115. package/dist/web/paths.d.ts +52 -0
  1116. package/dist/web/paths.d.ts.map +1 -0
  1117. package/dist/web/paths.js +208 -0
  1118. package/dist/web/paths.js.map +1 -0
  1119. package/dist/web/pingback-routes.d.ts +5 -0
  1120. package/dist/web/pingback-routes.d.ts.map +1 -0
  1121. package/dist/web/pingback-routes.js +100 -0
  1122. package/dist/web/pingback-routes.js.map +1 -0
  1123. package/dist/{plugins/federation.d.ts → web/plugin-federation.d.ts} +3 -3
  1124. package/dist/web/plugin-federation.d.ts.map +1 -0
  1125. package/dist/{plugins/federation.js → web/plugin-federation.js} +5 -5
  1126. package/dist/web/plugin-federation.js.map +1 -0
  1127. package/dist/{plugins/mount.d.ts → web/plugin-routes.d.ts} +3 -3
  1128. package/dist/web/plugin-routes.d.ts.map +1 -0
  1129. package/dist/{plugins/mount.js → web/plugin-routes.js} +2 -2
  1130. package/dist/web/plugin-routes.js.map +1 -0
  1131. package/dist/web/redirects.d.ts +1 -84
  1132. package/dist/web/redirects.d.ts.map +1 -1
  1133. package/dist/web/redirects.js +0 -232
  1134. package/dist/web/redirects.js.map +1 -1
  1135. package/dist/web/render.d.ts +43 -7
  1136. package/dist/web/render.d.ts.map +1 -1
  1137. package/dist/web/render.js +96 -48
  1138. package/dist/web/render.js.map +1 -1
  1139. package/dist/web/request.d.ts +44 -0
  1140. package/dist/web/request.d.ts.map +1 -0
  1141. package/dist/web/request.js +82 -0
  1142. package/dist/web/request.js.map +1 -0
  1143. package/dist/web/robots.d.ts +1 -46
  1144. package/dist/web/robots.d.ts.map +1 -1
  1145. package/dist/web/robots.js +5 -131
  1146. package/dist/web/robots.js.map +1 -1
  1147. package/dist/web/routes.d.ts +5 -39
  1148. package/dist/web/routes.d.ts.map +1 -1
  1149. package/dist/web/routes.js +112 -1373
  1150. package/dist/web/routes.js.map +1 -1
  1151. package/dist/web/search.d.ts.map +1 -1
  1152. package/dist/web/search.js +2 -9
  1153. package/dist/web/search.js.map +1 -1
  1154. package/dist/{admin → web}/session.d.ts +1 -5
  1155. package/dist/web/session.d.ts.map +1 -0
  1156. package/dist/{admin → web}/session.js +0 -4
  1157. package/dist/web/session.js.map +1 -0
  1158. package/dist/web/share-image.d.ts.map +1 -1
  1159. package/dist/web/share-image.js +3 -2
  1160. package/dist/web/share-image.js.map +1 -1
  1161. package/dist/web/signed-in.d.ts +27 -0
  1162. package/dist/web/signed-in.d.ts.map +1 -0
  1163. package/dist/web/signed-in.js +45 -0
  1164. package/dist/web/signed-in.js.map +1 -0
  1165. package/dist/web/site-index.d.ts +13 -0
  1166. package/dist/web/site-index.d.ts.map +1 -0
  1167. package/dist/web/site-index.js +143 -0
  1168. package/dist/web/site-index.js.map +1 -0
  1169. package/dist/web/site-view.d.ts +45 -0
  1170. package/dist/web/site-view.d.ts.map +1 -0
  1171. package/dist/web/site-view.js +67 -0
  1172. package/dist/web/site-view.js.map +1 -0
  1173. package/dist/web/sitemap.d.ts.map +1 -1
  1174. package/dist/web/sitemap.js +5 -7
  1175. package/dist/web/sitemap.js.map +1 -1
  1176. package/dist/{admin → web}/throttle.d.ts +3 -4
  1177. package/dist/web/throttle.d.ts.map +1 -0
  1178. package/dist/{admin → web}/throttle.js +1 -2
  1179. package/dist/web/throttle.js.map +1 -0
  1180. package/dist/web/webmention-routes.d.ts +11 -0
  1181. package/dist/web/webmention-routes.d.ts.map +1 -0
  1182. package/dist/web/webmention-routes.js +51 -0
  1183. package/dist/web/webmention-routes.js.map +1 -0
  1184. package/dist/web/well-known.d.ts +2 -2
  1185. package/dist/web/well-known.d.ts.map +1 -1
  1186. package/dist/web/well-known.js +5 -14
  1187. package/dist/web/well-known.js.map +1 -1
  1188. package/dist/webmention/cited-picture.d.ts +1 -2
  1189. package/dist/webmention/cited-picture.d.ts.map +1 -1
  1190. package/dist/webmention/cited-picture.js +4 -6
  1191. package/dist/webmention/cited-picture.js.map +1 -1
  1192. package/dist/webmention/discovery.d.ts +2 -13
  1193. package/dist/webmention/discovery.d.ts.map +1 -1
  1194. package/dist/webmention/discovery.js +18 -73
  1195. package/dist/webmention/discovery.js.map +1 -1
  1196. package/dist/webmention/endpoint.d.ts +27 -0
  1197. package/dist/webmention/endpoint.d.ts.map +1 -0
  1198. package/dist/webmention/endpoint.js +26 -0
  1199. package/dist/webmention/endpoint.js.map +1 -0
  1200. package/dist/webmention/fetch-public.d.ts +18 -1
  1201. package/dist/webmention/fetch-public.d.ts.map +1 -1
  1202. package/dist/webmention/fetch-public.js +57 -23
  1203. package/dist/webmention/fetch-public.js.map +1 -1
  1204. package/dist/webmention/index.d.ts +11 -9
  1205. package/dist/webmention/index.d.ts.map +1 -1
  1206. package/dist/webmention/index.js +7 -6
  1207. package/dist/webmention/index.js.map +1 -1
  1208. package/dist/webmention/links.d.ts +0 -55
  1209. package/dist/webmention/links.d.ts.map +1 -1
  1210. package/dist/webmention/links.js +2 -185
  1211. package/dist/webmention/links.js.map +1 -1
  1212. package/dist/webmention/microformats.d.ts +1 -1
  1213. package/dist/webmention/microformats.d.ts.map +1 -1
  1214. package/dist/webmention/microformats.js +1 -1
  1215. package/dist/webmention/microformats.js.map +1 -1
  1216. package/dist/webmention/pingback.d.ts +12 -4
  1217. package/dist/webmention/pingback.d.ts.map +1 -1
  1218. package/dist/webmention/pingback.js +4 -102
  1219. package/dist/webmention/pingback.js.map +1 -1
  1220. package/dist/webmention/receive.d.ts +7 -4
  1221. package/dist/webmention/receive.d.ts.map +1 -1
  1222. package/dist/webmention/receive.js +34 -42
  1223. package/dist/webmention/receive.js.map +1 -1
  1224. package/dist/webmention/reply-context/fediverse.d.ts +29 -0
  1225. package/dist/webmention/reply-context/fediverse.d.ts.map +1 -0
  1226. package/dist/webmention/reply-context/fediverse.js +59 -0
  1227. package/dist/webmention/reply-context/fediverse.js.map +1 -0
  1228. package/dist/webmention/reply-context/json-ld.d.ts +5 -0
  1229. package/dist/webmention/reply-context/json-ld.d.ts.map +1 -0
  1230. package/dist/webmention/reply-context/json-ld.js +78 -0
  1231. package/dist/webmention/reply-context/json-ld.js.map +1 -0
  1232. package/dist/webmention/reply-context/oembed.d.ts +21 -0
  1233. package/dist/webmention/reply-context/oembed.d.ts.map +1 -0
  1234. package/dist/webmention/reply-context/oembed.js +137 -0
  1235. package/dist/webmention/reply-context/oembed.js.map +1 -0
  1236. package/dist/webmention/reply-context/page.d.ts +30 -0
  1237. package/dist/webmention/reply-context/page.d.ts.map +1 -0
  1238. package/dist/webmention/reply-context/page.js +134 -0
  1239. package/dist/webmention/reply-context/page.js.map +1 -0
  1240. package/dist/webmention/reply-context/source.d.ts +29 -0
  1241. package/dist/webmention/reply-context/source.d.ts.map +1 -0
  1242. package/dist/webmention/reply-context/source.js +46 -0
  1243. package/dist/webmention/reply-context/source.js.map +1 -0
  1244. package/dist/webmention/reply-context.d.ts +5 -34
  1245. package/dist/webmention/reply-context.d.ts.map +1 -1
  1246. package/dist/webmention/reply-context.js +9 -432
  1247. package/dist/webmention/reply-context.js.map +1 -1
  1248. package/dist/webmention/reply-contexts.d.ts +3 -3
  1249. package/dist/webmention/reply-contexts.d.ts.map +1 -1
  1250. package/dist/webmention/reply-contexts.js +7 -10
  1251. package/dist/webmention/reply-contexts.js.map +1 -1
  1252. package/dist/webmention/routes.d.ts +1 -1
  1253. package/dist/webmention/routes.d.ts.map +1 -1
  1254. package/dist/webmention/routes.js +5 -8
  1255. package/dist/webmention/routes.js.map +1 -1
  1256. package/dist/webmention/service.d.ts +7 -7
  1257. package/dist/webmention/service.d.ts.map +1 -1
  1258. package/dist/webmention/service.js +49 -61
  1259. package/dist/webmention/service.js.map +1 -1
  1260. package/dist/webmention/syndication.d.ts +3 -26
  1261. package/dist/webmention/syndication.d.ts.map +1 -1
  1262. package/dist/webmention/syndication.js +6 -20
  1263. package/dist/webmention/syndication.js.map +1 -1
  1264. package/package.json +5 -1
  1265. package/themes/default/README.md +36 -2329
  1266. package/themes/default/layouts/base.njk +5 -4
  1267. package/themes/default/layouts/comment.njk +3 -3
  1268. package/themes/default/layouts/front-page.njk +4 -3
  1269. package/themes/default/layouts/page.njk +2 -0
  1270. package/themes/default/partials/comment-form.njk +1 -1
  1271. package/themes/default/partials/comment.njk +5 -5
  1272. package/themes/default/partials/contact-form.njk +1 -2
  1273. package/themes/default/partials/conversation.njk +1 -2
  1274. package/themes/default/partials/markdown-footer.md.njk +24 -0
  1275. package/themes/default/partials/markdown-header.md.njk +31 -0
  1276. package/themes/default/src/style.css +6 -6
  1277. package/dist/admin/accounts.d.ts.map +0 -1
  1278. package/dist/admin/accounts.js.map +0 -1
  1279. package/dist/admin/admin-theme.d.ts.map +0 -1
  1280. package/dist/admin/admin-theme.js.map +0 -1
  1281. package/dist/admin/enclosure-field.d.ts.map +0 -1
  1282. package/dist/admin/enclosure-field.js.map +0 -1
  1283. package/dist/admin/event-field.d.ts.map +0 -1
  1284. package/dist/admin/event-field.js.map +0 -1
  1285. package/dist/admin/location-field.d.ts +0 -27
  1286. package/dist/admin/location-field.d.ts.map +0 -1
  1287. package/dist/admin/location-field.js.map +0 -1
  1288. package/dist/admin/passwords.d.ts.map +0 -1
  1289. package/dist/admin/passwords.js.map +0 -1
  1290. package/dist/admin/photo-field.d.ts +0 -38
  1291. package/dist/admin/photo-field.d.ts.map +0 -1
  1292. package/dist/admin/photo-field.js.map +0 -1
  1293. package/dist/admin/read-field.d.ts.map +0 -1
  1294. package/dist/admin/read-field.js +0 -61
  1295. package/dist/admin/read-field.js.map +0 -1
  1296. package/dist/admin/session.d.ts.map +0 -1
  1297. package/dist/admin/session.js.map +0 -1
  1298. package/dist/admin/store.d.ts +0 -998
  1299. package/dist/admin/store.d.ts.map +0 -1
  1300. package/dist/admin/store.js +0 -1588
  1301. package/dist/admin/store.js.map +0 -1
  1302. package/dist/admin/throttle.d.ts.map +0 -1
  1303. package/dist/admin/throttle.js.map +0 -1
  1304. package/dist/avatars/routes.d.ts.map +0 -1
  1305. package/dist/avatars/routes.js.map +0 -1
  1306. package/dist/contact/routes.d.ts.map +0 -1
  1307. package/dist/contact/routes.js.map +0 -1
  1308. package/dist/env.d.ts.map +0 -1
  1309. package/dist/env.js.map +0 -1
  1310. package/dist/federation/replies.d.ts.map +0 -1
  1311. package/dist/federation/replies.js.map +0 -1
  1312. package/dist/images/alt-text.d.ts.map +0 -1
  1313. package/dist/images/alt-text.js.map +0 -1
  1314. package/dist/indieauth/activity-log.d.ts.map +0 -1
  1315. package/dist/indieauth/activity-log.js.map +0 -1
  1316. package/dist/indieauth/app-activity.d.ts.map +0 -1
  1317. package/dist/indieauth/app-activity.js.map +0 -1
  1318. package/dist/indieauth/bearer.d.ts.map +0 -1
  1319. package/dist/indieauth/bearer.js.map +0 -1
  1320. package/dist/indieauth/client-id.d.ts.map +0 -1
  1321. package/dist/indieauth/client-id.js.map +0 -1
  1322. package/dist/indieauth/connected-apps.d.ts.map +0 -1
  1323. package/dist/indieauth/connected-apps.js.map +0 -1
  1324. package/dist/indieauth/consent.d.ts.map +0 -1
  1325. package/dist/indieauth/consent.js.map +0 -1
  1326. package/dist/indieauth/discovery.d.ts.map +0 -1
  1327. package/dist/indieauth/discovery.js.map +0 -1
  1328. package/dist/indieauth/token.d.ts.map +0 -1
  1329. package/dist/indieauth/token.js.map +0 -1
  1330. package/dist/mail/service.d.ts.map +0 -1
  1331. package/dist/mail/service.js.map +0 -1
  1332. package/dist/mail/templates.d.ts.map +0 -1
  1333. package/dist/mail/templates.js.map +0 -1
  1334. package/dist/notifications/preferences.d.ts.map +0 -1
  1335. package/dist/notifications/preferences.js.map +0 -1
  1336. package/dist/notifications/routes.d.ts.map +0 -1
  1337. package/dist/notifications/routes.js.map +0 -1
  1338. package/dist/plugins/federation.d.ts.map +0 -1
  1339. package/dist/plugins/federation.js.map +0 -1
  1340. package/dist/plugins/mount.d.ts.map +0 -1
  1341. package/dist/plugins/mount.js.map +0 -1
  1342. package/dist/privacy/policy.d.ts.map +0 -1
  1343. package/dist/privacy/policy.js.map +0 -1
  1344. package/dist/web/admin-bar.d.ts.map +0 -1
  1345. package/dist/web/admin-bar.js.map +0 -1
  1346. package/dist/web/assets.d.ts.map +0 -1
  1347. package/dist/web/assets.js.map +0 -1
  1348. package/dist/web/authors.d.ts.map +0 -1
  1349. package/dist/web/authors.js +0 -211
  1350. package/dist/web/authors.js.map +0 -1
  1351. package/dist/web/documents.d.ts +0 -81
  1352. package/dist/web/documents.d.ts.map +0 -1
  1353. package/dist/web/documents.js.map +0 -1
  1354. package/dist/web/errors.d.ts.map +0 -1
  1355. package/dist/web/errors.js.map +0 -1
  1356. package/dist/web/guids.d.ts.map +0 -1
  1357. package/dist/web/guids.js.map +0 -1
  1358. package/dist/web/indexnow.d.ts.map +0 -1
  1359. package/dist/web/indexnow.js.map +0 -1
  1360. package/dist/web/license.d.ts.map +0 -1
  1361. package/dist/web/license.js.map +0 -1
  1362. package/dist/web/locale.d.ts.map +0 -1
  1363. package/dist/web/locale.js.map +0 -1
  1364. package/dist/web/navigation.d.ts.map +0 -1
  1365. package/dist/web/navigation.js.map +0 -1
  1366. package/dist/web/recent.d.ts +0 -43
  1367. package/dist/web/recent.d.ts.map +0 -1
  1368. package/dist/web/recent.js +0 -37
  1369. package/dist/web/recent.js.map +0 -1
  1370. package/dist/web/sanitize.d.ts +0 -29
  1371. package/dist/web/sanitize.d.ts.map +0 -1
  1372. package/dist/web/sanitize.js.map +0 -1
  1373. package/dist/web/taxonomy.d.ts.map +0 -1
  1374. package/dist/web/taxonomy.js.map +0 -1
  1375. package/dist/web/templates.d.ts.map +0 -1
  1376. package/dist/web/templates.js.map +0 -1
  1377. package/dist/web/themes.d.ts.map +0 -1
  1378. package/dist/web/themes.js.map +0 -1
  1379. package/dist/webmention/html.d.ts.map +0 -1
  1380. package/dist/webmention/html.js.map +0 -1
  1381. package/dist/webmention/public-address.d.ts.map +0 -1
  1382. package/dist/webmention/public-address.js.map +0 -1
  1383. /package/dist/{web → content}/license.d.ts +0 -0
  1384. /package/dist/{web → content}/license.js +0 -0
  1385. /package/dist/{admin → site}/admin-theme.d.ts +0 -0
  1386. /package/dist/{admin → site}/admin-theme.js +0 -0
  1387. /package/dist/{admin → site}/passwords.d.ts +0 -0
  1388. /package/dist/{admin → site}/passwords.js +0 -0
  1389. /package/dist/{indieauth → util}/client-id.d.ts +0 -0
  1390. /package/dist/{indieauth → util}/client-id.js +0 -0
  1391. /package/dist/{webmention → util}/public-address.d.ts +0 -0
  1392. /package/dist/{webmention → util}/public-address.js +0 -0
  1393. /package/dist/{env.js → web/env.js} +0 -0
@@ -1,16 +1,39 @@
1
- import { readSiteJson, readSiteSettings } from '../admin/settings.js';
2
1
  import { avatarHref } from '../avatars/avatars.js';
3
2
  import { answerable, commentPolicyOf } from '../comments/policy.js';
4
3
  import { postLabel, postTypeOf } from '../content/post-type.js';
5
4
  import { RSVP_LABELS } from '../content/rsvp.js';
6
5
  import { readAllQuoteAuthorizations } from '../federation/quotes.js';
7
- import { actorHandle, guessedName, quoteFrom, replyFrom, REPLY_ACTIVITY_TYPE, } from '../federation/replies.js';
8
- import { authorContext, authorFeedHref, siteAuthorContext } from './authors.js';
9
- import { activityStreamsId, isListed, isServed, permalinkOfObjectId } from './documents.js';
10
- import { isRepliesKey, repliesFeedPath, repliesKey } from './feed-source.js';
11
- import { COMMENT_PAGE_PREFIX, commentPageHref, feedGuid, replyGuid } from './guids.js';
12
- import { absoluteUrl } from './negotiate.js';
13
- import { sanitizeCommentHtml } from './sanitize.js';
6
+ import { actorHandle, guessedName, quoteFrom, replyFrom, REPLY_ACTIVITY_TYPE, } from '../store/inbox-replies.js';
7
+ import { readSiteJson, readSiteSettings } from '../site/site-json.js';
8
+ import { absoluteUrl } from '../util/url.js';
9
+ import { authorContext, profileContext, siteAuthorContext } from '../site/authors.js';
10
+ import { authorFeedHref, repliesFeedPath } from './feed-source.js';
11
+ import { activityStreamsId, permalinkOfObjectId } from '../content/permalinks.js';
12
+ import { isListed, isServed } from '../content/served.js';
13
+ import { isKey, commentPageHref, feedGuid, repliesKey } from '../content/guids.js';
14
+ import { sanitizeCommentHtml } from '../content/sanitize.js';
15
+ import { commentAnchor, commentKeyAt, commentNames, heldComment, isWithheld, visibleReply, } from '../comments/conversation.js';
16
+ /**
17
+ * The conversation under a post, in one shape whatever it is made of, and the
18
+ * one reader everything that shows a conversation asks.
19
+ *
20
+ * The fediverse is only the first thing that can answer a post: native
21
+ * comments and webmentions land in the same thread, so nothing here is spelled
22
+ * in ActivityPub's vocabulary. An {@link Interaction} says where it came from
23
+ * (`source`) and what it is (`kind`), and everything else about it is the same
24
+ * whether a Mastodon note, a form on this site or somebody else's blog post
25
+ * produced it.
26
+ *
27
+ * Two indexes hold the raw material — `ap_inbox` for what remote servers sent
28
+ * and `comments` for what the files under `content/_data/comments/` say — and
29
+ * this module is the only place outside the comment intake that reads either
30
+ * of them to show somebody a conversation. That is the point of it: the thread
31
+ * under the post, the post's own comments feed, `/comments/feed/` and the
32
+ * `source:comments` count on a post feed used to merge the same two indexes in
33
+ * two implementations, which is two chances to disagree about what a reader
34
+ * may see. Now there is one {@link ConversationReader}, and the page and the
35
+ * feed are the same reading.
36
+ */
14
37
  const RSVP_GROUP_ORDER = ['yes', 'maybe', 'interested', 'no'];
15
38
  const RSVP_ACTIVITIES = {
16
39
  Accept: 'yes',
@@ -73,44 +96,93 @@ function postConversation(context, document) {
73
96
  },
74
97
  };
75
98
  }
99
+ /**
100
+ * A repost joins the boosts, because a reader looking at the page is being
101
+ * told the same thing by both; a mention is its own group, because it is
102
+ * neither an answer nor a reaction.
103
+ */
104
+ const GROUP_OF = {
105
+ reply: 'written',
106
+ like: 'likes',
107
+ boost: 'boosts',
108
+ repost: 'boosts',
109
+ mention: 'mentions',
110
+ };
76
111
  function gather(context, document, seen = new Set([document.path])) {
77
- const objectId = activityStreamsId(document, context.baseUrl);
112
+ const deliveredObjectId = activityStreamsId(document, context.baseUrl, context.store.now());
78
113
  const root = rootOf(context, document);
79
- const activities = objectId === undefined ? [] : activitiesAround(context.admin, objectId);
114
+ const stored = context.admin.listCommentsFor(document.slug);
80
115
  const naming = authorNaming(context.admin);
81
- const quotes = objectId === undefined
116
+ const isEvent = postTypeOf(document) === 'event';
117
+ const fediverse = deliveredObjectId === undefined
82
118
  ? []
83
- : quotesOf(context.admin, readAllQuoteAuthorizations(context.contentDir), objectId, naming);
84
- const withdrawn = withdrawnBy(activities);
85
- const written = [];
86
- const likes = [];
87
- const boosts = [];
88
- const mentions = [...quotes];
89
- const answers = [];
119
+ : [
120
+ fromQuotes(context, deliveredObjectId, naming),
121
+ fromActivities(context, deliveredObjectId, stored, naming, isEvent),
122
+ ];
123
+ const comments = fromStored(context, document, stored, isEvent);
124
+ const sources = [...fediverse, comments];
125
+ const replyPosts = fromReplyPosts(context, document, root, seen, [
126
+ ...sources.flatMap(({ said }) => said.flatMap(([group, entry]) => (group === 'written' ? [entry] : []))),
127
+ ...(comments.held?.values() ?? []),
128
+ ]);
129
+ return merged(root, [...sources, replyPosts]);
130
+ }
131
+ function merged(root, parts) {
132
+ const groups = {
133
+ written: [],
134
+ likes: [],
135
+ boosts: [],
136
+ mentions: [],
137
+ answers: [],
138
+ };
90
139
  const held = new Map();
91
- const reacted = new Set();
92
- const isEvent = postTypeOf(document) === 'event';
140
+ const withdrawn = new Set();
141
+ for (const part of parts) {
142
+ for (const [group, entry] of part.said)
143
+ groups[group].push(entry);
144
+ for (const [id, entry] of part.held ?? [])
145
+ held.set(id, entry);
146
+ for (const id of part.withdrawn ?? [])
147
+ withdrawn.add(id);
148
+ }
149
+ // Sorted before threading rather than after, because a thread is built by
150
+ // walking this list: two sources' entries would otherwise interleave in the
151
+ // order the code happened to read them rather than in the order they were
152
+ // written.
153
+ groups.written.sort(byPublished);
154
+ return { root, ...groups, held, withdrawn };
155
+ }
156
+ function fromQuotes(context, objectId, naming) {
157
+ const approvals = readAllQuoteAuthorizations(context.contentDir);
158
+ return {
159
+ said: quotesOf(context.admin, approvals, objectId, naming).map((quote) => ['mentions', quote]),
160
+ };
161
+ }
162
+ function fromActivities(context, objectId, stored, naming, isEvent) {
163
+ // What was imported from the fediverse is walked from too: an answer to an
164
+ // imported note names the note, which no logged activity may carry.
165
+ const origins = stored.flatMap((comment) => comment.source === 'activitypub' && comment.origin !== undefined ? [comment.origin] : []);
166
+ const activities = activitiesAround(context.admin, [objectId, ...origins]);
167
+ const withdrawn = withdrawnBy(activities);
168
+ const taken = (activityId) => activityId !== null && withdrawn.has(activityId);
169
+ // One like per actor, so a like imported from the site this one replaced
170
+ // and the same person's like delivered here are one.
171
+ const reacted = new Set(stored.flatMap(storedReaction));
172
+ const said = [];
93
173
  for (const activity of activities) {
94
174
  const answer = isEvent ? RSVP_ACTIVITIES[activity.activityType] : undefined;
95
175
  if (answer !== undefined) {
96
- if (activity.objectId !== objectId)
176
+ if (activity.objectId !== objectId || taken(activity.activityId))
97
177
  continue;
98
- if (activity.activityId !== null && withdrawn.has(activity.activityId))
99
- continue;
100
- const author = naming(activity.actorId);
101
- answers.push({
102
- id: activity.activityId ?? `${activity.actorId}#rsvp`,
103
- source: 'activitypub',
104
- kind: 'reply',
105
- author,
106
- url: author.url,
107
- content: '',
108
- published: new Date(activity.receivedAt),
109
- inReplyTo: null,
110
- status: 'published',
111
- replies: [],
112
- rsvp: { value: answer, label: RSVP_LABELS[answer] },
113
- });
178
+ said.push([
179
+ 'answers',
180
+ {
181
+ ...reaction(activity, naming, `${activity.actorId}#rsvp`),
182
+ kind: 'reply',
183
+ rsvp: { value: answer, label: RSVP_LABELS[answer] },
184
+ },
185
+ ]);
114
186
  continue;
115
187
  }
116
188
  const kind = REACTIONS[activity.activityType];
@@ -119,77 +191,96 @@ function gather(context, document, seen = new Set([document.path])) {
119
191
  // belongs to that reply's own conversation, wherever it is shown.
120
192
  if (activity.objectId !== objectId)
121
193
  continue;
122
- // One like per actor, however many times it was delivered, and none at
123
- // all once its actor has taken it back.
124
- const key = `${kind}\0${activity.actorId}`;
125
- if (reacted.has(key))
194
+ // One like per actor, however many times it was delivered, and none
195
+ // at all once its actor has taken it back.
196
+ const key = reactionKey(kind, activity.actorId);
197
+ if (reacted.has(key) || taken(activity.activityId))
126
198
  continue;
127
- if (activity.activityId !== null && withdrawn.has(activity.activityId))
199
+ if (activity.activityId !== null &&
200
+ heldComment(context.admin, activity.activityId) !== undefined) {
128
201
  continue;
202
+ }
129
203
  reacted.add(key);
130
- const author = naming(activity.actorId);
131
- (kind === 'like' ? likes : boosts).push({
132
- id: activity.activityId ?? `${activity.actorId}#${kind}`,
133
- source: 'activitypub',
134
- kind,
135
- author,
136
- url: author.url,
137
- content: '',
138
- published: new Date(activity.receivedAt),
139
- inReplyTo: null,
140
- status: 'published',
141
- replies: [],
142
- });
204
+ said.push([
205
+ GROUP_OF[kind],
206
+ { ...reaction(activity, naming, `${activity.actorId}#${kind}`), kind },
207
+ ]);
143
208
  continue;
144
209
  }
145
210
  const reply = replyFrom(activity);
146
- if (reply === undefined)
211
+ if (reply === undefined || heldComment(context.admin, reply.id) !== undefined)
147
212
  continue;
148
- written.push(federatedInteraction(reply, naming(activity.actorId)));
213
+ const parent = heldComment(context.admin, reply.inReplyTo);
214
+ said.push([
215
+ 'written',
216
+ federatedInteraction(parent === undefined ? reply : { ...reply, inReplyTo: parent.id }, naming(activity.actorId)),
217
+ ]);
149
218
  }
150
- for (const stored of context.admin.listCommentsFor(document.slug)) {
151
- const comment = interactionOf(stored, document.permalink);
152
- if (stored.status !== 'approved') {
219
+ return { said, withdrawn };
220
+ }
221
+ function storedReaction({ kind, actor }) {
222
+ const group = GROUP_OF[kind];
223
+ return actor === undefined || (group !== 'likes' && group !== 'boosts')
224
+ ? []
225
+ : [reactionKey(kind, actor)];
226
+ }
227
+ function reactionKey(kind, actor) {
228
+ return `${GROUP_OF[kind]}\0${actor}`;
229
+ }
230
+ function reaction(activity, naming, fallbackId) {
231
+ const author = naming(activity.actorId);
232
+ return {
233
+ ...unstored(activity.activityId ?? fallbackId),
234
+ source: 'activitypub',
235
+ author,
236
+ url: author.url,
237
+ content: '',
238
+ published: new Date(activity.receivedAt),
239
+ inReplyTo: null,
240
+ status: 'published',
241
+ replies: [],
242
+ };
243
+ }
244
+ function fromStored(context, document, stored, isEvent) {
245
+ const users = context.users();
246
+ const said = [];
247
+ const held = new Map();
248
+ for (const record of stored) {
249
+ const comment = interactionOf(record, document.permalink, context.baseUrl, users);
250
+ if (record.status !== 'approved') {
153
251
  held.set(comment.id, comment);
154
252
  continue;
155
253
  }
156
- // A repost joins the boosts, because a reader looking at the page is being
157
- // told the same thing by both; a mention is its own group, because it is
158
- // neither an answer nor a reaction.
159
- const group = isEvent && comment.rsvp !== undefined
160
- ? answers
161
- : comment.kind === 'reply'
162
- ? written
163
- : comment.kind === 'like'
164
- ? likes
165
- : comment.kind === 'mention'
166
- ? mentions
167
- : boosts;
168
- group.push({ ...comment, replies: [] });
254
+ const group = isEvent && comment.rsvp !== undefined ? 'answers' : GROUP_OF[comment.kind];
255
+ said.push([group, { ...comment, replies: [] }]);
169
256
  }
170
- // The reply posts answering the post or anything said under it, each
171
- // bringing what was said under it: an answer to a reply post lands against
172
- // the reply post, and this is what stitches it into the thread it is in.
173
- const names = namesIn(context, document, root, [...written, ...held.values()]);
257
+ return { said, held };
258
+ }
259
+ /**
260
+ * The reply posts answering the post or anything said under it, each
261
+ * bringing what was said under it: an answer to a reply post lands against
262
+ * the reply post, and this is what stitches it into the thread it is in.
263
+ */
264
+ function fromReplyPosts(context, document, root, seen, answered) {
265
+ const names = namesIn(context, document, root, answered);
266
+ const said = [];
267
+ const held = new Map();
268
+ const withdrawn = new Set();
174
269
  for (const answer of context.store.listRepliesTo([...names.keys()])) {
175
270
  const target = names.get(answer.inReplyTo ?? '');
176
271
  if (target === undefined || seen.has(answer.path))
177
272
  continue;
178
273
  const under = gather(context, answer, new Set([...seen, answer.path]));
179
274
  const top = (entry) => entry.inReplyTo === null ? { ...entry, inReplyTo: under.root } : entry;
180
- written.push(replyPostInteraction(context, answer, under.root, target));
181
- written.push(...under.written.map(top));
275
+ said.push(['written', replyPostInteraction(context, answer, under.root, target)]);
276
+ for (const entry of under.written)
277
+ said.push(['written', top(entry)]);
182
278
  for (const [id, entry] of under.held)
183
279
  held.set(id, top(entry));
184
280
  for (const id of under.withdrawn)
185
281
  withdrawn.add(id);
186
282
  }
187
- // Sorted before threading rather than after, because a thread is built by
188
- // walking this list: two sources' entries would otherwise interleave in the
189
- // order the code happened to read them rather than in the order they were
190
- // written.
191
- written.sort(byPublished);
192
- return { root, written, withdrawn, held, likes, boosts, mentions, answers };
283
+ return { said, held, withdrawn };
193
284
  }
194
285
  /**
195
286
  * One native comment's page: the comment, its replies threaded under it by
@@ -219,7 +310,7 @@ function commentThread(context, id) {
219
310
  };
220
311
  }
221
312
  function replyNamed(context, document, url) {
222
- return namedIn(context, document, gather(context, document), url)?.id;
313
+ return namedIn(context, document, gather(context, document), url);
223
314
  }
224
315
  /** The entry of a gathered conversation a URL names, held ones included. */
225
316
  function namedIn(context, document, said, url) {
@@ -230,8 +321,8 @@ function namedIn(context, document, said, url) {
230
321
  catch {
231
322
  return undefined;
232
323
  }
233
- const commentId = commentNamedBy(named, document, context.baseUrl);
234
- return [...said.written, ...said.held.values()].find((reply) => reply.id === commentId ||
324
+ const key = keyNamedBy(named, document, context.baseUrl);
325
+ return [...said.written, ...said.held.values()].find((reply) => reply.key === key ||
235
326
  reply.id === named.href ||
236
327
  (reply.url !== null && absoluteUrl(reply.url, context.baseUrl) === named.href));
237
328
  }
@@ -249,35 +340,30 @@ function heldAt(context, url) {
249
340
  }
250
341
  return { kind: 'reply', post, reply };
251
342
  }
252
- function repliesTo(context, segment) {
253
- if (!isRepliesKey(segment)) {
254
- const stored = context.admin.getComment(segment);
255
- if (stored?.source !== 'comment')
256
- return undefined;
257
- const post = context.store.getBySlug(stored.slug);
258
- return post === undefined ? undefined : repliesIn(context, post, segment);
259
- }
343
+ function repliesTo(context, key) {
344
+ if (!isKey(key))
345
+ return undefined;
260
346
  // Each source's index is asked in turn, so a key naming nothing costs three
261
347
  // lookups and no more (TASK-327).
262
- const [document] = context.store.listByRepliesKey(segment);
348
+ const [document] = context.store.listByRepliesKey(key);
263
349
  if (document !== undefined) {
264
- if (repliesKey(feedGuid(document, context.baseUrl)) === segment) {
350
+ if (repliesKey(feedGuid(document, context.baseUrl)) === key) {
265
351
  return repliesIn(context, document, null);
266
352
  }
267
353
  const root = threadRootOf(context, document);
268
- return root === undefined ? undefined : repliesIn(context, root, rootOf(context, document));
354
+ return root === undefined ? undefined : repliesIn(context, root, key);
269
355
  }
270
- const [comment] = context.admin.listCommentsByRepliesKey(segment);
356
+ const comment = context.admin.getComment(key);
271
357
  if (comment !== undefined) {
272
358
  const post = context.store.getBySlug(comment.slug);
273
- return post === undefined ? undefined : repliesIn(context, post, comment.id);
359
+ return post === undefined ? undefined : repliesIn(context, post, key);
274
360
  }
275
- for (const activity of context.admin.listRepliesByKey(segment)) {
361
+ for (const activity of context.admin.listRepliesByKey(key)) {
276
362
  const reply = replyFrom(activity);
277
363
  if (reply === undefined)
278
364
  continue;
279
365
  const post = documentNamed(context, reply.id);
280
- return post === undefined ? undefined : repliesIn(context, post, reply.id);
366
+ return post === undefined ? undefined : repliesIn(context, post, key);
281
367
  }
282
368
  return undefined;
283
369
  }
@@ -285,17 +371,17 @@ function repliesTo(context, segment) {
285
371
  * The direct replies of one reply in a document's thread, or of the document
286
372
  * itself, while the document is served and the reply is one a reader sees.
287
373
  */
288
- function repliesIn(context, post, id) {
374
+ function repliesIn(context, post, key) {
289
375
  if (!isServed(post, context.store.now()))
290
376
  return undefined;
291
377
  const thread = postConversation(context, post).replies;
292
- const reply = id === null ? null : visibleReply(thread, id);
378
+ const reply = key === null ? null : visibleReply(thread, key);
293
379
  if (reply === undefined)
294
380
  return undefined;
295
381
  return {
296
382
  post,
297
383
  reply,
298
- replies: directReplies(reply?.replies ?? thread).map((entry) => ({ ...entry, parent: reply })),
384
+ replies: repliesFed(reply?.replies ?? thread).map((entry) => ({ ...entry, parent: reply })),
299
385
  };
300
386
  }
301
387
  function upstreamsOf(context, document) {
@@ -367,16 +453,16 @@ function documentNamed(context, url, depth = 0) {
367
453
  return undefined;
368
454
  }
369
455
  if (named.origin === new URL(context.baseUrl).origin) {
370
- const id = commentIdAt(named.pathname);
371
- if (id !== undefined) {
372
- const comment = context.admin.getComment(id);
456
+ const key = commentKeyAt(named.pathname);
457
+ if (key !== undefined) {
458
+ const comment = context.admin.getComment(key);
373
459
  return comment === undefined ? undefined : context.store.getBySlug(comment.slug);
374
460
  }
375
461
  const permalink = permalinkOfObjectId(`${named.origin}${named.pathname}`, context.baseUrl);
376
462
  const found = permalink === undefined ? undefined : context.store.getByPermalink(permalink);
377
463
  return found ?? context.store.getByStoredObjectId(named.href);
378
464
  }
379
- const [comment] = context.admin.listCommentsAt(named.href);
465
+ const comment = context.admin.listCommentsAt(named.href)[0] ?? heldComment(context.admin, named.href);
380
466
  if (comment !== undefined)
381
467
  return context.store.getBySlug(comment.slug);
382
468
  for (const activity of context.admin.listActivitiesAbout([named.href])) {
@@ -409,7 +495,7 @@ const MAXIMUM_NOTE_DEPTH = 32;
409
495
  * native comments, and they have to hang off something.
410
496
  */
411
497
  function rootOf(context, document) {
412
- return activityStreamsId(document, context.baseUrl) ?? document.permalink;
498
+ return activityStreamsId(document, context.baseUrl, context.store.now()) ?? document.permalink;
413
499
  }
414
500
  /**
415
501
  * Every URL a reply post's `in-reply-to` could name something here by, and the
@@ -437,17 +523,10 @@ function namesOf(reply, permalink, baseUrl) {
437
523
  names.push(...commentNames(reply.id, permalink, baseUrl));
438
524
  return names;
439
525
  }
440
- /**
441
- * The URLs a reply post can answer a native comment by: its own page, and its
442
- * anchor on the post at this absolute permalink.
443
- */
444
- export function commentNames(id, permalink, baseUrl) {
445
- return [absoluteUrl(commentPageHref(id), baseUrl), `${permalink}#${commentAnchor(id)}`];
446
- }
447
526
  /** A reply post as the thread's own shape, answering `inReplyTo`. */
448
527
  function replyPostInteraction(context, post, id, inReplyTo) {
449
528
  return {
450
- id,
529
+ ...unstored(id),
451
530
  source: 'post',
452
531
  kind: 'reply',
453
532
  author: documentAuthor(context, post),
@@ -464,27 +543,32 @@ function documentAuthor(context, post) {
464
543
  const users = context.users();
465
544
  const site = readSiteSettings(context.contentDir);
466
545
  const author = authorContext(users, post.author) ?? siteAuthorContext(users, site.author);
546
+ return bylineAuthor(author, site.title);
547
+ }
548
+ /** A byline as the thread names its author, `fallback` when it names nobody. */
549
+ function bylineAuthor(author, fallback) {
467
550
  return {
468
- name: author?.name ?? site.title,
551
+ name: author?.name ?? fallback,
469
552
  handle: null,
470
553
  url: author?.url ?? null,
471
554
  avatar: author?.avatar ?? null,
472
555
  actorId: null,
473
556
  feed: author?.username === undefined ? null : authorFeedHref(author.username, 'rss'),
557
+ username: author?.username ?? null,
474
558
  };
475
559
  }
476
- /** The comment a URL on this site names by its page or by its anchor on the post. */
477
- function commentNamedBy(url, document, baseUrl) {
560
+ /** The key a URL on this site names by a comment's page or by an anchor on the post. */
561
+ function keyNamedBy(url, document, baseUrl) {
478
562
  const post = new URL(absoluteUrl(document.permalink, baseUrl));
479
563
  if (url.origin !== post.origin)
480
564
  return undefined;
481
- const onItsPage = commentIdAt(url.pathname);
565
+ const onItsPage = commentKeyAt(url.pathname);
482
566
  if (onItsPage !== undefined)
483
567
  return onItsPage;
484
568
  const anchor = `#${commentAnchor('')}`;
485
569
  if (url.pathname !== post.pathname || !url.hash.startsWith(anchor))
486
570
  return undefined;
487
- return decoded(url.hash.slice(anchor.length));
571
+ return url.hash.slice(anchor.length);
488
572
  }
489
573
  /**
490
574
  * What a reply answers, from the top of the thread down to its parent.
@@ -554,7 +638,7 @@ function siteConversation(context, limit) {
554
638
  offset += page.length;
555
639
  for (const activity of page) {
556
640
  const reply = replyFrom(activity);
557
- if (reply === undefined)
641
+ if (reply === undefined || heldComment(context.admin, reply.id) !== undefined)
558
642
  continue;
559
643
  // A note answering another note is as much this post's as one answering
560
644
  // the post, so the post is found the way a reply post finds its thread.
@@ -576,26 +660,31 @@ function siteConversation(context, limit) {
576
660
  said.push({ ...quote, post });
577
661
  }
578
662
  }
579
- for (const stored of context.admin.listComments({
580
- status: 'approved',
581
- limit: limit * OVERSCAN,
582
- })) {
583
- const post = context.store.getBySlug(stored.slug);
584
- if (!shown(post))
585
- continue;
586
- said.push({ ...interactionOf(stored, post.permalink), post });
587
- }
588
663
  // Each post's thread, read once: where each reply sits and what it carries
589
664
  // is the thread's to say, so the site's feed and the post's agree.
590
665
  const threads = new Map();
591
666
  const placedOn = (post) => {
592
667
  let found = threads.get(post.path);
593
668
  if (found === undefined) {
594
- found = new Map(placed(postConversation(context, post).replies).map((reply) => [reply.id, reply]));
669
+ found = new Map(saidIn(postConversation(context, post)).map((reply) => [reply.id, reply]));
595
670
  threads.set(post.path, found);
596
671
  }
597
672
  return found;
598
673
  };
674
+ // A stored comment is taken from its post's thread rather than read on its
675
+ // own, so a reaction or an event's RSVP, which the thread holds apart, is
676
+ // left out here as it is from the post's feed.
677
+ for (const stored of context.admin.listComments({
678
+ status: 'approved',
679
+ limit: limit * OVERSCAN,
680
+ })) {
681
+ const post = context.store.getBySlug(stored.slug);
682
+ if (!shown(post))
683
+ continue;
684
+ const entry = placedOn(post).get(stored.id);
685
+ if (entry !== undefined)
686
+ said.push({ ...entry, post });
687
+ }
599
688
  // A reply post is in the feed of the thread it is shown in, unlisted or
600
689
  // not: the thread is listed, and the reply post is one of its answers.
601
690
  for (const answer of context.store.listReplyPosts({ limit: limit * OVERSCAN })) {
@@ -606,7 +695,7 @@ function siteConversation(context, limit) {
606
695
  if (reply !== undefined)
607
696
  said.push({ ...reply, post });
608
697
  }
609
- return newestFirst(said, limit).map((entry) => {
698
+ return newestFirst(said.filter(conversational), limit).map((entry) => {
610
699
  const thread = placedOn(entry.post);
611
700
  return {
612
701
  ...(thread.get(entry.id) ?? { ...entry, parent: null }),
@@ -619,7 +708,7 @@ function siteConversation(context, limit) {
619
708
  function directCounts(context, documents) {
620
709
  return new Map(documents.map((document) => [
621
710
  document.permalink,
622
- directReplies(postConversation(context, document).replies).length,
711
+ repliesFed(postConversation(context, document).replies).length,
623
712
  ]));
624
713
  }
625
714
  /**
@@ -653,7 +742,7 @@ function quotesOf(admin, approvals, objectId, naming) {
653
742
  if (quote?.id !== approval.quote || quote.quoted !== objectId)
654
743
  continue;
655
744
  quotes.push({
656
- id: quote.id,
745
+ ...unstored(quote.id),
657
746
  source: 'activitypub',
658
747
  kind: 'mention',
659
748
  author: naming(quote.actorId),
@@ -674,7 +763,7 @@ function quotesOf(admin, approvals, objectId, naming) {
674
763
  /** One logged fediverse reply as the thread's own shape. */
675
764
  function federatedInteraction(reply, author) {
676
765
  return {
677
- id: reply.id,
766
+ ...unstored(reply.id),
678
767
  source: 'activitypub',
679
768
  kind: 'reply',
680
769
  author,
@@ -688,24 +777,33 @@ function federatedInteraction(reply, author) {
688
777
  replies: [],
689
778
  };
690
779
  }
780
+ function unstored(id) {
781
+ return { id, key: repliesKey(id), guid: id, migrated: false };
782
+ }
691
783
  /** One stored comment as the thread's own shape. */
692
- function interactionOf(comment, permalink) {
784
+ function interactionOf(comment, permalink, baseUrl, users) {
785
+ // A user the site no longer has is named as the comment was signed.
786
+ const user = users.find((candidate) => candidate.username === comment.user);
693
787
  return {
694
788
  id: comment.id,
789
+ key: comment.id,
790
+ guid: comment.source === 'comment'
791
+ ? absoluteUrl(commentPageHref(comment.id), baseUrl)
792
+ : (comment.origin ?? comment.url ?? comment.id),
793
+ migrated: comment.migrated === true,
695
794
  source: comment.source,
696
795
  kind: comment.kind,
697
- author: {
698
- name: comment.author.name,
699
- // A commenter has no fediverse identity: they gave a name, maybe a
700
- // website, and nothing that names them anywhere else.
701
- handle: null,
702
- url: comment.author.url,
703
- // Only a webmention has one: it came out of the source page's `h-card`,
704
- // and a form asks nobody for a picture.
705
- avatar: comment.author.avatar === null ? null : avatarHref(comment.author.avatar),
706
- actorId: null,
707
- feed: comment.source === 'webmention' ? comment.author.url : null,
708
- },
796
+ author: user === undefined
797
+ ? {
798
+ name: comment.author.name,
799
+ handle: comment.actor === undefined ? null : (actorHandle(comment.actor) ?? null),
800
+ url: comment.author.url,
801
+ avatar: comment.author.avatar === null ? null : avatarHref(comment.author.avatar),
802
+ actorId: comment.actor ?? null,
803
+ feed: comment.source === 'webmention' ? comment.author.url : null,
804
+ username: null,
805
+ }
806
+ : bylineAuthor(profileContext(user), comment.author.name),
709
807
  // Where it can be read. A comment written here has a page of its own
710
808
  // (TASK-318); a webmention lives on the page it was sent from, and its
711
809
  // `url` says so. A theme that prints `url` for a fediverse reply prints a
@@ -724,47 +822,27 @@ function interactionOf(comment, permalink) {
724
822
  : { rsvp: { value: comment.rsvp, label: RSVP_LABELS[comment.rsvp] } }),
725
823
  };
726
824
  }
727
- /**
728
- * The `id` a comment is anchored at on the page.
729
- *
730
- * Prefixed rather than bare so a comment can never collide with a heading
731
- * anchor the post's own Markdown produced.
732
- */
733
- export function commentAnchor(id) {
734
- return `comment-${id}`;
735
- }
736
- /** The id of the comment whose page a path is, or `undefined` (TASK-319). */
737
- export function commentIdAt(pathname) {
738
- if (!pathname.startsWith(COMMENT_PAGE_PREFIX) || !pathname.endsWith('/'))
739
- return undefined;
740
- const encoded = pathname.slice(COMMENT_PAGE_PREFIX.length, -1);
741
- if (encoded === '' || encoded.includes('/'))
742
- return undefined;
743
- return decoded(encoded);
744
- }
745
- function decoded(value) {
746
- try {
747
- return decodeURIComponent(value);
748
- }
749
- catch {
750
- return undefined;
751
- }
752
- }
753
- /**
754
- * Everything said in a conversation, at every depth and in no order: the
755
- * replies and the mentions.
756
- *
757
- * The likes and the boosts are left out because they say nothing. A feed item
758
- * is somebody's words, and "@ada liked this" has none to carry — a reader
759
- * polling a comments feed would get an entry with an empty body and no way to
760
- * tell what it was for.
761
- */
825
+ /** What a post's comments feed carries, at every depth and in no order. */
762
826
  export function spokenIn(conversation) {
827
+ return saidIn(conversation).filter(conversational);
828
+ }
829
+ /** The mentions and every visible reply of a conversation, each with its parent. */
830
+ function saidIn(conversation) {
763
831
  return [
764
832
  ...conversation.mentions.map((mention) => ({ ...mention, parent: null })),
765
833
  ...placed(conversation.replies),
766
834
  ];
767
835
  }
836
+ /**
837
+ * Whether a feed carries it and a reply count counts it (TASK-335): somebody's
838
+ * words, a reply or a mention, said here. A like, a boost or a repost says
839
+ * nothing — "@ada liked this" would be an item with an empty body — and a
840
+ * migrated entry was published before the site came here, so a reader must
841
+ * not see it as new.
842
+ */
843
+ function conversational(entry) {
844
+ return !entry.migrated && (entry.kind === 'reply' || entry.kind === 'mention');
845
+ }
768
846
  /** Every visible reply of a thread at any depth, each with the reply it sits under. */
769
847
  function placed(replies, parent = null) {
770
848
  return directReplies(replies).flatMap((reply) => [
@@ -780,15 +858,9 @@ function placed(replies, parent = null) {
780
858
  function directReplies(replies) {
781
859
  return replies.flatMap((reply) => (isWithheld(reply) ? directReplies(reply.replies) : [reply]));
782
860
  }
783
- /**
784
- * The `/replies/` feed of one reply: a native comment's by its id, anything
785
- * else's by the key of its guid, as is a native comment whose id would read
786
- * as a key.
787
- */
788
- function repliesHrefOf(reply, baseUrl) {
789
- return repliesFeedPath(reply.source === 'comment' && !isRepliesKey(reply.id)
790
- ? reply.id
791
- : repliesKey(replyGuid(reply, baseUrl)));
861
+ /** The direct replies a feed carries and a count advertises. */
862
+ function repliesFed(replies) {
863
+ return directReplies(replies).filter(conversational);
792
864
  }
793
865
  /**
794
866
  * Interactions as a comments feed carries them: newest first, at most `limit`,
@@ -807,10 +879,10 @@ export function feedComments(said, options) {
807
879
  ? thread === undefined
808
880
  ? undefined
809
881
  : feedGuid(thread, baseUrl)
810
- : replyGuid(entry.parent, baseUrl);
811
- const replies = directReplies(entry.replies);
882
+ : entry.parent.guid;
883
+ const replies = repliesFed(entry.replies);
812
884
  return {
813
- id: replyGuid(entry, baseUrl),
885
+ id: entry.guid,
814
886
  url: absoluteUrl(entry.url ?? '/', baseUrl),
815
887
  author: entry.author.name,
816
888
  published: entry.published,
@@ -821,7 +893,7 @@ export function feedComments(said, options) {
821
893
  : {
822
894
  replies: {
823
895
  count: replies.length,
824
- feed: absoluteUrl(repliesHrefOf(entry, baseUrl), baseUrl),
896
+ feed: absoluteUrl(repliesFeedPath(entry.key), baseUrl),
825
897
  },
826
898
  }),
827
899
  ...(entry.author.feed === null
@@ -871,7 +943,7 @@ class PostsByObjectId {
871
943
  if (permalink !== undefined) {
872
944
  const document = this.#context.store.getByPermalink(permalink);
873
945
  if (document !== undefined &&
874
- activityStreamsId(document, this.#context.baseUrl) === objectId) {
946
+ activityStreamsId(document, this.#context.baseUrl, this.#context.store.now()) === objectId) {
875
947
  return document;
876
948
  }
877
949
  }
@@ -881,7 +953,7 @@ class PostsByObjectId {
881
953
  if (this.#all === undefined) {
882
954
  this.#all = new Map();
883
955
  for (const document of this.#context.store.listPosts()) {
884
- const id = activityStreamsId(document, this.#context.baseUrl);
956
+ const id = activityStreamsId(document, this.#context.baseUrl, this.#context.store.now());
885
957
  if (id !== undefined)
886
958
  this.#all.set(id, document);
887
959
  }
@@ -955,7 +1027,8 @@ function threadOf(said, under = said.root) {
955
1027
  const list = siblings(said.held.get(id)?.inReplyTo ?? said.root, id, true);
956
1028
  if (list === undefined)
957
1029
  return undefined;
958
- const entry = { id, withheld: true, replies: [] };
1030
+ const key = isKey(id) ? id : repliesKey(id);
1031
+ const entry = { id, key, withheld: true, replies: [] };
959
1032
  list.push(entry);
960
1033
  withheld.set(id, entry);
961
1034
  return entry;
@@ -965,20 +1038,6 @@ function threadOf(said, under = said.root) {
965
1038
  }
966
1039
  return top;
967
1040
  }
968
- /** The entry of a thread with this id that a reader can see, at any depth. */
969
- export function visibleReply(replies, id) {
970
- for (const reply of replies) {
971
- if (!isWithheld(reply) && reply.id === id)
972
- return reply;
973
- const found = visibleReply(reply.replies, id);
974
- if (found !== undefined)
975
- return found;
976
- }
977
- return undefined;
978
- }
979
- export function isWithheld(reply) {
980
- return 'withheld' in reply;
981
- }
982
1041
  /** Oldest first, which is the order a conversation reads in. */
983
1042
  function byPublished(left, right) {
984
1043
  return left.published.getTime() - right.published.getTime();
@@ -1021,10 +1080,10 @@ const REACTIONS = {
1021
1080
  * stops when a round finds nothing new, which it must, because a row is
1022
1081
  * collected once and there are finitely many.
1023
1082
  */
1024
- function activitiesAround(admin, objectId) {
1083
+ function activitiesAround(admin, objectIds) {
1025
1084
  const collected = new Map();
1026
- const asked = new Set([objectId]);
1027
- let frontier = [objectId];
1085
+ const asked = new Set(objectIds);
1086
+ let frontier = [...asked];
1028
1087
  while (frontier.length > 0) {
1029
1088
  const next = [];
1030
1089
  for (const activity of admin.listActivitiesAbout(frontier)) {
@@ -1106,6 +1165,7 @@ function authorNaming(admin) {
1106
1165
  avatar: icon === null ? null : avatarHref(icon),
1107
1166
  actorId,
1108
1167
  feed: null,
1168
+ username: null,
1109
1169
  };
1110
1170
  known.set(actorId, author);
1111
1171
  return author;