@adamlui/minify.js 2.1.2 → 2.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -27,8 +27,8 @@
27
27
  <img height=31 src="https://img.shields.io/npm/dm/%40adamlui%2Fminify.js?logo=npm&color=af68ff&logoColor=white&labelColor=464646&style=for-the-badge"></a>
28
28
  <a href="#%EF%B8%8F-mit-license">
29
29
  <img height=31 src="https://img.shields.io/badge/License-MIT-orange.svg?logo=internetarchive&logoColor=white&labelColor=464646&style=for-the-badge"></a>
30
- <a href="https://github.com/adamlui/minify.js/releases/tag/node-v2.1.2">
31
- <img height=31 src="https://img.shields.io/badge/Latest_Build-2.1.2-44cc11.svg?logo=icinga&logoColor=white&labelColor=464646&style=for-the-badge"></a>
30
+ <a href="https://github.com/adamlui/minify.js/releases/tag/node-v2.1.4">
31
+ <img height=31 src="https://img.shields.io/badge/Latest_Build-2.1.4-44cc11.svg?logo=icinga&logoColor=white&labelColor=464646&style=for-the-badge"></a>
32
32
  <a href="https://www.npmjs.com/package/@adamlui/minify.js?activeTab=code">
33
33
  <img height=31 src="https://img.shields.io/npm/unpacked-size/%40adamlui%2Fminify.js?style=for-the-badge&logo=ebox&logoColor=white&labelColor=464646&color=blue"></a>
34
34
  <a href="https://sonarcloud.io/component_measures?metric=new_vulnerabilities&id=adamlui_minify.js:node.js/src/minify.js">
@@ -4,29 +4,19 @@
4
4
  * Source: https://github.com/adamlui/minify.js/tree/main/node.js/src
5
5
  * Documentation: https://github.com/adamlui/minify.js/tree/main/node.js/docs
6
6
  */
