bunup 0.7.3 → 0.7.5
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/dist/cli.js +13 -13
- package/dist/plugins.cjs +6 -6
- package/dist/plugins.js +6 -6
- package/package.json +20 -10
package/dist/cli.js
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
2
|
// @bun
|
|
3
|
-
var
|
|
3
|
+
var bt=Object.create;var{getPrototypeOf:pt,defineProperty:ce,getOwnPropertyNames:xt}=Object;var wt=Object.prototype.hasOwnProperty;var A=(e,t,r)=>{r=e!=null?bt(pt(e)):{};let i=t||!e||!e.__esModule?ce(r,"default",{value:e,enumerable:!0}):r;for(let n of xt(e))if(!wt.call(i,n))ce(i,n,{get:()=>e[n],enumerable:!0});return i};var ht=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var $e=(e,t)=>{for(var r in t)ce(e,r,{get:t[r],enumerable:!0,configurable:!0,set:(i)=>t[r]=()=>i})};var S=(e,t)=>()=>(e&&(t=e(e=0)),t);var Ct=import.meta.require;var G=ht((ti,ae)=>{var N=process||{},ye=N.argv||[],P=N.env||{},yt=!(!!P.NO_COLOR||ye.includes("--no-color"))&&(!!P.FORCE_COLOR||ye.includes("--color")||N.platform==="win32"||(N.stdout||{}).isTTY&&P.TERM!=="dumb"||!!P.CI),Et=(e,t,r=e)=>(i)=>{let n=""+i,s=n.indexOf(t,e.length);return~s?e+Bt(n,t,r,s)+t:e+n+t},Bt=(e,t,r,i)=>{let n="",s=0;do n+=e.substring(s,i)+r,s=i+t.length,i=e.indexOf(t,s);while(~i);return n+e.substring(s)},Ee=(e=yt)=>{let t=e?Et:()=>String;return{isColorSupported:e,reset:t("\x1B[0m","\x1B[0m"),bold:t("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:t("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:t("\x1B[3m","\x1B[23m"),underline:t("\x1B[4m","\x1B[24m"),inverse:t("\x1B[7m","\x1B[27m"),hidden:t("\x1B[8m","\x1B[28m"),strikethrough:t("\x1B[9m","\x1B[29m"),black:t("\x1B[30m","\x1B[39m"),red:t("\x1B[31m","\x1B[39m"),green:t("\x1B[32m","\x1B[39m"),yellow:t("\x1B[33m","\x1B[39m"),blue:t("\x1B[34m","\x1B[39m"),magenta:t("\x1B[35m","\x1B[39m"),cyan:t("\x1B[36m","\x1B[39m"),white:t("\x1B[37m","\x1B[39m"),gray:t("\x1B[90m","\x1B[39m"),bgBlack:t("\x1B[40m","\x1B[49m"),bgRed:t("\x1B[41m","\x1B[49m"),bgGreen:t("\x1B[42m","\x1B[49m"),bgYellow:t("\x1B[43m","\x1B[49m"),bgBlue:t("\x1B[44m","\x1B[49m"),bgMagenta:t("\x1B[45m","\x1B[49m"),bgCyan:t("\x1B[46m","\x1B[49m"),bgWhite:t("\x1B[47m","\x1B[49m"),blackBright:t("\x1B[90m","\x1B[39m"),redBright:t("\x1B[91m","\x1B[39m"),greenBright:t("\x1B[92m","\x1B[39m"),yellowBright:t("\x1B[93m","\x1B[39m"),blueBright:t("\x1B[94m","\x1B[39m"),magentaBright:t("\x1B[95m","\x1B[39m"),cyanBright:t("\x1B[96m","\x1B[39m"),whiteBright:t("\x1B[97m","\x1B[39m"),bgBlackBright:t("\x1B[100m","\x1B[49m"),bgRedBright:t("\x1B[101m","\x1B[49m"),bgGreenBright:t("\x1B[102m","\x1B[49m"),bgYellowBright:t("\x1B[103m","\x1B[49m"),bgBlueBright:t("\x1B[104m","\x1B[49m"),bgMagentaBright:t("\x1B[105m","\x1B[49m"),bgCyanBright:t("\x1B[106m","\x1B[49m"),bgWhiteBright:t("\x1B[107m","\x1B[49m")}};ae.exports=Ee();ae.exports.createColors=Ee});function J(e){Be=e??!1}class q{static instance;loggedOnceMessages=new Set;MAX_LABEL_LENGTH=3;cliColor=u.default.blue;mutedColor=u.default.dim;infoColor=u.default.cyan;warnColor=u.default.yellow;errorColor=u.default.red;defaultColor=u.default.white;progressFgColorMap={ESM:u.default.yellow,CJS:u.default.green,IIFE:u.default.magenta,DTS:u.default.blue};progressIdentifierBgColorMap={ESM:u.default.bgYellow,CJS:u.default.bgGreen,IIFE:u.default.bgMagenta,DTS:u.default.bgBlue};labels={cli:"CLI",info:"INFO",warn:"WARN",error:"ERROR"};constructor(){}static getInstance(){if(!q.instance)q.instance=new q;return q.instance}dispose(){this.loggedOnceMessages.clear()}shouldLog(e){if(!e?.once)return!0;if(this.loggedOnceMessages.has(e.once))return!1;return this.loggedOnceMessages.add(e.once),!0}formatMessage({fgColor:e,bgColor:t,label:r,message:i,identifier:n,muted:s}){let o=" ".repeat(Math.max(0,this.MAX_LABEL_LENGTH-r.length)),a=s?this.mutedColor(i):i,p=n?` ${t(u.default.black(` ${n} `))}`:"";return`${e(r)} ${o}${a}${p}`}output(e,t={},r=console.log){if(Be||!this.shouldLog(t))return;if(t.verticalSpace)r("");if(r(e),t.verticalSpace)r("")}cli(e,t={}){let r=this.formatMessage({fgColor:this.cliColor,bgColor:u.default.bgBlue,label:this.labels.cli,message:e,identifier:t.identifier,muted:t.muted});this.output(r,t)}info(e,t={}){let r=this.formatMessage({fgColor:this.infoColor,bgColor:u.default.bgCyan,label:this.labels.info,message:e,identifier:t.identifier,muted:t.muted});this.output(r,t)}warn(e,t={}){let r=this.formatMessage({fgColor:this.warnColor,bgColor:u.default.bgYellow,label:this.labels.warn,message:e,identifier:t.identifier,muted:t.muted});this.output(r,t,console.warn)}error(e,t={}){let r=this.formatMessage({fgColor:this.errorColor,bgColor:u.default.bgRed,label:this.labels.error,message:e,identifier:t.identifier,muted:t.muted});this.output(r,t,console.error)}getProgressFgColor(e){for(let[t,r]of Object.entries(this.progressFgColorMap))if(e.includes(t))return r;return this.defaultColor}getProgressBgColor(e){for(let[t,r]of Object.entries(this.progressIdentifierBgColorMap))if(e.includes(t))return r;return u.default.bgWhite}progress(e,t,r={}){let i=this.getProgressFgColor(e),n=this.getProgressBgColor(e),s=this.formatMessage({fgColor:i,bgColor:n,label:e,message:t,identifier:r.identifier,muted:r.muted});this.output(s,r)}}var u,Be=!1,l;var z=S(()=>{u=A(G(),1);l=q.getInstance()});var $,V,U,Oe,M,v,de=(e)=>{if(e instanceof Error)return e.message;return String(e)},Ot,ue=(e,t)=>{let r=de(e),i=t?`[${t}] `:"",n="";if(e instanceof U)n="BUILD ERROR";else if(e instanceof Oe)n="DTS ERROR";else if(e instanceof M)n="CLI ERROR";else if(e instanceof v)n="WATCH ERROR";else if(e instanceof V)n="BUNUP ERROR";let s=Ot.find((o)=>o.pattern.test(r)&&(o.errorType===n||!o.errorType));if(!s&&n)console.error(`${$.default.red(n)} ${i}${r}`);if(s)console.log(`
|
|
4
4
|
`),s.logSolution(r),console.log(`
|
|
5
5
|
`);else console.error($.default.dim($.default.white("If you think this is a bug, please open an issue at: ")+$.default.cyan("https://github.com/arshad-yaseen/bunup/issues/new")))},Se=(e,t)=>{ue(e,t),process.exit(1)};var D=S(()=>{$=A(G(),1);z();V=class V extends Error{constructor(e){super(e);this.name="BunupError"}};U=class U extends V{constructor(e){super(e);this.name="BunupBuildError"}};Oe=class Oe extends V{constructor(e){super(e);this.name="BunupDTSBuildError"}};M=class M extends V{constructor(e){super(e);this.name="BunupCLIError"}};v=class v extends V{constructor(e){super(e);this.name="BunupWatchError"}};Ot=[{pattern:/Could not resolve: "bun"/i,errorType:"BUILD ERROR",logSolution:()=>{l.error($.default.white("You're trying to build a project that uses Bun. ")+$.default.white("Please set the target option to ")+$.default.cyan("`bun`")+$.default.white(`.
|
|
6
|
-
`)+$.default.white("Example: ")+$.default.green("`bunup --target bun`")+$.default.white(" or in config: ")+$.default.green("{ target: 'bun' }"))}}]});import Re from"fs/promises";import H,{normalize as ai}from"path";function je(e,t,r){return Array.isArray(e)?e.map((i)=>({...i,[t]:r})):{...e,[t]:r}}function Ie(e){return Array.isArray(e)?e:[e]}function We(e,t){switch(e){case"esm":return ee(t)?".js":".mjs";case"cjs":return ee(t)?".cjs":".js";case"iife":return".global.js"}}function ke(e,t){switch(e){case"esm":return ee(t)?".d.ts":".d.mts";case"cjs":return ee(t)?".d.cts":".d.ts";case"iife":return".global.d.ts"}}function Fe(e){let t=H.basename(e),r=H.extname(t);return r?t.slice(0,-r.length):t}function Le(e){return e.replace(H.extname(e),"")}function Ae(e){return e.replace(/\\/g,"/")}function ee(e){return e==="module"}function te(e){return e>=1000?`${(e/1000).toFixed(2)}s`:`${Math.round(e)}ms`}function Ge(e){if(!e)return[];return Array.from(new Set([...Object.keys(e.dependencies||{}),...Object.keys(e.peerDependencies||{})]))}function ie(e,t=3){return e.split("/").slice(-t).join("/")}async function
|
|
6
|
+
`)+$.default.white("Example: ")+$.default.green("`bunup --target bun`")+$.default.white(" or in config: ")+$.default.green("{ target: 'bun' }"))}}]});import Re from"fs/promises";import H,{normalize as ai}from"path";function je(e,t,r){return Array.isArray(e)?e.map((i)=>({...i,[t]:r})):{...e,[t]:r}}function Ie(e){return Array.isArray(e)?e:[e]}function We(e,t){switch(e){case"esm":return ee(t)?".js":".mjs";case"cjs":return ee(t)?".cjs":".js";case"iife":return".global.js"}}function ke(e,t){switch(e){case"esm":return ee(t)?".d.ts":".d.mts";case"cjs":return ee(t)?".d.cts":".d.ts";case"iife":return".global.d.ts"}}function Fe(e){let t=H.basename(e),r=H.extname(t);return r?t.slice(0,-r.length):t}function Le(e){return e.replace(H.extname(e),"")}function Ae(e){return e.replace(/\\/g,"/")}function ee(e){return e==="module"}function te(e){return e>=1000?`${(e/1000).toFixed(2)}s`:`${Math.round(e)}ms`}function Ge(e){if(!e)return[];return Array.from(new Set([...Object.keys(e.dependencies||{}),...Object.keys(e.peerDependencies||{})]))}function ie(e,t=3){return e.split("/").slice(-t).join("/")}async function Ye(e,t){let r=H.join(e,t);try{await Re.rm(r,{recursive:!0,force:!0})}catch(i){throw new U(`Failed to clean output directory: ${i}`)}await Re.mkdir(r,{recursive:!0})}var W=S(()=>{D()});import jt from"path";import{loadConfig as It}from"coffi";async function Ve(e,t,r){return Array.isArray(e)&&"root"in e[0]?e.filter((i)=>r?r.includes(i.name):!0).map((i)=>({rootDir:jt.resolve(t,i.root),options:je(i.config,"name",i.name)})):[{rootDir:t,options:e}]}async function Ue(e){let{config:t,filepath:r}=await It({name:"package",cwd:e,extensions:[".json"]});return{data:t,path:r}}var me=S(()=>{W()});function K(e){if(typeof e==="string")return[{entry:e,outputBasePath:De(e)}];if(typeof e==="object"&&!Array.isArray(e))return Object.entries(e).map(([t,r])=>({entry:r,outputBasePath:t}));return e.map((t)=>({entry:t,outputBasePath:De(t)}))}function De(e){let t=Ae(Le(e)).split("/");return t.length>1?t.slice(1).join("/"):t.join("/")}function Ke(e,t){return{entry:`[dir]/${e}${t}`,chunk:`${e}-[hash].[ext]`,asset:`${e}-[name]-[hash].[ext]`}}var ge=S(()=>{W()});function se(e){return{...Wt,...e}}function Te(e){let{minify:t,minifyWhitespace:r,minifyIdentifiers:i,minifySyntax:n}=e,s=t===!0;return{whitespace:r??s,identifiers:i??s,syntax:n??s}}function _e(e,t){return t==="cjs"?e:void 0}function Xe(e){if(e===!0)return"inline";return typeof e==="string"?e:void 0}function Qe(e,t){return{...typeof t==="object"&&Object.keys(t).reduce((r,i)=>{let n=JSON.stringify(t[i]);return r[`process.env.${i}`]=n,r[`import.meta.env.${i}`]=n,r},{}),...e}}function Ze(e,t){return e===void 0?t==="esm":e}function Pe(e){return typeof e==="string"?e:void 0}var Wt;var fe=S(()=>{Wt={entry:[],format:["cjs"],outDir:"dist",target:"node",clean:!0}});function kt(e){return Ge(e).map((t)=>new RegExp(`^${t}($|\\/|\\\\)`))}function Ne(e,t){return typeof t==="string"?t===e:t.test(e)}function Je(e,t,r){let n=kt(r).some((o)=>o.test(e))||t.external?.some((o)=>Ne(e,o)),s=t.noExternal?.some((o)=>Ne(e,o));return n&&!s}var ve=S(()=>{W()});function He(e,t){return{name:"bunup:external-option-plugin",setup(r){r.onResolve({filter:/.*/},(i)=>{let n=i.path;if(Je(n,e,t))return{path:n,external:!0};return null})}}}var et=S(()=>{ve()});function tt(e){if(!e)return[];return e.filter((t)=>t.type==="bun")}function it(e){if(!e)return[];return e.filter((t)=>t.type==="bunup")}async function rt(e,t){if(!e)return;for(let r of e)if(r.hooks.onBuildStart)await r.hooks.onBuildStart(t)}async function nt(e,t,r,i){if(!e)return;for(let n of e)if(n.hooks.onBuildDone)await n.hooks.onBuildDone({options:t,output:r,meta:i})}var ot={};$e(ot,{build:()=>be});import Lt from"path";import{generateDts as At,logIsolatedDeclarationErrors as Gt}from"bun-dts";async function be(e,t=process.cwd()){let r={files:[]},i=se(e);if(!i.entry||i.entry.length===0||!i.outDir)throw new U("Nothing to build. Please make sure you have provided a proper bunup configuration or cli arguments.");if(i.clean)Ye(t,i.outDir);J(i.silent);let n=await Ue(t);if(n.data&&n.path)l.cli(`Using ${ie(n.path,2)}`,{muted:!0,identifier:i.name,once:`${n.path}:${i.name}`});let s=it(i.plugins);await rt(s,i);let o=K(i.entry),a=n.data?.type,p=[He(i,n.data),...tt(i.plugins).map((b)=>b.plugin)];if(!i.dtsOnly){let b=i.format.flatMap((c)=>o.map(async({entry:x,outputBasePath:d})=>{let g=i.outputExtension?.({format:c,packageType:a,options:i,entry:x}).js??We(c,a),C=await Bun.build({entrypoints:[`${t}/${x}`],format:c,naming:Ke(d,g),splitting:Ze(i.splitting,c),bytecode:_e(i.bytecode,c),define:Qe(i.define,i.env),minify:Te(i),outdir:`${t}/${i.outDir}`,target:i.target,sourcemap:Xe(i.sourcemap),loader:i.loader,drop:i.drop,banner:i.banner,footer:i.footer,publicPath:i.publicPath,env:Pe(i.env),plugins:p,throw:!1});for(let w of C.logs){if(w.level==="error")throw console.log(`
|
|
7
7
|
`),console.log(w),console.log(`
|
|
8
|
-
`),new Error;if(w.level==="warning")l.warn(w.message);else if(w.level==="info")l.info(w.message)}for(let w of C.outputs){let I=st(w.path,t);if(w.kind==="entry-point")l.progress(c.toUpperCase(),I,{identifier:i.name});r.files.push({fullPath:w.path,relativePathToRootDir:I,dts:!1,entry:x,outputBasePath:d,format:c})}}));await Promise.all(
|
|
8
|
+
`),new Error;if(w.level==="warning")l.warn(w.message);else if(w.level==="info")l.info(w.message)}for(let w of C.outputs){let I=st(w.path,t);if(w.kind==="entry-point")l.progress(c.toUpperCase(),I,{identifier:i.name});r.files.push({fullPath:w.path,relativePathToRootDir:I,dts:!1,entry:x,outputBasePath:d,format:c})}}));await Promise.all(b)}if(i.dts===!0||typeof i.dts==="object"||i.dtsOnly){let b=typeof i.dts==="object"&&"resolve"in i.dts?i.dts.resolve:void 0,c=typeof i.dts==="object"&&"entry"in i.dts?i.dts.entry:void 0,d=(c?K(c):o).map(async({entry:g,outputBasePath:C})=>{let w=await At(g,{cwd:t,preferredTsConfigPath:i.preferredTsconfigPath,resolve:b});for(let I of i.format){let f=i.outputExtension?.({format:I,packageType:a,options:i,entry:g}).dts??ke(I,a),T=Lt.join(t,i.outDir,`${C}${f}`),_=st(T,t);if(r.files.push({fullPath:T,relativePathToRootDir:_,dts:!0,entry:g,outputBasePath:C,format:I}),w.errors.length>0)Gt(w.errors,{warnInsteadOfError:i.watch,shouldExit:!0});await Bun.write(T,w.dts),l.progress("DTS",_,{identifier:i.name})}});await Promise.all(d)}if(await nt(s,i,r,{packageJson:n}),i.onSuccess)await i.onSuccess(i)}function st(e,t){return e.replace(`${t}/`,"")}var pe=S(()=>{D();ge();me();z();fe();et();W()});var mt={};$e(mt,{init:()=>Kt});import j from"fs/promises";import L from"path";import{cancel as k,confirm as F,intro as Yt,isCancel as h,log as B,multiselect as dt,outro as qt,tasks as zt,text as Q}from"@clack/prompts";import{loadConfig as he}from"coffi";import{detect as Vt,resolveCommand as xe}from"package-manager-detector";import{exec as Ut}from"tinyexec";async function ut(e){try{return await j.access(e),!0}catch{return!1}}async function Dt(){let{config:e,filepath:t}=await he({name:"bunup.config",extensions:[".ts",".js",".mjs",".cjs"],maxDepth:1,packageJsonProperty:"bunup"});return{exists:!!e,filepath:t||void 0}}async function Kt(){Yt(m.default.bgCyan(m.default.black(" Bunup ")));let{exists:e,filepath:t}=await Dt();if(e){let f=await F({message:`A bunup configuration already exists at ${m.default.cyan(t||"bunup.config.ts")}. Continue and overwrite it?`,initialValue:!1});if(h(f)||!f)k("Initialization cancelled"),process.exit(1)}let r=await Vt();if(!r)B.error("No package manager detected"),process.exit(1);let{config:i,filepath:n}=await he({name:"package",cwd:process.cwd(),extensions:[".json"]});if(!i||!n)B.error("Cannot find package.json."),process.exit(1);let s=await Q({message:"Entry point for your library:",placeholder:"src/index.ts",defaultValue:"src/index.ts"});if(h(s))k("Initialization cancelled"),process.exit(1);let o=L.join(process.cwd(),String(s));if(!await ut(o)){let f=await F({message:`Entry file ${m.default.cyan(String(s))} does not exist. Create it?`,initialValue:!0});if(h(f))k("Initialization cancelled"),process.exit(1);if(f)await j.mkdir(L.dirname(o),{recursive:!0}),await j.writeFile(o,`// Your entry point
|
|
9
9
|
|
|
10
10
|
export function hello() {
|
|
11
11
|
return 'Hello from ${L.basename(String(s))}';
|
|
12
12
|
}
|
|
13
|
-
`),B.success(`Created ${s}`)}let a=await dt({message:"Output formats:",options:[{value:"esm",label:"ESM",hint:"ECMAScript modules"},{value:"cjs",label:"CJS",hint:"CommonJS modules"},{value:"iife",label:"IIFE",hint:"Immediately Invoked Function Expression"}],initialValues:["esm","cjs"],required:!0});if(h(a))k("Initialization cancelled"),process.exit(1);let
|
|
13
|
+
`),B.success(`Created ${s}`)}let a=await dt({message:"Output formats:",options:[{value:"esm",label:"ESM",hint:"ECMAScript modules"},{value:"cjs",label:"CJS",hint:"CommonJS modules"},{value:"iife",label:"IIFE",hint:"Immediately Invoked Function Expression"}],initialValues:["esm","cjs"],required:!0});if(h(a))k("Initialization cancelled"),process.exit(1);let p=await Q({message:"Output directory:",placeholder:"dist",initialValue:"dist",validate:(f)=>f?void 0:"Output directory is required"});if(h(p))k("Initialization cancelled"),process.exit(1);let b=await F({message:"Generate TypeScript declarations (.d.ts files)?",initialValue:!0});if(h(b))k("Initialization cancelled"),process.exit(1);let c=!1,x=[];if(i.workspaces){let f=await F({message:"Detected workspaces. Set up Bunup for multiple packages?",initialValue:!0});if(h(f))k("Initialization cancelled"),process.exit(1);if(c=f,c){let T=async()=>{let O=await Q({message:"Workspace name:",placeholder:"core",validate:(E)=>E?void 0:"Workspace name is required"});if(h(O))return null;let X=await Q({message:"Workspace root directory:",placeholder:"packages/core",validate:(E)=>E?void 0:"Workspace root is required"});if(h(X))return null;let Y=await Q({message:"Workspace entry points (comma-separated):",placeholder:"src/index.ts",validate:(E)=>E?void 0:"At least one entry point is required"});if(h(Y))return null;return{name:String(O),root:String(X),entries:String(Y).split(",").map((E)=>E.trim())}},_=!0;while(_){let O=await T();if(!O)break;x.push(O);for(let Y of O.entries){let E=L.join(process.cwd(),O.root,Y);if(!await ut(E)){let Ce=await F({message:`Entry file ${m.default.cyan(`${O.root}/${Y}`)} does not exist. Create it?`,initialValue:!0});if(h(Ce))break;if(Ce)await j.mkdir(L.dirname(E),{recursive:!0}),await j.writeFile(E,`// Your entry point
|
|
14
14
|
|
|
15
15
|
export function hello() {
|
|
16
16
|
return 'Hello from ${O.name}';
|
|
17
17
|
}
|
|
18
|
-
`),B.success(`Created ${O.root}/${
|
|
18
|
+
`),B.success(`Created ${O.root}/${Y}`)}}let X=await F({message:"Add another workspace?",initialValue:!1});if(h(X))break;_=X}}}let d=[{value:"report",label:"Report",hint:"Logs bundle size report after build (recommended)",configGenerator:()=>"report()",defaultEnabled:!0},{value:"exports",label:"Exports",hint:"Generates exports field in package.json after build (recommended)",configGenerator:()=>"exports()",defaultEnabled:!0}],g=await dt({message:"Select plugins to use (optional):",options:d,required:!1,initialValues:d.filter((f)=>f.defaultEnabled).map((f)=>f.value)});if(h(g))k("Initialization cancelled"),process.exit(1);if(c&&x.length>0)await _t(x,a,String(p),b,g,d,t||void 0);else await Tt(String(s),a,String(p),b,g,d,t||void 0);await Zt(),B.success("Configuration generated"),await Xt(i,n),B.success("package.json updated");let C=[{title:"Installing bunup",task:async()=>{return await Qt(i,r),"Bunup installed"}}];try{await zt(C)}catch(f){B.error(`Error: ${f instanceof Error?f.message:String(f)}`),process.exit(1)}let w=xe(r.agent,"run",["dev"]),I=xe(r.agent,"run",["build"]);qt(`
|
|
19
19
|
${m.default.bold("\uD83D\uDE80 Happy building with Bunup!")}
|
|
20
20
|
|
|
21
21
|
Run these commands to get started:
|
|
@@ -23,17 +23,17 @@ export function hello() {
|
|
|
23
23
|
${m.default.cyan(we(w))} - ${m.default.gray("Build in watch mode")}
|
|
24
24
|
|
|
25
25
|
${m.default.dim("Edit")} ${m.default.underline("bunup.config.ts")} ${m.default.dim("to customize your build.")}
|
|
26
|
-
`)}async function Tt(e,t,r,i,n,s,o=L.join(process.cwd(),"bunup.config.ts")){let a=lt(n,s),
|
|
26
|
+
`)}async function Tt(e,t,r,i,n,s,o=L.join(process.cwd(),"bunup.config.ts")){let a=lt(n,s),p=`import { defineConfig } from 'bunup';
|
|
27
27
|
${n.length>0?`import { ${n.join(", ")} } from 'bunup/plugins';
|
|
28
28
|
`:""}
|
|
29
29
|
export default defineConfig({
|
|
30
30
|
entry: '${e}',
|
|
31
|
-
format: [${t.map((
|
|
31
|
+
format: [${t.map((b)=>`'${b}'`).join(", ")}],
|
|
32
32
|
outDir: '${r}',${i?`
|
|
33
33
|
dts: true,`:""}${a?`
|
|
34
34
|
plugins: [${a}],`:""}
|
|
35
35
|
});
|
|
36
|
-
`;await j.writeFile(o,
|
|
36
|
+
`;await j.writeFile(o,p)}async function _t(e,t,r,i,n,s,o=L.join(process.cwd(),"bunup.config.ts")){let a=lt(n,s),p=e.map((c)=>{let x=c.entries.length===1?`'${c.entries[0]}'`:`[${c.entries.map((d)=>`'${d}'`).join(", ")}]`;return` {
|
|
37
37
|
name: '${c.name}',
|
|
38
38
|
root: '${c.root}',
|
|
39
39
|
config: {
|
|
@@ -44,14 +44,14 @@ export default defineConfig({
|
|
|
44
44
|
plugins: [${a}],`:""}
|
|
45
45
|
},
|
|
46
46
|
}`}).join(`,
|
|
47
|
-
`),
|
|
47
|
+
`),b=`import { defineWorkspace } from 'bunup';
|
|
48
48
|
${n.length>0?`import { ${n.join(", ")} } from 'bunup/plugins';
|
|
49
49
|
`:""}
|
|
50
50
|
export default defineWorkspace([
|
|
51
|
-
${
|
|
51
|
+
${p}
|
|
52
52
|
]);
|
|
53
|
-
`;await j.writeFile(o,
|
|
54
|
-
`);return}let i={bun:"-d",npm:"-D",pnpm:"-D",yarn:"-D"},n=xe(t.agent,"add",[i[t.agent]||"-D","bunup"]);if(!n)throw new Error("Failed to resolve install command");await Ut(we(n),[],{nodeOptions:{shell:!0,stdio:"pipe"}})}function we(e){if(!e)return"";return`${e.command} ${e.args.join(" ")}`}async function Zt(){let e={},t=!1,r=L.join(process.cwd(),"tsconfig.json");try{let{config:n,filepath:s}=await he({name:"tsconfig",cwd:process.cwd(),extensions:[".json"]});if(n&&s)e=n,t=!0,r=s}catch{}if(e.compilerOptions?.isolatedDeclarations!==!0){B.info(`${m.default.cyan("About isolatedDeclarations:")} ${m.default.gray(`A ${m.default.bold("modern TypeScript feature")} for library authors`)}`),B.info(m.default.gray(`Benefits: ${m.default.bold("faster builds")}, ${m.default.bold("more reliable API types")}, and ${m.default.bold("better editor support")} to catch issues during development`));let n=await F({message:"Enable isolatedDeclarations in tsconfig.json? (recommended but optional)",initialValue:!0});if(h(n))return;if(n){if(e.compilerOptions=e.compilerOptions||{},e.compilerOptions.isolatedDeclarations=!0,e.compilerOptions.declaration=!0,"allowJs"in e.compilerOptions)e.compilerOptions.allowJs=null;if(e.exclude=e.exclude||[],!e.exclude.includes("bunup.config.ts"))e.exclude.push("bunup.config.ts");await j.writeFile(r,JSON.stringify(e,null,2)),B.success("Updated tsconfig.json with isolatedDeclarations")}}else if(t){if(e.exclude=e.exclude||[],!e.exclude.includes("bunup.config.ts"))e.exclude.push("bunup.config.ts"),await j.writeFile(r,JSON.stringify(e,null,2))}}var m;var gt=S(()=>{m=A(G(),1)});import{exec as Pt}from"tinyexec";var Z="0.7.
|
|
53
|
+
`;await j.writeFile(o,b)}function lt(e,t){return t.filter((r)=>e.includes(r.value)).map((r)=>r.configGenerator?r.configGenerator():`${r.value}()`).join(", ")}async function Xt(e,t){let r=e.scripts||{},i=!1;for(let[n,s]of[["build","bunup"],["dev","bunup --watch"]])if(!r[n]||await F({message:`Script '${n}' exists. Replace with '${s}'?`,initialValue:!0}))r[n]=s,i=!0;if(i)e.scripts=r,await j.writeFile(t,JSON.stringify(e,null,2))}async function Qt(e,t){if(e.dependencies?.bunup||e.devDependencies?.bunup){B.info(`Bunup is already installed
|
|
54
|
+
`);return}let i={bun:"-d",npm:"-D",pnpm:"-D",yarn:"-D"},n=xe(t.agent,"add",[i[t.agent]||"-D","bunup"]);if(!n)throw new Error("Failed to resolve install command");await Ut(we(n),[],{nodeOptions:{shell:!0,stdio:"pipe"}})}function we(e){if(!e)return"";return`${e.command} ${e.args.join(" ")}`}async function Zt(){let e={},t=!1,r=L.join(process.cwd(),"tsconfig.json");try{let{config:n,filepath:s}=await he({name:"tsconfig",cwd:process.cwd(),extensions:[".json"]});if(n&&s)e=n,t=!0,r=s}catch{}if(e.compilerOptions?.isolatedDeclarations!==!0){B.info(`${m.default.cyan("About isolatedDeclarations:")} ${m.default.gray(`A ${m.default.bold("modern TypeScript feature")} for library authors`)}`),B.info(m.default.gray(`Benefits: ${m.default.bold("faster builds")}, ${m.default.bold("more reliable API types")}, and ${m.default.bold("better editor support")} to catch issues during development`));let n=await F({message:"Enable isolatedDeclarations in tsconfig.json? (recommended but optional)",initialValue:!0});if(h(n))return;if(n){if(e.compilerOptions=e.compilerOptions||{},e.compilerOptions.isolatedDeclarations=!0,e.compilerOptions.declaration=!0,"allowJs"in e.compilerOptions)e.compilerOptions.allowJs=null;if(e.exclude=e.exclude||[],!e.exclude.includes("bunup.config.ts"))e.exclude.push("bunup.config.ts");await j.writeFile(r,JSON.stringify(e,null,2)),B.success("Updated tsconfig.json with isolatedDeclarations")}}else if(t){if(e.exclude=e.exclude||[],!e.exclude.includes("bunup.config.ts"))e.exclude.push("bunup.config.ts"),await j.writeFile(r,JSON.stringify(e,null,2))}}var m;var gt=S(()=>{m=A(G(),1)});import{exec as Pt}from"tinyexec";var Z="0.7.5";D();z();var le=A(G(),1);var Me="https://bunup.dev/docs/guide/cli-options";D();z();W();function y(e){return(t,r)=>{r[e]=t===!0||t==="true"}}function R(e){return(t,r)=>{if(typeof t==="string")r[e]=t;else throw new M(`Option --${e} requires a string value`)}}function re(e){return(t,r)=>{if(typeof t==="string")r[e]=t.split(",");else throw new M(`Option --${e} requires a string value`)}}function St(e){return(t,r)=>{if(typeof t==="boolean")r[e]=t;else if(typeof t==="string")if(t.toLowerCase()==="true"||t.toLowerCase()==="false")r[e]=t.toLowerCase()==="true";else r[e]=t;else throw new M(`Option --${e} requires a boolean or string value`)}}function Mt(){console.log(`
|
|
55
55
|
Bunup - \u26A1\uFE0F A blazing-fast build tool for your libraries built with Bun.
|
|
56
56
|
`),console.log("For more information on available options, visit:"),console.log(`${le.default.cyan(le.default.underline(Me))}
|
|
57
|
-
`),process.exit(0)}function Rt(){console.log(Z),process.exit(0)}var
|
|
57
|
+
`),process.exit(0)}function Rt(){console.log(Z),process.exit(0)}var qe={name:{flags:["n","name"],handler:R("name")},format:{flags:["f","format"],handler:re("format")},outDir:{flags:["o","out-dir"],handler:R("outDir")},minify:{flags:["m","minify"],handler:y("minify")},watch:{flags:["w","watch"],handler:y("watch")},dts:{flags:["d","dts"],handler:y("dts")},banner:{flags:["bn","banner"],handler:R("banner")},footer:{flags:["ft","footer"],handler:R("footer")},external:{flags:["e","external"],handler:re("external")},sourcemap:{flags:["sm","sourcemap"],handler:St("sourcemap")},target:{flags:["t","target"],handler:R("target")},minifyWhitespace:{flags:["mw","minify-whitespace"],handler:y("minifyWhitespace")},minifyIdentifiers:{flags:["mi","minify-identifiers"],handler:y("minifyIdentifiers")},minifySyntax:{flags:["ms","minify-syntax"],handler:y("minifySyntax")},clean:{flags:["c","clean"],handler:y("clean")},splitting:{flags:["s","splitting"],handler:y("splitting")},noExternal:{flags:["ne","no-external"],handler:re("noExternal")},preferredTsconfigPath:{flags:["tsconfig","preferred-tsconfig-path"],handler:R("preferredTsconfigPath")},bytecode:{flags:["bc","bytecode"],handler:y("bytecode")},silent:{flags:["silent"],handler:y("silent")},config:{flags:["config"],handler:R("config")},publicPath:{flags:["pp","public-path"],handler:R("publicPath")},env:{flags:["env"],handler:R("env")},onSuccess:{flags:["onSuccess"],handler:R("onSuccess")},filter:{flags:["filter"],handler:re("filter")},init:{flags:["init"],handler:y("init")},dtsOnly:{flags:["dts-only"],handler:y("dtsOnly")},entry:{flags:["entry"],handler:(e,t,r)=>{if(typeof e!=="string")throw new M(`Entry${r?` --entry.${r}`:""} requires a string value`);let i=t.entry||{};if(r){if(i[r])l.warn(`Duplicate entry name '${r}' provided via --entry.${r}. Overwriting previous entry.`);i[r]=e}else{let n=Fe(e);if(i[n])l.warn(`Duplicate entry name '${n}' derived from '${e}'. Overwriting previous entry.`);i[n]=e}t.entry=i}},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:()=>Mt()},version:{flags:["v","version"],handler:()=>Rt()}},ne={};for(let e of Object.values(qe))for(let t of e.flags)ne[t]=e.handler;function ze(e){let t={};for(let r=0;r<e.length;r++){let i=e[r];if(i.startsWith("--")){let n,s;if(i.includes("=")){let[o,a]=i.slice(2).split("=",2);n=o,s=a}else{n=i.slice(2);let o=e[r+1];if(s=o&&!o.startsWith("-")?o:!0,typeof s==="string")r++}if(n.includes(".")){let[o,a]=n.split(".",2),p=ne[o];if(p)p(s,t,a);else throw new M(`Unknown option: --${n}`)}else{let o=ne[n];if(o)o(s,t);else throw new M(`Unknown option: --${n}`)}}else if(i.startsWith("-")){let n=i.slice(1),s=e[r+1],o=s&&!s.startsWith("-")?s:!0;if(typeof o==="string")r++;let a=ne[n];if(a)a(o,t);else throw new M(`Unknown option: -${n}`)}else qe.entry.handler(i,t,void 0)}return t}var ft=A(G(),1);me();W();import{loadConfig as Nt}from"coffi";var ct=A(G(),1);pe();D();ge();z();fe();W();import oe from"path";async function at(e,t){let r=new Set,i=se(e),n=typeof i.dts==="object"&&"entry"in i.dts?i.dts.entry:void 0,s=n?K(n):[],o=K(i.entry),a=new Set([...s.map(({entry:d})=>d),...o.map(({entry:d})=>d)]);for(let d of a){let g=oe.resolve(t,d),C=oe.dirname(g);r.add(C)}let b=(await import("chokidar")).watch(Array.from(r),{persistent:!0,ignoreInitial:!0,atomic:!0,ignorePermissionErrors:!0,ignored:[/[\\/]\.git[\\/]/,/[\\/]node_modules[\\/]/,oe.join(t,i.outDir)]}),c=!1,x=async(d=!1)=>{if(c)return;c=!0;try{let g=performance.now();if(await be(i,t),!d)l.cli(`\uD83D\uDCE6 Rebuild finished in ${ct.default.green(te(performance.now()-g))}`)}catch(g){ue(g)}finally{c=!1}};b.on("change",(d)=>{let g=oe.relative(t,d);l.cli(`File changed: ${g}`,{muted:!0,once:g}),x()}),b.on("error",(d)=>{throw new v(`Watcher error: ${de(d)}`)}),await x(!0)}async function Jt(e=Bun.argv.slice(2)){let t=ze(e);if(t.init){let{init:c}=await Promise.resolve().then(() => (gt(),mt));await c();return}J(t.silent);let r=process.cwd(),{config:i,filepath:n}=await Nt({name:"bunup.config",extensions:[".ts",".js",".mjs",".cjs"],maxDepth:1,preferredPath:t.config,packageJsonProperty:"bunup"}),s=!i?[{rootDir:r,options:t}]:await Ve(i,r,t.filter);if(l.cli(`Using bunup v${Z} and bun v${Bun.version}`,{muted:!0}),n)l.cli(`Using ${ie(n,2)}`,{muted:!0});let o=performance.now();l.cli("Build started");let{build:a}=await Promise.resolve().then(() => (pe(),ot));await Promise.all(s.flatMap(({options:c,rootDir:x})=>{return Ie(c).map(async(g)=>{let C={...g,...vt(t)};if(C.watch)await at(C,x);else await a(C,x)})}));let p=performance.now()-o,b=te(p);if(l.cli(`\u26A1\uFE0F Build completed in ${ft.default.green(b)}`),t.watch)l.cli("\uD83D\uDC40 Watching for file changes");if(t.onSuccess)l.cli(`Running command: ${t.onSuccess}`,{muted:!0}),await Pt(t.onSuccess,[],{nodeOptions:{shell:!0,stdio:"inherit"}});if(!t.watch)process.exit(process.exitCode??0)}function vt(e){return{...e,onSuccess:void 0,config:void 0,filter:void 0,init:void 0}}Jt().catch((e)=>Se(e));
|
package/dist/plugins.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @bun @bun-cjs
|
|
2
|
-
(function(exports, require, module, __filename, __dirname) {var
|
|
2
|
+
(function(exports, require, module, __filename, __dirname) {var Q=Object.create;var{getPrototypeOf:S,defineProperty:C,getOwnPropertyNames:Y,getOwnPropertyDescriptor:V}=Object,N=Object.prototype.hasOwnProperty;var M=(t,r,n)=>{n=t!=null?Q(S(t)):{};let s=r||!t||!t.__esModule?C(n,"default",{value:t,enumerable:!0}):n;for(let o of Y(t))if(!N.call(s,o))C(s,o,{get:()=>t[o],enumerable:!0});return s},W=new WeakMap,Z=(t)=>{var r=W.get(t),n;if(r)return r;if(r=C({},"__esModule",{value:!0}),t&&typeof t==="object"||typeof t==="function")Y(t).map((s)=>!N.call(r,s)&&C(r,s,{get:()=>t[s],enumerable:!(n=V(t,s))||n.enumerable}));return W.set(t,r),r},y=(t,r)=>()=>(r||t((r={exports:{}}).exports,r),r.exports);var A=(t,r)=>{for(var n in r)C(t,n,{get:r[n],enumerable:!0,configurable:!0,set:(s)=>r[n]=()=>s})};var a=y((er,L)=>{var O=process||{},H=O.argv||[],B=O.env||{},G=!(!!B.NO_COLOR||H.includes("--no-color"))&&(!!B.FORCE_COLOR||H.includes("--color")||O.platform==="win32"||(O.stdout||{}).isTTY&&B.TERM!=="dumb"||!!B.CI),j=(t,r,n=t)=>(s)=>{let o=""+s,b=o.indexOf(r,t.length);return~b?t+F(o,r,n,b)+r:t+o+r},F=(t,r,n,s)=>{let o="",b=0;do o+=t.substring(b,s)+n,b=s+r.length,s=t.indexOf(r,b);while(~s);return o+t.substring(b)},U=(t=G)=>{let r=t?j:()=>String;return{isColorSupported:t,reset:r("\x1B[0m","\x1B[0m"),bold:r("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:r("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:r("\x1B[3m","\x1B[23m"),underline:r("\x1B[4m","\x1B[24m"),inverse:r("\x1B[7m","\x1B[27m"),hidden:r("\x1B[8m","\x1B[28m"),strikethrough:r("\x1B[9m","\x1B[29m"),black:r("\x1B[30m","\x1B[39m"),red:r("\x1B[31m","\x1B[39m"),green:r("\x1B[32m","\x1B[39m"),yellow:r("\x1B[33m","\x1B[39m"),blue:r("\x1B[34m","\x1B[39m"),magenta:r("\x1B[35m","\x1B[39m"),cyan:r("\x1B[36m","\x1B[39m"),white:r("\x1B[37m","\x1B[39m"),gray:r("\x1B[90m","\x1B[39m"),bgBlack:r("\x1B[40m","\x1B[49m"),bgRed:r("\x1B[41m","\x1B[49m"),bgGreen:r("\x1B[42m","\x1B[49m"),bgYellow:r("\x1B[43m","\x1B[49m"),bgBlue:r("\x1B[44m","\x1B[49m"),bgMagenta:r("\x1B[45m","\x1B[49m"),bgCyan:r("\x1B[46m","\x1B[49m"),bgWhite:r("\x1B[47m","\x1B[49m"),blackBright:r("\x1B[90m","\x1B[39m"),redBright:r("\x1B[91m","\x1B[39m"),greenBright:r("\x1B[92m","\x1B[39m"),yellowBright:r("\x1B[93m","\x1B[39m"),blueBright:r("\x1B[94m","\x1B[39m"),magentaBright:r("\x1B[95m","\x1B[39m"),cyanBright:r("\x1B[96m","\x1B[39m"),whiteBright:r("\x1B[97m","\x1B[39m"),bgBlackBright:r("\x1B[100m","\x1B[49m"),bgRedBright:r("\x1B[101m","\x1B[49m"),bgGreenBright:r("\x1B[102m","\x1B[49m"),bgYellowBright:r("\x1B[103m","\x1B[49m"),bgBlueBright:r("\x1B[104m","\x1B[49m"),bgMagentaBright:r("\x1B[105m","\x1B[49m"),bgCyanBright:r("\x1B[106m","\x1B[49m"),bgWhiteBright:r("\x1B[107m","\x1B[49m")}};L.exports=U();L.exports.createColors=U});var sr={};A(sr,{shims:()=>T,report:()=>nr,formatToExportField:()=>K,exports:()=>P});module.exports=Z(sr);function T(){return{type:"bun",name:"shims",plugin:{name:"bunup:shims",setup(t){let r=t.config.target==="node"||t.config.target==="bun",n=t.config.format==="esm",s=t.config.format==="cjs";if(!r||!n&&!s)return;t.config.define={...t.config.define,...s&&{"import.meta.url":"importMetaUrl"}},t.onLoad({filter:/\.(js|ts|jsx|tsx|mts|cts)$/},async({path:o})=>{let b=await Bun.file(o).text(),i="";if(n&&(/\b__dirname\b/.test(b)||/\b__filename\b/.test(b)))i=`import { fileURLToPath } from 'url';
|
|
3
3
|
import { dirname } from 'path';
|
|
4
4
|
|
|
5
5
|
const __filename = fileURLToPath(import.meta.url);
|
|
@@ -9,8 +9,8 @@ const __dirname = dirname(__filename);
|
|
|
9
9
|
|
|
10
10
|
const importMetaUrl = pathToFileURL(__filename).href;
|
|
11
11
|
|
|
12
|
-
`;if(!i)return;let
|
|
13
|
-
`),x=
|
|
14
|
-
`)}})}}}}var
|
|
15
|
-
`);return JSON.stringify({...n,...r},null,
|
|
16
|
-
`:"")}function
|
|
12
|
+
`;if(!i)return;let g=b.split(`
|
|
13
|
+
`),x=g[0],c=g.slice(1);return{contents:[x,i,...c].join(`
|
|
14
|
+
`)}})}}}}var e=M(a()),p=!1;class d{static instance;loggedOnceMessages=new Set;MAX_LABEL_LENGTH=3;cliColor=e.default.blue;mutedColor=e.default.dim;infoColor=e.default.cyan;warnColor=e.default.yellow;errorColor=e.default.red;defaultColor=e.default.white;progressFgColorMap={ESM:e.default.yellow,CJS:e.default.green,IIFE:e.default.magenta,DTS:e.default.blue};progressIdentifierBgColorMap={ESM:e.default.bgYellow,CJS:e.default.bgGreen,IIFE:e.default.bgMagenta,DTS:e.default.bgBlue};labels={cli:"CLI",info:"INFO",warn:"WARN",error:"ERROR"};constructor(){}static getInstance(){if(!d.instance)d.instance=new d;return d.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({fgColor:t,bgColor:r,label:n,message:s,identifier:o,muted:b}){let i=" ".repeat(Math.max(0,this.MAX_LABEL_LENGTH-n.length)),g=b?this.mutedColor(s):s,x=o?` ${r(e.default.black(` ${o} `))}`:"";return`${t(n)} ${i}${g}${x}`}output(t,r={},n=console.log){if(p||!this.shouldLog(r))return;if(r.verticalSpace)n("");if(n(t),r.verticalSpace)n("")}cli(t,r={}){let n=this.formatMessage({fgColor:this.cliColor,bgColor:e.default.bgBlue,label:this.labels.cli,message:t,identifier:r.identifier,muted:r.muted});this.output(n,r)}info(t,r={}){let n=this.formatMessage({fgColor:this.infoColor,bgColor:e.default.bgCyan,label:this.labels.info,message:t,identifier:r.identifier,muted:r.muted});this.output(n,r)}warn(t,r={}){let n=this.formatMessage({fgColor:this.warnColor,bgColor:e.default.bgYellow,label:this.labels.warn,message:t,identifier:r.identifier,muted:r.muted});this.output(n,r,console.warn)}error(t,r={}){let n=this.formatMessage({fgColor:this.errorColor,bgColor:e.default.bgRed,label:this.labels.error,message:t,identifier:r.identifier,muted:r.muted});this.output(n,r,console.error)}getProgressFgColor(t){for(let[r,n]of Object.entries(this.progressFgColorMap))if(t.includes(r))return n;return this.defaultColor}getProgressBgColor(t){for(let[r,n]of Object.entries(this.progressIdentifierBgColorMap))if(t.includes(r))return n;return e.default.bgWhite}progress(t,r,n={}){let s=this.getProgressFgColor(t),o=this.getProgressBgColor(t),b=this.formatMessage({fgColor:s,bgColor:o,label:t,message:r,identifier:n.identifier,muted:n.muted});this.output(b,n)}}function X(t,r,n){let s={};for(let g of t){let x=g.header.length,c=r.map((l)=>l[g.header]?.length||0),u=n?n[g.header]?.length||0:0;s[g.header]=Math.max(x,...c,u)}let o=(g,x,c)=>{return c==="left"?g.padEnd(x):g.padStart(x)},b=t.map((g)=>o(g.header,s[g.header],g.align)).join(e.default.gray(" | "));console.log(e.default.gray(b));let i=t.map((g)=>"-".repeat(s[g.header])).join(" | ");console.log(e.default.gray(i));for(let g of r){let x=t.map((c)=>{let u=g[c.header]||"",l=o(u,s[c.header],c.align);return c.color?c.color(l):l}).join(e.default.gray(" | "));console.log(x)}if(console.log(e.default.gray(i)),n){let g=t.map((x)=>{let c=n[x.header]||"";return o(c,s[x.header],x.align)}).join(e.default.gray(" | "));console.log(g)}}var E=d.getInstance();var f=M(require("path"));var J=M(a());function k(t){let r=t.match(/{\n(\s+)/);if(!r)return 2;return r[1].length}function R(t){if(t===0)return"0 B";let r=["B","KB","MB","GB"],n=Math.floor(Math.log(t)/Math.log(1024));if(n===0)return`${t} ${r[n]}`;return`${(t/1024**n).toFixed(2)} ${r[n]}`}function D(t){let r=f.normalize(t).replace(/\\/g,"/");return r=r.replace(/^[a-zA-Z]:\//,""),r=r.replace(/^\/+/,""),r=r.replace(/\/+/g,"/"),r}function q(t,r){let n=JSON.parse(t),s=t.endsWith(`
|
|
15
|
+
`);return JSON.stringify({...n,...r},null,k(t))+(s?`
|
|
16
|
+
`:"")}function P(){return{type:"bunup",name:"exports",hooks:{onBuildDone:async({output:t,meta:r})=>{if(!r.packageJson.path||!r.packageJson.data)return;try{let n=await Bun.file(r.packageJson.path).text(),s=JSON.parse(n),{exportsField:o,entryPoints:b}=z(t.files),i={...s,...b,exports:o};await Bun.write(r.packageJson.path,q(n,i)),E.cli("Added exports field to package.json")}catch{E.error("Failed to generate exports field in package.json")}}}}}function z(t){let r={},n={};for(let s of t){let o=K(s.format,s.dts),b=`./${D(s.relativePathToRootDir)}`,i=rr(s.outputBasePath);r[i]={...r[i],[o]:b};for(let g of Object.keys(r["."]??{}))n[tr(g,s.dts)]=r["."][g]}return{exportsField:r,entryPoints:n}}function rr(t){let r=t.split("/");if(r.length===1&&r[0]==="index")return".";return`./${r.filter((n)=>n!=="index").join("/")}`}function tr(t,r){return r?"types":t==="require"?"main":"module"}function K(t,r){return r?"types":t==="esm"?"import":"require"}var w=M(a());function nr(t={}){let{maxBundleSize:r,gzip:n=!0}=t;return{type:"bunup",name:"report",hooks:{onBuildDone:async({options:s,output:o})=>{if(s.watch)return;let b=await Promise.all(o.files.map(async(m)=>{let h=m.relativePathToRootDir,$=Bun.file(m.fullPath).size,v,_;if(n)v=Bun.gzipSync(new Uint8Array(await Bun.file(m.fullPath).arrayBuffer())).length,_=R(v);return{name:h,size:$,formattedSize:R($),gzipSize:v,formattedGzipSize:_}})),i=b.reduce((m,h)=>m+h.size,0),g=R(i),x,c;if(n)x=b.reduce((m,h)=>m+(h.gzipSize||0),0),c=R(x);let u=[{header:"File",align:"left",color:w.default.blue},{header:"Size",align:"right",color:w.default.green}];if(n)u.push({header:"Gzip",align:"right",color:w.default.magenta});let l=b.map((m)=>{let h={File:m.name,Size:m.formattedSize};if(n&&m.formattedGzipSize)h.Gzip=m.formattedGzipSize;return h}),I={File:"Total",Size:g};if(n&&c)I.Gzip=c;if(console.log(""),X(u,l,I),r&&i>r)console.log(""),console.log(w.default.red(`Your bundle size of ${g} exceeds the configured limit of ${R(r)}`));console.log("")}}}}})
|
package/dist/plugins.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
var
|
|
2
|
+
var U=Object.create;var{getPrototypeOf:X,defineProperty:$,getOwnPropertyNames:D}=Object;var q=Object.prototype.hasOwnProperty;var E=(t,r,n)=>{n=t!=null?U(X(t)):{};let s=r||!t||!t.__esModule?$(n,"default",{value:t,enumerable:!0}):n;for(let o of D(t))if(!q.call(s,o))$(s,o,{get:()=>t[o],enumerable:!0});return s};var K=(t,r)=>()=>(r||t((r={exports:{}}).exports,r),r.exports);var B=K((z,v)=>{var M=process||{},_=M.argv||[],w=M.env||{},Q=!(!!w.NO_COLOR||_.includes("--no-color"))&&(!!w.FORCE_COLOR||_.includes("--color")||M.platform==="win32"||(M.stdout||{}).isTTY&&w.TERM!=="dumb"||!!w.CI),S=(t,r,n=t)=>(s)=>{let o=""+s,b=o.indexOf(r,t.length);return~b?t+V(o,r,n,b)+r:t+o+r},V=(t,r,n,s)=>{let o="",b=0;do o+=t.substring(b,s)+n,b=s+r.length,s=t.indexOf(r,b);while(~s);return o+t.substring(b)},W=(t=Q)=>{let r=t?S:()=>String;return{isColorSupported:t,reset:r("\x1B[0m","\x1B[0m"),bold:r("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:r("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:r("\x1B[3m","\x1B[23m"),underline:r("\x1B[4m","\x1B[24m"),inverse:r("\x1B[7m","\x1B[27m"),hidden:r("\x1B[8m","\x1B[28m"),strikethrough:r("\x1B[9m","\x1B[29m"),black:r("\x1B[30m","\x1B[39m"),red:r("\x1B[31m","\x1B[39m"),green:r("\x1B[32m","\x1B[39m"),yellow:r("\x1B[33m","\x1B[39m"),blue:r("\x1B[34m","\x1B[39m"),magenta:r("\x1B[35m","\x1B[39m"),cyan:r("\x1B[36m","\x1B[39m"),white:r("\x1B[37m","\x1B[39m"),gray:r("\x1B[90m","\x1B[39m"),bgBlack:r("\x1B[40m","\x1B[49m"),bgRed:r("\x1B[41m","\x1B[49m"),bgGreen:r("\x1B[42m","\x1B[49m"),bgYellow:r("\x1B[43m","\x1B[49m"),bgBlue:r("\x1B[44m","\x1B[49m"),bgMagenta:r("\x1B[45m","\x1B[49m"),bgCyan:r("\x1B[46m","\x1B[49m"),bgWhite:r("\x1B[47m","\x1B[49m"),blackBright:r("\x1B[90m","\x1B[39m"),redBright:r("\x1B[91m","\x1B[39m"),greenBright:r("\x1B[92m","\x1B[39m"),yellowBright:r("\x1B[93m","\x1B[39m"),blueBright:r("\x1B[94m","\x1B[39m"),magentaBright:r("\x1B[95m","\x1B[39m"),cyanBright:r("\x1B[96m","\x1B[39m"),whiteBright:r("\x1B[97m","\x1B[39m"),bgBlackBright:r("\x1B[100m","\x1B[49m"),bgRedBright:r("\x1B[101m","\x1B[49m"),bgGreenBright:r("\x1B[102m","\x1B[49m"),bgYellowBright:r("\x1B[103m","\x1B[49m"),bgBlueBright:r("\x1B[104m","\x1B[49m"),bgMagentaBright:r("\x1B[105m","\x1B[49m"),bgCyanBright:r("\x1B[106m","\x1B[49m"),bgWhiteBright:r("\x1B[107m","\x1B[49m")}};v.exports=W();v.exports.createColors=W});function k(){return{type:"bun",name:"shims",plugin:{name:"bunup:shims",setup(t){let r=t.config.target==="node"||t.config.target==="bun",n=t.config.format==="esm",s=t.config.format==="cjs";if(!r||!n&&!s)return;t.config.define={...t.config.define,...s&&{"import.meta.url":"importMetaUrl"}},t.onLoad({filter:/\.(js|ts|jsx|tsx|mts|cts)$/},async({path:o})=>{let b=await Bun.file(o).text(),i="";if(n&&(/\b__dirname\b/.test(b)||/\b__filename\b/.test(b)))i=`import { fileURLToPath } from 'url';
|
|
3
3
|
import { dirname } from 'path';
|
|
4
4
|
|
|
5
5
|
const __filename = fileURLToPath(import.meta.url);
|
|
@@ -9,8 +9,8 @@ const __dirname = dirname(__filename);
|
|
|
9
9
|
|
|
10
10
|
const importMetaUrl = pathToFileURL(__filename).href;
|
|
11
11
|
|
|
12
|
-
`;if(!i)return;let
|
|
13
|
-
`),x=
|
|
14
|
-
`)}})}}}}var
|
|
15
|
-
`);return JSON.stringify({...n,...r},null,
|
|
16
|
-
`:"")}function
|
|
12
|
+
`;if(!i)return;let g=b.split(`
|
|
13
|
+
`),x=g[0],c=g.slice(1);return{contents:[x,i,...c].join(`
|
|
14
|
+
`)}})}}}}var e=E(B(),1),Z=!1;class d{static instance;loggedOnceMessages=new Set;MAX_LABEL_LENGTH=3;cliColor=e.default.blue;mutedColor=e.default.dim;infoColor=e.default.cyan;warnColor=e.default.yellow;errorColor=e.default.red;defaultColor=e.default.white;progressFgColorMap={ESM:e.default.yellow,CJS:e.default.green,IIFE:e.default.magenta,DTS:e.default.blue};progressIdentifierBgColorMap={ESM:e.default.bgYellow,CJS:e.default.bgGreen,IIFE:e.default.bgMagenta,DTS:e.default.bgBlue};labels={cli:"CLI",info:"INFO",warn:"WARN",error:"ERROR"};constructor(){}static getInstance(){if(!d.instance)d.instance=new d;return d.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({fgColor:t,bgColor:r,label:n,message:s,identifier:o,muted:b}){let i=" ".repeat(Math.max(0,this.MAX_LABEL_LENGTH-n.length)),g=b?this.mutedColor(s):s,x=o?` ${r(e.default.black(` ${o} `))}`:"";return`${t(n)} ${i}${g}${x}`}output(t,r={},n=console.log){if(Z||!this.shouldLog(r))return;if(r.verticalSpace)n("");if(n(t),r.verticalSpace)n("")}cli(t,r={}){let n=this.formatMessage({fgColor:this.cliColor,bgColor:e.default.bgBlue,label:this.labels.cli,message:t,identifier:r.identifier,muted:r.muted});this.output(n,r)}info(t,r={}){let n=this.formatMessage({fgColor:this.infoColor,bgColor:e.default.bgCyan,label:this.labels.info,message:t,identifier:r.identifier,muted:r.muted});this.output(n,r)}warn(t,r={}){let n=this.formatMessage({fgColor:this.warnColor,bgColor:e.default.bgYellow,label:this.labels.warn,message:t,identifier:r.identifier,muted:r.muted});this.output(n,r,console.warn)}error(t,r={}){let n=this.formatMessage({fgColor:this.errorColor,bgColor:e.default.bgRed,label:this.labels.error,message:t,identifier:r.identifier,muted:r.muted});this.output(n,r,console.error)}getProgressFgColor(t){for(let[r,n]of Object.entries(this.progressFgColorMap))if(t.includes(r))return n;return this.defaultColor}getProgressBgColor(t){for(let[r,n]of Object.entries(this.progressIdentifierBgColorMap))if(t.includes(r))return n;return e.default.bgWhite}progress(t,r,n={}){let s=this.getProgressFgColor(t),o=this.getProgressBgColor(t),b=this.formatMessage({fgColor:s,bgColor:o,label:t,message:r,identifier:n.identifier,muted:n.muted});this.output(b,n)}}function Y(t,r,n){let s={};for(let g of t){let x=g.header.length,c=r.map((l)=>l[g.header]?.length||0),u=n?n[g.header]?.length||0:0;s[g.header]=Math.max(x,...c,u)}let o=(g,x,c)=>{return c==="left"?g.padEnd(x):g.padStart(x)},b=t.map((g)=>o(g.header,s[g.header],g.align)).join(e.default.gray(" | "));console.log(e.default.gray(b));let i=t.map((g)=>"-".repeat(s[g.header])).join(" | ");console.log(e.default.gray(i));for(let g of r){let x=t.map((c)=>{let u=g[c.header]||"",l=o(u,s[c.header],c.align);return c.color?c.color(l):l}).join(e.default.gray(" | "));console.log(x)}if(console.log(e.default.gray(i)),n){let g=t.map((x)=>{let c=n[x.header]||"";return o(c,s[x.header],x.align)}).join(e.default.gray(" | "));console.log(g)}}var O=d.getInstance();import or,{normalize as A}from"path";var y=E(B(),1);function T(t){let r=t.match(/{\n(\s+)/);if(!r)return 2;return r[1].length}function R(t){if(t===0)return"0 B";let r=["B","KB","MB","GB"],n=Math.floor(Math.log(t)/Math.log(1024));if(n===0)return`${t} ${r[n]}`;return`${(t/1024**n).toFixed(2)} ${r[n]}`}function N(t){let r=A(t).replace(/\\/g,"/");return r=r.replace(/^[a-zA-Z]:\//,""),r=r.replace(/^\/+/,""),r=r.replace(/\/+/g,"/"),r}function H(t,r){let n=JSON.parse(t),s=t.endsWith(`
|
|
15
|
+
`);return JSON.stringify({...n,...r},null,T(t))+(s?`
|
|
16
|
+
`:"")}function cr(){return{type:"bunup",name:"exports",hooks:{onBuildDone:async({output:t,meta:r})=>{if(!r.packageJson.path||!r.packageJson.data)return;try{let n=await Bun.file(r.packageJson.path).text(),s=JSON.parse(n),{exportsField:o,entryPoints:b}=G(t.files),i={...s,...b,exports:o};await Bun.write(r.packageJson.path,H(n,i)),O.cli("Added exports field to package.json")}catch{O.error("Failed to generate exports field in package.json")}}}}}function G(t){let r={},n={};for(let s of t){let o=p(s.format,s.dts),b=`./${N(s.relativePathToRootDir)}`,i=j(s.outputBasePath);r[i]={...r[i],[o]:b};for(let g of Object.keys(r["."]??{}))n[F(g,s.dts)]=r["."][g]}return{exportsField:r,entryPoints:n}}function j(t){let r=t.split("/");if(r.length===1&&r[0]==="index")return".";return`./${r.filter((n)=>n!=="index").join("/")}`}function F(t,r){return r?"types":t==="require"?"main":"module"}function p(t,r){return r?"types":t==="esm"?"import":"require"}var C=E(B(),1);function lr(t={}){let{maxBundleSize:r,gzip:n=!0}=t;return{type:"bunup",name:"report",hooks:{onBuildDone:async({options:s,output:o})=>{if(s.watch)return;let b=await Promise.all(o.files.map(async(m)=>{let h=m.relativePathToRootDir,f=Bun.file(m.fullPath).size,a,I;if(n)a=Bun.gzipSync(new Uint8Array(await Bun.file(m.fullPath).arrayBuffer())).length,I=R(a);return{name:h,size:f,formattedSize:R(f),gzipSize:a,formattedGzipSize:I}})),i=b.reduce((m,h)=>m+h.size,0),g=R(i),x,c;if(n)x=b.reduce((m,h)=>m+(h.gzipSize||0),0),c=R(x);let u=[{header:"File",align:"left",color:C.default.blue},{header:"Size",align:"right",color:C.default.green}];if(n)u.push({header:"Gzip",align:"right",color:C.default.magenta});let l=b.map((m)=>{let h={File:m.name,Size:m.formattedSize};if(n&&m.formattedGzipSize)h.Gzip=m.formattedGzipSize;return h}),L={File:"Total",Size:g};if(n&&c)L.Gzip=c;if(console.log(""),Y(u,l,L),r&&i>r)console.log(""),console.log(C.default.red(`Your bundle size of ${g} exceeds the configured limit of ${R(r)}`));console.log("")}}}}export{k as shims,lr as report,p as formatToExportField,cr as exports};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bunup",
|
|
3
3
|
"description": "⚡ A blazing-fast build tool for your libraries built with Bun.",
|
|
4
|
-
"version": "0.7.
|
|
4
|
+
"version": "0.7.5",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Arshad Yaseen <m@arshadyaseen.com> (https://arshadyaseen.com)",
|
|
7
7
|
"maintainers": [
|
|
@@ -17,9 +17,16 @@
|
|
|
17
17
|
},
|
|
18
18
|
"funding": "https://github.com/sponsors/arshad-yaseen",
|
|
19
19
|
"homepage": "https://bunup.dev",
|
|
20
|
-
"keywords": [
|
|
20
|
+
"keywords": [
|
|
21
|
+
"bun",
|
|
22
|
+
"bunup",
|
|
23
|
+
"bun-bundler"
|
|
24
|
+
],
|
|
21
25
|
"type": "module",
|
|
22
|
-
"files": [
|
|
26
|
+
"files": [
|
|
27
|
+
"dist",
|
|
28
|
+
"bin"
|
|
29
|
+
],
|
|
23
30
|
"bin": {
|
|
24
31
|
"bunup": "bin/bunup.mjs"
|
|
25
32
|
},
|
|
@@ -67,20 +74,23 @@
|
|
|
67
74
|
"*": "bun run format:fix && git add .",
|
|
68
75
|
"src/**/*.(m|c)?(j|t)s": "bun run tsc"
|
|
69
76
|
},
|
|
70
|
-
"workspaces": [
|
|
71
|
-
|
|
72
|
-
|
|
77
|
+
"workspaces": [
|
|
78
|
+
"docs",
|
|
79
|
+
"tests"
|
|
80
|
+
],
|
|
81
|
+
"module": "./dist/index.js",
|
|
82
|
+
"main": "./dist/index.cjs",
|
|
73
83
|
"types": "./dist/index.d.cts",
|
|
74
84
|
"exports": {
|
|
75
85
|
".": {
|
|
76
|
-
"types": "./dist/index.d.cts",
|
|
77
86
|
"import": "./dist/index.js",
|
|
78
|
-
"require": "./dist/index.cjs"
|
|
87
|
+
"require": "./dist/index.cjs",
|
|
88
|
+
"types": "./dist/index.d.cts"
|
|
79
89
|
},
|
|
80
90
|
"./plugins": {
|
|
81
|
-
"types": "./dist/plugins.d.cts",
|
|
82
91
|
"import": "./dist/plugins.js",
|
|
83
|
-
"require": "./dist/plugins.cjs"
|
|
92
|
+
"require": "./dist/plugins.cjs",
|
|
93
|
+
"types": "./dist/plugins.d.cts"
|
|
84
94
|
}
|
|
85
95
|
}
|
|
86
96
|
}
|