-
-
Notifications
You must be signed in to change notification settings - Fork 85
Expand file tree
/
Copy pathindex.cjs
More file actions
1 lines (1 loc) · 5.21 KB
/
index.cjs
File metadata and controls
1 lines (1 loc) · 5.21 KB
1
"use strict";var t,e=require("postcss"),n=require("node:path"),s=require("node:fs/promises");function parseArguments(e,n,s){const o=e.map(t=>t.trim()).filter(t=>!!t),r={stdin:!1,stdout:!1,output:void 0,outputDir:void 0,inputs:[],inlineMap:!0,externalMap:!1,replace:!1,pluginOptions:{},debug:!1};let i,a=!1;for(let e=0;e<o.length;e++){const n=o[e];switch(n){case"-o":case"--output":r.output=o[e+1],e++,a=!0;break;case"-m":case"--map":r.externalMap=!0,r.inlineMap=!1,a=!0;break;case"--no-map":r.externalMap=!1,r.inlineMap=!1,a=!0;break;case"-r":case"--replace":r.replace=!0,a=!0;break;case"--debug":r.debug=!0,a=!0;break;case"-d":case"--dir":r.outputDir=o[e+1],e++,a=!0;break;case"-p":case"--plugin-options":i=o[e+1],e++,a=!0;break;default:if(0===n.indexOf("-"))return console.warn(`[error] unknown argument : ${n}\n`),s(),t.InvalidArguments;if(!a){r.inputs.push(n);break}return s(),t.InvalidArguments}}if(r.replace&&(r.output=void 0,r.outputDir=void 0),r.outputDir&&(r.output=void 0),r.inputs.length>1&&r.output)return console.warn('[error] omit "--output" when processing multiple inputs\n'),s(),t.InvalidArguments;0===r.inputs.length&&(r.stdin=!0),r.output||r.outputDir||r.replace||(r.stdout=!0),r.stdout&&(r.externalMap=!1);let p={};if(i)try{p=JSON.parse(i)}catch{return console.warn("[error] plugin options must be valid JSON\n"),s(),t.InvalidArguments}for(const e in p){const o=p[e];if(!n.includes(e))return console.warn(`[error] unknown plugin option: ${e}\n`),s(),t.InvalidArguments;r.pluginOptions[e]=o}return r}async function getStdin(){return new Promise(t=>{let e="",n=!1;if(setTimeout(()=>{n=!0,t("")},1e4),process.stdin.isTTY){if(n)return;t(e)}else process.stdin.setEncoding("utf8"),process.stdin.on("readable",()=>{let t="";for(;t=process.stdin.read();)e+=t??""}),process.stdin.on("end",()=>{n||t(e)})})}async function stdinToStdout(t,n,s){let o="";try{const r=await getStdin();r||(s(),process.exit(1));const i=await e([t]).process(r,{from:"stdin",to:"stdout",map:!!n.inlineMap&&{inline:!0}});i.warnings().forEach(t=>{console.warn(t.toString())}),o=i.css}catch(t){t instanceof Error?console.error(n.debug?t:t.message):console.error(t),process.exit(1)}process.stdout.write(o+(n.inlineMap?"\n":"")),process.exit(0)}async function stdinToFs(t,o,r){let i=o.output;!i&&o.outputDir&&(i=n.join(o.outputDir,"output.css")),i||process.exit(0);try{const n=await getStdin();n||(r(),process.exit(1));const a=await e([t]).process(n,{from:"stdin",to:i,map:!(!o.inlineMap&&!o.externalMap)&&{inline:o.inlineMap}});a.warnings().forEach(t=>{console.warn(t.toString())}),o.externalMap&&a.map?await Promise.all([s.writeFile(i,a.css+(o.inlineMap?"\n":"")),s.writeFile(`${i}.map`,a.map.toString())]):await s.writeFile(i,a.css+(o.inlineMap?"\n":""))}catch(t){t instanceof Error?console.error(o.debug?t:t.message):console.error(t),process.exit(1)}console.log(`CSS was written to "${n.normalize(i)}"`),process.exit(0)}async function fsToStdout(t,n){let o=[];try{o=await Promise.all(n.inputs.map(async n=>{const o=await s.readFile(n),r=await e([t]).process(o,{from:n,to:"stdout",map:!1});return r.warnings().forEach(t=>{console.warn(t.toString())}),r.css}))}catch(t){t instanceof Error?console.error(n.debug?t:t.message):console.error(t),process.exit(1)}for(const t of o)process.stdout.write(t);process.exit(0)}async function fsToFs(t,o){try{await Promise.all(o.inputs.map(async r=>{let i=o.output;o.outputDir&&(i=n.join(o.outputDir,n.basename(r))),o.replace&&(i=r),i||process.exit(0);const a=await s.readFile(r),p=await e([t]).process(a,{from:r,to:i,map:!(!o.inlineMap&&!o.externalMap)&&{inline:o.inlineMap}});p.warnings().forEach(t=>{console.warn(t.toString())}),o.externalMap&&p.map?await Promise.all([s.writeFile(i,p.css+(o.inlineMap?"\n":"")),s.writeFile(`${i}.map`,p.map.toString())]):await s.writeFile(i,p.css+(o.inlineMap?"\n":"")),console.log(`CSS was written to "${n.normalize(i)}"`)}))}catch(t){t instanceof Error?console.error(o.debug?t:t.message):console.error(t),process.exit(1)}process.exit(0)}!function(t){t.InvalidArguments="INVALID_ARGUMENTS"}(t||(t={})),exports.cli=async function cli(e,n,s,o=!0){const r=parseArguments(process.argv.slice(o?2:3),n,s);r===t.InvalidArguments&&process.exit(1);const i=e(r.pluginOptions);r.stdin&&r.stdout?await stdinToStdout(i,r,s):r.stdin?await stdinToFs(i,r,s):r.stdout?await fsToStdout(i,r):await fsToFs(i,r)},exports.helpTextLogger=function helpTextLogger(t,e,n,s=null){let o=[];if(s){const t=Math.max(...Object.keys(s).map(t=>t.length)),e=new Array(t).fill(" ").join("");e.length&&(o=["\nPlugin Options:",...Object.keys(s).map(t=>` ${(t+e).slice(0,e.length)} ${typeof s[t]}`)],o.push(`\n ${JSON.stringify(s,null,2).split("\n").join("\n ")}`))}const r=[`${e}\n`,` ${n}\n`,"Usage:",` ${t} [input.css] [OPTIONS] [-o|--output output.css]`,` ${t} <input.css>... [OPTIONS] --dir <output-directory>`,` ${t} <input.css>... [OPTIONS] --replace`,"\nOptions:"," -o, --output Output file"," -d, --dir Output directory"," -r, --replace Replace (overwrite) the input file"," -m, --map Create an external sourcemap"," --no-map Disable the default inline sourcemaps"," -p, --plugin-options Stringified JSON object with plugin options"];return o.length>0&&r.push(...o),()=>{console.warn(r.join("\n"))}},exports.parseArguments=parseArguments;