@geekity/cms 0.15.0 → 0.16.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 +107 -0
- package/admin/pages/documents/editor.njk +51 -0
- package/admin/pages/documents/syndication.njk +110 -0
- package/admin/pages/federation/followers.njk +7 -0
- package/admin/static/admin.css +11 -0
- package/dist/admin/documents.d.ts +101 -0
- package/dist/admin/documents.d.ts.map +1 -1
- package/dist/admin/documents.js +199 -67
- package/dist/admin/documents.js.map +1 -1
- package/dist/admin/federation.d.ts +15 -0
- package/dist/admin/federation.d.ts.map +1 -1
- package/dist/admin/federation.js +19 -0
- package/dist/admin/federation.js.map +1 -1
- package/dist/admin/menu.d.ts.map +1 -1
- package/dist/admin/menu.js +3 -0
- package/dist/admin/menu.js.map +1 -1
- package/dist/admin/photo-field.d.ts +39 -0
- package/dist/admin/photo-field.d.ts.map +1 -0
- package/dist/admin/photo-field.js +91 -0
- package/dist/admin/photo-field.js.map +1 -0
- package/dist/admin/preview.d.ts.map +1 -1
- package/dist/admin/preview.js +6 -1
- package/dist/admin/preview.js.map +1 -1
- package/dist/admin/routes.d.ts.map +1 -1
- package/dist/admin/routes.js +4 -0
- package/dist/admin/routes.js.map +1 -1
- package/dist/admin/syndication-targets.d.ts +57 -0
- package/dist/admin/syndication-targets.d.ts.map +1 -0
- package/dist/admin/syndication-targets.js +266 -0
- package/dist/admin/syndication-targets.js.map +1 -0
- package/dist/admin/templates.d.ts +1 -0
- package/dist/admin/templates.d.ts.map +1 -1
- package/dist/admin/templates.js +1 -0
- package/dist/admin/templates.js.map +1 -1
- package/dist/admin/uploads.d.ts +6 -0
- package/dist/admin/uploads.d.ts.map +1 -1
- package/dist/admin/uploads.js +1 -1
- package/dist/admin/uploads.js.map +1 -1
- package/dist/content/citation.d.ts +36 -0
- package/dist/content/citation.d.ts.map +1 -0
- package/dist/content/citation.js +31 -0
- package/dist/content/citation.js.map +1 -0
- package/dist/content/index.d.ts +2 -0
- package/dist/content/index.d.ts.map +1 -1
- package/dist/content/index.js +1 -0
- package/dist/content/index.js.map +1 -1
- package/dist/content/photo.d.ts +45 -0
- package/dist/content/photo.d.ts.map +1 -0
- package/dist/content/photo.js +55 -0
- package/dist/content/photo.js.map +1 -0
- package/dist/content/post-type.d.ts +20 -8
- package/dist/content/post-type.d.ts.map +1 -1
- package/dist/content/post-type.js +17 -0
- package/dist/content/post-type.js.map +1 -1
- package/dist/federation/article.d.ts.map +1 -1
- package/dist/federation/article.js +59 -5
- package/dist/federation/article.js.map +1 -1
- package/dist/federation/citations.d.ts +38 -0
- package/dist/federation/citations.d.ts.map +1 -0
- package/dist/federation/citations.js +98 -0
- package/dist/federation/citations.js.map +1 -0
- package/dist/federation/delivery.d.ts.map +1 -1
- package/dist/federation/delivery.js +79 -31
- package/dist/federation/delivery.js.map +1 -1
- package/dist/images/alt-text.d.ts +6 -0
- package/dist/images/alt-text.d.ts.map +1 -1
- package/dist/images/alt-text.js +10 -0
- package/dist/images/alt-text.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -2
- package/dist/index.js.map +1 -1
- package/dist/indieauth/bearer.d.ts +6 -1
- package/dist/indieauth/bearer.d.ts.map +1 -1
- package/dist/indieauth/bearer.js +39 -12
- package/dist/indieauth/bearer.js.map +1 -1
- package/dist/indieauth/discovery.d.ts +9 -4
- package/dist/indieauth/discovery.d.ts.map +1 -1
- package/dist/indieauth/discovery.js +18 -7
- package/dist/indieauth/discovery.js.map +1 -1
- package/dist/micropub/create.d.ts +56 -0
- package/dist/micropub/create.d.ts.map +1 -0
- package/dist/micropub/create.js +200 -0
- package/dist/micropub/create.js.map +1 -0
- package/dist/micropub/endpoint.d.ts +21 -0
- package/dist/micropub/endpoint.d.ts.map +1 -0
- package/dist/micropub/endpoint.js +353 -0
- package/dist/micropub/endpoint.js.map +1 -0
- package/dist/micropub/media.d.ts +14 -0
- package/dist/micropub/media.d.ts.map +1 -0
- package/dist/micropub/media.js +93 -0
- package/dist/micropub/media.js.map +1 -0
- package/dist/micropub/update.d.ts +44 -0
- package/dist/micropub/update.d.ts.map +1 -0
- package/dist/micropub/update.js +133 -0
- package/dist/micropub/update.js.map +1 -0
- package/dist/web/context.d.ts +42 -3
- package/dist/web/context.d.ts.map +1 -1
- package/dist/web/context.js +41 -1
- package/dist/web/context.js.map +1 -1
- package/dist/web/render.d.ts +15 -0
- package/dist/web/render.d.ts.map +1 -1
- package/dist/web/render.js +16 -0
- package/dist/web/render.js.map +1 -1
- package/dist/web/routes.js +2 -2
- package/dist/webmention/index.d.ts +2 -0
- package/dist/webmention/index.d.ts.map +1 -1
- package/dist/webmention/index.js +1 -0
- package/dist/webmention/index.js.map +1 -1
- package/dist/webmention/service.d.ts.map +1 -1
- package/dist/webmention/service.js +96 -18
- package/dist/webmention/service.js.map +1 -1
- package/dist/webmention/syndication.d.ts +135 -0
- package/dist/webmention/syndication.d.ts.map +1 -0
- package/dist/webmention/syndication.js +337 -0
- package/dist/webmention/syndication.js.map +1 -0
- package/package.json +1 -1
- package/themes/default/README.md +40 -9
- package/themes/default/layouts/post.njk +19 -6
- package/themes/default/partials/citations.njk +17 -0
- package/themes/default/partials/jsonld.njk +12 -1
- package/themes/default/partials/photos.njk +10 -0
- package/themes/default/partials/post-list.njk +7 -0
- package/themes/default/src/style.css +9 -0
- package/themes/default/static/style.css +16 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { isWebUrl } from './enclosure.js';
|
|
2
|
+
/** The citing properties, each a front matter key, in Post Type Discovery's order. */
|
|
3
|
+
export const CITATION_PROPERTIES = ['repost-of', 'like-of', 'bookmark-of'];
|
|
4
|
+
/**
|
|
5
|
+
* The citations a post's front matter makes, in {@link CITATION_PROPERTIES}
|
|
6
|
+
* order. A value that is no web address cites nothing, so it is left out; a
|
|
7
|
+
* list of one, which mf2 allows, is its one URL.
|
|
8
|
+
*/
|
|
9
|
+
export function citationsOf(extra) {
|
|
10
|
+
return CITATION_PROPERTIES.flatMap((property) => {
|
|
11
|
+
const url = citedUrl(extra[property]);
|
|
12
|
+
return url === undefined ? [] : [{ property, url }];
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
/** The URL a post cites under one property, or `undefined`. */
|
|
16
|
+
export function citationOf(document, property) {
|
|
17
|
+
return citationsOf(document.extra).find((citation) => citation.property === property)?.url;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* A citing property as the file spells it, valid or not: the text, or the one
|
|
21
|
+
* text of a list of one, which mf2 allows. Empty for anything else.
|
|
22
|
+
*/
|
|
23
|
+
export function citationText(value) {
|
|
24
|
+
const first = Array.isArray(value) && value.length === 1 ? value[0] : value;
|
|
25
|
+
return typeof first === 'string' ? first : '';
|
|
26
|
+
}
|
|
27
|
+
function citedUrl(value) {
|
|
28
|
+
const url = citationText(value).trim();
|
|
29
|
+
return isWebUrl(url) ? url : undefined;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=citation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"citation.js","sourceRoot":"","sources":["../../src/content/citation.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,sFAAsF;AACtF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,WAAW,EAAE,SAAS,EAAE,aAAa,CAAU,CAAC;AAWpF;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,KAAwC;IAClE,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;QAC9C,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;QACtC,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,UAAU,CACxB,QAAiC,EACjC,QAA0B;IAE1B,OAAO,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC,EAAE,GAAG,CAAC;AAC7F,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,MAAM,KAAK,GAAY,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACrF,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAChD,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IACvC,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AACzC,CAAC"}
|
package/dist/content/index.d.ts
CHANGED
|
@@ -2,6 +2,8 @@ export { KNOWN_FRONT_MATTER_KEYS } from './document.ts';
|
|
|
2
2
|
export type { ActivityPubMetadata, Document, DocumentContent, DocumentType } from './document.ts';
|
|
3
3
|
export { ENCLOSURE_FRONT_MATTER_KEY, enclosureOf, isCaptions, playsAsVideo, TRANSCRIPT_TYPES, } from './enclosure.ts';
|
|
4
4
|
export type { AlternateEnclosure, Enclosure, Transcript, TranscriptType } from './enclosure.ts';
|
|
5
|
+
export { PHOTO_FRONT_MATTER_KEY, photoAlt, photosOf } from './photo.ts';
|
|
6
|
+
export type { Photo } from './photo.ts';
|
|
5
7
|
export { renderMarkdown } from './markdown.ts';
|
|
6
8
|
export { KNOWN_UPLOAD_TYPES, matchesSignature, normalizeUploadType, UPLOAD_MEDIA_TYPES, } from './media.ts';
|
|
7
9
|
export type { UploadKind, UploadMediaType, UploadSignature } from './media.ts';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/content/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,YAAY,EAAE,mBAAmB,EAAE,QAAQ,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClG,OAAO,EACL,0BAA0B,EAC1B,WAAW,EACX,UAAU,EACV,YAAY,EACZ,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,kBAAkB,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChG,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACvE,YAAY,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACzE,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACpE,YAAY,EAAE,oBAAoB,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAC5F,OAAO,EACL,UAAU,EACV,mBAAmB,EACnB,gBAAgB,EAChB,UAAU,EACV,aAAa,EACb,YAAY,GACb,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACtD,YAAY,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,iBAAiB,GAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,YAAY,GACb,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,sBAAsB,EACtB,cAAc,EACd,SAAS,EACT,cAAc,EACd,iBAAiB,GAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,aAAa,EACb,WAAW,EACX,uBAAuB,EACvB,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,eAAe,GAChB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,aAAa,EACb,KAAK,EACL,aAAa,EACb,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,uBAAuB,EACvB,SAAS,EACT,QAAQ,GACT,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAClG,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACnE,YAAY,EACV,YAAY,EACZ,oBAAoB,EACpB,eAAe,EACf,aAAa,EACb,WAAW,EACX,wBAAwB,EACxB,cAAc,EACd,kBAAkB,EAClB,UAAU,EACV,UAAU,GACX,MAAM,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/content/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,YAAY,EAAE,mBAAmB,EAAE,QAAQ,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClG,OAAO,EACL,0BAA0B,EAC1B,WAAW,EACX,UAAU,EACV,YAAY,EACZ,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,kBAAkB,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChG,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACxE,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACvE,YAAY,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACzE,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACpE,YAAY,EAAE,oBAAoB,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAC5F,OAAO,EACL,UAAU,EACV,mBAAmB,EACnB,gBAAgB,EAChB,UAAU,EACV,aAAa,EACb,YAAY,GACb,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACtD,YAAY,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,iBAAiB,GAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,YAAY,GACb,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,sBAAsB,EACtB,cAAc,EACd,SAAS,EACT,cAAc,EACd,iBAAiB,GAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,aAAa,EACb,WAAW,EACX,uBAAuB,EACvB,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,eAAe,GAChB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,aAAa,EACb,KAAK,EACL,aAAa,EACb,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,uBAAuB,EACvB,SAAS,EACT,QAAQ,GACT,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAClG,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACnE,YAAY,EACV,YAAY,EACZ,oBAAoB,EACpB,eAAe,EACf,aAAa,EACb,WAAW,EACX,wBAAwB,EACxB,cAAc,EACd,kBAAkB,EAClB,UAAU,EACV,UAAU,GACX,MAAM,WAAW,CAAC"}
|
package/dist/content/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { KNOWN_FRONT_MATTER_KEYS } from './document.js';
|
|
2
2
|
export { ENCLOSURE_FRONT_MATTER_KEY, enclosureOf, isCaptions, playsAsVideo, TRANSCRIPT_TYPES, } from './enclosure.js';
|
|
3
|
+
export { PHOTO_FRONT_MATTER_KEY, photoAlt, photosOf } from './photo.js';
|
|
3
4
|
export { renderMarkdown } from './markdown.js';
|
|
4
5
|
export { KNOWN_UPLOAD_TYPES, matchesSignature, normalizeUploadType, UPLOAD_MEDIA_TYPES, } from './media.js';
|
|
5
6
|
export { hashDocument, parseDocument, typeForPath } from './parser.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/content/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAExD,OAAO,EACL,0BAA0B,EAC1B,WAAW,EACX,UAAU,EACV,YAAY,EACZ,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEvE,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEzE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEpE,OAAO,EACL,UAAU,EACV,mBAAmB,EACnB,gBAAgB,EAChB,UAAU,EACV,aAAa,EACb,YAAY,GACb,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEtD,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,iBAAiB,GAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,YAAY,GACb,MAAM,eAAe,CAAC;AAQvB,OAAO,EACL,aAAa,EACb,WAAW,EACX,uBAAuB,EACvB,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,eAAe,GAChB,MAAM,YAAY,CAAC;AAapB,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAClG,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/content/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAExD,OAAO,EACL,0BAA0B,EAC1B,WAAW,EACX,UAAU,EACV,YAAY,EACZ,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAExE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEvE,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEzE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEpE,OAAO,EACL,UAAU,EACV,mBAAmB,EACnB,gBAAgB,EAChB,UAAU,EACV,aAAa,EACb,YAAY,GACb,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEtD,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,iBAAiB,GAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,YAAY,GACb,MAAM,eAAe,CAAC;AAQvB,OAAO,EACL,aAAa,EACb,WAAW,EACX,uBAAuB,EACvB,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,eAAe,GAChB,MAAM,YAAY,CAAC;AAapB,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAClG,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A post's photos (TASK-166): what Micropub's `photo` property carries, each
|
|
3
|
+
* one an address with optional alt text.
|
|
4
|
+
*
|
|
5
|
+
* ```yaml
|
|
6
|
+
* photo:
|
|
7
|
+
* - url: /uploads/2026/10/beach.jpg
|
|
8
|
+
* alt: Waves breaking at dusk
|
|
9
|
+
* - url: https://cdn.example.com/dog.jpg
|
|
10
|
+
* ```
|
|
11
|
+
*
|
|
12
|
+
* Like `enclosure`, it stays in {@link Document.extra}: {@link photosOf} is the
|
|
13
|
+
* one reading of it, and the theme, the federation and Post Type Discovery
|
|
14
|
+
* read only what it returns.
|
|
15
|
+
*/
|
|
16
|
+
import type { AltTextLibrary } from '../images/alt-text.ts';
|
|
17
|
+
/** The front matter key the photos are under, Micropub's property name. */
|
|
18
|
+
export declare const PHOTO_FRONT_MATTER_KEY = "photo";
|
|
19
|
+
/** One photo, read from the front matter. */
|
|
20
|
+
export interface Photo {
|
|
21
|
+
/** An upload's site-relative URL, or an absolute `http` or `https` one. */
|
|
22
|
+
url: string;
|
|
23
|
+
/** What the post says the photo shows. Absent leaves it to the media library. */
|
|
24
|
+
alt?: string | undefined;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* The photos a post's front matter lists, in its order.
|
|
28
|
+
*
|
|
29
|
+
* A bare address reads as a photo with no alt text, and a single photo need
|
|
30
|
+
* not be in a list. An entry whose address is neither an upload nor a web
|
|
31
|
+
* address is dropped on its own, so one bad line costs that photo only.
|
|
32
|
+
*/
|
|
33
|
+
export declare function photosOf(extra: Readonly<Record<string, unknown>>): Photo[];
|
|
34
|
+
/** Whether an address is one a photo can have: an upload or a web address. */
|
|
35
|
+
export declare function isPhotoUrl(value: string): boolean;
|
|
36
|
+
/** The photos as the front matter spells them: no alt that nobody gave. */
|
|
37
|
+
export declare function photoFrontMatter(photos: readonly Photo[]): Record<string, string>[];
|
|
38
|
+
/**
|
|
39
|
+
* The alt text a photo is shown with: its own, else what the media library
|
|
40
|
+
* says about the upload (TASK-141), which is empty for a decorative one. So a
|
|
41
|
+
* library picture is described once, in the library, rather than in every
|
|
42
|
+
* post that shows it. `undefined` when nobody has described it.
|
|
43
|
+
*/
|
|
44
|
+
export declare function photoAlt(photo: Photo, library: AltTextLibrary): string | undefined;
|
|
45
|
+
//# sourceMappingURL=photo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"photo.d.ts","sourceRoot":"","sources":["../../src/content/photo.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAI5D,2EAA2E;AAC3E,eAAO,MAAM,sBAAsB,UAAU,CAAC;AAE9C,6CAA6C;AAC7C,MAAM,WAAW,KAAK;IACpB,2EAA2E;IAC3E,GAAG,EAAE,MAAM,CAAC;IACZ,iFAAiF;IACjF,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1B;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,KAAK,EAAE,CAI1E;AAED,8EAA8E;AAC9E,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED,2EAA2E;AAC3E,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAInF;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAOlF"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { UPLOAD_ASSET_PREFIX } from '../web/assets.js';
|
|
2
|
+
import { isUploadUrl, isWebUrl } from './enclosure.js';
|
|
3
|
+
/** The front matter key the photos are under, Micropub's property name. */
|
|
4
|
+
export const PHOTO_FRONT_MATTER_KEY = 'photo';
|
|
5
|
+
/**
|
|
6
|
+
* The photos a post's front matter lists, in its order.
|
|
7
|
+
*
|
|
8
|
+
* A bare address reads as a photo with no alt text, and a single photo need
|
|
9
|
+
* not be in a list. An entry whose address is neither an upload nor a web
|
|
10
|
+
* address is dropped on its own, so one bad line costs that photo only.
|
|
11
|
+
*/
|
|
12
|
+
export function photosOf(extra) {
|
|
13
|
+
const raw = extra[PHOTO_FRONT_MATTER_KEY];
|
|
14
|
+
if (raw === undefined)
|
|
15
|
+
return [];
|
|
16
|
+
return (Array.isArray(raw) ? raw : [raw]).flatMap((entry) => photoOf(entry) ?? []);
|
|
17
|
+
}
|
|
18
|
+
/** Whether an address is one a photo can have: an upload or a web address. */
|
|
19
|
+
export function isPhotoUrl(value) {
|
|
20
|
+
return isUploadUrl(value) || isWebUrl(value);
|
|
21
|
+
}
|
|
22
|
+
/** The photos as the front matter spells them: no alt that nobody gave. */
|
|
23
|
+
export function photoFrontMatter(photos) {
|
|
24
|
+
return photos.map((photo) => photo.alt === undefined ? { url: photo.url } : { url: photo.url, alt: photo.alt });
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* The alt text a photo is shown with: its own, else what the media library
|
|
28
|
+
* says about the upload (TASK-141), which is empty for a decorative one. So a
|
|
29
|
+
* library picture is described once, in the library, rather than in every
|
|
30
|
+
* post that shows it. `undefined` when nobody has described it.
|
|
31
|
+
*/
|
|
32
|
+
export function photoAlt(photo, library) {
|
|
33
|
+
if (photo.alt !== undefined)
|
|
34
|
+
return photo.alt;
|
|
35
|
+
const described = isUploadUrl(photo.url)
|
|
36
|
+
? library.get(photo.url.slice(UPLOAD_ASSET_PREFIX.length))
|
|
37
|
+
: undefined;
|
|
38
|
+
if (described === undefined)
|
|
39
|
+
return undefined;
|
|
40
|
+
return described.kind === 'described' ? described.text : '';
|
|
41
|
+
}
|
|
42
|
+
function photoOf(value) {
|
|
43
|
+
if (typeof value === 'string') {
|
|
44
|
+
const url = value.trim();
|
|
45
|
+
return isPhotoUrl(url) ? { url } : undefined;
|
|
46
|
+
}
|
|
47
|
+
if (typeof value !== 'object' || value === null || Array.isArray(value))
|
|
48
|
+
return undefined;
|
|
49
|
+
const { url, alt } = value;
|
|
50
|
+
if (typeof url !== 'string' || !isPhotoUrl(url.trim()))
|
|
51
|
+
return undefined;
|
|
52
|
+
const text = typeof alt === 'string' ? alt.trim() : '';
|
|
53
|
+
return text === '' ? { url: url.trim() } : { url: url.trim(), alt: text };
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=photo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"photo.js","sourceRoot":"","sources":["../../src/content/photo.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,20 +4,32 @@ import type { Document } from './document.ts';
|
|
|
4
4
|
* ptd.spec.indieweb.org): what kind of post a post is, inferred from its own
|
|
5
5
|
* properties rather than declared by its author.
|
|
6
6
|
*
|
|
7
|
-
*
|
|
8
|
-
* order is event, rsvp, repost, like, reply, video,
|
|
9
|
-
* the order matters because the first branch that
|
|
10
|
-
* a photo is a reply. Each new type is a check in
|
|
11
|
-
* that order. granary's `mf2util` diverges from
|
|
12
|
-
* of repost and like and having no video
|
|
7
|
+
* Repost, like, reply, photo and the note/article tail of the algorithm are
|
|
8
|
+
* here. The spec's full order is event, rsvp, repost, like, reply, video,
|
|
9
|
+
* photo, then the tail, and the order matters because the first branch that
|
|
10
|
+
* matches wins: a reply with a photo is a reply. Each new type is a check in
|
|
11
|
+
* {@link discoverPostType} in that order. granary's `mf2util` diverges from
|
|
12
|
+
* the spec, putting reply ahead of repost and like and having no video
|
|
13
|
+
* branch; this follows the spec.
|
|
14
|
+
*
|
|
15
|
+
* Bookmark is an IndieWeb extension the spec lists only as under
|
|
16
|
+
* consideration, so the spec types a bookmark as a note or an article. It
|
|
17
|
+
* sits after photo, just ahead of the tail (TASK-169): every post the spec
|
|
18
|
+
* types as something else keeps that type, and a bookmark claims only what
|
|
19
|
+
* the spec would have called a note or an article.
|
|
13
20
|
*/
|
|
14
|
-
export type PostType = 'reply' | 'note' | 'article';
|
|
21
|
+
export type PostType = 'repost' | 'like' | 'reply' | 'photo' | 'bookmark' | 'note' | 'article';
|
|
15
22
|
/** The mf2 properties the algorithm reads, each as its plain-text value. */
|
|
16
23
|
export interface PostProperties {
|
|
17
24
|
name?: string | undefined;
|
|
18
25
|
content?: string | undefined;
|
|
19
26
|
summary?: string | undefined;
|
|
20
27
|
'in-reply-to'?: string | undefined;
|
|
28
|
+
/** Each photo's address. */
|
|
29
|
+
photo?: readonly string[] | undefined;
|
|
30
|
+
'repost-of'?: string | undefined;
|
|
31
|
+
'like-of'?: string | undefined;
|
|
32
|
+
'bookmark-of'?: string | undefined;
|
|
21
33
|
}
|
|
22
34
|
/** The type of a post with these properties. */
|
|
23
35
|
export declare function discoverPostType(properties: PostProperties): PostType;
|
|
@@ -38,7 +50,7 @@ export declare function isNamed(document: PostDocument): boolean;
|
|
|
38
50
|
*/
|
|
39
51
|
export declare function replyTarget(document: Pick<Document, 'inReplyTo'>): string | undefined;
|
|
40
52
|
/** The parts of a document Post Type Discovery reads. */
|
|
41
|
-
type PostDocument = Pick<Document, 'title' | 'html' | 'description' | 'inReplyTo'>;
|
|
53
|
+
type PostDocument = Pick<Document, 'title' | 'html' | 'description' | 'inReplyTo' | 'extra'>;
|
|
42
54
|
/**
|
|
43
55
|
* The words a link to a document says: its title, or for an untitled post the
|
|
44
56
|
* first words of its text, so a note is never an empty link.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"post-type.d.ts","sourceRoot":"","sources":["../../src/content/post-type.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"post-type.d.ts","sourceRoot":"","sources":["../../src/content/post-type.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAI9C;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;AAE/F,4EAA4E;AAC5E,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,4BAA4B;IAC5B,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACtC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC;AAED,gDAAgD;AAChD,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,cAAc,GAAG,QAAQ,CAOrE;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,YAAY,GAAG,QAAQ,CAE3D;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAEvD;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,MAAM,GAAG,SAAS,CAErF;AAED,yDAAyD;AACzD,KAAK,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,aAAa,GAAG,WAAW,GAAG,OAAO,CAAC,CAAC;AAuB7F;;;GAGG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,aAAa,CAAC,GAAG,MAAM,CAQ5F"}
|
|
@@ -1,8 +1,18 @@
|
|
|
1
|
+
import { citationsOf } from './citation.js';
|
|
2
|
+
import { photosOf } from './photo.js';
|
|
1
3
|
import { htmlToText } from './search.js';
|
|
2
4
|
/** The type of a post with these properties. */
|
|
3
5
|
export function discoverPostType(properties) {
|
|
6
|
+
if (validUrl(properties['repost-of']) !== undefined)
|
|
7
|
+
return 'repost';
|
|
8
|
+
if (validUrl(properties['like-of']) !== undefined)
|
|
9
|
+
return 'like';
|
|
4
10
|
if (validUrl(properties['in-reply-to']) !== undefined)
|
|
5
11
|
return 'reply';
|
|
12
|
+
if ((properties.photo ?? []).length > 0)
|
|
13
|
+
return 'photo';
|
|
14
|
+
if (validUrl(properties['bookmark-of']) !== undefined)
|
|
15
|
+
return 'bookmark';
|
|
6
16
|
return isNamedPost(properties) ? 'article' : 'note';
|
|
7
17
|
}
|
|
8
18
|
/**
|
|
@@ -33,6 +43,13 @@ function propertiesOf(document) {
|
|
|
33
43
|
content: htmlToText(document.html),
|
|
34
44
|
summary: document.description,
|
|
35
45
|
'in-reply-to': document.inReplyTo,
|
|
46
|
+
// Only addresses {@link photosOf} accepts, the spec's "valid URL" for a
|
|
47
|
+
// file whose uploads are site-relative.
|
|
48
|
+
photo: photosOf(document.extra).map((photo) => photo.url),
|
|
49
|
+
...Object.fromEntries(citationsOf(document.extra).map(({ property, url }) => [
|
|
50
|
+
property,
|
|
51
|
+
url,
|
|
52
|
+
])),
|
|
36
53
|
};
|
|
37
54
|
}
|
|
38
55
|
/** How many words of an untitled post's text {@link postLabel} keeps. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"post-type.js","sourceRoot":"","sources":["../../src/content/post-type.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"post-type.js","sourceRoot":"","sources":["../../src/content/post-type.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"article.d.ts","sourceRoot":"","sources":["../../src/federation/article.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EACL,GAAG,EACH,OAAO,EAEP,MAAM,EACN,MAAM,EAMN,IAAI,EAEJ,MAAM,EAGN,MAAM,EAEP,MAAM,eAAe,CAAC;AAKvB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"article.d.ts","sourceRoot":"","sources":["../../src/federation/article.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EACL,GAAG,EACH,OAAO,EAEP,MAAM,EACN,MAAM,EAMN,IAAI,EAEJ,MAAM,EAGN,MAAM,EAEP,MAAM,eAAe,CAAC;AAKvB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAIjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAMvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAWxD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAG7D;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,OAAO,CAAC,qBAAqB,CAAC,EACvC,QAAQ,EAAE,QAAQ,GACjB,IAAI,GAAG,SAAS,CAGlB;AAwBD,+DAA+D;AAC/D,eAAO,MAAM,iBAAiB,kBAAkB,CAAC;AAEjD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,GAAE,IAAiB,GAAG,OAAO,CAEvF;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,QAAQ,GAAG,SAAS,CAOtB;AAkDD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,OAAO,CAAC,qBAAqB,CAAC,EACvC,QAAQ,EAAE,QAAQ,GACjB,OAAO,GAAG,IAAI,CA4DhB;AAgJD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,OAAO,CAAC,qBAAqB,CAAC,EACvC,QAAQ,EAAE,QAAQ,GACjB,MAAM,CAYR;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,OAAO,CAAC,qBAAqB,CAAC,EACvC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,GAAE,MAA6B,GACtC,MAAM,CAYR;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,OAAO,CAAC,qBAAqB,CAAC,EACvC,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,MAAM,GACd,MAAM,CAeR;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,OAAO,CAAC,qBAAqB,CAAC,EACvC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,MAAM,GACf,GAAG,GAAG,MAAM,CAkBd;AAED,8EAA8E;AAC9E,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,OAAO,CAAC;AAExC;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,qBAAqB,CAAC,EAAE,QAAQ,EAAE,QAAQ,GAAG,GAAG,CAEhG;AAYD;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC,OAAO,GAAG,SAAS,CAOjF"}
|
|
@@ -3,7 +3,9 @@ import { Temporal as TemporalPolyfill } from '@js-temporal/polyfill';
|
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { listUsers, primaryUser } from '../admin/accounts.js';
|
|
5
5
|
import { readSiteSettings, taxonomyBasesFromSettings } from '../admin/settings.js';
|
|
6
|
-
import {
|
|
6
|
+
import { citationsOf } from '../content/citation.js';
|
|
7
|
+
import { enclosureOf, isUploadUrl, playsAsVideo } from '../content/enclosure.js';
|
|
8
|
+
import { photoAlt, photosOf } from '../content/photo.js';
|
|
7
9
|
import { canonicalType, UPLOAD_MEDIA_TYPES } from '../content/media.js';
|
|
8
10
|
import { readAltTexts } from '../images/alt-text.js';
|
|
9
11
|
import { imagesIn } from '../images/markup.js';
|
|
@@ -86,10 +88,17 @@ const OBJECT_TYPES = { Note, Article };
|
|
|
86
88
|
/**
|
|
87
89
|
* The object type each discovered post type federates as: the rows of Post
|
|
88
90
|
* Type Discovery's own AS2 mapping (section 6) that this site has post types
|
|
89
|
-
* for. A reply is a `Note` even with a title of its own (decision-18)
|
|
91
|
+
* for. A reply is a `Note` even with a title of its own (decision-18), and so
|
|
92
|
+
* is a photo post, whose photos are its attachments (TASK-166).
|
|
90
93
|
*/
|
|
91
94
|
const OBJECT_TYPE_OF = {
|
|
95
|
+
// A like or a repost of a fediverse object goes as a `Like` or an
|
|
96
|
+
// `Announce` instead (decision-28); this is the object its permalink serves.
|
|
97
|
+
repost: 'Note',
|
|
98
|
+
like: 'Note',
|
|
99
|
+
bookmark: 'Note',
|
|
92
100
|
reply: 'Note',
|
|
101
|
+
photo: 'Note',
|
|
93
102
|
note: 'Note',
|
|
94
103
|
article: 'Article',
|
|
95
104
|
};
|
|
@@ -168,6 +177,7 @@ export function postObject(context, document) {
|
|
|
168
177
|
interactionPolicy: QUOTABLE_BY_ANYONE,
|
|
169
178
|
attachments: [
|
|
170
179
|
...recordingAttachment(document, baseUrl),
|
|
180
|
+
...photoAttachments(document, context.data.config),
|
|
171
181
|
...imageAttachments(document, context.data.config),
|
|
172
182
|
],
|
|
173
183
|
// Both taxonomies become hashtags: a relay or a search that keys on a
|
|
@@ -179,14 +189,17 @@ export function postObject(context, document) {
|
|
|
179
189
|
],
|
|
180
190
|
};
|
|
181
191
|
if (postObjectType(document) === 'Note') {
|
|
182
|
-
return new Note({
|
|
192
|
+
return new Note({
|
|
193
|
+
...common,
|
|
194
|
+
contents: inLanguage(citing(document) + noteContent(document), language),
|
|
195
|
+
});
|
|
183
196
|
}
|
|
184
197
|
const summary = feedExcerpt(document);
|
|
185
198
|
return new Article({
|
|
186
199
|
...common,
|
|
187
200
|
name: document.title === '' ? null : document.title,
|
|
188
201
|
summaries: summary === '' ? [] : inLanguage(summary, language),
|
|
189
|
-
contents: inLanguage(document.html, language),
|
|
202
|
+
contents: inLanguage(citing(document) + document.html, language),
|
|
190
203
|
});
|
|
191
204
|
}
|
|
192
205
|
/**
|
|
@@ -222,6 +235,28 @@ function recordingAttachment(document, baseUrl) {
|
|
|
222
235
|
};
|
|
223
236
|
return [playsAsVideo(enclosure.type) ? new Video(values) : new Audio(values)];
|
|
224
237
|
}
|
|
238
|
+
/**
|
|
239
|
+
* Each of the post's photos (TASK-166), as an `Image` whose `name` is its alt
|
|
240
|
+
* text, the media library's when the post gives none.
|
|
241
|
+
*
|
|
242
|
+
* They go after the recording and before the body's images, because they are
|
|
243
|
+
* what a photo post is. A photo from another site is attached without a media
|
|
244
|
+
* type, which this site cannot check.
|
|
245
|
+
*/
|
|
246
|
+
function photoAttachments(document, config) {
|
|
247
|
+
const library = readAltTexts(config.contentDir);
|
|
248
|
+
return photosOf(document.extra).map((photo) => {
|
|
249
|
+
const media = isUploadUrl(photo.url)
|
|
250
|
+
? UPLOAD_MEDIA_TYPES.get(path.extname(photo.url).toLowerCase())
|
|
251
|
+
: undefined;
|
|
252
|
+
const alt = photoAlt(photo, library) ?? '';
|
|
253
|
+
return new Image({
|
|
254
|
+
url: new URL(absoluteUrl(photo.url, config.baseUrl)),
|
|
255
|
+
mediaType: media?.kind === 'image' ? (canonicalType(media) ?? null) : null,
|
|
256
|
+
name: alt === '' ? null : alt,
|
|
257
|
+
});
|
|
258
|
+
});
|
|
259
|
+
}
|
|
225
260
|
/**
|
|
226
261
|
* Each image the post shows from the site's own uploads, as an `Image` whose
|
|
227
262
|
* `name` is its alt text (TASK-141).
|
|
@@ -234,9 +269,11 @@ function recordingAttachment(document, baseUrl) {
|
|
|
234
269
|
*/
|
|
235
270
|
function imageAttachments(document, config) {
|
|
236
271
|
const library = readAltTexts(config.contentDir);
|
|
272
|
+
// A photo shown again in the body is already attached.
|
|
273
|
+
const photos = new Set(photosOf(document.extra).map((photo) => photo.url));
|
|
237
274
|
const attachments = [];
|
|
238
275
|
for (const image of imagesIn(document.html)) {
|
|
239
|
-
if (image.source === undefined)
|
|
276
|
+
if (image.source === undefined || photos.has(image.src))
|
|
240
277
|
continue;
|
|
241
278
|
if (library.get(image.source)?.kind === 'decorative')
|
|
242
279
|
continue;
|
|
@@ -256,6 +293,23 @@ function imageAttachments(document, config) {
|
|
|
256
293
|
const QUOTABLE_BY_ANYONE = new InteractionPolicy({
|
|
257
294
|
canQuote: new InteractionRule({ automaticApproval: PUBLIC_COLLECTION }),
|
|
258
295
|
});
|
|
296
|
+
/**
|
|
297
|
+
* What a like, a repost or a bookmark cites, as a line linking each page
|
|
298
|
+
* (decision-28): the words a peer shows, since a `Note` has no field for it.
|
|
299
|
+
*/
|
|
300
|
+
function citing(document) {
|
|
301
|
+
return citationsOf(document.extra)
|
|
302
|
+
.map(({ property, url }) => {
|
|
303
|
+
const href = escapeHtml(url).replaceAll('"', '"');
|
|
304
|
+
return `<p>${CITING_VERBS[property]} <a href="${href}">${escapeHtml(url)}</a></p>\n`;
|
|
305
|
+
})
|
|
306
|
+
.join('');
|
|
307
|
+
}
|
|
308
|
+
const CITING_VERBS = {
|
|
309
|
+
'repost-of': 'Reposted',
|
|
310
|
+
'like-of': 'Liked',
|
|
311
|
+
'bookmark-of': 'Bookmarked',
|
|
312
|
+
};
|
|
259
313
|
/** A note's HTML: its title first when its text does not already open with it. */
|
|
260
314
|
function noteContent(document) {
|
|
261
315
|
const title = document.title.trim();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"article.js","sourceRoot":"","sources":["../../src/federation/article.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"article.js","sourceRoot":"","sources":["../../src/federation/article.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How a like or a repost federates (decision-28): as the `Like` or `Announce`
|
|
3
|
+
* of the fediverse object it cites, when what it cites is one. Every other
|
|
4
|
+
* post, a bookmark included, federates as the `Note` or `Article` it is, whose
|
|
5
|
+
* content links the page it cites.
|
|
6
|
+
*/
|
|
7
|
+
import type { Context } from '@fedify/fedify';
|
|
8
|
+
import { Announce, Like, Undo } from '@fedify/vocab';
|
|
9
|
+
import type { Actor } from '@fedify/vocab';
|
|
10
|
+
import type { Document } from '../content/document.ts';
|
|
11
|
+
import type { FederationContextData } from './federation.ts';
|
|
12
|
+
export type CitingActivity = Like | Announce;
|
|
13
|
+
/** A like or a repost of a fediverse object, and the author it goes to. */
|
|
14
|
+
export interface Citing {
|
|
15
|
+
readonly activity: CitingActivity;
|
|
16
|
+
/** Who wrote the object, when they say, so they hear about it. */
|
|
17
|
+
readonly author: Actor | undefined;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* The `Like` or `Announce` a post sends, or `undefined` for a post that is no
|
|
21
|
+
* like or repost, or whose target is not a fediverse object this site can
|
|
22
|
+
* fetch: a page with no ActivityPub form, an actor, or a host that does not
|
|
23
|
+
* answer.
|
|
24
|
+
*
|
|
25
|
+
* The object is named by the id its server gives it, not by the URL the post
|
|
26
|
+
* cites, because a status's page and its id are often two URLs. The fetch is
|
|
27
|
+
* signed as the post's author, as a server in authorized fetch mode needs.
|
|
28
|
+
* The activity id carries that object id, so a like moved to another target
|
|
29
|
+
* is a second activity rather than one a peer has already seen.
|
|
30
|
+
*/
|
|
31
|
+
export declare function citingActivity(context: Context<FederationContextData>, document: Document): Promise<Citing | undefined>;
|
|
32
|
+
/**
|
|
33
|
+
* The `Undo` that takes a like or a repost back, addressed as the activity
|
|
34
|
+
* it undoes was. `revision` is the moment, as a `Delete`'s is, since a post
|
|
35
|
+
* can be liked, taken back and liked again.
|
|
36
|
+
*/
|
|
37
|
+
export declare function undoActivity(activity: CitingActivity, revision: string): Undo;
|
|
38
|
+
//# sourceMappingURL=citations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"citations.d.ts","sourceRoot":"","sources":["../../src/federation/citations.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAW,IAAI,EAAqB,IAAI,EAAE,MAAM,eAAe,CAAC;AACjF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAG3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAIvD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAE7D,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG,QAAQ,CAAC;AAE7C,2EAA2E;AAC3E,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,kEAAkE;IAClE,QAAQ,CAAC,MAAM,EAAE,KAAK,GAAG,SAAS,CAAC;CACpC;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,OAAO,CAAC,qBAAqB,CAAC,EACvC,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAuD7B;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAW7E"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How a like or a repost federates (decision-28): as the `Like` or `Announce`
|
|
3
|
+
* of the fediverse object it cites, when what it cites is one. Every other
|
|
4
|
+
* post, a bookmark included, federates as the `Note` or `Article` it is, whose
|
|
5
|
+
* content links the page it cites.
|
|
6
|
+
*/
|
|
7
|
+
import { Announce, isActor, Like, PUBLIC_COLLECTION, Undo } from '@fedify/vocab';
|
|
8
|
+
import { citationOf } from '../content/citation.js';
|
|
9
|
+
import { postTypeOf } from '../content/post-type.js';
|
|
10
|
+
import { actorId, senderKeyPairs } from './actor.js';
|
|
11
|
+
import { articleObjectId, documentAuthor, toInstant } from './article.js';
|
|
12
|
+
/**
|
|
13
|
+
* The `Like` or `Announce` a post sends, or `undefined` for a post that is no
|
|
14
|
+
* like or repost, or whose target is not a fediverse object this site can
|
|
15
|
+
* fetch: a page with no ActivityPub form, an actor, or a host that does not
|
|
16
|
+
* answer.
|
|
17
|
+
*
|
|
18
|
+
* The object is named by the id its server gives it, not by the URL the post
|
|
19
|
+
* cites, because a status's page and its id are often two URLs. The fetch is
|
|
20
|
+
* signed as the post's author, as a server in authorized fetch mode needs.
|
|
21
|
+
* The activity id carries that object id, so a like moved to another target
|
|
22
|
+
* is a second activity rather than one a peer has already seen.
|
|
23
|
+
*/
|
|
24
|
+
export async function citingActivity(context, document) {
|
|
25
|
+
const postType = postTypeOf(document);
|
|
26
|
+
if (postType !== 'like' && postType !== 'repost')
|
|
27
|
+
return undefined;
|
|
28
|
+
const target = citationOf(document, postType === 'like' ? 'like-of' : 'repost-of');
|
|
29
|
+
const user = documentAuthor(context, document);
|
|
30
|
+
if (target === undefined || user === undefined)
|
|
31
|
+
return undefined;
|
|
32
|
+
const [key] = await senderKeyPairs(context, user);
|
|
33
|
+
const loaders = {
|
|
34
|
+
documentLoader: key === undefined ? context.documentLoader : context.getDocumentLoader(key),
|
|
35
|
+
contextLoader: context.contextLoader,
|
|
36
|
+
};
|
|
37
|
+
let object;
|
|
38
|
+
try {
|
|
39
|
+
object = await context.lookupObject(target, loaders);
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
return undefined;
|
|
43
|
+
}
|
|
44
|
+
if (object === null || isActor(object) || object.id === null)
|
|
45
|
+
return undefined;
|
|
46
|
+
let author;
|
|
47
|
+
try {
|
|
48
|
+
const attributed = await object.getAttribution(loaders);
|
|
49
|
+
author = isActor(attributed) && attributed.inboxId !== null ? attributed : undefined;
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
author = undefined;
|
|
53
|
+
}
|
|
54
|
+
const actor = actorId(context, user);
|
|
55
|
+
const followers = context.getFollowersUri(user.username);
|
|
56
|
+
const authorId = author?.id ?? undefined;
|
|
57
|
+
const postId = articleObjectId(context, document);
|
|
58
|
+
const common = {
|
|
59
|
+
actor,
|
|
60
|
+
object: object.id,
|
|
61
|
+
published: toInstant(document.date) ?? null,
|
|
62
|
+
};
|
|
63
|
+
const of = encodeURIComponent(object.id.href);
|
|
64
|
+
// A repost is public, as a boost is; a like is addressed to the one who
|
|
65
|
+
// wrote what it likes, and copied to the followers as every activity is.
|
|
66
|
+
const activity = postType === 'repost'
|
|
67
|
+
? new Announce({
|
|
68
|
+
...common,
|
|
69
|
+
id: new URL(`${postId.href}#announce/${of}`),
|
|
70
|
+
to: PUBLIC_COLLECTION,
|
|
71
|
+
ccs: authorId === undefined ? [followers] : [followers, authorId],
|
|
72
|
+
})
|
|
73
|
+
: new Like({
|
|
74
|
+
...common,
|
|
75
|
+
id: new URL(`${postId.href}#like/${of}`),
|
|
76
|
+
tos: authorId === undefined ? [] : [authorId],
|
|
77
|
+
cc: followers,
|
|
78
|
+
});
|
|
79
|
+
return { activity, author };
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* The `Undo` that takes a like or a repost back, addressed as the activity
|
|
83
|
+
* it undoes was. `revision` is the moment, as a `Delete`'s is, since a post
|
|
84
|
+
* can be liked, taken back and liked again.
|
|
85
|
+
*/
|
|
86
|
+
export function undoActivity(activity, revision) {
|
|
87
|
+
if (activity.id === null || activity.actorId === null) {
|
|
88
|
+
throw new TypeError('Only an activity with an id and an actor can be undone.');
|
|
89
|
+
}
|
|
90
|
+
return new Undo({
|
|
91
|
+
id: new URL(`${activity.id.href.replace(/#.*$/, '')}#undo/${encodeURIComponent(revision)}`),
|
|
92
|
+
actor: activity.actorId,
|
|
93
|
+
object: activity,
|
|
94
|
+
tos: activity.toIds,
|
|
95
|
+
ccs: activity.ccIds,
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=citations.js.map
|