@geekity/cms 0.3.0 → 0.5.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 (660) hide show
  1. package/README.md +2217 -214
  2. package/admin/components/fields.njk +165 -0
  3. package/admin/layouts/base.njk +1 -1
  4. package/admin/layouts/settings-page.njk +26 -0
  5. package/admin/layouts/shell.njk +17 -3
  6. package/admin/pages/account/forgot.njk +47 -0
  7. package/admin/pages/account/login.njk +26 -0
  8. package/admin/pages/account/reset.njk +38 -0
  9. package/admin/pages/account/setup.njk +28 -0
  10. package/admin/pages/appearance/themes.njk +69 -0
  11. package/admin/pages/comments/all.njk +133 -0
  12. package/admin/{layouts/dashboard.njk → pages/dashboard/home.njk} +8 -15
  13. package/admin/{layouts/document-conflict.njk → pages/documents/conflict.njk} +1 -0
  14. package/admin/{layouts/document-editor.njk → pages/documents/editor.njk} +75 -59
  15. package/admin/{layouts/document-list.njk → pages/documents/list.njk} +19 -2
  16. package/admin/pages/documents/taxonomy.njk +95 -0
  17. package/admin/pages/federation/followers.njk +238 -0
  18. package/admin/pages/federation/settings.njk +77 -0
  19. package/admin/pages/media/library.njk +160 -0
  20. package/admin/pages/messages/all.njk +110 -0
  21. package/admin/pages/navigation/menus.njk +129 -0
  22. package/admin/{layouts → pages}/placeholder.njk +5 -1
  23. package/admin/pages/settings/discussion.njk +99 -0
  24. package/admin/pages/settings/email.njk +203 -0
  25. package/admin/pages/settings/general.njk +29 -0
  26. package/admin/pages/settings/permalinks.njk +50 -0
  27. package/admin/pages/settings/reading.njk +64 -0
  28. package/admin/pages/tools/content-index.njk +89 -0
  29. package/admin/pages/users/edit.njk +239 -0
  30. package/admin/pages/users/list.njk +51 -0
  31. package/admin/pages/users/new.njk +41 -0
  32. package/admin/static/admin.css +558 -3
  33. package/admin/static/copy.js +52 -0
  34. package/admin/static/editor.js +16 -16
  35. package/admin/static/slug.js +61 -0
  36. package/dist/access-log.d.ts +44 -0
  37. package/dist/access-log.d.ts.map +1 -0
  38. package/dist/access-log.js +71 -0
  39. package/dist/access-log.js.map +1 -0
  40. package/dist/admin/accounts.d.ts +413 -0
  41. package/dist/admin/accounts.d.ts.map +1 -0
  42. package/dist/admin/accounts.js +680 -0
  43. package/dist/admin/accounts.js.map +1 -0
  44. package/dist/admin/appearance.d.ts +80 -0
  45. package/dist/admin/appearance.d.ts.map +1 -0
  46. package/dist/admin/appearance.js +136 -0
  47. package/dist/admin/appearance.js.map +1 -0
  48. package/dist/admin/comments.d.ts +90 -0
  49. package/dist/admin/comments.d.ts.map +1 -0
  50. package/dist/admin/comments.js +244 -0
  51. package/dist/admin/comments.js.map +1 -0
  52. package/dist/admin/credentials.d.ts +26 -2
  53. package/dist/admin/credentials.d.ts.map +1 -1
  54. package/dist/admin/credentials.js +35 -2
  55. package/dist/admin/credentials.js.map +1 -1
  56. package/dist/admin/documents.d.ts +117 -10
  57. package/dist/admin/documents.d.ts.map +1 -1
  58. package/dist/admin/documents.js +328 -41
  59. package/dist/admin/documents.js.map +1 -1
  60. package/dist/admin/federation.d.ts +161 -50
  61. package/dist/admin/federation.d.ts.map +1 -1
  62. package/dist/admin/federation.js +235 -93
  63. package/dist/admin/federation.js.map +1 -1
  64. package/dist/admin/formatting.d.ts +20 -0
  65. package/dist/admin/formatting.d.ts.map +1 -0
  66. package/dist/admin/formatting.js +72 -0
  67. package/dist/admin/formatting.js.map +1 -0
  68. package/dist/admin/headers.d.ts +65 -0
  69. package/dist/admin/headers.d.ts.map +1 -0
  70. package/dist/admin/headers.js +104 -0
  71. package/dist/admin/headers.js.map +1 -0
  72. package/dist/admin/index.d.ts +38 -12
  73. package/dist/admin/index.d.ts.map +1 -1
  74. package/dist/admin/index.js +25 -7
  75. package/dist/admin/index.js.map +1 -1
  76. package/dist/admin/media.d.ts +168 -0
  77. package/dist/admin/media.d.ts.map +1 -0
  78. package/dist/admin/media.js +295 -0
  79. package/dist/admin/media.js.map +1 -0
  80. package/dist/admin/menu.d.ts +79 -0
  81. package/dist/admin/menu.d.ts.map +1 -0
  82. package/dist/admin/menu.js +143 -0
  83. package/dist/admin/menu.js.map +1 -0
  84. package/dist/admin/messages.d.ts +80 -0
  85. package/dist/admin/messages.d.ts.map +1 -0
  86. package/dist/admin/messages.js +152 -0
  87. package/dist/admin/messages.js.map +1 -0
  88. package/dist/admin/navigation.d.ts +155 -0
  89. package/dist/admin/navigation.d.ts.map +1 -0
  90. package/dist/admin/navigation.js +292 -0
  91. package/dist/admin/navigation.js.map +1 -0
  92. package/dist/admin/preview.d.ts.map +1 -1
  93. package/dist/admin/preview.js +31 -7
  94. package/dist/admin/preview.js.map +1 -1
  95. package/dist/admin/recovery.d.ts +92 -0
  96. package/dist/admin/recovery.d.ts.map +1 -0
  97. package/dist/admin/recovery.js +229 -0
  98. package/dist/admin/recovery.js.map +1 -0
  99. package/dist/admin/routes.d.ts +0 -20
  100. package/dist/admin/routes.d.ts.map +1 -1
  101. package/dist/admin/routes.js +164 -105
  102. package/dist/admin/routes.js.map +1 -1
  103. package/dist/admin/session.d.ts +17 -3
  104. package/dist/admin/session.d.ts.map +1 -1
  105. package/dist/admin/session.js +19 -5
  106. package/dist/admin/session.js.map +1 -1
  107. package/dist/admin/settings-discussion.d.ts +37 -0
  108. package/dist/admin/settings-discussion.d.ts.map +1 -0
  109. package/dist/admin/settings-discussion.js +117 -0
  110. package/dist/admin/settings-discussion.js.map +1 -0
  111. package/dist/admin/settings-email.d.ts +54 -0
  112. package/dist/admin/settings-email.d.ts.map +1 -0
  113. package/dist/admin/settings-email.js +189 -0
  114. package/dist/admin/settings-email.js.map +1 -0
  115. package/dist/admin/settings-federation.d.ts +48 -0
  116. package/dist/admin/settings-federation.d.ts.map +1 -0
  117. package/dist/admin/settings-federation.js +123 -0
  118. package/dist/admin/settings-federation.js.map +1 -0
  119. package/dist/admin/settings-general.d.ts +12 -0
  120. package/dist/admin/settings-general.d.ts.map +1 -0
  121. package/dist/admin/settings-general.js +48 -0
  122. package/dist/admin/settings-general.js.map +1 -0
  123. package/dist/admin/settings-page.d.ts +119 -0
  124. package/dist/admin/settings-page.d.ts.map +1 -0
  125. package/dist/admin/settings-page.js +132 -0
  126. package/dist/admin/settings-page.js.map +1 -0
  127. package/dist/admin/settings-pages.d.ts +30 -0
  128. package/dist/admin/settings-pages.d.ts.map +1 -0
  129. package/dist/admin/settings-pages.js +43 -0
  130. package/dist/admin/settings-pages.js.map +1 -0
  131. package/dist/admin/settings-permalinks.d.ts +16 -0
  132. package/dist/admin/settings-permalinks.d.ts.map +1 -0
  133. package/dist/admin/settings-permalinks.js +32 -0
  134. package/dist/admin/settings-permalinks.js.map +1 -0
  135. package/dist/admin/settings-reading.d.ts +34 -0
  136. package/dist/admin/settings-reading.d.ts.map +1 -0
  137. package/dist/admin/settings-reading.js +49 -0
  138. package/dist/admin/settings-reading.js.map +1 -0
  139. package/dist/admin/settings.d.ts +339 -96
  140. package/dist/admin/settings.d.ts.map +1 -1
  141. package/dist/admin/settings.js +600 -308
  142. package/dist/admin/settings.js.map +1 -1
  143. package/dist/admin/store.d.ts +606 -152
  144. package/dist/admin/store.d.ts.map +1 -1
  145. package/dist/admin/store.js +863 -268
  146. package/dist/admin/store.js.map +1 -1
  147. package/dist/admin/taxonomy.d.ts +114 -0
  148. package/dist/admin/taxonomy.d.ts.map +1 -0
  149. package/dist/admin/taxonomy.js +289 -0
  150. package/dist/admin/taxonomy.js.map +1 -0
  151. package/dist/admin/templates.d.ts +46 -14
  152. package/dist/admin/templates.d.ts.map +1 -1
  153. package/dist/admin/templates.js +46 -14
  154. package/dist/admin/templates.js.map +1 -1
  155. package/dist/admin/throttle.d.ts +84 -0
  156. package/dist/admin/throttle.d.ts.map +1 -0
  157. package/dist/admin/throttle.js +143 -0
  158. package/dist/admin/throttle.js.map +1 -0
  159. package/dist/admin/tools.d.ts +111 -0
  160. package/dist/admin/tools.d.ts.map +1 -0
  161. package/dist/admin/tools.js +182 -0
  162. package/dist/admin/tools.js.map +1 -0
  163. package/dist/admin/uploads.d.ts +28 -2
  164. package/dist/admin/uploads.d.ts.map +1 -1
  165. package/dist/admin/uploads.js +43 -4
  166. package/dist/admin/uploads.js.map +1 -1
  167. package/dist/admin/users.d.ts +100 -13
  168. package/dist/admin/users.d.ts.map +1 -1
  169. package/dist/admin/users.js +412 -39
  170. package/dist/admin/users.js.map +1 -1
  171. package/dist/cache.d.ts +141 -0
  172. package/dist/cache.d.ts.map +1 -0
  173. package/dist/cache.js +207 -0
  174. package/dist/cache.js.map +1 -0
  175. package/dist/cli.d.ts +14 -2
  176. package/dist/cli.d.ts.map +1 -1
  177. package/dist/cli.js +429 -21
  178. package/dist/cli.js.map +1 -1
  179. package/dist/comments/akismet.d.ts +130 -0
  180. package/dist/comments/akismet.d.ts.map +1 -0
  181. package/dist/comments/akismet.js +274 -0
  182. package/dist/comments/akismet.js.map +1 -0
  183. package/dist/comments/conversation.d.ts +29 -0
  184. package/dist/comments/conversation.d.ts.map +1 -0
  185. package/dist/comments/conversation.js +60 -0
  186. package/dist/comments/conversation.js.map +1 -0
  187. package/dist/comments/form.d.ts +123 -0
  188. package/dist/comments/form.d.ts.map +1 -0
  189. package/dist/comments/form.js +79 -0
  190. package/dist/comments/form.js.map +1 -0
  191. package/dist/comments/index.d.ts +16 -0
  192. package/dist/comments/index.d.ts.map +1 -0
  193. package/dist/comments/index.js +10 -0
  194. package/dist/comments/index.js.map +1 -0
  195. package/dist/comments/markdown.d.ts +8 -0
  196. package/dist/comments/markdown.d.ts.map +1 -0
  197. package/dist/comments/markdown.js +85 -0
  198. package/dist/comments/markdown.js.map +1 -0
  199. package/dist/comments/moderate.d.ts +71 -0
  200. package/dist/comments/moderate.d.ts.map +1 -0
  201. package/dist/comments/moderate.js +88 -0
  202. package/dist/comments/moderate.js.map +1 -0
  203. package/dist/comments/policy.d.ts +57 -0
  204. package/dist/comments/policy.d.ts.map +1 -0
  205. package/dist/comments/policy.js +80 -0
  206. package/dist/comments/policy.js.map +1 -0
  207. package/dist/comments/records.d.ts +266 -0
  208. package/dist/comments/records.d.ts.map +1 -0
  209. package/dist/comments/records.js +487 -0
  210. package/dist/comments/records.js.map +1 -0
  211. package/dist/comments/routes.d.ts +60 -0
  212. package/dist/comments/routes.d.ts.map +1 -0
  213. package/dist/comments/routes.js +212 -0
  214. package/dist/comments/routes.js.map +1 -0
  215. package/dist/comments/submission.d.ts +297 -0
  216. package/dist/comments/submission.d.ts.map +1 -0
  217. package/dist/comments/submission.js +280 -0
  218. package/dist/comments/submission.js.map +1 -0
  219. package/dist/comments/viewer.d.ts +21 -0
  220. package/dist/comments/viewer.d.ts.map +1 -0
  221. package/dist/comments/viewer.js +45 -0
  222. package/dist/comments/viewer.js.map +1 -0
  223. package/dist/config.d.ts +225 -5
  224. package/dist/config.d.ts.map +1 -1
  225. package/dist/config.js +121 -6
  226. package/dist/config.js.map +1 -1
  227. package/dist/contact/delivery.d.ts +60 -0
  228. package/dist/contact/delivery.d.ts.map +1 -0
  229. package/dist/contact/delivery.js +87 -0
  230. package/dist/contact/delivery.js.map +1 -0
  231. package/dist/contact/form.d.ts +130 -0
  232. package/dist/contact/form.d.ts.map +1 -0
  233. package/dist/contact/form.js +163 -0
  234. package/dist/contact/form.js.map +1 -0
  235. package/dist/contact/index.d.ts +17 -0
  236. package/dist/contact/index.d.ts.map +1 -0
  237. package/dist/contact/index.js +13 -0
  238. package/dist/contact/index.js.map +1 -0
  239. package/dist/contact/records.d.ts +124 -0
  240. package/dist/contact/records.d.ts.map +1 -0
  241. package/dist/contact/records.js +218 -0
  242. package/dist/contact/records.js.map +1 -0
  243. package/dist/contact/routes.d.ts +17 -0
  244. package/dist/contact/routes.d.ts.map +1 -0
  245. package/dist/contact/routes.js +127 -0
  246. package/dist/contact/routes.js.map +1 -0
  247. package/dist/contact/submission.d.ts +103 -0
  248. package/dist/contact/submission.d.ts.map +1 -0
  249. package/dist/contact/submission.js +166 -0
  250. package/dist/contact/submission.js.map +1 -0
  251. package/dist/content/document.d.ts +7 -2
  252. package/dist/content/document.d.ts.map +1 -1
  253. package/dist/content/document.js +1 -0
  254. package/dist/content/document.js.map +1 -1
  255. package/dist/content/index.d.ts +7 -2
  256. package/dist/content/index.d.ts.map +1 -1
  257. package/dist/content/index.js +4 -1
  258. package/dist/content/index.js.map +1 -1
  259. package/dist/content/markdown.d.ts.map +1 -1
  260. package/dist/content/markdown.js +24 -2
  261. package/dist/content/markdown.js.map +1 -1
  262. package/dist/content/parser.d.ts.map +1 -1
  263. package/dist/content/parser.js +11 -4
  264. package/dist/content/parser.js.map +1 -1
  265. package/dist/content/save.d.ts +5 -0
  266. package/dist/content/save.d.ts.map +1 -1
  267. package/dist/content/save.js +44 -1
  268. package/dist/content/save.js.map +1 -1
  269. package/dist/content/schedule.d.ts +125 -0
  270. package/dist/content/schedule.d.ts.map +1 -0
  271. package/dist/content/schedule.js +207 -0
  272. package/dist/content/schedule.js.map +1 -0
  273. package/dist/content/search.d.ts +64 -0
  274. package/dist/content/search.d.ts.map +1 -0
  275. package/dist/content/search.js +136 -0
  276. package/dist/content/search.js.map +1 -0
  277. package/dist/content/store.d.ts +220 -7
  278. package/dist/content/store.d.ts.map +1 -1
  279. package/dist/content/store.js +392 -67
  280. package/dist/content/store.js.map +1 -1
  281. package/dist/content/sync.d.ts +7 -1
  282. package/dist/content/sync.d.ts.map +1 -1
  283. package/dist/content/sync.js +18 -10
  284. package/dist/content/sync.js.map +1 -1
  285. package/dist/content/time.d.ts +56 -0
  286. package/dist/content/time.d.ts.map +1 -0
  287. package/dist/content/time.js +141 -0
  288. package/dist/content/time.js.map +1 -0
  289. package/dist/content/writer.d.ts.map +1 -1
  290. package/dist/content/writer.js +3 -0
  291. package/dist/content/writer.js.map +1 -1
  292. package/dist/env.d.ts +70 -5
  293. package/dist/env.d.ts.map +1 -1
  294. package/dist/federation/actor.d.ts +95 -41
  295. package/dist/federation/actor.d.ts.map +1 -1
  296. package/dist/federation/actor.js +180 -53
  297. package/dist/federation/actor.js.map +1 -1
  298. package/dist/federation/article.d.ts +44 -17
  299. package/dist/federation/article.d.ts.map +1 -1
  300. package/dist/federation/article.js +98 -46
  301. package/dist/federation/article.js.map +1 -1
  302. package/dist/federation/delivery.d.ts +63 -15
  303. package/dist/federation/delivery.d.ts.map +1 -1
  304. package/dist/federation/delivery.js +154 -80
  305. package/dist/federation/delivery.js.map +1 -1
  306. package/dist/federation/federation.d.ts +22 -17
  307. package/dist/federation/federation.d.ts.map +1 -1
  308. package/dist/federation/federation.js +98 -77
  309. package/dist/federation/federation.js.map +1 -1
  310. package/dist/federation/followers.d.ts +3 -2
  311. package/dist/federation/followers.d.ts.map +1 -1
  312. package/dist/federation/followers.js +6 -5
  313. package/dist/federation/followers.js.map +1 -1
  314. package/dist/federation/import-wordpress.d.ts +128 -0
  315. package/dist/federation/import-wordpress.d.ts.map +1 -0
  316. package/dist/federation/import-wordpress.js +426 -0
  317. package/dist/federation/import-wordpress.js.map +1 -0
  318. package/dist/federation/inbox.d.ts +36 -13
  319. package/dist/federation/inbox.d.ts.map +1 -1
  320. package/dist/federation/inbox.js +120 -49
  321. package/dist/federation/inbox.js.map +1 -1
  322. package/dist/federation/index.d.ts +22 -10
  323. package/dist/federation/index.d.ts.map +1 -1
  324. package/dist/federation/index.js +13 -8
  325. package/dist/federation/index.js.map +1 -1
  326. package/dist/federation/keys.d.ts +98 -20
  327. package/dist/federation/keys.d.ts.map +1 -1
  328. package/dist/federation/keys.js +269 -39
  329. package/dist/federation/keys.js.map +1 -1
  330. package/dist/federation/mount.d.ts +46 -10
  331. package/dist/federation/mount.d.ts.map +1 -1
  332. package/dist/federation/mount.js +300 -28
  333. package/dist/federation/mount.js.map +1 -1
  334. package/dist/federation/paths.d.ts +23 -35
  335. package/dist/federation/paths.d.ts.map +1 -1
  336. package/dist/federation/paths.js +26 -39
  337. package/dist/federation/paths.js.map +1 -1
  338. package/dist/federation/records.d.ts +223 -0
  339. package/dist/federation/records.d.ts.map +1 -0
  340. package/dist/federation/records.js +506 -0
  341. package/dist/federation/records.js.map +1 -0
  342. package/dist/federation/relays.d.ts +114 -0
  343. package/dist/federation/relays.d.ts.map +1 -0
  344. package/dist/federation/relays.js +290 -0
  345. package/dist/federation/relays.js.map +1 -0
  346. package/dist/federation/replies.d.ts +80 -0
  347. package/dist/federation/replies.d.ts.map +1 -0
  348. package/dist/federation/replies.js +166 -0
  349. package/dist/federation/replies.js.map +1 -0
  350. package/dist/federation/wordpress.d.ts +131 -0
  351. package/dist/federation/wordpress.d.ts.map +1 -0
  352. package/dist/federation/wordpress.js +341 -0
  353. package/dist/federation/wordpress.js.map +1 -0
  354. package/dist/files/atomic.d.ts +103 -0
  355. package/dist/files/atomic.d.ts.map +1 -0
  356. package/dist/files/atomic.js +150 -0
  357. package/dist/files/atomic.js.map +1 -0
  358. package/dist/files/index.d.ts +3 -0
  359. package/dist/files/index.d.ts.map +1 -0
  360. package/dist/files/index.js +2 -0
  361. package/dist/files/index.js.map +1 -0
  362. package/dist/forms/protection.d.ts +85 -0
  363. package/dist/forms/protection.d.ts.map +1 -0
  364. package/dist/forms/protection.js +116 -0
  365. package/dist/forms/protection.js.map +1 -0
  366. package/dist/images/icons.d.ts +59 -0
  367. package/dist/images/icons.d.ts.map +1 -0
  368. package/dist/images/icons.js +131 -0
  369. package/dist/images/icons.js.map +1 -0
  370. package/dist/images/index.d.ts +7 -0
  371. package/dist/images/index.d.ts.map +1 -0
  372. package/dist/images/index.js +4 -0
  373. package/dist/images/index.js.map +1 -0
  374. package/dist/images/markup.d.ts +47 -0
  375. package/dist/images/markup.d.ts.map +1 -0
  376. package/dist/images/markup.js +175 -0
  377. package/dist/images/markup.js.map +1 -0
  378. package/dist/images/paths.d.ts +34 -0
  379. package/dist/images/paths.d.ts.map +1 -0
  380. package/dist/images/paths.js +41 -0
  381. package/dist/images/paths.js.map +1 -0
  382. package/dist/images/variants.d.ts +104 -0
  383. package/dist/images/variants.d.ts.map +1 -0
  384. package/dist/images/variants.js +320 -0
  385. package/dist/images/variants.js.map +1 -0
  386. package/dist/index.d.ts +123 -19
  387. package/dist/index.d.ts.map +1 -1
  388. package/dist/index.js +344 -25
  389. package/dist/index.js.map +1 -1
  390. package/dist/init.d.ts +18 -0
  391. package/dist/init.d.ts.map +1 -1
  392. package/dist/init.js +34 -3
  393. package/dist/init.js.map +1 -1
  394. package/dist/mail/brevo.d.ts +35 -0
  395. package/dist/mail/brevo.d.ts.map +1 -0
  396. package/dist/mail/brevo.js +85 -0
  397. package/dist/mail/brevo.js.map +1 -0
  398. package/dist/mail/credentials.d.ts +62 -0
  399. package/dist/mail/credentials.d.ts.map +1 -0
  400. package/dist/mail/credentials.js +86 -0
  401. package/dist/mail/credentials.js.map +1 -0
  402. package/dist/mail/index.d.ts +15 -0
  403. package/dist/mail/index.d.ts.map +1 -0
  404. package/dist/mail/index.js +8 -0
  405. package/dist/mail/index.js.map +1 -0
  406. package/dist/mail/memory.d.ts +35 -0
  407. package/dist/mail/memory.d.ts.map +1 -0
  408. package/dist/mail/memory.js +29 -0
  409. package/dist/mail/memory.js.map +1 -0
  410. package/dist/mail/provider.d.ts +80 -0
  411. package/dist/mail/provider.d.ts.map +1 -0
  412. package/dist/mail/provider.js +23 -0
  413. package/dist/mail/provider.js.map +1 -0
  414. package/dist/mail/service.d.ts +156 -0
  415. package/dist/mail/service.d.ts.map +1 -0
  416. package/dist/mail/service.js +265 -0
  417. package/dist/mail/service.js.map +1 -0
  418. package/dist/mail/smtp.d.ts +39 -0
  419. package/dist/mail/smtp.d.ts.map +1 -0
  420. package/dist/mail/smtp.js +58 -0
  421. package/dist/mail/smtp.js.map +1 -0
  422. package/dist/mail/templates.d.ts +91 -0
  423. package/dist/mail/templates.d.ts.map +1 -0
  424. package/dist/mail/templates.js +69 -0
  425. package/dist/mail/templates.js.map +1 -0
  426. package/dist/notifications/comments.d.ts +66 -0
  427. package/dist/notifications/comments.d.ts.map +1 -0
  428. package/dist/notifications/comments.js +151 -0
  429. package/dist/notifications/comments.js.map +1 -0
  430. package/dist/notifications/digest.d.ts +135 -0
  431. package/dist/notifications/digest.d.ts.map +1 -0
  432. package/dist/notifications/digest.js +287 -0
  433. package/dist/notifications/digest.js.map +1 -0
  434. package/dist/notifications/index.d.ts +13 -0
  435. package/dist/notifications/index.d.ts.map +1 -0
  436. package/dist/notifications/index.js +8 -0
  437. package/dist/notifications/index.js.map +1 -0
  438. package/dist/notifications/links.d.ts +60 -0
  439. package/dist/notifications/links.d.ts.map +1 -0
  440. package/dist/notifications/links.js +63 -0
  441. package/dist/notifications/links.js.map +1 -0
  442. package/dist/notifications/optouts.d.ts +48 -0
  443. package/dist/notifications/optouts.d.ts.map +1 -0
  444. package/dist/notifications/optouts.js +93 -0
  445. package/dist/notifications/optouts.js.map +1 -0
  446. package/dist/notifications/preferences.d.ts +158 -0
  447. package/dist/notifications/preferences.d.ts.map +1 -0
  448. package/dist/notifications/preferences.js +195 -0
  449. package/dist/notifications/preferences.js.map +1 -0
  450. package/dist/notifications/routes.d.ts +28 -0
  451. package/dist/notifications/routes.d.ts.map +1 -0
  452. package/dist/notifications/routes.js +184 -0
  453. package/dist/notifications/routes.js.map +1 -0
  454. package/dist/notifications/tokens.d.ts +60 -0
  455. package/dist/notifications/tokens.d.ts.map +1 -0
  456. package/dist/notifications/tokens.js +125 -0
  457. package/dist/notifications/tokens.js.map +1 -0
  458. package/dist/notify.d.ts +84 -0
  459. package/dist/notify.d.ts.map +1 -0
  460. package/dist/notify.js +149 -0
  461. package/dist/notify.js.map +1 -0
  462. package/dist/web/archive.d.ts +49 -0
  463. package/dist/web/archive.d.ts.map +1 -0
  464. package/dist/web/archive.js +59 -0
  465. package/dist/web/archive.js.map +1 -0
  466. package/dist/web/assets.d.ts +6 -5
  467. package/dist/web/assets.d.ts.map +1 -1
  468. package/dist/web/assets.js +5 -7
  469. package/dist/web/assets.js.map +1 -1
  470. package/dist/web/authors.d.ts +143 -0
  471. package/dist/web/authors.d.ts.map +1 -0
  472. package/dist/web/authors.js +178 -0
  473. package/dist/web/authors.js.map +1 -0
  474. package/dist/web/comments.d.ts +60 -0
  475. package/dist/web/comments.d.ts.map +1 -0
  476. package/dist/web/comments.js +207 -0
  477. package/dist/web/comments.js.map +1 -0
  478. package/dist/web/context.d.ts +162 -28
  479. package/dist/web/context.d.ts.map +1 -1
  480. package/dist/web/context.js +123 -26
  481. package/dist/web/context.js.map +1 -1
  482. package/dist/web/conversation.d.ts +209 -0
  483. package/dist/web/conversation.d.ts.map +1 -0
  484. package/dist/web/conversation.js +557 -0
  485. package/dist/web/conversation.js.map +1 -0
  486. package/dist/web/documents.d.ts +36 -6
  487. package/dist/web/documents.d.ts.map +1 -1
  488. package/dist/web/documents.js +52 -10
  489. package/dist/web/documents.js.map +1 -1
  490. package/dist/web/feed-atom.d.ts +22 -0
  491. package/dist/web/feed-atom.d.ts.map +1 -0
  492. package/dist/web/feed-atom.js +83 -0
  493. package/dist/web/feed-atom.js.map +1 -0
  494. package/dist/web/feed-item.d.ts +145 -0
  495. package/dist/web/feed-item.d.ts.map +1 -0
  496. package/dist/web/feed-item.js +120 -0
  497. package/dist/web/feed-item.js.map +1 -0
  498. package/dist/web/feed-json.d.ts +79 -0
  499. package/dist/web/feed-json.d.ts.map +1 -0
  500. package/dist/web/feed-json.js +53 -0
  501. package/dist/web/feed-json.js.map +1 -0
  502. package/dist/web/feed-rss.d.ts +26 -0
  503. package/dist/web/feed-rss.d.ts.map +1 -0
  504. package/dist/web/feed-rss.js +203 -0
  505. package/dist/web/feed-rss.js.map +1 -0
  506. package/dist/web/feed-source.d.ts +244 -0
  507. package/dist/web/feed-source.d.ts.map +1 -0
  508. package/dist/web/feed-source.js +201 -0
  509. package/dist/web/feed-source.js.map +1 -0
  510. package/dist/web/feed-xml.d.ts +63 -0
  511. package/dist/web/feed-xml.d.ts.map +1 -0
  512. package/dist/web/feed-xml.js +116 -0
  513. package/dist/web/feed-xml.js.map +1 -0
  514. package/dist/web/feeds.d.ts +31 -96
  515. package/dist/web/feeds.d.ts.map +1 -1
  516. package/dist/web/feeds.js +94 -198
  517. package/dist/web/feeds.js.map +1 -1
  518. package/dist/web/health.d.ts +31 -0
  519. package/dist/web/health.d.ts.map +1 -0
  520. package/dist/web/health.js +44 -0
  521. package/dist/web/health.js.map +1 -0
  522. package/dist/web/index.d.ts +30 -10
  523. package/dist/web/index.d.ts.map +1 -1
  524. package/dist/web/index.js +18 -7
  525. package/dist/web/index.js.map +1 -1
  526. package/dist/web/navigation.d.ts +195 -0
  527. package/dist/web/navigation.d.ts.map +1 -0
  528. package/dist/web/navigation.js +300 -0
  529. package/dist/web/navigation.js.map +1 -0
  530. package/dist/web/negotiate.d.ts +31 -0
  531. package/dist/web/negotiate.d.ts.map +1 -1
  532. package/dist/web/negotiate.js +31 -11
  533. package/dist/web/negotiate.js.map +1 -1
  534. package/dist/web/recent.d.ts +43 -0
  535. package/dist/web/recent.d.ts.map +1 -0
  536. package/dist/web/recent.js +37 -0
  537. package/dist/web/recent.js.map +1 -0
  538. package/dist/web/render.d.ts +203 -9
  539. package/dist/web/render.d.ts.map +1 -1
  540. package/dist/web/render.js +341 -17
  541. package/dist/web/render.js.map +1 -1
  542. package/dist/web/routes.d.ts +25 -8
  543. package/dist/web/routes.d.ts.map +1 -1
  544. package/dist/web/routes.js +854 -93
  545. package/dist/web/routes.js.map +1 -1
  546. package/dist/web/sanitize.d.ts +19 -0
  547. package/dist/web/sanitize.d.ts.map +1 -0
  548. package/dist/web/sanitize.js +272 -0
  549. package/dist/web/sanitize.js.map +1 -0
  550. package/dist/web/search.d.ts +79 -0
  551. package/dist/web/search.d.ts.map +1 -0
  552. package/dist/web/search.js +94 -0
  553. package/dist/web/search.js.map +1 -0
  554. package/dist/web/sitemap.d.ts +120 -0
  555. package/dist/web/sitemap.d.ts.map +1 -0
  556. package/dist/web/sitemap.js +199 -0
  557. package/dist/web/sitemap.js.map +1 -0
  558. package/dist/web/taxonomy.d.ts +152 -0
  559. package/dist/web/taxonomy.d.ts.map +1 -0
  560. package/dist/web/taxonomy.js +237 -0
  561. package/dist/web/taxonomy.js.map +1 -0
  562. package/dist/web/templates.d.ts +54 -16
  563. package/dist/web/templates.d.ts.map +1 -1
  564. package/dist/web/templates.js +109 -28
  565. package/dist/web/templates.js.map +1 -1
  566. package/dist/web/themes.d.ts +226 -0
  567. package/dist/web/themes.d.ts.map +1 -0
  568. package/dist/web/themes.js +314 -0
  569. package/dist/web/themes.js.map +1 -0
  570. package/dist/webmention/discovery.d.ts +51 -0
  571. package/dist/webmention/discovery.d.ts.map +1 -0
  572. package/dist/webmention/discovery.js +176 -0
  573. package/dist/webmention/discovery.js.map +1 -0
  574. package/dist/webmention/html.d.ts +71 -0
  575. package/dist/webmention/html.d.ts.map +1 -0
  576. package/dist/webmention/html.js +285 -0
  577. package/dist/webmention/html.js.map +1 -0
  578. package/dist/webmention/index.d.ts +12 -0
  579. package/dist/webmention/index.d.ts.map +1 -0
  580. package/dist/webmention/index.js +8 -0
  581. package/dist/webmention/index.js.map +1 -0
  582. package/dist/webmention/links.d.ts +18 -0
  583. package/dist/webmention/links.d.ts.map +1 -0
  584. package/dist/webmention/links.js +64 -0
  585. package/dist/webmention/links.js.map +1 -0
  586. package/dist/webmention/microformats.d.ts +93 -0
  587. package/dist/webmention/microformats.d.ts.map +1 -0
  588. package/dist/webmention/microformats.js +376 -0
  589. package/dist/webmention/microformats.js.map +1 -0
  590. package/dist/webmention/receive.d.ts +141 -0
  591. package/dist/webmention/receive.d.ts.map +1 -0
  592. package/dist/webmention/receive.js +264 -0
  593. package/dist/webmention/receive.js.map +1 -0
  594. package/dist/webmention/routes.d.ts +37 -0
  595. package/dist/webmention/routes.d.ts.map +1 -0
  596. package/dist/webmention/routes.js +75 -0
  597. package/dist/webmention/routes.js.map +1 -0
  598. package/dist/webmention/service.d.ts +94 -0
  599. package/dist/webmention/service.d.ts.map +1 -0
  600. package/dist/webmention/service.js +207 -0
  601. package/dist/webmention/service.js.map +1 -0
  602. package/package.json +11 -6
  603. package/templates/site/content/_data/site.json +8 -0
  604. package/templates/site/content/pages/about.md +7 -0
  605. package/templates/site/content/posts/2026-01-01-hello-world.md +5 -3
  606. package/templates/site/geekity.config.ts +11 -1
  607. package/templates/site/tsconfig.json +1 -1
  608. package/themes/default/README.md +1216 -50
  609. package/themes/default/layouts/404.njk +2 -3
  610. package/themes/default/layouts/author.njk +36 -0
  611. package/themes/default/layouts/base.njk +161 -31
  612. package/themes/default/layouts/category.njk +27 -0
  613. package/themes/default/layouts/front-page.njk +56 -0
  614. package/themes/default/layouts/home.njk +17 -1
  615. package/themes/default/layouts/page.njk +57 -5
  616. package/themes/default/layouts/post.njk +78 -19
  617. package/themes/default/layouts/search.njk +57 -0
  618. package/themes/default/layouts/tag.njk +3 -6
  619. package/themes/default/mail/comment-digest.html.njk +37 -0
  620. package/themes/default/mail/comment-digest.subject.njk +3 -0
  621. package/themes/default/mail/comment-digest.txt.njk +40 -0
  622. package/themes/default/mail/comment-pending.html.njk +27 -0
  623. package/themes/default/mail/comment-pending.subject.njk +2 -0
  624. package/themes/default/mail/comment-pending.txt.njk +24 -0
  625. package/themes/default/mail/comment-reply.html.njk +21 -0
  626. package/themes/default/mail/comment-reply.subject.njk +2 -0
  627. package/themes/default/mail/comment-reply.txt.njk +22 -0
  628. package/themes/default/mail/contact-message.html.njk +24 -0
  629. package/themes/default/mail/contact-message.subject.njk +5 -0
  630. package/themes/default/mail/contact-message.txt.njk +20 -0
  631. package/themes/default/mail/password-changed.html.njk +18 -0
  632. package/themes/default/mail/password-changed.subject.njk +2 -0
  633. package/themes/default/mail/password-changed.txt.njk +17 -0
  634. package/themes/default/mail/password-reset.html.njk +22 -0
  635. package/themes/default/mail/password-reset.subject.njk +2 -0
  636. package/themes/default/mail/password-reset.txt.njk +18 -0
  637. package/themes/default/mail/test.html.njk +14 -0
  638. package/themes/default/mail/test.subject.njk +2 -0
  639. package/themes/default/mail/test.txt.njk +12 -0
  640. package/themes/default/partials/archive.njk +27 -0
  641. package/themes/default/partials/bio.njk +71 -0
  642. package/themes/default/partials/comment-form.njk +137 -0
  643. package/themes/default/partials/contact-form.njk +88 -0
  644. package/themes/default/partials/conversation.njk +139 -0
  645. package/themes/default/partials/feeds.njk +26 -0
  646. package/themes/default/partials/jsonld.njk +120 -0
  647. package/themes/default/partials/menu.njk +32 -0
  648. package/themes/default/partials/pagination.njk +12 -6
  649. package/themes/default/partials/post-list.njk +51 -18
  650. package/themes/default/partials/search-form.njk +22 -0
  651. package/themes/default/partials/tags.njk +26 -5
  652. package/themes/default/static/highlight.js +4 -0
  653. package/themes/default/static/style.css +1142 -194
  654. package/themes/default/theme.json +9 -0
  655. package/admin/layouts/federation.njk +0 -145
  656. package/admin/layouts/login.njk +0 -23
  657. package/admin/layouts/settings.njk +0 -116
  658. package/admin/layouts/setup.njk +0 -27
  659. package/admin/layouts/users.njk +0 -91
  660. /package/admin/{layouts/_flash.njk → components/flash.njk} +0 -0