7
- (async()=>{globalThis.env={devMode:__dirname.match(/[\\/]src/)};let o=require("node-clipboardy"),p=require("child_process").execSync,t=require("fs"),{getMsgs:e,getSysLang:s}=require(`./lib/language${env.devMode?"":".min"}.js`),n=require(`../minify${env.devMode?"":".min"}.js`),m=require("path"),i=(globalThis.app=require(`../${env.devMode?"../":"./data/"}app.json`),app.urls.docs+="/#-command-line-usage",app.msgs=await e(s()),app.regex={flags:{dryRun:/^--?(?:n|dry-?run)$/,includeDotFolders:/^--?(?:dd?|(?:include-?)?dot-?(?:folder|dir(?:ector(?:y|ie))?)s?=?(?:true|1)?)$/,includeDotFiles:/^--?(?:df|D|(?:include-?)?dot-?files?=?(?:true|1)?)$/,noRecursion:/^--?(?:R|(?:disable|no)-?recursi(?:on|ve)|recursi(?:on|ve)=(?:false|0))$/,noMangle:/^--?(?:M|(?:disable|no)-?mangle|mangle=(?:false|0))$/,noFilenameChange:/^--?(?:X|(?:disable|no)-?(?:file)?name-?change|(?:file)?name-?change=(?:false|0))$/,rewriteImports:/^--?(?:i|rewrite-?imports?=?(?:true|1)?)$/,relativeOutput:/^--?(?:r|relative-?output?=?(?:true|1)?)$/,copy:/^--?c(?:opy)?$/,quietMode:/^--?q(?:uiet)?(?:-?mode)?$/},paramOptions:{ignores:/^--?(?:ignores?|(?:ignore|skip|exclude)(?:d?-?files?)?)(?:=.*|$)/,comment:/^--?comments?(?:=.*|$)/},infoCmds:{help:/^--?h(?:elp)?$/,version:/^--?ve?r?s?i?o?n?$/},version:/^[~^>=]?\d+\.\d+\.\d+$/},""),c="",g="",l="",f="";if(app.config={},process.argv.forEach(s=>{var e,p,o;s.startsWith("-")&&(e=Object.keys(app.regex.paramOptions).find(e=>app.regex.paramOptions[e].test(s)),o=Object.keys(app.regex.flags).find(e=>app.regex.flags[e].test(s)),p=Object.keys(app.regex.infoCmds).find(e=>app.regex.infoCmds[e].test(s)),o?app.config[o]=!0:e?(/=.+/.test(s)||(console.error(`
8
- ${c}${app.msgs.prefix_error}: Arg [--${s.replace(/-/g,"")}] ${app.msgs.error_noEqual}.`),u(),process.exit(1)),o=s.split("=")[1],app.config[e]=parseInt(o)||o):p||(console.error(`
9
- ${c}${app.msgs.prefix_error}: Arg [${s}] ${app.msgs.error_notRecognized}.`),console.info(`
10
- ${g}${app.msgs.info_validArgs}.`),r(["paramOptions","flags","infoCmds"]),process.exit(1)))}),process.argv.some(e=>app.regex.infoCmds.help.test(e)))r();else if(process.argv.some(e=>app.regex.infoCmds.version.test(e))){var d=p(`npm view ${JSON.stringify(app.name)} version`).toString().trim()||"none";let e,s=process.cwd();for(;"/"!=s;){var a=m.join(s,"package.json");if(t.existsSync(a)){a=require(a);e=(a.dependencies?.[app.name]||a.devDependencies?.[app.name])?.match(/^[~^>=]?\d+\.\d+\.\d+$/)?.[1]||"none";break}s=m.dirname(s)}console.info(`
11
- ${app.msgs.prefix_globalVer}: `+d),console.info(app.msgs.prefix_localVer+": "+e)}else{let[a="",r=""]=process.argv.slice(2).filter(e=>!e.startsWith("-")).map(e=>e.replace(/^\/*/,"")),s=m.resolve(process.cwd(),a);a&&!t.existsSync(s)&&(d=s+".js",t.existsSync(d)?s=d:(console.error(`
12
- ${c}${app.msgs.prefix_error}: `+app.msgs.error_firstArgNotExist+"."+`
13
- ${s} ${app.msgs.error_doesNotExist}.`),console.info(`
14
- ${l}${app.msgs.info_exampleValidCmd}: `+`
15
- » minify-js . output.min.js`),u(),process.exit(1)));var $,d=s.endsWith(".js")&&!t.statSync(s).isDirectory()?[s]:n.findJS(s,{recursive:!app.config.noRecursion,verbose:!app.config.quietMode,ignores:(app.config.ignores?.split(",")??[]).map(e=>e.trim())});if(app.config.dryRun)d.length?(console.info(`
16
- ${g}${app.msgs.info_filesToBeMinned}:`),d.forEach(e=>console.info(e))):console.info(`
17
- ${g}${app.msgs.info_noFilesWillBeMinned}.`);else{let p=[],e=[];!app.config.relativeOutput&&t.statSync(s).isDirectory()?($=n.minify(s,{verbose:!1,mangle:!app.config.noMangle,comment:app.config.comment?.replace(/\\n/g,"\n"),relativeOutput:!1,recursive:!app.config.noRecursion,dotFolders:!!app.config.includeDotFolders,dotFiles:!!app.config.includeDotFiles,rewriteImports:!!app.config.rewriteImports,ignores:app.config.ignores?app.config.ignores.split(",").map(e=>e.trim()):[]}))&&($.error?p.push(s):e=[].concat($)):e=d.map(e=>{var s=n.minify(e,{verbose:!app.config.quietMode,mangle:!app.config.noMangle,comment:app.config.comment?.replace(/\\n/g,"\n")});return s.error&&p.push(e),s}).filter(e=>!e.error),e?.length?(h(`
18
- ${l}${app.msgs.info_minComplete}!`),h(f+e.length+" "+app.msgs.info_file+`${1<e.length?"s":""} ${app.msgs.info_minified}.${i}`)):h(`
19
- ${g}${app.msgs.info_noFilesProcessed}.`),p.length&&(h(`
20
- ${c+p.length} `+app.msgs.info_file+`${1<p.length?"s":""} ${app.msgs.info_failedToMinify}:${i}`),p.forEach(e=>h(e))),e?.length&&(app.config.copy&&1==e?.length?(console.log(`
21
- ${f}${e[0].code}`),h(`
22
- ${app.msgs.info_copying}...`),o.writeSync(e[0].code)):(h(`
23
- ${app.msgs.info_writing}${1<e?.length?"s":""}...`),e?.forEach(({code:e,srcPath:p,relPath:o})=>{let n,i;if(!app.config.relativeOutput&&o){let e=m.resolve(process.cwd(),r||"min"),s=m.dirname(o);n="."!=s?m.join(e,s):e,i=m.basename(p,".js")+`${app.config.noFilenameChange?"":".min"}.js`}else n=m.join(m.dirname(p),r.endsWith(".js")?m.dirname(r):r||"min"),i=`${r.endsWith(".js")&&a.endsWith(".js")?m.basename(r).replace(/(\.min)?\.js$/,""):m.basename(p,".js")}${app.config.noFilenameChange?"":".min"}.js`;let s=m.join(n,i);t.existsSync(n)||t.mkdirSync(n,{recursive:!0}),t.writeFileSync(s,e,"utf8"),h(` ${l}✓ `+m.relative(process.cwd(),s))})))}}function u(){console.info(`
24
- ${app.msgs.info_moreHelp}, ${app.msgs.info_type} ${app.name.split("/")[1]} --help' ${app.msgs.info_or} ${app.msgs.info_visit}
25
- ${f}${app.urls.docs}`)}function r(e=["header","usage","pathArgs","flags","paramOptions","infoCmds"]){app.prefix=` ${app.name.replace(/^@[^/]+\//,"")}  `;let s={header:[`
26
- ├ ${app.prefix}${app.msgs.appCopyright||`© ${app.copyrightYear} ${app.author} under the ${app.license} license`}.`,""+app.prefix+app.msgs.prefix_source+": "+app.urls.src],usage:[`
27
- ${f}o ${app.msgs.helpSection_usage}:`,` ${f}» ${l}${app.cmdFormat}`],pathArgs:[`
28
- ${f}o ${app.msgs.helpSection_pathArgs}:`," [inputPath] "+app.msgs.inputPathDesc_main+", "+app.msgs.inputPathDesc_extra+"."," [outputPath] "+app.msgs.outputPathDesc_main+", "+app.msgs.outputPathDesc_extra+"."],flags:[`
29
- ${f}o ${app.msgs.helpSection_flags}:`,` -n, --dry-run ${app.msgs.optionDesc_dryRun}.`,` -d, --include-dotfolders ${app.msgs.optionDesc_dotfolders}.`,` -D, --include-dotfiles ${app.msgs.optionDesc_dotfiles}.`,` -R, --no-recursion ${app.msgs.optionDesc_noRecursion}.`,` -M, --no-mangle ${app.msgs.optionDesc_noMangle}.`," -X, --no-filename-change "+app.msgs.optionDesc_noFilenameChange,` -i, --rewrite-imports ${app.msgs.optionDesc_rewriteImports}.`,` -c, --copy ${app.msgs.optionDesc_copy}.`,` -r, --relative-output ${app.msgs.optionDesc_relativeOutput}.`,` -q, --quiet ${app.msgs.optionDesc_quiet}.`],paramOptions:[`
30
- ${f}o ${app.msgs.helpSection_paramOptions}:`,`--ignores="dir/,file1.js,file2.js" ${app.msgs.optionDesc_ignores}.`,`--comment="comment" ${app.msgs.optionDesc_commentMain}.`+` ${app.msgs.optionDesc_commentExtra}.`],infoCmds:[`
31
- ${f}o ${app.msgs.helpSection_infoCmds}:`," -h, --help "+app.msgs.optionDesc_help,` -v, --version ${app.msgs.optionDesc_version}.`]};e.forEach(a=>s[a]?.forEach(s=>{{var i=/header|usage/.test(a)?1:37;let p=process.stdout.columns||80,o=[],e=s.match(/\S+|\s+/g),n="";e.forEach(e=>{var s=p-(o.length?i:0);n.length+"| ".length+e.length>s&&(o.push(o.length?n.trimStart():n),n=""),n+=e}),o.push(o.length?n.trimStart():n),o.forEach((e,s)=>console.info("| "+(0==s?e:" ".repeat(i)+e)))}})),console.info(`
32
- ${app.msgs.info_moreHelp}, ${app.msgs.info_visit}: ${f}${app.urls.docs}`)}function h(e){app.config.quietMode||console.info(e)}})();
7
+ (async()=>{globalThis.env={devMode:__dirname.match(/[\\/]src/)};let i=require("node-clipboardy"),c=require("fs"),{getMsgs:e,getSysLang:o}=require(`./lib/language${env.devMode?"":".min"}.js`),p=require(`../minify${env.devMode?"":".min"}.js`),t=require("path"),l=require(`./lib/print${env.devMode?"":".min"}.js`);if(Object.assign(globalThis.app??={},require(`../${env.devMode?"../":"./data/"}app.json`)),app.urls.docs+="/#-command-line-usage",app.msgs=await e(o()),app.colors={nc:"",br:"",by:"",bg:"",bw:"",blk:"",tlBG:""},app.regex={flags:{dryRun:/^--?(?:n|dry-?run)$/,includeDotFolders:/^--?(?:dd?|(?:include-?)?dot-?(?:folder|dir(?:ector(?:y|ie))?)s?=?(?:true|1)?)$/,includeDotFiles:/^--?(?:df|D|(?:include-?)?dot-?files?=?(?:true|1)?)$/,noRecursion:/^--?(?:R|(?:disable|no)-?recursi(?:on|ve)|recursi(?:on|ve)=(?:false|0))$/,noMangle:/^--?(?:M|(?:disable|no)-?mangle|mangle=(?:false|0))$/,noFilenameChange:/^--?(?:X|(?:disable|no)-?(?:file)?name-?change|(?:file)?name-?change=(?:false|0))$/,rewriteImports:/^--?(?:i|rewrite-?imports?=?(?:true|1)?)$/,relativeOutput:/^--?(?:r|relative-?output?=?(?:true|1)?)$/,copy:/^--?c(?:opy)?$/,quietMode:/^--?q(?:uiet)?(?:-?mode)?$/},paramOptions:{ignores:/^--?(?:ignores?|(?:ignore|skip|exclude)(?:d?-?files?)?)(?:=.*|$)/,comment:/^--?comments?(?:=.*|$)/},infoCmds:{help:/^--?h(?:elp)?$/,version:/^--?ve?r?s?i?o?n?$/},version:/^[~^>=]?\d+\.\d+\.\d+$/},app.config={},process.argv.forEach(o=>{var e,s,i;o.startsWith("-")&&(e=Object.keys(app.regex.paramOptions).find(e=>app.regex.paramOptions[e].test(o)),i=Object.keys(app.regex.flags).find(e=>app.regex.flags[e].test(o)),s=Object.keys(app.regex.infoCmds).find(e=>app.regex.infoCmds[e].test(o)),i?app.config[i]=!0:e?(/=.+/.test(o)||(console.error(`
8
+ ${app.colors.br}${app.msgs.prefix_error}: Arg [--${o.replace(/-/g,"")}] ${app.msgs.error_noEqual}.`+app.colors.nc),l.helpCmdAndDocURL(),process.exit(1)),i=o.split("=")[1],app.config[e]=parseInt(i)||i):s||(console.error(`
9
+ ${app.colors.br}${app.msgs.prefix_error}: Arg [${o}] ${app.msgs.error_notRecognized}.`+app.colors.nc),console.info(`
10
+ ${app.colors.by}${app.msgs.info_validArgs}.`+app.colors.nc),l.help(["paramOptions","flags","infoCmds"]),process.exit(1)))}),process.argv.some(e=>app.regex.infoCmds.help.test(e)))l.help();else if(process.argv.some(e=>app.regex.infoCmds.version.test(e)))l.version();else{let[n="",a=""]=process.argv.slice(2).filter(e=>!e.startsWith("-")).map(e=>e.replace(/^\/*/,"")),o=t.resolve(process.cwd(),n);n&&!c.existsSync(o)&&(g=o+".js",c.existsSync(g)?o=g:(console.error(`
11
+ ${app.colors.br}${app.msgs.prefix_error}: `+app.msgs.error_firstArgNotExist+"."+`
12
+ ${o} ${app.msgs.error_doesNotExist}.`+app.colors.nc),console.info(`
13
+ ${app.colors.bg}${app.msgs.info_exampleValidCmd}: `+`
14
+ » minify-js . output.min.js`+app.colors.nc),l.helpCmdAndDocURL(),process.exit(1)));var r,g=o.endsWith(".js")&&!c.statSync(o).isDirectory()?[o]:p.findJS(o,{recursive:!app.config.noRecursion,verbose:!app.config.quietMode,ignores:(app.config.ignores?.split(",")??[]).map(e=>e.trim())});if(app.config.dryRun)g.length?(console.info(`
15
+ ${app.colors.by}${app.msgs.info_filesToBeMinned}:`+app.colors.nc),g.forEach(e=>console.info(e))):console.info(`
16
+ ${app.colors.by}${app.msgs.info_noFilesWillBeMinned}.`+app.colors.nc);else{let s=[],e=[];!app.config.relativeOutput&&c.statSync(o).isDirectory()?(r=p.minify(o,{verbose:!1,mangle:!app.config.noMangle,comment:app.config.comment?.replace(/\\n/g,"\n"),relativeOutput:!1,recursive:!app.config.noRecursion,dotFolders:!!app.config.includeDotFolders,dotFiles:!!app.config.includeDotFiles,rewriteImports:!!app.config.rewriteImports,ignores:app.config.ignores?app.config.ignores.split(",").map(e=>e.trim()):[]}))&&(r.error?s.push(o):e=[].concat(r)):e=g.map(e=>{var o=p.minify(e,{verbose:!app.config.quietMode,mangle:!app.config.noMangle,comment:app.config.comment?.replace(/\\n/g,"\n")});return o.error&&s.push(e),o}).filter(e=>!e.error),e?.length?(l.ifNotQuiet(`
17
+ ${app.colors.bg}${app.msgs.info_minComplete}!`+app.colors.nc),l.ifNotQuiet(""+app.colors.bw+e.length+" "+app.msgs.info_file+`${1<e.length?"s":""} ${app.msgs.info_minified}.`+app.colors.nc)):l.ifNotQuiet(`
18
+ ${app.colors.by}${app.msgs.info_noFilesProcessed}.`+app.colors.nc),s.length&&(l.ifNotQuiet(`
19
+ ${app.colors.br}${s.length} `+app.msgs.info_file+`${1<s.length?"s":""} ${app.msgs.info_failedToMinify}:`+app.colors.nc),s.forEach(e=>l.ifNotQuiet(e))),e?.length&&(app.config.copy&&1==e?.length?(console.log(`
20
+ `+app.colors.bw+e[0].code+app.colors.nc),l.ifNotQuiet(`
21
+ ${app.msgs.info_copying}...`),i.writeSync(e[0].code)):(l.ifNotQuiet(`
22
+ ${app.msgs.info_writing}${1<e?.length?"s":""}...`),e?.forEach(({code:e,srcPath:s,relPath:i})=>{let p,r;if(!app.config.relativeOutput&&i){let e=t.resolve(process.cwd(),a||"min"),o=t.dirname(i);p="."!=o?t.join(e,o):e,r=t.basename(s,".js")+`${app.config.noFilenameChange?"":".min"}.js`}else p=t.join(t.dirname(s),a.endsWith(".js")?t.dirname(a):a||"min"),r=`${a.endsWith(".js")&&n.endsWith(".js")?t.basename(a).replace(/(\.min)?\.js$/,""):t.basename(s,".js")}${app.config.noFilenameChange?"":".min"}.js`;let o=t.join(p,r);c.existsSync(p)||c.mkdirSync(p,{recursive:!0}),c.writeFileSync(o,e,"utf8"),l.ifNotQuiet(` ${app.colors.bg}✓${app.colors.nc} `+t.relative(process.cwd(),o))})))}}})();
@@ -0,0 +1,17 @@
1
+ /**
2
+ * © 2023–2026 Adam Lui & contributors under the MIT license.
3
+ * Source: https://github.com/adamlui/minify.js/tree/main/node.js/src
4
+ * Documentation: https://github.com/adamlui/minify.js/tree/main/node.js/docs
5
+ */
6
+ module.exports={helpCmdAndDocURL(){console.info(`
7
+ ${app.msgs.info_moreHelp}, ${app.msgs.info_type} ${app.name.split("/")[1]} --help' ${app.msgs.info_or} ${app.msgs.info_visit}
8
+ `+app.colors.bw+app.urls.docs+app.colors.nc)},help(p=["header","usage","pathArgs","flags","paramOptions","infoCmds"]){app.prefix=""+app.colors.tlBG+app.colors.blk+` ${app.name.replace(/^@[^/]+\//,"")} ${app.colors.nc} `;let s={header:[`
9
+ ├ ${app.prefix}${app.msgs.appCopyright||`© ${app.copyrightYear} ${app.author} under the ${app.license} license`}.`,""+app.prefix+app.msgs.prefix_source+": "+app.urls.src],usage:[`
10
+ ${app.colors.bw}o ${app.msgs.helpSection_usage}:`+app.colors.nc,` ${app.colors.bw}» `+app.colors.bg+app.cmdFormat+app.colors.nc],pathArgs:[`
11
+ ${app.colors.bw}o ${app.msgs.helpSection_pathArgs}:`+app.colors.nc," [inputPath] "+app.msgs.inputPathDesc_main+", "+app.msgs.inputPathDesc_extra+"."," [outputPath] "+app.msgs.outputPathDesc_main+", "+app.msgs.outputPathDesc_extra+"."],flags:[`
12
+ ${app.colors.bw}o ${app.msgs.helpSection_flags}:`+app.colors.nc,` -n, --dry-run ${app.msgs.optionDesc_dryRun}.`,` -d, --include-dotfolders ${app.msgs.optionDesc_dotfolders}.`,` -D, --include-dotfiles ${app.msgs.optionDesc_dotfiles}.`,` -R, --no-recursion ${app.msgs.optionDesc_noRecursion}.`,` -M, --no-mangle ${app.msgs.optionDesc_noMangle}.`," -X, --no-filename-change "+app.msgs.optionDesc_noFilenameChange,` -i, --rewrite-imports ${app.msgs.optionDesc_rewriteImports}.`,` -c, --copy ${app.msgs.optionDesc_copy}.`,` -r, --relative-output ${app.msgs.optionDesc_relativeOutput}.`,` -q, --quiet ${app.msgs.optionDesc_quiet}.`],paramOptions:[`
13
+ ${app.colors.bw}o ${app.msgs.helpSection_paramOptions}:`+app.colors.nc,`--ignores="dir/,file1.js,file2.js" ${app.msgs.optionDesc_ignores}.`,`--comment="comment" ${app.msgs.optionDesc_commentMain}.`+` ${app.msgs.optionDesc_commentExtra}.`],infoCmds:[`
14
+ ${app.colors.bw}o ${app.msgs.helpSection_infoCmds}:`+app.colors.nc," -h, --help "+app.msgs.optionDesc_help,` -v, --version ${app.msgs.optionDesc_version}.`]};p.forEach(r=>s[r]?.forEach(s=>{{var n=/header|usage/.test(r)?1:37;let o=process.stdout.columns||80,e=[],p=s.match(/\S+|\s+/g),a="";p.forEach(p=>{var s=o-(e.length?n:0);a.length+"| ".length+p.length>s&&(e.push(e.length?a.trimStart():a),a=""),a+=p}),e.push(e.length?a.trimStart():a),e.forEach((p,s)=>console.info("| "+(0==s?p:" ".repeat(n)+p)))}})),console.info(`
15
+ ${app.msgs.info_moreHelp}, ${app.msgs.info_visit}: `+app.colors.bw+app.urls.docs+app.colors.nc)},ifNotQuiet(p){app.config.quietMode||console.info(p)},version(){var p=require("path"),s=require("child_process").execSync(`npm view ${JSON.stringify(app.name)} version`).toString().trim()||"none";let o,e=process.cwd();for(;"/"!=e;){var a=p.join(e,"package.json");if(require("fs").existsSync(a)){a=require(a);o=(a.dependencies?.[app.name]||a.devDependencies?.[app.name])?.match(/^[~^>=]?\d+\.\d+\.\d+$/)?.[1]||"none";break}e=p.dirname(e)}console.info(`
16
+ ${app.msgs.prefix_globalVer}: ${s}
17
+ ${app.msgs.prefix_localVer}: `+o)}};
@@ -1,12 +1,9 @@
1
- let fs=require("fs"),path=require("path"),uglifyJS=require("uglify-js");function findJS(s,i={}){let e=app.urls.docs+"/#findjssearchdir-options",n="findJS() » ";var r={recursive:!0,verbose:!0,dotFolders:!1,dotFiles:!1,ignores:[]};if("string"!=typeof s)console.error(n+"ERROR: 1st arg <searchDir> must be a string."),console.info(n+"For more help, please visit "+e);else{var o=path.resolve(process.cwd(),s);if(fs.existsSync(o)){if(validateOptions(i,r,e,"findJS('assets/js', { verbose: false, dotFoldes: true })")){(i={...r,...i}).ignoreFiles&&(i.ignores=[...i.ignores??[],...i.ignoreFiles]);let e=fs.readdirSync(s),o=[];return i.verbose&&!i.isRecursing&&console.info(n+"Searching for unminified JS files..."),e.forEach(e=>{let r=path.resolve(s,e);i.ignores.some(o=>o.endsWith("/")?r.split(path.sep).some(e=>e==o.replace(/\/$/,"")):e==o)?i.verbose&&console.info(n+`** ${e} ignored`):fs.statSync(r).isDirectory()&&"node_modules"!=e&&i.recursive&&(i.dotFolders||!e.startsWith("."))?o.push(...findJS(r,{...i,isRecursing:!0})):!/\.js(?<!\.min\.js)$/.test(e)||!i.dotFiles&&e.startsWith(".")||o.push(r)}),i.verbose&&!i.isRecursing&&(console.info(n+"Search complete! "+`${o.length||"No"} file${1==o.length?"":"s"} found.`),"minify"!=findJS.caller?.name)&&"undefined"!=typeof window&&console.info(n+"Check returned array."),i.isRecursing||o.length?o:[]}}else console.error(n+"ERROR: 1st arg <searchDir> must be an existing directory."),console.error(n+o+" does not exist."),console.info(n+"For more help, please visit "+e)}}function minify(i,n={}){let e=app.urls.docs+"/#minifyinput-options",t="minify() » ";var o={recursive:!0,verbose:!0,dotFolders:!1,dotFiles:!1,mangle:!0,rewriteImports:!1,relativeOutput:!1,ignores:[],comment:""};if("string"!=typeof i)console.error(t+"ERROR: 1st arg <input> must be a string."),console.info(t+"For more help, please visit "+e);else if(validateOptions(n,o,e,"minify('assets/js', { recursive: false, mangle: false })")){(n={...o,...n}).ignoreFiles&&(n.ignores=[...n.ignores??[],...n.ignoreFiles]);let s={mangle:!!n.mangle&&{toplevel:!1}};try{var r,c=fs.openSync(i,fs.constants.O_RDONLY),l=fs.fstatSync(c);if(l.isFile()){if(!/\.[cm]?jsx?$/i.test(i))return r=new Error(t+`ERROR: ${i} is not a JavaScript file (.js, .mjs, .cjs, .jsx)`),console.error(r.message),fs.closeSync(c),{code:"",srcPath:path.resolve(process.cwd(),i),error:r};n.verbose&&console.info(t+`** Minifying ${i}...`);var a=Buffer.alloc(l.size),f=(fs.readSync(c,a,0,l.size,0),fs.closeSync(c),uglifyJS.minify(a.toString("utf8"),s));return n.comment&&(f.code=p(f.code,n.comment)),f.error?console.error(t+"ERROR: "+f.error.message):n.verbose&&"undefined"!=typeof window&&console.info(t+"Minification complete! Check returned object."),{code:f.code,srcPath:path.resolve(process.cwd(),i),error:f.error}}fs.closeSync(c);var d=findJS(i,n)?.map(e=>{n.verbose&&console.info(t+`** Minifying ${e}...`);var o=fs.readFileSync(e,"utf8"),o=uglifyJS.minify(o,s),r=n.relativeOutput?void 0:path.relative(path.resolve(process.cwd(),i),e);return n.comment&&(o.code=p(o.code,n.comment)),o.error&&console.error(t+"ERROR: "+o.error.message),{code:o.code,srcPath:e,relPath:r,error:o.error}}).filter(e=>!e.error);if(n.verbose&&(d.length&&"undefined"!=typeof window?console.info(t+"Minification complete! Check returned object."):console.info(t+"No unminified JavaScript files processed.")),n.rewriteImports&&d&&1<d.length){n.verbose&&console.info(t+"** Rewriting import paths...");let e=d.map(e=>path.basename(e.srcPath,".js"));d.forEach(s=>e.forEach(e=>{var o=new RegExp(`(\\./?)?\\b${e}\\.js(['"])`,"g"),r=s.code;s.code=s.code.replace(o,`$1${e}.min.js$2`),r!=s.code&&n.verbose&&console.info(t+`Updated ${e}.js in `+path.basename(s.srcPath))})),n.verbose&&console.info(t+"Import paths rewritten.")}return d}catch(e){if("ENOENT"==e.code)return n.verbose&&!process.argv.some(e=>e.includes("gulp"))&&console.info(t+"** Minifying passed source code..."),o=uglifyJS.minify(i,s),n.comment&&(o.code=p(o.code,n.comment)),o.error?console.error(t+"ERROR: "+o.error.message):n.verbose&&!process.argv.some(e=>e.includes("gulp"))&&console.info(t+"Minification complete! Check returned object."),{code:o.code,srcPath:void 0,error:o.error};throw e}function p(e,o){var o=o.split("\n").map(e=>" * "+e).join("\n"),r=e.indexOf("#!");return 0<=r?(r=e.indexOf("\n",r)+1,e.slice(0,r)+`/**
2
1
  /**
3
2
  * © 2023–2026 Adam Lui & contributors under the MIT license.
4
3
  * Source: https://github.com/adamlui/minify.js/tree/main/node.js/src
5
4
  * Documentation: https://github.com/adamlui/minify.js/tree/main/node.js/docs
6
5
  */
7
- ${o}
6
+ let fs=require("fs"),path=require("path"),uglifyJS=require("uglify-js");function findJS(i,s={}){var e="https://github.com/adamlui/minify.js/tree/main/node.js/docs/#findjssearchdir-options",o={recursive:!0,verbose:!0,dotFolders:!1,dotFiles:!1,ignores:[]};if(log.prefix="findJS()","string"!=typeof i)return log.error("1st arg <searchDir> must be a string."),log.helpURL(e);var r=path.resolve(process.cwd(),i);if(!fs.existsSync(r))return log.error("1st arg <searchDir> must be an existing directory."),log.error(r+" does not exist."),log.helpURL(e);if(validateOptions({options:s,defaultOptions:o,helpURL:e,exampleCall:"findJS('assets/js', { verbose: false, dotFoldes: true })"})){(s={...o,...s}).ignoreFiles&&(s.ignores=[...s.ignores,...s.ignoreFiles]);let e=fs.readdirSync(i),r=[];return s.verbose&&!s.isRecursing&&log.info("Searching for unminified JS files..."),e.forEach(e=>{let o=path.resolve(i,e);s.ignores.some(r=>r.endsWith("/")?o.split(path.sep).some(e=>e==r.replace(/\/$/,"")):e==r)?s.verbose&&log.info(`** ${e} ignored`):fs.statSync(o).isDirectory()&&"node_modules"!=e&&s.recursive&&(s.dotFolders||!e.startsWith("."))?r.push(...findJS(o,{...s,isRecursing:!0})):!/\.js(?<!\.min\.js)$/.test(e)||!s.dotFiles&&e.startsWith(".")||r.push(o)}),s.verbose&&!s.isRecursing&&(log.info("Search complete!",`${r.length||"No"} file${1==r.length?"":"s"} found.`),"minify"!=findJS.caller?.name)&&"undefined"!=typeof window&&log.info("Check returned array."),s.isRecursing||r.length?r:[]}}function minify(s,n={}){var r="https://github.com/adamlui/minify.js/tree/main/node.js/docs/#minifyinput-options",e={recursive:!0,verbose:!0,dotFolders:!1,dotFiles:!1,mangle:!0,rewriteImports:!1,relativeOutput:!1,ignores:[],comment:""};if(log.prefix="minify()","string"!=typeof s)return log.error("1st arg <input> must be a string."),log.helpURL(r);if(validateOptions({options:n,defaultOptions:e,helpURL:r,exampleCall:"minify('assets/js', { recursive: false, mangle: false })"})){(n={...e,...n}).ignoreFiles&&(n.ignores=[...n.ignores,...n.ignoreFiles]);let i={mangle:!!n.mangle&&{toplevel:!1}};try{var o,t=fs.openSync(s,fs.constants.O_RDONLY),l=fs.fstatSync(t);if(l.isFile()){if(!/\.[cm]?jsx?$/i.test(s))return o=new Error(s+" is not a JavaScript file (.js, .mjs, .cjs, .jsx)"),log.error(o.message),fs.closeSync(t),{code:"",srcPath:path.resolve(process.cwd(),s),error:o};n.verbose&&log.info(`** Minifying ${s}...`);var a=Buffer.alloc(l.size),c=(fs.readSync(t,a,0,l.size,0),fs.closeSync(t),uglifyJS.minify(a.toString("utf8"),i));return n.comment&&(c.code=prependComment(c.code,n.comment)),c.error?log.error(c.error.message):n.verbose&&"undefined"!=typeof window&&log.info("Minification complete! Check returned object."),{code:c.code,srcPath:path.resolve(process.cwd(),s),error:c.error}}fs.closeSync(t);var f=findJS(s,n)?.map(e=>{n.verbose&&log.info(`** Minifying ${e}...`);var r=fs.readFileSync(e,"utf8"),r=uglifyJS.minify(r,i),o=n.relativeOutput?void 0:path.relative(path.resolve(process.cwd(),s),e);return n.comment&&(r.code=prependComment(r.code,n.comment)),r.error&&log.error(r.error.message),{code:r.code,srcPath:e,relPath:o,error:r.error}}).filter(e=>!e.error);if(n.verbose&&(f.length&&"undefined"!=typeof window?log.info("Minification complete! Check returned object."):log.info("No unminified JavaScript files processed.")),n.rewriteImports&&f&&1<f.length){n.verbose&&log.info("** Rewriting import paths...");let e=f.map(e=>path.basename(e.srcPath,".js"));f.forEach(i=>e.forEach(e=>{var r=new RegExp(`(\\./?)?\\b${e}\\.js(['"])`,"g"),o=i.code;i.code=i.code.replace(r,`$1${e}.min.js$2`),o!=i.code&&n.verbose&&log.info(`Updated ${e}.js in `+path.basename(i.srcPath))})),n.verbose&&log.info("Import paths rewritten.")}return f}catch(e){if("ENOENT"==e.code)return n.verbose&&!process.argv.some(e=>e.includes("gulp"))&&log.info("** Minifying passed source code..."),r=uglifyJS.minify(s,i),n.comment&&(r.code=prependComment(r.code,n.comment)),r.error?log.error(r.error.message):n.verbose&&!process.argv.some(e=>e.includes("gulp"))&&log.info("Minification complete! Check returned object."),{code:r.code,srcPath:void 0,error:r.error};throw e}}}function prependComment(e,r){var o=e.match(/^#!.*\n/);let i="";return o&&(i=o[0],e=e.slice(i.length)),`${i}/**
7
+ ${r.split("\n").map(e=>" * "+e).join("\n")}
8
8
  */
9
- `+e.slice(r)):`/**
10
- ${o}
11
- */
12
- `+e}}}function validateOptions(e,o,r,s){let i=JSON.stringify(o,void 0,2).replace(/"([^"]+)":/g,"$1:").replace(/"/g,"'").replace(/\n\s*/g," "),n=Object.keys(o).join(", "),t=Object.keys(o).filter(e=>"boolean"==typeof o[e]),c=Object.keys(o).filter(e=>Number.isInteger(o[e])),l=Object.keys(o).filter(e=>Array.isArray(o[e])),a=`${validateOptions.caller?.name||"validateOptions"}() » `;var f,d=s.split(",").findIndex(e=>e.trim().startsWith("{"))+1;function p(){console.info(a+"For more help, please visit "+r)}if(d+=["st","nd","rd"][d-1]||"th","object"!=typeof e)return console.error(a+`ERROR: ${"0th"==d?"[O":d+" arg [o"}ptions] can only be an object of key/values.`),console.info(a+"Example valid call: "+s),console.info(a+`Valid options: [ ${n} ]`),console.info(a+"If omitted, default settings are: "+i),p(),!1;for(f in e)if("isRecursing"==f||Object.prototype.hasOwnProperty.call(o,f)){if(t.includes(f)&&"boolean"!=typeof e[f])return console.error(a+`ERROR: [${f}] option can only be \`true\` or \`false\`.`),p(),!1;if(c.includes(f)){if(e[f]=parseInt(e[f],10),isNaN(e[f])||e[f]<1)return console.error(a+`ERROR: [${f}] option can only be an integer > 0.`),p(),!1}else if(l.includes(f))if("string"!=typeof e[f]||e[f].includes(",")){if(!Array.isArray(e[f]))return console.error(a+`ERROR: [${f}] option can only be an array.`),p(),!1}else e[f]=[e[f]]}return!0}globalThis.app=require(`${__dirname.match(/[\\/]src/)?"../":"./data/"}app.json`);let mjsAliases={minify:["build","Build","compile","Compile","compress","Compress","Minify"],findJS:["find","Find","findjs","findJs","Findjs","FindJs","FindJS","search","Search"]};module.exports={minify:minify,findJS:findJS};for(let o in mjsAliases)mjsAliases[o].forEach(e=>module.exports[e]=module.exports[o]);
9
+ `+e}function validateOptions({options:e,defaultOptions:r,helpURL:o,exampleCall:i}){var s,n,t=Object.keys(r).filter(e=>"boolean"==typeof r[e]),l=Object.keys(r).filter(e=>Number.isInteger(r[e]));if("object"!=typeof e)return s=i.split(",").findIndex(e=>e.trim().startsWith("{"))+1,s+=["st","nd","rd"][s-1]||"th",log.error(`${"0th"==s?"[O":s+" arg [o"}ptions] can only be an object of key/vals.`),log.info("Example valid call:",i),log.validOptions(r),log.helpURL(o),!1;for(n in e)if("isRecursing"!=n&&Object.prototype.hasOwnProperty.call(r,n)){if(t.includes(n)&&"boolean"!=typeof e[n])return log.error(`[${n}] option can only be \`true\` or \`false\`.`),log.helpURL(o),!1;if(l.includes(n)&&(e[n]=parseInt(e[n],10),isNaN(e[n])||e[n]<1))return log.error(`[${n}] option can only be an integer > 0.`),log.helpURL(o),!1}return!0}Object.assign(globalThis.app??={},require(`${__dirname.match(/[\\/]src/)?"../":"./data/"}app.json`)),app.aliases={minify:["build","Build","compile","Compile","compress","Compress","Minify"],findJS:["find","Find","findjs","findJs","Findjs","FindJs","FindJS","search","Search"]};let log={prefix:app.name,error(...e){console.error(this.prefix+" » ERROR:",...e)},helpURL(e=app.urls?.docs){this.info("For more help, please visit",e)},info(...e){console.info(this.prefix+" »",...e)},validOptions(e){var r=Object.keys(e).join(", "),e=JSON.stringify(e,void 0,2).replace(/"([^"]+)":/g,"$1:").replace(/"/g,"'").replace(/\n\s*/g," ");this.info(`Valid options: [${r}]`),this.info("If omitted, default settings are: "+e)}};module.exports={minify:minify,findJS:findJS};for(let r in app.aliases)app.aliases[r].forEach(e=>module.exports[e]=module.exports[r]);
package/docs/README.md CHANGED
@@ -27,8 +27,8 @@
27
27
  <img height=31 src="https://img.shields.io/npm/dm/%40adamlui%2Fminify.js?logo=npm&color=af68ff&logoColor=white&labelColor=464646&style=for-the-badge"></a>
