@geekity/cms 0.31.0 → 0.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (745) 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 +1 -12
  60. package/dist/admin/federation.d.ts.map +1 -1
  61. package/dist/admin/federation.js +34 -87
  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 +37 -16
  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.map +1 -1
  336. package/dist/federation/article.js +22 -20
  337. package/dist/federation/article.js.map +1 -1
  338. package/dist/federation/backfill.d.ts +3 -1
  339. package/dist/federation/backfill.d.ts.map +1 -1
  340. package/dist/federation/backfill.js +5 -3
  341. package/dist/federation/backfill.js.map +1 -1
  342. package/dist/federation/cited-post.d.ts +1 -1
  343. package/dist/federation/cited-post.d.ts.map +1 -1
  344. package/dist/federation/cited-post.js +1 -1
  345. package/dist/federation/cited-post.js.map +1 -1
  346. package/dist/federation/delivery.d.ts +5 -2
  347. package/dist/federation/delivery.d.ts.map +1 -1
  348. package/dist/federation/delivery.js +16 -12
  349. package/dist/federation/delivery.js.map +1 -1
  350. package/dist/federation/federation.d.ts +7 -7
  351. package/dist/federation/federation.d.ts.map +1 -1
  352. package/dist/federation/federation.js +5 -12
  353. package/dist/federation/federation.js.map +1 -1
  354. package/dist/federation/handles.d.ts +1 -1
  355. package/dist/federation/handles.d.ts.map +1 -1
  356. package/dist/federation/handles.js +1 -1
  357. package/dist/federation/handles.js.map +1 -1
  358. package/dist/federation/inbox.js +1 -1
  359. package/dist/federation/inbox.js.map +1 -1
  360. package/dist/federation/keys.js +3 -3
  361. package/dist/federation/keys.js.map +1 -1
  362. package/dist/federation/profiles.d.ts +1 -1
  363. package/dist/federation/profiles.d.ts.map +1 -1
  364. package/dist/federation/profiles.js +1 -1
  365. package/dist/federation/profiles.js.map +1 -1
  366. package/dist/federation/queue.d.ts +32 -17
  367. package/dist/federation/queue.d.ts.map +1 -1
  368. package/dist/federation/queue.js +173 -39
  369. package/dist/federation/queue.js.map +1 -1
  370. package/dist/federation/relays.d.ts +6 -2
  371. package/dist/federation/relays.d.ts.map +1 -1
  372. package/dist/federation/relays.js +43 -36
  373. package/dist/federation/relays.js.map +1 -1
  374. package/dist/federation/resend-job.d.ts +44 -0
  375. package/dist/federation/resend-job.d.ts.map +1 -0
  376. package/dist/federation/resend-job.js +59 -0
  377. package/dist/federation/resend-job.js.map +1 -0
  378. package/dist/files/atomic.d.ts +9 -0
  379. package/dist/files/atomic.d.ts.map +1 -1
  380. package/dist/files/atomic.js +1 -1
  381. package/dist/files/atomic.js.map +1 -1
  382. package/dist/files/data-files.d.ts +104 -0
  383. package/dist/files/data-files.d.ts.map +1 -0
  384. package/dist/files/data-files.js +330 -0
  385. package/dist/files/data-files.js.map +1 -0
  386. package/dist/files/export-archives.d.ts +12 -0
  387. package/dist/files/export-archives.d.ts.map +1 -0
  388. package/dist/files/export-archives.js +67 -0
  389. package/dist/files/export-archives.js.map +1 -0
  390. package/dist/files/static-files.d.ts.map +1 -1
  391. package/dist/files/static-files.js +7 -22
  392. package/dist/files/static-files.js.map +1 -1
  393. package/dist/files/tar.d.ts +29 -0
  394. package/dist/files/tar.d.ts.map +1 -0
  395. package/dist/files/tar.js +206 -0
  396. package/dist/files/tar.js.map +1 -0
  397. package/dist/files/upload-types.d.ts +81 -0
  398. package/dist/files/upload-types.d.ts.map +1 -0
  399. package/dist/files/upload-types.js +234 -0
  400. package/dist/files/upload-types.js.map +1 -0
  401. package/dist/forms/protection.d.ts +0 -8
  402. package/dist/forms/protection.d.ts.map +1 -1
  403. package/dist/forms/protection.js +2 -10
  404. package/dist/forms/protection.js.map +1 -1
  405. package/dist/images/icons.d.ts.map +1 -1
  406. package/dist/images/icons.js +2 -0
  407. package/dist/images/icons.js.map +1 -1
  408. package/dist/images/index.d.ts +1 -1
  409. package/dist/images/index.d.ts.map +1 -1
  410. package/dist/images/index.js +1 -1
  411. package/dist/images/index.js.map +1 -1
  412. package/dist/images/markup.d.ts +4 -1
  413. package/dist/images/markup.d.ts.map +1 -1
  414. package/dist/images/markup.js +10 -6
  415. package/dist/images/markup.js.map +1 -1
  416. package/dist/images/paths.d.ts +1 -4
  417. package/dist/images/paths.d.ts.map +1 -1
  418. package/dist/images/paths.js +6 -12
  419. package/dist/images/paths.js.map +1 -1
  420. package/dist/images/variants.d.ts +4 -2
  421. package/dist/images/variants.d.ts.map +1 -1
  422. package/dist/images/variants.js +21 -21
  423. package/dist/images/variants.js.map +1 -1
  424. package/dist/index.d.ts +1 -0
  425. package/dist/index.d.ts.map +1 -1
  426. package/dist/index.js +1 -0
  427. package/dist/index.js.map +1 -1
  428. package/dist/indexnow.d.ts +4 -2
  429. package/dist/indexnow.d.ts.map +1 -1
  430. package/dist/indexnow.js +32 -20
  431. package/dist/indexnow.js.map +1 -1
  432. package/dist/indieauth/tokens.d.ts +0 -2
  433. package/dist/indieauth/tokens.d.ts.map +1 -1
  434. package/dist/indieauth/tokens.js +2 -4
  435. package/dist/indieauth/tokens.js.map +1 -1
  436. package/dist/jobs/file-records.d.ts +13 -0
  437. package/dist/jobs/file-records.d.ts.map +1 -0
  438. package/dist/jobs/file-records.js +104 -0
  439. package/dist/jobs/file-records.js.map +1 -0
  440. package/dist/jobs/in-process.d.ts +10 -0
  441. package/dist/jobs/in-process.d.ts.map +1 -0
  442. package/dist/jobs/in-process.js +45 -0
  443. package/dist/jobs/in-process.js.map +1 -0
  444. package/dist/jobs/lock-file.d.ts +13 -0
  445. package/dist/jobs/lock-file.d.ts.map +1 -0
  446. package/dist/jobs/lock-file.js +107 -0
  447. package/dist/jobs/lock-file.js.map +1 -0
  448. package/dist/jobs/processes.d.ts +11 -0
  449. package/dist/jobs/processes.d.ts.map +1 -0
  450. package/dist/jobs/processes.js +50 -0
  451. package/dist/jobs/processes.js.map +1 -0
  452. package/dist/jobs/queue.d.ts +18 -0
  453. package/dist/jobs/queue.d.ts.map +1 -0
  454. package/dist/jobs/queue.js +220 -0
  455. package/dist/jobs/queue.js.map +1 -0
  456. package/dist/jobs/types.d.ts +159 -0
  457. package/dist/jobs/types.d.ts.map +1 -0
  458. package/dist/jobs/types.js +22 -0
  459. package/dist/jobs/types.js.map +1 -0
  460. package/dist/mail/index.d.ts +0 -2
  461. package/dist/mail/index.d.ts.map +1 -1
  462. package/dist/mail/index.js +0 -1
  463. package/dist/mail/index.js.map +1 -1
  464. package/dist/maintenance.d.ts +5 -42
  465. package/dist/maintenance.d.ts.map +1 -1
  466. package/dist/maintenance.js +4 -67
  467. package/dist/maintenance.js.map +1 -1
  468. package/dist/media/library.d.ts +1 -1
  469. package/dist/media/library.d.ts.map +1 -1
  470. package/dist/media/library.js +4 -1
  471. package/dist/media/library.js.map +1 -1
  472. package/dist/media/uploads.d.ts +1 -1
  473. package/dist/media/uploads.d.ts.map +1 -1
  474. package/dist/media/uploads.js +1 -1
  475. package/dist/media/uploads.js.map +1 -1
  476. package/dist/micropub/endpoint.js +10 -10
  477. package/dist/micropub/endpoint.js.map +1 -1
  478. package/dist/micropub/media.d.ts +0 -2
  479. package/dist/micropub/media.d.ts.map +1 -1
  480. package/dist/micropub/media.js +5 -7
  481. package/dist/micropub/media.js.map +1 -1
  482. package/dist/notifications/comments.d.ts +4 -2
  483. package/dist/notifications/comments.d.ts.map +1 -1
  484. package/dist/notifications/comments.js +77 -65
  485. package/dist/notifications/comments.js.map +1 -1
  486. package/dist/notifications/digest.d.ts +2 -4
  487. package/dist/notifications/digest.d.ts.map +1 -1
  488. package/dist/notifications/digest.js +9 -10
  489. package/dist/notifications/digest.js.map +1 -1
  490. package/dist/notifications/index.d.ts +3 -3
  491. package/dist/notifications/index.d.ts.map +1 -1
  492. package/dist/notifications/index.js +3 -3
  493. package/dist/notifications/index.js.map +1 -1
  494. package/dist/notifications/mail-service.d.ts +10 -8
  495. package/dist/notifications/mail-service.d.ts.map +1 -1
  496. package/dist/notifications/mail-service.js +70 -70
  497. package/dist/notifications/mail-service.js.map +1 -1
  498. package/dist/notifications/optouts.d.ts +0 -2
  499. package/dist/notifications/optouts.d.ts.map +1 -1
  500. package/dist/notifications/optouts.js +2 -4
  501. package/dist/notifications/optouts.js.map +1 -1
  502. package/dist/notifications/tokens.d.ts +0 -2
  503. package/dist/notifications/tokens.d.ts.map +1 -1
  504. package/dist/notifications/tokens.js +2 -28
  505. package/dist/notifications/tokens.js.map +1 -1
  506. package/dist/notify.d.ts +4 -2
  507. package/dist/notify.d.ts.map +1 -1
  508. package/dist/notify.js +27 -15
  509. package/dist/notify.js.map +1 -1
  510. package/dist/plugin.d.ts +36 -16
  511. package/dist/plugin.d.ts.map +1 -1
  512. package/dist/plugin.js +1 -1
  513. package/dist/plugin.js.map +1 -1
  514. package/dist/plugins/changes.d.ts +0 -1
  515. package/dist/plugins/changes.d.ts.map +1 -1
  516. package/dist/plugins/changes.js +2 -3
  517. package/dist/plugins/changes.js.map +1 -1
  518. package/dist/plugins/data.d.ts +19 -0
  519. package/dist/plugins/data.d.ts.map +1 -0
  520. package/dist/plugins/data.js +117 -0
  521. package/dist/plugins/data.js.map +1 -0
  522. package/dist/plugins/enabled.d.ts +1 -13
  523. package/dist/plugins/enabled.d.ts.map +1 -1
  524. package/dist/plugins/enabled.js +11 -23
  525. package/dist/plugins/enabled.js.map +1 -1
  526. package/dist/plugins/install.d.ts +1 -1
  527. package/dist/plugins/install.d.ts.map +1 -1
  528. package/dist/plugins/install.js +7 -42
  529. package/dist/plugins/install.js.map +1 -1
  530. package/dist/plugins/migrate-settings.d.ts +7 -0
  531. package/dist/plugins/migrate-settings.d.ts.map +1 -0
  532. package/dist/plugins/migrate-settings.js +41 -0
  533. package/dist/plugins/migrate-settings.js.map +1 -0
  534. package/dist/plugins/registry.d.ts +10 -14
  535. package/dist/plugins/registry.d.ts.map +1 -1
  536. package/dist/plugins/registry.js +56 -36
  537. package/dist/plugins/registry.js.map +1 -1
  538. package/dist/plugins/settings.d.ts +5 -57
  539. package/dist/plugins/settings.d.ts.map +1 -1
  540. package/dist/plugins/settings.js +47 -180
  541. package/dist/plugins/settings.js.map +1 -1
  542. package/dist/plugins/site.d.ts +2 -1
  543. package/dist/plugins/site.d.ts.map +1 -1
  544. package/dist/plugins/site.js +5 -5
  545. package/dist/plugins/site.js.map +1 -1
  546. package/dist/privacy/retention.d.ts +4 -0
  547. package/dist/privacy/retention.d.ts.map +1 -1
  548. package/dist/privacy/retention.js +12 -5
  549. package/dist/privacy/retention.js.map +1 -1
  550. package/dist/settings/akismet.d.ts +9 -0
  551. package/dist/settings/akismet.d.ts.map +1 -0
  552. package/dist/settings/akismet.js +46 -0
  553. package/dist/settings/akismet.js.map +1 -0
  554. package/dist/settings/declare.d.ts +15 -0
  555. package/dist/settings/declare.d.ts.map +1 -0
  556. package/dist/settings/declare.js +20 -0
  557. package/dist/settings/declare.js.map +1 -0
  558. package/dist/settings/dev-mode.d.ts +29 -0
  559. package/dist/settings/dev-mode.d.ts.map +1 -0
  560. package/dist/settings/dev-mode.js +77 -0
  561. package/dist/settings/dev-mode.js.map +1 -0
  562. package/dist/settings/kinds.d.ts +13 -0
  563. package/dist/settings/kinds.d.ts.map +1 -0
  564. package/dist/settings/kinds.js +108 -0
  565. package/dist/settings/kinds.js.map +1 -0
  566. package/dist/settings/mail.d.ts +10 -0
  567. package/dist/settings/mail.d.ts.map +1 -0
  568. package/dist/settings/mail.js +92 -0
  569. package/dist/settings/mail.js.map +1 -0
  570. package/dist/settings/maintenance.d.ts +6 -0
  571. package/dist/settings/maintenance.d.ts.map +1 -0
  572. package/dist/settings/maintenance.js +33 -0
  573. package/dist/settings/maintenance.js.map +1 -0
  574. package/dist/settings/names.d.ts +7 -0
  575. package/dist/settings/names.d.ts.map +1 -0
  576. package/dist/settings/names.js +31 -0
  577. package/dist/settings/names.js.map +1 -0
  578. package/dist/settings/presence.d.ts +2 -0
  579. package/dist/settings/presence.d.ts.map +1 -0
  580. package/dist/settings/presence.js +7 -0
  581. package/dist/settings/presence.js.map +1 -0
  582. package/dist/settings/registry.d.ts +14 -0
  583. package/dist/settings/registry.d.ts.map +1 -0
  584. package/dist/settings/registry.js +369 -0
  585. package/dist/settings/registry.js.map +1 -0
  586. package/dist/settings/types.d.ts +176 -0
  587. package/dist/settings/types.d.ts.map +1 -0
  588. package/dist/settings/types.js +2 -0
  589. package/dist/settings/types.js.map +1 -0
  590. package/dist/site/namespace.d.ts +88 -0
  591. package/dist/site/namespace.d.ts.map +1 -0
  592. package/dist/site/namespace.js +471 -0
  593. package/dist/site/namespace.js.map +1 -0
  594. package/dist/site/setting-rows.d.ts +9 -10
  595. package/dist/site/setting-rows.d.ts.map +1 -1
  596. package/dist/site/setting-rows.js +109 -228
  597. package/dist/site/setting-rows.js.map +1 -1
  598. package/dist/site/settings-form.d.ts.map +1 -1
  599. package/dist/site/settings-form.js +6 -10
  600. package/dist/site/settings-form.js.map +1 -1
  601. package/dist/site/settings.d.ts +6 -322
  602. package/dist/site/settings.d.ts.map +1 -1
  603. package/dist/site/settings.js +13 -76
  604. package/dist/site/settings.js.map +1 -1
  605. package/dist/site/site-json.d.ts +0 -31
  606. package/dist/site/site-json.d.ts.map +1 -1
  607. package/dist/site/site-json.js +5 -49
  608. package/dist/site/site-json.js.map +1 -1
  609. package/dist/site/users.d.ts +0 -9
  610. package/dist/site/users.d.ts.map +1 -1
  611. package/dist/site/users.js +2 -11
  612. package/dist/site/users.js.map +1 -1
  613. package/dist/store/queue-database.d.ts +11 -0
  614. package/dist/store/queue-database.d.ts.map +1 -0
  615. package/dist/store/queue-database.js +39 -0
  616. package/dist/store/queue-database.js.map +1 -0
  617. package/dist/supervisor/control.d.ts +1 -0
  618. package/dist/supervisor/control.d.ts.map +1 -1
  619. package/dist/supervisor/control.js +10 -0
  620. package/dist/supervisor/control.js.map +1 -1
  621. package/dist/supervisor/primary.d.ts.map +1 -1
  622. package/dist/supervisor/primary.js +15 -3
  623. package/dist/supervisor/primary.js.map +1 -1
  624. package/dist/testing.d.ts +1 -1
  625. package/dist/testing.d.ts.map +1 -1
  626. package/dist/testing.js +1 -1
  627. package/dist/testing.js.map +1 -1
  628. package/dist/theme/site-data.d.ts +1 -1
  629. package/dist/theme/site-data.d.ts.map +1 -1
  630. package/dist/theme/site-data.js.map +1 -1
  631. package/dist/web/asset-routes.d.ts +6 -2
  632. package/dist/web/asset-routes.d.ts.map +1 -1
  633. package/dist/web/asset-routes.js +12 -4
  634. package/dist/web/asset-routes.js.map +1 -1
  635. package/dist/web/comment-routes.d.ts.map +1 -1
  636. package/dist/web/comment-routes.js +4 -4
  637. package/dist/web/comment-routes.js.map +1 -1
  638. package/dist/web/contact-routes.js +1 -1
  639. package/dist/web/contact-routes.js.map +1 -1
  640. package/dist/web/context.d.ts +5 -0
  641. package/dist/web/context.d.ts.map +1 -1
  642. package/dist/web/context.js +9 -4
  643. package/dist/web/context.js.map +1 -1
  644. package/dist/web/conversation.d.ts +1 -1
  645. package/dist/web/conversation.d.ts.map +1 -1
  646. package/dist/web/conversation.js +13 -16
  647. package/dist/web/conversation.js.map +1 -1
  648. package/dist/web/document-page.d.ts.map +1 -1
  649. package/dist/web/document-page.js +5 -4
  650. package/dist/web/document-page.js.map +1 -1
  651. package/dist/web/document-site.d.ts +1 -1
  652. package/dist/web/document-site.d.ts.map +1 -1
  653. package/dist/web/document-site.js +2 -1
  654. package/dist/web/document-site.js.map +1 -1
  655. package/dist/web/embed.js +1 -1
  656. package/dist/web/embed.js.map +1 -1
  657. package/dist/web/env.d.ts +9 -0
  658. package/dist/web/env.d.ts.map +1 -1
  659. package/dist/web/federation-routes.d.ts.map +1 -1
  660. package/dist/web/federation-routes.js +3 -1
  661. package/dist/web/federation-routes.js.map +1 -1
  662. package/dist/web/feed-item.js +1 -1
  663. package/dist/web/feed-item.js.map +1 -1
  664. package/dist/web/feed-routes.d.ts +3 -4
  665. package/dist/web/feed-routes.d.ts.map +1 -1
  666. package/dist/web/feed-routes.js +17 -15
  667. package/dist/web/feed-routes.js.map +1 -1
  668. package/dist/web/health.js +1 -1
  669. package/dist/web/health.js.map +1 -1
  670. package/dist/web/index.d.ts +1 -1
  671. package/dist/web/index.d.ts.map +1 -1
  672. package/dist/web/index.js.map +1 -1
  673. package/dist/web/indieauth-activity-log.d.ts +0 -2
  674. package/dist/web/indieauth-activity-log.d.ts.map +1 -1
  675. package/dist/web/indieauth-activity-log.js +2 -4
  676. package/dist/web/indieauth-activity-log.js.map +1 -1
  677. package/dist/web/indieauth-bearer.js +2 -2
  678. package/dist/web/indieauth-bearer.js.map +1 -1
  679. package/dist/web/indieauth-discovery.d.ts +0 -4
  680. package/dist/web/indieauth-discovery.d.ts.map +1 -1
  681. package/dist/web/indieauth-discovery.js +3 -10
  682. package/dist/web/indieauth-discovery.js.map +1 -1
  683. package/dist/web/indieauth-token.d.ts.map +1 -1
  684. package/dist/web/indieauth-token.js +3 -3
  685. package/dist/web/indieauth-token.js.map +1 -1
  686. package/dist/web/listing-pages.d.ts.map +1 -1
  687. package/dist/web/listing-pages.js +1 -2
  688. package/dist/web/listing-pages.js.map +1 -1
  689. package/dist/web/maintenance.js +3 -3
  690. package/dist/web/maintenance.js.map +1 -1
  691. package/dist/web/page-sources.d.ts +1 -2
  692. package/dist/web/page-sources.d.ts.map +1 -1
  693. package/dist/web/page-sources.js +6 -7
  694. package/dist/web/page-sources.js.map +1 -1
  695. package/dist/web/paths.js +1 -1
  696. package/dist/web/paths.js.map +1 -1
  697. package/dist/web/pingback-routes.d.ts.map +1 -1
  698. package/dist/web/pingback-routes.js +3 -3
  699. package/dist/web/pingback-routes.js.map +1 -1
  700. package/dist/web/plugin-federation.js +50 -40
  701. package/dist/web/plugin-federation.js.map +1 -1
  702. package/dist/web/render.d.ts +12 -5
  703. package/dist/web/render.d.ts.map +1 -1
  704. package/dist/web/render.js +31 -21
  705. package/dist/web/render.js.map +1 -1
  706. package/dist/web/request.js +1 -1
  707. package/dist/web/request.js.map +1 -1
  708. package/dist/web/routes.d.ts.map +1 -1
  709. package/dist/web/routes.js +8 -9
  710. package/dist/web/routes.js.map +1 -1
  711. package/dist/web/site-index.d.ts.map +1 -1
  712. package/dist/web/site-index.js +1 -2
  713. package/dist/web/site-index.js.map +1 -1
  714. package/dist/web/site-view.d.ts +0 -2
  715. package/dist/web/site-view.d.ts.map +1 -1
  716. package/dist/web/site-view.js +0 -2
  717. package/dist/web/site-view.js.map +1 -1
  718. package/dist/web/webmention-routes.d.ts.map +1 -1
  719. package/dist/web/webmention-routes.js +2 -2
  720. package/dist/web/webmention-routes.js.map +1 -1
  721. package/dist/web/well-known.d.ts.map +1 -1
  722. package/dist/web/well-known.js +6 -7
  723. package/dist/web/well-known.js.map +1 -1
  724. package/dist/webmention/cited-picture.js +1 -1
  725. package/dist/webmention/cited-picture.js.map +1 -1
  726. package/dist/webmention/pingback.d.ts +1 -8
  727. package/dist/webmention/pingback.d.ts.map +1 -1
  728. package/dist/webmention/pingback.js +2 -11
  729. package/dist/webmention/pingback.js.map +1 -1
  730. package/dist/webmention/receive.d.ts +3 -1
  731. package/dist/webmention/receive.d.ts.map +1 -1
  732. package/dist/webmention/receive.js +5 -3
  733. package/dist/webmention/receive.js.map +1 -1
  734. package/dist/webmention/reply-contexts.d.ts +14 -3
  735. package/dist/webmention/reply-contexts.d.ts.map +1 -1
  736. package/dist/webmention/reply-contexts.js +12 -10
  737. package/dist/webmention/reply-contexts.js.map +1 -1
  738. package/dist/webmention/service.d.ts +3 -1
  739. package/dist/webmention/service.d.ts.map +1 -1
  740. package/dist/webmention/service.js +66 -53
  741. package/dist/webmention/service.js.map +1 -1
  742. package/package.json +13 -11
  743. package/themes/default/partials/post-list.njk +11 -11
  744. package/themes/default/src/style.css +12 -0
  745. package/themes/default/static/style.css +19 -0
