bunup 0.3.0 → 0.3.1

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/build/cli.mjs CHANGED
@@ -20,8 +20,8 @@ To fix this, use named entries in your configuration:
20
20
  }
21
21
  }
22
22
 
23
- See: https://bunup.arshadyaseen.com/#using-a-configuration-file-with-named-entries`,{muted:!0,verticalSpace:!0}),t.push({name:c,path:i})}else t.push({name:o,path:i}),e.add(o),r[o]=i}if(Array.isArray(n))for(let o of n){let i=L(o);s(i,o)}else Object.entries(n).forEach(([o,i])=>{s(o,i)});return t}function $n(n,t){return`[dir]/${n}${t}`}function On(n,t){return{name:"bunup:external-plugin",setup(e){e.onResolve({filter:/.*/},(r)=>{let s=r.path;if(n.some((i)=>i.test(s))&&!t.some((i)=>i.test(s)))return{path:s,external:!0};return null})}}}var B=new Set;async function D(n,t){if(!n.entry||n.entry.length===0||!n.outDir)throw new x("Nothing to build. Please make sure you have provided a proper bunup configuration or cli arguments.");let e=M(t),r=e?.type,s=N(n,e),o=T(n),i=[On(s,o)],a=R(n.entry),c=V(n,t),u=n.format.flatMap((p)=>a.map((f)=>{return nt(n,t,f,p,r,i,c)}));try{await Promise.all(u)}catch(p){throw console.error(p),new x("Build process encountered errors")}if(n.dts){let p=n.format.filter((g)=>{if(g==="iife"&&!j(r)&&n.format.includes("cjs"))return!1;return!0}),f=n.dts===!0?a:R(n.dts.entry);try{await Promise.all(f.map(async(g)=>{let b=await bn(t,g.path,n);await Promise.all(p.map(async($)=>{let Nn=en($,r),W=`${t}/${n.outDir}/${g.name}${Nn}`;await Bun.write(W,b);let Tn=Bun.file(W).size||0;l.progress("DTS",O(W),q(Tn),n.name)}))}))}catch(g){throw new d(`DTS build process encountered errors: ${m(g)}`)}}}async function nt(n,t,e,r,s,o,i){let a=tn(r,s),c=await Bun.build({...i,entrypoints:[`${t}/${e.path}`],format:r,naming:{entry:$n(e.name,a)},splitting:on(n.splitting,r),plugins:o,throw:!1});if(!c.success)throw c.logs.forEach((f)=>{if(f.level==="error")l.error(f.message);else if(f.level==="warning")l.warn(f.message);else if(f.level==="info")l.info(f.message)}),new x(`Build failed for ${e.path} (${r})`);let u=`${t}/${n.outDir}/${e.name}${a}`,p=Bun.file(u).size||0;l.progress(r.toUpperCase(),O(u),q(p),n.name)}var Cn="0.3.0";var vn="https://bun.sh/docs/installation",En="https://bunup.arshadyaseen.com/#cli-options";function w(n){return(t,e)=>{e[n]=t===!0?!0:t==="true"}}function U(n){return(t,e)=>{if(typeof t==="string")e[n]=t;else throw new h(`Option --${n} requires a string value`)}}function Bn(n){return(t,e)=>{if(typeof t==="string")e[n]=t.split(",");else throw new h(`Option --${n} requires a string value`)}}function et(){console.log(`
23
+ See: https://bunup.arshadyaseen.com/#using-a-configuration-file-with-named-entries`,{muted:!0,verticalSpace:!0}),t.push({name:c,path:i})}else t.push({name:o,path:i}),e.add(o),r[o]=i}if(Array.isArray(n))for(let o of n){let i=L(o);s(i,o)}else Object.entries(n).forEach(([o,i])=>{s(o,i)});return t}function $n(n,t){return`[dir]/${n}${t}`}function On(n,t){return{name:"bunup:external-plugin",setup(e){e.onResolve({filter:/.*/},(r)=>{let s=r.path;if(n.some((i)=>i.test(s))&&!t.some((i)=>i.test(s)))return{path:s,external:!0};return null})}}}var B=new Set;async function D(n,t){if(!n.entry||n.entry.length===0||!n.outDir)throw new x("Nothing to build. Please make sure you have provided a proper bunup configuration or cli arguments.");let e=M(t),r=e?.type,s=N(n,e),o=T(n),i=[On(s,o)],a=R(n.entry),c=V(n,t),u=n.format.flatMap((p)=>a.map((f)=>{return nt(n,t,f,p,r,i,c)}));try{await Promise.all(u)}catch(p){throw console.error(p),new x("Build process encountered errors")}if(n.dts){let p=n.format.filter((g)=>{if(g==="iife"&&!j(r)&&n.format.includes("cjs"))return!1;return!0}),f=n.dts===!0?a:R(n.dts.entry);try{await Promise.all(f.map(async(g)=>{let b=await bn(t,g.path,n);await Promise.all(p.map(async($)=>{let Nn=en($,r),W=`${t}/${n.outDir}/${g.name}${Nn}`;await Bun.write(W,b);let Tn=Bun.file(W).size||0;l.progress("DTS",O(W),q(Tn),n.name)}))}))}catch(g){throw new d(`DTS build process encountered errors: ${m(g)}`)}}}async function nt(n,t,e,r,s,o,i){let a=tn(r,s),c=await Bun.build({...i,entrypoints:[`${t}/${e.path}`],format:r,naming:{entry:$n(e.name,a)},splitting:on(n.splitting,r),plugins:o,throw:!1});if(!c.success)throw c.logs.forEach((f)=>{if(f.level==="error")l.error(f.message);else if(f.level==="warning")l.warn(f.message);else if(f.level==="info")l.info(f.message)}),new x(`Build failed for ${e.path} (${r})`);let u=`${t}/${n.outDir}/${e.name}${a}`,p=Bun.file(u).size||0;l.progress(r.toUpperCase(),O(u),q(p),n.name)}var Cn="0.3.1";var vn="https://bun.sh/docs/installation",En="https://bunup.arshadyaseen.com/#cli-options";function w(n){return(t,e)=>{e[n]=t===!0?!0:t==="true"}}function U(n){return(t,e)=>{if(typeof t==="string")e[n]=t;else throw new h(`Option --${n} requires a string value`)}}function Bn(n){return(t,e)=>{if(typeof t==="string")e[n]=t.split(",");else throw new h(`Option --${n} requires a string value`)}}function et(){console.log(`
24
24
  Bunup - An extremely fast, zero-config bundler for JavaScript and TypeScript, powered by Bun.
