@geekity/cms 0.16.0 → 0.18.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 (268) hide show
  1. package/README.md +162 -49
  2. package/admin/pages/documents/editor.njk +63 -0
  3. package/admin/pages/documents/list.njk +2 -0
  4. package/admin/pages/indieauth/consent.njk +4 -0
  5. package/admin/pages/settings/privacy.njk +37 -0
  6. package/admin/pages/users/activity-entry.njk +58 -0
  7. package/admin/pages/users/activity.njk +66 -0
  8. package/admin/pages/users/apps.njk +109 -3
  9. package/dist/admin/documents.d.ts +29 -1
  10. package/dist/admin/documents.d.ts.map +1 -1
  11. package/dist/admin/documents.js +88 -6
  12. package/dist/admin/documents.js.map +1 -1
  13. package/dist/admin/index.d.ts +1 -0
  14. package/dist/admin/index.d.ts.map +1 -1
  15. package/dist/admin/index.js +1 -0
  16. package/dist/admin/index.js.map +1 -1
  17. package/dist/admin/location-field.d.ts +26 -0
  18. package/dist/admin/location-field.d.ts.map +1 -0
  19. package/dist/admin/location-field.js +90 -0
  20. package/dist/admin/location-field.js.map +1 -0
  21. package/dist/admin/menu.d.ts.map +1 -1
  22. package/dist/admin/menu.js +5 -1
  23. package/dist/admin/menu.js.map +1 -1
  24. package/dist/admin/preview.d.ts.map +1 -1
  25. package/dist/admin/preview.js +18 -5
  26. package/dist/admin/preview.js.map +1 -1
  27. package/dist/admin/read-field.d.ts +23 -0
  28. package/dist/admin/read-field.d.ts.map +1 -0
  29. package/dist/admin/read-field.js +53 -0
  30. package/dist/admin/read-field.js.map +1 -0
  31. package/dist/admin/routes.d.ts.map +1 -1
  32. package/dist/admin/routes.js +4 -0
  33. package/dist/admin/routes.js.map +1 -1
  34. package/dist/admin/settings-page.d.ts +3 -3
  35. package/dist/admin/settings-page.js +2 -2
  36. package/dist/admin/settings-pages.d.ts +2 -2
  37. package/dist/admin/settings-pages.d.ts.map +1 -1
  38. package/dist/admin/settings-pages.js +4 -2
  39. package/dist/admin/settings-pages.js.map +1 -1
  40. package/dist/admin/settings-privacy.d.ts +3 -0
  41. package/dist/admin/settings-privacy.d.ts.map +1 -0
  42. package/dist/admin/settings-privacy.js +10 -0
  43. package/dist/admin/settings-privacy.js.map +1 -0
  44. package/dist/admin/settings-reading.js +2 -2
  45. package/dist/admin/settings-reading.js.map +1 -1
  46. package/dist/admin/settings.d.ts +18 -2
  47. package/dist/admin/settings.d.ts.map +1 -1
  48. package/dist/admin/settings.js +27 -0
  49. package/dist/admin/settings.js.map +1 -1
  50. package/dist/admin/templates.d.ts +3 -0
  51. package/dist/admin/templates.d.ts.map +1 -1
  52. package/dist/admin/templates.js +3 -0
  53. package/dist/admin/templates.js.map +1 -1
  54. package/dist/admin/uploads.d.ts.map +1 -1
  55. package/dist/admin/uploads.js +14 -1
  56. package/dist/admin/uploads.js.map +1 -1
  57. package/dist/admin/users.d.ts +8 -0
  58. package/dist/admin/users.d.ts.map +1 -1
  59. package/dist/admin/users.js +8 -0
  60. package/dist/admin/users.js.map +1 -1
  61. package/dist/cli.d.ts +1 -1
  62. package/dist/cli.d.ts.map +1 -1
  63. package/dist/cli.js +34 -0
  64. package/dist/cli.js.map +1 -1
  65. package/dist/comments/routes.js +2 -2
  66. package/dist/comments/routes.js.map +1 -1
  67. package/dist/contact/routes.js +2 -2
  68. package/dist/contact/routes.js.map +1 -1
  69. package/dist/content/location.d.ts +58 -0
  70. package/dist/content/location.d.ts.map +1 -0
  71. package/dist/content/location.js +208 -0
  72. package/dist/content/location.js.map +1 -0
  73. package/dist/content/locations.d.ts +9 -0
  74. package/dist/content/locations.d.ts.map +1 -0
  75. package/dist/content/locations.js +82 -0
  76. package/dist/content/locations.js.map +1 -0
  77. package/dist/content/metadata/gif.d.ts +3 -0
  78. package/dist/content/metadata/gif.d.ts.map +1 -0
  79. package/dist/content/metadata/gif.js +65 -0
  80. package/dist/content/metadata/gif.js.map +1 -0
  81. package/dist/content/metadata/index.d.ts +6 -0
  82. package/dist/content/metadata/index.d.ts.map +1 -0
  83. package/dist/content/metadata/index.js +24 -0
  84. package/dist/content/metadata/index.js.map +1 -0
  85. package/dist/content/metadata/isobmff.d.ts +22 -0
  86. package/dist/content/metadata/isobmff.d.ts.map +1 -0
  87. package/dist/content/metadata/isobmff.js +215 -0
  88. package/dist/content/metadata/isobmff.js.map +1 -0
  89. package/dist/content/metadata/jpeg.d.ts +3 -0
  90. package/dist/content/metadata/jpeg.d.ts.map +1 -0
  91. package/dist/content/metadata/jpeg.js +117 -0
  92. package/dist/content/metadata/jpeg.js.map +1 -0
  93. package/dist/content/metadata/png.d.ts +3 -0
  94. package/dist/content/metadata/png.d.ts.map +1 -0
  95. package/dist/content/metadata/png.js +74 -0
  96. package/dist/content/metadata/png.js.map +1 -0
  97. package/dist/content/metadata/shared.d.ts +17 -0
  98. package/dist/content/metadata/shared.d.ts.map +1 -0
  99. package/dist/content/metadata/shared.js +42 -0
  100. package/dist/content/metadata/shared.js.map +1 -0
  101. package/dist/content/metadata/sweep.d.ts +14 -0
  102. package/dist/content/metadata/sweep.d.ts.map +1 -0
  103. package/dist/content/metadata/sweep.js +54 -0
  104. package/dist/content/metadata/sweep.js.map +1 -0
  105. package/dist/content/metadata/tiff.d.ts +7 -0
  106. package/dist/content/metadata/tiff.d.ts.map +1 -0
  107. package/dist/content/metadata/tiff.js +56 -0
  108. package/dist/content/metadata/tiff.js.map +1 -0
  109. package/dist/content/metadata/webp.d.ts +3 -0
  110. package/dist/content/metadata/webp.d.ts.map +1 -0
  111. package/dist/content/metadata/webp.js +67 -0
  112. package/dist/content/metadata/webp.js.map +1 -0
  113. package/dist/content/post-type.d.ts +4 -2
  114. package/dist/content/post-type.d.ts.map +1 -1
  115. package/dist/content/post-type.js +9 -1
  116. package/dist/content/post-type.js.map +1 -1
  117. package/dist/content/read.d.ts +22 -0
  118. package/dist/content/read.d.ts.map +1 -0
  119. package/dist/content/read.js +67 -0
  120. package/dist/content/read.js.map +1 -0
  121. package/dist/content/store.d.ts +4 -4
  122. package/dist/content/store.d.ts.map +1 -1
  123. package/dist/content/store.js +19 -39
  124. package/dist/content/store.js.map +1 -1
  125. package/dist/content/sync.d.ts.map +1 -1
  126. package/dist/content/sync.js +3 -13
  127. package/dist/content/sync.js.map +1 -1
  128. package/dist/content/visibility.d.ts +11 -0
  129. package/dist/content/visibility.d.ts.map +1 -0
  130. package/dist/content/visibility.js +14 -0
  131. package/dist/content/visibility.js.map +1 -0
  132. package/dist/env.d.ts +7 -0
  133. package/dist/env.d.ts.map +1 -1
  134. package/dist/federation/article.d.ts.map +1 -1
  135. package/dist/federation/article.js +41 -14
  136. package/dist/federation/article.js.map +1 -1
  137. package/dist/federation/delivery.d.ts +3 -1
  138. package/dist/federation/delivery.d.ts.map +1 -1
  139. package/dist/federation/delivery.js +6 -5
  140. package/dist/federation/delivery.js.map +1 -1
  141. package/dist/federation/mount.d.ts.map +1 -1
  142. package/dist/federation/mount.js +3 -1
  143. package/dist/federation/mount.js.map +1 -1
  144. package/dist/index.d.ts +1 -1
  145. package/dist/index.d.ts.map +1 -1
  146. package/dist/index.js +7 -1
  147. package/dist/index.js.map +1 -1
  148. package/dist/indexnow.js +2 -2
  149. package/dist/indexnow.js.map +1 -1
  150. package/dist/indieauth/activity-log.d.ts +114 -0
  151. package/dist/indieauth/activity-log.d.ts.map +1 -0
  152. package/dist/indieauth/activity-log.js +335 -0
  153. package/dist/indieauth/activity-log.js.map +1 -0
  154. package/dist/indieauth/app-activity.d.ts +14 -0
  155. package/dist/indieauth/app-activity.d.ts.map +1 -0
  156. package/dist/indieauth/app-activity.js +110 -0
  157. package/dist/indieauth/app-activity.js.map +1 -0
  158. package/dist/indieauth/bearer.d.ts.map +1 -1
  159. package/dist/indieauth/bearer.js +20 -18
  160. package/dist/indieauth/bearer.js.map +1 -1
  161. package/dist/indieauth/client-id.d.ts +10 -0
  162. package/dist/indieauth/client-id.d.ts.map +1 -0
  163. package/dist/indieauth/client-id.js +30 -0
  164. package/dist/indieauth/client-id.js.map +1 -0
  165. package/dist/indieauth/connected-apps.d.ts +4 -0
  166. package/dist/indieauth/connected-apps.d.ts.map +1 -1
  167. package/dist/indieauth/connected-apps.js +149 -20
  168. package/dist/indieauth/connected-apps.js.map +1 -1
  169. package/dist/indieauth/consent.d.ts.map +1 -1
  170. package/dist/indieauth/consent.js +10 -3
  171. package/dist/indieauth/consent.js.map +1 -1
  172. package/dist/indieauth/discovery.d.ts +4 -3
  173. package/dist/indieauth/discovery.d.ts.map +1 -1
  174. package/dist/indieauth/discovery.js +7 -3
  175. package/dist/indieauth/discovery.js.map +1 -1
  176. package/dist/indieauth/grants.d.ts +2 -7
  177. package/dist/indieauth/grants.d.ts.map +1 -1
  178. package/dist/indieauth/grants.js.map +1 -1
  179. package/dist/indieauth/redeem.d.ts.map +1 -1
  180. package/dist/indieauth/redeem.js +10 -5
  181. package/dist/indieauth/redeem.js.map +1 -1
  182. package/dist/indieauth/request.d.ts +8 -4
  183. package/dist/indieauth/request.d.ts.map +1 -1
  184. package/dist/indieauth/request.js +29 -30
  185. package/dist/indieauth/request.js.map +1 -1
  186. package/dist/indieauth/token.d.ts.map +1 -1
  187. package/dist/indieauth/token.js +4 -2
  188. package/dist/indieauth/token.js.map +1 -1
  189. package/dist/indieauth/tokens.d.ts +28 -7
  190. package/dist/indieauth/tokens.d.ts.map +1 -1
  191. package/dist/indieauth/tokens.js +26 -5
  192. package/dist/indieauth/tokens.js.map +1 -1
  193. package/dist/micropub/create.d.ts +22 -0
  194. package/dist/micropub/create.d.ts.map +1 -1
  195. package/dist/micropub/create.js +107 -8
  196. package/dist/micropub/create.js.map +1 -1
  197. package/dist/micropub/endpoint.d.ts.map +1 -1
  198. package/dist/micropub/endpoint.js +74 -22
  199. package/dist/micropub/endpoint.js.map +1 -1
  200. package/dist/micropub/media.d.ts +4 -2
  201. package/dist/micropub/media.d.ts.map +1 -1
  202. package/dist/micropub/media.js +43 -38
  203. package/dist/micropub/media.js.map +1 -1
  204. package/dist/micropub/update.d.ts +6 -2
  205. package/dist/micropub/update.d.ts.map +1 -1
  206. package/dist/micropub/update.js +31 -3
  207. package/dist/micropub/update.js.map +1 -1
  208. package/dist/notify.d.ts.map +1 -1
  209. package/dist/notify.js +2 -5
  210. package/dist/notify.js.map +1 -1
  211. package/dist/web/absolute-urls.d.ts +2 -0
  212. package/dist/web/absolute-urls.d.ts.map +1 -0
  213. package/dist/web/absolute-urls.js +22 -0
  214. package/dist/web/absolute-urls.js.map +1 -0
  215. package/dist/web/context.d.ts +29 -1
  216. package/dist/web/context.d.ts.map +1 -1
  217. package/dist/web/context.js +33 -0
  218. package/dist/web/context.js.map +1 -1
  219. package/dist/web/conversation.d.ts.map +1 -1
  220. package/dist/web/conversation.js +5 -4
  221. package/dist/web/conversation.js.map +1 -1
  222. package/dist/web/documents.d.ts +19 -10
  223. package/dist/web/documents.d.ts.map +1 -1
  224. package/dist/web/documents.js +28 -13
  225. package/dist/web/documents.js.map +1 -1
  226. package/dist/web/feed-item.d.ts +25 -6
  227. package/dist/web/feed-item.d.ts.map +1 -1
  228. package/dist/web/feed-item.js +31 -7
  229. package/dist/web/feed-item.js.map +1 -1
  230. package/dist/web/feed-json.d.ts +3 -1
  231. package/dist/web/feed-json.d.ts.map +1 -1
  232. package/dist/web/feed-json.js +2 -0
  233. package/dist/web/feed-json.js.map +1 -1
  234. package/dist/web/feed-source.d.ts +6 -0
  235. package/dist/web/feed-source.d.ts.map +1 -1
  236. package/dist/web/feed-source.js.map +1 -1
  237. package/dist/web/feeds.d.ts.map +1 -1
  238. package/dist/web/feeds.js +2 -0
  239. package/dist/web/feeds.js.map +1 -1
  240. package/dist/web/html-attributes.d.ts +3 -0
  241. package/dist/web/html-attributes.d.ts.map +1 -0
  242. package/dist/web/html-attributes.js +15 -0
  243. package/dist/web/html-attributes.js.map +1 -0
  244. package/dist/web/index.d.ts +1 -1
  245. package/dist/web/index.d.ts.map +1 -1
  246. package/dist/web/index.js +1 -1
  247. package/dist/web/index.js.map +1 -1
  248. package/dist/web/negotiate.d.ts +2 -0
  249. package/dist/web/negotiate.d.ts.map +1 -1
  250. package/dist/web/negotiate.js +2 -1
  251. package/dist/web/negotiate.js.map +1 -1
  252. package/dist/web/render.d.ts +8 -0
  253. package/dist/web/render.d.ts.map +1 -1
  254. package/dist/web/render.js +5 -1
  255. package/dist/web/render.js.map +1 -1
  256. package/dist/web/routes.d.ts.map +1 -1
  257. package/dist/web/routes.js +14 -10
  258. package/dist/web/routes.js.map +1 -1
  259. package/dist/webmention/service.d.ts.map +1 -1
  260. package/dist/webmention/service.js +7 -2
  261. package/dist/webmention/service.js.map +1 -1
  262. package/package.json +1 -1
  263. package/themes/default/README.md +15 -0
  264. package/themes/default/layouts/base.njk +2 -0
  265. package/themes/default/layouts/post.njk +7 -1
  266. package/themes/default/partials/location.njk +12 -0
  267. package/themes/default/partials/post-list.njk +2 -0
  268. package/themes/default/partials/read.njk +5 -0
