@geekity/cms 0.3.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2217 -214
- package/admin/components/fields.njk +165 -0
- package/admin/layouts/base.njk +1 -1
- package/admin/layouts/settings-page.njk +26 -0
- package/admin/layouts/shell.njk +17 -3
- package/admin/pages/account/forgot.njk +47 -0
- package/admin/pages/account/login.njk +26 -0
- package/admin/pages/account/reset.njk +38 -0
- package/admin/pages/account/setup.njk +28 -0
- package/admin/pages/appearance/themes.njk +69 -0
- package/admin/pages/comments/all.njk +133 -0
- package/admin/{layouts/dashboard.njk → pages/dashboard/home.njk} +8 -15
- package/admin/{layouts/document-conflict.njk → pages/documents/conflict.njk} +1 -0
- package/admin/{layouts/document-editor.njk → pages/documents/editor.njk} +75 -59
- package/admin/{layouts/document-list.njk → pages/documents/list.njk} +19 -2
- package/admin/pages/documents/taxonomy.njk +95 -0
- package/admin/pages/federation/followers.njk +238 -0
- package/admin/pages/federation/settings.njk +77 -0
- package/admin/pages/media/library.njk +160 -0
- package/admin/pages/messages/all.njk +110 -0
- package/admin/pages/navigation/menus.njk +129 -0
- package/admin/{layouts → pages}/placeholder.njk +5 -1
- package/admin/pages/settings/discussion.njk +99 -0
- package/admin/pages/settings/email.njk +203 -0
- package/admin/pages/settings/general.njk +29 -0
- package/admin/pages/settings/permalinks.njk +50 -0
- package/admin/pages/settings/reading.njk +64 -0
- package/admin/pages/tools/content-index.njk +89 -0
- package/admin/pages/users/edit.njk +239 -0
- package/admin/pages/users/list.njk +51 -0
- package/admin/pages/users/new.njk +41 -0
- package/admin/static/admin.css +558 -3
- package/admin/static/copy.js +52 -0
- package/admin/static/editor.js +16 -16
- package/admin/static/slug.js +61 -0
- package/dist/access-log.d.ts +44 -0
- package/dist/access-log.d.ts.map +1 -0
- package/dist/access-log.js +71 -0
- package/dist/access-log.js.map +1 -0
- package/dist/admin/accounts.d.ts +413 -0
- package/dist/admin/accounts.d.ts.map +1 -0
- package/dist/admin/accounts.js +680 -0
- package/dist/admin/accounts.js.map +1 -0
- package/dist/admin/appearance.d.ts +80 -0
- package/dist/admin/appearance.d.ts.map +1 -0
- package/dist/admin/appearance.js +136 -0
- package/dist/admin/appearance.js.map +1 -0
- package/dist/admin/comments.d.ts +90 -0
- package/dist/admin/comments.d.ts.map +1 -0
- package/dist/admin/comments.js +244 -0
- package/dist/admin/comments.js.map +1 -0
- package/dist/admin/credentials.d.ts +26 -2
- package/dist/admin/credentials.d.ts.map +1 -1
- package/dist/admin/credentials.js +35 -2
- package/dist/admin/credentials.js.map +1 -1
- package/dist/admin/documents.d.ts +117 -10
- package/dist/admin/documents.d.ts.map +1 -1
- package/dist/admin/documents.js +328 -41
- package/dist/admin/documents.js.map +1 -1
- package/dist/admin/federation.d.ts +161 -50
- package/dist/admin/federation.d.ts.map +1 -1
- package/dist/admin/federation.js +235 -93
- package/dist/admin/federation.js.map +1 -1
- package/dist/admin/formatting.d.ts +20 -0
- package/dist/admin/formatting.d.ts.map +1 -0
- package/dist/admin/formatting.js +72 -0
- package/dist/admin/formatting.js.map +1 -0
- package/dist/admin/headers.d.ts +65 -0
- package/dist/admin/headers.d.ts.map +1 -0
- package/dist/admin/headers.js +104 -0
- package/dist/admin/headers.js.map +1 -0
- package/dist/admin/index.d.ts +38 -12
- package/dist/admin/index.d.ts.map +1 -1
- package/dist/admin/index.js +25 -7
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/media.d.ts +168 -0
- package/dist/admin/media.d.ts.map +1 -0
- package/dist/admin/media.js +295 -0
- package/dist/admin/media.js.map +1 -0
- package/dist/admin/menu.d.ts +79 -0
- package/dist/admin/menu.d.ts.map +1 -0
- package/dist/admin/menu.js +143 -0
- package/dist/admin/menu.js.map +1 -0
- package/dist/admin/messages.d.ts +80 -0
- package/dist/admin/messages.d.ts.map +1 -0
- package/dist/admin/messages.js +152 -0
- package/dist/admin/messages.js.map +1 -0
- package/dist/admin/navigation.d.ts +155 -0
- package/dist/admin/navigation.d.ts.map +1 -0
- package/dist/admin/navigation.js +292 -0
- package/dist/admin/navigation.js.map +1 -0
- package/dist/admin/preview.d.ts.map +1 -1
- package/dist/admin/preview.js +31 -7
- package/dist/admin/preview.js.map +1 -1
- package/dist/admin/recovery.d.ts +92 -0
- package/dist/admin/recovery.d.ts.map +1 -0
- package/dist/admin/recovery.js +229 -0
- package/dist/admin/recovery.js.map +1 -0
- package/dist/admin/routes.d.ts +0 -20
- package/dist/admin/routes.d.ts.map +1 -1
- package/dist/admin/routes.js +164 -105
- package/dist/admin/routes.js.map +1 -1
- package/dist/admin/session.d.ts +17 -3
- package/dist/admin/session.d.ts.map +1 -1
- package/dist/admin/session.js +19 -5
- package/dist/admin/session.js.map +1 -1
- package/dist/admin/settings-discussion.d.ts +37 -0
- package/dist/admin/settings-discussion.d.ts.map +1 -0
- package/dist/admin/settings-discussion.js +117 -0
- package/dist/admin/settings-discussion.js.map +1 -0
- package/dist/admin/settings-email.d.ts +54 -0
- package/dist/admin/settings-email.d.ts.map +1 -0
- package/dist/admin/settings-email.js +189 -0
- package/dist/admin/settings-email.js.map +1 -0
- package/dist/admin/settings-federation.d.ts +48 -0
- package/dist/admin/settings-federation.d.ts.map +1 -0
- package/dist/admin/settings-federation.js +123 -0
- package/dist/admin/settings-federation.js.map +1 -0
- package/dist/admin/settings-general.d.ts +12 -0
- package/dist/admin/settings-general.d.ts.map +1 -0
- package/dist/admin/settings-general.js +48 -0
- package/dist/admin/settings-general.js.map +1 -0
- package/dist/admin/settings-page.d.ts +119 -0
- package/dist/admin/settings-page.d.ts.map +1 -0
- package/dist/admin/settings-page.js +132 -0
- package/dist/admin/settings-page.js.map +1 -0
- package/dist/admin/settings-pages.d.ts +30 -0
- package/dist/admin/settings-pages.d.ts.map +1 -0
- package/dist/admin/settings-pages.js +43 -0
- package/dist/admin/settings-pages.js.map +1 -0
- package/dist/admin/settings-permalinks.d.ts +16 -0
- package/dist/admin/settings-permalinks.d.ts.map +1 -0
- package/dist/admin/settings-permalinks.js +32 -0
- package/dist/admin/settings-permalinks.js.map +1 -0
- package/dist/admin/settings-reading.d.ts +34 -0
- package/dist/admin/settings-reading.d.ts.map +1 -0
- package/dist/admin/settings-reading.js +49 -0
- package/dist/admin/settings-reading.js.map +1 -0
- package/dist/admin/settings.d.ts +339 -96
- package/dist/admin/settings.d.ts.map +1 -1
- package/dist/admin/settings.js +600 -308
- package/dist/admin/settings.js.map +1 -1
- package/dist/admin/store.d.ts +606 -152
- package/dist/admin/store.d.ts.map +1 -1
- package/dist/admin/store.js +863 -268
- package/dist/admin/store.js.map +1 -1
- package/dist/admin/taxonomy.d.ts +114 -0
- package/dist/admin/taxonomy.d.ts.map +1 -0
- package/dist/admin/taxonomy.js +289 -0
- package/dist/admin/taxonomy.js.map +1 -0
- package/dist/admin/templates.d.ts +46 -14
- package/dist/admin/templates.d.ts.map +1 -1
- package/dist/admin/templates.js +46 -14
- package/dist/admin/templates.js.map +1 -1
- package/dist/admin/throttle.d.ts +84 -0
- package/dist/admin/throttle.d.ts.map +1 -0
- package/dist/admin/throttle.js +143 -0
- package/dist/admin/throttle.js.map +1 -0
- package/dist/admin/tools.d.ts +111 -0
- package/dist/admin/tools.d.ts.map +1 -0
- package/dist/admin/tools.js +182 -0
- package/dist/admin/tools.js.map +1 -0
- package/dist/admin/uploads.d.ts +28 -2
- package/dist/admin/uploads.d.ts.map +1 -1
- package/dist/admin/uploads.js +43 -4
- package/dist/admin/uploads.js.map +1 -1
- package/dist/admin/users.d.ts +100 -13
- package/dist/admin/users.d.ts.map +1 -1
- package/dist/admin/users.js +412 -39
- package/dist/admin/users.js.map +1 -1
- package/dist/cache.d.ts +141 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.js +207 -0
- package/dist/cache.js.map +1 -0
- package/dist/cli.d.ts +14 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +429 -21
- package/dist/cli.js.map +1 -1
- package/dist/comments/akismet.d.ts +130 -0
- package/dist/comments/akismet.d.ts.map +1 -0
- package/dist/comments/akismet.js +274 -0
- package/dist/comments/akismet.js.map +1 -0
- package/dist/comments/conversation.d.ts +29 -0
- package/dist/comments/conversation.d.ts.map +1 -0
- package/dist/comments/conversation.js +60 -0
- package/dist/comments/conversation.js.map +1 -0
- package/dist/comments/form.d.ts +123 -0
- package/dist/comments/form.d.ts.map +1 -0
- package/dist/comments/form.js +79 -0
- package/dist/comments/form.js.map +1 -0
- package/dist/comments/index.d.ts +16 -0
- package/dist/comments/index.d.ts.map +1 -0
- package/dist/comments/index.js +10 -0
- package/dist/comments/index.js.map +1 -0
- package/dist/comments/markdown.d.ts +8 -0
- package/dist/comments/markdown.d.ts.map +1 -0
- package/dist/comments/markdown.js +85 -0
- package/dist/comments/markdown.js.map +1 -0
- package/dist/comments/moderate.d.ts +71 -0
- package/dist/comments/moderate.d.ts.map +1 -0
- package/dist/comments/moderate.js +88 -0
- package/dist/comments/moderate.js.map +1 -0
- package/dist/comments/policy.d.ts +57 -0
- package/dist/comments/policy.d.ts.map +1 -0
- package/dist/comments/policy.js +80 -0
- package/dist/comments/policy.js.map +1 -0
- package/dist/comments/records.d.ts +266 -0
- package/dist/comments/records.d.ts.map +1 -0
- package/dist/comments/records.js +487 -0
- package/dist/comments/records.js.map +1 -0
- package/dist/comments/routes.d.ts +60 -0
- package/dist/comments/routes.d.ts.map +1 -0
- package/dist/comments/routes.js +212 -0
- package/dist/comments/routes.js.map +1 -0
- package/dist/comments/submission.d.ts +297 -0
- package/dist/comments/submission.d.ts.map +1 -0
- package/dist/comments/submission.js +280 -0
- package/dist/comments/submission.js.map +1 -0
- package/dist/comments/viewer.d.ts +21 -0
- package/dist/comments/viewer.d.ts.map +1 -0
- package/dist/comments/viewer.js +45 -0
- package/dist/comments/viewer.js.map +1 -0
- package/dist/config.d.ts +225 -5
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +121 -6
- package/dist/config.js.map +1 -1
- package/dist/contact/delivery.d.ts +60 -0
- package/dist/contact/delivery.d.ts.map +1 -0
- package/dist/contact/delivery.js +87 -0
- package/dist/contact/delivery.js.map +1 -0
- package/dist/contact/form.d.ts +130 -0
- package/dist/contact/form.d.ts.map +1 -0
- package/dist/contact/form.js +163 -0
- package/dist/contact/form.js.map +1 -0
- package/dist/contact/index.d.ts +17 -0
- package/dist/contact/index.d.ts.map +1 -0
- package/dist/contact/index.js +13 -0
- package/dist/contact/index.js.map +1 -0
- package/dist/contact/records.d.ts +124 -0
- package/dist/contact/records.d.ts.map +1 -0
- package/dist/contact/records.js +218 -0
- package/dist/contact/records.js.map +1 -0
- package/dist/contact/routes.d.ts +17 -0
- package/dist/contact/routes.d.ts.map +1 -0
- package/dist/contact/routes.js +127 -0
- package/dist/contact/routes.js.map +1 -0
- package/dist/contact/submission.d.ts +103 -0
- package/dist/contact/submission.d.ts.map +1 -0
- package/dist/contact/submission.js +166 -0
- package/dist/contact/submission.js.map +1 -0
- package/dist/content/document.d.ts +7 -2
- package/dist/content/document.d.ts.map +1 -1
- package/dist/content/document.js +1 -0
- package/dist/content/document.js.map +1 -1
- package/dist/content/index.d.ts +7 -2
- package/dist/content/index.d.ts.map +1 -1
- package/dist/content/index.js +4 -1
- package/dist/content/index.js.map +1 -1
- package/dist/content/markdown.d.ts.map +1 -1
- package/dist/content/markdown.js +24 -2
- package/dist/content/markdown.js.map +1 -1
- package/dist/content/parser.d.ts.map +1 -1
- package/dist/content/parser.js +11 -4
- package/dist/content/parser.js.map +1 -1
- package/dist/content/save.d.ts +5 -0
- package/dist/content/save.d.ts.map +1 -1
- package/dist/content/save.js +44 -1
- package/dist/content/save.js.map +1 -1
- package/dist/content/schedule.d.ts +125 -0
- package/dist/content/schedule.d.ts.map +1 -0
- package/dist/content/schedule.js +207 -0
- package/dist/content/schedule.js.map +1 -0
- package/dist/content/search.d.ts +64 -0
- package/dist/content/search.d.ts.map +1 -0
- package/dist/content/search.js +136 -0
- package/dist/content/search.js.map +1 -0
- package/dist/content/store.d.ts +220 -7
- package/dist/content/store.d.ts.map +1 -1
- package/dist/content/store.js +392 -67
- package/dist/content/store.js.map +1 -1
- package/dist/content/sync.d.ts +7 -1
- package/dist/content/sync.d.ts.map +1 -1
- package/dist/content/sync.js +18 -10
- package/dist/content/sync.js.map +1 -1
- package/dist/content/time.d.ts +56 -0
- package/dist/content/time.d.ts.map +1 -0
- package/dist/content/time.js +141 -0
- package/dist/content/time.js.map +1 -0
- package/dist/content/writer.d.ts.map +1 -1
- package/dist/content/writer.js +3 -0
- package/dist/content/writer.js.map +1 -1
- package/dist/env.d.ts +70 -5
- package/dist/env.d.ts.map +1 -1
- package/dist/federation/actor.d.ts +95 -41
- package/dist/federation/actor.d.ts.map +1 -1
- package/dist/federation/actor.js +180 -53
- package/dist/federation/actor.js.map +1 -1
- package/dist/federation/article.d.ts +44 -17
- package/dist/federation/article.d.ts.map +1 -1
- package/dist/federation/article.js +98 -46
- package/dist/federation/article.js.map +1 -1
- package/dist/federation/delivery.d.ts +63 -15
- package/dist/federation/delivery.d.ts.map +1 -1
- package/dist/federation/delivery.js +154 -80
- package/dist/federation/delivery.js.map +1 -1
- package/dist/federation/federation.d.ts +22 -17
- package/dist/federation/federation.d.ts.map +1 -1
- package/dist/federation/federation.js +98 -77
- package/dist/federation/federation.js.map +1 -1
- package/dist/federation/followers.d.ts +3 -2
- package/dist/federation/followers.d.ts.map +1 -1
- package/dist/federation/followers.js +6 -5
- package/dist/federation/followers.js.map +1 -1
- package/dist/federation/import-wordpress.d.ts +128 -0
- package/dist/federation/import-wordpress.d.ts.map +1 -0
- package/dist/federation/import-wordpress.js +426 -0
- package/dist/federation/import-wordpress.js.map +1 -0
- package/dist/federation/inbox.d.ts +36 -13
- package/dist/federation/inbox.d.ts.map +1 -1
- package/dist/federation/inbox.js +120 -49
- package/dist/federation/inbox.js.map +1 -1
- package/dist/federation/index.d.ts +22 -10
- package/dist/federation/index.d.ts.map +1 -1
- package/dist/federation/index.js +13 -8
- package/dist/federation/index.js.map +1 -1
- package/dist/federation/keys.d.ts +98 -20
- package/dist/federation/keys.d.ts.map +1 -1
- package/dist/federation/keys.js +269 -39
- package/dist/federation/keys.js.map +1 -1
- package/dist/federation/mount.d.ts +46 -10
- package/dist/federation/mount.d.ts.map +1 -1
- package/dist/federation/mount.js +300 -28
- package/dist/federation/mount.js.map +1 -1
- package/dist/federation/paths.d.ts +23 -35
- package/dist/federation/paths.d.ts.map +1 -1
- package/dist/federation/paths.js +26 -39
- package/dist/federation/paths.js.map +1 -1
- package/dist/federation/records.d.ts +223 -0
- package/dist/federation/records.d.ts.map +1 -0
- package/dist/federation/records.js +506 -0
- package/dist/federation/records.js.map +1 -0
- package/dist/federation/relays.d.ts +114 -0
- package/dist/federation/relays.d.ts.map +1 -0
- package/dist/federation/relays.js +290 -0
- package/dist/federation/relays.js.map +1 -0
- package/dist/federation/replies.d.ts +80 -0
- package/dist/federation/replies.d.ts.map +1 -0
- package/dist/federation/replies.js +166 -0
- package/dist/federation/replies.js.map +1 -0
- package/dist/federation/wordpress.d.ts +131 -0
- package/dist/federation/wordpress.d.ts.map +1 -0
- package/dist/federation/wordpress.js +341 -0
- package/dist/federation/wordpress.js.map +1 -0
- package/dist/files/atomic.d.ts +103 -0
- package/dist/files/atomic.d.ts.map +1 -0
- package/dist/files/atomic.js +150 -0
- package/dist/files/atomic.js.map +1 -0
- package/dist/files/index.d.ts +3 -0
- package/dist/files/index.d.ts.map +1 -0
- package/dist/files/index.js +2 -0
- package/dist/files/index.js.map +1 -0
- package/dist/forms/protection.d.ts +85 -0
- package/dist/forms/protection.d.ts.map +1 -0
- package/dist/forms/protection.js +116 -0
- package/dist/forms/protection.js.map +1 -0
- package/dist/images/icons.d.ts +59 -0
- package/dist/images/icons.d.ts.map +1 -0
- package/dist/images/icons.js +131 -0
- package/dist/images/icons.js.map +1 -0
- package/dist/images/index.d.ts +7 -0
- package/dist/images/index.d.ts.map +1 -0
- package/dist/images/index.js +4 -0
- package/dist/images/index.js.map +1 -0
- package/dist/images/markup.d.ts +47 -0
- package/dist/images/markup.d.ts.map +1 -0
- package/dist/images/markup.js +175 -0
- package/dist/images/markup.js.map +1 -0
- package/dist/images/paths.d.ts +34 -0
- package/dist/images/paths.d.ts.map +1 -0
- package/dist/images/paths.js +41 -0
- package/dist/images/paths.js.map +1 -0
- package/dist/images/variants.d.ts +104 -0
- package/dist/images/variants.d.ts.map +1 -0
- package/dist/images/variants.js +320 -0
- package/dist/images/variants.js.map +1 -0
- package/dist/index.d.ts +123 -19
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +344 -25
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +18 -0
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +34 -3
- package/dist/init.js.map +1 -1
- package/dist/mail/brevo.d.ts +35 -0
- package/dist/mail/brevo.d.ts.map +1 -0
- package/dist/mail/brevo.js +85 -0
- package/dist/mail/brevo.js.map +1 -0
- package/dist/mail/credentials.d.ts +62 -0
- package/dist/mail/credentials.d.ts.map +1 -0
- package/dist/mail/credentials.js +86 -0
- package/dist/mail/credentials.js.map +1 -0
- package/dist/mail/index.d.ts +15 -0
- package/dist/mail/index.d.ts.map +1 -0
- package/dist/mail/index.js +8 -0
- package/dist/mail/index.js.map +1 -0
- package/dist/mail/memory.d.ts +35 -0
- package/dist/mail/memory.d.ts.map +1 -0
- package/dist/mail/memory.js +29 -0
- package/dist/mail/memory.js.map +1 -0
- package/dist/mail/provider.d.ts +80 -0
- package/dist/mail/provider.d.ts.map +1 -0
- package/dist/mail/provider.js +23 -0
- package/dist/mail/provider.js.map +1 -0
- package/dist/mail/service.d.ts +156 -0
- package/dist/mail/service.d.ts.map +1 -0
- package/dist/mail/service.js +265 -0
- package/dist/mail/service.js.map +1 -0
- package/dist/mail/smtp.d.ts +39 -0
- package/dist/mail/smtp.d.ts.map +1 -0
- package/dist/mail/smtp.js +58 -0
- package/dist/mail/smtp.js.map +1 -0
- package/dist/mail/templates.d.ts +91 -0
- package/dist/mail/templates.d.ts.map +1 -0
- package/dist/mail/templates.js +69 -0
- package/dist/mail/templates.js.map +1 -0
- package/dist/notifications/comments.d.ts +66 -0
- package/dist/notifications/comments.d.ts.map +1 -0
- package/dist/notifications/comments.js +151 -0
- package/dist/notifications/comments.js.map +1 -0
- package/dist/notifications/digest.d.ts +135 -0
- package/dist/notifications/digest.d.ts.map +1 -0
- package/dist/notifications/digest.js +287 -0
- package/dist/notifications/digest.js.map +1 -0
- package/dist/notifications/index.d.ts +13 -0
- package/dist/notifications/index.d.ts.map +1 -0
- package/dist/notifications/index.js +8 -0
- package/dist/notifications/index.js.map +1 -0
- package/dist/notifications/links.d.ts +60 -0
- package/dist/notifications/links.d.ts.map +1 -0
- package/dist/notifications/links.js +63 -0
- package/dist/notifications/links.js.map +1 -0
- package/dist/notifications/optouts.d.ts +48 -0
- package/dist/notifications/optouts.d.ts.map +1 -0
- package/dist/notifications/optouts.js +93 -0
- package/dist/notifications/optouts.js.map +1 -0
- package/dist/notifications/preferences.d.ts +158 -0
- package/dist/notifications/preferences.d.ts.map +1 -0
- package/dist/notifications/preferences.js +195 -0
- package/dist/notifications/preferences.js.map +1 -0
- package/dist/notifications/routes.d.ts +28 -0
- package/dist/notifications/routes.d.ts.map +1 -0
- package/dist/notifications/routes.js +184 -0
- package/dist/notifications/routes.js.map +1 -0
- package/dist/notifications/tokens.d.ts +60 -0
- package/dist/notifications/tokens.d.ts.map +1 -0
- package/dist/notifications/tokens.js +125 -0
- package/dist/notifications/tokens.js.map +1 -0
- package/dist/notify.d.ts +84 -0
- package/dist/notify.d.ts.map +1 -0
- package/dist/notify.js +149 -0
- package/dist/notify.js.map +1 -0
- package/dist/web/archive.d.ts +49 -0
- package/dist/web/archive.d.ts.map +1 -0
- package/dist/web/archive.js +59 -0
- package/dist/web/archive.js.map +1 -0
- package/dist/web/assets.d.ts +6 -5
- package/dist/web/assets.d.ts.map +1 -1
- package/dist/web/assets.js +5 -7
- package/dist/web/assets.js.map +1 -1
- package/dist/web/authors.d.ts +143 -0
- package/dist/web/authors.d.ts.map +1 -0
- package/dist/web/authors.js +178 -0
- package/dist/web/authors.js.map +1 -0
- package/dist/web/comments.d.ts +60 -0
- package/dist/web/comments.d.ts.map +1 -0
- package/dist/web/comments.js +207 -0
- package/dist/web/comments.js.map +1 -0
- package/dist/web/context.d.ts +162 -28
- package/dist/web/context.d.ts.map +1 -1
- package/dist/web/context.js +123 -26
- package/dist/web/context.js.map +1 -1
- package/dist/web/conversation.d.ts +209 -0
- package/dist/web/conversation.d.ts.map +1 -0
- package/dist/web/conversation.js +557 -0
- package/dist/web/conversation.js.map +1 -0
- package/dist/web/documents.d.ts +36 -6
- package/dist/web/documents.d.ts.map +1 -1
- package/dist/web/documents.js +52 -10
- package/dist/web/documents.js.map +1 -1
- package/dist/web/feed-atom.d.ts +22 -0
- package/dist/web/feed-atom.d.ts.map +1 -0
- package/dist/web/feed-atom.js +83 -0
- package/dist/web/feed-atom.js.map +1 -0
- package/dist/web/feed-item.d.ts +145 -0
- package/dist/web/feed-item.d.ts.map +1 -0
- package/dist/web/feed-item.js +120 -0
- package/dist/web/feed-item.js.map +1 -0
- package/dist/web/feed-json.d.ts +79 -0
- package/dist/web/feed-json.d.ts.map +1 -0
- package/dist/web/feed-json.js +53 -0
- package/dist/web/feed-json.js.map +1 -0
- package/dist/web/feed-rss.d.ts +26 -0
- package/dist/web/feed-rss.d.ts.map +1 -0
- package/dist/web/feed-rss.js +203 -0
- package/dist/web/feed-rss.js.map +1 -0
- package/dist/web/feed-source.d.ts +244 -0
- package/dist/web/feed-source.d.ts.map +1 -0
- package/dist/web/feed-source.js +201 -0
- package/dist/web/feed-source.js.map +1 -0
- package/dist/web/feed-xml.d.ts +63 -0
- package/dist/web/feed-xml.d.ts.map +1 -0
- package/dist/web/feed-xml.js +116 -0
- package/dist/web/feed-xml.js.map +1 -0
- package/dist/web/feeds.d.ts +31 -96
- package/dist/web/feeds.d.ts.map +1 -1
- package/dist/web/feeds.js +94 -198
- package/dist/web/feeds.js.map +1 -1
- package/dist/web/health.d.ts +31 -0
- package/dist/web/health.d.ts.map +1 -0
- package/dist/web/health.js +44 -0
- package/dist/web/health.js.map +1 -0
- package/dist/web/index.d.ts +30 -10
- package/dist/web/index.d.ts.map +1 -1
- package/dist/web/index.js +18 -7
- package/dist/web/index.js.map +1 -1
- package/dist/web/navigation.d.ts +195 -0
- package/dist/web/navigation.d.ts.map +1 -0
- package/dist/web/navigation.js +300 -0
- package/dist/web/navigation.js.map +1 -0
- package/dist/web/negotiate.d.ts +31 -0
- package/dist/web/negotiate.d.ts.map +1 -1
- package/dist/web/negotiate.js +31 -11
- package/dist/web/negotiate.js.map +1 -1
- package/dist/web/recent.d.ts +43 -0
- package/dist/web/recent.d.ts.map +1 -0
- package/dist/web/recent.js +37 -0
- package/dist/web/recent.js.map +1 -0
- package/dist/web/render.d.ts +203 -9
- package/dist/web/render.d.ts.map +1 -1
- package/dist/web/render.js +341 -17
- package/dist/web/render.js.map +1 -1
- package/dist/web/routes.d.ts +25 -8
- package/dist/web/routes.d.ts.map +1 -1
- package/dist/web/routes.js +854 -93
- package/dist/web/routes.js.map +1 -1
- package/dist/web/sanitize.d.ts +19 -0
- package/dist/web/sanitize.d.ts.map +1 -0
- package/dist/web/sanitize.js +272 -0
- package/dist/web/sanitize.js.map +1 -0
- package/dist/web/search.d.ts +79 -0
- package/dist/web/search.d.ts.map +1 -0
- package/dist/web/search.js +94 -0
- package/dist/web/search.js.map +1 -0
- package/dist/web/sitemap.d.ts +120 -0
- package/dist/web/sitemap.d.ts.map +1 -0
- package/dist/web/sitemap.js +199 -0
- package/dist/web/sitemap.js.map +1 -0
- package/dist/web/taxonomy.d.ts +152 -0
- package/dist/web/taxonomy.d.ts.map +1 -0
- package/dist/web/taxonomy.js +237 -0
- package/dist/web/taxonomy.js.map +1 -0
- package/dist/web/templates.d.ts +54 -16
- package/dist/web/templates.d.ts.map +1 -1
- package/dist/web/templates.js +109 -28
- package/dist/web/templates.js.map +1 -1
- package/dist/web/themes.d.ts +226 -0
- package/dist/web/themes.d.ts.map +1 -0
- package/dist/web/themes.js +314 -0
- package/dist/web/themes.js.map +1 -0
- package/dist/webmention/discovery.d.ts +51 -0
- package/dist/webmention/discovery.d.ts.map +1 -0
- package/dist/webmention/discovery.js +176 -0
- package/dist/webmention/discovery.js.map +1 -0
- package/dist/webmention/html.d.ts +71 -0
- package/dist/webmention/html.d.ts.map +1 -0
- package/dist/webmention/html.js +285 -0
- package/dist/webmention/html.js.map +1 -0
- package/dist/webmention/index.d.ts +12 -0
- package/dist/webmention/index.d.ts.map +1 -0
- package/dist/webmention/index.js +8 -0
- package/dist/webmention/index.js.map +1 -0
- package/dist/webmention/links.d.ts +18 -0
- package/dist/webmention/links.d.ts.map +1 -0
- package/dist/webmention/links.js +64 -0
- package/dist/webmention/links.js.map +1 -0
- package/dist/webmention/microformats.d.ts +93 -0
- package/dist/webmention/microformats.d.ts.map +1 -0
- package/dist/webmention/microformats.js +376 -0
- package/dist/webmention/microformats.js.map +1 -0
- package/dist/webmention/receive.d.ts +141 -0
- package/dist/webmention/receive.d.ts.map +1 -0
- package/dist/webmention/receive.js +264 -0
- package/dist/webmention/receive.js.map +1 -0
- package/dist/webmention/routes.d.ts +37 -0
- package/dist/webmention/routes.d.ts.map +1 -0
- package/dist/webmention/routes.js +75 -0
- package/dist/webmention/routes.js.map +1 -0
- package/dist/webmention/service.d.ts +94 -0
- package/dist/webmention/service.d.ts.map +1 -0
- package/dist/webmention/service.js +207 -0
- package/dist/webmention/service.js.map +1 -0
- package/package.json +11 -6
- package/templates/site/content/_data/site.json +8 -0
- package/templates/site/content/pages/about.md +7 -0
- package/templates/site/content/posts/2026-01-01-hello-world.md +5 -3
- package/templates/site/geekity.config.ts +11 -1
- package/templates/site/tsconfig.json +1 -1
- package/themes/default/README.md +1216 -50
- package/themes/default/layouts/404.njk +2 -3
- package/themes/default/layouts/author.njk +36 -0
- package/themes/default/layouts/base.njk +161 -31
- package/themes/default/layouts/category.njk +27 -0
- package/themes/default/layouts/front-page.njk +56 -0
- package/themes/default/layouts/home.njk +17 -1
- package/themes/default/layouts/page.njk +57 -5
- package/themes/default/layouts/post.njk +78 -19
- package/themes/default/layouts/search.njk +57 -0
- package/themes/default/layouts/tag.njk +3 -6
- package/themes/default/mail/comment-digest.html.njk +37 -0
- package/themes/default/mail/comment-digest.subject.njk +3 -0
- package/themes/default/mail/comment-digest.txt.njk +40 -0
- package/themes/default/mail/comment-pending.html.njk +27 -0
- package/themes/default/mail/comment-pending.subject.njk +2 -0
- package/themes/default/mail/comment-pending.txt.njk +24 -0
- package/themes/default/mail/comment-reply.html.njk +21 -0
- package/themes/default/mail/comment-reply.subject.njk +2 -0
- package/themes/default/mail/comment-reply.txt.njk +22 -0
- package/themes/default/mail/contact-message.html.njk +24 -0
- package/themes/default/mail/contact-message.subject.njk +5 -0
- package/themes/default/mail/contact-message.txt.njk +20 -0
- package/themes/default/mail/password-changed.html.njk +18 -0
- package/themes/default/mail/password-changed.subject.njk +2 -0
- package/themes/default/mail/password-changed.txt.njk +17 -0
- package/themes/default/mail/password-reset.html.njk +22 -0
- package/themes/default/mail/password-reset.subject.njk +2 -0
- package/themes/default/mail/password-reset.txt.njk +18 -0
- package/themes/default/mail/test.html.njk +14 -0
- package/themes/default/mail/test.subject.njk +2 -0
- package/themes/default/mail/test.txt.njk +12 -0
- package/themes/default/partials/archive.njk +27 -0
- package/themes/default/partials/bio.njk +71 -0
- package/themes/default/partials/comment-form.njk +137 -0
- package/themes/default/partials/contact-form.njk +88 -0
- package/themes/default/partials/conversation.njk +139 -0
- package/themes/default/partials/feeds.njk +26 -0
- package/themes/default/partials/jsonld.njk +120 -0
- package/themes/default/partials/menu.njk +32 -0
- package/themes/default/partials/pagination.njk +12 -6
- package/themes/default/partials/post-list.njk +51 -18
- package/themes/default/partials/search-form.njk +22 -0
- package/themes/default/partials/tags.njk +26 -5
- package/themes/default/static/highlight.js +4 -0
- package/themes/default/static/style.css +1142 -194
- package/themes/default/theme.json +9 -0
- package/admin/layouts/federation.njk +0 -145
- package/admin/layouts/login.njk +0 -23
- package/admin/layouts/settings.njk +0 -116
- package/admin/layouts/setup.njk +0 -27
- package/admin/layouts/users.njk +0 -91
- /package/admin/{layouts/_flash.njk → components/flash.njk} +0 -0
package/dist/admin/settings.d.ts
CHANGED
|
@@ -1,39 +1,48 @@
|
|
|
1
|
-
import type { Hono } from 'hono';
|
|
2
1
|
import type { ResolvedConfig } from '../config.ts';
|
|
3
|
-
import type {
|
|
4
|
-
import type {
|
|
5
|
-
import type {
|
|
2
|
+
import type { MailProviderName } from '../mail/provider.ts';
|
|
3
|
+
import type { NavigationMenus } from '../web/navigation.ts';
|
|
4
|
+
import type { TaxonomyBases, TaxonomyRedirect } from '../web/taxonomy.ts';
|
|
6
5
|
import type { AdminStore } from './store.ts';
|
|
7
|
-
/**
|
|
6
|
+
/**
|
|
7
|
+
* Where the settings live: the General page, and the root every other settings
|
|
8
|
+
* page hangs off ({@link settingsPagePath}).
|
|
9
|
+
*/
|
|
8
10
|
export declare const SETTINGS_PATH = "/admin/settings";
|
|
9
|
-
/** Where the avatar's upload form and its Remove button post. */
|
|
10
|
-
export declare const AVATAR_PATH = "/admin/settings/avatar";
|
|
11
|
-
/** The fields those two forms submit. */
|
|
12
|
-
export declare const AVATAR_FIELDS: {
|
|
13
|
-
readonly file: 'avatar';
|
|
14
|
-
readonly action: 'action';
|
|
15
|
-
};
|
|
16
|
-
/** The {@link AVATAR_FIELDS.action} that takes the avatar down again. */
|
|
17
|
-
export declare const AVATAR_REMOVE = "remove";
|
|
18
11
|
/**
|
|
19
|
-
*
|
|
12
|
+
* What a language tag may look like: BCP 47's shape rather than its registry —
|
|
13
|
+
* a two or three letter primary subtag followed by dash-separated subtags of
|
|
14
|
+
* letters and digits.
|
|
20
15
|
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
16
|
+
* Checking the shape and not the registry is deliberate. The value ends up in
|
|
17
|
+
* `<html lang>`, an RSS `<language>` and an Atom `xml:lang`, where a
|
|
18
|
+
* well-formed tag a reader has never heard of is harmless and a malformed one
|
|
19
|
+
* is not; refusing a valid tag because this CMS shipped before it was
|
|
20
|
+
* registered would be worse than accepting one nobody uses.
|
|
23
21
|
*/
|
|
24
|
-
export declare const
|
|
22
|
+
export declare const LANGUAGE_TAG_PATTERN: RegExp;
|
|
25
23
|
/**
|
|
26
|
-
* What an
|
|
27
|
-
*
|
|
28
|
-
*
|
|
24
|
+
* What an email address has to look like before the settings screen will keep
|
|
25
|
+
* it: something, an `@`, and a dotted host.
|
|
26
|
+
*
|
|
27
|
+
* Deliberately loose. The grammar in RFC 5321 allows addresses nobody has ever
|
|
28
|
+
* typed, and the only test that settles whether an address works is sending to
|
|
29
|
+
* it — which is what the Send test email button is for. This catches the
|
|
30
|
+
* typo where a whole field was pasted into the wrong box.
|
|
29
31
|
*/
|
|
30
|
-
export declare const
|
|
32
|
+
export declare const EMAIL_PATTERN: RegExp;
|
|
31
33
|
/**
|
|
32
|
-
* The settings
|
|
34
|
+
* The settings a site holds, as `content/_data/site.json` says them.
|
|
35
|
+
*
|
|
36
|
+
* The file is the source of truth (decision-9): the settings screen reads it,
|
|
37
|
+
* validates the form and writes it back, and nothing else remembers a setting.
|
|
38
|
+
* That is what makes a hand edit of the file — in an editor, from a git
|
|
39
|
+
* checkout, by an Eleventy build's own tooling — show on the very next
|
|
40
|
+
* request, and what makes `data/geekity.db` a cache a site may delete.
|
|
33
41
|
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
42
|
+
* This shape is the typed view of the file; {@link settingsFromSiteJson} reads
|
|
43
|
+
* it and {@link siteJsonFor} writes it, so the two stay inverses of each
|
|
44
|
+
* other. The file may hold keys this shape does not model — `feedSize`,
|
|
45
|
+
* anything a site put there — and a save keeps every one of them.
|
|
37
46
|
*/
|
|
38
47
|
export interface SiteSettings {
|
|
39
48
|
/** Site title, shown in the header, the `<title>` and the feeds. */
|
|
@@ -47,32 +56,188 @@ export interface SiteSettings {
|
|
|
47
56
|
baseUrl: string;
|
|
48
57
|
/** An IANA zone name, e.g. `Europe/London`. */
|
|
49
58
|
timezone: string;
|
|
59
|
+
/**
|
|
60
|
+
* The site's language as a BCP 47 tag, `en` by default. It is the
|
|
61
|
+
* `<html lang>` the theme writes, the RSS channel's `<language>` and the
|
|
62
|
+
* Atom feed's `xml:lang`.
|
|
63
|
+
*/
|
|
64
|
+
language: string;
|
|
50
65
|
/** How many posts a listing page holds. A positive integer. */
|
|
51
66
|
postsPerPage: number;
|
|
67
|
+
/**
|
|
68
|
+
* The slug of the page served at `/`, or empty when the site shows its
|
|
69
|
+
* latest posts there. WordPress's Reading choice.
|
|
70
|
+
*
|
|
71
|
+
* A slug rather than a permalink, because a permalink is a thing the editor
|
|
72
|
+
* may change and the setting should follow the page rather than the URL it
|
|
73
|
+
* happened to have. A slug naming nothing published — a page drafted,
|
|
74
|
+
* trashed or deleted since — is a site back on its latest posts: the pick is
|
|
75
|
+
* kept so putting the page back puts the front page back with it.
|
|
76
|
+
*/
|
|
77
|
+
homepage: string;
|
|
78
|
+
/**
|
|
79
|
+
* The slug of the page whose permalink carries the post listing, or empty
|
|
80
|
+
* for none. Only meaningful beside a {@link SiteSettings.homepage}, and the
|
|
81
|
+
* settings screen refuses one without it, exactly as WordPress does.
|
|
82
|
+
*/
|
|
83
|
+
postsPage: string;
|
|
52
84
|
/** Site author, used as the feed author. May be empty. */
|
|
53
85
|
author: string;
|
|
54
|
-
/**
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
86
|
+
/**
|
|
87
|
+
* The theme the site renders through: the name of one directory under the
|
|
88
|
+
* configured themes directory, or empty for the theme the package ships
|
|
89
|
+
* (decision-15).
|
|
90
|
+
*
|
|
91
|
+
* A setting rather than a deployment fact, for the reason the tagline is: it
|
|
92
|
+
* is a look somebody chooses on the Appearance screen, and a site moved from
|
|
93
|
+
* one host to another should arrive looking the same. A name that is not a
|
|
94
|
+
* theme is refused here and falls back to the packaged theme out on the
|
|
95
|
+
* site, so a hand-edited file is a warning in the log rather than a 500.
|
|
96
|
+
*/
|
|
97
|
+
theme: string;
|
|
98
|
+
/**
|
|
99
|
+
* The first URL segment the tag archives live under, `tag` by default: one
|
|
100
|
+
* URL-safe path segment, no slashes. WordPress's own base, so a site
|
|
101
|
+
* imported from it keeps every archive URL it published.
|
|
102
|
+
*/
|
|
103
|
+
tagBase: string;
|
|
104
|
+
/** The same for the category archives, `category` by default. */
|
|
105
|
+
categoryBase: string;
|
|
106
|
+
/**
|
|
107
|
+
* Whether the site takes native comments at all (TASK-50).
|
|
62
108
|
*
|
|
63
|
-
*
|
|
64
|
-
*
|
|
65
|
-
*
|
|
109
|
+
* Off means off everywhere: no form under any post, and every submission
|
|
110
|
+
* refused. It does not touch the fediverse — a reply, a like or a boost
|
|
111
|
+
* arrives because a remote server sent it, and a site cannot stop that or
|
|
112
|
+
* pretend it did not happen.
|
|
66
113
|
*/
|
|
67
|
-
|
|
114
|
+
comments: boolean;
|
|
115
|
+
/**
|
|
116
|
+
* How many days after its `date` a post stops taking comments. Zero never
|
|
117
|
+
* closes one.
|
|
118
|
+
*
|
|
119
|
+
* The age at which a post stops being a conversation and starts being a spam
|
|
120
|
+
* target; fourteen days is WordPress's own default. A post may say otherwise
|
|
121
|
+
* for itself with `comments: true` or `comments: false` in its front matter.
|
|
122
|
+
*/
|
|
123
|
+
commentsCloseAfterDays: number;
|
|
124
|
+
/**
|
|
125
|
+
* Whether the site tells the pages a post links to that it has (TASK-51).
|
|
126
|
+
*
|
|
127
|
+
* On by default, because a link nobody is told about is half a conversation.
|
|
128
|
+
* Off means no webmention is ever sent, including by the Resend button.
|
|
129
|
+
*/
|
|
130
|
+
webmentionsSend: boolean;
|
|
131
|
+
/**
|
|
132
|
+
* Whether the site accepts webmentions sent to it (TASK-51).
|
|
133
|
+
*
|
|
134
|
+
* On by default. Off takes the endpoint off every page and answers the
|
|
135
|
+
* endpoint itself with a 404, which is what a site that does not receive
|
|
136
|
+
* them looks like from outside. It does not touch the fediverse, and it does
|
|
137
|
+
* not touch what has already arrived: a webmention already in the queue is
|
|
138
|
+
* still there for a moderator.
|
|
139
|
+
*/
|
|
140
|
+
webmentionsReceive: boolean;
|
|
141
|
+
/**
|
|
142
|
+
* Where the site announces that a feed changed, and the server its feeds
|
|
143
|
+
* advertise as their rssCloud endpoint and their WebSub hub. An absolute
|
|
144
|
+
* http(s) URL, {@link DEFAULT_NOTIFY_SERVER} by default; empty turns
|
|
145
|
+
* real-time notification off altogether.
|
|
146
|
+
*/
|
|
147
|
+
notifyServer: string;
|
|
148
|
+
/**
|
|
149
|
+
* How the site sends email, or `none` for a site that does not (TASK-53).
|
|
150
|
+
*
|
|
151
|
+
* The name of the provider only. The key or the SMTP password that makes it
|
|
152
|
+
* work is a credential and lives in `data/mail.json`, never here: this file
|
|
153
|
+
* is public, in git and published with the site.
|
|
154
|
+
*/
|
|
155
|
+
mailProvider: MailProviderName;
|
|
156
|
+
/** The display name on the From line. Falls back to the site title. */
|
|
157
|
+
mailFromName: string;
|
|
158
|
+
/**
|
|
159
|
+
* The address on the From line. Empty falls back to `no-reply@` at the base
|
|
160
|
+
* URL's host, which is what an unconfigured site would have to send as
|
|
161
|
+
* anyway — but a provider will only accept a sender it has verified, so a
|
|
162
|
+
* site that sends anything real sets this.
|
|
163
|
+
*/
|
|
164
|
+
mailFromAddress: string;
|
|
165
|
+
/** Where a reply to the site's mail should go. Empty means the From address. */
|
|
166
|
+
mailReplyTo: string;
|
|
167
|
+
/**
|
|
168
|
+
* Where a message from the contact form is sent (TASK-56).
|
|
169
|
+
*
|
|
170
|
+
* Empty falls back to the first admin with an email, so a site that has
|
|
171
|
+
* never visited this field still has somewhere to write. It is read when a
|
|
172
|
+
* message arrives and is never put on a render context, so it cannot appear
|
|
173
|
+
* in the HTML of the page the form is on however a theme is written.
|
|
174
|
+
*/
|
|
175
|
+
contactEmail: string;
|
|
176
|
+
/**
|
|
177
|
+
* The relay inboxes the site subscribes to (FEP-ae0c): a Mastodon-style
|
|
178
|
+
* relay boosts every public post it is sent, which is how a small site
|
|
179
|
+
* reaches instances nobody on it follows.
|
|
180
|
+
*
|
|
181
|
+
* Each is the relay's own inbox URL, absolute and whole — a relay's inbox is
|
|
182
|
+
* a path like `/user/_____relay_____/inbox`, not an origin. The list is
|
|
183
|
+
* edited one per line on the settings screen and held as an array in the
|
|
184
|
+
* file; where each subscription stands is in the database, because the
|
|
185
|
+
* handshake is not the site's to decide.
|
|
186
|
+
*/
|
|
187
|
+
relays: readonly string[];
|
|
188
|
+
/**
|
|
189
|
+
* Whether the site also answers the WordPress ActivityPub plugin's inbox and
|
|
190
|
+
* collection paths (TASK-70).
|
|
191
|
+
*
|
|
192
|
+
* Off, and never written down until somebody turns it on: a site born here
|
|
193
|
+
* has no use for it, and decision-14 calls those paths cache rather than
|
|
194
|
+
* identity. A follower's server delivers to the inbox URL it cached from the
|
|
195
|
+
* actor document and replaces it only when it next refetches the actor, so a
|
|
196
|
+
* site arriving from the plugin keeps receiving at `/wp-json/…` for a while.
|
|
197
|
+
* The CMS carries them until the caches have moved on and no longer, which is
|
|
198
|
+
* why this is a switch a person turns off rather than a permanent fixture.
|
|
199
|
+
*/
|
|
200
|
+
wordpressActivityPub: boolean;
|
|
201
|
+
/**
|
|
202
|
+
* Every menu the site holds, by name: `site.json`'s `menus`, each an ordered
|
|
203
|
+
* list of items a theme renders wherever it declares an area of that name
|
|
204
|
+
* and an Eleventy build reads out of the same file.
|
|
205
|
+
*
|
|
206
|
+
* Not a field of the settings form, and deliberately: a menu is content a
|
|
207
|
+
* site arranges rather than a switch it sets, and which menus there are to
|
|
208
|
+
* edit comes from the active theme. The Navigation screen is what writes
|
|
209
|
+
* them (TASK-108); a settings page carries them through a save untouched,
|
|
210
|
+
* the way it carries the archive renames.
|
|
211
|
+
*/
|
|
212
|
+
menus: NavigationMenus;
|
|
213
|
+
/**
|
|
214
|
+
* The taxonomy archives that have moved: one `{ taxonomy, from, to }` per
|
|
215
|
+
* term the taxonomy screens renamed or merged away, so the URL it used to
|
|
216
|
+
* live at can point at the one it lives at now.
|
|
217
|
+
*
|
|
218
|
+
* Not a field of the settings form: it is a record of what happened rather
|
|
219
|
+
* than a preference, and the taxonomy screens are what write it. Chains are collapsed as they are
|
|
220
|
+
* recorded, so the list answers every old URL in one hop.
|
|
221
|
+
*/
|
|
222
|
+
taxonomyRedirects: readonly TaxonomyRedirect[];
|
|
68
223
|
}
|
|
69
224
|
/**
|
|
70
225
|
* The settings the form on the settings screen carries.
|
|
71
226
|
*
|
|
72
|
-
* Every setting but the
|
|
73
|
-
*
|
|
227
|
+
* Every setting but the two that a screen of its own writes: the recorded
|
|
228
|
+
* archive renames, which the taxonomy screens write, and the menus, which the
|
|
229
|
+
* Navigation screen writes. See {@link CarriedSettings}.
|
|
74
230
|
*/
|
|
75
|
-
export type SettingsField = Exclude<keyof SiteSettings, '
|
|
231
|
+
export type SettingsField = Exclude<keyof SiteSettings, 'taxonomyRedirects' | 'menus'>;
|
|
232
|
+
/**
|
|
233
|
+
* The settings no settings form carries, as a save takes them from the file.
|
|
234
|
+
*
|
|
235
|
+
* Both are records of what another screen did rather than preferences typed
|
|
236
|
+
* into a box, so a save of the title reads them off `site.json` as it stands
|
|
237
|
+
* inside the write rather than off the form — which is what makes a menu
|
|
238
|
+
* edited while the settings page was open survive the save.
|
|
239
|
+
*/
|
|
240
|
+
export type CarriedSettings = Partial<Pick<SiteSettings, 'taxonomyRedirects' | 'menus'>>;
|
|
76
241
|
/**
|
|
77
242
|
* What a site is worth before anybody has said otherwise.
|
|
78
243
|
*
|
|
@@ -86,64 +251,125 @@ export declare const SETTINGS_FIELDS: {
|
|
|
86
251
|
readonly tagline: 'tagline';
|
|
87
252
|
readonly baseUrl: 'base_url';
|
|
88
253
|
readonly timezone: 'timezone';
|
|
254
|
+
readonly language: 'language';
|
|
89
255
|
readonly postsPerPage: 'posts_per_page';
|
|
256
|
+
readonly homepage: 'homepage';
|
|
257
|
+
readonly postsPage: 'posts_page';
|
|
90
258
|
readonly author: 'author';
|
|
91
|
-
readonly
|
|
92
|
-
readonly
|
|
259
|
+
readonly theme: 'theme';
|
|
260
|
+
readonly tagBase: 'tag_base';
|
|
261
|
+
readonly categoryBase: 'category_base';
|
|
262
|
+
readonly comments: 'comments';
|
|
263
|
+
readonly commentsCloseAfterDays: 'comments_close_after_days';
|
|
264
|
+
readonly webmentionsSend: 'webmentions_send';
|
|
265
|
+
readonly webmentionsReceive: 'webmentions_receive';
|
|
266
|
+
readonly notifyServer: 'notify_server';
|
|
267
|
+
readonly mailProvider: 'mail_provider';
|
|
268
|
+
readonly mailFromName: 'mail_from_name';
|
|
269
|
+
readonly mailFromAddress: 'mail_from_address';
|
|
270
|
+
readonly mailReplyTo: 'mail_reply_to';
|
|
271
|
+
readonly contactEmail: 'contact_email';
|
|
272
|
+
readonly relays: 'relays';
|
|
273
|
+
readonly wordpressActivityPub: 'wordpress_activitypub';
|
|
93
274
|
};
|
|
94
275
|
/** A submitted settings form, before it is known to be valid. */
|
|
95
276
|
export type SettingsForm = Record<SettingsField, string>;
|
|
96
277
|
/** One message per field that is wrong. An empty object is a valid form. */
|
|
97
278
|
export type SettingsProblems = Partial<Record<SettingsField, string>>;
|
|
98
|
-
/** The stored settings, with every default filled in. */
|
|
99
|
-
export declare function readSiteSettings(store: AdminStore): SiteSettings;
|
|
100
|
-
/** Write a whole settings object back to the store. */
|
|
101
|
-
export declare function writeSiteSettings(store: AdminStore, settings: SiteSettings): void;
|
|
102
279
|
/**
|
|
103
|
-
*
|
|
280
|
+
* A site's settings, as its `content/_data/site.json` says them right now.
|
|
104
281
|
*
|
|
105
|
-
*
|
|
106
|
-
*
|
|
107
|
-
*
|
|
282
|
+
* Read on every request that needs one rather than cached, which is what a
|
|
283
|
+
* source of truth being a file is worth: a hand edit shows on the public site,
|
|
284
|
+
* on the settings screen and in the actor document without a restart and
|
|
285
|
+
* without anything being told. The file is a few hundred bytes, so the read
|
|
286
|
+
* costs less than the parse of the template that is about to use it.
|
|
287
|
+
*
|
|
288
|
+
* A file that is missing, or one that will not parse, is the defaults rather
|
|
289
|
+
* than an error: a typo in `site.json` should leave a site up and answerable,
|
|
290
|
+
* with the settings screen there to put it right.
|
|
108
291
|
*/
|
|
109
|
-
export declare function
|
|
292
|
+
export declare function readSiteSettings(contentDir: string): SiteSettings;
|
|
293
|
+
/**
|
|
294
|
+
* `content/_data/site.json` as the settings it names, defaults filled in.
|
|
295
|
+
*
|
|
296
|
+
* Read tolerantly, key by key, because the file is public, in git and editable
|
|
297
|
+
* by hand: a key of the wrong type, or one a site has never written, falls
|
|
298
|
+
* back to the default rather than taking the site down. The empty string is a
|
|
299
|
+
* value of its own for `tagline`, `author` and `notifyServer`, where empty is
|
|
300
|
+
* a decision — no tagline, no author, notifications off — and not for
|
|
301
|
+
* `title`, `timezone`, `language` or the two archive bases, where it is a hole
|
|
302
|
+
* only a default can fill.
|
|
303
|
+
*/
|
|
304
|
+
export declare function settingsFromSiteJson(file: Record<string, unknown>): SiteSettings;
|
|
305
|
+
/** The two archive bases the settings hold, as the URL builders want them. */
|
|
306
|
+
export declare function taxonomyBasesFromSettings(settings: SiteSettings): TaxonomyBases;
|
|
110
307
|
/**
|
|
111
308
|
* `content/_data/site.json` as it should read for these settings.
|
|
112
309
|
*
|
|
113
|
-
* Every key the
|
|
114
|
-
* file's shape is stable and an Eleventy template may reference
|
|
115
|
-
* without guarding it. Every other key the file already had is
|
|
116
|
-
* may put anything in there and reach it from its templates, and
|
|
117
|
-
* form is not going to be the thing that throws it away.
|
|
310
|
+
* Every key the settings model is written whether or not it has a value, so
|
|
311
|
+
* the file's shape is stable and an Eleventy template may reference
|
|
312
|
+
* `site.author` without guarding it. Every other key the file already had is
|
|
313
|
+
* kept: a site may put anything in there and reach it from its templates, and
|
|
314
|
+
* the settings form is not going to be the thing that throws it away.
|
|
315
|
+
*
|
|
316
|
+
* `homepage` and `postsPage` are the one exception, and they earn it: a site
|
|
317
|
+
* showing its latest posts has no static front page at all rather than an
|
|
318
|
+
* empty one, so the keys are absent rather than empty — which is also how a
|
|
319
|
+
* `site.json` written before this version reads, and what it should mean.
|
|
118
320
|
*/
|
|
119
321
|
export declare function siteJsonFor(settings: SiteSettings, existing?: Record<string, unknown>): Record<string, unknown>;
|
|
120
322
|
/** The absolute path of one site's `content/_data/site.json`. */
|
|
121
323
|
export declare function siteDataPath(contentDir: string): string;
|
|
122
324
|
/**
|
|
123
|
-
* Rewrite `content/_data/site.json`
|
|
325
|
+
* Rewrite `content/_data/site.json` as these settings, keeping the keys they
|
|
326
|
+
* do not model.
|
|
124
327
|
*
|
|
125
|
-
*
|
|
126
|
-
*
|
|
127
|
-
*
|
|
128
|
-
* one.
|
|
328
|
+
* {@link updateSiteSettings} for a caller whose new settings depend on the old
|
|
329
|
+
* ones, which every screen's is: this is for the callers that have the whole
|
|
330
|
+
* object already, a test's set-up among them.
|
|
129
331
|
*/
|
|
130
332
|
export declare function writeSiteJson(options: {
|
|
131
333
|
contentDir: string;
|
|
132
334
|
settings: SiteSettings;
|
|
133
335
|
}): Promise<void>;
|
|
134
336
|
/**
|
|
135
|
-
*
|
|
136
|
-
*
|
|
137
|
-
* the values it already had.
|
|
337
|
+
* Change the settings: re-read the file, apply the change, write it back, with
|
|
338
|
+
* nothing able to write that file in between ({@link updateFileAtomically}).
|
|
138
339
|
*
|
|
139
|
-
*
|
|
140
|
-
*
|
|
141
|
-
*
|
|
340
|
+
* The re-read is what makes the file win the way it wins for a post
|
|
341
|
+
* (decision-9). Two people with the settings screen open both save what they
|
|
342
|
+
* see, and the second save is applied to what the first one actually wrote
|
|
343
|
+
* rather than to what the second one had on screen — so a change to a field
|
|
344
|
+
* the second person did not touch survives. The write is a temporary file and
|
|
345
|
+
* a rename, so a reader — an Eleventy build, the site data source, another
|
|
346
|
+
* process entirely — never sees a half-written file. Keys the settings do not
|
|
347
|
+
* model, `feedSize` and anything a site added, are kept.
|
|
142
348
|
*/
|
|
143
|
-
export declare function
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
}): SiteSettings
|
|
349
|
+
export declare function updateSiteSettings(options: {
|
|
350
|
+
contentDir: string;
|
|
351
|
+
change: (current: SiteSettings) => SiteSettings;
|
|
352
|
+
}): Promise<SiteSettings>;
|
|
353
|
+
/**
|
|
354
|
+
* Turn an older site's settings rows into `content/_data/site.json`, once, and
|
|
355
|
+
* drop the table.
|
|
356
|
+
*
|
|
357
|
+
* TASK-14 made SQLite the source and the file its mirror; decision-9 reversed
|
|
358
|
+
* that, and a site upgrading across the two has rows nothing would ever read
|
|
359
|
+
* again. So the first boot of this version writes them out. Which side wins
|
|
360
|
+
* when both have something to say is decided the way it is decided everywhere
|
|
361
|
+
* else: the file wins when it was written after the last save, because that is
|
|
362
|
+
* a hand edit or a restored checkout, and the rows win otherwise. Either way
|
|
363
|
+
* the actor handle and type come from the rows, because `site.json` never
|
|
364
|
+
* carried them and losing them would rename the site's actor.
|
|
365
|
+
*
|
|
366
|
+
* Synchronous because `createCms` is: it runs before the server is listening
|
|
367
|
+
* and before anything else has touched the file.
|
|
368
|
+
*/
|
|
369
|
+
export declare function migrateSettingsToFile(options: {
|
|
370
|
+
admin: AdminStore;
|
|
371
|
+
contentDir: string;
|
|
372
|
+
}): void;
|
|
147
373
|
/**
|
|
148
374
|
* The base URL actually in effect, and why.
|
|
149
375
|
*
|
|
@@ -154,41 +380,58 @@ export declare function seedSiteSettings(options: {
|
|
|
154
380
|
* offering a field that would quietly do nothing.
|
|
155
381
|
*/
|
|
156
382
|
export declare function effectiveBaseUrl(config: Pick<ResolvedConfig, 'baseUrl' | 'baseUrlSource'>, settings: SiteSettings): string;
|
|
157
|
-
/**
|
|
158
|
-
|
|
383
|
+
/**
|
|
384
|
+
* What a check may need to know beyond the form itself.
|
|
385
|
+
*
|
|
386
|
+
* One field has anything here, and it is the theme: whether a name is a theme
|
|
387
|
+
* is a question about the file system rather than about the string, and only
|
|
388
|
+
* the config knows where this site's themes are. A check given no context does
|
|
389
|
+
* what it can — the theme's is still a name it can refuse — so a caller with
|
|
390
|
+
* no config in hand is not blocked.
|
|
391
|
+
*/
|
|
392
|
+
export interface SettingsContext {
|
|
393
|
+
/** Where the site's themes are: {@link ResolvedConfig.themesDir}. */
|
|
394
|
+
themesDir?: string | undefined;
|
|
395
|
+
}
|
|
396
|
+
/** Every field of the settings, in the order the form fields name them. */
|
|
397
|
+
export declare const SETTINGS_FIELD_NAMES: readonly SettingsField[];
|
|
398
|
+
/**
|
|
399
|
+
* What is wrong with a submitted settings form, one message per field.
|
|
400
|
+
*
|
|
401
|
+
* `fields` is what a page carries: it validates its own fields and says
|
|
402
|
+
* nothing about the rest, so a page cannot refuse a save over a field it does
|
|
403
|
+
* not show and gives no way to fix. `context` is what a check needs beyond the
|
|
404
|
+
* form; see {@link SettingsContext}.
|
|
405
|
+
*/
|
|
406
|
+
export declare function settingsProblems(form: SettingsForm, fields?: readonly SettingsField[], context?: SettingsContext): SettingsProblems;
|
|
159
407
|
/**
|
|
160
408
|
* A validated form as settings. Only call it on a form
|
|
161
409
|
* {@link settingsProblems} found nothing wrong with.
|
|
162
410
|
*
|
|
163
|
-
* The
|
|
164
|
-
* it: the
|
|
165
|
-
* save of the
|
|
411
|
+
* The archive renames and the menus are carried in rather than read off the
|
|
412
|
+
* form, because they are not on it: the taxonomy screens write the one and the
|
|
413
|
+
* Navigation screen the other, and a save of the fields that are on the form
|
|
414
|
+
* keeps whatever is stored. Passing the settings read inside the write is all
|
|
415
|
+
* a caller has to do, since they hold both.
|
|
166
416
|
*/
|
|
167
|
-
export declare function settingsFromForm(form: SettingsForm,
|
|
417
|
+
export declare function settingsFromForm(form: SettingsForm, carried?: CarriedSettings): SiteSettings;
|
|
168
418
|
/** The settings as the form shows them. */
|
|
169
419
|
export declare function formFromSettings(settings: SiteSettings): SettingsForm;
|
|
170
|
-
/** What {@link mountSettings} needs from the admin around it. */
|
|
171
|
-
export interface MountSettingsOptions {
|
|
172
|
-
/** The admin's renderer, which injects the chrome, the CSRF token and the flash. */
|
|
173
|
-
render: AdminRender;
|
|
174
|
-
}
|
|
175
420
|
/**
|
|
176
|
-
*
|
|
421
|
+
* A relay textarea as the list of inboxes it names: normalised, in the order
|
|
422
|
+
* they were given, with repeats dropped.
|
|
177
423
|
*
|
|
178
|
-
*
|
|
179
|
-
*
|
|
180
|
-
*
|
|
424
|
+
* Exported because the same parsing turns a stored setting, a submitted form
|
|
425
|
+
* and a `site.json` array into the one list; a second spelling of it would let
|
|
426
|
+
* the file and the database disagree about what a site subscribes to.
|
|
181
427
|
*/
|
|
182
|
-
export declare function
|
|
428
|
+
export declare function relayList(value: string): string[];
|
|
183
429
|
/**
|
|
184
|
-
*
|
|
185
|
-
* decides whether the followers are told (doc-4: the profile fields come from
|
|
186
|
-
* the settings). The rest — the time zone, the page size — is the site's own
|
|
187
|
-
* business and nobody else's.
|
|
430
|
+
* A relay inbox URL, or `undefined` when it is not an absolute http(s) one.
|
|
188
431
|
*
|
|
189
|
-
*
|
|
190
|
-
*
|
|
191
|
-
*
|
|
432
|
+
* Unlike {@link normalizeBaseUrl} this keeps the whole URL bar a trailing
|
|
433
|
+
* slash: a relay inbox is a path — `/user/_____relay_____/inbox` — rather than
|
|
434
|
+
* an origin, and some relays hang one off a query string.
|
|
192
435
|
*/
|
|
193
|
-
export declare function
|
|
436
|
+
export declare function normalizeRelayInbox(value: string): string | undefined;
|
|
194
437
|
//# sourceMappingURL=settings.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/admin/settings.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/admin/settings.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAOnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAI5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAM5D,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAG1E,OAAO,KAAK,EAAE,UAAU,EAAiB,MAAM,YAAY,CAAC;AAE5D;;;GAGG;AACH,eAAO,MAAM,aAAa,oBAA6B,CAAC;AAExD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB,QAA8C,CAAC;AAEhF;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,QAAsC,CAAC;AAEjE;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,YAAY;IAC3B,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,+DAA+D;IAC/D,YAAY,EAAE,MAAM,CAAC;IACrB;;;;;;;;;OASG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;;;;;OAUG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,YAAY,EAAE,MAAM,CAAC;IACrB;;;;;;;OAOG;IACH,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;;;;OAOG;IACH,sBAAsB,EAAE,MAAM,CAAC;IAC/B;;;;;OAKG;IACH,eAAe,EAAE,OAAO,CAAC;IACzB;;;;;;;;OAQG;IACH,kBAAkB,EAAE,OAAO,CAAC;IAC5B;;;;;OAKG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;;;;;OAMG;IACH,YAAY,EAAE,gBAAgB,CAAC;IAC/B,uEAAuE;IACvE,YAAY,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB,gFAAgF;IAChF,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;;OAOG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;;;;;;;;;OAUG;IACH,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B;;;;;;;;;;;OAWG;IACH,oBAAoB,EAAE,OAAO,CAAC;IAC9B;;;;;;;;;;OAUG;IACH,KAAK,EAAE,eAAe,CAAC;IACvB;;;;;;;;OAQG;IACH,iBAAiB,EAAE,SAAS,gBAAgB,EAAE,CAAC;CAChD;AAED;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,YAAY,EAAE,mBAAmB,GAAG,OAAO,CAAC,CAAC;AAEvF;;;;;;;GAOG;AACH,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,mBAAmB,GAAG,OAAO,CAAC,CAAC,CAAC;AAEzF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,EAAE,YA2BnC,CAAC;AAEF,sDAAsD;AACtD,eAAO,MAAM,eAAe;oBACnB,OAAO;sBACL,SAAS;sBACT,UAAU;uBACT,UAAU;uBACV,UAAU;2BACN,gBAAgB;uBACpB,UAAU;wBACT,YAAY;qBACf,QAAQ;oBACT,OAAO;sBACL,UAAU;2BACL,eAAe;uBACnB,UAAU;qCACI,2BAA2B;8BAClC,kBAAkB;iCACf,qBAAqB;2BAC3B,eAAe;2BACf,eAAe;2BACf,gBAAgB;8BACb,mBAAmB;0BACvB,eAAe;2BACd,eAAe;qBACrB,QAAQ;mCACM,uBAAuB;CACG,CAAC;AAEnD,iEAAiE;AACjE,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AAEzD,4EAA4E;AAC5E,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;AAEtE;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,CAEjE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,YAAY,CA6EhF;AAED,8EAA8E;AAC9E,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,YAAY,GAAG,aAAa,CAE/E;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,YAAY,EACtB,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACrC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA2DzB;AAED,iEAAiE;AACjE,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEvD;AAOD;;;;;;;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;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAiB9F;AA8CD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,SAAS,GAAG,eAAe,CAAC,EACzD,QAAQ,EAAE,YAAY,GACrB,MAAM,CAGR;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,eAAe;IAC9B,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AA2JD,2EAA2E;AAC3E,eAAO,MAAM,oBAAoB,EAAE,SAAS,aAAa,EAErC,CAAC;AAErB;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,YAAY,EAClB,MAAM,GAAE,SAAS,aAAa,EAAyB,EACvD,OAAO,GAAE,eAAoB,GAC5B,gBAAgB,CASlB;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,GAAE,eAAoB,GAAG,YAAY,CAoChG;AAED,2CAA2C;AAC3C,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,YAAY,GAAG,YAAY,CA2BrE;AA0DD;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAOjD;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAcrE"}
|