@geekity/cms 0.29.0 → 0.30.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 (52) hide show
  1. package/README.md +84 -32
  2. package/dist/admin/store.d.ts +42 -15
  3. package/dist/admin/store.d.ts.map +1 -1
  4. package/dist/admin/store.js +71 -31
  5. package/dist/admin/store.js.map +1 -1
  6. package/dist/cli.d.ts.map +1 -1
  7. package/dist/cli.js +10 -3
  8. package/dist/cli.js.map +1 -1
  9. package/dist/comments/index.d.ts +2 -2
  10. package/dist/comments/index.d.ts.map +1 -1
  11. package/dist/comments/index.js +1 -1
  12. package/dist/comments/index.js.map +1 -1
  13. package/dist/comments/records.d.ts +32 -4
  14. package/dist/comments/records.d.ts.map +1 -1
  15. package/dist/comments/records.js +182 -9
  16. package/dist/comments/records.js.map +1 -1
  17. package/dist/comments/routes.js +3 -3
  18. package/dist/comments/routes.js.map +1 -1
  19. package/dist/federation/backfill.js +6 -4
  20. package/dist/federation/backfill.js.map +1 -1
  21. package/dist/index.d.ts +2 -2
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +4 -3
  24. package/dist/index.js.map +1 -1
  25. package/dist/plugin.d.ts +28 -2
  26. package/dist/plugin.d.ts.map +1 -1
  27. package/dist/plugin.js +10 -2
  28. package/dist/plugin.js.map +1 -1
  29. package/dist/plugins/site.d.ts.map +1 -1
  30. package/dist/plugins/site.js +7 -1
  31. package/dist/plugins/site.js.map +1 -1
  32. package/dist/web/conversation.d.ts +47 -23
  33. package/dist/web/conversation.d.ts.map +1 -1
  34. package/dist/web/conversation.js +151 -120
  35. package/dist/web/conversation.js.map +1 -1
  36. package/dist/web/feed-source.d.ts +10 -7
  37. package/dist/web/feed-source.d.ts.map +1 -1
  38. package/dist/web/feed-source.js +21 -13
  39. package/dist/web/feed-source.js.map +1 -1
  40. package/dist/web/guids.d.ts +4 -16
  41. package/dist/web/guids.d.ts.map +1 -1
  42. package/dist/web/guids.js +5 -17
  43. package/dist/web/guids.js.map +1 -1
  44. package/dist/web/routes.d.ts.map +1 -1
  45. package/dist/web/routes.js +63 -53
  46. package/dist/web/routes.js.map +1 -1
  47. package/dist/webmention/receive.js +5 -5
  48. package/dist/webmention/receive.js.map +1 -1
  49. package/package.json +1 -1
  50. package/themes/default/README.md +41 -31
  51. package/themes/default/layouts/comment.njk +3 -3
  52. package/themes/default/partials/comment.njk +5 -5
package/README.md CHANGED
@@ -711,8 +711,9 @@ front of it, an `actor` taken from the note's `attributedTo` and the id
711
711
  under the reply it answers with its own URL, counted, given a `/replies/` feed
712
712
  and listed on the federation screen, and its author's `Delete` takes it back.
713
713
  A note held once is never logged twice. The sweep skips a note the inbox