@@ -0,0 +1,65 @@
1
+ import type { MiddlewareHandler } from 'hono';
2
+ import type { GeekityEnv } from '../env.ts';
3
+ /**
4
+ * How long a browser is told to insist on https, in seconds. One year, which
5
+ * is what every preload list asks for.
6
+ */
7
+ export declare const HSTS_MAX_AGE = 31536000;
8
+ /** The value of `Strict-Transport-Security`, sent only under an https base URL. */
9
+ export declare const HSTS_VALUE = "max-age=31536000; includeSubDomains";
10
+ /** Bytes behind one CSP nonce. Sixteen is what the CSP specification asks for. */
11
+ export declare const NONCE_BYTES = 16;
12
+ /**
13
+ * The headers every response gets, admin or not.
14
+ *
15
+ * Deliberately two of them. `nosniff` says the `Content-Type` the CMS sends is
16
+ * the one to believe, which constrains nothing a theme might want to do, and
17
+ * HSTS is about the host rather than the page — the admin and the public site
18
+ * are the same origin, so sending it on one and not the other would be a
19
+ * distinction the browser does not make. Everything else that would tell a
20
+ * browser what a page may load stays off the public site: a theme is somebody
21
+ * else's HTML and the CMS has no business deciding what it may reference.
22
+ */
23
+ export declare const baselineSecurityHeaders: MiddlewareHandler<GeekityEnv>;
24
+ /**
25
+ * The headers an admin response gets, on top of the baseline.
26
+ *
27
+ * A nonce is minted before the handler runs, because the templates put it on
28
+ * the editor's script tag, and the policy naming it is written afterwards, so
29
+ * a handler that replaced the response cannot lose the headers.
30
+ */
31
+ export declare const adminSecurityHeaders: MiddlewareHandler<GeekityEnv>;
32
+ /**
33
+ * One nonce: 128 random bits, fresh for every response.
34
+ *
35
+ * base64url rather than plain base64. CSP's `base64-value` accepts both, and
36
+ * the url alphabet has no `+` or `/`, which are the two characters that would
37
+ * otherwise need escaping every time the value is put in a pattern or a URL.
38
+ */
39
+ export declare function createNonce(): string;
40
+ /**
41
+ * The admin's Content-Security-Policy.
42
+ *
43
+ * Everything the admin loads is its own: the stylesheet and the editor bundle
44
+ * come from `/admin/_static/`, the editor's preview and upload calls are
45
+ * same-origin `fetch`, and the preview frame renders the site's own theme and
46
+ * uploads. So `'self'` is the whole allowlist, with three exceptions worth
47
+ * naming:
48
+ *
49
+ * - `style-src` also carries a per-response nonce. CodeMirror 6 injects its
50
+ * themes as `<style>` elements at runtime through `style-mod`, which is an
51
+ * inline style however it is written; the nonce is threaded to it through
52
+ * `EditorView.cspNonce` so the admin never has to say `'unsafe-inline'`.
53
+ * - `img-src` also allows `data:`, because a preview of a post somebody is
54
+ * writing may hold a data URI image and refusing it would make the preview
55
+ * lie about what publishing would show.
56
+ * - `frame-ancestors` is `'self'` rather than `'none'`: the editor's preview
57
+ * is a `srcdoc` iframe, which inherits this policy, and its ancestor is the
58
+ * admin page itself.
59
+ *
60
+ * There is no inline script at all — the slug and permalink enhancement moved
61
+ * into `admin/static/slug.js` — so `script-src` needs neither a nonce nor
62
+ * `'unsafe-inline'`.
63
+ */
64
+ export declare function adminContentSecurityPolicy(nonce: string): string;
65
+ //# sourceMappingURL=headers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headers.d.ts","sourceRoot":"","sources":["../../src/admin/headers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAG9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAG5C;;;GAGG;AACH,eAAO,MAAM,YAAY,WAAa,CAAC;AAEvC,mFAAmF;AACnF,eAAO,MAAM,UAAU,wCAA+C,CAAC;AAEvE,kFAAkF;AAClF,eAAO,MAAM,WAAW,KAAK,CAAC;AAE9B;;;;;;;;;;GAUG;AACH,eAAO,MAAM,uBAAuB,EAAE,iBAAiB,CAAC,UAAU,CAGjE,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,EAAE,iBAAiB,CAAC,UAAU,CAa9D,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAehE"}
@@ -0,0 +1,104 @@
1
+ import { randomBytes } from 'node:crypto';
2
+ import { usesSecureCookies } from './session.js';
3
+ /**
4
+ * How long a browser is told to insist on https, in seconds. One year, which
5
+ * is what every preload list asks for.
6
+ */
7
+ export const HSTS_MAX_AGE = 31_536_000;
8
+ /** The value of `Strict-Transport-Security`, sent only under an https base URL. */
9
+ export const HSTS_VALUE = `max-age=${HSTS_MAX_AGE}; includeSubDomains`;
10
+ /** Bytes behind one CSP nonce. Sixteen is what the CSP specification asks for. */
11
+ export const NONCE_BYTES = 16;
12
+ /**
13
+ * The headers every response gets, admin or not.
14
+ *
15
+ * Deliberately two of them. `nosniff` says the `Content-Type` the CMS sends is
16
+ * the one to believe, which constrains nothing a theme might want to do, and
17
+ * HSTS is about the host rather than the page — the admin and the public site
18
+ * are the same origin, so sending it on one and not the other would be a
19
+ * distinction the browser does not make. Everything else that would tell a
20
+ * browser what a page may load stays off the public site: a theme is somebody
21
+ * else's HTML and the CMS has no business deciding what it may reference.
22
+ */
23
+ export const baselineSecurityHeaders = async (c, next) => {
24
+ await next();
25
+ applyBaseline(c.res.headers, c.var.config);
26
+ };
27
+ /**
28
+ * The headers an admin response gets, on top of the baseline.
29
+ *
30
+ * A nonce is minted before the handler runs, because the templates put it on
31
+ * the editor's script tag, and the policy naming it is written afterwards, so
32
+ * a handler that replaced the response cannot lose the headers.
33
+ */
34
+ export const adminSecurityHeaders = async (c, next) => {
35
+ const nonce = createNonce();
36
+ c.set('cspNonce', nonce);
37
+ await next();
38
+ const headers = c.res.headers;
39
+ applyBaseline(headers, c.var.config);
40
+ headers.set('Content-Security-Policy', adminContentSecurityPolicy(nonce));
41
+ headers.set('Referrer-Policy', 'same-origin');
42
+ // Not DENY: the editor puts its preview in a sandboxed iframe of its own, and
43
+ // `frame-ancestors 'self'` below is the modern half of the same statement.
44
+ headers.set('X-Frame-Options', 'SAMEORIGIN');
45
+ };
46
+ /**
47
+ * One nonce: 128 random bits, fresh for every response.
48
+ *
49
+ * base64url rather than plain base64. CSP's `base64-value` accepts both, and
50
+ * the url alphabet has no `+` or `/`, which are the two characters that would
51
+ * otherwise need escaping every time the value is put in a pattern or a URL.
52
+ */
53
+ export function createNonce() {
54
+ return randomBytes(NONCE_BYTES).toString('base64url');
55
+ }
56
+ /**
57
+ * The admin's Content-Security-Policy.
58
+ *
59
+ * Everything the admin loads is its own: the stylesheet and the editor bundle
60
+ * come from `/admin/_static/`, the editor's preview and upload calls are
61
+ * same-origin `fetch`, and the preview frame renders the site's own theme and
62
+ * uploads. So `'self'` is the whole allowlist, with three exceptions worth
63
+ * naming:
64
+ *
65
+ * - `style-src` also carries a per-response nonce. CodeMirror 6 injects its
66
+ * themes as `<style>` elements at runtime through `style-mod`, which is an
67
+ * inline style however it is written; the nonce is threaded to it through
68
+ * `EditorView.cspNonce` so the admin never has to say `'unsafe-inline'`.
69
+ * - `img-src` also allows `data:`, because a preview of a post somebody is
70
+ * writing may hold a data URI image and refusing it would make the preview
71
+ * lie about what publishing would show.
72
+ * - `frame-ancestors` is `'self'` rather than `'none'`: the editor's preview
73
+ * is a `srcdoc` iframe, which inherits this policy, and its ancestor is the
74
+ * admin page itself.
75
+ *
76
+ * There is no inline script at all — the slug and permalink enhancement moved
77
+ * into `admin/static/slug.js` — so `script-src` needs neither a nonce nor
78
+ * `'unsafe-inline'`.
79
+ */
80
+ export function adminContentSecurityPolicy(nonce) {
81
+ return [
82
+ "default-src 'self'",
83
+ "base-uri 'self'",
84
+ "form-action 'self'",
85
+ "frame-ancestors 'self'",
86
+ "object-src 'none'",
87
+ "script-src 'self'",
88
+ `style-src 'self' 'nonce-${nonce}'`,
89
+ "img-src 'self' data:",
90
+ "font-src 'self' data:",
91
+ "media-src 'self'",
92
+ "connect-src 'self'",
93
+ "frame-src 'self'",
94
+ ].join('; ');
95
+ }
96
+ /** The two headers every response carries. */
97
+ function applyBaseline(headers, config) {
98
+ headers.set('X-Content-Type-Options', 'nosniff');
99
+ // The same test the session cookie's `Secure` uses, so the two can never
100
+ // disagree about whether the site is served over https.
101
+ if (usesSecureCookies(config))
102
+ headers.set('Strict-Transport-Security', HSTS_VALUE);
103
+ }
104
+ //# sourceMappingURL=headers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headers.js","sourceRoot":"","sources":["../../src/admin/headers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAM1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CAAC;AAEvC,mFAAmF;AACnF,MAAM,CAAC,MAAM,UAAU,GAAG,WAAW,YAAY,qBAAqB,CAAC;AAEvE,kFAAkF;AAClF,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC;AAE9B;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAkC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;IACtF,MAAM,IAAI,EAAE,CAAC;IACb,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC7C,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAkC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;IACnF,MAAM,KAAK,GAAG,WAAW,EAAE,CAAC;IAC5B,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAEzB,MAAM,IAAI,EAAE,CAAC;IAEb,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;IAC9B,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,0BAA0B,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1E,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;IAC9C,8EAA8E;IAC9E,2EAA2E;IAC3E,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;AAC/C,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,WAAW;IACzB,OAAO,WAAW,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AACxD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,0BAA0B,CAAC,KAAa;IACtD,OAAO;QACL,oBAAoB;QACpB,iBAAiB;QACjB,oBAAoB;QACpB,wBAAwB;QACxB,mBAAmB;QACnB,mBAAmB;QACnB,2BAA2B,KAAK,GAAG;QACnC,sBAAsB;QACtB,uBAAuB;QACvB,kBAAkB;QAClB,oBAAoB;QACpB,kBAAkB;KACnB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,8CAA8C;AAC9C,SAAS,aAAa,CAAC,OAAgB,EAAE,MAAsB;IAC7D,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,SAAS,CAAC,CAAC;IACjD,yEAAyE;IACzE,wDAAwD;IACxD,IAAI,iBAAiB,CAAC,MAAM,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,UAAU,CAAC,CAAC;AACtF,CAAC"}
@@ -1,23 +1,49 @@
1
1
  export { ADMIN_ASSET_MAX_AGE, ADMIN_ASSET_PREFIX, ADMIN_STATIC_DIR, adminAssetResponse, findAdminAsset, } from './assets.ts';
