@geekity/cms 0.3.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2217 -214
- package/admin/components/fields.njk +165 -0
- package/admin/layouts/base.njk +1 -1
- package/admin/layouts/settings-page.njk +26 -0
- package/admin/layouts/shell.njk +17 -3
- package/admin/pages/account/forgot.njk +47 -0
- package/admin/pages/account/login.njk +26 -0
- package/admin/pages/account/reset.njk +38 -0
- package/admin/pages/account/setup.njk +28 -0
- package/admin/pages/appearance/themes.njk +69 -0
- package/admin/pages/comments/all.njk +133 -0
- package/admin/{layouts/dashboard.njk → pages/dashboard/home.njk} +8 -15
- package/admin/{layouts/document-conflict.njk → pages/documents/conflict.njk} +1 -0
- package/admin/{layouts/document-editor.njk → pages/documents/editor.njk} +75 -59
- package/admin/{layouts/document-list.njk → pages/documents/list.njk} +19 -2
- package/admin/pages/documents/taxonomy.njk +95 -0
- package/admin/pages/federation/followers.njk +238 -0
- package/admin/pages/federation/settings.njk +77 -0
- package/admin/pages/media/library.njk +160 -0
- package/admin/pages/messages/all.njk +110 -0
- package/admin/pages/navigation/menus.njk +129 -0
- package/admin/{layouts → pages}/placeholder.njk +5 -1
- package/admin/pages/settings/discussion.njk +99 -0
- package/admin/pages/settings/email.njk +203 -0
- package/admin/pages/settings/general.njk +29 -0
- package/admin/pages/settings/permalinks.njk +50 -0
- package/admin/pages/settings/reading.njk +64 -0
- package/admin/pages/tools/content-index.njk +89 -0
- package/admin/pages/users/edit.njk +239 -0
- package/admin/pages/users/list.njk +51 -0
- package/admin/pages/users/new.njk +41 -0
- package/admin/static/admin.css +558 -3
- package/admin/static/copy.js +52 -0
- package/admin/static/editor.js +16 -16
- package/admin/static/slug.js +61 -0
- package/dist/access-log.d.ts +44 -0
- package/dist/access-log.d.ts.map +1 -0
- package/dist/access-log.js +71 -0
- package/dist/access-log.js.map +1 -0
- package/dist/admin/accounts.d.ts +413 -0
- package/dist/admin/accounts.d.ts.map +1 -0
- package/dist/admin/accounts.js +680 -0
- package/dist/admin/accounts.js.map +1 -0
- package/dist/admin/appearance.d.ts +80 -0
- package/dist/admin/appearance.d.ts.map +1 -0
- package/dist/admin/appearance.js +136 -0
- package/dist/admin/appearance.js.map +1 -0
- package/dist/admin/comments.d.ts +90 -0
- package/dist/admin/comments.d.ts.map +1 -0
- package/dist/admin/comments.js +244 -0
- package/dist/admin/comments.js.map +1 -0
- package/dist/admin/credentials.d.ts +26 -2
- package/dist/admin/credentials.d.ts.map +1 -1
- package/dist/admin/credentials.js +35 -2
- package/dist/admin/credentials.js.map +1 -1
- package/dist/admin/documents.d.ts +117 -10
- package/dist/admin/documents.d.ts.map +1 -1
- package/dist/admin/documents.js +328 -41
- package/dist/admin/documents.js.map +1 -1
- package/dist/admin/federation.d.ts +161 -50
- package/dist/admin/federation.d.ts.map +1 -1
- package/dist/admin/federation.js +235 -93
- package/dist/admin/federation.js.map +1 -1
- package/dist/admin/formatting.d.ts +20 -0
- package/dist/admin/formatting.d.ts.map +1 -0
- package/dist/admin/formatting.js +72 -0
- package/dist/admin/formatting.js.map +1 -0
- package/dist/admin/headers.d.ts +65 -0
- package/dist/admin/headers.d.ts.map +1 -0
- package/dist/admin/headers.js +104 -0
- package/dist/admin/headers.js.map +1 -0
- package/dist/admin/index.d.ts +38 -12
- package/dist/admin/index.d.ts.map +1 -1
- package/dist/admin/index.js +25 -7
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/media.d.ts +168 -0
- package/dist/admin/media.d.ts.map +1 -0
- package/dist/admin/media.js +295 -0
- package/dist/admin/media.js.map +1 -0
- package/dist/admin/menu.d.ts +79 -0
- package/dist/admin/menu.d.ts.map +1 -0
- package/dist/admin/menu.js +143 -0
- package/dist/admin/menu.js.map +1 -0
- package/dist/admin/messages.d.ts +80 -0
- package/dist/admin/messages.d.ts.map +1 -0
- package/dist/admin/messages.js +152 -0
- package/dist/admin/messages.js.map +1 -0
- package/dist/admin/navigation.d.ts +155 -0
- package/dist/admin/navigation.d.ts.map +1 -0
- package/dist/admin/navigation.js +292 -0
- package/dist/admin/navigation.js.map +1 -0
- package/dist/admin/preview.d.ts.map +1 -1
- package/dist/admin/preview.js +31 -7
- package/dist/admin/preview.js.map +1 -1
- package/dist/admin/recovery.d.ts +92 -0
- package/dist/admin/recovery.d.ts.map +1 -0
- package/dist/admin/recovery.js +229 -0
- package/dist/admin/recovery.js.map +1 -0
- package/dist/admin/routes.d.ts +0 -20
- package/dist/admin/routes.d.ts.map +1 -1
- package/dist/admin/routes.js +164 -105
- package/dist/admin/routes.js.map +1 -1
- package/dist/admin/session.d.ts +17 -3
- package/dist/admin/session.d.ts.map +1 -1
- package/dist/admin/session.js +19 -5
- package/dist/admin/session.js.map +1 -1
- package/dist/admin/settings-discussion.d.ts +37 -0
- package/dist/admin/settings-discussion.d.ts.map +1 -0
- package/dist/admin/settings-discussion.js +117 -0
- package/dist/admin/settings-discussion.js.map +1 -0
- package/dist/admin/settings-email.d.ts +54 -0
- package/dist/admin/settings-email.d.ts.map +1 -0
- package/dist/admin/settings-email.js +189 -0
- package/dist/admin/settings-email.js.map +1 -0
- package/dist/admin/settings-federation.d.ts +48 -0
- package/dist/admin/settings-federation.d.ts.map +1 -0
- package/dist/admin/settings-federation.js +123 -0
- package/dist/admin/settings-federation.js.map +1 -0
- package/dist/admin/settings-general.d.ts +12 -0
- package/dist/admin/settings-general.d.ts.map +1 -0
- package/dist/admin/settings-general.js +48 -0
- package/dist/admin/settings-general.js.map +1 -0
- package/dist/admin/settings-page.d.ts +119 -0
- package/dist/admin/settings-page.d.ts.map +1 -0
- package/dist/admin/settings-page.js +132 -0
- package/dist/admin/settings-page.js.map +1 -0
- package/dist/admin/settings-pages.d.ts +30 -0
- package/dist/admin/settings-pages.d.ts.map +1 -0
- package/dist/admin/settings-pages.js +43 -0
- package/dist/admin/settings-pages.js.map +1 -0
- package/dist/admin/settings-permalinks.d.ts +16 -0
- package/dist/admin/settings-permalinks.d.ts.map +1 -0
- package/dist/admin/settings-permalinks.js +32 -0
- package/dist/admin/settings-permalinks.js.map +1 -0
- package/dist/admin/settings-reading.d.ts +34 -0
- package/dist/admin/settings-reading.d.ts.map +1 -0
- package/dist/admin/settings-reading.js +49 -0
- package/dist/admin/settings-reading.js.map +1 -0
- package/dist/admin/settings.d.ts +339 -96
- package/dist/admin/settings.d.ts.map +1 -1
- package/dist/admin/settings.js +600 -308
- package/dist/admin/settings.js.map +1 -1
- package/dist/admin/store.d.ts +606 -152
- package/dist/admin/store.d.ts.map +1 -1
- package/dist/admin/store.js +863 -268
- package/dist/admin/store.js.map +1 -1
- package/dist/admin/taxonomy.d.ts +114 -0
- package/dist/admin/taxonomy.d.ts.map +1 -0
- package/dist/admin/taxonomy.js +289 -0
- package/dist/admin/taxonomy.js.map +1 -0
- package/dist/admin/templates.d.ts +46 -14
- package/dist/admin/templates.d.ts.map +1 -1
- package/dist/admin/templates.js +46 -14
- package/dist/admin/templates.js.map +1 -1
- package/dist/admin/throttle.d.ts +84 -0
- package/dist/admin/throttle.d.ts.map +1 -0
- package/dist/admin/throttle.js +143 -0
- package/dist/admin/throttle.js.map +1 -0
- package/dist/admin/tools.d.ts +111 -0
- package/dist/admin/tools.d.ts.map +1 -0
- package/dist/admin/tools.js +182 -0
- package/dist/admin/tools.js.map +1 -0
- package/dist/admin/uploads.d.ts +28 -2
- package/dist/admin/uploads.d.ts.map +1 -1
- package/dist/admin/uploads.js +43 -4
- package/dist/admin/uploads.js.map +1 -1
- package/dist/admin/users.d.ts +100 -13
- package/dist/admin/users.d.ts.map +1 -1
- package/dist/admin/users.js +412 -39
- package/dist/admin/users.js.map +1 -1
- package/dist/cache.d.ts +141 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.js +207 -0
- package/dist/cache.js.map +1 -0
- package/dist/cli.d.ts +14 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +429 -21
- package/dist/cli.js.map +1 -1
- package/dist/comments/akismet.d.ts +130 -0
- package/dist/comments/akismet.d.ts.map +1 -0
- package/dist/comments/akismet.js +274 -0
- package/dist/comments/akismet.js.map +1 -0
- package/dist/comments/conversation.d.ts +29 -0
- package/dist/comments/conversation.d.ts.map +1 -0
- package/dist/comments/conversation.js +60 -0
- package/dist/comments/conversation.js.map +1 -0
- package/dist/comments/form.d.ts +123 -0
- package/dist/comments/form.d.ts.map +1 -0
- package/dist/comments/form.js +79 -0
- package/dist/comments/form.js.map +1 -0
- package/dist/comments/index.d.ts +16 -0
- package/dist/comments/index.d.ts.map +1 -0
- package/dist/comments/index.js +10 -0
- package/dist/comments/index.js.map +1 -0
- package/dist/comments/markdown.d.ts +8 -0
- package/dist/comments/markdown.d.ts.map +1 -0
- package/dist/comments/markdown.js +85 -0
- package/dist/comments/markdown.js.map +1 -0
- package/dist/comments/moderate.d.ts +71 -0
- package/dist/comments/moderate.d.ts.map +1 -0
- package/dist/comments/moderate.js +88 -0
- package/dist/comments/moderate.js.map +1 -0
- package/dist/comments/policy.d.ts +57 -0
- package/dist/comments/policy.d.ts.map +1 -0
- package/dist/comments/policy.js +80 -0
- package/dist/comments/policy.js.map +1 -0
- package/dist/comments/records.d.ts +266 -0
- package/dist/comments/records.d.ts.map +1 -0
- package/dist/comments/records.js +487 -0
- package/dist/comments/records.js.map +1 -0
- package/dist/comments/routes.d.ts +60 -0
- package/dist/comments/routes.d.ts.map +1 -0
- package/dist/comments/routes.js +212 -0
- package/dist/comments/routes.js.map +1 -0
- package/dist/comments/submission.d.ts +297 -0
- package/dist/comments/submission.d.ts.map +1 -0
- package/dist/comments/submission.js +280 -0
- package/dist/comments/submission.js.map +1 -0
- package/dist/comments/viewer.d.ts +21 -0
- package/dist/comments/viewer.d.ts.map +1 -0
- package/dist/comments/viewer.js +45 -0
- package/dist/comments/viewer.js.map +1 -0
- package/dist/config.d.ts +225 -5
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +121 -6
- package/dist/config.js.map +1 -1
- package/dist/contact/delivery.d.ts +60 -0
- package/dist/contact/delivery.d.ts.map +1 -0
- package/dist/contact/delivery.js +87 -0
- package/dist/contact/delivery.js.map +1 -0
- package/dist/contact/form.d.ts +130 -0
- package/dist/contact/form.d.ts.map +1 -0
- package/dist/contact/form.js +163 -0
- package/dist/contact/form.js.map +1 -0
- package/dist/contact/index.d.ts +17 -0
- package/dist/contact/index.d.ts.map +1 -0
- package/dist/contact/index.js +13 -0
- package/dist/contact/index.js.map +1 -0
- package/dist/contact/records.d.ts +124 -0
- package/dist/contact/records.d.ts.map +1 -0
- package/dist/contact/records.js +218 -0
- package/dist/contact/records.js.map +1 -0
- package/dist/contact/routes.d.ts +17 -0
- package/dist/contact/routes.d.ts.map +1 -0
- package/dist/contact/routes.js +127 -0
- package/dist/contact/routes.js.map +1 -0
- package/dist/contact/submission.d.ts +103 -0
- package/dist/contact/submission.d.ts.map +1 -0
- package/dist/contact/submission.js +166 -0
- package/dist/contact/submission.js.map +1 -0
- package/dist/content/document.d.ts +7 -2
- package/dist/content/document.d.ts.map +1 -1
- package/dist/content/document.js +1 -0
- package/dist/content/document.js.map +1 -1
- package/dist/content/index.d.ts +7 -2
- package/dist/content/index.d.ts.map +1 -1
- package/dist/content/index.js +4 -1
- package/dist/content/index.js.map +1 -1
- package/dist/content/markdown.d.ts.map +1 -1
- package/dist/content/markdown.js +24 -2
- package/dist/content/markdown.js.map +1 -1
- package/dist/content/parser.d.ts.map +1 -1
- package/dist/content/parser.js +11 -4
- package/dist/content/parser.js.map +1 -1
- package/dist/content/save.d.ts +5 -0
- package/dist/content/save.d.ts.map +1 -1
- package/dist/content/save.js +44 -1
- package/dist/content/save.js.map +1 -1
- package/dist/content/schedule.d.ts +125 -0
- package/dist/content/schedule.d.ts.map +1 -0
- package/dist/content/schedule.js +207 -0
- package/dist/content/schedule.js.map +1 -0
- package/dist/content/search.d.ts +64 -0
- package/dist/content/search.d.ts.map +1 -0
- package/dist/content/search.js +136 -0
- package/dist/content/search.js.map +1 -0
- package/dist/content/store.d.ts +220 -7
- package/dist/content/store.d.ts.map +1 -1
- package/dist/content/store.js +392 -67
- package/dist/content/store.js.map +1 -1
- package/dist/content/sync.d.ts +7 -1
- package/dist/content/sync.d.ts.map +1 -1
- package/dist/content/sync.js +18 -10
- package/dist/content/sync.js.map +1 -1
- package/dist/content/time.d.ts +56 -0
- package/dist/content/time.d.ts.map +1 -0
- package/dist/content/time.js +141 -0
- package/dist/content/time.js.map +1 -0
- package/dist/content/writer.d.ts.map +1 -1
- package/dist/content/writer.js +3 -0
- package/dist/content/writer.js.map +1 -1
- package/dist/env.d.ts +70 -5
- package/dist/env.d.ts.map +1 -1
- package/dist/federation/actor.d.ts +95 -41
- package/dist/federation/actor.d.ts.map +1 -1
- package/dist/federation/actor.js +180 -53
- package/dist/federation/actor.js.map +1 -1
- package/dist/federation/article.d.ts +44 -17
- package/dist/federation/article.d.ts.map +1 -1
- package/dist/federation/article.js +98 -46
- package/dist/federation/article.js.map +1 -1
- package/dist/federation/delivery.d.ts +63 -15
- package/dist/federation/delivery.d.ts.map +1 -1
- package/dist/federation/delivery.js +154 -80
- package/dist/federation/delivery.js.map +1 -1
- package/dist/federation/federation.d.ts +22 -17
- package/dist/federation/federation.d.ts.map +1 -1
- package/dist/federation/federation.js +98 -77
- package/dist/federation/federation.js.map +1 -1
- package/dist/federation/followers.d.ts +3 -2
- package/dist/federation/followers.d.ts.map +1 -1
- package/dist/federation/followers.js +6 -5
- package/dist/federation/followers.js.map +1 -1
- package/dist/federation/import-wordpress.d.ts +128 -0
- package/dist/federation/import-wordpress.d.ts.map +1 -0
- package/dist/federation/import-wordpress.js +426 -0
- package/dist/federation/import-wordpress.js.map +1 -0
- package/dist/federation/inbox.d.ts +36 -13
- package/dist/federation/inbox.d.ts.map +1 -1
- package/dist/federation/inbox.js +120 -49
- package/dist/federation/inbox.js.map +1 -1
- package/dist/federation/index.d.ts +22 -10
- package/dist/federation/index.d.ts.map +1 -1
- package/dist/federation/index.js +13 -8
- package/dist/federation/index.js.map +1 -1
- package/dist/federation/keys.d.ts +98 -20
- package/dist/federation/keys.d.ts.map +1 -1
- package/dist/federation/keys.js +269 -39
- package/dist/federation/keys.js.map +1 -1
- package/dist/federation/mount.d.ts +46 -10
- package/dist/federation/mount.d.ts.map +1 -1
- package/dist/federation/mount.js +300 -28
- package/dist/federation/mount.js.map +1 -1
- package/dist/federation/paths.d.ts +23 -35
- package/dist/federation/paths.d.ts.map +1 -1
- package/dist/federation/paths.js +26 -39
- package/dist/federation/paths.js.map +1 -1
- package/dist/federation/records.d.ts +223 -0
- package/dist/federation/records.d.ts.map +1 -0
- package/dist/federation/records.js +506 -0
- package/dist/federation/records.js.map +1 -0
- package/dist/federation/relays.d.ts +114 -0
- package/dist/federation/relays.d.ts.map +1 -0
- package/dist/federation/relays.js +290 -0
- package/dist/federation/relays.js.map +1 -0
- package/dist/federation/replies.d.ts +80 -0
- package/dist/federation/replies.d.ts.map +1 -0
- package/dist/federation/replies.js +166 -0
- package/dist/federation/replies.js.map +1 -0
- package/dist/federation/wordpress.d.ts +131 -0
- package/dist/federation/wordpress.d.ts.map +1 -0
- package/dist/federation/wordpress.js +341 -0
- package/dist/federation/wordpress.js.map +1 -0
- package/dist/files/atomic.d.ts +103 -0
- package/dist/files/atomic.d.ts.map +1 -0
- package/dist/files/atomic.js +150 -0
- package/dist/files/atomic.js.map +1 -0
- package/dist/files/index.d.ts +3 -0
- package/dist/files/index.d.ts.map +1 -0
- package/dist/files/index.js +2 -0
- package/dist/files/index.js.map +1 -0
- package/dist/forms/protection.d.ts +85 -0
- package/dist/forms/protection.d.ts.map +1 -0
- package/dist/forms/protection.js +116 -0
- package/dist/forms/protection.js.map +1 -0
- package/dist/images/icons.d.ts +59 -0
- package/dist/images/icons.d.ts.map +1 -0
- package/dist/images/icons.js +131 -0
- package/dist/images/icons.js.map +1 -0
- package/dist/images/index.d.ts +7 -0
- package/dist/images/index.d.ts.map +1 -0
- package/dist/images/index.js +4 -0
- package/dist/images/index.js.map +1 -0
- package/dist/images/markup.d.ts +47 -0
- package/dist/images/markup.d.ts.map +1 -0
- package/dist/images/markup.js +175 -0
- package/dist/images/markup.js.map +1 -0
- package/dist/images/paths.d.ts +34 -0
- package/dist/images/paths.d.ts.map +1 -0
- package/dist/images/paths.js +41 -0
- package/dist/images/paths.js.map +1 -0
- package/dist/images/variants.d.ts +104 -0
- package/dist/images/variants.d.ts.map +1 -0
- package/dist/images/variants.js +320 -0
- package/dist/images/variants.js.map +1 -0
- package/dist/index.d.ts +123 -19
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +344 -25
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +18 -0
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +34 -3
- package/dist/init.js.map +1 -1
- package/dist/mail/brevo.d.ts +35 -0
- package/dist/mail/brevo.d.ts.map +1 -0
- package/dist/mail/brevo.js +85 -0
- package/dist/mail/brevo.js.map +1 -0
- package/dist/mail/credentials.d.ts +62 -0
- package/dist/mail/credentials.d.ts.map +1 -0
- package/dist/mail/credentials.js +86 -0
- package/dist/mail/credentials.js.map +1 -0
- package/dist/mail/index.d.ts +15 -0
- package/dist/mail/index.d.ts.map +1 -0
- package/dist/mail/index.js +8 -0
- package/dist/mail/index.js.map +1 -0
- package/dist/mail/memory.d.ts +35 -0
- package/dist/mail/memory.d.ts.map +1 -0
- package/dist/mail/memory.js +29 -0
- package/dist/mail/memory.js.map +1 -0
- package/dist/mail/provider.d.ts +80 -0
- package/dist/mail/provider.d.ts.map +1 -0
- package/dist/mail/provider.js +23 -0
- package/dist/mail/provider.js.map +1 -0
- package/dist/mail/service.d.ts +156 -0
- package/dist/mail/service.d.ts.map +1 -0
- package/dist/mail/service.js +265 -0
- package/dist/mail/service.js.map +1 -0
- package/dist/mail/smtp.d.ts +39 -0
- package/dist/mail/smtp.d.ts.map +1 -0
- package/dist/mail/smtp.js +58 -0
- package/dist/mail/smtp.js.map +1 -0
- package/dist/mail/templates.d.ts +91 -0
- package/dist/mail/templates.d.ts.map +1 -0
- package/dist/mail/templates.js +69 -0
- package/dist/mail/templates.js.map +1 -0
- package/dist/notifications/comments.d.ts +66 -0
- package/dist/notifications/comments.d.ts.map +1 -0
- package/dist/notifications/comments.js +151 -0
- package/dist/notifications/comments.js.map +1 -0
- package/dist/notifications/digest.d.ts +135 -0
- package/dist/notifications/digest.d.ts.map +1 -0
- package/dist/notifications/digest.js +287 -0
- package/dist/notifications/digest.js.map +1 -0
- package/dist/notifications/index.d.ts +13 -0
- package/dist/notifications/index.d.ts.map +1 -0
- package/dist/notifications/index.js +8 -0
- package/dist/notifications/index.js.map +1 -0
- package/dist/notifications/links.d.ts +60 -0
- package/dist/notifications/links.d.ts.map +1 -0
- package/dist/notifications/links.js +63 -0
- package/dist/notifications/links.js.map +1 -0
- package/dist/notifications/optouts.d.ts +48 -0
- package/dist/notifications/optouts.d.ts.map +1 -0
- package/dist/notifications/optouts.js +93 -0
- package/dist/notifications/optouts.js.map +1 -0
- package/dist/notifications/preferences.d.ts +158 -0
- package/dist/notifications/preferences.d.ts.map +1 -0
- package/dist/notifications/preferences.js +195 -0
- package/dist/notifications/preferences.js.map +1 -0
- package/dist/notifications/routes.d.ts +28 -0
- package/dist/notifications/routes.d.ts.map +1 -0
- package/dist/notifications/routes.js +184 -0
- package/dist/notifications/routes.js.map +1 -0
- package/dist/notifications/tokens.d.ts +60 -0
- package/dist/notifications/tokens.d.ts.map +1 -0
- package/dist/notifications/tokens.js +125 -0
- package/dist/notifications/tokens.js.map +1 -0
- package/dist/notify.d.ts +84 -0
- package/dist/notify.d.ts.map +1 -0
- package/dist/notify.js +149 -0
- package/dist/notify.js.map +1 -0
- package/dist/web/archive.d.ts +49 -0
- package/dist/web/archive.d.ts.map +1 -0
- package/dist/web/archive.js +59 -0
- package/dist/web/archive.js.map +1 -0
- package/dist/web/assets.d.ts +6 -5
- package/dist/web/assets.d.ts.map +1 -1
- package/dist/web/assets.js +5 -7
- package/dist/web/assets.js.map +1 -1
- package/dist/web/authors.d.ts +143 -0
- package/dist/web/authors.d.ts.map +1 -0
- package/dist/web/authors.js +178 -0
- package/dist/web/authors.js.map +1 -0
- package/dist/web/comments.d.ts +60 -0
- package/dist/web/comments.d.ts.map +1 -0
- package/dist/web/comments.js +207 -0
- package/dist/web/comments.js.map +1 -0
- package/dist/web/context.d.ts +162 -28
- package/dist/web/context.d.ts.map +1 -1
- package/dist/web/context.js +123 -26
- package/dist/web/context.js.map +1 -1
- package/dist/web/conversation.d.ts +209 -0
- package/dist/web/conversation.d.ts.map +1 -0
- package/dist/web/conversation.js +557 -0
- package/dist/web/conversation.js.map +1 -0
- package/dist/web/documents.d.ts +36 -6
- package/dist/web/documents.d.ts.map +1 -1
- package/dist/web/documents.js +52 -10
- package/dist/web/documents.js.map +1 -1
- package/dist/web/feed-atom.d.ts +22 -0
- package/dist/web/feed-atom.d.ts.map +1 -0
- package/dist/web/feed-atom.js +83 -0
- package/dist/web/feed-atom.js.map +1 -0
- package/dist/web/feed-item.d.ts +145 -0
- package/dist/web/feed-item.d.ts.map +1 -0
- package/dist/web/feed-item.js +120 -0
- package/dist/web/feed-item.js.map +1 -0
- package/dist/web/feed-json.d.ts +79 -0
- package/dist/web/feed-json.d.ts.map +1 -0
- package/dist/web/feed-json.js +53 -0
- package/dist/web/feed-json.js.map +1 -0
- package/dist/web/feed-rss.d.ts +26 -0
- package/dist/web/feed-rss.d.ts.map +1 -0
- package/dist/web/feed-rss.js +203 -0
- package/dist/web/feed-rss.js.map +1 -0
- package/dist/web/feed-source.d.ts +244 -0
- package/dist/web/feed-source.d.ts.map +1 -0
- package/dist/web/feed-source.js +201 -0
- package/dist/web/feed-source.js.map +1 -0
- package/dist/web/feed-xml.d.ts +63 -0
- package/dist/web/feed-xml.d.ts.map +1 -0
- package/dist/web/feed-xml.js +116 -0
- package/dist/web/feed-xml.js.map +1 -0
- package/dist/web/feeds.d.ts +31 -96
- package/dist/web/feeds.d.ts.map +1 -1
- package/dist/web/feeds.js +94 -198
- package/dist/web/feeds.js.map +1 -1
- package/dist/web/health.d.ts +31 -0
- package/dist/web/health.d.ts.map +1 -0
- package/dist/web/health.js +44 -0
- package/dist/web/health.js.map +1 -0
- package/dist/web/index.d.ts +30 -10
- package/dist/web/index.d.ts.map +1 -1
- package/dist/web/index.js +18 -7
- package/dist/web/index.js.map +1 -1
- package/dist/web/navigation.d.ts +195 -0
- package/dist/web/navigation.d.ts.map +1 -0
- package/dist/web/navigation.js +300 -0
- package/dist/web/navigation.js.map +1 -0
- package/dist/web/negotiate.d.ts +31 -0
- package/dist/web/negotiate.d.ts.map +1 -1
- package/dist/web/negotiate.js +31 -11
- package/dist/web/negotiate.js.map +1 -1
- package/dist/web/recent.d.ts +43 -0
- package/dist/web/recent.d.ts.map +1 -0
- package/dist/web/recent.js +37 -0
- package/dist/web/recent.js.map +1 -0
- package/dist/web/render.d.ts +203 -9
- package/dist/web/render.d.ts.map +1 -1
- package/dist/web/render.js +341 -17
- package/dist/web/render.js.map +1 -1
- package/dist/web/routes.d.ts +25 -8
- package/dist/web/routes.d.ts.map +1 -1
- package/dist/web/routes.js +854 -93
- package/dist/web/routes.js.map +1 -1
- package/dist/web/sanitize.d.ts +19 -0
- package/dist/web/sanitize.d.ts.map +1 -0
- package/dist/web/sanitize.js +272 -0
- package/dist/web/sanitize.js.map +1 -0
- package/dist/web/search.d.ts +79 -0
- package/dist/web/search.d.ts.map +1 -0
- package/dist/web/search.js +94 -0
- package/dist/web/search.js.map +1 -0
- package/dist/web/sitemap.d.ts +120 -0
- package/dist/web/sitemap.d.ts.map +1 -0
- package/dist/web/sitemap.js +199 -0
- package/dist/web/sitemap.js.map +1 -0
- package/dist/web/taxonomy.d.ts +152 -0
- package/dist/web/taxonomy.d.ts.map +1 -0
- package/dist/web/taxonomy.js +237 -0
- package/dist/web/taxonomy.js.map +1 -0
- package/dist/web/templates.d.ts +54 -16
- package/dist/web/templates.d.ts.map +1 -1
- package/dist/web/templates.js +109 -28
- package/dist/web/templates.js.map +1 -1
- package/dist/web/themes.d.ts +226 -0
- package/dist/web/themes.d.ts.map +1 -0
- package/dist/web/themes.js +314 -0
- package/dist/web/themes.js.map +1 -0
- package/dist/webmention/discovery.d.ts +51 -0
- package/dist/webmention/discovery.d.ts.map +1 -0
- package/dist/webmention/discovery.js +176 -0
- package/dist/webmention/discovery.js.map +1 -0
- package/dist/webmention/html.d.ts +71 -0
- package/dist/webmention/html.d.ts.map +1 -0
- package/dist/webmention/html.js +285 -0
- package/dist/webmention/html.js.map +1 -0
- package/dist/webmention/index.d.ts +12 -0
- package/dist/webmention/index.d.ts.map +1 -0
- package/dist/webmention/index.js +8 -0
- package/dist/webmention/index.js.map +1 -0
- package/dist/webmention/links.d.ts +18 -0
- package/dist/webmention/links.d.ts.map +1 -0
- package/dist/webmention/links.js +64 -0
- package/dist/webmention/links.js.map +1 -0
- package/dist/webmention/microformats.d.ts +93 -0
- package/dist/webmention/microformats.d.ts.map +1 -0
- package/dist/webmention/microformats.js +376 -0
- package/dist/webmention/microformats.js.map +1 -0
- package/dist/webmention/receive.d.ts +141 -0
- package/dist/webmention/receive.d.ts.map +1 -0
- package/dist/webmention/receive.js +264 -0
- package/dist/webmention/receive.js.map +1 -0
- package/dist/webmention/routes.d.ts +37 -0
- package/dist/webmention/routes.d.ts.map +1 -0
- package/dist/webmention/routes.js +75 -0
- package/dist/webmention/routes.js.map +1 -0
- package/dist/webmention/service.d.ts +94 -0
- package/dist/webmention/service.d.ts.map +1 -0
- package/dist/webmention/service.js +207 -0
- package/dist/webmention/service.js.map +1 -0
- package/package.json +11 -6
- package/templates/site/content/_data/site.json +8 -0
- package/templates/site/content/pages/about.md +7 -0
- package/templates/site/content/posts/2026-01-01-hello-world.md +5 -3
- package/templates/site/geekity.config.ts +11 -1
- package/templates/site/tsconfig.json +1 -1
- package/themes/default/README.md +1216 -50
- package/themes/default/layouts/404.njk +2 -3
- package/themes/default/layouts/author.njk +36 -0
- package/themes/default/layouts/base.njk +161 -31
- package/themes/default/layouts/category.njk +27 -0
- package/themes/default/layouts/front-page.njk +56 -0
- package/themes/default/layouts/home.njk +17 -1
- package/themes/default/layouts/page.njk +57 -5
- package/themes/default/layouts/post.njk +78 -19
- package/themes/default/layouts/search.njk +57 -0
- package/themes/default/layouts/tag.njk +3 -6
- package/themes/default/mail/comment-digest.html.njk +37 -0
- package/themes/default/mail/comment-digest.subject.njk +3 -0
- package/themes/default/mail/comment-digest.txt.njk +40 -0
- package/themes/default/mail/comment-pending.html.njk +27 -0
- package/themes/default/mail/comment-pending.subject.njk +2 -0
- package/themes/default/mail/comment-pending.txt.njk +24 -0
- package/themes/default/mail/comment-reply.html.njk +21 -0
- package/themes/default/mail/comment-reply.subject.njk +2 -0
- package/themes/default/mail/comment-reply.txt.njk +22 -0
- package/themes/default/mail/contact-message.html.njk +24 -0
- package/themes/default/mail/contact-message.subject.njk +5 -0
- package/themes/default/mail/contact-message.txt.njk +20 -0
- package/themes/default/mail/password-changed.html.njk +18 -0
- package/themes/default/mail/password-changed.subject.njk +2 -0
- package/themes/default/mail/password-changed.txt.njk +17 -0
- package/themes/default/mail/password-reset.html.njk +22 -0
- package/themes/default/mail/password-reset.subject.njk +2 -0
- package/themes/default/mail/password-reset.txt.njk +18 -0
- package/themes/default/mail/test.html.njk +14 -0
- package/themes/default/mail/test.subject.njk +2 -0
- package/themes/default/mail/test.txt.njk +12 -0
- package/themes/default/partials/archive.njk +27 -0
- package/themes/default/partials/bio.njk +71 -0
- package/themes/default/partials/comment-form.njk +137 -0
- package/themes/default/partials/contact-form.njk +88 -0
- package/themes/default/partials/conversation.njk +139 -0
- package/themes/default/partials/feeds.njk +26 -0
- package/themes/default/partials/jsonld.njk +120 -0
- package/themes/default/partials/menu.njk +32 -0
- package/themes/default/partials/pagination.njk +12 -6
- package/themes/default/partials/post-list.njk +51 -18
- package/themes/default/partials/search-form.njk +22 -0
- package/themes/default/partials/tags.njk +26 -5
- package/themes/default/static/highlight.js +4 -0
- package/themes/default/static/style.css +1142 -194
- package/themes/default/theme.json +9 -0
- package/admin/layouts/federation.njk +0 -145
- package/admin/layouts/login.njk +0 -23
- package/admin/layouts/settings.njk +0 -116
- package/admin/layouts/setup.njk +0 -27
- package/admin/layouts/users.njk +0 -91
- /package/admin/{layouts/_flash.njk → components/flash.njk} +0 -0
package/dist/index.js
CHANGED
|
@@ -1,70 +1,364 @@
|
|
|
1
|
+
import { MemoryKvStore } from '@fedify/fedify';
|
|
1
2
|
import { serve as serveNode } from '@hono/node-server';
|
|
2
3
|
import { Hono } from 'hono';
|
|
3
|
-
import {
|
|
4
|
+
import { createAccessLog } from './access-log.js';
|
|
5
|
+
import { baselineSecurityHeaders, effectiveBaseUrl, listUsers, migrateSettingsToFile, migrateUsersToFile, mountAdmin, openAdminStore, readSiteSettings, } from './admin/index.js';
|
|
6
|
+
import { withRebuiltDatabase } from './cache.js';
|
|
4
7
|
import { resolveConfig } from './config.js';
|
|
5
|
-
import { createContentSync, openContentStore } from './content/index.js';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
import { createContentSync, createScheduler, openContentStore } from './content/index.js';
|
|
9
|
+
import { createMailService } from './mail/index.js';
|
|
10
|
+
import { createCommentDigest, createCommentNotifier } from './notifications/index.js';
|
|
11
|
+
import { assertActorKeysUsable, createDeliveryService, createRelayService, createSiteFederation, createWordPressFederation, migrateActorKeysToFiles, migrateFederationToFiles, mountFederation, rebuildFederationIndexes, } from './federation/index.js';
|
|
12
|
+
import { createFeedNotifier } from './notify.js';
|
|
13
|
+
import { commentFormFor, createAkismetChecker, rebuildCommentIndexes } from './comments/index.js';
|
|
14
|
+
import { contactFormFor } from './contact/index.js';
|
|
15
|
+
import { createConversation, createRenderer, createSiteDataSource, createThemeSource, mountHealth, mountPublicSite, recentPosts, themeName, } from './web/index.js';
|
|
16
|
+
import { createWebmentionService } from './webmention/index.js';
|
|
17
|
+
export { createFeedNotifier, NOTIFY_TIMEOUT_MS } from './notify.js';
|
|
18
|
+
export { LANGUAGE_TAG_PATTERN, COMMENT_ACTIONS, COMMENT_ADMIN_FIELDS, COMMENT_KINDS, COMMENT_SOURCES, COMMENT_STATUSES, COMMENT_TABS, COMMENTS_MODERATE_PATH, COMMENTS_PATH, COMMENTS_PER_PAGE, COMMENTS_REPLY_PATH, COMMENTS_SECTION, commentListUrl, mountCommentsScreen, pendingComments, MESSAGE_FIELDS, MESSAGE_TABS, MESSAGES_DELETE_PATH, MESSAGES_PATH, MESSAGES_PER_PAGE, MESSAGES_READ_PATH, MESSAGES_SECTION, messageListUrl, mountMessagesScreen, unreadMessages, DELIVERY_STATUSES, RELAY_STATES, ADMIN_ASSET_MAX_AGE, ADMIN_ASSET_PREFIX, ADMIN_PREFIX, ADMIN_SECTIONS, ADMIN_STATIC_DIR, ADMIN_TEMPLATES, actorSummary, addUserProblems, adminAssetResponse, adminContentSecurityPolicy, adminSecurityHeaders, akismetPanel, AKISMET_FIELDS, AKISMET_PATH, AKISMET_REMOVE, EMAIL_PATTERN, MAIL_FIELDS, MAIL_PATH, MAIL_REMOVE, MAIL_TEST_FIELDS, MAIL_TEST_PATH, MAIL_TEST_TEMPLATE, mailPanel, ARGON2_PARAMETERS, baselineSecurityHeaders, blankForm, CHANGE_PASSWORD_PATH, changePasswordProblems, clearSessionCookie, createAdminTemplateEnvironment, createLoginThrottle, createNonce, credentialProblem, clientAddress, countUsers, createUser, CSRF_FIELD, csrfTokenMatches, DASHBOARD_RECENT_POSTS, describeWait, DEFAULT_SITE_SETTINGS, DELETE_USER_PATH, deleteUser, deleteUserRefusal, deliveryRows, DOCUMENT_FILTERS, documentFilter, DOCUMENTS_PER_PAGE, editorPath, effectiveBaseUrl, EXCLUDE_KEY, DuplicateUsernameError, emailProblem, FEDERATION_FIELDS, FEDERATION_PATH, FEDERATION_RECENT, FEDERATION_SETTINGS_PATH, findAdminAsset, findBySlug, findUser, findUserById, findUserByIdentifier, followerRow, FORGOT_PATH, formatInTimezone, formFor, applyTermChange, CATEGORY_KIND, deletePath, formFromSettings, flash, GENERATED_PASSWORD_ALPHABET, GENERATED_PASSWORD_LENGTH, generatePassword, guard, hashPassword, HSTS_MAX_AGE, HSTS_VALUE, INBOX_INTERACTIONS, inboxRows, LOCKOUT_GROWTH_LIMIT, LOGIN_PATH, LOGOUT_PATH, listingUrl, listOptionsFor, listUsers, localPosts, loginKeys, MAXIMUM_USERNAME_LENGTH, migrateSettingsToFile, migrateUsersToFile, MINIMUM_PASSWORD_LENGTH, mountAdmin, mountDocumentScreens, mountFederationScreen, mountPreview, mountRecovery, mountSettings, mountTaxonomyScreens, mountUploads, mountUsers, newEditorPath, newPasswordProblem, NONCE_BYTES, openAdminStore, PAGE_KIND, PACKAGED_ADMIN_DIR, PASSWORD_CHANGED_TEMPLATE, passwordProblem, postEditorPath, POST_KIND, primaryUser, PREVIEW_PATH, readSiteSettings, RECOVERY_ANSWER, RECOVERY_FIELDS, RELAY_RETRY_PATH, RELAY_STATE_LABELS, relayList, relayRow, renamePath, renameProblem, RESEND_PATH, resendMessage, RESET_PATH, RESET_TEMPLATE, RESET_TOKEN_LIFETIME_SECONDS, resetLink, rewriteTerm, MEDIA_DELETE_PATH, MEDIA_FIELDS, MEDIA_PATH, MEDIA_PER_PAGE, MEDIA_SECTION, MEDIA_UPLOAD_PATH, mediaPageUrl, mentionsUpload, mountMediaScreen, deleteUpload, describeUpload, listUploads, referencesTo, resolveUpload, uploadMarkdown, normalizeRelayInbox, refusedUpload, refuseOversizedUpload, returnPath, SESSION_COOKIE, SESSION_ID_BYTES, sessionIdFrom, setSessionCookie, SETTINGS_FIELDS, SETTINGS_PATH, settingsFromForm, settingsFromSiteJson, settingsProblems, SETUP_PATH, siteDataPath, siteJsonFor, splitTags, storeUpload, TAG_KIND, takeFlash, TAXONOMY_FIELDS, TAXONOMY_KINDS, tooLargeMessage, updateSiteSettings, UPLOAD_ENVELOPE_BYTES, UPLOAD_FIELD, UPLOADS_PATH, setUserEmail, setUserPassword, setUserProfile, setUserWordPressActor, ConflictingActorIdError, UnknownUserError, USER_EMAIL_PATH, USER_FIELDS, USERNAME_PATTERN, usernameProblem, USERS_FILE, USERS_FILE_MODE, usersFile, USERS_PATH, usesSecureCookies, verifyPasswordHash, verifyUserPassword, writeSiteJson, } from './admin/index.js';
|
|
19
|
+
// The database as a file a site may act on: where it is, how to throw it away,
|
|
20
|
+
// and the two refusals a boot can raise over one. The migration machinery
|
|
21
|
+
// behind them stays inside the package, because a site has no business running
|
|
22
|
+
// somebody else's ledger.
|
|
23
|
+
export { databaseFile, databaseFiles, DATABASE_SUFFIXES, discardDatabase, OutdatedDatabaseError, UnusableDatabaseError, } from './cache.js';
|
|
24
|
+
export { DEFAULT_IMAGE_FORMATS, DEFAULT_IMAGE_WIDTHS, DEFAULT_UPLOAD_MAX_BYTES, DEFAULT_UPLOAD_TYPES, defineConfig, KNOWN_IMAGE_FORMATS, resolveConfig, } from './config.js';
|
|
25
|
+
// Native comments: the files they live in, the restricted Markdown they are
|
|
26
|
+
// rendered with, the rules that decide whether a post is still taking them, the
|
|
27
|
+
// one seam a spam checker plugs into, and the Akismet checker that plugs into
|
|
28
|
+
// it when the site has a key.
|
|
29
|
+
export { addComment, AKISMET_ENDPOINT, AKISMET_KEY_FILE, AKISMET_TIMEOUT_MS, AKISMET_USER_AGENT, akismetKeyPath, blankValues, COMMENT_FIELDS, COMMENT_NOTICE_PARAM, COMMENT_NOTICES, COMMENT_POST_PATH, COMMENT_RATE_LIMIT, COMMENT_RATE_WINDOW_SECONDS, COMMENT_REPLY_PARAM, COMMENT_SALT_FILE, COMMENTS_DATA_DIRECTORY, COMMENTS_FRONT_MATTER_KEY, commentForm, commentFormFor, commentKeys, commentNoticeFor, commentPolicyOf, commentProblems, commentsDirectory, commentsFile, commentsOpen, createAkismetChecker, DEFAULT_COMMENTS_CLOSE_AFTER_DAYS, deleteComment, hashClientAddress, heldWebmention, intakeComment, isModerationAction, MAXIMUM_BODY_LENGTH, MAXIMUM_FORM_AGE_SECONDS, MAXIMUM_NAME_LENGTH, MAXIMUM_URL_LENGTH, MINIMUM_SUBMIT_SECONDS, moderateComment, MODERATION_ACTIONS, mountComments, normalizeWebsite, readAkismetKey, readComments, rebuildCommentIndexes, refilledCommentForm, removeAkismetKey, renderCommentMarkdown, signedInCommenter, signedInCommentForm, submitComment, updateComment, valuesOf, verifyAkismetKey, writeAkismetKey, } from './comments/index.js';
|
|
30
|
+
// The contact form (TASK-56): the front matter key a page opts in with, the
|
|
31
|
+
// endpoint the form posts to, the files under `data/contact/` that hold what
|
|
32
|
+
// it collected, and the message that carries one on to the site's address.
|
|
33
|
+
export { addContactMessage, blankContactValues, CONTACT_ANCHOR, CONTACT_DATA_DIRECTORY, CONTACT_FIELDS, CONTACT_FRONT_MATTER_KEY, CONTACT_MESSAGE_TEMPLATE, CONTACT_NOTICE_PARAM, CONTACT_NOTICES, CONTACT_POST_PATH, CONTACT_RATE_LIMIT, CONTACT_RATE_WINDOW_SECONDS, contactDirectory, contactForm, contactFormFor, contactKeys, contactMessageFile, contactMessageId, contactNoticeFor, contactOpen, contactProblems, contactRecipient, contactValuesOf, countContactMessagesByStatus, countUnreadContactMessages, deleteContactMessage, listContactMessages, MAXIMUM_CONTACT_EMAIL_LENGTH, MAXIMUM_CONTACT_MESSAGE_LENGTH, MAXIMUM_CONTACT_NAME_LENGTH, MAXIMUM_CONTACT_SUBJECT_LENGTH, mountContact, readContactMessage, refilledContactForm, sendContactMessage, setContactMessageRead, submitContactMessage, } from './contact/index.js';
|
|
34
|
+
// The defences every public form here shares (TASK-56): the honeypot, the age
|
|
35
|
+
// of a rendered form, and the salted hash of where a submission came from.
|
|
36
|
+
export { ADDRESS_SALT_FILE, FORM_LOADED_FIELD, FORM_TRAP_FIELD, formAgeSeconds, formTimingRefusal, trapped, } from './forms/protection.js';
|
|
37
|
+
export { readFileIfPresentSync, updateFileAtomically, withFileLock, writeFileAtomically, writeFileAtomicallySync, } from './files/index.js';
|
|
10
38
|
export { DirectoryNotEmptyError, initSite, SITE_TEMPLATE_DIR, siteManifest } from './init.js';
|
|
11
|
-
export {
|
|
12
|
-
export {
|
|
13
|
-
|
|
39
|
+
export { describeImage, findImageVariant, generateImageVariants, imageMediaType, IMAGE_DIRECTORY, IMAGE_RECORD_NAME, IMAGE_SIZES, removeImageVariants, responsiveImages, siteIcons, siteImageMarkup, variantUrl, VARIANT_ASSET_PREFIX, } from './images/index.js';
|
|
40
|
+
export { calendarDayIn, contentFilePath, createContentSync, createScheduler, DATABASE_FILE, dateSortKey, DEFAULT_DEBOUNCE_MS, DEFAULT_TIMEZONE, defaultPermalink, documentContent, documentFrontMatter, freeSlug, DuplicatePermalinkError, hashDocument, htmlToText, isScheduled, isTrashedPath, KNOWN_FRONT_MATTER_KEYS, KNOWN_UPLOAD_TYPES, matchesSignature, MAXIMUM_DELAY_MS, MAXIMUM_QUERY_TERMS, normalizeBody, normalizeUploadType, openContentStore, parseDocument, renderMarkdown, saveDocument, SCHEDULE_ORIGIN, scheduledFor, searchExpression, searchText, serializeDocument, slugify, SNIPPET_CLOSE, SNIPPET_OPEN, systemClock, systemTimers, toUtcInstant, TRASH_DIRECTORY, typeForPath, UPLOAD_MEDIA_TYPES, wallClockIn, zoneLabel, } from './content/index.js';
|
|
41
|
+
// Notifications: who is told about a comment, the switchboard that decides,
|
|
42
|
+
// and the signed one-click links the messages carry (TASK-55).
|
|
43
|
+
export { addCommentOptOut, COMMENT_DIGEST_TEMPLATE, COMMENT_OPTOUTS_FILE, COMMENT_PENDING_TEMPLATE, COMMENT_REPLY_TEMPLATE, commentOptOutsFile, COMMENTS_NOTIFICATION, createCommentDigest, createCommentNotifier, DEFAULT_DELIVERY_MODE, DELIVERY_MODE_LABELS, DELIVERY_WINDOW_MS, deliveryMode, DIGEST_MAX_ITEMS, DIGEST_TICK_MS, DIGEST_TIMES_FILE, digestTimesFile, hasOptedOut, isBatchedMode, MODERATE_PATH, MODERATION_TOKEN_LIFETIME_SECONDS, moderationLink, mountNotificationLinks, NOTIFICATION_DELIVERY_MODES, NOTIFICATION_EVENTS, NOTIFICATION_FIELDS, NOTIFICATION_SECRET_FILE, notificationEvent, notificationMode, notificationRecipients, notificationSwitches, notificationTokenExpiry, notificationWanted, readCommentOptOuts, readDigestTimes, readNotificationToken, recordDigestTimes, signNotificationToken, systemNotificationTimers, UNSUBSCRIBE_ACTION, UNSUBSCRIBE_PATH, UNSUBSCRIBE_TOKEN_LIFETIME_SECONDS, unsubscribeLink, withNotification, withNotificationMode, } from './notifications/index.js';
|
|
44
|
+
// Email: the one seam a mail service plugs into, the two providers the package
|
|
45
|
+
// ships, the in-memory one a test observes, and the service every feature that
|
|
46
|
+
// emails goes through.
|
|
47
|
+
export { BREVO_ENDPOINT, BREVO_TIMEOUT_MS, createBrevoProvider, createMailService, createMailTemplates, createMemoryMailProvider, createSmtpProvider, DEFAULT_MAIL_ATTEMPTS, defaultMailBackoffMs, MAIL_CREDENTIALS_FILE, MAIL_PROVIDERS, mailCredentialsPath, mailTemplateFiles, readMailCredentials, removeMailCredentials, SMTP_TIMEOUT_MS, writeMailCredentials, } from './mail/index.js';
|
|
48
|
+
export { acceptedRelays, acceptRelay, addFollower, appendInboxActivity, ACTOR_KEY_ALGORITHMS, ACTOR_PATH, assertActorKeysUsable, actorKeyFile, actorKeysDir, articleObjectId, actorAliases, actorId, avatarUrl, keyIdFor, mainKeyId, multikeyId, senderKeyPairs, userActor, userByUsername, createActivityId, createDeliveryService, createRelayService, createSiteFederation, deleteActivityId, deliveryTargets, documentAuthor, federatedPost, federatedUsernames, FEDERATION_DATA_DIRECTORY, federationOrigin, acctOf, handleHref, userDirectory, webFingerSubject, WEBFINGER_PATH, followerFrom, followerRecipient, FOLLOWERS_FILE, FOLLOWERS_PAGE_SIZE, FOLLOWERS_PATH, actorHandle, followersFile, followersPage, FOLLOWING_PATH, groupByInbox, handleAccept, handleDelete, handleFollow, handleLoggedActivity, handleReject, handleUndo, INBOX_PATH, isFederatedDocument, lastFollowersCursor, inboxDirectory, inboxFile, inboxMonth, INBOX_DIRECTORY, inboxRowFrom, loadActorKeyPairs, logActivity, migrateActorKeysToFiles, migrateFederationToFiles, mountFederation, NODEINFO_PATH, OUTBOX_PAGE_SIZE, OUTBOX_PATH, postArticle, postCreateActivity, postDeleteActivity, postUpdateActivity, readFollowers, readInboxLog, rebuildFederationIndexes, rejectRelay, relayAnswering, relayRecipient, REPLY_ACTIVITY_TYPE, replyFrom, replyTargetOf, SHARED_INBOX_PATH, SOFTWARE_NAME, SOURCE_MEDIA_TYPE, toInstant, updateActivityId, } from './federation/index.js';
|
|
49
|
+
export { absoluteUrl, ACTIVITY_STREAMS_MEDIA_TYPES, activityStreamsId, alternateLinks, archiveMonths, ARCHIVE_FRONT_MATTER_KEY, archiveOpen, assetNotModified, assetResponse, atomEntry, atomFeed, AUTHOR_BASE, authorContext, authorFeedHref, authorHref, authorNames, categoryHref, commentAnchor, commentsFeedHref, commentsFeedPath, commentsFeedResponse, commentsRssFeed, COMMENTS_ROOT, COMMENTS_TITLE_PREFIX, contentEtag, createConversation, createRenderer, createSiteDataSource, createTemplateEnvironment, DEFAULT_FEED_SIZE, DEFAULT_MENU_NAME, DEFAULT_TAXONOMY_BASES, DEFAULT_POSTS_PER_PAGE, DOCUMENT_REPRESENTATIONS, documentContext, cdata, contentTypeOf, DC_NAMESPACE, DEFAULT_FEED_LANGUAGE, DEFAULT_NOTIFY_SERVER, documentJson, escapeXml, excerptFromHtml, EXCERPT_WORDS, FEED_ALIASES, FEED_CONTENT_TYPES, FEED_FORMATS, FEED_GENERATOR, FEED_GENERATOR_URI, FEED_ITEM_REVISION, FEED_SEGMENT, FEED_SEGMENTS, feedComments, feedExcerpt, feedHref, feedItem, feedItems, feedLanguage, feedLinkHeader, feedPathUnder, feedResponse, feedSize, findAsset, findThemeAsset, findThemeFile, findUpload, forgetTerm, formatDate, frontPageSlugs, homeHref, INBOX_BASE, isNotModified, isPublicDocument, JSON_FEED_VERSION, JSON_SCHEMA_VERSION, jsonFeed, jsonFeedItem, lastModifiedOf, latestModified, listingPageHref, LISTING_REPRESENTATIONS, matchesEtag, MAXIMUM_QUERY_LENGTH, MEDIA_TYPES, MENU_ITEM_FLAGS, MENU_NAME_MAX_LENGTH, MENU_NAME_PATTERN, menuItemLineProblem, menuItemOf, menuItemsFromText, menuItemsText, menuNameProblem, menusOf, mountPublicSite, navigationItems, navigationItemsOf, navigationMenu, navigationMenus, notAcceptableResponse, NOTIFY_CLOUD_PORT, NOTIFY_CLOUD_PROTOCOL, NOTIFY_PATHS, notifyEndpoints, notifyServerOf, offsetForPage, PACKAGED_THEME_DIR, PAGE_SEGMENT, paginate, parseAccept, parseAuthorPath, postObjectId, postsPerPage, prefersActivityStreams, profileContext, publicDocumentAt, recentPosts, RECENT_POSTS, recordTermRename, redirectedTerm, REPRESENTATION_EXTENSIONS, representationEtag, representationHref, representationResponse, RESERVED_TOP_LEVEL_PATHS, rfc822, spokenIn, robotsResponse, robotsTxt, ROBOTS_CONTENT_TYPE, ROBOTS_PATH, rssFeed, rssItem, readTheme, sanitizeCommentHtml, searchHref, searchJson, searchPageIndex, searchQuery, SEARCH_PAGE_PARAM, SEARCH_PATH, SEARCH_QUERY_PARAM, selectRepresentation, SITE_DATA_FILE, SITE_THEME_KIND, sitemapChildPath, sitemapDate, sitemapIndexXml, sitemapResponse, sitemapXml, SITEMAP_CHILD_ROUTE, SITEMAP_CONTENT_TYPE, SITEMAP_MAX_URLS, SITEMAP_NAMESPACE, SITEMAP_PATH, snippetHtml, SOURCE_NAMESPACE, siteAuthorContext, siteMenus, siteTimezone, splitFeedPath, splitRepresentationExtension, startOfMonth, tagHref, TAXONOMIES, userForAuthor, TAXONOMY_BASE_PATTERN, TAXONOMY_LABELS, taxonomyBaseProblems, taxonomyBases, taxonomyBasesOrDefault, taxonomyForSegment, taxonomyRedirectsOf, OPTIONAL_TEMPLATES, TEMPLATES, termHref, termRedirects, themeAssetNotModified, themeAssetResponse, THEME_ASSET_MAX_AGE, THEME_ASSET_PREFIX, THEME_STATIC_DIR, THEME_MANIFEST_FILE, themeSearchPath, UPLOAD_ASSET_MAX_AGE, UPLOAD_ASSET_PREFIX, UPLOAD_DIRECTORY, WFW_NAMESPACE, } from './web/index.js';
|
|
50
|
+
export { classesOf, createWebmentionService, discoverEndpoint, DISCOVERY_MAX_BYTES, DISCOVERY_TIMEOUT_MS, elementsIn, endpointInHeader, endpointInHtml, externalLinks, innerHtmlOf, isElement, itemsIn, linksTo, parseHtml, rawTextOf, readCapped, SEND_TIMEOUT_MS, sourceEntry, textOf, WEBMENTION_USER_AGENT, } from './webmention/index.js';
|
|
51
|
+
/**
|
|
52
|
+
* Where the scheduler's watermark lives in {@link AdminStore.getState}: the
|
|
53
|
+
* instant up to which scheduled documents have been announced.
|
|
54
|
+
*/
|
|
55
|
+
export const SCHEDULE_WATERMARK_KEY = 'schedule.watermark';
|
|
56
|
+
/**
|
|
57
|
+
* The two connections a boot takes on the one database, opened together so
|
|
58
|
+
* that either both of them survive it or neither does.
|
|
59
|
+
*
|
|
60
|
+
* The database is a cache (decision-9), so a version of it this package cannot
|
|
61
|
+
* carry forward is thrown away and read back from the files rather than being
|
|
62
|
+
* a thing anybody has to do something about. That is what
|
|
63
|
+
* {@link withRebuiltDatabase} does with an {@link OutdatedDatabaseError} — and
|
|
64
|
+
* why the content store is closed before the admin store's failure is allowed
|
|
65
|
+
* to leave here: the file cannot be deleted while a connection holds it.
|
|
66
|
+
*
|
|
67
|
+
* The failure it does not recover from is a database written by a newer
|
|
68
|
+
* `@geekity/cms`, or one damaged past opening. Both refuse the boot naming the
|
|
69
|
+
* file, because a downgrade is usually a mistake and because a database from
|
|
70
|
+
* before decision-9 still carries the settings, key and account rows the
|
|
71
|
+
* migrations below write out as files — deleting one of those to get past an
|
|
72
|
+
* error would destroy an actor's private keys. `geekity rebuild` is the door
|
|
73
|
+
* for a person who has looked and decided.
|
|
74
|
+
*/
|
|
75
|
+
function openCache(resolved) {
|
|
76
|
+
return withRebuiltDatabase(resolved.dataDir, () => {
|
|
77
|
+
const store = openContentStore({ dataDir: resolved.dataDir, now: resolved.now });
|
|
78
|
+
try {
|
|
79
|
+
return { store, admin: openAdminStore({ dataDir: resolved.dataDir }) };
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
store.close();
|
|
83
|
+
throw error;
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
}
|
|
14
87
|
/**
|
|
15
88
|
* Build a CMS around a site's config.
|
|
16
89
|
*
|
|
17
90
|
* The returned app is a plain Hono app: the public site, the admin UI and the
|
|
18
91
|
* federation endpoints are all mounted on it as later milestones land. Booting
|
|
19
|
-
* opens the SQLite
|
|
20
|
-
* any migrations, so `close()` has to be called to release it.
|
|
92
|
+
* opens the SQLite cache under `dataDir` (creating the directory) and applies
|
|
93
|
+
* any migrations, so `close()` has to be called to release it. A missing
|
|
94
|
+
* database is built and read back out of the files; see {@link openCache} for
|
|
95
|
+
* what happens to one this version cannot use.
|
|
21
96
|
*/
|
|
22
97
|
export function createCms(config = {}) {
|
|
23
98
|
const resolved = resolveConfig(config);
|
|
24
|
-
const store =
|
|
25
|
-
|
|
26
|
-
//
|
|
27
|
-
//
|
|
28
|
-
//
|
|
29
|
-
|
|
30
|
-
|
|
99
|
+
const { store, admin } = openCache(resolved);
|
|
100
|
+
// A site upgrading from the version that kept its settings in SQLite has
|
|
101
|
+
// rows nothing would read again: they become content/_data/site.json here,
|
|
102
|
+
// once, and the table goes (decision-9). A site that has already been
|
|
103
|
+
// through it does nothing but check.
|
|
104
|
+
migrateSettingsToFile({ admin, contentDir: resolved.contentDir });
|
|
105
|
+
// And the same for its actor's key pairs, which become JWK files under
|
|
106
|
+
// data/keys. This is the migration that must not fail: an actor whose
|
|
107
|
+
// private key is lost is one every follower stops being able to verify, so
|
|
108
|
+
// the rows are written out before the table is dropped, and a file that is
|
|
109
|
+
// already there always wins.
|
|
110
|
+
migrateActorKeysToFiles({ admin, dataDir: resolved.dataDir });
|
|
111
|
+
// And the accounts, which become data/users.json. The ids come with them, so
|
|
112
|
+
// a session the database already holds still names the person it was made
|
|
113
|
+
// for, and the file wins where there already is one.
|
|
114
|
+
migrateUsersToFile({ admin, dataDir: resolved.dataDir });
|
|
115
|
+
// And the log of what the inbox was told, which becomes
|
|
116
|
+
// content/_data/federation/inbox/{yyyy}-{mm}.jsonl. Unlike the three above,
|
|
117
|
+
// no table is dropped: `ap_inbox` and `followers` stay as indexes of the
|
|
118
|
+
// files, which is why the rebuild is next and runs on every boot rather than
|
|
119
|
+
// once. The site actor's followers are not migrated: decision-14 replaced it
|
|
120
|
+
// with one actor per user, and nobody inherits a follow made with somebody
|
|
121
|
+
// who no longer exists.
|
|
122
|
+
migrateFederationToFiles({ admin, contentDir: resolved.contentDir });
|
|
123
|
+
rebuildFederationIndexes({ admin, contentDir: resolved.contentDir });
|
|
124
|
+
// And the comments, which are files under content/_data/comments/ and
|
|
125
|
+
// nothing else (TASK-50). No migration goes with this one, because no
|
|
126
|
+
// earlier version of this CMS stored a comment anywhere: the rebuild is the
|
|
127
|
+
// whole of it, and it runs on every boot for the same reason the federation
|
|
128
|
+
// one does.
|
|
129
|
+
rebuildCommentIndexes({ admin, contentDir: resolved.contentDir });
|
|
130
|
+
// And, once the files are the whole story, that every user's keys are
|
|
131
|
+
// readable. This is the one thing here that can stop a boot: an actor that
|
|
132
|
+
// publishes no key is one no follower can verify, and Fedify would serve
|
|
133
|
+
// exactly that rather than complain. A minute of downtime with the file
|
|
134
|
+
// named is the better failure. A user who has never federated has no key
|
|
135
|
+
// files at all, which is not damage and does not stop anything.
|
|
136
|
+
for (const user of listUsers(resolved.dataDir)) {
|
|
137
|
+
assertActorKeysUsable(resolved.dataDir, user.username);
|
|
138
|
+
}
|
|
31
139
|
// The one thing the settings decide before a request arrives. It is settled
|
|
32
|
-
// here, at boot, rather than
|
|
33
|
-
//
|
|
140
|
+
// here, at boot, rather than per request: `baseUrl` also decides whether the
|
|
141
|
+
// session cookie is `Secure`, and flipping that under a signed-in admin
|
|
34
142
|
// would log them out of the form they just submitted.
|
|
35
|
-
resolved.baseUrl = effectiveBaseUrl(resolved,
|
|
143
|
+
resolved.baseUrl = effectiveBaseUrl(resolved, readSiteSettings(resolved.contentDir));
|
|
144
|
+
// Akismet, when the site has not named a checker of its own (TASK-52). A
|
|
145
|
+
// config that names one wins outright, because a site that has written a
|
|
146
|
+
// checker meant it; this is the one the settings screen turns on with a key
|
|
147
|
+
// rather than a deployment.
|
|
148
|
+
//
|
|
149
|
+
// Built whether or not there is a key in `data/akismet.json`: it reads that
|
|
150
|
+
// file on every call, so a key pasted into the settings screen filters the
|
|
151
|
+
// next comment and a key removed stops filtering at once, neither of them
|
|
152
|
+
// needing a restart. With no key it sends nothing anywhere.
|
|
153
|
+
resolved.commentChecker ??= createAkismetChecker({
|
|
154
|
+
dataDir: resolved.dataDir,
|
|
155
|
+
// Read when a comment arrives rather than now, so a change of language on
|
|
156
|
+
// the settings screen reaches Akismet without a restart either.
|
|
157
|
+
language: () => readSiteSettings(resolved.contentDir).language,
|
|
158
|
+
});
|
|
159
|
+
// Which theme this site renders through (decision-15). One source for the
|
|
160
|
+
// whole CMS: the pages, the `/theme/` assets and the site's email all read
|
|
161
|
+
// it, so they cannot disagree about which theme is in use and a choice that
|
|
162
|
+
// cannot be honoured is reported once rather than three times. It reads the
|
|
163
|
+
// site data rather than holding a directory, so a theme chosen on the
|
|
164
|
+
// Appearance screen — or written into `site.json` by hand — is the one the
|
|
165
|
+
// next request renders through, with no restart and with the watcher off.
|
|
166
|
+
const siteData = createSiteDataSource(resolved);
|
|
167
|
+
const themes = createThemeSource({
|
|
168
|
+
themesDir: resolved.themesDir,
|
|
169
|
+
chosen: () => themeName(siteData.read()),
|
|
170
|
+
});
|
|
171
|
+
// Asked once here so a site whose chosen theme is missing says so at boot,
|
|
172
|
+
// rather than at whatever moment the first request happens to arrive.
|
|
173
|
+
themes.current();
|
|
36
174
|
const content = createContentSync({
|
|
37
175
|
store,
|
|
38
176
|
contentDir: resolved.contentDir,
|
|
39
177
|
watch: resolved.watch,
|
|
40
178
|
});
|
|
179
|
+
// Email. Built whether or not the site has a provider or a credential, for
|
|
180
|
+
// the reason the Akismet checker is: the settings and `data/mail.json` are
|
|
181
|
+
// read per send, so a key pasted into the settings screen sends the next
|
|
182
|
+
// message and one removed stops the message after it, neither needing a
|
|
183
|
+
// restart. With nothing configured, sending is a line in the log.
|
|
184
|
+
const mail = createMailService({ config: resolved, themes, ...resolved.mail });
|
|
185
|
+
// The one reader of the two indexes a conversation is made of. The page, the
|
|
186
|
+
// per-post comments feed, `/comments/feed/` and the `source:comments` count
|
|
187
|
+
// on a post feed are all drawn from it, so a reader cannot be shown one
|
|
188
|
+
// thing on the page and another in the feed (TASK-62).
|
|
189
|
+
const conversation = createConversation({ admin, store, baseUrl: resolved.baseUrl });
|
|
41
190
|
const renderer = createRenderer({
|
|
42
191
|
config: resolved,
|
|
43
|
-
|
|
192
|
+
themes,
|
|
193
|
+
// The pages that put themselves in the site menu are found by asking for
|
|
194
|
+
// every public page and reading their front matter, rather than by an
|
|
195
|
+
// index of their own: a site has a handful of pages, the query is the
|
|
196
|
+
// same one the listing index already serves, and doing it per render is
|
|
197
|
+
// what makes a page flagged in the editor appear in the menu at once.
|
|
198
|
+
pages: () => store.listAll({ type: 'page', draft: false, trashed: false, scheduled: false }),
|
|
199
|
+
// Who may sign in, for the byline under a post and the heading of an
|
|
200
|
+
// author archive (TASK-67). Read per render for the reason the pages are:
|
|
201
|
+
// `data/users.json` is the truth about who exists (decision-9), and a
|
|
202
|
+
// display name saved on the users screen a second ago belongs on the very
|
|
203
|
+
// next page drawn.
|
|
204
|
+
users: () => listUsers(resolved.dataDir),
|
|
205
|
+
// What has been said about a post, from every source at once and read per
|
|
206
|
+
// render for the same reason: a reply logged or a comment approved a
|
|
207
|
+
// second ago is on the page the next request draws (TASK-49, TASK-50).
|
|
208
|
+
// One dependency, and the very reader the comments feeds are published
|
|
209
|
+
// from, so the page and the feed cannot disagree.
|
|
210
|
+
conversation: conversation.thread,
|
|
211
|
+
// And the form under it, when the post is still taking comments. Asked per
|
|
212
|
+
// render because whether it is depends on the clock: a post that closed an
|
|
213
|
+
// hour ago stops offering one on the very next request.
|
|
214
|
+
commentForm: (document, viewer) => commentFormFor({
|
|
215
|
+
document,
|
|
216
|
+
site: renderer.site(),
|
|
217
|
+
now: resolved.now(),
|
|
218
|
+
// And who is reading it, when a session says: the short form for
|
|
219
|
+
// somebody signed in to this site, the stranger's form for everybody
|
|
220
|
+
// else (TASK-103). The route reads the session and hands it down, so
|
|
221
|
+
// one render of one request cannot disagree with itself.
|
|
222
|
+
viewer,
|
|
223
|
+
// Whether "tell me about replies" is worth offering, asked per render
|
|
224
|
+
// for the same reason: a credential pasted into the settings screen
|
|
225
|
+
// puts the box on the next page drawn (TASK-55).
|
|
226
|
+
notifiable: mail.configured(),
|
|
227
|
+
}),
|
|
228
|
+
// And the contact form, for a page whose front matter asks for one. Asked
|
|
229
|
+
// per render for the same reason: a `contact: true` saved in the editor a
|
|
230
|
+
// moment ago puts a form on the page the next request draws (TASK-56).
|
|
231
|
+
contactForm: (document) => contactFormFor({ document, now: resolved.now() }),
|
|
232
|
+
// The posts either side of one, for the links under an entry (TASK-79).
|
|
233
|
+
// Two indexed lookups per post rather than a walk of the archive, and
|
|
234
|
+
// asked per render for the reason the conversation is: a post published a
|
|
235
|
+
// minute ago is already the neighbour of the one before it.
|
|
236
|
+
neighbours: (document) => store.neighbours(document),
|
|
237
|
+
// And the newest posts for the front page, by the current-month-or-five
|
|
238
|
+
// rule. Only the front page asks, so a site whose `/` is its listing never
|
|
239
|
+
// runs the query at all.
|
|
240
|
+
recentPosts: () => recentPosts(store),
|
|
241
|
+
// And every published post, for a page that says `archive: true`. The one
|
|
242
|
+
// listing with no paging, so it is asked for only by the page that prints
|
|
243
|
+
// it (TASK-85).
|
|
244
|
+
archivePosts: () => store.listPosts(),
|
|
245
|
+
});
|
|
246
|
+
// One KV store for both federations. The compatibility one (TASK-70) shares
|
|
247
|
+
// it so that the same `Follow` redelivered to a user's own inbox and to the
|
|
248
|
+
// WordPress path it used to have is recognised as one activity rather than
|
|
249
|
+
// handled twice; both sets of inbox listeners are `per-origin` for the same
|
|
250
|
+
// reason (doc-8).
|
|
251
|
+
const federationKv = resolved.federation.kv ?? new MemoryKvStore();
|
|
252
|
+
const federation = createSiteFederation({
|
|
253
|
+
baseUrl: resolved.baseUrl,
|
|
254
|
+
...resolved.federation,
|
|
255
|
+
kv: federationKv,
|
|
256
|
+
});
|
|
257
|
+
/**
|
|
258
|
+
* The WordPress compatibility federation, built the first time a request
|
|
259
|
+
* actually reaches one of the plugin's paths with the switch on.
|
|
260
|
+
*
|
|
261
|
+
* Lazy because almost no site will ever turn the switch on, and a second set
|
|
262
|
+
* of dispatchers built at every boot for a setting nobody uses is work for
|
|
263
|
+
* nothing. `mountFederation` keeps whatever this hands back.
|
|
264
|
+
*/
|
|
265
|
+
const wordpressFederation = () => createWordPressFederation({
|
|
266
|
+
baseUrl: resolved.baseUrl,
|
|
267
|
+
...resolved.federation,
|
|
268
|
+
kv: federationKv,
|
|
269
|
+
canonical: federation,
|
|
44
270
|
});
|
|
45
|
-
const federation = createSiteFederation({ baseUrl: resolved.baseUrl, ...resolved.federation });
|
|
46
271
|
// Federation listens to the index rather than to the admin, so a post edited
|
|
47
272
|
// on disk federates exactly as one saved through the editor does (doc-4).
|
|
48
273
|
// It is built before the app because a handler reads it off the context: the
|
|
49
|
-
// admin's
|
|
274
|
+
// admin's Resend button is a request that sends a post out again.
|
|
50
275
|
const delivery = createDeliveryService({ federation, admin, store, config: resolved });
|
|
51
276
|
content.events.on('change', (change) => delivery.handle(change));
|
|
277
|
+
// Who hears about a comment (TASK-55). It reads the users file and the mail
|
|
278
|
+
// settings per message rather than at boot, so an address added on the users
|
|
279
|
+
// screen is written to by the very next comment.
|
|
280
|
+
const notifications = createCommentNotifier({ admin, store, mail, config: resolved });
|
|
281
|
+
// And the other half of it (TASK-60): a user who asked for an hourly or a
|
|
282
|
+
// daily digest hears nothing above and one message per window from here,
|
|
283
|
+
// listing whatever is still pending when their window comes up. It reads the
|
|
284
|
+
// users file and the record of what it has sent per run, for the same
|
|
285
|
+
// reason: a mode chosen on the users screen takes effect at the next tick.
|
|
286
|
+
const digests = createCommentDigest({ admin, store, mail, config: resolved });
|
|
287
|
+
// And so does the webmention sender: telling the pages a post links to is
|
|
288
|
+
// the same news as telling the followers, and it should not matter which
|
|
289
|
+
// door the post came in by (TASK-51).
|
|
290
|
+
const webmentions = createWebmentionService({ admin, store, config: resolved, notifications });
|
|
291
|
+
content.events.on('change', (change) => {
|
|
292
|
+
webmentions.handle(change);
|
|
293
|
+
});
|
|
294
|
+
// The notify server listens to the index for the same reason: a post edited
|
|
295
|
+
// on disk changed the same feeds as one saved through the editor.
|
|
296
|
+
const notifier = createFeedNotifier({ config: resolved });
|
|
297
|
+
content.events.on('change', (change) => notifier.handle(change));
|
|
298
|
+
// A post whose date is in the future is held back (TASK-44), and nothing
|
|
299
|
+
// watches a clock: this is what notices that one has come due and reports it
|
|
300
|
+
// as the publish it is, so delivery, the notifier and a site's `onPublish`
|
|
301
|
+
// all run without knowing a timer was involved. Subscribed to every change
|
|
302
|
+
// so a save that moves a date moves the timer with it.
|
|
303
|
+
const scheduler = createScheduler({
|
|
304
|
+
store,
|
|
305
|
+
announce: (change) => content.announce(change),
|
|
306
|
+
watermark: {
|
|
307
|
+
read: () => admin.getState(SCHEDULE_WATERMARK_KEY),
|
|
308
|
+
write: (instant) => {
|
|
309
|
+
admin.setState(SCHEDULE_WATERMARK_KEY, instant);
|
|
310
|
+
},
|
|
311
|
+
},
|
|
312
|
+
});
|
|
313
|
+
content.events.on('change', (change) => {
|
|
314
|
+
scheduler.handle(change);
|
|
315
|
+
});
|
|
316
|
+
// Relay subscriptions (FEP-ae0c). The list is a setting and the handshake is
|
|
317
|
+
// a record, so booting reconciles the two: a relay the file names and the
|
|
318
|
+
// database has never heard of is followed here, which is what makes a
|
|
319
|
+
// rebuilt database catch up rather than silently stop federating to it.
|
|
320
|
+
const relays = createRelayService({ federation, admin, store, config: resolved });
|
|
321
|
+
relays.sync();
|
|
52
322
|
const app = new Hono();
|
|
323
|
+
// One line per request, before anything else is registered so that every
|
|
324
|
+
// route is on it: /healthz, the federation endpoints, the admin and the
|
|
325
|
+
// public site alike, and a request whose handler threw as well. Off unless
|
|
326
|
+
// the site asked for it; `geekity serve` asks.
|
|
327
|
+
if (resolved.accessLog) {
|
|
328
|
+
app.use('*', createAccessLog({
|
|
329
|
+
config: resolved,
|
|
330
|
+
...(resolved.accessLogWriter === undefined ? {} : { write: resolved.accessLogWriter }),
|
|
331
|
+
}));
|
|
332
|
+
}
|
|
53
333
|
app.use('*', async (c, next) => {
|
|
54
334
|
c.set('store', store);
|
|
55
335
|
c.set('admin', admin);
|
|
56
336
|
c.set('config', resolved);
|
|
57
337
|
c.set('renderer', renderer);
|
|
338
|
+
c.set('conversation', conversation);
|
|
58
339
|
c.set('announce', (change) => content.announce(change));
|
|
340
|
+
c.set('rescan', () => content.sync());
|
|
59
341
|
c.set('delivery', delivery);
|
|
342
|
+
c.set('relays', relays);
|
|
343
|
+
c.set('webmentions', webmentions);
|
|
344
|
+
c.set('mail', mail);
|
|
345
|
+
c.set('notifications', notifications);
|
|
60
346
|
await next();
|
|
61
347
|
});
|
|
348
|
+
// Two headers on everything the CMS answers, admin and public alike. The
|
|
349
|
+
// admin adds a policy of its own on top; the public site does not, so a
|
|
350
|
+
// theme is free to reference whatever it likes.
|
|
351
|
+
app.use('*', baselineSecurityHeaders);
|
|
62
352
|
app.get('/_geekity/health', (c) => c.json({ status: 'ok' }));
|
|
353
|
+
// The health check a container orchestrator or an uptime monitor probes
|
|
354
|
+
// (TASK-87). It goes on before federation, the admin and the public site,
|
|
355
|
+
// so no permalink can ever shadow it.
|
|
356
|
+
mountHealth(app);
|
|
63
357
|
// Federation goes on first. It answers its own paths and falls through on
|
|
64
358
|
// every other, so putting it in front costs the rest of the app nothing and
|
|
65
359
|
// is the only place it can go: the public site claims every unmatched path
|
|
66
360
|
// in its not-found handler.
|
|
67
|
-
mountFederation(app, federation);
|
|
361
|
+
mountFederation(app, federation, { wordpress: wordpressFederation });
|
|
68
362
|
// The admin goes on before the public site, for the same reason.
|
|
69
363
|
mountAdmin(app);
|
|
70
364
|
mountPublicSite(app);
|
|
@@ -100,6 +394,13 @@ export function createCms(config = {}) {
|
|
|
100
394
|
admin,
|
|
101
395
|
federation,
|
|
102
396
|
delivery,
|
|
397
|
+
relays,
|
|
398
|
+
webmentions,
|
|
399
|
+
notifier,
|
|
400
|
+
mail,
|
|
401
|
+
notifications,
|
|
402
|
+
digests,
|
|
403
|
+
scheduler,
|
|
103
404
|
events: content.events,
|
|
104
405
|
onDocumentChange(hook) {
|
|
105
406
|
return subscribe('change', hook);
|
|
@@ -107,6 +408,9 @@ export function createCms(config = {}) {
|
|
|
107
408
|
onPublish(hook) {
|
|
108
409
|
return subscribe('published', hook);
|
|
109
410
|
},
|
|
411
|
+
notifyFeeds(urls) {
|
|
412
|
+
return notifier.notify(urls);
|
|
413
|
+
},
|
|
110
414
|
sync() {
|
|
111
415
|
return content.sync();
|
|
112
416
|
},
|
|
@@ -117,6 +421,13 @@ export function createCms(config = {}) {
|
|
|
117
421
|
// The index is brought up to date before the first request, so a site
|
|
118
422
|
// never serves a stale document, and the watcher takes over from there.
|
|
119
423
|
await content.start();
|
|
424
|
+
// After the scan, because the catch-up reads the index: a post whose
|
|
425
|
+
// date passed while nothing was running is published here, once.
|
|
426
|
+
await scheduler.start();
|
|
427
|
+
// The digests tick from here on. Nothing is caught up first: a digest is
|
|
428
|
+
// whatever is pending when a window comes up, so a site that was down
|
|
429
|
+
// over one simply sends the next one, with everything still waiting in it.
|
|
430
|
+
digests.start();
|
|
120
431
|
return new Promise((resolve) => {
|
|
121
432
|
server = serveNode({ fetch: app.fetch, port: resolved.port }, (info) => {
|
|
122
433
|
resolve({ port: info.port });
|
|
@@ -126,10 +437,18 @@ export function createCms(config = {}) {
|
|
|
126
437
|
async close() {
|
|
127
438
|
const running = server;
|
|
128
439
|
server = undefined;
|
|
440
|
+
scheduler.stop();
|
|
441
|
+
digests.stop();
|
|
129
442
|
await content.stop();
|
|
443
|
+
await scheduler.settled();
|
|
444
|
+
await digests.settled();
|
|
130
445
|
// Anything already on its way out is allowed to finish, so closing never
|
|
131
446
|
// leaves a delivery half recorded.
|
|
132
447
|
await delivery.settled();
|
|
448
|
+
await relays.settled();
|
|
449
|
+
await webmentions.settled();
|
|
450
|
+
await notifier.settled();
|
|
451
|
+
await mail.settled();
|
|
133
452
|
if (running !== undefined) {
|
|
134
453
|
await new Promise((resolve, reject) => {
|
|
135
454
|
running.close((err) => {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/init.d.ts
CHANGED
|
@@ -41,6 +41,24 @@ export declare class DirectoryNotEmptyError extends Error {
|
|
|
41
41
|
* tool that walks for one.
|
|
42
42
|
*/
|
|
43
43
|
export declare function initSite(options: InitSiteOptions): Promise<InitSiteResult>;
|
|
44
|
+
/** What {@link seedStarterContent} needs to know. */
|
|
45
|
+
export interface SeedStarterContentOptions {
|
|
46
|
+
/** The site's content directory, absolute. */
|
|
47
|
+
contentDir: string;
|
|
48
|
+
/** The resolved base URL, written into the seeded `site.json` as its `url`. */
|
|
49
|
+
baseUrl: string;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Fill a missing or empty content directory with the starter site: the same
|
|
53
|
+
* `content/` that `geekity init` writes, copied from the same template by the
|
|
54
|
+
* same routine. `geekity serve` calls it when `seedContent` is on, which is
|
|
55
|
+
* how the Docker image boots a new box with an empty content volume.
|
|
56
|
+
*
|
|
57
|
+
* A directory counts as empty only when it has no entries at all. Anything
|
|
58
|
+
* else, even a lone dotfile, is left exactly as it is, so a mounted site is
|
|
59
|
+
* never written over. Returns whether it seeded.
|
|
60
|
+
*/
|
|
61
|
+
export declare function seedStarterContent(options: SeedStarterContentOptions): Promise<boolean>;
|
|
44
62
|
/**
|
|
45
63
|
* pnpm settings a new site starts with, as `pnpm-workspace.yaml`.
|
|
46
64
|
*
|
package/dist/init.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAE/B,CAAC;AASF,6CAA6C;AAC7C,MAAM,WAAW,eAAe;IAC9B,gFAAgF;IAChF,SAAS,EAAE,MAAM,CAAC;IAClB,6EAA6E;IAC7E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,kDAAkD;AAClD,MAAM,WAAW,cAAc;IAC7B,qCAAqC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,yEAAyE;IACzE,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1B;AAED,gEAAgE;AAChE,qBAAa,sBAAuB,SAAQ,KAAK;IAGnC,QAAQ,CAAC,SAAS,EAAE,MAAM;IAFtC,SAAkB,IAAI,4BAA4B;IAElD,YAAqB,SAAS,EAAE,MAAM,EAIrC;CACF;AAED;;;;;;;GAOG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAE/B,CAAC;AASF,6CAA6C;AAC7C,MAAM,WAAW,eAAe;IAC9B,gFAAgF;IAChF,SAAS,EAAE,MAAM,CAAC;IAClB,6EAA6E;IAC7E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,kDAAkD;AAClD,MAAM,WAAW,cAAc;IAC7B,qCAAqC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,yEAAyE;IACzE,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1B;AAED,gEAAgE;AAChE,qBAAa,sBAAuB,SAAQ,KAAK;IAGnC,QAAQ,CAAC,SAAS,EAAE,MAAM;IAFtC,SAAkB,IAAI,4BAA4B;IAElD,YAAqB,SAAS,EAAE,MAAM,EAIrC;CACF;AAED;;;;;;;GAOG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CAwBhF;AAED,qDAAqD;AACrD,MAAM,WAAW,yBAAyB;IACxC,8CAA8C;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,+EAA+E;IAC/E,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;GASG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,OAAO,CAAC,CAc7F;AAYD;;;;;;;GAOG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAgBrC;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAsBhG;AAaD,gFAAgF;AAChF,wBAAgB,WAAW,IAAI;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1C,CAMA"}
|