ofi
Version:
Yet another arguments parser
2 lines (1 loc) • 3.1 kB
JavaScript
;var A=Object.defineProperty;var z=Object.getOwnPropertyDescriptor;var G=Object.getOwnPropertyNames;var $=Object.prototype.hasOwnProperty;var P=(e,t)=>{for(var r in t)A(e,r,{get:t[r],enumerable:!0})},Q=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let l of G(t))!$.call(e,l)&&l!==r&&A(e,l,{get:()=>t[l],enumerable:!(o=z(t,l))||o.enumerable});return e};var U=e=>Q(A({},"__esModule",{value:!0}),e);var K={};P(K,{default:()=>N,parse:()=>N});module.exports=U(K);var F=/(^"|"$)/g;function c(e){return e.codePointAt(0)===45}function x(e){return c(e)&&e.codePointAt(1)!==45}function j(e){return c(e)&&e.codePointAt(1)===45}function E(e){return e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}function h(e){return e.replace(/-/g," ").replace(/^\w|[A-Z]|\b\w|\s+/g,(t,r)=>r===0?t.toLowerCase():t.toUpperCase()).replace(/\s+/g,"")}function O(e){return typeof e=="number"||typeof e=="string"?!isNaN(Number(e)):!1}var Z={parseNumber:!0,shortFlagGroup:!0,camelize:!1,"populate--":!1};function g(e,t){return t.parseNumber&&O(e)?Number.parseFloat(e):typeof e=="string"?e.replace(F,""):e}function C(e,t){if(!x(e))return;e=e.slice(1);let r=Object.entries(t);for(let[o,l]of r)if(Array.isArray(l)&&l.includes(e)||typeof l=="string"&&l===e)return"--"+o}function N(e,t={}){var w,k,L,T;t={...Z,...t};let r={_:[]},o=t.default||{},l=t.alias||{},b=t.coerce||{},d=t.camelize?h:i=>i,S=[...Object.keys(o),...Object.keys(b),...Object.values(t).flat().filter(i=>typeof i=="string")].map(h);typeof e=="string"&&(e=e.match(/"([^"]+)"|(\S+)/g)||e.split(/(\s+)/)),e=e.filter(Boolean),t["populate--"]&&(r["--"]=[]);let n=0,s;function m(){let i;if(/^"(.*)"$/.test(e[n])&&(i=!0),s.split("=")[1])return s.split("=")[1];if(e[n+1]&&(!c(e[n+1])||i))return n++,e[n].replace(F,"")}for(;n<e.length;n++){if(s=C(e[n].split("=")[0],l)||e[n].split("=")[0],e[n].split("=")[1]&&(s+="="+e[n].split("=")[1]),!c(e[n])){r._.push(g(e[n],t));continue}if(typeof t.unknown=="function"&&!C(s,l)&&!S.includes(s.replace(/-/g,""))&&t.unknown(e[n].split("=")[0]),j(s)){if(s==="--"){let y=e.slice(n+1).map(_=>g(_,t));r._.push(...y),t["populate--"]&&r["--"].push(...y);break}let[i,f]=s.slice(2).split("="),u=E(i),a=d(u),p=f||e[n+1];if((w=t.boolean)!=null&&w.includes(u.replace(/^no-/,"")))u.startsWith("no-")?r[d(u.replace(/^no-/,""))]=!1:r[a]=p&&!c(p)?m().toLowerCase()==="true":!0;else if((k=t.number)!=null&&k.includes(u)){if(!O(p))continue;r[a]=Number.parseFloat(m())}else if((L=t.string)!=null&&L.includes(u)){if(!m())continue;r[a]=String(p)}else if((T=t.array)!=null&&T.includes(u)){if(!p)continue;if(f){r[a]=f.split(",").map(y=>g(y,t));continue}for(;e[n+1]&&!c(e[n+1]);)Array.isArray(r[a])||(r[a]=[]),n++,r[a].push(g(e[n],t));r[a]=r[a]||o[u]||o[a]}else r[a]=g(m(),t)||o[u]||o[a]}else if(x(s)){if(s=s.split("=")[0],!t.shortFlagGroup){r[s.slice(1)]=!0;continue}s=s.replace(/[^\dA-Za-z\u00C0-\u1FFF\u2C00-\uD7FF]/g,"");for(let i=0;i<s.length;i++){let f=C("-"+s[i],l)||s[i];r[d(f.replace(/^-+/,""))]=!0}}}for(let i in b)r[i]!==void 0&&typeof b[i]=="function"&&(r[i]=b[i](r[i]));return Object.assign(o,r)}0&&(module.exports={parse});