diff --git a/src/assproc.js b/src/assproc.js deleted file mode 100644 index bf457ca..0000000 --- a/src/assproc.js +++ /dev/null @@ -1,108 +0,0 @@ -const fs = require('fs'); -const path = require('path'); -const readline = require('readline'); -const utils = require('./utils.js'); - -exports.process = async function(root, options) { - const macroPrefix = options.prefix || '#'; - const entryPoint = options.entry || ''; - - root = fs.realpathSync(root); - - const included = []; - - const processFile = async function(fileName) { - const fullPath = path.join(root, fileName); - if(included.includes(fullPath)) - return ''; - included.push(fullPath); - - if(!fullPath.startsWith(root)) - return '/* *** INVALID PATH: ' + fullPath + ' */'; - if(!fs.existsSync(fullPath)) - return '/* *** FILE NOT FOUND: ' + fullPath + ' */'; - - const lines = readline.createInterface({ - input: fs.createReadStream(fullPath), - crlfDelay: Infinity, - }); - - let output = ''; - let lastWasEmpty = false; - - if(options.showPath) - output += "/* *** PATH: " + fullPath + " */\n"; - - for await(const line of lines) { - const lineTrimmed = utils.trim(line); - if(lineTrimmed === '') - continue; - - if(line.startsWith(macroPrefix)) { - const args = lineTrimmed.split(' '); - const macro = utils.trim(utils.trimStart(args.shift(), macroPrefix)); - - switch(macro) { - case 'comment': - break; - - case 'include': { - const includePath = utils.trimEnd(args.join(' '), ';'); - output += utils.trim(await processFile(includePath)); - output += "\n"; - break; - } - - case 'buildvars': - if(typeof options.buildVars === 'object') { - const bvTarget = options.buildVarsTarget || 'window'; - const bvProps = []; - - for(const bvName in options.buildVars) - bvProps.push(`${bvName}: { value: ${JSON.stringify(options.buildVars[bvName])} }`); - - if(Object.keys(bvProps).length > 0) - output += `Object.defineProperties(${bvTarget}, { ${bvProps.join(', ')} });\n`; - } - break; - - default: - output += line; - output += "\n"; - break; - } - } else { - output += line; - output += "\n"; - } - } - - return output; - }; - - return await processFile(entryPoint); -}; - -exports.housekeep = function(assetsPath) { - const files = fs.readdirSync(assetsPath).map(fileName => { - const stats = fs.statSync(path.join(assetsPath, fileName)); - return { - name: fileName, - lastMod: stats.mtimeMs, - }; - }).sort((a, b) => b.lastMod - a.lastMod).map(info => info.name); - - const regex = /^(.+)[\-\.]([a-f0-9]+)\.(.+)$/i; - const counts = {}; - - for(const fileName of files) { - const match = fileName.match(regex); - if(match) { - const name = match[1] + '-' + match[3]; - counts[name] = (counts[name] || 0) + 1; - - if(counts[name] > 5) - fs.unlinkSync(path.join(assetsPath, fileName)); - } else console.log(`Encountered file name in assets folder with unexpected format: ${fileName}`); - } -}; diff --git a/src/utils.js b/src/utils.js deleted file mode 100644 index d825d83..0000000 --- a/src/utils.js +++ /dev/null @@ -1,35 +0,0 @@ -const crypto = require('crypto'); - -exports.strtr = (str, replacements) => str.toString().replace( - /{([^}]+)}/g, (match, key) => replacements[key] || match -); - -const trim = function(str, chars, flags) { - if(chars === undefined) - chars = " \n\r\t\v\0"; - - let start = 0, - end = str.length; - - if(flags & 0x01) - while(start < end && chars.indexOf(str[start]) >= 0) - ++start; - - if(flags & 0x02) - while(end > start && chars.indexOf(str[end - 1]) >= 0) - --end; - - return (start > 0 || end < str.length) - ? str.substring(start, end) - : str; -}; - -exports.trimStart = (str, chars) => trim(str, chars, 0x01); -exports.trimEnd = (str, chars) => trim(str, chars, 0x02); -exports.trim = (str, chars) => trim(str, chars, 0x03); - -exports.shortHash = function(text) { - const hash = crypto.createHash('sha256'); - hash.update(text); - return hash.digest('hex').substring(0, 8); -};