diff --git a/scripts/strip.js b/scripts/strip.js index 1975f92..969abc0 100644 --- a/scripts/strip.js +++ b/scripts/strip.js @@ -1,34 +1,41 @@ -const fs = require('fs'); +const { writeFileSync, readFileSync, readdirSync } = require('fs'); const { join } = require('path'); const stripCode = (code) => code .replace(/(^| )\/\/.*$/gm, '') - .replaceAll('const ', 'const#') - .replaceAll('let ', 'let#') - .replaceAll('var ', 'var#') - .replaceAll('class ', 'class#') - .replaceAll('get ', 'get#') - .replaceAll('delete ', 'delete#') - .replaceAll(' extends ', '#extends#') - .replaceAll('typeof ', 'typeof#') - .replaceAll(' of ', '#of#') - .replaceAll(' in ', '#in#') - .replaceAll('case ', 'case#') - .replaceAll('await ', 'await#') - .replaceAll('new ', 'new#') - .replaceAll('return ', 'return#') - .replaceAll('function ', 'function#') - .replaceAll('void ', 'void#') - .replaceAll('throw ', 'throw#') - .replaceAll('async ', 'async#') - .replaceAll('else ', 'else#') + .replaceAll('const ', 'const~') + .replaceAll('let ', 'let~') + .replaceAll('var ', 'var~') + .replaceAll('class ', 'class~') + .replaceAll('get ', 'get~') + .replaceAll('delete ', 'delete~') + .replaceAll(' extends ', '~extends~') + .replaceAll('typeof ', 'typeof~') + .replaceAll(' of ', '~of~') + .replaceAll(' in ', '~in~') + .replaceAll('case ', 'case~') + .replaceAll('await ', 'await~') + .replaceAll('new ', 'new~') + .replaceAll('return ', 'return~') + .replaceAll('function ', 'function~') + .replaceAll('void ', 'void~') + .replaceAll('throw ', 'throw~') + .replaceAll('async ', 'async~') + .replaceAll('else ', 'else~') .replaceAll('false', '!!0') .replaceAll('true', '!0') .replace(/((['"`])[\s\S]*?\2)|[ \n]/g, (_, g1) => g1 || '') - .replaceAll('#', ' ') + .replaceAll('~', ' ') .replaceAll('? ?', '??'); -const stripJs = (jsPath) => fs.writeFileSync(jsPath, stripCode(fs.readFileSync(jsPath, 'utf8'))); +const fixHtml = (code) => code + .replaceAll(' loop', '~loop') + .replaceAll(' autoplay', '~autoplay') + .replaceAll(' src', '~src') + .replaceAll(' id', '~id'); + +const stripJs = (path) => writeFileSync(path, stripCode(readFileSync(path, 'utf8'))); +const stripHtml = (path) => writeFileSync(path, stripCode(fixHtml(readFileSync(path, 'utf8')))); const minJson = (data) => { if (data.description) delete data.description; @@ -36,14 +43,15 @@ const minJson = (data) => { return data; }; -const stripJson = (path) => fs.writeFileSync(path, JSON.stringify(minJson(JSON.parse(fs.readFileSync(path, 'utf8'))))); +const stripJson = (path) => writeFileSync(path, JSON.stringify(minJson(JSON.parse(readFileSync(path, 'utf8'))))); -const tree = (dirPath) => fs.readdirSync(dirPath).forEach((x) => { +const tree = (dirPath) => readdirSync(dirPath).forEach((x) => { const path = join(dirPath, x); console.log(path); if (x.endsWith('.js')) return stripJs(path); if (x.endsWith('.json')) return stripJson(path); + if (x.endsWith('.html')) return stripHtml(path); if (!x.includes('.')) return tree(path); });