@wren-js/core 0.3.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.mjs CHANGED
@@ -1,10 +1,11 @@
1
- import{_ as e,b as t,d as n,f as r,g as i,h as a,l as o,m as s,t as c,u as l,v as u,y as d}from"./constants-DM1Ep_tv.mjs";import{c as f,d as p,l as m,n as h,s as g,u as _}from"./constants-BzbcwnVj.mjs";import{CONFIG_VALID_EXTENSIONS as v,DEFAULTS as y}from"./config.mjs";import{t as b}from"./utils-0wezGh38.mjs";import{existsSync as ee}from"node:fs";import{basename as te,dirname as ne,extname as re,isAbsolute as x,join as S,relative as C,resolve as w}from"node:path";import T from"node:process";import{parseArgs as ie}from"node:util";import{Visitor as ae,createBuilder as oe,createServer as se,defineConfig as ce,isCSSRequest as le,loadConfigFromFile as ue,mergeConfig as E,normalizePath as D,parseSync as O}from"vite";import{mkdir as de,readFile as k,readdir as A,rm as fe,writeFile as pe}from"node:fs/promises";import{pathToFileURL as me}from"node:url";const j=e=>e.split(`
2
- `).length-1,he=(e,t,n,r)=>{let i=j(e.slice(t,n))-j(r);return{end:n,start:t,text:i>0?r+`
3
- `.repeat(i):r}},ge=(e,t)=>{let n=``,r=0;for(let{end:i,start:a,text:o}of t.toSorted((e,t)=>e.start-t.start))n+=e.slice(r,a)+o,r=i;return n+e.slice(r)},_e=/^(?:[a-z][a-z\d+.-]*:|\/\/)/i,M=e=>{if(e.type===`Literal`&&typeof e.value==`string`)return e.value;if(e.type===`TemplateLiteral`&&e.expressions.length===0)return e.quasis[0]?.value.cooked??void 0},N=({value:e})=>{if(e?.type===`Literal`)return e.value;if(e?.type===`JSXExpressionContainer`)return M(e.expression)},ve=(e,t)=>{let n={kept:[]};for(let r of t.attributes){let t=e.slice(r.start,r.end);if(r.type!==`JSXAttribute`||r.name.type!==`JSXIdentifier`){n.kept.push(t);continue}let{name:i}=r.name;i===`src`?n.src=r:i===`dangerouslySetInnerHTML`?n.html=r:(i===`type`&&(n.type=N(r)),n.kept.push(t))}return n},ye=({key:e})=>e.type===`Identifier`?e.name:e.type===`Literal`?e.value:null,be=({value:e})=>{let t=e?.type===`JSXExpressionContainer`?e.expression:void 0;if(t?.type===`ObjectExpression`)for(let e of t.properties){if(e.type!==`Property`||e.computed||ye(e)!==`__html`)continue;let t=M(e.value);return t===void 0?void 0:[t,e.value.start+1]}},xe=(e,t)=>{if(t)return be(t);let n=e.children.filter(e=>e.type!==`JSXText`||e.value.trim()!==``);if(n.length===0)return[``,e.start];if(n.length!==1)return;let[r]=n;if(r.type===`JSXText`)return[r.value,r.start];if(r.type!==`JSXExpressionContainer`)return;let i=M(r.expression);return i===void 0?void 0:[i,r.expression.start+1]},Se=({name:e})=>e.type===`JSXIdentifier`&&e.name===`script`,P=(e,t)=>{let n=[],r=[],{errors:i,program:a}=O(t,e);if(i.length>0)return{scripts:n,warnings:r};let o=0,s=/* @__PURE__ */ new Set,c=e=>{for(let t of e.children)s.add(t.start)},l=t=>{let{html:i,kept:a,src:c,type:l}=ve(e,t.openingElement),u=c&&N(c),d=u!==void 0&&!_e.test(u);if(l!==`module`){d&&p.test(u)&&r.push(`<script src="${u}"> is not bundled; add type="module" to make it a page script.`);return}let f={attributes:a,end:t.end,replacement:s.has(t.start)?``:`<></>`,start:t.start};if(c){d&&n.push({...f,kind:`src`,src:u});return}let m=xe(t,i);if(!m){r.push(`<script type="module"> content must be a static string to be bundled.`);return}let[h,g]=m;h.trim()!==``&&n.push({...f,code:h,codeStart:g,index:o++,kind:`inline`})};return new ae({JSXElement(e){c(e),Se(e.openingElement)&&l(e)},JSXFragment:c}).visit(a),{scripts:n,warnings:r}},F=`virtual:${d}-page-scripts`,I=`__wrenPageScripts`,L=`${F}:route:`,R=`\0${L}`,z=`\0${g}`,B=/\?wren-script=(\d+)\.ts$/,V=`__wren-page-scripts.mjs`,H=`\0${f}`,U=(e,t)=>{let n=D(C(e,t));return n.startsWith(`../`)||x(n)?`@fs/${D(t).replace(/^\//,``)}`:n},W=e=>Object.fromEntries(e.toSorted(([e],[t])=>e<t?-1:1)),G=e=>te(e,re(e)),Ce=async(e,t,n)=>{let r=t.attributes.filter(e=>!/^type\b/.test(e));if(r.length>0&&e.warn(`Page script attributes are dropped when hoisted: ${r.join(` `)}`),t.kind===`inline`)return{id:`${n}?wren-script=${t.index}.ts`,name:`${G(n)}-${t.index}`};let i=await e.resolve(t.src,n);if(!i||i.external||i.id.includes(`/node_modules/`))e.warn(`Page script "${t.src}" must resolve to a project file; left as is.`);else return{id:i.id,name:G(i.id)}},we=async(e,t,n)=>{let r=await k(t,`utf8`),i=P(r,t).scripts.find(e=>e.kind===`inline`&&e.index===n);return i?.kind===`inline`?{code:`
4
- `.repeat(j(r.slice(0,i.codeStart)))+i.code,map:null}:e.error(`Inline page script #${n} not found in ${t}.`)},Te=e=>{let t=/* @__PURE__ */ new Map,n=/* @__PURE__ */ new Set,r=/* @__PURE__ */ new Map,i=/* @__PURE__ */ new Map,a=/* @__PURE__ */ new Map,o=/* @__PURE__ */ new Map,s,c=[],l=(e,n)=>{let r=U(e,n.id),i=t.get(r)??{...n,key:r};return t.set(r,i),i},u=(e,t)=>{let n=/* @__PURE__ */ new Set,a=/* @__PURE__ */ new Set,o=e=>{if(!a.has(e)){a.add(e);for(let t of r.get(e)??[])n.add(t);for(let t of i.get(e)?.values()??[])for(let e of t)n.add(e);for(let n of t(e))o(n)}};return o(e),[...n]},m=async(e,t,n,i)=>{let{scripts:a,warnings:o}=P(t,n),s=a.map(({end:e,replacement:n,start:r})=>he(t,r,e,n));if(!i)return s;for(let t of o)e.warn(t);let c=await Promise.all(a.map(t=>Ce(e,t,n))),{root:u}=e.environment.config;return r.set(n,c.flatMap(e=>e?[l(u,e)]:[])),s.filter((e,t)=>c[t])},v=(e,t,n)=>{if(!n)return`\nexport const ${h} = async () => (await import(${JSON.stringify(L+encodeURIComponent(e))})).default;\n`;let r=U(t,e);return a.set(e,r),`\nimport ${I} from ${JSON.stringify(F)};export const ${h} = () => ${I}.routes[${JSON.stringify(r)}];\n`},y=(e,t)=>{let n=u(t,t=>c.flatMap(({moduleGraph:n})=>{let r=n.getModuleById(t);return r?.file&&x(r.file)&&e.addWatchFile(r.file),Array.from(r?.importedModules??[],e=>e.id).filter(e=>e!==null&&!le(e))})),{base:r}=e.environment.config;return`export default ${JSON.stringify(n.map(e=>r+e.key))};`};return{buildApp:{async handler(e){let r=[...t.values()],i=r.filter(e=>!e.url).map(e=>e.key);if(i.length>0)throw Error(`[${d}] Page scripts were not bundled by the client environment (server environments must build first): ${i.join(`, `)}`);let s={routes:W(Array.from(a,([e,t])=>[t,u(e,e=>o.get(e)??[]).map(e=>e.url)])),scripts:W(r.map(e=>[e.key,e.url]))},c=`export default ${JSON.stringify(s)};\n`;await Promise.all([...n].map(async t=>{let{build:n,root:r}=e.environments[t].config;await pe(w(r,n.outDir,V),c)}))},order:`post`},buildEnd(){if(this.environment.mode===`build`)for(let e of this.getModuleIds()){let t=this.getModuleInfo(e);if(!t)continue;let n=[...t.importedIds,...t.dynamicallyImportedIds];o.set(e,[...o.get(e)??[],...n])}},buildStart(){let{mode:e,name:n}=this.environment;if(e===`build`&&n===`client`)for(let e of t.values())e.reference=this.emitFile({id:e.id,name:`scripts/${e.name}`,preserveSignature:`exports-only`,type:`chunk`})},configResolved(t){s=`${D(w(t.root,e))}/`},configureServer(e){c=Object.values(e.environments)},enforce:`pre`,generateBundle(){if(this.environment.name!==`client`)return;let{base:e}=this.environment.config;for(let n of t.values())n.reference&&(n.url=e+this.getFileName(n.reference))},load:{filter:{id:[B,RegExp(`^${H}`),RegExp(`^${R}`),RegExp(`^${z}$`)]},async handler(e){let{config:t,mode:n}=this.environment;if(e===z)return`export {};`;if(e.startsWith(H)){let r=e.slice(H.length),{key:i}=l(t.root,{id:r,name:G(r)});return n===`build`?`import ${I} from ${JSON.stringify(F)};export default ${I}.scripts[${JSON.stringify(i)}];`:`export default ${JSON.stringify(t.base+i)};`}if(e.startsWith(R))return y(this,decodeURIComponent(e.slice(R.length)));let r=B.exec(e);return r?we(this,e.slice(0,r.index),Number(r[1])):null}},name:`${d}-page-scripts`,renderChunk(e,t){if(!e.includes(F))return null;this.environment.config.build.write&&n.add(this.environment.name);let r=D(C(ne(t.fileName),V)),i=r.startsWith(`.`)?r:`./${r}`;return{code:e.replaceAll(F,i),map:null}},resolveId:{filter:{id:RegExp(`^(?:${g}|${f}|${F})`)},async handler(e,t){if(e.startsWith(`virtual:wrenjs-hoist:`)){if(t&&this.environment.config.consumer===`server`){let n=await this.resolve(e.slice(g.length),t);if(!n?.id.startsWith(H))return this.error(`"${e}" must resolve to a Wren page script (${t}).`);let r=n.id.slice(H.length),a=l(this.environment.config.root,{id:r,name:G(r)}),o=i.get(t)??/* @__PURE__ */ new Map,s=o.get(this.environment.name)??/* @__PURE__ */ new Set;i.set(t,o.set(this.environment.name,s.add(a)))}return z}return e.startsWith(`virtual:wrenjs-script-url:`)||e.startsWith(L)?`\0${e}`:e===F?{external:!0,id:e}:null}},sharedDuringBuild:!0,transform:{filter:{id:p},async handler(e,t){let{config:n,mode:a}=this.environment,o=n.consumer===`server`,c=o&&t.startsWith(s)&&_.test(t),l=e.includes(`<script`)?await m(this,e,t,o):[];if(l.length===0&&r.delete(t),i.get(t)?.delete(this.environment.name),l.length===0&&!c)return null;let u=c?v(t,n.root,a===`build`):``;return{code:ge(e,l)+u,map:null}}}}},Ee=/<link\b(?=[^>]*\srel="stylesheet")(?![^>]*\s(?:disabled|media)\b)[^>]*\shref="([^"]+)"[^>]*>/gi,De=/\sdata-precedence="[^"]*"/i,Oe=/<\/(style)/gi,ke=(e,t,n,r)=>{for(let i of Object.values(e)){if(i.type!==`asset`||!i.fileName.endsWith(`.css`))continue;let e=Buffer.from(i.source);e.byteLength<n&&r.set(t+i.fileName,e.toString().replace(Oe,`<\\/$1`))}},Ae=(e,t)=>{let n=e.indexOf(`</head>`);return n===-1&&(n=e.length),e.slice(0,n).replace(Ee,(e,n)=>{let r=t.get(n);if(r===void 0)return e;let i=De.exec(e)?.[0]??``,a=`<style data-href="${n}"${i}>${r}</style>`;return i?`${a}<link disabled type="text/x-inlined"${e.slice(5)}`:a})+e.slice(n)},je=async(e,t,n=`http://localhost`,r=!1,i=/* @__PURE__ */ new Map)=>{let a=new URL(n);if(!/^https?:$/.test(a.protocol)||a.href!==`${a.origin}/`)throw Error(`build.prerender.origin must be an HTTP(S) origin.`);let o=/* @__PURE__ */ new Set,s=/* @__PURE__ */ new Set,c=async({pathname:e,response:n})=>{let r=b(e);if(n.status!==200)throw Error(`Cannot prerender ${r}: HTTP ${n.status}.`);let a=n.headers.get(`content-type`)?.startsWith(`text/html`),c=a?S(r.slice(1),`index.html`):r.slice(1);if(o.has(r)||s.has(c))throw Error(`Conflicting prerender artifact: ${r}.`);o.add(r),s.add(c);let l=S(t,c);await de(ne(l),{recursive:!0}),await pe(l,a&&i.size>0?Ae(await n.text(),i):new Uint8Array(await n.arrayBuffer()))},l=0;return await Promise.all(e.map(async e=>{let t=await e.getPaths(r);await Promise.all(t.map(async t=>{let n=b(t);if(o.has(n))throw Error(`Multiple prerender providers claim ${n}.`);let r=await e.render(new Request(new URL(n,a)));if(await Promise.all(r.map(c)),!o.has(n))throw Error(`Prerender renderer did not return ${n}.`);l++}))})),l},Me=e=>{let t=e.integrations?.flatMap(({prerender:e})=>e?[{...e,output:``,reference:``}]:[])??[],n=e.build?.inlineCSS,r=n===!0?1/0:n||0,i=/* @__PURE__ */ new Map;return{apply:`build`,buildApp:{async handler(n){if(!t.length)return;let r=await Promise.all(t.map(async({environment:e,output:t})=>{if(!t)throw Error(`No prerender entry was built for ${e}.`);return import(
1
+ import{_ as e,b as t,d as n,f as r,g as i,h as a,l as o,m as s,t as c,u as l,v as u,y as d}from"./constants-C06o90Ha.mjs";import{c as f,d as p,l as m,n as h,s as g,u as _}from"./constants-BzbcwnVj.mjs";import{CONFIG_VALID_EXTENSIONS as v,DEFAULTS as y}from"./config.mjs";import{t as b}from"./utils-DhsYUjpC.mjs";import{existsSync as ee}from"node:fs";import{basename as te,dirname as x,extname as ne,isAbsolute as S,join as C,relative as w,resolve as T}from"node:path";import E from"node:process";import{parseArgs as re}from"node:util";import{Visitor as ie,createBuilder as ae,createServer as oe,defineConfig as se,isCSSRequest as ce,loadConfigFromFile as le,mergeConfig as D,normalizePath as O,parseSync as k}from"vite";import{mkdir as ue,readFile as A,readdir as de,rm as j,writeFile as M}from"node:fs/promises";import{pathToFileURL as fe}from"node:url";const N=e=>{let t=0;for(let n=e.indexOf(`
2
+ `);n!==-1;n=e.indexOf(`
3
+ `,n+1))t++;return t},pe=(e,t,n,r)=>{let i=N(e.slice(t,n))-N(r);return{end:n,start:t,text:i>0?r+`
4
+ `.repeat(i):r}},me=(e,t)=>{let n=``,r=0;for(let{end:i,start:a,text:o}of t.toSorted((e,t)=>e.start-t.start))n+=e.slice(r,a)+o,r=i;return n+e.slice(r)},P=e=>te(e,ne(e)),F=e=>Object.fromEntries(e.toSorted(([e],[t])=>e<t?-1:1)),he=e=>{let t=[];for(let{entries:n}of e)for(let{exportName:e,isType:r}of n){if(r)continue;let n=e.kind===`Default`?`default`:e.name;n!==null&&t.push(n)}return t},ge=/^(?:[a-z][a-z\d+.-]*:|\/\/)/i,I=e=>{if(e.type===`Literal`&&typeof e.value==`string`)return e.value;if(e.type===`TemplateLiteral`&&e.expressions.length===0)return e.quasis[0]?.value.cooked??void 0},L=({value:e})=>{if(e?.type===`Literal`)return e.value;if(e?.type===`JSXExpressionContainer`)return I(e.expression)},_e=(e,t)=>{let n={kept:[]};for(let r of t.attributes){let t=e.slice(r.start,r.end);if(r.type!==`JSXAttribute`||r.name.type!==`JSXIdentifier`){n.kept.push(t);continue}let{name:i}=r.name;i===`src`?n.src=r:i===`dangerouslySetInnerHTML`?n.html=r:(i===`type`&&(n.type=L(r)),n.kept.push(t))}return n},ve=({key:e})=>e.type===`Identifier`?e.name:e.type===`Literal`?e.value:null,ye=({value:e})=>{let t=e?.type===`JSXExpressionContainer`?e.expression:void 0;if(t?.type===`ObjectExpression`)for(let e of t.properties){if(e.type!==`Property`||e.computed||ve(e)!==`__html`)continue;let t=I(e.value);return t===void 0?void 0:[t,e.value.start+1]}},be=(e,t)=>{if(t)return ye(t);let n=e.children.filter(e=>e.type!==`JSXText`||e.value.trim()!==``);if(n.length===0)return[``,e.start];if(n.length!==1)return;let[r]=n;if(r.type===`JSXText`)return[r.value,r.start];if(r.type!==`JSXExpressionContainer`)return;let i=I(r.expression);return i===void 0?void 0:[i,r.expression.start+1]},xe=({name:e})=>e.type===`JSXIdentifier`&&e.name===`script`,R=(e,t)=>{let n=[],r=[],{errors:i,program:a}=k(t,e);if(i.length>0)return{scripts:n,warnings:r};let o=0,s=/* @__PURE__ */ new Set,c=e=>{for(let t of e.children)s.add(t.start)},l=t=>{let{html:i,kept:a,src:c,type:l}=_e(e,t.openingElement),u=c&&L(c),d=u!==void 0&&!ge.test(u);if(l!==`module`){d&&p.test(u)&&r.push(`<script src="${u}"> is not bundled; add type="module" to make it a page script.`);return}let f={attributes:a,end:t.end,replacement:s.has(t.start)?``:`<></>`,start:t.start};if(c){d&&n.push({...f,kind:`src`,src:u});return}let m=be(t,i);if(!m){r.push(`<script type="module"> content must be a static string to be bundled.`);return}let[h,g]=m;h.trim()!==``&&n.push({...f,code:h,codeStart:g,index:o++,kind:`inline`})};return new ie({JSXElement(e){c(e),xe(e.openingElement)&&l(e)},JSXFragment:c}).visit(a),{scripts:n,warnings:r}},z=`virtual:${d}-page-scripts`,B=`__wrenPageScripts`,V=`${z}:route:`,H=`\0${V}`,U=`\0${g}`,W=/\?wren-script=(\d+)\.ts$/,G=`__wren-page-scripts.mjs`,K=`\0${f}`,q=(e,t)=>{let n=O(w(e,t));return n.startsWith(`../`)||S(n)?`@fs/${O(t).replace(/^\//,``)}`:n},Se=async(e,t,n)=>{let r=t.attributes.filter(e=>!/^type\b/.test(e));if(r.length>0&&e.warn(`Page script attributes are dropped when hoisted: ${r.join(` `)}`),t.kind===`inline`)return{id:`${n}?wren-script=${t.index}.ts`,name:`${P(n)}-${t.index}`};let i=await e.resolve(t.src,n);if(!i||i.external||i.id.includes(`/node_modules/`))e.warn(`Page script "${t.src}" must resolve to a project file; left as is.`);else return{id:i.id,name:P(i.id)}},Ce=async(e,t,n)=>{let r=await A(t,`utf8`),i=R(r,t).scripts.find(e=>e.kind===`inline`&&e.index===n);return i?.kind===`inline`?{code:`
5
+ `.repeat(N(r.slice(0,i.codeStart)))+i.code,map:null}:e.error(`Inline page script #${n} not found in ${t}.`)},we=e=>{let t=/* @__PURE__ */ new Map,n=/* @__PURE__ */ new Set,r=/* @__PURE__ */ new Map,i=/* @__PURE__ */ new Map,a=/* @__PURE__ */ new Map,o=/* @__PURE__ */ new Map,s,c=[],l=(e,n)=>{let r=q(e,n.id),i=t.get(r)??{...n,key:r};return t.set(r,i),i},u=(e,t)=>{let n=/* @__PURE__ */ new Set,a=/* @__PURE__ */ new Set,o=e=>{if(!a.has(e)){a.add(e);for(let t of r.get(e)??[])n.add(t);for(let t of i.get(e)?.values()??[])for(let e of t)n.add(e);for(let n of t(e))o(n)}};return o(e),[...n]},m=async(e,t,n,i)=>{let{scripts:a,warnings:o}=R(t,n),s=a.map(({end:e,replacement:n,start:r})=>pe(t,r,e,n));if(!i)return s;for(let t of o)e.warn(t);let c=await Promise.all(a.map(t=>Se(e,t,n))),{root:u}=e.environment.config;return r.set(n,c.flatMap(e=>e?[l(u,e)]:[])),s.filter((e,t)=>c[t])},v=(e,t,n)=>{if(!n)return`\nexport const ${h} = async () => (await import(${JSON.stringify(V+encodeURIComponent(e))})).default;\n`;let r=q(t,e);return a.set(e,r),`\nimport ${B} from ${JSON.stringify(z)};export const ${h} = () => ${B}.routes[${JSON.stringify(r)}];\n`},y=(e,t)=>{let n=u(t,t=>c.flatMap(({moduleGraph:n})=>{let r=n.getModuleById(t);return r?.file&&S(r.file)&&e.addWatchFile(r.file),Array.from(r?.importedModules??[],e=>e.id).filter(e=>e!==null&&!ce(e))})),{base:r}=e.environment.config;return`export default ${JSON.stringify(n.map(e=>r+e.key))};`};return{buildApp:{async handler(e){let r=[...t.values()],i=r.filter(e=>!e.url).map(e=>e.key);if(i.length>0)throw Error(`[${d}] Page scripts were not bundled by the client environment (server environments must build first): ${i.join(`, `)}`);let s={routes:F(Array.from(a,([e,t])=>[t,u(e,e=>o.get(e)??[]).map(e=>e.url)])),scripts:F(r.map(e=>[e.key,e.url]))},c=`export default ${JSON.stringify(s)};\n`;await Promise.all([...n].map(async t=>{let{build:n,root:r}=e.environments[t].config;await M(T(r,n.outDir,G),c)}))},order:`post`},buildEnd(){if(this.environment.mode===`build`)for(let e of this.getModuleIds()){let t=this.getModuleInfo(e);if(!t)continue;let n=[...t.importedIds,...t.dynamicallyImportedIds];o.set(e,[...o.get(e)??[],...n])}},buildStart(){let{mode:e,name:n}=this.environment;if(e===`build`&&n===`client`)for(let e of t.values())e.reference=this.emitFile({id:e.id,name:`scripts/${e.name}`,preserveSignature:`exports-only`,type:`chunk`})},configResolved(t){s=`${O(T(t.root,e))}/`},configureServer(e){c=Object.values(e.environments)},enforce:`pre`,generateBundle(){if(this.environment.name!==`client`)return;let{base:e}=this.environment.config;for(let n of t.values())n.reference&&(n.url=e+this.getFileName(n.reference))},load:{filter:{id:[W,RegExp(`^${K}`),RegExp(`^${H}`),RegExp(`^${U}$`)]},async handler(e){let{config:t,mode:n}=this.environment;if(e===U)return`export {};`;if(e.startsWith(K)){let r=e.slice(K.length),{key:i}=l(t.root,{id:r,name:P(r)});return n===`build`?`import ${B} from ${JSON.stringify(z)};export default ${B}.scripts[${JSON.stringify(i)}];`:`export default ${JSON.stringify(t.base+i)};`}if(e.startsWith(H))return y(this,decodeURIComponent(e.slice(H.length)));let r=W.exec(e);return r?Ce(this,e.slice(0,r.index),Number(r[1])):null}},name:`${d}-page-scripts`,renderChunk(e,t){if(!e.includes(z))return null;this.environment.config.build.write&&n.add(this.environment.name);let r=O(w(x(t.fileName),G)),i=r.startsWith(`.`)?r:`./${r}`;return{code:e.replaceAll(z,i),map:null}},resolveId:{filter:{id:RegExp(`^(?:${g}|${f}|${z})`)},async handler(e,t){if(e.startsWith(`virtual:wrenjs-hoist:`)){if(t&&this.environment.config.consumer===`server`){let n=await this.resolve(e.slice(g.length),t);if(!n?.id.startsWith(K))return this.error(`"${e}" must resolve to a Wren page script (${t}).`);let r=n.id.slice(K.length),a=l(this.environment.config.root,{id:r,name:P(r)}),o=i.get(t)??/* @__PURE__ */ new Map,s=o.get(this.environment.name)??/* @__PURE__ */ new Set;i.set(t,o.set(this.environment.name,s.add(a)))}return U}return e.startsWith(`virtual:wrenjs-script-url:`)||e.startsWith(V)?`\0${e}`:e===z?{external:!0,id:e}:null}},sharedDuringBuild:!0,transform:{filter:{id:p},async handler(e,t){let{config:n,mode:a}=this.environment,o=n.consumer===`server`,c=o&&t.startsWith(s)&&_.test(t),l=e.includes(`<script`)?await m(this,e,t,o):[];if(l.length===0&&r.delete(t),i.get(t)?.delete(this.environment.name),l.length===0&&!c)return null;let u=c?v(t,n.root,a===`build`):``;return{code:me(e,l)+u,map:null}}}}},Te=/<link\b(?=[^>]*\srel="stylesheet")(?![^>]*\s(?:disabled|media)\b)[^>]*\shref="([^"]+)"[^>]*>/gi,Ee=/\sdata-precedence="[^"]*"/i,De=/<\/(style)/gi,Oe=(e,t,n,r)=>{for(let i of Object.values(e)){if(i.type!==`asset`||!i.fileName.endsWith(`.css`))continue;let e=Buffer.from(i.source);e.byteLength<n&&r.set(t+i.fileName,e.toString().replace(De,`<\\/$1`))}},ke=(e,t)=>{let n=e.indexOf(`</head>`);return n===-1&&(n=e.length),e.slice(0,n).replace(Te,(e,n)=>{let r=t.get(n);if(r===void 0)return e;let i=Ee.exec(e)?.[0]??``,a=`<style data-href="${n}"${i}>${r}</style>`;return i?`${a}<link disabled type="text/x-inlined"${e.slice(5)}`:a})+e.slice(n)},Ae=async(e,t,n=`http://localhost`,r=!1,i=/* @__PURE__ */ new Map)=>{let a=new URL(n);if(!/^https?:$/.test(a.protocol)||a.href!==`${a.origin}/`)throw Error(`build.prerender.origin must be an HTTP(S) origin.`);let o=/* @__PURE__ */ new Set,s=/* @__PURE__ */ new Set,c=async({pathname:e,response:n})=>{let r=b(e);if(n.status!==200)throw Error(`Cannot prerender ${r}: HTTP ${n.status}.`);let a=n.headers.get(`content-type`)?.startsWith(`text/html`),c=a?C(r.slice(1),`index.html`):r.slice(1);if(o.has(r)||s.has(c))throw Error(`Conflicting prerender artifact: ${r}.`);o.add(r),s.add(c);let l=C(t,c);await ue(x(l),{recursive:!0}),await M(l,a&&i.size>0?ke(await n.text(),i):new Uint8Array(await n.arrayBuffer()))},l=0;return await Promise.all(e.map(async e=>{let t=await e.getPaths(r);await Promise.all(t.map(async t=>{let n=b(t);if(o.has(n))throw Error(`Multiple prerender providers claim ${n}.`);let r=await e.render(new Request(new URL(n,a)));if(await Promise.all(r.map(c)),!o.has(n))throw Error(`Prerender renderer did not return ${n}.`);l++}))})),l},je=e=>{let t=e.integrations?.flatMap(({prerender:e})=>e?[{...e,output:``,reference:``}]:[])??[],n=e.build?.inlineCSS,r=n===!0?1/0:n||0,i=/* @__PURE__ */ new Map;return{apply:`build`,buildApp:{async handler(n){if(!t.length)return;let r=await Promise.all(t.map(async({environment:e,output:t})=>{if(!t)throw Error(`No prerender entry was built for ${e}.`);return import(
5
6
  /* @vite-ignore */
6
- me(t).href)})),a=n.environments.client;if(!a)throw Error(`Prerendering requires a client output environment.`);let o=await je(r,w(n.config.root,a.config.build.outDir),e.build?.prerender?.origin,e.build?.output===`static`,i);n.config.logger.info(`Prerendered ${o} pages.`),await Promise.all(t.flatMap(({output:e})=>[fe(e,{force:!0}),fe(`${e}.map`,{force:!0})]))},order:`post`},buildStart(){for(let e of t)e.environment===this.environment.name&&(e.reference=this.emitFile({id:e.entry,preserveSignature:`strict`,type:`chunk`}))},generateBundle(){if(this.environment.config.build.write)for(let e of t)e.environment===this.environment.name&&(e.output=w(this.environment.config.root,this.environment.config.build.outDir,this.getFileName(e.reference)))},name:`${d}-prerender`,sharedDuringBuild:!0,writeBundle(e,t){r&&this.environment.name===`client`&&ke(t,this.environment.config.base,r,i)}}},Ne=/* @__PURE__ */ new Map([[o,s],[l,a],[n,e],[r,u]]),Pe=/* @__PURE__ */ new Set([o,n,r]),K=e=>e.replace(/\.[^/.]+$/,``),q=(e,t)=>{let n=t.includes(`default`),r=c.some(e=>t.includes(e)),a=Ne.get(K(e));if(n)return a?r?void 0:a:i;if(r)return!a||a===`LAYOUT`||a===`ROOT`?`API`:void 0},J=e=>e.isFile()&&_.test(e.name),Y=async e=>{let{errors:t,module:n}=O(e,await k(e,`utf8`));if(t.length>0)throw SyntaxError(`Cannot parse ${e}: ${t.map(e=>e.message).join(`
7
- `)}`);return n.staticExports.reduce((e,t)=>{for(let n of t.entries){if(n.isType)continue;let t=n.exportName.kind===`Default`?`default`:n.exportName.name;t!==null&&e.push(t)}return e},[])},X={layouts:[],proxies:[]},Fe=async e=>{let t=await A(e,{withFileTypes:!0}),n=[],r=[],i=[];return await Promise.all(t.filter(e=>J(e)&&Pe.has(K(e.name))).map(async t=>{let a=w(e,t.name),o=q(t.name,await Y(a));o===`LAYOUT`?n.push({file:a,kind:o}):o===`PROXY`?r.push({file:a,kind:o}):o===`ROOT`&&i.push({file:a,kind:o})})),{layouts:[...n,...i],proxies:r}},Ie=e=>{let t=/* @__PURE__ */ new Map,n=w(e),r=n.endsWith(`/`)?n:`${n}/`,i=e=>{if(e!==n&&!e.startsWith(r))return Promise.resolve(X);let a=t.get(e);if(a)return a;let o=Promise.all([Fe(e),e===n?Promise.resolve(X):i(w(e,`..`))]).then(([e,t])=>({layouts:[...e.layouts,...t.layouts],proxies:[...e.proxies,...t.proxies]}));return t.set(e,o),o};return e=>i(w(e,`..`))},Le=/\/\([^/]+\)(?=\/|$)/g,Re=(e,t)=>{let n=[];return{params:n,pattern:t.slice(e.length).replace(/\.[^/.]+$/,``).replace(/\/(?:index|__not-found)$/,``).replaceAll(/\[(\.\.\.)?([^[\]]+)\]/g,(e,t,r)=>(n.push(r),t?`:${r}*`:`:${r}`)).replaceAll(Le,``)||`/`}},ze=async(e,t,n)=>{let r=D(`${n.parentPath}/${n.name}`),i=q(n.name,await Y(r));if(i!==`API`&&i!==`NOT_FOUND`&&i!==`PAGE`)return;let{params:a,pattern:o}=Re(t,r);if(i!==`PAGE`)return{file:r,kind:i,params:a,pattern:o};let{layouts:s,proxies:c}=await e(r);return{file:r,kind:i,layouts:s,params:a,pattern:o,proxies:c}},Be=async(e,t)=>{let n=w(t,e.router),r=await A(n,{recursive:!0,withFileTypes:!0}),i=Ie(n),a=await Promise.all(r.filter(J).map(async e=>ze(i,n,e))),o=[],s=[];for(let e of a)e&&(e.kind===`NOT_FOUND`?o:s).push(e);return{notFounds:o,routes:s}},Z=()=>({s:Object.create(null)}),Ve=(e,t,n)=>{let r=[],i=e,a=n;for(;a<t.length;a++){let e=i.indexOf(`:${t[a]}`);if(e<0)break;r.push(i.slice(0,e)),i=i.slice(e+t[a].length+1)}return r.push(i),{i:a,lits:r}},He=(e,t,n)=>{let r=n.params,i=t.split(`/`).filter(Boolean),a=i.at(-1)===`:${r.at(-1)}*`?`w`:`e`;a===`w`&&i.pop();let o=e,s=0;for(let e of i)if(!e.includes(`:`))o.s[e]??=Z(),o=o.s[e];else if(e===`:${r[s]}`)o.p??=Z(),o=o.p,s++;else if(e.endsWith(`*`))throw Error(`Catch-all must be last in "${t}".`);else{let n=Ve(e,r,s);if(n.i===s)throw Error(`Params do not match pattern "${t}".`);let i=Z();o.m??=[],o.m.push({lits:n.lits,node:i}),o=i,s=n.i}if(s!==r.length-+(a===`w`))throw Error(`Params do not match pattern "${t}".`);let c=o[a];if(c)throw Error(`"${n.file}" conflicts with "${c.file}".`);o[a]=n},Ue=e=>{let t=Z();for(let[n,r]of Object.entries(e))He(t,n,r);return t},We=e=>{let t={},n={};for(let r of e){let{params:e,pattern:i,...a}=r;e?.length?t[i]=r:n[i]=a}return[Ue(t),n]},Ge=async(e,t)=>{let{notFounds:n,routes:r}=await Be(e,t),[i,a]=We(n),[o,s]=We(r);return{dynamicNotFounds:i,dynamicRoutes:o,staticNotFounds:a,staticRoutes:s}},Q=e=>({__wrenCode:e}),Ke=(e,t)=>{let n=/* @__PURE__ */ new Map,r=e=>{let t=D(e.file),r=n.get(t);return r||(r=`load${n.size}`,n.set(t,r)),r},i=JSON.stringify(e,(e,t)=>{if(!t||typeof t.file!=`string`)return t;let n=r(t),i=t.layouts?.map(r),a=t.proxies?.map(r);return{kind:t.kind,layouts:i?.map(Q),module:Q(n),params:t.params,pattern:t.pattern,proxies:a?.map(Q),stack:Q(`createStack(${n}, [${i?.join(`, `)??``}], [${a?.join(`, `)??``}])`)}}).replace(/\{"__wrenCode":"([^"]+)"\}/g,`$1`),a=[...n].map(([e,n])=>{let r=`() => import(${JSON.stringify(e)})`;return`const ${n} = ${t?`memoize(${r})`:r};`});return`
7
+ fe(t).href)})),a=n.environments.client;if(!a)throw Error(`Prerendering requires a client output environment.`);let o=await Ae(r,T(n.config.root,a.config.build.outDir),e.build?.prerender?.origin,e.build?.output===`static`,i);n.config.logger.info(`Prerendered ${o} pages.`),await Promise.all(t.flatMap(({output:e})=>[j(e,{force:!0}),j(`${e}.map`,{force:!0})]))},order:`post`},buildStart(){for(let e of t)e.environment===this.environment.name&&(e.reference=this.emitFile({id:e.entry,preserveSignature:`strict`,type:`chunk`}))},generateBundle(){if(this.environment.config.build.write)for(let e of t)e.environment===this.environment.name&&(e.output=T(this.environment.config.root,this.environment.config.build.outDir,this.getFileName(e.reference)))},name:`${d}-prerender`,sharedDuringBuild:!0,writeBundle(e,t){r&&this.environment.name===`client`&&Oe(t,this.environment.config.base,r,i)}}},Me=/* @__PURE__ */ new Map([[o,s],[l,a],[n,e],[r,u]]),Ne={layouts:[],proxies:[]},Pe=/\/\([^/]+\)(?=\/|$)/g,Fe=(e,t)=>{let n=t.includes(`default`),r=c.some(e=>t.includes(e)),a=Me.get(P(e));if(n)return a?r?void 0:a:i;if(r)return!a||a===`LAYOUT`||a===`ROOT`?`API`:void 0},Ie=e=>e.isFile()&&_.test(e.name),Le=async e=>{let t=O(`${e.parentPath}/${e.name}`),{errors:n,module:r}=k(t,await A(t,`utf8`));if(n.length>0)throw SyntaxError(`Cannot parse ${t}: ${n.map(e=>e.message).join(`
8
+ `)}`);let i=Fe(e.name,he(r.staticExports));return i&&{file:t,kind:i}},J=(e,t)=>{let n=[];return{params:n,pattern:t.slice(e.length).replace(/\.[^/.]+$/,``).replace(/\/(?:index|__not-found)$/,``).replaceAll(/\[(\.\.\.)?([^[\]]+)\]/g,(e,t,r)=>(n.push(r),t?`:${r}*`:`:${r}`)).replaceAll(Pe,``)||`/`}},Re=async(e,t)=>{let n=O(T(t,e.router)),r=await de(n,{recursive:!0,withFileTypes:!0}),i=(await Promise.all(r.filter(Ie).map(Le))).filter(e=>e!==void 0),a=/* @__PURE__ */ new Map;for(let e of i){let{kind:t}=e;if(t!==`LAYOUT`&&t!==`PROXY`&&t!==`ROOT`)continue;let n=x(e.file),r=a.get(n)??{layouts:[],proxies:[],roots:[]};a.set(n,r),t===`LAYOUT`?r.layouts.push(e):t===`PROXY`?r.proxies.push(e):r.roots.push(e)}let o=/* @__PURE__ */ new Map,s=e=>{let t=o.get(e);if(!t){let r=e===n?Ne:s(x(e)),{layouts:i=[],proxies:c=[],roots:l=[]}=a.get(e)??{};t={layouts:[...i,...l,...r.layouts],proxies:[...c,...r.proxies]},o.set(e,t)}return t},c=[],l=[];for(let{file:e,kind:t}of i)t===`PAGE`?l.push({file:e,kind:t,...J(n,e),...s(x(e))}):(t===`API`||t===`NOT_FOUND`)&&(t===`API`?l:c).push({file:e,kind:t,...J(n,e)});return{notFounds:c,routes:l}},Y=()=>({s:Object.create(null)}),ze=(e,t,n)=>{let r=[],i=e,a=n;for(;a<t.length;a++){let e=i.indexOf(`:${t[a]}`);if(e<0)break;r.push(i.slice(0,e)),i=i.slice(e+t[a].length+1)}return r.push(i),{i:a,lits:r}},Be=(e,t,n)=>{let r=n.params,i=t.split(`/`).filter(Boolean),a=i.at(-1)===`:${r.at(-1)}*`?`w`:`e`;a===`w`&&i.pop();let o=e,s=0;for(let e of i)if(!e.includes(`:`))o.s[e]??=Y(),o=o.s[e];else if(e===`:${r[s]}`)o.p??=Y(),o=o.p,s++;else if(e.endsWith(`*`))throw Error(`Catch-all must be last in "${t}".`);else{let n=ze(e,r,s);if(n.i===s)throw Error(`Params do not match pattern "${t}".`);let i=Y();o.m??=[],o.m.push({lits:n.lits,node:i}),o=i,s=n.i}if(s!==r.length-+(a===`w`))throw Error(`Params do not match pattern "${t}".`);let c=o[a];if(c)throw Error(`"${n.file}" conflicts with "${c.file}".`);o[a]=n},Ve=e=>{let t=Y();for(let[n,r]of Object.entries(e))Be(t,n,r);return t},X=e=>{let t={},n={};for(let r of e){let{params:e,pattern:i,...a}=r;e?.length?t[i]=r:n[i]=a}return[Ve(t),n]},He=async(e,t)=>{let{notFounds:n,routes:r}=await Re(e,t),[i,a]=X(n),[o,s]=X(r);return{dynamicNotFounds:i,dynamicRoutes:o,staticNotFounds:a,staticRoutes:s}},Z=e=>({__wrenCode:e}),Ue=(e,t)=>{let n=/* @__PURE__ */ new Map,r=e=>{let t=O(e.file),r=n.get(t);return r||(r=`load${n.size}`,n.set(t,r)),r},i=JSON.stringify(e,(e,t)=>{if(!t||typeof t.file!=`string`)return t;let n=r(t),i=t.layouts?.map(r),a=t.proxies?.map(r);return{kind:t.kind,layouts:i?.map(Z),module:Z(n),params:t.params,pattern:t.pattern,proxies:a?.map(Z),stack:Z(`createStack(${n}, [${i?.join(`, `)??``}], [${a?.join(`, `)??``}])`)}}).replace(/\{"__wrenCode":"([^"]+)"\}/g,`$1`),a=[...n].map(([e,n])=>{let r=`() => import(${JSON.stringify(e)})`;return`const ${n} = ${t?`memoize(${r})`:r};`});return`
8
9
  ${t?`function memoize(load) {
9
10
  let pending;
10
11
  return () => {
@@ -47,4 +48,4 @@ me(t).href)})),a=n.environments.client;if(!a)throw Error(`Prerendering requires
47
48
  const manifest = deepFreeze(${i});
48
49
  export const { dynamicNotFounds, dynamicRoutes, staticNotFounds, staticRoutes } = manifest;
49
50
  export default manifest;
50
- `},$=`\0${m}`,qe=(e,t)=>({configureServer(e){let n=`${D(w(e.config.root,t.router))}/`,r=t=>{if(!D(t).startsWith(n))return;let r=!1;for(let{moduleGraph:t}of Object.values(e.environments)){let e=t.getModuleById($);e&&(r=!0,t.invalidateModule(e))}r&&e.ws.send({type:`full-reload`})};e.watcher.on(`add`,r).on(`change`,r).on(`unlink`,r)},load:{filter:{id:RegExp(`^${$}$`)},async handler(){let n=await Ge(t,this.environment.config.root);return Ke(n,e.command===`build`)}},name:`${d}-route-manifest`,resolveId:{filter:{id:RegExp(`^${m}$`)},handler:()=>$}}),Je=async(e,t)=>{let n=ce({appType:`custom`,build:{minify:!0,outDir:`dist`,rolldownOptions:{experimental:{nativeMagicString:!0},optimization:{inlineConst:{mode:`smart`,pass:2}}}},builder:{async buildApp(e){let t=Object.values(e.environments).toSorted((e,t)=>Number(e.config.consumer===`client`)-Number(t.config.consumer===`client`));for(let n of t){if(n.isBuilt)continue;let{build:t,input:r,isBundled:i}=n.config,a=t.rolldownOptions.input??(t.lib?t.lib.entry:void 0)??(typeof t.ssr==`string`?t.ssr:r);!(typeof a==`string`||Object.keys(a??{}).length>0)||!i?delete e.environments[n.name]:await e.build(n)}},sharedConfigBuild:!0,sharedPlugins:!0},plugins:[{api:{wrenConfig:t},name:`${d}-config`},qe(e,t),Te(t.router),Me(t)],resolve:{noExternal:[/^@wren-js\//],tsconfigPaths:!0}});return(await Promise.all([t.adapter,...t.integrations??[]].map(async n=>n?.viteConfig(t,e)))).reduce((e,t)=>t?E(e,t):e,n)},Ye=async e=>{let t=T.cwd(),n=v.map(e=>D(w(t,`wren.config.${e}`))),r=n.find(e=>ee(e)),i=r?await ue(e,r):null,a=/* @__PURE__ */ new Set([...n,...(i?.dependencies??[]).map(e=>D(w(e)))]),o=i?E(y,i.config):y,s=E(await Je(e,o),o.vite??{});return{...s,configFile:!1,mode:e.mode,plugins:[...s.plugins??[],{apply:`serve`,configResolved(e){e.configFileDependencies.push(...a)},configureServer(t){let n=t.restart.bind(t),r;t.restart=i=>(r??=(async()=>{let r=await Ye(e),{inlineConfig:a}=t.config;for(let e of Object.keys(a))Reflect.deleteProperty(a,e);Object.assign(a,r),await n(i)})().finally(()=>{r=void 0}),r)},name:`${d}-config-reload`}]}},Xe=async e=>{let n=await Ye(e);if(e.command===`build`)return(await oe(n)).buildApp();let r=await se(n);return await r.listen(),console.info(`${d} v${t}`),r.printUrls(),r.bindCLIShortcuts({print:!0}),r},{positionals:Ze,values:Qe}=ie({allowPositionals:!0,args:T.argv.slice(2),options:{help:{short:`h`,type:`boolean`},version:{short:`v`,type:`boolean`}}});if(Qe.version)console.info(`${d} v${t}`);else if(Qe.help)console.info(`Usage: wren [dev|build] [-h|--help] [-v|--version]`);else{let e=Ze[0]===`build`?`build`:`serve`;Xe({command:e,mode:e===`build`?`production`:T.env.NODE_ENV??`development`}).catch(e=>{console.error(e),T.exit(1)})}export{};
51
+ `},Q=`\0${m}`,We=(e,t)=>({configureServer(e){let n=`${O(T(e.config.root,t.router))}/`,r=t=>{if(!O(t).startsWith(n))return;let r=!1;for(let{moduleGraph:t}of Object.values(e.environments)){let e=t.getModuleById(Q);e&&(r=!0,t.invalidateModule(e))}r&&e.ws.send({type:`full-reload`})};e.watcher.on(`add`,r).on(`change`,r).on(`unlink`,r)},load:{filter:{id:RegExp(`^${Q}$`)},async handler(){let n=await He(t,this.environment.config.root);return Ue(n,e.command===`build`)}},name:`${d}-route-manifest`,resolveId:{filter:{id:RegExp(`^${m}$`)},handler:()=>Q}}),Ge=async(e,t)=>{let n=se({appType:`custom`,build:{minify:!0,outDir:`dist`,rolldownOptions:{experimental:{nativeMagicString:!0},optimization:{inlineConst:{mode:`smart`,pass:2}}}},builder:{async buildApp(e){let t=Object.values(e.environments).toSorted((e,t)=>Number(e.config.consumer===`client`)-Number(t.config.consumer===`client`));for(let n of t){if(n.isBuilt)continue;let{build:t,input:r,isBundled:i}=n.config,a=t.rolldownOptions.input??(t.lib?t.lib.entry:void 0)??(typeof t.ssr==`string`?t.ssr:r);!(typeof a==`string`||Object.keys(a??{}).length>0)||!i?delete e.environments[n.name]:await e.build(n)}},sharedConfigBuild:!0,sharedPlugins:!0},plugins:[{api:{wrenConfig:t},name:`${d}-config`},We(e,t),we(t.router),je(t)],resolve:{noExternal:[/^@wren-js\//],tsconfigPaths:!0}});return(await Promise.all([t.adapter,...t.integrations??[]].map(async n=>n?.viteConfig(t,e)))).reduce((e,t)=>t?D(e,t):e,n)},$=async e=>{let t=E.cwd(),n=v.map(e=>O(T(t,`wren.config.${e}`))),r=n.find(e=>ee(e)),i=r?await le(e,r):null,a=/* @__PURE__ */ new Set([...n,...(i?.dependencies??[]).map(e=>O(T(e)))]),o=i?D(y,i.config):y,s=D(await Ge(e,o),o.vite??{});return{...s,configFile:!1,mode:e.mode,plugins:[...s.plugins??[],{apply:`serve`,configResolved(e){e.configFileDependencies.push(...a)},configureServer(t){let n=t.restart.bind(t),r;t.restart=i=>(r??=(async()=>{let r=await $(e),{inlineConfig:a}=t.config;for(let e of Object.keys(a))Reflect.deleteProperty(a,e);Object.assign(a,r),await n(i)})().finally(()=>{r=void 0}),r)},name:`${d}-config-reload`}]}},Ke=async e=>{let n=await $(e);if(e.command===`build`)return(await ae(n)).buildApp();let r=await oe(n);return await r.listen(),console.info(`${d} v${t}`),r.printUrls(),r.bindCLIShortcuts({print:!0}),r},{positionals:qe,values:Je}=re({allowPositionals:!0,args:E.argv.slice(2),options:{help:{short:`h`,type:`boolean`},version:{short:`v`,type:`boolean`}}});if(Je.version)console.info(`${d} v${t}`);else if(Je.help)console.info(`Usage: wren [dev|build] [-h|--help] [-v|--version]`);else{let e=qe[0]===`build`?`build`:`serve`;Ke({command:e,mode:e===`build`?`production`:E.env.NODE_ENV??`development`}).catch(e=>{console.error(e),E.exit(1)})}export{};
@@ -1 +1 @@
1
- import{a as e,i as t,o as n,r,t as i}from"../../constants-BzbcwnVj.mjs";import{kind as a,render as o}from"virtual:wrenjs-link-client";const s=`__wrenNavigation`,c=e=>{if(typeof e!=`object`||!e||!(s in e))return;let t=e[s];if(typeof t==`object`&&t&&`x`in t&&`y`in t)return typeof t.x==`number`&&typeof t.y==`number`?{x:t.x,y:t.y}:void 0},l=e=>{let t=e.getAttribute(`href`),n=e.getAttribute(`target`);if(!t||e.hasAttribute(`download`)||n&&n!==`_self`||!URL.canParse(t,document.baseURI))return;let r=new URL(t,document.baseURI);if(r.origin===location.origin&&(r.pathname!==location.pathname||r.search!==location.search))return r},u=(e,t)=>{let n=document.createElement(`a`);for(let t of[`href`,`target`,`download`,`rel`]){let r=e.getAttribute(t);r!==null&&n.setAttribute(t,r)}(t.button===1||t.metaKey||t.ctrlKey||t.shiftKey)&&(n.target=`_blank`),document.body.append(n),n.click(),n.remove()},d=e=>{try{return decodeURIComponent(e.slice(1))}catch{return e.slice(1)}},f=(e,t)=>{if(t){scrollTo(t.x,t.y);return}let n=e.hash?document.getElementById(d(e.hash)):null;n?n.scrollIntoView():scrollTo(0,0);let r=n??document.querySelector(`main`)??document.body;r.hasAttribute(`tabindex`)||(r.tabIndex=-1),r.focus({preventScroll:!0})},p=e=>{e.key!==`Enter`||e.defaultPrevented||e.target instanceof HTMLElement&&e.target.matches(`wren-link[href]`)&&e.target.click()},m=e=>{let t=t=>{if(t.defaultPrevented||t.button>1||!(t.target instanceof Element))return;let n=t.target.closest(`wren-link[href]`);if(!n||t.target.closest(`a, button, input, select, textarea`))return;t.preventDefault();let r=l(n),i=t.button===0&&!t.metaKey&&!t.ctrlKey&&!t.altKey&&!t.shiftKey;e&&r&&i?e(r):u(n,t)};window.addEventListener(`click`,t),window.addEventListener(`auxclick`,t),window.addEventListener(`keydown`,p)},h=()=>{let e=history.state,t=typeof e==`object`&&e?e:{};history.replaceState({...t,[s]:{x:scrollX,y:scrollY}},``)},g=e=>{let t=new URL(location.href),n,r,i=!1,a=async(r,i)=>{n?.abort(),n=new AbortController;let{signal:a}=n;try{if(await e(r,a),a.aborted)return;i||history.pushState({[s]:{x:0,y:0}},``,r),t=r,f(r,i)}catch(e){if(a.aborted)return;console.error(`[wrenjs] Client navigation failed; using browser navigation.`,e),i?location.reload():location.assign(r.href)}};m(e=>{i=!0,history.scrollRestoration=`manual`,h(),a(e)}),window.addEventListener(`popstate`,e=>{if(!i)return;let r=new URL(location.href),o=c(e.state);r.pathname===t.pathname&&r.search===t.search?(n?.abort(),f(r,o)):o?a(r,o):location.reload()}),window.addEventListener(`scroll`,()=>{r??=requestAnimationFrame(()=>{r=void 0,i&&h()})},{passive:!0})};function _(n,a){let o=new URL(n);o.pathname+=e,o.hash=``;let s=new Headers({[i]:r});return a&&s.set(t,a.id),new Request(o,{body:a?.body,headers:s,method:a?`POST`:`GET`})}const v=`data-prefetch`,y={"":!0,false:!1,hover:`hover`,"on-load":`on-load`,true:!0,visible:`visible`},b=/* @__PURE__ */ new Map,x=/* @__PURE__ */ new Set,S=()=>{let{connection:e,onLine:t}=navigator;return t&&!e?.saveData&&!e?.effectiveType?.includes(`2g`)},C=e=>{let t=new URL(e);return t.hash=``,t.href},w=e=>{b.get(e)?.controller.abort(),b.delete(e)},T=()=>{for(let e of b.keys())w(e)},E=async(e,t)=>{let n=await fetch(_(e),{signal:t});if(n.redirected||!n.ok&&n.status!==404||!n.headers.get(`content-type`)?.startsWith(`text/x-component`))throw await n.body?.cancel(),Error(`Invalid Flight response for ${e} (${n.status}).`);return n},D=e=>{let t=Date.now();for(let[e,n]of b)t-n.created>=3e4&&w(e);let n=b.get(e);if(n)return n;b.size>=20&&w(b.keys().next().value);let r=new AbortController,i={controller:r,created:t,response:E(e,r.signal)};return b.set(e,i),i.response.catch(()=>{b.get(e)===i&&b.delete(e)}),i},O=async e=>{let t=S()?l(e):void 0;if(!t)return;let n=C(t);if(a===`flight`)await D(n).response;else if(a===`document`&&!x.has(n)){x.add(n);let e=document.createElement(`link`);e.rel=`prefetch`,e.as=`document`,e.href=n,document.head.append(e)}};var k=class extends HTMLElement{static observedAttributes=[v,`href`];get prefetch(){let e=this.getAttribute(v);return e===null?`hover`:Object.hasOwn(y,e)?y[e]:(console.warn(`[wrenjs] Invalid Link prefetch mode:`,e),!1)}#e;#t;#n;attributeChangedCallback(){this.isConnected&&this.#s()}connectedCallback(){this.#e=new AbortController;let{signal:e}=this.#e;this.addEventListener(`mouseenter`,this.#i,{signal:e}),this.addEventListener(`focus`,this.#i,{signal:e}),this.addEventListener(`mouseleave`,this.#a,{signal:e}),this.addEventListener(`blur`,this.#a,{signal:e}),this.#s()}disconnectedCallback(){this.#r(),this.#e?.abort()}#r(){this.#a(),this.#n?.disconnect(),this.#n=void 0}#i=()=>{this.#a();let{prefetch:e}=this;(e===!0||e===`hover`)&&(this.#t=setTimeout(()=>this.#o(),80))};#a=()=>{clearTimeout(this.#t),this.#t=void 0};#o(){O(this).catch(e=>{e instanceof DOMException&&e.name===`AbortError`||console.error(`[wrenjs] Unable to prefetch Link.`,e)})}#s(){if(this.#r(),!this.hasAttribute(`href`))return;this.hasAttribute(`role`)||this.setAttribute(`role`,`link`),this.hasAttribute(`tabindex`)||(this.tabIndex=0);let{prefetch:e}=this;e===`on-load`?this.#o():e===`visible`&&(this.#n=new IntersectionObserver(e=>{e.some(e=>e.isIntersecting)&&(this.#n?.disconnect(),this.#o())}),this.#n.observe(this))}};customElements.get(`wren-link`)||(document.head.insertAdjacentHTML(`beforeend`,`<style>:where(wren-link[href]){color:inherit;cursor:pointer}</style>`),customElements.define(`wren-link`,k),window.addEventListener(n,T),a===`flight`?g(async(e,t)=>{let n=C(e),r=D(n);b.delete(n),t.addEventListener(`abort`,()=>r.controller.abort(),{once:!0});let i=await r.response;t.throwIfAborted(),await o(i,t)}):m());export{};
1
+ import{a as e,i as t,o as n,r,t as i}from"../../constants-BzbcwnVj.mjs";import{n as a}from"../../utils-DhsYUjpC.mjs";import{kind as o,render as s}from"virtual:wrenjs-link-client";const c=`__wrenNavigation`,l=e=>{let t=a(e)?e[c]:void 0;return a(t)&&typeof t.x==`number`&&typeof t.y==`number`?{x:t.x,y:t.y}:void 0},u=e=>{let t=e.getAttribute(`href`),n=e.getAttribute(`target`);if(!t||e.hasAttribute(`download`)||n&&n!==`_self`||!URL.canParse(t,document.baseURI))return;let r=new URL(t,document.baseURI);if(r.origin===location.origin&&(r.pathname!==location.pathname||r.search!==location.search))return r},d=(e,t)=>{let n=document.createElement(`a`);for(let t of[`href`,`target`,`download`,`rel`]){let r=e.getAttribute(t);r!==null&&n.setAttribute(t,r)}(t.button===1||t.metaKey||t.ctrlKey||t.shiftKey)&&(n.target=`_blank`),document.body.append(n),n.click(),n.remove()},f=e=>{try{return decodeURIComponent(e.slice(1))}catch{return e.slice(1)}},p=(e,t)=>{if(t){scrollTo(t.x,t.y);return}let n=e.hash?document.getElementById(f(e.hash)):null;n?n.scrollIntoView():scrollTo(0,0);let r=n??document.querySelector(`main`)??document.body;r.hasAttribute(`tabindex`)||(r.tabIndex=-1),r.focus({preventScroll:!0})},m=e=>{e.key!==`Enter`||e.defaultPrevented||e.target instanceof HTMLElement&&e.target.matches(`wren-link[href]`)&&e.target.click()},h=e=>{let t=t=>{if(t.defaultPrevented||t.button>1||!(t.target instanceof Element))return;let n=t.target.closest(`wren-link[href]`);if(!n||t.target.closest(`a, button, input, select, textarea`))return;t.preventDefault();let r=u(n),i=t.button===0&&!t.metaKey&&!t.ctrlKey&&!t.altKey&&!t.shiftKey;e&&r&&i?e(r):d(n,t)};window.addEventListener(`click`,t),window.addEventListener(`auxclick`,t),window.addEventListener(`keydown`,m)},g=()=>{let e=history.state,t=a(e)?e:{};history.replaceState({...t,[c]:{x:scrollX,y:scrollY}},``)},_=e=>{let t=new URL(location.href),n,r,i=!1,a=async(r,i)=>{n?.abort(),n=new AbortController;let{signal:a}=n;try{if(await e(r,a),a.aborted)return;i||history.pushState({[c]:{x:0,y:0}},``,r),t=r,p(r,i)}catch(e){if(a.aborted)return;console.error(`[wrenjs] Client navigation failed; using browser navigation.`,e),i?location.reload():location.assign(r.href)}};h(e=>{i=!0,history.scrollRestoration=`manual`,g(),a(e)}),window.addEventListener(`popstate`,e=>{if(!i)return;let r=new URL(location.href),o=l(e.state);r.pathname===t.pathname&&r.search===t.search?(n?.abort(),p(r,o)):o?a(r,o):location.reload()}),window.addEventListener(`scroll`,()=>{r??=requestAnimationFrame(()=>{r=void 0,i&&g()})},{passive:!0})};function v(n,a){let o=new URL(n);o.pathname+=e,o.hash=``;let s=new Headers({[i]:r});return a&&s.set(t,a.id),new Request(o,{body:a?.body,headers:s,method:a?`POST`:`GET`})}const y=`data-prefetch`,b={"":!0,false:!1,hover:`hover`,"on-load":`on-load`,true:!0,visible:`visible`},x=/* @__PURE__ */ new Map,S=/* @__PURE__ */ new Set,C=()=>{let{connection:e,onLine:t}=navigator;return t&&!e?.saveData&&!e?.effectiveType?.includes(`2g`)},w=e=>{let t=new URL(e);return t.hash=``,t.href},T=e=>{x.get(e)?.controller.abort(),x.delete(e)},E=()=>{for(let e of x.keys())T(e)},D=async(e,t)=>{let n=await fetch(v(e),{signal:t});if(n.redirected||!n.ok&&n.status!==404||!n.headers.get(`content-type`)?.startsWith(`text/x-component`))throw await n.body?.cancel(),Error(`Invalid Flight response for ${e} (${n.status}).`);return n},O=e=>{let t=Date.now();for(let[e,n]of x)t-n.created>=3e4&&T(e);let n=x.get(e);if(n)return n;x.size>=20&&T(x.keys().next().value);let r=new AbortController,i={controller:r,created:t,response:D(e,r.signal)};return x.set(e,i),i.response.catch(()=>{x.get(e)===i&&x.delete(e)}),i},k=async e=>{let t=C()?u(e):void 0;if(!t)return;let n=w(t);if(o===`flight`)await O(n).response;else if(o===`document`&&!S.has(n)){S.add(n);let e=document.createElement(`link`);e.rel=`prefetch`,e.as=`document`,e.href=n,document.head.append(e)}};var A=class extends HTMLElement{static observedAttributes=[y,`href`];get prefetch(){let e=this.getAttribute(y);return e===null?`hover`:Object.hasOwn(b,e)?b[e]:(console.warn(`[wrenjs] Invalid Link prefetch mode:`,e),!1)}#e;#t;#n;attributeChangedCallback(){this.isConnected&&this.#s()}connectedCallback(){this.#e=new AbortController;let{signal:e}=this.#e;this.addEventListener(`mouseenter`,this.#i,{signal:e}),this.addEventListener(`focus`,this.#i,{signal:e}),this.addEventListener(`mouseleave`,this.#a,{signal:e}),this.addEventListener(`blur`,this.#a,{signal:e}),this.#s()}disconnectedCallback(){this.#r(),this.#e?.abort()}#r(){this.#a(),this.#n?.disconnect(),this.#n=void 0}#i=()=>{this.#a();let{prefetch:e}=this;(e===!0||e===`hover`)&&(this.#t=setTimeout(()=>this.#o(),80))};#a=()=>{clearTimeout(this.#t),this.#t=void 0};#o(){k(this).catch(e=>{e instanceof DOMException&&e.name===`AbortError`||console.error(`[wrenjs] Unable to prefetch Link.`,e)})}#s(){if(this.#r(),!this.hasAttribute(`href`))return;this.hasAttribute(`role`)||this.setAttribute(`role`,`link`),this.hasAttribute(`tabindex`)||(this.tabIndex=0);let{prefetch:e}=this;e===`on-load`?this.#o():e===`visible`&&(this.#n=new IntersectionObserver(e=>{e.some(e=>e.isIntersecting)&&(this.#n?.disconnect(),this.#o())}),this.#n.observe(this))}};customElements.get(`wren-link`)||(document.head.insertAdjacentHTML(`beforeend`,`<style>:where(wren-link[href]){color:inherit;cursor:pointer}</style>`),customElements.define(`wren-link`,A),window.addEventListener(n,E),o===`flight`?_(async(e,t)=>{let n=w(e),r=O(n);x.delete(n),t.addEventListener(`abort`,()=>r.controller.abort(),{once:!0});let i=await r.response;t.throwIfAborted(),await s(i,t)}):h());export{};
@@ -1 +1 @@
1
- import"./constants-BzbcwnVj.mjs";var e=`0.3.0`;const t=`wrenjs`,n=e,r=`ROOT`,i=`PAGE`,a=`API`,o=`NOT_FOUND`,s=`LAYOUT`,c=`PROXY`,l=`___root`,u=`__layout`,d=`__not-found`,f=`__proxy`,p=`GET`,m=`DELETE`,h=`HEAD`,g=`OPTIONS`,_=`PATCH`,v=`POST`,y=`PUT`,b=[`GET`,m,h,g,_,v,`PUT`];export{c as _,g as a,n as b,y as c,f as d,l as f,i as g,o as h,h as i,u as l,s as m,m as n,_ as o,a as p,p as r,v as s,b as t,d as u,r as v,t as y};
1
+ import"./constants-BzbcwnVj.mjs";var e=`0.3.1`;const t=`wrenjs`,n=e,r=`ROOT`,i=`PAGE`,a=`API`,o=`NOT_FOUND`,s=`LAYOUT`,c=`PROXY`,l=`___root`,u=`__layout`,d=`__not-found`,f=`__proxy`,p=`GET`,m=`DELETE`,h=`HEAD`,g=`OPTIONS`,_=`PATCH`,v=`POST`,y=`PUT`,b=[`GET`,m,h,g,_,v,`PUT`];export{c as _,g as a,n as b,y as c,f as d,l as f,i as g,o as h,h as i,u as l,s as m,m as n,_ as o,a as p,p as r,v as s,b as t,d as u,r as v,t as y};
@@ -1 +1 @@
1
- import{_ as e,a as t,b as n,c as r,d as i,f as a,g as o,h as s,i as c,l,m as u,n as d,o as f,p,r as m,s as h,t as g,u as _,v,y}from"./constants-DM1Ep_tv.mjs";import{u as b}from"./constants-BzbcwnVj.mjs";export{g as ENTRY_API_EXPORTS,d as ENTRY_FILEROUTE_API_EXPORT_DELETE,m as ENTRY_FILEROUTE_API_EXPORT_GET,c as ENTRY_FILEROUTE_API_EXPORT_HEAD,t as ENTRY_FILEROUTE_API_EXPORT_OPTIONS,f as ENTRY_FILEROUTE_API_EXPORT_PATCH,h as ENTRY_FILEROUTE_API_EXPORT_POST,r as ENTRY_FILEROUTE_API_EXPORT_PUT,l as ENTRY_FILEROUTE_LAYOUT,_ as ENTRY_FILEROUTE_NOT_FOUND,i as ENTRY_FILEROUTE_PROXY,a as ENTRY_FILEROUTE_ROOT,p as ENTRY_KIND_API,u as ENTRY_KIND_LAYOUT,s as ENTRY_KIND_NOT_FOUND,o as ENTRY_KIND_PAGE,e as ENTRY_KIND_PROXY,v as ENTRY_KIND_ROOT,b as ROUTE_MODULE_RE,y as WREN_NAME,n as WREN_VERSION};
1
+ import{_ as e,a as t,b as n,c as r,d as i,f as a,g as o,h as s,i as c,l,m as u,n as d,o as f,p,r as m,s as h,t as g,u as _,v,y}from"./constants-C06o90Ha.mjs";import{u as b}from"./constants-BzbcwnVj.mjs";export{g as ENTRY_API_EXPORTS,d as ENTRY_FILEROUTE_API_EXPORT_DELETE,m as ENTRY_FILEROUTE_API_EXPORT_GET,c as ENTRY_FILEROUTE_API_EXPORT_HEAD,t as ENTRY_FILEROUTE_API_EXPORT_OPTIONS,f as ENTRY_FILEROUTE_API_EXPORT_PATCH,h as ENTRY_FILEROUTE_API_EXPORT_POST,r as ENTRY_FILEROUTE_API_EXPORT_PUT,l as ENTRY_FILEROUTE_LAYOUT,_ as ENTRY_FILEROUTE_NOT_FOUND,i as ENTRY_FILEROUTE_PROXY,a as ENTRY_FILEROUTE_ROOT,p as ENTRY_KIND_API,u as ENTRY_KIND_LAYOUT,s as ENTRY_KIND_NOT_FOUND,o as ENTRY_KIND_PAGE,e as ENTRY_KIND_PROXY,v as ENTRY_KIND_ROOT,b as ROUTE_MODULE_RE,y as WREN_NAME,n as WREN_VERSION};
@@ -1 +1 @@
1
- import"../constants-DM1Ep_tv.mjs";import{t as e}from"../utils-0wezGh38.mjs";function*t(e){e.e&&(yield e.e),e.w&&(yield e.w);for(let n of Object.values(e.s))yield*t(n);e.p&&(yield*t(e.p));for(let n of e.m??[])yield*t(n.node)}const n=async(e,t,n)=>{if(e.kind!==`PAGE`)return[];let r=await Promise.all([e.module(),...e.layouts?.map(e=>e())??[]]);if(!n&&!r.some(e=>e.config?.prerender===!0))return[];if(!e.params?.length){if(!t)throw Error(`A static prerender route must have a pathname.`);return[t]}let[i]=r;if(!i.getStaticPaths)throw Error(`Prerendered route ${t} must export getStaticPaths().`);return i.getStaticPaths()},r=async(r,i=!1)=>{let{dynamicRoutes:a,staticRoutes:o={}}=r,s=await Promise.all([...Object.entries(o).map(([e,t])=>n(t,e,i)),...Array.from(t(a),e=>n(e,e.pattern,i))]);return[...new Set(s.flat().map(t=>e(t)))]};export{r as getPrerenderPaths};
1
+ import"../constants-C06o90Ha.mjs";import{t as e}from"../utils-DhsYUjpC.mjs";function*t(e){e.e&&(yield e.e),e.w&&(yield e.w);for(let n of Object.values(e.s))yield*t(n);e.p&&(yield*t(e.p));for(let n of e.m??[])yield*t(n.node)}const n=async(e,t,n)=>{if(e.kind!==`PAGE`)return[];let r=await Promise.all([e.module(),...e.layouts?.map(e=>e())??[]]);if(!n&&!r.some(e=>e.config?.prerender===!0))return[];if(!e.params?.length){if(!t)throw Error(`A static prerender route must have a pathname.`);return[t]}let[i]=r;if(!i.getStaticPaths)throw Error(`Prerendered route ${t} must export getStaticPaths().`);return i.getStaticPaths()},r=async(r,i=!1)=>{let{dynamicRoutes:a,staticRoutes:o={}}=r,s=await Promise.all([...Object.entries(o).map(([e,t])=>n(t,e,i)),...Array.from(t(a),e=>n(e,e.pattern,i))]);return[...new Set(s.flat().map(t=>e(t)))]};export{r as getPrerenderPaths};
@@ -1 +1 @@
1
- import{t as e}from"../utils-0wezGh38.mjs";import{dynamicNotFounds as t,dynamicRoutes as n,staticNotFounds as r,staticRoutes as i}from"virtual:wrenjs-routes";const a=(e,t,n)=>{let r=e.length-1;if(!t.startsWith(e[0])||!t.endsWith(e[r]))return!1;let i=e[0].length;for(let a=1;a<r;a++){let r=t.indexOf(e[a],i+1);if(r<0)return!1;n?.push(t.slice(i,r)),i=r+e[a].length}let a=t.length-e[r].length;return a<=i?!1:(n?.push(t.slice(i,a)),!0)},o=(e,t,n,r,i)=>{let o=i?.length??0;for(let{lits:c,node:l}of e){let e=a(c,t,i)?s(l,n,r,i):void 0;if(e!==void 0)return e;i&&(i.length=o)}},s=(e,t,n,r)=>{if(n>=t.length)return e.e;let i=t.indexOf(`/`,n),a=i<0?t.length:i,c=t.slice(n,a),l=a+1,u=e.s,d=Object.hasOwn(u,c)?s(u[c],t,l,r):void 0;if(d!==void 0)return d;let f=e.m&&o(e.m,c,t,l,r);if(f!==void 0)return f;if(e.p&&c){let n=r?.length??0;r?.push(c);let i=s(e.p,t,l,r);if(i!==void 0)return i;r&&(r.length=n)}return e.w!==void 0&&r?.push(t.slice(n)),e.w},c=(e,t,n)=>s(e,t,1,n);function l(a){let o=e(a);if(!o)return;let s=[],l=i?.[o]??c(n,o,s)??r?.[o]??c(t,o,s);if(!l)return;let u=Object.fromEntries(l.params?.map((e,t)=>[e,s[t]])??[]),d=({layouts:e,module:t,proxies:n})=>({kind:l.kind,layouts:e,module:t,params:u,proxies:n}),f=l.stack();return f instanceof Promise?f.then(d):d(f)}export{l as matchRouteToStack};
1
+ import{t as e}from"../utils-DhsYUjpC.mjs";import{dynamicNotFounds as t,dynamicRoutes as n,staticNotFounds as r,staticRoutes as i}from"virtual:wrenjs-routes";const a=(e,t,n)=>{let r=e.length-1;if(!t.startsWith(e[0])||!t.endsWith(e[r]))return!1;let i=e[0].length;for(let a=1;a<r;a++){let r=t.indexOf(e[a],i+1);if(r<0)return!1;n?.push(t.slice(i,r)),i=r+e[a].length}let a=t.length-e[r].length;return a<=i?!1:(n?.push(t.slice(i,a)),!0)},o=(e,t,n,r,i)=>{let o=i?.length??0;for(let{lits:c,node:l}of e){let e=a(c,t,i)?s(l,n,r,i):void 0;if(e!==void 0)return e;i&&(i.length=o)}},s=(e,t,n,r)=>{if(n>=t.length)return e.e;let i=t.indexOf(`/`,n),a=i<0?t.length:i,c=t.slice(n,a),l=a+1,u=e.s,d=Object.hasOwn(u,c)?s(u[c],t,l,r):void 0;if(d!==void 0)return d;let f=e.m&&o(e.m,c,t,l,r);if(f!==void 0)return f;if(e.p&&c){let n=r?.length??0;r?.push(c);let i=s(e.p,t,l,r);if(i!==void 0)return i;r&&(r.length=n)}return e.w!==void 0&&r?.push(t.slice(n)),e.w},c=(e,t,n)=>s(e,t,1,n);function l(a){let o=e(a);if(!o)return;let s=[],l=i?.[o]??c(n,o,s)??r?.[o]??c(t,o,s);if(!l)return;let u=Object.fromEntries(l.params?.map((e,t)=>[e,s[t]])??[]),d=({layouts:e,module:t,proxies:n})=>({kind:l.kind,layouts:e,module:t,params:u,proxies:n}),f=l.stack();return f instanceof Promise?f.then(d):d(f)}export{l as matchRouteToStack};
@@ -0,0 +1 @@
1
+ const e=e=>typeof e==`object`&&!!e,t=e=>{if(!e)return;let t=0,n=e.indexOf(`?`);n===-1&&(n=e.length);let r=e.indexOf(`#`);if(r!==-1&&r<n&&(n=r),e[0]!==`/`){let r=e.indexOf(`://`);if(r!==-1&&r<n){let i=e.indexOf(`/`,r+3);t=i!==-1&&i<n?i:n}}for(;n>t+1&&e[n-1]===`/`;)n--;let i=e.slice(t,n);return i[0]===`/`?i:`/${i}`};export{e as n,t};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wren-js/core",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "description": "Framework agnostic utilities for the wrenjs meta-framework",
5
5
  "keywords": [
6
6
  "@wren-js/core",
@@ -1 +0,0 @@
1
- const e=e=>{if(!e)return;let t=0,n=e.indexOf(`?`);n===-1&&(n=e.length);let r=e.indexOf(`#`);if(r!==-1&&r<n&&(n=r),e[0]!==`/`){let r=e.indexOf(`://`);if(r!==-1&&r<n){let i=e.indexOf(`/`,r+3);t=i!==-1&&i<n?i:n}}for(;n>t+1&&e[n-1]===`/`;)n--;let i=e.slice(t,n);return i[0]===`/`?i:`/${i}`};export{e as t};