@geekity/cms 0.28.0 → 0.29.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.
- package/README.md +303 -53
- package/admin/pages/comments/all.njk +3 -1
- package/admin/pages/federation/followers.njk +8 -2
- package/dist/admin/comments.d.ts +2 -0
- package/dist/admin/comments.d.ts.map +1 -1
- package/dist/admin/comments.js +19 -49
- package/dist/admin/comments.js.map +1 -1
- package/dist/admin/documents.d.ts +5 -0
- package/dist/admin/documents.d.ts.map +1 -1
- package/dist/admin/documents.js +45 -17
- package/dist/admin/documents.js.map +1 -1
- package/dist/admin/federation.d.ts +21 -1
- package/dist/admin/federation.d.ts.map +1 -1
- package/dist/admin/federation.js +17 -7
- package/dist/admin/federation.js.map +1 -1
- package/dist/admin/store.d.ts +64 -10
- package/dist/admin/store.d.ts.map +1 -1
- package/dist/admin/store.js +166 -17
- package/dist/admin/store.js.map +1 -1
- package/dist/cli.js +2 -2
- package/dist/cli.js.map +1 -1
- package/dist/comments/form.d.ts +3 -1
- package/dist/comments/form.d.ts.map +1 -1
- package/dist/comments/form.js +2 -1
- package/dist/comments/form.js.map +1 -1
- package/dist/comments/index.d.ts +2 -2
- package/dist/comments/index.d.ts.map +1 -1
- package/dist/comments/index.js +1 -1
- package/dist/comments/index.js.map +1 -1
- package/dist/comments/records.d.ts +24 -20
- package/dist/comments/records.d.ts.map +1 -1
- package/dist/comments/records.js +74 -23
- package/dist/comments/records.js.map +1 -1
- package/dist/comments/reply-notices.d.ts +42 -0
- package/dist/comments/reply-notices.d.ts.map +1 -0
- package/dist/comments/reply-notices.js +76 -0
- package/dist/comments/reply-notices.js.map +1 -0
- package/dist/comments/reply-post.d.ts +49 -0
- package/dist/comments/reply-post.d.ts.map +1 -0
- package/dist/comments/reply-post.js +66 -0
- package/dist/comments/reply-post.js.map +1 -0
- package/dist/comments/routes.d.ts +6 -1
- package/dist/comments/routes.d.ts.map +1 -1
- package/dist/comments/routes.js +49 -21
- package/dist/comments/routes.js.map +1 -1
- package/dist/comments/submission.d.ts +8 -25
- package/dist/comments/submission.d.ts.map +1 -1
- package/dist/comments/submission.js +19 -38
- package/dist/comments/submission.js.map +1 -1
- package/dist/comments/viewer.d.ts.map +1 -1
- package/dist/comments/viewer.js +1 -0
- package/dist/comments/viewer.js.map +1 -1
- package/dist/content/citation.d.ts +1 -0
- package/dist/content/citation.d.ts.map +1 -1
- package/dist/content/citation.js +2 -0
- package/dist/content/citation.js.map +1 -1
- package/dist/content/original.d.ts +6 -1
- package/dist/content/original.d.ts.map +1 -1
- package/dist/content/original.js +7 -4
- package/dist/content/original.js.map +1 -1
- package/dist/content/store.d.ts +43 -11
- package/dist/content/store.d.ts.map +1 -1
- package/dist/content/store.js +170 -10
- package/dist/content/store.js.map +1 -1
- package/dist/content/sync.d.ts +8 -0
- package/dist/content/sync.d.ts.map +1 -1
- package/dist/content/sync.js +164 -71
- package/dist/content/sync.js.map +1 -1
- package/dist/federation/article.d.ts.map +1 -1
- package/dist/federation/article.js +2 -1
- package/dist/federation/article.js.map +1 -1
- package/dist/federation/backfill.d.ts +114 -0
- package/dist/federation/backfill.d.ts.map +1 -0
- package/dist/federation/backfill.js +312 -0
- package/dist/federation/backfill.js.map +1 -0
- package/dist/federation/inbox.js +1 -1
- package/dist/federation/inbox.js.map +1 -1
- package/dist/federation/records.d.ts +13 -0
- package/dist/federation/records.d.ts.map +1 -1
- package/dist/federation/records.js +49 -10
- package/dist/federation/records.js.map +1 -1
- package/dist/federation/replies.d.ts +6 -0
- package/dist/federation/replies.d.ts.map +1 -1
- package/dist/federation/replies.js +18 -1
- package/dist/federation/replies.js.map +1 -1
- package/dist/index.d.ts +11 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +79 -10
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +1 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +1 -7
- package/dist/init.js.map +1 -1
- package/dist/web/context.d.ts +18 -3
- package/dist/web/context.d.ts.map +1 -1
- package/dist/web/context.js +17 -4
- package/dist/web/context.js.map +1 -1
- package/dist/web/conversation.d.ts +155 -16
- package/dist/web/conversation.d.ts.map +1 -1
- package/dist/web/conversation.js +602 -135
- package/dist/web/conversation.js.map +1 -1
- package/dist/web/documents.d.ts +0 -22
- package/dist/web/documents.d.ts.map +1 -1
- package/dist/web/documents.js +1 -34
- package/dist/web/documents.js.map +1 -1
- package/dist/web/feed-item.d.ts +12 -8
- package/dist/web/feed-item.d.ts.map +1 -1
- package/dist/web/feed-item.js +10 -10
- package/dist/web/feed-item.js.map +1 -1
- package/dist/web/feed-rss.d.ts.map +1 -1
- package/dist/web/feed-rss.js +34 -10
- package/dist/web/feed-rss.js.map +1 -1
- package/dist/web/feed-source.d.ts +30 -1
- package/dist/web/feed-source.d.ts.map +1 -1
- package/dist/web/feed-source.js +25 -0
- package/dist/web/feed-source.js.map +1 -1
- package/dist/web/feeds.d.ts +1 -1
- package/dist/web/feeds.d.ts.map +1 -1
- package/dist/web/feeds.js +7 -2
- package/dist/web/feeds.js.map +1 -1
- package/dist/web/guids.d.ts +59 -0
- package/dist/web/guids.d.ts.map +1 -0
- package/dist/web/guids.js +79 -0
- package/dist/web/guids.js.map +1 -0
- package/dist/web/index.d.ts +5 -6
- package/dist/web/index.d.ts.map +1 -1
- package/dist/web/index.js +3 -3
- package/dist/web/index.js.map +1 -1
- package/dist/web/redirects.d.ts +12 -0
- package/dist/web/redirects.d.ts.map +1 -1
- package/dist/web/redirects.js +16 -4
- package/dist/web/redirects.js.map +1 -1
- package/dist/web/render.d.ts +19 -9
- package/dist/web/render.d.ts.map +1 -1
- package/dist/web/render.js +44 -42
- package/dist/web/render.js.map +1 -1
- package/dist/web/routes.d.ts +2 -2
- package/dist/web/routes.d.ts.map +1 -1
- package/dist/web/routes.js +94 -31
- package/dist/web/routes.js.map +1 -1
- package/dist/webmention/index.d.ts +1 -1
- package/dist/webmention/index.d.ts.map +1 -1
- package/dist/webmention/index.js +1 -1
- package/dist/webmention/index.js.map +1 -1
- package/dist/webmention/links.d.ts +55 -0
- package/dist/webmention/links.d.ts.map +1 -1
- package/dist/webmention/links.js +162 -0
- package/dist/webmention/links.js.map +1 -1
- package/dist/webmention/microformats.d.ts +15 -0
- package/dist/webmention/microformats.d.ts.map +1 -1
- package/dist/webmention/microformats.js +63 -1
- package/dist/webmention/microformats.js.map +1 -1
- package/dist/webmention/pingback.js +2 -1
- package/dist/webmention/pingback.js.map +1 -1
- package/dist/webmention/receive.d.ts +5 -0
- package/dist/webmention/receive.d.ts.map +1 -1
- package/dist/webmention/receive.js +99 -3
- package/dist/webmention/receive.js.map +1 -1
- package/dist/webmention/reply-context.d.ts +15 -0
- package/dist/webmention/reply-context.d.ts.map +1 -1
- package/dist/webmention/reply-context.js +29 -0
- package/dist/webmention/reply-context.js.map +1 -1
- package/dist/webmention/reply-contexts.d.ts +6 -0
- package/dist/webmention/reply-contexts.d.ts.map +1 -1
- package/dist/webmention/reply-contexts.js +16 -10
- package/dist/webmention/reply-contexts.js.map +1 -1
- package/dist/webmention/routes.d.ts.map +1 -1
- package/dist/webmention/routes.js +2 -1
- package/dist/webmention/routes.js.map +1 -1
- package/dist/webmention/service.d.ts +30 -1
- package/dist/webmention/service.d.ts.map +1 -1
- package/dist/webmention/service.js +172 -32
- package/dist/webmention/service.js.map +1 -1
- package/package.json +1 -2
- package/themes/default/README.md +242 -78
- package/themes/default/layouts/base.njk +8 -0
- package/themes/default/layouts/comment.njk +90 -0
- package/themes/default/layouts/front-page.njk +9 -47
- package/themes/default/layouts/page.njk +2 -0
- package/themes/default/layouts/post.njk +14 -2
- package/themes/default/partials/backlinks.njk +19 -0
- package/themes/default/partials/cited-page.njk +3 -1
- package/themes/default/partials/comment-form.njk +10 -0
- package/themes/default/partials/comment.njk +79 -0
- package/themes/default/partials/conversation.njk +14 -59
- package/themes/default/src/style.css +42 -0
- package/themes/default/static/style.css +67 -0
package/dist/web/render.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ import type { DocumentNeighbours, SearchHit } from '../content/store.ts';
|
|
|
7
7
|
import type { AuthorContext } from './authors.ts';
|
|
8
8
|
import type { CommentFormContext, CommentViewer } from '../comments/form.ts';
|
|
9
9
|
import type { ContactFormContext } from '../contact/form.ts';
|
|
10
|
-
import type { Conversation } from './conversation.ts';
|
|
10
|
+
import type { CommentThread, Conversation } from './conversation.ts';
|
|
11
11
|
import type { FrontPageSlugs, SiteData } from './context.ts';
|
|
12
12
|
import type { Pagination } from './pagination.ts';
|
|
13
13
|
import type { TaxonomyBases, TaxonomyRedirect } from './taxonomy.ts';
|
|
@@ -23,6 +23,7 @@ export declare const TEMPLATES: {
|
|
|
23
23
|
readonly category: 'layouts/category.njk';
|
|
24
24
|
readonly author: 'layouts/author.njk';
|
|
25
25
|
readonly search: 'layouts/search.njk';
|
|
26
|
+
readonly comment: 'layouts/comment.njk';
|
|
26
27
|
readonly notFound: 'layouts/404.njk';
|
|
27
28
|
readonly gone: 'layouts/410.njk';
|
|
28
29
|
readonly serverError: 'layouts/500.njk';
|
|
@@ -154,6 +155,11 @@ export interface Renderer {
|
|
|
154
155
|
* `snippet` of HTML showing where the words were found.
|
|
155
156
|
*/
|
|
156
157
|
renderSearch(search: SearchPage): string;
|
|
158
|
+
/**
|
|
159
|
+
* A native comment's own page (TASK-318) through the comment layout: the
|
|
160
|
+
* comment, the thread above it from its post down, and its replies.
|
|
161
|
+
*/
|
|
162
|
+
renderComment(thread: CommentThread): string;
|
|
157
163
|
/** The 404 page, for a path that resolved to nothing. */
|
|
158
164
|
renderNotFound(url: string): string;
|
|
159
165
|
/** The 410 page, for the URL of a document that was deleted (TASK-195). */
|
|
@@ -291,19 +297,23 @@ export interface CreateRendererOptions {
|
|
|
291
297
|
*/
|
|
292
298
|
neighbours?: ((document: Document) => DocumentNeighbours) | undefined;
|
|
293
299
|
/**
|
|
294
|
-
* The
|
|
295
|
-
*
|
|
296
|
-
*
|
|
297
|
-
*
|
|
298
|
-
|
|
299
|
-
|
|
300
|
+
* The listed posts and pages of the site whose body links to a document,
|
|
301
|
+
* newest first, for `backlinks` on its page (TASK-322). Injected and asked
|
|
302
|
+
* per render for the reason the neighbours are; a renderer built without it
|
|
303
|
+
* lists none.
|
|
304
|
+
*/
|
|
305
|
+
backlinks?: ((document: Document) => readonly Document[]) | undefined;
|
|
306
|
+
/**
|
|
307
|
+
* The newest `count` published posts, for `newestPosts` on the front page
|
|
308
|
+
* (TASK-317). The theme chooses the count; the index decides what is
|
|
309
|
+
* published.
|
|
300
310
|
*/
|
|
301
|
-
|
|
311
|
+
newestPosts?: ((count: number) => readonly Document[]) | undefined;
|
|
302
312
|
/**
|
|
303
313
|
* Every published post, for a page whose front matter says `archive: true`
|
|
304
314
|
* (TASK-85).
|
|
305
315
|
*
|
|
306
|
-
* Injected for the reason the
|
|
316
|
+
* Injected for the reason the newest posts are, and asked per render and
|
|
307
317
|
* only for a page that asked for the list: an archive is the one listing
|
|
308
318
|
* with no paging, so a site with a thousand posts runs the query on the one
|
|
309
319
|
* page that prints a thousand links and on no other.
|
package/dist/web/render.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/web/render.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAGvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAG7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAOzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAclD,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAE7E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/web/render.ts"],"names":[],"mappings":"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"}
|
package/dist/web/render.js
CHANGED
|
@@ -9,7 +9,9 @@ import { archiveMonths, archiveOpen } from './archive.js';
|
|
|
9
9
|
import { authorContext, siteAuthorContext } from './authors.js';
|
|
10
10
|
import { citedPhotoContext, citedPictureContext, createSiteDataSource, documentContext, frontPageSlugs, postsPerPage, siteLocale, siteTimezone, taxonomyBases, termRedirects, themeName, } from './context.js';
|
|
11
11
|
import { answerable, commentPolicyOf } from '../comments/policy.js';
|
|
12
|
-
import {
|
|
12
|
+
import { commentAnchor } from './conversation.js';
|
|
13
|
+
import { commentPageHref } from './guids.js';
|
|
14
|
+
import { activityStreamsId, isServed } from './documents.js';
|
|
13
15
|
import { commentsFeedPath } from './feeds.js';
|
|
14
16
|
import { navigationMenus } from './navigation.js';
|
|
15
17
|
import { resolveLicense } from './license.js';
|
|
@@ -20,7 +22,7 @@ import { createThemeSource, findThemeFile } from './themes.js';
|
|
|
20
22
|
import { citedPictureAlt } from '../webmention/cited-picture.js';
|
|
21
23
|
import { readCitedStart } from '../webmention/cited-start.js';
|
|
22
24
|
import { handSyndicationOf } from '../webmention/syndication.js';
|
|
23
|
-
import { locationContext, syndicationLinks } from './context.js';
|
|
25
|
+
import { backlinkContext, locationContext, syndicationLinks } from './context.js';
|
|
24
26
|
import { pingbackEndpointFor } from '../webmention/pingback.js';
|
|
25
27
|
import { webmentionEndpointFor } from '../webmention/routes.js';
|
|
26
28
|
/** Templates the default theme ships and the public routes ask for by name. */
|
|
@@ -32,6 +34,7 @@ export const TEMPLATES = {
|
|
|
32
34
|
category: 'layouts/category.njk',
|
|
33
35
|
author: 'layouts/author.njk',
|
|
34
36
|
search: 'layouts/search.njk',
|
|
37
|
+
comment: 'layouts/comment.njk',
|
|
35
38
|
notFound: 'layouts/404.njk',
|
|
36
39
|
gone: 'layouts/410.njk',
|
|
37
40
|
serverError: 'layouts/500.njk',
|
|
@@ -209,24 +212,19 @@ export function createRenderer(options) {
|
|
|
209
212
|
const context = documentContext(document, config, authorContext(people, document.author), loading, options.replyContext);
|
|
210
213
|
return { ...context, ...citedBy(document) };
|
|
211
214
|
}
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
*
|
|
216
|
-
* One read of the users file for the whole list, the way a listing does it:
|
|
217
|
-
* five posts is five bylines resolved against the same people.
|
|
218
|
-
*
|
|
219
|
-
* The first post's first image is fetched at once when the front page's own
|
|
220
|
-
* words above it have no image, because it is then the first one on the page.
|
|
221
|
-
*/
|
|
222
|
-
function recentPostsContext(page) {
|
|
223
|
-
const posts = options.recentPosts?.();
|
|
224
|
-
if (posts === undefined)
|
|
215
|
+
function newestPostsContext(page) {
|
|
216
|
+
const source = options.newestPosts;
|
|
217
|
+
if (source === undefined)
|
|
225
218
|
return {};
|
|
226
|
-
const people = users();
|
|
227
219
|
const pageLeads = page.html.includes('<img');
|
|
228
220
|
return {
|
|
229
|
-
|
|
221
|
+
newestPosts: (count) => {
|
|
222
|
+
if (typeof count !== 'number' || !Number.isInteger(count) || count < 1) {
|
|
223
|
+
throw new RangeError(`newestPosts(count) takes a whole number of posts, at least 1, not ${String(count)}`);
|
|
224
|
+
}
|
|
225
|
+
const people = users();
|
|
226
|
+
return source(count).map((document, index) => entryContext(document, people, { lead: !pageLeads && index === 0 }));
|
|
227
|
+
},
|
|
230
228
|
};
|
|
231
229
|
}
|
|
232
230
|
/**
|
|
@@ -299,17 +297,16 @@ export function createRenderer(options) {
|
|
|
299
297
|
// added here rather than in `documentContext` because it needs the
|
|
300
298
|
// site's base URL, which a document on its own does not carry.
|
|
301
299
|
const objectId = activityStreamsId(document, config.baseUrl);
|
|
302
|
-
// `
|
|
303
|
-
//
|
|
304
|
-
// a
|
|
305
|
-
//
|
|
306
|
-
//
|
|
307
|
-
//
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
const said =
|
|
311
|
-
|
|
312
|
-
: undefined;
|
|
300
|
+
// `conversation` is what was said back. It is on the context only when
|
|
301
|
+
// there is something in it, so a theme can ask `{% if conversation %}`
|
|
302
|
+
// and a post nobody has answered renders no empty section (TASK-49).
|
|
303
|
+
// `commentsFeed` is where it is syndicated, for a served document that
|
|
304
|
+
// shows one, and is set here rather than in a layout so that a site which
|
|
305
|
+
// overrides `post.njk` or `page.njk` keeps the link.
|
|
306
|
+
const now = config.now();
|
|
307
|
+
const shows = answerable(document, commentPolicyOf(siteData.read()), now);
|
|
308
|
+
const said = shows ? options.conversation?.(document) : undefined;
|
|
309
|
+
const feedsIt = shows && isServed(document, now);
|
|
313
310
|
// `commentForm` is on the context only when the post is open, so the
|
|
314
311
|
// theme asks `{% if commentForm %}` rather than working the rules out
|
|
315
312
|
// for itself — and a closed post shows the thread with no form.
|
|
@@ -324,7 +321,7 @@ export function createRenderer(options) {
|
|
|
324
321
|
// only when the site takes them, so a theme asks `{% if webmention %}`
|
|
325
322
|
// and a site that has turned them off advertises nothing.
|
|
326
323
|
const webmention = webmentionEndpointFor(siteData.read());
|
|
327
|
-
const pingback = pingbackEndpointFor(siteData.read(), document,
|
|
324
|
+
const pingback = pingbackEndpointFor(siteData.read(), document, now);
|
|
328
325
|
// The posts either side of this one, as the two links a theme draws under
|
|
329
326
|
// an entry (TASK-79). Each is on the context only when there is one, so a
|
|
330
327
|
// theme asks `{% if previous %}` and the ends of the archive draw nothing.
|
|
@@ -343,14 +340,11 @@ export function createRenderer(options) {
|
|
|
343
340
|
...(writer === undefined ? {} : { siteAuthor: writer }),
|
|
344
341
|
...neighbourContext('previous', either.previous, options.replyContext),
|
|
345
342
|
...neighbourContext('next', either.next, options.replyContext),
|
|
343
|
+
backlinks: (options.backlinks?.(document) ?? []).map((linking) => backlinkContext(linking, options.replyContext)),
|
|
346
344
|
url,
|
|
347
345
|
page: { ...context.page, url },
|
|
348
|
-
...(objectId === undefined
|
|
349
|
-
|
|
350
|
-
: {
|
|
351
|
-
activityStreams: objectId,
|
|
352
|
-
commentsFeed: commentsFeedPath(document.permalink),
|
|
353
|
-
}),
|
|
346
|
+
...(objectId === undefined ? {} : { activityStreams: objectId }),
|
|
347
|
+
...(feedsIt ? { commentsFeed: commentsFeedPath(document.permalink) } : {}),
|
|
354
348
|
// And the whole archive, for a page whose front matter asked for it
|
|
355
349
|
// (TASK-85). On the context only for that page, so a theme asks
|
|
356
350
|
// `{% if archiveMonths %}` exactly as it asks about the contact form.
|
|
@@ -399,13 +393,7 @@ export function createRenderer(options) {
|
|
|
399
393
|
// should say the URL this is served at rather than the one that
|
|
400
394
|
// redirects here.
|
|
401
395
|
url: '/',
|
|
402
|
-
|
|
403
|
-
// page is for (decision-16). Built here rather than by the route
|
|
404
|
-
// because it is the same document context every listing entry is, and
|
|
405
|
-
// resolved once for the whole list the way a listing's bylines are.
|
|
406
|
-
// `postsPage` goes with them: the front page is the one page that
|
|
407
|
-
// links the listing by name rather than by menu item.
|
|
408
|
-
extra: { ...recentPostsContext(document), ...postsPageContext(), ...extra },
|
|
396
|
+
extra: { ...newestPostsContext(document), ...postsPageContext(), ...extra },
|
|
409
397
|
viewer,
|
|
410
398
|
});
|
|
411
399
|
}
|
|
@@ -504,6 +492,20 @@ export function createRenderer(options) {
|
|
|
504
492
|
pagination: { ...search.pagination, items },
|
|
505
493
|
});
|
|
506
494
|
},
|
|
495
|
+
renderComment({ post, comment, ancestors }) {
|
|
496
|
+
const url = commentPageHref(comment.id);
|
|
497
|
+
const on = entryContext(post, users(), { lead: false });
|
|
498
|
+
return render(TEMPLATES.comment, {
|
|
499
|
+
title: `${comment.author.name} on ${on.label}`,
|
|
500
|
+
url,
|
|
501
|
+
page: { url },
|
|
502
|
+
noindex: true,
|
|
503
|
+
comment,
|
|
504
|
+
ancestors,
|
|
505
|
+
post: on,
|
|
506
|
+
threadUrl: `${post.permalink}#${commentAnchor(comment.id)}`,
|
|
507
|
+
});
|
|
508
|
+
},
|
|
507
509
|
renderNotFound(url) {
|
|
508
510
|
return render(TEMPLATES.notFound, {
|
|
509
511
|
title: 'Not found',
|
package/dist/web/render.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/web/render.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/web/render.ts"],"names":[],"mappings":"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"}
|
package/dist/web/routes.d.ts
CHANGED
|
@@ -30,10 +30,10 @@ export declare function listingPageHref(root: string, index: number): string;
|
|
|
30
30
|
*/
|
|
31
31
|
export declare function feedHref(term: TaxonomyTerm | undefined, format: FeedFormat, bases: TaxonomyBases): string;
|
|
32
32
|
/**
|
|
33
|
-
* Where the site's comments feed lives, and where one
|
|
33
|
+
* Where the site's comments feed lives, and where one document's does.
|
|
34
34
|
*
|
|
35
35
|
* WordPress's URLs, so a site migrated from it keeps both: the whole site's
|
|
36
|
-
* comments at `/comments/feed/`, and a
|
|
36
|
+
* comments at `/comments/feed/`, and a document's under its own permalink. There
|
|
37
37
|
* is one format, RSS 2.0, because that is what a comments feed is read in.
|
|
38
38
|
*/
|
|
39
39
|
export declare function commentsFeedHref(document: Document | undefined): string;
|
package/dist/web/routes.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/web/routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAqB,MAAM,MAAM,CAAC;AAK7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAIvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/web/routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAqB,MAAM,MAAM,CAAC;AAK7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAIvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAmE5C,OAAO,KAAK,EAAkC,UAAU,EAAc,MAAM,YAAY,CAAC;AAyDzF,OAAO,KAAK,EAAY,aAAa,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE3E;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAiL3D;AAyiDD,kEAAkE;AAClE,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnE;AA6BD;;;;;;GAMG;AACH,wBAAgB,QAAQ,CACtB,IAAI,EAAE,YAAY,GAAG,SAAS,EAC9B,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,aAAa,GACnB,MAAM,CAER;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,CAEvE;AAMD,4BAA4B;AAC5B,wBAAgB,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,QAAQ,CAEzD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,MAAM,CAO1D"}
|
package/dist/web/routes.js
CHANGED
|
@@ -9,6 +9,7 @@ import { sourceVersion } from '../images/paths.js';
|
|
|
9
9
|
import { findImageVariant, VARIANT_ASSET_PREFIX } from '../images/variants.js';
|
|
10
10
|
import { ASSET_VERSION_PARAM, assetNotModified, assetRangeResponse, assetResponse, assetVersion, findThemeAsset, findUpload, IMMUTABLE_ASSET, matchesEtag, THEME_ASSET_PREFIX, UPLOAD_ASSET_MAX_AGE, UPLOAD_ASSET_PREFIX, } from './assets.js';
|
|
11
11
|
import { COMMENT_NOTICE_PARAM, COMMENT_REPLY_PARAM } from '../comments/form.js';
|
|
12
|
+
import { answerable, commentPolicyOf } from '../comments/policy.js';
|
|
12
13
|
import { commentNoticeFor, commentReplyTarget, mountComments } from '../comments/routes.js';
|
|
13
14
|
import { commenterOf } from '../comments/viewer.js';
|
|
14
15
|
import { CONTACT_NOTICE_PARAM, contactNoticeFor } from '../contact/form.js';
|
|
@@ -20,8 +21,9 @@ import { advertiseIdentityEndpoints } from '../indieauth/discovery.js';
|
|
|
20
21
|
import { publicAdminBar } from './admin-bar.js';
|
|
21
22
|
import { authorFeedHref, authorContext, authorHref, authorNames, parseAuthorPath, profileContext, siteAuthorContext, } from './authors.js';
|
|
22
23
|
import { feedComments, spokenIn } from './conversation.js';
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
24
|
+
import { COMMENT_PAGE_PREFIX } from './guids.js';
|
|
25
|
+
import { goneDocumentAt, isGone, isListed, isServed, permalinkOfObjectId, previewDocumentAt, publicDocumentAt, } from './documents.js';
|
|
26
|
+
import { commentsFeedPath, REPLIES_ROOT, repliesFeedPath, commentsFeedResponse, feedPathUnder, feedResponse, feedSize, splitFeedPath, COMMENTS_ROOT, COMMENTS_TITLE_PREFIX, FEED_FORMATS, FEED_SEGMENTS, } from './feeds.js';
|
|
25
27
|
import { absoluteUrl, DOCUMENT_REPRESENTATIONS, documentJson, LISTING_REPRESENTATIONS, SEARCH_REPRESENTATIONS, lastModifiedOf, latestModified, MEDIA_TYPES, notAcceptableResponse, representationHref, representationEtag, representationResponse, selectRepresentation, splitRepresentationExtension, } from './negotiate.js';
|
|
26
28
|
import { offsetForPage, paginate } from './pagination.js';
|
|
27
29
|
import { TEMPLATES } from './render.js';
|
|
@@ -33,7 +35,7 @@ import { EMBED_PATH, embedPage, embedResponse, OEMBED_PATH, oEmbedFor, oEmbedReq
|
|
|
33
35
|
import { generatedLlmsTxt, llmsListingTxt, LLMS_TXT_LINK, LLMS_TXT_PATH, llmsTxtResponse, ownLlmsTxt, } from './llms.js';
|
|
34
36
|
import { indexNowKeyPath, indexNowKeyResponse } from './indexnow.js';
|
|
35
37
|
import { searchHref, searchJson, searchPageIndex, searchQuery, SEARCH_PAGE_PARAM, SEARCH_PATH, SEARCH_QUERY_PARAM, } from './search.js';
|
|
36
|
-
import { findQueryRedirect, redirectLocation } from './redirects.js';
|
|
38
|
+
import { findPathRedirect, findQueryRedirect, redirectLocation } from './redirects.js';
|
|
37
39
|
import { PAGE_SEGMENT, redirectedTerm, taxonomyForSegment, termHref } from './taxonomy.js';
|
|
38
40
|
/**
|
|
39
41
|
* Register the public site on a Hono app.
|
|
@@ -114,6 +116,11 @@ export function mountPublicSite(app) {
|
|
|
114
116
|
}
|
|
115
117
|
// The site-wide comments feed, for the same reason and at WordPress's URL.
|
|
116
118
|
app.get(commentsFeedHref(undefined), (c) => comments(c, undefined));
|
|
119
|
+
// A native comment's own page (TASK-318), at a fixed path so a permalink
|
|
120
|
+
// cannot take it.
|
|
121
|
+
app.get(`${COMMENT_PAGE_PREFIX}:id/`, (c) => commentPage(c, c.req.param('id')));
|
|
122
|
+
// The feed of one item's direct replies (TASK-324), fixed for the same reason.
|
|
123
|
+
app.get(`${REPLIES_ROOT}:segment/`, (c) => repliesFeed(c, c.req.param('segment')));
|
|
117
124
|
// The sitemap, its children and the robots file: fixed paths at the root of
|
|
118
125
|
// the site, which is the only place a crawler looks, and routes for the same
|
|
119
126
|
// reason the feeds are — no document permalinked there can take the URL a
|
|
@@ -292,7 +299,7 @@ function resolveRequest(c) {
|
|
|
292
299
|
return listing(c, request);
|
|
293
300
|
}
|
|
294
301
|
}
|
|
295
|
-
const feedRequest = parseFeedPath(
|
|
302
|
+
const feedRequest = parseFeedPath(c, pathname, bases, authors);
|
|
296
303
|
if (feedRequest !== undefined) {
|
|
297
304
|
const { target, format } = feedRequest;
|
|
298
305
|
const canonical = feedTargetHref(target, format, bases);
|
|
@@ -321,11 +328,11 @@ function resolveRequest(c) {
|
|
|
321
328
|
// is the front page.
|
|
322
329
|
if (document.path === pages.home?.path)
|
|
323
330
|
return c.redirect('/', 301);
|
|
324
|
-
// WordPress answered `?feed=rss2` on a permalink with that
|
|
325
|
-
// feed, which is the only feed a
|
|
326
|
-
// name a format a comments feed does not come in, so they are
|
|
327
|
-
// request at all and the page is served.
|
|
328
|
-
if (
|
|
331
|
+
// WordPress answered `?feed=rss2` on a permalink with that document's
|
|
332
|
+
// comments feed, which is the only feed a document has here too. The other
|
|
333
|
+
// spellings name a format a comments feed does not come in, so they are
|
|
334
|
+
// not a feed request at all and the page is served.
|
|
335
|
+
if (queryFeedFormat(c) === 'rss' && showsConversation(c, document)) {
|
|
329
336
|
return c.redirect(commentsFeedHref(document), 301);
|
|
330
337
|
}
|
|
331
338
|
return negotiateDocument(c, document, selectFromAccept(c, DOCUMENT_REPRESENTATIONS));
|
|
@@ -385,10 +392,8 @@ function resolveRequest(c) {
|
|
|
385
392
|
return c.redirect(canonical, 301);
|
|
386
393
|
// And a URL the site itself says has moved (TASK-128), after every live
|
|
387
394
|
// lookup and after the slash that would lead to one, so a declared source
|
|
388
|
-
// never shadows a live document.
|
|
389
|
-
|
|
390
|
-
const declared = c.var.redirects.current().paths;
|
|
391
|
-
const redirect = declared.get(pathname) ?? (pathname.endsWith('/') ? undefined : declared.get(`${pathname}/`));
|
|
395
|
+
// never shadows a live document.
|
|
396
|
+
const redirect = findPathRedirect(c.var.redirects.current(), pathname);
|
|
392
397
|
if (redirect !== undefined) {
|
|
393
398
|
return c.redirect(redirectLocation(redirect, search), redirect.status);
|
|
394
399
|
}
|
|
@@ -485,9 +490,10 @@ function movedTerm(c, term) {
|
|
|
485
490
|
*
|
|
486
491
|
* The site's own canonical feeds are real routes and never reach here; what
|
|
487
492
|
* does reach here is every taxonomy feed — their bases are a setting, so they
|
|
488
|
-
* cannot be in the route table — every
|
|
493
|
+
* cannot be in the route table — every document's comments feed, and every alias.
|
|
489
494
|
*/
|
|
490
|
-
function parseFeedPath(
|
|
495
|
+
function parseFeedPath(c, pathname, bases, authors) {
|
|
496
|
+
const { store } = c.var;
|
|
491
497
|
const split = splitFeedPath(pathname);
|
|
492
498
|
if (split === undefined)
|
|
493
499
|
return undefined;
|
|
@@ -505,16 +511,19 @@ function parseFeedPath(store, pathname, bases, authors) {
|
|
|
505
511
|
? { target: { kind: 'listing', subject: root }, format, canonical }
|
|
506
512
|
: undefined;
|
|
507
513
|
}
|
|
508
|
-
// Otherwise it may be a
|
|
509
|
-
//
|
|
510
|
-
// to it, and a comments feed for it would be empty for ever.
|
|
514
|
+
// Otherwise it may be a document's comments feed, which it has exactly when
|
|
515
|
+
// its page shows its conversation.
|
|
511
516
|
if (format !== 'rss')
|
|
512
517
|
return undefined;
|
|
513
518
|
const document = publicDocumentAt(store, split.root);
|
|
514
|
-
if (document
|
|
519
|
+
if (document === undefined || !showsConversation(c, document))
|
|
515
520
|
return undefined;
|
|
516
521
|
return { target: { kind: 'comments', document }, format, canonical };
|
|
517
522
|
}
|
|
523
|
+
/** Whether this document's page shows its conversation, and so has a comments feed. */
|
|
524
|
+
function showsConversation(c, document) {
|
|
525
|
+
return answerable(document, commentPolicyOf(c.var.renderer.site()), c.var.store.now());
|
|
526
|
+
}
|
|
518
527
|
/** Where the canonical URL of one feed is. */
|
|
519
528
|
function feedTargetHref(target, format, bases) {
|
|
520
529
|
return target.kind === 'listing'
|
|
@@ -543,7 +552,7 @@ function queryFeedFormat(c) {
|
|
|
543
552
|
* URL and is read back here. An unknown value says nothing at all rather than
|
|
544
553
|
* being printed, so the query cannot be used to put words on somebody's post.
|
|
545
554
|
*/
|
|
546
|
-
function commentNotice(c, document) {
|
|
555
|
+
function commentNotice(c, document, viewer) {
|
|
547
556
|
const notice = commentNoticeFor(c.req.query(COMMENT_NOTICE_PARAM));
|
|
548
557
|
return {
|
|
549
558
|
...(notice === undefined ? {} : { commentNotice: notice }),
|
|
@@ -554,6 +563,7 @@ function commentNotice(c, document) {
|
|
|
554
563
|
admin: c.var.admin,
|
|
555
564
|
document,
|
|
556
565
|
id: c.req.query(COMMENT_REPLY_PARAM),
|
|
566
|
+
thread: viewer === undefined ? undefined : c.var.conversation.thread(document),
|
|
557
567
|
}),
|
|
558
568
|
// And the thank-you after a contact form was sent, which travels the same
|
|
559
569
|
// way for the same reason (TASK-56).
|
|
@@ -602,7 +612,7 @@ function negotiateDocument(c, document, representation, href = document.permalin
|
|
|
602
612
|
const page = representation === 'html'
|
|
603
613
|
? c.var.renderer.renderPage(document, {
|
|
604
614
|
frontPage: href === '/',
|
|
605
|
-
extra: { ...commentNotice(c, document), ...(listed ? {} : { noindex: true }) },
|
|
615
|
+
extra: { ...commentNotice(c, document, viewer), ...(listed ? {} : { noindex: true }) },
|
|
606
616
|
viewer,
|
|
607
617
|
})
|
|
608
618
|
: undefined;
|
|
@@ -689,9 +699,9 @@ function canonicalPath(c, pathname, bases, authors) {
|
|
|
689
699
|
function canonicalTarget(c, pathname, bases, authors) {
|
|
690
700
|
const { store, renderer } = c.var;
|
|
691
701
|
// A feed first: `/feed`, `/feed/atom`, `/{base}/x/feed`, `/comments/feed`
|
|
692
|
-
// and a
|
|
702
|
+
// and a document's `{permalink}feed` all lead somewhere real, and `/feed/rss`
|
|
693
703
|
// leads to `/feed/` in the same one hop rather than to a second redirect.
|
|
694
|
-
const feedRequest = parseFeedPath(
|
|
704
|
+
const feedRequest = parseFeedPath(c, pathname, bases, authors);
|
|
695
705
|
if (feedRequest !== undefined) {
|
|
696
706
|
const { target } = feedRequest;
|
|
697
707
|
if (target.kind === 'listing' &&
|
|
@@ -1155,12 +1165,11 @@ function feed(c, format, subject) {
|
|
|
1155
1165
|
return feedResponse({ format, source, conditional: conditionalHeaders(c) });
|
|
1156
1166
|
}
|
|
1157
1167
|
/**
|
|
1158
|
-
* A post's comments, or the whole site's, as RSS 2.0.
|
|
1168
|
+
* A post's or page's comments, or the whole site's, as RSS 2.0.
|
|
1159
1169
|
*
|
|
1160
|
-
* A
|
|
1161
|
-
* and a reader that subscribed before anybody answered should keep
|
|
1162
|
-
*
|
|
1163
|
-
* document lookup rather than anything this feed decides.
|
|
1170
|
+
* A document with no replies answers an empty feed rather than a 404: it
|
|
1171
|
+
* exists, and a reader that subscribed before anybody answered should keep
|
|
1172
|
+
* polling. Which documents have a feed at all is {@link parseFeedPath}'s to say.
|
|
1164
1173
|
*/
|
|
1165
1174
|
function comments(c, document) {
|
|
1166
1175
|
const { conversation, renderer, config } = c.var;
|
|
@@ -1171,7 +1180,12 @@ function comments(c, document) {
|
|
|
1171
1180
|
// looking at one conversation. A post's own feed hands the builder entries
|
|
1172
1181
|
// with no post attached, and so its items name no post: there, every item
|
|
1173
1182
|
// answers the same one.
|
|
1174
|
-
const found = feedComments(document === undefined ? conversation.latest(limit) : spokenIn(conversation.thread(document)), {
|
|
1183
|
+
const found = feedComments(document === undefined ? conversation.latest(limit) : spokenIn(conversation.thread(document)), {
|
|
1184
|
+
baseUrl: config.baseUrl,
|
|
1185
|
+
limit,
|
|
1186
|
+
cited: (url) => c.var.replyContexts.read(url),
|
|
1187
|
+
post: document,
|
|
1188
|
+
});
|
|
1175
1189
|
const source = {
|
|
1176
1190
|
site,
|
|
1177
1191
|
comments: found,
|
|
@@ -1184,6 +1198,55 @@ function comments(c, document) {
|
|
|
1184
1198
|
};
|
|
1185
1199
|
return commentsFeedResponse(source, conditionalHeaders(c));
|
|
1186
1200
|
}
|
|
1201
|
+
/**
|
|
1202
|
+
* The feed of one item's direct replies (TASK-324): a post's or page's, or a
|
|
1203
|
+
* reply's, so a reader can walk a thread one level at a time through
|
|
1204
|
+
* `source:comments`. An item nobody answered has an empty feed; a segment
|
|
1205
|
+
* naming nothing a reader can see 404s, as does one on a document not showing
|
|
1206
|
+
* its conversation, by the rule `{permalink}feed/` follows.
|
|
1207
|
+
*/
|
|
1208
|
+
function repliesFeed(c, segment) {
|
|
1209
|
+
const { conversation, renderer, config } = c.var;
|
|
1210
|
+
const found = conversation.repliesTo(segment);
|
|
1211
|
+
if (found === undefined || !showsConversation(c, found.post))
|
|
1212
|
+
return notFound(c);
|
|
1213
|
+
const site = renderer.site();
|
|
1214
|
+
const cited = (url) => c.var.replyContexts.read(url);
|
|
1215
|
+
const label = postLabel(found.post, cited);
|
|
1216
|
+
const source = {
|
|
1217
|
+
site,
|
|
1218
|
+
comments: feedComments(found.replies, {
|
|
1219
|
+
baseUrl: config.baseUrl,
|
|
1220
|
+
limit: feedSize(site),
|
|
1221
|
+
cited,
|
|
1222
|
+
post: found.post,
|
|
1223
|
+
}),
|
|
1224
|
+
title: found.reply === null
|
|
1225
|
+
? `Replies to: ${label}`
|
|
1226
|
+
: `Replies to ${found.reply.author.name} on ${label}`,
|
|
1227
|
+
href: found.reply?.url ?? found.post.permalink,
|
|
1228
|
+
feedHref: repliesFeedPath(segment),
|
|
1229
|
+
baseUrl: config.baseUrl,
|
|
1230
|
+
};
|
|
1231
|
+
return commentsFeedResponse(source, conditionalHeaders(c));
|
|
1232
|
+
}
|
|
1233
|
+
/**
|
|
1234
|
+
* One native comment on a page of its own (TASK-318), answering as its post
|
|
1235
|
+
* would: 410 once the post is deleted, and 404 while it is not served or not
|
|
1236
|
+
* showing its conversation. It is never listed anywhere, so it is noindex.
|
|
1237
|
+
*/
|
|
1238
|
+
function commentPage(c, id) {
|
|
1239
|
+
const { conversation, renderer, store } = c.var;
|
|
1240
|
+
const found = conversation.comment(id);
|
|
1241
|
+
if (found === undefined)
|
|
1242
|
+
return notFound(c);
|
|
1243
|
+
const now = store.now();
|
|
1244
|
+
if (isGone(found.post, now))
|
|
1245
|
+
return gone(c);
|
|
1246
|
+
if (!isServed(found.post, now) || !showsConversation(c, found.post))
|
|
1247
|
+
return notFound(c);
|
|
1248
|
+
return c.html(renderer.renderComment(found), 200, { 'x-robots-tag': 'noindex' });
|
|
1249
|
+
}
|
|
1187
1250
|
/**
|
|
1188
1251
|
* The sitemap, or one of its children once the site is too big for one file.
|
|
1189
1252
|
*
|
|
@@ -1447,10 +1510,10 @@ export function feedHref(term, format, bases) {
|
|
|
1447
1510
|
return feedPathUnder(listingHref({ term }, 0, bases), format);
|
|
1448
1511
|
}
|
|
1449
1512
|
/**
|
|
1450
|
-
* Where the site's comments feed lives, and where one
|
|
1513
|
+
* Where the site's comments feed lives, and where one document's does.
|
|
1451
1514
|
*
|
|
1452
1515
|
* WordPress's URLs, so a site migrated from it keeps both: the whole site's
|
|
1453
|
-
* comments at `/comments/feed/`, and a
|
|
1516
|
+
* comments at `/comments/feed/`, and a document's under its own permalink. There
|
|
1454
1517
|
* is one format, RSS 2.0, because that is what a comments feed is read in.
|
|
1455
1518
|
*/
|
|
1456
1519
|
export function commentsFeedHref(document) {
|