1let { writeFile } = require('fs'); 2const { promisify } = require('util'); 3const r2 = require('r2'); 4const RadixTree = require('./radix-tree'); 5const ArrayMappedRadixTree = require('./array-mapped-radix-tree'); 6 7writeFile = promisify(writeFile); 8 9main(); 10 11async function main() { 12 // NOTE: don't use r2.json directly due to https://github.com/mikeal/r2/issues/48 13 const res = await r2('https://html.spec.whatwg.org/multipage/entities.json').response; 14 const src = await res.json(); 15 const radixTree = new RadixTree(src); 16 const arr = new ArrayMappedRadixTree(radixTree); 17 18 const data = 19 `'use strict';\n\n` + 20 `//NOTE: this file contains auto-generated array mapped radix tree that is used for the named entity references consumption\n` + 21 `//(details: https://github.com/inikulin/parse5/tree/master/scripts/generate-named-entity-data/README.md)\n` + 22 `module.exports = new Uint16Array(${JSON.stringify(arr)});`; 23 24 await writeFile('packages/parse5/lib/tokenizer/named-entity-data.js', data); 25} 26