@geekity/cms 0.14.0 → 0.15.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 (120) hide show
  1. package/README.md +163 -52
  2. package/admin/pages/documents/editor.njk +69 -0
  3. package/admin/pages/media/library.njk +4 -3
  4. package/admin/pages/settings/general.njk +44 -0
  5. package/admin/static/admin.css +33 -0
  6. package/dist/admin/documents.d.ts +3 -0
  7. package/dist/admin/documents.d.ts.map +1 -1
  8. package/dist/admin/documents.js +38 -5
  9. package/dist/admin/documents.js.map +1 -1
  10. package/dist/admin/enclosure-field.d.ts +91 -0
  11. package/dist/admin/enclosure-field.d.ts.map +1 -0
  12. package/dist/admin/enclosure-field.js +282 -0
  13. package/dist/admin/enclosure-field.js.map +1 -0
  14. package/dist/admin/media.d.ts +7 -2
  15. package/dist/admin/media.d.ts.map +1 -1
  16. package/dist/admin/media.js +4 -2
  17. package/dist/admin/media.js.map +1 -1
  18. package/dist/admin/settings-general.d.ts.map +1 -1
  19. package/dist/admin/settings-general.js +36 -2
  20. package/dist/admin/settings-general.js.map +1 -1
  21. package/dist/admin/settings-page.d.ts.map +1 -1
  22. package/dist/admin/settings-page.js +1 -2
  23. package/dist/admin/settings-page.js.map +1 -1
  24. package/dist/admin/settings.d.ts +26 -0
  25. package/dist/admin/settings.d.ts.map +1 -1
  26. package/dist/admin/settings.js +88 -2
  27. package/dist/admin/settings.js.map +1 -1
  28. package/dist/admin/uploads.d.ts +7 -2
  29. package/dist/admin/uploads.d.ts.map +1 -1
  30. package/dist/admin/uploads.js +23 -5
  31. package/dist/admin/uploads.js.map +1 -1
  32. package/dist/config.d.ts +17 -3
  33. package/dist/config.d.ts.map +1 -1
  34. package/dist/config.js +11 -7
  35. package/dist/config.js.map +1 -1
  36. package/dist/content/enclosure.d.ts +69 -0
  37. package/dist/content/enclosure.d.ts.map +1 -0
  38. package/dist/content/enclosure.js +165 -0
  39. package/dist/content/enclosure.js.map +1 -0
  40. package/dist/content/index.d.ts +3 -1
  41. package/dist/content/index.d.ts.map +1 -1
  42. package/dist/content/index.js +1 -0
  43. package/dist/content/index.js.map +1 -1
  44. package/dist/content/media.d.ts +15 -2
  45. package/dist/content/media.d.ts.map +1 -1
  46. package/dist/content/media.js +92 -9
  47. package/dist/content/media.js.map +1 -1
  48. package/dist/federation/article.d.ts.map +1 -1
  49. package/dist/federation/article.js +35 -6
  50. package/dist/federation/article.js.map +1 -1
  51. package/dist/images/icons.d.ts +5 -0
  52. package/dist/images/icons.d.ts.map +1 -1
  53. package/dist/images/icons.js +13 -8
  54. package/dist/images/icons.js.map +1 -1
  55. package/dist/images/paths.d.ts +1 -1
  56. package/dist/images/paths.d.ts.map +1 -1
  57. package/dist/images/paths.js.map +1 -1
  58. package/dist/index.d.ts +5 -5
  59. package/dist/index.d.ts.map +1 -1
  60. package/dist/index.js +3 -3
  61. package/dist/index.js.map +1 -1
  62. package/dist/web/assets.d.ts +14 -0
  63. package/dist/web/assets.d.ts.map +1 -1
  64. package/dist/web/assets.js +56 -1
  65. package/dist/web/assets.js.map +1 -1
  66. package/dist/web/context.d.ts +26 -0
  67. package/dist/web/context.d.ts.map +1 -1
  68. package/dist/web/context.js +15 -0
  69. package/dist/web/context.js.map +1 -1
  70. package/dist/web/feed-atom.d.ts.map +1 -1
  71. package/dist/web/feed-atom.js +20 -0
  72. package/dist/web/feed-atom.js.map +1 -1
  73. package/dist/web/feed-item.d.ts +19 -0
  74. package/dist/web/feed-item.d.ts.map +1 -1
  75. package/dist/web/feed-item.js +22 -0
  76. package/dist/web/feed-item.js.map +1 -1
  77. package/dist/web/feed-json.d.ts +13 -0
  78. package/dist/web/feed-json.d.ts.map +1 -1
  79. package/dist/web/feed-json.js +15 -0
  80. package/dist/web/feed-json.js.map +1 -1
  81. package/dist/web/feed-rss.d.ts.map +1 -1
  82. package/dist/web/feed-rss.js +59 -2
  83. package/dist/web/feed-rss.js.map +1 -1
  84. package/dist/web/feed-xml.d.ts +7 -1
  85. package/dist/web/feed-xml.d.ts.map +1 -1
  86. package/dist/web/feed-xml.js +8 -2
  87. package/dist/web/feed-xml.js.map +1 -1
  88. package/dist/web/feeds.d.ts +1 -1
  89. package/dist/web/feeds.d.ts.map +1 -1
  90. package/dist/web/feeds.js +6 -0
  91. package/dist/web/feeds.js.map +1 -1
  92. package/dist/web/index.d.ts +4 -1
  93. package/dist/web/index.d.ts.map +1 -1
  94. package/dist/web/index.js +2 -0
  95. package/dist/web/index.js.map +1 -1
  96. package/dist/web/license.d.ts +94 -0
  97. package/dist/web/license.d.ts.map +1 -0
  98. package/dist/web/license.js +116 -0
  99. package/dist/web/license.js.map +1 -0
  100. package/dist/web/oembed.d.ts.map +1 -1
  101. package/dist/web/oembed.js +1 -2
  102. package/dist/web/oembed.js.map +1 -1
  103. package/dist/web/render.d.ts.map +1 -1
  104. package/dist/web/render.js +11 -2
  105. package/dist/web/render.js.map +1 -1
  106. package/dist/web/routes.d.ts.map +1 -1
  107. package/dist/web/routes.js +8 -4
  108. package/dist/web/routes.js.map +1 -1
  109. package/dist/web/share-image.d.ts +7 -7
  110. package/dist/web/share-image.d.ts.map +1 -1
  111. package/dist/web/share-image.js +8 -7
  112. package/dist/web/share-image.js.map +1 -1
  113. package/package.json +1 -1
  114. package/themes/default/README.md +81 -28
  115. package/themes/default/layouts/base.njk +3 -4
  116. package/themes/default/layouts/post.njk +4 -0
  117. package/themes/default/partials/jsonld.njk +4 -6
  118. package/themes/default/partials/recording.njk +41 -0
  119. package/themes/default/src/style.css +16 -0
  120. package/themes/default/static/style.css +25 -0
