@gjsify/site 0.64.11 → 0.64.12-next.280

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 (49) hide show
  1. package/README.md +85 -19
  2. package/lib/cli.js +4 -14
  3. package/lib/client/site.css +283 -3
  4. package/lib/index.d.ts +5 -0
  5. package/lib/index.js +5 -0
  6. package/lib/render/blog.d.ts +62 -0
  7. package/lib/render/blog.js +240 -0
  8. package/lib/render/developer.d.ts +30 -0
  9. package/lib/render/developer.js +285 -0
  10. package/lib/render/feed.d.ts +25 -0
  11. package/lib/render/feed.js +97 -0
  12. package/lib/render/i18n.d.ts +2 -2
  13. package/lib/render/i18n.js +2 -0
  14. package/lib/render/icons.d.ts +1 -1
  15. package/lib/render/icons.js +3 -0
  16. package/lib/render/image-backend.d.ts +2 -1
  17. package/lib/render/image-backend.js +2 -2
  18. package/lib/render/images.d.ts +2 -0
  19. package/lib/render/images.js +3 -2
  20. package/lib/render/layout.d.ts +94 -0
  21. package/lib/render/layout.js +216 -0
  22. package/lib/render/markdown.d.ts +15 -1
  23. package/lib/render/markdown.js +245 -20
  24. package/lib/render/pages.d.ts +21 -8
  25. package/lib/render/pages.js +99 -263
  26. package/lib/render/seo.d.ts +34 -1
  27. package/lib/render/seo.js +50 -4
  28. package/lib/site-data/blog.d.ts +30 -0
  29. package/lib/site-data/blog.js +226 -0
  30. package/lib/site-data/config.d.ts +7 -2
  31. package/lib/site-data/config.js +118 -23
  32. package/lib/site-data/developer.d.ts +16 -0
  33. package/lib/site-data/developer.js +12 -0
  34. package/lib/site-data/frontmatter.d.ts +7 -0
  35. package/lib/site-data/frontmatter.js +242 -0
  36. package/lib/site-data/index.d.ts +4 -0
  37. package/lib/site-data/index.js +4 -0
  38. package/lib/site-data/related.d.ts +4 -2
  39. package/lib/site-data/related.js +8 -3
  40. package/lib/site-data/resume.d.ts +64 -0
  41. package/lib/site-data/resume.js +277 -0
  42. package/lib/site-data/types.d.ts +57 -15
  43. package/lib/site.d.ts +2 -26
  44. package/lib/site.js +211 -78
  45. package/package.json +13 -12
  46. package/po/de.po +88 -25
  47. package/po/site.pot +86 -23
  48. package/lib/render/overview.d.ts +0 -19
  49. package/lib/render/overview.js +0 -53
package/po/de.po CHANGED
@@ -6,15 +6,99 @@ msgstr ""
6
6
  "Content-Type: text/plain; charset=UTF-8\n"
7
7
  "Content-Transfer-Encoding: 8bit\n"
8
8
 
