@wren-js/core 0.11.0 → 0.13.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 +2 -2
- package/dist/config.d.mts +4 -0
- package/dist/{constants-BulKLrGR.mjs → constants-DEZyjgyc.mjs} +1 -1
- 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 +2 -2
- package/dist/runtime/router.mjs +1 -1
- package/dist/{types-Dyl_dOT9.d.mts → types-BMcFdUPW.d.mts} +64 -13
- package/dist/types.d.ts +96 -17
- package/dist/virtual-wrenjs-fetch.d.ts +1 -1
- package/package.json +1 -1
package/dist/cli.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
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-
|
|
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-DEZyjgyc.mjs";import{c as f,d as p,f as m,l as h,n as g,p as _}from"./constants-CB936btA.mjs";import{CONFIG_VALID_EXTENSIONS as v,DEFAULTS as y}from"./config.mjs";import{t as b}from"./utils-li1KYQ1O.mjs";import{existsSync as ee}from"node:fs";import{basename as te,dirname as x,extname as ne,isAbsolute as re,join as ie,relative as S,resolve as C}from"node:path";import w from"node:process";import{parseArgs as ae}from"node:util";import{Visitor as T,createBuilder as oe,createServer as se,defineConfig as ce,isCSSRequest as le,loadConfigFromFile as ue,loadEnv as de,mergeConfig as E,normalizePath as D,parseSync as O,perEnvironmentState as fe,resolveEnvPrefix as pe,transformWithOxc as me}from"vite";import{mkdir as he,readFile as k,readdir as ge,rm as A,writeFile as j}from"node:fs/promises";import{pathToFileURL as _e}from"node:url";const M=e=>w.platform===`win32`?e.toUpperCase():e,ve=()=>{let e=/* @__PURE__ */ new Map;return(t,n)=>{for(let[t,n]of e)w.env[t]===n&&delete w.env[t];e.clear();let r=new Set(Object.keys(w.env).map(M)),i=de(t,n,``);for(let[t,n]of Object.entries(i)){let i=M(t);r.has(i)||(w.env[t]=n,e.set(i,n))}}},ye=(e,t)=>{let n=n=>typeof n==`string`&&!Object.hasOwn(e,n)&&!t.some(e=>n.startsWith(e)),r=e=>n(e)&&Object.hasOwn(globalThis.process.env,e);return new Proxy(e,{get(e,t,n){return r(t)?globalThis.process.env[t]:Reflect.get(e,t,n)},getOwnPropertyDescriptor(e,t){return Reflect.getOwnPropertyDescriptor(r(t)?globalThis.process.env:e,t)},has(e,t){return Reflect.has(e,t)||r(t)},ownKeys(e){return[...Reflect.ownKeys(e),...Object.keys(globalThis.process.env).filter(n)]}})},N=`virtual:${d}-server-env`,P=`\0${N}`,F=`import.meta.env.`,be=()=>{let e=fe(({config:e})=>{let t=Object.fromEntries(Object.entries(e.env).map(([e,t])=>[F+e,JSON.stringify(t)]));for(let[n,r]of Object.entries(e.define??{}))n.startsWith(F)&&(t[n]=typeof r==`string`?r:JSON.stringify(r)??`undefined`);return t[`${F}SSR`]=`true`,t});return{applyToEnvironment:e=>e.config.consumer===`server`,load:{filter:{id:RegExp(`^${P}$`)},handler(){let t=Object.entries(e(this)).map(([e,t])=>`${JSON.stringify(e.slice(16))}: ${t}`),n=pe({envPrefix:this.environment.config.envPrefix});return`export default (${ye.toString()})({${t.join(`,`)}}, ${JSON.stringify(n)});`}},name:`${d}-server-env`,resolveId:{filter:{id:RegExp(`^${N}$`)},handler:()=>P},transform:{filter:{code:/\bmeta\b/,id:/\.[cm]?[jt]sx?(?:$|\?)/},handler(t,n){if(n===P)return null;let r=`__wrenServerEnv`;if(t.includes(r)||t.includes(`\\u`)){let{errors:e,program:i}=O(n.split(`?`)[0],t);if(e.length>0)return this.error(e[0].message);let a=/* @__PURE__ */ new Set;for(new T({Identifier:e=>void a.add(e.name)}).visit(i);a.has(r);)r+=`_`}return me(t,n,{define:{...e(this),"import.meta.env":r},inject:{[r]:[N,`default`]},jsx:`preserve`,tsconfig:!1})}}}},I=e=>{let t=0;for(let n=e.indexOf(`
|
|
2
2
|
`);n!==-1;n=e.indexOf(`
|
|
3
3
|
`,n+1))t++;return t},xe=(e,t,n,r)=>{let i=I(e.slice(t,n))-I(r);return{end:n,start:t,text:i>0?r+`
|
|
4
4
|
`.repeat(i):r}},Se=(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)},L=e=>te(e,ne(e)),Ce=e=>Object.fromEntries(e.toSorted(([e],[t])=>e<t?-1:1)),we=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},Te=/^(?:[a-z][a-z\d+.-]*:|\/\/)/i,R=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},z=({value:e})=>{if(e?.type===`Literal`)return e.value;if(e?.type===`JSXExpressionContainer`)return R(e.expression)},Ee=(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=z(r)),n.kept.push(t))}return n},De=({key:e})=>e.type===`Identifier`?e.name:e.type===`Literal`?e.value:null,Oe=({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||De(e)!==`__html`)continue;let t=R(e.value);return t===void 0?void 0:[t,e.value.start+1]}},ke=(e,t)=>{if(t)return Oe(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=R(r.expression);return i===void 0?void 0:[i,r.expression.start+1]},Ae=({name:e})=>e.type===`JSXIdentifier`&&e.name===`script`,B=(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}=Ee(e,t.openingElement),u=c&&z(c),d=u!==void 0&&!Te.test(u);if(l!==`module`){d&&_.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 p=ke(t,i);if(!p){r.push(`<script type="module"> content must be a static string to be bundled.`);return}let[m,h]=p;m.trim()!==``&&n.push({...f,code:m,codeStart:h,index:o++,kind:`inline`})};return new T({JSXElement(e){c(e),Ae(e.openingElement)&&l(e)},JSXFragment:c}).visit(a),{scripts:n,warnings:r}},V=`virtual:${d}-page-scripts`,H=`__wrenPageScripts`,U=`${V}:route:`,W=`\0${U}`,G=`\0${f}`,K=/\?wren-script=(\d+)\.ts$/,q=`__wren-page-scripts.mjs`,J=`\0${h}`,Y=(e,t)=>{let n=D(S(e,t));return n.startsWith(`../`)||re(n)?`@fs/${D(t).replace(/^\//,``)}`:n},je=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:`${L(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:L(i.id)}},Me=async(e,t,n)=>{let r=await k(t,`utf8`),i=B(r,t).scripts.find(e=>e.kind===`inline`&&e.index===n);return i?.kind===`inline`?{code:`
|
|
@@ -48,4 +48,4 @@ _e(t).href)})),a=n.environments.client;if(!a)throw Error(`Prerendering requires
|
|
|
48
48
|
const manifest = deepFreeze(${i});
|
|
49
49
|
export const { dynamicNotFounds, dynamicRoutes, staticNotFounds, staticRoutes } = manifest;
|
|
50
50
|
export default manifest;
|
|
51
|
-
`},$=`\0${p}`,et=(e,t)=>({configureServer(e){let n=`${D(C(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 Qe(t,this.environment.config.root);return $e(n,e.command===`build`)}},name:`${d}-route-manifest`,resolveId:{filter:{id:RegExp(`^${p}$`)},handler:()=>$}}),tt=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`},et(e,t),Ne(t.router),be(),Be(t)],resolve:{noExternal:[/^@wren-js\//],tsconfigPaths:!0}});return(await Promise.all([t.
|
|
51
|
+
`},$=`\0${p}`,et=(e,t)=>({configureServer(e){let n=`${D(C(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 Qe(t,this.environment.config.root);return $e(n,e.command===`build`)}},name:`${d}-route-manifest`,resolveId:{filter:{id:RegExp(`^${p}$`)},handler:()=>$}}),tt=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`},et(e,t),Ne(t.router),be(),Be(t)],resolve:{noExternal:[/^@wren-js\//],tsconfigPaths:!0}});return(await Promise.all([...t.integrations??[],t.adapter].map(async n=>n?.viteConfig(t,e)))).reduce((e,t)=>t?E(e,t):e,n)},nt=ve(),rt=async e=>{let t=w.cwd();nt(e.mode,t);let n=v.map(e=>D(C(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(C(e)))]),o=i?E(y,i.config):y,s=E(await tt(e,o),o.vite??{});return{...s,clearScreen:!1,configFile:!1,envDir:t,envPrefix:`VITE_`,mode:e.mode,plugins:[...s.plugins??[],{apply:`serve`,configResolved(e){e.configFileDependencies.push(...a)},configureServer(n){let r=new Set([`.env`,`.env.local`,`.env.${e.mode}`,`.env.${e.mode}.local`].map(e=>D(C(t,e)))),i=n.restart.bind(n),a;n.restart=t=>(a??=(async()=>{let r=await rt(e),{inlineConfig:a}=n.config;for(let e of Object.keys(a))Reflect.deleteProperty(a,e);Object.assign(a,r),await i(t)})().finally(()=>{a=void 0}),a),n.watcher.on(`all`,(e,t)=>{let i=D(t),a=n.config.server.hmr===!1&&(e===`add`||e===`change`||e===`unlink`)&&r.has(i);(e===`change`&&/\.config\.[^/]*$/.test(i)||a)&&n.restart().catch(e=>{n.config.logger.error(e instanceof Error?e.stack??e.message:String(e))})})},name:`${d}-config-reload`}]}},it=async e=>{let n=await rt(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:at,values:ot}=ae({allowPositionals:!0,args:w.argv.slice(2),options:{help:{short:`h`,type:`boolean`},version:{short:`v`,type:`boolean`}}});if(ot.version)console.info(`${d} v${t}`);else if(ot.help)console.info(`Usage: wren [dev|build] [-h|--help] [-v|--version]`);else{let e=at[0]===`build`?`build`:`serve`;it({command:e,mode:e===`build`?`production`:w.env.NODE_ENV??`development`}).catch(e=>{console.error(e),w.exit(1)})}export{};
|
package/dist/config.d.mts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var e=`0.
|
|
1
|
+
var e=`0.13.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};
|
package/dist/constants.mjs
CHANGED
|
@@ -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-
|
|
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-DEZyjgyc.mjs";import{f as b}from"./constants-CB936btA.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 { n as RouteEntry, t as RadixTrie } from "../types-
|
|
1
|
+
import { n as RouteEntry, t as RadixTrie } from "../types-BMcFdUPW.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"../constants-
|
|
1
|
+
import"../constants-DEZyjgyc.mjs";import{t as e}from"../utils-li1KYQ1O.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,5 +1,5 @@
|
|
|
1
|
-
import { i as RouteStack, r as RouteModule } from "../types-
|
|
1
|
+
import { a as WrenContext, i as RouteStack, r as RouteModule } from "../types-BMcFdUPW.mjs";
|
|
2
2
|
//#region src/runtime/router/index.d.ts
|
|
3
|
-
export declare function matchRouteToStack<T extends RouteStack = RouteStack>(path?: string): Promise<T | undefined> | T | undefined;
|
|
3
|
+
export declare function matchRouteToStack<T extends RouteStack = RouteStack>(path?: string, context?: WrenContext): Promise<T | undefined> | T | undefined;
|
|
4
4
|
//#endregion
|
|
5
5
|
export type { RouteModule, RouteStack };
|
package/dist/runtime/router.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"../utils-li1KYQ1O.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
|
|
1
|
+
import{t as e}from"../utils-li1KYQ1O.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,o={}){let s=e(a);if(!s)return;let l=[],u=i?.[s]??c(n,s,l)??r?.[s]??c(t,s,l);if(!u)return;let d=Object.fromEntries(u.params?.map((e,t)=>[e,l[t]])??[]),f=({layouts:e,module:t,proxies:n})=>({context:o,kind:u.kind,layouts:e,module:t,params:d,proxies:n}),p=u.stack();return p instanceof Promise?p.then(f):f(p)}export{l as matchRouteToStack};
|
|
@@ -9,7 +9,7 @@ declare module "virtual:wrenjs-fetch" {
|
|
|
9
9
|
toRequest(): Request;
|
|
10
10
|
url: string;
|
|
11
11
|
};
|
|
12
|
-
export const fetch: (request: RequestInput) => Promise<Response>;
|
|
12
|
+
export const fetch: (request: RequestInput, context?: Wren.Context) => Promise<Response>;
|
|
13
13
|
}
|
|
14
14
|
//#endregion
|
|
15
15
|
//#region src/virtual-wrenjs-island-script.d.ts
|
|
@@ -49,6 +49,27 @@ declare module "virtual:wrenjs-routes" {
|
|
|
49
49
|
}
|
|
50
50
|
//#endregion
|
|
51
51
|
//#region src/types.d.ts
|
|
52
|
+
declare global {
|
|
53
|
+
namespace Wren {
|
|
54
|
+
type ApiHandler<TParams extends RouteParams = RouteParams> = RouteApiHandler<TParams>;
|
|
55
|
+
type ApiParams<TParams extends RouteParams = RouteParams> = RouteApiParams<TParams>;
|
|
56
|
+
type Config = RouteConfig;
|
|
57
|
+
interface Context {}
|
|
58
|
+
type GetStaticPaths = () => Promise<string[]> | string[];
|
|
59
|
+
type Head<TParams extends RouteParams = RouteParams, TData = unknown> = RouteHead<IntegrationHead, TParams, TData>;
|
|
60
|
+
type HeadProps<TParams extends RouteParams = RouteParams, TData = unknown> = RouteHeadParams<TParams, TData>;
|
|
61
|
+
interface Integration {}
|
|
62
|
+
type Layout<TData = unknown> = RouteComponent<LayoutProps<TData>, IntegrationNode>;
|
|
63
|
+
type LayoutProps<TData = unknown> = RouteLayoutProps<IntegrationNode, TData>;
|
|
64
|
+
type Loader<TReturn = unknown, TParams extends RouteParams = RouteParams> = RouteLoader<TReturn, TParams>;
|
|
65
|
+
type LoaderProps<TParams extends RouteParams = RouteParams> = RouteLoaderParams<TParams>;
|
|
66
|
+
type Page<TParams extends RouteParams = RouteParams, TData = unknown> = RouteComponent<PageProps<TParams, TData>, IntegrationNode>;
|
|
67
|
+
type PageProps<TParams extends RouteParams = RouteParams, TData = unknown> = RoutePageProps<TParams, TData>;
|
|
68
|
+
type Proxy<TParams extends RouteParams = RouteParams> = RouteProxy<TParams>;
|
|
69
|
+
type ProxyContext<TParams extends RouteParams = RouteParams> = RouteProxyContext<TParams>;
|
|
70
|
+
type ProxyNext = () => Promise<Response>;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
52
73
|
interface Entry$1 {
|
|
53
74
|
file: string;
|
|
54
75
|
kind: EntryKind;
|
|
@@ -69,7 +90,14 @@ interface RadixTrie$1<Route = Entry$1> {
|
|
|
69
90
|
w?: Route;
|
|
70
91
|
}
|
|
71
92
|
type RedirectStatus = 301 | 302 | 303 | 307 | 308;
|
|
93
|
+
type RouteApiHandler<TParams extends RouteParams = RouteParams> = (request: Request, route: RouteApiParams<TParams>) => Promise<Response> | Response;
|
|
94
|
+
interface RouteApiParams<TParams extends RouteParams = RouteParams> {
|
|
95
|
+
context: WrenContext;
|
|
96
|
+
params: TParams;
|
|
97
|
+
}
|
|
98
|
+
type RouteComponent<TProps, TNode> = (props: TProps) => Promise<TNode> | TNode;
|
|
72
99
|
interface RouteConfig {
|
|
100
|
+
headers?: Readonly<Record<string, string>>;
|
|
73
101
|
prerender?: boolean;
|
|
74
102
|
}
|
|
75
103
|
interface RouteEntry {
|
|
@@ -81,13 +109,20 @@ interface RouteEntry {
|
|
|
81
109
|
proxies?: (() => Promise<RouteModule>)[];
|
|
82
110
|
stack: () => Promise<RouteStackModules> | RouteStackModules;
|
|
83
111
|
}
|
|
84
|
-
type RouteHead<TElement = unknown> = ({ data, params, request }: RouteHeadParams) => Promise<TElement> | TElement;
|
|
85
|
-
interface RouteHeadParams extends RouteLoaderParams {
|
|
86
|
-
data?:
|
|
112
|
+
type RouteHead<TElement = unknown, TParams extends RouteParams = RouteParams, TData = unknown> = ({ data, params, request }: RouteHeadParams<TParams, TData>) => Promise<TElement> | TElement;
|
|
113
|
+
interface RouteHeadParams<TParams extends RouteParams = RouteParams, TData = unknown> extends RouteLoaderParams<TParams> {
|
|
114
|
+
data?: Promise<TData>;
|
|
115
|
+
}
|
|
116
|
+
interface RouteLayoutProps<TChildren = unknown, TData = unknown> {
|
|
117
|
+
children?: TChildren;
|
|
118
|
+
context?: WrenContext;
|
|
119
|
+
data?: Promise<TData>;
|
|
120
|
+
request?: Request;
|
|
87
121
|
}
|
|
88
|
-
type RouteLoader<
|
|
89
|
-
interface RouteLoaderParams {
|
|
90
|
-
|
|
122
|
+
type RouteLoader<TReturn = unknown, TParams extends RouteParams = RouteParams> = ({ params, request }: RouteLoaderParams<TParams>) => Promise<TReturn>;
|
|
123
|
+
interface RouteLoaderParams<TParams extends RouteParams = RouteParams> {
|
|
124
|
+
context: WrenContext;
|
|
125
|
+
params?: TParams;
|
|
91
126
|
request: Request;
|
|
92
127
|
}
|
|
93
128
|
interface RouteModule<TDefault = unknown, THandler = unknown, THead = unknown> {
|
|
@@ -95,7 +130,7 @@ interface RouteModule<TDefault = unknown, THandler = unknown, THead = unknown> {
|
|
|
95
130
|
default: TDefault;
|
|
96
131
|
DELETE?: THandler;
|
|
97
132
|
GET?: THandler;
|
|
98
|
-
getStaticPaths?:
|
|
133
|
+
getStaticPaths?: Wren.GetStaticPaths;
|
|
99
134
|
HEAD?: THandler;
|
|
100
135
|
head?: RouteHead<THead>;
|
|
101
136
|
loader?: RouteLoader<TDefault>;
|
|
@@ -104,18 +139,27 @@ interface RouteModule<TDefault = unknown, THandler = unknown, THead = unknown> {
|
|
|
104
139
|
POST?: THandler;
|
|
105
140
|
PUT?: THandler;
|
|
106
141
|
}
|
|
142
|
+
interface RoutePageProps<TParams extends RouteParams = RouteParams, TData = unknown> {
|
|
143
|
+
context?: WrenContext;
|
|
144
|
+
data?: Promise<TData>;
|
|
145
|
+
params?: TParams;
|
|
146
|
+
request?: Request;
|
|
147
|
+
}
|
|
148
|
+
type RouteParams = Record<string, string>;
|
|
107
149
|
/** A `__proxy` default export. Return a `Response` to short-circuit, or nothing to continue. */
|
|
108
|
-
type RouteProxy = (context: RouteProxyContext
|
|
109
|
-
interface RouteProxyContext {
|
|
110
|
-
|
|
150
|
+
type RouteProxy<TParams extends RouteParams = RouteParams> = (context: RouteProxyContext<TParams>, next: RouteProxyNext) => Promise<Response | void> | Response | void;
|
|
151
|
+
interface RouteProxyContext<TParams extends RouteParams = RouteParams> {
|
|
152
|
+
context: WrenContext;
|
|
153
|
+
params: TParams;
|
|
111
154
|
redirect: (location: string | URL, status?: RedirectStatus) => Response;
|
|
112
155
|
request: Request;
|
|
113
156
|
/** The page URL, without the Flight request suffix. */
|
|
114
157
|
url: URL;
|
|
115
158
|
}
|
|
116
159
|
/** Runs the inner proxies and the route handler; may be called once. */
|
|
117
|
-
type RouteProxyNext =
|
|
160
|
+
type RouteProxyNext = Wren.ProxyNext;
|
|
118
161
|
interface RouteStack<TModule extends RouteModule = RouteModule, TLayout extends RouteModule = RouteModule, TProxy extends RouteModule = RouteModule<RouteProxy>> {
|
|
162
|
+
context: WrenContext;
|
|
119
163
|
kind: "API" | "NOT_FOUND" | "PAGE";
|
|
120
164
|
layouts?: TLayout[];
|
|
121
165
|
module: TModule;
|
|
@@ -123,5 +167,12 @@ interface RouteStack<TModule extends RouteModule = RouteModule, TLayout extends
|
|
|
123
167
|
proxies?: TProxy[];
|
|
124
168
|
}
|
|
125
169
|
type RouteStackModules = Pick<Required<RouteStack>, "layouts" | "module" | "proxies">;
|
|
170
|
+
type WrenContext = Wren.Context;
|
|
171
|
+
type IntegrationHead = Wren.Integration extends {
|
|
172
|
+
head: infer THead;
|
|
173
|
+
} ? THead : IntegrationNode;
|
|
174
|
+
type IntegrationNode = Wren.Integration extends {
|
|
175
|
+
node: infer TNode;
|
|
176
|
+
} ? TNode : unknown;
|
|
126
177
|
//#endregion
|
|
127
|
-
export { RouteStack as i, RouteEntry as n, RouteModule as r, RadixTrie$1 as t };
|
|
178
|
+
export { WrenContext as a, RouteStack as i, RouteEntry as n, RouteModule as r, RadixTrie$1 as t };
|
package/dist/types.d.ts
CHANGED
|
@@ -6,6 +6,44 @@ import "./virtual-wrenjs-link-client.d.ts";
|
|
|
6
6
|
import "./virtual-wrenjs-page-scripts.d.ts";
|
|
7
7
|
import "./virtual-wrenjs-routes.d.ts";
|
|
8
8
|
|
|
9
|
+
declare global {
|
|
10
|
+
namespace Wren {
|
|
11
|
+
type ApiHandler<TParams extends RouteParams = RouteParams> = RouteApiHandler<TParams>;
|
|
12
|
+
type ApiParams<TParams extends RouteParams = RouteParams> = RouteApiParams<TParams>;
|
|
13
|
+
type Config = RouteConfig;
|
|
14
|
+
interface Context {}
|
|
15
|
+
type GetStaticPaths = () => Promise<string[]> | string[];
|
|
16
|
+
type Head<TParams extends RouteParams = RouteParams, TData = unknown> = RouteHead<
|
|
17
|
+
IntegrationHead,
|
|
18
|
+
TParams,
|
|
19
|
+
TData
|
|
20
|
+
>;
|
|
21
|
+
type HeadProps<TParams extends RouteParams = RouteParams, TData = unknown> = RouteHeadParams<
|
|
22
|
+
TParams,
|
|
23
|
+
TData
|
|
24
|
+
>;
|
|
25
|
+
interface Integration {}
|
|
26
|
+
type Layout<TData = unknown> = RouteComponent<LayoutProps<TData>, IntegrationNode>;
|
|
27
|
+
type LayoutProps<TData = unknown> = RouteLayoutProps<IntegrationNode, TData>;
|
|
28
|
+
type Loader<TReturn = unknown, TParams extends RouteParams = RouteParams> = RouteLoader<
|
|
29
|
+
TReturn,
|
|
30
|
+
TParams
|
|
31
|
+
>;
|
|
32
|
+
type LoaderProps<TParams extends RouteParams = RouteParams> = RouteLoaderParams<TParams>;
|
|
33
|
+
type Page<TParams extends RouteParams = RouteParams, TData = unknown> = RouteComponent<
|
|
34
|
+
PageProps<TParams, TData>,
|
|
35
|
+
IntegrationNode
|
|
36
|
+
>;
|
|
37
|
+
type PageProps<TParams extends RouteParams = RouteParams, TData = unknown> = RoutePageProps<
|
|
38
|
+
TParams,
|
|
39
|
+
TData
|
|
40
|
+
>;
|
|
41
|
+
type Proxy<TParams extends RouteParams = RouteParams> = RouteProxy<TParams>;
|
|
42
|
+
type ProxyContext<TParams extends RouteParams = RouteParams> = RouteProxyContext<TParams>;
|
|
43
|
+
type ProxyNext = () => Promise<Response>;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
9
47
|
export interface Entry {
|
|
10
48
|
file: string;
|
|
11
49
|
|
|
@@ -66,7 +104,20 @@ export interface RoutableEntry {
|
|
|
66
104
|
routes: Entry[];
|
|
67
105
|
}
|
|
68
106
|
|
|
107
|
+
export type RouteApiHandler<TParams extends RouteParams = RouteParams> = (
|
|
108
|
+
request: Request,
|
|
109
|
+
route: RouteApiParams<TParams>,
|
|
110
|
+
) => Promise<Response> | Response;
|
|
111
|
+
|
|
112
|
+
export interface RouteApiParams<TParams extends RouteParams = RouteParams> {
|
|
113
|
+
context: WrenContext;
|
|
114
|
+
params: TParams;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
export type RouteComponent<TProps, TNode> = (props: TProps) => Promise<TNode> | TNode;
|
|
118
|
+
|
|
69
119
|
export interface RouteConfig {
|
|
120
|
+
headers?: Readonly<Record<string, string>>;
|
|
70
121
|
prerender?: boolean;
|
|
71
122
|
}
|
|
72
123
|
|
|
@@ -81,23 +132,34 @@ export interface RouteEntry {
|
|
|
81
132
|
stack: () => Promise<RouteStackModules> | RouteStackModules;
|
|
82
133
|
}
|
|
83
134
|
|
|
84
|
-
export type RouteHead<
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
}: RouteHeadParams) => Promise<TElement> | TElement;
|
|
135
|
+
export type RouteHead<
|
|
136
|
+
TElement = unknown,
|
|
137
|
+
TParams extends RouteParams = RouteParams,
|
|
138
|
+
TData = unknown,
|
|
139
|
+
> = ({ data, params, request }: RouteHeadParams<TParams, TData>) => Promise<TElement> | TElement;
|
|
140
|
+
|
|
141
|
+
export interface RouteHeadParams<
|
|
142
|
+
TParams extends RouteParams = RouteParams,
|
|
143
|
+
TData = unknown,
|
|
144
|
+
> extends RouteLoaderParams<TParams> {
|
|
145
|
+
data?: Promise<TData>;
|
|
146
|
+
}
|
|
89
147
|
|
|
90
|
-
export interface
|
|
91
|
-
|
|
148
|
+
export interface RouteLayoutProps<TChildren = unknown, TData = unknown> {
|
|
149
|
+
children?: TChildren;
|
|
150
|
+
context?: WrenContext;
|
|
151
|
+
data?: Promise<TData>;
|
|
152
|
+
request?: Request;
|
|
92
153
|
}
|
|
93
154
|
|
|
94
|
-
export type RouteLoader<
|
|
155
|
+
export type RouteLoader<TReturn = unknown, TParams extends RouteParams = RouteParams> = ({
|
|
95
156
|
params,
|
|
96
157
|
request,
|
|
97
|
-
}: RouteLoaderParams) => Promise<
|
|
158
|
+
}: RouteLoaderParams<TParams>) => Promise<TReturn>;
|
|
98
159
|
|
|
99
|
-
export interface RouteLoaderParams {
|
|
100
|
-
|
|
160
|
+
export interface RouteLoaderParams<TParams extends RouteParams = RouteParams> {
|
|
161
|
+
context: WrenContext;
|
|
162
|
+
params?: TParams;
|
|
101
163
|
request: Request;
|
|
102
164
|
}
|
|
103
165
|
|
|
@@ -107,7 +169,7 @@ export interface RouteModule<TDefault = unknown, THandler = unknown, THead = unk
|
|
|
107
169
|
DELETE?: THandler;
|
|
108
170
|
GET?: THandler;
|
|
109
171
|
|
|
110
|
-
getStaticPaths?:
|
|
172
|
+
getStaticPaths?: Wren.GetStaticPaths;
|
|
111
173
|
HEAD?: THandler;
|
|
112
174
|
head?: RouteHead<THead>;
|
|
113
175
|
loader?: RouteLoader<TDefault>;
|
|
@@ -117,14 +179,24 @@ export interface RouteModule<TDefault = unknown, THandler = unknown, THead = unk
|
|
|
117
179
|
PUT?: THandler;
|
|
118
180
|
}
|
|
119
181
|
|
|
182
|
+
export interface RoutePageProps<TParams extends RouteParams = RouteParams, TData = unknown> {
|
|
183
|
+
context?: WrenContext;
|
|
184
|
+
data?: Promise<TData>;
|
|
185
|
+
params?: TParams;
|
|
186
|
+
request?: Request;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
export type RouteParams = Record<string, string>;
|
|
190
|
+
|
|
120
191
|
/** A `__proxy` default export. Return a `Response` to short-circuit, or nothing to continue. */
|
|
121
|
-
export type RouteProxy = (
|
|
122
|
-
context: RouteProxyContext
|
|
192
|
+
export type RouteProxy<TParams extends RouteParams = RouteParams> = (
|
|
193
|
+
context: RouteProxyContext<TParams>,
|
|
123
194
|
next: RouteProxyNext,
|
|
124
195
|
) => Promise<Response | void> | Response | void;
|
|
125
196
|
|
|
126
|
-
export interface RouteProxyContext {
|
|
127
|
-
|
|
197
|
+
export interface RouteProxyContext<TParams extends RouteParams = RouteParams> {
|
|
198
|
+
context: WrenContext;
|
|
199
|
+
params: TParams;
|
|
128
200
|
redirect: (location: string | URL, status?: RedirectStatus) => Response;
|
|
129
201
|
request: Request;
|
|
130
202
|
/** The page URL, without the Flight request suffix. */
|
|
@@ -132,13 +204,14 @@ export interface RouteProxyContext {
|
|
|
132
204
|
}
|
|
133
205
|
|
|
134
206
|
/** Runs the inner proxies and the route handler; may be called once. */
|
|
135
|
-
export type RouteProxyNext =
|
|
207
|
+
export type RouteProxyNext = Wren.ProxyNext;
|
|
136
208
|
|
|
137
209
|
export interface RouteStack<
|
|
138
210
|
TModule extends RouteModule = RouteModule,
|
|
139
211
|
TLayout extends RouteModule = RouteModule,
|
|
140
212
|
TProxy extends RouteModule = RouteModule<RouteProxy>,
|
|
141
213
|
> {
|
|
214
|
+
context: WrenContext;
|
|
142
215
|
kind: "API" | "NOT_FOUND" | "PAGE";
|
|
143
216
|
layouts?: TLayout[];
|
|
144
217
|
module: TModule;
|
|
@@ -148,4 +221,10 @@ export interface RouteStack<
|
|
|
148
221
|
|
|
149
222
|
export type RouteStackModules = Pick<Required<RouteStack>, "layouts" | "module" | "proxies">;
|
|
150
223
|
|
|
224
|
+
export type WrenContext = Wren.Context;
|
|
225
|
+
|
|
226
|
+
type IntegrationHead = Wren.Integration extends { head: infer THead } ? THead : IntegrationNode;
|
|
227
|
+
|
|
228
|
+
type IntegrationNode = Wren.Integration extends { node: infer TNode } ? TNode : unknown;
|
|
229
|
+
|
|
151
230
|
export type { fetch } from "virtual:wrenjs-fetch";
|