build.mjs and thumbs.mjs trust `meta.id` for file paths, and the id regex lives in three copies
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
- 52/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- javascript, node.js
- Domaine
- build-system, security
Piste de recherche
Read site/build.mjs around lines 104 and 446, then inspect site/thumbs.mjs, site/validate.mjs, site/lib/scaffold.mjs, and site/checks.mjs for the repeated ID checks and file writes. The issue suggests a shared loader in site/lib/entry-files.mjs and pairing the change with #85. Done means one ID regex definition remains in site/, and a fixture with id: ../x makes node site/build.mjs exit 1 naming the file without touching disk.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Why it matters
validate is the only place that enforces the id charset and id === filename. npm run build on its own, and thumbs.yml (which runs thumbs.mjs before validate), write files whose names come straight from frontmatter. CI order protects main, but a local node site/build.mjs with a bad id writes outside site/dist/.
Evidence (at 69387df)
site/build.mjs:446:writeOut(path.join("entry", entry.id, "index.html"), html)withentry.id = String(meta.id)(build.mjs:104).path.join("entry", "../../x", "index.html")resolves under the parent ofDIST(build.mjs:292), andproduced/pruneDistnever see it.site/thumbs.mjs:123-124, 244:${entry.id}.src,${entry.id}.webpin the temp dir and insite/public/thumbs/.- The same regex is written three times:
site/validate.mjs:65,site/lib/scaffold.mjs:30(exportedID_RE),site/checks.mjs:806(inline).
Suggested approach
Give site/lib/entry-files.mjs one loader that reads the file, parses frontmatter, and refuses an entry whose id fails ID_RE or differs from the basename; have build, thumbs, check-links and reverify-batch use it. Export ID_RE from one module and import it everywhere. This pairs naturally with #85.
Done when
One definition of the id regex in site/; a fixture entry with id: ../x makes node site/build.mjs exit 1 naming the file, without touching the disk.
- Langage dominant
- JavaScript
- Étoiles
- 58
- Forks
- 15
- Merge moyen
- 16 h 53 min
- PR mergées (30 j)
- 14
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
-
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
-
feature priority: medium
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 25/100
TMHSDigital/Free-Game-Dev-Assets#144 ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de TMHSDigital/Free-Game-Dev-Assets
Issues similaires
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 85/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
vercel-labs/agent-skills#348 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
NanmiCoder/dsh-agent-teams#289 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 70/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 83/100
c1overzz/dsh-bili-scroll#124 ·
Les mainteneurs répondent en général sous 1 jour