2
- export { credentialProblem, MAXIMUM_USERNAME_LENGTH, MINIMUM_PASSWORD_LENGTH, passwordProblem, USERNAME_PATTERN, usernameProblem, } from './credentials.ts';
2
+ export { countUsers, createUser, deleteUser, DuplicateUsernameError, findUser, findUserById, findUserByIdentifier, listUsers, primaryUser, migrateUsersToFile, cleanProfile, setUserEmail, setUserPassword, setUserProfile, setUserWordPressActor, ConflictingActorIdError, UnknownUserError, USERS_FILE, USERS_FILE_MODE, usersFile, verifyUserPassword, } from './accounts.ts';
3
+ export type { CreateUserInput, ProfileLink, StoredUser, User, UserProfile } from './accounts.ts';
4
+ export { credentialProblem, emailProblem, MAXIMUM_USERNAME_LENGTH, MINIMUM_PASSWORD_LENGTH, passwordProblem, USERNAME_PATTERN, usernameProblem, } from './credentials.ts';
3
5
  export { blankForm, DOCUMENT_FILTERS, DOCUMENTS_PER_PAGE, documentFilter, editorPath, EXCLUDE_KEY, findBySlug, formFor, listingUrl, listOptionsFor, mountDocumentScreens, newEditorPath, PAGE_KIND, POST_KIND, returnPath, splitTags, } from './documents.ts';