@@ -1,5 +1,4 @@
1
1
  import { FORM_ROWS, ROWS, SETTING_KEYS, SETTINGS_FIELD_NAMES } from './setting-rows.js';
2
- import { DEFAULT_SITE_SETTINGS } from './settings.js';
3
2
  export { SETTINGS_FIELD_NAMES } from './setting-rows.js';
4
3
  function perField(value) {
5
4
  return Object.fromEntries(SETTINGS_FIELD_NAMES.map((name) => [name, value(name)]));
@@ -31,9 +30,6 @@ function onDiskProblem(name, form, context) {
31
30
  const dir = context[onDisk.dir];
32
31
  return dir === undefined ? undefined : onDisk.problem(form[name].trim(), dir);
33
32
  }
34
- function submitSetting(settings, key, form, carriedOnFile) {
35
- settings[key] = ROWS[key].submitted(form, carriedOnFile);
36
- }
37
33
  /**
38
34
  * A validated form as settings. Only call it on a form
39
35
  * {@link settingsProblems} found nothing wrong with.
@@ -43,13 +39,13 @@ function submitSetting(settings, key, form, carriedOnFile) {
43
39
  * passing the settings read inside the write is all a caller has to do.
44
40
  */
45
41
  export function settingsFromForm(form, carriedOnFile = {}) {
46
- const settings = { ...DEFAULT_SITE_SETTINGS };
47
- for (const key of SETTING_KEYS)
48
- submitSetting(settings, key, form, carriedOnFile);
49
- return settings;
42
+ return Object.fromEntries(SETTING_KEYS.map((key) => [key, ROWS[key].submitted(form, carriedOnFile)]));
50
43
  }
51
- function shownSetting(settings, key) {
52
- return FORM_ROWS[key].shown(settings[key]);
44
+ function shownSetting(settings, name) {
45
+ const value = (name === 'license_url' || name === 'license_name'
46
+ ? settings.license
47
+ : settings[name]);
48
+ return FORM_ROWS[name].shown(value);
53
49
  }
54
50
  /** The settings as the form shows them. */
55
51
  export function formFromSettings(settings) {
@@ -1 +1 @@
1
- {"version":3,"file":"settings-form.js","sourceRoot":"","sources":["../../src/site/settings-form.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAOxF,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAGtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAWzD,SAAS,QAAQ,CAAI,KAAiC;IACpD,OAAO,MAAM,CAAC,WAAW,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAGhF,CAAC;AACJ,CAAC;AAED,sDAAsD;AACtD,MAAM,CAAC,MAAM,eAAe,GAA4C,QAAQ,CAC9E,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAChC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAkB,EAClB,MAAM,GAA6B,oBAAoB,EACvD,OAAO,GAAoB,EAAE;IAE7B,MAAM,QAAQ,GAAqB,EAAE,CAAC;IAEtC,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAClF,IAAI,OAAO,KAAK,SAAS;YAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IACtD,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,aAAa,CACpB,IAAmB,EACnB,IAAkB,EAClB,OAAwB;IAExB,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IACtC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC3C,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChC,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,aAAa,CACpB,QAAsB,EACtB,GAAM,EACN,IAAkB,EAClB,aAA8B;IAE9B,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAkB,EAClB,aAAa,GAAoB,EAAE;IAEnC,MAAM,QAAQ,GAAG,EAAE,GAAG,qBAAqB,EAAE,CAAC;IAC9C,KAAK,MAAM,GAAG,IAAI,YAAY;QAAE,aAAa,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;IAClF,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,YAAY,CAA0B,QAAsB,EAAE,GAAM;IAC3E,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,2CAA2C;AAC3C,MAAM,UAAU,gBAAgB,CAAC,QAAsB;IACrD,OAAO,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1D,CAAC"}
1
+ {"version":3,"file":"settings-form.js","sourceRoot":"","sources":["../../src/site/settings-form.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAUxF,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAWzD,SAAS,QAAQ,CAAI,KAAiC;IACpD,OAAO,MAAM,CAAC,WAAW,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAGhF,CAAC;AACJ,CAAC;AAED,sDAAsD;AACtD,MAAM,CAAC,MAAM,eAAe,GAA4C,QAAQ,CAC9E,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAChC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAkB,EAClB,MAAM,GAA6B,oBAAoB,EACvD,OAAO,GAAoB,EAAE;IAE7B,MAAM,QAAQ,GAAqB,EAAE,CAAC;IAEtC,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAClF,IAAI,OAAO,KAAK,SAAS;YAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IACtD,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,aAAa,CACpB,IAAmB,EACnB,IAAkB,EAClB,OAAwB;IAExB,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IACtC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC3C,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChC,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;AAChF,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAkB,EAClB,aAAa,GAAoB,EAAE;IAEnC,OAAO,MAAM,CAAC,WAAW,CACvB,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,CAC3D,CAAC;AACpB,CAAC;AAED,SAAS,YAAY,CAA0B,QAAsB,EAAE,IAAO;IAC5E,MAAM,KAAK,GAAG,CACZ,IAAI,KAAK,aAAa,IAAI,IAAI,KAAK,cAAc;QAC/C,CAAC,CAAC,QAAQ,CAAC,OAAO;QAClB,CAAC,CAAC,QAAQ,CAAC,IAA0B,CAAC,CACxB,CAAC;IACnB,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACtC,CAAC;AAED,2CAA2C;AAC3C,MAAM,UAAU,gBAAgB,CAAC,QAAsB;IACrD,OAAO,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1D,CAAC"}
@@ -1,330 +1,14 @@
1
1
  import type { ResolvedConfig } from '../config.ts';
2
- import type { LocationSharing } from '../content/location.ts';
3
- import type { MailProviderName } from '../mail/provider.ts';
4
- import type { RetentionPolicy } from './retention-policy.ts';
5
- import type { UpdatePeriod } from './feed-settings.ts';
6
2
  import type { CreativeCommonsKey } from '../content/license.ts';
7
- import type { NavigationMenus } from './navigation.ts';
8
- import type { AiCrawlerPolicy, RobotsPolicy } from './robots.ts';
9
- import type { TaxonomyBases, TaxonomyRedirect } from '../content/taxonomy.ts';
10
- /**
11
- * How long a post takes comments for, in days, before this is decided
12
- * otherwise. WordPress's own default, and the age at which a post stops being
13
- * a conversation and starts being a spam target.
14
- */
15
- export declare const DEFAULT_COMMENTS_CLOSE_AFTER_DAYS = 14;
16
- /**
17
- * The settings a site holds, as `content/_data/site.json` says them.
18
- *
19
- * The file is the source of truth (decision-9): the settings screen reads it,
20
- * validates the form and writes it back, and nothing else remembers a setting.
21
- * That is what makes a hand edit of the file — in an editor, from a git
22
- * checkout, by an Eleventy build's own tooling — show on the very next
23
- * request, and what makes `data/geekity.db` a cache a site may delete.
24
- *
25
- * This shape is the typed view of the file. Each key has one row in
26
- * `setting-rows.ts` saying how the file holds it and how the settings form
27
- * carries it. The file may hold keys this shape does not model — `feedSize`,
28
- * anything a site put there — and a save keeps every one of them.
29
- */
30
- export interface SiteSettings {
31
- /** Site title, shown in the header, the `<title>` and the feeds. */
32
- title: string;
33
- /** One-line description under the title. May be empty. */
34
- tagline: string;
35
- /**
36
- * Public origin. Whether it is the one in effect depends on
37
- * {@link ResolvedConfig.baseUrlSource}; see {@link effectiveBaseUrl}.
38
- */
39
- baseUrl: string;
40
- /** An IANA zone name, e.g. `Europe/London`. */
41
- timezone: string;
42
- /**
43
- * The site's language as a BCP 47 tag, `en` by default. It is the
44
- * `<html lang>` the theme writes, the RSS channel's `<language>` and the
45
- * Atom feed's `xml:lang`.
46
- */
47
- language: string;
48
- /**
49
- * The locale the public site's dates and counts are written in, when it is
50
- * not the language: `en-US` on an `en` site, say. Empty, the default, means
51
- * the language.
52
- */
53
- locale: string;
54
- /** How many posts a listing page holds. A positive integer. */
55
- postsPerPage: number;
56
- /**
57
- * The slug of the page served at `/`, or empty when the site shows its
58
- * latest posts there. WordPress's Reading choice.
59
- *
60
- * A slug rather than a permalink, because a permalink is a thing the editor
61
- * may change and the setting should follow the page rather than the URL it
62
- * happened to have. A slug naming nothing published — a page drafted,
63
- * trashed or deleted since — is a site back on its latest posts: the pick is
64
- * kept so putting the page back puts the front page back with it.
65
- */
66
- homepage: string;
67
- /**
68
- * The slug of the page whose permalink carries the post listing, or empty
69
- * for none. Only meaningful beside a {@link SiteSettings.homepage}, and the
70
- * settings screen refuses one without it, exactly as WordPress does.
71
- */
72
- postsPage: string;
73
- /**
74
- * Who the site is: one user's username, or empty for a site with several
75
- * authors (TASK-192). A username makes it that user's blog: the homepage
76
- * carries their bio card and their `rel="me"` links, it and their archive
77
- * claim each other, and the root is their IndieAuth identity (decision-23).
78
- *
79
- * A file written before the Site author select may hold a display name or a
80
- * name nobody has. It is read as stored and resolved where it is used, by
81
- * `userForAuthor`, so a display name still names its user and anything else
82
- * names nobody; the General page writes the username at its next save.
83
- */
84
- author: string;
85
- /**
86
- * The theme the site renders through: the name of one directory under the
87
- * configured themes directory, or empty for the theme the package ships
88
- * (decision-15).
89
- *
90
- * A setting rather than a deployment fact, for the reason the tagline is: it
91
- * is a look somebody chooses on the Appearance screen, and a site moved from
92
- * one host to another should arrive looking the same. A name that is not a
93
- * theme is refused here and falls back to the packaged theme out on the
94
- * site, so a hand-edited file is a warning in the log rather than a 500.
95
- */
96
- theme: string;
97
- /**
98
- * The upload the site's icons are derived from, as a path such as
99
- * `/uploads/2026/10/icon.png`, or empty for none. Read from and written
100
- * to the `icon` key of `site.json` only.
101
- */
102
- icon: string;
103
- /**
104
- * What readers may do with the site's posts: empty for no
105
- * license, which is all rights reserved, a Creative Commons key, or
106
- * `custom` for the URL and name beside it. `site.json` writes a key, or a
107
- * custom license's URL, under `license`, so the file says it the way a
108
- * post's front matter does.
109
- */
110
- license: LicenseChoice;
111
- /** A custom license's terms, as an absolute URL. Empty unless `license` is `custom`. */
112
- licenseUrl: string;
113
- /** A custom license's name. Empty unless `license` is `custom`. */
114
- licenseName: string;
115
- /**
116
- * The first URL segment the tag archives live under, `tag` by default: one
117
- * URL-safe path segment, no slashes. WordPress's own base, so a site
118
- * imported from it keeps every archive URL it published.
119
- */
120
- tagBase: string;
121
- /** The same for the category archives, `category` by default. */
122
- categoryBase: string;
123
- /**
124
- * Whether the site takes native comments at all (TASK-50).
125
- *
126
- * Off means off everywhere: no form under any post, and every submission
127
- * refused. It does not touch the fediverse — a reply, a like or a boost
128
- * arrives because a remote server sent it, and a site cannot stop that or
129
- * pretend it did not happen.
130
- */
131
- comments: boolean;
132
- /**
133
- * How many days after its `date` a post stops taking comments. Zero never
134
- * closes one.
135
- *
136
- * The age at which a post stops being a conversation and starts being a spam
137
- * target; fourteen days is WordPress's own default. A post may say otherwise
138
- * for itself with `comments: true` or `comments: false` in its front matter.
139
- */
140
- commentsCloseAfterDays: number;
141
- /**
142
- * How many days a comment keeps its author's email (TASK-135). Zero keeps it
143
- * forever. Past it the email is removed from the comment file and the index,
144
- * and with it the author's subscription to replies.
145
- */
146
- commentEmailRetentionDays: number;
147
- /**
148
- * How many days a comment or a contact message keeps the salted hash of the
149
- * address it came from. Zero keeps it forever.
150
- */
151
- addressHashRetentionDays: number;
152
- /** How many days a contact message is kept at all. Zero keeps it forever. */
153
- contactMessageRetentionDays: number;
154
- /**
155
- * Whether the site tells the pages a post links to that it has (TASK-51).
156
- *
157
- * On by default, because a link nobody is told about is half a conversation.
158
- * Off means no webmention is ever sent, including by the Resend button.
159
- */
160
- webmentionsSend: boolean;
161
- /**
162
- * Whether the site accepts webmentions sent to it (TASK-51).
163
- *
164
- * On by default. Off takes the endpoint off every page and answers the
165
- * endpoint itself with a 404, which is what a site that does not receive
166
- * them looks like from outside. It does not touch the fediverse, and it does
167
- * not touch what has already arrived: a webmention already in the queue is
168
- * still there for a moderator.
169
- */
170
- webmentionsReceive: boolean;
171
- /**
172
- * Where the site announces that a feed changed, and the server its feeds
173
- * advertise as their rssCloud endpoint and their WebSub hub. An absolute
174
- * http(s) URL, {@link DEFAULT_NOTIFY_SERVER} by default; empty turns
175
- * real-time notification off altogether.
176
- */
177
- notifyServer: string;
178
- /**
179
- * How often the RSS feeds tell a reader to poll them: `feedUpdateFrequency`
180
- * times a `feedUpdatePeriod`, in the Syndication module's two elements
181
- * (TASK-152). Once an hour by default, which is what WordPress declares.
182
- */
183
- feedUpdatePeriod: UpdatePeriod;
184
- /** How many polls per {@link SiteSettings.feedUpdatePeriod}: a whole number, at least one. */
185
- feedUpdateFrequency: number;
186
- /**
187
- * How the site treats the crawlers that feed AI products, as the robots file
188
- * spells it in per-agent groups (TASK-148). `allow` by default.
189
- */
190
- aiCrawlers: AiCrawlerPolicy;
191
- /**
192
- * The three Content-Signal preferences the robots file declares: `yes`,
193
- * `no`, or empty for a signal the site says nothing about.
194
- */
195
- contentSignalSearch: ContentSignalChoice;
196
- /** Whether the site's pages may be fed to an AI answer live. */
197
- contentSignalAiInput: ContentSignalChoice;
198
- /** Whether the site's pages may be used to train a model. */
199
- contentSignalAiTrain: ContentSignalChoice;
200
- /**
201
- * Lines the robots file carries beyond the CMS's own: groups of
202
- * `User-agent` lines and their rules, one line per entry, blank lines
203
- * between groups. Every group still keeps crawlers out of the admin.
204
- */
205
- robotsRules: readonly string[];
206
- /**
207
- * Whether the site serves `/llms.txt` and advertises it from the home page
208
- * (TASK-149). On by default. A site that wants to write the file itself
209
- * leaves this on and puts it at `content/llms.txt`.
210
- */
211
- llmsTxt: boolean;
212
- /**
213
- * Whether the site tells the IndexNow search engines about every URL a
214
- * publish, an edit or a deletion moved (TASK-151). Off by default: it sends
215
- * the site's URLs to a third party, which is the site's call to make.
216
- */
217
- indexNow: boolean;
218
- /**
219
- * The key IndexNow verifies the site by, served at `/{key}.txt`. Generated
220
- * the first time IndexNow is turned on and kept when it is turned off, so
221
- * turning it back on keeps the key the search engines already checked. It
222
- * is no secret: the whole point of it is that anybody can fetch it.
223
- */
224
- indexNowKey: string;
225
- /**
226
- * How the site sends email, or `none` for a site that does not (TASK-53).
227
- *
228
- * The name of the provider only. The key or the SMTP password that makes it
229
- * work is a credential and lives in `data/mail.json`, never here: this file
230
- * is public, in git and published with the site.
231
- */
232
- mailProvider: MailProviderName;
233
- /** The display name on the From line. Falls back to the site title. */
234
- mailFromName: string;
235
- /**
236
- * The address on the From line. Empty falls back to `no-reply@` at the base
237
- * URL's host, which is what an unconfigured site would have to send as
238
- * anyway — but a provider will only accept a sender it has verified, so a
239
- * site that sends anything real sets this.
240
- */
241
- mailFromAddress: string;
242
- /** Where a reply to the site's mail should go. Empty means the From address. */
243
- mailReplyTo: string;
244
- /**
245
- * Where a message from the contact form is sent (TASK-56).
246
- *
247
- * Empty falls back to the first admin with an email, so a site that has
248
- * never visited this field still has somewhere to write. It is read when a
249
- * message arrives and is never put on a render context, so it cannot appear
250
- * in the HTML of the page the form is on however a theme is written.
251
- */
252
- contactEmail: string;
253
- /**
254
- * Where a security researcher reports a vulnerability: the `Contact` lines
255
- * of `/.well-known/security.txt` (RFC 9116, TASK-133), each a `mailto:`,
256
- * `https:` or `tel:` URI, in the order the site prefers them.
257
- *
258
- * Empty means the site answers that path with a 404. There is no fallback
259
- * to {@link SiteSettings.contactEmail}: that address is promised never to
260
- * appear on the public site, and this one is published by definition.
261
- */
262
- securityContacts: readonly string[];
263
- /** The `Policy` line of security.txt: an https URL, or empty for none. */
264
- securityPolicy: string;
265
- /**
266
- * The `Preferred-Languages` line of security.txt: language tags joined by
267
- * `, `, or empty for none.
268
- */
269
- securityLanguages: string;
270
- /**
271
- * The relay inboxes the site subscribes to (FEP-ae0c): a Mastodon-style
272
- * relay boosts every public post it is sent, which is how a small site
273
- * reaches instances nobody on it follows.
274
- *
275
- * Each is the relay's own inbox URL, absolute and whole — a relay's inbox is
276
- * a path like `/user/_____relay_____/inbox`, not an origin. The list is
277
- * edited one per line on the settings screen and held as an array in the
278
- * file; where each subscription stands is in the database, because the
279
- * handshake is not the site's to decide.
280
- */
281
- relays: readonly string[];
282
- /**
283
- * Every menu the site holds, by name: `site.json`'s `menus`, each an ordered
284
- * list of items a theme renders wherever it declares an area of that name
285
- * and an Eleventy build reads out of the same file.
286
- *
287
- * Not a field of the settings form, and deliberately: a menu is content a
288
- * site arranges rather than a switch it sets, and which menus there are to
289
- * edit comes from the active theme. The Navigation screen is what writes
290
- * them (TASK-108); a settings page carries them through a save untouched,
291
- * the way it carries the archive renames.
292
- */
293
- menus: NavigationMenus;
294
- /**
295
- * The taxonomy archives that have moved: one `{ taxonomy, from, to }` per
296
- * term the taxonomy screens renamed or merged away, so the URL it used to
297
- * live at can point at the one it lives at now.
298
- *
299
- * Not a field of the settings form: it is a record of what happened rather
300
- * than a preference, and the taxonomy screens are what write it. Chains are collapsed as they are
301
- * recorded, so the list answers every old URL in one hop.
302
- */
303
- taxonomyRedirects: readonly TaxonomyRedirect[];
304
- /**
305
- * What the site publishes of a post's location (TASK-223, decision-29):
306
- * nothing, the place's words, or the coordinates too. `none` by default,
307
- * because the location is personal data and the author chooses to share it.
308
- * Chosen on Settings > Privacy.
309
- */
310
- locationSharing: LocationSharing;
311
- /**
312
- * The IndieAuth apps the owner lets sign in without PKCE (TASK-225), each a
313
- * client_id. Empty, the default, means every app needs PKCE, as the
314
- * IndieAuth spec says. Not a field of the settings form: Users > Connected
315
- * apps edits it, and a settings save carries it, like the menus.
316
- */
317
- clientsWithoutPkce: readonly string[];
318
- }
3
+ import type { TaxonomyBases } from '../content/taxonomy.ts';
4
+ import type { SiteSettings } from './namespace.ts';
5
+ import type { RetentionPolicy } from './retention-policy.ts';
6
+ import type { RobotsPolicy } from './robots.ts';
7
+ export { DEFAULT_COMMENTS_CLOSE_AFTER_DAYS, SITE } from './namespace.ts';
8
+ export type { SiteLicense, SiteSettings } from './namespace.ts';
319
9
  /** What a site says about one Content-Signal: yes, no, or nothing. */
320
10
  export type ContentSignalChoice = '' | 'yes' | 'no';
321
11
  export type LicenseChoice = '' | CreativeCommonsKey | 'custom';
322
- /**
323
- * What a site is worth before anybody has said otherwise.
324
- *
325
- * `baseUrl` is empty rather than a guess: only the resolved config knows what
326
- * port the site is on, so the fallback is applied where the config is in hand.
327
- */
328
12
  export declare const DEFAULT_SITE_SETTINGS: SiteSettings;
329
13
  /** What the settings say the robots file should carry. */
330
14
  export declare function robotsPolicyOf(settings: SiteSettings): RobotsPolicy;
@@ -1 +1 @@
1
- {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/site/settings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/site/settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAG5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAoC,YAAY,EAAE,MAAM,aAAa,CAAC;AAElF,OAAO,EAAE,iCAAiC,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACzE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEhE,sEAAsE;AACtE,MAAM,MAAM,mBAAmB,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI,CAAC;AAEpD,MAAM,MAAM,aAAa,GAAG,EAAE,GAAG,kBAAkB,GAAG,QAAQ,CAAC;AAE/D,eAAO,MAAM,qBAAqB,EAAE,YAAkC,CAAC;AAEvE,0DAA0D;AAC1D,wBAAgB,cAAc,CAAC,QAAQ,EAAE,YAAY,GAAG,YAAY,CAUnE;AAED,8EAA8E;AAC9E,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,YAAY,GAAG,aAAa,CAE/E;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,SAAS,GAAG,eAAe,CAAC,EACzD,QAAQ,EAAE,YAAY,GACrB,MAAM,CAGR;AAED,4DAA4D;AAC5D,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,YAAY,GAAG,eAAe,CAMzE"}
@@ -1,86 +1,23 @@
1
- import { DEFAULT_FEED_CADENCE, DEFAULT_NOTIFY_SERVER } from './feed-settings.js';
2
- import { DEFAULT_TAXONOMY_BASES } from '../content/taxonomy.js';
3
- import { PACKAGED_THEME } from '../theme/themes.js';
4
- /**
5
- * How long a post takes comments for, in days, before this is decided
6
- * otherwise. WordPress's own default, and the age at which a post stops being
7
- * a conversation and starts being a spam target.
8
- */
9
- export const DEFAULT_COMMENTS_CLOSE_AFTER_DAYS = 14;
10
- /**
11
- * What a site is worth before anybody has said otherwise.
12
- *
13
- * `baseUrl` is empty rather than a guess: only the resolved config knows what
14
- * port the site is on, so the fallback is applied where the config is in hand.
15
- */
16
- export const DEFAULT_SITE_SETTINGS = {
17
- title: 'Geekity',
18
- tagline: '',
19
- baseUrl: '',
20
- timezone: 'UTC',
21
- language: 'en',
22
- locale: '',
23
- postsPerPage: 10,
24
- homepage: '',
25
- postsPage: '',
26
- author: '',
27
- theme: PACKAGED_THEME,
28
- icon: '',
29
- license: '',
30
- licenseUrl: '',
31
- licenseName: '',
32
- tagBase: DEFAULT_TAXONOMY_BASES.tag,
33
- categoryBase: DEFAULT_TAXONOMY_BASES.category,
34
- comments: true,
35
- commentsCloseAfterDays: DEFAULT_COMMENTS_CLOSE_AFTER_DAYS,
36
- // Forever, so a site that upgrades loses nothing it never chose to lose.
37
- // `geekity init` writes the recommended periods for a new site.
38
- commentEmailRetentionDays: 0,
39
- addressHashRetentionDays: 0,
40
- contactMessageRetentionDays: 0,
41
- webmentionsSend: true,
42
- webmentionsReceive: true,
43
- notifyServer: DEFAULT_NOTIFY_SERVER,
44
- feedUpdatePeriod: DEFAULT_FEED_CADENCE.period,
45
- feedUpdateFrequency: DEFAULT_FEED_CADENCE.frequency,
46
- aiCrawlers: 'allow',
47
- contentSignalSearch: '',
48
- contentSignalAiInput: '',
49
- contentSignalAiTrain: '',
50
- robotsRules: [],
51
- llmsTxt: true,
52
- indexNow: false,
53
- indexNowKey: '',
54
- mailProvider: 'none',
55
- mailFromName: '',
56
- mailFromAddress: '',
57
- mailReplyTo: '',
58
- contactEmail: '',
59
- securityContacts: [],
60
- securityPolicy: '',
61
- securityLanguages: '',
62
- relays: [],
63
- locationSharing: 'none',
64
- menus: {},
65
- taxonomyRedirects: [],
66
- clientsWithoutPkce: [],
67
- };
1
+ import { defaultValues } from '../settings/declare.js';
2
+ import { SITE } from './namespace.js';
3
+ export { DEFAULT_COMMENTS_CLOSE_AFTER_DAYS, SITE } from './namespace.js';
4
+ export const DEFAULT_SITE_SETTINGS = defaultValues(SITE);
68
5
  /** What the settings say the robots file should carry. */
69
6
  export function robotsPolicyOf(settings) {
70
7
  const choices = [
71
- ['search', settings.contentSignalSearch],
72
- ['ai-input', settings.contentSignalAiInput],
73
- ['ai-train', settings.contentSignalAiTrain],
8
+ ['search', settings.content_signal_search],
9
+ ['ai-input', settings.content_signal_ai_input],
10
+ ['ai-train', settings.content_signal_ai_train],
74
11
  ];
75
12
  const contentSignal = {};
76
13
  for (const [name, choice] of choices)
77
14
  if (choice !== '')
78
15
  contentSignal[name] = choice;
79
- return { aiCrawlers: settings.aiCrawlers, contentSignal, rules: settings.robotsRules };
16
+ return { aiCrawlers: settings.ai_crawlers, contentSignal, rules: settings.robots_rules };
80
17
  }
81
18
  /** The two archive bases the settings hold, as the URL builders want them. */
82
19
  export function taxonomyBasesFromSettings(settings) {
83
- return { tag: settings.tagBase, category: settings.categoryBase };
20
+ return { tag: settings.tag_base, category: settings.category_base };
84
21
  }
85
22
  /**
86
23
  * The base URL actually in effect, and why.
@@ -94,14 +31,14 @@ export function taxonomyBasesFromSettings(settings) {
94
31
  export function effectiveBaseUrl(config, settings) {
95
32
  if (config.baseUrlSource !== 'default')
96
33
  return config.baseUrl;
97
- return settings.baseUrl === '' ? config.baseUrl : settings.baseUrl;
34
+ return settings.base_url === '' ? config.baseUrl : settings.base_url;
98
35
  }
99
36
  /** The three retention periods, as the sweep reads them. */
100
37
  export function retentionPolicyOf(settings) {
101
38
  return {
102
- commentEmailDays: settings.commentEmailRetentionDays,
103
- addressHashDays: settings.addressHashRetentionDays,
104
- contactMessageDays: settings.contactMessageRetentionDays,
39
+ commentEmailDays: settings.comment_email_retention_days,
40
+ addressHashDays: settings.address_hash_retention_days,
41
+ contactMessageDays: settings.contact_message_retention_days,
105
42
  };
106
43
  }
107
44
  //# sourceMappingURL=settings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/site/settings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/site/settings.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAKtC,OAAO,EAAE,iCAAiC,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAQzE,MAAM,CAAC,MAAM,qBAAqB,GAAiB,aAAa,CAAC,IAAI,CAAC,CAAC;AAEvE,0DAA0D;AAC1D,MAAM,UAAU,cAAc,CAAC,QAAsB;IACnD,MAAM,OAAO,GAA+C;QAC1D,CAAC,QAAQ,EAAE,QAAQ,CAAC,qBAAqB,CAAC;QAC1C,CAAC,UAAU,EAAE,QAAQ,CAAC,uBAAuB,CAAC;QAC9C,CAAC,UAAU,EAAE,QAAQ,CAAC,uBAAuB,CAAC;KAC/C,CAAC;IACF,MAAM,aAAa,GAAkB,EAAE,CAAC;IACxC,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,OAAO;QAAE,IAAI,MAAM,KAAK,EAAE;YAAE,aAAa,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;IAEtF,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,WAAW,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,CAAC,YAAY,EAAE,CAAC;AAC3F,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,yBAAyB,CAAC,QAAsB;IAC9D,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,aAAa,EAAE,CAAC;AACtE,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAAyD,EACzD,QAAsB;IAEtB,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,OAAO,CAAC;IAC9D,OAAO,QAAQ,CAAC,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACvE,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,iBAAiB,CAAC,QAAsB;IACtD,OAAO;QACL,gBAAgB,EAAE,QAAQ,CAAC,4BAA4B;QACvD,eAAe,EAAE,QAAQ,CAAC,2BAA2B;QACrD,kBAAkB,EAAE,QAAQ,CAAC,8BAA8B;KAC5D,CAAC;AACJ,CAAC"}
@@ -1,39 +1,8 @@
1
1
  import type { SiteSettings } from './settings.ts';
2
- /**
3
- * A site's settings, as its `content/_data/site.json` says them right now.
4
- *
5
- * Read on every request that needs one rather than cached, which is what a
6
- * source of truth being a file is worth: a hand edit shows on the public site,
7
- * on the settings screen and in the actor document without a restart and
8
- * without anything being told. The file is a few hundred bytes, so the read
9
- * costs less than the parse of the template that is about to use it.
10
- *
11
- * A file that is missing, or one that will not parse, is the defaults rather
12
- * than an error: a typo in `site.json` should leave a site up and answerable,
13
- * with the settings screen there to put it right.
14
- */
15
- export declare function readSiteSettings(contentDir: string): SiteSettings;
16
- export declare function readSiteJson(contentDir: string): Record<string, unknown>;
17
2
  export declare function parseSiteJson(source: string): Record<string, unknown>;
18
3
  /** The absolute path of one site's `content/_data/site.json`. */
19
4
  export declare function siteDataPath(contentDir: string): string;
20
- /**
21
- * `content/_data/site.json` as the settings it names, defaults filled in.
22
- *
23
- * Read tolerantly, key by key: a key of the wrong type, or one a site has
24
- * never written, falls back to the default rather than taking the site down.
25
- */
26
5
  export declare function settingsFromSiteJson(file: Record<string, unknown>): SiteSettings;
27
- /**
28
- * `content/_data/site.json` as it should read for these settings.
29
- *
30
- * Every key the settings model is written whether or not it has a value, so
31
- * the file's shape is stable and an Eleventy template may reference
32
- * `site.tagline` without guarding it, bar the few whose row writes nothing for
33
- * a site that has made no choice. Every other key the file already had is
34
- * kept: a site may put anything in there and reach it from its templates, and
35
- * the settings form is not going to be the thing that throws it away.
36
- */
37
6
  export declare function siteJsonFor(settings: SiteSettings, existing?: Record<string, unknown>): Record<string, unknown>;
38
7
  /** The bytes of one settings object, as the file holds them. */
39
8
  export declare function siteJsonText(settings: SiteSettings, existing: Record<string, unknown>): string;
@@ -1 +1 @@
1
- {"version":3,"file":"site-json.d.ts","sourceRoot":"","sources":["../../src/site/site-json.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAIlD;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,CAEjE;AAED,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAExE;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAQrE;AAED,iEAAiE;AACjE,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEvD;AAWD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,YAAY,CAIhF;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,YAAY,EACtB,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACrC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAKzB;AAED,gEAAgE;AAChE,wBAAgB,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAE9F;AAED;;;;;;;GAOG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,YAAY,CAAC;CACxB,GAAG,OAAO,CAAC,IAAI,CAAC,CAEhB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE;IAChD,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,YAAY,CAAC;CACjD,GAAG,OAAO,CAAC,YAAY,CAAC,CAUxB"}
1
+ {"version":3,"file":"site-json.d.ts","sourceRoot":"","sources":["../../src/site/site-json.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAIlD,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAQrE;AAED,iEAAiE;AACjE,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,YAAY,CAEhF;AAED,wBAAgB,WAAW,CACzB,QAAQ,EAAE,YAAY,EACtB,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACrC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAIzB;AAED,gEAAgE;AAChE,wBAAgB,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAE9F;AAED;;;;;;;GAOG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,YAAY,CAAC;CACxB,GAAG,OAAO,CAAC,IAAI,CAAC,CAEhB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE;IAChD,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,YAAY,CAAC;CACjD,GAAG,OAAO,CAAC,YAAY,CAAC,CAUxB"}
@@ -1,29 +1,11 @@
1
1
  import path from 'node:path';
2
- import { readFileIfPresentSync, updateFileAtomically } from '../files/atomic.js';
2
+ import { updateFileAtomically } from '../files/atomic.js';
3
+ import { fileWith, storedValues } from '../settings/registry.js';
3
4
  import { isRecord } from '../util/guards.js';
4
5
  import { SITE_DATA_FILE } from '../theme/site-data.js';
5
- import { ROWS, SETTING_KEYS } from './setting-rows.js';
6
+ import { SITE } from './namespace.js';
6
7
  import { DEFAULT_SITE_SETTINGS } from './settings.js';
7
8
  const RETIRED_KEYS = ['navigation', 'soloAuthor'];
8
- /**
9
- * A site's settings, as its `content/_data/site.json` says them right now.
10
- *
11
- * Read on every request that needs one rather than cached, which is what a
12
- * source of truth being a file is worth: a hand edit shows on the public site,
13
- * on the settings screen and in the actor document without a restart and
14
- * without anything being told. The file is a few hundred bytes, so the read
15
- * costs less than the parse of the template that is about to use it.
16
- *
17
- * A file that is missing, or one that will not parse, is the defaults rather
18
- * than an error: a typo in `site.json` should leave a site up and answerable,
19
- * with the settings screen there to put it right.
20
- */
21
- export function readSiteSettings(contentDir) {
22
- return settingsFromSiteJson(readSiteJson(contentDir));
23
- }
24
- export function readSiteJson(contentDir) {
25
- return parseSiteJson(readFileIfPresentSync(siteDataPath(contentDir)) ?? '');
26
- }
27
9
  export function parseSiteJson(source) {
28
10
  let parsed;
29
11
  try {
@@ -38,37 +20,11 @@ export function parseSiteJson(source) {
38
20
  export function siteDataPath(contentDir) {
39
21
  return path.join(contentDir, ...SITE_DATA_FILE.split('/'));
40
22
  }
41
- function readSetting(settings, key, file) {
42
- const value = ROWS[key].read(file);
43
- if (value !== undefined)
44
- settings[key] = value;
45
- }
46
- /**
47
- * `content/_data/site.json` as the settings it names, defaults filled in.
48
- *
49
- * Read tolerantly, key by key: a key of the wrong type, or one a site has
50
- * never written, falls back to the default rather than taking the site down.
51
- */
52
23
  export function settingsFromSiteJson(file) {
53
- const settings = { ...DEFAULT_SITE_SETTINGS };
54
- for (const key of SETTING_KEYS)
55
- readSetting(settings, key, file);
56
- return settings;
24
+ return storedValues(SITE, file);
57
25
  }
58
- /**
59
- * `content/_data/site.json` as it should read for these settings.
60
- *
61
- * Every key the settings model is written whether or not it has a value, so
62
- * the file's shape is stable and an Eleventy template may reference
63
- * `site.tagline` without guarding it, bar the few whose row writes nothing for
64
- * a site that has made no choice. Every other key the file already had is
65
- * kept: a site may put anything in there and reach it from its templates, and
66
- * the settings form is not going to be the thing that throws it away.
67
- */
68
26
  export function siteJsonFor(settings, existing = {}) {
69
- const file = { ...existing };
70
- for (const key of SETTING_KEYS)
71
- ROWS[key].write(file, settings);
27
+ const file = fileWith(SITE, settings, existing);
72
28
  for (const key of RETIRED_KEYS)
73
29
  delete file[key];
74
30
  return file;