@geekity/cms 0.30.0 → 0.32.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 (1637) hide show
  1. package/README.md +26 -4266
  2. package/admin/components/badge.njk +4 -0
  3. package/admin/components/fields.njk +41 -24
  4. package/admin/components/job-status.njk +45 -0
  5. package/admin/components/setting-fields.njk +38 -0
  6. package/admin/layouts/settings-page.njk +16 -0
  7. package/admin/pages/comments/all.njk +1 -2
  8. package/admin/pages/documents/editor.njk +17 -15
  9. package/admin/pages/documents/syndication.njk +4 -4
  10. package/admin/pages/federation/followers.njk +56 -6
  11. package/admin/pages/federation/settings.njk +1 -1
  12. package/admin/pages/media/library.njk +52 -3
  13. package/admin/pages/navigation/menus.njk +2 -2
  14. package/admin/pages/plugins/screen.njk +5 -46
  15. package/admin/pages/settings/discussion.njk +76 -47
  16. package/admin/pages/settings/email.njk +75 -47
  17. package/admin/pages/settings/general.njk +15 -15
  18. package/admin/pages/settings/permalinks.njk +8 -8
  19. package/admin/pages/settings/privacy.njk +6 -6
  20. package/admin/pages/settings/reading.njk +36 -36
  21. package/admin/pages/tools/dev-mode.njk +29 -3
  22. package/admin/pages/tools/export.njk +89 -0
  23. package/admin/pages/tools/maintenance.njk +51 -0
  24. package/admin/pages/users/apps.njk +2 -2
  25. package/admin/pages/users/edit.njk +3 -3
  26. package/admin/pages/users/new.njk +2 -2
  27. package/admin/static/admin.css +80 -0
  28. package/dist/access-log.d.ts +2 -10
  29. package/dist/access-log.d.ts.map +1 -1
  30. package/dist/access-log.js +1 -1
  31. package/dist/access-log.js.map +1 -1
  32. package/dist/{web → admin}/admin-bar.d.ts +3 -2
  33. package/dist/admin/admin-bar.d.ts.map +1 -0
  34. package/dist/{web → admin}/admin-bar.js +20 -17
  35. package/dist/admin/admin-bar.js.map +1 -0
  36. package/dist/{indieauth → admin}/app-activity.d.ts +2 -2
  37. package/dist/admin/app-activity.d.ts.map +1 -0
  38. package/dist/{indieauth → admin}/app-activity.js +6 -7
  39. package/dist/admin/app-activity.js.map +1 -0
  40. package/dist/admin/appearance.d.ts +4 -8
  41. package/dist/admin/appearance.d.ts.map +1 -1
  42. package/dist/admin/appearance.js +19 -20
  43. package/dist/admin/appearance.js.map +1 -1
  44. package/dist/admin/assets.d.ts +1 -8
  45. package/dist/admin/assets.d.ts.map +1 -1
  46. package/dist/admin/assets.js +2 -9
  47. package/dist/admin/assets.js.map +1 -1
  48. package/dist/admin/comments.d.ts +2 -2
  49. package/dist/admin/comments.d.ts.map +1 -1
  50. package/dist/admin/comments.js +17 -19
  51. package/dist/admin/comments.js.map +1 -1
  52. package/dist/admin/confirm-password.d.ts +4 -0
  53. package/dist/admin/confirm-password.d.ts.map +1 -0
  54. package/dist/admin/confirm-password.js +11 -0
  55. package/dist/admin/confirm-password.js.map +1 -0
  56. package/dist/{indieauth → admin}/connected-apps.d.ts +2 -2
  57. package/dist/admin/connected-apps.d.ts.map +1 -0
  58. package/dist/{indieauth → admin}/connected-apps.js +33 -39
  59. package/dist/admin/connected-apps.js.map +1 -0
  60. package/dist/admin/credentials.js +1 -1
  61. package/dist/admin/credentials.js.map +1 -1
  62. package/dist/admin/dev-mode.d.ts +1 -1
  63. package/dist/admin/dev-mode.d.ts.map +1 -1
  64. package/dist/admin/dev-mode.js +35 -10
  65. package/dist/admin/dev-mode.js.map +1 -1
  66. package/dist/admin/documents.d.ts +16 -301
  67. package/dist/admin/documents.d.ts.map +1 -1
  68. package/dist/admin/documents.js +94 -1040
  69. package/dist/admin/documents.js.map +1 -1
  70. package/dist/admin/editor-actions.d.ts +3 -2
  71. package/dist/admin/editor-actions.d.ts.map +1 -1
  72. package/dist/admin/editor-actions.js +8 -9
  73. package/dist/admin/editor-actions.js.map +1 -1
  74. package/dist/admin/editor-fields.d.ts +45 -0
  75. package/dist/admin/editor-fields.d.ts.map +1 -0
  76. package/dist/admin/editor-fields.js +71 -0
  77. package/dist/admin/editor-fields.js.map +1 -0
  78. package/dist/admin/editor-layout.d.ts +2 -10
  79. package/dist/admin/editor-layout.d.ts.map +1 -1
  80. package/dist/admin/editor-layout.js +2 -2
  81. package/dist/admin/editor-layout.js.map +1 -1
  82. package/dist/admin/export.d.ts +10 -0
  83. package/dist/admin/export.d.ts.map +1 -0
  84. package/dist/admin/export.js +72 -0
  85. package/dist/admin/export.js.map +1 -0
  86. package/dist/admin/federation.d.ts +6 -17
  87. package/dist/admin/federation.d.ts.map +1 -1
  88. package/dist/admin/federation.js +49 -104
  89. package/dist/admin/federation.js.map +1 -1
  90. package/dist/admin/flash.d.ts +2 -2
  91. package/dist/admin/flash.d.ts.map +1 -1
  92. package/dist/admin/headers.d.ts +1 -1
  93. package/dist/admin/headers.d.ts.map +1 -1
  94. package/dist/admin/headers.js +1 -1
  95. package/dist/admin/headers.js.map +1 -1
  96. package/dist/admin/index.d.ts +36 -21
  97. package/dist/admin/index.d.ts.map +1 -1
  98. package/dist/admin/index.js +26 -14
  99. package/dist/admin/index.js.map +1 -1
  100. package/dist/{indieauth/consent.d.ts → admin/indieauth-consent.d.ts} +4 -4
  101. package/dist/admin/indieauth-consent.d.ts.map +1 -0
  102. package/dist/{indieauth/consent.js → admin/indieauth-consent.js} +20 -23
  103. package/dist/admin/indieauth-consent.js.map +1 -0
  104. package/dist/admin/job-status.d.ts +25 -0
  105. package/dist/admin/job-status.d.ts.map +1 -0
  106. package/dist/admin/job-status.js +53 -0
  107. package/dist/admin/job-status.js.map +1 -0
  108. package/dist/admin/legacy-migrations.d.ts +131 -0
  109. package/dist/admin/legacy-migrations.d.ts.map +1 -0
  110. package/dist/admin/legacy-migrations.js +236 -0
  111. package/dist/admin/legacy-migrations.js.map +1 -0
  112. package/dist/admin/maintenance.d.ts +9 -0
  113. package/dist/admin/maintenance.d.ts.map +1 -0
  114. package/dist/admin/maintenance.js +42 -0
  115. package/dist/admin/maintenance.js.map +1 -0
  116. package/dist/admin/media.d.ts +8 -109
  117. package/dist/admin/media.d.ts.map +1 -1
  118. package/dist/admin/media.js +35 -188
  119. package/dist/admin/media.js.map +1 -1
  120. package/dist/admin/menu.d.ts.map +1 -1
  121. package/dist/admin/menu.js +11 -7
  122. package/dist/admin/menu.js.map +1 -1
  123. package/dist/admin/messages.d.ts +1 -1
  124. package/dist/admin/messages.d.ts.map +1 -1
  125. package/dist/admin/messages.js +11 -14
  126. package/dist/admin/messages.js.map +1 -1
  127. package/dist/admin/navigation.d.ts +3 -3
  128. package/dist/admin/navigation.d.ts.map +1 -1
  129. package/dist/admin/navigation.js +34 -33
  130. package/dist/admin/navigation.js.map +1 -1
  131. package/dist/admin/personal-data.d.ts +1 -1
  132. package/dist/admin/personal-data.d.ts.map +1 -1
  133. package/dist/admin/personal-data.js +3 -6
  134. package/dist/admin/personal-data.js.map +1 -1
  135. package/dist/admin/plugins.d.ts +1 -1
  136. package/dist/admin/plugins.d.ts.map +1 -1
  137. package/dist/admin/plugins.js +28 -79
  138. package/dist/admin/plugins.js.map +1 -1
  139. package/dist/admin/preview.d.ts +2 -1
  140. package/dist/admin/preview.d.ts.map +1 -1
  141. package/dist/admin/preview.js +31 -36
  142. package/dist/admin/preview.js.map +1 -1
  143. package/dist/admin/recovery.d.ts +3 -3
  144. package/dist/admin/recovery.d.ts.map +1 -1
  145. package/dist/admin/recovery.js +12 -14
  146. package/dist/admin/recovery.js.map +1 -1
  147. package/dist/admin/routes.d.ts +1 -3
  148. package/dist/admin/routes.d.ts.map +1 -1
  149. package/dist/admin/routes.js +34 -29
  150. package/dist/admin/routes.js.map +1 -1
  151. package/dist/admin/setting-overrides.d.ts +4 -0
  152. package/dist/admin/setting-overrides.d.ts.map +1 -0
  153. package/dist/admin/setting-overrides.js +24 -0
  154. package/dist/admin/setting-overrides.js.map +1 -0
  155. package/dist/admin/settings-discussion.d.ts +6 -4
  156. package/dist/admin/settings-discussion.d.ts.map +1 -1
  157. package/dist/admin/settings-discussion.js +79 -46
  158. package/dist/admin/settings-discussion.js.map +1 -1
  159. package/dist/admin/settings-email.d.ts +12 -9
  160. package/dist/admin/settings-email.d.ts.map +1 -1
  161. package/dist/admin/settings-email.js +94 -80
  162. package/dist/admin/settings-email.js.map +1 -1
  163. package/dist/admin/settings-federation.d.ts +0 -7
  164. package/dist/admin/settings-federation.d.ts.map +1 -1
  165. package/dist/admin/settings-federation.js +0 -36
  166. package/dist/admin/settings-federation.js.map +1 -1
  167. package/dist/admin/settings-fields.d.ts +32 -0
  168. package/dist/admin/settings-fields.d.ts.map +1 -0
  169. package/dist/admin/settings-fields.js +368 -0
  170. package/dist/admin/settings-fields.js.map +1 -0
  171. package/dist/admin/settings-general.d.ts.map +1 -1
  172. package/dist/admin/settings-general.js +17 -23
  173. package/dist/admin/settings-general.js.map +1 -1
  174. package/dist/admin/settings-page.d.ts +5 -32
  175. package/dist/admin/settings-page.d.ts.map +1 -1
  176. package/dist/admin/settings-page.js +39 -55
  177. package/dist/admin/settings-page.js.map +1 -1
  178. package/dist/admin/settings-pages.d.ts +1 -1
  179. package/dist/admin/settings-pages.d.ts.map +1 -1
  180. package/dist/admin/settings-permalinks.js +3 -3
  181. package/dist/admin/settings-permalinks.js.map +1 -1
  182. package/dist/admin/settings-privacy.js +1 -1
  183. package/dist/admin/settings-privacy.js.map +1 -1
  184. package/dist/admin/settings-reading.d.ts +2 -2
  185. package/dist/admin/settings-reading.d.ts.map +1 -1
  186. package/dist/admin/settings-reading.js +17 -16
  187. package/dist/admin/settings-reading.js.map +1 -1
  188. package/dist/admin/settings-renderer.d.ts +32 -0
  189. package/dist/admin/settings-renderer.d.ts.map +1 -0
  190. package/dist/admin/settings-renderer.js +79 -0
  191. package/dist/admin/settings-renderer.js.map +1 -0
  192. package/dist/admin/settings.d.ts +0 -579
  193. package/dist/admin/settings.d.ts.map +1 -1
  194. package/dist/admin/settings.js +1 -1155
  195. package/dist/admin/settings.js.map +1 -1
  196. package/dist/admin/site-setting-edit.d.ts +4 -0
  197. package/dist/admin/site-setting-edit.d.ts.map +1 -0
  198. package/dist/admin/site-setting-edit.js +20 -0
  199. package/dist/admin/site-setting-edit.js.map +1 -0
  200. package/dist/admin/syndication-targets.d.ts +1 -1
  201. package/dist/admin/syndication-targets.d.ts.map +1 -1
  202. package/dist/admin/syndication-targets.js +11 -15
  203. package/dist/admin/syndication-targets.js.map +1 -1
  204. package/dist/admin/taxonomy.d.ts +2 -2
  205. package/dist/admin/taxonomy.d.ts.map +1 -1
  206. package/dist/admin/taxonomy.js +17 -29
  207. package/dist/admin/taxonomy.js.map +1 -1
  208. package/dist/admin/templates.d.ts +2 -0
  209. package/dist/admin/templates.d.ts.map +1 -1
  210. package/dist/admin/templates.js +3 -1
  211. package/dist/admin/templates.js.map +1 -1
  212. package/dist/admin/tools.d.ts +4 -4
  213. package/dist/admin/tools.d.ts.map +1 -1
  214. package/dist/admin/tools.js +3 -6
  215. package/dist/admin/tools.js.map +1 -1
  216. package/dist/admin/uploads.d.ts +1 -106
  217. package/dist/admin/uploads.d.ts.map +1 -1
  218. package/dist/admin/uploads.js +2 -191
  219. package/dist/admin/uploads.js.map +1 -1
  220. package/dist/admin/users.d.ts +20 -15
  221. package/dist/admin/users.d.ts.map +1 -1
  222. package/dist/admin/users.js +84 -81
  223. package/dist/admin/users.js.map +1 -1
  224. package/dist/avatars/avatars.d.ts +2 -4
  225. package/dist/avatars/avatars.d.ts.map +1 -1
  226. package/dist/avatars/avatars.js +15 -19
  227. package/dist/avatars/avatars.js.map +1 -1
  228. package/dist/avatars/index.d.ts +1 -2
  229. package/dist/avatars/index.d.ts.map +1 -1
  230. package/dist/avatars/index.js +1 -2
  231. package/dist/avatars/index.js.map +1 -1
  232. package/dist/cache.d.ts +4 -4
  233. package/dist/cache.d.ts.map +1 -1
  234. package/dist/cache.js +13 -9
  235. package/dist/cache.js.map +1 -1
  236. package/dist/cli.d.ts +2 -33
  237. package/dist/cli.d.ts.map +1 -1
  238. package/dist/cli.js +729 -344
  239. package/dist/cli.js.map +1 -1
  240. package/dist/cms/app.d.ts +11 -0
  241. package/dist/cms/app.d.ts.map +1 -0
  242. package/dist/cms/app.js +126 -0
  243. package/dist/cms/app.js.map +1 -0
  244. package/dist/cms/boot.d.ts +26 -0
  245. package/dist/cms/boot.d.ts.map +1 -0
  246. package/dist/cms/boot.js +128 -0
  247. package/dist/cms/boot.js.map +1 -0
  248. package/dist/cms/create.d.ts +272 -0
  249. package/dist/cms/create.d.ts.map +1 -0
  250. package/dist/cms/create.js +181 -0
  251. package/dist/cms/create.js.map +1 -0
  252. package/dist/cms/lifecycle.d.ts +11 -0
  253. package/dist/cms/lifecycle.d.ts.map +1 -0
  254. package/dist/cms/lifecycle.js +15 -0
  255. package/dist/cms/lifecycle.js.map +1 -0
  256. package/dist/{web/errors.d.ts → cms/server-error.d.ts} +2 -8
  257. package/dist/cms/server-error.d.ts.map +1 -0
  258. package/dist/{web/errors.js → cms/server-error.js} +4 -14
  259. package/dist/cms/server-error.js.map +1 -0
  260. package/dist/cms/services.d.ts +57 -0
  261. package/dist/cms/services.d.ts.map +1 -0
  262. package/dist/cms/services.js +410 -0
  263. package/dist/cms/services.js.map +1 -0
  264. package/dist/cms/site-records.d.ts +4 -0
  265. package/dist/cms/site-records.d.ts.map +1 -0
  266. package/dist/cms/site-records.js +13 -0
  267. package/dist/cms/site-records.js.map +1 -0
  268. package/dist/comments/akismet.d.ts +14 -47
  269. package/dist/comments/akismet.d.ts.map +1 -1
  270. package/dist/comments/akismet.js +30 -71
  271. package/dist/comments/akismet.js.map +1 -1
  272. package/dist/comments/conversation.d.ts +340 -0
  273. package/dist/comments/conversation.d.ts.map +1 -0
  274. package/dist/comments/conversation.js +51 -0
  275. package/dist/comments/conversation.js.map +1 -0
  276. package/dist/comments/form.d.ts +2 -2
  277. package/dist/comments/form.d.ts.map +1 -1
  278. package/dist/comments/form.js +2 -2
  279. package/dist/comments/form.js.map +1 -1
  280. package/dist/comments/index.d.ts +15 -9
  281. package/dist/comments/index.d.ts.map +1 -1
  282. package/dist/comments/index.js +9 -6
  283. package/dist/comments/index.js.map +1 -1
  284. package/dist/comments/intake.d.ts +147 -0
  285. package/dist/comments/intake.d.ts.map +1 -0
  286. package/dist/comments/intake.js +161 -0
  287. package/dist/comments/intake.js.map +1 -0
  288. package/dist/comments/markdown.d.ts.map +1 -1
  289. package/dist/comments/markdown.js +2 -9
  290. package/dist/comments/markdown.js.map +1 -1
  291. package/dist/comments/migrations.d.ts +45 -0
  292. package/dist/comments/migrations.d.ts.map +1 -0
  293. package/dist/comments/migrations.js +194 -0
  294. package/dist/comments/migrations.js.map +1 -0
  295. package/dist/comments/moderate.d.ts +2 -2
  296. package/dist/comments/moderate.d.ts.map +1 -1
  297. package/dist/comments/moderate.js +3 -13
  298. package/dist/comments/moderate.js.map +1 -1
  299. package/dist/comments/page-form.d.ts +52 -0
  300. package/dist/comments/page-form.d.ts.map +1 -0
  301. package/dist/comments/page-form.js +62 -0
  302. package/dist/comments/page-form.js.map +1 -0
  303. package/dist/comments/policy.d.ts +24 -35
  304. package/dist/comments/policy.d.ts.map +1 -1
  305. package/dist/comments/policy.js +16 -38
  306. package/dist/comments/policy.js.map +1 -1
  307. package/dist/comments/records.d.ts +17 -195
  308. package/dist/comments/records.d.ts.map +1 -1
  309. package/dist/comments/records.js +24 -394
  310. package/dist/comments/records.js.map +1 -1
  311. package/dist/comments/reply-notices.d.ts +10 -11
  312. package/dist/comments/reply-notices.d.ts.map +1 -1
  313. package/dist/comments/reply-notices.js +32 -20
  314. package/dist/comments/reply-notices.js.map +1 -1
  315. package/dist/comments/reply-post.d.ts +2 -2
  316. package/dist/comments/reply-post.d.ts.map +1 -1
  317. package/dist/comments/reply-post.js +8 -7
  318. package/dist/comments/reply-post.js.map +1 -1
  319. package/dist/comments/routes.d.ts +3 -3
  320. package/dist/comments/routes.d.ts.map +1 -1
  321. package/dist/comments/routes.js +19 -31
  322. package/dist/comments/routes.js.map +1 -1
  323. package/dist/comments/submission.d.ts +5 -102
  324. package/dist/comments/submission.d.ts.map +1 -1
  325. package/dist/comments/submission.js +5 -22
  326. package/dist/comments/submission.js.map +1 -1
  327. package/dist/comments/viewer.d.ts +1 -25
  328. package/dist/comments/viewer.d.ts.map +1 -1
  329. package/dist/comments/viewer.js +1 -44
  330. package/dist/comments/viewer.js.map +1 -1
  331. package/dist/config-loader.d.ts +35 -0
  332. package/dist/config-loader.d.ts.map +1 -0
  333. package/dist/config-loader.js +117 -0
  334. package/dist/config-loader.js.map +1 -0
  335. package/dist/config.d.ts +99 -51
  336. package/dist/config.d.ts.map +1 -1
  337. package/dist/config.js +137 -181
  338. package/dist/config.js.map +1 -1
  339. package/dist/contact/delivery.d.ts +3 -5
  340. package/dist/contact/delivery.d.ts.map +1 -1
  341. package/dist/contact/delivery.js +5 -14
  342. package/dist/contact/delivery.js.map +1 -1
  343. package/dist/contact/form.d.ts +2 -4
  344. package/dist/contact/form.d.ts.map +1 -1
  345. package/dist/contact/form.js +3 -4
  346. package/dist/contact/form.js.map +1 -1
  347. package/dist/contact/index.d.ts +3 -3
  348. package/dist/contact/index.d.ts.map +1 -1
  349. package/dist/contact/index.js +3 -3
  350. package/dist/contact/index.js.map +1 -1
  351. package/dist/contact/records.d.ts +0 -2
  352. package/dist/contact/records.d.ts.map +1 -1
  353. package/dist/contact/records.js +11 -16
  354. package/dist/contact/records.js.map +1 -1
  355. package/dist/contact/submission.d.ts +2 -2
  356. package/dist/contact/submission.d.ts.map +1 -1
  357. package/dist/contact/submission.js +7 -16
  358. package/dist/contact/submission.js.map +1 -1
  359. package/dist/{images → content}/alt-text.d.ts +1 -1
  360. package/dist/content/alt-text.d.ts.map +1 -0
  361. package/dist/{images → content}/alt-text.js +3 -5
  362. package/dist/content/alt-text.js.map +1 -0
  363. package/dist/content/authors.d.ts +79 -0
  364. package/dist/content/authors.d.ts.map +1 -0
  365. package/dist/content/authors.js +106 -0
  366. package/dist/content/authors.js.map +1 -0
  367. package/dist/content/citation.d.ts +4 -0
  368. package/dist/content/citation.d.ts.map +1 -1
  369. package/dist/content/citation.js +3 -0
  370. package/dist/content/citation.js.map +1 -1
  371. package/dist/content/comments.d.ts +3 -0
  372. package/dist/content/comments.d.ts.map +1 -0
  373. package/dist/content/comments.js +3 -0
  374. package/dist/content/comments.js.map +1 -0
  375. package/dist/content/contact.d.ts +3 -0
  376. package/dist/content/contact.d.ts.map +1 -0
  377. package/dist/content/contact.js +3 -0
  378. package/dist/content/contact.js.map +1 -0
  379. package/dist/content/document-form.d.ts +197 -0
  380. package/dist/content/document-form.d.ts.map +1 -0
  381. package/dist/content/document-form.js +201 -0
  382. package/dist/content/document-form.js.map +1 -0
  383. package/dist/content/document-kind.d.ts +55 -0
  384. package/dist/content/document-kind.d.ts.map +1 -0
  385. package/dist/content/document-kind.js +30 -0
  386. package/dist/content/document-kind.js.map +1 -0
  387. package/dist/{admin/enclosure-field.d.ts → content/enclosure-form.d.ts} +14 -34
  388. package/dist/content/enclosure-form.d.ts.map +1 -0
  389. package/dist/{admin/enclosure-field.js → content/enclosure-form.js} +43 -81
  390. package/dist/content/enclosure-form.js.map +1 -0
  391. package/dist/content/enclosure.d.ts.map +1 -1
  392. package/dist/content/enclosure.js +3 -4
  393. package/dist/content/enclosure.js.map +1 -1
  394. package/dist/{admin/event-field.d.ts → content/event-form.d.ts} +6 -5
  395. package/dist/content/event-form.d.ts.map +1 -0
  396. package/dist/{admin/event-field.js → content/event-form.js} +45 -12
  397. package/dist/content/event-form.js.map +1 -0
  398. package/dist/content/excerpt.d.ts +26 -0
  399. package/dist/content/excerpt.d.ts.map +1 -0
  400. package/dist/content/excerpt.js +46 -0
  401. package/dist/content/excerpt.js.map +1 -0
  402. package/dist/content/form-error.d.ts +10 -0
  403. package/dist/content/form-error.d.ts.map +1 -0
  404. package/dist/content/form-error.js +2 -0
  405. package/dist/content/form-error.js.map +1 -0
  406. package/dist/{web → content}/guids.d.ts +12 -5
  407. package/dist/content/guids.d.ts.map +1 -0
  408. package/dist/{web → content}/guids.js +28 -5
  409. package/dist/content/guids.js.map +1 -0
  410. package/dist/content/image-tags.d.ts +25 -0
  411. package/dist/content/image-tags.d.ts.map +1 -0
  412. package/dist/content/image-tags.js +55 -0
  413. package/dist/content/image-tags.js.map +1 -0
  414. package/dist/content/index.d.ts +11 -6
  415. package/dist/content/index.d.ts.map +1 -1
  416. package/dist/content/index.js +6 -3
  417. package/dist/content/index.js.map +1 -1
  418. package/dist/content/kept-properties.d.ts +0 -1
  419. package/dist/content/kept-properties.d.ts.map +1 -1
  420. package/dist/content/kept-properties.js +2 -2
  421. package/dist/content/kept-properties.js.map +1 -1
  422. package/dist/content/language.d.ts +19 -0
  423. package/dist/content/language.d.ts.map +1 -0
  424. package/dist/content/language.js +19 -0
  425. package/dist/content/language.js.map +1 -0
  426. package/dist/content/license.d.ts.map +1 -0
  427. package/dist/content/license.js.map +1 -0
  428. package/dist/{web → content}/locale.d.ts +0 -6
  429. package/dist/content/locale.d.ts.map +1 -0
  430. package/dist/{web → content}/locale.js +1 -6
  431. package/dist/content/locale.js.map +1 -0
  432. package/dist/content/location-form.d.ts +17 -0
  433. package/dist/content/location-form.d.ts.map +1 -0
  434. package/dist/{admin/location-field.js → content/location-form.js} +2 -23
  435. package/dist/content/location-form.js.map +1 -0
  436. package/dist/content/location.d.ts.map +1 -1
  437. package/dist/content/location.js +1 -3
  438. package/dist/content/location.js.map +1 -1
  439. package/dist/content/locations.d.ts +0 -1
  440. package/dist/content/locations.d.ts.map +1 -1
  441. package/dist/content/locations.js +2 -2
  442. package/dist/content/locations.js.map +1 -1
  443. package/dist/content/markdown-links.d.ts +11 -0
  444. package/dist/content/markdown-links.d.ts.map +1 -0
  445. package/dist/content/markdown-links.js +223 -0
  446. package/dist/content/markdown-links.js.map +1 -0
  447. package/dist/content/markdown.d.ts +2 -1
  448. package/dist/content/markdown.d.ts.map +1 -1
  449. package/dist/content/markdown.js +1 -1
  450. package/dist/content/markdown.js.map +1 -1
  451. package/dist/content/media.d.ts +7 -0
  452. package/dist/content/media.d.ts.map +1 -1
  453. package/dist/content/media.js +12 -1
  454. package/dist/content/media.js.map +1 -1
  455. package/dist/content/metadata/strip-job.d.ts +16 -0
  456. package/dist/content/metadata/strip-job.d.ts.map +1 -0
  457. package/dist/content/metadata/strip-job.js +24 -0
  458. package/dist/content/metadata/strip-job.js.map +1 -0
  459. package/dist/content/metadata/sweep.d.ts +13 -1
  460. package/dist/content/metadata/sweep.d.ts.map +1 -1
  461. package/dist/content/metadata/sweep.js +47 -25
  462. package/dist/content/metadata/sweep.js.map +1 -1
  463. package/dist/content/migrated.js +1 -1
  464. package/dist/content/migrated.js.map +1 -1
  465. package/dist/content/parser.d.ts.map +1 -1
  466. package/dist/content/parser.js +1 -12
  467. package/dist/content/parser.js.map +1 -1
  468. package/dist/content/permalink-file.d.ts +2 -1
  469. package/dist/content/permalink-file.d.ts.map +1 -1
  470. package/dist/content/permalink-file.js +3 -3
  471. package/dist/content/permalink-file.js.map +1 -1
  472. package/dist/content/permalinks.d.ts +34 -0
  473. package/dist/content/permalinks.d.ts.map +1 -0
  474. package/dist/{web/documents.js → content/permalinks.js} +6 -56
  475. package/dist/content/permalinks.js.map +1 -0
  476. package/dist/content/photo-form.d.ts +29 -0
  477. package/dist/content/photo-form.d.ts.map +1 -0
  478. package/dist/{admin/photo-field.js → content/photo-form.js} +43 -40
  479. package/dist/content/photo-form.js.map +1 -0
  480. package/dist/content/photo.d.ts +2 -1
  481. package/dist/content/photo.d.ts.map +1 -1
  482. package/dist/content/photo.js +2 -2
  483. package/dist/content/photo.js.map +1 -1
  484. package/dist/content/post-fields.d.ts +40 -0
  485. package/dist/content/post-fields.d.ts.map +1 -0
  486. package/dist/content/post-fields.js +252 -0
  487. package/dist/content/post-fields.js.map +1 -0
  488. package/dist/content/read-form.d.ts +31 -0
  489. package/dist/content/read-form.d.ts.map +1 -0
  490. package/dist/content/read-form.js +157 -0
  491. package/dist/content/read-form.js.map +1 -0
  492. package/dist/content/read.d.ts +9 -2
  493. package/dist/content/read.d.ts.map +1 -1
  494. package/dist/content/read.js +28 -13
  495. package/dist/content/read.js.map +1 -1
  496. package/dist/content/redirects.d.ts +84 -0
  497. package/dist/content/redirects.d.ts.map +1 -0
  498. package/dist/content/redirects.js +234 -0
  499. package/dist/content/redirects.js.map +1 -0
  500. package/dist/content/sanitize.d.ts +13 -0
  501. package/dist/content/sanitize.d.ts.map +1 -0
  502. package/dist/{web → content}/sanitize.js +4 -71
  503. package/dist/content/sanitize.js.map +1 -0
  504. package/dist/content/save.d.ts +5 -8
  505. package/dist/content/save.d.ts.map +1 -1
  506. package/dist/content/save.js +5 -26
  507. package/dist/content/save.js.map +1 -1
  508. package/dist/content/schedule.d.ts +2 -2
  509. package/dist/content/schedule.d.ts.map +1 -1
  510. package/dist/content/schedule.js +1 -3
  511. package/dist/content/schedule.js.map +1 -1
  512. package/dist/content/served.d.ts +58 -0
  513. package/dist/content/served.d.ts.map +1 -0
  514. package/dist/content/served.js +65 -0
  515. package/dist/content/served.js.map +1 -0
  516. package/dist/content/site-links.d.ts +72 -0
  517. package/dist/content/site-links.d.ts.map +1 -0
  518. package/dist/content/site-links.js +191 -0
  519. package/dist/content/site-links.js.map +1 -0
  520. package/dist/content/sqlite/archive.d.ts +4 -0
  521. package/dist/content/sqlite/archive.d.ts.map +1 -0
  522. package/dist/content/sqlite/archive.js +96 -0
  523. package/dist/content/sqlite/archive.js.map +1 -0
  524. package/dist/content/sqlite/backlinks.d.ts +4 -0
  525. package/dist/content/sqlite/backlinks.d.ts.map +1 -0
  526. package/dist/content/sqlite/backlinks.js +46 -0
  527. package/dist/content/sqlite/backlinks.js.map +1 -0
  528. package/dist/content/sqlite/catalog.d.ts +4 -0
  529. package/dist/content/sqlite/catalog.d.ts.map +1 -0
  530. package/dist/content/sqlite/catalog.js +62 -0
  531. package/dist/content/sqlite/catalog.js.map +1 -0
  532. package/dist/content/sqlite/clauses.d.ts +57 -0
  533. package/dist/content/sqlite/clauses.d.ts.map +1 -0
  534. package/dist/content/sqlite/clauses.js +76 -0
  535. package/dist/content/sqlite/clauses.js.map +1 -0
  536. package/dist/content/sqlite/database.d.ts +26 -0
  537. package/dist/content/sqlite/database.d.ts.map +1 -0
  538. package/dist/content/sqlite/database.js +27 -0
  539. package/dist/content/sqlite/database.js.map +1 -0
  540. package/dist/content/sqlite/documents.d.ts +12 -0
  541. package/dist/content/sqlite/documents.d.ts.map +1 -0
  542. package/dist/content/sqlite/documents.js +40 -0
  543. package/dist/content/sqlite/documents.js.map +1 -0
  544. package/dist/content/sqlite/lookups.d.ts +6 -0
  545. package/dist/content/sqlite/lookups.d.ts.map +1 -0
  546. package/dist/content/sqlite/lookups.js +25 -0
  547. package/dist/content/sqlite/lookups.js.map +1 -0
  548. package/dist/content/sqlite/open.d.ts +8 -0
  549. package/dist/content/sqlite/open.d.ts.map +1 -0
  550. package/dist/content/sqlite/open.js +63 -0
  551. package/dist/content/sqlite/open.js.map +1 -0
  552. package/dist/content/sqlite/replies.d.ts +4 -0
  553. package/dist/content/sqlite/replies.d.ts.map +1 -0
  554. package/dist/content/sqlite/replies.js +21 -0
  555. package/dist/content/sqlite/replies.js.map +1 -0
  556. package/dist/content/sqlite/rows.d.ts +22 -0
  557. package/dist/content/sqlite/rows.d.ts.map +1 -0
  558. package/dist/content/sqlite/rows.js +93 -0
  559. package/dist/content/sqlite/rows.js.map +1 -0
  560. package/dist/content/sqlite/schedule.d.ts +4 -0
  561. package/dist/content/sqlite/schedule.d.ts.map +1 -0
  562. package/dist/content/sqlite/schedule.js +16 -0
  563. package/dist/content/sqlite/schedule.js.map +1 -0
  564. package/dist/content/sqlite/schema.d.ts +10 -0
  565. package/dist/content/sqlite/schema.d.ts.map +1 -0
  566. package/dist/content/sqlite/schema.js +209 -0
  567. package/dist/content/sqlite/schema.js.map +1 -0
  568. package/dist/content/sqlite/search.d.ts +4 -0
  569. package/dist/content/sqlite/search.d.ts.map +1 -0
  570. package/dist/content/sqlite/search.js +54 -0
  571. package/dist/content/sqlite/search.js.map +1 -0
  572. package/dist/content/sqlite/spellings.d.ts +6 -0
  573. package/dist/content/sqlite/spellings.d.ts.map +1 -0
  574. package/dist/content/sqlite/spellings.js +80 -0
  575. package/dist/content/sqlite/spellings.js.map +1 -0
  576. package/dist/content/sqlite/taxonomy.d.ts +4 -0
  577. package/dist/content/sqlite/taxonomy.d.ts.map +1 -0
  578. package/dist/content/sqlite/taxonomy.js +75 -0
  579. package/dist/content/sqlite/taxonomy.js.map +1 -0
  580. package/dist/content/sqlite/writes.d.ts +9 -0
  581. package/dist/content/sqlite/writes.d.ts.map +1 -0
  582. package/dist/content/sqlite/writes.js +164 -0
  583. package/dist/content/sqlite/writes.js.map +1 -0
  584. package/dist/content/store.d.ts +142 -138
  585. package/dist/content/store.d.ts.map +1 -1
  586. package/dist/content/store.js +0 -1051
  587. package/dist/content/store.js.map +1 -1
  588. package/dist/content/sync.d.ts +12 -4
  589. package/dist/content/sync.d.ts.map +1 -1
  590. package/dist/content/sync.js +24 -41
  591. package/dist/content/sync.js.map +1 -1
  592. package/dist/content/syndicate-to.d.ts +25 -0
  593. package/dist/content/syndicate-to.d.ts.map +1 -0
  594. package/dist/content/syndicate-to.js +8 -0
  595. package/dist/content/syndicate-to.js.map +1 -0
  596. package/dist/{web → content}/taxonomy.d.ts +1 -1
  597. package/dist/content/taxonomy.d.ts.map +1 -0
  598. package/dist/{web → content}/taxonomy.js +2 -2
  599. package/dist/content/taxonomy.js.map +1 -0
  600. package/dist/content/time.d.ts +2 -2
  601. package/dist/content/time.d.ts.map +1 -1
  602. package/dist/content/time.js +3 -3
  603. package/dist/content/time.js.map +1 -1
  604. package/dist/content/trash.d.ts +35 -0
  605. package/dist/content/trash.d.ts.map +1 -0
  606. package/dist/content/trash.js +83 -0
  607. package/dist/content/trash.js.map +1 -0
  608. package/dist/content/uploads.d.ts +24 -0
  609. package/dist/content/uploads.d.ts.map +1 -0
  610. package/dist/content/uploads.js +32 -0
  611. package/dist/content/uploads.js.map +1 -0
  612. package/dist/content/video.d.ts.map +1 -1
  613. package/dist/content/video.js +3 -5
  614. package/dist/content/video.js.map +1 -1
  615. package/dist/content/write.d.ts +84 -0
  616. package/dist/content/write.d.ts.map +1 -0
  617. package/dist/content/write.js +570 -0
  618. package/dist/content/write.js.map +1 -0
  619. package/dist/content/writer.d.ts.map +1 -1
  620. package/dist/content/writer.js +1 -2
  621. package/dist/content/writer.js.map +1 -1
  622. package/dist/dev-mode.d.ts +6 -26
  623. package/dist/dev-mode.d.ts.map +1 -1
  624. package/dist/dev-mode.js +5 -54
  625. package/dist/dev-mode.js.map +1 -1
  626. package/dist/drain.d.ts +2 -3
  627. package/dist/drain.d.ts.map +1 -1
  628. package/dist/drain.js +2 -1
  629. package/dist/drain.js.map +1 -1
  630. package/dist/export/export-archives.d.ts +29 -0
  631. package/dist/export/export-archives.d.ts.map +1 -0
  632. package/dist/export/export-archives.js +88 -0
  633. package/dist/export/export-archives.js.map +1 -0
  634. package/dist/export/export-job.d.ts +21 -0
  635. package/dist/export/export-job.d.ts.map +1 -0
  636. package/dist/export/export-job.js +63 -0
  637. package/dist/export/export-job.js.map +1 -0
  638. package/dist/export/site-export.d.ts +101 -0
  639. package/dist/export/site-export.d.ts.map +1 -0
  640. package/dist/export/site-export.js +243 -0
  641. package/dist/export/site-export.js.map +1 -0
  642. package/dist/export/site-import.d.ts +75 -0
  643. package/dist/export/site-import.d.ts.map +1 -0
  644. package/dist/export/site-import.js +492 -0
  645. package/dist/export/site-import.js.map +1 -0
  646. package/dist/exports.d.ts +31 -0
  647. package/dist/exports.d.ts.map +1 -0
  648. package/dist/exports.js +10 -0
  649. package/dist/exports.js.map +1 -0
  650. package/dist/federation/actor.d.ts +1 -1
  651. package/dist/federation/actor.d.ts.map +1 -1
  652. package/dist/federation/actor.js +6 -13
  653. package/dist/federation/actor.js.map +1 -1
  654. package/dist/federation/article.d.ts +4 -14
  655. package/dist/federation/article.d.ts.map +1 -1
  656. package/dist/federation/article.js +40 -51
  657. package/dist/federation/article.js.map +1 -1
  658. package/dist/federation/backfill.d.ts +7 -5
  659. package/dist/federation/backfill.d.ts.map +1 -1
  660. package/dist/federation/backfill.js +12 -13
  661. package/dist/federation/backfill.js.map +1 -1
  662. package/dist/federation/citations.d.ts.map +1 -1
  663. package/dist/federation/citations.js.map +1 -1
  664. package/dist/federation/cited-post.d.ts +1 -1
  665. package/dist/federation/cited-post.d.ts.map +1 -1
  666. package/dist/federation/cited-post.js +3 -5
  667. package/dist/federation/cited-post.js.map +1 -1
  668. package/dist/federation/delivery-plan.d.ts +85 -0
  669. package/dist/federation/delivery-plan.d.ts.map +1 -0
  670. package/dist/federation/delivery-plan.js +137 -0
  671. package/dist/federation/delivery-plan.js.map +1 -0
  672. package/dist/federation/delivery.d.ts +12 -34
  673. package/dist/federation/delivery.d.ts.map +1 -1
  674. package/dist/federation/delivery.js +79 -212
  675. package/dist/federation/delivery.js.map +1 -1
  676. package/dist/federation/federation.d.ts +12 -12
  677. package/dist/federation/federation.d.ts.map +1 -1
  678. package/dist/federation/federation.js +12 -18
  679. package/dist/federation/federation.js.map +1 -1
  680. package/dist/federation/followers.d.ts +1 -1
  681. package/dist/federation/followers.d.ts.map +1 -1
  682. package/dist/federation/handles.d.ts +1 -1
  683. package/dist/federation/handles.d.ts.map +1 -1
  684. package/dist/federation/handles.js +1 -1
  685. package/dist/federation/handles.js.map +1 -1
  686. package/dist/federation/inbox.d.ts +1 -1
  687. package/dist/federation/inbox.d.ts.map +1 -1
  688. package/dist/federation/inbox.js +6 -5
  689. package/dist/federation/inbox.js.map +1 -1
  690. package/dist/federation/index.d.ts +10 -8
  691. package/dist/federation/index.d.ts.map +1 -1
  692. package/dist/federation/index.js +7 -5
  693. package/dist/federation/index.js.map +1 -1
  694. package/dist/federation/keys.d.ts +8 -27
  695. package/dist/federation/keys.d.ts.map +1 -1
  696. package/dist/federation/keys.js +7 -50
  697. package/dist/federation/keys.js.map +1 -1
  698. package/dist/federation/mount.d.ts +2 -2
  699. package/dist/federation/mount.d.ts.map +1 -1
  700. package/dist/federation/mount.js +9 -7
  701. package/dist/federation/mount.js.map +1 -1
  702. package/dist/federation/paths.d.ts +1 -9
  703. package/dist/federation/paths.d.ts.map +1 -1
  704. package/dist/federation/paths.js +2 -12
  705. package/dist/federation/paths.js.map +1 -1
  706. package/dist/federation/profiles.d.ts +2 -2
  707. package/dist/federation/profiles.d.ts.map +1 -1
  708. package/dist/federation/profiles.js +6 -9
  709. package/dist/federation/profiles.js.map +1 -1
  710. package/dist/federation/queue.d.ts +32 -17
  711. package/dist/federation/queue.d.ts.map +1 -1
  712. package/dist/federation/queue.js +173 -39
  713. package/dist/federation/queue.js.map +1 -1
  714. package/dist/federation/quotes.d.ts +2 -2
  715. package/dist/federation/quotes.d.ts.map +1 -1
  716. package/dist/federation/quotes.js +4 -4
  717. package/dist/federation/quotes.js.map +1 -1
  718. package/dist/federation/records.d.ts +2 -2
  719. package/dist/federation/records.d.ts.map +1 -1
  720. package/dist/federation/records.js +12 -19
  721. package/dist/federation/records.js.map +1 -1
  722. package/dist/federation/relays.d.ts +8 -5
  723. package/dist/federation/relays.d.ts.map +1 -1
  724. package/dist/federation/relays.js +52 -53
  725. package/dist/federation/relays.js.map +1 -1
  726. package/dist/federation/resend-job.d.ts +44 -0
  727. package/dist/federation/resend-job.d.ts.map +1 -0
  728. package/dist/federation/resend-job.js +59 -0
  729. package/dist/federation/resend-job.js.map +1 -0
  730. package/dist/federation/site-loaders.js +1 -1
  731. package/dist/federation/site-loaders.js.map +1 -1
  732. package/dist/federation/webfinger.d.ts +23 -0
  733. package/dist/federation/webfinger.d.ts.map +1 -0
  734. package/dist/federation/webfinger.js +70 -0
  735. package/dist/federation/webfinger.js.map +1 -0
  736. package/dist/files/atomic.d.ts +9 -0
  737. package/dist/files/atomic.d.ts.map +1 -1
  738. package/dist/files/atomic.js +5 -10
  739. package/dist/files/atomic.js.map +1 -1
  740. package/dist/files/data-files.d.ts +104 -0
  741. package/dist/files/data-files.d.ts.map +1 -0
  742. package/dist/files/data-files.js +330 -0
  743. package/dist/files/data-files.js.map +1 -0
  744. package/dist/files/export-archives.d.ts +12 -0
  745. package/dist/files/export-archives.d.ts.map +1 -0
  746. package/dist/files/export-archives.js +67 -0
  747. package/dist/files/export-archives.js.map +1 -0
  748. package/dist/files/static-files.d.ts +21 -0
  749. package/dist/files/static-files.d.ts.map +1 -0
  750. package/dist/files/static-files.js +73 -0
  751. package/dist/files/static-files.js.map +1 -0
  752. package/dist/files/tar.d.ts +29 -0
  753. package/dist/files/tar.d.ts.map +1 -0
  754. package/dist/files/tar.js +206 -0
  755. package/dist/files/tar.js.map +1 -0
  756. package/dist/files/upload-types.d.ts +81 -0
  757. package/dist/files/upload-types.d.ts.map +1 -0
  758. package/dist/files/upload-types.js +234 -0
  759. package/dist/files/upload-types.js.map +1 -0
  760. package/dist/forms/checker.d.ts +93 -0
  761. package/dist/forms/checker.d.ts.map +1 -0
  762. package/dist/forms/checker.js +2 -0
  763. package/dist/forms/checker.js.map +1 -0
  764. package/dist/forms/protection.d.ts +3 -9
  765. package/dist/forms/protection.d.ts.map +1 -1
  766. package/dist/forms/protection.js +5 -11
  767. package/dist/forms/protection.js.map +1 -1
  768. package/dist/images/icons.d.ts.map +1 -1
  769. package/dist/images/icons.js +4 -2
  770. package/dist/images/icons.js.map +1 -1
  771. package/dist/images/index.d.ts +2 -1
  772. package/dist/images/index.d.ts.map +1 -1
  773. package/dist/images/index.js +2 -1
  774. package/dist/images/index.js.map +1 -1
  775. package/dist/images/markup.d.ts +4 -21
  776. package/dist/images/markup.d.ts.map +1 -1
  777. package/dist/images/markup.js +15 -70
  778. package/dist/images/markup.js.map +1 -1
  779. package/dist/images/paths.d.ts +1 -14
  780. package/dist/images/paths.d.ts.map +1 -1
  781. package/dist/images/paths.js +9 -23
  782. package/dist/images/paths.js.map +1 -1
  783. package/dist/images/variants.d.ts +5 -3
  784. package/dist/images/variants.d.ts.map +1 -1
  785. package/dist/images/variants.js +23 -22
  786. package/dist/images/variants.js.map +1 -1
  787. package/dist/index.d.ts +4 -291
  788. package/dist/index.d.ts.map +1 -1
  789. package/dist/index.js +3 -839
  790. package/dist/index.js.map +1 -1
  791. package/dist/indexnow.d.ts +4 -2
  792. package/dist/indexnow.d.ts.map +1 -1
  793. package/dist/indexnow.js +52 -45
  794. package/dist/indexnow.js.map +1 -1
  795. package/dist/indieauth/client.d.ts +1 -1
  796. package/dist/indieauth/client.d.ts.map +1 -1
  797. package/dist/indieauth/client.js +1 -1
  798. package/dist/indieauth/client.js.map +1 -1
  799. package/dist/indieauth/grants.d.ts +1 -1
  800. package/dist/indieauth/grants.d.ts.map +1 -1
  801. package/dist/indieauth/identity.d.ts +2 -2
  802. package/dist/indieauth/identity.d.ts.map +1 -1
  803. package/dist/indieauth/identity.js +5 -7
  804. package/dist/indieauth/identity.js.map +1 -1
  805. package/dist/indieauth/redeem.d.ts +1 -1
  806. package/dist/indieauth/redeem.d.ts.map +1 -1
  807. package/dist/indieauth/redeem.js.map +1 -1
  808. package/dist/indieauth/request.d.ts +5 -1
  809. package/dist/indieauth/request.d.ts.map +1 -1
  810. package/dist/indieauth/request.js +6 -2
  811. package/dist/indieauth/request.js.map +1 -1
  812. package/dist/indieauth/tokens.d.ts +1 -3
  813. package/dist/indieauth/tokens.d.ts.map +1 -1
  814. package/dist/indieauth/tokens.js +4 -6
  815. package/dist/indieauth/tokens.js.map +1 -1
  816. package/dist/jobs/file-records.d.ts +13 -0
  817. package/dist/jobs/file-records.d.ts.map +1 -0
  818. package/dist/jobs/file-records.js +104 -0
  819. package/dist/jobs/file-records.js.map +1 -0
  820. package/dist/jobs/in-process.d.ts +10 -0
  821. package/dist/jobs/in-process.d.ts.map +1 -0
  822. package/dist/jobs/in-process.js +45 -0
  823. package/dist/jobs/in-process.js.map +1 -0
  824. package/dist/jobs/lock-file.d.ts +13 -0
  825. package/dist/jobs/lock-file.d.ts.map +1 -0
  826. package/dist/jobs/lock-file.js +107 -0
  827. package/dist/jobs/lock-file.js.map +1 -0
  828. package/dist/jobs/processes.d.ts +11 -0
  829. package/dist/jobs/processes.d.ts.map +1 -0
  830. package/dist/jobs/processes.js +50 -0
  831. package/dist/jobs/processes.js.map +1 -0
  832. package/dist/jobs/queue.d.ts +18 -0
  833. package/dist/jobs/queue.d.ts.map +1 -0
  834. package/dist/jobs/queue.js +220 -0
  835. package/dist/jobs/queue.js.map +1 -0
  836. package/dist/jobs/types.d.ts +159 -0
  837. package/dist/jobs/types.d.ts.map +1 -0
  838. package/dist/jobs/types.js +22 -0
  839. package/dist/jobs/types.js.map +1 -0
  840. package/dist/mail/index.d.ts +1 -7
  841. package/dist/mail/index.d.ts.map +1 -1
  842. package/dist/mail/index.js +0 -3
  843. package/dist/mail/index.js.map +1 -1
  844. package/dist/mail/provider.d.ts +7 -0
  845. package/dist/mail/provider.d.ts.map +1 -1
  846. package/dist/maintenance.d.ts +6 -43
  847. package/dist/maintenance.d.ts.map +1 -1
  848. package/dist/maintenance.js +4 -67
  849. package/dist/maintenance.js.map +1 -1
  850. package/dist/media/library.d.ts +99 -0
  851. package/dist/media/library.d.ts.map +1 -0
  852. package/dist/media/library.js +160 -0
  853. package/dist/media/library.js.map +1 -0
  854. package/dist/media/uploads.d.ts +106 -0
  855. package/dist/media/uploads.d.ts.map +1 -0
  856. package/dist/media/uploads.js +192 -0
  857. package/dist/media/uploads.js.map +1 -0
  858. package/dist/micropub/content.js +1 -1
  859. package/dist/micropub/content.js.map +1 -1
  860. package/dist/micropub/create.d.ts +7 -15
  861. package/dist/micropub/create.d.ts.map +1 -1
  862. package/dist/micropub/create.js +48 -184
  863. package/dist/micropub/create.js.map +1 -1
  864. package/dist/micropub/endpoint.d.ts +2 -2
  865. package/dist/micropub/endpoint.d.ts.map +1 -1
  866. package/dist/micropub/endpoint.js +36 -47
  867. package/dist/micropub/endpoint.js.map +1 -1
  868. package/dist/micropub/media.d.ts +1 -3
  869. package/dist/micropub/media.d.ts.map +1 -1
  870. package/dist/micropub/media.js +10 -12
  871. package/dist/micropub/media.js.map +1 -1
  872. package/dist/micropub/update.d.ts +6 -14
  873. package/dist/micropub/update.d.ts.map +1 -1
  874. package/dist/micropub/update.js +37 -90
  875. package/dist/micropub/update.js.map +1 -1
  876. package/dist/notifications/comments.d.ts +8 -6
  877. package/dist/notifications/comments.d.ts.map +1 -1
  878. package/dist/notifications/comments.js +80 -76
  879. package/dist/notifications/comments.js.map +1 -1
  880. package/dist/notifications/digest.d.ts +6 -8
  881. package/dist/notifications/digest.d.ts.map +1 -1
  882. package/dist/notifications/digest.js +15 -26
  883. package/dist/notifications/digest.js.map +1 -1
  884. package/dist/notifications/index.d.ts +9 -6
  885. package/dist/notifications/index.d.ts.map +1 -1
  886. package/dist/notifications/index.js +6 -5
  887. package/dist/notifications/index.js.map +1 -1
  888. package/dist/notifications/links.d.ts.map +1 -1
  889. package/dist/notifications/links.js +2 -2
  890. package/dist/notifications/links.js.map +1 -1
  891. package/dist/{mail/service.d.ts → notifications/mail-service.d.ts} +16 -20
  892. package/dist/notifications/mail-service.d.ts.map +1 -0
  893. package/dist/{mail/service.js → notifications/mail-service.js} +100 -121
  894. package/dist/notifications/mail-service.js.map +1 -0
  895. package/dist/{mail/templates.d.ts → notifications/mail-templates.d.ts} +4 -2
  896. package/dist/notifications/mail-templates.d.ts.map +1 -0
  897. package/dist/{mail/templates.js → notifications/mail-templates.js} +5 -3
  898. package/dist/notifications/mail-templates.js.map +1 -0
  899. package/dist/notifications/optouts.d.ts +0 -2
  900. package/dist/notifications/optouts.d.ts.map +1 -1
  901. package/dist/notifications/optouts.js +2 -4
  902. package/dist/notifications/optouts.js.map +1 -1
  903. package/dist/notifications/tokens.d.ts +2 -4
  904. package/dist/notifications/tokens.d.ts.map +1 -1
  905. package/dist/notifications/tokens.js +4 -30
  906. package/dist/notifications/tokens.js.map +1 -1
  907. package/dist/notify.d.ts +4 -2
  908. package/dist/notify.d.ts.map +1 -1
  909. package/dist/notify.js +35 -35
  910. package/dist/notify.js.map +1 -1
  911. package/dist/plugin.d.ts +59 -19
  912. package/dist/plugin.d.ts.map +1 -1
  913. package/dist/plugin.js +22 -4
  914. package/dist/plugin.js.map +1 -1
  915. package/dist/plugins/changes.d.ts +0 -1
  916. package/dist/plugins/changes.d.ts.map +1 -1
  917. package/dist/plugins/changes.js +2 -3
  918. package/dist/plugins/changes.js.map +1 -1
  919. package/dist/plugins/data.d.ts +19 -0
  920. package/dist/plugins/data.d.ts.map +1 -0
  921. package/dist/plugins/data.js +117 -0
  922. package/dist/plugins/data.js.map +1 -0
  923. package/dist/plugins/enabled.d.ts +1 -13
  924. package/dist/plugins/enabled.d.ts.map +1 -1
  925. package/dist/plugins/enabled.js +12 -26
  926. package/dist/plugins/enabled.js.map +1 -1
  927. package/dist/plugins/fetch.d.ts +1 -1
  928. package/dist/plugins/fetch.d.ts.map +1 -1
  929. package/dist/plugins/fetch.js +1 -1
  930. package/dist/plugins/fetch.js.map +1 -1
  931. package/dist/plugins/folder.d.ts.map +1 -1
  932. package/dist/plugins/folder.js +1 -3
  933. package/dist/plugins/folder.js.map +1 -1
  934. package/dist/plugins/install.d.ts +1 -1
  935. package/dist/plugins/install.d.ts.map +1 -1
  936. package/dist/plugins/install.js +14 -45
  937. package/dist/plugins/install.js.map +1 -1
  938. package/dist/plugins/manage.d.ts +1 -1
  939. package/dist/plugins/manage.d.ts.map +1 -1
  940. package/dist/plugins/migrate-settings.d.ts +7 -0
  941. package/dist/plugins/migrate-settings.d.ts.map +1 -0
  942. package/dist/plugins/migrate-settings.js +41 -0
  943. package/dist/plugins/migrate-settings.js.map +1 -0
  944. package/dist/plugins/registry.d.ts +10 -14
  945. package/dist/plugins/registry.d.ts.map +1 -1
  946. package/dist/plugins/registry.js +63 -45
  947. package/dist/plugins/registry.js.map +1 -1
  948. package/dist/plugins/settings.d.ts +5 -57
  949. package/dist/plugins/settings.d.ts.map +1 -1
  950. package/dist/plugins/settings.js +47 -181
  951. package/dist/plugins/settings.js.map +1 -1
  952. package/dist/plugins/site.d.ts +3 -2
  953. package/dist/plugins/site.d.ts.map +1 -1
  954. package/dist/plugins/site.js +8 -8
  955. package/dist/plugins/site.js.map +1 -1
  956. package/dist/plugins/upgrade.d.ts.map +1 -1
  957. package/dist/plugins/upgrade.js +4 -3
  958. package/dist/plugins/upgrade.js.map +1 -1
  959. package/dist/privacy/erase.d.ts +1 -1
  960. package/dist/privacy/erase.d.ts.map +1 -1
  961. package/dist/privacy/retention.d.ts +6 -2
  962. package/dist/privacy/retention.d.ts.map +1 -1
  963. package/dist/privacy/retention.js +20 -15
  964. package/dist/privacy/retention.js.map +1 -1
  965. package/dist/settings/akismet.d.ts +9 -0
  966. package/dist/settings/akismet.d.ts.map +1 -0
  967. package/dist/settings/akismet.js +46 -0
  968. package/dist/settings/akismet.js.map +1 -0
  969. package/dist/settings/declare.d.ts +15 -0
  970. package/dist/settings/declare.d.ts.map +1 -0
  971. package/dist/settings/declare.js +20 -0
  972. package/dist/settings/declare.js.map +1 -0
  973. package/dist/settings/dev-mode.d.ts +29 -0
  974. package/dist/settings/dev-mode.d.ts.map +1 -0
  975. package/dist/settings/dev-mode.js +77 -0
  976. package/dist/settings/dev-mode.js.map +1 -0
  977. package/dist/settings/kinds.d.ts +13 -0
  978. package/dist/settings/kinds.d.ts.map +1 -0
  979. package/dist/settings/kinds.js +108 -0
  980. package/dist/settings/kinds.js.map +1 -0
  981. package/dist/settings/mail.d.ts +10 -0
  982. package/dist/settings/mail.d.ts.map +1 -0
  983. package/dist/settings/mail.js +92 -0
  984. package/dist/settings/mail.js.map +1 -0
  985. package/dist/settings/maintenance.d.ts +6 -0
  986. package/dist/settings/maintenance.d.ts.map +1 -0
  987. package/dist/settings/maintenance.js +33 -0
  988. package/dist/settings/maintenance.js.map +1 -0
  989. package/dist/settings/names.d.ts +7 -0
  990. package/dist/settings/names.d.ts.map +1 -0
  991. package/dist/settings/names.js +31 -0
  992. package/dist/settings/names.js.map +1 -0
  993. package/dist/settings/presence.d.ts +2 -0
  994. package/dist/settings/presence.d.ts.map +1 -0
  995. package/dist/settings/presence.js +7 -0
  996. package/dist/settings/presence.js.map +1 -0
  997. package/dist/settings/registry.d.ts +14 -0
  998. package/dist/settings/registry.d.ts.map +1 -0
  999. package/dist/settings/registry.js +369 -0
  1000. package/dist/settings/registry.js.map +1 -0
  1001. package/dist/settings/types.d.ts +176 -0
  1002. package/dist/settings/types.d.ts.map +1 -0
  1003. package/dist/settings/types.js +2 -0
  1004. package/dist/settings/types.js.map +1 -0
  1005. package/dist/site/admin-paths.d.ts +23 -0
  1006. package/dist/site/admin-paths.d.ts.map +1 -0
  1007. package/dist/site/admin-paths.js +25 -0
  1008. package/dist/site/admin-paths.js.map +1 -0
  1009. package/dist/site/admin-theme.d.ts.map +1 -0
  1010. package/dist/site/admin-theme.js.map +1 -0
  1011. package/dist/{web → site}/authors.d.ts +1 -72
  1012. package/dist/site/authors.d.ts.map +1 -0
  1013. package/dist/site/authors.js +107 -0
  1014. package/dist/site/authors.js.map +1 -0
  1015. package/dist/site/feed-settings.d.ts +28 -0
  1016. package/dist/site/feed-settings.d.ts.map +1 -0
  1017. package/dist/site/feed-settings.js +22 -0
  1018. package/dist/site/feed-settings.js.map +1 -0
  1019. package/dist/{web/indexnow.d.ts → site/indexnow-key.d.ts} +1 -1
  1020. package/dist/site/indexnow-key.d.ts.map +1 -0
  1021. package/dist/{web/indexnow.js → site/indexnow-key.js} +1 -1
  1022. package/dist/site/indexnow-key.js.map +1 -0
  1023. package/dist/site/namespace.d.ts +88 -0
  1024. package/dist/site/namespace.d.ts.map +1 -0
  1025. package/dist/site/namespace.js +471 -0
  1026. package/dist/site/namespace.js.map +1 -0
  1027. package/dist/{web → site}/navigation.d.ts +7 -1
  1028. package/dist/site/navigation.d.ts.map +1 -0
  1029. package/dist/{web → site}/navigation.js +18 -0
  1030. package/dist/site/navigation.js.map +1 -0
  1031. package/dist/{notifications/preferences.d.ts → site/notification-preferences.d.ts} +2 -2
  1032. package/dist/site/notification-preferences.d.ts.map +1 -0
  1033. package/dist/{notifications/preferences.js → site/notification-preferences.js} +1 -1
  1034. package/dist/site/notification-preferences.js.map +1 -0
  1035. package/dist/site/passwords.d.ts.map +1 -0
  1036. package/dist/site/passwords.js.map +1 -0
  1037. package/dist/{privacy/policy.d.ts → site/retention-policy.d.ts} +1 -1
  1038. package/dist/site/retention-policy.d.ts.map +1 -0
  1039. package/dist/{privacy/policy.js → site/retention-policy.js} +1 -1
  1040. package/dist/site/retention-policy.js.map +1 -0
  1041. package/dist/site/robots.d.ts +62 -0
  1042. package/dist/site/robots.d.ts.map +1 -0
  1043. package/dist/site/robots.js +130 -0
  1044. package/dist/site/robots.js.map +1 -0
  1045. package/dist/site/setting-rows.d.ts +45 -0
  1046. package/dist/site/setting-rows.d.ts.map +1 -0
  1047. package/dist/site/setting-rows.js +361 -0
  1048. package/dist/site/setting-rows.js.map +1 -0
  1049. package/dist/site/setting-values.d.ts +63 -0
  1050. package/dist/site/setting-values.d.ts.map +1 -0
  1051. package/dist/site/setting-values.js +170 -0
  1052. package/dist/site/setting-values.js.map +1 -0
  1053. package/dist/site/settings-form.d.ts +30 -0
  1054. package/dist/site/settings-form.d.ts.map +1 -0
  1055. package/dist/site/settings-form.js +54 -0
  1056. package/dist/site/settings-form.js.map +1 -0
  1057. package/dist/site/settings.d.ts +29 -0
  1058. package/dist/site/settings.d.ts.map +1 -0
  1059. package/dist/site/settings.js +44 -0
  1060. package/dist/site/settings.js.map +1 -0
  1061. package/dist/site/site-json.d.ts +38 -0
  1062. package/dist/site/site-json.d.ts.map +1 -0
  1063. package/dist/site/site-json.js +69 -0
  1064. package/dist/site/site-json.js.map +1 -0
  1065. package/dist/{admin/accounts.d.ts → site/users.d.ts} +25 -50
  1066. package/dist/site/users.d.ts.map +1 -0
  1067. package/dist/{admin/accounts.js → site/users.js} +51 -166
  1068. package/dist/site/users.js.map +1 -0
  1069. package/dist/store/admin-store.d.ts +72 -0
  1070. package/dist/store/admin-store.d.ts.map +1 -0
  1071. package/dist/store/admin-store.js +62 -0
  1072. package/dist/store/admin-store.js.map +1 -0
  1073. package/dist/store/comments.d.ts +253 -0
  1074. package/dist/store/comments.d.ts.map +1 -0
  1075. package/dist/store/comments.js +234 -0
  1076. package/dist/store/comments.js.map +1 -0
  1077. package/dist/store/conversation.d.ts +28 -0
  1078. package/dist/store/conversation.d.ts.map +1 -0
  1079. package/dist/store/conversation.js +16 -0
  1080. package/dist/store/conversation.js.map +1 -0
  1081. package/dist/store/deliveries.d.ts +92 -0
  1082. package/dist/store/deliveries.d.ts.map +1 -0
  1083. package/dist/store/deliveries.js +88 -0
  1084. package/dist/store/deliveries.js.map +1 -0
  1085. package/dist/store/followers.d.ts +91 -0
  1086. package/dist/store/followers.d.ts.map +1 -0
  1087. package/dist/store/followers.js +79 -0
  1088. package/dist/store/followers.js.map +1 -0
  1089. package/dist/{federation/replies.d.ts → store/inbox-replies.d.ts} +2 -2
  1090. package/dist/store/inbox-replies.d.ts.map +1 -0
  1091. package/dist/{federation/replies.js → store/inbox-replies.js} +2 -4
  1092. package/dist/store/inbox-replies.js.map +1 -0
  1093. package/dist/store/inbox.d.ts +132 -0
  1094. package/dist/store/inbox.d.ts.map +1 -0
  1095. package/dist/store/inbox.js +157 -0
  1096. package/dist/store/inbox.js.map +1 -0
  1097. package/dist/store/profiles.d.ts +49 -0
  1098. package/dist/store/profiles.d.ts.map +1 -0
  1099. package/dist/store/profiles.js +71 -0
  1100. package/dist/store/profiles.js.map +1 -0
  1101. package/dist/store/queue-database.d.ts +11 -0
  1102. package/dist/store/queue-database.d.ts.map +1 -0
  1103. package/dist/store/queue-database.js +39 -0
  1104. package/dist/store/queue-database.js.map +1 -0
  1105. package/dist/store/relays.d.ts +66 -0
  1106. package/dist/store/relays.d.ts.map +1 -0
  1107. package/dist/store/relays.js +69 -0
  1108. package/dist/store/relays.js.map +1 -0
  1109. package/dist/store/rows.d.ts +33 -0
  1110. package/dist/store/rows.d.ts.map +1 -0
  1111. package/dist/store/rows.js +44 -0
  1112. package/dist/store/rows.js.map +1 -0
  1113. package/dist/store/schema.d.ts +14 -0
  1114. package/dist/store/schema.d.ts.map +1 -0
  1115. package/dist/store/schema.js +588 -0
  1116. package/dist/store/schema.js.map +1 -0
  1117. package/dist/store/sessions.d.ts +90 -0
  1118. package/dist/store/sessions.d.ts.map +1 -0
  1119. package/dist/store/sessions.js +107 -0
  1120. package/dist/store/sessions.js.map +1 -0
  1121. package/dist/store/state.d.ts +18 -0
  1122. package/dist/store/state.d.ts.map +1 -0
  1123. package/dist/store/state.js +19 -0
  1124. package/dist/store/state.js.map +1 -0
  1125. package/dist/store/tokens.d.ts +75 -0
  1126. package/dist/store/tokens.d.ts.map +1 -0
  1127. package/dist/store/tokens.js +82 -0
  1128. package/dist/store/tokens.js.map +1 -0
  1129. package/dist/store/webmentions.d.ts +66 -0
  1130. package/dist/store/webmentions.d.ts.map +1 -0
  1131. package/dist/store/webmentions.js +84 -0
  1132. package/dist/store/webmentions.js.map +1 -0
  1133. package/dist/supervisor/control.d.ts +1 -0
  1134. package/dist/supervisor/control.d.ts.map +1 -1
  1135. package/dist/supervisor/control.js +10 -0
  1136. package/dist/supervisor/control.js.map +1 -1
  1137. package/dist/supervisor/primary.d.ts +1 -1
  1138. package/dist/supervisor/primary.d.ts.map +1 -1
  1139. package/dist/supervisor/primary.js +46 -14
  1140. package/dist/supervisor/primary.js.map +1 -1
  1141. package/dist/supervisor/worker.d.ts +6 -2
  1142. package/dist/supervisor/worker.d.ts.map +1 -1
  1143. package/dist/supervisor/worker.js +4 -4
  1144. package/dist/supervisor/worker.js.map +1 -1
  1145. package/dist/testing.d.ts +8 -0
  1146. package/dist/testing.d.ts.map +1 -0
  1147. package/dist/testing.js +6 -0
  1148. package/dist/testing.js.map +1 -0
  1149. package/dist/{web → theme}/assets.d.ts +1 -32
  1150. package/dist/theme/assets.d.ts.map +1 -0
  1151. package/dist/{web → theme}/assets.js +2 -100
  1152. package/dist/theme/assets.js.map +1 -0
  1153. package/dist/theme/site-data.d.ts +187 -0
  1154. package/dist/theme/site-data.d.ts.map +1 -0
  1155. package/dist/theme/site-data.js +160 -0
  1156. package/dist/theme/site-data.js.map +1 -0
  1157. package/dist/{web → theme}/templates.d.ts +2 -0
  1158. package/dist/theme/templates.d.ts.map +1 -0
  1159. package/dist/{web → theme}/templates.js +9 -32
  1160. package/dist/theme/templates.js.map +1 -0
  1161. package/dist/{web → theme}/themes.d.ts +1 -0
  1162. package/dist/theme/themes.d.ts.map +1 -0
  1163. package/dist/{web → theme}/themes.js +6 -3
  1164. package/dist/theme/themes.js.map +1 -0
  1165. package/dist/util/client-id.d.ts.map +1 -0
  1166. package/dist/util/client-id.js.map +1 -0
  1167. package/dist/util/clock.d.ts +9 -0
  1168. package/dist/util/clock.d.ts.map +1 -0
  1169. package/dist/util/clock.js +2 -0
  1170. package/dist/util/clock.js.map +1 -0
  1171. package/dist/util/errors.d.ts +3 -0
  1172. package/dist/util/errors.d.ts.map +1 -0
  1173. package/dist/util/errors.js +5 -0
  1174. package/dist/util/errors.js.map +1 -0
  1175. package/dist/util/files.d.ts +5 -0
  1176. package/dist/util/files.d.ts.map +1 -0
  1177. package/dist/util/files.js +38 -0
  1178. package/dist/util/files.js.map +1 -0
  1179. package/dist/util/forms.d.ts +5 -0
  1180. package/dist/util/forms.d.ts.map +1 -0
  1181. package/dist/util/forms.js +17 -0
  1182. package/dist/util/forms.js.map +1 -0
  1183. package/dist/util/guards.d.ts +4 -0
  1184. package/dist/util/guards.d.ts.map +1 -0
  1185. package/dist/util/guards.js +12 -0
  1186. package/dist/util/guards.js.map +1 -0
  1187. package/dist/{webmention/html.d.ts → util/html-tree.d.ts} +2 -2
  1188. package/dist/util/html-tree.d.ts.map +1 -0
  1189. package/dist/{webmention/html.js → util/html-tree.js} +3 -64
  1190. package/dist/util/html-tree.js.map +1 -0
  1191. package/dist/util/html.d.ts +4 -0
  1192. package/dist/util/html.d.ts.map +1 -0
  1193. package/dist/util/html.js +34 -0
  1194. package/dist/util/html.js.map +1 -0
  1195. package/dist/util/public-address.d.ts.map +1 -0
  1196. package/dist/util/public-address.js.map +1 -0
  1197. package/dist/util/queue.d.ts +7 -0
  1198. package/dist/util/queue.d.ts.map +1 -0
  1199. package/dist/util/queue.js +23 -0
  1200. package/dist/util/queue.js.map +1 -0
  1201. package/dist/util/retry.d.ts +11 -0
  1202. package/dist/util/retry.d.ts.map +1 -0
  1203. package/dist/util/retry.js +14 -0
  1204. package/dist/util/retry.js.map +1 -0
  1205. package/dist/util/url.d.ts +11 -0
  1206. package/dist/util/url.d.ts.map +1 -0
  1207. package/dist/util/url.js +20 -0
  1208. package/dist/util/url.js.map +1 -0
  1209. package/dist/web/absolute-urls.js +1 -1
  1210. package/dist/web/absolute-urls.js.map +1 -1
  1211. package/dist/web/archive.js +2 -2
  1212. package/dist/web/archive.js.map +1 -1
  1213. package/dist/web/asset-routes.d.ts +52 -0
  1214. package/dist/web/asset-routes.d.ts.map +1 -0
  1215. package/dist/web/asset-routes.js +115 -0
  1216. package/dist/web/asset-routes.js.map +1 -0
  1217. package/dist/{avatars/routes.d.ts → web/avatar-routes.d.ts} +2 -2
  1218. package/dist/web/avatar-routes.d.ts.map +1 -0
  1219. package/dist/{avatars/routes.js → web/avatar-routes.js} +3 -3
  1220. package/dist/web/avatar-routes.js.map +1 -0
  1221. package/dist/web/comment-routes.d.ts +18 -0
  1222. package/dist/web/comment-routes.d.ts.map +1 -0
  1223. package/dist/web/comment-routes.js +177 -0
  1224. package/dist/web/comment-routes.js.map +1 -0
  1225. package/dist/web/compression.d.ts.map +1 -1
  1226. package/dist/web/compression.js +1 -2
  1227. package/dist/web/compression.js.map +1 -1
  1228. package/dist/{contact/routes.d.ts → web/contact-routes.d.ts} +2 -2
  1229. package/dist/web/contact-routes.d.ts.map +1 -0
  1230. package/dist/{contact/routes.js → web/contact-routes.js} +15 -18
  1231. package/dist/web/contact-routes.js.map +1 -0
  1232. package/dist/web/context.d.ts +6 -187
  1233. package/dist/web/context.d.ts.map +1 -1
  1234. package/dist/web/context.js +13 -174
  1235. package/dist/web/context.js.map +1 -1
  1236. package/dist/web/conversation.d.ts +6 -357
  1237. package/dist/web/conversation.d.ts.map +1 -1
  1238. package/dist/web/conversation.js +177 -151
  1239. package/dist/web/conversation.js.map +1 -1
  1240. package/dist/web/document-page.d.ts +13 -0
  1241. package/dist/web/document-page.d.ts.map +1 -0
  1242. package/dist/web/document-page.js +137 -0
  1243. package/dist/web/document-page.js.map +1 -0
  1244. package/dist/web/document-site.d.ts +14 -0
  1245. package/dist/web/document-site.d.ts.map +1 -0
  1246. package/dist/web/document-site.js +29 -0
  1247. package/dist/web/document-site.js.map +1 -0
  1248. package/dist/web/embed.d.ts +13 -0
  1249. package/dist/web/embed.d.ts.map +1 -0
  1250. package/dist/web/embed.js +66 -0
  1251. package/dist/web/embed.js.map +1 -0
  1252. package/dist/{env.d.ts → web/env.d.ts} +36 -26
  1253. package/dist/web/env.d.ts.map +1 -0
  1254. package/dist/web/env.js.map +1 -0
  1255. package/dist/web/federation-routes.d.ts +33 -0
  1256. package/dist/web/federation-routes.d.ts.map +1 -0
  1257. package/dist/web/federation-routes.js +282 -0
  1258. package/dist/web/federation-routes.js.map +1 -0
  1259. package/dist/web/feed-atom.d.ts.map +1 -1
  1260. package/dist/web/feed-atom.js +4 -3
  1261. package/dist/web/feed-atom.js.map +1 -1
  1262. package/dist/web/feed-item.d.ts +4 -39
  1263. package/dist/web/feed-item.d.ts.map +1 -1
  1264. package/dist/web/feed-item.js +9 -73
  1265. package/dist/web/feed-item.js.map +1 -1
  1266. package/dist/web/feed-json.js +2 -2
  1267. package/dist/web/feed-json.js.map +1 -1
  1268. package/dist/web/feed-routes.d.ts +35 -0
  1269. package/dist/web/feed-routes.d.ts.map +1 -0
  1270. package/dist/web/feed-routes.js +126 -0
  1271. package/dist/web/feed-routes.js.map +1 -0
  1272. package/dist/web/feed-rss.d.ts.map +1 -1
  1273. package/dist/web/feed-rss.js +9 -6
  1274. package/dist/web/feed-rss.js.map +1 -1
  1275. package/dist/web/feed-source.d.ts +11 -41
  1276. package/dist/web/feed-source.d.ts.map +1 -1
  1277. package/dist/web/feed-source.js +11 -48
  1278. package/dist/web/feed-source.js.map +1 -1
  1279. package/dist/web/feeds.d.ts +4 -2
  1280. package/dist/web/feeds.d.ts.map +1 -1
  1281. package/dist/web/feeds.js +8 -5
  1282. package/dist/web/feeds.js.map +1 -1
  1283. package/dist/web/health.d.ts +1 -1
  1284. package/dist/web/health.d.ts.map +1 -1
  1285. package/dist/web/health.js +1 -1
  1286. package/dist/web/health.js.map +1 -1
  1287. package/dist/web/index.d.ts +53 -29
  1288. package/dist/web/index.d.ts.map +1 -1
  1289. package/dist/web/index.js +37 -18
  1290. package/dist/web/index.js.map +1 -1
  1291. package/dist/{indieauth/activity-log.d.ts → web/indieauth-activity-log.d.ts} +3 -5
  1292. package/dist/web/indieauth-activity-log.d.ts.map +1 -0
  1293. package/dist/{indieauth/activity-log.js → web/indieauth-activity-log.js} +7 -10
  1294. package/dist/web/indieauth-activity-log.js.map +1 -0
  1295. package/dist/{indieauth/bearer.d.ts → web/indieauth-bearer.d.ts} +5 -5
  1296. package/dist/web/indieauth-bearer.d.ts.map +1 -0
  1297. package/dist/{indieauth/bearer.js → web/indieauth-bearer.js} +5 -5
  1298. package/dist/web/indieauth-bearer.js.map +1 -0
  1299. package/dist/{indieauth/discovery.d.ts → web/indieauth-discovery.d.ts} +2 -11
  1300. package/dist/web/indieauth-discovery.d.ts.map +1 -0
  1301. package/dist/{indieauth/discovery.js → web/indieauth-discovery.js} +7 -17
  1302. package/dist/web/indieauth-discovery.js.map +1 -0
  1303. package/dist/{indieauth/token.d.ts → web/indieauth-token.d.ts} +2 -2
  1304. package/dist/web/indieauth-token.d.ts.map +1 -0
  1305. package/dist/{indieauth/token.js → web/indieauth-token.js} +9 -9
  1306. package/dist/web/indieauth-token.js.map +1 -0
  1307. package/dist/web/listing-pages.d.ts +19 -0
  1308. package/dist/web/listing-pages.d.ts.map +1 -0
  1309. package/dist/web/listing-pages.js +147 -0
  1310. package/dist/web/listing-pages.js.map +1 -0
  1311. package/dist/web/listing-subject.d.ts +58 -0
  1312. package/dist/web/listing-subject.d.ts.map +1 -0
  1313. package/dist/web/listing-subject.js +89 -0
  1314. package/dist/web/listing-subject.js.map +1 -0
  1315. package/dist/web/llms.d.ts +16 -15
  1316. package/dist/web/llms.d.ts.map +1 -1
  1317. package/dist/web/llms.js +23 -35
  1318. package/dist/web/llms.js.map +1 -1
  1319. package/dist/web/maintenance.d.ts +1 -1
  1320. package/dist/web/maintenance.d.ts.map +1 -1
  1321. package/dist/web/maintenance.js +10 -16
  1322. package/dist/web/maintenance.js.map +1 -1
  1323. package/dist/web/manifest.d.ts +1 -1
  1324. package/dist/web/manifest.d.ts.map +1 -1
  1325. package/dist/web/manifest.js +2 -1
  1326. package/dist/web/manifest.js.map +1 -1
  1327. package/dist/web/markdown-page.d.ts +76 -0
  1328. package/dist/web/markdown-page.d.ts.map +1 -0
  1329. package/dist/web/markdown-page.js +79 -0
  1330. package/dist/web/markdown-page.js.map +1 -0
  1331. package/dist/web/markdown-representation.d.ts +15 -0
  1332. package/dist/web/markdown-representation.d.ts.map +1 -0
  1333. package/dist/web/markdown-representation.js +130 -0
  1334. package/dist/web/markdown-representation.js.map +1 -0
  1335. package/dist/web/negotiate.d.ts +5 -12
  1336. package/dist/web/negotiate.d.ts.map +1 -1
  1337. package/dist/web/negotiate.js +11 -18
  1338. package/dist/web/negotiate.js.map +1 -1
  1339. package/dist/{notifications/routes.d.ts → web/notification-routes.d.ts} +2 -2
  1340. package/dist/web/notification-routes.d.ts.map +1 -0
  1341. package/dist/{notifications/routes.js → web/notification-routes.js} +24 -29
  1342. package/dist/web/notification-routes.js.map +1 -0
  1343. package/dist/web/oembed.d.ts +2 -2
  1344. package/dist/web/oembed.d.ts.map +1 -1
  1345. package/dist/web/oembed.js +5 -4
  1346. package/dist/web/oembed.js.map +1 -1
  1347. package/dist/web/opensearch.d.ts.map +1 -1
  1348. package/dist/web/opensearch.js +2 -1
  1349. package/dist/web/opensearch.js.map +1 -1
  1350. package/dist/web/page-sources.d.ts +14 -0
  1351. package/dist/web/page-sources.d.ts.map +1 -0
  1352. package/dist/web/page-sources.js +43 -0
  1353. package/dist/web/page-sources.js.map +1 -0
  1354. package/dist/web/pagination.d.ts +1 -0
  1355. package/dist/web/pagination.d.ts.map +1 -1
  1356. package/dist/web/pagination.js +4 -1
  1357. package/dist/web/pagination.js.map +1 -1
  1358. package/dist/web/paths.d.ts +52 -0
  1359. package/dist/web/paths.d.ts.map +1 -0
  1360. package/dist/web/paths.js +208 -0
  1361. package/dist/web/paths.js.map +1 -0
  1362. package/dist/web/pingback-routes.d.ts +5 -0
  1363. package/dist/web/pingback-routes.d.ts.map +1 -0
  1364. package/dist/web/pingback-routes.js +100 -0
  1365. package/dist/web/pingback-routes.js.map +1 -0
  1366. package/dist/{plugins/federation.d.ts → web/plugin-federation.d.ts} +3 -3
  1367. package/dist/web/plugin-federation.d.ts.map +1 -0
  1368. package/dist/{plugins/federation.js → web/plugin-federation.js} +55 -45
  1369. package/dist/web/plugin-federation.js.map +1 -0
  1370. package/dist/{plugins/mount.d.ts → web/plugin-routes.d.ts} +3 -3
  1371. package/dist/web/plugin-routes.d.ts.map +1 -0
  1372. package/dist/{plugins/mount.js → web/plugin-routes.js} +2 -2
  1373. package/dist/web/plugin-routes.js.map +1 -0
  1374. package/dist/web/redirects.d.ts +1 -84
  1375. package/dist/web/redirects.d.ts.map +1 -1
  1376. package/dist/web/redirects.js +0 -232
  1377. package/dist/web/redirects.js.map +1 -1
  1378. package/dist/web/render.d.ts +55 -12
  1379. package/dist/web/render.d.ts.map +1 -1
  1380. package/dist/web/render.js +123 -65
  1381. package/dist/web/render.js.map +1 -1
  1382. package/dist/web/request.d.ts +44 -0
  1383. package/dist/web/request.d.ts.map +1 -0
  1384. package/dist/web/request.js +82 -0
  1385. package/dist/web/request.js.map +1 -0
  1386. package/dist/web/robots.d.ts +1 -46
  1387. package/dist/web/robots.d.ts.map +1 -1
  1388. package/dist/web/robots.js +5 -131
  1389. package/dist/web/robots.js.map +1 -1
  1390. package/dist/web/routes.d.ts +5 -39
  1391. package/dist/web/routes.d.ts.map +1 -1
  1392. package/dist/web/routes.js +102 -1374
  1393. package/dist/web/routes.js.map +1 -1
  1394. package/dist/web/search.d.ts.map +1 -1
  1395. package/dist/web/search.js +2 -9
  1396. package/dist/web/search.js.map +1 -1
  1397. package/dist/{admin → web}/session.d.ts +1 -5
  1398. package/dist/web/session.d.ts.map +1 -0
  1399. package/dist/{admin → web}/session.js +0 -4
  1400. package/dist/web/session.js.map +1 -0
  1401. package/dist/web/share-image.d.ts.map +1 -1
  1402. package/dist/web/share-image.js +3 -2
  1403. package/dist/web/share-image.js.map +1 -1
  1404. package/dist/web/signed-in.d.ts +27 -0
  1405. package/dist/web/signed-in.d.ts.map +1 -0
  1406. package/dist/web/signed-in.js +45 -0
  1407. package/dist/web/signed-in.js.map +1 -0
  1408. package/dist/web/site-index.d.ts +13 -0
  1409. package/dist/web/site-index.d.ts.map +1 -0
  1410. package/dist/web/site-index.js +142 -0
  1411. package/dist/web/site-index.js.map +1 -0
  1412. package/dist/web/site-view.d.ts +43 -0
  1413. package/dist/web/site-view.d.ts.map +1 -0
  1414. package/dist/web/site-view.js +65 -0
  1415. package/dist/web/site-view.js.map +1 -0
  1416. package/dist/web/sitemap.d.ts.map +1 -1
  1417. package/dist/web/sitemap.js +5 -7
  1418. package/dist/web/sitemap.js.map +1 -1
  1419. package/dist/{admin → web}/throttle.d.ts +3 -4
  1420. package/dist/web/throttle.d.ts.map +1 -0
  1421. package/dist/{admin → web}/throttle.js +1 -2
  1422. package/dist/web/throttle.js.map +1 -0
  1423. package/dist/web/webmention-routes.d.ts +11 -0
  1424. package/dist/web/webmention-routes.d.ts.map +1 -0
  1425. package/dist/web/webmention-routes.js +51 -0
  1426. package/dist/web/webmention-routes.js.map +1 -0
  1427. package/dist/web/well-known.d.ts +2 -2
  1428. package/dist/web/well-known.d.ts.map +1 -1
  1429. package/dist/web/well-known.js +10 -20
  1430. package/dist/web/well-known.js.map +1 -1
  1431. package/dist/webmention/cited-picture.d.ts +1 -2
  1432. package/dist/webmention/cited-picture.d.ts.map +1 -1
  1433. package/dist/webmention/cited-picture.js +5 -7
  1434. package/dist/webmention/cited-picture.js.map +1 -1
  1435. package/dist/webmention/discovery.d.ts +2 -13
  1436. package/dist/webmention/discovery.d.ts.map +1 -1
  1437. package/dist/webmention/discovery.js +18 -73
  1438. package/dist/webmention/discovery.js.map +1 -1
  1439. package/dist/webmention/endpoint.d.ts +27 -0
  1440. package/dist/webmention/endpoint.d.ts.map +1 -0
  1441. package/dist/webmention/endpoint.js +26 -0
  1442. package/dist/webmention/endpoint.js.map +1 -0
  1443. package/dist/webmention/fetch-public.d.ts +18 -1
  1444. package/dist/webmention/fetch-public.d.ts.map +1 -1
  1445. package/dist/webmention/fetch-public.js +57 -23
  1446. package/dist/webmention/fetch-public.js.map +1 -1
  1447. package/dist/webmention/index.d.ts +11 -9
  1448. package/dist/webmention/index.d.ts.map +1 -1
  1449. package/dist/webmention/index.js +7 -6
  1450. package/dist/webmention/index.js.map +1 -1
  1451. package/dist/webmention/links.d.ts +0 -55
  1452. package/dist/webmention/links.d.ts.map +1 -1
  1453. package/dist/webmention/links.js +2 -185
  1454. package/dist/webmention/links.js.map +1 -1
  1455. package/dist/webmention/microformats.d.ts +1 -1
  1456. package/dist/webmention/microformats.d.ts.map +1 -1
  1457. package/dist/webmention/microformats.js +1 -1
  1458. package/dist/webmention/microformats.js.map +1 -1
  1459. package/dist/webmention/pingback.d.ts +13 -12
  1460. package/dist/webmention/pingback.d.ts.map +1 -1
  1461. package/dist/webmention/pingback.js +6 -113
  1462. package/dist/webmention/pingback.js.map +1 -1
  1463. package/dist/webmention/receive.d.ts +9 -4
  1464. package/dist/webmention/receive.d.ts.map +1 -1
  1465. package/dist/webmention/receive.js +35 -41
  1466. package/dist/webmention/receive.js.map +1 -1
  1467. package/dist/webmention/reply-context/fediverse.d.ts +29 -0
  1468. package/dist/webmention/reply-context/fediverse.d.ts.map +1 -0
  1469. package/dist/webmention/reply-context/fediverse.js +59 -0
  1470. package/dist/webmention/reply-context/fediverse.js.map +1 -0
  1471. package/dist/webmention/reply-context/json-ld.d.ts +5 -0
  1472. package/dist/webmention/reply-context/json-ld.d.ts.map +1 -0
  1473. package/dist/webmention/reply-context/json-ld.js +78 -0
  1474. package/dist/webmention/reply-context/json-ld.js.map +1 -0
  1475. package/dist/webmention/reply-context/oembed.d.ts +21 -0
  1476. package/dist/webmention/reply-context/oembed.d.ts.map +1 -0
  1477. package/dist/webmention/reply-context/oembed.js +137 -0
  1478. package/dist/webmention/reply-context/oembed.js.map +1 -0
  1479. package/dist/webmention/reply-context/page.d.ts +30 -0
  1480. package/dist/webmention/reply-context/page.d.ts.map +1 -0
  1481. package/dist/webmention/reply-context/page.js +134 -0
  1482. package/dist/webmention/reply-context/page.js.map +1 -0
  1483. package/dist/webmention/reply-context/source.d.ts +29 -0
  1484. package/dist/webmention/reply-context/source.d.ts.map +1 -0
  1485. package/dist/webmention/reply-context/source.js +46 -0
  1486. package/dist/webmention/reply-context/source.js.map +1 -0
  1487. package/dist/webmention/reply-context.d.ts +5 -34
  1488. package/dist/webmention/reply-context.d.ts.map +1 -1
  1489. package/dist/webmention/reply-context.js +9 -432
  1490. package/dist/webmention/reply-context.js.map +1 -1
  1491. package/dist/webmention/reply-contexts.d.ts +17 -6
  1492. package/dist/webmention/reply-contexts.d.ts.map +1 -1
  1493. package/dist/webmention/reply-contexts.js +19 -20
  1494. package/dist/webmention/reply-contexts.js.map +1 -1
  1495. package/dist/webmention/routes.d.ts +1 -1
  1496. package/dist/webmention/routes.d.ts.map +1 -1
  1497. package/dist/webmention/routes.js +5 -8
  1498. package/dist/webmention/routes.js.map +1 -1
  1499. package/dist/webmention/service.d.ts +9 -7
  1500. package/dist/webmention/service.d.ts.map +1 -1
  1501. package/dist/webmention/service.js +111 -110
  1502. package/dist/webmention/service.js.map +1 -1
  1503. package/dist/webmention/syndication.d.ts +3 -26
  1504. package/dist/webmention/syndication.d.ts.map +1 -1
  1505. package/dist/webmention/syndication.js +6 -20
  1506. package/dist/webmention/syndication.js.map +1 -1
  1507. package/package.json +17 -11
  1508. package/themes/default/README.md +36 -2339
  1509. package/themes/default/layouts/base.njk +5 -4
  1510. package/themes/default/layouts/front-page.njk +4 -3
  1511. package/themes/default/layouts/page.njk +2 -0
  1512. package/themes/default/partials/comment-form.njk +1 -1
  1513. package/themes/default/partials/contact-form.njk +1 -2
  1514. package/themes/default/partials/conversation.njk +1 -2
  1515. package/themes/default/partials/markdown-footer.md.njk +24 -0
  1516. package/themes/default/partials/markdown-header.md.njk +31 -0
  1517. package/themes/default/partials/post-list.njk +11 -11
  1518. package/themes/default/src/style.css +18 -6
  1519. package/themes/default/static/style.css +19 -0
  1520. package/dist/admin/accounts.d.ts.map +0 -1
  1521. package/dist/admin/accounts.js.map +0 -1
  1522. package/dist/admin/admin-theme.d.ts.map +0 -1
  1523. package/dist/admin/admin-theme.js.map +0 -1
  1524. package/dist/admin/enclosure-field.d.ts.map +0 -1
  1525. package/dist/admin/enclosure-field.js.map +0 -1
  1526. package/dist/admin/event-field.d.ts.map +0 -1
  1527. package/dist/admin/event-field.js.map +0 -1
  1528. package/dist/admin/location-field.d.ts +0 -27
  1529. package/dist/admin/location-field.d.ts.map +0 -1
  1530. package/dist/admin/location-field.js.map +0 -1
  1531. package/dist/admin/passwords.d.ts.map +0 -1
  1532. package/dist/admin/passwords.js.map +0 -1
  1533. package/dist/admin/photo-field.d.ts +0 -38
  1534. package/dist/admin/photo-field.d.ts.map +0 -1
  1535. package/dist/admin/photo-field.js.map +0 -1
  1536. package/dist/admin/read-field.d.ts +0 -22
  1537. package/dist/admin/read-field.d.ts.map +0 -1
  1538. package/dist/admin/read-field.js +0 -61
  1539. package/dist/admin/read-field.js.map +0 -1
  1540. package/dist/admin/session.d.ts.map +0 -1
  1541. package/dist/admin/session.js.map +0 -1
  1542. package/dist/admin/store.d.ts +0 -1025
  1543. package/dist/admin/store.d.ts.map +0 -1
  1544. package/dist/admin/store.js +0 -1628
  1545. package/dist/admin/store.js.map +0 -1
  1546. package/dist/admin/throttle.d.ts.map +0 -1
  1547. package/dist/admin/throttle.js.map +0 -1
  1548. package/dist/avatars/routes.d.ts.map +0 -1
  1549. package/dist/avatars/routes.js.map +0 -1
  1550. package/dist/contact/routes.d.ts.map +0 -1
  1551. package/dist/contact/routes.js.map +0 -1
  1552. package/dist/env.d.ts.map +0 -1
  1553. package/dist/env.js.map +0 -1
  1554. package/dist/federation/replies.d.ts.map +0 -1
  1555. package/dist/federation/replies.js.map +0 -1
  1556. package/dist/images/alt-text.d.ts.map +0 -1
  1557. package/dist/images/alt-text.js.map +0 -1
  1558. package/dist/indieauth/activity-log.d.ts.map +0 -1
  1559. package/dist/indieauth/activity-log.js.map +0 -1
  1560. package/dist/indieauth/app-activity.d.ts.map +0 -1
  1561. package/dist/indieauth/app-activity.js.map +0 -1
  1562. package/dist/indieauth/bearer.d.ts.map +0 -1
  1563. package/dist/indieauth/bearer.js.map +0 -1
  1564. package/dist/indieauth/client-id.d.ts.map +0 -1
  1565. package/dist/indieauth/client-id.js.map +0 -1
  1566. package/dist/indieauth/connected-apps.d.ts.map +0 -1
  1567. package/dist/indieauth/connected-apps.js.map +0 -1
  1568. package/dist/indieauth/consent.d.ts.map +0 -1
  1569. package/dist/indieauth/consent.js.map +0 -1
  1570. package/dist/indieauth/discovery.d.ts.map +0 -1
  1571. package/dist/indieauth/discovery.js.map +0 -1
  1572. package/dist/indieauth/token.d.ts.map +0 -1
  1573. package/dist/indieauth/token.js.map +0 -1
  1574. package/dist/mail/service.d.ts.map +0 -1
  1575. package/dist/mail/service.js.map +0 -1
  1576. package/dist/mail/templates.d.ts.map +0 -1
  1577. package/dist/mail/templates.js.map +0 -1
  1578. package/dist/notifications/preferences.d.ts.map +0 -1
  1579. package/dist/notifications/preferences.js.map +0 -1
  1580. package/dist/notifications/routes.d.ts.map +0 -1
  1581. package/dist/notifications/routes.js.map +0 -1
  1582. package/dist/plugins/federation.d.ts.map +0 -1
  1583. package/dist/plugins/federation.js.map +0 -1
  1584. package/dist/plugins/mount.d.ts.map +0 -1
  1585. package/dist/plugins/mount.js.map +0 -1
  1586. package/dist/privacy/policy.d.ts.map +0 -1
  1587. package/dist/privacy/policy.js.map +0 -1
  1588. package/dist/web/admin-bar.d.ts.map +0 -1
  1589. package/dist/web/admin-bar.js.map +0 -1
  1590. package/dist/web/assets.d.ts.map +0 -1
  1591. package/dist/web/assets.js.map +0 -1
  1592. package/dist/web/authors.d.ts.map +0 -1
  1593. package/dist/web/authors.js +0 -211
  1594. package/dist/web/authors.js.map +0 -1
  1595. package/dist/web/documents.d.ts +0 -81
  1596. package/dist/web/documents.d.ts.map +0 -1
  1597. package/dist/web/documents.js.map +0 -1
  1598. package/dist/web/errors.d.ts.map +0 -1
  1599. package/dist/web/errors.js.map +0 -1
  1600. package/dist/web/guids.d.ts.map +0 -1
  1601. package/dist/web/guids.js.map +0 -1
  1602. package/dist/web/indexnow.d.ts.map +0 -1
  1603. package/dist/web/indexnow.js.map +0 -1
  1604. package/dist/web/license.d.ts.map +0 -1
  1605. package/dist/web/license.js.map +0 -1
  1606. package/dist/web/locale.d.ts.map +0 -1
  1607. package/dist/web/locale.js.map +0 -1
  1608. package/dist/web/navigation.d.ts.map +0 -1
  1609. package/dist/web/navigation.js.map +0 -1
  1610. package/dist/web/recent.d.ts +0 -43
  1611. package/dist/web/recent.d.ts.map +0 -1
  1612. package/dist/web/recent.js +0 -37
  1613. package/dist/web/recent.js.map +0 -1
  1614. package/dist/web/sanitize.d.ts +0 -29
  1615. package/dist/web/sanitize.d.ts.map +0 -1
  1616. package/dist/web/sanitize.js.map +0 -1
  1617. package/dist/web/taxonomy.d.ts.map +0 -1
  1618. package/dist/web/taxonomy.js.map +0 -1
  1619. package/dist/web/templates.d.ts.map +0 -1
  1620. package/dist/web/templates.js.map +0 -1
  1621. package/dist/web/themes.d.ts.map +0 -1
  1622. package/dist/web/themes.js.map +0 -1
  1623. package/dist/webmention/html.d.ts.map +0 -1
  1624. package/dist/webmention/html.js.map +0 -1
  1625. package/dist/webmention/public-address.d.ts.map +0 -1
  1626. package/dist/webmention/public-address.js.map +0 -1
  1627. /package/dist/{web → content}/license.d.ts +0 -0
  1628. /package/dist/{web → content}/license.js +0 -0
  1629. /package/dist/{admin → site}/admin-theme.d.ts +0 -0
  1630. /package/dist/{admin → site}/admin-theme.js +0 -0
  1631. /package/dist/{admin → site}/passwords.d.ts +0 -0
  1632. /package/dist/{admin → site}/passwords.js +0 -0
  1633. /package/dist/{indieauth → util}/client-id.d.ts +0 -0
  1634. /package/dist/{indieauth → util}/client-id.js +0 -0
  1635. /package/dist/{webmention → util}/public-address.d.ts +0 -0
  1636. /package/dist/{webmention → util}/public-address.js +0 -0
  1637. /package/dist/{env.js → web/env.js} +0 -0
