bunup 0.5.6 → 0.5.9

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/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2024 Arshad Yaseen
3
+ Copyright (c) 2024-present Arshad Yaseen
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/dist/cli.js CHANGED
@@ -1,24 +1,24 @@
1
1
  #!/usr/bin/env bun
2
2
  // @bun
3
- var kr=Object.create;var{getPrototypeOf:Rr,defineProperty:sn,getOwnPropertyNames:$r}=Object;var Tr=Object.prototype.hasOwnProperty;var W=(n,r,t)=>{t=n!=null?kr(Rr(n)):{};let e=r||!n||!n.__esModule?sn(t,"default",{value:n,enumerable:!0}):t;for(let o of $r(n))if(!Tr.call(e,o))sn(e,o,{get:()=>n[o],enumerable:!0});return e};var Ir=(n,r)=>()=>(r||n((r={exports:{}}).exports,r),r.exports);var Mr=(n,r)=>{for(var t in r)sn(n,t,{get:r[t],enumerable:!0,configurable:!0,set:(e)=>r[t]=()=>e})};var p=(n,r)=>()=>(n&&(r=n(n=0)),r);var jr=import.meta.require;var v=Ir((we,an)=>{var Z=process||{},Sn=Z.argv||[],Q=Z.env||{},Er=!(!!Q.NO_COLOR||Sn.includes("--no-color"))&&(!!Q.FORCE_COLOR||Sn.includes("--color")||Z.platform==="win32"||(Z.stdout||{}).isTTY&&Q.TERM!=="dumb"||!!Q.CI),Ur=(n,r,t=n)=>(e)=>{let o=""+e,i=o.indexOf(r,n.length);return~i?n+_r(o,r,t,i)+r:n+o+r},_r=(n,r,t,e)=>{let o="",i=0;do o+=n.substring(i,e)+t,i=e+r.length,e=n.indexOf(r,i);while(~e);return o+n.substring(i)},Ln=(n=Er)=>{let r=n?Ur:()=>String;return{isColorSupported:n,reset:r("\x1B[0m","\x1B[0m"),bold:r("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:r("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:r("\x1B[3m","\x1B[23m"),underline:r("\x1B[4m","\x1B[24m"),inverse:r("\x1B[7m","\x1B[27m"),hidden:r("\x1B[8m","\x1B[28m"),strikethrough:r("\x1B[9m","\x1B[29m"),black:r("\x1B[30m","\x1B[39m"),red:r("\x1B[31m","\x1B[39m"),green:r("\x1B[32m","\x1B[39m"),yellow:r("\x1B[33m","\x1B[39m"),blue:r("\x1B[34m","\x1B[39m"),magenta:r("\x1B[35m","\x1B[39m"),cyan:r("\x1B[36m","\x1B[39m"),white:r("\x1B[37m","\x1B[39m"),gray:r("\x1B[90m","\x1B[39m"),bgBlack:r("\x1B[40m","\x1B[49m"),bgRed:r("\x1B[41m","\x1B[49m"),bgGreen:r("\x1B[42m","\x1B[49m"),bgYellow:r("\x1B[43m","\x1B[49m"),bgBlue:r("\x1B[44m","\x1B[49m"),bgMagenta:r("\x1B[45m","\x1B[49m"),bgCyan:r("\x1B[46m","\x1B[49m"),bgWhite:r("\x1B[47m","\x1B[49m"),blackBright:r("\x1B[90m","\x1B[39m"),redBright:r("\x1B[91m","\x1B[39m"),greenBright:r("\x1B[92m","\x1B[39m"),yellowBright:r("\x1B[93m","\x1B[39m"),blueBright:r("\x1B[94m","\x1B[39m"),magentaBright:r("\x1B[95m","\x1B[39m"),cyanBright:r("\x1B[96m","\x1B[39m"),whiteBright:r("\x1B[97m","\x1B[39m"),bgBlackBright:r("\x1B[100m","\x1B[49m"),bgRedBright:r("\x1B[101m","\x1B[49m"),bgGreenBright:r("\x1B[102m","\x1B[49m"),bgYellowBright:r("\x1B[103m","\x1B[49m"),bgBlueBright:r("\x1B[104m","\x1B[49m"),bgMagentaBright:r("\x1B[105m","\x1B[49m"),bgCyanBright:r("\x1B[106m","\x1B[49m"),bgWhiteBright:r("\x1B[107m","\x1B[49m")}};an.exports=Ln();an.exports.createColors=Ln});function V(n){Rn=n??!1}class A{static instance;loggedOnceMessages=new Set;MAX_LABEL_LENGTH=3;cliColor=d.default.blue;mutedColor=d.default.dim;infoColor=d.default.cyan;warnColor=d.default.yellow;errorColor=d.default.red;defaultColor=d.default.white;progressFgColorMap={ESM:d.default.yellow,CJS:d.default.green,IIFE:d.default.magenta,DTS:d.default.blue};progressBgColorMap={ESM:d.default.bgYellow,CJS:d.default.bgGreen,IIFE:d.default.bgMagenta,DTS:d.default.bgBlue};labels={cli:"CLI",info:"INFO",warn:"WARN",error:"ERROR"};constructor(){}static getInstance(){if(!A.instance)A.instance=new A;return A.instance}dispose(){this.loggedOnceMessages.clear()}shouldLog(n){if(!n?.once)return!0;if(this.loggedOnceMessages.has(n.once))return!1;return this.loggedOnceMessages.add(n.once),!0}formatMessage({fgColor:n,bgColor:r,label:t,message:e,identifier:o,muted:i}){let s=" ".repeat(Math.max(0,this.MAX_LABEL_LENGTH-t.length)),c=i?this.mutedColor(e):e,a=o?` ${r(d.default.black(` ${o} `))}`:"";return`${n(t)} ${s}${c}${a}`}output(n,r={},t=console.log){if(Rn||!this.shouldLog(r))return;if(r.verticalSpace)t("");if(t(n),r.verticalSpace)t("")}cli(n,r={}){let t=this.formatMessage({fgColor:this.cliColor,bgColor:d.default.bgBlue,label:this.labels.cli,message:n,identifier:r.identifier,muted:r.muted});this.output(t,r)}info(n,r={}){let t=this.formatMessage({fgColor:this.infoColor,bgColor:d.default.bgCyan,label:this.labels.info,message:n,identifier:r.identifier,muted:r.muted});this.output(t,r)}warn(n,r={}){let t=this.formatMessage({fgColor:this.warnColor,bgColor:d.default.bgYellow,label:this.labels.warn,message:n,identifier:r.identifier,muted:r.muted});this.output(t,r,console.warn)}error(n,r={}){let t=this.formatMessage({fgColor:this.errorColor,bgColor:d.default.bgRed,label:this.labels.error,message:n,identifier:r.identifier,muted:r.muted});this.output(t,r,console.error)}getProgressFgColor(n){for(let[r,t]of Object.entries(this.progressFgColorMap))if(n.includes(r))return t;return this.defaultColor}getProgressBgColor(n){for(let[r,t]of Object.entries(this.progressBgColorMap))if(n.includes(r))return t;return d.default.bgWhite}progress(n,r,t={}){let e=this.getProgressFgColor(n),o=this.getProgressBgColor(n),i=this.formatMessage({fgColor:e,bgColor:o,label:n,message:r,identifier:t.identifier,muted:t.muted});this.output(i,t)}}var d,Rn=!1,l;var L=p(()=>{d=W(v(),1);l=A.getInstance()});function gn(n){return n instanceof D}var b,I,M,w,C,z,D,y=(n)=>{if(n instanceof Error)return n.message;return String(n)},Hr,cn=(n,r)=>{let t=y(n),e=r?`[${r}] `:"",o=gn(n),i="ERROR";if(n instanceof M)i="BUILD ERROR";else if(n instanceof w)i="DTS ERROR";else if(n instanceof C)i="CLI ERROR";else if(n instanceof z)i="WATCH ERROR";else if(o)i="ISOLATED DECL ERROR";else if(n instanceof I)i="BUNUP ERROR";let s=Hr.find((c)=>c.pattern.test(t)&&(c.errorType===i||!c.errorType));if(!s&&!o)console.error(`${b.default.red(i)} ${e}${t}`);if(s)console.log(`
3
+ var fr=Object.create;var{getPrototypeOf:mr,defineProperty:ee,getOwnPropertyNames:pr}=Object;var br=Object.prototype.hasOwnProperty;var T=(e,r,t)=>{t=e!=null?fr(mr(e)):{};let n=r||!e||!e.__esModule?ee(t,"default",{value:e,enumerable:!0}):t;for(let o of pr(e))if(!br.call(n,o))ee(n,o,{get:()=>e[o],enumerable:!0});return n};var xr=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports);var hr=(e,r)=>{for(var t in r)ee(e,t,{get:r[t],enumerable:!0,configurable:!0,set:(n)=>r[t]=()=>n})};var p=(e,r)=>()=>(e&&(r=e(e=0)),r);var yr=import.meta.require;var v=xr((Jr,re)=>{var _=process||{},be=_.argv||[],F=_.env||{},wr=!(!!F.NO_COLOR||be.includes("--no-color"))&&(!!F.FORCE_COLOR||be.includes("--color")||_.platform==="win32"||(_.stdout||{}).isTTY&&F.TERM!=="dumb"||!!F.CI),Or=(e,r,t=e)=>(n)=>{let o=""+n,i=o.indexOf(r,e.length);return~i?e+Br(o,r,t,i)+r:e+o+r},Br=(e,r,t,n)=>{let o="",i=0;do o+=e.substring(i,n)+t,i=n+r.length,n=e.indexOf(r,i);while(~n);return o+e.substring(i)},xe=(e=wr)=>{let r=e?Or:()=>String;return{isColorSupported:e,reset:r("\x1B[0m","\x1B[0m"),bold:r("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:r("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:r("\x1B[3m","\x1B[23m"),underline:r("\x1B[4m","\x1B[24m"),inverse:r("\x1B[7m","\x1B[27m"),hidden:r("\x1B[8m","\x1B[28m"),strikethrough:r("\x1B[9m","\x1B[29m"),black:r("\x1B[30m","\x1B[39m"),red:r("\x1B[31m","\x1B[39m"),green:r("\x1B[32m","\x1B[39m"),yellow:r("\x1B[33m","\x1B[39m"),blue:r("\x1B[34m","\x1B[39m"),magenta:r("\x1B[35m","\x1B[39m"),cyan:r("\x1B[36m","\x1B[39m"),white:r("\x1B[37m","\x1B[39m"),gray:r("\x1B[90m","\x1B[39m"),bgBlack:r("\x1B[40m","\x1B[49m"),bgRed:r("\x1B[41m","\x1B[49m"),bgGreen:r("\x1B[42m","\x1B[49m"),bgYellow:r("\x1B[43m","\x1B[49m"),bgBlue:r("\x1B[44m","\x1B[49m"),bgMagenta:r("\x1B[45m","\x1B[49m"),bgCyan:r("\x1B[46m","\x1B[49m"),bgWhite:r("\x1B[47m","\x1B[49m"),blackBright:r("\x1B[90m","\x1B[39m"),redBright:r("\x1B[91m","\x1B[39m"),greenBright:r("\x1B[92m","\x1B[39m"),yellowBright:r("\x1B[93m","\x1B[39m"),blueBright:r("\x1B[94m","\x1B[39m"),magentaBright:r("\x1B[95m","\x1B[39m"),cyanBright:r("\x1B[96m","\x1B[39m"),whiteBright:r("\x1B[97m","\x1B[39m"),bgBlackBright:r("\x1B[100m","\x1B[49m"),bgRedBright:r("\x1B[101m","\x1B[49m"),bgGreenBright:r("\x1B[102m","\x1B[49m"),bgYellowBright:r("\x1B[103m","\x1B[49m"),bgBlueBright:r("\x1B[104m","\x1B[49m"),bgMagentaBright:r("\x1B[105m","\x1B[49m"),bgCyanBright:r("\x1B[106m","\x1B[49m"),bgWhiteBright:r("\x1B[107m","\x1B[49m")}};re.exports=xe();re.exports.createColors=xe});function D(e){ye=e??!1}class ${static instance;loggedOnceMessages=new Set;MAX_LABEL_LENGTH=3;cliColor=m.default.blue;mutedColor=m.default.dim;infoColor=m.default.cyan;warnColor=m.default.yellow;errorColor=m.default.red;defaultColor=m.default.white;progressFgColorMap={ESM:m.default.yellow,CJS:m.default.green,IIFE:m.default.magenta,DTS:m.default.blue};progressBgColorMap={ESM:m.default.bgYellow,CJS:m.default.bgGreen,IIFE:m.default.bgMagenta,DTS:m.default.bgBlue};labels={cli:"CLI",info:"INFO",warn:"WARN",error:"ERROR"};constructor(){}static getInstance(){if(!$.instance)$.instance=new $;return $.instance}dispose(){this.loggedOnceMessages.clear()}shouldLog(e){if(!e?.once)return!0;if(this.loggedOnceMessages.has(e.once))return!1;return this.loggedOnceMessages.add(e.once),!0}formatMessage({fgColor:e,bgColor:r,label:t,message:n,identifier:o,muted:i}){let s=" ".repeat(Math.max(0,this.MAX_LABEL_LENGTH-t.length)),a=i?this.mutedColor(n):n,l=o?` ${r(m.default.black(` ${o} `))}`:"";return`${e(t)} ${s}${a}${l}`}output(e,r={},t=console.log){if(ye||!this.shouldLog(r))return;if(r.verticalSpace)t("");if(t(e),r.verticalSpace)t("")}cli(e,r={}){let t=this.formatMessage({fgColor:this.cliColor,bgColor:m.default.bgBlue,label:this.labels.cli,message:e,identifier:r.identifier,muted:r.muted});this.output(t,r)}info(e,r={}){let t=this.formatMessage({fgColor:this.infoColor,bgColor:m.default.bgCyan,label:this.labels.info,message:e,identifier:r.identifier,muted:r.muted});this.output(t,r)}warn(e,r={}){let t=this.formatMessage({fgColor:this.warnColor,bgColor:m.default.bgYellow,label:this.labels.warn,message:e,identifier:r.identifier,muted:r.muted});this.output(t,r,console.warn)}error(e,r={}){let t=this.formatMessage({fgColor:this.errorColor,bgColor:m.default.bgRed,label:this.labels.error,message:e,identifier:r.identifier,muted:r.muted});this.output(t,r,console.error)}getProgressFgColor(e){for(let[r,t]of Object.entries(this.progressFgColorMap))if(e.includes(r))return t;return this.defaultColor}getProgressBgColor(e){for(let[r,t]of Object.entries(this.progressBgColorMap))if(e.includes(r))return t;return m.default.bgWhite}progress(e,r,t={}){let n=this.getProgressFgColor(e),o=this.getProgressBgColor(e),i=this.formatMessage({fgColor:n,bgColor:o,label:e,message:r,identifier:t.identifier,muted:t.muted});this.output(i,t)}}var m,ye=!1,g;var O=p(()=>{m=T(v(),1);g=$.getInstance()});function ne(e){return e instanceof W}var x,S,E,U,C,H,W,L=(e)=>{if(e instanceof Error)return e.message;return String(e)},Sr,te=(e,r)=>{let t=L(e),n=r?`[${r}] `:"",o=ne(e),i="ERROR";if(e instanceof E)i="BUILD ERROR";else if(e instanceof U)i="DTS ERROR";else if(e instanceof C)i="CLI ERROR";else if(e instanceof H)i="WATCH ERROR";else if(o)i="ISOLATED DECL ERROR";else if(e instanceof S)i="BUNUP ERROR";let s=Sr.find((a)=>a.pattern.test(t)&&(a.errorType===i||!a.errorType));if(!s&&!o)console.error(`${x.default.red(i)} ${n}${t}`);if(s)console.log(`
4
4
  `),s.logSolution(t),console.log(`
5
- `);else if(!o)console.error(b.default.dim(b.default.white("If you think this is a bug, please open an issue at: ")+b.default.cyan("https://github.com/arshad-yaseen/bunup/issues/new")))},$n=(n,r)=>{cn(n,r),process.exit(1)};var B=p(()=>{b=W(v(),1);L();I=class I extends Error{constructor(n){super(n);this.name="BunupError"}};M=class M extends I{constructor(n){super(n);this.name="BunupBuildError"}};w=class w extends I{constructor(n){super(n);this.name="BunupDTSBuildError"}};C=class C extends I{constructor(n){super(n);this.name="BunupCLIError"}};z=class z extends I{constructor(n){super(n);this.name="BunupWatchError"}};D=class D extends I{constructor(n){super(n);this.name="BunupIsolatedDeclError"}};Hr=[{pattern:/Could not resolve: "bun"/i,errorType:"BUILD ERROR",logSolution:()=>{l.error(b.default.white("You're trying to build a project that uses Bun. ")+b.default.white("Please set the target option to ")+b.default.cyan("`bun`")+b.default.white(`.
6
- `)+b.default.white("Example: ")+b.default.green("`bunup --target bun`")+b.default.white(" or in config: ")+b.default.green("{ target: 'bun' }"))}}]});import Tn from"fs/promises";import Wr from"path";function In(n,r,t){return Array.isArray(n)?n.map((e)=>({...e,[r]:t})):{...n,[r]:t}}function Mn(n){return Array.isArray(n)?n:[n]}function jn(n,r){switch(n){case"esm":return E(r)?".js":".mjs";case"cjs":return E(r)?".cjs":".js";case"iife":return".global.js"}}function An(n,r){switch(n){case"esm":return E(r)?".d.ts":".d.mts";case"cjs":return E(r)?".d.cts":".d.ts";case"iife":return".d.ts"}}function ln(n){return n==="node"||n==="bun"}function E(n){return n==="module"}function X(n){return n>=1000?`${(n/1000).toFixed(2)}s`:`${Math.round(n)}ms`}function En(n){if(!n)return[];return Array.from(new Set([...Object.keys(n.dependencies||{}),...Object.keys(n.peerDependencies||{})]))}function j(n,r=3){return n.split("/").slice(-r).join("/")}async function Un(n,r){let t=Wr.join(n,r);try{await Tn.rm(t,{recursive:!0,force:!0})}catch(e){throw new M(`Failed to clean output directory: ${e}`)}await Tn.mkdir(t,{recursive:!0})}var k=p(()=>{B()});function vr(n){return En(n).map((r)=>new RegExp(`^${r}($|\\/|\\\\)`))}function _n(n,r){return typeof r==="string"?r===n:r.test(n)}function J(n,r,t){let o=vr(t).some((s)=>s.test(n))||r.external?.some((s)=>_n(n,s)),i=r.noExternal?.some((s)=>_n(n,s));return o&&!i}var mn=p(()=>{k()});import{resolveTsImportPath as Yr}from"ts-import-resolver";var q="\x00dts:",Hn=(n,r,t)=>{return{name:"bunup:virtual-dts",async resolveId(e,o){if(un(e))return e;if(!o||!un(o))return null;let i=r.tsconfig?Yr({path:e,importer:Y(o),tsconfig:r.tsconfig,rootDir:t}):null;if(!i)return null;let s=R(i);if(n.has(s))return N(s);return null},load(e){if(e.startsWith(q)){let o=Y(e),i=n.get(o);if(i)return i}return null}}};var fn=p(()=>{$()});function F(n){return n.endsWith(".d.ts")||n.endsWith(".d.mts")||n.endsWith(".d.cts")}function Wn(n){return dn.test(n)&&!F(n)}function U(n){return[".ts",".mts",".cts",".tsx"].some((r)=>n.endsWith(r))&&!F(n)}function R(n){if(F(n))return n;if(n.endsWith(".mts"))return`${n.slice(0,-4)}.d.mts`;if(n.endsWith(".cts"))return`${n.slice(0,-4)}.d.cts`;if(dn.test(n))return n.replace(dn,".d.ts");return`${n}.d.ts`}function un(n){return n.startsWith(q)}function Y(n){return n.replace(q,"")}function N(n){return`${q}${n}`}function vn(n,r){if(r===void 0)return"";let t=n.slice(0,r).split(`
7
- `),e=t.length,o=t[t.length-1].length+1;return` (${e}:${o})`}function Yn(n,r,t,e){if(typeof e==="boolean"&&e)return!1;if(Array.isArray(e)){for(let o of e)if(typeof o==="string"&&n===o)return!1;else if(o instanceof RegExp&&o.test(n))return!1}return J(n,r,t)}var dn;var $=p(()=>{mn();fn();dn=/\.(js|mjs|cjs|ts|mts|cts|tsx|jsx)$/});import{basename as qr,dirname as Fr,extname as Kr}from"path";function P(n){let r=qr(n),t=Kr(r);return t?r.slice(0,-t.length):r}function K(n){if(typeof n==="string")return[{fullEntryPath:n,name:P(n)}];if(typeof n==="object"&&!Array.isArray(n))return Object.entries(n).map(([e,o])=>({fullEntryPath:o,name:e}));let r=[],t=new Set;for(let e of n){let o=P(e);if(!t.has(o)){r.push({fullEntryPath:e,name:o}),t.add(o);continue}let s=Fr(e).split("/").filter((a)=>a!=="."&&a!=="");if(s.length===0){let a=1,g;do g=`${o}_${a++}`;while(t.has(g));r.push({fullEntryPath:e,name:g}),t.add(g);continue}let c=!1;for(let a=1;a<=s.length&&!c;a++){let m=`${s.slice(-a).join("/")}/${o}`;if(!t.has(m))r.push({fullEntryPath:e,name:m}),t.add(m),c=!0}if(!c){let a=1,g;do g=`${s.join("/")}/${o}_${a++}`;while(t.has(g));r.push({fullEntryPath:e,name:g}),t.add(g)}}return r}function qn(n){return n.filter((r)=>U(r.fullEntryPath))}function Fn(n,r){return`[dir]/${n}${r}`}var nn=p(()=>{$()});import Vr from"path";import{loadConfig as Qn}from"coffi";async function Zn(n,r,t){return Array.isArray(n)&&"root"in n[0]?n.filter((e)=>t?t.includes(e.name):!0).map((e)=>({rootDir:Vr.resolve(r,e.root),options:In(e.config,"name",e.name)})):[{rootDir:r,options:n}]}async function Vn(n){let{config:r,filepath:t}=await Qn({name:"package",cwd:n,extensions:[".json"]});return{packageJson:r,path:t}}async function zn(n,r){let{config:t,filepath:e}=await Qn({name:"tsconfig",cwd:n,extensions:[".json"],preferredPath:r});return{tsconfig:t,path:e}}var bn=p(()=>{k()});import Dn from"path";import{ResolverFactory as zr}from"oxc-resolver";function Xn(n,r){return{name:"bunup:types-resolve",buildStart(){xn||=new zr({mainFields:["types","typings","module","main"],conditionNames:["types","typings","import","require"],extensions:[".d.ts",".d.mts",".d.cts",".ts",".mts",".cts"],...n.path&&{tsconfig:{configFile:n.path}},modules:["node_modules","node_modules/@types"]})},async resolveId(t,e){if(r===!1)return;if(t==="bun")return;let o=e?Y(e):void 0;if(/\0/.test(t))return;if(Array.isArray(r)){if(!r.some((a)=>typeof a==="string"?a===t:a.test(t)))return}let i=o?Dn.dirname(o):process.cwd(),{path:s}=await xn.async(i,t);if(!s)return;if(Wn(s)){let c=R(s);try{let{path:a}=await xn.async(Dn.dirname(s),c);if(a)return a}catch(a){}return}return s}}}var xn;var Jn=p(()=>{$()});import{build as Dr}from"rolldown";import{dts as Xr}from"rolldown-plugin-dts";async function Nn(n,r,t,e,o,i){let s=R(n),c=N(s),a=typeof t.dts==="object"&&"resolve"in t.dts?t.dts.resolve:void 0;try{let{output:g}=await Dr({input:c,output:{dir:t.outDir},write:!1,...o.path&&{resolve:{tsconfigFilename:o.path}},onwarn(m,u){if(["UNRESOLVED_IMPORT","CIRCULAR_DEPENDENCY","EMPTY_BUNDLE"].includes(m.code??""))return;u(m)},plugins:[Hn(r,o,i),a&&Xn(o,a),Xr({dtsInput:!0,emitDtsOnly:!0})],external:(m)=>Yn(m,t,e,a)});if(!g[0]?.code)return l.warn(`Generated empty declaration file for entry "${n}"`,{muted:!0}),"";return g[0].code}catch(g){throw new w(`DTS bundling failed for entry "${n}": ${y(g)}`)}}var Pn=p(()=>{B();L();Jn();$();fn()});import{resolveTsImportPath as Jr}from"ts-import-resolver";function ie(n){let r=new Set,t=[Nr,Pr,ne,re,ee,te,oe];for(let e of t){let o=n.matchAll(e);for(let i of o)if(i[1])r.add(i[1])}return r}async function nr(n,r,t){let e=new Set([n]),o=[n];while(o.length){let i=o.pop();if(!i)continue;try{let s=await Bun.file(i).text(),c=ie(s);for(let a of c){let g=r.tsconfig?Jr({path:a,importer:i,tsconfig:r.tsconfig,rootDir:t}):null;if(!g||!(U(g)||F(g)))continue;if(!e.has(g))e.add(g),o.push(g)}}catch(s){l.warn(`Error processing ${i}: ${y(s)}`)}}return e}var Nr,Pr,ne,re,ee,te,oe;var rr=p(()=>{B();L();$();Nr=/^\s*import\s+(?:[^'"]*?\s+from\s+)?['"]([^'"]+)['"]/gm,Pr=/^\s*export\s+.*from\s+['"]([^'"]+)['"]/gm,ne=/import\s*\(\s*['"]([^'"]+)['"]\s*\)/g,re=/require\s*\(\s*['"]([^'"]+)['"]\s*\)/g,ee=/import\s+\w+\s*=\s*require\s*\(\s*['"]([^'"]+)['"]\s*\)/g,te=/\/\/\/\s*<reference\s+path\s*=\s*['"]([^'"]+)['"]\s*\/>/g,oe=/\/\/\/\s*<reference\s+types\s*=\s*['"]([^'"]+)['"]\s*\/>/g});import{isolatedDeclaration as se}from"oxc-transform";async function er(n,r){let t=!1,e=new Map;if(await Promise.all([...n].map(async(o)=>{try{let i=R(o);if(!await Bun.file(o).exists())return;let c=await Bun.file(o).text(),{code:a,errors:g}=se(o,c);if(a)e.set(i,a);for(let m of g){if(!t&&!r)console.log(`
8
- `);let u=m.labels[0],f=u?vn(c,u.start):"",h=`${j(o)}${f}: ${ae(m.message)}`;l[r?"warn":"error"](h),t=!0}}catch(i){l.warn(`Failed to generate declaration for ${o}: ${y(i)}`)}})),t&&!r)throw console.log(`
9
- `),console.log(hn.default.gray(`See ${hn.default.blue("https://bunup.dev/docs/troubleshooting/explicit-type-annotation-errors")} for details.`)),console.log(`
10
- `),new D;return e}function ae(n){return n.replace(" with --isolatedDeclarations","").replace(" with --isolatedDeclaration","")}var hn;var tr=p(()=>{hn=W(v(),1);B();L();k();$()});import or from"fs/promises";import wn from"path";async function ir(n,r){let t=wn.resolve(n),e=wn.resolve(t,r);if(!await or.exists(t))throw new w(`Root directory does not exist: ${t}`);if(!await Bun.file(e).exists())throw new w(`Entry file does not exist: ${e}`);if(!U(e))throw new w(`Entry file must be a TypeScript file: ${e}`);if(wn.relative(t,e).startsWith(".."))throw new w(`Entry file must be within rootDir: ${e}`);return{absoluteRootDir:t,absoluteEntry:e}}var sr=p(()=>{B();$()});async function ar(n,r,t,e,o){let{absoluteEntry:i}=await ir(n,r),s=await nr(i,e,n),c=await er(s,t.watch);return Nn(i,c,t,o,e,n)}var gr=p(()=>{Pn();rr();tr();sr()});function tn(n){return{...ge,...n}}function cr(n){let{minify:r,minifyWhitespace:t,minifyIdentifiers:e,minifySyntax:o}=n,i=r===!0;return{whitespace:t??i,identifiers:e??i,syntax:o??i}}function lr(n,r){return r==="cjs"?n:void 0}function mr(n,r,t,e){return{...typeof t==="object"&&Object.keys(t).reduce((o,i)=>{let s=JSON.stringify(t[i]);return o[`process.env.${i}`]=s,o[`import.meta.env.${i}`]=s,o},{}),...n,...e==="cjs"&&(r===!0||typeof r==="object"&&r.importMetaUrl)&&{"import.meta.url":"importMetaUrl"}}}function ur(n,r){return n===void 0?r==="esm":n}function fr(n){return typeof n==="string"?n:void 0}var ge;var yn=p(()=>{ge={entry:[],format:["cjs"],outDir:"dist",target:"node",clean:!0}});function dr(n,r){return{name:"bunup:external-plugin",setup(t){t.onResolve({filter:/.*/},(e)=>{let o=e.path;if(J(o,n,r))return{path:o,external:!0};return null})}}}var pr=p(()=>{mn()});function br({format:n,target:r,shims:t}){let o=le(t).map((i)=>Cn[i]).filter((i)=>i.appliesTo(n,r));if(o.length===0)return{name:"bunup:inject-shims",setup(){}};return{name:"bunup:inject-shims",setup(i){i.onLoad({filter:ce},async({path:s})=>{let c=await Bun.file(s).text(),a=o.filter((f)=>f.isNeededInFile(c));if(a.length===0)return;let{shebangLine:g,codeContent:m}=me(c),u=a.map((f)=>f.generateCode()).join("");return{contents:g+u+m}})}}}function le(n){if(n===!0)return Object.keys(Cn);if(!n)return[];return Object.entries(n).filter(([r,t])=>t&&(r in Cn)).map(([r])=>r)}function me(n){if(!n.startsWith("#!"))return{shebangLine:"",codeContent:n};let r=n.indexOf(`
11
- `);return r===-1?{shebangLine:"",codeContent:n}:{shebangLine:n.slice(0,r+1),codeContent:n.slice(r+1)}}var ce,Cn;var xr=p(()=>{k();ce=/\.(js|ts|jsx|tsx|mts|cts)$/,Cn={dirnameFilename:{appliesTo:(n,r)=>n==="esm"&&ln(r),isNeededInFile:(n)=>/\b__dirname\b/.test(n)||/\b__filename\b/.test(n),generateCode:()=>`import { fileURLToPath } from 'url';
5
+ `);else if(!o)console.error(x.default.dim(x.default.white("If you think this is a bug, please open an issue at: ")+x.default.cyan("https://github.com/arshad-yaseen/bunup/issues/new")))},Ce=(e,r)=>{te(e,r),process.exit(1)};var k=p(()=>{x=T(v(),1);O();S=class S extends Error{constructor(e){super(e);this.name="BunupError"}};E=class E extends S{constructor(e){super(e);this.name="BunupBuildError"}};U=class U extends S{constructor(e){super(e);this.name="BunupDTSBuildError"}};C=class C extends S{constructor(e){super(e);this.name="BunupCLIError"}};H=class H extends S{constructor(e){super(e);this.name="BunupWatchError"}};W=class W extends S{constructor(e){super(e);this.name="BunupIsolatedDeclError"}};Sr=[{pattern:/Could not resolve: "bun"/i,errorType:"BUILD ERROR",logSolution:()=>{g.error(x.default.white("You're trying to build a project that uses Bun. ")+x.default.white("Please set the target option to ")+x.default.cyan("`bun`")+x.default.white(`.
6
+ `)+x.default.white("Example: ")+x.default.green("`bunup --target bun`")+x.default.white(" or in config: ")+x.default.green("{ target: 'bun' }"))}}]});import we from"fs/promises";import Er from"path";function Oe(e,r,t){return Array.isArray(e)?e.map((n)=>({...n,[r]:t})):{...e,[r]:t}}function Be(e){return Array.isArray(e)?e:[e]}function Se(e,r){switch(e){case"esm":return I(r)?".js":".mjs";case"cjs":return I(r)?".cjs":".js";case"iife":return".global.js"}}function Ee(e,r){switch(e){case"esm":return I(r)?".d.ts":".d.mts";case"cjs":return I(r)?".d.cts":".d.ts";case"iife":return".d.ts"}}function oe(e){return e==="node"||e==="bun"}function I(e){return e==="module"}function Y(e){return e>=1000?`${(e/1000).toFixed(2)}s`:`${Math.round(e)}ms`}function Le(e){if(!e)return[];return Array.from(new Set([...Object.keys(e.dependencies||{}),...Object.keys(e.peerDependencies||{})]))}function M(e,r=3){return e.split("/").slice(-r).join("/")}async function ke(e,r){let t=Er.join(e,r);try{await we.rm(t,{recursive:!0,force:!0})}catch(n){throw new E(`Failed to clean output directory: ${n}`)}await we.mkdir(t,{recursive:!0})}var B=p(()=>{k()});function Lr(e){return Le(e).map((r)=>new RegExp(`^${r}($|\\/|\\\\)`))}function Me(e,r){return typeof r==="string"?r===e:r.test(e)}function ie(e,r,t){let o=Lr(t).some((s)=>s.test(e))||r.external?.some((s)=>Me(e,s)),i=r.noExternal?.some((s)=>Me(e,s));return o&&!i}var se=p(()=>{B()});function P(e){return e.endsWith(".d.ts")||e.endsWith(".d.mts")||e.endsWith(".d.cts")}function G(e){return[".ts",".mts",".cts",".tsx"].some((r)=>e.endsWith(r))&&!P(e)}function q(e){if(P(e))return e;if(e.endsWith(".mts"))return`${e.slice(0,-4)}.d.mts`;if(e.endsWith(".cts"))return`${e.slice(0,-4)}.d.cts`;if(Re.test(e))return e.replace(Re,".d.ts");return`${e}.d.ts`}var Te,ve,Re;var K=p(()=>{se();Te=/\.(d\.ts|d\.mts|d\.cts|ts|mts|cts|tsx)$/,ve=/[\\/]node_modules[\\/]/,Re=/\.(js|mjs|cjs|ts|mts|cts|tsx|jsx)$/});import{basename as kr,dirname as Mr,extname as Rr}from"path";function N(e){let r=kr(e),t=Rr(r);return t?r.slice(0,-t.length):r}function j(e){if(typeof e==="string")return[{fullPath:e,outputBasePath:N(e)}];if(typeof e==="object"&&!Array.isArray(e))return Object.entries(e).map(([n,o])=>({fullPath:o,outputBasePath:n}));let r=[],t=new Set;for(let n of e){let o=N(n);if(!t.has(o)){r.push({fullPath:n,outputBasePath:o}),t.add(o);continue}let s=Mr(n).split("/").filter((l)=>l!=="."&&l!=="");if(s.length===0){let l=1,c;do c=`${o}_${l++}`;while(t.has(c));r.push({fullPath:n,outputBasePath:c}),t.add(c);continue}let a=!1;for(let l=1;l<=s.length&&!a;l++){let d=`${s.slice(-l).join("/")}/${o}`;if(!t.has(d))r.push({fullPath:n,outputBasePath:d}),t.add(d),a=!0}if(!a){let l=1,c;do c=`${s.join("/")}/${o}_${l++}`;while(t.has(c));r.push({fullPath:n,outputBasePath:c}),t.add(c)}}return r}function $e(e){return e.filter((r)=>G(r.fullPath))}function Ie(e,r){return`[dir]/${e}${r}`}function je(e){return`${e}-[hash].[ext]`}function Ae(e){return`${e}-[name]-[hash].[ext]`}var X=p(()=>{K()});import Ir from"path";import{loadConfig as De}from"coffi";async function Ue(e,r,t){return Array.isArray(e)&&"root"in e[0]?e.filter((n)=>t?t.includes(n.name):!0).map((n)=>({rootDir:Ir.resolve(r,n.root),options:Oe(n.config,"name",n.name)})):[{rootDir:r,options:e}]}async function He(e){let{config:r,filepath:t}=await De({name:"package",cwd:e,extensions:[".json"]});return{packageJson:r,path:t}}async function We(e,r){let{config:t,filepath:n}=await De({name:"tsconfig",cwd:e,extensions:[".json"],preferredPath:r});return{tsconfig:t,path:n}}var le=p(()=>{B()});import{isolatedDeclaration as jr}from"oxc-transform";async function Pe(e){try{let r=await Bun.file(e).text(),{code:t,errors:n}=jr(e,r);for(let o of n)Ye.push({error:o,sourceText:r,tsFile:e});return t}catch(r){return console.log(r),g.warn(`Failed to generate declaration for ${e}: ${L(r)}`),null}}function Ge(e){let r=!1;for(let{error:t,sourceText:n,tsFile:o}of Ye){if(!r&&!e)console.log(`
7
+ `);let i=t.labels[0],s=i?Ar(n,i.start):"",l=`${M(o)}${s}: ${Fr(t.message)}`;g[e?"warn":"error"](l),r=!0}if(r&&!e)throw console.log(`
8
+ `),console.log(ce.default.gray(`See ${ce.default.blue("https://bunup.dev/docs/troubleshooting/explicit-type-annotation-errors")} for details.`)),console.log(`
9
+ `),new W}function Ar(e,r){if(r===void 0)return"";let t=e.slice(0,r).split(`
10
+ `),n=t.length,o=t[t.length-1].length+1;return` (${n}:${o})`}function Fr(e){return e.replace(" with --isolatedDeclarations","").replace(" with --isolatedDeclaration","")}var ce,Ye;var ge=p(()=>{ce=T(v(),1);k();O();B();Ye=[]});import{resolveTsImportPath as _r}from"ts-import-resolver";var qe=(e,r,t)=>{let n=new Map;return{name:"bunup:virtual-dts",async resolveId(o,i){if(i===void 0)return n.set(o,e),o;let s=r.tsconfig?_r({path:o,importer:i,tsconfig:r.tsconfig,rootDir:t}):null;if(!s||!G(s))return null;let a=q(s);if(!a)return null;return n.set(a,s),a},load:{filter:{id:{include:[Te],exclude:[ve]}},async handler(o){if(P(o)){let i=n.get(o);if(!i)return null;let s=await Pe(i);if(!s)return null;return{code:s,moduleSideEffects:!1}}return null}},buildEnd(){n.clear()}}};var Ke=p(()=>{ge();K()});import{build as Dr}from"rolldown";import{dts as Ur}from"rolldown-plugin-dts";import Hr from"path";async function Ne(e,r,t,n){let o=Hr.resolve(n,e),i=q(o),s=typeof r.dts==="object"&&"resolve"in r.dts?r.dts.resolve:void 0,{output:a}=await Dr({input:i,write:!1,...t.path&&{resolve:{tsconfigFilename:t.path}},onwarn(c,d){if(["UNRESOLVED_IMPORT","CIRCULAR_DEPENDENCY","EMPTY_BUNDLE"].includes(c.code??""))return;d(c)},plugins:[qe(o,t,n),Ur({dtsInput:!0,emitDtsOnly:!0,resolve:s})]});Ge(!!r.watch);let l=a[0]?.code;if(!l)return g.warn(`Generated empty declaration file for entry "${o}"`,{muted:!0}),"";return l}var Xe=p(()=>{O();ge();K();Ke()});function Z(e){return{...Wr,...e}}function Ve(e){let{minify:r,minifyWhitespace:t,minifyIdentifiers:n,minifySyntax:o}=e,i=r===!0;return{whitespace:t??i,identifiers:n??i,syntax:o??i}}function Qe(e,r){return r==="cjs"?e:void 0}function Ze(e){if(e===!0)return"inline";return typeof e==="string"?e:void 0}function ze(e,r,t,n){return{...typeof t==="object"&&Object.keys(t).reduce((o,i)=>{let s=JSON.stringify(t[i]);return o[`process.env.${i}`]=s,o[`import.meta.env.${i}`]=s,o},{}),...e,...n==="cjs"&&(r===!0||typeof r==="object"&&r.importMetaUrl)&&{"import.meta.url":"importMetaUrl"}}}function Je(e,r){return e===void 0?r==="esm":e}function er(e){return typeof e==="string"?e:void 0}var Wr;var de=p(()=>{Wr={entry:[],format:["cjs"],outDir:"dist",target:"node",clean:!0}});function rr(e,r){return{name:"bunup:external-plugin",setup(t){t.onResolve({filter:/.*/},(n)=>{let o=n.path;if(ie(o,e,r))return{path:o,external:!0};return null})}}}var nr=p(()=>{se()});function tr({format:e,target:r,shims:t}){let o=Pr(t).map((i)=>ue[i]).filter((i)=>i.appliesTo(e,r));if(o.length===0)return{name:"bunup:inject-shims",setup(){}};return{name:"bunup:inject-shims",setup(i){i.onLoad({filter:Yr},async({path:s})=>{let a=await Bun.file(s).text(),l=o.filter((f)=>f.isNeededInFile(a));if(l.length===0)return;let{shebangLine:c,codeContent:d}=Gr(a),u=l.map((f)=>f.generateCode()).join("");return{contents:c+u+d}})}}}function Pr(e){if(e===!0)return Object.keys(ue);if(!e)return[];return Object.entries(e).filter(([r,t])=>t&&(r in ue)).map(([r])=>r)}function Gr(e){if(!e.startsWith("#!"))return{shebangLine:"",codeContent:e};let r=e.indexOf(`
11
+ `);return r===-1?{shebangLine:"",codeContent:e}:{shebangLine:e.slice(0,r+1),codeContent:e.slice(r+1)}}var Yr,ue;var or=p(()=>{B();Yr=/\.(js|ts|jsx|tsx|mts|cts)$/,ue={dirnameFilename:{appliesTo:(e,r)=>e==="esm"&&oe(r),isNeededInFile:(e)=>/\b__dirname\b/.test(e)||/\b__filename\b/.test(e),generateCode:()=>`import { fileURLToPath } from 'url';
12
12
  import { dirname } from 'path';
13
13
 
14
14
  const __filename = fileURLToPath(import.meta.url);
15
15
  const __dirname = dirname(__filename);
16
16
 
17
- `},importMetaUrl:{appliesTo:(n,r)=>n==="cjs"&&ln(r),isNeededInFile:(n)=>/\bimport\.meta\.url\b/.test(n),generateCode:()=>`import { pathToFileURL } from 'url';
17
+ `},importMetaUrl:{appliesTo:(e,r)=>e==="cjs"&&oe(r),isNeededInFile:(e)=>/\bimport\.meta\.url\b/.test(e),generateCode:()=>`import { pathToFileURL } from 'url';
18
18
 
19
19
  const importMetaUrl = pathToFileURL(__filename).href;
20
20
 
21
- `}}});function hr(n){if(!n)return[];return n.filter((r)=>r.type==="bun")}function wr(n){if(!n)return[];return n.filter((r)=>r.type==="bunup")}async function yr(n,r){if(!n)return;for(let t of n)if(t.hooks.onBuildStart)await t.hooks.onBuildStart(r)}async function Cr(n,r,t){if(!n)return;for(let e of n)if(e.hooks.onBuildDone)await e.hooks.onBuildDone({options:r,output:t})}var Sr={};Mr(Sr,{build:()=>Bn});async function Bn(n,r=process.cwd()){let t={files:[]},e=tn(n);if(!e.entry||e.entry.length===0||!e.outDir)throw new M("Nothing to build. Please make sure you have provided a proper bunup configuration or cli arguments.");if(e.clean)Un(r,e.outDir);V(e.silent);let{packageJson:o,path:i}=await Vn(r);if(o&&i)l.cli(`Using ${j(i,2)}`,{muted:!0,identifier:e.name,once:`${i}:${e.name}`});let s=wr(e.plugins);await yr(s,e);let c=K(e.entry),a=o?.type;if(!e.dtsOnly){let g=[dr(e,o),...hr(e.plugins).map((u)=>u.plugin)],m=e.format.flatMap((u)=>c.map(async(f)=>{let T=e.outputExtension?.({format:u,packageType:a,options:e,entry:f}).js??jn(u,a),h=await Bun.build({entrypoints:[`${r}/${f.fullEntryPath}`],format:u,naming:{entry:Fn(f.name,T)},splitting:ur(e.splitting,u),bytecode:lr(e.bytecode,u),define:mr(e.define,e.shims,e.env,u),minify:cr(e),outdir:`${r}/${e.outDir}`,target:e.target,sourcemap:e.sourcemap,loader:e.loader,drop:e.drop,banner:e.banner,footer:e.footer,publicPath:e.publicPath,env:fr(e.env),plugins:[...g,br({format:u,target:e.target,shims:e.shims})],throw:!1});if(!h.success)for(let S of h.logs){if(S.level==="error")throw new M(S.message);if(S.level==="warning")l.warn(S.message);else if(S.level==="info")l.info(S.message)}let _=Br(e.outDir,f.name,T),H=Or(r,_);t.files.push({fullPath:H,relativePathToOutputDir:_}),l.progress(u.toUpperCase(),_,{identifier:e.name})}));await Promise.all(m)}if(e.dts||e.dtsOnly){let g=await zn(r,e.preferredTsconfigPath);if(g.path)l.cli(`Using ${j(g.path,2)}`,{muted:!0,identifier:e.name,once:`${g.path}:${e.name}`});let m=e.format.filter((f)=>{if(f==="iife"&&!E(a)&&e.format.includes("cjs"))return!1;return!0}),u=typeof e.dts==="object"&&e.dts.entry?K(e.dts.entry):qn(c);try{await Promise.all(u.map(async(f)=>{let T=await ar(r,f.fullEntryPath,e,g,o);await Promise.all(m.map(async(h)=>{let _=e.outputExtension?.({format:h,packageType:a,options:e,entry:f}).dts??An(h,a),H=Br(e.outDir,f.name,_),S=Or(r,H);t.files.push({fullPath:S,relativePathToOutputDir:H}),await Bun.write(S,T),l.progress("DTS",H,{identifier:e.name})}))}))}catch(f){if(gn(f))throw f;throw new w(y(f))}}if(await Cr(s,e,t),e.onSuccess)await e.onSuccess(e)}function Br(n,r,t){return`${n}/${r}${t}`}function Or(n,r){return`${n}/${r}`}var On=p(()=>{gr();B();nn();bn();L();yn();pr();xr();k()});import{exec as fe}from"tinyexec";var G="0.5.6";var pn=W(v(),1);var kn="https://bunup.dev/docs/guide/cli-options";B();nn();L();function x(n){return(r,t)=>{t[n]=r===!0||r==="true"}}function O(n){return(r,t)=>{if(typeof r==="string")t[n]=r;else throw new C(`Option --${n} requires a string value`)}}function rn(n){return(r,t)=>{if(typeof r==="string")t[n]=r.split(",");else throw new C(`Option --${n} requires a string value`)}}function Gr(n){return(r,t)=>{if(typeof r==="boolean")t[n]=r;else if(typeof r==="string")if(r.toLowerCase()==="true"||r.toLowerCase()==="false")t[n]=r.toLowerCase()==="true";else t[n]=r;else throw new C(`Option --${n} requires a boolean or string value`)}}function Qr(){console.log(`
21
+ `}}});function ir(e){if(!e)return[];return e.filter((r)=>r.type==="bun")}function sr(e){if(!e)return[];return e.filter((r)=>r.type==="bunup")}async function ar(e,r){if(!e)return;for(let t of e)if(t.hooks.onBuildStart)await t.hooks.onBuildStart(r)}async function lr(e,r,t){if(!e)return;for(let n of e)if(n.hooks.onBuildDone)await n.hooks.onBuildDone({options:r,output:t})}var gr={};hr(gr,{build:()=>fe});async function fe(e,r=process.cwd()){let t={files:[]},n=Z(e);if(!n.entry||n.entry.length===0||!n.outDir)throw new E("Nothing to build. Please make sure you have provided a proper bunup configuration or cli arguments.");if(n.clean)ke(r,n.outDir);D(n.silent);let{packageJson:o,path:i}=await He(r);if(o&&i)g.cli(`Using ${M(i,2)}`,{muted:!0,identifier:n.name,once:`${i}:${n.name}`});let s=sr(n.plugins);await ar(s,n);let a=j(n.entry),l=o?.type;if(!n.dtsOnly){let c=[rr(n,o),...ir(n.plugins).map((u)=>u.plugin)],d=n.format.flatMap((u)=>a.map(async(f)=>{let R=n.outputExtension?.({format:u,packageType:l,options:n,entry:f}).js??Se(u,l),y=await Bun.build({entrypoints:[`${r}/${f.fullPath}`],format:u,naming:{entry:Ie(f.outputBasePath,R),chunk:je(f.outputBasePath),asset:Ae(f.outputBasePath)},splitting:Je(n.splitting,u),bytecode:Qe(n.bytecode,u),define:ze(n.define,n.shims,n.env,u),minify:Ve(n),outdir:`${r}/${n.outDir}`,target:n.target,sourcemap:Ze(n.sourcemap),loader:n.loader,drop:n.drop,banner:n.banner,footer:n.footer,publicPath:n.publicPath,env:er(n.env),plugins:[...c,tr({format:u,target:n.target,shims:n.shims})],throw:!1});if(!y.success)for(let b of y.logs){if(b.level==="error")throw new E(b.message);if(b.level==="warning")g.warn(b.message);else if(b.level==="info")g.info(b.message)}for(let b of y.outputs)t.files.push({fullPath:b.path,relativePathToRootDir:b.path.replace(`${r}/`,"")});let J=cr(n.outDir,f.outputBasePath,R);g.progress(u.toUpperCase(),J,{identifier:n.name})}));await Promise.all(d)}if(n.dts||n.dtsOnly){let c=await We(r,n.preferredTsconfigPath);if(c.path)g.cli(`Using ${M(c.path,2)}`,{muted:!0,identifier:n.name,once:`${c.path}:${n.name}`});let d=n.format.filter((f)=>{if(f==="iife"&&!I(l)&&n.format.includes("cjs"))return!1;return!0}),u=typeof n.dts==="object"&&n.dts.entry?j(n.dts.entry):$e(a);try{await Promise.all(u.map(async(f)=>{let R=await Ne(f.fullPath,n,c,r);await Promise.all(d.map(async(y)=>{let J=n.outputExtension?.({format:y,packageType:l,options:n,entry:f}).dts??Ee(y,l),b=cr(n.outDir,f.outputBasePath,J),pe=Kr(r,b);t.files.push({fullPath:pe,relativePathToRootDir:b}),await Bun.write(pe,R),g.progress("DTS",b,{identifier:n.name})}))}))}catch(f){if(ne(f))throw f;throw new U(L(f))}}if(await lr(s,n,t),n.onSuccess)await n.onSuccess(n)}function cr(e,r,t){return`${e}/${r}${t}`}function Kr(e,r){return`${e}/${r}`}var me=p(()=>{Xe();k();X();le();O();de();nr();or();B()});import{exec as Nr}from"tinyexec";var A="0.5.9";var ae=T(v(),1);var he="https://bunup.dev/docs/guide/cli-options";k();X();O();function h(e){return(r,t)=>{t[e]=r===!0||r==="true"}}function w(e){return(r,t)=>{if(typeof r==="string")t[e]=r;else throw new C(`Option --${e} requires a string value`)}}function V(e){return(r,t)=>{if(typeof r==="string")t[e]=r.split(",");else throw new C(`Option --${e} requires a string value`)}}function Tr(e){return(r,t)=>{if(typeof r==="boolean")t[e]=r;else if(typeof r==="string")if(r.toLowerCase()==="true"||r.toLowerCase()==="false")t[e]=r.toLowerCase()==="true";else t[e]=r;else throw new C(`Option --${e} requires a boolean or string value`)}}function vr(){console.log(`
22
22
  Bunup - \u26A1\uFE0F A blazing-fast build tool for your libraries built with Bun.
23
- `),console.log("For more information on available options, visit:"),console.log(`${pn.default.cyan(pn.default.underline(kn))}
24
- `),process.exit(0)}function Zr(){console.log(G),process.exit(0)}var Kn={name:{flags:["n","name"],handler:O("name")},format:{flags:["f","format"],handler:rn("format")},outDir:{flags:["o","out-dir"],handler:O("outDir")},minify:{flags:["m","minify"],handler:x("minify")},watch:{flags:["w","watch"],handler:x("watch")},dts:{flags:["d","dts"],handler:x("dts")},banner:{flags:["bn","banner"],handler:O("banner")},footer:{flags:["ft","footer"],handler:O("footer")},external:{flags:["e","external"],handler:rn("external")},sourcemap:{flags:["sm","sourcemap"],handler:Gr("sourcemap")},target:{flags:["t","target"],handler:O("target")},minifyWhitespace:{flags:["mw","minify-whitespace"],handler:x("minifyWhitespace")},minifyIdentifiers:{flags:["mi","minify-identifiers"],handler:x("minifyIdentifiers")},minifySyntax:{flags:["ms","minify-syntax"],handler:x("minifySyntax")},clean:{flags:["c","clean"],handler:x("clean")},splitting:{flags:["s","splitting"],handler:x("splitting")},noExternal:{flags:["ne","no-external"],handler:rn("noExternal")},preferredTsconfigPath:{flags:["tsconfig","preferred-tsconfig-path"],handler:O("preferredTsconfigPath")},bytecode:{flags:["bc","bytecode"],handler:x("bytecode")},dtsOnly:{flags:["do","dts-only"],handler:x("dtsOnly")},silent:{flags:["silent"],handler:x("silent")},config:{flags:["config"],handler:O("config")},publicPath:{flags:["pp","public-path"],handler:O("publicPath")},env:{flags:["env"],handler:O("env")},shims:{flags:["shims"],handler:x("shims")},onSuccess:{flags:["onSuccess"],handler:O("onSuccess")},filter:{flags:["filter"],handler:rn("filter")},entry:{flags:["entry"],handler:(n,r,t)=>{if(typeof n!=="string")throw new C(`Entry${t?` --entry.${t}`:""} requires a string value`);let e=r.entry||{};if(t){if(e[t])l.warn(`Duplicate entry name '${t}' provided via --entry.${t}. Overwriting previous entry.`);e[t]=n}else{let o=P(n);if(e[o])l.warn(`Duplicate entry name '${o}' derived from '${n}'. Overwriting previous entry.`);e[o]=n}r.entry=e}},resolveDts:{flags:["rd","resolve-dts"],handler:(n,r)=>{if(!r.dts)r.dts={};if(typeof r.dts==="boolean")r.dts={};if(typeof n==="string")if(n==="true"||n==="false")r.dts.resolve=n==="true";else r.dts.resolve=n.split(",");else r.dts.resolve=!0}},help:{flags:["h","help"],handler:()=>Qr()},version:{flags:["v","version"],handler:()=>Zr()}},en={};for(let n of Object.values(Kn))for(let r of n.flags)en[r]=n.handler;function Gn(n){let r={};for(let t=0;t<n.length;t++){let e=n[t];if(e.startsWith("--")){let o,i;if(e.includes("=")){let[s,c]=e.slice(2).split("=",2);o=s,i=c}else{o=e.slice(2);let s=n[t+1];if(i=s&&!s.startsWith("-")?s:!0,typeof i==="string")t++}if(o.includes(".")){let[s,c]=o.split(".",2),a=en[s];if(a)a(i,r,c);else throw new C(`Unknown option: --${o}`)}else{let s=en[o];if(s)s(i,r);else throw new C(`Unknown option: --${o}`)}}else if(e.startsWith("-")){let o=e.slice(1),i=n[t+1],s=i&&!i.startsWith("-")?i:!0;if(typeof s==="string")t++;let c=en[o];if(c)c(s,r);else throw new C(`Unknown option: -${o}`)}else Kn.entry.handler(e,r,void 0)}return r}B();L();bn();k();import{loadConfig as de}from"coffi";On();B();nn();L();yn();k();import on from"path";async function Lr(n,r){let t=new Set,e=tn(n),o=K(e.entry);for(let g of o){let m=on.resolve(r,g.fullEntryPath),u=on.dirname(m);t.add(u)}let s=(await import("chokidar")).watch(Array.from(t),{persistent:!0,ignoreInitial:!0,atomic:!0,ignorePermissionErrors:!0,ignored:[/[\\/]\.git[\\/]/,/[\\/]node_modules[\\/]/,on.join(r,e.outDir)]}),c=!1,a=async(g=!1)=>{if(c)return;c=!0;try{let m=performance.now();if(await Bn({...e,entry:o.map((u)=>u.fullEntryPath),clean:!1},r),!g)l.cli(`\uD83D\uDCE6 Rebuild finished in ${X(performance.now()-m)}`)}catch(m){cn(m)}finally{c=!1}};s.on("change",(g)=>{let m=on.relative(r,g);l.cli(`File changed: ${m}`,{muted:!0,once:m}),a()}),s.on("error",(g)=>{throw new z(`Watcher error: ${y(g)}`)}),await a(!0)}async function pe(n=Bun.argv.slice(2)){let r=Gn(n);V(r.silent);let t=process.cwd(),{config:e,filepath:o}=await de({name:"bunup.config",extensions:[".ts",".js",".mjs",".cjs"],maxDepth:1,preferredPath:r.config,packageJsonProperty:"bunup"}),i=!e?[{rootDir:t,options:r}]:await Zn(e,t,r.filter);if(l.cli(`Using bunup v${G} and bun v${Bun.version}`,{muted:!0}),o)l.cli(`Using ${j(o,2)}`,{muted:!0});let s=performance.now();l.cli("Build started");let{build:c}=await Promise.resolve().then(() => (On(),Sr));await Promise.all(i.flatMap(({options:m,rootDir:u})=>{return Mn(m).map(async(T)=>{let h={...T,...be(r)};if(h.watch)await Lr(h,u);else await c(h,u)})}));let a=performance.now()-s,g=X(a);if(l.cli(`\u26A1\uFE0F Build completed in ${g}`),r.watch)l.cli("\uD83D\uDC40 Watching for file changes");if(r.onSuccess)l.cli(`Running command: ${r.onSuccess}`,{muted:!0}),await fe(r.onSuccess,[],{nodeOptions:{shell:!0,stdio:"inherit"}});if(!r.watch)process.exit(process.exitCode??0)}function be(n){return{...n,onSuccess:void 0,config:void 0}}pe().catch((n)=>$n(n));
23
+ `),console.log("For more information on available options, visit:"),console.log(`${ae.default.cyan(ae.default.underline(he))}
24
+ `),process.exit(0)}function $r(){console.log(A),process.exit(0)}var Fe={name:{flags:["n","name"],handler:w("name")},format:{flags:["f","format"],handler:V("format")},outDir:{flags:["o","out-dir"],handler:w("outDir")},minify:{flags:["m","minify"],handler:h("minify")},watch:{flags:["w","watch"],handler:h("watch")},dts:{flags:["d","dts"],handler:h("dts")},banner:{flags:["bn","banner"],handler:w("banner")},footer:{flags:["ft","footer"],handler:w("footer")},external:{flags:["e","external"],handler:V("external")},sourcemap:{flags:["sm","sourcemap"],handler:Tr("sourcemap")},target:{flags:["t","target"],handler:w("target")},minifyWhitespace:{flags:["mw","minify-whitespace"],handler:h("minifyWhitespace")},minifyIdentifiers:{flags:["mi","minify-identifiers"],handler:h("minifyIdentifiers")},minifySyntax:{flags:["ms","minify-syntax"],handler:h("minifySyntax")},clean:{flags:["c","clean"],handler:h("clean")},splitting:{flags:["s","splitting"],handler:h("splitting")},noExternal:{flags:["ne","no-external"],handler:V("noExternal")},preferredTsconfigPath:{flags:["tsconfig","preferred-tsconfig-path"],handler:w("preferredTsconfigPath")},bytecode:{flags:["bc","bytecode"],handler:h("bytecode")},dtsOnly:{flags:["do","dts-only"],handler:h("dtsOnly")},silent:{flags:["silent"],handler:h("silent")},config:{flags:["config"],handler:w("config")},publicPath:{flags:["pp","public-path"],handler:w("publicPath")},env:{flags:["env"],handler:w("env")},shims:{flags:["shims"],handler:h("shims")},onSuccess:{flags:["onSuccess"],handler:w("onSuccess")},filter:{flags:["filter"],handler:V("filter")},entry:{flags:["entry"],handler:(e,r,t)=>{if(typeof e!=="string")throw new C(`Entry${t?` --entry.${t}`:""} requires a string value`);let n=r.entry||{};if(t){if(n[t])g.warn(`Duplicate entry name '${t}' provided via --entry.${t}. Overwriting previous entry.`);n[t]=e}else{let o=N(e);if(n[o])g.warn(`Duplicate entry name '${o}' derived from '${e}'. Overwriting previous entry.`);n[o]=e}r.entry=n}},resolveDts:{flags:["rd","resolve-dts"],handler:(e,r)=>{if(!r.dts)r.dts={};if(typeof r.dts==="boolean")r.dts={};if(typeof e==="string")if(e==="true"||e==="false")r.dts.resolve=e==="true";else r.dts.resolve=e.split(",");else r.dts.resolve=!0}},help:{flags:["h","help"],handler:()=>vr()},version:{flags:["v","version"],handler:()=>$r()}},Q={};for(let e of Object.values(Fe))for(let r of e.flags)Q[r]=e.handler;function _e(e){let r={};for(let t=0;t<e.length;t++){let n=e[t];if(n.startsWith("--")){let o,i;if(n.includes("=")){let[s,a]=n.slice(2).split("=",2);o=s,i=a}else{o=n.slice(2);let s=e[t+1];if(i=s&&!s.startsWith("-")?s:!0,typeof i==="string")t++}if(o.includes(".")){let[s,a]=o.split(".",2),l=Q[s];if(l)l(i,r,a);else throw new C(`Unknown option: --${o}`)}else{let s=Q[o];if(s)s(i,r);else throw new C(`Unknown option: --${o}`)}}else if(n.startsWith("-")){let o=n.slice(1),i=e[t+1],s=i&&!i.startsWith("-")?i:!0;if(typeof s==="string")t++;let a=Q[o];if(a)a(s,r);else throw new C(`Unknown option: -${o}`)}else Fe.entry.handler(n,r,void 0)}return r}k();O();var ur=T(v(),1);le();B();import{loadConfig as Xr}from"coffi";me();k();X();O();de();B();import z from"path";async function dr(e,r){let t=new Set,n=Z(e),o=j(n.entry);for(let c of o){let d=z.resolve(r,c.fullPath),u=z.dirname(d);t.add(u)}let s=(await import("chokidar")).watch(Array.from(t),{persistent:!0,ignoreInitial:!0,atomic:!0,ignorePermissionErrors:!0,ignored:[/[\\/]\.git[\\/]/,/[\\/]node_modules[\\/]/,z.join(r,n.outDir)]}),a=!1,l=async(c=!1)=>{if(a)return;a=!0;try{let d=performance.now();if(await fe({...n,entry:o.map((u)=>u.fullPath),clean:!1},r),!c)g.cli(`\uD83D\uDCE6 Rebuild finished in ${Y(performance.now()-d)}`)}catch(d){te(d)}finally{a=!1}};s.on("change",(c)=>{let d=z.relative(r,c);g.cli(`File changed: ${d}`,{muted:!0,once:d}),l()}),s.on("error",(c)=>{throw new H(`Watcher error: ${L(c)}`)}),await l(!0)}async function Vr(e=Bun.argv.slice(2)){let r=_e(e);D(r.silent);let t=process.cwd(),{config:n,filepath:o}=await Xr({name:"bunup.config",extensions:[".ts",".js",".mjs",".cjs"],maxDepth:1,preferredPath:r.config,packageJsonProperty:"bunup"}),i=!n?[{rootDir:t,options:r}]:await Ue(n,t,r.filter);if(g.cli(`Using bunup v${A} and bun v${Bun.version}`,{muted:!0}),o)g.cli(`Using ${M(o,2)}`,{muted:!0});let s=performance.now();g.cli("Build started");let{build:a}=await Promise.resolve().then(() => (me(),gr));await Promise.all(i.flatMap(({options:d,rootDir:u})=>{return Be(d).map(async(R)=>{let y={...R,...Qr(r)};if(y.watch)await dr(y,u);else await a(y,u)})}));let l=performance.now()-s,c=Y(l);if(g.cli(`\u26A1\uFE0F Build completed in ${ur.default.green(c)}`),r.watch)g.cli("\uD83D\uDC40 Watching for file changes");if(r.onSuccess)g.cli(`Running command: ${r.onSuccess}`,{muted:!0}),await Nr(r.onSuccess,[],{nodeOptions:{shell:!0,stdio:"inherit"}});if(!r.watch)process.exit(process.exitCode??0)}function Qr(e){return{...e,onSuccess:void 0,config:void 0}}Vr().catch((e)=>Ce(e));
package/dist/index.d.ts CHANGED
@@ -2,8 +2,18 @@ import _Bun from "bun";
2
2
 
3
3
  //#region \0dts:/home/runner/work/bunup/bunup/packages/bunup/src/helpers/entry.d.ts
4
4
  type ProcessableEntry = {
5
- fullEntryPath: string
6
- name: string
5
+ fullPath: string
6
+ /**
7
+ * The relative path to the output directory.
8
+ *
9
+ * This is the path that will be used to name the output file.
10
+ *
11
+ * Examples:
12
+ * - "src/index.ts" → "index"
13
+ * - "src/plugins/index.ts" → "plugins/index"
14
+ * - etc.
15
+ */
16
+ outputBasePath: string
7
17
  };
8
18
 
9
19
  //#endregion
@@ -27,8 +37,8 @@ type BuildOutput = {
27
37
  files: Array<{
28
38
  /** Path to the generated file */
29
39
  fullPath: string
30
- /** Path to the generated file relative to the output directory */
31
- relativePathToOutputDir: string
40
+ /** Path to the generated file relative to the root directory */
41
+ relativePathToRootDir: string
32
42
  }>
33
43
  };
34
44
  /**
@@ -444,7 +454,7 @@ interface BuildOptions {
444
454
  *
445
455
  * @example
446
456
  * outputExtension: ({ format, entry }) => ({
447
- * js: entry.name === 'worker' ? '.worker.js' : `.${format}.js`,
457
+ * js: entry.outputBasePath === 'worker' ? '.worker.js' : `.${format}.js`,
448
458
  * dts: `.${format}.d.ts`
449
459
  * })
450
460
  */
package/dist/index.js CHANGED
@@ -1,17 +1,17 @@
1
1
  // @bun
2
- var Fr=Object.create;var{getPrototypeOf:Yr,defineProperty:V,getOwnPropertyNames:Kr}=Object;var qr=Object.prototype.hasOwnProperty;var F=(r,n,t)=>{t=r!=null?Fr(Yr(r)):{};let e=n||!r||!r.__esModule?V(t,"default",{value:r,enumerable:!0}):t;for(let o of Kr(r))if(!qr.call(e,o))V(e,o,{get:()=>r[o],enumerable:!0});return e};var Gr=(r,n)=>()=>(n||r((n={exports:{}}).exports,n),n.exports);var j=Gr((Sn,Y)=>{var $=process||{},X=$.argv||[],E=$.env||{},Qr=!(!!E.NO_COLOR||X.includes("--no-color"))&&(!!E.FORCE_COLOR||X.includes("--color")||$.platform==="win32"||($.stdout||{}).isTTY&&E.TERM!=="dumb"||!!E.CI),Zr=(r,n,t=r)=>(e)=>{let o=""+e,i=o.indexOf(n,r.length);return~i?r+zr(o,n,t,i)+n:r+o+n},zr=(r,n,t,e)=>{let o="",i=0;do o+=r.substring(i,e)+t,i=e+n.length,e=r.indexOf(n,i);while(~e);return o+r.substring(i)},J=(r=Qr)=>{let n=r?Zr:()=>String;return{isColorSupported:r,reset:n("\x1B[0m","\x1B[0m"),bold:n("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:n("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:n("\x1B[3m","\x1B[23m"),underline:n("\x1B[4m","\x1B[24m"),inverse:n("\x1B[7m","\x1B[27m"),hidden:n("\x1B[8m","\x1B[28m"),strikethrough:n("\x1B[9m","\x1B[29m"),black:n("\x1B[30m","\x1B[39m"),red:n("\x1B[31m","\x1B[39m"),green:n("\x1B[32m","\x1B[39m"),yellow:n("\x1B[33m","\x1B[39m"),blue:n("\x1B[34m","\x1B[39m"),magenta:n("\x1B[35m","\x1B[39m"),cyan:n("\x1B[36m","\x1B[39m"),white:n("\x1B[37m","\x1B[39m"),gray:n("\x1B[90m","\x1B[39m"),bgBlack:n("\x1B[40m","\x1B[49m"),bgRed:n("\x1B[41m","\x1B[49m"),bgGreen:n("\x1B[42m","\x1B[49m"),bgYellow:n("\x1B[43m","\x1B[49m"),bgBlue:n("\x1B[44m","\x1B[49m"),bgMagenta:n("\x1B[45m","\x1B[49m"),bgCyan:n("\x1B[46m","\x1B[49m"),bgWhite:n("\x1B[47m","\x1B[49m"),blackBright:n("\x1B[90m","\x1B[39m"),redBright:n("\x1B[91m","\x1B[39m"),greenBright:n("\x1B[92m","\x1B[39m"),yellowBright:n("\x1B[93m","\x1B[39m"),blueBright:n("\x1B[94m","\x1B[39m"),magentaBright:n("\x1B[95m","\x1B[39m"),cyanBright:n("\x1B[96m","\x1B[39m"),whiteBright:n("\x1B[97m","\x1B[39m"),bgBlackBright:n("\x1B[100m","\x1B[49m"),bgRedBright:n("\x1B[101m","\x1B[49m"),bgGreenBright:n("\x1B[102m","\x1B[49m"),bgYellowBright:n("\x1B[103m","\x1B[49m"),bgBlueBright:n("\x1B[104m","\x1B[49m"),bgMagentaBright:n("\x1B[105m","\x1B[49m"),bgCyanBright:n("\x1B[106m","\x1B[49m"),bgWhiteBright:n("\x1B[107m","\x1B[49m")}};Y.exports=J();Y.exports.createColors=J});function Hr(r){return r}function Dr(r){return r}import{build as Pr}from"rolldown";import{dts as rn}from"rolldown-plugin-dts";var Vr=F(j(),1);var c=F(j(),1),N=!1;function v(r){N=r??!1}class w{static instance;loggedOnceMessages=new Set;MAX_LABEL_LENGTH=3;cliColor=c.default.blue;mutedColor=c.default.dim;infoColor=c.default.cyan;warnColor=c.default.yellow;errorColor=c.default.red;defaultColor=c.default.white;progressFgColorMap={ESM:c.default.yellow,CJS:c.default.green,IIFE:c.default.magenta,DTS:c.default.blue};progressBgColorMap={ESM:c.default.bgYellow,CJS:c.default.bgGreen,IIFE:c.default.bgMagenta,DTS:c.default.bgBlue};labels={cli:"CLI",info:"INFO",warn:"WARN",error:"ERROR"};constructor(){}static getInstance(){if(!w.instance)w.instance=new w;return w.instance}dispose(){this.loggedOnceMessages.clear()}shouldLog(r){if(!r?.once)return!0;if(this.loggedOnceMessages.has(r.once))return!1;return this.loggedOnceMessages.add(r.once),!0}formatMessage({fgColor:r,bgColor:n,label:t,message:e,identifier:o,muted:i}){let s=" ".repeat(Math.max(0,this.MAX_LABEL_LENGTH-t.length)),u=i?this.mutedColor(e):e,g=o?` ${n(c.default.black(` ${o} `))}`:"";return`${r(t)} ${s}${u}${g}`}output(r,n={},t=console.log){if(N||!this.shouldLog(n))return;if(n.verticalSpace)t("");if(t(r),n.verticalSpace)t("")}cli(r,n={}){let t=this.formatMessage({fgColor:this.cliColor,bgColor:c.default.bgBlue,label:this.labels.cli,message:r,identifier:n.identifier,muted:n.muted});this.output(t,n)}info(r,n={}){let t=this.formatMessage({fgColor:this.infoColor,bgColor:c.default.bgCyan,label:this.labels.info,message:r,identifier:n.identifier,muted:n.muted});this.output(t,n)}warn(r,n={}){let t=this.formatMessage({fgColor:this.warnColor,bgColor:c.default.bgYellow,label:this.labels.warn,message:r,identifier:n.identifier,muted:n.muted});this.output(t,n,console.warn)}error(r,n={}){let t=this.formatMessage({fgColor:this.errorColor,bgColor:c.default.bgRed,label:this.labels.error,message:r,identifier:n.identifier,muted:n.muted});this.output(t,n,console.error)}getProgressFgColor(r){for(let[n,t]of Object.entries(this.progressFgColorMap))if(r.includes(n))return t;return this.defaultColor}getProgressBgColor(r){for(let[n,t]of Object.entries(this.progressBgColorMap))if(r.includes(n))return t;return c.default.bgWhite}progress(r,n,t={}){let e=this.getProgressFgColor(r),o=this.getProgressBgColor(r),i=this.formatMessage({fgColor:e,bgColor:o,label:r,message:n,identifier:t.identifier,muted:t.muted});this.output(i,t)}}var x=w.getInstance();class A extends Error{constructor(r){super(r);this.name="BunupError"}}class h extends A{constructor(r){super(r);this.name="BunupBuildError"}}class f extends A{constructor(r){super(r);this.name="BunupDTSBuildError"}}class _ extends A{constructor(r){super(r);this.name="BunupIsolatedDeclError"}}var l=(r)=>{if(r instanceof Error)return r.message;return String(r)};function P(r){return r instanceof _}import cr from"path";import{ResolverFactory as vr}from"oxc-resolver";import rr from"fs/promises";import Xr from"path";function nr(r,n){switch(r){case"esm":return R(n)?".js":".mjs";case"cjs":return R(n)?".cjs":".js";case"iife":return".global.js"}}function er(r,n){switch(r){case"esm":return R(n)?".d.ts":".d.mts";case"cjs":return R(n)?".d.cts":".d.ts";case"iife":return".d.ts"}}function K(r){return r==="node"||r==="bun"}function R(r){return r==="module"}function tr(r){if(!r)return[];return Array.from(new Set([...Object.keys(r.dependencies||{}),...Object.keys(r.peerDependencies||{})]))}function I(r,n=3){return r.split("/").slice(-n).join("/")}async function or(r,n){let t=Xr.join(r,n);try{await rr.rm(t,{recursive:!0,force:!0})}catch(e){throw new h(`Failed to clean output directory: ${e}`)}await rr.mkdir(t,{recursive:!0})}function Jr(r){return tr(r).map((n)=>new RegExp(`^${n}($|\\/|\\\\)`))}function ir(r,n){return typeof n==="string"?n===r:n.test(r)}function W(r,n,t){let o=Jr(t).some((s)=>s.test(r))||n.external?.some((s)=>ir(r,s)),i=n.noExternal?.some((s)=>ir(r,s));return o&&!i}import{resolveTsImportPath as Nr}from"ts-import-resolver";var O="\x00dts:",sr=(r,n,t)=>{return{name:"bunup:virtual-dts",async resolveId(e,o){if(q(e))return e;if(!o||!q(o))return null;let i=n.tsconfig?Nr({path:e,importer:M(o),tsconfig:n.tsconfig,rootDir:t}):null;if(!i)return null;let s=C(i);if(r.has(s))return U(s);return null},load(e){if(e.startsWith(O)){let o=M(e),i=r.get(o);if(i)return i}return null}}};var G=/\.(js|mjs|cjs|ts|mts|cts|tsx|jsx)$/;function T(r){return r.endsWith(".d.ts")||r.endsWith(".d.mts")||r.endsWith(".d.cts")}function gr(r){return G.test(r)&&!T(r)}function S(r){return[".ts",".mts",".cts",".tsx"].some((n)=>r.endsWith(n))&&!T(r)}function C(r){if(T(r))return r;if(r.endsWith(".mts"))return`${r.slice(0,-4)}.d.mts`;if(r.endsWith(".cts"))return`${r.slice(0,-4)}.d.cts`;if(G.test(r))return r.replace(G,".d.ts");return`${r}.d.ts`}function q(r){return r.startsWith(O)}function M(r){return r.replace(O,"")}function U(r){return`${O}${r}`}function mr(r,n){if(n===void 0)return"";let t=r.slice(0,n).split(`
3
- `),e=t.length,o=t[t.length-1].length+1;return` (${e}:${o})`}function ur(r,n,t,e){if(typeof e==="boolean"&&e)return!1;if(Array.isArray(e)){for(let o of e)if(typeof o==="string"&&r===o)return!1;else if(o instanceof RegExp&&o.test(r))return!1}return W(r,n,t)}var H;function ar(r,n){return{name:"bunup:types-resolve",buildStart(){H||=new vr({mainFields:["types","typings","module","main"],conditionNames:["types","typings","import","require"],extensions:[".d.ts",".d.mts",".d.cts",".ts",".mts",".cts"],...r.path&&{tsconfig:{configFile:r.path}},modules:["node_modules","node_modules/@types"]})},async resolveId(t,e){if(n===!1)return;if(t==="bun")return;let o=e?M(e):void 0;if(/\0/.test(t))return;if(Array.isArray(n)){if(!n.some((g)=>typeof g==="string"?g===t:g.test(t)))return}let i=o?cr.dirname(o):process.cwd(),{path:s}=await H.async(i,t);if(!s)return;if(gr(s)){let u=C(s);try{let{path:g}=await H.async(cr.dirname(s),u);if(g)return g}catch(g){}return}return s}}}async function br(r,n,t,e,o,i){let s=C(r),u=U(s),g=typeof t.dts==="object"&&"resolve"in t.dts?t.dts.resolve:void 0;try{let{output:m}=await Pr({input:u,output:{dir:t.outDir},write:!1,...o.path&&{resolve:{tsconfigFilename:o.path}},onwarn(p,b){if(["UNRESOLVED_IMPORT","CIRCULAR_DEPENDENCY","EMPTY_BUNDLE"].includes(p.code??""))return;b(p)},plugins:[sr(n,o,i),g&&ar(o,g),rn({dtsInput:!0,emitDtsOnly:!0})],external:(p)=>ur(p,t,e,g)});if(!m[0]?.code)return x.warn(`Generated empty declaration file for entry "${r}"`,{muted:!0}),"";return m[0].code}catch(m){throw new f(`DTS bundling failed for entry "${r}": ${l(m)}`)}}import{resolveTsImportPath as nn}from"ts-import-resolver";var en=/^\s*import\s+(?:[^'"]*?\s+from\s+)?['"]([^'"]+)['"]/gm,tn=/^\s*export\s+.*from\s+['"]([^'"]+)['"]/gm,on=/import\s*\(\s*['"]([^'"]+)['"]\s*\)/g,sn=/require\s*\(\s*['"]([^'"]+)['"]\s*\)/g,gn=/import\s+\w+\s*=\s*require\s*\(\s*['"]([^'"]+)['"]\s*\)/g,mn=/\/\/\/\s*<reference\s+path\s*=\s*['"]([^'"]+)['"]\s*\/>/g,un=/\/\/\/\s*<reference\s+types\s*=\s*['"]([^'"]+)['"]\s*\/>/g;function cn(r){let n=new Set,t=[en,tn,on,sn,gn,mn,un];for(let e of t){let o=r.matchAll(e);for(let i of o)if(i[1])n.add(i[1])}return n}async function pr(r,n,t){let e=new Set([r]),o=[r];while(o.length){let i=o.pop();if(!i)continue;try{let s=await Bun.file(i).text(),u=cn(s);for(let g of u){let m=n.tsconfig?nn({path:g,importer:i,tsconfig:n.tsconfig,rootDir:t}):null;if(!m||!(S(m)||T(m)))continue;if(!e.has(m))e.add(m),o.push(m)}}catch(s){x.warn(`Error processing ${i}: ${l(s)}`)}}return e}var D=F(j(),1);import{isolatedDeclaration as an}from"oxc-transform";async function xr(r,n){let t=!1,e=new Map;if(await Promise.all([...r].map(async(o)=>{try{let i=C(o);if(!await Bun.file(o).exists())return;let u=await Bun.file(o).text(),{code:g,errors:m}=an(o,u);if(g)e.set(i,g);for(let p of m){if(!t&&!n)console.log(`
4
- `);let b=p.labels[0],a=b?mr(u,b.start):"",B=`${I(o)}${a}: ${bn(p.message)}`;x[n?"warn":"error"](B),t=!0}}catch(i){x.warn(`Failed to generate declaration for ${o}: ${l(i)}`)}})),t&&!n)throw console.log(`
5
- `),console.log(D.default.gray(`See ${D.default.blue("https://bunup.dev/docs/troubleshooting/explicit-type-annotation-errors")} for details.`)),console.log(`
6
- `),new _;return e}function bn(r){return r.replace(" with --isolatedDeclarations","").replace(" with --isolatedDeclaration","")}import fr from"fs/promises";import Q from"path";async function dr(r,n){let t=Q.resolve(r),e=Q.resolve(t,n);if(!await fr.exists(t))throw new f(`Root directory does not exist: ${t}`);if(!await Bun.file(e).exists())throw new f(`Entry file does not exist: ${e}`);if(!S(e))throw new f(`Entry file must be a TypeScript file: ${e}`);if(Q.relative(t,e).startsWith(".."))throw new f(`Entry file must be within rootDir: ${e}`);return{absoluteRootDir:t,absoluteEntry:e}}async function lr(r,n,t,e,o){let{absoluteEntry:i}=await dr(r,n),s=await pr(i,e,r),u=await xr(s,t.watch);return br(i,u,t,o,e,r)}import{basename as pn,dirname as xn,extname as fn}from"path";function Cr(r){let n=pn(r),t=fn(n);return t?n.slice(0,-t.length):n}function Z(r){if(typeof r==="string")return[{fullEntryPath:r,name:Cr(r)}];if(typeof r==="object"&&!Array.isArray(r))return Object.entries(r).map(([e,o])=>({fullEntryPath:o,name:e}));let n=[],t=new Set;for(let e of r){let o=Cr(e);if(!t.has(o)){n.push({fullEntryPath:e,name:o}),t.add(o);continue}let s=xn(e).split("/").filter((g)=>g!=="."&&g!=="");if(s.length===0){let g=1,m;do m=`${o}_${g++}`;while(t.has(m));n.push({fullEntryPath:e,name:m}),t.add(m);continue}let u=!1;for(let g=1;g<=s.length&&!u;g++){let p=`${s.slice(-g).join("/")}/${o}`;if(!t.has(p))n.push({fullEntryPath:e,name:p}),t.add(p),u=!0}if(!u){let g=1,m;do m=`${s.join("/")}/${o}_${g++}`;while(t.has(m));n.push({fullEntryPath:e,name:m}),t.add(m)}}return n}function Br(r){return r.filter((n)=>S(n.fullEntryPath))}function wr(r,n){return`[dir]/${r}${n}`}import{loadConfig as hr}from"coffi";async function Rr(r){let{config:n,filepath:t}=await hr({name:"package",cwd:r,extensions:[".json"]});return{packageJson:n,path:t}}async function Sr(r,n){let{config:t,filepath:e}=await hr({name:"tsconfig",cwd:r,extensions:[".json"],preferredPath:n});return{tsconfig:t,path:e}}var dn={entry:[],format:["cjs"],outDir:"dist",target:"node",clean:!0};function kr(r){return{...dn,...r}}function Lr(r){let{minify:n,minifyWhitespace:t,minifyIdentifiers:e,minifySyntax:o}=r,i=n===!0;return{whitespace:t??i,identifiers:e??i,syntax:o??i}}function yr(r,n){return n==="cjs"?r:void 0}function Ir(r,n,t,e){return{...typeof t==="object"&&Object.keys(t).reduce((o,i)=>{let s=JSON.stringify(t[i]);return o[`process.env.${i}`]=s,o[`import.meta.env.${i}`]=s,o},{}),...r,...e==="cjs"&&(n===!0||typeof n==="object"&&n.importMetaUrl)&&{"import.meta.url":"importMetaUrl"}}}function Mr(r,n){return r===void 0?n==="esm":r}function Or(r){return typeof r==="string"?r:void 0}function Tr(r,n){return{name:"bunup:external-plugin",setup(t){t.onResolve({filter:/.*/},(e)=>{let o=e.path;if(W(o,r,n))return{path:o,external:!0};return null})}}}var ln=/\.(js|ts|jsx|tsx|mts|cts)$/,z={dirnameFilename:{appliesTo:(r,n)=>r==="esm"&&K(n),isNeededInFile:(r)=>/\b__dirname\b/.test(r)||/\b__filename\b/.test(r),generateCode:()=>`import { fileURLToPath } from 'url';
2
+ var Ir=Object.create;var{getPrototypeOf:Tr,defineProperty:Y,getOwnPropertyNames:kr}=Object;var Fr=Object.prototype.hasOwnProperty;var F=(r,e,t)=>{t=r!=null?Ir(Tr(r)):{};let n=e||!r||!r.__esModule?Y(t,"default",{value:r,enumerable:!0}):t;for(let o of kr(r))if(!Fr.call(n,o))Y(n,o,{get:()=>r[o],enumerable:!0});return n};var jr=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports);var O=jr((se,j)=>{var S=process||{},G=S.argv||[],E=S.env||{},Ar=!(!!E.NO_COLOR||G.includes("--no-color"))&&(!!E.FORCE_COLOR||G.includes("--color")||S.platform==="win32"||(S.stdout||{}).isTTY&&E.TERM!=="dumb"||!!E.CI),_r=(r,e,t=r)=>(n)=>{let o=""+n,i=o.indexOf(e,r.length);return~i?r+vr(o,e,t,i)+e:r+o+e},vr=(r,e,t,n)=>{let o="",i=0;do o+=r.substring(i,n)+t,i=n+e.length,n=r.indexOf(e,i);while(~n);return o+r.substring(i)},H=(r=Ar)=>{let e=r?_r:()=>String;return{isColorSupported:r,reset:e("\x1B[0m","\x1B[0m"),bold:e("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:e("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:e("\x1B[3m","\x1B[23m"),underline:e("\x1B[4m","\x1B[24m"),inverse:e("\x1B[7m","\x1B[27m"),hidden:e("\x1B[8m","\x1B[28m"),strikethrough:e("\x1B[9m","\x1B[29m"),black:e("\x1B[30m","\x1B[39m"),red:e("\x1B[31m","\x1B[39m"),green:e("\x1B[32m","\x1B[39m"),yellow:e("\x1B[33m","\x1B[39m"),blue:e("\x1B[34m","\x1B[39m"),magenta:e("\x1B[35m","\x1B[39m"),cyan:e("\x1B[36m","\x1B[39m"),white:e("\x1B[37m","\x1B[39m"),gray:e("\x1B[90m","\x1B[39m"),bgBlack:e("\x1B[40m","\x1B[49m"),bgRed:e("\x1B[41m","\x1B[49m"),bgGreen:e("\x1B[42m","\x1B[49m"),bgYellow:e("\x1B[43m","\x1B[49m"),bgBlue:e("\x1B[44m","\x1B[49m"),bgMagenta:e("\x1B[45m","\x1B[49m"),bgCyan:e("\x1B[46m","\x1B[49m"),bgWhite:e("\x1B[47m","\x1B[49m"),blackBright:e("\x1B[90m","\x1B[39m"),redBright:e("\x1B[91m","\x1B[39m"),greenBright:e("\x1B[92m","\x1B[39m"),yellowBright:e("\x1B[93m","\x1B[39m"),blueBright:e("\x1B[94m","\x1B[39m"),magentaBright:e("\x1B[95m","\x1B[39m"),cyanBright:e("\x1B[96m","\x1B[39m"),whiteBright:e("\x1B[97m","\x1B[39m"),bgBlackBright:e("\x1B[100m","\x1B[49m"),bgRedBright:e("\x1B[101m","\x1B[49m"),bgGreenBright:e("\x1B[102m","\x1B[49m"),bgYellowBright:e("\x1B[103m","\x1B[49m"),bgBlueBright:e("\x1B[104m","\x1B[49m"),bgMagentaBright:e("\x1B[105m","\x1B[49m"),bgCyanBright:e("\x1B[106m","\x1B[49m"),bgWhiteBright:e("\x1B[107m","\x1B[49m")}};j.exports=H();j.exports.createColors=H});function $r(r){return r}function Dr(r){return r}import{build as Nr}from"rolldown";import{dts as qr}from"rolldown-plugin-dts";import Qr from"path";var l=F(O(),1),K=!1;function X(r){K=r??!1}class x{static instance;loggedOnceMessages=new Set;MAX_LABEL_LENGTH=3;cliColor=l.default.blue;mutedColor=l.default.dim;infoColor=l.default.cyan;warnColor=l.default.yellow;errorColor=l.default.red;defaultColor=l.default.white;progressFgColorMap={ESM:l.default.yellow,CJS:l.default.green,IIFE:l.default.magenta,DTS:l.default.blue};progressBgColorMap={ESM:l.default.bgYellow,CJS:l.default.bgGreen,IIFE:l.default.bgMagenta,DTS:l.default.bgBlue};labels={cli:"CLI",info:"INFO",warn:"WARN",error:"ERROR"};constructor(){}static getInstance(){if(!x.instance)x.instance=new x;return x.instance}dispose(){this.loggedOnceMessages.clear()}shouldLog(r){if(!r?.once)return!0;if(this.loggedOnceMessages.has(r.once))return!1;return this.loggedOnceMessages.add(r.once),!0}formatMessage({fgColor:r,bgColor:e,label:t,message:n,identifier:o,muted:i}){let s=" ".repeat(Math.max(0,this.MAX_LABEL_LENGTH-t.length)),c=i?this.mutedColor(n):n,g=o?` ${e(l.default.black(` ${o} `))}`:"";return`${r(t)} ${s}${c}${g}`}output(r,e={},t=console.log){if(K||!this.shouldLog(e))return;if(e.verticalSpace)t("");if(t(r),e.verticalSpace)t("")}cli(r,e={}){let t=this.formatMessage({fgColor:this.cliColor,bgColor:l.default.bgBlue,label:this.labels.cli,message:r,identifier:e.identifier,muted:e.muted});this.output(t,e)}info(r,e={}){let t=this.formatMessage({fgColor:this.infoColor,bgColor:l.default.bgCyan,label:this.labels.info,message:r,identifier:e.identifier,muted:e.muted});this.output(t,e)}warn(r,e={}){let t=this.formatMessage({fgColor:this.warnColor,bgColor:l.default.bgYellow,label:this.labels.warn,message:r,identifier:e.identifier,muted:e.muted});this.output(t,e,console.warn)}error(r,e={}){let t=this.formatMessage({fgColor:this.errorColor,bgColor:l.default.bgRed,label:this.labels.error,message:r,identifier:e.identifier,muted:e.muted});this.output(t,e,console.error)}getProgressFgColor(r){for(let[e,t]of Object.entries(this.progressFgColorMap))if(r.includes(e))return t;return this.defaultColor}getProgressBgColor(r){for(let[e,t]of Object.entries(this.progressBgColorMap))if(r.includes(e))return t;return l.default.bgWhite}progress(r,e,t={}){let n=this.getProgressFgColor(r),o=this.getProgressBgColor(r),i=this.formatMessage({fgColor:n,bgColor:o,label:r,message:e,identifier:t.identifier,muted:t.muted});this.output(i,t)}}var b=x.getInstance();var A=F(O(),1);import{isolatedDeclaration as Yr}from"oxc-transform";var Ur=F(O(),1);class M extends Error{constructor(r){super(r);this.name="BunupError"}}class h extends M{constructor(r){super(r);this.name="BunupBuildError"}}class $ extends M{constructor(r){super(r);this.name="BunupDTSBuildError"}}class R extends M{constructor(r){super(r);this.name="BunupIsolatedDeclError"}}var y=(r)=>{if(r instanceof Error)return r.message;return String(r)};function N(r){return r instanceof R}import q from"fs/promises";import Wr from"path";function Q(r,e){switch(r){case"esm":return C(e)?".js":".mjs";case"cjs":return C(e)?".cjs":".js";case"iife":return".global.js"}}function V(r,e){switch(r){case"esm":return C(e)?".d.ts":".d.mts";case"cjs":return C(e)?".d.cts":".d.ts";case"iife":return".d.ts"}}function D(r){return r==="node"||r==="bun"}function C(r){return r==="module"}function Z(r){if(!r)return[];return Array.from(new Set([...Object.keys(r.dependencies||{}),...Object.keys(r.peerDependencies||{})]))}function B(r,e=3){return r.split("/").slice(-e).join("/")}async function z(r,e){let t=Wr.join(r,e);try{await q.rm(t,{recursive:!0,force:!0})}catch(n){throw new h(`Failed to clean output directory: ${n}`)}await q.mkdir(t,{recursive:!0})}var J=[];async function P(r){try{let e=await Bun.file(r).text(),{code:t,errors:n}=Yr(r,e);for(let o of n)J.push({error:o,sourceText:e,tsFile:r});return t}catch(e){return console.log(e),b.warn(`Failed to generate declaration for ${r}: ${y(e)}`),null}}function rr(r){let e=!1;for(let{error:t,sourceText:n,tsFile:o}of J){if(!e&&!r)console.log(`
3
+ `);let i=t.labels[0],s=i?Gr(n,i.start):"",g=`${B(o)}${s}: ${Hr(t.message)}`;b[r?"warn":"error"](g),e=!0}if(e&&!r)throw console.log(`
4
+ `),console.log(A.default.gray(`See ${A.default.blue("https://bunup.dev/docs/troubleshooting/explicit-type-annotation-errors")} for details.`)),console.log(`
5
+ `),new R}function Gr(r,e){if(e===void 0)return"";let t=r.slice(0,e).split(`
6
+ `),n=t.length,o=t[t.length-1].length+1;return` (${n}:${o})`}function Hr(r){return r.replace(" with --isolatedDeclarations","").replace(" with --isolatedDeclaration","")}function Kr(r){return Z(r).map((e)=>new RegExp(`^${e}($|\\/|\\\\)`))}function er(r,e){return typeof e==="string"?e===r:e.test(r)}function _(r,e,t){let o=Kr(t).some((s)=>s.test(r))||e.external?.some((s)=>er(r,s)),i=e.noExternal?.some((s)=>er(r,s));return o&&!i}var tr=/\.(d\.ts|d\.mts|d\.cts|ts|mts|cts|tsx)$/,or=/[\\/]node_modules[\\/]/,nr=/\.(js|mjs|cjs|ts|mts|cts|tsx|jsx)$/;function L(r){return r.endsWith(".d.ts")||r.endsWith(".d.mts")||r.endsWith(".d.cts")}function I(r){return[".ts",".mts",".cts",".tsx"].some((e)=>r.endsWith(e))&&!L(r)}function T(r){if(L(r))return r;if(r.endsWith(".mts"))return`${r.slice(0,-4)}.d.mts`;if(r.endsWith(".cts"))return`${r.slice(0,-4)}.d.cts`;if(nr.test(r))return r.replace(nr,".d.ts");return`${r}.d.ts`}import{resolveTsImportPath as Xr}from"ts-import-resolver";var ir=(r,e,t)=>{let n=new Map;return{name:"bunup:virtual-dts",async resolveId(o,i){if(i===void 0)return n.set(o,r),o;let s=e.tsconfig?Xr({path:o,importer:i,tsconfig:e.tsconfig,rootDir:t}):null;if(!s||!I(s))return null;let c=T(s);if(!c)return null;return n.set(c,s),c},load:{filter:{id:{include:[tr],exclude:[or]}},async handler(o){if(L(o)){let i=n.get(o);if(!i)return null;let s=await P(i);if(!s)return null;return{code:s,moduleSideEffects:!1}}return null}},buildEnd(){n.clear()}}};async function sr(r,e,t,n){let o=Qr.resolve(n,r),i=T(o),s=typeof e.dts==="object"&&"resolve"in e.dts?e.dts.resolve:void 0,{output:c}=await Nr({input:i,write:!1,...t.path&&{resolve:{tsconfigFilename:t.path}},onwarn(a,f){if(["UNRESOLVED_IMPORT","CIRCULAR_DEPENDENCY","EMPTY_BUNDLE"].includes(a.code??""))return;f(a)},plugins:[ir(o,t,n),qr({dtsInput:!0,emitDtsOnly:!0,resolve:s})]});rr(!!e.watch);let g=c[0]?.code;if(!g)return b.warn(`Generated empty declaration file for entry "${o}"`,{muted:!0}),"";return g}import{basename as Vr,dirname as Zr,extname as zr}from"path";function gr(r){let e=Vr(r),t=zr(e);return t?e.slice(0,-t.length):e}function v(r){if(typeof r==="string")return[{fullPath:r,outputBasePath:gr(r)}];if(typeof r==="object"&&!Array.isArray(r))return Object.entries(r).map(([n,o])=>({fullPath:o,outputBasePath:n}));let e=[],t=new Set;for(let n of r){let o=gr(n);if(!t.has(o)){e.push({fullPath:n,outputBasePath:o}),t.add(o);continue}let s=Zr(n).split("/").filter((g)=>g!=="."&&g!=="");if(s.length===0){let g=1,a;do a=`${o}_${g++}`;while(t.has(a));e.push({fullPath:n,outputBasePath:a}),t.add(a);continue}let c=!1;for(let g=1;g<=s.length&&!c;g++){let f=`${s.slice(-g).join("/")}/${o}`;if(!t.has(f))e.push({fullPath:n,outputBasePath:f}),t.add(f),c=!0}if(!c){let g=1,a;do a=`${s.join("/")}/${o}_${g++}`;while(t.has(a));e.push({fullPath:n,outputBasePath:a}),t.add(a)}}return e}function ar(r){return r.filter((e)=>I(e.fullPath))}function lr(r,e){return`[dir]/${r}${e}`}function ur(r){return`${r}-[hash].[ext]`}function cr(r){return`${r}-[name]-[hash].[ext]`}import{loadConfig as dr}from"coffi";async function mr(r){let{config:e,filepath:t}=await dr({name:"package",cwd:r,extensions:[".json"]});return{packageJson:e,path:t}}async function br(r,e){let{config:t,filepath:n}=await dr({name:"tsconfig",cwd:r,extensions:[".json"],preferredPath:e});return{tsconfig:t,path:n}}var Jr={entry:[],format:["cjs"],outDir:"dist",target:"node",clean:!0};function fr(r){return{...Jr,...r}}function pr(r){let{minify:e,minifyWhitespace:t,minifyIdentifiers:n,minifySyntax:o}=r,i=e===!0;return{whitespace:t??i,identifiers:n??i,syntax:o??i}}function xr(r,e){return e==="cjs"?r:void 0}function hr(r){if(r===!0)return"inline";return typeof r==="string"?r:void 0}function Cr(r,e,t,n){return{...typeof t==="object"&&Object.keys(t).reduce((o,i)=>{let s=JSON.stringify(t[i]);return o[`process.env.${i}`]=s,o[`import.meta.env.${i}`]=s,o},{}),...r,...n==="cjs"&&(e===!0||typeof e==="object"&&e.importMetaUrl)&&{"import.meta.url":"importMetaUrl"}}}function Br(r,e){return r===void 0?e==="esm":r}function wr(r){return typeof r==="string"?r:void 0}function Er(r,e){return{name:"bunup:external-plugin",setup(t){t.onResolve({filter:/.*/},(n)=>{let o=n.path;if(_(o,r,e))return{path:o,external:!0};return null})}}}var Pr=/\.(js|ts|jsx|tsx|mts|cts)$/,U={dirnameFilename:{appliesTo:(r,e)=>r==="esm"&&D(e),isNeededInFile:(r)=>/\b__dirname\b/.test(r)||/\b__filename\b/.test(r),generateCode:()=>`import { fileURLToPath } from 'url';
7
7
  import { dirname } from 'path';
8
8
 
9
9
  const __filename = fileURLToPath(import.meta.url);
10
10
  const __dirname = dirname(__filename);
11
11
 
12
- `},importMetaUrl:{appliesTo:(r,n)=>r==="cjs"&&K(n),isNeededInFile:(r)=>/\bimport\.meta\.url\b/.test(r),generateCode:()=>`import { pathToFileURL } from 'url';
12
+ `},importMetaUrl:{appliesTo:(r,e)=>r==="cjs"&&D(e),isNeededInFile:(r)=>/\bimport\.meta\.url\b/.test(r),generateCode:()=>`import { pathToFileURL } from 'url';
13
13
 
14
14
  const importMetaUrl = pathToFileURL(__filename).href;
15
15
 
16
- `}};function Er({format:r,target:n,shims:t}){let o=Cn(t).map((i)=>z[i]).filter((i)=>i.appliesTo(r,n));if(o.length===0)return{name:"bunup:inject-shims",setup(){}};return{name:"bunup:inject-shims",setup(i){i.onLoad({filter:ln},async({path:s})=>{let u=await Bun.file(s).text(),g=o.filter((a)=>a.isNeededInFile(u));if(g.length===0)return;let{shebangLine:m,codeContent:p}=Bn(u),b=g.map((a)=>a.generateCode()).join("");return{contents:m+b+p}})}}}function Cn(r){if(r===!0)return Object.keys(z);if(!r)return[];return Object.entries(r).filter(([n,t])=>t&&(n in z)).map(([n])=>n)}function Bn(r){if(!r.startsWith("#!"))return{shebangLine:"",codeContent:r};let n=r.indexOf(`
17
- `);return n===-1?{shebangLine:"",codeContent:r}:{shebangLine:r.slice(0,n+1),codeContent:r.slice(n+1)}}function $r(r){if(!r)return[];return r.filter((n)=>n.type==="bun")}function jr(r){if(!r)return[];return r.filter((n)=>n.type==="bunup")}async function Ar(r,n){if(!r)return;for(let t of r)if(t.hooks.onBuildStart)await t.hooks.onBuildStart(n)}async function _r(r,n,t){if(!r)return;for(let e of r)if(e.hooks.onBuildDone)await e.hooks.onBuildDone({options:n,output:t})}async function wn(r,n=process.cwd()){let t={files:[]},e=kr(r);if(!e.entry||e.entry.length===0||!e.outDir)throw new h("Nothing to build. Please make sure you have provided a proper bunup configuration or cli arguments.");if(e.clean)or(n,e.outDir);v(e.silent);let{packageJson:o,path:i}=await Rr(n);if(o&&i)x.cli(`Using ${I(i,2)}`,{muted:!0,identifier:e.name,once:`${i}:${e.name}`});let s=jr(e.plugins);await Ar(s,e);let u=Z(e.entry),g=o?.type;if(!e.dtsOnly){let m=[Tr(e,o),...$r(e.plugins).map((b)=>b.plugin)],p=e.format.flatMap((b)=>u.map(async(a)=>{let k=e.outputExtension?.({format:b,packageType:g,options:e,entry:a}).js??nr(b,g),B=await Bun.build({entrypoints:[`${n}/${a.fullEntryPath}`],format:b,naming:{entry:wr(a.name,k)},splitting:Mr(e.splitting,b),bytecode:yr(e.bytecode,b),define:Ir(e.define,e.shims,e.env,b),minify:Lr(e),outdir:`${n}/${e.outDir}`,target:e.target,sourcemap:e.sourcemap,loader:e.loader,drop:e.drop,banner:e.banner,footer:e.footer,publicPath:e.publicPath,env:Or(e.env),plugins:[...m,Er({format:b,target:e.target,shims:e.shims})],throw:!1});if(!B.success)for(let d of B.logs){if(d.level==="error")throw new h(d.message);if(d.level==="warning")x.warn(d.message);else if(d.level==="info")x.info(d.message)}let L=Wr(e.outDir,a.name,k),y=Ur(n,L);t.files.push({fullPath:y,relativePathToOutputDir:L}),x.progress(b.toUpperCase(),L,{identifier:e.name})}));await Promise.all(p)}if(e.dts||e.dtsOnly){let m=await Sr(n,e.preferredTsconfigPath);if(m.path)x.cli(`Using ${I(m.path,2)}`,{muted:!0,identifier:e.name,once:`${m.path}:${e.name}`});let p=e.format.filter((a)=>{if(a==="iife"&&!R(g)&&e.format.includes("cjs"))return!1;return!0}),b=typeof e.dts==="object"&&e.dts.entry?Z(e.dts.entry):Br(u);try{await Promise.all(b.map(async(a)=>{let k=await lr(n,a.fullEntryPath,e,m,o);await Promise.all(p.map(async(B)=>{let L=e.outputExtension?.({format:B,packageType:g,options:e,entry:a}).dts??er(B,g),y=Wr(e.outDir,a.name,L),d=Ur(n,y);t.files.push({fullPath:d,relativePathToOutputDir:y}),await Bun.write(d,k),x.progress("DTS",y,{identifier:e.name})}))}))}catch(a){if(P(a))throw a;throw new f(l(a))}}if(await _r(s,e,t),e.onSuccess)await e.onSuccess(e)}function Wr(r,n,t){return`${r}/${n}${t}`}function Ur(r,n){return`${r}/${n}`}export{Dr as defineWorkspace,Hr as defineConfig,wn as build};
16
+ `}};function Sr({format:r,target:e,shims:t}){let o=re(t).map((i)=>U[i]).filter((i)=>i.appliesTo(r,e));if(o.length===0)return{name:"bunup:inject-shims",setup(){}};return{name:"bunup:inject-shims",setup(i){i.onLoad({filter:Pr},async({path:s})=>{let c=await Bun.file(s).text(),g=o.filter((u)=>u.isNeededInFile(c));if(g.length===0)return;let{shebangLine:a,codeContent:f}=ee(c),d=g.map((u)=>u.generateCode()).join("");return{contents:a+d+f}})}}}function re(r){if(r===!0)return Object.keys(U);if(!r)return[];return Object.entries(r).filter(([e,t])=>t&&(e in U)).map(([e])=>e)}function ee(r){if(!r.startsWith("#!"))return{shebangLine:"",codeContent:r};let e=r.indexOf(`
17
+ `);return e===-1?{shebangLine:"",codeContent:r}:{shebangLine:r.slice(0,e+1),codeContent:r.slice(e+1)}}function Or(r){if(!r)return[];return r.filter((e)=>e.type==="bun")}function Mr(r){if(!r)return[];return r.filter((e)=>e.type==="bunup")}async function Rr(r,e){if(!r)return;for(let t of r)if(t.hooks.onBuildStart)await t.hooks.onBuildStart(e)}async function yr(r,e,t){if(!r)return;for(let n of r)if(n.hooks.onBuildDone)await n.hooks.onBuildDone({options:e,output:t})}async function ne(r,e=process.cwd()){let t={files:[]},n=fr(r);if(!n.entry||n.entry.length===0||!n.outDir)throw new h("Nothing to build. Please make sure you have provided a proper bunup configuration or cli arguments.");if(n.clean)z(e,n.outDir);X(n.silent);let{packageJson:o,path:i}=await mr(e);if(o&&i)b.cli(`Using ${B(i,2)}`,{muted:!0,identifier:n.name,once:`${i}:${n.name}`});let s=Mr(n.plugins);await Rr(s,n);let c=v(n.entry),g=o?.type;if(!n.dtsOnly){let a=[Er(n,o),...Or(n.plugins).map((d)=>d.plugin)],f=n.format.flatMap((d)=>c.map(async(u)=>{let w=n.outputExtension?.({format:d,packageType:g,options:n,entry:u}).js??Q(d,g),p=await Bun.build({entrypoints:[`${e}/${u.fullPath}`],format:d,naming:{entry:lr(u.outputBasePath,w),chunk:ur(u.outputBasePath),asset:cr(u.outputBasePath)},splitting:Br(n.splitting,d),bytecode:xr(n.bytecode,d),define:Cr(n.define,n.shims,n.env,d),minify:pr(n),outdir:`${e}/${n.outDir}`,target:n.target,sourcemap:hr(n.sourcemap),loader:n.loader,drop:n.drop,banner:n.banner,footer:n.footer,publicPath:n.publicPath,env:wr(n.env),plugins:[...a,Sr({format:d,target:n.target,shims:n.shims})],throw:!1});if(!p.success)for(let m of p.logs){if(m.level==="error")throw new h(m.message);if(m.level==="warning")b.warn(m.message);else if(m.level==="info")b.info(m.message)}for(let m of p.outputs)t.files.push({fullPath:m.path,relativePathToRootDir:m.path.replace(`${e}/`,"")});let k=Lr(n.outDir,u.outputBasePath,w);b.progress(d.toUpperCase(),k,{identifier:n.name})}));await Promise.all(f)}if(n.dts||n.dtsOnly){let a=await br(e,n.preferredTsconfigPath);if(a.path)b.cli(`Using ${B(a.path,2)}`,{muted:!0,identifier:n.name,once:`${a.path}:${n.name}`});let f=n.format.filter((u)=>{if(u==="iife"&&!C(g)&&n.format.includes("cjs"))return!1;return!0}),d=typeof n.dts==="object"&&n.dts.entry?v(n.dts.entry):ar(c);try{await Promise.all(d.map(async(u)=>{let w=await sr(u.fullPath,n,a,e);await Promise.all(f.map(async(p)=>{let k=n.outputExtension?.({format:p,packageType:g,options:n,entry:u}).dts??V(p,g),m=Lr(n.outDir,u.outputBasePath,k),W=te(e,m);t.files.push({fullPath:W,relativePathToRootDir:m}),await Bun.write(W,w),b.progress("DTS",m,{identifier:n.name})}))}))}catch(u){if(N(u))throw u;throw new $(y(u))}}if(await yr(s,n,t),n.onSuccess)await n.onSuccess(n)}function Lr(r,e,t){return`${r}/${e}${t}`}function te(r,e){return`${r}/${e}`}export{Dr as defineWorkspace,$r as defineConfig,ne as build};
package/dist/plugins.d.ts CHANGED
@@ -2,8 +2,18 @@ import _Bun from "bun";
2
2
 
3
3
  //#region \0dts:/home/runner/work/bunup/bunup/packages/bunup/src/helpers/entry.d.ts
4
4
  type ProcessableEntry = {
5
- fullEntryPath: string
6
- name: string
5
+ fullPath: string
6
+ /**
7
+ * The relative path to the output directory.
8
+ *
9
+ * This is the path that will be used to name the output file.
10
+ *
11
+ * Examples:
12
+ * - "src/index.ts" → "index"
13
+ * - "src/plugins/index.ts" → "plugins/index"
14
+ * - etc.
15
+ */
16
+ outputBasePath: string
7
17
  };
8
18
 
9
19
  //#endregion
@@ -387,7 +397,7 @@ interface BuildOptions {
387
397
  *
388
398
  * @example
389
399
  * outputExtension: ({ format, entry }) => ({
390
- * js: entry.name === 'worker' ? '.worker.js' : `.${format}.js`,
400
+ * js: entry.outputBasePath === 'worker' ? '.worker.js' : `.${format}.js`,
391
401
  * dts: `.${format}.d.ts`
392
402
  * })
393
403
  */
@@ -423,8 +433,8 @@ type BuildOutput = {
423
433
  files: Array<{
424
434
  /** Path to the generated file */
425
435
  fullPath: string
426
- /** Path to the generated file relative to the output directory */
427
- relativePathToOutputDir: string
436
+ /** Path to the generated file relative to the root directory */
437
+ relativePathToRootDir: string
428
438
  }>
429
439
  };
430
440
  /**
package/dist/plugins.js CHANGED
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- var D=Object.create;var{getPrototypeOf:F,defineProperty:O,getOwnPropertyNames:P}=Object;var $=Object.prototype.hasOwnProperty;var E=(r,e,t)=>{t=r!=null?D(F(r)):{};let o=e||!r||!r.__esModule?O(t,"default",{value:r,enumerable:!0}):t;for(let i of P(r))if(!$.call(o,i))O(o,i,{get:()=>r[i],enumerable:!0});return o};var j=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports);var w=j((U,y)=>{var C=process||{},L=C.argv||[],f=C.env||{},A=!(!!f.NO_COLOR||L.includes("--no-color"))&&(!!f.FORCE_COLOR||L.includes("--color")||C.platform==="win32"||(C.stdout||{}).isTTY&&f.TERM!=="dumb"||!!f.CI),S=(r,e,t=r)=>(o)=>{let i=""+o,a=i.indexOf(e,r.length);return~a?r+N(i,e,t,a)+e:r+i+e},N=(r,e,t,o)=>{let i="",a=0;do i+=r.substring(a,o)+t,a=o+e.length,o=r.indexOf(e,a);while(~o);return i+r.substring(a)},T=(r=A)=>{let e=r?S:()=>String;return{isColorSupported:r,reset:e("\x1B[0m","\x1B[0m"),bold:e("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:e("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:e("\x1B[3m","\x1B[23m"),underline:e("\x1B[4m","\x1B[24m"),inverse:e("\x1B[7m","\x1B[27m"),hidden:e("\x1B[8m","\x1B[28m"),strikethrough:e("\x1B[9m","\x1B[29m"),black:e("\x1B[30m","\x1B[39m"),red:e("\x1B[31m","\x1B[39m"),green:e("\x1B[32m","\x1B[39m"),yellow:e("\x1B[33m","\x1B[39m"),blue:e("\x1B[34m","\x1B[39m"),magenta:e("\x1B[35m","\x1B[39m"),cyan:e("\x1B[36m","\x1B[39m"),white:e("\x1B[37m","\x1B[39m"),gray:e("\x1B[90m","\x1B[39m"),bgBlack:e("\x1B[40m","\x1B[49m"),bgRed:e("\x1B[41m","\x1B[49m"),bgGreen:e("\x1B[42m","\x1B[49m"),bgYellow:e("\x1B[43m","\x1B[49m"),bgBlue:e("\x1B[44m","\x1B[49m"),bgMagenta:e("\x1B[45m","\x1B[49m"),bgCyan:e("\x1B[46m","\x1B[49m"),bgWhite:e("\x1B[47m","\x1B[49m"),blackBright:e("\x1B[90m","\x1B[39m"),redBright:e("\x1B[91m","\x1B[39m"),greenBright:e("\x1B[92m","\x1B[39m"),yellowBright:e("\x1B[93m","\x1B[39m"),blueBright:e("\x1B[94m","\x1B[39m"),magentaBright:e("\x1B[95m","\x1B[39m"),cyanBright:e("\x1B[96m","\x1B[39m"),whiteBright:e("\x1B[97m","\x1B[39m"),bgBlackBright:e("\x1B[100m","\x1B[49m"),bgRedBright:e("\x1B[101m","\x1B[49m"),bgGreenBright:e("\x1B[102m","\x1B[49m"),bgYellowBright:e("\x1B[103m","\x1B[49m"),bgBlueBright:e("\x1B[104m","\x1B[49m"),bgMagentaBright:e("\x1B[105m","\x1B[49m"),bgCyanBright:e("\x1B[106m","\x1B[49m"),bgWhiteBright:e("\x1B[107m","\x1B[49m")}};y.exports=T();y.exports.createColors=T});var p=E(w(),1);var n=E(w(),1),W=!1;class x{static instance;loggedOnceMessages=new Set;MAX_LABEL_LENGTH=3;cliColor=n.default.blue;mutedColor=n.default.dim;infoColor=n.default.cyan;warnColor=n.default.yellow;errorColor=n.default.red;defaultColor=n.default.white;progressFgColorMap={ESM:n.default.yellow,CJS:n.default.green,IIFE:n.default.magenta,DTS:n.default.blue};progressBgColorMap={ESM:n.default.bgYellow,CJS:n.default.bgGreen,IIFE:n.default.bgMagenta,DTS:n.default.bgBlue};labels={cli:"CLI",info:"INFO",warn:"WARN",error:"ERROR"};constructor(){}static getInstance(){if(!x.instance)x.instance=new x;return x.instance}dispose(){this.loggedOnceMessages.clear()}shouldLog(r){if(!r?.once)return!0;if(this.loggedOnceMessages.has(r.once))return!1;return this.loggedOnceMessages.add(r.once),!0}formatMessage({fgColor:r,bgColor:e,label:t,message:o,identifier:i,muted:a}){let b=" ".repeat(Math.max(0,this.MAX_LABEL_LENGTH-t.length)),s=a?this.mutedColor(o):o,g=i?` ${e(n.default.black(` ${i} `))}`:"";return`${r(t)} ${b}${s}${g}`}output(r,e={},t=console.log){if(W||!this.shouldLog(e))return;if(e.verticalSpace)t("");if(t(r),e.verticalSpace)t("")}cli(r,e={}){let t=this.formatMessage({fgColor:this.cliColor,bgColor:n.default.bgBlue,label:this.labels.cli,message:r,identifier:e.identifier,muted:e.muted});this.output(t,e)}info(r,e={}){let t=this.formatMessage({fgColor:this.infoColor,bgColor:n.default.bgCyan,label:this.labels.info,message:r,identifier:e.identifier,muted:e.muted});this.output(t,e)}warn(r,e={}){let t=this.formatMessage({fgColor:this.warnColor,bgColor:n.default.bgYellow,label:this.labels.warn,message:r,identifier:e.identifier,muted:e.muted});this.output(t,e,console.warn)}error(r,e={}){let t=this.formatMessage({fgColor:this.errorColor,bgColor:n.default.bgRed,label:this.labels.error,message:r,identifier:e.identifier,muted:e.muted});this.output(t,e,console.error)}getProgressFgColor(r){for(let[e,t]of Object.entries(this.progressFgColorMap))if(r.includes(e))return t;return this.defaultColor}getProgressBgColor(r){for(let[e,t]of Object.entries(this.progressBgColorMap))if(r.includes(e))return t;return n.default.bgWhite}progress(r,e,t={}){let o=this.getProgressFgColor(r),i=this.getProgressBgColor(r),a=this.formatMessage({fgColor:o,bgColor:i,label:r,message:e,identifier:t.identifier,muted:t.muted});this.output(a,t)}}function k(r,e,t){let o={};for(let s of r){let g=s.header.length,l=e.map((m)=>m[s.header]?.length||0),d=t?t[s.header]?.length||0:0;o[s.header]=Math.max(g,...l,d)}let i=(s,g,l)=>{return l==="left"?s.padEnd(g):s.padStart(g)},a=r.map((s)=>i(s.header,o[s.header],s.align)).join(n.default.gray(" | "));console.log(n.default.gray(a));let b=r.map((s)=>"-".repeat(o[s.header])).join(" | ");console.log(n.default.gray(b));for(let s of e){let g=r.map((l)=>{let d=s[l.header]||"",m=i(d,o[l.header],l.align);return l.color?l.color(m):m}).join(n.default.gray(" | "));console.log(g)}if(console.log(n.default.gray(b)),t){let s=r.map((g)=>{let l=t[g.header]||"";return i(l,o[g.header],g.align)}).join(n.default.gray(" | "));console.log(s)}}var _=x.getInstance();var Y=E(w(),1);function h(r){if(r===0)return"0 B";let e=["B","KB","MB","GB"],t=Math.floor(Math.log(r)/Math.log(1024));if(t===0)return`${r} ${e[t]}`;return`${(r/1024**t).toFixed(2)} ${e[t]}`}function z(r={}){let{maxBundleSize:e,gzip:t=!0}=r;return{type:"bunup",name:"report",hooks:{onBuildDone:async({options:o,output:i})=>{if(o.watch)return;let a=await Promise.all(i.files.map(async(c)=>{let u=c.relativePathToOutputDir,B=Bun.file(c.fullPath).size,R,v;if(t){let I=await Bun.file(c.fullPath).text();R=Bun.gzipSync(I).length,v=h(R)}return{name:u,size:B,formattedSize:h(B),gzipSize:R,formattedGzipSize:v}})),b=a.reduce((c,u)=>c+u.size,0),s=h(b),g,l;if(t)g=a.reduce((c,u)=>c+(u.gzipSize||0),0),l=h(g);let d=[{header:"File",align:"left",color:p.default.blue},{header:"Size",align:"right",color:p.default.green}];if(t)d.push({header:"Gzip",align:"right",color:p.default.magenta});let m=a.map((c)=>{let u={File:c.name,Size:c.formattedSize};if(t&&c.formattedGzipSize)u.Gzip=c.formattedGzipSize;return u}),M={File:"Total",Size:s};if(t&&l)M.Gzip=l;if(console.log(""),k(d,m,M),e&&b>e)console.log(""),console.log(p.default.red(`Your bundle size of ${s} exceeds the configured limit of ${h(e)}`));console.log("")}}}}export{z as report};
2
+ var D=Object.create;var{getPrototypeOf:F,defineProperty:O,getOwnPropertyNames:P}=Object;var $=Object.prototype.hasOwnProperty;var E=(r,e,t)=>{t=r!=null?D(F(r)):{};let o=e||!r||!r.__esModule?O(t,"default",{value:r,enumerable:!0}):t;for(let i of P(r))if(!$.call(o,i))O(o,i,{get:()=>r[i],enumerable:!0});return o};var j=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports);var w=j((U,y)=>{var C=process||{},L=C.argv||[],f=C.env||{},A=!(!!f.NO_COLOR||L.includes("--no-color"))&&(!!f.FORCE_COLOR||L.includes("--color")||C.platform==="win32"||(C.stdout||{}).isTTY&&f.TERM!=="dumb"||!!f.CI),S=(r,e,t=r)=>(o)=>{let i=""+o,a=i.indexOf(e,r.length);return~a?r+N(i,e,t,a)+e:r+i+e},N=(r,e,t,o)=>{let i="",a=0;do i+=r.substring(a,o)+t,a=o+e.length,o=r.indexOf(e,a);while(~o);return i+r.substring(a)},T=(r=A)=>{let e=r?S:()=>String;return{isColorSupported:r,reset:e("\x1B[0m","\x1B[0m"),bold:e("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:e("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:e("\x1B[3m","\x1B[23m"),underline:e("\x1B[4m","\x1B[24m"),inverse:e("\x1B[7m","\x1B[27m"),hidden:e("\x1B[8m","\x1B[28m"),strikethrough:e("\x1B[9m","\x1B[29m"),black:e("\x1B[30m","\x1B[39m"),red:e("\x1B[31m","\x1B[39m"),green:e("\x1B[32m","\x1B[39m"),yellow:e("\x1B[33m","\x1B[39m"),blue:e("\x1B[34m","\x1B[39m"),magenta:e("\x1B[35m","\x1B[39m"),cyan:e("\x1B[36m","\x1B[39m"),white:e("\x1B[37m","\x1B[39m"),gray:e("\x1B[90m","\x1B[39m"),bgBlack:e("\x1B[40m","\x1B[49m"),bgRed:e("\x1B[41m","\x1B[49m"),bgGreen:e("\x1B[42m","\x1B[49m"),bgYellow:e("\x1B[43m","\x1B[49m"),bgBlue:e("\x1B[44m","\x1B[49m"),bgMagenta:e("\x1B[45m","\x1B[49m"),bgCyan:e("\x1B[46m","\x1B[49m"),bgWhite:e("\x1B[47m","\x1B[49m"),blackBright:e("\x1B[90m","\x1B[39m"),redBright:e("\x1B[91m","\x1B[39m"),greenBright:e("\x1B[92m","\x1B[39m"),yellowBright:e("\x1B[93m","\x1B[39m"),blueBright:e("\x1B[94m","\x1B[39m"),magentaBright:e("\x1B[95m","\x1B[39m"),cyanBright:e("\x1B[96m","\x1B[39m"),whiteBright:e("\x1B[97m","\x1B[39m"),bgBlackBright:e("\x1B[100m","\x1B[49m"),bgRedBright:e("\x1B[101m","\x1B[49m"),bgGreenBright:e("\x1B[102m","\x1B[49m"),bgYellowBright:e("\x1B[103m","\x1B[49m"),bgBlueBright:e("\x1B[104m","\x1B[49m"),bgMagentaBright:e("\x1B[105m","\x1B[49m"),bgCyanBright:e("\x1B[106m","\x1B[49m"),bgWhiteBright:e("\x1B[107m","\x1B[49m")}};y.exports=T();y.exports.createColors=T});var p=E(w(),1);var n=E(w(),1),W=!1;class x{static instance;loggedOnceMessages=new Set;MAX_LABEL_LENGTH=3;cliColor=n.default.blue;mutedColor=n.default.dim;infoColor=n.default.cyan;warnColor=n.default.yellow;errorColor=n.default.red;defaultColor=n.default.white;progressFgColorMap={ESM:n.default.yellow,CJS:n.default.green,IIFE:n.default.magenta,DTS:n.default.blue};progressBgColorMap={ESM:n.default.bgYellow,CJS:n.default.bgGreen,IIFE:n.default.bgMagenta,DTS:n.default.bgBlue};labels={cli:"CLI",info:"INFO",warn:"WARN",error:"ERROR"};constructor(){}static getInstance(){if(!x.instance)x.instance=new x;return x.instance}dispose(){this.loggedOnceMessages.clear()}shouldLog(r){if(!r?.once)return!0;if(this.loggedOnceMessages.has(r.once))return!1;return this.loggedOnceMessages.add(r.once),!0}formatMessage({fgColor:r,bgColor:e,label:t,message:o,identifier:i,muted:a}){let b=" ".repeat(Math.max(0,this.MAX_LABEL_LENGTH-t.length)),s=a?this.mutedColor(o):o,g=i?` ${e(n.default.black(` ${i} `))}`:"";return`${r(t)} ${b}${s}${g}`}output(r,e={},t=console.log){if(W||!this.shouldLog(e))return;if(e.verticalSpace)t("");if(t(r),e.verticalSpace)t("")}cli(r,e={}){let t=this.formatMessage({fgColor:this.cliColor,bgColor:n.default.bgBlue,label:this.labels.cli,message:r,identifier:e.identifier,muted:e.muted});this.output(t,e)}info(r,e={}){let t=this.formatMessage({fgColor:this.infoColor,bgColor:n.default.bgCyan,label:this.labels.info,message:r,identifier:e.identifier,muted:e.muted});this.output(t,e)}warn(r,e={}){let t=this.formatMessage({fgColor:this.warnColor,bgColor:n.default.bgYellow,label:this.labels.warn,message:r,identifier:e.identifier,muted:e.muted});this.output(t,e,console.warn)}error(r,e={}){let t=this.formatMessage({fgColor:this.errorColor,bgColor:n.default.bgRed,label:this.labels.error,message:r,identifier:e.identifier,muted:e.muted});this.output(t,e,console.error)}getProgressFgColor(r){for(let[e,t]of Object.entries(this.progressFgColorMap))if(r.includes(e))return t;return this.defaultColor}getProgressBgColor(r){for(let[e,t]of Object.entries(this.progressBgColorMap))if(r.includes(e))return t;return n.default.bgWhite}progress(r,e,t={}){let o=this.getProgressFgColor(r),i=this.getProgressBgColor(r),a=this.formatMessage({fgColor:o,bgColor:i,label:r,message:e,identifier:t.identifier,muted:t.muted});this.output(a,t)}}function k(r,e,t){let o={};for(let s of r){let g=s.header.length,l=e.map((m)=>m[s.header]?.length||0),d=t?t[s.header]?.length||0:0;o[s.header]=Math.max(g,...l,d)}let i=(s,g,l)=>{return l==="left"?s.padEnd(g):s.padStart(g)},a=r.map((s)=>i(s.header,o[s.header],s.align)).join(n.default.gray(" | "));console.log(n.default.gray(a));let b=r.map((s)=>"-".repeat(o[s.header])).join(" | ");console.log(n.default.gray(b));for(let s of e){let g=r.map((l)=>{let d=s[l.header]||"",m=i(d,o[l.header],l.align);return l.color?l.color(m):m}).join(n.default.gray(" | "));console.log(g)}if(console.log(n.default.gray(b)),t){let s=r.map((g)=>{let l=t[g.header]||"";return i(l,o[g.header],g.align)}).join(n.default.gray(" | "));console.log(s)}}var _=x.getInstance();var Y=E(w(),1);function h(r){if(r===0)return"0 B";let e=["B","KB","MB","GB"],t=Math.floor(Math.log(r)/Math.log(1024));if(t===0)return`${r} ${e[t]}`;return`${(r/1024**t).toFixed(2)} ${e[t]}`}function z(r={}){let{maxBundleSize:e,gzip:t=!0}=r;return{type:"bunup",name:"report",hooks:{onBuildDone:async({options:o,output:i})=>{if(o.watch)return;let a=await Promise.all(i.files.map(async(c)=>{let u=c.relativePathToRootDir,B=Bun.file(c.fullPath).size,R,v;if(t){let I=await Bun.file(c.fullPath).text();R=Bun.gzipSync(I).length,v=h(R)}return{name:u,size:B,formattedSize:h(B),gzipSize:R,formattedGzipSize:v}})),b=a.reduce((c,u)=>c+u.size,0),s=h(b),g,l;if(t)g=a.reduce((c,u)=>c+(u.gzipSize||0),0),l=h(g);let d=[{header:"File",align:"left",color:p.default.blue},{header:"Size",align:"right",color:p.default.green}];if(t)d.push({header:"Gzip",align:"right",color:p.default.magenta});let m=a.map((c)=>{let u={File:c.name,Size:c.formattedSize};if(t&&c.formattedGzipSize)u.Gzip=c.formattedGzipSize;return u}),M={File:"Total",Size:s};if(t&&l)M.Gzip=l;if(console.log(""),k(d,m,M),e&&b>e)console.log(""),console.log(p.default.red(`Your bundle size of ${s} exceeds the configured limit of ${h(e)}`));console.log("")}}}}export{z as report};
package/package.json CHANGED
@@ -1,60 +1,62 @@
1
1
  {
2
- "name": "bunup",
3
- "description": "⚡ A blazing-fast build tool for your libraries built with Bun.",
4
- "version": "0.5.6",
5
- "license": "MIT",
6
- "author": "Arshad Yaseen <m@arshadyaseen.com> (https://arshadyaseen.com)",
7
- "maintainers": [
8
- {
9
- "name": "Arshad Yaseen",
10
- "email": "m@arshadyaseen.com",
11
- "url": "https://arshadyaseen.com"
12
- }
13
- ],
14
- "repository": {
15
- "type": "git",
16
- "url": "git+https://github.com/arshad-yaseen/bunup.git"
17
- },
18
- "funding": "https://github.com/sponsors/arshad-yaseen",
19
- "homepage": "https://bunup.dev",
20
- "keywords": ["bun", "bunup", "bun-bundler"],
21
- "files": ["dist", "./../../LICENSE"],
22
- "dependencies": {
23
- "chokidar": "^4.0.3",
24
- "coffi": "^0.1.25",
25
- "oxc-resolver": "^5.0.1",
26
- "oxc-transform": "^0.58.1",
27
- "rolldown": "1.0.0-beta.7",
28
- "rolldown-plugin-dts": "^0.7.0",
29
- "tinyexec": "^1.0.1",
30
- "ts-import-resolver": "^0.1.10"
31
- },
32
- "peerDependencies": {
33
- "typescript": ">=4.5.0"
34
- },
35
- "main": "./dist/index.js",
36
- "module": "./dist/index.js",
37
- "types": "./dist/index.d.ts",
38
- "exports": {
39
- ".": {
40
- "types": "./dist/index.d.ts",
41
- "default": "./dist/index.js"
42
- },
43
- "./plugins": {
44
- "types": "./dist/plugins.d.ts",
45
- "default": "./dist/plugins.js"
46
- }
47
- },
48
- "bin": {
49
- "bunup": "./dist/cli.js"
50
- },
51
- "peerDependenciesMeta": {
52
- "typescript": {
53
- "optional": true
54
- }
55
- },
56
- "scripts": {
57
- "npm-publish": "bun publish --access public --no-git-checks"
58
- },
59
- "type": "module"
2
+ "name": "bunup",
3
+ "description": "⚡ A blazing-fast build tool for your libraries built with Bun.",
4
+ "version": "0.5.9",
5
+ "license": "MIT",
6
+ "author": "Arshad Yaseen <m@arshadyaseen.com> (https://arshadyaseen.com)",
7
+ "maintainers": [
8
+ {
9
+ "name": "Arshad Yaseen",
10
+ "email": "m@arshadyaseen.com",
11
+ "url": "https://arshadyaseen.com"
12
+ }
13
+ ],
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "git+https://github.com/arshad-yaseen/bunup.git"
17
+ },
18
+ "funding": "https://github.com/sponsors/arshad-yaseen",
19
+ "homepage": "https://bunup.dev",
20
+ "keywords": ["bun", "bunup", "bun-bundler"],
21
+ "files": ["dist"],
22
+ "dependencies": {
23
+ "chokidar": "^4.0.3",
24
+ "coffi": "^0.1.25",
25
+ "oxc-resolver": "^5.0.1",
26
+ "oxc-transform": "^0.58.1",
27
+ "rolldown": "1.0.0-beta.7",
28
+ "rolldown-plugin-dts": "^0.9.4",
29
+ "tinyexec": "^1.0.1",
30
+ "ts-import-resolver": "^0.1.10"
31
+ },
32
+ "peerDependencies": {
33
+ "typescript": ">=4.5.0"
34
+ },
35
+ "main": "./dist/index.js",
36
+ "module": "./dist/index.js",
37
+ "types": "./dist/index.d.ts",
38
+ "exports": {
39
+ ".": {
40
+ "types": "./dist/index.d.ts",
41
+ "default": "./dist/index.js"
42
+ },
43
+ "./plugins": {
44
+ "types": "./dist/plugins.d.ts",
45
+ "default": "./dist/plugins.js"
46
+ }
47
+ },
48
+ "bin": {
49
+ "bunup": "./dist/cli.js"
50
+ },
51
+ "peerDependenciesMeta": {
52
+ "typescript": {
53
+ "optional": true
54
+ }
55
+ },
56
+ "scripts": {
57
+ "npm-publish": "bun publish --access public --no-git-checks",
58
+ "prepack": "cp ../../LICENSE .",
59
+ "postpack": "rm LICENSE"
60
+ },
61
+ "type": "module"
60
62
  }