@playform/pipe
Version:
2 lines (1 loc) • 980 B
JavaScript
import{mkdir as B,stat as y,writeFile as I}from"node:fs/promises";import{dirname as j}from"node:path";var M=async(...[t,{Changed:s,Read:n,Wrote:u,Passed:c,Accomplished:m,Failed:a,Fulfilled:p}])=>{let i=Promise.resolve(t);const g=async r=>(i=i.then(async f=>s?await s({...f,On:r}):f),i),l=Array.from(t.Results.entries()).map(async([r,f])=>{const e={Input:f,Output:r,After:0,Before:0,Buffer:""};try{if(e.Before=(await y(e.Input)).size,n&&u){if(e.Buffer=await n(e),e.Buffer=await u(e),!e.Buffer||c&&!await c(e))return;if(await B(j(e.Output),{recursive:!0}),await I(e.Output,e.Buffer,"utf-8"),e.After=(await y(e.Output)).size,t.File++,t=await g(e),t.Logger>1&&typeof m=="function"){const o=await m(e);o&&console.log(o)}}}catch(o){if(t.Results.delete(r),t.Logger>1&&a&&typeof a=="function"){const w=await a(e,o);w&&console.log(w)}}});if(await Promise.all(l),t.Logger>0&&t.Results.size>0&&typeof p=="function"){const r=await p(t);r&&console.log(r)}return await i};export{M as default};