@geekity/cms 0.29.0 → 0.31.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 +26 -4214
- package/admin/pages/settings/privacy.njk +1 -1
- package/dist/access-log.d.ts +2 -10
- package/dist/access-log.d.ts.map +1 -1
- package/dist/access-log.js +1 -1
- package/dist/access-log.js.map +1 -1
- package/dist/{web → admin}/admin-bar.d.ts +3 -2
- package/dist/admin/admin-bar.d.ts.map +1 -0
- package/dist/{web → admin}/admin-bar.js +20 -17
- package/dist/admin/admin-bar.js.map +1 -0
- package/dist/{indieauth → admin}/app-activity.d.ts +2 -2
- package/dist/admin/app-activity.d.ts.map +1 -0
- package/dist/{indieauth → admin}/app-activity.js +5 -5
- package/dist/admin/app-activity.js.map +1 -0
- package/dist/admin/appearance.d.ts +3 -3
- package/dist/admin/appearance.d.ts.map +1 -1
- package/dist/admin/appearance.js +12 -6
- package/dist/admin/appearance.js.map +1 -1
- package/dist/admin/assets.d.ts +1 -8
- package/dist/admin/assets.d.ts.map +1 -1
- package/dist/admin/assets.js +2 -9
- package/dist/admin/assets.js.map +1 -1
- package/dist/admin/comments.d.ts +2 -2
- package/dist/admin/comments.d.ts.map +1 -1
- package/dist/admin/comments.js +16 -17
- package/dist/admin/comments.js.map +1 -1
- package/dist/{indieauth → admin}/connected-apps.d.ts +2 -2
- package/dist/admin/connected-apps.d.ts.map +1 -0
- package/dist/{indieauth → admin}/connected-apps.js +18 -19
- package/dist/admin/connected-apps.js.map +1 -0
- package/dist/admin/credentials.js +1 -1
- package/dist/admin/credentials.js.map +1 -1
- package/dist/admin/dev-mode.d.ts +1 -1
- package/dist/admin/dev-mode.d.ts.map +1 -1
- package/dist/admin/documents.d.ts +16 -301
- package/dist/admin/documents.d.ts.map +1 -1
- package/dist/admin/documents.js +74 -1032
- package/dist/admin/documents.js.map +1 -1
- package/dist/admin/editor-actions.d.ts +3 -2
- package/dist/admin/editor-actions.d.ts.map +1 -1
- package/dist/admin/editor-actions.js +8 -8
- package/dist/admin/editor-actions.js.map +1 -1
- package/dist/admin/editor-fields.d.ts +45 -0
- package/dist/admin/editor-fields.d.ts.map +1 -0
- package/dist/admin/editor-fields.js +71 -0
- package/dist/admin/editor-fields.js.map +1 -0
- package/dist/admin/editor-layout.d.ts +2 -10
- package/dist/admin/editor-layout.d.ts.map +1 -1
- package/dist/admin/editor-layout.js +1 -1
- package/dist/admin/editor-layout.js.map +1 -1
- package/dist/admin/federation.d.ts +5 -5
- package/dist/admin/federation.d.ts.map +1 -1
- package/dist/admin/federation.js +16 -18
- package/dist/admin/federation.js.map +1 -1
- package/dist/admin/flash.d.ts +2 -2
- package/dist/admin/flash.d.ts.map +1 -1
- package/dist/admin/headers.d.ts +1 -1
- package/dist/admin/headers.d.ts.map +1 -1
- package/dist/admin/headers.js +1 -1
- package/dist/admin/headers.js.map +1 -1
- package/dist/admin/index.d.ts +38 -20
- package/dist/admin/index.d.ts.map +1 -1
- package/dist/admin/index.js +27 -13
- package/dist/admin/index.js.map +1 -1
- package/dist/{indieauth/consent.d.ts → admin/indieauth-consent.d.ts} +4 -4
- package/dist/admin/indieauth-consent.d.ts.map +1 -0
- package/dist/{indieauth/consent.js → admin/indieauth-consent.js} +17 -18
- package/dist/admin/indieauth-consent.js.map +1 -0
- package/dist/admin/legacy-migrations.d.ts +131 -0
- package/dist/admin/legacy-migrations.d.ts.map +1 -0
- package/dist/admin/legacy-migrations.js +235 -0
- package/dist/admin/legacy-migrations.js.map +1 -0
- package/dist/admin/media.d.ts +4 -108
- package/dist/admin/media.d.ts.map +1 -1
- package/dist/admin/media.js +19 -187
- package/dist/admin/media.js.map +1 -1
- package/dist/admin/menu.d.ts.map +1 -1
- package/dist/admin/menu.js +7 -7
- package/dist/admin/menu.js.map +1 -1
- package/dist/admin/messages.d.ts +1 -1
- package/dist/admin/messages.d.ts.map +1 -1
- package/dist/admin/messages.js +10 -12
- package/dist/admin/messages.js.map +1 -1
- package/dist/admin/navigation.d.ts +3 -3
- package/dist/admin/navigation.d.ts.map +1 -1
- package/dist/admin/navigation.js +9 -12
- package/dist/admin/navigation.js.map +1 -1
- package/dist/admin/personal-data.d.ts +1 -1
- package/dist/admin/personal-data.d.ts.map +1 -1
- package/dist/admin/personal-data.js +3 -6
- package/dist/admin/personal-data.js.map +1 -1
- package/dist/admin/plugins.d.ts +1 -1
- package/dist/admin/plugins.d.ts.map +1 -1
- package/dist/admin/plugins.js +11 -15
- package/dist/admin/plugins.js.map +1 -1
- package/dist/admin/preview.d.ts +2 -1
- package/dist/admin/preview.d.ts.map +1 -1
- package/dist/admin/preview.js +28 -32
- package/dist/admin/preview.js.map +1 -1
- package/dist/admin/recovery.d.ts +3 -3
- package/dist/admin/recovery.d.ts.map +1 -1
- package/dist/admin/recovery.js +10 -12
- package/dist/admin/recovery.js.map +1 -1
- package/dist/admin/routes.d.ts +1 -3
- package/dist/admin/routes.d.ts.map +1 -1
- package/dist/admin/routes.js +28 -26
- package/dist/admin/routes.js.map +1 -1
- package/dist/admin/settings-discussion.d.ts.map +1 -1
- package/dist/admin/settings-discussion.js +7 -4
- package/dist/admin/settings-discussion.js.map +1 -1
- package/dist/admin/settings-email.d.ts +1 -1
- package/dist/admin/settings-email.d.ts.map +1 -1
- package/dist/admin/settings-email.js +13 -10
- package/dist/admin/settings-email.js.map +1 -1
- package/dist/admin/settings-general.d.ts.map +1 -1
- package/dist/admin/settings-general.js +10 -7
- package/dist/admin/settings-general.js.map +1 -1
- package/dist/admin/settings-page.d.ts +3 -4
- package/dist/admin/settings-page.d.ts.map +1 -1
- package/dist/admin/settings-page.js +5 -6
- package/dist/admin/settings-page.js.map +1 -1
- package/dist/admin/settings-pages.d.ts +1 -1
- package/dist/admin/settings-pages.d.ts.map +1 -1
- package/dist/admin/settings-permalinks.js +1 -1
- package/dist/admin/settings-permalinks.js.map +1 -1
- package/dist/admin/settings-reading.d.ts +2 -2
- package/dist/admin/settings-reading.d.ts.map +1 -1
- package/dist/admin/settings-reading.js +4 -3
- package/dist/admin/settings-reading.js.map +1 -1
- package/dist/admin/settings.d.ts +0 -579
- package/dist/admin/settings.d.ts.map +1 -1
- package/dist/admin/settings.js +1 -1155
- package/dist/admin/settings.js.map +1 -1
- package/dist/admin/syndication-targets.d.ts +1 -1
- package/dist/admin/syndication-targets.d.ts.map +1 -1
- package/dist/admin/syndication-targets.js +11 -15
- package/dist/admin/syndication-targets.js.map +1 -1
- package/dist/admin/taxonomy.d.ts +2 -2
- package/dist/admin/taxonomy.d.ts.map +1 -1
- package/dist/admin/taxonomy.js +8 -11
- package/dist/admin/taxonomy.js.map +1 -1
- package/dist/admin/templates.js +1 -1
- package/dist/admin/templates.js.map +1 -1
- package/dist/admin/tools.d.ts +4 -4
- package/dist/admin/tools.d.ts.map +1 -1
- package/dist/admin/tools.js +3 -6
- package/dist/admin/tools.js.map +1 -1
- package/dist/admin/uploads.d.ts +1 -106
- package/dist/admin/uploads.d.ts.map +1 -1
- package/dist/admin/uploads.js +2 -191
- package/dist/admin/uploads.js.map +1 -1
- package/dist/admin/users.d.ts +20 -15
- package/dist/admin/users.d.ts.map +1 -1
- package/dist/admin/users.js +83 -80
- package/dist/admin/users.js.map +1 -1
- package/dist/avatars/avatars.d.ts +2 -2
- package/dist/avatars/avatars.d.ts.map +1 -1
- package/dist/avatars/avatars.js +6 -9
- package/dist/avatars/avatars.js.map +1 -1
- package/dist/avatars/index.d.ts +0 -1
- package/dist/avatars/index.d.ts.map +1 -1
- package/dist/avatars/index.js +0 -1
- package/dist/avatars/index.js.map +1 -1
- package/dist/cache.d.ts +4 -2
- package/dist/cache.d.ts.map +1 -1
- package/dist/cache.js +11 -5
- package/dist/cache.js.map +1 -1
- package/dist/cli.d.ts +2 -33
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +245 -267
- package/dist/cli.js.map +1 -1
- package/dist/cms/app.d.ts +11 -0
- package/dist/cms/app.d.ts.map +1 -0
- package/dist/cms/app.js +115 -0
- package/dist/cms/app.js.map +1 -0
- package/dist/cms/boot.d.ts +14 -0
- package/dist/cms/boot.d.ts.map +1 -0
- package/dist/cms/boot.js +107 -0
- package/dist/cms/boot.js.map +1 -0
- package/dist/cms/create.d.ts +248 -0
- package/dist/cms/create.d.ts.map +1 -0
- package/dist/cms/create.js +167 -0
- package/dist/cms/create.js.map +1 -0
- package/dist/cms/lifecycle.d.ts +11 -0
- package/dist/cms/lifecycle.d.ts.map +1 -0
- package/dist/cms/lifecycle.js +15 -0
- package/dist/cms/lifecycle.js.map +1 -0
- package/dist/{web/errors.d.ts → cms/server-error.d.ts} +2 -8
- package/dist/cms/server-error.d.ts.map +1 -0
- package/dist/{web/errors.js → cms/server-error.js} +4 -14
- package/dist/cms/server-error.js.map +1 -0
- package/dist/cms/services.d.ts +55 -0
- package/dist/cms/services.d.ts.map +1 -0
- package/dist/cms/services.js +353 -0
- package/dist/cms/services.js.map +1 -0
- package/dist/cms/site-records.d.ts +4 -0
- package/dist/cms/site-records.d.ts.map +1 -0
- package/dist/cms/site-records.js +15 -0
- package/dist/cms/site-records.js.map +1 -0
- package/dist/comments/akismet.d.ts +1 -1
- package/dist/comments/akismet.d.ts.map +1 -1
- package/dist/comments/akismet.js +1 -3
- package/dist/comments/akismet.js.map +1 -1
- package/dist/comments/conversation.d.ts +334 -0
- package/dist/comments/conversation.d.ts.map +1 -0
- package/dist/comments/conversation.js +51 -0
- package/dist/comments/conversation.js.map +1 -0
- package/dist/comments/form.d.ts +2 -2
- package/dist/comments/form.d.ts.map +1 -1
- package/dist/comments/form.js +2 -2
- package/dist/comments/form.js.map +1 -1
- package/dist/comments/index.d.ts +12 -6
- package/dist/comments/index.d.ts.map +1 -1
- package/dist/comments/index.js +7 -4
- package/dist/comments/index.js.map +1 -1
- package/dist/comments/intake.d.ts +147 -0
- package/dist/comments/intake.d.ts.map +1 -0
- package/dist/comments/intake.js +161 -0
- package/dist/comments/intake.js.map +1 -0
- package/dist/comments/markdown.d.ts.map +1 -1
- package/dist/comments/markdown.js +2 -9
- package/dist/comments/markdown.js.map +1 -1
- package/dist/comments/migrations.d.ts +45 -0
- package/dist/comments/migrations.d.ts.map +1 -0
- package/dist/comments/migrations.js +194 -0
- package/dist/comments/migrations.js.map +1 -0
- package/dist/comments/moderate.d.ts +2 -2
- package/dist/comments/moderate.d.ts.map +1 -1
- package/dist/comments/moderate.js +3 -13
- package/dist/comments/moderate.js.map +1 -1
- package/dist/comments/page-form.d.ts +52 -0
- package/dist/comments/page-form.d.ts.map +1 -0
- package/dist/comments/page-form.js +62 -0
- package/dist/comments/page-form.js.map +1 -0
- package/dist/comments/policy.d.ts +1 -9
- package/dist/comments/policy.d.ts.map +1 -1
- package/dist/comments/policy.js +3 -18
- package/dist/comments/policy.js.map +1 -1
- package/dist/comments/records.d.ts +25 -173
- package/dist/comments/records.d.ts.map +1 -1
- package/dist/comments/records.js +69 -265
- package/dist/comments/records.js.map +1 -1
- package/dist/comments/reply-notices.d.ts +5 -5
- package/dist/comments/reply-notices.d.ts.map +1 -1
- package/dist/comments/reply-notices.js +6 -6
- package/dist/comments/reply-notices.js.map +1 -1
- package/dist/comments/reply-post.d.ts +2 -2
- package/dist/comments/reply-post.d.ts.map +1 -1
- package/dist/comments/reply-post.js +7 -5
- package/dist/comments/reply-post.js.map +1 -1
- package/dist/comments/routes.d.ts +3 -3
- package/dist/comments/routes.d.ts.map +1 -1
- package/dist/comments/routes.js +22 -34
- package/dist/comments/routes.js.map +1 -1
- package/dist/comments/submission.d.ts +5 -100
- package/dist/comments/submission.d.ts.map +1 -1
- package/dist/comments/submission.js +5 -20
- package/dist/comments/submission.js.map +1 -1
- package/dist/comments/viewer.d.ts +1 -25
- package/dist/comments/viewer.d.ts.map +1 -1
- package/dist/comments/viewer.js +1 -44
- package/dist/comments/viewer.js.map +1 -1
- package/dist/config-loader.d.ts +35 -0
- package/dist/config-loader.d.ts.map +1 -0
- package/dist/config-loader.js +116 -0
- package/dist/config-loader.js.map +1 -0
- package/dist/config.d.ts +72 -50
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +132 -180
- package/dist/config.js.map +1 -1
- package/dist/contact/delivery.d.ts +1 -1
- package/dist/contact/delivery.d.ts.map +1 -1
- package/dist/contact/delivery.js +5 -13
- package/dist/contact/delivery.js.map +1 -1
- package/dist/contact/form.d.ts +2 -4
- package/dist/contact/form.d.ts.map +1 -1
- package/dist/contact/form.js +3 -4
- package/dist/contact/form.js.map +1 -1
- package/dist/contact/index.d.ts +2 -2
- package/dist/contact/index.d.ts.map +1 -1
- package/dist/contact/index.js +2 -2
- package/dist/contact/index.js.map +1 -1
- package/dist/contact/records.d.ts.map +1 -1
- package/dist/contact/records.js +8 -11
- package/dist/contact/records.js.map +1 -1
- package/dist/contact/submission.d.ts +2 -2
- package/dist/contact/submission.d.ts.map +1 -1
- package/dist/contact/submission.js +7 -16
- package/dist/contact/submission.js.map +1 -1
- package/dist/{images → content}/alt-text.d.ts +1 -1
- package/dist/content/alt-text.d.ts.map +1 -0
- package/dist/{images → content}/alt-text.js +3 -5
- package/dist/content/alt-text.js.map +1 -0
- package/dist/content/authors.d.ts +79 -0
- package/dist/content/authors.d.ts.map +1 -0
- package/dist/content/authors.js +106 -0
- package/dist/content/authors.js.map +1 -0
- package/dist/content/citation.d.ts +3 -0
- package/dist/content/citation.d.ts.map +1 -1
- package/dist/content/citation.js +3 -0
- package/dist/content/citation.js.map +1 -1
- package/dist/content/comments.d.ts +3 -0
- package/dist/content/comments.d.ts.map +1 -0
- package/dist/content/comments.js +3 -0
- package/dist/content/comments.js.map +1 -0
- package/dist/content/contact.d.ts +3 -0
- package/dist/content/contact.d.ts.map +1 -0
- package/dist/content/contact.js +3 -0
- package/dist/content/contact.js.map +1 -0
- package/dist/content/document-form.d.ts +195 -0
- package/dist/content/document-form.d.ts.map +1 -0
- package/dist/content/document-form.js +201 -0
- package/dist/content/document-form.js.map +1 -0
- package/dist/content/document-kind.d.ts +55 -0
- package/dist/content/document-kind.d.ts.map +1 -0
- package/dist/content/document-kind.js +30 -0
- package/dist/content/document-kind.js.map +1 -0
- package/dist/{admin/enclosure-field.d.ts → content/enclosure-form.d.ts} +14 -34
- package/dist/content/enclosure-form.d.ts.map +1 -0
- package/dist/{admin/enclosure-field.js → content/enclosure-form.js} +39 -76
- package/dist/content/enclosure-form.js.map +1 -0
- package/dist/content/enclosure.d.ts.map +1 -1
- package/dist/content/enclosure.js +3 -4
- package/dist/content/enclosure.js.map +1 -1
- package/dist/{admin/event-field.d.ts → content/event-form.d.ts} +6 -5
- package/dist/content/event-form.d.ts.map +1 -0
- package/dist/{admin/event-field.js → content/event-form.js} +45 -12
- package/dist/content/event-form.js.map +1 -0
- package/dist/content/excerpt.d.ts +25 -0
- package/dist/content/excerpt.d.ts.map +1 -0
- package/dist/content/excerpt.js +43 -0
- package/dist/content/excerpt.js.map +1 -0
- package/dist/content/form-error.d.ts +10 -0
- package/dist/content/form-error.d.ts.map +1 -0
- package/dist/content/form-error.js +2 -0
- package/dist/content/form-error.js.map +1 -0
- package/dist/{web → content}/guids.d.ts +14 -19
- package/dist/content/guids.d.ts.map +1 -0
- package/dist/{web → content}/guids.js +30 -19
- package/dist/content/guids.js.map +1 -0
- package/dist/content/image-tags.d.ts +25 -0
- package/dist/content/image-tags.d.ts.map +1 -0
- package/dist/content/image-tags.js +55 -0
- package/dist/content/image-tags.js.map +1 -0
- package/dist/content/index.d.ts +9 -4
- package/dist/content/index.d.ts.map +1 -1
- package/dist/content/index.js +5 -2
- package/dist/content/index.js.map +1 -1
- package/dist/content/language.d.ts +19 -0
- package/dist/content/language.d.ts.map +1 -0
- package/dist/content/language.js +19 -0
- package/dist/content/language.js.map +1 -0
- package/dist/content/license.d.ts.map +1 -0
- package/dist/content/license.js.map +1 -0
- package/dist/{web → content}/locale.d.ts +0 -6
- package/dist/content/locale.d.ts.map +1 -0
- package/dist/{web → content}/locale.js +1 -6
- package/dist/content/locale.js.map +1 -0
- package/dist/content/location-form.d.ts +17 -0
- package/dist/content/location-form.d.ts.map +1 -0
- package/dist/{admin/location-field.js → content/location-form.js} +2 -23
- package/dist/content/location-form.js.map +1 -0
- package/dist/content/location.d.ts.map +1 -1
- package/dist/content/location.js +1 -3
- package/dist/content/location.js.map +1 -1
- package/dist/content/markdown-links.d.ts +11 -0
- package/dist/content/markdown-links.d.ts.map +1 -0
- package/dist/content/markdown-links.js +223 -0
- package/dist/content/markdown-links.js.map +1 -0
- package/dist/content/markdown.d.ts +2 -1
- package/dist/content/markdown.d.ts.map +1 -1
- package/dist/content/markdown.js +1 -1
- package/dist/content/markdown.js.map +1 -1
- package/dist/content/migrated.js +1 -1
- package/dist/content/migrated.js.map +1 -1
- package/dist/content/parser.d.ts.map +1 -1
- package/dist/content/parser.js +1 -12
- package/dist/content/parser.js.map +1 -1
- package/dist/content/permalinks.d.ts +34 -0
- package/dist/content/permalinks.d.ts.map +1 -0
- package/dist/{web/documents.js → content/permalinks.js} +6 -56
- package/dist/content/permalinks.js.map +1 -0
- package/dist/content/photo-form.d.ts +28 -0
- package/dist/content/photo-form.d.ts.map +1 -0
- package/dist/{admin/photo-field.js → content/photo-form.js} +36 -36
- package/dist/content/photo-form.js.map +1 -0
- package/dist/content/photo.d.ts +1 -1
- package/dist/content/photo.d.ts.map +1 -1
- package/dist/content/photo.js +1 -1
- package/dist/content/photo.js.map +1 -1
- package/dist/content/post-fields.d.ts +40 -0
- package/dist/content/post-fields.d.ts.map +1 -0
- package/dist/content/post-fields.js +256 -0
- package/dist/content/post-fields.js.map +1 -0
- package/dist/{admin/read-field.d.ts → content/read-form.d.ts} +6 -4
- package/dist/content/read-form.d.ts.map +1 -0
- package/dist/content/read-form.js +99 -0
- package/dist/content/read-form.js.map +1 -0
- package/dist/content/read.d.ts.map +1 -1
- package/dist/content/read.js +7 -11
- package/dist/content/read.js.map +1 -1
- package/dist/content/redirects.d.ts +84 -0
- package/dist/content/redirects.d.ts.map +1 -0
- package/dist/content/redirects.js +234 -0
- package/dist/content/redirects.js.map +1 -0
- package/dist/content/sanitize.d.ts +13 -0
- package/dist/content/sanitize.d.ts.map +1 -0
- package/dist/{web → content}/sanitize.js +4 -71
- package/dist/content/sanitize.js.map +1 -0
- package/dist/content/save.d.ts +5 -8
- package/dist/content/save.d.ts.map +1 -1
- package/dist/content/save.js +5 -26
- package/dist/content/save.js.map +1 -1
- package/dist/content/schedule.d.ts +2 -2
- package/dist/content/schedule.d.ts.map +1 -1
- package/dist/content/schedule.js +1 -3
- package/dist/content/schedule.js.map +1 -1
- package/dist/content/served.d.ts +58 -0
- package/dist/content/served.d.ts.map +1 -0
- package/dist/content/served.js +65 -0
- package/dist/content/served.js.map +1 -0
- package/dist/content/site-links.d.ts +72 -0
- package/dist/content/site-links.d.ts.map +1 -0
- package/dist/content/site-links.js +191 -0
- package/dist/content/site-links.js.map +1 -0
- package/dist/content/sqlite/archive.d.ts +4 -0
- package/dist/content/sqlite/archive.d.ts.map +1 -0
- package/dist/content/sqlite/archive.js +96 -0
- package/dist/content/sqlite/archive.js.map +1 -0
- package/dist/content/sqlite/backlinks.d.ts +4 -0
- package/dist/content/sqlite/backlinks.d.ts.map +1 -0
- package/dist/content/sqlite/backlinks.js +46 -0
- package/dist/content/sqlite/backlinks.js.map +1 -0
- package/dist/content/sqlite/catalog.d.ts +4 -0
- package/dist/content/sqlite/catalog.d.ts.map +1 -0
- package/dist/content/sqlite/catalog.js +62 -0
- package/dist/content/sqlite/catalog.js.map +1 -0
- package/dist/content/sqlite/clauses.d.ts +57 -0
- package/dist/content/sqlite/clauses.d.ts.map +1 -0
- package/dist/content/sqlite/clauses.js +76 -0
- package/dist/content/sqlite/clauses.js.map +1 -0
- package/dist/content/sqlite/database.d.ts +26 -0
- package/dist/content/sqlite/database.d.ts.map +1 -0
- package/dist/content/sqlite/database.js +27 -0
- package/dist/content/sqlite/database.js.map +1 -0
- package/dist/content/sqlite/documents.d.ts +12 -0
- package/dist/content/sqlite/documents.d.ts.map +1 -0
- package/dist/content/sqlite/documents.js +40 -0
- package/dist/content/sqlite/documents.js.map +1 -0
- package/dist/content/sqlite/lookups.d.ts +6 -0
- package/dist/content/sqlite/lookups.d.ts.map +1 -0
- package/dist/content/sqlite/lookups.js +25 -0
- package/dist/content/sqlite/lookups.js.map +1 -0
- package/dist/content/sqlite/open.d.ts +8 -0
- package/dist/content/sqlite/open.d.ts.map +1 -0
- package/dist/content/sqlite/open.js +63 -0
- package/dist/content/sqlite/open.js.map +1 -0
- package/dist/content/sqlite/replies.d.ts +4 -0
- package/dist/content/sqlite/replies.d.ts.map +1 -0
- package/dist/content/sqlite/replies.js +21 -0
- package/dist/content/sqlite/replies.js.map +1 -0
- package/dist/content/sqlite/rows.d.ts +22 -0
- package/dist/content/sqlite/rows.d.ts.map +1 -0
- package/dist/content/sqlite/rows.js +93 -0
- package/dist/content/sqlite/rows.js.map +1 -0
- package/dist/content/sqlite/schedule.d.ts +4 -0
- package/dist/content/sqlite/schedule.d.ts.map +1 -0
- package/dist/content/sqlite/schedule.js +16 -0
- package/dist/content/sqlite/schedule.js.map +1 -0
- package/dist/content/sqlite/schema.d.ts +10 -0
- package/dist/content/sqlite/schema.d.ts.map +1 -0
- package/dist/content/sqlite/schema.js +209 -0
- package/dist/content/sqlite/schema.js.map +1 -0
- package/dist/content/sqlite/search.d.ts +4 -0
- package/dist/content/sqlite/search.d.ts.map +1 -0
- package/dist/content/sqlite/search.js +54 -0
- package/dist/content/sqlite/search.js.map +1 -0
- package/dist/content/sqlite/spellings.d.ts +6 -0
- package/dist/content/sqlite/spellings.d.ts.map +1 -0
- package/dist/content/sqlite/spellings.js +80 -0
- package/dist/content/sqlite/spellings.js.map +1 -0
- package/dist/content/sqlite/taxonomy.d.ts +4 -0
- package/dist/content/sqlite/taxonomy.d.ts.map +1 -0
- package/dist/content/sqlite/taxonomy.js +75 -0
- package/dist/content/sqlite/taxonomy.js.map +1 -0
- package/dist/content/sqlite/writes.d.ts +9 -0
- package/dist/content/sqlite/writes.d.ts.map +1 -0
- package/dist/content/sqlite/writes.js +164 -0
- package/dist/content/sqlite/writes.js.map +1 -0
- package/dist/content/store.d.ts +142 -137
- package/dist/content/store.d.ts.map +1 -1
- package/dist/content/store.js +0 -1050
- package/dist/content/store.js.map +1 -1
- package/dist/content/sync.d.ts +12 -4
- package/dist/content/sync.d.ts.map +1 -1
- package/dist/content/sync.js +24 -41
- package/dist/content/sync.js.map +1 -1
- package/dist/content/syndicate-to.d.ts +25 -0
- package/dist/content/syndicate-to.d.ts.map +1 -0
- package/dist/content/syndicate-to.js +8 -0
- package/dist/content/syndicate-to.js.map +1 -0
- package/dist/{web → content}/taxonomy.d.ts +1 -1
- package/dist/content/taxonomy.d.ts.map +1 -0
- package/dist/{web → content}/taxonomy.js +2 -2
- package/dist/content/taxonomy.js.map +1 -0
- package/dist/content/time.d.ts +2 -2
- package/dist/content/time.d.ts.map +1 -1
- package/dist/content/time.js +3 -3
- package/dist/content/time.js.map +1 -1
- package/dist/content/trash.d.ts +35 -0
- package/dist/content/trash.d.ts.map +1 -0
- package/dist/content/trash.js +83 -0
- package/dist/content/trash.js.map +1 -0
- package/dist/content/uploads.d.ts +24 -0
- package/dist/content/uploads.d.ts.map +1 -0
- package/dist/content/uploads.js +27 -0
- package/dist/content/uploads.js.map +1 -0
- package/dist/content/video.d.ts.map +1 -1
- package/dist/content/video.js +3 -5
- package/dist/content/video.js.map +1 -1
- package/dist/content/write.d.ts +84 -0
- package/dist/content/write.d.ts.map +1 -0
- package/dist/content/write.js +566 -0
- package/dist/content/write.js.map +1 -0
- package/dist/content/writer.d.ts.map +1 -1
- package/dist/content/writer.js +1 -2
- package/dist/content/writer.js.map +1 -1
- package/dist/dev-mode.d.ts +5 -3
- package/dist/dev-mode.d.ts.map +1 -1
- package/dist/dev-mode.js +3 -3
- package/dist/dev-mode.js.map +1 -1
- package/dist/drain.d.ts +2 -3
- package/dist/drain.d.ts.map +1 -1
- package/dist/drain.js +2 -1
- package/dist/drain.js.map +1 -1
- package/dist/exports.d.ts +26 -0
- package/dist/exports.d.ts.map +1 -0
- package/dist/exports.js +8 -0
- package/dist/exports.js.map +1 -0
- package/dist/federation/actor.d.ts +1 -1
- package/dist/federation/actor.d.ts.map +1 -1
- package/dist/federation/actor.js +6 -13
- package/dist/federation/actor.js.map +1 -1
- package/dist/federation/article.d.ts +4 -14
- package/dist/federation/article.d.ts.map +1 -1
- package/dist/federation/article.js +19 -32
- package/dist/federation/article.js.map +1 -1
- package/dist/federation/backfill.d.ts +4 -4
- package/dist/federation/backfill.d.ts.map +1 -1
- package/dist/federation/backfill.js +12 -13
- package/dist/federation/backfill.js.map +1 -1
- package/dist/federation/citations.d.ts.map +1 -1
- package/dist/federation/citations.js.map +1 -1
- package/dist/federation/cited-post.d.ts.map +1 -1
- package/dist/federation/cited-post.js +2 -4
- package/dist/federation/cited-post.js.map +1 -1
- package/dist/federation/delivery-plan.d.ts +85 -0
- package/dist/federation/delivery-plan.d.ts.map +1 -0
- package/dist/federation/delivery-plan.js +137 -0
- package/dist/federation/delivery-plan.js.map +1 -0
- package/dist/federation/delivery.d.ts +7 -32
- package/dist/federation/delivery.d.ts.map +1 -1
- package/dist/federation/delivery.js +64 -201
- package/dist/federation/delivery.js.map +1 -1
- package/dist/federation/federation.d.ts +5 -5
- package/dist/federation/federation.d.ts.map +1 -1
- package/dist/federation/federation.js +7 -6
- package/dist/federation/federation.js.map +1 -1
- package/dist/federation/followers.d.ts +1 -1
- package/dist/federation/followers.d.ts.map +1 -1
- package/dist/federation/inbox.d.ts +1 -1
- package/dist/federation/inbox.d.ts.map +1 -1
- package/dist/federation/inbox.js +5 -4
- package/dist/federation/inbox.js.map +1 -1
- package/dist/federation/index.d.ts +10 -8
- package/dist/federation/index.d.ts.map +1 -1
- package/dist/federation/index.js +7 -5
- package/dist/federation/index.js.map +1 -1
- package/dist/federation/keys.d.ts +8 -27
- package/dist/federation/keys.d.ts.map +1 -1
- package/dist/federation/keys.js +4 -47
- package/dist/federation/keys.js.map +1 -1
- package/dist/federation/mount.d.ts +2 -2
- package/dist/federation/mount.d.ts.map +1 -1
- package/dist/federation/mount.js +9 -7
- package/dist/federation/mount.js.map +1 -1
- package/dist/federation/paths.d.ts +1 -9
- package/dist/federation/paths.d.ts.map +1 -1
- package/dist/federation/paths.js +2 -12
- package/dist/federation/paths.js.map +1 -1
- package/dist/federation/profiles.d.ts +1 -1
- package/dist/federation/profiles.d.ts.map +1 -1
- package/dist/federation/profiles.js +5 -8
- package/dist/federation/profiles.js.map +1 -1
- package/dist/federation/quotes.d.ts +2 -2
- package/dist/federation/quotes.d.ts.map +1 -1
- package/dist/federation/quotes.js +4 -4
- package/dist/federation/quotes.js.map +1 -1
- package/dist/federation/records.d.ts +2 -2
- package/dist/federation/records.d.ts.map +1 -1
- package/dist/federation/records.js +12 -19
- package/dist/federation/records.js.map +1 -1
- package/dist/federation/relays.d.ts +2 -3
- package/dist/federation/relays.d.ts.map +1 -1
- package/dist/federation/relays.js +22 -30
- package/dist/federation/relays.js.map +1 -1
- package/dist/federation/site-loaders.js +1 -1
- package/dist/federation/site-loaders.js.map +1 -1
- package/dist/federation/webfinger.d.ts +23 -0
- package/dist/federation/webfinger.d.ts.map +1 -0
- package/dist/federation/webfinger.js +70 -0
- package/dist/federation/webfinger.js.map +1 -0
- package/dist/files/atomic.d.ts.map +1 -1
- package/dist/files/atomic.js +4 -9
- package/dist/files/atomic.js.map +1 -1
- package/dist/files/static-files.d.ts +21 -0
- package/dist/files/static-files.d.ts.map +1 -0
- package/dist/files/static-files.js +88 -0
- package/dist/files/static-files.js.map +1 -0
- package/dist/forms/checker.d.ts +93 -0
- package/dist/forms/checker.d.ts.map +1 -0
- package/dist/forms/checker.js +2 -0
- package/dist/forms/checker.js.map +1 -0
- package/dist/forms/protection.d.ts +3 -1
- package/dist/forms/protection.d.ts.map +1 -1
- package/dist/forms/protection.js +3 -1
- package/dist/forms/protection.js.map +1 -1
- package/dist/images/icons.js +2 -2
- package/dist/images/icons.js.map +1 -1
- package/dist/images/index.d.ts +2 -1
- package/dist/images/index.d.ts.map +1 -1
- package/dist/images/index.js +2 -1
- package/dist/images/index.js.map +1 -1
- package/dist/images/markup.d.ts +0 -20
- package/dist/images/markup.d.ts.map +1 -1
- package/dist/images/markup.js +5 -64
- package/dist/images/markup.js.map +1 -1
- package/dist/images/paths.d.ts +0 -10
- package/dist/images/paths.d.ts.map +1 -1
- package/dist/images/paths.js +3 -11
- package/dist/images/paths.js.map +1 -1
- package/dist/images/variants.d.ts +2 -2
- package/dist/images/variants.d.ts.map +1 -1
- package/dist/images/variants.js +4 -3
- package/dist/images/variants.js.map +1 -1
- package/dist/index.d.ts +3 -291
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -838
- package/dist/index.js.map +1 -1
- package/dist/indexnow.d.ts.map +1 -1
- package/dist/indexnow.js +21 -26
- package/dist/indexnow.js.map +1 -1
- package/dist/indieauth/client.d.ts +1 -1
- package/dist/indieauth/client.d.ts.map +1 -1
- package/dist/indieauth/client.js +1 -1
- package/dist/indieauth/client.js.map +1 -1
- package/dist/indieauth/grants.d.ts +1 -1
- package/dist/indieauth/grants.d.ts.map +1 -1
- package/dist/indieauth/identity.d.ts +2 -2
- package/dist/indieauth/identity.d.ts.map +1 -1
- package/dist/indieauth/identity.js +5 -7
- package/dist/indieauth/identity.js.map +1 -1
- package/dist/indieauth/redeem.d.ts +1 -1
- package/dist/indieauth/redeem.d.ts.map +1 -1
- package/dist/indieauth/redeem.js.map +1 -1
- package/dist/indieauth/request.d.ts +5 -1
- package/dist/indieauth/request.d.ts.map +1 -1
- package/dist/indieauth/request.js +6 -2
- package/dist/indieauth/request.js.map +1 -1
- package/dist/indieauth/tokens.d.ts +1 -1
- package/dist/indieauth/tokens.d.ts.map +1 -1
- package/dist/indieauth/tokens.js +2 -2
- package/dist/indieauth/tokens.js.map +1 -1
- package/dist/mail/index.d.ts +1 -5
- package/dist/mail/index.d.ts.map +1 -1
- package/dist/mail/index.js +0 -2
- package/dist/mail/index.js.map +1 -1
- package/dist/mail/provider.d.ts +7 -0
- package/dist/mail/provider.d.ts.map +1 -1
- package/dist/maintenance.d.ts +1 -1
- package/dist/maintenance.d.ts.map +1 -1
- package/dist/media/library.d.ts +99 -0
- package/dist/media/library.d.ts.map +1 -0
- package/dist/media/library.js +157 -0
- package/dist/media/library.js.map +1 -0
- package/dist/media/uploads.d.ts +106 -0
- package/dist/media/uploads.d.ts.map +1 -0
- package/dist/media/uploads.js +192 -0
- package/dist/media/uploads.js.map +1 -0
- package/dist/micropub/content.js +1 -1
- package/dist/micropub/content.js.map +1 -1
- package/dist/micropub/create.d.ts +7 -15
- package/dist/micropub/create.d.ts.map +1 -1
- package/dist/micropub/create.js +48 -184
- package/dist/micropub/create.js.map +1 -1
- package/dist/micropub/endpoint.d.ts +2 -2
- package/dist/micropub/endpoint.d.ts.map +1 -1
- package/dist/micropub/endpoint.js +29 -40
- package/dist/micropub/endpoint.js.map +1 -1
- package/dist/micropub/media.d.ts +1 -1
- package/dist/micropub/media.d.ts.map +1 -1
- package/dist/micropub/media.js +6 -6
- package/dist/micropub/media.js.map +1 -1
- package/dist/micropub/update.d.ts +6 -14
- package/dist/micropub/update.d.ts.map +1 -1
- package/dist/micropub/update.js +37 -90
- package/dist/micropub/update.js.map +1 -1
- package/dist/notifications/comments.d.ts +4 -4
- package/dist/notifications/comments.d.ts.map +1 -1
- package/dist/notifications/comments.js +6 -14
- package/dist/notifications/comments.js.map +1 -1
- package/dist/notifications/digest.d.ts +4 -4
- package/dist/notifications/digest.d.ts.map +1 -1
- package/dist/notifications/digest.js +6 -16
- package/dist/notifications/digest.js.map +1 -1
- package/dist/notifications/index.d.ts +6 -3
- package/dist/notifications/index.d.ts.map +1 -1
- package/dist/notifications/index.js +3 -2
- package/dist/notifications/index.js.map +1 -1
- package/dist/notifications/links.d.ts.map +1 -1
- package/dist/notifications/links.js +2 -2
- package/dist/notifications/links.js.map +1 -1
- package/dist/{mail/service.d.ts → notifications/mail-service.d.ts} +7 -13
- package/dist/notifications/mail-service.d.ts.map +1 -0
- package/dist/{mail/service.js → notifications/mail-service.js} +33 -54
- package/dist/notifications/mail-service.js.map +1 -0
- package/dist/{mail/templates.d.ts → notifications/mail-templates.d.ts} +4 -2
- package/dist/notifications/mail-templates.d.ts.map +1 -0
- package/dist/{mail/templates.js → notifications/mail-templates.js} +5 -3
- package/dist/notifications/mail-templates.js.map +1 -0
- package/dist/notifications/tokens.d.ts +2 -2
- package/dist/notifications/tokens.d.ts.map +1 -1
- package/dist/notifications/tokens.js +2 -2
- package/dist/notifications/tokens.js.map +1 -1
- package/dist/notify.d.ts.map +1 -1
- package/dist/notify.js +12 -24
- package/dist/notify.js.map +1 -1
- package/dist/plugin.d.ts +48 -2
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +28 -2
- package/dist/plugin.js.map +1 -1
- package/dist/plugins/enabled.d.ts.map +1 -1
- package/dist/plugins/enabled.js +2 -4
- package/dist/plugins/enabled.js.map +1 -1
- package/dist/plugins/fetch.d.ts +1 -1
- package/dist/plugins/fetch.d.ts.map +1 -1
- package/dist/plugins/fetch.js +1 -1
- package/dist/plugins/fetch.js.map +1 -1
- package/dist/plugins/folder.d.ts.map +1 -1
- package/dist/plugins/folder.js +1 -3
- package/dist/plugins/folder.js.map +1 -1
- package/dist/plugins/install.d.ts.map +1 -1
- package/dist/plugins/install.js +7 -3
- package/dist/plugins/install.js.map +1 -1
- package/dist/plugins/manage.d.ts +1 -1
- package/dist/plugins/manage.d.ts.map +1 -1
- package/dist/plugins/registry.d.ts.map +1 -1
- package/dist/plugins/registry.js +7 -9
- package/dist/plugins/registry.js.map +1 -1
- package/dist/plugins/settings.d.ts.map +1 -1
- package/dist/plugins/settings.js +2 -3
- package/dist/plugins/settings.js.map +1 -1
- package/dist/plugins/site.d.ts +1 -1
- package/dist/plugins/site.d.ts.map +1 -1
- package/dist/plugins/site.js +10 -4
- package/dist/plugins/site.js.map +1 -1
- package/dist/plugins/upgrade.d.ts.map +1 -1
- package/dist/plugins/upgrade.js +4 -3
- package/dist/plugins/upgrade.js.map +1 -1
- package/dist/privacy/erase.d.ts +1 -1
- package/dist/privacy/erase.d.ts.map +1 -1
- package/dist/privacy/retention.d.ts +2 -2
- package/dist/privacy/retention.d.ts.map +1 -1
- package/dist/privacy/retention.js +9 -11
- package/dist/privacy/retention.js.map +1 -1
- package/dist/site/admin-paths.d.ts +23 -0
- package/dist/site/admin-paths.d.ts.map +1 -0
- package/dist/site/admin-paths.js +25 -0
- package/dist/site/admin-paths.js.map +1 -0
- package/dist/site/admin-theme.d.ts.map +1 -0
- package/dist/site/admin-theme.js.map +1 -0
- package/dist/{web → site}/authors.d.ts +1 -72
- package/dist/site/authors.d.ts.map +1 -0
- package/dist/site/authors.js +107 -0
- package/dist/site/authors.js.map +1 -0
- package/dist/site/feed-settings.d.ts +28 -0
- package/dist/site/feed-settings.d.ts.map +1 -0
- package/dist/site/feed-settings.js +22 -0
- package/dist/site/feed-settings.js.map +1 -0
- package/dist/{web/indexnow.d.ts → site/indexnow-key.d.ts} +1 -1
- package/dist/site/indexnow-key.d.ts.map +1 -0
- package/dist/{web/indexnow.js → site/indexnow-key.js} +1 -1
- package/dist/site/indexnow-key.js.map +1 -0
- package/dist/{web → site}/navigation.d.ts +7 -1
- package/dist/site/navigation.d.ts.map +1 -0
- package/dist/{web → site}/navigation.js +18 -0
- package/dist/site/navigation.js.map +1 -0
- package/dist/{notifications/preferences.d.ts → site/notification-preferences.d.ts} +2 -2
- package/dist/site/notification-preferences.d.ts.map +1 -0
- package/dist/{notifications/preferences.js → site/notification-preferences.js} +1 -1
- package/dist/site/notification-preferences.js.map +1 -0
- package/dist/site/passwords.d.ts.map +1 -0
- package/dist/site/passwords.js.map +1 -0
- package/dist/{privacy/policy.d.ts → site/retention-policy.d.ts} +1 -1
- package/dist/site/retention-policy.d.ts.map +1 -0
- package/dist/{privacy/policy.js → site/retention-policy.js} +1 -1
- package/dist/site/retention-policy.js.map +1 -0
- package/dist/site/robots.d.ts +62 -0
- package/dist/site/robots.d.ts.map +1 -0
- package/dist/site/robots.js +130 -0
- package/dist/site/robots.js.map +1 -0
- package/dist/site/setting-rows.d.ts +46 -0
- package/dist/site/setting-rows.d.ts.map +1 -0
- package/dist/site/setting-rows.js +480 -0
- package/dist/site/setting-rows.js.map +1 -0
- package/dist/site/setting-values.d.ts +63 -0
- package/dist/site/setting-values.d.ts.map +1 -0
- package/dist/site/setting-values.js +170 -0
- package/dist/site/setting-values.js.map +1 -0
- package/dist/site/settings-form.d.ts +30 -0
- package/dist/site/settings-form.d.ts.map +1 -0
- package/dist/site/settings-form.js +58 -0
- package/dist/site/settings-form.js.map +1 -0
- package/dist/site/settings.d.ts +345 -0
- package/dist/site/settings.d.ts.map +1 -0
- package/dist/site/settings.js +107 -0
- package/dist/site/settings.js.map +1 -0
- package/dist/site/site-json.d.ts +69 -0
- package/dist/site/site-json.d.ts.map +1 -0
- package/dist/site/site-json.js +113 -0
- package/dist/site/site-json.js.map +1 -0
- package/dist/{admin/accounts.d.ts → site/users.d.ts} +25 -41
- package/dist/site/users.d.ts.map +1 -0
- package/dist/{admin/accounts.js → site/users.js} +49 -155
- package/dist/site/users.js.map +1 -0
- package/dist/store/admin-store.d.ts +72 -0
- package/dist/store/admin-store.d.ts.map +1 -0
- package/dist/store/admin-store.js +62 -0
- package/dist/store/admin-store.js.map +1 -0
- package/dist/store/comments.d.ts +253 -0
- package/dist/store/comments.d.ts.map +1 -0
- package/dist/store/comments.js +234 -0
- package/dist/store/comments.js.map +1 -0
- package/dist/store/conversation.d.ts +28 -0
- package/dist/store/conversation.d.ts.map +1 -0
- package/dist/store/conversation.js +16 -0
- package/dist/store/conversation.js.map +1 -0
- package/dist/store/deliveries.d.ts +92 -0
- package/dist/store/deliveries.d.ts.map +1 -0
- package/dist/store/deliveries.js +88 -0
- package/dist/store/deliveries.js.map +1 -0
- package/dist/store/followers.d.ts +91 -0
- package/dist/store/followers.d.ts.map +1 -0
- package/dist/store/followers.js +79 -0
- package/dist/store/followers.js.map +1 -0
- package/dist/{federation/replies.d.ts → store/inbox-replies.d.ts} +2 -2
- package/dist/store/inbox-replies.d.ts.map +1 -0
- package/dist/{federation/replies.js → store/inbox-replies.js} +2 -4
- package/dist/store/inbox-replies.js.map +1 -0
- package/dist/store/inbox.d.ts +132 -0
- package/dist/store/inbox.d.ts.map +1 -0
- package/dist/store/inbox.js +157 -0
- package/dist/store/inbox.js.map +1 -0
- package/dist/store/profiles.d.ts +49 -0
- package/dist/store/profiles.d.ts.map +1 -0
- package/dist/store/profiles.js +71 -0
- package/dist/store/profiles.js.map +1 -0
- package/dist/store/relays.d.ts +66 -0
- package/dist/store/relays.d.ts.map +1 -0
- package/dist/store/relays.js +69 -0
- package/dist/store/relays.js.map +1 -0
- package/dist/store/rows.d.ts +33 -0
- package/dist/store/rows.d.ts.map +1 -0
- package/dist/store/rows.js +44 -0
- package/dist/store/rows.js.map +1 -0
- package/dist/store/schema.d.ts +14 -0
- package/dist/store/schema.d.ts.map +1 -0
- package/dist/store/schema.js +588 -0
- package/dist/store/schema.js.map +1 -0
- package/dist/store/sessions.d.ts +90 -0
- package/dist/store/sessions.d.ts.map +1 -0
- package/dist/store/sessions.js +107 -0
- package/dist/store/sessions.js.map +1 -0
- package/dist/store/state.d.ts +18 -0
- package/dist/store/state.d.ts.map +1 -0
- package/dist/store/state.js +19 -0
- package/dist/store/state.js.map +1 -0
- package/dist/store/tokens.d.ts +75 -0
- package/dist/store/tokens.d.ts.map +1 -0
- package/dist/store/tokens.js +82 -0
- package/dist/store/tokens.js.map +1 -0
- package/dist/store/webmentions.d.ts +66 -0
- package/dist/store/webmentions.d.ts.map +1 -0
- package/dist/store/webmentions.js +84 -0
- package/dist/store/webmentions.js.map +1 -0
- package/dist/supervisor/primary.d.ts +1 -1
- package/dist/supervisor/primary.d.ts.map +1 -1
- package/dist/supervisor/primary.js +31 -11
- package/dist/supervisor/primary.js.map +1 -1
- package/dist/supervisor/worker.d.ts +6 -2
- package/dist/supervisor/worker.d.ts.map +1 -1
- package/dist/supervisor/worker.js +4 -4
- package/dist/supervisor/worker.js.map +1 -1
- package/dist/testing.d.ts +8 -0
- package/dist/testing.d.ts.map +1 -0
- package/dist/testing.js +6 -0
- package/dist/testing.js.map +1 -0
- package/dist/{web → theme}/assets.d.ts +1 -32
- package/dist/theme/assets.d.ts.map +1 -0
- package/dist/{web → theme}/assets.js +2 -100
- package/dist/theme/assets.js.map +1 -0
- package/dist/theme/site-data.d.ts +187 -0
- package/dist/theme/site-data.d.ts.map +1 -0
- package/dist/theme/site-data.js +160 -0
- package/dist/theme/site-data.js.map +1 -0
- package/dist/{web → theme}/templates.d.ts +2 -0
- package/dist/theme/templates.d.ts.map +1 -0
- package/dist/{web → theme}/templates.js +9 -32
- package/dist/theme/templates.js.map +1 -0
- package/dist/{web → theme}/themes.d.ts +1 -0
- package/dist/theme/themes.d.ts.map +1 -0
- package/dist/{web → theme}/themes.js +6 -3
- package/dist/theme/themes.js.map +1 -0
- package/dist/util/client-id.d.ts.map +1 -0
- package/dist/util/client-id.js.map +1 -0
- package/dist/util/clock.d.ts +9 -0
- package/dist/util/clock.d.ts.map +1 -0
- package/dist/util/clock.js +2 -0
- package/dist/util/clock.js.map +1 -0
- package/dist/util/errors.d.ts +3 -0
- package/dist/util/errors.d.ts.map +1 -0
- package/dist/util/errors.js +5 -0
- package/dist/util/errors.js.map +1 -0
- package/dist/util/files.d.ts +5 -0
- package/dist/util/files.d.ts.map +1 -0
- package/dist/util/files.js +38 -0
- package/dist/util/files.js.map +1 -0
- package/dist/util/forms.d.ts +5 -0
- package/dist/util/forms.d.ts.map +1 -0
- package/dist/util/forms.js +17 -0
- package/dist/util/forms.js.map +1 -0
- package/dist/util/guards.d.ts +4 -0
- package/dist/util/guards.d.ts.map +1 -0
- package/dist/util/guards.js +12 -0
- package/dist/util/guards.js.map +1 -0
- package/dist/{webmention/html.d.ts → util/html-tree.d.ts} +2 -2
- package/dist/util/html-tree.d.ts.map +1 -0
- package/dist/{webmention/html.js → util/html-tree.js} +3 -64
- package/dist/util/html-tree.js.map +1 -0
- package/dist/util/html.d.ts +4 -0
- package/dist/util/html.d.ts.map +1 -0
- package/dist/util/html.js +34 -0
- package/dist/util/html.js.map +1 -0
- package/dist/util/public-address.d.ts.map +1 -0
- package/dist/util/public-address.js.map +1 -0
- package/dist/util/queue.d.ts +7 -0
- package/dist/util/queue.d.ts.map +1 -0
- package/dist/util/queue.js +23 -0
- package/dist/util/queue.js.map +1 -0
- package/dist/util/retry.d.ts +11 -0
- package/dist/util/retry.d.ts.map +1 -0
- package/dist/util/retry.js +14 -0
- package/dist/util/retry.js.map +1 -0
- package/dist/util/url.d.ts +11 -0
- package/dist/util/url.d.ts.map +1 -0
- package/dist/util/url.js +20 -0
- package/dist/util/url.js.map +1 -0
- package/dist/web/absolute-urls.js +1 -1
- package/dist/web/absolute-urls.js.map +1 -1
- package/dist/web/archive.js +2 -2
- package/dist/web/archive.js.map +1 -1
- package/dist/web/asset-routes.d.ts +48 -0
- package/dist/web/asset-routes.d.ts.map +1 -0
- package/dist/web/asset-routes.js +107 -0
- package/dist/web/asset-routes.js.map +1 -0
- package/dist/{avatars/routes.d.ts → web/avatar-routes.d.ts} +2 -2
- package/dist/web/avatar-routes.d.ts.map +1 -0
- package/dist/{avatars/routes.js → web/avatar-routes.js} +3 -3
- package/dist/web/avatar-routes.js.map +1 -0
- package/dist/web/comment-routes.d.ts +18 -0
- package/dist/web/comment-routes.d.ts.map +1 -0
- package/dist/web/comment-routes.js +177 -0
- package/dist/web/comment-routes.js.map +1 -0
- package/dist/web/compression.d.ts.map +1 -1
- package/dist/web/compression.js +1 -2
- package/dist/web/compression.js.map +1 -1
- package/dist/{contact/routes.d.ts → web/contact-routes.d.ts} +2 -2
- package/dist/web/contact-routes.d.ts.map +1 -0
- package/dist/{contact/routes.js → web/contact-routes.js} +14 -17
- package/dist/web/contact-routes.js.map +1 -0
- package/dist/web/context.d.ts +1 -187
- package/dist/web/context.d.ts.map +1 -1
- package/dist/web/context.js +5 -171
- package/dist/web/context.js.map +1 -1
- package/dist/web/conversation.d.ts +6 -333
- package/dist/web/conversation.d.ts.map +1 -1
- package/dist/web/conversation.js +280 -220
- package/dist/web/conversation.js.map +1 -1
- package/dist/web/document-page.d.ts +13 -0
- package/dist/web/document-page.d.ts.map +1 -0
- package/dist/web/document-page.js +136 -0
- package/dist/web/document-page.js.map +1 -0
- package/dist/web/document-site.d.ts +14 -0
- package/dist/web/document-site.d.ts.map +1 -0
- package/dist/web/document-site.js +28 -0
- package/dist/web/document-site.js.map +1 -0
- package/dist/web/embed.d.ts +13 -0
- package/dist/web/embed.d.ts.map +1 -0
- package/dist/web/embed.js +66 -0
- package/dist/web/embed.js.map +1 -0
- package/dist/{env.d.ts → web/env.d.ts} +27 -26
- package/dist/web/env.d.ts.map +1 -0
- package/dist/web/env.js.map +1 -0
- package/dist/web/federation-routes.d.ts +33 -0
- package/dist/web/federation-routes.d.ts.map +1 -0
- package/dist/web/federation-routes.js +280 -0
- package/dist/web/federation-routes.js.map +1 -0
- package/dist/web/feed-atom.d.ts.map +1 -1
- package/dist/web/feed-atom.js +4 -3
- package/dist/web/feed-atom.js.map +1 -1
- package/dist/web/feed-item.d.ts +4 -39
- package/dist/web/feed-item.d.ts.map +1 -1
- package/dist/web/feed-item.js +8 -72
- package/dist/web/feed-item.js.map +1 -1
- package/dist/web/feed-json.js +2 -2
- package/dist/web/feed-json.js.map +1 -1
- package/dist/web/feed-routes.d.ts +36 -0
- package/dist/web/feed-routes.d.ts.map +1 -0
- package/dist/web/feed-routes.js +124 -0
- package/dist/web/feed-routes.js.map +1 -0
- package/dist/web/feed-rss.d.ts.map +1 -1
- package/dist/web/feed-rss.js +9 -6
- package/dist/web/feed-rss.js.map +1 -1
- package/dist/web/feed-source.d.ts +13 -40
- package/dist/web/feed-source.d.ts.map +1 -1
- package/dist/web/feed-source.js +14 -43
- package/dist/web/feed-source.js.map +1 -1
- package/dist/web/feeds.d.ts +4 -2
- package/dist/web/feeds.d.ts.map +1 -1
- package/dist/web/feeds.js +8 -5
- package/dist/web/feeds.js.map +1 -1
- package/dist/web/health.d.ts +1 -1
- package/dist/web/health.d.ts.map +1 -1
- package/dist/web/index.d.ts +53 -29
- package/dist/web/index.d.ts.map +1 -1
- package/dist/web/index.js +37 -18
- package/dist/web/index.js.map +1 -1
- package/dist/{indieauth/activity-log.d.ts → web/indieauth-activity-log.d.ts} +3 -3
- package/dist/web/indieauth-activity-log.d.ts.map +1 -0
- package/dist/{indieauth/activity-log.js → web/indieauth-activity-log.js} +5 -6
- package/dist/web/indieauth-activity-log.js.map +1 -0
- package/dist/{indieauth/bearer.d.ts → web/indieauth-bearer.d.ts} +5 -5
- package/dist/web/indieauth-bearer.d.ts.map +1 -0
- package/dist/{indieauth/bearer.js → web/indieauth-bearer.js} +4 -4
- package/dist/web/indieauth-bearer.js.map +1 -0
- package/dist/{indieauth/discovery.d.ts → web/indieauth-discovery.d.ts} +2 -7
- package/dist/web/indieauth-discovery.d.ts.map +1 -0
- package/dist/{indieauth/discovery.js → web/indieauth-discovery.js} +6 -9
- package/dist/web/indieauth-discovery.js.map +1 -0
- package/dist/{indieauth/token.d.ts → web/indieauth-token.d.ts} +2 -2
- package/dist/web/indieauth-token.d.ts.map +1 -0
- package/dist/{indieauth/token.js → web/indieauth-token.js} +7 -7
- package/dist/web/indieauth-token.js.map +1 -0
- package/dist/web/listing-pages.d.ts +19 -0
- package/dist/web/listing-pages.d.ts.map +1 -0
- package/dist/web/listing-pages.js +148 -0
- package/dist/web/listing-pages.js.map +1 -0
- package/dist/web/listing-subject.d.ts +58 -0
- package/dist/web/listing-subject.d.ts.map +1 -0
- package/dist/web/listing-subject.js +89 -0
- package/dist/web/listing-subject.js.map +1 -0
- package/dist/web/llms.d.ts +16 -15
- package/dist/web/llms.d.ts.map +1 -1
- package/dist/web/llms.js +23 -35
- package/dist/web/llms.js.map +1 -1
- package/dist/web/maintenance.d.ts +1 -1
- package/dist/web/maintenance.d.ts.map +1 -1
- package/dist/web/maintenance.js +7 -13
- package/dist/web/maintenance.js.map +1 -1
- package/dist/web/manifest.d.ts +1 -1
- package/dist/web/manifest.d.ts.map +1 -1
- package/dist/web/manifest.js +2 -1
- package/dist/web/manifest.js.map +1 -1
- package/dist/web/markdown-page.d.ts +76 -0
- package/dist/web/markdown-page.d.ts.map +1 -0
- package/dist/web/markdown-page.js +79 -0
- package/dist/web/markdown-page.js.map +1 -0
- package/dist/web/markdown-representation.d.ts +15 -0
- package/dist/web/markdown-representation.d.ts.map +1 -0
- package/dist/web/markdown-representation.js +130 -0
- package/dist/web/markdown-representation.js.map +1 -0
- package/dist/web/negotiate.d.ts +5 -12
- package/dist/web/negotiate.d.ts.map +1 -1
- package/dist/web/negotiate.js +11 -18
- package/dist/web/negotiate.js.map +1 -1
- package/dist/{notifications/routes.d.ts → web/notification-routes.d.ts} +2 -2
- package/dist/web/notification-routes.d.ts.map +1 -0
- package/dist/{notifications/routes.js → web/notification-routes.js} +24 -29
- package/dist/web/notification-routes.js.map +1 -0
- package/dist/web/oembed.d.ts +2 -2
- package/dist/web/oembed.d.ts.map +1 -1
- package/dist/web/oembed.js +5 -4
- package/dist/web/oembed.js.map +1 -1
- package/dist/web/opensearch.d.ts.map +1 -1
- package/dist/web/opensearch.js +2 -1
- package/dist/web/opensearch.js.map +1 -1
- package/dist/web/page-sources.d.ts +15 -0
- package/dist/web/page-sources.d.ts.map +1 -0
- package/dist/web/page-sources.js +44 -0
- package/dist/web/page-sources.js.map +1 -0
- package/dist/web/pagination.d.ts +1 -0
- package/dist/web/pagination.d.ts.map +1 -1
- package/dist/web/pagination.js +4 -1
- package/dist/web/pagination.js.map +1 -1
- package/dist/web/paths.d.ts +52 -0
- package/dist/web/paths.d.ts.map +1 -0
- package/dist/web/paths.js +208 -0
- package/dist/web/paths.js.map +1 -0
- package/dist/web/pingback-routes.d.ts +5 -0
- package/dist/web/pingback-routes.d.ts.map +1 -0
- package/dist/web/pingback-routes.js +100 -0
- package/dist/web/pingback-routes.js.map +1 -0
- package/dist/{plugins/federation.d.ts → web/plugin-federation.d.ts} +3 -3
- package/dist/web/plugin-federation.d.ts.map +1 -0
- package/dist/{plugins/federation.js → web/plugin-federation.js} +5 -5
- package/dist/web/plugin-federation.js.map +1 -0
- package/dist/{plugins/mount.d.ts → web/plugin-routes.d.ts} +3 -3
- package/dist/web/plugin-routes.d.ts.map +1 -0
- package/dist/{plugins/mount.js → web/plugin-routes.js} +2 -2
- package/dist/web/plugin-routes.js.map +1 -0
- package/dist/web/redirects.d.ts +1 -84
- package/dist/web/redirects.d.ts.map +1 -1
- package/dist/web/redirects.js +0 -232
- package/dist/web/redirects.js.map +1 -1
- package/dist/web/render.d.ts +43 -7
- package/dist/web/render.d.ts.map +1 -1
- package/dist/web/render.js +96 -48
- package/dist/web/render.js.map +1 -1
- package/dist/web/request.d.ts +44 -0
- package/dist/web/request.d.ts.map +1 -0
- package/dist/web/request.js +82 -0
- package/dist/web/request.js.map +1 -0
- package/dist/web/robots.d.ts +1 -46
- package/dist/web/robots.d.ts.map +1 -1
- package/dist/web/robots.js +5 -131
- package/dist/web/robots.js.map +1 -1
- package/dist/web/routes.d.ts +5 -39
- package/dist/web/routes.d.ts.map +1 -1
- package/dist/web/routes.js +112 -1373
- package/dist/web/routes.js.map +1 -1
- package/dist/web/search.d.ts.map +1 -1
- package/dist/web/search.js +2 -9
- package/dist/web/search.js.map +1 -1
- package/dist/{admin → web}/session.d.ts +1 -5
- package/dist/web/session.d.ts.map +1 -0
- package/dist/{admin → web}/session.js +0 -4
- package/dist/web/session.js.map +1 -0
- package/dist/web/share-image.d.ts.map +1 -1
- package/dist/web/share-image.js +3 -2
- package/dist/web/share-image.js.map +1 -1
- package/dist/web/signed-in.d.ts +27 -0
- package/dist/web/signed-in.d.ts.map +1 -0
- package/dist/web/signed-in.js +45 -0
- package/dist/web/signed-in.js.map +1 -0
- package/dist/web/site-index.d.ts +13 -0
- package/dist/web/site-index.d.ts.map +1 -0
- package/dist/web/site-index.js +143 -0
- package/dist/web/site-index.js.map +1 -0
- package/dist/web/site-view.d.ts +45 -0
- package/dist/web/site-view.d.ts.map +1 -0
- package/dist/web/site-view.js +67 -0
- package/dist/web/site-view.js.map +1 -0
- package/dist/web/sitemap.d.ts.map +1 -1
- package/dist/web/sitemap.js +5 -7
- package/dist/web/sitemap.js.map +1 -1
- package/dist/{admin → web}/throttle.d.ts +3 -4
- package/dist/web/throttle.d.ts.map +1 -0
- package/dist/{admin → web}/throttle.js +1 -2
- package/dist/web/throttle.js.map +1 -0
- package/dist/web/webmention-routes.d.ts +11 -0
- package/dist/web/webmention-routes.d.ts.map +1 -0
- package/dist/web/webmention-routes.js +51 -0
- package/dist/web/webmention-routes.js.map +1 -0
- package/dist/web/well-known.d.ts +2 -2
- package/dist/web/well-known.d.ts.map +1 -1
- package/dist/web/well-known.js +5 -14
- package/dist/web/well-known.js.map +1 -1
- package/dist/webmention/cited-picture.d.ts +1 -2
- package/dist/webmention/cited-picture.d.ts.map +1 -1
- package/dist/webmention/cited-picture.js +4 -6
- package/dist/webmention/cited-picture.js.map +1 -1
- package/dist/webmention/discovery.d.ts +2 -13
- package/dist/webmention/discovery.d.ts.map +1 -1
- package/dist/webmention/discovery.js +18 -73
- package/dist/webmention/discovery.js.map +1 -1
- package/dist/webmention/endpoint.d.ts +27 -0
- package/dist/webmention/endpoint.d.ts.map +1 -0
- package/dist/webmention/endpoint.js +26 -0
- package/dist/webmention/endpoint.js.map +1 -0
- package/dist/webmention/fetch-public.d.ts +18 -1
- package/dist/webmention/fetch-public.d.ts.map +1 -1
- package/dist/webmention/fetch-public.js +57 -23
- package/dist/webmention/fetch-public.js.map +1 -1
- package/dist/webmention/index.d.ts +11 -9
- package/dist/webmention/index.d.ts.map +1 -1
- package/dist/webmention/index.js +7 -6
- package/dist/webmention/index.js.map +1 -1
- package/dist/webmention/links.d.ts +0 -55
- package/dist/webmention/links.d.ts.map +1 -1
- package/dist/webmention/links.js +2 -185
- package/dist/webmention/links.js.map +1 -1
- package/dist/webmention/microformats.d.ts +1 -1
- package/dist/webmention/microformats.d.ts.map +1 -1
- package/dist/webmention/microformats.js +1 -1
- package/dist/webmention/microformats.js.map +1 -1
- package/dist/webmention/pingback.d.ts +12 -4
- package/dist/webmention/pingback.d.ts.map +1 -1
- package/dist/webmention/pingback.js +4 -102
- package/dist/webmention/pingback.js.map +1 -1
- package/dist/webmention/receive.d.ts +7 -4
- package/dist/webmention/receive.d.ts.map +1 -1
- package/dist/webmention/receive.js +34 -42
- package/dist/webmention/receive.js.map +1 -1
- package/dist/webmention/reply-context/fediverse.d.ts +29 -0
- package/dist/webmention/reply-context/fediverse.d.ts.map +1 -0
- package/dist/webmention/reply-context/fediverse.js +59 -0
- package/dist/webmention/reply-context/fediverse.js.map +1 -0
- package/dist/webmention/reply-context/json-ld.d.ts +5 -0
- package/dist/webmention/reply-context/json-ld.d.ts.map +1 -0
- package/dist/webmention/reply-context/json-ld.js +78 -0
- package/dist/webmention/reply-context/json-ld.js.map +1 -0
- package/dist/webmention/reply-context/oembed.d.ts +21 -0
- package/dist/webmention/reply-context/oembed.d.ts.map +1 -0
- package/dist/webmention/reply-context/oembed.js +137 -0
- package/dist/webmention/reply-context/oembed.js.map +1 -0
- package/dist/webmention/reply-context/page.d.ts +30 -0
- package/dist/webmention/reply-context/page.d.ts.map +1 -0
- package/dist/webmention/reply-context/page.js +134 -0
- package/dist/webmention/reply-context/page.js.map +1 -0
- package/dist/webmention/reply-context/source.d.ts +29 -0
- package/dist/webmention/reply-context/source.d.ts.map +1 -0
- package/dist/webmention/reply-context/source.js +46 -0
- package/dist/webmention/reply-context/source.js.map +1 -0
- package/dist/webmention/reply-context.d.ts +5 -34
- package/dist/webmention/reply-context.d.ts.map +1 -1
- package/dist/webmention/reply-context.js +9 -432
- package/dist/webmention/reply-context.js.map +1 -1
- package/dist/webmention/reply-contexts.d.ts +3 -3
- package/dist/webmention/reply-contexts.d.ts.map +1 -1
- package/dist/webmention/reply-contexts.js +7 -10
- package/dist/webmention/reply-contexts.js.map +1 -1
- package/dist/webmention/routes.d.ts +1 -1
- package/dist/webmention/routes.d.ts.map +1 -1
- package/dist/webmention/routes.js +5 -8
- package/dist/webmention/routes.js.map +1 -1
- package/dist/webmention/service.d.ts +7 -7
- package/dist/webmention/service.d.ts.map +1 -1
- package/dist/webmention/service.js +49 -61
- package/dist/webmention/service.js.map +1 -1
- package/dist/webmention/syndication.d.ts +3 -26
- package/dist/webmention/syndication.d.ts.map +1 -1
- package/dist/webmention/syndication.js +6 -20
- package/dist/webmention/syndication.js.map +1 -1
- package/package.json +5 -1
- package/themes/default/README.md +36 -2329
- package/themes/default/layouts/base.njk +5 -4
- package/themes/default/layouts/comment.njk +3 -3
- package/themes/default/layouts/front-page.njk +4 -3
- package/themes/default/layouts/page.njk +2 -0
- package/themes/default/partials/comment-form.njk +1 -1
- package/themes/default/partials/comment.njk +5 -5
- package/themes/default/partials/contact-form.njk +1 -2
- package/themes/default/partials/conversation.njk +1 -2
- package/themes/default/partials/markdown-footer.md.njk +24 -0
- package/themes/default/partials/markdown-header.md.njk +31 -0
- package/themes/default/src/style.css +6 -6
- package/dist/admin/accounts.d.ts.map +0 -1
- package/dist/admin/accounts.js.map +0 -1
- package/dist/admin/admin-theme.d.ts.map +0 -1
- package/dist/admin/admin-theme.js.map +0 -1
- package/dist/admin/enclosure-field.d.ts.map +0 -1
- package/dist/admin/enclosure-field.js.map +0 -1
- package/dist/admin/event-field.d.ts.map +0 -1
- package/dist/admin/event-field.js.map +0 -1
- package/dist/admin/location-field.d.ts +0 -27
- package/dist/admin/location-field.d.ts.map +0 -1
- package/dist/admin/location-field.js.map +0 -1
- package/dist/admin/passwords.d.ts.map +0 -1
- package/dist/admin/passwords.js.map +0 -1
- package/dist/admin/photo-field.d.ts +0 -38
- package/dist/admin/photo-field.d.ts.map +0 -1
- package/dist/admin/photo-field.js.map +0 -1
- package/dist/admin/read-field.d.ts.map +0 -1
- package/dist/admin/read-field.js +0 -61
- package/dist/admin/read-field.js.map +0 -1
- package/dist/admin/session.d.ts.map +0 -1
- package/dist/admin/session.js.map +0 -1
- package/dist/admin/store.d.ts +0 -998
- package/dist/admin/store.d.ts.map +0 -1
- package/dist/admin/store.js +0 -1588
- package/dist/admin/store.js.map +0 -1
- package/dist/admin/throttle.d.ts.map +0 -1
- package/dist/admin/throttle.js.map +0 -1
- package/dist/avatars/routes.d.ts.map +0 -1
- package/dist/avatars/routes.js.map +0 -1
- package/dist/contact/routes.d.ts.map +0 -1
- package/dist/contact/routes.js.map +0 -1
- package/dist/env.d.ts.map +0 -1
- package/dist/env.js.map +0 -1
- package/dist/federation/replies.d.ts.map +0 -1
- package/dist/federation/replies.js.map +0 -1
- package/dist/images/alt-text.d.ts.map +0 -1
- package/dist/images/alt-text.js.map +0 -1
- package/dist/indieauth/activity-log.d.ts.map +0 -1
- package/dist/indieauth/activity-log.js.map +0 -1
- package/dist/indieauth/app-activity.d.ts.map +0 -1
- package/dist/indieauth/app-activity.js.map +0 -1
- package/dist/indieauth/bearer.d.ts.map +0 -1
- package/dist/indieauth/bearer.js.map +0 -1
- package/dist/indieauth/client-id.d.ts.map +0 -1
- package/dist/indieauth/client-id.js.map +0 -1
- package/dist/indieauth/connected-apps.d.ts.map +0 -1
- package/dist/indieauth/connected-apps.js.map +0 -1
- package/dist/indieauth/consent.d.ts.map +0 -1
- package/dist/indieauth/consent.js.map +0 -1
- package/dist/indieauth/discovery.d.ts.map +0 -1
- package/dist/indieauth/discovery.js.map +0 -1
- package/dist/indieauth/token.d.ts.map +0 -1
- package/dist/indieauth/token.js.map +0 -1
- package/dist/mail/service.d.ts.map +0 -1
- package/dist/mail/service.js.map +0 -1
- package/dist/mail/templates.d.ts.map +0 -1
- package/dist/mail/templates.js.map +0 -1
- package/dist/notifications/preferences.d.ts.map +0 -1
- package/dist/notifications/preferences.js.map +0 -1
- package/dist/notifications/routes.d.ts.map +0 -1
- package/dist/notifications/routes.js.map +0 -1
- package/dist/plugins/federation.d.ts.map +0 -1
- package/dist/plugins/federation.js.map +0 -1
- package/dist/plugins/mount.d.ts.map +0 -1
- package/dist/plugins/mount.js.map +0 -1
- package/dist/privacy/policy.d.ts.map +0 -1
- package/dist/privacy/policy.js.map +0 -1
- package/dist/web/admin-bar.d.ts.map +0 -1
- package/dist/web/admin-bar.js.map +0 -1
- package/dist/web/assets.d.ts.map +0 -1
- package/dist/web/assets.js.map +0 -1
- package/dist/web/authors.d.ts.map +0 -1
- package/dist/web/authors.js +0 -211
- package/dist/web/authors.js.map +0 -1
- package/dist/web/documents.d.ts +0 -81
- package/dist/web/documents.d.ts.map +0 -1
- package/dist/web/documents.js.map +0 -1
- package/dist/web/errors.d.ts.map +0 -1
- package/dist/web/errors.js.map +0 -1
- package/dist/web/guids.d.ts.map +0 -1
- package/dist/web/guids.js.map +0 -1
- package/dist/web/indexnow.d.ts.map +0 -1
- package/dist/web/indexnow.js.map +0 -1
- package/dist/web/license.d.ts.map +0 -1
- package/dist/web/license.js.map +0 -1
- package/dist/web/locale.d.ts.map +0 -1
- package/dist/web/locale.js.map +0 -1
- package/dist/web/navigation.d.ts.map +0 -1
- package/dist/web/navigation.js.map +0 -1
- package/dist/web/recent.d.ts +0 -43
- package/dist/web/recent.d.ts.map +0 -1
- package/dist/web/recent.js +0 -37
- package/dist/web/recent.js.map +0 -1
- package/dist/web/sanitize.d.ts +0 -29
- package/dist/web/sanitize.d.ts.map +0 -1
- package/dist/web/sanitize.js.map +0 -1
- package/dist/web/taxonomy.d.ts.map +0 -1
- package/dist/web/taxonomy.js.map +0 -1
- package/dist/web/templates.d.ts.map +0 -1
- package/dist/web/templates.js.map +0 -1
- package/dist/web/themes.d.ts.map +0 -1
- package/dist/web/themes.js.map +0 -1
- package/dist/webmention/html.d.ts.map +0 -1
- package/dist/webmention/html.js.map +0 -1
- package/dist/webmention/public-address.d.ts.map +0 -1
- package/dist/webmention/public-address.js.map +0 -1
- /package/dist/{web → content}/license.d.ts +0 -0
- /package/dist/{web → content}/license.js +0 -0
- /package/dist/{admin → site}/admin-theme.d.ts +0 -0
- /package/dist/{admin → site}/admin-theme.js +0 -0
- /package/dist/{admin → site}/passwords.d.ts +0 -0
- /package/dist/{admin → site}/passwords.js +0 -0
- /package/dist/{indieauth → util}/client-id.d.ts +0 -0
- /package/dist/{indieauth → util}/client-id.js +0 -0
- /package/dist/{webmention → util}/public-address.d.ts +0 -0
- /package/dist/{webmention → util}/public-address.js +0 -0
- /package/dist/{env.js → web/env.js} +0 -0
package/dist/web/conversation.js
CHANGED
|
@@ -1,16 +1,39 @@
|
|
|
1
|
-
import { readSiteJson, readSiteSettings } from '../admin/settings.js';
|
|
2
1
|
import { avatarHref } from '../avatars/avatars.js';
|
|
3
2
|
import { answerable, commentPolicyOf } from '../comments/policy.js';
|
|
4
3
|
import { postLabel, postTypeOf } from '../content/post-type.js';
|
|
5
4
|
import { RSVP_LABELS } from '../content/rsvp.js';
|
|
6
5
|
import { readAllQuoteAuthorizations } from '../federation/quotes.js';
|
|
7
|
-
import { actorHandle, guessedName, quoteFrom, replyFrom, REPLY_ACTIVITY_TYPE, } from '../
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
6
|
+
import { actorHandle, guessedName, quoteFrom, replyFrom, REPLY_ACTIVITY_TYPE, } from '../store/inbox-replies.js';
|
|
7
|
+
import { readSiteJson, readSiteSettings } from '../site/site-json.js';
|
|
8
|
+
import { absoluteUrl } from '../util/url.js';
|
|
9
|
+
import { authorContext, profileContext, siteAuthorContext } from '../site/authors.js';
|
|
10
|
+
import { authorFeedHref, repliesFeedPath } from './feed-source.js';
|
|
11
|
+
import { activityStreamsId, permalinkOfObjectId } from '../content/permalinks.js';
|
|
12
|
+
import { isListed, isServed } from '../content/served.js';
|
|
13
|
+
import { isKey, commentPageHref, feedGuid, repliesKey } from '../content/guids.js';
|
|
14
|
+
import { sanitizeCommentHtml } from '../content/sanitize.js';
|
|
15
|
+
import { commentAnchor, commentKeyAt, commentNames, heldComment, isWithheld, visibleReply, } from '../comments/conversation.js';
|
|
16
|
+
/**
|
|
17
|
+
* The conversation under a post, in one shape whatever it is made of, and the
|
|
18
|
+
* one reader everything that shows a conversation asks.
|
|
19
|
+
*
|
|
20
|
+
* The fediverse is only the first thing that can answer a post: native
|
|
21
|
+
* comments and webmentions land in the same thread, so nothing here is spelled
|
|
22
|
+
* in ActivityPub's vocabulary. An {@link Interaction} says where it came from
|
|
23
|
+
* (`source`) and what it is (`kind`), and everything else about it is the same
|
|
24
|
+
* whether a Mastodon note, a form on this site or somebody else's blog post
|
|
25
|
+
* produced it.
|
|
26
|
+
*
|
|
27
|
+
* Two indexes hold the raw material — `ap_inbox` for what remote servers sent
|
|
28
|
+
* and `comments` for what the files under `content/_data/comments/` say — and
|
|
29
|
+
* this module is the only place outside the comment intake that reads either
|
|
30
|
+
* of them to show somebody a conversation. That is the point of it: the thread
|
|
31
|
+
* under the post, the post's own comments feed, `/comments/feed/` and the
|
|
32
|
+
* `source:comments` count on a post feed used to merge the same two indexes in
|
|
33
|
+
* two implementations, which is two chances to disagree about what a reader
|
|
34
|
+
* may see. Now there is one {@link ConversationReader}, and the page and the
|
|
35
|
+
* feed are the same reading.
|
|
36
|
+
*/
|
|
14
37
|
const RSVP_GROUP_ORDER = ['yes', 'maybe', 'interested', 'no'];
|
|
15
38
|
const RSVP_ACTIVITIES = {
|
|
16
39
|
Accept: 'yes',
|
|
@@ -73,44 +96,93 @@ function postConversation(context, document) {
|
|
|
73
96
|
},
|
|
74
97
|
};
|
|
75
98
|
}
|
|
99
|
+
/**
|
|
100
|
+
* A repost joins the boosts, because a reader looking at the page is being
|
|
101
|
+
* told the same thing by both; a mention is its own group, because it is
|
|
102
|
+
* neither an answer nor a reaction.
|
|
103
|
+
*/
|
|
104
|
+
const GROUP_OF = {
|
|
105
|
+
reply: 'written',
|
|
106
|
+
like: 'likes',
|
|
107
|
+
boost: 'boosts',
|
|
108
|
+
repost: 'boosts',
|
|
109
|
+
mention: 'mentions',
|
|
110
|
+
};
|
|
76
111
|
function gather(context, document, seen = new Set([document.path])) {
|
|
77
|
-
const
|
|
112
|
+
const deliveredObjectId = activityStreamsId(document, context.baseUrl, context.store.now());
|
|
78
113
|
const root = rootOf(context, document);
|
|
79
|
-
const
|
|
114
|
+
const stored = context.admin.listCommentsFor(document.slug);
|
|
80
115
|
const naming = authorNaming(context.admin);
|
|
81
|
-
const
|
|
116
|
+
const isEvent = postTypeOf(document) === 'event';
|
|
117
|
+
const fediverse = deliveredObjectId === undefined
|
|
82
118
|
? []
|
|
83
|
-
:
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
const
|
|
88
|
-
const
|
|
89
|
-
const
|
|
119
|
+
: [
|
|
120
|
+
fromQuotes(context, deliveredObjectId, naming),
|
|
121
|
+
fromActivities(context, deliveredObjectId, stored, naming, isEvent),
|
|
122
|
+
];
|
|
123
|
+
const comments = fromStored(context, document, stored, isEvent);
|
|
124
|
+
const sources = [...fediverse, comments];
|
|
125
|
+
const replyPosts = fromReplyPosts(context, document, root, seen, [
|
|
126
|
+
...sources.flatMap(({ said }) => said.flatMap(([group, entry]) => (group === 'written' ? [entry] : []))),
|
|
127
|
+
...(comments.held?.values() ?? []),
|
|
128
|
+
]);
|
|
129
|
+
return merged(root, [...sources, replyPosts]);
|
|
130
|
+
}
|
|
131
|
+
function merged(root, parts) {
|
|
132
|
+
const groups = {
|
|
133
|
+
written: [],
|
|
134
|
+
likes: [],
|
|
135
|
+
boosts: [],
|
|
136
|
+
mentions: [],
|
|
137
|
+
answers: [],
|
|
138
|
+
};
|
|
90
139
|
const held = new Map();
|
|
91
|
-
const
|
|
92
|
-
const
|
|
140
|
+
const withdrawn = new Set();
|
|
141
|
+
for (const part of parts) {
|
|
142
|
+
for (const [group, entry] of part.said)
|
|
143
|
+
groups[group].push(entry);
|
|
144
|
+
for (const [id, entry] of part.held ?? [])
|
|
145
|
+
held.set(id, entry);
|
|
146
|
+
for (const id of part.withdrawn ?? [])
|
|
147
|
+
withdrawn.add(id);
|
|
148
|
+
}
|
|
149
|
+
// Sorted before threading rather than after, because a thread is built by
|
|
150
|
+
// walking this list: two sources' entries would otherwise interleave in the
|
|
151
|
+
// order the code happened to read them rather than in the order they were
|
|
152
|
+
// written.
|
|
153
|
+
groups.written.sort(byPublished);
|
|
154
|
+
return { root, ...groups, held, withdrawn };
|
|
155
|
+
}
|
|
156
|
+
function fromQuotes(context, objectId, naming) {
|
|
157
|
+
const approvals = readAllQuoteAuthorizations(context.contentDir);
|
|
158
|
+
return {
|
|
159
|
+
said: quotesOf(context.admin, approvals, objectId, naming).map((quote) => ['mentions', quote]),
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
function fromActivities(context, objectId, stored, naming, isEvent) {
|
|
163
|
+
// What was imported from the fediverse is walked from too: an answer to an
|
|
164
|
+
// imported note names the note, which no logged activity may carry.
|
|
165
|
+
const origins = stored.flatMap((comment) => comment.source === 'activitypub' && comment.origin !== undefined ? [comment.origin] : []);
|
|
166
|
+
const activities = activitiesAround(context.admin, [objectId, ...origins]);
|
|
167
|
+
const withdrawn = withdrawnBy(activities);
|
|
168
|
+
const taken = (activityId) => activityId !== null && withdrawn.has(activityId);
|
|
169
|
+
// One like per actor, so a like imported from the site this one replaced
|
|
170
|
+
// and the same person's like delivered here are one.
|
|
171
|
+
const reacted = new Set(stored.flatMap(storedReaction));
|
|
172
|
+
const said = [];
|
|
93
173
|
for (const activity of activities) {
|
|
94
174
|
const answer = isEvent ? RSVP_ACTIVITIES[activity.activityType] : undefined;
|
|
95
175
|
if (answer !== undefined) {
|
|
96
|
-
if (activity.objectId !== objectId)
|
|
176
|
+
if (activity.objectId !== objectId || taken(activity.activityId))
|
|
97
177
|
continue;
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
url: author.url,
|
|
107
|
-
content: '',
|
|
108
|
-
published: new Date(activity.receivedAt),
|
|
109
|
-
inReplyTo: null,
|
|
110
|
-
status: 'published',
|
|
111
|
-
replies: [],
|
|
112
|
-
rsvp: { value: answer, label: RSVP_LABELS[answer] },
|
|
113
|
-
});
|
|
178
|
+
said.push([
|
|
179
|
+
'answers',
|
|
180
|
+
{
|
|
181
|
+
...reaction(activity, naming, `${activity.actorId}#rsvp`),
|
|
182
|
+
kind: 'reply',
|
|
183
|
+
rsvp: { value: answer, label: RSVP_LABELS[answer] },
|
|
184
|
+
},
|
|
185
|
+
]);
|
|
114
186
|
continue;
|
|
115
187
|
}
|
|
116
188
|
const kind = REACTIONS[activity.activityType];
|
|
@@ -119,77 +191,96 @@ function gather(context, document, seen = new Set([document.path])) {
|
|
|
119
191
|
// belongs to that reply's own conversation, wherever it is shown.
|
|
120
192
|
if (activity.objectId !== objectId)
|
|
121
193
|
continue;
|
|
122
|
-
// One like per actor, however many times it was delivered, and none
|
|
123
|
-
// all once its actor has taken it back.
|
|
124
|
-
const key =
|
|
125
|
-
if (reacted.has(key))
|
|
194
|
+
// One like per actor, however many times it was delivered, and none
|
|
195
|
+
// at all once its actor has taken it back.
|
|
196
|
+
const key = reactionKey(kind, activity.actorId);
|
|
197
|
+
if (reacted.has(key) || taken(activity.activityId))
|
|
126
198
|
continue;
|
|
127
|
-
if (activity.activityId !== null &&
|
|
199
|
+
if (activity.activityId !== null &&
|
|
200
|
+
heldComment(context.admin, activity.activityId) !== undefined) {
|
|
128
201
|
continue;
|
|
202
|
+
}
|
|
129
203
|
reacted.add(key);
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
kind,
|
|
135
|
-
author,
|
|
136
|
-
url: author.url,
|
|
137
|
-
content: '',
|
|
138
|
-
published: new Date(activity.receivedAt),
|
|
139
|
-
inReplyTo: null,
|
|
140
|
-
status: 'published',
|
|
141
|
-
replies: [],
|
|
142
|
-
});
|
|
204
|
+
said.push([
|
|
205
|
+
GROUP_OF[kind],
|
|
206
|
+
{ ...reaction(activity, naming, `${activity.actorId}#${kind}`), kind },
|
|
207
|
+
]);
|
|
143
208
|
continue;
|
|
144
209
|
}
|
|
145
210
|
const reply = replyFrom(activity);
|
|
146
|
-
if (reply === undefined)
|
|
211
|
+
if (reply === undefined || heldComment(context.admin, reply.id) !== undefined)
|
|
147
212
|
continue;
|
|
148
|
-
|
|
213
|
+
const parent = heldComment(context.admin, reply.inReplyTo);
|
|
214
|
+
said.push([
|
|
215
|
+
'written',
|
|
216
|
+
federatedInteraction(parent === undefined ? reply : { ...reply, inReplyTo: parent.id }, naming(activity.actorId)),
|
|
217
|
+
]);
|
|
149
218
|
}
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
219
|
+
return { said, withdrawn };
|
|
220
|
+
}
|
|
221
|
+
function storedReaction({ kind, actor }) {
|
|
222
|
+
const group = GROUP_OF[kind];
|
|
223
|
+
return actor === undefined || (group !== 'likes' && group !== 'boosts')
|
|
224
|
+
? []
|
|
225
|
+
: [reactionKey(kind, actor)];
|
|
226
|
+
}
|
|
227
|
+
function reactionKey(kind, actor) {
|
|
228
|
+
return `${GROUP_OF[kind]}\0${actor}`;
|
|
229
|
+
}
|
|
230
|
+
function reaction(activity, naming, fallbackId) {
|
|
231
|
+
const author = naming(activity.actorId);
|
|
232
|
+
return {
|
|
233
|
+
...unstored(activity.activityId ?? fallbackId),
|
|
234
|
+
source: 'activitypub',
|
|
235
|
+
author,
|
|
236
|
+
url: author.url,
|
|
237
|
+
content: '',
|
|
238
|
+
published: new Date(activity.receivedAt),
|
|
239
|
+
inReplyTo: null,
|
|
240
|
+
status: 'published',
|
|
241
|
+
replies: [],
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
function fromStored(context, document, stored, isEvent) {
|
|
245
|
+
const users = context.users();
|
|
246
|
+
const said = [];
|
|
247
|
+
const held = new Map();
|
|
248
|
+
for (const record of stored) {
|
|
249
|
+
const comment = interactionOf(record, document.permalink, context.baseUrl, users);
|
|
250
|
+
if (record.status !== 'approved') {
|
|
153
251
|
held.set(comment.id, comment);
|
|
154
252
|
continue;
|
|
155
253
|
}
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
// neither an answer nor a reaction.
|
|
159
|
-
const group = isEvent && comment.rsvp !== undefined
|
|
160
|
-
? answers
|
|
161
|
-
: comment.kind === 'reply'
|
|
162
|
-
? written
|
|
163
|
-
: comment.kind === 'like'
|
|
164
|
-
? likes
|
|
165
|
-
: comment.kind === 'mention'
|
|
166
|
-
? mentions
|
|
167
|
-
: boosts;
|
|
168
|
-
group.push({ ...comment, replies: [] });
|
|
254
|
+
const group = isEvent && comment.rsvp !== undefined ? 'answers' : GROUP_OF[comment.kind];
|
|
255
|
+
said.push([group, { ...comment, replies: [] }]);
|
|
169
256
|
}
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
257
|
+
return { said, held };
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* The reply posts answering the post or anything said under it, each
|
|
261
|
+
* bringing what was said under it: an answer to a reply post lands against
|
|
262
|
+
* the reply post, and this is what stitches it into the thread it is in.
|
|
263
|
+
*/
|
|
264
|
+
function fromReplyPosts(context, document, root, seen, answered) {
|
|
265
|
+
const names = namesIn(context, document, root, answered);
|
|
266
|
+
const said = [];
|
|
267
|
+
const held = new Map();
|
|
268
|
+
const withdrawn = new Set();
|
|
174
269
|
for (const answer of context.store.listRepliesTo([...names.keys()])) {
|
|
175
270
|
const target = names.get(answer.inReplyTo ?? '');
|
|
176
271
|
if (target === undefined || seen.has(answer.path))
|
|
177
272
|
continue;
|
|
178
273
|
const under = gather(context, answer, new Set([...seen, answer.path]));
|
|
179
274
|
const top = (entry) => entry.inReplyTo === null ? { ...entry, inReplyTo: under.root } : entry;
|
|
180
|
-
|
|
181
|
-
|
|
275
|
+
said.push(['written', replyPostInteraction(context, answer, under.root, target)]);
|
|
276
|
+
for (const entry of under.written)
|
|
277
|
+
said.push(['written', top(entry)]);
|
|
182
278
|
for (const [id, entry] of under.held)
|
|
183
279
|
held.set(id, top(entry));
|
|
184
280
|
for (const id of under.withdrawn)
|
|
185
281
|
withdrawn.add(id);
|
|
186
282
|
}
|
|
187
|
-
|
|
188
|
-
// walking this list: two sources' entries would otherwise interleave in the
|
|
189
|
-
// order the code happened to read them rather than in the order they were
|
|
190
|
-
// written.
|
|
191
|
-
written.sort(byPublished);
|
|
192
|
-
return { root, written, withdrawn, held, likes, boosts, mentions, answers };
|
|
283
|
+
return { said, held, withdrawn };
|
|
193
284
|
}
|
|
194
285
|
/**
|
|
195
286
|
* One native comment's page: the comment, its replies threaded under it by
|
|
@@ -219,7 +310,7 @@ function commentThread(context, id) {
|
|
|
219
310
|
};
|
|
220
311
|
}
|
|
221
312
|
function replyNamed(context, document, url) {
|
|
222
|
-
return namedIn(context, document, gather(context, document), url)
|
|
313
|
+
return namedIn(context, document, gather(context, document), url);
|
|
223
314
|
}
|
|
224
315
|
/** The entry of a gathered conversation a URL names, held ones included. */
|
|
225
316
|
function namedIn(context, document, said, url) {
|
|
@@ -230,8 +321,8 @@ function namedIn(context, document, said, url) {
|
|
|
230
321
|
catch {
|
|
231
322
|
return undefined;
|
|
232
323
|
}
|
|
233
|
-
const
|
|
234
|
-
return [...said.written, ...said.held.values()].find((reply) => reply.
|
|
324
|
+
const key = keyNamedBy(named, document, context.baseUrl);
|
|
325
|
+
return [...said.written, ...said.held.values()].find((reply) => reply.key === key ||
|
|
235
326
|
reply.id === named.href ||
|
|
236
327
|
(reply.url !== null && absoluteUrl(reply.url, context.baseUrl) === named.href));
|
|
237
328
|
}
|
|
@@ -249,35 +340,30 @@ function heldAt(context, url) {
|
|
|
249
340
|
}
|
|
250
341
|
return { kind: 'reply', post, reply };
|
|
251
342
|
}
|
|
252
|
-
function repliesTo(context,
|
|
253
|
-
if (!
|
|
254
|
-
|
|
255
|
-
if (stored?.source !== 'comment')
|
|
256
|
-
return undefined;
|
|
257
|
-
const post = context.store.getBySlug(stored.slug);
|
|
258
|
-
return post === undefined ? undefined : repliesIn(context, post, segment);
|
|
259
|
-
}
|
|
343
|
+
function repliesTo(context, key) {
|
|
344
|
+
if (!isKey(key))
|
|
345
|
+
return undefined;
|
|
260
346
|
// Each source's index is asked in turn, so a key naming nothing costs three
|
|
261
347
|
// lookups and no more (TASK-327).
|
|
262
|
-
const [document] = context.store.listByRepliesKey(
|
|
348
|
+
const [document] = context.store.listByRepliesKey(key);
|
|
263
349
|
if (document !== undefined) {
|
|
264
|
-
if (repliesKey(feedGuid(document, context.baseUrl)) ===
|
|
350
|
+
if (repliesKey(feedGuid(document, context.baseUrl)) === key) {
|
|
265
351
|
return repliesIn(context, document, null);
|
|
266
352
|
}
|
|
267
353
|
const root = threadRootOf(context, document);
|
|
268
|
-
return root === undefined ? undefined : repliesIn(context, root,
|
|
354
|
+
return root === undefined ? undefined : repliesIn(context, root, key);
|
|
269
355
|
}
|
|
270
|
-
const
|
|
356
|
+
const comment = context.admin.getComment(key);
|
|
271
357
|
if (comment !== undefined) {
|
|
272
358
|
const post = context.store.getBySlug(comment.slug);
|
|
273
|
-
return post === undefined ? undefined : repliesIn(context, post,
|
|
359
|
+
return post === undefined ? undefined : repliesIn(context, post, key);
|
|
274
360
|
}
|
|
275
|
-
for (const activity of context.admin.listRepliesByKey(
|
|
361
|
+
for (const activity of context.admin.listRepliesByKey(key)) {
|
|
276
362
|
const reply = replyFrom(activity);
|
|
277
363
|
if (reply === undefined)
|
|
278
364
|
continue;
|
|
279
365
|
const post = documentNamed(context, reply.id);
|
|
280
|
-
return post === undefined ? undefined : repliesIn(context, post,
|
|
366
|
+
return post === undefined ? undefined : repliesIn(context, post, key);
|
|
281
367
|
}
|
|
282
368
|
return undefined;
|
|
283
369
|
}
|
|
@@ -285,17 +371,17 @@ function repliesTo(context, segment) {
|
|
|
285
371
|
* The direct replies of one reply in a document's thread, or of the document
|
|
286
372
|
* itself, while the document is served and the reply is one a reader sees.
|
|
287
373
|
*/
|
|
288
|
-
function repliesIn(context, post,
|
|
374
|
+
function repliesIn(context, post, key) {
|
|
289
375
|
if (!isServed(post, context.store.now()))
|
|
290
376
|
return undefined;
|
|
291
377
|
const thread = postConversation(context, post).replies;
|
|
292
|
-
const reply =
|
|
378
|
+
const reply = key === null ? null : visibleReply(thread, key);
|
|
293
379
|
if (reply === undefined)
|
|
294
380
|
return undefined;
|
|
295
381
|
return {
|
|
296
382
|
post,
|
|
297
383
|
reply,
|
|
298
|
-
replies:
|
|
384
|
+
replies: repliesFed(reply?.replies ?? thread).map((entry) => ({ ...entry, parent: reply })),
|
|
299
385
|
};
|
|
300
386
|
}
|
|
301
387
|
function upstreamsOf(context, document) {
|
|
@@ -367,16 +453,16 @@ function documentNamed(context, url, depth = 0) {
|
|
|
367
453
|
return undefined;
|
|
368
454
|
}
|
|
369
455
|
if (named.origin === new URL(context.baseUrl).origin) {
|
|
370
|
-
const
|
|
371
|
-
if (
|
|
372
|
-
const comment = context.admin.getComment(
|
|
456
|
+
const key = commentKeyAt(named.pathname);
|
|
457
|
+
if (key !== undefined) {
|
|
458
|
+
const comment = context.admin.getComment(key);
|
|
373
459
|
return comment === undefined ? undefined : context.store.getBySlug(comment.slug);
|
|
374
460
|
}
|
|
375
461
|
const permalink = permalinkOfObjectId(`${named.origin}${named.pathname}`, context.baseUrl);
|
|
376
462
|
const found = permalink === undefined ? undefined : context.store.getByPermalink(permalink);
|
|
377
463
|
return found ?? context.store.getByStoredObjectId(named.href);
|
|
378
464
|
}
|
|
379
|
-
const
|
|
465
|
+
const comment = context.admin.listCommentsAt(named.href)[0] ?? heldComment(context.admin, named.href);
|
|
380
466
|
if (comment !== undefined)
|
|
381
467
|
return context.store.getBySlug(comment.slug);
|
|
382
468
|
for (const activity of context.admin.listActivitiesAbout([named.href])) {
|
|
@@ -409,7 +495,7 @@ const MAXIMUM_NOTE_DEPTH = 32;
|
|
|
409
495
|
* native comments, and they have to hang off something.
|
|
410
496
|
*/
|
|
411
497
|
function rootOf(context, document) {
|
|
412
|
-
return activityStreamsId(document, context.baseUrl) ?? document.permalink;
|
|
498
|
+
return activityStreamsId(document, context.baseUrl, context.store.now()) ?? document.permalink;
|
|
413
499
|
}
|
|
414
500
|
/**
|
|
415
501
|
* Every URL a reply post's `in-reply-to` could name something here by, and the
|
|
@@ -437,17 +523,10 @@ function namesOf(reply, permalink, baseUrl) {
|
|
|
437
523
|
names.push(...commentNames(reply.id, permalink, baseUrl));
|
|
438
524
|
return names;
|
|
439
525
|
}
|
|
440
|
-
/**
|
|
441
|
-
* The URLs a reply post can answer a native comment by: its own page, and its
|
|
442
|
-
* anchor on the post at this absolute permalink.
|
|
443
|
-
*/
|
|
444
|
-
export function commentNames(id, permalink, baseUrl) {
|
|
445
|
-
return [absoluteUrl(commentPageHref(id), baseUrl), `${permalink}#${commentAnchor(id)}`];
|
|
446
|
-
}
|
|
447
526
|
/** A reply post as the thread's own shape, answering `inReplyTo`. */
|
|
448
527
|
function replyPostInteraction(context, post, id, inReplyTo) {
|
|
449
528
|
return {
|
|
450
|
-
id,
|
|
529
|
+
...unstored(id),
|
|
451
530
|
source: 'post',
|
|
452
531
|
kind: 'reply',
|
|
453
532
|
author: documentAuthor(context, post),
|
|
@@ -464,27 +543,32 @@ function documentAuthor(context, post) {
|
|
|
464
543
|
const users = context.users();
|
|
465
544
|
const site = readSiteSettings(context.contentDir);
|
|
466
545
|
const author = authorContext(users, post.author) ?? siteAuthorContext(users, site.author);
|
|
546
|
+
return bylineAuthor(author, site.title);
|
|
547
|
+
}
|
|
548
|
+
/** A byline as the thread names its author, `fallback` when it names nobody. */
|
|
549
|
+
function bylineAuthor(author, fallback) {
|
|
467
550
|
return {
|
|
468
|
-
name: author?.name ??
|
|
551
|
+
name: author?.name ?? fallback,
|
|
469
552
|
handle: null,
|
|
470
553
|
url: author?.url ?? null,
|
|
471
554
|
avatar: author?.avatar ?? null,
|
|
472
555
|
actorId: null,
|
|
473
556
|
feed: author?.username === undefined ? null : authorFeedHref(author.username, 'rss'),
|
|
557
|
+
username: author?.username ?? null,
|
|
474
558
|
};
|
|
475
559
|
}
|
|
476
|
-
/** The
|
|
477
|
-
function
|
|
560
|
+
/** The key a URL on this site names by a comment's page or by an anchor on the post. */
|
|
561
|
+
function keyNamedBy(url, document, baseUrl) {
|
|
478
562
|
const post = new URL(absoluteUrl(document.permalink, baseUrl));
|
|
479
563
|
if (url.origin !== post.origin)
|
|
480
564
|
return undefined;
|
|
481
|
-
const onItsPage =
|
|
565
|
+
const onItsPage = commentKeyAt(url.pathname);
|
|
482
566
|
if (onItsPage !== undefined)
|
|
483
567
|
return onItsPage;
|
|
484
568
|
const anchor = `#${commentAnchor('')}`;
|
|
485
569
|
if (url.pathname !== post.pathname || !url.hash.startsWith(anchor))
|
|
486
570
|
return undefined;
|
|
487
|
-
return
|
|
571
|
+
return url.hash.slice(anchor.length);
|
|
488
572
|
}
|
|
489
573
|
/**
|
|
490
574
|
* What a reply answers, from the top of the thread down to its parent.
|
|
@@ -554,7 +638,7 @@ function siteConversation(context, limit) {
|
|
|
554
638
|
offset += page.length;
|
|
555
639
|
for (const activity of page) {
|
|
556
640
|
const reply = replyFrom(activity);
|
|
557
|
-
if (reply === undefined)
|
|
641
|
+
if (reply === undefined || heldComment(context.admin, reply.id) !== undefined)
|
|
558
642
|
continue;
|
|
559
643
|
// A note answering another note is as much this post's as one answering
|
|
560
644
|
// the post, so the post is found the way a reply post finds its thread.
|
|
@@ -576,26 +660,31 @@ function siteConversation(context, limit) {
|
|
|
576
660
|
said.push({ ...quote, post });
|
|
577
661
|
}
|
|
578
662
|
}
|
|
579
|
-
for (const stored of context.admin.listComments({
|
|
580
|
-
status: 'approved',
|
|
581
|
-
limit: limit * OVERSCAN,
|
|
582
|
-
})) {
|
|
583
|
-
const post = context.store.getBySlug(stored.slug);
|
|
584
|
-
if (!shown(post))
|
|
585
|
-
continue;
|
|
586
|
-
said.push({ ...interactionOf(stored, post.permalink), post });
|
|
587
|
-
}
|
|
588
663
|
// Each post's thread, read once: where each reply sits and what it carries
|
|
589
664
|
// is the thread's to say, so the site's feed and the post's agree.
|
|
590
665
|
const threads = new Map();
|
|
591
666
|
const placedOn = (post) => {
|
|
592
667
|
let found = threads.get(post.path);
|
|
593
668
|
if (found === undefined) {
|
|
594
|
-
found = new Map(
|
|
669
|
+
found = new Map(saidIn(postConversation(context, post)).map((reply) => [reply.id, reply]));
|
|
595
670
|
threads.set(post.path, found);
|
|
596
671
|
}
|
|
597
672
|
return found;
|
|
598
673
|
};
|
|
674
|
+
// A stored comment is taken from its post's thread rather than read on its
|
|
675
|
+
// own, so a reaction or an event's RSVP, which the thread holds apart, is
|
|
676
|
+
// left out here as it is from the post's feed.
|
|
677
|
+
for (const stored of context.admin.listComments({
|
|
678
|
+
status: 'approved',
|
|
679
|
+
limit: limit * OVERSCAN,
|
|
680
|
+
})) {
|
|
681
|
+
const post = context.store.getBySlug(stored.slug);
|
|
682
|
+
if (!shown(post))
|
|
683
|
+
continue;
|
|
684
|
+
const entry = placedOn(post).get(stored.id);
|
|
685
|
+
if (entry !== undefined)
|
|
686
|
+
said.push({ ...entry, post });
|
|
687
|
+
}
|
|
599
688
|
// A reply post is in the feed of the thread it is shown in, unlisted or
|
|
600
689
|
// not: the thread is listed, and the reply post is one of its answers.
|
|
601
690
|
for (const answer of context.store.listReplyPosts({ limit: limit * OVERSCAN })) {
|
|
@@ -606,7 +695,7 @@ function siteConversation(context, limit) {
|
|
|
606
695
|
if (reply !== undefined)
|
|
607
696
|
said.push({ ...reply, post });
|
|
608
697
|
}
|
|
609
|
-
return newestFirst(said, limit).map((entry) => {
|
|
698
|
+
return newestFirst(said.filter(conversational), limit).map((entry) => {
|
|
610
699
|
const thread = placedOn(entry.post);
|
|
611
700
|
return {
|
|
612
701
|
...(thread.get(entry.id) ?? { ...entry, parent: null }),
|
|
@@ -619,7 +708,7 @@ function siteConversation(context, limit) {
|
|
|
619
708
|
function directCounts(context, documents) {
|
|
620
709
|
return new Map(documents.map((document) => [
|
|
621
710
|
document.permalink,
|
|
622
|
-
|
|
711
|
+
repliesFed(postConversation(context, document).replies).length,
|
|
623
712
|
]));
|
|
624
713
|
}
|
|
625
714
|
/**
|
|
@@ -653,7 +742,7 @@ function quotesOf(admin, approvals, objectId, naming) {
|
|
|
653
742
|
if (quote?.id !== approval.quote || quote.quoted !== objectId)
|
|
654
743
|
continue;
|
|
655
744
|
quotes.push({
|
|
656
|
-
|
|
745
|
+
...unstored(quote.id),
|
|
657
746
|
source: 'activitypub',
|
|
658
747
|
kind: 'mention',
|
|
659
748
|
author: naming(quote.actorId),
|
|
@@ -674,7 +763,7 @@ function quotesOf(admin, approvals, objectId, naming) {
|
|
|
674
763
|
/** One logged fediverse reply as the thread's own shape. */
|
|
675
764
|
function federatedInteraction(reply, author) {
|
|
676
765
|
return {
|
|
677
|
-
|
|
766
|
+
...unstored(reply.id),
|
|
678
767
|
source: 'activitypub',
|
|
679
768
|
kind: 'reply',
|
|
680
769
|
author,
|
|
@@ -688,24 +777,33 @@ function federatedInteraction(reply, author) {
|
|
|
688
777
|
replies: [],
|
|
689
778
|
};
|
|
690
779
|
}
|
|
780
|
+
function unstored(id) {
|
|
781
|
+
return { id, key: repliesKey(id), guid: id, migrated: false };
|
|
782
|
+
}
|
|
691
783
|
/** One stored comment as the thread's own shape. */
|
|
692
|
-
function interactionOf(comment, permalink) {
|
|
784
|
+
function interactionOf(comment, permalink, baseUrl, users) {
|
|
785
|
+
// A user the site no longer has is named as the comment was signed.
|
|
786
|
+
const user = users.find((candidate) => candidate.username === comment.user);
|
|
693
787
|
return {
|
|
694
788
|
id: comment.id,
|
|
789
|
+
key: comment.id,
|
|
790
|
+
guid: comment.source === 'comment'
|
|
791
|
+
? absoluteUrl(commentPageHref(comment.id), baseUrl)
|
|
792
|
+
: (comment.origin ?? comment.url ?? comment.id),
|
|
793
|
+
migrated: comment.migrated === true,
|
|
695
794
|
source: comment.source,
|
|
696
795
|
kind: comment.kind,
|
|
697
|
-
author:
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
},
|
|
796
|
+
author: user === undefined
|
|
797
|
+
? {
|
|
798
|
+
name: comment.author.name,
|
|
799
|
+
handle: comment.actor === undefined ? null : (actorHandle(comment.actor) ?? null),
|
|
800
|
+
url: comment.author.url,
|
|
801
|
+
avatar: comment.author.avatar === null ? null : avatarHref(comment.author.avatar),
|
|
802
|
+
actorId: comment.actor ?? null,
|
|
803
|
+
feed: comment.source === 'webmention' ? comment.author.url : null,
|
|
804
|
+
username: null,
|
|
805
|
+
}
|
|
806
|
+
: bylineAuthor(profileContext(user), comment.author.name),
|
|
709
807
|
// Where it can be read. A comment written here has a page of its own
|
|
710
808
|
// (TASK-318); a webmention lives on the page it was sent from, and its
|
|
711
809
|
// `url` says so. A theme that prints `url` for a fediverse reply prints a
|
|
@@ -724,47 +822,27 @@ function interactionOf(comment, permalink) {
|
|
|
724
822
|
: { rsvp: { value: comment.rsvp, label: RSVP_LABELS[comment.rsvp] } }),
|
|
725
823
|
};
|
|
726
824
|
}
|
|
727
|
-
/**
|
|
728
|
-
* The `id` a comment is anchored at on the page.
|
|
729
|
-
*
|
|
730
|
-
* Prefixed rather than bare so a comment can never collide with a heading
|
|
731
|
-
* anchor the post's own Markdown produced.
|
|
732
|
-
*/
|
|
733
|
-
export function commentAnchor(id) {
|
|
734
|
-
return `comment-${id}`;
|
|
735
|
-
}
|
|
736
|
-
/** The id of the comment whose page a path is, or `undefined` (TASK-319). */
|
|
737
|
-
export function commentIdAt(pathname) {
|
|
738
|
-
if (!pathname.startsWith(COMMENT_PAGE_PREFIX) || !pathname.endsWith('/'))
|
|
739
|
-
return undefined;
|
|
740
|
-
const encoded = pathname.slice(COMMENT_PAGE_PREFIX.length, -1);
|
|
741
|
-
if (encoded === '' || encoded.includes('/'))
|
|
742
|
-
return undefined;
|
|
743
|
-
return decoded(encoded);
|
|
744
|
-
}
|
|
745
|
-
function decoded(value) {
|
|
746
|
-
try {
|
|
747
|
-
return decodeURIComponent(value);
|
|
748
|
-
}
|
|
749
|
-
catch {
|
|
750
|
-
return undefined;
|
|
751
|
-
}
|
|
752
|
-
}
|
|
753
|
-
/**
|
|
754
|
-
* Everything said in a conversation, at every depth and in no order: the
|
|
755
|
-
* replies and the mentions.
|
|
756
|
-
*
|
|
757
|
-
* The likes and the boosts are left out because they say nothing. A feed item
|
|
758
|
-
* is somebody's words, and "@ada liked this" has none to carry — a reader
|
|
759
|
-
* polling a comments feed would get an entry with an empty body and no way to
|
|
760
|
-
* tell what it was for.
|
|
761
|
-
*/
|
|
825
|
+
/** What a post's comments feed carries, at every depth and in no order. */
|
|
762
826
|
export function spokenIn(conversation) {
|
|
827
|
+
return saidIn(conversation).filter(conversational);
|
|
828
|
+
}
|
|
829
|
+
/** The mentions and every visible reply of a conversation, each with its parent. */
|
|
830
|
+
function saidIn(conversation) {
|
|
763
831
|
return [
|
|
764
832
|
...conversation.mentions.map((mention) => ({ ...mention, parent: null })),
|
|
765
833
|
...placed(conversation.replies),
|
|
766
834
|
];
|
|
767
835
|
}
|
|
836
|
+
/**
|
|
837
|
+
* Whether a feed carries it and a reply count counts it (TASK-335): somebody's
|
|
838
|
+
* words, a reply or a mention, said here. A like, a boost or a repost says
|
|
839
|
+
* nothing — "@ada liked this" would be an item with an empty body — and a
|
|
840
|
+
* migrated entry was published before the site came here, so a reader must
|
|
841
|
+
* not see it as new.
|
|
842
|
+
*/
|
|
843
|
+
function conversational(entry) {
|
|
844
|
+
return !entry.migrated && (entry.kind === 'reply' || entry.kind === 'mention');
|
|
845
|
+
}
|
|
768
846
|
/** Every visible reply of a thread at any depth, each with the reply it sits under. */
|
|
769
847
|
function placed(replies, parent = null) {
|
|
770
848
|
return directReplies(replies).flatMap((reply) => [
|
|
@@ -780,15 +858,9 @@ function placed(replies, parent = null) {
|
|
|
780
858
|
function directReplies(replies) {
|
|
781
859
|
return replies.flatMap((reply) => (isWithheld(reply) ? directReplies(reply.replies) : [reply]));
|
|
782
860
|
}
|
|
783
|
-
/**
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
* as a key.
|
|
787
|
-
*/
|
|
788
|
-
function repliesHrefOf(reply, baseUrl) {
|
|
789
|
-
return repliesFeedPath(reply.source === 'comment' && !isRepliesKey(reply.id)
|
|
790
|
-
? reply.id
|
|
791
|
-
: repliesKey(replyGuid(reply, baseUrl)));
|
|
861
|
+
/** The direct replies a feed carries and a count advertises. */
|
|
862
|
+
function repliesFed(replies) {
|
|
863
|
+
return directReplies(replies).filter(conversational);
|
|
792
864
|
}
|
|
793
865
|
/**
|
|
794
866
|
* Interactions as a comments feed carries them: newest first, at most `limit`,
|
|
@@ -807,10 +879,10 @@ export function feedComments(said, options) {
|
|
|
807
879
|
? thread === undefined
|
|
808
880
|
? undefined
|
|
809
881
|
: feedGuid(thread, baseUrl)
|
|
810
|
-
:
|
|
811
|
-
const replies =
|
|
882
|
+
: entry.parent.guid;
|
|
883
|
+
const replies = repliesFed(entry.replies);
|
|
812
884
|
return {
|
|
813
|
-
id:
|
|
885
|
+
id: entry.guid,
|
|
814
886
|
url: absoluteUrl(entry.url ?? '/', baseUrl),
|
|
815
887
|
author: entry.author.name,
|
|
816
888
|
published: entry.published,
|
|
@@ -821,7 +893,7 @@ export function feedComments(said, options) {
|
|
|
821
893
|
: {
|
|
822
894
|
replies: {
|
|
823
895
|
count: replies.length,
|
|
824
|
-
feed: absoluteUrl(
|
|
896
|
+
feed: absoluteUrl(repliesFeedPath(entry.key), baseUrl),
|
|
825
897
|
},
|
|
826
898
|
}),
|
|
827
899
|
...(entry.author.feed === null
|
|
@@ -871,7 +943,7 @@ class PostsByObjectId {
|
|
|
871
943
|
if (permalink !== undefined) {
|
|
872
944
|
const document = this.#context.store.getByPermalink(permalink);
|
|
873
945
|
if (document !== undefined &&
|
|
874
|
-
activityStreamsId(document, this.#context.baseUrl) === objectId) {
|
|
946
|
+
activityStreamsId(document, this.#context.baseUrl, this.#context.store.now()) === objectId) {
|
|
875
947
|
return document;
|
|
876
948
|
}
|
|
877
949
|
}
|
|
@@ -881,7 +953,7 @@ class PostsByObjectId {
|
|
|
881
953
|
if (this.#all === undefined) {
|
|
882
954
|
this.#all = new Map();
|
|
883
955
|
for (const document of this.#context.store.listPosts()) {
|
|
884
|
-
const id = activityStreamsId(document, this.#context.baseUrl);
|
|
956
|
+
const id = activityStreamsId(document, this.#context.baseUrl, this.#context.store.now());
|
|
885
957
|
if (id !== undefined)
|
|
886
958
|
this.#all.set(id, document);
|
|
887
959
|
}
|
|
@@ -955,7 +1027,8 @@ function threadOf(said, under = said.root) {
|
|
|
955
1027
|
const list = siblings(said.held.get(id)?.inReplyTo ?? said.root, id, true);
|
|
956
1028
|
if (list === undefined)
|
|
957
1029
|
return undefined;
|
|
958
|
-
const
|
|
1030
|
+
const key = isKey(id) ? id : repliesKey(id);
|
|
1031
|
+
const entry = { id, key, withheld: true, replies: [] };
|
|
959
1032
|
list.push(entry);
|
|
960
1033
|
withheld.set(id, entry);
|
|
961
1034
|
return entry;
|
|
@@ -965,20 +1038,6 @@ function threadOf(said, under = said.root) {
|
|
|
965
1038
|
}
|
|
966
1039
|
return top;
|
|
967
1040
|
}
|
|
968
|
-
/** The entry of a thread with this id that a reader can see, at any depth. */
|
|
969
|
-
export function visibleReply(replies, id) {
|
|
970
|
-
for (const reply of replies) {
|
|
971
|
-
if (!isWithheld(reply) && reply.id === id)
|
|
972
|
-
return reply;
|
|
973
|
-
const found = visibleReply(reply.replies, id);
|
|
974
|
-
if (found !== undefined)
|
|
975
|
-
return found;
|
|
976
|
-
}
|
|
977
|
-
return undefined;
|
|
978
|
-
}
|
|
979
|
-
export function isWithheld(reply) {
|
|
980
|
-
return 'withheld' in reply;
|
|
981
|
-
}
|
|
982
1041
|
/** Oldest first, which is the order a conversation reads in. */
|
|
983
1042
|
function byPublished(left, right) {
|
|
984
1043
|
return left.published.getTime() - right.published.getTime();
|
|
@@ -1021,10 +1080,10 @@ const REACTIONS = {
|
|
|
1021
1080
|
* stops when a round finds nothing new, which it must, because a row is
|
|
1022
1081
|
* collected once and there are finitely many.
|
|
1023
1082
|
*/
|
|
1024
|
-
function activitiesAround(admin,
|
|
1083
|
+
function activitiesAround(admin, objectIds) {
|
|
1025
1084
|
const collected = new Map();
|
|
1026
|
-
const asked = new Set(
|
|
1027
|
-
let frontier = [
|
|
1085
|
+
const asked = new Set(objectIds);
|
|
1086
|
+
let frontier = [...asked];
|
|
1028
1087
|
while (frontier.length > 0) {
|
|
1029
1088
|
const next = [];
|
|
1030
1089
|
for (const activity of admin.listActivitiesAbout(frontier)) {
|
|
@@ -1106,6 +1165,7 @@ function authorNaming(admin) {
|
|
|
1106
1165
|
avatar: icon === null ? null : avatarHref(icon),
|
|
1107
1166
|
actorId,
|
|
1108
1167
|
feed: null,
|
|
1168
|
+
username: null,
|
|
1109
1169
|
};
|
|
1110
1170
|
known.set(actorId, author);
|
|
1111
1171
|
return author;
|