25
25
  `),console.log("For more information on available options, visit:"),console.log(`\x1B[36m\x1B[4m${En}\x1B[0m
26
26
  `),process.exit(0)}function rt(){console.log(Cn),process.exit(0)}var st={name:{flags:["n","name"],handler:U("name")},format:{flags:["f","format"],handler:(n,t)=>{if(typeof n==="string")t.format=n.split(",");else throw new h("Option --format requires a string value")}},outDir:{flags:["o","out-dir"],handler:U("outDir")},minify:{flags:["m","minify"],handler:w("minify")},watch:{flags:["w","watch"],handler:w("watch")},dts:{flags:["d","dts"],handler:w("dts")},external:{flags:["e","external"],handler:Bn("external")},sourcemap:{flags:["sm","sourcemap"],handler:U("sourcemap")},target:{flags:["t","target"],handler:U("target")},minifyWhitespace:{flags:["mw","minify-whitespace"],handler:w("minifyWhitespace")},minifyIdentifiers:{flags:["mi","minify-identifiers"],handler:w("minifyIdentifiers")},minifySyntax:{flags:["ms","minify-syntax"],handler:w("minifySyntax")},clean:{flags:["c","clean"],handler:w("clean")},splitting:{flags:["s","splitting"],handler:w("splitting")},noExternal:{flags:["ne","no-external"],handler:Bn("noExternal")}},ot={help:{flags:["h","help"],handler:()=>et()},version:{flags:["v","version"],handler:()=>rt()}},H={};for(let n of Object.values(st))if(n)for(let t of n.flags)H[t]=n.handler;for(let n of Object.values(ot))for(let t of n.flags)H[t]=n.handler;function Sn(n){let t={},e={},r=0;while(r<n.length){let s=n[r];if(s.startsWith("--")){let o,i;if(s.includes("=")){let[a,c]=s.slice(2).split("=",2);o=a,i=c}else{o=s.slice(2);let a=n[r+1];if(i=a&&!a.startsWith("-")?a:!0,typeof i==="string")r++}if(o==="entry")if(typeof i==="string"){let a=L(i);if(e[a])l.warn(`Duplicate entry name '${a}' derived from '${i}'. Overwriting previous entry.`);e[a]=i}else throw new h("Option --entry requires a string value");else if(o.startsWith("entry.")){let a=o.slice(6);if(typeof i==="string"){if(e[a])l.warn(`Duplicate entry name '${a}' provided via --entry.${a}. Overwriting previous entry.`);e[a]=i}else throw new h(`Option --entry.${a} requires a string value`)}else{let a=H[o];if(a)a(i,t);else throw new h(`Unknown option: --${o}`)}}else if(s.startsWith("-")){let o=s.slice(1),i=n[r+1],a=i&&!i.startsWith("-")?i:!0;if(typeof a==="string")r++;let c=H[o];if(c)c(a,t);else throw new h(`Unknown option: -${o}`)}else{let o=L(s);if(e[o])l.warn(`Duplicate entry name '${o}' derived from positional argument '${s}'. Overwriting previous entry.`);e[o]=s}r++}if(Object.keys(e).length>0)t.entry=e;return t}(()=>{if(typeof Bun==="undefined")throw new h(`Bunup requires Bun to run.
27
- To install Bun, visit `+vn)})();import Z from"node:path";import it from"chokidar";async function Rn(n,t){let e=new Set,r=R(n.entry);r.forEach((c)=>{let u=Z.resolve(t,c.path),p=Z.dirname(u);e.add(p)});let s=it.watch(Array.from(e),{persistent:!0,awaitWriteFinish:{stabilityThreshold:100,pollInterval:50},atomic:!0,ignorePermissionErrors:!0,ignored:[/[\\/]\.git[\\/]/,/[\\/]node_modules[\\/]/,n.outDir]}),o=null,i=!1,a=async()=>{if(i)return;i=!0;try{await D({...n,entry:r.map((c)=>c.path),clean:!1},t),n.onBuildEnd?.()}catch(c){throw new S(`Build failed: ${m(c)}`)}finally{i=!1}};s.on("change",(c)=>{let u=Z.relative(t,c);if(l.cli(`File changed: ${u}`),o)clearTimeout(o);o=setTimeout(()=>a(),300)}),s.on("error",(c)=>{throw new S(`Watcher error: ${m(c)}`)}),await a()}async function at(n=Bun.argv.slice(2)){let t=Sn(n),{configs:e,configFilePath:r}=await ln(process.cwd());if(r)l.cli(`Using config file: ${O(r,2)}`);if(t.watch)l.cli("Starting watch mode"),l.cli("Watching for file changes");let s=performance.now();if(l.cli("Build started"),e.length===0){let a={...v,...t},c=process.cwd();if(a.clean)I(c,P(a.outDir));await jn(a,c)}else{for(let{options:a,rootDir:c}of e)if(an(a.clean))I(c,P(a.outDir));await Promise.all(e.map(async({options:a,rootDir:c})=>{let u={...v,...a,...t};await jn(u,c)}))}let o=performance.now()-s,i=rn(o);if(l.cli(`\u26A1\uFE0F Build completed in ${i}`),B.size>0)await wn(B),B.clear();if(!t.watch)process.exit(0)}async function jn(n,t){if(n.watch)await Rn(n,t);else await D(n,t),n.onBuildEnd?.()}at().catch((n)=>z(n));export{at as main};
27
+ To install Bun, visit `+vn)})();import Z from"node:path";import it from"chokidar";async function Rn(n,t){let e=new Set,r=R(n.entry);r.forEach((c)=>{let u=Z.resolve(t,c.path),p=Z.dirname(u);e.add(p)});let s=it.watch(Array.from(e),{persistent:!0,awaitWriteFinish:{stabilityThreshold:100,pollInterval:50},atomic:!0,ignorePermissionErrors:!0,ignored:[/[\\/]\.git[\\/]/,/[\\/]node_modules[\\/]/,n.outDir]}),o=null,i=!1,a=async()=>{if(i)return;i=!0;try{await D({...n,entry:r.map((c)=>c.path),clean:!1},t),n.onBuildSuccess?.()}catch(c){throw new S(`Build failed: ${m(c)}`)}finally{i=!1}};s.on("change",(c)=>{let u=Z.relative(t,c);if(l.cli(`File changed: ${u}`),o)clearTimeout(o);o=setTimeout(()=>a(),300)}),s.on("error",(c)=>{throw new S(`Watcher error: ${m(c)}`)}),await a()}async function at(n=Bun.argv.slice(2)){let t=Sn(n),{configs:e,configFilePath:r}=await ln(process.cwd());if(r)l.cli(`Using config file: ${O(r,2)}`);if(t.watch)l.cli("Starting watch mode"),l.cli("Watching for file changes");let s=performance.now();if(l.cli("Build started"),e.length===0){let a={...v,...t},c=process.cwd();if(a.clean)I(c,P(a.outDir));await jn(a,c)}else{for(let{options:a,rootDir:c}of e)if(an(a.clean))I(c,P(a.outDir));await Promise.all(e.map(async({options:a,rootDir:c})=>{let u={...v,...a,...t};await jn(u,c)}))}let o=performance.now()-s,i=rn(o);if(l.cli(`\u26A1\uFE0F Build completed in ${i}`),B.size>0)await wn(B),B.clear();if(!t.watch)process.exit(0)}async function jn(n,t){if(n.watch)await Rn(n,t);else await D(n,t),n.onBuildSuccess?.()}at().catch((n)=>z(n));export{at as main};
package/build/index.d.mts CHANGED
@@ -1,15 +1,3 @@
1
- type WithOptional<
2
- T,
3
- K extends keyof T
4
- > = Omit<T, K> & Partial<Pick<T, K>>;
5
- type DefineConfigOption = WithOptional<BunupOptions, "outDir" | "format">;
6
- type DefineConfigOptions = DefineConfigOption | DefineConfigOption[];
7
- type DefineWorkspaceOptions = {
8
- name: string
9
- root: string
10
- config: DefineConfigOptions
11
- }[];
12
-
13
1
  type Format = "esm" | "cjs" | "iife";
14
2
  type Target = "bun" | "node" | "browser";
15
3
  type External = string[];
@@ -165,15 +153,24 @@ interface BunupOptions {
165
153
  *
166
154
  * If watch mode is enabled, this callback runs after each rebuild
167
155
  */
168
- onBuildEnd?: () => void | Promise<void>;
156
+ onBuildSuccess?: () => void | Promise<void>;
169
157
  }
170
158
 
171
- declare function defineConfig(options: DefineConfigOptions): DefineConfigOptions;
172
- declare function defineWorkspace(options: DefineWorkspaceOptions): DefineWorkspaceOptions;
159
+ type WithOptional<
160
+ T,
161
+ K extends keyof T
162
+ > = Omit<T, K> & Partial<Pick<T, K>>;
163
+ type DefineConfigEntry = Omit<WithOptional<BunupOptions, "outDir" | "format">, "watch">;
164
+ type DefineWorkspaceEntry = {
165
+ name: string
166
+ root: string
167
+ config: DefineConfigEntry | DefineConfigEntry[]
168
+ };
169
+
170
+ declare function defineConfig(options: DefineConfigEntry | DefineConfigEntry[]): DefineConfigEntry | DefineConfigEntry[];
171
+ declare function defineWorkspace(options: DefineWorkspaceEntry[]): DefineWorkspaceEntry[];
173
172
 
174
173
  declare function build(options: BunupOptions, rootDir: string): Promise<void>;
175
174
 
176
- type Options = Partial<BunupOptions>;
177
-
178
175
  export { build, defineConfig, defineWorkspace };
179
- export type { Options };
176
+ export type { DefineConfigEntry, DefineWorkspaceEntry };
package/build/index.d.ts CHANGED
@@ -1,15 +1,3 @@
1
- type WithOptional<
2
- T,
3
- K extends keyof T
4
- > = Omit<T, K> & Partial<Pick<T, K>>;
5
- type DefineConfigOption = WithOptional<BunupOptions, "outDir" | "format">;
6
- type DefineConfigOptions = DefineConfigOption | DefineConfigOption[];
7
- type DefineWorkspaceOptions = {
8
- name: string
9
- root: string
10
- config: DefineConfigOptions
11
- }[];
12
-
13
1
  type Format = "esm" | "cjs" | "iife";
14
2
  type Target = "bun" | "node" | "browser";
15
3
  type External = string[];
@@ -165,15 +153,24 @@ interface BunupOptions {
165
153
  *
166
154
  * If watch mode is enabled, this callback runs after each rebuild
167
155
  */
168
- onBuildEnd?: () => void | Promise<void>;
156
+ onBuildSuccess?: () => void | Promise<void>;
169
157
  }
170
158
 
171
- declare function defineConfig(options: DefineConfigOptions): DefineConfigOptions;
172
- declare function defineWorkspace(options: DefineWorkspaceOptions): DefineWorkspaceOptions;
159
+ type WithOptional<
160
+ T,
161
+ K extends keyof T
162
+ > = Omit<T, K> & Partial<Pick<T, K>>;
163
+ type DefineConfigEntry = Omit<WithOptional<BunupOptions, "outDir" | "format">, "watch">;
164
+ type DefineWorkspaceEntry = {
165
+ name: string
166
+ root: string
167
+ config: DefineConfigEntry | DefineConfigEntry[]
168
+ };
169
+
170
+ declare function defineConfig(options: DefineConfigEntry | DefineConfigEntry[]): DefineConfigEntry | DefineConfigEntry[];
171
+ declare function defineWorkspace(options: DefineWorkspaceEntry[]): DefineWorkspaceEntry[];
173
172
 
174
173
  declare function build(options: BunupOptions, rootDir: string): Promise<void>;
175
174
 
176
- type Options = Partial<BunupOptions>;
177
-
178
175
  export { build, defineConfig, defineWorkspace };
