bunup 0.4.71 → 0.4.72

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/README.md CHANGED
@@ -5,20 +5,21 @@
5
5
  <div align="center">
6
6
 
7
7
  <!-- markdownlint-disable-next-line no-alt-text -->
8
- ![](docs/public/logo.svg)
9
8
 
10
- ![Bunup](assets/bunup-title.svg)
9
+ ![](docs/public/logo.svg)
11
10
 
12
- [![NPM Downloads](https://img.shields.io/npm/dm/bunup?logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyNHB4IiBmaWxsPSIjMDAwMDAwIj48cGF0aCBkPSJNNDgwLTMyMCAyODAtNTIwbDU2LTU4IDEwNCAxMDR2LTMyNmg4MHYzMjZsMTA0LTEwNCA1NiA1OC0yMDAgMjAwWk0xNjAtMTYwdi0yMDBoODB2MTIwaDQ4MHYtMTIwaDgwdjIwMEgxNjBaIi8%2BPC9zdmc%2B&labelColor=ffc44e&color=212121)](https://www.npmjs.com/package/bunup) [![NPM Version](https://img.shields.io/npm/v/bunup?logo=npm&logoColor=212121&label=version&labelColor=ffc44e&color=212121)](https://npmjs.com/package/bunup) [![Built with Bun](https://img.shields.io/badge/Built_with-Bun-fbf0df?logo=bun&labelColor=212121)](https://bun.sh) [![sponsor](https://img.shields.io/badge/sponsor-EA4AAA?logo=githubsponsors&labelColor=FAFAFA)](https://github.com/sponsors/arshad-yaseen)
11
+ ![Bunup](assets/bunup-title.svg)
13
12
 
14
- Bunup is the **blazing-fast build tool** for TypeScript and JavaScript libraries, designed for flawless developer experience and speed, **powered by Bun's native bundler** — up to **~50× faster than Tsup**.
13
+ [![NPM Downloads](https://img.shields.io/npm/dm/bunup?logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyNHB4IiBmaWxsPSIjMDAwMDAwIj48cGF0aCBkPSJNNDgwLTMyMCAyODAtNTIwbDU2LTU4IDEwNCAxMDR2LTMyNmg4MHYzMjZsMTA0LTEwNCA1NiA1OC0yMDAgMjAwWk0xNjAtMTYwdi0yMDBoODB2MTIwaDQ4MHYtMTIwaDgwdjIwMEgxNjBaIi8%2BPC9zdmc%2B&labelColor=ffc44e&color=212121)](https://www.npmjs.com/package/bunup) [![NPM Version](https://img.shields.io/npm/v/bunup?logo=npm&logoColor=212121&label=version&labelColor=ffc44e&color=212121)](https://npmjs.com/package/bunup) [![Built with Bun](https://img.shields.io/badge/Built_with-Bun-fbf0df?logo=bun&labelColor=212121)](https://bun.sh) [![sponsor](https://img.shields.io/badge/sponsor-EA4AAA?logo=githubsponsors&labelColor=FAFAFA)](https://github.com/sponsors/arshad-yaseen)
15
14
 
16
- | Bundler | Format | Build Time | Build Time (with dts) |
17
- | --------- | ------------ | -------------- | --------------------- |
18
- | **bunup** | **esm, cjs** | **3.52ms ⚡️** | **20.84ms ⚡️** |
19
- | tsdown | esm, cjs | 5.81ms | 35.84ms |
20
- | unbuild | esm, cjs | 42.47ms | 314.54ms |
21
- | tsup | esm, cjs | 63.59ms | 943.61ms |
15
+ Bunup is the **blazing-fast build tool** for TypeScript and JavaScript libraries, designed for flawless developer experience and speed, **powered by Bun's native bundler** — up to **~50× faster than Tsup**.
16
+
17
+ | Bundler | Format | Build Time | Build Time (with dts) |
18
+ | --------- | ------------ | -------------- | --------------------- |
19
+ | **bunup** | **esm, cjs** | **3.42ms ⚡️** | **21.28ms ⚡️** |
20
+ | tsdown | esm, cjs | 8.37ms | 41.48ms |
21
+ | unbuild | esm, cjs | 43.22ms | 326.65ms |
22
+ | tsup | esm, cjs | 63.59ms | 943.61ms |
22
23
 
23
24
  </div>
24
25
  <!-- markdownlint-restore -->
package/dist/cli.mjs CHANGED
@@ -1,22 +1,22 @@
1
1
  #!/usr/bin/env bun
2
2
  // @bun
3
- var er=Object.create;var{getPrototypeOf:rr,defineProperty:le,getOwnPropertyNames:nr}=Object;var tr=Object.prototype.hasOwnProperty;var N=(e,r,n)=>{n=e!=null?er(rr(e)):{};let t=r||!e||!e.__esModule?le(n,"default",{value:e,enumerable:!0}):n;for(let i of nr(e))if(!tr.call(t,i))le(t,i,{get:()=>e[i],enumerable:!0});return t};var ir=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports);var j=ir((Nr,X)=>{var I=process||{},ue=I.argv||[],A=I.env||{},sr=!(!!A.NO_COLOR||ue.includes("--no-color"))&&(!!A.FORCE_COLOR||ue.includes("--color")||I.platform==="win32"||(I.stdout||{}).isTTY&&A.TERM!=="dumb"||!!A.CI),or=(e,r,n=e)=>(t)=>{let i=""+t,s=i.indexOf(r,e.length);return~s?e+ar(i,r,n,s)+r:e+i+r},ar=(e,r,n,t)=>{let i="",s=0;do i+=e.substring(s,t)+n,s=t+r.length,t=e.indexOf(r,s);while(~t);return i+e.substring(s)},ge=(e=sr)=>{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")}};X.exports=ge();X.exports.createColors=ge});import{exec as qr}from"tinyexec";import{build as fr}from"rolldown";import{dts as pr}from"rolldown-plugin-dts";var p=N(j(),1);var m=N(j(),1),me=!1;function v(e){me=e??!1}class S{static instance;loggedOnceMessages=new Set;MAX_LABEL_LENGTH=3;MAX_MESSAGE_LENGTH=25;cliColor=m.default.blue;mutedColor=m.default.dim;infoColor=m.default.cyan;warnColor=m.default.yellow;errorColor=m.default.red;sizeColor=m.default.green;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(!S.instance)S.instance=new S;return S.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:n,message:t,size:i,identifier:s,muted:o}){let l=" ".repeat(Math.max(0,this.MAX_LABEL_LENGTH-n.length)),a=o?this.mutedColor(t):t;if(i){let[u,...f]=a.split(" "),h=" ".repeat(Math.max(0,this.MAX_MESSAGE_LENGTH-u.length)),L=s?` ${r(m.default.black(` ${s} `))}`:"";return`${e(n)} ${l}${u}${h} ${this.sizeColor(i)} ${f.join(" ")}${L}`}let c=s?` ${r(m.default.black(` ${s} `))}`:"";return`${e(n)} ${l}${a}${c}`}output(e,r={},n=console.log){if(me||!this.shouldLog(r))return;if(r.verticalSpace)console.log("");if(n(e),r.verticalSpace)console.log("")}cli(e,r={}){let n=this.formatMessage({fgColor:this.cliColor,bgColor:m.default.bgBlue,label:this.labels.cli,message:e,identifier:r.identifier,muted:r.muted});this.output(n,r)}info(e,r={}){let n=this.formatMessage({fgColor:this.infoColor,bgColor:m.default.bgCyan,label:this.labels.info,message:e,identifier:r.identifier,muted:r.muted});this.output(n,r)}warn(e,r={}){let n=this.formatMessage({fgColor:this.warnColor,bgColor:m.default.bgYellow,label:this.labels.warn,message:e,identifier:r.identifier,muted:r.muted});this.output(n,r,console.warn)}error(e,r={}){let n=this.formatMessage({fgColor:this.errorColor,bgColor:m.default.bgRed,label:this.labels.error,message:e,identifier:r.identifier,muted:r.muted});this.output(n,r,console.error)}getProgressFgColor(e){for(let[r,n]of Object.entries(this.progressFgColorMap))if(e.includes(r))return n;return this.defaultColor}getProgressBgColor(e){for(let[r,n]of Object.entries(this.progressBgColorMap))if(e.includes(r))return n;return m.default.bgWhite}progress(e,r,n,t){let i,s,o={};if(typeof n==="string")i=n,s=t;else if(n)i=n.size,s=n.identifier,o=n;let l=this.getProgressFgColor(e),a=this.getProgressBgColor(e),c=this.formatMessage({fgColor:l,bgColor:a,label:e,message:r,size:i,identifier:s,muted:o.muted});this.output(c,o)}}var g=S.getInstance();class $ extends Error{constructor(e){super(e);this.name="BunupError"}}class B extends ${constructor(e){super(e);this.name="BunupBuildError"}}class b extends ${constructor(e){super(e);this.name="BunupDTSBuildError"}}class w extends ${constructor(e){super(e);this.name="BunupCLIError"}}class U extends ${constructor(e){super(e);this.name="BunupWatchError"}}var x=(e)=>{if(e instanceof Error)return e.message;return String(e)},cr=[{pattern:/Could not resolve: "bun"/i,errorType:"BUILD ERROR",logSolution:()=>{g.error(p.default.white("You're trying to build a project that uses Bun. ")+p.default.white("Please set the target option to ")+p.default.cyan("`bun`")+p.default.white(`.
4
- `)+p.default.white("Example: ")+p.default.green("`bunup --target bun`")+p.default.white(" or in config: ")+p.default.green("{ target: 'bun' }"))}}],V=(e,r)=>{let n=x(e),t=r?`[${r}] `:"",i="ERROR";if(e instanceof B)i="BUILD ERROR";else if(e instanceof b)i="DTS ERROR";else if(e instanceof w)i="CLI ERROR";else if(e instanceof U)i="WATCH ERROR";else if(e instanceof $)i="BUNUP ERROR";let s=cr.find((o)=>o.pattern.test(n)&&(o.errorType===i||!o.errorType));if(!s)console.error(`${p.default.red(i)} ${t}${n}`);if(s)console.log(`
5
- `),s.logSolution(n),console.log(`
6
- `);else console.error(p.default.dim(p.default.white("If you think this is a bug, please open an issue at: ")+p.default.cyan("https://github.com/arshad-yaseen/bunup/issues/new")))},fe=(e,r)=>{V(e,r),process.exit(1)};import Te from"path";import{ResolverFactory as mr}from"oxc-resolver";import pe from"fs/promises";import lr from"path";function de(e,r,n){return Array.isArray(e)?e.map((t)=>({...t,[r]:n})):{...e,[r]:n}}function be(e){return Array.isArray(e)?e:[e]}function xe(e,r){switch(e){case"esm":return T(r)?".js":".mjs";case"cjs":return T(r)?".cjs":".js";case"iife":return".global.js"}}function he(e,r){switch(e){case"esm":return T(r)?".d.ts":".d.mts";case"cjs":return T(r)?".d.cts":".d.ts";case"iife":return".d.ts"}}function z(e){return e==="node"||e==="bun"}function T(e){return e==="module"}function _(e){return e>=1000?`${(e/1000).toFixed(2)}s`:`${Math.round(e)}ms`}function we(e){if(!e)return[];return Array.from(new Set([...Object.keys(e.dependencies||{}),...Object.keys(e.peerDependencies||{})]))}function P(e){if(e===0)return"0 B";let r=["B","KB","MB","GB"],n=Math.floor(Math.log(e)/Math.log(1024));if(n===0)return`${e} ${r[n]}`;return`${(e/1024**n).toFixed(2)} ${r[n]}`}function O(e,r=3){return e.split("/").slice(-r).join("/")}async function ye(e,r){let n=lr.join(e,r);try{await pe.rm(n,{recursive:!0,force:!0})}catch(t){throw new B(`Failed to clean output directory: ${t}`)}await pe.mkdir(n,{recursive:!0})}function W(e){return[".ts",".mts",".cts",".tsx"].some((r)=>e.endsWith(r))}function ur(e){return we(e).map((r)=>new RegExp(`^${r}($|\\/|\\\\)`))}function Ce(e,r){return typeof r==="string"?r===e:r.test(e)}function D(e,r,n){let i=ur(n).some((o)=>o.test(e))||r.external?.some((o)=>Ce(e,o)),s=r.noExternal?.some((o)=>Ce(e,o));return i&&!s}import{resolveTsImportPath as gr}from"ts-import-resolver";var R="\x00dts:",Be=(e,r,n)=>{return{name:"bunup:virtual-dts",async resolveId(t,i){if(J(t))return t;if(!i||!J(i))return null;let s=r.tsconfig?gr({path:t,importer:M(i),tsconfig:r.tsconfig,rootDir:n}):null;if(!s)return null;let o=C(s);if(e.has(o))return H(o);return null},load(t){if(t.startsWith(R)){let i=M(t),s=e.get(i);if(s)return k.add(i),s}return null}}};var ee=/\.(js|mjs|cjs|ts|mts|cts|tsx|jsx)$/;function Oe(e){return e.endsWith(".d.ts")||e.endsWith(".d.mts")||e.endsWith(".d.cts")}function re(e){return ee.test(e)&&!Oe(e)}function C(e){if(Oe(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(ee.test(e))return e.replace(ee,".d.ts");return`${e}.d.ts`}function Se(e){if(re(e))return e;if(e.endsWith(".d.mts"))return`${e.slice(0,-6)}.mts`;if(e.endsWith(".d.cts"))return`${e.slice(0,-6)}.cts`;if(e.endsWith(".d.ts"))return`${e.slice(0,-5)}.ts`;return e}function J(e){return e.startsWith(R)}function M(e){return e.replace(R,"")}function H(e){return`${R}${e}`}function $e(e,r,n,t){if(typeof t==="boolean"&&t)return!1;if(Array.isArray(t)){for(let i of t)if(typeof i==="string"&&e===i)return!1;else if(i instanceof RegExp&&i.test(e))return!1}return D(e,r,n)}var ne;function ke(e,r){return{name:"bunup:types-resolve",buildStart(){ne||=new mr({mainFields:["types","typings","module","main"],conditionNames:["types","typings","import","require"],extensions:[".d.ts",".d.mts",".d.cts",".ts",".mts",".cts"],...e.path&&{tsconfig:{configFile:e.path}},modules:["node_modules","node_modules/@types"]})},async resolveId(n,t){if(r===!1)return;if(n==="bun")return;let i=t?M(t):void 0;if(/\0/.test(n))return;if(Array.isArray(r)){if(!r.some((a)=>typeof a==="string"?a===n:a.test(n)))return}let s=i?Te.dirname(i):process.cwd(),{path:o}=await ne.async(s,n);if(!o)return;if(re(o)){let l=C(o);try{let{path:a}=await ne.async(Te.dirname(o),l);if(a)return a}catch(a){}return}return o}}}async function Le(e,r,n,t,i,s){let o=C(e),l=H(o),a=typeof n.dts==="object"&&"resolve"in n.dts?n.dts.resolve:void 0;try{let{output:c}=await fr({input:l,output:{dir:n.outDir},write:!1,...i.path&&{resolve:{tsconfigFilename:i.path}},onwarn(u,f){if(["UNRESOLVED_IMPORT","CIRCULAR_DEPENDENCY","EMPTY_BUNDLE"].includes(u.code??""))return;f(u)},plugins:[Be(r,i,s),a&&ke(i,a),pr({dtsInput:!0,emitDtsOnly:!0})],external:(u)=>$e(u,n,t,a)});if(!c[0]?.code)return g.warn(`Generated empty declaration file for entry "${e}"`,{muted:!0}),"";return c[0].code}catch(c){throw new b(`DTS bundling failed for entry "${e}": ${x(c)}`)}}import{resolveTsImportPath as dr}from"ts-import-resolver";var br=/^\s*import\s+(?:[^'"]*?\s+from\s+)?['"]([^'"]+)['"]/gm,xr=/^\s*export\s+.*from\s+['"]([^'"]+)['"]/gm,hr=/import\s*\(\s*['"]([^'"]+)['"]\s*\)/g,wr=/require\s*\(\s*['"]([^'"]+)['"]\s*\)/g,yr=/import\s+\w+\s*=\s*require\s*\(\s*['"]([^'"]+)['"]\s*\)/g,Cr=/\/\/\/\s*<reference\s+path\s*=\s*['"]([^'"]+)['"]\s*\/>/g,Br=/\/\/\/\s*<reference\s+types\s*=\s*['"]([^'"]+)['"]\s*\/>/g;function Or(e){let r=new Set,n=[br,xr,hr,wr,yr,Cr,Br];for(let t of n){let i=e.matchAll(t);for(let s of i)if(s[1])r.add(s[1])}return r}async function Me(e,r,n){let t=new Set([e]),i=[e];while(i.length){let s=i.pop();if(!s)continue;try{let o=await Bun.file(s).text(),l=Or(o);for(let a of l){let c=r.tsconfig?dr({path:a,importer:s,tsconfig:r.tsconfig,rootDir:n}):null;if(!c)continue;if(!t.has(c))t.add(c),i.push(c)}}catch(o){g.warn(`Error processing ${s}: ${x(o)}`)}}return t}import{isolatedDeclaration as Sr}from"oxc-transform";async function Re(e){let r=new Map;return await Promise.all([...e].map(async(n)=>{try{let t=C(n);if(!await Bun.file(n).exists())return;let s=await Bun.file(n).text(),{code:o}=Sr(n,s);if(o)r.set(t,o)}catch(t){g.warn(`Failed to generate declaration for ${n}: ${x(t)}`)}})),r}import Ee from"fs/promises";import te from"path";import{isolatedDeclaration as $r}from"oxc-transform";async function Ae(e,r){let n=te.resolve(e),t=te.resolve(n,r);if(!await Ee.exists(n))throw new b(`Root directory does not exist: ${n}`);if(!await Bun.file(t).exists())throw new b(`Entry file does not exist: ${t}`);if(!W(t))throw new b(`Entry file must be a TypeScript file: ${t}`);if(te.relative(n,t).startsWith(".."))throw new b(`Entry file must be within rootDir: ${t}`);return{absoluteRootDir:n,absoluteEntry:t}}async function Ie(e){let r=!1;if(await Promise.all([...e].map(async(n)=>{try{let t=Se(n),i=await Bun.file(t).text(),{errors:s}=$r(t,i);for(let o of s){if(!r)console.log(`
7
- `);let l=o.labels[0],a=l?Tr(i,l.start):"",u=`${O(t)}${a}: ${kr(o.message)}`;g.warn(u),r=!0}}catch{}})),r)g.info(`You may have noticed some TypeScript warnings above related to missing type annotations. This is because Bunup uses TypeScript's "isolatedDeclarations" approach for generating declaration files. This modern approach requires explicit type annotations on exports for better, more accurate type declarations. Adding the suggested type annotations will not only silence these warnings but also improve the quality of your published type definitions, making your library more reliable for consumers.`,{muted:!0,verticalSpace:!0})}function Tr(e,r){if(r===void 0)return"";let n=e.slice(0,r).split(`
8
- `),t=n.length,i=n[n.length-1].length+1;return` (${t}:${i})`}function kr(e){return e.replace(" with --isolatedDeclarations","").replace(" with --isolatedDeclaration","")}async function je(e,r,n,t,i){let{absoluteEntry:s}=await Ae(e,r),o=await Me(s,t,e),l=await Re(o);return Le(s,l,n,i,t,e)}import{basename as Lr,dirname as Mr,extname as Rr}from"path";function F(e){let r=Lr(e),n=Rr(r);return n?r.slice(0,-n.length):r}function E(e){if(typeof e==="string")return[{fullEntryPath:e,name:F(e)}];if(typeof e==="object"&&!Array.isArray(e))return Object.entries(e).map(([t,i])=>({fullEntryPath:i,name:t}));let r=[],n=new Set;for(let t of e){let i=F(t);if(!n.has(i)){r.push({fullEntryPath:t,name:i}),n.add(i);continue}let o=Mr(t).split("/").filter((a)=>a!=="."&&a!=="");if(o.length===0){let a=1,c;do c=`${i}_${a++}`;while(n.has(c));r.push({fullEntryPath:t,name:c}),n.add(c);continue}let l=!1;for(let a=1;a<=o.length&&!l;a++){let u=`${o.slice(-a).join("/")}/${i}`;if(!n.has(u))r.push({fullEntryPath:t,name:u}),n.add(u),l=!0}if(!l){let a=1,c;do c=`${o.join("/")}/${i}_${a++}`;while(n.has(c));r.push({fullEntryPath:t,name:c}),n.add(c)}}return r}function ve(e){return e.filter((r)=>W(r.fullEntryPath))}function Ue(e,r){return`[dir]/${e}${r}`}import Er from"path";import{loadConfig as _e}from"coffi";async function We(e,r,n){return Array.isArray(e)&&"root"in e[0]?e.filter((t)=>n?n.includes(t.name):!0).map((t)=>({rootDir:Er.resolve(r,t.root),options:de(t.config,"name",t.name)})):[{rootDir:r,options:e}]}async function De(e){let{config:r,filepath:n}=await _e({name:"package",cwd:e,extensions:[".json"]});return{packageJson:r,path:n}}async function He(e,r){let{config:n,filepath:t}=await _e({name:"tsconfig",cwd:e,extensions:[".json"],preferredPath:r});return{tsconfig:n,path:t}}var Ar={entry:[],format:["cjs"],outDir:"dist",target:"node",clean:!0};function q(e){return{...Ar,...e}}function Fe(e){let{minify:r,minifyWhitespace:n,minifyIdentifiers:t,minifySyntax:i}=e,s=r===!0;return{whitespace:n??s,identifiers:t??s,syntax:i??s}}function qe(e,r){return r==="cjs"?e:void 0}function Ye(e,r,n,t){return{...typeof n==="object"&&Object.keys(n).reduce((i,s)=>{let o=JSON.stringify(n[s]);return i[`process.env.${s}`]=o,i[`import.meta.env.${s}`]=o,i},{}),...e,...t==="cjs"&&(r===!0||typeof r==="object"&&r.importMetaUrl)&&{"import.meta.url":"importMetaUrl"}}}function Ge(e,r){return e===void 0?r==="esm":e}function Ke(e){return typeof e==="string"?e:void 0}function Qe(e,r){return{name:"bunup:external-plugin",setup(n){n.onResolve({filter:/.*/},(t)=>{let i=t.path;if(D(i,e,r))return{path:i,external:!0};return null})}}}var Ir=/\.(js|ts|jsx|tsx|mts|cts)$/,ie={dirnameFilename:{appliesTo:(e,r)=>e==="esm"&&z(r),isNeededInFile:(e)=>/\b__dirname\b/.test(e)||/\b__filename\b/.test(e),generateCode:()=>`import { fileURLToPath } from 'url';
3
+ var Cr=Object.create;var{getPrototypeOf:yr,defineProperty:nn,getOwnPropertyNames:Br}=Object;var Or=Object.prototype.hasOwnProperty;var E=(n,r,e)=>{e=n!=null?Cr(yr(n)):{};let t=r||!n||!n.__esModule?nn(e,"default",{value:n,enumerable:!0}):e;for(let i of Br(n))if(!Or.call(t,i))nn(t,i,{get:()=>n[i],enumerable:!0});return t};var $r=(n,r)=>()=>(r||n((r={exports:{}}).exports,r),r.exports);var Sr=(n,r)=>{for(var e in r)nn(n,e,{get:r[e],enumerable:!0,configurable:!0,set:(t)=>r[e]=()=>t})};var p=(n,r)=>()=>(n&&(r=n(n=0)),r);var kr=import.meta.require;var j=$r((fe,rn)=>{var Y=process||{},Cn=Y.argv||[],W=Y.env||{},Lr=!(!!W.NO_COLOR||Cn.includes("--no-color"))&&(!!W.FORCE_COLOR||Cn.includes("--color")||Y.platform==="win32"||(Y.stdout||{}).isTTY&&W.TERM!=="dumb"||!!W.CI),Tr=(n,r,e=n)=>(t)=>{let i=""+t,s=i.indexOf(r,n.length);return~s?n+Rr(i,r,e,s)+r:n+i+r},Rr=(n,r,e,t)=>{let i="",s=0;do i+=n.substring(s,t)+e,s=t+r.length,t=n.indexOf(r,s);while(~t);return i+n.substring(s)},yn=(n=Lr)=>{let r=n?Tr:()=>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")}};rn.exports=yn();rn.exports.createColors=yn});function G(n){On=n??!1}class M{static instance;loggedOnceMessages=new Set;MAX_LABEL_LENGTH=3;MAX_MESSAGE_LENGTH=25;cliColor=f.default.blue;mutedColor=f.default.dim;infoColor=f.default.cyan;warnColor=f.default.yellow;errorColor=f.default.red;sizeColor=f.default.green;defaultColor=f.default.white;progressFgColorMap={ESM:f.default.yellow,CJS:f.default.green,IIFE:f.default.magenta,DTS:f.default.blue};progressBgColorMap={ESM:f.default.bgYellow,CJS:f.default.bgGreen,IIFE:f.default.bgMagenta,DTS:f.default.bgBlue};labels={cli:"CLI",info:"INFO",warn:"WARN",error:"ERROR"};constructor(){}static getInstance(){if(!M.instance)M.instance=new M;return M.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:e,message:t,size:i,identifier:s,muted:o}){let c=" ".repeat(Math.max(0,this.MAX_LABEL_LENGTH-e.length)),a=o?this.mutedColor(t):t;if(i){let[m,...g]=a.split(" "),x=" ".repeat(Math.max(0,this.MAX_MESSAGE_LENGTH-m.length)),R=s?` ${r(f.default.black(` ${s} `))}`:"";return`${n(e)} ${c}${m}${x} ${this.sizeColor(i)} ${g.join(" ")}${R}`}let u=s?` ${r(f.default.black(` ${s} `))}`:"";return`${n(e)} ${c}${a}${u}`}output(n,r={},e=console.log){if(On||!this.shouldLog(r))return;if(r.verticalSpace)e("");if(e(n),r.verticalSpace)e("")}cli(n,r={}){let e=this.formatMessage({fgColor:this.cliColor,bgColor:f.default.bgBlue,label:this.labels.cli,message:n,identifier:r.identifier,muted:r.muted});this.output(e,r)}info(n,r={}){let e=this.formatMessage({fgColor:this.infoColor,bgColor:f.default.bgCyan,label:this.labels.info,message:n,identifier:r.identifier,muted:r.muted});this.output(e,r)}warn(n,r={}){let e=this.formatMessage({fgColor:this.warnColor,bgColor:f.default.bgYellow,label:this.labels.warn,message:n,identifier:r.identifier,muted:r.muted});this.output(e,r,console.warn)}error(n,r={}){let e=this.formatMessage({fgColor:this.errorColor,bgColor:f.default.bgRed,label:this.labels.error,message:n,identifier:r.identifier,muted:r.muted});this.output(e,r,console.error)}getProgressFgColor(n){for(let[r,e]of Object.entries(this.progressFgColorMap))if(n.includes(r))return e;return this.defaultColor}getProgressBgColor(n){for(let[r,e]of Object.entries(this.progressBgColorMap))if(n.includes(r))return e;return f.default.bgWhite}progress(n,r,e,t){let i,s,o={};if(typeof e==="string")i=e,s=t;else if(e)i=e.size,s=e.identifier,o=e;let c=this.getProgressFgColor(n),a=this.getProgressBgColor(n),u=this.formatMessage({fgColor:c,bgColor:a,label:n,message:r,size:i,identifier:s,muted:o.muted});this.output(u,o)}}var f,On=!1,l;var $=p(()=>{f=E(j(),1);l=M.getInstance()});var d,A,L,h,C,D,w=(n)=>{if(n instanceof Error)return n.message;return String(n)},Ar,en=(n,r)=>{let e=w(n),t=r?`[${r}] `:"",i="ERROR";if(n instanceof L)i="BUILD ERROR";else if(n instanceof h)i="DTS ERROR";else if(n instanceof C)i="CLI ERROR";else if(n instanceof D)i="WATCH ERROR";else if(n instanceof A)i="BUNUP ERROR";let s=Ar.find((o)=>o.pattern.test(e)&&(o.errorType===i||!o.errorType));if(!s)console.error(`${d.default.red(i)} ${t}${e}`);if(s)console.log(`
4
+ `),s.logSolution(e),console.log(`
5
+ `);else console.error(d.default.dim(d.default.white("If you think this is a bug, please open an issue at: ")+d.default.cyan("https://github.com/arshad-yaseen/bunup/issues/new")))},$n=(n,r)=>{en(n,r),process.exit(1)};var y=p(()=>{d=E(j(),1);$();A=class A extends Error{constructor(n){super(n);this.name="BunupError"}};L=class L extends A{constructor(n){super(n);this.name="BunupBuildError"}};h=class h extends A{constructor(n){super(n);this.name="BunupDTSBuildError"}};C=class C extends A{constructor(n){super(n);this.name="BunupCLIError"}};D=class D extends A{constructor(n){super(n);this.name="BunupWatchError"}};Ar=[{pattern:/Could not resolve: "bun"/i,errorType:"BUILD ERROR",logSolution:()=>{l.error(d.default.white("You're trying to build a project that uses Bun. ")+d.default.white("Please set the target option to ")+d.default.cyan("`bun`")+d.default.white(`.
6
+ `)+d.default.white("Example: ")+d.default.green("`bunup --target bun`")+d.default.white(" or in config: ")+d.default.green("{ target: 'bun' }"))}}]});import Sn from"fs/promises";import Ir from"path";function kn(){return!1}function Ln(n,r,e){return Array.isArray(n)?n.map((t)=>({...t,[r]:e})):{...n,[r]:e}}function Tn(n){return Array.isArray(n)?n:[n]}function Rn(n,r){switch(n){case"esm":return I(r)?".js":".mjs";case"cjs":return I(r)?".cjs":".js";case"iife":return".global.js"}}function Mn(n,r){switch(n){case"esm":return I(r)?".d.ts":".d.mts";case"cjs":return I(r)?".d.cts":".d.ts";case"iife":return".d.ts"}}function tn(n){return n==="node"||n==="bun"}function I(n){return n==="module"}function F(n){return n>=1000?`${(n/1000).toFixed(2)}s`:`${Math.round(n)}ms`}function An(n){if(!n)return[];return Array.from(new Set([...Object.keys(n.dependencies||{}),...Object.keys(n.peerDependencies||{})]))}function sn(n){if(n===0)return"0 B";let r=["B","KB","MB","GB"],e=Math.floor(Math.log(n)/Math.log(1024));if(e===0)return`${n} ${r[e]}`;return`${(n/1024**e).toFixed(2)} ${r[e]}`}function T(n,r=3){return n.split("/").slice(-r).join("/")}async function In(n,r){let e=Ir.join(n,r);try{await Sn.rm(e,{recursive:!0,force:!0})}catch(t){throw new L(`Failed to clean output directory: ${t}`)}await Sn.mkdir(e,{recursive:!0})}function K(n){return[".ts",".mts",".cts",".tsx"].some((r)=>n.endsWith(r))}var B=p(()=>{y()});import{basename as Er,dirname as jr,extname as _r}from"path";function Q(n){let r=Er(n),e=_r(r);return e?r.slice(0,-e.length):r}function _(n){if(typeof n==="string")return[{fullEntryPath:n,name:Q(n)}];if(typeof n==="object"&&!Array.isArray(n))return Object.entries(n).map(([t,i])=>({fullEntryPath:i,name:t}));let r=[],e=new Set;for(let t of n){let i=Q(t);if(!e.has(i)){r.push({fullEntryPath:t,name:i}),e.add(i);continue}let o=jr(t).split("/").filter((a)=>a!=="."&&a!=="");if(o.length===0){let a=1,u;do u=`${i}_${a++}`;while(e.has(u));r.push({fullEntryPath:t,name:u}),e.add(u);continue}let c=!1;for(let a=1;a<=o.length&&!c;a++){let m=`${o.slice(-a).join("/")}/${i}`;if(!e.has(m))r.push({fullEntryPath:t,name:m}),e.add(m),c=!0}if(!c){let a=1,u;do u=`${o.join("/")}/${i}_${a++}`;while(e.has(u));r.push({fullEntryPath:t,name:u}),e.add(u)}}return r}function En(n){return n.filter((r)=>K(r.fullEntryPath))}function jn(n,r){return`[dir]/${n}${r}`}var Z=p(()=>{B()});import Wr from"path";import{loadConfig as Un}from"coffi";async function Hn(n,r,e){return Array.isArray(n)&&"root"in n[0]?n.filter((t)=>e?e.includes(t.name):!0).map((t)=>({rootDir:Wr.resolve(r,t.root),options:Ln(t.config,"name",t.name)})):[{rootDir:r,options:n}]}async function Wn(n){let{config:r,filepath:e}=await Un({name:"package",cwd:n,extensions:[".json"]});return{packageJson:r,path:e}}async function Yn(n,r){let{config:e,filepath:t}=await Un({name:"tsconfig",cwd:n,extensions:[".json"],preferredPath:r});return{tsconfig:e,path:t}}var an=p(()=>{B()});function Yr(n){return An(n).map((r)=>new RegExp(`^${r}($|\\/|\\\\)`))}function qn(n,r){return typeof r==="string"?r===n:r.test(n)}function X(n,r,e){let i=Yr(e).some((o)=>o.test(n))||r.external?.some((o)=>qn(n,o)),s=r.noExternal?.some((o)=>qn(n,o));return i&&!s}var cn=p(()=>{B()});import{resolveTsImportPath as qr}from"ts-import-resolver";var U="\x00dts:",Gn=(n,r,e)=>{return{name:"bunup:virtual-dts",async resolveId(t,i){if(un(t))return t;if(!i||!un(i))return null;let s=r.tsconfig?qr({path:t,importer:v(i),tsconfig:r.tsconfig,rootDir:e}):null;if(!s)return null;let o=k(s);if(n.has(o))return z(o);return null},load(t){if(t.startsWith(U)){let i=v(t),s=n.get(i);if(s)return s}return null}}};var mn=p(()=>{H()});function Dn(n){return n.endsWith(".d.ts")||n.endsWith(".d.mts")||n.endsWith(".d.cts")}function Fn(n){return ln.test(n)&&!Dn(n)}function k(n){if(Dn(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(ln.test(n))return n.replace(ln,".d.ts");return`${n}.d.ts`}function un(n){return n.startsWith(U)}function v(n){return n.replace(U,"")}function z(n){return`${U}${n}`}function Kn(n,r){if(r===void 0)return"";let e=n.slice(0,r).split(`
7
+ `),t=e.length,i=e[e.length-1].length+1;return` (${t}:${i})`}function Qn(n,r,e,t){if(typeof t==="boolean"&&t)return!1;if(Array.isArray(t)){for(let i of t)if(typeof i==="string"&&n===i)return!1;else if(i instanceof RegExp&&i.test(n))return!1}return X(n,r,e)}var ln;var H=p(()=>{cn();mn();ln=/\.(js|mjs|cjs|ts|mts|cts|tsx|jsx)$/});import Zn from"path";import{ResolverFactory as Gr}from"oxc-resolver";function Nn(n,r){return{name:"bunup:types-resolve",buildStart(){gn||=new Gr({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(e,t){if(r===!1)return;if(e==="bun")return;let i=t?v(t):void 0;if(/\0/.test(e))return;if(Array.isArray(r)){if(!r.some((a)=>typeof a==="string"?a===e:a.test(e)))return}let s=i?Zn.dirname(i):process.cwd(),{path:o}=await gn.async(s,e);if(!o)return;if(Fn(o)){let c=k(o);try{let{path:a}=await gn.async(Zn.dirname(o),c);if(a)return a}catch(a){}return}return o}}}var gn;var Vn=p(()=>{H()});import{build as Dr}from"rolldown";import{dts as Fr}from"rolldown-plugin-dts";async function Xn(n,r,e,t,i,s){let o=k(n),c=z(o),a=typeof e.dts==="object"&&"resolve"in e.dts?e.dts.resolve:void 0;try{let{output:u}=await Dr({input:c,output:{dir:e.outDir},write:!1,...i.path&&{resolve:{tsconfigFilename:i.path}},onwarn(m,g){if(["UNRESOLVED_IMPORT","CIRCULAR_DEPENDENCY","EMPTY_BUNDLE"].includes(m.code??""))return;g(m)},plugins:[Gn(r,i,s),a&&Nn(i,a),Fr({dtsInput:!0,emitDtsOnly:!0})],external:(m)=>Qn(m,e,t,a)});if(!u[0]?.code)return l.warn(`Generated empty declaration file for entry "${n}"`,{muted:!0}),"";return u[0].code}catch(u){throw new h(`DTS bundling failed for entry "${n}": ${w(u)}`)}}var zn=p(()=>{y();$();Vn();H();mn()});import{resolveTsImportPath as Kr}from"ts-import-resolver";function Pr(n){let r=new Set,e=[Qr,Zr,Nr,Vr,Xr,zr,Jr];for(let t of e){let i=n.matchAll(t);for(let s of i)if(s[1])r.add(s[1])}return r}async function Jn(n,r,e){let t=new Set([n]),i=[n];while(i.length){let s=i.pop();if(!s)continue;try{let o=await Bun.file(s).text(),c=Pr(o);for(let a of c){let u=r.tsconfig?Kr({path:a,importer:s,tsconfig:r.tsconfig,rootDir:e}):null;if(!u)continue;if(!t.has(u))t.add(u),i.push(u)}}catch(o){l.warn(`Error processing ${s}: ${w(o)}`)}}return t}var Qr,Zr,Nr,Vr,Xr,zr,Jr;var Pn=p(()=>{y();$();Qr=/^\s*import\s+(?:[^'"]*?\s+from\s+)?['"]([^'"]+)['"]/gm,Zr=/^\s*export\s+.*from\s+['"]([^'"]+)['"]/gm,Nr=/import\s*\(\s*['"]([^'"]+)['"]\s*\)/g,Vr=/require\s*\(\s*['"]([^'"]+)['"]\s*\)/g,Xr=/import\s+\w+\s*=\s*require\s*\(\s*['"]([^'"]+)['"]\s*\)/g,zr=/\/\/\/\s*<reference\s+path\s*=\s*['"]([^'"]+)['"]\s*\/>/g,Jr=/\/\/\/\s*<reference\s+types\s*=\s*['"]([^'"]+)['"]\s*\/>/g});import{isolatedDeclaration as ne}from"oxc-transform";async function nr(n,r){let e=!1,t=new Map;if(await Promise.all([...n].map(async(i)=>{try{let s=k(i);if(!await Bun.file(i).exists())return;let c=await Bun.file(i).text(),{code:a,errors:u}=ne(i,c);if(a)t.set(s,a);for(let m of u){if(!e&&!r)console.log(`
8
+ `);let g=m.labels[0],x=g?Kn(c,g.start):"",S=`${T(i)}${x}: ${re(m.message)}`;l[r?"warn":"error"](S),e=!0}}catch(s){l.warn(`Failed to generate declaration for ${i}: ${w(s)}`)}})),e&&!r){if(l.info(`TypeScript is just asking for explicit type annotations on your exports. This helps ensure better, more reliable type declarations for your library. Bunup uses TypeScript's ${fn.default.blue("isolatedDeclarations")} feature to generate these declarations, which requires each export from your library to be fully typed. You can learn more here: ${fn.default.blue("https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-5.html#isolated-declarations")}`,{muted:!0,verticalSpace:!0}),!kn())process.exit(1)}return t}function re(n){return n.replace(" with --isolatedDeclarations","").replace(" with --isolatedDeclaration","")}var fn;var rr=p(()=>{fn=E(j(),1);y();$();B();H()});import er from"fs/promises";import pn from"path";async function tr(n,r){let e=pn.resolve(n),t=pn.resolve(e,r);if(!await er.exists(e))throw new h(`Root directory does not exist: ${e}`);if(!await Bun.file(t).exists())throw new h(`Entry file does not exist: ${t}`);if(!K(t))throw new h(`Entry file must be a TypeScript file: ${t}`);if(pn.relative(e,t).startsWith(".."))throw new h(`Entry file must be within rootDir: ${t}`);return{absoluteRootDir:e,absoluteEntry:t}}var ir=p(()=>{y();B()});async function sr(n,r,e,t,i){let{absoluteEntry:s}=await tr(n,r),o=await Jn(s,t,n),c=await nr(o,e.watch);return Xn(s,c,e,i,t,n)}var or=p(()=>{zn();Pn();rr();ir()});function J(n){return{...ee,...n}}function ar(n){let{minify:r,minifyWhitespace:e,minifyIdentifiers:t,minifySyntax:i}=n,s=r===!0;return{whitespace:e??s,identifiers:t??s,syntax:i??s}}function cr(n,r){return r==="cjs"?n:void 0}function ur(n,r,e,t){return{...typeof e==="object"&&Object.keys(e).reduce((i,s)=>{let o=JSON.stringify(e[s]);return i[`process.env.${s}`]=o,i[`import.meta.env.${s}`]=o,i},{}),...n,...t==="cjs"&&(r===!0||typeof r==="object"&&r.importMetaUrl)&&{"import.meta.url":"importMetaUrl"}}}function mr(n,r){return n===void 0?r==="esm":n}function lr(n){return typeof n==="string"?n:void 0}var ee;var dn=p(()=>{ee={entry:[],format:["cjs"],outDir:"dist",target:"node",clean:!0}});function gr(n,r){return{name:"bunup:external-plugin",setup(e){e.onResolve({filter:/.*/},(t)=>{let i=t.path;if(X(i,n,r))return{path:i,external:!0};return null})}}}var fr=p(()=>{cn()});function pr({format:n,target:r,shims:e}){let i=ie(e).map((s)=>bn[s]).filter((s)=>s.appliesTo(n,r));if(i.length===0)return{name:"bunup:inject-shims",setup(){}};return{name:"bunup:inject-shims",setup(s){s.onLoad({filter:te},async({path:o})=>{let c=await Bun.file(o).text(),a=i.filter((x)=>x.isNeededInFile(c));if(a.length===0)return;let{shebangLine:u,codeContent:m}=se(c),g=a.map((x)=>x.generateCode()).join("");return{contents:u+g+m}})}}}function ie(n){if(n===!0)return Object.keys(bn);if(!n)return[];return Object.entries(n).filter(([r,e])=>e&&(r in bn)).map(([r])=>r)}function se(n){if(!n.startsWith("#!"))return{shebangLine:"",codeContent:n};let r=n.indexOf(`
9
+ `);return r===-1?{shebangLine:"",codeContent:n}:{shebangLine:n.slice(0,r+1),codeContent:n.slice(r+1)}}var te,bn;var dr=p(()=>{B();te=/\.(js|ts|jsx|tsx|mts|cts)$/,bn={dirnameFilename:{appliesTo:(n,r)=>n==="esm"&&tn(r),isNeededInFile:(n)=>/\b__dirname\b/.test(n)||/\b__filename\b/.test(n),generateCode:()=>`import { fileURLToPath } from 'url';
9
10
  import { dirname } from 'path';
10
11
 
11
12
  const __filename = fileURLToPath(import.meta.url);
12
13
  const __dirname = dirname(__filename);
13
14
 
14
- `},importMetaUrl:{appliesTo:(e,r)=>e==="cjs"&&z(r),isNeededInFile:(e)=>/\bimport\.meta\.url\b/.test(e),generateCode:()=>`import { pathToFileURL } from 'url';
15
+ `},importMetaUrl:{appliesTo:(n,r)=>n==="cjs"&&tn(r),isNeededInFile:(n)=>/\bimport\.meta\.url\b/.test(n),generateCode:()=>`import { pathToFileURL } from 'url';
15
16
 
16
17
  const importMetaUrl = pathToFileURL(__filename).href;
17
18
 
18
- `}};function Ze({format:e,target:r,shims:n}){let i=jr(n).map((s)=>ie[s]).filter((s)=>s.appliesTo(e,r));if(i.length===0)return{name:"bunup:inject-shims",setup(){}};return{name:"bunup:inject-shims",setup(s){s.onLoad({filter:Ir},async({path:o})=>{let l=await Bun.file(o).text(),a=i.filter((h)=>h.isNeededInFile(l));if(a.length===0)return;let{shebangLine:c,codeContent:u}=vr(l),f=a.map((h)=>h.generateCode()).join("");return{contents:c+f+u}})}}}function jr(e){if(e===!0)return Object.keys(ie);if(!e)return[];return Object.entries(e).filter(([r,n])=>n&&(r in ie)).map(([r])=>r)}function vr(e){if(!e.startsWith("#!"))return{shebangLine:"",codeContent:e};let r=e.indexOf(`
19
- `);return r===-1?{shebangLine:"",codeContent:e}:{shebangLine:e.slice(0,r+1),codeContent:e.slice(r+1)}}function Ne(e){return e.filter((r)=>r.type==="bun")}var k=new Set;async function Y(e,r=process.cwd()){let n=q(e);if(!n.entry||n.entry.length===0||!n.outDir)throw new B("Nothing to build. Please make sure you have provided a proper bunup configuration or cli arguments.");if(n.clean)ye(r,n.outDir);v(n.silent);let{packageJson:t,path:i}=await De(r);if(t&&i)g.cli(`Using package.json: ${O(i,2)}`,{muted:!0,identifier:n.name,once:`${i}:${n.name}`});let s=E(n.entry),o=t?.type;if(!n.dtsOnly){let l=[Qe(n,t),...Ne(n.plugins??[]).map((c)=>c.plugin)],a=n.format.flatMap((c)=>s.map((u)=>{return Ur(n,r,u,c,o,l)}));await Promise.all(a)}if(n.dts||n.dtsOnly){let l=await He(r,n.preferredTsconfigPath);if(l.path)g.cli(`Using tsconfig: ${O(l.path,2)}`,{muted:!0,identifier:n.name,once:`${l.path}:${n.name}`});let a=n.format.filter((u)=>{if(u==="iife"&&!T(o)&&n.format.includes("cjs"))return!1;return!0}),c=typeof n.dts==="object"&&n.dts.entry?E(n.dts.entry):ve(s);try{await Promise.all(c.map(async(u)=>{let f=await je(r,u.fullEntryPath,n,l,t);await Promise.all(a.map(async(h)=>{let L=n.outputExtension?.({format:h,packageType:o,options:n,entry:u}).dts??he(h,o),ae=`${n.outDir}/${u.name}${L}`,ce=`${r}/${ae}`;await Bun.write(ce,f);let Je=Bun.file(ce).size||0;g.progress("DTS",ae,P(Je),n.name)}))}))}catch(u){throw new b(x(u))}}if(n.onBuildSuccess)await n.onBuildSuccess(n)}async function Ur(e,r,n,t,i,s){let o=e.outputExtension?.({format:t,packageType:i,options:e,entry:n}).js??xe(t,i),l=await Bun.build({entrypoints:[`${r}/${n.fullEntryPath}`],format:t,naming:{entry:Ue(n.name,o)},splitting:Ge(e.splitting,t),bytecode:qe(e.bytecode,t),define:Ye(e.define,e.shims,e.env,t),minify:Fe(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:Ke(e.env),plugins:[...s,Ze({format:t,target:e.target,shims:e.shims})],throw:!1});if(!l.success)for(let f of l.logs){if(f.level==="error")throw new B(f.message);if(f.level==="warning")g.warn(f.message);else if(f.level==="info")g.info(f.message)}let a=`${e.outDir}/${n.name}${o}`,c=`${r}/${a}`,u=Bun.file(c).size||0;g.progress(t.toUpperCase(),a,P(u),e.name)}var se=N(j(),1);var G="0.4.71";var Xe="https://bunup.dev/cli-options";function d(e){return(r,n)=>{n[e]=r===!0||r==="true"}}function y(e){return(r,n)=>{if(typeof r==="string")n[e]=r;else throw new w(`Option --${e} requires a string value`)}}function K(e){return(r,n)=>{if(typeof r==="string")n[e]=r.split(",");else throw new w(`Option --${e} requires a string value`)}}function Wr(e){return(r,n)=>{if(typeof r==="boolean")n[e]=r;else if(typeof r==="string")if(r.toLowerCase()==="true"||r.toLowerCase()==="false")n[e]=r.toLowerCase()==="true";else n[e]=r;else throw new w(`Option --${e} requires a boolean or string value`)}}function Dr(){console.log(`
19
+ `}}});function br(n){return n.filter((r)=>r.type==="bun")}var xr={};Sr(xr,{build:()=>xn});async function xn(n,r=process.cwd()){let e=J(n);if(!e.entry||e.entry.length===0||!e.outDir)throw new L("Nothing to build. Please make sure you have provided a proper bunup configuration or cli arguments.");if(e.clean)In(r,e.outDir);G(e.silent);let{packageJson:t,path:i}=await Wn(r);if(t&&i)l.cli(`Using package.json: ${T(i,2)}`,{muted:!0,identifier:e.name,once:`${i}:${e.name}`});let s=_(e.entry),o=t?.type;if(!e.dtsOnly){let c=[gr(e,t),...br(e.plugins??[]).map((u)=>u.plugin)],a=e.format.flatMap((u)=>s.map((m)=>{return ae(e,r,m,u,o,c)}));await Promise.all(a)}if(e.dts||e.dtsOnly){let c=await Yn(r,e.preferredTsconfigPath);if(c.path)l.cli(`Using tsconfig: ${T(c.path,2)}`,{muted:!0,identifier:e.name,once:`${c.path}:${e.name}`});let a=e.format.filter((m)=>{if(m==="iife"&&!I(o)&&e.format.includes("cjs"))return!1;return!0}),u=typeof e.dts==="object"&&e.dts.entry?_(e.dts.entry):En(s);try{await Promise.all(u.map(async(m)=>{let g=await sr(r,m.fullEntryPath,e,c,t);await Promise.all(a.map(async(x)=>{let R=e.outputExtension?.({format:x,packageType:o,options:e,entry:m}).dts??Mn(x,o),S=`${e.outDir}/${m.name}${R}`,wn=`${r}/${S}`;await Bun.write(wn,g);let wr=Bun.file(wn).size||0;l.progress("DTS",S,sn(wr),e.name)}))}))}catch(m){throw new h(w(m))}}if(e.onBuildSuccess)await e.onBuildSuccess(e)}async function ae(n,r,e,t,i,s){let o=n.outputExtension?.({format:t,packageType:i,options:n,entry:e}).js??Rn(t,i),c=await Bun.build({entrypoints:[`${r}/${e.fullEntryPath}`],format:t,naming:{entry:jn(e.name,o)},splitting:mr(n.splitting,t),bytecode:cr(n.bytecode,t),define:ur(n.define,n.shims,n.env,t),minify:ar(n),outdir:`${r}/${n.outDir}`,target:n.target,sourcemap:n.sourcemap,loader:n.loader,drop:n.drop,banner:n.banner,footer:n.footer,publicPath:n.publicPath,env:lr(n.env),plugins:[...s,pr({format:t,target:n.target,shims:n.shims})],throw:!1});if(!c.success)for(let g of c.logs){if(g.level==="error")throw new L(g.message);if(g.level==="warning")l.warn(g.message);else if(g.level==="info")l.info(g.message)}let a=`${n.outDir}/${e.name}${o}`,u=`${r}/${a}`,m=Bun.file(u).size||0;l.progress(t.toUpperCase(),a,sn(m),n.name)}var hn=p(()=>{or();y();Z();an();$();dn();fr();dr();B()});import{exec as ce}from"tinyexec";var on=E(j(),1);var q="0.4.72";var Bn="https://bunup.dev/cli-options";y();Z();$();function b(n){return(r,e)=>{e[n]=r===!0||r==="true"}}function O(n){return(r,e)=>{if(typeof r==="string")e[n]=r;else throw new C(`Option --${n} requires a string value`)}}function N(n){return(r,e)=>{if(typeof r==="string")e[n]=r.split(",");else throw new C(`Option --${n} requires a string value`)}}function vr(n){return(r,e)=>{if(typeof r==="boolean")e[n]=r;else if(typeof r==="string")if(r.toLowerCase()==="true"||r.toLowerCase()==="false")e[n]=r.toLowerCase()==="true";else e[n]=r;else throw new C(`Option --${n} requires a boolean or string value`)}}function Ur(){console.log(`
20
20
  Bunup - \u26A1\uFE0F A blazing-fast build tool for your libraries built with Bun.
21
- `),console.log("For more information on available options, visit:"),console.log(`${se.default.cyan(se.default.underline(Xe))}
22
- `),process.exit(0)}function Hr(){console.log(G),process.exit(0)}var Ve={name:{flags:["n","name"],handler:y("name")},format:{flags:["f","format"],handler:K("format")},outDir:{flags:["o","out-dir"],handler:y("outDir")},minify:{flags:["m","minify"],handler:d("minify")},watch:{flags:["w","watch"],handler:d("watch")},dts:{flags:["d","dts"],handler:d("dts")},banner:{flags:["bn","banner"],handler:y("banner")},footer:{flags:["ft","footer"],handler:y("footer")},external:{flags:["e","external"],handler:K("external")},sourcemap:{flags:["sm","sourcemap"],handler:Wr("sourcemap")},target:{flags:["t","target"],handler:y("target")},minifyWhitespace:{flags:["mw","minify-whitespace"],handler:d("minifyWhitespace")},minifyIdentifiers:{flags:["mi","minify-identifiers"],handler:d("minifyIdentifiers")},minifySyntax:{flags:["ms","minify-syntax"],handler:d("minifySyntax")},clean:{flags:["c","clean"],handler:d("clean")},splitting:{flags:["s","splitting"],handler:d("splitting")},noExternal:{flags:["ne","no-external"],handler:K("noExternal")},preferredTsconfigPath:{flags:["tsconfig","preferred-tsconfig-path"],handler:y("preferredTsconfigPath")},bytecode:{flags:["bc","bytecode"],handler:d("bytecode")},dtsOnly:{flags:["do","dts-only"],handler:d("dtsOnly")},silent:{flags:["silent"],handler:d("silent")},config:{flags:["config"],handler:y("config")},publicPath:{flags:["pp","public-path"],handler:y("publicPath")},env:{flags:["env"],handler:y("env")},shims:{flags:["shims"],handler:d("shims")},onSuccess:{flags:["onSuccess"],handler:y("onSuccess")},filter:{flags:["filter"],handler:K("filter")},entry:{flags:["entry"],handler:(e,r,n)=>{if(typeof e!=="string")throw new w(`Entry${n?` --entry.${n}`:""} requires a string value`);let t=r.entry||{};if(n){if(t[n])g.warn(`Duplicate entry name '${n}' provided via --entry.${n}. Overwriting previous entry.`);t[n]=e}else{let i=F(e);if(t[i])g.warn(`Duplicate entry name '${i}' derived from '${e}'. Overwriting previous entry.`);t[i]=e}r.entry=t}},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:()=>Dr()},version:{flags:["v","version"],handler:()=>Hr()}},Q={};for(let e of Object.values(Ve))for(let r of e.flags)Q[r]=e.handler;function ze(e){let r={};for(let n=0;n<e.length;n++){let t=e[n];if(t.startsWith("--")){let i,s;if(t.includes("=")){let[o,l]=t.slice(2).split("=",2);i=o,s=l}else{i=t.slice(2);let o=e[n+1];if(s=o&&!o.startsWith("-")?o:!0,typeof s==="string")n++}if(i.includes(".")){let[o,l]=i.split(".",2),a=Q[o];if(a)a(s,r,l);else throw new w(`Unknown option: --${i}`)}else{let o=Q[i];if(o)o(s,r);else throw new w(`Unknown option: --${i}`)}}else if(t.startsWith("-")){let i=t.slice(1),s=e[n+1],o=s&&!s.startsWith("-")?s:!0;if(typeof o==="string")n++;let l=Q[i];if(l)l(o,r);else throw new w(`Unknown option: -${i}`)}else Ve.entry.handler(t,r,void 0)}return r}import{loadConfig as Yr}from"coffi";import Z from"path";import Fr from"chokidar";async function Pe(e,r){let n=new Set,t=q(e),i=E(t.entry);for(let a of i){let c=Z.resolve(r,a.fullEntryPath),u=Z.dirname(c);n.add(u)}let s=Fr.watch(Array.from(n),{persistent:!0,awaitWriteFinish:{stabilityThreshold:100,pollInterval:50},ignoreInitial:!0,atomic:!0,ignorePermissionErrors:!0,ignored:[/[\\/]\.git[\\/]/,/[\\/]node_modules[\\/]/,Z.join(r,t.outDir)]}),o=!1,l=async(a=!1)=>{if(o)return;o=!0;try{let c=performance.now();if(await Y({...t,entry:i.map((u)=>u.fullEntryPath),clean:!1},r),!a)g.cli(`\uD83D\uDCE6 Rebuild finished in ${_(performance.now()-c)}`);await oe()}catch(c){V(c)}finally{o=!1}};s.on("change",(a)=>{let c=Z.relative(r,a);g.cli(`File changed: ${c}`,{muted:!0,once:c}),l()}),s.on("error",(a)=>{throw new U(`Watcher error: ${x(a)}`)}),await l(!0)}async function Gr(e=Bun.argv.slice(2)){let r=ze(e);v(r.silent);let n=process.cwd(),{config:t,filepath:i}=await Yr({name:"bunup.config",extensions:[".ts",".js",".mjs",".cjs"],maxDepth:1,preferredPath:r.config,packageJsonProperty:"bunup"}),s=!t?[{rootDir:n,options:r}]:await We(t,n,r.filter);if(g.cli(`Using bunup v${G} and bun v${Bun.version}`,{muted:!0}),i)g.cli(`Using config file: ${O(i,2)}`,{muted:!0});let o=performance.now();g.cli("Build started"),await Promise.all(s.flatMap(({options:c,rootDir:u})=>{return be(c).map(async(h)=>{let L={...h,...Kr(r)};return Qr(L,u)})}));let l=performance.now()-o,a=_(l);if(g.cli(`\u26A1\uFE0F Build completed in ${a}`),await oe(),r.watch)g.cli("\uD83D\uDC40 Watching for file changes");if(r.onSuccess)g.cli(`Running command: ${r.onSuccess}`,{muted:!0}),await qr(r.onSuccess,[],{nodeOptions:{shell:!0,stdio:"inherit"}});if(!r.watch)process.exit(process.exitCode??0)}function Kr(e){return{...e,onSuccess:void 0,config:void 0}}async function oe(){if(k.size>0)await Ie(k),k.clear()}async function Qr(e,r){if(e.watch)await Pe(e,r);else await Y(e,r)}Gr().catch((e)=>fe(e));export{oe as validateDtsFiles};
21
+ `),console.log("For more information on available options, visit:"),console.log(`${on.default.cyan(on.default.underline(Bn))}
22
+ `),process.exit(0)}function Hr(){console.log(q),process.exit(0)}var _n={name:{flags:["n","name"],handler:O("name")},format:{flags:["f","format"],handler:N("format")},outDir:{flags:["o","out-dir"],handler:O("outDir")},minify:{flags:["m","minify"],handler:b("minify")},watch:{flags:["w","watch"],handler:b("watch")},dts:{flags:["d","dts"],handler:b("dts")},banner:{flags:["bn","banner"],handler:O("banner")},footer:{flags:["ft","footer"],handler:O("footer")},external:{flags:["e","external"],handler:N("external")},sourcemap:{flags:["sm","sourcemap"],handler:vr("sourcemap")},target:{flags:["t","target"],handler:O("target")},minifyWhitespace:{flags:["mw","minify-whitespace"],handler:b("minifyWhitespace")},minifyIdentifiers:{flags:["mi","minify-identifiers"],handler:b("minifyIdentifiers")},minifySyntax:{flags:["ms","minify-syntax"],handler:b("minifySyntax")},clean:{flags:["c","clean"],handler:b("clean")},splitting:{flags:["s","splitting"],handler:b("splitting")},noExternal:{flags:["ne","no-external"],handler:N("noExternal")},preferredTsconfigPath:{flags:["tsconfig","preferred-tsconfig-path"],handler:O("preferredTsconfigPath")},bytecode:{flags:["bc","bytecode"],handler:b("bytecode")},dtsOnly:{flags:["do","dts-only"],handler:b("dtsOnly")},silent:{flags:["silent"],handler:b("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:b("shims")},onSuccess:{flags:["onSuccess"],handler:O("onSuccess")},filter:{flags:["filter"],handler:N("filter")},entry:{flags:["entry"],handler:(n,r,e)=>{if(typeof n!=="string")throw new C(`Entry${e?` --entry.${e}`:""} requires a string value`);let t=r.entry||{};if(e){if(t[e])l.warn(`Duplicate entry name '${e}' provided via --entry.${e}. Overwriting previous entry.`);t[e]=n}else{let i=Q(n);if(t[i])l.warn(`Duplicate entry name '${i}' derived from '${n}'. Overwriting previous entry.`);t[i]=n}r.entry=t}},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:()=>Ur()},version:{flags:["v","version"],handler:()=>Hr()}},V={};for(let n of Object.values(_n))for(let r of n.flags)V[r]=n.handler;function vn(n){let r={};for(let e=0;e<n.length;e++){let t=n[e];if(t.startsWith("--")){let i,s;if(t.includes("=")){let[o,c]=t.slice(2).split("=",2);i=o,s=c}else{i=t.slice(2);let o=n[e+1];if(s=o&&!o.startsWith("-")?o:!0,typeof s==="string")e++}if(i.includes(".")){let[o,c]=i.split(".",2),a=V[o];if(a)a(s,r,c);else throw new C(`Unknown option: --${i}`)}else{let o=V[i];if(o)o(s,r);else throw new C(`Unknown option: --${i}`)}}else if(t.startsWith("-")){let i=t.slice(1),s=n[e+1],o=s&&!s.startsWith("-")?s:!0;if(typeof o==="string")e++;let c=V[i];if(c)c(o,r);else throw new C(`Unknown option: -${i}`)}else _n.entry.handler(t,r,void 0)}return r}y();$();import{loadConfig as ue}from"coffi";an();B();hn();y();Z();$();dn();B();import P from"path";async function hr(n,r){let e=new Set,t=J(n),i=_(t.entry);for(let u of i){let m=P.resolve(r,u.fullEntryPath),g=P.dirname(m);e.add(g)}let o=(await import("chokidar")).watch(Array.from(e),{persistent:!0,awaitWriteFinish:{stabilityThreshold:100,pollInterval:50},ignoreInitial:!0,atomic:!0,ignorePermissionErrors:!0,ignored:[/[\\/]\.git[\\/]/,/[\\/]node_modules[\\/]/,P.join(r,t.outDir)]}),c=!1,a=async(u=!1)=>{if(c)return;c=!0;try{let m=performance.now();if(await xn({...t,entry:i.map((g)=>g.fullEntryPath),clean:!1},r),!u)l.cli(`\uD83D\uDCE6 Rebuild finished in ${F(performance.now()-m)}`)}catch(m){en(m)}finally{c=!1}};o.on("change",(u)=>{let m=P.relative(r,u);l.cli(`File changed: ${m}`,{muted:!0,once:m}),a()}),o.on("error",(u)=>{throw new D(`Watcher error: ${w(u)}`)}),await a(!0)}async function me(n=Bun.argv.slice(2)){let r=vn(n);G(r.silent);let e=process.cwd(),{config:t,filepath:i}=await ue({name:"bunup.config",extensions:[".ts",".js",".mjs",".cjs"],maxDepth:1,preferredPath:r.config,packageJsonProperty:"bunup"}),s=!t?[{rootDir:e,options:r}]:await Hn(t,e,r.filter);if(l.cli(`Using bunup v${q} and bun v${Bun.version}`,{muted:!0}),i)l.cli(`Using config file: ${T(i,2)}`,{muted:!0});let o=performance.now();l.cli("Build started");let{build:c}=await Promise.resolve().then(() => (hn(),xr));await Promise.all(s.flatMap(({options:m,rootDir:g})=>{return Tn(m).map(async(R)=>{let S={...R,...le(r)};if(S.watch)await hr(S,g);else await c(S,g)})}));let a=performance.now()-o,u=F(a);if(l.cli(`\u26A1\uFE0F Build completed in ${u}`),r.watch)l.cli("\uD83D\uDC40 Watching for file changes");if(r.onSuccess)l.cli(`Running command: ${r.onSuccess}`,{muted:!0}),await ce(r.onSuccess,[],{nodeOptions:{shell:!0,stdio:"inherit"}});if(!r.watch)process.exit(process.exitCode??0)}function le(n){return{...n,onSuccess:void 0,config:void 0}}me().catch((n)=>$n(n));
package/dist/index.js CHANGED
@@ -1,13 +1,15 @@
1
1
  // @bun @bun-cjs
2
- (function(exports, require, module, __filename, __dirname) {var Kr=Object.create;var{getPrototypeOf:Qr,defineProperty:T,getOwnPropertyNames:J,getOwnPropertyDescriptor:Zr}=Object,v=Object.prototype.hasOwnProperty;var C=(r,t,e)=>{e=r!=null?Kr(Qr(r)):{};let n=t||!r||!r.__esModule?T(e,"default",{value:r,enumerable:!0}):e;for(let o of J(r))if(!v.call(n,o))T(n,o,{get:()=>r[o],enumerable:!0});return n},z=new WeakMap,Nr=(r)=>{var t=z.get(r),e;if(t)return t;if(t=T({},"__esModule",{value:!0}),r&&typeof r==="object"||typeof r==="function")J(r).map((n)=>!v.call(t,n)&&T(t,n,{get:()=>r[n],enumerable:!(e=Zr(r,n))||e.enumerable}));return z.set(r,t),t},Xr=(r,t)=>()=>(t||r((t={exports:{}}).exports,t),t.exports);var Vr=(r,t)=>{for(var e in t)T(r,e,{get:t[e],enumerable:!0,configurable:!0,set:(n)=>t[e]=()=>n})};var D=Xr((Ct,j)=>{var E=process||{},tr=E.argv||[],R=E.env||{},zr=!(!!R.NO_COLOR||tr.includes("--no-color"))&&(!!R.FORCE_COLOR||tr.includes("--color")||E.platform==="win32"||(E.stdout||{}).isTTY&&R.TERM!=="dumb"||!!R.CI),Jr=(r,t,e=r)=>(n)=>{let o=""+n,i=o.indexOf(t,r.length);return~i?r+vr(o,t,e,i)+t:r+o+t},vr=(r,t,e,n)=>{let o="",i=0;do o+=r.substring(i,n)+e,i=n+t.length,n=r.indexOf(t,i);while(~n);return o+r.substring(i)},er=(r=zr)=>{let t=r?Jr:()=>String;return{isColorSupported:r,reset:t("\x1B[0m","\x1B[0m"),bold:t("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:t("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:t("\x1B[3m","\x1B[23m"),underline:t("\x1B[4m","\x1B[24m"),inverse:t("\x1B[7m","\x1B[27m"),hidden:t("\x1B[8m","\x1B[28m"),strikethrough:t("\x1B[9m","\x1B[29m"),black:t("\x1B[30m","\x1B[39m"),red:t("\x1B[31m","\x1B[39m"),green:t("\x1B[32m","\x1B[39m"),yellow:t("\x1B[33m","\x1B[39m"),blue:t("\x1B[34m","\x1B[39m"),magenta:t("\x1B[35m","\x1B[39m"),cyan:t("\x1B[36m","\x1B[39m"),white:t("\x1B[37m","\x1B[39m"),gray:t("\x1B[90m","\x1B[39m"),bgBlack:t("\x1B[40m","\x1B[49m"),bgRed:t("\x1B[41m","\x1B[49m"),bgGreen:t("\x1B[42m","\x1B[49m"),bgYellow:t("\x1B[43m","\x1B[49m"),bgBlue:t("\x1B[44m","\x1B[49m"),bgMagenta:t("\x1B[45m","\x1B[49m"),bgCyan:t("\x1B[46m","\x1B[49m"),bgWhite:t("\x1B[47m","\x1B[49m"),blackBright:t("\x1B[90m","\x1B[39m"),redBright:t("\x1B[91m","\x1B[39m"),greenBright:t("\x1B[92m","\x1B[39m"),yellowBright:t("\x1B[93m","\x1B[39m"),blueBright:t("\x1B[94m","\x1B[39m"),magentaBright:t("\x1B[95m","\x1B[39m"),cyanBright:t("\x1B[96m","\x1B[39m"),whiteBright:t("\x1B[97m","\x1B[39m"),bgBlackBright:t("\x1B[100m","\x1B[49m"),bgRedBright:t("\x1B[101m","\x1B[49m"),bgGreenBright:t("\x1B[102m","\x1B[49m"),bgYellowBright:t("\x1B[103m","\x1B[49m"),bgBlueBright:t("\x1B[104m","\x1B[49m"),bgMagentaBright:t("\x1B[105m","\x1B[49m"),bgCyanBright:t("\x1B[106m","\x1B[49m"),bgWhiteBright:t("\x1B[107m","\x1B[49m")}};j.exports=er();j.exports.createColors=er});var pt={};Vr(pt,{defineWorkspace:()=>rr,defineConfig:()=>P,build:()=>qr});module.exports=Nr(pt);function P(r){return r}function rr(r){return r}var hr=require("rolldown"),wr=require("rolldown-plugin-dts");var Pr=C(D());var a=C(D()),nr=!1;function or(r){nr=r??!1}class h{static instance;loggedOnceMessages=new Set;MAX_LABEL_LENGTH=3;MAX_MESSAGE_LENGTH=25;cliColor=a.default.blue;mutedColor=a.default.dim;infoColor=a.default.cyan;warnColor=a.default.yellow;errorColor=a.default.red;sizeColor=a.default.green;defaultColor=a.default.white;progressFgColorMap={ESM:a.default.yellow,CJS:a.default.green,IIFE:a.default.magenta,DTS:a.default.blue};progressBgColorMap={ESM:a.default.bgYellow,CJS:a.default.bgGreen,IIFE:a.default.bgMagenta,DTS:a.default.bgBlue};labels={cli:"CLI",info:"INFO",warn:"WARN",error:"ERROR"};constructor(){}static getInstance(){if(!h.instance)h.instance=new h;return h.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:t,label:e,message:n,size:o,identifier:i,muted:s}){let u=" ".repeat(Math.max(0,this.MAX_LABEL_LENGTH-e.length)),g=s?this.mutedColor(n):n;if(o){let[c,...b]=g.split(" "),p=" ".repeat(Math.max(0,this.MAX_MESSAGE_LENGTH-c.length)),k=i?` ${t(a.default.black(` ${i} `))}`:"";return`${r(e)} ${u}${c}${p} ${this.sizeColor(o)} ${b.join(" ")}${k}`}let m=i?` ${t(a.default.black(` ${i} `))}`:"";return`${r(e)} ${u}${g}${m}`}output(r,t={},e=console.log){if(nr||!this.shouldLog(t))return;if(t.verticalSpace)console.log("");if(e(r),t.verticalSpace)console.log("")}cli(r,t={}){let e=this.formatMessage({fgColor:this.cliColor,bgColor:a.default.bgBlue,label:this.labels.cli,message:r,identifier:t.identifier,muted:t.muted});this.output(e,t)}info(r,t={}){let e=this.formatMessage({fgColor:this.infoColor,bgColor:a.default.bgCyan,label:this.labels.info,message:r,identifier:t.identifier,muted:t.muted});this.output(e,t)}warn(r,t={}){let e=this.formatMessage({fgColor:this.warnColor,bgColor:a.default.bgYellow,label:this.labels.warn,message:r,identifier:t.identifier,muted:t.muted});this.output(e,t,console.warn)}error(r,t={}){let e=this.formatMessage({fgColor:this.errorColor,bgColor:a.default.bgRed,label:this.labels.error,message:r,identifier:t.identifier,muted:t.muted});this.output(e,t,console.error)}getProgressFgColor(r){for(let[t,e]of Object.entries(this.progressFgColorMap))if(r.includes(t))return e;return this.defaultColor}getProgressBgColor(r){for(let[t,e]of Object.entries(this.progressBgColorMap))if(r.includes(t))return e;return a.default.bgWhite}progress(r,t,e,n){let o,i,s={};if(typeof e==="string")o=e,i=n;else if(e)o=e.size,i=e.identifier,s=e;let u=this.getProgressFgColor(r),g=this.getProgressBgColor(r),m=this.formatMessage({fgColor:u,bgColor:g,label:r,message:t,size:o,identifier:i,muted:s.muted});this.output(m,s)}}var l=h.getInstance();class W extends Error{constructor(r){super(r);this.name="BunupError"}}class w extends W{constructor(r){super(r);this.name="BunupBuildError"}}class x extends W{constructor(r){super(r);this.name="BunupDTSBuildError"}}var f=(r)=>{if(r instanceof Error)return r.message;return String(r)};var H=C(require("path")),dr=require("oxc-resolver");var _=C(require("fs/promises")),ir=C(require("path"));function sr(r,t){switch(r){case"esm":return B(t)?".js":".mjs";case"cjs":return B(t)?".cjs":".js";case"iife":return".global.js"}}function gr(r,t){switch(r){case"esm":return B(t)?".d.ts":".d.mts";case"cjs":return B(t)?".d.cts":".d.ts";case"iife":return".d.ts"}}function F(r){return r==="node"||r==="bun"}function B(r){return r==="module"}function mr(r){if(!r)return[];return Array.from(new Set([...Object.keys(r.dependencies||{}),...Object.keys(r.peerDependencies||{})]))}function U(r){if(r===0)return"0 B";let t=["B","KB","MB","GB"],e=Math.floor(Math.log(r)/Math.log(1024));if(e===0)return`${r} ${t[e]}`;return`${(r/1024**e).toFixed(2)} ${t[e]}`}function L(r,t=3){return r.split("/").slice(-t).join("/")}async function ur(r,t){let e=ir.default.join(r,t);try{await _.default.rm(e,{recursive:!0,force:!0})}catch(n){throw new w(`Failed to clean output directory: ${n}`)}await _.default.mkdir(e,{recursive:!0})}function y(r){return[".ts",".mts",".cts",".tsx"].some((t)=>r.endsWith(t))}function rt(r){return mr(r).map((t)=>new RegExp(`^${t}($|\\/|\\\\)`))}function cr(r,t){return typeof t==="string"?t===r:t.test(r)}function I(r,t,e){let o=rt(e).some((s)=>s.test(r))||t.external?.some((s)=>cr(r,s)),i=t.noExternal?.some((s)=>cr(r,s));return o&&!i}var ar=require("ts-import-resolver");var $="\x00dts:",lr=(r,t,e)=>{return{name:"bunup:virtual-dts",async resolveId(n,o){if(G(n))return n;if(!o||!G(o))return null;let i=t.tsconfig?ar.resolveTsImportPath({path:n,importer:M(o),tsconfig:t.tsconfig,rootDir:e}):null;if(!i)return null;let s=d(i);if(r.has(s))return O(s);return null},load(n){if(n.startsWith($)){let o=M(n),i=r.get(o);if(i)return br.add(o),i}return null}}};var Y=/\.(js|mjs|cjs|ts|mts|cts|tsx|jsx)$/;function xr(r){return r.endsWith(".d.ts")||r.endsWith(".d.mts")||r.endsWith(".d.cts")}function pr(r){return Y.test(r)&&!xr(r)}function d(r){if(xr(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(Y.test(r))return r.replace(Y,".d.ts");return`${r}.d.ts`}function G(r){return r.startsWith($)}function M(r){return r.replace($,"")}function O(r){return`${$}${r}`}function fr(r,t,e,n){if(typeof n==="boolean"&&n)return!1;if(Array.isArray(n)){for(let o of n)if(typeof o==="string"&&r===o)return!1;else if(o instanceof RegExp&&o.test(r))return!1}return I(r,t,e)}var q;function Cr(r,t){return{name:"bunup:types-resolve",buildStart(){q||=new dr.ResolverFactory({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(e,n){if(t===!1)return;if(e==="bun")return;let o=n?M(n):void 0;if(/\0/.test(e))return;if(Array.isArray(t)){if(!t.some((g)=>typeof g==="string"?g===e:g.test(e)))return}let i=o?H.default.dirname(o):process.cwd(),{path:s}=await q.async(i,e);if(!s)return;if(pr(s)){let u=d(s);try{let{path:g}=await q.async(H.default.dirname(s),u);if(g)return g}catch(g){}return}return s}}}async function Br(r,t,e,n,o,i){let s=d(r),u=O(s),g=typeof e.dts==="object"&&"resolve"in e.dts?e.dts.resolve:void 0;try{let{output:m}=await hr.build({input:u,output:{dir:e.outDir},write:!1,...o.path&&{resolve:{tsconfigFilename:o.path}},onwarn(c,b){if(["UNRESOLVED_IMPORT","CIRCULAR_DEPENDENCY","EMPTY_BUNDLE"].includes(c.code??""))return;b(c)},plugins:[lr(t,o,i),g&&Cr(o,g),wr.dts({dtsInput:!0,emitDtsOnly:!0})],external:(c)=>fr(c,e,n,g)});if(!m[0]?.code)return l.warn(`Generated empty declaration file for entry "${r}"`,{muted:!0}),"";return m[0].code}catch(m){throw new x(`DTS bundling failed for entry "${r}": ${f(m)}`)}}var Sr=require("ts-import-resolver");var tt=/^\s*import\s+(?:[^'"]*?\s+from\s+)?['"]([^'"]+)['"]/gm,et=/^\s*export\s+.*from\s+['"]([^'"]+)['"]/gm,nt=/import\s*\(\s*['"]([^'"]+)['"]\s*\)/g,ot=/require\s*\(\s*['"]([^'"]+)['"]\s*\)/g,it=/import\s+\w+\s*=\s*require\s*\(\s*['"]([^'"]+)['"]\s*\)/g,st=/\/\/\/\s*<reference\s+path\s*=\s*['"]([^'"]+)['"]\s*\/>/g,gt=/\/\/\/\s*<reference\s+types\s*=\s*['"]([^'"]+)['"]\s*\/>/g;function mt(r){let t=new Set,e=[tt,et,nt,ot,it,st,gt];for(let n of e){let o=r.matchAll(n);for(let i of o)if(i[1])t.add(i[1])}return t}async function Tr(r,t,e){let n=new Set([r]),o=[r];while(o.length){let i=o.pop();if(!i)continue;try{let s=await Bun.file(i).text(),u=mt(s);for(let g of u){let m=t.tsconfig?Sr.resolveTsImportPath({path:g,importer:i,tsconfig:t.tsconfig,rootDir:e}):null;if(!m)continue;if(!n.has(m))n.add(m),o.push(m)}}catch(s){l.warn(`Error processing ${i}: ${f(s)}`)}}return n}var Mr=require("oxc-transform");async function $r(r){let t=new Map;return await Promise.all([...r].map(async(e)=>{try{let n=d(e);if(!await Bun.file(e).exists())return;let i=await Bun.file(e).text(),{code:s}=Mr.isolatedDeclaration(e,i);if(s)t.set(n,s)}catch(n){l.warn(`Failed to generate declaration for ${e}: ${f(n)}`)}})),t}var K=C(require("fs/promises")),A=C(require("path")),ut=require("oxc-transform");async function Rr(r,t){let e=A.default.resolve(r),n=A.default.resolve(e,t);if(!await K.default.exists(e))throw new x(`Root directory does not exist: ${e}`);if(!await Bun.file(n).exists())throw new x(`Entry file does not exist: ${n}`);if(!y(n))throw new x(`Entry file must be a TypeScript file: ${n}`);if(A.default.relative(e,n).startsWith(".."))throw new x(`Entry file must be within rootDir: ${n}`);return{absoluteRootDir:e,absoluteEntry:n}}async function Er(r,t,e,n,o){let{absoluteEntry:i}=await Rr(r,t),s=await Tr(i,n,r),u=await $r(s);return Br(i,u,e,o,n,r)}var S=require("path");function Lr(r){let t=S.basename(r),e=S.extname(t);return e?t.slice(0,-e.length):t}function Q(r){if(typeof r==="string")return[{fullEntryPath:r,name:Lr(r)}];if(typeof r==="object"&&!Array.isArray(r))return Object.entries(r).map(([n,o])=>({fullEntryPath:o,name:n}));let t=[],e=new Set;for(let n of r){let o=Lr(n);if(!e.has(o)){t.push({fullEntryPath:n,name:o}),e.add(o);continue}let s=S.dirname(n).split("/").filter((g)=>g!=="."&&g!=="");if(s.length===0){let g=1,m;do m=`${o}_${g++}`;while(e.has(m));t.push({fullEntryPath:n,name:m}),e.add(m);continue}let u=!1;for(let g=1;g<=s.length&&!u;g++){let c=`${s.slice(-g).join("/")}/${o}`;if(!e.has(c))t.push({fullEntryPath:n,name:c}),e.add(c),u=!0}if(!u){let g=1,m;do m=`${s.join("/")}/${o}_${g++}`;while(e.has(m));t.push({fullEntryPath:n,name:m}),e.add(m)}}return t}function yr(r){return r.filter((t)=>y(t.fullEntryPath))}function Ir(r,t){return`[dir]/${r}${t}`}var Z=require("coffi");async function Or(r){let{config:t,filepath:e}=await Z.loadConfig({name:"package",cwd:r,extensions:[".json"]});return{packageJson:t,path:e}}async function Ar(r,t){let{config:e,filepath:n}=await Z.loadConfig({name:"tsconfig",cwd:r,extensions:[".json"],preferredPath:t});return{tsconfig:e,path:n}}var ct={entry:[],format:["cjs"],outDir:"dist",target:"node",clean:!0};function kr(r){return{...ct,...r}}function jr(r){let{minify:t,minifyWhitespace:e,minifyIdentifiers:n,minifySyntax:o}=r,i=t===!0;return{whitespace:e??i,identifiers:n??i,syntax:o??i}}function Dr(r,t){return t==="cjs"?r:void 0}function Wr(r,t,e,n){return{...typeof e==="object"&&Object.keys(e).reduce((o,i)=>{let s=JSON.stringify(e[i]);return o[`process.env.${i}`]=s,o[`import.meta.env.${i}`]=s,o},{}),...r,...n==="cjs"&&(t===!0||typeof t==="object"&&t.importMetaUrl)&&{"import.meta.url":"importMetaUrl"}}}function _r(r,t){return r===void 0?t==="esm":r}function Fr(r){return typeof r==="string"?r:void 0}function Ur(r,t){return{name:"bunup:external-plugin",setup(e){e.onResolve({filter:/.*/},(n)=>{let o=n.path;if(I(o,r,t))return{path:o,external:!0};return null})}}}var at=/\.(js|ts|jsx|tsx|mts|cts)$/,N={dirnameFilename:{appliesTo:(r,t)=>r==="esm"&&F(t),isNeededInFile:(r)=>/\b__dirname\b/.test(r)||/\b__filename\b/.test(r),generateCode:()=>`import { fileURLToPath } from 'url';
2
+ (function(exports, require, module, __filename, __dirname) {var Zr=Object.create;var{getPrototypeOf:Nr,defineProperty:M,getOwnPropertyNames:v,getOwnPropertyDescriptor:Xr}=Object,P=Object.prototype.hasOwnProperty;var l=(r,n,t)=>{t=r!=null?Zr(Nr(r)):{};let e=n||!r||!r.__esModule?M(t,"default",{value:r,enumerable:!0}):t;for(let i of v(r))if(!P.call(e,i))M(e,i,{get:()=>r[i],enumerable:!0});return e},J=new WeakMap,Vr=(r)=>{var n=J.get(r),t;if(n)return n;if(n=M({},"__esModule",{value:!0}),r&&typeof r==="object"||typeof r==="function")v(r).map((e)=>!P.call(n,e)&&M(n,e,{get:()=>r[e],enumerable:!(t=Xr(r,e))||t.enumerable}));return J.set(r,n),n},zr=(r,n)=>()=>(n||r((n={exports:{}}).exports,n),n.exports);var Jr=(r,n)=>{for(var t in n)M(r,t,{get:n[t],enumerable:!0,configurable:!0,set:(e)=>n[t]=()=>e})};var A=zr((hn,W)=>{var O=process||{},tr=O.argv||[],I=O.env||{},vr=!(!!I.NO_COLOR||tr.includes("--no-color"))&&(!!I.FORCE_COLOR||tr.includes("--color")||O.platform==="win32"||(O.stdout||{}).isTTY&&I.TERM!=="dumb"||!!I.CI),Pr=(r,n,t=r)=>(e)=>{let i=""+e,o=i.indexOf(n,r.length);return~o?r+rn(i,n,t,o)+n:r+i+n},rn=(r,n,t,e)=>{let i="",o=0;do i+=r.substring(o,e)+t,o=e+n.length,e=r.indexOf(n,o);while(~e);return i+r.substring(o)},er=(r=vr)=>{let n=r?Pr:()=>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")}};W.exports=er();W.exports.createColors=er});var Cn={};Jr(Cn,{defineWorkspace:()=>nr,defineConfig:()=>rr,build:()=>qr});module.exports=Vr(Cn);function rr(r){return r}function nr(r){return r}var hr=require("rolldown"),Rr=require("rolldown-plugin-dts");var nn=l(A());var b=l(A()),ir=!1;function or(r){ir=r??!1}class w{static instance;loggedOnceMessages=new Set;MAX_LABEL_LENGTH=3;MAX_MESSAGE_LENGTH=25;cliColor=b.default.blue;mutedColor=b.default.dim;infoColor=b.default.cyan;warnColor=b.default.yellow;errorColor=b.default.red;sizeColor=b.default.green;defaultColor=b.default.white;progressFgColorMap={ESM:b.default.yellow,CJS:b.default.green,IIFE:b.default.magenta,DTS:b.default.blue};progressBgColorMap={ESM:b.default.bgYellow,CJS:b.default.bgGreen,IIFE:b.default.bgMagenta,DTS:b.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,size:i,identifier:o,muted:s}){let u=" ".repeat(Math.max(0,this.MAX_LABEL_LENGTH-t.length)),g=s?this.mutedColor(e):e;if(i){let[c,...x]=g.split(" "),f=" ".repeat(Math.max(0,this.MAX_MESSAGE_LENGTH-c.length)),S=o?` ${n(b.default.black(` ${o} `))}`:"";return`${r(t)} ${u}${c}${f} ${this.sizeColor(i)} ${x.join(" ")}${S}`}let m=o?` ${n(b.default.black(` ${o} `))}`:"";return`${r(t)} ${u}${g}${m}`}output(r,n={},t=console.log){if(ir||!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:b.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:b.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:b.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:b.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 b.default.bgWhite}progress(r,n,t,e){let i,o,s={};if(typeof t==="string")i=t,o=e;else if(t)i=t.size,o=t.identifier,s=t;let u=this.getProgressFgColor(r),g=this.getProgressBgColor(r),m=this.formatMessage({fgColor:u,bgColor:g,label:r,message:n,size:i,identifier:o,muted:s.muted});this.output(m,s)}}var a=w.getInstance();class D extends Error{constructor(r){super(r);this.name="BunupError"}}class B extends D{constructor(r){super(r);this.name="BunupBuildError"}}class p extends D{constructor(r){super(r);this.name="BunupDTSBuildError"}}var d=(r)=>{if(r instanceof Error)return r.message;return String(r)};var q=l(require("path")),wr=require("oxc-resolver");var G=l(require("fs/promises")),sr=l(require("path"));function gr(){return!1}function mr(r,n){switch(r){case"esm":return h(n)?".js":".mjs";case"cjs":return h(n)?".cjs":".js";case"iife":return".global.js"}}function ur(r,n){switch(r){case"esm":return h(n)?".d.ts":".d.mts";case"cjs":return h(n)?".d.cts":".d.ts";case"iife":return".d.ts"}}function U(r){return r==="node"||r==="bun"}function h(r){return r==="module"}function cr(r){if(!r)return[];return Array.from(new Set([...Object.keys(r.dependencies||{}),...Object.keys(r.peerDependencies||{})]))}function Y(r){if(r===0)return"0 B";let n=["B","KB","MB","GB"],t=Math.floor(Math.log(r)/Math.log(1024));if(t===0)return`${r} ${n[t]}`;return`${(r/1024**t).toFixed(2)} ${n[t]}`}function $(r,n=3){return r.split("/").slice(-n).join("/")}async function br(r,n){let t=sr.default.join(r,n);try{await G.default.rm(t,{recursive:!0,force:!0})}catch(e){throw new B(`Failed to clean output directory: ${e}`)}await G.default.mkdir(t,{recursive:!0})}function k(r){return[".ts",".mts",".cts",".tsx"].some((n)=>r.endsWith(n))}function tn(r){return cr(r).map((n)=>new RegExp(`^${n}($|\\/|\\\\)`))}function xr(r,n){return typeof n==="string"?n===r:n.test(r)}function j(r,n,t){let i=tn(t).some((s)=>s.test(r))||n.external?.some((s)=>xr(r,s)),o=n.noExternal?.some((s)=>xr(r,s));return i&&!o}var ar=require("ts-import-resolver");var T="\x00dts:",fr=(r,n,t)=>{return{name:"bunup:virtual-dts",async resolveId(e,i){if(F(e))return e;if(!i||!F(i))return null;let o=n.tsconfig?ar.resolveTsImportPath({path:e,importer:L(i),tsconfig:n.tsconfig,rootDir:t}):null;if(!o)return null;let s=C(o);if(r.has(s))return y(s);return null},load(e){if(e.startsWith(T)){let i=L(e),o=r.get(i);if(o)return o}return null}}};var H=/\.(js|mjs|cjs|ts|mts|cts|tsx|jsx)$/;function pr(r){return r.endsWith(".d.ts")||r.endsWith(".d.mts")||r.endsWith(".d.cts")}function lr(r){return H.test(r)&&!pr(r)}function C(r){if(pr(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(H.test(r))return r.replace(H,".d.ts");return`${r}.d.ts`}function F(r){return r.startsWith(T)}function L(r){return r.replace(T,"")}function y(r){return`${T}${r}`}function dr(r,n){if(n===void 0)return"";let t=r.slice(0,n).split(`
3
+ `),e=t.length,i=t[t.length-1].length+1;return` (${e}:${i})`}function Cr(r,n,t,e){if(typeof e==="boolean"&&e)return!1;if(Array.isArray(e)){for(let i of e)if(typeof i==="string"&&r===i)return!1;else if(i instanceof RegExp&&i.test(r))return!1}return j(r,n,t)}var K;function Br(r,n){return{name:"bunup:types-resolve",buildStart(){K||=new wr.ResolverFactory({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 i=e?L(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 o=i?q.default.dirname(i):process.cwd(),{path:s}=await K.async(o,t);if(!s)return;if(lr(s)){let u=C(s);try{let{path:g}=await K.async(q.default.dirname(s),u);if(g)return g}catch(g){}return}return s}}}async function Mr(r,n,t,e,i,o){let s=C(r),u=y(s),g=typeof t.dts==="object"&&"resolve"in t.dts?t.dts.resolve:void 0;try{let{output:m}=await hr.build({input:u,output:{dir:t.outDir},write:!1,...i.path&&{resolve:{tsconfigFilename:i.path}},onwarn(c,x){if(["UNRESOLVED_IMPORT","CIRCULAR_DEPENDENCY","EMPTY_BUNDLE"].includes(c.code??""))return;x(c)},plugins:[fr(n,i,o),g&&Br(i,g),Rr.dts({dtsInput:!0,emitDtsOnly:!0})],external:(c)=>Cr(c,t,e,g)});if(!m[0]?.code)return a.warn(`Generated empty declaration file for entry "${r}"`,{muted:!0}),"";return m[0].code}catch(m){throw new p(`DTS bundling failed for entry "${r}": ${d(m)}`)}}var $r=require("ts-import-resolver");var en=/^\s*import\s+(?:[^'"]*?\s+from\s+)?['"]([^'"]+)['"]/gm,on=/^\s*export\s+.*from\s+['"]([^'"]+)['"]/gm,sn=/import\s*\(\s*['"]([^'"]+)['"]\s*\)/g,gn=/require\s*\(\s*['"]([^'"]+)['"]\s*\)/g,mn=/import\s+\w+\s*=\s*require\s*\(\s*['"]([^'"]+)['"]\s*\)/g,un=/\/\/\/\s*<reference\s+path\s*=\s*['"]([^'"]+)['"]\s*\/>/g,cn=/\/\/\/\s*<reference\s+types\s*=\s*['"]([^'"]+)['"]\s*\/>/g;function bn(r){let n=new Set,t=[en,on,sn,gn,mn,un,cn];for(let e of t){let i=r.matchAll(e);for(let o of i)if(o[1])n.add(o[1])}return n}async function Lr(r,n,t){let e=new Set([r]),i=[r];while(i.length){let o=i.pop();if(!o)continue;try{let s=await Bun.file(o).text(),u=bn(s);for(let g of u){let m=n.tsconfig?$r.resolveTsImportPath({path:g,importer:o,tsconfig:n.tsconfig,rootDir:t}):null;if(!m)continue;if(!e.has(m))e.add(m),i.push(m)}}catch(s){a.warn(`Error processing ${o}: ${d(s)}`)}}return e}var Tr=require("oxc-transform"),Q=l(A());async function Sr(r,n){let t=!1,e=new Map;if(await Promise.all([...r].map(async(i)=>{try{let o=C(i);if(!await Bun.file(i).exists())return;let u=await Bun.file(i).text(),{code:g,errors:m}=Tr.isolatedDeclaration(i,u);if(g)e.set(o,g);for(let c of m){if(!t&&!n)console.log(`
4
+ `);let x=c.labels[0],f=x?dr(u,x.start):"",E=`${$(i)}${f}: ${xn(c.message)}`;a[n?"warn":"error"](E),t=!0}}catch(o){a.warn(`Failed to generate declaration for ${i}: ${d(o)}`)}})),t&&!n){if(a.info(`TypeScript is just asking for explicit type annotations on your exports. This helps ensure better, more reliable type declarations for your library. Bunup uses TypeScript's ${Q.default.blue("isolatedDeclarations")} feature to generate these declarations, which requires each export from your library to be fully typed. You can learn more here: ${Q.default.blue("https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-5.html#isolated-declarations")}`,{muted:!0,verticalSpace:!0}),!gr())process.exit(1)}return e}function xn(r){return r.replace(" with --isolatedDeclarations","").replace(" with --isolatedDeclaration","")}var Z=l(require("fs/promises")),_=l(require("path"));async function Er(r,n){let t=_.default.resolve(r),e=_.default.resolve(t,n);if(!await Z.default.exists(t))throw new p(`Root directory does not exist: ${t}`);if(!await Bun.file(e).exists())throw new p(`Entry file does not exist: ${e}`);if(!k(e))throw new p(`Entry file must be a TypeScript file: ${e}`);if(_.default.relative(t,e).startsWith(".."))throw new p(`Entry file must be within rootDir: ${e}`);return{absoluteRootDir:t,absoluteEntry:e}}async function Ir(r,n,t,e,i){let{absoluteEntry:o}=await Er(r,n),s=await Lr(o,e,r),u=await Sr(s,t.watch);return Mr(o,u,t,i,e,r)}var R=require("path");function Or(r){let n=R.basename(r),t=R.extname(n);return t?n.slice(0,-t.length):n}function N(r){if(typeof r==="string")return[{fullEntryPath:r,name:Or(r)}];if(typeof r==="object"&&!Array.isArray(r))return Object.entries(r).map(([e,i])=>({fullEntryPath:i,name:e}));let n=[],t=new Set;for(let e of r){let i=Or(e);if(!t.has(i)){n.push({fullEntryPath:e,name:i}),t.add(i);continue}let s=R.dirname(e).split("/").filter((g)=>g!=="."&&g!=="");if(s.length===0){let g=1,m;do m=`${i}_${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 c=`${s.slice(-g).join("/")}/${i}`;if(!t.has(c))n.push({fullEntryPath:e,name:c}),t.add(c),u=!0}if(!u){let g=1,m;do m=`${s.join("/")}/${i}_${g++}`;while(t.has(m));n.push({fullEntryPath:e,name:m}),t.add(m)}}return n}function Ar(r){return r.filter((n)=>k(n.fullEntryPath))}function kr(r,n){return`[dir]/${r}${n}`}var X=require("coffi");async function jr(r){let{config:n,filepath:t}=await X.loadConfig({name:"package",cwd:r,extensions:[".json"]});return{packageJson:n,path:t}}async function yr(r,n){let{config:t,filepath:e}=await X.loadConfig({name:"tsconfig",cwd:r,extensions:[".json"],preferredPath:n});return{tsconfig:t,path:e}}var an={entry:[],format:["cjs"],outDir:"dist",target:"node",clean:!0};function _r(r){return{...an,...r}}function Wr(r){let{minify:n,minifyWhitespace:t,minifyIdentifiers:e,minifySyntax:i}=r,o=n===!0;return{whitespace:t??o,identifiers:e??o,syntax:i??o}}function Dr(r,n){return n==="cjs"?r:void 0}function Gr(r,n,t,e){return{...typeof t==="object"&&Object.keys(t).reduce((i,o)=>{let s=JSON.stringify(t[o]);return i[`process.env.${o}`]=s,i[`import.meta.env.${o}`]=s,i},{}),...r,...e==="cjs"&&(n===!0||typeof n==="object"&&n.importMetaUrl)&&{"import.meta.url":"importMetaUrl"}}}function Ur(r,n){return r===void 0?n==="esm":r}function Yr(r){return typeof r==="string"?r:void 0}function Fr(r,n){return{name:"bunup:external-plugin",setup(t){t.onResolve({filter:/.*/},(e)=>{let i=e.path;if(j(i,r,n))return{path:i,external:!0};return null})}}}var fn=/\.(js|ts|jsx|tsx|mts|cts)$/,V={dirnameFilename:{appliesTo:(r,n)=>r==="esm"&&U(n),isNeededInFile:(r)=>/\b__dirname\b/.test(r)||/\b__filename\b/.test(r),generateCode:()=>`import { fileURLToPath } from 'url';
3
5
  import { dirname } from 'path';
4
6
 
5
7
  const __filename = fileURLToPath(import.meta.url);
6
8
  const __dirname = dirname(__filename);
7
9
 
8
- `},importMetaUrl:{appliesTo:(r,t)=>r==="cjs"&&F(t),isNeededInFile:(r)=>/\bimport\.meta\.url\b/.test(r),generateCode:()=>`import { pathToFileURL } from 'url';
10
+ `},importMetaUrl:{appliesTo:(r,n)=>r==="cjs"&&U(n),isNeededInFile:(r)=>/\bimport\.meta\.url\b/.test(r),generateCode:()=>`import { pathToFileURL } from 'url';
9
11
 
10
12
  const importMetaUrl = pathToFileURL(__filename).href;
11
13
 
12
- `}};function Gr({format:r,target:t,shims:e}){let o=lt(e).map((i)=>N[i]).filter((i)=>i.appliesTo(r,t));if(o.length===0)return{name:"bunup:inject-shims",setup(){}};return{name:"bunup:inject-shims",setup(i){i.onLoad({filter:at},async({path:s})=>{let u=await Bun.file(s).text(),g=o.filter((p)=>p.isNeededInFile(u));if(g.length===0)return;let{shebangLine:m,codeContent:c}=bt(u),b=g.map((p)=>p.generateCode()).join("");return{contents:m+b+c}})}}}function lt(r){if(r===!0)return Object.keys(N);if(!r)return[];return Object.entries(r).filter(([t,e])=>e&&(t in N)).map(([t])=>t)}function bt(r){if(!r.startsWith("#!"))return{shebangLine:"",codeContent:r};let t=r.indexOf(`
13
- `);return t===-1?{shebangLine:"",codeContent:r}:{shebangLine:r.slice(0,t+1),codeContent:r.slice(t+1)}}function Yr(r){return r.filter((t)=>t.type==="bun")}var br=new Set;async function qr(r,t=process.cwd()){let e=kr(r);if(!e.entry||e.entry.length===0||!e.outDir)throw new w("Nothing to build. Please make sure you have provided a proper bunup configuration or cli arguments.");if(e.clean)ur(t,e.outDir);or(e.silent);let{packageJson:n,path:o}=await Or(t);if(n&&o)l.cli(`Using package.json: ${L(o,2)}`,{muted:!0,identifier:e.name,once:`${o}:${e.name}`});let i=Q(e.entry),s=n?.type;if(!e.dtsOnly){let u=[Ur(e,n),...Yr(e.plugins??[]).map((m)=>m.plugin)],g=e.format.flatMap((m)=>i.map((c)=>{return xt(e,t,c,m,s,u)}));await Promise.all(g)}if(e.dts||e.dtsOnly){let u=await Ar(t,e.preferredTsconfigPath);if(u.path)l.cli(`Using tsconfig: ${L(u.path,2)}`,{muted:!0,identifier:e.name,once:`${u.path}:${e.name}`});let g=e.format.filter((c)=>{if(c==="iife"&&!B(s)&&e.format.includes("cjs"))return!1;return!0}),m=typeof e.dts==="object"&&e.dts.entry?Q(e.dts.entry):yr(i);try{await Promise.all(m.map(async(c)=>{let b=await Er(t,c.fullEntryPath,e,u,n);await Promise.all(g.map(async(p)=>{let k=e.outputExtension?.({format:p,packageType:s,options:e,entry:c}).dts??gr(p,s),X=`${e.outDir}/${c.name}${k}`,V=`${t}/${X}`;await Bun.write(V,b);let Hr=Bun.file(V).size||0;l.progress("DTS",X,U(Hr),e.name)}))}))}catch(c){throw new x(f(c))}}if(e.onBuildSuccess)await e.onBuildSuccess(e)}async function xt(r,t,e,n,o,i){let s=r.outputExtension?.({format:n,packageType:o,options:r,entry:e}).js??sr(n,o),u=await Bun.build({entrypoints:[`${t}/${e.fullEntryPath}`],format:n,naming:{entry:Ir(e.name,s)},splitting:_r(r.splitting,n),bytecode:Dr(r.bytecode,n),define:Wr(r.define,r.shims,r.env,n),minify:jr(r),outdir:`${t}/${r.outDir}`,target:r.target,sourcemap:r.sourcemap,loader:r.loader,drop:r.drop,banner:r.banner,footer:r.footer,publicPath:r.publicPath,env:Fr(r.env),plugins:[...i,Gr({format:n,target:r.target,shims:r.shims})],throw:!1});if(!u.success)for(let b of u.logs){if(b.level==="error")throw new w(b.message);if(b.level==="warning")l.warn(b.message);else if(b.level==="info")l.info(b.message)}let g=`${r.outDir}/${e.name}${s}`,m=`${t}/${g}`,c=Bun.file(m).size||0;l.progress(n.toUpperCase(),g,U(c),r.name)}})
14
+ `}};function Hr({format:r,target:n,shims:t}){let i=pn(t).map((o)=>V[o]).filter((o)=>o.appliesTo(r,n));if(i.length===0)return{name:"bunup:inject-shims",setup(){}};return{name:"bunup:inject-shims",setup(o){o.onLoad({filter:fn},async({path:s})=>{let u=await Bun.file(s).text(),g=i.filter((f)=>f.isNeededInFile(u));if(g.length===0)return;let{shebangLine:m,codeContent:c}=ln(u),x=g.map((f)=>f.generateCode()).join("");return{contents:m+x+c}})}}}function pn(r){if(r===!0)return Object.keys(V);if(!r)return[];return Object.entries(r).filter(([n,t])=>t&&(n in V)).map(([n])=>n)}function ln(r){if(!r.startsWith("#!"))return{shebangLine:"",codeContent:r};let n=r.indexOf(`
15
+ `);return n===-1?{shebangLine:"",codeContent:r}:{shebangLine:r.slice(0,n+1),codeContent:r.slice(n+1)}}function Kr(r){return r.filter((n)=>n.type==="bun")}async function qr(r,n=process.cwd()){let t=_r(r);if(!t.entry||t.entry.length===0||!t.outDir)throw new B("Nothing to build. Please make sure you have provided a proper bunup configuration or cli arguments.");if(t.clean)br(n,t.outDir);or(t.silent);let{packageJson:e,path:i}=await jr(n);if(e&&i)a.cli(`Using package.json: ${$(i,2)}`,{muted:!0,identifier:t.name,once:`${i}:${t.name}`});let o=N(t.entry),s=e?.type;if(!t.dtsOnly){let u=[Fr(t,e),...Kr(t.plugins??[]).map((m)=>m.plugin)],g=t.format.flatMap((m)=>o.map((c)=>{return dn(t,n,c,m,s,u)}));await Promise.all(g)}if(t.dts||t.dtsOnly){let u=await yr(n,t.preferredTsconfigPath);if(u.path)a.cli(`Using tsconfig: ${$(u.path,2)}`,{muted:!0,identifier:t.name,once:`${u.path}:${t.name}`});let g=t.format.filter((c)=>{if(c==="iife"&&!h(s)&&t.format.includes("cjs"))return!1;return!0}),m=typeof t.dts==="object"&&t.dts.entry?N(t.dts.entry):Ar(o);try{await Promise.all(m.map(async(c)=>{let x=await Ir(n,c.fullEntryPath,t,u,e);await Promise.all(g.map(async(f)=>{let S=t.outputExtension?.({format:f,packageType:s,options:t,entry:c}).dts??ur(f,s),E=`${t.outDir}/${c.name}${S}`,z=`${n}/${E}`;await Bun.write(z,x);let Qr=Bun.file(z).size||0;a.progress("DTS",E,Y(Qr),t.name)}))}))}catch(c){throw new p(d(c))}}if(t.onBuildSuccess)await t.onBuildSuccess(t)}async function dn(r,n,t,e,i,o){let s=r.outputExtension?.({format:e,packageType:i,options:r,entry:t}).js??mr(e,i),u=await Bun.build({entrypoints:[`${n}/${t.fullEntryPath}`],format:e,naming:{entry:kr(t.name,s)},splitting:Ur(r.splitting,e),bytecode:Dr(r.bytecode,e),define:Gr(r.define,r.shims,r.env,e),minify:Wr(r),outdir:`${n}/${r.outDir}`,target:r.target,sourcemap:r.sourcemap,loader:r.loader,drop:r.drop,banner:r.banner,footer:r.footer,publicPath:r.publicPath,env:Yr(r.env),plugins:[...o,Hr({format:e,target:r.target,shims:r.shims})],throw:!1});if(!u.success)for(let x of u.logs){if(x.level==="error")throw new B(x.message);if(x.level==="warning")a.warn(x.message);else if(x.level==="info")a.info(x.message)}let g=`${r.outDir}/${t.name}${s}`,m=`${n}/${g}`,c=Bun.file(m).size||0;a.progress(e.toUpperCase(),g,Y(c),r.name)}})
package/dist/index.mjs CHANGED
@@ -1,13 +1,15 @@
1
1
  // @bun
2
- var Ir=Object.create;var{getPrototypeOf:Or,defineProperty:H,getOwnPropertyNames:Ar}=Object;var kr=Object.prototype.hasOwnProperty;var K=(r,t,e)=>{e=r!=null?Ir(Or(r)):{};let n=t||!r||!r.__esModule?H(e,"default",{value:r,enumerable:!0}):e;for(let o of Ar(r))if(!kr.call(n,o))H(n,o,{get:()=>r[o],enumerable:!0});return n};var jr=(r,t)=>()=>(t||r((t={exports:{}}).exports,t),t.exports);var O=jr((xt,I)=>{var M=process||{},Q=M.argv||[],T=M.env||{},_r=!(!!T.NO_COLOR||Q.includes("--no-color"))&&(!!T.FORCE_COLOR||Q.includes("--color")||M.platform==="win32"||(M.stdout||{}).isTTY&&T.TERM!=="dumb"||!!T.CI),Fr=(r,t,e=r)=>(n)=>{let o=""+n,i=o.indexOf(t,r.length);return~i?r+Ur(o,t,e,i)+t:r+o+t},Ur=(r,t,e,n)=>{let o="",i=0;do o+=r.substring(i,n)+e,i=n+t.length,n=r.indexOf(t,i);while(~n);return o+r.substring(i)},Z=(r=_r)=>{let t=r?Fr:()=>String;return{isColorSupported:r,reset:t("\x1B[0m","\x1B[0m"),bold:t("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:t("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:t("\x1B[3m","\x1B[23m"),underline:t("\x1B[4m","\x1B[24m"),inverse:t("\x1B[7m","\x1B[27m"),hidden:t("\x1B[8m","\x1B[28m"),strikethrough:t("\x1B[9m","\x1B[29m"),black:t("\x1B[30m","\x1B[39m"),red:t("\x1B[31m","\x1B[39m"),green:t("\x1B[32m","\x1B[39m"),yellow:t("\x1B[33m","\x1B[39m"),blue:t("\x1B[34m","\x1B[39m"),magenta:t("\x1B[35m","\x1B[39m"),cyan:t("\x1B[36m","\x1B[39m"),white:t("\x1B[37m","\x1B[39m"),gray:t("\x1B[90m","\x1B[39m"),bgBlack:t("\x1B[40m","\x1B[49m"),bgRed:t("\x1B[41m","\x1B[49m"),bgGreen:t("\x1B[42m","\x1B[49m"),bgYellow:t("\x1B[43m","\x1B[49m"),bgBlue:t("\x1B[44m","\x1B[49m"),bgMagenta:t("\x1B[45m","\x1B[49m"),bgCyan:t("\x1B[46m","\x1B[49m"),bgWhite:t("\x1B[47m","\x1B[49m"),blackBright:t("\x1B[90m","\x1B[39m"),redBright:t("\x1B[91m","\x1B[39m"),greenBright:t("\x1B[92m","\x1B[39m"),yellowBright:t("\x1B[93m","\x1B[39m"),blueBright:t("\x1B[94m","\x1B[39m"),magentaBright:t("\x1B[95m","\x1B[39m"),cyanBright:t("\x1B[96m","\x1B[39m"),whiteBright:t("\x1B[97m","\x1B[39m"),bgBlackBright:t("\x1B[100m","\x1B[49m"),bgRedBright:t("\x1B[101m","\x1B[49m"),bgGreenBright:t("\x1B[102m","\x1B[49m"),bgYellowBright:t("\x1B[103m","\x1B[49m"),bgBlueBright:t("\x1B[104m","\x1B[49m"),bgMagentaBright:t("\x1B[105m","\x1B[49m"),bgCyanBright:t("\x1B[106m","\x1B[49m"),bgWhiteBright:t("\x1B[107m","\x1B[49m")}};I.exports=Z();I.exports.createColors=Z});function Dr(r){return r}function Wr(r){return r}import{build as Qr}from"rolldown";import{dts as Zr}from"rolldown-plugin-dts";var Gr=K(O(),1);var a=K(O(),1),N=!1;function X(r){N=r??!1}class C{static instance;loggedOnceMessages=new Set;MAX_LABEL_LENGTH=3;MAX_MESSAGE_LENGTH=25;cliColor=a.default.blue;mutedColor=a.default.dim;infoColor=a.default.cyan;warnColor=a.default.yellow;errorColor=a.default.red;sizeColor=a.default.green;defaultColor=a.default.white;progressFgColorMap={ESM:a.default.yellow,CJS:a.default.green,IIFE:a.default.magenta,DTS:a.default.blue};progressBgColorMap={ESM:a.default.bgYellow,CJS:a.default.bgGreen,IIFE:a.default.bgMagenta,DTS:a.default.bgBlue};labels={cli:"CLI",info:"INFO",warn:"WARN",error:"ERROR"};constructor(){}static getInstance(){if(!C.instance)C.instance=new C;return C.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:t,label:e,message:n,size:o,identifier:i,muted:s}){let u=" ".repeat(Math.max(0,this.MAX_LABEL_LENGTH-e.length)),g=s?this.mutedColor(n):n;if(o){let[c,...b]=g.split(" "),p=" ".repeat(Math.max(0,this.MAX_MESSAGE_LENGTH-c.length)),y=i?` ${t(a.default.black(` ${i} `))}`:"";return`${r(e)} ${u}${c}${p} ${this.sizeColor(o)} ${b.join(" ")}${y}`}let m=i?` ${t(a.default.black(` ${i} `))}`:"";return`${r(e)} ${u}${g}${m}`}output(r,t={},e=console.log){if(N||!this.shouldLog(t))return;if(t.verticalSpace)console.log("");if(e(r),t.verticalSpace)console.log("")}cli(r,t={}){let e=this.formatMessage({fgColor:this.cliColor,bgColor:a.default.bgBlue,label:this.labels.cli,message:r,identifier:t.identifier,muted:t.muted});this.output(e,t)}info(r,t={}){let e=this.formatMessage({fgColor:this.infoColor,bgColor:a.default.bgCyan,label:this.labels.info,message:r,identifier:t.identifier,muted:t.muted});this.output(e,t)}warn(r,t={}){let e=this.formatMessage({fgColor:this.warnColor,bgColor:a.default.bgYellow,label:this.labels.warn,message:r,identifier:t.identifier,muted:t.muted});this.output(e,t,console.warn)}error(r,t={}){let e=this.formatMessage({fgColor:this.errorColor,bgColor:a.default.bgRed,label:this.labels.error,message:r,identifier:t.identifier,muted:t.muted});this.output(e,t,console.error)}getProgressFgColor(r){for(let[t,e]of Object.entries(this.progressFgColorMap))if(r.includes(t))return e;return this.defaultColor}getProgressBgColor(r){for(let[t,e]of Object.entries(this.progressBgColorMap))if(r.includes(t))return e;return a.default.bgWhite}progress(r,t,e,n){let o,i,s={};if(typeof e==="string")o=e,i=n;else if(e)o=e.size,i=e.identifier,s=e;let u=this.getProgressFgColor(r),g=this.getProgressBgColor(r),m=this.formatMessage({fgColor:u,bgColor:g,label:r,message:t,size:o,identifier:i,muted:s.muted});this.output(m,s)}}var l=C.getInstance();class A extends Error{constructor(r){super(r);this.name="BunupError"}}class h extends A{constructor(r){super(r);this.name="BunupBuildError"}}class x extends A{constructor(r){super(r);this.name="BunupDTSBuildError"}}var f=(r)=>{if(r instanceof Error)return r.message;return String(r)};import sr from"path";import{ResolverFactory as Kr}from"oxc-resolver";import V from"fs/promises";import Yr from"path";function z(r,t){switch(r){case"esm":return w(t)?".js":".mjs";case"cjs":return w(t)?".cjs":".js";case"iife":return".global.js"}}function J(r,t){switch(r){case"esm":return w(t)?".d.ts":".d.mts";case"cjs":return w(t)?".d.cts":".d.ts";case"iife":return".d.ts"}}function k(r){return r==="node"||r==="bun"}function w(r){return r==="module"}function v(r){if(!r)return[];return Array.from(new Set([...Object.keys(r.dependencies||{}),...Object.keys(r.peerDependencies||{})]))}function j(r){if(r===0)return"0 B";let t=["B","KB","MB","GB"],e=Math.floor(Math.log(r)/Math.log(1024));if(e===0)return`${r} ${t[e]}`;return`${(r/1024**e).toFixed(2)} ${t[e]}`}function $(r,t=3){return r.split("/").slice(-t).join("/")}async function P(r,t){let e=Yr.join(r,t);try{await V.rm(e,{recursive:!0,force:!0})}catch(n){throw new h(`Failed to clean output directory: ${n}`)}await V.mkdir(e,{recursive:!0})}function R(r){return[".ts",".mts",".cts",".tsx"].some((t)=>r.endsWith(t))}function qr(r){return v(r).map((t)=>new RegExp(`^${t}($|\\/|\\\\)`))}function rr(r,t){return typeof t==="string"?t===r:t.test(r)}function E(r,t,e){let o=qr(e).some((s)=>s.test(r))||t.external?.some((s)=>rr(r,s)),i=t.noExternal?.some((s)=>rr(r,s));return o&&!i}import{resolveTsImportPath as Hr}from"ts-import-resolver";var S="\x00dts:",tr=(r,t,e)=>{return{name:"bunup:virtual-dts",async resolveId(n,o){if(D(n))return n;if(!o||!D(o))return null;let i=t.tsconfig?Hr({path:n,importer:B(o),tsconfig:t.tsconfig,rootDir:e}):null;if(!i)return null;let s=d(i);if(r.has(s))return L(s);return null},load(n){if(n.startsWith(S)){let o=B(n),i=r.get(o);if(i)return er.add(o),i}return null}}};var W=/\.(js|mjs|cjs|ts|mts|cts|tsx|jsx)$/;function nr(r){return r.endsWith(".d.ts")||r.endsWith(".d.mts")||r.endsWith(".d.cts")}function or(r){return W.test(r)&&!nr(r)}function d(r){if(nr(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(W.test(r))return r.replace(W,".d.ts");return`${r}.d.ts`}function D(r){return r.startsWith(S)}function B(r){return r.replace(S,"")}function L(r){return`${S}${r}`}function ir(r,t,e,n){if(typeof n==="boolean"&&n)return!1;if(Array.isArray(n)){for(let o of n)if(typeof o==="string"&&r===o)return!1;else if(o instanceof RegExp&&o.test(r))return!1}return E(r,t,e)}var _;function gr(r,t){return{name:"bunup:types-resolve",buildStart(){_||=new Kr({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(e,n){if(t===!1)return;if(e==="bun")return;let o=n?B(n):void 0;if(/\0/.test(e))return;if(Array.isArray(t)){if(!t.some((g)=>typeof g==="string"?g===e:g.test(e)))return}let i=o?sr.dirname(o):process.cwd(),{path:s}=await _.async(i,e);if(!s)return;if(or(s)){let u=d(s);try{let{path:g}=await _.async(sr.dirname(s),u);if(g)return g}catch(g){}return}return s}}}async function mr(r,t,e,n,o,i){let s=d(r),u=L(s),g=typeof e.dts==="object"&&"resolve"in e.dts?e.dts.resolve:void 0;try{let{output:m}=await Qr({input:u,output:{dir:e.outDir},write:!1,...o.path&&{resolve:{tsconfigFilename:o.path}},onwarn(c,b){if(["UNRESOLVED_IMPORT","CIRCULAR_DEPENDENCY","EMPTY_BUNDLE"].includes(c.code??""))return;b(c)},plugins:[tr(t,o,i),g&&gr(o,g),Zr({dtsInput:!0,emitDtsOnly:!0})],external:(c)=>ir(c,e,n,g)});if(!m[0]?.code)return l.warn(`Generated empty declaration file for entry "${r}"`,{muted:!0}),"";return m[0].code}catch(m){throw new x(`DTS bundling failed for entry "${r}": ${f(m)}`)}}import{resolveTsImportPath as Nr}from"ts-import-resolver";var Xr=/^\s*import\s+(?:[^'"]*?\s+from\s+)?['"]([^'"]+)['"]/gm,Vr=/^\s*export\s+.*from\s+['"]([^'"]+)['"]/gm,zr=/import\s*\(\s*['"]([^'"]+)['"]\s*\)/g,Jr=/require\s*\(\s*['"]([^'"]+)['"]\s*\)/g,vr=/import\s+\w+\s*=\s*require\s*\(\s*['"]([^'"]+)['"]\s*\)/g,Pr=/\/\/\/\s*<reference\s+path\s*=\s*['"]([^'"]+)['"]\s*\/>/g,rt=/\/\/\/\s*<reference\s+types\s*=\s*['"]([^'"]+)['"]\s*\/>/g;function tt(r){let t=new Set,e=[Xr,Vr,zr,Jr,vr,Pr,rt];for(let n of e){let o=r.matchAll(n);for(let i of o)if(i[1])t.add(i[1])}return t}async function ur(r,t,e){let n=new Set([r]),o=[r];while(o.length){let i=o.pop();if(!i)continue;try{let s=await Bun.file(i).text(),u=tt(s);for(let g of u){let m=t.tsconfig?Nr({path:g,importer:i,tsconfig:t.tsconfig,rootDir:e}):null;if(!m)continue;if(!n.has(m))n.add(m),o.push(m)}}catch(s){l.warn(`Error processing ${i}: ${f(s)}`)}}return n}import{isolatedDeclaration as et}from"oxc-transform";async function cr(r){let t=new Map;return await Promise.all([...r].map(async(e)=>{try{let n=d(e);if(!await Bun.file(e).exists())return;let i=await Bun.file(e).text(),{code:s}=et(e,i);if(s)t.set(n,s)}catch(n){l.warn(`Failed to generate declaration for ${e}: ${f(n)}`)}})),t}import ar from"fs/promises";import F from"path";import{isolatedDeclaration as ee}from"oxc-transform";async function lr(r,t){let e=F.resolve(r),n=F.resolve(e,t);if(!await ar.exists(e))throw new x(`Root directory does not exist: ${e}`);if(!await Bun.file(n).exists())throw new x(`Entry file does not exist: ${n}`);if(!R(n))throw new x(`Entry file must be a TypeScript file: ${n}`);if(F.relative(e,n).startsWith(".."))throw new x(`Entry file must be within rootDir: ${n}`);return{absoluteRootDir:e,absoluteEntry:n}}async function br(r,t,e,n,o){let{absoluteEntry:i}=await lr(r,t),s=await ur(i,n,r),u=await cr(s);return mr(i,u,e,o,n,r)}import{basename as nt,dirname as ot,extname as it}from"path";function xr(r){let t=nt(r),e=it(t);return e?t.slice(0,-e.length):t}function U(r){if(typeof r==="string")return[{fullEntryPath:r,name:xr(r)}];if(typeof r==="object"&&!Array.isArray(r))return Object.entries(r).map(([n,o])=>({fullEntryPath:o,name:n}));let t=[],e=new Set;for(let n of r){let o=xr(n);if(!e.has(o)){t.push({fullEntryPath:n,name:o}),e.add(o);continue}let s=ot(n).split("/").filter((g)=>g!=="."&&g!=="");if(s.length===0){let g=1,m;do m=`${o}_${g++}`;while(e.has(m));t.push({fullEntryPath:n,name:m}),e.add(m);continue}let u=!1;for(let g=1;g<=s.length&&!u;g++){let c=`${s.slice(-g).join("/")}/${o}`;if(!e.has(c))t.push({fullEntryPath:n,name:c}),e.add(c),u=!0}if(!u){let g=1,m;do m=`${s.join("/")}/${o}_${g++}`;while(e.has(m));t.push({fullEntryPath:n,name:m}),e.add(m)}}return t}function pr(r){return r.filter((t)=>R(t.fullEntryPath))}function fr(r,t){return`[dir]/${r}${t}`}import{loadConfig as dr}from"coffi";async function Cr(r){let{config:t,filepath:e}=await dr({name:"package",cwd:r,extensions:[".json"]});return{packageJson:t,path:e}}async function hr(r,t){let{config:e,filepath:n}=await dr({name:"tsconfig",cwd:r,extensions:[".json"],preferredPath:t});return{tsconfig:e,path:n}}var st={entry:[],format:["cjs"],outDir:"dist",target:"node",clean:!0};function wr(r){return{...st,...r}}function Br(r){let{minify:t,minifyWhitespace:e,minifyIdentifiers:n,minifySyntax:o}=r,i=t===!0;return{whitespace:e??i,identifiers:n??i,syntax:o??i}}function Sr(r,t){return t==="cjs"?r:void 0}function Tr(r,t,e,n){return{...typeof e==="object"&&Object.keys(e).reduce((o,i)=>{let s=JSON.stringify(e[i]);return o[`process.env.${i}`]=s,o[`import.meta.env.${i}`]=s,o},{}),...r,...n==="cjs"&&(t===!0||typeof t==="object"&&t.importMetaUrl)&&{"import.meta.url":"importMetaUrl"}}}function Mr(r,t){return r===void 0?t==="esm":r}function $r(r){return typeof r==="string"?r:void 0}function Rr(r,t){return{name:"bunup:external-plugin",setup(e){e.onResolve({filter:/.*/},(n)=>{let o=n.path;if(E(o,r,t))return{path:o,external:!0};return null})}}}var gt=/\.(js|ts|jsx|tsx|mts|cts)$/,G={dirnameFilename:{appliesTo:(r,t)=>r==="esm"&&k(t),isNeededInFile:(r)=>/\b__dirname\b/.test(r)||/\b__filename\b/.test(r),generateCode:()=>`import { fileURLToPath } from 'url';
2
+ var kr=Object.create;var{getPrototypeOf:jr,defineProperty:Q,getOwnPropertyNames:yr}=Object;var _r=Object.prototype.hasOwnProperty;var k=(r,n,t)=>{t=r!=null?kr(jr(r)):{};let e=n||!r||!r.__esModule?Q(t,"default",{value:r,enumerable:!0}):t;for(let i of yr(r))if(!_r.call(e,i))Q(e,i,{get:()=>r[i],enumerable:!0});return e};var Wr=(r,n)=>()=>(n||r((n={exports:{}}).exports,n),n.exports);var E=Wr((Cn,j)=>{var S=process||{},Z=S.argv||[],T=S.env||{},Ur=!(!!T.NO_COLOR||Z.includes("--no-color"))&&(!!T.FORCE_COLOR||Z.includes("--color")||S.platform==="win32"||(S.stdout||{}).isTTY&&T.TERM!=="dumb"||!!T.CI),Yr=(r,n,t=r)=>(e)=>{let i=""+e,o=i.indexOf(n,r.length);return~o?r+Fr(i,n,t,o)+n:r+i+n},Fr=(r,n,t,e)=>{let i="",o=0;do i+=r.substring(o,e)+t,o=e+n.length,e=r.indexOf(n,o);while(~e);return i+r.substring(o)},N=(r=Ur)=>{let n=r?Yr:()=>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")}};j.exports=N();j.exports.createColors=N});function Dr(r){return r}function Gr(r){return r}import{build as Nr}from"rolldown";import{dts as Xr}from"rolldown-plugin-dts";var Hr=k(E(),1);var b=k(E(),1),X=!1;function V(r){X=r??!1}class C{static instance;loggedOnceMessages=new Set;MAX_LABEL_LENGTH=3;MAX_MESSAGE_LENGTH=25;cliColor=b.default.blue;mutedColor=b.default.dim;infoColor=b.default.cyan;warnColor=b.default.yellow;errorColor=b.default.red;sizeColor=b.default.green;defaultColor=b.default.white;progressFgColorMap={ESM:b.default.yellow,CJS:b.default.green,IIFE:b.default.magenta,DTS:b.default.blue};progressBgColorMap={ESM:b.default.bgYellow,CJS:b.default.bgGreen,IIFE:b.default.bgMagenta,DTS:b.default.bgBlue};labels={cli:"CLI",info:"INFO",warn:"WARN",error:"ERROR"};constructor(){}static getInstance(){if(!C.instance)C.instance=new C;return C.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,size:i,identifier:o,muted:s}){let u=" ".repeat(Math.max(0,this.MAX_LABEL_LENGTH-t.length)),g=s?this.mutedColor(e):e;if(i){let[c,...x]=g.split(" "),f=" ".repeat(Math.max(0,this.MAX_MESSAGE_LENGTH-c.length)),$=o?` ${n(b.default.black(` ${o} `))}`:"";return`${r(t)} ${u}${c}${f} ${this.sizeColor(i)} ${x.join(" ")}${$}`}let m=o?` ${n(b.default.black(` ${o} `))}`:"";return`${r(t)} ${u}${g}${m}`}output(r,n={},t=console.log){if(X||!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:b.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:b.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:b.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:b.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 b.default.bgWhite}progress(r,n,t,e){let i,o,s={};if(typeof t==="string")i=t,o=e;else if(t)i=t.size,o=t.identifier,s=t;let u=this.getProgressFgColor(r),g=this.getProgressBgColor(r),m=this.formatMessage({fgColor:u,bgColor:g,label:r,message:n,size:i,identifier:o,muted:s.muted});this.output(m,s)}}var a=C.getInstance();class y extends Error{constructor(r){super(r);this.name="BunupError"}}class w extends y{constructor(r){super(r);this.name="BunupBuildError"}}class p extends y{constructor(r){super(r);this.name="BunupDTSBuildError"}}var l=(r)=>{if(r instanceof Error)return r.message;return String(r)};import mr from"path";import{ResolverFactory as Zr}from"oxc-resolver";import z from"fs/promises";import Kr from"path";function J(){return!1}function v(r,n){switch(r){case"esm":return B(n)?".js":".mjs";case"cjs":return B(n)?".cjs":".js";case"iife":return".global.js"}}function P(r,n){switch(r){case"esm":return B(n)?".d.ts":".d.mts";case"cjs":return B(n)?".d.cts":".d.ts";case"iife":return".d.ts"}}function _(r){return r==="node"||r==="bun"}function B(r){return r==="module"}function rr(r){if(!r)return[];return Array.from(new Set([...Object.keys(r.dependencies||{}),...Object.keys(r.peerDependencies||{})]))}function W(r){if(r===0)return"0 B";let n=["B","KB","MB","GB"],t=Math.floor(Math.log(r)/Math.log(1024));if(t===0)return`${r} ${n[t]}`;return`${(r/1024**t).toFixed(2)} ${n[t]}`}function h(r,n=3){return r.split("/").slice(-n).join("/")}async function nr(r,n){let t=Kr.join(r,n);try{await z.rm(t,{recursive:!0,force:!0})}catch(e){throw new w(`Failed to clean output directory: ${e}`)}await z.mkdir(t,{recursive:!0})}function I(r){return[".ts",".mts",".cts",".tsx"].some((n)=>r.endsWith(n))}function qr(r){return rr(r).map((n)=>new RegExp(`^${n}($|\\/|\\\\)`))}function tr(r,n){return typeof n==="string"?n===r:n.test(r)}function O(r,n,t){let i=qr(t).some((s)=>s.test(r))||n.external?.some((s)=>tr(r,s)),o=n.noExternal?.some((s)=>tr(r,s));return i&&!o}import{resolveTsImportPath as Qr}from"ts-import-resolver";var M="\x00dts:",er=(r,n,t)=>{return{name:"bunup:virtual-dts",async resolveId(e,i){if(D(e))return e;if(!i||!D(i))return null;let o=n.tsconfig?Qr({path:e,importer:R(i),tsconfig:n.tsconfig,rootDir:t}):null;if(!o)return null;let s=d(o);if(r.has(s))return A(s);return null},load(e){if(e.startsWith(M)){let i=R(e),o=r.get(i);if(o)return o}return null}}};var G=/\.(js|mjs|cjs|ts|mts|cts|tsx|jsx)$/;function ir(r){return r.endsWith(".d.ts")||r.endsWith(".d.mts")||r.endsWith(".d.cts")}function or(r){return G.test(r)&&!ir(r)}function d(r){if(ir(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 D(r){return r.startsWith(M)}function R(r){return r.replace(M,"")}function A(r){return`${M}${r}`}function sr(r,n){if(n===void 0)return"";let t=r.slice(0,n).split(`
3
+ `),e=t.length,i=t[t.length-1].length+1;return` (${e}:${i})`}function gr(r,n,t,e){if(typeof e==="boolean"&&e)return!1;if(Array.isArray(e)){for(let i of e)if(typeof i==="string"&&r===i)return!1;else if(i instanceof RegExp&&i.test(r))return!1}return O(r,n,t)}var U;function ur(r,n){return{name:"bunup:types-resolve",buildStart(){U||=new Zr({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 i=e?R(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 o=i?mr.dirname(i):process.cwd(),{path:s}=await U.async(o,t);if(!s)return;if(or(s)){let u=d(s);try{let{path:g}=await U.async(mr.dirname(s),u);if(g)return g}catch(g){}return}return s}}}async function cr(r,n,t,e,i,o){let s=d(r),u=A(s),g=typeof t.dts==="object"&&"resolve"in t.dts?t.dts.resolve:void 0;try{let{output:m}=await Nr({input:u,output:{dir:t.outDir},write:!1,...i.path&&{resolve:{tsconfigFilename:i.path}},onwarn(c,x){if(["UNRESOLVED_IMPORT","CIRCULAR_DEPENDENCY","EMPTY_BUNDLE"].includes(c.code??""))return;x(c)},plugins:[er(n,i,o),g&&ur(i,g),Xr({dtsInput:!0,emitDtsOnly:!0})],external:(c)=>gr(c,t,e,g)});if(!m[0]?.code)return a.warn(`Generated empty declaration file for entry "${r}"`,{muted:!0}),"";return m[0].code}catch(m){throw new p(`DTS bundling failed for entry "${r}": ${l(m)}`)}}import{resolveTsImportPath as Vr}from"ts-import-resolver";var zr=/^\s*import\s+(?:[^'"]*?\s+from\s+)?['"]([^'"]+)['"]/gm,Jr=/^\s*export\s+.*from\s+['"]([^'"]+)['"]/gm,vr=/import\s*\(\s*['"]([^'"]+)['"]\s*\)/g,Pr=/require\s*\(\s*['"]([^'"]+)['"]\s*\)/g,rn=/import\s+\w+\s*=\s*require\s*\(\s*['"]([^'"]+)['"]\s*\)/g,nn=/\/\/\/\s*<reference\s+path\s*=\s*['"]([^'"]+)['"]\s*\/>/g,tn=/\/\/\/\s*<reference\s+types\s*=\s*['"]([^'"]+)['"]\s*\/>/g;function en(r){let n=new Set,t=[zr,Jr,vr,Pr,rn,nn,tn];for(let e of t){let i=r.matchAll(e);for(let o of i)if(o[1])n.add(o[1])}return n}async function br(r,n,t){let e=new Set([r]),i=[r];while(i.length){let o=i.pop();if(!o)continue;try{let s=await Bun.file(o).text(),u=en(s);for(let g of u){let m=n.tsconfig?Vr({path:g,importer:o,tsconfig:n.tsconfig,rootDir:t}):null;if(!m)continue;if(!e.has(m))e.add(m),i.push(m)}}catch(s){a.warn(`Error processing ${o}: ${l(s)}`)}}return e}var Y=k(E(),1);import{isolatedDeclaration as on}from"oxc-transform";async function xr(r,n){let t=!1,e=new Map;if(await Promise.all([...r].map(async(i)=>{try{let o=d(i);if(!await Bun.file(i).exists())return;let u=await Bun.file(i).text(),{code:g,errors:m}=on(i,u);if(g)e.set(o,g);for(let c of m){if(!t&&!n)console.log(`
4
+ `);let x=c.labels[0],f=x?sr(u,x.start):"",L=`${h(i)}${f}: ${sn(c.message)}`;a[n?"warn":"error"](L),t=!0}}catch(o){a.warn(`Failed to generate declaration for ${i}: ${l(o)}`)}})),t&&!n){if(a.info(`TypeScript is just asking for explicit type annotations on your exports. This helps ensure better, more reliable type declarations for your library. Bunup uses TypeScript's ${Y.default.blue("isolatedDeclarations")} feature to generate these declarations, which requires each export from your library to be fully typed. You can learn more here: ${Y.default.blue("https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-5.html#isolated-declarations")}`,{muted:!0,verticalSpace:!0}),!J())process.exit(1)}return e}function sn(r){return r.replace(" with --isolatedDeclarations","").replace(" with --isolatedDeclaration","")}import ar from"fs/promises";import F from"path";async function fr(r,n){let t=F.resolve(r),e=F.resolve(t,n);if(!await ar.exists(t))throw new p(`Root directory does not exist: ${t}`);if(!await Bun.file(e).exists())throw new p(`Entry file does not exist: ${e}`);if(!I(e))throw new p(`Entry file must be a TypeScript file: ${e}`);if(F.relative(t,e).startsWith(".."))throw new p(`Entry file must be within rootDir: ${e}`);return{absoluteRootDir:t,absoluteEntry:e}}async function pr(r,n,t,e,i){let{absoluteEntry:o}=await fr(r,n),s=await br(o,e,r),u=await xr(s,t.watch);return cr(o,u,t,i,e,r)}import{basename as gn,dirname as mn,extname as un}from"path";function lr(r){let n=gn(r),t=un(n);return t?n.slice(0,-t.length):n}function H(r){if(typeof r==="string")return[{fullEntryPath:r,name:lr(r)}];if(typeof r==="object"&&!Array.isArray(r))return Object.entries(r).map(([e,i])=>({fullEntryPath:i,name:e}));let n=[],t=new Set;for(let e of r){let i=lr(e);if(!t.has(i)){n.push({fullEntryPath:e,name:i}),t.add(i);continue}let s=mn(e).split("/").filter((g)=>g!=="."&&g!=="");if(s.length===0){let g=1,m;do m=`${i}_${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 c=`${s.slice(-g).join("/")}/${i}`;if(!t.has(c))n.push({fullEntryPath:e,name:c}),t.add(c),u=!0}if(!u){let g=1,m;do m=`${s.join("/")}/${i}_${g++}`;while(t.has(m));n.push({fullEntryPath:e,name:m}),t.add(m)}}return n}function dr(r){return r.filter((n)=>I(n.fullEntryPath))}function Cr(r,n){return`[dir]/${r}${n}`}import{loadConfig as wr}from"coffi";async function Br(r){let{config:n,filepath:t}=await wr({name:"package",cwd:r,extensions:[".json"]});return{packageJson:n,path:t}}async function hr(r,n){let{config:t,filepath:e}=await wr({name:"tsconfig",cwd:r,extensions:[".json"],preferredPath:n});return{tsconfig:t,path:e}}var cn={entry:[],format:["cjs"],outDir:"dist",target:"node",clean:!0};function Rr(r){return{...cn,...r}}function Mr(r){let{minify:n,minifyWhitespace:t,minifyIdentifiers:e,minifySyntax:i}=r,o=n===!0;return{whitespace:t??o,identifiers:e??o,syntax:i??o}}function $r(r,n){return n==="cjs"?r:void 0}function Lr(r,n,t,e){return{...typeof t==="object"&&Object.keys(t).reduce((i,o)=>{let s=JSON.stringify(t[o]);return i[`process.env.${o}`]=s,i[`import.meta.env.${o}`]=s,i},{}),...r,...e==="cjs"&&(n===!0||typeof n==="object"&&n.importMetaUrl)&&{"import.meta.url":"importMetaUrl"}}}function Tr(r,n){return r===void 0?n==="esm":r}function Sr(r){return typeof r==="string"?r:void 0}function Er(r,n){return{name:"bunup:external-plugin",setup(t){t.onResolve({filter:/.*/},(e)=>{let i=e.path;if(O(i,r,n))return{path:i,external:!0};return null})}}}var bn=/\.(js|ts|jsx|tsx|mts|cts)$/,K={dirnameFilename:{appliesTo:(r,n)=>r==="esm"&&_(n),isNeededInFile:(r)=>/\b__dirname\b/.test(r)||/\b__filename\b/.test(r),generateCode:()=>`import { fileURLToPath } from 'url';
3
5
  import { dirname } from 'path';
4
6
 
5
7
  const __filename = fileURLToPath(import.meta.url);
6
8
  const __dirname = dirname(__filename);
7
9
 
8
- `},importMetaUrl:{appliesTo:(r,t)=>r==="cjs"&&k(t),isNeededInFile:(r)=>/\bimport\.meta\.url\b/.test(r),generateCode:()=>`import { pathToFileURL } from 'url';
10
+ `},importMetaUrl:{appliesTo:(r,n)=>r==="cjs"&&_(n),isNeededInFile:(r)=>/\bimport\.meta\.url\b/.test(r),generateCode:()=>`import { pathToFileURL } from 'url';
9
11
 
10
12
  const importMetaUrl = pathToFileURL(__filename).href;
11
13
 
12
- `}};function Er({format:r,target:t,shims:e}){let o=mt(e).map((i)=>G[i]).filter((i)=>i.appliesTo(r,t));if(o.length===0)return{name:"bunup:inject-shims",setup(){}};return{name:"bunup:inject-shims",setup(i){i.onLoad({filter:gt},async({path:s})=>{let u=await Bun.file(s).text(),g=o.filter((p)=>p.isNeededInFile(u));if(g.length===0)return;let{shebangLine:m,codeContent:c}=ut(u),b=g.map((p)=>p.generateCode()).join("");return{contents:m+b+c}})}}}function mt(r){if(r===!0)return Object.keys(G);if(!r)return[];return Object.entries(r).filter(([t,e])=>e&&(t in G)).map(([t])=>t)}function ut(r){if(!r.startsWith("#!"))return{shebangLine:"",codeContent:r};let t=r.indexOf(`
13
- `);return t===-1?{shebangLine:"",codeContent:r}:{shebangLine:r.slice(0,t+1),codeContent:r.slice(t+1)}}function Lr(r){return r.filter((t)=>t.type==="bun")}var er=new Set;async function ct(r,t=process.cwd()){let e=wr(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)P(t,e.outDir);X(e.silent);let{packageJson:n,path:o}=await Cr(t);if(n&&o)l.cli(`Using package.json: ${$(o,2)}`,{muted:!0,identifier:e.name,once:`${o}:${e.name}`});let i=U(e.entry),s=n?.type;if(!e.dtsOnly){let u=[Rr(e,n),...Lr(e.plugins??[]).map((m)=>m.plugin)],g=e.format.flatMap((m)=>i.map((c)=>{return at(e,t,c,m,s,u)}));await Promise.all(g)}if(e.dts||e.dtsOnly){let u=await hr(t,e.preferredTsconfigPath);if(u.path)l.cli(`Using tsconfig: ${$(u.path,2)}`,{muted:!0,identifier:e.name,once:`${u.path}:${e.name}`});let g=e.format.filter((c)=>{if(c==="iife"&&!w(s)&&e.format.includes("cjs"))return!1;return!0}),m=typeof e.dts==="object"&&e.dts.entry?U(e.dts.entry):pr(i);try{await Promise.all(m.map(async(c)=>{let b=await br(t,c.fullEntryPath,e,u,n);await Promise.all(g.map(async(p)=>{let y=e.outputExtension?.({format:p,packageType:s,options:e,entry:c}).dts??J(p,s),Y=`${e.outDir}/${c.name}${y}`,q=`${t}/${Y}`;await Bun.write(q,b);let yr=Bun.file(q).size||0;l.progress("DTS",Y,j(yr),e.name)}))}))}catch(c){throw new x(f(c))}}if(e.onBuildSuccess)await e.onBuildSuccess(e)}async function at(r,t,e,n,o,i){let s=r.outputExtension?.({format:n,packageType:o,options:r,entry:e}).js??z(n,o),u=await Bun.build({entrypoints:[`${t}/${e.fullEntryPath}`],format:n,naming:{entry:fr(e.name,s)},splitting:Mr(r.splitting,n),bytecode:Sr(r.bytecode,n),define:Tr(r.define,r.shims,r.env,n),minify:Br(r),outdir:`${t}/${r.outDir}`,target:r.target,sourcemap:r.sourcemap,loader:r.loader,drop:r.drop,banner:r.banner,footer:r.footer,publicPath:r.publicPath,env:$r(r.env),plugins:[...i,Er({format:n,target:r.target,shims:r.shims})],throw:!1});if(!u.success)for(let b of u.logs){if(b.level==="error")throw new h(b.message);if(b.level==="warning")l.warn(b.message);else if(b.level==="info")l.info(b.message)}let g=`${r.outDir}/${e.name}${s}`,m=`${t}/${g}`,c=Bun.file(m).size||0;l.progress(n.toUpperCase(),g,j(c),r.name)}export{Wr as defineWorkspace,Dr as defineConfig,ct as build};
14
+ `}};function Ir({format:r,target:n,shims:t}){let i=xn(t).map((o)=>K[o]).filter((o)=>o.appliesTo(r,n));if(i.length===0)return{name:"bunup:inject-shims",setup(){}};return{name:"bunup:inject-shims",setup(o){o.onLoad({filter:bn},async({path:s})=>{let u=await Bun.file(s).text(),g=i.filter((f)=>f.isNeededInFile(u));if(g.length===0)return;let{shebangLine:m,codeContent:c}=an(u),x=g.map((f)=>f.generateCode()).join("");return{contents:m+x+c}})}}}function xn(r){if(r===!0)return Object.keys(K);if(!r)return[];return Object.entries(r).filter(([n,t])=>t&&(n in K)).map(([n])=>n)}function an(r){if(!r.startsWith("#!"))return{shebangLine:"",codeContent:r};let n=r.indexOf(`
15
+ `);return n===-1?{shebangLine:"",codeContent:r}:{shebangLine:r.slice(0,n+1),codeContent:r.slice(n+1)}}function Or(r){return r.filter((n)=>n.type==="bun")}async function fn(r,n=process.cwd()){let t=Rr(r);if(!t.entry||t.entry.length===0||!t.outDir)throw new w("Nothing to build. Please make sure you have provided a proper bunup configuration or cli arguments.");if(t.clean)nr(n,t.outDir);V(t.silent);let{packageJson:e,path:i}=await Br(n);if(e&&i)a.cli(`Using package.json: ${h(i,2)}`,{muted:!0,identifier:t.name,once:`${i}:${t.name}`});let o=H(t.entry),s=e?.type;if(!t.dtsOnly){let u=[Er(t,e),...Or(t.plugins??[]).map((m)=>m.plugin)],g=t.format.flatMap((m)=>o.map((c)=>{return pn(t,n,c,m,s,u)}));await Promise.all(g)}if(t.dts||t.dtsOnly){let u=await hr(n,t.preferredTsconfigPath);if(u.path)a.cli(`Using tsconfig: ${h(u.path,2)}`,{muted:!0,identifier:t.name,once:`${u.path}:${t.name}`});let g=t.format.filter((c)=>{if(c==="iife"&&!B(s)&&t.format.includes("cjs"))return!1;return!0}),m=typeof t.dts==="object"&&t.dts.entry?H(t.dts.entry):dr(o);try{await Promise.all(m.map(async(c)=>{let x=await pr(n,c.fullEntryPath,t,u,e);await Promise.all(g.map(async(f)=>{let $=t.outputExtension?.({format:f,packageType:s,options:t,entry:c}).dts??P(f,s),L=`${t.outDir}/${c.name}${$}`,q=`${n}/${L}`;await Bun.write(q,x);let Ar=Bun.file(q).size||0;a.progress("DTS",L,W(Ar),t.name)}))}))}catch(c){throw new p(l(c))}}if(t.onBuildSuccess)await t.onBuildSuccess(t)}async function pn(r,n,t,e,i,o){let s=r.outputExtension?.({format:e,packageType:i,options:r,entry:t}).js??v(e,i),u=await Bun.build({entrypoints:[`${n}/${t.fullEntryPath}`],format:e,naming:{entry:Cr(t.name,s)},splitting:Tr(r.splitting,e),bytecode:$r(r.bytecode,e),define:Lr(r.define,r.shims,r.env,e),minify:Mr(r),outdir:`${n}/${r.outDir}`,target:r.target,sourcemap:r.sourcemap,loader:r.loader,drop:r.drop,banner:r.banner,footer:r.footer,publicPath:r.publicPath,env:Sr(r.env),plugins:[...o,Ir({format:e,target:r.target,shims:r.shims})],throw:!1});if(!u.success)for(let x of u.logs){if(x.level==="error")throw new w(x.message);if(x.level==="warning")a.warn(x.message);else if(x.level==="info")a.info(x.message)}let g=`${r.outDir}/${t.name}${s}`,m=`${n}/${g}`,c=Bun.file(m).size||0;a.progress(e.toUpperCase(),g,W(c),r.name)}export{Gr as defineWorkspace,Dr as defineConfig,fn as build};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "bunup",
3
3
  "description": "⚡ A blazing-fast build tool for your libraries built with Bun.",
4
- "version": "0.4.71",
4
+ "version": "0.4.72",
5
5
  "license": "MIT",
6
6
  "author": "Arshad Yaseen <m@arshadyaseen.com> (https://arshadyaseen.com)",
7
7
  "maintainers": [