@geekity/cms 0.31.0 → 0.32.1

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 (759) hide show
  1. package/admin/components/badge.njk +4 -0
  2. package/admin/components/fields.njk +41 -24
  3. package/admin/components/job-status.njk +45 -0
  4. package/admin/components/setting-fields.njk +38 -0
  5. package/admin/layouts/settings-page.njk +16 -0
  6. package/admin/pages/comments/all.njk +1 -2
  7. package/admin/pages/documents/editor.njk +17 -15
  8. package/admin/pages/documents/syndication.njk +4 -4
  9. package/admin/pages/federation/followers.njk +56 -6
  10. package/admin/pages/federation/settings.njk +1 -1
  11. package/admin/pages/media/library.njk +52 -3
  12. package/admin/pages/navigation/menus.njk +2 -2
  13. package/admin/pages/plugins/screen.njk +5 -46
  14. package/admin/pages/settings/discussion.njk +76 -47
  15. package/admin/pages/settings/email.njk +75 -47
  16. package/admin/pages/settings/general.njk +15 -15
  17. package/admin/pages/settings/permalinks.njk +8 -8
  18. package/admin/pages/settings/privacy.njk +6 -6
  19. package/admin/pages/settings/reading.njk +36 -36
  20. package/admin/pages/tools/dev-mode.njk +29 -3
  21. package/admin/pages/tools/export.njk +89 -0
  22. package/admin/pages/tools/maintenance.njk +51 -0
  23. package/admin/pages/users/apps.njk +2 -2
  24. package/admin/pages/users/edit.njk +3 -3
  25. package/admin/pages/users/new.njk +2 -2
  26. package/admin/static/admin.css +80 -0
  27. package/dist/admin/app-activity.d.ts.map +1 -1
  28. package/dist/admin/app-activity.js +2 -3
  29. package/dist/admin/app-activity.js.map +1 -1
  30. package/dist/admin/appearance.d.ts +1 -5
  31. package/dist/admin/appearance.d.ts.map +1 -1
  32. package/dist/admin/appearance.js +9 -16
  33. package/dist/admin/appearance.js.map +1 -1
  34. package/dist/admin/comments.d.ts.map +1 -1
  35. package/dist/admin/comments.js +2 -3
  36. package/dist/admin/comments.js.map +1 -1
  37. package/dist/admin/confirm-password.d.ts +4 -0
  38. package/dist/admin/confirm-password.d.ts.map +1 -0
  39. package/dist/admin/confirm-password.js +11 -0
  40. package/dist/admin/confirm-password.js.map +1 -0
  41. package/dist/admin/connected-apps.d.ts.map +1 -1
  42. package/dist/admin/connected-apps.js +17 -22
  43. package/dist/admin/connected-apps.js.map +1 -1
  44. package/dist/admin/dev-mode.d.ts.map +1 -1
  45. package/dist/admin/dev-mode.js +35 -10
  46. package/dist/admin/dev-mode.js.map +1 -1
  47. package/dist/admin/documents.d.ts.map +1 -1
  48. package/dist/admin/documents.js +22 -10
  49. package/dist/admin/documents.js.map +1 -1
  50. package/dist/admin/editor-actions.d.ts.map +1 -1
  51. package/dist/admin/editor-actions.js +1 -2
  52. package/dist/admin/editor-actions.js.map +1 -1
  53. package/dist/admin/editor-layout.js +1 -1
  54. package/dist/admin/editor-layout.js.map +1 -1
  55. package/dist/admin/export.d.ts +10 -0
  56. package/dist/admin/export.d.ts.map +1 -0
  57. package/dist/admin/export.js +72 -0
  58. package/dist/admin/export.js.map +1 -0
  59. package/dist/admin/federation.d.ts +7 -14
  60. package/dist/admin/federation.d.ts.map +1 -1
  61. package/dist/admin/federation.js +48 -94
  62. package/dist/admin/federation.js.map +1 -1
  63. package/dist/admin/index.d.ts +2 -5
  64. package/dist/admin/index.d.ts.map +1 -1
  65. package/dist/admin/index.js +2 -4
  66. package/dist/admin/index.js.map +1 -1
  67. package/dist/admin/indieauth-consent.d.ts.map +1 -1
  68. package/dist/admin/indieauth-consent.js +5 -7
  69. package/dist/admin/indieauth-consent.js.map +1 -1
  70. package/dist/admin/job-status.d.ts +25 -0
  71. package/dist/admin/job-status.d.ts.map +1 -0
  72. package/dist/admin/job-status.js +53 -0
  73. package/dist/admin/job-status.js.map +1 -0
  74. package/dist/admin/legacy-migrations.d.ts.map +1 -1
  75. package/dist/admin/legacy-migrations.js +7 -6
  76. package/dist/admin/legacy-migrations.js.map +1 -1
  77. package/dist/admin/maintenance.d.ts +9 -0
  78. package/dist/admin/maintenance.d.ts.map +1 -0
  79. package/dist/admin/maintenance.js +42 -0
  80. package/dist/admin/maintenance.js.map +1 -0
  81. package/dist/admin/media.d.ts +4 -1
  82. package/dist/admin/media.d.ts.map +1 -1
  83. package/dist/admin/media.js +16 -1
  84. package/dist/admin/media.js.map +1 -1
  85. package/dist/admin/menu.d.ts.map +1 -1
  86. package/dist/admin/menu.js +4 -0
  87. package/dist/admin/menu.js.map +1 -1
  88. package/dist/admin/messages.d.ts.map +1 -1
  89. package/dist/admin/messages.js +2 -3
  90. package/dist/admin/messages.js.map +1 -1
  91. package/dist/admin/navigation.d.ts.map +1 -1
  92. package/dist/admin/navigation.js +27 -23
  93. package/dist/admin/navigation.js.map +1 -1
  94. package/dist/admin/plugins.d.ts.map +1 -1
  95. package/dist/admin/plugins.js +19 -66
  96. package/dist/admin/plugins.js.map +1 -1
  97. package/dist/admin/preview.d.ts.map +1 -1
  98. package/dist/admin/preview.js +5 -6
  99. package/dist/admin/preview.js.map +1 -1
  100. package/dist/admin/recovery.js +2 -2
  101. package/dist/admin/recovery.js.map +1 -1
  102. package/dist/admin/routes.d.ts.map +1 -1
  103. package/dist/admin/routes.js +6 -3
  104. package/dist/admin/routes.js.map +1 -1
  105. package/dist/admin/setting-overrides.d.ts +4 -0
  106. package/dist/admin/setting-overrides.d.ts.map +1 -0
  107. package/dist/admin/setting-overrides.js +24 -0
  108. package/dist/admin/setting-overrides.js.map +1 -0
  109. package/dist/admin/settings-discussion.d.ts +6 -4
  110. package/dist/admin/settings-discussion.d.ts.map +1 -1
  111. package/dist/admin/settings-discussion.js +75 -45
  112. package/dist/admin/settings-discussion.js.map +1 -1
  113. package/dist/admin/settings-email.d.ts +11 -8
  114. package/dist/admin/settings-email.d.ts.map +1 -1
  115. package/dist/admin/settings-email.js +88 -77
  116. package/dist/admin/settings-email.js.map +1 -1
  117. package/dist/admin/settings-federation.d.ts +0 -7
  118. package/dist/admin/settings-federation.d.ts.map +1 -1
  119. package/dist/admin/settings-federation.js +0 -36
  120. package/dist/admin/settings-federation.js.map +1 -1
  121. package/dist/admin/settings-fields.d.ts +32 -0
  122. package/dist/admin/settings-fields.d.ts.map +1 -0
  123. package/dist/admin/settings-fields.js +368 -0
  124. package/dist/admin/settings-fields.js.map +1 -0
  125. package/dist/admin/settings-general.d.ts.map +1 -1
  126. package/dist/admin/settings-general.js +10 -19
  127. package/dist/admin/settings-general.js.map +1 -1
  128. package/dist/admin/settings-page.d.ts +3 -29
  129. package/dist/admin/settings-page.d.ts.map +1 -1
  130. package/dist/admin/settings-page.js +38 -53
  131. package/dist/admin/settings-page.js.map +1 -1
  132. package/dist/admin/settings-permalinks.js +2 -2
  133. package/dist/admin/settings-permalinks.js.map +1 -1
  134. package/dist/admin/settings-privacy.js +1 -1
  135. package/dist/admin/settings-privacy.js.map +1 -1
  136. package/dist/admin/settings-reading.js +13 -13
  137. package/dist/admin/settings-reading.js.map +1 -1
  138. package/dist/admin/settings-renderer.d.ts +32 -0
  139. package/dist/admin/settings-renderer.d.ts.map +1 -0
  140. package/dist/admin/settings-renderer.js +79 -0
  141. package/dist/admin/settings-renderer.js.map +1 -0
  142. package/dist/admin/site-setting-edit.d.ts +4 -0
  143. package/dist/admin/site-setting-edit.d.ts.map +1 -0
  144. package/dist/admin/site-setting-edit.js +20 -0
  145. package/dist/admin/site-setting-edit.js.map +1 -0
  146. package/dist/admin/taxonomy.d.ts.map +1 -1
  147. package/dist/admin/taxonomy.js +10 -19
  148. package/dist/admin/taxonomy.js.map +1 -1
  149. package/dist/admin/templates.d.ts +2 -0
  150. package/dist/admin/templates.d.ts.map +1 -1
  151. package/dist/admin/templates.js +2 -0
  152. package/dist/admin/templates.js.map +1 -1
  153. package/dist/admin/users.js +1 -1
  154. package/dist/admin/users.js.map +1 -1
  155. package/dist/avatars/avatars.d.ts +0 -2
  156. package/dist/avatars/avatars.d.ts.map +1 -1
  157. package/dist/avatars/avatars.js +9 -10
  158. package/dist/avatars/avatars.js.map +1 -1
  159. package/dist/avatars/index.d.ts +1 -1
  160. package/dist/avatars/index.d.ts.map +1 -1
  161. package/dist/avatars/index.js +1 -1
  162. package/dist/avatars/index.js.map +1 -1
  163. package/dist/cache.d.ts +0 -2
  164. package/dist/cache.d.ts.map +1 -1
  165. package/dist/cache.js +2 -4
  166. package/dist/cache.js.map +1 -1
  167. package/dist/cli.d.ts +1 -1
  168. package/dist/cli.d.ts.map +1 -1
  169. package/dist/cli.js +500 -86
  170. package/dist/cli.js.map +1 -1
  171. package/dist/cms/app.d.ts +1 -1
  172. package/dist/cms/app.d.ts.map +1 -1
  173. package/dist/cms/app.js +13 -2
  174. package/dist/cms/app.js.map +1 -1
  175. package/dist/cms/boot.d.ts +12 -0
  176. package/dist/cms/boot.d.ts.map +1 -1
  177. package/dist/cms/boot.js +43 -17
  178. package/dist/cms/boot.js.map +1 -1
  179. package/dist/cms/create.d.ts +24 -0
  180. package/dist/cms/create.d.ts.map +1 -1
  181. package/dist/cms/create.js +14 -0
  182. package/dist/cms/create.js.map +1 -1
  183. package/dist/cms/services.d.ts +3 -1
  184. package/dist/cms/services.d.ts.map +1 -1
  185. package/dist/cms/services.js +83 -26
  186. package/dist/cms/services.js.map +1 -1
  187. package/dist/cms/site-records.d.ts.map +1 -1
  188. package/dist/cms/site-records.js +0 -2
  189. package/dist/cms/site-records.js.map +1 -1
  190. package/dist/comments/akismet.d.ts +13 -46
  191. package/dist/comments/akismet.d.ts.map +1 -1
  192. package/dist/comments/akismet.js +29 -68
  193. package/dist/comments/akismet.js.map +1 -1
  194. package/dist/comments/conversation.d.ts +14 -8
  195. package/dist/comments/conversation.d.ts.map +1 -1
  196. package/dist/comments/conversation.js.map +1 -1
  197. package/dist/comments/index.d.ts +4 -4
  198. package/dist/comments/index.d.ts.map +1 -1
  199. package/dist/comments/index.js +3 -3
  200. package/dist/comments/index.js.map +1 -1
  201. package/dist/comments/policy.d.ts +23 -26
  202. package/dist/comments/policy.d.ts.map +1 -1
  203. package/dist/comments/policy.js +13 -20
  204. package/dist/comments/policy.js.map +1 -1
  205. package/dist/comments/records.d.ts +0 -2
  206. package/dist/comments/records.d.ts.map +1 -1
  207. package/dist/comments/records.js +2 -3
  208. package/dist/comments/records.js.map +1 -1
  209. package/dist/comments/reply-notices.d.ts +5 -6
  210. package/dist/comments/reply-notices.d.ts.map +1 -1
  211. package/dist/comments/reply-notices.js +27 -15
  212. package/dist/comments/reply-notices.js.map +1 -1
  213. package/dist/comments/reply-post.d.ts.map +1 -1
  214. package/dist/comments/reply-post.js +2 -3
  215. package/dist/comments/reply-post.js.map +1 -1
  216. package/dist/comments/submission.d.ts +0 -2
  217. package/dist/comments/submission.d.ts.map +1 -1
  218. package/dist/comments/submission.js +1 -3
  219. package/dist/comments/submission.js.map +1 -1
  220. package/dist/config-loader.d.ts.map +1 -1
  221. package/dist/config-loader.js +2 -1
  222. package/dist/config-loader.js.map +1 -1
  223. package/dist/config.d.ts +27 -1
  224. package/dist/config.d.ts.map +1 -1
  225. package/dist/config.js +5 -1
  226. package/dist/config.js.map +1 -1
  227. package/dist/contact/delivery.d.ts +2 -4
  228. package/dist/contact/delivery.d.ts.map +1 -1
  229. package/dist/contact/delivery.js +1 -2
  230. package/dist/contact/delivery.js.map +1 -1
  231. package/dist/contact/index.d.ts +1 -1
  232. package/dist/contact/index.d.ts.map +1 -1
  233. package/dist/contact/index.js +1 -1
  234. package/dist/contact/index.js.map +1 -1
  235. package/dist/contact/records.d.ts +0 -2
  236. package/dist/contact/records.d.ts.map +1 -1
  237. package/dist/contact/records.js +3 -5
  238. package/dist/contact/records.js.map +1 -1
  239. package/dist/content/citation.d.ts +1 -0
  240. package/dist/content/citation.d.ts.map +1 -1
  241. package/dist/content/citation.js.map +1 -1
  242. package/dist/content/document-form.d.ts +3 -1
  243. package/dist/content/document-form.d.ts.map +1 -1
  244. package/dist/content/document-form.js.map +1 -1
  245. package/dist/content/enclosure-form.d.ts.map +1 -1
  246. package/dist/content/enclosure-form.js +5 -6
  247. package/dist/content/enclosure-form.js.map +1 -1
  248. package/dist/content/excerpt.d.ts +1 -0
  249. package/dist/content/excerpt.d.ts.map +1 -1
  250. package/dist/content/excerpt.js +3 -0
  251. package/dist/content/excerpt.js.map +1 -1
  252. package/dist/content/index.d.ts +3 -3
  253. package/dist/content/index.d.ts.map +1 -1
  254. package/dist/content/index.js +2 -2
  255. package/dist/content/index.js.map +1 -1
  256. package/dist/content/kept-properties.d.ts +0 -1
  257. package/dist/content/kept-properties.d.ts.map +1 -1
  258. package/dist/content/kept-properties.js +2 -2
  259. package/dist/content/kept-properties.js.map +1 -1
  260. package/dist/content/locations.d.ts +0 -1
  261. package/dist/content/locations.d.ts.map +1 -1
  262. package/dist/content/locations.js +2 -2
  263. package/dist/content/locations.js.map +1 -1
  264. package/dist/content/media.d.ts +7 -0
  265. package/dist/content/media.d.ts.map +1 -1
  266. package/dist/content/media.js +12 -1
  267. package/dist/content/media.js.map +1 -1
  268. package/dist/content/metadata/strip-job.d.ts +16 -0
  269. package/dist/content/metadata/strip-job.d.ts.map +1 -0
  270. package/dist/content/metadata/strip-job.js +24 -0
  271. package/dist/content/metadata/strip-job.js.map +1 -0
  272. package/dist/content/metadata/sweep.d.ts +13 -1
  273. package/dist/content/metadata/sweep.d.ts.map +1 -1
  274. package/dist/content/metadata/sweep.js +47 -25
  275. package/dist/content/metadata/sweep.js.map +1 -1
  276. package/dist/content/permalink-file.d.ts +2 -1
  277. package/dist/content/permalink-file.d.ts.map +1 -1
  278. package/dist/content/permalink-file.js +3 -3
  279. package/dist/content/permalink-file.js.map +1 -1
  280. package/dist/content/photo-form.d.ts +1 -0
  281. package/dist/content/photo-form.d.ts.map +1 -1
  282. package/dist/content/photo-form.js +8 -5
  283. package/dist/content/photo-form.js.map +1 -1
  284. package/dist/content/photo.d.ts +1 -0
  285. package/dist/content/photo.d.ts.map +1 -1
  286. package/dist/content/photo.js +1 -1
  287. package/dist/content/photo.js.map +1 -1
  288. package/dist/content/post-fields.d.ts.map +1 -1
  289. package/dist/content/post-fields.js +5 -9
  290. package/dist/content/post-fields.js.map +1 -1
  291. package/dist/content/read-form.d.ts +10 -3
  292. package/dist/content/read-form.d.ts.map +1 -1
  293. package/dist/content/read-form.js +67 -9
  294. package/dist/content/read-form.js.map +1 -1
  295. package/dist/content/read.d.ts +9 -2
  296. package/dist/content/read.d.ts.map +1 -1
  297. package/dist/content/read.js +22 -3
  298. package/dist/content/read.js.map +1 -1
  299. package/dist/content/store.d.ts +0 -1
  300. package/dist/content/store.d.ts.map +1 -1
  301. package/dist/content/store.js +0 -1
  302. package/dist/content/store.js.map +1 -1
  303. package/dist/content/uploads.d.ts +1 -1
  304. package/dist/content/uploads.d.ts.map +1 -1
  305. package/dist/content/uploads.js +6 -1
  306. package/dist/content/uploads.js.map +1 -1
  307. package/dist/content/write.d.ts +1 -1
  308. package/dist/content/write.d.ts.map +1 -1
  309. package/dist/content/write.js +7 -3
  310. package/dist/content/write.js.map +1 -1
  311. package/dist/dev-mode.d.ts +4 -26
  312. package/dist/dev-mode.d.ts.map +1 -1
  313. package/dist/dev-mode.js +4 -53
  314. package/dist/dev-mode.js.map +1 -1
  315. package/dist/export/export-archives.d.ts +29 -0
  316. package/dist/export/export-archives.d.ts.map +1 -0
  317. package/dist/export/export-archives.js +88 -0
  318. package/dist/export/export-archives.js.map +1 -0
  319. package/dist/export/export-job.d.ts +21 -0
  320. package/dist/export/export-job.d.ts.map +1 -0
  321. package/dist/export/export-job.js +63 -0
  322. package/dist/export/export-job.js.map +1 -0
  323. package/dist/export/site-export.d.ts +101 -0
  324. package/dist/export/site-export.d.ts.map +1 -0
  325. package/dist/export/site-export.js +243 -0
  326. package/dist/export/site-export.js.map +1 -0
  327. package/dist/export/site-import.d.ts +75 -0
  328. package/dist/export/site-import.d.ts.map +1 -0
  329. package/dist/export/site-import.js +492 -0
  330. package/dist/export/site-import.js.map +1 -0
  331. package/dist/exports.d.ts +9 -4
  332. package/dist/exports.d.ts.map +1 -1
  333. package/dist/exports.js +3 -1
  334. package/dist/exports.js.map +1 -1
  335. package/dist/federation/article.d.ts +5 -11
  336. package/dist/federation/article.d.ts.map +1 -1
  337. package/dist/federation/article.js +67 -35
  338. package/dist/federation/article.js.map +1 -1
  339. package/dist/federation/backfill.d.ts +3 -1
  340. package/dist/federation/backfill.d.ts.map +1 -1
  341. package/dist/federation/backfill.js +5 -3
  342. package/dist/federation/backfill.js.map +1 -1
  343. package/dist/federation/cited-post.d.ts +1 -1
  344. package/dist/federation/cited-post.d.ts.map +1 -1
  345. package/dist/federation/cited-post.js +1 -1
  346. package/dist/federation/cited-post.js.map +1 -1
  347. package/dist/federation/delivery.d.ts +5 -2
  348. package/dist/federation/delivery.d.ts.map +1 -1
  349. package/dist/federation/delivery.js +30 -14
  350. package/dist/federation/delivery.js.map +1 -1
  351. package/dist/federation/federation.d.ts +7 -7
  352. package/dist/federation/federation.d.ts.map +1 -1
  353. package/dist/federation/federation.js +6 -13
  354. package/dist/federation/federation.js.map +1 -1
  355. package/dist/federation/handles.d.ts +1 -1
  356. package/dist/federation/handles.d.ts.map +1 -1
  357. package/dist/federation/handles.js +1 -1
  358. package/dist/federation/handles.js.map +1 -1
  359. package/dist/federation/inbox.d.ts.map +1 -1
  360. package/dist/federation/inbox.js +5 -8
  361. package/dist/federation/inbox.js.map +1 -1
  362. package/dist/federation/index.d.ts +1 -0
  363. package/dist/federation/index.d.ts.map +1 -1
  364. package/dist/federation/index.js +1 -0
  365. package/dist/federation/index.js.map +1 -1
  366. package/dist/federation/keys.js +3 -3
  367. package/dist/federation/keys.js.map +1 -1
  368. package/dist/federation/object-ids.d.ts +50 -0
  369. package/dist/federation/object-ids.d.ts.map +1 -0
  370. package/dist/federation/object-ids.js +134 -0
  371. package/dist/federation/object-ids.js.map +1 -0
  372. package/dist/federation/profiles.d.ts +1 -1
  373. package/dist/federation/profiles.d.ts.map +1 -1
  374. package/dist/federation/profiles.js +1 -1
  375. package/dist/federation/profiles.js.map +1 -1
  376. package/dist/federation/queue.d.ts +32 -17
  377. package/dist/federation/queue.d.ts.map +1 -1
  378. package/dist/federation/queue.js +173 -39
  379. package/dist/federation/queue.js.map +1 -1
  380. package/dist/federation/relays.d.ts +6 -2
  381. package/dist/federation/relays.d.ts.map +1 -1
  382. package/dist/federation/relays.js +43 -36
  383. package/dist/federation/relays.js.map +1 -1
  384. package/dist/federation/resend-job.d.ts +44 -0
  385. package/dist/federation/resend-job.d.ts.map +1 -0
  386. package/dist/federation/resend-job.js +59 -0
  387. package/dist/federation/resend-job.js.map +1 -0
  388. package/dist/files/atomic.d.ts +9 -0
  389. package/dist/files/atomic.d.ts.map +1 -1
  390. package/dist/files/atomic.js +1 -1
  391. package/dist/files/atomic.js.map +1 -1
  392. package/dist/files/data-files.d.ts +104 -0
  393. package/dist/files/data-files.d.ts.map +1 -0
  394. package/dist/files/data-files.js +330 -0
  395. package/dist/files/data-files.js.map +1 -0
  396. package/dist/files/export-archives.d.ts +12 -0
  397. package/dist/files/export-archives.d.ts.map +1 -0
  398. package/dist/files/export-archives.js +67 -0
  399. package/dist/files/export-archives.js.map +1 -0
  400. package/dist/files/static-files.d.ts.map +1 -1
  401. package/dist/files/static-files.js +7 -22
  402. package/dist/files/static-files.js.map +1 -1
  403. package/dist/files/tar.d.ts +29 -0
  404. package/dist/files/tar.d.ts.map +1 -0
  405. package/dist/files/tar.js +206 -0
  406. package/dist/files/tar.js.map +1 -0
  407. package/dist/files/upload-types.d.ts +81 -0
  408. package/dist/files/upload-types.d.ts.map +1 -0
  409. package/dist/files/upload-types.js +234 -0
  410. package/dist/files/upload-types.js.map +1 -0
  411. package/dist/forms/protection.d.ts +0 -8
  412. package/dist/forms/protection.d.ts.map +1 -1
  413. package/dist/forms/protection.js +2 -10
  414. package/dist/forms/protection.js.map +1 -1
  415. package/dist/images/icons.d.ts.map +1 -1
  416. package/dist/images/icons.js +2 -0
  417. package/dist/images/icons.js.map +1 -1
  418. package/dist/images/index.d.ts +1 -1
  419. package/dist/images/index.d.ts.map +1 -1
  420. package/dist/images/index.js +1 -1
  421. package/dist/images/index.js.map +1 -1
  422. package/dist/images/markup.d.ts +4 -1
  423. package/dist/images/markup.d.ts.map +1 -1
  424. package/dist/images/markup.js +10 -6
  425. package/dist/images/markup.js.map +1 -1
  426. package/dist/images/paths.d.ts +1 -4
  427. package/dist/images/paths.d.ts.map +1 -1
  428. package/dist/images/paths.js +6 -12
  429. package/dist/images/paths.js.map +1 -1
  430. package/dist/images/variants.d.ts +4 -2
  431. package/dist/images/variants.d.ts.map +1 -1
  432. package/dist/images/variants.js +21 -21
  433. package/dist/images/variants.js.map +1 -1
  434. package/dist/index.d.ts +1 -0
  435. package/dist/index.d.ts.map +1 -1
  436. package/dist/index.js +1 -0
  437. package/dist/index.js.map +1 -1
  438. package/dist/indexnow.d.ts +4 -2
  439. package/dist/indexnow.d.ts.map +1 -1
  440. package/dist/indexnow.js +32 -20
  441. package/dist/indexnow.js.map +1 -1
  442. package/dist/indieauth/tokens.d.ts +0 -2
  443. package/dist/indieauth/tokens.d.ts.map +1 -1
  444. package/dist/indieauth/tokens.js +2 -4
  445. package/dist/indieauth/tokens.js.map +1 -1
  446. package/dist/jobs/file-records.d.ts +13 -0
  447. package/dist/jobs/file-records.d.ts.map +1 -0
  448. package/dist/jobs/file-records.js +104 -0
  449. package/dist/jobs/file-records.js.map +1 -0
  450. package/dist/jobs/in-process.d.ts +10 -0
  451. package/dist/jobs/in-process.d.ts.map +1 -0
  452. package/dist/jobs/in-process.js +45 -0
  453. package/dist/jobs/in-process.js.map +1 -0
  454. package/dist/jobs/lock-file.d.ts +13 -0
  455. package/dist/jobs/lock-file.d.ts.map +1 -0
  456. package/dist/jobs/lock-file.js +107 -0
  457. package/dist/jobs/lock-file.js.map +1 -0
  458. package/dist/jobs/processes.d.ts +11 -0
  459. package/dist/jobs/processes.d.ts.map +1 -0
  460. package/dist/jobs/processes.js +50 -0
  461. package/dist/jobs/processes.js.map +1 -0
  462. package/dist/jobs/queue.d.ts +18 -0
  463. package/dist/jobs/queue.d.ts.map +1 -0
  464. package/dist/jobs/queue.js +220 -0
  465. package/dist/jobs/queue.js.map +1 -0
  466. package/dist/jobs/types.d.ts +159 -0
  467. package/dist/jobs/types.d.ts.map +1 -0
  468. package/dist/jobs/types.js +22 -0
  469. package/dist/jobs/types.js.map +1 -0
  470. package/dist/mail/index.d.ts +0 -2
  471. package/dist/mail/index.d.ts.map +1 -1
  472. package/dist/mail/index.js +0 -1
  473. package/dist/mail/index.js.map +1 -1
  474. package/dist/maintenance.d.ts +5 -42
  475. package/dist/maintenance.d.ts.map +1 -1
  476. package/dist/maintenance.js +4 -67
  477. package/dist/maintenance.js.map +1 -1
  478. package/dist/media/library.d.ts +1 -1
  479. package/dist/media/library.d.ts.map +1 -1
  480. package/dist/media/library.js +4 -1
  481. package/dist/media/library.js.map +1 -1
  482. package/dist/media/uploads.d.ts +1 -1
  483. package/dist/media/uploads.d.ts.map +1 -1
  484. package/dist/media/uploads.js +1 -1
  485. package/dist/media/uploads.js.map +1 -1
  486. package/dist/micropub/endpoint.js +10 -10
  487. package/dist/micropub/endpoint.js.map +1 -1
  488. package/dist/micropub/media.d.ts +0 -2
  489. package/dist/micropub/media.d.ts.map +1 -1
  490. package/dist/micropub/media.js +5 -7
  491. package/dist/micropub/media.js.map +1 -1
  492. package/dist/notifications/comments.d.ts +4 -2
  493. package/dist/notifications/comments.d.ts.map +1 -1
  494. package/dist/notifications/comments.js +77 -65
  495. package/dist/notifications/comments.js.map +1 -1
  496. package/dist/notifications/digest.d.ts +2 -4
  497. package/dist/notifications/digest.d.ts.map +1 -1
  498. package/dist/notifications/digest.js +9 -10
  499. package/dist/notifications/digest.js.map +1 -1
  500. package/dist/notifications/index.d.ts +3 -3
  501. package/dist/notifications/index.d.ts.map +1 -1
  502. package/dist/notifications/index.js +3 -3
  503. package/dist/notifications/index.js.map +1 -1
  504. package/dist/notifications/mail-service.d.ts +10 -8
  505. package/dist/notifications/mail-service.d.ts.map +1 -1
  506. package/dist/notifications/mail-service.js +70 -70
  507. package/dist/notifications/mail-service.js.map +1 -1
  508. package/dist/notifications/optouts.d.ts +0 -2
  509. package/dist/notifications/optouts.d.ts.map +1 -1
  510. package/dist/notifications/optouts.js +2 -4
  511. package/dist/notifications/optouts.js.map +1 -1
  512. package/dist/notifications/tokens.d.ts +0 -2
  513. package/dist/notifications/tokens.d.ts.map +1 -1
  514. package/dist/notifications/tokens.js +2 -28
  515. package/dist/notifications/tokens.js.map +1 -1
  516. package/dist/notify.d.ts +4 -2
  517. package/dist/notify.d.ts.map +1 -1
  518. package/dist/notify.js +27 -15
  519. package/dist/notify.js.map +1 -1
  520. package/dist/plugin.d.ts +36 -16
  521. package/dist/plugin.d.ts.map +1 -1
  522. package/dist/plugin.js +1 -1
  523. package/dist/plugin.js.map +1 -1
  524. package/dist/plugins/changes.d.ts +0 -1
  525. package/dist/plugins/changes.d.ts.map +1 -1
  526. package/dist/plugins/changes.js +2 -3
  527. package/dist/plugins/changes.js.map +1 -1
  528. package/dist/plugins/data.d.ts +19 -0
  529. package/dist/plugins/data.d.ts.map +1 -0
  530. package/dist/plugins/data.js +117 -0
  531. package/dist/plugins/data.js.map +1 -0
  532. package/dist/plugins/enabled.d.ts +1 -13
  533. package/dist/plugins/enabled.d.ts.map +1 -1
  534. package/dist/plugins/enabled.js +11 -23
  535. package/dist/plugins/enabled.js.map +1 -1
  536. package/dist/plugins/install.d.ts +1 -1
  537. package/dist/plugins/install.d.ts.map +1 -1
  538. package/dist/plugins/install.js +7 -42
  539. package/dist/plugins/install.js.map +1 -1
  540. package/dist/plugins/migrate-settings.d.ts +7 -0
  541. package/dist/plugins/migrate-settings.d.ts.map +1 -0
  542. package/dist/plugins/migrate-settings.js +41 -0
  543. package/dist/plugins/migrate-settings.js.map +1 -0
  544. package/dist/plugins/registry.d.ts +10 -14
  545. package/dist/plugins/registry.d.ts.map +1 -1
  546. package/dist/plugins/registry.js +56 -36
  547. package/dist/plugins/registry.js.map +1 -1
  548. package/dist/plugins/settings.d.ts +5 -57
  549. package/dist/plugins/settings.d.ts.map +1 -1
  550. package/dist/plugins/settings.js +47 -180
  551. package/dist/plugins/settings.js.map +1 -1
  552. package/dist/plugins/site.d.ts +2 -1
  553. package/dist/plugins/site.d.ts.map +1 -1
  554. package/dist/plugins/site.js +5 -5
  555. package/dist/plugins/site.js.map +1 -1
  556. package/dist/privacy/retention.d.ts +4 -0
  557. package/dist/privacy/retention.d.ts.map +1 -1
  558. package/dist/privacy/retention.js +12 -5
  559. package/dist/privacy/retention.js.map +1 -1
  560. package/dist/settings/akismet.d.ts +9 -0
  561. package/dist/settings/akismet.d.ts.map +1 -0
  562. package/dist/settings/akismet.js +46 -0
  563. package/dist/settings/akismet.js.map +1 -0
  564. package/dist/settings/declare.d.ts +15 -0
  565. package/dist/settings/declare.d.ts.map +1 -0
  566. package/dist/settings/declare.js +20 -0
  567. package/dist/settings/declare.js.map +1 -0
  568. package/dist/settings/dev-mode.d.ts +29 -0
  569. package/dist/settings/dev-mode.d.ts.map +1 -0
  570. package/dist/settings/dev-mode.js +77 -0
  571. package/dist/settings/dev-mode.js.map +1 -0
  572. package/dist/settings/kinds.d.ts +13 -0
  573. package/dist/settings/kinds.d.ts.map +1 -0
  574. package/dist/settings/kinds.js +108 -0
  575. package/dist/settings/kinds.js.map +1 -0
  576. package/dist/settings/mail.d.ts +10 -0
  577. package/dist/settings/mail.d.ts.map +1 -0
  578. package/dist/settings/mail.js +92 -0
  579. package/dist/settings/mail.js.map +1 -0
  580. package/dist/settings/maintenance.d.ts +6 -0
  581. package/dist/settings/maintenance.d.ts.map +1 -0
  582. package/dist/settings/maintenance.js +33 -0
  583. package/dist/settings/maintenance.js.map +1 -0
  584. package/dist/settings/names.d.ts +7 -0
  585. package/dist/settings/names.d.ts.map +1 -0
  586. package/dist/settings/names.js +31 -0
  587. package/dist/settings/names.js.map +1 -0
  588. package/dist/settings/presence.d.ts +2 -0
  589. package/dist/settings/presence.d.ts.map +1 -0
  590. package/dist/settings/presence.js +7 -0
  591. package/dist/settings/presence.js.map +1 -0
  592. package/dist/settings/registry.d.ts +14 -0
  593. package/dist/settings/registry.d.ts.map +1 -0
  594. package/dist/settings/registry.js +369 -0
  595. package/dist/settings/registry.js.map +1 -0
  596. package/dist/settings/types.d.ts +176 -0
  597. package/dist/settings/types.d.ts.map +1 -0
  598. package/dist/settings/types.js +2 -0
  599. package/dist/settings/types.js.map +1 -0
  600. package/dist/site/namespace.d.ts +88 -0
  601. package/dist/site/namespace.d.ts.map +1 -0
  602. package/dist/site/namespace.js +471 -0
  603. package/dist/site/namespace.js.map +1 -0
  604. package/dist/site/setting-rows.d.ts +9 -10
  605. package/dist/site/setting-rows.d.ts.map +1 -1
  606. package/dist/site/setting-rows.js +109 -228
  607. package/dist/site/setting-rows.js.map +1 -1
  608. package/dist/site/settings-form.d.ts.map +1 -1
  609. package/dist/site/settings-form.js +6 -10
  610. package/dist/site/settings-form.js.map +1 -1
  611. package/dist/site/settings.d.ts +6 -322
  612. package/dist/site/settings.d.ts.map +1 -1
  613. package/dist/site/settings.js +13 -76
  614. package/dist/site/settings.js.map +1 -1
  615. package/dist/site/site-json.d.ts +0 -31
  616. package/dist/site/site-json.d.ts.map +1 -1
  617. package/dist/site/site-json.js +5 -49
  618. package/dist/site/site-json.js.map +1 -1
  619. package/dist/site/users.d.ts +0 -9
  620. package/dist/site/users.d.ts.map +1 -1
  621. package/dist/site/users.js +2 -11
  622. package/dist/site/users.js.map +1 -1
  623. package/dist/store/deliveries.d.ts +2 -0
  624. package/dist/store/deliveries.d.ts.map +1 -1
  625. package/dist/store/deliveries.js +7 -0
  626. package/dist/store/deliveries.js.map +1 -1
  627. package/dist/store/queue-database.d.ts +11 -0
  628. package/dist/store/queue-database.d.ts.map +1 -0
  629. package/dist/store/queue-database.js +39 -0
  630. package/dist/store/queue-database.js.map +1 -0
  631. package/dist/supervisor/control.d.ts +1 -0
  632. package/dist/supervisor/control.d.ts.map +1 -1
  633. package/dist/supervisor/control.js +10 -0
  634. package/dist/supervisor/control.js.map +1 -1
  635. package/dist/supervisor/primary.d.ts.map +1 -1
  636. package/dist/supervisor/primary.js +15 -3
  637. package/dist/supervisor/primary.js.map +1 -1
  638. package/dist/testing.d.ts +1 -1
  639. package/dist/testing.d.ts.map +1 -1
  640. package/dist/testing.js +1 -1
  641. package/dist/testing.js.map +1 -1
  642. package/dist/theme/site-data.d.ts +1 -1
  643. package/dist/theme/site-data.d.ts.map +1 -1
  644. package/dist/theme/site-data.js.map +1 -1
  645. package/dist/web/asset-routes.d.ts +6 -2
  646. package/dist/web/asset-routes.d.ts.map +1 -1
  647. package/dist/web/asset-routes.js +12 -4
  648. package/dist/web/asset-routes.js.map +1 -1
  649. package/dist/web/comment-routes.d.ts.map +1 -1
  650. package/dist/web/comment-routes.js +4 -4
  651. package/dist/web/comment-routes.js.map +1 -1
  652. package/dist/web/contact-routes.js +1 -1
  653. package/dist/web/contact-routes.js.map +1 -1
  654. package/dist/web/context.d.ts +5 -0
  655. package/dist/web/context.d.ts.map +1 -1
  656. package/dist/web/context.js +9 -4
  657. package/dist/web/context.js.map +1 -1
  658. package/dist/web/conversation.d.ts +1 -1
  659. package/dist/web/conversation.d.ts.map +1 -1
  660. package/dist/web/conversation.js +59 -43
  661. package/dist/web/conversation.js.map +1 -1
  662. package/dist/web/document-page.d.ts.map +1 -1
  663. package/dist/web/document-page.js +5 -4
  664. package/dist/web/document-page.js.map +1 -1
  665. package/dist/web/document-site.d.ts +1 -1
  666. package/dist/web/document-site.d.ts.map +1 -1
  667. package/dist/web/document-site.js +2 -1
  668. package/dist/web/document-site.js.map +1 -1
  669. package/dist/web/embed.js +1 -1
  670. package/dist/web/embed.js.map +1 -1
  671. package/dist/web/env.d.ts +9 -0
  672. package/dist/web/env.d.ts.map +1 -1
  673. package/dist/web/federation-routes.d.ts.map +1 -1
  674. package/dist/web/federation-routes.js +5 -2
  675. package/dist/web/federation-routes.js.map +1 -1
  676. package/dist/web/feed-item.js +1 -1
  677. package/dist/web/feed-item.js.map +1 -1
  678. package/dist/web/feed-routes.d.ts +3 -4
  679. package/dist/web/feed-routes.d.ts.map +1 -1
  680. package/dist/web/feed-routes.js +17 -15
  681. package/dist/web/feed-routes.js.map +1 -1
  682. package/dist/web/health.js +1 -1
  683. package/dist/web/health.js.map +1 -1
  684. package/dist/web/index.d.ts +1 -1
  685. package/dist/web/index.d.ts.map +1 -1
  686. package/dist/web/index.js.map +1 -1
  687. package/dist/web/indieauth-activity-log.d.ts +0 -2
  688. package/dist/web/indieauth-activity-log.d.ts.map +1 -1
  689. package/dist/web/indieauth-activity-log.js +2 -4
  690. package/dist/web/indieauth-activity-log.js.map +1 -1
  691. package/dist/web/indieauth-bearer.js +2 -2
  692. package/dist/web/indieauth-bearer.js.map +1 -1
  693. package/dist/web/indieauth-discovery.d.ts +0 -4
  694. package/dist/web/indieauth-discovery.d.ts.map +1 -1
  695. package/dist/web/indieauth-discovery.js +3 -10
  696. package/dist/web/indieauth-discovery.js.map +1 -1
  697. package/dist/web/indieauth-token.d.ts.map +1 -1
  698. package/dist/web/indieauth-token.js +3 -3
  699. package/dist/web/indieauth-token.js.map +1 -1
  700. package/dist/web/listing-pages.d.ts.map +1 -1
  701. package/dist/web/listing-pages.js +1 -2
  702. package/dist/web/listing-pages.js.map +1 -1
  703. package/dist/web/maintenance.js +3 -3
  704. package/dist/web/maintenance.js.map +1 -1
  705. package/dist/web/page-sources.d.ts +1 -2
  706. package/dist/web/page-sources.d.ts.map +1 -1
  707. package/dist/web/page-sources.js +6 -7
  708. package/dist/web/page-sources.js.map +1 -1
  709. package/dist/web/paths.js +1 -1
  710. package/dist/web/paths.js.map +1 -1
  711. package/dist/web/pingback-routes.d.ts.map +1 -1
  712. package/dist/web/pingback-routes.js +3 -3
  713. package/dist/web/pingback-routes.js.map +1 -1
  714. package/dist/web/plugin-federation.js +50 -40
  715. package/dist/web/plugin-federation.js.map +1 -1
  716. package/dist/web/render.d.ts +12 -5
  717. package/dist/web/render.d.ts.map +1 -1
  718. package/dist/web/render.js +36 -22
  719. package/dist/web/render.js.map +1 -1
  720. package/dist/web/request.js +1 -1
  721. package/dist/web/request.js.map +1 -1
  722. package/dist/web/routes.d.ts.map +1 -1
  723. package/dist/web/routes.js +8 -9
  724. package/dist/web/routes.js.map +1 -1
  725. package/dist/web/site-index.d.ts.map +1 -1
  726. package/dist/web/site-index.js +1 -2
  727. package/dist/web/site-index.js.map +1 -1
  728. package/dist/web/site-view.d.ts +0 -2
  729. package/dist/web/site-view.d.ts.map +1 -1
  730. package/dist/web/site-view.js +0 -2
  731. package/dist/web/site-view.js.map +1 -1
  732. package/dist/web/webmention-routes.d.ts.map +1 -1
  733. package/dist/web/webmention-routes.js +2 -2
  734. package/dist/web/webmention-routes.js.map +1 -1
  735. package/dist/web/well-known.d.ts.map +1 -1
  736. package/dist/web/well-known.js +6 -7
  737. package/dist/web/well-known.js.map +1 -1
  738. package/dist/webmention/cited-picture.js +1 -1
  739. package/dist/webmention/cited-picture.js.map +1 -1
  740. package/dist/webmention/pingback.d.ts +1 -8
  741. package/dist/webmention/pingback.d.ts.map +1 -1
  742. package/dist/webmention/pingback.js +2 -11
  743. package/dist/webmention/pingback.js.map +1 -1
  744. package/dist/webmention/receive.d.ts +3 -1
  745. package/dist/webmention/receive.d.ts.map +1 -1
  746. package/dist/webmention/receive.js +5 -3
  747. package/dist/webmention/receive.js.map +1 -1
  748. package/dist/webmention/reply-contexts.d.ts +14 -3
  749. package/dist/webmention/reply-contexts.d.ts.map +1 -1
  750. package/dist/webmention/reply-contexts.js +12 -10
  751. package/dist/webmention/reply-contexts.js.map +1 -1
  752. package/dist/webmention/service.d.ts +3 -1
  753. package/dist/webmention/service.d.ts.map +1 -1
  754. package/dist/webmention/service.js +66 -53
  755. package/dist/webmention/service.js.map +1 -1
  756. package/package.json +13 -11
  757. package/themes/default/partials/post-list.njk +19 -14
  758. package/themes/default/src/style.css +12 -0
  759. package/themes/default/static/style.css +19 -0
