@geekity/cms 0.40.0 → 0.42.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.
Files changed (345) hide show
  1. package/admin/components/blocks.njk +15 -1
  2. package/admin/pages/appearance/look.njk +135 -0
  3. package/admin/pages/dashboard/home.njk +9 -3
  4. package/admin/pages/documents/conflict.njk +35 -10
  5. package/admin/pages/documents/editor.njk +29 -0
  6. package/admin/pages/documents/list.njk +44 -1
  7. package/admin/pages/settings/general.njk +4 -0
  8. package/admin/pages/settings/reading.njk +14 -0
  9. package/admin/pages/users/edit.njk +1 -1
  10. package/admin/pages/users/writing-goals.njk +64 -0
  11. package/admin/src/admin.css +32 -0
  12. package/admin/static/admin.css +202 -4
  13. package/admin/static/dashboard.js +51 -23
  14. package/admin/static/editor.js +22 -19
  15. package/dist/access-log.d.ts +3 -0
  16. package/dist/access-log.d.ts.map +1 -1
  17. package/dist/access-log.js +13 -9
  18. package/dist/access-log.js.map +1 -1
  19. package/dist/admin/autosave-client.d.ts +85 -0
  20. package/dist/admin/autosave-client.d.ts.map +1 -0
  21. package/dist/admin/autosave-client.js +218 -0
  22. package/dist/admin/autosave-client.js.map +1 -0
  23. package/dist/admin/autosave.d.ts +12 -0
  24. package/dist/admin/autosave.d.ts.map +1 -0
  25. package/dist/admin/autosave.js +92 -0
  26. package/dist/admin/autosave.js.map +1 -0
  27. package/dist/admin/blocks.d.ts +13 -1
  28. package/dist/admin/blocks.d.ts.map +1 -1
  29. package/dist/admin/blocks.js +40 -5
  30. package/dist/admin/blocks.js.map +1 -1
  31. package/dist/admin/core-widgets.d.ts.map +1 -1
  32. package/dist/admin/core-widgets.js +2 -0
  33. package/dist/admin/core-widgets.js.map +1 -1
  34. package/dist/admin/dashboard.d.ts +2 -2
  35. package/dist/admin/dashboard.d.ts.map +1 -1
  36. package/dist/admin/dashboard.js +23 -15
  37. package/dist/admin/dashboard.js.map +1 -1
  38. package/dist/admin/documents.d.ts.map +1 -1
  39. package/dist/admin/documents.js +223 -16
  40. package/dist/admin/documents.js.map +1 -1
  41. package/dist/admin/editor-word-counter.d.ts +8 -0
  42. package/dist/admin/editor-word-counter.d.ts.map +1 -0
  43. package/dist/admin/editor-word-counter.js +27 -0
  44. package/dist/admin/editor-word-counter.js.map +1 -0
  45. package/dist/admin/editor-words.d.ts +7 -0
  46. package/dist/admin/editor-words.d.ts.map +1 -0
  47. package/dist/admin/editor-words.js +9 -0
  48. package/dist/admin/editor-words.js.map +1 -0
  49. package/dist/admin/flash.d.ts +2 -0
  50. package/dist/admin/flash.d.ts.map +1 -1
  51. package/dist/admin/flash.js +12 -0
  52. package/dist/admin/flash.js.map +1 -1
  53. package/dist/admin/focus-mode.d.ts +37 -0
  54. package/dist/admin/focus-mode.d.ts.map +1 -0
  55. package/dist/admin/focus-mode.js +71 -0
  56. package/dist/admin/focus-mode.js.map +1 -0
  57. package/dist/admin/look.d.ts +12 -0
  58. package/dist/admin/look.d.ts.map +1 -0
  59. package/dist/admin/look.js +179 -0
  60. package/dist/admin/look.js.map +1 -0
  61. package/dist/admin/menu.d.ts.map +1 -1
  62. package/dist/admin/menu.js +7 -3
  63. package/dist/admin/menu.js.map +1 -1
  64. package/dist/admin/preview.d.ts.map +1 -1
  65. package/dist/admin/preview.js +1 -0
  66. package/dist/admin/preview.js.map +1 -1
  67. package/dist/admin/routes.d.ts.map +1 -1
  68. package/dist/admin/routes.js +8 -4
  69. package/dist/admin/routes.js.map +1 -1
  70. package/dist/admin/settings-fields.d.ts +1 -1
  71. package/dist/admin/settings-fields.d.ts.map +1 -1
  72. package/dist/admin/settings-fields.js +2 -0
  73. package/dist/admin/settings-fields.js.map +1 -1
  74. package/dist/admin/settings-general.d.ts.map +1 -1
  75. package/dist/admin/settings-general.js +1 -0
  76. package/dist/admin/settings-general.js.map +1 -1
  77. package/dist/admin/settings-reading.d.ts.map +1 -1
  78. package/dist/admin/settings-reading.js +7 -1
  79. package/dist/admin/settings-reading.js.map +1 -1
  80. package/dist/admin/templates.d.ts +2 -0
  81. package/dist/admin/templates.d.ts.map +1 -1
  82. package/dist/admin/templates.js +2 -0
  83. package/dist/admin/templates.js.map +1 -1
  84. package/dist/admin/users.d.ts.map +1 -1
  85. package/dist/admin/users.js +4 -0
  86. package/dist/admin/users.js.map +1 -1
  87. package/dist/admin/widget-writing.d.ts +3 -0
  88. package/dist/admin/widget-writing.d.ts.map +1 -0
  89. package/dist/admin/widget-writing.js +102 -0
  90. package/dist/admin/widget-writing.js.map +1 -0
  91. package/dist/admin/widgets.d.ts +4 -1
  92. package/dist/admin/widgets.d.ts.map +1 -1
  93. package/dist/admin/widgets.js +19 -8
  94. package/dist/admin/widgets.js.map +1 -1
  95. package/dist/admin/writing-goals.d.ts +33 -0
  96. package/dist/admin/writing-goals.d.ts.map +1 -0
  97. package/dist/admin/writing-goals.js +149 -0
  98. package/dist/admin/writing-goals.js.map +1 -0
  99. package/dist/autosave/index.d.ts +5 -0
  100. package/dist/autosave/index.d.ts.map +1 -0
  101. package/dist/autosave/index.js +3 -0
  102. package/dist/autosave/index.js.map +1 -0
  103. package/dist/autosave/key.d.ts +13 -0
  104. package/dist/autosave/key.d.ts.map +1 -0
  105. package/dist/autosave/key.js +29 -0
  106. package/dist/autosave/key.js.map +1 -0
  107. package/dist/autosave/store.d.ts +23 -0
  108. package/dist/autosave/store.d.ts.map +1 -0
  109. package/dist/autosave/store.js +114 -0
  110. package/dist/autosave/store.js.map +1 -0
  111. package/dist/cli.d.ts +1 -1
  112. package/dist/cli.d.ts.map +1 -1
  113. package/dist/cli.js +65 -4
  114. package/dist/cli.js.map +1 -1
  115. package/dist/cms/app.d.ts.map +1 -1
  116. package/dist/cms/app.js +1 -0
  117. package/dist/cms/app.js.map +1 -1
  118. package/dist/cms/boot.d.ts.map +1 -1
  119. package/dist/cms/boot.js +2 -0
  120. package/dist/cms/boot.js.map +1 -1
  121. package/dist/cms/create.d.ts +11 -2
  122. package/dist/cms/create.d.ts.map +1 -1
  123. package/dist/cms/create.js +61 -2
  124. package/dist/cms/create.js.map +1 -1
  125. package/dist/cms/server-error.d.ts.map +1 -1
  126. package/dist/cms/server-error.js +1 -0
  127. package/dist/cms/server-error.js.map +1 -1
  128. package/dist/cms/services.d.ts +2 -0
  129. package/dist/cms/services.d.ts.map +1 -1
  130. package/dist/cms/services.js +14 -0
  131. package/dist/cms/services.js.map +1 -1
  132. package/dist/config.d.ts +20 -0
  133. package/dist/config.d.ts.map +1 -1
  134. package/dist/config.js +6 -2
  135. package/dist/config.js.map +1 -1
  136. package/dist/content/post-type.d.ts +1 -0
  137. package/dist/content/post-type.d.ts.map +1 -1
  138. package/dist/content/post-type.js +1 -1
  139. package/dist/content/post-type.js.map +1 -1
  140. package/dist/content/words.d.ts +3 -0
  141. package/dist/content/words.d.ts.map +1 -0
  142. package/dist/content/words.js +120 -0
  143. package/dist/content/words.js.map +1 -0
  144. package/dist/content/write.d.ts +8 -0
  145. package/dist/content/write.d.ts.map +1 -1
  146. package/dist/content/write.js +1 -1
  147. package/dist/content/write.js.map +1 -1
  148. package/dist/files/data-files.d.ts +5 -0
  149. package/dist/files/data-files.d.ts.map +1 -1
  150. package/dist/files/data-files.js +30 -0
  151. package/dist/files/data-files.js.map +1 -1
  152. package/dist/fonts/css.d.ts +25 -0
  153. package/dist/fonts/css.d.ts.map +1 -0
  154. package/dist/fonts/css.js +88 -0
  155. package/dist/fonts/css.js.map +1 -0
  156. package/dist/fonts/family.d.ts +23 -0
  157. package/dist/fonts/family.d.ts.map +1 -0
  158. package/dist/fonts/family.js +41 -0
  159. package/dist/fonts/family.js.map +1 -0
  160. package/dist/fonts/index.d.ts +10 -0
  161. package/dist/fonts/index.d.ts.map +1 -0
  162. package/dist/fonts/index.js +6 -0
  163. package/dist/fonts/index.js.map +1 -0
  164. package/dist/fonts/job.d.ts +20 -0
  165. package/dist/fonts/job.d.ts.map +1 -0
  166. package/dist/fonts/job.js +49 -0
  167. package/dist/fonts/job.js.map +1 -0
  168. package/dist/fonts/roles.d.ts +53 -0
  169. package/dist/fonts/roles.d.ts.map +1 -0
  170. package/dist/fonts/roles.js +64 -0
  171. package/dist/fonts/roles.js.map +1 -0
  172. package/dist/fonts/store.d.ts +69 -0
  173. package/dist/fonts/store.d.ts.map +1 -0
  174. package/dist/fonts/store.js +237 -0
  175. package/dist/fonts/store.js.map +1 -0
  176. package/dist/gemini/capsule.d.ts +4 -0
  177. package/dist/gemini/capsule.d.ts.map +1 -0
  178. package/dist/gemini/capsule.js +9 -0
  179. package/dist/gemini/capsule.js.map +1 -0
  180. package/dist/gemini/certificate.d.ts +34 -0
  181. package/dist/gemini/certificate.d.ts.map +1 -0
  182. package/dist/gemini/certificate.js +255 -0
  183. package/dist/gemini/certificate.js.map +1 -0
  184. package/dist/gemini/site-certificate.d.ts +8 -0
  185. package/dist/gemini/site-certificate.d.ts.map +1 -0
  186. package/dist/gemini/site-certificate.js +17 -0
  187. package/dist/gemini/site-certificate.js.map +1 -0
  188. package/dist/micropub/endpoint.d.ts.map +1 -1
  189. package/dist/micropub/endpoint.js +12 -0
  190. package/dist/micropub/endpoint.js.map +1 -1
  191. package/dist/plugin.d.ts +15 -2
  192. package/dist/plugin.d.ts.map +1 -1
  193. package/dist/plugin.js.map +1 -1
  194. package/dist/settings/registry.d.ts.map +1 -1
  195. package/dist/settings/registry.js +5 -1
  196. package/dist/settings/registry.js.map +1 -1
  197. package/dist/settings/types.d.ts +1 -1
  198. package/dist/settings/types.d.ts.map +1 -1
  199. package/dist/site/dashboard-layout.d.ts +33 -26
  200. package/dist/site/dashboard-layout.d.ts.map +1 -1
  201. package/dist/site/dashboard-layout.js +94 -39
  202. package/dist/site/dashboard-layout.js.map +1 -1
  203. package/dist/site/namespace.d.ts +6 -0
  204. package/dist/site/namespace.d.ts.map +1 -1
  205. package/dist/site/namespace.js +46 -1
  206. package/dist/site/namespace.js.map +1 -1
  207. package/dist/site/users.d.ts +7 -0
  208. package/dist/site/users.d.ts.map +1 -1
  209. package/dist/site/users.js +7 -0
  210. package/dist/site/users.js.map +1 -1
  211. package/dist/site/writing-goals.d.ts +22 -0
  212. package/dist/site/writing-goals.d.ts.map +1 -0
  213. package/dist/site/writing-goals.js +42 -0
  214. package/dist/site/writing-goals.js.map +1 -0
  215. package/dist/store/schema.d.ts.map +1 -1
  216. package/dist/store/schema.js +4 -0
  217. package/dist/store/schema.js.map +1 -1
  218. package/dist/store/sessions.d.ts +2 -1
  219. package/dist/store/sessions.d.ts.map +1 -1
  220. package/dist/store/sessions.js +30 -12
  221. package/dist/store/sessions.js.map +1 -1
  222. package/dist/theme/font-family.d.ts +13 -0
  223. package/dist/theme/font-family.d.ts.map +1 -0
  224. package/dist/theme/font-family.js +21 -0
  225. package/dist/theme/font-family.js.map +1 -0
  226. package/dist/theme/scheme-tokens.d.ts +50 -0
  227. package/dist/theme/scheme-tokens.d.ts.map +1 -0
  228. package/dist/theme/scheme-tokens.js +240 -0
  229. package/dist/theme/scheme-tokens.js.map +1 -0
  230. package/dist/theme/site-data.d.ts +12 -0
  231. package/dist/theme/site-data.d.ts.map +1 -1
  232. package/dist/theme/site-data.js +15 -0
  233. package/dist/theme/site-data.js.map +1 -1
  234. package/dist/theme/themes.d.ts +74 -0
  235. package/dist/theme/themes.d.ts.map +1 -1
  236. package/dist/theme/themes.js +100 -9
  237. package/dist/theme/themes.js.map +1 -1
  238. package/dist/util/public-address.d.ts +1 -0
  239. package/dist/util/public-address.d.ts.map +1 -1
  240. package/dist/util/public-address.js +38 -30
  241. package/dist/util/public-address.js.map +1 -1
  242. package/dist/web/access-line.d.ts +2 -0
  243. package/dist/web/access-line.d.ts.map +1 -0
  244. package/dist/web/access-line.js +6 -0
  245. package/dist/web/access-line.js.map +1 -0
  246. package/dist/web/document-page.d.ts.map +1 -1
  247. package/dist/web/document-page.js +3 -4
  248. package/dist/web/document-page.js.map +1 -1
  249. package/dist/web/embed.d.ts.map +1 -1
  250. package/dist/web/embed.js +2 -1
  251. package/dist/web/embed.js.map +1 -1
  252. package/dist/web/env.d.ts +2 -0
  253. package/dist/web/env.d.ts.map +1 -1
  254. package/dist/web/feed-routes.d.ts.map +1 -1
  255. package/dist/web/feed-routes.js +4 -4
  256. package/dist/web/feed-routes.js.map +1 -1
  257. package/dist/web/feed-source.d.ts +1 -1
  258. package/dist/web/feed-source.d.ts.map +1 -1
  259. package/dist/web/feed-source.js +1 -1
  260. package/dist/web/feed-source.js.map +1 -1
  261. package/dist/web/font-routes.d.ts +13 -0
  262. package/dist/web/font-routes.d.ts.map +1 -0
  263. package/dist/web/font-routes.js +27 -0
  264. package/dist/web/font-routes.js.map +1 -0
  265. package/dist/web/gemini-listener.d.ts +30 -0
  266. package/dist/web/gemini-listener.d.ts.map +1 -0
  267. package/dist/web/gemini-listener.js +186 -0
  268. package/dist/web/gemini-listener.js.map +1 -0
  269. package/dist/web/gemini-request.d.ts +23 -0
  270. package/dist/web/gemini-request.d.ts.map +1 -0
  271. package/dist/web/gemini-request.js +127 -0
  272. package/dist/web/gemini-request.js.map +1 -0
  273. package/dist/web/listing-pages.d.ts.map +1 -1
  274. package/dist/web/listing-pages.js +7 -5
  275. package/dist/web/listing-pages.js.map +1 -1
  276. package/dist/web/llms.d.ts +1 -0
  277. package/dist/web/llms.d.ts.map +1 -1
  278. package/dist/web/llms.js +3 -0
  279. package/dist/web/llms.js.map +1 -1
  280. package/dist/web/maintenance.d.ts.map +1 -1
  281. package/dist/web/maintenance.js +6 -2
  282. package/dist/web/maintenance.js.map +1 -1
  283. package/dist/web/manifest.d.ts +8 -5
  284. package/dist/web/manifest.d.ts.map +1 -1
  285. package/dist/web/manifest.js +10 -7
  286. package/dist/web/manifest.js.map +1 -1
  287. package/dist/web/markdown-representation.d.ts +11 -20
  288. package/dist/web/markdown-representation.d.ts.map +1 -1
  289. package/dist/web/markdown-representation.js +57 -58
  290. package/dist/web/markdown-representation.js.map +1 -1
  291. package/dist/web/negotiate.d.ts +4 -16
  292. package/dist/web/negotiate.d.ts.map +1 -1
  293. package/dist/web/negotiate.js +23 -18
  294. package/dist/web/negotiate.js.map +1 -1
  295. package/dist/web/oembed.d.ts +17 -3
  296. package/dist/web/oembed.d.ts.map +1 -1
  297. package/dist/web/oembed.js +68 -26
  298. package/dist/web/oembed.js.map +1 -1
  299. package/dist/web/proxy-protocol.d.ts +13 -0
  300. package/dist/web/proxy-protocol.d.ts.map +1 -0
  301. package/dist/web/proxy-protocol.js +79 -0
  302. package/dist/web/proxy-protocol.js.map +1 -0
  303. package/dist/web/render.d.ts +52 -22
  304. package/dist/web/render.d.ts.map +1 -1
  305. package/dist/web/render.js +94 -30
  306. package/dist/web/render.js.map +1 -1
  307. package/dist/web/routes.d.ts.map +1 -1
  308. package/dist/web/routes.js +7 -8
  309. package/dist/web/routes.js.map +1 -1
  310. package/dist/web/site-index.d.ts.map +1 -1
  311. package/dist/web/site-index.js +6 -2
  312. package/dist/web/site-index.js.map +1 -1
  313. package/dist/web/status-pages.d.ts +2 -3
  314. package/dist/web/status-pages.d.ts.map +1 -1
  315. package/dist/web/status-pages.js +14 -11
  316. package/dist/web/status-pages.js.map +1 -1
  317. package/dist/web/throttle.d.ts +9 -0
  318. package/dist/web/throttle.d.ts.map +1 -1
  319. package/dist/web/throttle.js +17 -0
  320. package/dist/web/throttle.js.map +1 -1
  321. package/dist/webmention/fetch-public.d.ts +6 -0
  322. package/dist/webmention/fetch-public.d.ts.map +1 -1
  323. package/dist/webmention/fetch-public.js +6 -1
  324. package/dist/webmention/fetch-public.js.map +1 -1
  325. package/dist/writing/ledger.d.ts +15 -0
  326. package/dist/writing/ledger.d.ts.map +1 -0
  327. package/dist/writing/ledger.js +70 -0
  328. package/dist/writing/ledger.js.map +1 -0
  329. package/dist/writing/progress.d.ts +25 -0
  330. package/dist/writing/progress.d.ts.map +1 -0
  331. package/dist/writing/progress.js +83 -0
  332. package/dist/writing/progress.js.map +1 -0
  333. package/package.json +2 -1
  334. package/themes/default/layouts/404.gmi.njk +10 -0
  335. package/themes/default/layouts/410.gmi.njk +8 -0
  336. package/themes/default/layouts/500.gmi.njk +9 -0
  337. package/themes/default/layouts/503.gmi.njk +9 -0
  338. package/themes/default/layouts/base.njk +31 -16
  339. package/themes/default/layouts/page.njk +4 -8
  340. package/themes/default/partials/bio.njk +1 -1
  341. package/themes/default/partials/contact-form.njk +1 -1
  342. package/themes/default/partials/markdown-footer.md.njk +9 -1
  343. package/themes/default/src/style.css +326 -15
  344. package/themes/default/static/style.css +489 -3
  345. package/themes/default/theme.json +23 -1
