bunup 0.4.0 → 0.4.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
@@ -2,7 +2,7 @@
2
2
  // @bun
3
3
  import{build as Ge}from"rolldown";import{dts as Xe}from"rolldown-plugin-dts";class E extends Error{constructor(e){super(e);this.name="BunupError"}}class w extends E{constructor(e){super(e);this.name="BunupBuildError"}}class g extends E{constructor(e){super(e);this.name="BunupDTSBuildError"}}class d extends E{constructor(e){super(e);this.name="BunupCLIError"}}class v extends E{constructor(e){super(e);this.name="BunupWatchError"}}var h=(e)=>{if(e instanceof Error)return e.message;return String(e)},We=[{pattern:/Could not resolve: "bun"/i,errorType:"BUILD ERROR",link:"https://bunup.arshadyaseen.com/#could-not-resolve-bun-error"}],V=(e,t)=>{let n=h(e),r=t?`[${t}] `:"",s="ERROR";if(e instanceof w)s="BUILD ERROR";else if(e instanceof g)s="DTS ERROR";else if(e instanceof d)s="CLI ERROR";else if(e instanceof v)s="WATCH ERROR";else if(e instanceof E)s="BUNUP ERROR";console.error(`\x1B[31m${s}\x1B[0m ${r}${n}`);let o=We.find((i)=>i.pattern.test(n)&&(i.errorType===s||!i.errorType));if(o)console.error(`
4
4
  \x1B[90mA solution for this error is available at: \x1B[36m${o.link}\x1B[0m
5
- `);else console.error("\x1B[90mIf you think this is a bug, please open an issue at: \x1B[36mhttps://github.com/arshadyaseen/bunup/issues/new\x1B[0m")},z=(e,t)=>{V(e,t),process.exit(1)};import J from"node:fs/promises";import je from"node:path";function G(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function ee(e=8){let t="";while(t.length<e)t+=Math.random().toString(36).substring(2);return t.substring(0,e)}function te(e,t,n){return Array.isArray(e)?e.map((r)=>({...r,[t]:n})):{...e,[t]:n}}function ne(e){return Array.isArray(e)?e:[e]}function re(e,t){switch(e){case"esm":return".mjs";case"cjs":return S(t)?".cjs":".js";case"iife":return".global.js"}}function se(e,t){switch(e){case"esm":return".d.mts";case"cjs":return S(t)?".d.cts":".d.ts";case"iife":return".d.ts"}}function S(e){return e==="module"}function L(e){return e>=1000?`${(e/1000).toFixed(2)}s`:`${Math.round(e)}ms`}function ie(e){if(!e)return[];return Array.from(new Set([...Object.keys(e.dependencies||{}),...Object.keys(e.peerDependencies||{})]))}function oe(e,t){return e===void 0?t==="esm":e}function X(e){if(e===0)return"0 B";let t=["B","KB","MB","GB"],n=Math.floor(Math.log(e)/Math.log(1024));if(n===0)return`${e} ${t[n]}`;return`${(e/1024**n).toFixed(2)} ${t[n]}`}function b(e,t=3){return e.split("/").slice(-t).join("/")}async function ae(e,t){let n=je.join(e,t);try{await J.rm(n,{recursive:!0,force:!0})}catch(r){throw new w(`Failed to clean output directory: ${r}`)}await J.mkdir(n,{recursive:!0})}function le(e,t){return t==="cjs"?e:void 0}function A(e){return[".ts",".mts",".cts",".tsx"].some((t)=>e.endsWith(t))}function ce(e){return e.map((t)=>typeof t==="string"?new RegExp(`^${G(t)}($|\\/|\\\\)`):t)}function I(e,t){return ce(e.external||[]).concat(ie(t).map((n)=>new RegExp(`^${G(n)}($|\\/|\\\\)`)))}function M(e){return ce(e.noExternal||[])}var ue=!1;function D(e){ue=e??!1}class ${static instance;loggedOnceMessages=new Set;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"};constructor(){}static getInstance(){if(!$.instance)$.instance=new $;return $.instance}dispose(){this.loggedOnceMessages.clear()}shouldLog(e){if(!e?.once)return!0;if(this.loggedOnceMessages.has(e.once))return!1;return this.loggedOnceMessages.add(e.once),!0}formatMessage({colorCode:e,label:t,message:n,size:r,identifier:s,muted:o}){let i=" ".repeat(Math.max(0,this.MAX_LABEL_LENGTH-t.length)),a=o?`\x1B[38;5;${this.colors.info}m${n}\x1B[0m`:n;if(r){let[c,...p]=a.split(" "),f=" ".repeat(Math.max(0,this.MAX_MESSAGE_LENGTH-c.length)),m=s?` \x1B[48;5;${e};38;5;0m ${s} \x1B[0m`:"";return`\x1B[38;5;${e}m${t}\x1B[0m ${i}${c}${f} \x1B[38;5;${this.colors.size}m${r}\x1B[0m ${p.join(" ")}${m}`}let l=s?` \x1B[48;5;${e};38;5;0m ${s} \x1B[0m`:"";return`\x1B[38;5;${e}m${t}\x1B[0m ${i}${a}${l}`}output(e,t={},n=console.log){if(ue)return;if(!this.shouldLog(t))return;if(t.verticalSpace)console.log("");if(n(e),t.verticalSpace)console.log("")}cli(e,t={}){let n=this.formatMessage({colorCode:this.colors.cli,label:this.labels.cli,message:e,identifier:t.identifier,muted:t.muted});this.output(n,t)}info(e,t={}){let n=this.formatMessage({colorCode:this.colors.info,label:this.labels.info,message:e,identifier:t.identifier,muted:t.muted});this.output(n,t)}warn(e,t={}){let n=this.formatMessage({colorCode:this.colors.warn,label:this.labels.warn,message:e,identifier:t.identifier,muted:t.muted});this.output(n,t,console.warn)}error(e,t={}){let n=this.formatMessage({colorCode:this.colors.error,label:this.labels.error,message:e,identifier:t.identifier,muted:t.muted});this.output(n,t,console.error)}progress(e,t,n,r){let s=String(e),o=this.colors.default,i,a,l={};if(typeof n==="string")i=n,a=r;else if(n)i=n.size,a=n.identifier,l=n;for(let[p,f]of Object.entries(this.colors.progress))if(s.includes(p)){o=f;break}let c=this.formatMessage({colorCode:o,label:s,message:t,size:i,identifier:a,muted:l.muted});this.output(c,l)}}var u=$.getInstance();import qe from"node:path";import{ResolverFactory as Ve}from"oxc-resolver";import O from"node:path";var B="\x00dts:",fe=(e,t,n)=>{return{name:"bunup:virtual-dts",async resolveId(r,s){if(Y(r))return r;if(!s||!Y(s))return null;let o=await U(r,t,n,T(s));if(!o)return null;let i=C(o);if(e.has(i))return _(i);return null},load(r){if(r.startsWith(B)){let s=T(r),o=e.get(s);if(o)return R.add(s),o}return null}}};function pe(e){return e.tsconfig?.compilerOptions}function C(e){return e.replace(/\.tsx?$/,".d.ts")}function K(e){let t=O.dirname(e.path||""),n=pe(e);return n?.baseUrl?O.resolve(t,n.baseUrl):t}function me(e){let t=new Map,n=pe(e)?.paths;if(!n)return t;let r=K(e);for(let[s,o]of Object.entries(n))if(Array.isArray(o)&&o.length){let i=s.replace(/\*/g,"(.*)"),a=o[0].replace(/\*/g,"$1");t.set(`^${i}$`,O.join(r,a))}return t}function Fe(e,t,n){for(let[r,s]of t){let o=new RegExp(r),i=e.match(o);if(i)return s.replace("$1",i[1]||"")}return n?O.join(n,e):null}async function He(e){let t=["",".ts",".tsx",".cts",".mts","/index.ts","/index.tsx","/index.cts","/index.mts"];for(let n of t){let r=`${e}${n}`;if(await Bun.file(r).exists()&&(r.endsWith(".ts")||r.endsWith(".tsx")||r.endsWith(".cts")||r.endsWith(".mts")))return r}return null}function U(e,t,n,r){let s=e.startsWith(".")?O.resolve(O.dirname(r||""),e):Fe(e,t,n);if(!s)return Promise.resolve(null);return He(s)}function Y(e){return e.startsWith(B)}function T(e){return e.replace(B,"")}function _(e){return`${B}${e}`}var de;function ge(e){return{name:"bunup:types-resolve",buildStart(){de||=new Ve({mainFields:["types"],conditionNames:["types","typings","import","require"],extensions:[".d.ts",".ts",".d.cts",".d.mts",".cts",".mts"],modules:["node_modules","node_modules/@types"]})},async resolveId(t,n){let r=n?T(n):void 0;if(/\0/.test(t))return;if(e){if(!e.some((a)=>{let l=!1;if(typeof a==="string")l=a===t||!!r?.includes(a);else l=a.test(t)||!!(r&&a.test(r));return l}))return}let s=r?qe.dirname(r):process.cwd(),{path:o}=await de.async(s,t);if(!o)return;if(/[cm]?jsx?$/.test(o)){let i=o.replace(/\.([cm]?)jsx?$/,".d.$1ts");return await Bun.file(i).exists()?i:void 0}return o}}}async function he(e,t,n,r,s,o){let i=C(e),a=_(i),l=I(n,r),c=M(n);try{let{output:p}=await Ge({input:a,output:{dir:n.outDir,inlineDynamicImports:!0},write:!1,onwarn(f,m){if(["UNRESOLVED_IMPORT","CIRCULAR_DEPENDENCY","EMPTY_BUNDLE"].includes(f.code??""))return;m(f)},plugins:[fe(t,s,o),typeof n.dts==="object"&&"resolve"in n.dts&&ge(typeof n.dts.resolve==="boolean"?void 0:n.dts.resolve),Xe({dtsInput:!0})],external:(f)=>l.some((m)=>m.test(f))&&!c.some((m)=>m.test(f))});if(!p[0]?.code)return u.warn(`Generated empty declaration file for entry "${e}"`,{muted:!0}),"";return p[0].code}catch(p){throw new g(`DTS bundling failed for entry "${e}": ${h(p)}`)}}var Ye=/^\s*import\s+(?:[^'"]*?\s+from\s+)?['"]([^'"]+)['"]/gm,Ke=/^\s*export\s+.*from\s+['"]([^'"]+)['"]/gm,Qe=/import\s*\(\s*['"]([^'"]+)['"]\s*\)/g,Ze=/require\s*\(\s*['"]([^'"]+)['"]\s*\)/g,ze=/import\s+\w+\s*=\s*require\s*\(\s*['"]([^'"]+)['"]\s*\)/g,Je=/\/\/\/\s*<reference\s+path\s*=\s*['"]([^'"]+)['"]\s*\/>/g,et=/\/\/\/\s*<reference\s+types\s*=\s*['"]([^'"]+)['"]\s*\/>/g;function tt(e){let t=new Set,n=[Ye,Ke,Qe,Ze,ze,Je,et];for(let r of n){let s=e.matchAll(r);for(let o of s)if(o[1])t.add(o[1])}return t}async function xe(e,t,n){let r=new Set([e]),s=[e];while(s.length){let o=s.pop();if(!o)continue;try{let i=await Bun.file(o).text(),a=tt(i);for(let l of a){let c=await U(l,t,n,o);if(!c)continue;if(!r.has(c))r.add(c),s.push(c)}}catch(i){u.warn(`Error processing ${o}: ${h(i)}`)}}return r}import{isolatedDeclaration as nt}from"oxc-transform";async function be(e){let t=new Map;return await Promise.all([...e].map(async(n)=>{try{let r=C(n);if(!await Bun.file(n).exists())return;let o=await Bun.file(n).text(),{code:i}=nt(n,o);if(i)t.set(r,i)}catch(r){u.warn(`Failed to generate declaration for ${n}: ${h(r)}`)}})),t}import ye from"node:fs/promises";import Q from"node:path";import{isolatedDeclaration as rt}from"oxc-transform";async function we(e,t){let n=Q.resolve(e),r=Q.resolve(n,t);if(!await ye.exists(n))throw new g(`Root directory does not exist: ${n}`);if(!await Bun.file(r).exists())throw new g(`Entry file does not exist: ${r}`);if(!A(r))throw new g(`Entry file must be a TypeScript file (.ts): ${r}`);if(Q.relative(n,r).startsWith(".."))throw new g(`Entry file must be within rootDir: ${r}`);return{absoluteRootDir:n,absoluteEntry:r}}async function Ee(e){let t=!1;if(await Promise.all([...e].map(async(n)=>{try{let r=n.replace(/\.d\.ts$/,".ts"),s=await Bun.file(r).text(),{errors:o}=rt(r,s);for(let i of o){if(!t)console.log(`
5
+ `);else console.error("\x1B[90mIf you think this is a bug, please open an issue at: \x1B[36mhttps://github.com/arshadyaseen/bunup/issues/new\x1B[0m")},z=(e,t)=>{V(e,t),process.exit(1)};import J from"node:fs/promises";import je from"node:path";function G(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function ee(e=8){let t="";while(t.length<e)t+=Math.random().toString(36).substring(2);return t.substring(0,e)}function te(e,t,n){return Array.isArray(e)?e.map((r)=>({...r,[t]:n})):{...e,[t]:n}}function ne(e){return Array.isArray(e)?e:[e]}function re(e,t){switch(e){case"esm":return".mjs";case"cjs":return S(t)?".cjs":".js";case"iife":return".global.js"}}function se(e,t){switch(e){case"esm":return".d.mts";case"cjs":return S(t)?".d.cts":".d.ts";case"iife":return".d.ts"}}function S(e){return e==="module"}function L(e){return e>=1000?`${(e/1000).toFixed(2)}s`:`${Math.round(e)}ms`}function ie(e){if(!e)return[];return Array.from(new Set([...Object.keys(e.dependencies||{}),...Object.keys(e.peerDependencies||{})]))}function oe(e,t){return e===void 0?t==="esm":e}function X(e){if(e===0)return"0 B";let t=["B","KB","MB","GB"],n=Math.floor(Math.log(e)/Math.log(1024));if(n===0)return`${e} ${t[n]}`;return`${(e/1024**n).toFixed(2)} ${t[n]}`}function b(e,t=3){return e.split("/").slice(-t).join("/")}async function ae(e,t){let n=je.join(e,t);try{await J.rm(n,{recursive:!0,force:!0})}catch(r){throw new w(`Failed to clean output directory: ${r}`)}await J.mkdir(n,{recursive:!0})}function le(e,t){return t==="cjs"?e:void 0}function A(e){return[".ts",".mts",".cts",".tsx"].some((t)=>e.endsWith(t))}function ce(e){return e.map((t)=>typeof t==="string"?new RegExp(`^${G(t)}($|\\/|\\\\)`):t)}function I(e,t){return ce(e.external||[]).concat(ie(t).map((n)=>new RegExp(`^${G(n)}($|\\/|\\\\)`)))}function M(e){return ce(e.noExternal||[])}var ue=!1;function D(e){ue=e??!1}class ${static instance;loggedOnceMessages=new Set;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"};constructor(){}static getInstance(){if(!$.instance)$.instance=new $;return $.instance}dispose(){this.loggedOnceMessages.clear()}shouldLog(e){if(!e?.once)return!0;if(this.loggedOnceMessages.has(e.once))return!1;return this.loggedOnceMessages.add(e.once),!0}formatMessage({colorCode:e,label:t,message:n,size:r,identifier:s,muted:o}){let i=" ".repeat(Math.max(0,this.MAX_LABEL_LENGTH-t.length)),a=o?`\x1B[38;5;${this.colors.info}m${n}\x1B[0m`:n;if(r){let[c,...p]=a.split(" "),f=" ".repeat(Math.max(0,this.MAX_MESSAGE_LENGTH-c.length)),m=s?` \x1B[48;5;${e};38;5;0m ${s} \x1B[0m`:"";return`\x1B[38;5;${e}m${t}\x1B[0m ${i}${c}${f} \x1B[38;5;${this.colors.size}m${r}\x1B[0m ${p.join(" ")}${m}`}let l=s?` \x1B[48;5;${e};38;5;0m ${s} \x1B[0m`:"";return`\x1B[38;5;${e}m${t}\x1B[0m ${i}${a}${l}`}output(e,t={},n=console.log){if(ue)return;if(!this.shouldLog(t))return;if(t.verticalSpace)console.log("");if(n(e),t.verticalSpace)console.log("")}cli(e,t={}){let n=this.formatMessage({colorCode:this.colors.cli,label:this.labels.cli,message:e,identifier:t.identifier,muted:t.muted});this.output(n,t)}info(e,t={}){let n=this.formatMessage({colorCode:this.colors.info,label:this.labels.info,message:e,identifier:t.identifier,muted:t.muted});this.output(n,t)}warn(e,t={}){let n=this.formatMessage({colorCode:this.colors.warn,label:this.labels.warn,message:e,identifier:t.identifier,muted:t.muted});this.output(n,t,console.warn)}error(e,t={}){let n=this.formatMessage({colorCode:this.colors.error,label:this.labels.error,message:e,identifier:t.identifier,muted:t.muted});this.output(n,t,console.error)}progress(e,t,n,r){let s=String(e),o=this.colors.default,i,a,l={};if(typeof n==="string")i=n,a=r;else if(n)i=n.size,a=n.identifier,l=n;for(let[p,f]of Object.entries(this.colors.progress))if(s.includes(p)){o=f;break}let c=this.formatMessage({colorCode:o,label:s,message:t,size:i,identifier:a,muted:l.muted});this.output(c,l)}}var u=$.getInstance();import qe from"node:path";import{ResolverFactory as Ve}from"oxc-resolver";import O from"node:path";var B="\x00dts:",fe=(e,t,n)=>{return{name:"bunup:virtual-dts",async resolveId(r,s){if(Y(r))return r;if(!s||!Y(s))return null;let o=await U(r,t,n,T(s));if(!o)return null;let i=C(o);if(e.has(i))return _(i);return null},load(r){if(r.startsWith(B)){let s=T(r),o=e.get(s);if(o)return R.add(s),o}return null}}};function pe(e){return e.tsconfig?.compilerOptions}function C(e){return e.replace(/\.tsx?$/,".d.ts")}function K(e){let t=O.dirname(e.path||""),n=pe(e);return n?.baseUrl?O.resolve(t,n.baseUrl):t}function me(e){let t=new Map,n=pe(e)?.paths;if(!n)return t;let r=K(e);for(let[s,o]of Object.entries(n))if(Array.isArray(o)&&o.length){let i=s.replace(/\*/g,"(.*)"),a=o[0].replace(/\*/g,"$1");t.set(`^${i}$`,O.join(r,a))}return t}function Fe(e,t,n){for(let[r,s]of t){let o=new RegExp(r),i=e.match(o);if(i)return s.replace("$1",i[1]||"")}return n?O.join(n,e):null}async function He(e){let t=["",".ts",".tsx",".cts",".mts","/index.ts","/index.tsx","/index.cts","/index.mts"];for(let n of t){let r=`${e}${n}`;if(await Bun.file(r).exists()&&(r.endsWith(".ts")||r.endsWith(".tsx")||r.endsWith(".cts")||r.endsWith(".mts")))return r}return null}function U(e,t,n,r){let s=e.startsWith(".")?O.resolve(O.dirname(r||""),e):Fe(e,t,n);if(!s)return Promise.resolve(null);return He(s)}function Y(e){return e.startsWith(B)}function T(e){return e.replace(B,"")}function _(e){return`${B}${e}`}var de;function ge(e){return{name:"bunup:types-resolve",buildStart(){de||=new Ve({mainFields:["types"],conditionNames:["types","typings","import","require"],extensions:[".d.ts",".ts",".d.cts",".d.mts",".cts",".mts"],modules:["node_modules","node_modules/@types"]})},async resolveId(t,n){let r=n?T(n):void 0;if(/\0/.test(t))return;if(e){if(!e.some((a)=>{let l=!1;if(typeof a==="string")l=a===t||!!r?.includes(a);else l=a.test(t)||!!(r&&a.test(r));return l}))return}let s=r?qe.dirname(r):process.cwd(),{path:o}=await de.async(s,t);if(!o)return;if(/[cm]?jsx?$/.test(o)){let i=o.replace(/\.([cm]?)jsx?$/,".d.$1ts");return await Bun.file(i).exists()?i:void 0}return o}}}async function he(e,t,n,r,s,o){let i=C(e),a=_(i),l=I(n,r),c=M(n);try{let{output:p}=await Ge({input:a,output:{dir:n.outDir,inlineDynamicImports:!0},write:!1,onwarn(f,m){if(["UNRESOLVED_IMPORT","CIRCULAR_DEPENDENCY","EMPTY_BUNDLE"].includes(f.code??""))return;m(f)},plugins:[fe(t,s,o),typeof n.dts==="object"&&"resolve"in n.dts&&ge(typeof n.dts.resolve==="boolean"?void 0:n.dts.resolve),Xe({dtsInput:!0})],external:(f)=>l.some((m)=>m.test(f))&&!c.some((m)=>m.test(f))});if(!p[0]?.code)return u.warn(`Generated empty declaration file for entry "${e}"`,{muted:!0}),"";return p[0].code}catch(p){throw new g(`DTS bundling failed for entry "${e}": ${h(p)}`)}}var Ye=/^\s*import\s+(?:[^'"]*?\s+from\s+)?['"]([^'"]+)['"]/gm,Ke=/^\s*export\s+.*from\s+['"]([^'"]+)['"]/gm,Qe=/import\s*\(\s*['"]([^'"]+)['"]\s*\)/g,Ze=/require\s*\(\s*['"]([^'"]+)['"]\s*\)/g,ze=/import\s+\w+\s*=\s*require\s*\(\s*['"]([^'"]+)['"]\s*\)/g,Je=/\/\/\/\s*<reference\s+path\s*=\s*['"]([^'"]+)['"]\s*\/>/g,et=/\/\/\/\s*<reference\s+types\s*=\s*['"]([^'"]+)['"]\s*\/>/g;function tt(e){let t=new Set,n=[Ye,Ke,Qe,Ze,ze,Je,et];for(let r of n){let s=e.matchAll(r);for(let o of s)if(o[1])t.add(o[1])}return t}async function xe(e,t,n){let r=new Set([e]),s=[e];while(s.length){let o=s.pop();if(!o)continue;try{let i=await Bun.file(o).text(),a=tt(i);for(let l of a){let c=await U(l,t,n,o);if(!c)continue;if(!r.has(c))r.add(c),s.push(c)}}catch(i){u.warn(`Error processing ${o}: ${h(i)}`)}}return r}import{isolatedDeclaration as nt}from"oxc-transform";async function be(e){let t=new Map;return await Promise.all([...e].map(async(n)=>{try{let r=C(n);if(!await Bun.file(n).exists())return;let o=await Bun.file(n).text(),{code:i}=nt(n,o);if(i)t.set(r,i)}catch(r){u.warn(`Failed to generate declaration for ${n}: ${h(r)}`)}})),t}import ye from"node:fs/promises";import Q from"node:path";import{isolatedDeclaration as rt}from"oxc-transform";async function we(e,t){let n=Q.resolve(e),r=Q.resolve(n,t);if(!await ye.exists(n))throw new g(`Root directory does not exist: ${n}`);if(!await Bun.file(r).exists())throw new g(`Entry file does not exist: ${r}`);if(!A(r))throw new g(`Entry file must be a TypeScript file: ${r}`);if(Q.relative(n,r).startsWith(".."))throw new g(`Entry file must be within rootDir: ${r}`);return{absoluteRootDir:n,absoluteEntry:r}}async function Ee(e){let t=!1;if(await Promise.all([...e].map(async(n)=>{try{let r=n.replace(/\.d\.ts$/,".ts"),s=await Bun.file(r).text(),{errors:o}=rt(r,s);for(let i of o){if(!t)console.log(`
6
6
  `);let a=i.labels[0],l=a?st(s,a.start):"",p=`${b(r)}${l}: ${it(i.message)}`;u.warn(p),t=!0}}catch{}})),t)u.info(`
7
7
  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. Other bundlers might not show these warnings because they use different, potentially less precise methods. 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.
8
8
  `)}function st(e,t){if(t===void 0)return"";let n=e.slice(0,t).split(`
@@ -20,7 +20,7 @@ To fix this, use named entries in your configuration:
20
20
  }
21
21
  }
22
22
 
23
- See: https://bunup.arshadyaseen.com/#named-entries`,{muted:!0,verticalSpace:!0});n.push({name:c,path:a})}else n.push({name:i,path:a}),r.add(i),s[i]=a}if(Array.isArray(e))for(let i of e){let a=N(i);o(a,i)}else if(typeof e==="object")for(let[i,a]of Object.entries(e))o(i,a);else{let i=N(e);o(i,e)}return n}function Ce(e){return e.filter((t)=>A(t.path))}function Re(e,t){return`[dir]/${e}${t}`}import{loadConfig as Oe}from"coffi";async function Te(e,t){return Array.isArray(e)&&"root"in e[0]?e.map((n)=>({rootDir:n.root,options:te(n.config,"name",n.name)})):[{rootDir:t,options:e}]}async function Be(e){let{config:t,filepath:n}=await Oe({name:"package",cwd:e,extensions:[".json"],maxDepth:1});return{packageJson:t,path:n}}async function Pe(e,t){let{config:n,filepath:r}=await Oe({name:"tsconfig",cwd:e,extensions:[".json"],preferredPath:t,maxDepth:3});return{tsconfig:n,path:r}}var ve={entry:[],format:["cjs"],outDir:"dist",target:"node",clean:!0};function Se(e,t){return{outdir:`${t}/${e.outDir}`,minify:ot(e),target:e.target,splitting:e.splitting,sourcemap:e.sourcemap,define:e.define,loader:e.loader,drop:e.drop,banner:e.banner,footer:e.footer}}function ot(e){let{minify:t,minifyWhitespace:n,minifyIdentifiers:r,minifySyntax:s}=e,o=t===!0;return{whitespace:n??o,identifiers:r??o,syntax:s??o}}function Le(e,t){return{name:"bunup:external-plugin",setup(n){n.onResolve({filter:/.*/},(r)=>{let s=r.path;if(e.some((i)=>i.test(s))&&!t.some((i)=>i.test(s)))return{path:s,external:!0};return null})}}}var R=new Set;async function k(e,t){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)ae(t,e.outDir);D(e.silent);let{packageJson:n,path:r}=await Be(t);if(n&&r)u.cli(`Using package.json: ${b(r,2)}`,{muted:!0,identifier:e.name,once:`${r}:${e.name}`});let s=P(e.entry),o=n?.type,i=I(e,n),a=M(e);if(!e.dtsOnly){let l=[Le(i,a)],c=Se(e,t),p=e.format.flatMap((f)=>s.map((m)=>{return at(e,t,m,f,o,l,c)}));await Promise.all(p)}if(e.dts||e.dtsOnly){let l=await Pe(t,e.preferredTsconfigPath);if(l.path)u.cli(`Using tsconfig: ${b(l.path,2)}`,{muted:!0,identifier:e.name,once:`${l.path}:${e.name}`});let c=e.format.filter((f)=>{if(f==="iife"&&!S(o)&&e.format.includes("cjs"))return!1;return!0}),p=typeof e.dts==="object"&&e.dts.entry?P(e.dts.entry):Ce(s);try{await Promise.all(p.map(async(f)=>{let m=await $e(t,f.path,e,l,n);await Promise.all(c.map(async(H)=>{let Ne=se(H,o),q=`${t}/${e.outDir}/${f.name}${Ne}`;await Bun.write(q,m);let ke=Bun.file(q).size||0;u.progress("DTS",b(q),X(ke),e.name)}))}))}catch(f){throw new g(h(f))}}}async function at(e,t,n,r,s,o,i){let a=re(r,s),l=await Bun.build({...i,entrypoints:[`${t}/${n.path}`],format:r,naming:{entry:Re(n.name,a)},splitting:oe(e.splitting,r),bytecode:le(e.bytecode,r),plugins:o,throw:!1});if(!l.success)for(let f of l.logs){if(f.level==="error")throw new w(f.message);if(f.level==="warning")u.warn(f.message);else if(f.level==="info")u.info(f.message)}let c=`${t}/${e.outDir}/${n.name}${a}`,p=Bun.file(c).size||0;u.progress(r.toUpperCase(),b(c),X(p),e.name)}var W="0.4.0";var Ae="https://bun.sh/docs/installation",Ie="https://bunup.arshadyaseen.com/#cli-options";function x(e){return(t,n)=>{n[e]=t===!0||t==="true"}}function y(e){return(t,n)=>{if(typeof t==="string")n[e]=t;else throw new d(`Option --${e} requires a string value`)}}function Me(e){return(t,n)=>{if(typeof t==="string")n[e]=t.split(",");else throw new d(`Option --${e} requires a string value`)}}function ct(){console.log(`
23
+ See: https://bunup.arshadyaseen.com/#named-entries`,{muted:!0,verticalSpace:!0});n.push({name:c,path:a})}else n.push({name:i,path:a}),r.add(i),s[i]=a}if(Array.isArray(e))for(let i of e){let a=N(i);o(a,i)}else if(typeof e==="object")for(let[i,a]of Object.entries(e))o(i,a);else{let i=N(e);o(i,e)}return n}function Ce(e){return e.filter((t)=>A(t.path))}function Re(e,t){return`[dir]/${e}${t}`}import{loadConfig as Oe}from"coffi";async function Te(e,t){return Array.isArray(e)&&"root"in e[0]?e.map((n)=>({rootDir:n.root,options:te(n.config,"name",n.name)})):[{rootDir:t,options:e}]}async function Be(e){let{config:t,filepath:n}=await Oe({name:"package",cwd:e,extensions:[".json"],maxDepth:1});return{packageJson:t,path:n}}async function Pe(e,t){let{config:n,filepath:r}=await Oe({name:"tsconfig",cwd:e,extensions:[".json"],preferredPath:t,maxDepth:3});return{tsconfig:n,path:r}}var ve={entry:[],format:["cjs"],outDir:"dist",target:"node",clean:!0};function Se(e,t){return{outdir:`${t}/${e.outDir}`,minify:ot(e),target:e.target,splitting:e.splitting,sourcemap:e.sourcemap,define:e.define,loader:e.loader,drop:e.drop,banner:e.banner,footer:e.footer}}function ot(e){let{minify:t,minifyWhitespace:n,minifyIdentifiers:r,minifySyntax:s}=e,o=t===!0;return{whitespace:n??o,identifiers:r??o,syntax:s??o}}function Le(e,t){return{name:"bunup:external-plugin",setup(n){n.onResolve({filter:/.*/},(r)=>{let s=r.path;if(e.some((i)=>i.test(s))&&!t.some((i)=>i.test(s)))return{path:s,external:!0};return null})}}}var R=new Set;async function k(e,t){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)ae(t,e.outDir);D(e.silent);let{packageJson:n,path:r}=await Be(t);if(n&&r)u.cli(`Using package.json: ${b(r,2)}`,{muted:!0,identifier:e.name,once:`${r}:${e.name}`});let s=P(e.entry),o=n?.type,i=I(e,n),a=M(e);if(!e.dtsOnly){let l=[Le(i,a)],c=Se(e,t),p=e.format.flatMap((f)=>s.map((m)=>{return at(e,t,m,f,o,l,c)}));await Promise.all(p)}if(e.dts||e.dtsOnly){let l=await Pe(t,e.preferredTsconfigPath);if(l.path)u.cli(`Using tsconfig: ${b(l.path,2)}`,{muted:!0,identifier:e.name,once:`${l.path}:${e.name}`});let c=e.format.filter((f)=>{if(f==="iife"&&!S(o)&&e.format.includes("cjs"))return!1;return!0}),p=typeof e.dts==="object"&&e.dts.entry?P(e.dts.entry):Ce(s);try{await Promise.all(p.map(async(f)=>{let m=await $e(t,f.path,e,l,n);await Promise.all(c.map(async(H)=>{let Ne=se(H,o),q=`${t}/${e.outDir}/${f.name}${Ne}`;await Bun.write(q,m);let ke=Bun.file(q).size||0;u.progress("DTS",b(q),X(ke),e.name)}))}))}catch(f){throw new g(h(f))}}}async function at(e,t,n,r,s,o,i){let a=re(r,s),l=await Bun.build({...i,entrypoints:[`${t}/${n.path}`],format:r,naming:{entry:Re(n.name,a)},splitting:oe(e.splitting,r),bytecode:le(e.bytecode,r),plugins:o,throw:!1});if(!l.success)for(let f of l.logs){if(f.level==="error")throw new w(f.message);if(f.level==="warning")u.warn(f.message);else if(f.level==="info")u.info(f.message)}let c=`${t}/${e.outDir}/${n.name}${a}`,p=Bun.file(c).size||0;u.progress(r.toUpperCase(),b(c),X(p),e.name)}var W="0.4.1";var Ae="https://bun.sh/docs/installation",Ie="https://bunup.arshadyaseen.com/#cli-options";function x(e){return(t,n)=>{n[e]=t===!0||t==="true"}}function y(e){return(t,n)=>{if(typeof t==="string")n[e]=t;else throw new d(`Option --${e} requires a string value`)}}function Me(e){return(t,n)=>{if(typeof t==="string")n[e]=t.split(",");else throw new d(`Option --${e} requires a string value`)}}function ct(){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${Ie}\x1B[0m
26
26
  `),process.exit(0)}function ut(){console.log(W),process.exit(0)}var De={name:{flags:["n","name"],handler:y("name")},format:{flags:["f","format"],handler:(e,t)=>{if(typeof e==="string")t.format=e.split(",");else throw new d("Option --format requires a string value")}},outDir:{flags:["o","out-dir"],handler:y("outDir")},minify:{flags:["m","minify"],handler:x("minify")},watch:{flags:["w","watch"],handler:x("watch")},dts:{flags:["d","dts"],handler:x("dts")},banner:{flags:["bn","banner"],handler:y("banner")},footer:{flags:["ft","footer"],handler:y("footer")},external:{flags:["e","external"],handler:Me("external")},sourcemap:{flags:["sm","sourcemap"],handler:y("sourcemap")},target:{flags:["t","target"],handler:y("target")},minifyWhitespace:{flags:["mw","minify-whitespace"],handler:x("minifyWhitespace")},minifyIdentifiers:{flags:["mi","minify-identifiers"],handler:x("minifyIdentifiers")},minifySyntax:{flags:["ms","minify-syntax"],handler:x("minifySyntax")},clean:{flags:["c","clean"],handler:x("clean")},splitting:{flags:["s","splitting"],handler:x("splitting")},noExternal:{flags:["ne","no-external"],handler:Me("noExternal")},preferredTsconfigPath:{flags:["tsconfig","preferred-tsconfig-path"],handler:y("preferredTsconfigPath")},bytecode:{flags:["bc","bytecode"],handler:x("bytecode")},dtsOnly:{flags:["do","dts-only"],handler:x("dtsOnly")},silent:{flags:["silent"],handler:x("silent")},config:{flags:["config"],handler:y("config")},entry:{flags:["entry"],handler:(e,t,n)=>{if(typeof e!=="string")throw new d(`Entry${n?` --entry.${n}`:""} requires a string value`);let r=t.entry||{};if(n){if(r[n])u.warn(`Duplicate entry name '${n}' provided via --entry.${n}. Overwriting previous entry.`);r[n]=e}else{let s=N(e);if(r[s])u.warn(`Duplicate entry name '${s}' derived from '${e}'. Overwriting previous entry.`);r[s]=e}t.entry=r}},resolveDts:{flags:["rd","resolve-dts"],handler:(e,t)=>{if(!t.dts)t.dts={};if(typeof t.dts==="boolean")t.dts={};if(typeof e==="string")if(e==="true"||e==="false")t.dts.resolve=e==="true";else t.dts.resolve=e.split(",");else t.dts.resolve=!0}},help:{flags:["h","help"],handler:()=>ct()},version:{flags:["v","version"],handler:()=>ut()}},j={};for(let e of Object.values(De))for(let t of e.flags)j[t]=e.handler;function Ue(e){let t={};for(let n=0;n<e.length;n++){let r=e[n];if(r.startsWith("--")){let s,o;if(r.includes("=")){let[i,a]=r.slice(2).split("=",2);s=i,o=a}else{s=r.slice(2);let i=e[n+1];if(o=i&&!i.startsWith("-")?i:!0,typeof o==="string")n++}if(s.includes(".")){let[i,a]=s.split(".",2),l=j[i];if(l)l(o,t,a);else throw new d(`Unknown option: --${s}`)}else{let i=j[s];if(i)i(o,t);else throw new d(`Unknown option: --${s}`)}}else if(r.startsWith("-")){let s=r.slice(1),o=e[n+1],i=o&&!o.startsWith("-")?o:!0;if(typeof i==="string")n++;let a=j[s];if(a)a(i,t);else throw new d(`Unknown option: -${s}`)}else De.entry.handler(r,t,void 0)}return t}(()=>{if(typeof Bun==="undefined")throw new d(`Bunup requires Bun to run.
package/build/index.js CHANGED
@@ -1,4 +1,4 @@
1
- var Nt=require("node:module");var St=Object.create;var{getPrototypeOf:Lt,defineProperty:y,getOwnPropertyNames:G,getOwnPropertyDescriptor:At}=Object,q=Object.prototype.hasOwnProperty;var h=(t,e,r)=>{r=t!=null?St(Lt(t)):{};let n=e||!t||!t.__esModule?y(r,"default",{value:t,enumerable:!0}):r;for(let s of G(t))if(!q.call(n,s))y(n,s,{get:()=>t[s],enumerable:!0});return n},j=new WeakMap,Ot=(t)=>{var e=j.get(t),r;if(e)return e;if(e=y({},"__esModule",{value:!0}),t&&typeof t==="object"||typeof t==="function")G(t).map((n)=>!q.call(e,n)&&y(e,n,{get:()=>t[n],enumerable:!(r=At(t,n))||r.enumerable}));return j.set(t,e),e};var _t=(t,e)=>{for(var r in e)y(t,r,{get:e[r],enumerable:!0,configurable:!0,set:(n)=>e[r]=()=>n})};var Qt={};_t(Qt,{defineWorkspace:()=>H,defineConfig:()=>X,build:()=>Dt});module.exports=Ot(Qt);function X(t){return t}function H(t){return t}var gt=require("rolldown"),mt=require("rolldown-plugin-dts");class A extends Error{constructor(t){super(t);this.name="BunupError"}}class b extends A{constructor(t){super(t);this.name="BunupBuildError"}}class d extends A{constructor(t){super(t);this.name="BunupDTSBuildError"}}var p=(t)=>{if(t instanceof Error)return t.message;return String(t)};var O=h(require("node:fs/promises")),k=h(require("node:path"));function _(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function K(t=8){let e="";while(e.length<t)e+=Math.random().toString(36).substring(2);return e.substring(0,t)}function Y(t,e){switch(t){case"esm":return".mjs";case"cjs":return P(e)?".cjs":".js";case"iife":return".global.js"}}function Q(t,e){switch(t){case"esm":return".d.mts";case"cjs":return P(e)?".d.cts":".d.ts";case"iife":return".d.ts"}}function P(t){return t==="module"}function Z(t){if(!t)return[];return Array.from(new Set([...Object.keys(t.dependencies||{}),...Object.keys(t.peerDependencies||{})]))}function z(t,e){return t===void 0?e==="esm":t}function N(t){if(t===0)return"0 B";let e=["B","KB","MB","GB"],r=Math.floor(Math.log(t)/Math.log(1024));if(r===0)return`${t} ${e[r]}`;return`${(t/1024**r).toFixed(2)} ${e[r]}`}function E(t,e=3){return t.split("/").slice(-e).join("/")}async function J(t,e){let r=k.default.join(t,e);try{await O.default.rm(r,{recursive:!0,force:!0})}catch(n){throw new b(`Failed to clean output directory: ${n}`)}await O.default.mkdir(r,{recursive:!0})}function tt(t,e){return e==="cjs"?t:void 0}function T(t){return[".ts",".mts",".cts",".tsx"].some((e)=>t.endsWith(e))}function et(t){return t.map((e)=>typeof e==="string"?new RegExp(`^${_(e)}($|\\/|\\\\)`):e)}function D(t,e){return et(t.external||[]).concat(Z(e).map((r)=>new RegExp(`^${_(r)}($|\\/|\\\\)`)))}function M(t){return et(t.noExternal||[])}var rt=!1;function nt(t){rt=t??!1}class w{static instance;loggedOnceMessages=new Set;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"};constructor(){}static getInstance(){if(!w.instance)w.instance=new w;return w.instance}dispose(){this.loggedOnceMessages.clear()}shouldLog(t){if(!t?.once)return!0;if(this.loggedOnceMessages.has(t.once))return!1;return this.loggedOnceMessages.add(t.once),!0}formatMessage({colorCode:t,label:e,message:r,size:n,identifier:s,muted:o}){let i=" ".repeat(Math.max(0,this.MAX_LABEL_LENGTH-e.length)),a=o?`\x1B[38;5;${this.colors.info}m${r}\x1B[0m`:r;if(n){let[u,...g]=a.split(" "),l=" ".repeat(Math.max(0,this.MAX_MESSAGE_LENGTH-u.length)),m=s?` \x1B[48;5;${t};38;5;0m ${s} \x1B[0m`:"";return`\x1B[38;5;${t}m${e}\x1B[0m ${i}${u}${l} \x1B[38;5;${this.colors.size}m${n}\x1B[0m ${g.join(" ")}${m}`}let c=s?` \x1B[48;5;${t};38;5;0m ${s} \x1B[0m`:"";return`\x1B[38;5;${t}m${e}\x1B[0m ${i}${a}${c}`}output(t,e={},r=console.log){if(rt)return;if(!this.shouldLog(e))return;if(e.verticalSpace)console.log("");if(r(t),e.verticalSpace)console.log("")}cli(t,e={}){let r=this.formatMessage({colorCode:this.colors.cli,label:this.labels.cli,message:t,identifier:e.identifier,muted:e.muted});this.output(r,e)}info(t,e={}){let r=this.formatMessage({colorCode:this.colors.info,label:this.labels.info,message:t,identifier:e.identifier,muted:e.muted});this.output(r,e)}warn(t,e={}){let r=this.formatMessage({colorCode:this.colors.warn,label:this.labels.warn,message:t,identifier:e.identifier,muted:e.muted});this.output(r,e,console.warn)}error(t,e={}){let r=this.formatMessage({colorCode:this.colors.error,label:this.labels.error,message:t,identifier:e.identifier,muted:e.muted});this.output(r,e,console.error)}progress(t,e,r,n){let s=String(t),o=this.colors.default,i,a,c={};if(typeof r==="string")i=r,a=n;else if(r)i=r.size,a=r.identifier,c=r;for(let[g,l]of Object.entries(this.colors.progress))if(s.includes(g)){o=l;break}let u=this.formatMessage({colorCode:o,label:s,message:e,size:i,identifier:a,muted:c.muted});this.output(u,c)}}var f=w.getInstance();var lt=h(require("node:path")),ut=require("oxc-resolver");var x=h(require("node:path"));var C="\x00dts:",st=(t,e,r)=>{return{name:"bunup:virtual-dts",async resolveId(n,s){if(W(n))return n;if(!s||!W(s))return null;let o=await B(n,e,r,$(s));if(!o)return null;let i=R(o);if(t.has(i))return I(i);return null},load(n){if(n.startsWith(C)){let s=$(n),o=t.get(s);if(o)return it.add(s),o}return null}}};function ot(t){return t.tsconfig?.compilerOptions}function R(t){return t.replace(/\.tsx?$/,".d.ts")}function U(t){let e=x.default.dirname(t.path||""),r=ot(t);return r?.baseUrl?x.default.resolve(e,r.baseUrl):e}function at(t){let e=new Map,r=ot(t)?.paths;if(!r)return e;let n=U(t);for(let[s,o]of Object.entries(r))if(Array.isArray(o)&&o.length){let i=s.replace(/\*/g,"(.*)"),a=o[0].replace(/\*/g,"$1");e.set(`^${i}$`,x.default.join(n,a))}return e}function Wt(t,e,r){for(let[n,s]of e){let o=new RegExp(n),i=t.match(o);if(i)return s.replace("$1",i[1]||"")}return r?x.default.join(r,t):null}async function Ut(t){let e=["",".ts",".tsx",".cts",".mts","/index.ts","/index.tsx","/index.cts","/index.mts"];for(let r of e){let n=`${t}${r}`;if(await Bun.file(n).exists()&&(n.endsWith(".ts")||n.endsWith(".tsx")||n.endsWith(".cts")||n.endsWith(".mts")))return n}return null}function B(t,e,r,n){let s=t.startsWith(".")?x.default.resolve(x.default.dirname(n||""),t):Wt(t,e,r);if(!s)return Promise.resolve(null);return Ut(s)}function W(t){return t.startsWith(C)}function $(t){return t.replace(C,"")}function I(t){return`${C}${t}`}var ct;function ft(t){return{name:"bunup:types-resolve",buildStart(){ct||=new ut.ResolverFactory({mainFields:["types"],conditionNames:["types","typings","import","require"],extensions:[".d.ts",".ts",".d.cts",".d.mts",".cts",".mts"],modules:["node_modules","node_modules/@types"]})},async resolveId(e,r){let n=r?$(r):void 0;if(/\0/.test(e))return;if(t){if(!t.some((a)=>{let c=!1;if(typeof a==="string")c=a===e||!!n?.includes(a);else c=a.test(e)||!!(n&&a.test(n));return c}))return}let s=n?lt.default.dirname(n):process.cwd(),{path:o}=await ct.async(s,e);if(!o)return;if(/[cm]?jsx?$/.test(o)){let i=o.replace(/\.([cm]?)jsx?$/,".d.$1ts");return await Bun.file(i).exists()?i:void 0}return o}}}async function dt(t,e,r,n,s,o){let i=R(t),a=I(i),c=D(r,n),u=M(r);try{let{output:g}=await gt.build({input:a,output:{dir:r.outDir,inlineDynamicImports:!0},write:!1,onwarn(l,m){if(["UNRESOLVED_IMPORT","CIRCULAR_DEPENDENCY","EMPTY_BUNDLE"].includes(l.code??""))return;m(l)},plugins:[st(e,s,o),typeof r.dts==="object"&&"resolve"in r.dts&&ft(typeof r.dts.resolve==="boolean"?void 0:r.dts.resolve),mt.dts({dtsInput:!0})],external:(l)=>c.some((m)=>m.test(l))&&!u.some((m)=>m.test(l))});if(!g[0]?.code)return f.warn(`Generated empty declaration file for entry "${t}"`,{muted:!0}),"";return g[0].code}catch(g){throw new d(`DTS bundling failed for entry "${t}": ${p(g)}`)}}var vt=/^\s*import\s+(?:[^'"]*?\s+from\s+)?['"]([^'"]+)['"]/gm,Ft=/^\s*export\s+.*from\s+['"]([^'"]+)['"]/gm,Vt=/import\s*\(\s*['"]([^'"]+)['"]\s*\)/g,jt=/require\s*\(\s*['"]([^'"]+)['"]\s*\)/g,Gt=/import\s+\w+\s*=\s*require\s*\(\s*['"]([^'"]+)['"]\s*\)/g,qt=/\/\/\/\s*<reference\s+path\s*=\s*['"]([^'"]+)['"]\s*\/>/g,Xt=/\/\/\/\s*<reference\s+types\s*=\s*['"]([^'"]+)['"]\s*\/>/g;function Ht(t){let e=new Set,r=[vt,Ft,Vt,jt,Gt,qt,Xt];for(let n of r){let s=t.matchAll(n);for(let o of s)if(o[1])e.add(o[1])}return e}async function pt(t,e,r){let n=new Set([t]),s=[t];while(s.length){let o=s.pop();if(!o)continue;try{let i=await Bun.file(o).text(),a=Ht(i);for(let c of a){let u=await B(c,e,r,o);if(!u)continue;if(!n.has(u))n.add(u),s.push(u)}}catch(i){f.warn(`Error processing ${o}: ${p(i)}`)}}return n}var xt=require("oxc-transform");async function ht(t){let e=new Map;return await Promise.all([...t].map(async(r)=>{try{let n=R(r);if(!await Bun.file(r).exists())return;let o=await Bun.file(r).text(),{code:i}=xt.isolatedDeclaration(r,o);if(i)e.set(n,i)}catch(n){f.warn(`Failed to generate declaration for ${r}: ${p(n)}`)}})),e}var v=h(require("node:fs/promises")),S=h(require("node:path")),kt=require("oxc-transform");async function bt(t,e){let r=S.default.resolve(t),n=S.default.resolve(r,e);if(!await v.default.exists(r))throw new d(`Root directory does not exist: ${r}`);if(!await Bun.file(n).exists())throw new d(`Entry file does not exist: ${n}`);if(!T(n))throw new d(`Entry file must be a TypeScript file (.ts): ${n}`);if(S.default.relative(r,n).startsWith(".."))throw new d(`Entry file must be within rootDir: ${n}`);return{absoluteRootDir:r,absoluteEntry:n}}async function Et(t,e,r,n,s){let{absoluteEntry:o}=await bt(t,e),i=at(n),a=U(n),c=await pt(o,i,a),u=await ht(c);return dt(o,u,r,s,i,a)}function wt(t){return t.split("/").pop()?.split(".").slice(0,-1).join(".")||""}function F(t,{warnOnConflict:e=!0}={}){let r=[],n=new Set,s={};function o(i,a){if(n.has(i)){let c=K(),u=`${i}_${c}`;if(e)f.warn(`Output name conflict: "${i}" is used by multiple files.
1
+ var Nt=require("node:module");var St=Object.create;var{getPrototypeOf:Lt,defineProperty:y,getOwnPropertyNames:G,getOwnPropertyDescriptor:At}=Object,q=Object.prototype.hasOwnProperty;var h=(t,e,r)=>{r=t!=null?St(Lt(t)):{};let n=e||!t||!t.__esModule?y(r,"default",{value:t,enumerable:!0}):r;for(let s of G(t))if(!q.call(n,s))y(n,s,{get:()=>t[s],enumerable:!0});return n},j=new WeakMap,Ot=(t)=>{var e=j.get(t),r;if(e)return e;if(e=y({},"__esModule",{value:!0}),t&&typeof t==="object"||typeof t==="function")G(t).map((n)=>!q.call(e,n)&&y(e,n,{get:()=>t[n],enumerable:!(r=At(t,n))||r.enumerable}));return j.set(t,e),e};var _t=(t,e)=>{for(var r in e)y(t,r,{get:e[r],enumerable:!0,configurable:!0,set:(n)=>e[r]=()=>n})};var Qt={};_t(Qt,{defineWorkspace:()=>H,defineConfig:()=>X,build:()=>Dt});module.exports=Ot(Qt);function X(t){return t}function H(t){return t}var gt=require("rolldown"),mt=require("rolldown-plugin-dts");class A extends Error{constructor(t){super(t);this.name="BunupError"}}class b extends A{constructor(t){super(t);this.name="BunupBuildError"}}class d extends A{constructor(t){super(t);this.name="BunupDTSBuildError"}}var p=(t)=>{if(t instanceof Error)return t.message;return String(t)};var O=h(require("node:fs/promises")),k=h(require("node:path"));function _(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function K(t=8){let e="";while(e.length<t)e+=Math.random().toString(36).substring(2);return e.substring(0,t)}function Y(t,e){switch(t){case"esm":return".mjs";case"cjs":return P(e)?".cjs":".js";case"iife":return".global.js"}}function Q(t,e){switch(t){case"esm":return".d.mts";case"cjs":return P(e)?".d.cts":".d.ts";case"iife":return".d.ts"}}function P(t){return t==="module"}function Z(t){if(!t)return[];return Array.from(new Set([...Object.keys(t.dependencies||{}),...Object.keys(t.peerDependencies||{})]))}function z(t,e){return t===void 0?e==="esm":t}function N(t){if(t===0)return"0 B";let e=["B","KB","MB","GB"],r=Math.floor(Math.log(t)/Math.log(1024));if(r===0)return`${t} ${e[r]}`;return`${(t/1024**r).toFixed(2)} ${e[r]}`}function E(t,e=3){return t.split("/").slice(-e).join("/")}async function J(t,e){let r=k.default.join(t,e);try{await O.default.rm(r,{recursive:!0,force:!0})}catch(n){throw new b(`Failed to clean output directory: ${n}`)}await O.default.mkdir(r,{recursive:!0})}function tt(t,e){return e==="cjs"?t:void 0}function T(t){return[".ts",".mts",".cts",".tsx"].some((e)=>t.endsWith(e))}function et(t){return t.map((e)=>typeof e==="string"?new RegExp(`^${_(e)}($|\\/|\\\\)`):e)}function D(t,e){return et(t.external||[]).concat(Z(e).map((r)=>new RegExp(`^${_(r)}($|\\/|\\\\)`)))}function M(t){return et(t.noExternal||[])}var rt=!1;function nt(t){rt=t??!1}class w{static instance;loggedOnceMessages=new Set;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"};constructor(){}static getInstance(){if(!w.instance)w.instance=new w;return w.instance}dispose(){this.loggedOnceMessages.clear()}shouldLog(t){if(!t?.once)return!0;if(this.loggedOnceMessages.has(t.once))return!1;return this.loggedOnceMessages.add(t.once),!0}formatMessage({colorCode:t,label:e,message:r,size:n,identifier:s,muted:o}){let i=" ".repeat(Math.max(0,this.MAX_LABEL_LENGTH-e.length)),a=o?`\x1B[38;5;${this.colors.info}m${r}\x1B[0m`:r;if(n){let[u,...g]=a.split(" "),l=" ".repeat(Math.max(0,this.MAX_MESSAGE_LENGTH-u.length)),m=s?` \x1B[48;5;${t};38;5;0m ${s} \x1B[0m`:"";return`\x1B[38;5;${t}m${e}\x1B[0m ${i}${u}${l} \x1B[38;5;${this.colors.size}m${n}\x1B[0m ${g.join(" ")}${m}`}let c=s?` \x1B[48;5;${t};38;5;0m ${s} \x1B[0m`:"";return`\x1B[38;5;${t}m${e}\x1B[0m ${i}${a}${c}`}output(t,e={},r=console.log){if(rt)return;if(!this.shouldLog(e))return;if(e.verticalSpace)console.log("");if(r(t),e.verticalSpace)console.log("")}cli(t,e={}){let r=this.formatMessage({colorCode:this.colors.cli,label:this.labels.cli,message:t,identifier:e.identifier,muted:e.muted});this.output(r,e)}info(t,e={}){let r=this.formatMessage({colorCode:this.colors.info,label:this.labels.info,message:t,identifier:e.identifier,muted:e.muted});this.output(r,e)}warn(t,e={}){let r=this.formatMessage({colorCode:this.colors.warn,label:this.labels.warn,message:t,identifier:e.identifier,muted:e.muted});this.output(r,e,console.warn)}error(t,e={}){let r=this.formatMessage({colorCode:this.colors.error,label:this.labels.error,message:t,identifier:e.identifier,muted:e.muted});this.output(r,e,console.error)}progress(t,e,r,n){let s=String(t),o=this.colors.default,i,a,c={};if(typeof r==="string")i=r,a=n;else if(r)i=r.size,a=r.identifier,c=r;for(let[g,l]of Object.entries(this.colors.progress))if(s.includes(g)){o=l;break}let u=this.formatMessage({colorCode:o,label:s,message:e,size:i,identifier:a,muted:c.muted});this.output(u,c)}}var f=w.getInstance();var lt=h(require("node:path")),ut=require("oxc-resolver");var x=h(require("node:path"));var C="\x00dts:",st=(t,e,r)=>{return{name:"bunup:virtual-dts",async resolveId(n,s){if(W(n))return n;if(!s||!W(s))return null;let o=await B(n,e,r,$(s));if(!o)return null;let i=R(o);if(t.has(i))return I(i);return null},load(n){if(n.startsWith(C)){let s=$(n),o=t.get(s);if(o)return it.add(s),o}return null}}};function ot(t){return t.tsconfig?.compilerOptions}function R(t){return t.replace(/\.tsx?$/,".d.ts")}function U(t){let e=x.default.dirname(t.path||""),r=ot(t);return r?.baseUrl?x.default.resolve(e,r.baseUrl):e}function at(t){let e=new Map,r=ot(t)?.paths;if(!r)return e;let n=U(t);for(let[s,o]of Object.entries(r))if(Array.isArray(o)&&o.length){let i=s.replace(/\*/g,"(.*)"),a=o[0].replace(/\*/g,"$1");e.set(`^${i}$`,x.default.join(n,a))}return e}function Wt(t,e,r){for(let[n,s]of e){let o=new RegExp(n),i=t.match(o);if(i)return s.replace("$1",i[1]||"")}return r?x.default.join(r,t):null}async function Ut(t){let e=["",".ts",".tsx",".cts",".mts","/index.ts","/index.tsx","/index.cts","/index.mts"];for(let r of e){let n=`${t}${r}`;if(await Bun.file(n).exists()&&(n.endsWith(".ts")||n.endsWith(".tsx")||n.endsWith(".cts")||n.endsWith(".mts")))return n}return null}function B(t,e,r,n){let s=t.startsWith(".")?x.default.resolve(x.default.dirname(n||""),t):Wt(t,e,r);if(!s)return Promise.resolve(null);return Ut(s)}function W(t){return t.startsWith(C)}function $(t){return t.replace(C,"")}function I(t){return`${C}${t}`}var ct;function ft(t){return{name:"bunup:types-resolve",buildStart(){ct||=new ut.ResolverFactory({mainFields:["types"],conditionNames:["types","typings","import","require"],extensions:[".d.ts",".ts",".d.cts",".d.mts",".cts",".mts"],modules:["node_modules","node_modules/@types"]})},async resolveId(e,r){let n=r?$(r):void 0;if(/\0/.test(e))return;if(t){if(!t.some((a)=>{let c=!1;if(typeof a==="string")c=a===e||!!n?.includes(a);else c=a.test(e)||!!(n&&a.test(n));return c}))return}let s=n?lt.default.dirname(n):process.cwd(),{path:o}=await ct.async(s,e);if(!o)return;if(/[cm]?jsx?$/.test(o)){let i=o.replace(/\.([cm]?)jsx?$/,".d.$1ts");return await Bun.file(i).exists()?i:void 0}return o}}}async function dt(t,e,r,n,s,o){let i=R(t),a=I(i),c=D(r,n),u=M(r);try{let{output:g}=await gt.build({input:a,output:{dir:r.outDir,inlineDynamicImports:!0},write:!1,onwarn(l,m){if(["UNRESOLVED_IMPORT","CIRCULAR_DEPENDENCY","EMPTY_BUNDLE"].includes(l.code??""))return;m(l)},plugins:[st(e,s,o),typeof r.dts==="object"&&"resolve"in r.dts&&ft(typeof r.dts.resolve==="boolean"?void 0:r.dts.resolve),mt.dts({dtsInput:!0})],external:(l)=>c.some((m)=>m.test(l))&&!u.some((m)=>m.test(l))});if(!g[0]?.code)return f.warn(`Generated empty declaration file for entry "${t}"`,{muted:!0}),"";return g[0].code}catch(g){throw new d(`DTS bundling failed for entry "${t}": ${p(g)}`)}}var vt=/^\s*import\s+(?:[^'"]*?\s+from\s+)?['"]([^'"]+)['"]/gm,Ft=/^\s*export\s+.*from\s+['"]([^'"]+)['"]/gm,Vt=/import\s*\(\s*['"]([^'"]+)['"]\s*\)/g,jt=/require\s*\(\s*['"]([^'"]+)['"]\s*\)/g,Gt=/import\s+\w+\s*=\s*require\s*\(\s*['"]([^'"]+)['"]\s*\)/g,qt=/\/\/\/\s*<reference\s+path\s*=\s*['"]([^'"]+)['"]\s*\/>/g,Xt=/\/\/\/\s*<reference\s+types\s*=\s*['"]([^'"]+)['"]\s*\/>/g;function Ht(t){let e=new Set,r=[vt,Ft,Vt,jt,Gt,qt,Xt];for(let n of r){let s=t.matchAll(n);for(let o of s)if(o[1])e.add(o[1])}return e}async function pt(t,e,r){let n=new Set([t]),s=[t];while(s.length){let o=s.pop();if(!o)continue;try{let i=await Bun.file(o).text(),a=Ht(i);for(let c of a){let u=await B(c,e,r,o);if(!u)continue;if(!n.has(u))n.add(u),s.push(u)}}catch(i){f.warn(`Error processing ${o}: ${p(i)}`)}}return n}var xt=require("oxc-transform");async function ht(t){let e=new Map;return await Promise.all([...t].map(async(r)=>{try{let n=R(r);if(!await Bun.file(r).exists())return;let o=await Bun.file(r).text(),{code:i}=xt.isolatedDeclaration(r,o);if(i)e.set(n,i)}catch(n){f.warn(`Failed to generate declaration for ${r}: ${p(n)}`)}})),e}var v=h(require("node:fs/promises")),S=h(require("node:path")),kt=require("oxc-transform");async function bt(t,e){let r=S.default.resolve(t),n=S.default.resolve(r,e);if(!await v.default.exists(r))throw new d(`Root directory does not exist: ${r}`);if(!await Bun.file(n).exists())throw new d(`Entry file does not exist: ${n}`);if(!T(n))throw new d(`Entry file must be a TypeScript file: ${n}`);if(S.default.relative(r,n).startsWith(".."))throw new d(`Entry file must be within rootDir: ${n}`);return{absoluteRootDir:r,absoluteEntry:n}}async function Et(t,e,r,n,s){let{absoluteEntry:o}=await bt(t,e),i=at(n),a=U(n),c=await pt(o,i,a),u=await ht(c);return dt(o,u,r,s,i,a)}function wt(t){return t.split("/").pop()?.split(".").slice(0,-1).join(".")||""}function F(t,{warnOnConflict:e=!0}={}){let r=[],n=new Set,s={};function o(i,a){if(n.has(i)){let c=K(),u=`${i}_${c}`;if(e)f.warn(`Output name conflict: "${i}" is used by multiple files.
2
2
  Bunup uses filenames without extensions as output names by default.
3
3
 
4
4
  ${s[i]} -> ${i}.js
package/build/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- function ht(t){return t}function bt(t){return t}import{build as Ct}from"rolldown";import{dts as Pt}from"rolldown-plugin-dts";class I extends Error{constructor(t){super(t);this.name="BunupError"}}class x extends I{constructor(t){super(t);this.name="BunupBuildError"}}class d extends I{constructor(t){super(t);this.name="BunupDTSBuildError"}}var p=(t)=>{if(t instanceof Error)return t.message;return String(t)};import W from"node:fs/promises";import Et from"node:path";function S(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function U(t=8){let e="";while(e.length<t)e+=Math.random().toString(36).substring(2);return e.substring(0,t)}function v(t,e){switch(t){case"esm":return".mjs";case"cjs":return $(e)?".cjs":".js";case"iife":return".global.js"}}function F(t,e){switch(t){case"esm":return".d.mts";case"cjs":return $(e)?".d.cts":".d.ts";case"iife":return".d.ts"}}function $(t){return t==="module"}function V(t){if(!t)return[];return Array.from(new Set([...Object.keys(t.dependencies||{}),...Object.keys(t.peerDependencies||{})]))}function j(t,e){return t===void 0?e==="esm":t}function L(t){if(t===0)return"0 B";let e=["B","KB","MB","GB"],r=Math.floor(Math.log(t)/Math.log(1024));if(r===0)return`${t} ${e[r]}`;return`${(t/1024**r).toFixed(2)} ${e[r]}`}function h(t,e=3){return t.split("/").slice(-e).join("/")}async function G(t,e){let r=Et.join(t,e);try{await W.rm(r,{recursive:!0,force:!0})}catch(n){throw new x(`Failed to clean output directory: ${n}`)}await W.mkdir(r,{recursive:!0})}function q(t,e){return e==="cjs"?t:void 0}function C(t){return[".ts",".mts",".cts",".tsx"].some((e)=>t.endsWith(e))}function X(t){return t.map((e)=>typeof e==="string"?new RegExp(`^${S(e)}($|\\/|\\\\)`):e)}function P(t,e){return X(t.external||[]).concat(V(e).map((r)=>new RegExp(`^${S(r)}($|\\/|\\\\)`)))}function T(t){return X(t.noExternal||[])}var H=!1;function k(t){H=t??!1}class b{static instance;loggedOnceMessages=new Set;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"};constructor(){}static getInstance(){if(!b.instance)b.instance=new b;return b.instance}dispose(){this.loggedOnceMessages.clear()}shouldLog(t){if(!t?.once)return!0;if(this.loggedOnceMessages.has(t.once))return!1;return this.loggedOnceMessages.add(t.once),!0}formatMessage({colorCode:t,label:e,message:r,size:n,identifier:o,muted:i}){let s=" ".repeat(Math.max(0,this.MAX_LABEL_LENGTH-e.length)),a=i?`\x1B[38;5;${this.colors.info}m${r}\x1B[0m`:r;if(n){let[u,...g]=a.split(" "),l=" ".repeat(Math.max(0,this.MAX_MESSAGE_LENGTH-u.length)),m=o?` \x1B[48;5;${t};38;5;0m ${o} \x1B[0m`:"";return`\x1B[38;5;${t}m${e}\x1B[0m ${s}${u}${l} \x1B[38;5;${this.colors.size}m${n}\x1B[0m ${g.join(" ")}${m}`}let c=o?` \x1B[48;5;${t};38;5;0m ${o} \x1B[0m`:"";return`\x1B[38;5;${t}m${e}\x1B[0m ${s}${a}${c}`}output(t,e={},r=console.log){if(H)return;if(!this.shouldLog(e))return;if(e.verticalSpace)console.log("");if(r(t),e.verticalSpace)console.log("")}cli(t,e={}){let r=this.formatMessage({colorCode:this.colors.cli,label:this.labels.cli,message:t,identifier:e.identifier,muted:e.muted});this.output(r,e)}info(t,e={}){let r=this.formatMessage({colorCode:this.colors.info,label:this.labels.info,message:t,identifier:e.identifier,muted:e.muted});this.output(r,e)}warn(t,e={}){let r=this.formatMessage({colorCode:this.colors.warn,label:this.labels.warn,message:t,identifier:e.identifier,muted:e.muted});this.output(r,e,console.warn)}error(t,e={}){let r=this.formatMessage({colorCode:this.colors.error,label:this.labels.error,message:t,identifier:e.identifier,muted:e.muted});this.output(r,e,console.error)}progress(t,e,r,n){let o=String(t),i=this.colors.default,s,a,c={};if(typeof r==="string")s=r,a=n;else if(r)s=r.size,a=r.identifier,c=r;for(let[g,l]of Object.entries(this.colors.progress))if(o.includes(g)){i=l;break}let u=this.formatMessage({colorCode:i,label:o,message:e,size:s,identifier:a,muted:c.muted});this.output(u,c)}}var f=b.getInstance();import yt from"node:path";import{ResolverFactory as $t}from"oxc-resolver";import w from"node:path";var y="\x00dts:",K=(t,e,r)=>{return{name:"bunup:virtual-dts",async resolveId(n,o){if(A(n))return n;if(!o||!A(o))return null;let i=await D(n,e,r,R(o));if(!i)return null;let s=E(i);if(t.has(s))return M(s);return null},load(n){if(n.startsWith(y)){let o=R(n),i=t.get(o);if(i)return Y.add(o),i}return null}}};function Q(t){return t.tsconfig?.compilerOptions}function E(t){return t.replace(/\.tsx?$/,".d.ts")}function O(t){let e=w.dirname(t.path||""),r=Q(t);return r?.baseUrl?w.resolve(e,r.baseUrl):e}function Z(t){let e=new Map,r=Q(t)?.paths;if(!r)return e;let n=O(t);for(let[o,i]of Object.entries(r))if(Array.isArray(i)&&i.length){let s=o.replace(/\*/g,"(.*)"),a=i[0].replace(/\*/g,"$1");e.set(`^${s}$`,w.join(n,a))}return e}function wt(t,e,r){for(let[n,o]of e){let i=new RegExp(n),s=t.match(i);if(s)return o.replace("$1",s[1]||"")}return r?w.join(r,t):null}async function Rt(t){let e=["",".ts",".tsx",".cts",".mts","/index.ts","/index.tsx","/index.cts","/index.mts"];for(let r of e){let n=`${t}${r}`;if(await Bun.file(n).exists()&&(n.endsWith(".ts")||n.endsWith(".tsx")||n.endsWith(".cts")||n.endsWith(".mts")))return n}return null}function D(t,e,r,n){let o=t.startsWith(".")?w.resolve(w.dirname(n||""),t):wt(t,e,r);if(!o)return Promise.resolve(null);return Rt(o)}function A(t){return t.startsWith(y)}function R(t){return t.replace(y,"")}function M(t){return`${y}${t}`}var z;function J(t){return{name:"bunup:types-resolve",buildStart(){z||=new $t({mainFields:["types"],conditionNames:["types","typings","import","require"],extensions:[".d.ts",".ts",".d.cts",".d.mts",".cts",".mts"],modules:["node_modules","node_modules/@types"]})},async resolveId(e,r){let n=r?R(r):void 0;if(/\0/.test(e))return;if(t){if(!t.some((a)=>{let c=!1;if(typeof a==="string")c=a===e||!!n?.includes(a);else c=a.test(e)||!!(n&&a.test(n));return c}))return}let o=n?yt.dirname(n):process.cwd(),{path:i}=await z.async(o,e);if(!i)return;if(/[cm]?jsx?$/.test(i)){let s=i.replace(/\.([cm]?)jsx?$/,".d.$1ts");return await Bun.file(s).exists()?s:void 0}return i}}}async function tt(t,e,r,n,o,i){let s=E(t),a=M(s),c=P(r,n),u=T(r);try{let{output:g}=await Ct({input:a,output:{dir:r.outDir,inlineDynamicImports:!0},write:!1,onwarn(l,m){if(["UNRESOLVED_IMPORT","CIRCULAR_DEPENDENCY","EMPTY_BUNDLE"].includes(l.code??""))return;m(l)},plugins:[K(e,o,i),typeof r.dts==="object"&&"resolve"in r.dts&&J(typeof r.dts.resolve==="boolean"?void 0:r.dts.resolve),Pt({dtsInput:!0})],external:(l)=>c.some((m)=>m.test(l))&&!u.some((m)=>m.test(l))});if(!g[0]?.code)return f.warn(`Generated empty declaration file for entry "${t}"`,{muted:!0}),"";return g[0].code}catch(g){throw new d(`DTS bundling failed for entry "${t}": ${p(g)}`)}}var Tt=/^\s*import\s+(?:[^'"]*?\s+from\s+)?['"]([^'"]+)['"]/gm,Dt=/^\s*export\s+.*from\s+['"]([^'"]+)['"]/gm,Mt=/import\s*\(\s*['"]([^'"]+)['"]\s*\)/g,Bt=/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,Lt=/\/\/\/\s*<reference\s+types\s*=\s*['"]([^'"]+)['"]\s*\/>/g;function At(t){let e=new Set,r=[Tt,Dt,Mt,Bt,It,St,Lt];for(let n of r){let o=t.matchAll(n);for(let i of o)if(i[1])e.add(i[1])}return e}async function et(t,e,r){let n=new Set([t]),o=[t];while(o.length){let i=o.pop();if(!i)continue;try{let s=await Bun.file(i).text(),a=At(s);for(let c of a){let u=await D(c,e,r,i);if(!u)continue;if(!n.has(u))n.add(u),o.push(u)}}catch(s){f.warn(`Error processing ${i}: ${p(s)}`)}}return n}import{isolatedDeclaration as Ot}from"oxc-transform";async function rt(t){let e=new Map;return await Promise.all([...t].map(async(r)=>{try{let n=E(r);if(!await Bun.file(r).exists())return;let i=await Bun.file(r).text(),{code:s}=Ot(r,i);if(s)e.set(n,s)}catch(n){f.warn(`Failed to generate declaration for ${r}: ${p(n)}`)}})),e}import nt from"node:fs/promises";import _ from"node:path";import{isolatedDeclaration as Ce}from"oxc-transform";async function st(t,e){let r=_.resolve(t),n=_.resolve(r,e);if(!await nt.exists(r))throw new d(`Root directory does not exist: ${r}`);if(!await Bun.file(n).exists())throw new d(`Entry file does not exist: ${n}`);if(!C(n))throw new d(`Entry file must be a TypeScript file (.ts): ${n}`);if(_.relative(r,n).startsWith(".."))throw new d(`Entry file must be within rootDir: ${n}`);return{absoluteRootDir:r,absoluteEntry:n}}async function it(t,e,r,n,o){let{absoluteEntry:i}=await st(t,e),s=Z(n),a=O(n),c=await et(i,s,a),u=await rt(c);return tt(i,u,r,o,s,a)}function ot(t){return t.split("/").pop()?.split(".").slice(0,-1).join(".")||""}function N(t,{warnOnConflict:e=!0}={}){let r=[],n=new Set,o={};function i(s,a){if(n.has(s)){let c=U(),u=`${s}_${c}`;if(e)f.warn(`Output name conflict: "${s}" is used by multiple files.
1
+ function ht(t){return t}function bt(t){return t}import{build as Ct}from"rolldown";import{dts as Pt}from"rolldown-plugin-dts";class I extends Error{constructor(t){super(t);this.name="BunupError"}}class x extends I{constructor(t){super(t);this.name="BunupBuildError"}}class d extends I{constructor(t){super(t);this.name="BunupDTSBuildError"}}var p=(t)=>{if(t instanceof Error)return t.message;return String(t)};import W from"node:fs/promises";import Et from"node:path";function S(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function U(t=8){let e="";while(e.length<t)e+=Math.random().toString(36).substring(2);return e.substring(0,t)}function v(t,e){switch(t){case"esm":return".mjs";case"cjs":return $(e)?".cjs":".js";case"iife":return".global.js"}}function F(t,e){switch(t){case"esm":return".d.mts";case"cjs":return $(e)?".d.cts":".d.ts";case"iife":return".d.ts"}}function $(t){return t==="module"}function V(t){if(!t)return[];return Array.from(new Set([...Object.keys(t.dependencies||{}),...Object.keys(t.peerDependencies||{})]))}function j(t,e){return t===void 0?e==="esm":t}function L(t){if(t===0)return"0 B";let e=["B","KB","MB","GB"],r=Math.floor(Math.log(t)/Math.log(1024));if(r===0)return`${t} ${e[r]}`;return`${(t/1024**r).toFixed(2)} ${e[r]}`}function h(t,e=3){return t.split("/").slice(-e).join("/")}async function G(t,e){let r=Et.join(t,e);try{await W.rm(r,{recursive:!0,force:!0})}catch(n){throw new x(`Failed to clean output directory: ${n}`)}await W.mkdir(r,{recursive:!0})}function q(t,e){return e==="cjs"?t:void 0}function C(t){return[".ts",".mts",".cts",".tsx"].some((e)=>t.endsWith(e))}function X(t){return t.map((e)=>typeof e==="string"?new RegExp(`^${S(e)}($|\\/|\\\\)`):e)}function P(t,e){return X(t.external||[]).concat(V(e).map((r)=>new RegExp(`^${S(r)}($|\\/|\\\\)`)))}function T(t){return X(t.noExternal||[])}var H=!1;function k(t){H=t??!1}class b{static instance;loggedOnceMessages=new Set;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"};constructor(){}static getInstance(){if(!b.instance)b.instance=new b;return b.instance}dispose(){this.loggedOnceMessages.clear()}shouldLog(t){if(!t?.once)return!0;if(this.loggedOnceMessages.has(t.once))return!1;return this.loggedOnceMessages.add(t.once),!0}formatMessage({colorCode:t,label:e,message:r,size:n,identifier:o,muted:i}){let s=" ".repeat(Math.max(0,this.MAX_LABEL_LENGTH-e.length)),a=i?`\x1B[38;5;${this.colors.info}m${r}\x1B[0m`:r;if(n){let[u,...g]=a.split(" "),l=" ".repeat(Math.max(0,this.MAX_MESSAGE_LENGTH-u.length)),m=o?` \x1B[48;5;${t};38;5;0m ${o} \x1B[0m`:"";return`\x1B[38;5;${t}m${e}\x1B[0m ${s}${u}${l} \x1B[38;5;${this.colors.size}m${n}\x1B[0m ${g.join(" ")}${m}`}let c=o?` \x1B[48;5;${t};38;5;0m ${o} \x1B[0m`:"";return`\x1B[38;5;${t}m${e}\x1B[0m ${s}${a}${c}`}output(t,e={},r=console.log){if(H)return;if(!this.shouldLog(e))return;if(e.verticalSpace)console.log("");if(r(t),e.verticalSpace)console.log("")}cli(t,e={}){let r=this.formatMessage({colorCode:this.colors.cli,label:this.labels.cli,message:t,identifier:e.identifier,muted:e.muted});this.output(r,e)}info(t,e={}){let r=this.formatMessage({colorCode:this.colors.info,label:this.labels.info,message:t,identifier:e.identifier,muted:e.muted});this.output(r,e)}warn(t,e={}){let r=this.formatMessage({colorCode:this.colors.warn,label:this.labels.warn,message:t,identifier:e.identifier,muted:e.muted});this.output(r,e,console.warn)}error(t,e={}){let r=this.formatMessage({colorCode:this.colors.error,label:this.labels.error,message:t,identifier:e.identifier,muted:e.muted});this.output(r,e,console.error)}progress(t,e,r,n){let o=String(t),i=this.colors.default,s,a,c={};if(typeof r==="string")s=r,a=n;else if(r)s=r.size,a=r.identifier,c=r;for(let[g,l]of Object.entries(this.colors.progress))if(o.includes(g)){i=l;break}let u=this.formatMessage({colorCode:i,label:o,message:e,size:s,identifier:a,muted:c.muted});this.output(u,c)}}var f=b.getInstance();import yt from"node:path";import{ResolverFactory as $t}from"oxc-resolver";import w from"node:path";var y="\x00dts:",K=(t,e,r)=>{return{name:"bunup:virtual-dts",async resolveId(n,o){if(A(n))return n;if(!o||!A(o))return null;let i=await D(n,e,r,R(o));if(!i)return null;let s=E(i);if(t.has(s))return M(s);return null},load(n){if(n.startsWith(y)){let o=R(n),i=t.get(o);if(i)return Y.add(o),i}return null}}};function Q(t){return t.tsconfig?.compilerOptions}function E(t){return t.replace(/\.tsx?$/,".d.ts")}function O(t){let e=w.dirname(t.path||""),r=Q(t);return r?.baseUrl?w.resolve(e,r.baseUrl):e}function Z(t){let e=new Map,r=Q(t)?.paths;if(!r)return e;let n=O(t);for(let[o,i]of Object.entries(r))if(Array.isArray(i)&&i.length){let s=o.replace(/\*/g,"(.*)"),a=i[0].replace(/\*/g,"$1");e.set(`^${s}$`,w.join(n,a))}return e}function wt(t,e,r){for(let[n,o]of e){let i=new RegExp(n),s=t.match(i);if(s)return o.replace("$1",s[1]||"")}return r?w.join(r,t):null}async function Rt(t){let e=["",".ts",".tsx",".cts",".mts","/index.ts","/index.tsx","/index.cts","/index.mts"];for(let r of e){let n=`${t}${r}`;if(await Bun.file(n).exists()&&(n.endsWith(".ts")||n.endsWith(".tsx")||n.endsWith(".cts")||n.endsWith(".mts")))return n}return null}function D(t,e,r,n){let o=t.startsWith(".")?w.resolve(w.dirname(n||""),t):wt(t,e,r);if(!o)return Promise.resolve(null);return Rt(o)}function A(t){return t.startsWith(y)}function R(t){return t.replace(y,"")}function M(t){return`${y}${t}`}var z;function J(t){return{name:"bunup:types-resolve",buildStart(){z||=new $t({mainFields:["types"],conditionNames:["types","typings","import","require"],extensions:[".d.ts",".ts",".d.cts",".d.mts",".cts",".mts"],modules:["node_modules","node_modules/@types"]})},async resolveId(e,r){let n=r?R(r):void 0;if(/\0/.test(e))return;if(t){if(!t.some((a)=>{let c=!1;if(typeof a==="string")c=a===e||!!n?.includes(a);else c=a.test(e)||!!(n&&a.test(n));return c}))return}let o=n?yt.dirname(n):process.cwd(),{path:i}=await z.async(o,e);if(!i)return;if(/[cm]?jsx?$/.test(i)){let s=i.replace(/\.([cm]?)jsx?$/,".d.$1ts");return await Bun.file(s).exists()?s:void 0}return i}}}async function tt(t,e,r,n,o,i){let s=E(t),a=M(s),c=P(r,n),u=T(r);try{let{output:g}=await Ct({input:a,output:{dir:r.outDir,inlineDynamicImports:!0},write:!1,onwarn(l,m){if(["UNRESOLVED_IMPORT","CIRCULAR_DEPENDENCY","EMPTY_BUNDLE"].includes(l.code??""))return;m(l)},plugins:[K(e,o,i),typeof r.dts==="object"&&"resolve"in r.dts&&J(typeof r.dts.resolve==="boolean"?void 0:r.dts.resolve),Pt({dtsInput:!0})],external:(l)=>c.some((m)=>m.test(l))&&!u.some((m)=>m.test(l))});if(!g[0]?.code)return f.warn(`Generated empty declaration file for entry "${t}"`,{muted:!0}),"";return g[0].code}catch(g){throw new d(`DTS bundling failed for entry "${t}": ${p(g)}`)}}var Tt=/^\s*import\s+(?:[^'"]*?\s+from\s+)?['"]([^'"]+)['"]/gm,Dt=/^\s*export\s+.*from\s+['"]([^'"]+)['"]/gm,Mt=/import\s*\(\s*['"]([^'"]+)['"]\s*\)/g,Bt=/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,Lt=/\/\/\/\s*<reference\s+types\s*=\s*['"]([^'"]+)['"]\s*\/>/g;function At(t){let e=new Set,r=[Tt,Dt,Mt,Bt,It,St,Lt];for(let n of r){let o=t.matchAll(n);for(let i of o)if(i[1])e.add(i[1])}return e}async function et(t,e,r){let n=new Set([t]),o=[t];while(o.length){let i=o.pop();if(!i)continue;try{let s=await Bun.file(i).text(),a=At(s);for(let c of a){let u=await D(c,e,r,i);if(!u)continue;if(!n.has(u))n.add(u),o.push(u)}}catch(s){f.warn(`Error processing ${i}: ${p(s)}`)}}return n}import{isolatedDeclaration as Ot}from"oxc-transform";async function rt(t){let e=new Map;return await Promise.all([...t].map(async(r)=>{try{let n=E(r);if(!await Bun.file(r).exists())return;let i=await Bun.file(r).text(),{code:s}=Ot(r,i);if(s)e.set(n,s)}catch(n){f.warn(`Failed to generate declaration for ${r}: ${p(n)}`)}})),e}import nt from"node:fs/promises";import _ from"node:path";import{isolatedDeclaration as Ce}from"oxc-transform";async function st(t,e){let r=_.resolve(t),n=_.resolve(r,e);if(!await nt.exists(r))throw new d(`Root directory does not exist: ${r}`);if(!await Bun.file(n).exists())throw new d(`Entry file does not exist: ${n}`);if(!C(n))throw new d(`Entry file must be a TypeScript file: ${n}`);if(_.relative(r,n).startsWith(".."))throw new d(`Entry file must be within rootDir: ${n}`);return{absoluteRootDir:r,absoluteEntry:n}}async function it(t,e,r,n,o){let{absoluteEntry:i}=await st(t,e),s=Z(n),a=O(n),c=await et(i,s,a),u=await rt(c);return tt(i,u,r,o,s,a)}function ot(t){return t.split("/").pop()?.split(".").slice(0,-1).join(".")||""}function N(t,{warnOnConflict:e=!0}={}){let r=[],n=new Set,o={};function i(s,a){if(n.has(s)){let c=U(),u=`${s}_${c}`;if(e)f.warn(`Output name conflict: "${s}" is used by multiple files.
2
2
  Bunup uses filenames without extensions as output names by default.
3
3
 
4
4
  ${o[s]} -> ${s}.js
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bunup",
3
- "version": "0.4.0",
3
+ "version": "0.4.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",
@@ -20,7 +20,7 @@
20
20
  "bunup": "^0.3.90",
21
21
  "husky": "^9.1.7",
22
22
  "typescript": "^5.8.3",
23
- "create-bunup": "0.4.0"
23
+ "create-bunup": "0.4.1"
24
24
  },
25
25
  "peerDependencies": {
26
26
  "typescript": ">=4.5.0"