bunup 0.4.67 → 0.4.69

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
@@ -1,16 +1,27 @@
1
- # bunup
1
+ <!-- markdownlint-disable first-line-h1 -->
2
2
 
3
- [![npm version](https://img.shields.io/npm/v/bunup.svg?style=flat-square)](https://www.npmjs.com/package/bunup)
4
- [![npm downloads](https://img.shields.io/npm/dm/bunup.svg?style=flat-square)](https://www.npmjs.com/package/bunup)
3
+ <!-- markdownlint-start-capture -->
4
+ <!-- markdownlint-disable-file no-inline-html -->
5
+ <div align="center">
5
6
 
6
- Bunup is the **blazing-fast build tool** for TypeScript and JavaScript libraries, designed for beautiful developer experience and speed, **powered by Bun's native bundler** — up to **~50× faster than Tsup**.
7
+ <!-- markdownlint-disable-next-line no-alt-text -->
8
+ ![](docs/public/logo.svg)
7
9
 
8
- | Bundler | Format | Build Time | Build Time (with dts) |
9
- | --------- | ------------ | -------------- | --------------------- |
10
- | **bunup** | **esm, cjs** | **3.52ms ⚡️** | **20.84ms ⚡️** |
11
- | tsdown | esm, cjs | 5.81ms | 35.84ms |
12
- | unbuild | esm, cjs | 42.47ms | 314.54ms |
13
- | tsup | esm, cjs | 63.59ms | 943.61ms |
10
+ ![Bunup](assets/bunup-title.svg)
11
+
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)
13
+
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**.
15
+
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 |
22
+
23
+ </div>
24
+ <!-- markdownlint-restore -->
14
25
 
15
26
  ## Key Features
16
27
 
@@ -29,4 +40,3 @@ To get started, visit the [documentation](https://bunup.dev/documentation).
29
40
  For guidelines on contributing, please read the [contributing guide](https://github.com/arshad-yaseen/bunup/blob/main/CONTRIBUTING.md).
30
41
 
31
42
  We welcome contributions from the community to enhance Bunup's capabilities and make it even more powerful.
32
- 1
package/dist/cli.mjs CHANGED
@@ -1,21 +1,22 @@
1
1
  #!/usr/bin/env bun
2
2
  // @bun
3
- import{createRequire as Vn}from"node:module";var Qn=Object.create;var{getPrototypeOf:Zn,defineProperty:en,getOwnPropertyNames:Xn}=Object;var zn=Object.prototype.hasOwnProperty;var rn=(n,e,r)=>{r=n!=null?Qn(Zn(n)):{};let t=e||!n||!n.__esModule?en(r,"default",{value:n,enumerable:!0}):r;for(let s of Xn(n))if(!zn.call(t,s))en(t,s,{get:()=>n[s],enumerable:!0});return t};var tn=Vn(import.meta.url);import{exec as Ee}from"tinyexec";var sn=!1;function M(n){sn=n??!1}class B{static instance;loggedOnceMessages=new Set;MAX_LABEL_LENGTH=3;MAX_MESSAGE_LENGTH=25;colors={cli:"147",muted:"245",info:"117",warn:"179",error:"174",progress:{ESM:"172",CJS:"108",IIFE:"146",DTS:"110"},default:"252",size:"65"};labels={cli:"CLI",info:"INFO",warn:"WARN",error:"ERROR"};constructor(){}static getInstance(){if(!B.instance)B.instance=new B;return B.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({colorCode:n,label:e,message:r,size:t,identifier:s,muted:o}){let i=" ".repeat(Math.max(0,this.MAX_LABEL_LENGTH-e.length)),c=o?`\x1B[38;5;${this.colors.muted}m${r}\x1B[0m`:r;if(t){let[l,...u]=c.split(" "),f=" ".repeat(Math.max(0,this.MAX_MESSAGE_LENGTH-l.length)),d=s?` \x1B[48;5;${n};38;5;0m ${s} \x1B[0m`:"";return`\x1B[38;5;${n}m${e}\x1B[0m ${i}${l}${f} \x1B[38;5;${this.colors.size}m${t}\x1B[0m ${u.join(" ")}${d}`}let a=s?` \x1B[48;5;${n};38;5;0m ${s} \x1B[0m`:"";return`\x1B[38;5;${n}m${e}\x1B[0m ${i}${c}${a}`}output(n,e={},r=console.log){if(sn)return;if(!this.shouldLog(e))return;if(e.verticalSpace)console.log("");if(r(n),e.verticalSpace)console.log("")}cli(n,e={}){let r=this.formatMessage({colorCode:this.colors.cli,label:this.labels.cli,message:n,identifier:e.identifier,muted:e.muted});this.output(r,e)}info(n,e={}){let r=this.formatMessage({colorCode:this.colors.info,label:this.labels.info,message:n,identifier:e.identifier,muted:e.muted});this.output(r,e)}warn(n,e={}){let r=this.formatMessage({colorCode:this.colors.warn,label:this.labels.warn,message:n,identifier:e.identifier,muted:e.muted});this.output(r,e,console.warn)}error(n,e={}){let r=this.formatMessage({colorCode:this.colors.error,label:this.labels.error,message:n,identifier:e.identifier,muted:e.muted});this.output(r,e,console.error)}progress(n,e,r,t){let s=String(n),o=this.colors.default,i,c,a={};if(typeof r==="string")i=r,c=t;else if(r)i=r.size,c=r.identifier,a=r;for(let[u,f]of Object.entries(this.colors.progress))if(s.includes(u)){o=f;break}let l=this.formatMessage({colorCode:o,label:s,message:e,size:i,identifier:c,muted:a.muted});this.output(l,a)}}var m=B.getInstance();class $ extends Error{constructor(n){super(n);this.name="BunupError"}}class y extends ${constructor(n){super(n);this.name="BunupBuildError"}}class g extends ${constructor(n){super(n);this.name="BunupDTSBuildError"}}class h extends ${constructor(n){super(n);this.name="BunupCLIError"}}class E extends ${constructor(n){super(n);this.name="BunupWatchError"}}var b=(n)=>{if(n instanceof Error)return n.message;return String(n)},Jn=[{pattern:/Could not resolve: "bun"/i,errorType:"BUILD ERROR",logSolution:()=>{m.error("\x1B[0mYou're trying to build a project that uses Bun. Please set the target option to \x1B[36m`bun`\x1B[0m.\nExample: \x1B[32m`bunup --target bun`\x1B[0m or in config: \x1B[32m{ target: 'bun' }\x1B[0m")}}],F=(n,e)=>{let r=b(n),t=e?`[${e}] `:"",s="ERROR";if(n instanceof y)s="BUILD ERROR";else if(n instanceof g)s="DTS ERROR";else if(n instanceof h)s="CLI ERROR";else if(n instanceof E)s="WATCH ERROR";else if(n instanceof $)s="BUNUP ERROR";let o=Jn.find((i)=>i.pattern.test(r)&&(i.errorType===s||!i.errorType));if(!o)console.error(`\x1B[31m${s}\x1B[0m ${t}${r}`);if(o)console.log(`
4
- `),o.logSolution(r),console.log(`
5
- `);else console.error("\x1B[90mIf you think this is a bug, please open an issue at: \x1B[36mhttps://github.com/arshad-yaseen/bunup/issues/new\x1B[0m")},on=(n,e)=>{F(n,e),process.exit(1)};import wn from"node:path";import{ResolverFactory as re}from"oxc-resolver";import an from"node:fs/promises";import Pn from"node:path";function cn(n,e,r){return Array.isArray(n)?n.map((t)=>({...t,[e]:r})):{...n,[e]:r}}function ln(n){return Array.isArray(n)?n:[n]}function un(n,e){switch(n){case"esm":return O(e)?".js":".mjs";case"cjs":return O(e)?".cjs":".js";case"iife":return".global.js"}}function mn(n,e){switch(n){case"esm":return O(e)?".d.ts":".d.mts";case"cjs":return O(e)?".d.cts":".d.ts";case"iife":return".d.ts"}}function G(n){return n==="node"||n==="bun"}function O(n){return n==="module"}function I(n){return n>=1000?`${(n/1000).toFixed(2)}s`:`${Math.round(n)}ms`}function fn(n){if(!n)return[];return Array.from(new Set([...Object.keys(n.dependencies||{}),...Object.keys(n.peerDependencies||{})]))}function K(n){if(n===0)return"0 B";let e=["B","KB","MB","GB"],r=Math.floor(Math.log(n)/Math.log(1024));if(r===0)return`${n} ${e[r]}`;return`${(n/1024**r).toFixed(2)} ${e[r]}`}function C(n,e=3){return n.split("/").slice(-e).join("/")}async function dn(n,e){let r=Pn.join(n,e);try{await an.rm(r,{recursive:!0,force:!0})}catch(t){throw new y(`Failed to clean output directory: ${t}`)}await an.mkdir(r,{recursive:!0})}function R(n){return[".ts",".mts",".cts",".tsx"].some((e)=>n.endsWith(e))}function ne(n){return fn(n).map((e)=>new RegExp(`^${e}($|\\/|\\\\)`))}function pn(n,e){return typeof e==="string"?e===n:e.test(n)}function j(n,e,r){let s=ne(r).some((i)=>i.test(n))||e.external?.some((i)=>pn(n,i)),o=e.noExternal?.some((i)=>pn(n,i));return s&&!o}import{resolveTsImportPath as ee}from"ts-import-resolver";var A="\x00dts:",gn=(n,e,r)=>{return{name:"bunup:virtual-dts",async resolveId(t,s){if(Y(t))return t;if(!s||!Y(s))return null;let o=e.tsconfig?ee({path:t,importer:L(s),tsconfig:e.tsconfig,rootDir:r}):null;if(!o)return null;let i=w(o);if(n.has(i))return U(i);return null},load(t){if(t.startsWith(A)){let s=L(t),o=n.get(s);if(o)return S.add(s),o}return null}}};var N=/\.(js|mjs|cjs|ts|mts|cts|tsx|jsx)$/;function bn(n){return n.endsWith(".d.ts")||n.endsWith(".d.mts")||n.endsWith(".d.cts")}function Q(n){return N.test(n)&&!bn(n)}function w(n){if(bn(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(N.test(n))return n.replace(N,".d.ts");return`${n}.d.ts`}function hn(n){if(Q(n))return n;if(n.endsWith(".d.mts"))return`${n.slice(0,-6)}.mts`;if(n.endsWith(".d.cts"))return`${n.slice(0,-6)}.cts`;if(n.endsWith(".d.ts"))return`${n.slice(0,-5)}.ts`;return n}function Y(n){return n.startsWith(A)}function L(n){return n.replace(A,"")}function U(n){return`${A}${n}`}function xn(n,e,r,t){if(typeof t==="boolean"&&t)return!1;if(Array.isArray(t)){for(let s of t)if(typeof s==="string"&&n===s)return!1;else if(s instanceof RegExp&&s.test(n))return!1}return j(n,e,r)}var Z;function yn(n,e){return{name:"bunup:types-resolve",buildStart(){Z||=new re({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(r,t){if(e===!1)return;if(r==="bun")return;let s=t?L(t):void 0;if(/\0/.test(r))return;if(Array.isArray(e)){if(!e.some((a)=>typeof a==="string"?a===r:a.test(r)))return}let o=s?wn.dirname(s):process.cwd(),{path:i}=await Z.async(o,r);if(!i)return;if(Q(i)){let c=w(i);try{let{path:a}=await Z.async(wn.dirname(i),c);if(a)return a}catch(a){}return}return i}}}var te=import("rolldown"),se=import("rolldown-plugin-dts");async function Cn(n,e,r,t,s,o){let i=(await te).build,c=(await se).dts,a=w(n),l=U(a),u=typeof r.dts==="object"&&"resolve"in r.dts?r.dts.resolve:void 0;try{let{output:f}=await i({input:l,output:{dir:r.outDir},write:!1,...s.path&&{resolve:{tsconfigFilename:s.path}},onwarn(d,T){if(["UNRESOLVED_IMPORT","CIRCULAR_DEPENDENCY","EMPTY_BUNDLE"].includes(d.code??""))return;T(d)},plugins:[gn(e,s,o),u&&yn(s,u),c({dtsInput:!0,emitDtsOnly:!0})],external:(d)=>xn(d,r,t,u)});if(!f[0]?.code)return m.warn(`Generated empty declaration file for entry "${n}"`,{muted:!0}),"";return f[0].code}catch(f){throw new g(`DTS bundling failed for entry "${n}": ${b(f)}`)}}import{resolveTsImportPath as ie}from"ts-import-resolver";var oe=/^\s*import\s+(?:[^'"]*?\s+from\s+)?['"]([^'"]+)['"]/gm,ae=/^\s*export\s+.*from\s+['"]([^'"]+)['"]/gm,ce=/import\s*\(\s*['"]([^'"]+)['"]\s*\)/g,le=/require\s*\(\s*['"]([^'"]+)['"]\s*\)/g,ue=/import\s+\w+\s*=\s*require\s*\(\s*['"]([^'"]+)['"]\s*\)/g,me=/\/\/\/\s*<reference\s+path\s*=\s*['"]([^'"]+)['"]\s*\/>/g,fe=/\/\/\/\s*<reference\s+types\s*=\s*['"]([^'"]+)['"]\s*\/>/g;function de(n){let e=new Set,r=[oe,ae,ce,le,ue,me,fe];for(let t of r){let s=n.matchAll(t);for(let o of s)if(o[1])e.add(o[1])}return e}async function Bn(n,e,r){let t=new Set([n]),s=[n];while(s.length){let o=s.pop();if(!o)continue;try{let i=await Bun.file(o).text(),c=de(i);for(let a of c){let l=e.tsconfig?ie({path:a,importer:o,tsconfig:e.tsconfig,rootDir:r}):null;if(!l)continue;if(!t.has(l))t.add(l),s.push(l)}}catch(i){m.warn(`Error processing ${o}: ${b(i)}`)}}return t}import{isolatedDeclaration as pe}from"oxc-transform";async function $n(n){let e=new Map;return await Promise.all([...n].map(async(r)=>{try{let t=w(r);if(!await Bun.file(r).exists())return;let o=await Bun.file(r).text(),{code:i}=pe(r,o);if(i)e.set(t,i)}catch(t){m.warn(`Failed to generate declaration for ${r}: ${b(t)}`)}})),e}import On from"node:fs/promises";import X from"node:path";import{isolatedDeclaration as ge}from"oxc-transform";async function Sn(n,e){let r=X.resolve(n),t=X.resolve(r,e);if(!await On.exists(r))throw new g(`Root directory does not exist: ${r}`);if(!await Bun.file(t).exists())throw new g(`Entry file does not exist: ${t}`);if(!R(t))throw new g(`Entry file must be a TypeScript file: ${t}`);if(X.relative(r,t).startsWith(".."))throw new g(`Entry file must be within rootDir: ${t}`);return{absoluteRootDir:r,absoluteEntry:t}}async function Tn(n){let e=!1;if(await Promise.all([...n].map(async(r)=>{try{let t=hn(r),s=await Bun.file(t).text(),{errors:o}=ge(t,s);for(let i of o){if(!e)console.log(`
6
- `);let c=i.labels[0],a=c?be(s,c.start):"",u=`${C(t)}${a}: ${he(i.message)}`;m.warn(u),e=!0}}catch{}})),e)m.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 be(n,e){if(e===void 0)return"";let r=n.slice(0,e).split(`
7
- `),t=r.length,s=r[r.length-1].length+1;return` (${t}:${s})`}function he(n){return n.replace(" with --isolatedDeclarations","").replace(" with --isolatedDeclaration","")}async function Ln(n,e,r,t,s){let{absoluteEntry:o}=await Sn(n,e),i=await Bn(o,t,n),c=await $n(i);return Cn(o,c,r,s,t,n)}import{basename as xe,dirname as we,extname as ye}from"node:path";function _(n){let e=xe(n),r=ye(e);return r?e.slice(0,-r.length):e}function k(n){if(typeof n==="string")return[{fullEntryPath:n,name:_(n)}];if(typeof n==="object"&&!Array.isArray(n))return Object.entries(n).map(([t,s])=>({fullEntryPath:s,name:t}));let e=[],r=new Set;for(let t of n){let s=_(t);if(!r.has(s)){e.push({fullEntryPath:t,name:s}),r.add(s);continue}let i=we(t).split("/").filter((a)=>a!=="."&&a!=="");if(i.length===0){let a=1,l;do l=`${s}_${a++}`;while(r.has(l));e.push({fullEntryPath:t,name:l}),r.add(l);continue}let c=!1;for(let a=1;a<=i.length&&!c;a++){let u=`${i.slice(-a).join("/")}/${s}`;if(!r.has(u))e.push({fullEntryPath:t,name:u}),r.add(u),c=!0}if(!c){let a=1,l;do l=`${i.join("/")}/${s}_${a++}`;while(r.has(l));e.push({fullEntryPath:t,name:l}),r.add(l)}}return e}function An(n){return n.filter((e)=>R(e.fullEntryPath))}function kn(n,e){return`[dir]/${n}${e}`}import{loadConfig as Mn}from"coffi";async function En(n,e){return Array.isArray(n)&&"root"in n[0]?n.map((r)=>({rootDir:r.root,options:cn(r.config,"name",r.name)})):[{rootDir:e,options:n}]}async function In(n){let{config:e,filepath:r}=await Mn({name:"package",cwd:n,extensions:[".json"],maxDepth:3});return{packageJson:e,path:r}}async function Rn(n,e){let{config:r,filepath:t}=await Mn({name:"tsconfig",cwd:n,extensions:[".json"],preferredPath:e,maxDepth:3});return{tsconfig:r,path:t}}var Ce={entry:[],format:["cjs"],outDir:"dist",target:"node",clean:!0};function D(n){return{...Ce,...n}}function jn(n){let{minify:e,minifyWhitespace:r,minifyIdentifiers:t,minifySyntax:s}=n,o=e===!0;return{whitespace:r??o,identifiers:t??o,syntax:s??o}}function Un(n,e){return e==="cjs"?n:void 0}function _n(n,e,r,t){return{...typeof r==="object"&&Object.keys(r).reduce((s,o)=>{let i=JSON.stringify(r[o]);return s[`process.env.${o}`]=i,s[`import.meta.env.${o}`]=i,s},{}),...n,...t==="cjs"&&(e===!0||typeof e==="object"&&e.importMetaUrl)&&{"import.meta.url":"importMetaUrl"}}}function Dn(n,e){return n===void 0?e==="esm":n}function Wn(n){return typeof n==="string"?n:void 0}function Hn(n,e){return{name:"bunup:external-plugin",setup(r){r.onResolve({filter:/.*/},(t)=>{let s=t.path;if(j(s,n,e))return{path:s,external:!0};return null})}}}var Be=/\.(js|ts|jsx|tsx|mts|cts)$/,z={dirnameFilename:{appliesTo:(n,e)=>n==="esm"&&G(e),isNeededInFile:(n)=>/\b__dirname\b/.test(n)||/\b__filename\b/.test(n),generateCode:()=>`import { fileURLToPath } from 'url';
3
+ var er=Object.create;var{getPrototypeOf:rr,defineProperty:le,getOwnPropertyNames:nr}=Object;var tr=Object.prototype.hasOwnProperty;var Z=(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((Zr,N)=>{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")}};N.exports=ge();N.exports.createColors=ge});import{exec as Fr}from"tinyexec";import{build as fr}from"rolldown";import{dts as pr}from"rolldown-plugin-dts";var p=Z(j(),1);var m=Z(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' }"))}}],X=(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)=>{X(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 V(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 z(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 D(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 W(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(P(t))return t;if(!i||!P(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 J=/\.(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 ee(e){return J.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(J.test(e))return e.replace(J,".d.ts");return`${e}.d.ts`}function Se(e){if(ee(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 P(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 W(e,r,n)}var re;function ke(e,r){return{name:"bunup:types-resolve",buildStart(){re||=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 re.async(s,n);if(!o)return;if(ee(o)){let l=C(o);try{let{path:a}=await re.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 ne from"path";import{isolatedDeclaration as $r}from"oxc-transform";async function Ae(e,r){let n=ne.resolve(e),t=ne.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(!D(t))throw new b(`Entry file must be a TypeScript file: ${t}`);if(ne.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)=>D(r.fullEntryPath))}function Ue(e,r){return`[dir]/${e}${r}`}import{loadConfig as _e}from"coffi";async function De(e,r){return Array.isArray(e)&&"root"in e[0]?e.map((n)=>({rootDir:n.root,options:de(n.config,"name",n.name)})):[{rootDir:r,options:e}]}async function We(e){let{config:r,filepath:n}=await _e({name:"package",cwd:e,extensions:[".json"],maxDepth:3});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,maxDepth:3});return{tsconfig:n,path:t}}var Er={entry:[],format:["cjs"],outDir:"dist",target:"node",clean:!0};function q(e){return{...Er,...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(W(i,e,r))return{path:i,external:!0};return null})}}}var Ar=/\.(js|ts|jsx|tsx|mts|cts)$/,te={dirnameFilename:{appliesTo:(e,r)=>e==="esm"&&V(r),isNeededInFile:(e)=>/\b__dirname\b/.test(e)||/\b__filename\b/.test(e),generateCode:()=>`import { fileURLToPath } from 'url';
8
9
  import { dirname } from 'path';
9
10
 
10
11
  const __filename = fileURLToPath(import.meta.url);
11
12
  const __dirname = dirname(__filename);
12
13
 
13
- `},importMetaUrl:{appliesTo:(n,e)=>n==="cjs"&&G(e),isNeededInFile:(n)=>/\bimport\.meta\.url\b/.test(n),generateCode:()=>`import { pathToFileURL } from 'url';
14
+ `},importMetaUrl:{appliesTo:(e,r)=>e==="cjs"&&V(r),isNeededInFile:(e)=>/\bimport\.meta\.url\b/.test(e),generateCode:()=>`import { pathToFileURL } from 'url';
14
15
 
15
16
  const importMetaUrl = pathToFileURL(__filename).href;
16
17
 
17
- `}};function vn({format:n,target:e,shims:r}){let s=$e(r).map((o)=>z[o]).filter((o)=>o.appliesTo(n,e));if(s.length===0)return{name:"bunup:inject-shims",setup(){}};return{name:"bunup:inject-shims",setup(o){o.onLoad({filter:Be},async({path:i})=>{let c=await Bun.file(i).text(),a=s.filter((d)=>d.isNeededInFile(c));if(a.length===0)return;let{shebangLine:l,codeContent:u}=Oe(c),f=a.map((d)=>d.generateCode()).join("");return{contents:l+f+u}})}}}function $e(n){if(n===!0)return Object.keys(z);if(!n)return[];return Object.entries(n).filter(([e,r])=>r&&(e in z)).map(([e])=>e)}function Oe(n){if(!n.startsWith("#!"))return{shebangLine:"",codeContent:n};let e=n.indexOf(`
18
- `);return e===-1?{shebangLine:"",codeContent:n}:{shebangLine:n.slice(0,e+1),codeContent:n.slice(e+1)}}function qn(n){return n.filter((e)=>e.type==="bun").map((e)=>e.plugin)}var S=new Set;async function W(n,e=process.cwd()){let r=D(n);if(!r.entry||r.entry.length===0||!r.outDir)throw new y("Nothing to build. Please make sure you have provided a proper bunup configuration or cli arguments.");if(r.clean)dn(e,r.outDir);M(r.silent);let{packageJson:t,path:s}=await In(e);if(t&&s)m.cli(`Using package.json: ${C(s,2)}`,{muted:!0,identifier:r.name,once:`${s}:${r.name}`});let o=k(r.entry),i=t?.type;if(!r.dtsOnly){let c=[Hn(r,t),...qn(r.plugins??[])],a=r.format.flatMap((l)=>o.map((u)=>{return Se(r,e,u,l,i,c)}));await Promise.all(a)}if(r.dts||r.dtsOnly){let c=await Rn(e,r.preferredTsconfigPath);if(c.path)m.cli(`Using tsconfig: ${C(c.path,2)}`,{muted:!0,identifier:r.name,once:`${c.path}:${r.name}`});let a=r.format.filter((u)=>{if(u==="iife"&&!O(i)&&r.format.includes("cjs"))return!1;return!0}),l=typeof r.dts==="object"&&r.dts.entry?k(r.dts.entry):An(o);try{await Promise.all(l.map(async(u)=>{let f=await Ln(e,u.fullEntryPath,r,c,t);await Promise.all(a.map(async(d)=>{let T=r.outputExtension?.({format:d,packageType:i,options:r,entry:u}).dts??mn(d,i),P=`${r.outDir}/${u.name}${T}`,nn=`${e}/${P}`;await Bun.write(nn,f);let Nn=Bun.file(nn).size||0;m.progress("DTS",P,K(Nn),r.name)}))}))}catch(u){throw new g(b(u))}}if(r.onBuildSuccess)await r.onBuildSuccess(r)}async function Se(n,e,r,t,s,o){let i=n.outputExtension?.({format:t,packageType:s,options:n,entry:r}).js??un(t,s),c=await Bun.build({entrypoints:[`${e}/${r.fullEntryPath}`],format:t,naming:{entry:kn(r.name,i)},splitting:Dn(n.splitting,t),bytecode:Un(n.bytecode,t),define:_n(n.define,n.shims,n.env,t),minify:jn(n),outdir:`${e}/${n.outDir}`,target:n.target,sourcemap:n.sourcemap,loader:n.loader,drop:n.drop,banner:n.banner,footer:n.footer,publicPath:n.publicPath,env:Wn(n.env),plugins:[...o,vn({format:t,target:n.target,shims:n.shims})],throw:!1});if(!c.success)for(let f of c.logs){if(f.level==="error")throw new y(f.message);if(f.level==="warning")m.warn(f.message);else if(f.level==="info")m.info(f.message)}let a=`${n.outDir}/${r.name}${i}`,l=`${e}/${a}`,u=Bun.file(l).size||0;m.progress(t.toUpperCase(),a,K(u),n.name)}var H="0.4.67";var Fn="https://bunup.dev/cli-options";function p(n){return(e,r)=>{r[n]=e===!0||e==="true"}}function x(n){return(e,r)=>{if(typeof e==="string")r[n]=e;else throw new h(`Option --${n} requires a string value`)}}function V(n){return(e,r)=>{if(typeof e==="string")r[n]=e.split(",");else throw new h(`Option --${n} requires a string value`)}}function Le(n){return(e,r)=>{if(typeof e==="boolean")r[n]=e;else if(typeof e==="string")if(e.toLowerCase()==="true"||e.toLowerCase()==="false")r[n]=e.toLowerCase()==="true";else r[n]=e;else throw new h(`Option --${n} requires a boolean or string value`)}}function Ae(){console.log(`
19
- Bunup - A blazing-fast build tool for your libraries built with Bun.
20
- `),console.log("For more information on available options, visit:"),console.log(`\x1B[36m\x1B[4m${Fn}\x1B[0m
21
- `),process.exit(0)}function ke(){console.log(H),process.exit(0)}var Gn={name:{flags:["n","name"],handler:x("name")},format:{flags:["f","format"],handler:V("format")},outDir:{flags:["o","out-dir"],handler:x("outDir")},minify:{flags:["m","minify"],handler:p("minify")},watch:{flags:["w","watch"],handler:p("watch")},dts:{flags:["d","dts"],handler:p("dts")},banner:{flags:["bn","banner"],handler:x("banner")},footer:{flags:["ft","footer"],handler:x("footer")},external:{flags:["e","external"],handler:V("external")},sourcemap:{flags:["sm","sourcemap"],handler:Le("sourcemap")},target:{flags:["t","target"],handler:x("target")},minifyWhitespace:{flags:["mw","minify-whitespace"],handler:p("minifyWhitespace")},minifyIdentifiers:{flags:["mi","minify-identifiers"],handler:p("minifyIdentifiers")},minifySyntax:{flags:["ms","minify-syntax"],handler:p("minifySyntax")},clean:{flags:["c","clean"],handler:p("clean")},splitting:{flags:["s","splitting"],handler:p("splitting")},noExternal:{flags:["ne","no-external"],handler:V("noExternal")},preferredTsconfigPath:{flags:["tsconfig","preferred-tsconfig-path"],handler:x("preferredTsconfigPath")},bytecode:{flags:["bc","bytecode"],handler:p("bytecode")},dtsOnly:{flags:["do","dts-only"],handler:p("dtsOnly")},silent:{flags:["silent"],handler:p("silent")},config:{flags:["config"],handler:x("config")},publicPath:{flags:["pp","public-path"],handler:x("publicPath")},env:{flags:["env"],handler:x("env")},shims:{flags:["shims"],handler:p("shims")},onSuccess:{flags:["onSuccess"],handler:x("onSuccess")},entry:{flags:["entry"],handler:(n,e,r)=>{if(typeof n!=="string")throw new h(`Entry${r?` --entry.${r}`:""} requires a string value`);let t=e.entry||{};if(r){if(t[r])m.warn(`Duplicate entry name '${r}' provided via --entry.${r}. Overwriting previous entry.`);t[r]=n}else{let s=_(n);if(t[s])m.warn(`Duplicate entry name '${s}' derived from '${n}'. Overwriting previous entry.`);t[s]=n}e.entry=t}},resolveDts:{flags:["rd","resolve-dts"],handler:(n,e)=>{if(!e.dts)e.dts={};if(typeof e.dts==="boolean")e.dts={};if(typeof n==="string")if(n==="true"||n==="false")e.dts.resolve=n==="true";else e.dts.resolve=n.split(",");else e.dts.resolve=!0}},help:{flags:["h","help"],handler:()=>Ae()},version:{flags:["v","version"],handler:()=>ke()}},v={};for(let n of Object.values(Gn))for(let e of n.flags)v[e]=n.handler;function Kn(n){let e={};for(let r=0;r<n.length;r++){let t=n[r];if(t.startsWith("--")){let s,o;if(t.includes("=")){let[i,c]=t.slice(2).split("=",2);s=i,o=c}else{s=t.slice(2);let i=n[r+1];if(o=i&&!i.startsWith("-")?i:!0,typeof o==="string")r++}if(s.includes(".")){let[i,c]=s.split(".",2),a=v[i];if(a)a(o,e,c);else throw new h(`Unknown option: --${s}`)}else{let i=v[s];if(i)i(o,e);else throw new h(`Unknown option: --${s}`)}}else if(t.startsWith("-")){let s=t.slice(1),o=n[r+1],i=o&&!o.startsWith("-")?o:!0;if(typeof i==="string")r++;let c=v[s];if(c)c(i,e);else throw new h(`Unknown option: -${s}`)}else Gn.entry.handler(t,e,void 0)}return e}import{loadConfig as Ie}from"coffi";import q from"node:path";import Me from"chokidar";async function Yn(n,e){let r=new Set,t=D(n),s=k(t.entry);for(let a of s){let l=q.resolve(e,a.fullEntryPath),u=q.dirname(l);r.add(u)}let o=Me.watch(Array.from(r),{persistent:!0,awaitWriteFinish:{stabilityThreshold:100,pollInterval:50},ignoreInitial:!0,atomic:!0,ignorePermissionErrors:!0,ignored:[/[\\/]\.git[\\/]/,/[\\/]node_modules[\\/]/,q.join(e,t.outDir)]}),i=!1,c=async(a=!1)=>{if(i)return;i=!0;try{let l=performance.now();if(await W({...t,entry:s.map((u)=>u.fullEntryPath),clean:!1},e),!a)m.cli(`\uD83D\uDCE6 Rebuild finished in ${I(performance.now()-l)}`);await J()}catch(l){F(l)}finally{i=!1}};o.on("change",(a)=>{let l=q.relative(e,a);m.cli(`File changed: ${l}`,{muted:!0,once:l}),c()}),o.on("error",(a)=>{throw new E(`Watcher error: ${b(a)}`)}),await c(!0)}async function Re(n=Bun.argv.slice(2)){let e=Kn(n);M(e.silent);let r=process.cwd(),{config:t,filepath:s}=await Ie({name:"bunup.config",extensions:[".ts",".js",".mjs",".cjs"],maxDepth:1,preferredPath:e.config,packageJsonProperty:"bunup"}),o=!t?[{rootDir:r,options:e}]:await En(t,r);if(m.cli(`Using bunup v${H} and bun v${Bun.version}`,{muted:!0}),s)m.cli(`Using config file: ${C(s,2)}`,{muted:!0});let i=performance.now();m.cli("Build started"),await Promise.all(o.flatMap(({options:l,rootDir:u})=>{return ln(l).map(async(d)=>{let T={...d,...je(e)};return Ue(T,u)})}));let c=performance.now()-i,a=I(c);if(m.cli(`\u26A1\uFE0F Build completed in ${a}`),await J(),e.watch)m.cli("\uD83D\uDC40 Watching for file changes");if(e.onSuccess)m.cli(`Running command: ${e.onSuccess}`,{muted:!0}),await Ee(e.onSuccess,[],{nodeOptions:{shell:!0,stdio:"inherit"}});if(!e.watch)process.exit(0)}function je(n){return{...n,onSuccess:void 0,config:void 0}}async function J(){if(S.size>0)await Tn(S),S.clear()}async function Ue(n,e){if(n.watch)await Yn(n,e);else await W(n,e)}Re().catch((n)=>on(n));export{J as validateDtsFiles};
18
+ `}};function Ze({format:e,target:r,shims:n}){let i=Ir(n).map((s)=>te[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:Ar},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}=jr(l),f=a.map((h)=>h.generateCode()).join("");return{contents:c+f+u}})}}}function Ir(e){if(e===!0)return Object.keys(te);if(!e)return[];return Object.entries(e).filter(([r,n])=>n&&(r in te)).map(([r])=>r)}function jr(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 We(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 vr(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,z(Je),n.name)}))}))}catch(u){throw new b(x(u))}}if(n.onBuildSuccess)await n.onBuildSuccess(n)}async function vr(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,z(u),e.name)}var se=Z(j(),1);var G="0.4.69";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 ie(e){return(r,n)=>{if(typeof r==="string")n[e]=r.split(",");else throw new w(`Option --${e} requires a string value`)}}function _r(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(`
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 Wr(){console.log(G),process.exit(0)}var Ve={name:{flags:["n","name"],handler:y("name")},format:{flags:["f","format"],handler:ie("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:ie("external")},sourcemap:{flags:["sm","sourcemap"],handler:_r("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:ie("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")},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:()=>Wr()}},K={};for(let e of Object.values(Ve))for(let r of e.flags)K[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=K[o];if(a)a(s,r,l);else throw new w(`Unknown option: --${i}`)}else{let o=K[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=K[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 qr}from"coffi";import Q from"path";import Hr 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=Q.resolve(r,a.fullEntryPath),u=Q.dirname(c);n.add(u)}let s=Hr.watch(Array.from(n),{persistent:!0,awaitWriteFinish:{stabilityThreshold:100,pollInterval:50},ignoreInitial:!0,atomic:!0,ignorePermissionErrors:!0,ignored:[/[\\/]\.git[\\/]/,/[\\/]node_modules[\\/]/,Q.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){X(c)}finally{o=!1}};s.on("change",(a)=>{let c=Q.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 Yr(e=Bun.argv.slice(2)){let r=ze(e);v(r.silent);let n=process.cwd(),{config:t,filepath:i}=await qr({name:"bunup.config",extensions:[".ts",".js",".mjs",".cjs"],maxDepth:1,preferredPath:r.config,packageJsonProperty:"bunup"}),s=!t?[{rootDir:n,options:r}]:await De(t,n);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,...Gr(r)};return Kr(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 Fr(r.onSuccess,[],{nodeOptions:{shell:!0,stdio:"inherit"}});if(!r.watch)process.exit(process.exitCode??0)}function Gr(e){return{...e,onSuccess:void 0,config:void 0}}async function oe(){if(k.size>0)await Ie(k),k.clear()}async function Kr(e,r){if(e.watch)await Pe(e,r);else await Y(e,r)}Yr().catch((e)=>fe(e));export{oe as validateDtsFiles};
package/dist/index.d.mts CHANGED
@@ -8,10 +8,12 @@ type ProcessableEntry = {
8
8
 
9
9
  //#endregion
10
10
  //#region \0dts:/home/runner/work/bunup/bunup/src/plugins/types.d.ts
11
- type Plugin<T extends "bun" = "bun"> = {
12
- type: T
13
- plugin: T extends "bun" ? BunPlugin : never
11
+ type BunupBunPlugin = {
12
+ type: "bun"
13
+ name?: string
14
+ plugin: BunPlugin
14
15
  };
16
+ type Plugin = BunupBunPlugin;
15
17
 
16
18
  //#endregion
17
19
  //#region \0dts:/home/runner/work/bunup/bunup/src/options.d.ts
package/dist/index.d.ts CHANGED
@@ -8,10 +8,12 @@ type ProcessableEntry = {
8
8
 
9
9
  //#endregion
10
10
  //#region \0dts:/home/runner/work/bunup/bunup/src/plugins/types.d.ts
11
- type Plugin<T extends "bun" = "bun"> = {
12
- type: T
13
- plugin: T extends "bun" ? BunPlugin : never
11
+ type BunupBunPlugin = {
12
+ type: "bun"
13
+ name?: string
14
+ plugin: BunPlugin
14
15
  };
16
+ type Plugin = BunupBunPlugin;
15
17
 
16
18
  //#endregion
17
19
  //#region \0dts:/home/runner/work/bunup/bunup/src/options.d.ts
package/dist/index.js CHANGED
@@ -1,12 +1,13 @@
1
- var Fr=require("node:module");var kr=Object.create;var{getPrototypeOf:Wr,defineProperty:$,getOwnPropertyNames:Z,getOwnPropertyDescriptor:_r}=Object,X=Object.prototype.hasOwnProperty;var b=(r,n,e)=>{e=r!=null?kr(Wr(r)):{};let t=n||!r||!r.__esModule?$(e,"default",{value:r,enumerable:!0}):e;for(let o of Z(r))if(!X.call(t,o))$(t,o,{get:()=>r[o],enumerable:!0});return t},Q=new WeakMap,Ur=(r)=>{var n=Q.get(r),e;if(n)return n;if(n=$({},"__esModule",{value:!0}),r&&typeof r==="object"||typeof r==="function")Z(r).map((t)=>!X.call(n,t)&&$(n,t,{get:()=>r[t],enumerable:!(e=_r(r,t))||e.enumerable}));return Q.set(r,n),n};var qr=(r,n)=>{for(var e in n)$(r,e,{get:n[e],enumerable:!0,configurable:!0,set:(t)=>n[e]=()=>t})};var on={};qr(on,{defineWorkspace:()=>z,defineConfig:()=>N,build:()=>Or});module.exports=Ur(on);function N(r){return r}function z(r){return r}var V=!1;function J(r){V=r??!1}class C{static instance;loggedOnceMessages=new Set;MAX_LABEL_LENGTH=3;MAX_MESSAGE_LENGTH=25;colors={cli:"147",muted:"245",info:"117",warn:"179",error:"174",progress:{ESM:"172",CJS:"108",IIFE:"146",DTS:"110"},default:"252",size:"65"};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({colorCode:r,label:n,message:e,size:t,identifier:o,muted:i}){let s=" ".repeat(Math.max(0,this.MAX_LABEL_LENGTH-n.length)),u=i?`\x1B[38;5;${this.colors.muted}m${e}\x1B[0m`:e;if(t){let[a,...m]=u.split(" "),g=" ".repeat(Math.max(0,this.MAX_MESSAGE_LENGTH-a.length)),l=o?` \x1B[48;5;${r};38;5;0m ${o} \x1B[0m`:"";return`\x1B[38;5;${r}m${n}\x1B[0m ${s}${a}${g} \x1B[38;5;${this.colors.size}m${t}\x1B[0m ${m.join(" ")}${l}`}let c=o?` \x1B[48;5;${r};38;5;0m ${o} \x1B[0m`:"";return`\x1B[38;5;${r}m${n}\x1B[0m ${s}${u}${c}`}output(r,n={},e=console.log){if(V)return;if(!this.shouldLog(n))return;if(n.verticalSpace)console.log("");if(e(r),n.verticalSpace)console.log("")}cli(r,n={}){let e=this.formatMessage({colorCode:this.colors.cli,label:this.labels.cli,message:r,identifier:n.identifier,muted:n.muted});this.output(e,n)}info(r,n={}){let e=this.formatMessage({colorCode:this.colors.info,label:this.labels.info,message:r,identifier:n.identifier,muted:n.muted});this.output(e,n)}warn(r,n={}){let e=this.formatMessage({colorCode:this.colors.warn,label:this.labels.warn,message:r,identifier:n.identifier,muted:n.muted});this.output(e,n,console.warn)}error(r,n={}){let e=this.formatMessage({colorCode:this.colors.error,label:this.labels.error,message:r,identifier:n.identifier,muted:n.muted});this.output(e,n,console.error)}progress(r,n,e,t){let o=String(r),i=this.colors.default,s,u,c={};if(typeof e==="string")s=e,u=t;else if(e)s=e.size,u=e.identifier,c=e;for(let[m,g]of Object.entries(this.colors.progress))if(o.includes(m)){i=g;break}let a=this.formatMessage({colorCode:i,label:o,message:n,size:s,identifier:u,muted:c.muted});this.output(a,c)}}var f=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 d=(r)=>{if(r instanceof Error)return r.message;return String(r)};var U=b(require("node:path")),mr=require("oxc-resolver");var j=b(require("node:fs/promises")),v=b(require("node:path"));function P(r,n){switch(r){case"esm":return B(n)?".js":".mjs";case"cjs":return B(n)?".cjs":".js";case"iife":return".global.js"}}function rr(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 O(r){return r==="node"||r==="bun"}function B(r){return r==="module"}function nr(r){if(!r)return[];return Array.from(new Set([...Object.keys(r.dependencies||{}),...Object.keys(r.peerDependencies||{})]))}function D(r){if(r===0)return"0 B";let n=["B","KB","MB","GB"],e=Math.floor(Math.log(r)/Math.log(1024));if(e===0)return`${r} ${n[e]}`;return`${(r/1024**e).toFixed(2)} ${n[e]}`}function L(r,n=3){return r.split("/").slice(-n).join("/")}async function er(r,n){let e=v.default.join(r,n);try{await j.default.rm(e,{recursive:!0,force:!0})}catch(t){throw new w(`Failed to clean output directory: ${t}`)}await j.default.mkdir(e,{recursive:!0})}function E(r){return[".ts",".mts",".cts",".tsx"].some((n)=>r.endsWith(n))}function Gr(r){return nr(r).map((n)=>new RegExp(`^${n}($|\\/|\\\\)`))}function tr(r,n){return typeof n==="string"?n===r:n.test(r)}function M(r,n,e){let o=Gr(e).some((s)=>s.test(r))||n.external?.some((s)=>tr(r,s)),i=n.noExternal?.some((s)=>tr(r,s));return o&&!i}var or=require("ts-import-resolver");var T="\x00dts:",ir=(r,n,e)=>{return{name:"bunup:virtual-dts",async resolveId(t,o){if(k(t))return t;if(!o||!k(o))return null;let i=n.tsconfig?or.resolveTsImportPath({path:t,importer:S(o),tsconfig:n.tsconfig,rootDir:e}):null;if(!i)return null;let s=x(i);if(r.has(s))return R(s);return null},load(t){if(t.startsWith(T)){let o=S(t),i=r.get(o);if(i)return sr.add(o),i}return null}}};var W=/\.(js|mjs|cjs|ts|mts|cts|tsx|jsx)$/;function cr(r){return r.endsWith(".d.ts")||r.endsWith(".d.mts")||r.endsWith(".d.cts")}function ur(r){return W.test(r)&&!cr(r)}function x(r){if(cr(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 k(r){return r.startsWith(T)}function S(r){return r.replace(T,"")}function R(r){return`${T}${r}`}function ar(r,n,e,t){if(typeof t==="boolean"&&t)return!1;if(Array.isArray(t)){for(let o of t)if(typeof o==="string"&&r===o)return!1;else if(o instanceof RegExp&&o.test(r))return!1}return M(r,n,e)}var _;function gr(r,n){return{name:"bunup:types-resolve",buildStart(){_||=new mr.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,t){if(n===!1)return;if(e==="bun")return;let o=t?S(t):void 0;if(/\0/.test(e))return;if(Array.isArray(n)){if(!n.some((c)=>typeof c==="string"?c===e:c.test(e)))return}let i=o?U.default.dirname(o):process.cwd(),{path:s}=await _.async(i,e);if(!s)return;if(ur(s)){let u=x(s);try{let{path:c}=await _.async(U.default.dirname(s),u);if(c)return c}catch(c){}return}return s}}}var Hr=import("rolldown"),Kr=import("rolldown-plugin-dts");async function fr(r,n,e,t,o,i){let s=(await Hr).build,u=(await Kr).dts,c=x(r),a=R(c),m=typeof e.dts==="object"&&"resolve"in e.dts?e.dts.resolve:void 0;try{let{output:g}=await s({input:a,output:{dir:e.outDir},write:!1,...o.path&&{resolve:{tsconfigFilename:o.path}},onwarn(l,I){if(["UNRESOLVED_IMPORT","CIRCULAR_DEPENDENCY","EMPTY_BUNDLE"].includes(l.code??""))return;I(l)},plugins:[ir(n,o,i),m&&gr(o,m),u({dtsInput:!0,emitDtsOnly:!0})],external:(l)=>ar(l,e,t,m)});if(!g[0]?.code)return f.warn(`Generated empty declaration file for entry "${r}"`,{muted:!0}),"";return g[0].code}catch(g){throw new p(`DTS bundling failed for entry "${r}": ${d(g)}`)}}var lr=require("ts-import-resolver");var Yr=/^\s*import\s+(?:[^'"]*?\s+from\s+)?['"]([^'"]+)['"]/gm,Qr=/^\s*export\s+.*from\s+['"]([^'"]+)['"]/gm,Zr=/import\s*\(\s*['"]([^'"]+)['"]\s*\)/g,Xr=/require\s*\(\s*['"]([^'"]+)['"]\s*\)/g,Nr=/import\s+\w+\s*=\s*require\s*\(\s*['"]([^'"]+)['"]\s*\)/g,zr=/\/\/\/\s*<reference\s+path\s*=\s*['"]([^'"]+)['"]\s*\/>/g,Vr=/\/\/\/\s*<reference\s+types\s*=\s*['"]([^'"]+)['"]\s*\/>/g;function Jr(r){let n=new Set,e=[Yr,Qr,Zr,Xr,Nr,zr,Vr];for(let t of e){let o=r.matchAll(t);for(let i of o)if(i[1])n.add(i[1])}return n}async function pr(r,n,e){let t=new Set([r]),o=[r];while(o.length){let i=o.pop();if(!i)continue;try{let s=await Bun.file(i).text(),u=Jr(s);for(let c of u){let a=n.tsconfig?lr.resolveTsImportPath({path:c,importer:i,tsconfig:n.tsconfig,rootDir:e}):null;if(!a)continue;if(!t.has(a))t.add(a),o.push(a)}}catch(s){f.warn(`Error processing ${i}: ${d(s)}`)}}return t}var dr=require("oxc-transform");async function xr(r){let n=new Map;return await Promise.all([...r].map(async(e)=>{try{let t=x(e);if(!await Bun.file(e).exists())return;let i=await Bun.file(e).text(),{code:s}=dr.isolatedDeclaration(e,i);if(s)n.set(t,s)}catch(t){f.warn(`Failed to generate declaration for ${e}: ${d(t)}`)}})),n}var q=b(require("node:fs/promises")),A=b(require("node:path")),vr=require("oxc-transform");async function br(r,n){let e=A.default.resolve(r),t=A.default.resolve(e,n);if(!await q.default.exists(e))throw new p(`Root directory does not exist: ${e}`);if(!await Bun.file(t).exists())throw new p(`Entry file does not exist: ${t}`);if(!E(t))throw new p(`Entry file must be a TypeScript file: ${t}`);if(A.default.relative(e,t).startsWith(".."))throw new p(`Entry file must be within rootDir: ${t}`);return{absoluteRootDir:e,absoluteEntry:t}}async function Cr(r,n,e,t,o){let{absoluteEntry:i}=await br(r,n),s=await pr(i,t,r),u=await xr(s);return fr(i,u,e,o,t,r)}var h=require("node:path");function wr(r){let n=h.basename(r),e=h.extname(n);return e?n.slice(0,-e.length):n}function F(r){if(typeof r==="string")return[{fullEntryPath:r,name:wr(r)}];if(typeof r==="object"&&!Array.isArray(r))return Object.entries(r).map(([t,o])=>({fullEntryPath:o,name:t}));let n=[],e=new Set;for(let t of r){let o=wr(t);if(!e.has(o)){n.push({fullEntryPath:t,name:o}),e.add(o);continue}let s=h.dirname(t).split("/").filter((c)=>c!=="."&&c!=="");if(s.length===0){let c=1,a;do a=`${o}_${c++}`;while(e.has(a));n.push({fullEntryPath:t,name:a}),e.add(a);continue}let u=!1;for(let c=1;c<=s.length&&!u;c++){let m=`${s.slice(-c).join("/")}/${o}`;if(!e.has(m))n.push({fullEntryPath:t,name:m}),e.add(m),u=!0}if(!u){let c=1,a;do a=`${s.join("/")}/${o}_${c++}`;while(e.has(a));n.push({fullEntryPath:t,name:a}),e.add(a)}}return n}function Br(r){return r.filter((n)=>E(n.fullEntryPath))}function hr(r,n){return`[dir]/${r}${n}`}var G=require("coffi");async function $r(r){let{config:n,filepath:e}=await G.loadConfig({name:"package",cwd:r,extensions:[".json"],maxDepth:3});return{packageJson:n,path:e}}async function Sr(r,n){let{config:e,filepath:t}=await G.loadConfig({name:"tsconfig",cwd:r,extensions:[".json"],preferredPath:n,maxDepth:3});return{tsconfig:e,path:t}}var Pr={entry:[],format:["cjs"],outDir:"dist",target:"node",clean:!0};function Tr(r){return{...Pr,...r}}function Lr(r){let{minify:n,minifyWhitespace:e,minifyIdentifiers:t,minifySyntax:o}=r,i=n===!0;return{whitespace:e??i,identifiers:t??i,syntax:o??i}}function Er(r,n){return n==="cjs"?r:void 0}function Mr(r,n,e,t){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,...t==="cjs"&&(n===!0||typeof n==="object"&&n.importMetaUrl)&&{"import.meta.url":"importMetaUrl"}}}function Rr(r,n){return r===void 0?n==="esm":r}function Ar(r){return typeof r==="string"?r:void 0}function Ir(r,n){return{name:"bunup:external-plugin",setup(e){e.onResolve({filter:/.*/},(t)=>{let o=t.path;if(M(o,r,n))return{path:o,external:!0};return null})}}}var rn=/\.(js|ts|jsx|tsx|mts|cts)$/,H={dirnameFilename:{appliesTo:(r,n)=>r==="esm"&&O(n),isNeededInFile:(r)=>/\b__dirname\b/.test(r)||/\b__filename\b/.test(r),generateCode:()=>`import { fileURLToPath } from 'url';
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"],maxDepth:3});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,maxDepth:3});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
3
  import { dirname } from 'path';
3
4
 
4
5
  const __filename = fileURLToPath(import.meta.url);
5
6
  const __dirname = dirname(__filename);
6
7
 
7
- `},importMetaUrl:{appliesTo:(r,n)=>r==="cjs"&&O(n),isNeededInFile:(r)=>/\bimport\.meta\.url\b/.test(r),generateCode:()=>`import { pathToFileURL } from 'url';
8
+ `},importMetaUrl:{appliesTo:(r,t)=>r==="cjs"&&F(t),isNeededInFile:(r)=>/\bimport\.meta\.url\b/.test(r),generateCode:()=>`import { pathToFileURL } from 'url';
8
9
 
9
10
  const importMetaUrl = pathToFileURL(__filename).href;
10
11
 
11
- `}};function yr({format:r,target:n,shims:e}){let o=nn(e).map((i)=>H[i]).filter((i)=>i.appliesTo(r,n));if(o.length===0)return{name:"bunup:inject-shims",setup(){}};return{name:"bunup:inject-shims",setup(i){i.onLoad({filter:rn},async({path:s})=>{let u=await Bun.file(s).text(),c=o.filter((l)=>l.isNeededInFile(u));if(c.length===0)return;let{shebangLine:a,codeContent:m}=en(u),g=c.map((l)=>l.generateCode()).join("");return{contents:a+g+m}})}}}function nn(r){if(r===!0)return Object.keys(H);if(!r)return[];return Object.entries(r).filter(([n,e])=>e&&(n in H)).map(([n])=>n)}function en(r){if(!r.startsWith("#!"))return{shebangLine:"",codeContent:r};let n=r.indexOf(`
12
- `);return n===-1?{shebangLine:"",codeContent:r}:{shebangLine:r.slice(0,n+1),codeContent:r.slice(n+1)}}function jr(r){return r.filter((n)=>n.type==="bun").map((n)=>n.plugin)}var sr=new Set;async function Or(r,n=process.cwd()){let e=Tr(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)er(n,e.outDir);J(e.silent);let{packageJson:t,path:o}=await $r(n);if(t&&o)f.cli(`Using package.json: ${L(o,2)}`,{muted:!0,identifier:e.name,once:`${o}:${e.name}`});let i=F(e.entry),s=t?.type;if(!e.dtsOnly){let u=[Ir(e,t),...jr(e.plugins??[])],c=e.format.flatMap((a)=>i.map((m)=>{return tn(e,n,m,a,s,u)}));await Promise.all(c)}if(e.dts||e.dtsOnly){let u=await Sr(n,e.preferredTsconfigPath);if(u.path)f.cli(`Using tsconfig: ${L(u.path,2)}`,{muted:!0,identifier:e.name,once:`${u.path}:${e.name}`});let c=e.format.filter((m)=>{if(m==="iife"&&!B(s)&&e.format.includes("cjs"))return!1;return!0}),a=typeof e.dts==="object"&&e.dts.entry?F(e.dts.entry):Br(i);try{await Promise.all(a.map(async(m)=>{let g=await Cr(n,m.fullEntryPath,e,u,t);await Promise.all(c.map(async(l)=>{let I=e.outputExtension?.({format:l,packageType:s,options:e,entry:m}).dts??rr(l,s),K=`${e.outDir}/${m.name}${I}`,Y=`${n}/${K}`;await Bun.write(Y,g);let Dr=Bun.file(Y).size||0;f.progress("DTS",K,D(Dr),e.name)}))}))}catch(m){throw new p(d(m))}}if(e.onBuildSuccess)await e.onBuildSuccess(e)}async function tn(r,n,e,t,o,i){let s=r.outputExtension?.({format:t,packageType:o,options:r,entry:e}).js??P(t,o),u=await Bun.build({entrypoints:[`${n}/${e.fullEntryPath}`],format:t,naming:{entry:hr(e.name,s)},splitting:Rr(r.splitting,t),bytecode:Er(r.bytecode,t),define:Mr(r.define,r.shims,r.env,t),minify:Lr(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:Ar(r.env),plugins:[...i,yr({format:t,target:r.target,shims:r.shims})],throw:!1});if(!u.success)for(let g of u.logs){if(g.level==="error")throw new w(g.message);if(g.level==="warning")f.warn(g.message);else if(g.level==="info")f.info(g.message)}let c=`${r.outDir}/${e.name}${s}`,a=`${n}/${c}`,m=Bun.file(a).size||0;f.progress(t.toUpperCase(),c,D(m),r.name)}
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)}})
package/dist/index.mjs CHANGED
@@ -1,12 +1,13 @@
1
- import{createRequire as Rr}from"node:module";var Tr=Object.create;var{getPrototypeOf:Lr,defineProperty:U,getOwnPropertyNames:Er}=Object;var Mr=Object.prototype.hasOwnProperty;var q=(r,n,e)=>{e=r!=null?Tr(Lr(r)):{};let t=n||!r||!r.__esModule?U(e,"default",{value:r,enumerable:!0}):e;for(let o of Er(r))if(!Mr.call(t,o))U(t,o,{get:()=>r[o],enumerable:!0});return t};var F=Rr(import.meta.url);function Ar(r){return r}function Ir(r){return r}var G=!1;function H(r){G=r??!1}class b{static instance;loggedOnceMessages=new Set;MAX_LABEL_LENGTH=3;MAX_MESSAGE_LENGTH=25;colors={cli:"147",muted:"245",info:"117",warn:"179",error:"174",progress:{ESM:"172",CJS:"108",IIFE:"146",DTS:"110"},default:"252",size:"65"};labels={cli:"CLI",info:"INFO",warn:"WARN",error:"ERROR"};constructor(){}static getInstance(){if(!b.instance)b.instance=new b;return b.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({colorCode:r,label:n,message:e,size:t,identifier:o,muted:i}){let s=" ".repeat(Math.max(0,this.MAX_LABEL_LENGTH-n.length)),u=i?`\x1B[38;5;${this.colors.muted}m${e}\x1B[0m`:e;if(t){let[a,...m]=u.split(" "),g=" ".repeat(Math.max(0,this.MAX_MESSAGE_LENGTH-a.length)),l=o?` \x1B[48;5;${r};38;5;0m ${o} \x1B[0m`:"";return`\x1B[38;5;${r}m${n}\x1B[0m ${s}${a}${g} \x1B[38;5;${this.colors.size}m${t}\x1B[0m ${m.join(" ")}${l}`}let c=o?` \x1B[48;5;${r};38;5;0m ${o} \x1B[0m`:"";return`\x1B[38;5;${r}m${n}\x1B[0m ${s}${u}${c}`}output(r,n={},e=console.log){if(G)return;if(!this.shouldLog(n))return;if(n.verticalSpace)console.log("");if(e(r),n.verticalSpace)console.log("")}cli(r,n={}){let e=this.formatMessage({colorCode:this.colors.cli,label:this.labels.cli,message:r,identifier:n.identifier,muted:n.muted});this.output(e,n)}info(r,n={}){let e=this.formatMessage({colorCode:this.colors.info,label:this.labels.info,message:r,identifier:n.identifier,muted:n.muted});this.output(e,n)}warn(r,n={}){let e=this.formatMessage({colorCode:this.colors.warn,label:this.labels.warn,message:r,identifier:n.identifier,muted:n.muted});this.output(e,n,console.warn)}error(r,n={}){let e=this.formatMessage({colorCode:this.colors.error,label:this.labels.error,message:r,identifier:n.identifier,muted:n.muted});this.output(e,n,console.error)}progress(r,n,e,t){let o=String(r),i=this.colors.default,s,u,c={};if(typeof e==="string")s=e,u=t;else if(e)s=e.size,u=e.identifier,c=e;for(let[m,g]of Object.entries(this.colors.progress))if(o.includes(m)){i=g;break}let a=this.formatMessage({colorCode:i,label:o,message:n,size:s,identifier:u,muted:c.muted});this.output(a,c)}}var f=b.getInstance();class M extends Error{constructor(r){super(r);this.name="BunupError"}}class C extends M{constructor(r){super(r);this.name="BunupBuildError"}}class p extends M{constructor(r){super(r);this.name="BunupDTSBuildError"}}var d=(r)=>{if(r instanceof Error)return r.message;return String(r)};import rr from"node:path";import{ResolverFactory as Dr}from"oxc-resolver";import K from"node:fs/promises";import yr from"node:path";function Y(r,n){switch(r){case"esm":return w(n)?".js":".mjs";case"cjs":return w(n)?".cjs":".js";case"iife":return".global.js"}}function Q(r,n){switch(r){case"esm":return w(n)?".d.ts":".d.mts";case"cjs":return w(n)?".d.cts":".d.ts";case"iife":return".d.ts"}}function R(r){return r==="node"||r==="bun"}function w(r){return r==="module"}function Z(r){if(!r)return[];return Array.from(new Set([...Object.keys(r.dependencies||{}),...Object.keys(r.peerDependencies||{})]))}function A(r){if(r===0)return"0 B";let n=["B","KB","MB","GB"],e=Math.floor(Math.log(r)/Math.log(1024));if(e===0)return`${r} ${n[e]}`;return`${(r/1024**e).toFixed(2)} ${n[e]}`}function $(r,n=3){return r.split("/").slice(-n).join("/")}async function X(r,n){let e=yr.join(r,n);try{await K.rm(e,{recursive:!0,force:!0})}catch(t){throw new C(`Failed to clean output directory: ${t}`)}await K.mkdir(e,{recursive:!0})}function S(r){return[".ts",".mts",".cts",".tsx"].some((n)=>r.endsWith(n))}function jr(r){return Z(r).map((n)=>new RegExp(`^${n}($|\\/|\\\\)`))}function N(r,n){return typeof n==="string"?n===r:n.test(r)}function T(r,n,e){let o=jr(e).some((s)=>s.test(r))||n.external?.some((s)=>N(r,s)),i=n.noExternal?.some((s)=>N(r,s));return o&&!i}import{resolveTsImportPath as Or}from"ts-import-resolver";var h="\x00dts:",z=(r,n,e)=>{return{name:"bunup:virtual-dts",async resolveId(t,o){if(I(t))return t;if(!o||!I(o))return null;let i=n.tsconfig?Or({path:t,importer:B(o),tsconfig:n.tsconfig,rootDir:e}):null;if(!i)return null;let s=x(i);if(r.has(s))return L(s);return null},load(t){if(t.startsWith(h)){let o=B(t),i=r.get(o);if(i)return V.add(o),i}return null}}};var y=/\.(js|mjs|cjs|ts|mts|cts|tsx|jsx)$/;function J(r){return r.endsWith(".d.ts")||r.endsWith(".d.mts")||r.endsWith(".d.cts")}function v(r){return y.test(r)&&!J(r)}function x(r){if(J(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 I(r){return r.startsWith(h)}function B(r){return r.replace(h,"")}function L(r){return`${h}${r}`}function P(r,n,e,t){if(typeof t==="boolean"&&t)return!1;if(Array.isArray(t)){for(let o of t)if(typeof o==="string"&&r===o)return!1;else if(o instanceof RegExp&&o.test(r))return!1}return T(r,n,e)}var j;function nr(r,n){return{name:"bunup:types-resolve",buildStart(){j||=new Dr({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,t){if(n===!1)return;if(e==="bun")return;let o=t?B(t):void 0;if(/\0/.test(e))return;if(Array.isArray(n)){if(!n.some((c)=>typeof c==="string"?c===e:c.test(e)))return}let i=o?rr.dirname(o):process.cwd(),{path:s}=await j.async(i,e);if(!s)return;if(v(s)){let u=x(s);try{let{path:c}=await j.async(rr.dirname(s),u);if(c)return c}catch(c){}return}return s}}}var kr=import("rolldown"),Wr=import("rolldown-plugin-dts");async function er(r,n,e,t,o,i){let s=(await kr).build,u=(await Wr).dts,c=x(r),a=L(c),m=typeof e.dts==="object"&&"resolve"in e.dts?e.dts.resolve:void 0;try{let{output:g}=await s({input:a,output:{dir:e.outDir},write:!1,...o.path&&{resolve:{tsconfigFilename:o.path}},onwarn(l,E){if(["UNRESOLVED_IMPORT","CIRCULAR_DEPENDENCY","EMPTY_BUNDLE"].includes(l.code??""))return;E(l)},plugins:[z(n,o,i),m&&nr(o,m),u({dtsInput:!0,emitDtsOnly:!0})],external:(l)=>P(l,e,t,m)});if(!g[0]?.code)return f.warn(`Generated empty declaration file for entry "${r}"`,{muted:!0}),"";return g[0].code}catch(g){throw new p(`DTS bundling failed for entry "${r}": ${d(g)}`)}}import{resolveTsImportPath as _r}from"ts-import-resolver";var Ur=/^\s*import\s+(?:[^'"]*?\s+from\s+)?['"]([^'"]+)['"]/gm,qr=/^\s*export\s+.*from\s+['"]([^'"]+)['"]/gm,Fr=/import\s*\(\s*['"]([^'"]+)['"]\s*\)/g,Gr=/require\s*\(\s*['"]([^'"]+)['"]\s*\)/g,Hr=/import\s+\w+\s*=\s*require\s*\(\s*['"]([^'"]+)['"]\s*\)/g,Kr=/\/\/\/\s*<reference\s+path\s*=\s*['"]([^'"]+)['"]\s*\/>/g,Yr=/\/\/\/\s*<reference\s+types\s*=\s*['"]([^'"]+)['"]\s*\/>/g;function Qr(r){let n=new Set,e=[Ur,qr,Fr,Gr,Hr,Kr,Yr];for(let t of e){let o=r.matchAll(t);for(let i of o)if(i[1])n.add(i[1])}return n}async function tr(r,n,e){let t=new Set([r]),o=[r];while(o.length){let i=o.pop();if(!i)continue;try{let s=await Bun.file(i).text(),u=Qr(s);for(let c of u){let a=n.tsconfig?_r({path:c,importer:i,tsconfig:n.tsconfig,rootDir:e}):null;if(!a)continue;if(!t.has(a))t.add(a),o.push(a)}}catch(s){f.warn(`Error processing ${i}: ${d(s)}`)}}return t}import{isolatedDeclaration as Zr}from"oxc-transform";async function or(r){let n=new Map;return await Promise.all([...r].map(async(e)=>{try{let t=x(e);if(!await Bun.file(e).exists())return;let i=await Bun.file(e).text(),{code:s}=Zr(e,i);if(s)n.set(t,s)}catch(t){f.warn(`Failed to generate declaration for ${e}: ${d(t)}`)}})),n}import ir from"node:fs/promises";import O from"node:path";import{isolatedDeclaration as Qn}from"oxc-transform";async function sr(r,n){let e=O.resolve(r),t=O.resolve(e,n);if(!await ir.exists(e))throw new p(`Root directory does not exist: ${e}`);if(!await Bun.file(t).exists())throw new p(`Entry file does not exist: ${t}`);if(!S(t))throw new p(`Entry file must be a TypeScript file: ${t}`);if(O.relative(e,t).startsWith(".."))throw new p(`Entry file must be within rootDir: ${t}`);return{absoluteRootDir:e,absoluteEntry:t}}async function cr(r,n,e,t,o){let{absoluteEntry:i}=await sr(r,n),s=await tr(i,t,r),u=await or(s);return er(i,u,e,o,t,r)}import{basename as Xr,dirname as Nr,extname as zr}from"node:path";function ur(r){let n=Xr(r),e=zr(n);return e?n.slice(0,-e.length):n}function D(r){if(typeof r==="string")return[{fullEntryPath:r,name:ur(r)}];if(typeof r==="object"&&!Array.isArray(r))return Object.entries(r).map(([t,o])=>({fullEntryPath:o,name:t}));let n=[],e=new Set;for(let t of r){let o=ur(t);if(!e.has(o)){n.push({fullEntryPath:t,name:o}),e.add(o);continue}let s=Nr(t).split("/").filter((c)=>c!=="."&&c!=="");if(s.length===0){let c=1,a;do a=`${o}_${c++}`;while(e.has(a));n.push({fullEntryPath:t,name:a}),e.add(a);continue}let u=!1;for(let c=1;c<=s.length&&!u;c++){let m=`${s.slice(-c).join("/")}/${o}`;if(!e.has(m))n.push({fullEntryPath:t,name:m}),e.add(m),u=!0}if(!u){let c=1,a;do a=`${s.join("/")}/${o}_${c++}`;while(e.has(a));n.push({fullEntryPath:t,name:a}),e.add(a)}}return n}function ar(r){return r.filter((n)=>S(n.fullEntryPath))}function mr(r,n){return`[dir]/${r}${n}`}import{loadConfig as gr}from"coffi";async function fr(r){let{config:n,filepath:e}=await gr({name:"package",cwd:r,extensions:[".json"],maxDepth:3});return{packageJson:n,path:e}}async function lr(r,n){let{config:e,filepath:t}=await gr({name:"tsconfig",cwd:r,extensions:[".json"],preferredPath:n,maxDepth:3});return{tsconfig:e,path:t}}var Vr={entry:[],format:["cjs"],outDir:"dist",target:"node",clean:!0};function pr(r){return{...Vr,...r}}function dr(r){let{minify:n,minifyWhitespace:e,minifyIdentifiers:t,minifySyntax:o}=r,i=n===!0;return{whitespace:e??i,identifiers:t??i,syntax:o??i}}function xr(r,n){return n==="cjs"?r:void 0}function br(r,n,e,t){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,...t==="cjs"&&(n===!0||typeof n==="object"&&n.importMetaUrl)&&{"import.meta.url":"importMetaUrl"}}}function Cr(r,n){return r===void 0?n==="esm":r}function wr(r){return typeof r==="string"?r:void 0}function Br(r,n){return{name:"bunup:external-plugin",setup(e){e.onResolve({filter:/.*/},(t)=>{let o=t.path;if(T(o,r,n))return{path:o,external:!0};return null})}}}var Jr=/\.(js|ts|jsx|tsx|mts|cts)$/,k={dirnameFilename:{appliesTo:(r,n)=>r==="esm"&&R(n),isNeededInFile:(r)=>/\b__dirname\b/.test(r)||/\b__filename\b/.test(r),generateCode:()=>`import { fileURLToPath } from 'url';
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"],maxDepth:3});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,maxDepth:3});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
3
  import { dirname } from 'path';
3
4
 
4
5
  const __filename = fileURLToPath(import.meta.url);
5
6
  const __dirname = dirname(__filename);
6
7
 
7
- `},importMetaUrl:{appliesTo:(r,n)=>r==="cjs"&&R(n),isNeededInFile:(r)=>/\bimport\.meta\.url\b/.test(r),generateCode:()=>`import { pathToFileURL } from 'url';
8
+ `},importMetaUrl:{appliesTo:(r,t)=>r==="cjs"&&k(t),isNeededInFile:(r)=>/\bimport\.meta\.url\b/.test(r),generateCode:()=>`import { pathToFileURL } from 'url';
8
9
 
9
10
  const importMetaUrl = pathToFileURL(__filename).href;
10
11
 
11
- `}};function hr({format:r,target:n,shims:e}){let o=vr(e).map((i)=>k[i]).filter((i)=>i.appliesTo(r,n));if(o.length===0)return{name:"bunup:inject-shims",setup(){}};return{name:"bunup:inject-shims",setup(i){i.onLoad({filter:Jr},async({path:s})=>{let u=await Bun.file(s).text(),c=o.filter((l)=>l.isNeededInFile(u));if(c.length===0)return;let{shebangLine:a,codeContent:m}=Pr(u),g=c.map((l)=>l.generateCode()).join("");return{contents:a+g+m}})}}}function vr(r){if(r===!0)return Object.keys(k);if(!r)return[];return Object.entries(r).filter(([n,e])=>e&&(n in k)).map(([n])=>n)}function Pr(r){if(!r.startsWith("#!"))return{shebangLine:"",codeContent:r};let n=r.indexOf(`
12
- `);return n===-1?{shebangLine:"",codeContent:r}:{shebangLine:r.slice(0,n+1),codeContent:r.slice(n+1)}}function $r(r){return r.filter((n)=>n.type==="bun").map((n)=>n.plugin)}var V=new Set;async function rn(r,n=process.cwd()){let e=pr(r);if(!e.entry||e.entry.length===0||!e.outDir)throw new C("Nothing to build. Please make sure you have provided a proper bunup configuration or cli arguments.");if(e.clean)X(n,e.outDir);H(e.silent);let{packageJson:t,path:o}=await fr(n);if(t&&o)f.cli(`Using package.json: ${$(o,2)}`,{muted:!0,identifier:e.name,once:`${o}:${e.name}`});let i=D(e.entry),s=t?.type;if(!e.dtsOnly){let u=[Br(e,t),...$r(e.plugins??[])],c=e.format.flatMap((a)=>i.map((m)=>{return nn(e,n,m,a,s,u)}));await Promise.all(c)}if(e.dts||e.dtsOnly){let u=await lr(n,e.preferredTsconfigPath);if(u.path)f.cli(`Using tsconfig: ${$(u.path,2)}`,{muted:!0,identifier:e.name,once:`${u.path}:${e.name}`});let c=e.format.filter((m)=>{if(m==="iife"&&!w(s)&&e.format.includes("cjs"))return!1;return!0}),a=typeof e.dts==="object"&&e.dts.entry?D(e.dts.entry):ar(i);try{await Promise.all(a.map(async(m)=>{let g=await cr(n,m.fullEntryPath,e,u,t);await Promise.all(c.map(async(l)=>{let E=e.outputExtension?.({format:l,packageType:s,options:e,entry:m}).dts??Q(l,s),W=`${e.outDir}/${m.name}${E}`,_=`${n}/${W}`;await Bun.write(_,g);let Sr=Bun.file(_).size||0;f.progress("DTS",W,A(Sr),e.name)}))}))}catch(m){throw new p(d(m))}}if(e.onBuildSuccess)await e.onBuildSuccess(e)}async function nn(r,n,e,t,o,i){let s=r.outputExtension?.({format:t,packageType:o,options:r,entry:e}).js??Y(t,o),u=await Bun.build({entrypoints:[`${n}/${e.fullEntryPath}`],format:t,naming:{entry:mr(e.name,s)},splitting:Cr(r.splitting,t),bytecode:xr(r.bytecode,t),define:br(r.define,r.shims,r.env,t),minify:dr(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:wr(r.env),plugins:[...i,hr({format:t,target:r.target,shims:r.shims})],throw:!1});if(!u.success)for(let g of u.logs){if(g.level==="error")throw new C(g.message);if(g.level==="warning")f.warn(g.message);else if(g.level==="info")f.info(g.message)}let c=`${r.outDir}/${e.name}${s}`,a=`${n}/${c}`,m=Bun.file(a).size||0;f.progress(t.toUpperCase(),c,A(m),r.name)}export{Ir as defineWorkspace,Ar as defineConfig,rn as build};
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};
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.67",
4
+ "version": "0.4.69",
5
5
  "license": "MIT",
6
6
  "author": "Arshad Yaseen <m@arshadyaseen.com> (https://arshadyaseen.com)",
7
7
  "maintainers": [
@@ -47,6 +47,10 @@
47
47
  "prepare": "husky",
48
48
  "fetch-latest-dep-versions": "bun run --cwd create-bunup fetch-latest-dep-versions"
49
49
  },
50
+ "lint-staged": {
51
+ "*": "bun run format --no-errors-on-unmatched",
52
+ "src/**/*.(m|c)?(j|t)s|(bump|bunup).config.ts": "bun run tsc"
53
+ },
50
54
  "workspaces": ["tests", "docs", "benchmarks", "create-bunup"],
51
55
  "dependencies": {
52
56
  "chokidar": "^4.0.3",
@@ -68,13 +72,12 @@
68
72
  },
69
73
  "devDependencies": {
70
74
  "@biomejs/biome": "^1.9.4",
71
- "@commitlint/cli": "^19.5.0",
72
- "@commitlint/config-conventional": "^19.5.0",
73
75
  "@types/bun": "^1.2.5",
74
76
  "bumpp": "^10.1.0",
75
- "bunup": "^0.4.65",
77
+ "bunup": "^0.4.67",
76
78
  "create-bunup": "create-bunup",
77
79
  "husky": "^9.1.7",
80
+ "lint-staged": "^15.5.1",
78
81
  "typescript": "^5.8.3"
79
82
  }
80
83
  }