714
- already holds, and a delivery of a note the sweep fetched first replaces the
715
- fetched line.
714
+ already holds or the site holds as a [migrated comment](#migrated-comments),
715
+ and a delivery of a note the sweep fetched first replaces the fetched line. An
716
+ imported fediverse reply's collection is read by its note id, its `origin`.
716
717
 
717
718
  The site removes a fetched reply, with the fetched replies under it, when its
718
719
  server answers 404 or 410 for it, or when a collection read to its end no
@@ -1079,6 +1080,56 @@ from a version that kept the email in the comment file has it moved there on
1079
1080
  the next boot, and so does an email somebody types into a comment file by
1080
1081
  hand.
1081
1082
 
1083
+ ### Keys
1084
+
1085
+ Every comment has one key, 16 lowercase hex digits (decision-51). It is the
1086
+ comment's `id` in its file, its anchor `#comment-{key}` on the post, its
1087
+ replies feed `/replies/{key}/` and, for a comment left through the form, its
1088
+ page `/comment/{key}/`. No URL the site prints carries an id of any other shape.
1089
+
1090
+ | Comment | Its key |
1091
+ | ----------------------------------------------- | ------------------------------------------------------------------------------------------- |
1092
+ | Left through the form | 16 random hex digits, minted when it is submitted. |
1093
+ | A webmention | The first 16 hex digits of the SHA-256 of its source URL, a space and the post's permalink. |
1094
+ | A fediverse reply, like or boost | The first 16 hex digits of the SHA-256 of its note or activity id. |
1095
+ | Imported, with an identity elsewhere (`origin`) | The key the same comment would get arriving here, from its `origin`. |
1096
+ | Imported, with none (a WordPress form comment) | The first 16 hex digits of the SHA-256 of its old comment URL. |
1097
+
1098
+ A comment file holding any other id is refused, naming the file and the id. A
1099
+ site upgrading from 0.29 has its UUID ids, and the URL ids plugin-wordpress
1100
+ 0.2.0 wrote, re-keyed in place on the next boot to the key of the old id; the
1101
+ replies naming them, the emails in `data/comments/` and any Markdown linking
1102
+ `/comment/{old}/` or `#comment-{old}` follow. Nothing redirects from the old
1103
+ URLs. A site whose ids are all keys reads its files and writes nothing.
1104
+
1105
+ ### Migrated comments
1106
+
1107
+ A comment imported from another system carries `migrated: true`, and `origin`
1108
+ when it had an identity elsewhere: a fediverse reply's note id, a like's or a
1109
+ boost's activity id, a webmention's source URL. A migrated fediverse comment
1110
+ also carries `actor`, the id of the actor who wrote it, when the export named
1111
+ one. plugin-wordpress writes all three.
1112
+
1113
+ A migrated comment shows on its post, in its thread and on its own page like
1114
+ any other, and replies to it thread under it. It is in no feed and no count a
1115
+ feed advertises: not `/comments/feed/`, not `{permalink}feed/`, not
1116
+ `/replies/{key}/` and not `source:comments`. It was published before the site
1117
+ moved here, so a reader of the old comments feed sees nothing new at cutover. A
1118
+ native reply under it is news, and names it in `source:inReplyTo` by its guid:
1119
+ its `/comment/{key}/` page for an imported form comment, its `origin`
1120
+ otherwise, else its `url`.
1121
+
1122
+ The same comment arriving again is the one the site holds, and the stored one
1123
+ wins, with the moderator's decision on it. A resent webmention is matched by
1124
+ its source. A redelivered `Create` or `Like`, and a note the
1125
+ [reply backfill](#replies-to-fediverse-replies) reads, are matched by their
1126
+ note or activity id against the stored comment's `origin`, so the inbox line is
1127
+ not shown and the backfill does not log the note. A like or a boost from the
1128
+ same actor as an imported one, matched by the inbox line's actor against the
1129
+ stored comment's `actor`, is the same reaction.
1130
+ An answer to an imported fediverse note threads under the imported comment,
1131
+ and the backfill reads that note's `replies` collection by its `origin`.
1132
+
1082
1133
  Three settings and one front-matter key decide whether a post is still taking
1083
1134
  them, and they are read in one place so the form and the endpoint can never
1084
1135
  disagree:
@@ -1121,10 +1172,10 @@ moderation queue and the dashboard carries the number waiting.
1121
1172
 
1122
1173
  ### A comment's own page
1123
1174
 
1124
- A comment left through the form has a page of its own at `/comment/{id}/`,
1125
- the comment's id percent-encoded. That page is the comment's URL in the thread
1175
+ A comment left through the form has a page of its own at `/comment/{key}/`
1176
+ (see [Keys](#keys)). That page is the comment's URL in the thread
1126
1177
  and in both comments feeds, so a site that replies to the comment fetches the
1127
- comment rather than the whole post. The `#comment-{id}` anchor on the post
1178
+ comment rather than the whole post. The `#comment-{key}` anchor on the post
1128
1179
  stays, so an old link still scrolls to it. A webmention or a fediverse reply
1129
1180
  has no such page: its URL is where it came from.
1130
1181
 
@@ -1150,7 +1201,7 @@ what it answers. Its `in-reply-to` is what it answers:
1150
1201
  | Answering | `in-reply-to` | It also |
1151
1202
  | ------------------ | --------------------------------- | -------------------------------------------------------- |
1152
1203
  | The post | The post's permalink | |
1153
- | A native comment | The comment's `/comment/{id}/` | Emails the commenter once, if they asked about replies. |
1204
+ | A native comment | The comment's `/comment/{key}/` | Emails the commenter once, if they asked about replies. |
1154
1205
  | A webmention reply | The page the webmention came from | Sends that page a webmention. |
1155
1206
  | A fediverse reply | The note's id | Federates in reply to the note, addressed to its author. |
1156
1207
  | A reply post | The reply post's permalink | |
@@ -1339,10 +1390,10 @@ can tell one from a form submission by its `source`. Akismet is told it is a
1339
1390
  `webmention` rather than a `comment`.
1340
1391
 
1341
1392
  A reply whose `u-in-reply-to` names a reply already on the post (a comment by
1342
- its own page or its `#comment-{id}` anchor, an earlier webmention by the page it
1393
+ its own page or its `#comment-{key}` anchor, an earlier webmention by the page it
1343
1394
  was sent from, a fediverse reply by its url or id) threads under that reply, and
1344
1395
  moves with it when the source is edited and sent again. A webmention sent to a
1345
- comment's page, `/comment/{id}/`, lands on that comment's post.
1396
+ comment's page, `/comment/{key}/`, lands on that comment's post.
1346
1397
 
1347
1398
  The source URL is its identity. A page that sends its webmention again updates
1348
1399
  what it left rather than adding a second, and one whose link has gone — or which
@@ -2817,7 +2868,7 @@ Booting mounts the public site on the app. The routes are:
2817
2868
  | `/author/{username}/feed/` and siblings | The same, for one person. |
2818
2869
  | `/comments/feed/` | Every reply the inbox has been sent, as RSS 2.0. |
2819
2870
  | `{permalink}feed/` | One post's replies, the same way. |
2820
- | `/comment/{id}/` | One comment left through the form, on a page of its own: see [Comments](#comments). Noindex and on no list. |
2871
+ | `/comment/{key}/` | One comment left through the form, on a page of its own: see [Comments](#comments). Noindex and on no list. |
2821
2872
  | `/sitemap.xml` | Every public URL, for a search engine. |
2822
2873
  | `/sitemap-{n}.xml` | One file of a sitemap too big to be a single one. |
2823
2874
  | `/robots.txt` | What a crawler may have, and where the sitemap is. |
@@ -3231,7 +3282,7 @@ so a site moving off it keeps every subscriber it had:
3231
3282
  | `/category/{name}/feed/` | One category archive, the same three |
3232
3283
  | `/comments/feed/` | Every reply the site has been sent, in RSS |
3233
3284
  | `{permalink}feed/` | One post's replies, in RSS |
3234
- | `/replies/{id or key}/` | One item's direct replies, in RSS |
3285
+ | `/replies/{key}/` | One item's direct replies, in RSS |
3235
3286
 
3236
3287
  `/feed/` is RSS because that is the format nearly every existing subscriber
3237
3288
  holds. The two archive bases are settings (`tagBase`, `categoryBase`), so the
@@ -3396,7 +3447,13 @@ the page draws under the post, so they carry what a reader sees there:
3396
3447
  post its author approved;
3397
3448
  - reply posts written on this site that answer the post or a reply under it.
3398
3449
 
3399
- Likes, boosts and reposts are counted on the page and are in no feed.
3450
+ That is replies and mentions. Likes, boosts and reposts say nothing, so they
3451
+ are shown and counted on the page and are in no feed, and no `source:comments`
3452
+ count includes them: a post answered only with reactions advertises no replies
3453
+ feed. An RSVP to an event is shown with the people answering, not in the
3454
+ thread, so it is in no feed either, words or not; an RSVP sent to a post that
3455
+ is no event is a reply like any other. Neither feed carries a
3456
+ [migrated comment](#migrated-comments).
3400
3457
 
3401
3458
  Both are RSS 2.0 and nothing else: a comments feed has no Atom or JSON spelling
3402
3459
  here, so `{permalink}feed/atom/` 404s. A post has a comments feed whether or
@@ -3413,13 +3470,12 @@ A channel carries the usual `title` (`Comments on: {post}`), `link`,
3413
3470
  `description`, `language`, `lastBuildDate`, `generator`, `atom:link rel="self"`
3414
3471
  and the same notify-server elements every other feed carries. An item carries the author's name as its `title` and `dc:creator`,
3415
3472
  the reply's `url` as its `link` (a comment left through the form links to its
3416
- own page at `/comment/{id}/`), a `guid`, the `published` time the reply gave (or
3473
+ own page at `/comment/{key}/`), a `guid`, the `published` time the reply gave (or
3417
3474
  when it arrived, if it gave none), `description` holding a plain-text excerpt
3418
3475
  and `content:encoded` holding the reply. The `guid` of a comment left through the
3419
- form is its page, `isPermaLink="true"`; any other reply's is its own id: a
3420
- fediverse note's id, a webmention's stored id, a reply post's object id. A
3421
- comment imported from WordPress keeps the `guid` WordPress's comments feed
3422
- published, so a reader sees nothing new after the move.
3476
+ form is its page, `isPermaLink="true"`; a fediverse note's is its id, a
3477
+ webmention's its source URL, a reply post's its object id. A migrated comment
3478
+ is in neither feed, so its old `guid` never has to survive the move.
3423
3479
  `isPermaLink` is `true` exactly when the `guid` is the `link`.
3424
3480
 
3425
3481
  Each item also carries, from the [source namespace][source-ns]:
@@ -3468,20 +3524,16 @@ replies that answer the post directly, and from each of those items' own
3468
3524
  `source:comments` to the replies that answer it, until an item has none.
3469
3525
  Every reply a reader can see is reached once.
3470
3526
 
3471
- Each of those feeds is at `/replies/{segment}/`, RSS 2.0, newest first, its
3472
- items in the same shape as the comments feeds:
3473
-
3474
- - `/replies/{id}/` for a comment left through the form, by the same id as its
3475
- page at `/comment/{id}/`, percent-encoded.
3476
- - `/replies/{key}/` for everything else: a post or a page, a webmention, a
3477
- fediverse reply or a reply post. A document has no id of its own and slugs
3478
- are not unique across posts and pages, so the key is the first 16 hex digits
3479
- of the SHA-256 of the item's feed `guid`.
3480
-
3481
- A segment of exactly 16 lowercase hex digits is a key, and anything else is a
3482
- comment id. A comment whose id happens to look like a key is named by its key
3483
- instead, so no segment can name two items. An item nobody answered answers an
3484
- empty feed; a key or an id that names nothing a reader can see 404s.
3527
+ Each of those feeds is `/replies/{key}/`, RSS 2.0, newest first, its items in
3528
+ the same shape as the comments feeds. It carries replies only: a mention
3529
+ answers nothing in the thread, and a like, a boost, a repost or an event's RSVP
3530
+ is in no feed. A comment's key is its id (see
3531
+ [Keys](#keys)); a post's, a page's, a fediverse reply's or a reply post's is
3532
+ the first 16 hex digits of the SHA-256 of its feed `guid`, since a document has
3533
+ no id of its own and slugs are not unique across posts and pages. An item
3534
+ nobody answered answers an empty feed; a segment that is no key, or a key that
3535
+ names nothing a reader can see, 404s. A migrated comment's feed still answers,
3536
+ with the native replies under it, though no feed links to it.
3485
3537
 
3486
3538
  [rss-chat]: https://github.com/scripting/rss.chat
3487
3539
 
@@ -4217,8 +4269,8 @@ search or listing pagination.
4217
4269
  Some things do not carry over. `/feed/`, `/feed/atom/` and `/feed/json/` are
4218
4270
  generated in code here, not by a template, so an Eleventy build needs its own;
4219
4271
  `/sitemap.xml` and `/robots.txt` are the same story, for the same reason. A
4220
- comment's own page at `/comment/{id}/` is not written, since a build has no
4221
- server to take a comment, so a comment links to its `#comment-{id}` anchor on
4272
+ comment's own page at `/comment/{key}/` is not written, since a build has no
4273
+ server to take a comment, so a comment links to its `#comment-{key}` anchor on
4222
4274
  the post. The site's own reply posts are not threaded under what they answer,
4223
4275
  and a document's backlinks are not listed: both read the CMS's index of every
4224
4276
  document, which the config's filters do not have. The config's header lists
@@ -3,12 +3,6 @@ import type { RsvpValue } from '../content/rsvp.ts';
3
3
  export interface OpenAdminStoreOptions {
4
4
  /** Directory the database lives in. Created if it is missing. */
5
5
  dataDir: string;
6
- /**
7
- * The site's base URL, which a native comment's `/replies/` key is worked
8
- * out against (TASK-327). Opening with a different one than last time works
9
- * every key out again; opening with none leaves new comments without keys.
10
- */
11
- baseUrl?: string | undefined;
12
6
  }
13
7
  /**
14
8
  * A login, or the anonymous session that carries a CSRF token to a visitor who
@@ -441,10 +435,10 @@ export interface CommentAuthor {
441
435
  /**
442
436
  * Their avatar, or `null`.
443
437
  *
444
- * Only a webmention ever has one, out of the `u-photo` of the source page's
445
- * `h-card` (TASK-51): a form asks for no picture, and one it did ask for
446
- * would be a stranger's file on somebody else's page. It is a URL on the
447
- * author's own site, printed as an `<img>` exactly as a fediverse reply's is.
438
+ * A webmention has one out of the `u-photo` of the source page's `h-card`
439
+ * (TASK-51), and an imported fediverse comment its actor's icon (TASK-338).
440
+ * A form asks for no picture: one it did ask for would be a stranger's file
441
+ * on somebody else's page. The page serves it through the avatar cache.
448
442
  */
449
443
  avatar: string | null;
450
444
  }
@@ -533,7 +527,45 @@ export interface CommentRecord {
533
527
  * TASK-320). Absent for every other comment.
534
528
  */
535
529
  via?: string;
530
+ /**
531
+ * Whether it was imported from another system (TASK-336), the word a
532
+ * migrated post uses. It was published before the site came here, so it is
533
+ * shown in its thread and carried by no feed. Absent for every other comment.
534
+ */
535
+ migrated?: true;
536
+ /**
537
+ * The name it has where it was first published, for a migrated comment
538
+ * that has one: a fediverse note or activity id, or a webmention's source.
539
+ * What the feeds call it when a native reply answers it, and what a later
540
+ * delivery of the same thing is recognised by. Absent for every other comment.
541
+ */
542
+ origin?: string;
543
+ /**
544
+ * The site user who wrote it, by username, for a comment written by
545
+ * somebody signed in to the system it was imported from (TASK-337). The
546
+ * thread names them as it names their reply posts. Absent for every other
547
+ * comment.
548
+ */
549
+ user?: string;
550
+ /**
551
+ * The fediverse actor who wrote it, by id, for a migrated fediverse comment
552
+ * whose actor the export named (TASK-338). What tells their like here from
553
+ * the same person's like delivered since, whatever profile page each names.
554
+ * Absent for every other comment.
555
+ */
556
+ actor?: string;
536
557
  }
558
+ /**
559
+ * What a comment brought from the system it was imported from, as a record
560
+ * carries it: each of {@link CommentRecord.migrated}, `origin`, `user` and
561
+ * `actor` present only when set.
562
+ */
563
+ export declare function importedFields(fields: {
564
+ readonly migrated?: boolean | null | undefined;
565
+ readonly origin?: string | null | undefined;
566
+ readonly user?: string | null | undefined;
567
+ readonly actor?: string | null | undefined;
568
+ }): Pick<CommentRecord, 'migrated' | 'origin' | 'user' | 'actor'>;
537
569
  /** A comment's {@link CommentRecord.rsvp} as a record carries it: present only when there is one. */
538
570
  export declare function rsvpField(rsvp: RsvpValue | undefined): Pick<CommentRecord, 'rsvp'>;
539
571
  /** A comment's {@link CommentRecord.via} as a record carries it: present only when there is one. */
@@ -792,11 +824,6 @@ export interface AdminStore {
792
824
  getComment(id: string): PostComment | undefined;
793
825
  /** The comments whose `url` is this one, whatever their status (TASK-300). */
794
826
  listCommentsAt(url: string): PostComment[];
795
- /**
796
- * The comments and webmentions whose feed guid has this `/replies/` key,
797
- * whatever their status (TASK-327): one indexed lookup.
798
- */
799
- listCommentsByRepliesKey(key: string): PostComment[];
800
827
  /** The logged replies whose note's id has this `/replies/` key (TASK-327). */
801
828
  listRepliesByKey(key: string): InboxActivity[];
802
829
  /** How many comments stand at each status. What the dashboard shows. */
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/admin/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/admin/store.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,6 @@ import { databaseFile, openDatabase } from '../cache.js';
4
4
  import { rsvpValue } from '../content/rsvp.js';
5
5
  import { REPLY_ACTIVITY_TYPE, replyIdOf, replyTargetOf } from '../federation/replies.js';
6
6
  import { repliesKey } from '../web/feed-source.js';
7
- import { replyGuid } from '../web/guids.js';
8
7
  /**
9
8
  * Which rows of the inbox log are replies: a `Create` that named something it
10
9
  * answers. Spelled once, because a count and a listing that disagreed about it
@@ -27,6 +26,20 @@ export const COMMENT_KINDS = ['reply', 'like', 'boost', 'mention', 'repost'];
27
26
  export const COMMENT_STATUSES = ['pending', 'approved', 'spam'];
28
27
  /** What a comment can have had removed from it for privacy (TASK-135). */
29
28
  export const REDACTED_FIELDS = ['email', 'addressHash', 'author'];
29
+ /**
30
+ * What a comment brought from the system it was imported from, as a record
31
+ * carries it: each of {@link CommentRecord.migrated}, `origin`, `user` and
32
+ * `actor` present only when set.
33
+ */
34
+ export function importedFields(fields) {
35
+ const { migrated, origin, user, actor } = fields;
36
+ return {
37
+ ...(migrated === true ? { migrated: true } : {}),
38
+ ...(origin ? { origin } : {}),
39
+ ...(user ? { user } : {}),
40
+ ...(actor ? { actor } : {}),
41
+ };
42
+ }
30
43
  /** A comment's {@link CommentRecord.rsvp} as a record carries it: present only when there is one. */
31
44
  export function rsvpField(rsvp) {
32
45
  return rsvp === undefined ? {} : { rsvp };
@@ -179,9 +192,6 @@ export function openAdminStore(options) {
179
192
  `),
180
193
  commentById: db.prepare('SELECT * FROM comments WHERE id = ?'),
181
194
  commentsAt: db.prepare('SELECT * FROM comments WHERE url = ? ORDER BY submitted_at'),
182
- commentsByRepliesKey: db.prepare('SELECT * FROM comments WHERE replies_key = ? ORDER BY submitted_at, id'),
183
- staleCommentKeys: db.prepare('SELECT id, source FROM comments WHERE keys_base IS NOT ?'),
184
- writeCommentKey: db.prepare('UPDATE comments SET replies_key = ?, keys_base = ? WHERE id = ?'),
185
195
  repliesByKey: db.prepare(`
186
196
  SELECT * FROM ap_inbox WHERE ${IS_REPLY} AND reply_key = ? ORDER BY received_at, id
187
197
  `),
@@ -197,8 +207,8 @@ export function openAdminStore(options) {
197
207
  id, slug, permalink, source, kind, status,
198
208
  author_name, author_url, author_email,
199
209
  markdown, html, submitted_at, address_hash, in_reply_to, url, author_avatar, notify,
200
- redacted, rsvp, via, replies_key, keys_base
201
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
210
+ redacted, rsvp, via, migrated, origin, user, actor
211
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
202
212
  ON CONFLICT (id) DO UPDATE SET
203
213
  slug = excluded.slug,
204
214
  permalink = excluded.permalink,
@@ -219,8 +229,10 @@ export function openAdminStore(options) {
219
229
  redacted = excluded.redacted,
220
230
  rsvp = excluded.rsvp,
221
231
  via = excluded.via,
222
- replies_key = excluded.replies_key,
223
- keys_base = excluded.keys_base
232
+ migrated = excluded.migrated,
233
+ origin = excluded.origin,
234
+ user = excluded.user,
235
+ actor = excluded.actor
224
236
  `),
225
237
  deleteComment: db.prepare('DELETE FROM comments WHERE id = ?'),
226
238
  clearComments: db.prepare('DELETE FROM comments'),
@@ -343,20 +355,6 @@ export function openAdminStore(options) {
343
355
  return [];
344
356
  }
345
357
  }
346
- /** Work out again every comment key worked out against another base, or none. */
347
- function refreshCommentKeys(baseUrl) {
348
- inTransaction(() => {
349
- for (const row of statements.staleCommentKeys.all(baseUrl)) {
350
- const comment = {
351
- id: String(row['id']),
352
- source: oneOf(row['source'], COMMENT_SOURCES, 'comment'),
353
- };
354
- statements.writeCommentKey.run(...commentKey(comment, baseUrl), comment.id);
355
- }
356
- });
357
- }
358
- if (options.baseUrl !== undefined)
359
- refreshCommentKeys(options.baseUrl);
360
358
  const listeners = new Set();
361
359
  const written = (change) => {
362
360
  for (const listener of listeners)
@@ -590,9 +588,6 @@ export function openAdminStore(options) {
590
588
  listCommentsAt(url) {
591
589
  return statements.commentsAt.all(url).map(toComment);
592
590
  },
593
- listCommentsByRepliesKey(key) {
594
- return statements.commentsByRepliesKey.all(key).map(toComment);
595
- },
596
591
  listRepliesByKey(key) {
597
592
  return statements.repliesByKey.all(key).map(toInboxActivity);
598
593
  },
@@ -610,7 +605,7 @@ export function openAdminStore(options) {
610
605
  },
611
606
  putComment(comment) {
612
607
  const before = statements.commentById.get(comment.id);
613
- statements.putComment.run(comment.id, comment.slug, comment.permalink, comment.source, comment.kind, comment.status, comment.author.name, comment.author.url, comment.author.email, comment.content.markdown, comment.content.html, comment.submitted, comment.addressHash, comment.inReplyTo, comment.url, comment.author.avatar, comment.notify ? 1 : 0, redactedColumn(comment.redacted), comment.rsvp ?? null, comment.via ?? null, ...commentKey(comment, options.baseUrl));
608
+ statements.putComment.run(...commentColumns(comment));
614
609
  written({
615
610
  kind: 'comment',
616
611
  slug: comment.slug,
@@ -631,7 +626,7 @@ export function openAdminStore(options) {
631
626
  inTransaction(() => {
632
627
  statements.clearComments.run();
633
628
  for (const comment of comments) {
634
- statements.putComment.run(comment.id, comment.slug, comment.permalink, comment.source, comment.kind, comment.status, comment.author.name, comment.author.url, comment.author.email, comment.content.markdown, comment.content.html, comment.submitted, comment.addressHash, comment.inReplyTo, comment.url, comment.author.avatar, comment.notify ? 1 : 0, redactedColumn(comment.redacted), comment.rsvp ?? null, comment.via ?? null, ...commentKey(comment, options.baseUrl));
629
+ statements.putComment.run(...commentColumns(comment));
635
630
  }
636
631
  });
637
632
  },
@@ -901,6 +896,12 @@ function toComment(row) {
901
896
  ...redactedOf(row['redacted']),
902
897
  ...rsvpField(rsvpValue(row['rsvp'])),
903
898
  ...viaField(nullableText(row['via'])),
899
+ ...importedFields({
900
+ migrated: Number(row['migrated'] ?? 0) === 1,
901
+ origin: nullableText(row['origin']),
902
+ user: nullableText(row['user']),
903
+ actor: nullableText(row['actor']),
904
+ }),
904
905
  };
905
906
  }
906
907
  /** A comment's {@link CommentRecord.redacted} as its column holds it: JSON, or `NULL`. */
@@ -1568,7 +1569,50 @@ const MIGRATIONS = [
1568
1569
  version: 25,
1569
1570
  sql: `ALTER TABLE ap_inbox ADD COLUMN fetched INTEGER NOT NULL DEFAULT 0;`,
1570
1571
  },
1572
+ {
1573
+ // A comment's key is its id (decision-51), so the key worked out from its
1574
+ // guid against the base URL has nothing left to say.
1575
+ version: 26,
1576
+ sql: `
1577
+ DROP INDEX comments_replies_key;
1578
+ ALTER TABLE comments DROP COLUMN replies_key;
1579
+ ALTER TABLE comments DROP COLUMN keys_base;
1580
+ ALTER TABLE comments ADD COLUMN migrated INTEGER NOT NULL DEFAULT 0;
1581
+ ALTER TABLE comments ADD COLUMN origin TEXT;
1582
+ ALTER TABLE comments ADD COLUMN user TEXT;
1583
+ ALTER TABLE comments ADD COLUMN actor TEXT;
1584
+ `,
1585
+ },
1571
1586
  ];
1587
+ /** A comment as the values of the comments table's columns, in the order `putComment` names them. */
1588
+ function commentColumns(comment) {
1589
+ return [
1590
+ comment.id,
1591
+ comment.slug,
1592
+ comment.permalink,
1593
+ comment.source,
1594
+ comment.kind,
1595
+ comment.status,
1596
+ comment.author.name,
1597
+ comment.author.url,
1598
+ comment.author.email,
1599
+ comment.content.markdown,
1600
+ comment.content.html,
1601
+ comment.submitted,
1602
+ comment.addressHash,
1603
+ comment.inReplyTo,
1604
+ comment.url,
1605
+ comment.author.avatar,
1606
+ comment.notify ? 1 : 0,
1607
+ redactedColumn(comment.redacted),
1608
+ comment.rsvp ?? null,
1609
+ comment.via ?? null,
1610
+ comment.migrated === true ? 1 : 0,
1611
+ comment.origin ?? null,
1612
+ comment.user ?? null,
1613
+ comment.actor ?? null,
1614
+ ];
1615
+ }
1572
1616
  /** What {@link AdminStore.onConversationWrite} hears about one logged activity. */
1573
1617
  function activityWrite(activity) {
1574
1618
  return {
@@ -1581,8 +1625,4 @@ function replyKeyOf(activity) {
1581
1625
  const id = replyIdOf(activity);
1582
1626
  return id === null ? null : repliesKey(id);
1583
1627
  }
1584
- /** A comment's `/replies/` key and the base it was worked out against, as columns. */
1585
- function commentKey(comment, baseUrl) {
1586
- return baseUrl === undefined ? [null, null] : [repliesKey(replyGuid(comment, baseUrl)), baseUrl];
1587
- }
1588
1628
  //# sourceMappingURL=store.js.map