4
6
  export type { AdminRender, DocumentFilter, DocumentKind, DocumentRow, EditorForm, MountDocumentScreensOptions, } from './documents.ts';
5
- export { actorSummary, deliveryRows, FEDERATION_FIELDS, FEDERATION_PATH, FEDERATION_RECENT, followerRow, INBOX_INTERACTIONS, inboxRows, localPosts, mountFederationScreen, REDELIVER_PATH, redeliveryMessage, } from './federation.ts';
6
- export type { ActorSummary, DeliveryRow, DeliveryRowsContext, FollowerRow, InboxRow, InboxRowsContext, LocalPost, MountFederationScreenOptions, } from './federation.ts';
7
+ export { applyTermChange, CATEGORY_KIND, deletePath, mountTaxonomyScreens, renamePath, renameProblem, rewriteTerm, TAG_KIND, TAXONOMY_FIELDS, TAXONOMY_KINDS, } from './taxonomy.ts';
8
+ export type { MountTaxonomyScreensOptions, TaxonomyKind, TermRewriteReport, TermRow, } from './taxonomy.ts';
9
+ export { actorSummary, deliveryRows, FEDERATION_FIELDS, FEDERATION_PATH, FEDERATION_RECENT, FEDERATION_SETTINGS_PATH, followerRow, INBOX_INTERACTIONS, inboxRows, localPosts, mountFederationScreen, RELAY_RETRY_PATH, RELAY_STATE_LABELS, relayRow, RESEND_PATH, resendMessage, } from './federation.ts';
10
+ export type { ActorSummary, DeliveryRow, DeliveryRowsContext, FollowerRow, InboxRow, InboxRowsContext, LocalPost, MountFederationScreenOptions, RelayRow, } from './federation.ts';
11
+ export { COMMENT_ACTIONS, COMMENT_ADMIN_FIELDS, COMMENT_TABS, COMMENTS_MODERATE_PATH, COMMENTS_PATH, COMMENTS_PER_PAGE, COMMENTS_REPLY_PATH, COMMENTS_SECTION, listUrl as commentListUrl, mountCommentsScreen, pendingComments, } from './comments.ts';
12
+ export type { CommentAction, CommentRow, MountCommentsScreenOptions } from './comments.ts';
13
+ export { MESSAGE_FIELDS, MESSAGE_TABS, MESSAGES_DELETE_PATH, MESSAGES_PATH, MESSAGES_PER_PAGE, MESSAGES_READ_PATH, MESSAGES_SECTION, listUrl as messageListUrl, mountMessagesScreen, unreadMessages, } from './messages.ts';
14
+ export type { MessageRow, MountMessagesScreenOptions } from './messages.ts';
7
15
  export { flash, takeFlash } from './flash.ts';