@@ -1,5 +1,10 @@
1
1
  import { blankForm, POST_KIND } from '../admin/documents.js';
2
+ import { locationForm } from '../admin/location-field.js';
3
+ import { BLANK_READ_OF_FORM } from '../admin/read-field.js';
2
4
  import { isWebUrl } from '../content/enclosure.js';
5
+ import { locationFromMicropub } from '../content/location.js';
6
+ import { isReadStatus, READ_STATUSES } from '../content/read.js';
7
+ import { isVisibility } from '../content/visibility.js';
3
8
  import { normalizeBody } from '../content/writer.js';
4
9
  import { UPLOAD_ASSET_PREFIX } from '../web/assets.js';
5
10
  import { absoluteUrl } from '../web/negotiate.js';
@@ -18,14 +23,38 @@ const SINGLE_VALUED = {
18
23
  published: 'date',
19
24
  'mp-slug': 'slug',
20
25
  };
21
- const PROPERTIES = new Set([
22
- ...Object.keys(SINGLE_VALUED),
26
+ const ACCEPTED_WITHOUT_EFFECT = {
27
+ 'p3k-content-type': (type) => type === 'text/plain' || type === 'text/markdown'
28
+ ? undefined
29
+ : `p3k-content-type is text/plain or text/markdown, not ${type}.`,
30
+ };
31
+ const MAPPED_ON_THEIR_OWN = [
23
32
  'content',
24
33
  'category',
25
34
  'photo',
35
+ 'location',
26
36
  'post-status',
27
37
  'mp-syndicate-to',
38
+ 'visibility',
39
+ 'read-of',
40
+ 'read-status',
41
+ ];
42
+ const PROPERTIES = new Set([
43
+ ...Object.keys(SINGLE_VALUED),
44
+ ...Object.keys(ACCEPTED_WITHOUT_EFFECT),
45
+ ...MAPPED_ON_THEIR_OWN,
46
+ ]);
47
+ /**
48
+ * The names Quill accounts created before its migrations 0002 and 0004 send,
49
+ * and the property each one is.
50
+ */
51
+ const LEGACY_NAMES = new Map([
52
+ ['slug', 'mp-slug'],
53
+ ['syndicate-to', 'mp-syndicate-to'],
28
54
  ]);
55
+ export function propertyName(name) {
56
+ return LEGACY_NAMES.get(name) ?? name;
57
+ }
29
58
  /** What `post-status` may say, and whether it makes a draft. */
30
59
  const POST_STATUSES = { published: false, draft: true };
31
60
  /** The form fields Micropub sets aside from the post's own properties. */
@@ -78,13 +107,18 @@ export function createForm(request, site) {
78
107
  const named = request.type === '' ? 'no type' : request.type;
79
108
  return { errors: [`This endpoint creates h-entry posts, not ${named}.`] };
80
109
  }
110
+ const properties = new Map();
111
+ for (const [name, values] of request.properties) {
112
+ const property = propertyName(name);
113
+ properties.set(property, [...(properties.get(property) ?? []), ...values]);
114
+ }
81
115
  const errors = [];
82
- const unknown = [...request.properties.keys()].filter((name) => !PROPERTIES.has(name));
116
+ const unknown = [...properties.keys()].filter((name) => !PROPERTIES.has(name));
83
117
  if (unknown.length > 0) {
84
118
  errors.push(`This endpoint does not understand ${unknown.join(', ')}.`);
85
119
  }
86
120
  const text = (name) => {
87
- const values = request.properties.get(name) ?? [];
121
+ const values = properties.get(name) ?? [];
88
122
  if (values.length > 1)
89
123
  errors.push(`${name} takes one value.`);
90
124
  const [value] = values;
@@ -100,12 +134,12 @@ export function createForm(request, site) {
100
134
  ...blankForm(POST_KIND, timezone, now),
101
135
  date: '',
102
136
  author,
103
- body: normalizeBody(content(request.properties.get('content') ?? [], errors)),
104
- tags: categories(request.properties.get('category') ?? [], errors),
105
- syndicateTo: syndicateTo(request.properties.get('mp-syndicate-to') ?? [], site.targets, errors),
137
+ body: normalizeBody(content(properties.get('content') ?? [], errors)),
138
+ tags: categories(properties.get('category') ?? [], errors),
139
+ syndicateTo: syndicateTo(properties.get('mp-syndicate-to') ?? [], site.targets, errors),
106
140
  };
107
141
  const uploads = [];
108
- form.photos = (request.properties.get('photo') ?? []).map((value, row) => {
142
+ form.photos = (properties.get('photo') ?? []).map((value, row) => {
109
143
  if (value instanceof File) {
110
144
  uploads.push({ row, file: value });
111
145
  return { url: '', alt: '' };
@@ -117,9 +151,30 @@ export function createForm(request, site) {
117
151
  }
118
152
  return photo;
119
153
  });
154
+ form.location = location(properties.get('location') ?? [], errors);
155
+ form.readOf = readOf(properties.get('read-of') ?? [], errors);
156
+ form.readStatus = text('read-status');
157
+ if (form.readStatus !== '' && !isReadStatus(form.readStatus)) {
158
+ errors.push(`read-status is ${READ_STATUSES.join(', ')}, not ${form.readStatus}.`);
159
+ }
120
160
  for (const [property, field] of Object.entries(SINGLE_VALUED)) {
121
161
  form[field] = text(property);
122
162
  }
163
+ const visibility = text('visibility');
164
+ if (isVisibility(visibility))
165
+ form.visibility = visibility;
166
+ else if (visibility === 'private') {
167
+ errors.push('This site does not publish private posts; visibility is public or unlisted.');
168
+ }
169
+ else if (visibility !== '') {
170
+ errors.push(`visibility is public or unlisted, not ${visibility}.`);
171
+ }
172
+ for (const [property, refused] of Object.entries(ACCEPTED_WITHOUT_EFFECT)) {
173
+ const value = text(property);
174
+ const reason = value === '' ? undefined : refused(value);
175
+ if (reason !== undefined)
176
+ errors.push(reason);
177
+ }
123
178
  const status = text('post-status');
124
179
  const draft = status === '' ? false : POST_STATUSES[status];
125
180
  if (draft === undefined) {
@@ -149,6 +204,50 @@ function photoRow(value, baseUrl) {
149
204
  alt: alt.trim(),
150
205
  };
151
206
  }
207
+ function location(values, errors) {
208
+ if (values.length > 1)
209
+ errors.push('location takes one value.');
210
+ const [value] = values;
211
+ if (value === undefined)
212
+ return locationForm(undefined);
213
+ const parsed = locationFromMicropub(value);
214
+ if ('error' in parsed) {
215
+ errors.push(parsed.error);
216
+ return locationForm(undefined);
217
+ }
218
+ return locationForm(parsed);
219
+ }
220
+ const READ_OF_PROPERTIES = ['name', 'author', 'uid', 'url'];
221
+ function readOf(values, errors) {
222
+ if (values.length > 1)
223
+ errors.push('read-of takes one value.');
224
+ const [value] = values;
225
+ if (value === undefined)
226
+ return BLANK_READ_OF_FORM;
227
+ const { type, properties } = typeof value === 'object' && value !== null ? value : {};
228
+ if (!Array.isArray(type) ||
229
+ !type.includes('h-cite') ||
230
+ typeof properties !== 'object' ||
231
+ properties === null) {
232
+ errors.push('read-of is an h-cite, { "type": ["h-cite"], "properties": { "name": ["…"] } }.');
233
+ return BLANK_READ_OF_FORM;
234
+ }
235
+ const given = properties;
236
+ const unknown = Object.keys(given).filter((name) => !READ_OF_PROPERTIES.includes(name));
237
+ if (unknown.length > 0)
238
+ errors.push(`read-of does not understand ${unknown.join(', ')}.`);
239
+ const field = (name) => {
240
+ const values = given[name] ?? [];
241
+ if (!Array.isArray(values) ||
242
+ values.length > 1 ||
243
+ !values.every((v) => typeof v === 'string')) {
244
+ errors.push(`read-of ${name} takes one text value.`);
245
+ return '';
246
+ }
247
+ return (values[0] ?? '').trim();
248
+ };
249
+ return { name: field('name'), author: field('author'), uid: field('uid'), url: field('url') };
250
+ }
152
251
  /** The body: plain text as the Markdown it is written in, or HTML as it came. */
153
252
  function content(values, errors) {
154
253
  if (values.length > 1)
@@ -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 +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;AAe7D,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;AAgJrD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAM5E;AAqND;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAkCzD"}
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,9 +1,12 @@
1
1
  import { listUsers } from '../admin/accounts.js';
2
2
  import { moveDocumentFile, POST_KIND, writeDocument } from '../admin/documents.js';
3
3
  import { deleteUpload } from '../admin/media.js';
4
- import { refusedUpload, storeUpload } from '../admin/uploads.js';
4
+ import { largestUploadLimit, refusedUpload, storeUpload, tooLargeMessage, UPLOAD_ENVELOPE_BYTES, } from '../admin/uploads.js';
5
5
  import { readSiteSettings } from '../admin/settings.js';
6
+ import { postLocations } from '../content/locations.js';
6
7
  import { isTrashedPath } from '../content/store.js';
8
+ import { VISIBILITIES } from '../content/visibility.js';
9
+ import { logMicropubRequest } from '../indieauth/activity-log.js';
7
10
  import { insufficientScope, requireBearer } from '../indieauth/bearer.js';
8
11
  import { MICROPUB_MEDIA_PATH, MICROPUB_PATH, siteBaseUrl } from '../indieauth/discovery.js';
9
12
  import { absoluteUrl } from '../web/negotiate.js';
@@ -13,18 +16,43 @@ import { userForAuthor } from '../web/authors.js';
13
16
  import { syndicationTargetsReader } from '../webmention/syndication.js';
14
17
  import { createForm, fromForm, fromJson } from './create.js';
15
18
  import { parseChanges, sourceProperties, updateForm } from './update.js';
19
+ const ANY_TYPE = [
20
+ 'content',
21
+ 'summary',
22
+ 'category',
23
+ 'location',
24
+ 'published',
25
+ 'post-status',
26
+ 'visibility',
27
+ 'mp-slug',
28
+ 'mp-syndicate-to',
29
+ ];
30
+ /** A note has no name: a name its text does not open with makes it an article. */
31
+ const NAMED = ['name', ...ANY_TYPE];
16
32
  /**
17
- * The name a client shows for each post type the site accepts, in the order
18
- * it offers them. A record, so a new {@link PostType} cannot go unoffered.
33
+ * Each post type the site accepts, in the order a client offers them: the
34
+ * name it shows, the properties it offers, and those Post Type Discovery
35
+ * needs to call a post that type. Another type's own property is not offered,
36
+ * since it would make the post that type instead. A record, so a new
37
+ * {@link PostType} cannot go unoffered.
19
38
  */
20
- const POST_TYPE_NAMES = {
21
- note: 'Note',
22
- article: 'Article',
23
- reply: 'Reply',
24
- photo: 'Photo',
25
- like: 'Like',
26
- repost: 'Repost',
27
- bookmark: 'Bookmark',
39
+ const POST_TYPES = {
40
+ note: { name: 'Note', properties: ANY_TYPE, required: ['content'] },
41
+ article: { name: 'Article', properties: NAMED, required: ['name', 'content'] },
42
+ reply: { name: 'Reply', properties: ['in-reply-to', ...NAMED], required: ['in-reply-to'] },
43
+ photo: { name: 'Photo', properties: ['photo', ...NAMED], required: ['photo'] },
44
+ like: { name: 'Like', properties: ['like-of', ...NAMED], required: ['like-of'] },
45
+ repost: { name: 'Repost', properties: ['repost-of', ...NAMED], required: ['repost-of'] },
46
+ bookmark: {
47
+ name: 'Bookmark',
48
+ properties: ['bookmark-of', ...NAMED],
49
+ required: ['bookmark-of'],
50
+ },
51
+ read: {
52
+ name: 'Read',
53
+ properties: ['read-of', 'read-status', ...NAMED],
54
+ required: ['read-of', 'read-status'],
55
+ },
28
56
  };
29
57
  /** Each `q` the endpoint answers. */
30
58
  const QUERY_NAMES = ['config', 'syndicate-to', 'category', 'source'];
@@ -36,16 +64,22 @@ const QUERIES = {
36
64
  config: ({ baseUrl, targets }) => ({
37
65
  'media-endpoint': `${baseUrl}${MICROPUB_MEDIA_PATH}`,
38
66
  'syndicate-to': offered(targets),
39
- 'post-types': Object.entries(POST_TYPE_NAMES).map(([type, name]) => ({ type, name })),
67
+ 'post-types': Object.entries(POST_TYPES).map(([type, { name, properties, required }]) => ({
68
+ type,
69
+ name,
70
+ properties,
71
+ 'required-properties': required,
72
+ })),
73
+ visibility: VISIBILITIES,
40
74
  q: QUERY_NAMES,
41
75
  }),
42
76
  'syndicate-to': ({ targets }) => ({ 'syndicate-to': offered(targets) }),
43
77
  category: ({ store, filter }) => ({ categories: categories(store, filter) }),
44
- source: ({ baseUrl, targets, properties, post }) => {
78
+ source: ({ baseUrl, targets, locations, properties, post }) => {
45
79
  const document = post();
46
80
  if (document instanceof Refusal)
47
81
  return document;
48
- const all = sourceProperties(document, { baseUrl, targets });
82
+ const all = sourceProperties(document, { baseUrl, targets, locations });
49
83
  // Asked for by name, the answer is the properties alone, as the spec has it.
50
84
  if (properties.length === 0)
51
85
  return { type: ['h-entry'], properties: all };
@@ -128,10 +162,18 @@ function isQuery(q) {
128
162
  * because the base URL is a setting.
129
163
  */
130
164
  export function requireSiteToken(scope) {
131
- return async (c, next) => await requireBearer({
132
- audience: { resource: siteBaseUrl(c), acceptsUnbound: true },
133
- ...(scope === undefined ? {} : { scope }),
134
- })(c, next);
165
+ return async (c, next) => {
166
+ const declared = Number(c.req.header('content-length') ?? '');
167
+ const limit = largestUploadLimit(c.var.config);
168
+ if (Number.isFinite(declared) && declared > limit + UPLOAD_ENVELOPE_BYTES) {
169
+ c.header('cache-control', 'no-store');
170
+ return c.json({ error: 'invalid_request', error_description: tooLargeMessage(limit) }, 400);
171
+ }
172
+ return await requireBearer({
173
+ audience: { resource: siteBaseUrl(c), acceptsUnbound: true },
174
+ ...(scope === undefined ? {} : { scope }),
175
+ })(c, next);
176
+ };
135
177
  }
136
178
  /** The scope each action needs. */
137
179
  const ACTION_SCOPES = {
@@ -239,7 +281,12 @@ const ACTIONS = {
239
281
  const photos = await storePhotos(created, config);
240
282
  if ('error' in photos)
241
283
  return invalid(photos.error).answer(c);
242
- const written = await writeDocument({ store, config, announce, writer: bearer.user.username }, { kind: POST_KIND, document: undefined, ...created, form: photos.form });
284
+ const written = await writeDocument({ store, config, announce, writer: bearer.user.username }, {
285
+ kind: POST_KIND,
286
+ document: undefined,
287
+ ...created,
288
+ form: withoutClientReadSummary(photos.form),
289
+ });
243
290
  if (written.outcome === 'refused') {
244
291
  await removeUploads(photos.stored, config);
245
292
  return invalid(written.message).answer(c);
@@ -263,10 +310,11 @@ const ACTIONS = {
263
310
  now: store.now(),
264
311
  baseUrl: siteBaseUrl(c),
265
312
  targets: syndicationTargetsReader(config.contentDir)(),
313
+ locations: postLocations(config.dataDir),
266
314
  });
267
315
  if ('errors' in updated)
268
316
  return invalid(updated.errors.join(' ')).answer(c);
269
- const written = await writeDocument({ store, config, announce, writer: bearer.user.username }, { kind: POST_KIND, document, ...updated });
317
+ const written = await writeDocument({ store, config, announce, writer: bearer.user.username }, { kind: POST_KIND, document, ...updated, form: withoutClientReadSummary(updated.form) });
270
318
  if (written.outcome === 'refused')
271
319
  return invalid(written.message).answer(c);
272
320
  if (written.outcome === 'conflict') {
@@ -318,7 +366,7 @@ async function moved(c, url, action) {
318
366
  * IndieAuth endpoints beside it.
319
367
  */
320
368
  export function mountMicropub(app) {
321
- app.post(MICROPUB_PATH, requireSiteToken(), async (c) => {
369
+ app.post(MICROPUB_PATH, logMicropubRequest, requireSiteToken(), async (c) => {
322
370
  const post = await micropubPost(c);
323
371
  if (post instanceof Refusal)
324
372
  return post.answer(c);
@@ -328,7 +376,7 @@ export function mountMicropub(app) {
328
376
  const handle = ACTIONS[post.action];
329
377
  return await handle(c, post);
330
378
  });
331
- app.get(MICROPUB_PATH, requireSiteToken(), (c) => {
379
+ app.get(MICROPUB_PATH, logMicropubRequest, requireSiteToken(), (c) => {
332
380
  const q = c.req.query('q');
333
381
  if (!isQuery(q)) {
334
382
  const description = q === undefined || q === ''
@@ -340,6 +388,7 @@ export function mountMicropub(app) {
340
388
  baseUrl: siteBaseUrl(c),
341
389
  store: c.var.store,
342
390
  targets: syndicationTargetsReader(c.var.config.contentDir)(),
391
+ locations: postLocations(c.var.config.dataDir),
343
392
  filter: c.req.query('filter'),
344
393
  properties: c.req.queries('properties[]') ?? c.req.queries('properties') ?? [],
345
394
  post: () => postFor(c, c.req.query('url')),
@@ -350,4 +399,7 @@ export function mountMicropub(app) {
350
399
  return c.json(answer);
351
400
  });
352
401
  }
402
+ function withoutClientReadSummary(form) {
403
+ return form.readStatus === '' ? form : { ...form, description: '' };
404
+ }
353
405
  //# sourceMappingURL=endpoint.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"endpoint.js","sourceRoot":"","sources":["../../src/micropub/endpoint.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEnF,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAIxD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE1E,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAG5F,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAExE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE7D,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzE;;;GAGG;AACH,MAAM,eAAe,GAAuC;IAC1D,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,UAAU;CACrB,CAAC;AAEF,qCAAqC;AACrC,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,QAAQ,CAAU,CAAC;AAkB9E;;;GAGG;AACH,MAAM,OAAO,GAA+D;IAC1E,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QACjC,gBAAgB,EAAE,GAAG,OAAO,GAAG,mBAAmB,EAAE;QACpD,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC;QAChC,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACrF,CAAC,EAAE,WAAW;KACf,CAAC;IACF,cAAc,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;IACvE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;IAC5E,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE;QACjD,MAAM,QAAQ,GAAG,IAAI,EAAE,CAAC;QACxB,IAAI,QAAQ,YAAY,OAAO;YAAE,OAAO,QAAQ,CAAC;QACjD,MAAM,GAAG,GAAG,gBAAgB,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC7D,6EAA6E;QAC7E,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;QAC3E,OAAO;YACL,UAAU,EAAE,MAAM,CAAC,WAAW,CAC5B,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAClE;SACF,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,oEAAoE;AACpE,MAAM,OAAO;IAEA,MAAM;IACN,KAAK;IACL,WAAW;IAHtB,YACW,MAAuB,EACvB,KAAa,EACb,WAAmB;sBAFnB,MAAM;qBACN,KAAK;2BACL,WAAW;IACnB,CAAC;IAEJ,MAAM,CAAC,CAAqB;QAC1B,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;QACtC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,iBAAiB,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACzF,CAAC;CACF;AAED,SAAS,OAAO,CAAC,WAAmB;IAClC,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,iBAAiB,EAAE,WAAW,CAAC,CAAC;AAC1D,CAAC;AAED;;;;;GAKG;AACH,SAAS,MAAM,CACb,GAAuB,EACvB,IAAkF;IAElF,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC1E,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,OAAY,CAAC;IACjB,IAAI,CAAC;QACH,OAAO,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC,GAAG,GAAG,gBAAgB,CAAC,CAAC;IACzC,CAAC;IACD,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAC5C,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACxF,CAAC,CAAC,SAAS,CAAC;IACd,IAAI,QAAQ,EAAE,IAAI,KAAK,MAAM;QAAE,OAAO,OAAO,CAAC,GAAG,GAAG,8BAA8B,CAAC,CAAC;IACpF,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1D,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QACvD,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,GAAG,oBAAoB,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,0FAA0F;AAC1F,SAAS,OAAO,CAAC,OAAqC;IACpD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED;;;GAGG;AACH,SAAS,UAAU,CAAC,KAAmB,EAAE,MAA0B;IACjE,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC;QACpB,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC;QACzC,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC;KAC1D,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAC3C,OAAO,CAAC,GAAG,KAAK,CAAC;SACd,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;SACrD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,OAAO,CAAC,CAAqB;IACpC,OAAQ,WAA+C,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,OAAO,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,CACvB,MAAM,aAAa,CAAC;QAClB,QAAQ,EAAE,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE;QAC5D,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;KAC1C,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAChB,CAAC;AAcD,mCAAmC;AACnC,MAAM,aAAa,GAAoC;IACrD,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,QAAQ;CACnB,CAAC;AAEF,SAAS,QAAQ,CAAC,MAAe;IAC/B,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AAC5E,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,YAAY,CAAC,CAAqB;IAC/C,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IAChD,IAAI,+DAA+D,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/E,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClC,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1E,IAAI,MAAM,KAAK,QAAQ;YAAE,OAAO,OAAO,CAAC,4BAA4B,CAAC,CAAC;QACtE,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,UAAU;YAAE,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;QAC7E,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;IACpE,CAAC;IACD,IAAI,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,IAAI,IAAa,CAAC;QAClB,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,OAAO,CAAC,+BAA+B,CAAC,CAAC;QAClD,CAAC;QACD,MAAM,MAAM,GACV,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YAC/D,CAAC,CAAE,IAAgC;YACnC,CAAC,CAAC,EAAE,CAAC;QACT,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;QAC/B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC/B,OAAO,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;QACrF,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,KAAK,QAAQ;YAAE,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;QACzE,MAAM,KAAK,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;QACxD,IAAI,MAAM,KAAK,QAAQ;YAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;QACvD,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QACrC,OAAO,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IACvF,CAAC;IACD,OAAO,OAAO,CAAC,+CAA+C,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,WAAW,CAAC,MAAe;IAClC,OAAO,OAAO,CAAC,yCAAyC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACrF,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,WAAW,CACxB,OAAoB,EACpB,MAAsB;IAEtB,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxC,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QACrE,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,MAAM,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACpC,OAAO,EAAE,KAAK,EAAE,UAAU,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;QAC7C,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACxB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC;IACjE,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC;AACvD,CAAC;AAED,yFAAyF;AACzF,KAAK,UAAU,aAAa,CAAC,IAAuB,EAAE,MAAsB;IAC1E,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,YAAY,CAAC;YACjB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC;YAC3C,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;gBAC9B,MAAM,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC5C,CAAC;SACF,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,oDAAoD;AACpD,MAAM,OAAO,GAKT;IACF,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QAC/B,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC;QAClD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC;QAC9D,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,EAAE;YAClC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ;YAC5B,QAAQ;YACR,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE;YAChB,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;YACvB,OAAO,EAAE,wBAAwB,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;SACvD,CAAC,CAAC;QACH,IAAI,QAAQ,IAAI,OAAO;YAAE,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAE5E,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAClD,IAAI,OAAO,IAAI,MAAM;YAAE,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAE9D,MAAM,OAAO,GAAG,MAAM,aAAa,CACjC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,EACzD,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CACxE,CAAC;QACF,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAClC,MAAM,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC3C,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,OAAO,CAAC,OAAO,KAAK,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAEhG,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;QACtC,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,2EAA2E;IAC3E,yEAAyE;IACzE,0EAA0E;IAC1E,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE;QACpC,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACjC,IAAI,QAAQ,YAAY,OAAO;YAAE,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC3D,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC;QAClD,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,EAAE,OAAO,EAAE;YAC5C,QAAQ,EAAE,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,QAAQ;YACtD,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE;YAChB,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;YACvB,OAAO,EAAE,wBAAwB,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;SACvD,CAAC,CAAC;QACH,IAAI,QAAQ,IAAI,OAAO;YAAE,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAE5E,MAAM,OAAO,GAAG,MAAM,aAAa,CACjC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,EACzD,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,CAC1C,CAAC;QACF,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS;YAAE,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC7E,IAAI,OAAO,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;YACnC,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,GAAG,IAAI,EAAE,kCAAkC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAChG,CAAC;QAED,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;QACtC,IAAI,OAAO,CAAC,KAAK,CAAC,SAAS,KAAK,QAAQ,CAAC,SAAS;YAAE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC7E,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC;IAC1D,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC;CAC/D,CAAC;AAEF,SAAS,OAAO,CAAC,CAAqB,EAAE,GAAuB;IAC7D,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC;IACxC,OAAO,MAAM,CAAC,GAAG,EAAE;QACjB,KAAK;QACL,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;QACvB,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;QAChC,IAAI,EAAE,MAAM,CAAC,IAAI;KAClB,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,KAAK,CAClB,CAAqB,EACrB,GAAuB,EACvB,MAA2B;IAE3B,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACjC,IAAI,QAAQ,YAAY,OAAO;QAAE,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;IACtC,IAAI,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,OAAO,CAAC;QAAE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACpF,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC;IAC1C,MAAM,IAAI,GAAG,MAAM,gBAAgB,CACjC,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,QAAQ,EAAE,EAClD,QAAQ,EACR,MAAM,CACP,CAAC;IACF,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC,kBAAkB,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACrF,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,GAAqB;IACjD,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,gBAAgB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACtD,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,CAAC,CAAC,CAAC;QACnC,IAAI,IAAI,YAAY,OAAO;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,iBAAiB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACnF,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAGZ,CAAC;QACvB,OAAO,MAAM,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE;QAC/C,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAChB,MAAM,WAAW,GACf,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE;gBACzB,CAAC,CAAC,4BAA4B;gBAC9B,CAAC,CAAC,mCAAmC,CAAC,GAAG,CAAC;YAC9C,OAAO,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACxC,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACxB,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;YACvB,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK;YAClB,OAAO,EAAE,wBAAwB,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;YAC5D,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC;YAC7B,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE;YAC9E,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SAC3C,CAAC,CAAC;QACH,IAAI,MAAM,YAAY,OAAO;YAAE,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvD,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;QACtC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"endpoint.js","sourceRoot":"","sources":["../../src/micropub/endpoint.ts"],"names":[],"mappings":"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"}
@@ -7,8 +7,10 @@ export declare const LAST_UPLOADS_FILE = "micropub-media.json";
7
7
  * {@link storeUpload}, the media library's own rules and directory, so a
8
8
  * client's photo is a library file like any other with its variants derived
9
9
  * (decision-10). Every refusal is Micropub's 400 `invalid_request` rather
10
- * than the admin's 413 or 415. `q=last` answers the token's user's last
11
- * upload, which Quill and other clients offer as the photo of the next post.
10
+ * than the admin's 413 or 415. `q=source` answers the token's user's last
11
+ * upload as `{ items: [{ url, published }] }`, which Quill offers as the photo
12
+ * of the next note when it is under 15 minutes old; `q=last` answers it as
13
+ * `{ url }`, the micropub-extensions query other clients ask.
12
14
  */
13
15
  export declare function mountMicropubMedia(app: Hono<GeekityEnv>): void;
14
16
  //# sourceMappingURL=media.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../src/micropub/media.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAW,IAAI,EAAqB,MAAM,MAAM,CAAC;AAW7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAQ5C,6DAA6D;AAC7D,eAAO,MAAM,iBAAiB,wBAAwB,CAAC;AAuDvD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAsC9D"}
1
+ {"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../src/micropub/media.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAW,IAAI,EAAE,MAAM,MAAM,CAAC;AAI1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAS5C,6DAA6D;AAC7D,eAAO,MAAM,iBAAiB,wBAAwB,CAAC;AAqDvD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAkD9D"}
@@ -1,8 +1,9 @@
1
- import { existsSync } from 'node:fs';
1
+ import { existsSync, statSync } from 'node:fs';
2
2
  import path from 'node:path';
3
3
  import { resolveUpload } from '../admin/media.js';
4
- import { largestUploadLimit, refusedUpload, storeUpload, tooLargeMessage, UPLOAD_ENVELOPE_BYTES, UPLOAD_FIELD, } from '../admin/uploads.js';
4
+ import { refusedUpload, storeUpload, UPLOAD_FIELD } from '../admin/uploads.js';
5
5
  import { readFileIfPresentSync, updateFileAtomically } from '../files/atomic.js';
6
+ import { logMediaRequest } from '../indieauth/activity-log.js';
6
7
  import { MICROPUB_MEDIA_PATH, siteBaseUrl } from '../indieauth/discovery.js';
7
8
  import { UPLOAD_ASSET_PREFIX } from '../web/assets.js';
8
9
  import { absoluteUrl } from '../web/negotiate.js';
@@ -12,55 +13,47 @@ export const LAST_UPLOADS_FILE = 'micropub-media.json';
12
13
  function lastUploadsFile(dataDir) {
13
14
  return path.join(dataDir, LAST_UPLOADS_FILE);
14
15
  }
15
- function readLastUploads(dataDir) {
16
- const text = readFileIfPresentSync(lastUploadsFile(dataDir));
17
- return text === undefined ? { last: {} } : JSON.parse(text);
18
- }
19
- async function recordLastUpload(dataDir, userId, url) {
20
- await updateFileAtomically(lastUploadsFile(dataDir), (current) => {
21
- const uploads = current === undefined ? { last: {} } : JSON.parse(current);
22
- return `${JSON.stringify({ last: { ...uploads.last, [String(userId)]: url } }, null, 2)}\n`;
23
- });
24
- }
25
16
  /**
26
17
  * The user's last upload while it is still in the library: a file deleted
27
18
  * from the media screen since is no upload to offer.
28
19
  */
29
- function lastUpload(contentDir, dataDir, userId) {
30
- const url = readLastUploads(dataDir).last[String(userId)];
31
- if (url === undefined)
20
+ function readLastUpload(contentDir, dataDir, userId) {
21
+ const text = readFileIfPresentSync(lastUploadsFile(dataDir));
22
+ if (text === undefined)
23
+ return undefined;
24
+ const recorded = JSON.parse(text).last[String(userId)];
25
+ if (recorded === undefined)
32
26
  return undefined;
27
+ const url = typeof recorded === 'string' ? recorded : recorded.url;
33
28
  const file = resolveUpload(contentDir, url.slice(UPLOAD_ASSET_PREFIX.length));
34
- return file !== undefined && existsSync(file) ? url : undefined;
29
+ if (file === undefined || !existsSync(file))
30
+ return undefined;
31
+ return typeof recorded === 'string'
32
+ ? { url, published: statSync(file).mtime.toISOString() }
33
+ : recorded;
34
+ }
35
+ async function recordLastUpload(dataDir, userId, upload) {
36
+ await updateFileAtomically(lastUploadsFile(dataDir), (current) => {
37
+ const uploads = current === undefined ? { last: {} } : JSON.parse(current);
38
+ return `${JSON.stringify({ last: { ...uploads.last, [String(userId)]: upload } }, null, 2)}\n`;
39
+ });
35
40
  }
36
41
  function invalidRequest(c, description) {
37
42
  c.header('cache-control', 'no-store');
38
43
  return c.json({ error: 'invalid_request', error_description: description }, 400);
39
44
  }
40
- /**
41
- * Refuse a body whose declared length is over the upload limit before anything
42
- * reads it. It runs ahead of the bearer guard because the guard parses a form
43
- * body for an `access_token`, which reads the whole file, as the admin's
44
- * `refuseOversizedUpload` explains.
45
- */
46
- const refuseOversizedMedia = async (c, next) => {
47
- const declared = Number(c.req.header('content-length') ?? '');
48
- const limit = largestUploadLimit(c.var.config);
49
- if (Number.isFinite(declared) && declared > limit + UPLOAD_ENVELOPE_BYTES) {
50
- return invalidRequest(c, tooLargeMessage(limit));
51
- }
52
- await next();
53
- };
54
45
  /**
55
46
  * The Micropub media endpoint (TASK-165). A `file` part is stored through
56
47
  * {@link storeUpload}, the media library's own rules and directory, so a
57
48
  * client's photo is a library file like any other with its variants derived
58
49
  * (decision-10). Every refusal is Micropub's 400 `invalid_request` rather
59
- * than the admin's 413 or 415. `q=last` answers the token's user's last
60
- * upload, which Quill and other clients offer as the photo of the next post.
50
+ * than the admin's 413 or 415. `q=source` answers the token's user's last
51
+ * upload as `{ items: [{ url, published }] }`, which Quill offers as the photo
52
+ * of the next note when it is under 15 minutes old; `q=last` answers it as
53
+ * `{ url }`, the micropub-extensions query other clients ask.
61
54
  */
62
55
  export function mountMicropubMedia(app) {
63
- app.post(MICROPUB_MEDIA_PATH, refuseOversizedMedia, requireSiteToken('media'), async (c) => {
56
+ app.post(MICROPUB_MEDIA_PATH, logMediaRequest, requireSiteToken('media'), async (c) => {
64
57
  const { config, bearer } = c.var;
65
58
  let body;
66
59
  try {
@@ -72,22 +65,34 @@ export function mountMicropubMedia(app) {
72
65
  const stored = await storeUpload(body[UPLOAD_FIELD], config);
73
66
  if (refusedUpload(stored))
74
67
  return invalidRequest(c, stored.error);
75
- await recordLastUpload(config.dataDir, bearer.user.id, stored.url);
68
+ await recordLastUpload(config.dataDir, bearer.user.id, {
69
+ url: stored.url,
70
+ published: c.var.store.now().toISOString(),
71
+ });
76
72
  c.header('cache-control', 'no-store');
77
73
  c.header('location', absoluteUrl(stored.url, siteBaseUrl(c)));
78
74
  return c.body(null, 201);
79
75
  });
80
- app.get(MICROPUB_MEDIA_PATH, requireSiteToken(), (c) => {
76
+ app.get(MICROPUB_MEDIA_PATH, logMediaRequest, requireSiteToken(), (c) => {
81
77
  const q = c.req.query('q');
82
- if (q !== 'last') {
78
+ if (q !== 'last' && q !== 'source') {
83
79
  return invalidRequest(c, q === undefined || q === ''
84
80
  ? 'A q parameter is required.'
85
81
  : `This endpoint does not answer q=${q}.`);
86
82
  }
83
+ const limit = c.req.query('limit');
84
+ if (q === 'source' && limit !== undefined && !/^\d+$/.test(limit)) {
85
+ return invalidRequest(c, `limit is a whole number, not ${limit}.`);
86
+ }
87
87
  const { config, bearer } = c.var;
88
- const url = lastUpload(config.contentDir, config.dataDir, bearer.user.id);
88
+ const upload = readLastUpload(config.contentDir, config.dataDir, bearer.user.id);
89
+ const item = upload === undefined
90
+ ? undefined
91
+ : { url: absoluteUrl(upload.url, siteBaseUrl(c)), published: upload.published };
89
92
  c.header('cache-control', 'no-store');
90
- return c.json(url === undefined ? {} : { url: absoluteUrl(url, siteBaseUrl(c)) });
93
+ if (q === 'last')
94
+ return c.json(item === undefined ? {} : { url: item.url });
95
+ return c.json({ items: item === undefined || Number(limit) === 0 ? [] : [item] });
91
96
  });
92
97
  }
93
98
  //# sourceMappingURL=media.js.map