@sx3/ultra 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auth.d.mts +4 -4
- package/dist/auth.mjs +1 -1
- package/dist/client.d.mts +9 -9
- package/dist/client.mjs +1 -1
- package/dist/context-BAOh_2qI.mjs +1 -0
- package/dist/context.d.mts +1 -1
- package/dist/context.mjs +1 -1
- package/dist/cors.d.mts +3 -3
- package/dist/cors.mjs +1 -1
- package/dist/crypto-DrpstqPB.mjs +1 -0
- package/dist/crypto.mjs +1 -1
- package/dist/error.mjs +1 -1
- package/dist/{http-BqWCMASL.d.mts → http-CD8MvQOV.d.mts} +2 -2
- package/dist/http.d.mts +2 -2
- package/dist/{middleware-COKreBGP.d.mts → middleware-DVREjjkO.d.mts} +4 -4
- package/dist/middleware.d.mts +3 -3
- package/dist/{procedure-DRzVmxaT.mjs → procedure-BekIoOQX.mjs} +1 -1
- package/dist/procedure.d.mts +3 -3
- package/dist/procedure.mjs +1 -1
- package/dist/{response-CnnOFeUL.mjs → response-D9PTLpdq.mjs} +1 -1
- package/dist/response.mjs +1 -1
- package/dist/{rpc-Ch2UXReT.d.mts → rpc-DADpT17P.d.mts} +1 -1
- package/dist/rpc.d.mts +1 -1
- package/dist/rpc.mjs +1 -1
- package/dist/session.d.mts +4 -4
- package/dist/session.mjs +1 -1
- package/dist/test.d.mts +1 -0
- package/dist/test.mjs +1 -0
- package/dist/types.d.mts +1 -1
- package/dist/ultra.d.mts +6 -6
- package/dist/ultra.mjs +1 -1
- package/dist/{validation-BY5LC99k.mjs → validation-s1s8P8HO.mjs} +1 -1
- package/dist/validation.d.mts +1 -1
- package/dist/validation.mjs +1 -1
- package/package.json +1 -1
- /package/dist/{context-ChCsZh7S.d.mts → context-DNamt_XE.d.mts} +0 -0
- /package/dist/{error-Dq1biCC8.mjs → error-CvEWFOYT.mjs} +0 -0
- /package/dist/{rpc-CAwkzxZe.mjs → rpc-D9H6IkRD.mjs} +0 -0
- /package/dist/{types-Cn69QrjS.d.mts → types-CzIiTHWF.d.mts} +0 -0
- /package/dist/{validation-CkRfxQJ_.d.mts → validation-Dfgqsq2f.d.mts} +0 -0
package/dist/auth.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { n as DefaultSocketData, t as BaseContext } from "./context-
|
|
2
|
-
import { o as Promisable } from "./types-
|
|
3
|
-
import "./http-
|
|
4
|
-
import { t as Middleware } from "./middleware-
|
|
1
|
+
import { n as DefaultSocketData, t as BaseContext } from "./context-DNamt_XE.mjs";
|
|
2
|
+
import { o as Promisable } from "./types-CzIiTHWF.mjs";
|
|
3
|
+
import "./http-CD8MvQOV.mjs";
|
|
4
|
+
import { t as Middleware } from "./middleware-DVREjjkO.mjs";
|
|
5
5
|
import { ProceduresMap, Ultra } from "./ultra.mjs";
|
|
6
6
|
import { Session } from "./session.mjs";
|
|
7
7
|
|
package/dist/auth.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./error-
|
|
1
|
+
import{r as e}from"./error-CvEWFOYT.mjs";import{Ultra as t}from"./ultra.mjs";function n(e){return e}function r(e){return new t().derive(t=>({auth:new o(e,t)}))}const i=async t=>await t.context.auth.check()?t.next():new e,a=async t=>await t.context.auth.check()?new e:t.next();var o=class e{config;context;usingProvider;providerCache;constructor(e,t,n=e.provider,r=new Map){this.config=e,this.context=t,this.usingProvider=n,this.providerCache=r}use(t){return new e(this.config,this.context,t,this.providerCache)}get user(){return this.provider.user}check(){return this.provider.check()}login(e){return this.provider.login(e)}logout(){return this.provider.logout()}setUser(e){return this.provider.setUser(e)}get provider(){let e=this.providerCache.get(this.usingProvider);if(e)return e;let t=this.config.providers[this.usingProvider];if(!t)throw Error(`Auth provider "${String(this.usingProvider)}" is not configured.`);let n=t(this.context);return this.providerCache.set(this.usingProvider,n),n}},s=class{context;sessionKey;constructor(e,t=`user`){this.context=e,this.sessionKey=t}get user(){return this.context.session.get(this.sessionKey)||null}check(){return this.user!==null}login(e){this.setUser(e),this.context.session.regenerate()}logout(){this.context.session.delete(this.sessionKey)}setUser(e){this.context.session.set(this.sessionKey,e)}};export{o as Auth,s as SessionAuthProvider,r as createAuthModule,n as defineConfig,i as isAuthenticated,a as isGuest};
|
package/dist/client.d.mts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import "./context-
|
|
2
|
-
import "./http-
|
|
3
|
-
import { i as Procedure } from "./middleware-
|
|
1
|
+
import "./context-DNamt_XE.mjs";
|
|
2
|
+
import "./http-CD8MvQOV.mjs";
|
|
3
|
+
import { i as Procedure } from "./middleware-DVREjjkO.mjs";
|
|
4
4
|
import { ProceduresMap, Ultra } from "./ultra.mjs";
|
|
5
5
|
|
|
6
6
|
//#region src/client.d.ts
|
|
7
|
-
type GetProcedures<T> = T extends Ultra<infer P> ? P : never;
|
|
7
|
+
type GetProcedures<T> = T extends Ultra<infer P, any, any> ? P : never;
|
|
8
8
|
type BuildProcedure<P, CO> = P extends Procedure<infer I, infer O, any> ? (undefined extends I ? (input?: I, callOptions?: CO) => Promise<O> : (input: I, callOptions?: CO) => Promise<O>) : never;
|
|
9
9
|
type BuildClient<P extends ProceduresMap, CO> = { [K in keyof P]: P[K] extends Procedure<any, any, any> ? BuildProcedure<P[K], CO> : P[K] extends ProceduresMap ? BuildClient<P[K], CO> : never };
|
|
10
10
|
type Invoke<CO> = (method: string, params: unknown, callOptions?: CO) => Promise<unknown>;
|
|
@@ -12,16 +12,16 @@ interface HTTPClientOptions extends Omit<RequestInit, 'body'> {
|
|
|
12
12
|
baseUrl: string;
|
|
13
13
|
timeout?: number;
|
|
14
14
|
}
|
|
15
|
-
declare function createHTTPClient<B extends Ultra
|
|
15
|
+
declare function createHTTPClient<B extends Ultra<any, any, any>>(clientOptions: HTTPClientOptions): BuildClient<GetProcedures<B>, Partial<HTTPClientOptions>>;
|
|
16
16
|
interface WebSocketClientOptions {
|
|
17
|
-
socket: () => WebSocket;
|
|
17
|
+
socket: () => WebSocket | null;
|
|
18
18
|
timeout?: number;
|
|
19
19
|
}
|
|
20
|
-
declare function createWebSocketClient<B extends Ultra
|
|
20
|
+
declare function createWebSocketClient<B extends Ultra<any, any, any>>(options: WebSocketClientOptions): BuildClient<GetProcedures<B>, Partial<WebSocketClientOptions>>;
|
|
21
21
|
type ClientsCallsParams = Partial<WebSocketClientOptions> | Partial<HTTPClientOptions>;
|
|
22
|
-
interface SuperClientOptions<B extends Ultra
|
|
22
|
+
interface SuperClientOptions<B extends Ultra<any, any, any>> {
|
|
23
23
|
pick: (...args: Parameters<Invoke<ClientsCallsParams>>) => BuildClient<GetProcedures<B>, ClientsCallsParams>;
|
|
24
24
|
}
|
|
25
|
-
declare function createSuperClient<B extends Ultra
|
|
25
|
+
declare function createSuperClient<B extends Ultra<any, any, any>>(options: SuperClientOptions<B>): BuildClient<GetProcedures<B>, ClientsCallsParams>;
|
|
26
26
|
//#endregion
|
|
27
27
|
export { createHTTPClient, createSuperClient, createWebSocketClient };
|
package/dist/client.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function e(t,n=[]){return new Proxy(()=>{},{get(r,i){if(typeof i==`string`)return e(t,[...n,i])},apply(e,r,i){if(!n.length)throw Error(`Cannot call client root; select a procedure first`);let a=n.join(`/`),o=i[0],s=i[1];return t(a,o,s)}})}function t(...e){let t=new Headers;for(let n of e)n&&new Headers(n).forEach((e,n)=>t.set(n,e));return t}function n(n){return e(async(e,r,i)=>{let a={...n,...i},o=a?.timeout||1e4,s=new AbortController,c=a?.method||`POST`,l=`${a.baseUrl}/${e}`,u=t(n?.headers,a?.headers,i?.headers),d=null,f=setTimeout(()=>s.abort(`Timeout: ${o}`),o);switch(!0){case c===`GET`:{if(d=null,!r)break;if(typeof r!=`object`)throw Error(`GET requests params to be an object for query string generation`);let e=Object.entries(r).filter(([,e])=>e!=null).map(([e,t])=>[e,String(t)]),t=new URLSearchParams(e).toString();t&&(l+=`?${t}`);break}case r instanceof FormData:d=r;break;case typeof r==`string`:u.set(`Content-Type`,`text/plain`),d=r;break;default:u.set(`Content-Type`,`application/json`),d=JSON.stringify(r)}try{let e=await fetch(l,{method:c,...d&&{body:d},...a,signal:s.signal,headers:u});if(!e.ok)throw Error(`HTTP error: ${e.statusText} ${e.status} `);let t=e.headers.get(`Content-Type`)||``;switch(!0){case t.includes(`application/json`):return await e.json();case t.includes(`text/`):return await e.text();default:return await e.blob()}}catch(e){throw e.name===`AbortError`?Error(`Request aborted: ${e.message}`):e}finally{clearTimeout(f)}})}function r(t){let{timeout:n=1e4}=t,r=()=>Math.random().toString(36);return e((e,i,a)=>{let o=t.socket()
|
|
1
|
+
function e(t,n=[]){return new Proxy(()=>{},{get(r,i){if(typeof i==`string`)return e(t,[...n,i])},apply(e,r,i){if(!n.length)throw Error(`Cannot call client root; select a procedure first`);let a=n.join(`/`),o=i[0],s=i[1];return t(a,o,s)}})}function t(...e){let t=new Headers;for(let n of e)n&&new Headers(n).forEach((e,n)=>t.set(n,e));return t}function n(n){return e(async(e,r,i)=>{let a={...n,...i},o=a?.timeout||1e4,s=new AbortController,c=a?.method||`POST`,l=`${a.baseUrl}/${e}`,u=t(n?.headers,a?.headers,i?.headers),d=null,f=setTimeout(()=>s.abort(`Timeout: ${o}`),o);switch(!0){case c===`GET`:{if(d=null,!r)break;if(typeof r!=`object`)throw Error(`GET requests params to be an object for query string generation`);let e=Object.entries(r).filter(([,e])=>e!=null).map(([e,t])=>[e,String(t)]),t=new URLSearchParams(e).toString();t&&(l+=`?${t}`);break}case r instanceof FormData:d=r;break;case typeof r==`string`:u.set(`Content-Type`,`text/plain`),d=r;break;default:u.set(`Content-Type`,`application/json`),d=JSON.stringify(r)}try{let e=await fetch(l,{method:c,...d&&{body:d},...a,signal:s.signal,headers:u});if(!e.ok)throw Error(`HTTP error: ${e.statusText} ${e.status} `);let t=e.headers.get(`Content-Type`)||``;switch(!0){case t.includes(`application/json`):return await e.json();case t.includes(`text/`):return await e.text();default:return await e.blob()}}catch(e){throw e.name===`AbortError`?Error(`Request aborted: ${e.message}`):e}finally{clearTimeout(f)}})}function r(t){let{timeout:n=1e4}=t,r=()=>Math.random().toString(36);return e((e,i,a)=>{let o=t.socket();if(!o||o.readyState!==WebSocket.OPEN)return Promise.reject(Error(`WebSocket is not open`));let{promise:s,resolve:c,reject:l}=Promise.withResolvers(),u=a?.timeout??n,d,f=r(),p=e=>{try{let t=JSON.parse(e.data);return t.id===f?(clearTimeout(d),o.removeEventListener(`message`,p),`error`in t?l(t.error):c(t.result)):void 0}catch(e){l(e)}};return o.addEventListener(`message`,p),d=setTimeout(()=>{o.removeEventListener(`message`,p),l(`Timeout: ${u}`)},u),o.send(JSON.stringify({id:f,method:e,params:i})),s})}function i(t){return e((e,n,r)=>{let i=t.pick(e,n,r),a=e.split(`/`).filter(Boolean),o=i;for(let e of a)o[e]&&(o=o[e]);return o(n,r)})}export{n as createHTTPClient,i as createSuperClient,r as createWebSocketClient};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function e(e){return`request`in e}function t(e){return`ws`in e}export{t as n,e as t};
|
package/dist/context.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as isHTTP, i as WSContext, n as DefaultSocketData, o as isWS, r as HTTPContext, t as BaseContext } from "./context-
|
|
1
|
+
import { a as isHTTP, i as WSContext, n as DefaultSocketData, o as isWS, r as HTTPContext, t as BaseContext } from "./context-DNamt_XE.mjs";
|
|
2
2
|
export { BaseContext, DefaultSocketData, HTTPContext, WSContext, isHTTP, isWS };
|
package/dist/context.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import{n as e,t}from"./context-BAOh_2qI.mjs";export{t as isHTTP,e as isWS};
|
package/dist/cors.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { t as BaseContext } from "./context-
|
|
2
|
-
import "./http-
|
|
3
|
-
import { t as Middleware } from "./middleware-
|
|
1
|
+
import { t as BaseContext } from "./context-DNamt_XE.mjs";
|
|
2
|
+
import "./http-CD8MvQOV.mjs";
|
|
3
|
+
import { t as Middleware } from "./middleware-DVREjjkO.mjs";
|
|
4
4
|
|
|
5
5
|
//#region src/cors.d.ts
|
|
6
6
|
interface CorsConfig {
|
package/dist/cors.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./response-
|
|
1
|
+
import{t as e}from"./response-D9PTLpdq.mjs";const t={"Access-Control-Allow-Methods":[`GET`,`POST`,`PUT`,`PATCH`,`DELETE`,`OPTIONS`].join(`, `),"Access-Control-Allow-Headers":[`Accept-Language`,`Accept`,`Content-Type`,`Content-Language`,`Range`].join(`, `),"Access-Control-Expose-Headers":[`Cache-Control`,`Content-Language`,`Content-Type`,`Expires`,`Last-Modified`,`Pragma`].join(`, `),"Access-Control-Max-Age":`3600`};function n(n){let r={...t,...n.methods?.length&&{"Access-Control-Allow-Methods":n.methods.join(`, `)},...n.allowedHeaders?.length&&{"Access-Control-Allow-Headers":n.allowedHeaders.join(`, `)},...n.exposedHeaders?.length&&{"Access-Control-Expose-Headers":n.exposedHeaders.join(`, `)},...n.credentials&&!n.origin.includes(`*`)&&{"Access-Control-Allow-Credentials":`true`},...n.maxAge&&{"Access-Control-Max-Age":n.maxAge.toString()}};return async t=>{if(!(`request`in t.context))return t.next();let i=t.context.request.headers.get(`Origin`);if(!i||!n.origin.includes(i))return t.next();if(t.context.request.method===`OPTIONS`)return new Response(null,{status:204,headers:{"Access-Control-Allow-Origin":i,...r}});let a=e(await t.next());for(let e in a.headers.set(`Access-Control-Allow-Origin`,i),r)a.headers.set(e,r[e]);return a}}export{n as createCORSMiddleware};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{createCipheriv as e,createDecipheriv as t,createHmac as n,randomBytes as r,timingSafeEqual as i}from"node:crypto";const a=`aes-256-gcm`,o=`base64url`;function s(e,t){let r=Buffer.from(e).toString(o);return`${r}.${n(`sha256`,t).update(r).digest(o)}`}function c(e,t){let[r,a]=e.split(`.`);if(!r||!a)return null;let s=n(`sha256`,t).update(r).digest(o),c=Buffer.from(a,o),l=Buffer.from(s,o);return c.length!==l.length||!i(c,l)?null:Buffer.from(r,o).toString()}function l(t,n){let i=r(12),s=e(a,n,i),c=s.update(t,`utf-8`,o);return c+=s.final(o),Buffer.concat([i,s.getAuthTag(),Buffer.from(c,o)]).toString(o)}function u(e,n){let r=Buffer.from(e,o);if(r.length<28)return null;let i=r.subarray(0,12),s=r.subarray(12,28),c=r.subarray(28),l=t(a,n,i);return l.setAuthTag(s),`${l.update(c,void 0,`utf-8`)}${l.final(`utf-8`)}`}export{c as i,l as n,s as r,u as t};
|
package/dist/crypto.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{i as e,n as t,r as n,t as r}from"./crypto-DrpstqPB.mjs";export{r as decrypt,t as encrypt,n as sign,e as unsign};
|
package/dist/error.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e,i as t,n,r,t as i}from"./error-
|
|
1
|
+
import{a as e,i as t,n,r,t as i}from"./error-CvEWFOYT.mjs";export{i as NotFoundError,n as UltraError,r as UnauthorizedError,t as UnsupportedProtocolError,e as ValidationError};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { n as DefaultSocketData } from "./context-
|
|
2
|
-
import { o as Promisable } from "./types-
|
|
1
|
+
import { n as DefaultSocketData } from "./context-DNamt_XE.mjs";
|
|
2
|
+
import { o as Promisable } from "./types-CzIiTHWF.mjs";
|
|
3
3
|
import { BunRequest, Server } from "bun";
|
|
4
4
|
|
|
5
5
|
//#region src/http.d.ts
|
package/dist/http.d.mts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import "./context-
|
|
2
|
-
import { n as BunRoutes, r as HTTPMethod, t as BunRouteHandler } from "./http-
|
|
1
|
+
import "./context-DNamt_XE.mjs";
|
|
2
|
+
import { n as BunRoutes, r as HTTPMethod, t as BunRouteHandler } from "./http-CD8MvQOV.mjs";
|
|
3
3
|
export { BunRouteHandler, BunRoutes, HTTPMethod };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { t as BaseContext } from "./context-
|
|
2
|
-
import { o as Promisable } from "./types-
|
|
3
|
-
import { r as HTTPMethod } from "./http-
|
|
4
|
-
import { c as StandardSchemaV1 } from "./validation-
|
|
1
|
+
import { t as BaseContext } from "./context-DNamt_XE.mjs";
|
|
2
|
+
import { o as Promisable } from "./types-CzIiTHWF.mjs";
|
|
3
|
+
import { r as HTTPMethod } from "./http-CD8MvQOV.mjs";
|
|
4
|
+
import { c as StandardSchemaV1 } from "./validation-Dfgqsq2f.mjs";
|
|
5
5
|
|
|
6
6
|
//#region src/procedure.d.ts
|
|
7
7
|
interface ProcedureOptions<I, C> {
|
package/dist/middleware.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "./context-
|
|
2
|
-
import "./http-
|
|
3
|
-
import { n as MiddlewareOptions, t as Middleware } from "./middleware-
|
|
1
|
+
import "./context-DNamt_XE.mjs";
|
|
2
|
+
import "./http-CD8MvQOV.mjs";
|
|
3
|
+
import { n as MiddlewareOptions, t as Middleware } from "./middleware-DVREjjkO.mjs";
|
|
4
4
|
export { Middleware, MiddlewareOptions };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./validation-
|
|
1
|
+
import{t as e}from"./validation-s1s8P8HO.mjs";var t=class{inputSchema;outputSchema;handlerFunction;middleware=new Set;httpOptions;input(e){return e&&(this.inputSchema=e),this}output(e){return e&&(this.outputSchema=e),this}handler(e){return this.handlerFunction=e,this}http(e){return this.httpOptions={...e,enabled:!0},this}use(e){return this.middleware.add(e),this}wrap(){if(!this.handlerFunction)throw Error(`Procedure handler is not defined`);if(!this.inputSchema&&!this.outputSchema&&!this.middleware.size)return this.handlerFunction;let t=this.handlerFunction;switch(!0){case!this.inputSchema&&!this.outputSchema:break;case!this.inputSchema:{let n=t;t=async t=>e(this.outputSchema,await n(t));break}case!this.outputSchema:{let n=t;t=async t=>n({...t,input:await e(this.inputSchema,t.input)});break}default:{let n=t;t=async t=>{let r=await n({...t,input:await e(this.inputSchema,t.input)});return e(this.outputSchema,r)}}}if(this.middleware.size){let e=Array.from(this.middleware);for(let n=e.length-1;n>=0;n--){let r=e[n],i=t;t=e=>r({...e,next:()=>i(e)})}}return t}getInfo(){return{http:this.httpOptions,hasInput:!!this.inputSchema,hasOutput:!!this.outputSchema}}};export{t};
|
package/dist/procedure.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "./context-
|
|
2
|
-
import "./http-
|
|
3
|
-
import { a as ProcedureHandler, i as Procedure, o as ProcedureOptions, r as HTTPOptions } from "./middleware-
|
|
1
|
+
import "./context-DNamt_XE.mjs";
|
|
2
|
+
import "./http-CD8MvQOV.mjs";
|
|
3
|
+
import { a as ProcedureHandler, i as Procedure, o as ProcedureOptions, r as HTTPOptions } from "./middleware-DVREjjkO.mjs";
|
|
4
4
|
export { HTTPOptions, Procedure, ProcedureHandler, ProcedureOptions };
|
package/dist/procedure.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./procedure-
|
|
1
|
+
import{t as e}from"./procedure-BekIoOQX.mjs";export{e as Procedure};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e}from"./error-
|
|
1
|
+
import{n as e}from"./error-CvEWFOYT.mjs";function t(t){switch(!0){case t instanceof Response:return t;case t instanceof e:return t.toResponse();case t instanceof Error:return new Response(`Internal Server Error`,{status:500});case typeof t==`object`:return Response.json(t);case!t:return new Response(null,{status:204});default:return new Response(String(t))}}function n(t,n){let r;switch(!0){case n instanceof e:r={id:t,error:{code:n.status,message:n.message}};break;case n instanceof Error:r={id:t,error:{code:500,message:n.message}};break;case n instanceof Response:r={id:t,error:{code:n.status,message:n.statusText}};break;case typeof n==`object`||typeof n==`number`||typeof n==`boolean`:r={id:t,result:n};break;default:r={id:t,result:String(n)}}return JSON.stringify(r)}export{n,t};
|
package/dist/response.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e,t}from"./response-
|
|
1
|
+
import{n as e,t}from"./response-D9PTLpdq.mjs";export{t as toHTTPResponse,e as toRPCResponse};
|
package/dist/rpc.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as isRPC, i as SuccessResult, n as Payload, r as Result, t as ErrorResult } from "./rpc-
|
|
1
|
+
import { a as isRPC, i as SuccessResult, n as Payload, r as Result, t as ErrorResult } from "./rpc-DADpT17P.mjs";
|
|
2
2
|
export { ErrorResult, Payload, Result, SuccessResult, isRPC };
|
package/dist/rpc.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./rpc-
|
|
1
|
+
import{t as e}from"./rpc-D9H6IkRD.mjs";export{e as isRPC};
|
package/dist/session.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { n as DefaultSocketData, r as HTTPContext, t as BaseContext } from "./context-
|
|
2
|
-
import { a as JSONValue, o as Promisable, r as JSONObject, t as DeepReadonly } from "./types-
|
|
3
|
-
import "./http-
|
|
4
|
-
import "./middleware-
|
|
1
|
+
import { n as DefaultSocketData, r as HTTPContext, t as BaseContext } from "./context-DNamt_XE.mjs";
|
|
2
|
+
import { a as JSONValue, o as Promisable, r as JSONObject, t as DeepReadonly } from "./types-CzIiTHWF.mjs";
|
|
3
|
+
import "./http-CD8MvQOV.mjs";
|
|
4
|
+
import "./middleware-DVREjjkO.mjs";
|
|
5
5
|
import { ProceduresMap, Ultra } from "./ultra.mjs";
|
|
6
6
|
import { BunRequest, CookieSameSite, RedisClient } from "bun";
|
|
7
7
|
|
package/dist/session.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as e}from"./error-
|
|
1
|
+
import{i as e}from"./error-CvEWFOYT.mjs";import{Ultra as t}from"./ultra.mjs";import{n,t as r}from"./context-BAOh_2qI.mjs";import{i,r as a}from"./crypto-DrpstqPB.mjs";import{randomBytes as o}from"node:crypto";function s(e){return{...e,cookie:{path:`/`,httpOnly:!0,secure:!0,sameSite:`lax`,maxAge:e.ttlSec,...e?.cookie}}}function c(e){return new t().deriveWS(t=>({sessionId:l.getOrCreateId(t.request,e)})).derive(t=>({session:new l(e,t)})).use(async({context:e,next:t})=>{await e.session.initiate();let n=await t();return await e.session.commit(),n})}var l=class t{static makeId(){return o(16).toString(`base64url`)}static getOrCreateId(e,n){let r=e.cookies.get(n.name);return r&&i(r,n.secret)||t.makeId()}config;context;store;sessionIdFromClient=null;sessionId;sessionState=null;modified=!1;constructor(a,o){switch(this.config=a,this.context=o,this.store=a.stores[a.store](a,o),!0){case r(o):{let e=o.request.cookies.get(a.name);e&&(this.sessionIdFromClient=i(e,a.secret));break}case n(o):this.sessionIdFromClient=o.ws.data.sessionId||null;break;default:throw new e(`Session management is only supported for HTTP and WebSocket protocols.`)}this.sessionId=this.sessionIdFromClient||t.makeId()}get id(){return this.sessionId}async initiate(){this.sessionState||=await this.store.read(this.sessionId)||{}}async commit(){if(this.touch(),this.isEmpty&&this.sessionIdFromClient)return this.store.destroy(this.sessionIdFromClient);this.sessionIdFromClient&&this.sessionIdFromClient!==this.sessionId?(await this.store.destroy(this.sessionIdFromClient),await this.store.write(this.sessionId,this.state)):this.modified?await this.store.write(this.sessionId,this.state):await this.store.touch(this.sessionId)}regenerate(){this.sessionId=t.makeId()}get(e,t){return this.state[e]??t??null}set(e,t){this.state[e]=t,this.modified=!0}has(e){return Object.hasOwn(this.state,e)}all(){return this.state}delete(e){delete this.state[e],this.modified=!0}clear(){this.sessionState={},this.modified=!0}get state(){if(!this.sessionState)throw Error(`Session is not initiated yet.`);return this.sessionState}get isEmpty(){return Object.keys(this.state).length===0}touch(){`request`in this.context&&this.context.request.cookies.set(this.config.name,a(this.sessionId,this.config.secret),this.config.cookie)}},u=class{config;connection;constructor(e,t){this.config=e,this.connection=t}async read(e){let t=await this.connection.get(`${this.config.name}:${e}`);return t?JSON.parse(t):null}async write(e,t){await this.connection.set(`${this.config.name}:${e}`,JSON.stringify(t),`EX`,this.config.ttlSec)}async destroy(e){await this.connection.del(`${this.config.name}:${e}`)}async touch(e){await this.connection.expire(`${this.config.name}:${e}`,this.config.ttlSec)}},d=class{config;sessions=new Map;sweepIntervalMs;ttlMs;lastSweepAt=Date.now();constructor(e,t=e.ttlSec){this.config=e,this.sweepIntervalMs=t*1e3,this.ttlMs=e.ttlSec*1e3}read(e){return this.maybeSweep(),this.sessions.get(e)?.data||null}write(e,t){this.maybeSweep(),this.sessions.set(e,{data:t,touched:Date.now()})}destroy(e){this.maybeSweep(),this.sessions.delete(e)}touch(e){this.maybeSweep();let t=this.sessions.get(e);t&&(t.touched=Date.now())}maybeSweep(e=Date.now()){if(!(e-this.lastSweepAt<this.sweepIntervalMs)){this.lastSweepAt=e;for(let[t,n]of this.sessions)e-n.touched>this.ttlMs&&this.sessions.delete(t)}}};export{d as MemorySessionStore,u as RedisSessionStore,l as Session,c as createSessionModule,s as defineConfig};
|
package/dist/test.d.mts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
package/dist/test.mjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Ultra as e}from"./ultra.mjs";import{SessionAuthProvider as t,createAuthModule as n,isGuest as r}from"./auth.mjs";import{createHTTPClient as i}from"./client.mjs";import{MemorySessionStore as a,createSessionModule as o,defineConfig as s}from"./session.mjs";const c=o(s({secret:`supersecretkey`,name:``,ttlSec:0,store:`memory`,cookie:{},stores:{memory:e=>new a(e)}})),l=n({provider:`session`,providers:{session:e=>new t(e)}}).use(c);new e().use(l).use(r),i({baseUrl:`dasd`});export{};
|
package/dist/types.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as JSONValue, i as JSONPrimitive, n as JSONArray, o as Promisable, r as JSONObject, t as DeepReadonly } from "./types-
|
|
1
|
+
import { a as JSONValue, i as JSONPrimitive, n as JSONArray, o as Promisable, r as JSONObject, t as DeepReadonly } from "./types-CzIiTHWF.mjs";
|
|
2
2
|
export { DeepReadonly, JSONArray, JSONObject, JSONPrimitive, JSONValue, Promisable };
|
package/dist/ultra.d.mts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { n as DefaultSocketData, t as BaseContext } from "./context-
|
|
2
|
-
import { o as Promisable } from "./types-
|
|
3
|
-
import { n as BunRoutes } from "./http-
|
|
4
|
-
import { c as StandardSchemaV1 } from "./validation-
|
|
5
|
-
import { a as ProcedureHandler, i as Procedure, t as Middleware } from "./middleware-
|
|
6
|
-
import { n as Payload } from "./rpc-
|
|
1
|
+
import { n as DefaultSocketData, t as BaseContext } from "./context-DNamt_XE.mjs";
|
|
2
|
+
import { o as Promisable } from "./types-CzIiTHWF.mjs";
|
|
3
|
+
import { n as BunRoutes } from "./http-CD8MvQOV.mjs";
|
|
4
|
+
import { c as StandardSchemaV1 } from "./validation-Dfgqsq2f.mjs";
|
|
5
|
+
import { a as ProcedureHandler, i as Procedure, t as Middleware } from "./middleware-DVREjjkO.mjs";
|
|
6
|
+
import { n as Payload } from "./rpc-DADpT17P.mjs";
|
|
7
7
|
import { BunRequest, ErrorLike, Server, ServerWebSocket } from "bun";
|
|
8
8
|
|
|
9
9
|
//#region src/ultra.d.ts
|
package/dist/ultra.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./procedure-
|
|
1
|
+
import{t as e}from"./procedure-BekIoOQX.mjs";import{n as t,t as n}from"./response-D9PTLpdq.mjs";import{t as r}from"./rpc-D9H6IkRD.mjs";import{serve as i}from"bun";var a=class{initializers=new Set;handlers=new Map;events=new Map;middlewares=new Set;derived=new Set;derivedWS=new Set;options={http:!0};server;constructor(e){Object.assign(this.options,e)}routes(e){return this.initializers.add(e),this}use(e){return typeof e==`function`?(this.middlewares.add(e),this):(this.merge(e),this)}derive(e){return this.derived.add(e),this}deriveWS(e){return this.derivedWS.add(e),this}start(e){if(this.server)return console.warn(`Server is already running`),this.server;let t=this.buildProcedures(),n=this.wrapHandler(()=>new Response(`Not Found`,{status:404}));return this.server=i({...e??{},routes:{...this.options.http&&{...this.buildRoutes(t),"/*":async(e,t)=>(this.emit(`http:request`,e,t),n({input:null,context:this.derived.size?await this.enrichContext({server:t,request:e}):{server:t,request:e}}))},"/ws":async(e,t)=>{if(this.derivedWS.size){let n={},r=this.derived.size?await this.enrichContext({server:t,request:e}):{server:t,request:e};for(let e of this.derivedWS)Object.assign(n,typeof e==`function`?await e(r):e);t.upgrade(e,{data:n});return}t.upgrade(e)}},websocket:{open:e=>{this.emit(`ws:open`,e)},close:(e,t,n)=>{this.emit(`ws:close`,e,t,n)},message:(e,t)=>{if(this.emit(`ws:message`,e,t),typeof t!=`string`)return;let n=JSON.parse(t);r(n)&&this.handleRPC(e,n)}},error:e=>(this.emit(`unhandled:error`,e),console.error(`Unhandled server error:`,e),new Response(`Internal Server Error`,{status:500}))}),this.emit(`server:started`,this.server),this.server}async stop(e=!1){if(!this.server)return console.error(`Server is not running`);await this.server.stop(e),this.emit(`server:stopped`,this.server,e)}on(e,t){return this.events.has(e)||this.events.set(e,new Set),this.events.get(e).add(t),this}off(e,t){return this.events.get(e)?.delete(t),this}emit(e,...t){return this.events.get(e)?.forEach(e=>e(...t)),this}async handleRPC(e,n){let r=this.handlers.get(n.method);if(!r){e.send(`{"id": "${n.id}", "error": {"code": 404, "message": "Not found"}}`);return}try{e.send(t(n.id,await r({input:n.params,context:await this.enrichContext({server:this.server,ws:e})})))}catch(r){this.emit(`error`,r),e.send(t(n.id,r))}}async enrichContext(e){for(let t of this.derived)Object.assign(e,typeof t==`function`?await t(e):t);return e}merge(e){e.initializers.forEach(e=>this.initializers.add(e)),e.derived.forEach(e=>this.derived.add(e)),e.derivedWS.forEach(e=>this.derivedWS.add(e)),e.middlewares.forEach(e=>this.middlewares.add(e)),e.events.forEach((e,t)=>{this.events.has(t)||this.events.set(t,new Set);let n=this.events.get(t);e.forEach(e=>n.add(e))})}wrapHandler(e){if(!this.middlewares.size)return e;let t=Array.from(this.middlewares);return async n=>{let r=0,i=()=>r===t.length?e(n):t[r++]({...n,next:i});return i()}}buildProcedures(){let t=new Map,n=t=>{let n=new e;return t?n.input(t):n};for(let r of this.initializers){let i=r(n),a=[];for(let[e,t]of Object.entries(i))a.push({path:e,value:t});for(;a.length;){let{path:n,value:r}=a.pop();if(r instanceof e){if(t.has(n))throw Error(`Procedure conflict at path "${n}"`);t.set(n,r),this.handlers.set(n,this.wrapHandler(r.wrap()));continue}for(let[e,t]of Object.entries(r)){let r=n?`${n}/${e}`:e;a.push({path:r,value:t})}}}return t}buildRoutes(e){let t={};for(let[r,i]of e){let e=i.getInfo();if(!e.http?.enabled)continue;let a=`/${r}`,o=this.handlers.get(r);if(!o)throw Error(`Handler for procedure at path "${r}" is not defined`);let s=async(t,i)=>{this.emit(`http:request`,t,i);let a=t.body,s={server:i,request:t},c=this.derived.size?await this.enrichContext(s):s;if(a&&e.hasInput){if(t.method===`GET`){let e=t.url.indexOf(`?`);e!==-1&&e<t.url.length-1&&(a=Object.fromEntries(new URLSearchParams(t.url.slice(e+1)).entries()))}else if(t.headers.get(`Content-Length`)!==`0`){let e=t.headers.get(`Content-Type`);if(e)switch(!0){case e.startsWith(`application/json`):a=await t.json();break;case e.startsWith(`text`):a=await t.text();break;case e.startsWith(`multipart/form-data`):a=await t.formData();break;default:console.error(`Unsupported Content-Type for procedure ${r}: ${e}`);break}}}try{return n(await o({input:a,context:c}))}catch(e){return this.emit(`error`,e),n(e)}};if(!e.http.method){t[a]=s;continue}t[a]||(t[a]={}),t[a][e.http.method]=s}return t}};export{a as Ultra};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e}from"./error-
|
|
1
|
+
import{a as e}from"./error-CvEWFOYT.mjs";async function t(t,n){let r=t[`~standard`].validate(n);if(r instanceof Promise&&(r=await r),r.issues)throw new e(JSON.stringify(r.issues,null,2));return r.value}export{t};
|
package/dist/validation.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as PathSegment, c as StandardSchemaV1, d as validate, i as Issue, l as SuccessResult, n as InferInput, o as Props, r as InferOutput, s as Result, t as FailureResult, u as Types } from "./validation-
|
|
1
|
+
import { a as PathSegment, c as StandardSchemaV1, d as validate, i as Issue, l as SuccessResult, n as InferInput, o as Props, r as InferOutput, s as Result, t as FailureResult, u as Types } from "./validation-Dfgqsq2f.mjs";
|
|
2
2
|
export { FailureResult, InferInput, InferOutput, Issue, PathSegment, Props, Result, StandardSchemaV1, SuccessResult, Types, validate };
|
package/dist/validation.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./validation-
|
|
1
|
+
import{t as e}from"./validation-s1s8P8HO.mjs";export{e as validate};
|
package/package.json
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|