@geekity/cms 0.3.0 → 0.4.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 +2091 -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/pages/documents/editor.njk +196 -0
- 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/media/library.njk +160 -0
- package/admin/pages/messages/all.njk +110 -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/federation.njk +75 -0
- package/admin/pages/settings/general.njk +29 -0
- package/admin/pages/settings/permalinks.njk +50 -0
- package/admin/pages/settings/reading.njk +72 -0
- package/admin/pages/users/edit.njk +239 -0
- package/admin/pages/users/list.njk +48 -0
- package/admin/pages/users/new.njk +41 -0
- package/admin/static/admin.css +498 -3
- package/admin/static/copy.js +52 -0
- package/admin/static/editor.js +16 -16
- package/admin/static/slug.js +61 -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 +127 -10
- package/dist/admin/documents.d.ts.map +1 -1
- package/dist/admin/documents.js +360 -41
- package/dist/admin/documents.js.map +1 -1
- package/dist/admin/federation.d.ts +151 -50
- package/dist/admin/federation.d.ts.map +1 -1
- package/dist/admin/federation.js +225 -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 +126 -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/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 +155 -105
- package/dist/admin/routes.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 +39 -0
- package/dist/admin/settings-federation.d.ts.map +1 -0
- package/dist/admin/settings-federation.js +103 -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 +102 -0
- package/dist/admin/settings-page.d.ts.map +1 -0
- package/dist/admin/settings-page.js +126 -0
- package/dist/admin/settings-page.js.map +1 -0
- package/dist/admin/settings-pages.d.ts +19 -0
- package/dist/admin/settings-pages.d.ts.map +1 -0
- package/dist/admin/settings-pages.js +33 -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 +33 -0
- package/dist/admin/settings-reading.d.ts.map +1 -0
- package/dist/admin/settings-reading.js +48 -0
- package/dist/admin/settings-reading.js.map +1 -0
- package/dist/admin/settings.d.ts +325 -96
- package/dist/admin/settings.d.ts.map +1 -1
- package/dist/admin/settings.js +650 -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 +44 -14
- package/dist/admin/templates.d.ts.map +1 -1
- package/dist/admin/templates.js +44 -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/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 +424 -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 +75 -0
- package/dist/comments/form.d.ts.map +1 -0
- package/dist/comments/form.js +64 -0
- package/dist/comments/form.js.map +1 -0
- package/dist/comments/index.d.ts +15 -0
- package/dist/comments/index.d.ts.map +1 -0
- package/dist/comments/index.js +9 -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 +58 -0
- package/dist/comments/routes.d.ts.map +1 -0
- package/dist/comments/routes.js +177 -0
- package/dist/comments/routes.js.map +1 -0
- package/dist/comments/submission.d.ts +263 -0
- package/dist/comments/submission.d.ts.map +1 -0
- package/dist/comments/submission.js +241 -0
- package/dist/comments/submission.js.map +1 -0
- package/dist/config.d.ts +190 -5
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +118 -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 +202 -7
- package/dist/content/store.d.ts.map +1 -1
- package/dist/content/store.js +374 -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 +58 -4
- 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 +42 -10
- package/dist/federation/mount.d.ts.map +1 -1
- package/dist/federation/mount.js +266 -26
- 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 +327 -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 +73 -0
- package/dist/web/navigation.d.ts.map +1 -0
- package/dist/web/navigation.js +110 -0
- package/dist/web/navigation.js.map +1 -0
- package/dist/web/negotiate.d.ts +9 -0
- package/dist/web/negotiate.d.ts.map +1 -1
- package/dist/web/negotiate.js +6 -1
- 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 +197 -9
- package/dist/web/render.d.ts.map +1 -1
- package/dist/web/render.js +334 -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 +845 -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 +205 -0
- package/dist/web/themes.d.ts.map +1 -0
- package/dist/web/themes.js +277 -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 +1 -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 +1096 -50
- package/themes/default/layouts/404.njk +2 -3
- package/themes/default/layouts/author.njk +37 -0
- package/themes/default/layouts/base.njk +172 -31
- package/themes/default/layouts/category.njk +27 -0
- package/themes/default/layouts/front-page.njk +57 -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 +77 -0
- package/themes/default/partials/comment-form.njk +109 -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/pagination.njk +12 -6
- package/themes/default/partials/post-list.njk +51 -18
- package/themes/default/partials/search-form.njk +17 -0
- package/themes/default/partials/tags.njk +26 -5
- package/themes/default/static/highlight.js +4 -0
- package/themes/default/static/style.css +1119 -194
- package/themes/default/theme.json +5 -0
- package/admin/layouts/document-editor.njk +0 -167
- 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
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
/** Every format, RSS first, in the order a page should advertise them. */
|
|
2
|
+
export const FEED_FORMATS = ['rss', 'atom', 'json'];
|
|
3
|
+
/** The segment every feed URL hangs off its listing root by: `/feed/…`. */
|
|
4
|
+
export const FEED_SEGMENT = 'feed';
|
|
5
|
+
/**
|
|
6
|
+
* The segment under `feed/` each format lives at.
|
|
7
|
+
*
|
|
8
|
+
* RSS has none, so the bare `/feed/` is RSS 2.0 — WordPress's layout, and the
|
|
9
|
+
* URL every existing subscriber of a migrated site already polls.
|
|
10
|
+
*/
|
|
11
|
+
export const FEED_SEGMENTS = {
|
|
12
|
+
rss: '',
|
|
13
|
+
atom: 'atom',
|
|
14
|
+
json: 'json',
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Spellings WordPress also answered on, which this site redirects rather than
|
|
18
|
+
* serves. `/feed/rss/` was its alias for the RSS 2.0 feed.
|
|
19
|
+
*/
|
|
20
|
+
export const FEED_ALIASES = {
|
|
21
|
+
rss: 'rss',
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* The root the site-wide comments feed hangs off, so `/comments/feed/` is the
|
|
25
|
+
* URL WordPress served it at. It is a listing root like any other as far as
|
|
26
|
+
* {@link feedPathUnder} is concerned; nothing is served at the root itself.
|
|
27
|
+
*/
|
|
28
|
+
export const COMMENTS_ROOT = '/comments/';
|
|
29
|
+
/** What a post's comments feed calls itself, before the post's title. */
|
|
30
|
+
export const COMMENTS_TITLE_PREFIX = 'Comments on: ';
|
|
31
|
+
/** What each format is labelled with on the wire. */
|
|
32
|
+
export const FEED_CONTENT_TYPES = {
|
|
33
|
+
rss: 'application/rss+xml; charset=utf-8',
|
|
34
|
+
atom: 'application/atom+xml; charset=utf-8',
|
|
35
|
+
json: 'application/feed+json; charset=utf-8',
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* The URL of one format's feed under a listing root.
|
|
39
|
+
*
|
|
40
|
+
* The root is any listing URL ending in `/` — the site root, a taxonomy
|
|
41
|
+
* archive, and in time a post's permalink for its comments feed — so this is
|
|
42
|
+
* the one place the `/feed/…/` shape is spelled.
|
|
43
|
+
*/
|
|
44
|
+
export function feedPathUnder(root, format) {
|
|
45
|
+
const segment = FEED_SEGMENTS[format];
|
|
46
|
+
return `${root}${FEED_SEGMENT}/${segment === '' ? '' : `${segment}/`}`;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* The URL of a comments feed: one post's, or — with no permalink — the whole
|
|
50
|
+
* site's.
|
|
51
|
+
*
|
|
52
|
+
* WordPress's URLs, so a site migrated from it keeps both. There is one format,
|
|
53
|
+
* RSS 2.0, because that is what a comments feed is read in.
|
|
54
|
+
*/
|
|
55
|
+
export function commentsFeedPath(permalink) {
|
|
56
|
+
return feedPathUnder(permalink ?? COMMENTS_ROOT, 'rss');
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* A path as the feed it names, or `undefined` when it names none.
|
|
60
|
+
*
|
|
61
|
+
* The inverse of {@link feedPathUnder}, and deliberately ignorant of what the
|
|
62
|
+
* root turns out to be: the caller decides whether `/tag/x/` is a listing it
|
|
63
|
+
* serves. Only the slashed form parses; the bare `/feed` is handled by the
|
|
64
|
+
* canonical redirect, like every other missing trailing slash on the site.
|
|
65
|
+
*/
|
|
66
|
+
export function splitFeedPath(pathname) {
|
|
67
|
+
if (!pathname.endsWith('/'))
|
|
68
|
+
return undefined;
|
|
69
|
+
const segments = pathname.slice(0, -1).split('/');
|
|
70
|
+
const last = segments.pop() ?? '';
|
|
71
|
+
if (last === FEED_SEGMENT) {
|
|
72
|
+
return { root: `${segments.join('/')}/`, format: 'rss', canonical: true };
|
|
73
|
+
}
|
|
74
|
+
if (segments.pop() !== FEED_SEGMENT)
|
|
75
|
+
return undefined;
|
|
76
|
+
const root = `${segments.join('/')}/`;
|
|
77
|
+
for (const format of FEED_FORMATS) {
|
|
78
|
+
if (FEED_SEGMENTS[format] === last)
|
|
79
|
+
return { root, format, canonical: true };
|
|
80
|
+
}
|
|
81
|
+
const alias = FEED_ALIASES[last];
|
|
82
|
+
return alias === undefined ? undefined : { root, format: alias, canonical: false };
|
|
83
|
+
}
|
|
84
|
+
/** The media type a format is labelled with, without the charset. */
|
|
85
|
+
export function contentTypeOf(format) {
|
|
86
|
+
return FEED_CONTENT_TYPES[format].split(';')[0] ?? '';
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* The notify server a site advertises and pings when it has not said
|
|
90
|
+
* otherwise: the one this CMS's author runs, which speaks both rssCloud and
|
|
91
|
+
* WebSub, so one server covers every real-time subscriber a feed has.
|
|
92
|
+
*/
|
|
93
|
+
export const DEFAULT_NOTIFY_SERVER = 'https://rpc.rsscloud.io';
|
|
94
|
+
/** The three paths a notify server answers on, under whatever URL it lives at. */
|
|
95
|
+
export const NOTIFY_PATHS = {
|
|
96
|
+
/** Where a subscriber registers for rssCloud notifications. */
|
|
97
|
+
pleaseNotify: 'pleaseNotify',
|
|
98
|
+
/** The WebSub hub: where a subscriber subscribes, and a publisher publishes. */
|
|
99
|
+
hub: 'websub',
|
|
100
|
+
/** Where this site says a feed changed. */
|
|
101
|
+
ping: 'ping',
|
|
102
|
+
};
|
|
103
|
+
/**
|
|
104
|
+
* The port and protocol the legacy `<cloud>` element carries, whatever scheme
|
|
105
|
+
* the server itself is reached over.
|
|
106
|
+
*
|
|
107
|
+
* rpc.rsscloud.io's quick start prescribes exactly these: the element predates
|
|
108
|
+
* TLS being the default, and a reader that understands it is looking for the
|
|
109
|
+
* shape rather than for a port to dial.
|
|
110
|
+
*/
|
|
111
|
+
export const NOTIFY_CLOUD_PORT = 80;
|
|
112
|
+
/** The `protocol` of that same element. */
|
|
113
|
+
export const NOTIFY_CLOUD_PROTOCOL = 'http-post';
|
|
114
|
+
/**
|
|
115
|
+
* One notify server URL as everything derived from it, or `undefined` when
|
|
116
|
+
* there is no server: an empty setting is how a site turns the whole feature
|
|
117
|
+
* off, and a value that is not an absolute http(s) URL is treated the same way
|
|
118
|
+
* rather than published as nonsense.
|
|
119
|
+
*/
|
|
120
|
+
export function notifyEndpoints(server) {
|
|
121
|
+
const trimmed = server.trim();
|
|
122
|
+
if (trimmed === '')
|
|
123
|
+
return undefined;
|
|
124
|
+
let url;
|
|
125
|
+
try {
|
|
126
|
+
url = new URL(trimmed);
|
|
127
|
+
}
|
|
128
|
+
catch {
|
|
129
|
+
return undefined;
|
|
130
|
+
}
|
|
131
|
+
if (url.protocol !== 'http:' && url.protocol !== 'https:')
|
|
132
|
+
return undefined;
|
|
133
|
+
const path = url.pathname.endsWith('/') ? url.pathname.slice(0, -1) : url.pathname;
|
|
134
|
+
const base = url.origin + path;
|
|
135
|
+
return {
|
|
136
|
+
base,
|
|
137
|
+
pleaseNotify: `${base}/${NOTIFY_PATHS.pleaseNotify}`,
|
|
138
|
+
hub: `${base}/${NOTIFY_PATHS.hub}`,
|
|
139
|
+
ping: `${base}/${NOTIFY_PATHS.ping}`,
|
|
140
|
+
cloud: {
|
|
141
|
+
domain: url.hostname,
|
|
142
|
+
port: NOTIFY_CLOUD_PORT,
|
|
143
|
+
path: `${path}/${NOTIFY_PATHS.pleaseNotify}`,
|
|
144
|
+
registerProcedure: '',
|
|
145
|
+
protocol: NOTIFY_CLOUD_PROTOCOL,
|
|
146
|
+
},
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* The notify server this site's feeds advertise, from `notifyServer` in
|
|
151
|
+
* `content/_data/site.json`.
|
|
152
|
+
*
|
|
153
|
+
* An empty value is a site that turned real-time notification off; a missing
|
|
154
|
+
* key is a site that has never said, and gets {@link DEFAULT_NOTIFY_SERVER}.
|
|
155
|
+
* That is the same rule the settings read the file by, so the server the feeds
|
|
156
|
+
* advertise is always the server the CMS pings.
|
|
157
|
+
*/
|
|
158
|
+
export function notifyServerOf(site) {
|
|
159
|
+
const configured = site['notifyServer'];
|
|
160
|
+
if (configured === undefined)
|
|
161
|
+
return notifyEndpoints(DEFAULT_NOTIFY_SERVER);
|
|
162
|
+
return typeof configured === 'string' ? notifyEndpoints(configured) : undefined;
|
|
163
|
+
}
|
|
164
|
+
/** How many entries a feed carries when the site does not say. */
|
|
165
|
+
export const DEFAULT_FEED_SIZE = 20;
|
|
166
|
+
/** What the feeds name themselves as. */
|
|
167
|
+
export const FEED_GENERATOR = 'Geekity';
|
|
168
|
+
/** Where a reader can go to find out what wrote the feed. */
|
|
169
|
+
export const FEED_GENERATOR_URI = 'https://www.npmjs.com/package/@geekity/cms';
|
|
170
|
+
/**
|
|
171
|
+
* How many entries a feed carries.
|
|
172
|
+
*
|
|
173
|
+
* `feedSize` in `content/_data/site.json` wins; without it a feed is longer
|
|
174
|
+
* than an archive page, because a reader that polls once a day should not miss
|
|
175
|
+
* a post on a site that publishes several.
|
|
176
|
+
*/
|
|
177
|
+
export function feedSize(site) {
|
|
178
|
+
const configured = site['feedSize'];
|
|
179
|
+
if (typeof configured === 'number' && Number.isInteger(configured) && configured > 0) {
|
|
180
|
+
return configured;
|
|
181
|
+
}
|
|
182
|
+
return DEFAULT_FEED_SIZE;
|
|
183
|
+
}
|
|
184
|
+
/** The language a feed declares when the site does not name one. */
|
|
185
|
+
export const DEFAULT_FEED_LANGUAGE = 'en';
|
|
186
|
+
/** The language tag a feed declares: the site's, or {@link DEFAULT_FEED_LANGUAGE}. */
|
|
187
|
+
export function feedLanguage(site) {
|
|
188
|
+
const configured = site['language'];
|
|
189
|
+
return typeof configured === 'string' && configured.trim() !== ''
|
|
190
|
+
? configured.trim()
|
|
191
|
+
: DEFAULT_FEED_LANGUAGE;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* The instant a feed reports as its own `updated`.
|
|
195
|
+
*
|
|
196
|
+
* An empty feed still has to carry one, and it has to be the same on every
|
|
197
|
+
* request or the ETag would change while nothing did, so it is the epoch
|
|
198
|
+
* rather than the clock.
|
|
199
|
+
*/
|
|
200
|
+
export const EMPTY_FEED_UPDATED = new Date(0);
|
|
201
|
+
//# sourceMappingURL=feed-source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feed-source.js","sourceRoot":"","sources":["../../src/web/feed-source.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The XML a feed is written with: escaping, CDATA, indented elements, links
|
|
3
|
+
* and authors, and the namespaces the vocabularies live in.
|
|
4
|
+
*
|
|
5
|
+
* Nothing here knows what a feed is. It is the plumbing the RSS and Atom
|
|
6
|
+
* serialisers share, kept apart from them so that a question about escaping is
|
|
7
|
+
* answered in one file rather than three, and so the serialisers read as the
|
|
8
|
+
* shape of a document rather than as string handling.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Dave Winer's `source` namespace, which RSS 2.0 feeds here declare so an item
|
|
12
|
+
* can carry the Markdown it was written from. TASK-38's `source:cloud` is the
|
|
13
|
+
* same namespace.
|
|
14
|
+
*/
|
|
15
|
+
export declare const SOURCE_NAMESPACE = "https://source.scripting.com/";
|
|
16
|
+
/** Dublin Core, which is where an RSS item's `creator` comes from. */
|
|
17
|
+
export declare const DC_NAMESPACE = "http://purl.org/dc/elements/1.1/";
|
|
18
|
+
/**
|
|
19
|
+
* The Well-Formed Web comment API, whose `commentRss` is how an RSS reader is
|
|
20
|
+
* told where one item's comments are. WordPress puts it on every item, so a
|
|
21
|
+
* reader that already understands a WordPress feed understands this one.
|
|
22
|
+
*/
|
|
23
|
+
export declare const WFW_NAMESPACE = "http://wellformedweb.org/CommentAPI/";
|
|
24
|
+
/**
|
|
25
|
+
* A date as RFC 822, which is what RSS 2.0's `pubDate` and `lastBuildDate`
|
|
26
|
+
* are. `toUTCString` writes exactly that spelling, `GMT` zone included.
|
|
27
|
+
*/
|
|
28
|
+
export declare function rfc822(date: Date): string;
|
|
29
|
+
/**
|
|
30
|
+
* XML character data, escaped.
|
|
31
|
+
*
|
|
32
|
+
* `<` and `&` have to go; `>` follows them because `]]>` in text is not
|
|
33
|
+
* allowed and spotting it is not worth the trouble. Quotes are escaped too so
|
|
34
|
+
* one function serves attribute values as well as text. Characters XML 1.0
|
|
35
|
+
* cannot represent at all — the C0 controls other than tab, newline and
|
|
36
|
+
* carriage return — are dropped rather than escaped, because there is no
|
|
37
|
+
* spelling of them that would parse.
|
|
38
|
+
*/
|
|
39
|
+
export declare function escapeXml(value: string): string;
|
|
40
|
+
/**
|
|
41
|
+
* Character data as a CDATA section, which is how a feed carries markup a
|
|
42
|
+
* reader is meant to render rather than display.
|
|
43
|
+
*
|
|
44
|
+
* The only sequence a section may not contain is its own terminator, so a
|
|
45
|
+
* `]]>` in the text is split across two sections; the parser rejoins them and
|
|
46
|
+
* the reader sees the original bytes. Characters XML 1.0 cannot represent are
|
|
47
|
+
* dropped, exactly as {@link escapeXml} drops them, because CDATA suspends
|
|
48
|
+
* escaping and not the character set.
|
|
49
|
+
*/
|
|
50
|
+
export declare function cdata(value: string): string;
|
|
51
|
+
/** An element holding text, indented. */
|
|
52
|
+
export declare function element(name: string, text: string, depth?: number): string;
|
|
53
|
+
/** The same, or nothing at all when there is no value. */
|
|
54
|
+
export declare function optionalElement(name: string, text: string | undefined, depth?: number): string[];
|
|
55
|
+
/** An Atom `<link>`. The `type` is left off when there is nothing to declare. */
|
|
56
|
+
export declare function link(attributes: {
|
|
57
|
+
rel: string;
|
|
58
|
+
type?: string;
|
|
59
|
+
href: string;
|
|
60
|
+
}, depth?: number): string;
|
|
61
|
+
/** An Atom `<author>`, or nothing when nobody is named. */
|
|
62
|
+
export declare function author(name: string | undefined, depth: number): string[];
|
|
63
|
+
//# sourceMappingURL=feed-xml.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feed-xml.d.ts","sourceRoot":"","sources":["../../src/web/feed-xml.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,kCAAkC,CAAC;AAEhE,sEAAsE;AACtE,eAAO,MAAM,YAAY,qCAAqC,CAAC;AAE/D;;;;GAIG;AACH,eAAO,MAAM,aAAa,yCAAyC,CAAC;AAEpE;;;GAGG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAEzC;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAwB/C;AAED;;;;;;;;;GASG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAM3C;AAWD,yCAAyC;AACzC,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,MAAM,CAErE;AAED,0DAA0D;AAC1D,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,SAAI,GAAG,MAAM,EAAE,CAE3F;AAED,iFAAiF;AACjF,wBAAgB,IAAI,CAAC,UAAU,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,KAAK,SAAI,GAAG,MAAM,CAKhG;AAED,2DAA2D;AAC3D,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAIxE"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The XML a feed is written with: escaping, CDATA, indented elements, links
|
|
3
|
+
* and authors, and the namespaces the vocabularies live in.
|
|
4
|
+
*
|
|
5
|
+
* Nothing here knows what a feed is. It is the plumbing the RSS and Atom
|
|
6
|
+
* serialisers share, kept apart from them so that a question about escaping is
|
|
7
|
+
* answered in one file rather than three, and so the serialisers read as the
|
|
8
|
+
* shape of a document rather than as string handling.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Dave Winer's `source` namespace, which RSS 2.0 feeds here declare so an item
|
|
12
|
+
* can carry the Markdown it was written from. TASK-38's `source:cloud` is the
|
|
13
|
+
* same namespace.
|
|
14
|
+
*/
|
|
15
|
+
export const SOURCE_NAMESPACE = 'https://source.scripting.com/';
|
|
16
|
+
/** Dublin Core, which is where an RSS item's `creator` comes from. */
|
|
17
|
+
export const DC_NAMESPACE = 'http://purl.org/dc/elements/1.1/';
|
|
18
|
+
/**
|
|
19
|
+
* The Well-Formed Web comment API, whose `commentRss` is how an RSS reader is
|
|
20
|
+
* told where one item's comments are. WordPress puts it on every item, so a
|
|
21
|
+
* reader that already understands a WordPress feed understands this one.
|
|
22
|
+
*/
|
|
23
|
+
export const WFW_NAMESPACE = 'http://wellformedweb.org/CommentAPI/';
|
|
24
|
+
/**
|
|
25
|
+
* A date as RFC 822, which is what RSS 2.0's `pubDate` and `lastBuildDate`
|
|
26
|
+
* are. `toUTCString` writes exactly that spelling, `GMT` zone included.
|
|
27
|
+
*/
|
|
28
|
+
export function rfc822(date) {
|
|
29
|
+
return date.toUTCString();
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* XML character data, escaped.
|
|
33
|
+
*
|
|
34
|
+
* `<` and `&` have to go; `>` follows them because `]]>` in text is not
|
|
35
|
+
* allowed and spotting it is not worth the trouble. Quotes are escaped too so
|
|
36
|
+
* one function serves attribute values as well as text. Characters XML 1.0
|
|
37
|
+
* cannot represent at all — the C0 controls other than tab, newline and
|
|
38
|
+
* carriage return — are dropped rather than escaped, because there is no
|
|
39
|
+
* spelling of them that would parse.
|
|
40
|
+
*/
|
|
41
|
+
export function escapeXml(value) {
|
|
42
|
+
let out = '';
|
|
43
|
+
for (const character of value) {
|
|
44
|
+
switch (character) {
|
|
45
|
+
case '&':
|
|
46
|
+
out += '&';
|
|
47
|
+
break;
|
|
48
|
+
case '<':
|
|
49
|
+
out += '<';
|
|
50
|
+
break;
|
|
51
|
+
case '>':
|
|
52
|
+
out += '>';
|
|
53
|
+
break;
|
|
54
|
+
case '"':
|
|
55
|
+
out += '"';
|
|
56
|
+
break;
|
|
57
|
+
case "'":
|
|
58
|
+
out += ''';
|
|
59
|
+
break;
|
|
60
|
+
default:
|
|
61
|
+
if (isValidXmlChar(character))
|
|
62
|
+
out += character;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return out;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Character data as a CDATA section, which is how a feed carries markup a
|
|
69
|
+
* reader is meant to render rather than display.
|
|
70
|
+
*
|
|
71
|
+
* The only sequence a section may not contain is its own terminator, so a
|
|
72
|
+
* `]]>` in the text is split across two sections; the parser rejoins them and
|
|
73
|
+
* the reader sees the original bytes. Characters XML 1.0 cannot represent are
|
|
74
|
+
* dropped, exactly as {@link escapeXml} drops them, because CDATA suspends
|
|
75
|
+
* escaping and not the character set.
|
|
76
|
+
*/
|
|
77
|
+
export function cdata(value) {
|
|
78
|
+
let text = '';
|
|
79
|
+
for (const character of value) {
|
|
80
|
+
if (isValidXmlChar(character))
|
|
81
|
+
text += character;
|
|
82
|
+
}
|
|
83
|
+
return `<![CDATA[${text.replaceAll(']]>', ']]]]><![CDATA[>')}]]>`;
|
|
84
|
+
}
|
|
85
|
+
/** Whether a character is one XML 1.0 allows in a document at all. */
|
|
86
|
+
function isValidXmlChar(character) {
|
|
87
|
+
const code = character.codePointAt(0) ?? 0;
|
|
88
|
+
if (code === 0x9 || code === 0xa || code === 0xd)
|
|
89
|
+
return true;
|
|
90
|
+
if (code >= 0x20 && code <= 0xd7ff)
|
|
91
|
+
return true;
|
|
92
|
+
if (code >= 0xe000 && code <= 0xfffd)
|
|
93
|
+
return true;
|
|
94
|
+
return code >= 0x10000 && code <= 0x10ffff;
|
|
95
|
+
}
|
|
96
|
+
/** An element holding text, indented. */
|
|
97
|
+
export function element(name, text, depth = 1) {
|
|
98
|
+
return `${' '.repeat(depth)}<${name}>${escapeXml(text)}</${name}>`;
|
|
99
|
+
}
|
|
100
|
+
/** The same, or nothing at all when there is no value. */
|
|
101
|
+
export function optionalElement(name, text, depth = 1) {
|
|
102
|
+
return text === undefined ? [] : [element(name, text, depth)];
|
|
103
|
+
}
|
|
104
|
+
/** An Atom `<link>`. The `type` is left off when there is nothing to declare. */
|
|
105
|
+
export function link(attributes, depth = 1) {
|
|
106
|
+
const type = attributes.type === undefined ? '' : ` type="${escapeXml(attributes.type)}"`;
|
|
107
|
+
return `${' '.repeat(depth)}<link rel="${escapeXml(attributes.rel)}"${type} href="${escapeXml(attributes.href)}"/>`;
|
|
108
|
+
}
|
|
109
|
+
/** An Atom `<author>`, or nothing when nobody is named. */
|
|
110
|
+
export function author(name, depth) {
|
|
111
|
+
if (name === undefined)
|
|
112
|
+
return [];
|
|
113
|
+
const indent = ' '.repeat(depth);
|
|
114
|
+
return [`${indent}<author>`, element('name', name, depth + 1), `${indent}</author>`];
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=feed-xml.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feed-xml.js","sourceRoot":"","sources":["../../src/web/feed-xml.ts"],"names":[],"mappings":"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"}
|
package/dist/web/feeds.d.ts
CHANGED
|
@@ -1,95 +1,25 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { SiteData } from './context.ts';
|
|
1
|
+
import type { CommentFeedSource, FeedFormat, FeedIdentity, FeedSource } from './feed-source.ts';
|
|
3
2
|
import type { ConditionalHeaders } from './negotiate.ts';
|
|
4
3
|
/**
|
|
5
|
-
*
|
|
4
|
+
* How a feed is served: its validator, its headers, and which serialiser
|
|
5
|
+
* writes its body.
|
|
6
6
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
7
|
+
* The feed itself is spread over four modules below this one — what a feed is
|
|
8
|
+
* (`feed-source.ts`), the item every format renders (`feed-item.ts`), the
|
|
9
|
+
* three serialisers (`feed-rss.ts`, `feed-atom.ts`, `feed-json.ts`) and the
|
|
10
|
+
* XML plumbing they share (`feed-xml.ts`). This file re-exports all of it, so
|
|
11
|
+
* everything that used to import from `./feeds.ts` still can and there is one
|
|
12
|
+
* name for the whole subject.
|
|
10
13
|
*/
|
|
11
|
-
export
|
|
12
|
-
|
|
13
|
-
export
|
|
14
|
-
|
|
15
|
-
export
|
|
16
|
-
|
|
17
|
-
export
|
|
18
|
-
|
|
19
|
-
export
|
|
20
|
-
/** What the feeds name themselves as. */
|
|
21
|
-
export declare const FEED_GENERATOR = "Geekity";
|
|
22
|
-
/** Where a reader can go to find out what wrote the feed. */
|
|
23
|
-
export declare const FEED_GENERATOR_URI = "https://www.npmjs.com/package/@geekity/cms";
|
|
24
|
-
/**
|
|
25
|
-
* How many entries a feed carries.
|
|
26
|
-
*
|
|
27
|
-
* `feedSize` in `content/_data/site.json` wins; without it a feed is longer
|
|
28
|
-
* than an archive page, because a reader that polls once a day should not miss
|
|
29
|
-
* a post on a site that publishes several.
|
|
30
|
-
*/
|
|
31
|
-
export declare function feedSize(site: SiteData): number;
|
|
32
|
-
/** Everything one feed is built from, whichever format it ends up in. */
|
|
33
|
-
export interface FeedSource {
|
|
34
|
-
/** Site-wide data, for the title, subtitle and author. */
|
|
35
|
-
site: SiteData;
|
|
36
|
-
/** The entries, newest first. Already filtered to what the public may see. */
|
|
37
|
-
documents: readonly Document[];
|
|
38
|
-
/** Title of this feed. The site title, or the site title and the tag. */
|
|
39
|
-
title: string;
|
|
40
|
-
/** Path of the HTML page this feed syndicates: `/` or `/tags/{tag}/`. */
|
|
41
|
-
href: string;
|
|
42
|
-
/** Path of the feed itself, for the self link. */
|
|
43
|
-
feedHref: string;
|
|
44
|
-
/** The site's public origin, for absolute ids and links. */
|
|
45
|
-
baseUrl: string;
|
|
46
|
-
}
|
|
47
|
-
/** One feed as an Atom 1.0 document. */
|
|
48
|
-
export declare function atomFeed(source: FeedSource): string;
|
|
49
|
-
/** A JSON Feed 1.1 document. */
|
|
50
|
-
export interface JsonFeed {
|
|
51
|
-
/** {@link JSON_FEED_VERSION}. */
|
|
52
|
-
version: string;
|
|
53
|
-
/** The feed's name. */
|
|
54
|
-
title: string;
|
|
55
|
-
/** The HTML page this feed syndicates. */
|
|
56
|
-
home_page_url: string;
|
|
57
|
-
/** Where this feed itself lives. */
|
|
58
|
-
feed_url: string;
|
|
59
|
-
/** The site's tagline, when it has one. */
|
|
60
|
-
description?: string;
|
|
61
|
-
/** Site-level authors, when the site names one. */
|
|
62
|
-
authors?: JsonFeedAuthor[];
|
|
63
|
-
/** The entries, newest first. */
|
|
64
|
-
items: JsonFeedItem[];
|
|
65
|
-
}
|
|
66
|
-
/** An author, as JSON Feed 1.1 models one. */
|
|
67
|
-
export interface JsonFeedAuthor {
|
|
68
|
-
name: string;
|
|
69
|
-
}
|
|
70
|
-
/** One entry of a {@link JsonFeed}. */
|
|
71
|
-
export interface JsonFeedItem {
|
|
72
|
-
/** Permanent identifier: the document's absolute URL. */
|
|
73
|
-
id: string;
|
|
74
|
-
/** Where the entry can be read. */
|
|
75
|
-
url: string;
|
|
76
|
-
/** Display title. */
|
|
77
|
-
title: string;
|
|
78
|
-
/** The rendered body. */
|
|
79
|
-
content_html: string;
|
|
80
|
-
/** The document's description, when it has one. */
|
|
81
|
-
summary?: string;
|
|
82
|
-
/** Publish date, RFC 3339. */
|
|
83
|
-
date_published?: string;
|
|
84
|
-
/** Last modification date, RFC 3339. */
|
|
85
|
-
date_modified?: string;
|
|
86
|
-
/** The document's tags, in file order. */
|
|
87
|
-
tags?: string[];
|
|
88
|
-
/** The document's own author, when it names one. */
|
|
89
|
-
authors?: JsonFeedAuthor[];
|
|
90
|
-
}
|
|
91
|
-
/** One feed as a JSON Feed 1.1 document. */
|
|
92
|
-
export declare function jsonFeed(source: FeedSource): JsonFeed;
|
|
14
|
+
export { COMMENTS_ROOT, COMMENTS_TITLE_PREFIX, commentsFeedPath, contentTypeOf, DEFAULT_FEED_LANGUAGE, DEFAULT_FEED_SIZE, DEFAULT_NOTIFY_SERVER, EMPTY_FEED_UPDATED, FEED_ALIASES, FEED_CONTENT_TYPES, FEED_FORMATS, FEED_GENERATOR, FEED_GENERATOR_URI, FEED_SEGMENT, FEED_SEGMENTS, feedLanguage, feedPathUnder, feedSize, NOTIFY_CLOUD_PORT, NOTIFY_CLOUD_PROTOCOL, NOTIFY_PATHS, notifyEndpoints, notifyServerOf, splitFeedPath, } from './feed-source.ts';
|
|
15
|
+
export type { CommentFeedSource, FeedComment, FeedFormat, FeedIdentity, FeedPath, FeedSource, NotifyServer, } from './feed-source.ts';
|
|
16
|
+
export { EXCERPT_WORDS, excerptFromHtml, FEED_ITEM_REVISION, feedExcerpt, feedItem, feedItems, } from './feed-item.ts';
|
|
17
|
+
export type { FeedItem, FeedItemComments, FeedItemContext } from './feed-item.ts';
|
|
18
|
+
export { cdata, DC_NAMESPACE, escapeXml, rfc822, SOURCE_NAMESPACE, WFW_NAMESPACE, } from './feed-xml.ts';
|
|
19
|
+
export { commentsRssFeed, rssFeed, rssItem } from './feed-rss.ts';
|
|
20
|
+
export { atomEntry, atomFeed } from './feed-atom.ts';
|
|
21
|
+
export { JSON_FEED_HUB_TYPE, JSON_FEED_VERSION, jsonFeed, jsonFeedItem } from './feed-json.ts';
|
|
22
|
+
export type { JsonFeed, JsonFeedAuthor, JsonFeedHub, JsonFeedItem } from './feed-json.ts';
|
|
93
23
|
/** Everything one feed response needs. */
|
|
94
24
|
export interface FeedResponseOptions {
|
|
95
25
|
/** Which format the body is. */
|
|
@@ -109,14 +39,19 @@ export interface FeedResponseOptions {
|
|
|
109
39
|
*/
|
|
110
40
|
export declare function feedResponse(options: FeedResponseOptions): Response;
|
|
111
41
|
/**
|
|
112
|
-
*
|
|
42
|
+
* One comments feed as an HTTP response.
|
|
43
|
+
*
|
|
44
|
+
* Comments arrive from other people's servers rather than from the site's own
|
|
45
|
+
* files, so the validator is built from the comments themselves; a feed with
|
|
46
|
+
* none still has one, which is what makes an empty comments feed cheap to poll.
|
|
47
|
+
*/
|
|
48
|
+
export declare function commentsFeedResponse(source: CommentFeedSource, conditional?: ConditionalHeaders): Response;
|
|
49
|
+
/**
|
|
50
|
+
* WebSub's discovery header: the hub and the feed's own URL, in that order.
|
|
113
51
|
*
|
|
114
|
-
*
|
|
115
|
-
*
|
|
116
|
-
*
|
|
117
|
-
* cannot represent at all — the C0 controls other than tab, newline and
|
|
118
|
-
* carriage return — are dropped rather than escaped, because there is no
|
|
119
|
-
* spelling of them that would parse.
|
|
52
|
+
* A subscriber is meant to find both without parsing the body, which is the
|
|
53
|
+
* only way a JSON Feed or a 304 could tell it anything at all. `undefined`
|
|
54
|
+
* when the site names no notify server.
|
|
120
55
|
*/
|
|
121
|
-
export declare function
|
|
56
|
+
export declare function feedLinkHeader(source: FeedIdentity): string | undefined;
|
|
122
57
|
//# sourceMappingURL=feeds.d.ts.map
|
package/dist/web/feeds.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feeds.d.ts","sourceRoot":"","sources":["../../src/web/feeds.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"feeds.d.ts","sourceRoot":"","sources":["../../src/web/feeds.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEhG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEzD;;;;;;;;;;GAUG;AAEH,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,gBAAgB,EAChB,aAAa,EACb,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,iBAAiB,EACjB,qBAAqB,EACrB,YAAY,EACZ,eAAe,EACf,cAAc,EACd,aAAa,GACd,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,iBAAiB,EACjB,WAAW,EACX,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,YAAY,GACb,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,WAAW,EACX,QAAQ,EACR,SAAS,GACV,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,QAAQ,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAElF,OAAO,EACL,KAAK,EACL,YAAY,EACZ,SAAS,EACT,MAAM,EACN,gBAAgB,EAChB,aAAa,GACd,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC/F,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE1F,0CAA0C;AAC1C,MAAM,WAAW,mBAAmB;IAClC,gCAAgC;IAChC,MAAM,EAAE,UAAU,CAAC;IACnB,yEAAyE;IACzE,MAAM,EAAE,UAAU,CAAC;IACnB,sDAAsD;IACtD,WAAW,CAAC,EAAE,kBAAkB,GAAG,SAAS,CAAC;CAC9C;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,QAAQ,CAsBnE;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,iBAAiB,EACzB,WAAW,CAAC,EAAE,kBAAkB,GAC/B,QAAQ,CAWV;AAoBD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,GAAG,SAAS,CAMvE"}
|