@wren-js/core 0.12.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 +1 -1
- package/dist/{constants-B3ndZB9W.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 +1 -1
- package/dist/{types-B5lgdAKl.d.mts → types-BMcFdUPW.d.mts} +52 -11
- package/dist/types.d.ts +83 -18
- 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:`
|
|
@@ -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,4 +1,4 @@
|
|
|
1
|
-
import { a as WrenContext, 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
3
|
export declare function matchRouteToStack<T extends RouteStack = RouteStack>(path?: string, context?: WrenContext): Promise<T | undefined> | T | undefined;
|
|
4
4
|
//#endregion
|
|
@@ -51,7 +51,23 @@ declare module "virtual:wrenjs-routes" {
|
|
|
51
51
|
//#region src/types.d.ts
|
|
52
52
|
declare global {
|
|
53
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;
|
|
54
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>;
|
|
55
71
|
}
|
|
56
72
|
}
|
|
57
73
|
interface Entry$1 {
|
|
@@ -74,6 +90,12 @@ interface RadixTrie$1<Route = Entry$1> {
|
|
|
74
90
|
w?: Route;
|
|
75
91
|
}
|
|
76
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;
|
|
77
99
|
interface RouteConfig {
|
|
78
100
|
headers?: Readonly<Record<string, string>>;
|
|
79
101
|
prerender?: boolean;
|
|
@@ -87,14 +109,20 @@ interface RouteEntry {
|
|
|
87
109
|
proxies?: (() => Promise<RouteModule>)[];
|
|
88
110
|
stack: () => Promise<RouteStackModules> | RouteStackModules;
|
|
89
111
|
}
|
|
90
|
-
type RouteHead<TElement = unknown> = ({ data, params, request }: RouteHeadParams) => Promise<TElement> | TElement;
|
|
91
|
-
interface RouteHeadParams extends RouteLoaderParams {
|
|
92
|
-
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;
|
|
93
121
|
}
|
|
94
|
-
type RouteLoader<
|
|
95
|
-
interface RouteLoaderParams {
|
|
122
|
+
type RouteLoader<TReturn = unknown, TParams extends RouteParams = RouteParams> = ({ params, request }: RouteLoaderParams<TParams>) => Promise<TReturn>;
|
|
123
|
+
interface RouteLoaderParams<TParams extends RouteParams = RouteParams> {
|
|
96
124
|
context: WrenContext;
|
|
97
|
-
params?:
|
|
125
|
+
params?: TParams;
|
|
98
126
|
request: Request;
|
|
99
127
|
}
|
|
100
128
|
interface RouteModule<TDefault = unknown, THandler = unknown, THead = unknown> {
|
|
@@ -102,7 +130,7 @@ interface RouteModule<TDefault = unknown, THandler = unknown, THead = unknown> {
|
|
|
102
130
|
default: TDefault;
|
|
103
131
|
DELETE?: THandler;
|
|
104
132
|
GET?: THandler;
|
|
105
|
-
getStaticPaths?:
|
|
133
|
+
getStaticPaths?: Wren.GetStaticPaths;
|
|
106
134
|
HEAD?: THandler;
|
|
107
135
|
head?: RouteHead<THead>;
|
|
108
136
|
loader?: RouteLoader<TDefault>;
|
|
@@ -111,18 +139,25 @@ interface RouteModule<TDefault = unknown, THandler = unknown, THead = unknown> {
|
|
|
111
139
|
POST?: THandler;
|
|
112
140
|
PUT?: THandler;
|
|
113
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>;
|
|
114
149
|
/** A `__proxy` default export. Return a `Response` to short-circuit, or nothing to continue. */
|
|
115
|
-
type RouteProxy = (context: RouteProxyContext
|
|
116
|
-
interface RouteProxyContext {
|
|
150
|
+
type RouteProxy<TParams extends RouteParams = RouteParams> = (context: RouteProxyContext<TParams>, next: RouteProxyNext) => Promise<Response | void> | Response | void;
|
|
151
|
+
interface RouteProxyContext<TParams extends RouteParams = RouteParams> {
|
|
117
152
|
context: WrenContext;
|
|
118
|
-
params:
|
|
153
|
+
params: TParams;
|
|
119
154
|
redirect: (location: string | URL, status?: RedirectStatus) => Response;
|
|
120
155
|
request: Request;
|
|
121
156
|
/** The page URL, without the Flight request suffix. */
|
|
122
157
|
url: URL;
|
|
123
158
|
}
|
|
124
159
|
/** Runs the inner proxies and the route handler; may be called once. */
|
|
125
|
-
type RouteProxyNext =
|
|
160
|
+
type RouteProxyNext = Wren.ProxyNext;
|
|
126
161
|
interface RouteStack<TModule extends RouteModule = RouteModule, TLayout extends RouteModule = RouteModule, TProxy extends RouteModule = RouteModule<RouteProxy>> {
|
|
127
162
|
context: WrenContext;
|
|
128
163
|
kind: "API" | "NOT_FOUND" | "PAGE";
|
|
@@ -133,5 +168,11 @@ interface RouteStack<TModule extends RouteModule = RouteModule, TLayout extends
|
|
|
133
168
|
}
|
|
134
169
|
type RouteStackModules = Pick<Required<RouteStack>, "layouts" | "module" | "proxies">;
|
|
135
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;
|
|
136
177
|
//#endregion
|
|
137
178
|
export { WrenContext as a, RouteStack as i, RouteEntry as n, RouteModule as r, RadixTrie$1 as t };
|
package/dist/types.d.ts
CHANGED
|
@@ -8,7 +8,39 @@ import "./virtual-wrenjs-routes.d.ts";
|
|
|
8
8
|
|
|
9
9
|
declare global {
|
|
10
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;
|
|
11
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>;
|
|
12
44
|
}
|
|
13
45
|
}
|
|
14
46
|
|
|
@@ -72,7 +104,17 @@ export interface RoutableEntry {
|
|
|
72
104
|
routes: Entry[];
|
|
73
105
|
}
|
|
74
106
|
|
|
75
|
-
export type
|
|
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;
|
|
76
118
|
|
|
77
119
|
export interface RouteConfig {
|
|
78
120
|
headers?: Readonly<Record<string, string>>;
|
|
@@ -90,24 +132,34 @@ export interface RouteEntry {
|
|
|
90
132
|
stack: () => Promise<RouteStackModules> | RouteStackModules;
|
|
91
133
|
}
|
|
92
134
|
|
|
93
|
-
export type RouteHead<
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
}: 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
|
+
}
|
|
98
147
|
|
|
99
|
-
export interface
|
|
100
|
-
|
|
148
|
+
export interface RouteLayoutProps<TChildren = unknown, TData = unknown> {
|
|
149
|
+
children?: TChildren;
|
|
150
|
+
context?: WrenContext;
|
|
151
|
+
data?: Promise<TData>;
|
|
152
|
+
request?: Request;
|
|
101
153
|
}
|
|
102
154
|
|
|
103
|
-
export type RouteLoader<
|
|
155
|
+
export type RouteLoader<TReturn = unknown, TParams extends RouteParams = RouteParams> = ({
|
|
104
156
|
params,
|
|
105
157
|
request,
|
|
106
|
-
}: RouteLoaderParams) => Promise<
|
|
158
|
+
}: RouteLoaderParams<TParams>) => Promise<TReturn>;
|
|
107
159
|
|
|
108
|
-
export interface RouteLoaderParams {
|
|
160
|
+
export interface RouteLoaderParams<TParams extends RouteParams = RouteParams> {
|
|
109
161
|
context: WrenContext;
|
|
110
|
-
params?:
|
|
162
|
+
params?: TParams;
|
|
111
163
|
request: Request;
|
|
112
164
|
}
|
|
113
165
|
|
|
@@ -117,7 +169,7 @@ export interface RouteModule<TDefault = unknown, THandler = unknown, THead = unk
|
|
|
117
169
|
DELETE?: THandler;
|
|
118
170
|
GET?: THandler;
|
|
119
171
|
|
|
120
|
-
getStaticPaths?:
|
|
172
|
+
getStaticPaths?: Wren.GetStaticPaths;
|
|
121
173
|
HEAD?: THandler;
|
|
122
174
|
head?: RouteHead<THead>;
|
|
123
175
|
loader?: RouteLoader<TDefault>;
|
|
@@ -127,15 +179,24 @@ export interface RouteModule<TDefault = unknown, THandler = unknown, THead = unk
|
|
|
127
179
|
PUT?: THandler;
|
|
128
180
|
}
|
|
129
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
|
+
|
|
130
191
|
/** A `__proxy` default export. Return a `Response` to short-circuit, or nothing to continue. */
|
|
131
|
-
export type RouteProxy = (
|
|
132
|
-
context: RouteProxyContext
|
|
192
|
+
export type RouteProxy<TParams extends RouteParams = RouteParams> = (
|
|
193
|
+
context: RouteProxyContext<TParams>,
|
|
133
194
|
next: RouteProxyNext,
|
|
134
195
|
) => Promise<Response | void> | Response | void;
|
|
135
196
|
|
|
136
|
-
export interface RouteProxyContext {
|
|
197
|
+
export interface RouteProxyContext<TParams extends RouteParams = RouteParams> {
|
|
137
198
|
context: WrenContext;
|
|
138
|
-
params:
|
|
199
|
+
params: TParams;
|
|
139
200
|
redirect: (location: string | URL, status?: RedirectStatus) => Response;
|
|
140
201
|
request: Request;
|
|
141
202
|
/** The page URL, without the Flight request suffix. */
|
|
@@ -143,7 +204,7 @@ export interface RouteProxyContext {
|
|
|
143
204
|
}
|
|
144
205
|
|
|
145
206
|
/** Runs the inner proxies and the route handler; may be called once. */
|
|
146
|
-
export type RouteProxyNext =
|
|
207
|
+
export type RouteProxyNext = Wren.ProxyNext;
|
|
147
208
|
|
|
148
209
|
export interface RouteStack<
|
|
149
210
|
TModule extends RouteModule = RouteModule,
|
|
@@ -162,4 +223,8 @@ export type RouteStackModules = Pick<Required<RouteStack>, "layouts" | "module"
|
|
|
162
223
|
|
|
163
224
|
export type WrenContext = Wren.Context;
|
|
164
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
|
+
|
|
165
230
|
export type { fetch } from "virtual:wrenjs-fetch";
|