@wren-js/core 0.1.5 → 0.2.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/dist/cli.mjs +9 -9
- package/dist/components/Link/wren-link.mjs +1 -1
- package/dist/config.d.mts +1 -1
- package/dist/constants-BzbcwnVj.mjs +1 -0
- package/dist/constants-D0iDClSp.mjs +1 -0
- package/dist/constants-DY_YNC7k.d.mts +26 -0
- package/dist/constants.d.mts +2 -2
- package/dist/constants.mjs +1 -1
- package/dist/runtime/prerender.d.mts +1 -1
- package/dist/runtime/prerender.mjs +1 -1
- package/dist/runtime/router.d.mts +1 -1
- package/dist/runtime/router.mjs +1 -1
- package/dist/{constants-CstgyYjd.d.mts → types-NFDT2hyY.d.mts} +10 -34
- package/dist/types.d.ts +4 -13
- package/dist/virtual-wrenjs-page-scripts.d.ts +2 -2
- package/package.json +1 -1
- package/dist/constants-B7Wo9Ox0.mjs +0 -1
- package/dist/constants-D5tTpiZL.mjs +0 -1
- package/dist/trie-lookup-BLa5NWBJ.mjs +0 -1
package/dist/cli.mjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import{
|
|
2
|
-
`).length-1,
|
|
3
|
-
`.repeat(i):r}},
|
|
4
|
-
`.repeat(
|
|
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-D0iDClSp.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(
|
|
5
5
|
/* @vite-ignore */
|
|
6
|
-
|
|
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},[])},
|
|
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`
|
|
8
8
|
${t?`function memoize(load) {
|
|
9
9
|
let pending;
|
|
10
10
|
return () => {
|
|
@@ -33,7 +33,7 @@ he(t).href)})),i=e.environments.client;if(!i)throw Error(`Prerendering requires
|
|
|
33
33
|
});
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
${
|
|
36
|
+
${a.join(`
|
|
37
37
|
`)}
|
|
38
38
|
|
|
39
39
|
function deepFreeze(value) {
|
|
@@ -44,7 +44,7 @@ he(t).href)})),i=e.environments.client;if(!i)throw Error(`Prerendering requires
|
|
|
44
44
|
return value;
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
const manifest = deepFreeze(${
|
|
47
|
+
const manifest = deepFreeze(${i});
|
|
48
48
|
export const { dynamicNotFounds, dynamicRoutes, staticNotFounds, staticRoutes } = manifest;
|
|
49
49
|
export default manifest;
|
|
50
|
-
`}
|
|
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{};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e,i as t,o as n,r,t as i}from"../../constants-
|
|
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{};
|
package/dist/config.d.mts
CHANGED
|
@@ -104,4 +104,4 @@ export declare const CONFIG_VALID_EXTENSIONS: readonly ["ts", "mts", "js", "mjs"
|
|
|
104
104
|
export declare function defineConfig(config?: WrenConfig): WrenConfig;
|
|
105
105
|
export declare const DEFAULTS: WrenConfig;
|
|
106
106
|
//#endregion
|
|
107
|
-
export {};
|
|
107
|
+
export type { WrenAdapter, WrenConfig, WrenIntegration };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=`Accept`,t=`text/x-component;charset=utf-8`,n=`_.flt`,r=`x-server-action`,i=`wrenjs:invalidate-prefetch`,a=`virtual:wrenjs-routes`,o=`virtual:wrenjs-script-url:`,s=`virtual:wrenjs-hoist:`,c=`__wrenScripts`,l=/\.([cm]?[jt]sx?|astro|svelte|tsrx)$/,u=/\.[cm]?[jt]sx?$/;export{n as a,o as c,u as d,r as i,a as l,c as n,i as o,t as r,s,e as t,l as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./constants-BzbcwnVj.mjs";var e=`0.2.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};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
//#region ../_shared/constants.d.ts
|
|
2
|
+
declare const ROUTE_MODULE_RE: RegExp;
|
|
3
|
+
//#endregion
|
|
4
|
+
//#region src/constants.d.ts
|
|
5
|
+
declare const WREN_NAME = "wrenjs";
|
|
6
|
+
declare const WREN_VERSION: string;
|
|
7
|
+
declare const ENTRY_KIND_ROOT = "ROOT";
|
|
8
|
+
declare const ENTRY_KIND_PAGE = "PAGE";
|
|
9
|
+
declare const ENTRY_KIND_API = "API";
|
|
10
|
+
declare const ENTRY_KIND_NOT_FOUND = "NOT_FOUND";
|
|
11
|
+
declare const ENTRY_KIND_LAYOUT = "LAYOUT";
|
|
12
|
+
declare const ENTRY_KIND_PROXY = "PROXY";
|
|
13
|
+
declare const ENTRY_FILEROUTE_ROOT = "___root";
|
|
14
|
+
declare const ENTRY_FILEROUTE_LAYOUT = "__layout";
|
|
15
|
+
declare const ENTRY_FILEROUTE_NOT_FOUND = "__not-found";
|
|
16
|
+
declare const ENTRY_FILEROUTE_PROXY = "__proxy";
|
|
17
|
+
declare const ENTRY_FILEROUTE_API_EXPORT_GET = "GET";
|
|
18
|
+
declare const ENTRY_FILEROUTE_API_EXPORT_DELETE = "DELETE";
|
|
19
|
+
declare const ENTRY_FILEROUTE_API_EXPORT_HEAD = "HEAD";
|
|
20
|
+
declare const ENTRY_FILEROUTE_API_EXPORT_OPTIONS = "OPTIONS";
|
|
21
|
+
declare const ENTRY_FILEROUTE_API_EXPORT_PATCH = "PATCH";
|
|
22
|
+
declare const ENTRY_FILEROUTE_API_EXPORT_POST = "POST";
|
|
23
|
+
declare const ENTRY_FILEROUTE_API_EXPORT_PUT = "PUT";
|
|
24
|
+
declare const ENTRY_API_EXPORTS: readonly ["GET", "DELETE", "HEAD", "OPTIONS", "PATCH", "POST", "PUT"];
|
|
25
|
+
//#endregion
|
|
26
|
+
export { ENTRY_KIND_PROXY as _, ENTRY_FILEROUTE_API_EXPORT_OPTIONS as a, WREN_VERSION as b, ENTRY_FILEROUTE_API_EXPORT_PUT as c, ENTRY_FILEROUTE_PROXY as d, ENTRY_FILEROUTE_ROOT as f, ENTRY_KIND_PAGE as g, ENTRY_KIND_NOT_FOUND as h, ENTRY_FILEROUTE_API_EXPORT_HEAD as i, ENTRY_FILEROUTE_LAYOUT as l, ENTRY_KIND_LAYOUT as m, ENTRY_FILEROUTE_API_EXPORT_DELETE as n, ENTRY_FILEROUTE_API_EXPORT_PATCH as o, ENTRY_KIND_API as p, ENTRY_FILEROUTE_API_EXPORT_GET as r, ENTRY_FILEROUTE_API_EXPORT_POST as s, ENTRY_API_EXPORTS as t, ENTRY_FILEROUTE_NOT_FOUND as u, ENTRY_KIND_ROOT as v, ROUTE_MODULE_RE as x, WREN_NAME as y };
|
package/dist/constants.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export { ENTRY_API_EXPORTS, ENTRY_FILEROUTE_API_EXPORT_DELETE, ENTRY_FILEROUTE_API_EXPORT_GET, ENTRY_FILEROUTE_API_EXPORT_HEAD, ENTRY_FILEROUTE_API_EXPORT_OPTIONS, ENTRY_FILEROUTE_API_EXPORT_PATCH, ENTRY_FILEROUTE_API_EXPORT_POST, ENTRY_FILEROUTE_API_EXPORT_PUT, ENTRY_FILEROUTE_LAYOUT, ENTRY_FILEROUTE_NOT_FOUND, ENTRY_FILEROUTE_PROXY, ENTRY_FILEROUTE_ROOT,
|
|
1
|
+
import { _ as ENTRY_KIND_PROXY, a as ENTRY_FILEROUTE_API_EXPORT_OPTIONS, b as WREN_VERSION, c as ENTRY_FILEROUTE_API_EXPORT_PUT, d as ENTRY_FILEROUTE_PROXY, f as ENTRY_FILEROUTE_ROOT, g as ENTRY_KIND_PAGE, h as ENTRY_KIND_NOT_FOUND, i as ENTRY_FILEROUTE_API_EXPORT_HEAD, l as ENTRY_FILEROUTE_LAYOUT, m as ENTRY_KIND_LAYOUT, n as ENTRY_FILEROUTE_API_EXPORT_DELETE, o as ENTRY_FILEROUTE_API_EXPORT_PATCH, p as ENTRY_KIND_API, r as ENTRY_FILEROUTE_API_EXPORT_GET, s as ENTRY_FILEROUTE_API_EXPORT_POST, t as ENTRY_API_EXPORTS, u as ENTRY_FILEROUTE_NOT_FOUND, v as ENTRY_KIND_ROOT, x as ROUTE_MODULE_RE, y as WREN_NAME } from "./constants-DY_YNC7k.mjs";
|
|
2
|
+
export { ENTRY_API_EXPORTS, ENTRY_FILEROUTE_API_EXPORT_DELETE, ENTRY_FILEROUTE_API_EXPORT_GET, ENTRY_FILEROUTE_API_EXPORT_HEAD, ENTRY_FILEROUTE_API_EXPORT_OPTIONS, ENTRY_FILEROUTE_API_EXPORT_PATCH, ENTRY_FILEROUTE_API_EXPORT_POST, ENTRY_FILEROUTE_API_EXPORT_PUT, ENTRY_FILEROUTE_LAYOUT, ENTRY_FILEROUTE_NOT_FOUND, ENTRY_FILEROUTE_PROXY, ENTRY_FILEROUTE_ROOT, ENTRY_KIND_API, ENTRY_KIND_LAYOUT, ENTRY_KIND_NOT_FOUND, ENTRY_KIND_PAGE, ENTRY_KIND_PROXY, ENTRY_KIND_ROOT, ROUTE_MODULE_RE, WREN_NAME, WREN_VERSION };
|
package/dist/constants.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
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-D0iDClSp.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,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { n as RouteEntry, t as RadixTrie } from "../types-NFDT2hyY.mjs";
|
|
2
2
|
//#region src/runtime/prerender/index.d.ts
|
|
3
3
|
export declare const getPrerenderPaths: (manifest: {
|
|
4
4
|
dynamicRoutes: RadixTrie<RouteEntry>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
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-D0iDClSp.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,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { i as RouteStack, r as RouteModule } from "../types-NFDT2hyY.mjs";
|
|
2
2
|
//#region src/runtime/router/index.d.ts
|
|
3
3
|
export declare function matchRouteToStack<T extends RouteStack = RouteStack>(path?: string): Promise<T | undefined> | T | undefined;
|
|
4
4
|
//#endregion
|
package/dist/runtime/router.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"../utils-0wezGh38.mjs";import{
|
|
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,4 +1,6 @@
|
|
|
1
1
|
/// <reference types="vite/client" />
|
|
2
|
+
import { _ as ENTRY_KIND_PROXY, g as ENTRY_KIND_PAGE, h as ENTRY_KIND_NOT_FOUND, m as ENTRY_KIND_LAYOUT, p as ENTRY_KIND_API, v as ENTRY_KIND_ROOT } from "./constants-DY_YNC7k.mjs";
|
|
3
|
+
import "virtual:wrenjs-fetch";
|
|
2
4
|
//#region src/virtual-wrenjs-fetch.d.ts
|
|
3
5
|
declare module "virtual:wrenjs-fetch" {
|
|
4
6
|
export type RequestInput = Request | {
|
|
@@ -28,8 +30,11 @@ declare module "virtual:wrenjs-link-script" {
|
|
|
28
30
|
//#endregion
|
|
29
31
|
//#region src/virtual-wrenjs-page-scripts.d.ts
|
|
30
32
|
declare module "virtual:wrenjs-page-scripts" {
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
+
const manifest: {
|
|
34
|
+
routes: Record<string, string[]>;
|
|
35
|
+
scripts: Record<string, string>;
|
|
36
|
+
};
|
|
37
|
+
export default manifest;
|
|
33
38
|
}
|
|
34
39
|
declare module "virtual:wrenjs-hoist:*" {}
|
|
35
40
|
//#endregion
|
|
@@ -46,8 +51,6 @@ declare module "virtual:wrenjs-routes" {
|
|
|
46
51
|
//#region src/types.d.ts
|
|
47
52
|
interface Entry$1 {
|
|
48
53
|
file: string;
|
|
49
|
-
groups?: string[];
|
|
50
|
-
id: number;
|
|
51
54
|
kind: EntryKind;
|
|
52
55
|
layouts?: Entry$1[];
|
|
53
56
|
params?: string[];
|
|
@@ -88,7 +91,9 @@ interface RouteModule<TDefault = unknown, THandler = unknown> {
|
|
|
88
91
|
DELETE?: THandler;
|
|
89
92
|
GET?: THandler;
|
|
90
93
|
getStaticPaths?: () => Promise<string[]> | string[];
|
|
94
|
+
HEAD?: THandler;
|
|
91
95
|
loader?: RouteLoader<TDefault>;
|
|
96
|
+
OPTIONS?: THandler;
|
|
92
97
|
PATCH?: THandler;
|
|
93
98
|
POST?: THandler;
|
|
94
99
|
PUT?: THandler;
|
|
@@ -102,33 +107,4 @@ interface RouteStack<TModule extends RouteModule = RouteModule, TLayout extends
|
|
|
102
107
|
}
|
|
103
108
|
type RouteStackModules = Pick<Required<RouteStack>, "layouts" | "module" | "proxies">;
|
|
104
109
|
//#endregion
|
|
105
|
-
|
|
106
|
-
declare const ROUTE_MODULE_RE: RegExp;
|
|
107
|
-
//#endregion
|
|
108
|
-
//#region src/constants.d.ts
|
|
109
|
-
declare const WREN_NAME = "wrenjs";
|
|
110
|
-
declare const WREN_VERSION: string;
|
|
111
|
-
declare const ENTRY_KIND_ROOT = "ROOT";
|
|
112
|
-
declare const ENTRY_KIND_PAGE = "PAGE";
|
|
113
|
-
declare const ENTRY_KIND_API = "API";
|
|
114
|
-
declare const ENTRY_KIND_NOT_FOUND = "NOT_FOUND";
|
|
115
|
-
declare const ENTRY_KIND_LAYOUT = "LAYOUT";
|
|
116
|
-
declare const ENTRY_KIND_PROXY = "PROXY";
|
|
117
|
-
declare const ENTRY_WRAPPER_TYPES: readonly ["ROOT", "LAYOUT", "PROXY"];
|
|
118
|
-
declare const ENTRY_FILEROUTE_ROOT = "___root";
|
|
119
|
-
declare const ENTRY_FILEROUTE_ROOT_LAYOUT = "___root";
|
|
120
|
-
declare const ENTRY_FILEROUTE_LAYOUT = "__layout";
|
|
121
|
-
declare const ENTRY_FILEROUTE_NOT_FOUND = "__not-found";
|
|
122
|
-
declare const ENTRY_FILEROUTE_PROXY = "__proxy";
|
|
123
|
-
declare const ENTRY_FILEROUTE_API_EXPORT_GET = "GET";
|
|
124
|
-
declare const ENTRY_FILEROUTE_API_EXPORT_DELETE = "DELETE";
|
|
125
|
-
declare const ENTRY_FILEROUTE_API_EXPORT_HEAD = "HEAD";
|
|
126
|
-
declare const ENTRY_FILEROUTE_API_EXPORT_OPTIONS = "OPTIONS";
|
|
127
|
-
declare const ENTRY_FILEROUTE_API_EXPORT_PATCH = "PATCH";
|
|
128
|
-
declare const ENTRY_FILEROUTE_API_EXPORT_POST = "POST";
|
|
129
|
-
declare const ENTRY_FILEROUTE_API_EXPORT_PUT = "PUT";
|
|
130
|
-
declare const ENTRY_API_EXPORTS: readonly ["GET", "DELETE", "HEAD", "OPTIONS", "PATCH", "POST", "PUT"];
|
|
131
|
-
declare const ROUTE_ENTRIES: ReadonlySet<EntryKind>;
|
|
132
|
-
declare const FALLBACK_ENTRIES: ReadonlySet<EntryKind>;
|
|
133
|
-
//#endregion
|
|
134
|
-
export { WREN_NAME as C, RouteEntry as D, RadixTrie$1 as E, RouteModule as O, ROUTE_ENTRIES as S, ROUTE_MODULE_RE as T, ENTRY_KIND_PAGE as _, ENTRY_FILEROUTE_API_EXPORT_OPTIONS as a, ENTRY_WRAPPER_TYPES as b, ENTRY_FILEROUTE_API_EXPORT_PUT as c, ENTRY_FILEROUTE_PROXY as d, ENTRY_FILEROUTE_ROOT as f, ENTRY_KIND_NOT_FOUND as g, ENTRY_KIND_LAYOUT as h, ENTRY_FILEROUTE_API_EXPORT_HEAD as i, RouteStack as k, ENTRY_FILEROUTE_LAYOUT as l, ENTRY_KIND_API as m, ENTRY_FILEROUTE_API_EXPORT_DELETE as n, ENTRY_FILEROUTE_API_EXPORT_PATCH as o, ENTRY_FILEROUTE_ROOT_LAYOUT as p, ENTRY_FILEROUTE_API_EXPORT_GET as r, ENTRY_FILEROUTE_API_EXPORT_POST as s, ENTRY_API_EXPORTS as t, ENTRY_FILEROUTE_NOT_FOUND as u, ENTRY_KIND_PROXY as v, WREN_VERSION as w, FALLBACK_ENTRIES as x, ENTRY_KIND_ROOT as y };
|
|
110
|
+
export { RouteStack as i, RouteEntry as n, RouteModule as r, RadixTrie$1 as t };
|
package/dist/types.d.ts
CHANGED
|
@@ -9,10 +9,6 @@ import "./virtual-wrenjs-routes.d.ts";
|
|
|
9
9
|
export interface Entry {
|
|
10
10
|
file: string;
|
|
11
11
|
|
|
12
|
-
groups?: string[];
|
|
13
|
-
|
|
14
|
-
id: number;
|
|
15
|
-
|
|
16
12
|
kind: EntryKind;
|
|
17
13
|
|
|
18
14
|
layouts?: Entry[];
|
|
@@ -41,13 +37,6 @@ export type EntryKind =
|
|
|
41
37
|
| typeof ENTRY_KIND_PROXY
|
|
42
38
|
| typeof ENTRY_KIND_ROOT;
|
|
43
39
|
|
|
44
|
-
export interface PartitionedRoutes {
|
|
45
|
-
dynamicNotFound?: Entry[];
|
|
46
|
-
dynamicRoutes?: Entry[];
|
|
47
|
-
staticNotFound?: Entry[];
|
|
48
|
-
staticRoutes?: Entry[];
|
|
49
|
-
}
|
|
50
|
-
|
|
51
40
|
export interface PrerenderArtifact {
|
|
52
41
|
pathname: string;
|
|
53
42
|
response: Response;
|
|
@@ -71,8 +60,8 @@ export interface RadixTrie<Route = Entry> {
|
|
|
71
60
|
}
|
|
72
61
|
|
|
73
62
|
export interface RoutableEntry {
|
|
74
|
-
notFounds
|
|
75
|
-
routes
|
|
63
|
+
notFounds: Entry[];
|
|
64
|
+
routes: Entry[];
|
|
76
65
|
}
|
|
77
66
|
|
|
78
67
|
export interface RouteConfig {
|
|
@@ -107,7 +96,9 @@ export interface RouteModule<TDefault = unknown, THandler = unknown> {
|
|
|
107
96
|
GET?: THandler;
|
|
108
97
|
|
|
109
98
|
getStaticPaths?: () => Promise<string[]> | string[];
|
|
99
|
+
HEAD?: THandler;
|
|
110
100
|
loader?: RouteLoader<TDefault>;
|
|
101
|
+
OPTIONS?: THandler;
|
|
111
102
|
PATCH?: THandler;
|
|
112
103
|
POST?: THandler;
|
|
113
104
|
PUT?: THandler;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
declare module "virtual:wrenjs-page-scripts" {
|
|
2
|
-
const
|
|
3
|
-
export default
|
|
2
|
+
const manifest: { routes: Record<string, string[]>; scripts: Record<string, string> };
|
|
3
|
+
export default manifest;
|
|
4
4
|
}
|
|
5
5
|
|
|
6
6
|
declare module "virtual:wrenjs-hoist:*" {}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=`Accept`,t=`text/x-component;charset=utf-8`,n=`_.flt`,r=`x-server-action`,i=`wrenjs:invalidate-prefetch`,a=`virtual:wrenjs-script-url:`,o=`virtual:wrenjs-hoist:`,s=`__wrenScripts`,c=/\.([cm]?[jt]sx?|astro|svelte|tsrx)$/;export{n as a,a as c,r as i,c as l,s as n,i as o,t as r,o as s,e as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./constants-B7Wo9Ox0.mjs";var e=`0.1.5`;const t=`wrenjs`,n=e,r=`ROOT`,i=`PAGE`,a=`API`,o=`NOT_FOUND`,s=`LAYOUT`,c=`PROXY`,l=[r,s,c],u=`___root`,d=`___root`,f=`__layout`,p=`__not-found`,m=`__proxy`,h=`GET`,g=`DELETE`,_=`HEAD`,v=`OPTIONS`,y=`PATCH`,b=`POST`,x=`PUT`,S=[`GET`,g,_,v,y,b,`PUT`],C=/* @__PURE__ */ new Set([`API`,i]),w=/* @__PURE__ */ new Set([o]);export{t as C,C as S,i as _,v as a,l as b,x as c,m as d,u as f,o as g,s as h,_ as i,f as l,a as m,g as n,y as o,d as p,h as r,b as s,S as t,p as u,c as v,n as w,w as x,r as y};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=()=>({s:Object.create(null)}),t=(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)},n=(e,n,i,a,o)=>{let s=o?.length??0;for(let{lits:c,node:l}of e){let e=t(c,n,o)?r(l,i,a,o):void 0;if(e!==void 0)return e;o&&(o.length=s)}},r=(e,t,i,a)=>{if(i>=t.length)return e.e;let o=t.indexOf(`/`,i),s=o<0?t.length:o,c=t.slice(i,s),l=s+1,u=e.s,d=Object.hasOwn(u,c)?r(u[c],t,l,a):void 0;if(d!==void 0)return d;let f=e.m&&n(e.m,c,t,l,a);if(f!==void 0)return f;if(e.p&&c){let n=a?.length??0;a?.push(c);let i=r(e.p,t,l,a);if(i!==void 0)return i;a&&(a.length=n)}return e.w!==void 0&&a?.push(t.slice(i)),e.w},i=(e,t,n)=>r(e,t,1,n);export{i as n,e as t};
|