16
+ export { deleteUpload, describeUpload, listUploads, MEDIA_DELETE_PATH, MEDIA_FIELDS, MEDIA_PATH, MEDIA_PER_PAGE, MEDIA_SECTION, MEDIA_UPLOAD_PATH, mediaPageUrl, mentionsUpload, mountMediaScreen, referencesTo, resolveUpload, } from './media.ts';
17
+ export type { DeleteUploadOptions, MediaFile, MediaReference, MountMediaScreenOptions, RemoveDerived, } from './media.ts';
18
+ export { formatInTimezone } from './formatting.ts';
19
+ export { adminContentSecurityPolicy, adminSecurityHeaders, baselineSecurityHeaders, createNonce, HSTS_MAX_AGE, HSTS_VALUE, NONCE_BYTES, } from './headers.ts';
20
+ export { clientAddress, createLoginThrottle, describeWait, LOCKOUT_GROWTH_LIMIT, loginKeys, } from './throttle.ts';
21
+ export type { LoginThrottle, LoginThrottleOptions } from './throttle.ts';
8
22
  export { mountPreview, PREVIEW_PATH } from './preview.ts';
9
23
  export { ARGON2_PARAMETERS, hashPassword, verifyPasswordHash } from './passwords.ts';
10
- export { ADMIN_SECTIONS, DASHBOARD_RECENT_POSTS, guard, LOGIN_PATH, LOGOUT_PATH, mountAdmin, postEditorPath, QUICK_DRAFT_PATH, SETUP_PATH, } from './routes.ts';
11
- export type { AdminSection } from './routes.ts';
12
- export { ACTOR_HANDLE_PATTERN, ACTOR_TYPES, AVATAR_FIELDS, AVATAR_PATH, AVATAR_REMOVE, DEFAULT_SITE_SETTINGS, effectiveBaseUrl, formFromSettings, mountSettings, profileChanged, readSiteSettings, seedSiteSettings, SETTINGS_FIELDS, SETTINGS_PATH, settingsFromForm, settingsProblems, settingsSiteData, siteDataPath, siteJsonFor, writeSiteJson, writeSiteSettings, } from './settings.ts';
13
- export type { MountSettingsOptions, SettingsField, SettingsForm, SettingsProblems, SiteSettings, } from './settings.ts';
14
- export { addUserProblems, changePasswordProblems, CHANGE_PASSWORD_PATH, deleteUserRefusal, DELETE_USER_PATH, generatePassword, GENERATED_PASSWORD_ALPHABET, GENERATED_PASSWORD_LENGTH, mountUsers, USER_FIELDS, USERS_PATH, } from './users.ts';
24
+ export { DASHBOARD_RECENT_POSTS, guard, LOGIN_PATH, LOGOUT_PATH, mountAdmin, postEditorPath, SETUP_PATH, } from './routes.ts';
25
+ export { ADMIN_SECTIONS, adminMenu, UnknownAdminScreenError } from './menu.ts';
26
+ export type { AdminMenuChild, AdminMenuCurrentChild, AdminMenuSection, AdminScreenLocation, AdminSection, } from './menu.ts';
27
+ export { LANGUAGE_TAG_PATTERN, DEFAULT_SITE_SETTINGS, effectiveBaseUrl, EMAIL_PATTERN, formFromSettings, migrateSettingsToFile, readSiteSettings, SETTINGS_FIELD_NAMES, SETTINGS_FIELDS, SETTINGS_PATH, settingsFromForm, settingsFromSiteJson, settingsProblems, siteDataPath, normalizeRelayInbox, relayList, siteJsonFor, updateSiteSettings, writeSiteJson, } from './settings.ts';
28
+ export type { CarriedSettings, SettingsField, SettingsForm, SettingsProblems, SiteSettings, } from './settings.ts';
29
+ export { bodyField, mountSettingsPage, settingsPagePath, settingsScreen } from './settings-page.ts';
30
+ export type { MountSettingsOptions, SettingsPage, SubmittedBody } from './settings-page.ts';
31
+ export { ALL_SETTINGS_PAGES, mountSettings, SETTINGS_PAGES } from './settings-pages.ts';
32
+ export { GENERAL_SETTINGS } from './settings-general.ts';
33
+ export { READING_SETTINGS } from './settings-reading.ts';
34
+ export { PERMALINKS_SETTINGS } from './settings-permalinks.ts';
35
+ export { AKISMET_FIELDS, AKISMET_PATH, AKISMET_REMOVE, akismetPanel, DISCUSSION_SETTINGS, } from './settings-discussion.ts';
36
+ export { EMAIL_SETTINGS, MAIL_FIELDS, MAIL_PATH, MAIL_REMOVE, MAIL_TEST_FIELDS, MAIL_TEST_PATH, MAIL_TEST_TEMPLATE, mailPanel, } from './settings-email.ts';
37
+ export { FEDERATION_SETTINGS } from './settings-federation.ts';
38
+ export { addUserProblems, changePasswordProblems, CHANGE_PASSWORD_PATH, deleteUserRefusal, DELETE_USER_PATH, generatePassword, GENERATED_PASSWORD_ALPHABET, GENERATED_PASSWORD_LENGTH, mountUsers, USER_EMAIL_PATH, USER_FIELDS, USERS_PATH, } from './users.ts';
15
39
  export type { AddUserProblems, ChangePasswordProblems, MountUsersOptions } from './users.ts';
