@bongo/bongo 0.0.0-stage → 0.1.0

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/index.js ADDED
@@ -0,0 +1,26 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},s=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},c=(n,r,o)=>(o=n==null?{}:e(i(n)),s(r||!n||!n.__esModule||!a.call(n,`default`)?t(o,`default`,{value:n,enumerable:!0}):o,n));let l=require("node:fs"),u=require("node:path");u=c(u);let d=require("kleur/colors"),f=require("mrmime");f=c(f);let p=require("node:fs/promises"),m=require("node:module"),h=require("node:os"),g=require("node:url"),_=require("node:crypto"),v=require("node:util"),y=require("lightningcss");y=c(y);let b=require("browserslist");b=c(b);let x=require("node:stream/promises"),S=require("resolve.exports"),ee=require("node:child_process"),C=require("tempura");C=c(C);let w=require("node:http"),T=require("node:net");const E=/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?$/,te=/^[|>][-+0-9]*(?:\s+#.*)?$/,D=/^\s*(?:#.*)?$/,ne={0:`\0`,a:`\x07`,b:`\b`,e:`\x1B`,f:`\f`,n:`
2
+ `,r:`\r`,t:` `,v:`\v`,N:`…`,_:`\xA0`,L:`\u2028`,P:`\u2029`},re={x:2,u:4,U:8};function O(e,t){return/* @__PURE__ */ SyntaxError(`${t} at line ${e}`)}function ie(e,t,n){Object.defineProperty(e,t,{value:n,enumerable:!0,writable:!0,configurable:!0})}function k(e,t){for(;t<e.length&&/\s/.test(e[t]);)t++;return t}function A(e,t){return e===`"`||e===`'`||t&&e==="`"}function j(e){return e===`-`||e.startsWith(`- `)}function ae(e){if(e===``||e===`~`||/^(?:null|Null|NULL)$/.test(e))return null;if(/^(?:true|True|TRUE)$/.test(e))return!0;if(/^(?:false|False|FALSE)$/.test(e))return!1;if(E.test(e)){let t=Number(e);if(Number.isFinite(t))return t}return e}function M(e,t,n){let r=e[t],i=``;for(let a=t+1;a<e.length;a++){let t=e[a];if(t===r){if(r===`'`&&!n&&e[a+1]===`'`){i+=`'`,a++;continue}return{value:i,end:a+1}}if(t!==`\\`||!n&&r===`'`){i+=t;continue}let o=e[++a];if(o===void 0)return;let s=re[o];if(!s){i+=ne[o]??o;continue}let c=e.slice(a+1,a+1+s),l=parseInt(c,16);if(c.length!==s||!/^[\da-f]+$/i.test(c)||l>1114111)return;i+=String.fromCodePoint(l),a+=s}}function oe(e,t,n){let r=[];for(t=k(e,t+1);e[t]!==`]`;){if(t>=e.length)return;let i=se(e,t,n);if(!i)return;if(r.push(i.value),t=k(e,i.end),e[t]===`,`)t=k(e,t+1);else if(e[t]!==`]`)return}return{value:r,end:t+1}}function N(e,t,n){let r={};for(t=k(e,t+1);e[t]!==`}`;){if(t>=e.length)return;let i;if(A(e[t],n)){let r=M(e,t,n);if(!r)return;i=String(r.value),t=k(e,r.end)}else{let n=t;for(;n<e.length&&!`:,}`.includes(e[n]);)n++;if(i=e.slice(t,n).trim(),t=n,!i)return}let a=null;if(e[t]===`:`&&(t=k(e,t+1),e[t]!==`,`&&e[t]!==`}`)){let r=se(e,t,n);if(!r)return;a=r.value,t=k(e,r.end)}if(ie(r,i,a),e[t]===`,`)t=k(e,t+1);else if(e[t]!==`}`)return}return{value:r,end:t+1}}function se(e,t,n){let r=e[t];if(A(r,n))return M(e,t,n);if(r===`[`)return oe(e,t,n);if(r===`{`)return N(e,t,n);let i=t;for(;i<e.length&&!`,]}`.includes(e[i]);)i++;return{value:ae(e.slice(t,i).trim()),end:i}}function ce(e){return e=e.trim(),e[0]===`#`?``:e}function le(e){if(A(e[0],!1)){let t=M(e,0,!1),n=t&&/^\s*:(?:\s+|$)/.exec(e.slice(t.end));return!t||!n?void 0:{key:String(t.value),rest:ce(e.slice(t.end+n[0].length))}}if(`[{#`.includes(e[0])||j(e))return;let t=e.search(/:(?:\s|$)/);if(!(t<1))return{key:e.slice(0,t).trimEnd(),rest:ce(e.slice(t+1))}}function ue(e,t){if(te.test(e))throw O(t,`block scalars (| and >) are not supported`);if(`"'[{`.includes(e[0])){let t=se(e,0,!1);if(t&&D.test(e.slice(t.end)))return t.value}return ae(e.replace(/\s+#.*$/,``))}function de(e,t=1){let n=[];e.split(/\r?\n/).forEach((e,r)=>{let i=e.trim();if(!i||i[0]===`#`||i===`---`&&!n.length)return;let a=e.search(/\S/);if(e.slice(0,a).includes(` `))throw O(t+r,`tabs are not allowed in indentation`);n.push({num:t+r,indent:a,text:i})});let r=0;function i(e){let t=n[r];return t&&t.indent>e?s(t.indent):null}function a(e){let t=[];for(;r<n.length&&n[r].indent===e&&j(n[r].text);){let a=n[r],o=ce(a.text.slice(1));if(!o){r++,t.push(i(e));continue}let c=e+a.text.length-o.length;n[r]={num:a.num,indent:c,text:o},t.push(s(c))}return t}function o(e){let t={};for(;r<n.length&&n[r].indent===e;){let o=n[r],s=le(o.text);if(!s)throw O(o.num,`expected "key: value"`);if(Object.hasOwn(t,s.key))throw O(o.num,`duplicate key "${s.key}"`);r++;let c=n[r];if(s.rest){if(ie(t,s.key,ue(s.rest,o.num)),c&&c.indent>e)throw O(c.num,`bad indentation`)}else c&&c.indent===e&&j(c.text)?ie(t,s.key,a(e)):ie(t,s.key,i(e))}return t}function s(e){let t=n[r];return j(t.text)?a(e):le(t.text)?o(e):(r++,ue(t.text,t.num))}let c=n[0];if(!c)return null;let l=s(c.indent),u=n[r];if(u)throw u.indent===c.indent?Array.isArray(l)?O(u.num,`expected "- item"`):O(c.num,`expected "key: value"`):O(u.num,`bad indentation`);return l}const P=/\s*([^\s=/>"'`]+)/y,fe=/\s*=\s*/y,F=/[^\s>]*/y;function pe(e){let t=[],n=0;for(;n<e.length;){P.lastIndex=n;let r=P.exec(e);if(!r){n++;continue}if(n=P.lastIndex,fe.lastIndex=n,!fe.test(e)){t.push([r[1],!0]);continue}n=fe.lastIndex;let i=e[n],a=i!==void 0&&`"'\`[{`.includes(i),o=a?se(e,n,!0):void 0;if(o){t.push([r[1],o.value]),n=o.end;continue}F.lastIndex=n;let s=F.exec(e)?.[0]??``;t.push([r[1],a||!s?s:ae(s)]),n+=s.length}return Object.fromEntries(t)}function me(e){return y.browserslistToTargets((0,b.default)(e))}const he={chrome:`chrome`,edge:`edge`,firefox:`firefox`,ie:`ie`,opera:`opera`,safari:`safari`,ios_saf:`ios`,android:null,samsung:null};function ge(e){let t=[];for(let[n,r]of Object.entries(e)){let e=he[n];if(!e||typeof r!=`number`)continue;let i=r>>16;t.push(`${e}${i}`)}return t}function _e(e,t){for(let n=e;n instanceof Error;n=n.cause)if(n instanceof t)return n}function I(e){if(!Number.isInteger(e)||e<1)throw Error(`Invalid pool limit "${e}"; use a whole number above 0`);let t=0,n=[],r=[],i;function a(){let e=n.shift();if(e)return e();--t===0&&r.splice(0).forEach(e=>e())}return{async add(r){if(t<e?t++:await new Promise(e=>n.push(e)),i)throw a(),i.error;try{var o=r()}catch(e){throw i??={error:e},a(),e}o.then(()=>{},e=>{i??={error:e}}).finally(a)},async drain(){if(t&&await new Promise(e=>r.push(e)),i)throw i.error}}}async function ve(e){let t=[];for(let n of await Promise.allSettled(e)){if(n.status===`rejected`)throw n.reason;t.push(n.value)}return t}function ye(e){if(!Number.isInteger(e)||e<1)throw Error(`Invalid limit "${e}"; use a whole number above 0`);let t=0,n=[];return async r=>{t<e?t++:await new Promise(e=>n.push(e));try{return await r()}finally{let e=n.shift();e?e():t--}}}const be=l.promises.readdir,L=l.promises.readFile,xe=l.promises.stat;function Se(e){return(0,l.statSync)(e,{throwIfNoEntry:!1})?.isFile()??!1}function Ce(e){return l.promises.rm(e,{force:!0})}function R(e){let t=[];for(let n=(0,u.resolve)(e);;n=(0,u.dirname)(n))try{return(0,u.join)((0,l.realpathSync)(n),...t)}catch{if(n===(0,u.dirname)(n))return(0,u.resolve)(e);t.unshift((0,u.basename)(n))}}function z(e,t){return e.startsWith(t.endsWith(u.sep)?t:t+u.sep)}function we(e,t,n){let r=R(e),i=R(t),a=R((0,h.homedir)());if(r===(0,u.parse)(r).root)return`it is the file system root`;if(r===a)return`it is the home folder`;if(z(a,r))return`it holds the home folder`;if(r===i)return`it is the project root`;if(z(i,r))return`it holds the project root`;if(!z(r,i))return`it is outside the project`;for(let e of n){let t=R(e),n=(0,u.relative)(i,t).split(u.sep).join(`/`)+`/`;if(r===t)return`it is ${n}`;if(z(t,r))return`it holds ${n}`;if(z(r,t))return`it is inside ${n}`}}function Te(e,t,n){let r=we(e,t,n);if(r)throw Error(`Refusing to empty the output folder "${e}": ${r}`)}async function B(e,t,n){Te(e,t,n);try{var r=await l.promises.readdir(e)}catch(e){if(e instanceof Error&&`code`in e&&e.code===`ENOENT`)return;throw e}await Promise.all(r.map(t=>De((0,u.join)(e,t))))}async function Ee(e,t,n,r){Te(e,t,n);let i=[],a=/* @__PURE__ */ new Map,o=/* @__PURE__ */ new Map,s=(e,t)=>{let n={rel:e,dir:t,claimed:!1,gone:!1};i.push(n),o.set(e,n);let r=e.toLowerCase();a.set(r,[...a.get(r)??[],n])},c=async t=>{try{var n=await l.promises.readdir((0,u.join)(e,t),{withFileTypes:!0})}catch(e){if(!t&&e instanceof Error&&`code`in e&&e.code===`ENOENT`)return;throw e}await ve(n.map(async n=>{let r=t?t+`/`+n.name:n.name;if(n.isSymbolicLink())return De((0,u.join)(e,r));s(r,n.isDirectory()),n.isDirectory()&&await c(r)}))};if(r){let e=/* @__PURE__ */ new Set;for(let t of r){s(t,!1);for(let n=t.lastIndexOf(`/`);n>0;n=t.lastIndexOf(`/`,n-1)){let r=t.slice(0,n);if(e.has(r))break;e.add(r),s(r,!0)}}}else await c(``);let d=e=>{for(let t of i)(t.rel===e||t.rel.startsWith(e+`/`))&&(t.gone=!0)},f=/* @__PURE__ */ new Map,p=t=>{let n=f.get(t);return n||f.set(t,n=l.promises.lstat((0,u.join)(e,t)).then(async n=>!n.isSymbolicLink()||(d(t),await De((0,u.join)(e,t)),!1),()=>!0)),n},m=/* @__PURE__ */ new Map;return{async fit(t){let n=(0,u.relative)(e,t).split(u.sep);for(let t=1;t<=n.length;t++){let i=n.slice(0,t).join(`/`),o=i.toLowerCase();for(;m.has(o);)await m.get(o);r&&await p(i);for(let r of a.get(o)??[]){if(r.gone)continue;if(r.rel===i&&r.dir===t<n.length){r.claimed=!0;continue}if(r.claimed)continue;d(r.rel);let a=De((0,u.join)(e,r.rel)).finally(()=>m.delete(o));m.set(o,a),await a}}},claim(t){let n=t.startsWith(e+u.sep)?t.slice(e.length+1):(0,u.relative)(e,t);u.sep!==`/`&&(n=n.split(u.sep).join(`/`));for(let e=n.length;e>0;e=n.lastIndexOf(`/`,e-1)){let t=o.get(n.slice(0,e));if(t&&t.dir===e<n.length){if(t.claimed)break;t.claimed=!0}}},async sweep(){await ve(i.filter(e=>!e.dir&&!e.claimed&&!e.gone).map(async t=>{for(let e=t.rel.indexOf(`/`);r&&e>0;e=t.rel.indexOf(`/`,e+1))if(!await p(t.rel.slice(0,e)))return;t.gone||await Oe((0,u.join)(e,t.rel),e)}))}}}async function De(e){for(let t=1;;t++)try{return await l.promises.rm(e,{recursive:!0,force:!0})}catch(n){if(await l.promises.lstat(e).then(()=>!1,()=>!0))return;if(t===10)throw n;await new Promise(e=>setTimeout(e,10*t))}}async function Oe(e,t){await Ce(e);for(let n=(0,u.dirname)(e);n.startsWith(t+u.sep);n=(0,u.dirname)(n))try{await l.promises.rmdir(n)}catch{return}}async function ke(e){(0,l.existsSync)(e=(0,u.dirname)(e))||await l.promises.mkdir(e,{recursive:!0})}var Ae=class extends Error{file;constructor(e,t){super(e),this.file=t}};function je(e,t=``){if(!(0,l.existsSync)(e))throw new Ae(t||`Missing "${e}" file!`,e)}async function Me(e,t){await ke(e),await l.promises.writeFile(e,t)}async function V(e,t){await ke(t),await(0,x.pipeline)((0,l.createReadStream)(e),(0,l.createWriteStream)(t))}async function Ne(e,t,n=``){let r=[];await ve((await be(e,{withFileTypes:!0})).map(async i=>{let a=(0,u.join)(e,i.name),o=(0,u.join)(n,i.name);if(i.isDirectory())return Ne(a,t,o);if(i.name.startsWith(`index.`))r.push([a,o,i.name]);else return t(a,o,i.name)})),await ve(r.map(async e=>t(...e)))}function Pe(e){return e.on(`error`,e=>{if(e.code!==`ENOENT`)throw e}),e}async function Fe(e,t,n){let r={};try{r[e]=Pe((0,l.watch)(e,{recursive:n},t.bind(0,e)))}catch(i){if(!n||i.code!==`ERR_FEATURE_UNAVAILABLE_ON_PLATFORM`)throw i;r[e]=Pe((0,l.watch)(e,t.bind(0,e)));for(let n of await l.promises.readdir(e,{recursive:!0,withFileTypes:!0})){if(!n.isDirectory())continue;let e=(0,u.join)(n.parentPath,n.name);r[e]=Pe((0,l.watch)(e,t.bind(0,e)))}}return r}async function H(e,t,n={}){let{recursive:r=!0}=n,i=!1,a=/* @__PURE__ */ new Map,o=/* @__PURE__ */ new Set,s=!1;async function c(){if(!s){s=!0;try{for(let e of o)o.delete(e),await t(e)}finally{s=!1}}}let d=function(e,t,n){if(!n||i)return;let r=(0,u.join)(e,n);clearTimeout(a.get(r)),a.set(r,setTimeout(()=>{a.delete(r),o.add(r),c()},50))};async function f(e){let t=[],n,a=``,o=Promise.resolve();async function s(c){let f=(0,u.dirname)(e);for(;!(0,l.existsSync)(f)&&(0,u.dirname)(f)!==f;)f=(0,u.dirname)(f);f!==a&&(n?.close(),a=f,n=Pe((0,l.watch)(f,(t,n)=>{let r=n?(0,u.join)(f,String(n)):``;r&&(r===e||e.startsWith(r+u.sep))&&(o=o.then(()=>i?void 0:s(!0)))})));let p=!!(0,l.statSync)(e,{throwIfNoEntry:!1})?.isDirectory();if(p!==t.length>0&&(t.forEach(e=>e.close()),t=p?Object.values(await Fe(e,d,r)):[],p&&c)){if(r)return Ne(e,(t,n)=>d(e,`rename`,n));for(let t of await l.promises.readdir(e,{withFileTypes:!0}))t.isFile()&&d(e,`rename`,t.name)}}return await s(!1),()=>{n?.close(),t.forEach(e=>e.close())}}let p=await Promise.all([...new Set(e)].map(f));return()=>{i=!0;for(let e of a.values())clearTimeout(e);a.clear(),o.clear();for(let e of p)try{e()}catch{}}}async function Ie(e,t,n,r,i={}){let a={},o,s,c=(0,u.extname)(e).substring(1),l;for(;l!==c&&!i.isTerminal?.(c);){let i=n[c];if(!i)break;l=c;let d=await i(e,t,r);e=d.filename,t=d.content,d.metadata&&Object.assign(a,d.metadata),d.sourcemap!=null&&(o=d.sourcemap),d.headings&&(s=d.headings),c=(0,u.extname)(e).substring(1)}let d={filename:e,content:t,metadata:a};return o!=null&&(d.sourcemap=o),s&&(d.headings=s),d}function Le(e){if(e==null)return null;if(typeof e==`string`)return e;try{return JSON.stringify(e)}catch{return null}}const Re=/^(@[^/]+\/[^./][^/]*|[^@./][^/]*)(\/.+)?$/;function ze(e,t){let[,n,r]=Re.exec(e)||[];if(!n)return;let i=(0,u.dirname)(t);for(;!l.existsSync((0,u.join)(i,`node_modules`,n));){if(i===(0,u.dirname)(i))return;i=(0,u.dirname)(i)}let a=(0,u.join)(i,`node_modules`,n),o=(0,u.join)(a,`package.json`);try{var s=l.existsSync(o)?JSON.parse((0,l.readFileSync)(o,`utf8`)):{}}catch(e){throw Error(`Invalid JSON in ${o}`,{cause:e})}if(!s||typeof s!=`object`)throw Error(`Invalid ${o}: expected an object`);let c=r?`.`+r:`.`,d=[`style`,`import`,`require`].flatMap(e=>{try{return(0,S.exports)(s,c,{unsafe:!0,conditions:[e]})||[]}catch{return[]}}).filter(e=>e.endsWith(`.css`)),f=r?c:(0,S.legacy)(s,{browser:!1,fields:[`style`]});f&&d.push(f);for(let e of d){let t=(0,u.join)(a,e);if(Se(t))return(0,l.realpathSync)(t)}}const Be=/\.module\.css$/;function Ve(e){if(e!=null)return typeof e==`string`||Array.isArray(e)?me(e):e}function He(e){if(!e)return;let t={};for(let[n,r]of Object.entries(e))t[n]=r.name;return t}function Ue(e,t){let n=`\n/*# sourceMappingURL=data:application/json;base64,${t.toString(`base64`)} */\n`;return Buffer.concat([e,Buffer.from(n)])}const We=/^([a-z][a-z\d+.-]*:|\/|#)/i,Ge=/^(\.{0,2}\/|[a-z][a-z\d+.-]*:)/i,Ke=/^[^\s"'()\\\x00-\x1f\x7f]+$/;function qe(e,t){return t&&Ke.test(e)?`url(${e})`:`url("${e.replace(/["\\\n]/g,e=>e===`
3
+ `?`\\a `:`\\`+e)}")`}function Je(e,t){let n=e.search(/[?#]/),r=n<0?e:e.slice(0,n);try{r=decodeURIComponent(r)}catch{}let i=(0,u.resolve)((0,u.dirname)(t),r);if(!l.existsSync(i))throw new Ae(`Missing "${e}" referenced in ${(0,u.resolve)(t)}`,i);return[i,n<0?``:e.slice(n)]}async function Ye(e){let t=e.cssModules??Be.test(e.entry),n=e.sourceMap===`inline`,r=/* @__PURE__ */ new Set,i=/* @__PURE__ */ new Map,a,o=(0,u.extname)(e.entry).substring(1),s=e.assets&&e.utils&&e.assets[o]!=null;if(s){let{assets:t,utils:n}=e,o=await L(e.entry),s=await Ie(e.entry,new Uint8Array(o),t,n),c=typeof s.content==`string`?s.content:new TextDecoder().decode(s.content);i.set(e.entry,c),r.add(e.entry);let l=Le(s.sourcemap);l&&(a=l)}let c=/* @__PURE__ */ new Set,l=await y.bundleAsync({filename:e.entry,minify:e.minify??!1,sourceMap:n,cssModules:t?!0:void 0,targets:Ve(e.targets),resolver:{resolve(e,t){let n=e.startsWith(`/`)?e:(0,u.dirname)(t)+u.sep+e;if(Ge.test(e)||Se(n))return n;let r=ze(e,t);if(r)return r;throw Error(`Cannot resolve @import "${e}" in ${(0,u.resolve)(t)}`)},async read(t){(0,u.resolve)(t)!==(0,u.resolve)(e.entry)&&c.add((0,u.resolve)(t));let n=i.get(t);if(n!=null)return n;let a=(0,u.extname)(t).substring(1);if(s&&e.assets[a]){let{assets:n,utils:a}=e,o=await L(t),s=await Ie(t,new Uint8Array(o),n,a);r.add(t);let c=typeof s.content==`string`?s.content:new TextDecoder().decode(s.content);return i.set(t,c),c}return L(t,`utf8`)}},inputSourceMap:a,analyzeDependencies:e.url?!0:void 0}),d=Buffer.isBuffer(l.code)?l.code:Buffer.from(l.code),f=l.map?Buffer.isBuffer(l.map)?l.map:Buffer.from(l.map):void 0,p=/* @__PURE__ */ new Set;if(e.url){let t=d.toString(`utf8`);for(let n of l.dependencies||[]){if(n.type!==`url`)continue;let r=n.url;if(r&&!We.test(r)){let[t,i]=Je(r,n.loc.filePath);p.add(t),r=await e.url(t)+i}t=t.replace(`url("${n.placeholder}")`,()=>qe(r,e.minify??!1))}d=Buffer.from(t)}let m=[];for(let e of[...r,...c,...p])m.includes(e)||m.push(e);let h={code:n&&f?Ue(d,f):d,dependencies:m};!n&&f&&(h.map=f);let g=He(l.exports);return g&&(h.exports=g),h}const U=1e3;function W(e){return(0,_.createHash)(`sha1`).update(e).digest(`base64url`)}let Xe;async function Ze(){return Xe??=W(`7\0`+await(0,p.readFile)((0,l.realpathSync)(__filename),`utf8`))}function Qe(e){for(let t=e;;t=(0,u.dirname)(t)){for(let e of[`bun.lock`,`bun.lockb`,`package-lock.json`,`pnpm-lock.yaml`,`yarn.lock`]){let n=(0,u.join)(t,e);if(l.existsSync(n))return n}if(t===(0,u.dirname)(t))return}}async function $e(e){let t=[];return l.existsSync(e)&&await Ne(e,e=>void t.push(e)),t.sort()}async function et(e,t){let n=(0,_.createHash)(`sha1`);n.update(JSON.stringify([await Ze(),process.versions.bun??process.version,e.minify,e.dev,e.drafts,e.dest]));let r=Qe(e.cwd),i=[.../* @__PURE__ */ new Set([...t,...await $e(e.layouts),...await $e(e.partials),...r?[r]:[]])].sort();for(let e of i)n.update(e+`\0`),l.existsSync(e)&&n.update(await(0,p.readFile)(e)),n.update(`\0`);return n.digest(`hex`)}function tt(e,t,n,r){let i=t.output.startsWith(n+u.sep)?t.output.slice(n.length+1):t.output,a=t.headings.map(({level:e,id:t,text:n,html:r})=>r===n?[e,t,n]:[e,t,n,r]),o=[e,t.hash,t.kind,t.ext,t.params,t.path,t.url,i,t.section,t.tags,a,t.record,t.draft],s=t.page;return s&&o.push([s.reads,s.loads,r.get(s.placeholders.join(`
4
+ `))??-1,s.inline,s.renders,s.found,s.stat]),o}function nt(e,t,n){let[r,i,a,o,s,c,l,d,f,p,m,h,g,_]=e,v={hash:i,kind:a,ext:o,params:s,path:c,url:l,output:(0,u.isAbsolute)(d)?d:t+u.sep+d,section:f,tags:p,headings:m.map(([e,t,n,r])=>({level:e,id:t,text:n,html:r??n})),record:h,draft:g};if(_){let[e,t,r,i,a,o,s]=_;v.page={reads:e,loads:t,placeholders:n[r]??[],inline:i,renders:a,found:o,stat:s}}return[r,v]}function rt(e){return(0,u.join)(e.cwd,`node_modules`,`.cache`,`bongo`,`memo.json`)}async function it(e){try{let[t,...n]=(await(0,p.readFile)(rt(e),`utf8`)).split(`
5
+ `),{code:r,lists:i,...a}=JSON.parse(t);if(r!==await Ze())return;let o={...a,items:{}};for(let t of n){if(!t)continue;let[n,r]=nt(JSON.parse(t),e.dest,i);o.items[n]=r}return o}catch{return}}async function at(e){await(0,p.rm)(rt(e),{force:!0})}async function ot(e,t){let n=rt(e);await(0,p.mkdir)((0,u.dirname)(n),{recursive:!0});let r=`${n}.${process.pid}.tmp`,{items:i,...a}=t,o=Object.entries(i),s=/* @__PURE__ */ new Map,c=[];for(let[,e]of o){let t=e.page?.placeholders.join(`
6
+ `);t===void 0||s.has(t)||(s.set(t,c.length),c.push(e.page?.placeholders??[]))}let l=await(0,p.open)(r,`w`);try{await l.write(JSON.stringify({code:await Ze(),...a,lists:c})+`
7
+ `);for(let t=0;t<o.length;t+=U)await l.write(o.slice(t,t+U).map(([t,n])=>JSON.stringify(tt(t,n,e.dest,s))+`
8
+ `).join(``))}finally{await l.close()}await(0,p.rename)(r,n)}const st=(0,v.promisify)(ee.execFile);async function ct(e){try{await st(`minify`,[`--version`])}catch{return!1}for(let t=0;t<e.length;t+=200)await st(`minify`,[`-q`,`-i`,...e.slice(t,t+200)]);return!0}let lt=/* @__PURE__ */ new Map;function ut(e){return{dir:e,write:Me,copy:V,defer:async(e,t)=>Me(e,await t()),read:e=>L(e),remove:t=>Oe(t,e),clear:()=>Promise.reject(/* @__PURE__ */ Error(`Refusing to empty "${e}": it is not an output folder`)),reuse:()=>Promise.reject(/* @__PURE__ */ Error(`Refusing to empty "${e}": it is not an output folder`)),sweep:async()=>{},stat:e=>(0,p.stat)(e).then(e=>[e.size,e.mtimeMs],()=>void 0),keep:async()=>{},minify:ct}}function dt(e){let t=lt.get(e.dest);if(t)return t;let n=[e.assets,e.content,e.data,e.layouts,e.partials],r,i={...ut(e.dest),async write(e,t){await r?.fit(e),await Me(e,t)},async copy(e,t){await r?.fit(t),await V(e,t)},async defer(e,t){let n=await t();await r?.fit(e),await Me(e,n)},async clear(){r=void 0,await at(e),await B(e.dest,e.cwd,n)},async reuse(t){r=void 0,r=await Ee(e.dest,e.cwd,n,t)},async sweep(){let e=r;r=void 0,await e?.sweep()},async keep(e){r?.claim(e)}};return lt.set(e.dest,i),i}function ft(e,t){let n=/* @__PURE__ */ new Map,r=0,i={dir:e,base:`/`,get:e=>n.get(e),async write(e,i){n.set(e,{data:Buffer.from(i),version:++r}),await t?.write(e,i)},async copy(e,r){n.set(r,{file:e}),await t?.copy(e,r)},async defer(e,i){let a,o={make:()=>a??=i().then(t=>{let i=Buffer.from(t);return n.get(e)===o&&n.set(e,{data:i,version:++r}),i},e=>{throw a=void 0,e})};n.set(e,o),await t?.defer(e,o.make)},async read(e){let t=n.get(e);if(!t)throw Error(`No "${e}" in the dev output`);return`make`in t?t.make():`data`in t?t.data:L(t.file)},async remove(e){n.delete(e),await t?.remove(e)},async clear(){n.clear(),await t?.clear()},reuse:()=>i.clear(),sweep:async()=>{},async stat(e){let t=n.get(e);if(t)return`data`in t?[t.data.length,t.version]:[-1,-1]},async keep(e){await t?.keep(e)},async minify(e){let t=await(0,p.mkdtemp)((0,u.join)((0,h.tmpdir)(),`bongo-minify-`));try{let n=await Promise.all(e.map(async(e,n)=>{let r=(0,u.join)(t,`${n}.html`);return await(0,p.writeFile)(r,await i.read(e)),r}));return await ct(n)?(await Promise.all(e.map(async(e,t)=>i.write(e,await(0,p.readFile)(n[t])))),!0):!1}finally{await(0,p.rm)(t,{recursive:!0,force:!0})}}};return i}const G={avif:`avif`,webp:`webp`,jpeg:`jpg`,png:`png`},pt={avif:50,webp:80,jpeg:80},mt=[`avif`,`webp`,`jpeg`],ht=/\.(jpe?g|png|webp)$/i,gt=(0,h.availableParallelism)(),_t=864e5;let vt=/* @__PURE__ */ new Map,yt=/* @__PURE__ */ new Map,bt,xt=0,St=[];function Ct(e){return typeof e==`string`?e:void 0}function wt(e){return Object.hasOwn(G,e)}function Tt(e){return(0,_.createHash)(`sha256`).update(e).digest(`hex`)}function Et(e){return e===!0?[]:e.split(/[\s,]+/).filter(Boolean)}function Dt(e){let t=``;for(let[n,r]of e)r!==void 0&&(t+=r===!0?` ${n}`:` ${n}="${r.replace(/"/g,`&quot;`)}"`);return t}async function Ot(e){xt<gt?xt++:await new Promise(e=>St.push(e));try{return await e()}finally{let e=St.shift();e?e():xt--}}function kt(){return typeof Bun>`u`?void 0:Bun.Image}function At(e,t){let n=t instanceof Error?t.message:String(t);return Error(`Cannot read image "${e}": ${n}`,{cause:t})}function jt(e){return/* @__PURE__ */ Error(`Cannot encode "${e}" as AVIF on this machine. Bun.Image encodes AVIF only on Apple Silicon M3 or newer Macs and on Windows; remove "avif" from formats.`)}function Mt(e){return e instanceof Error&&`code`in e&&e.code===`ERR_IMAGE_FORMAT_UNSUPPORTED`}function Nt(e,t,n){t===`avif`?e.avif(n):t===`webp`?e.webp(n):t===`jpeg`?e.jpeg(n):e.png();let r=Bun.Image.backend;Bun.Image.backend=t===`avif`?`system`:`bun`;try{return e.bytes()}finally{Bun.Image.backend=r}}function Pt(e){return bt||=Nt(new e(Buffer.from(`iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==`,`base64`)),`avif`,{}).then(()=>!0,e=>{if(Mt(e))return!1;throw e})}function Ft(e){let t=/<svg\b((?:"[^"]*"|'[^']*'|[^>"'])*)>/i.exec(e)?.[1]??``,n=e=>{let n=RegExp(`\\s${e}\\s*=\\s*(?:"([^"]*)"|'([^']*)')`,`i`).exec(t);return n?n[1]??n[2]:void 0},r=e=>{let t=n(e);return t&&/^\s*(\d*\.)?\d+\s*(px)?\s*$/.test(t)?parseFloat(t):0},i=r(`width`),a=r(`height`);if(i&&a)return{width:Math.round(i),height:Math.round(a)};let o=(n(`viewBox`)??``).trim().split(/[\s,]+/).map(Number);if(o.length!==4||!(o[2]>0&&o[3]>0))return{};let s=o[2]/o[3];return i?{width:Math.round(i),height:Math.round(i/s)}:a?{width:Math.round(a*s),height:Math.round(a)}:{width:Math.round(o[2]),height:Math.round(o[3])}}async function It(e){if(/\.svg$/i.test(e))return Ft(await(0,p.readFile)(e,`utf8`));if(!/\.gif$/i.test(e))return{};let t=await(0,p.readFile)(e);return t.toString(`ascii`,0,3)!==`GIF`||t.length<10?{}:{width:t.readUInt16LE(6),height:t.readUInt16LE(8)}}function Lt(e){if(e.toString(`latin1`,1,4)===`PNG`)for(let t=8;t+8<=e.length;t+=12+e.readUInt32BE(t)){let n=e.toString(`latin1`,t+4,t+8);if(n===`IDAT`)return;if(n===`acTL`&&e.length>=24)return{width:e.readUInt32BE(16),height:e.readUInt32BE(20)}}else if(e.length>=30&&e.toString(`latin1`,8,16)===`WEBPVP8X`&&e[20]&2)return{width:e.readUIntLE(24,3)+1,height:e.readUIntLE(27,3)+1}}function Rt(e,t){let n=t.sources.get(e);return n||(n=Ot(async()=>{let t=await(0,p.readFile)(e),n=Lt(t);if(n)return{type:`copy`,...n};let r=kt();if(!r)return{type:`unprocessed`};try{var i=await new r(t).metadata()}catch(t){throw At(e,t)}let{width:a,height:o,format:s}=i;return s!==`jpeg`&&s!==`png`&&s!==`webp`?{type:`copy`,width:a,height:o}:{type:`still`,hash:Tt(t),width:a,height:o,format:s}}),t.sources.set(e,n),n)}async function zt(e,t){let n=await(0,p.readFile)(e.file);if(Tt(n)!==e.hash)throw Error(`"${e.file}" changed after the build read it`);let r=kt();if(!r)throw Error(`Resizing "${e.file}" needs Bun`);try{var i=await Nt(new r(n).resize(e.width,void 0,{withoutEnlargement:!0}),e.format,e.options)}catch(t){throw Mt(t)?jt(e.file):At(e.file,t)}await(0,p.mkdir)(e.cache,{recursive:!0});let a=`${t}.${(0,_.randomBytes)(4).toString(`hex`)}.tmp`;try{await(0,p.writeFile)(a,i),await(0,p.rename)(a,t)}catch(e){throw await(0,p.rm)(a,{force:!0}),e}return t}async function Bt(e){let t=(0,u.join)(e.cache,`${e.key}.${G[e.format]}`),n=await(0,p.stat)(t).then(e=>e.mtimeMs,()=>void 0);if(n!==void 0)return Date.now()-n>_t&&await(0,p.utimes)(t,/* @__PURE__ */ new Date,/* @__PURE__ */ new Date).catch(()=>{}),t;let r=yt.get(t);return r||(r=Ot(()=>zt(e,t)).finally(()=>yt.delete(t)),yt.set(t,r),r)}async function Vt(e,t){try{return await t(await Bt(e))}catch(n){if(!(n instanceof Error&&`code`in n&&n.code===`ENOENT`))throw n;return t(await Bt(e))}}function Ht(e,t){let n=e.widths===void 0?t.widths??[640,960,1280,1920,2880]:Et(e.widths).map(Number);if(!n.length||!n.every(e=>Number.isInteger(e)&&e>0))throw Error(`Invalid widths "${e.widths??n}"`);let r=e.formats===void 0?t.formats??[`webp`,`original`]:Et(e.formats);if(!r.length)throw Error(`Invalid formats "${e.formats??r}"`);let i=[];for(let e of r){if(e!==`original`&&!wt(e))throw Error(`Unknown image format "${e}"; use avif, webp, jpeg, png, or original`);i.includes(e)||i.push(e)}let a=e.quality===void 0?t.quality:e.quality===!0?NaN:Number(e.quality),o={};for(let t of mt){let n=typeof a==`number`?a:a?.[t]??pt[t];if(n!==void 0){if(!Number.isInteger(n)||n<1||n>100)throw Error(`Invalid quality "${e.quality??n}"`);o[t]=n}}return{widths:[...new Set(n)].sort((e,t)=>e-t),formats:i,quality:o}}function Ut(e){return{...e,sink:e.sink??ut(e.outDir),jobs:/* @__PURE__ */ new Map,sources:/* @__PURE__ */ new Map,notices:/* @__PURE__ */ new Set}}async function Wt(e,t,n){let r=ht.test(e)?await Rt(e,n):{type:`copy`,...await It(e)};if(r.type===`unprocessed`&&n.notices.add(`images: copied as-is; resizing them needs Bun, eg: bunx --bun bongo`),r.type!==`still`){let t=r.type===`copy`?{width:r.width,height:r.height}:{};return{filename:await n.emit(e),...t,variants:[]}}let{hash:i,width:a,height:o}=r,s=[];for(let e of t.formats){let t=e===`original`?r.format:e;s.includes(t)||s.push(t)}if(s.includes(`avif`)&&!await Pt(Bun.Image))throw jt(e);let c=t.widths.filter(e=>e<a);c.length<t.widths.length&&c.push(a);let l=(0,u.basename)(e,(0,u.extname)(e)),d=`Bun.Image ${Bun.version}`,f=[];for(let r of s){let a=t.quality[r],o=r===`jpeg`?{quality:a,progressive:!0}:{quality:a},s=r===`avif`?`system`:`bun`;for(let t of c){let a=Tt(JSON.stringify([i,d,s,r,t,o])).slice(0,16),c=`${l}-${t}.${a.slice(0,8)}.${G[r]}`;f.push({file:e,hash:i,key:a,format:r,width:t,options:o,cache:n.cache,filename:c})}}let p=f.filter(e=>!n.jobs.has(e.filename));for(let e of p)n.jobs.set(e.filename,e);if(n.dev)for(let e of f)vt.set(e.filename,e);else await Promise.all(p.map(e=>Vt(e,t=>n.sink.copy(t,(0,u.join)(n.outDir,e.filename)))));let m=f.map(e=>({format:e.format,width:e.width,filename:e.filename}));return{filename:m[m.length-1].filename,width:a,height:o,variants:m}}function Gt(e){let t=vt.get(e);return t&&Vt(t,e=>(0,p.readFile)(e))}async function Kt(e,t){let n=t.prune??30;if(n===!1)return;if(!(n>0&&Number.isFinite(n)))throw Error(`Invalid $images.prune "${n}"; use a number of days, or false`);let r=(0,u.join)(e,`.pruned`),i=await(0,p.stat)(r).then(e=>e.mtimeMs,()=>0);if(Date.now()-i<_t)return;try{var a=await(0,p.readdir)(e)}catch{return}await(0,p.writeFile)(r,``);let o=Date.now()-n*_t;await Promise.all(a.filter(e=>e!==`.pruned`).map(async t=>{let n=(0,u.join)(e,t);await(0,p.stat)(n).then(e=>e.mtimeMs,()=>1/0)<o&&await(0,p.rm)(n,{force:!0})}))}function qt(e,t,n){let r=/* @__PURE__ */ new Set([`src`,`widths`,`formats`,`quality`,`sizes`,`loading`,`decoding`]),i=Ct(t.loading)??(t.fetchpriority===`high`?`eager`:`lazy`),a=Ct(t.sizes)??n.sizes??`auto, 100vw`;return i!==`lazy`&&(a=a.replace(/^\s*auto\s*(,\s*|$)/i,``)),`<img`+Dt([[`data-bongo-image`,e],[`sizes`,a||void 0],...Object.entries(t).filter(([e])=>!r.has(e)),[`loading`,i],[`decoding`,Ct(t.decoding)??`async`]])+`/>`}function Jt(e,t,n){let r=Ct(t.sizes),i=Object.entries(t).filter(([e])=>e!==`sizes`&&e!==`width`&&e!==`height`),a=Ct(t.width),o=Ct(t.height);if(e.width&&e.height){let t=e=>e&&/^\d+$/.test(e)?Number(e):0;!a&&!o?[a,o]=[String(e.width),String(e.height)]:!o&&t(a)?o=String(Math.round(t(a)*e.height/e.width)):!a&&t(o)&&(a=String(Math.round(t(o)*e.width/e.height)))}let s=[[`width`,a],[`height`,o]];if(!e.variants.length)return`<img`+Dt([[`src`,n(e.filename)],...i,...s])+`/>`;let c=[...new Set(e.variants.map(e=>e.format))],l=t=>e.variants.filter(e=>e.format===t).map(e=>`${n(e.filename)} ${e.width}w`).join(`, `);return c.slice(0,-1).map(e=>`<source`+Dt([[`type`,`image/${e}`],[`srcset`,l(e)],[`sizes`,r]])+`/>`).join(``)+`<img`+Dt([[`src`,n(e.filename)],[`srcset`,l(c[c.length-1])],[`sizes`,r],...i,...s])+`/>`}let Yt;async function Xt(){return Yt||=await import(`rolldown`)}function Zt(){Xt()}let K=/* @__PURE__ */ new Map,Qt=/* @__PURE__ */ new Map,$t=/* @__PURE__ */ new Map,en=/* @__PURE__ */ new Map;function tn(e){let t={kind:e.kind};for(let n of Object.keys(e).sort()){let r=e[n];r!==void 0&&(t[n]=r)}return t}let nn=/* @__PURE__ */ new Map;function rn(e,t){let n=e+`\0`+JSON.stringify(t),r=nn.get(n);if(r)return r;let i=`__BONGO_BUNDLE:${(0,_.createHash)(`sha256`).update(e).update(`\0`).update(JSON.stringify(tn(t))).digest(`hex`).slice(0,16)}__`;return nn.set(n,i),i}function an(e,t){let n=JSON.stringify(tn(t))+(t.split===!1?`\0`+e:``);return(0,_.createHash)(`sha256`).update(n).digest(`hex`).slice(0,16)}const on=/__BONGO_BUNDLE:[a-f0-9]{16}__/g;function sn(e){return e.slice(15,23)}function cn(e){return[...new Set(e.match(on))].map(e=>Buffer.from(e,`latin1`).toString(`latin1`))}function ln(e){let t=/* @__PURE__ */ new Map;for(let[n,r]of Qt){let i=r.filter(t=>e.has(t.placeholder));i.length&&t.set(n,i)}Qt=t,K=new Map([...K].filter(([t])=>e.has(t)))}function un(e){let t=K.get(e);return t&&[t.entry,t.cfg]}function q(e,t){let n=rn(e,t);if(K.has(n))return n;let r={entry:e,placeholder:n,cfg:t};K.set(n,r);let i=an(e,t),a=Qt.get(i);return a||(a=[],Qt.set(i,a)),a.push(r),n}function dn(e,t){return e+t.split(`/`).map(e=>encodeURIComponent(e).replace(/[!'()*]/g,e=>`%`+e.charCodeAt(0).toString(16).toUpperCase())).join(`/`)}function fn(e,t,n){let r=/* @__PURE__ */ new Map;return i=>{let a=r.get(i);return a||(a=(async()=>{let r=await L(i),a=(0,_.createHash)(`sha256`).update(r).digest(`hex`).slice(0,8),o=u.extname(i),s=`${u.basename(i,o)}.${a}${o}`;return await e.write(u.join(t,s),r),n.add(s),s})(),r.set(i,a),a)}}const pn=/* @__PURE__ */ new Set([`ts`,`js`,`cjs`,`mjs`,`css`,`json`]);function mn(e,t){return{name:`bongo:loaders`,async load(n){if(!e[u.extname(n).substring(1)])return null;let r=await L(n),i=await Ie(n,new Uint8Array(r),e,t),a=typeof i.content==`string`?i.content:new TextDecoder().decode(i.content),o=Le(i.sourcemap);return o?{code:a,map:o}:{code:a}}}}function hn(e){return{name:`bongo:graph`,buildEnd(){for(let t of this.getModuleIds()){let n=this.getModuleInfo(t);n&&u.isAbsolute(t)&&e.set(t,[...n.importedIds,...n.dynamicallyImportedIds])}}}}function gn(e,t){let n=/* @__PURE__ */ new Set([e]);for(let e of n)for(let r of t.get(e)??[])t.has(r)&&n.add(r);return[...n]}async function _n(e,t,n,r,i){await Xt();let a=e[0].cfg,o={},s=/* @__PURE__ */ new Map;for(let t of e.toSorted((e,t)=>e.entry<t.entry?-1:+(e.entry>t.entry))){let e=u.basename(t.entry).replace(/\.[^.]+$/,``)+(i.dev?`.`+sn(t.placeholder):``),n=e,r=1;for(;s.has(n);)n=`${e}-${r++}`;o[n]=t.entry,s.set(n,t)}let c=a.target?{target:ge(me(a.target))}:void 0,l=i.assets&&i.utils&&e.some(e=>{let t=u.extname(e.entry).substring(1);return!pn.has(t)&&i.assets[t]!=null}),d=/* @__PURE__ */ new Map,f=l?[mn(i.assets,i.utils),hn(d)]:[hn(d)],p=await Yt.rolldown({input:o,cwd:i.cwd,resolve:{extensions:[`.ts`,`.js`,`.cjs`,`.mjs`,`.css`,`.json`],mainFields:[`browser`,`module`,`jsnext`,`main`],conditionNames:[`browser`,`import`,`production`]},transform:c,plugins:f});try{let e=await p.generate({format:a.format??`esm`,codeSplitting:a.split!==!1,minify:a.minify??!1,sourcemap:a.sourceMap===`inline`&&`inline`,entryFileNames:i.dev?`[name].js`:`[name].[hash].js`,chunkFileNames:`[name].[hash].js`,assetFileNames:`[name].[hash][extname]`});await Promise.all(e.output.map(e=>i.sink.write(u.join(t,e.fileName),e.type===`chunk`?e.code:e.source)));for(let t of e.output){if(i.files.add(t.fileName),t.type!==`chunk`||!t.isEntry)continue;let e=s.get(t.name);e&&n.set(e.placeholder,{filename:t.fileName,dependencies:t.facadeModuleId?gn(t.facadeModuleId,d):[]})}}finally{await p.close()}}async function vn(e,t,n,r,i){await Promise.all(e.map(async e=>{let r=e.cfg,a=await Ye({entry:e.entry,minify:r.minify,sourceMap:r.sourceMap,targets:r.targets,cssModules:r.cssModules,assets:i.assets,utils:i.utils,url:async e=>dn(i.publicPath,await i.emit(e))}),o=a.code,s=(0,_.createHash)(`sha256`).update(o).digest(`hex`).slice(0,8),c=`${u.basename(e.entry).replace(/\.[^.]+$/,``)}.${i.dev?sn(e.placeholder):s}.css`;await i.sink.write(u.join(t,c),o),i.files.add(c);let l={filename:c,dependencies:a.dependencies};a.exports&&(l.exports=a.exports),n.set(e.placeholder,l)}))}function yn(e,t){let n=e instanceof Error?e.errors?.[0]||e:void 0,[r,...i]=(0,v.stripVTControlCharacters)(n?n.message:String(e)).trim().split(`
9
+ `),a={message:r};if(t&&(a.file=t),n){let e=n.frame?(0,v.stripVTControlCharacters)(n.frame):i.join(`
10
+ `);e.trim()&&(a.frame=e),n.id&&(a.file=n.id),n.loc&&(n.loc.file&&(a.file=n.loc.file),typeof n.loc.line==`number`&&(a.line=n.loc.line),typeof n.loc.column==`number`&&(a.column=n.loc.column))}return a}function bn(e,t){if(!e.file)return e.message;let n=e.file,r=[t,(0,l.realpathSync)(t)].find(e=>n.startsWith(e+u.sep));return r&&(n=u.relative(r,n)),`${e.message} (${n}${e.line?`:${e.line}:${(e.column??0)+1}`:``})`}async function xn(e){let t=[],n=/* @__PURE__ */ new Map,r=/* @__PURE__ */ new Set,i=e.sink??ut(e.outDir),a=fn(i,e.outDir,r),o={sink:i,assets:e.assets,utils:e.utils,publicPath:e.publicPath??`/`,emit:a,files:r,cwd:e.cwd??process.cwd(),dev:e.dev??!1,images:Ut({outDir:e.outDir,sink:i,cache:e.cache??u.join((0,h.tmpdir)(),`bongo`,`images`),dev:e.dev??!1,emit:a})},s=[...Qt.values()].flatMap(i=>{let a=i[0]?.cfg.kind;return a===`js`?[{regs:i,run:()=>_n(i,e.outDir,n,t,o)}]:i.map(i=>({regs:[i],async run(){if(a===`css`)return vn([i],e.outDir,n,t,o);if(a===`image`){if(!i.cfg.image||!l.existsSync(i.entry))return;let t=await Wt(i.entry,i.cfg.image,o.images);e.dev||t.variants.forEach(e=>r.add(e.filename)),n.set(i.placeholder,{filename:t.filename,dependencies:[i.entry],image:t})}else n.set(i.placeholder,{filename:await o.emit(i.entry),dependencies:[i.entry]})}}))});en=/* @__PURE__ */ new Map;let c=(await Promise.all(s.map(async e=>{try{await e.run()}catch(t){let n=_e(t,Ae);return n&&en.set(n.file,e.regs.map(e=>e.placeholder)),yn(t,e.regs.map(e=>e.entry).join(`, `))}}))).filter(e=>e!==void 0);if($t=n,Tn&&(c.length>0?(Tn({type:`error`,errors:c}),En=!0):En&&=(Tn({type:`error-clear`}),!1)),J&&J.active){let e=[...K.values()].map(e=>e.entry);for(let t of n.values())e.push(...t.dependencies);await Cn(J,[...e,...en.keys()])}return{outputs:n,warnings:t,errors:c,files:[...r],notices:[...o.images.notices]}}let J=null;function Sn(e){if(!J||!J.active||!J.files.has(e))return;let t=/* @__PURE__ */ new Set;for(let[n,r]of $t.entries())r.dependencies.includes(e)&&t.add(n);for(let n of K.values())n.entry===e&&t.add(n.placeholder);en.get(e)?.forEach(e=>t.add(e)),t.size!==0&&J.callback({file:e,changed:t,reload:!0})}async function Cn(e,t){let n=/* @__PURE__ */ new Set;for(let r of t){if(e.skip&&r.startsWith(e.skip+u.sep)||r.split(u.sep).includes(`node_modules`))continue;e.files.add(r);let t=u.dirname(r),i=e=>t===e||t.startsWith(e+u.sep);if(!([...e.dirs.keys()].some(i)||[...n].some(i))){for(let e of n)e.startsWith(t+u.sep)&&n.delete(e);n.add(t)}}for(let t of n){let n=await H([t],Sn);if(!e.active)return n();e.dirs.set(t,n);for(let[n,r]of e.dirs)n.startsWith(t+u.sep)&&(r(),e.dirs.delete(n))}}async function wn(e,t){let n={callback:e,files:/* @__PURE__ */ new Set,dirs:/* @__PURE__ */ new Map,active:!0,skip:t};J=n;let r=[...K.values()].map(e=>e.entry);for(let e of $t.values())r.push(...e.dependencies);return await Cn(n,r),()=>{J===n&&(J=null),n.active=!1;for(let e of n.dirs.values())e();n.dirs.clear()}}let Tn=null,En=!1;function Dn(e){Tn=e}const On=/<bongo:(script|style|client|asset|image|alternate)\b((?:"[^"]*"|'[^']*'|[^>"'\/]|\/(?!>))*?)\s*(?:\/>|>([\s\S]*?)<\/bongo:\1\s*>)/g;let kn;function An(){if(kn)return kn;let e=(0,u.resolve)(__dirname,`client.js`);return kn=l.existsSync(e)?e:(0,u.resolve)(__dirname,`..`,`..`,`client.js`)}let jn=/* @__PURE__ */ new Map;function Mn(){jn=/* @__PURE__ */ new Map}function Nn(e){let t=jn.get(e);return t===void 0&&jn.set(e,t=l.existsSync(e)),t}const Pn=/^[a-zA-Z_$][\w$]*$/;function Fn(e){let t=[];for(let n in e){if(n===`nonce`)continue;let r=e[n],i=Pn.test(n)?n:JSON.stringify(n);t.push(`${i}: ${r===!0?`true`:JSON.stringify(r)}`)}return t.length?`{ ${t.join(`, `)} }`:`{}`}const In=/([\w:-]+)(?:=(?:"([^"]*)"|'([^']*)'|([^\s>]+)))?/g;function Ln(e){let t={},n;for(In.lastIndex=0;n=In.exec(e);){let e=n[1];t[e]=n[2]??n[3]??n[4]??!0}return t}function Rn(e){let t=[];for(let[n,r]of Object.entries(e)){if(r===!1||r==null)continue;let e=r===!0?!0:Array.isArray(r)?r.join(` `):typeof r==`object`?JSON.stringify(r):String(r);t.push([n,e])}return Object.fromEntries(t)}function Y(e){return typeof e==`string`?e:typeof e==`number`?String(e):void 0}function zn(e){return e===!0||e===``||e===`true`}function Bn(e){return e===!1||e===`false`}const Vn=/\.module\.css$/,Hn={"&":`&amp;`,'"':`&quot;`},Un={script:/* @__PURE__ */ new Set([`src`,`inline`,`async`,`defer`,`format`,`target`,`type`]),style:/* @__PURE__ */ new Set([`src`,`inline`,`global`,`rel`,`href`]),alternate:/* @__PURE__ */ new Set([`type`,`href`,`rel`])},Wn={"text/markdown":`md`};function Gn(e){return e===`esm`||e===`cjs`||e===`iife`}function Kn(e,t){let n=``;for(let[r,i]of Object.entries(Rn(e)))t.has(r)||(n+=i===!0?` ${r}`:` ${r}="${Qn(i).replace(/[&"]/g,e=>Hn[e])}"`);return n}function qn(e){return e?e.startsWith(`font/`)?`font`:e.startsWith(`image/`)?`image`:e===`text/css`?`style`:e===`text/javascript`?`script`:`fetch`:`fetch`}const Jn=/<!--[\s\S]*?-->|<(script|style|template|textarea|picture)\b[\s\S]*?<\/\1\s*>|<img(?=[\s\/>])((?:"[^"]*"|'[^']*'|[^>"'])*?)\s*\/?>/gi,Yn=/^([a-z][a-z\d+.-]*:|\/|#|\?)|</i,Xn=/&(?:#(\d+)|#x([\da-f]+)|(amp|quot|apos|lt|gt));/gi,Zn={amp:`&`,quot:`"`,apos:`'`,lt:`<`,gt:`>`};function Qn(e){return e.trim().replace(Xn,(e,t,n,r)=>t?String.fromCodePoint(Number(t)):n?String.fromCodePoint(parseInt(n,16)):Zn[(r??``).toLowerCase()])}function $n(e,t,n){let r=`.`+t.replace(/^\./,``),i=e.replace(/[?#].*$/,``);return i.endsWith(`/`)?(i===n||i===`/`?i+`index`:i.slice(0,-1))+r:i.replace(/\.[^/.]*$/,``)+r}function er(e){try{let{pathname:t}=new URL(e);return t.endsWith(`/`)?t:t+`/`}catch{return`/`}}function tr(e,t,n,r){let{pathname:i}=new URL(e,`http://bongo`+n);try{i=decodeURIComponent(i)}catch{}if(i.startsWith(r))return(0,u.join)(t.content,i.substring(r.length-1))}function nr(e){return e instanceof Error?e.message:String(e)}function rr(e,t,n){let r=f.lookup(t);r===`application/octet-stream`&&(r=void 0);let i=Bn(n.type)?void 0:Y(n.type)||r,a=Y(n.as)||qn(r),o=n.crossorigin===!0||Y(n.crossorigin),s=Bn(n.crossorigin)?void 0:o||a===`font`||a===`fetch`||void 0,c=[[`rel`,`preload`],[`href`,e],[`as`,a],[`type`,i],[`crossorigin`,s],[`media`,Y(n.media)],[`fetchpriority`,Y(n.fetchpriority)]],l=`<link`;for(let[e,t]of c)t!==void 0&&(l+=t===!0?` ${e}`:` ${e}="${t.replace(/[&"]/g,e=>Hn[e])}"`);return l+`/>`}function ir(e,t,n,r,i=`/`,a){let o=er(n.$site?.url??``),s=r?`, rendering ${r}`:``;return e.replace(On,(e,r,c)=>{let l=pe(c);if(r===`alternate`){let t=Y(l.type);if(!t)throw Error(`${e.trim()} needs a type${s}`);t=Qn(t);let r=Wn[t],c=Y(l.href);if(c===void 0&&!r)throw Error(`${e.trim()} needs an href${s}`);let u=c===void 0?$n(i,r,o):Qn(c),d=new URL(n.$site?.url||`http://localhost/`),f=new URL(u,new URL(i,d)),p=f.origin===d.origin,m;if(r&&p&&f.pathname.startsWith(o)){if(f.pathname.endsWith(`/`))throw Error(`${e.trim()} needs an href that names a file${s}`);let t=f.pathname.slice(o.length);try{m=decodeURIComponent(t)}catch{m=t}}if(m!==void 0&&a&&!a.markdown)return``;let h=p?f.pathname+f.search+f.hash:f.href;a?.alternates.push(m===void 0?{type:t,href:h}:{type:t,href:h,file:m});let g=e=>e.replace(/[&"]/g,e=>Hn[e]);return`<link rel="alternate" type="${g(t)}" href="${g(u)}"${Kn(l,Un.alternate)}/>`}if(r===`client`){let e=q(An(),{kind:`js`,format:`esm`,target:n.$build.target,minify:t.minify||void 0}),r=Y(l.nonce);return`<script type="module"${r===void 0?``:` nonce="${r.replace(/[&"]/g,e=>Hn[e])}"`}>import { client } from "${e}"; client(${Fn(l)});<\/script>`}let d=Y(l.src);if(!d)throw Error(`<bongo:${r}> missing required "src" attribute`);let f=(0,u.join)(t.assets,d);if(r===`image`){d=Qn(d);let n=/^\.{0,2}\//.test(d)?t.content:t.assets,r=n===t.content?tr(d,t,i,o):(0,u.join)(t.assets,d);if(!r)throw Error(`Image "${d}" is outside the site at ${o} for ${e.trim()}${s}`);if(f=r,!f.startsWith(n+u.sep))throw Error(`Image "${d}" is outside ${(0,u.relative)(t.src,n)}/ for ${e.trim()}${s}`)}if(!Nn(f))throw new Ae(`Missing "${(0,u.relative)(t.src,f)}" for ${e.trim()}${s}`,f);if(r===`image`){let t=Rn(l);try{var p=Ht(t,n.$images)}catch(t){throw Error(`${nr(t)} for ${e.trim()}${s}`)}return`<picture>${qt(q(f,{kind:`image`,image:p}),t,n.$images)}</picture>`}if(r===`asset`){let e=q(f,{kind:`file`});return zn(l.preload)?rr(e,d,l):e}if(r===`style`){let e=!zn(l.global)&&Vn.test(d),r=q(f,{kind:`css`,targets:n.$build.target,cssModules:e,minify:t.minify||void 0}),i=Kn(l,Un.style);return zn(l.inline)?`<style${i} data-bongo-inline="${r}"></style>`:`<link rel="stylesheet" href="${r}"${i}/>`}let m=Y(l.format)??`esm`;if(!Gn(m))throw Error(`Unknown format "${m}" for ${e.trim()}${s}; use esm, cjs, or iife`);let h=Y(l.target)??n.$build.target,g=zn(l.inline),_=q(f,{kind:`js`,format:m,target:h,split:m===`esm`&&!g&&void 0,minify:t.minify||void 0}),v=m===`esm`?` type="module"`:``,y=(zn(l.async)?` async`:``)+(m!==`esm`&&zn(l.defer)?` defer`:``),b=Kn(l,Un.script);return g?`<script${v}${b} data-bongo-inline="${_}"${y}><\/script>`:`<script${v} src="${_}"${b}${y}><\/script>`})}function ar(e,t,n,r,i){let a=n.$images;if(a.content===!1)return e;let o=er(n.$site.url),s;return e.replace(Jn,(e,n,c)=>{if(c===void 0)return e;let l=Ln(c),d=typeof l.src==`string`?Qn(l.src):``;if(!d||l.srcset!==void 0||Yn.test(d)||!f.lookup(d.replace(/[?#].*/,``))?.startsWith(`image/`))return e;let p=tr(d,t,i,o);if(!p)throw Error(`Image "${d}" is outside the site at ${o} for ${e}, rendering ${r}`);if(!p.startsWith(t.content+u.sep))throw Error(`Image "${d}" is outside content/ for ${e}, rendering ${r}`);if(!Nn(p))throw Error(`Missing "${(0,u.relative)(t.src,p)}" for ${e}, rendering ${r}`);try{let e=Ht({},a).formats;s||=Ht({formats:e[0]},a)}catch(t){throw Error(`${nr(t)} for ${e}, rendering ${r}`)}return qt(q(p,{kind:`image`,image:s}),l,a)})}const or=/\btransition:(name|animate)=(?:"([^"]*)"|'([^']*)')/g,sr=/transition:(?:name|animate)/,cr=/<([\w-]+)(\s[^>]*?)?\s*(\/?)>/g;function lr(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=t*16777619>>>0;return t.toString(16).padStart(8,`0`)}function ur(e){let t=null,n=null,r;for(or.lastIndex=0;r=or.exec(e);){let e=r[2]??r[3];r[1]===`name`?t=e:r[1]===`animate`&&(n=e)}return t===null&&n===null?null:{name:t??``,animate:n}}function dr(e){return e.replace(or,``).replace(/\s{2,}/g,` `).trim()}function fr(e,t){let n=e?.trim()??``;return n?(n.endsWith(`;`)||(n+=`;`),`${n} ${t}`):t}function pr(e){if(!sr.test(e))return e;let t=[];cr.lastIndex=0;let n=e.replace(cr,(e,n,r,i)=>{if(!r)return e;let a=ur(r);if(!a)return e;let{name:o,animate:s}=a,c=o||`bongo-auto-${lr(e)}`,l=dr(r),u=l.match(/\bstyle=(?:"([^"]*)"|'([^']*)')/),d=fr(u?u[1]??u[2]??null:null,`view-transition-name: ${c}`),f;return f=u?l.replace(/\bstyle=(?:"[^"]*"|'[^']*')/,`style="${d}"`):l?`${l} style="${d}"`:`style="${d}"`,s&&t.push(`::view-transition-old(${c}),::view-transition-new(${c}){animation-name:${s}}`),`<${n} ${f}${i?` /`:``}>`});if(t.length>0){let e=`<style data-bongo-transitions>${t.join(``)}</style>`;n=n.includes(`</head>`)?n.replace(`</head>`,`${e}</head>`):e+n}return n}const mr=[`bongo.config.ts`,`bongo.config.mjs`,`bongo.config.cjs`,`bongo.config.js`],hr=/^(?![./#\0]|[a-zA-Z]:[\\/]|file:)/,gr={"import.meta.url":`__bongo_url`,"import.meta.filename":`__bongo_filename`,"import.meta.dirname":`__bongo_dirname`,"import.meta.path":`__bongo_filename`,"import.meta.dir":`__bongo_dirname`,__filename:`__bongo_filename`,__dirname:`__bongo_dirname`},_r={name:`bongo:meta`,transform(e,t){return!/\.[cm]?[jt]sx?$/.test(t)||!/import\.meta|__dirname|__filename/.test(e)?null:{code:`const __bongo_url = ${JSON.stringify((0,g.pathToFileURL)(t).href)}, __bongo_filename = ${JSON.stringify(t)}, __bongo_dirname = ${JSON.stringify((0,u.dirname)(t))};`+e}}},vr=/[\\/]node_modules[\\/]/;function yr(e){let t=(0,u.dirname)(e);for(;!l.existsSync((0,u.join)(t,`package.json`))&&t!==(0,u.dirname)(t);)t=(0,u.dirname)(t);return t}const br=yr((0,l.realpathSync)(__filename));function xr(e,t){let n=e.split(`/`).slice(0,e.startsWith(`@`)?2:1).join(`/`);for(let e=(0,u.dirname)(t);;e=(0,u.dirname)(e)){let t=(0,u.join)(e,`node_modules`,n);if(l.existsSync(t)){if(!(0,l.lstatSync)(t).isSymbolicLink())return;let e=(0,l.realpathSync)(t);return vr.test(e+u.sep)?void 0:e}if(e===(0,u.dirname)(e))return}}async function Sr(e,t,n,r){if(typeof Bun<`u`)try{var i=Bun.resolveSync(t,(0,u.dirname)(n))}catch{return}else{let a=await e.resolve(t,n,{kind:r,skipSelf:!0});if(!a||!l.existsSync(a.id))return;i=a.id}return(0,l.realpathSync)(i)}function Cr(){let e=[];return{name:`bongo:packages`,async resolveId(t,n,r){if(!n||!hr.test(t))return null;if((0,m.isBuiltin)(t)||t.startsWith(`bun:`))return{id:t,external:!0};let i=xr(t,n);if(i&&i!==br){let a=await Sr(this,t,n,r.kind);if(a&&a.startsWith(i+u.sep)&&!a.endsWith(`.node`))return e.push(i),a}if(!e.some(e=>n.startsWith(e+u.sep)))return{id:t,external:!0};let a=await Sr(this,t,n,r.kind);return a?{id:r.kind===`require-call`?a:(0,g.pathToFileURL)(a).href,external:!0}:{id:t,external:!0}}}}function wr(e){for(let t=(0,u.dirname)(e);t!==(0,u.dirname)(t);t=(0,u.dirname)(t)){let e=(0,u.join)(t,`node_modules`);if(l.existsSync(e))return(0,u.join)(e,`.bongo`)}return(0,h.tmpdir)()}async function Tr(e,t){return[.../* @__PURE__ */ new Set([t,...(await e.watchFiles).filter(e=>!e.startsWith(`\0`))])]}var Er=class extends Error{error;files;constructor(e,t,n,r){super(bn(e,n),{cause:r}),this.name=`LoadError`,this.error=e,this.files=t}};async function Dr(e,t=(0,u.dirname)(e)){let n=await(await import(`rolldown`)).rolldown({input:e,platform:`node`,transform:{define:gr},plugins:[Cr(),_r]});try{var{output:r}=await n.generate({format:`esm`,codeSplitting:!1}),i=await Tr(n,e)}catch(r){throw new Er(yn(r,e),await Tr(n,e),t,r)}finally{await n.close()}let[a]=r,o=wr(e);await(0,p.mkdir)(o,{recursive:!0});let s=await(0,p.mkdtemp)((0,u.join)(o,`${(0,u.basename)(e)}-`));try{let e=(0,u.join)(s,`module.mjs`);return await(0,p.writeFile)(e,a.code),{exports:await import((0,g.pathToFileURL)(e).href),files:i}}catch(n){throw new Er({message:n instanceof Error?n.message:String(n),file:e},i,t,n)}finally{await(0,p.rm)(s,{recursive:!0,force:!0})}}async function Or(e,t){let n=0,r=(0,u.resolve)(e,t),i=new Set(await be(r));for(;n<mr.length;n++)if(i.has(mr[n]))return(0,u.join)(r,mr[n]);if(r=(0,u.dirname)(r),r.startsWith(e))return Or(e,r)}function kr(e,t){if(`$assets`in t)throw Error("`$assets` is now `$loaders`: rename it in your config or plugin");t.plugins&&t.plugins.forEach(t=>kr(e,t)),Object.assign(e.$site,t.$site),Object.assign(e.$loaders,t.$loaders),Object.assign(e.$partials,t.$partials),t.$build&&Object.assign(e.$build,t.$build),t.$images&&Object.assign(e.$images,t.$images);let n=t.$hooks?.transform;if(n){let t=e.$hooks.transform;e.$hooks.transform=t?async(e,r)=>n(await t(e,r),r):n}for(let n in t.$utils)typeof t.$utils[n]==`object`?e.$utils[n]=Object.assign(e.$utils[n]||{},t.$utils[n]):e.$utils[n]=t.$utils[n]}const Ar=/<\/?(?:address|article|aside|blockquote|br|dd|div|dl|dt|figcaption|figure|footer|h[1-6]|header|hr|li|main|nav|ol|p|pre|section|table|td|th|tr|ul)\b[^>]*>/gi,jr={amp:`&`,lt:`<`,gt:`>`,quot:`"`,apos:`'`,nbsp:` `};function Mr(e){return(e||``).replace(/<!--[\s\S]*?-->|<(script|style)\b[\s\S]*?<\/\1\s*>/gi,` `).replace(Ar,` `).replace(/<[^>]*>/g,``).replace(/&(?:#(\d+)|#x([\da-f]+)|(\w+));/gi,(e,t,n,r)=>{if(r)return jr[r.toLowerCase()]??e;let i=parseInt(t||n,t?10:16);return i<=1114111?String.fromCodePoint(i):e}).replace(/\s+/g,` `).trim()}const Nr=/* @__PURE__ */ new Map;function Pr(e,t){let n=JSON.stringify([e,Object.entries(t).sort(([e],[t])=>e<t?-1:1)]),r=Nr.get(n);if(r)return r;let i=new Intl.DateTimeFormat(e,{timeZone:`UTC`,...t});if(Nr.size>=100){let[e]=Nr.keys();Nr.delete(e)}return Nr.set(n,i),i}async function Fr(e){let t={$site:{url:``,lang:``,title:``,description:``,menu:{}},$utils:{truncate(e,t){return(e||``).substring(0,t)},countwords(e){let t=(e||``).trim();return t?t.split(/\s+/g).length:0},json(e){return(JSON.stringify(e)??`null`).replace(/[<>&\u2028\u2029]/g,e=>`\\u`+e.charCodeAt(0).toString(16).padStart(4,`0`))},minutes(e,t=200){let n=Mr(e);return n?Math.ceil(n.split(` `).length/t):0},excerpt(e,t){let n=Mr(e);if(n.length<=t)return n;let r=n.lastIndexOf(` `,t);return(r>0?n.substring(0,r):n.substring(0,t)).replace(/[\s.,;:!?…-]+$/,``)+`…`},slug(e){return(e||``).trim().toUpperCase().toLowerCase().replace(/ς/g,`σ`).replace(/ß/g,`ss`).replace(/[^\p{L}\p{M}\p{N}_\- ]/gu,``).replace(/ /g,`-`)},url:{abs(e,n){return new URL(e,n||t.$site.url.replace(/\/?$/,`/`)).href},path(e,n){let r=new URL(e,n||t.$site.url.replace(/\/?$/,`/`));return r.pathname+r.search+r.hash},ext(e,n){return $n(e,n,er(t.$site.url))}},date:{format(e,n){let r=new Date(e);if(isNaN(r.getTime()))throw Error(`Invalid date: ${JSON.stringify(e)}`);return n?Pr(t.$site.lang||`en`,n).format(r):r.toISOString()}}},$loaders:{},$partials:{},$build:{},$images:{},$hooks:{},plugins:[]},n=await Or(e,`.`);if(!n)throw Error(`Missing configuration file`);let r=await Dr(n,e);return kr(t,r.exports.default||r.exports),t.$build.target||=`defaults`,{config:t,files:r.files}}const Ir=[`.ts`,`.mts`,`.js`,`.mjs`,`.cjs`],Lr=[`.json`,`.yaml`,`.yml`,...Ir];function Rr(e){return e&&typeof e==`object`&&!Object.isFrozen(e)&&(Object.values(e).forEach(Rr),Object.freeze(e)),e}function zr(e,t,n){Object.defineProperty(e,t,{value:n,enumerable:!0,writable:!0,configurable:!0})}async function Br(e,t,n){if(Ir.includes(t)){let t=await Dr(e,n);if(!(`default`in t.exports))throw Error(`expected a default export`);return{value:t.exports.default,files:t.files}}let r=await(0,p.readFile)(e,`utf8`);return{value:Rr(t===`.json`?JSON.parse(r):de(r)),files:[e]}}async function Vr(e){if(!l.existsSync(e))return{value:{},files:[]};let t=(0,u.basename)(e),n=(await(0,p.readdir)(e,{recursive:!0,withFileTypes:!0})).filter(e=>!e.isDirectory()).map(t=>(0,u.relative)(e,(0,u.join)(t.parentPath,t.name))).filter(e=>!e.split(u.sep).some(e=>e.startsWith(`.`))).sort(),r=await Promise.all(n.map(async n=>{let r=(0,u.join)(t,n),i=(0,u.extname)(n);if(!Lr.includes(i))throw Error(`${r}: unsupported data file; use ${Lr.slice(0,-1).join(`, `)}, or ${Lr.at(-1)}`);try{var a=await Br((0,u.join)(e,n),i,(0,u.dirname)(e))}catch(e){throw Error(`${r}: ${e instanceof Error?e.message:e}`,{cause:e})}return{name:r,keys:n.slice(0,-i.length).split(u.sep),...a}})),i={},a=/* @__PURE__ */ new Map;for(let e of r){let t=i;e.keys.forEach((n,r)=>{let i=e.keys.slice(0,r+1),o=r===e.keys.length-1,s=a.get(i.join(`/`));if(s&&(o||!s.branch))throw Error(`${s.name} and ${e.name} both define $data.${i.join(`.`)}`);if(o)return a.set(i.join(`/`),{name:e.name}),zr(t,n,e.value);let c=s?.branch??{};s||(a.set(i.join(`/`),{name:e.name,branch:c}),zr(t,n,c)),t=c})}for(let{branch:e}of a.values())e&&Object.freeze(e);return{value:Object.freeze(i),files:r.flatMap(e=>e.files)}}const Hr=/^(\d{4}-\d{2}-\d{2})(?:[T ](\d{2}:\d{2}(?::\d{2}(?:\.\d+)?)?)(Z|[+-]\d{2}:?\d{2})?)?$/i;function Ur(e){if(typeof e!=`string`)return;let t=Hr.exec(e.trim());if(!t)return;let[,n,r=`00:00`,i=`Z`]=t;/^[+-]\d{4}$/.test(i)&&(i=i.slice(0,3)+`:`+i.slice(3));let a=Date.parse(`${n}T${r}${i.toUpperCase()}`);return Number.isNaN(a)?void 0:a}function Wr(e,t){if(e.draft===!0)return!0;if(e.draft===!1)return!1;let n=Ur(e.date);return n!==void 0&&n>t}function Gr(e){console.log(`${(0,d.dim)(`~>`)} ${e}`)}function Kr(...e){console.log(`[DEBUG]`,...e)}const X=console.error.bind(console);function qr(e={}){let{debug:t=!1,every:n=15e3}=e,r=``,i=Date.now(),a=setInterval(()=>{r&&Gr(`${(0,d.yellow)(`still`)} ${r} ${(0,d.dim)(`(${Jr(Date.now()-i)})`)}`)},n);a.unref?.();let o=()=>{t&&r&&Kr(`[stage]`,`${r}: ${Jr(Date.now()-i)}`)};return{step(e){o(),r=e,i=Date.now(),t&&Kr(`[stage]`,r),a.refresh()},stop(){o(),r=``,clearInterval(a)}}}function Jr(e){return e<1e3?`${Math.round(e)}ms`:`${(e/1e3).toFixed(1)}s`}const Yr=[`⠋`,`⠙`,`⠹`,`⠸`,`⠼`,`⠴`,`⠦`,`⠧`,`⠇`,`⠏`];function Xr(e){let t=Date.now();if(!process.stdout.isTTY)return()=>{process.stdout.write(e+` `+(0,d.dim)(`(${Jr(Date.now()-t)})`)+`
11
+ `)};let n=0,r=()=>{process.stdout.write(`\r${e} ${(0,d.dim)(`(${Yr[n++%Yr.length]})`)}\x1b[K`)};r();let i=setInterval(r,80);return()=>{clearInterval(i),process.stdout.write(`\r${e} ${(0,d.dim)(`(${Jr(Date.now()-t)})`)}\x1b[K\n`)}}function Zr(e){return e<1e3?{num:String(e),unit:`B`}:e<1e6?{num:(e/1e3).toFixed(2),unit:`kB`}:{num:(e/1e6).toFixed(2),unit:`MB`}}function Qr(e,t,n){return e.num.padStart(t)+` `+e.unit.padEnd(n)}const $r=/\.(?:[cm]?js|css)$/i;async function ei(e){if(typeof Bun<`u`)return Bun.gzipSync(e).length;let{gzip:t}=await import(`node:zlib`);return new Promise((n,r)=>t(e,(e,t)=>e?r(e):n(t.length)))}function ti(e){return`${e.toLocaleString(`en-US`)} ${e===1?`file`:`files`}`}async function ni(e,t,n,r=/* @__PURE__ */ new Map){let i=e+u.sep,a=t=>{let n=t.startsWith(i)?t.slice(i.length):(0,u.relative)(e,t);return u.sep===`/`?n:n.split(u.sep).join(`/`)},o=(await Promise.all([...n].map(async e=>{let t=r.get(e)??await(0,p.stat)(e).then(e=>e.size,()=>-1);return t<0?[]:[{rel:a(e),bytes:t}]}))).flat();if(!o.length)return;let s=o.length<=50,c=o.filter(e=>s||$r.test(e.rel)).sort((e,t)=>e.rel.localeCompare(t.rel)),l=ye(8),f=await Promise.all(c.map(t=>l(async()=>ei(await(0,p.readFile)((0,u.join)(e,t.rel)))))),m=[];if(!s){let e=/* @__PURE__ */ new Map;for(let{rel:t,bytes:n}of o){if($r.test(t))continue;let r=(0,u.extname)(t)||t.slice(t.lastIndexOf(`/`)+1),i=e.get(r)??{bytes:0,count:0};e.set(r,{bytes:i.bytes+n,count:i.count+1})}let t=[...e].sort(([e,t],[n,r])=>r.bytes-t.bytes||e.localeCompare(n));for(let[e,n]of t)m.push({name:e,size:Zr(n.bytes),count:n.count})}c.forEach((e,t)=>m.push({name:e.rel,size:Zr(e.bytes),gzip:Zr(f[t])}));let h=Math.max(...m.map(e=>e.name.length)),g=Math.max(...m.map(e=>e.size.num.length)),_=Math.max(...m.map(e=>e.size.unit.length)),v=Math.max(0,...m.map(e=>e.gzip?.num.length??0)),y=Math.max(0,...m.map(e=>e.gzip?.unit.length??0)),b=(0,d.cyan)(((0,u.relative)(t,e)||`public`)+`/`),x=Zr(o.reduce((e,t)=>e+t.bytes,0));console.log(``),console.log(s?` ${b}`:` ${b} ${(0,d.dim)(`${ti(o.length)} · ${x.num} ${x.unit}`)}`);for(let e of m){let t=Qr(e.size,g,_),n=e.gzip?`${(0,d.dim)(`│`)} ${Qr(e.gzip,v,y)}`:(0,d.dim)(ti(e.count??0)),r=` `.repeat(Math.max(1,h-e.name.length+2));console.log(` ${(0,d.dim)(e.name)}${r}${t} ${n}`)}console.log(``)}const ri={svg:`svg`,png:`png`,jpg:`jpeg`,jpeg:`jpeg`,webp:`webp`},ii={svg:`svg`,png:`png`,jpeg:`jpg`,webp:`webp`},ai=[100,200,300,400,500,600,700,800,900],oi=/<style\b[^>]*>([\s\S]*?)<\/style\s*>/gi,si=/@font-face\s*\{([^}]*)\}/gi,ci=/<!--[\s\S]*?-->|<!doctype[^>]*>|<\?[\s\S]*?\?>|<!\[CDATA\[[\s\S]*?\]\]>|<\/([a-z][\w:.-]*)\s*>|<([a-z][\w:.-]*)((?:\s+[^\s"'>/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s"'=<>`]+))?)*)\s*(\/?)>/gi,li=/([^\s"'>/=]+)(?:\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s"'=<>`]+)))?/g,ui=/* @__PURE__ */ new Set([`area`,`base`,`br`,`col`,`embed`,`hr`,`img`,`input`,`link`,`meta`,`source`,`track`,`wbr`]),di=/&(?:#(\d+)|#x([\da-f]+)|([a-z]+));/gi,fi={amp:`&`,lt:`<`,gt:`>`,quot:`"`,apos:`'`,nbsp:`\xA0`,mdash:`—`,ndash:`–`,hellip:`…`,middot:`·`,bull:`•`,lsquo:`‘`,rsquo:`’`,ldquo:`“`,rdquo:`”`,laquo:`«`,raquo:`»`,times:`×`,copy:`©`,reg:`®`,trade:`™`,larr:`←`,rarr:`→`},pi=/^(?:[a-z][\w+.-]*:|\/\/)/i,mi=/url\(\s*(?:"([^"]*)"|'([^']*)'|([^)]*?))\s*\)/gi;let hi,gi,_i=/* @__PURE__ */ new Map;function vi(e){return(0,_.createHash)(`sha256`).update(e).digest(`hex`)}function yi(e){return e.replace(di,(e,t,n,r)=>{if(r)return Object.hasOwn(fi,r)?fi[r]:e;let i=parseInt(t||n||``,t?10:16);return i<=1114111?String.fromCodePoint(i):e})}function bi(e,t){let n=[],r=0,i=``,a=0;for(let o=0;o<e.length;o++){let s=e[o];i?i=s===i?``:i:s===`"`||s===`'`?i=s:s===`(`?r++:s===`)`?r--:s===t&&r===0&&(n.push(e.slice(a,o)),a=o+1)}return n.push(e.slice(a)),n.map(e=>e.trim()).filter(Boolean)}function xi(e){let t={};for(let n of bi(e,`;`)){let e=n.indexOf(`:`),r=n.slice(0,e).trim().toLowerCase(),i=n.slice(e+1).trim();e>0&&i&&(t[r.startsWith(`--`)?r:r.replace(/-([a-z])/g,(e,t)=>t.toUpperCase())]=i)}return t}function Si(e){return e.trim().replace(/^(['"])(.*)\1$/,`$2`)}function Ci(e){if(pi.test(e))return;let t=e.replace(/[?#].*$/,``);try{t=decodeURIComponent(t)}catch{}let n=u.posix.normalize(t.replace(/\\/g,`/`).replace(/^\/+/,``));if(n===`.`)throw Error(`an empty src names no file`);if(n===`..`||n.startsWith(`../`))throw Error(`"${e}" is outside assets/`);return n}function wi(e){let t=xi(e),n=Si(bi(t.fontFamily??``,`,`)[0]??``);if(!n)throw Error(`@font-face needs a font-family`);if(!t.src)throw Error(`@font-face "${n}" needs a src`);let r=bi(t.src,`,`).flatMap(e=>{mi.lastIndex=0;let t=/^url\(/i.test(e)&&mi.exec(e);if(!t)return[];let n=t[1]??t[2]??t[3]??``,r=/format\(\s*['"]?([\w-]+)/i.exec(e)?.[1];return[{url:n,woff2:r?/^woff2/i.test(r):/\.woff2$/i.test(n.replace(/[?#].*$/,``))}]}).find(e=>!e.woff2);if(!r)throw Error(`@font-face "${n}" has only WOFF2 sources, and Satori cannot read WOFF2; use a WOFF, TTF, or OTF file`);let i=Ci(r.url);if(!i)throw Error(`@font-face "${n}" src "${r.url}" must be a file in assets/`);let a=(t.fontWeight??`normal`).toLowerCase().split(/\s+/)[0],o=a===`bold`?700:a===`normal`?400:Number(a);if(!(o>=1&&o<=1e3))throw Error(`@font-face "${n}" font-weight "${t.fontWeight}" is not a number, normal, or bold`);return{name:n,src:i,weight:ai[Math.min(8,Math.max(0,Math.round(o/100)-1))],style:/^(italic|oblique)/i.test(t.fontStyle??``)?`italic`:`normal`}}function Ti(e){let t=[];e=e.replace(oi,(e,n)=>{if(n.replace(/\/\*[\s\S]*?\*\//g,``).replace(si,(e,n)=>(t.push(wi(n)),``)).trim())throw Error(`<style> may hold only @font-face rules; set the styles of an element with its style attribute`);return``});let n=[],r=[],i=e=>(r.length?r[r.length-1].children:n).push(e),a=e=>e.trim()&&i(yi(e)),o=0;ci.lastIndex=0;for(let t;t=ci.exec(e);){a(e.slice(o,t.index)),o=ci.lastIndex;let[,n,s,c,l]=t;if(n){if(ui.has(n.toLowerCase()))continue;let e=r.findLastIndex(e=>e.type.toLowerCase()===n.toLowerCase());if(e<0)throw Error(`</${n}> closes no element`);if(e<r.length-1)throw Error(`<${r[r.length-1].type}> is not closed`);let[{type:t,props:a,children:o}]=r.splice(e);i({type:t,props:o.length?{...a,children:o.length>1?o:o[0]}:a});continue}if(!s)continue;let u={};li.lastIndex=0;for(let e;e=li.exec(c);){let[,t,...n]=e,r=n.find(e=>e!==void 0);t===`style`?u.style=xi(yi(r??``)):u[t]=r===void 0||yi(r)}l||ui.has(s.toLowerCase())?i({type:s,props:u}):r.push({type:s,props:u,children:[]})}if(a(e.slice(o)),r.length)throw Error(`<${r[r.length-1].type}> is not closed`);let[s]=n;if(n.length!==1)throw Error(`it needs one root element, not ${n.length}`);if(typeof s==`string`)throw Error(`it needs one root element, not text`);return{fonts:t,root:s}}function Ei(e){if(typeof e==`string`)return!0;let{children:t}=e.props;return t===void 0?!1:Array.isArray(t)?t.some(Ei):Ei(t)}function Di(e,t){let n=e.reads.get(t);if(n)return n;let r=(0,u.join)(e.assets,t);return je(r,`Missing "${t}" asset!`),n=L(r).then(e=>({data:e,hash:vi(e),sum:W(e)})),e.reads.set(t,n),n}function Oi(e,t){let n=e.uris.get(t);return n||(n=Di(e,t).then(({data:e})=>`data:${f.lookup(t)||`application/octet-stream`};base64,${e.toString(`base64`)}`),e.uris.set(t,n),n)}async function ki(e,t,n){let{style:r,children:i,...a}=t.props,o={...a},s=t.type===`img`&&typeof a.src==`string`?a.src:void 0,c=s===void 0?void 0:Ci(s);if(c!==void 0&&(n.add(c),o.src=await Oi(e,c)),r){let t=await Promise.all(Object.entries(r).map(async([t,r])=>{let i=[];r.replace(mi,(t,r,a,o)=>{let s=Ci(r??a??o??``);return s!==void 0&&n.add(s),i.push(s===void 0?Promise.resolve(t):Oi(e,s).then(e=>`url("${e}")`)),t});let a=await Promise.all(i);return[t,a.length?r.replace(mi,()=>a.shift()??``):r]}));o.style=Object.fromEntries(t)}let l=t=>typeof t==`string`?t:ki(e,t,n);return i!==void 0&&(o.children=Array.isArray(i)?await Promise.all(i.map(l)):await l(i)),{type:t.type,props:o}}function Ai(e,t){return Error(`$assets.render needs the "${e}" package; install it with: bun add -d satori @resvg/resvg-js`,{cause:t})}function ji(){return hi||=Promise.all([import(`satori`),import(`satori/package.json`,{with:{type:`json`}})]).then(([e,t])=>({draw:e.default,version:t.default.version}),e=>{throw hi=void 0,Ai(`satori`,e)})}function Mi(){return gi||=Promise.all([import(`@resvg/resvg-js`),import(`@resvg/resvg-js/package.json`,{with:{type:`json`}})]).then(([e,t])=>({Resvg:e.Resvg,version:t.default.version}),e=>{throw gi=void 0,Ai(`@resvg/resvg-js`,e)})}async function Ni(e){let{draw:t}=await ji(),n=await t(e.root,{width:e.width,height:e.height,fonts:e.fonts});if(e.format===`svg`)return Buffer.from(n);let{Resvg:r}=await Mi(),i=new r(n,{fitTo:{mode:`width`,value:e.width}}).render().asPng();if(e.format===`png`)return i;let a=e.format===`jpeg`?{quality:e.quality,progressive:!0}:{quality:e.quality};return Buffer.from(await Nt(new Bun.Image(i),e.format,a))}function Pi(e){let t=(0,u.join)(e.cache,`${e.key}.${ii[e.format]}`),n=_i.get(t);return n||(n=(async()=>{let n=await(0,p.stat)(t).then(e=>e.mtimeMs,()=>void 0);if(n!==void 0){Date.now()-n>864e5&&await(0,p.utimes)(t,/* @__PURE__ */ new Date,/* @__PURE__ */ new Date).catch(()=>{});let e=await(0,p.readFile)(t).catch(()=>void 0);if(e)return e}let r=await Ot(()=>Ni(e));await(0,p.mkdir)(e.cache,{recursive:!0});let i=`${t}.${(0,_.randomBytes)(4).toString(`hex`)}.tmp`;try{await(0,p.writeFile)(i,r),await(0,p.rename)(i,t)}catch(e){throw await(0,p.rm)(i,{force:!0}),e}return r})().finally(()=>_i.delete(t)),_i.set(t,n),n)}function Fi(e){return{...e,files:/* @__PURE__ */ new Map,seen:/* @__PURE__ */ new Map,reads:/* @__PURE__ */ new Map,uris:/* @__PURE__ */ new Map}}async function Ii(e,t){let{html:n,file:r,template:i,output:a,options:o,from:s,loads:c}=t,l=a??i,d=o.width??1200,f=o.height??630;for(let[e,t]of[[`width`,d],[`height`,f]])if(!Number.isInteger(t)||t<1)throw Error(`Cannot render "${l}": Invalid ${e} "${t}"; use a whole number of pixels`);let p=a===void 0?void 0:u.posix.normalize(a.replace(/\\/g,`/`).replace(/^\/+/,``));if(p!==void 0&&(pi.test(a??``)||p===`..`||p.startsWith(`../`)||p.endsWith(`/`)))throw Error(`Cannot render "${a}": the path leaves the site; use a path such as "og/home.png"`);let m=p===void 0?`png`:ri[u.posix.extname(p).slice(1).toLowerCase()];if(!m)throw Error(`Cannot render "${a}": use .svg, .png, .jpg, or .webp`);if((m===`jpeg`||m===`webp`)&&typeof Bun>`u`)throw Error(`Cannot render "${a}": JPEG and WebP need Bun, since Bun.Image encodes them; use .png or .svg, or run bongo with Bun`);let h=/* @__PURE__ */ new Set;try{let t=Ti(n);if(t.fonts.forEach(e=>h.add(e.src)),!t.fonts.length&&Ei(t.root))throw Error(`it has text, but declares no fonts; add an @font-face rule in a <style> element`);var g=await ki(e,t.root,h),_=await Promise.all(t.fonts.map(async({src:t,...n})=>{let{data:r,hash:i}=await Di(e,t);if(r.toString(`latin1`,0,4)===`wOF2`)throw Error(`"${t}" is WOFF2, which Satori cannot read; use a WOFF, TTF, or OTF file`);return{...n,data:r,hash:i}}))}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Cannot render "${l}" from ${r}: ${t}`,{cause:e})}for(let t of h)c?.push([(0,u.join)(e.assets,t),(await Di(e,t)).sum]);let v=[`satori ${(await ji()).version}`];m!==`svg`&&v.push(`resvg ${(await Mi()).version}`),(m===`jpeg`||m===`webp`)&&v.push(`Bun.Image ${Bun.version}`);let y=m===`jpeg`||m===`webp`?e.quality[m]:void 0,b=vi(JSON.stringify([v,m,d,f,y,g,_.map(e=>[e.name,e.weight,e.style,e.hash])])).slice(0,16),x=p??`${u.posix.basename(i)}.${b.slice(0,8)}.png`,S=e.files.get(x)??e.seen.get(x);if(S&&S.key!==b)throw Error(`"${x}" renders twice with different content, from ${S.from} and ${s}`);if(!e.files.has(x)){let t={key:b,format:m,root:g,fonts:_.map(({hash:e,...t})=>t),width:d,height:f,quality:y,cache:e.cache};e.files.set(x,{key:b,from:s,make:()=>Pi(t).catch(e=>{let t=e instanceof Error?e.message:String(e);throw Error(`Cannot render "${x}" from ${r}: ${t}`,{cause:e})})})}return x}var Li=/* @__PURE__ */ o({Layouts:()=>zi,Partials:()=>Z,blocks:()=>Q,collect:()=>ea,compileContent:()=>Qi,frontmatter:()=>ca,partial:()=>Xi,reads:()=>Wi,readsOf:()=>Gi,scope:()=>Yi,substitute:()=>aa,track:()=>Ki});const Ri=/^(?:(\S+) is not defined|Can't find variable: (\S+))$/,zi=/* @__PURE__ */ new Map,Z=/* @__PURE__ */ new Map,Bi=/* @__PURE__ */ new Map,Vi=/* @__PURE__ */ new Map,Hi=[`pages`,`section`,`tags`];let Ui;function Wi(e){return Hi.filter(t=>RegExp(`\\$`+t+`\\b`).test(e))}function Gi(e){return Vi.get(e)??Hi}function Ki(){let e=/* @__PURE__ */ new Set;return Ui=e,()=>(Ui===e&&(Ui=void 0),e)}function qi(e){let{ext:t}=(0,u.parse)(e);return e.substring(0,e.length-t.length).replace(/\\/g,`/`)}const Q={partial(e){throw Error(`blocks.partial called before collect()`)}},Ji=/* @__PURE__ */ new WeakMap;function Yi(e,t){let n=Object.create(Q),r={...e,$assets:t(n)};return Ji.set(n,r),{blocks:n,values:r}}async function Xi(e,t,n){let r=qi(e),i=Z.get(r);if(!i)throw Error(`Unknown "${r}" partial!`);return{html:await i(t,n),file:Bi.get(r)??`$partials["${r}"]`}}function Zi(e,t){return{partial(e,t){let{src:n,...r}=e;if(!n)throw Error(`<partial src="..."> missing "src"`);let i=qi(n),a=Z.get(i);if(a)return a(r,t);throw Error(`Unknown "${i}" partial!`)}}}async function Qi(e){let t={async:!0,props:[`$site`,`$page`,`$pages`,`$section`,`$tags`,`$assets`,`$utils`,`$data`,`params`],blocks:Q};return C.compile(e,t)}function $i(e){return typeof e==`function`}async function ea(e,t){let n=Zi(e,t);for(let e in Q)e!==`partial`&&delete Q[e];Z.clear(),zi.clear(),Vi.clear(),Object.assign(Q,n);let r=[`$site`,`$page`,`$pages`,`$section`,`$tags`,`$assets`,`$utils`,`$data`],i={async:!0,props:r,blocks:Q},a={...i,props:[...r,`$slot`]};async function o(e,t,n,r=i){try{let i=(0,u.join)(e,t),a=await L(i,`utf8`);return Vi.set(n,Wi(a)),C.compile(a,r)}catch(n){let r=(0,u.parse)(e).name.slice(0,-1),i=n instanceof Error?n.message:String(n);throw Error(`Error compiling "${t}" ${r}: ${i}`,{cause:n})}}let s=/\.hbs$/i,c=/\.([mc]?js|ts)$/i,{layouts:d,partials:f}=e,p=e.debug?Kr:()=>{};if(Bi.clear(),l.existsSync(f)){await Ne(f,async(e,t)=>{if(s.test(t)||c.test(t)){let e=qi(t);p(`[collect.partials]`,e),Bi.set(e,`partials/`+t.replace(/\\/g,`/`)),Z.set(e,Q[e]=t)}});for(let[n,r]of Z){let i=String(r),c;if(s.test(i)){let e=await o(f,i,`partials/`+n,a);c=async(t,n)=>{try{return await e(t,n)}catch(e){let t=e instanceof ReferenceError&&Ri.exec(e.message);if(!t)throw e;let n=t[1]||t[2];throw Error(`partials/${i.replace(/\\/g,`/`)} reads "${n}", but does not declare it. Add {{#expect ${n}}} at the top of the partial.`,{cause:e})}}}else{let t=await Dr((0,u.join)(f,i),e.cwd),n=t.exports.default||t.exports;if(!$i(n))throw Error(`Partial "${i}" must export a render function`);c=n}Z.set(n,Q[n]=(e,r)=>{Ui?.add(n);let i=r&&Ji.get(r);return c({...i,...e,...t,$assets:i?.$assets??t.$assets},r??Q)})}}for(let e in t.$partials){let n=qi(e);p(`[collect.$partials]`,n);let r=t.$partials[e];Bi.delete(n),Z.set(n,Q[n]=(...e)=>(Ui?.add(n),r(...e)))}await Ne(d,async(e,t)=>{s.test(t)&&(p(`[collect.layouts]`,t),zi.set(t,await o(d,t,`layouts/`+t.replace(/\\/g,`/`))))})}const ta=/__BONGO_BUNDLE:[a-f0-9]{16}__/g,na=/<style((?:"[^"]*"|[^>"])*?)data-bongo-inline="(__BONGO_BUNDLE:[a-f0-9]{16}__)"((?:"[^"]*"|[^>"])*)><\/style>/g,ra=/<script((?:"[^"]*"|[^>"])*?)data-bongo-inline="(__BONGO_BUNDLE:[a-f0-9]{16}__)"((?:"[^"]*"|[^>"])*)><\/script>/g,ia=/<img data-bongo-image="(__BONGO_BUNDLE:[a-f0-9]{16}__)"((?:"[^"]*"|'[^']*'|[^>"'])*?)\s*\/?>/g;async function aa(e,t){let{outputs:n,publicPath:r,readFile:i}=t,a=[];e.replace(na,(e,t,r,o)=>{let s=r,c=n.get(s);if(!c)throw Error(`Unresolved inline style placeholder: ${r}`);let l=(t+` `+o).replace(/\s+/g,` `).trim(),u=l?` `+l:``;return a.push(i(c.filename).then(t=>[e,`<style${u}>${t}</style>`])),e});let o=await Promise.all(a);for(let[t,n]of o)e=e.replace(t,n);let s=[];e.replace(ra,(e,t,r,a)=>{let o=r,c=n.get(o);if(!c)throw Error(`Unresolved inline script placeholder: ${r}`);let l=(t+` `+a).replace(/\s+/g,` `).trim(),u=l?` `+l:``;return s.push(i(c.filename).then(t=>[e,`<script${u}>${t}<\/script>`])),e});let c=await Promise.all(s);for(let[t,n]of c)e=e.replace(t,n);return e=e.replace(ia,(e,t,i)=>{let a=n.get(t)?.image;if(!a)throw Error(`Unresolved image placeholder: ${t}`);return Jt(a,Ln(i),e=>dn(r,e))}),e=e.replace(ta,e=>{let t=e,i=n.get(t);if(!i)throw Error(`Unresolved external placeholder: ${e}`);return dn(r,i.filename)}),e}function oa(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}const sa=/^---\r?\n(?:([\s\S]*?)\r?\n)?---(?=\r?\n|$)/;function ca(e){let t=sa.exec(e);if(!t)return{offset:0,value:{}};try{var n=de(t[1]||``,2)}catch(e){throw Error(`Invalid frontmatter: ${e instanceof Error?e.message:e}`,{cause:e})}if(n==null)return{offset:t[0].length,value:{}};if(!oa(n))throw Error(`Invalid frontmatter: expected "key: value" lines`);return{offset:t[0].length,value:n}}function la(e){e.cwd=(0,u.resolve)(e.cwd),e.debug=!!e.debug,e.dev=!!e.dev,e.drafts=e.drafts??e.dev,e.fresh=!!e.fresh,e.minify=!!e.minify,e.write=!!e.write,e.src=(0,u.resolve)(e.cwd,e.src||`.`),e.dest=(0,u.resolve)(e.cwd,`public`),e.assets=(0,u.resolve)(e.src,`assets`),e.content=(0,u.resolve)(e.src,`content`),e.data=(0,u.resolve)(e.src,`data`),e.partials=(0,u.resolve)(e.src,`partials`),e.layouts=(0,u.resolve)(e.src,`layouts`);let{PORT:t,HOST:n}=process.env;e.port=e.port||t&&+t||3e3,e.host=e.host||n||`localhost`}const ua=(0,_.randomBytes)(6).toString(`hex`),da=[`<script>`,`(function __bongo_ws() {`,`var ws = new WebSocket((location.protocol === 'https:' ? 'wss://' : 'ws://') + location.host + '/~/reload?id=${ua}');`,`ws.onopen = function () { console.log('[dev] live reload enabled'); };`,`ws.onclose = function () { setTimeout(__bongo_ws, 1000); };`,`ws.onmessage = function (ev) {`,`try {`,`var m = JSON.parse(ev.data);`,`if (m.type === 'reload') location.reload();`,`else if (m.type === 'hmr') console.warn('[dev] HMR not yet implemented; ignoring');`,`else if (m.type === 'error') __bongo_err(m.errors);`,`else if (m.type === 'error-clear') __bongo_err_clear();`,`} catch (e) {}`,`};`,`})();`,`function __bongo_esc(s) { return String(s||'').replace(/[<>&]/g,function(c){return {'<':'&lt;','>':'&gt;','&':'&amp;'}[c]}); }`,`function __bongo_err(errs) {`,`__bongo_err_clear();`,`var o = document.createElement('div');`,`o.id = '__bongo_overlay';`,`o.style.cssText = 'position:fixed;inset:0;z-index:2147483647;background:#141414;color:#f4f4f4;font:14px/1.5 ui-monospace,monospace;padding:24px;overflow:auto;white-space:pre-wrap';`,`var html = '<h2 style=\\'margin:0 0 12px;color:#ff6b6b\\'>Build error</h2>';`,`for (var i=0;i<errs.length;i++) {`,`var e = errs[i];`,`html += '<div style=\\'margin-bottom:12px\\'>';`,`if (e.file) html += '<strong>'+__bongo_esc(e.file)+(e.line?':'+__bongo_esc(e.line):'')+'</strong>\\n';`,`html += __bongo_esc(e.message);`,`if (e.frame) html += '\\n'+__bongo_esc(e.frame);`,`html += '</div>';`,`}`,`o.innerHTML = html;`,`document.body.appendChild(o);`,`}`,`function __bongo_err_clear() {`,`var o = document.getElementById('__bongo_overlay');`,`if (o) o.remove();`,`}`,`<\/script>`].join(``),fa=/* @__PURE__ */ new Set;let pa=Promise.resolve(),ma,ha;function ga(e){pa=e.then(()=>{},()=>{})}function _a(e){ma=e}function va(e){e.type===`error`?ha=e:(e.type===`reload`||e.type===`error-clear`)&&(ha=void 0);let t=ya(JSON.stringify(e));for(let e of fa)e.destroyed||!e.writable?fa.delete(e):e.write(t)}function ya(e){let t=Buffer.from(e),n=t.length,r=n<126?[129,n]:n<65536?[129,126,n>>>8,n&255]:[129,127,0,0,0,0,n>>>24,n>>>16&255,n>>>8&255,n&255];return Buffer.concat([Buffer.from(r),t])}function ba(e,t){let n=e.headers[`sec-websocket-key`],[r,i]=(e.url||``).split(`?`);if(r!==`/~/reload`||!n||e.headers.upgrade?.toLowerCase()!==`websocket`)return void t.destroy();let a=(0,_.createHash)(`sha1`).update(n+`258EAFA5-E914-47DA-95CA-C5AB0DC85B11`).digest(`base64`);t.write(`HTTP/1.1 101 Switching Protocols\r\nUpgrade: websocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: ${a}\r\n\r\n`),t.setTimeout?.(0),fa.add(t),new URLSearchParams(i).get(`id`)!==ua&&t.write(ya(JSON.stringify({type:`reload`}))),ha&&t.write(ya(JSON.stringify(ha)));let o=()=>fa.delete(t);t.on(`close`,o),t.on(`error`,o),t.on(`data`,e=>{(e[0]&15)==8&&(o(),t.end(Buffer.from([136,2,3,232])))})}function xa(e){return e===`localhost`?[`127.0.0.1`,`::1`]:[`0.0.0.0`,`::`,``].includes(e)?[e,`127.0.0.1`,`::1`]:[e]}function Sa(e,t){return new Promise(n=>{let r=(0,T.createServer)();r.once(`error`,e=>n(e.code===`EADDRNOTAVAIL`||e.code===`EAFNOSUPPORT`)),r.listen(e,t,()=>r.close(()=>n(!0)))})}function Ca(e,t,n){return new Promise((r,i)=>{e.once(`error`,i),e.listen(t,n,()=>{e.off(`error`,i),r()})})}const wa=/* @__PURE__ */ new WeakMap,Ta=/^text\/|[/+](json|xml|javascript)$/;function Ea(e){return e.endsWith(`/`)?[e+`index.html`,e+`index.htm`]:[e,e+`.html`,e+`.htm`,e+`/index.html`,e+`/index.htm`]}function Da(e,t){let n=e&&/^bytes=(\d*)-(\d*)$/.exec(e.trim());if(!n)return e?null:void 0;let[,r,i]=n,a=r?+r:Math.max(0,t-+i),o=r&&i?Math.min(+i,t-1):t-1;return r===``&&i===``||a>o||a>=t?null:[a,o]}async function Oa(e,t,n,r,i=200){let a=n.get(r);if(!a)return!1;`make`in a&&(a={data:await a.make(),version:0});let o,s;if(`data`in a)o=a.data.length,s=wa.get(a.data)??`"${(0,_.createHash)(`sha1`).update(a.data).digest(`base64url`)}"`,wa.set(a.data,s);else{let e=await(0,p.stat)(a.file).catch(()=>void 0);if(!e?.isFile())return!1;o=e.size,s=`W/"${o}-${e.mtimeMs}"`}let c=f.lookup(r)||`application/octet-stream`,u={"content-type":Ta.test(c)?c+`; charset=utf-8`:c,"cache-control":`no-cache`,"accept-ranges":`bytes`,etag:s};if(i===200&&e.headers[`if-none-match`]===s)return t.writeHead(304,u),t.end(),!0;let d=i===200?Da(e.headers.range,o):void 0;if(d===null)return t.writeHead(416,{...u,"content-range":`bytes */${o}`}),t.end(),!0;let[m,h]=d??[0,o-1];return d&&(i=206,u[`content-range`]=`bytes ${m}-${h}/${o}`),u[`content-length`]=Math.max(0,h-m+1),t.writeHead(i,u),e.method===`HEAD`||!o?(t.end(),!0):`data`in a?(t.end(a.data.subarray(m,h+1)),!0):((0,l.createReadStream)(a.file,{start:m,end:h}).pipe(t),!0)}async function ka(e,t){fa.clear(),ha=void 0;let n=async(n,r)=>{let i=(n.url||`/`).replace(/[?#].*/,``);try{i=decodeURIComponent(i)}catch{}i=u.posix.normalize(`/`+i);let a=t.base;if(a!==`/`&&(i===`/`||i===a.slice(0,-1)))r.writeHead(302,{location:a,"cache-control":`no-store`}),r.end();else{if(i.startsWith(a)){for(let o of Ea(i.slice(a.length-1)))if(await Oa(n,r,t,(0,u.join)(e.dest,o)))return}if(ma){let e=JSON.stringify(ma).replace(/</g,`\\u003c`);r.writeHead(500,{"content-type":`text/html; charset=utf-8`,"cache-control":`no-store`}),r.end(`<!doctype html><html lang="en"><head><meta charset="utf-8"/><title>Build error</title></head><body>${da}<script>__bongo_err(${e})<\/script></body></html>`)}else{for(let i of[`404.html`,`404/index.html`])if(await Oa(n,r,t,(0,u.join)(e.dest,i),404))return;r.writeHead(404,{"content-type":`text/plain; charset=utf-8`,"cache-control":`no-store`}),r.end(`Not Found`)}}},r=e=>t=>{let n=t instanceof Error?t.message:String(t);if(X(n),e.headersSent)return void e.destroy();e.writeHead(500,{"content-type":`text/plain; charset=utf-8`}),e.end(n)},i=(e,t)=>{let i=(e.url||`/`).replace(/[?#].*/,``),a=i.slice(i.lastIndexOf(`/`)+1);try{a=decodeURIComponent(a)}catch{}let o=Gt(a);if(!o)return void n(e,t).catch(r(t));o.then(e=>{t.writeHead(200,{"content-type":f.lookup(a)||`application/octet-stream`,"cache-control":`public, max-age=31536000, immutable`}),t.end(e)},r(t))},a=(e,t)=>{if((e.url||``).split(`?`)[0]!==`/~/reload`)return void pa.then(()=>i(e,t));t.writeHead(426,{upgrade:`websocket`,"content-type":`text/plain; charset=utf-8`}),t.end(`Upgrade Required`)},o=e.port+10;for(let t=e.port;t<=o;t++){let n=!0;for(let r of xa(e.host))if(!(n=await Sa(t,r)))break;if(!n)continue;let r=(0,w.createServer)(a);r.on(`upgrade`,ba);try{await Ca(r,t,e.host)}catch(e){if(e instanceof Error&&`code`in e&&e.code===`EADDRINUSE`)continue;throw e}return e.port=t,r}throw Error(`Ports ${e.port} to ${o} are all in use`)}let Aa=/* @__PURE__ */ new Map,ja=/* @__PURE__ */ new Map,Ma=[],Na=[];const Pa=/\.json\.[jt]s$/;function Fa(e){return e.split(/[\\\/]+/g).slice(0,-1).join(`/`)}function $(e){let t=typeof e;return t===`string`||t===`number`||t===`boolean`?String(e):``}const Ia={"&":`&amp;`,"<":`&lt;`,">":`&gt;`,'"':`&quot;`};function La(e){return(e||[]).map(e=>({level:e.level,id:e.id,text:e.text,html:e.html??e.text.replace(/[&<>"]/g,e=>Ia[e])}))}async function Ra(e,t){try{return await t()}catch(t){let n=t instanceof Error?t.message:String(t);throw Error(`${n}, rendering ${e}`,{cause:t})}}function za(e,t,n){return(r,i,a,o)=>({async load(t,n){let r=(0,u.join)(e,t);je(r,`Missing "${t}" asset!`);let i=await L(r);return o?.push([r,W(i)]),n?i.toString(n):i},async render(e,s,c={}){let{html:l,file:u}=await Xi(e,c.args??{},a),d=await Ii(t,{html:l,file:u,template:e,output:s,options:c,from:r,loads:o});return i.push(d),dn(n,d)}})}function Ba(e){return{path:e.path,params:e.params,content:``,url:e.url,summary:e.summary,title:e.title,section:e.section,tags:e.tags,headings:e.headings,draft:e.draft??!1,scripts:``,styles:``}}async function Va(e){let t=await L(e,`utf8`),{offset:n,value:r}=ca(t),i=$(r.title),a=$(r.summary).replace(/\n/g,`
12
+ > `),o=t.slice(n).replace(/^\s*\n/,``).trimEnd();return[i&&`# ${i}`,a&&`> ${a}`,o].filter(Boolean).join(`
13
+
14
+ `)+`
15
+ `}function Ha(e){return(Array.isArray(e)?e.map($):$(e).split(`,`)).map(e=>e.trim()).filter(Boolean)}async function Ua(e){la(e);let t=qr({debug:e.debug});t.step(`loading the config and data/`);try{var[n,r]=await Promise.all([Fr(e.cwd),Vr(e.data)])}finally{t.stop()}return{config:n.config,$data:r.value,files:[...n.files,...r.files]}}async function Wa(e,t={}){la(e);let n=e.dev?void 0:I(64),r=qr({debug:e.debug});try{await Ja(e,t,r,n)}catch(r){if(n){let r=t.sink??dt(e);await n.drain().catch(()=>{}),await r.clear().catch(()=>{}),Aa.delete(r)}throw r}finally{r.stop()}}function Ga(){return Ma}function Ka(){return Na}function qa(e,t){let n=/* @__PURE__ */ new Set;for(let t in e)for(let[r]of e[t].page?.loads??[])n.add(r);for(let[e]of t)n.add(e);return[...n]}async function Ja(e,t,n,r){let i=Date.now();Mn();let a=t.sink??dt(e),o=e.fresh?void 0:Aa.get(a)??(r?await it(e):void 0);e.dev&&ja.get(a)?.dev||(await(r?a.reuse(o?.made):a.clear()),ja.delete(a));let s=t.inputs??await Ua(e),{config:c,$data:p}=s,{$site:m,$loaders:h}=c,g=m.url.endsWith(`/`)?m.url:m.url+`/`,_=er(m.url),v=e.debug?Kr:()=>{};v(`[build.argv]`,e);let y=Fi({assets:e.assets,cache:(0,u.join)(e.cwd,`node_modules`,`.cache`,`bongo`,`render`),quality:Ht({},c.$images).quality}),b=za(e.assets,y,_),x=[],S=[],ee={...c,$data:p,$assets:b(`a loader`,x,void 0,S)};n.step(`compiling layouts and partials`),await ea(e,ee);let C=await et(e,s.files),w=o?.key===C?o:void 0,T={key:C,registries:{pages:``,tags:``,sections:{},outputs:``},bundles:{},assets:{},marks:{},loose:!1,items:{},files:{},sources:{},made:[]},E=/* @__PURE__ */ new Map,te=/* @__PURE__ */ new Map;function D(e){let t=te.get(e);return t||te.set(e,t=L(e).then(W,()=>``)),t}let ne=new Set(w&&!e.dev?(await Promise.all(Object.entries(w.assets).map(async([e,t])=>{for(let[n,r]of t)if(await D(n)!==r)return[e];return[]}))).flat():[]),re=e=>!!e?.placeholders.some(e=>ne.has(e)),O=/(hbs|html?)$/,{Layouts:ie,Partials:k}=Li,{dest:A,content:j}=e,ae=ja.get(a),M=/* @__PURE__ */ new Set,oe={frontmatter:ca,attrs:pe,render(e,...t){let n=k.get(e);if(n)return n.apply(n,t);throw Error(`Unknown "${e}" partial!`)},decode(e){return new TextDecoder().decode(e)}},N=[];async function se(e,t,n,r,i){let o=t.lastIndexOf(`.`),s=`/`+t.substring(0,o),c=(0,u.join)(A,t);o=n.lastIndexOf(`.`);let l=n.substring(o+1),d=n.substring(0,o),p=(0,u.extname)(d).substring(1),m=l===`hbs`&&!/^html?$/i.test(p)&&f.lookup(p)?`output`:`page`,y={},b,x=``;if(Pa.test(n)){let r=t.substring(0,t.length-l.length-1),a=`/`+r.replace(/\\/g,`/`);return{input:e,rel:t,name:n,kind:`data`,ext:l,body:``,params:y,path:_+a.substring(1),url:new URL(a.substring(1),g).href,output:(0,u.join)(A,r),section:Fa(t),title:``,summary:``,tags:[],headings:[],hash:i}}if(O.test(l)){x=r.toString(`utf8`);let{offset:e,value:t}=ca(x);e>0&&(Object.assign(y,t),x=x.substring(e),x=x.replace(/^\r?\n/,``))}else if(h[l]){let n=new Uint8Array(r.buffer,r.byteOffset,r.byteLength);v(`[content.loader]`,l,`~> found`);let o=await Ie(e,n,h,oe,{isTerminal:e=>O.test(e)});if(Object.assign(y,o.metadata),b=o.headings,l=(0,u.extname)(o.filename).substring(1),O.test(l))x=typeof o.content==`string`?o.content:new TextDecoder().decode(o.content);else{M.add(c),T.files[t]=[i,c,0,0],await a.write(c,o.content);return}}else{v(`[content.loader]`,l,`~> unknown`),M.add(c),T.files[t]=[i,c,0,0],await a.copy(e,c);return}if(m===`output`){if(y.url!=null)throw Error("Custom `url` is not allowed on output files; rename the file instead");let e=t.substring(0,t.length-4);s=`/`+e.replace(/\\/g,`/`),c=(0,u.join)(A,e)}else if(typeof y.url==`string`){if(s=`/`+y.url.replace(/^.?\/+/,``),/^(https?:)?\/\//.test(s))throw Error("Custom `url` must be path only");!/\.html?$/i.test(s)&&!s.endsWith(`/`)&&(s+=`/`),c=s.endsWith(`/`)?(0,u.join)(A,s,`index.html`):(0,u.join)(A,s)}else d===`index`?s=s.substring(0,s.length-5):s.endsWith(`/`)||(s+=`/`),c=(0,u.join)(A,s,`index.html`);let S=Fa(t);return{input:e,rel:t,name:n,kind:m,ext:l,body:x,params:y,path:_+s.substring(1),url:new URL(s.substring(1),g).href,output:c,section:S,title:$(y.title),summary:$(y.summary),tags:Ha(y.tags),headings:La(b),hash:i}}async function ce(e,t,n,r){let i=w?.loose?void 0:w?.items[t];if(i?.hash===r&&!re(i.page))return N.push({input:e,rel:t,name:n,kind:i.kind,ext:i.ext,params:i.params,path:i.path,url:i.url,output:i.output,section:i.section,title:$(i.params.title),summary:$(i.params.summary),tags:i.tags,headings:i.headings,hash:r,record:i.record}),!0;let o=w?.files[t],s=o?.[0]===r?await a.stat(o[1]):void 0;return o&&s?.[0]===o[2]&&s?.[1]===o[3]?(M.add(o[1]),T.files[t]=o,await a.keep(o[1]),!0):!1}async function le(e,t,n){let r=await xe(e),a=e=>T.sources[t]=r.mtimeMs<i-2e3?[r.size,r.mtimeMs,e]:[-1,-1,e],s=o?.sources[t];s?.[0]===r.size&&s[1]===r.mtimeMs&&(a(s[2]),await ce(e,t,n,s[2]))||await de(async()=>{let r=await L(e),i=W(r);if(a(i),await ce(e,t,n,i))return;let o=await se(e,t,n,r,i);o&&N.push(o)})}async function ue(e){let t=e.body;return e.body=void 0,t??(await se(e.input,e.rel,e.name,await L(e.input),e.hash))?.body??``}n.step(`reading content/`);let de=ye(16);await Ne(j,(e,t,n)=>le(e,t,n).catch(e=>{let n=e instanceof Error?e.message:String(e);throw Error(`${(0,u.join)(`content`,t)}: ${n}`,{cause:e})}));for(let e of N)e.draft=e.kind!==`data`&&Wr(e.params,i);e.drafts||(N=N.filter(e=>!e.draft));let P=[],fe=/* @__PURE__ */ new Map,F=/* @__PURE__ */ new Map,me=[];for(let e of N){if(e.kind===`data`)continue;if(e.kind===`output`){me.push({path:e.path,params:e.params});continue}let t={path:e.path,url:e.url,title:e.title,summary:e.summary,section:e.section,tags:e.tags,headings:e.headings,params:e.params,draft:e.draft??!1};P.push(t),e.record??=W(JSON.stringify([t.path,t.url,t.title,t.summary,t.section,t.tags,t.headings,t.params])),fe.set(t,t.draft?e.record+` draft`:e.record);let n=F.get(e.section);n||(n=[],F.set(e.section,n)),n.push(t)}P.sort((e,t)=>e.path.localeCompare(t.path)),me.sort((e,t)=>e.path.localeCompare(t.path));for(let e of F.values())e.sort((e,t)=>e.path.localeCompare(t.path));let he=/* @__PURE__ */ new Map;for(let e of P)for(let t of e.tags){let n=he.get(t);n||(n=[],he.set(t,n)),n.push(e)}let ge=[];for(let[e,t]of he)ge.push({tag:e,pages:t});let _e=e=>e.map(e=>fe.get(e)).join(`
16
+ `);T.registries={pages:W(_e(P)),outputs:W(JSON.stringify(me)),tags:W(ge.map(e=>e.tag+`
17
+ `+_e(e.pages)).join(`
18
+
19
+ `)),sections:Object.fromEntries([...F].map(([e,t])=>[e,W(_e(t))]))},n.step(`rendering pages`);let I=[],be=[],Se=[],Ce=[],R=[],z=[],we=/* @__PURE__ */ new Map,Te=/* @__PURE__ */ new Map,B=/* @__PURE__ */ new Map;B.set(``,x);async function Ee(e,t,n){if(!w||w.loose||re(n)||t.draft!==e.draft||c.$hooks.transform&&w.registries.outputs!==T.registries.outputs)return!1;for(let t of n.reads)if((t===`section`?w.registries.sections[e.section]:w.registries[t])!==(t===`section`?T.registries.sections[e.section]:T.registries[t]))return!1;for(let[e,t]of n.loads)if(await D(e)!==t)return!1;let r=await a.stat(e.output);return r?.[0]!==n.stat[0]||r?.[1]!==n.stat[1]?!1:(E.set(e.output,r[0]),!0)}let De=/* @__PURE__ */ new Set,Oe=[];function ke(e,t,n){n.placeholders.forEach(e=>De.add(e)),Te.set(e.rel,n.placeholders),B.set(e.rel,n.renders.map(([e])=>e));for(let[t,r]of n.renders)y.seen.set(t,{key:r,from:e.path}),Oe.push((0,u.join)(A,t));we.set(e.rel,{path:e.path,input:e.input,from:`content/${e.rel}`,found:n.found}),Oe.push(e.output),T.items[e.rel]=t,R.push({item:e,page:n})}async function Ae(t,n){let i=Ba(t),o=F.get(t.section)||[],s=[],l=[];B.set(t.rel,s);let d=Yi({$page:i,$pages:P,$section:o,$tags:ge},e=>b(t.path,s,e,l)),f=Ki(),p=t.ext===`hbs`?await Ra(`content/${t.rel}`,async()=>(await Qi(n))({...ee,...d.values,params:t.params},d.blocks)):n;p=ar(p,e,c,`content/${t.rel}`,t.path),i.content=p;let m=0,h=t.rel.split(/[\\\/]+/g).slice(0,-1),g=h.map((e,t)=>h.slice(0,h.length-t).join(`/`)).concat(``),_=t.name.substring(0,t.name.lastIndexOf(`.`)),y,x=``,S=[`content/${t.rel}`];if(O.test(t.ext)){let e=0,n=[`index.hbs`,`html.hbs`];_!==`index`&&n.splice(0,0,`${_}.hbs`,`single.hbs`);outer:for(;m<g.length;m++)for(e=0;e<n.length;e++)if(x=(0,u.join)(g[m],n[e]),v(`[content.layout]`,t.rel,`~>`,x),y=ie.get(x))break outer;if(!y)throw Error(`Missing "html.hbs" template`);S.push(`layouts/${x}`);let r=y;p=await Ra(S.join(` → `),async()=>r({...ee,...d.values},d.blocks))}if(!x.endsWith(`html.hbs`)){for(i.content=p,m=0;m<g.length&&(x=(0,u.join)(g[m],`html.hbs`),v(`[content.layout]`,t.rel,`~>`,x),!(y=ie.get(x)));m++);if(!y)throw Error(`Missing "html.hbs" template`);S.push(`layouts/${x}`);let e=y;p=await Ra(S.join(` → `),async()=>e({...ee,...d.values},d.blocks))}let C=f(),w=/* @__PURE__ */ new Set([...t.ext===`hbs`?Wi(n):[],...S.slice(1).flatMap(e=>Gi(e.replace(/\\/g,`/`))),...[...C].flatMap(e=>Gi(`partials/`+e))]);e.dev&&(p+=da);let E=[],te=/\.(md|markdown)$/i.test(t.input);p=ir(p,e,c,S.join(` → `),t.path,{alternates:E,markdown:te}),p=pr(p),we.set(t.rel,{path:t.path,input:t.input,from:`content/${t.rel}`,found:E});let D=cn(p);Te.set(t.rel,D);for(let e of D){let t=un(e);t&&(T.bundles[e]=t)}let ne=D.filter(e=>p.includes(`data-bongo-inline="${e}"`)),re={reads:[...w],loads:l,placeholders:D,inline:ne,renders:[],found:E,stat:[0,0]};T.items[t.rel]={hash:t.hash,kind:t.kind,ext:t.ext,params:t.params,path:t.path,url:t.url,output:t.output,section:t.section,tags:t.tags,headings:t.headings,record:t.record??``,draft:t.draft??!1,page:re},I.push({output:t.output,html:r?void 0:p,path:t.path,params:t.params,from:S.join(` → `),rel:t.rel}),await r?.add(()=>a.write(t.output,p))}async function je(e){let t=/* @__PURE__ */ new Map,n=0;for(let r of e){for(;n<e.length&&t.size<16;n++){let r=ue(e[n]);r.catch(()=>{}),t.set(e[n],r)}let i=await t.get(r)??``;t.delete(r),await Ae(r,i)}}let Me=await Promise.all(N.map(e=>{let t=w?.items[e.rel];return e.kind===`page`&&t?.page&&t.hash===e.hash?Ee(e,t,t.page):!1}));for(let[e,t]of N.entries()){if(t.kind===`data`){Se.push(t);continue}if(t.kind===`output`){Ce.push(t);continue}let n=w?.items[t.rel];Me[e]&&n?.page?ke(t,n,n.page):z.push(t)}for(let e of De){let t=w?.bundles[e];t&&(q(...t),T.bundles[e]=t)}await Promise.all(Oe.map(e=>a.keep(e))),await je(z);let V=/* @__PURE__ */ new Map,Pe=[...we.values()].sort((e,t)=>e.path.localeCompare(t.path));for(let e of Pe)for(let t of e.found){if(t.file===void 0)continue;let n=V.get(t.file);if(n&&n.from!==e.from)throw Error(`"${t.file}" is a Markdown copy of ${n.from} and of ${e.from}`);V.set(t.file,{from:e.from,input:e.input})}let Fe=new Map([...we.values()].map(e=>[e.path,Object.fromEntries(e.found.map(e=>[e.type,e.href]))])),H=new Map(P.map(e=>[e,{...e,alternates:Fe.get(e.path)??{}}])),Le=e=>e.map(e=>H.get(e)??e),Re=Le(P),ze=new Map([...F].map(([e,t])=>[e,Le(t)])),Be=ge.map(e=>({tag:e.tag,pages:Le(e.pages)})),Ve=[];for(let e of Ce){let t=[];B.set(e.rel,t);let n=Yi({$page:Ba(e),$pages:Re,$section:ze.get(e.section)||[],$tags:Be},n=>b(e.path,t,n,Ve)),r=await Ra(`content/${e.rel}`,async()=>(await Qi(e.body??``))({...ee,...n.values,params:e.params},n.blocks));be.push({output:e.output,html:r,path:e.path,params:e.params,from:`content/${e.rel}`})}ln(new Set([...Te.values()].flat()));let He=/* @__PURE__ */ new Set,Ue=[j,(0,l.realpathSync)(j)].map(e=>e+u.sep),We=e=>e.forEach(e=>Ue.some(t=>e.startsWith(t))||He.add(e)),Ge=[];try{for(let t of Se){try{var Ke=await Dr(t.input,e.cwd);if(We(Ke.files),!(`default`in Ke.exports))throw Error(`needs a default export`);let n=Ke.exports.default;typeof n==`function`&&(n=await n({$site:m,$pages:Re,$section:ze.get(t.section)||[],$tags:Be,$data:p,$utils:ee.$utils}));var qe=JSON.stringify(n);if(qe===void 0)throw Error(`its default export is not JSON: ${typeof n}`)}catch(e){e instanceof Er&&We(e.files);let n=e instanceof Error?e.message:String(e);throw Error(`content/${t.rel}: ${n}`,{cause:e})}Ge.push([t.output,qe])}}finally{Ma=[...He]}let Je=er(m.url);`base`in a&&(a.base=Je);let Ye=(0,u.join)(e.cwd,`node_modules`,`.cache`,`bongo`,`images`);n.step(`bundling assets`);let U=await xn({outDir:A,cwd:e.cwd,sink:a,publicPath:Je,assets:h,utils:oe,cache:Ye,dev:e.dev});if(U.errors.length>0){for(let e of U.errors)X(e.message),e.frame&&X(e.frame),e.file&&X(` in `+e.file);let[t,...n]=U.errors,r=n.length?`, and ${n.length} more error${n.length>1?`s`:``}`:``;throw Error(`Build failed: ${bn(t,e.cwd)}${r}`)}for(let e of U.warnings)v(`[bundler.warning]`,e.message);for(let e of U.notices)Gr(e);let Xe=new Map(U.outputs),Ze=/* @__PURE__ */ new Map,Qe=e=>{let t=Xe.get(e)?.filename;if(t===void 0)return Promise.resolve(``);let n=Ze.get(t);return n||Ze.set(t,n=a.read((0,u.join)(A,t)).then(W,()=>``)),n},$e=new Map([...Xe].map(([e,t])=>[e,W(JSON.stringify([t.filename,t.exports,t.image]))])),tt=/* @__PURE__ */ new Set;for(let{page:e}of R)e.inline.forEach(e=>tt.add(e));let nt=new Set([...$e].filter(([e,t])=>w?.marks[e]?.[0]!==t).map(([e])=>e)),rt=new Set((await Promise.all([...tt].map(async e=>await Qe(e)===w?.marks[e]?.[1]?[]:[e]))).flat());await je((nt.size||rt.size?R.filter(({page:e})=>e.placeholders.some(e=>nt.has(e))||e.inline.some(e=>rt.has(e))):[]).map(({item:e})=>e)),n.step(`writing pages`),r&&I.length>=1e3&&typeof Bun<`u`&&Bun.gc(!0);let at=async e=>String(await a.read((0,u.join)(A,e))),{transform:st}=c.$hooks;async function ct(e,t,n){if(!st)return[e.output,n];try{var r=await st(n,{kind:t,path:e.path,params:e.params,outputs:me,config:c})}catch(t){let n=t instanceof Error?t.message:String(t);throw Error(`${n}, rendering ${e.from}`,{cause:t})}return[e.output,r]}async function lt(e){return ct(e,`page`,await aa(e.html??String(await a.read(e.output)),{outputs:U.outputs,publicPath:Je,readFile:at}))}let ut=await Promise.all([...r?[]:I.map(lt),...be.map(e=>ct(e,`output`,e.html)),...Ge]),ft=/* @__PURE__ */ new Set([...M,...N.map(e=>e.output),...U.files.map(e=>(0,u.join)(A,e))]);for(let e of y.files.keys())if(ft.has((0,u.join)(A,e)))throw Error(`"${e}" is a file of the site; render to another path`);for(let[e,t]of V)if(ft.has((0,u.join)(A,e))||y.files.has(e))throw Error(`"${e}" is a Markdown copy of ${t.from}, and a file of the site`);if(await ve([...[...y.files].map(([e,t])=>a.defer((0,u.join)(A,e),t.make)),...[...V].map(([e,t])=>a.defer((0,u.join)(A,e),()=>Ot(()=>Va(t.input))))]),r){await r.drain();for(let e of I)await r.add(async()=>a.write(...await lt(e)));await r.drain()}await ve(ut.map(([e,t])=>a.write(e,t))),e.minify&&n.step(`minifying html`),e.minify&&!await a.minify(I.map(e=>e.output))&&Gr(`${(0,d.dim)(`--minify:`)} HTML left as-is; install tdewolff/minify to minify it`);let G=/* @__PURE__ */ new Set([...ft,...[...B.values()].flat().map(e=>(0,u.join)(A,e)),...[...V.keys()].map(e=>(0,u.join)(A,e))]);await Promise.all([...ae?.files??[]].filter(e=>!G.has(e)).map(e=>a.remove(e))),r&&await a.sweep();let pt=new Map([...y.seen,...[...y.files].map(([e,{key:t,from:n}])=>[e,{key:t,from:n}])]);if(ja.set(a,{files:G,dev:e.dev}),await Promise.all(I.map(async e=>{let t=e.rel?T.items[e.rel]?.page:void 0;t&&e.rel&&(t.stat=await a.stat(e.output)??[0,0],E.set(e.output,t.stat[0]),t.inline.forEach(e=>tt.add(e)),t.renders=(B.get(e.rel)??[]).map(e=>[e,pt.get(e)?.key??``]))})),await Promise.all(Object.entries(T.files).map(async([e,[t,n]])=>{let r=await a.stat(n)??[0,0];T.files[e]=[t,n,...r],E.set(n,r[0])})),!e.dev){let e=(e,t)=>{let n=un(e)?.[0],r=/* @__PURE__ */ new Set([...n?[n]:[],...t.dependencies]);return Promise.all([...r].map(async e=>[e,await D(e)]))};T.assets=Object.fromEntries(await Promise.all([...Xe].map(async([t,n])=>[t,await e(t,n)])))}T.marks=Object.fromEntries(await Promise.all([...$e].map(async([e,t])=>[e,[t,tt.has(e)?await Qe(e):``]]))),r&&(T.made=[...G].filter(e=>e.startsWith(A+u.sep)).map(e=>(0,u.relative)(A,e).split(u.sep).join(`/`))),T.loose=x.length>0||S.length>0,Aa.set(a,T),Na=qa(T.items,[...Ve,...S]),r&&await ot(e,T),await Promise.all([Kt(Ye,c.$images),Kt(y.cache,c.$images)]),e.dev||(Gr(`${(0,d.green)(`done`)} ${(0,d.dim)(`in `+Jr(Date.now()-i))}`),n.step(`listing sizes`),await ni(e.dest,process.cwd(),G,E))}const Ya=/* @__PURE__ */ new Set([`0.0.0.0`,`::`,``]);function Xa(e,t){let n=[],r=[];if(Ya.has(e)){n.push(`http://localhost:${t}/`);let e=(0,h.networkInterfaces)();for(let n in e)for(let i of e[n]??[])i.family!==`IPv4`||i.internal||r.push(`http://${i.address}:${t}/`)}else n.push(`http://${e}:${t}/`);return{local:n,network:r}}function Za(e,t){let{local:n,network:r}=Xa(e,t),i=e=>(0,d.bold)(e.padEnd(10)),a=/^(localhost|127\.|::1$)/i.test(e),o=`
20
+ `+(0,d.bold)((0,d.cyan)(`Bongo`))+(0,d.dim)(` dev server`)+`
21
+
22
+ `;for(let e of n)o+=` `+(0,d.green)(`➜`)+` `+i(`Local:`)+(0,d.cyan)(e)+`
23
+ `;if(a)o+=` `+(0,d.green)(`➜`)+` `+i(`Network:`)+(0,d.dim)("use `--host` to expose")+`
24
+ `;else for(let e of r)o+=` `+(0,d.green)(`➜`)+` `+i(`Network:`)+(0,d.cyan)(e)+`
25
+ `;o+=`
26
+ `,process.stdout.write(o)}function Qa(){let e=/* @__PURE__ */ new Date,t=e=>String(e).padStart(2,`0`);return`${t(e.getHours())}:${t(e.getMinutes())}:${t(e.getSeconds())}`}function $a(e,t){return`${(0,d.dim)(`[`+Qa()+`]`)} ${(0,u.relative)(e,t)}`}async function eo(e){e.dev=!0,Zt(),la(e);let t=e,n=ft(t.dest,t.write?dt(t):void 0),r;ga(new Promise(e=>r=e)),await ka(t,n),Za(t.host,t.port);let i=/* @__PURE__ */ new Map,a,o=!1,s,c=/* @__PURE__ */ new Set;function l(e){va({type:`error`,errors:e}),o||_a(e)}async function f(r={}){try{await Wa(e,{inputs:s,sink:n,...r}),c=new Set(Ka()),o=!0,_a(void 0),va({type:`reload`})}catch(e){let n=_e(e,Ae);n?.file.startsWith(t.assets+u.sep)&&c.add(n.file);let r=e instanceof Error?e.message:String(e);r.startsWith(`Build failed:`)?o||_a([{message:r}]):(X(r),l([{message:r}]))}finally{typeof Bun<`u`&&setTimeout(()=>Bun.gc(!0))}}function p(e,t){i.set(e,t),a??=m()}async function m(){for(;i.size;){await new Promise(e=>setTimeout(e,50));let e=new Map(i);i.clear();try{await h(e)}catch(e){X(e instanceof Error?e.stack??e.message:String(e))}}a=void 0}async function h(e){let n=[...e.keys()],r=new Set(e.values()),i=n.length>1?(0,d.dim)(` and ${n.length-1} more`):``,a=Xr($a(t.cwd,n[0])+i);if((r.has(`inputs`)||!s)&&!await x())return a();await f(),await b(),a()}let g=/* @__PURE__ */ new Set([t.data]),_=()=>{};async function v(){let e=[...new Set([...g].map(e=>(0,u.dirname)(e)))],n=await Promise.all([H(e,y,{recursive:!1}),H([t.data],y)]);return()=>n.forEach(e=>e())}function y(e){(g.has(e)||e.startsWith(t.data+u.sep))&&p(e,`inputs`)}async function b(){let e=g.size;Ga().forEach(e=>g.add(e)),g.size!==e&&(_(),_=await v())}async function x(){try{var t=await Ua(e)}catch(e){let t=_e(e,Er),n=e instanceof Error?e.message:String(e);return t?.files.forEach(e=>g.add(e)),_(),_=await v(),X(n),l([t?t.error:{message:n}]),!1}return s=t,t.files.forEach(e=>g.add(e)),_(),_=await v(),!0}a=Promise.resolve(),wn(e=>p(e.file,`assets`),t.content),await H([t.layouts,t.partials],e=>p(e,`templates`)),await H([t.content],e=>p(e,`content`)),await H([t.assets],e=>{c.has(e)&&p(e,`assets`)}),_=await v(),Dn(va);let S=Xr(`${(0,d.dim)(`~>`)} building`);await x()&&await f(),r(),await b(),S(),a=i.size?m():void 0}const to=e=>e;exports.build=Wa,exports.define=to,exports.dev=eo;
package/jsx.d.ts ADDED
@@ -0,0 +1,95 @@
1
+ // Ambient JSX augmentation for bongo's template namespace.
2
+ //
3
+ // Loaded automatically when a project extends `@bongo/bongo/tsconfig`
4
+ // (which pins `compilerOptions.types: ["@bongo/bongo/jsx"]`). Can also
5
+ // be pulled in explicitly:
6
+ //
7
+ // /// <reference types="@bongo/bongo/jsx" />
8
+
9
+ type BongoTransitions = boolean | 'fade' | 'initial' | 'slide' | (string & {});
10
+ type BongoPrefetchMode = boolean | 'hover' | 'tap';
11
+
12
+ type BongoClientAttrs = {
13
+ transitions?: BongoTransitions;
14
+ prefetch?: BongoPrefetchMode;
15
+ nonce?: string;
16
+ };
17
+
18
+ type BongoScriptAttrs = {
19
+ src: string;
20
+ inline?: boolean;
21
+ async?: boolean;
22
+ defer?: boolean;
23
+ format?: 'esm' | 'cjs' | 'iife';
24
+ target?: string;
25
+ nonce?: string;
26
+ };
27
+
28
+ type BongoStyleAttrs = {
29
+ src: string;
30
+ inline?: boolean;
31
+ global?: boolean;
32
+ media?: string;
33
+ nonce?: string;
34
+ };
35
+
36
+ type BongoAssetAttrs = {
37
+ src: string;
38
+ preload?: boolean;
39
+ as?: string;
40
+ type?: string | false;
41
+ crossorigin?: boolean | 'anonymous' | 'use-credentials' | false;
42
+ media?: string;
43
+ fetchpriority?: 'high' | 'low' | 'auto';
44
+ };
45
+
46
+ type BongoAlternateAttrs = {
47
+ type: 'text/markdown' | (string & {});
48
+ href?: string;
49
+ hreflang?: string;
50
+ title?: string;
51
+ };
52
+
53
+ type BongoImageAttrs = {
54
+ src: string;
55
+ alt?: string;
56
+ sizes?: string;
57
+ widths?: string;
58
+ formats?: string;
59
+ quality?: number | string;
60
+ width?: number | string;
61
+ height?: number | string;
62
+ loading?: 'lazy' | 'eager';
63
+ decoding?: 'async' | 'sync' | 'auto';
64
+ fetchpriority?: 'high' | 'low' | 'auto';
65
+ };
66
+
67
+ declare global {
68
+ namespace JSX {
69
+ // Build-time view-transition attributes — valid on any element.
70
+ interface HTMLAttributes<T> {
71
+ 'transition:name'?: string;
72
+ 'transition:animate'?: string;
73
+ 'transition:persist'?: string | boolean;
74
+ }
75
+
76
+ // Anchor-only opt-outs consumed by the client runtime.
77
+ interface AnchorHTMLAttributes<T> {
78
+ 'transition:disable'?: boolean;
79
+ 'prefetch:disable'?: boolean;
80
+ }
81
+
82
+ // bongo-provided custom elements. Accept the standard HTML attribute
83
+ // surface plus their own flags.
84
+ interface IntrinsicElements {
85
+ 'bongo:alternate': HTMLAttributes<HTMLElement> & BongoAlternateAttrs;
86
+ 'bongo:asset': HTMLAttributes<HTMLElement> & BongoAssetAttrs;
87
+ 'bongo:client': HTMLAttributes<HTMLElement> & BongoClientAttrs;
88
+ 'bongo:image': HTMLAttributes<HTMLElement> & BongoImageAttrs;
89
+ 'bongo:script': HTMLAttributes<HTMLElement> & BongoScriptAttrs;
90
+ 'bongo:style': HTMLAttributes<HTMLElement> & BongoStyleAttrs;
91
+ }
92
+ }
93
+ }
94
+
95
+ export {};
package/package.json CHANGED
@@ -1,6 +1,76 @@
1
1
  {
2
+ "version": "0.1.0",
2
3
  "name": "@bongo/bongo",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
4
+ "description": "Hit it — static sites with a good beat~!",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "git+https://github.com/lukeed/bongo.git",
8
+ "directory": "packages/bongo"
9
+ },
10
+ "types": "index.d.ts",
11
+ "license": "MIT",
12
+ "bin": {
13
+ "bongo": "bin.js"
14
+ },
15
+ "exports": {
16
+ ".": {
17
+ "types": "./index.d.ts",
18
+ "default": "./index.js"
19
+ },
20
+ "./client": {
21
+ "types": "./client.d.ts",
22
+ "browser": "./client.js",
23
+ "default": "./client.js"
24
+ },
25
+ "./jsx": {
26
+ "types": "./jsx.d.ts"
27
+ },
28
+ "./tsconfig": "./tsc.json"
29
+ },
30
+ "files": [
31
+ "bin.js",
32
+ "index.js",
33
+ "index.d.ts",
34
+ "client.js",
35
+ "client.d.ts",
36
+ "jsx.d.ts",
37
+ "tsc.json"
38
+ ],
39
+ "author": {
40
+ "name": "Luke Edwards",
41
+ "email": "luke.edwards05@gmail.com",
42
+ "url": "https://lukeed.com"
43
+ },
44
+ "engines": {
45
+ "node": ">=24",
46
+ "bun": ">=1.4.0"
47
+ },
48
+ "dependencies": {
49
+ "browserslist": "^4.29.3",
50
+ "kleur": "^4.1.5",
51
+ "lightningcss": "^1.33.0",
52
+ "mrmime": "^2.0.1",
53
+ "resolve.exports": "^2.0.4",
54
+ "rolldown": "^1.2.14",
55
+ "tempura": "^1.0.0"
56
+ },
57
+ "publishConfig": {
58
+ "access": "public"
59
+ },
60
+ "devDependencies": {
61
+ "@resvg/resvg-js": "^2.6.2",
62
+ "satori": "^0.57.2"
63
+ },
64
+ "peerDependencies": {
65
+ "@resvg/resvg-js": "^2.6.0",
66
+ "satori": ">=0.57.0"
67
+ },
68
+ "peerDependenciesMeta": {
69
+ "@resvg/resvg-js": {
70
+ "optional": true
71
+ },
72
+ "satori": {
73
+ "optional": true
74
+ }
75
+ }
6
76
  }