@wren-js/core 0.11.0 → 0.12.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-B3ndZB9W.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-B5lgdAKl.d.mts} +12 -2
- package/dist/types.d.ts +14 -0
- 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-B3ndZB9W.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.12.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-B3ndZB9W.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-B5lgdAKl.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-B3ndZB9W.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-B5lgdAKl.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,11 @@ declare module "virtual:wrenjs-routes" {
|
|
|
49
49
|
}
|
|
50
50
|
//#endregion
|
|
51
51
|
//#region src/types.d.ts
|
|
52
|
+
declare global {
|
|
53
|
+
namespace Wren {
|
|
54
|
+
interface Context {}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
52
57
|
interface Entry$1 {
|
|
53
58
|
file: string;
|
|
54
59
|
kind: EntryKind;
|
|
@@ -70,6 +75,7 @@ interface RadixTrie$1<Route = Entry$1> {
|
|
|
70
75
|
}
|
|
71
76
|
type RedirectStatus = 301 | 302 | 303 | 307 | 308;
|
|
72
77
|
interface RouteConfig {
|
|
78
|
+
headers?: Readonly<Record<string, string>>;
|
|
73
79
|
prerender?: boolean;
|
|
74
80
|
}
|
|
75
81
|
interface RouteEntry {
|
|
@@ -87,6 +93,7 @@ interface RouteHeadParams extends RouteLoaderParams {
|
|
|
87
93
|
}
|
|
88
94
|
type RouteLoader<TDefault = unknown> = ({ params, request }: RouteLoaderParams) => Promise<TDefault>;
|
|
89
95
|
interface RouteLoaderParams {
|
|
96
|
+
context: WrenContext;
|
|
90
97
|
params?: Record<string, string>;
|
|
91
98
|
request: Request;
|
|
92
99
|
}
|
|
@@ -107,6 +114,7 @@ interface RouteModule<TDefault = unknown, THandler = unknown, THead = unknown> {
|
|
|
107
114
|
/** A `__proxy` default export. Return a `Response` to short-circuit, or nothing to continue. */
|
|
108
115
|
type RouteProxy = (context: RouteProxyContext, next: RouteProxyNext) => Promise<Response | void> | Response | void;
|
|
109
116
|
interface RouteProxyContext {
|
|
117
|
+
context: WrenContext;
|
|
110
118
|
params: Record<string, string>;
|
|
111
119
|
redirect: (location: string | URL, status?: RedirectStatus) => Response;
|
|
112
120
|
request: Request;
|
|
@@ -116,6 +124,7 @@ interface RouteProxyContext {
|
|
|
116
124
|
/** Runs the inner proxies and the route handler; may be called once. */
|
|
117
125
|
type RouteProxyNext = () => Promise<Response>;
|
|
118
126
|
interface RouteStack<TModule extends RouteModule = RouteModule, TLayout extends RouteModule = RouteModule, TProxy extends RouteModule = RouteModule<RouteProxy>> {
|
|
127
|
+
context: WrenContext;
|
|
119
128
|
kind: "API" | "NOT_FOUND" | "PAGE";
|
|
120
129
|
layouts?: TLayout[];
|
|
121
130
|
module: TModule;
|
|
@@ -123,5 +132,6 @@ interface RouteStack<TModule extends RouteModule = RouteModule, TLayout extends
|
|
|
123
132
|
proxies?: TProxy[];
|
|
124
133
|
}
|
|
125
134
|
type RouteStackModules = Pick<Required<RouteStack>, "layouts" | "module" | "proxies">;
|
|
135
|
+
type WrenContext = Wren.Context;
|
|
126
136
|
//#endregion
|
|
127
|
-
export { RouteStack as i, RouteEntry as n, RouteModule as r, RadixTrie$1 as t };
|
|
137
|
+
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,12 @@ 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
|
+
interface Context {}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
9
15
|
export interface Entry {
|
|
10
16
|
file: string;
|
|
11
17
|
|
|
@@ -66,7 +72,10 @@ export interface RoutableEntry {
|
|
|
66
72
|
routes: Entry[];
|
|
67
73
|
}
|
|
68
74
|
|
|
75
|
+
export type RouteApiParams = Pick<RouteStack, "context" | "params">;
|
|
76
|
+
|
|
69
77
|
export interface RouteConfig {
|
|
78
|
+
headers?: Readonly<Record<string, string>>;
|
|
70
79
|
prerender?: boolean;
|
|
71
80
|
}
|
|
72
81
|
|
|
@@ -97,6 +106,7 @@ export type RouteLoader<TDefault = unknown> = ({
|
|
|
97
106
|
}: RouteLoaderParams) => Promise<TDefault>;
|
|
98
107
|
|
|
99
108
|
export interface RouteLoaderParams {
|
|
109
|
+
context: WrenContext;
|
|
100
110
|
params?: Record<string, string>;
|
|
101
111
|
request: Request;
|
|
102
112
|
}
|
|
@@ -124,6 +134,7 @@ export type RouteProxy = (
|
|
|
124
134
|
) => Promise<Response | void> | Response | void;
|
|
125
135
|
|
|
126
136
|
export interface RouteProxyContext {
|
|
137
|
+
context: WrenContext;
|
|
127
138
|
params: Record<string, string>;
|
|
128
139
|
redirect: (location: string | URL, status?: RedirectStatus) => Response;
|
|
129
140
|
request: Request;
|
|
@@ -139,6 +150,7 @@ export interface RouteStack<
|
|
|
139
150
|
TLayout extends RouteModule = RouteModule,
|
|
140
151
|
TProxy extends RouteModule = RouteModule<RouteProxy>,
|
|
141
152
|
> {
|
|
153
|
+
context: WrenContext;
|
|
142
154
|
kind: "API" | "NOT_FOUND" | "PAGE";
|
|
143
155
|
layouts?: TLayout[];
|
|
144
156
|
module: TModule;
|
|
@@ -148,4 +160,6 @@ export interface RouteStack<
|
|
|
148
160
|
|
|
149
161
|
export type RouteStackModules = Pick<Required<RouteStack>, "layouts" | "module" | "proxies">;
|
|
150
162
|
|
|
163
|
+
export type WrenContext = Wren.Context;
|
|
164
|
+
|
|
151
165
|
export type { fetch } from "virtual:wrenjs-fetch";
|