40
+ export { FORGOT_PATH, mountRecovery, newPasswordProblem, PASSWORD_CHANGED_TEMPLATE, RECOVERY_ANSWER, RECOVERY_FIELDS, RESET_PATH, RESET_TEMPLATE, RESET_TOKEN_LIFETIME_SECONDS, resetLink, } from './recovery.ts';
41
+ export type { MountRecoveryOptions } from './recovery.ts';
16
42
  export { ADMIN_PREFIX, clearSessionCookie, CSRF_FIELD, csrfTokenMatches, SESSION_COOKIE, sessionIdFrom, setSessionCookie, usesSecureCookies, } from './session.ts';
17
- export { ACTOR_KEY_ALGORITHMS, DELIVERY_STATUSES, DuplicateUsernameError, openAdminStore, SESSION_ID_BYTES, } from './store.ts';
18
- export type { ActorKey, ActorKeyAlgorithm, AdminStore, CreateSessionInput, CreateUserInput, Delivery, DeliveryStatus, FlashKind, FlashMessage, Follower, InboxActivity, ListPageOptions, NewActorKey, NewDelivery, NewFollower, NewInboxActivity, NewOutboundActivity, OpenAdminStoreOptions, OutboundActivity, Session, StoredUser, User, } from './store.ts';
43
+ export { COMMENT_KINDS, COMMENT_SOURCES, COMMENT_STATUSES, DELIVERY_STATUSES, openAdminStore, RELAY_STATES, SESSION_ID_BYTES, } from './store.ts';
44
+ export type { AdminStore, CommentAuthor, CommentContent, CommentKind, CommentRecord, CommentSource, CommentStatus, ListCommentsOptions, PostComment, CreatePasswordResetInput, CreateSessionInput, Delivery, DeliveryStatus, FlashKind, FlashMessage, Follower, InboxActivity, LegacyActorKey, LegacySetting, LegacyUser, ListPageOptions, NewDelivery, NewFollower, NewInboxActivity, NewRelay, IssuedPasswordReset, OpenAdminStoreOptions, PasswordReset, Relay, RelayState, Session, } from './store.ts';
19
45
  export { ADMIN_TEMPLATES, createAdminTemplateEnvironment, PACKAGED_ADMIN_DIR, } from './templates.ts';