9
+ msgid "Updated {date}"
10
+ msgstr "Aktualisiert am {date}"
11
+
12
+ msgid "Draft"
13
+ msgstr "Entwurf"
14
+
15
+ msgid "Subscribe to the feed"
16
+ msgstr "Feed abonnieren"
17
+
18
+ msgid "Posts tagged “{tag}”"
19
+ msgstr "Beiträge zum Thema „{tag}“"
20
+
21
+ msgid "Blog"
22
+ msgstr "Blog"
23
+
24
+ msgid "Posts by {name}"
25
+ msgstr "Beiträge von {name}"
26
+
27
+ msgid "No posts in this language yet."
28
+ msgstr "In dieser Sprache gibt es noch keine Beiträge."
29
+
30
+ msgid "All posts"
31
+ msgstr "Alle Beiträge"
32
+
33
+ msgid "From the blog"
34
+ msgstr "Aus dem Blog"
35
+
36
+ msgid "CV"
37
+ msgstr "Lebenslauf"
38
+
39
+ msgid "Apps"
40
+ msgstr "Apps"
41
+
42
+ msgid "Support my work"
43
+ msgstr "Meine Arbeit unterstützen"
44
+
45
+ msgid "Read my CV"
46
+ msgstr "Zum Lebenslauf"
47
+
48
+ msgid "Elsewhere"
49
+ msgstr "Anderswo"
50
+
51
+ msgid "today"
52
+ msgstr "heute"
53
+
54
+ msgid "Experience, projects and skills of {name}."
55
+ msgstr "Berufserfahrung, Projekte und Kenntnisse von {name}."
56
+
57
+ msgid "Experience"
58
+ msgstr "Berufserfahrung"
59
+
60
+ msgid "Projects"
61
+ msgstr "Projekte"
62
+
63
+ msgid "Education"
64
+ msgstr "Ausbildung"
65
+
66
+ msgid "Skills"
67
+ msgstr "Kenntnisse"
68
+
69
+ msgid "Languages"
70
+ msgstr "Sprachen"
71
+
72
+ msgid "Back to {app}"
73
+ msgstr "Zurück zu {app}"
74
+
75
+ msgid "{name} writes free software. Support the work with a transfer or a service."
76
+ msgstr "{name} schreibt freie Software. Unterstütze die Arbeit per Überweisung oder über einen Dienst."
77
+
9
78
  msgid "Support"
10
79
  msgstr "Unterstützen"
11
80
 
12
- msgid "These apps are free software. Pick one to see how to support its development."
13
- msgstr "Diese Apps sind freie Software. Wähle eine aus, um zu sehen, wie du ihre Entwicklung unterstützen kannst."
81
+ msgid "Privacy"
82
+ msgstr "Datenschutz"
83
+
84
+ msgid "What {app} does with data."
85
+ msgstr "Was {app} mit Daten tut."
86
+
87
+ msgid "Legal Notice"
88
+ msgstr "Impressum"
89
+
90
+ msgid "Who publishes {app}, and how to reach them."
91
+ msgstr "Wer {app} veröffentlicht, und wie man diese Person erreicht."
14
92
 
15
93
  msgid "Language"
16
94
  msgstr "Sprache"
17
95
 
96
+ msgid "Source code"
97
+ msgstr "Quellcode"
98
+
99
+ msgid "Made with {project}"
100
+ msgstr "Gemacht mit {project}"
101
+
18
102
  msgid "Website"
19
103
  msgstr "Webseite"
20
104
 
@@ -24,9 +108,6 @@ msgstr "Hilfe"
24
108
  msgid "FAQ"
25
109
  msgstr "FAQ"
26
110
 
27
- msgid "Source code"
28
- msgstr "Quellcode"
29
-
30
111
  msgid "Report an issue"
31
112
  msgstr "Fehler melden"
32
113
 
@@ -210,11 +291,8 @@ msgstr "Architekturen"
210
291
  msgid "by {developer}"
211
292
  msgstr "von {developer}"
212
293
 
213
- msgid "Legal Notice"
214
- msgstr "Impressum"
215
-
216
- msgid "Privacy"
217
- msgstr "Datenschutz"
294
+ msgid "{app} is free software. Support its development with a transfer or a service."
295
+ msgstr "{app} ist freie Software. Unterstütze die Entwicklung per Überweisung oder über einen Dienst."
218
296
 
219
297
  msgid "{app} is licensed under {license}."
220
298
  msgstr "{app} steht unter der Lizenz {license}."
@@ -222,21 +300,6 @@ msgstr "{app} steht unter der Lizenz {license}."
222
300
  msgid "This page reproduces text licensed under {license}."
223
301
  msgstr "Diese Seite gibt Texte unter der Lizenz {license} wieder."
224
302
 
225
- msgid "Made with {project}"
226
- msgstr "Gemacht mit {project}"
227
-
228
- msgid "{app} is free software. Support its development with a transfer or a service."
229
- msgstr "{app} ist freie Software. Unterstütze die Entwicklung per Überweisung oder über einen Dienst."
230
-
231
- msgid "What {app} does with data."
232
- msgstr "Was {app} mit Daten tut."
233
-
234
- msgid "Who publishes {app}, and how to reach them."
235
- msgstr "Wer {app} veröffentlicht, und wie man diese Person erreicht."
236
-
237
- msgid "Back to {app}"
238
- msgstr "Zurück zu {app}"
239
-
240
303
  msgid "This page is a static file: no cookie, no analytics, nothing from a third party."