28
28
  <a href="#%EF%B8%8F-mit-license">
29
29
  <img height=31 src="https://img.shields.io/badge/License-MIT-orange.svg?logo=internetarchive&logoColor=white&labelColor=464646&style=for-the-badge"></a>
30
- <a href="https://github.com/adamlui/minify.js/releases/tag/node-v2.1.2">
31
- <img height=31 src="https://img.shields.io/badge/Latest_Build-2.1.2-44cc11.svg?logo=icinga&logoColor=white&labelColor=464646&style=for-the-badge"></a>
30
+ <a href="https://github.com/adamlui/minify.js/releases/tag/node-v2.1.4">
31
+ <img height=31 src="https://img.shields.io/badge/Latest_Build-2.1.4-44cc11.svg?logo=icinga&logoColor=white&labelColor=464646&style=for-the-badge"></a>
32
32
  <a href="https://www.npmjs.com/package/@adamlui/minify.js?activeTab=code">
33
33
  <img height=31 src="https://img.shields.io/npm/unpacked-size/%40adamlui%2Fminify.js?style=for-the-badge&logo=ebox&logoColor=white&labelColor=464646&color=blue"></a>
34
34
  <a href="https://sonarcloud.io/component_measures?metric=new_vulnerabilities&id=adamlui_minify.js:node.js/src/minify.js">
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adamlui/minify.js",
3
- "version": "2.1.2",
3
+ "version": "2.1.4",
4
4
  "description": "Recursively minify all JavaScript files.",
5
5
  "author": {
6
6
  "name": "Adam Lui",