@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
|
@@ -1,37 +1,84 @@
|
|
|
1
1
|
import { Article, Create, Delete, Hashtag, PUBLIC_COLLECTION, Source, Tombstone, Update, } from '@fedify/vocab';
|
|
2
2
|
import { Temporal as TemporalPolyfill } from '@js-temporal/polyfill';
|
|
3
|
-
import {
|
|
3
|
+
import { listUsers, primaryUser } from '../admin/accounts.js';
|
|
4
|
+
import { readSiteSettings, taxonomyBasesFromSettings } from '../admin/settings.js';
|
|
5
|
+
import { userForAuthor } from '../web/authors.js';
|
|
6
|
+
import { isPublicDocument, postObjectId } from '../web/documents.js';
|
|
4
7
|
import { absoluteUrl } from '../web/negotiate.js';
|
|
5
|
-
import { tagHref } from '../web/
|
|
6
|
-
import {
|
|
8
|
+
import { categoryHref, tagHref } from '../web/taxonomy.js';
|
|
9
|
+
import { actorId } from './actor.js';
|
|
7
10
|
import { createActivityId, deleteActivityId, updateActivityId } from './paths.js';
|
|
11
|
+
/**
|
|
12
|
+
* The user a post is announced by: the one its `author` names, and the site's
|
|
13
|
+
* first account for one that names nobody.
|
|
14
|
+
*
|
|
15
|
+
* decision-14 attributes a post to a person rather than to the site, and
|
|
16
|
+
* `userForAuthor` is the one rule that decides which — a username exactly, a
|
|
17
|
+
* display name only when exactly one person answers to it (TASK-67). The
|
|
18
|
+
* fallback matters because an `author` is free text in a file: a post that
|
|
19
|
+
* names a person who has since been deleted, or names nobody at all, is still
|
|
20
|
+
* a post this site has to be able to announce, and the first account is the
|
|
21
|
+
* only actor that can be chosen without guessing between people.
|
|
22
|
+
*
|
|
23
|
+
* `undefined` only for a site with no accounts, which is one in first-run
|
|
24
|
+
* setup and federates nothing.
|
|
25
|
+
*/
|
|
26
|
+
export function documentAuthor(context, document) {
|
|
27
|
+
const { dataDir } = context.data.config;
|
|
28
|
+
return userForAuthor(listUsers(dataDir), document.author) ?? primaryUser(dataDir);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* The actor id and followers collection a post's activities are addressed
|
|
32
|
+
* with, or a thrown error for a site with no accounts.
|
|
33
|
+
*
|
|
34
|
+
* Every activity in this module names the same two URLs, and they have to be
|
|
35
|
+
* the same two: an `Article` attributed to one actor and `cc`'d to another's
|
|
36
|
+
* followers would be a post nobody could place.
|
|
37
|
+
*/
|
|
38
|
+
function attribution(context, document) {
|
|
39
|
+
const user = documentAuthor(context, document);
|
|
40
|
+
if (user === undefined) {
|
|
41
|
+
throw new Error(`The post "${document.slug}" cannot be federated: the site has no accounts, ` +
|
|
42
|
+
'and decision-14 makes a user the actor a post is announced by.');
|
|
43
|
+
}
|
|
44
|
+
return { actor: actorId(context, user), followers: context.getFollowersUri(user.username) };
|
|
45
|
+
}
|
|
8
46
|
/** The media type an `Article`'s `source` is labelled with. */
|
|
9
47
|
export const SOURCE_MEDIA_TYPE = 'text/markdown';
|
|
10
48
|
/**
|
|
11
49
|
* Whether a document is one of the objects this site federates.
|
|
12
50
|
*
|
|
13
51
|
* doc-4 federates published posts and nothing else: pages are standing
|
|
14
|
-
* content with no place in a timeline, and a draft
|
|
15
|
-
* public at all. This is the one rule, so
|
|
16
|
-
* and the permalink all agree about what
|
|
52
|
+
* content with no place in a timeline, and a draft, a trashed post or one
|
|
53
|
+
* whose date has not arrived is not public at all. This is the one rule, so
|
|
54
|
+
* the object dispatcher, the outbox and the permalink all agree about what
|
|
55
|
+
* exists.
|
|
17
56
|
*/
|
|
18
|
-
export function isFederatedDocument(document) {
|
|
19
|
-
return document.type === 'post' && isPublicDocument(document);
|
|
57
|
+
export function isFederatedDocument(document, now = new Date()) {
|
|
58
|
+
return document.type === 'post' && isPublicDocument(document, now);
|
|
20
59
|
}
|
|
21
60
|
/**
|
|
22
61
|
* One post as the `Article` doc-4 describes.
|
|
23
62
|
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
63
|
+
* Its `id` and its `url` are the same URL — the permalink — because
|
|
64
|
+
* decision-13 gives a post one name for both audiences: a browser asking for
|
|
65
|
+
* HTML gets the page, a peer asking for ActivityStreams gets this. The
|
|
66
|
+
* exception is a post whose file already names an `activitypub.id`, which
|
|
67
|
+
* keeps it; see {@link articleObjectId}.
|
|
29
68
|
*
|
|
30
69
|
* `source` carries the Markdown the file holds, so a peer that wants to quote
|
|
31
70
|
* or re-render the post has the text rather than only the rendering of it.
|
|
71
|
+
*
|
|
72
|
+
* `attributedTo` is the actor of the user the post's `author` names
|
|
73
|
+
* (decision-14), and `cc` is that user's followers: a post belongs to a person
|
|
74
|
+
* on this site, not to the site.
|
|
32
75
|
*/
|
|
33
76
|
export function postArticle(context, document) {
|
|
34
77
|
const { baseUrl } = context.data.config;
|
|
78
|
+
const { actor, followers } = attribution(context, document);
|
|
79
|
+
// The archives an activity points at are wherever the site currently serves
|
|
80
|
+
// them, which is a setting rather than a constant (TASK-36).
|
|
81
|
+
const bases = taxonomyBasesFromSettings(readSiteSettings(context.data.config.contentDir));
|
|
35
82
|
return new Article({
|
|
36
83
|
id: articleObjectId(context, document),
|
|
37
84
|
url: new URL(absoluteUrl(document.permalink, baseUrl)),
|
|
@@ -40,17 +87,24 @@ export function postArticle(context, document) {
|
|
|
40
87
|
source: new Source({ content: document.body, mediaType: SOURCE_MEDIA_TYPE }),
|
|
41
88
|
published: toInstant(document.date) ?? null,
|
|
42
89
|
updated: toInstant(document.updated) ?? null,
|
|
43
|
-
attribution:
|
|
90
|
+
attribution: actor,
|
|
44
91
|
// Public addressing, as a blog post is: anybody may fetch it, and every
|
|
45
|
-
// follower is told about it.
|
|
92
|
+
// follower of its author is told about it.
|
|
46
93
|
to: PUBLIC_COLLECTION,
|
|
47
|
-
cc:
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
94
|
+
cc: followers,
|
|
95
|
+
// Both taxonomies become hashtags: a relay or a search that keys on a
|
|
96
|
+
// hashtag has no reason to care which of the two a term came from, and
|
|
97
|
+
// each one points at the archive the site serves for it.
|
|
98
|
+
tags: [
|
|
99
|
+
...document.tags.map((tag) => hashtag(tag, tagHref(tag, 0, bases), baseUrl)),
|
|
100
|
+
...document.categories.map((category) => hashtag(category, categoryHref(category, 0, bases), baseUrl)),
|
|
101
|
+
],
|
|
52
102
|
});
|
|
53
103
|
}
|
|
104
|
+
/** One taxonomy term as a `Hashtag` pointing at its archive. */
|
|
105
|
+
function hashtag(term, href, baseUrl) {
|
|
106
|
+
return new Hashtag({ name: `#${term}`, href: new URL(absoluteUrl(href, baseUrl)) });
|
|
107
|
+
}
|
|
54
108
|
/**
|
|
55
109
|
* The `Create` that announces a post: what the outbox lists, and what delivery
|
|
56
110
|
* sends.
|
|
@@ -61,13 +115,14 @@ export function postArticle(context, document) {
|
|
|
61
115
|
*/
|
|
62
116
|
export function postCreateActivity(context, document) {
|
|
63
117
|
const article = postArticle(context, document);
|
|
118
|
+
const { actor, followers } = attribution(context, document);
|
|
64
119
|
return new Create({
|
|
65
120
|
id: createActivityId(articleObjectId(context, document)),
|
|
66
|
-
actor
|
|
121
|
+
actor,
|
|
67
122
|
object: article,
|
|
68
123
|
published: toInstant(document.date) ?? null,
|
|
69
124
|
to: PUBLIC_COLLECTION,
|
|
70
|
-
cc:
|
|
125
|
+
cc: followers,
|
|
71
126
|
});
|
|
72
127
|
}
|
|
73
128
|
/**
|
|
@@ -77,16 +132,23 @@ export function postCreateActivity(context, document) {
|
|
|
77
132
|
* ActivityPub offers and all a peer can apply. Its id carries the document's
|
|
78
133
|
* hash, so two edits are two activities and the same edit delivered twice is
|
|
79
134
|
* one; see {@link updateActivityId}.
|
|
135
|
+
*
|
|
136
|
+
* `revision` overrides that. A resend (decision-9) is asking for a revision
|
|
137
|
+
* the followers have already been offered to be offered again, and an activity
|
|
138
|
+
* id a peer has seen is one it is entitled to drop, so a resend passes the
|
|
139
|
+
* moment instead of the hash. Everything else about the activity is the same,
|
|
140
|
+
* which is what makes a resent `Update` and a saved one the same shape.
|
|
80
141
|
*/
|
|
81
|
-
export function postUpdateActivity(context, document) {
|
|
142
|
+
export function postUpdateActivity(context, document, revision = revisionOf(document)) {
|
|
82
143
|
const article = postArticle(context, document);
|
|
144
|
+
const { actor, followers } = attribution(context, document);
|
|
83
145
|
return new Update({
|
|
84
|
-
id: updateActivityId(articleObjectId(context, document),
|
|
85
|
-
actor
|
|
146
|
+
id: updateActivityId(articleObjectId(context, document), revision),
|
|
147
|
+
actor,
|
|
86
148
|
object: article,
|
|
87
149
|
published: toInstant(document.updated ?? document.date) ?? null,
|
|
88
150
|
to: PUBLIC_COLLECTION,
|
|
89
|
-
cc:
|
|
151
|
+
cc: followers,
|
|
90
152
|
});
|
|
91
153
|
}
|
|
92
154
|
/**
|
|
@@ -103,40 +165,30 @@ export function postUpdateActivity(context, document) {
|
|
|
103
165
|
*/
|
|
104
166
|
export function postDeleteActivity(context, document, deleted) {
|
|
105
167
|
const objectId = articleObjectId(context, document);
|
|
168
|
+
const { actor, followers } = attribution(context, document);
|
|
106
169
|
return new Delete({
|
|
107
170
|
id: deleteActivityId(objectId, deleted),
|
|
108
|
-
actor
|
|
171
|
+
actor,
|
|
109
172
|
object: new Tombstone({
|
|
110
173
|
id: objectId,
|
|
111
174
|
formerType: Article,
|
|
112
175
|
deleted: toInstant(deleted) ?? null,
|
|
113
176
|
}),
|
|
114
177
|
to: PUBLIC_COLLECTION,
|
|
115
|
-
cc:
|
|
178
|
+
cc: followers,
|
|
116
179
|
});
|
|
117
180
|
}
|
|
118
181
|
/**
|
|
119
|
-
* A post's ActivityStreams object id
|
|
120
|
-
*
|
|
182
|
+
* A post's ActivityStreams object id, off the Fedify context: its permalink,
|
|
183
|
+
* or the id its file already names (decision-13).
|
|
121
184
|
*
|
|
122
|
-
*
|
|
123
|
-
*
|
|
124
|
-
*
|
|
125
|
-
*
|
|
126
|
-
* resolves a stored id back to its post, so the old URL keeps answering.
|
|
185
|
+
* A thin wrapper over {@link postObjectId} so everything in this module reads
|
|
186
|
+
* the id the same way and off the same base URL the article's `url` is built
|
|
187
|
+
* on. The rule itself lives in `web/documents.ts`, because the page, the feed
|
|
188
|
+
* item and the object are one identity now rather than three.
|
|
127
189
|
*/
|
|
128
190
|
export function articleObjectId(context, document) {
|
|
129
|
-
|
|
130
|
-
if (stored !== undefined && stored !== '') {
|
|
131
|
-
try {
|
|
132
|
-
return new URL(stored);
|
|
133
|
-
}
|
|
134
|
-
catch {
|
|
135
|
-
// A hand-written `activitypub.id` that is not a URL is not an id. Fall
|
|
136
|
-
// back to the derived one rather than failing the delivery.
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
return context.getObjectUri(Article, { slug: document.slug });
|
|
191
|
+
return new URL(postObjectId(document, context.data.config.baseUrl));
|
|
140
192
|
}
|
|
141
193
|
/**
|
|
142
194
|
* Which revision of a document an `Update` is announcing.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"article.js","sourceRoot":"","sources":["../../src/federation/article.ts"],"names":[],"mappings":"AACA,OAAO,EACL,OAAO,EACP,MAAM,EACN,MAAM,EACN,OAAO,EACP,iBAAiB,EACjB,MAAM,EACN,SAAS,EACT,MAAM,GACP,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,QAAQ,IAAI,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"article.js","sourceRoot":"","sources":["../../src/federation/article.ts"],"names":[],"mappings":"AACA,OAAO,EACL,OAAO,EACP,MAAM,EACN,MAAM,EACN,OAAO,EACP,iBAAiB,EACjB,MAAM,EACN,SAAS,EACT,MAAM,GACP,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,QAAQ,IAAI,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAErE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEnF,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAElF;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,cAAc,CAC5B,OAAuC,EACvC,QAAkB;IAElB,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;IACxC,OAAO,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;AACpF,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,WAAW,CAClB,OAAuC,EACvC,QAAkB;IAElB,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC/C,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,aAAa,QAAQ,CAAC,IAAI,mDAAmD;YAC3E,gEAAgE,CACnE,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC9F,CAAC;AAED,+DAA+D;AAC/D,MAAM,CAAC,MAAM,iBAAiB,GAAG,eAAe,CAAC;AAEjD;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAkB,EAAE,GAAG,GAAS,IAAI,IAAI,EAAE;IAC5E,OAAO,QAAQ,CAAC,IAAI,KAAK,MAAM,IAAI,gBAAgB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AACrE,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,WAAW,CAAC,OAAuC,EAAE,QAAkB;IACrF,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;IACxC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC5D,4EAA4E;IAC5E,6DAA6D;IAC7D,MAAM,KAAK,GAAG,yBAAyB,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IAE1F,OAAO,IAAI,OAAO,CAAC;QACjB,EAAE,EAAE,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC;QACtC,GAAG,EAAE,IAAI,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACtD,IAAI,EAAE,QAAQ,CAAC,KAAK;QACpB,OAAO,EAAE,QAAQ,CAAC,IAAI;QACtB,MAAM,EAAE,IAAI,MAAM,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC;QAC5E,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI;QAC3C,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI;QAC5C,WAAW,EAAE,KAAK;QAClB,wEAAwE;QACxE,2CAA2C;QAC3C,EAAE,EAAE,iBAAiB;QACrB,EAAE,EAAE,SAAS;QACb,sEAAsE;QACtE,uEAAuE;QACvE,yDAAyD;QACzD,IAAI,EAAE;YACJ,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;YAC5E,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CACtC,OAAO,CAAC,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,CAC7D;SACF;KACF,CAAC,CAAC;AACL,CAAC;AAED,gEAAgE;AAChE,SAAS,OAAO,CAAC,IAAY,EAAE,IAAY,EAAE,OAAe;IAC1D,OAAO,IAAI,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;AACtF,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAuC,EACvC,QAAkB;IAElB,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC/C,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAE5D,OAAO,IAAI,MAAM,CAAC;QAChB,EAAE,EAAE,gBAAgB,CAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACxD,KAAK;QACL,MAAM,EAAE,OAAO;QACf,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI;QAC3C,EAAE,EAAE,iBAAiB;QACrB,EAAE,EAAE,SAAS;KACd,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAuC,EACvC,QAAkB,EAClB,QAAQ,GAAW,UAAU,CAAC,QAAQ,CAAC;IAEvC,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC/C,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAE5D,OAAO,IAAI,MAAM,CAAC;QAChB,EAAE,EAAE,gBAAgB,CAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC;QAClE,KAAK;QACL,MAAM,EAAE,OAAO;QACf,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI;QAC/D,EAAE,EAAE,iBAAiB;QACrB,EAAE,EAAE,SAAS;KACd,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAuC,EACvC,QAAkB,EAClB,OAAe;IAEf,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACpD,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAE5D,OAAO,IAAI,MAAM,CAAC;QAChB,EAAE,EAAE,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC;QACvC,KAAK;QACL,MAAM,EAAE,IAAI,SAAS,CAAC;YACpB,EAAE,EAAE,QAAQ;YACZ,UAAU,EAAE,OAAO;YACnB,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,IAAI,IAAI;SACpC,CAAC;QACF,EAAE,EAAE,iBAAiB;QACrB,EAAE,EAAE,SAAS;KACd,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,OAAuC,EAAE,QAAkB;IACzF,OAAO,IAAI,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AACtE,CAAC;AAED;;;;;GAKG;AACH,SAAS,UAAU,CAAC,QAAkB;IACpC,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACpC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,SAAS,CAAC,KAAyB;IACjD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAAE,OAAO,SAAS,CAAC;IACnD,OAAO,gBAAgB,CAAC,OAAO,CAAC,qBAAqB,CACnD,IAAI,CAAC,OAAO,EAAE,CACgB,CAAC;AACnC,CAAC"}
|
|
@@ -1,20 +1,25 @@
|
|
|
1
|
+
import type { Recipient } from '@fedify/vocab';
|
|
2
|
+
import type { User } from '../admin/accounts.ts';
|
|
1
3
|
import type { AdminStore, Delivery, Follower } from '../admin/store.ts';
|
|
2
4
|
import type { ResolvedConfig } from '../config.ts';
|
|
3
5
|
import type { ContentStore } from '../content/store.ts';
|
|
4
6
|
import type { DocumentChange } from '../content/sync.ts';
|
|
5
7
|
import type { SiteFederation } from './federation.ts';
|
|
6
|
-
/** What one activity's delivery came to,
|
|
8
|
+
/** What one activity's delivery came to, recipient by recipient. */
|
|
7
9
|
export interface DeliveryReport {
|
|
8
10
|
/** The activity that went out. */
|
|
9
11
|
readonly activityId: string;
|
|
10
12
|
/** `Create`, `Update` or `Delete`. */
|
|
11
13
|
readonly activityType: string;
|
|
12
14
|
/**
|
|
13
|
-
* The ActivityStreams id of what it was about: a post, or
|
|
14
|
-
*
|
|
15
|
+
* The ActivityStreams id of what it was about: a post, or a user's own actor
|
|
16
|
+
* when the profile itself was what moved.
|
|
15
17
|
*/
|
|
16
18
|
readonly objectId: string;
|
|
17
|
-
/**
|
|
19
|
+
/**
|
|
20
|
+
* One row per follower and per accepted relay, as recorded. Empty when the
|
|
21
|
+
* author has no followers and the site has no relay.
|
|
22
|
+
*/
|
|
18
23
|
readonly deliveries: readonly Delivery[];
|
|
19
24
|
}
|
|
20
25
|
/** Where a delivery service reports what it could not do. `console` will do. */
|
|
@@ -35,7 +40,8 @@ export interface CreateDeliveryServiceOptions {
|
|
|
35
40
|
logger?: DeliveryLogger | undefined;
|
|
36
41
|
}
|
|
37
42
|
/**
|
|
38
|
-
* Sends a site's posts to its followers, and remembers how that
|
|
43
|
+
* Sends a site's posts to its followers and its relays, and remembers how that
|
|
44
|
+
* went.
|
|
39
45
|
*
|
|
40
46
|
* Deliveries run one after another on a queue of their own rather than at
|
|
41
47
|
* once, because ActivityPub has no way of saying that a `Create` came before
|
|
@@ -50,22 +56,34 @@ export interface DeliveryService {
|
|
|
50
56
|
*/
|
|
51
57
|
handle(change: DocumentChange): Promise<void>;
|
|
52
58
|
/**
|
|
53
|
-
* Tell
|
|
54
|
-
*
|
|
59
|
+
* Tell one user's followers that their profile has moved: an `Update` whose
|
|
60
|
+
* object is their actor, which is how a peer learns that the name, the
|
|
55
61
|
* summary or the avatar it cached is out of date.
|
|
56
62
|
*
|
|
57
|
-
* `undefined` when
|
|
58
|
-
* and nothing is recorded: there is no
|
|
63
|
+
* `undefined` when that user has no followers and the site has no accepted
|
|
64
|
+
* relay, in which case nothing is built and nothing is recorded: there is no
|
|
65
|
+
* cached profile anywhere to refresh.
|
|
59
66
|
*/
|
|
60
|
-
updateActor(): Promise<DeliveryReport | undefined>;
|
|
67
|
+
updateActor(user: User): Promise<DeliveryReport | undefined>;
|
|
61
68
|
/**
|
|
62
|
-
* Send
|
|
69
|
+
* Send one post as it now reads to every follower and every accepted relay
|
|
70
|
+
* the site has.
|
|
71
|
+
*
|
|
72
|
+
* Not "send that activity again": the activity is built from the file at the
|
|
73
|
+
* moment this is called (decision-9), so a follower whose server was down
|
|
74
|
+
* ends up holding the post as it stands rather than the revision that failed
|
|
75
|
+
* to reach it. Which activity that is follows the same rule a save does — a
|
|
76
|
+
* published post no follower has been told about is a `Create` and is
|
|
77
|
+
* stamped, a published post they have is an `Update`, a draft or a trashed
|
|
78
|
+
* one is a `Delete` of a `Tombstone` — so a resend and an ordinary publish
|
|
79
|
+
* produce the same shapes.
|
|
63
80
|
*
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
*
|
|
81
|
+
* `undefined` when there is nothing to send: no post answers to that slug,
|
|
82
|
+
* or the post is one nobody outside the site has ever been told about and is
|
|
83
|
+
* not published now, so there is neither a copy to withdraw nor anything to
|
|
84
|
+
* announce.
|
|
67
85
|
*/
|
|
68
|
-
|
|
86
|
+
resend(slug: string): Promise<DeliveryReport | undefined>;
|
|
69
87
|
/** Resolve once every queued delivery has finished, however it finished. */
|
|
70
88
|
settled(): Promise<void>;
|
|
71
89
|
}
|
|
@@ -82,6 +100,36 @@ export interface DeliveryService {
|
|
|
82
100
|
* archive to every follower every time somebody deleted the database.
|
|
83
101
|
*/
|
|
84
102
|
export declare function createDeliveryService(options: CreateDeliveryServiceOptions): DeliveryService;
|
|
103
|
+
/**
|
|
104
|
+
* One inbox a POST goes to, and who is behind it.
|
|
105
|
+
*
|
|
106
|
+
* The unit a fan-out works in. A follower group and a relay are the same thing
|
|
107
|
+
* from here — an inbox, the recipients Fedify addresses it with, and the actors
|
|
108
|
+
* whose delivery rows the outcome is written to — which is what lets a relay
|
|
109
|
+
* be recorded like a follower without pretending to be one.
|
|
110
|
+
*/
|
|
111
|
+
export interface DeliveryTarget {
|
|
112
|
+
/** The inbox one POST reaches: a shared inbox, a personal one, or a relay's. */
|
|
113
|
+
readonly inboxId: string;
|
|
114
|
+
/** What Fedify is handed to address it. */
|
|
115
|
+
readonly recipients: Recipient[];
|
|
116
|
+
/** Whose outcome rows this delivery writes: the followers, or the relay. */
|
|
117
|
+
readonly actorIds: readonly string[];
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Everywhere one public activity goes: one user's followers, grouped by the
|
|
121
|
+
* inbox they share, and every accepted relay.
|
|
122
|
+
*
|
|
123
|
+
* The followers are one person's (decision-14) and the relays are the site's:
|
|
124
|
+
* a relay subscribes to everything public this site sends, whoever wrote it,
|
|
125
|
+
* so it is a target of every author's activities.
|
|
126
|
+
*
|
|
127
|
+
* A relay is one target of its own rather than a member of a group, because it
|
|
128
|
+
* is one inbox with one actor behind it and no shared inbox to fold into. A
|
|
129
|
+
* pending or rejected relay is not here at all — {@link acceptedRelays} is
|
|
130
|
+
* where that rule lives.
|
|
131
|
+
*/
|
|
132
|
+
export declare function deliveryTargets(admin: AdminStore, username: string): DeliveryTarget[];
|
|
85
133
|
/**
|
|
86
134
|
* Followers keyed by the inbox one POST to which reaches them: the instance's
|
|
87
135
|
* shared inbox where it published one, and the follower's own where it did not.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delivery.d.ts","sourceRoot":"","sources":["../../src/federation/delivery.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"delivery.d.ts","sourceRoot":"","sources":["../../src/federation/delivery.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAkB,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACxF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAGnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAWzD,OAAO,KAAK,EAAyB,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAK7E,oEAAoE;AACpE,MAAM,WAAW,cAAc;IAC7B,kCAAkC;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,sCAAsC;IACtC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,QAAQ,CAAC,UAAU,EAAE,SAAS,QAAQ,EAAE,CAAC;CAC1C;AAED,gFAAgF;AAChF,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,gDAAgD;AAChD,MAAM,WAAW,4BAA4B;IAC3C,gFAAgF;IAChF,UAAU,EAAE,cAAc,CAAC;IAC3B,sCAAsC;IACtC,KAAK,EAAE,UAAU,CAAC;IAClB,yEAAyE;IACzE,KAAK,EAAE,YAAY,CAAC;IACpB,uDAAuD;IACvD,MAAM,EAAE,cAAc,CAAC;IACvB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;CACrC;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C;;;;;;;;OAQG;IACH,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;IAC7D;;;;;;;;;;;;;;;;;OAiBG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;IAC1D,4EAA4E;IAC5E,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,4BAA4B,GAAG,eAAe,CAyT5F;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,cAAc;IAC7B,gFAAgF;IAChF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,2CAA2C;IAC3C,QAAQ,CAAC,UAAU,EAAE,SAAS,EAAE,CAAC;IACjC,4EAA4E;IAC5E,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,cAAc,EAAE,CAuBrF;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,SAAS,QAAQ,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAWpF"}
|