@geekity/cms 0.30.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 -4266
- 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 +238 -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 +17 -193
- package/dist/comments/records.d.ts.map +1 -1
- package/dist/comments/records.js +22 -391
- 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 +19 -31
- 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 +12 -5
- package/dist/content/guids.d.ts.map +1 -0
- package/dist/{web → content}/guids.js +28 -5
- 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 +7 -10
- 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 -839
- 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 +23 -3
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +21 -3
- 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 +4 -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 +5 -356
- package/dist/web/conversation.d.ts.map +1 -1
- package/dist/web/conversation.js +165 -136
- 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 +11 -41
- package/dist/web/feed-source.d.ts.map +1 -1
- package/dist/web/feed-source.js +11 -48
- 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 +98 -1369
- 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 +30 -38
- 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 -2339
- package/themes/default/layouts/base.njk +5 -4
- 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/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 -1025
- package/dist/admin/store.d.ts.map +0 -1
- package/dist/admin/store.js +0 -1628
- 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
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
import type { DatabaseSync } from 'node:sqlite';
|
|
2
|
+
import type { RsvpValue } from '../content/rsvp.ts';
|
|
3
|
+
import type { ConversationWrite } from './conversation.ts';
|
|
4
|
+
import type { ListPageOptions } from './rows.ts';
|
|
5
|
+
/** Where a comment came from. */
|
|
6
|
+
export declare const COMMENT_SOURCES: readonly ['comment', 'webmention', 'activitypub'];
|
|
7
|
+
/**
|
|
8
|
+
* One of {@link COMMENT_SOURCES}.
|
|
9
|
+
*
|
|
10
|
+
* `comment` is the form under the post. `webmention` is another site's post
|
|
11
|
+
* pointing at this one (TASK-51), which lands in the same file with the same
|
|
12
|
+
* shape and is told apart only by this. `activitypub` is a fediverse reply or
|
|
13
|
+
* reaction a site received before it ran Geekity, brought across by an import:
|
|
14
|
+
* one this site receives itself is logged in the inbox instead.
|
|
15
|
+
*/
|
|
16
|
+
export type CommentSource = (typeof COMMENT_SOURCES)[number];
|
|
17
|
+
/** What a comment is: something written, or a wordless pointer at the post. */
|
|
18
|
+
export declare const COMMENT_KINDS: readonly ['reply', 'like', 'boost', 'mention', 'repost'];
|
|
19
|
+
/**
|
|
20
|
+
* One of {@link COMMENT_KINDS}. The same five a conversation knows.
|
|
21
|
+
*
|
|
22
|
+
* `reply`, `like` and `boost` are the fediverse's three. `repost` and
|
|
23
|
+
* `mention` are the webmention vocabulary's two extra: a repost is a boost by
|
|
24
|
+
* another name and is shown with them, and a mention is the one thing neither
|
|
25
|
+
* of the others is — somebody's page pointing at this one without answering
|
|
26
|
+
* it (TASK-51).
|
|
27
|
+
*/
|
|
28
|
+
export type CommentKind = (typeof COMMENT_KINDS)[number];
|
|
29
|
+
/** Where a comment stands with the moderator. */
|
|
30
|
+
export declare const COMMENT_STATUSES: readonly ['pending', 'approved', 'spam'];
|
|
31
|
+
/**
|
|
32
|
+
* One of {@link COMMENT_STATUSES}.
|
|
33
|
+
*
|
|
34
|
+
* `pending` is waiting for somebody to look at it, and is the state almost
|
|
35
|
+
* every comment starts in; `approved` is on the page and in the feeds; `spam`
|
|
36
|
+
* is kept rather than deleted, so a checker can be told it was wrong and so a
|
|
37
|
+
* mistake can be undone.
|
|
38
|
+
*/
|
|
39
|
+
export type CommentStatus = (typeof COMMENT_STATUSES)[number];
|
|
40
|
+
/** What a comment can have had removed from it for privacy (TASK-135). */
|
|
41
|
+
export declare const REDACTED_FIELDS: readonly ['email', 'addressHash', 'author'];
|
|
42
|
+
/**
|
|
43
|
+
* One of {@link REDACTED_FIELDS}.
|
|
44
|
+
*
|
|
45
|
+
* `email` and `addressHash` are what the retention sweep removes once they
|
|
46
|
+
* have outlived the site's periods. `author` is an erasure on request: the
|
|
47
|
+
* name, website, picture and email all went at once.
|
|
48
|
+
*/
|
|
49
|
+
export type RedactedField = (typeof REDACTED_FIELDS)[number];
|
|
50
|
+
/** Who wrote a comment, as much as the site knows. */
|
|
51
|
+
export interface CommentAuthor {
|
|
52
|
+
/** The name they gave, which is what the page shows. */
|
|
53
|
+
name: string;
|
|
54
|
+
/** Their website, or `null`. Shown, and marked `nofollow ugc` like any link. */
|
|
55
|
+
url: string | null;
|
|
56
|
+
/**
|
|
57
|
+
* Their email, or `null`. **Never shown**: it is here for the moderator, for
|
|
58
|
+
* the auto-approval rule, and for the spam checker.
|
|
59
|
+
*/
|
|
60
|
+
email: string | null;
|
|
61
|
+
/**
|
|
62
|
+
* Their avatar, or `null`.
|
|
63
|
+
*
|
|
64
|
+
* A webmention has one out of the `u-photo` of the source page's `h-card`
|
|
65
|
+
* (TASK-51), and an imported fediverse comment its actor's icon (TASK-338).
|
|
66
|
+
* A form asks for no picture: one it did ask for would be a stranger's file
|
|
67
|
+
* on somebody else's page. The page serves it through the avatar cache.
|
|
68
|
+
*/
|
|
69
|
+
avatar: string | null;
|
|
70
|
+
}
|
|
71
|
+
/** What a comment says, in both the forms the site keeps. */
|
|
72
|
+
export interface CommentContent {
|
|
73
|
+
/** What was typed, which is what a person wrote and the source of truth. */
|
|
74
|
+
markdown: string;
|
|
75
|
+
/** {@link CommentContent.markdown} through the restricted profile. */
|
|
76
|
+
html: string;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* One comment, as its post's file under `content/_data/comments/` holds it.
|
|
80
|
+
*
|
|
81
|
+
* The shape is deliberately wider than a form submission. A webmention
|
|
82
|
+
* (TASK-51) is somebody else's post pointing at this one: it has a `url` and no
|
|
83
|
+
* email, it may be a like rather than a reply, and it belongs in the same file
|
|
84
|
+
* and the same thread. So every entry says its `source` and its `kind`, and
|
|
85
|
+
* nothing assumes a person filled in a form.
|
|
86
|
+
*/
|
|
87
|
+
export interface CommentRecord {
|
|
88
|
+
/** Its name, unique across the site, and what a reply puts in `inReplyTo`. */
|
|
89
|
+
id: string;
|
|
90
|
+
/** Where it came from. */
|
|
91
|
+
source: CommentSource;
|
|
92
|
+
/** What it is. */
|
|
93
|
+
kind: CommentKind;
|
|
94
|
+
/** Where it stands with the moderator. */
|
|
95
|
+
status: CommentStatus;
|
|
96
|
+
/** Who wrote it. */
|
|
97
|
+
author: CommentAuthor;
|
|
98
|
+
/** What it says. */
|
|
99
|
+
content: CommentContent;
|
|
100
|
+
/** When it was submitted, as an ISO 8601 instant. */
|
|
101
|
+
submitted: string;
|
|
102
|
+
/**
|
|
103
|
+
* A salted hash of the address it came from, or `null`.
|
|
104
|
+
*
|
|
105
|
+
* The address itself is not kept: the file is published with the site and
|
|
106
|
+
* goes into git, and an IP address there would be a reader's home written
|
|
107
|
+
* into a public repository. The hash is enough to see that two comments came
|
|
108
|
+
* from one place, which is what a moderator is actually asking.
|
|
109
|
+
*/
|
|
110
|
+
addressHash: string | null;
|
|
111
|
+
/** The comment it answers, or `null` for one answering the post itself. */
|
|
112
|
+
inReplyTo: string | null;
|
|
113
|
+
/**
|
|
114
|
+
* Where it lives when it lives somewhere else: the source page of a
|
|
115
|
+
* webmention, and `null` for a comment written on this site.
|
|
116
|
+
*
|
|
117
|
+
* It is what a later webmention from the same page is recognised by, which
|
|
118
|
+
* is how one updates the comment it made before instead of adding a second,
|
|
119
|
+
* and it is where the thread's permalink points for an entry this site did
|
|
120
|
+
* not host.
|
|
121
|
+
*/
|
|
122
|
+
url: string | null;
|
|
123
|
+
/**
|
|
124
|
+
* Whether whoever wrote it asked to hear about replies to it (TASK-55).
|
|
125
|
+
*
|
|
126
|
+
* Only ever true for a comment that carries an `author.email`, because there
|
|
127
|
+
* would be nowhere to send it otherwise, and only ever set by somebody
|
|
128
|
+
* ticking the box on the form — a webmention has nobody to ask. What it buys
|
|
129
|
+
* is one message when a reply to this comment is approved, carrying an
|
|
130
|
+
* unsubscribe link that needs no login.
|
|
131
|
+
*/
|
|
132
|
+
notify: boolean;
|
|
133
|
+
/**
|
|
134
|
+
* What was removed from it for privacy, in the order {@link REDACTED_FIELDS}
|
|
135
|
+
* lists them, when anything was (TASK-135). Absent rather than empty otherwise, so the files of a site
|
|
136
|
+
* that has never swept stay byte for byte what they were.
|
|
137
|
+
*
|
|
138
|
+
* It is what tells an email that was taken away from one that was never
|
|
139
|
+
* given: an author whose email was removed must not match the auto-approval
|
|
140
|
+
* rule the way an author who gave none does, or anybody typing their name
|
|
141
|
+
* would walk past the queue.
|
|
142
|
+
*/
|
|
143
|
+
redacted?: readonly RedactedField[];
|
|
144
|
+
/**
|
|
145
|
+
* What a reply that is an RSVP says (TASK-198): the `p-rsvp` of the page a
|
|
146
|
+
* webmention came from. Absent for every other comment, so the files of a
|
|
147
|
+
* site that has had none stay byte for byte what they were.
|
|
148
|
+
*/
|
|
149
|
+
rsvp?: RsvpValue;
|
|
150
|
+
/**
|
|
151
|
+
* The page whose entry carried it, for a webmention reply read out of
|
|
152
|
+
* another webmention's source rather than sent on its own (a salmention,
|
|
153
|
+
* TASK-320). Absent for every other comment.
|
|
154
|
+
*/
|
|
155
|
+
via?: string;
|
|
156
|
+
/**
|
|
157
|
+
* Whether it was imported from another system (TASK-336), the word a
|
|
158
|
+
* migrated post uses. It was published before the site came here, so it is
|
|
159
|
+
* shown in its thread and carried by no feed. Absent for every other comment.
|
|
160
|
+
*/
|
|
161
|
+
migrated?: true;
|
|
162
|
+
/**
|
|
163
|
+
* The name it has where it was first published, for a migrated comment
|
|
164
|
+
* that has one: a fediverse note or activity id, or a webmention's source.
|
|
165
|
+
* What the feeds call it when a native reply answers it, and what a later
|
|
166
|
+
* delivery of the same thing is recognised by. Absent for every other comment.
|
|
167
|
+
*/
|
|
168
|
+
origin?: string;
|
|
169
|
+
/**
|
|
170
|
+
* The site user who wrote it, by username, for a comment written by
|
|
171
|
+
* somebody signed in to the system it was imported from (TASK-337). The
|
|
172
|
+
* thread names them as it names their reply posts. Absent for every other
|
|
173
|
+
* comment.
|
|
174
|
+
*/
|
|
175
|
+
user?: string;
|
|
176
|
+
/**
|
|
177
|
+
* The fediverse actor who wrote it, by id, for a migrated fediverse comment
|
|
178
|
+
* whose actor the export named (TASK-338). What tells their like here from
|
|
179
|
+
* the same person's like delivered since, whatever profile page each names.
|
|
180
|
+
* Absent for every other comment.
|
|
181
|
+
*/
|
|
182
|
+
actor?: string;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* What a comment brought from the system it was imported from, as a record
|
|
186
|
+
* carries it: each of {@link CommentRecord.migrated}, `origin`, `user` and
|
|
187
|
+
* `actor` present only when set.
|
|
188
|
+
*/
|
|
189
|
+
export declare function importedFields(fields: {
|
|
190
|
+
readonly migrated?: boolean | null | undefined;
|
|
191
|
+
readonly origin?: string | null | undefined;
|
|
192
|
+
readonly user?: string | null | undefined;
|
|
193
|
+
readonly actor?: string | null | undefined;
|
|
194
|
+
}): Pick<CommentRecord, 'migrated' | 'origin' | 'user' | 'actor'>;
|
|
195
|
+
/** A comment's {@link CommentRecord.rsvp} as a record carries it: present only when there is one. */
|
|
196
|
+
export declare function rsvpField(rsvp: RsvpValue | undefined): Pick<CommentRecord, 'rsvp'>;
|
|
197
|
+
/** A comment's {@link CommentRecord.via} as a record carries it: present only when there is one. */
|
|
198
|
+
export declare function viaField(via: string | null | undefined): Pick<CommentRecord, 'via'>;
|
|
199
|
+
/**
|
|
200
|
+
* A {@link CommentRecord} with the post it is on.
|
|
201
|
+
*
|
|
202
|
+
* The file it lives in is named after the post's slug and records the post's
|
|
203
|
+
* permalink, so both are facts of the file rather than of the entry; the index
|
|
204
|
+
* carries them on the row because a query by id has no file to read them from.
|
|
205
|
+
*/
|
|
206
|
+
export interface PostComment extends CommentRecord {
|
|
207
|
+
/** The post's slug, which names the file the comment lives in. */
|
|
208
|
+
slug: string;
|
|
209
|
+
/** That post's permalink, for the moderation screen and the feeds. */
|
|
210
|
+
permalink: string;
|
|
211
|
+
}
|
|
212
|
+
/** How {@link CommentStore.listComments} narrows and pages. */
|
|
213
|
+
export interface ListCommentsOptions extends ListPageOptions {
|
|
214
|
+
/** Only comments at this status. Every status when it is not given. */
|
|
215
|
+
status?: CommentStatus | undefined;
|
|
216
|
+
}
|
|
217
|
+
export interface CommentStore {
|
|
218
|
+
/** One post's comments, oldest first, whatever status they are at. */
|
|
219
|
+
listCommentsFor(slug: string): PostComment[];
|
|
220
|
+
/**
|
|
221
|
+
* Comments across the site, newest first, optionally of one status and one
|
|
222
|
+
* page of them. What the moderation screen and the site-wide feed read.
|
|
223
|
+
*/
|
|
224
|
+
listComments(options: ListCommentsOptions): PostComment[];
|
|
225
|
+
/** One comment by id, or `undefined`. */
|
|
226
|
+
getComment(id: string): PostComment | undefined;
|
|
227
|
+
/** The comments whose `url` is this one, whatever their status (TASK-300). */
|
|
228
|
+
listCommentsAt(url: string): PostComment[];
|
|
229
|
+
/** How many comments stand at each status. What the dashboard shows. */
|
|
230
|
+
countCommentsByStatus(): Record<CommentStatus, number>;
|
|
231
|
+
/**
|
|
232
|
+
* Whether this name and email have had a comment approved before.
|
|
233
|
+
*
|
|
234
|
+
* WordPress's rule, and the whole of the auto-approval decision: somebody a
|
|
235
|
+
* moderator has already let through does not queue again. Both have to
|
|
236
|
+
* match, so a stranger typing a regular's name is still held.
|
|
237
|
+
*/
|
|
238
|
+
hasApprovedAuthor(name: string, email: string | null): boolean;
|
|
239
|
+
/** Store a comment, replacing whatever was known about that id. */
|
|
240
|
+
putComment(comment: PostComment): PostComment;
|
|
241
|
+
/** Forget a comment. Returns `false` when there was nothing to forget. */
|
|
242
|
+
deleteComment(id: string): boolean;
|
|
243
|
+
/**
|
|
244
|
+
* Make the comment index say exactly this, in one transaction.
|
|
245
|
+
*
|
|
246
|
+
* What a rebuild from `content/_data/comments/` calls (decision-9): the
|
|
247
|
+
* files are the source, so a row they do not carry is a comment that should
|
|
248
|
+
* not be on the page. Nothing outside a rebuild should reach for it.
|
|
249
|
+
*/
|
|
250
|
+
replaceComments(comments: readonly PostComment[]): void;
|
|
251
|
+
}
|
|
252
|
+
export declare function openCommentStore(db: DatabaseSync, written: (change: ConversationWrite) => void): CommentStore;
|
|
253
|
+
//# sourceMappingURL=comments.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"comments.d.ts","sourceRoot":"","sources":["../../src/store/comments.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
import { rsvpValue } from '../content/rsvp.js';
|
|
2
|
+
import { countByStatus, inTransaction, NO_LIMIT, nullableText, oneOf } from './rows.js';
|
|
3
|
+
/** Where a comment came from. */
|
|
4
|
+
export const COMMENT_SOURCES = ['comment', 'webmention', 'activitypub'];
|
|
5
|
+
/** What a comment is: something written, or a wordless pointer at the post. */
|
|
6
|
+
export const COMMENT_KINDS = ['reply', 'like', 'boost', 'mention', 'repost'];
|
|
7
|
+
/** Where a comment stands with the moderator. */
|
|
8
|
+
export const COMMENT_STATUSES = ['pending', 'approved', 'spam'];
|
|
9
|
+
/** What a comment can have had removed from it for privacy (TASK-135). */
|
|
10
|
+
export const REDACTED_FIELDS = ['email', 'addressHash', 'author'];
|
|
11
|
+
/**
|
|
12
|
+
* What a comment brought from the system it was imported from, as a record
|
|
13
|
+
* carries it: each of {@link CommentRecord.migrated}, `origin`, `user` and
|
|
14
|
+
* `actor` present only when set.
|
|
15
|
+
*/
|
|
16
|
+
export function importedFields(fields) {
|
|
17
|
+
const { migrated, origin, user, actor } = fields;
|
|
18
|
+
return {
|
|
19
|
+
...(migrated === true ? { migrated: true } : {}),
|
|
20
|
+
...(origin ? { origin } : {}),
|
|
21
|
+
...(user ? { user } : {}),
|
|
22
|
+
...(actor ? { actor } : {}),
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/** A comment's {@link CommentRecord.rsvp} as a record carries it: present only when there is one. */
|
|
26
|
+
export function rsvpField(rsvp) {
|
|
27
|
+
return rsvp === undefined ? {} : { rsvp };
|
|
28
|
+
}
|
|
29
|
+
/** A comment's {@link CommentRecord.via} as a record carries it: present only when there is one. */
|
|
30
|
+
export function viaField(via) {
|
|
31
|
+
return via === undefined || via === null || via === '' ? {} : { via };
|
|
32
|
+
}
|
|
33
|
+
export function openCommentStore(db, written) {
|
|
34
|
+
const statements = {
|
|
35
|
+
listCommentsFor: db.prepare(`
|
|
36
|
+
SELECT * FROM comments WHERE slug = ? ORDER BY submitted_at, id
|
|
37
|
+
`),
|
|
38
|
+
commentById: db.prepare('SELECT * FROM comments WHERE id = ?'),
|
|
39
|
+
commentsAt: db.prepare('SELECT * FROM comments WHERE url = ? ORDER BY submitted_at'),
|
|
40
|
+
countCommentsByStatus: db.prepare('SELECT status, COUNT(*) AS count FROM comments GROUP BY status'),
|
|
41
|
+
hasApprovedAuthor: db.prepare(`
|
|
42
|
+
SELECT 1 FROM comments
|
|
43
|
+
WHERE status = 'approved' AND author_name = ? AND author_email IS ?
|
|
44
|
+
AND NOT EXISTS (SELECT 1 FROM json_each(comments.redacted) WHERE value = 'email')
|
|
45
|
+
LIMIT 1
|
|
46
|
+
`),
|
|
47
|
+
putComment: db.prepare(`
|
|
48
|
+
INSERT INTO comments (
|
|
49
|
+
id, slug, permalink, source, kind, status,
|
|
50
|
+
author_name, author_url, author_email,
|
|
51
|
+
markdown, html, submitted_at, address_hash, in_reply_to, url, author_avatar, notify,
|
|
52
|
+
redacted, rsvp, via, migrated, origin, user, actor
|
|
53
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
54
|
+
ON CONFLICT (id) DO UPDATE SET
|
|
55
|
+
slug = excluded.slug,
|
|
56
|
+
permalink = excluded.permalink,
|
|
57
|
+
source = excluded.source,
|
|
58
|
+
kind = excluded.kind,
|
|
59
|
+
status = excluded.status,
|
|
60
|
+
author_name = excluded.author_name,
|
|
61
|
+
author_url = excluded.author_url,
|
|
62
|
+
author_email = excluded.author_email,
|
|
63
|
+
markdown = excluded.markdown,
|
|
64
|
+
html = excluded.html,
|
|
65
|
+
submitted_at = excluded.submitted_at,
|
|
66
|
+
address_hash = excluded.address_hash,
|
|
67
|
+
in_reply_to = excluded.in_reply_to,
|
|
68
|
+
url = excluded.url,
|
|
69
|
+
author_avatar = excluded.author_avatar,
|
|
70
|
+
notify = excluded.notify,
|
|
71
|
+
redacted = excluded.redacted,
|
|
72
|
+
rsvp = excluded.rsvp,
|
|
73
|
+
via = excluded.via,
|
|
74
|
+
migrated = excluded.migrated,
|
|
75
|
+
origin = excluded.origin,
|
|
76
|
+
user = excluded.user,
|
|
77
|
+
actor = excluded.actor
|
|
78
|
+
`),
|
|
79
|
+
deleteComment: db.prepare('DELETE FROM comments WHERE id = ?'),
|
|
80
|
+
clearComments: db.prepare('DELETE FROM comments'),
|
|
81
|
+
};
|
|
82
|
+
return {
|
|
83
|
+
listCommentsFor(slug) {
|
|
84
|
+
return statements.listCommentsFor.all(slug).map(toComment);
|
|
85
|
+
},
|
|
86
|
+
listComments(options = {}) {
|
|
87
|
+
// Prepared here rather than beside the others because the `WHERE` is not
|
|
88
|
+
// fixed: the screen asks for one status and the site-wide feed asks for
|
|
89
|
+
// approved comments across every post.
|
|
90
|
+
const where = options.status === undefined ? '' : 'WHERE status = ?';
|
|
91
|
+
const parameters = options.status === undefined ? [] : [options.status];
|
|
92
|
+
const rows = db
|
|
93
|
+
.prepare(`SELECT * FROM comments ${where}
|
|
94
|
+
ORDER BY submitted_at DESC, id DESC
|
|
95
|
+
LIMIT ? OFFSET ?`)
|
|
96
|
+
.all(...parameters, options.limit ?? NO_LIMIT, options.offset ?? 0);
|
|
97
|
+
return rows.map(toComment);
|
|
98
|
+
},
|
|
99
|
+
getComment(id) {
|
|
100
|
+
const row = statements.commentById.get(id);
|
|
101
|
+
return row === undefined ? undefined : toComment(row);
|
|
102
|
+
},
|
|
103
|
+
listCommentsAt(url) {
|
|
104
|
+
return statements.commentsAt.all(url).map(toComment);
|
|
105
|
+
},
|
|
106
|
+
countCommentsByStatus() {
|
|
107
|
+
const rows = statements.countCommentsByStatus.all();
|
|
108
|
+
return countByStatus(rows, COMMENT_STATUSES, commentStatus);
|
|
109
|
+
},
|
|
110
|
+
hasApprovedAuthor(name, email) {
|
|
111
|
+
// `IS` rather than `=`, so an author who gave no email is matched by the
|
|
112
|
+
// rows that gave none either instead of matching nothing.
|
|
113
|
+
return statements.hasApprovedAuthor.get(name, email) !== undefined;
|
|
114
|
+
},
|
|
115
|
+
putComment(comment) {
|
|
116
|
+
const before = statements.commentById.get(comment.id);
|
|
117
|
+
statements.putComment.run(...commentColumns(comment));
|
|
118
|
+
written({
|
|
119
|
+
kind: 'comment',
|
|
120
|
+
slug: comment.slug,
|
|
121
|
+
id: comment.id,
|
|
122
|
+
approved: comment.status === 'approved' && before?.['status'] !== 'approved',
|
|
123
|
+
});
|
|
124
|
+
return comment;
|
|
125
|
+
},
|
|
126
|
+
deleteComment(id) {
|
|
127
|
+
const row = statements.commentById.get(id);
|
|
128
|
+
const slug = row === undefined ? undefined : String(row['slug']);
|
|
129
|
+
const deleted = statements.deleteComment.run(id).changes > 0;
|
|
130
|
+
if (slug !== undefined)
|
|
131
|
+
written({ kind: 'comment', slug, id, approved: false });
|
|
132
|
+
return deleted;
|
|
133
|
+
},
|
|
134
|
+
replaceComments(comments) {
|
|
135
|
+
inTransaction(db, () => {
|
|
136
|
+
statements.clearComments.run();
|
|
137
|
+
for (const comment of comments) {
|
|
138
|
+
statements.putComment.run(...commentColumns(comment));
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
},
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
function toComment(row) {
|
|
145
|
+
return {
|
|
146
|
+
id: String(row['id']),
|
|
147
|
+
slug: String(row['slug']),
|
|
148
|
+
permalink: String(row['permalink']),
|
|
149
|
+
source: oneOf(row['source'], COMMENT_SOURCES, 'comment'),
|
|
150
|
+
kind: oneOf(row['kind'], COMMENT_KINDS, 'reply'),
|
|
151
|
+
status: commentStatus(row['status']),
|
|
152
|
+
author: {
|
|
153
|
+
name: String(row['author_name']),
|
|
154
|
+
url: nullableText(row['author_url']),
|
|
155
|
+
email: nullableText(row['author_email']),
|
|
156
|
+
avatar: nullableText(row['author_avatar']),
|
|
157
|
+
},
|
|
158
|
+
content: { markdown: String(row['markdown']), html: String(row['html']) },
|
|
159
|
+
submitted: String(row['submitted_at']),
|
|
160
|
+
addressHash: nullableText(row['address_hash']),
|
|
161
|
+
inReplyTo: nullableText(row['in_reply_to']),
|
|
162
|
+
url: nullableText(row['url']),
|
|
163
|
+
notify: Number(row['notify'] ?? 0) === 1,
|
|
164
|
+
...redactedOf(row['redacted']),
|
|
165
|
+
...rsvpField(rsvpValue(row['rsvp'])),
|
|
166
|
+
...viaField(nullableText(row['via'])),
|
|
167
|
+
...importedFields({
|
|
168
|
+
migrated: Number(row['migrated'] ?? 0) === 1,
|
|
169
|
+
origin: nullableText(row['origin']),
|
|
170
|
+
user: nullableText(row['user']),
|
|
171
|
+
actor: nullableText(row['actor']),
|
|
172
|
+
}),
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
/** A comment's {@link CommentRecord.redacted} as its column holds it: JSON, or `NULL`. */
|
|
176
|
+
function redactedColumn(redacted) {
|
|
177
|
+
return redacted === undefined || redacted.length === 0 ? null : JSON.stringify(redacted);
|
|
178
|
+
}
|
|
179
|
+
/** The column read back, as the key a record carries only when something was removed. */
|
|
180
|
+
function redactedOf(value) {
|
|
181
|
+
if (typeof value !== 'string')
|
|
182
|
+
return {};
|
|
183
|
+
let parsed;
|
|
184
|
+
try {
|
|
185
|
+
parsed = JSON.parse(value);
|
|
186
|
+
}
|
|
187
|
+
catch {
|
|
188
|
+
return {};
|
|
189
|
+
}
|
|
190
|
+
const fields = Array.isArray(parsed)
|
|
191
|
+
? REDACTED_FIELDS.filter((field) => parsed.includes(field))
|
|
192
|
+
: [];
|
|
193
|
+
return fields.length === 0 ? {} : { redacted: fields };
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* A stored comment status, or `pending` for one this version does not know.
|
|
197
|
+
*
|
|
198
|
+
* Pending is the safe reading: showing a comment nobody approved is the one
|
|
199
|
+
* mistake a moderation queue cannot make, and the screen is right there for
|
|
200
|
+
* the row.
|
|
201
|
+
*/
|
|
202
|
+
function commentStatus(value) {
|
|
203
|
+
return oneOf(value, COMMENT_STATUSES, 'pending');
|
|
204
|
+
}
|
|
205
|
+
/** A comment as the values of the comments table's columns, in the order `putComment` names them. */
|
|
206
|
+
function commentColumns(comment) {
|
|
207
|
+
return [
|
|
208
|
+
comment.id,
|
|
209
|
+
comment.slug,
|
|
210
|
+
comment.permalink,
|
|
211
|
+
comment.source,
|
|
212
|
+
comment.kind,
|
|
213
|
+
comment.status,
|
|
214
|
+
comment.author.name,
|
|
215
|
+
comment.author.url,
|
|
216
|
+
comment.author.email,
|
|
217
|
+
comment.content.markdown,
|
|
218
|
+
comment.content.html,
|
|
219
|
+
comment.submitted,
|
|
220
|
+
comment.addressHash,
|
|
221
|
+
comment.inReplyTo,
|
|
222
|
+
comment.url,
|
|
223
|
+
comment.author.avatar,
|
|
224
|
+
comment.notify ? 1 : 0,
|
|
225
|
+
redactedColumn(comment.redacted),
|
|
226
|
+
comment.rsvp ?? null,
|
|
227
|
+
comment.via ?? null,
|
|
228
|
+
comment.migrated === true ? 1 : 0,
|
|
229
|
+
comment.origin ?? null,
|
|
230
|
+
comment.user ?? null,
|
|
231
|
+
comment.actor ?? null,
|
|
232
|
+
];
|
|
233
|
+
}
|
|
234
|
+
//# sourceMappingURL=comments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"comments.js","sourceRoot":"","sources":["../../src/store/comments.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What {@link ConversationEvents.onConversationWrite} hears: a comment on the post of
|
|
3
|
+
* that slug, or an activity naming these objects as what it is about or what
|
|
4
|
+
* it answers. `approved` says this write is the one that approved the comment,
|
|
5
|
+
* so it is on the page now and was not before (TASK-333).
|
|
6
|
+
*/
|
|
7
|
+
export type ConversationWrite = {
|
|
8
|
+
readonly kind: 'comment';
|
|
9
|
+
readonly slug: string;
|
|
10
|
+
readonly id: string;
|
|
11
|
+
readonly approved: boolean;
|
|
12
|
+
} | {
|
|
13
|
+
readonly kind: 'activity';
|
|
14
|
+
readonly about: readonly string[];
|
|
15
|
+
};
|
|
16
|
+
export interface ConversationEvents {
|
|
17
|
+
/**
|
|
18
|
+
* Hear about every comment written or forgotten and every activity logged,
|
|
19
|
+
* as it happens (TASK-320). A rebuild of either index is not news and says
|
|
20
|
+
* nothing. Returns the function that stops listening.
|
|
21
|
+
*/
|
|
22
|
+
onConversationWrite(listener: (written: ConversationWrite) => void): () => void;
|
|
23
|
+
}
|
|
24
|
+
export declare function conversationEvents(): {
|
|
25
|
+
events: ConversationEvents;
|
|
26
|
+
written: (change: ConversationWrite) => void;
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=conversation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../src/store/conversation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GACzB;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAC;AAErE,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,mBAAmB,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CACjF;AAED,wBAAgB,kBAAkB,IAAI;IACpC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,OAAO,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAC;CAC9C,CAaA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export function conversationEvents() {
|
|
2
|
+
const listeners = new Set();
|
|
3
|
+
return {
|
|
4
|
+
events: {
|
|
5
|
+
onConversationWrite(listener) {
|
|
6
|
+
listeners.add(listener);
|
|
7
|
+
return () => listeners.delete(listener);
|
|
8
|
+
},
|
|
9
|
+
},
|
|
10
|
+
written(change) {
|
|
11
|
+
for (const listener of listeners)
|
|
12
|
+
listener(change);
|
|
13
|
+
},
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=conversation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation.js","sourceRoot":"","sources":["../../src/store/conversation.ts"],"names":[],"mappings":"AAwBA,MAAM,UAAU,kBAAkB;IAIhC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAwC,CAAC;IAClE,OAAO;QACL,MAAM,EAAE;YACN,mBAAmB,CAAC,QAAQ;gBAC1B,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACxB,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC1C,CAAC;SACF;QACD,OAAO,CAAC,MAAM;YACZ,KAAK,MAAM,QAAQ,IAAI,SAAS;gBAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QACrD,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import type { DatabaseSync } from 'node:sqlite';
|
|
2
|
+
import type { Clock } from '../util/clock.ts';
|
|
3
|
+
/** How one delivery of one activity to one follower ended. */
|
|
4
|
+
export declare const DELIVERY_STATUSES: readonly ['sent', 'queued', 'failed'];
|
|
5
|
+
/**
|
|
6
|
+
* One of {@link DELIVERY_STATUSES}.
|
|
7
|
+
*
|
|
8
|
+
* `sent` is a POST the follower's server accepted. `queued` is one handed to
|
|
9
|
+
* Fedify's outbox queue, which is as much as a site running with a queue can
|
|
10
|
+
* know from the call: the queue retries out of band and does not report back.
|
|
11
|
+
* `failed` is a delivery that threw, with the reason in the row.
|
|
12
|
+
*/
|
|
13
|
+
export type DeliveryStatus = (typeof DELIVERY_STATUSES)[number];
|
|
14
|
+
/**
|
|
15
|
+
* How one attempt to deliver one activity to one recipient ended, and what the
|
|
16
|
+
* activity was.
|
|
17
|
+
*
|
|
18
|
+
* The whole of what SQLite keeps about anything the site has sent (decision-9).
|
|
19
|
+
* No payload goes with it: an activity is rebuilt from the post's file at the
|
|
20
|
+
* moment somebody asks for it to go again, so storing the bytes that went out
|
|
21
|
+
* last time would only be a second, staler answer to the same question. What
|
|
22
|
+
* is left is a cache of outcomes, and a site that deletes its database loses
|
|
23
|
+
* nothing but the record of how yesterday's delivery went.
|
|
24
|
+
*
|
|
25
|
+
* The activity's own columns are here rather than in a table of their own
|
|
26
|
+
* because there is no longer anything else to put in one: they are what the
|
|
27
|
+
* federation screen reads to say what went out and when.
|
|
28
|
+
*/
|
|
29
|
+
export interface Delivery {
|
|
30
|
+
/** The id of the activity that was delivered. */
|
|
31
|
+
readonly activityId: string;
|
|
32
|
+
/** `Create`, `Update` or `Delete`. */
|
|
33
|
+
readonly activityType: string;
|
|
34
|
+
/**
|
|
35
|
+
* The ActivityStreams id of what it was about: a post, or the site's own
|
|
36
|
+
* actor when the profile itself was what moved.
|
|
37
|
+
*/
|
|
38
|
+
readonly objectId: string;
|
|
39
|
+
/**
|
|
40
|
+
* The post's slug when the activity went out, or `null` for an activity
|
|
41
|
+
* about no post — which is what an actor `Update` is.
|
|
42
|
+
*/
|
|
43
|
+
readonly slug: string | null;
|
|
44
|
+
/** Which follower or relay it was delivered to. */
|
|
45
|
+
readonly actorId: string;
|
|
46
|
+
/** The inbox actually used, which is the shared one when the follower has one. */
|
|
47
|
+
readonly inboxId: string;
|
|
48
|
+
/** How it went. */
|
|
49
|
+
readonly status: DeliveryStatus;
|
|
50
|
+
/** Why it failed, or `null`. */
|
|
51
|
+
readonly error: string | null;
|
|
52
|
+
/** When the attempt was made, as an ISO 8601 instant. */
|
|
53
|
+
readonly attemptedAt: string;
|
|
54
|
+
}
|
|
55
|
+
/** A {@link Delivery} before the store has timed it. */
|
|
56
|
+
export type NewDelivery = Omit<Delivery, 'attemptedAt'> & {
|
|
57
|
+
attemptedAt?: string | undefined;
|
|
58
|
+
};
|
|
59
|
+
export interface DeliveryStore {
|
|
60
|
+
/**
|
|
61
|
+
* Record how one delivery to one follower ended, replacing the previous
|
|
62
|
+
* outcome for that pair: the table answers "where does this activity stand
|
|
63
|
+
* with each follower", which a resend moves rather than adds to.
|
|
64
|
+
*/
|
|
65
|
+
recordDelivery(delivery: NewDelivery): Delivery;
|
|
66
|
+
/** Every follower's outcome for one activity, in follower order. */
|
|
67
|
+
listDeliveries(activityId: string): Delivery[];
|
|
68
|
+
/** How many followers this activity stands at each status with. */
|
|
69
|
+
countDeliveriesByStatus(activityId: string): Record<DeliveryStatus, number>;
|
|
70
|
+
/**
|
|
71
|
+
* The most recent delivery to one inbox, whichever activity it carried, or
|
|
72
|
+
* `undefined` when nothing has ever gone there.
|
|
73
|
+
*
|
|
74
|
+
* Keyed by the inbox rather than by the actor because that is what a relay
|
|
75
|
+
* has: it is not a follower, so there is no follower row to look its
|
|
76
|
+
* outcomes up by, and the inbox is the thing the site was told to deliver to.
|
|
77
|
+
*/
|
|
78
|
+
lastDeliveryToInbox(inboxId: string): Delivery | undefined;
|
|
79
|
+
/**
|
|
80
|
+
* The most recent delivery about one object — a post's ActivityStreams id,
|
|
81
|
+
* or the site actor's — or `undefined` when nothing about it has ever gone
|
|
82
|
+
* out.
|
|
83
|
+
*
|
|
84
|
+
* What the federation screen's per-post row is filled in from. Keyed by the
|
|
85
|
+
* object rather than by the activity because a post is a series of
|
|
86
|
+
* activities and the row is about the post: the newest outcome is the one
|
|
87
|
+
* that says where the post currently stands with the fediverse.
|
|
88
|
+
*/
|
|
89
|
+
lastDeliveryToObject(objectId: string): Delivery | undefined;
|
|
90
|
+
}
|
|
91
|
+
export declare function openDeliveryStore(db: DatabaseSync, clock: Clock): DeliveryStore;
|
|
92
|
+
//# sourceMappingURL=deliveries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deliveries.d.ts","sourceRoot":"","sources":["../../src/store/deliveries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAI9C,8DAA8D;AAC9D,eAAO,MAAM,iBAAiB,YAAI,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAU,CAAC;AAEvE;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhE;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,QAAQ;IACvB,iDAAiD;IACjD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,sCAAsC;IACtC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,mDAAmD;IACnD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,kFAAkF;IAClF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,mBAAmB;IACnB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,gCAAgC;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,yDAAyD;IACzD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,wDAAwD;AACxD,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,GAAG;IACxD,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,cAAc,CAAC,QAAQ,EAAE,WAAW,GAAG,QAAQ,CAAC;IAChD,oEAAoE;IACpE,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,EAAE,CAAC;IAC/C,mEAAmE;IACnE,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAC5E;;;;;;;OAOG;IACH,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC3D;;;;;;;;;OASG;IACH,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;CAC9D;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,GAAG,aAAa,CA8E/E"}
|