@geekity/cms 0.41.0 → 0.42.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (199) hide show
  1. package/admin/components/blocks.njk +15 -1
  2. package/admin/pages/documents/editor.njk +1 -0
  3. package/admin/pages/settings/reading.njk +14 -0
  4. package/admin/pages/users/writing-goals.njk +64 -0
  5. package/admin/static/admin.css +5 -1
  6. package/admin/static/editor.js +21 -18
  7. package/dist/access-log.d.ts +3 -0
  8. package/dist/access-log.d.ts.map +1 -1
  9. package/dist/access-log.js +13 -9
  10. package/dist/access-log.js.map +1 -1
  11. package/dist/admin/autosave.d.ts +1 -0
  12. package/dist/admin/autosave.d.ts.map +1 -1
  13. package/dist/admin/autosave.js +20 -4
  14. package/dist/admin/autosave.js.map +1 -1
  15. package/dist/admin/blocks.d.ts +13 -1
  16. package/dist/admin/blocks.d.ts.map +1 -1
  17. package/dist/admin/blocks.js +40 -5
  18. package/dist/admin/blocks.js.map +1 -1
  19. package/dist/admin/core-widgets.d.ts.map +1 -1
  20. package/dist/admin/core-widgets.js +2 -0
  21. package/dist/admin/core-widgets.js.map +1 -1
  22. package/dist/admin/documents.d.ts.map +1 -1
  23. package/dist/admin/documents.js +18 -0
  24. package/dist/admin/documents.js.map +1 -1
  25. package/dist/admin/editor-word-counter.d.ts +8 -0
  26. package/dist/admin/editor-word-counter.d.ts.map +1 -0
  27. package/dist/admin/editor-word-counter.js +27 -0
  28. package/dist/admin/editor-word-counter.js.map +1 -0
  29. package/dist/admin/editor-words.d.ts +7 -0
  30. package/dist/admin/editor-words.d.ts.map +1 -0
  31. package/dist/admin/editor-words.js +9 -0
  32. package/dist/admin/editor-words.js.map +1 -0
  33. package/dist/admin/focus-mode.d.ts +0 -2
  34. package/dist/admin/focus-mode.d.ts.map +1 -1
  35. package/dist/admin/focus-mode.js +0 -10
  36. package/dist/admin/focus-mode.js.map +1 -1
  37. package/dist/admin/menu.d.ts.map +1 -1
  38. package/dist/admin/menu.js +2 -0
  39. package/dist/admin/menu.js.map +1 -1
  40. package/dist/admin/routes.d.ts.map +1 -1
  41. package/dist/admin/routes.js +2 -0
  42. package/dist/admin/routes.js.map +1 -1
  43. package/dist/admin/settings-fields.d.ts.map +1 -1
  44. package/dist/admin/settings-fields.js +1 -0
  45. package/dist/admin/settings-fields.js.map +1 -1
  46. package/dist/admin/settings-reading.d.ts.map +1 -1
  47. package/dist/admin/settings-reading.js +7 -1
  48. package/dist/admin/settings-reading.js.map +1 -1
  49. package/dist/admin/templates.d.ts +1 -0
  50. package/dist/admin/templates.d.ts.map +1 -1
  51. package/dist/admin/templates.js +1 -0
  52. package/dist/admin/templates.js.map +1 -1
  53. package/dist/admin/users.d.ts.map +1 -1
  54. package/dist/admin/users.js +2 -0
  55. package/dist/admin/users.js.map +1 -1
  56. package/dist/admin/widget-writing.d.ts +3 -0
  57. package/dist/admin/widget-writing.d.ts.map +1 -0
  58. package/dist/admin/widget-writing.js +102 -0
  59. package/dist/admin/widget-writing.js.map +1 -0
  60. package/dist/admin/widgets.d.ts +4 -1
  61. package/dist/admin/widgets.d.ts.map +1 -1
  62. package/dist/admin/widgets.js +19 -8
  63. package/dist/admin/widgets.js.map +1 -1
  64. package/dist/admin/writing-goals.d.ts +33 -0
  65. package/dist/admin/writing-goals.d.ts.map +1 -0
  66. package/dist/admin/writing-goals.js +149 -0
  67. package/dist/admin/writing-goals.js.map +1 -0
  68. package/dist/cli.d.ts +1 -1
  69. package/dist/cli.d.ts.map +1 -1
  70. package/dist/cli.js +64 -3
  71. package/dist/cli.js.map +1 -1
  72. package/dist/cms/create.d.ts +5 -2
  73. package/dist/cms/create.d.ts.map +1 -1
  74. package/dist/cms/create.js +60 -2
  75. package/dist/cms/create.js.map +1 -1
  76. package/dist/cms/server-error.d.ts.map +1 -1
  77. package/dist/cms/server-error.js +1 -0
  78. package/dist/cms/server-error.js.map +1 -1
  79. package/dist/cms/services.d.ts.map +1 -1
  80. package/dist/cms/services.js +5 -0
  81. package/dist/cms/services.js.map +1 -1
  82. package/dist/config.d.ts +20 -0
  83. package/dist/config.d.ts.map +1 -1
  84. package/dist/config.js +6 -2
  85. package/dist/config.js.map +1 -1
  86. package/dist/content/words.d.ts +3 -0
  87. package/dist/content/words.d.ts.map +1 -0
  88. package/dist/content/words.js +120 -0
  89. package/dist/content/words.js.map +1 -0
  90. package/dist/files/data-files.d.ts +3 -0
  91. package/dist/files/data-files.d.ts.map +1 -1
  92. package/dist/files/data-files.js +18 -0
  93. package/dist/files/data-files.js.map +1 -1
  94. package/dist/gemini/capsule.d.ts +4 -0
  95. package/dist/gemini/capsule.d.ts.map +1 -0
  96. package/dist/gemini/capsule.js +9 -0
  97. package/dist/gemini/capsule.js.map +1 -0
  98. package/dist/gemini/certificate.d.ts +34 -0
  99. package/dist/gemini/certificate.d.ts.map +1 -0
  100. package/dist/gemini/certificate.js +255 -0
  101. package/dist/gemini/certificate.js.map +1 -0
  102. package/dist/gemini/site-certificate.d.ts +8 -0
  103. package/dist/gemini/site-certificate.d.ts.map +1 -0
  104. package/dist/gemini/site-certificate.js +17 -0
  105. package/dist/gemini/site-certificate.js.map +1 -0
  106. package/dist/micropub/endpoint.d.ts.map +1 -1
  107. package/dist/micropub/endpoint.js +12 -0
  108. package/dist/micropub/endpoint.js.map +1 -1
  109. package/dist/plugin.d.ts +14 -1
  110. package/dist/plugin.d.ts.map +1 -1
  111. package/dist/plugin.js.map +1 -1
  112. package/dist/site/namespace.d.ts +1 -0
  113. package/dist/site/namespace.d.ts.map +1 -1
  114. package/dist/site/namespace.js +6 -0
  115. package/dist/site/namespace.js.map +1 -1
  116. package/dist/site/users.d.ts +7 -0
  117. package/dist/site/users.d.ts.map +1 -1
  118. package/dist/site/users.js +7 -0
  119. package/dist/site/users.js.map +1 -1
  120. package/dist/site/writing-goals.d.ts +22 -0
  121. package/dist/site/writing-goals.d.ts.map +1 -0
  122. package/dist/site/writing-goals.js +42 -0
  123. package/dist/site/writing-goals.js.map +1 -0
  124. package/dist/util/public-address.d.ts +1 -0
  125. package/dist/util/public-address.d.ts.map +1 -1
  126. package/dist/util/public-address.js +38 -30
  127. package/dist/util/public-address.js.map +1 -1
  128. package/dist/web/access-line.d.ts +2 -0
  129. package/dist/web/access-line.d.ts.map +1 -0
  130. package/dist/web/access-line.js +6 -0
  131. package/dist/web/access-line.js.map +1 -0
  132. package/dist/web/document-page.d.ts.map +1 -1
  133. package/dist/web/document-page.js +3 -4
  134. package/dist/web/document-page.js.map +1 -1
  135. package/dist/web/feed-routes.d.ts.map +1 -1
  136. package/dist/web/feed-routes.js +4 -4
  137. package/dist/web/feed-routes.js.map +1 -1
  138. package/dist/web/gemini-listener.d.ts +30 -0
  139. package/dist/web/gemini-listener.d.ts.map +1 -0
  140. package/dist/web/gemini-listener.js +186 -0
  141. package/dist/web/gemini-listener.js.map +1 -0
  142. package/dist/web/gemini-request.d.ts +23 -0
  143. package/dist/web/gemini-request.d.ts.map +1 -0
  144. package/dist/web/gemini-request.js +127 -0
  145. package/dist/web/gemini-request.js.map +1 -0
  146. package/dist/web/listing-pages.d.ts.map +1 -1
  147. package/dist/web/listing-pages.js +7 -5
  148. package/dist/web/listing-pages.js.map +1 -1
  149. package/dist/web/llms.d.ts +1 -0
  150. package/dist/web/llms.d.ts.map +1 -1
  151. package/dist/web/llms.js +3 -0
  152. package/dist/web/llms.js.map +1 -1
  153. package/dist/web/maintenance.js +1 -0
  154. package/dist/web/maintenance.js.map +1 -1
  155. package/dist/web/markdown-representation.d.ts +11 -20
  156. package/dist/web/markdown-representation.d.ts.map +1 -1
  157. package/dist/web/markdown-representation.js +57 -58
  158. package/dist/web/markdown-representation.js.map +1 -1
  159. package/dist/web/negotiate.d.ts +8 -17
  160. package/dist/web/negotiate.d.ts.map +1 -1
  161. package/dist/web/negotiate.js +37 -28
  162. package/dist/web/negotiate.js.map +1 -1
  163. package/dist/web/proxy-protocol.d.ts +13 -0
  164. package/dist/web/proxy-protocol.d.ts.map +1 -0
  165. package/dist/web/proxy-protocol.js +79 -0
  166. package/dist/web/proxy-protocol.js.map +1 -0
  167. package/dist/web/render.d.ts +33 -20
  168. package/dist/web/render.d.ts.map +1 -1
  169. package/dist/web/render.js +64 -27
  170. package/dist/web/render.js.map +1 -1
  171. package/dist/web/routes.d.ts.map +1 -1
  172. package/dist/web/routes.js +4 -8
  173. package/dist/web/routes.js.map +1 -1
  174. package/dist/web/site-index.d.ts.map +1 -1
  175. package/dist/web/site-index.js +6 -2
  176. package/dist/web/site-index.js.map +1 -1
  177. package/dist/web/status-pages.d.ts +2 -3
  178. package/dist/web/status-pages.d.ts.map +1 -1
  179. package/dist/web/status-pages.js +14 -11
  180. package/dist/web/status-pages.js.map +1 -1
  181. package/dist/web/throttle.d.ts +9 -0
  182. package/dist/web/throttle.d.ts.map +1 -1
  183. package/dist/web/throttle.js +17 -0
  184. package/dist/web/throttle.js.map +1 -1
  185. package/dist/writing/ledger.d.ts +15 -0
  186. package/dist/writing/ledger.d.ts.map +1 -0
  187. package/dist/writing/ledger.js +70 -0
  188. package/dist/writing/ledger.js.map +1 -0
  189. package/dist/writing/progress.d.ts +25 -0
  190. package/dist/writing/progress.d.ts.map +1 -0
  191. package/dist/writing/progress.js +83 -0
  192. package/dist/writing/progress.js.map +1 -0
  193. package/package.json +2 -1
  194. package/themes/default/layouts/404.gmi.njk +10 -0
  195. package/themes/default/layouts/410.gmi.njk +8 -0
  196. package/themes/default/layouts/500.gmi.njk +9 -0
  197. package/themes/default/layouts/503.gmi.njk +9 -0
  198. package/themes/default/layouts/base.njk +3 -0
  199. package/themes/default/partials/markdown-footer.md.njk +9 -1