@@ -121,17 +121,26 @@ export function oEmbedResponse(embed, format, conditional) {
121
121
  * session, so a reader of a framing site sees the same card a signed-in admin
122
122
  * would, and nothing about either. `noindex` because the post is the page to
123
123
  * find, not its card.
124
+ *
125
+ * With `colors`, the card is drawn in the site's scheme and mode, from the
126
+ * tokens the theme's stylesheet gives that scheme; without, under a theme
127
+ * that has no schemes, in a look of its own.
124
128
  */
125
129
  export function embedPage(subject) {
126
- return [
130
+ const { colors } = subject;
131
+ const style = colors === undefined ? EMBED_STYLE : schemeStyle(colors);
132
+ const chosen = colors === undefined
133
+ ? ''
134
+ : ` data-scheme="${escapeXml(colors.scheme.name)}" data-mode="${colors.mode}"`;
135
+ const html = [
127
136
  '<!doctype html>',
128
- `<html lang="${escapeXml(siteLocale(subject.site))}">`,
137
+ `<html lang="${escapeXml(siteLocale(subject.site))}"${chosen}>`,
129
138
  '<head>',
130
139
  '<meta charset="utf-8">',
131
140
  '<meta name="viewport" content="width=device-width, initial-scale=1">',
132
141
  '<meta name="robots" content="noindex">',
133
142
  `<title>${escapeXml(subject.label)}</title>`,
134
- `<style>${EMBED_STYLE}</style>`,
143
+ `<style>${style}</style>`,
135
144
  '</head>',
136
145
  '<body>',
137
146
  embedCard(subject),
@@ -140,6 +149,7 @@ export function embedPage(subject) {
140
149
  '</html>',
141
150
  '',
142
151
  ].join('\n');
152
+ return { html, policy: embedPolicy(style) };
143
153
  }
144
154
  /**
145
155
  * The embed page as a response, or a 304 to a client that already holds it.
@@ -150,30 +160,60 @@ export function embedPage(subject) {
150
160
  * `X-Frame-Options`, which has no way to say "anyone".
151
161
  */
152
162
  export function embedResponse(page, conditional) {
153
- const etag = contentEtag('embed', page);
163
+ const etag = contentEtag('embed', page.html);
154
164
  const headers = new Headers({
155
165
  etag,
156
166
  'cache-control': 'no-cache',
157
- 'content-security-policy': EMBED_CONTENT_SECURITY_POLICY,
167
+ 'content-security-policy': page.policy,
158
168
  });
159
169
  if (isNotModified(conditional, etag, undefined)) {
160
170
  return new Response(null, { status: 304, headers });
161
171
  }
162
172
  headers.set('content-type', 'text/html; charset=utf-8');
163
- return new Response(page, { headers });
173
+ return new Response(page.html, { headers });
164
174
  }
165
- /**
166
- * The card's look inside the frame. Inline, like the script, because the page
167
- * loads nothing: one request per embed is all a framing page should cost.
168
- */
169
- const EMBED_STYLE = [
170
- 'html{color-scheme:light}',
171
- 'body{margin:0;background:#fff;color:#1f1f1f;font:16px/1.5 system-ui,-apple-system,"Segoe UI",sans-serif}',
172
- '.geekity-embed{margin:0;padding:16px 20px;border:1px solid #d6d6d6;border-radius:8px;overflow-wrap:anywhere}',
173
- '.geekity-embed p{margin:0 0 8px}',
174
- '.geekity-embed p:last-child{margin:0;font-size:14px;color:#595959}',
175
- '.geekity-embed a{color:#0b57d0}',
176
- ].join('');
175
+ const EMBED_TOKENS = {
176
+ body: '#fff',
177
+ text: '#1f1f1f',
178
+ muted: '#595959',
179
+ primary: '#0b57d0',
180
+ edge: '#d6d6d6',
181
+ };
182
+ const CSS_SAFE_COLOUR = /^[\w#%.,() -]+$/;
183
+ function tokenDeclarations(tokens) {
184
+ return Object.entries(EMBED_TOKENS)
185
+ .map(([name, fallback]) => {
186
+ const value = tokens.get(name);
187
+ return `--${name}:${value !== undefined && CSS_SAFE_COLOUR.test(value) ? value : fallback}`;
188
+ })
189
+ .join(';');
190
+ }
191
+ function schemeStyle({ mode, tokens }) {
192
+ const first = mode === 'dark' ? tokens.dark : tokens.light;
193
+ return [
194
+ `:root{color-scheme:${mode === 'system' ? 'light dark' : mode};${tokenDeclarations(first)}}`,
195
+ mode === 'system'
196
+ ? `@media (prefers-color-scheme:dark){:root{${tokenDeclarations(tokens.dark)}}}`
197
+ : '',
198
+ cardRules({
199
+ body: 'var(--body)',
200
+ text: 'var(--text)',
201
+ muted: 'var(--muted)',
202
+ primary: 'var(--primary)',
203
+ edge: 'var(--edge)',
204
+ }),
205
+ ].join('');
206
+ }
207
+ function cardRules(color) {
208
+ return [
209
+ `body{margin:0;background:${color.body};color:${color.text};font:16px/1.5 system-ui,-apple-system,"Segoe UI",sans-serif}`,
210
+ `.geekity-embed{margin:0;padding:16px 20px;border:1px solid ${color.edge};border-radius:8px;overflow-wrap:anywhere}`,
211
+ '.geekity-embed p{margin:0 0 8px}',
212
+ `.geekity-embed p:last-child{margin:0;font-size:14px;color:${color.muted}}`,
213
+ `.geekity-embed a{color:${color.primary}}`,
214
+ ].join('');
215
+ }
216
+ const EMBED_STYLE = `html{color-scheme:light}${cardRules(EMBED_TOKENS)}`;
177
217
  /**
178
218
  * WordPress's embed protocol, the framed side (wp-includes/js/wp-embed.js is
179
219
  * the other).
@@ -203,14 +243,16 @@ const EMBED_SCRIPT = [
203
243
  function inlineHash(contents) {
204
244
  return `'sha256-${createHash('sha256').update(contents, 'utf8').digest('base64')}'`;
205
245
  }
206
- const EMBED_CONTENT_SECURITY_POLICY = [
207
- "default-src 'none'",
208
- `style-src ${inlineHash(EMBED_STYLE)}`,
209
- `script-src ${inlineHash(EMBED_SCRIPT)}`,
210
- "base-uri 'none'",
211
- "form-action 'none'",
212
- 'frame-ancestors *',
213
- ].join('; ');
246
+ function embedPolicy(style) {
247
+ return [
248
+ "default-src 'none'",
249
+ `style-src ${inlineHash(style)}`,
250
+ `script-src ${inlineHash(EMBED_SCRIPT)}`,
251
+ "base-uri 'none'",
252
+ "form-action 'none'",
253
+ 'frame-ancestors *',
254
+ ].join('; ');
255
+ }
214
256
  /**
215
257
  * The frame of the embed view, in the shape WordPress's own provider sends:
216
258
  * sandboxed, borderless, and hidden until the page inside reports its height.
@@ -1 +1 @@
1
- {"version":3,"file":"oembed.js","sourceRoot":"","sources":["../../src/web/oembed.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oembed.js","sourceRoot":"","sources":["../../src/web/oembed.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export type ProxyPreamble = {
2
+ readonly kind: 'partial';
3
+ } | {
4
+ readonly kind: 'none';
5
+ } | {
6
+ readonly kind: 'invalid';
7
+ } | {
8
+ readonly kind: 'header';
9
+ readonly length: number;
10
+ readonly address: string | undefined;
11
+ };
12
+ export declare function readProxyPreamble(received: Buffer): ProxyPreamble;
13
+ //# sourceMappingURL=proxy-protocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy-protocol.d.ts","sourceRoot":"","sources":["../../src/web/proxy-protocol.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,aAAa,GACrB;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GAC5B;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GAC5B;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAa/F,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,CAIjE"}
@@ -0,0 +1,79 @@
1
+ import net from 'node:net';
2
+ const V1_SIGNATURE = Buffer.from('PROXY ');
3
+ /** The spec's longest v1 line, CR LF included. */
4
+ const V1_MAX_BYTES = 107;
5
+ const V2_SIGNATURE = Buffer.from('0d0a0d0a000d0a515549540a', 'hex');
6
+ const V2_FIXED_BYTES = 16;
7
+ const V2_MAX_BYTES = V2_FIXED_BYTES + 2048;
8
+ const PARTIAL = { kind: 'partial' };
9
+ const NONE = { kind: 'none' };
10
+ const INVALID = { kind: 'invalid' };
11
+ export function readProxyPreamble(received) {
12
+ if (startsLike(received, V1_SIGNATURE))
13
+ return readV1(received);
14
+ if (startsLike(received, V2_SIGNATURE))
15
+ return readV2(received);
16
+ return NONE;
17
+ }
18
+ function startsLike(received, signature) {
19
+ const length = Math.min(received.length, signature.length);
20
+ return received.subarray(0, length).equals(signature.subarray(0, length));
21
+ }
22
+ function readV1(received) {
23
+ const end = received.indexOf('\r\n');
24
+ if (end < 0)
25
+ return received.length < V1_MAX_BYTES ? PARTIAL : INVALID;
26
+ if (end + 2 > V1_MAX_BYTES)
27
+ return INVALID;
28
+ const length = end + 2;
29
+ const [, protocol, source, destination, sourcePort, destinationPort, ...rest] = received
30
+ .subarray(0, end)
31
+ .toString('latin1')
32
+ .split(' ');
33
+ if (protocol === 'UNKNOWN')
34
+ return { kind: 'header', length, address: undefined };
35
+ const family = protocol === 'TCP4' ? 4 : protocol === 'TCP6' ? 6 : undefined;
36
+ if (family === undefined ||
37
+ rest.length > 0 ||
38
+ source === undefined ||
39
+ net.isIP(source) !== family ||
40
+ net.isIP(destination ?? '') !== family ||
41
+ !isPort(sourcePort) ||
42
+ !isPort(destinationPort)) {
43
+ return INVALID;
44
+ }
45
+ return { kind: 'header', length, address: source };
46
+ }
47
+ function isPort(value) {
48
+ return value !== undefined && /^\d{1,5}$/.test(value) && Number(value) <= 65_535;
49
+ }
50
+ function readV2(received) {
51
+ if (received.length < V2_FIXED_BYTES)
52
+ return PARTIAL;
53
+ const versionAndCommand = received[12] ?? 0;
54
+ const family = (received[13] ?? 0) >> 4;
55
+ const length = V2_FIXED_BYTES + received.readUInt16BE(14);
56
+ if (versionAndCommand >> 4 !== 2 || length > V2_MAX_BYTES)
57
+ return INVALID;
58
+ const command = versionAndCommand & 0x0f;
59
+ if (command > 1)
60
+ return INVALID;
61
+ const addressBytes = family === 1 ? 12 : family === 2 ? 36 : 0;
62
+ if (length < V2_FIXED_BYTES + addressBytes)
63
+ return INVALID;
64
+ if (received.length < length)
65
+ return PARTIAL;
66
+ if (command === 0 || addressBytes === 0)
67
+ return { kind: 'header', length, address: undefined };
68
+ const source = received.subarray(V2_FIXED_BYTES);
69
+ return {
70
+ kind: 'header',
71
+ length,
72
+ address: family === 1 ? [...source.subarray(0, 4)].join('.') : ipv6(source.subarray(0, 16)),
73
+ };
74
+ }
75
+ function ipv6(bytes) {
76
+ const groups = Array.from({ length: 8 }, (_, index) => bytes.readUInt16BE(index * 2).toString(16));
77
+ return new URL(`http://[${groups.join(':')}]/`).hostname.slice(1, -1);
78
+ }
79
+ //# sourceMappingURL=proxy-protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy-protocol.js","sourceRoot":"","sources":["../../src/web/proxy-protocol.ts"],"names":[],"mappings":"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"}
@@ -10,11 +10,14 @@ import type { AuthorContext } from '../site/authors.ts';
10
10
  import type { CommentFormContext, CommentViewer } from '../comments/form.ts';
11
11
  import type { ContactFormContext } from '../contact/form.ts';
12
12
  import type { CommentThread, Conversation } from '../comments/conversation.ts';
13
- import type { FrontPageSlugs, SiteData } from '../theme/site-data.ts';
13
+ import type { FrontPageSlugs, SiteColors, SiteData } from '../theme/site-data.ts';
14
14
  import type { MarkdownChrome, MarkdownUrl } from './markdown-page.ts';
15
15
  import type { Pagination } from './pagination.ts';
16
16
  import type { TaxonomyBases, TaxonomyRedirect } from '../content/taxonomy.ts';
17
- import type { ThemeColors, ThemeSource } from '../theme/themes.ts';
17
+ import type { ThemeColors, ThemeFont, ThemeSource } from '../theme/themes.ts';
18
+ import type { PageFont } from '../fonts/index.ts';
19
+ import type { TextFormat } from './negotiate.ts';
20
+ import type { SchemeTokens } from '../theme/scheme-tokens.ts';
18
21
  import type { ReplyContext } from '../webmention/reply-context.ts';
19
22
  import type { SyndicationTarget } from '../content/syndicate-to.ts';
20
23
  /** Templates the default theme ships and the public routes ask for by name. */
@@ -52,21 +55,21 @@ export declare const OPTIONAL_TEMPLATES: {
52
55
  /** The listing on the posts page. Falls back to {@link TEMPLATES.home}. */
53
56
  readonly postsPage: 'layouts/posts-page.njk';
54
57
  };
55
- /**
56
- * The two partials around a page's Markdown, found on the theme search path
57
- * like every other template.
58
- */
59
- export declare const MARKDOWN_TEMPLATES: {
60
- readonly header: 'partials/markdown-header.md.njk';
61
- readonly footer: 'partials/markdown-footer.md.njk';
62
- };
63
- /** What {@link Renderer.renderStatusMarkdown} writes a status page's Markdown with. */
58
+ export interface TextTemplates {
59
+ readonly markdown: string;
60
+ readonly gemini: string;
61
+ }
62
+ export interface ThemeText {
63
+ readonly format: TextFormat;
64
+ readonly text: string;
65
+ }
64
66
  export interface StatusMarkdownContext {
65
67
  /** The path the request was for. */
66
68
  url: string;
67
69
  markdownUrl: MarkdownUrl;
68
70
  /** On the maintenance page: when the operator expects the site back. */
69
71
  until?: Date | undefined;
72
+ format: TextFormat;
70
73
  }
71
74
  /** What {@link Renderer.renderMarkdownChrome} writes links with. */
72
75
  export interface MarkdownChromeOptions {
@@ -79,11 +82,15 @@ export interface MarkdownChromeOptions {
79
82
  * `backlinks`, and `archiveMonths` when it says `archive: true`.
80
83
  */
81
84
  document?: Document | undefined;
85
+ /**
86
+ * For `gemini`, the archive page's descriptions are left off, so each of
87
+ * its posts converts to a gemfeed line, `=> url YYYY-MM-DD title`.
88
+ */
89
+ format: TextFormat;
82
90
  }
83
- /** A page's Markdown header and footer, as the theme wrote them. */
84
91
  export interface MarkdownChromeText {
85
- readonly header: string;
86
- readonly footer: string;
92
+ readonly header: ThemeText;
93
+ readonly footer: ThemeText;
87
94
  }
88
95
  /** A listing of documents, ready to render. */
89
96
  export interface Listing {
@@ -208,19 +215,23 @@ export interface Renderer {
208
215
  */
209
216
  renderMaintenance(url: string, until: Date | undefined): string;
210
217
  /**
211
- * The body of a status page's Markdown, from the theme's `markdown`
212
- * template in {@link STATUS_PAGES}, with autoescaping off. The template gets
213
- * `site`, `url`, `title`, the maintenance page's `until` and `untilText`,
214
- * and the filters the Markdown partials have.
218
+ * The body of a status page's Markdown or gemtext, from the theme's
219
+ * templates in {@link STATUS_PAGES}, with autoescaping off. The template
220
+ * gets `site`, `url`, `title`, the maintenance page's `until` and
221
+ * `untilText`, and the filters the Markdown partials have.
215
222
  */
216
- renderStatusMarkdown(page: StatusPageName, context: StatusMarkdownContext): string;
223
+ renderStatusMarkdown(page: StatusPageName, context: StatusMarkdownContext): ThemeText;
217
224
  /**
218
- * The header and footer of a page's Markdown, through
219
- * {@link MARKDOWN_TEMPLATES} with autoescaping off: Markdown is not HTML.
225
+ * The header and footer of a page's Markdown or gemtext, through
226
+ * {@link CHROME_TEMPLATES} with autoescaping off: Markdown is not HTML.
220
227
  * The partials get `site`, `menus`, `soloAuthor`, the chrome's links as
221
228
  * data, a document's `categories`, `tags`, `backlinks`, `conversation` and
222
229
  * form links, `archiveMonths` on an archive page, and the `escapeMarkdown`,
223
- * `nest` and `markdownUrl` filters.
230
+ * `nest`, `markdownUrl` and `geminiUrl` filters.
231
+ *
232
+ * Gemtext comes from the first of the chosen theme's `.gmi.njk`, its
233
+ * `.md.njk`, the default theme's `.gmi.njk` and its `.md.njk`
234
+ * (decision-60), and the result says which format the theme wrote.
224
235
  */
225
236
  renderMarkdownChrome(chrome: MarkdownChrome, options: MarkdownChromeOptions): MarkdownChromeText;
226
237
  /** Any template by name, with the site data already in the context. */
@@ -236,6 +247,15 @@ export interface Renderer {
236
247
  * packaged theme: what the head declares and the web manifest repeats.
237
248
  */
238
249
  themeColors(): ThemeColors;
250
+ /**
251
+ * The scheme and mode the site draws its pages in right now, with the
252
+ * scheme's colour tokens from the theme's stylesheet: what a page that does
253
+ * not load the stylesheet, the embed view, colours itself with.
254
+ * `undefined` under a theme with no schemes.
255
+ */
256
+ siteColors(): (SiteColors & {
257
+ readonly tokens: SchemeTokens;
258
+ }) | undefined;
239
259
  /** The Nunjucks environment, for a site that wants to add its own filters. */
240
260
  readonly environment: Environment;
241
261
  /**
@@ -256,6 +276,12 @@ export interface PostSyndication {
256
276
  export interface CreateRendererOptions {
257
277
  /** Config after defaults, for the themes directory, base URL and content directory. */
258
278
  config: ResolvedConfig;
279
+ /**
280
+ * The Google Fonts a page is set in, per the site's `headingFont` and
281
+ * `bodyFont` and the roles the theme declares (decision-61). A renderer
282
+ * built without it sets every role in the theme's own stack.
283
+ */
284
+ fonts?: ((site: SiteData, declared: readonly ThemeFont[]) => readonly PageFont[]) | undefined;
259
285
  /**
260
286
  * Which theme the site is rendering through, asked per render (decision-15).
261
287
  *
@@ -421,21 +447,25 @@ export declare const STATUS_PAGES: {
421
447
  readonly notFound: {
422
448
  readonly template: "layouts/404.njk";
423
449
  readonly markdown: 'layouts/404.md.njk';
450
+ readonly gemini: 'layouts/404.gmi.njk';
424
451
  readonly title: 'Not found';
425
452
  };
426
453
  readonly gone: {
427
454
  readonly template: "layouts/410.njk";
428
455
  readonly markdown: 'layouts/410.md.njk';
456
+ readonly gemini: 'layouts/410.gmi.njk';
429
457
  readonly title: 'Deleted';
430
458
  };
431
459
  readonly serverError: {
432
460
  readonly template: "layouts/500.njk";
433
461
  readonly markdown: 'layouts/500.md.njk';
462
+ readonly gemini: 'layouts/500.gmi.njk';
434
463
  readonly title: 'Something went wrong';
435
464
  };
436
465
  readonly maintenance: {
437
466
  readonly template: "layouts/503.njk";
438
467
  readonly markdown: 'layouts/503.md.njk';
468
+ readonly gemini: 'layouts/503.gmi.njk';
439
469
  readonly title: 'Down for maintenance';
440
470
  };
441
471
  };
@@ -1 +1 @@
1
- {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/web/render.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/web/render.ts"],"names":[],"mappings":"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"}