From 7c63f8984115666959aa897b60f64c4bf9490614 Mon Sep 17 00:00:00 2001 From: Alex Zappa Date: Sun, 8 Feb 2026 18:14:44 +0100 Subject: [PATCH 1/3] Support array values in findBy filter Allow the findBy filter to match against array fields, enabling support for multiple authors on starters, plugins, etc. e.g. "author": ["user-a", "user-b"] --- eleventy.config.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/eleventy.config.js b/eleventy.config.js index 62670eef08..b147f2a435 100644 --- a/eleventy.config.js +++ b/eleventy.config.js @@ -201,6 +201,14 @@ function findBy(data, path, value) { return false; } + if (Array.isArray(gotten)) { + if (typeof value === "string") { + let valueLower = value.toLowerCase(); + return gotten.some((item) => typeof item === "string" && item.toLowerCase() === valueLower); + } + return gotten.includes(value); + } + if (typeof value === "string") { let valueLower = value.toLowerCase(); let dataLower = gotten.toLowerCase(); From f822a0e2eeeaf1674521683e9c281772b0db5e6a Mon Sep 17 00:00:00 2001 From: Alex Zappa Date: Sun, 8 Feb 2026 18:17:54 +0100 Subject: [PATCH 2/3] Add reatlat as co-author on FreshJuice starters Demonstrates the new array support in the findBy filter by listing multiple authors on FreshJuice starter projects. --- src/_data/starters/freshjuice-11ty-starter.json | 2 +- src/_data/starters/freshjuice-berry-blast.json | 2 +- src/_data/starters/freshjuice-cyber-banana.json | 2 +- src/_data/starters/freshjuice-electric-lime.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/_data/starters/freshjuice-11ty-starter.json b/src/_data/starters/freshjuice-11ty-starter.json index 774407a3c8..b436f253ac 100644 --- a/src/_data/starters/freshjuice-11ty-starter.json +++ b/src/_data/starters/freshjuice-11ty-starter.json @@ -2,6 +2,6 @@ "url": "https://github.com/freshjuice-dev/freshjuice-11ty-starter", "name": "Snappy Lemon", "description": "Modern 11ty v3 starter with TailwindCSS v4, Alpine.js, CloudCannon CMS integration, Bookshop visual editing, Pagefind search, and accessibility-first design", - "author": "freshjuice-dev", + "author": ["freshjuice-dev", "reatlat"], "demo": "https://snappy-lemon-starter.freshjuice.dev/" } \ No newline at end of file diff --git a/src/_data/starters/freshjuice-berry-blast.json b/src/_data/starters/freshjuice-berry-blast.json index d79a737c16..e169204e92 100644 --- a/src/_data/starters/freshjuice-berry-blast.json +++ b/src/_data/starters/freshjuice-berry-blast.json @@ -2,6 +2,6 @@ "url": "https://github.com/freshjuice-dev/berry-blast-11ty-starter", "name": "Berry Blast", "description": "Modern 11ty v3 starter with TailwindCSS v4, Alpine.js, Pagefind search, Phosphor Icons, Shiki syntax highlighting, and WCAG 2.1 AA accessibility", - "author": "freshjuice-dev", + "author": ["freshjuice-dev", "reatlat"], "demo": "https://berry-blast-starter.freshjuice.dev/" } \ No newline at end of file diff --git a/src/_data/starters/freshjuice-cyber-banana.json b/src/_data/starters/freshjuice-cyber-banana.json index d332452703..c10daf713b 100644 --- a/src/_data/starters/freshjuice-cyber-banana.json +++ b/src/_data/starters/freshjuice-cyber-banana.json @@ -2,6 +2,6 @@ "url": "https://github.com/freshjuice-dev/cyber-banana-11ty-starter", "name": "Berry Blast", "description": "A cyberpunk-themed developer portfolio starter with 11ty, Tailwind CSS, and vanilla JavaScript.", - "author": "freshjuice-dev", + "author": ["freshjuice-dev", "reatlat"], "demo": "https://cyber-banana-starter.freshjuice.dev/" } \ No newline at end of file diff --git a/src/_data/starters/freshjuice-electric-lime.json b/src/_data/starters/freshjuice-electric-lime.json index bf46c1fa40..a2259601af 100644 --- a/src/_data/starters/freshjuice-electric-lime.json +++ b/src/_data/starters/freshjuice-electric-lime.json @@ -2,6 +2,6 @@ "url": "https://github.com/freshjuice-dev/electric-lime-11ty-starter", "name": "Electric Lime", "description": "Vibrant 11ty v3 starter with TailwindCSS v4, Alpine.js, Pagefind search, Shiki syntax highlighting, image optimization, and WCAG 2.1 AA accessibility", - "author": "freshjuice-dev", + "author": ["freshjuice-dev", "reatlat"], "demo": "https://electric-lime-starter.freshjuice.dev/" } \ No newline at end of file From 35b1b8c7bdd1351ab987d5e31143238efb48c11a Mon Sep 17 00:00:00 2001 From: Alex Zappa Date: Sat, 7 Mar 2026 02:13:38 +0100 Subject: [PATCH 3/3] Use localeCompare instead of toLowerCase for case-insensitive comparison Avoids the Turkish-I problem and other locale-specific casing issues. --- eleventy.config.js | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/eleventy.config.js b/eleventy.config.js index b147f2a435..f7caeff378 100644 --- a/eleventy.config.js +++ b/eleventy.config.js @@ -203,19 +203,13 @@ function findBy(data, path, value) { if (Array.isArray(gotten)) { if (typeof value === "string") { - let valueLower = value.toLowerCase(); - return gotten.some((item) => typeof item === "string" && item.toLowerCase() === valueLower); + return gotten.some((item) => typeof item === "string" && item.localeCompare(value, undefined, { sensitivity: "base" }) === 0); } return gotten.includes(value); } if (typeof value === "string") { - let valueLower = value.toLowerCase(); - let dataLower = gotten.toLowerCase(); - if (valueLower === dataLower) { - return true; - } - return false; + return gotten.localeCompare(value, undefined, {sensitivity: "base"}) === 0; } return value === gotten;