bunup 0.4.35 → 0.4.36

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/bin/bunup.js ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env bun
2
+ import "../build/cli.mjs";
package/build/cli.mjs CHANGED
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env bun
2
2
  // @bun
3
- import{exec as yt}from"tinyexec";import{build as Ye}from"rolldown";import{dts as Ke}from"rolldown-plugin-dts";var te=!1;function B(e){te=e??!1}class E{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(!E.instance)E.instance=new E;return E.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,...f]=a.split(" "),p=" ".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}${p} \x1B[38;5;${this.colors.size}m${r}\x1B[0m ${f.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(te)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[f,p]of Object.entries(this.colors.progress))if(s.includes(f)){o=p;break}let c=this.formatMessage({colorCode:o,label:s,message:t,size:i,identifier:a,muted:l.muted});this.output(c,l)}}var u=E.getInstance();class O extends Error{constructor(e){super(e);this.name="BunupError"}}class C extends O{constructor(e){super(e);this.name="BunupBuildError"}}class g extends O{constructor(e){super(e);this.name="BunupDTSBuildError"}}class b extends O{constructor(e){super(e);this.name="BunupCLIError"}}class L extends O{constructor(e){super(e);this.name="BunupWatchError"}}var h=(e)=>{if(e instanceof Error)return e.message;return String(e)},qe=[{pattern:/Could not resolve: "bun"/i,errorType:"BUILD ERROR",logSolution:()=>{u.error("\x1B[0mYou're trying to build a project that uses Bun. Please set the target option to \x1B[36m`bun`\x1B[0m.\nExample: \x1B[32m`bunup --target bun`\x1B[0m or in config: \x1B[32m{ target: 'bun' }\x1B[0m")}}],q=(e,t)=>{let n=h(e),r=t?`[${t}] `:"",s="ERROR";if(e instanceof C)s="BUILD ERROR";else if(e instanceof g)s="DTS ERROR";else if(e instanceof b)s="CLI ERROR";else if(e instanceof L)s="WATCH ERROR";else if(e instanceof O)s="BUNUP ERROR";let o=qe.find((i)=>i.pattern.test(n)&&(i.errorType===s||!i.errorType));if(!o)console.error(`\x1B[31m${s}\x1B[0m ${r}${n}`);if(o)console.log(`
3
+ import{exec as yt}from"tinyexec";import{build as Ye}from"rolldown";import{dts as Ke}from"rolldown-plugin-dts";var te=!1;function B(e){te=e??!1}class E{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(!E.instance)E.instance=new E;return E.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,...f]=a.split(" "),m=" ".repeat(Math.max(0,this.MAX_MESSAGE_LENGTH-c.length)),p=s?` \x1B[48;5;${e};38;5;0m ${s} \x1B[0m`:"";return`\x1B[38;5;${e}m${t}\x1B[0m ${i}${c}${m} \x1B[38;5;${this.colors.size}m${r}\x1B[0m ${f.join(" ")}${p}`}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(te)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[f,m]of Object.entries(this.colors.progress))if(s.includes(f)){o=m;break}let c=this.formatMessage({colorCode:o,label:s,message:t,size:i,identifier:a,muted:l.muted});this.output(c,l)}}var u=E.getInstance();class O extends Error{constructor(e){super(e);this.name="BunupError"}}class C extends O{constructor(e){super(e);this.name="BunupBuildError"}}class g extends O{constructor(e){super(e);this.name="BunupDTSBuildError"}}class b extends O{constructor(e){super(e);this.name="BunupCLIError"}}class L extends O{constructor(e){super(e);this.name="BunupWatchError"}}var h=(e)=>{if(e instanceof Error)return e.message;return String(e)},qe=[{pattern:/Could not resolve: "bun"/i,errorType:"BUILD ERROR",logSolution:()=>{u.error("\x1B[0mYou're trying to build a project that uses Bun. Please set the target option to \x1B[36m`bun`\x1B[0m.\nExample: \x1B[32m`bunup --target bun`\x1B[0m or in config: \x1B[32m{ target: 'bun' }\x1B[0m")}}],q=(e,t)=>{let n=h(e),r=t?`[${t}] `:"",s="ERROR";if(e instanceof C)s="BUILD ERROR";else if(e instanceof g)s="DTS ERROR";else if(e instanceof b)s="CLI ERROR";else if(e instanceof L)s="WATCH ERROR";else if(e instanceof O)s="BUNUP ERROR";let o=qe.find((i)=>i.pattern.test(n)&&(i.errorType===s||!i.errorType));if(!o)console.error(`\x1B[31m${s}\x1B[0m ${r}${n}`);if(o)console.log(`
4
4
  `),o.logSolution(n),console.log(`
5
- `);else console.error("\x1B[90mIf you think this is a bug, please open an issue at: \x1B[36mhttps://github.com/arshad-yaseen/bunup/issues/new\x1B[0m")},ne=(e,t)=>{q(e,t),process.exit(1)};import re from"node:fs/promises";import Ve from"node:path";function V(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function se(e=8){let t="";while(t.length<e)t+=Math.random().toString(36).substring(2);return t.substring(0,e)}function ie(e,t,n){return Array.isArray(e)?e.map((r)=>({...r,[t]:n})):{...e,[t]:n}}function oe(e){return Array.isArray(e)?e:[e]}function ae(e,t){switch(e){case"esm":return S(t)?".js":".mjs";case"cjs":return S(t)?".cjs":".js";case"iife":return".global.js"}}function le(e,t){switch(e){case"esm":return S(t)?".d.ts":".d.mts";case"cjs":return S(t)?".d.cts":".d.ts";case"iife":return".d.ts"}}function G(e){return e==="node"||e==="bun"}function S(e){return e==="module"}function D(e){return e>=1000?`${(e/1000).toFixed(2)}s`:`${Math.round(e)}ms`}function ce(e){if(!e)return[];return Array.from(new Set([...Object.keys(e.dependencies||{}),...Object.keys(e.peerDependencies||{})]))}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 y(e,t=3){return e.split("/").slice(-t).join("/")}async function ue(e,t){let n=Ve.join(e,t);try{await re.rm(n,{recursive:!0,force:!0})}catch(r){throw new C(`Failed to clean output directory: ${r}`)}await re.mkdir(n,{recursive:!0})}function I(e){return[".ts",".mts",".cts",".tsx"].some((t)=>e.endsWith(t))}function fe(e){return e.map((t)=>typeof t==="string"?new RegExp(`^${V(t)}($|\\/|\\\\)`):t)}function A(e,t){return fe(e.external||[]).concat(ce(t).map((n)=>new RegExp(`^${V(n)}($|\\/|\\\\)`)))}function M(e){return fe(e.noExternal||[])}import he from"node:path";import{ResolverFactory as Xe}from"oxc-resolver";import{resolveTsImportPath as Ge}from"ts-import-resolver";var R="\x00dts:",me=(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=t.tsconfig?Ge({path:r,importer:T(s),tsconfig:t.tsconfig,rootDir:n}):null;if(!o)return null;let i=w(o);if(e.has(i))return j(i);return null},load(r){if(r.startsWith(R)){let s=T(r),o=e.get(s);if(o)return $.add(s),o}return null}}};function pe(e){return e.tsconfig.compilerOptions??{}}function de(e){return e.endsWith(".d.ts")||e.endsWith(".d.mts")||e.endsWith(".d.cts")}function ge(e){return/\.(js|mjs|cjs|ts|mts|cts|tsx|jsx)$/.test(e)&&!de(e)}function w(e){if(de(e))return e;return e.replace(/\.(ts|tsx|mts|cts|js|jsx|mjs|cjs)$/,".d.ts")}function Y(e){return e.startsWith(R)}function T(e){return e.replace(R,"")}function j(e){return`${R}${e}`}var K;function be(e,t){return{name:"bunup:types-resolve",buildStart(){K||=new Xe({mainFields:["types","typings","module","main"],conditionNames:["types","typings","import","require"],extensions:[".d.ts",".d.mts",".d.cts",".ts",".mts",".cts"],...e.path&&{tsconfig:{configFile:e.path}},modules:["node_modules","node_modules/@types"]})},async resolveId(n,r){if(n==="bun")return;let s=r?T(r):void 0;if(/\0/.test(n))return;if(t){if(!t.some((l)=>typeof l==="string"?l===n:l.test(n)))return}let o=s?he.dirname(s):process.cwd(),{path:i}=await K.async(o,n);if(!i)return;if(ge(i)){let a=w(i);try{let{path:l}=await K.async(he.dirname(i),a);if(l)return l}catch(l){}return}return i}}}async function xe(e,t,n,r,s,o){let i=w(e),a=j(i),l=A(n,r),c=M(n);try{let{output:f}=await Ye({input:a,output:{dir:n.outDir},write:!1,onwarn(p,m){if(["UNRESOLVED_IMPORT","CIRCULAR_DEPENDENCY","EMPTY_BUNDLE"].includes(p.code??""))return;m(p)},plugins:[me(t,s,o),typeof n.dts==="object"&&"resolve"in n.dts&&be(s,typeof n.dts.resolve==="boolean"?void 0:n.dts.resolve),Ke({dtsInput:!0,emitDtsOnly:!0,compilerOptions:{...pe(s),declaration:!0,noEmit:!1,emitDeclarationOnly:!0,noEmitOnError:!0,checkJs:!1,declarationMap:!1,skipLibCheck:!0,preserveSymlinks:!1,target:99}})],external:(p)=>l.some((m)=>m.test(p))&&!c.some((m)=>m.test(p))});if(!f[0]?.code)return u.warn(`Generated empty declaration file for entry "${e}"`,{muted:!0}),"";return f[0].code}catch(f){throw new g(`DTS bundling failed for entry "${e}": ${h(f)}`)}}import{resolveTsImportPath as Je}from"ts-import-resolver";var ze=/^\s*import\s+(?:[^'"]*?\s+from\s+)?['"]([^'"]+)['"]/gm,Qe=/^\s*export\s+.*from\s+['"]([^'"]+)['"]/gm,Ze=/import\s*\(\s*['"]([^'"]+)['"]\s*\)/g,et=/require\s*\(\s*['"]([^'"]+)['"]\s*\)/g,tt=/import\s+\w+\s*=\s*require\s*\(\s*['"]([^'"]+)['"]\s*\)/g,nt=/\/\/\/\s*<reference\s+path\s*=\s*['"]([^'"]+)['"]\s*\/>/g,rt=/\/\/\/\s*<reference\s+types\s*=\s*['"]([^'"]+)['"]\s*\/>/g;function st(e){let t=new Set,n=[ze,Qe,Ze,et,tt,nt,rt];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 ye(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=st(i);for(let l of a){let c=t.tsconfig?Je({path:l,importer:o,tsconfig:t.tsconfig,rootDir:n}):null;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 it}from"oxc-transform";async function we(e){let t=new Map;return await Promise.all([...e].map(async(n)=>{try{let r=w(n);if(!await Bun.file(n).exists())return;let o=await Bun.file(n).text(),{code:i}=it(n,o);if(i)t.set(r,i)}catch(r){u.warn(`Failed to generate declaration for ${n}: ${h(r)}`)}})),t}import Ce from"node:fs/promises";import J from"node:path";import{isolatedDeclaration as ot}from"oxc-transform";async function Ee(e,t){let n=J.resolve(e),r=J.resolve(n,t);if(!await Ce.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(!I(r))throw new g(`Entry file must be a TypeScript file: ${r}`);if(J.relative(n,r).startsWith(".."))throw new g(`Entry file must be within rootDir: ${r}`);return{absoluteRootDir:n,absoluteEntry:r}}async function Oe(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}=ot(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/arshad-yaseen/bunup/issues/new\x1B[0m")},ne=(e,t)=>{q(e,t),process.exit(1)};import re from"node:fs/promises";import Ve from"node:path";function V(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function se(e=8){let t="";while(t.length<e)t+=Math.random().toString(36).substring(2);return t.substring(0,e)}function ie(e,t,n){return Array.isArray(e)?e.map((r)=>({...r,[t]:n})):{...e,[t]:n}}function oe(e){return Array.isArray(e)?e:[e]}function ae(e,t){switch(e){case"esm":return S(t)?".js":".mjs";case"cjs":return S(t)?".cjs":".js";case"iife":return".global.js"}}function le(e,t){switch(e){case"esm":return S(t)?".d.ts":".d.mts";case"cjs":return S(t)?".d.cts":".d.ts";case"iife":return".d.ts"}}function G(e){return e==="node"||e==="bun"}function S(e){return e==="module"}function D(e){return e>=1000?`${(e/1000).toFixed(2)}s`:`${Math.round(e)}ms`}function ce(e){if(!e)return[];return Array.from(new Set([...Object.keys(e.dependencies||{}),...Object.keys(e.peerDependencies||{})]))}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 y(e,t=3){return e.split("/").slice(-t).join("/")}async function ue(e,t){let n=Ve.join(e,t);try{await re.rm(n,{recursive:!0,force:!0})}catch(r){throw new C(`Failed to clean output directory: ${r}`)}await re.mkdir(n,{recursive:!0})}function I(e){return[".ts",".mts",".cts",".tsx"].some((t)=>e.endsWith(t))}function fe(e){return e.map((t)=>typeof t==="string"?new RegExp(`^${V(t)}($|\\/|\\\\)`):t)}function A(e,t){return fe(e.external||[]).concat(ce(t).map((n)=>new RegExp(`^${V(n)}($|\\/|\\\\)`)))}function M(e){return fe(e.noExternal||[])}import he from"node:path";import{ResolverFactory as Xe}from"oxc-resolver";import{resolveTsImportPath as Ge}from"ts-import-resolver";var R="\x00dts:",pe=(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=t.tsconfig?Ge({path:r,importer:T(s),tsconfig:t.tsconfig,rootDir:n}):null;if(!o)return null;let i=w(o);if(e.has(i))return j(i);return null},load(r){if(r.startsWith(R)){let s=T(r),o=e.get(s);if(o)return $.add(s),o}return null}}};function me(e){return e.tsconfig.compilerOptions??{}}function de(e){return e.endsWith(".d.ts")||e.endsWith(".d.mts")||e.endsWith(".d.cts")}function ge(e){return/\.(js|mjs|cjs|ts|mts|cts|tsx|jsx)$/.test(e)&&!de(e)}function w(e){if(de(e))return e;return e.replace(/\.(ts|tsx|mts|cts|js|jsx|mjs|cjs)$/,".d.ts")}function Y(e){return e.startsWith(R)}function T(e){return e.replace(R,"")}function j(e){return`${R}${e}`}var K;function be(e,t){return{name:"bunup:types-resolve",buildStart(){K||=new Xe({mainFields:["types","typings","module","main"],conditionNames:["types","typings","import","require"],extensions:[".d.ts",".d.mts",".d.cts",".ts",".mts",".cts"],...e.path&&{tsconfig:{configFile:e.path}},modules:["node_modules","node_modules/@types"]})},async resolveId(n,r){if(n==="bun")return;let s=r?T(r):void 0;if(/\0/.test(n))return;if(t){if(!t.some((l)=>typeof l==="string"?l===n:l.test(n)))return}let o=s?he.dirname(s):process.cwd(),{path:i}=await K.async(o,n);if(!i)return;if(ge(i)){let a=w(i);try{let{path:l}=await K.async(he.dirname(i),a);if(l)return l}catch(l){}return}return i}}}async function xe(e,t,n,r,s,o){let i=w(e),a=j(i),l=A(n,r),c=M(n);try{let{output:f}=await Ye({input:a,output:{dir:n.outDir},write:!1,onwarn(m,p){if(["UNRESOLVED_IMPORT","CIRCULAR_DEPENDENCY","EMPTY_BUNDLE"].includes(m.code??""))return;p(m)},plugins:[pe(t,s,o),typeof n.dts==="object"&&"resolve"in n.dts&&be(s,typeof n.dts.resolve==="boolean"?void 0:n.dts.resolve),Ke({dtsInput:!0,emitDtsOnly:!0,compilerOptions:{...me(s),declaration:!0,noEmit:!1,emitDeclarationOnly:!0,noEmitOnError:!0,checkJs:!1,declarationMap:!1,skipLibCheck:!0,preserveSymlinks:!1,target:99}})],external:(m)=>l.some((p)=>p.test(m))&&!c.some((p)=>p.test(m))});if(!f[0]?.code)return u.warn(`Generated empty declaration file for entry "${e}"`,{muted:!0}),"";return f[0].code}catch(f){throw new g(`DTS bundling failed for entry "${e}": ${h(f)}`)}}import{resolveTsImportPath as Je}from"ts-import-resolver";var ze=/^\s*import\s+(?:[^'"]*?\s+from\s+)?['"]([^'"]+)['"]/gm,Qe=/^\s*export\s+.*from\s+['"]([^'"]+)['"]/gm,Ze=/import\s*\(\s*['"]([^'"]+)['"]\s*\)/g,et=/require\s*\(\s*['"]([^'"]+)['"]\s*\)/g,tt=/import\s+\w+\s*=\s*require\s*\(\s*['"]([^'"]+)['"]\s*\)/g,nt=/\/\/\/\s*<reference\s+path\s*=\s*['"]([^'"]+)['"]\s*\/>/g,rt=/\/\/\/\s*<reference\s+types\s*=\s*['"]([^'"]+)['"]\s*\/>/g;function st(e){let t=new Set,n=[ze,Qe,Ze,et,tt,nt,rt];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 ye(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=st(i);for(let l of a){let c=t.tsconfig?Je({path:l,importer:o,tsconfig:t.tsconfig,rootDir:n}):null;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 it}from"oxc-transform";async function we(e){let t=new Map;return await Promise.all([...e].map(async(n)=>{try{let r=w(n);if(!await Bun.file(n).exists())return;let o=await Bun.file(n).text(),{code:i}=it(n,o);if(i)t.set(r,i)}catch(r){u.warn(`Failed to generate declaration for ${n}: ${h(r)}`)}})),t}import Ce from"node:fs/promises";import J from"node:path";import{isolatedDeclaration as ot}from"oxc-transform";async function Ee(e,t){let n=J.resolve(e),r=J.resolve(n,t);if(!await Ce.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(!I(r))throw new g(`Entry file must be a TypeScript file: ${r}`);if(J.relative(n,r).startsWith(".."))throw new g(`Entry file must be within rootDir: ${r}`);return{absoluteRootDir:n,absoluteEntry:r}}async function Oe(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}=ot(r,s);for(let i of o){if(!t)console.log(`
6
6
  `);let a=i.labels[0],l=a?at(s,a.start):"",f=`${y(r)}${l}: ${lt(i.message)}`;u.warn(f),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 at(e,t){if(t===void 0)return"";let n=e.slice(0,t).split(`
@@ -30,8 +30,8 @@ See: https://bunup.arshadyaseen.com/documentation/#named-entries`,{muted:!0,vert
30
30
 
31
31
  const importMetaUrl = pathToFileURL(__filename).href;
32
32
 
33
- `}};function ke({format:e,target:t,shims:n}){let s=ft(n).map((o)=>z[o]).filter((o)=>o.appliesTo(e,t));if(s.length===0)return{name:"bunup:inject-shims",setup(){}};return{name:"bunup:inject-shims",setup(o){o.onLoad({filter:ut},async({path:i})=>{let a=await Bun.file(i).text(),l=s.filter((m)=>m.isNeededInFile(a));if(l.length===0)return;let{shebangLine:c,codeContent:f}=mt(a),p=l.map((m)=>m.generateCode()).join("");return{contents:c+p+f}})}}}function ft(e){if(e===!0)return Object.keys(z);if(!e)return[];return Object.entries(e).filter(([t,n])=>n&&(t in z)).map(([t])=>t)}function mt(e){if(!e.startsWith("#!"))return{shebangLine:"",codeContent:e};let t=e.indexOf(`
34
- `);return t===-1?{shebangLine:"",codeContent:e}:{shebangLine:e.slice(0,t+1),codeContent:e.slice(t+1)}}var $=new Set;async function v(e,t){let n=k(e);if(!n.entry||n.entry.length===0||!n.outDir)throw new C("Nothing to build. Please make sure you have provided a proper bunup configuration or cli arguments.");if(n.clean)ue(t,n.outDir);B(n.silent);let{packageJson:r,path:s}=await Be(t);if(r&&s)u.cli(`Using package.json: ${y(s,2)}`,{muted:!0,identifier:n.name,once:`${s}:${n.name}`});let o=P(n.entry),i=r?.type,a=A(n,r),l=M(n);if(!n.dtsOnly){let c=[_e(a,l)],f=n.format.flatMap((p)=>o.map((m)=>{return pt(n,t,m,p,i,c)}));await Promise.all(f)}if(n.dts||n.dtsOnly){let c=await Le(t,n.preferredTsconfigPath);if(c.path)u.cli(`Using tsconfig: ${y(c.path,2)}`,{muted:!0,identifier:n.name,once:`${c.path}:${n.name}`});let f=n.format.filter((m)=>{if(m==="iife"&&!S(i)&&n.format.includes("cjs"))return!1;return!0}),p=typeof n.dts==="object"&&n.dts.entry?P(n.dts.entry):$e(o);try{await Promise.all(p.map(async(m)=>{let W=await Se(t,m.path,n,c,r);await Promise.all(f.map(async(ee)=>{let We=n.outputExtension?.({format:ee,packageType:i,options:n,entry:m}).dts??le(ee,i),H=`${t}/${n.outDir}/${m.name}${We}`;await Bun.write(H,W);let He=Bun.file(H).size||0;u.progress("DTS",y(H),X(He),n.name)}))}))}catch(m){throw new g(h(m))}}if(n.onBuildSuccess)await n.onBuildSuccess(n)}async function pt(e,t,n,r,s,o){let i=e.outputExtension?.({format:r,packageType:s,options:e,entry:n}).js??ae(r,s),a=await Bun.build({entrypoints:[`${t}/${n.path}`],format:r,naming:{entry:Te(n.name,i)},splitting:Me(e.splitting,r),bytecode:Ie(e.bytecode,r),define:Ae(e.define,e.shims,e.env,r),minify:De(e),outdir:`${t}/${e.outDir}`,target:e.target,sourcemap:e.sourcemap,loader:e.loader,drop:e.drop,banner:e.banner,footer:e.footer,publicPath:e.publicPath,env:je(e.env),plugins:[...o,ke({format:r,target:e.target,shims:e.shims}),...e.bunBuildPlugins??[]],throw:!1});if(!a.success)for(let f of a.logs){if(f.level==="error")throw new C(f.message);if(f.level==="warning")u.warn(f.message);else if(f.level==="info")u.info(f.message)}let l=`${t}/${e.outDir}/${n.name}${i}`,c=Bun.file(l).size||0;u.progress(r.toUpperCase(),y(l),X(c),e.name)}var U="0.4.35";var ve="https://bunup.arshadyaseen.com/documentation/#cli-options";function d(e){return(t,n)=>{n[e]=t===!0||t==="true"}}function x(e){return(t,n)=>{if(typeof t==="string")n[e]=t;else throw new b(`Option --${e} requires a string value`)}}function Q(e){return(t,n)=>{if(typeof t==="string")n[e]=t.split(",");else throw new b(`Option --${e} requires a string value`)}}function gt(e){return(t,n)=>{if(typeof t==="boolean")n[e]=t;else if(typeof t==="string")if(t.toLowerCase()==="true"||t.toLowerCase()==="false")n[e]=t.toLowerCase()==="true";else n[e]=t;else throw new b(`Option --${e} requires a boolean or string value`)}}function ht(){console.log(`
33
+ `}};function ke({format:e,target:t,shims:n}){let s=ft(n).map((o)=>z[o]).filter((o)=>o.appliesTo(e,t));if(s.length===0)return{name:"bunup:inject-shims",setup(){}};return{name:"bunup:inject-shims",setup(o){o.onLoad({filter:ut},async({path:i})=>{let a=await Bun.file(i).text(),l=s.filter((p)=>p.isNeededInFile(a));if(l.length===0)return;let{shebangLine:c,codeContent:f}=pt(a),m=l.map((p)=>p.generateCode()).join("");return{contents:c+m+f}})}}}function ft(e){if(e===!0)return Object.keys(z);if(!e)return[];return Object.entries(e).filter(([t,n])=>n&&(t in z)).map(([t])=>t)}function pt(e){if(!e.startsWith("#!"))return{shebangLine:"",codeContent:e};let t=e.indexOf(`
34
+ `);return t===-1?{shebangLine:"",codeContent:e}:{shebangLine:e.slice(0,t+1),codeContent:e.slice(t+1)}}var $=new Set;async function v(e,t){let n=k(e);if(!n.entry||n.entry.length===0||!n.outDir)throw new C("Nothing to build. Please make sure you have provided a proper bunup configuration or cli arguments.");if(n.clean)ue(t,n.outDir);B(n.silent);let{packageJson:r,path:s}=await Be(t);if(r&&s)u.cli(`Using package.json: ${y(s,2)}`,{muted:!0,identifier:n.name,once:`${s}:${n.name}`});let o=P(n.entry),i=r?.type,a=A(n,r),l=M(n);if(!n.dtsOnly){let c=[_e(a,l)],f=n.format.flatMap((m)=>o.map((p)=>{return mt(n,t,p,m,i,c)}));await Promise.all(f)}if(n.dts||n.dtsOnly){let c=await Le(t,n.preferredTsconfigPath);if(c.path)u.cli(`Using tsconfig: ${y(c.path,2)}`,{muted:!0,identifier:n.name,once:`${c.path}:${n.name}`});let f=n.format.filter((p)=>{if(p==="iife"&&!S(i)&&n.format.includes("cjs"))return!1;return!0}),m=typeof n.dts==="object"&&n.dts.entry?P(n.dts.entry):$e(o);try{await Promise.all(m.map(async(p)=>{let W=await Se(t,p.path,n,c,r);await Promise.all(f.map(async(ee)=>{let We=n.outputExtension?.({format:ee,packageType:i,options:n,entry:p}).dts??le(ee,i),H=`${t}/${n.outDir}/${p.name}${We}`;await Bun.write(H,W);let He=Bun.file(H).size||0;u.progress("DTS",y(H),X(He),n.name)}))}))}catch(p){throw new g(h(p))}}if(n.onBuildSuccess)await n.onBuildSuccess(n)}async function mt(e,t,n,r,s,o){let i=e.outputExtension?.({format:r,packageType:s,options:e,entry:n}).js??ae(r,s),a=await Bun.build({entrypoints:[`${t}/${n.path}`],format:r,naming:{entry:Te(n.name,i)},splitting:Me(e.splitting,r),bytecode:Ie(e.bytecode,r),define:Ae(e.define,e.shims,e.env,r),minify:De(e),outdir:`${t}/${e.outDir}`,target:e.target,sourcemap:e.sourcemap,loader:e.loader,drop:e.drop,banner:e.banner,footer:e.footer,publicPath:e.publicPath,env:je(e.env),plugins:[...o,ke({format:r,target:e.target,shims:e.shims}),...e.bunBuildPlugins??[]],throw:!1});if(!a.success)for(let f of a.logs){if(f.level==="error")throw new C(f.message);if(f.level==="warning")u.warn(f.message);else if(f.level==="info")u.info(f.message)}let l=`${t}/${e.outDir}/${n.name}${i}`,c=Bun.file(l).size||0;u.progress(r.toUpperCase(),y(l),X(c),e.name)}var U="0.4.36";var ve="https://bunup.arshadyaseen.com/documentation/#cli-options";function d(e){return(t,n)=>{n[e]=t===!0||t==="true"}}function x(e){return(t,n)=>{if(typeof t==="string")n[e]=t;else throw new b(`Option --${e} requires a string value`)}}function Q(e){return(t,n)=>{if(typeof t==="string")n[e]=t.split(",");else throw new b(`Option --${e} requires a string value`)}}function gt(e){return(t,n)=>{if(typeof t==="boolean")n[e]=t;else if(typeof t==="string")if(t.toLowerCase()==="true"||t.toLowerCase()==="false")n[e]=t.toLowerCase()==="true";else n[e]=t;else throw new b(`Option --${e} requires a boolean or string value`)}}function ht(){console.log(`
35
35
  Bunup - An extremely fast, zero-config bundler for JavaScript and TypeScript, powered by Bun.
36
36
  `),console.log("For more information on available options, visit:"),console.log(`\x1B[36m\x1B[4m${ve}\x1B[0m
37
- `),process.exit(0)}function bt(){console.log(U),process.exit(0)}var Ue={name:{flags:["n","name"],handler:x("name")},format:{flags:["f","format"],handler:Q("format")},outDir:{flags:["o","out-dir"],handler:x("outDir")},minify:{flags:["m","minify"],handler:d("minify")},watch:{flags:["w","watch"],handler:d("watch")},dts:{flags:["d","dts"],handler:d("dts")},banner:{flags:["bn","banner"],handler:x("banner")},footer:{flags:["ft","footer"],handler:x("footer")},external:{flags:["e","external"],handler:Q("external")},sourcemap:{flags:["sm","sourcemap"],handler:gt("sourcemap")},target:{flags:["t","target"],handler:x("target")},minifyWhitespace:{flags:["mw","minify-whitespace"],handler:d("minifyWhitespace")},minifyIdentifiers:{flags:["mi","minify-identifiers"],handler:d("minifyIdentifiers")},minifySyntax:{flags:["ms","minify-syntax"],handler:d("minifySyntax")},clean:{flags:["c","clean"],handler:d("clean")},splitting:{flags:["s","splitting"],handler:d("splitting")},noExternal:{flags:["ne","no-external"],handler:Q("noExternal")},preferredTsconfigPath:{flags:["tsconfig","preferred-tsconfig-path"],handler:x("preferredTsconfigPath")},bytecode:{flags:["bc","bytecode"],handler:d("bytecode")},dtsOnly:{flags:["do","dts-only"],handler:d("dtsOnly")},silent:{flags:["silent"],handler:d("silent")},config:{flags:["config"],handler:x("config")},publicPath:{flags:["pp","public-path"],handler:x("publicPath")},env:{flags:["env"],handler:x("env")},shims:{flags:["shims"],handler:d("shims")},onSuccess:{flags:["onSuccess"],handler:x("onSuccess")},entry:{flags:["entry"],handler:(e,t,n)=>{if(typeof e!=="string")throw new b(`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=_(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:()=>ht()},version:{flags:["v","version"],handler:()=>bt()}},N={};for(let e of Object.values(Ue))for(let t of e.flags)N[t]=e.handler;function Ne(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=N[i];if(l)l(o,t,a);else throw new b(`Unknown option: --${s}`)}else{let i=N[s];if(i)i(o,t);else throw new b(`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=N[s];if(a)a(i,t);else throw new b(`Unknown option: -${s}`)}else Ue.entry.handler(r,t,void 0)}return t}import{loadConfig as wt}from"coffi";import F from"node:path";import xt from"chokidar";async function Fe(e,t){let n=new Set,r=k(e),s=P(r.entry);for(let l of s){let c=F.resolve(t,l.path),f=F.dirname(c);n.add(f)}let o=xt.watch(Array.from(n),{persistent:!0,awaitWriteFinish:{stabilityThreshold:100,pollInterval:50},ignoreInitial:!0,atomic:!0,ignorePermissionErrors:!0,ignored:[/[\\/]\.git[\\/]/,/[\\/]node_modules[\\/]/,F.join(t,r.outDir)]}),i=!1,a=async(l=!1)=>{if(i)return;i=!0;try{let c=performance.now();if(await v({...r,entry:s.map((f)=>f.path),clean:!1},t),!l)u.cli(`\uD83D\uDCE6 Rebuild finished in ${D(performance.now()-c)}`);await Z()}catch(c){q(c)}finally{i=!1}};o.on("change",(l)=>{let c=F.relative(t,l);u.cli(`File changed: ${c}`,{muted:!0,once:c}),a()}),o.on("error",(l)=>{throw new L(`Watcher error: ${h(l)}`)}),await a(!0)}async function Ct(e=Bun.argv.slice(2)){let t=Ne(e);B(t.silent);let n=process.cwd(),{config:r,filepath:s}=await wt({name:"bunup.config",extensions:[".ts",".js",".mjs",".cjs"],maxDepth:1,preferredPath:t.config}),o=!r?[{rootDir:n,options:t}]:await Pe(r,n);if(u.cli(`Using bunup v${U} and bun v${Bun.version}`,{muted:!0}),s)u.cli(`Using config file: ${y(s,2)}`,{muted:!0});let i=performance.now();u.cli("Build started"),await Promise.all(o.flatMap(({options:c,rootDir:f})=>{return oe(c).map(async(m)=>{let W={...m,...Et(t)};return Ot(W,f)})}));let a=performance.now()-i,l=D(a);if(u.cli(`\u26A1\uFE0F Build completed in ${l}`),await Z(),t.watch)u.cli("\uD83D\uDC40 Watching for file changes");if(t.onSuccess)u.cli(`Running command: ${t.onSuccess}`,{muted:!0}),yt(t.onSuccess,[],{nodeOptions:{shell:!0,stdio:"inherit"}});if(!t.watch)process.exit(0)}function Et(e){return{...e,onSuccess:void 0,config:void 0}}async function Z(){if($.size>0)await Oe($),$.clear()}async function Ot(e,t){if(e.watch)await Fe(e,t);else await v(e,t)}Ct().catch((e)=>ne(e));export{Z as validateDtsFiles,Ct as main};
37
+ `),process.exit(0)}function bt(){console.log(U),process.exit(0)}var Ue={name:{flags:["n","name"],handler:x("name")},format:{flags:["f","format"],handler:Q("format")},outDir:{flags:["o","out-dir"],handler:x("outDir")},minify:{flags:["m","minify"],handler:d("minify")},watch:{flags:["w","watch"],handler:d("watch")},dts:{flags:["d","dts"],handler:d("dts")},banner:{flags:["bn","banner"],handler:x("banner")},footer:{flags:["ft","footer"],handler:x("footer")},external:{flags:["e","external"],handler:Q("external")},sourcemap:{flags:["sm","sourcemap"],handler:gt("sourcemap")},target:{flags:["t","target"],handler:x("target")},minifyWhitespace:{flags:["mw","minify-whitespace"],handler:d("minifyWhitespace")},minifyIdentifiers:{flags:["mi","minify-identifiers"],handler:d("minifyIdentifiers")},minifySyntax:{flags:["ms","minify-syntax"],handler:d("minifySyntax")},clean:{flags:["c","clean"],handler:d("clean")},splitting:{flags:["s","splitting"],handler:d("splitting")},noExternal:{flags:["ne","no-external"],handler:Q("noExternal")},preferredTsconfigPath:{flags:["tsconfig","preferred-tsconfig-path"],handler:x("preferredTsconfigPath")},bytecode:{flags:["bc","bytecode"],handler:d("bytecode")},dtsOnly:{flags:["do","dts-only"],handler:d("dtsOnly")},silent:{flags:["silent"],handler:d("silent")},config:{flags:["config"],handler:x("config")},publicPath:{flags:["pp","public-path"],handler:x("publicPath")},env:{flags:["env"],handler:x("env")},shims:{flags:["shims"],handler:d("shims")},onSuccess:{flags:["onSuccess"],handler:x("onSuccess")},entry:{flags:["entry"],handler:(e,t,n)=>{if(typeof e!=="string")throw new b(`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=_(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:()=>ht()},version:{flags:["v","version"],handler:()=>bt()}},N={};for(let e of Object.values(Ue))for(let t of e.flags)N[t]=e.handler;function Ne(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=N[i];if(l)l(o,t,a);else throw new b(`Unknown option: --${s}`)}else{let i=N[s];if(i)i(o,t);else throw new b(`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=N[s];if(a)a(i,t);else throw new b(`Unknown option: -${s}`)}else Ue.entry.handler(r,t,void 0)}return t}import{loadConfig as wt}from"coffi";import F from"node:path";import xt from"chokidar";async function Fe(e,t){let n=new Set,r=k(e),s=P(r.entry);for(let l of s){let c=F.resolve(t,l.path),f=F.dirname(c);n.add(f)}let o=xt.watch(Array.from(n),{persistent:!0,awaitWriteFinish:{stabilityThreshold:100,pollInterval:50},ignoreInitial:!0,atomic:!0,ignorePermissionErrors:!0,ignored:[/[\\/]\.git[\\/]/,/[\\/]node_modules[\\/]/,F.join(t,r.outDir)]}),i=!1,a=async(l=!1)=>{if(i)return;i=!0;try{let c=performance.now();if(await v({...r,entry:s.map((f)=>f.path),clean:!1},t),!l)u.cli(`\uD83D\uDCE6 Rebuild finished in ${D(performance.now()-c)}`);await Z()}catch(c){q(c)}finally{i=!1}};o.on("change",(l)=>{let c=F.relative(t,l);u.cli(`File changed: ${c}`,{muted:!0,once:c}),a()}),o.on("error",(l)=>{throw new L(`Watcher error: ${h(l)}`)}),await a(!0)}async function Ct(e=Bun.argv.slice(2)){let t=Ne(e);B(t.silent);let n=process.cwd(),{config:r,filepath:s}=await wt({name:"bunup.config",extensions:[".ts",".js",".mjs",".cjs"],maxDepth:1,preferredPath:t.config}),o=!r?[{rootDir:n,options:t}]:await Pe(r,n);if(u.cli(`Using bunup v${U} and bun v${Bun.version}`,{muted:!0}),s)u.cli(`Using config file: ${y(s,2)}`,{muted:!0});let i=performance.now();u.cli("Build started"),await Promise.all(o.flatMap(({options:c,rootDir:f})=>{return oe(c).map(async(p)=>{let W={...p,...Et(t)};return Ot(W,f)})}));let a=performance.now()-i,l=D(a);if(u.cli(`\u26A1\uFE0F Build completed in ${l}`),await Z(),t.watch)u.cli("\uD83D\uDC40 Watching for file changes");if(t.onSuccess)u.cli(`Running command: ${t.onSuccess}`,{muted:!0}),yt(t.onSuccess,[],{nodeOptions:{shell:!0,stdio:"inherit"}});if(!t.watch)process.exit(0)}function Et(e){return{...e,onSuccess:void 0,config:void 0}}async function Z(){if($.size>0)await Oe($),$.clear()}async function Ot(e,t){if(e.watch)await Fe(e,t);else await v(e,t)}Ct().catch((e)=>ne(e));export{Z as validateDtsFiles};
package/package.json CHANGED
@@ -1,15 +1,16 @@
1
1
  {
2
2
  "name": "bunup",
3
- "version": "0.4.35",
3
+ "version": "0.4.36",
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",
7
7
  "module": "./build/index.mjs",
8
8
  "files": [
9
- "build"
9
+ "build",
10
+ "bin"
10
11
  ],
11
12
  "bin": {
12
- "bunup": "build/cli.mjs"
13
+ "bunup": "./bin/bunup.js"
13
14
  },
14
15
  "devDependencies": {
15
16
  "@biomejs/biome": "^1.9.4",
@@ -20,7 +21,7 @@
20
21
  "bunup": "^0.4.23",
21
22
  "husky": "^9.1.7",
22
23
  "typescript": "^5.8.3",
23
- "create-bunup": "0.4.35"
24
+ "create-bunup": "0.4.36"
24
25
  },
25
26
  "peerDependencies": {
26
27
  "typescript": ">=4.5.0"