@geekity/cms 0.18.0 → 0.20.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 (182) hide show
  1. package/README.md +29 -25
  2. package/admin/components/admin-bar.njk +4 -3
  3. package/admin/components/public-admin-bar.njk +3 -1
  4. package/admin/layouts/shell.njk +1 -0
  5. package/admin/pages/documents/editor.njk +291 -192
  6. package/admin/static/admin.css +123 -13
  7. package/admin/static/location.js +38 -0
  8. package/dist/admin/documents.d.ts +18 -3
  9. package/dist/admin/documents.d.ts.map +1 -1
  10. package/dist/admin/documents.js +150 -21
  11. package/dist/admin/documents.js.map +1 -1
  12. package/dist/admin/editor-layout.d.ts +13 -0
  13. package/dist/admin/editor-layout.d.ts.map +1 -0
  14. package/dist/admin/editor-layout.js +62 -0
  15. package/dist/admin/editor-layout.js.map +1 -0
  16. package/dist/admin/enclosure-field.d.ts +2 -3
  17. package/dist/admin/enclosure-field.d.ts.map +1 -1
  18. package/dist/admin/enclosure-field.js +27 -7
  19. package/dist/admin/enclosure-field.js.map +1 -1
  20. package/dist/admin/headers.d.ts +1 -0
  21. package/dist/admin/headers.d.ts.map +1 -1
  22. package/dist/admin/headers.js +3 -0
  23. package/dist/admin/headers.js.map +1 -1
  24. package/dist/admin/location-field.d.ts +4 -3
  25. package/dist/admin/location-field.d.ts.map +1 -1
  26. package/dist/admin/location-field.js +10 -2
  27. package/dist/admin/location-field.js.map +1 -1
  28. package/dist/admin/media.d.ts.map +1 -1
  29. package/dist/admin/media.js +3 -0
  30. package/dist/admin/media.js.map +1 -1
  31. package/dist/admin/photo-field.d.ts +2 -3
  32. package/dist/admin/photo-field.d.ts.map +1 -1
  33. package/dist/admin/photo-field.js +4 -2
  34. package/dist/admin/photo-field.js.map +1 -1
  35. package/dist/admin/read-field.d.ts +2 -3
  36. package/dist/admin/read-field.d.ts.map +1 -1
  37. package/dist/admin/read-field.js +12 -4
  38. package/dist/admin/read-field.js.map +1 -1
  39. package/dist/config.d.ts +2 -0
  40. package/dist/config.d.ts.map +1 -1
  41. package/dist/config.js.map +1 -1
  42. package/dist/content/citation.d.ts +5 -0
  43. package/dist/content/citation.d.ts.map +1 -1
  44. package/dist/content/citation.js +17 -0
  45. package/dist/content/citation.js.map +1 -1
  46. package/dist/content/kept-properties.d.ts +5 -0
  47. package/dist/content/kept-properties.d.ts.map +1 -0
  48. package/dist/content/kept-properties.js +12 -0
  49. package/dist/content/kept-properties.js.map +1 -0
  50. package/dist/content/location.d.ts +4 -0
  51. package/dist/content/location.d.ts.map +1 -1
  52. package/dist/content/location.js +35 -3
  53. package/dist/content/location.js.map +1 -1
  54. package/dist/content/locations.d.ts +2 -5
  55. package/dist/content/locations.d.ts.map +1 -1
  56. package/dist/content/locations.js +2 -77
  57. package/dist/content/locations.js.map +1 -1
  58. package/dist/content/markdown.d.ts +9 -0
  59. package/dist/content/markdown.d.ts.map +1 -1
  60. package/dist/content/markdown.js +37 -1
  61. package/dist/content/markdown.js.map +1 -1
  62. package/dist/content/permalink-file.d.ts +7 -0
  63. package/dist/content/permalink-file.d.ts.map +1 -0
  64. package/dist/content/permalink-file.js +77 -0
  65. package/dist/content/permalink-file.js.map +1 -0
  66. package/dist/content/post-type.d.ts +1 -6
  67. package/dist/content/post-type.d.ts.map +1 -1
  68. package/dist/content/post-type.js +13 -14
  69. package/dist/content/post-type.js.map +1 -1
  70. package/dist/content/slug.d.ts +2 -1
  71. package/dist/content/slug.d.ts.map +1 -1
  72. package/dist/content/slug.js +3 -1
  73. package/dist/content/slug.js.map +1 -1
  74. package/dist/env.d.ts +6 -0
  75. package/dist/env.d.ts.map +1 -1
  76. package/dist/federation/article.d.ts +8 -7
  77. package/dist/federation/article.d.ts.map +1 -1
  78. package/dist/federation/article.js +37 -18
  79. package/dist/federation/article.js.map +1 -1
  80. package/dist/federation/citations.d.ts +7 -6
  81. package/dist/federation/citations.d.ts.map +1 -1
  82. package/dist/federation/citations.js +44 -28
  83. package/dist/federation/citations.js.map +1 -1
  84. package/dist/federation/delivery.d.ts.map +1 -1
  85. package/dist/federation/delivery.js +23 -16
  86. package/dist/federation/delivery.js.map +1 -1
  87. package/dist/index.d.ts +5 -4
  88. package/dist/index.d.ts.map +1 -1
  89. package/dist/index.js +2 -1
  90. package/dist/index.js.map +1 -1
  91. package/dist/indieauth/bearer.d.ts +10 -6
  92. package/dist/indieauth/bearer.d.ts.map +1 -1
  93. package/dist/indieauth/bearer.js +11 -9
  94. package/dist/indieauth/bearer.js.map +1 -1
  95. package/dist/indieauth/token.js +1 -1
  96. package/dist/indieauth/token.js.map +1 -1
  97. package/dist/micropub/content.d.ts +15 -0
  98. package/dist/micropub/content.d.ts.map +1 -0
  99. package/dist/micropub/content.js +254 -0
  100. package/dist/micropub/content.js.map +1 -0
  101. package/dist/micropub/create.d.ts +7 -3
  102. package/dist/micropub/create.d.ts.map +1 -1
  103. package/dist/micropub/create.js +75 -24
  104. package/dist/micropub/create.js.map +1 -1
  105. package/dist/micropub/endpoint.d.ts +4 -5
  106. package/dist/micropub/endpoint.d.ts.map +1 -1
  107. package/dist/micropub/endpoint.js +33 -12
  108. package/dist/micropub/endpoint.js.map +1 -1
  109. package/dist/micropub/media.d.ts +6 -4
  110. package/dist/micropub/media.d.ts.map +1 -1
  111. package/dist/micropub/media.js +7 -5
  112. package/dist/micropub/media.js.map +1 -1
  113. package/dist/micropub/update.d.ts +7 -1
  114. package/dist/micropub/update.d.ts.map +1 -1
  115. package/dist/micropub/update.js +32 -7
  116. package/dist/micropub/update.js.map +1 -1
  117. package/dist/web/admin-bar.d.ts.map +1 -1
  118. package/dist/web/admin-bar.js +27 -1
  119. package/dist/web/admin-bar.js.map +1 -1
  120. package/dist/web/context.d.ts +10 -3
  121. package/dist/web/context.d.ts.map +1 -1
  122. package/dist/web/context.js +12 -2
  123. package/dist/web/context.js.map +1 -1
  124. package/dist/web/documents.d.ts +21 -6
  125. package/dist/web/documents.d.ts.map +1 -1
  126. package/dist/web/documents.js +23 -12
  127. package/dist/web/documents.js.map +1 -1
  128. package/dist/web/feed-item.d.ts +26 -3
  129. package/dist/web/feed-item.d.ts.map +1 -1
  130. package/dist/web/feed-item.js +63 -6
  131. package/dist/web/feed-item.js.map +1 -1
  132. package/dist/web/feed-rss.js +3 -3
  133. package/dist/web/feed-rss.js.map +1 -1
  134. package/dist/web/feed-source.d.ts +7 -0
  135. package/dist/web/feed-source.d.ts.map +1 -1
  136. package/dist/web/feed-source.js.map +1 -1
  137. package/dist/web/feeds.d.ts.map +1 -1
  138. package/dist/web/feeds.js +7 -1
  139. package/dist/web/feeds.js.map +1 -1
  140. package/dist/web/negotiate.d.ts +4 -0
  141. package/dist/web/negotiate.d.ts.map +1 -1
  142. package/dist/web/negotiate.js +5 -1
  143. package/dist/web/negotiate.js.map +1 -1
  144. package/dist/web/render.d.ts +5 -4
  145. package/dist/web/render.d.ts.map +1 -1
  146. package/dist/web/render.js +34 -12
  147. package/dist/web/render.js.map +1 -1
  148. package/dist/web/routes.d.ts.map +1 -1
  149. package/dist/web/routes.js +16 -4
  150. package/dist/web/routes.js.map +1 -1
  151. package/dist/web/sanitize.d.ts +10 -0
  152. package/dist/web/sanitize.d.ts.map +1 -1
  153. package/dist/web/sanitize.js +180 -0
  154. package/dist/web/sanitize.js.map +1 -1
  155. package/dist/web/templates.d.ts.map +1 -1
  156. package/dist/web/templates.js +2 -0
  157. package/dist/web/templates.js.map +1 -1
  158. package/dist/webmention/cited-picture.d.ts +37 -0
  159. package/dist/webmention/cited-picture.d.ts.map +1 -0
  160. package/dist/webmention/cited-picture.js +121 -0
  161. package/dist/webmention/cited-picture.js.map +1 -0
  162. package/dist/webmention/fetch-public.d.ts +26 -8
  163. package/dist/webmention/fetch-public.d.ts.map +1 -1
  164. package/dist/webmention/fetch-public.js +22 -12
  165. package/dist/webmention/fetch-public.js.map +1 -1
  166. package/dist/webmention/reply-context.d.ts +30 -8
  167. package/dist/webmention/reply-context.d.ts.map +1 -1
  168. package/dist/webmention/reply-context.js +238 -27
  169. package/dist/webmention/reply-context.js.map +1 -1
  170. package/dist/webmention/reply-contexts.d.ts +28 -16
  171. package/dist/webmention/reply-contexts.d.ts.map +1 -1
  172. package/dist/webmention/reply-contexts.js +108 -25
  173. package/dist/webmention/reply-contexts.js.map +1 -1
  174. package/package.json +10 -9
  175. package/themes/default/README.md +83 -9
  176. package/themes/default/layouts/post.njk +7 -7
  177. package/themes/default/partials/citations.njk +25 -4
  178. package/themes/default/partials/cited-page.njk +58 -0
  179. package/themes/default/partials/post-list.njk +8 -5
  180. package/themes/default/partials/reply-context.njk +9 -11
  181. package/themes/default/src/style.css +37 -0
  182. package/themes/default/static/style.css +83 -0
