@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 +2 -2
- package/dist/cli/index.min.js +16 -26
- package/dist/cli/lib/print.min.js +17 -0
- package/dist/minify.min.js +3 -6
- package/docs/README.md +2 -2
- package/package.json +1 -1
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.
|
|
31
|
-
<img height=31 src="https://img.shields.io/badge/Latest_Build-2.1.
|
|
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/dist/cli/index.min.js
CHANGED
|
@@ -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
|
|
8
|
-
${
|
|
9
|
-
${
|
|
10
|
-
${
|
|
11
|
-
${app.msgs.
|
|
12
|
-
${
|
|
13
|
-
${
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
${
|
|
17
|
-
${
|
|
18
|
-
${
|
|
19
|
-
${
|
|
20
|
-
|
|
21
|
-
${
|
|
22
|
-
${app.msgs.
|
|
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}✓[0m `+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}[0m`)}function r(e=["header","usage","pathArgs","flags","paramOptions","infoCmds"]){app.prefix=`[106m[30m ${app.name.replace(/^@[^/]+\//,"")} [0m `;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}:[0m`,` ${f}» ${l}${app.cmdFormat}[0m`],pathArgs:[`
|
|
28
|
-
${f}o ${app.msgs.helpSection_pathArgs}:[0m`," [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}:[0m`,` -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}:[0m`,`--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}:[0m`," -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}[0m`)}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:"[0m",br:"[1;91m",by:"[1;33m",bg:"[1;92m",bw:"[1;97m",blk:"[30m",tlBG:"[106m"},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)}};
|
package/dist/minify.min.js
CHANGED
|
@@ -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.
|
|
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.
|
|
31
|
-
<img height=31 src="https://img.shields.io/badge/Latest_Build-2.1.
|
|
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">
|