@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/admin/federation.js
CHANGED
|
@@ -1,17 +1,38 @@
|
|
|
1
|
+
import { isTrashedPath } from '../content/store.js';
|
|
2
|
+
import { listUsers } from './accounts.js';
|
|
1
3
|
import { avatarUrl } from '../federation/actor.js';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
+
import { ACTOR_PATH, federationOrigin } from '../federation/paths.js';
|
|
5
|
+
import { authorHref, profileContext, userForAuthor } from '../web/authors.js';
|
|
6
|
+
import { postObjectId, publicDocumentAt } from '../web/documents.js';
|
|
7
|
+
import { absoluteUrl } from '../web/negotiate.js';
|
|
4
8
|
import { editorPath, POST_KIND } from './documents.js';
|
|
5
9
|
import { flash } from './flash.js';
|
|
6
|
-
import { readSiteSettings } from './settings.js';
|
|
7
10
|
import { ADMIN_PREFIX } from './session.js';
|
|
8
11
|
import { ADMIN_TEMPLATES } from './templates.js';
|
|
9
12
|
/** Where the federation screen lives. */
|
|
10
13
|
export const FEDERATION_PATH = `${ADMIN_PREFIX}/federation`;
|
|
11
|
-
/**
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
14
|
+
/**
|
|
15
|
+
* Where Federation's own settings live: Federation > Settings.
|
|
16
|
+
*
|
|
17
|
+
* The relays and the WordPress compatibility switch used to be a child of
|
|
18
|
+
* Settings, which meant two menu entries called Federation, neither saying the
|
|
19
|
+
* other existed (TASK-109). It is here instead, beside the followers it is
|
|
20
|
+
* about; the constant is here rather than beside the page so the section's URL
|
|
21
|
+
* is written once.
|
|
22
|
+
*/
|
|
23
|
+
export const FEDERATION_SETTINGS_PATH = `${FEDERATION_PATH}/settings`;
|
|
24
|
+
/** Where a post's Resend button posts. */
|
|
25
|
+
export const RESEND_PATH = `${FEDERATION_PATH}/resend`;
|
|
26
|
+
/** Where a relay's Retry button posts. */
|
|
27
|
+
export const RELAY_RETRY_PATH = `${FEDERATION_PATH}/relays/retry`;
|
|
28
|
+
/** The fields the screen's forms submit. */
|
|
29
|
+
export const FEDERATION_FIELDS = { slug: 'slug', relay: 'relay' };
|
|
30
|
+
/** What each relay state reads as on the screen. */
|
|
31
|
+
export const RELAY_STATE_LABELS = {
|
|
32
|
+
pending: 'Waiting',
|
|
33
|
+
accepted: 'Accepted',
|
|
34
|
+
rejected: 'Rejected',
|
|
35
|
+
};
|
|
15
36
|
/**
|
|
16
37
|
* How many rows each of the screen's lists holds.
|
|
17
38
|
*
|
|
@@ -24,9 +45,17 @@ export const FEDERATION_RECENT = 50;
|
|
|
24
45
|
* Register `/admin/federation`: who the site is to the fediverse, who follows
|
|
25
46
|
* it, what arrived in the inbox, and how the posts that went out landed.
|
|
26
47
|
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
48
|
+
* Nothing on it is fetched: the followers and the inbox log are indexed in
|
|
49
|
+
* SQLite from the files that hold them precisely so the admin can show them
|
|
50
|
+
* without dereferencing a remote actor per row.
|
|
51
|
+
*
|
|
52
|
+
* The delivery panel is the one that reads two sources at once. Which posts
|
|
53
|
+
* belong on it is a question for the content index — the posts carrying an
|
|
54
|
+
* `activitypub.published`, which is the same thing as the posts a follower
|
|
55
|
+
* holds a copy of — and how each of them last landed is a question for the outcome
|
|
56
|
+
* cache. That order matters: the cache is disposable (decision-9), so a site
|
|
57
|
+
* that has just deleted its database sees every federated post listed with
|
|
58
|
+
* nothing yet recorded against it, rather than an empty panel.
|
|
30
59
|
*/
|
|
31
60
|
export function mountFederationScreen(app, options) {
|
|
32
61
|
const { render } = options;
|
|
@@ -34,46 +63,83 @@ export function mountFederationScreen(app, options) {
|
|
|
34
63
|
const admin = c.var.admin;
|
|
35
64
|
const baseUrl = c.var.config.baseUrl;
|
|
36
65
|
const post = localPosts(c.var.store, baseUrl);
|
|
66
|
+
const users = listUsers(c.var.config.dataDir);
|
|
37
67
|
return render(c, ADMIN_TEMPLATES.federation, {
|
|
38
68
|
section: 'federation',
|
|
39
|
-
|
|
69
|
+
child: 'followers',
|
|
70
|
+
resendUrl: RESEND_PATH,
|
|
40
71
|
fields: FEDERATION_FIELDS,
|
|
41
|
-
|
|
72
|
+
actors: users.map((user) => actorSummary(user, {
|
|
42
73
|
baseUrl,
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
74
|
+
followerCount: admin.countFollowers(user.username),
|
|
75
|
+
followers: admin
|
|
76
|
+
.listFollowers(user.username, { limit: FEDERATION_RECENT })
|
|
77
|
+
.map((follower) => followerRow(follower)),
|
|
78
|
+
})),
|
|
48
79
|
// The inbox log holds the follow traffic as well, and only a fraction of
|
|
49
80
|
// it survives {@link inboxRows}, so more is read than is shown.
|
|
50
81
|
inbox: inboxRows(admin.listInboxActivities({ limit: FEDERATION_RECENT * 4 }), {
|
|
51
82
|
followers: admin.listFollowers(),
|
|
52
83
|
post,
|
|
53
84
|
}),
|
|
54
|
-
|
|
85
|
+
relayRetryUrl: RELAY_RETRY_PATH,
|
|
86
|
+
relays: admin
|
|
87
|
+
.listRelays()
|
|
88
|
+
.map((relay) => relayRow(relay, admin.lastDeliveryToInbox(relay.inboxId))),
|
|
89
|
+
posts: deliveryRows(c.var.store.listFederated({ limit: FEDERATION_RECENT }), {
|
|
90
|
+
baseUrl,
|
|
91
|
+
author: (document) => userForAuthor(users, document.author)?.username ?? null,
|
|
92
|
+
lastDelivery: (objectId) => admin.lastDeliveryToObject(objectId),
|
|
55
93
|
counts: (activityId) => admin.countDeliveriesByStatus(activityId),
|
|
56
|
-
|
|
57
|
-
})
|
|
94
|
+
webmentions: (slug) => admin.countSentWebmentionsByStatus(slug),
|
|
95
|
+
}),
|
|
58
96
|
});
|
|
59
97
|
});
|
|
60
98
|
/**
|
|
61
|
-
* Send one
|
|
99
|
+
* Send one relay's `Follow` again.
|
|
62
100
|
*
|
|
63
|
-
* The
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
* be a different thing from what was asked for.
|
|
101
|
+
* The relay is named by its inbox, which is what the settings hold and what
|
|
102
|
+
* the row shows: a subscription is identified by where it was made, not by
|
|
103
|
+
* the follow it is currently waiting on, which is the thing a retry replaces.
|
|
67
104
|
*/
|
|
68
|
-
app.post(
|
|
105
|
+
app.post(RELAY_RETRY_PATH, async (c) => {
|
|
69
106
|
const body = await c.req.parseBody();
|
|
70
|
-
const
|
|
71
|
-
const
|
|
72
|
-
if (
|
|
73
|
-
flash(c, 'error', '
|
|
107
|
+
const inboxId = body[FEDERATION_FIELDS.relay];
|
|
108
|
+
const relay = typeof inboxId === 'string' ? await c.var.relays.retry(inboxId) : undefined;
|
|
109
|
+
if (relay === undefined) {
|
|
110
|
+
flash(c, 'error', 'The site does not subscribe to that relay, so there is nothing to retry.');
|
|
74
111
|
}
|
|
75
112
|
else {
|
|
76
|
-
flash(c,
|
|
113
|
+
flash(c, 'notice', `The follow has been sent to ${relay.inboxId} again. A relay may take a while to answer.`);
|
|
114
|
+
}
|
|
115
|
+
return c.redirect(FEDERATION_PATH, 303);
|
|
116
|
+
});
|
|
117
|
+
/**
|
|
118
|
+
* Send one post as it now reads to every follower and every accepted relay.
|
|
119
|
+
*
|
|
120
|
+
* The post is named rather than an activity, which is the whole of what
|
|
121
|
+
* decision-9 changed here: the activity is built from the file when the
|
|
122
|
+
* button is pressed, so a post edited between the page load and the click
|
|
123
|
+
* goes out as it is now — which is what somebody pressing Resend is asking
|
|
124
|
+
* for — rather than as the row said it was.
|
|
125
|
+
*/
|
|
126
|
+
app.post(RESEND_PATH, async (c) => {
|
|
127
|
+
const body = await c.req.parseBody();
|
|
128
|
+
const slug = body[FEDERATION_FIELDS.slug];
|
|
129
|
+
const report = typeof slug === 'string' ? await c.var.delivery.resend(slug) : undefined;
|
|
130
|
+
// The webmentions go with it, because "send this post out again" is one
|
|
131
|
+
// thing to the person pressing the button and the links are as much a part
|
|
132
|
+
// of a post going out as the followers are (TASK-51). It is asked for
|
|
133
|
+
// separately because it answers for a post that has never federated at
|
|
134
|
+
// all, which `resend` says nothing about.
|
|
135
|
+
const links = typeof slug === 'string' ? await c.var.webmentions.send(slug) : undefined;
|
|
136
|
+
if (report === undefined && links === undefined) {
|
|
137
|
+
flash(c, 'error', 'There is no post to send under that name, so nothing was sent.');
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
const failedSomewhere = (report?.deliveries.some(failed) ?? false) ||
|
|
141
|
+
(links?.sent.some((one) => one.status === 'failed') ?? false);
|
|
142
|
+
flash(c, failedSomewhere ? 'error' : 'notice', resendMessage(report, links));
|
|
77
143
|
}
|
|
78
144
|
return c.redirect(FEDERATION_PATH, 303);
|
|
79
145
|
});
|
|
@@ -83,15 +149,27 @@ function failed(delivery) {
|
|
|
83
149
|
return delivery.status === 'failed';
|
|
84
150
|
}
|
|
85
151
|
/**
|
|
86
|
-
* What a
|
|
152
|
+
* What a resend came to, in one line.
|
|
87
153
|
*
|
|
88
154
|
* The failures are counted even when there are none, because that zero is the
|
|
89
|
-
* answer to the question the button was pressed to ask.
|
|
155
|
+
* answer to the question the button was pressed to ask. The activity type is
|
|
156
|
+
* named because it is not something the person choosing to resend chose: it
|
|
157
|
+
* follows from the state the post is in, and a `Delete` where somebody
|
|
158
|
+
* expected an `Update` is worth reading about.
|
|
90
159
|
*/
|
|
91
|
-
export function
|
|
160
|
+
export function resendMessage(report, links) {
|
|
161
|
+
return [deliveryMessage(report), webmentionMessage(links)]
|
|
162
|
+
.filter((part) => part !== undefined)
|
|
163
|
+
.join(' ');
|
|
164
|
+
}
|
|
165
|
+
/** What the ActivityPub half of a resend came to. */
|
|
166
|
+
function deliveryMessage(report) {
|
|
167
|
+
if (report === undefined)
|
|
168
|
+
return undefined;
|
|
92
169
|
const total = report.deliveries.length;
|
|
93
170
|
if (total === 0) {
|
|
94
|
-
return `Nobody follows the site
|
|
171
|
+
return (`Nobody follows the site and no relay has accepted it, ` +
|
|
172
|
+
`so the ${report.activityType} had nowhere to go.`);
|
|
95
173
|
}
|
|
96
174
|
const counts = { sent: 0, queued: 0, failed: 0 };
|
|
97
175
|
for (const delivery of report.deliveries)
|
|
@@ -100,66 +178,97 @@ export function redeliveryMessage(report) {
|
|
|
100
178
|
if (counts.queued > 0)
|
|
101
179
|
parts.push(`${String(counts.queued)} queued`);
|
|
102
180
|
parts.push(`${String(counts.failed)} failed`);
|
|
103
|
-
|
|
104
|
-
|
|
181
|
+
// "Recipients" rather than "followers": a relay is one of them too, and it
|
|
182
|
+
// is not a follower.
|
|
183
|
+
const recipients = total === 1 ? '1 recipient' : `${String(total)} recipients`;
|
|
184
|
+
return `Sent ${report.activityType} to ${recipients}: ${parts.join(', ')}.`;
|
|
105
185
|
}
|
|
106
186
|
/**
|
|
107
|
-
*
|
|
108
|
-
*
|
|
187
|
+
* What the webmention half came to, or nothing at all when the post links
|
|
188
|
+
* nowhere outside the site.
|
|
109
189
|
*
|
|
110
|
-
*
|
|
111
|
-
*
|
|
112
|
-
*
|
|
113
|
-
* missed everything is owed. The activities arrive newest first, so the first
|
|
114
|
-
* one seen for an object is that one.
|
|
190
|
+
* Silence rather than "0 webmentions", because most posts link to nothing and
|
|
191
|
+
* a line about it on every resend would be noise about a thing that did not
|
|
192
|
+
* happen.
|
|
115
193
|
*/
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
rows.push({
|
|
129
|
-
post,
|
|
130
|
-
activityId: activity.activityId,
|
|
131
|
-
activityType: activity.activityType,
|
|
132
|
-
createdAt: activity.createdAt,
|
|
133
|
-
counts: context.counts(activity.activityId),
|
|
134
|
-
});
|
|
135
|
-
}
|
|
136
|
-
return rows;
|
|
194
|
+
function webmentionMessage(links) {
|
|
195
|
+
if (links === undefined || links.sent.length === 0)
|
|
196
|
+
return undefined;
|
|
197
|
+
const counts = { sent: 0, none: 0, failed: 0 };
|
|
198
|
+
for (const one of links.sent)
|
|
199
|
+
counts[one.status] += 1;
|
|
200
|
+
const linked = links.sent.length === 1 ? '1 linked page' : `${String(links.sent.length)} linked pages`;
|
|
201
|
+
const parts = [`${String(counts.sent)} told`];
|
|
202
|
+
if (counts.none > 0)
|
|
203
|
+
parts.push(`${String(counts.none)} take none`);
|
|
204
|
+
parts.push(`${String(counts.failed)} failed`);
|
|
205
|
+
return `Webmentions to ${linked}: ${parts.join(', ')}.`;
|
|
137
206
|
}
|
|
138
|
-
/**
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
207
|
+
/**
|
|
208
|
+
* One row per post the site has announced, newest post first.
|
|
209
|
+
*
|
|
210
|
+
* The posts come from the content index and the outcomes from the cache, in
|
|
211
|
+
* that order and not the other way round, because they are answers to two
|
|
212
|
+
* different questions. Which posts belong here is a fact about the files: a
|
|
213
|
+
* post carrying an `activitypub.published` is one some follower holds a copy
|
|
214
|
+
* of, and that stays true however often the database is thrown away. How each of them
|
|
215
|
+
* landed is a fact about the last delivery, which is exactly the sort of thing
|
|
216
|
+
* a cache is allowed to forget.
|
|
217
|
+
*
|
|
218
|
+
* A post is usually several activities — a `Create` and every `Update` since —
|
|
219
|
+
* and the newest is the only one worth showing: it is the version a follower
|
|
220
|
+
* who missed everything is owed, and the one a resend supersedes anyway.
|
|
221
|
+
*/
|
|
222
|
+
export function deliveryRows(documents, context) {
|
|
223
|
+
return documents.map((document) => {
|
|
224
|
+
const last = context.lastDelivery(postObjectId(document, context.baseUrl));
|
|
225
|
+
return {
|
|
226
|
+
post: {
|
|
227
|
+
slug: document.slug,
|
|
228
|
+
title: document.title,
|
|
229
|
+
editUrl: editorPath(POST_KIND, document.slug),
|
|
230
|
+
},
|
|
231
|
+
author: context.author(document),
|
|
232
|
+
slug: document.slug,
|
|
233
|
+
trashed: isTrashedPath(document.path),
|
|
234
|
+
lastActivity: last === undefined
|
|
235
|
+
? null
|
|
236
|
+
: {
|
|
237
|
+
activityType: last.activityType,
|
|
238
|
+
attemptedAt: last.attemptedAt,
|
|
239
|
+
counts: context.counts(last.activityId),
|
|
240
|
+
},
|
|
241
|
+
webmentions: context.webmentions(document.slug),
|
|
242
|
+
};
|
|
243
|
+
});
|
|
143
244
|
}
|
|
144
245
|
/**
|
|
145
|
-
*
|
|
246
|
+
* One user's actor as the screen shows it (decision-14).
|
|
146
247
|
*
|
|
147
248
|
* The handle's host and the actor's id both come from the base URL's origin
|
|
148
249
|
* rather than from the whole of it, because that is where the federation
|
|
149
|
-
* endpoints are served: a site under `/blog`
|
|
250
|
+
* endpoints are served: a site under `/blog` still answers `@ada@example.com`.
|
|
251
|
+
* The id is built from {@link ACTOR_PATH} rather than from `authorHref` for
|
|
252
|
+
* the same reason — it is the path Fedify dispatches the actor at, and the
|
|
253
|
+
* screen should say what a peer would get. Which is also why a user with a
|
|
254
|
+
* stored actor id (TASK-69) is shown under that: it is the id their followers
|
|
255
|
+
* hold, and a screen naming the other one would be describing a document
|
|
256
|
+
* nobody fetches.
|
|
150
257
|
*/
|
|
151
|
-
export function actorSummary(
|
|
258
|
+
export function actorSummary(user, context) {
|
|
152
259
|
const baseUrl = context.baseUrl === '' ? 'http://localhost' : context.baseUrl;
|
|
153
260
|
const origin = federationOrigin(baseUrl);
|
|
261
|
+
const profile = profileContext(user);
|
|
154
262
|
return {
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
name:
|
|
159
|
-
summary:
|
|
160
|
-
actorId:
|
|
161
|
-
.href,
|
|
162
|
-
url: baseUrl,
|
|
263
|
+
username: user.username,
|
|
264
|
+
handle: `@${user.username}@${origin.handleHost}`,
|
|
265
|
+
avatarUrl: profile.avatar === undefined ? null : (avatarUrl(profile.avatar, baseUrl) ?? null),
|
|
266
|
+
name: profile.name,
|
|
267
|
+
summary: profile.bio ?? '',
|
|
268
|
+
actorId: user.actorId ??
|
|
269
|
+
new URL(ACTOR_PATH.replace('{identifier}', encodeURIComponent(user.username)), origin.webOrigin).href,
|
|
270
|
+
url: absoluteUrl(authorHref(user.username), baseUrl),
|
|
271
|
+
followerCount: context.followerCount,
|
|
163
272
|
followers: context.followers,
|
|
164
273
|
};
|
|
165
274
|
}
|
|
@@ -238,13 +347,14 @@ function replyObject(activity) {
|
|
|
238
347
|
/**
|
|
239
348
|
* Resolve one of the site's own ActivityStreams ids to the post behind it.
|
|
240
349
|
*
|
|
241
|
-
*
|
|
242
|
-
*
|
|
243
|
-
*
|
|
350
|
+
* A post's id is its permalink (decision-13), so this is a lookup by URL
|
|
351
|
+
* against the content index: an id from anywhere else — a like of somebody
|
|
352
|
+
* else's post that reached the shared inbox, a reply to a reply — is `null`
|
|
353
|
+
* rather than a guess, and so is one whose path the index has never heard of.
|
|
244
354
|
*/
|
|
245
355
|
export function localPosts(store, baseUrl) {
|
|
246
|
-
const
|
|
247
|
-
const
|
|
356
|
+
const site = baseUrl === '' ? 'http://localhost' : baseUrl;
|
|
357
|
+
const origin = new URL(site).origin;
|
|
248
358
|
return (objectId) => {
|
|
249
359
|
if (objectId === null)
|
|
250
360
|
return null;
|
|
@@ -255,16 +365,16 @@ export function localPosts(store, baseUrl) {
|
|
|
255
365
|
catch {
|
|
256
366
|
return null;
|
|
257
367
|
}
|
|
258
|
-
if (url.origin !== origin
|
|
368
|
+
if (url.origin !== origin)
|
|
259
369
|
return null;
|
|
260
|
-
const
|
|
261
|
-
|
|
370
|
+
const document = store.getByStoredObjectId(objectId) ??
|
|
371
|
+
publicDocumentAt(store, decodeURIComponent(url.pathname));
|
|
372
|
+
if (document === undefined || document.type !== 'post')
|
|
262
373
|
return null;
|
|
263
|
-
const document = store.getBySlug(slug);
|
|
264
374
|
return {
|
|
265
|
-
slug,
|
|
266
|
-
title: document
|
|
267
|
-
editUrl: editorPath(POST_KIND, slug),
|
|
375
|
+
slug: document.slug,
|
|
376
|
+
title: document.title,
|
|
377
|
+
editUrl: editorPath(POST_KIND, document.slug),
|
|
268
378
|
};
|
|
269
379
|
};
|
|
270
380
|
}
|
|
@@ -278,6 +388,38 @@ function property(value, key) {
|
|
|
278
388
|
function text(value) {
|
|
279
389
|
return typeof value === 'string' && value !== '' ? value : null;
|
|
280
390
|
}
|
|
391
|
+
/**
|
|
392
|
+
* One stored relay as the screen shows it.
|
|
393
|
+
*
|
|
394
|
+
* The last outcome is looked up by inbox rather than by actor, because that is
|
|
395
|
+
* the column a relay is guaranteed to have: a subscription that has not been
|
|
396
|
+
* accepted has no actor id at all, and the point of the row is to say so. The
|
|
397
|
+
* outcome carries what the activity was, so there is nothing else to look up.
|
|
398
|
+
*/
|
|
399
|
+
export function relayRow(relay, lastDelivery) {
|
|
400
|
+
return {
|
|
401
|
+
inboxId: relay.inboxId,
|
|
402
|
+
state: relay.state,
|
|
403
|
+
stateLabel: RELAY_STATE_LABELS[relay.state],
|
|
404
|
+
actorId: relay.actorId,
|
|
405
|
+
createdAt: relay.createdAt,
|
|
406
|
+
updatedAt: relay.updatedAt,
|
|
407
|
+
reason: relay.reason,
|
|
408
|
+
lastDelivery: lastDelivery === undefined
|
|
409
|
+
? null
|
|
410
|
+
: {
|
|
411
|
+
activityId: lastDelivery.activityId,
|
|
412
|
+
activityType: lastDelivery.activityType,
|
|
413
|
+
status: lastDelivery.status,
|
|
414
|
+
error: lastDelivery.error,
|
|
415
|
+
attemptedAt: lastDelivery.attemptedAt,
|
|
416
|
+
},
|
|
417
|
+
// A rejected relay is not retried from here: it said no, and asking again
|
|
418
|
+
// is a decision to take by removing it and adding it back, not a button
|
|
419
|
+
// that quietly re-asks a server that refused.
|
|
420
|
+
retriable: relay.state === 'pending',
|
|
421
|
+
};
|
|
422
|
+
}
|
|
281
423
|
/**
|
|
282
424
|
* One stored follower as the screen shows it.
|
|
283
425
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"federation.js","sourceRoot":"","sources":["../../src/admin/federation.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"federation.js","sourceRoot":"","sources":["../../src/admin/federation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* An instant as a person in this site's time zone would read it: `4 September
|
|
3
|
+
* 2026 at 09:00 UTC`.
|
|
4
|
+
*
|
|
5
|
+
* The public site prints dates in UTC, because a theme ported from an Eleventy
|
|
6
|
+
* build using Luxon with `zone: 'utc'` does. The admin is the one place that
|
|
7
|
+
* should not: an author scheduling a post for nine in the morning means nine
|
|
8
|
+
* in *their* morning, and the site's `timezone` setting is what says which one
|
|
9
|
+
* that is. The zone is printed with it so the two readings can never be
|
|
10
|
+
* confused: an abbreviation where the zone has a well known one (`CDT`, `UTC`)
|
|
11
|
+
* and an offset where it does not (`GMT+1`), which is what `Intl` answers and
|
|
12
|
+
* is unambiguous either way.
|
|
13
|
+
*
|
|
14
|
+
* A zone name the runtime does not know falls back to UTC rather than
|
|
15
|
+
* throwing: the settings screen refuses an unknown zone, so anything that
|
|
16
|
+
* reaches here came from a hand-edited database and should not take the
|
|
17
|
+
* editor down.
|
|
18
|
+
*/
|
|
19
|
+
export declare function formatInTimezone(instant: string, timezone: string): string;
|
|
20
|
+
//# sourceMappingURL=formatting.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatting.d.ts","sourceRoot":"","sources":["../../src/admin/formatting.ts"],"names":[],"mappings":"AAgBA;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAY1E"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/** The months, spelled the way the theme's `date` filter spells them. */
|
|
2
|
+
const MONTHS = [
|
|
3
|
+
'January',
|
|
4
|
+
'February',
|
|
5
|
+
'March',
|
|
6
|
+
'April',
|
|
7
|
+
'May',
|
|
8
|
+
'June',
|
|
9
|
+
'July',
|
|
10
|
+
'August',
|
|
11
|
+
'September',
|
|
12
|
+
'October',
|
|
13
|
+
'November',
|
|
14
|
+
'December',
|
|
15
|
+
];
|
|
16
|
+
/**
|
|
17
|
+
* An instant as a person in this site's time zone would read it: `4 September
|
|
18
|
+
* 2026 at 09:00 UTC`.
|
|
19
|
+
*
|
|
20
|
+
* The public site prints dates in UTC, because a theme ported from an Eleventy
|
|
21
|
+
* build using Luxon with `zone: 'utc'` does. The admin is the one place that
|
|
22
|
+
* should not: an author scheduling a post for nine in the morning means nine
|
|
23
|
+
* in *their* morning, and the site's `timezone` setting is what says which one
|
|
24
|
+
* that is. The zone is printed with it so the two readings can never be
|
|
25
|
+
* confused: an abbreviation where the zone has a well known one (`CDT`, `UTC`)
|
|
26
|
+
* and an offset where it does not (`GMT+1`), which is what `Intl` answers and
|
|
27
|
+
* is unambiguous either way.
|
|
28
|
+
*
|
|
29
|
+
* A zone name the runtime does not know falls back to UTC rather than
|
|
30
|
+
* throwing: the settings screen refuses an unknown zone, so anything that
|
|
31
|
+
* reaches here came from a hand-edited database and should not take the
|
|
32
|
+
* editor down.
|
|
33
|
+
*/
|
|
34
|
+
export function formatInTimezone(instant, timezone) {
|
|
35
|
+
const date = new Date(instant);
|
|
36
|
+
if (Number.isNaN(date.getTime()))
|
|
37
|
+
return '';
|
|
38
|
+
const parts = partsIn(date, timezone) ?? partsIn(date, 'UTC');
|
|
39
|
+
if (parts === undefined)
|
|
40
|
+
return date.toISOString();
|
|
41
|
+
const month = MONTHS[Number(parts['month']) - 1] ?? '';
|
|
42
|
+
return (`${String(Number(parts['day']))} ${month} ${parts['year'] ?? ''} ` +
|
|
43
|
+
`at ${parts['hour'] ?? ''}:${parts['minute'] ?? ''} ${parts['timeZoneName'] ?? ''}`);
|
|
44
|
+
}
|
|
45
|
+
/** The instant's fields in one zone, or `undefined` when the zone is not one. */
|
|
46
|
+
function partsIn(date, timezone) {
|
|
47
|
+
let formatter;
|
|
48
|
+
try {
|
|
49
|
+
// `en-US` only for the zone abbreviation: it is the locale whose short
|
|
50
|
+
// names are the ones people recognise — `CDT` where `en-GB` says `GMT-5`.
|
|
51
|
+
// Everything else on the line is assembled from the parts below, so the
|
|
52
|
+
// locale decides nothing about the order or the spelling of the date.
|
|
53
|
+
formatter = new Intl.DateTimeFormat('en-US', {
|
|
54
|
+
timeZone: timezone,
|
|
55
|
+
year: 'numeric',
|
|
56
|
+
month: '2-digit',
|
|
57
|
+
day: '2-digit',
|
|
58
|
+
hour: '2-digit',
|
|
59
|
+
minute: '2-digit',
|
|
60
|
+
hourCycle: 'h23',
|
|
61
|
+
timeZoneName: 'short',
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
return undefined;
|
|
66
|
+
}
|
|
67
|
+
const parts = {};
|
|
68
|
+
for (const part of formatter.formatToParts(date))
|
|
69
|
+
parts[part.type] = part.value;
|
|
70
|
+
return parts;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=formatting.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatting.js","sourceRoot":"","sources":["../../src/admin/formatting.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,MAAM,MAAM,GAAG;IACb,SAAS;IACT,UAAU;IACV,OAAO;IACP,OAAO;IACP,KAAK;IACL,MAAM;IACN,MAAM;IACN,QAAQ;IACR,WAAW;IACX,SAAS;IACT,UAAU;IACV,UAAU;CACX,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe,EAAE,QAAgB;IAChE,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/B,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAAE,OAAO,EAAE,CAAC;IAE5C,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC9D,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IAEnD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACvD,OAAO,CACL,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG;QAClE,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,CACpF,CAAC;AACJ,CAAC;AAED,iFAAiF;AACjF,SAAS,OAAO,CAAC,IAAU,EAAE,QAAgB;IAC3C,IAAI,SAA8B,CAAC;IACnC,IAAI,CAAC;QACH,uEAAuE;QACvE,0EAA0E;QAC1E,wEAAwE;QACxE,sEAAsE;QACtE,SAAS,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;YAC3C,QAAQ,EAAE,QAAQ;YAClB,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,SAAS;YAChB,GAAG,EAAE,SAAS;YACd,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,KAAK;YAChB,YAAY,EAAE,OAAO;SACtB,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,KAAK,GAA2B,EAAE,CAAC;IACzC,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;IAChF,OAAO,KAAK,CAAC;AACf,CAAC"}
|