refactor: move build.mjs helpers into lib/ and cover the untested paths (frontmatter types, duplicate ids, link schemes, check-links args)
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 38/100
- Type d'issue
- Refactorisation
- Clarté
- Plutôt claire
- Activité
- Active
- Stack technique
- javascript, node.js
Piste de recherche
Start with build.mjs, checks.test.mjs, and lib.test.mjs; trace the listed helpers and untested paths, then compare the duplicated definitions in the named modules. The issue suggests moving build helpers into site/lib/build-helpers.mjs and adding assertions for each listed case. Done means build.mjs is mostly orchestration, every listed path has an assertion, and duplicated definitions exist once.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Why it matters
checks.test.mjs and lib.test.mjs are quick (under 0.5 s together, 538 assertions) and good, but everything defined inside build.mjs (licenseFamily, loadEntries normalisation, groupedRowsHtml, categoryChipsHtml, headMetaHtml, sitemapXml, notFoundHtml, robotsTxt) is unexported and has no unit test; only CI's full build exercises it. Three of the bugs filed today (string tags, duplicate ids, scheme disagreement) sit exactly in those untested seams, and a test on parseFrontmatter with a trailing comment would have caught the first.
Evidence (grep of both test files on 2026-10-21)
Untested: build.mjs helpers above; repoOf (link-check.mjs:263); the LinkError instanceof gate (build.mjs:422, 477); renderInline bare-URL paren balancing and stop rules (markdown.mjs:316-323); renderBlocks dedent to an intermediate indent (:393-396); checkPage data:/mailto: skip (page-checks.mjs:83); parseFrontmatter with quoted booleans, non-list fields, trailing comments; check-links.mjs arg parsing and run() retry; sync-counts.mjs countEntries.
Duplicated logic that can drift: ID_RE (validate.mjs:59, scaffold.mjs:124); empty() (checks.mjs:64) vs isEmptyField() (validate.mjs:128); count-table regex (checks.mjs:679-681, fragment not regex-escaped) vs scaffold.mjs:106; pickPath (stacks.mjs:59-68) strips # only while makeLinkResolver (links.mjs:12) strips ? and #. Dead code: validate.mjs:98-100 SKIP_WALK contains dist, so the site/dist/ binary prefix can never match.
Suggested approach
Move the build.mjs helpers to site/lib/build-helpers.mjs (or split by concern), export each shared regex/predicate once, delete the dead prefix, and add the listed cases to the two test files. Keep the zero-dependency style.
Done when
build.mjs is mostly orchestration, every listed path has at least one assertion, and the duplicated definitions exist once.
- Langage dominant
- JavaScript
- Étoiles
- 58
- Forks
- 15
- Merge moyen
- 18 h 42 min
- PR mergées (30 j)
- 11
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de TMHSDigital/Free-Game-Dev-Assets
-
community marketing priority: low
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
TMHSDigital/Free-Game-Dev-Assets#151 ·
Les mainteneurs répondent en général sous 1 jour
-
documentation priority: medium
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
TMHSDigital/Free-Game-Dev-Assets#72 ·
Les mainteneurs répondent en général sous 1 jour
-
enhancement
Difficulté 1/5 1-3 heures Accessibilité débutants 68/100
TMHSDigital/Free-Game-Dev-Assets#3 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
correction
Difficulté 2/5 1-3 heures Accessibilité débutants 57/100
TMHSDigital/Free-Game-Dev-Assets#162 ·
Les mainteneurs répondent en général sous 1 jour
-
marketing priority: low
Difficulté 2/5 1-3 heures Accessibilité débutants 55/100
TMHSDigital/Free-Game-Dev-Assets#152 ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de TMHSDigital/Free-Game-Dev-Assets
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Fei2411/DeepSeek-Bot#634 ·
-
beginner-friendly category:sarif community enhancement first-timers-only good first issue hacktoberfest help wanted low hanging fruit micro-contribution type: task up-for-grabs
Difficulté 1/5 Moins d'une heure Accessibilité débutants 76/100
Berserk-hub150/skillhawk#244 · 1 commentaire ·
Les mainteneurs répondent en général sous 8 jours
-
enhancement javascript python
Difficulté 2/5 1-3 heures Accessibilité débutants 66/100
jlab-sensing/ENTS-backend#851 ·
Les mainteneurs répondent en général sous 2 jours
-
Pin GitHub Actions to Ubuntu 26.04Peut-être pris @krusty93 l’a pris aujourd’hui. Ouvertechore infra:workflow-automation
Difficulté 1/5 Moins d'une heure Accessibilité débutants 91/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 1-3 heures Accessibilité débutants 86/100
guilhermerodz/input-otp#157 · 1 commentaire ·