@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
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import type { TaxonomyRedirect } from '../content/taxonomy.ts';
|
|
2
|
+
import type { CreateSettingsRegistryOptions } from '../settings/registry.ts';
|
|
3
|
+
import type { ChangedBy, SettingsRegistry, ValuesOf } from '../settings/types.ts';
|
|
4
|
+
import type { NavigationMenus } from './navigation.ts';
|
|
5
|
+
import type { ContentSignalChoice, LicenseChoice } from './settings.ts';
|
|
6
|
+
export declare const DEFAULT_COMMENTS_CLOSE_AFTER_DAYS = 14;
|
|
7
|
+
/**
|
|
8
|
+
* What readers may do with the site's posts. `site.json` holds a Creative
|
|
9
|
+
* Commons key, or a custom license's URL, under `license`, and a custom
|
|
10
|
+
* license's name under `licenseName`, the way a post's front matter does.
|
|
11
|
+
*/
|
|
12
|
+
export interface SiteLicense {
|
|
13
|
+
/** Empty for no license, which is all rights reserved. */
|
|
14
|
+
readonly choice: LicenseChoice;
|
|
15
|
+
/** A custom license's terms, as an absolute URL. Empty unless `choice` is `custom`. */
|
|
16
|
+
readonly url: string;
|
|
17
|
+
/** A custom license's name. Empty unless `choice` is `custom`. */
|
|
18
|
+
readonly name: string;
|
|
19
|
+
}
|
|
20
|
+
export declare function withoutRetiredKeys(file: Readonly<Record<string, unknown>>): Record<string, unknown>;
|
|
21
|
+
export declare function mintMissingIndexNowKey(settings: SettingsRegistry, by: ChangedBy): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* The site's settings: `content/_data/site.json` (decision-9, decision-53).
|
|
24
|
+
*
|
|
25
|
+
* Each key keeps the spelling the file has always used through `fileKey` or
|
|
26
|
+
* `fileKeys`, so themes, Eleventy builds and hand edits read the file as
|
|
27
|
+
* before. Reads are tolerant, key by key: a value of the wrong type is set
|
|
28
|
+
* aside for the default rather than taking the site down. The checks are what
|
|
29
|
+
* a write must pass on top of parsing. A write stores every declared key, so
|
|
30
|
+
* the file a theme or an Eleventy build reads holds each value in effect.
|
|
31
|
+
*/
|
|
32
|
+
export declare const SITE: import("../settings/types.ts").DeclaredNamespace & {
|
|
33
|
+
readonly title: import("../settings/types.ts").SettingRef<string>;
|
|
34
|
+
readonly tagline: import("../settings/types.ts").SettingRef<string>;
|
|
35
|
+
readonly base_url: import("../settings/types.ts").SettingRef<string>;
|
|
36
|
+
readonly posts_per_page: import("../settings/types.ts").SettingRef<number>;
|
|
37
|
+
readonly timezone: import("../settings/types.ts").SettingRef<string>;
|
|
38
|
+
readonly language: import("../settings/types.ts").SettingRef<string>;
|
|
39
|
+
readonly tag_base: import("../settings/types.ts").SettingRef<string>;
|
|
40
|
+
readonly category_base: import("../settings/types.ts").SettingRef<string>;
|
|
41
|
+
readonly comments: import("../settings/types.ts").SettingRef<boolean>;
|
|
42
|
+
readonly comments_on_posts: import("../settings/types.ts").SettingRef<boolean>;
|
|
43
|
+
readonly comments_on_pages: import("../settings/types.ts").SettingRef<boolean>;
|
|
44
|
+
readonly comments_close_after_days: import("../settings/types.ts").SettingRef<number>;
|
|
45
|
+
readonly comment_email_retention_days: import("../settings/types.ts").SettingRef<number>;
|
|
46
|
+
readonly address_hash_retention_days: import("../settings/types.ts").SettingRef<number>;
|
|
47
|
+
readonly contact_message_retention_days: import("../settings/types.ts").SettingRef<number>;
|
|
48
|
+
readonly webmentions_send: import("../settings/types.ts").SettingRef<boolean>;
|
|
49
|
+
readonly webmentions_receive: import("../settings/types.ts").SettingRef<boolean>;
|
|
50
|
+
readonly notify_server: import("../settings/types.ts").SettingRef<string>;
|
|
51
|
+
readonly feed_update_period: import("../settings/types.ts").SettingRef<"daily" | "hourly" | "monthly" | "weekly" | "yearly">;
|
|
52
|
+
readonly feed_update_frequency: import("../settings/types.ts").SettingRef<number>;
|
|
53
|
+
readonly ai_crawlers: import("../settings/types.ts").SettingRef<"allow" | "block-all" | "block-training">;
|
|
54
|
+
readonly content_signal_search: import("../settings/types.ts").SettingRef<ContentSignalChoice>;
|
|
55
|
+
readonly content_signal_ai_input: import("../settings/types.ts").SettingRef<ContentSignalChoice>;
|
|
56
|
+
readonly content_signal_ai_train: import("../settings/types.ts").SettingRef<ContentSignalChoice>;
|
|
57
|
+
readonly robots_rules: import("../settings/types.ts").SettingRef<readonly string[]>;
|
|
58
|
+
readonly llms_txt: import("../settings/types.ts").SettingRef<boolean>;
|
|
59
|
+
readonly index_now: import("../settings/types.ts").SettingRef<boolean>;
|
|
60
|
+
readonly mail_provider: import("../settings/types.ts").SettingRef<import("../mail/provider.ts").MailProviderName>;
|
|
61
|
+
readonly mail_from_name: import("../settings/types.ts").SettingRef<string>;
|
|
62
|
+
readonly mail_from_address: import("../settings/types.ts").SettingRef<string>;
|
|
63
|
+
readonly mail_reply_to: import("../settings/types.ts").SettingRef<string>;
|
|
64
|
+
readonly contact_email: import("../settings/types.ts").SettingRef<string>;
|
|
65
|
+
readonly security_contacts: import("../settings/types.ts").SettingRef<readonly string[]>;
|
|
66
|
+
readonly security_policy: import("../settings/types.ts").SettingRef<string>;
|
|
67
|
+
readonly security_languages: import("../settings/types.ts").SettingRef<string>;
|
|
68
|
+
readonly relays: import("../settings/types.ts").SettingRef<readonly string[]>;
|
|
69
|
+
readonly location_sharing: import("../settings/types.ts").SettingRef<"exact" | "none" | "place">;
|
|
70
|
+
readonly menus: import("../settings/types.ts").SettingRef<NavigationMenus>;
|
|
71
|
+
readonly taxonomy_redirects: import("../settings/types.ts").SettingRef<readonly TaxonomyRedirect[]>;
|
|
72
|
+
readonly homepage: import("../settings/types.ts").SettingRef<string>;
|
|
73
|
+
readonly posts_page: import("../settings/types.ts").SettingRef<string>;
|
|
74
|
+
readonly theme: import("../settings/types.ts").SettingRef<string>;
|
|
75
|
+
readonly locale: import("../settings/types.ts").SettingRef<string>;
|
|
76
|
+
readonly author: import("../settings/types.ts").SettingRef<string>;
|
|
77
|
+
readonly icon: import("../settings/types.ts").SettingRef<string>;
|
|
78
|
+
readonly avatar: import("../settings/types.ts").SettingRef<string>;
|
|
79
|
+
readonly license: import("../settings/types.ts").SettingRef<SiteLicense>;
|
|
80
|
+
readonly index_now_key: import("../settings/types.ts").SettingRef<string>;
|
|
81
|
+
readonly clients_without_pkce: import("../settings/types.ts").SettingRef<readonly string[]>;
|
|
82
|
+
};
|
|
83
|
+
/** The site's settings in effect. */
|
|
84
|
+
export type SiteSettings = ValuesOf<typeof SITE>;
|
|
85
|
+
export declare function createSettings(options: CreateSettingsRegistryOptions): SettingsRegistry;
|
|
86
|
+
export declare function siteJsonPath(contentDir: string): string;
|
|
87
|
+
export declare function parseSiteJson(source: string): Record<string, unknown>;
|
|
88
|
+
//# sourceMappingURL=namespace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"namespace.d.ts","sourceRoot":"","sources":["../../src/site/namespace.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAe/D,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,KAAK,EACV,SAAS,EAET,gBAAgB,EAEhB,QAAQ,EACT,MAAM,sBAAsB,CAAC;AAO9B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAavD,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAExE,eAAO,MAAM,iCAAiC,KAAK,CAAC;AAEpD;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,0DAA0D;IAC1D,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,uFAAuF;IACvF,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAqHD,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACtC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAIzB;AAED,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,gBAAgB,EAC1B,EAAE,EAAE,SAAS,GACZ,OAAO,CAAC,IAAI,CAAC,CAYf;AAQD;;;;;;;;;GASG;AACH,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4Tf,CAAC;AAEH,qCAAqC;AACrC,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAcjD,wBAAgB,cAAc,CAAC,OAAO,EAAE,6BAA6B,GAAG,gBAAgB,CAEvF;AAED,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAOrE"}
|
|
@@ -0,0 +1,471 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { LANGUAGE_TAG_PATTERN } from '../content/language.js';
|
|
3
|
+
import { classifyLicense, isLicenseUrl, NO_LICENSE } from '../content/license.js';
|
|
4
|
+
import { canonicalLocale } from '../content/locale.js';
|
|
5
|
+
import { LOCATION_SHARING } from '../content/location.js';
|
|
6
|
+
import { DEFAULT_TAXONOMY_BASES, taxonomyBaseProblems, taxonomyRedirectsOf, } from '../content/taxonomy.js';
|
|
7
|
+
import { parseIconSetting } from '../images/icons.js';
|
|
8
|
+
import { sourceFile } from '../images/paths.js';
|
|
9
|
+
import { MAIL_PROVIDERS } from '../mail/provider.js';
|
|
10
|
+
import { declareNamespace } from '../settings/declare.js';
|
|
11
|
+
import { boolean, jsonValue, nonEmptyText, oneOf, optionalText, text, wholeNumber, } from '../settings/kinds.js';
|
|
12
|
+
import { createSettingsRegistry, overridden } from '../settings/registry.js';
|
|
13
|
+
import { PACKAGED_THEME, themeNameProblem } from '../theme/themes.js';
|
|
14
|
+
import { isFileSync } from '../util/files.js';
|
|
15
|
+
import { isRecord } from '../util/guards.js';
|
|
16
|
+
import { DEFAULT_FEED_CADENCE, DEFAULT_NOTIFY_SERVER, UPDATE_PERIODS } from './feed-settings.js';
|
|
17
|
+
import { generateIndexNowKey, isIndexNowKey } from './indexnow-key.js';
|
|
18
|
+
import { menusOf } from './navigation.js';
|
|
19
|
+
import { AI_CRAWLER_POLICIES, robotsRuleLines } from './robots.js';
|
|
20
|
+
import { clientsWithoutPkceOf, EMAIL_PATTERN, isLicenseChoice, isValidTimezone, normalizeBaseUrl, normalizeLanguageList, normalizeSecurityPolicy, relayList, securityContactList, } from './setting-values.js';
|
|
21
|
+
export const DEFAULT_COMMENTS_CLOSE_AFTER_DAYS = 14;
|
|
22
|
+
const NO_SITE_LICENSE = { choice: '', url: '', name: '' };
|
|
23
|
+
const license = {
|
|
24
|
+
fromJson(raw) {
|
|
25
|
+
const file = isRecord(raw) ? raw : {};
|
|
26
|
+
const said = classifyLicense(file['license']);
|
|
27
|
+
if (said === undefined || said === NO_LICENSE) {
|
|
28
|
+
return { ok: false, problem: 'must be a Creative Commons key or the URL of the terms' };
|
|
29
|
+
}
|
|
30
|
+
if ('key' in said)
|
|
31
|
+
return { ok: true, value: { choice: said.key, url: '', name: '' } };
|
|
32
|
+
const name = file['licenseName'];
|
|
33
|
+
return {
|
|
34
|
+
ok: true,
|
|
35
|
+
value: { choice: 'custom', url: said.url, name: typeof name === 'string' ? name.trim() : '' },
|
|
36
|
+
};
|
|
37
|
+
},
|
|
38
|
+
fromText: (value) => license.fromJson({ license: value }),
|
|
39
|
+
toJson: (value) => value.choice === ''
|
|
40
|
+
? undefined
|
|
41
|
+
: value.choice === 'custom'
|
|
42
|
+
? { license: value.url, licenseName: value.name }
|
|
43
|
+
: { license: value.choice },
|
|
44
|
+
toText: (value) => (value.choice === 'custom' ? value.url : value.choice),
|
|
45
|
+
};
|
|
46
|
+
function lines(parse) {
|
|
47
|
+
return jsonValue((raw) => Array.isArray(raw)
|
|
48
|
+
? { ok: true, value: parse(raw.filter((entry) => typeof entry === 'string').join('\n')) }
|
|
49
|
+
: { ok: false, problem: 'must be a list of text' }, (value) => [...value]);
|
|
50
|
+
}
|
|
51
|
+
function normalized(normalize) {
|
|
52
|
+
return {
|
|
53
|
+
...text,
|
|
54
|
+
fromJson: (raw) => typeof raw === 'string'
|
|
55
|
+
? { ok: true, value: normalize(raw) ?? '' }
|
|
56
|
+
: { ok: false, problem: 'must be text' },
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
const menus = jsonValue((raw) => ({ ok: true, value: menusOf(raw) }), (value) => Object.fromEntries(Object.entries(value).map(([name, items]) => [name, items.map((item) => ({ ...item }))])));
|
|
60
|
+
const taxonomyRedirects = jsonValue((raw) => Array.isArray(raw)
|
|
61
|
+
? { ok: true, value: taxonomyRedirectsOf(raw) }
|
|
62
|
+
: { ok: false, problem: 'must be a list of redirects' }, (value) => value.map((entry) => ({ ...entry })));
|
|
63
|
+
const clientsWithoutPkce = jsonValue((raw) => Array.isArray(raw)
|
|
64
|
+
? { ok: true, value: clientsWithoutPkceOf(raw) }
|
|
65
|
+
: { ok: false, problem: 'must be a list of client ids' }, (value) => (value.length === 0 ? undefined : [...value]));
|
|
66
|
+
const indexNowKey = {
|
|
67
|
+
...optionalText,
|
|
68
|
+
fromJson: (raw) => typeof raw === 'string' && isIndexNowKey(raw)
|
|
69
|
+
? { ok: true, value: raw }
|
|
70
|
+
: { ok: false, problem: 'must be 8 to 128 letters, digits or dashes' },
|
|
71
|
+
};
|
|
72
|
+
const icon = {
|
|
73
|
+
...optionalText,
|
|
74
|
+
fromJson: (raw) => typeof raw === 'string'
|
|
75
|
+
? { ok: true, value: raw.trim() }
|
|
76
|
+
: { ok: false, problem: 'must be text' },
|
|
77
|
+
};
|
|
78
|
+
const contentSignal = oneOf(['', 'yes', 'no']);
|
|
79
|
+
function emailOrEmpty(what) {
|
|
80
|
+
return (value) => value !== '' && !EMAIL_PATTERN.test(value)
|
|
81
|
+
? `${what} is an email address, or empty.`
|
|
82
|
+
: undefined;
|
|
83
|
+
}
|
|
84
|
+
function taxonomyBase(which) {
|
|
85
|
+
return (_value, after) => taxonomyBaseProblems({
|
|
86
|
+
tag: String(after['tag_base']),
|
|
87
|
+
category: String(after['category_base']),
|
|
88
|
+
})[which];
|
|
89
|
+
}
|
|
90
|
+
function frontPage(after) {
|
|
91
|
+
const homepage = String(after['homepage']);
|
|
92
|
+
const postsPage = String(after['posts_page']);
|
|
93
|
+
if (postsPage === '')
|
|
94
|
+
return undefined;
|
|
95
|
+
if (homepage === '')
|
|
96
|
+
return 'A posts page needs a homepage.';
|
|
97
|
+
if (postsPage === homepage)
|
|
98
|
+
return 'The homepage and the posts page have to be two different pages.';
|
|
99
|
+
return undefined;
|
|
100
|
+
}
|
|
101
|
+
const RETIRED_KEYS = ['navigation', 'soloAuthor'];
|
|
102
|
+
export function withoutRetiredKeys(file) {
|
|
103
|
+
const kept = { ...file };
|
|
104
|
+
for (const key of RETIRED_KEYS)
|
|
105
|
+
delete kept[key];
|
|
106
|
+
return kept;
|
|
107
|
+
}
|
|
108
|
+
export async function mintMissingIndexNowKey(settings, by) {
|
|
109
|
+
if (!(await settings.get(SITE.index_now)))
|
|
110
|
+
return;
|
|
111
|
+
const key = await settings.resolve(SITE.index_now_key);
|
|
112
|
+
if (key.value !== '' || overridden(key.source))
|
|
113
|
+
return;
|
|
114
|
+
const minted = await settings.set('site', new Map([['index_now_key', generateIndexNowKey()]]), by);
|
|
115
|
+
if (!minted.ok) {
|
|
116
|
+
console.error(`No IndexNow key was minted: ${Object.values(minted.problems).join(' ')}`);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
async function mintIndexNowKey({ next, by, settings }) {
|
|
120
|
+
if (next)
|
|
121
|
+
await mintMissingIndexNowKey(settings, by);
|
|
122
|
+
}
|
|
123
|
+
const SITE_JSON = path.join('_data', 'site.json');
|
|
124
|
+
/**
|
|
125
|
+
* The site's settings: `content/_data/site.json` (decision-9, decision-53).
|
|
126
|
+
*
|
|
127
|
+
* Each key keeps the spelling the file has always used through `fileKey` or
|
|
128
|
+
* `fileKeys`, so themes, Eleventy builds and hand edits read the file as
|
|
129
|
+
* before. Reads are tolerant, key by key: a value of the wrong type is set
|
|
130
|
+
* aside for the default rather than taking the site down. The checks are what
|
|
131
|
+
* a write must pass on top of parsing. A write stores every declared key, so
|
|
132
|
+
* the file a theme or an Eleventy build reads holds each value in effect.
|
|
133
|
+
*/
|
|
134
|
+
export const SITE = declareNamespace({
|
|
135
|
+
namespace: 'site',
|
|
136
|
+
storage: { kind: 'file', under: 'content', path: SITE_JSON },
|
|
137
|
+
envPrefix: 'GEEKITY_SITE',
|
|
138
|
+
legacy: (raw) => (isRecord(raw) ? withoutRetiredKeys(raw) : raw),
|
|
139
|
+
writtenWhole: true,
|
|
140
|
+
settings: {
|
|
141
|
+
title: {
|
|
142
|
+
type: nonEmptyText,
|
|
143
|
+
default: 'Geekity',
|
|
144
|
+
description: 'The site title, shown in the header, the <title> and the feeds.',
|
|
145
|
+
},
|
|
146
|
+
tagline: { type: text, default: '', description: 'One line under the title.' },
|
|
147
|
+
base_url: {
|
|
148
|
+
fileKey: 'url',
|
|
149
|
+
type: text,
|
|
150
|
+
default: '',
|
|
151
|
+
description: 'The public origin. Empty means the configured one.',
|
|
152
|
+
override: {
|
|
153
|
+
field: 'baseUrl',
|
|
154
|
+
value: (config) => (config.baseUrlSource !== 'default' ? config.baseUrl : undefined),
|
|
155
|
+
},
|
|
156
|
+
check: (value) => value === '' || normalizeBaseUrl(value) !== undefined
|
|
157
|
+
? undefined
|
|
158
|
+
: 'The base URL has to be an absolute http:// or https:// URL.',
|
|
159
|
+
},
|
|
160
|
+
posts_per_page: {
|
|
161
|
+
fileKey: 'postsPerPage',
|
|
162
|
+
type: wholeNumber(1, { coerced: true }),
|
|
163
|
+
default: 10,
|
|
164
|
+
description: 'How many posts a listing page holds.',
|
|
165
|
+
},
|
|
166
|
+
timezone: {
|
|
167
|
+
type: nonEmptyText,
|
|
168
|
+
default: 'UTC',
|
|
169
|
+
description: 'The IANA zone dates are written in, such as Europe/London.',
|
|
170
|
+
check: (value) => isValidTimezone(value) ? undefined : 'That is not an IANA time zone name.',
|
|
171
|
+
},
|
|
172
|
+
language: {
|
|
173
|
+
type: nonEmptyText,
|
|
174
|
+
default: 'en',
|
|
175
|
+
description: 'The site language as a BCP 47 tag.',
|
|
176
|
+
check: (value) => LANGUAGE_TAG_PATTERN.test(value) ? undefined : 'That is not a language tag.',
|
|
177
|
+
},
|
|
178
|
+
tag_base: {
|
|
179
|
+
fileKey: 'tagBase',
|
|
180
|
+
type: nonEmptyText,
|
|
181
|
+
default: DEFAULT_TAXONOMY_BASES.tag,
|
|
182
|
+
description: 'The first URL segment of the tag archives.',
|
|
183
|
+
check: taxonomyBase('tag'),
|
|
184
|
+
},
|
|
185
|
+
category_base: {
|
|
186
|
+
fileKey: 'categoryBase',
|
|
187
|
+
type: nonEmptyText,
|
|
188
|
+
default: DEFAULT_TAXONOMY_BASES.category,
|
|
189
|
+
description: 'The first URL segment of the category archives.',
|
|
190
|
+
check: taxonomyBase('category'),
|
|
191
|
+
},
|
|
192
|
+
comments: { type: boolean, default: true, description: 'Whether the site takes comments.' },
|
|
193
|
+
comments_on_posts: {
|
|
194
|
+
fileKey: 'commentsOnPosts',
|
|
195
|
+
type: boolean,
|
|
196
|
+
default: true,
|
|
197
|
+
description: 'Whether a post takes comments when its front matter does not say.',
|
|
198
|
+
},
|
|
199
|
+
comments_on_pages: {
|
|
200
|
+
fileKey: 'commentsOnPages',
|
|
201
|
+
type: boolean,
|
|
202
|
+
default: false,
|
|
203
|
+
description: 'Whether a page takes comments when its front matter does not say.',
|
|
204
|
+
},
|
|
205
|
+
comments_close_after_days: {
|
|
206
|
+
fileKey: 'commentsCloseAfterDays',
|
|
207
|
+
type: wholeNumber(0, { coerced: true }),
|
|
208
|
+
default: DEFAULT_COMMENTS_CLOSE_AFTER_DAYS,
|
|
209
|
+
description: 'How many days after its date a document stops taking comments. 0 never closes one.',
|
|
210
|
+
},
|
|
211
|
+
comment_email_retention_days: {
|
|
212
|
+
fileKey: 'commentEmailRetentionDays',
|
|
213
|
+
type: wholeNumber(0),
|
|
214
|
+
default: 0,
|
|
215
|
+
description: 'How many days a comment keeps its author email. 0 keeps it forever.',
|
|
216
|
+
},
|
|
217
|
+
address_hash_retention_days: {
|
|
218
|
+
fileKey: 'addressHashRetentionDays',
|
|
219
|
+
type: wholeNumber(0),
|
|
220
|
+
default: 0,
|
|
221
|
+
description: 'How many days a comment or message keeps its address hash. 0 keeps it forever.',
|
|
222
|
+
},
|
|
223
|
+
contact_message_retention_days: {
|
|
224
|
+
fileKey: 'contactMessageRetentionDays',
|
|
225
|
+
type: wholeNumber(0),
|
|
226
|
+
default: 0,
|
|
227
|
+
description: 'How many days a contact message is kept. 0 keeps it forever.',
|
|
228
|
+
},
|
|
229
|
+
webmentions_send: {
|
|
230
|
+
fileKey: 'webmentionsSend',
|
|
231
|
+
type: boolean,
|
|
232
|
+
default: true,
|
|
233
|
+
description: 'Whether the site tells the pages a post links to.',
|
|
234
|
+
},
|
|
235
|
+
webmentions_receive: {
|
|
236
|
+
fileKey: 'webmentionsReceive',
|
|
237
|
+
type: boolean,
|
|
238
|
+
default: true,
|
|
239
|
+
description: 'Whether the site accepts webmentions.',
|
|
240
|
+
},
|
|
241
|
+
notify_server: {
|
|
242
|
+
fileKey: 'notifyServer',
|
|
243
|
+
type: text,
|
|
244
|
+
default: DEFAULT_NOTIFY_SERVER,
|
|
245
|
+
description: 'The rssCloud and WebSub server told when a feed changes. Empty turns it off.',
|
|
246
|
+
check: (value) => value === '' || normalizeBaseUrl(value) !== undefined
|
|
247
|
+
? undefined
|
|
248
|
+
: 'A notify server is an absolute http:// or https:// URL, or empty.',
|
|
249
|
+
},
|
|
250
|
+
feed_update_period: {
|
|
251
|
+
fileKey: 'feedUpdatePeriod',
|
|
252
|
+
type: oneOf(UPDATE_PERIODS),
|
|
253
|
+
default: DEFAULT_FEED_CADENCE.period,
|
|
254
|
+
description: 'The period the RSS feeds tell a reader to poll in.',
|
|
255
|
+
},
|
|
256
|
+
feed_update_frequency: {
|
|
257
|
+
fileKey: 'feedUpdateFrequency',
|
|
258
|
+
type: wholeNumber(1),
|
|
259
|
+
default: DEFAULT_FEED_CADENCE.frequency,
|
|
260
|
+
description: 'How many polls per period.',
|
|
261
|
+
},
|
|
262
|
+
ai_crawlers: {
|
|
263
|
+
fileKey: 'aiCrawlers',
|
|
264
|
+
type: oneOf(AI_CRAWLER_POLICIES),
|
|
265
|
+
default: 'allow',
|
|
266
|
+
description: 'How the robots file treats the crawlers that feed AI products.',
|
|
267
|
+
},
|
|
268
|
+
content_signal_search: {
|
|
269
|
+
fileKey: 'contentSignalSearch',
|
|
270
|
+
type: contentSignal,
|
|
271
|
+
default: '',
|
|
272
|
+
description: 'The search Content-Signal: yes, no, or empty for none.',
|
|
273
|
+
},
|
|
274
|
+
content_signal_ai_input: {
|
|
275
|
+
fileKey: 'contentSignalAiInput',
|
|
276
|
+
type: contentSignal,
|
|
277
|
+
default: '',
|
|
278
|
+
description: 'The ai-input Content-Signal: yes, no, or empty for none.',
|
|
279
|
+
},
|
|
280
|
+
content_signal_ai_train: {
|
|
281
|
+
fileKey: 'contentSignalAiTrain',
|
|
282
|
+
type: contentSignal,
|
|
283
|
+
default: '',
|
|
284
|
+
description: 'The ai-train Content-Signal: yes, no, or empty for none.',
|
|
285
|
+
},
|
|
286
|
+
robots_rules: {
|
|
287
|
+
fileKey: 'robotsRules',
|
|
288
|
+
type: lines((typed) => robotsRuleLines([typed])),
|
|
289
|
+
default: [],
|
|
290
|
+
description: 'Lines the robots file carries beyond the CMS own.',
|
|
291
|
+
},
|
|
292
|
+
llms_txt: {
|
|
293
|
+
fileKey: 'llmsTxt',
|
|
294
|
+
type: boolean,
|
|
295
|
+
default: true,
|
|
296
|
+
description: 'Whether the site serves /llms.txt.',
|
|
297
|
+
},
|
|
298
|
+
index_now: {
|
|
299
|
+
fileKey: 'indexNow',
|
|
300
|
+
type: boolean,
|
|
301
|
+
default: false,
|
|
302
|
+
description: 'Whether the site tells the IndexNow search engines what changed.',
|
|
303
|
+
onChange: mintIndexNowKey,
|
|
304
|
+
},
|
|
305
|
+
mail_provider: {
|
|
306
|
+
fileKey: 'mailProvider',
|
|
307
|
+
type: oneOf(MAIL_PROVIDERS),
|
|
308
|
+
default: 'none',
|
|
309
|
+
description: 'How the site sends email.',
|
|
310
|
+
},
|
|
311
|
+
mail_from_name: {
|
|
312
|
+
fileKey: 'mailFromName',
|
|
313
|
+
type: text,
|
|
314
|
+
default: '',
|
|
315
|
+
description: 'The display name on the From line. Empty means the site title.',
|
|
316
|
+
},
|
|
317
|
+
mail_from_address: {
|
|
318
|
+
fileKey: 'mailFromAddress',
|
|
319
|
+
type: text,
|
|
320
|
+
default: '',
|
|
321
|
+
description: 'The address on the From line. Empty means no-reply at the site host.',
|
|
322
|
+
check: emailOrEmpty('A From address'),
|
|
323
|
+
},
|
|
324
|
+
mail_reply_to: {
|
|
325
|
+
fileKey: 'mailReplyTo',
|
|
326
|
+
type: text,
|
|
327
|
+
default: '',
|
|
328
|
+
description: 'Where replies to the site mail go. Empty means the From address.',
|
|
329
|
+
check: emailOrEmpty('A reply-to'),
|
|
330
|
+
},
|
|
331
|
+
contact_email: {
|
|
332
|
+
fileKey: 'contactEmail',
|
|
333
|
+
type: text,
|
|
334
|
+
default: '',
|
|
335
|
+
description: 'Where contact form messages go. Empty means the first admin with an email.',
|
|
336
|
+
check: emailOrEmpty('A contact address'),
|
|
337
|
+
},
|
|
338
|
+
security_contacts: {
|
|
339
|
+
fileKey: 'securityContacts',
|
|
340
|
+
type: lines(securityContactList),
|
|
341
|
+
default: [],
|
|
342
|
+
description: 'The Contact lines of security.txt. Empty answers that path with a 404.',
|
|
343
|
+
},
|
|
344
|
+
security_policy: {
|
|
345
|
+
fileKey: 'securityPolicy',
|
|
346
|
+
type: normalized(normalizeSecurityPolicy),
|
|
347
|
+
default: '',
|
|
348
|
+
description: 'The Policy line of security.txt, an https URL.',
|
|
349
|
+
},
|
|
350
|
+
security_languages: {
|
|
351
|
+
fileKey: 'securityLanguages',
|
|
352
|
+
type: normalized(normalizeLanguageList),
|
|
353
|
+
default: '',
|
|
354
|
+
description: 'The Preferred-Languages line of security.txt.',
|
|
355
|
+
},
|
|
356
|
+
relays: {
|
|
357
|
+
type: lines(relayList),
|
|
358
|
+
default: [],
|
|
359
|
+
description: 'The relay inboxes the site subscribes to.',
|
|
360
|
+
},
|
|
361
|
+
location_sharing: {
|
|
362
|
+
fileKey: 'locationSharing',
|
|
363
|
+
type: oneOf(LOCATION_SHARING),
|
|
364
|
+
default: 'none',
|
|
365
|
+
description: 'What the site publishes of a post location: none, place or exact.',
|
|
366
|
+
},
|
|
367
|
+
menus: {
|
|
368
|
+
type: menus,
|
|
369
|
+
default: {},
|
|
370
|
+
description: 'Every menu the site holds, by name.',
|
|
371
|
+
},
|
|
372
|
+
taxonomy_redirects: {
|
|
373
|
+
fileKey: 'taxonomyRedirects',
|
|
374
|
+
type: taxonomyRedirects,
|
|
375
|
+
default: [],
|
|
376
|
+
description: 'The taxonomy archives that moved, each from an old term to a new one.',
|
|
377
|
+
},
|
|
378
|
+
homepage: {
|
|
379
|
+
type: optionalText,
|
|
380
|
+
default: '',
|
|
381
|
+
description: 'The slug of the page served at /, or empty for the latest posts.',
|
|
382
|
+
check: (_value, after) => frontPage(after),
|
|
383
|
+
},
|
|
384
|
+
posts_page: {
|
|
385
|
+
fileKey: 'postsPage',
|
|
386
|
+
type: optionalText,
|
|
387
|
+
default: '',
|
|
388
|
+
description: 'The slug of the page that carries the post listing beside a homepage.',
|
|
389
|
+
check: (_value, after) => frontPage(after),
|
|
390
|
+
},
|
|
391
|
+
theme: {
|
|
392
|
+
type: optionalText,
|
|
393
|
+
default: PACKAGED_THEME,
|
|
394
|
+
description: 'The theme directory the site renders through. Empty means the packaged one.',
|
|
395
|
+
check: (value) => (value === '' ? undefined : themeNameProblem(value)),
|
|
396
|
+
},
|
|
397
|
+
locale: {
|
|
398
|
+
type: optionalText,
|
|
399
|
+
default: '',
|
|
400
|
+
description: 'The locale dates and counts are written in. Empty means the language.',
|
|
401
|
+
check: (value) => value === '' || canonicalLocale(value) !== undefined ? undefined : 'That is not a locale.',
|
|
402
|
+
},
|
|
403
|
+
author: {
|
|
404
|
+
type: optionalText,
|
|
405
|
+
default: '',
|
|
406
|
+
description: 'The username whose blog this is, or empty for a site with several authors.',
|
|
407
|
+
},
|
|
408
|
+
icon: {
|
|
409
|
+
type: icon,
|
|
410
|
+
default: '',
|
|
411
|
+
description: 'The upload the site icons are derived from, such as /uploads/2026/10/icon.png.',
|
|
412
|
+
check: (value, _after, dirs) => iconProblem(value, dirs.contentDir),
|
|
413
|
+
},
|
|
414
|
+
avatar: {
|
|
415
|
+
type: optionalText,
|
|
416
|
+
default: '',
|
|
417
|
+
description: 'A picture from before every user had one. The site icon falls back to it.',
|
|
418
|
+
},
|
|
419
|
+
license: {
|
|
420
|
+
fileKeys: ['license', 'licenseName'],
|
|
421
|
+
type: license,
|
|
422
|
+
default: NO_SITE_LICENSE,
|
|
423
|
+
description: 'A Creative Commons key, or the URL of custom terms. Empty reserves all rights.',
|
|
424
|
+
check: (value) => value.choice === 'custom' && (!isLicenseUrl(value.url) || value.name === '')
|
|
425
|
+
? 'A custom license needs the URL of its terms and a name.'
|
|
426
|
+
: !isLicenseChoice(value.choice)
|
|
427
|
+
? 'Choose a license from the list.'
|
|
428
|
+
: undefined,
|
|
429
|
+
},
|
|
430
|
+
index_now_key: {
|
|
431
|
+
fileKey: 'indexNowKey',
|
|
432
|
+
type: indexNowKey,
|
|
433
|
+
default: '',
|
|
434
|
+
description: 'The key IndexNow verifies the site by, served at /{key}.txt.',
|
|
435
|
+
},
|
|
436
|
+
clients_without_pkce: {
|
|
437
|
+
fileKey: 'clientsWithoutPkce',
|
|
438
|
+
type: clientsWithoutPkce,
|
|
439
|
+
default: [],
|
|
440
|
+
description: 'The IndieAuth apps allowed to sign in without PKCE.',
|
|
441
|
+
},
|
|
442
|
+
},
|
|
443
|
+
});
|
|
444
|
+
function iconProblem(icon, contentDir) {
|
|
445
|
+
if (icon === '')
|
|
446
|
+
return undefined;
|
|
447
|
+
const parsed = parseIconSetting(icon);
|
|
448
|
+
if ('problem' in parsed) {
|
|
449
|
+
return parsed.problem === 'not-an-upload'
|
|
450
|
+
? 'The site icon has to be a file in the media library.'
|
|
451
|
+
: 'The site icon has to be an image.';
|
|
452
|
+
}
|
|
453
|
+
const file = sourceFile({ contentDir }, parsed.source);
|
|
454
|
+
return file !== undefined && isFileSync(file) ? undefined : `There is no upload at ${icon}.`;
|
|
455
|
+
}
|
|
456
|
+
export function createSettings(options) {
|
|
457
|
+
return createSettingsRegistry({ ...options, coreDeclaredAbove: [SITE] });
|
|
458
|
+
}
|
|
459
|
+
export function siteJsonPath(contentDir) {
|
|
460
|
+
return path.join(contentDir, SITE_JSON);
|
|
461
|
+
}
|
|
462
|
+
export function parseSiteJson(source) {
|
|
463
|
+
try {
|
|
464
|
+
const parsed = JSON.parse(source);
|
|
465
|
+
return isRecord(parsed) ? parsed : {};
|
|
466
|
+
}
|
|
467
|
+
catch {
|
|
468
|
+
return {};
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
//# sourceMappingURL=namespace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"namespace.js","sourceRoot":"","sources":["../../src/site/namespace.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { SiteSettings } from './settings.ts';
|
|
2
|
-
export type CarriedField = '
|
|
3
|
-
|
|
4
|
-
export type SettingsField =
|
|
1
|
+
import type { SiteLicense, SiteSettings } from './settings.ts';
|
|
2
|
+
export type CarriedField = 'taxonomy_redirects' | 'menus' | 'index_now_key' | 'clients_without_pkce' | 'avatar';
|
|
3
|
+
type FormKey = Exclude<keyof SiteSettings, CarriedField>;
|
|
4
|
+
export type SettingsField = FormKey | 'license_url' | 'license_name';
|
|
5
5
|
export type CarriedSettings = Partial<Pick<SiteSettings, CarriedField>>;
|
|
6
6
|
/** A submitted settings form, before it is known to be valid. */
|
|
7
7
|
export type SettingsForm = Record<SettingsField, string>;
|
|
@@ -16,20 +16,19 @@ export interface OnDiskCheck {
|
|
|
16
16
|
readonly dir: keyof SettingsDirs;
|
|
17
17
|
readonly problem: (value: string, dir: string) => string | undefined;
|
|
18
18
|
}
|
|
19
|
-
type SiteJson = Readonly<Record<string, unknown>>;
|
|
20
19
|
export interface SettingRow<V> {
|
|
21
|
-
readonly read: (file: SiteJson) => V | undefined;
|
|
22
|
-
readonly write: (file: Record<string, unknown>, settings: SiteSettings) => void;
|
|
23
20
|
readonly submitted: (form: SettingsForm, onFile: CarriedSettings) => V;
|
|
24
21
|
}
|
|
25
|
-
export interface
|
|
22
|
+
export interface FieldRow<V> {
|
|
26
23
|
readonly field: string;
|
|
27
24
|
readonly shown: (value: V) => string;
|
|
28
25
|
readonly check: (form: SettingsForm) => string | undefined;
|
|
29
26
|
readonly onDisk?: OnDiskCheck;
|
|
30
27
|
}
|
|
28
|
+
export type FormSettingRow<V> = SettingRow<V> & FieldRow<V>;
|
|
29
|
+
export type FieldValue<F extends SettingsField> = F extends keyof SiteSettings ? SiteSettings[F] : SiteLicense;
|
|
31
30
|
export declare function requiredWholeDays(typed: string): number | undefined;
|
|
32
|
-
export type FrontPage = Pick<SiteSettings, 'homepage' | '
|
|
31
|
+
export type FrontPage = Pick<SiteSettings, 'homepage' | 'posts_page'>;
|
|
33
32
|
export declare function frontPageOf(form: SettingsForm): FrontPage;
|
|
34
33
|
export declare function frontPageProblems(form: SettingsForm): {
|
|
35
34
|
readonly [K in keyof FrontPage]?: string | undefined;
|
|
@@ -38,7 +37,7 @@ export declare const ROWS: {
|
|
|
38
37
|
readonly [K in keyof SiteSettings]: SettingRow<SiteSettings[K]>;
|
|
39
38
|
};
|
|
40
39
|
export declare const FORM_ROWS: {
|
|
41
|
-
readonly [
|
|
40
|
+
readonly [F in SettingsField]: FieldRow<FieldValue<F>>;
|
|
42
41
|
};
|
|
43
42
|
export declare const SETTING_KEYS: readonly (keyof SiteSettings)[];
|
|
44
43
|
export declare const SETTINGS_FIELD_NAMES: readonly SettingsField[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setting-rows.d.ts","sourceRoot":"","sources":["../../src/site/setting-rows.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"setting-rows.d.ts","sourceRoot":"","sources":["../../src/site/setting-rows.ts"],"names":[],"mappings":"AAkCA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE/D,MAAM,MAAM,YAAY,GACtB,oBAAoB,GAAG,OAAO,GAAG,eAAe,GAAG,sBAAsB,GAAG,QAAQ,CAAC;AAEvF,KAAK,OAAO,GAAG,OAAO,CAAC,MAAM,YAAY,EAAE,YAAY,CAAC,CAAC;AAEzD,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,aAAa,GAAG,cAAc,CAAC;AAErE,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC;AAExE,iEAAiE;AACjE,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;AAED,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe,KAAK,CAAC,CAAC;CACxE;AAED,MAAM,WAAW,QAAQ,CAAC,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,MAAM,GAAG,SAAS,CAAC;IAC3D,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B;AAED,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AAE5D,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,aAAa,IAAI,CAAC,SAAS,MAAM,YAAY,GAC1E,YAAY,CAAC,CAAC,CAAC,GACf,WAAW,CAAC;AAqEhB,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKnE;AAqED,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;AA0VD,eAAO,MAAM,IAAI,EAAE;IAAE,QAAQ,EAAE,CAAC,IAAI,MAAM,YAAY,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;CACtE,CAAC;AAEf,eAAO,MAAM,SAAS,EAAE;IAAE,QAAQ,EAAE,CAAC,IAAI,aAAa,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;CAG/E,CAAC;AAEF,eAAO,MAAM,YAAY,EAAgC,SAAS,CAAC,MAAM,YAAY,CAAC,EAAE,CAAC;AAMzF,eAAO,MAAM,oBAAoB,EAAE,SAAS,aAAa,EAIxD,CAAC"}
|