@@ -1 +1 @@
1
- {"version":3,"file":"retention.js","sourceRoot":"","sources":["../../src/privacy/retention.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"retention.js","sourceRoot":"","sources":["../../src/privacy/retention.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export declare const AKISMET_KEY_STATUSES: readonly ['valid', 'invalid', 'unchecked'];
2
+ export type AkismetKeyStatus = (typeof AKISMET_KEY_STATUSES)[number];
3
+ export declare const AKISMET_FILE: import("../files/data-files.ts").DataFileDeclaration;
4
+ export declare const AKISMET: import("./types.ts").DeclaredNamespace & {
5
+ readonly key: import("./types.ts").SettingRef<string>;
6
+ readonly status: import("./types.ts").SettingRef<"invalid" | "unchecked" | "valid">;
7
+ readonly checked_at: import("./types.ts").SettingRef<string>;
8
+ };
9
+ //# sourceMappingURL=akismet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"akismet.d.ts","sourceRoot":"","sources":["../../src/settings/akismet.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,oBAAoB,YAAI,OAAO,EAAE,SAAS,EAAE,WAAW,CAAU,CAAC;AAE/E,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAErE,eAAO,MAAM,YAAY,sDAIvB,CAAC;AAEH,eAAO,MAAM,OAAO;;;;CAuBlB,CAAC"}
@@ -0,0 +1,46 @@
1
+ import { declareDataFile } from '../files/data-files.js';
2
+ import { isRecord } from '../util/guards.js';
3
+ import { declareNamespace } from './declare.js';
4
+ import { instantOrEmpty, oneOf, text } from './kinds.js';
5
+ export const AKISMET_KEY_STATUSES = ['valid', 'invalid', 'unchecked'];
6
+ export const AKISMET_FILE = declareDataFile({
7
+ pattern: 'akismet.json',
8
+ dataClass: { kind: 'credential' },
9
+ lost: 'The Akismet key, typed in again on Settings > Discussion.',
10
+ });
11
+ export const AKISMET = declareNamespace({
12
+ namespace: 'akismet',
13
+ storage: { kind: 'file', under: 'data', file: AKISMET_FILE },
14
+ envPrefix: 'GEEKITY_AKISMET',
15
+ legacy: renameCheckedAt,
16
+ settings: {
17
+ key: {
18
+ type: text,
19
+ default: '',
20
+ secret: true,
21
+ description: 'The Akismet API key. Empty sends nothing to Akismet.',
22
+ },
23
+ status: {
24
+ type: oneOf(AKISMET_KEY_STATUSES),
25
+ default: 'unchecked',
26
+ description: 'What Akismet said about the key when it was last checked.',
27
+ },
28
+ checked_at: {
29
+ type: instantOrEmpty,
30
+ default: '',
31
+ description: 'When the key was last checked, as an instant.',
32
+ },
33
+ },
34
+ });
35
+ function renameCheckedAt(raw) {
36
+ if (!isRecord(raw) || !('checkedAt' in raw))
37
+ return raw;
38
+ const { checkedAt, key, status, ...rest } = raw;
39
+ return {
40
+ ...rest,
41
+ key: typeof key === 'string' ? key.trim() : '',
42
+ status: status === 'valid' || status === 'invalid' ? status : 'unchecked',
43
+ checked_at: typeof checkedAt === 'string' ? checkedAt : '',
44
+ };
45
+ }
46
+ //# sourceMappingURL=akismet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"akismet.js","sourceRoot":"","sources":["../../src/settings/akismet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEzD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,CAAU,CAAC;AAI/E,MAAM,CAAC,MAAM,YAAY,GAAG,eAAe,CAAC;IAC1C,OAAO,EAAE,cAAc;IACvB,SAAS,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;IACjC,IAAI,EAAE,2DAA2D;CAClE,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,gBAAgB,CAAC;IACtC,SAAS,EAAE,SAAS;IACpB,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE;IAC5D,SAAS,EAAE,iBAAiB;IAC5B,MAAM,EAAE,eAAe;IACvB,QAAQ,EAAE;QACR,GAAG,EAAE;YACH,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,EAAE;YACX,MAAM,EAAE,IAAI;YACZ,WAAW,EAAE,sDAAsD;SACpE;QACD,MAAM,EAAE;YACN,IAAI,EAAE,KAAK,CAAC,oBAAoB,CAAC;YACjC,OAAO,EAAE,WAAW;YACpB,WAAW,EAAE,2DAA2D;SACzE;QACD,UAAU,EAAE;YACV,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,EAAE;YACX,WAAW,EAAE,+CAA+C;SAC7D;KACF;CACF,CAAC,CAAC;AAEH,SAAS,eAAe,CAAC,GAAY;IACnC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,WAAW,IAAI,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IACxD,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;IAChD,OAAO;QACL,GAAG,IAAI;QACP,GAAG,EAAE,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;QAC9C,MAAM,EAAE,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW;QACzE,UAAU,EAAE,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;KAC3D,CAAC;AACJ,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { DeclaredNamespace, NamespaceDeclaration, FileSpelling, SettingFields, SettingRef, ValuesOf } from './types.ts';
2
+ type SettingInput<V> = Omit<SettingFields<V>, 'key' | 'default'> & FileSpelling & {
3
+ readonly default: NoInfer<V>;
4
+ };
5
+ type RefsOf<S> = {
6
+ readonly [K in keyof S]: SettingRef<S[K]>;
7
+ };
8
+ export declare function declareNamespace<S extends Record<string, unknown>>(input: Omit<NamespaceDeclaration, 'settings'> & {
9
+ readonly settings: {
10
+ readonly [K in keyof S]: SettingInput<S[K]>;
11
+ };
12
+ }): DeclaredNamespace & RefsOf<S>;
13
+ export declare function defaultValues<N extends DeclaredNamespace>(declared: N): ValuesOf<N>;
14
+ export {};
15
+ //# sourceMappingURL=declare.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"declare.d.ts","sourceRoot":"","sources":["../../src/settings/declare.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,iBAAiB,EACjB,oBAAoB,EACpB,YAAY,EACZ,aAAa,EACb,UAAU,EACV,QAAQ,EACT,MAAM,YAAY,CAAC;AAEpB,KAAK,YAAY,CAAC,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC,GAC9D,YAAY,GAAG;IACb,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;CAC9B,CAAC;AAEJ,KAAK,MAAM,CAAC,CAAC,IAAI;IAAE,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC;AAE/D,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChE,KAAK,EAAE,IAAI,CAAC,oBAAoB,EAAE,UAAU,CAAC,GAAG;IAC9C,QAAQ,CAAC,QAAQ,EAAE;QAAE,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAAE,CAAC;CACpE,GACA,iBAAiB,GAAG,MAAM,CAAC,CAAC,CAAC,CAgB/B;AAED,wBAAgB,aAAa,CAAC,CAAC,SAAS,iBAAiB,EAAE,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAInF"}
@@ -0,0 +1,20 @@
1
+ import { SETTING_NAME } from './names.js';
2
+ export function declareNamespace(input) {
3
+ const { settings: inputs, ...rest } = input;
4
+ const settings = Object.entries(inputs).map(([key, each]) => {
5
+ if (!SETTING_NAME.test(key) || key === 'declaration') {
6
+ throw new Error(`${input.namespace}.${key} is not lower case words joined by "_".`);
7
+ }
8
+ return { key, ...each };
9
+ });
10
+ const declaration = { ...rest, settings };
11
+ const refs = Object.fromEntries(settings.map((each) => [
12
+ each.key,
13
+ { namespace: input.namespace, key: each.key, declaration: each },
14
+ ]));
15
+ return { declaration, ...refs };
16
+ }
17
+ export function defaultValues(declared) {
18
+ return Object.fromEntries(declared.declaration.settings.map((each) => [each.key, each.default]));
19
+ }
20
+ //# sourceMappingURL=declare.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"declare.js","sourceRoot":"","sources":["../../src/settings/declare.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAiB1C,MAAM,UAAU,gBAAgB,CAC9B,KAEC;IAED,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IAC5C,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE;QAC1D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;YACrD,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,CAAC,SAAS,IAAI,GAAG,yCAAyC,CAAC,CAAC;QACtF,CAAC;QACD,OAAO,EAAE,GAAG,EAAE,GAAI,IAA8B,EAAE,CAAC;IACrD,CAAC,CAAC,CAAC;IACH,MAAM,WAAW,GAAyB,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,CAAC;IAChE,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAC7B,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG;QACR,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE;KACjE,CAAC,CACH,CAAC;IACF,OAAO,EAAE,WAAW,EAAE,GAAG,IAAI,EAAmC,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,aAAa,CAA8B,QAAW;IACpE,OAAO,MAAM,CAAC,WAAW,CACvB,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CACvD,CAAC;AACnB,CAAC"}
@@ -0,0 +1,29 @@
1
+ import type { SettingsRegistry } from './types.ts';
2
+ export type HeldKind = 'activitypub' | 'webmention' | 'feed-ping' | 'indexnow' | 'mail';
3
+ export interface OutboundEffect {
4
+ readonly kind: HeldKind;
5
+ readonly what: string;
6
+ readonly to: readonly string[];
7
+ }
8
+ export type DevModeRecordSpelling = 'config' | 'command' | 'admin' | 'plugin';
9
+ export type DevModeEntry = {
10
+ readonly type: 'on';
11
+ readonly at: string;
12
+ readonly by: DevModeRecordSpelling;
13
+ } | {
14
+ readonly type: 'off';
15
+ readonly at: string;
16
+ readonly by: DevModeRecordSpelling;
17
+ } | ({
18
+ readonly type: 'held';
19
+ readonly at: string;
20
+ } & OutboundEffect);
21
+ export declare const DEV_MODE_FILE: import("../files/data-files.ts").DataFileDeclaration;
22
+ export declare const DEV_MODE: import("./types.ts").DeclaredNamespace & {
23
+ readonly on: import("./types.ts").SettingRef<boolean>;
24
+ };
25
+ export declare const DEV_MODE_LATCHED = "GEEKITY_DEV_MODE or the devMode setting still asks for dev mode.";
26
+ export declare function latchDevModeOn(settings: SettingsRegistry): void;
27
+ export declare function appendDevModeEntry(dataDir: string, entry: DevModeEntry): void;
28
+ export declare function readDevModeRecord(dataDir: string): DevModeEntry[];
29
+ //# sourceMappingURL=dev-mode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev-mode.d.ts","sourceRoot":"","sources":["../../src/settings/dev-mode.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAA4B,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE7E,MAAM,MAAM,QAAQ,GAAG,aAAa,GAAG,YAAY,GAAG,WAAW,GAAG,UAAU,GAAG,MAAM,CAAC;AAExF,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,SAAS,MAAM,EAAE,CAAC;CAChC;AAED,MAAM,MAAM,qBAAqB,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;AAS9E,MAAM,MAAM,YAAY,GACpB;IAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,qBAAqB,CAAA;CAAE,GAChF;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,qBAAqB,CAAA;CAAE,GACjF,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,cAAc,CAAC,CAAC;AAItE,eAAO,MAAM,aAAa,sDAIxB,CAAC;AAEH,eAAO,MAAM,QAAQ;;CAenB,CAAC;AAEH,eAAO,MAAM,gBAAgB,qEAAqE,CAAC;AAEnG,wBAAgB,cAAc,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAI/D;AAUD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAG7E;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,EAAE,CAajE"}
@@ -0,0 +1,77 @@
1
+ import { appendFileSync, mkdirSync } from 'node:fs';
2
+ import { readFileIfPresentSync } from '../files/atomic.js';
3
+ import { DEV_MODE_RECORD, dataPath, declareDataFile } from '../files/data-files.js';
4
+ import { declareNamespace } from './declare.js';
5
+ import { boolean } from './kinds.js';
6
+ import { presenceMeansOn } from './presence.js';
7
+ const RECORD_SPELLING = {
8
+ boot: 'config',
9
+ cli: 'command',
10
+ admin: 'admin',
11
+ plugin: 'plugin',
12
+ };
13
+ export const DEV_MODE_FILE = declareDataFile({
14
+ pattern: 'dev-mode.json',
15
+ dataClass: { kind: 'kept' },
16
+ lost: 'Dev mode, so a lost file takes the site live.',
17
+ });
18
+ export const DEV_MODE = declareNamespace({
19
+ namespace: 'dev_mode',
20
+ storage: { kind: 'file', under: 'data', file: DEV_MODE_FILE },
21
+ envPrefix: 'GEEKITY_DEV_MODE',
22
+ legacy: presenceMeansOn,
23
+ writtenWhole: true,
24
+ settings: {
25
+ on: {
26
+ type: boolean,
27
+ default: false,
28
+ description: 'Hold every outbound side effect and record it in data/dev-mode.jsonl.',
29
+ env: false,
30
+ onChange: recordGoingOnOrOff,
31
+ },
32
+ },
33
+ });
34
+ export const DEV_MODE_LATCHED = 'GEEKITY_DEV_MODE or the devMode setting still asks for dev mode.';
35
+ export function latchDevModeOn(settings) {
36
+ settings.set('dev_mode', new Map([['on', true]]), 'boot').catch((error) => {
37
+ console.error('Dev mode could not be turned on at boot:', error);
38
+ });
39
+ }
40
+ function recordGoingOnOrOff({ next, at, by, dirs }) {
41
+ appendDevModeEntry(dirs.dataDir, {
42
+ type: next ? 'on' : 'off',
43
+ at: at.toISOString(),
44
+ by: RECORD_SPELLING[by],
45
+ });
46
+ }
47
+ export function appendDevModeEntry(dataDir, entry) {
48
+ mkdirSync(dataDir, { recursive: true });
49
+ appendFileSync(recordFile(dataDir), `${JSON.stringify(entry)}\n`, 'utf8');
50
+ }
51
+ export function readDevModeRecord(dataDir) {
52
+ const text = readFileIfPresentSync(recordFile(dataDir));
53
+ if (text === undefined)
54
+ return [];
55
+ const entries = [];
56
+ for (const line of text.split('\n')) {
57
+ if (line.trim() === '')
58
+ continue;
59
+ try {
60
+ entries.push(fromRecordLine(line));
61
+ }
62
+ catch {
63
+ continue;
64
+ }
65
+ }
66
+ return entries;
67
+ }
68
+ function fromRecordLine(line) {
69
+ const entry = JSON.parse(line);
70
+ if (entry.type === 'off')
71
+ return { type: 'off', at: entry.at, by: entry.by ?? 'command' };
72
+ return entry;
73
+ }
74
+ function recordFile(dataDir) {
75
+ return dataPath(dataDir, DEV_MODE_RECORD);
76
+ }
77
+ //# sourceMappingURL=dev-mode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev-mode.js","sourceRoot":"","sources":["../../src/settings/dev-mode.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { Parsed, SettingType } from './types.ts';
2
+ export declare const boolean: SettingType<boolean>;
3
+ export declare const instantOrEmpty: SettingType<string>;
4
+ export declare const text: SettingType<string>;
5
+ export declare const port: SettingType<number>;
6
+ export declare function oneOf<const T extends string>(choices: readonly T[]): SettingType<T>;
7
+ export declare const nonEmptyText: SettingType<string>;
8
+ export declare const optionalText: SettingType<string>;
9
+ export declare function wholeNumber(min: number, { coerced }?: {
10
+ coerced?: boolean | undefined;
11
+ }): SettingType<number>;
12
+ export declare function jsonValue<V>(fromJson: (raw: unknown) => Parsed<V>, toJson: (value: V) => unknown): SettingType<V>;
13
+ //# sourceMappingURL=kinds.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kinds.d.ts","sourceRoot":"","sources":["../../src/settings/kinds.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAKtD,eAAO,MAAM,OAAO,EAAE,WAAW,CAAC,OAAO,CAaxC,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,MAAM,CAM9C,CAAC;AAaF,eAAO,MAAM,IAAI,EAAE,WAAW,CAAC,MAAM,CAMpC,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,WAAW,CAAC,MAAM,CAKpC,CAAC;AAWF,wBAAgB,KAAK,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,CASnF;AAED,eAAO,MAAM,YAAY,EAAE,WAAW,CAAC,MAAM,CAQ5C,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,WAAW,CAAC,MAAM,CAG5C,CAAC;AAEF,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,OAAe,EAAE;;CAAK,GAAG,WAAW,CAAC,MAAM,CAAC,CAgBtF;AAED,wBAAgB,SAAS,CAAC,CAAC,EACzB,QAAQ,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,EACrC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,GAC5B,WAAW,CAAC,CAAC,CAAC,CAahB"}
@@ -0,0 +1,108 @@
1
+ const TRUE_WORDS = ['1', 'true', 'yes', 'on'];
2
+ const FALSE_WORDS = ['0', 'false', 'no', 'off'];
3
+ export const boolean = {
4
+ fromJson: (raw) => typeof raw === 'boolean'
5
+ ? { ok: true, value: raw }
6
+ : { ok: false, problem: 'must be true or false' },
7
+ fromText(text) {
8
+ const normalized = text.trim().toLowerCase();
9
+ if (TRUE_WORDS.includes(normalized))
10
+ return { ok: true, value: true };
11
+ if (FALSE_WORDS.includes(normalized))
12
+ return { ok: true, value: false };
13
+ return { ok: false, problem: `must be true or false, received ${JSON.stringify(text)}` };
14
+ },
15
+ toJson: (value) => value,
16
+ toText: (value) => String(value),
17
+ };
18
+ export const instantOrEmpty = {
19
+ fromJson: (raw) => typeof raw === 'string' ? instant(raw) : { ok: false, problem: 'must be a time as text' },
20
+ fromText: instant,
21
+ toJson: (value) => value,
22
+ toText: (value) => value,
23
+ };
24
+ function instant(text) {
25
+ if (text.trim() === '')
26
+ return { ok: true, value: '' };
27
+ const date = new Date(text);
28
+ return Number.isNaN(date.getTime())
29
+ ? {
30
+ ok: false,
31
+ problem: `must be a time such as 2026-09-28T14:00:00Z, received ${JSON.stringify(text)}`,
32
+ }
33
+ : { ok: true, value: date.toISOString() };
34
+ }
35
+ export const text = {
36
+ fromJson: (raw) => typeof raw === 'string' ? { ok: true, value: raw } : { ok: false, problem: 'must be text' },
37
+ fromText: (value) => ({ ok: true, value }),
38
+ toJson: (value) => value,
39
+ toText: (value) => value,
40
+ };
41
+ export const port = {
42
+ fromJson: (raw) => portIn(raw),
43
+ fromText: (value) => portIn(value.trim() === '' ? NaN : Number(value), value),
44
+ toJson: (value) => value,
45
+ toText: (value) => String(value),
46
+ };
47
+ function portIn(raw, received = raw) {
48
+ return typeof raw === 'number' && Number.isInteger(raw) && raw >= 1 && raw <= 65535
49
+ ? { ok: true, value: raw }
50
+ : {
51
+ ok: false,
52
+ problem: `must be a whole number between 1 and 65535, received ${JSON.stringify(received)}`,
53
+ };
54
+ }
55
+ export function oneOf(choices) {
56
+ const parse = (raw) => choices.includes(raw)
57
+ ? { ok: true, value: raw }
58
+ : {
59
+ ok: false,
60
+ problem: `must be one of ${choices.join(', ')}, received ${JSON.stringify(raw)}`,
61
+ };
62
+ return { fromJson: parse, fromText: parse, toJson: (value) => value, toText: (value) => value };
63
+ }
64
+ export const nonEmptyText = {
65
+ fromJson: (raw) => typeof raw === 'string' && raw !== ''
66
+ ? { ok: true, value: raw }
67
+ : { ok: false, problem: 'must be text that is not empty' },
68
+ fromText: (value) => nonEmptyText.fromJson(value),
69
+ toJson: (value) => value,
70
+ toText: (value) => value,
71
+ };
72
+ export const optionalText = {
73
+ ...text,
74
+ toJson: (value) => (value === '' ? undefined : value),
75
+ };
76
+ export function wholeNumber(min, { coerced = false } = {}) {
77
+ const parse = (raw, received = raw) => {
78
+ const count = coerced ? Number(raw) : raw;
79
+ return typeof count === 'number' && Number.isInteger(count) && count >= min
80
+ ? { ok: true, value: count }
81
+ : {
82
+ ok: false,
83
+ problem: `must be a whole number of ${String(min)} or more, received ${JSON.stringify(received)}`,
84
+ };
85
+ };
86
+ return {
87
+ fromJson: (raw) => parse(raw),
88
+ fromText: (value) => parse(value.trim() === '' ? NaN : Number(value), value),
89
+ toJson: (value) => value,
90
+ toText: (value) => String(value),
91
+ };
92
+ }
93
+ export function jsonValue(fromJson, toJson) {
94
+ return {
95
+ fromJson,
96
+ fromText(value) {
97
+ try {
98
+ return fromJson(JSON.parse(value));
99
+ }
100
+ catch {
101
+ return { ok: false, problem: `must be JSON, received ${JSON.stringify(value)}` };
102
+ }
103
+ },
104
+ toJson,
105
+ toText: (value) => JSON.stringify(toJson(value) ?? null),
106
+ };
107
+ }
108
+ //# sourceMappingURL=kinds.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kinds.js","sourceRoot":"","sources":["../../src/settings/kinds.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export declare const MAIL_FILE: import("../files/data-files.ts").DataFileDeclaration;
2
+ export declare const MAIL: import("./types.ts").DeclaredNamespace & {
3
+ readonly brevo_api_key: import("./types.ts").SettingRef<string>;
4
+ readonly smtp_host: import("./types.ts").SettingRef<string>;
5
+ readonly smtp_port: import("./types.ts").SettingRef<number>;
6
+ readonly smtp_secure: import("./types.ts").SettingRef<boolean>;
7
+ readonly smtp_user: import("./types.ts").SettingRef<string>;
8
+ readonly smtp_password: import("./types.ts").SettingRef<string>;
9
+ };
10
+ //# sourceMappingURL=mail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mail.d.ts","sourceRoot":"","sources":["../../src/settings/mail.ts"],"names":[],"mappings":"AAyBA,eAAO,MAAM,SAAS,sDAIpB,CAAC;AAEH,eAAO,MAAM,IAAI;;;;;;;CAyCf,CAAC"}
@@ -0,0 +1,92 @@
1
+ import { declareDataFile } from '../files/data-files.js';
2
+ import { isRecord } from '../util/guards.js';
3
+ import { declareNamespace } from './declare.js';
4
+ import { boolean, port, text } from './kinds.js';
5
+ const IMPLICIT_TLS_PORT = 465;
6
+ const SUBMISSION_PORT = 587;
7
+ function tlsMatchesPort(namespaceAfterSet) {
8
+ if ((namespaceAfterSet['smtp_host'] ?? '') === '')
9
+ return undefined;
10
+ if (namespaceAfterSet['smtp_port'] === IMPLICIT_TLS_PORT &&
11
+ namespaceAfterSet['smtp_secure'] !== true) {
12
+ return `mail.smtp_port ${String(IMPLICIT_TLS_PORT)} is TLS from the first byte, so smtp_secure must be true.`;
13
+ }
14
+ if (namespaceAfterSet['smtp_port'] === SUBMISSION_PORT &&
15
+ namespaceAfterSet['smtp_secure'] === true) {
16
+ return `mail.smtp_port ${String(SUBMISSION_PORT)} upgrades with STARTTLS, so smtp_secure must be false.`;
17
+ }
18
+ return undefined;
19
+ }
20
+ export const MAIL_FILE = declareDataFile({
21
+ pattern: 'mail.json',
22
+ dataClass: { kind: 'credential' },
23
+ lost: 'The Brevo key or SMTP login, typed in again on Settings > Email.',
24
+ });
25
+ export const MAIL = declareNamespace({
26
+ namespace: 'mail',
27
+ storage: { kind: 'file', under: 'data', file: MAIL_FILE },
28
+ envPrefix: 'GEEKITY_MAIL',
29
+ legacy: flattenNestedMailFile,
30
+ settings: {
31
+ brevo_api_key: {
32
+ type: text,
33
+ default: '',
34
+ secret: true,
35
+ description: "Brevo's API key, used when the mail provider is brevo.",
36
+ },
37
+ smtp_host: {
38
+ type: text,
39
+ default: '',
40
+ description: 'The SMTP server, used when the mail provider is smtp. Empty means no server.',
41
+ },
42
+ smtp_port: {
43
+ type: port,
44
+ default: SUBMISSION_PORT,
45
+ description: 'The SMTP port: 587 upgrades with STARTTLS, 465 is TLS from the first byte.',
46
+ check: (_value, namespaceAfterSet) => tlsMatchesPort(namespaceAfterSet),
47
+ },
48
+ smtp_secure: {
49
+ type: boolean,
50
+ default: false,
51
+ description: 'Whether the SMTP connection is TLS from the first byte.',
52
+ check: (_value, namespaceAfterSet) => tlsMatchesPort(namespaceAfterSet),
53
+ },
54
+ smtp_user: {
55
+ type: text,
56
+ default: '',
57
+ description: 'The SMTP username. Empty for a server that wants no credentials.',
58
+ },
59
+ smtp_password: {
60
+ type: text,
61
+ default: '',
62
+ secret: true,
63
+ description: 'The SMTP password.',
64
+ },
65
+ },
66
+ });
67
+ function flattenNestedMailFile(raw) {
68
+ if (!isRecord(raw) || !('brevo' in raw || 'smtp' in raw))
69
+ return raw;
70
+ const { brevo, smtp, ...rest } = raw;
71
+ const flat = { ...rest };
72
+ const apiKey = isRecord(brevo) && typeof brevo['apiKey'] === 'string' ? brevo['apiKey'].trim() : '';
73
+ if (apiKey !== '')
74
+ flat['brevo_api_key'] = apiKey;
75
+ const host = isRecord(smtp) && typeof smtp['host'] === 'string' ? smtp['host'].trim() : '';
76
+ if (isRecord(smtp) && host !== '') {
77
+ const secure = smtp['secure'] === true;
78
+ const stored = Number(smtp['port']);
79
+ flat['smtp_host'] = host;
80
+ flat['smtp_port'] =
81
+ Number.isInteger(stored) && stored > 0 && stored < 65536
82
+ ? stored
83
+ : secure
84
+ ? IMPLICIT_TLS_PORT
85
+ : SUBMISSION_PORT;
86
+ flat['smtp_secure'] = secure;
87
+ flat['smtp_user'] = typeof smtp['user'] === 'string' ? smtp['user'] : '';
88
+ flat['smtp_password'] = typeof smtp['password'] === 'string' ? smtp['password'] : '';
89
+ }
90
+ return flat;
91
+ }
92
+ //# sourceMappingURL=mail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mail.js","sourceRoot":"","sources":["../../src/settings/mail.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare const MAINTENANCE_FILE: import("../files/data-files.ts").DataFileDeclaration;
2
+ export declare const MAINTENANCE: import("./types.ts").DeclaredNamespace & {
3
+ readonly on: import("./types.ts").SettingRef<boolean>;
4
+ readonly until: import("./types.ts").SettingRef<string>;
5
+ };
6
+ //# sourceMappingURL=maintenance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maintenance.d.ts","sourceRoot":"","sources":["../../src/settings/maintenance.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,gBAAgB,sDAI3B,CAAC;AAEH,eAAO,MAAM,WAAW;;;CAsBtB,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { declareDataFile } from '../files/data-files.js';
2
+ import { declareNamespace } from './declare.js';
3
+ import { boolean, instantOrEmpty } from './kinds.js';
4
+ import { presenceMeansOn } from './presence.js';
5
+ export const MAINTENANCE_FILE = declareDataFile({
6
+ pattern: 'maintenance.json',
7
+ dataClass: { kind: 'rebuildable' },
8
+ lost: 'Maintenance mode, which falls back to off.',
9
+ });
10
+ export const MAINTENANCE = declareNamespace({
11
+ namespace: 'maintenance',
12
+ storage: { kind: 'file', under: 'data', file: MAINTENANCE_FILE },
13
+ envPrefix: 'GEEKITY_MAINTENANCE',
14
+ legacy: presenceMeansOn,
15
+ writtenWhole: true,
16
+ settings: {
17
+ on: {
18
+ type: boolean,
19
+ default: false,
20
+ description: 'Answer 503 to the public site, feeds and inboxes.',
21
+ override: {
22
+ field: 'maintenance',
23
+ value: (config) => (config.maintenance ? true : undefined),
24
+ },
25
+ },
26
+ until: {
27
+ type: instantOrEmpty,
28
+ default: '',
29
+ description: 'When the site is expected back, as an instant. Sent as Retry-After.',
30
+ },
31
+ },
32
+ });
33
+ //# sourceMappingURL=maintenance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maintenance.js","sourceRoot":"","sources":["../../src/settings/maintenance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,MAAM,CAAC,MAAM,gBAAgB,GAAG,eAAe,CAAC;IAC9C,OAAO,EAAE,kBAAkB;IAC3B,SAAS,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;IAClC,IAAI,EAAE,4CAA4C;CACnD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG,gBAAgB,CAAC;IAC1C,SAAS,EAAE,aAAa;IACxB,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE;IAChE,SAAS,EAAE,qBAAqB;IAChC,MAAM,EAAE,eAAe;IACvB,YAAY,EAAE,IAAI;IAClB,QAAQ,EAAE;QACR,EAAE,EAAE;YACF,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,mDAAmD;YAChE,QAAQ,EAAE;gBACR,KAAK,EAAE,aAAa;gBACpB,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;aAC3D;SACF;QACD,KAAK,EAAE;YACL,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,EAAE;YACX,WAAW,EAAE,qEAAqE;SACnF;KACF;CACF,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ export declare const SETTING_NAME: RegExp;
2
+ export declare const CORE_NAMESPACES: readonly ['site', 'maintenance', 'dev_mode', 'mail', 'akismet'];
3
+ export declare function coreEnvPrefix(namespace: string): string;
4
+ export declare function pluginEnvPrefix(name: string): string;
5
+ export declare function settingVariable(envPrefix: string, key: string): string;
6
+ export declare function reservedNamespaceProblem(namespace: string, envPrefix: string): string | undefined;
7
+ //# sourceMappingURL=names.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"names.d.ts","sourceRoot":"","sources":["../../src/settings/names.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,QAAoC,CAAC;AAE9D,eAAO,MAAM,eAAe,YAAI,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,CAAU,CAAC;AAS/F,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAYjG"}
@@ -0,0 +1,31 @@
1
+ export const SETTING_NAME = /^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$/;
2
+ export const CORE_NAMESPACES = ['site', 'maintenance', 'dev_mode', 'mail', 'akismet'];
3
+ function upperSnake(text) {
4
+ return text
5
+ .toUpperCase()
6
+ .replace(/[^A-Z0-9]+/g, '_')
7
+ .replace(/^_+|_+$/g, '');
8
+ }
9
+ export function coreEnvPrefix(namespace) {
10
+ return `GEEKITY_${upperSnake(namespace)}`;
11
+ }
12
+ export function pluginEnvPrefix(name) {
13
+ return upperSnake(name);
14
+ }
15
+ export function settingVariable(envPrefix, key) {
16
+ return `${envPrefix}__${upperSnake(key)}`;
17
+ }
18
+ export function reservedNamespaceProblem(namespace, envPrefix) {
19
+ if (CORE_NAMESPACES.includes(namespace)) {
20
+ return `The settings namespace ${namespace} is reserved for core settings.`;
21
+ }
22
+ if (envPrefix === 'GEEKITY') {
23
+ return `Its environment variables would start GEEKITY__, which is reserved for core.`;
24
+ }
25
+ const core = CORE_NAMESPACES.find((each) => coreEnvPrefix(each) === envPrefix);
26
+ if (core !== undefined) {
27
+ return `Its environment variables would start ${envPrefix}__, as core's ${core} settings do.`;
28
+ }
29
+ return undefined;
30
+ }
31
+ //# sourceMappingURL=names.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"names.js","sourceRoot":"","sources":["../../src/settings/names.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,iCAAiC,CAAC;AAE9D,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,CAAU,CAAC;AAE/F,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,IAAI;SACR,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,SAAiB;IAC7C,OAAO,WAAW,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,SAAiB,EAAE,GAAW;IAC5D,OAAO,GAAG,SAAS,KAAK,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,SAAiB,EAAE,SAAiB;IAC3E,IAAK,eAAqC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/D,OAAO,0BAA0B,SAAS,iCAAiC,CAAC;IAC9E,CAAC;IACD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,8EAA8E,CAAC;IACxF,CAAC;IACD,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC;IAC/E,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,yCAAyC,SAAS,iBAAiB,IAAI,eAAe,CAAC;IAChG,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function presenceMeansOn(raw: unknown): unknown;
2
+ //# sourceMappingURL=presence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presence.d.ts","sourceRoot":"","sources":["../../src/settings/presence.ts"],"names":[],"mappings":"AAEA,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAGrD"}