@@ -0,0 +1,254 @@
1
+ import TurndownService from 'turndown';
2
+ import { htmlInlineOffset, markdownTokens } from '../content/markdown.js';
3
+ import { normalizeBody } from '../content/writer.js';
4
+ import { cleanPostHtml } from '../web/sanitize.js';
5
+ /**
6
+ * A Micropub client's content as the post body the site stores (TASK-258,
7
+ * decision-27). The renderer passes raw HTML through, as Eleventy's does, so
8
+ * the body is cleaned here, at the boundary, before anything is written: HTML
9
+ * content is cleaned and converted to Markdown, and Markdown content keeps
10
+ * its text while every piece of raw HTML in it is cleaned in place.
11
+ */
12
+ const KEPT_BLOCKS = ['TABLE', 'FIGURE', 'DETAILS', 'DL'];
13
+ const KEPT_INLINE = ['ABBR', 'INS', 'KBD', 'MARK', 'Q', 'SMALL', 'SUB', 'SUP', 'U'];
14
+ /**
15
+ * How many times a body is cleaned and read again. A tag removed from between
16
+ * two pieces of text can join them into a new tag, which the next round
17
+ * cleans; real content settles in one.
18
+ */
19
+ const ROUNDS = 4;
20
+ const PRE_NEWLINE = '\uE000';
21
+ const turndown = new TurndownService({
22
+ headingStyle: 'atx',
23
+ codeBlockStyle: 'fenced',
24
+ bulletListMarker: '-',
25
+ emDelimiter: '_',
26
+ });
27
+ // Turndown leaves `<` and `&` alone, so text that read `&lt;script&gt;` in
28
+ // HTML would come out as a script tag in Markdown, which renders raw HTML.
29
+ turndown.escape = (text) => TurndownService.prototype.escape
30
+ .call(turndown, text)
31
+ .replaceAll('<', '\\<')
32
+ .replace(/&(?=#?[A-Za-z0-9]+;)/g, '\\&');
33
+ turndown.addRule('listItem', {
34
+ filter: 'li',
35
+ replacement(content, node, options) {
36
+ const list = node.parentNode;
37
+ let marker = `${options.bulletListMarker ?? '-'} `;
38
+ if (list?.nodeName === 'OL') {
39
+ const start = Number.parseInt(list.getAttribute('start') ?? '1', 10);
40
+ marker = `${String(start + Array.from(list.children).indexOf(node))}. `;
41
+ }
42
+ const indented = content
43
+ .replace(/^\n+/, '')
44
+ .replace(/\n+$/, '\n')
45
+ .replace(/\n/g, `\n${' '.repeat(marker.length)}`);
46
+ return marker + indented + (node.nextSibling !== null && !indented.endsWith('\n') ? '\n' : '');
47
+ },
48
+ });
49
+ turndown.addRule('strikethrough', {
50
+ filter: ['del', 's'],
51
+ replacement: (content) => `~~${content}~~`,
52
+ });
53
+ turndown.addRule('keptBlock', {
54
+ filter: (node) => KEPT_BLOCKS.includes(node.nodeName),
55
+ replacement: (_content, node) => `\n\n${htmlBlock(node)}\n\n`,
56
+ });
57
+ turndown.addRule('keptInline', {
58
+ filter: (node) => KEPT_INLINE.includes(node.nodeName),
59
+ replacement(content, node) {
60
+ const close = `</${node.nodeName.toLowerCase()}>`;
61
+ const shell = node.cloneNode(false);
62
+ return shell.outerHTML.slice(0, -close.length) + content + close;
63
+ },
64
+ });
65
+ export function markdownFromHtml(html) {
66
+ return cleanMarkdown(turndown.turndown(cleanPostHtml(html)));
67
+ }
68
+ /**
69
+ * Markdown content with each raw HTML block and inline tag, as the site's
70
+ * renderer reads them, put through the post allow-list. Text that is not HTML
71
+ * stays as it was sent, once its edges are trimmed and its line endings made
72
+ * `\n` as every stored body's are. `undefined` when a piece of HTML cannot be
73
+ * found in the source to be cleaned.
74
+ *
75
+ * The body is normalised before it is cleaned and checked again after, so the
76
+ * string cleaned is the string stored: trimming an indent after cleaning once
77
+ * turned an ignored code block into a live HTML block, and a lone `\r`, which
78
+ * markdown-it breaks a line on, once hid a block from the cleaner.
79
+ */
80
+ export function cleanMarkdown(markdown) {
81
+ const cleaned = settled(stored(markdown));
82
+ if (cleaned === undefined)
83
+ return undefined;
84
+ const body = stored(cleaned);
85
+ return settled(body) === body ? body : undefined;
86
+ }
87
+ /**
88
+ * A body as the site stores it. A NUL is also replaced as markdown-it
89
+ * replaces it, so the cleaner reads the characters the renderer does.
90
+ */
91
+ function stored(body) {
92
+ return normalizeBody(body).replaceAll('\0', '\uFFFD');
93
+ }
94
+ function settled(source) {
95
+ let current = source;
96
+ for (let round = 0; round < ROUNDS; round += 1) {
97
+ const edits = cleaningEdits(current);
98
+ if (edits === undefined)
99
+ return undefined;
100
+ if (edits.length === 0)
101
+ return current;
102
+ for (const { start, end, text } of edits.toSorted((a, b) => b.start - a.start)) {
103
+ current = current.slice(0, start) + text + current.slice(end);
104
+ }
105
+ }
106
+ return undefined;
107
+ }
108
+ function cleaningEdits(source) {
109
+ const lineStarts = [0];
110
+ for (let at = source.indexOf('\n'); at >= 0; at = source.indexOf('\n', at + 1)) {
111
+ lineStarts.push(at + 1);
112
+ }
113
+ const offset = (line) => lineStarts[line] ?? source.length;
114
+ const regionOf = (map) => map === null ? undefined : { start: offset(map[0]), end: offset(map[1]) };
115
+ const edits = [];
116
+ const inlineTextReadPerLineRange = new Map();
117
+ /** The lines of each open block, for an inline token that has none of its own: a table cell. */
118
+ const open = [];
119
+ for (const token of markdownTokens(source)) {
120
+ if (token.nesting === 1)
121
+ open.push(token.map ?? open.at(-1) ?? null);
122
+ if (token.nesting === -1)
123
+ open.pop();
124
+ if (token.type === 'html_block') {
125
+ const region = regionOf(token.map);
126
+ if (region === undefined)
127
+ return undefined;
128
+ const edit = cleanedBlock(source, region);
129
+ if (edit !== undefined)
130
+ edits.push(edit);
131
+ continue;
132
+ }
133
+ if (token.type !== 'inline')
134
+ continue;
135
+ const map = token.map ?? open.at(-1) ?? null;
136
+ const lineRange = String(map);
137
+ const before = inlineTextReadPerLineRange.get(lineRange) ?? '';
138
+ inlineTextReadPerLineRange.set(lineRange, before + token.content);
139
+ for (const child of token.children ?? []) {
140
+ if (child.type !== 'html_inline')
141
+ continue;
142
+ const cleaned = cleanPostHtml(child.content);
143
+ if (cleaned === child.content)
144
+ continue;
145
+ const region = regionOf(map);
146
+ const at = htmlInlineOffset(child);
147
+ if (region === undefined || at === undefined)
148
+ return undefined;
149
+ const occurrence = count(before + token.content.slice(0, at), child.content);
150
+ const start = nth(source.slice(region.start, region.end), child.content, occurrence);
151
+ if (start === undefined)
152
+ return undefined;
153
+ edits.push({
154
+ start: region.start + start,
155
+ end: region.start + start + child.content.length,
156
+ text: cleaned,
157
+ });
158
+ }
159
+ }
160
+ return edits;
161
+ }
162
+ /**
163
+ * The edit that cleans an HTML block's lines, or `undefined` when they are
164
+ * already clean. A line that only held a removed tag goes, rather than
165
+ * staying as a blank line that would end the block early; a block that is
166
+ * removed entirely takes the blank line after it too.
167
+ */
168
+ function cleanedBlock(source, region) {
169
+ const text = source.slice(region.start, region.end);
170
+ const cleaned = cleanPostHtml(text);
171
+ if (cleaned === text)
172
+ return undefined;
173
+ if (cleaned.trim() === '') {
174
+ const nextLine = source.slice(region.end).split('\n', 1)[0] ?? '';
175
+ const blankAfter = region.end < source.length && nextLine.trim() === '';
176
+ return {
177
+ start: region.start,
178
+ end: blankAfter ? region.end + nextLine.length + 1 : region.end,
179
+ text: '',
180
+ };
181
+ }
182
+ const hadBlank = text
183
+ .split('\n')
184
+ .slice(0, -1)
185
+ .some((line) => line.trim() === '');
186
+ const lines = cleaned.split('\n');
187
+ const last = lines.pop() ?? '';
188
+ const kept = hadBlank ? lines : lines.filter((line) => line.trim() !== '');
189
+ return { ...region, text: [...kept, last].join('\n') };
190
+ }
191
+ function count(text, part) {
192
+ let found = 0;
193
+ for (let at = text.indexOf(part); at >= 0; at = text.indexOf(part, at + part.length))
194
+ found += 1;
195
+ return found;
196
+ }
197
+ function nth(text, part, n) {
198
+ let at = text.indexOf(part);
199
+ for (let seen = 0; at >= 0 && seen < n; seen += 1)
200
+ at = text.indexOf(part, at + part.length);
201
+ return at >= 0 ? at : undefined;
202
+ }
203
+ /**
204
+ * A kept element as an HTML block Markdown reads as one: each child of a
205
+ * container on its own line, every line unindented and none blank, so nothing
206
+ * in it becomes a code block or ends the block early. Newlines in a `<pre>`
207
+ * are written as character references so its code keeps its indentation.
208
+ */
209
+ function htmlBlock(element) {
210
+ layOut(element);
211
+ return element.outerHTML
212
+ .split('\n')
213
+ .map((line) => line.trim())
214
+ .filter((line) => line !== '')
215
+ .join('\n')
216
+ .replaceAll(PRE_NEWLINE, '&#10;');
217
+ }
218
+ const CONTAINERS = [
219
+ 'BLOCKQUOTE',
220
+ 'DETAILS',
221
+ 'DIV',
222
+ 'DL',
223
+ 'FIGURE',
224
+ 'OL',
225
+ 'TABLE',
226
+ 'TBODY',
227
+ 'TFOOT',
228
+ 'THEAD',
229
+ 'UL',
230
+ ];
231
+ function layOut(node) {
232
+ if (node.nodeName === 'PRE') {
233
+ protectNewlines(node);
234
+ return;
235
+ }
236
+ const children = Array.from(node.childNodes);
237
+ const document = node.ownerDocument;
238
+ if (document !== null && CONTAINERS.includes(node.nodeName)) {
239
+ for (const child of children) {
240
+ if (child.nodeType === 1)
241
+ node.insertBefore(document.createTextNode('\n'), child);
242
+ }
243
+ node.appendChild(document.createTextNode('\n'));
244
+ }
245
+ for (const child of children)
246
+ layOut(child);
247
+ }
248
+ function protectNewlines(node) {
249
+ if (node.nodeType === 3)
250
+ node.nodeValue = (node.nodeValue ?? '').replaceAll('\n', PRE_NEWLINE);
251
+ for (const child of Array.from(node.childNodes))
252
+ protectNewlines(child);
253
+ }
254
+ //# sourceMappingURL=content.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content.js","sourceRoot":"","sources":["../../src/micropub/content.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { EditorForm } from '../admin/documents.ts';
2
+ import type { KeptProperties } from '../content/kept-properties.ts';
2
3
  import type { SyndicationTarget } from '../webmention/syndication.ts';
3
4
  /**
4
5
  * A Micropub create (TASK-164), whichever way it was encoded: the one
@@ -11,8 +12,8 @@ export interface CreateRequest {
11
12
  }
12
13
  /**
13
14
  * The properties a post can be created with, and the editor field each one
14
- * fills (decision-27). Anything else is refused by name rather than dropped,
15
- * so a client can tell its user what did not land.
15
+ * fills (decision-27). Anything else is kept privately, as it was sent, except
16
+ * an `mp-*` command the site does not carry out, which is refused by name.
16
17
  */
17
18
  declare const SINGLE_VALUED: {
18
19
  readonly name: 'title';
@@ -27,9 +28,11 @@ declare const SINGLE_VALUED: {
27
28
  declare const ACCEPTED_WITHOUT_EFFECT: {
28
29
  readonly 'p3k-content-type': (type: string) => string | undefined;
29
30
  };
30
- declare const MAPPED_ON_THEIR_OWN: readonly ['content', 'category', 'photo', 'location', 'post-status', 'mp-syndicate-to', 'visibility', 'read-of', 'read-status'];
31
+ declare const MAPPED_ON_THEIR_OWN: readonly ['content', 'category', 'photo', 'location', 'checkin', 'post-status', 'mp-syndicate-to', 'visibility', 'read-of', 'read-status'];
31
32
  export type Property = keyof typeof SINGLE_VALUED | keyof typeof ACCEPTED_WITHOUT_EFFECT | (typeof MAPPED_ON_THEIR_OWN)[number];
32
33
  export declare function propertyName(name: string): string;
34
+ export declare function keptPrivately(name: string): boolean;
35
+ export declare function keptRefusal(kept: KeptProperties): string | undefined;
33
36
  /**
34
37
  * A form-encoded or multipart create as a {@link CreateRequest}: `h=entry`
35
38
  * names the type, and `category[]=a&category[]=b` and `category=a&category=b`
@@ -63,6 +66,7 @@ export interface CreatedForm {
63
66
  readonly form: EditorForm;
64
67
  readonly draft: boolean;
65
68
  readonly uploads: readonly PhotoUpload[];
69
+ readonly keptProperties: KeptProperties;
66
70
  }
67
71
  /**
68
72
  * The editor form a create fills in, or every reason it cannot be, each
@@ -1 +1 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/micropub/create.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAYxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEtE;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,2EAA2E;IAC3E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,CAAC,CAAC;CAC9D;AAOD;;;;GAIG;AACH,QAAA,MAAM,aAAa;mBACX,OAAO;sBACJ,aAAa;4BACP,WAAW;0BACb,UAAU;wBACZ,QAAQ;4BACJ,YAAY;wBAChB,MAAM;wBACN,MAAM;CACkC,CAAC;AAEtD,QAAA,MAAM,uBAAuB;wCACA,MAAM;CAIiD,CAAC;AAErF,QAAA,MAAM,mBAAmB,YACvB,SAAS,EACT,UAAU,EACV,OAAO,EACP,UAAU,EACV,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,SAAS,EACT,aAAa,CACL,CAAC;AAEX,MAAM,MAAM,QAAQ,GAChB,MAAM,OAAO,aAAa,GAC1B,MAAM,OAAO,uBAAuB,GACpC,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAiBzC,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD;AAQD;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,aAAa,CAStD;AAED,0EAA0E;AAC1E,wBAAgB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,aAAa,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAiBlF;AAED,sFAAsF;AACtF,MAAM,WAAW,WAAW;IAC1B,4FAA4F;IAC5F,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;CACrB;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;IACnB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAChD;AAED,8EAA8E;AAC9E,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;CAC1C;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,UAAU,GACf,WAAW,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAiF7C"}
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/micropub/create.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAMxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAQpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAGtE;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,2EAA2E;IAC3E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,CAAC,CAAC;CAC9D;AAOD;;;;GAIG;AACH,QAAA,MAAM,aAAa;mBACX,OAAO;sBACJ,aAAa;4BACP,WAAW;0BACb,UAAU;wBACZ,QAAQ;4BACJ,YAAY;wBAChB,MAAM;wBACN,MAAM;CACkC,CAAC;AAEtD,QAAA,MAAM,uBAAuB;wCACA,MAAM;CAIiD,CAAC;AAErF,QAAA,MAAM,mBAAmB,YACvB,SAAS,EACT,UAAU,EACV,OAAO,EACP,UAAU,EACV,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,SAAS,EACT,aAAa,CACL,CAAC;AAEX,MAAM,MAAM,QAAQ,GAChB,MAAM,OAAO,aAAa,GAC1B,MAAM,OAAO,uBAAuB,GACpC,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAiBzC,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnD;AAID,wBAAgB,WAAW,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAapE;AAoBD;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,aAAa,CAStD;AAED,0EAA0E;AAC1E,wBAAgB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,aAAa,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAiBlF;AAED,sFAAsF;AACtF,MAAM,WAAW,WAAW;IAC1B,4FAA4F;IAC5F,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;CACrB;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;IACnB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAChD;AAED,8EAA8E;AAC9E,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IACzC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;CACzC;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,UAAU,GACf,WAAW,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAsG7C"}
@@ -2,16 +2,17 @@ import { blankForm, POST_KIND } from '../admin/documents.js';
2
2
  import { locationForm } from '../admin/location-field.js';
3
3
  import { BLANK_READ_OF_FORM } from '../admin/read-field.js';
4
4
  import { isWebUrl } from '../content/enclosure.js';
5
- import { locationFromMicropub } from '../content/location.js';
5
+ import { checkinFromMicropub, locationFromMicropub, postLocation } from '../content/location.js';
6
6
  import { isReadStatus, READ_STATUSES } from '../content/read.js';
7
7
  import { isVisibility } from '../content/visibility.js';
8
8
  import { normalizeBody } from '../content/writer.js';
9
9
  import { UPLOAD_ASSET_PREFIX } from '../web/assets.js';
10
10
  import { absoluteUrl } from '../web/negotiate.js';
11
+ import { cleanMarkdown, markdownFromHtml } from './content.js';
11
12
  /**
12
13
  * The properties a post can be created with, and the editor field each one
13
- * fills (decision-27). Anything else is refused by name rather than dropped,
14
- * so a client can tell its user what did not land.
14
+ * fills (decision-27). Anything else is kept privately, as it was sent, except
15
+ * an `mp-*` command the site does not carry out, which is refused by name.
15
16
  */
16
17
  const SINGLE_VALUED = {
17
18
  name: 'title',
@@ -33,6 +34,7 @@ const MAPPED_ON_THEIR_OWN = [
33
34
  'category',
34
35
  'photo',
35
36
  'location',
37
+ 'checkin',
36
38
  'post-status',
37
39
  'mp-syndicate-to',
38
40
  'visibility',
@@ -55,6 +57,35 @@ const LEGACY_NAMES = new Map([
55
57
  export function propertyName(name) {
56
58
  return LEGACY_NAMES.get(name) ?? name;
57
59
  }
60
+ export function keptPrivately(name) {
61
+ return !PROPERTIES.has(name) && !name.startsWith('mp-');
62
+ }
63
+ const KEPT_PROPERTIES_LIMIT_BYTES = 16 * 1024;
64
+ export function keptRefusal(kept) {
65
+ const names = Object.keys(kept);
66
+ const files = Object.entries(kept)
67
+ .filter(([, values]) => values.some((value) => value instanceof File))
68
+ .map(([name]) => name);
69
+ if (files.length > 0) {
70
+ return `${files.join(', ')} is not understood here and is not a photo, so a file cannot be sent as it.`;
71
+ }
72
+ const size = Buffer.byteLength(JSON.stringify(kept));
73
+ if (size > KEPT_PROPERTIES_LIMIT_BYTES) {
74
+ return `This endpoint keeps up to ${String(KEPT_PROPERTIES_LIMIT_BYTES / 1024)} KiB of properties it does not understand on a post, and ${names.join(', ')} come to ${String(Math.ceil(size / 1024))} KiB.`;
75
+ }
76
+ return undefined;
77
+ }
78
+ const PUBLISHABLE = [
79
+ 'content',
80
+ 'name',
81
+ 'photo',
82
+ 'in-reply-to',
83
+ 'like-of',
84
+ 'repost-of',
85
+ 'bookmark-of',
86
+ 'read-of',
87
+ 'checkin',
88
+ ];
58
89
  /** What `post-status` may say, and whether it makes a draft. */
59
90
  const POST_STATUSES = { published: false, draft: true };
60
91
  /** The form fields Micropub sets aside from the post's own properties. */
@@ -113,9 +144,17 @@ export function createForm(request, site) {
113
144
  properties.set(property, [...(properties.get(property) ?? []), ...values]);
114
145
  }
115
146
  const errors = [];
116
- const unknown = [...properties.keys()].filter((name) => !PROPERTIES.has(name));
117
- if (unknown.length > 0) {
118
- errors.push(`This endpoint does not understand ${unknown.join(', ')}.`);
147
+ const commands = [...properties.keys()].filter((name) => name.startsWith('mp-') && !PROPERTIES.has(name));
148
+ if (commands.length > 0) {
149
+ errors.push(`This endpoint does not support ${commands.join(', ')}.`);
150
+ }
151
+ const keptProperties = Object.fromEntries([...properties].filter(([name, values]) => keptPrivately(name) && values.length > 0));
152
+ const kept = Object.keys(keptProperties);
153
+ const refused = keptRefusal(keptProperties);
154
+ if (refused !== undefined)
155
+ errors.push(refused);
156
+ if (kept.length > 0 && !PUBLISHABLE.some((name) => (properties.get(name) ?? []).length > 0)) {
157
+ errors.push(`This endpoint does not understand ${kept.join(', ')}, and the post has nothing else to publish.`);
119
158
  }
120
159
  const text = (name) => {
121
160
  const values = properties.get(name) ?? [];
@@ -134,7 +173,7 @@ export function createForm(request, site) {
134
173
  ...blankForm(POST_KIND, timezone, now),
135
174
  date: '',
136
175
  author,
137
- body: normalizeBody(content(properties.get('content') ?? [], errors)),
176
+ body: content(properties.get('content') ?? [], errors),
138
177
  tags: categories(properties.get('category') ?? [], errors),
139
178
  syndicateTo: syndicateTo(properties.get('mp-syndicate-to') ?? [], site.targets, errors),
140
179
  };
@@ -151,7 +190,7 @@ export function createForm(request, site) {
151
190
  }
152
191
  return photo;
153
192
  });
154
- form.location = location(properties.get('location') ?? [], errors);
193
+ form.location = locationForm(checkinOverLocation(parsedLocation('location', properties.get('location') ?? [], locationFromMicropub, errors), parsedLocation('checkin', properties.get('checkin') ?? [], checkinFromMicropub, errors)));
155
194
  form.readOf = readOf(properties.get('read-of') ?? [], errors);
156
195
  form.readStatus = text('read-status');
157
196
  if (form.readStatus !== '' && !isReadStatus(form.readStatus)) {
@@ -160,14 +199,15 @@ export function createForm(request, site) {
160
199
  for (const [property, field] of Object.entries(SINGLE_VALUED)) {
161
200
  form[field] = text(property);
162
201
  }
163
- const visibility = text('visibility');
202
+ const sentVisibility = text('visibility');
203
+ const visibility = sentVisibility.toLowerCase();
164
204
  if (isVisibility(visibility))
165
205
  form.visibility = visibility;
166
206
  else if (visibility === 'private') {
167
207
  errors.push('This site does not publish private posts; visibility is public or unlisted.');
168
208
  }
169
209
  else if (visibility !== '') {
170
- errors.push(`visibility is public or unlisted, not ${visibility}.`);
210
+ errors.push(`visibility is public or unlisted, not ${sentVisibility}.`);
171
211
  }
172
212
  for (const [property, refused] of Object.entries(ACCEPTED_WITHOUT_EFFECT)) {
173
213
  const value = text(property);
@@ -180,7 +220,9 @@ export function createForm(request, site) {
180
220
  if (draft === undefined) {
181
221
  errors.push(`post-status is published or draft, not ${status}.`);
182
222
  }
183
- return errors.length > 0 || draft === undefined ? { errors } : { form, draft, uploads };
223
+ return errors.length > 0 || draft === undefined
224
+ ? { errors }
225
+ : { form, draft, uploads, keptProperties };
184
226
  }
185
227
  /**
186
228
  * A photo given as a URL or as `{ value, alt }`, as the editor row it fills.
@@ -204,18 +246,23 @@ function photoRow(value, baseUrl) {
204
246
  alt: alt.trim(),
205
247
  };
206
248
  }
207
- function location(values, errors) {
249
+ function parsedLocation(name, values, parse, errors) {
208
250
  if (values.length > 1)
209
- errors.push('location takes one value.');
251
+ errors.push(`${name} takes one value.`);
210
252
  const [value] = values;
211
253
  if (value === undefined)
212
- return locationForm(undefined);
213
- const parsed = locationFromMicropub(value);
254
+ return undefined;
255
+ const parsed = parse(value);
214
256
  if ('error' in parsed) {
215
257
  errors.push(parsed.error);
216
- return locationForm(undefined);
258
+ return undefined;
217
259
  }
218
- return locationForm(parsed);
260
+ return parsed;
261
+ }
262
+ function checkinOverLocation(location, checkin) {
263
+ if (location === undefined || checkin === undefined)
264
+ return checkin ?? location;
265
+ return postLocation({ ...location, ...checkin, geo: checkin.geo ?? location.geo });
219
266
  }
220
267
  const READ_OF_PROPERTIES = ['name', 'author', 'uid', 'url'];
221
268
  function readOf(values, errors) {
@@ -248,19 +295,23 @@ function readOf(values, errors) {
248
295
  };
249
296
  return { name: field('name'), author: field('author'), uid: field('uid'), url: field('url') };
250
297
  }
251
- /** The body: plain text as the Markdown it is written in, or HTML as it came. */
252
298
  function content(values, errors) {
253
299
  if (values.length > 1)
254
300
  errors.push('content takes one value.');
255
301
  const [value] = values;
256
302
  if (value === undefined)
257
303
  return '';
258
- if (typeof value === 'string')
259
- return value;
260
- if (isHtmlContent(value))
261
- return value.html;
262
- errors.push('content has to be text or { "html": "…" }.');
263
- return '';
304
+ if (typeof value !== 'string' && !isHtmlContent(value)) {
305
+ errors.push('content has to be text or { "html": "…" }.');
306
+ return '';
307
+ }
308
+ const cleaned = typeof value === 'string' ? cleanMarkdown(value) : markdownFromHtml(value.html);
309
+ const body = cleaned === undefined ? undefined : normalizeBody(cleaned);
310
+ if (body === undefined || cleanMarkdown(body) !== body) {
311
+ errors.push('content has HTML the site cannot clean.');
312
+ return '';
313
+ }
314
+ return body;
264
315
  }
265
316
  function isHtmlContent(value) {
266
317
  return (typeof value === 'object' &&
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/micropub/create.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/micropub/create.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,13 @@
1
1
  import type { Hono, MiddlewareHandler } from 'hono';
2
- import type { BearerEnv } from '../indieauth/bearer.ts';
2
+ import type { BearerEnv, Scopes } from '../indieauth/bearer.ts';
3
3
  import type { GeekityEnv } from '../env.ts';
4
- import type { Scope } from '../indieauth/request.ts';
5
4
  /**
6
5
  * The bearer guard for a token bound to this site, the resource its protected
7
6
  * resource metadata names, or bound to none, as Micropub clients' tokens are
8
- * (decision-24), and granted `scope` when one is named. Built per request
9
- * because the base URL is a setting.
7
+ * (decision-24), and granted any one of `scopes` when they are named. Built per
8
+ * request because the base URL is a setting.
10
9
  */
11
- export declare function requireSiteToken(scope?: Scope): MiddlewareHandler<BearerEnv>;
10
+ export declare function requireSiteToken(scopes?: Scopes): MiddlewareHandler<BearerEnv>;
12
11
  /**
13
12
  * The Micropub endpoint: the queries a client asks before it posts (TASK-163)
14
13
  * and `q=source` (TASK-167), which any live token of this site's may ask
@@ -1 +1 @@
1
- {"version":3,"file":"endpoint.d.ts","sourceRoot":"","sources":["../../src/micropub/endpoint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,IAAI,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAyB7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AA2LrD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAa5E;AA2ND;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAmCzD"}
1
+ {"version":3,"file":"endpoint.d.ts","sourceRoot":"","sources":["../../src/micropub/endpoint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,IAAI,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AA4B7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAgM5C;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAc9E;AA0OD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAsCzD"}