20
46
  export type { CreateAdminTemplateEnvironmentOptions } from './templates.ts';
21
- export { mountUploads, refuseOversizedUpload, refusedUpload, storeUpload, tooLargeMessage, UPLOAD_ENVELOPE_BYTES, UPLOAD_FIELD, UPLOADS_PATH, } from './uploads.ts';
22
- export type { StoredUpload, StoreUploadOptions, UploadConfig, UploadRefusal, UploadResult, } from './uploads.ts';
47
+ export { mountUploads, refuseOversizedUpload, refusedUpload, storeUpload, tooLargeMessage, uploadMarkdown, UPLOAD_ENVELOPE_BYTES, UPLOAD_FIELD, UPLOADS_PATH, } from './uploads.ts';
48
+ export type { StoredUpload, StoreUploadOptions, UploadConfig, UploadMarkdownOptions, UploadRefusal, UploadResult, } from './uploads.ts';
23
49
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/admin/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/admin/index.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,33 @@
1
1
  export { ADMIN_ASSET_MAX_AGE, ADMIN_ASSET_PREFIX, ADMIN_STATIC_DIR, adminAssetResponse, findAdminAsset, } from './assets.js';
2
- export { credentialProblem, MAXIMUM_USERNAME_LENGTH, MINIMUM_PASSWORD_LENGTH, passwordProblem, USERNAME_PATTERN, usernameProblem, } from './credentials.js';
2
+ export { countUsers, createUser, deleteUser, DuplicateUsernameError, findUser, findUserById, findUserByIdentifier, listUsers, primaryUser, migrateUsersToFile, cleanProfile, setUserEmail, setUserPassword, setUserProfile, setUserWordPressActor, ConflictingActorIdError, UnknownUserError, USERS_FILE, USERS_FILE_MODE, usersFile, verifyUserPassword, } from './accounts.js';
3
+ export { credentialProblem, emailProblem, MAXIMUM_USERNAME_LENGTH, MINIMUM_PASSWORD_LENGTH, passwordProblem, USERNAME_PATTERN, usernameProblem, } from './credentials.js';
3
4
  export { blankForm, DOCUMENT_FILTERS, DOCUMENTS_PER_PAGE, documentFilter, editorPath, EXCLUDE_KEY, findBySlug, formFor, listingUrl, listOptionsFor, mountDocumentScreens, newEditorPath, PAGE_KIND, POST_KIND, returnPath, splitTags, } from './documents.js';
4
- export { actorSummary, deliveryRows, FEDERATION_FIELDS, FEDERATION_PATH, FEDERATION_RECENT, followerRow, INBOX_INTERACTIONS, inboxRows, localPosts, mountFederationScreen, REDELIVER_PATH, redeliveryMessage, } from './federation.js';
5
+ export { applyTermChange, CATEGORY_KIND, deletePath, mountTaxonomyScreens, renamePath, renameProblem, rewriteTerm, TAG_KIND, TAXONOMY_FIELDS, TAXONOMY_KINDS, } from './taxonomy.js';
6
+ export { actorSummary, deliveryRows, FEDERATION_FIELDS, FEDERATION_PATH, FEDERATION_RECENT, FEDERATION_SETTINGS_PATH, followerRow, INBOX_INTERACTIONS, inboxRows, localPosts, mountFederationScreen, RELAY_RETRY_PATH, RELAY_STATE_LABELS, relayRow, RESEND_PATH, resendMessage, } from './federation.js';
7
+ export { COMMENT_ACTIONS, COMMENT_ADMIN_FIELDS, COMMENT_TABS, COMMENTS_MODERATE_PATH, COMMENTS_PATH, COMMENTS_PER_PAGE, COMMENTS_REPLY_PATH, COMMENTS_SECTION, listUrl as commentListUrl, mountCommentsScreen, pendingComments, } from './comments.js';
8
+ export { MESSAGE_FIELDS, MESSAGE_TABS, MESSAGES_DELETE_PATH, MESSAGES_PATH, MESSAGES_PER_PAGE, MESSAGES_READ_PATH, MESSAGES_SECTION, listUrl as messageListUrl, mountMessagesScreen, unreadMessages, } from './messages.js';
5
9
  export { flash, takeFlash } from './flash.js';
10
+ export { deleteUpload, describeUpload, listUploads, MEDIA_DELETE_PATH, MEDIA_FIELDS, MEDIA_PATH, MEDIA_PER_PAGE, MEDIA_SECTION, MEDIA_UPLOAD_PATH, mediaPageUrl, mentionsUpload, mountMediaScreen, referencesTo, resolveUpload, } from './media.js';
11
+ export { formatInTimezone } from './formatting.js';
12
+ export { adminContentSecurityPolicy, adminSecurityHeaders, baselineSecurityHeaders, createNonce, HSTS_MAX_AGE, HSTS_VALUE, NONCE_BYTES, } from './headers.js';
13
+ export { clientAddress, createLoginThrottle, describeWait, LOCKOUT_GROWTH_LIMIT, loginKeys, } from './throttle.js';
6
14
  export { mountPreview, PREVIEW_PATH } from './preview.js';
7
15
  export { ARGON2_PARAMETERS, hashPassword, verifyPasswordHash } from './passwords.js';
8
- export { ADMIN_SECTIONS, DASHBOARD_RECENT_POSTS, guard, LOGIN_PATH, LOGOUT_PATH, mountAdmin, postEditorPath, QUICK_DRAFT_PATH, SETUP_PATH, } from './routes.js';
9
- export { ACTOR_HANDLE_PATTERN, ACTOR_TYPES, AVATAR_FIELDS, AVATAR_PATH, AVATAR_REMOVE, DEFAULT_SITE_SETTINGS, effectiveBaseUrl, formFromSettings, mountSettings, profileChanged, readSiteSettings, seedSiteSettings, SETTINGS_FIELDS, SETTINGS_PATH, settingsFromForm, settingsProblems, settingsSiteData, siteDataPath, siteJsonFor, writeSiteJson, writeSiteSettings, } from './settings.js';
10
- export { addUserProblems, changePasswordProblems, CHANGE_PASSWORD_PATH, deleteUserRefusal, DELETE_USER_PATH, generatePassword, GENERATED_PASSWORD_ALPHABET, GENERATED_PASSWORD_LENGTH, mountUsers, USER_FIELDS, USERS_PATH, } from './users.js';
16
+ export { DASHBOARD_RECENT_POSTS, guard, LOGIN_PATH, LOGOUT_PATH, mountAdmin, postEditorPath, SETUP_PATH, } from './routes.js';
17
+ export { ADMIN_SECTIONS, adminMenu, UnknownAdminScreenError } from './menu.js';
18
+ export { LANGUAGE_TAG_PATTERN, DEFAULT_SITE_SETTINGS, effectiveBaseUrl, EMAIL_PATTERN, formFromSettings, migrateSettingsToFile, readSiteSettings, SETTINGS_FIELD_NAMES, SETTINGS_FIELDS, SETTINGS_PATH, settingsFromForm, settingsFromSiteJson, settingsProblems, siteDataPath, normalizeRelayInbox, relayList, siteJsonFor, updateSiteSettings, writeSiteJson, } from './settings.js';
19
+ export { bodyField, mountSettingsPage, settingsPagePath, settingsScreen } from './settings-page.js';
20
+ export { ALL_SETTINGS_PAGES, mountSettings, SETTINGS_PAGES } from './settings-pages.js';
21
+ export { GENERAL_SETTINGS } from './settings-general.js';
22
+ export { READING_SETTINGS } from './settings-reading.js';
23
+ export { PERMALINKS_SETTINGS } from './settings-permalinks.js';
24
+ export { AKISMET_FIELDS, AKISMET_PATH, AKISMET_REMOVE, akismetPanel, DISCUSSION_SETTINGS, } from './settings-discussion.js';
25
+ export { EMAIL_SETTINGS, MAIL_FIELDS, MAIL_PATH, MAIL_REMOVE, MAIL_TEST_FIELDS, MAIL_TEST_PATH, MAIL_TEST_TEMPLATE, mailPanel, } from './settings-email.js';
26
+ export { FEDERATION_SETTINGS } from './settings-federation.js';
27
+ export { addUserProblems, changePasswordProblems, CHANGE_PASSWORD_PATH, deleteUserRefusal, DELETE_USER_PATH, generatePassword, GENERATED_PASSWORD_ALPHABET, GENERATED_PASSWORD_LENGTH, mountUsers, USER_EMAIL_PATH, USER_FIELDS, USERS_PATH, } from './users.js';
28
+ export { FORGOT_PATH, mountRecovery, newPasswordProblem, PASSWORD_CHANGED_TEMPLATE, RECOVERY_ANSWER, RECOVERY_FIELDS, RESET_PATH, RESET_TEMPLATE, RESET_TOKEN_LIFETIME_SECONDS, resetLink, } from './recovery.js';
11
29
  export { ADMIN_PREFIX, clearSessionCookie, CSRF_FIELD, csrfTokenMatches, SESSION_COOKIE, sessionIdFrom, setSessionCookie, usesSecureCookies, } from './session.js';
12
- export { ACTOR_KEY_ALGORITHMS, DELIVERY_STATUSES, DuplicateUsernameError, openAdminStore, SESSION_ID_BYTES, } from './store.js';
30
+ export { COMMENT_KINDS, COMMENT_SOURCES, COMMENT_STATUSES, DELIVERY_STATUSES, openAdminStore, RELAY_STATES, SESSION_ID_BYTES, } from './store.js';
13
31
  export { ADMIN_TEMPLATES, createAdminTemplateEnvironment, PACKAGED_ADMIN_DIR, } from './templates.js';