179
- export type { Options };
176
+ export type { DefineConfigEntry, DefineWorkspaceEntry };
package/build/index.js CHANGED
@@ -1,4 +1,4 @@
1
- var Rr=require("node:module");var Cr=Object.create;var{getPrototypeOf:Er,defineProperty:y,getOwnPropertyNames:q,getOwnPropertyDescriptor:yr}=Object,U=Object.prototype.hasOwnProperty;var p=(r,n,t)=>{t=r!=null?Cr(Er(r)):{};let e=n||!r||!r.__esModule?y(t,"default",{value:r,enumerable:!0}):t;for(let s of q(r))if(!U.call(e,s))y(e,s,{get:()=>r[s],enumerable:!0});return e},Y=new WeakMap,br=(r)=>{var n=Y.get(r),t;if(n)return n;if(n=y({},"__esModule",{value:!0}),r&&typeof r==="object"||typeof r==="function")q(r).map((e)=>!U.call(n,e)&&y(n,e,{get:()=>r[e],enumerable:!(t=yr(r,e))||t.enumerable}));return Y.set(r,n),n};var Or=(r,n)=>{for(var t in n)y(r,t,{get:n[t],enumerable:!0,configurable:!0,set:(e)=>n[t]=()=>e})};var Gr={};Or(Gr,{defineWorkspace:()=>P,defineConfig:()=>K,build:()=>hr});module.exports=br(Gr);function K(r){return r}function P(r){return r}var Q=require("load-tsconfig");class A extends Error{constructor(r){super(r);this.name="BunupError"}}class C extends A{constructor(r){super(r);this.name="BunupBuildError"}}class x extends A{constructor(r){super(r);this.name="BunupDTSBuildError"}}var d=(r)=>{if(r instanceof Error)return r.message;return String(r)};var l={MAX_LABEL_LENGTH:3,MAX_MESSAGE_LENGTH:25,colors:{cli:"147",info:"245",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"},formatMessage({colorCode:r,label:n,message:t,size:e,identifier:s,muted:o}){let i=" ".repeat(Math.max(0,this.MAX_LABEL_LENGTH-n.length)),c=o?`\x1B[38;5;${this.colors.info}m${t}\x1B[0m`:t;if(e){let[g,...u]=c.split(" "),a=" ".repeat(Math.max(0,this.MAX_MESSAGE_LENGTH-g.length)),m=s?` \x1B[48;5;${r};38;5;0m ${s} \x1B[0m`:"";return`\x1B[38;5;${r}m${n}\x1B[0m ${i}${g}${a} \x1B[38;5;${this.colors.size}m${e}\x1B[0m ${u.join(" ")}${m}`}let f=s?` \x1B[48;5;${r};38;5;0m ${s} \x1B[0m`:"";return`\x1B[38;5;${r}m${n}\x1B[0m ${i}${c}${f}`},output(r,n={},t=console.log){if(n.verticalSpace)console.log("");if(t(r),n.verticalSpace)console.log("")},cli(r,n={}){let t=this.formatMessage({colorCode:this.colors.cli,label:this.labels.cli,message:r,identifier:n.identifier,muted:n.muted});this.output(t,n)},info(r,n={}){let t=this.formatMessage({colorCode:this.colors.info,label:this.labels.info,message:r,identifier:n.identifier,muted:n.muted});this.output(t,n)},warn(r,n={}){let t=this.formatMessage({colorCode:this.colors.warn,label:this.labels.warn,message:r,identifier:n.identifier,muted:n.muted});this.output(t,n,console.warn)},error(r,n={}){let t=this.formatMessage({colorCode:this.colors.error,label:this.labels.error,message:r,identifier:n.identifier,muted:n.muted});this.output(t,n,console.error)},progress(r,n,t,e){let s=String(r),o=this.colors.default,i,c,f={};if(typeof t==="string")i=t,c=e;else if(t)i=t.size,c=t.identifier,f=t;for(let[u,a]of Object.entries(this.colors.progress))if(s.includes(u)){o=a;break}let g=this.formatMessage({colorCode:o,label:s,message:n,size:i,identifier:c,muted:f.muted});this.output(g,f)}};function Z(r){try{return Q.loadTsConfig(".",r)}catch(n){return l.warn(`Failed to load tsconfig: ${d(n)}`),{path:r,data:{},files:[]}}}var or=require("rollup"),sr=p(require("rollup-plugin-dts")),j=p(require("typescript"));var Br=p(require("node:fs")),Sr=p(require("node:path"));function _(r,n){return{outdir:`${n}/${r.outDir}`,minify:vr(r),target:r.target,splitting:r.splitting,sourcemap:r.sourcemap}}function vr(r){let{minify:n,minifyWhitespace:t,minifyIdentifiers:e,minifySyntax:s}=r,o=n===!0;return{whitespace:t??o,identifiers:e??o,syntax:s??o}}function T(r){return r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function z(r=8){return Math.random().toString(36).substring(2,2+r)}function X(r,n){switch(r){case"esm":return".mjs";case"cjs":return O(n)?".cjs":".js";case"iife":return".global.js"}}function F(r,n){switch(r){case"esm":return".d.mts";case"cjs":return O(n)?".d.cts":".d.ts";case"iife":return".d.ts"}}function O(r){return r==="module"}function I(r){if(!r)return[];return Array.from(new Set([...Object.keys(r.dependencies||{}),...Object.keys(r.peerDependencies||{})]))}function V(r,n){return r===void 0?n==="esm":r}function W(r){if(r===0)return"0 B";let n=["B","KB","MB","GB"],t=Math.floor(Math.log(r)/Math.log(1024));if(t===0)return`${r} ${n[t]}`;return`${(r/Math.pow(1024,t)).toFixed(2)} ${n[t]}`}function R(r,n=3){return r.split("/").slice(-n).join("/")}function rr(r){return r.map((n)=>typeof n==="string"?new RegExp(`^${T(n)}($|\\/|\\\\)`):n)}function v(r,n){return rr(r.external||[]).concat(I(n).map((t)=>new RegExp(`^${T(t)}($|\\/|\\\\)`)))}function B(r){return rr(r.noExternal||[])}var D=p(require("node:fs")),nr=p(require("node:path"));function S(r){let n=nr.default.join(r,"package.json");try{if(!D.default.existsSync(n))return null;let t=D.default.readFileSync(n,"utf8");return JSON.parse(t)}catch(t){return l.warn(`Failed to load package.json at ${n}: ${d(t)}`),null}}var E=p(require("path"));var h="\x00virtual:",tr=(r)=>{return{name:"bunup:virtual-dts",resolveId(n,t){if(n.startsWith(h))return n;if(!t?.startsWith(h)||!n.startsWith("."))return null;let e=t.slice(h.length),s=E.default.resolve(E.default.dirname(e),n);if(n==="."){let i=E.default.join(E.default.dirname(e),"index.d.ts");if(r.has(i))return`${h}${i}`;s=E.default.dirname(e)}if(r.has(s))return`${h}${s}`;let o=`${s}.d.ts`;if(r.has(o))return`${h}${o}`;if(n.startsWith(".")){let i=E.default.join(s,"index.d.ts");if(r.has(i))return`${h}${i}`}return null},load(n){if(n.startsWith(h)){let t=n.slice(h.length),e=r.get(t);if(e)return er.add(t),e}return null}}};async function ir(r,n,t,e,s){let o=r.replace(/\.tsx?$/,".d.ts"),i=`${h}${o}`,c=s.data?.compilerOptions,f=S(e),g=v(t,f),u=B(t),a;try{a=await or.rollup({input:i,onwarn($,w){if(["UNRESOLVED_IMPORT","CIRCULAR_DEPENDENCY","EMPTY_BUNDLE"].includes($.code??""))return;w($)},plugins:[tr(n),sr.default({tsconfig:s.path,compilerOptions:{...c?j.default.parseJsonConfigFileContent({compilerOptions:c},j.default.sys,"./").options:{},declaration:!0,noEmit:!1,emitDeclarationOnly:!0,noEmitOnError:!0,checkJs:!1,declarationMap:!1,skipLibCheck:!0,preserveSymlinks:!1,target:j.default.ScriptTarget.ESNext}})],external:($)=>g.some((w)=>w.test($))&&!u.some((w)=>w.test($))});let{output:m}=await a.generate({});if(!m[0]?.code)throw new x("Generated bundle is empty");return m[0].code}catch(m){throw new x(`DTS bundling failed: ${d(m)}`)}finally{if(a)await a.close()}}var k=p(require("node:fs")),L=p(require("node:path"));var b=p(require("node:path"));function G(r){let n=b.default.dirname(r.path||"");return r.data?.compilerOptions?.baseUrl?b.default.resolve(n,r.data.compilerOptions.baseUrl):n}function cr(r){let n=new Map,t=r.data?.compilerOptions?.paths;if(!t)return n;let e=G(r);for(let[s,o]of Object.entries(t))if(Array.isArray(o)&&o.length){let i=s.replace(/\*/g,"(.*)"),c=o[0].replace(/\*/g,"$1");n.set(`^${i}$`,b.default.join(e,c))}return n}function ar(r,n,t){for(let[e,s]of n){let o=new RegExp(e),i=r.match(o);if(i)return s.replace("$1",i[1]||"")}return t?b.default.join(t,r):null}var jr=/(?:import|export)(?:[\s\n]*(?:type[\s\n]+)?(?:\*|\{[^}]*\}|[\w$]+)[\s\n]+from[\s\n]*|[\s\n]+)(["'`])([^'"]+)\1/g,Mr=/import\s*\(\s*(["'`])([^'"]+)\1\s*\)/g;async function fr(r,n){let t=new Set([r]),e=[r],s=cr(n),o=G(n);while(e.length){let i=e.pop();if(!i)continue;try{let c=await k.default.promises.readFile(i,"utf8"),f=Nr(c);for(let g of f){let u=g.startsWith(".")?L.default.resolve(L.default.dirname(i),g):ar(g,s,o);if(!u)continue;let a=Ar(u);if(a&&!t.has(a))t.add(a),e.push(a)}}catch(c){l.warn(`Error processing ${i}: ${d(c)}`)}}return t}function Nr(r){let n=new Set;for(let t of[jr,Mr]){let e;while((e=t.exec(r))!==null)n.add(e[2])}return Array.from(n)}function Ar(r){let n=["",".ts",".tsx","/index.ts","/index.tsx"];for(let t of n){let e=`${r}${t}`;if(k.default.existsSync(e)&&(e.endsWith(".ts")||e.endsWith(".tsx")))return e}return null}var lr=p(require("node:fs")),ur=require("oxc-transform");async function gr(r){let n=new Map;return await Promise.all([...r].map(async(t)=>{try{let e=t.replace(/\.tsx?$/,".d.ts"),s=await lr.default.promises.readFile(t,"utf8"),{code:o}=ur.isolatedDeclaration(t,s);if(o)n.set(e,o)}catch(e){l.warn(`Failed to generate declaration for ${t}: ${d(e)}`)}})),n}var H=p(require("node:fs")),M=p(require("node:path")),Tr=require("oxc-transform");function mr(r,n){let t=M.default.resolve(r),e=M.default.resolve(t,n);if(!H.default.existsSync(t))throw new x(`Root directory does not exist: ${t}`);if(!H.default.existsSync(e))throw new x(`Entry file does not exist: ${e}`);if(!e.endsWith(".ts"))throw new x(`Entry file must be a TypeScript file (.ts): ${e}`);if(M.default.relative(t,e).startsWith(".."))throw new x(`Entry file must be within rootDir: ${e}`);return{absoluteRootDir:t,absoluteEntry:e}}async function pr(r,n,t){let{absoluteRootDir:e,absoluteEntry:s}=mr(r,n),o=Z(t.preferredTsconfigPath),i=await fr(s,o),c=await gr(i);return ir(s,c,t,e,o)}function Wr(r){return r.split("/").pop()?.split(".").slice(0,-1).join(".")||""}function J(r){let n=[],t=new Set,e={};function s(o,i){if(t.has(o)){let c=z(),f=`${o}_${c}`;l.warn(`Output name conflict: "${o}" is used by multiple files.
1
+ var vr=require("node:module");var $r=Object.create;var{getPrototypeOf:wr,defineProperty:C,getOwnPropertyNames:q,getOwnPropertyDescriptor:Cr}=Object,U=Object.prototype.hasOwnProperty;var p=(r,n,t)=>{t=r!=null?$r(wr(r)):{};let e=n||!r||!r.__esModule?C(t,"default",{value:r,enumerable:!0}):t;for(let s of q(r))if(!U.call(e,s))C(e,s,{get:()=>r[s],enumerable:!0});return e},Y=new WeakMap,br=(r)=>{var n=Y.get(r),t;if(n)return n;if(n=C({},"__esModule",{value:!0}),r&&typeof r==="object"||typeof r==="function")q(r).map((e)=>!U.call(n,e)&&C(n,e,{get:()=>r[e],enumerable:!(t=Cr(r,e))||t.enumerable}));return Y.set(r,n),n};var Rr=(r,n)=>{for(var t in n)C(r,t,{get:n[t],enumerable:!0,configurable:!0,set:(e)=>n[t]=()=>e})};var Gr={};Rr(Gr,{defineWorkspace:()=>Q,defineConfig:()=>K,build:()=>hr});module.exports=br(Gr);function K(r){return r}function Q(r){return r}var Z=require("load-tsconfig");class A extends Error{constructor(r){super(r);this.name="BunupError"}}class $ extends A{constructor(r){super(r);this.name="BunupBuildError"}}class x extends A{constructor(r){super(r);this.name="BunupDTSBuildError"}}var d=(r)=>{if(r instanceof Error)return r.message;return String(r)};var l={MAX_LABEL_LENGTH:3,MAX_MESSAGE_LENGTH:25,colors:{cli:"147",info:"245",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"},formatMessage({colorCode:r,label:n,message:t,size:e,identifier:s,muted:o}){let i=" ".repeat(Math.max(0,this.MAX_LABEL_LENGTH-n.length)),c=o?`\x1B[38;5;${this.colors.info}m${t}\x1B[0m`:t;if(e){let[g,...u]=c.split(" "),a=" ".repeat(Math.max(0,this.MAX_MESSAGE_LENGTH-g.length)),m=s?` \x1B[48;5;${r};38;5;0m ${s} \x1B[0m`:"";return`\x1B[38;5;${r}m${n}\x1B[0m ${i}${g}${a} \x1B[38;5;${this.colors.size}m${e}\x1B[0m ${u.join(" ")}${m}`}let f=s?` \x1B[48;5;${r};38;5;0m ${s} \x1B[0m`:"";return`\x1B[38;5;${r}m${n}\x1B[0m ${i}${c}${f}`},output(r,n={},t=console.log){if(n.verticalSpace)console.log("");if(t(r),n.verticalSpace)console.log("")},cli(r,n={}){let t=this.formatMessage({colorCode:this.colors.cli,label:this.labels.cli,message:r,identifier:n.identifier,muted:n.muted});this.output(t,n)},info(r,n={}){let t=this.formatMessage({colorCode:this.colors.info,label:this.labels.info,message:r,identifier:n.identifier,muted:n.muted});this.output(t,n)},warn(r,n={}){let t=this.formatMessage({colorCode:this.colors.warn,label:this.labels.warn,message:r,identifier:n.identifier,muted:n.muted});this.output(t,n,console.warn)},error(r,n={}){let t=this.formatMessage({colorCode:this.colors.error,label:this.labels.error,message:r,identifier:n.identifier,muted:n.muted});this.output(t,n,console.error)},progress(r,n,t,e){let s=String(r),o=this.colors.default,i,c,f={};if(typeof t==="string")i=t,c=e;else if(t)i=t.size,c=t.identifier,f=t;for(let[u,a]of Object.entries(this.colors.progress))if(s.includes(u)){o=a;break}let g=this.formatMessage({colorCode:o,label:s,message:n,size:i,identifier:c,muted:f.muted});this.output(g,f)}};function _(r){try{return Z.loadTsConfig(".",r)}catch(n){return l.warn(`Failed to load tsconfig: ${d(n)}`),{path:r,data:{},files:[]}}}var or=require("rollup"),sr=p(require("rollup-plugin-dts")),j=p(require("typescript"));var Sr=p(require("node:fs")),Br=p(require("node:path"));function P(r,n){return{outdir:`${n}/${r.outDir}`,minify:Or(r),target:r.target,splitting:r.splitting,sourcemap:r.sourcemap}}function Or(r){let{minify:n,minifyWhitespace:t,minifyIdentifiers:e,minifySyntax:s}=r,o=n===!0;return{whitespace:t??o,identifiers:e??o,syntax:s??o}}function T(r){return r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function z(r=8){return Math.random().toString(36).substring(2,2+r)}function X(r,n){switch(r){case"esm":return".mjs";case"cjs":return R(n)?".cjs":".js";case"iife":return".global.js"}}function F(r,n){switch(r){case"esm":return".d.mts";case"cjs":return R(n)?".d.cts":".d.ts";case"iife":return".d.ts"}}function R(r){return r==="module"}function I(r){if(!r)return[];return Array.from(new Set([...Object.keys(r.dependencies||{}),...Object.keys(r.peerDependencies||{})]))}function V(r,n){return r===void 0?n==="esm":r}function D(r){if(r===0)return"0 B";let n=["B","KB","MB","GB"],t=Math.floor(Math.log(r)/Math.log(1024));if(t===0)return`${r} ${n[t]}`;return`${(r/Math.pow(1024,t)).toFixed(2)} ${n[t]}`}function v(r,n=3){return r.split("/").slice(-n).join("/")}function rr(r){return r.map((n)=>typeof n==="string"?new RegExp(`^${T(n)}($|\\/|\\\\)`):n)}function O(r,n){return rr(r.external||[]).concat(I(n).map((t)=>new RegExp(`^${T(t)}($|\\/|\\\\)`)))}function S(r){return rr(r.noExternal||[])}var W=p(require("node:fs")),nr=p(require("node:path"));function B(r){let n=nr.default.join(r,"package.json");try{if(!W.default.existsSync(n))return null;let t=W.default.readFileSync(n,"utf8");return JSON.parse(t)}catch(t){return l.warn(`Failed to load package.json at ${n}: ${d(t)}`),null}}var w=p(require("path"));var h="\x00virtual:",tr=(r)=>{return{name:"bunup:virtual-dts",resolveId(n,t){if(n.startsWith(h))return n;if(!t?.startsWith(h)||!n.startsWith("."))return null;let e=t.slice(h.length),s=w.default.resolve(w.default.dirname(e),n);if(n==="."){let i=w.default.join(w.default.dirname(e),"index.d.ts");if(r.has(i))return`${h}${i}`;s=w.default.dirname(e)}if(r.has(s))return`${h}${s}`;let o=`${s}.d.ts`;if(r.has(o))return`${h}${o}`;if(n.startsWith(".")){let i=w.default.join(s,"index.d.ts");if(r.has(i))return`${h}${i}`}return null},load(n){if(n.startsWith(h)){let t=n.slice(h.length),e=r.get(t);if(e)return er.add(t),e}return null}}};async function ir(r,n,t,e,s){let o=r.replace(/\.tsx?$/,".d.ts"),i=`${h}${o}`,c=s.data?.compilerOptions,f=B(e),g=O(t,f),u=S(t),a;try{a=await or.rollup({input:i,onwarn(E,y){if(["UNRESOLVED_IMPORT","CIRCULAR_DEPENDENCY","EMPTY_BUNDLE"].includes(E.code??""))return;y(E)},plugins:[tr(n),sr.default({tsconfig:s.path,compilerOptions:{...c?j.default.parseJsonConfigFileContent({compilerOptions:c},j.default.sys,"./").options:{},declaration:!0,noEmit:!1,emitDeclarationOnly:!0,noEmitOnError:!0,checkJs:!1,declarationMap:!1,skipLibCheck:!0,preserveSymlinks:!1,target:j.default.ScriptTarget.ESNext}})],external:(E)=>g.some((y)=>y.test(E))&&!u.some((y)=>y.test(E))});let{output:m}=await a.generate({});if(!m[0]?.code)throw new x("Generated bundle is empty");return m[0].code}catch(m){throw new x(`DTS bundling failed: ${d(m)}`)}finally{if(a)await a.close()}}var L=p(require("node:fs")),k=p(require("node:path"));var b=p(require("node:path"));function G(r){let n=b.default.dirname(r.path||"");return r.data?.compilerOptions?.baseUrl?b.default.resolve(n,r.data.compilerOptions.baseUrl):n}function cr(r){let n=new Map,t=r.data?.compilerOptions?.paths;if(!t)return n;let e=G(r);for(let[s,o]of Object.entries(t))if(Array.isArray(o)&&o.length){let i=s.replace(/\*/g,"(.*)"),c=o[0].replace(/\*/g,"$1");n.set(`^${i}$`,b.default.join(e,c))}return n}function ar(r,n,t){for(let[e,s]of n){let o=new RegExp(e),i=r.match(o);if(i)return s.replace("$1",i[1]||"")}return t?b.default.join(t,r):null}var jr=/(?:import|export)(?:[\s\n]*(?:type[\s\n]+)?(?:\*|\{[^}]*\}|[\w$]+)[\s\n]+from[\s\n]*|[\s\n]+)(["'`])([^'"]+)\1/g,Mr=/import\s*\(\s*(["'`])([^'"]+)\1\s*\)/g;async function fr(r,n){let t=new Set([r]),e=[r],s=cr(n),o=G(n);while(e.length){let i=e.pop();if(!i)continue;try{let c=await L.default.promises.readFile(i,"utf8"),f=Nr(c);for(let g of f){let u=g.startsWith(".")?k.default.resolve(k.default.dirname(i),g):ar(g,s,o);if(!u)continue;let a=Ar(u);if(a&&!t.has(a))t.add(a),e.push(a)}}catch(c){l.warn(`Error processing ${i}: ${d(c)}`)}}return t}function Nr(r){let n=new Set;for(let t of[jr,Mr]){let e;while((e=t.exec(r))!==null)n.add(e[2])}return Array.from(n)}function Ar(r){let n=["",".ts",".tsx","/index.ts","/index.tsx"];for(let t of n){let e=`${r}${t}`;if(L.default.existsSync(e)&&(e.endsWith(".ts")||e.endsWith(".tsx")))return e}return null}var lr=p(require("node:fs")),ur=require("oxc-transform");async function gr(r){let n=new Map;return await Promise.all([...r].map(async(t)=>{try{let e=t.replace(/\.tsx?$/,".d.ts"),s=await lr.default.promises.readFile(t,"utf8"),{code:o}=ur.isolatedDeclaration(t,s);if(o)n.set(e,o)}catch(e){l.warn(`Failed to generate declaration for ${t}: ${d(e)}`)}})),n}var H=p(require("node:fs")),M=p(require("node:path")),Tr=require("oxc-transform");function mr(r,n){let t=M.default.resolve(r),e=M.default.resolve(t,n);if(!H.default.existsSync(t))throw new x(`Root directory does not exist: ${t}`);if(!H.default.existsSync(e))throw new x(`Entry file does not exist: ${e}`);if(!e.endsWith(".ts"))throw new x(`Entry file must be a TypeScript file (.ts): ${e}`);if(M.default.relative(t,e).startsWith(".."))throw new x(`Entry file must be within rootDir: ${e}`);return{absoluteRootDir:t,absoluteEntry:e}}async function pr(r,n,t){let{absoluteRootDir:e,absoluteEntry:s}=mr(r,n),o=_(t.preferredTsconfigPath),i=await fr(s,o),c=await gr(i);return ir(s,c,t,e,o)}function Dr(r){return r.split("/").pop()?.split(".").slice(0,-1).join(".")||""}function J(r){let n=[],t=new Set,e={};function s(o,i){if(t.has(o)){let c=z(),f=`${o}_${c}`;l.warn(`Output name conflict: "${o}" is used by multiple files.
2
2
  Bunup uses filenames without extensions as output names by default.
3
3
 
4
4
  ${e[o]} -> ${o}.js
@@ -12,4 +12,4 @@ To fix this, use named entries in your configuration:
12
12
  }
13
13
  }
14
14
 
15
- See: https://bunup.arshadyaseen.com/#using-a-configuration-file-with-named-entries`,{muted:!0,verticalSpace:!0}),n.push({name:f,path:i})}else n.push({name:o,path:i}),t.add(o),e[o]=i}if(Array.isArray(r))for(let o of r){let i=Wr(o);s(i,o)}else Object.entries(r).forEach(([o,i])=>{s(o,i)});return n}function dr(r,n){return`[dir]/${r}${n}`}function xr(r,n){return{name:"bunup:external-plugin",setup(t){t.onResolve({filter:/.*/},(e)=>{let s=e.path;if(r.some((i)=>i.test(s))&&!n.some((i)=>i.test(s)))return{path:s,external:!0};return null})}}}var er=new Set;async function hr(r,n){if(!r.entry||r.entry.length===0||!r.outDir)throw new C("Nothing to build. Please make sure you have provided a proper bunup configuration or cli arguments.");let t=S(n),e=t?.type,s=v(r,t),o=B(r),i=[xr(s,o)],c=J(r.entry),f=_(r,n),g=r.format.flatMap((u)=>c.map((a)=>{return Dr(r,n,a,u,e,i,f)}));try{await Promise.all(g)}catch(u){throw console.error(u),new C("Build process encountered errors")}if(r.dts){let u=r.format.filter((m)=>{if(m==="iife"&&!O(e)&&r.format.includes("cjs"))return!1;return!0}),a=r.dts===!0?c:J(r.dts.entry);try{await Promise.all(a.map(async(m)=>{let $=await pr(n,m.path,r);await Promise.all(u.map(async(w)=>{let $r=F(w,e),N=`${n}/${r.outDir}/${m.name}${$r}`;await Bun.write(N,$);let wr=Bun.file(N).size||0;l.progress("DTS",R(N),W(wr),r.name)}))}))}catch(m){throw new x(`DTS build process encountered errors: ${d(m)}`)}}}async function Dr(r,n,t,e,s,o,i){let c=X(e,s),f=await Bun.build({...i,entrypoints:[`${n}/${t.path}`],format:e,naming:{entry:dr(t.name,c)},splitting:V(r.splitting,e),plugins:o,throw:!1});if(!f.success)throw f.logs.forEach((a)=>{if(a.level==="error")l.error(a.message);else if(a.level==="warning")l.warn(a.message);else if(a.level==="info")l.info(a.message)}),new C(`Build failed for ${t.path} (${e})`);let g=`${n}/${r.outDir}/${t.name}${c}`,u=Bun.file(g).size||0;l.progress(e.toUpperCase(),R(g),W(u),r.name)}
15
+ See: https://bunup.arshadyaseen.com/#using-a-configuration-file-with-named-entries`,{muted:!0,verticalSpace:!0}),n.push({name:f,path:i})}else n.push({name:o,path:i}),t.add(o),e[o]=i}if(Array.isArray(r))for(let o of r){let i=Dr(o);s(i,o)}else Object.entries(r).forEach(([o,i])=>{s(o,i)});return n}function dr(r,n){return`[dir]/${r}${n}`}function xr(r,n){return{name:"bunup:external-plugin",setup(t){t.onResolve({filter:/.*/},(e)=>{let s=e.path;if(r.some((i)=>i.test(s))&&!n.some((i)=>i.test(s)))return{path:s,external:!0};return null})}}}var er=new Set;async function hr(r,n){if(!r.entry||r.entry.length===0||!r.outDir)throw new $("Nothing to build. Please make sure you have provided a proper bunup configuration or cli arguments.");let t=B(n),e=t?.type,s=O(r,t),o=S(r),i=[xr(s,o)],c=J(r.entry),f=P(r,n),g=r.format.flatMap((u)=>c.map((a)=>{return Wr(r,n,a,u,e,i,f)}));try{await Promise.all(g)}catch(u){throw console.error(u),new $("Build process encountered errors")}if(r.dts){let u=r.format.filter((m)=>{if(m==="iife"&&!R(e)&&r.format.includes("cjs"))return!1;return!0}),a=r.dts===!0?c:J(r.dts.entry);try{await Promise.all(a.map(async(m)=>{let E=await pr(n,m.path,r);await Promise.all(u.map(async(y)=>{let Er=F(y,e),N=`${n}/${r.outDir}/${m.name}${Er}`;await Bun.write(N,E);let yr=Bun.file(N).size||0;l.progress("DTS",v(N),D(yr),r.name)}))}))}catch(m){throw new x(`DTS build process encountered errors: ${d(m)}`)}}}async function Wr(r,n,t,e,s,o,i){let c=X(e,s),f=await Bun.build({...i,entrypoints:[`${n}/${t.path}`],format:e,naming:{entry:dr(t.name,c)},splitting:V(r.splitting,e),plugins:o,throw:!1});if(!f.success)throw f.logs.forEach((a)=>{if(a.level==="error")l.error(a.message);else if(a.level==="warning")l.warn(a.message);else if(a.level==="info")l.info(a.message)}),new $(`Build failed for ${t.path} (${e})`);let g=`${n}/${r.outDir}/${t.name}${c}`,u=Bun.file(g).size||0;l.progress(e.toUpperCase(),v(g),D(u),r.name)}
package/build/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- function ir(r){return r}function cr(r){return r}import{loadTsConfig as ar}from"load-tsconfig";class S extends Error{constructor(r){super(r);this.name="BunupError"}}class w extends S{constructor(r){super(r);this.name="BunupBuildError"}}class d extends S{constructor(r){super(r);this.name="BunupDTSBuildError"}}var p=(r)=>{if(r instanceof Error)return r.message;return String(r)};var l={MAX_LABEL_LENGTH:3,MAX_MESSAGE_LENGTH:25,colors:{cli:"147",info:"245",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"},formatMessage({colorCode:r,label:n,message:t,size:e,identifier:i,muted:o}){let s=" ".repeat(Math.max(0,this.MAX_LABEL_LENGTH-n.length)),c=o?`\x1B[38;5;${this.colors.info}m${t}\x1B[0m`:t;if(e){let[g,...u]=c.split(" "),a=" ".repeat(Math.max(0,this.MAX_MESSAGE_LENGTH-g.length)),m=i?` \x1B[48;5;${r};38;5;0m ${i} \x1B[0m`:"";return`\x1B[38;5;${r}m${n}\x1B[0m ${s}${g}${a} \x1B[38;5;${this.colors.size}m${e}\x1B[0m ${u.join(" ")}${m}`}let f=i?` \x1B[48;5;${r};38;5;0m ${i} \x1B[0m`:"";return`\x1B[38;5;${r}m${n}\x1B[0m ${s}${c}${f}`},output(r,n={},t=console.log){if(n.verticalSpace)console.log("");if(t(r),n.verticalSpace)console.log("")},cli(r,n={}){let t=this.formatMessage({colorCode:this.colors.cli,label:this.labels.cli,message:r,identifier:n.identifier,muted:n.muted});this.output(t,n)},info(r,n={}){let t=this.formatMessage({colorCode:this.colors.info,label:this.labels.info,message:r,identifier:n.identifier,muted:n.muted});this.output(t,n)},warn(r,n={}){let t=this.formatMessage({colorCode:this.colors.warn,label:this.labels.warn,message:r,identifier:n.identifier,muted:n.muted});this.output(t,n,console.warn)},error(r,n={}){let t=this.formatMessage({colorCode:this.colors.error,label:this.labels.error,message:r,identifier:n.identifier,muted:n.muted});this.output(t,n,console.error)},progress(r,n,t,e){let i=String(r),o=this.colors.default,s,c,f={};if(typeof t==="string")s=t,c=e;else if(t)s=t.size,c=t.identifier,f=t;for(let[u,a]of Object.entries(this.colors.progress))if(i.includes(u)){o=a;break}let g=this.formatMessage({colorCode:o,label:i,message:n,size:s,identifier:c,muted:f.muted});this.output(g,f)}};function D(r){try{return ar(".",r)}catch(n){return l.warn(`Failed to load tsconfig: ${p(n)}`),{path:r,data:{},files:[]}}}import{rollup as ur}from"rollup";import gr from"rollup-plugin-dts";import N from"typescript";import Ar from"node:fs";import Wr from"node:path";function G(r,n){return{outdir:`${n}/${r.outDir}`,minify:fr(r),target:r.target,splitting:r.splitting,sourcemap:r.sourcemap}}function fr(r){let{minify:n,minifyWhitespace:t,minifyIdentifiers:e,minifySyntax:i}=r,o=n===!0;return{whitespace:t??o,identifiers:e??o,syntax:i??o}}function j(r){return r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function L(r=8){return Math.random().toString(36).substring(2,2+r)}function k(r,n){switch(r){case"esm":return".mjs";case"cjs":return E(n)?".cjs":".js";case"iife":return".global.js"}}function H(r,n){switch(r){case"esm":return".d.mts";case"cjs":return E(n)?".d.cts":".d.ts";case"iife":return".d.ts"}}function E(r){return r==="module"}function J(r){if(!r)return[];return Array.from(new Set([...Object.keys(r.dependencies||{}),...Object.keys(r.peerDependencies||{})]))}function Y(r,n){return r===void 0?n==="esm":r}function M(r){if(r===0)return"0 B";let n=["B","KB","MB","GB"],t=Math.floor(Math.log(r)/Math.log(1024));if(t===0)return`${r} ${n[t]}`;return`${(r/Math.pow(1024,t)).toFixed(2)} ${n[t]}`}function y(r,n=3){return r.split("/").slice(-n).join("/")}function q(r){return r.map((n)=>typeof n==="string"?new RegExp(`^${j(n)}($|\\/|\\\\)`):n)}function b(r,n){return q(r.external||[]).concat(J(n).map((t)=>new RegExp(`^${j(t)}($|\\/|\\\\)`)))}function O(r){return q(r.noExternal||[])}import U from"node:fs";import lr from"node:path";function R(r){let n=lr.join(r,"package.json");try{if(!U.existsSync(n))return null;let t=U.readFileSync(n,"utf8");return JSON.parse(t)}catch(t){return l.warn(`Failed to load package.json at ${n}: ${p(t)}`),null}}import C from"path";var x="\x00virtual:",K=(r)=>{return{name:"bunup:virtual-dts",resolveId(n,t){if(n.startsWith(x))return n;if(!t?.startsWith(x)||!n.startsWith("."))return null;let e=t.slice(x.length),i=C.resolve(C.dirname(e),n);if(n==="."){let s=C.join(C.dirname(e),"index.d.ts");if(r.has(s))return`${x}${s}`;i=C.dirname(e)}if(r.has(i))return`${x}${i}`;let o=`${i}.d.ts`;if(r.has(o))return`${x}${o}`;if(n.startsWith(".")){let s=C.join(i,"index.d.ts");if(r.has(s))return`${x}${s}`}return null},load(n){if(n.startsWith(x)){let t=n.slice(x.length),e=r.get(t);if(e)return P.add(t),e}return null}}};async function Q(r,n,t,e,i){let o=r.replace(/\.tsx?$/,".d.ts"),s=`${x}${o}`,c=i.data?.compilerOptions,f=R(e),g=b(t,f),u=O(t),a;try{a=await ur({input:s,onwarn(h,$){if(["UNRESOLVED_IMPORT","CIRCULAR_DEPENDENCY","EMPTY_BUNDLE"].includes(h.code??""))return;$(h)},plugins:[K(n),gr({tsconfig:i.path,compilerOptions:{...c?N.parseJsonConfigFileContent({compilerOptions:c},N.sys,"./").options:{},declaration:!0,noEmit:!1,emitDeclarationOnly:!0,noEmitOnError:!0,checkJs:!1,declarationMap:!1,skipLibCheck:!0,preserveSymlinks:!1,target:N.ScriptTarget.ESNext}})],external:(h)=>g.some(($)=>$.test(h))&&!u.some(($)=>$.test(h))});let{output:m}=await a.generate({});if(!m[0]?.code)throw new d("Generated bundle is empty");return m[0].code}catch(m){throw new d(`DTS bundling failed: ${p(m)}`)}finally{if(a)await a.close()}}import X from"node:fs";import z from"node:path";import v from"node:path";function A(r){let n=v.dirname(r.path||"");return r.data?.compilerOptions?.baseUrl?v.resolve(n,r.data.compilerOptions.baseUrl):n}function Z(r){let n=new Map,t=r.data?.compilerOptions?.paths;if(!t)return n;let e=A(r);for(let[i,o]of Object.entries(t))if(Array.isArray(o)&&o.length){let s=i.replace(/\*/g,"(.*)"),c=o[0].replace(/\*/g,"$1");n.set(`^${s}$`,v.join(e,c))}return n}function _(r,n,t){for(let[e,i]of n){let o=new RegExp(e),s=r.match(o);if(s)return i.replace("$1",s[1]||"")}return t?v.join(t,r):null}var mr=/(?:import|export)(?:[\s\n]*(?:type[\s\n]+)?(?:\*|\{[^}]*\}|[\w$]+)[\s\n]+from[\s\n]*|[\s\n]+)(["'`])([^'"]+)\1/g,pr=/import\s*\(\s*(["'`])([^'"]+)\1\s*\)/g;async function F(r,n){let t=new Set([r]),e=[r],i=Z(n),o=A(n);while(e.length){let s=e.pop();if(!s)continue;try{let c=await X.promises.readFile(s,"utf8"),f=dr(c);for(let g of f){let u=g.startsWith(".")?z.resolve(z.dirname(s),g):_(g,i,o);if(!u)continue;let a=xr(u);if(a&&!t.has(a))t.add(a),e.push(a)}}catch(c){l.warn(`Error processing ${s}: ${p(c)}`)}}return t}function dr(r){let n=new Set;for(let t of[mr,pr]){let e;while((e=t.exec(r))!==null)n.add(e[2])}return Array.from(n)}function xr(r){let n=["",".ts",".tsx","/index.ts","/index.tsx"];for(let t of n){let e=`${r}${t}`;if(X.existsSync(e)&&(e.endsWith(".ts")||e.endsWith(".tsx")))return e}return null}import hr from"node:fs";import{isolatedDeclaration as $r}from"oxc-transform";async function I(r){let n=new Map;return await Promise.all([...r].map(async(t)=>{try{let e=t.replace(/\.tsx?$/,".d.ts"),i=await hr.promises.readFile(t,"utf8"),{code:o}=$r(t,i);if(o)n.set(e,o)}catch(e){l.warn(`Failed to generate declaration for ${t}: ${p(e)}`)}})),n}import V from"node:fs";import T from"node:path";import{isolatedDeclaration as En}from"oxc-transform";function rr(r,n){let t=T.resolve(r),e=T.resolve(t,n);if(!V.existsSync(t))throw new d(`Root directory does not exist: ${t}`);if(!V.existsSync(e))throw new d(`Entry file does not exist: ${e}`);if(!e.endsWith(".ts"))throw new d(`Entry file must be a TypeScript file (.ts): ${e}`);if(T.relative(t,e).startsWith(".."))throw new d(`Entry file must be within rootDir: ${e}`);return{absoluteRootDir:t,absoluteEntry:e}}async function nr(r,n,t){let{absoluteRootDir:e,absoluteEntry:i}=rr(r,n),o=D(t.preferredTsconfigPath),s=await F(i,o),c=await I(s);return Q(i,c,t,e,o)}function wr(r){return r.split("/").pop()?.split(".").slice(0,-1).join(".")||""}function W(r){let n=[],t=new Set,e={};function i(o,s){if(t.has(o)){let c=L(),f=`${o}_${c}`;l.warn(`Output name conflict: "${o}" is used by multiple files.
1
+ function ir(r){return r}function cr(r){return r}import{loadTsConfig as ar}from"load-tsconfig";class B extends Error{constructor(r){super(r);this.name="BunupError"}}class y extends B{constructor(r){super(r);this.name="BunupBuildError"}}class d extends B{constructor(r){super(r);this.name="BunupDTSBuildError"}}var p=(r)=>{if(r instanceof Error)return r.message;return String(r)};var l={MAX_LABEL_LENGTH:3,MAX_MESSAGE_LENGTH:25,colors:{cli:"147",info:"245",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"},formatMessage({colorCode:r,label:n,message:t,size:e,identifier:i,muted:o}){let s=" ".repeat(Math.max(0,this.MAX_LABEL_LENGTH-n.length)),c=o?`\x1B[38;5;${this.colors.info}m${t}\x1B[0m`:t;if(e){let[g,...u]=c.split(" "),a=" ".repeat(Math.max(0,this.MAX_MESSAGE_LENGTH-g.length)),m=i?` \x1B[48;5;${r};38;5;0m ${i} \x1B[0m`:"";return`\x1B[38;5;${r}m${n}\x1B[0m ${s}${g}${a} \x1B[38;5;${this.colors.size}m${e}\x1B[0m ${u.join(" ")}${m}`}let f=i?` \x1B[48;5;${r};38;5;0m ${i} \x1B[0m`:"";return`\x1B[38;5;${r}m${n}\x1B[0m ${s}${c}${f}`},output(r,n={},t=console.log){if(n.verticalSpace)console.log("");if(t(r),n.verticalSpace)console.log("")},cli(r,n={}){let t=this.formatMessage({colorCode:this.colors.cli,label:this.labels.cli,message:r,identifier:n.identifier,muted:n.muted});this.output(t,n)},info(r,n={}){let t=this.formatMessage({colorCode:this.colors.info,label:this.labels.info,message:r,identifier:n.identifier,muted:n.muted});this.output(t,n)},warn(r,n={}){let t=this.formatMessage({colorCode:this.colors.warn,label:this.labels.warn,message:r,identifier:n.identifier,muted:n.muted});this.output(t,n,console.warn)},error(r,n={}){let t=this.formatMessage({colorCode:this.colors.error,label:this.labels.error,message:r,identifier:n.identifier,muted:n.muted});this.output(t,n,console.error)},progress(r,n,t,e){let i=String(r),o=this.colors.default,s,c,f={};if(typeof t==="string")s=t,c=e;else if(t)s=t.size,c=t.identifier,f=t;for(let[u,a]of Object.entries(this.colors.progress))if(i.includes(u)){o=a;break}let g=this.formatMessage({colorCode:o,label:i,message:n,size:s,identifier:c,muted:f.muted});this.output(g,f)}};function W(r){try{return ar(".",r)}catch(n){return l.warn(`Failed to load tsconfig: ${p(n)}`),{path:r,data:{},files:[]}}}import{rollup as ur}from"rollup";import gr from"rollup-plugin-dts";import N from"typescript";import Ar from"node:fs";import Dr from"node:path";function G(r,n){return{outdir:`${n}/${r.outDir}`,minify:fr(r),target:r.target,splitting:r.splitting,sourcemap:r.sourcemap}}function fr(r){let{minify:n,minifyWhitespace:t,minifyIdentifiers:e,minifySyntax:i}=r,o=n===!0;return{whitespace:t??o,identifiers:e??o,syntax:i??o}}function j(r){return r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function k(r=8){return Math.random().toString(36).substring(2,2+r)}function L(r,n){switch(r){case"esm":return".mjs";case"cjs":return w(n)?".cjs":".js";case"iife":return".global.js"}}function H(r,n){switch(r){case"esm":return".d.mts";case"cjs":return w(n)?".d.cts":".d.ts";case"iife":return".d.ts"}}function w(r){return r==="module"}function J(r){if(!r)return[];return Array.from(new Set([...Object.keys(r.dependencies||{}),...Object.keys(r.peerDependencies||{})]))}function Y(r,n){return r===void 0?n==="esm":r}function M(r){if(r===0)return"0 B";let n=["B","KB","MB","GB"],t=Math.floor(Math.log(r)/Math.log(1024));if(t===0)return`${r} ${n[t]}`;return`${(r/Math.pow(1024,t)).toFixed(2)} ${n[t]}`}function C(r,n=3){return r.split("/").slice(-n).join("/")}function q(r){return r.map((n)=>typeof n==="string"?new RegExp(`^${j(n)}($|\\/|\\\\)`):n)}function b(r,n){return q(r.external||[]).concat(J(n).map((t)=>new RegExp(`^${j(t)}($|\\/|\\\\)`)))}function R(r){return q(r.noExternal||[])}import U from"node:fs";import lr from"node:path";function v(r){let n=lr.join(r,"package.json");try{if(!U.existsSync(n))return null;let t=U.readFileSync(n,"utf8");return JSON.parse(t)}catch(t){return l.warn(`Failed to load package.json at ${n}: ${p(t)}`),null}}import $ from"path";var x="\x00virtual:",K=(r)=>{return{name:"bunup:virtual-dts",resolveId(n,t){if(n.startsWith(x))return n;if(!t?.startsWith(x)||!n.startsWith("."))return null;let e=t.slice(x.length),i=$.resolve($.dirname(e),n);if(n==="."){let s=$.join($.dirname(e),"index.d.ts");if(r.has(s))return`${x}${s}`;i=$.dirname(e)}if(r.has(i))return`${x}${i}`;let o=`${i}.d.ts`;if(r.has(o))return`${x}${o}`;if(n.startsWith(".")){let s=$.join(i,"index.d.ts");if(r.has(s))return`${x}${s}`}return null},load(n){if(n.startsWith(x)){let t=n.slice(x.length),e=r.get(t);if(e)return Q.add(t),e}return null}}};async function Z(r,n,t,e,i){let o=r.replace(/\.tsx?$/,".d.ts"),s=`${x}${o}`,c=i.data?.compilerOptions,f=v(e),g=b(t,f),u=R(t),a;try{a=await ur({input:s,onwarn(h,E){if(["UNRESOLVED_IMPORT","CIRCULAR_DEPENDENCY","EMPTY_BUNDLE"].includes(h.code??""))return;E(h)},plugins:[K(n),gr({tsconfig:i.path,compilerOptions:{...c?N.parseJsonConfigFileContent({compilerOptions:c},N.sys,"./").options:{},declaration:!0,noEmit:!1,emitDeclarationOnly:!0,noEmitOnError:!0,checkJs:!1,declarationMap:!1,skipLibCheck:!0,preserveSymlinks:!1,target:N.ScriptTarget.ESNext}})],external:(h)=>g.some((E)=>E.test(h))&&!u.some((E)=>E.test(h))});let{output:m}=await a.generate({});if(!m[0]?.code)throw new d("Generated bundle is empty");return m[0].code}catch(m){throw new d(`DTS bundling failed: ${p(m)}`)}finally{if(a)await a.close()}}import X from"node:fs";import z from"node:path";import O from"node:path";function A(r){let n=O.dirname(r.path||"");return r.data?.compilerOptions?.baseUrl?O.resolve(n,r.data.compilerOptions.baseUrl):n}function _(r){let n=new Map,t=r.data?.compilerOptions?.paths;if(!t)return n;let e=A(r);for(let[i,o]of Object.entries(t))if(Array.isArray(o)&&o.length){let s=i.replace(/\*/g,"(.*)"),c=o[0].replace(/\*/g,"$1");n.set(`^${s}$`,O.join(e,c))}return n}function P(r,n,t){for(let[e,i]of n){let o=new RegExp(e),s=r.match(o);if(s)return i.replace("$1",s[1]||"")}return t?O.join(t,r):null}var mr=/(?:import|export)(?:[\s\n]*(?:type[\s\n]+)?(?:\*|\{[^}]*\}|[\w$]+)[\s\n]+from[\s\n]*|[\s\n]+)(["'`])([^'"]+)\1/g,pr=/import\s*\(\s*(["'`])([^'"]+)\1\s*\)/g;async function F(r,n){let t=new Set([r]),e=[r],i=_(n),o=A(n);while(e.length){let s=e.pop();if(!s)continue;try{let c=await X.promises.readFile(s,"utf8"),f=dr(c);for(let g of f){let u=g.startsWith(".")?z.resolve(z.dirname(s),g):P(g,i,o);if(!u)continue;let a=xr(u);if(a&&!t.has(a))t.add(a),e.push(a)}}catch(c){l.warn(`Error processing ${s}: ${p(c)}`)}}return t}function dr(r){let n=new Set;for(let t of[mr,pr]){let e;while((e=t.exec(r))!==null)n.add(e[2])}return Array.from(n)}function xr(r){let n=["",".ts",".tsx","/index.ts","/index.tsx"];for(let t of n){let e=`${r}${t}`;if(X.existsSync(e)&&(e.endsWith(".ts")||e.endsWith(".tsx")))return e}return null}import hr from"node:fs";import{isolatedDeclaration as Er}from"oxc-transform";async function I(r){let n=new Map;return await Promise.all([...r].map(async(t)=>{try{let e=t.replace(/\.tsx?$/,".d.ts"),i=await hr.promises.readFile(t,"utf8"),{code:o}=Er(t,i);if(o)n.set(e,o)}catch(e){l.warn(`Failed to generate declaration for ${t}: ${p(e)}`)}})),n}import V from"node:fs";import T from"node:path";import{isolatedDeclaration as wn}from"oxc-transform";function rr(r,n){let t=T.resolve(r),e=T.resolve(t,n);if(!V.existsSync(t))throw new d(`Root directory does not exist: ${t}`);if(!V.existsSync(e))throw new d(`Entry file does not exist: ${e}`);if(!e.endsWith(".ts"))throw new d(`Entry file must be a TypeScript file (.ts): ${e}`);if(T.relative(t,e).startsWith(".."))throw new d(`Entry file must be within rootDir: ${e}`);return{absoluteRootDir:t,absoluteEntry:e}}async function nr(r,n,t){let{absoluteRootDir:e,absoluteEntry:i}=rr(r,n),o=W(t.preferredTsconfigPath),s=await F(i,o),c=await I(s);return Z(i,c,t,e,o)}function yr(r){return r.split("/").pop()?.split(".").slice(0,-1).join(".")||""}function D(r){let n=[],t=new Set,e={};function i(o,s){if(t.has(o)){let c=k(),f=`${o}_${c}`;l.warn(`Output name conflict: "${o}" is used by multiple files.
2
2
  Bunup uses filenames without extensions as output names by default.
3
3
 
4
4
  ${e[o]} -> ${o}.js
@@ -12,4 +12,4 @@ To fix this, use named entries in your configuration:
12
12
  }
13
13
  }
14
14
 
15
- See: https://bunup.arshadyaseen.com/#using-a-configuration-file-with-named-entries`,{muted:!0,verticalSpace:!0}),n.push({name:f,path:s})}else n.push({name:o,path:s}),t.add(o),e[o]=s}if(Array.isArray(r))for(let o of r){let s=wr(o);i(s,o)}else Object.entries(r).forEach(([o,s])=>{i(o,s)});return n}function tr(r,n){return`[dir]/${r}${n}`}function er(r,n){return{name:"bunup:external-plugin",setup(t){t.onResolve({filter:/.*/},(e)=>{let i=e.path;if(r.some((s)=>s.test(i))&&!n.some((s)=>s.test(i)))return{path:i,external:!0};return null})}}}var P=new Set;async function Cr(r,n){if(!r.entry||r.entry.length===0||!r.outDir)throw new w("Nothing to build. Please make sure you have provided a proper bunup configuration or cli arguments.");let t=R(n),e=t?.type,i=b(r,t),o=O(r),s=[er(i,o)],c=W(r.entry),f=G(r,n),g=r.format.flatMap((u)=>c.map((a)=>{return Er(r,n,a,u,e,s,f)}));try{await Promise.all(g)}catch(u){throw console.error(u),new w("Build process encountered errors")}if(r.dts){let u=r.format.filter((m)=>{if(m==="iife"&&!E(e)&&r.format.includes("cjs"))return!1;return!0}),a=r.dts===!0?c:W(r.dts.entry);try{await Promise.all(a.map(async(m)=>{let h=await nr(n,m.path,r);await Promise.all(u.map(async($)=>{let or=H($,e),B=`${n}/${r.outDir}/${m.name}${or}`;await Bun.write(B,h);let sr=Bun.file(B).size||0;l.progress("DTS",y(B),M(sr),r.name)}))}))}catch(m){throw new d(`DTS build process encountered errors: ${p(m)}`)}}}async function Er(r,n,t,e,i,o,s){let c=k(e,i),f=await Bun.build({...s,entrypoints:[`${n}/${t.path}`],format:e,naming:{entry:tr(t.name,c)},splitting:Y(r.splitting,e),plugins:o,throw:!1});if(!f.success)throw f.logs.forEach((a)=>{if(a.level==="error")l.error(a.message);else if(a.level==="warning")l.warn(a.message);else if(a.level==="info")l.info(a.message)}),new w(`Build failed for ${t.path} (${e})`);let g=`${n}/${r.outDir}/${t.name}${c}`,u=Bun.file(g).size||0;l.progress(e.toUpperCase(),y(g),M(u),r.name)}export{cr as defineWorkspace,ir as defineConfig,Cr as build};
15
+ See: https://bunup.arshadyaseen.com/#using-a-configuration-file-with-named-entries`,{muted:!0,verticalSpace:!0}),n.push({name:f,path:s})}else n.push({name:o,path:s}),t.add(o),e[o]=s}if(Array.isArray(r))for(let o of r){let s=yr(o);i(s,o)}else Object.entries(r).forEach(([o,s])=>{i(o,s)});return n}function tr(r,n){return`[dir]/${r}${n}`}function er(r,n){return{name:"bunup:external-plugin",setup(t){t.onResolve({filter:/.*/},(e)=>{let i=e.path;if(r.some((s)=>s.test(i))&&!n.some((s)=>s.test(i)))return{path:i,external:!0};return null})}}}var Q=new Set;async function $r(r,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.");let t=v(n),e=t?.type,i=b(r,t),o=R(r),s=[er(i,o)],c=D(r.entry),f=G(r,n),g=r.format.flatMap((u)=>c.map((a)=>{return wr(r,n,a,u,e,s,f)}));try{await Promise.all(g)}catch(u){throw console.error(u),new y("Build process encountered errors")}if(r.dts){let u=r.format.filter((m)=>{if(m==="iife"&&!w(e)&&r.format.includes("cjs"))return!1;return!0}),a=r.dts===!0?c:D(r.dts.entry);try{await Promise.all(a.map(async(m)=>{let h=await nr(n,m.path,r);await Promise.all(u.map(async(E)=>{let or=H(E,e),S=`${n}/${r.outDir}/${m.name}${or}`;await Bun.write(S,h);let sr=Bun.file(S).size||0;l.progress("DTS",C(S),M(sr),r.name)}))}))}catch(m){throw new d(`DTS build process encountered errors: ${p(m)}`)}}}async function wr(r,n,t,e,i,o,s){let c=L(e,i),f=await Bun.build({...s,entrypoints:[`${n}/${t.path}`],format:e,naming:{entry:tr(t.name,c)},splitting:Y(r.splitting,e),plugins:o,throw:!1});if(!f.success)throw f.logs.forEach((a)=>{if(a.level==="error")l.error(a.message);else if(a.level==="warning")l.warn(a.message);else if(a.level==="info")l.info(a.message)}),new y(`Build failed for ${t.path} (${e})`);let g=`${n}/${r.outDir}/${t.name}${c}`,u=Bun.file(g).size||0;l.progress(e.toUpperCase(),C(g),M(u),r.name)}export{cr as defineWorkspace,ir as defineConfig,$r as build};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bunup",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "description": "An extremely fast, zero-config bundler for TypeScript & JavaScript, powered by Bun.",
5
5
  "main": "./build/index.js",
6
6
  "types": "./build/index.d.ts",