@apleasantview/eleventy-plugin-baseline 0.1.0-next.8

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.
@@ -0,0 +1,48 @@
1
+ ---
2
+ title: Navigator Core
3
+ permalink: /navigator-core.html
4
+ ---
5
+
6
+ <!DOCTYPE html>
7
+ <html lang="{{ site.defaultLanguage }}">
8
+
9
+ <head>
10
+ <baseline-head></baseline-head>
11
+ </head>
12
+
13
+ <body>
14
+ <a href="#main" class="skip-link">
15
+ Skip to main content
16
+ </a>
17
+ <header>
18
+ <h1>{{ site.title }} Navigator</h1>
19
+ <div>
20
+ <p>{{ site.tagline }}</p>
21
+ </div>
22
+ </header>
23
+ <main id="main" tabindex="-1">
24
+ <p><a id="go-back" href=""><span style="vertical-align: text-bottom;">&#8592;</span>&nbsp;Go back</a></p>
25
+ <h2><u>Navigator</u></h2>
26
+ {% for key, value in _navigator() %}
27
+ <details>
28
+ <summary><strong>{{ key }}</strong></summary>
29
+ {% if value | isString %}
30
+ <pre>{{ value | safe }}</pre>
31
+ {% else %}
32
+ <pre>{{ value | _inspect({ depth: inspectorDepth }) }}</pre>
33
+ {% endif %}
34
+ </details>
35
+ {% endfor %}
36
+ </main>
37
+ <script>
38
+ document.getElementById("go-back").addEventListener("click", (event) => {
39
+ event.preventDefault();
40
+ history.back();
41
+ });
42
+ </script>
43
+ </body>
44
+ <footer>
45
+ <small>Navigator Core — Eleventy Plugin Baseline</small>
46
+ </footer>
47
+
48
+ </html>
@@ -0,0 +1,65 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+
5
+ const __filename = fileURLToPath(import.meta.url);
6
+ const __dirname = path.dirname(__filename);
7
+
8
+ /** @param {import("@11ty/eleventy").UserConfig} eleventyConfig */
9
+ export default function sitemapCore(eleventyConfig, options = {}) {
10
+ const userOptions = {
11
+ enableSitemapTemplate: options.enableSitemapTemplate ?? true,
12
+ multilingual: options.multilingual,
13
+ languages: options.languages
14
+ };
15
+
16
+ eleventyConfig.addGlobalData("eleventyComputed.page.sitemap", () => {
17
+ return (data) => ({
18
+ ignore: data.site?.noindex ?? false,
19
+ changefreq: "",
20
+ priority: -1
21
+ });
22
+ });
23
+
24
+ if (userOptions.enableSitemapTemplate) {
25
+ const templatePath = path.join(__dirname, "../templates/sitemap-core.html");
26
+ const indexTemplatePath = path.join(__dirname, "../templates/sitemap-index.html");
27
+ const baseContent = fs.readFileSync(templatePath, "utf-8");
28
+ const indexContent = fs.readFileSync(indexTemplatePath, "utf-8");
29
+
30
+ const languages = userOptions.languages || {};
31
+ const langKeys = Array.isArray(languages) ? languages : Object.keys(languages);
32
+ const multilingual = typeof userOptions.multilingual === "boolean" ? userOptions.multilingual : langKeys.length > 1;
33
+
34
+ if (multilingual && langKeys.length > 1) {
35
+ for (const lang of langKeys) {
36
+ eleventyConfig.addTemplate(`_baseline/sitemap-core-${lang}.html`, baseContent, {
37
+ permalink: `${lang}/sitemap.xml`,
38
+ title: "",
39
+ description: "",
40
+ layout: null,
41
+ eleventyExcludeFromCollections: true,
42
+ isMultilingual: multilingual,
43
+ sitemapLang: lang
44
+ });
45
+ }
46
+
47
+ eleventyConfig.addTemplate("_baseline/sitemap-index.html", indexContent, {
48
+ permalink: "/sitemap.xml",
49
+ title: "",
50
+ description: "",
51
+ layout: null,
52
+ eleventyExcludeFromCollections: true,
53
+ isMultilingual: multilingual
54
+ });
55
+ } else {
56
+ eleventyConfig.addTemplate("_baseline/sitemap-core.html", baseContent, {
57
+ permalink: "/sitemap.xml",
58
+ title: "",
59
+ description: "",
60
+ layout: null,
61
+ eleventyExcludeFromCollections: true
62
+ });
63
+ }
64
+ }
65
+ }
@@ -0,0 +1,25 @@
1
+ <?xml version="1.0" encoding="utf-8" standalone="yes"?>
2
+ <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml">
3
+ {%- if not site.noindex -%}
4
+ {%- for item in collections.all -%}
5
+ {%- if not item.data.eleventyExcludeFromCollections and (not item.data.sitemap or item.data.sitemap.ignore != true) -%}
6
+ {%- set pageLang = item.data.lang or site.defaultLanguage -%}
7
+ {%- if (not isMultilingual) or (not sitemapLang) or (pageLang == sitemapLang) -%}
8
+ {%- set absoluteUrl = item.url | htmlBaseUrl -%}
9
+ {%- set lastmod = item.data.sitemap and item.data.sitemap.lastmod or item.date -%}
10
+ <url>
11
+ <loc>{{ absoluteUrl }}</loc>
12
+ {%- if lastmod -%}<lastmod>{{ date.toUTCISO(lastmod) }}</lastmod>{%- endif -%}
13
+ {%- if item.data.sitemap and item.data.sitemap.changefreq -%}<changefreq>{{ item.data.sitemap.changefreq }}</changefreq>{%- endif -%}
14
+ {%- if item.data.sitemap and item.data.sitemap.priority is defined -%}<priority>{{ item.data.sitemap.priority }}</priority>{%- endif -%}
15
+ {%- if item.data.translationKey and collections.translations and collections.translations[item.data.translationKey] -%}
16
+ {%- for language, item in collections.translations[item.data.translationKey] -%}
17
+ <xhtml:link rel="alternate" hreflang="{{ item.lang }}" href="{{ item.url | htmlBaseUrl }}" />
18
+ {%- endfor -%}
19
+ {%- endif -%}
20
+ </url>
21
+ {%- endif -%}
22
+ {%- endif -%}
23
+ {%- endfor -%}
24
+ {%- endif -%}
25
+ </urlset>
@@ -0,0 +1,15 @@
1
+ <?xml version="1.0" encoding="utf-8" standalone="yes"?>
2
+ <sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
3
+ {%- if not site.noindex %}
4
+ {%- set langs = _baseline.languages or _i18n.languages %}
5
+ {%- if langs %}
6
+ {%- for lang, cfg in langs %}
7
+ <sitemap>
8
+ <loc>{{ (lang ~ "/sitemap.xml") | htmlBaseUrl }}</loc>
9
+ {#- Optional lastmod if you track it per-language: #}
10
+ {%- if cfg.lastmod %}<lastmod>{{ date.toUTCISO(cfg.lastmod) }}</lastmod>{% endif %}
11
+ </sitemap>
12
+ {%- endfor %}
13
+ {%- endif %}
14
+ {%- endif %}
15
+ </sitemapindex>
package/package.json ADDED
@@ -0,0 +1,51 @@
1
+ {
2
+ "name": "@apleasantview/eleventy-plugin-baseline",
3
+ "version": "0.1.0-next.8",
4
+ "description": "An experimental Swiss army knife toolkit for Eleventy",
5
+ "type": "module",
6
+ "main": "eleventy.config.js",
7
+ "exports": {
8
+ ".": "./eleventy.config.js",
9
+ "./package.json": "./package.json"
10
+ },
11
+ "files": [
12
+ "eleventy.config.js",
13
+ "core/**",
14
+ "modules/**",
15
+ "README.md",
16
+ "LICENSE"
17
+ ],
18
+ "engines": {
19
+ "node": ">=20"
20
+ },
21
+ "keywords": [
22
+ "eleventy-plugin",
23
+ "eleventy",
24
+ "baseline"
25
+ ],
26
+ "author": "Cristovao Verstraeten",
27
+ "license": "MIT",
28
+ "repository": {
29
+ "type": "git",
30
+ "url": "git+https://github.com/apleasantview/eleventy-plugin-baseline.git"
31
+ },
32
+ "bugs": {
33
+ "url": "https://github.com/apleasantview/eleventy-plugin-baseline/issues"
34
+ },
35
+ "homepage": "https://github.com/apleasantview/eleventy-plugin-baseline#readme",
36
+ "peerDependencies": {
37
+ "@11ty/eleventy": ">=3.1.0",
38
+ "@11ty/eleventy-img": "^6.0.4"
39
+ },
40
+ "dependencies": {
41
+ "cssnano": "^7.1.2",
42
+ "dotenv": "^17.2.3",
43
+ "esbuild": "0.27.0",
44
+ "postcss": "^8.5.6",
45
+ "postcss-import": "^16.1.1",
46
+ "postcss-import-ext-glob": "^2.1.1",
47
+ "postcss-load-config": "^6.0.1",
48
+ "postcss-preset-env": "^10.4.0"
49
+ },
50
+ "sideEffects": false
51
+ }