package/dist/index.js CHANGED
@@ -1,840 +1,4 @@
1
- import { Server as NetServer } from 'node:net';
2
- import { MemoryKvStore } from '@fedify/fedify';
3
- import { serve as serveNode } from '@hono/node-server';
4
- import { Hono } from 'hono';
5
- import { createAccessLog } from './access-log.js';
6
- import { createWriteGate } from './drain.js';
7
- import { createSettlingQueue } from './federation/queue.js';
8
- import { leavingWriteGate } from './supervisor/supervision.js';
9
- import { refuseWritesUnder } from './files/atomic.js';
10
- import { compression } from './web/compression.js';
11
- import { createAvatarService } from './avatars/index.js';
12
- import { createRetentionService } from './privacy/retention.js';
13
- import { baselineSecurityHeaders, effectiveBaseUrl, listUsers, migrateSettingsToFile, migrateUsersToFile, mountAdmin, openAdminStore, readSiteSettings, } from './admin/index.js';
14
- import { withRebuiltDatabase } from './cache.js';
15
- import { resolveConfig } from './config.js';
16
- import { createContentSync, createScheduler, openContentStore } from './content/index.js';
17
- import { shareLocation } from './content/location.js';
18
- import { postLocations } from './content/locations.js';
19
- import { createMailService } from './mail/index.js';
20
- import { readEnabledPlugins } from './plugins/enabled.js';
21
- import { mountPluginRoutes, pluginLifecycle } from './plugins/mount.js';
22
- import { pluginFederation } from './plugins/federation.js';
23
- import { sitePluginRegistry } from './plugins/site.js';
24
- import { createCommentDigest, createCommentNotifier } from './notifications/index.js';
25
- import { assertActorKeysUsable, createActorProfileService, createDeliveryService, createRelayService, createSiteFederation, migrateActorKeysToFiles, migrateFederationToFiles, mountFederation, rebuildFederationIndexes, signedProfileLoader, } from './federation/index.js';
26
- import { createReplyBackfill, signedRepliesLoader } from './federation/backfill.js';
27
- import { citedPostReader } from './federation/cited-post.js';
28
- import { handleLearner } from './federation/handles.js';
29
- import { createFeedNotifier } from './notify.js';
30
- import { createIndexNowNotifier } from './indexnow.js';
31
- import { commentFormFor, createAkismetChecker, followAllMovedComments, followMovedComments, migrateCommentEmails, migrateCommentKeys, rebuildCommentIndexes, } from './comments/index.js';
32
- import { contactFormFor } from './contact/index.js';
33
- import { settleImageVariants } from './images/variants.js';
34
- import { createMaintenanceSwitch } from './maintenance.js';
35
- import { enterDevMode } from './dev-mode.js';
36
- import { createConversation, createRedirectSource, createRenderer, createSiteDataSource, createThemeSource, frontPageSlugs, maintenanceGate, mountHealth, mountPublicSite, mountWellKnown, redirectBy, serverError, themeName, } from './web/index.js';
37
- import { activityLogSettled } from './indieauth/activity-log.js';
38
- import { mountAuthorizationEndpoint } from './indieauth/consent.js';
39
- import { mountIndieAuthDiscovery } from './indieauth/discovery.js';
40
- import { createIndieAuthState } from './indieauth/grants.js';
41
- import { mountTokenEndpoint, mountTokenInfoEndpoints } from './indieauth/token.js';
42
- import { mountMicropub } from './micropub/endpoint.js';
43
- import { mountMicropubMedia } from './micropub/media.js';
44
- import { createReplyContextService, createWebmentionService, followMovedWebmentions, } from './webmention/index.js';
45
- import { heldReplyContext } from './webmention/reply-context.js';
46
- import { createReplyNotices } from './comments/reply-notices.js';
47
- import { selectedTargets, syndicationCopies, syndicationTargetProblems, syndicationTargetsReader, } from './webmention/syndication.js';
48
- export { createFeedNotifier, NOTIFY_TIMEOUT_MS } from './notify.js';
49
- export { createIndexNowNotifier, defaultIndexNowBackoffMs, INDEXNOW_ENDPOINT } from './indexnow.js';
50
- export { LANGUAGE_TAG_PATTERN, COMMENT_ACTIONS, COMMENT_ADMIN_FIELDS, COMMENT_KINDS, COMMENT_SOURCES, COMMENT_STATUSES, COMMENT_TABS, COMMENTS_MODERATE_PATH, COMMENTS_PATH, COMMENTS_PER_PAGE, COMMENTS_REPLY_PATH, COMMENTS_SECTION, commentListUrl, mountCommentsScreen, pendingComments, MESSAGE_FIELDS, MESSAGE_TABS, MESSAGES_DELETE_PATH, MESSAGES_PATH, MESSAGES_PER_PAGE, MESSAGES_READ_PATH, MESSAGES_SECTION, messageListUrl, mountMessagesScreen, unreadMessages, DELIVERY_STATUSES, RELAY_STATES, ADMIN_ASSET_MAX_AGE, ADMIN_ASSET_PREFIX, ADMIN_PREFIX, ADMIN_SECTIONS, ADMIN_STATIC_DIR, ADMIN_TEMPLATES, actorSummary, addUserProblems, adminAssetResponse, adminContentSecurityPolicy, adminSecurityHeaders, akismetPanel, AKISMET_FIELDS, AKISMET_PATH, AKISMET_REMOVE, EMAIL_PATTERN, MAIL_FIELDS, MAIL_PATH, MAIL_REMOVE, MAIL_TEST_FIELDS, MAIL_TEST_PATH, MAIL_TEST_TEMPLATE, mailPanel, ARGON2_PARAMETERS, baselineSecurityHeaders, blankForm, CHANGE_PASSWORD_PATH, changePasswordProblems, clearSessionCookie, createAdminTemplateEnvironment, createLoginThrottle, createNonce, credentialProblem, clientAddress, countUsers, createUser, CSRF_FIELD, csrfTokenMatches, DASHBOARD_RECENT_POSTS, describeWait, DEFAULT_SITE_SETTINGS, DELETE_USER_PATH, deleteUser, deleteUserRefusal, deliveryRows, DOCUMENT_FILTERS, documentFilter, DOCUMENTS_PER_PAGE, editorPath, effectiveBaseUrl, EXCLUDE_KEY, DuplicateUsernameError, emailProblem, FEDERATION_FIELDS, FEDERATION_PATH, FEDERATION_RECENT, FEDERATION_SETTINGS_PATH, findAdminAsset, findBySlug, findUser, findUserById, findUserByIdentifier, followerRow, FORGOT_PATH, formatInTimezone, formFor, applyTermChange, CATEGORY_KIND, deletePath, formFromSettings, flash, GENERATED_PASSWORD_ALPHABET, GENERATED_PASSWORD_LENGTH, generatePassword, guard, hashPassword, HSTS_MAX_AGE, HSTS_VALUE, INBOX_INTERACTIONS, inboxRows, LOCKOUT_GROWTH_LIMIT, LOGIN_PATH, LOGOUT_PATH, listingUrl, listOptionsFor, listUsers, localPosts, loginKeys, MAXIMUM_USERNAME_LENGTH, migrateSettingsToFile, migrateUsersToFile, MINIMUM_PASSWORD_LENGTH, mountAdmin, mountDocumentScreens, mountFederationScreen, mountPreview, mountRecovery, mountSettings, mountTaxonomyScreens, mountUploads, mountUsers, newEditorPath, newPasswordProblem, NONCE_BYTES, openAdminStore, PAGE_KIND, PACKAGED_ADMIN_DIR, PASSWORD_CHANGED_TEMPLATE, passwordProblem, postEditorPath, POST_KIND, primaryUser, PREVIEW_PATH, readSiteSettings, RECOVERY_ANSWER, RECOVERY_FIELDS, RELAY_RETRY_PATH, RELAY_STATE_LABELS, relayList, relayRow, renamePath, renameProblem, RESEND_PATH, resendMessage, RESET_PATH, RESET_TEMPLATE, RESET_TOKEN_LIFETIME_SECONDS, resetLink, rewriteTerm, MEDIA_DELETE_PATH, MEDIA_FIELDS, MEDIA_PATH, MEDIA_PER_PAGE, MEDIA_SECTION, MEDIA_UPLOAD_PATH, mediaPageUrl, mentionsUpload, mountMediaScreen, deleteUpload, describeUpload, listUploads, referencesTo, resolveUpload, uploadMarkdown, normalizeRelayInbox, refusedUpload, refuseOversizedUpload, returnPath, SECURE_SESSION_COOKIE, SESSION_COOKIE, sessionCookieName, SESSION_ID_BYTES, sessionIdFrom, setSessionCookie, SETTINGS_FIELDS, SETTINGS_PATH, settingsFromForm, settingsFromSiteJson, settingsProblems, SETUP_PATH, siteDataPath, siteJsonFor, splitTags, storeUpload, TAG_KIND, takeFlash, TAXONOMY_FIELDS, TAXONOMY_KINDS, tooLargeMessage, updateSiteSettings, UPLOAD_ENVELOPE_BYTES, UPLOAD_FIELD, UPLOADS_PATH, setUserEmail, setUserPassword, setUserProfile, setUserActorId, ConflictingActorIdError, UnknownUserError, USER_EMAIL_PATH, USER_FIELDS, USERNAME_PATTERN, usernameProblem, USERS_FILE, USERS_FILE_MODE, usersFile, USERS_PATH, usesSecureCookies, verifyPasswordHash, verifyUserPassword, writeSiteJson, } from './admin/index.js';
51
- // The database as a file a site may act on: where it is, how to throw it away,
52
- // and the two refusals a boot can raise over one. The migration machinery
53
- // behind them stays inside the package, because a site has no business running
54
- // somebody else's ledger.
55
- export { databaseFile, databaseFiles, DATABASE_SUFFIXES, discardDatabase, OutdatedDatabaseError, UnusableDatabaseError, } from './cache.js';
56
- export { DEFAULT_IMAGE_FORMATS, DEFAULT_IMAGE_WIDTHS, DEFAULT_SECURITY_HEADERS, DEFAULT_UPLOAD_MAX_BYTES, DEFAULT_UPLOAD_MEDIA_MAX_BYTES, DEFAULT_UPLOAD_TYPES, defineConfig, KNOWN_IMAGE_FORMATS, resolveConfig, } from './config.js';
57
- // Native comments: the files they live in, the restricted Markdown they are
58
- // rendered with, the rules that decide whether a post is still taking them, the
59
- // one seam a spam checker plugs into, and the Akismet checker that plugs into
60
- // it when the site has a key.
61
- export { addComment, AKISMET_ENDPOINT, AKISMET_KEY_FILE, AKISMET_TIMEOUT_MS, AKISMET_USER_AGENT, akismetKeyPath, blankValues, COMMENT_FIELDS, COMMENT_NOTICE_PARAM, COMMENT_NOTICES, COMMENT_POST_PATH, COMMENT_RATE_LIMIT, COMMENT_RATE_WINDOW_SECONDS, COMMENT_REPLY_PARAM, COMMENT_EMAILS_DIRECTORY, COMMENT_EMAILS_FILE_MODE, COMMENT_SALT_FILE, COMMENTS_DATA_DIRECTORY, COMMENTS_FRONT_MATTER_KEY, commentForm, commentFormFor, commentKeys, commentNoticeFor, commentPolicyOf, commentProblems, commentEmailsFile, commentsDirectory, commentsFile, commentsOpen, createAkismetChecker, DEFAULT_COMMENTS_CLOSE_AFTER_DAYS, deleteComment, hashClientAddress, heldWebmention, intakeComment, isModerationAction, migrateCommentEmails, migrateCommentKeys, MAXIMUM_BODY_LENGTH, MAXIMUM_FORM_AGE_SECONDS, MAXIMUM_NAME_LENGTH, MAXIMUM_URL_LENGTH, MINIMUM_SUBMIT_SECONDS, moderateComment, MODERATION_ACTIONS, mountComments, normalizeWebsite, readAkismetKey, readComments, rebuildCommentIndexes, refilledCommentForm, removeAkismetKey, renderCommentMarkdown, signedInCommenter, signedInCommentForm, submitComment, updateComment, valuesOf, verifyAkismetKey, writeAkismetKey, } from './comments/index.js';
62
- // The contact form (TASK-56): the front matter key a page opts in with, the
63
- // endpoint the form posts to, the files under `data/contact/` that hold what
64
- // it collected, and the message that carries one on to the site's address.
65
- export { addContactMessage, blankContactValues, CONTACT_ANCHOR, CONTACT_DATA_DIRECTORY, CONTACT_FIELDS, CONTACT_FRONT_MATTER_KEY, CONTACT_MESSAGE_TEMPLATE, CONTACT_NOTICE_PARAM, CONTACT_NOTICES, CONTACT_POST_PATH, CONTACT_RATE_LIMIT, CONTACT_RATE_WINDOW_SECONDS, contactDirectory, contactForm, contactFormFor, contactKeys, contactMessageFile, contactMessageId, contactNoticeFor, contactOpen, contactProblems, contactRecipient, contactValuesOf, countContactMessagesByStatus, countUnreadContactMessages, deleteContactMessage, listContactMessages, MAXIMUM_CONTACT_EMAIL_LENGTH, MAXIMUM_CONTACT_MESSAGE_LENGTH, MAXIMUM_CONTACT_NAME_LENGTH, MAXIMUM_CONTACT_SUBJECT_LENGTH, mountContact, readContactMessage, refilledContactForm, sendContactMessage, setContactMessageRead, submitContactMessage, } from './contact/index.js';
66
- // The defences every public form here shares (TASK-56): the honeypot, the age
67
- // of a rendered form, and the salted hash of where a submission came from.
68
- export { ADDRESS_SALT_FILE, FORM_LOADED_FIELD, FORM_TRAP_FIELD, formAgeSeconds, formTimingRefusal, trapped, } from './forms/protection.js';
69
- export { readFileIfPresentSync, updateFileAtomically, withFileLock, writeFileAtomically, writeFileAtomicallySync, } from './files/index.js';
70
- export { DirectoryNotEmptyError, initSite, SITE_TEMPLATE_DIR, siteManifest } from './init.js';
71
- export { definePlugin, HOST_API_VERSION } from './plugin.js';
72
- export { DuplicatePluginError, pluginDataFolder } from './plugins/registry.js';
73
- export { pluginSite } from './plugins/site.js';
74
- export { PLUGINS_PATH } from './admin/plugins.js';
75
- export { describeImage, findImageVariant, generateImageVariants, imageMediaType, IMAGE_DIRECTORY, IMAGE_RECORD_NAME, IMAGE_SIZES, removeImageVariants, responsiveImages, iconSetting, manifestIcons, siteIcons, siteImageMarkup, variantUrl, VARIANT_ASSET_PREFIX, } from './images/index.js';
76
- export { calendarDayIn, contentFilePath, createContentSync, createScheduler, DATABASE_FILE, dateSortKey, DEFAULT_DEBOUNCE_MS, DEFAULT_TIMEZONE, defaultPermalink, documentContent, documentFrontMatter, ENCLOSURE_FRONT_MATTER_KEY, enclosureOf, freeSlug, DuplicatePermalinkError, hashDocument, htmlToText, isCaptions, isScheduled, isTrashedPath, KNOWN_FRONT_MATTER_KEYS, KNOWN_UPLOAD_TYPES, matchesSignature, MAXIMUM_DELAY_MS, MAXIMUM_QUERY_TERMS, normalizeBody, normalizeUploadType, openContentStore, parseDocument, PHOTO_FRONT_MATTER_KEY, photoAlt, photosOf, playsAsVideo, renderMarkdown, saveDocument, SCHEDULE_ORIGIN, scheduledFor, searchExpression, searchText, serializeDocument, slugify, SNIPPET_CLOSE, SNIPPET_OPEN, systemClock, systemTimers, toUtcInstant, TRANSCRIPT_TYPES, TRASH_DIRECTORY, typeForPath, UPLOAD_MEDIA_TYPES, wallClockIn, zoneLabel, } from './content/index.js';
77
- // Notifications: who is told about a comment, the switchboard that decides,
78
- // and the signed one-click links the messages carry (TASK-55).
79
- export { addCommentOptOut, COMMENT_DIGEST_TEMPLATE, COMMENT_OPTOUTS_FILE, COMMENT_PENDING_TEMPLATE, COMMENT_REPLY_TEMPLATE, commentOptOutsFile, COMMENTS_NOTIFICATION, createCommentDigest, createCommentNotifier, DEFAULT_DELIVERY_MODE, DELIVERY_MODE_LABELS, DELIVERY_WINDOW_MS, deliveryMode, DIGEST_MAX_ITEMS, DIGEST_TICK_MS, DIGEST_TIMES_FILE, digestTimesFile, hasOptedOut, isBatchedMode, MODERATE_PATH, MODERATION_TOKEN_LIFETIME_SECONDS, moderationLink, mountNotificationLinks, NOTIFICATION_DELIVERY_MODES, NOTIFICATION_EVENTS, NOTIFICATION_FIELDS, NOTIFICATION_SECRET_FILE, notificationEvent, notificationMode, notificationRecipients, notificationSwitches, notificationTokenExpiry, notificationWanted, readCommentOptOuts, readDigestTimes, readNotificationToken, recordDigestTimes, signNotificationToken, systemNotificationTimers, UNSUBSCRIBE_ACTION, UNSUBSCRIBE_PATH, UNSUBSCRIBE_TOKEN_LIFETIME_SECONDS, unsubscribeLink, withNotification, withNotificationMode, } from './notifications/index.js';
80
- // Email: the one seam a mail service plugs into, the two providers the package
81
- // ships, the in-memory one a test observes, and the service every feature that
82
- // emails goes through.
83
- export { BREVO_ENDPOINT, BREVO_TIMEOUT_MS, createBrevoProvider, createMailService, createMailTemplates, createMemoryMailProvider, createSmtpProvider, DEFAULT_MAIL_ATTEMPTS, defaultMailBackoffMs, MAIL_CREDENTIALS_FILE, MAIL_PROVIDERS, mailCredentialsPath, mailTemplateFiles, readMailCredentials, removeMailCredentials, SMTP_TIMEOUT_MS, writeMailCredentials, } from './mail/index.js';
84
- export { acceptedRelays, acceptRelay, addFollower, appendInboxActivity, ACTOR_KEY_ALGORITHMS, ACTOR_PATH, assertActorKeysUsable, actorKeyFile, actorKeysDir, articleObjectId, actorAliases, actorId, avatarUrl, keyIdFor, mainKeyId, multikeyId, senderKeyPairs, userActor, userByUsername, createActivityId, createDeliveryService, createRelayService, createSiteFederation, deleteActivityId, deliveryTargets, documentAuthor, federatedPost, federatedUsernames, FEDERATION_DATA_DIRECTORY, federationOrigin, acctOf, handleHref, userDirectory, webFingerSubject, WEBFINGER_PATH, followerFrom, followerRecipient, FOLLOWERS_FILE, FOLLOWERS_PAGE_SIZE, FOLLOWERS_PATH, actorHandle, followersFile, followersPage, FOLLOWING_PATH, groupByInbox, handleAccept, handleDelete, handleFollow, handleLoggedActivity, handleReject, handleUndo, INBOX_PATH, isFederatedDocument, lastFollowersCursor, inboxDirectory, inboxFile, inboxMonth, INBOX_DIRECTORY, inboxRowFrom, loadActorKeyPairs, logActivity, migrateActorKeysToFiles, migrateFederationToFiles, mountFederation, NODEINFO_PATH, OUTBOX_PAGE_SIZE, OUTBOX_PATH, postCreateActivity, postDeleteActivity, postObject, postUpdateActivity, readFollowers, readInboxLog, rebuildFederationIndexes, rejectRelay, relayAnswering, relayRecipient, REPLY_ACTIVITY_TYPE, replyFrom, replyTargetOf, SHARED_INBOX_PATH, SOFTWARE_NAME, SOURCE_MEDIA_TYPE, toInstant, updateActivityId, } from './federation/index.js';
85
- export { absoluteUrl, ACTIVITY_STREAMS_MEDIA_TYPES, activityStreamsId, alternateLinks, archiveMonths, ARCHIVE_FRONT_MATTER_KEY, archiveOpen, assetNotModified, assetResponse, atomEntry, atomFeed, AUTHOR_BASE, authorContext, authorFeedHref, authorHref, authorName, authorNames, categoryHref, commentAnchor, commentsFeedHref, commentsFeedPath, REPLIES_ROOT, repliesFeedPath, repliesKey, commentsFeedResponse, commentsRssFeed, COMMENTS_ROOT, COMMENTS_TITLE_PREFIX, contentEtag, createConversation, createRenderer, createSiteDataSource, createTemplateEnvironment, CREATIVE_COMMONS_LICENSES, CREATIVE_COMMONS_NAMESPACE, DEFAULT_FEED_SIZE, DEFAULT_MENU_NAME, DEFAULT_TAXONOMY_BASES, DEFAULT_POSTS_PER_PAGE, DOCUMENT_REPRESENTATIONS, documentContext, cdata, contentTypeOf, DC_NAMESPACE, DEFAULT_FEED_LANGUAGE, DEFAULT_NOTIFY_SERVER, documentJson, escapeXml, excerptFromHtml, EXCERPT_WORDS, FEED_ALIASES, FEED_CONTENT_TYPES, FEED_FORMATS, FEED_GENERATOR, FEED_GENERATOR_URI, FEED_ITEM_REVISION, FEED_SEGMENT, FEED_SEGMENTS, feedComments, feedExcerpt, feedHref, feedItem, feedItems, feedLanguage, feedLinkHeader, feedPathUnder, feedResponse, feedSize, findAsset, findThemeAsset, findThemeFile, findUpload, forgetTerm, formatDate, frontPageSlugs, homeHref, INBOX_BASE, isLinkUrl, isNotModified, isListed, isServed, ITUNES_NAMESPACE, JSON_FEED_VERSION, JSON_SCHEMA_VERSION, jsonFeed, jsonFeedItem, lastModifiedOf, latestModified, LINK_REL_RULE, LINK_URL_RULE, listingPageHref, LISTING_REPRESENTATIONS, matchesEtag, MAXIMUM_QUERY_LENGTH, MEDIA_TYPES, MENU_NAME_MAX_LENGTH, MENU_NAME_PATTERN, menuItemLineProblem, menuItemOf, menuItemsFromText, menuItemsText, menuNameProblem, menusOf, mountPublicSite, navigationItems, navigationItemsOf, navigationMenu, navigationMenus, notAcceptableResponse, NOTIFY_CLOUD_PORT, NOTIFY_CLOUD_PROTOCOL, NOTIFY_PATHS, notifyEndpoints, notifyServerOf, offsetForPage, PACKAGED_THEME_DIR, PAGE_SEGMENT, paginate, parseAccept, parseAuthorPath, PODCAST_NAMESPACE, postObjectId, postsPerPage, prefersActivityStreams, profileContext, publicDocumentAt, resolveLicense, recordTermRename, redirectedTerm, REPRESENTATION_EXTENSIONS, representationEtag, REL_VALUE_PATTERN, relText, relValuesOf, representationHref, representationResponse, RESERVED_TOP_LEVEL_PATHS, rfc822, spokenIn, robotsResponse, robotsTxt, ROBOTS_CONTENT_TYPE, ROBOTS_PATH, rssFeed, rssItem, readTheme, sanitizeCommentHtml, searchHref, searchJson, searchPageIndex, searchQuery, SEARCH_PAGE_PARAM, SEARCH_PATH, SEARCH_QUERY_PARAM, selectRepresentation, SITE_DATA_FILE, SITE_THEME_KIND, sitemapChildPath, sitemapDate, sitemapIndexXml, sitemapResponse, sitemapXml, SITEMAP_CHILD_ROUTE, SITEMAP_CONTENT_TYPE, SITEMAP_MAX_URLS, SITEMAP_NAMESPACE, SITEMAP_PATH, snippetHtml, SOURCE_NAMESPACE, siteAuthorContext, siteAuthorName, siteMenus, siteTimezone, splitFeedPath, splitLinkRel, splitRepresentationExtension, tagHref, TAXONOMIES, userForAuthor, TAXONOMY_BASE_PATTERN, TAXONOMY_LABELS, taxonomyBaseProblems, taxonomyBases, taxonomyBasesOrDefault, taxonomyForSegment, taxonomyRedirectsOf, OPTIONAL_TEMPLATES, TEMPLATES, termHref, termRedirects, themeAssetNotModified, themeAssetResponse, THEME_ASSET_MAX_AGE, THEME_ASSET_PREFIX, THEME_STATIC_DIR, THEME_MANIFEST_FILE, themeSearchPath, UPLOAD_ASSET_MAX_AGE, UPLOAD_ASSET_PREFIX, UPLOAD_DIRECTORY, WFW_NAMESPACE, } from './web/index.js';
86
- export { classesOf, createWebmentionService, discoverEndpoint, DISCOVERY_MAX_BYTES, DISCOVERY_TIMEOUT_MS, elementsIn, endpointInHeader, endpointInHtml, externalLinks, innerHtmlOf, isElement, itemsIn, linksTo, parseHtml, rawTextOf, readCapped, SEND_TIMEOUT_MS, sourceEntry, textOf, WEBMENTION_USER_AGENT, createReplyContextService, fetchReplyContext, readReplyContext, REPLY_CONTEXTS_FILE, systemHostLookup, parseSyndicationTargets, selectedTargets, SYNDICATE_TO_FRONT_MATTER_KEY, SYNDICATION_FILE, SYNDICATION_FRONT_MATTER_KEY, SYNDICATION_TARGETS_FILE, syndicationTargetsReader, } from './webmention/index.js';
87
- export { AVATAR_PATH_PREFIX, AVATAR_SIZE, avatarHref, avatarSourceOf, createAvatarService, mountAvatars, } from './avatars/index.js';
88
- export { RECOMMENDED_ADDRESS_HASH_RETENTION_DAYS, RECOMMENDED_COMMENT_EMAIL_RETENTION_DAYS, RECOMMENDED_CONTACT_MESSAGE_RETENTION_DAYS, } from './privacy/policy.js';
89
- export { createRetentionService, RETENTION_SWEEP_MS } from './privacy/retention.js';
90
- /**
91
- * Where the scheduler's watermark lives in {@link AdminStore.getState}: the
92
- * instant up to which scheduled documents have been announced.
93
- */
94
- export const SCHEDULE_WATERMARK_KEY = 'schedule.watermark';
95
- /** Where the instant the scheduler first ran on this site lives in {@link AdminStore.getState}. */
96
- export const SCHEDULE_FIRST_RUN_KEY = 'schedule.firstRun';
97
- /**
98
- * The two connections a boot takes on the one database, opened together so
99
- * that either both of them survive it or neither does.
100
- *
101
- * The database is a cache (decision-9), so a version of it this package cannot
102
- * carry forward is thrown away and read back from the files rather than being
103
- * a thing anybody has to do something about. That is what
104
- * {@link withRebuiltDatabase} does with an {@link OutdatedDatabaseError} — and
105
- * why the content store is closed before the admin store's failure is allowed
106
- * to leave here: the file cannot be deleted while a connection holds it.
107
- *
108
- * The failure it does not recover from is a database written by a newer
109
- * `@geekity/cms`, or one damaged past opening. Both refuse the boot naming the
110
- * file, because a downgrade is usually a mistake and because a database from
111
- * before decision-9 still carries the settings, key and account rows the
112
- * migrations below write out as files — deleting one of those to get past an
113
- * error would destroy an actor's private keys. `geekity rebuild` is the door
114
- * for a person who has looked and decided.
115
- */
116
- function openCache(resolved) {
117
- return withRebuiltDatabase(resolved.dataDir, () => {
118
- const { dataDir, baseUrl } = resolved;
119
- const store = openContentStore({ dataDir, baseUrl, now: resolved.now });
120
- try {
121
- return { store, admin: openAdminStore({ dataDir }) };
122
- }
123
- catch (error) {
124
- store.close();
125
- throw error;
126
- }
127
- });
128
- }
129
- /**
130
- * Build a CMS around a site's config.
131
- *
132
- * The returned app is a plain Hono app: the public site, the admin UI and the
133
- * federation endpoints are all mounted on it as later milestones land. Booting
134
- * opens the SQLite cache under `dataDir` (creating the directory) and applies
135
- * any migrations, so `close()` has to be called to release it. A missing
136
- * database is built and read back out of the files; see {@link openCache} for
137
- * what happens to one this version cannot use.
138
- */
139
- export function createCms(config = {}, context = {}) {
140
- const resolved = resolveConfig(config);
141
- if (resolved.devMode)
142
- enterDevMode(resolved.dataDir, 'config');
143
- const plugins = sitePluginRegistry(resolved, context.folderPlugins);
144
- const { store, admin } = openCache(resolved);
145
- // A site upgrading from the version that kept its settings in SQLite has
146
- // rows nothing would read again: they become content/_data/site.json here,
147
- // once, and the table goes (decision-9). A site that has already been
148
- // through it does nothing but check.
149
- migrateSettingsToFile({ admin, contentDir: resolved.contentDir });
150
- // And the same for its actor's key pairs, which become JWK files under
151
- // data/keys. This is the migration that must not fail: an actor whose
152
- // private key is lost is one every follower stops being able to verify, so
153
- // the rows are written out before the table is dropped, and a file that is
154
- // already there always wins.
155
- migrateActorKeysToFiles({ admin, dataDir: resolved.dataDir });
156
- // And the accounts, which become data/users.json. The ids come with them, so
157
- // a session the database already holds still names the person it was made
158
- // for, and the file wins where there already is one.
159
- migrateUsersToFile({ admin, dataDir: resolved.dataDir });
160
- // And the log of what the inbox was told, which becomes
161
- // content/_data/federation/inbox/{yyyy}-{mm}.jsonl. Unlike the three above,
162
- // no table is dropped: `ap_inbox` and `followers` stay as indexes of the
163
- // files, which is why the rebuild is next and runs on every boot rather than
164
- // once. The site actor's followers are not migrated: decision-14 replaced it
165
- // with one actor per user, and nobody inherits a follow made with somebody
166
- // who no longer exists.
167
- migrateFederationToFiles({ admin, contentDir: resolved.contentDir });
168
- rebuildFederationIndexes({ admin, contentDir: resolved.contentDir });
169
- // And the comments, which are files under content/_data/comments/ with
170
- // their authors' emails under data/comments/ (TASK-50, TASK-182). A comment
171
- // file that still holds an email, from before they moved or from a hand
172
- // edit, has it moved first; then the index is rebuilt, on every boot for the
173
- // same reason the federation one is.
174
- const commentRecords = { admin, contentDir: resolved.contentDir, dataDir: resolved.dataDir };
175
- migrateCommentEmails(commentRecords);
176
- migrateCommentKeys(commentRecords);
177
- rebuildCommentIndexes(commentRecords);
178
- // And, once the files are the whole story, that every user's keys are
179
- // readable. This is the one thing here that can stop a boot: an actor that
180
- // publishes no key is one no follower can verify, and Fedify would serve
181
- // exactly that rather than complain. A minute of downtime with the file
182
- // named is the better failure. A user who has never federated has no key
183
- // files at all, which is not damage and does not stop anything.
184
- for (const user of listUsers(resolved.dataDir)) {
185
- assertActorKeysUsable(resolved.dataDir, user.username);
186
- }
187
- // The one thing the settings decide before a request arrives. It is settled
188
- // here, at boot, rather than per request: `baseUrl` also decides whether the
189
- // session cookie is `Secure`, and flipping that under a signed-in admin
190
- // would log them out of the form they just submitted.
191
- resolved.baseUrl = effectiveBaseUrl(resolved, readSiteSettings(resolved.contentDir));
192
- // Akismet, when the site has not named a checker of its own (TASK-52). A
193
- // config that names one wins outright, because a site that has written a
194
- // checker meant it; this is the one the settings screen turns on with a key
195
- // rather than a deployment.
196
- //
197
- // Built whether or not there is a key in `data/akismet.json`: it reads that
198
- // file on every call, so a key pasted into the settings screen filters the
199
- // next comment and a key removed stops filtering at once, neither of them
200
- // needing a restart. With no key it sends nothing anywhere.
201
- resolved.commentChecker ??= createAkismetChecker({
202
- dataDir: resolved.dataDir,
203
- // Read when a comment arrives rather than now, so a change of language on
204
- // the settings screen reaches Akismet without a restart either.
205
- language: () => readSiteSettings(resolved.contentDir).language,
206
- });
207
- // Which theme this site renders through (decision-15). One source for the
208
- // whole CMS: the pages, the `/theme/` assets and the site's email all read
209
- // it, so they cannot disagree about which theme is in use and a choice that
210
- // cannot be honoured is reported once rather than three times. It reads the
211
- // site data rather than holding a directory, so a theme chosen on the
212
- // Appearance screen — or written into `site.json` by hand — is the one the
213
- // next request renders through, with no restart and with the watcher off.
214
- const siteData = createSiteDataSource(resolved);
215
- const themes = createThemeSource({
216
- themesDir: resolved.themesDir,
217
- chosen: () => themeName(siteData.read()),
218
- });
219
- // Asked once here so a site whose chosen theme is missing says so at boot,
220
- // rather than at whatever moment the first request happens to arrive.
221
- themes.current();
222
- // The site's declared redirects (TASK-128), read per request for the reason
223
- // the site data is. Asked once here for the reason the theme is: an entry
224
- // that cannot be served, or a loop, is reported at boot.
225
- const redirects = createRedirectSource({ contentDir: resolved.contentDir });
226
- redirects.current();
227
- const content = createContentSync({
228
- store,
229
- contentDir: resolved.contentDir,
230
- watch: resolved.watch,
231
- });
232
- // A watched change waits for its burst to settle, as a scan does: a git
233
- // pull that moves a post and adds another at its old URL must not hand the
234
- // new post's comments to the moved one before the new one is indexed.
235
- content.events.on('change', async (change) => {
236
- if (change.origin === 'scan' || change.origin === 'watch' || change.next === undefined) {
237
- return;
238
- }
239
- await followMovedComments(commentRecords, store, change.next);
240
- followMovedWebmentions(admin, store, resolved.baseUrl);
241
- });
242
- content.onSettled(async () => {
243
- await followAllMovedComments(commentRecords, store);
244
- followMovedWebmentions(admin, store, resolved.baseUrl);
245
- });
246
- // Email. Built whether or not the site has a provider or a credential, for
247
- // the reason the Akismet checker is: the settings and `data/mail.json` are
248
- // read per send, so a key pasted into the settings screen sends the next
249
- // message and one removed stops the message after it, neither needing a
250
- // restart. With nothing configured, sending is a line in the log.
251
- const mail = createMailService({ config: resolved, themes, ...resolved.mail });
252
- // The one reader of the two indexes a conversation is made of. The page, the
253
- // per-post comments feed, `/comments/feed/` and the `source:comments` count
254
- // on a post feed are all drawn from it, so a reader cannot be shown one
255
- // thing on the page and another in the feed (TASK-62).
256
- const conversation = createConversation({
257
- admin,
258
- store,
259
- contentDir: resolved.contentDir,
260
- baseUrl: resolved.baseUrl,
261
- users: () => listUsers(resolved.dataDir),
262
- });
263
- // What a reply shows of the post it answers. Built before the renderer,
264
- // which reads the stored contexts, and subscribed to the index below with
265
- // the other services that reach out to the web.
266
- // The syndication targets the site declares and the copies they answered
267
- // with, both files in the content directory (TASK-155, decision-26).
268
- const syndicationTargets = syndicationTargetsReader(resolved.contentDir);
269
- const copies = syndicationCopies(resolved.contentDir);
270
- const locations = postLocations(resolved.dataDir);
271
- const replyContexts = createReplyContextService({
272
- store,
273
- config: resolved,
274
- lookup: resolved.hostLookup,
275
- fediverse: citedPostReader(() => federationContext()),
276
- held: (target) => {
277
- const found = conversation.heldAt(target);
278
- return found === undefined ? undefined : heldReplyContext(target, found);
279
- },
280
- onStored: (target, previous) => {
281
- delivery.citedPageStored(target, previous);
282
- const original = replyContexts.read(target)?.original;
283
- if (original !== undefined && original !== previous?.original) {
284
- webmentions.originalFound(target, original);
285
- }
286
- },
287
- });
288
- // The faces in a conversation, fetched here and served from here so a
289
- // reader's address never reaches the servers they live on (TASK-134).
290
- const avatars = createAvatarService({ admin, config: resolved });
291
- // What keeps a site from holding its readers' personal data for longer than
292
- // its settings say (TASK-135).
293
- const retention = createRetentionService({ admin, config: resolved });
294
- const renderer = createRenderer({
295
- config: resolved,
296
- themes,
297
- // The stored context of a reply's target: a file read, never a fetch, so
298
- // a page is drawn without waiting on anybody's server (TASK-123).
299
- replyContext: (target) => replyContexts.read(target),
300
- // The targets a post links to and the copies they made of it (TASK-155),
301
- // read from the site's files like the reply contexts.
302
- syndication: (document) => ({
303
- targets: selectedTargets(document, syndicationTargets(), readSiteSettings(resolved.contentDir).language),
304
- copies: Object.values(copies.read(document.permalink)),
305
- }),
306
- location: (document) => shareLocation(locations.read(document.permalink), readSiteSettings(resolved.contentDir).locationSharing),
307
- // The pages that put themselves in the site menu are found by asking for
308
- // every public page and reading their front matter, rather than by an
309
- // index of their own: a site has a handful of pages, the query is the
310
- // same one the listing index already serves, and doing it per render is
311
- // what makes a page flagged in the editor appear in the menu at once.
312
- pages: () => store.listAll({ type: 'page', draft: false, trashed: false, scheduled: false }),
313
- // Who may sign in, for the byline under a post and the heading of an
314
- // author archive (TASK-67). Read per render for the reason the pages are:
315
- // `data/users.json` is the truth about who exists (decision-9), and a
316
- // display name saved on the users screen a second ago belongs on the very
317
- // next page drawn.
318
- users: () => listUsers(resolved.dataDir),
319
- // What has been said about a post, from every source at once and read per
320
- // render for the same reason: a reply logged or a comment approved a
321
- // second ago is on the page the next request draws (TASK-49, TASK-50).
322
- // One dependency, and the very reader the comments feeds are published
323
- // from, so the page and the feed cannot disagree.
324
- conversation: conversation.thread,
325
- // And the form under it, when the post is still taking comments. Asked per
326
- // render because whether it is depends on the clock: a post that closed an
327
- // hour ago stops offering one on the very next request.
328
- commentForm: (document, viewer) => commentFormFor({
329
- document,
330
- site: renderer.site(),
331
- now: resolved.now(),
332
- // And who is reading it, when a session says: the short form for
333
- // somebody signed in to this site, the stranger's form for everybody
334
- // else (TASK-103). The route reads the session and hands it down, so
335
- // one render of one request cannot disagree with itself.
336
- viewer,
337
- // Whether "tell me about replies" is worth offering, asked per render
338
- // for the same reason: a credential pasted into the settings screen
339
- // puts the box on the next page drawn (TASK-55).
340
- notifiable: mail.configured(),
341
- }),
342
- // And the contact form, for a page whose front matter asks for one. Asked
343
- // per render for the same reason: a `contact: true` saved in the editor a
344
- // moment ago puts a form on the page the next request draws (TASK-56).
345
- contactForm: (document) => contactFormFor({ document, now: resolved.now() }),
346
- // The posts either side of one, for the links under an entry (TASK-79).
347
- // Two indexed lookups per post rather than a walk of the archive, and
348
- // asked per render for the reason the conversation is: a post published a
349
- // minute ago is already the neighbour of the one before it.
350
- neighbours: (document) => store.neighbours(document),
351
- // And the site's own posts and pages that link to it (TASK-322), asked per
352
- // render for the same reason: a post published a minute ago that cites
353
- // this one is already one of its backlinks, and so does one whose link
354
- // reaches it through a redirect declared a minute ago (TASK-330). A link
355
- // to `/` lands on the page the Reading setting puts there, which is the
356
- // page its slug names, as the routes resolve it.
357
- backlinks: (document) => {
358
- const { homepage } = frontPageSlugs(siteData.read());
359
- return store.listBacklinks(document, {
360
- redirects: redirects.current(),
361
- home: document.type === 'page' &&
362
- homepage !== '' &&
363
- store.getBySlug(homepage)?.path === document.path,
364
- });
365
- },
366
- newestPosts: (count) => store.listPosts({ limit: count }),
367
- // And every published post, for a page that says `archive: true`. The one
368
- // listing with no paging, so it is asked for only by the page that prints
369
- // it (TASK-85).
370
- archivePosts: () => store.listPosts(),
371
- });
372
- const federationKv = resolved.federation.kv ?? new MemoryKvStore();
373
- const federationQueue = resolved.federation.queue === undefined ? createSettlingQueue() : undefined;
374
- const federation = createSiteFederation({
375
- baseUrl: resolved.baseUrl,
376
- ...resolved.federation,
377
- ...(federationQueue === undefined ? {} : { queue: federationQueue }),
378
- kv: federationKv,
379
- });
380
- // Federation listens to the index rather than to the admin, so a post edited
381
- // on disk federates exactly as one saved through the editor does (doc-4).
382
- // It is built before the app because a handler reads it off the context: the
383
- // admin's Resend button is a request that sends a post out again.
384
- // The names and faces of the actors who are not followers (TASK-184),
385
- // fetched in the background when one is heard from and on a sweep.
386
- const actorProfiles = createActorProfileService({
387
- admin,
388
- config: resolved,
389
- load: signedProfileLoader(() => federation.createContext(new URL(resolved.baseUrl), {
390
- admin,
391
- store,
392
- config: resolved,
393
- actorProfiles,
394
- cited: (url) => replyContexts.read(url),
395
- })),
396
- });
397
- const federationContext = () => federation.createContext(new URL(resolved.baseUrl), {
398
- admin,
399
- store,
400
- config: resolved,
401
- actorProfiles,
402
- cited: (url) => replyContexts.read(url),
403
- });
404
- const learnHandles = handleLearner(federationContext);
405
- const replyBackfill = createReplyBackfill({
406
- admin,
407
- store,
408
- conversation,
409
- config: resolved,
410
- load: signedRepliesLoader(federationContext),
411
- heard: (actorId) => {
412
- actorProfiles.capture(actorId);
413
- },
414
- });
415
- const delivery = createDeliveryService({
416
- federation,
417
- admin,
418
- store,
419
- config: resolved,
420
- actorProfiles,
421
- cited: (url) => replyContexts.read(url),
422
- });
423
- content.events.on('change', (change) => delivery.handle(change));
424
- // Who hears about a comment (TASK-55). It reads the users file and the mail
425
- // settings per message rather than at boot, so an address added on the users
426
- // screen is written to by the very next comment.
427
- const notifications = createCommentNotifier({
428
- admin,
429
- store,
430
- mail,
431
- config: resolved,
432
- cited: (url) => replyContexts.read(url),
433
- });
434
- const replyNotices = createReplyNotices({
435
- admin,
436
- store,
437
- conversation,
438
- notices: notifications,
439
- config: resolved,
440
- });
441
- content.events.on('change', (change) => {
442
- replyNotices.handle(change);
443
- });
444
- admin.onConversationWrite((written) => {
445
- replyNotices.heard(written);
446
- });
447
- // And the other half of it (TASK-60): a user who asked for an hourly or a
448
- // daily digest hears nothing above and one message per window from here,
449
- // listing whatever is still pending when their window comes up. It reads the
450
- // users file and the record of what it has sent per run, for the same
451
- // reason: a mode chosen on the users screen takes effect at the next tick.
452
- const digests = createCommentDigest({
453
- admin,
454
- store,
455
- mail,
456
- config: resolved,
457
- cited: (url) => replyContexts.read(url),
458
- });
459
- // And so does the webmention sender: telling the pages a post links to is
460
- // the same news as telling the followers, and it should not matter which
461
- // door the post came in by (TASK-51).
462
- const webmentions = createWebmentionService({
463
- admin,
464
- store,
465
- config: resolved,
466
- notifications,
467
- originalOf: (url) => replyContexts.read(url)?.original,
468
- conversation,
469
- });
470
- content.events.on('change', (change) => {
471
- webmentions.handle(change);
472
- });
473
- // A reply under a reply post or a comment's page changes what its page
474
- // says, whichever door it came in by, and the page tells what it answers
475
- // (a salmention, TASK-320).
476
- admin.onConversationWrite((written) => {
477
- webmentions.heard(written);
478
- });
479
- content.events.on('change', (change) => {
480
- replyContexts.handle(change);
481
- });
482
- // The notify server listens to the index for the same reason: a post edited
483
- // on disk changed the same feeds as one saved through the editor.
484
- const notifier = createFeedNotifier({ config: resolved });
485
- content.events.on('change', (change) => notifier.handle(change));
486
- // IndexNow listens for the same reason, and wants the pages as well as the
487
- // posts: a search engine indexes both (TASK-151).
488
- const indexNow = createIndexNowNotifier({ config: resolved });
489
- content.events.on('change', (change) => {
490
- indexNow.handle(change);
491
- });
492
- // A post whose date is in the future is held back (TASK-44), and nothing
493
- // watches a clock: this is what notices that one has come due and reports it
494
- // as the publish it is, so delivery, the notifier and a site's `onPublish`
495
- // all run without knowing a timer was involved. Subscribed to every change
496
- // so a save that moves a date moves the timer with it.
497
- const scheduler = createScheduler({
498
- store,
499
- announce: (change) => content.announce(change),
500
- watermark: {
501
- read: () => admin.getState(SCHEDULE_WATERMARK_KEY),
502
- write: (instant) => {
503
- admin.setState(SCHEDULE_WATERMARK_KEY, instant);
504
- },
505
- readFirstRun: () => admin.getState(SCHEDULE_FIRST_RUN_KEY),
506
- writeFirstRun: (instant) => {
507
- admin.setState(SCHEDULE_FIRST_RUN_KEY, instant);
508
- },
509
- },
510
- });
511
- content.events.on('change', (change) => {
512
- scheduler.handle(change);
513
- });
514
- // Relay subscriptions (FEP-ae0c). The list is a setting and the handshake is
515
- // a record, so booting reconciles the two: a relay the file names and the
516
- // database has never heard of is followed here, which is what makes a
517
- // rebuilt database catch up rather than silently stop federating to it.
518
- const relays = createRelayService({
519
- federation,
520
- admin,
521
- store,
522
- config: resolved,
523
- actorProfiles,
524
- cited: (url) => replyContexts.read(url),
525
- });
526
- relays.sync();
527
- const maintenance = createMaintenanceSwitch({
528
- dataDir: resolved.dataDir,
529
- forced: resolved.maintenance,
530
- now: resolved.now,
531
- });
532
- const indieauth = createIndieAuthState(resolved.now);
533
- const app = new Hono();
534
- // A handler that throws is answered here rather than with Hono's plain-text
535
- // 500. The middleware above the handler still runs on the way out, so the
536
- // baseline and admin headers land on this response like any other.
537
- app.onError(serverError);
538
- // One line per request, before anything else is registered so that every
539
- // route is on it: /healthz, the federation endpoints, the admin and the
540
- // public site alike, and a request whose handler threw as well. Off unless
541
- // the site asked for it; `geekity serve` asks.
542
- if (resolved.accessLog) {
543
- app.use('*', createAccessLog({
544
- config: resolved,
545
- ...(resolved.accessLogWriter === undefined ? {} : { write: resolved.accessLogWriter }),
546
- }));
547
- }
548
- // Outside everything after it, so it compresses the body the client is
549
- // about to get, the error pages and the 503 included (TASK-139).
550
- if (resolved.compression)
551
- app.use('*', compression());
552
- const writes = createWriteGate();
553
- app.use('*', writes.middleware);
554
- app.use('*', async (c, next) => {
555
- c.set('store', store);
556
- c.set('admin', admin);
557
- c.set('config', resolved);
558
- c.set('renderer', renderer);
559
- c.set('conversation', conversation);
560
- c.set('avatars', avatars);
561
- c.set('actorProfiles', actorProfiles);
562
- c.set('announce', (change) => content.announce(change));
563
- c.set('rescan', () => content.sync());
564
- c.set('delivery', delivery);
565
- c.set('relays', relays);
566
- c.set('webmentions', webmentions);
567
- c.set('replyContexts', replyContexts);
568
- c.set('learnHandles', learnHandles);
569
- c.set('mail', mail);
570
- c.set('notifications', notifications);
571
- c.set('redirects', redirects);
572
- c.set('maintenance', maintenance);
573
- c.set('indieauth', indieauth);
574
- c.set('supervision', leavingWriteGate(context.supervision, () => writes.leave(c)));
575
- await next();
576
- });
577
- app.use('*', pluginLifecycle(plugins, () => writes.refusing));
578
- // The baseline on everything the CMS answers, admin and public alike, and
579
- // outside everything below so redirects, the 503, 404s and the onError 500
580
- // carry it too. The admin sets stricter values of its own inside it; none of
581
- // it restricts what a theme may reference.
582
- app.use('*', baselineSecurityHeaders);
583
- // And one on every redirect, whichever part of the CMS sent it.
584
- app.use('*', redirectBy);
585
- // Maintenance mode (TASK-130) turns away everything after it but the health
586
- // checks, the admin and the theme's files, so it goes in front of all of
587
- // them: federation's inboxes included.
588
- app.use('*', maintenanceGate);
589
- app.get('/_geekity/health', (c) => c.json({ status: 'ok' }));
590
- // The health check a container orchestrator or an uptime monitor probes
591
- // (TASK-87). It goes on before federation, the admin and the public site,
592
- // so no permalink can ever shadow it.
593
- mountHealth(app);
594
- // The two well-known files a site answers for itself (TASK-133), before the
595
- // public site can claim either path as a permalink.
596
- mountWellKnown(app);
597
- // IndieAuth's authorization server metadata (TASK-157), the endpoint that
598
- // starts a sign-in (TASK-158), the one that issues tokens (TASK-160) and
599
- // the ones that answer for a token once issued (TASK-161), here for the
600
- // reason the well-known files are.
601
- mountIndieAuthDiscovery(app);
602
- mountAuthorizationEndpoint(app);
603
- mountTokenEndpoint(app);
604
- mountTokenInfoEndpoints(app);
605
- // Micropub (TASK-163) and its media endpoint (TASK-165), which stand on
606
- // those tokens.
607
- mountMicropub(app);
608
- mountMicropubMedia(app);
609
- // Federation goes on first. It answers its own paths and falls through on
610
- // every other, so putting it in front costs the rest of the app nothing and
611
- // is the only place it can go: the public site claims every unmatched path
612
- // in its not-found handler.
613
- mountFederation(app, federation, {
614
- plugins: pluginFederation({
615
- registry: plugins,
616
- canonical: federation,
617
- kv: federationKv,
618
- allowPrivateAddress: resolved.federation.allowPrivateAddress ?? false,
619
- }),
620
- });
621
- // The admin goes on before the public site, for the same reason.
622
- mountAdmin(app);
623
- mountPluginRoutes(app, plugins);
624
- mountPublicSite(app);
625
- /**
626
- * Subscribe a site's hook to one event.
627
- *
628
- * The emitter already contains a hook that throws; this also contains one
629
- * that rejects, so an `async` hook whose delivery fails is reported rather
630
- * than surfacing as an unhandled rejection that would take the process down.
631
- */
632
- function subscribe(event, hook) {
633
- return content.events.on(event, (change) => {
634
- // A hook's return is ignored, but an `async` one hands back a promise
635
- // whose unhandled rejection would take the whole process down.
636
- const result = hook(change);
637
- if (result instanceof Promise) {
638
- result.catch((error) => {
639
- const message = error instanceof Error ? error.message : String(error);
640
- console.warn(`A ${event} hook rejected: ${message}`);
641
- });
642
- }
643
- });
644
- }
645
- if (resolved.onDocumentChange !== undefined)
646
- subscribe('change', resolved.onDocumentChange);
647
- if (resolved.onPublish !== undefined)
648
- subscribe('published', resolved.onPublish);
649
- let server;
650
- let releaseFiles;
651
- /** Everything that runs on its own once the site serves, after the scan. */
652
- async function startServices() {
653
- // The index is brought up to date before the first request, so a site
654
- // never serves a stale document, and the watcher takes over from there.
655
- await content.start();
656
- // After the scan, because the catch-up reads the index: a post whose
657
- // date passed while nothing was running is published here, once.
658
- await scheduler.start();
659
- // And a reply whose target the contexts file holds nothing for is
660
- // fetched now, in the background, for the same reason (TASK-123).
661
- replyContexts.catchUp();
662
- // And the avatars the conversations show are fetched or refreshed in the
663
- // background now and on a timer from here on, so a reader almost never
664
- // waits on a stranger's server for one (TASK-134).
665
- avatars.start();
666
- // And the profiles of whoever is in the inbox log without being a
667
- // follower: missing ones are fetched now, which is the backfill of a log
668
- // written before profiles were kept, and stale ones on a timer (TASK-184).
669
- actorProfiles.start();
670
- replyBackfill.start();
671
- // And whatever personal data has outlived its period is removed now and
672
- // every few hours from here on (TASK-135).
673
- retention.start();
674
- // The digests tick from here on. Nothing is caught up first: a digest is
675
- // whatever is pending when a window comes up, so a site that was down
676
- // over one simply sends the next one, with everything still waiting in it.
677
- digests.start();
678
- await plugins.reconcile(readEnabledPlugins(resolved.contentDir));
679
- }
680
- function stopTimers() {
681
- scheduler.stop();
682
- digests.stop();
683
- avatars.stop();
684
- actorProfiles.stop();
685
- replyBackfill.stop();
686
- retention.stop();
687
- }
688
- /**
689
- * Anything already on its way out is allowed to finish, so stopping never
690
- * leaves a delivery half recorded or a queued one unsent.
691
- */
692
- async function settleQueues() {
693
- await scheduler.settled();
694
- await digests.settled();
695
- await delivery.settled();
696
- await relays.settled();
697
- await federationQueue?.settled();
698
- await webmentions.settled();
699
- await replyContexts.settled();
700
- await avatars.settled();
701
- await actorProfiles.settled();
702
- await replyBackfill.settled();
703
- await retention.settled();
704
- await notifier.settled();
705
- }
706
- /** What is left once the queues are empty: the mail, the image encodes, the activity log. */
707
- async function settleWrites() {
708
- await mail.settled();
709
- // A page render derives an upload's variants in the background; the
710
- // encode finishes before the directories it writes into can be removed.
711
- await settleImageVariants(resolved);
712
- await activityLogSettled(resolved.dataDir);
713
- }
714
- return {
715
- app,
716
- config: resolved,
717
- store,
718
- admin,
719
- federation,
720
- delivery,
721
- relays,
722
- webmentions,
723
- replyContexts,
724
- avatars,
725
- actorProfiles,
726
- replyBackfill,
727
- retention,
728
- notifier,
729
- indexNow,
730
- mail,
731
- notifications,
732
- digests,
733
- scheduler,
734
- events: content.events,
735
- onDocumentChange(hook) {
736
- return subscribe('change', hook);
737
- },
738
- onPublish(hook) {
739
- return subscribe('published', hook);
740
- },
741
- notifyFeeds(urls) {
742
- return notifier.notify(urls);
743
- },
744
- sync() {
745
- return content.sync();
746
- },
747
- async serve() {
748
- if (server !== undefined) {
749
- throw new Error('This CMS is already serving; call close() before serving again.');
750
- }
751
- await startServices();
752
- // A syndication target the site declares badly is ignored everywhere,
753
- // and said so once here rather than on every page (TASK-155).
754
- for (const problem of syndicationTargetProblems(resolved.contentDir))
755
- console.warn(problem);
756
- return new Promise((resolve) => {
757
- server = serveNode({ fetch: app.fetch, port: resolved.port }, (info) => {
758
- resolve({ port: info.port });
759
- });
760
- });
761
- },
762
- async drain() {
763
- await writes.refuse();
764
- await plugins.reconcile(new Set());
765
- stopTimers();
766
- await content.stop();
767
- await settleQueues();
768
- await indexNow.settled();
769
- await settleWrites();
770
- store.setReadOnly(true);
771
- admin.setReadOnly(true);
772
- releaseFiles ??= refuseWritesUnder([resolved.dataDir, resolved.contentDir]);
773
- },
774
- async resume() {
775
- releaseFiles?.();
776
- releaseFiles = undefined;
777
- store.setReadOnly(false);
778
- admin.setReadOnly(false);
779
- await startServices();
780
- writes.reopen();
781
- },
782
- async close() {
783
- const running = server;
784
- server = undefined;
785
- const handingOver = running !== undefined && writes.refusing ? closeServer(running, true) : undefined;
786
- if (writes.refusing)
787
- writes.handOver();
788
- await plugins.close();
789
- stopTimers();
790
- await content.stop();
791
- await settleQueues();
792
- // What was gathered and not yet sent is dropped rather than sent on the
793
- // way down; a batch already going out finishes.
794
- indexNow.close();
795
- await indexNow.settled();
796
- await settleWrites();
797
- federationQueue?.close();
798
- if (running !== undefined)
799
- await (handingOver ?? closeServer(running, false));
800
- releaseFiles?.();
801
- releaseFiles = undefined;
802
- admin.close();
803
- store.close();
804
- },
805
- };
806
- }
807
- /** How long a drained server waits for its connections to end before it closes them. */
808
- const GENTLE_CLOSE_MS = 30_000;
809
- /**
810
- * Stop listening and resolve once every connection has ended.
811
- *
812
- * A drained server closes gently. `http.Server#close` closes idle keep-alive
813
- * connections at once, racing a client that is about to reuse one, which
814
- * then sees a reset. `net.Server#close` leaves them: each one either carries
815
- * `Connection: close` on its next response or ends on the keep-alive timeout
816
- * the client was told, which a client honours by closing first.
817
- */
818
- function closeServer(running, gently) {
819
- return new Promise((resolve, reject) => {
820
- const done = (err) => {
821
- if (err)
822
- reject(err);
823
- else
824
- resolve();
825
- };
826
- if (!gently) {
827
- running.close(done);
828
- return;
829
- }
830
- const timer = setTimeout(() => running.closeAllConnections(), GENTLE_CLOSE_MS);
831
- NetServer.prototype.close.call(running, (err) => {
832
- clearTimeout(timer);
833
- // The http server's own close clears its connection-checking interval;
834
- // the listener is already gone, so the error it reports is expected.
835
- running.close(() => undefined);
836
- done(err);
837
- });
838
- });
839
- }
1
+ export * from './exports.js';
2
+ export { settleConfig } from './cms/boot.js';
3
+ export { createCms } from './cms/create.js';
840
4
  //# sourceMappingURL=index.js.map