exl100

Émulateur Exelvision EXL 100 (1984) dans le navigateur : dsp-cpp en WebAssembly, cartouches et cassettes BASIC
git clone https://git.schurger.org/exl100.git
Log | Files | Refs | README

syntax.mjs (759B)


      1 // Garde-fou avant déploiement : les scripts inline de web/index.html doivent être du JavaScript valide
      2 // (une apostrophe dans une chaîne à guillemets simples a déjà cassé la page en prod).
      3 //   node test/syntax.mjs [web/index.html]
      4 import { readFileSync } from 'node:fs';
      5 
      6 const path = process.argv[2] ?? 'web/index.html';
      7 const html = readFileSync(path, 'utf8');
      8 const scripts = [...html.matchAll(/<script(?![^>]*\bsrc=)[^>]*>([\s\S]*?)<\/script>/g)].map((m) => m[1]);
      9 let bad = 0;
     10 for (const [i, body] of scripts.entries()) {
     11   try {
     12     new Function(body);
     13   } catch (e) {
     14     bad++;
     15     console.error(`script inline n°${i + 1} : ${e.message}`);
     16   }
     17 }
     18 console.log(`${scripts.length} scripts inline, ${bad} en erreur`);
     19 process.exit(bad ? 1 : 0);