package/dist/web/llms.js CHANGED
@@ -32,6 +32,9 @@ export function llmsTxt(index, baseUrl, markdownUrl) {
32
32
  return markdownFile([
33
33
  `# ${oneLine(index.title)}`,
34
34
  ...(description === '' ? [] : [`> ${description}`]),
35
+ ...(index.capsule === undefined
36
+ ? []
37
+ : [`This site is also a Gemini capsule at <${index.capsule}>.`]),
35
38
  ...section('Navigation', index.navigation, link),
36
39
  ...section('Pages', index.pages, link),
37
40
  ...section('Posts', index.posts, link),
@@ -1 +1 @@
1
- {"version":3,"file":"llms.js","sourceRoot":"","sources":["../../src/web/llms.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"llms.js","sourceRoot":"","sources":["../../src/web/llms.ts"],"names":[],"mappings":"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"}
@@ -92,6 +92,7 @@ function unavailable(c, pathname, until) {
92
92
  'content-type': 'application/json; charset=utf-8',
93
93
  });
94
94
  case 'markdown':
95
+ case 'gemini':
95
96
  case 'text':
96
97
  return statusMarkdownResponse(c, representation, 'maintenance', 503, {
97
98
  until: upcoming,
@@ -1 +1 @@
1
- {"version":3,"file":"maintenance.js","sourceRoot":"","sources":["../../src/web/maintenance.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,+BAA+B,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAErF;;;;GAIG;AACH,MAAM,2BAA2B,GAAG,GAAG,CAAC;AAExC,6EAA6E;AAC7E,MAAM,QAAQ,GAAG,UAAU,CAAC;AAE5B,MAAM,WAAW,GAAG;;;;;;;;;;;;CAYnB,CAAC;AAEF,MAAM,iBAAiB,GACrB,iHAAiH,CAAC;AAEpH,MAAM,SAAS,GAAG,GAAG,IAAI,CAAC,SAAS,CACjC;IACE,KAAK,EAAE,aAAa;IACpB,OAAO,EAAE,8EAA8E;CACxF,EACD,SAAS,EACT,CAAC,CACF,IAAI,CAAC;AAEN;;;;;;;;GAQG;AACH,SAAS,QAAQ,CAAC,QAAgB;IAChC,OAAO,CACL,QAAQ,KAAK,WAAW;QACxB,QAAQ,KAAK,kBAAkB;QAC/B,QAAQ,KAAK,iBAAiB;QAC9B,QAAQ,KAAK,+BAA+B;QAC5C,QAAQ,KAAK,YAAY;QACzB,QAAQ,CAAC,UAAU,CAAC,GAAG,YAAY,GAAG,CAAC;QACvC,QAAQ,CAAC,UAAU,CAAC,kBAAkB,CAAC;QACvC,QAAQ,CAAC,UAAU,CAAC,gBAAgB,CAAC,CACtC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,eAAe,GAAkC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;IAC9E,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;IAChD,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,CAAC,EAAE,IAAI,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,MAAM,IAAI,EAAE,CAAC;IAEnD,IAAI,eAAe,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;QACrC,MAAM,IAAI,EAAE,CAAC;QACb,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,qBAAqB,CAAC,CAAC;QAC1D,OAAO;IACT,CAAC;IAED,OAAO,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9E,CAAC,CAAC;AAEF,SAAS,WAAW,CAAC,CAAsB,EAAE,QAAgB,EAAE,KAAuB;IACpF,MAAM,QAAQ,GAAG,KAAK,KAAK,SAAS,IAAI,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACvF,MAAM,OAAO,GAAG;QACd,aAAa,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,MAAM,CAAC,2BAA2B,CAAC;QAC7E,eAAe,EAAE,QAAQ;KAC1B,CAAC;IAEF,MAAM,cAAc,GAAG,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC1E,QAAQ,cAAc,EAAE,CAAC;QACvB,KAAK,MAAM;YACT,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE;gBAC5B,GAAG,OAAO;gBACV,cAAc,EAAE,iCAAiC;aAClD,CAAC,CAAC;QACL,KAAK,UAAU,CAAC;QAChB,KAAK,MAAM;YACT,OAAO,sBAAsB,CAAC,CAAC,EAAE,cAAc,EAAE,aAAa,EAAE,GAAG,EAAE;gBACnE,KAAK,EAAE,QAAQ;gBACf,QAAQ,EAAE,iBAAiB;gBAC3B,OAAO;aACR,CAAC,CAAC;QACL,KAAK,MAAM;YACT,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED,SAAS,IAAI,CAAC,CAAsB,EAAE,QAAgB,EAAE,KAAuB;IAC7E,IAAI,CAAC;QACH,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC3D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,6CAA6C,EAAE,KAAK,CAAC,CAAC;QACpE,OAAO,WAAW,CAAC;IACrB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"maintenance.js","sourceRoot":"","sources":["../../src/web/maintenance.ts"],"names":[],"mappings":"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"}
@@ -5,25 +5,17 @@ import type { SearchHit } from '../content/store.ts';
5
5
  import type { GeekityEnv } from './env.ts';
6
6
  import type { Archive } from './listing-subject.ts';
7
7
  import type { MarkdownUrl } from './markdown-page.ts';
8
+ import type { TextFormat } from './negotiate.ts';
8
9
  import type { Pagination } from './pagination.ts';
9
10
  import type { StatusPageName } from './render.ts';
10
- /**
11
- * A document's Markdown at `url`, which is its permalink everywhere but the
12
- * front page. The front matter says where it is served; everything the page
13
- * lists about the document, such as its comments feed, is the stored one's.
14
- */
15
- export declare function documentMarkdown(c: Context<GeekityEnv>, document: Document, url: string): string;
11
+ export declare function documentMarkdown(c: Context<GeekityEnv>, document: Document, url: string, format: TextFormat): string;
16
12
  export declare function listingMarkdown(c: Context<GeekityEnv>, archive: Archive, page: {
17
13
  href: string;
18
14
  title: string;
19
15
  pagination: Pagination;
20
16
  documents: readonly Document[];
21
- }): string;
22
- /**
23
- * A native comment's page in Markdown: the post and the comments it answers
24
- * above it, its own words as the body, and its replies below.
25
- */
26
- export declare function commentMarkdown(c: Context<GeekityEnv>, found: CommentThread): string;
17
+ }, format: TextFormat): string;
18
+ export declare function commentMarkdown(c: Context<GeekityEnv>, found: CommentThread, format: TextFormat): string;
27
19
  /**
28
20
  * One page of search results in the listing's shape: what was asked and how
29
21
  * much was found, the results with their snippets, and the pager. Every link
@@ -34,12 +26,11 @@ export declare function searchMarkdown(c: Context<GeekityEnv>, page: {
34
26
  query: string;
35
27
  pagination: Pagination;
36
28
  hits: readonly SearchHit[];
37
- }): string;
38
- /**
39
- * A 404, 410, 500 or 503 in Markdown: the theme's body for it between the
40
- * header and footer every page has, with the maintenance page's back-by time
41
- * in the front matter as well.
42
- */
43
- export declare function statusMarkdown(c: Context<GeekityEnv>, page: StatusPageName, url: string, until?: Date): string;
44
- export declare function markdownUrlFor(c: Context<GeekityEnv>, pageUrl: string): MarkdownUrl;
29
+ }, format: TextFormat): string;
30
+ export declare function statusMarkdown(c: Context<GeekityEnv>, page: StatusPageName, url: string, format: TextFormat, until?: Date): string;
31
+ export declare const GEMTEXT: {
32
+ readonly plain: true;
33
+ readonly stripHtml: true;
34
+ };
35
+ export declare function siteUrlFor(c: Context<GeekityEnv>, pageUrl: string, format: TextFormat): MarkdownUrl;
45
36
  //# sourceMappingURL=markdown-representation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"markdown-representation.d.ts","sourceRoot":"","sources":["../../src/web/markdown-representation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAGpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAOrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAY3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAapD,OAAO,KAAK,EAA8C,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAElG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAMlD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CA0ChG;AAED,wBAAgB,eAAe,CAC7B,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,EACtB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,SAAS,QAAQ,EAAE,CAAA;CAAE,GAC5F,MAAM,CAyCR;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,aAAa,GAAG,MAAM,CAqCpF;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,EACtB,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,SAAS,SAAS,EAAE,CAAA;CAAE,GACxF,MAAM,CA+CR;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,EACtB,IAAI,EAAE,cAAc,EACpB,GAAG,EAAE,MAAM,EACX,KAAK,CAAC,EAAE,IAAI,GACX,MAAM,CAmBR;AAsCD,wBAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,WAAW,CAGnF"}
1
+ {"version":3,"file":"markdown-representation.d.ts","sourceRoot":"","sources":["../../src/web/markdown-representation.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAGpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAOrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAY3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAcpD,OAAO,KAAK,EAA8C,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAElG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,KAAK,EAAE,cAAc,EAAa,MAAM,aAAa,CAAC;AAM7D,wBAAgB,gBAAgB,CAC9B,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,EACtB,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,UAAU,GACjB,MAAM,CA2CR;AAED,wBAAgB,eAAe,CAC7B,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,EACtB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,SAAS,QAAQ,EAAE,CAAA;CAAE,EAC7F,MAAM,EAAE,UAAU,GACjB,MAAM,CA4CR;AAED,wBAAgB,eAAe,CAC7B,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,EACtB,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,UAAU,GACjB,MAAM,CAsCR;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,EACtB,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,SAAS,SAAS,EAAE,CAAA;CAAE,EACzF,MAAM,EAAE,UAAU,GACjB,MAAM,CAgDR;AAED,wBAAgB,cAAc,CAC5B,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,EACtB,IAAI,EAAE,cAAc,EACpB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,UAAU,EAClB,KAAK,CAAC,EAAE,IAAI,GACX,MAAM,CAqBR;AA+ED,eAAO,MAAM,OAAO;aAAK,KAAK;aAAQ,SAAS;CAAiB,CAAC;AAEjE,wBAAgB,UAAU,CACxB,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,EACtB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,UAAU,GACjB,WAAW,CAGb"}
@@ -1,3 +1,5 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ import { convert } from '@geekity/md2gemini';
1
3
  import { commentAnchor, commentKeyAt } from '../comments/conversation.js';
2
4
  import { commentPageHref } from '../content/guids.js';
3
5
  import { rewriteMarkdownLinks } from '../content/markdown-links.js';
@@ -13,19 +15,14 @@ import { feedExcerpt } from '../content/excerpt.js';
13
15
  import { siteTimezone } from '../theme/site-data.js';
14
16
  import { commentedPost } from './conversation.js';
15
17
  import { markdownCommentThread } from './markdown-conversation.js';
16
- import { bioOf, entryList, escapeMarkdown, linkList, markdownFile, namedAuthor, navigationFrontMatter, oneLine, } from './markdown-page.js';
18
+ import { bioOf, entryList, escapeMarkdown, HOME_LINK, linkList, markdownFile, namedAuthor, navigationFrontMatter, oneLine, } from './markdown-page.js';
17
19
  import { representationHref } from './negotiate.js';
18
20
  import { STATUS_PAGES } from './render.js';
19
21
  import { classifyPath } from './paths.js';
20
22
  import { documentLabel, encodePath } from './request.js';
21
23
  import { SEARCH_PATH, snippetMarkdown } from './search.js';
22
24
  import { servedPath, siteView } from './site-view.js';
23
- /**
24
- * A document's Markdown at `url`, which is its permalink everywhere but the
25
- * front page. The front matter says where it is served; everything the page
26
- * lists about the document, such as its comments feed, is the stored one's.
27
- */
28
- export function documentMarkdown(c, document, url) {
25
+ export function documentMarkdown(c, document, url, format) {
29
26
  const writer = authorContext(siteView(c).users(), document.author);
30
27
  const neighbours = document.type === 'post' ? c.var.store.neighbours(document) : {};
31
28
  const link = (neighbour) => neighbour === undefined
@@ -52,16 +49,16 @@ export function documentMarkdown(c, document, url) {
52
49
  : []),
53
50
  ],
54
51
  };
55
- return markdownPage(c, namedAuthor(documentFrontMatter({ ...document, permalink: url }), writer), chrome, [rewriteMarkdownLinks(body, markdownHrefFor(c, url))], { frontPage: url === '/' ? document : undefined, document });
52
+ return textPage(c, format, namedAuthor(documentFrontMatter({ ...document, permalink: url }), writer), chrome, [rewriteMarkdownLinks(body, siteHrefFor(c, url, format))], { frontPage: url === '/' ? document : undefined, document, published: document.date });
56
53
  }
57
- export function listingMarkdown(c, archive, page) {
54
+ export function listingMarkdown(c, archive, page, format) {
58
55
  const { next, previous } = page.pagination.href;
59
56
  const home = siteView(c).pages.home;
60
57
  const site = c.var.renderer.site();
61
58
  const description = oneLine(archive.description(site));
62
59
  const timezone = siteTimezone(site);
63
60
  const url = decodedPath(page.href);
64
- const markdownUrl = markdownUrlFor(c, url);
61
+ const linkUrl = siteUrlFor(c, url, format);
65
62
  const newer = previous === null ? undefined : { label: 'Newer posts', url: previous };
66
63
  const older = next === null ? undefined : { label: 'Older posts', url: next };
67
64
  const ownFeeds = archive.feedHref('rss') === feedPathUnder('/', 'rss') ? [] : FEED_FORMATS;
@@ -81,24 +78,20 @@ export function listingMarkdown(c, archive, page) {
81
78
  label: documentLabel(c, document),
82
79
  url: servedPath(document, home),
83
80
  date: document.date === undefined ? undefined : calendarDayIn(document.date, timezone),
84
- description: document.description,
81
+ description: format === 'gemini' ? undefined : document.description,
85
82
  }));
86
83
  const pager = [newer, older].filter((link) => link !== undefined);
87
84
  const { document } = archive.context;
88
- return markdownPage(c, { title: page.title, permalink: url }, chrome, [
85
+ return textPage(c, format, { title: page.title, permalink: url }, chrome, [
89
86
  description === '' ? '' : `> ${description}`,
90
87
  document === undefined
91
88
  ? ''
92
- : rewriteMarkdownLinks(normalizeBody(document.body), markdownHrefFor(c, document.permalink)),
93
- entries.length === 0 ? '' : `## Posts\n\n${entryList(entries, markdownUrl)}`,
94
- pager.length === 0 ? '' : `## More posts\n\n${linkList(pager, markdownUrl)}`,
89
+ : rewriteMarkdownLinks(normalizeBody(document.body), siteHrefFor(c, document.permalink, format)),
90
+ entries.length === 0 ? '' : `## Posts\n\n${entryList(entries, linkUrl)}`,
91
+ pager.length === 0 ? '' : `## More posts\n\n${linkList(pager, linkUrl)}`,
95
92
  ]);
96
93
  }
97
- /**
98
- * A native comment's page in Markdown: the post and the comments it answers
99
- * above it, its own words as the body, and its replies below.
100
- */
101
- export function commentMarkdown(c, found) {
94
+ export function commentMarkdown(c, found, format) {
102
95
  const { post, comment } = found;
103
96
  const url = commentPageHref(comment.key);
104
97
  const users = siteView(c).users();
@@ -119,7 +112,7 @@ export function commentMarkdown(c, found) {
119
112
  feeds: siteFeeds(site.title),
120
113
  thread,
121
114
  };
122
- return markdownPage(c, {
115
+ return textPage(c, format, {
123
116
  title: `${comment.author.name} on ${label}`,
124
117
  permalink: url,
125
118
  author: comment.author.name,
@@ -131,13 +124,13 @@ export function commentMarkdown(c, found) {
131
124
  * much was found, the results with their snippets, and the pager. Every link
132
125
  * to another page of the results keeps the query.
133
126
  */
134
- export function searchMarkdown(c, page) {
127
+ export function searchMarkdown(c, page, format) {
135
128
  const { query, pagination } = page;
136
129
  const { next, previous } = pagination.href;
137
130
  const home = siteView(c).pages.home;
138
131
  const site = c.var.renderer.site();
139
132
  const timezone = siteTimezone(site);
140
- const markdownUrl = markdownUrlFor(c, SEARCH_PATH);
133
+ const linkUrl = siteUrlFor(c, SEARCH_PATH, format);
141
134
  const title = query === ''
142
135
  ? 'Search'
143
136
  : `Search results for “${query}”${pagination.pageNumber > 0 ? `, page ${String(pagination.pageNumber + 1)}` : ''}`;
@@ -161,21 +154,16 @@ export function searchMarkdown(c, page) {
161
154
  label: documentLabel(c, document),
162
155
  url: servedPath(document, home),
163
156
  date: document.date === undefined ? undefined : calendarDayIn(document.date, timezone),
164
- description: snippetMarkdown(snippet),
157
+ description: format === 'gemini' ? undefined : snippetMarkdown(snippet),
165
158
  }));
166
159
  const pager = [newer, older].filter((link) => link !== undefined);
167
- return markdownPage(c, { title, permalink: page.href, ...(query === '' ? {} : { query }) }, chrome, [
160
+ return textPage(c, format, { title, permalink: page.href, ...(query === '' ? {} : { query }) }, chrome, [
168
161
  summary,
169
- entries.length === 0 ? '' : `## Results\n\n${entryList(entries, markdownUrl)}`,
170
- pager.length === 0 ? '' : `## More results\n\n${linkList(pager, markdownUrl)}`,
162
+ entries.length === 0 ? '' : `## Results\n\n${entryList(entries, linkUrl)}`,
163
+ pager.length === 0 ? '' : `## More results\n\n${linkList(pager, linkUrl)}`,
171
164
  ]);
172
165
  }
173
- /**
174
- * A 404, 410, 500 or 503 in Markdown: the theme's body for it between the
175
- * header and footer every page has, with the maintenance page's back-by time
176
- * in the front matter as well.
177
- */
178
- export function statusMarkdown(c, page, url, until) {
166
+ export function statusMarkdown(c, page, url, format, until) {
179
167
  const { title } = STATUS_PAGES[page];
180
168
  const chrome = {
181
169
  url,
@@ -185,10 +173,11 @@ export function statusMarkdown(c, page, url, until) {
185
173
  };
186
174
  const body = c.var.renderer.renderStatusMarkdown(page, {
187
175
  url,
188
- markdownUrl: markdownUrlFor(c, url),
176
+ markdownUrl: siteUrlFor(c, url, format),
189
177
  until,
178
+ format,
190
179
  });
191
- return markdownPage(c, { title, ...(until === undefined ? {} : { until: until.toISOString() }) }, chrome, [body]);
180
+ return textPage(c, format, { title, ...(until === undefined ? {} : { until: until.toISOString() }) }, chrome, [body]);
192
181
  }
193
182
  const FEED_NAMES = {
194
183
  rss: { format: 'RSS', type: 'application/rss+xml' },
@@ -204,34 +193,44 @@ function siteFeeds(siteTitle) {
204
193
  feed('rss', `${siteTitle} comments`, commentsFeedPath()),
205
194
  ];
206
195
  }
207
- function markdownPage(c, frontMatter, chrome, blocks, pages = {}) {
208
- const markdownUrl = markdownUrlFor(c, chrome.url);
196
+ function textPage(c, format, frontMatter, chrome, blocks, { published, ...pages } = {}) {
197
+ const linkUrl = siteUrlFor(c, chrome.url, format);
209
198
  const { header, footer } = c.var.renderer.renderMarkdownChrome(chrome, {
210
- markdownUrl,
199
+ markdownUrl: linkUrl,
200
+ format,
211
201
  ...pages,
212
202
  });
213
- return markdownFile({ ...frontMatter, ...navigationFrontMatter(chrome, markdownUrl) }, [
214
- header,
215
- ...blocks,
216
- footer,
217
- ]);
203
+ const body = blocks.map((block) => typeof block === 'string' ? { format: 'markdown', text: block } : block);
204
+ if (format === 'markdown') {
205
+ return markdownFile({ ...frontMatter, ...navigationFrontMatter(chrome, linkUrl) }, [header, ...body, footer].map(({ text }) => text));
206
+ }
207
+ const day = published === undefined
208
+ ? undefined
209
+ : calendarDayIn(published, siteTimezone(c.var.renderer.site()));
210
+ const dateline = {
211
+ format: 'markdown',
212
+ text: day === undefined ? '' : `Published ${day}`,
213
+ };
214
+ const gemtext = gemtextOf([header, dateline, ...body, footer]);
215
+ const home = `=> ${linkUrl(HOME_LINK.url)} ${HOME_LINK.label}`;
216
+ return gemtext.split('\n').includes(home) ? gemtext : `${gemtext}\n${home}\n`;
218
217
  }
219
- export function markdownUrlFor(c, pageUrl) {
220
- const href = markdownHrefFor(c, pageUrl);
218
+ function gemtextOf(parts) {
219
+ const token = `geekity-gemtext-${randomUUID()}`;
220
+ const gemtext = [];
221
+ const markdown = parts
222
+ .map(({ format, text }) => ({ format, text: text.trim() }))
223
+ .filter(({ text }) => text !== '')
224
+ .map(({ format, text }) => format === 'markdown' ? text : `${token}-${String(gemtext.push(text) - 1)}`)
225
+ .join('\n\n');
226
+ return convert(markdown, GEMTEXT).replace(new RegExp(`^${token}-(\\d+)$`, 'gm'), (_, index) => gemtext[Number(index)] ?? '');
227
+ }
228
+ export const GEMTEXT = { plain: true, stripHtml: true };
229
+ export function siteUrlFor(c, pageUrl, format) {
230
+ const href = siteHrefFor(c, pageUrl, format);
221
231
  return (url) => href(url) ?? url;
222
232
  }
223
- /**
224
- * A link on the page at `pageUrl` as the Markdown URL of what it names, or
225
- * `undefined` when it names nothing on this site with a Markdown
226
- * representation.
227
- *
228
- * The link is followed the way the site answers a request for it: a query
229
- * redirect, then whatever is served at the path, then a moved document, then
230
- * a declared redirect, so `/?p=7`, a `redirect_from` and the homepage's own
231
- * permalink all land on the `.md` of the document they reach. A fragment is
232
- * kept, and so is the query of a link to the search.
233
- */
234
- function markdownHrefFor(c, pageUrl) {
233
+ function siteHrefFor(c, pageUrl, format) {
235
234
  const { config } = c.var;
236
235
  const view = siteView(c);
237
236
  const { store } = view;
@@ -273,7 +272,7 @@ function markdownHrefFor(c, pageUrl) {
273
272
  const { pathname } = new URL(absoluteUrl(encodePath(served), config.baseUrl));
274
273
  const target = URL.parse(href, page);
275
274
  const query = served === SEARCH_PATH ? (target?.search ?? '') : '';
276
- return `${representationHref(`${pathname}${query}`, 'markdown')}${target?.hash ?? ''}`;
275
+ return `${representationHref(`${pathname}${query}`, format)}${target?.hash ?? ''}`;
277
276
  };
278
277
  }
279
278
  function hasCommentPage(c, key) {
@@ -1 +1 @@
1
- {"version":3,"file":"markdown-representation.js","sourceRoot":"","sources":["../../src/web/markdown-representation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"markdown-representation.js","sourceRoot":"","sources":["../../src/web/markdown-representation.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,10 @@ import type { Document } from '../content/document.ts';
6
6
  * decide *what* is at a URL; this module decides *which body* to hand back and
7
7
  * how to label it, so the two questions never get tangled together.
8
8
  */
9
- export type Representation = 'html' | 'markdown' | 'text' | 'json';
9
+ export type Representation = 'html' | 'markdown' | 'gemini' | 'text' | 'json';
10
+ export type TextFormat = 'markdown' | 'gemini';
11
+ export type TextRepresentation = 'markdown' | 'gemini' | 'text';
12
+ export declare function textFormatOf(representation: Representation): TextFormat | undefined;
10
13
  /** The media type each representation is served as. */
11
14
  export declare const MEDIA_TYPES: Readonly<Record<Representation, string>>;
12
15
  /**
@@ -44,7 +47,10 @@ export declare const ACTIVITY_STREAMS_MEDIA_TYPES: readonly string[];
44
47
  *
45
48
  * It is the same comparison {@link selectRepresentation} makes — highest q
46
49
  * wins, the more specific range wins a tie — with the ActivityStreams types on
47
- * one side and the document's own on the other. A tie goes to the document, so
50
+ * one side and the document's own on the other. A tie between exact types goes
51
+ * to the object: a peer that names `application/activity+json` and lists
52
+ * `application/json` beside it at the same q, as activitypub-bot does, is asking
53
+ * for the actor or post. Any other tie goes to the document, so
48
54
  * `Accept: application/*` still gets JSON and a browser's
49
55
  * `text/html,…,*\/*;q=0.8` still gets a page.
50
56
  */
@@ -61,17 +67,6 @@ export interface RepresentationExtension {
61
67
  /** The paths to look the resource up under, likeliest first. */
62
68
  paths: readonly string[];
63
69
  }
64
- /**
65
- * A `.md` or `.json` suffix taken off a request path, or `undefined` when the
66
- * path carries neither.
67
- *
68
- * Both spellings are recognised: `/2026/09/hello/index.md` — the one the `Link`
69
- * header advertises, and the one an Eleventy-style static build would produce —
70
- * and the shorter `/2026/09/hello.md` that people actually type, which the
71
- * router redirects to the first once it has found what it names. The result is a
72
- * list of candidate paths rather than one, because the trailing slash a
73
- * permalink carries is exactly what an extension has to displace.
74
- */
75
70
  export declare function splitRepresentationExtension(pathname: string): RepresentationExtension | undefined;
76
71
  /**
77
72
  * The URL one representation of a resource is served at, given the resource's
@@ -245,9 +240,5 @@ export interface AcceptRange {
245
240
  * its preference, not its page.
246
241
  */
247
242
  export declare function parseAccept(header: string): AcceptRange[];
248
- /**
249
- * The representation the failed request was after: the one its `.md` or
250
- * `.json` suffix names, else the one its `Accept` header prefers, else HTML.
251
- */
252
243
  export declare function representationOf(pathname: string, accept: string | undefined): Representation;
253
244
  //# sourceMappingURL=negotiate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"negotiate.d.ts","sourceRoot":"","sources":["../../src/web/negotiate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"negotiate.d.ts","sourceRoot":"","sources":["../../src/web/negotiate.ts"],"names":[],"mappings":"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"}
@@ -2,10 +2,23 @@ import { createHash } from 'node:crypto';
2
2
  import { documentFrontMatter } from '../content/writer.js';
3
3
  import { absoluteUrl } from '../util/url.js';
4
4
  import { matchesEtag } from '../theme/assets.js';
5
+ export function textFormatOf(representation) {
6
+ switch (representation) {
7
+ case 'markdown':
8
+ case 'text':
9
+ return 'markdown';
10
+ case 'gemini':
11
+ return 'gemini';
12
+ case 'html':
13
+ case 'json':
14
+ return undefined;
15
+ }
16
+ }
5
17
  /** The media type each representation is served as. */
6
18
  export const MEDIA_TYPES = {
7
19
  html: 'text/html',
8
20
  markdown: 'text/markdown',
21
+ gemini: 'text/gemini',
9
22
  text: 'text/plain',
10
23
  json: 'application/json',
11
24
  };
@@ -19,11 +32,17 @@ export const MEDIA_TYPES = {
19
32
  export const DOCUMENT_REPRESENTATIONS = [
20
33
  'html',
21
34
  'markdown',
35
+ 'gemini',
22
36
  'text',
23
37
  'json',
24
38
  ];
25
39
  export const LISTING_REPRESENTATIONS = DOCUMENT_REPRESENTATIONS;
26
- export const COMMENT_REPRESENTATIONS = ['html', 'markdown', 'text'];
40
+ export const COMMENT_REPRESENTATIONS = [
41
+ 'html',
42
+ 'markdown',
43
+ 'gemini',
44
+ 'text',
45
+ ];
27
46
  /**
28
47
  * The representation a request accepts, or `undefined` when it accepts none of
29
48
  * them and is owed a 406.
@@ -70,7 +89,10 @@ export const ACTIVITY_STREAMS_MEDIA_TYPES = [
70
89
  *
71
90
  * It is the same comparison {@link selectRepresentation} makes — highest q
72
91
  * wins, the more specific range wins a tie — with the ActivityStreams types on
73
- * one side and the document's own on the other. A tie goes to the document, so
92
+ * one side and the document's own on the other. A tie between exact types goes
93
+ * to the object: a peer that names `application/activity+json` and lists
94
+ * `application/json` beside it at the same q, as activitypub-bot does, is asking
95
+ * for the actor or post. Any other tie goes to the document, so
74
96
  * `Accept: application/*` still gets JSON and a browser's
75
97
  * `text/html,…,*\/*;q=0.8` still gets a page.
76
98
  */
@@ -86,8 +108,10 @@ export function prefersActivityStreams(accept) {
86
108
  const alternative = bestOf(ranges, DOCUMENT_REPRESENTATIONS.map((representation) => MEDIA_TYPES[representation]));
87
109
  if (alternative === undefined || alternative.quality <= 0)
88
110
  return true;
89
- return (wanted.quality > alternative.quality ||
90
- (wanted.quality === alternative.quality && wanted.specificity > alternative.specificity));
111
+ if (wanted.quality !== alternative.quality)
112
+ return wanted.quality > alternative.quality;
113
+ return (wanted.specificity > alternative.specificity ||
114
+ (wanted.specificity === alternative.specificity && wanted.specificity === EXACT));
91
115
  }
92
116
  /** The best match among several media types, or `undefined` when none match. */
93
117
  function bestOf(ranges, mediaTypes) {
@@ -110,19 +134,9 @@ function bestOf(ranges, mediaTypes) {
110
134
  */
111
135
  export const REPRESENTATION_EXTENSIONS = {
112
136
  markdown: '.md',
137
+ gemini: '.gmi',
113
138
  json: '.json',
114
139
  };
115
- /**
116
- * A `.md` or `.json` suffix taken off a request path, or `undefined` when the
117
- * path carries neither.
118
- *
119
- * Both spellings are recognised: `/2026/09/hello/index.md` — the one the `Link`
120
- * header advertises, and the one an Eleventy-style static build would produce —
121
- * and the shorter `/2026/09/hello.md` that people actually type, which the
122
- * router redirects to the first once it has found what it names. The result is a
123
- * list of candidate paths rather than one, because the trailing slash a
124
- * permalink carries is exactly what an extension has to displace.
125
- */
126
140
  export function splitRepresentationExtension(pathname) {
127
141
  for (const [representation, extension] of Object.entries(REPRESENTATION_EXTENSIONS)) {
128
142
  if (extension === undefined || !pathname.endsWith(extension))
@@ -189,6 +203,7 @@ export function documentJson(document, options) {
189
203
  export const CONTENT_TYPES = {
190
204
  html: 'text/html; charset=utf-8',
191
205
  markdown: 'text/markdown; charset=utf-8',
206
+ gemini: 'text/gemini; charset=utf-8',
192
207
  text: 'text/plain; charset=utf-8',
193
208
  json: 'application/json; charset=utf-8',
194
209
  };
@@ -239,8 +254,7 @@ export function representationResponse(options) {
239
254
  return new Response(null, { status: 304, headers });
240
255
  }
241
256
  headers.set('content-type', CONTENT_TYPES[options.representation]);
242
- if (options.representation === 'markdown' || options.representation === 'text') {
243
- // The point of the Markdown representation is to be read, not downloaded.
257
+ if (textFormatOf(options.representation) !== undefined) {
244
258
  headers.set('content-disposition', 'inline');
245
259
  }
246
260
  const body = options.representation === 'json'
@@ -401,18 +415,17 @@ function bestRange(ranges, mediaType) {
401
415
  }
402
416
  return best;
403
417
  }
404
- /**
405
- * How specifically a range names a media type: 2 for an exact match, 1 for
406
- * `type/*`, 0 for `*\/*`, `undefined` for no match at all.
407
- */
418
+ const ANY_TYPE = 0;
419
+ const ANY_SUBTYPE = 1;
420
+ const EXACT = 2;
408
421
  function specificityOf(range, type, subtype) {
409
422
  if (range.type === '*' && range.subtype === '*')
410
- return 0;
423
+ return ANY_TYPE;
411
424
  if (range.type !== type)
412
425
  return undefined;
413
426
  if (range.subtype === '*')
414
- return 1;
415
- return range.subtype === subtype ? 2 : undefined;
427
+ return ANY_SUBTYPE;
428
+ return range.subtype === subtype ? EXACT : undefined;
416
429
  }
417
430
  /** The `q` parameter of a media range, clamped to the range the grammar allows. */
418
431
  function qualityOf(parameters) {
@@ -436,10 +449,6 @@ function splitList(header) {
436
449
  .map((part) => part.trim())
437
450
  .filter((part) => part !== '');
438
451
  }
439
- /**
440
- * The representation the failed request was after: the one its `.md` or
441
- * `.json` suffix names, else the one its `Accept` header prefers, else HTML.
442
- */
443
452
  export function representationOf(pathname, accept) {
444
453
  return (splitRepresentationExtension(pathname)?.representation ??
445
454
  selectRepresentation(accept, DOCUMENT_REPRESENTATIONS) ??