new-game script mangles titles containing $, backticks or <

Ouverte Adaptée aux débutants
#17 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
2/5
Temps estimé
1-3 heures
Accessibilité débutants
76/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
html, node.js, typescript

Piste de recherche

Lisez scripts/new-game.mjs avec games/_template/main.ts et games/_template/index.html pour suivre le remplacement du titre et déterminer quand les fichiers sont écrits. Essayez la reproduction indiquée, puis exécutez npm run typecheck et npm run build. Le travail est terminé lorsque les titres comportant les caractères spéciaux indiqués permettent soit de créer un jeu qui se compile, soit sont rejetés avec un message clair avant l’écriture de tout fichier.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

bug good first issue severity: low

Summary

The scaffolder validates the slug but substitutes the title raw into an HTML file and a TypeScript template literal.

Where

  • scripts/new-game.mjs:21, scripts/new-game.mjs:23-29
  • games/_template/main.ts:48, games/_template/index.html:7

Details

.replaceAll('__SLUG__', slug).replaceAll('__TITLE__', title)

A string replacement still interprets $$, $& and similar patterns. A title with a backtick or ${ produces a file that fails tsc; a title with < or & produces invalid HTML. The folder is copied before the registry is written, so a failure in between leaves a half-registered game. Derived from the code; not run.

Steps to reproduce

  1. npm run new-game cash "Cash $$ Grab".
  2. games/cash/index.html says "Cash $ Grab" while the registry has the correct title.

Suggested fix

Use function replacers (replaceAll('__TITLE__', () => escaped)), HTML-escape for .html, and write the title into the template as a JSON.stringify-ed constant. Or restrict titles to a safe character set.

Acceptance criteria

  • Titles with $, backticks, ${, < and & either scaffold a building game or are rejected with a clear message before any file is written

Getting started

  • Relevant files: scripts/new-game.mjs, games/_template/main.ts, games/_template/index.html
  • Run locally: npm install, then npm run dev
  • Checks: npm run typecheck and npm run build (there is no test suite yet)
  • Related docs: README.md

Filed by repo-audit/full-audit at b001f5d. Severity: low. Effort: S. audit-key: bug|scripts/new-game.mjs|replaceAll

Langage dominant
TypeScript
Étoiles
3
Forks
3
Métriques de merge des PR
Aucune PR mergée en 30 j

Préparer son environnement

Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de TMHSDigital/GH-Arcade

Toutes les issues de TMHSDigital/GH-Arcade

Issues similaires

Plus d'issues TypeScript

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.