14
- export { mountUploads, refuseOversizedUpload, refusedUpload, storeUpload, tooLargeMessage, UPLOAD_ENVELOPE_BYTES, UPLOAD_FIELD, UPLOADS_PATH, } from './uploads.js';
32
+ export { mountUploads, refuseOversizedUpload, refusedUpload, storeUpload, tooLargeMessage, uploadMarkdown, UPLOAD_ENVELOPE_BYTES, UPLOAD_FIELD, UPLOADS_PATH, } from './uploads.js';
15
33
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/admin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,uBAAuB,EACvB,eAAe,EACf,gBAAgB,EAChB,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,SAAS,EACT,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,UAAU,EACV,WAAW,EACX,UAAU,EACV,OAAO,EACP,UAAU,EACV,cAAc,EACd,oBAAoB,EACpB,aAAa,EACb,SAAS,EACT,SAAS,EACT,UAAU,EACV,SAAS,GACV,MAAM,gBAAgB,CAAC;AASxB,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,WAAW,EACX,kBAAkB,EAClB,SAAS,EACT,UAAU,EACV,qBAAqB,EACrB,cAAc,EACd,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AAWzB,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACrF,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,KAAK,EACL,UAAU,EACV,WAAW,EACX,UAAU,EACV,cAAc,EACd,gBAAgB,EAChB,UAAU,GACX,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,oBAAoB,EACpB,WAAW,EACX,aAAa,EACb,WAAW,EACX,aAAa,EACb,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,aAAa,EACb,iBAAiB,GAClB,MAAM,eAAe,CAAC;AAQvB,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,2BAA2B,EAC3B,yBAAyB,EACzB,UAAU,EACV,WAAW,EACX,UAAU,GACX,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,EACtB,cAAc,EACd,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAyBpB,OAAO,EACL,eAAe,EACf,8BAA8B,EAC9B,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,aAAa,EACb,WAAW,EACX,eAAe,EACf,qBAAqB,EACrB,YAAY,EACZ,YAAY,GACb,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/admin/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,168 @@
1
+ /**
2
+ * The media screen: what is under `content/uploads/`, what links to it, and
3
+ * the two things that can be done to it — add one, and take one away.
4
+ *
5
+ * The listing is a walk of the directory rather than a query, because the
6
+ * directory is the truth (decision-1, decision-9). Nothing records that a file
7
+ * exists; a file dropped in by hand over ssh, by a git pull, or by an Eleventy
8
+ * build is on the screen the next time it is asked for, and a file taken away
9
+ * the same way is off it. The only thing the index is asked is which documents
10
+ * mention a URL, which is a question a directory cannot answer.
11
+ */
12
+ import type { Hono } from 'hono';
13
+ import type { ContentStore } from '../content/store.ts';
14
+ import type { GeekityEnv } from '../env.ts';
15
+ import type { AdminRender } from './documents.ts';
16
+ /** Where the media screen lives. */
17
+ export declare const MEDIA_PATH = "/admin/media";
18
+ /** The navigation section the screen marks as current. */
19
+ export declare const MEDIA_SECTION = "media";
20
+ /** Where the screen's upload form posts. */
21
+ export declare const MEDIA_UPLOAD_PATH = "/admin/media/upload";
22
+ /** Where a row's Delete button posts. */
23
+ export declare const MEDIA_DELETE_PATH = "/admin/media/delete";
24
+ /** How many files one page of the library shows. */
25
+ export declare const MEDIA_PER_PAGE = 24;
26
+ /** The fields the forms on the media screen submit. */
27
+ export declare const MEDIA_FIELDS: {
28
+ /** The file being added, on the upload form. */
29
+ readonly file: 'file';
30
+ /** The upload being deleted, as a path under `content/uploads/`. */
31
+ readonly path: 'path';
32
+ /** Set once the admin has been shown what still references the file. */
33
+ readonly confirm: 'confirm';
34
+ };
35
+ /** One file under `content/uploads/`, as the screen shows it. */
36
+ export interface MediaFile {
37
+ /**
38
+ * Where it is under `content/uploads/`, with `/` separators — `2026/09/a.png`.
39
+ * This is the file's identity: it is what the delete form carries, and what
40
+ * a variant directory would mirror.
41
+ */
42
+ path: string;
43
+ /** The public URL the site serves it at. */
44
+ url: string;
45
+ /** The last segment of {@link MediaFile.path}. */
46
+ name: string;
47
+ /** Its extension, lower case, with the dot. Empty when it has none. */
48
+ extension: string;
49
+ /** How big it is, in bytes. */
50
+ bytes: number;
51
+ /** When it last changed, as an ISO 8601 instant, which is what sorts the list. */
52
+ modified: string;
53
+ /** Whether a browser will render it as a picture, so the row shows a thumbnail. */
54
+ image: boolean;
55
+ /** The Markdown for it: an embed for an image, a link for anything else. */
56
+ markdown: string;
57
+ }
58
+ /**
59
+ * Every file under `content/uploads/`, newest first.
60
+ *
61
+ * Recursive, because uploads land under `{yyyy}/{mm}/`, and a site that has
62
+ * been copying files in by hand may have any shape at all under there. The
63
+ * order is by modification time rather than by the dated path: the path is
64
+ * only a hint about when a file arrived, and a file dropped in by hand may
65
+ * have no dated path to read.
66
+ *
67
+ * A directory that does not exist yet is an empty library rather than an
68
+ * error — a site that has never uploaded anything has no `uploads/`.
69
+ */
70
+ export declare function listUploads(contentDir: string): Promise<MediaFile[]>;
71
+ /** One upload as the screen shows it, from what a directory walk knows. */
72
+ export declare function describeUpload(relative: string, bytes: number, modified: Date): MediaFile;
73
+ /** One document that mentions an upload, as the confirmation names it. */
74
+ export interface MediaReference {
75
+ /** Path relative to the content directory: what identifies the document. */
76
+ path: string;
77
+ /** Its title, or its path when it has none worth showing. */
78
+ title: string;
79
+ /** Where to edit it. */
80
+ editUrl: string;
81
+ /** Whether it is in the trash rather than the live tree. */
82
+ trashed: boolean;
83
+ }
84
+ /**
85
+ * Every document whose body mentions an upload's URL, trash included.
86
+ *
87
+ * The trash counts. A trashed post can be restored tomorrow, and restoring one
88
+ * whose picture was deleted in the meantime is a broken post nobody was warned
89
+ * about — so a file the trash still points at asks for confirmation exactly as
90
+ * a published one does.
91
+ *
92
+ * This is the one thing on the screen that comes out of the index rather than
93
+ * off the disk. The index is a cache of the files (decision-1), so it may be a
94
+ * moment behind a hand edit; that is acceptable here because the answer is a
95
+ * warning rather than a decision, and the confirmation step is what makes an
96
+ * out-of-date answer harmless in both directions.
97
+ */
98
+ export declare function referencesTo(store: ContentStore, url: string): MediaReference[];
99
+ /**
100
+ * Whether a body points at an upload URL.
101
+ *
102
+ * A substring search with one guard on the end of it: `/uploads/a.png` must not
103
+ * count as a mention of `/uploads/a.pn`, and `/uploads/logo.png` must not count
104
+ * as a mention of `/uploads/logo`. Anything that could still be part of the
105
+ * same filename disqualifies the match; a quote, a bracket, a space or the end
106
+ * of the body ends it.
107
+ *
108
+ * Deliberately blind to whether the mention is Markdown, HTML or prose. All
109
+ * three break when the file goes, and a warning that only understood
110
+ * `![](…)` would be a warning that missed most of them.
111
+ */
112
+ export declare function mentionsUpload(body: string, url: string): boolean;
113
+ /** What {@link deleteUpload} needs to take a file away. */
114
+ export interface DeleteUploadOptions {
115
+ /** The site's content directory. */
116
+ contentDir: string;
117
+ /** The file, as a path under `content/uploads/` with `/` separators. */
118
+ path: string;
119
+ /**
120
+ * Take the file's derived files with it.
121
+ *
122
+ * The original under `content/uploads/` is the only source of truth
123
+ * (decision-10); the image variants beside it are derived, and derived state
124
+ * that outlives what it was derived from is rubbish nobody will ever clean
125
+ * up. The hook is passed the same content-relative path, is awaited before
126
+ * the delete reports success, and is expected to be forgiving: a file with
127
+ * no variants at all is the normal case.
128
+ */
129
+ removeDerived?: RemoveDerived | undefined;
130
+ }
131
+ /** Takes an upload's derived files away with it. See {@link DeleteUploadOptions.removeDerived}. */
132
+ export type RemoveDerived = (uploadPath: string) => Promise<void>;
133
+ /**
134
+ * Delete one upload, and whatever was derived from it.
135
+ *
136
+ * Returns `false` when there was no such file, which is what a second click on
137
+ * a Delete button on a stale page is, rather than throwing: the end state the
138
+ * admin asked for is the end state they have.
139
+ */
140
+ export declare function deleteUpload(options: DeleteUploadOptions): Promise<boolean>;
141
+ /**
142
+ * A submitted path as an absolute file under `content/uploads/`, or
143
+ * `undefined` when it is not one.
144
+ *
145
+ * The path arrives in a form, so it is an attacker's string as much as an
146
+ * admin's. Containment is checked after resolution rather than by inspecting
147
+ * the string, so `..`, an encoded one, or an absolute path cannot slip past —
148
+ * the same rule {@link findAsset} applies to a request for a file.
149
+ */
150
+ export declare function resolveUpload(contentDir: string, relative: string): string | undefined;
151
+ /** What {@link mountMediaScreen} needs from the admin around it. */
152
+ export interface MountMediaScreenOptions {
153
+ /** The admin's renderer, which injects the chrome, the CSRF token and the flash. */
154
+ render: AdminRender;
155
+ /** Passed to every {@link deleteUpload}. See {@link DeleteUploadOptions.removeDerived}. */
156
+ removeDerived?: RemoveDerived | undefined;
157
+ }
158
+ /**
159
+ * Register the media screen: the library, the upload form and the delete.
160
+ *
161
+ * Uploading here is {@link storeUpload}, exactly as the editor's control and
162
+ * the avatar are, so what a site accepts is one answer given in one place
163
+ * rather than three screens that might disagree.
164
+ */
165
+ export declare function mountMediaScreen(app: Hono<GeekityEnv>, options: MountMediaScreenOptions): void;
166
+ /** The URL of one page of the library. Page one is the screen's own URL. */
167
+ export declare function mediaPageUrl(page: number): string;
168
+ //# sourceMappingURL=media.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../src/admin/media.ts"],"names":[],"mappings":"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"}