@geekity/cms 0.31.0 → 0.32.1
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 +7 -14
- package/dist/admin/federation.d.ts.map +1 -1
- package/dist/admin/federation.js +48 -94
- 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 +43 -17
- 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 +5 -11
- package/dist/federation/article.d.ts.map +1 -1
- package/dist/federation/article.js +67 -35
- 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 +30 -14
- 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 +6 -13
- 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.d.ts.map +1 -1
- package/dist/federation/inbox.js +5 -8
- package/dist/federation/inbox.js.map +1 -1
- package/dist/federation/index.d.ts +1 -0
- package/dist/federation/index.d.ts.map +1 -1
- package/dist/federation/index.js +1 -0
- package/dist/federation/index.js.map +1 -1
- package/dist/federation/keys.js +3 -3
- package/dist/federation/keys.js.map +1 -1
- package/dist/federation/object-ids.d.ts +50 -0
- package/dist/federation/object-ids.d.ts.map +1 -0
- package/dist/federation/object-ids.js +134 -0
- package/dist/federation/object-ids.js.map +1 -0
- 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/deliveries.d.ts +2 -0
- package/dist/store/deliveries.d.ts.map +1 -1
- package/dist/store/deliveries.js +7 -0
- package/dist/store/deliveries.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 +59 -43
- 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 +5 -2
- 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 +36 -22
- 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 +19 -14
- package/themes/default/src/style.css +12 -0
- package/themes/default/static/style.css +19 -0
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { FORM_ROWS, ROWS, SETTING_KEYS, SETTINGS_FIELD_NAMES } from './setting-rows.js';
|
|
2
|
-
import { DEFAULT_SITE_SETTINGS } from './settings.js';
|
|
3
2
|
export { SETTINGS_FIELD_NAMES } from './setting-rows.js';
|
|
4
3
|
function perField(value) {
|
|
5
4
|
return Object.fromEntries(SETTINGS_FIELD_NAMES.map((name) => [name, value(name)]));
|
|
@@ -31,9 +30,6 @@ function onDiskProblem(name, form, context) {
|
|
|
31
30
|
const dir = context[onDisk.dir];
|
|
32
31
|
return dir === undefined ? undefined : onDisk.problem(form[name].trim(), dir);
|
|
33
32
|
}
|
|
34
|
-
function submitSetting(settings, key, form, carriedOnFile) {
|
|
35
|
-
settings[key] = ROWS[key].submitted(form, carriedOnFile);
|
|
36
|
-
}
|
|
37
33
|
/**
|
|
38
34
|
* A validated form as settings. Only call it on a form
|
|
39
35
|
* {@link settingsProblems} found nothing wrong with.
|
|
@@ -43,13 +39,13 @@ function submitSetting(settings, key, form, carriedOnFile) {
|
|
|
43
39
|
* passing the settings read inside the write is all a caller has to do.
|
|
44
40
|
*/
|
|
45
41
|
export function settingsFromForm(form, carriedOnFile = {}) {
|
|
46
|
-
|
|
47
|
-
for (const key of SETTING_KEYS)
|
|
48
|
-
submitSetting(settings, key, form, carriedOnFile);
|
|
49
|
-
return settings;
|
|
42
|
+
return Object.fromEntries(SETTING_KEYS.map((key) => [key, ROWS[key].submitted(form, carriedOnFile)]));
|
|
50
43
|
}
|
|
51
|
-
function shownSetting(settings,
|
|
52
|
-
|
|
44
|
+
function shownSetting(settings, name) {
|
|
45
|
+
const value = (name === 'license_url' || name === 'license_name'
|
|
46
|
+
? settings.license
|
|
47
|
+
: settings[name]);
|
|
48
|
+
return FORM_ROWS[name].shown(value);
|
|
53
49
|
}
|
|
54
50
|
/** The settings as the form shows them. */
|
|
55
51
|
export function formFromSettings(settings) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-form.js","sourceRoot":"","sources":["../../src/site/settings-form.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"settings-form.js","sourceRoot":"","sources":["../../src/site/settings-form.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAUxF,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAWzD,SAAS,QAAQ,CAAI,KAAiC;IACpD,OAAO,MAAM,CAAC,WAAW,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAGhF,CAAC;AACJ,CAAC;AAED,sDAAsD;AACtD,MAAM,CAAC,MAAM,eAAe,GAA4C,QAAQ,CAC9E,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAChC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAkB,EAClB,MAAM,GAA6B,oBAAoB,EACvD,OAAO,GAAoB,EAAE;IAE7B,MAAM,QAAQ,GAAqB,EAAE,CAAC;IAEtC,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAClF,IAAI,OAAO,KAAK,SAAS;YAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IACtD,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,aAAa,CACpB,IAAmB,EACnB,IAAkB,EAClB,OAAwB;IAExB,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IACtC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC3C,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChC,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;AAChF,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAkB,EAClB,aAAa,GAAoB,EAAE;IAEnC,OAAO,MAAM,CAAC,WAAW,CACvB,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,CAC3D,CAAC;AACpB,CAAC;AAED,SAAS,YAAY,CAA0B,QAAsB,EAAE,IAAO;IAC5E,MAAM,KAAK,GAAG,CACZ,IAAI,KAAK,aAAa,IAAI,IAAI,KAAK,cAAc;QAC/C,CAAC,CAAC,QAAQ,CAAC,OAAO;QAClB,CAAC,CAAC,QAAQ,CAAC,IAA0B,CAAC,CACxB,CAAC;IACnB,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACtC,CAAC;AAED,2CAA2C;AAC3C,MAAM,UAAU,gBAAgB,CAAC,QAAsB;IACrD,OAAO,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1D,CAAC"}
|
package/dist/site/settings.d.ts
CHANGED
|
@@ -1,330 +1,14 @@
|
|
|
1
1
|
import type { ResolvedConfig } from '../config.ts';
|
|
2
|
-
import type { LocationSharing } from '../content/location.ts';
|
|
3
|
-
import type { MailProviderName } from '../mail/provider.ts';
|
|
4
|
-
import type { RetentionPolicy } from './retention-policy.ts';
|
|
5
|
-
import type { UpdatePeriod } from './feed-settings.ts';
|
|
6
2
|
import type { CreativeCommonsKey } from '../content/license.ts';
|
|
7
|
-
import type {
|
|
8
|
-
import type {
|
|
9
|
-
import type {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
* a conversation and starts being a spam target.
|
|
14
|
-
*/
|
|
15
|
-
export declare const DEFAULT_COMMENTS_CLOSE_AFTER_DAYS = 14;
|
|
16
|
-
/**
|
|
17
|
-
* The settings a site holds, as `content/_data/site.json` says them.
|
|
18
|
-
*
|
|
19
|
-
* The file is the source of truth (decision-9): the settings screen reads it,
|
|
20
|
-
* validates the form and writes it back, and nothing else remembers a setting.
|
|
21
|
-
* That is what makes a hand edit of the file — in an editor, from a git
|
|
22
|
-
* checkout, by an Eleventy build's own tooling — show on the very next
|
|
23
|
-
* request, and what makes `data/geekity.db` a cache a site may delete.
|
|
24
|
-
*
|
|
25
|
-
* This shape is the typed view of the file. Each key has one row in
|
|
26
|
-
* `setting-rows.ts` saying how the file holds it and how the settings form
|
|
27
|
-
* carries it. The file may hold keys this shape does not model — `feedSize`,
|
|
28
|
-
* anything a site put there — and a save keeps every one of them.
|
|
29
|
-
*/
|
|
30
|
-
export interface SiteSettings {
|
|
31
|
-
/** Site title, shown in the header, the `<title>` and the feeds. */
|
|
32
|
-
title: string;
|
|
33
|
-
/** One-line description under the title. May be empty. */
|
|
34
|
-
tagline: string;
|
|
35
|
-
/**
|
|
36
|
-
* Public origin. Whether it is the one in effect depends on
|
|
37
|
-
* {@link ResolvedConfig.baseUrlSource}; see {@link effectiveBaseUrl}.
|
|
38
|
-
*/
|
|
39
|
-
baseUrl: string;
|
|
40
|
-
/** An IANA zone name, e.g. `Europe/London`. */
|
|
41
|
-
timezone: string;
|
|
42
|
-
/**
|
|
43
|
-
* The site's language as a BCP 47 tag, `en` by default. It is the
|
|
44
|
-
* `<html lang>` the theme writes, the RSS channel's `<language>` and the
|
|
45
|
-
* Atom feed's `xml:lang`.
|
|
46
|
-
*/
|
|
47
|
-
language: string;
|
|
48
|
-
/**
|
|
49
|
-
* The locale the public site's dates and counts are written in, when it is
|
|
50
|
-
* not the language: `en-US` on an `en` site, say. Empty, the default, means
|
|
51
|
-
* the language.
|
|
52
|
-
*/
|
|
53
|
-
locale: string;
|
|
54
|
-
/** How many posts a listing page holds. A positive integer. */
|
|
55
|
-
postsPerPage: number;
|
|
56
|
-
/**
|
|
57
|
-
* The slug of the page served at `/`, or empty when the site shows its
|
|
58
|
-
* latest posts there. WordPress's Reading choice.
|
|
59
|
-
*
|
|
60
|
-
* A slug rather than a permalink, because a permalink is a thing the editor
|
|
61
|
-
* may change and the setting should follow the page rather than the URL it
|
|
62
|
-
* happened to have. A slug naming nothing published — a page drafted,
|
|
63
|
-
* trashed or deleted since — is a site back on its latest posts: the pick is
|
|
64
|
-
* kept so putting the page back puts the front page back with it.
|
|
65
|
-
*/
|
|
66
|
-
homepage: string;
|
|
67
|
-
/**
|
|
68
|
-
* The slug of the page whose permalink carries the post listing, or empty
|
|
69
|
-
* for none. Only meaningful beside a {@link SiteSettings.homepage}, and the
|
|
70
|
-
* settings screen refuses one without it, exactly as WordPress does.
|
|
71
|
-
*/
|
|
72
|
-
postsPage: string;
|
|
73
|
-
/**
|
|
74
|
-
* Who the site is: one user's username, or empty for a site with several
|
|
75
|
-
* authors (TASK-192). A username makes it that user's blog: the homepage
|
|
76
|
-
* carries their bio card and their `rel="me"` links, it and their archive
|
|
77
|
-
* claim each other, and the root is their IndieAuth identity (decision-23).
|
|
78
|
-
*
|
|
79
|
-
* A file written before the Site author select may hold a display name or a
|
|
80
|
-
* name nobody has. It is read as stored and resolved where it is used, by
|
|
81
|
-
* `userForAuthor`, so a display name still names its user and anything else
|
|
82
|
-
* names nobody; the General page writes the username at its next save.
|
|
83
|
-
*/
|
|
84
|
-
author: string;
|
|
85
|
-
/**
|
|
86
|
-
* The theme the site renders through: the name of one directory under the
|
|
87
|
-
* configured themes directory, or empty for the theme the package ships
|
|
88
|
-
* (decision-15).
|
|
89
|
-
*
|
|
90
|
-
* A setting rather than a deployment fact, for the reason the tagline is: it
|
|
91
|
-
* is a look somebody chooses on the Appearance screen, and a site moved from
|
|
92
|
-
* one host to another should arrive looking the same. A name that is not a
|
|
93
|
-
* theme is refused here and falls back to the packaged theme out on the
|
|
94
|
-
* site, so a hand-edited file is a warning in the log rather than a 500.
|
|
95
|
-
*/
|
|
96
|
-
theme: string;
|
|
97
|
-
/**
|
|
98
|
-
* The upload the site's icons are derived from, as a path such as
|
|
99
|
-
* `/uploads/2026/10/icon.png`, or empty for none. Read from and written
|
|
100
|
-
* to the `icon` key of `site.json` only.
|
|
101
|
-
*/
|
|
102
|
-
icon: string;
|
|
103
|
-
/**
|
|
104
|
-
* What readers may do with the site's posts: empty for no
|
|
105
|
-
* license, which is all rights reserved, a Creative Commons key, or
|
|
106
|
-
* `custom` for the URL and name beside it. `site.json` writes a key, or a
|
|
107
|
-
* custom license's URL, under `license`, so the file says it the way a
|
|
108
|
-
* post's front matter does.
|
|
109
|
-
*/
|
|
110
|
-
license: LicenseChoice;
|
|
111
|
-
/** A custom license's terms, as an absolute URL. Empty unless `license` is `custom`. */
|
|
112
|
-
licenseUrl: string;
|
|
113
|
-
/** A custom license's name. Empty unless `license` is `custom`. */
|
|
114
|
-
licenseName: string;
|
|
115
|
-
/**
|
|
116
|
-
* The first URL segment the tag archives live under, `tag` by default: one
|
|
117
|
-
* URL-safe path segment, no slashes. WordPress's own base, so a site
|
|
118
|
-
* imported from it keeps every archive URL it published.
|
|
119
|
-
*/
|
|
120
|
-
tagBase: string;
|
|
121
|
-
/** The same for the category archives, `category` by default. */
|
|
122
|
-
categoryBase: string;
|
|
123
|
-
/**
|
|
124
|
-
* Whether the site takes native comments at all (TASK-50).
|
|
125
|
-
*
|
|
126
|
-
* Off means off everywhere: no form under any post, and every submission
|
|
127
|
-
* refused. It does not touch the fediverse — a reply, a like or a boost
|
|
128
|
-
* arrives because a remote server sent it, and a site cannot stop that or
|
|
129
|
-
* pretend it did not happen.
|
|
130
|
-
*/
|
|
131
|
-
comments: boolean;
|
|
132
|
-
/**
|
|
133
|
-
* How many days after its `date` a post stops taking comments. Zero never
|
|
134
|
-
* closes one.
|
|
135
|
-
*
|
|
136
|
-
* The age at which a post stops being a conversation and starts being a spam
|
|
137
|
-
* target; fourteen days is WordPress's own default. A post may say otherwise
|
|
138
|
-
* for itself with `comments: true` or `comments: false` in its front matter.
|
|
139
|
-
*/
|
|
140
|
-
commentsCloseAfterDays: number;
|
|
141
|
-
/**
|
|
142
|
-
* How many days a comment keeps its author's email (TASK-135). Zero keeps it
|
|
143
|
-
* forever. Past it the email is removed from the comment file and the index,
|
|
144
|
-
* and with it the author's subscription to replies.
|
|
145
|
-
*/
|
|
146
|
-
commentEmailRetentionDays: number;
|
|
147
|
-
/**
|
|
148
|
-
* How many days a comment or a contact message keeps the salted hash of the
|
|
149
|
-
* address it came from. Zero keeps it forever.
|
|
150
|
-
*/
|
|
151
|
-
addressHashRetentionDays: number;
|
|
152
|
-
/** How many days a contact message is kept at all. Zero keeps it forever. */
|
|
153
|
-
contactMessageRetentionDays: number;
|
|
154
|
-
/**
|
|
155
|
-
* Whether the site tells the pages a post links to that it has (TASK-51).
|
|
156
|
-
*
|
|
157
|
-
* On by default, because a link nobody is told about is half a conversation.
|
|
158
|
-
* Off means no webmention is ever sent, including by the Resend button.
|
|
159
|
-
*/
|
|
160
|
-
webmentionsSend: boolean;
|
|
161
|
-
/**
|
|
162
|
-
* Whether the site accepts webmentions sent to it (TASK-51).
|
|
163
|
-
*
|
|
164
|
-
* On by default. Off takes the endpoint off every page and answers the
|
|
165
|
-
* endpoint itself with a 404, which is what a site that does not receive
|
|
166
|
-
* them looks like from outside. It does not touch the fediverse, and it does
|
|
167
|
-
* not touch what has already arrived: a webmention already in the queue is
|
|
168
|
-
* still there for a moderator.
|
|
169
|
-
*/
|
|
170
|
-
webmentionsReceive: boolean;
|
|
171
|
-
/**
|
|
172
|
-
* Where the site announces that a feed changed, and the server its feeds
|
|
173
|
-
* advertise as their rssCloud endpoint and their WebSub hub. An absolute
|
|
174
|
-
* http(s) URL, {@link DEFAULT_NOTIFY_SERVER} by default; empty turns
|
|
175
|
-
* real-time notification off altogether.
|
|
176
|
-
*/
|
|
177
|
-
notifyServer: string;
|
|
178
|
-
/**
|
|
179
|
-
* How often the RSS feeds tell a reader to poll them: `feedUpdateFrequency`
|
|
180
|
-
* times a `feedUpdatePeriod`, in the Syndication module's two elements
|
|
181
|
-
* (TASK-152). Once an hour by default, which is what WordPress declares.
|
|
182
|
-
*/
|
|
183
|
-
feedUpdatePeriod: UpdatePeriod;
|
|
184
|
-
/** How many polls per {@link SiteSettings.feedUpdatePeriod}: a whole number, at least one. */
|
|
185
|
-
feedUpdateFrequency: number;
|
|
186
|
-
/**
|
|
187
|
-
* How the site treats the crawlers that feed AI products, as the robots file
|
|
188
|
-
* spells it in per-agent groups (TASK-148). `allow` by default.
|
|
189
|
-
*/
|
|
190
|
-
aiCrawlers: AiCrawlerPolicy;
|
|
191
|
-
/**
|
|
192
|
-
* The three Content-Signal preferences the robots file declares: `yes`,
|
|
193
|
-
* `no`, or empty for a signal the site says nothing about.
|
|
194
|
-
*/
|
|
195
|
-
contentSignalSearch: ContentSignalChoice;
|
|
196
|
-
/** Whether the site's pages may be fed to an AI answer live. */
|
|
197
|
-
contentSignalAiInput: ContentSignalChoice;
|
|
198
|
-
/** Whether the site's pages may be used to train a model. */
|
|
199
|
-
contentSignalAiTrain: ContentSignalChoice;
|
|
200
|
-
/**
|
|
201
|
-
* Lines the robots file carries beyond the CMS's own: groups of
|
|
202
|
-
* `User-agent` lines and their rules, one line per entry, blank lines
|
|
203
|
-
* between groups. Every group still keeps crawlers out of the admin.
|
|
204
|
-
*/
|
|
205
|
-
robotsRules: readonly string[];
|
|
206
|
-
/**
|
|
207
|
-
* Whether the site serves `/llms.txt` and advertises it from the home page
|
|
208
|
-
* (TASK-149). On by default. A site that wants to write the file itself
|
|
209
|
-
* leaves this on and puts it at `content/llms.txt`.
|
|
210
|
-
*/
|
|
211
|
-
llmsTxt: boolean;
|
|
212
|
-
/**
|
|
213
|
-
* Whether the site tells the IndexNow search engines about every URL a
|
|
214
|
-
* publish, an edit or a deletion moved (TASK-151). Off by default: it sends
|
|
215
|
-
* the site's URLs to a third party, which is the site's call to make.
|
|
216
|
-
*/
|
|
217
|
-
indexNow: boolean;
|
|
218
|
-
/**
|
|
219
|
-
* The key IndexNow verifies the site by, served at `/{key}.txt`. Generated
|
|
220
|
-
* the first time IndexNow is turned on and kept when it is turned off, so
|
|
221
|
-
* turning it back on keeps the key the search engines already checked. It
|
|
222
|
-
* is no secret: the whole point of it is that anybody can fetch it.
|
|
223
|
-
*/
|
|
224
|
-
indexNowKey: string;
|
|
225
|
-
/**
|
|
226
|
-
* How the site sends email, or `none` for a site that does not (TASK-53).
|
|
227
|
-
*
|
|
228
|
-
* The name of the provider only. The key or the SMTP password that makes it
|
|
229
|
-
* work is a credential and lives in `data/mail.json`, never here: this file
|
|
230
|
-
* is public, in git and published with the site.
|
|
231
|
-
*/
|
|
232
|
-
mailProvider: MailProviderName;
|
|
233
|
-
/** The display name on the From line. Falls back to the site title. */
|
|
234
|
-
mailFromName: string;
|
|
235
|
-
/**
|
|
236
|
-
* The address on the From line. Empty falls back to `no-reply@` at the base
|
|
237
|
-
* URL's host, which is what an unconfigured site would have to send as
|
|
238
|
-
* anyway — but a provider will only accept a sender it has verified, so a
|
|
239
|
-
* site that sends anything real sets this.
|
|
240
|
-
*/
|
|
241
|
-
mailFromAddress: string;
|
|
242
|
-
/** Where a reply to the site's mail should go. Empty means the From address. */
|
|
243
|
-
mailReplyTo: string;
|
|
244
|
-
/**
|
|
245
|
-
* Where a message from the contact form is sent (TASK-56).
|
|
246
|
-
*
|
|
247
|
-
* Empty falls back to the first admin with an email, so a site that has
|
|
248
|
-
* never visited this field still has somewhere to write. It is read when a
|
|
249
|
-
* message arrives and is never put on a render context, so it cannot appear
|
|
250
|
-
* in the HTML of the page the form is on however a theme is written.
|
|
251
|
-
*/
|
|
252
|
-
contactEmail: string;
|
|
253
|
-
/**
|
|
254
|
-
* Where a security researcher reports a vulnerability: the `Contact` lines
|
|
255
|
-
* of `/.well-known/security.txt` (RFC 9116, TASK-133), each a `mailto:`,
|
|
256
|
-
* `https:` or `tel:` URI, in the order the site prefers them.
|
|
257
|
-
*
|
|
258
|
-
* Empty means the site answers that path with a 404. There is no fallback
|
|
259
|
-
* to {@link SiteSettings.contactEmail}: that address is promised never to
|
|
260
|
-
* appear on the public site, and this one is published by definition.
|
|
261
|
-
*/
|
|
262
|
-
securityContacts: readonly string[];
|
|
263
|
-
/** The `Policy` line of security.txt: an https URL, or empty for none. */
|
|
264
|
-
securityPolicy: string;
|
|
265
|
-
/**
|
|
266
|
-
* The `Preferred-Languages` line of security.txt: language tags joined by
|
|
267
|
-
* `, `, or empty for none.
|
|
268
|
-
*/
|
|
269
|
-
securityLanguages: string;
|
|
270
|
-
/**
|
|
271
|
-
* The relay inboxes the site subscribes to (FEP-ae0c): a Mastodon-style
|
|
272
|
-
* relay boosts every public post it is sent, which is how a small site
|
|
273
|
-
* reaches instances nobody on it follows.
|
|
274
|
-
*
|
|
275
|
-
* Each is the relay's own inbox URL, absolute and whole — a relay's inbox is
|
|
276
|
-
* a path like `/user/_____relay_____/inbox`, not an origin. The list is
|
|
277
|
-
* edited one per line on the settings screen and held as an array in the
|
|
278
|
-
* file; where each subscription stands is in the database, because the
|
|
279
|
-
* handshake is not the site's to decide.
|
|
280
|
-
*/
|
|
281
|
-
relays: readonly string[];
|
|
282
|
-
/**
|
|
283
|
-
* Every menu the site holds, by name: `site.json`'s `menus`, each an ordered
|
|
284
|
-
* list of items a theme renders wherever it declares an area of that name
|
|
285
|
-
* and an Eleventy build reads out of the same file.
|
|
286
|
-
*
|
|
287
|
-
* Not a field of the settings form, and deliberately: a menu is content a
|
|
288
|
-
* site arranges rather than a switch it sets, and which menus there are to
|
|
289
|
-
* edit comes from the active theme. The Navigation screen is what writes
|
|
290
|
-
* them (TASK-108); a settings page carries them through a save untouched,
|
|
291
|
-
* the way it carries the archive renames.
|
|
292
|
-
*/
|
|
293
|
-
menus: NavigationMenus;
|
|
294
|
-
/**
|
|
295
|
-
* The taxonomy archives that have moved: one `{ taxonomy, from, to }` per
|
|
296
|
-
* term the taxonomy screens renamed or merged away, so the URL it used to
|
|
297
|
-
* live at can point at the one it lives at now.
|
|
298
|
-
*
|
|
299
|
-
* Not a field of the settings form: it is a record of what happened rather
|
|
300
|
-
* than a preference, and the taxonomy screens are what write it. Chains are collapsed as they are
|
|
301
|
-
* recorded, so the list answers every old URL in one hop.
|
|
302
|
-
*/
|
|
303
|
-
taxonomyRedirects: readonly TaxonomyRedirect[];
|
|
304
|
-
/**
|
|
305
|
-
* What the site publishes of a post's location (TASK-223, decision-29):
|
|
306
|
-
* nothing, the place's words, or the coordinates too. `none` by default,
|
|
307
|
-
* because the location is personal data and the author chooses to share it.
|
|
308
|
-
* Chosen on Settings > Privacy.
|
|
309
|
-
*/
|
|
310
|
-
locationSharing: LocationSharing;
|
|
311
|
-
/**
|
|
312
|
-
* The IndieAuth apps the owner lets sign in without PKCE (TASK-225), each a
|
|
313
|
-
* client_id. Empty, the default, means every app needs PKCE, as the
|
|
314
|
-
* IndieAuth spec says. Not a field of the settings form: Users > Connected
|
|
315
|
-
* apps edits it, and a settings save carries it, like the menus.
|
|
316
|
-
*/
|
|
317
|
-
clientsWithoutPkce: readonly string[];
|
|
318
|
-
}
|
|
3
|
+
import type { TaxonomyBases } from '../content/taxonomy.ts';
|
|
4
|
+
import type { SiteSettings } from './namespace.ts';
|
|
5
|
+
import type { RetentionPolicy } from './retention-policy.ts';
|
|
6
|
+
import type { RobotsPolicy } from './robots.ts';
|
|
7
|
+
export { DEFAULT_COMMENTS_CLOSE_AFTER_DAYS, SITE } from './namespace.ts';
|
|
8
|
+
export type { SiteLicense, SiteSettings } from './namespace.ts';
|
|
319
9
|
/** What a site says about one Content-Signal: yes, no, or nothing. */
|
|
320
10
|
export type ContentSignalChoice = '' | 'yes' | 'no';
|
|
321
11
|
export type LicenseChoice = '' | CreativeCommonsKey | 'custom';
|
|
322
|
-
/**
|
|
323
|
-
* What a site is worth before anybody has said otherwise.
|
|
324
|
-
*
|
|
325
|
-
* `baseUrl` is empty rather than a guess: only the resolved config knows what
|
|
326
|
-
* port the site is on, so the fallback is applied where the config is in hand.
|
|
327
|
-
*/
|
|
328
12
|
export declare const DEFAULT_SITE_SETTINGS: SiteSettings;
|
|
329
13
|
/** What the settings say the robots file should carry. */
|
|
330
14
|
export declare function robotsPolicyOf(settings: SiteSettings): RobotsPolicy;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/site/settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/site/settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAG5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAoC,YAAY,EAAE,MAAM,aAAa,CAAC;AAElF,OAAO,EAAE,iCAAiC,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACzE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEhE,sEAAsE;AACtE,MAAM,MAAM,mBAAmB,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI,CAAC;AAEpD,MAAM,MAAM,aAAa,GAAG,EAAE,GAAG,kBAAkB,GAAG,QAAQ,CAAC;AAE/D,eAAO,MAAM,qBAAqB,EAAE,YAAkC,CAAC;AAEvE,0DAA0D;AAC1D,wBAAgB,cAAc,CAAC,QAAQ,EAAE,YAAY,GAAG,YAAY,CAUnE;AAED,8EAA8E;AAC9E,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,YAAY,GAAG,aAAa,CAE/E;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,SAAS,GAAG,eAAe,CAAC,EACzD,QAAQ,EAAE,YAAY,GACrB,MAAM,CAGR;AAED,4DAA4D;AAC5D,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,YAAY,GAAG,eAAe,CAMzE"}
|
package/dist/site/settings.js
CHANGED
|
@@ -1,86 +1,23 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
* How long a post takes comments for, in days, before this is decided
|
|
6
|
-
* otherwise. WordPress's own default, and the age at which a post stops being
|
|
7
|
-
* a conversation and starts being a spam target.
|
|
8
|
-
*/
|
|
9
|
-
export const DEFAULT_COMMENTS_CLOSE_AFTER_DAYS = 14;
|
|
10
|
-
/**
|
|
11
|
-
* What a site is worth before anybody has said otherwise.
|
|
12
|
-
*
|
|
13
|
-
* `baseUrl` is empty rather than a guess: only the resolved config knows what
|
|
14
|
-
* port the site is on, so the fallback is applied where the config is in hand.
|
|
15
|
-
*/
|
|
16
|
-
export const DEFAULT_SITE_SETTINGS = {
|
|
17
|
-
title: 'Geekity',
|
|
18
|
-
tagline: '',
|
|
19
|
-
baseUrl: '',
|
|
20
|
-
timezone: 'UTC',
|
|
21
|
-
language: 'en',
|
|
22
|
-
locale: '',
|
|
23
|
-
postsPerPage: 10,
|
|
24
|
-
homepage: '',
|
|
25
|
-
postsPage: '',
|
|
26
|
-
author: '',
|
|
27
|
-
theme: PACKAGED_THEME,
|
|
28
|
-
icon: '',
|
|
29
|
-
license: '',
|
|
30
|
-
licenseUrl: '',
|
|
31
|
-
licenseName: '',
|
|
32
|
-
tagBase: DEFAULT_TAXONOMY_BASES.tag,
|
|
33
|
-
categoryBase: DEFAULT_TAXONOMY_BASES.category,
|
|
34
|
-
comments: true,
|
|
35
|
-
commentsCloseAfterDays: DEFAULT_COMMENTS_CLOSE_AFTER_DAYS,
|
|
36
|
-
// Forever, so a site that upgrades loses nothing it never chose to lose.
|
|
37
|
-
// `geekity init` writes the recommended periods for a new site.
|
|
38
|
-
commentEmailRetentionDays: 0,
|
|
39
|
-
addressHashRetentionDays: 0,
|
|
40
|
-
contactMessageRetentionDays: 0,
|
|
41
|
-
webmentionsSend: true,
|
|
42
|
-
webmentionsReceive: true,
|
|
43
|
-
notifyServer: DEFAULT_NOTIFY_SERVER,
|
|
44
|
-
feedUpdatePeriod: DEFAULT_FEED_CADENCE.period,
|
|
45
|
-
feedUpdateFrequency: DEFAULT_FEED_CADENCE.frequency,
|
|
46
|
-
aiCrawlers: 'allow',
|
|
47
|
-
contentSignalSearch: '',
|
|
48
|
-
contentSignalAiInput: '',
|
|
49
|
-
contentSignalAiTrain: '',
|
|
50
|
-
robotsRules: [],
|
|
51
|
-
llmsTxt: true,
|
|
52
|
-
indexNow: false,
|
|
53
|
-
indexNowKey: '',
|
|
54
|
-
mailProvider: 'none',
|
|
55
|
-
mailFromName: '',
|
|
56
|
-
mailFromAddress: '',
|
|
57
|
-
mailReplyTo: '',
|
|
58
|
-
contactEmail: '',
|
|
59
|
-
securityContacts: [],
|
|
60
|
-
securityPolicy: '',
|
|
61
|
-
securityLanguages: '',
|
|
62
|
-
relays: [],
|
|
63
|
-
locationSharing: 'none',
|
|
64
|
-
menus: {},
|
|
65
|
-
taxonomyRedirects: [],
|
|
66
|
-
clientsWithoutPkce: [],
|
|
67
|
-
};
|
|
1
|
+
import { defaultValues } from '../settings/declare.js';
|
|
2
|
+
import { SITE } from './namespace.js';
|
|
3
|
+
export { DEFAULT_COMMENTS_CLOSE_AFTER_DAYS, SITE } from './namespace.js';
|
|
4
|
+
export const DEFAULT_SITE_SETTINGS = defaultValues(SITE);
|
|
68
5
|
/** What the settings say the robots file should carry. */
|
|
69
6
|
export function robotsPolicyOf(settings) {
|
|
70
7
|
const choices = [
|
|
71
|
-
['search', settings.
|
|
72
|
-
['ai-input', settings.
|
|
73
|
-
['ai-train', settings.
|
|
8
|
+
['search', settings.content_signal_search],
|
|
9
|
+
['ai-input', settings.content_signal_ai_input],
|
|
10
|
+
['ai-train', settings.content_signal_ai_train],
|
|
74
11
|
];
|
|
75
12
|
const contentSignal = {};
|
|
76
13
|
for (const [name, choice] of choices)
|
|
77
14
|
if (choice !== '')
|
|
78
15
|
contentSignal[name] = choice;
|
|
79
|
-
return { aiCrawlers: settings.
|
|
16
|
+
return { aiCrawlers: settings.ai_crawlers, contentSignal, rules: settings.robots_rules };
|
|
80
17
|
}
|
|
81
18
|
/** The two archive bases the settings hold, as the URL builders want them. */
|
|
82
19
|
export function taxonomyBasesFromSettings(settings) {
|
|
83
|
-
return { tag: settings.
|
|
20
|
+
return { tag: settings.tag_base, category: settings.category_base };
|
|
84
21
|
}
|
|
85
22
|
/**
|
|
86
23
|
* The base URL actually in effect, and why.
|
|
@@ -94,14 +31,14 @@ export function taxonomyBasesFromSettings(settings) {
|
|
|
94
31
|
export function effectiveBaseUrl(config, settings) {
|
|
95
32
|
if (config.baseUrlSource !== 'default')
|
|
96
33
|
return config.baseUrl;
|
|
97
|
-
return settings.
|
|
34
|
+
return settings.base_url === '' ? config.baseUrl : settings.base_url;
|
|
98
35
|
}
|
|
99
36
|
/** The three retention periods, as the sweep reads them. */
|
|
100
37
|
export function retentionPolicyOf(settings) {
|
|
101
38
|
return {
|
|
102
|
-
commentEmailDays: settings.
|
|
103
|
-
addressHashDays: settings.
|
|
104
|
-
contactMessageDays: settings.
|
|
39
|
+
commentEmailDays: settings.comment_email_retention_days,
|
|
40
|
+
addressHashDays: settings.address_hash_retention_days,
|
|
41
|
+
contactMessageDays: settings.contact_message_retention_days,
|
|
105
42
|
};
|
|
106
43
|
}
|
|
107
44
|
//# sourceMappingURL=settings.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/site/settings.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/site/settings.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAKtC,OAAO,EAAE,iCAAiC,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAQzE,MAAM,CAAC,MAAM,qBAAqB,GAAiB,aAAa,CAAC,IAAI,CAAC,CAAC;AAEvE,0DAA0D;AAC1D,MAAM,UAAU,cAAc,CAAC,QAAsB;IACnD,MAAM,OAAO,GAA+C;QAC1D,CAAC,QAAQ,EAAE,QAAQ,CAAC,qBAAqB,CAAC;QAC1C,CAAC,UAAU,EAAE,QAAQ,CAAC,uBAAuB,CAAC;QAC9C,CAAC,UAAU,EAAE,QAAQ,CAAC,uBAAuB,CAAC;KAC/C,CAAC;IACF,MAAM,aAAa,GAAkB,EAAE,CAAC;IACxC,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,OAAO;QAAE,IAAI,MAAM,KAAK,EAAE;YAAE,aAAa,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;IAEtF,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,WAAW,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,CAAC,YAAY,EAAE,CAAC;AAC3F,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,yBAAyB,CAAC,QAAsB;IAC9D,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,aAAa,EAAE,CAAC;AACtE,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAAyD,EACzD,QAAsB;IAEtB,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,OAAO,CAAC;IAC9D,OAAO,QAAQ,CAAC,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACvE,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,iBAAiB,CAAC,QAAsB;IACtD,OAAO;QACL,gBAAgB,EAAE,QAAQ,CAAC,4BAA4B;QACvD,eAAe,EAAE,QAAQ,CAAC,2BAA2B;QACrD,kBAAkB,EAAE,QAAQ,CAAC,8BAA8B;KAC5D,CAAC;AACJ,CAAC"}
|
package/dist/site/site-json.d.ts
CHANGED
|
@@ -1,39 +1,8 @@
|
|
|
1
1
|
import type { SiteSettings } from './settings.ts';
|
|
2
|
-
/**
|
|
3
|
-
* A site's settings, as its `content/_data/site.json` says them right now.
|
|
4
|
-
*
|
|
5
|
-
* Read on every request that needs one rather than cached, which is what a
|
|
6
|
-
* source of truth being a file is worth: a hand edit shows on the public site,
|
|
7
|
-
* on the settings screen and in the actor document without a restart and
|
|
8
|
-
* without anything being told. The file is a few hundred bytes, so the read
|
|
9
|
-
* costs less than the parse of the template that is about to use it.
|
|
10
|
-
*
|
|
11
|
-
* A file that is missing, or one that will not parse, is the defaults rather
|
|
12
|
-
* than an error: a typo in `site.json` should leave a site up and answerable,
|
|
13
|
-
* with the settings screen there to put it right.
|
|
14
|
-
*/
|
|
15
|
-
export declare function readSiteSettings(contentDir: string): SiteSettings;
|
|
16
|
-
export declare function readSiteJson(contentDir: string): Record<string, unknown>;
|
|
17
2
|
export declare function parseSiteJson(source: string): Record<string, unknown>;
|
|
18
3
|
/** The absolute path of one site's `content/_data/site.json`. */
|
|
19
4
|
export declare function siteDataPath(contentDir: string): string;
|
|
20
|
-
/**
|
|
21
|
-
* `content/_data/site.json` as the settings it names, defaults filled in.
|
|
22
|
-
*
|
|
23
|
-
* Read tolerantly, key by key: a key of the wrong type, or one a site has
|
|
24
|
-
* never written, falls back to the default rather than taking the site down.
|
|
25
|
-
*/
|
|
26
5
|
export declare function settingsFromSiteJson(file: Record<string, unknown>): SiteSettings;
|
|
27
|
-
/**
|
|
28
|
-
* `content/_data/site.json` as it should read for these settings.
|
|
29
|
-
*
|
|
30
|
-
* Every key the settings model is written whether or not it has a value, so
|
|
31
|
-
* the file's shape is stable and an Eleventy template may reference
|
|
32
|
-
* `site.tagline` without guarding it, bar the few whose row writes nothing for
|
|
33
|
-
* a site that has made no choice. Every other key the file already had is
|
|
34
|
-
* kept: a site may put anything in there and reach it from its templates, and
|
|
35
|
-
* the settings form is not going to be the thing that throws it away.
|
|
36
|
-
*/
|
|
37
6
|
export declare function siteJsonFor(settings: SiteSettings, existing?: Record<string, unknown>): Record<string, unknown>;
|
|
38
7
|
/** The bytes of one settings object, as the file holds them. */
|
|
39
8
|
export declare function siteJsonText(settings: SiteSettings, existing: Record<string, unknown>): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"site-json.d.ts","sourceRoot":"","sources":["../../src/site/site-json.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"site-json.d.ts","sourceRoot":"","sources":["../../src/site/site-json.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAIlD,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAQrE;AAED,iEAAiE;AACjE,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,YAAY,CAEhF;AAED,wBAAgB,WAAW,CACzB,QAAQ,EAAE,YAAY,EACtB,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACrC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAIzB;AAED,gEAAgE;AAChE,wBAAgB,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAE9F;AAED;;;;;;;GAOG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,YAAY,CAAC;CACxB,GAAG,OAAO,CAAC,IAAI,CAAC,CAEhB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE;IAChD,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,YAAY,CAAC;CACjD,GAAG,OAAO,CAAC,YAAY,CAAC,CAUxB"}
|
package/dist/site/site-json.js
CHANGED
|
@@ -1,29 +1,11 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
|
-
import {
|
|
2
|
+
import { updateFileAtomically } from '../files/atomic.js';
|
|
3
|
+
import { fileWith, storedValues } from '../settings/registry.js';
|
|
3
4
|
import { isRecord } from '../util/guards.js';
|
|
4
5
|
import { SITE_DATA_FILE } from '../theme/site-data.js';
|
|
5
|
-
import {
|
|
6
|
+
import { SITE } from './namespace.js';
|
|
6
7
|
import { DEFAULT_SITE_SETTINGS } from './settings.js';
|
|
7
8
|
const RETIRED_KEYS = ['navigation', 'soloAuthor'];
|
|
8
|
-
/**
|
|
9
|
-
* A site's settings, as its `content/_data/site.json` says them right now.
|
|
10
|
-
*
|
|
11
|
-
* Read on every request that needs one rather than cached, which is what a
|
|
12
|
-
* source of truth being a file is worth: a hand edit shows on the public site,
|
|
13
|
-
* on the settings screen and in the actor document without a restart and
|
|
14
|
-
* without anything being told. The file is a few hundred bytes, so the read
|
|
15
|
-
* costs less than the parse of the template that is about to use it.
|
|
16
|
-
*
|
|
17
|
-
* A file that is missing, or one that will not parse, is the defaults rather
|
|
18
|
-
* than an error: a typo in `site.json` should leave a site up and answerable,
|
|
19
|
-
* with the settings screen there to put it right.
|
|
20
|
-
*/
|
|
21
|
-
export function readSiteSettings(contentDir) {
|
|
22
|
-
return settingsFromSiteJson(readSiteJson(contentDir));
|
|
23
|
-
}
|
|
24
|
-
export function readSiteJson(contentDir) {
|
|
25
|
-
return parseSiteJson(readFileIfPresentSync(siteDataPath(contentDir)) ?? '');
|
|
26
|
-
}
|
|
27
9
|
export function parseSiteJson(source) {
|
|
28
10
|
let parsed;
|
|
29
11
|
try {
|
|
@@ -38,37 +20,11 @@ export function parseSiteJson(source) {
|
|
|
38
20
|
export function siteDataPath(contentDir) {
|
|
39
21
|
return path.join(contentDir, ...SITE_DATA_FILE.split('/'));
|
|
40
22
|
}
|
|
41
|
-
function readSetting(settings, key, file) {
|
|
42
|
-
const value = ROWS[key].read(file);
|
|
43
|
-
if (value !== undefined)
|
|
44
|
-
settings[key] = value;
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* `content/_data/site.json` as the settings it names, defaults filled in.
|
|
48
|
-
*
|
|
49
|
-
* Read tolerantly, key by key: a key of the wrong type, or one a site has
|
|
50
|
-
* never written, falls back to the default rather than taking the site down.
|
|
51
|
-
*/
|
|
52
23
|
export function settingsFromSiteJson(file) {
|
|
53
|
-
|
|
54
|
-
for (const key of SETTING_KEYS)
|
|
55
|
-
readSetting(settings, key, file);
|
|
56
|
-
return settings;
|
|
24
|
+
return storedValues(SITE, file);
|
|
57
25
|
}
|
|
58
|
-
/**
|
|
59
|
-
* `content/_data/site.json` as it should read for these settings.
|
|
60
|
-
*
|
|
61
|
-
* Every key the settings model is written whether or not it has a value, so
|
|
62
|
-
* the file's shape is stable and an Eleventy template may reference
|
|
63
|
-
* `site.tagline` without guarding it, bar the few whose row writes nothing for
|
|
64
|
-
* a site that has made no choice. Every other key the file already had is
|
|
65
|
-
* kept: a site may put anything in there and reach it from its templates, and
|
|
66
|
-
* the settings form is not going to be the thing that throws it away.
|
|
67
|
-
*/
|
|
68
26
|
export function siteJsonFor(settings, existing = {}) {
|
|
69
|
-
const file =
|
|
70
|
-
for (const key of SETTING_KEYS)
|
|
71
|
-
ROWS[key].write(file, settings);
|
|
27
|
+
const file = fileWith(SITE, settings, existing);
|
|
72
28
|
for (const key of RETIRED_KEYS)
|
|
73
29
|
delete file[key];
|
|
74
30
|
return file;
|