241
304
  msgstr "Diese Seite ist eine statische Datei: keine Cookies, keine Analysewerkzeuge, nichts von Drittanbietern."
242
305
 
package/po/site.pot CHANGED
@@ -5,15 +5,99 @@ msgstr ""
5
5
  "Content-Type: text/plain; charset=UTF-8\n"
6
6
  "Content-Transfer-Encoding: 8bit\n"
7
7
 
8
+ msgid "Updated {date}"
9
+ msgstr ""
10
+
11
+ msgid "Draft"
12
+ msgstr ""
13
+
14
+ msgid "Subscribe to the feed"
15
+ msgstr ""
16
+
17
+ msgid "Posts tagged “{tag}”"
18
+ msgstr ""
19
+
20
+ msgid "Blog"
21
+ msgstr ""
22
+
23
+ msgid "Posts by {name}"
24
+ msgstr ""
25
+
26
+ msgid "No posts in this language yet."
27
+ msgstr ""
28
+
29
+ msgid "All posts"
30
+ msgstr ""
31
+
32
+ msgid "From the blog"
33
+ msgstr ""
34
+
35
+ msgid "CV"
36
+ msgstr ""
37
+
38
+ msgid "Apps"
39
+ msgstr ""
40
+
41
+ msgid "Support my work"
42
+ msgstr ""
43
+
44
+ msgid "Read my CV"
45
+ msgstr ""
46
+
47
+ msgid "Elsewhere"
48
+ msgstr ""
49
+
50
+ msgid "today"
51
+ msgstr ""
52
+
53
+ msgid "Experience, projects and skills of {name}."
54
+ msgstr ""
55
+
56
+ msgid "Experience"
57
+ msgstr ""
58
+
59
+ msgid "Projects"
60
+ msgstr ""
61
+
62
+ msgid "Education"
63
+ msgstr ""
64
+
65
+ msgid "Skills"
66
+ msgstr ""
67
+
68
+ msgid "Languages"
69
+ msgstr ""
70
+
71
+ msgid "Back to {app}"
72
+ msgstr ""
73
+
74
+ msgid "{name} writes free software. Support the work with a transfer or a service."
75
+ msgstr ""
76
+
8
77
  msgid "Support"
9
78
  msgstr ""
10
79
 
11
- msgid "These apps are free software. Pick one to see how to support its development."
80
+ msgid "Privacy"
81
+ msgstr ""
82
+
83
+ msgid "What {app} does with data."
84
+ msgstr ""
85
+
86
+ msgid "Legal Notice"
87
+ msgstr ""
88
+
89
+ msgid "Who publishes {app}, and how to reach them."
12
90
  msgstr ""
13
91
 
14
92
  msgid "Language"
15
93
  msgstr ""
16
94
 
95
+ msgid "Source code"
96
+ msgstr ""
97
+
98
+ msgid "Made with {project}"
99
+ msgstr ""
100
+
17
101
  msgid "Website"
18
102
  msgstr ""
19
103
 
@@ -23,9 +107,6 @@ msgstr ""
23
107
  msgid "FAQ"
24
108
  msgstr ""
25
109
 
26
- msgid "Source code"
27
- msgstr ""
28
-
29
110
  msgid "Report an issue"
30
111
  msgstr ""
31
112
 
@@ -209,10 +290,7 @@ msgstr ""
209
290
  msgid "by {developer}"
210
291
  msgstr ""
211
292
 
212
- msgid "Legal Notice"
213
- msgstr ""
214
-
215
- msgid "Privacy"
293
+ msgid "{app} is free software. Support its development with a transfer or a service."
216
294
  msgstr ""
217
295
 
218
296
  msgid "{app} is licensed under {license}."
@@ -221,21 +299,6 @@ msgstr ""
221
299
  msgid "This page reproduces text licensed under {license}."