package/dist/config.js CHANGED
@@ -10,9 +10,12 @@ export const DEFAULT_THEMES_DIR = 'themes';
10
10
  export const DEFAULT_SESSION_LIFETIME = 14 * 24 * 60 * 60;
11
11
  /** Largest upload a site accepts by default: ten mebibytes. */
12
12
  export const DEFAULT_UPLOAD_MAX_BYTES = 10 * 1024 * 1024;
13
+ /** Largest audio or video upload a site accepts by default: two hundred mebibytes. */
14
+ export const DEFAULT_UPLOAD_MEDIA_MAX_BYTES = 200 * 1024 * 1024;
13
15
  /**
14
16
  * What the editor may upload by default: the raster image formats a browser
15
- * displays, PDFs, and the two text formats. Everything the CMS knows about
17
+ * displays, PDFs, the text formats, captions, and the audio and video formats
18
+ * a browser plays. Everything the CMS knows about
16
19
  * except SVG, which is script-bearing markup served from the site's own origin
17
20
  * and so is opt-in.
18
21
  */
@@ -96,7 +99,8 @@ export function resolveConfig(config = {}, context = {}) {
96
99
  baseUrlSource: baseUrlSource(env['GEEKITY_BASE_URL'], config.baseUrl),
97
100
  watch: resolveBoolean('GEEKITY_WATCH', env['GEEKITY_WATCH'], config.watch, true),
98
101
  sessionLifetime: resolveSessionLifetime(env['GEEKITY_SESSION_LIFETIME'], config.sessionLifetime),
99
- uploadMaxBytes: resolveUploadMaxBytes(env['GEEKITY_UPLOAD_MAX_BYTES'], config.uploadMaxBytes),
102
+ uploadMaxBytes: resolveByteLimit('GEEKITY_UPLOAD_MAX_BYTES', 'uploadMaxBytes', env['GEEKITY_UPLOAD_MAX_BYTES'], config.uploadMaxBytes, DEFAULT_UPLOAD_MAX_BYTES),
103
+ uploadMediaMaxBytes: resolveByteLimit('GEEKITY_UPLOAD_MEDIA_MAX_BYTES', 'uploadMediaMaxBytes', env['GEEKITY_UPLOAD_MEDIA_MAX_BYTES'], config.uploadMediaMaxBytes, DEFAULT_UPLOAD_MEDIA_MAX_BYTES),
100
104
  uploadTypes: resolveUploadTypes(env['GEEKITY_UPLOAD_TYPES'], config.uploadTypes),
101
105
  imageOptimization: resolveBoolean('GEEKITY_IMAGE_OPTIMIZATION', env['GEEKITY_IMAGE_OPTIMIZATION'], config.imageOptimization, true),
102
106
  imageWidths: resolveImageWidths(env['GEEKITY_IMAGE_WIDTHS'], config.imageWidths),
@@ -149,19 +153,19 @@ function resolveSecurityHeaders(configured) {
149
153
  }
150
154
  return headers;
151
155
  }
