@geekity/cms 0.31.0 → 0.32.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/admin/components/badge.njk +4 -0
- package/admin/components/fields.njk +41 -24
- package/admin/components/job-status.njk +45 -0
- package/admin/components/setting-fields.njk +38 -0
- package/admin/layouts/settings-page.njk +16 -0
- package/admin/pages/comments/all.njk +1 -2
- package/admin/pages/documents/editor.njk +17 -15
- package/admin/pages/documents/syndication.njk +4 -4
- package/admin/pages/federation/followers.njk +56 -6
- package/admin/pages/federation/settings.njk +1 -1
- package/admin/pages/media/library.njk +52 -3
- package/admin/pages/navigation/menus.njk +2 -2
- package/admin/pages/plugins/screen.njk +5 -46
- package/admin/pages/settings/discussion.njk +76 -47
- package/admin/pages/settings/email.njk +75 -47
- package/admin/pages/settings/general.njk +15 -15
- package/admin/pages/settings/permalinks.njk +8 -8
- package/admin/pages/settings/privacy.njk +6 -6
- package/admin/pages/settings/reading.njk +36 -36
- package/admin/pages/tools/dev-mode.njk +29 -3
- package/admin/pages/tools/export.njk +89 -0
- package/admin/pages/tools/maintenance.njk +51 -0
- package/admin/pages/users/apps.njk +2 -2
- package/admin/pages/users/edit.njk +3 -3
- package/admin/pages/users/new.njk +2 -2
- package/admin/static/admin.css +80 -0
- package/dist/admin/app-activity.d.ts.map +1 -1
- package/dist/admin/app-activity.js +2 -3
- package/dist/admin/app-activity.js.map +1 -1
- package/dist/admin/appearance.d.ts +1 -5
- package/dist/admin/appearance.d.ts.map +1 -1
- package/dist/admin/appearance.js +9 -16
- package/dist/admin/appearance.js.map +1 -1
- package/dist/admin/comments.d.ts.map +1 -1
- package/dist/admin/comments.js +2 -3
- package/dist/admin/comments.js.map +1 -1
- package/dist/admin/confirm-password.d.ts +4 -0
- package/dist/admin/confirm-password.d.ts.map +1 -0
- package/dist/admin/confirm-password.js +11 -0
- package/dist/admin/confirm-password.js.map +1 -0
- package/dist/admin/connected-apps.d.ts.map +1 -1
- package/dist/admin/connected-apps.js +17 -22
- package/dist/admin/connected-apps.js.map +1 -1
- package/dist/admin/dev-mode.d.ts.map +1 -1
- package/dist/admin/dev-mode.js +35 -10
- package/dist/admin/dev-mode.js.map +1 -1
- package/dist/admin/documents.d.ts.map +1 -1
- package/dist/admin/documents.js +22 -10
- package/dist/admin/documents.js.map +1 -1
- package/dist/admin/editor-actions.d.ts.map +1 -1
- package/dist/admin/editor-actions.js +1 -2
- package/dist/admin/editor-actions.js.map +1 -1
- package/dist/admin/editor-layout.js +1 -1
- package/dist/admin/editor-layout.js.map +1 -1
- package/dist/admin/export.d.ts +10 -0
- package/dist/admin/export.d.ts.map +1 -0
- package/dist/admin/export.js +72 -0
- package/dist/admin/export.js.map +1 -0
- package/dist/admin/federation.d.ts +1 -12
- package/dist/admin/federation.d.ts.map +1 -1
- package/dist/admin/federation.js +34 -87
- package/dist/admin/federation.js.map +1 -1
- package/dist/admin/index.d.ts +2 -5
- package/dist/admin/index.d.ts.map +1 -1
- package/dist/admin/index.js +2 -4
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/indieauth-consent.d.ts.map +1 -1
- package/dist/admin/indieauth-consent.js +5 -7
- package/dist/admin/indieauth-consent.js.map +1 -1
- package/dist/admin/job-status.d.ts +25 -0
- package/dist/admin/job-status.d.ts.map +1 -0
- package/dist/admin/job-status.js +53 -0
- package/dist/admin/job-status.js.map +1 -0
- package/dist/admin/legacy-migrations.d.ts.map +1 -1
- package/dist/admin/legacy-migrations.js +7 -6
- package/dist/admin/legacy-migrations.js.map +1 -1
- package/dist/admin/maintenance.d.ts +9 -0
- package/dist/admin/maintenance.d.ts.map +1 -0
- package/dist/admin/maintenance.js +42 -0
- package/dist/admin/maintenance.js.map +1 -0
- package/dist/admin/media.d.ts +4 -1
- package/dist/admin/media.d.ts.map +1 -1
- package/dist/admin/media.js +16 -1
- package/dist/admin/media.js.map +1 -1
- package/dist/admin/menu.d.ts.map +1 -1
- package/dist/admin/menu.js +4 -0
- package/dist/admin/menu.js.map +1 -1
- package/dist/admin/messages.d.ts.map +1 -1
- package/dist/admin/messages.js +2 -3
- package/dist/admin/messages.js.map +1 -1
- package/dist/admin/navigation.d.ts.map +1 -1
- package/dist/admin/navigation.js +27 -23
- package/dist/admin/navigation.js.map +1 -1
- package/dist/admin/plugins.d.ts.map +1 -1
- package/dist/admin/plugins.js +19 -66
- package/dist/admin/plugins.js.map +1 -1
- package/dist/admin/preview.d.ts.map +1 -1
- package/dist/admin/preview.js +5 -6
- package/dist/admin/preview.js.map +1 -1
- package/dist/admin/recovery.js +2 -2
- package/dist/admin/recovery.js.map +1 -1
- package/dist/admin/routes.d.ts.map +1 -1
- package/dist/admin/routes.js +6 -3
- package/dist/admin/routes.js.map +1 -1
- package/dist/admin/setting-overrides.d.ts +4 -0
- package/dist/admin/setting-overrides.d.ts.map +1 -0
- package/dist/admin/setting-overrides.js +24 -0
- package/dist/admin/setting-overrides.js.map +1 -0
- package/dist/admin/settings-discussion.d.ts +6 -4
- package/dist/admin/settings-discussion.d.ts.map +1 -1
- package/dist/admin/settings-discussion.js +75 -45
- package/dist/admin/settings-discussion.js.map +1 -1
- package/dist/admin/settings-email.d.ts +11 -8
- package/dist/admin/settings-email.d.ts.map +1 -1
- package/dist/admin/settings-email.js +88 -77
- package/dist/admin/settings-email.js.map +1 -1
- package/dist/admin/settings-federation.d.ts +0 -7
- package/dist/admin/settings-federation.d.ts.map +1 -1
- package/dist/admin/settings-federation.js +0 -36
- package/dist/admin/settings-federation.js.map +1 -1
- package/dist/admin/settings-fields.d.ts +32 -0
- package/dist/admin/settings-fields.d.ts.map +1 -0
- package/dist/admin/settings-fields.js +368 -0
- package/dist/admin/settings-fields.js.map +1 -0
- package/dist/admin/settings-general.d.ts.map +1 -1
- package/dist/admin/settings-general.js +10 -19
- package/dist/admin/settings-general.js.map +1 -1
- package/dist/admin/settings-page.d.ts +3 -29
- package/dist/admin/settings-page.d.ts.map +1 -1
- package/dist/admin/settings-page.js +38 -53
- package/dist/admin/settings-page.js.map +1 -1
- package/dist/admin/settings-permalinks.js +2 -2
- package/dist/admin/settings-permalinks.js.map +1 -1
- package/dist/admin/settings-privacy.js +1 -1
- package/dist/admin/settings-privacy.js.map +1 -1
- package/dist/admin/settings-reading.js +13 -13
- package/dist/admin/settings-reading.js.map +1 -1
- package/dist/admin/settings-renderer.d.ts +32 -0
- package/dist/admin/settings-renderer.d.ts.map +1 -0
- package/dist/admin/settings-renderer.js +79 -0
- package/dist/admin/settings-renderer.js.map +1 -0
- package/dist/admin/site-setting-edit.d.ts +4 -0
- package/dist/admin/site-setting-edit.d.ts.map +1 -0
- package/dist/admin/site-setting-edit.js +20 -0
- package/dist/admin/site-setting-edit.js.map +1 -0
- package/dist/admin/taxonomy.d.ts.map +1 -1
- package/dist/admin/taxonomy.js +10 -19
- package/dist/admin/taxonomy.js.map +1 -1
- package/dist/admin/templates.d.ts +2 -0
- package/dist/admin/templates.d.ts.map +1 -1
- package/dist/admin/templates.js +2 -0
- package/dist/admin/templates.js.map +1 -1
- package/dist/admin/users.js +1 -1
- package/dist/admin/users.js.map +1 -1
- package/dist/avatars/avatars.d.ts +0 -2
- package/dist/avatars/avatars.d.ts.map +1 -1
- package/dist/avatars/avatars.js +9 -10
- package/dist/avatars/avatars.js.map +1 -1
- package/dist/avatars/index.d.ts +1 -1
- package/dist/avatars/index.d.ts.map +1 -1
- package/dist/avatars/index.js +1 -1
- package/dist/avatars/index.js.map +1 -1
- package/dist/cache.d.ts +0 -2
- package/dist/cache.d.ts.map +1 -1
- package/dist/cache.js +2 -4
- package/dist/cache.js.map +1 -1
- package/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +500 -86
- package/dist/cli.js.map +1 -1
- package/dist/cms/app.d.ts +1 -1
- package/dist/cms/app.d.ts.map +1 -1
- package/dist/cms/app.js +13 -2
- package/dist/cms/app.js.map +1 -1
- package/dist/cms/boot.d.ts +12 -0
- package/dist/cms/boot.d.ts.map +1 -1
- package/dist/cms/boot.js +37 -16
- package/dist/cms/boot.js.map +1 -1
- package/dist/cms/create.d.ts +24 -0
- package/dist/cms/create.d.ts.map +1 -1
- package/dist/cms/create.js +14 -0
- package/dist/cms/create.js.map +1 -1
- package/dist/cms/services.d.ts +3 -1
- package/dist/cms/services.d.ts.map +1 -1
- package/dist/cms/services.js +83 -26
- package/dist/cms/services.js.map +1 -1
- package/dist/cms/site-records.d.ts.map +1 -1
- package/dist/cms/site-records.js +0 -2
- package/dist/cms/site-records.js.map +1 -1
- package/dist/comments/akismet.d.ts +13 -46
- package/dist/comments/akismet.d.ts.map +1 -1
- package/dist/comments/akismet.js +29 -68
- package/dist/comments/akismet.js.map +1 -1
- package/dist/comments/conversation.d.ts +14 -8
- package/dist/comments/conversation.d.ts.map +1 -1
- package/dist/comments/conversation.js.map +1 -1
- package/dist/comments/index.d.ts +4 -4
- package/dist/comments/index.d.ts.map +1 -1
- package/dist/comments/index.js +3 -3
- package/dist/comments/index.js.map +1 -1
- package/dist/comments/policy.d.ts +23 -26
- package/dist/comments/policy.d.ts.map +1 -1
- package/dist/comments/policy.js +13 -20
- package/dist/comments/policy.js.map +1 -1
- package/dist/comments/records.d.ts +0 -2
- package/dist/comments/records.d.ts.map +1 -1
- package/dist/comments/records.js +2 -3
- package/dist/comments/records.js.map +1 -1
- package/dist/comments/reply-notices.d.ts +5 -6
- package/dist/comments/reply-notices.d.ts.map +1 -1
- package/dist/comments/reply-notices.js +27 -15
- package/dist/comments/reply-notices.js.map +1 -1
- package/dist/comments/reply-post.d.ts.map +1 -1
- package/dist/comments/reply-post.js +2 -3
- package/dist/comments/reply-post.js.map +1 -1
- package/dist/comments/submission.d.ts +0 -2
- package/dist/comments/submission.d.ts.map +1 -1
- package/dist/comments/submission.js +1 -3
- package/dist/comments/submission.js.map +1 -1
- package/dist/config-loader.d.ts.map +1 -1
- package/dist/config-loader.js +2 -1
- package/dist/config-loader.js.map +1 -1
- package/dist/config.d.ts +27 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +5 -1
- package/dist/config.js.map +1 -1
- package/dist/contact/delivery.d.ts +2 -4
- package/dist/contact/delivery.d.ts.map +1 -1
- package/dist/contact/delivery.js +1 -2
- package/dist/contact/delivery.js.map +1 -1
- package/dist/contact/index.d.ts +1 -1
- package/dist/contact/index.d.ts.map +1 -1
- package/dist/contact/index.js +1 -1
- package/dist/contact/index.js.map +1 -1
- package/dist/contact/records.d.ts +0 -2
- package/dist/contact/records.d.ts.map +1 -1
- package/dist/contact/records.js +3 -5
- package/dist/contact/records.js.map +1 -1
- package/dist/content/citation.d.ts +1 -0
- package/dist/content/citation.d.ts.map +1 -1
- package/dist/content/citation.js.map +1 -1
- package/dist/content/document-form.d.ts +3 -1
- package/dist/content/document-form.d.ts.map +1 -1
- package/dist/content/document-form.js.map +1 -1
- package/dist/content/enclosure-form.d.ts.map +1 -1
- package/dist/content/enclosure-form.js +5 -6
- package/dist/content/enclosure-form.js.map +1 -1
- package/dist/content/excerpt.d.ts +1 -0
- package/dist/content/excerpt.d.ts.map +1 -1
- package/dist/content/excerpt.js +3 -0
- package/dist/content/excerpt.js.map +1 -1
- package/dist/content/index.d.ts +3 -3
- package/dist/content/index.d.ts.map +1 -1
- package/dist/content/index.js +2 -2
- package/dist/content/index.js.map +1 -1
- package/dist/content/kept-properties.d.ts +0 -1
- package/dist/content/kept-properties.d.ts.map +1 -1
- package/dist/content/kept-properties.js +2 -2
- package/dist/content/kept-properties.js.map +1 -1
- package/dist/content/locations.d.ts +0 -1
- package/dist/content/locations.d.ts.map +1 -1
- package/dist/content/locations.js +2 -2
- package/dist/content/locations.js.map +1 -1
- package/dist/content/media.d.ts +7 -0
- package/dist/content/media.d.ts.map +1 -1
- package/dist/content/media.js +12 -1
- package/dist/content/media.js.map +1 -1
- package/dist/content/metadata/strip-job.d.ts +16 -0
- package/dist/content/metadata/strip-job.d.ts.map +1 -0
- package/dist/content/metadata/strip-job.js +24 -0
- package/dist/content/metadata/strip-job.js.map +1 -0
- package/dist/content/metadata/sweep.d.ts +13 -1
- package/dist/content/metadata/sweep.d.ts.map +1 -1
- package/dist/content/metadata/sweep.js +47 -25
- package/dist/content/metadata/sweep.js.map +1 -1
- package/dist/content/permalink-file.d.ts +2 -1
- package/dist/content/permalink-file.d.ts.map +1 -1
- package/dist/content/permalink-file.js +3 -3
- package/dist/content/permalink-file.js.map +1 -1
- package/dist/content/photo-form.d.ts +1 -0
- package/dist/content/photo-form.d.ts.map +1 -1
- package/dist/content/photo-form.js +8 -5
- package/dist/content/photo-form.js.map +1 -1
- package/dist/content/photo.d.ts +1 -0
- 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.map +1 -1
- package/dist/content/post-fields.js +5 -9
- package/dist/content/post-fields.js.map +1 -1
- package/dist/content/read-form.d.ts +10 -3
- package/dist/content/read-form.d.ts.map +1 -1
- package/dist/content/read-form.js +67 -9
- package/dist/content/read-form.js.map +1 -1
- package/dist/content/read.d.ts +9 -2
- package/dist/content/read.d.ts.map +1 -1
- package/dist/content/read.js +22 -3
- package/dist/content/read.js.map +1 -1
- package/dist/content/store.d.ts +0 -1
- package/dist/content/store.d.ts.map +1 -1
- package/dist/content/store.js +0 -1
- package/dist/content/store.js.map +1 -1
- package/dist/content/uploads.d.ts +1 -1
- package/dist/content/uploads.d.ts.map +1 -1
- package/dist/content/uploads.js +6 -1
- package/dist/content/uploads.js.map +1 -1
- package/dist/content/write.d.ts +1 -1
- package/dist/content/write.d.ts.map +1 -1
- package/dist/content/write.js +7 -3
- package/dist/content/write.js.map +1 -1
- package/dist/dev-mode.d.ts +4 -26
- package/dist/dev-mode.d.ts.map +1 -1
- package/dist/dev-mode.js +4 -53
- package/dist/dev-mode.js.map +1 -1
- package/dist/export/export-archives.d.ts +29 -0
- package/dist/export/export-archives.d.ts.map +1 -0
- package/dist/export/export-archives.js +88 -0
- package/dist/export/export-archives.js.map +1 -0
- package/dist/export/export-job.d.ts +21 -0
- package/dist/export/export-job.d.ts.map +1 -0
- package/dist/export/export-job.js +63 -0
- package/dist/export/export-job.js.map +1 -0
- package/dist/export/site-export.d.ts +101 -0
- package/dist/export/site-export.d.ts.map +1 -0
- package/dist/export/site-export.js +243 -0
- package/dist/export/site-export.js.map +1 -0
- package/dist/export/site-import.d.ts +75 -0
- package/dist/export/site-import.d.ts.map +1 -0
- package/dist/export/site-import.js +492 -0
- package/dist/export/site-import.js.map +1 -0
- package/dist/exports.d.ts +9 -4
- package/dist/exports.d.ts.map +1 -1
- package/dist/exports.js +3 -1
- package/dist/exports.js.map +1 -1
- package/dist/federation/article.d.ts.map +1 -1
- package/dist/federation/article.js +22 -20
- package/dist/federation/article.js.map +1 -1
- package/dist/federation/backfill.d.ts +3 -1
- package/dist/federation/backfill.d.ts.map +1 -1
- package/dist/federation/backfill.js +5 -3
- package/dist/federation/backfill.js.map +1 -1
- package/dist/federation/cited-post.d.ts +1 -1
- package/dist/federation/cited-post.d.ts.map +1 -1
- package/dist/federation/cited-post.js +1 -1
- package/dist/federation/cited-post.js.map +1 -1
- package/dist/federation/delivery.d.ts +5 -2
- package/dist/federation/delivery.d.ts.map +1 -1
- package/dist/federation/delivery.js +16 -12
- package/dist/federation/delivery.js.map +1 -1
- package/dist/federation/federation.d.ts +7 -7
- package/dist/federation/federation.d.ts.map +1 -1
- package/dist/federation/federation.js +5 -12
- package/dist/federation/federation.js.map +1 -1
- package/dist/federation/handles.d.ts +1 -1
- package/dist/federation/handles.d.ts.map +1 -1
- package/dist/federation/handles.js +1 -1
- package/dist/federation/handles.js.map +1 -1
- package/dist/federation/inbox.js +1 -1
- package/dist/federation/inbox.js.map +1 -1
- package/dist/federation/keys.js +3 -3
- package/dist/federation/keys.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 +1 -1
- package/dist/federation/profiles.js.map +1 -1
- package/dist/federation/queue.d.ts +32 -17
- package/dist/federation/queue.d.ts.map +1 -1
- package/dist/federation/queue.js +173 -39
- package/dist/federation/queue.js.map +1 -1
- package/dist/federation/relays.d.ts +6 -2
- package/dist/federation/relays.d.ts.map +1 -1
- package/dist/federation/relays.js +43 -36
- package/dist/federation/relays.js.map +1 -1
- package/dist/federation/resend-job.d.ts +44 -0
- package/dist/federation/resend-job.d.ts.map +1 -0
- package/dist/federation/resend-job.js +59 -0
- package/dist/federation/resend-job.js.map +1 -0
- package/dist/files/atomic.d.ts +9 -0
- package/dist/files/atomic.d.ts.map +1 -1
- package/dist/files/atomic.js +1 -1
- package/dist/files/atomic.js.map +1 -1
- package/dist/files/data-files.d.ts +104 -0
- package/dist/files/data-files.d.ts.map +1 -0
- package/dist/files/data-files.js +330 -0
- package/dist/files/data-files.js.map +1 -0
- package/dist/files/export-archives.d.ts +12 -0
- package/dist/files/export-archives.d.ts.map +1 -0
- package/dist/files/export-archives.js +67 -0
- package/dist/files/export-archives.js.map +1 -0
- package/dist/files/static-files.d.ts.map +1 -1
- package/dist/files/static-files.js +7 -22
- package/dist/files/static-files.js.map +1 -1
- package/dist/files/tar.d.ts +29 -0
- package/dist/files/tar.d.ts.map +1 -0
- package/dist/files/tar.js +206 -0
- package/dist/files/tar.js.map +1 -0
- package/dist/files/upload-types.d.ts +81 -0
- package/dist/files/upload-types.d.ts.map +1 -0
- package/dist/files/upload-types.js +234 -0
- package/dist/files/upload-types.js.map +1 -0
- package/dist/forms/protection.d.ts +0 -8
- package/dist/forms/protection.d.ts.map +1 -1
- package/dist/forms/protection.js +2 -10
- package/dist/forms/protection.js.map +1 -1
- package/dist/images/icons.d.ts.map +1 -1
- package/dist/images/icons.js +2 -0
- package/dist/images/icons.js.map +1 -1
- package/dist/images/index.d.ts +1 -1
- package/dist/images/index.d.ts.map +1 -1
- package/dist/images/index.js +1 -1
- package/dist/images/index.js.map +1 -1
- package/dist/images/markup.d.ts +4 -1
- package/dist/images/markup.d.ts.map +1 -1
- package/dist/images/markup.js +10 -6
- package/dist/images/markup.js.map +1 -1
- package/dist/images/paths.d.ts +1 -4
- package/dist/images/paths.d.ts.map +1 -1
- package/dist/images/paths.js +6 -12
- package/dist/images/paths.js.map +1 -1
- package/dist/images/variants.d.ts +4 -2
- package/dist/images/variants.d.ts.map +1 -1
- package/dist/images/variants.js +21 -21
- package/dist/images/variants.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/indexnow.d.ts +4 -2
- package/dist/indexnow.d.ts.map +1 -1
- package/dist/indexnow.js +32 -20
- package/dist/indexnow.js.map +1 -1
- package/dist/indieauth/tokens.d.ts +0 -2
- package/dist/indieauth/tokens.d.ts.map +1 -1
- package/dist/indieauth/tokens.js +2 -4
- package/dist/indieauth/tokens.js.map +1 -1
- package/dist/jobs/file-records.d.ts +13 -0
- package/dist/jobs/file-records.d.ts.map +1 -0
- package/dist/jobs/file-records.js +104 -0
- package/dist/jobs/file-records.js.map +1 -0
- package/dist/jobs/in-process.d.ts +10 -0
- package/dist/jobs/in-process.d.ts.map +1 -0
- package/dist/jobs/in-process.js +45 -0
- package/dist/jobs/in-process.js.map +1 -0
- package/dist/jobs/lock-file.d.ts +13 -0
- package/dist/jobs/lock-file.d.ts.map +1 -0
- package/dist/jobs/lock-file.js +107 -0
- package/dist/jobs/lock-file.js.map +1 -0
- package/dist/jobs/processes.d.ts +11 -0
- package/dist/jobs/processes.d.ts.map +1 -0
- package/dist/jobs/processes.js +50 -0
- package/dist/jobs/processes.js.map +1 -0
- package/dist/jobs/queue.d.ts +18 -0
- package/dist/jobs/queue.d.ts.map +1 -0
- package/dist/jobs/queue.js +220 -0
- package/dist/jobs/queue.js.map +1 -0
- package/dist/jobs/types.d.ts +159 -0
- package/dist/jobs/types.d.ts.map +1 -0
- package/dist/jobs/types.js +22 -0
- package/dist/jobs/types.js.map +1 -0
- package/dist/mail/index.d.ts +0 -2
- package/dist/mail/index.d.ts.map +1 -1
- package/dist/mail/index.js +0 -1
- package/dist/mail/index.js.map +1 -1
- package/dist/maintenance.d.ts +5 -42
- package/dist/maintenance.d.ts.map +1 -1
- package/dist/maintenance.js +4 -67
- package/dist/maintenance.js.map +1 -1
- package/dist/media/library.d.ts +1 -1
- package/dist/media/library.d.ts.map +1 -1
- package/dist/media/library.js +4 -1
- package/dist/media/library.js.map +1 -1
- package/dist/media/uploads.d.ts +1 -1
- package/dist/media/uploads.d.ts.map +1 -1
- package/dist/media/uploads.js +1 -1
- package/dist/media/uploads.js.map +1 -1
- package/dist/micropub/endpoint.js +10 -10
- package/dist/micropub/endpoint.js.map +1 -1
- package/dist/micropub/media.d.ts +0 -2
- package/dist/micropub/media.d.ts.map +1 -1
- package/dist/micropub/media.js +5 -7
- package/dist/micropub/media.js.map +1 -1
- package/dist/notifications/comments.d.ts +4 -2
- package/dist/notifications/comments.d.ts.map +1 -1
- package/dist/notifications/comments.js +77 -65
- package/dist/notifications/comments.js.map +1 -1
- package/dist/notifications/digest.d.ts +2 -4
- package/dist/notifications/digest.d.ts.map +1 -1
- package/dist/notifications/digest.js +9 -10
- package/dist/notifications/digest.js.map +1 -1
- package/dist/notifications/index.d.ts +3 -3
- package/dist/notifications/index.d.ts.map +1 -1
- package/dist/notifications/index.js +3 -3
- package/dist/notifications/index.js.map +1 -1
- package/dist/notifications/mail-service.d.ts +10 -8
- package/dist/notifications/mail-service.d.ts.map +1 -1
- package/dist/notifications/mail-service.js +70 -70
- package/dist/notifications/mail-service.js.map +1 -1
- package/dist/notifications/optouts.d.ts +0 -2
- package/dist/notifications/optouts.d.ts.map +1 -1
- package/dist/notifications/optouts.js +2 -4
- package/dist/notifications/optouts.js.map +1 -1
- package/dist/notifications/tokens.d.ts +0 -2
- package/dist/notifications/tokens.d.ts.map +1 -1
- package/dist/notifications/tokens.js +2 -28
- package/dist/notifications/tokens.js.map +1 -1
- package/dist/notify.d.ts +4 -2
- package/dist/notify.d.ts.map +1 -1
- package/dist/notify.js +27 -15
- package/dist/notify.js.map +1 -1
- package/dist/plugin.d.ts +36 -16
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +1 -1
- package/dist/plugin.js.map +1 -1
- package/dist/plugins/changes.d.ts +0 -1
- package/dist/plugins/changes.d.ts.map +1 -1
- package/dist/plugins/changes.js +2 -3
- package/dist/plugins/changes.js.map +1 -1
- package/dist/plugins/data.d.ts +19 -0
- package/dist/plugins/data.d.ts.map +1 -0
- package/dist/plugins/data.js +117 -0
- package/dist/plugins/data.js.map +1 -0
- package/dist/plugins/enabled.d.ts +1 -13
- package/dist/plugins/enabled.d.ts.map +1 -1
- package/dist/plugins/enabled.js +11 -23
- package/dist/plugins/enabled.js.map +1 -1
- package/dist/plugins/install.d.ts +1 -1
- package/dist/plugins/install.d.ts.map +1 -1
- package/dist/plugins/install.js +7 -42
- package/dist/plugins/install.js.map +1 -1
- package/dist/plugins/migrate-settings.d.ts +7 -0
- package/dist/plugins/migrate-settings.d.ts.map +1 -0
- package/dist/plugins/migrate-settings.js +41 -0
- package/dist/plugins/migrate-settings.js.map +1 -0
- package/dist/plugins/registry.d.ts +10 -14
- package/dist/plugins/registry.d.ts.map +1 -1
- package/dist/plugins/registry.js +56 -36
- package/dist/plugins/registry.js.map +1 -1
- package/dist/plugins/settings.d.ts +5 -57
- package/dist/plugins/settings.d.ts.map +1 -1
- package/dist/plugins/settings.js +47 -180
- package/dist/plugins/settings.js.map +1 -1
- package/dist/plugins/site.d.ts +2 -1
- package/dist/plugins/site.d.ts.map +1 -1
- package/dist/plugins/site.js +5 -5
- package/dist/plugins/site.js.map +1 -1
- package/dist/privacy/retention.d.ts +4 -0
- package/dist/privacy/retention.d.ts.map +1 -1
- package/dist/privacy/retention.js +12 -5
- package/dist/privacy/retention.js.map +1 -1
- package/dist/settings/akismet.d.ts +9 -0
- package/dist/settings/akismet.d.ts.map +1 -0
- package/dist/settings/akismet.js +46 -0
- package/dist/settings/akismet.js.map +1 -0
- package/dist/settings/declare.d.ts +15 -0
- package/dist/settings/declare.d.ts.map +1 -0
- package/dist/settings/declare.js +20 -0
- package/dist/settings/declare.js.map +1 -0
- package/dist/settings/dev-mode.d.ts +29 -0
- package/dist/settings/dev-mode.d.ts.map +1 -0
- package/dist/settings/dev-mode.js +77 -0
- package/dist/settings/dev-mode.js.map +1 -0
- package/dist/settings/kinds.d.ts +13 -0
- package/dist/settings/kinds.d.ts.map +1 -0
- package/dist/settings/kinds.js +108 -0
- package/dist/settings/kinds.js.map +1 -0
- package/dist/settings/mail.d.ts +10 -0
- package/dist/settings/mail.d.ts.map +1 -0
- package/dist/settings/mail.js +92 -0
- package/dist/settings/mail.js.map +1 -0
- package/dist/settings/maintenance.d.ts +6 -0
- package/dist/settings/maintenance.d.ts.map +1 -0
- package/dist/settings/maintenance.js +33 -0
- package/dist/settings/maintenance.js.map +1 -0
- package/dist/settings/names.d.ts +7 -0
- package/dist/settings/names.d.ts.map +1 -0
- package/dist/settings/names.js +31 -0
- package/dist/settings/names.js.map +1 -0
- package/dist/settings/presence.d.ts +2 -0
- package/dist/settings/presence.d.ts.map +1 -0
- package/dist/settings/presence.js +7 -0
- package/dist/settings/presence.js.map +1 -0
- package/dist/settings/registry.d.ts +14 -0
- package/dist/settings/registry.d.ts.map +1 -0
- package/dist/settings/registry.js +369 -0
- package/dist/settings/registry.js.map +1 -0
- package/dist/settings/types.d.ts +176 -0
- package/dist/settings/types.d.ts.map +1 -0
- package/dist/settings/types.js +2 -0
- package/dist/settings/types.js.map +1 -0
- package/dist/site/namespace.d.ts +88 -0
- package/dist/site/namespace.d.ts.map +1 -0
- package/dist/site/namespace.js +471 -0
- package/dist/site/namespace.js.map +1 -0
- package/dist/site/setting-rows.d.ts +9 -10
- package/dist/site/setting-rows.d.ts.map +1 -1
- package/dist/site/setting-rows.js +109 -228
- package/dist/site/setting-rows.js.map +1 -1
- package/dist/site/settings-form.d.ts.map +1 -1
- package/dist/site/settings-form.js +6 -10
- package/dist/site/settings-form.js.map +1 -1
- package/dist/site/settings.d.ts +6 -322
- package/dist/site/settings.d.ts.map +1 -1
- package/dist/site/settings.js +13 -76
- package/dist/site/settings.js.map +1 -1
- package/dist/site/site-json.d.ts +0 -31
- package/dist/site/site-json.d.ts.map +1 -1
- package/dist/site/site-json.js +5 -49
- package/dist/site/site-json.js.map +1 -1
- package/dist/site/users.d.ts +0 -9
- package/dist/site/users.d.ts.map +1 -1
- package/dist/site/users.js +2 -11
- package/dist/site/users.js.map +1 -1
- package/dist/store/queue-database.d.ts +11 -0
- package/dist/store/queue-database.d.ts.map +1 -0
- package/dist/store/queue-database.js +39 -0
- package/dist/store/queue-database.js.map +1 -0
- package/dist/supervisor/control.d.ts +1 -0
- package/dist/supervisor/control.d.ts.map +1 -1
- package/dist/supervisor/control.js +10 -0
- package/dist/supervisor/control.js.map +1 -1
- package/dist/supervisor/primary.d.ts.map +1 -1
- package/dist/supervisor/primary.js +15 -3
- package/dist/supervisor/primary.js.map +1 -1
- package/dist/testing.d.ts +1 -1
- package/dist/testing.d.ts.map +1 -1
- package/dist/testing.js +1 -1
- package/dist/testing.js.map +1 -1
- package/dist/theme/site-data.d.ts +1 -1
- package/dist/theme/site-data.d.ts.map +1 -1
- package/dist/theme/site-data.js.map +1 -1
- package/dist/web/asset-routes.d.ts +6 -2
- package/dist/web/asset-routes.d.ts.map +1 -1
- package/dist/web/asset-routes.js +12 -4
- package/dist/web/asset-routes.js.map +1 -1
- package/dist/web/comment-routes.d.ts.map +1 -1
- package/dist/web/comment-routes.js +4 -4
- package/dist/web/comment-routes.js.map +1 -1
- package/dist/web/contact-routes.js +1 -1
- package/dist/web/contact-routes.js.map +1 -1
- package/dist/web/context.d.ts +5 -0
- package/dist/web/context.d.ts.map +1 -1
- package/dist/web/context.js +9 -4
- package/dist/web/context.js.map +1 -1
- package/dist/web/conversation.d.ts +1 -1
- package/dist/web/conversation.d.ts.map +1 -1
- package/dist/web/conversation.js +13 -16
- package/dist/web/conversation.js.map +1 -1
- package/dist/web/document-page.d.ts.map +1 -1
- package/dist/web/document-page.js +5 -4
- package/dist/web/document-page.js.map +1 -1
- package/dist/web/document-site.d.ts +1 -1
- package/dist/web/document-site.d.ts.map +1 -1
- package/dist/web/document-site.js +2 -1
- package/dist/web/document-site.js.map +1 -1
- package/dist/web/embed.js +1 -1
- package/dist/web/embed.js.map +1 -1
- package/dist/web/env.d.ts +9 -0
- package/dist/web/env.d.ts.map +1 -1
- package/dist/web/federation-routes.d.ts.map +1 -1
- package/dist/web/federation-routes.js +3 -1
- package/dist/web/federation-routes.js.map +1 -1
- package/dist/web/feed-item.js +1 -1
- package/dist/web/feed-item.js.map +1 -1
- package/dist/web/feed-routes.d.ts +3 -4
- package/dist/web/feed-routes.d.ts.map +1 -1
- package/dist/web/feed-routes.js +17 -15
- package/dist/web/feed-routes.js.map +1 -1
- package/dist/web/health.js +1 -1
- package/dist/web/health.js.map +1 -1
- package/dist/web/index.d.ts +1 -1
- package/dist/web/index.d.ts.map +1 -1
- package/dist/web/index.js.map +1 -1
- package/dist/web/indieauth-activity-log.d.ts +0 -2
- package/dist/web/indieauth-activity-log.d.ts.map +1 -1
- package/dist/web/indieauth-activity-log.js +2 -4
- package/dist/web/indieauth-activity-log.js.map +1 -1
- package/dist/web/indieauth-bearer.js +2 -2
- package/dist/web/indieauth-bearer.js.map +1 -1
- package/dist/web/indieauth-discovery.d.ts +0 -4
- package/dist/web/indieauth-discovery.d.ts.map +1 -1
- package/dist/web/indieauth-discovery.js +3 -10
- package/dist/web/indieauth-discovery.js.map +1 -1
- package/dist/web/indieauth-token.d.ts.map +1 -1
- package/dist/web/indieauth-token.js +3 -3
- package/dist/web/indieauth-token.js.map +1 -1
- package/dist/web/listing-pages.d.ts.map +1 -1
- package/dist/web/listing-pages.js +1 -2
- package/dist/web/listing-pages.js.map +1 -1
- package/dist/web/maintenance.js +3 -3
- package/dist/web/maintenance.js.map +1 -1
- package/dist/web/page-sources.d.ts +1 -2
- package/dist/web/page-sources.d.ts.map +1 -1
- package/dist/web/page-sources.js +6 -7
- package/dist/web/page-sources.js.map +1 -1
- package/dist/web/paths.js +1 -1
- package/dist/web/paths.js.map +1 -1
- package/dist/web/pingback-routes.d.ts.map +1 -1
- package/dist/web/pingback-routes.js +3 -3
- package/dist/web/pingback-routes.js.map +1 -1
- package/dist/web/plugin-federation.js +50 -40
- package/dist/web/plugin-federation.js.map +1 -1
- package/dist/web/render.d.ts +12 -5
- package/dist/web/render.d.ts.map +1 -1
- package/dist/web/render.js +31 -21
- package/dist/web/render.js.map +1 -1
- package/dist/web/request.js +1 -1
- package/dist/web/request.js.map +1 -1
- package/dist/web/routes.d.ts.map +1 -1
- package/dist/web/routes.js +8 -9
- package/dist/web/routes.js.map +1 -1
- package/dist/web/site-index.d.ts.map +1 -1
- package/dist/web/site-index.js +1 -2
- package/dist/web/site-index.js.map +1 -1
- package/dist/web/site-view.d.ts +0 -2
- package/dist/web/site-view.d.ts.map +1 -1
- package/dist/web/site-view.js +0 -2
- package/dist/web/site-view.js.map +1 -1
- package/dist/web/webmention-routes.d.ts.map +1 -1
- package/dist/web/webmention-routes.js +2 -2
- package/dist/web/webmention-routes.js.map +1 -1
- package/dist/web/well-known.d.ts.map +1 -1
- package/dist/web/well-known.js +6 -7
- package/dist/web/well-known.js.map +1 -1
- package/dist/webmention/cited-picture.js +1 -1
- package/dist/webmention/cited-picture.js.map +1 -1
- package/dist/webmention/pingback.d.ts +1 -8
- package/dist/webmention/pingback.d.ts.map +1 -1
- package/dist/webmention/pingback.js +2 -11
- package/dist/webmention/pingback.js.map +1 -1
- package/dist/webmention/receive.d.ts +3 -1
- package/dist/webmention/receive.d.ts.map +1 -1
- package/dist/webmention/receive.js +5 -3
- package/dist/webmention/receive.js.map +1 -1
- package/dist/webmention/reply-contexts.d.ts +14 -3
- package/dist/webmention/reply-contexts.d.ts.map +1 -1
- package/dist/webmention/reply-contexts.js +12 -10
- package/dist/webmention/reply-contexts.js.map +1 -1
- package/dist/webmention/service.d.ts +3 -1
- package/dist/webmention/service.d.ts.map +1 -1
- package/dist/webmention/service.js +66 -53
- package/dist/webmention/service.js.map +1 -1
- package/package.json +13 -11
- package/themes/default/partials/post-list.njk +11 -11
- package/themes/default/src/style.css +12 -0
- package/themes/default/static/style.css +19 -0
|
@@ -2,16 +2,17 @@
|
|
|
2
2
|
* Email: how the site sends mail, and where a message written to it goes.
|
|
3
3
|
*
|
|
4
4
|
* The settings are here and the credentials are not: an API key and an SMTP
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
5
|
+
* connection are the `mail` settings namespace, kept in `data/mail.json` at
|
|
6
|
+
* mode 0600 or set by `GEEKITY_MAIL__*`, never in the public `site.json`, and
|
|
7
|
+
* they are their own pair of forms so a credential typed wrong cannot lose an
|
|
8
|
+
* edit to the From line beside it.
|
|
8
9
|
*/
|
|
9
|
-
import { readMailCredentials, removeMailCredentials, writeMailCredentials, } from '../mail/credentials.js';
|
|
10
10
|
import { MAIL_PROVIDERS } from '../mail/provider.js';
|
|
11
|
+
import { MAIL } from '../settings/mail.js';
|
|
11
12
|
import { EMAIL_PATTERN } from '../site/setting-values.js';
|
|
12
|
-
import { readSiteSettings } from '../site/site-json.js';
|
|
13
13
|
import { stringOrEmpty } from '../util/forms.js';
|
|
14
14
|
import { flash } from './flash.js';
|
|
15
|
+
import { forgetStored, setElsewhere } from './setting-overrides.js';
|
|
15
16
|
import { SETTINGS_PATH } from './settings.js';
|
|
16
17
|
import { settingsPagePath } from './settings-page.js';
|
|
17
18
|
import { ADMIN_TEMPLATES } from './templates.js';
|
|
@@ -19,7 +20,7 @@ import { ADMIN_TEMPLATES } from './templates.js';
|
|
|
19
20
|
* Where the mail credential's form and its Remove button post.
|
|
20
21
|
*
|
|
21
22
|
* Its own endpoint for the reason the Akismet key has one: an API key and an
|
|
22
|
-
* SMTP password are credentials, they
|
|
23
|
+
* SMTP password are credentials, they are the `mail` namespace rather than
|
|
23
24
|
* `content/_data/site.json`, and a credential typed wrong must not lose an edit
|
|
24
25
|
* to the From line. Which provider is in use and who mail is from are settings
|
|
25
26
|
* and stay on the Email form.
|
|
@@ -50,16 +51,16 @@ export const EMAIL_SETTINGS = {
|
|
|
50
51
|
path: settingsPagePath('email'),
|
|
51
52
|
template: ADMIN_TEMPLATES.settingsEmail,
|
|
52
53
|
fields: [
|
|
53
|
-
'
|
|
54
|
-
'
|
|
55
|
-
'
|
|
56
|
-
'
|
|
57
|
-
'
|
|
58
|
-
'
|
|
59
|
-
'
|
|
60
|
-
'
|
|
54
|
+
'mail_provider',
|
|
55
|
+
'mail_from_name',
|
|
56
|
+
'mail_from_address',
|
|
57
|
+
'mail_reply_to',
|
|
58
|
+
'contact_email',
|
|
59
|
+
'security_contacts',
|
|
60
|
+
'security_policy',
|
|
61
|
+
'security_languages',
|
|
61
62
|
],
|
|
62
|
-
panels: (c, settings) => mailPanel(c.var.
|
|
63
|
+
panels: (c, settings) => mailPanel(c.var.settings, settings),
|
|
63
64
|
endpoints: mountMail,
|
|
64
65
|
};
|
|
65
66
|
/** The mail credential's endpoints: save it, forget it, and prove it works. */
|
|
@@ -77,47 +78,27 @@ function mountMail(app, _options) {
|
|
|
77
78
|
*/
|
|
78
79
|
app.post(MAIL_PATH, async (c) => {
|
|
79
80
|
const body = await c.req.parseBody();
|
|
80
|
-
const {
|
|
81
|
-
const stored = readMailCredentials(config.dataDir);
|
|
81
|
+
const { settings } = c.var;
|
|
82
82
|
if (stringOrEmpty(body[MAIL_FIELDS.action]) === MAIL_REMOVE) {
|
|
83
|
-
await
|
|
84
|
-
|
|
83
|
+
const forgotten = await forgetStored(settings, MAIL, 'admin');
|
|
84
|
+
if (!forgotten.ok) {
|
|
85
|
+
flash(c, 'error', `${Object.values(forgotten.problems).join(' ')} Nothing was removed.`);
|
|
86
|
+
return c.redirect(here, 303);
|
|
87
|
+
}
|
|
88
|
+
const elsewhere = Object.entries(await setElsewhere(settings, MAIL));
|
|
89
|
+
flash(c, 'notice', elsewhere.length === 0
|
|
90
|
+
? 'The mail credentials are gone. No email is sent any more.'
|
|
91
|
+
: `The stored mail credentials are gone. ${elsewhere
|
|
92
|
+
.map(([key, source]) => `${source} still sets mail.${key}.`)
|
|
93
|
+
.join(' ')}`);
|
|
85
94
|
return c.redirect(here, 303);
|
|
86
95
|
}
|
|
87
|
-
const
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
const password = stringOrEmpty(body[MAIL_FIELDS.smtpPassword]);
|
|
91
|
-
if (host !== '' && (!Number.isInteger(port) || port < 1 || port > 65535)) {
|
|
92
|
-
flash(c, 'error', 'An SMTP port is a whole number between 1 and 65535. Nothing was saved.');
|
|
96
|
+
const result = await settings.set('mail', await submittedCredentials(settings, body), 'admin');
|
|
97
|
+
if (!result.ok) {
|
|
98
|
+
flash(c, 'error', `${Object.values(result.problems).join(' ')} Nothing was saved.`);
|
|
93
99
|
return c.redirect(here, 303);
|
|
94
100
|
}
|
|
95
|
-
|
|
96
|
-
...(apiKey === ''
|
|
97
|
-
? stored.brevo === undefined
|
|
98
|
-
? {}
|
|
99
|
-
: { brevo: stored.brevo }
|
|
100
|
-
: { brevo: { apiKey } }),
|
|
101
|
-
...(host === ''
|
|
102
|
-
? stored.smtp === undefined
|
|
103
|
-
? {}
|
|
104
|
-
: { smtp: stored.smtp }
|
|
105
|
-
: {
|
|
106
|
-
smtp: {
|
|
107
|
-
host,
|
|
108
|
-
port,
|
|
109
|
-
secure: stringOrEmpty(body[MAIL_FIELDS.smtpSecure]) !== '',
|
|
110
|
-
user: stringOrEmpty(body[MAIL_FIELDS.smtpUser]).trim(),
|
|
111
|
-
// A blank password keeps the stored one, so the port and the user
|
|
112
|
-
// can be edited without retyping a secret the form was never
|
|
113
|
-
// allowed to show.
|
|
114
|
-
password: password === '' ? (stored.smtp?.password ?? '') : password,
|
|
115
|
-
},
|
|
116
|
-
}),
|
|
117
|
-
};
|
|
118
|
-
await writeMailCredentials(config.dataDir, credentials);
|
|
119
|
-
const settings = readSiteSettings(config.contentDir);
|
|
120
|
-
flash(c, 'notice', settings.mailProvider === 'none'
|
|
101
|
+
flash(c, 'notice', c.var.siteAtRequestStart.mail_provider === 'none'
|
|
121
102
|
? 'Saved. Choose a provider above and save the settings to start sending.'
|
|
122
103
|
: 'Saved. Send a test message to prove it reaches you.');
|
|
123
104
|
return c.redirect(here, 303);
|
|
@@ -151,19 +132,50 @@ function mountMail(app, _options) {
|
|
|
151
132
|
return c.redirect(here, 303);
|
|
152
133
|
});
|
|
153
134
|
}
|
|
135
|
+
async function submittedCredentials(settings, body) {
|
|
136
|
+
const elsewhere = await setElsewhere(settings, MAIL);
|
|
137
|
+
const changes = new Map();
|
|
138
|
+
const typed = (field) => stringOrEmpty(body[field]);
|
|
139
|
+
const apiKey = typed(MAIL_FIELDS.brevoApiKey).trim();
|
|
140
|
+
if (apiKey !== '')
|
|
141
|
+
changes.set('brevo_api_key', apiKey);
|
|
142
|
+
const host = typed(MAIL_FIELDS.smtpHost).trim();
|
|
143
|
+
if (host === '' && elsewhere['smtp_host'] === undefined)
|
|
144
|
+
return changes;
|
|
145
|
+
const portText = typed(MAIL_FIELDS.smtpPort).trim();
|
|
146
|
+
const portNumber = Number(portText);
|
|
147
|
+
const connection = [
|
|
148
|
+
['smtp_host', host],
|
|
149
|
+
['smtp_port', portText === '' || Number.isNaN(portNumber) ? portText : portNumber],
|
|
150
|
+
['smtp_secure', typed(MAIL_FIELDS.smtpSecure) !== ''],
|
|
151
|
+
['smtp_user', typed(MAIL_FIELDS.smtpUser).trim()],
|
|
152
|
+
];
|
|
153
|
+
for (const [key, value] of connection) {
|
|
154
|
+
if (elsewhere[key] === undefined)
|
|
155
|
+
changes.set(key, value);
|
|
156
|
+
}
|
|
157
|
+
const password = typed(MAIL_FIELDS.smtpPassword);
|
|
158
|
+
if (password !== '')
|
|
159
|
+
changes.set('smtp_password', password);
|
|
160
|
+
return changes;
|
|
161
|
+
}
|
|
154
162
|
/**
|
|
155
163
|
* What the page says about email: which provider is chosen, whether the
|
|
156
164
|
* credential it needs is there, and enough of it to recognise which one.
|
|
157
165
|
*
|
|
158
166
|
* Nothing here ever prints a key or a password. A settings screen that echoed
|
|
159
167
|
* one would put a credential in every browser cache, every screenshot and every
|
|
160
|
-
* `view-source`; the last four characters of
|
|
161
|
-
* of an SMTP connection are enough for somebody to tell what is stored
|
|
162
|
-
* being handed the means to use it.
|
|
168
|
+
* `view-source`; the last four characters of a stored API key and the host and
|
|
169
|
+
* user of an SMTP connection are enough for somebody to tell what is stored
|
|
170
|
+
* without being handed the means to use it. A secret the environment sets is
|
|
171
|
+
* named by its variable and not even that.
|
|
163
172
|
*/
|
|
164
|
-
export function mailPanel(
|
|
165
|
-
const
|
|
166
|
-
const
|
|
173
|
+
export async function mailPanel(registry, settings) {
|
|
174
|
+
const mail = await registry.values(MAIL);
|
|
175
|
+
const setBy = await setElsewhere(registry, MAIL);
|
|
176
|
+
const brevoPresent = mail.brevo_api_key !== '';
|
|
177
|
+
const smtpPresent = mail.smtp_host !== '';
|
|
178
|
+
const present = settings.mail_provider === 'brevo' ? brevoPresent : smtpPresent;
|
|
167
179
|
return {
|
|
168
180
|
mailUrl: MAIL_PATH,
|
|
169
181
|
mailFields: MAIL_FIELDS,
|
|
@@ -171,33 +183,32 @@ export function mailPanel(dataDir, settings) {
|
|
|
171
183
|
mailTestUrl: MAIL_TEST_PATH,
|
|
172
184
|
mailTestFields: MAIL_TEST_FIELDS,
|
|
173
185
|
mailProviders: MAIL_PROVIDERS,
|
|
174
|
-
mailProvider: settings.
|
|
186
|
+
mailProvider: settings.mail_provider,
|
|
187
|
+
mailSetBy: setBy,
|
|
175
188
|
// Whether the chosen provider has what it needs. A key stored for the
|
|
176
189
|
// provider that is not chosen is not "configured": nothing would use it.
|
|
177
|
-
mailConfigured: settings.
|
|
178
|
-
mailBrevoPresent:
|
|
179
|
-
mailSmtpPresent:
|
|
180
|
-
...(
|
|
181
|
-
? {}
|
|
182
|
-
: {
|
|
183
|
-
...(
|
|
184
|
-
? {
|
|
185
|
-
: {
|
|
190
|
+
mailConfigured: settings.mail_provider !== 'none' && present,
|
|
191
|
+
mailBrevoPresent: brevoPresent,
|
|
192
|
+
mailSmtpPresent: smtpPresent,
|
|
193
|
+
...(brevoPresent && setBy['brevo_api_key'] === undefined
|
|
194
|
+
? { mailBrevoKeyHint: `…${mail.brevo_api_key.slice(-4)}` }
|
|
195
|
+
: {}),
|
|
196
|
+
...(smtpPresent
|
|
197
|
+
? {
|
|
186
198
|
mailSmtp: {
|
|
187
|
-
host:
|
|
188
|
-
port:
|
|
189
|
-
secure:
|
|
190
|
-
user:
|
|
191
|
-
|
|
192
|
-
// needs to say.
|
|
193
|
-
hasPassword: stored.smtp.password !== '',
|
|
199
|
+
host: mail.smtp_host,
|
|
200
|
+
port: mail.smtp_port,
|
|
201
|
+
secure: mail.smtp_secure,
|
|
202
|
+
user: mail.smtp_user,
|
|
203
|
+
hasPassword: mail.smtp_password !== '',
|
|
194
204
|
},
|
|
195
|
-
}
|
|
196
|
-
|
|
205
|
+
}
|
|
206
|
+
: {}),
|
|
207
|
+
mailHint: settings.mail_provider === 'none'
|
|
197
208
|
? 'This site sends no email. Password resets, moderation notices and contact messages are still recorded; they are simply not sent.'
|
|
198
209
|
: present
|
|
199
210
|
? 'Mail is configured. Send a test message to prove it reaches you.'
|
|
200
|
-
: settings.
|
|
211
|
+
: settings.mail_provider === 'brevo'
|
|
201
212
|
? 'Brevo is chosen but there is no API key, so nothing is sent.'
|
|
202
213
|
: 'SMTP is chosen but there is no server, so nothing is sent.',
|
|
203
214
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-email.js","sourceRoot":"","sources":["../../src/admin/settings-email.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"settings-email.js","sourceRoot":"","sources":["../../src/admin/settings-email.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Federation: which relays the site subscribes to.
|
|
3
3
|
*
|
|
4
|
-
* There is nothing else on this page any more. decision-14 replaced the site
|
|
5
|
-
* actor with one actor per user, so the handle, the type and the picture a
|
|
6
|
-
* site used to federate under are a user's profile, edited on the users
|
|
7
|
-
* screen; what is left here is the one setting that is an instruction as well
|
|
8
|
-
* as a value — a line added is a `Follow` to send and a line removed is an
|
|
9
|
-
* `Undo` — so a save of this page reconciles them.
|
|
10
|
-
*
|
|
11
4
|
* It is a settings page filed under Federation rather than under Settings
|
|
12
5
|
* (TASK-109). The admin used to have two menu entries called Federation,
|
|
13
6
|
* neither saying the other existed, and a person looking for the relays had no
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-federation.d.ts","sourceRoot":"","sources":["../../src/admin/settings-federation.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"settings-federation.d.ts","sourceRoot":"","sources":["../../src/admin/settings-federation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGvD,2DAA2D;AAC3D,eAAO,MAAM,mBAAmB,EAAE,YAiBjC,CAAC"}
|
|
@@ -1,13 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Federation: which relays the site subscribes to.
|
|
3
3
|
*
|
|
4
|
-
* There is nothing else on this page any more. decision-14 replaced the site
|
|
5
|
-
* actor with one actor per user, so the handle, the type and the picture a
|
|
6
|
-
* site used to federate under are a user's profile, edited on the users
|
|
7
|
-
* screen; what is left here is the one setting that is an instruction as well
|
|
8
|
-
* as a value — a line added is a `Follow` to send and a line removed is an
|
|
9
|
-
* `Undo` — so a save of this page reconciles them.
|
|
10
|
-
*
|
|
11
4
|
* It is a settings page filed under Federation rather than under Settings
|
|
12
5
|
* (TASK-109). The admin used to have two menu entries called Federation,
|
|
13
6
|
* neither saying the other existed, and a person looking for the relays had no
|
|
@@ -31,11 +24,6 @@ export const FEDERATION_SETTINGS = {
|
|
|
31
24
|
path: FEDERATION_SETTINGS_PATH,
|
|
32
25
|
template: ADMIN_TEMPLATES.federationSettings,
|
|
33
26
|
fields: ['relays'],
|
|
34
|
-
saved: (c) => {
|
|
35
|
-
// The reconciliation reads the settings that were just written, so it has
|
|
36
|
-
// to come after the save rather than be derived from the form.
|
|
37
|
-
return toldRelays(c.var.relays.sync());
|
|
38
|
-
},
|
|
39
27
|
endpoints: (app) => {
|
|
40
28
|
// Where this page was until TASK-109. A bookmark points at it, and so do
|
|
41
29
|
// the older editions of the README, so it moves somebody along rather than
|
|
@@ -43,28 +31,4 @@ export const FEDERATION_SETTINGS = {
|
|
|
43
31
|
app.get(settingsPagePath('federation'), (c) => c.redirect(FEDERATION_SETTINGS_PATH, 301));
|
|
44
32
|
},
|
|
45
33
|
};
|
|
46
|
-
/**
|
|
47
|
-
* The sentence a flash adds about the relays a save subscribed to or left.
|
|
48
|
-
*
|
|
49
|
-
* A relay does not answer at once — FEP-ae0c allows a human to approve the
|
|
50
|
-
* subscription days later — so the message says a follow was sent rather than
|
|
51
|
-
* that the site is now on the relay, and points at the screen that will say.
|
|
52
|
-
*/
|
|
53
|
-
function toldRelays(report) {
|
|
54
|
-
const parts = [];
|
|
55
|
-
if (report.followed.length > 0) {
|
|
56
|
-
parts.push(report.followed.length === 1
|
|
57
|
-
? 'A follow has been sent to one new relay'
|
|
58
|
-
: `Follows have been sent to ${String(report.followed.length)} new relays`);
|
|
59
|
-
}
|
|
60
|
-
if (report.unfollowed.length > 0) {
|
|
61
|
-
parts.push(report.unfollowed.length === 1
|
|
62
|
-
? 'one relay has been unfollowed'
|
|
63
|
-
: `${String(report.unfollowed.length)} relays have been unfollowed`);
|
|
64
|
-
}
|
|
65
|
-
if (parts.length === 0)
|
|
66
|
-
return '';
|
|
67
|
-
const sentence = parts.join(', and ');
|
|
68
|
-
return ` ${sentence.charAt(0).toUpperCase()}${sentence.slice(1)}; the Followers screen says where each stands.`;
|
|
69
|
-
}
|
|
70
34
|
//# sourceMappingURL=settings-federation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-federation.js","sourceRoot":"","sources":["../../src/admin/settings-federation.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"settings-federation.js","sourceRoot":"","sources":["../../src/admin/settings-federation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,2DAA2D;AAC3D,MAAM,CAAC,MAAM,mBAAmB,GAAiB;IAC/C,OAAO,EAAE,YAAY;IACrB,KAAK,EAAE,UAAU;IACjB,wEAAwE;IACxE,uEAAuE;IACvE,KAAK,EAAE,UAAU;IACjB,OAAO,EAAE,YAAY;IACrB,IAAI,EAAE,wBAAwB;IAC9B,QAAQ,EAAE,eAAe,CAAC,kBAAkB;IAC5C,MAAM,EAAE,CAAC,QAAQ,CAAC;IAElB,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE;QACjB,yEAAyE;QACzE,2EAA2E;QAC3E,6CAA6C;QAC7C,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC,CAAC;IAC5F,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { SiteSettings } from '../site/settings.ts';
|
|
2
|
+
type OffTheForm = 'taxonomy_redirects' | 'menus' | 'index_now_key' | 'clients_without_pkce' | 'avatar';
|
|
3
|
+
type FormKey = Exclude<keyof SiteSettings, OffTheForm>;
|
|
4
|
+
export type SettingsField = FormKey | 'license_url' | 'license_name';
|
|
5
|
+
export type SettingsForm = Record<SettingsField, string>;
|
|
6
|
+
export interface SettingsDirs {
|
|
7
|
+
readonly themesDir: string;
|
|
8
|
+
readonly contentDir: string;
|
|
9
|
+
}
|
|
10
|
+
export type SettingsContext = {
|
|
11
|
+
readonly [D in keyof SettingsDirs]?: string | undefined;
|
|
12
|
+
};
|
|
13
|
+
export interface OnDiskCheck {
|
|
14
|
+
readonly dir: keyof SettingsDirs;
|
|
15
|
+
readonly problem: (value: string, dir: string) => string | undefined;
|
|
16
|
+
}
|
|
17
|
+
export declare function requiredWholeDays(typed: string): number | undefined;
|
|
18
|
+
export type FrontPage = Pick<SiteSettings, 'homepage' | 'posts_page'>;
|
|
19
|
+
export declare function frontPageOf(form: SettingsForm): FrontPage;
|
|
20
|
+
export declare function frontPageProblems(form: SettingsForm): {
|
|
21
|
+
readonly [K in keyof FrontPage]?: string | undefined;
|
|
22
|
+
};
|
|
23
|
+
export declare const SETTINGS_FIELD_NAMES: readonly SettingsField[];
|
|
24
|
+
export type SettingsProblems = Partial<Record<SettingsField, string>>;
|
|
25
|
+
export declare const SETTINGS_FIELDS: Readonly<Record<SettingsField, string>>;
|
|
26
|
+
export declare function settingOf(field: SettingsField): FormKey;
|
|
27
|
+
export declare function settingsProblems(form: SettingsForm, fields?: readonly SettingsField[], context?: SettingsContext): SettingsProblems;
|
|
28
|
+
export declare function submittedSettings(form: SettingsForm, fields: readonly SettingsField[]): Partial<SiteSettings>;
|
|
29
|
+
export declare function siteChanges(settings: Partial<SiteSettings>): Map<string, unknown>;
|
|
30
|
+
export declare function formFromSettings(settings: SiteSettings): SettingsForm;
|
|
31
|
+
export {};
|
|
32
|
+
//# sourceMappingURL=settings-fields.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-fields.d.ts","sourceRoot":"","sources":["../../src/admin/settings-fields.ts"],"names":[],"mappings":"AAkCA,OAAO,KAAK,EAAe,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAErE,KAAK,UAAU,GACb,oBAAoB,GAAG,OAAO,GAAG,eAAe,GAAG,sBAAsB,GAAG,QAAQ,CAAC;AAEvF,KAAK,OAAO,GAAG,OAAO,CAAC,MAAM,YAAY,EAAE,UAAU,CAAC,CAAC;AAEvD,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,aAAa,GAAG,cAAc,CAAC;AAErE,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AAEzD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,MAAM,eAAe,GAAG;IAAE,QAAQ,EAAE,CAAC,IAAI,MAAM,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS;CAAE,CAAC;AAE1F,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,YAAY,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;CACtE;AAiFD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKnE;AAoED,MAAM,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,UAAU,GAAG,YAAY,CAAC,CAAC;AAEtE,wBAAgB,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,SAAS,CAGzD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG;IACrD,QAAQ,EAAE,CAAC,IAAI,MAAM,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS;CACrD,CAMA;AAgUD,eAAO,MAAM,oBAAoB,EAA6B,SAAS,aAAa,EAAE,CAAC;AAEvF,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;AAStE,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAEnE,CAAC;AAEF,wBAAgB,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAEvD;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,YAAY,EAClB,MAAM,GAAE,SAAS,aAAa,EAAyB,EACvD,OAAO,GAAE,eAAoB,GAC5B,gBAAgB,CASlB;AAaD,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE,SAAS,aAAa,EAAE,GAC/B,OAAO,CAAC,YAAY,CAAC,CAGvB;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAQjF;AAOD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,YAAY,GAAG,YAAY,CAErE"}
|