222
300
  msgstr ""
223
301
 
224
- msgid "Made with {project}"
225
- msgstr ""
226
-
227
- msgid "{app} is free software. Support its development with a transfer or a service."
228
- msgstr ""
229
-
230
- msgid "What {app} does with data."
231
- msgstr ""
232
-
233
- msgid "Who publishes {app}, and how to reach them."
234
- msgstr ""
235
-
236
- msgid "Back to {app}"
237
- msgstr ""
238
-
239
302
  msgid "This page is a static file: no cookie, no analytics, nothing from a third party."
240
303
  msgstr ""
241
304
 
@@ -1,19 +0,0 @@
1
- import type { ClientAssets } from './pages.js';
2
- export interface OverviewApp {
3
- name: string;
4
- /** Absolute address of this app's support page in the rendered language. */
5
- url: string;
6
- }
7
- export interface OverviewPage {
8
- lang: string;
9
- languages: readonly string[];
10
- defaultLanguage: string;
11
- /** Absolute address of the overview per language. */
12
- urls: Readonly<Record<string, string>>;
13
- /** Root-relative address per language, for the language switch. */
14
- paths: Readonly<Record<string, string>>;
15
- apps: readonly OverviewApp[];
16
- assets: ClientAssets;
17
- t: (msgid: string) => string;
18
- }
19
- export declare function renderOverview(page: OverviewPage): string;
@@ -1,53 +0,0 @@
1
- // The page that lists several apps, each linking to its own support page. It reads no app's data
2
- // beyond a name and an icon, so it needs none of the per-app page machinery.
3
- import { esc } from './html.js';
4
- import { languageName, linkCard } from './pages.js';
5
- import { ogLocale } from './seo.js';
6
- export function renderOverview(page) {
7
- const { lang, t } = page;
8
- const title = t('Support');
9
- const intro = t('These apps are free software. Pick one to see how to support its development.');
10
- const alternates = page.languages.map((code) => `<link rel="alternate" hreflang="${esc(code)}" href="${esc(page.urls[code])}">`);
11
- const switcher = page.languages
12
- .map((code) => code === lang
13
- ? `<li><span aria-current="true">${esc(languageName(code))}</span></li>`
14
- : `<li><a href="${esc(page.paths[code])}" hreflang="${esc(code)}" lang="${esc(code)}">${esc(languageName(code))}</a></li>`)
15
- .join('');
16
- return `<!doctype html>
17
- <html lang="${esc(lang)}">
18
- <head>
19
- <meta charset="utf-8">
20
- <meta name="viewport" content="width=device-width, initial-scale=1">
21
- <title>${esc(title)}</title>
22
- <meta name="description" content="${esc(intro)}">
23
- <link rel="canonical" href="${esc(page.urls[lang])}">
24
- ${alternates.join('\n')}
25
- <link rel="alternate" hreflang="x-default" href="${esc(page.urls[page.defaultLanguage])}">
26
- <meta property="og:type" content="website">
27
- <meta property="og:title" content="${esc(title)}">
28
- <meta property="og:description" content="${esc(intro)}">
29
- <meta property="og:url" content="${esc(page.urls[lang])}">
30
- <meta property="og:locale" content="${esc(ogLocale(lang))}">
31
- ${page.assets.css.map((href) => `<link rel="stylesheet" href="${esc(href)}">`).join('\n')}
32
- </head>
33
- <body>
34
- <header class="masthead">
35
- <div class="hero-inner">
36
- <div class="hero-text">
37
- <h1>${esc(title)}</h1>
38
- </div>
39
- </div>
40
- </header>
41
- <main>
42
- <div class="column">
43
- <p class="support-intro">${esc(intro)}</p>
44
- <ul class="card-list">
45
- ${page.apps.map((app) => linkCard(app.url, app.name, 'heart')).join('\n')}
46
- </ul>
47
- </div>
48
- </main>
49
- <footer class="footer"><div class="footer-inner"><nav class="footer-languages" aria-label="${esc(t('Language'))}"><ul>${switcher}</ul></nav></div></footer>
50
- </body>
51
- </html>
52
- `;
53
- }