152
- /** Bytes, a positive whole number of them. */
153
- function resolveUploadMaxBytes(fromEnv, configured) {
156
+ /** Bytes, a positive whole number of them, from the environment, else the option, else the default. */
157
+ function resolveByteLimit(variable, option, fromEnv, configured, fallback) {
154
158
  if (fromEnv !== undefined && fromEnv !== '') {
155
159
  const parsed = Number(fromEnv);
156
160
  if (!isValidByteCount(parsed)) {
157
- throw new TypeError(`GEEKITY_UPLOAD_MAX_BYTES must be a positive whole number of bytes, received ${JSON.stringify(fromEnv)}`);
161
+ throw new TypeError(`${variable} must be a positive whole number of bytes, received ${JSON.stringify(fromEnv)}`);
158
162
  }
159
163
  return parsed;
160
164
  }
161
165
  if (configured === undefined)
162
- return DEFAULT_UPLOAD_MAX_BYTES;
166
+ return fallback;
163
167
  if (!isValidByteCount(configured)) {
164
- throw new TypeError(`config.uploadMaxBytes must be a positive whole number of bytes, received ${JSON.stringify(configured)}`);
168
+ throw new TypeError(`config.${option} must be a positive whole number of bytes, received ${JSON.stringify(configured)}`);
165
169
  }
166
170
  return configured;
167
171
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ /** The front matter key the recording is under. */
2
+ export declare const ENCLOSURE_FRONT_MATTER_KEY = "enclosure";
3
+ /** The longest title an alternate version may have, as the Podcasting 2.0 namespace says. */
4
+ export declare const ALTERNATE_TITLE_MAX_LENGTH = 32;
5
+ /** The transcript formats the Podcasting 2.0 namespace names, and so the ones a feed can carry. */
6
+ export declare const TRANSCRIPT_TYPES: readonly ['text/vtt', 'application/x-subrip', 'text/html', 'text/plain'];
7
+ /** One of {@link TRANSCRIPT_TYPES}. */
8
+ export type TranscriptType = (typeof TRANSCRIPT_TYPES)[number];
9
+ /** A transcript or captions file for the recording. */
10
+ export interface Transcript {
11
+ /** An upload's site-relative URL, or an absolute `http` or `https` one. */
12
+ url: string;
13
+ type: TranscriptType;
14
+ }
15
+ /** Another version of the recording: a video of an audio episode, a smaller file. */
16
+ export interface AlternateEnclosure {
17
+ /** An upload's site-relative URL, or an absolute `http` or `https` one. */
18
+ url: string;
19
+ /** Its media type, which a feed cannot leave out. */
20
+ type: string;
21
+ /** Bytes. Known for an upload; for a link, only when the author said. */
22
+ length?: number | undefined;
23
+ /** What a player calls it, at most {@link ALTERNATE_TITLE_MAX_LENGTH} characters. */
24
+ title?: string | undefined;
25
+ /** A video's height in pixels. */
26
+ height?: number | undefined;
27
+ /** The language it is in, as a language tag. */
28
+ lang?: string | undefined;
29
+ }
30
+ /** A post's recording, read from its front matter. */
31
+ export interface Enclosure {
32
+ /** The main file's site-relative URL. It is always an upload, so its length is known. */
33
+ url: string;
34
+ type: string;
35
+ /** Bytes, which RSS requires. */
36
+ length: number;
37
+ /** Seconds, when the author said. */
38
+ duration?: number | undefined;
39
+ transcript?: Transcript | undefined;
40
+ /** In the order the front matter lists them; empty when there are none. */
41
+ alternates: AlternateEnclosure[];
42
+ }
43
+ /**
44
+ * The recording a post's front matter describes, or `undefined` when it has
45
+ * none worth printing.
46
+ *
47
+ * A main file without a URL under `/uploads/`, a media type, or a positive
48
+ * whole number of bytes is no enclosure at all: RSS requires all three, and a
49
+ * guessed one would send a podcast app the wrong file. Anything else that is
50
+ * wrong is dropped on its own — an alternate version with no media type, a
51
+ * transcript of a format nobody plays, a title too long to show — so one bad
52
+ * line in a hand-edited file costs that line and not the episode.
53
+ */
54
+ export declare function enclosureOf(extra: Readonly<Record<string, unknown>>): Enclosure | undefined;
55
+ /**
56
+ * Whether a media type is played by a `<video>` and federated as a `Video`,
57
+ * rather than by an `<audio>` as an `Audio`. One answer for both, so the page
58
+ * and the fediverse never disagree about what a file is.
59
+ */
60
+ export declare function playsAsVideo(type: string): boolean;
61
+ /** Whether a transcript is timed captions, which a player can show over the recording. */
62
+ export declare function isCaptions(transcript: Transcript): boolean;
63
+ /** Whether a value is an absolute `http` or `https` URL. */
64
+ export declare function isWebUrl(value: string): boolean;
65
+ /** Whether a value is a site-relative URL under `/uploads/` that cannot climb out of it. */
66
+ export declare function isUploadUrl(value: string): boolean;
67
+ /** Whether a value is a media type, `type/subtype`, with no parameters. */
68
+ export declare function isMediaType(value: string): boolean;
69
+ //# sourceMappingURL=enclosure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enclosure.d.ts","sourceRoot":"","sources":["../../src/content/enclosure.ts"],"names":[],"mappings":"AA6BA,mDAAmD;AACnD,eAAO,MAAM,0BAA0B,cAAc,CAAC;AAEtD,6FAA6F;AAC7F,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAE7C,mGAAmG;AACnG,eAAO,MAAM,gBAAgB,YAC3B,UAAU,EACV,sBAAsB,EACtB,WAAW,EACX,YAAY,CACJ,CAAC;AAEX,uCAAuC;AACvC,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/D,uDAAuD;AACvD,MAAM,WAAW,UAAU;IACzB,2EAA2E;IAC3E,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,cAAc,CAAC;CACtB;AAED,qFAAqF;AACrF,MAAM,WAAW,kBAAkB;IACjC,2EAA2E;IAC3E,GAAG,EAAE,MAAM,CAAC;IACZ,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,qFAAqF;IACrF,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,kCAAkC;IAClC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,gDAAgD;IAChD,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B;AAED,sDAAsD;AACtD,MAAM,WAAW,SAAS;IACxB,yFAAyF;IACzF,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,UAAU,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IACpC,2EAA2E;IAC3E,UAAU,EAAE,kBAAkB,EAAE,CAAC;CAClC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,GAAG,SAAS,CAoB3F;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAElD;AAED,0FAA0F;AAC1F,wBAAgB,UAAU,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAE1D;AAED,4DAA4D;AAC5D,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAO/C;AAED,4FAA4F;AAC5F,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAOlD;AAED,2EAA2E;AAC3E,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAElD"}
@@ -0,0 +1,165 @@
1
+ /**
2
+ * A post's recording: one main audio or video file, the other versions of it,
3
+ * and its transcript (TASK-213).
4
+ *
5
+ * The front matter spells it the way RSS does, so a person reading the file
6
+ * and a person reading the feed see the same names:
7
+ *
8
+ * ```yaml
9
+ * enclosure:
10
+ * url: /uploads/2026/10/episode-12.mp3
11
+ * type: audio/mpeg
12
+ * length: 23456789
13
+ * duration: 1834
14
+ * transcript:
15
+ * url: /uploads/2026/10/episode-12.vtt
16
+ * type: text/vtt
17
+ * alternates:
18
+ * - url: https://cdn.example.com/episode-12.mp4
19
+ * type: video/mp4
20
+ * title: Video
21
+ * ```
22
+ *
23
+ * It is not a key the CMS models in {@link Document}: like `license`, it stays
24
+ * in {@link Document.extra}, so an admin save and an Eleventy build both see
25
+ * exactly what the file says. {@link enclosureOf} is the one reading of it,
26
+ * and the feeds, the theme and the federation read only what it returns.
27
+ */
28
+ import { UPLOAD_ASSET_PREFIX } from '../web/assets.js';
29
+ /** The front matter key the recording is under. */
30
+ export const ENCLOSURE_FRONT_MATTER_KEY = 'enclosure';
31
+ /** The longest title an alternate version may have, as the Podcasting 2.0 namespace says. */
32
+ export const ALTERNATE_TITLE_MAX_LENGTH = 32;
33
+ /** The transcript formats the Podcasting 2.0 namespace names, and so the ones a feed can carry. */
34
+ export const TRANSCRIPT_TYPES = [
35
+ 'text/vtt',
36
+ 'application/x-subrip',
37
+ 'text/html',
38
+ 'text/plain',
39
+ ];
40
+ /**
41
+ * The recording a post's front matter describes, or `undefined` when it has
42
+ * none worth printing.
43
+ *
44
+ * A main file without a URL under `/uploads/`, a media type, or a positive
45
+ * whole number of bytes is no enclosure at all: RSS requires all three, and a
46
+ * guessed one would send a podcast app the wrong file. Anything else that is
47
+ * wrong is dropped on its own — an alternate version with no media type, a
48
+ * transcript of a format nobody plays, a title too long to show — so one bad
49
+ * line in a hand-edited file costs that line and not the episode.
50
+ */
51
+ export function enclosureOf(extra) {
52
+ const raw = record(extra[ENCLOSURE_FRONT_MATTER_KEY]);
53
+ if (raw === undefined)
54
+ return undefined;
55
+ const url = uploadUrl(raw['url']);
56
+ const type = mediaType(raw['type']);
57
+ const length = positiveInteger(raw['length']);
58
+ if (url === undefined || type === undefined || length === undefined)
59
+ return undefined;
60
+ const duration = typeof raw['duration'] === 'number' ? raw['duration'] : undefined;
61
+ return {
62
+ url,
63
+ type,
64
+ length,
65
+ ...(duration !== undefined && Number.isFinite(duration) && duration > 0 ? { duration } : {}),
66
+ ...optional('transcript', transcriptOf(raw['transcript'])),
67
+ alternates: Array.isArray(raw['alternates'])
68
+ ? raw['alternates'].flatMap((entry) => alternateOf(entry) ?? [])
69
+ : [],
70
+ };
71
+ }
72
+ /**
73
+ * Whether a media type is played by a `<video>` and federated as a `Video`,
74
+ * rather than by an `<audio>` as an `Audio`. One answer for both, so the page
75
+ * and the fediverse never disagree about what a file is.
76
+ */
77
+ export function playsAsVideo(type) {
78
+ return type.toLowerCase().startsWith('video/');
79
+ }
80
+ /** Whether a transcript is timed captions, which a player can show over the recording. */
81
+ export function isCaptions(transcript) {
82
+ return transcript.type === 'text/vtt' || transcript.type === 'application/x-subrip';
83
+ }
84
+ /** Whether a value is an absolute `http` or `https` URL. */
85
+ export function isWebUrl(value) {
86
+ try {
87
+ const url = new URL(value);
88
+ return url.protocol === 'http:' || url.protocol === 'https:';
89
+ }
90
+ catch {
91
+ return false;
92
+ }
93
+ }
94
+ /** Whether a value is a site-relative URL under `/uploads/` that cannot climb out of it. */
95
+ export function isUploadUrl(value) {
96
+ return (value.startsWith(UPLOAD_ASSET_PREFIX) &&
97
+ value.length > UPLOAD_ASSET_PREFIX.length &&
98
+ !/[?#\\]/.test(value) &&
99
+ !value.split('/').includes('..'));
100
+ }
101
+ /** Whether a value is a media type, `type/subtype`, with no parameters. */
102
+ export function isMediaType(value) {
103
+ return /^[a-z0-9][a-z0-9!#$&^_.+-]*\/[a-z0-9][a-z0-9!#$&^_.+-]*$/i.test(value);
104
+ }
105
+ function alternateOf(value) {
106
+ const raw = record(value);
107
+ if (raw === undefined)
108
+ return undefined;
109
+ const url = fileUrl(raw['url']);
110
+ const type = mediaType(raw['type']);
111
+ if (url === undefined || type === undefined)
112
+ return undefined;
113
+ const title = trimmed(raw['title']);
114
+ return {
115
+ url,
116
+ type,
117
+ ...optional('length', positiveInteger(raw['length'])),
118
+ ...(title !== undefined && title.length <= ALTERNATE_TITLE_MAX_LENGTH ? { title } : {}),
119
+ ...optional('height', positiveInteger(raw['height'])),
120
+ ...optional('lang', trimmed(raw['lang'])),
121
+ };
122
+ }
123
+ function transcriptOf(value) {
124
+ const raw = record(value);
125
+ if (raw === undefined)
126
+ return undefined;
127
+ const url = fileUrl(raw['url']);
128
+ const type = trimmed(raw['type'])?.toLowerCase();
129
+ if (url === undefined || type === undefined || !isTranscriptType(type))
130
+ return undefined;
131
+ return { url, type };
132
+ }
133
+ function isTranscriptType(value) {
134
+ return TRANSCRIPT_TYPES.includes(value);
135
+ }
136
+ function uploadUrl(value) {
137
+ const url = trimmed(value);
138
+ return url !== undefined && isUploadUrl(url) ? url : undefined;
139
+ }
140
+ function fileUrl(value) {
141
+ const url = trimmed(value);
142
+ return url !== undefined && (isUploadUrl(url) || isWebUrl(url)) ? url : undefined;
143
+ }
144
+ function mediaType(value) {
145
+ const type = trimmed(value)?.toLowerCase();
146
+ return type !== undefined && isMediaType(type) ? type : undefined;
147
+ }
148
+ function positiveInteger(value) {
149
+ return typeof value === 'number' && Number.isSafeInteger(value) && value > 0 ? value : undefined;
150
+ }
151
+ function trimmed(value) {
152
+ if (typeof value !== 'string')
153
+ return undefined;
154
+ const text = value.trim();
155
+ return text === '' ? undefined : text;
156
+ }
157
+ function record(value) {
158
+ return typeof value === 'object' && value !== null && !Array.isArray(value)
159
+ ? value
160
+ : undefined;
161
+ }
162
+ function optional(key, value) {
163
+ return value === undefined ? {} : { [key]: value };
164
+ }
165
+ //# sourceMappingURL=enclosure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enclosure.js","sourceRoot":"","sources":["../../src/content/enclosure.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,10 @@
1
1
  export { KNOWN_FRONT_MATTER_KEYS } from './document.ts';
2
2
  export type { ActivityPubMetadata, Document, DocumentContent, DocumentType } from './document.ts';
3
+ export { ENCLOSURE_FRONT_MATTER_KEY, enclosureOf, isCaptions, playsAsVideo, TRANSCRIPT_TYPES, } from './enclosure.ts';
4
+ export type { AlternateEnclosure, Enclosure, Transcript, TranscriptType } from './enclosure.ts';
3
5
  export { renderMarkdown } from './markdown.ts';
4
6
  export { KNOWN_UPLOAD_TYPES, matchesSignature, normalizeUploadType, UPLOAD_MEDIA_TYPES, } from './media.ts';
5
- export type { UploadMediaType, UploadSignature } from './media.ts';
7
+ export type { UploadKind, UploadMediaType, UploadSignature } from './media.ts';
6
8
  export { hashDocument, parseDocument, typeForPath } from './parser.ts';
7
9
  export type { ParseDocumentOptions } from './parser.ts';
8
10
  export { discoverPostType, postLabel, postTypeOf } from './post-type.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,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACnE,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,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,4 +1,5 @@
1
1
  export { KNOWN_FRONT_MATTER_KEYS } from './document.js';
2
+ export { ENCLOSURE_FRONT_MATTER_KEY, enclosureOf, isCaptions, playsAsVideo, TRANSCRIPT_TYPES, } from './enclosure.js';
2
3
  export { renderMarkdown } from './markdown.js';
3
4
  export { KNOWN_UPLOAD_TYPES, matchesSignature, normalizeUploadType, UPLOAD_MEDIA_TYPES, } from './media.js';
4
5
  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,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,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"}
@@ -18,6 +18,13 @@ export interface UploadSignature {
18
18
  /** The bytes themselves. */
19
19
  bytes: readonly number[];
20
20
  }
21
+ /**
22
+ * What an upload is for, which decides what the CMS offers to do with it.
23
+ *
24
+ * An image is embedded and gets variants, audio and video can be a post's
25
+ * enclosure and are held to their own size limit, and a document is linked.
26
+ */
27
+ export type UploadKind = 'image' | 'audio' | 'video' | 'document';
21
28
  /** One kind of file the upload endpoint knows about. */
22
29
  export interface UploadMediaType {
23
30
  /**
@@ -26,8 +33,8 @@ export interface UploadMediaType {
26
33
  * sends no type at all, and there is then nothing to disagree with.
27
34
  */
28
35
  declared: readonly string[];
29
- /** Whether the Markdown for it is an image embed rather than a link. */
30
- image: boolean;
36
+ /** What the file is for. */
37
+ kind: UploadKind;
31
38
  /**
32
39
  * Byte patterns that identify the format, as alternatives: a file matches
33
40
  * when every part of any one of them matches. Absent for the text formats,
@@ -54,6 +61,12 @@ export declare const KNOWN_UPLOAD_TYPES: readonly string[];
54
61
  * file, so they are the same thing here.
55
62
  */
56
63
  export declare function normalizeUploadType(value: string): string;
64
+ /**
65
+ * The media type a feed or an attachment announces for this kind of file: the
66
+ * first one {@link UploadMediaType.declared} lists, which is the registered
67
+ * name where a browser may also send an older one.
68
+ */
69
+ export declare function canonicalType(media: UploadMediaType): string | undefined;
57
70
  /**
58
71
  * Whether the first bytes of a file are the ones its extension implies.
59
72
  *
@@ -1 +1 @@
1
- {"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../src/content/media.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,6DAA6D;AAC7D,MAAM,WAAW,eAAe;IAC9B,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1B;AAED,wDAAwD;AACxD,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,wEAAwE;IACxE,KAAK,EAAE,OAAO,CAAC;IACf;;;;OAIG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC,SAAS,eAAe,EAAE,CAAC,EAAE,GAAG,SAAS,CAAC;CAClE;AAOD;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,CA2FlE,CAAC;AAEH,8DAA8D;AAC9D,eAAO,MAAM,kBAAkB,EAAE,SAAS,MAAM,EAA0C,CAAC;AAE3F;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIzD;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CASnF"}
1
+ {"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../src/content/media.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,6DAA6D;AAC7D,MAAM,WAAW,eAAe;IAC9B,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1B;AAED;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC;AAElE,wDAAwD;AACxD,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,4BAA4B;IAC5B,IAAI,EAAE,UAAU,CAAC;IACjB;;;;OAIG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC,SAAS,eAAe,EAAE,CAAC,EAAE,GAAG,SAAS,CAAC;CAClE;AAgBD;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,CA+JlE,CAAC;AAEH,8DAA8D;AAC9D,eAAO,MAAM,kBAAkB,EAAE,SAAS,MAAM,EAA0C,CAAC;AAE3F;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIzD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,GAAG,SAAS,CAExE;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CASnF"}
@@ -15,6 +15,13 @@
15
15
  function ascii(value) {
16
16
  return [...value].map((character) => character.charCodeAt(0));
17
17
  }
18
+ /**
19
+ * An ISO base media file — MP4, M4A, M4V — whatever its brand: a box length,
20
+ * then `ftyp`.
21
+ */
22
+ const ISO_BASE_MEDIA = [{ offset: 4, bytes: ascii('ftyp') }];
23
+ /** An Ogg page, whatever codec is inside it. */
24
+ const OGG = [{ offset: 0, bytes: ascii('OggS') }];
18
25
  /**
19
26
  * Every extension the upload endpoint can accept, and what it takes to be one.
20
27
  *
@@ -29,7 +36,7 @@ export const UPLOAD_MEDIA_TYPES = new Map([
29
36
  '.png',
30
37
  {
31
38
  declared: ['image/png'],
32
- image: true,
39
+ kind: 'image',
33
40
  signatures: [[{ offset: 0, bytes: [0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a] }]],
34
41
  },
35
42
  ],
@@ -37,7 +44,7 @@ export const UPLOAD_MEDIA_TYPES = new Map([
37
44
  '.jpg',
38
45
  {
39
46
  declared: ['image/jpeg', 'image/jpg'],
40
- image: true,
47
+ kind: 'image',
41
48
  signatures: [[{ offset: 0, bytes: [0xff, 0xd8, 0xff] }]],
42
49
  },
43
50
  ],
@@ -45,7 +52,7 @@ export const UPLOAD_MEDIA_TYPES = new Map([
45
52
  '.jpeg',
46
53
  {
47
54
  declared: ['image/jpeg', 'image/jpg'],
48
- image: true,
55
+ kind: 'image',
49
56
  signatures: [[{ offset: 0, bytes: [0xff, 0xd8, 0xff] }]],
50
57
  },
51
58
  ],
@@ -53,7 +60,7 @@ export const UPLOAD_MEDIA_TYPES = new Map([
53
60
  '.gif',
54
61
  {
55
62
  declared: ['image/gif'],
56
- image: true,
63
+ kind: 'image',
57
64
  signatures: [
58
65
  [{ offset: 0, bytes: ascii('GIF87a') }],
59
66
  [{ offset: 0, bytes: ascii('GIF89a') }],
@@ -64,7 +71,7 @@ export const UPLOAD_MEDIA_TYPES = new Map([
64
71
  '.webp',
65
72
  {
66
73
  declared: ['image/webp'],
67
- image: true,
74
+ kind: 'image',
68
75
  // A WebP is a RIFF container whose form type is WEBP, so both halves of
69
76
  // the header have to be there.
70
77
  signatures: [
@@ -79,7 +86,7 @@ export const UPLOAD_MEDIA_TYPES = new Map([
79
86
  '.avif',
80
87
  {
81
88
  declared: ['image/avif'],
82
- image: true,
89
+ kind: 'image',
83
90
  // An ISO base media file: a length, then `ftyp`, then the brand.
84
91
  signatures: [
85
92
  [
@@ -97,19 +104,87 @@ export const UPLOAD_MEDIA_TYPES = new Map([
97
104
  '.pdf',
98
105
  {
99
106
  declared: ['application/pdf'],
100
- image: false,
107
+ kind: 'document',
101
108
  signatures: [[{ offset: 0, bytes: ascii('%PDF-') }]],
102
109
  },
103
110
  ],
104
111
  // The two text formats have no header. Nothing is sniffed, and nothing needs
105
112
  // to be: they are served as text, and `application/octet-stream` is allowed
106
113
  // because that is what a browser sends for a file type it does not know.
107
- ['.txt', { declared: ['text/plain', 'application/octet-stream'], image: false }],
114
+ ['.txt', { declared: ['text/plain', 'application/octet-stream'], kind: 'document' }],
108
115
  [
109
116
  '.md',
110
117
  {
111
118
  declared: ['text/markdown', 'text/x-markdown', 'text/plain', 'application/octet-stream'],
112
- image: false,
119
+ kind: 'document',
120
+ },
121
+ ],
122
+ // WebVTT opens with its name, after a byte order mark when the editor that
123
+ // wrote it added one. SubRip has no header, so it is taken as text like the
124
+ // two formats above.
125
+ [
126
+ '.vtt',
127
+ {
128
+ declared: ['text/vtt', 'text/plain', 'application/octet-stream'],
129
+ kind: 'document',
130
+ signatures: [
131
+ [{ offset: 0, bytes: ascii('WEBVTT') }],
132
+ [{ offset: 0, bytes: [0xef, 0xbb, 0xbf, ...ascii('WEBVTT')] }],
133
+ ],
134
+ },
135
+ ],
136
+ [
137
+ '.srt',
138
+ {
139
+ declared: ['application/x-subrip', 'text/srt', 'text/plain', 'application/octet-stream'],
140
+ kind: 'document',
141
+ },
142
+ ],
143
+ [
144
+ '.mp3',
145
+ {
146
+ declared: ['audio/mpeg', 'audio/mp3'],
147
+ kind: 'audio',
148
+ // An ID3 tag, or straight into an MPEG audio frame: eleven sync bits,
149
+ // then MPEG-1 or MPEG-2 layer III, with or without a CRC.
150
+ signatures: [
151
+ [{ offset: 0, bytes: ascii('ID3') }],
152
+ [{ offset: 0, bytes: [0xff, 0xfb] }],
153
+ [{ offset: 0, bytes: [0xff, 0xfa] }],
154
+ [{ offset: 0, bytes: [0xff, 0xf3] }],
155
+ [{ offset: 0, bytes: [0xff, 0xf2] }],
156
+ ],
157
+ },
158
+ ],
159
+ [
160
+ '.m4a',
161
+ {
162
+ declared: ['audio/mp4', 'audio/x-m4a', 'audio/m4a'],
163
+ kind: 'audio',
164
+ signatures: [ISO_BASE_MEDIA],
165
+ },
166
+ ],
167
+ [
168
+ '.aac',
169
+ {
170
+ declared: ['audio/aac', 'audio/x-aac', 'audio/aacp'],
171
+ kind: 'audio',
172
+ // A raw ADTS stream: twelve sync bits, MPEG-4 or MPEG-2, no CRC.
173
+ signatures: [[{ offset: 0, bytes: [0xff, 0xf1] }], [{ offset: 0, bytes: [0xff, 0xf9] }]],
174
+ },
175
+ ],
176
+ ['.ogg', { declared: ['audio/ogg', 'application/ogg'], kind: 'audio', signatures: [OGG] }],
177
+ ['.oga', { declared: ['audio/ogg', 'application/ogg'], kind: 'audio', signatures: [OGG] }],
178
+ ['.opus', { declared: ['audio/ogg', 'audio/opus'], kind: 'audio', signatures: [OGG] }],
179
+ ['.mp4', { declared: ['video/mp4'], kind: 'video', signatures: [ISO_BASE_MEDIA] }],
180
+ ['.m4v', { declared: ['video/mp4', 'video/x-m4v'], kind: 'video', signatures: [ISO_BASE_MEDIA] }],
181
+ [
182
+ '.webm',
183
+ {
184
+ declared: ['video/webm', 'audio/webm'],
185
+ kind: 'video',
186
+ // The EBML header every Matroska file, WebM included, opens with.
187
+ signatures: [[{ offset: 0, bytes: [0x1a, 0x45, 0xdf, 0xa3] }]],
113
188
  },
114
189
  ],
115
190
  ]);
@@ -127,6 +202,14 @@ export function normalizeUploadType(value) {
127
202
  return '';
128
203
  return trimmed.startsWith('.') ? trimmed : `.${trimmed}`;
129
204
  }
205
+ /**
206
+ * The media type a feed or an attachment announces for this kind of file: the
207
+ * first one {@link UploadMediaType.declared} lists, which is the registered
208
+ * name where a browser may also send an older one.
209
+ */
210
+ export function canonicalType(media) {
211
+ return media.declared[0];
212
+ }
130
213
  /**
131
214
  * Whether the first bytes of a file are the ones its extension implies.
132
215
  *
@@ -1 +1 @@
1
- {"version":3,"file":"media.js","sourceRoot":"","sources":["../../src/content/media.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"media.js","sourceRoot":"","sources":["../../src/content/media.ts"],"names":[],"mappings":"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"}