@wren-js/core 0.12.0 → 0.14.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/config.d.mts +0 -4
- package/dist/{constants-DY_YNC7k.d.mts → constants-Cl_tAd3n.d.mts} +0 -4
- package/dist/{constants-B3ndZB9W.mjs → constants-DkL4dSXt.mjs} +1 -1
- package/dist/constants.d.mts +1 -1
- package/dist/constants.mjs +1 -1
- package/dist/link.d.mts +0 -2
- package/dist/response.d.mts +0 -2
- package/dist/runtime/prerender.d.mts +2 -4
- package/dist/runtime/prerender.mjs +1 -1
- package/dist/runtime/router.d.mts +1 -3
- package/dist/{types-B5lgdAKl.d.mts → types-PJ4hg00s.d.mts} +53 -24
- package/dist/types.d.ts +83 -18
- package/package.json +3 -3
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-DkL4dSXt.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:`
|
package/dist/config.d.mts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { ConfigEnv, UserConfig } from "vite";
|
|
2
|
-
//#region src/entry/config/types.d.ts
|
|
3
2
|
interface WrenAdapter {
|
|
4
3
|
name: string;
|
|
5
4
|
viteConfig(config: WrenConfig, env: ConfigEnv): Promise<UserConfig> | UserConfig;
|
|
@@ -102,10 +101,7 @@ interface WrenIntegration {
|
|
|
102
101
|
};
|
|
103
102
|
viteConfig(config: WrenConfig, env: ConfigEnv): Promise<UserConfig> | UserConfig;
|
|
104
103
|
}
|
|
105
|
-
//#endregion
|
|
106
|
-
//#region src/entry/config/index.d.ts
|
|
107
104
|
export declare const CONFIG_VALID_EXTENSIONS: readonly ["ts", "mts", "js", "mjs"];
|
|
108
105
|
export declare function defineConfig(config?: WrenConfig): WrenConfig;
|
|
109
106
|
export declare const DEFAULTS: WrenConfig;
|
|
110
|
-
//#endregion
|
|
111
107
|
export type { WrenAdapter, WrenConfig, WrenIntegration };
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
//#region ../_shared/constants.d.ts
|
|
2
1
|
declare const ROUTE_MODULE_RE: RegExp;
|
|
3
|
-
//#endregion
|
|
4
|
-
//#region src/constants.d.ts
|
|
5
2
|
declare const WREN_NAME = "wrenjs";
|
|
6
3
|
declare const WREN_VERSION: string;
|
|
7
4
|
declare const ENTRY_KIND_ROOT = "ROOT";
|
|
@@ -22,5 +19,4 @@ declare const ENTRY_FILEROUTE_API_EXPORT_PATCH = "PATCH";
|
|
|
22
19
|
declare const ENTRY_FILEROUTE_API_EXPORT_POST = "POST";
|
|
23
20
|
declare const ENTRY_FILEROUTE_API_EXPORT_PUT = "PUT";
|
|
24
21
|
declare const ENTRY_API_EXPORTS: readonly ["GET", "DELETE", "HEAD", "OPTIONS", "PATCH", "POST", "PUT"];
|
|
25
|
-
//#endregion
|
|
26
22
|
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 };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e=`0.
|
|
1
|
+
var e=`0.14.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.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
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-
|
|
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-Cl_tAd3n.mjs";
|
|
2
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{_ 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-DkL4dSXt.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};
|
package/dist/link.d.mts
CHANGED
package/dist/response.d.mts
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import { n as RouteEntry, t as RadixTrie } from "../types-
|
|
2
|
-
//#region src/runtime/prerender/index.d.ts
|
|
1
|
+
import { n as RouteEntry, t as RadixTrie } from "../types-PJ4hg00s.mjs";
|
|
3
2
|
export declare const getPrerenderPaths: (manifest: {
|
|
4
3
|
dynamicRoutes: RadixTrie<RouteEntry>;
|
|
5
4
|
staticRoutes?: Record<string, RouteEntry>;
|
|
6
|
-
}, prerenderAll?: boolean) => Promise<string[]>;
|
|
7
|
-
//#endregion
|
|
5
|
+
}, prerenderAll?: boolean) => Promise<string[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"../constants-
|
|
1
|
+
import"../constants-DkL4dSXt.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,3 @@
|
|
|
1
|
-
import { a as WrenContext, i as RouteStack, r as RouteModule } from "../types-
|
|
2
|
-
//#region src/runtime/router/index.d.ts
|
|
1
|
+
import { a as WrenContext, i as RouteStack, r as RouteModule } from "../types-PJ4hg00s.mjs";
|
|
3
2
|
export declare function matchRouteToStack<T extends RouteStack = RouteStack>(path?: string, context?: WrenContext): Promise<T | undefined> | T | undefined;
|
|
4
|
-
//#endregion
|
|
5
3
|
export type { RouteModule, RouteStack };
|
|
@@ -1,7 +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-
|
|
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-Cl_tAd3n.mjs";
|
|
3
3
|
import "virtual:wrenjs-fetch";
|
|
4
|
-
//#region src/virtual-wrenjs-fetch.d.ts
|
|
5
4
|
declare module "virtual:wrenjs-fetch" {
|
|
6
5
|
export type RequestInput = Request | {
|
|
7
6
|
headers: Pick<Headers, "get">;
|
|
@@ -11,14 +10,10 @@ declare module "virtual:wrenjs-fetch" {
|
|
|
11
10
|
};
|
|
12
11
|
export const fetch: (request: RequestInput, context?: Wren.Context) => Promise<Response>;
|
|
13
12
|
}
|
|
14
|
-
//#endregion
|
|
15
|
-
//#region src/virtual-wrenjs-island-script.d.ts
|
|
16
13
|
declare module "virtual:wrenjs-island-script" {
|
|
17
14
|
const url: string;
|
|
18
15
|
export default url;
|
|
19
16
|
}
|
|
20
|
-
//#endregion
|
|
21
|
-
//#region src/virtual-wrenjs-link-client.d.ts
|
|
22
17
|
declare module "virtual:wrenjs-link-client" {
|
|
23
18
|
export const kind: "document" | "flight" | "native";
|
|
24
19
|
export function render(response: Response, signal: AbortSignal): Promise<void>;
|
|
@@ -27,8 +22,6 @@ declare module "virtual:wrenjs-link-script" {
|
|
|
27
22
|
const url: string;
|
|
28
23
|
export default url;
|
|
29
24
|
}
|
|
30
|
-
//#endregion
|
|
31
|
-
//#region src/virtual-wrenjs-page-scripts.d.ts
|
|
32
25
|
declare module "virtual:wrenjs-page-scripts" {
|
|
33
26
|
const manifest: {
|
|
34
27
|
routes: Record<string, string[]>;
|
|
@@ -37,8 +30,6 @@ declare module "virtual:wrenjs-page-scripts" {
|
|
|
37
30
|
export default manifest;
|
|
38
31
|
}
|
|
39
32
|
declare module "virtual:wrenjs-hoist:*" {}
|
|
40
|
-
//#endregion
|
|
41
|
-
//#region src/virtual-wrenjs-routes.d.ts
|
|
42
33
|
declare module "virtual:wrenjs-routes" {
|
|
43
34
|
export type Entry = RouteEntry;
|
|
44
35
|
export type RadixTrie = RadixTrie$1<Entry>;
|
|
@@ -47,11 +38,25 @@ declare module "virtual:wrenjs-routes" {
|
|
|
47
38
|
export const staticNotFounds: Record<string, Entry> | undefined;
|
|
48
39
|
export const staticRoutes: Record<string, Entry> | undefined;
|
|
49
40
|
}
|
|
50
|
-
//#endregion
|
|
51
|
-
//#region src/types.d.ts
|
|
52
41
|
declare global {
|
|
53
42
|
namespace Wren {
|
|
43
|
+
type ApiHandler<TParams extends RouteParams = RouteParams> = RouteApiHandler<TParams>;
|
|
44
|
+
type ApiParams<TParams extends RouteParams = RouteParams> = RouteApiParams<TParams>;
|
|
45
|
+
type Config = RouteConfig;
|
|
54
46
|
interface Context {}
|
|
47
|
+
type GetStaticPaths = () => Promise<string[]> | string[];
|
|
48
|
+
type Head<TParams extends RouteParams = RouteParams, TData = unknown> = RouteHead<IntegrationHead, TParams, TData>;
|
|
49
|
+
type HeadProps<TParams extends RouteParams = RouteParams, TData = unknown> = RouteHeadParams<TParams, TData>;
|
|
50
|
+
interface Integration {}
|
|
51
|
+
type Layout<TData = unknown> = RouteComponent<LayoutProps<TData>, IntegrationNode>;
|
|
52
|
+
type LayoutProps<TData = unknown> = RouteLayoutProps<IntegrationNode, TData>;
|
|
53
|
+
type Loader<TReturn = unknown, TParams extends RouteParams = RouteParams> = RouteLoader<TReturn, TParams>;
|
|
54
|
+
type LoaderProps<TParams extends RouteParams = RouteParams> = RouteLoaderParams<TParams>;
|
|
55
|
+
type Page<TParams extends RouteParams = RouteParams, TData = unknown> = RouteComponent<PageProps<TParams, TData>, IntegrationNode>;
|
|
56
|
+
type PageProps<TParams extends RouteParams = RouteParams, TData = unknown> = RoutePageProps<TParams, TData>;
|
|
57
|
+
type Proxy<TParams extends RouteParams = RouteParams> = RouteProxy<TParams>;
|
|
58
|
+
type ProxyContext<TParams extends RouteParams = RouteParams> = RouteProxyContext<TParams>;
|
|
59
|
+
type ProxyNext = () => Promise<Response>;
|
|
55
60
|
}
|
|
56
61
|
}
|
|
57
62
|
interface Entry$1 {
|
|
@@ -74,6 +79,12 @@ interface RadixTrie$1<Route = Entry$1> {
|
|
|
74
79
|
w?: Route;
|
|
75
80
|
}
|
|
76
81
|
type RedirectStatus = 301 | 302 | 303 | 307 | 308;
|
|
82
|
+
type RouteApiHandler<TParams extends RouteParams = RouteParams> = (request: Request, route: RouteApiParams<TParams>) => Promise<Response> | Response;
|
|
83
|
+
interface RouteApiParams<TParams extends RouteParams = RouteParams> {
|
|
84
|
+
context: WrenContext;
|
|
85
|
+
params: TParams;
|
|
86
|
+
}
|
|
87
|
+
type RouteComponent<TProps, TNode> = (props: TProps) => Promise<TNode> | TNode;
|
|
77
88
|
interface RouteConfig {
|
|
78
89
|
headers?: Readonly<Record<string, string>>;
|
|
79
90
|
prerender?: boolean;
|
|
@@ -87,14 +98,20 @@ interface RouteEntry {
|
|
|
87
98
|
proxies?: (() => Promise<RouteModule>)[];
|
|
88
99
|
stack: () => Promise<RouteStackModules> | RouteStackModules;
|
|
89
100
|
}
|
|
90
|
-
type RouteHead<TElement = unknown> = ({ data, params, request }: RouteHeadParams) => Promise<TElement> | TElement;
|
|
91
|
-
interface RouteHeadParams extends RouteLoaderParams {
|
|
92
|
-
data?:
|
|
101
|
+
type RouteHead<TElement = unknown, TParams extends RouteParams = RouteParams, TData = unknown> = ({ data, params, request }: RouteHeadParams<TParams, TData>) => Promise<TElement> | TElement;
|
|
102
|
+
interface RouteHeadParams<TParams extends RouteParams = RouteParams, TData = unknown> extends RouteLoaderParams<TParams> {
|
|
103
|
+
data?: Promise<TData>;
|
|
104
|
+
}
|
|
105
|
+
interface RouteLayoutProps<TChildren = unknown, TData = unknown> {
|
|
106
|
+
children?: TChildren;
|
|
107
|
+
context?: WrenContext;
|
|
108
|
+
data?: Promise<TData>;
|
|
109
|
+
request?: Request;
|
|
93
110
|
}
|
|
94
|
-
type RouteLoader<
|
|
95
|
-
interface RouteLoaderParams {
|
|
111
|
+
type RouteLoader<TReturn = unknown, TParams extends RouteParams = RouteParams> = ({ params, request }: RouteLoaderParams<TParams>) => Promise<TReturn>;
|
|
112
|
+
interface RouteLoaderParams<TParams extends RouteParams = RouteParams> {
|
|
96
113
|
context: WrenContext;
|
|
97
|
-
params?:
|
|
114
|
+
params?: TParams;
|
|
98
115
|
request: Request;
|
|
99
116
|
}
|
|
100
117
|
interface RouteModule<TDefault = unknown, THandler = unknown, THead = unknown> {
|
|
@@ -102,7 +119,7 @@ interface RouteModule<TDefault = unknown, THandler = unknown, THead = unknown> {
|
|
|
102
119
|
default: TDefault;
|
|
103
120
|
DELETE?: THandler;
|
|
104
121
|
GET?: THandler;
|
|
105
|
-
getStaticPaths?:
|
|
122
|
+
getStaticPaths?: Wren.GetStaticPaths;
|
|
106
123
|
HEAD?: THandler;
|
|
107
124
|
head?: RouteHead<THead>;
|
|
108
125
|
loader?: RouteLoader<TDefault>;
|
|
@@ -111,18 +128,25 @@ interface RouteModule<TDefault = unknown, THandler = unknown, THead = unknown> {
|
|
|
111
128
|
POST?: THandler;
|
|
112
129
|
PUT?: THandler;
|
|
113
130
|
}
|
|
131
|
+
interface RoutePageProps<TParams extends RouteParams = RouteParams, TData = unknown> {
|
|
132
|
+
context?: WrenContext;
|
|
133
|
+
data?: Promise<TData>;
|
|
134
|
+
params?: TParams;
|
|
135
|
+
request?: Request;
|
|
136
|
+
}
|
|
137
|
+
type RouteParams = Record<string, string>;
|
|
114
138
|
/** A `__proxy` default export. Return a `Response` to short-circuit, or nothing to continue. */
|
|
115
|
-
type RouteProxy = (context: RouteProxyContext
|
|
116
|
-
interface RouteProxyContext {
|
|
139
|
+
type RouteProxy<TParams extends RouteParams = RouteParams> = (context: RouteProxyContext<TParams>, next: RouteProxyNext) => Promise<Response | void> | Response | void;
|
|
140
|
+
interface RouteProxyContext<TParams extends RouteParams = RouteParams> {
|
|
117
141
|
context: WrenContext;
|
|
118
|
-
params:
|
|
142
|
+
params: TParams;
|
|
119
143
|
redirect: (location: string | URL, status?: RedirectStatus) => Response;
|
|
120
144
|
request: Request;
|
|
121
145
|
/** The page URL, without the Flight request suffix. */
|
|
122
146
|
url: URL;
|
|
123
147
|
}
|
|
124
148
|
/** Runs the inner proxies and the route handler; may be called once. */
|
|
125
|
-
type RouteProxyNext =
|
|
149
|
+
type RouteProxyNext = Wren.ProxyNext;
|
|
126
150
|
interface RouteStack<TModule extends RouteModule = RouteModule, TLayout extends RouteModule = RouteModule, TProxy extends RouteModule = RouteModule<RouteProxy>> {
|
|
127
151
|
context: WrenContext;
|
|
128
152
|
kind: "API" | "NOT_FOUND" | "PAGE";
|
|
@@ -133,5 +157,10 @@ interface RouteStack<TModule extends RouteModule = RouteModule, TLayout extends
|
|
|
133
157
|
}
|
|
134
158
|
type RouteStackModules = Pick<Required<RouteStack>, "layouts" | "module" | "proxies">;
|
|
135
159
|
type WrenContext = Wren.Context;
|
|
136
|
-
|
|
160
|
+
type IntegrationHead = Wren.Integration extends {
|
|
161
|
+
head: infer THead;
|
|
162
|
+
} ? THead : IntegrationNode;
|
|
163
|
+
type IntegrationNode = Wren.Integration extends {
|
|
164
|
+
node: infer TNode;
|
|
165
|
+
} ? TNode : unknown;
|
|
137
166
|
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";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wren-js/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.14.0",
|
|
4
4
|
"description": "Framework agnostic utilities for the wrenjs meta-framework",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"@wren-js/core",
|
|
@@ -60,11 +60,11 @@
|
|
|
60
60
|
"access": "public"
|
|
61
61
|
},
|
|
62
62
|
"dependencies": {
|
|
63
|
-
"vite": "8.3.
|
|
63
|
+
"vite": "8.3.5"
|
|
64
64
|
},
|
|
65
65
|
"devDependencies": {
|
|
66
66
|
"typescript": "7.0.2",
|
|
67
|
-
"vite-plus": "1.
|
|
67
|
+
"vite-plus": "1.4.0"
|
|
68
68
|
},
|
|
69
69
|
"scripts": {
|
|
70
70
|
"build": "vp pack",
|