@geekity/cms 0.4.0 → 0.6.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 +246 -110
- package/admin/pages/documents/editor.njk +0 -13
- package/admin/pages/{settings/federation.njk → federation/settings.njk} +7 -5
- package/admin/pages/navigation/menus.njk +132 -0
- package/admin/pages/settings/reading.njk +2 -10
- package/admin/pages/tools/content-index.njk +89 -0
- package/admin/pages/users/edit.njk +25 -2
- package/admin/pages/users/list.njk +5 -2
- package/admin/static/admin.css +78 -3
- package/dist/access-log.d.ts +44 -0
- package/dist/access-log.d.ts.map +1 -0
- package/dist/access-log.js +71 -0
- package/dist/access-log.js.map +1 -0
- package/dist/admin/accounts.d.ts +10 -0
- package/dist/admin/accounts.d.ts.map +1 -1
- package/dist/admin/accounts.js +15 -3
- package/dist/admin/accounts.js.map +1 -1
- package/dist/admin/documents.d.ts +3 -13
- package/dist/admin/documents.d.ts.map +1 -1
- package/dist/admin/documents.js +2 -34
- package/dist/admin/documents.js.map +1 -1
- package/dist/admin/federation.d.ts +10 -0
- package/dist/admin/federation.d.ts.map +1 -1
- package/dist/admin/federation.js +10 -0
- package/dist/admin/federation.js.map +1 -1
- package/dist/admin/index.d.ts +3 -3
- package/dist/admin/index.d.ts.map +1 -1
- package/dist/admin/index.js +2 -2
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/menu.d.ts.map +1 -1
- package/dist/admin/menu.js +19 -2
- package/dist/admin/menu.js.map +1 -1
- package/dist/admin/navigation.d.ts +155 -0
- package/dist/admin/navigation.d.ts.map +1 -0
- package/dist/admin/navigation.js +292 -0
- package/dist/admin/navigation.js.map +1 -0
- package/dist/admin/routes.d.ts.map +1 -1
- package/dist/admin/routes.js +9 -0
- package/dist/admin/routes.js.map +1 -1
- package/dist/admin/session.d.ts +17 -3
- package/dist/admin/session.d.ts.map +1 -1
- package/dist/admin/session.js +19 -5
- package/dist/admin/session.js.map +1 -1
- package/dist/admin/settings-federation.d.ts +10 -1
- package/dist/admin/settings-federation.d.ts.map +1 -1
- package/dist/admin/settings-federation.js +26 -6
- package/dist/admin/settings-federation.js.map +1 -1
- package/dist/admin/settings-page.d.ts +26 -9
- package/dist/admin/settings-page.d.ts.map +1 -1
- package/dist/admin/settings-page.js +18 -12
- package/dist/admin/settings-page.js.map +1 -1
- package/dist/admin/settings-pages.d.ts +14 -3
- package/dist/admin/settings-pages.d.ts.map +1 -1
- package/dist/admin/settings-pages.js +15 -5
- package/dist/admin/settings-pages.js.map +1 -1
- package/dist/admin/settings-reading.d.ts +5 -4
- package/dist/admin/settings-reading.d.ts.map +1 -1
- package/dist/admin/settings-reading.js +6 -5
- package/dist/admin/settings-reading.js.map +1 -1
- package/dist/admin/settings.d.ts +29 -15
- package/dist/admin/settings.d.ts.map +1 -1
- package/dist/admin/settings.js +28 -78
- package/dist/admin/settings.js.map +1 -1
- package/dist/admin/templates.d.ts +3 -1
- package/dist/admin/templates.d.ts.map +1 -1
- package/dist/admin/templates.js +3 -1
- package/dist/admin/templates.js.map +1 -1
- package/dist/admin/tools.d.ts +111 -0
- package/dist/admin/tools.d.ts.map +1 -0
- package/dist/admin/tools.js +182 -0
- package/dist/admin/tools.js.map +1 -0
- package/dist/admin/users.d.ts +24 -0
- package/dist/admin/users.d.ts.map +1 -1
- package/dist/admin/users.js +102 -30
- package/dist/admin/users.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +6 -1
- package/dist/cli.js.map +1 -1
- package/dist/comments/form.d.ts +48 -0
- package/dist/comments/form.d.ts.map +1 -1
- package/dist/comments/form.js +15 -0
- package/dist/comments/form.js.map +1 -1
- package/dist/comments/index.d.ts +4 -3
- package/dist/comments/index.d.ts.map +1 -1
- package/dist/comments/index.js +2 -1
- package/dist/comments/index.js.map +1 -1
- package/dist/comments/routes.d.ts +3 -1
- package/dist/comments/routes.d.ts.map +1 -1
- package/dist/comments/routes.js +46 -11
- package/dist/comments/routes.js.map +1 -1
- package/dist/comments/submission.d.ts +37 -3
- package/dist/comments/submission.d.ts.map +1 -1
- package/dist/comments/submission.js +59 -20
- package/dist/comments/submission.js.map +1 -1
- package/dist/comments/viewer.d.ts +21 -0
- package/dist/comments/viewer.d.ts.map +1 -0
- package/dist/comments/viewer.js +45 -0
- package/dist/comments/viewer.js.map +1 -0
- package/dist/config.d.ts +35 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +3 -0
- package/dist/config.js.map +1 -1
- package/dist/content/store.d.ts +18 -0
- package/dist/content/store.d.ts.map +1 -1
- package/dist/content/store.js +18 -0
- package/dist/content/store.js.map +1 -1
- package/dist/env.d.ts +12 -1
- package/dist/env.d.ts.map +1 -1
- package/dist/federation/mount.d.ts +4 -0
- package/dist/federation/mount.d.ts.map +1 -1
- package/dist/federation/mount.js +60 -15
- package/dist/federation/mount.js.map +1 -1
- package/dist/index.d.ts +5 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -4
- package/dist/index.js.map +1 -1
- package/dist/web/authors.d.ts +15 -1
- package/dist/web/authors.d.ts.map +1 -1
- package/dist/web/authors.js +9 -1
- package/dist/web/authors.js.map +1 -1
- package/dist/web/index.d.ts +4 -4
- package/dist/web/index.d.ts.map +1 -1
- package/dist/web/index.js +1 -1
- package/dist/web/index.js.map +1 -1
- package/dist/web/navigation.d.ts +235 -35
- package/dist/web/navigation.d.ts.map +1 -1
- package/dist/web/navigation.js +333 -57
- package/dist/web/navigation.js.map +1 -1
- package/dist/web/negotiate.d.ts +22 -0
- package/dist/web/negotiate.d.ts.map +1 -1
- package/dist/web/negotiate.js +25 -10
- package/dist/web/negotiate.js.map +1 -1
- package/dist/web/render.d.ts +16 -10
- package/dist/web/render.d.ts.map +1 -1
- package/dist/web/render.js +21 -14
- package/dist/web/render.js.map +1 -1
- package/dist/web/routes.d.ts.map +1 -1
- package/dist/web/routes.js +11 -2
- package/dist/web/routes.js.map +1 -1
- package/dist/web/themes.d.ts +21 -0
- package/dist/web/themes.d.ts.map +1 -1
- package/dist/web/themes.js +37 -0
- package/dist/web/themes.js.map +1 -1
- package/package.json +1 -1
- package/templates/site/content/_data/site.json +7 -0
- package/templates/site/content/pages/about.md +7 -0
- package/themes/default/README.md +215 -80
- package/themes/default/layouts/author.njk +3 -4
- package/themes/default/layouts/base.njk +38 -49
- package/themes/default/layouts/front-page.njk +1 -2
- package/themes/default/partials/bio.njk +20 -22
- package/themes/default/partials/comment-form.njk +31 -3
- package/themes/default/partials/menu.njk +34 -0
- package/themes/default/partials/search-form.njk +5 -0
- package/themes/default/static/style.css +54 -13
- package/themes/default/theme.json +5 -1
package/dist/web/navigation.js
CHANGED
|
@@ -1,79 +1,227 @@
|
|
|
1
|
-
import { frontPageSlugs } from './context.js';
|
|
2
1
|
/**
|
|
3
|
-
* The
|
|
4
|
-
*
|
|
2
|
+
* The menu a theme renders when nothing says which one it means: the menu that
|
|
3
|
+
* was the whole of `navigation` before menus had names (TASK-107).
|
|
4
|
+
*/
|
|
5
|
+
export const DEFAULT_MENU_NAME = 'primary';
|
|
6
|
+
/**
|
|
7
|
+
* What one `rel` value may be spelled with: letters and dashes, which is what
|
|
8
|
+
* every HTML link type is spelled with.
|
|
5
9
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
+
* Deliberately not a list of the values this CMS knows about (TASK-114). The
|
|
11
|
+
* trailing part of a link line is whatever `rel` values the person typed —
|
|
12
|
+
* `me`, `nofollow`, `author`, `noopener`, one somebody's own reader looks for
|
|
13
|
+
* — and all of them reach the rendered attribute. A closed list would mean
|
|
14
|
+
* every value anybody wanted had to be added here first, and `me` was never a
|
|
15
|
+
* flag in the first place: it is a `rel` value that this CMS happened to be
|
|
16
|
+
* the only one to know.
|
|
10
17
|
*/
|
|
11
|
-
export const
|
|
12
|
-
/**
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
18
|
+
export const REL_VALUE_PATTERN = /^[a-z-]+$/i;
|
|
19
|
+
/**
|
|
20
|
+
* What a link line's trailing part may be, in the words both boxes explain it
|
|
21
|
+
* in, beside {@link LINK_URL_RULE}.
|
|
22
|
+
*/
|
|
23
|
+
export const LINK_REL_RULE = 'the rel values the link carries, a word each — "| me", "| nofollow noopener"';
|
|
24
|
+
/**
|
|
25
|
+
* One bar-separated part as the `rel` values it names, or `undefined` when it
|
|
26
|
+
* is not a list of them.
|
|
27
|
+
*
|
|
28
|
+
* Every word has to be one: `nofollow noopener` is a list, `a=1|2`'s `2` is
|
|
29
|
+
* not, and that is what keeps a bar inside a URL a bar. An empty part names no
|
|
30
|
+
* values rather than an empty list, because `About | /about/ |` is a line with
|
|
31
|
+
* a trailing bar, not a line with a rel.
|
|
32
|
+
*/
|
|
33
|
+
export function relValuesOf(text) {
|
|
34
|
+
const words = text
|
|
35
|
+
.trim()
|
|
36
|
+
.split(/\s+/)
|
|
37
|
+
.filter((word) => word !== '');
|
|
38
|
+
if (words.length === 0)
|
|
39
|
+
return undefined;
|
|
40
|
+
return words.every((word) => REL_VALUE_PATTERN.test(word)) ? words : undefined;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Some `rel` values as one attribute holds them: lower case, each said once,
|
|
44
|
+
* in the order they were first typed.
|
|
45
|
+
*
|
|
46
|
+
* A theme prints this string and nothing else, so it never joins a list itself
|
|
47
|
+
* and never emits two `rel` attributes on one link. Lower case is what makes
|
|
48
|
+
* saying a value twice — `me` typed on a profile link that already carries it
|
|
49
|
+
* — a no-op rather than `rel="me ME"`.
|
|
50
|
+
*/
|
|
51
|
+
export function relText(values) {
|
|
52
|
+
const said = new Set();
|
|
53
|
+
for (const value of values) {
|
|
54
|
+
for (const word of value.trim().toLowerCase().split(/\s+/)) {
|
|
55
|
+
if (word !== '')
|
|
56
|
+
said.add(word);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return [...said].join(' ');
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* One typed link line, with the `rel` values taken off the end of it.
|
|
63
|
+
*
|
|
64
|
+
* The values come off the right, one bar-separated part at a time, and only
|
|
65
|
+
* while the last part is a list of rel values — so `Mastodon |
|
|
66
|
+
* https://example.social/@me | me | nofollow` and `... | me nofollow` are the
|
|
67
|
+
* same line, and `Odd | /odd/?a=1|2` keeps its bar because `2` is not one.
|
|
68
|
+
*
|
|
69
|
+
* The one place a link line is split, for the reason the URL rule is worded
|
|
70
|
+
* once (TASK-114): the menu box on the Navigation screen and the Links box on
|
|
71
|
+
* a profile take the same line, so somebody who learns one box has learned the
|
|
72
|
+
* other.
|
|
73
|
+
*/
|
|
74
|
+
export function splitLinkRel(line) {
|
|
75
|
+
const values = [];
|
|
76
|
+
let text = line;
|
|
77
|
+
for (;;) {
|
|
78
|
+
const bar = text.lastIndexOf('|');
|
|
79
|
+
if (bar === -1)
|
|
80
|
+
break;
|
|
81
|
+
const rel = relValuesOf(text.slice(bar + 1));
|
|
82
|
+
if (rel === undefined)
|
|
83
|
+
break;
|
|
84
|
+
values.unshift(...rel);
|
|
85
|
+
text = text.slice(0, bar);
|
|
86
|
+
}
|
|
87
|
+
return { text: text.trim(), rel: relText(values) };
|
|
27
88
|
}
|
|
28
89
|
/**
|
|
29
|
-
*
|
|
90
|
+
* What a menu name may be spelled with.
|
|
91
|
+
*
|
|
92
|
+
* A menu name is the word a theme writes after the dot in
|
|
93
|
+
* `{% for item in menus.footer %}`, and the key `site.json` stores that menu
|
|
94
|
+
* under. So it is an identifier before it is a slug: in a template
|
|
95
|
+
* `menus.top-bar` is `menus.top` minus `bar`, which renders nothing, raises
|
|
96
|
+
* nothing and leaves somebody looking at an empty page wondering which half is
|
|
97
|
+
* broken. A hyphen is refused here so that cannot happen.
|
|
30
98
|
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
|
|
36
|
-
|
|
99
|
+
* Lower case is the other half of the rule, and it is what refuses the
|
|
100
|
+
* spellings that would be confused with each other: `footer` and `Footer`
|
|
101
|
+
* would be two menus on the Navigation screen, one of them rendered nowhere,
|
|
102
|
+
* and no way to see the difference between them at a glance.
|
|
103
|
+
*/
|
|
104
|
+
export const MENU_NAME_PATTERN = /^[a-z][a-z0-9_]*$/;
|
|
105
|
+
/** The longest a menu name may be. Long enough for a phrase, short enough to read. */
|
|
106
|
+
export const MENU_NAME_MAX_LENGTH = 32;
|
|
107
|
+
/**
|
|
108
|
+
* What is wrong with a proposed menu name, or `undefined` when nothing is.
|
|
37
109
|
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
110
|
+
* The rule governs a name somebody types on the Navigation screen (TASK-108).
|
|
111
|
+
* A name a `theme.json` declares is a menu name by declaration and is shown as
|
|
112
|
+
* the theme spells it: the theme decides where its own menus go, and a screen
|
|
113
|
+
* that hid a declared area because it disliked the spelling would leave
|
|
114
|
+
* somebody unable to fill in a menu their site renders.
|
|
41
115
|
*/
|
|
42
|
-
export function
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
116
|
+
export function menuNameProblem(name) {
|
|
117
|
+
const proposed = name.trim();
|
|
118
|
+
if (proposed === '')
|
|
119
|
+
return 'A menu needs a name: it is what a theme asks for the menu by.';
|
|
120
|
+
if (proposed.length > MENU_NAME_MAX_LENGTH) {
|
|
121
|
+
return `A menu name is at most ${String(MENU_NAME_MAX_LENGTH)} characters, and "${proposed}" is longer.`;
|
|
122
|
+
}
|
|
123
|
+
if (proposed !== proposed.toLowerCase()) {
|
|
124
|
+
return `A menu name is lower case, so "${proposed}" would be a second menu beside "${proposed.toLowerCase()}" that nothing could tell apart. Try "${proposed.toLowerCase()}".`;
|
|
125
|
+
}
|
|
126
|
+
if (!MENU_NAME_PATTERN.test(proposed)) {
|
|
127
|
+
return (`"${proposed}" is not a menu name. A name is lower-case letters, digits and ` +
|
|
128
|
+
`underscores and has to start with a letter, because a theme writes it after ` +
|
|
129
|
+
`the dot — menus.footer — where a dash would be a minus sign.`);
|
|
130
|
+
}
|
|
131
|
+
return undefined;
|
|
53
132
|
}
|
|
54
|
-
/**
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
133
|
+
/**
|
|
134
|
+
* One named menu for one request: the items the site stores under that name,
|
|
135
|
+
* with the one the request is on marked.
|
|
136
|
+
*
|
|
137
|
+
* The setting is the only source of a menu (TASK-106). A page cannot put
|
|
138
|
+
* itself in one, so there is one screen to edit a menu on, one order — the
|
|
139
|
+
* order the lines were typed in — and no way for one link to appear twice. A
|
|
140
|
+
* page that should be linked is linked by typing a line for it, including the
|
|
141
|
+
* page a site serves as its front page: that one is typed `Home | /`, the URL
|
|
142
|
+
* a reader lands on, rather than the permalink that redirects there.
|
|
143
|
+
*
|
|
144
|
+
* A name the site has stored nothing under is an empty menu rather than an
|
|
145
|
+
* error: a theme declaring an area the site has not filled in yet renders
|
|
146
|
+
* nothing there, which is what an unfilled area should look like.
|
|
147
|
+
*/
|
|
148
|
+
export function navigationMenu(options) {
|
|
149
|
+
return markCurrent(navigationItems(options.site, options.name), options.url);
|
|
58
150
|
}
|
|
59
151
|
/**
|
|
60
|
-
*
|
|
152
|
+
* Every menu one site stores, by name, marked for this request: what the
|
|
153
|
+
* template context carries as `menus`.
|
|
154
|
+
*
|
|
155
|
+
* Every stored menu is here, not only the ones the theme in use declares an
|
|
156
|
+
* area for. The declaration in `theme.json` is what the Navigation screen
|
|
157
|
+
* reads to say where a menu can go (TASK-108); it is not a filter on the
|
|
158
|
+
* render, because a theme that renders a menu it forgot to declare should look
|
|
159
|
+
* wrong on the screen that lists areas rather than silently render nothing.
|
|
160
|
+
* A menu no template loops over is simply rendered nowhere, and kept.
|
|
161
|
+
*/
|
|
162
|
+
export function navigationMenus(options) {
|
|
163
|
+
const menus = {};
|
|
164
|
+
for (const [name, items] of Object.entries(siteMenus(options.site))) {
|
|
165
|
+
menus[name] = markCurrent(items, options.url);
|
|
166
|
+
}
|
|
167
|
+
return menus;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* The items of one named menu, ignoring anything that is not one.
|
|
61
171
|
*
|
|
62
172
|
* Tolerant on the way out, the way `taxonomyBasesOrDefault` is: the settings
|
|
63
173
|
* screen refuses a malformed item, so anything unreadable here came from a
|
|
64
174
|
* hand-edited `site.json`, and a menu that quietly loses a line is a better
|
|
65
175
|
* answer than a site that will not render.
|
|
66
176
|
*/
|
|
67
|
-
export function navigationItems(site) {
|
|
68
|
-
return navigationItemsOf(site['
|
|
177
|
+
export function navigationItems(site, name = DEFAULT_MENU_NAME) {
|
|
178
|
+
return navigationItemsOf(menusOf(site['menus'])[name]);
|
|
69
179
|
}
|
|
70
180
|
/**
|
|
71
|
-
*
|
|
181
|
+
* Every menu the site data stores, by name.
|
|
182
|
+
*
|
|
183
|
+
* The one place `site.menus` is read on the render side, the way
|
|
184
|
+
* {@link navigationItems} was the one place `site.navigation` was read before
|
|
185
|
+
* menus had names. The old key is not read at all: a site.json still carrying
|
|
186
|
+
* `navigation` has a key nothing looks at, which is what a rename means.
|
|
187
|
+
*/
|
|
188
|
+
export function siteMenus(site) {
|
|
189
|
+
return menusOf(site['menus']);
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* A `menus` value as the menus it names, ignoring anything that is not one.
|
|
193
|
+
*
|
|
194
|
+
* One spelling for the site data a render reads and the `menus` the settings
|
|
195
|
+
* screen writes, so a menu means the same thing to the theme and to the form
|
|
196
|
+
* that edits it. Anything but a plain object — a list, a string, nothing at
|
|
197
|
+
* all — is a site with no menus; a name holding something that is not a list
|
|
198
|
+
* is a menu with nothing in it, because the name is still a menu this site
|
|
199
|
+
* holds and the Navigation screen has to be able to show it.
|
|
200
|
+
*/
|
|
201
|
+
export function menusOf(value) {
|
|
202
|
+
if (typeof value !== 'object' || value === null || Array.isArray(value))
|
|
203
|
+
return {};
|
|
204
|
+
const menus = {};
|
|
205
|
+
for (const [name, items] of Object.entries(value)) {
|
|
206
|
+
if (name === '')
|
|
207
|
+
continue;
|
|
208
|
+
menus[name] = navigationItemsOf(items);
|
|
209
|
+
}
|
|
210
|
+
return menus;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* One menu's stored value as the items it names, ignoring anything that is not
|
|
72
214
|
* one.
|
|
73
215
|
*
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
*
|
|
216
|
+
* `rel` is read through {@link relText}, so a file that wrote it in capitals
|
|
217
|
+
* or said a value twice renders one attribute either way, and a `rel` that is
|
|
218
|
+
* not a string is an item with none rather than an item dropped.
|
|
219
|
+
*
|
|
220
|
+
* `me: true` is still read, as `rel: "me"`. It is how every marked item was
|
|
221
|
+
* spelled before the trailing part of a line was a list of rel values
|
|
222
|
+
* (TASK-107, TASK-114), and a site that had set the only flag there was must
|
|
223
|
+
* not lose it on upgrade; the Navigation screen writes `rel` the next time
|
|
224
|
+
* that menu is saved. Only the literal `true` counts, the way it always did.
|
|
77
225
|
*/
|
|
78
226
|
export function navigationItemsOf(value) {
|
|
79
227
|
if (!Array.isArray(value))
|
|
@@ -82,15 +230,143 @@ export function navigationItemsOf(value) {
|
|
|
82
230
|
for (const entry of value) {
|
|
83
231
|
if (typeof entry !== 'object' || entry === null)
|
|
84
232
|
continue;
|
|
85
|
-
const { label, url } = entry;
|
|
233
|
+
const { label, url, rel, me } = entry;
|
|
86
234
|
if (typeof label !== 'string' || label === '')
|
|
87
235
|
continue;
|
|
88
236
|
if (typeof url !== 'string' || url === '')
|
|
89
237
|
continue;
|
|
90
|
-
|
|
238
|
+
const values = relText([
|
|
239
|
+
...(me === true ? ['me'] : []),
|
|
240
|
+
...(typeof rel === 'string' ? [rel] : []),
|
|
241
|
+
]);
|
|
242
|
+
items.push({ label, url, ...(values === '' ? {} : { rel: values }) });
|
|
91
243
|
}
|
|
92
244
|
return items;
|
|
93
245
|
}
|
|
246
|
+
/**
|
|
247
|
+
* The non-empty lines of a menu box, trimmed.
|
|
248
|
+
*
|
|
249
|
+
* A blank line is not an error, exactly as it is not in the relay list: a
|
|
250
|
+
* pasted menu leaves them, and a blank line asks for nothing.
|
|
251
|
+
*/
|
|
252
|
+
function menuLines(value) {
|
|
253
|
+
return value
|
|
254
|
+
.split('\n')
|
|
255
|
+
.map((line) => line.trim())
|
|
256
|
+
.filter((line) => line !== '');
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* One `Label | URL` line as a menu item, or `undefined` when it is not one.
|
|
260
|
+
*
|
|
261
|
+
* The URL is either a site-root path or an absolute http(s) URL: a bare
|
|
262
|
+
* `about/` would be resolved against whatever page it was printed on, which is
|
|
263
|
+
* never what a menu means.
|
|
264
|
+
*
|
|
265
|
+
* A line may end in the `rel` values the link carries — `Mastodon |
|
|
266
|
+
* https://example.social/@me | me`, `A source | https://example.com/thing |
|
|
267
|
+
* nofollow noopener` — which {@link splitLinkRel} takes off the end first.
|
|
268
|
+
*
|
|
269
|
+
* What is left splits at its first bar, so a label still cannot hold one.
|
|
270
|
+
*/
|
|
271
|
+
export function menuItemOf(line) {
|
|
272
|
+
const { text, rel } = splitLinkRel(line);
|
|
273
|
+
const bar = text.indexOf('|');
|
|
274
|
+
if (bar === -1)
|
|
275
|
+
return undefined;
|
|
276
|
+
const label = text.slice(0, bar).trim();
|
|
277
|
+
const url = text.slice(bar + 1).trim();
|
|
278
|
+
if (label === '' || !isLinkUrl(url))
|
|
279
|
+
return undefined;
|
|
280
|
+
return { label, url, ...(rel === '' ? {} : { rel }) };
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* A menu box as the ordered items it names, dropping the lines that are not
|
|
284
|
+
* items.
|
|
285
|
+
*
|
|
286
|
+
* Call {@link menuItemLineProblem} first where a person is waiting to be told:
|
|
287
|
+
* this is the tolerant read, which is what the old settings table's rows and a
|
|
288
|
+
* validated box both go through. `site.json` is read by {@link menusOf}
|
|
289
|
+
* instead, because the file holds objects rather than lines.
|
|
290
|
+
*/
|
|
291
|
+
export function menuItemsFromText(value) {
|
|
292
|
+
const items = [];
|
|
293
|
+
for (const line of menuLines(value)) {
|
|
294
|
+
const item = menuItemOf(line);
|
|
295
|
+
if (item !== undefined)
|
|
296
|
+
items.push(item);
|
|
297
|
+
}
|
|
298
|
+
return items;
|
|
299
|
+
}
|
|
300
|
+
/** The items as a box shows them: one line each, in order. */
|
|
301
|
+
export function menuItemsText(items) {
|
|
302
|
+
return items
|
|
303
|
+
.map((item) => `${item.label} | ${item.url}${item.rel === undefined ? '' : ` | ${item.rel}`}`)
|
|
304
|
+
.join('\n');
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* What is wrong with a typed menu, or `undefined` when nothing is.
|
|
308
|
+
*
|
|
309
|
+
* One message naming the first bad line rather than a count of how many there
|
|
310
|
+
* are: a box is fixed a line at a time, and the line to fix is the useful
|
|
311
|
+
* half of the sentence.
|
|
312
|
+
*/
|
|
313
|
+
export function menuItemLineProblem(value) {
|
|
314
|
+
const bad = menuLines(value).find((line) => menuItemOf(line) === undefined);
|
|
315
|
+
return bad === undefined
|
|
316
|
+
? undefined
|
|
317
|
+
: `A menu item is "Label | URL", one per line, where the URL is ` +
|
|
318
|
+
`${LINK_URL_RULE}, and may end in ${LINK_REL_RULE}. "${bad}" is not one.`;
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* What a URL typed into a link box may be, in the words both boxes explain it
|
|
322
|
+
* in: the menu on the Navigation screen and the Links on a user's profile.
|
|
323
|
+
*
|
|
324
|
+
* One sentence fragment rather than two, so the rule {@link isLinkUrl} applies
|
|
325
|
+
* is worded the same wherever somebody is told about it (TASK-112). Somebody
|
|
326
|
+
* who learns one box should not be taught the wrong thing about the other.
|
|
327
|
+
*/
|
|
328
|
+
export const LINK_URL_RULE = 'a path like /about/ or an absolute http:// or https:// URL, with no spaces in it';
|
|
329
|
+
/**
|
|
330
|
+
* Whether a typed URL is one a link box accepts: a site-root path, or an
|
|
331
|
+
* absolute http(s) URL, and no whitespace either way.
|
|
332
|
+
*
|
|
333
|
+
* A bare `about/` would be resolved against whatever page it was printed on,
|
|
334
|
+
* which is never what a link box means, and a `javascript:` or `data:` URL is
|
|
335
|
+
* not somewhere a reader goes.
|
|
336
|
+
*
|
|
337
|
+
* The whitespace half is not decoration. `new URL` does not throw on
|
|
338
|
+
* `https://shll.me/@a | me`: it reads the space and the bar as path
|
|
339
|
+
* characters and percent-encodes them, so a check that only asked the parser
|
|
340
|
+
* took a label, a URL and a trailing word as one URL and stored it — which is
|
|
341
|
+
* how a reader of shll.me ended up at `/author/a%20%7C%20me/` (TASK-112). A
|
|
342
|
+
* URL somebody types has no spaces in it; a space means they typed two things.
|
|
343
|
+
*
|
|
344
|
+
* Deliberately a test rather than a normaliser: a link keeps the URL as it was
|
|
345
|
+
* typed, so `https://example.social/@me` is what the link says and what the
|
|
346
|
+
* box shows it back as.
|
|
347
|
+
*/
|
|
348
|
+
export function isLinkUrl(url) {
|
|
349
|
+
if (url === '' || /\s/.test(url))
|
|
350
|
+
return false;
|
|
351
|
+
if (url.startsWith('/'))
|
|
352
|
+
return true;
|
|
353
|
+
let parsed;
|
|
354
|
+
try {
|
|
355
|
+
parsed = new URL(url);
|
|
356
|
+
}
|
|
357
|
+
catch {
|
|
358
|
+
return false;
|
|
359
|
+
}
|
|
360
|
+
return parsed.protocol === 'http:' || parsed.protocol === 'https:';
|
|
361
|
+
}
|
|
362
|
+
/** One menu's items, with the one the request is on marked. */
|
|
363
|
+
function markCurrent(items, url) {
|
|
364
|
+
const here = comparablePath(url);
|
|
365
|
+
return items.map((item) => ({
|
|
366
|
+
...item,
|
|
367
|
+
current: here !== undefined && comparablePath(item.url) === here,
|
|
368
|
+
}));
|
|
369
|
+
}
|
|
94
370
|
/**
|
|
95
371
|
* A menu URL as the string two of them are compared by: its path without the
|
|
96
372
|
* trailing slash that is canonical here, or `undefined` when it is not a path
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../src/web/navigation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../src/web/navigation.ts"],"names":[],"mappings":"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"}
|
package/dist/web/negotiate.d.ts
CHANGED
|
@@ -150,6 +150,19 @@ export interface RepresentationResponseOptions {
|
|
|
150
150
|
* business beyond joining them to the header.
|
|
151
151
|
*/
|
|
152
152
|
links?: readonly string[] | undefined;
|
|
153
|
+
/**
|
|
154
|
+
* Whether this response was drawn for one named reader rather than for
|
|
155
|
+
* everybody (TASK-103).
|
|
156
|
+
*
|
|
157
|
+
* A post page is the same for every reader, which is what lets a CDN or a
|
|
158
|
+
* reverse proxy — the Docker deployment documents one — hold it and hand it
|
|
159
|
+
* out. The moment it says "Commenting as ada" it is one person's page, and
|
|
160
|
+
* anything in front of the site holding it would hand her name to the next
|
|
161
|
+
* reader. Such a response says so, and carries no validator either: a
|
|
162
|
+
* browser revalidating its own copy would otherwise be told a page drawn for
|
|
163
|
+
* somebody signed in is still fresh after they signed out.
|
|
164
|
+
*/
|
|
165
|
+
private?: boolean | undefined;
|
|
153
166
|
/** Validator for this representation. Omit when one cannot be trusted. */
|
|
154
167
|
etag?: string | undefined;
|
|
155
168
|
/** When the resource last changed. */
|
|
@@ -167,6 +180,15 @@ export interface RepresentationResponseOptions {
|
|
|
167
180
|
* one exit means one place where the headers are decided.
|
|
168
181
|
*/
|
|
169
182
|
export declare function representationResponse(options: RepresentationResponseOptions): Response;
|
|
183
|
+
/**
|
|
184
|
+
* What a response drawn for one named reader says about itself.
|
|
185
|
+
*
|
|
186
|
+
* `private` is the part that matters: it tells a shared cache this belongs to
|
|
187
|
+
* one reader and must not be handed to another. `no-store` is the belt to its
|
|
188
|
+
* braces, and keeps the page off the disk of a browser somebody else uses
|
|
189
|
+
* after them.
|
|
190
|
+
*/
|
|
191
|
+
export declare const PRIVATE_CACHE_CONTROL = "private, no-store";
|
|
170
192
|
/**
|
|
171
193
|
* The 406 a request earns when it accepts none of the representations on
|
|
172
194
|
* offer, with the options in the body so a client can pick one and retry.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"negotiate.d.ts","sourceRoot":"","sources":["../../src/web/negotiate.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"negotiate.d.ts","sourceRoot":"","sources":["../../src/web/negotiate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAIvD;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;AAE1D,uDAAuD;AACvD,eAAO,MAAM,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAIhE,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,EAAE,SAAS,cAAc,EAAiC,CAAC;AAEhG,mFAAmF;AACnF,eAAO,MAAM,uBAAuB,EAAE,SAAS,cAAc,EAAqB,CAAC;AAEnF;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,SAAS,EAAE,SAAS,cAAc,EAAE,GACnC,cAAc,GAAG,SAAS,CAsB5B;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,4BAA4B,EAAE,SAAS,MAAM,EAGzD,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAmB1E;AAwBD;;;GAGG;AACH,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAGvF,CAAC;AAEF,mFAAmF;AACnF,MAAM,WAAW,uBAAuB;IACtC,kDAAkD;IAClD,cAAc,EAAE,cAAc,CAAC;IAC/B,gEAAgE;IAChE,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1B;AAED;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,MAAM,GACf,uBAAuB,GAAG,SAAS,CAkBrC;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,GAAG,MAAM,CAIvF;AAED;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC,mFAAmF;AACnF,MAAM,WAAW,YAAY;IAC3B,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,GAAG,EAAE,MAAM,CAAC;IACZ,iEAAiE;IACjE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,2CAA2C;AAC3C,MAAM,WAAW,mBAAmB;IAClC,wDAAwD;IACxD,OAAO,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC5B;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,mBAAmB,GAAG,YAAY,CAa3F;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAKrE;AASD,mDAAmD;AACnD,MAAM,WAAW,kBAAkB;IACjC,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,2BAA2B;IAC3B,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED,gDAAgD;AAChD,MAAM,WAAW,6BAA6B;IAC5C,sEAAsE;IACtE,IAAI,EAAE,OAAO,CAAC;IACd,sCAAsC;IACtC,cAAc,EAAE,cAAc,CAAC;IAC/B,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,6EAA6E;IAC7E,SAAS,EAAE,SAAS,cAAc,EAAE,CAAC;IACrC;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACtC;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,0EAA0E;IAC1E,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,sCAAsC;IACtC,YAAY,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IAChC,sDAAsD;IACtD,WAAW,CAAC,EAAE,kBAAkB,GAAG,SAAS,CAAC;CAC9C;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,6BAA6B,GAAG,QAAQ,CA2CvF;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,sBAAsB,CAAC;AAEzD;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,SAAS,cAAc,EAAE,GACnC,QAAQ,CAuBV;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,cAAc,GAAG,SAAS,EACnC,SAAS,EAAE,SAAS,cAAc,EAAE,GACnC,MAAM,CAQR;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,cAAc,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAE9F;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAGrE;AAED,4EAA4E;AAC5E,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,CAOnE;AAED,8EAA8E;AAC9E,wBAAgB,cAAc,CAAC,SAAS,EAAE,SAAS,QAAQ,EAAE,GAAG,IAAI,GAAG,SAAS,CAQ/E;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,WAAW,EAAE,kBAAkB,GAAG,SAAS,EAC3C,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,YAAY,EAAE,IAAI,GAAG,SAAS,GAC7B,OAAO,CAcT;AAED,+CAA+C;AAC/C,MAAM,WAAW,WAAW;IAC1B,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,EAAE,CAmBzD"}
|
package/dist/web/negotiate.js
CHANGED
|
@@ -211,18 +211,24 @@ export function representationResponse(options) {
|
|
|
211
211
|
.filter((value) => value !== '')
|
|
212
212
|
.join(', '),
|
|
213
213
|
});
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
214
|
+
const personal = options.private === true;
|
|
215
|
+
if (!personal) {
|
|
216
|
+
if (options.etag !== undefined)
|
|
217
|
+
headers.set('etag', options.etag);
|
|
218
|
+
if (options.lastModified !== undefined) {
|
|
219
|
+
headers.set('last-modified', options.lastModified.toUTCString());
|
|
220
|
+
}
|
|
221
|
+
// A validator without a directive leaves the browser to guess how long the
|
|
222
|
+
// response stays fresh. `no-cache` keeps the validator's value — a cheap
|
|
223
|
+
// 304 — without ever letting a stale page through.
|
|
224
|
+
if (options.etag !== undefined || options.lastModified !== undefined) {
|
|
225
|
+
headers.set('cache-control', 'no-cache');
|
|
226
|
+
}
|
|
218
227
|
}
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
// — without ever letting a stale page through.
|
|
222
|
-
if (options.etag !== undefined || options.lastModified !== undefined) {
|
|
223
|
-
headers.set('cache-control', 'no-cache');
|
|
228
|
+
else {
|
|
229
|
+
headers.set('cache-control', PRIVATE_CACHE_CONTROL);
|
|
224
230
|
}
|
|
225
|
-
if (isNotModified(options.conditional, options.etag, options.lastModified)) {
|
|
231
|
+
if (!personal && isNotModified(options.conditional, options.etag, options.lastModified)) {
|
|
226
232
|
return new Response(null, { status: 304, headers });
|
|
227
233
|
}
|
|
228
234
|
headers.set('content-type', CONTENT_TYPES[options.representation]);
|
|
@@ -235,6 +241,15 @@ export function representationResponse(options) {
|
|
|
235
241
|
: String(options.body);
|
|
236
242
|
return new Response(body, { headers });
|
|
237
243
|
}
|
|
244
|
+
/**
|
|
245
|
+
* What a response drawn for one named reader says about itself.
|
|
246
|
+
*
|
|
247
|
+
* `private` is the part that matters: it tells a shared cache this belongs to
|
|
248
|
+
* one reader and must not be handed to another. `no-store` is the belt to its
|
|
249
|
+
* braces, and keeps the page off the disk of a browser somebody else uses
|
|
250
|
+
* after them.
|
|
251
|
+
*/
|
|
252
|
+
export const PRIVATE_CACHE_CONTROL = 'private, no-store';
|
|
238
253
|
/**
|
|
239
254
|
* The 406 a request earns when it accepts none of the representations on
|
|
240
255
|
* offer, with the options in the body so a client can pick one and retry.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"negotiate.js","sourceRoot":"","sources":["../../src/web/negotiate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"negotiate.js","sourceRoot":"","sources":["../../src/web/negotiate.ts"],"names":[],"mappings":"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"}
|