cmpl
Version:
no deps, no operations, no vowels - just a tiny compiler
3 lines (2 loc) • 3.96 kB
JavaScript
var k=Object.defineProperty,N=Object.defineProperties;var T=Object.getOwnPropertyDescriptors;var O=Object.getOwnPropertySymbols;var W=Object.prototype.hasOwnProperty,B=Object.prototype.propertyIsEnumerable;var D=(e,t,r)=>t in e?k(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,C=(e,t)=>{for(var r in t||(t={}))W.call(t,r)&&D(e,r,t[r]);if(O)for(var r of O(t))B.call(t,r)&&D(e,r,t[r]);return e},j=(e,t)=>N(e,T(t));const S=(e=8,t=import("node:crypto"),r=import("node:path"))=>async(p,d)=>{const{createHash:m}=await t,{basename:w,extname:c}=await r;return`${w(p,c(p))}-${m("sha256").update(d).digest("hex").substring(0,e).toUpperCase()}${c(p)}`};async function E(e,{entry:t,fs:r=import("node:fs/promises"),path:p=import("node:path")},d){const{relative:m,dirname:w,join:c}=await p,{readFile:y,mkdir:v,writeFile:h}=await r,P=y(e),a=m(t,e);return Promise.all(d.map(async o=>{if(!o)return o;const{outDir:g,transform:i=l=>l,rename:u=async l=>(await p).basename(l)}=o,f=await i(await P,a);if(f===null)return null;const b=await u(a,f),s=c(g,m(t,w(e))),n=c(s,b);return await v(s,{recursive:!0}),await h(n,f),{[a]:m(g,n)}}))}async function A({entry:e,processors:t,fs:r=import("node:fs/promises"),path:p=import("node:path")}){const d=Array.from({length:t.length}).map(()=>({})),{relative:m,join:w,dirname:c}=await p,{readdir:y,stat:v}=await r;let h;const P=async(o,g,i)=>{const u=w(g,o),f=(await v(u)).isDirectory();if(h||(h=f?e:c(e)),f){let b=!1;const s=i.map(n=>{const l=n&&(o===e||n.recursive!==!1&&(!n.include||n.include(m(h,u),!0)));return l&&(b=!0),l?n:null});b&&await a(u,s)}if(!f){let b=!1;const s=i.map(n=>{const l=n&&(!n.include||n.include(m(h,u),!1))?n:null;return l&&(b=!0),l});if(!b)return;(await E(u,{fs:r,path:p,entry:e===o?h:e},s)).forEach((n,l)=>{n!==null&&Object.assign(d[l],n)})}},a=async(o,g)=>{await Promise.all((await y(o)).map(i=>P(i,o,g)))};return await P(e,"",t),t.length===1?d[0]:d}async function*M({signal:e,entry:t,processors:r,poll:p=L(),onError:d=process.env.CI?c=>{throw c}:c=>console.log(c instanceof Error?c.message:c),fs:m=import("node:fs/promises"),path:w=import("node:path")}){const c={entry:t,fs:m,processors:r,path:w},{join:y,dirname:v}=await w,{watch:h,stat:P}=await m;let a=null;const o=()=>a.length===1?Object.assign({},a[0]):a.map(s=>Object.assign({},s));try{const s=await A(c);a=Array.isArray(s)?s:[s],yield o()}catch(s){d(s)}const g=(await P(t)).isDirectory(),i=g?t:v(t),u=g?c:j(C({},c),{entry:i}),f=r.some(({recursive:s})=>s!==!1),b=p?I({fs:m,path:w,interval:typeof p=="number"?p:void 0}):h;for await(const s of b(t,{recursive:g?f:!1,signal:e}))try{if(a)switch(s.eventType){case"rename":if(a.some(l=>l[s.filename])){a.forEach(l=>{l[s.filename]&&delete l[s.filename]}),yield o();break}case"change":{let n=!1;const l=r.map(x=>{const F=x&&(!x.include||x.include(s.filename,!1))?x:null;return F&&(n=!0),F});n&&((await E(y(i,s.filename),u,l)).forEach((x,F)=>{x!==null&&Object.assign(a[F],x)}),yield o());break}}else{const n=await A(c);a=Array.isArray(n)?n:[n],yield o()}}catch(n){d(n)}}function I({path:e,fs:t,interval:r=300}){return async function*(d,m){const{join:w,relative:c}=await e,{readdir:y,stat:v}=await t,h=async(a,o={})=>(await Promise.all((await y(a)).map(async g=>{const i=w(a,g),u=await v(i);u.isDirectory()&&m.recursive?await h(i,o):o[c(d,i)]=u.mtimeMs})),o);let P=await h(d);for(;!m.signal?.aborted&&(await new Promise(i=>setTimeout(i,r)),!m.signal?.aborted);){const a=await h(d);if(m.signal?.aborted)break;const o=Object.entries(P);for(let i=0,u=o.length;i<u;i++){const[f,b]=o[i];a[f]?a[f]!==b&&(yield{eventType:"change",filename:f}):yield{eventType:"rename",filename:f}}const g=Object.entries(P);for(let i=0,u=g.length;i<u;i++){const[f]=g[i];P[f]||(yield{eventType:"rename",filename:f})}P=a}}}function L(){if(!process.env.CMPL_USE_POLLING)return!1;const e=parseInt(process.env.CMPL_USE_POLLING);return isNaN(e)?!0:e}export{A as cmpl,S as cntntHsh,E as prcss,M as wtch};
//# sourceMappingURL=index.js.map