bunup 0.3.58 → 0.3.60
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 +2 -2
- package/build/index.js +1 -1
- package/build/index.mjs +1 -1
- package/package.json +4 -4
package/build/cli.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
2
|
// @bun
|
|
3
|
-
import{build as Yt}from"rolldown";import{dts as vt}from"rolldown-plugin-
|
|
3
|
+
import{build as Yt}from"rolldown";import{dts as vt}from"rolldown-plugin-dts";class C extends Error{constructor(t){super(t);this.name="BunupError"}}class h extends C{constructor(t){super(t);this.name="BunupBuildError"}}class d extends C{constructor(t){super(t);this.name="BunupDTSBuildError"}}class g extends C{constructor(t){super(t);this.name="BunupCLIError"}}class D extends C{constructor(t){super(t);this.name="BunupWatchError"}}var p=(t)=>{if(t instanceof Error)return t.message;return String(t)},Ut=[{pattern:/Could not resolve: "bun"/i,errorType:"BUILD ERROR",solution:`By default, bunup targets the node environment. To use Bun-specific features, set the target to bun:
|
|
4
4
|
|
|
5
5
|
1. In your config file:
|
|
6
6
|
\`\`\`
|
|
@@ -34,7 +34,7 @@ To fix this, use named entries in your configuration:
|
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
See: https://bunup.arshadyaseen.com/#named-entries`,{muted:!0,verticalSpace:!0}),n.push({name:u,path:o})}else n.push({name:e,path:o}),s.add(e),i[e]=o}if(Array.isArray(t))for(let e of t){let o=_(e);r(o,e)}else if(typeof t==="object")Object.entries(t).forEach(([e,o])=>{r(e,o)});else{let e=_(t);r(e,t)}return n}function yt(t,n){return`[dir]/${t}${n}`}import{loadTsConfig as kt}from"load-tsconfig";function Ct(t){try{return kt(".",t)}catch(n){return a.warn(`Failed to load tsconfig: ${p(n)}`),{path:t,data:{},files:[]}}}import H from"node:path";async function Mt(t){let n=[".ts",".js",".mjs",".cjs",".mts",".cts",".json",".jsonc"];for(let s of n){let i=H.join(t,`bunup.config${s}`);try{if(!await Bun.file(i).exists())continue;let e=await tn(i,s);if(!e)continue;return{configs:en(e,t),configFilePath:i}}catch(r){throw new h(`Failed to load config from ${i}: ${p(r)}`)}}return{configs:[],configFilePath:""}}async function tn(t,n){if(n===".json"||n===".jsonc")return nn(t);return sn(t)}async function nn(t){try{let n=await Bun.file(t).text(),s=JSON.parse(n);return s.bunup||s}catch(n){throw new Error(`Invalid JSON in config file. ${p(n)}`)}}async function sn(t){try{let n=await import(`file://${t}`),s=n.default||n;if(!s)return a.warn(`No export found in ${t}. Make sure you're exporting your configuration.`),{};return s}catch(n){throw new Error(`Failed to import config file. ${p(n)}`)}}function en(t,n){let s=[];if(rn(t))on(t,n,s);else if(Array.isArray(t))cn(t,n,s);else if(t&&typeof t==="object")s.push({options:t,rootDir:n});else throw new Error("Invalid configuration format. Expected an object, array, or workspace configuration.");return s}function rn(t){return Array.isArray(t)&&t.length>0&&t.every((n)=>typeof n==="object"&&n!==null&&("name"in n)&&("root"in n)&&("config"in n))}function on(t,n,s){for(let i of t){let r=H.resolve(n,i.root);if(Array.isArray(i.config))for(let e of i.config)s.push({options:{name:i.name,...e},rootDir:r});else s.push({options:{name:i.name,...i.config},rootDir:r})}}function cn(t,n,s){for(let i of t){if(!i||typeof i!=="object")throw new Error("Invalid configuration item. Expected an object.");s.push({options:i,rootDir:n})}}async function Rt(t){let n=H.join(t,"package.json");try{if(!await Bun.file(n).exists())return{packageJson:null,path:n};let i=await Bun.file(n).text();return{packageJson:JSON.parse(i),path:n}}catch(s){return a.warn(`Failed to load package.json at ${n}: ${p(s)}`),{packageJson:null,path:n}}}function Et(t,n){return{name:"bunup:external-plugin",setup(s){s.onResolve({filter:/.*/},(i)=>{let r=i.path;if(t.some((o)=>o.test(r))&&!n.some((o)=>o.test(r)))return{path:r,external:!0};return null})}}}var E=new Set;async function B(t,n){if(!t.entry||t.entry.length===0||!t.outDir)throw new h("Nothing to build. Please make sure you have provided a proper bunup configuration or cli arguments.");let{packageJson:s,path:i}=await Rt(n);if(s)a.cli(`Using package.json: ${x(i,2)}`,{muted:!0,once:i,identifier:t.name});let r=s?.type,e=F(t,s),o=U(t),c=[Et(e,o)],u=I(t.entry),f=nt(t,n),m=t.format.flatMap((l)=>u.map((b)=>{return un(t,n,b,l,r,c,f)}));if(await Promise.all(m),t.dts){let l=Ct(t.preferredTsconfigPath);if(l.path)a.cli(`Using tsconfig: ${x(l.path,2)}`,{muted:!0,once:l.path,identifier:t.name});let b=t.format.filter((y)=>{if(y==="iife"&&!S(r)&&t.format.includes("cjs"))return!1;return!0}),Tt=typeof t.dts==="object"&&t.dts.entry?I(t.dts.entry):u;try{await Promise.all(Tt.map(async(y)=>{let Dt=await $t(n,y.path,t,l,s);await Promise.all(b.map(async(St)=>{let Lt=rt(St,r),W=`${n}/${t.outDir}/${y.name}${Lt}`;await Bun.write(W,Dt);let Ft=Bun.file(W).size||0;a.progress("DTS",x(W),J(Ft),t.name)}))}))}catch(y){throw new d(p(y))}}}async function un(t,n,s,i,r,e,o){let c=et(i,r),u=await Bun.build({...o,entrypoints:[`${n}/${s.path}`],format:i,naming:{entry:yt(s.name,c)},splitting:ct(t.splitting,i),plugins:e,throw:!1});if(!u.success)u.logs.forEach((l)=>{if(l.level==="error")throw new h(l.message);else if(l.level==="warning")a.warn(l.message);else if(l.level==="info")a.info(l.message)});let f=`${n}/${t.outDir}/${s.name}${c}`,m=Bun.file(f).size||0;a.progress(i.toUpperCase(),x(f),J(m),t.name)}var V="0.3.
|
|
37
|
+
See: https://bunup.arshadyaseen.com/#named-entries`,{muted:!0,verticalSpace:!0}),n.push({name:u,path:o})}else n.push({name:e,path:o}),s.add(e),i[e]=o}if(Array.isArray(t))for(let e of t){let o=_(e);r(o,e)}else if(typeof t==="object")Object.entries(t).forEach(([e,o])=>{r(e,o)});else{let e=_(t);r(e,t)}return n}function yt(t,n){return`[dir]/${t}${n}`}import{loadTsConfig as kt}from"load-tsconfig";function Ct(t){try{return kt(".",t)}catch(n){return a.warn(`Failed to load tsconfig: ${p(n)}`),{path:t,data:{},files:[]}}}import H from"node:path";async function Mt(t){let n=[".ts",".js",".mjs",".cjs",".mts",".cts",".json",".jsonc"];for(let s of n){let i=H.join(t,`bunup.config${s}`);try{if(!await Bun.file(i).exists())continue;let e=await tn(i,s);if(!e)continue;return{configs:en(e,t),configFilePath:i}}catch(r){throw new h(`Failed to load config from ${i}: ${p(r)}`)}}return{configs:[],configFilePath:""}}async function tn(t,n){if(n===".json"||n===".jsonc")return nn(t);return sn(t)}async function nn(t){try{let n=await Bun.file(t).text(),s=JSON.parse(n);return s.bunup||s}catch(n){throw new Error(`Invalid JSON in config file. ${p(n)}`)}}async function sn(t){try{let n=await import(`file://${t}`),s=n.default||n;if(!s)return a.warn(`No export found in ${t}. Make sure you're exporting your configuration.`),{};return s}catch(n){throw new Error(`Failed to import config file. ${p(n)}`)}}function en(t,n){let s=[];if(rn(t))on(t,n,s);else if(Array.isArray(t))cn(t,n,s);else if(t&&typeof t==="object")s.push({options:t,rootDir:n});else throw new Error("Invalid configuration format. Expected an object, array, or workspace configuration.");return s}function rn(t){return Array.isArray(t)&&t.length>0&&t.every((n)=>typeof n==="object"&&n!==null&&("name"in n)&&("root"in n)&&("config"in n))}function on(t,n,s){for(let i of t){let r=H.resolve(n,i.root);if(Array.isArray(i.config))for(let e of i.config)s.push({options:{name:i.name,...e},rootDir:r});else s.push({options:{name:i.name,...i.config},rootDir:r})}}function cn(t,n,s){for(let i of t){if(!i||typeof i!=="object")throw new Error("Invalid configuration item. Expected an object.");s.push({options:i,rootDir:n})}}async function Rt(t){let n=H.join(t,"package.json");try{if(!await Bun.file(n).exists())return{packageJson:null,path:n};let i=await Bun.file(n).text();return{packageJson:JSON.parse(i),path:n}}catch(s){return a.warn(`Failed to load package.json at ${n}: ${p(s)}`),{packageJson:null,path:n}}}function Et(t,n){return{name:"bunup:external-plugin",setup(s){s.onResolve({filter:/.*/},(i)=>{let r=i.path;if(t.some((o)=>o.test(r))&&!n.some((o)=>o.test(r)))return{path:r,external:!0};return null})}}}var E=new Set;async function B(t,n){if(!t.entry||t.entry.length===0||!t.outDir)throw new h("Nothing to build. Please make sure you have provided a proper bunup configuration or cli arguments.");let{packageJson:s,path:i}=await Rt(n);if(s)a.cli(`Using package.json: ${x(i,2)}`,{muted:!0,once:i,identifier:t.name});let r=s?.type,e=F(t,s),o=U(t),c=[Et(e,o)],u=I(t.entry),f=nt(t,n),m=t.format.flatMap((l)=>u.map((b)=>{return un(t,n,b,l,r,c,f)}));if(await Promise.all(m),t.dts){let l=Ct(t.preferredTsconfigPath);if(l.path)a.cli(`Using tsconfig: ${x(l.path,2)}`,{muted:!0,once:l.path,identifier:t.name});let b=t.format.filter((y)=>{if(y==="iife"&&!S(r)&&t.format.includes("cjs"))return!1;return!0}),Tt=typeof t.dts==="object"&&t.dts.entry?I(t.dts.entry):u;try{await Promise.all(Tt.map(async(y)=>{let Dt=await $t(n,y.path,t,l,s);await Promise.all(b.map(async(St)=>{let Lt=rt(St,r),W=`${n}/${t.outDir}/${y.name}${Lt}`;await Bun.write(W,Dt);let Ft=Bun.file(W).size||0;a.progress("DTS",x(W),J(Ft),t.name)}))}))}catch(y){throw new d(p(y))}}}async function un(t,n,s,i,r,e,o){let c=et(i,r),u=await Bun.build({...o,entrypoints:[`${n}/${s.path}`],format:i,naming:{entry:yt(s.name,c)},splitting:ct(t.splitting,i),plugins:e,throw:!1});if(!u.success)u.logs.forEach((l)=>{if(l.level==="error")throw new h(l.message);else if(l.level==="warning")a.warn(l.message);else if(l.level==="info")a.info(l.message)});let f=`${n}/${t.outDir}/${s.name}${c}`,m=Bun.file(f).size||0;a.progress(i.toUpperCase(),x(f),J(m),t.name)}var V="0.3.60";var Pt="https://bun.sh/docs/installation",Ot="https://bunup.arshadyaseen.com/#cli-options";function w(t){return(n,s)=>{s[t]=n===!0?!0:n==="true"}}function $(t){return(n,s)=>{if(typeof n==="string")s[t]=n;else throw new g(`Option --${t} requires a string value`)}}function jt(t){return(n,s)=>{if(typeof n==="string")s[t]=n.split(",");else throw new g(`Option --${t} requires a string value`)}}function fn(){console.log(`
|
|
38
38
|
Bunup - An extremely fast, zero-config bundler for JavaScript and TypeScript, powered by Bun.
|
|
39
39
|
`),console.log("For more information on available options, visit:"),console.log(`\x1B[36m\x1B[4m${Ot}\x1B[0m
|
|
40
40
|
`),process.exit(0)}function ln(){console.log(V),process.exit(0)}var pn={name:{flags:["n","name"],handler:$("name")},format:{flags:["f","format"],handler:(t,n)=>{if(typeof t==="string")n.format=t.split(",");else throw new g("Option --format requires a string value")}},outDir:{flags:["o","out-dir"],handler:$("outDir")},minify:{flags:["m","minify"],handler:w("minify")},watch:{flags:["w","watch"],handler:w("watch")},dts:{flags:["d","dts"],handler:w("dts")},banner:{flags:["b","banner"],handler:$("banner")},footer:{flags:["f","footer"],handler:$("footer")},external:{flags:["e","external"],handler:jt("external")},sourcemap:{flags:["sm","sourcemap"],handler:$("sourcemap")},target:{flags:["t","target"],handler:$("target")},minifyWhitespace:{flags:["mw","minify-whitespace"],handler:w("minifyWhitespace")},minifyIdentifiers:{flags:["mi","minify-identifiers"],handler:w("minifyIdentifiers")},minifySyntax:{flags:["ms","minify-syntax"],handler:w("minifySyntax")},clean:{flags:["c","clean"],handler:w("clean")},splitting:{flags:["s","splitting"],handler:w("splitting")},noExternal:{flags:["ne","no-external"],handler:jt("noExternal")},preferredTsconfigPath:{flags:["tsconfig","preferred-tsconfig-path"],handler:$("preferredTsconfigPath")}},mn={resolveDts:{flags:["rd","resolve-dts"],handler:(t,n)=>{if(!n.dts)n.dts={};if(typeof n.dts==="boolean")n.dts={};if(typeof t==="string")if(t==="true"||t==="false")n.dts.resolve=t==="true";else n.dts.resolve=t.split(",");else n.dts.resolve=!0}}},dn={help:{flags:["h","help"],handler:()=>fn()},version:{flags:["v","version"],handler:()=>ln()}},T={};for(let t of Object.values(pn))if(t)for(let n of t.flags)T[n]=t.handler;for(let t of Object.values(mn))for(let n of t.flags)T[n]=t.handler;for(let t of Object.values(dn))for(let n of t.flags)T[n]=t.handler;function At(t){let n={},s={},i=0;while(i<t.length){let r=t[i];if(r.startsWith("--")){let e,o;if(r.includes("=")){let[c,u]=r.slice(2).split("=",2);e=c,o=u}else{e=r.slice(2);let c=t[i+1];if(o=c&&!c.startsWith("-")?c:!0,typeof o==="string")i++}if(e==="entry")if(typeof o==="string"){let c=_(o);if(s[c])a.warn(`Duplicate entry name '${c}' derived from '${o}'. Overwriting previous entry.`);s[c]=o}else throw new g("Option --entry requires a string value");else if(e.startsWith("entry.")){let c=e.slice(6);if(typeof o==="string"){if(s[c])a.warn(`Duplicate entry name '${c}' provided via --entry.${c}. Overwriting previous entry.`);s[c]=o}else throw new g(`Option --entry.${c} requires a string value`)}else{let c=T[e];if(c)c(o,n);else throw new g(`Unknown option: --${e}`)}}else if(r.startsWith("-")){let e=r.slice(1),o=t[i+1],c=o&&!o.startsWith("-")?o:!0;if(typeof c==="string")i++;let u=T[e];if(u)u(c,n);else throw new g(`Unknown option: -${e}`)}else{let e=_(r);if(s[e])a.warn(`Duplicate entry name '${e}' derived from positional argument '${r}'. Overwriting previous entry.`);s[e]=r}i++}if(Object.keys(s).length>0)n.entry=s;return n}(()=>{if(typeof Bun==="undefined")throw new g(`Bunup requires Bun to run.
|
package/build/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var Ot=require("node:module");var Mt=Object.create;var{getPrototypeOf:Dt,defineProperty:C,getOwnPropertyNames:G,getOwnPropertyDescriptor:At}=Object,V=Object.prototype.hasOwnProperty;var x=(t,n,e)=>{e=t!=null?Mt(Dt(t)):{};let s=n||!t||!t.__esModule?C(e,"default",{value:t,enumerable:!0}):e;for(let i of G(t))if(!V.call(s,i))C(s,i,{get:()=>t[i],enumerable:!0});return s},U=new WeakMap,jt=(t)=>{var n=U.get(t),e;if(n)return n;if(n=C({},"__esModule",{value:!0}),t&&typeof t==="object"||typeof t==="function")G(t).map((s)=>!V.call(n,s)&&C(n,s,{get:()=>t[s],enumerable:!(e=At(t,s))||e.enumerable}));return U.set(t,n),n};var vt=(t,n)=>{for(var e in n)C(t,e,{get:n[e],enumerable:!0,configurable:!0,set:(s)=>n[e]=()=>s})};var Vt={};vt(Vt,{defineWorkspace:()=>B,defineConfig:()=>X,build:()=>$t});module.exports=jt(Vt);function X(t){return t}function B(t){return t}var it=require("rolldown"),ot=require("rolldown-plugin-
|
|
1
|
+
var Ot=require("node:module");var Mt=Object.create;var{getPrototypeOf:Dt,defineProperty:C,getOwnPropertyNames:G,getOwnPropertyDescriptor:At}=Object,V=Object.prototype.hasOwnProperty;var x=(t,n,e)=>{e=t!=null?Mt(Dt(t)):{};let s=n||!t||!t.__esModule?C(e,"default",{value:t,enumerable:!0}):e;for(let i of G(t))if(!V.call(s,i))C(s,i,{get:()=>t[i],enumerable:!0});return s},U=new WeakMap,jt=(t)=>{var n=U.get(t),e;if(n)return n;if(n=C({},"__esModule",{value:!0}),t&&typeof t==="object"||typeof t==="function")G(t).map((s)=>!V.call(n,s)&&C(n,s,{get:()=>t[s],enumerable:!(e=At(t,s))||e.enumerable}));return U.set(t,n),n};var vt=(t,n)=>{for(var e in n)C(t,e,{get:n[e],enumerable:!0,configurable:!0,set:(s)=>n[e]=()=>s})};var Vt={};vt(Vt,{defineWorkspace:()=>B,defineConfig:()=>X,build:()=>$t});module.exports=jt(Vt);function X(t){return t}function B(t){return t}var it=require("rolldown"),ot=require("rolldown-plugin-dts");class S extends Error{constructor(t){super(t);this.name="BunupError"}}class w extends S{constructor(t){super(t);this.name="BunupBuildError"}}class p extends S{constructor(t){super(t);this.name="BunupDTSBuildError"}}var m=(t)=>{if(t instanceof Error)return t.message;return String(t)};var St=x(require("node:fs/promises")),Lt=x(require("node:path"));function H(t,n){return{outdir:`${n}/${t.outDir}`,minify:It(t),target:t.target,splitting:t.splitting,sourcemap:t.sourcemap,define:t.define,loader:t.loader,drop:t.drop,banner:t.banner,footer:t.footer}}function It(t){let{minify:n,minifyWhitespace:e,minifyIdentifiers:s,minifySyntax:i}=t,r=n===!0;return{whitespace:e??r,identifiers:s??r,syntax:i??r}}function L(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Y(t=8){return Math.random().toString(36).substring(2,2+t)}function J(t,n){switch(t){case"esm":return".mjs";case"cjs":return M(n)?".cjs":".js";case"iife":return".global.js"}}function q(t,n){switch(t){case"esm":return".d.mts";case"cjs":return M(n)?".d.cts":".d.ts";case"iife":return".d.ts"}}function M(t){return t==="module"}function K(t){if(!t)return[];return Array.from(new Set([...Object.keys(t.dependencies||{}),...Object.keys(t.peerDependencies||{})]))}function Q(t,n){return t===void 0?n==="esm":t}function _(t){if(t===0)return"0 B";let n=["B","KB","MB","GB"],e=Math.floor(Math.log(t)/Math.log(1024));if(e===0)return`${t} ${n[e]}`;return`${(t/Math.pow(1024,e)).toFixed(2)} ${n[e]}`}function $(t,n=3){return t.split("/").slice(-n).join("/")}function Z(t){return t.map((n)=>typeof n==="string"?new RegExp(`^${L(n)}($|\\/|\\\\)`):n)}function D(t,n){return Z(t.external||[]).concat(K(n).map((e)=>new RegExp(`^${L(e)}($|\\/|\\\\)`)))}function A(t){return Z(t.noExternal||[])}var et=x(require("node:path")),st=require("oxc-resolver");var h=x(require("node:path"));var P="\x00dts:",z=(t,n,e)=>{return{name:"bunup:virtual-dts",async resolveId(s,i){if(N(s))return s;if(!i||!N(i))return null;let r=await j(s,n,e,R(i));if(!r)return null;let o=y(r);if(t.has(o))return v(o);return null},load(s){if(s.startsWith(P)){let i=R(s),r=t.get(i);if(r)return k.add(i),r}return null}}};function y(t){return t.replace(/\.tsx?$/,".d.ts")}function T(t){let n=h.default.dirname(t.path||"");return t.data?.compilerOptions?.baseUrl?h.default.resolve(n,t.data.compilerOptions.baseUrl):n}function tt(t){let n=new Map,e=t.data?.compilerOptions?.paths;if(!e)return n;let s=T(t);for(let[i,r]of Object.entries(e))if(Array.isArray(r)&&r.length){let o=i.replace(/\*/g,"(.*)"),a=r[0].replace(/\*/g,"$1");n.set(`^${o}$`,h.default.join(s,a))}return n}function _t(t,n,e){for(let[s,i]of n){let r=new RegExp(s),o=t.match(r);if(o)return i.replace("$1",o[1]||"")}return e?h.default.join(e,t):null}async function Nt(t){let n=["",".ts",".tsx","/index.ts","/index.tsx"];for(let e of n){let s=`${t}${e}`;if(await Bun.file(s).exists()&&(s.endsWith(".ts")||s.endsWith(".tsx")))return s}return null}function j(t,n,e,s){let i=t.startsWith(".")?h.default.resolve(h.default.dirname(s||""),t):_t(t,n,e);if(!i)return Promise.resolve(null);return Nt(i)}function N(t){return t.startsWith(P)}function R(t){return t.replace(P,"")}function v(t){return`${P}${t}`}var nt;function rt(t){return{name:"bunup:types-resolve",buildStart(){nt||=new st.ResolverFactory({mainFields:["types"],conditionNames:["types","typings","import","require"],extensions:[".d.ts",".ts"],modules:["node_modules","node_modules/@types"]})},async resolveId(n,e){if(e=e?R(e):void 0,/\0/.test(n))return;if(t){if(!t.some((o)=>{let a=!1;if(typeof o==="string")a=o===n||!!(e&&e.includes(o));else a=o.test(n)||!!(e&&o.test(e));return a}))return}let s=e?et.default.dirname(e):process.cwd(),{path:i}=await nt.async(s,n);if(!i)return;if(/[cm]?jsx?$/.test(i)){let r=i.replace(/\.([cm]?)jsx?$/,".d.$1ts");return await Bun.file(r).exists()?r:void 0}return i}}}async function at(t,n,e,s,i,r){let o=y(t),a=v(o),f=D(e,s),l=A(e);try{let{output:g}=await it.build({input:a,output:{dir:e.outDir,inlineDynamicImports:!0},write:!1,onwarn(c,d){if(["UNRESOLVED_IMPORT","CIRCULAR_DEPENDENCY","EMPTY_BUNDLE"].includes(c.code??""))return;d(c)},plugins:[z(n,i,r),typeof e.dts==="object"&&"resolve"in e.dts&&rt(typeof e.dts.resolve==="boolean"?void 0:e.dts.resolve),ot.dts()],external:(c)=>f.some((d)=>d.test(c))&&!l.some((d)=>d.test(c))});if(!g[0]?.code)throw new p("Generated bundle is empty");return g[0].code}catch(g){throw new p(`DTS bundling failed: ${m(g)}`)}}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(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:n,message:e,size:s,identifier:i,muted:r}){let o=" ".repeat(Math.max(0,this.MAX_LABEL_LENGTH-n.length)),a=r?`\x1B[38;5;${this.colors.info}m${e}\x1B[0m`:e;if(s){let[l,...g]=a.split(" "),c=" ".repeat(Math.max(0,this.MAX_MESSAGE_LENGTH-l.length)),d=i?` \x1B[48;5;${t};38;5;0m ${i} \x1B[0m`:"";return`\x1B[38;5;${t}m${n}\x1B[0m ${o}${l}${c} \x1B[38;5;${this.colors.size}m${s}\x1B[0m ${g.join(" ")}${d}`}let f=i?` \x1B[48;5;${t};38;5;0m ${i} \x1B[0m`:"";return`\x1B[38;5;${t}m${n}\x1B[0m ${o}${a}${f}`}output(t,n={},e=console.log){if(!this.shouldLog(n))return;if(n.verticalSpace)console.log("");if(e(t),n.verticalSpace)console.log("")}cli(t,n={}){let e=this.formatMessage({colorCode:this.colors.cli,label:this.labels.cli,message:t,identifier:n.identifier,muted:n.muted});this.output(e,n)}info(t,n={}){let e=this.formatMessage({colorCode:this.colors.info,label:this.labels.info,message:t,identifier:n.identifier,muted:n.muted});this.output(e,n)}warn(t,n={}){let e=this.formatMessage({colorCode:this.colors.warn,label:this.labels.warn,message:t,identifier:n.identifier,muted:n.muted});this.output(e,n,console.warn)}error(t,n={}){let e=this.formatMessage({colorCode:this.colors.error,label:this.labels.error,message:t,identifier:n.identifier,muted:n.muted});this.output(e,n,console.error)}progress(t,n,e,s){let i=String(t),r=this.colors.default,o,a,f={};if(typeof e==="string")o=e,a=s;else if(e)o=e.size,a=e.identifier,f=e;for(let[g,c]of Object.entries(this.colors.progress))if(i.includes(g)){r=c;break}let l=this.formatMessage({colorCode:r,label:i,message:n,size:o,identifier:a,muted:f.muted});this.output(l,f)}}var u=E.getInstance();var Tt=/(?:import|export)(?:[\s\n]*(?:type[\s\n]+)?(?:\*|\{[^}]*\}|[\w$]+)[\s\n]+from[\s\n]*|[\s\n]+)(["'`])([^'"]+)\1/g,Ft=/import\s*\(\s*(["'`])([^'"]+)\1\s*\)/g;async function ct(t,n,e){let s=new Set([t]),i=[t];while(i.length){let r=i.pop();if(!r)continue;try{let o=await Bun.file(r).text(),a=Wt(o);for(let f of a){let l=await j(f,n,e,r);if(!l)continue;if(!s.has(l))s.add(l),i.push(l)}}catch(o){u.warn(`Error processing ${r}: ${m(o)}`)}}return s}function Wt(t){let n=new Set;for(let e of[Tt,Ft]){let s;while((s=e.exec(t))!==null)n.add(s[2])}return Array.from(n)}var ft=require("oxc-transform");async function lt(t){let n=new Map;return await Promise.all([...t].map(async(e)=>{try{let s=y(e);if(!await Bun.file(e).exists())return;let r=await Bun.file(e).text(),{code:o}=ft.isolatedDeclaration(e,r);if(o)n.set(s,o)}catch(s){u.warn(`Failed to generate declaration for ${e}: ${m(s)}`)}})),n}var F=x(require("node:fs/promises")),O=x(require("node:path")),Ut=require("oxc-transform");async function ut(t,n){let e=O.default.resolve(t),s=O.default.resolve(e,n);if(!await F.default.exists(e))throw new p(`Root directory does not exist: ${e}`);if(!await Bun.file(s).exists())throw new p(`Entry file does not exist: ${s}`);if(!s.endsWith(".ts"))throw new p(`Entry file must be a TypeScript file (.ts): ${s}`);if(O.default.relative(e,s).startsWith(".."))throw new p(`Entry file must be within rootDir: ${s}`);return{absoluteRootDir:e,absoluteEntry:s}}async function gt(t,n,e,s,i){let{absoluteEntry:r}=await ut(t,n),o=tt(s),a=T(s),f=await ct(r,o,a),l=await lt(f);return at(r,l,e,i,o,a)}function mt(t){return t.split("/").pop()?.split(".").slice(0,-1).join(".")||""}function W(t){let n=[],e=new Set,s={};function i(r,o){if(e.has(r)){let a=Y(),f=`${r}_${a}`;u.warn(`Output name conflict: "${r}" is used by multiple files.
|
|
2
2
|
Bunup uses filenames without extensions as output names by default.
|
|
3
3
|
|
|
4
4
|
${s[r]} -> ${r}.js
|
package/build/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
function ut(t){return t}function gt(t){return t}import{build as bt}from"rolldown";import{dts as wt}from"rolldown-plugin-
|
|
1
|
+
function ut(t){return t}function gt(t){return t}import{build as bt}from"rolldown";import{dts as wt}from"rolldown-plugin-dts";class v extends Error{constructor(t){super(t);this.name="BunupError"}}class h extends v{constructor(t){super(t);this.name="BunupBuildError"}}class p extends v{constructor(t){super(t);this.name="BunupDTSBuildError"}}var m=(t)=>{if(t instanceof Error)return t.message;return String(t)};import St from"node:fs/promises";import _t from"node:path";function T(t,n){return{outdir:`${n}/${t.outDir}`,minify:mt(t),target:t.target,splitting:t.splitting,sourcemap:t.sourcemap,define:t.define,loader:t.loader,drop:t.drop,banner:t.banner,footer:t.footer}}function mt(t){let{minify:n,minifyWhitespace:e,minifyIdentifiers:s,minifySyntax:i}=t,r=n===!0;return{whitespace:e??r,identifiers:s??r,syntax:i??r}}function O(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function F(t=8){return Math.random().toString(36).substring(2,2+t)}function W(t,n){switch(t){case"esm":return".mjs";case"cjs":return R(n)?".cjs":".js";case"iife":return".global.js"}}function U(t,n){switch(t){case"esm":return".d.mts";case"cjs":return R(n)?".d.cts":".d.ts";case"iife":return".d.ts"}}function R(t){return t==="module"}function G(t){if(!t)return[];return Array.from(new Set([...Object.keys(t.dependencies||{}),...Object.keys(t.peerDependencies||{})]))}function V(t,n){return t===void 0?n==="esm":t}function I(t){if(t===0)return"0 B";let n=["B","KB","MB","GB"],e=Math.floor(Math.log(t)/Math.log(1024));if(e===0)return`${t} ${n[e]}`;return`${(t/Math.pow(1024,e)).toFixed(2)} ${n[e]}`}function b(t,n=3){return t.split("/").slice(-n).join("/")}function X(t){return t.map((n)=>typeof n==="string"?new RegExp(`^${O(n)}($|\\/|\\\\)`):n)}function P(t,n){return X(t.external||[]).concat(G(n).map((e)=>new RegExp(`^${O(e)}($|\\/|\\\\)`)))}function M(t){return X(t.noExternal||[])}import xt from"node:path";import{ResolverFactory as ht}from"oxc-resolver";import $ from"node:path";var C="\x00dts:",B=(t,n,e)=>{return{name:"bunup:virtual-dts",async resolveId(s,i){if(S(s))return s;if(!i||!S(i))return null;let r=await D(s,n,e,E(i));if(!r)return null;let o=w(r);if(t.has(o))return A(o);return null},load(s){if(s.startsWith(C)){let i=E(s),r=t.get(i);if(r)return H.add(i),r}return null}}};function w(t){return t.replace(/\.tsx?$/,".d.ts")}function L(t){let n=$.dirname(t.path||"");return t.data?.compilerOptions?.baseUrl?$.resolve(n,t.data.compilerOptions.baseUrl):n}function Y(t){let n=new Map,e=t.data?.compilerOptions?.paths;if(!e)return n;let s=L(t);for(let[i,r]of Object.entries(e))if(Array.isArray(r)&&r.length){let o=i.replace(/\*/g,"(.*)"),a=r[0].replace(/\*/g,"$1");n.set(`^${o}$`,$.join(s,a))}return n}function dt(t,n,e){for(let[s,i]of n){let r=new RegExp(s),o=t.match(r);if(o)return i.replace("$1",o[1]||"")}return e?$.join(e,t):null}async function pt(t){let n=["",".ts",".tsx","/index.ts","/index.tsx"];for(let e of n){let s=`${t}${e}`;if(await Bun.file(s).exists()&&(s.endsWith(".ts")||s.endsWith(".tsx")))return s}return null}function D(t,n,e,s){let i=t.startsWith(".")?$.resolve($.dirname(s||""),t):dt(t,n,e);if(!i)return Promise.resolve(null);return pt(i)}function S(t){return t.startsWith(C)}function E(t){return t.replace(C,"")}function A(t){return`${C}${t}`}var J;function q(t){return{name:"bunup:types-resolve",buildStart(){J||=new ht({mainFields:["types"],conditionNames:["types","typings","import","require"],extensions:[".d.ts",".ts"],modules:["node_modules","node_modules/@types"]})},async resolveId(n,e){if(e=e?E(e):void 0,/\0/.test(n))return;if(t){if(!t.some((o)=>{let a=!1;if(typeof o==="string")a=o===n||!!(e&&e.includes(o));else a=o.test(n)||!!(e&&o.test(e));return a}))return}let s=e?xt.dirname(e):process.cwd(),{path:i}=await J.async(s,n);if(!i)return;if(/[cm]?jsx?$/.test(i)){let r=i.replace(/\.([cm]?)jsx?$/,".d.$1ts");return await Bun.file(r).exists()?r:void 0}return i}}}async function K(t,n,e,s,i,r){let o=w(t),a=A(o),f=P(e,s),l=M(e);try{let{output:g}=await bt({input:a,output:{dir:e.outDir,inlineDynamicImports:!0},write:!1,onwarn(c,d){if(["UNRESOLVED_IMPORT","CIRCULAR_DEPENDENCY","EMPTY_BUNDLE"].includes(c.code??""))return;d(c)},plugins:[B(n,i,r),typeof e.dts==="object"&&"resolve"in e.dts&&q(typeof e.dts.resolve==="boolean"?void 0:e.dts.resolve),wt()],external:(c)=>f.some((d)=>d.test(c))&&!l.some((d)=>d.test(c))});if(!g[0]?.code)throw new p("Generated bundle is empty");return g[0].code}catch(g){throw new p(`DTS bundling failed: ${m(g)}`)}}class y{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(!y.instance)y.instance=new y;return y.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:n,message:e,size:s,identifier:i,muted:r}){let o=" ".repeat(Math.max(0,this.MAX_LABEL_LENGTH-n.length)),a=r?`\x1B[38;5;${this.colors.info}m${e}\x1B[0m`:e;if(s){let[l,...g]=a.split(" "),c=" ".repeat(Math.max(0,this.MAX_MESSAGE_LENGTH-l.length)),d=i?` \x1B[48;5;${t};38;5;0m ${i} \x1B[0m`:"";return`\x1B[38;5;${t}m${n}\x1B[0m ${o}${l}${c} \x1B[38;5;${this.colors.size}m${s}\x1B[0m ${g.join(" ")}${d}`}let f=i?` \x1B[48;5;${t};38;5;0m ${i} \x1B[0m`:"";return`\x1B[38;5;${t}m${n}\x1B[0m ${o}${a}${f}`}output(t,n={},e=console.log){if(!this.shouldLog(n))return;if(n.verticalSpace)console.log("");if(e(t),n.verticalSpace)console.log("")}cli(t,n={}){let e=this.formatMessage({colorCode:this.colors.cli,label:this.labels.cli,message:t,identifier:n.identifier,muted:n.muted});this.output(e,n)}info(t,n={}){let e=this.formatMessage({colorCode:this.colors.info,label:this.labels.info,message:t,identifier:n.identifier,muted:n.muted});this.output(e,n)}warn(t,n={}){let e=this.formatMessage({colorCode:this.colors.warn,label:this.labels.warn,message:t,identifier:n.identifier,muted:n.muted});this.output(e,n,console.warn)}error(t,n={}){let e=this.formatMessage({colorCode:this.colors.error,label:this.labels.error,message:t,identifier:n.identifier,muted:n.muted});this.output(e,n,console.error)}progress(t,n,e,s){let i=String(t),r=this.colors.default,o,a,f={};if(typeof e==="string")o=e,a=s;else if(e)o=e.size,a=e.identifier,f=e;for(let[g,c]of Object.entries(this.colors.progress))if(i.includes(g)){r=c;break}let l=this.formatMessage({colorCode:r,label:i,message:n,size:o,identifier:a,muted:f.muted});this.output(l,f)}}var u=y.getInstance();var $t=/(?:import|export)(?:[\s\n]*(?:type[\s\n]+)?(?:\*|\{[^}]*\}|[\w$]+)[\s\n]+from[\s\n]*|[\s\n]+)(["'`])([^'"]+)\1/g,yt=/import\s*\(\s*(["'`])([^'"]+)\1\s*\)/g;async function Q(t,n,e){let s=new Set([t]),i=[t];while(i.length){let r=i.pop();if(!r)continue;try{let o=await Bun.file(r).text(),a=Et(o);for(let f of a){let l=await D(f,n,e,r);if(!l)continue;if(!s.has(l))s.add(l),i.push(l)}}catch(o){u.warn(`Error processing ${r}: ${m(o)}`)}}return s}function Et(t){let n=new Set;for(let e of[$t,yt]){let s;while((s=e.exec(t))!==null)n.add(s[2])}return Array.from(n)}import{isolatedDeclaration as Ct}from"oxc-transform";async function Z(t){let n=new Map;return await Promise.all([...t].map(async(e)=>{try{let s=w(e);if(!await Bun.file(e).exists())return;let r=await Bun.file(e).text(),{code:o}=Ct(e,r);if(o)n.set(s,o)}catch(s){u.warn(`Failed to generate declaration for ${e}: ${m(s)}`)}})),n}import z from"node:fs/promises";import _ from"node:path";import{isolatedDeclaration as $n}from"oxc-transform";async function k(t,n){let e=_.resolve(t),s=_.resolve(e,n);if(!await z.exists(e))throw new p(`Root directory does not exist: ${e}`);if(!await Bun.file(s).exists())throw new p(`Entry file does not exist: ${s}`);if(!s.endsWith(".ts"))throw new p(`Entry file must be a TypeScript file (.ts): ${s}`);if(_.relative(e,s).startsWith(".."))throw new p(`Entry file must be within rootDir: ${s}`);return{absoluteRootDir:e,absoluteEntry:s}}async function tt(t,n,e,s,i){let{absoluteEntry:r}=await k(t,n),o=Y(s),a=L(s),f=await Q(r,o,a),l=await Z(f);return K(r,l,e,i,o,a)}function nt(t){return t.split("/").pop()?.split(".").slice(0,-1).join(".")||""}function N(t){let n=[],e=new Set,s={};function i(r,o){if(e.has(r)){let a=F(),f=`${r}_${a}`;u.warn(`Output name conflict: "${r}" is used by multiple files.
|
|
2
2
|
Bunup uses filenames without extensions as output names by default.
|
|
3
3
|
|
|
4
4
|
${s[r]} -> ${r}.js
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bunup",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.60",
|
|
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",
|
|
@@ -18,13 +18,13 @@
|
|
|
18
18
|
"@types/bun": "^1.2.5",
|
|
19
19
|
"@typescript-eslint/eslint-plugin": "^7.18.0",
|
|
20
20
|
"bumpp": "^10.1.0",
|
|
21
|
-
"bunup": "^0.3.
|
|
21
|
+
"bunup": "^0.3.58",
|
|
22
22
|
"eslint": "^8.57.1",
|
|
23
23
|
"husky": "^9.1.7",
|
|
24
24
|
"prettier": "^3.5.3",
|
|
25
25
|
"typescript": "^5.8.3",
|
|
26
26
|
"vitest": "^2.1.9",
|
|
27
|
-
"create-bunup": "0.3.
|
|
27
|
+
"create-bunup": "0.3.60"
|
|
28
28
|
},
|
|
29
29
|
"peerDependencies": {
|
|
30
30
|
"typescript": ">=4.5.0"
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"oxc-resolver": "^5.0.1",
|
|
60
60
|
"oxc-transform": "^0.58.1",
|
|
61
61
|
"rolldown": "1.0.0-beta.7",
|
|
62
|
-
"rolldown-plugin-
|
|
62
|
+
"rolldown-plugin-dts": "^0.1.0"
|
|
63
63
|
},
|
|
64
64
|
"scripts": {
|
|
65
65
|
"build": "bunup",
|