renku 0.0.7 → 0.0.8

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.
Files changed (68) hide show
  1. package/dist/auth-D5pK_Zr4.js +1 -0
  2. package/dist/auth.d.ts +1 -1
  3. package/dist/auth.js +1 -1
  4. package/dist/bash-complete.js +1 -1
  5. package/dist/bun.d.ts +7 -22
  6. package/dist/bun.js +1 -1
  7. package/dist/cli.js +1 -1
  8. package/dist/client.js +1 -1
  9. package/dist/cloudflare-Cm-b9zU8.js +2 -0
  10. package/dist/cloudflare.d.ts +4 -2
  11. package/dist/cloudflare.js +1 -1
  12. package/dist/cloudflare.worker.d.ts +4 -2
  13. package/dist/cloudflare.worker.js +1 -1
  14. package/dist/{context-CJSW8XEm.js → context-C83FYHsZ.js} +1 -1
  15. package/dist/create-computed-vBhisFEL.js +1 -0
  16. package/dist/{create-context-OCBKqRIM.js → create-context-DWsglCRN.js} +1 -1
  17. package/dist/create-element-DdyoBVZS.js +1 -0
  18. package/dist/{create-loader-Bnk94Dhg.js → create-loader-hQHegC7I.js} +1 -1
  19. package/dist/data.d.ts +3 -1
  20. package/dist/data.js +1 -1
  21. package/dist/dom.d.ts +7 -3
  22. package/dist/dom.js +1 -1
  23. package/dist/{effect-Bd9_A9t9.js → effect-D3CPC1qb.js} +1 -1
  24. package/dist/fragment-DkBz18dw.js +1 -0
  25. package/dist/get-route-D_cS5xy0.js +1 -0
  26. package/dist/{index-B4ezGLrO.d.ts → index-hZABUZHC.d.ts} +1 -1
  27. package/dist/index.d.ts +6 -5
  28. package/dist/index.js +1 -1
  29. package/dist/jsx-dev-runtime.d.ts +4 -4
  30. package/dist/jsx-dev-runtime.js +1 -1
  31. package/dist/jsx-runtime-BJQV0ZvP.js +0 -0
  32. package/dist/jsx-runtime.d.ts +5 -8
  33. package/dist/jsx-runtime.js +1 -1
  34. package/dist/jsx-to-virtual-node-btYsRR_g.js +1 -0
  35. package/dist/otel.d.ts +7 -0
  36. package/dist/otel.js +1 -0
  37. package/dist/register-server-function-Cz5-Gudu.js +1 -0
  38. package/dist/{register-server-function-J_wGw2NL.d.ts → register-server-function-s7OWEfvO.d.ts} +1 -1
  39. package/dist/render-5yoUj7dq.js +14 -0
  40. package/dist/render-dom-node-DSu3cWuF.js +1 -0
  41. package/dist/server.d.ts +3 -2
  42. package/dist/server.js +1 -1
  43. package/dist/signal-DXdSsSmq.d.ts +2 -0
  44. package/dist/types-CvU3wYQp.d.ts +68 -0
  45. package/dist/{types-DNwmCBRS.d.ts → types-DZ5UlJbq.d.ts} +10 -9
  46. package/dist/{types-BOj-9dR5.d.ts → types-De3Of0g0.d.ts} +1 -2
  47. package/dist/ui.d.ts +2 -1
  48. package/dist/ui.js +1 -1
  49. package/dist/vite.js +5 -5
  50. package/package.json +27 -5
  51. package/dist/auth-DivcgvqR.js +0 -1
  52. package/dist/cloudflare-BVLzalPQ.js +0 -2
  53. package/dist/create-computed-CgSmvZ_e.js +0 -1
  54. package/dist/fragment-CFpBSLG-.d.ts +0 -6
  55. package/dist/fragment-uL1agXkn.js +0 -1
  56. package/dist/get-route-DL8B9jay.js +0 -1
  57. package/dist/jsx-runtime-BhjWaNaK.js +0 -1
  58. package/dist/register-server-function-Dsv6VBSj.js +0 -1
  59. package/dist/rsc-from-markup-ditxg5su.js +0 -14
  60. package/dist/types-CkYeGxWb.d.ts +0 -38
  61. package/dist/update-dom-node-C7Nskg5l.js +0 -1
  62. package/dist/virtual-from-jsx-kd8FG7Em.js +0 -1
  63. /package/dist/{context-store-BpRmbHKI.js → context-store-D1Klyb_v.js} +0 -0
  64. /package/dist/{impl-feCBBL4G.js → impl-BXN4tTw0.js} +0 -0
  65. /package/dist/{impl-BUY8ltUJ.js → impl-BwIgYpzT.js} +0 -0
  66. /package/dist/{impl-BxvCfMB-.js → impl-DRBGEVSP.js} +0 -0
  67. /package/dist/{signal-store-0zk-69gB.js → signal-store-B0WygwF_.js} +0 -0
  68. /package/dist/{types--K8aCg53.d.ts → types-Cd8M_aYq.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ import{AsyncLocalStorage as e}from"node:async_hooks";const t=new e,n=()=>({sessionId:null,userId:null}),r=e=>t.run(n(),e),i=()=>{let e=t.getStore();if(e)return e;let r=n();return t.enterWith(r),r};export{r as n,i as t};
package/dist/auth.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { t as AuthContext } from "./types--K8aCg53.js";
1
+ import { t as AuthContext } from "./types-Cd8M_aYq.js";
2
2
 
3
3
  //#region src/auth/auth.d.ts
4
4
  declare const auth: () => AuthContext;
package/dist/auth.js CHANGED
@@ -1 +1 @@
1
- import{t as e}from"./auth-DivcgvqR.js";export{e as auth};
1
+ import{t as e}from"./auth-D5pK_Zr4.js";export{e as auth};
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env bun
2
- import{n as e,t}from"./context-CJSW8XEm.js";import{proposeCompletions as n}from"@stricli/core";const r=process.argv.slice(3);process.env.COMP_LINE?.endsWith(` `)&&r.push(``),await n(e,r,t(process));try{for(let{completion:i}of await n(e,r,t(process)))process.stdout.write(`${i}\n`)}catch{}
2
+ import{n as e,t}from"./context-C83FYHsZ.js";import{proposeCompletions as n}from"@stricli/core";const r=process.argv.slice(3);process.env.COMP_LINE?.endsWith(` `)&&r.push(``),await n(e,r,t(process));try{for(let{completion:i}of await n(e,r,t(process)))process.stdout.write(`${i}\n`)}catch{}
package/dist/bun.d.ts CHANGED
@@ -1,31 +1,16 @@
1
- import { n as PathToParams, t as AugmentedRequest } from "./types-DNwmCBRS.js";
2
- import { RouteMetadata } from "bun:app";
3
- import { BunPlugin, Serve } from "bun";
1
+ import { Bake, BunPlugin } from "bun";
4
2
 
5
3
  //#region src/bun/render.d.ts
6
- declare const render: (request: Request, routeMetadata: RouteMetadata) => Promise<Response>;
4
+ declare const render: (request: Request, routeMetadata: Bake.RouteMetadata) => Promise<Response>;
7
5
  //#endregion
8
6
  //#region src/bun/types.d.ts
9
- type Route<T extends Record<string, string>> = {
10
- GET?: (request: AugmentedRequest<T>) => Response | Promise<Response>;
7
+ type RenkuBunBake = (props: {
8
+ plugins?: BunPlugin[];
9
+ }) => {
10
+ app: Bake.Options;
11
11
  };
12
12
  //#endregion
13
13
  //#region src/bun/renku.d.ts
14
- /**
15
- * @todo fix types
16
- */
17
- declare const renku: <T, R extends { [K in keyof R]: Route<PathToParams<K & string>> }>({
18
- routes,
19
- bake,
20
- plugins
21
- }: {
22
- routes: R;
23
- bake?: never;
24
- plugins?: BunPlugin[];
25
- } | {
26
- routes?: never;
27
- bake: true;
28
- plugins?: BunPlugin[];
29
- }) => Serve.Options<T, any>;
14
+ declare const renku: RenkuBunBake;
30
15
  //#endregion
31
16
  export { render, renku };
package/dist/bun.js CHANGED
@@ -1 +1 @@
1
- import{n as e,r as t,t as n}from"./rsc-from-markup-ditxg5su.js";import"./virtual-from-jsx-kd8FG7Em.js";import"./signal-store-0zk-69gB.js";import"./effect-Bd9_A9t9.js";const r=async(r,i)=>{let{styles:a,modules:o,pageModule:s,layouts:c}=i,l=s.default();for(let e of c)l=e.default({children:[l],_renku:{styles:a,modules:o}});let u=e(l);if(r.headers.get(`Accept`)===`text/x-component`){let e=n(u);return new Response(e,{headers:{"Content-Type":`text/x-component`}})}let d=t(u);return new Response(d,{headers:{"Content-Type":`text/html`}})},i=({routes:e,bake:t,plugins:n})=>t?{app:{framework:{fileSystemRouterTypes:[{root:`./pages`,serverEntryPoint:`renku/bun`,clientEntryPoint:`renku/client`,style:`nextjs-pages`,layouts:!0,extensions:[`ts`,`tsx`,`mdx`]}],serverComponents:{separateSSRGraph:!1,serverRuntimeImportSource:`renku/server`},plugins:n}},fetch:()=>new Response}:{routes:e,development:!0};export{r as render,i as renku};
1
+ import{n as e,r as t,t as n}from"./render-5yoUj7dq.js";import"./signal-store-B0WygwF_.js";import"./jsx-to-virtual-node-btYsRR_g.js";import"./effect-D3CPC1qb.js";import"./fragment-DkBz18dw.js";const r=async(r,i)=>{let{styles:a,modules:o,pageModule:s,layouts:c}=i,l=await s.default();for(let e of c)l=await e.default({children:[l],_renku:{styles:a,modules:o}});let u=n(l);if(r.headers.get(`Accept`)===`text/x-component`){let t=e(u);return new Response(t,{headers:{"Content-Type":`text/x-component`}})}let d=t(u);return new Response(d,{headers:{"Content-Type":`text/html`}})},i=({plugins:e})=>({app:{framework:{fileSystemRouterTypes:[{root:`./pages`,serverEntryPoint:`renku/bun`,clientEntryPoint:`renku/client`,style:`nextjs-pages`,layouts:!0,extensions:[`ts`,`tsx`,`md`,`mdx`]}],serverComponents:{separateSSRGraph:!1,serverRuntimeImportSource:`renku/server`},plugins:e}}});export{r as render,i as renku};
package/dist/cli.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env bun
2
- import{n as e,t}from"./context-CJSW8XEm.js";import{run as n}from"@stricli/core";await n(e,process.argv.slice(2),t(process));
2
+ import{n as e,t}from"./context-C83FYHsZ.js";import{run as n}from"@stricli/core";await n(e,process.argv.slice(2),t(process));
package/dist/client.js CHANGED
@@ -1 +1 @@
1
- import{n as e}from"./virtual-from-jsx-kd8FG7Em.js";import"./signal-store-0zk-69gB.js";import"./effect-Bd9_A9t9.js";import{n as t,r as n,t as r}from"./update-dom-node-C7Nskg5l.js";const i=e=>Array.isArray(e)&&e[0]===`A`,a=e=>Array.isArray(e)&&e[0]===`C`,o=e=>Array.isArray(e)&&e[0]===`E`,s=e=>{if(o(e)){let t=[],{children:n,...r}=e[3];if(n)for(let e of n)t.push(s(e));return{type:`element`,value:e[1],key:e[2],props:r,children:t}}return i(e)?{type:`async`,key:e[1],index:e[2]}:a(e)?{type:`client`,key:e[1],path:e[2],name:e[3],props:e[4]}:typeof e==`string`||typeof e==`number`?{type:`text`,value:String(e)}:null},c={virtualNode:void 0},l=async e=>{let t=await fetch(e.pathname,{headers:{Accept:`text/x-component`}});if(t.body&&c.virtualNode){let e=s(await t.json());r({domNode:document.documentElement,oldVirtualNode:c.virtualNode,newVirtualNode:e}),c.virtualNode=e;return}console.error(`No body`)},u=e=>!e.canIntercept||e.hashChange||!!e.downloadRequest||!!e.formData,d=()=>{window.navigation.addEventListener(`navigate`,e=>{if(u(e))return;let t=new URL(e.destination.url);e.intercept({async handler(){await l(t)}})})},f=(r,i)=>{if(i?.type===`element`&&i.value.toLowerCase()===r.tagName.toLowerCase()){i.domNode=r;for(let[a,o]of i.children.entries()){let s=r.childNodes[a];if(s)if(o?.type===`element`)s instanceof HTMLElement&&f(s,o);else if(o?.type===`text`){if(s.textContent===o.value)o.domNode=s;else if(s.nodeType===Node.TEXT_NODE){let e=``;for(let t of i.children)if(t?.type===`text`)e+=t.value;else if(t?.type===`signal`)e+=String(t.value.get());else if(t?.type===`element`)break;s.textContent===e&&(o.domNode=s)}}else o?.type===`signal`?s.textContent===String(o.value.get())&&(o.domNode=s):o?.type===`async`?s.nodeType===Node.COMMENT_NODE&&(o.domNode=s):o?.type===`client`&&s.nodeType===Node.COMMENT_NODE&&(o.domNode=s,import(o.path).then(r=>{let i=e({fn:r[o.name],key:o.key,props:o.props,asyncComponents:[],clientComponents:[]});Array.isArray(i)?n({domNode:s,virtualNode:i,replace:!0}):t({domNode:s,virtualNode:i,replace:!0})}))}}},p=e=>{try{let t=JSON.parse(e);if(o(t)){let e=s(t);f(document.documentElement,e),c.virtualNode=e}else console.warn(`Unhandled: Not RSC Element`)}catch(e){console.error(`Failed to parse RSC chunk:`,e)}};d(),window.__RSC||=[];for(let e of window.__RSC)p(e);window.__RSC.push=e=>(console.log(`streamed rsc line`,e),window.__RSC.length);
1
+ import"./signal-store-B0WygwF_.js";import{n as e}from"./jsx-to-virtual-node-btYsRR_g.js";import"./effect-D3CPC1qb.js";import"./fragment-DkBz18dw.js";import{n as t,r as n,t as r}from"./render-dom-node-DSu3cWuF.js";const i=e=>Array.isArray(e)&&e[0]===`E`,a=e=>Array.isArray(e)&&e[0]===`A`,o=e=>Array.isArray(e)&&e[0]===`C`,s=e=>{if(i(e)){let t=[],{children:n,...r}=e[3];if(n)for(let e of n)t.push(s(e));return{type:`element`,value:e[1],key:e[2],props:r,children:t}}return a(e)?{type:`async`,key:e[1],index:e[2]}:o(e)?{type:`client`,key:e[1],path:e[2],name:e[3],props:e[4]}:typeof e==`string`||typeof e==`number`?{type:`text`,value:String(e)}:null},c=(t,i)=>{if(i?.type===`element`&&i.value.toLowerCase()===t.tagName.toLowerCase()){i.domNode=t;for(let[a,o]of i.children.entries()){let s=t.childNodes[a];if(s)if(o?.type===`element`)s instanceof HTMLElement&&c(s,o);else if(o?.type===`text`){if(s.textContent===o.value)o.domNode=s;else if(s.nodeType===Node.TEXT_NODE){let e=``;for(let t of i.children)if(t?.type===`text`)e+=t.value;else if(t?.type===`signal`)e+=String(t.value.get());else if(t?.type===`element`)break;s.textContent===e&&(o.domNode=s)}}else o?.type===`signal`?s.textContent===String(o.value.get())&&(o.domNode=s):o?.type===`async`?s.nodeType===Node.COMMENT_NODE&&(o.domNode=s):o?.type===`client`&&s.nodeType===Node.COMMENT_NODE&&(o.domNode=s,import(o.path).then(t=>{let i=e({fn:t[o.name],key:o.key,props:o.props,asyncComponents:[],clientComponents:[]});Array.isArray(i)?n({domNode:s,virtualNode:i,replace:!0}):r({domNode:s,virtualNode:i,replace:!0})}))}}},l={virtualNode:void 0},u=e=>{try{let t=JSON.parse(e);if(i(t)){let e=s(t);c(document.documentElement,e),l.virtualNode=e}else console.warn(`Unhandled: Not RSC Element`)}catch(e){console.error(`Failed to parse RSC chunk:`,e)}},d=async e=>{let n=await fetch(e.pathname,{headers:{Accept:`text/x-component`}});if(n.body&&l.virtualNode){let e=s(await n.json());t({domNode:document.documentElement,oldVirtualNode:l.virtualNode,newVirtualNode:e}),l.virtualNode=e;return}console.error(`No body`)},f=e=>!e.canIntercept||e.hashChange||!!e.downloadRequest||!!e.formData||e.destination.sameDocument;window.navigation.addEventListener(`navigate`,e=>{if(f(e))return;let t=new URL(e.destination.url);e.intercept({async handler(){await d(t)}})}),window.__RSC||=[];for(let e of window.__RSC)u(e);window.__RSC.push=e=>(console.log(`streamed rsc line`,e),window.__RSC.length);
@@ -0,0 +1,2 @@
1
+ import{n as e,t}from"./auth-D5pK_Zr4.js";import{n,r,t as i}from"./render-5yoUj7dq.js";import{n as a,t as o}from"./get-route-D_cS5xy0.js";import{newWorkersRpcResponse as s}from"capnweb";import{clientEntry as c}from"virtual:renku";const l=({namespace:e,name:t,ws:n})=>async(r,i)=>{if(console.log(`🔥`,`DO handler`,typeof t),n){let e=r.headers.get(`Upgrade`);if(!e||e!==`websocket`)return new Response(`Durable Object expected Upgrade: websocket`,{status:426})}if(typeof t==`function`){let e=r.clone();t=await t(e)}return i[e].getByName(t).fetch(r)},u=({rpName:e,sessionExpiryInMinutes:n})=>{n??=60;let r=e=>e*60*1e3;return{"/validate-session":{GET:async(e,n,r)=>t().sessionId?Response.json({isAuthenticated:!0}):Response.json({isAuthenticated:!1})},"/logout":{POST:async(e,n,i)=>{let a=t();a.sessionId&&await n.AUTH_DO.getByName(`session:${a.sessionId}`).logout();let o=new Date(Date.now()-r(10)).toUTCString();return new Response(null,{headers:{"Set-Cookie":`sessionId=; Path=/; SameSite=Strict; Secure; Expires=${o}`}})},GET:async(e,n,i)=>{let a=t();a.sessionId&&await n.AUTH_DO.getByName(`session:${a.sessionId}`).logout();let o=new Date(Date.now()-r(10)).toUTCString();return new Response(null,{status:302,headers:{Location:`/`,"Set-Cookie":`sessionId=; Path=/; SameSite=Strict; Secure; Expires=${o}`}})}},"/creation-options":{POST:async(t,n,r)=>{let{email:i}=await t.json(),a=crypto.randomUUID(),o=n.AUTH_DO.getByName(`user:${a}`),s=new URL(t.url).hostname,c=await o.creationOptions({id:a,email:i,rpId:s,rpName:e});return Response.json(c)}},"/validate-creation":{POST:async(e,t,n)=>{let{name:r,credential:i}=await e.json();return await t.AUTH_DO.getByName(`user:${r}`).validateCreation({name:r,credential:i}),Response.json({ok:!0})}},"/request-options":{POST:async(e,t,n)=>{let r=new URL(e.url).hostname,i=crypto.randomUUID(),a=await t.AUTH_DO.getByName(`challenge:${i}`).requestOptions({rpId:r});return Response.json({id:i,options:a})}},"/validate-request":{POST:async(e,t,i)=>{let{id:a,credential:o}=await e.json(),s=await t.AUTH_DO.getByName(`challenge:${a}`).validateRequest({credential:o,sessionExpiryInMinutes:n});if(s){let e=new Date(Date.now()+r(n)).toUTCString();return Response.json({success:!0},{headers:{"Set-Cookie":`sessionId=${s}; Path=/; SameSite=Strict; Secure; Expires=${e}`}})}return Response.json({error:!0})}}}},d=e=>{let t={};if(!e)return t;let n=e.split(`;`);for(let e of n){let n=e.indexOf(`=`);if(n===-1)continue;let r=e.slice(0,n).trim(),i=e.slice(n+1).trim();r&&(t[r]=i)}return t},f=async({request:e,env:n,authFn:r})=>{let i=t(),a=d(e.headers.get(`cookie`));if(`sessionId`in a&&a.sessionId){if(i.sessionId=a.sessionId,n?.AUTH_DO){let e=await n.AUTH_DO.getByName(`session:${i.sessionId}`).validateSession({sessionExpiryInMinutes:1440});e&&(i.userId=e.userId)}}else i.sessionId=null;return r?r({request:e,authContext:i}):!0},p=e=>{let t=new TextEncoder,n=e[Symbol.asyncIterator]();return new ReadableStream({async pull(e){let{value:r,done:i}=await n.next();if(i)e.close();else{let n=typeof r==`object`?JSON.stringify(r).concat(`
2
+ `):r;e.enqueue(t.encode(n))}}})},m=[`favicon.ico`,`.well-known`],h=({routes:t})=>async(l,u,d)=>e(async()=>{let e=new URL(l.url).pathname.split(`/`),h=e[1];if(h&&m.includes(h))return new Response(null,{status:404});let g=o({request:l,routes:t});console.log(`routingResult`,g);let _=await f({request:l,env:u,authFn:g?g.auth:null});if(_!==!0)return _||new Response(null,{status:401});if(h===`@renku`){if(e[2]===`rpc`&&e[3]&&e[4]){let t=decodeURIComponent(e[3]),n=decodeURIComponent(e[4]);import.meta.env.DEV||(t=`/assets/functions/${t}.js`),console.log(`☎️ Server function was called:`,t,n);let r=(await import(t))[n];return s(l,r)}return new Response(null,{status:404})}if(!g)return console.warn(`No routing result`),new Response(null,{status:404});if(g.api){let e=Object.assign(l,{params:g.params});return g.api(e,u,d)}let v=await a(g.route,g.params);if(v==null)return new Response(null,{status:404});let y={styles:[],modules:[]};import.meta.env.DEV?(y.modules.push(`/@vite/client`),y.modules.push(`/@renku/client`)):c&&y.modules.push(c);for(let e of g.layouts){let t=await a(e,{children:v,_renku:y});if(t==null)return new Response(null,{status:404});v=t}let b=i(v);if(l.headers.get(`Accept`)===`text/x-component`){let e=p(n(b));return new Response(e,{headers:{"Content-Type":`text/x-component`}})}let x=p(r(b));return new Response(x,{headers:{"Content-Type":`text/html`}})}),g=({routes:e})=>({fetch:h({routes:e})});export{u as n,l as r,g as t};
@@ -1,3 +1,5 @@
1
- import { r as Routes } from "./types-DNwmCBRS.js";
2
- import { n as getAuthRoutes, r as durableObjectHandler, t as renku } from "./index-B4ezGLrO.js";
1
+ import "./signal-DXdSsSmq.js";
2
+ import "./types-CvU3wYQp.js";
3
+ import { t as Routes } from "./types-DZ5UlJbq.js";
4
+ import { n as getAuthRoutes, r as durableObjectHandler, t as renku } from "./index-hZABUZHC.js";
3
5
  export { Routes, durableObjectHandler, getAuthRoutes, renku };
@@ -1 +1 @@
1
- import"./auth-DivcgvqR.js";import"./rsc-from-markup-ditxg5su.js";import"./virtual-from-jsx-kd8FG7Em.js";import"./signal-store-0zk-69gB.js";import"./effect-Bd9_A9t9.js";import{n as e,r as t,t as n}from"./cloudflare-BVLzalPQ.js";export{t as durableObjectHandler,e as getAuthRoutes,n as renku};
1
+ import"./auth-D5pK_Zr4.js";import"./render-5yoUj7dq.js";import"./signal-store-B0WygwF_.js";import"./jsx-to-virtual-node-btYsRR_g.js";import"./effect-D3CPC1qb.js";import"./fragment-DkBz18dw.js";import{n as e,r as t,t as n}from"./cloudflare-Cm-b9zU8.js";export{t as durableObjectHandler,e as getAuthRoutes,n as renku};
@@ -1,5 +1,7 @@
1
- import { r as Routes } from "./types-DNwmCBRS.js";
2
- import { n as getAuthRoutes, r as durableObjectHandler, t as renku } from "./index-B4ezGLrO.js";
1
+ import "./signal-DXdSsSmq.js";
2
+ import "./types-CvU3wYQp.js";
3
+ import { t as Routes } from "./types-DZ5UlJbq.js";
4
+ import { n as getAuthRoutes, r as durableObjectHandler, t as renku } from "./index-hZABUZHC.js";
3
5
  import { DurableObject } from "cloudflare:workers";
4
6
 
5
7
  //#region src/cloudflare/durable-objects/auth.d.ts
@@ -1 +1 @@
1
- import"./auth-DivcgvqR.js";import"./rsc-from-markup-ditxg5su.js";import"./virtual-from-jsx-kd8FG7Em.js";import"./signal-store-0zk-69gB.js";import"./effect-Bd9_A9t9.js";import{n as e,r as t,t as n}from"./cloudflare-BVLzalPQ.js";import{DurableObject as r}from"cloudflare:workers";const i=e=>{let t=e.replace(/-/g,`+`).replace(/_/g,`/`).padEnd(Math.ceil(e.length/4)*4,`=`),n=atob(t),r=new Uint8Array(n.length);for(let e=0;e<n.length;e++)r[e]=n.charCodeAt(e);return r},a=e=>btoa(String.fromCharCode(...e)).replace(/=/g,``).replace(/\+/g,`-`).replace(/\//g,`_`);var o=class extends r{challenge=null;constructor(e,t){super(e,t)}createChallenge(){let e=new Uint8Array(16);return self.crypto.getRandomValues(e),this.challenge=a(e),this.challenge}creationOptions({id:e,email:t,rpId:n,rpName:r}){let i=this.createChallenge();return{user:{id:e,name:t,displayName:t},challenge:i,rp:{id:n,name:r},pubKeyCredParams:[{type:`public-key`,alg:-7},{type:`public-key`,alg:-257}]}}async validateCreation({name:e,credential:t}){console.log(`validate`,t);let n=new TextDecoder,r=i(t.response.clientDataJSON),a=JSON.parse(n.decode(r));return a.type===`webauthn.create`&&this.challenge===a.challenge?(this.ctx.storage.kv.put(`credential:${t.id}`,t),this.ctx.storage.kv.put(`name`,e),await this.env.AUTH_DO.getByName(`credential:${t.id}`).storeCredential({name:e,credential:t}),!0):!1}storeCredential({name:e,credential:t}){this.ctx.storage.kv.put(`name`,e),this.ctx.storage.kv.put(`credential`,t)}getChallenge(){return this.challenge}requestOptions({rpId:e}){return{challenge:this.createChallenge(),rpId:e}}async validateRequest({credential:e,sessionExpiryInMinutes:t}){return this.challenge?this.env.AUTH_DO.getByName(`credential:${e.id}`).validateCredential({challenge:this.challenge,credential:e,sessionExpiryInMinutes:t}):!1}async validateCredential({challenge:e,credential:t,sessionExpiryInMinutes:n}){let r=new TextDecoder,a=this.ctx.storage.kv.get(`name`),o=this.ctx.storage.kv.get(`credential`),s=i(t.response.clientDataJSON),c=JSON.parse(r.decode(s));if(console.log(`validateCredential`,{challenge:e,credential:t,clientData:c,storedCredential:o,name:a}),a&&e===c.challenge){let e=crypto.randomUUID();return await this.env.AUTH_DO.getByName(`session:${e}`).createSession({userId:a,sessionExpiryInMinutes:n}),e}return!1}setExpiry(e){this.ctx.storage.kv.put(`expiry`,Date.now()+e*60*1e3)}createSession({userId:e,sessionExpiryInMinutes:t}){this.ctx.storage.kv.put(`userId`,e),this.setExpiry(t)}getUserId(){let e=this.ctx.storage.kv.get(`userId`);return e||(e=crypto.randomUUID(),this.ctx.storage.kv.put(`userId`,e)),e}validateSession({sessionExpiryInMinutes:e}){let t=this.ctx.storage.kv.get(`expiry`),n=this.ctx.storage.kv.get(`userId`);return n&&t&&Date.now()<t?(this.setExpiry(e),{userId:n}):!1}logout(){this.ctx.storage.kv.delete(`userId`)}};export{o as AuthDO,t as durableObjectHandler,e as getAuthRoutes,n as renku};
1
+ import"./auth-D5pK_Zr4.js";import"./render-5yoUj7dq.js";import"./signal-store-B0WygwF_.js";import"./jsx-to-virtual-node-btYsRR_g.js";import"./effect-D3CPC1qb.js";import"./fragment-DkBz18dw.js";import{n as e,r as t,t as n}from"./cloudflare-Cm-b9zU8.js";import{DurableObject as r}from"cloudflare:workers";const i=e=>{let t=e.replace(/-/g,`+`).replace(/_/g,`/`).padEnd(Math.ceil(e.length/4)*4,`=`),n=atob(t),r=new Uint8Array(n.length);for(let e=0;e<n.length;e++)r[e]=n.charCodeAt(e);return r},a=e=>btoa(String.fromCharCode(...e)).replace(/=/g,``).replace(/\+/g,`-`).replace(/\//g,`_`);var o=class extends r{challenge=null;constructor(e,t){super(e,t)}createChallenge(){let e=new Uint8Array(16);return self.crypto.getRandomValues(e),this.challenge=a(e),this.challenge}creationOptions({id:e,email:t,rpId:n,rpName:r}){let i=this.createChallenge();return{user:{id:e,name:t,displayName:t},challenge:i,rp:{id:n,name:r},pubKeyCredParams:[{type:`public-key`,alg:-7},{type:`public-key`,alg:-257}]}}async validateCreation({name:e,credential:t}){console.log(`validate`,t);let n=new TextDecoder,r=i(t.response.clientDataJSON),a=JSON.parse(n.decode(r));return a.type===`webauthn.create`&&this.challenge===a.challenge?(this.ctx.storage.kv.put(`credential:${t.id}`,t),this.ctx.storage.kv.put(`name`,e),await this.env.AUTH_DO.getByName(`credential:${t.id}`).storeCredential({name:e,credential:t}),!0):!1}storeCredential({name:e,credential:t}){this.ctx.storage.kv.put(`name`,e),this.ctx.storage.kv.put(`credential`,t)}getChallenge(){return this.challenge}requestOptions({rpId:e}){return{challenge:this.createChallenge(),rpId:e}}async validateRequest({credential:e,sessionExpiryInMinutes:t}){return this.challenge?this.env.AUTH_DO.getByName(`credential:${e.id}`).validateCredential({challenge:this.challenge,credential:e,sessionExpiryInMinutes:t}):!1}async validateCredential({challenge:e,credential:t,sessionExpiryInMinutes:n}){let r=new TextDecoder,a=this.ctx.storage.kv.get(`name`),o=this.ctx.storage.kv.get(`credential`),s=i(t.response.clientDataJSON),c=JSON.parse(r.decode(s));if(console.log(`validateCredential`,{challenge:e,credential:t,clientData:c,storedCredential:o,name:a}),a&&e===c.challenge){let e=crypto.randomUUID();return await this.env.AUTH_DO.getByName(`session:${e}`).createSession({userId:a,sessionExpiryInMinutes:n}),e}return!1}setExpiry(e){this.ctx.storage.kv.put(`expiry`,Date.now()+e*60*1e3)}createSession({userId:e,sessionExpiryInMinutes:t}){this.ctx.storage.kv.put(`userId`,e),this.setExpiry(t)}getUserId(){let e=this.ctx.storage.kv.get(`userId`);return e||(e=crypto.randomUUID(),this.ctx.storage.kv.put(`userId`,e)),e}validateSession({sessionExpiryInMinutes:e}){let t=this.ctx.storage.kv.get(`expiry`),n=this.ctx.storage.kv.get(`userId`);return n&&t&&Date.now()<t?(this.setExpiry(e),{userId:n}):!1}logout(){this.ctx.storage.kv.delete(`userId`)}};export{o as AuthDO,t as durableObjectHandler,e as getAuthRoutes,n as renku};
@@ -1 +1 @@
1
- import{buildApplication as e,buildCommand as t,buildRouteMap as n}from"@stricli/core";import{buildInstallCommand as r,buildUninstallCommand as i}from"@stricli/auto-complete";import a from"node:fs";import o from"node:os";import s from"node:path";var c=`renku`,l=`0.0.7`,u=`Renku`;const d=n({routes:{ios:t({loader:async()=>{let{ios:e}=await import(`./impl-BxvCfMB-.js`);return e},parameters:{positional:{kind:`tuple`,parameters:[]},flags:{foo:{kind:`parsed`,optional:!0,parse:String,brief:`Foo`}}},docs:{brief:`Nested ios command`}}),android:t({loader:async()=>{let{android:e}=await import(`./impl-BxvCfMB-.js`);return e},parameters:{positional:{kind:`tuple`,parameters:[]},flags:{foo:{kind:`parsed`,optional:!0,parse:String,brief:`Foo`}}},docs:{brief:`Nested android command`}})},docs:{brief:`Native app generation`}}),f=n({routes:{foo:t({loader:async()=>{let{foo:e}=await import(`./impl-BUY8ltUJ.js`);return e},parameters:{positional:{kind:`tuple`,parameters:[]},flags:{foo:{kind:`parsed`,optional:!0,parse:String,brief:`Foo`}}},docs:{brief:`Nested foo command`}}),bar:t({loader:async()=>{let{bar:e}=await import(`./impl-BUY8ltUJ.js`);return e},parameters:{positional:{kind:`tuple`,parameters:[]},flags:{foo:{kind:`parsed`,optional:!0,parse:String,brief:`Foo`}}},docs:{brief:`Nested bar command`}})},docs:{brief:`Nested commands`}}),p=e(n({routes:{subdir:t({loader:async()=>import(`./impl-feCBBL4G.js`),parameters:{positional:{kind:`tuple`,parameters:[]},flags:{foo:{kind:`parsed`,optional:!0,parse:String,brief:`Foo`}}},docs:{brief:`Command in subdirectory`}}),nested:f,native:d,install:r(`my-app`,{bash:`__my-app_bash_complete`}),uninstall:i(`my-app`,{bash:!0})},docs:{brief:u,hideRoute:{install:!0,uninstall:!0}}}),{name:c,versionInfo:{currentVersion:l}});function m(e){return{process:e,os:o,fs:a,path:s}}export{p as n,m as t};
1
+ import{buildApplication as e,buildCommand as t,buildRouteMap as n}from"@stricli/core";import{buildInstallCommand as r,buildUninstallCommand as i}from"@stricli/auto-complete";import a from"node:fs";import o from"node:os";import s from"node:path";var c=`renku`,l=`0.0.8`,u=`Renku`;const d=n({routes:{ios:t({loader:async()=>{let{ios:e}=await import(`./impl-DRBGEVSP.js`);return e},parameters:{positional:{kind:`tuple`,parameters:[]},flags:{foo:{kind:`parsed`,optional:!0,parse:String,brief:`Foo`}}},docs:{brief:`Nested ios command`}}),android:t({loader:async()=>{let{android:e}=await import(`./impl-DRBGEVSP.js`);return e},parameters:{positional:{kind:`tuple`,parameters:[]},flags:{foo:{kind:`parsed`,optional:!0,parse:String,brief:`Foo`}}},docs:{brief:`Nested android command`}})},docs:{brief:`Native app generation`}}),f=n({routes:{foo:t({loader:async()=>{let{foo:e}=await import(`./impl-BwIgYpzT.js`);return e},parameters:{positional:{kind:`tuple`,parameters:[]},flags:{foo:{kind:`parsed`,optional:!0,parse:String,brief:`Foo`}}},docs:{brief:`Nested foo command`}}),bar:t({loader:async()=>{let{bar:e}=await import(`./impl-BwIgYpzT.js`);return e},parameters:{positional:{kind:`tuple`,parameters:[]},flags:{foo:{kind:`parsed`,optional:!0,parse:String,brief:`Foo`}}},docs:{brief:`Nested bar command`}})},docs:{brief:`Nested commands`}}),p=e(n({routes:{subdir:t({loader:async()=>import(`./impl-BXN4tTw0.js`),parameters:{positional:{kind:`tuple`,parameters:[]},flags:{foo:{kind:`parsed`,optional:!0,parse:String,brief:`Foo`}}},docs:{brief:`Command in subdirectory`}}),nested:f,native:d,install:r(`my-app`,{bash:`__my-app_bash_complete`}),uninstall:i(`my-app`,{bash:!0})},docs:{brief:u,hideRoute:{install:!0,uninstall:!0}}}),{name:c,versionInfo:{currentVersion:l}});function m(e){return{process:e,os:o,fs:a,path:s}}export{p as n,m as t};
@@ -0,0 +1 @@
1
+ import{n as e,t}from"./signal-store-B0WygwF_.js";const n=e=>t.get(e),r=t=>new e.Computed(t);export{n,r as t};
@@ -1 +1 @@
1
- import{t as e}from"./context-store-BpRmbHKI.js";const t=t=>{let n=Symbol(`context`);return{set:t=>{e.set(n,t)},get:()=>{let r=e.get(n);if(r===void 0&&t!==void 0)return t;if(r===void 0)throw Error(`Context value not found. Make sure to use provide() in a parent component.`);return r}}};export{t};
1
+ import{t as e}from"./context-store-D1Klyb_v.js";const t=t=>{let n=Symbol(`context`);return{set:t=>{e.set(n,t)},get:()=>{let r=e.get(n);if(r===void 0&&t!==void 0)return t;if(r===void 0)throw Error(`Context value not found. Make sure to use provide() in a parent component.`);return r}}};export{t};
@@ -0,0 +1 @@
1
+ const e=(e,t,n)=>({type:e,props:t,key:n??null});export{e as t};
@@ -1 +1 @@
1
- import{n as e}from"./create-computed-CgSmvZ_e.js";function t(t,n){let r=e({status:`loading`,error:!1,data:null});return r.get().status===`loading`&&t().then(async e=>{if(!n)r.set({status:`success`,error:!1,data:e});else{let t=n(e),i=t instanceof Promise?await t:t;r.set({status:`success`,error:!1,data:i})}}).catch(e=>r.set({status:`error`,error:e,data:null})),r}export{t};
1
+ import{n as e}from"./create-computed-vBhisFEL.js";function t(t,n){let r=e({status:`loading`,error:!1,data:null});return r.get().status===`loading`&&t().then(async e=>{if(!n)r.set({status:`success`,error:!1,data:e});else{let t=n(e),i=t instanceof Promise?await t:t;r.set({status:`success`,error:!1,data:i})}}).catch(e=>r.set({status:`error`,error:e,data:null})),r}export{t};
package/dist/data.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- import { n as Loader, o as Signal } from "./types-BOj-9dR5.js";
1
+ import { t as Signal } from "./signal-DXdSsSmq.js";
2
+ import { n as Loader } from "./types-De3Of0g0.js";
2
3
  import { RpcStub, RpcTarget } from "capnweb";
3
4
  import { StandardJSONSchemaV1, StandardSchemaV1 } from "@standard-schema/spec";
4
5
 
@@ -150,6 +151,7 @@ declare class Data<T extends Schema> extends RpcTarget {
150
151
  protected get _collections(): Collections<T>;
151
152
  protected get _remoteCollections(): RemoteCollections<T>;
152
153
  protected get _db(): Database | undefined;
154
+ protected _rehydrateCollectionsFromDb(): void;
153
155
  get schema(): T;
154
156
  get clientId(): string;
155
157
  ingest(message: SyncMessage): void;
package/dist/data.js CHANGED
@@ -1 +1 @@
1
- import"./signal-store-0zk-69gB.js";import{n as e,t}from"./create-computed-CgSmvZ_e.js";import{t as n}from"./create-loader-Bnk94Dhg.js";import{RpcTarget as r}from"capnweb";const i=e=>{switch(e){case`string`:return`TEXT`;case`number`:return`INTEGER`;case`boolean`:return`INTEGER`;default:throw Error(`Unsupported type: ${String(e)}`)}},a=e=>{let t=``;for(let[n,r]of Object.entries(e).filter(([e])=>e!==`~standard`)){let e=Object.entries(r).filter(([e])=>e!==`~standard`).map(([e,t])=>`${e} ${i(t.type)}`).join(`, `);e&&(t+=`CREATE TABLE IF NOT EXISTS obj_${n} (${e});`)}return t+=`CREATE TABLE IF NOT EXISTS __renku (id TEXT NOT NULL PRIMARY KEY, value TEXT NOT NULL);`,t+=`INSERT INTO __renku (id, value) VALUES ('client_id', '${crypto.randomUUID()}') ON CONFLICT (id) DO NOTHING;`,t+=`CREATE TABLE IF NOT EXISTS __crdt (id TEXT NOT NULL PRIMARY KEY, timestamp TEXT NOT NULL, client TEXT NOT NULL, object TEXT NOT NULL, item TEXT NOT NULL, updates TEXT);`,t},o=({db:e,schema:t})=>{let n=a(t);e.exec(n);let r=e.query(`SELECT value FROM __renku WHERE id = 'client_id' LIMIT 1`);if(!r[0])throw Error(`Client ID not found`);e.clientId=r[0].value},s=({client:e,object:t,item:n})=>{let{id:r,...i}=n;return{id:crypto.randomUUID(),timestamp:Date.now().toString(),client:e,object:t,item:r,updates:JSON.stringify(i)}};var c=class{#e=new Set;subscribe(e){return this.#e.add(e),()=>{this.#e.delete(e)}}#t(e){console.log(`this.#subscriptions`,this.#e);for(let t of this.#e){if(t.filter&&!t.filter(e))continue;console.log(`✉️`,`Dispatching`,t.label);let n=t.subscriber(e);n instanceof Promise&&n.catch(e=>{console.error(`MessageQueue subscriber failed.`,e)})}}add(e){this.#t(e)}},l=class{#e;#t;#n;#r=e([]);#i;constructor({name:e,obj:t,clientId:n,messageQueue:r}){this.#e=n,this.#t=e,this.#n=t,this.#i=r,this.#i.subscribe({subscriber:e=>this.#a(e),filter:e=>e.object===this.#t,label:`Collection: ${this.#t}`})}mock(){return Object.entries(this.#n).reduce((e,[t,n])=>(e[t]=n.mock?n.mock():void 0,e),{})}#a(e){let t={id:e.item,...JSON.parse(e.updates)};this.#r.set(this.#r.get().concat(t))}get items(){return this.#r}query({filter:e,limit:n,first:r}={}){return t(()=>{let t=this.#r.get().filter(e||(()=>!0));return(n||r)&&(t=t.slice(0,r?1:n)),t})}first(e={}){return e.first=!0,t(()=>{let t=this.query(e).get();return t.length>0?t[0]:void 0})}all(){return this.query()}add(e){let t=s({client:this.#e,object:this.#t,item:e});return this.#i.add(t),e}loadItems(e){this.#r.set(e)}};const u=({schema:e,clientId:t,messageQueue:n})=>Object.entries(e).reduce((e,[r,i])=>{let a=r;return e[a]=new l({name:r,obj:i,clientId:t,messageQueue:n}),e},{}),d=e=>t=>{e.transaction(e=>{if(e.exec(`INSERT INTO __crdt (id, timestamp, client, object, item, updates) VALUES (?, ?, ?, ?, ?, ?);`,t.id,t.timestamp,t.client,t.object,t.item,t.updates),t.updates===`DELETE`)e.exec(`DELETE FROM obj_${t.object} WHERE id = ?;`,t.item);else{let n=[t.item],r=JSON.parse(t.updates),i=[`id`].concat(Object.keys(r));n.push(...Object.values(r));let a=`INSERT INTO obj_${t.object} (${i.join(`, `)}) VALUES (${n.map(()=>`?`).join(`, `)});`;e.exec(a,...n)}})};var f=class extends r{#e;constructor(e){super(),this.#e=e}get items(){return this.#e.items.get()}query(e={}){return this.#e.query(e).get()}first(e={}){return this.#e.first(e).get()}all(){return this.query()}add(e){this.#e.add(e)}};const p=e=>{let t=Object.entries(e).reduce((e,[t,n])=>{let r=t;return e[r]=new f(n),e},{});return console.log(`remoteCollections:`,t),t};var m=class extends r{#e;#t;#n;messageQueue=new c;#r;#i;constructor({schema:e,db:t}){super(),this.#e=e,t?(this.#n=t,this.#t=this.#n.clientId,this.messageQueue.subscribe({subscriber:d(this.#n),label:`Local database (Client ID: ${this.#t})`})):this.#t=crypto.randomUUID(),this.#r=u({schema:this.#e,clientId:this.#t,messageQueue:this.messageQueue}),this.#i=p(this.#r)}get _collections(){return this.#r}get _remoteCollections(){return this.#i}get _db(){return this.#n}get schema(){return this.#e}get clientId(){return this.#t}ingest(e){console.log(`📳📳📳`,`Ingest`,e),this.messageQueue.add(e)}async[Symbol.dispose](){console.log(`🗑️🗑️🗑️`,`Data RPC disposing (Client ID: ${this.clientId})`)}},h=class e extends m{#e;#t;constructor({schema:e,db:t,remote:n}){if(super({schema:e,db:t}),this.#e=n,this.#e){this.#e.connect({clientId:this.clientId,ingest:this.ingest.bind(this)}).then(e=>(this.#t=e,this.load())).catch(e=>{console.error(`Remote connect or load failed:`,e)});let e=this.messageQueue.subscribe({subscriber:async e=>{await this.#e?.ingest(e),console.log(`Send to remote`,e)},filter:e=>e.client===this.clientId,label:`Remote`});this.#e.onRpcBroken(()=>{console.log(`Remote connection broken, unsubscribing ...`),e()})}}static async client({schema:t,remote:n}){return typeof n==`function`&&(n=await n()),new e({schema:t,db:!1,remote:n})}static signal({schema:e,remote:t}){return n(()=>this.client({schema:e,remote:t}))}get collections(){return this._collections}async load(){if(!this.#e)return;let e=await this.#e.load();for(let t of Object.keys(e)){let n=t,r=e[n];this._collections[n].loadItems(r)}}async[Symbol.dispose](){console.log(`🗑️ Client Data RPC disposing (CID: ${this.clientId})`),this.#t&&await this.#t()}};const g=e=>{let t={exec:(t,...n)=>e.sql.exec(t,...n),query:(t,...n)=>e.sql.exec(t,...n).toArray(),transaction:n=>e.transactionSync(()=>n(t))};return t};var _=class e extends m{constructor({schema:e,db:t}){super({schema:e,db:t})}static durableObject({schema:t,storage:n}){let r=g(n);return o({db:r,schema:t}),new e({schema:t,db:r})}get collections(){return this._remoteCollections}load(){let e={};for(let t of Object.keys(this.schema)){let n=t;e[n]=this._db?.query(`SELECT * FROM obj_${t}`)??[]}return e}async connect({clientId:e,ingest:t}){console.log(`📳📳📳`,`connect from`,e,t),t.onRpcBroken(()=>{console.log(`📳📳📳`,e,`Ingest RPC broken`)});let n=t.dup();return console.log(`Subscribing client`,e),this.messageQueue.subscribe({subscriber:async e=>await n({...e,id:`${e.id}-CONNECT-${crypto.randomUUID()}`}),filter:t=>t.client!==e,label:`Client: ${e}`})}};const v=e=>e;function y(e,t,n){return e.type===`string`?typeof t==`string`?{value:t}:{issues:[{message:`Expected string for ${n}, got ${typeof t}`}]}:e.type===`number`?typeof t==`number`?{value:t}:{issues:[{message:`Expected number for ${n}, got ${typeof t}`}]}:e.type===`boolean`?typeof t==`boolean`?{value:t}:{issues:[{message:`Expected boolean for ${n}, got ${typeof t}`}]}:{issues:[{message:`Unknown property type for ${n}`}]}}function b(e,t){return n=>{if(typeof n!=`object`||!n||Array.isArray(n))return{issues:[{message:`Expected object for ${e}, got ${typeof n}`}]};let r=n,i=[];for(let[e,n]of Object.entries(t)){if(n.required&&!(e in r)){i.push({message:`Missing required field: ${e}`,path:[e]});continue}if(e in r){let t=y(n,r[e],e);if(t.issues)for(let n of t.issues)i.push({...n,path:[e,...n.path||[]]})}}return i.length>0?{issues:i}:{value:r}}}function x(e,t){return y(e,t,`property`)}function S(e){let t={};return t.type=e.type,t}function C(e){let t=t=>{if(t.target!==`draft-2020-12`&&t.target!==`draft-07`)throw Error(`Unsupported JSON Schema target: ${t.target}. Supported targets: draft-2020-12, draft-07`);let n={},r=[];for(let[t,i]of Object.entries(e))n[t]=S(i),i.required===!0&&r.push(t);let i={$schema:t.target===`draft-2020-12`?`https://json-schema.org/draft/2020-12/schema`:`http://json-schema.org/draft-07/schema#`,type:`object`,properties:n,additionalProperties:!1};return r.length>0&&(i.required=r),i};return{input:t,output:t}}const w=e=>{let t={};for(let[n,r]of Object.entries(e))t[n]={...r,"~standard":{version:1,vendor:`renku`,validate:b(n,r),jsonSchema:C(r),types:{input:void 0,output:void 0}}};return t},T={type:`string`,required:!0,unique:!0,mock:()=>crypto.randomUUID().toString()};export{h as ClientData,_ as ServerData,w as enhancedSchema,T as id,v as schema,x as validatePropertyValue};
1
+ import"./signal-store-B0WygwF_.js";import{n as e,t}from"./create-computed-vBhisFEL.js";import{t as n}from"./create-loader-hQHegC7I.js";import{RpcTarget as r}from"capnweb";const i=e=>{switch(e){case`string`:return`TEXT`;case`number`:return`INTEGER`;case`boolean`:return`INTEGER`;default:throw Error(`Unsupported type: ${String(e)}`)}},a=e=>{let t=``;for(let[n,r]of Object.entries(e).filter(([e])=>e!==`~standard`)){let e=Object.entries(r).filter(([e])=>e!==`~standard`).map(([e,t])=>`${e} ${i(t.type)}`).join(`, `);e&&(t+=`CREATE TABLE IF NOT EXISTS obj_${n} (${e});`)}return t+=`CREATE TABLE IF NOT EXISTS __renku (id TEXT NOT NULL PRIMARY KEY, value TEXT NOT NULL);`,t+=`INSERT INTO __renku (id, value) VALUES ('client_id', '${crypto.randomUUID()}') ON CONFLICT (id) DO NOTHING;`,t+=`CREATE TABLE IF NOT EXISTS __crdt (id TEXT NOT NULL PRIMARY KEY, timestamp TEXT NOT NULL, client TEXT NOT NULL, object TEXT NOT NULL, item TEXT NOT NULL, updates TEXT);`,t},o=({db:e,schema:t})=>{let n=a(t);e.exec(n);let r=e.query(`SELECT value FROM __renku WHERE id = 'client_id' LIMIT 1`);if(!r[0])throw Error(`Client ID not found`);e.clientId=r[0].value},s=({client:e,object:t,item:n})=>{let{id:r,...i}=n;return{id:crypto.randomUUID(),timestamp:Date.now().toString(),client:e,object:t,item:r,updates:JSON.stringify(i)}};var c=class{#e=new Set;subscribe(e){return this.#e.add(e),()=>{this.#e.delete(e)}}#t(e){console.log(`this.#subscriptions`,this.#e);for(let t of this.#e){if(t.filter&&!t.filter(e))continue;console.log(`✉️`,`Dispatching`,t.label);let n=t.subscriber(e);n instanceof Promise&&n.catch(e=>{console.error(`MessageQueue subscriber failed.`,e)})}}add(e){this.#t(e)}},l=class{#e;#t;#n;#r=e([]);#i;constructor({name:e,obj:t,clientId:n,messageQueue:r}){this.#e=n,this.#t=e,this.#n=t,this.#i=r,this.#i.subscribe({subscriber:e=>this.#a(e),filter:e=>e.object===this.#t,label:`Collection: ${this.#t}`})}mock(){return Object.entries(this.#n).reduce((e,[t,n])=>(e[t]=n.mock?n.mock():void 0,e),{})}#a(e){let t=this.#r.get(),n=t.findIndex(t=>t.id===e.item);if(e.updates===`DELETE`){if(n<0)return;let e=t.slice();e.splice(n,1),this.#r.set(e);return}let r=JSON.parse(e.updates),i={...n>=0?t[n]:void 0,...r,id:e.item};if(n>=0){let e=t.slice();e[n]=i,this.#r.set(e);return}this.#r.set(t.concat(i))}get items(){return this.#r}query({filter:e,limit:n,first:r}={}){return t(()=>{let t=this.#r.get().filter(e||(()=>!0));return(n||r)&&(t=t.slice(0,r?1:n)),t})}first(e={}){return e.first=!0,t(()=>{let t=this.query(e).get();return t.length>0?t[0]:void 0})}all(){return this.query()}add(e){let t=s({client:this.#e,object:this.#t,item:e});return this.#i.add(t),e}loadItems(e){this.#r.set(e)}};const u=({schema:e,clientId:t,messageQueue:n})=>Object.entries(e).reduce((e,[r,i])=>{let a=r;return e[a]=new l({name:r,obj:i,clientId:t,messageQueue:n}),e},{});var d=class extends r{#e;constructor(e){super(),this.#e=e}get items(){return this.#e.items.get()}query(e={}){return this.#e.query(e).get()}first(e={}){return this.#e.first(e).get()}all(){return this.query()}add(e){this.#e.add(e)}};const f=e=>{let t=Object.entries(e).reduce((e,[t,n])=>{let r=t;return e[r]=new d(n),e},{});return console.log(`remoteCollections:`,t),t},p=e=>t=>{e.transaction(e=>{if(e.exec(`INSERT INTO __crdt (id, timestamp, client, object, item, updates) VALUES (?, ?, ?, ?, ?, ?);`,t.id,t.timestamp,t.client,t.object,t.item,t.updates),t.updates===`DELETE`)e.exec(`DELETE FROM obj_${t.object} WHERE id = ?;`,t.item);else{let n=[t.item],r=JSON.parse(t.updates),i=[`id`].concat(Object.keys(r));n.push(...Object.values(r));let a=`INSERT INTO obj_${t.object} (${i.join(`, `)}) VALUES (${n.map(()=>`?`).join(`, `)});`;e.exec(a,...n)}})};var m=class extends r{#e;#t;#n;messageQueue=new c;#r;#i;#a=!1;constructor({schema:e,db:t}){super(),this.#e=e,t?(this.#n=t,this.#t=this.#n.clientId,this.messageQueue.subscribe({subscriber:p(this.#n),label:`Local database (Client ID: ${this.#t})`})):this.#t=crypto.randomUUID(),this.#r=u({schema:this.#e,clientId:this.#t,messageQueue:this.messageQueue}),this.#i=f(this.#r)}get _collections(){return this.#r}get _remoteCollections(){return this.#i}get _db(){return this.#n}_rehydrateCollectionsFromDb(){if(!(!this.#n||this.#a)){for(let e of Object.keys(this.#e)){let t=e,n=this.#n.query(`SELECT * FROM obj_${e}`)??[];this.#r[t].loadItems(n)}this.#a=!0}}get schema(){return this.#e}get clientId(){return this.#t}ingest(e){console.log(`📳📳📳`,`Ingest`,e),this.messageQueue.add(e)}async[Symbol.dispose](){console.log(`🗑️🗑️🗑️`,`Data RPC disposing (Client ID: ${this.clientId})`)}},h=class e extends m{#e;#t;constructor({schema:e,db:t,remote:n}){if(super({schema:e,db:t}),this.#e=n,this.#e){this.#e.connect({clientId:this.clientId,ingest:this.ingest.bind(this)}).then(e=>(this.#t=e,this.load())).catch(e=>{console.error(`Remote connect or load failed:`,e)});let e=this.messageQueue.subscribe({subscriber:async e=>{await this.#e?.ingest(e),console.log(`Send to remote`,e)},filter:e=>e.client===this.clientId,label:`Remote`});this.#e.onRpcBroken(()=>{console.log(`Remote connection broken, unsubscribing ...`),e()})}}static async client({schema:t,remote:n}){return typeof n==`function`&&(n=await n()),new e({schema:t,db:!1,remote:n})}static signal({schema:e,remote:t}){return n(()=>this.client({schema:e,remote:t}))}get collections(){return this._collections}async load(){if(!this.#e)return;let e=await this.#e.load();for(let t of Object.keys(e)){let n=t,r=e[n];this._collections[n].loadItems(r)}}async[Symbol.dispose](){console.log(`🗑️ Client Data RPC disposing (CID: ${this.clientId})`),this.#t&&await this.#t()}};const g=e=>{let t={exec:(t,...n)=>e.sql.exec(t,...n),query:(t,...n)=>e.sql.exec(t,...n).toArray(),transaction:n=>e.transactionSync(()=>n(t))};return t};var _=class e extends m{constructor({schema:e,db:t}){super({schema:e,db:t}),this._rehydrateCollectionsFromDb()}static durableObject({schema:t,storage:n}){let r=g(n);return o({db:r,schema:t}),new e({schema:t,db:r})}get collections(){return this._rehydrateCollectionsFromDb(),this._remoteCollections}load(){this._rehydrateCollectionsFromDb();let e={};for(let t of Object.keys(this.schema)){let n=t;e[n]=this._db?.query(`SELECT * FROM obj_${t}`)??[]}return e}async connect({clientId:e,ingest:t}){console.log(`📳📳📳`,`connect from`,e,t),t.onRpcBroken(()=>{console.log(`📳📳📳`,e,`Ingest RPC broken`)});let n=t.dup();return console.log(`Subscribing client`,e),this.messageQueue.subscribe({subscriber:async e=>await n({...e,id:`${e.id}-CONNECT-${crypto.randomUUID()}`}),filter:t=>t.client!==e,label:`Client: ${e}`})}};const v=e=>e;function y(e){let t={};return t.type=e.type,t}function b(e){let t=t=>{if(t.target!==`draft-2020-12`&&t.target!==`draft-07`)throw Error(`Unsupported JSON Schema target: ${t.target}. Supported targets: draft-2020-12, draft-07`);let n={},r=[];for(let[t,i]of Object.entries(e))n[t]=y(i),i.required===!0&&r.push(t);let i={$schema:t.target===`draft-2020-12`?`https://json-schema.org/draft/2020-12/schema`:`http://json-schema.org/draft-07/schema#`,type:`object`,properties:n,additionalProperties:!1};return r.length>0&&(i.required=r),i};return{input:t,output:t}}function x(e,t,n){return e.type===`string`?typeof t==`string`?{value:t}:{issues:[{message:`Expected string for ${n}, got ${typeof t}`}]}:e.type===`number`?typeof t==`number`?{value:t}:{issues:[{message:`Expected number for ${n}, got ${typeof t}`}]}:e.type===`boolean`?typeof t==`boolean`?{value:t}:{issues:[{message:`Expected boolean for ${n}, got ${typeof t}`}]}:{issues:[{message:`Unknown property type for ${n}`}]}}function S(e,t){return n=>{if(typeof n!=`object`||!n||Array.isArray(n))return{issues:[{message:`Expected object for ${e}, got ${typeof n}`}]};let r=n,i=[];for(let[e,n]of Object.entries(t)){if(n.required&&!(e in r)){i.push({message:`Missing required field: ${e}`,path:[e]});continue}if(e in r){let t=x(n,r[e],e);if(t.issues)for(let n of t.issues)i.push({...n,path:[e,...n.path||[]]})}}return i.length>0?{issues:i}:{value:r}}}function C(e,t){return x(e,t,`property`)}const w=e=>{let t={};for(let[n,r]of Object.entries(e))t[n]={...r,"~standard":{version:1,vendor:`renku`,validate:S(n,r),jsonSchema:b(r),types:{input:void 0,output:void 0}}};return t},T={type:`string`,required:!0,unique:!0,mock:()=>crypto.randomUUID().toString()};export{h as ClientData,_ as ServerData,w as enhancedSchema,T as id,v as schema,C as validatePropertyValue};
package/dist/dom.d.ts CHANGED
@@ -1,5 +1,6 @@
1
- import { o as RenkuNode, r as FunctionComponent } from "./types-CkYeGxWb.js";
2
- import { r as Routes } from "./types-DNwmCBRS.js";
1
+ import "./signal-DXdSsSmq.js";
2
+ import { a as RenkuNode, n as FunctionComponent, s as SuspenseComponent } from "./types-CvU3wYQp.js";
3
+ import { t as Routes } from "./types-DZ5UlJbq.js";
3
4
 
4
5
  //#region src/router/router.d.ts
5
6
  declare const Router: FunctionComponent<{
@@ -9,4 +10,7 @@ declare const Router: FunctionComponent<{
9
10
  //#region src/dom/render.d.ts
10
11
  declare const render: (element: RenkuNode, domNode: HTMLElement) => void;
11
12
  //#endregion
12
- export { Router, type Routes, render };
13
+ //#region src/shared/suspense/index.d.ts
14
+ declare const Suspense: SuspenseComponent;
15
+ //#endregion
16
+ export { Router, type Routes, Suspense, render };
package/dist/dom.js CHANGED
@@ -1 +1 @@
1
- import{t as e}from"./virtual-from-jsx-kd8FG7Em.js";import"./signal-store-0zk-69gB.js";import"./effect-Bd9_A9t9.js";import{n as t,r as n}from"./update-dom-node-C7Nskg5l.js";import{t as r}from"./get-route-DL8B9jay.js";import{n as i}from"./jsx-runtime-BhjWaNaK.js";const a=async({routes:e})=>{let t=r({request:new Request(window.location.href),routes:e}),n=null;if(!t||t.api)return i(`div`,{children:`Not Found`});if(t.route instanceof Promise)n=await(await t.route).default(t.params);else if(typeof t.route==`function`)n=t.route(t.params);else return i(`div`,{children:`Not Found`});for(let e of t.layouts)e instanceof Promise?n=await(await e).default({children:n}):typeof e==`function`&&(n=await e({children:n}));return n},o=(r,i)=>{let a=e({node:r});i.replaceChildren(),Array.isArray(a)?n({domNode:i,virtualNode:a}):t({domNode:i,virtualNode:a})};export{a as Router,o as render};
1
+ import"./signal-store-B0WygwF_.js";import{r as e,t}from"./jsx-to-virtual-node-btYsRR_g.js";import"./effect-D3CPC1qb.js";import"./fragment-DkBz18dw.js";import{r as n,t as r}from"./render-dom-node-DSu3cWuF.js";import{n as i,t as a}from"./get-route-D_cS5xy0.js";import{t as o}from"./create-element-DdyoBVZS.js";import"./jsx-runtime-BJQV0ZvP.js";const s=async({routes:e})=>{let t=a({request:new Request(window.location.href),routes:e});if(!t||t.api)return o(`div`,{children:`Not Found`});let n=await i(t.route,t.params);if(n==null)return o(`div`,{children:`Not Found`});for(let e of t.layouts){let t=await i(e,{children:n});if(t==null)return o(`div`,{children:`Not Found`});n=t}return n},c=(e,i)=>{let a=t({node:e});i.replaceChildren(),Array.isArray(a)?n({domNode:i,virtualNode:a}):r({domNode:i,virtualNode:a})},l=Object.assign(({fallback:e,children:t})=>(console.log(`Suspense`,{fallback:e,children:t}),{fallback:e,children:t}),{[e]:!0});export{s as Router,l as Suspense,c as render};
@@ -1 +1 @@
1
- import{n as e}from"./signal-store-0zk-69gB.js";let t=!0;const n=new e.subtle.Watcher(()=>{t&&(t=!1,queueMicrotask(r))});function r(){t=!0;for(let e of n.getPending())e.get();n.watch()}const i=t=>{let r,i=new e.Computed(()=>{typeof r==`function`&&r();let e=t();r=typeof e==`function`?e:void 0});return n.watch(i),i.get(),()=>{n.unwatch(i),typeof r==`function`&&r(),r=void 0}};export{i as t};
1
+ import{n as e}from"./signal-store-B0WygwF_.js";let t=!0;const n=new e.subtle.Watcher(()=>{t&&(t=!1,queueMicrotask(r))});function r(){t=!0;for(let e of n.getPending())e.get();n.watch()}const i=t=>{let r,i=new e.Computed(()=>{typeof r==`function`&&r();let e=t();r=typeof e==`function`?e:void 0});return n.watch(i),i.get(),()=>{n.unwatch(i),typeof r==`function`&&r(),r=void 0}};export{i as t};
@@ -0,0 +1 @@
1
+ const e=Symbol.for(`dev.renku.fragment`),t=e=>e.children??null;t[e]=!0;export{e as n,t};
@@ -0,0 +1 @@
1
+ const e=e=>typeof e==`object`&&!!e&&`default`in e&&typeof e.default==`function`,t=async(t,n)=>{if(t instanceof Promise){let r=await t;return e(r)?r.default(n):null}if(e(t))return t.default(n);if(typeof t==`function`){let r=t(n);if(r instanceof Promise){let t=await r;return e(t)?t.default(n):t}return e(r)?r.default(n):r}return null},n=({request:t,routes:n})=>{let r=new URL(t.url).pathname,i=t.method.toUpperCase(),a=r.split(`/`).filter(Boolean),o=n.layout?[n.layout]:[],s={},c=null,l=e=>{let t=e[i];return t?typeof t==`function`?i===`GET`&&t.length<=1?{layouts:o,route:t,params:s,auth:c}:{api:t,params:s,auth:c}:i===`GET`?{layouts:o,route:t,params:s,auth:c}:null:null};if(a.length===0)return n.index?{layouts:o,route:n.index,params:s,auth:c}:typeof n[`/`]==`object`&&`index`in n[`/`]?(n[`/`].layout&&o.unshift(n[`/`].layout),{layouts:o,route:n[`/`].index,params:s,auth:c}):!1;let u=n;for(let[t,n]of a.entries()){let r=`/${n}`,d=u[r],f=e=>Object.keys(e).find(e=>e.startsWith(`/:`));if(!d){let e=f(u);if(!e&&u[`/`]&&typeof u[`/`]==`object`){let t=u[`/`];d=t[r],typeof t==`object`&&t.layout&&o.unshift(t.layout),d||(e=f(t))}if(e){let t=e.slice(2);s[t]=n,d=u[e]}}if(typeof d==`function`||d instanceof Promise||e(d))return{layouts:o,route:d,params:s,auth:c};if(typeof d==`object`){let e=d;if(e.auth&&!c&&(c=e.auth),e.layout&&o.unshift(e.layout),t===a.length-1)if(typeof e.index==`object`&&i in e.index){let t=e.index,n=l(t);if(n)return n}else if(e.index)return{layouts:o,route:e.index,params:s,auth:c};else{let t=l(e);if(t)return t}u=e}}return!1};export{t as n,n as t};
@@ -1,4 +1,4 @@
1
- import { r as Routes } from "./types-DNwmCBRS.js";
1
+ import { t as Routes } from "./types-DZ5UlJbq.js";
2
2
 
3
3
  //#region src/cloudflare/durable-object-handler.d.ts
4
4
  declare const durableObjectHandler: ({
package/dist/index.d.ts CHANGED
@@ -1,7 +1,8 @@
1
- import { a as LayoutComponent, r as FunctionComponent } from "./types-CkYeGxWb.js";
2
- import { r as Routes } from "./types-DNwmCBRS.js";
3
- import { a as RpcTarget, i as RpcStub, n as Loader, o as Signal, r as RpcCompatible, t as Context } from "./types-BOj-9dR5.js";
4
- import { t as registerServerFunction } from "./register-server-function-J_wGw2NL.js";
1
+ import { t as Signal } from "./signal-DXdSsSmq.js";
2
+ import { a as RenkuNode, i as LayoutComponent, n as FunctionComponent, o as Fragment } from "./types-CvU3wYQp.js";
3
+ import { t as Routes } from "./types-DZ5UlJbq.js";
4
+ import { a as RpcTarget, i as RpcStub, n as Loader, r as RpcCompatible, t as Context } from "./types-De3Of0g0.js";
5
+ import { t as registerServerFunction } from "./register-server-function-s7OWEfvO.js";
5
6
 
6
7
  //#region src/reactivity/create-computed.d.ts
7
8
  declare const createComputed: <T>(fn: () => T) => Signal.Computed<T>;
@@ -34,4 +35,4 @@ declare const createSignal: <T>(initialValue: T) => Signal.State<T>;
34
35
  //#region src/reactivity/effect.d.ts
35
36
  declare const effect: (callback: (() => () => void) | (() => void)) => (() => void);
36
37
  //#endregion
37
- export { type FunctionComponent, type LayoutComponent, RemoteSignal, type Routes, type RpcCompatible, RpcStub, RpcTarget, Signal, createComputed, createContext, createFetched, createLoader, createRemoteSignal, createSignal, effect, registerServerFunction };
38
+ export { Fragment, type FunctionComponent, type LayoutComponent, RemoteSignal, type RenkuNode, type Routes, type RpcCompatible, RpcStub, RpcTarget, Signal, createComputed, createContext, createFetched, createLoader, createRemoteSignal, createSignal, effect, registerServerFunction };
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{n as e}from"./signal-store-0zk-69gB.js";import{t}from"./effect-Bd9_A9t9.js";import{n,t as r}from"./create-computed-CgSmvZ_e.js";import{t as i}from"./create-loader-Bnk94Dhg.js";import{t as a}from"./create-context-OCBKqRIM.js";import{t as o}from"./register-server-function-Dsv6VBSj.js";import{RpcStub as s,RpcTarget as c}from"capnweb";const l=(e,t)=>i(()=>fetch(e).then(async e=>await t(e))),u=(e,r=!0)=>i(async()=>{let i=await e(),a=n(await i.get());return i.subscribe(e=>a.set(e)),t(()=>{r&&i.set(a.get())}),a});var d=class extends c{#e;#t=new Set;#n;constructor(e,t){super(),this.#e=e,this.#n=t}get(){return this.#e}async set(e){this.#n&&(e=this.#n(e)),this.#e=e;for(let t of this.#t)try{await t(e)}catch(e){console.error(`Error in subscriber:`,e),this.#t.delete(t)}}subscribe(e){return this.#t.add(e.dup()),new Promise((t,n)=>{e.onRpcBroken(t=>{this.#t.delete(e),n(t)})})}};export{d as RemoteSignal,s as RpcStub,c as RpcTarget,e as Signal,r as createComputed,a as createContext,l as createFetched,i as createLoader,u as createRemoteSignal,n as createSignal,t as effect,o as registerServerFunction};
1
+ import{n as e}from"./signal-store-B0WygwF_.js";import{t}from"./effect-D3CPC1qb.js";import{t as n}from"./fragment-DkBz18dw.js";import{n as r,t as i}from"./create-computed-vBhisFEL.js";import{t as a}from"./create-loader-hQHegC7I.js";import{t as o}from"./create-context-DWsglCRN.js";import{t as s}from"./register-server-function-Cz5-Gudu.js";import{RpcStub as c,RpcTarget as l}from"capnweb";const u=(e,t)=>a(()=>fetch(e).then(async e=>await t(e))),d=(e,n=!0)=>a(async()=>{let i=await e(),a=r(await i.get());return i.subscribe(e=>a.set(e)),t(()=>{n&&i.set(a.get())}),a});var f=class extends l{#e;#t=new Set;#n;constructor(e,t){super(),this.#e=e,this.#n=t}get(){return this.#e}async set(e){this.#n&&(e=this.#n(e)),this.#e=e;for(let t of this.#t)try{await t(e)}catch(e){console.error(`Error in subscriber:`,e),this.#t.delete(t)}}subscribe(e){return this.#t.add(e.dup()),new Promise((t,n)=>{e.onRpcBroken(t=>{this.#t.delete(e),n(t)})})}};export{n as Fragment,f as RemoteSignal,c as RpcStub,l as RpcTarget,e as Signal,i as createComputed,o as createContext,u as createFetched,a as createLoader,d as createRemoteSignal,r as createSignal,t as effect,s as registerServerFunction};
@@ -1,11 +1,11 @@
1
- import { i as JSX } from "./types-CkYeGxWb.js";
2
- import { t as Fragment } from "./fragment-CFpBSLG-.js";
1
+ import "./signal-DXdSsSmq.js";
2
+ import { o as Fragment, r as JSX } from "./types-CvU3wYQp.js";
3
3
 
4
4
  //#region src/jsx/jsx-dev.d.ts
5
- declare const jsxDEV: (type: JSX.ElementType, props: any, key: string | null | undefined, _isStaticChildren: boolean, _source: {
5
+ declare const jsxDEV: <T extends JSX.ElementType = JSX.ElementType, P extends Record<string, unknown> = Record<string, unknown>, K extends JSX.Key = JSX.Key>(type: T, props: P, key: K | undefined, _isStaticChildren: boolean, _source: {
6
6
  fileName: string;
7
7
  lineNumber: number;
8
8
  columnNumber: number;
9
- }, _self: unknown) => JSX.Element;
9
+ }, _self: unknown) => JSX.Element<T, P, K>;
10
10
  //#endregion
11
11
  export { Fragment, type JSX, jsxDEV };
@@ -1 +1 @@
1
- import{t as e}from"./fragment-uL1agXkn.js";const t=(e,t,n,r,i,a)=>({type:e,props:t,key:n});export{e as Fragment,t as jsxDEV};
1
+ import{t as e}from"./fragment-DkBz18dw.js";import{t}from"./create-element-DdyoBVZS.js";const n=(e,n,r,i,a,o)=>t(e,n,r);export{e as Fragment,n as jsxDEV};
File without changes
@@ -1,10 +1,7 @@
1
- import { i as JSX } from "./types-CkYeGxWb.js";
2
- import { t as Fragment } from "./fragment-CFpBSLG-.js";
1
+ import "./signal-DXdSsSmq.js";
2
+ import { o as Fragment, r as JSX } from "./types-CvU3wYQp.js";
3
3
 
4
- //#region src/jsx/jsx.d.ts
5
- declare const jsx: (type: JSX.ElementType, props: any, key: string | null | undefined) => JSX.Element;
4
+ //#region src/jsx/create-element.d.ts
5
+ declare const createElement: <T extends JSX.ElementType = JSX.ElementType, P extends Record<string, unknown> = Record<string, unknown>, K extends JSX.Key = JSX.Key>(type: T, props: P, key: K | undefined) => JSX.Element<T, P, K>;
6
6
  //#endregion
7
- //#region src/jsx/jsxs.d.ts
8
- declare const jsxs: (type: JSX.ElementType, props: any, key: string | null | undefined) => JSX.Element;
9
- //#endregion
10
- export { Fragment, type JSX, jsx, jsxs };
7
+ export { Fragment, type JSX, createElement as jsx, createElement as jsxs };
@@ -1 +1 @@
1
- import{t as e}from"./fragment-uL1agXkn.js";import{n as t,t as n}from"./jsx-runtime-BhjWaNaK.js";export{e as Fragment,t as jsx,n as jsxs};
1
+ import{t as e}from"./fragment-DkBz18dw.js";import{t}from"./create-element-DdyoBVZS.js";import"./jsx-runtime-BJQV0ZvP.js";export{e as Fragment,t as jsx,t as jsxs};
@@ -0,0 +1 @@
1
+ import{n as e,t}from"./signal-store-B0WygwF_.js";import{t as n}from"./context-store-D1Klyb_v.js";import{t as r}from"./effect-D3CPC1qb.js";import{n as i}from"./fragment-DkBz18dw.js";const a=Symbol(`renku:suspense`),o=e=>e&&typeof e.type==`function`&&e.type[a]===!0,s=({fn:e,key:i,props:a,asyncComponents:o,clientComponents:s})=>{let c=null,l=null,d=e=>{c=e,l&&l(e)},f=[],p=n.current,m=p?new Map(p):new Map;return r(()=>{t.set(f),n.current=m;let r=e(a);if(r instanceof Promise){let e=s.length+o.length+1;o.push(new Promise(t=>{r.then(n=>{t({index:e,node:n})})})),d({type:`async`,key:i,promise:r,index:e})}else d(u({node:r,asyncComponents:o,clientComponents:s}))}),{type:`effect`,value:c,addCallback:e=>{l=e}}},c=e=>typeof e==`object`&&!!e&&!Array.isArray(e)&&`type`in e&&typeof e.type==`function`&&e.type[i]===!0,l=({node:e,asyncComponents:t=[],clientComponents:n=[]})=>{let r=[];if(Array.isArray(e))for(let i of e)r.push(...l({node:i,asyncComponents:t,clientComponents:n}));else if(e)if(c(e)){let i=e.type(e.props);r.push(...l({node:i,asyncComponents:t,clientComponents:n}))}else{let i=u({node:e,asyncComponents:t,clientComponents:n});Array.isArray(i)?r.push(...i):r.push(i)}return r},u=({node:t,asyncComponents:n=[],clientComponents:r=[]})=>{if(Array.isArray(t))return l({node:t,asyncComponents:n,clientComponents:r});if(t==null)return null;if(typeof t==`string`||typeof t==`number`)return{type:`text`,value:String(t)};if(t instanceof e.Computed||t instanceof e.State)return{type:`signal`,value:t};if(typeof t==`object`){if(typeof t.type==`function`){if(o(t)){console.log(`🚨`,`Suspense`,t);let e=l({node:t.props.children,asyncComponents:n,clientComponents:r}),i=l({node:t.props.fallback,asyncComponents:n,clientComponents:r});return{type:`suspense`,key:t.key,suspended:e,fallback:i}}return s({fn:t.type,key:t.key,props:t.props,asyncComponents:n,clientComponents:r})}if(typeof t.type==`object`&&t.type.type===`client`)return r.push({path:t.type.path,name:t.type.name}),{type:`client`,key:t.key,props:t.props,path:t.type.path,name:t.type.name};if(typeof t.type==`string`){let{children:e,...i}=t.props,a=l({node:e,asyncComponents:n,clientComponents:r});return{type:`element`,key:t.key,value:t.type,props:i,children:a}}}return console.warn(`⚠️`,`UNHANDLED NODE TYPE`,t),null};export{s as n,a as r,u as t};
package/dist/otel.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ //#region src/otel/instrument-node.d.ts
2
+ declare const instrumentNode: () => void;
3
+ //#endregion
4
+ //#region src/otel/instrument-web.d.ts
5
+ declare const instrumentWeb: () => void;
6
+ //#endregion
7
+ export { instrumentNode, instrumentWeb };
package/dist/otel.js ADDED
@@ -0,0 +1 @@
1
+ import{getNodeAutoInstrumentations as e}from"@opentelemetry/auto-instrumentations-node";import{OTLPMetricExporter as t}from"@opentelemetry/exporter-metrics-otlp-http";import{OTLPTraceExporter as n}from"@opentelemetry/exporter-trace-otlp-http";import{resourceFromAttributes as r}from"@opentelemetry/resources";import{PeriodicExportingMetricReader as i}from"@opentelemetry/sdk-metrics";import{NodeSDK as a}from"@opentelemetry/sdk-node";import{ATTR_SERVICE_NAME as o}from"@opentelemetry/semantic-conventions";import{logs as s}from"@opentelemetry/api-logs";import{W3CTraceContextPropagator as c}from"@opentelemetry/core";import{OTLPLogExporter as l}from"@opentelemetry/exporter-logs-otlp-http";import{registerInstrumentations as u}from"@opentelemetry/instrumentation";import{DocumentLoadInstrumentation as d}from"@opentelemetry/instrumentation-document-load";import{XMLHttpRequestInstrumentation as f}from"@opentelemetry/instrumentation-xml-http-request";import{BatchLogRecordProcessor as p,LoggerProvider as m}from"@opentelemetry/sdk-logs";import{BatchSpanProcessor as h}from"@opentelemetry/sdk-trace-base";import{WebTracerProvider as g}from"@opentelemetry/sdk-trace-web";const _=()=>{new a({resource:r({[o]:`renku-node`}),traceExporter:new n({url:`http://localhost:4318/v1/traces`}),metricReader:new i({exporter:new t({url:`http://localhost:4318/v1/traces`})}),instrumentations:[e()]}).start(),console.log(`OTEL SDK started`)},v=()=>{let e=r({[o]:`renku-web`}),t=new m({resource:e,processors:[new p(new l({url:`http://localhost:4318/v1/logs`}))]});s.setGlobalLoggerProvider(t),s.getLogger(`renku-web`).emit({severityText:`INFO`,body:`Hello from the browser`}),new g({resource:e,spanProcessors:[new h(new n({url:`http://localhost:4318/v1/traces`}))]}).register({propagator:new c}),u({instrumentations:[new d,new f]})};export{_ as instrumentNode,v as instrumentWeb};
@@ -0,0 +1 @@
1
+ import{newHttpBatchRpcSession as e,newWebSocketRpcSession as t}from"capnweb";const n=(n,r,i=!1)=>{let a=`/@renku/rpc/${encodeURIComponent(n)}/${encodeURIComponent(r)}`;return(...n)=>(i?t(a):e(a))(...n)};export{n as t};
@@ -5,6 +5,6 @@ import { RpcStub, RpcTarget } from "capnweb";
5
5
  type ServerFunction = (...args: unknown[]) => RpcStub<RpcTarget>;
6
6
  //#endregion
7
7
  //#region src/server/register-server-function.d.ts
8
- declare const registerServerFunction: (path: string, name: string) => ServerFunction;
8
+ declare const registerServerFunction: (path: string, name: string, ws?: boolean) => ServerFunction;
9
9
  //#endregion
10
10
  export { registerServerFunction as t };
@@ -0,0 +1,14 @@
1
+ import{n as e}from"./signal-store-B0WygwF_.js";import{t}from"./jsx-to-virtual-node-btYsRR_g.js";async function*n(e){yield`<!DOCTYPE html>`;for await(let t of e)t[1]&&(yield t[1])}async function*r(e){for await(let t of e)t[0]&&(yield t[0])}async function*i(e){let n=new Set(e.map(e=>e.then(({index:e,node:n})=>({index:e,virtualNode:t({node:n,asyncComponents:[]})})).catch(e=>({error:e}))));for(;n.size>0;){let e=await Promise.race(n);for(let t of n)t.then(r=>{r===e&&n.delete(t)}).catch(r=>{r===e&&n.delete(t)});`virtualNode`in e&&(yield e)}}async function*a({key:t,val:n,trailingComma:r,output:i}){if(typeof n==`string`||typeof n==`number`){t===`className`&&(t=`class`);let e=typeof n==`number`?String(n):`"${String(n)}"`;return yield i(`${r?`,`:``}"${t}":${e}`,` ${t}="${String(n)}"`),!0}if(n instanceof e.State||n instanceof e.Computed)return yield i(`${r?`,`:``}"${t}":"${String(n.get())}"`,` ${t}="${String(n.get())}"`),!0;if(Array.isArray(n)){let a=n.map(t=>t instanceof e.State||t instanceof e.Computed?String(t.get()):String(t)).join(` `);return yield i(`${r?`,`:``}"${t}":"${a}"`,` ${t}="${a}"`),!0}}const o=new Set([`area`,`base`,`br`,`col`,`embed`,`hr`,`img`,`input`,`link`,`meta`,`source`,`track`,`wbr`]);async function*s({virtualNode:e,asyncVirtualNodes:t,leadingComma:n=!1,rscBuffer:r=[]}){let i=(e,t)=>(e&&r.push(e),[e,t]),c=(e,t)=>i(e,null);if(Array.isArray(e))for(let i of e)yield*s({virtualNode:i,asyncVirtualNodes:t,leadingComma:n,rscBuffer:r}),n=!0;else if(e?.type===`element`){yield i(`${n?`,`:``}["E","${e.value}",${e.key?`"${e.key}"`:`null`},{`,`<${e.value}`);let c=!0;for(let[t,n]of Object.entries(e.props))t!==`children`&&(yield*a({key:t,val:n,trailingComma:!c,output:i}))&&(c=!1);if(yield i(null,o.has(e.value)?` />`:`>`),e.children.length>0){let n=!0;yield i(`${c?``:`,`}"children":[`,null);for(let i of e.children)(yield*s({virtualNode:i,asyncVirtualNodes:t,leadingComma:!n,rscBuffer:r}))&&(n=!1);e.value!==`html`&&(yield i(`]`,null))}if(e.value===`body`){if(r.length>0){let e=r.join(``);r.length=0,yield[null,`<script>(self.__RSC||=[]).push(\`${e}}]]}]\`);<\/script>`]}yield[`}]]}]`,null];for await(let e of t){let n=[];yield[`
2
+ `,`<template data-id="async-template-${e.index}">`],yield*s({virtualNode:e.virtualNode,asyncVirtualNodes:t,leadingComma:!1,rscBuffer:n}),yield[null,`</template>`],yield[null,`<script>(self.__RSC||=[]).push(\`${n.join(``)}\`);<\/script>`],yield[null,`<script>
3
+ (() => {
4
+ const placeholder = document.querySelector(\`${`template[data-id="async-placeholder-${e.index}"]`}\`);
5
+ // console.log("placeholder",placeholder);
6
+ if(placeholder) {
7
+ const template = document.querySelector(\`${`template[data-id="async-template-${e.index}"]`}\`);
8
+ // console.log("template",template);
9
+ // const clone = template.content.cloneNode(true);
10
+ template && placeholder.parentNode.replaceChild(template.content, placeholder);
11
+ }
12
+ })();
13
+ <\/script>`]}}return o.has(e.value)?yield i(`}]`,null):e.value!==`html`&&e.value!==`body`?yield i(`}]`,`</${e.value}>`):yield i(null,`</${e.value}>`),!0}else if(e?.type===`text`||e?.type===`signal`){let t=e?.type===`signal`?String(e.value.get()):e.value;return yield i(`${n?`,`:``}"${t.replaceAll(`"`,`\\\\"`).replaceAll(`
14
+ `,`\\\\n`)}"`,t),!0}else if(e?.type===`async`)return yield i(`${n?`,`:``}["A",${e.key?`"${e.key}"`:`null`},${e.index}]`,`<template data-id="async-placeholder-${e.index}"></template>`),!0;else if(e?.type===`client`){yield i(`${n?`,`:``}["C",${e.key?`"${e.key}"`:`null`},"${e.path}","${e.name}",{`,`<!-- CLIENT -->`);let t=!0;for(let[n,r]of Object.entries(e.props))n!==`children`&&(yield*a({key:n,val:r,trailingComma:!t,output:c}))&&(t=!1);return yield i(`}]`,null),!0}else if(e?.type===`effect`)return yield*s({virtualNode:e.value,asyncVirtualNodes:t,leadingComma:n,rscBuffer:r})}const c=e=>{let n=[];return s({virtualNode:t({node:e,asyncComponents:n}),asyncVirtualNodes:i(n)})};export{r as n,n as r,c as t};
@@ -0,0 +1 @@
1
+ import{n as e}from"./signal-store-B0WygwF_.js";import{t}from"./jsx-to-virtual-node-btYsRR_g.js";import{t as n}from"./effect-D3CPC1qb.js";function r({domNode:e,virtualNode:t,replace:n=!1}){let r=[];for(let i of t){let t=o({domNode:e,virtualNode:i,replace:n});n=!1,r.push(t)}return r}const i=({element:t,key:r,val:i})=>{typeof i==`function`?r.startsWith(`on`)&&t.addEventListener(r.slice(2),i):typeof i==`string`||typeof i==`number`?(r===`className`&&(r=`class`),t.setAttribute(r,String(i))):i instanceof e.State||i instanceof e.Computed?n(()=>{t.setAttribute(r,String(i.get()))}):Array.isArray(i)?n(()=>{let n=i.map(t=>t instanceof e.State||t instanceof e.Computed?String(t.get()):String(t)).join(` `);t.setAttribute(r,n)}):typeof i==`boolean`&&(i?t.setAttribute(r,``):t.removeAttribute(r))},a=({domNode:e,newVirtualNode:t,oldVirtualNode:n})=>{let r=e=>e&&`key`in e?e.key??null:null;if(t&&n)if(t.type===n.type)if(t.type===`element`&&n.type===`element`)if(t.value===n.value){let s=e,c=n.props?Object.keys(n.props).filter(e=>!(e in t.props)):[];c.length&&c.map(e=>s.removeAttribute(e));for(let[e,r]of Object.entries(t.props))if(e!==`children`&&e!==`key`)if(n.props&&e in n.props){let t=n.props[e];typeof r==`function`||(Array.isArray(r)&&Array.isArray(t)?JSON.stringify(r)!==JSON.stringify(t)&&i({element:s,key:e,val:r}):n.props[e]!==r&&i({element:s,key:e,val:r}))}else i({element:s,key:e,val:r});if(t.children.length){let e=0;for(let i=0;i<t.children.length;i++){let c=t.children[i];if(c){let t=n.children?n.children[i-e]:void 0;if(t?.domNode)if(r(c)===r(t))c.domNode=t.domNode,a({domNode:t.domNode,newVirtualNode:c,oldVirtualNode:t});else{let i=r(c),o=n.children.findIndex(e=>r(e)===i),l=o>-1?n.children[o]:null;l?.domNode&&(s.moveBefore(l.domNode,t.domNode),c.domNode=l.domNode,e++,a({domNode:l.domNode,newVirtualNode:c,oldVirtualNode:l}),n.children.splice(o,1))}else c.type!==`effect`&&o({domNode:s,virtualNode:c});n.children[i-e]=null}}if(n.children.length+e>t.children.length)for(let r=t.children.length;r<n.children.length+e;r++){let t=n.children[r-e]?.domNode;t&&s.removeChild(t)}}else n.children?.length&&s.replaceChildren()}else console.log(`Different node types`),n.domNode&&o({domNode:n.domNode,virtualNode:t,replace:!0});else t.type===`text`&&n.type===`text`&&t.value!==n.value&&(t.domNode=n.domNode,t.domNode.nodeValue=t.value);else console.warn(`Different node types`),n.domNode&&o({domNode:n.domNode,virtualNode:t,replace:!0});else console.warn(`Old or new node is null`);return e};function o({domNode:e,virtualNode:s,replace:c=!1}){if(!s)return null;let l=[`svg`,`path`,`circle`];if(s.type===`element`){let t=l.includes(s.value)?document.createElementNS(`http://www.w3.org/2000/svg`,s.value):document.createElement(s.value);if(s.domNode=t,s.props.ref){let e=s.props.ref;console.log(`has ref`,e.get()),e.set(s.domNode),console.log(`assigned ref`,s.domNode),console.log(`has ref`,e.get())}for(let[e,n]of Object.entries(s.props))e!==`children`&&e!==`key`&&e!==`ref`&&i({element:t,key:e,val:n});if(s.children)for(let e of s.children)o({domNode:t,virtualNode:e});if(e===document.documentElement)document.documentElement.replaceWith(t);else{let n=e.parentNode;c&&n?n.replaceChild(t,e):e.appendChild(t)}return t}if(s.type===`async`){let n=document.createElement(`template`);return s.domNode=n,e.appendChild(n),s.promise?.then(e=>{let i=t({node:e});Array.isArray(i)?r({domNode:n,virtualNode:i,replace:!0}):o({domNode:n,virtualNode:i,replace:!0})}),n}if(s.type===`text`){let t=document.createTextNode(s.value);return s.domNode=t,e.appendChild(t),t}if(s.type===`signal`){let t=s.value,r=document.createTextNode(``);return s.domNode=r,n(()=>{r.textContent=String(t.get())}),e.appendChild(r),r}if(s.type===`suspense`){let t=document.createTextNode(``);t.textContent=`SUSPENSE`;let n=document.createElement(`div`);if(n.appendChild(t),s.domNode=n,console.log(`render suspense`,e,t),e===document.documentElement)document.documentElement.replaceWith(n);else{let t=e.parentNode;c&&t?t.replaceChild(n,e):e.appendChild(n)}return n}if(s.type===`effect`){let t=s.value,n=null,r=null,i=t=>{Array.isArray(t)?console.warn(`EFFECT virtual node is array`):n?(n=a({domNode:n,newVirtualNode:t,oldVirtualNode:r}),r=t):(n=o({domNode:e,virtualNode:t,replace:c}),r=t,t=null)};s.addCallback(i),i(t)}return null}export{a as n,r,o as t};
package/dist/server.d.ts CHANGED
@@ -1,5 +1,6 @@
1
- import { t as ClientComponent } from "./types-CkYeGxWb.js";
2
- import { t as registerServerFunction } from "./register-server-function-J_wGw2NL.js";
1
+ import "./signal-DXdSsSmq.js";
2
+ import { t as ClientComponent } from "./types-CvU3wYQp.js";
3
+ import { t as registerServerFunction } from "./register-server-function-s7OWEfvO.js";
3
4
 
4
5
  //#region src/server/register-client-reference.d.ts
5
6
  declare const registerClientReference: (_fn: () => void, path: string, name: string) => ClientComponent;
package/dist/server.js CHANGED
@@ -1 +1 @@
1
- import{t as e}from"./register-server-function-Dsv6VBSj.js";const t=(e,t,n)=>({type:`client`,path:t,name:n});export{t as registerClientReference,e as registerServerFunction};
1
+ import{t as e}from"./register-server-function-Cz5-Gudu.js";const t=(e,t,n)=>({type:`client`,path:t,name:n});export{t as registerClientReference,e as registerServerFunction};
@@ -0,0 +1,2 @@
1
+ import { Signal } from "signal-polyfill";
2
+ export { Signal as t };
@@ -0,0 +1,68 @@
1
+ import { t as Signal } from "./signal-DXdSsSmq.js";
2
+
3
+ //#region src/shared/suspense/suspense-symbol.d.ts
4
+ declare const suspenseSymbol: unique symbol;
5
+ //#endregion
6
+ //#region src/shared/suspense/types.d.ts
7
+ type SuspenseFn = (props: {
8
+ fallback: RenkuNode;
9
+ children: RenkuNode;
10
+ }) => {
11
+ fallback: RenkuNode;
12
+ children: RenkuNode;
13
+ };
14
+ type SuspenseComponent = SuspenseFn & {
15
+ [suspenseSymbol]: true;
16
+ };
17
+ //#endregion
18
+ //#region src/jsx/fragment.d.ts
19
+ declare const fragmentSymbol: unique symbol;
20
+ declare const Fragment: FragmentComponent;
21
+ //#endregion
22
+ //#region src/jsx/types.d.ts
23
+ declare namespace JSX {
24
+ type Key = string | number | null;
25
+ type ElementType = (keyof IntrinsicElements & string) | FunctionComponent<any> | ClientComponent | SuspenseComponent | FragmentComponent;
26
+ interface IntrinsicElements {
27
+ [key: string]: Record<string, unknown>;
28
+ a: {
29
+ href: "/page1" | "/page2" | `https://${string}`;
30
+ children?: RenkuNode;
31
+ class?: string | string[];
32
+ };
33
+ }
34
+ type Element<T extends ElementType = ElementType, P extends Props = Props, K extends Key = Key> = {
35
+ type: T;
36
+ props: P;
37
+ key: K;
38
+ };
39
+ }
40
+ type Primitive = string | number | boolean | null | undefined;
41
+ type AnySignal<T> = Signal.State<T> | Signal.Computed<T>;
42
+ type Prop = Primitive | Primitive[] | AnySignal<Primitive> | AnySignal<Primitive>[];
43
+ type Props = Record<string, Prop> & {
44
+ children?: RenkuNode;
45
+ };
46
+ type RenkuNode = undefined | null | boolean | number | string | JSX.Element | AnySignal<any> | RenkuNode[];
47
+ type ClientComponent = {
48
+ type: "client";
49
+ path: string;
50
+ name: string;
51
+ };
52
+ type FunctionComponent<P = Props> = (props: P & {
53
+ children?: RenkuNode;
54
+ }) => RenkuNode | Promise<RenkuNode>;
55
+ type LayoutComponent = FunctionComponent<{
56
+ _renku: {
57
+ styles: string[];
58
+ modules: string[];
59
+ };
60
+ }>;
61
+ type FragmentComponent = ((props: {
62
+ children?: RenkuNode;
63
+ key?: JSX.Key;
64
+ }) => RenkuNode) & {
65
+ [fragmentSymbol]?: boolean;
66
+ };
67
+ //#endregion
68
+ export { RenkuNode as a, LayoutComponent as i, FunctionComponent as n, Fragment as o, JSX as r, SuspenseComponent as s, ClientComponent as t };
@@ -1,5 +1,5 @@
1
- import { n as AuthFn } from "./types--K8aCg53.js";
2
- import { r as FunctionComponent } from "./types-CkYeGxWb.js";
1
+ import { n as AuthFn } from "./types-Cd8M_aYq.js";
2
+ import { n as FunctionComponent } from "./types-CvU3wYQp.js";
3
3
 
4
4
  //#region src/router/types.d.ts
5
5
  type Path = `/${string}`;
@@ -11,16 +11,17 @@ type AugmentedRequest<Params extends ParamsBase> = Request & {
11
11
  };
12
12
  type ParamsBase = Record<string, string>;
13
13
  type ApiHandler<Params extends ParamsBase, Env = unknown, ExecutionContext = unknown> = (request: AugmentedRequest<Params>, env: Env, ctx: ExecutionContext) => Response | Promise<Response>;
14
- type ApiRoute<Params extends ParamsBase, Env = unknown, ExecutionContext = unknown> = {
15
- GET?: ApiHandler<Params, Env, ExecutionContext> | RouteModule<Params>;
14
+ type MethodRoute<Params extends ParamsBase, Env = unknown, ExecutionContext = unknown> = {
15
+ GET?: ApiHandler<Params, Env, ExecutionContext> | ResolvableRouteModule<Params>;
16
16
  POST?: ApiHandler<Params, Env, ExecutionContext>;
17
17
  };
18
- type RouteModule<Params> = Promise<{
19
- default: FunctionComponent<Params>;
20
- }> | {
18
+ type RouteModule<Params> = {
21
19
  default: FunctionComponent<Params>;
22
20
  };
23
- type Route<Params extends ParamsBase = any, Env = unknown, ExecutionContext = unknown> = FunctionComponent<Params> | RouteModule<Params> | ApiRoute<Params, Env, ExecutionContext>;
21
+ type RouteModulePromise<Params> = Promise<RouteModule<Params>>;
22
+ type RouteModuleLoader<Params> = () => Promise<RouteModule<Params>>;
23
+ type ResolvableRouteModule<Params> = RouteModule<Params> | RouteModulePromise<Params> | RouteModuleLoader<Params>;
24
+ type Route<Params extends ParamsBase = any, Env = unknown, ExecutionContext = unknown> = FunctionComponent<Params> | ResolvableRouteModule<Params> | MethodRoute<Params, Env, ExecutionContext>;
24
25
  interface Routes<Env = unknown, ExecutionContext = unknown> {
25
26
  auth?: AuthFn;
26
27
  layout?: Route<any, Env, ExecutionContext>;
@@ -28,4 +29,4 @@ interface Routes<Env = unknown, ExecutionContext = unknown> {
28
29
  [path: Path]: Routes<Env, ExecutionContext> | Route<PathToParams<typeof path>, Env, ExecutionContext>;
29
30
  }
30
31
  //#endregion
31
- export { PathToParams as n, Routes as r, AugmentedRequest as t };
32
+ export { Routes as t };
@@ -1,4 +1,3 @@
1
- import { Signal } from "signal-polyfill";
2
1
  import { RpcCompatible, RpcStub as RpcStub$1, RpcTarget as RpcTarget$1 } from "capnweb";
3
2
 
4
3
  //#region src/reactivity/types.d.ts
@@ -20,4 +19,4 @@ type Context<T> = {
20
19
  get: () => T;
21
20
  };
22
21
  //#endregion
23
- export { RpcTarget$1 as a, RpcStub$1 as i, Loader as n, Signal as o, RpcCompatible as r, Context as t };
22
+ export { RpcTarget$1 as a, RpcStub$1 as i, Loader as n, RpcCompatible as r, Context as t };
package/dist/ui.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- import { r as FunctionComponent } from "./types-CkYeGxWb.js";
1
+ import "./signal-DXdSsSmq.js";
2
+ import { n as FunctionComponent } from "./types-CvU3wYQp.js";
2
3
 
3
4
  //#region src/ui/types.d.ts
4
5
  type Size = "sm" | "md" | "lg";
package/dist/ui.js CHANGED
@@ -1 +1 @@
1
- import"./signal-store-0zk-69gB.js";import{n as e,t}from"./create-computed-CgSmvZ_e.js";import{n}from"./jsx-runtime-BhjWaNaK.js";import{t as r}from"./create-context-OCBKqRIM.js";const i=r(),a=({children:e})=>{let{isOpen:t,toggle:r}=i.get();return n(`button`,{onclick:r,class:[t.get()?`text-green-500`:`text-red-500`],children:e})},o=r(),s={Root:({children:t,multiple:r=!1})=>{let i=e(null);return o.set({openPanel:i,multiple:r}),n(`div`,{class:[`flex flex-col`],children:t})},Item:({children:r})=>{let a=Symbol(`AccordionItem`),{openPanel:s,multiple:c}=o.get(),l=e(!1),u=t(()=>c?l.get():a===s.get());return i.set({isOpen:u,toggle:()=>{l.set(!l.get()),s.set(a)}}),n(`div`,{class:[`flex flex-col`],children:r})},Header:a,Panel:({children:e})=>{let{isOpen:t}=i.get();return n(`div`,{class:[t.get()?`block`:`hidden`],children:e})}},c={primary:{solid:`border border-primary-foreground bg-primary-foreground text-primary-background transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-foreground disabled:pointer-events-none disabled:opacity-50`,outline:`border border-primary-foreground bg-transparent text-primary-foreground transition-colors hover:bg-primary-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-foreground disabled:pointer-events-none disabled:opacity-50`,soft:`border border-transparent bg-primary-background text-primary-foreground transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-foreground disabled:pointer-events-none disabled:opacity-50`,ghost:`border border-transparent bg-transparent text-primary-foreground transition-colors hover:bg-primary-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-foreground disabled:pointer-events-none disabled:opacity-50`},secondary:{solid:`border border-secondary-foreground bg-secondary-foreground text-secondary-background transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-secondary-foreground disabled:pointer-events-none disabled:opacity-50`,outline:`border border-secondary-foreground bg-transparent text-secondary-foreground transition-colors hover:bg-secondary-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-secondary-foreground disabled:pointer-events-none disabled:opacity-50`,soft:`border border-transparent bg-secondary-background text-secondary-foreground transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-secondary-foreground disabled:pointer-events-none disabled:opacity-50`,ghost:`border border-transparent bg-transparent text-secondary-foreground transition-colors hover:bg-secondary-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-secondary-foreground disabled:pointer-events-none disabled:opacity-50`},info:{solid:`border border-info-foreground bg-info-foreground text-info-background transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-info-foreground disabled:pointer-events-none disabled:opacity-50`,outline:`border border-info-foreground bg-transparent text-info-foreground transition-colors hover:bg-info-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-info-foreground disabled:pointer-events-none disabled:opacity-50`,soft:`border border-transparent bg-info-background text-info-foreground transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-info-foreground disabled:pointer-events-none disabled:opacity-50`,ghost:`border border-transparent bg-transparent text-info-foreground transition-colors hover:bg-info-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-info-foreground disabled:pointer-events-none disabled:opacity-50`},success:{solid:`border border-success-foreground bg-success-foreground text-success-background transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-success-foreground disabled:pointer-events-none disabled:opacity-50`,outline:`border border-success-foreground bg-transparent text-success-foreground transition-colors hover:bg-success-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-success-foreground disabled:pointer-events-none disabled:opacity-50`,soft:`border border-transparent bg-success-background text-success-foreground transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-success-foreground disabled:pointer-events-none disabled:opacity-50`,ghost:`border border-transparent bg-transparent text-success-foreground transition-colors hover:bg-success-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-success-foreground disabled:pointer-events-none disabled:opacity-50`},warning:{solid:`border border-warning-foreground bg-warning-foreground text-warning-background transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-warning-foreground disabled:pointer-events-none disabled:opacity-50`,outline:`border border-warning-foreground bg-transparent text-warning-foreground transition-colors hover:bg-warning-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-warning-foreground disabled:pointer-events-none disabled:opacity-50`,soft:`border border-transparent bg-warning-background text-warning-foreground transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-warning-foreground disabled:pointer-events-none disabled:opacity-50`,ghost:`border border-transparent bg-transparent text-warning-foreground transition-colors hover:bg-warning-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-warning-foreground disabled:pointer-events-none disabled:opacity-50`},danger:{solid:`border border-danger-foreground bg-danger-foreground text-danger-background transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-danger-foreground disabled:pointer-events-none disabled:opacity-50`,outline:`border border-danger-foreground bg-transparent text-danger-foreground transition-colors hover:bg-danger-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-danger-foreground disabled:pointer-events-none disabled:opacity-50`,soft:`border border-transparent bg-danger-background text-danger-foreground transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-danger-foreground disabled:pointer-events-none disabled:opacity-50`,ghost:`border border-transparent bg-transparent text-danger-foreground transition-colors hover:bg-danger-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-danger-foreground disabled:pointer-events-none disabled:opacity-50`}},l={sm:`px-3 py-1.5 text-sm font-medium rounded`,md:`px-4 py-2 text-base font-medium rounded-md`,lg:`px-6 py-3 text-lg font-medium rounded-lg`},u=({size:e=`md`,variant:t=`solid`,color:r=`primary`,pill:i=!1,children:a})=>{let o=c[r][t],s=l[e];return n(`span`,{class:[`inline-flex items-center gap-1 font-medium`,`align-middle leading-none`,s,o,i?`rounded-full`:`rounded-md`],children:a})},d={primary:{solid:`border border-primary-foreground bg-primary-foreground text-primary-background transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-foreground disabled:pointer-events-none disabled:opacity-50`,outline:`border border-primary-foreground bg-transparent text-primary-foreground transition-colors hover:bg-primary-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-foreground disabled:pointer-events-none disabled:opacity-50`,soft:`border border-transparent bg-primary-background text-primary-foreground transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-foreground disabled:pointer-events-none disabled:opacity-50`,ghost:`border border-transparent bg-transparent text-primary-foreground transition-colors hover:bg-primary-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-foreground disabled:pointer-events-none disabled:opacity-50`},secondary:{solid:`border border-secondary-foreground bg-secondary-foreground text-secondary-background transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-secondary-foreground disabled:pointer-events-none disabled:opacity-50`,outline:`border border-secondary-foreground bg-transparent text-secondary-foreground transition-colors hover:bg-secondary-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-secondary-foreground disabled:pointer-events-none disabled:opacity-50`,soft:`border border-transparent bg-secondary-background text-secondary-foreground transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-secondary-foreground disabled:pointer-events-none disabled:opacity-50`,ghost:`border border-transparent bg-transparent text-secondary-foreground transition-colors hover:bg-secondary-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-secondary-foreground disabled:pointer-events-none disabled:opacity-50`},info:{solid:`border border-info-foreground bg-info-foreground text-info-background transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-info-foreground disabled:pointer-events-none disabled:opacity-50`,outline:`border border-info-foreground bg-transparent text-info-foreground transition-colors hover:bg-info-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-info-foreground disabled:pointer-events-none disabled:opacity-50`,soft:`border border-transparent bg-info-background text-info-foreground transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-info-foreground disabled:pointer-events-none disabled:opacity-50`,ghost:`border border-transparent bg-transparent text-info-foreground transition-colors hover:bg-info-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-info-foreground disabled:pointer-events-none disabled:opacity-50`},success:{solid:`border border-success-foreground bg-success-foreground text-success-background transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-success-foreground disabled:pointer-events-none disabled:opacity-50`,outline:`border border-success-foreground bg-transparent text-success-foreground transition-colors hover:bg-success-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-success-foreground disabled:pointer-events-none disabled:opacity-50`,soft:`border border-transparent bg-success-background text-success-foreground transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-success-foreground disabled:pointer-events-none disabled:opacity-50`,ghost:`border border-transparent bg-transparent text-success-foreground transition-colors hover:bg-success-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-success-foreground disabled:pointer-events-none disabled:opacity-50`},warning:{solid:`border border-warning-foreground bg-warning-foreground text-warning-background transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-warning-foreground disabled:pointer-events-none disabled:opacity-50`,outline:`border border-warning-foreground bg-transparent text-warning-foreground transition-colors hover:bg-warning-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-warning-foreground disabled:pointer-events-none disabled:opacity-50`,soft:`border border-transparent bg-warning-background text-warning-foreground transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-warning-foreground disabled:pointer-events-none disabled:opacity-50`,ghost:`border border-transparent bg-transparent text-warning-foreground transition-colors hover:bg-warning-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-warning-foreground disabled:pointer-events-none disabled:opacity-50`},danger:{solid:`border border-danger-foreground bg-danger-foreground text-danger-background transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-danger-foreground disabled:pointer-events-none disabled:opacity-50`,outline:`border border-danger-foreground bg-transparent text-danger-foreground transition-colors hover:bg-danger-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-danger-foreground disabled:pointer-events-none disabled:opacity-50`,soft:`border border-transparent bg-danger-background text-danger-foreground transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-danger-foreground disabled:pointer-events-none disabled:opacity-50`,ghost:`border border-transparent bg-transparent text-danger-foreground transition-colors hover:bg-danger-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-danger-foreground disabled:pointer-events-none disabled:opacity-50`}},f={sm:`px-3 py-1.5 text-sm font-medium rounded`,md:`px-4 py-2 text-base font-medium rounded-md`,lg:`px-6 py-3 text-lg font-medium rounded-lg`},p=({color:e=`primary`,size:t=`md`,variant:r=`solid`,children:i,...a})=>{let o=d[e][r],s=f[t];return n(`button`,{class:[`inline-flex items-center justify-center font-medium transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50`,s,o],...a,children:i})},m={primary:{solid:`border border-primary-foreground bg-primary-foreground text-primary-background transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-foreground disabled:pointer-events-none disabled:opacity-50`,outline:`border border-primary-foreground bg-transparent text-primary-foreground transition-colors hover:bg-primary-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-foreground disabled:pointer-events-none disabled:opacity-50`,soft:`border border-transparent bg-primary-background text-primary-foreground transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-foreground disabled:pointer-events-none disabled:opacity-50`,ghost:`border border-transparent bg-transparent text-primary-foreground transition-colors hover:bg-primary-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-foreground disabled:pointer-events-none disabled:opacity-50`},secondary:{solid:`border border-secondary-foreground bg-secondary-foreground text-secondary-background transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-secondary-foreground disabled:pointer-events-none disabled:opacity-50`,outline:`border border-secondary-foreground bg-transparent text-secondary-foreground transition-colors hover:bg-secondary-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-secondary-foreground disabled:pointer-events-none disabled:opacity-50`,soft:`border border-transparent bg-secondary-background text-secondary-foreground transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-secondary-foreground disabled:pointer-events-none disabled:opacity-50`,ghost:`border border-transparent bg-transparent text-secondary-foreground transition-colors hover:bg-secondary-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-secondary-foreground disabled:pointer-events-none disabled:opacity-50`},info:{solid:`border border-info-foreground bg-info-foreground text-info-background transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-info-foreground disabled:pointer-events-none disabled:opacity-50`,outline:`border border-info-foreground bg-transparent text-info-foreground transition-colors hover:bg-info-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-info-foreground disabled:pointer-events-none disabled:opacity-50`,soft:`border border-transparent bg-info-background text-info-foreground transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-info-foreground disabled:pointer-events-none disabled:opacity-50`,ghost:`border border-transparent bg-transparent text-info-foreground transition-colors hover:bg-info-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-info-foreground disabled:pointer-events-none disabled:opacity-50`},success:{solid:`border border-success-foreground bg-success-foreground text-success-background transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-success-foreground disabled:pointer-events-none disabled:opacity-50`,outline:`border border-success-foreground bg-transparent text-success-foreground transition-colors hover:bg-success-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-success-foreground disabled:pointer-events-none disabled:opacity-50`,soft:`border border-transparent bg-success-background text-success-foreground transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-success-foreground disabled:pointer-events-none disabled:opacity-50`,ghost:`border border-transparent bg-transparent text-success-foreground transition-colors hover:bg-success-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-success-foreground disabled:pointer-events-none disabled:opacity-50`},warning:{solid:`border border-warning-foreground bg-warning-foreground text-warning-background transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-warning-foreground disabled:pointer-events-none disabled:opacity-50`,outline:`border border-warning-foreground bg-transparent text-warning-foreground transition-colors hover:bg-warning-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-warning-foreground disabled:pointer-events-none disabled:opacity-50`,soft:`border border-transparent bg-warning-background text-warning-foreground transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-warning-foreground disabled:pointer-events-none disabled:opacity-50`,ghost:`border border-transparent bg-transparent text-warning-foreground transition-colors hover:bg-warning-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-warning-foreground disabled:pointer-events-none disabled:opacity-50`},danger:{solid:`border border-danger-foreground bg-danger-foreground text-danger-background transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-danger-foreground disabled:pointer-events-none disabled:opacity-50`,outline:`border border-danger-foreground bg-transparent text-danger-foreground transition-colors hover:bg-danger-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-danger-foreground disabled:pointer-events-none disabled:opacity-50`,soft:`border border-transparent bg-danger-background text-danger-foreground transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-danger-foreground disabled:pointer-events-none disabled:opacity-50`,ghost:`border border-transparent bg-transparent text-danger-foreground transition-colors hover:bg-danger-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-danger-foreground disabled:pointer-events-none disabled:opacity-50`}},h={sm:`px-3 py-1.5 text-sm font-medium rounded`,md:`px-4 py-2 text-base font-medium rounded-md`,lg:`px-6 py-3 text-lg font-medium rounded-lg`},g=({size:e=`md`,variant:t=`solid`,color:r=`primary`,...i})=>{let a=m[r][t],o=h[e];return n(`input`,{class:[`inline-flex items-center gap-1 font-medium`,`align-middle leading-none`,o,a],...i})},_={primary:{solid:`border border-primary-foreground bg-primary-foreground text-primary-background transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-foreground disabled:pointer-events-none disabled:opacity-50`,outline:`border border-primary-foreground bg-transparent text-primary-foreground transition-colors hover:bg-primary-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-foreground disabled:pointer-events-none disabled:opacity-50`,soft:`border border-transparent bg-primary-background text-primary-foreground transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-foreground disabled:pointer-events-none disabled:opacity-50`,ghost:`border border-transparent bg-transparent text-primary-foreground transition-colors hover:bg-primary-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-foreground disabled:pointer-events-none disabled:opacity-50`},secondary:{solid:`border border-secondary-foreground bg-secondary-foreground text-secondary-background transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-secondary-foreground disabled:pointer-events-none disabled:opacity-50`,outline:`border border-secondary-foreground bg-transparent text-secondary-foreground transition-colors hover:bg-secondary-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-secondary-foreground disabled:pointer-events-none disabled:opacity-50`,soft:`border border-transparent bg-secondary-background text-secondary-foreground transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-secondary-foreground disabled:pointer-events-none disabled:opacity-50`,ghost:`border border-transparent bg-transparent text-secondary-foreground transition-colors hover:bg-secondary-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-secondary-foreground disabled:pointer-events-none disabled:opacity-50`},info:{solid:`border border-info-foreground bg-info-foreground text-info-background transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-info-foreground disabled:pointer-events-none disabled:opacity-50`,outline:`border border-info-foreground bg-transparent text-info-foreground transition-colors hover:bg-info-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-info-foreground disabled:pointer-events-none disabled:opacity-50`,soft:`border border-transparent bg-info-background text-info-foreground transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-info-foreground disabled:pointer-events-none disabled:opacity-50`,ghost:`border border-transparent bg-transparent text-info-foreground transition-colors hover:bg-info-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-info-foreground disabled:pointer-events-none disabled:opacity-50`},success:{solid:`border border-success-foreground bg-success-foreground text-success-background transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-success-foreground disabled:pointer-events-none disabled:opacity-50`,outline:`border border-success-foreground bg-transparent text-success-foreground transition-colors hover:bg-success-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-success-foreground disabled:pointer-events-none disabled:opacity-50`,soft:`border border-transparent bg-success-background text-success-foreground transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-success-foreground disabled:pointer-events-none disabled:opacity-50`,ghost:`border border-transparent bg-transparent text-success-foreground transition-colors hover:bg-success-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-success-foreground disabled:pointer-events-none disabled:opacity-50`},warning:{solid:`border border-warning-foreground bg-warning-foreground text-warning-background transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-warning-foreground disabled:pointer-events-none disabled:opacity-50`,outline:`border border-warning-foreground bg-transparent text-warning-foreground transition-colors hover:bg-warning-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-warning-foreground disabled:pointer-events-none disabled:opacity-50`,soft:`border border-transparent bg-warning-background text-warning-foreground transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-warning-foreground disabled:pointer-events-none disabled:opacity-50`,ghost:`border border-transparent bg-transparent text-warning-foreground transition-colors hover:bg-warning-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-warning-foreground disabled:pointer-events-none disabled:opacity-50`},danger:{solid:`border border-danger-foreground bg-danger-foreground text-danger-background transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-danger-foreground disabled:pointer-events-none disabled:opacity-50`,outline:`border border-danger-foreground bg-transparent text-danger-foreground transition-colors hover:bg-danger-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-danger-foreground disabled:pointer-events-none disabled:opacity-50`,soft:`border border-transparent bg-danger-background text-danger-foreground transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-danger-foreground disabled:pointer-events-none disabled:opacity-50`,ghost:`border border-transparent bg-transparent text-danger-foreground transition-colors hover:bg-danger-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-danger-foreground disabled:pointer-events-none disabled:opacity-50`}},v={sm:`px-3 py-1.5 text-sm font-medium rounded`,md:`px-4 py-2 text-base font-medium rounded-md`,lg:`px-6 py-3 text-lg font-medium rounded-lg`},y=({size:e=`md`,variant:t=`solid`,color:r=`primary`,...i})=>{let a=_[r][t],o=v[e];return n(`textarea`,{class:[`inline-flex items-center gap-1 font-medium`,`align-middle leading-none`,o,a],...i})},b=({class:e,children:t,...r})=>n(`form`,{class:[`inline-flex items-center gap-1 font-medium`,`align-middle leading-none`,e],...r,children:t});export{s as Accordion,u as Badge,p as Button,b as Form,g as Input,y as Textarea};
1
+ import"./signal-store-B0WygwF_.js";import"./fragment-DkBz18dw.js";import{n as e,t}from"./create-computed-vBhisFEL.js";import{t as n}from"./create-element-DdyoBVZS.js";import"./jsx-runtime-BJQV0ZvP.js";import{t as r}from"./create-context-DWsglCRN.js";const i=r(),a=({children:e})=>{let{isOpen:t,toggle:r}=i.get();return n(`button`,{onclick:r,class:[t.get()?`text-green-500`:`text-red-500`],children:e})},o=r(),s={Root:({children:t,multiple:r=!1})=>{let i=e(null);return o.set({openPanel:i,multiple:r}),n(`div`,{class:[`flex flex-col`],children:t})},Item:({children:r})=>{let a=Symbol(`AccordionItem`),{openPanel:s,multiple:c}=o.get(),l=e(!1),u=t(()=>c?l.get():a===s.get());return i.set({isOpen:u,toggle:()=>{l.set(!l.get()),s.set(a)}}),n(`div`,{class:[`flex flex-col`],children:r})},Header:a,Panel:({children:e})=>{let{isOpen:t}=i.get();return n(`div`,{class:[t.get()?`block`:`hidden`],children:e})}},c={primary:{solid:`border border-primary-foreground bg-primary-foreground text-primary-background transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-foreground disabled:pointer-events-none disabled:opacity-50`,outline:`border border-primary-foreground bg-transparent text-primary-foreground transition-colors hover:bg-primary-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-foreground disabled:pointer-events-none disabled:opacity-50`,soft:`border border-transparent bg-primary-background text-primary-foreground transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-foreground disabled:pointer-events-none disabled:opacity-50`,ghost:`border border-transparent bg-transparent text-primary-foreground transition-colors hover:bg-primary-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-foreground disabled:pointer-events-none disabled:opacity-50`},secondary:{solid:`border border-secondary-foreground bg-secondary-foreground text-secondary-background transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-secondary-foreground disabled:pointer-events-none disabled:opacity-50`,outline:`border border-secondary-foreground bg-transparent text-secondary-foreground transition-colors hover:bg-secondary-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-secondary-foreground disabled:pointer-events-none disabled:opacity-50`,soft:`border border-transparent bg-secondary-background text-secondary-foreground transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-secondary-foreground disabled:pointer-events-none disabled:opacity-50`,ghost:`border border-transparent bg-transparent text-secondary-foreground transition-colors hover:bg-secondary-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-secondary-foreground disabled:pointer-events-none disabled:opacity-50`},info:{solid:`border border-info-foreground bg-info-foreground text-info-background transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-info-foreground disabled:pointer-events-none disabled:opacity-50`,outline:`border border-info-foreground bg-transparent text-info-foreground transition-colors hover:bg-info-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-info-foreground disabled:pointer-events-none disabled:opacity-50`,soft:`border border-transparent bg-info-background text-info-foreground transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-info-foreground disabled:pointer-events-none disabled:opacity-50`,ghost:`border border-transparent bg-transparent text-info-foreground transition-colors hover:bg-info-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-info-foreground disabled:pointer-events-none disabled:opacity-50`},success:{solid:`border border-success-foreground bg-success-foreground text-success-background transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-success-foreground disabled:pointer-events-none disabled:opacity-50`,outline:`border border-success-foreground bg-transparent text-success-foreground transition-colors hover:bg-success-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-success-foreground disabled:pointer-events-none disabled:opacity-50`,soft:`border border-transparent bg-success-background text-success-foreground transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-success-foreground disabled:pointer-events-none disabled:opacity-50`,ghost:`border border-transparent bg-transparent text-success-foreground transition-colors hover:bg-success-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-success-foreground disabled:pointer-events-none disabled:opacity-50`},warning:{solid:`border border-warning-foreground bg-warning-foreground text-warning-background transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-warning-foreground disabled:pointer-events-none disabled:opacity-50`,outline:`border border-warning-foreground bg-transparent text-warning-foreground transition-colors hover:bg-warning-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-warning-foreground disabled:pointer-events-none disabled:opacity-50`,soft:`border border-transparent bg-warning-background text-warning-foreground transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-warning-foreground disabled:pointer-events-none disabled:opacity-50`,ghost:`border border-transparent bg-transparent text-warning-foreground transition-colors hover:bg-warning-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-warning-foreground disabled:pointer-events-none disabled:opacity-50`},danger:{solid:`border border-danger-foreground bg-danger-foreground text-danger-background transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-danger-foreground disabled:pointer-events-none disabled:opacity-50`,outline:`border border-danger-foreground bg-transparent text-danger-foreground transition-colors hover:bg-danger-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-danger-foreground disabled:pointer-events-none disabled:opacity-50`,soft:`border border-transparent bg-danger-background text-danger-foreground transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-danger-foreground disabled:pointer-events-none disabled:opacity-50`,ghost:`border border-transparent bg-transparent text-danger-foreground transition-colors hover:bg-danger-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-danger-foreground disabled:pointer-events-none disabled:opacity-50`}},l={sm:`px-3 py-1.5 text-sm font-medium rounded`,md:`px-4 py-2 text-base font-medium rounded-md`,lg:`px-6 py-3 text-lg font-medium rounded-lg`},u=({size:e=`md`,variant:t=`solid`,color:r=`primary`,pill:i=!1,children:a})=>{let o=c[r][t],s=l[e];return n(`span`,{class:[`inline-flex items-center gap-1 font-medium`,`align-middle leading-none`,s,o,i?`rounded-full`:`rounded-md`],children:a})},d={primary:{solid:`border border-primary-foreground bg-primary-foreground text-primary-background transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-foreground disabled:pointer-events-none disabled:opacity-50`,outline:`border border-primary-foreground bg-transparent text-primary-foreground transition-colors hover:bg-primary-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-foreground disabled:pointer-events-none disabled:opacity-50`,soft:`border border-transparent bg-primary-background text-primary-foreground transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-foreground disabled:pointer-events-none disabled:opacity-50`,ghost:`border border-transparent bg-transparent text-primary-foreground transition-colors hover:bg-primary-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-foreground disabled:pointer-events-none disabled:opacity-50`},secondary:{solid:`border border-secondary-foreground bg-secondary-foreground text-secondary-background transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-secondary-foreground disabled:pointer-events-none disabled:opacity-50`,outline:`border border-secondary-foreground bg-transparent text-secondary-foreground transition-colors hover:bg-secondary-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-secondary-foreground disabled:pointer-events-none disabled:opacity-50`,soft:`border border-transparent bg-secondary-background text-secondary-foreground transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-secondary-foreground disabled:pointer-events-none disabled:opacity-50`,ghost:`border border-transparent bg-transparent text-secondary-foreground transition-colors hover:bg-secondary-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-secondary-foreground disabled:pointer-events-none disabled:opacity-50`},info:{solid:`border border-info-foreground bg-info-foreground text-info-background transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-info-foreground disabled:pointer-events-none disabled:opacity-50`,outline:`border border-info-foreground bg-transparent text-info-foreground transition-colors hover:bg-info-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-info-foreground disabled:pointer-events-none disabled:opacity-50`,soft:`border border-transparent bg-info-background text-info-foreground transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-info-foreground disabled:pointer-events-none disabled:opacity-50`,ghost:`border border-transparent bg-transparent text-info-foreground transition-colors hover:bg-info-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-info-foreground disabled:pointer-events-none disabled:opacity-50`},success:{solid:`border border-success-foreground bg-success-foreground text-success-background transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-success-foreground disabled:pointer-events-none disabled:opacity-50`,outline:`border border-success-foreground bg-transparent text-success-foreground transition-colors hover:bg-success-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-success-foreground disabled:pointer-events-none disabled:opacity-50`,soft:`border border-transparent bg-success-background text-success-foreground transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-success-foreground disabled:pointer-events-none disabled:opacity-50`,ghost:`border border-transparent bg-transparent text-success-foreground transition-colors hover:bg-success-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-success-foreground disabled:pointer-events-none disabled:opacity-50`},warning:{solid:`border border-warning-foreground bg-warning-foreground text-warning-background transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-warning-foreground disabled:pointer-events-none disabled:opacity-50`,outline:`border border-warning-foreground bg-transparent text-warning-foreground transition-colors hover:bg-warning-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-warning-foreground disabled:pointer-events-none disabled:opacity-50`,soft:`border border-transparent bg-warning-background text-warning-foreground transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-warning-foreground disabled:pointer-events-none disabled:opacity-50`,ghost:`border border-transparent bg-transparent text-warning-foreground transition-colors hover:bg-warning-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-warning-foreground disabled:pointer-events-none disabled:opacity-50`},danger:{solid:`border border-danger-foreground bg-danger-foreground text-danger-background transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-danger-foreground disabled:pointer-events-none disabled:opacity-50`,outline:`border border-danger-foreground bg-transparent text-danger-foreground transition-colors hover:bg-danger-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-danger-foreground disabled:pointer-events-none disabled:opacity-50`,soft:`border border-transparent bg-danger-background text-danger-foreground transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-danger-foreground disabled:pointer-events-none disabled:opacity-50`,ghost:`border border-transparent bg-transparent text-danger-foreground transition-colors hover:bg-danger-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-danger-foreground disabled:pointer-events-none disabled:opacity-50`}},f={sm:`px-3 py-1.5 text-sm font-medium rounded`,md:`px-4 py-2 text-base font-medium rounded-md`,lg:`px-6 py-3 text-lg font-medium rounded-lg`},p=({color:e=`primary`,size:t=`md`,variant:r=`solid`,children:i,...a})=>{let o=d[e][r],s=f[t];return n(`button`,{class:[`inline-flex items-center justify-center font-medium transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50`,s,o],...a,children:i})},m={primary:{solid:`border border-primary-foreground bg-primary-foreground text-primary-background transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-foreground disabled:pointer-events-none disabled:opacity-50`,outline:`border border-primary-foreground bg-transparent text-primary-foreground transition-colors hover:bg-primary-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-foreground disabled:pointer-events-none disabled:opacity-50`,soft:`border border-transparent bg-primary-background text-primary-foreground transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-foreground disabled:pointer-events-none disabled:opacity-50`,ghost:`border border-transparent bg-transparent text-primary-foreground transition-colors hover:bg-primary-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-foreground disabled:pointer-events-none disabled:opacity-50`},secondary:{solid:`border border-secondary-foreground bg-secondary-foreground text-secondary-background transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-secondary-foreground disabled:pointer-events-none disabled:opacity-50`,outline:`border border-secondary-foreground bg-transparent text-secondary-foreground transition-colors hover:bg-secondary-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-secondary-foreground disabled:pointer-events-none disabled:opacity-50`,soft:`border border-transparent bg-secondary-background text-secondary-foreground transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-secondary-foreground disabled:pointer-events-none disabled:opacity-50`,ghost:`border border-transparent bg-transparent text-secondary-foreground transition-colors hover:bg-secondary-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-secondary-foreground disabled:pointer-events-none disabled:opacity-50`},info:{solid:`border border-info-foreground bg-info-foreground text-info-background transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-info-foreground disabled:pointer-events-none disabled:opacity-50`,outline:`border border-info-foreground bg-transparent text-info-foreground transition-colors hover:bg-info-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-info-foreground disabled:pointer-events-none disabled:opacity-50`,soft:`border border-transparent bg-info-background text-info-foreground transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-info-foreground disabled:pointer-events-none disabled:opacity-50`,ghost:`border border-transparent bg-transparent text-info-foreground transition-colors hover:bg-info-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-info-foreground disabled:pointer-events-none disabled:opacity-50`},success:{solid:`border border-success-foreground bg-success-foreground text-success-background transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-success-foreground disabled:pointer-events-none disabled:opacity-50`,outline:`border border-success-foreground bg-transparent text-success-foreground transition-colors hover:bg-success-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-success-foreground disabled:pointer-events-none disabled:opacity-50`,soft:`border border-transparent bg-success-background text-success-foreground transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-success-foreground disabled:pointer-events-none disabled:opacity-50`,ghost:`border border-transparent bg-transparent text-success-foreground transition-colors hover:bg-success-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-success-foreground disabled:pointer-events-none disabled:opacity-50`},warning:{solid:`border border-warning-foreground bg-warning-foreground text-warning-background transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-warning-foreground disabled:pointer-events-none disabled:opacity-50`,outline:`border border-warning-foreground bg-transparent text-warning-foreground transition-colors hover:bg-warning-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-warning-foreground disabled:pointer-events-none disabled:opacity-50`,soft:`border border-transparent bg-warning-background text-warning-foreground transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-warning-foreground disabled:pointer-events-none disabled:opacity-50`,ghost:`border border-transparent bg-transparent text-warning-foreground transition-colors hover:bg-warning-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-warning-foreground disabled:pointer-events-none disabled:opacity-50`},danger:{solid:`border border-danger-foreground bg-danger-foreground text-danger-background transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-danger-foreground disabled:pointer-events-none disabled:opacity-50`,outline:`border border-danger-foreground bg-transparent text-danger-foreground transition-colors hover:bg-danger-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-danger-foreground disabled:pointer-events-none disabled:opacity-50`,soft:`border border-transparent bg-danger-background text-danger-foreground transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-danger-foreground disabled:pointer-events-none disabled:opacity-50`,ghost:`border border-transparent bg-transparent text-danger-foreground transition-colors hover:bg-danger-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-danger-foreground disabled:pointer-events-none disabled:opacity-50`}},h={sm:`px-3 py-1.5 text-sm font-medium rounded`,md:`px-4 py-2 text-base font-medium rounded-md`,lg:`px-6 py-3 text-lg font-medium rounded-lg`},g=({size:e=`md`,variant:t=`solid`,color:r=`primary`,...i})=>{let a=m[r][t],o=h[e];return n(`input`,{class:[`inline-flex items-center gap-1 font-medium`,`align-middle leading-none`,o,a],...i})},_={primary:{solid:`border border-primary-foreground bg-primary-foreground text-primary-background transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-foreground disabled:pointer-events-none disabled:opacity-50`,outline:`border border-primary-foreground bg-transparent text-primary-foreground transition-colors hover:bg-primary-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-foreground disabled:pointer-events-none disabled:opacity-50`,soft:`border border-transparent bg-primary-background text-primary-foreground transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-foreground disabled:pointer-events-none disabled:opacity-50`,ghost:`border border-transparent bg-transparent text-primary-foreground transition-colors hover:bg-primary-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-foreground disabled:pointer-events-none disabled:opacity-50`},secondary:{solid:`border border-secondary-foreground bg-secondary-foreground text-secondary-background transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-secondary-foreground disabled:pointer-events-none disabled:opacity-50`,outline:`border border-secondary-foreground bg-transparent text-secondary-foreground transition-colors hover:bg-secondary-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-secondary-foreground disabled:pointer-events-none disabled:opacity-50`,soft:`border border-transparent bg-secondary-background text-secondary-foreground transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-secondary-foreground disabled:pointer-events-none disabled:opacity-50`,ghost:`border border-transparent bg-transparent text-secondary-foreground transition-colors hover:bg-secondary-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-secondary-foreground disabled:pointer-events-none disabled:opacity-50`},info:{solid:`border border-info-foreground bg-info-foreground text-info-background transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-info-foreground disabled:pointer-events-none disabled:opacity-50`,outline:`border border-info-foreground bg-transparent text-info-foreground transition-colors hover:bg-info-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-info-foreground disabled:pointer-events-none disabled:opacity-50`,soft:`border border-transparent bg-info-background text-info-foreground transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-info-foreground disabled:pointer-events-none disabled:opacity-50`,ghost:`border border-transparent bg-transparent text-info-foreground transition-colors hover:bg-info-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-info-foreground disabled:pointer-events-none disabled:opacity-50`},success:{solid:`border border-success-foreground bg-success-foreground text-success-background transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-success-foreground disabled:pointer-events-none disabled:opacity-50`,outline:`border border-success-foreground bg-transparent text-success-foreground transition-colors hover:bg-success-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-success-foreground disabled:pointer-events-none disabled:opacity-50`,soft:`border border-transparent bg-success-background text-success-foreground transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-success-foreground disabled:pointer-events-none disabled:opacity-50`,ghost:`border border-transparent bg-transparent text-success-foreground transition-colors hover:bg-success-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-success-foreground disabled:pointer-events-none disabled:opacity-50`},warning:{solid:`border border-warning-foreground bg-warning-foreground text-warning-background transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-warning-foreground disabled:pointer-events-none disabled:opacity-50`,outline:`border border-warning-foreground bg-transparent text-warning-foreground transition-colors hover:bg-warning-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-warning-foreground disabled:pointer-events-none disabled:opacity-50`,soft:`border border-transparent bg-warning-background text-warning-foreground transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-warning-foreground disabled:pointer-events-none disabled:opacity-50`,ghost:`border border-transparent bg-transparent text-warning-foreground transition-colors hover:bg-warning-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-warning-foreground disabled:pointer-events-none disabled:opacity-50`},danger:{solid:`border border-danger-foreground bg-danger-foreground text-danger-background transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-danger-foreground disabled:pointer-events-none disabled:opacity-50`,outline:`border border-danger-foreground bg-transparent text-danger-foreground transition-colors hover:bg-danger-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-danger-foreground disabled:pointer-events-none disabled:opacity-50`,soft:`border border-transparent bg-danger-background text-danger-foreground transition-colors hover:opacity-90 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-danger-foreground disabled:pointer-events-none disabled:opacity-50`,ghost:`border border-transparent bg-transparent text-danger-foreground transition-colors hover:bg-danger-background focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-danger-foreground disabled:pointer-events-none disabled:opacity-50`}},v={sm:`px-3 py-1.5 text-sm font-medium rounded`,md:`px-4 py-2 text-base font-medium rounded-md`,lg:`px-6 py-3 text-lg font-medium rounded-lg`},y=({size:e=`md`,variant:t=`solid`,color:r=`primary`,...i})=>{let a=_[r][t],o=v[e];return n(`textarea`,{class:[`inline-flex items-center gap-1 font-medium`,`align-middle leading-none`,o,a],...i})},b=({class:e,children:t,...r})=>n(`form`,{class:[`inline-flex items-center gap-1 font-medium`,`align-middle leading-none`,e],...r,children:t});export{s as Accordion,u as Badge,p as Button,b as Form,g as Input,y as Textarea};
package/dist/vite.js CHANGED
@@ -1,7 +1,7 @@
1
- import e from"node:fs";import t from"node:path";const n=new TextEncoder,r=async e=>{let t=n.encode(e),r=await crypto.subtle.digest(`SHA-1`,t);return Array.from(new Uint8Array(r)).map(e=>e.toString(16).padStart(2,`0`)).join(``)},i=`virtual:renku`,a=`\0${i}`;async function o(){let n,o=new Set,s=new Map,c=new Set,l=null,u=new Map;return{name:`renku`,sharedDuringBuild:!0,configResolved(e){n=e},resolveId(e){if(e===i)return a},load(e){if(e===a)return`export const clientEntry = ${JSON.stringify(l)}`},async transform(e,i){let a=this.environment.mode===`dev`,c=this.environment.name===`client`,l=e=>{let t=this.parse(e).body.filter(e=>e.type===`ExportNamedDeclaration`),n=[];for(let e of t)if(e.declaration?.type===`VariableDeclaration`)for(let t of e.declaration.declarations)t.id.type===`Identifier`&&n.push(t.id.name);return n};if(!c&&e.startsWith(`"use client"`)){let r=n.base.concat(t.relative(n.root,i));o.add(r);let a=l(e),s=`import { registerClientReference } from "renku/server";
2
- `,c=u.get(r);for(let e of a)s=s.concat(`export const ${e} = await registerClientReference(
1
+ import e from"node:fs";import t from"node:path";const n=async e=>{let t=new TextEncoder().encode(e),n=await crypto.subtle.digest(`SHA-1`,t);return Array.from(new Uint8Array(n)).map(e=>e.toString(16).padStart(2,`0`)).join(``)},r=`virtual:renku`,i=`\0${r}`;async function a(){let a,o=new Set,s=new Map,c=new Set,l=null,u=new Map;return{name:`renku`,sharedDuringBuild:!0,configResolved(e){a=e},resolveId(e){if(e===r)return i},load(e){if(e===i)return`export const clientEntry = ${JSON.stringify(l)}`},async transform(e,r){let i=this.environment.mode===`dev`,c=this.environment.name===`client`,l=e=>{let t=this.parse(e).body.filter(e=>e.type===`ExportNamedDeclaration`),n=[];for(let e of t)if(e.declaration?.type===`VariableDeclaration`)for(let t of e.declaration.declarations)t.id.type===`Identifier`&&n.push(t.id.name);return n};if(!c&&e.startsWith(`"use client"`)){let n=a.base.concat(t.relative(a.root,r));o.add(n);let i=l(e),s=`import { registerClientReference } from "renku/server";
2
+ `,c=u.get(n);for(let e of i)s=s.concat(`export const ${e} = await registerClientReference(
3
3
  () => {},
4
- "${c||r}",
4
+ "${c||n}",
5
5
  "${e}"
6
- );\n`);return{code:s}}else if(e.startsWith(`"use server"`)){let t=l(e),n=`import { registerServerFunction } from "renku";
7
- `,o=a?i:await r(i);s.set(o,i);for(let e of t)c&&(n=n.concat(`export const ${e} = await registerServerFunction("${o}", "${e}");\n`));return c?{code:n}:void 0}},async buildStart(){if(n.mode===`production`){if(this.environment.name===`client`)for(let e of o)this.emitFile({type:`chunk`,id:e,preserveSignature:`exports-only`});else if(this.environment.name===`ssr`)for(let[e,n]of s){let r=t.join(`functions`,e);this.emitFile({type:`chunk`,id:n,name:r})}}},generateBundle(e,r){if(this.environment.name===`ssr`){for(let[e,i]of Object.entries(r))if(i.type===`asset`){let e=t.resolve(n.root,this.environment.config.build.outDir,i.fileName);c.add(e)}}else if(this.environment.name===`client`){for(let[e,i]of Object.entries(r))if(i.type===`chunk`&&i.isEntry&&((i.name===`main`||l===null)&&(l=n.base.concat(i.fileName)),i.facadeModuleId)){let e=n.base.concat(t.relative(n.root,i.facadeModuleId));o.has(e)&&u.set(e,n.base.concat(i.fileName))}}},config(){return{builder:{buildApp:async n=>{let r=[`ssr`,`client`,`ssr`],i=!1;for(let e of r)if(e in n.environments&&n.environments[e]){let t=n.environments[e];t.config.build.write=i,await n.build(t),i=!0}for(let n of c){let r=n.replace(`/ssr/`,`/client/`);console.log(`Moving asset from`,n,`to`,r);let i=t.dirname(r);e.mkdirSync(i,{recursive:!0}),e.renameSync(n,r)}}},build:{manifest:!0,rollupOptions:{output:{chunkFileNames:e=>e.name?.startsWith(`functions/`)?`assets/[name].js`:`assets/[name]-[hash].js`}}},resolve:{alias:{"/@renku/client":import.meta.resolve(`renku/client`)}},environments:{client:{build:{rollupOptions:{input:{main:`renku/client`}}}}}}}}}export{o as default};
6
+ );\n`);return{code:s}}else if(e.startsWith(`"use server"`)||e.startsWith(`"use http"`)||e.startsWith(`"use ws"`)){let t=l(e),a=`import { registerServerFunction } from "renku";
7
+ `,o=i?r:await n(r);s.set(o,r);for(let n of t)c&&(a=a.concat(`export const ${n} = await registerServerFunction("${o}", "${n}", ${e.startsWith(`"use ws"`)});\n`));return c?{code:a}:void 0}},async buildStart(){if(a.mode===`production`){if(this.environment.name===`client`)for(let e of o)this.emitFile({type:`chunk`,id:e,preserveSignature:`exports-only`});else if(this.environment.name===`ssr`)for(let[e,n]of s){let r=t.join(`functions`,e);this.emitFile({type:`chunk`,id:n,name:r})}}},generateBundle(e,n){if(this.environment.name===`ssr`){for(let[e,r]of Object.entries(n))if(r.type===`asset`){let e=t.resolve(a.root,this.environment.config.build.outDir,r.fileName);c.add(e)}}else if(this.environment.name===`client`){for(let[e,r]of Object.entries(n))if(r.type===`chunk`&&r.isEntry&&((r.name===`main`||l===null)&&(l=a.base.concat(r.fileName)),r.facadeModuleId)){let e=a.base.concat(t.relative(a.root,r.facadeModuleId));o.has(e)&&u.set(e,a.base.concat(r.fileName))}}},config(){return{builder:{buildApp:async n=>{let r=[`ssr`,`client`,`ssr`],i=!1;for(let e of r)if(e in n.environments&&n.environments[e]){let t=n.environments[e];t.config.build.write=i,await n.build(t),i=!0}for(let n of c){let r=n.replace(`/ssr/`,`/client/`);console.log(`Moving asset from`,n,`to`,r);let i=t.dirname(r);e.mkdirSync(i,{recursive:!0}),e.renameSync(n,r)}}},build:{manifest:!0,rollupOptions:{output:{chunkFileNames:e=>e.name?.startsWith(`functions/`)?`assets/[name].js`:`assets/[name]-[hash].js`}}},resolve:{alias:{"/@renku/client":import.meta.resolve(`renku/client`)}},environments:{client:{build:{rollupOptions:{input:{main:`renku/client`}}}}}}}}}export{a as default};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "renku",
3
- "version": "0.0.7",
3
+ "version": "0.0.8",
4
4
  "private": false,
5
5
  "description": "Renku",
6
6
  "homepage": "https://renku.dev",
@@ -72,6 +72,10 @@
72
72
  "types": "./dist/jsx-runtime.d.ts",
73
73
  "import": "./dist/jsx-runtime.js"
74
74
  },
75
+ "./otel": {
76
+ "types": "./dist/otel.d.ts",
77
+ "import": "./dist/otel.js"
78
+ },
75
79
  "./server": {
76
80
  "types": "./dist/server.d.ts",
77
81
  "import": "./dist/server.js"
@@ -99,19 +103,37 @@
99
103
  "generate-types": "wrangler -c src/cloudflare/wrangler.jsonc types src/cloudflare/worker-configuration.d.ts"
100
104
  },
101
105
  "dependencies": {
106
+ "@opentelemetry/api-logs": "0.208.0",
107
+ "@opentelemetry/auto-instrumentations-node": "0.67.3",
108
+ "@opentelemetry/core": "2.2.0",
109
+ "@opentelemetry/exporter-logs-otlp-http": "0.208.0",
110
+ "@opentelemetry/exporter-metrics-otlp-http": "0.208.0",
111
+ "@opentelemetry/exporter-trace-otlp-http": "0.208.0",
112
+ "@opentelemetry/instrumentation": "0.208.0",
113
+ "@opentelemetry/instrumentation-document-load": "0.54.0",
114
+ "@opentelemetry/instrumentation-xml-http-request": "0.208.0",
115
+ "@opentelemetry/resources": "2.2.0",
116
+ "@opentelemetry/sdk-logs": "0.208.0",
117
+ "@opentelemetry/sdk-metrics": "2.2.0",
118
+ "@opentelemetry/sdk-node": "0.208.0",
119
+ "@opentelemetry/sdk-trace-base": "2.2.0",
120
+ "@opentelemetry/sdk-trace-web": "2.2.0",
121
+ "@opentelemetry/semantic-conventions": "1.38.0",
102
122
  "@sqlite.org/sqlite-wasm": "3.51.1-build2",
103
123
  "@standard-schema/spec": "1.1.0",
104
- "capnweb": "0.3.0",
124
+ "capnweb": "0.4.0",
105
125
  "signal-polyfill": "0.2.2"
106
126
  },
107
127
  "devDependencies": {
128
+ "@happy-dom/global-registrator": "20.0.11",
108
129
  "@stricli/auto-complete": "1.2.4",
109
130
  "@stricli/core": "1.2.4",
110
131
  "@types/bun": "1.3.5",
111
132
  "@types/node": "25.0.3",
112
- "tsdown": "0.18.2",
133
+ "happy-dom": "20.0.11",
134
+ "tsdown": "0.18.3",
113
135
  "typescript": "5.9.3",
114
- "vite": "8.0.0-beta.4",
115
- "wrangler": "4.56.0"
136
+ "vite": "8.0.0-beta.5",
137
+ "wrangler": "4.54.0"
116
138
  }
117
139
  }
@@ -1 +0,0 @@
1
- import{AsyncLocalStorage as e}from"node:async_hooks";const t=new e,n=()=>({sessionId:null,userId:null}),r=()=>{let e=t.getStore();if(e)return e;let r=n();return t.enterWith(r),r},i=e=>t.run(n(),e),a=()=>r();export{r as n,i as r,a as t};
@@ -1,2 +0,0 @@
1
- import{n as e,r as t,t as n}from"./auth-DivcgvqR.js";import{n as r,r as i,t as a}from"./rsc-from-markup-ditxg5su.js";import{t as o}from"./get-route-DL8B9jay.js";import{newWorkersRpcResponse as s}from"capnweb";import{clientEntry as c}from"virtual:renku";const l=({namespace:e,name:t,ws:n})=>async(r,i)=>{if(console.log(`🔥`,`DO handler`,typeof t),n){let e=r.headers.get(`Upgrade`);if(!e||e!==`websocket`)return new Response(`Durable Object expected Upgrade: websocket`,{status:426})}if(typeof t==`function`){let e=r.clone();t=await t(e)}return i[e].getByName(t).fetch(r)},u=({rpName:e,sessionExpiryInMinutes:t})=>{t??=60;let r=e=>e*60*1e3;return{"/validate-session":{GET:async(e,t,r)=>n().sessionId?Response.json({isAuthenticated:!0}):Response.json({isAuthenticated:!1})},"/logout":{POST:async(e,t,i)=>{let a=n();a.sessionId&&await t.AUTH_DO.getByName(`session:${a.sessionId}`).logout();let o=new Date(Date.now()-r(10)).toUTCString();return new Response(null,{headers:{"Set-Cookie":`sessionId=; Path=/; SameSite=Strict; Secure; Expires=${o}`}})},GET:async(e,t,i)=>{let a=n();a.sessionId&&await t.AUTH_DO.getByName(`session:${a.sessionId}`).logout();let o=new Date(Date.now()-r(10)).toUTCString();return new Response(null,{status:302,headers:{Location:`/`,"Set-Cookie":`sessionId=; Path=/; SameSite=Strict; Secure; Expires=${o}`}})}},"/creation-options":{POST:async(t,n,r)=>{let{email:i}=await t.json(),a=crypto.randomUUID(),o=n.AUTH_DO.getByName(`user:${a}`),s=new URL(t.url).hostname,c=await o.creationOptions({id:a,email:i,rpId:s,rpName:e});return Response.json(c)}},"/validate-creation":{POST:async(e,t,n)=>{let{name:r,credential:i}=await e.json();return await t.AUTH_DO.getByName(`user:${r}`).validateCreation({name:r,credential:i}),Response.json({ok:!0})}},"/request-options":{POST:async(e,t,n)=>{let r=new URL(e.url).hostname,i=crypto.randomUUID(),a=await t.AUTH_DO.getByName(`challenge:${i}`).requestOptions({rpId:r});return Response.json({id:i,options:a})}},"/validate-request":{POST:async(e,n,i)=>{let{id:a,credential:o}=await e.json(),s=await n.AUTH_DO.getByName(`challenge:${a}`).validateRequest({credential:o,sessionExpiryInMinutes:t});if(s){let e=new Date(Date.now()+r(t)).toUTCString();return Response.json({success:!0},{headers:{"Set-Cookie":`sessionId=${s}; Path=/; SameSite=Strict; Secure; Expires=${e}`}})}return Response.json({error:!0})}}}},d=e=>{let t={};if(!e)return t;let n=e.split(`;`);for(let e of n){let n=e.indexOf(`=`);if(n===-1)continue;let r=e.slice(0,n).trim(),i=e.slice(n+1).trim();r&&(t[r]=i)}return t},f=async({request:t,env:n,authFn:r})=>{let i=e(),a=d(t.headers.get(`cookie`));if(`sessionId`in a&&a.sessionId){if(i.sessionId=a.sessionId,n?.AUTH_DO){let e=await n.AUTH_DO.getByName(`session:${i.sessionId}`).validateSession({sessionExpiryInMinutes:1440});e&&(i.userId=e.userId)}}else i.sessionId=null;return r?r({request:t,authContext:i}):!0},p=new TextEncoder,m=e=>{let t=e[Symbol.asyncIterator]();return new ReadableStream({async pull(e){let{value:n,done:r}=await t.next();if(r)e.close();else{let t=typeof n==`object`?JSON.stringify(n).concat(`
2
- `):n;e.enqueue(p.encode(t))}}})},h=[`favicon.ico`,`.well-known`],g=({routes:e})=>async(n,l,u)=>t(async()=>{let t=new URL(n.url).pathname.split(`/`),d=t[1];if(d&&h.includes(d))return new Response(null,{status:404});let p=o({request:n,routes:e}),g=await f({request:n,env:l,authFn:p?p.auth:null});if(g!==!0)return g||new Response(null,{status:401});if(d===`@renku`){if(t[2]===`rpc`&&t[3]&&t[4]){let e=decodeURIComponent(t[3]),r=decodeURIComponent(t[4]);import.meta.env.DEV||(e=`/assets/functions/${e}.js`),console.log(`☎️ Server function was called:`,e,r);let i=(await import(e))[r];return s(n,i)}return new Response(null,{status:404})}if(!p)return console.warn(`No routing result`),new Response(null,{status:404});if(p.api){let e=Object.assign(n,{params:p.params});return p.api(e,l,u)}let _=null;if(p.route instanceof Promise)_=await(await p.route).default(p.params);else if(p.route&&`default`in p.route&&typeof p.route.default==`function`)_=await p.route.default(p.params);else if(typeof p.route==`function`)_=await p.route(p.params);else return new Response(null,{status:404});let v={styles:[],modules:[]};import.meta.env.DEV?(v.modules.push(`/@vite/client`),v.modules.push(`/@renku/client`)):c&&v.modules.push(c);for(let e of p.layouts)e instanceof Promise?_=await(await e).default({children:_,_renku:v}):`default`in e&&typeof e.default==`function`?_=await e.default({children:_,_renku:v}):typeof e==`function`&&(_=await e({children:_,_renku:v}));let y=r(_);if(n.headers.get(`Accept`)===`text/x-component`){let e=m(a(y));return new Response(e,{headers:{"Content-Type":`text/x-component`}})}let b=m(i(y));return new Response(b,{headers:{"Content-Type":`text/html`}})}),_=({routes:e})=>({fetch:g({routes:e})});export{u as n,l as r,_ as t};
@@ -1 +0,0 @@
1
- import{n as e,t}from"./signal-store-0zk-69gB.js";const n=e=>t.get(e),r=t=>new e.Computed(t);export{n,r as t};
@@ -1,6 +0,0 @@
1
- import { n as FragmentComponent } from "./types-CkYeGxWb.js";
2
-
3
- //#region src/jsx/fragment.d.ts
4
- declare const Fragment: FragmentComponent;
5
- //#endregion
6
- export { Fragment as t };
@@ -1 +0,0 @@
1
- const e=e=>e.children;export{e as t};
@@ -1 +0,0 @@
1
- const e=({request:e,routes:t})=>{let n=new URL(e.url).pathname,r=e.method.toUpperCase(),i=n.split(`/`).filter(Boolean),a=t.layout?[t.layout]:[],o={},s=null;if(i.length===0)return t.index?{layouts:a,route:t.index,params:o,auth:s}:typeof t[`/`]==`object`&&`index`in t[`/`]?(t[`/`].layout&&a.unshift(t[`/`].layout),{layouts:a,route:t[`/`].index,params:o,auth:s}):!1;let c=t;for(let[e,t]of i.entries()){let n=`/${t}`,l=c[n],u=e=>Object.keys(e).find(e=>e.startsWith(`/:`));if(!l){let e=u(c);if(!e&&c[`/`]&&typeof c[`/`]==`object`){let t=c[`/`];l=t[n],typeof t==`object`&&t.layout&&a.unshift(t.layout),l||(e=u(t))}if(e){let n=e.slice(2);o[n]=t,l=c[e]}}if(typeof l==`function`||l instanceof Promise)return{layouts:a,route:l,params:o,auth:s};if(typeof l==`object`){let t=l;if(t.auth&&!s&&(s=t.auth),t.layout&&a.unshift(t.layout),e===i.length-1)if(typeof t.index==`object`&&r in t.index){let e=t.index;if(e[r])return typeof e[r]==`function`?{api:e[r],params:o,auth:s}:{layouts:a,route:e[r],params:o,auth:s}}else if(t.index)return{layouts:a,route:t.index,params:o,auth:s};else{let e=t;if(e[r])return typeof e[r]==`function`?{api:e[r],params:o,auth:s}:{layouts:a,route:e[r],params:o,auth:s}}c=t}}return!1};export{e as t};
@@ -1 +0,0 @@
1
- const e=(e,t,n)=>({type:e,props:t,key:n}),t=(e,t,n)=>({type:e,props:t,key:n});export{e as n,t};
@@ -1 +0,0 @@
1
- import{newHttpBatchRpcSession as e,newWebSocketRpcSession as t}from"capnweb";const n=(n,r)=>{console.log(`☎️`,`Registering server function:`,n,r);let i=`/@renku/rpc/${encodeURIComponent(n)}/${encodeURIComponent(r)}`;return(...a)=>{let o=r.startsWith(`ws_`)?t(i):e(i);return console.log(`☎️`,`Calling server function:`,n,r,a),o(...a)}};export{n as t};
@@ -1,14 +0,0 @@
1
- import{t as e}from"./virtual-from-jsx-kd8FG7Em.js";import{n as t}from"./signal-store-0zk-69gB.js";async function*n(e){yield`<!DOCTYPE html>`;for await(let t of e)t[1]&&(yield t[1])}async function*r(t){let n=new Set(t.map(t=>t.then(({index:t,node:n})=>({index:t,virtualNode:e({node:n,asyncComponents:[]})})).catch(e=>({error:e}))));for(;n.size>0;){let e=await Promise.race(n);for(let t of n)t.then(r=>{r===e&&n.delete(t)}).catch(r=>{r===e&&n.delete(t)});`virtualNode`in e&&(yield e)}}async function*i({key:e,val:n,trailingComma:r,output:i}){if(typeof n==`string`||typeof n==`number`){e===`className`&&(e=`class`);let t=typeof n==`number`?String(n):`"${String(n)}"`;return yield i(`${r?`,`:``}"${e}":${t}`,` ${e}="${String(n)}"`),!0}if(n instanceof t.State||n instanceof t.Computed)return yield i(`${r?`,`:``}"${e}":"${String(n.get())}"`,` ${e}="${String(n.get())}"`),!0;if(Array.isArray(n)){let a=n.map(e=>e instanceof t.State||e instanceof t.Computed?String(e.get()):String(e)).join(` `);return yield i(`${r?`,`:``}"${e}":"${a}"`,` ${e}="${a}"`),!0}}const a=new Set([`area`,`base`,`br`,`col`,`embed`,`hr`,`img`,`input`,`link`,`meta`,`source`,`track`,`wbr`]);async function*o({virtualNode:e,asyncVirtualNodes:t,leadingComma:n=!1,rscBuffer:r=[]}){let s=(e,t)=>(e&&r.push(e),[e,t]),c=(e,t)=>s(e,null);if(Array.isArray(e))for(let i of e)yield*o({virtualNode:i,asyncVirtualNodes:t,leadingComma:n,rscBuffer:r}),n=!0;else if(e?.type===`element`){yield s(`${n?`,`:``}["E","${e.value}",${e.key?`"${e.key}"`:`null`},{`,`<${e.value}`);let c=!0;for(let[t,n]of Object.entries(e.props))t!==`children`&&(yield*i({key:t,val:n,trailingComma:!c,output:s}))&&(c=!1);if(yield s(null,a.has(e.value)?` />`:`>`),e.children.length>0){let n=!0;yield s(`${c?``:`,`}"children":[`,null);for(let i of e.children)(yield*o({virtualNode:i,asyncVirtualNodes:t,leadingComma:!n,rscBuffer:r}))&&(n=!1);e.value!==`html`&&(yield s(`]`,null))}if(e.value===`body`){if(r.length>0){let e=r.join(``);r.length=0,yield[null,`<script>(self.__RSC||=[]).push(\`${e}}]]}]\`);<\/script>`]}yield[`}]]}]`,null];for await(let e of t){let n=[];yield[`
2
- `,`<template data-id="async-template-${e.index}">`],yield*o({virtualNode:e.virtualNode,asyncVirtualNodes:t,leadingComma:!1,rscBuffer:n}),yield[null,`</template>`],yield[null,`<script>(self.__RSC||=[]).push(\`${n.join(``)}\`);<\/script>`],yield[null,`<script>
3
- (() => {
4
- const placeholder = document.querySelector(\`${`template[data-id="async-placeholder-${e.index}"]`}\`);
5
- // console.log("placeholder",placeholder);
6
- if(placeholder) {
7
- const template = document.querySelector(\`${`template[data-id="async-template-${e.index}"]`}\`);
8
- // console.log("template",template);
9
- // const clone = template.content.cloneNode(true);
10
- template && placeholder.parentNode.replaceChild(template.content, placeholder);
11
- }
12
- })();
13
- <\/script>`]}}return a.has(e.value)?yield s(`}]`,null):e.value!==`html`&&e.value!==`body`?yield s(`}]`,`</${e.value}>`):yield s(null,`</${e.value}>`),!0}else if(e?.type===`text`||e?.type===`signal`){let t=e?.type===`signal`?String(e.value.get()):e.value;return yield s(`${n?`,`:``}"${t.replaceAll(`"`,`\\\\"`).replaceAll(`
14
- `,`\\\\n`)}"`,t),!0}else if(e?.type===`async`)return yield s(`${n?`,`:``}["A",${e.key?`"${e.key}"`:`null`},${e.index}]`,`<template data-id="async-placeholder-${e.index}"></template>`),!0;else if(e?.type===`client`){yield s(`${n?`,`:``}["C",${e.key?`"${e.key}"`:`null`},"${e.path}","${e.name}",{`,`<!-- CLIENT -->`);let t=!0;for(let[n,r]of Object.entries(e.props))n!==`children`&&(yield*i({key:n,val:r,trailingComma:!t,output:c}))&&(t=!1);return yield s(`}]`,null),!0}else if(e?.type===`effect`)return yield*o({virtualNode:e.value,asyncVirtualNodes:t,leadingComma:n,rscBuffer:r})}const s=t=>{let n=[];return o({virtualNode:e({node:t,asyncComponents:n}),asyncVirtualNodes:r(n)})};async function*c(e){for await(let t of e)t[0]&&(yield t[0])}export{s as n,n as r,c as t};
@@ -1,38 +0,0 @@
1
- //#region src/jsx/types.d.ts
2
- declare namespace JSX {
3
- type ElementType = (keyof IntrinsicElements & string) | FunctionComponent<any> | ClientComponent | FragmentComponent;
4
- interface IntrinsicElements {
5
- [key: string]: any;
6
- a: {
7
- href: "/page1" | "/page2" | `https://${string}`;
8
- children?: RenkuNode | RenkuNode[];
9
- class?: string | string[];
10
- };
11
- }
12
- type Element<T extends ElementType = ElementType> = {
13
- type: T;
14
- props: any;
15
- key: string | null | undefined;
16
- };
17
- }
18
- type RenkuNode = null | number | string | JSX.Element | RenkuNode[];
19
- type ClientComponent = {
20
- type: "client";
21
- path: string;
22
- name: string;
23
- };
24
- type FunctionComponent<T = Record<string, any>> = (props: T & {
25
- children?: RenkuNode | RenkuNode[];
26
- key?: string | null | undefined;
27
- }) => RenkuNode | Promise<RenkuNode>;
28
- type LayoutComponent = FunctionComponent<{
29
- _renku: {
30
- styles: string[];
31
- modules: string[];
32
- };
33
- }>;
34
- type FragmentComponent = (props: {
35
- children: JSX.Element[];
36
- }) => JSX.Element[];
37
- //#endregion
38
- export { LayoutComponent as a, JSX as i, FragmentComponent as n, RenkuNode as o, FunctionComponent as r, ClientComponent as t };
@@ -1 +0,0 @@
1
- import{t as e}from"./virtual-from-jsx-kd8FG7Em.js";import{n as t}from"./signal-store-0zk-69gB.js";import{t as n}from"./effect-Bd9_A9t9.js";function r({domNode:e,virtualNode:t,replace:n=!1}){let r=[];for(let i of t){let t=a({domNode:e,virtualNode:i,replace:n});n=!1,r.push(t)}return r}const i=({element:e,key:r,val:i})=>{typeof i==`function`?r.startsWith(`on`)&&e.addEventListener(r.slice(2),i):typeof i==`string`||typeof i==`number`?(r===`className`&&(r=`class`),e.setAttribute(r,String(i))):i instanceof t.State||i instanceof t.Computed?n(()=>{e.setAttribute(r,String(i.get()))}):Array.isArray(i)?n(()=>{let n=i.map(e=>e instanceof t.State||e instanceof t.Computed?String(e.get()):String(e)).join(` `);e.setAttribute(r,n)}):typeof i==`boolean`&&(i?e.setAttribute(r,``):e.removeAttribute(r))};function a({domNode:t,virtualNode:s,replace:c=!1}){if(!s)return null;let l=[`svg`,`path`,`circle`];if(s.type===`element`){let e=l.includes(s.value)?document.createElementNS(`http://www.w3.org/2000/svg`,s.value):document.createElement(s.value);if(s.domNode=e,s.props.ref){let e=s.props.ref;console.log(`has ref`,e.get()),e.set(s.domNode),console.log(`assigned ref`,s.domNode),console.log(`has ref`,e.get())}for(let[t,n]of Object.entries(s.props))t!==`children`&&t!==`key`&&t!==`ref`&&i({element:e,key:t,val:n});if(s.children)for(let t of s.children)a({domNode:e,virtualNode:t});return t===document.documentElement?document.documentElement.replaceWith(e):c&&t.parentElement?t.parentElement.replaceChild(e,t):t.appendChild(e),e}if(s.type===`async`){let n=document.createElement(`template`);return s.domNode=n,t.appendChild(n),s.promise?.then(t=>{let i=e({node:t});Array.isArray(i)?r({domNode:n,virtualNode:i,replace:!0}):a({domNode:n,virtualNode:i,replace:!0})}),n}if(s.type===`text`){let e=document.createTextNode(s.value);return s.domNode=e,t.appendChild(e),e}if(s.type===`signal`){let e=s.value,r=document.createTextNode(``);return s.domNode=r,n(()=>{r.textContent=String(e.get())}),t.appendChild(r),r}if(s.type===`effect`){let e=s.value,n=null,r=null,i=e=>{Array.isArray(e)?console.warn(`EFFECT virtual node is array`):n?(n=o({domNode:n,newVirtualNode:e,oldVirtualNode:r}),r=e):(n=a({domNode:t,virtualNode:e,replace:c}),r=e,e=null)};s.addCallback(i),i(e)}return null}const o=({domNode:e,newVirtualNode:t,oldVirtualNode:n})=>{if(t&&n)if(t.type===n.type)if(t.type===`element`&&n.type===`element`)if(t.value===n.value){let r=e,s=n.props?Object.keys(n.props).filter(e=>!(e in t.props)):[];s.length&&s.map(e=>r.removeAttribute(e));for(let[e,a]of Object.entries(t.props))if(e!==`children`&&e!==`key`)if(n.props&&e in n.props){let t=n.props[e];typeof a==`function`||(Array.isArray(a)&&Array.isArray(t)?JSON.stringify(a)!==JSON.stringify(t)&&i({element:r,key:e,val:a}):n.props[e]!==a&&i({element:r,key:e,val:a}))}else i({element:r,key:e,val:a});if(t.children.length){let e=0;for(let i=0;i<t.children.length;i++){let s=t.children[i];if(s){let t=n.children?n.children[i-e]:void 0;if(t?.domNode)if(s.key===t.key)s.domNode=t.domNode,o({domNode:t.domNode,newVirtualNode:s,oldVirtualNode:t});else{let i=n.children.findIndex(e=>e?.key===s.key),a=i>-1?n.children[i]:null;a?.domNode&&(r.moveBefore(a.domNode,t.domNode),s.domNode=a.domNode,e++,o({domNode:a.domNode,newVirtualNode:s,oldVirtualNode:a}),n.children.splice(i,1))}else s.type!==`effect`&&a({domNode:r,virtualNode:s});n.children[i-e]=null}}if(n.children.length+e>t.children.length)for(let i=t.children.length;i<n.children.length+e;i++){let t=n.children[i-e]?.domNode;t&&r.removeChild(t)}}else n.children?.length&&r.replaceChildren()}else console.log(`Different node types`),n.domNode&&a({domNode:n.domNode,virtualNode:t,replace:!0});else t.type===`text`&&n.type===`text`&&t.value!==n.value&&(t.domNode=n.domNode,t.domNode.nodeValue=t.value);else console.warn(`Different node types`),n.domNode&&a({domNode:n.domNode,virtualNode:t,replace:!0});else console.warn(`Old or new node is null`);return e};export{a as n,r,o as t};
@@ -1 +0,0 @@
1
- import{n as e,t}from"./signal-store-0zk-69gB.js";import{t as n}from"./context-store-BpRmbHKI.js";import{t as r}from"./effect-Bd9_A9t9.js";const i=e=>!Array.isArray(e)&&typeof e==`object`&&!!e&&typeof e.type==`function`&&e.type.name===`Fragment`,a=({node:e,asyncComponents:t=[],clientComponents:n=[]})=>{let r=[];if(Array.isArray(e))for(let i of e)r.push(...a({node:i,asyncComponents:t,clientComponents:n}));else if(e)if(i(e)){let i=e.type(e.props);r.push(...a({node:i,asyncComponents:t,clientComponents:n}))}else{let i=s({node:e,asyncComponents:t,clientComponents:n});Array.isArray(i)?r.push(...i):r.push(i)}return r},o=({fn:e,key:i,props:a,asyncComponents:o,clientComponents:c})=>{let l=null,u=null,d=e=>{l=e,u&&u(e)},f=[],p=n.current,m=p?new Map(p):new Map;return r(()=>{t.set(f),n.current=m;let r=e(a);if(r instanceof Promise){let e=c.length+o.length+1;o.push(new Promise(t=>{r.then(n=>{t({index:e,node:n})})})),d({type:`async`,key:i,promise:r,index:e})}else d(s({node:r,asyncComponents:o,clientComponents:c}))}),{type:`effect`,value:l,addCallback:e=>{u=e}}},s=({node:t,asyncComponents:n=[],clientComponents:r=[]})=>{if(Array.isArray(t))return a({node:t,asyncComponents:n,clientComponents:r});if(t===null)return null;if(typeof t==`string`||typeof t==`number`)return{type:`text`,value:String(t)};if(t instanceof e.Computed||t instanceof e.State)return{type:`signal`,value:t};if(typeof t==`object`&&typeof t.type==`function`&&!i(t)&&typeof t.type==`function`)return o({fn:t.type,key:t.key,props:t.props,asyncComponents:n,clientComponents:r});if(typeof t==`object`&&typeof t.type==`object`&&t.type.type===`client`)return r.push({path:t.type.path,name:t.type.name}),{type:`client`,key:t.key,props:t.props,path:t.type.path,name:t.type.name};if(typeof t==`object`&&typeof t.type==`string`){let e=a({node:t.props.children,asyncComponents:n,clientComponents:r});return{type:`element`,key:t.key,value:t.type,props:t.props,children:e}}return console.warn(`Unhandled node type`,t),null};export{o as n,s as t};
File without changes
File without changes
File without changes