@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
@@ -0,0 +1,21 @@
1
+ import type { JobDefinition } from '../jobs/types.ts';
2
+ import type { Clock } from '../util/clock.ts';
3
+ import type { NotCarried, SiteExportSource } from './site-export.ts';
4
+ /** No password and no secret: `jobs.json` is exported. */
5
+ export type SiteExportPayload = {
6
+ readonly withCredentials: boolean;
7
+ };
8
+ export type SiteExportResult = {
9
+ readonly file: string;
10
+ readonly files: number;
11
+ readonly bytes: number;
12
+ readonly credentials: boolean;
13
+ readonly credentialsLeftOut: readonly string[];
14
+ readonly undeclared: readonly string[];
15
+ readonly notCarried: readonly NotCarried[];
16
+ readonly deliveries: number;
17
+ };
18
+ export declare const SITE_EXPORT_JOB: import("../jobs/types.ts").JobName<SiteExportPayload, SiteExportResult>;
19
+ export declare function sizeLabel(bytes: number): string;
20
+ export declare function siteExportJob(source: SiteExportSource, now: Clock): JobDefinition<SiteExportPayload, SiteExportResult>;
21
+ //# sourceMappingURL=export-job.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-job.d.ts","sourceRoot":"","sources":["../../src/export/export-job.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAS9C,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAErE,0DAA0D;AAC1D,MAAM,MAAM,iBAAiB,GAAG;IAAE,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAA;CAAE,CAAC;AAEtE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/C,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,UAAU,EAAE,SAAS,UAAU,EAAE,CAAC;IAC3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,eAAe,yEAAqE,CAAC;AAIlG,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQ/C;AAED,wBAAgB,aAAa,CAC3B,MAAM,EAAE,gBAAgB,EACxB,GAAG,EAAE,KAAK,GACT,aAAa,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CA2CpD"}
@@ -0,0 +1,63 @@
1
+ import { mkdir } from 'node:fs/promises';
2
+ import { EXPORTS, dataFolder, dataPath } from '../files/data-files.js';
3
+ import { jobName } from '../jobs/types.js';
4
+ import { isRecord } from '../util/guards.js';
5
+ import { keepOnlyExport } from '../files/export-archives.js';
6
+ import { SITE_EXPORT_JOB_NAME, exportFileName, planSiteExport, writeSiteExport, } from './site-export.js';
7
+ export const SITE_EXPORT_JOB = jobName(SITE_EXPORT_JOB_NAME);
8
+ const PROGRESS_STEPS = 100;
9
+ export function sizeLabel(bytes) {
10
+ if (bytes < 1000)
11
+ return `${String(bytes)} bytes`;
12
+ let value = bytes;
13
+ for (const unit of ['KB', 'MB', 'GB']) {
14
+ value /= 1000;
15
+ if (value < 1000)
16
+ return `${String(Number(value.toFixed(1)))} ${unit}`;
17
+ }
18
+ return `${String(Number((value / 1000).toFixed(1)))} TB`;
19
+ }
20
+ export function siteExportJob(source, now) {
21
+ const { dataDir, baseUrl } = source.config;
22
+ return {
23
+ name: SITE_EXPORT_JOB.name,
24
+ parse(payload) {
25
+ const withCredentials = isRecord(payload) ? payload['withCredentials'] : undefined;
26
+ if (typeof withCredentials !== 'boolean') {
27
+ throw new Error('A site export job needs withCredentials, true or false.');
28
+ }
29
+ return { withCredentials };
30
+ },
31
+ async run({ withCredentials }, context) {
32
+ await mkdir(dataFolder(dataDir, EXPORTS), { recursive: true });
33
+ const plan = await planSiteExport(source, { withCredentials, withContent: true });
34
+ const started = now();
35
+ const file = exportFileName(baseUrl, started);
36
+ const step = Math.max(1, Math.floor(plan.files.length / PROGRESS_STEPS));
37
+ const manifest = await writeSiteExport(plan, {
38
+ out: dataPath(dataDir, EXPORTS, file),
39
+ now: started,
40
+ signal: context.signal,
41
+ progress: (progress) => progress.files % step === 0 || progress.files === progress.totalFiles
42
+ ? context.progress({
43
+ done: progress.files,
44
+ total: progress.totalFiles,
45
+ note: `${sizeLabel(progress.bytes)} of ${sizeLabel(progress.totalBytes)}.`,
46
+ })
47
+ : undefined,
48
+ });
49
+ await keepOnlyExport(dataDir, file);
50
+ return {
51
+ file,
52
+ files: manifest.files.length,
53
+ bytes: manifest.files.reduce((total, each) => total + each.size, 0),
54
+ credentials: manifest.credentials,
55
+ credentialsLeftOut: manifest.credentialsLeftOut,
56
+ undeclared: manifest.undeclared,
57
+ notCarried: manifest.notCarried,
58
+ deliveries: manifest.pending.deliveries,
59
+ };
60
+ },
61
+ };
62
+ }
63
+ //# sourceMappingURL=export-job.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-job.js","sourceRoot":"","sources":["../../src/export/export-job.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,101 @@
1
+ import type { ResolvedConfig } from '../config.ts';
2
+ import type { OtherEntryKind } from '../files/data-files.ts';
3
+ import type { PluginRegistry } from '../plugins/registry.ts';
4
+ import type { SettingsRegistry } from '../settings/types.ts';
5
+ /**
6
+ * It reads only. Every writer replaces its file by rename, so each file read
7
+ * through one open handle is a whole file, and its hash is taken from the
8
+ * bytes the archive holds. SQLite files are never exported.
9
+ */
10
+ export declare const EXPORT_FORMAT = 1;
11
+ export declare const MANIFEST_NAME = "manifest.json";
12
+ export declare const SITE_EXPORT_JOB_NAME = "site.export";
13
+ export interface SiteExportSource {
14
+ readonly config: Pick<ResolvedConfig, 'dataDir' | 'contentDir' | 'baseUrl' | 'plugins'>;
15
+ readonly settings: SettingsRegistry;
16
+ readonly plugins: PluginRegistry;
17
+ }
18
+ export interface SiteExportOptions {
19
+ readonly withCredentials: boolean;
20
+ readonly withContent: boolean;
21
+ }
22
+ export type ExportedClass = 'kept' | 'credential';
23
+ export interface ManifestFile {
24
+ readonly path: string;
25
+ readonly class: ExportedClass;
26
+ readonly size: number;
27
+ readonly sha256: string;
28
+ }
29
+ export interface ManifestPlugin {
30
+ readonly name: string;
31
+ readonly version: string;
32
+ readonly source: 'folder' | 'config';
33
+ readonly enabled: boolean;
34
+ }
35
+ export interface ManifestOverride {
36
+ readonly setting: string;
37
+ /** `env GEEKITY_…` or `config field`. Never the value. */
38
+ readonly source: string;
39
+ }
40
+ export interface PendingWork {
41
+ readonly deliveries: number;
42
+ readonly jobs: {
43
+ readonly queued: number;
44
+ readonly running: number;
45
+ };
46
+ }
47
+ export type NotCarried = {
48
+ readonly path: string;
49
+ readonly why: OtherEntryKind;
50
+ };
51
+ export interface ExportManifest {
52
+ readonly format: typeof EXPORT_FORMAT;
53
+ readonly cms: string;
54
+ readonly exportedAt: string;
55
+ readonly baseUrl: string;
56
+ readonly content: boolean;
57
+ readonly credentials: boolean;
58
+ readonly devMode: boolean;
59
+ readonly files: readonly ManifestFile[];
60
+ readonly undeclared: readonly string[];
61
+ readonly notCarried: readonly NotCarried[];
62
+ readonly credentialsLeftOut: readonly string[];
63
+ readonly plugins: readonly ManifestPlugin[];
64
+ readonly overrides: readonly ManifestOverride[];
65
+ readonly pending: PendingWork;
66
+ }
67
+ interface PlannedFile {
68
+ readonly path: string;
69
+ readonly absolute: string;
70
+ readonly class: ExportedClass;
71
+ readonly rewrite?: (bytes: Buffer) => Buffer;
72
+ }
73
+ export interface ExportPlan {
74
+ readonly files: readonly PlannedFile[];
75
+ readonly bytes: number;
76
+ readonly site: Omit<ExportManifest, 'exportedAt' | 'files'>;
77
+ }
78
+ export interface ExportProgress {
79
+ readonly files: number;
80
+ readonly totalFiles: number;
81
+ readonly bytes: number;
82
+ readonly totalBytes: number;
83
+ }
84
+ export interface WriteSiteExportOptions {
85
+ readonly out: string;
86
+ readonly now: Date;
87
+ readonly signal?: AbortSignal;
88
+ readonly progress?: (progress: ExportProgress) => void | Promise<void>;
89
+ }
90
+ export declare function pendingWork(dataDir: string): Promise<PendingWork>;
91
+ export declare function compactTime(now: Date): string;
92
+ export declare function exportFileName(baseUrl: string, now: Date): string;
93
+ export declare function planSiteExport(source: SiteExportSource, options: SiteExportOptions): Promise<ExportPlan>;
94
+ /**
95
+ * `manifest.json`, which needs the hashes of every file, is written as the
96
+ * first gzip member and the files follow as the second. gzip readers and tar
97
+ * take the two members as one stream.
98
+ */
99
+ export declare function writeSiteExport(plan: ExportPlan, options: WriteSiteExportOptions): Promise<ExportManifest>;
100
+ export {};
101
+ //# sourceMappingURL=site-export.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"site-export.d.ts","sourceRoot":"","sources":["../../src/export/site-export.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,243 @@
1
+ import { createHash, randomBytes } from 'node:crypto';
2
+ import { createReadStream, createWriteStream } from 'node:fs';
3
+ import { open, rename, rm, stat } from 'node:fs/promises';
4
+ import path from 'node:path';
5
+ import { pipeline } from 'node:stream/promises';
6
+ import { createGzip, gzipSync } from 'node:zlib';
7
+ import { CONTENT_SCRATCH_FILES, JOBS, classifyEntries, classifyFiles, dataPath, } from '../files/data-files.js';
8
+ import { TAR_END, tarHeader, tarPadding } from '../files/tar.js';
9
+ import { ownManifest } from '../init.js';
10
+ import { createFileRecords } from '../jobs/file-records.js';
11
+ import { pluginFolderOf, siteDataFiles } from '../plugins/data.js';
12
+ import { readEnabledPlugins } from '../plugins/enabled.js';
13
+ import { DEV_MODE } from '../settings/dev-mode.js';
14
+ import { overridden, sourceLabel } from '../settings/registry.js';
15
+ import { countWaitingMessages } from '../store/queue-database.js';
16
+ import { isNotFound } from '../util/files.js';
17
+ import { isRecord } from '../util/guards.js';
18
+ /**
19
+ * It reads only. Every writer replaces its file by rename, so each file read
20
+ * through one open handle is a whole file, and its hash is taken from the
21
+ * bytes the archive holds. SQLite files are never exported.
22
+ */
23
+ export const EXPORT_FORMAT = 1;
24
+ export const MANIFEST_NAME = 'manifest.json';
25
+ export const SITE_EXPORT_JOB_NAME = 'site.export';
26
+ function withoutExportJobs(bytes) {
27
+ let jobs;
28
+ try {
29
+ jobs = JSON.parse(bytes.toString('utf8'));
30
+ }
31
+ catch {
32
+ return bytes;
33
+ }
34
+ if (!Array.isArray(jobs))
35
+ return bytes;
36
+ const kept = jobs.filter((job) => !isRecord(job) || job['name'] !== SITE_EXPORT_JOB_NAME);
37
+ return kept.length === jobs.length ? bytes : Buffer.from(`${JSON.stringify(kept, null, 2)}\n`);
38
+ }
39
+ export async function pendingWork(dataDir) {
40
+ const jobs = (await createFileRecords(dataPath(dataDir, JOBS)).list(['queued', 'running'])).filter((job) => job.name !== SITE_EXPORT_JOB_NAME);
41
+ return {
42
+ deliveries: countWaitingMessages(dataDir),
43
+ jobs: {
44
+ queued: jobs.filter((job) => job.state === 'queued').length,
45
+ running: jobs.filter((job) => job.state === 'running').length,
46
+ },
47
+ };
48
+ }
49
+ export function compactTime(now) {
50
+ return now
51
+ .toISOString()
52
+ .replace(/\.\d+Z$/, 'Z')
53
+ .replace(/[-:]/g, '');
54
+ }
55
+ export function exportFileName(baseUrl, now) {
56
+ return `geekity-${new URL(baseUrl).hostname}-${compactTime(now)}.tar.gz`;
57
+ }
58
+ function credentialOwner(relative) {
59
+ return pluginFolderOf(relative) ?? path.posix.basename(relative, '.json');
60
+ }
61
+ async function overridesOf(settings) {
62
+ const found = [];
63
+ for (const ref of settings.list()) {
64
+ const { source } = await settings.resolve(ref);
65
+ if (overridden(source)) {
66
+ found.push({ setting: `${ref.namespace}.${ref.key}`, source: sourceLabel(source) });
67
+ }
68
+ }
69
+ return found;
70
+ }
71
+ function pluginsOf(source) {
72
+ const enabled = readEnabledPlugins(source.config.contentDir);
73
+ const fromConfig = new Set(source.config.plugins.map((plugin) => plugin.name));
74
+ return source.plugins.plugins.map(({ plugin }) => ({
75
+ name: plugin.name,
76
+ version: plugin.version,
77
+ source: fromConfig.has(plugin.name) ? 'config' : 'folder',
78
+ enabled: enabled.has(plugin.name),
79
+ }));
80
+ }
81
+ export async function planSiteExport(source, options) {
82
+ const { contentDir, dataDir, baseUrl } = source.config;
83
+ const files = [];
84
+ const undeclared = [];
85
+ const notCarried = [];
86
+ const leftOut = new Set();
87
+ if (options.withContent) {
88
+ const entries = classifyEntries(contentDir, CONTENT_SCRATCH_FILES);
89
+ for (const file of entries.files) {
90
+ if (file.declaration === undefined) {
91
+ files.push({ path: `content/${file.relative}`, absolute: file.absolute, class: 'kept' });
92
+ }
93
+ }
94
+ for (const other of entries.others) {
95
+ if (other.declaration === undefined) {
96
+ notCarried.push({ path: `content/${other.relative}`, why: other.kind });
97
+ }
98
+ }
99
+ }
100
+ const declarations = siteDataFiles({
101
+ dataDir,
102
+ settings: source.settings,
103
+ plugins: source.plugins,
104
+ });
105
+ for (const file of classifyFiles(dataDir, declarations)) {
106
+ const archived = `data/${file.relative}`;
107
+ const kind = file.declaration?.dataClass.kind;
108
+ switch (kind) {
109
+ case undefined:
110
+ undeclared.push(archived);
111
+ break;
112
+ case 'kept':
113
+ files.push({
114
+ path: archived,
115
+ absolute: file.absolute,
116
+ class: 'kept',
117
+ ...(file.declaration === JOBS ? { rewrite: withoutExportJobs } : {}),
118
+ });
119
+ break;
120
+ case 'credential':
121
+ if (options.withCredentials) {
122
+ files.push({ path: archived, absolute: file.absolute, class: 'credential' });
123
+ }
124
+ else if ((await stat(file.absolute)).size > 0) {
125
+ leftOut.add(credentialOwner(file.relative));
126
+ }
127
+ break;
128
+ case 'rebuildable':
129
+ case 'pending':
130
+ case 'scratch':
131
+ break;
132
+ default:
133
+ kind;
134
+ }
135
+ }
136
+ let bytes = 0;
137
+ for (const file of files)
138
+ bytes += (await stat(file.absolute)).size;
139
+ return {
140
+ files,
141
+ bytes,
142
+ site: {
143
+ format: EXPORT_FORMAT,
144
+ cms: ownManifest().version,
145
+ baseUrl,
146
+ content: options.withContent,
147
+ credentials: options.withCredentials,
148
+ devMode: await source.settings.get(DEV_MODE.on),
149
+ undeclared,
150
+ notCarried,
151
+ credentialsLeftOut: [...leftOut].sort(),
152
+ plugins: pluginsOf(source),
153
+ overrides: await overridesOf(source.settings),
154
+ pending: await pendingWork(dataDir),
155
+ },
156
+ };
157
+ }
158
+ async function* tarEntries(plan, recorded, options) {
159
+ let bytes = 0;
160
+ for (const [index, file] of plan.files.entries()) {
161
+ options.signal?.throwIfAborted();
162
+ const handle = await open(file.absolute, 'r').catch((error) => {
163
+ if (isNotFound(error))
164
+ return undefined;
165
+ throw error;
166
+ });
167
+ if (handle !== undefined) {
168
+ try {
169
+ const { mode, mtime, size: onDisk } = await handle.stat();
170
+ const hash = createHash('sha256');
171
+ let size = onDisk;
172
+ if (file.rewrite !== undefined) {
173
+ const bytes = file.rewrite(await handle.readFile());
174
+ size = bytes.length;
175
+ yield tarHeader({ name: file.path, mode, size, mtime });
176
+ hash.update(bytes);
177
+ yield bytes;
178
+ }
179
+ else {
180
+ yield tarHeader({ name: file.path, mode, size, mtime });
181
+ let read = 0;
182
+ if (size > 0) {
183
+ const stream = handle.createReadStream({ start: 0, end: size - 1, autoClose: false });
184
+ for await (const chunk of stream) {
185
+ hash.update(chunk);
186
+ read += chunk.length;
187
+ yield chunk;
188
+ }
189
+ }
190
+ if (read !== size) {
191
+ throw new Error(`${file.path} was cut short while it was read. A writer changed it in place; export again.`);
192
+ }
193
+ }
194
+ yield tarPadding(size);
195
+ recorded.push({ path: file.path, class: file.class, size, sha256: hash.digest('hex') });
196
+ bytes += size;
197
+ }
198
+ finally {
199
+ await handle.close();
200
+ }
201
+ }
202
+ await options.progress?.({
203
+ files: index + 1,
204
+ totalFiles: plan.files.length,
205
+ bytes,
206
+ totalBytes: plan.bytes,
207
+ });
208
+ }
209
+ yield TAR_END;
210
+ }
211
+ /**
212
+ * `manifest.json`, which needs the hashes of every file, is written as the
213
+ * first gzip member and the files follow as the second. gzip readers and tar
214
+ * take the two members as one stream.
215
+ */
216
+ export async function writeSiteExport(plan, options) {
217
+ const { now } = options;
218
+ const stamp = `${String(process.pid)}-${randomBytes(4).toString('hex')}`;
219
+ const body = `${options.out}.${stamp}.body.tmp`;
220
+ const whole = `${options.out}.${stamp}.tmp`;
221
+ const files = [];
222
+ try {
223
+ await pipeline(tarEntries(plan, files, options), createGzip(), createWriteStream(body, { mode: 0o600, flags: 'wx' }));
224
+ const manifest = { ...plan.site, exportedAt: now.toISOString(), files };
225
+ const text = Buffer.from(`${JSON.stringify(manifest, null, 2)}\n`);
226
+ const head = gzipSync(Buffer.concat([
227
+ tarHeader({ name: MANIFEST_NAME, mode: 0o600, size: text.length, mtime: now }),
228
+ text,
229
+ tarPadding(text.length),
230
+ ]));
231
+ await pipeline(async function* () {
232
+ yield head;
233
+ yield* createReadStream(body);
234
+ }, createWriteStream(whole, { mode: 0o600, flags: 'wx' }));
235
+ await rename(whole, options.out);
236
+ return manifest;
237
+ }
238
+ finally {
239
+ await rm(body, { force: true });
240
+ await rm(whole, { force: true });
241
+ }
242
+ }
243
+ //# sourceMappingURL=site-export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"site-export.js","sourceRoot":"","sources":["../../src/export/site-export.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ import type { DataFileDeclaration } from '../files/data-files.ts';
2
+ import type { SettingsRegistry } from '../settings/types.ts';
3
+ import type { ExportManifest } from './site-export.ts';
4
+ /**
5
+ * Nothing is made, renamed or removed beside a target, and the target itself
6
+ * is never renamed or removed, because on Docker each one is a mount point.
7
+ * Every move stays inside one target, so on one filesystem.
8
+ */
9
+ export interface ImportTargets {
10
+ readonly contentDir: string;
11
+ readonly dataDir: string;
12
+ }
13
+ export interface ArchivedManifest {
14
+ readonly manifest: ExportManifest;
15
+ readonly marker: string;
16
+ }
17
+ export type TargetState = 'empty' | 'occupied' | 'unfinished';
18
+ export interface ImportTarget {
19
+ readonly dir: string;
20
+ readonly state: TargetState;
21
+ }
22
+ export interface StagedImport {
23
+ readonly archived: ArchivedManifest;
24
+ readonly targets: ImportTargets;
25
+ readonly content: string | undefined;
26
+ readonly data: string;
27
+ readonly states: readonly ImportTarget[];
28
+ readonly skipped: readonly {
29
+ readonly path: string;
30
+ readonly why: string;
31
+ }[];
32
+ readonly created: readonly string[];
33
+ }
34
+ export declare function parseManifest(text: string): ExportManifest;
35
+ export declare function readSiteManifest(archive: string): Promise<ArchivedManifest>;
36
+ /**
37
+ * A plugin's own declarations exist only once it is installed, which is after
38
+ * its data is in place; the export classed those files with the same plugin
39
+ * version's declarations.
40
+ */
41
+ export declare function importDeclarations(archived: ArchivedManifest, settings: SettingsRegistry): DataFileDeclaration[];
42
+ export declare function checkImportTargets(archived: ArchivedManifest, targets: ImportTargets, settings: SettingsRegistry): ImportTarget[];
43
+ export declare function discardStaging({ targets, created, }: Pick<StagedImport, 'targets' | 'created'>): Promise<void>;
44
+ export declare function stageSiteImport(options: {
45
+ readonly archive: string;
46
+ readonly archived: ArchivedManifest;
47
+ readonly targets: ImportTargets;
48
+ readonly settings: SettingsRegistry;
49
+ }): Promise<StagedImport>;
50
+ export declare function placeSiteImport(staged: StagedImport, options: {
51
+ readonly stamp: string;
52
+ readonly rename?: (from: string, to: string) => Promise<void>;
53
+ }): Promise<string[]>;
54
+ export declare function finishSiteImport(targets: ImportTargets): Promise<void>;
55
+ export type PluginFailure = {
56
+ readonly kind: 'not-installed';
57
+ readonly name: string;
58
+ readonly version: string;
59
+ readonly reason: string;
60
+ } | {
61
+ readonly kind: 'needs-newer-core';
62
+ readonly name: string;
63
+ readonly version: string;
64
+ readonly needs: string;
65
+ readonly core: string;
66
+ };
67
+ export declare function pluginFailureLine(failure: PluginFailure): string;
68
+ export declare function installArchivedPlugins(manifest: ExportManifest, options: {
69
+ readonly pluginsDir: string | undefined;
70
+ readonly registry: string;
71
+ readonly coreVersion: string;
72
+ }): Promise<PluginFailure[]>;
73
+ export declare function restoreEnabledPlugins(manifest: ExportManifest, contentDir: string): Promise<void>;
74
+ export declare function importNotes(manifest: ExportManifest): string[];
75
+ //# sourceMappingURL=site-import.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"site-import.d.ts","sourceRoot":"","sources":["../../src/export/site-import.ts"],"names":[],"mappings":"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"}