From 7b0f8a73c82d59786344989f3b76a508b18cf737 Mon Sep 17 00:00:00 2001 From: rofe Date: Thu, 20 Mar 2025 15:01:16 +0100 Subject: [PATCH] feat(metatdata): support hreflang x-default --- src/steps/render.js | 8 +++--- .../page-metadata-hreflang-invalid.html | 27 ------------------- .../content/page-metadata-hreflang-invalid.md | 11 -------- .../content/page-metadata-hreflang.html | 1 + .../content/page-metadata-hreflang.md | 20 +++++++------- .../page-metadata-htmllang-invalid.html | 27 ------------------- .../content/page-metadata-htmllang-invalid.md | 11 -------- test/rendering.test.js | 10 ------- 8 files changed, 15 insertions(+), 100 deletions(-) delete mode 100644 test/fixtures/content/page-metadata-hreflang-invalid.html delete mode 100644 test/fixtures/content/page-metadata-hreflang-invalid.md delete mode 100644 test/fixtures/content/page-metadata-htmllang-invalid.html delete mode 100644 test/fixtures/content/page-metadata-htmllang-invalid.md diff --git a/src/steps/render.js b/src/steps/render.js index 4a612b79..2624c13a 100644 --- a/src/steps/render.js +++ b/src/steps/render.js @@ -17,11 +17,9 @@ import rehypeParse from 'rehype-parse'; import { cleanupHeaderValue } from '@adobe/helix-shared-utils'; import { contentSecurityPolicyOnAST } from './csp.js'; -const LANG_REGEX = /^[a-z]{2}(?:[-_][a-z]{2})?$/i; - function formatLang(lang) { return lang - .replace('_', '-') + .replaceAll('_', '-') .toLowerCase(); } @@ -84,7 +82,7 @@ export default async function render(state, req, res) { continue; } if (name.toLowerCase() === 'html-lang') { - if (LANG_REGEX.test(value)) { + if (value) { htmlLang = formatLang(value); } // eslint-disable-next-line no-continue @@ -92,7 +90,7 @@ export default async function render(state, req, res) { } if (name.toLowerCase().startsWith('hreflang-')) { const lang = name.substring(9); - if (LANG_REGEX.test(lang)) { + if (lang) { appendElement( $head, createElement('link', 'rel', 'alternate', 'hreflang', formatLang(lang), 'href', value), diff --git a/test/fixtures/content/page-metadata-hreflang-invalid.html b/test/fixtures/content/page-metadata-hreflang-invalid.html deleted file mode 100644 index 71fe8436..00000000 --- a/test/fixtures/content/page-metadata-hreflang-invalid.html +++ /dev/null @@ -1,27 +0,0 @@ - - - Home | Helix Project Boilerplate - - - - - - - - - - - - - - -
-
-
-

HTML lang test

-

This is great.

-
-
- - - \ No newline at end of file diff --git a/test/fixtures/content/page-metadata-hreflang-invalid.md b/test/fixtures/content/page-metadata-hreflang-invalid.md deleted file mode 100644 index 7a9744f3..00000000 --- a/test/fixtures/content/page-metadata-hreflang-invalid.md +++ /dev/null @@ -1,11 +0,0 @@ -# HTML lang test - -This is great. - -+-------------------------------------------------------------------------------------------+ -| Metadata | -+================+==========================================================================+ -| title | Home \| Helix Project Boilerplate | -+----------------+--------------------------------------------------------------------------| -| hreflang-x | https://helix-pages.com/x/page-metadata-hreflang | -+----------------+--------------------------------------------------------------------------+ diff --git a/test/fixtures/content/page-metadata-hreflang.html b/test/fixtures/content/page-metadata-hreflang.html index 90afa22d..76b5d01f 100644 --- a/test/fixtures/content/page-metadata-hreflang.html +++ b/test/fixtures/content/page-metadata-hreflang.html @@ -11,6 +11,7 @@ + diff --git a/test/fixtures/content/page-metadata-hreflang.md b/test/fixtures/content/page-metadata-hreflang.md index 801e59be..37301674 100644 --- a/test/fixtures/content/page-metadata-hreflang.md +++ b/test/fixtures/content/page-metadata-hreflang.md @@ -2,12 +2,14 @@ This is great. -+-------------------------------------------------------------------------------------------+ -| Metadata | -+================+==========================================================================+ -| title | Home \| Helix Project Boilerplate | -+----------------+--------------------------------------------------------------------------| -| hreflang-de | | -+----------------+--------------------------------------------------------------------------+ -| hreflang-fr-FR | | -+----------------+--------------------------------------------------------------------------+ ++-----------------------------------------------------------------------------------------------+ +| Metadata | ++====================+==========================================================================+ +| title | Home \| Helix Project Boilerplate | ++--------------------+--------------------------------------------------------------------------| +| hreflang-de | | ++--------------------+--------------------------------------------------------------------------+ +| hreflang-fr-FR | | ++--------------------+--------------------------------------------------------------------------+ +| hreflang-x-default | | ++--------------------+--------------------------------------------------------------------------+ diff --git a/test/fixtures/content/page-metadata-htmllang-invalid.html b/test/fixtures/content/page-metadata-htmllang-invalid.html deleted file mode 100644 index 352407aa..00000000 --- a/test/fixtures/content/page-metadata-htmllang-invalid.html +++ /dev/null @@ -1,27 +0,0 @@ - - - Home | Helix Project Boilerplate - - - - - - - - - - - - - - -
-
-
-

HTML lang test

-

This is great.

-
-
- - - \ No newline at end of file diff --git a/test/fixtures/content/page-metadata-htmllang-invalid.md b/test/fixtures/content/page-metadata-htmllang-invalid.md deleted file mode 100644 index 9c63440c..00000000 --- a/test/fixtures/content/page-metadata-htmllang-invalid.md +++ /dev/null @@ -1,11 +0,0 @@ -# HTML lang test - -This is great. - -+-------------------------------------------------------------------------------------------+ -| Metadata | -+================+==========================================================================+ -| title | Home \| Helix Project Boilerplate | -+----------------+--------------------------------------------------------------------------| -| html-lang | something | -+----------------+--------------------------------------------------------------------------+ diff --git a/test/rendering.test.js b/test/rendering.test.js index a998d814..455b6e5d 100644 --- a/test/rendering.test.js +++ b/test/rendering.test.js @@ -531,20 +531,10 @@ describe('Rendering', () => { await testRender('page-metadata-htmllang-short', ':scope'); }); - it('rejects invalid html lang', async () => { - config = DEFAULT_CONFIG_EMPTY; - await testRender('page-metadata-htmllang-invalid', ':scope'); - }); - it('injects hreflang link', async () => { config = DEFAULT_CONFIG_EMPTY; await testRender('page-metadata-hreflang', ':scope'); }); - - it('rejects invalid hreflang', async () => { - config = DEFAULT_CONFIG_EMPTY; - await testRender('page-metadata-hreflang-invalid', ':scope'); - }); }); describe('Miscellaneous', () => {