@elysiajs/eden 1.0.0-beta.1 → 1.0.0-beta.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.
@@ -9,62 +9,59 @@ type Replace<RecordType, TargetType, GenericType> = {
9
9
  };
10
10
  type MaybeArray<T> = T | T[];
11
11
  export declare namespace EdenTreaty {
12
- export type Create<App extends Elysia<any, any, any, any, any, any>> = App extends {
12
+ export type Create<App extends Elysia<any, any, any, any, any, any, any, any>> = App extends {
13
13
  _routes: infer Schema extends Record<string, unknown>;
14
14
  } ? Prettify<Sign<Schema>> : 'Please install Elysia before using Eden';
15
15
  export type Sign<Route extends Record<string, any>> = {
16
- [K in keyof Route as K extends `:${string}` ? (string & {}) | number | K : K]: Route[K] extends {
17
- [method in string]: {
18
- body: infer Body;
19
- headers: infer Headers;
20
- query: infer Query;
21
- params: unknown;
22
- response: infer Response;
23
- };
24
- } ? {
25
- [Method in keyof Route[K]]: Method extends 'subscribe' ? undefined extends Route['query'] ? (params?: {
26
- $query?: Record<string, string>;
27
- }) => EdenWS<Route> : (params: {
28
- $query: Route['query'];
29
- }) => EdenWS<Route> : ((params: Prettify<{
30
- $fetch?: RequestInit;
31
- getRaw?: boolean;
32
- } & (IsUnknown<Body> extends false ? Replace<Body, Blob | Blob[], Files> : {}) & (undefined extends Query ? {
33
- $query?: Record<string, string>;
34
- } : {
35
- $query: Query;
36
- }) & (undefined extends Headers ? {
37
- $headers?: Record<string, unknown>;
38
- } : {
39
- $headers: Headers;
40
- })>) => Promise<({
41
- data: Response extends {
42
- 200: infer ReturnedType;
43
- } ? Awaited<ReturnedType> : unknown;
44
- error: null;
45
- } | {
46
- data: null;
47
- error: Response extends Record<number, unknown> ? MapError<Response> extends infer Errors ? IsNever<Errors> extends true ? EdenFetchError<number, string> : Errors : EdenFetchError<number, string> : EdenFetchError<number, unknown>;
48
- }) & {
49
- status: number;
50
- response: Response;
51
- headers: Record<string, string>;
52
- }>) extends (params: infer Params) => infer Response ? {
53
- $params: undefined;
54
- $headers: undefined;
55
- $query: undefined;
56
- } extends Params ? (params?: Params, options?: {
57
- fetch?: RequestInit;
58
- transform?: EdenTreaty.Transform<Response>;
59
- query?: Params['query'];
60
- headers?: Params['headers'];
61
- }) => Response : (params: Params, options?: {
62
- fetch?: RequestInit;
63
- transform?: EdenTreaty.Transform<Response>;
64
- query?: Params['query'];
65
- headers?: Params['headers'];
66
- }) => Response : never;
67
- } : Prettify<Sign<Route[K]>>;
16
+ [K in keyof Route as K extends `:${string}` ? (string & {}) | number | K : K extends '' | '/' ? 'index' : K]: Route[K] extends {
17
+ body: infer Body;
18
+ headers: infer Headers;
19
+ query: infer Query;
20
+ params: unknown;
21
+ response: infer Response;
22
+ } ? K extends 'subscribe' ? undefined extends Route['query'] ? (params?: {
23
+ $query?: Record<string, string>;
24
+ }) => EdenWS<Route> : (params: {
25
+ $query: Route['query'];
26
+ }) => EdenWS<Route> : ((params: Prettify<{
27
+ $fetch?: RequestInit;
28
+ getRaw?: boolean;
29
+ $transform?: Transform;
30
+ } & (IsUnknown<Body> extends false ? Replace<Body, Blob | Blob[], Files> : {}) & (undefined extends Query ? {
31
+ $query?: Record<string, string>;
32
+ } : {
33
+ $query: Query;
34
+ }) & (undefined extends Headers ? {
35
+ $headers?: Record<string, unknown>;
36
+ } : {
37
+ $headers: Headers;
38
+ })>) => Promise<({
39
+ data: Response extends {
40
+ 200: infer ReturnedType;
41
+ } ? Awaited<ReturnedType> : unknown;
42
+ error: null;
43
+ } | {
44
+ data: null;
45
+ error: Response extends Record<number, unknown> ? MapError<Response> extends infer Errors ? IsNever<Errors> extends true ? EdenFetchError<number, string> : Errors : EdenFetchError<number, string> : EdenFetchError<number, unknown>;
46
+ }) & {
47
+ status: number;
48
+ response: Response;
49
+ headers: Record<string, string>;
50
+ }>) extends (params: infer Params) => infer Response ? {
51
+ $params: undefined;
52
+ $headers: undefined;
53
+ $query: undefined;
54
+ } extends Params ? (params?: Params, options?: {
55
+ fetch?: RequestInit;
56
+ transform?: EdenTreaty.Transform<Response>;
57
+ query?: Params['query'];
58
+ headers?: Params['headers'];
59
+ }) => Response : (params: Params, options?: {
60
+ fetch?: RequestInit;
61
+ transform?: EdenTreaty.Transform<Response>;
62
+ query?: Params['query'];
63
+ headers?: Params['headers'];
64
+ }) => Response : never : Prettify<Sign<Route[K]>>;
68
65
  };
69
66
  type UnwrapPromise<T> = T extends Promise<infer A> ? A : T;
70
67
  export type Transform<T = unknown> = MaybeArray<(response: unknown extends T ? {
package/dist/treaty.d.mts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Elysia, InputSchema } from 'elysia';
2
- import { P as Prettify, I as IsUnknown, M as MapError, a as IsNever, E as EdenFetchError } from './types-BQi-Ff9p.js';
2
+ import { P as Prettify, I as IsUnknown, M as MapError, a as IsNever, E as EdenFetchError } from './types-DNydNaKe.js';
3
3
 
4
4
  /// <reference lib="dom" />
5
5
 
@@ -9,62 +9,59 @@ type Replace<RecordType, TargetType, GenericType> = {
9
9
  };
10
10
  type MaybeArray<T> = T | T[];
11
11
  declare namespace EdenTreaty {
12
- export type Create<App extends Elysia<any, any, any, any, any, any>> = App extends {
12
+ export type Create<App extends Elysia<any, any, any, any, any, any, any, any>> = App extends {
13
13
  _routes: infer Schema extends Record<string, unknown>;
14
14
  } ? Prettify<Sign<Schema>> : 'Please install Elysia before using Eden';
15
15
  export type Sign<Route extends Record<string, any>> = {
16
- [K in keyof Route as K extends `:${string}` ? (string & {}) | number | K : K]: Route[K] extends {
17
- [method in string]: {
18
- body: infer Body;
19
- headers: infer Headers;
20
- query: infer Query;
21
- params: unknown;
22
- response: infer Response;
23
- };
24
- } ? {
25
- [Method in keyof Route[K]]: Method extends 'subscribe' ? undefined extends Route['query'] ? (params?: {
26
- $query?: Record<string, string>;
27
- }) => EdenWS<Route> : (params: {
28
- $query: Route['query'];
29
- }) => EdenWS<Route> : ((params: Prettify<{
30
- $fetch?: RequestInit;
31
- getRaw?: boolean;
32
- } & (IsUnknown<Body> extends false ? Replace<Body, Blob | Blob[], Files> : {}) & (undefined extends Query ? {
33
- $query?: Record<string, string>;
34
- } : {
35
- $query: Query;
36
- }) & (undefined extends Headers ? {
37
- $headers?: Record<string, unknown>;
38
- } : {
39
- $headers: Headers;
40
- })>) => Promise<({
41
- data: Response extends {
42
- 200: infer ReturnedType;
43
- } ? Awaited<ReturnedType> : unknown;
44
- error: null;
45
- } | {
46
- data: null;
47
- error: Response extends Record<number, unknown> ? MapError<Response> extends infer Errors ? IsNever<Errors> extends true ? EdenFetchError<number, string> : Errors : EdenFetchError<number, string> : EdenFetchError<number, unknown>;
48
- }) & {
49
- status: number;
50
- response: Response;
51
- headers: Record<string, string>;
52
- }>) extends (params: infer Params) => infer Response ? {
53
- $params: undefined;
54
- $headers: undefined;
55
- $query: undefined;
56
- } extends Params ? (params?: Params, options?: {
57
- fetch?: RequestInit;
58
- transform?: EdenTreaty.Transform<Response>;
59
- query?: Params['query'];
60
- headers?: Params['headers'];
61
- }) => Response : (params: Params, options?: {
62
- fetch?: RequestInit;
63
- transform?: EdenTreaty.Transform<Response>;
64
- query?: Params['query'];
65
- headers?: Params['headers'];
66
- }) => Response : never;
67
- } : Prettify<Sign<Route[K]>>;
16
+ [K in keyof Route as K extends `:${string}` ? (string & {}) | number | K : K extends '' | '/' ? 'index' : K]: Route[K] extends {
17
+ body: infer Body;
18
+ headers: infer Headers;
19
+ query: infer Query;
20
+ params: unknown;
21
+ response: infer Response;
22
+ } ? K extends 'subscribe' ? undefined extends Route['query'] ? (params?: {
23
+ $query?: Record<string, string>;
24
+ }) => EdenWS<Route> : (params: {
25
+ $query: Route['query'];
26
+ }) => EdenWS<Route> : ((params: Prettify<{
27
+ $fetch?: RequestInit;
28
+ getRaw?: boolean;
29
+ $transform?: Transform;
30
+ } & (IsUnknown<Body> extends false ? Replace<Body, Blob | Blob[], Files> : {}) & (undefined extends Query ? {
31
+ $query?: Record<string, string>;
32
+ } : {
33
+ $query: Query;
34
+ }) & (undefined extends Headers ? {
35
+ $headers?: Record<string, unknown>;
36
+ } : {
37
+ $headers: Headers;
38
+ })>) => Promise<({
39
+ data: Response extends {
40
+ 200: infer ReturnedType;
41
+ } ? Awaited<ReturnedType> : unknown;
42
+ error: null;
43
+ } | {
44
+ data: null;
45
+ error: Response extends Record<number, unknown> ? MapError<Response> extends infer Errors ? IsNever<Errors> extends true ? EdenFetchError<number, string> : Errors : EdenFetchError<number, string> : EdenFetchError<number, unknown>;
46
+ }) & {
47
+ status: number;
48
+ response: Response;
49
+ headers: Record<string, string>;
50
+ }>) extends (params: infer Params) => infer Response ? {
51
+ $params: undefined;
52
+ $headers: undefined;
53
+ $query: undefined;
54
+ } extends Params ? (params?: Params, options?: {
55
+ fetch?: RequestInit;
56
+ transform?: EdenTreaty.Transform<Response>;
57
+ query?: Params['query'];
58
+ headers?: Params['headers'];
59
+ }) => Response : (params: Params, options?: {
60
+ fetch?: RequestInit;
61
+ transform?: EdenTreaty.Transform<Response>;
62
+ query?: Params['query'];
63
+ headers?: Params['headers'];
64
+ }) => Response : never : Prettify<Sign<Route[K]>>;
68
65
  };
69
66
  type UnwrapPromise<T> = T extends Promise<infer A> ? A : T;
70
67
  export type Transform<T = unknown> = MaybeArray<(response: unknown extends T ? {
@@ -113,6 +110,14 @@ declare class EdenWS<Schema extends InputSchema<any> = InputSchema> {
113
110
  removeEventListener<K extends keyof WebSocketEventMap>(type: K, listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any, options?: boolean | EventListenerOptions): this;
114
111
  close(): this;
115
112
  }
116
- declare const edenTreaty: <App extends Elysia<any, any, any, any, any, any>>(domain: string, config?: EdenTreaty.Config) => EdenTreaty.Create<App>;
113
+ declare const edenTreaty: <App extends Elysia<any, any, any, any, any, any, {
114
+ decorator: {};
115
+ store: {};
116
+ derive: {};
117
+ resolve: {};
118
+ }, {
119
+ schema: {};
120
+ macro: {};
121
+ }>>(domain: string, config?: EdenTreaty.Config) => EdenTreaty.Create<App>;
117
122
 
118
123
  export { EdenTreaty, EdenWS, edenTreaty };
package/dist/treaty.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Elysia, InputSchema } from 'elysia';
2
- import { P as Prettify, I as IsUnknown, M as MapError, a as IsNever, E as EdenFetchError } from './types-BQi-Ff9p.js';
2
+ import { P as Prettify, I as IsUnknown, M as MapError, a as IsNever, E as EdenFetchError } from './types-DNydNaKe.js';
3
3
 
4
4
  /// <reference lib="dom" />
5
5
 
@@ -9,62 +9,59 @@ type Replace<RecordType, TargetType, GenericType> = {
9
9
  };
10
10
  type MaybeArray<T> = T | T[];
11
11
  declare namespace EdenTreaty {
12
- export type Create<App extends Elysia<any, any, any, any, any, any>> = App extends {
12
+ export type Create<App extends Elysia<any, any, any, any, any, any, any, any>> = App extends {
13
13
  _routes: infer Schema extends Record<string, unknown>;
14
14
  } ? Prettify<Sign<Schema>> : 'Please install Elysia before using Eden';
15
15
  export type Sign<Route extends Record<string, any>> = {
16
- [K in keyof Route as K extends `:${string}` ? (string & {}) | number | K : K]: Route[K] extends {
17
- [method in string]: {
18
- body: infer Body;
19
- headers: infer Headers;
20
- query: infer Query;
21
- params: unknown;
22
- response: infer Response;
23
- };
24
- } ? {
25
- [Method in keyof Route[K]]: Method extends 'subscribe' ? undefined extends Route['query'] ? (params?: {
26
- $query?: Record<string, string>;
27
- }) => EdenWS<Route> : (params: {
28
- $query: Route['query'];
29
- }) => EdenWS<Route> : ((params: Prettify<{
30
- $fetch?: RequestInit;
31
- getRaw?: boolean;
32
- } & (IsUnknown<Body> extends false ? Replace<Body, Blob | Blob[], Files> : {}) & (undefined extends Query ? {
33
- $query?: Record<string, string>;
34
- } : {
35
- $query: Query;
36
- }) & (undefined extends Headers ? {
37
- $headers?: Record<string, unknown>;
38
- } : {
39
- $headers: Headers;
40
- })>) => Promise<({
41
- data: Response extends {
42
- 200: infer ReturnedType;
43
- } ? Awaited<ReturnedType> : unknown;
44
- error: null;
45
- } | {
46
- data: null;
47
- error: Response extends Record<number, unknown> ? MapError<Response> extends infer Errors ? IsNever<Errors> extends true ? EdenFetchError<number, string> : Errors : EdenFetchError<number, string> : EdenFetchError<number, unknown>;
48
- }) & {
49
- status: number;
50
- response: Response;
51
- headers: Record<string, string>;
52
- }>) extends (params: infer Params) => infer Response ? {
53
- $params: undefined;
54
- $headers: undefined;
55
- $query: undefined;
56
- } extends Params ? (params?: Params, options?: {
57
- fetch?: RequestInit;
58
- transform?: EdenTreaty.Transform<Response>;
59
- query?: Params['query'];
60
- headers?: Params['headers'];
61
- }) => Response : (params: Params, options?: {
62
- fetch?: RequestInit;
63
- transform?: EdenTreaty.Transform<Response>;
64
- query?: Params['query'];
65
- headers?: Params['headers'];
66
- }) => Response : never;
67
- } : Prettify<Sign<Route[K]>>;
16
+ [K in keyof Route as K extends `:${string}` ? (string & {}) | number | K : K extends '' | '/' ? 'index' : K]: Route[K] extends {
17
+ body: infer Body;
18
+ headers: infer Headers;
19
+ query: infer Query;
20
+ params: unknown;
21
+ response: infer Response;
22
+ } ? K extends 'subscribe' ? undefined extends Route['query'] ? (params?: {
23
+ $query?: Record<string, string>;
24
+ }) => EdenWS<Route> : (params: {
25
+ $query: Route['query'];
26
+ }) => EdenWS<Route> : ((params: Prettify<{
27
+ $fetch?: RequestInit;
28
+ getRaw?: boolean;
29
+ $transform?: Transform;
30
+ } & (IsUnknown<Body> extends false ? Replace<Body, Blob | Blob[], Files> : {}) & (undefined extends Query ? {
31
+ $query?: Record<string, string>;
32
+ } : {
33
+ $query: Query;
34
+ }) & (undefined extends Headers ? {
35
+ $headers?: Record<string, unknown>;
36
+ } : {
37
+ $headers: Headers;
38
+ })>) => Promise<({
39
+ data: Response extends {
40
+ 200: infer ReturnedType;
41
+ } ? Awaited<ReturnedType> : unknown;
42
+ error: null;
43
+ } | {
44
+ data: null;
45
+ error: Response extends Record<number, unknown> ? MapError<Response> extends infer Errors ? IsNever<Errors> extends true ? EdenFetchError<number, string> : Errors : EdenFetchError<number, string> : EdenFetchError<number, unknown>;
46
+ }) & {
47
+ status: number;
48
+ response: Response;
49
+ headers: Record<string, string>;
50
+ }>) extends (params: infer Params) => infer Response ? {
51
+ $params: undefined;
52
+ $headers: undefined;
53
+ $query: undefined;
54
+ } extends Params ? (params?: Params, options?: {
55
+ fetch?: RequestInit;
56
+ transform?: EdenTreaty.Transform<Response>;
57
+ query?: Params['query'];
58
+ headers?: Params['headers'];
59
+ }) => Response : (params: Params, options?: {
60
+ fetch?: RequestInit;
61
+ transform?: EdenTreaty.Transform<Response>;
62
+ query?: Params['query'];
63
+ headers?: Params['headers'];
64
+ }) => Response : never : Prettify<Sign<Route[K]>>;
68
65
  };
69
66
  type UnwrapPromise<T> = T extends Promise<infer A> ? A : T;
70
67
  export type Transform<T = unknown> = MaybeArray<(response: unknown extends T ? {
@@ -113,6 +110,14 @@ declare class EdenWS<Schema extends InputSchema<any> = InputSchema> {
113
110
  removeEventListener<K extends keyof WebSocketEventMap>(type: K, listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any, options?: boolean | EventListenerOptions): this;
114
111
  close(): this;
115
112
  }
116
- declare const edenTreaty: <App extends Elysia<any, any, any, any, any, any>>(domain: string, config?: EdenTreaty.Config) => EdenTreaty.Create<App>;
113
+ declare const edenTreaty: <App extends Elysia<any, any, any, any, any, any, {
114
+ decorator: {};
115
+ store: {};
116
+ derive: {};
117
+ resolve: {};
118
+ }, {
119
+ schema: {};
120
+ macro: {};
121
+ }>>(domain: string, config?: EdenTreaty.Config) => EdenTreaty.Create<App>;
117
122
 
118
123
  export { EdenTreaty, EdenWS, edenTreaty };
@@ -1 +1 @@
1
- "use strict";var Eden=(()=>{var $=Object.defineProperty;var B=Object.getOwnPropertyDescriptor;var H=Object.getOwnPropertyNames;var U=Object.prototype.hasOwnProperty;var V=(t,e)=>{for(var n in e)$(t,n,{get:e[n],enumerable:!0})},G=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of H(e))!U.call(t,a)&&a!==n&&$(t,a,{get:()=>e[a],enumerable:!(r=B(e,a))||r.enumerable});return t};var _=t=>G($({},"__esModule",{value:!0}),t);var X={};V(X,{EdenWS:()=>w,edenTreaty:()=>Q});var S=class extends Error{constructor(n,r){super(r+"");this.status=n;this.value=r}};var K=(t,e,n)=>{if(t.endsWith("/")||(t+="/"),e==="index"&&(e=""),!n||!Object.keys(n).length)return`${t}${e}`;let r="";for(let[a,s]of Object.entries(n))r+=`${a}=${s}&`;return`${t}${e}?${r.slice(0,-1)}`},O=t=>t.trim().length!==0&&!Number.isNaN(Number(t));var F=typeof FileList>"u",N=t=>F?t instanceof Blob:t instanceof FileList||t instanceof File,z=t=>{if(!t)return!1;for(let e in t){if(N(t[e]))return!0;if(Array.isArray(t[e])&&t[e].find(n=>N(n)))return!0}return!1},R=t=>F?t:new Promise(e=>{let n=new FileReader;n.onload=()=>{let r=new File([n.result],t.name,{lastModified:t.lastModified,type:t.type});e(r)},n.readAsArrayBuffer(t)}),w=class{ws;url;constructor(e){this.ws=new WebSocket(e),this.url=e}send(e){return Array.isArray(e)?(e.forEach(n=>this.send(n)),this):(this.ws.send(typeof e=="object"?JSON.stringify(e):e.toString()),this)}on(e,n,r){return this.addEventListener(e,n,r)}off(e,n,r){return this.ws.removeEventListener(e,n,r),this}subscribe(e,n){return this.addEventListener("message",e,n)}addEventListener(e,n,r){return this.ws.addEventListener(e,a=>{if(e==="message"){let s=a.data.toString(),l=s.charCodeAt(0);if(l===47||l===123)try{s=JSON.parse(s)}catch{}else O(s)?s=+s:s==="true"?s=!0:s==="false"&&(s=!1);n({...a,data:s})}else n(a)},r),this}removeEventListener(e,n,r){return this.off(e,n,r),this}close(){return this.ws.close(),this}},j=(t,e="",n)=>new Proxy(()=>{},{get(r,a,s){return j(t,`${e}/${a.toString()}`,n)},apply(r,a,[s,l={}]=[{},{}]){let y=s!==void 0&&(typeof s!="object"||Array.isArray(s))?s:void 0,{$query:M,$fetch:L,$headers:I,$transform:g,getRaw:P,...C}=s??{};y??=C;let v=e.lastIndexOf("/"),E=e.slice(v+1).toUpperCase(),x=K(t,v===-1?"/":e.slice(0,v),Object.assign(l.query??{},M)),q=n.fetcher??fetch,p=n.transform?Array.isArray(n.transform)?n.transform:[n.transform]:void 0,k=g?Array.isArray(g)?g:[g]:void 0;return k&&(p?p=k.concat(p):p=k),E==="SUBSCRIBE"?new w(x.replace(/^([^]+):\/\//,x.startsWith("https://")?"wss://":"ws://")):(async D=>{let f,W={...n.$fetch?.headers,...L?.headers,...l.headers,...I};if(E!=="GET"&&E!=="HEAD"){f=Object.keys(y).length||Array.isArray(y)?y:void 0;let i=typeof f=="object"||Array.isArray(y);if(i&&z(f)){let h=new FormData;for(let[m,c]of Object.entries(f))if(F)h.append(m,c);else if(c instanceof File)h.append(m,await R(c));else if(c instanceof FileList)for(let d=0;d<c.length;d++)h.append(m,await R(c[d]));else if(Array.isArray(c))for(let d=0;d<c.length;d++){let T=c[d];h.append(m,T instanceof File?await R(T):T)}else h.append(m,c);f=h}else W["content-type"]=i?"application/json":"text/plain",f=i?JSON.stringify(f):y}let o=await q(x,{method:E,body:f,...n.$fetch,...l.fetch,...L,headers:W}),b;if(D.getRaw)return o;switch(o.headers.get("Content-Type")?.split(";")[0]){case"application/json":b=await o.json();break;default:b=await o.text().then(i=>O(i)?+i:i==="true"?!0:i==="false"?!1:i)}let J=o.status>=300||o.status<200?new S(o.status,b):null,A={data:b,error:J,response:o,status:o.status,headers:o.headers};if(p)for(let i of p){let u=i(A);u instanceof Promise&&(u=await u),u!=null&&(A=u)}return A})({getRaw:P})}}),Q=(t,e={fetcher:fetch})=>new Proxy({},{get(n,r){return j(t,r,e)}});return _(X);})();
1
+ "use strict";var Eden=(()=>{var $=Object.defineProperty;var B=Object.getOwnPropertyDescriptor;var H=Object.getOwnPropertyNames;var U=Object.prototype.hasOwnProperty;var V=(t,e)=>{for(var n in e)$(t,n,{get:e[n],enumerable:!0})},G=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of H(e))!U.call(t,a)&&a!==n&&$(t,a,{get:()=>e[a],enumerable:!(r=B(e,a))||r.enumerable});return t};var _=t=>G($({},"__esModule",{value:!0}),t);var X={};V(X,{EdenWS:()=>w,edenTreaty:()=>Q});var S=class extends Error{constructor(n,r){super(r+"");this.status=n;this.value=r}};var K=(t,e,n)=>{if(t.endsWith("/")||(t+="/"),e==="index"&&(e=""),!n||!Object.keys(n).length)return`${t}${e}`;let r="";for(let[a,s]of Object.entries(n))r+=`${a}=${s}&`;return`${t}${e}?${r.slice(0,-1)}`},O=t=>t.trim().length!==0&&!Number.isNaN(Number(t));var F=typeof FileList>"u",N=t=>F?t instanceof Blob:t instanceof FileList||t instanceof File,z=t=>{if(!t)return!1;for(let e in t){if(N(t[e]))return!0;if(Array.isArray(t[e])&&t[e].find(n=>N(n)))return!0}return!1},R=t=>F?t:new Promise(e=>{let n=new FileReader;n.onload=()=>{let r=new File([n.result],t.name,{lastModified:t.lastModified,type:t.type});e(r)},n.readAsArrayBuffer(t)}),w=class{ws;url;constructor(e){this.ws=new WebSocket(e),this.url=e}send(e){return Array.isArray(e)?(e.forEach(n=>this.send(n)),this):(this.ws.send(typeof e=="object"?JSON.stringify(e):e.toString()),this)}on(e,n,r){return this.addEventListener(e,n,r)}off(e,n,r){return this.ws.removeEventListener(e,n,r),this}subscribe(e,n){return this.addEventListener("message",e,n)}addEventListener(e,n,r){return this.ws.addEventListener(e,a=>{if(e==="message"){let s=a.data.toString(),l=s.charCodeAt(0);if(l===47||l===123)try{s=JSON.parse(s)}catch{}else O(s)?s=+s:s==="true"?s=!0:s==="false"&&(s=!1);n({...a,data:s})}else n(a)},r),this}removeEventListener(e,n,r){return this.off(e,n,r),this}close(){return this.ws.close(),this}},j=(t,e="",n)=>new Proxy(()=>{},{get(r,a,s){return j(t,`${e}/${a.toString()}`,n)},apply(r,a,[s,l={}]=[{},{}]){let u=s!==void 0&&(typeof s!="object"||Array.isArray(s))?s:void 0,{$query:M,$fetch:L,$headers:I,$transform:g,getRaw:P,...C}=s??{};u??=C;let v=e.lastIndexOf("/"),E=e.slice(v+1).toUpperCase(),x=K(t,v===-1?"/":e.slice(0,v),Object.assign(l.query??{},M)),q=n.fetcher??fetch,p=n.transform?Array.isArray(n.transform)?n.transform:[n.transform]:void 0,k=g?Array.isArray(g)?g:[g]:void 0;return k&&(p?p=k.concat(p):p=k),E==="SUBSCRIBE"?new w(x.replace(/^([^]+):\/\//,x.startsWith("https://")?"wss://":"ws://")):(async D=>{let i,W={...n.$fetch?.headers,...L?.headers,...l.headers,...I};if(E!=="GET"&&E!=="HEAD"){i=Object.keys(u).length||Array.isArray(u)?u:void 0;let o=i&&(typeof i=="object"||Array.isArray(u));if(o&&z(i)){let h=new FormData;for(let[m,f]of Object.entries(i))if(F)h.append(m,f);else if(f instanceof File)h.append(m,await R(f));else if(f instanceof FileList)for(let d=0;d<f.length;d++)h.append(m,await R(f[d]));else if(Array.isArray(f))for(let d=0;d<f.length;d++){let T=f[d];h.append(m,T instanceof File?await R(T):T)}else h.append(m,f);i=h}else i!=null&&(W["content-type"]=o?"application/json":"text/plain",i=o?JSON.stringify(i):u)}let c=await q(x,{method:E,body:i,...n.$fetch,...l.fetch,...L,headers:W}),b;if(D.getRaw)return c;switch(c.headers.get("Content-Type")?.split(";")[0]){case"application/json":b=await c.json();break;default:b=await c.text().then(o=>O(o)?+o:o==="true"?!0:o==="false"?!1:o)}let J=c.status>=300||c.status<200?new S(c.status,b):null,A={data:b,error:J,response:c,status:c.status,headers:c.headers};if(p)for(let o of p){let y=o(A);y instanceof Promise&&(y=await y),y!=null&&(A=y)}return A})({getRaw:P})}}),Q=(t,e={fetcher:fetch})=>new Proxy({},{get(n,r){return j(t,r,e)}});return _(X);})();
package/dist/treaty.js CHANGED
@@ -1 +1 @@
1
- "use strict";var $=Object.defineProperty;var B=Object.getOwnPropertyDescriptor;var H=Object.getOwnPropertyNames;var U=Object.prototype.hasOwnProperty;var V=(t,e)=>{for(var n in e)$(t,n,{get:e[n],enumerable:!0})},G=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of H(e))!U.call(t,a)&&a!==n&&$(t,a,{get:()=>e[a],enumerable:!(r=B(e,a))||r.enumerable});return t};var _=t=>G($({},"__esModule",{value:!0}),t);var X={};V(X,{EdenWS:()=>w,edenTreaty:()=>Q});module.exports=_(X);var S=class extends Error{constructor(n,r){super(r+"");this.status=n;this.value=r}};var K=(t,e,n)=>{if(t.endsWith("/")||(t+="/"),e==="index"&&(e=""),!n||!Object.keys(n).length)return`${t}${e}`;let r="";for(let[a,s]of Object.entries(n))r+=`${a}=${s}&`;return`${t}${e}?${r.slice(0,-1)}`},O=t=>t.trim().length!==0&&!Number.isNaN(Number(t));var F=typeof FileList>"u",N=t=>F?t instanceof Blob:t instanceof FileList||t instanceof File,z=t=>{if(!t)return!1;for(let e in t){if(N(t[e]))return!0;if(Array.isArray(t[e])&&t[e].find(n=>N(n)))return!0}return!1},R=t=>F?t:new Promise(e=>{let n=new FileReader;n.onload=()=>{let r=new File([n.result],t.name,{lastModified:t.lastModified,type:t.type});e(r)},n.readAsArrayBuffer(t)}),w=class{ws;url;constructor(e){this.ws=new WebSocket(e),this.url=e}send(e){return Array.isArray(e)?(e.forEach(n=>this.send(n)),this):(this.ws.send(typeof e=="object"?JSON.stringify(e):e.toString()),this)}on(e,n,r){return this.addEventListener(e,n,r)}off(e,n,r){return this.ws.removeEventListener(e,n,r),this}subscribe(e,n){return this.addEventListener("message",e,n)}addEventListener(e,n,r){return this.ws.addEventListener(e,a=>{if(e==="message"){let s=a.data.toString(),l=s.charCodeAt(0);if(l===47||l===123)try{s=JSON.parse(s)}catch{}else O(s)?s=+s:s==="true"?s=!0:s==="false"&&(s=!1);n({...a,data:s})}else n(a)},r),this}removeEventListener(e,n,r){return this.off(e,n,r),this}close(){return this.ws.close(),this}},j=(t,e="",n)=>new Proxy(()=>{},{get(r,a,s){return j(t,`${e}/${a.toString()}`,n)},apply(r,a,[s,l={}]=[{},{}]){let y=s!==void 0&&(typeof s!="object"||Array.isArray(s))?s:void 0,{$query:M,$fetch:L,$headers:I,$transform:g,getRaw:P,...C}=s??{};y??=C;let v=e.lastIndexOf("/"),E=e.slice(v+1).toUpperCase(),x=K(t,v===-1?"/":e.slice(0,v),Object.assign(l.query??{},M)),q=n.fetcher??fetch,p=n.transform?Array.isArray(n.transform)?n.transform:[n.transform]:void 0,k=g?Array.isArray(g)?g:[g]:void 0;return k&&(p?p=k.concat(p):p=k),E==="SUBSCRIBE"?new w(x.replace(/^([^]+):\/\//,x.startsWith("https://")?"wss://":"ws://")):(async D=>{let f,W={...n.$fetch?.headers,...L?.headers,...l.headers,...I};if(E!=="GET"&&E!=="HEAD"){f=Object.keys(y).length||Array.isArray(y)?y:void 0;let i=typeof f=="object"||Array.isArray(y);if(i&&z(f)){let h=new FormData;for(let[m,c]of Object.entries(f))if(F)h.append(m,c);else if(c instanceof File)h.append(m,await R(c));else if(c instanceof FileList)for(let d=0;d<c.length;d++)h.append(m,await R(c[d]));else if(Array.isArray(c))for(let d=0;d<c.length;d++){let T=c[d];h.append(m,T instanceof File?await R(T):T)}else h.append(m,c);f=h}else W["content-type"]=i?"application/json":"text/plain",f=i?JSON.stringify(f):y}let o=await q(x,{method:E,body:f,...n.$fetch,...l.fetch,...L,headers:W}),b;if(D.getRaw)return o;switch(o.headers.get("Content-Type")?.split(";")[0]){case"application/json":b=await o.json();break;default:b=await o.text().then(i=>O(i)?+i:i==="true"?!0:i==="false"?!1:i)}let J=o.status>=300||o.status<200?new S(o.status,b):null,A={data:b,error:J,response:o,status:o.status,headers:o.headers};if(p)for(let i of p){let u=i(A);u instanceof Promise&&(u=await u),u!=null&&(A=u)}return A})({getRaw:P})}}),Q=(t,e={fetcher:fetch})=>new Proxy({},{get(n,r){return j(t,r,e)}});0&&(module.exports={EdenWS,edenTreaty});
1
+ "use strict";var $=Object.defineProperty;var B=Object.getOwnPropertyDescriptor;var H=Object.getOwnPropertyNames;var U=Object.prototype.hasOwnProperty;var V=(t,e)=>{for(var n in e)$(t,n,{get:e[n],enumerable:!0})},G=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of H(e))!U.call(t,a)&&a!==n&&$(t,a,{get:()=>e[a],enumerable:!(r=B(e,a))||r.enumerable});return t};var _=t=>G($({},"__esModule",{value:!0}),t);var X={};V(X,{EdenWS:()=>w,edenTreaty:()=>Q});module.exports=_(X);var S=class extends Error{constructor(n,r){super(r+"");this.status=n;this.value=r}};var K=(t,e,n)=>{if(t.endsWith("/")||(t+="/"),e==="index"&&(e=""),!n||!Object.keys(n).length)return`${t}${e}`;let r="";for(let[a,s]of Object.entries(n))r+=`${a}=${s}&`;return`${t}${e}?${r.slice(0,-1)}`},O=t=>t.trim().length!==0&&!Number.isNaN(Number(t));var F=typeof FileList>"u",N=t=>F?t instanceof Blob:t instanceof FileList||t instanceof File,z=t=>{if(!t)return!1;for(let e in t){if(N(t[e]))return!0;if(Array.isArray(t[e])&&t[e].find(n=>N(n)))return!0}return!1},R=t=>F?t:new Promise(e=>{let n=new FileReader;n.onload=()=>{let r=new File([n.result],t.name,{lastModified:t.lastModified,type:t.type});e(r)},n.readAsArrayBuffer(t)}),w=class{ws;url;constructor(e){this.ws=new WebSocket(e),this.url=e}send(e){return Array.isArray(e)?(e.forEach(n=>this.send(n)),this):(this.ws.send(typeof e=="object"?JSON.stringify(e):e.toString()),this)}on(e,n,r){return this.addEventListener(e,n,r)}off(e,n,r){return this.ws.removeEventListener(e,n,r),this}subscribe(e,n){return this.addEventListener("message",e,n)}addEventListener(e,n,r){return this.ws.addEventListener(e,a=>{if(e==="message"){let s=a.data.toString(),l=s.charCodeAt(0);if(l===47||l===123)try{s=JSON.parse(s)}catch{}else O(s)?s=+s:s==="true"?s=!0:s==="false"&&(s=!1);n({...a,data:s})}else n(a)},r),this}removeEventListener(e,n,r){return this.off(e,n,r),this}close(){return this.ws.close(),this}},j=(t,e="",n)=>new Proxy(()=>{},{get(r,a,s){return j(t,`${e}/${a.toString()}`,n)},apply(r,a,[s,l={}]=[{},{}]){let u=s!==void 0&&(typeof s!="object"||Array.isArray(s))?s:void 0,{$query:M,$fetch:L,$headers:I,$transform:g,getRaw:P,...C}=s??{};u??=C;let v=e.lastIndexOf("/"),E=e.slice(v+1).toUpperCase(),x=K(t,v===-1?"/":e.slice(0,v),Object.assign(l.query??{},M)),q=n.fetcher??fetch,p=n.transform?Array.isArray(n.transform)?n.transform:[n.transform]:void 0,k=g?Array.isArray(g)?g:[g]:void 0;return k&&(p?p=k.concat(p):p=k),E==="SUBSCRIBE"?new w(x.replace(/^([^]+):\/\//,x.startsWith("https://")?"wss://":"ws://")):(async D=>{let i,W={...n.$fetch?.headers,...L?.headers,...l.headers,...I};if(E!=="GET"&&E!=="HEAD"){i=Object.keys(u).length||Array.isArray(u)?u:void 0;let o=i&&(typeof i=="object"||Array.isArray(u));if(o&&z(i)){let h=new FormData;for(let[m,f]of Object.entries(i))if(F)h.append(m,f);else if(f instanceof File)h.append(m,await R(f));else if(f instanceof FileList)for(let d=0;d<f.length;d++)h.append(m,await R(f[d]));else if(Array.isArray(f))for(let d=0;d<f.length;d++){let T=f[d];h.append(m,T instanceof File?await R(T):T)}else h.append(m,f);i=h}else i!=null&&(W["content-type"]=o?"application/json":"text/plain",i=o?JSON.stringify(i):u)}let c=await q(x,{method:E,body:i,...n.$fetch,...l.fetch,...L,headers:W}),b;if(D.getRaw)return c;switch(c.headers.get("Content-Type")?.split(";")[0]){case"application/json":b=await c.json();break;default:b=await c.text().then(o=>O(o)?+o:o==="true"?!0:o==="false"?!1:o)}let J=c.status>=300||c.status<200?new S(c.status,b):null,A={data:b,error:J,response:c,status:c.status,headers:c.headers};if(p)for(let o of p){let y=o(A);y instanceof Promise&&(y=await y),y!=null&&(A=y)}return A})({getRaw:P})}}),Q=(t,e={fetcher:fetch})=>new Proxy({},{get(n,r){return j(t,r,e)}});0&&(module.exports={EdenWS,edenTreaty});
package/dist/treaty.mjs CHANGED
@@ -1 +1 @@
1
- import{a,b}from"./chunk-VMCNRAXS.mjs";import"./chunk-R27QELXO.mjs";export{a as EdenWS,b as edenTreaty};
1
+ import{a,b}from"./chunk-Q3DJMDQ2.mjs";import"./chunk-HUZ6GXDC.mjs";export{a as EdenWS,b as edenTreaty};
@@ -1,4 +1,12 @@
1
1
  import type { Elysia } from 'elysia';
2
- import type { EdenTreaty2 } from './types';
3
- export declare const treaty: <const App extends Elysia<any, any, any, any, any, any>>(domain: string | App, config?: EdenTreaty2.Config) => EdenTreaty2.Create<App>;
4
- export type { EdenTreaty2 };
2
+ import type { Treaty } from './types';
3
+ export declare const treaty: <const App extends Elysia<any, any, any, any, any, any, {
4
+ decorator: {};
5
+ store: {};
6
+ derive: {};
7
+ resolve: {};
8
+ }, {
9
+ schema: {};
10
+ macro: {};
11
+ }>>(domain: string | App, config?: Treaty.Config) => Treaty.Create<App>;
12
+ export type { Treaty };
@@ -1,6 +1,7 @@
1
1
  /// <reference types="bun-types" />
2
2
  /// <reference lib="dom" />
3
3
  import type { Elysia } from 'elysia';
4
+ import { EdenWS } from './ws';
4
5
  import type { Prettify } from '../types';
5
6
  type Files = File | FileList;
6
7
  type ReplaceBlobWithFiles<in out RecordType extends Record<string, unknown>> = {
@@ -8,17 +9,22 @@ type ReplaceBlobWithFiles<in out RecordType extends Record<string, unknown>> = {
8
9
  } & {};
9
10
  type MaybeArray<T> = T | T[];
10
11
  type MaybePromise<T> = T | Promise<T>;
11
- export declare namespace EdenTreaty2 {
12
+ export declare namespace Treaty {
12
13
  interface TreatyParam {
13
14
  fetch?: RequestInit;
14
15
  }
15
- export type Create<App extends Elysia<any, any, any, any, any, any>> = App extends {
16
+ export type Create<App extends Elysia<any, any, any, any, any, any, any, any>> = App extends {
16
17
  _routes: infer Schema extends Record<string, any>;
17
18
  } ? Prettify<Sign<Schema>> : 'Please install Elysia before using Eden';
18
19
  export type Sign<in out Route extends Record<string, any>> = {
19
- [K in keyof Route as K extends '' ? 'index' : K extends `:${string}` ? never : K]: Route[K] extends {
20
+ [K in keyof Route as K extends '/' | '' ? 'index' : K extends `:${string}` ? never : K]: K extends 'subscribe' ? undefined extends Route['subscribe']['query'] ? (params?: {
21
+ query?: Record<string, string>;
22
+ }) => EdenWS<Route['subscribe']> : (params: {
23
+ query: Route['subscribe']['query'];
24
+ }) => EdenWS<Route['subscribe']> : Route[K] extends {
20
25
  body: infer Body;
21
26
  headers: infer Headers;
27
+ params: any;
22
28
  query: infer Query;
23
29
  response: infer Response extends Record<number, unknown>;
24
30
  } ? (undefined extends Headers ? {
@@ -29,14 +35,12 @@ export declare namespace EdenTreaty2 {
29
35
  query?: Record<string, unknown>;
30
36
  } : {
31
37
  query: Query;
32
- }) extends infer Param ? {} extends Param ? undefined extends Body ? (body?: Body, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<Response>> : (body: Body extends Record<string, unknown> ? ReplaceBlobWithFiles<Body> : Body, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<Response>> : (body: Body extends Record<string, unknown> ? ReplaceBlobWithFiles<Body> : Body, options: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<Response>> : never : keyof Route[K] extends `:${infer Param}` ? (params: {
33
- [param in Param]: string;
34
- }) => Prettify<Prettify<Sign<Route[K]>> & Sign<Route[K][`:${Param}`]>> : Prettify<Sign<Route[K]>>;
38
+ }) extends infer Param ? {} extends Param ? undefined extends Body ? K extends 'get' | 'head' ? (options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<Response>> : (body?: Body, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<Response>> : (body: Body extends Record<string, unknown> ? ReplaceBlobWithFiles<Body> : Body, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<Response>> : K extends 'get' | 'head' ? (options: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<Response>> : (body: Body extends Record<string, unknown> ? ReplaceBlobWithFiles<Body> : Body, options: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<Response>> : never : keyof Route[K] extends `:${infer Param}` ? (params: Record<Param, string>) => Prettify<Prettify<Sign<Route[K]>> & Sign<Route[K][`:${Param}`]>> : Prettify<Sign<Route[K]>>;
35
39
  };
36
40
  export interface Config extends Omit<RequestInit, 'headers'> {
37
41
  fetcher?: typeof fetch;
38
- headers?: RequestInit['headers'] | MaybeArray<(path: string, options: RequestInit) => RequestInit['headers'] | void>;
39
- onRequest?: MaybeArray<(path: string, options: FetchRequestInit) => MaybePromise<unknown>>;
42
+ headers?: RequestInit['headers'] | MaybeArray<(path: string, options: RequestInit) => MaybePromise<RequestInit['headers'] | void>>;
43
+ onRequest?: MaybeArray<(path: string, options: FetchRequestInit) => MaybePromise<FetchRequestInit | void>>;
40
44
  onResponse?: MaybeArray<(response: Response) => MaybePromise<unknown>>;
41
45
  }
42
46
  type TreatyResponse<Response extends Record<number, unknown>> = {
@@ -44,15 +48,17 @@ export declare namespace EdenTreaty2 {
44
48
  error: null;
45
49
  } | {
46
50
  data: null;
47
- error: 200 extends keyof Response ? {
48
- status: unknown;
49
- value: unknown;
50
- } : {
51
+ error: Response extends {
52
+ 200: unknown;
53
+ } ? {
51
54
  [Status in keyof Response as Status extends 200 ? never : Status]: {
52
55
  status: Status;
53
56
  value: Response[Status];
54
57
  };
55
- }[Exclude<keyof Response, 200>];
58
+ }[Exclude<keyof Response, 200>] : {
59
+ status: unknown;
60
+ value: unknown;
61
+ };
56
62
  };
57
63
  export interface OnMessage<Data = unknown> extends MessageEvent {
58
64
  data: Data;
@@ -1,14 +1,14 @@
1
1
  import type { InputSchema } from 'elysia';
2
- import type { EdenTreaty2 } from './types';
3
- export declare class EdenWS<Schema extends InputSchema<any> = {}> {
2
+ import type { Treaty } from './types';
3
+ export declare class EdenWS<in out Schema extends InputSchema<any> = {}> {
4
4
  url: string;
5
5
  ws: WebSocket;
6
6
  constructor(url: string);
7
7
  send(data: Schema['body'] | Schema['body'][]): this;
8
- on<K extends keyof WebSocketEventMap>(type: K, listener: (event: EdenTreaty2.WSEvent<K, Schema['response']>) => void, options?: boolean | AddEventListenerOptions): this;
8
+ on<K extends keyof WebSocketEventMap>(type: K, listener: (event: Treaty.WSEvent<K, Schema['response']>) => void, options?: boolean | AddEventListenerOptions): this;
9
9
  off<K extends keyof WebSocketEventMap>(type: K, listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any, options?: boolean | EventListenerOptions): this;
10
- subscribe(onMessage: (event: EdenTreaty2.WSEvent<'message', Schema['response']>) => void, options?: boolean | AddEventListenerOptions): this;
11
- addEventListener<K extends keyof WebSocketEventMap>(type: K, listener: (event: EdenTreaty2.WSEvent<K, Schema['response']>) => void, options?: boolean | AddEventListenerOptions): this;
10
+ subscribe(onMessage: (event: Treaty.WSEvent<'message', Schema['response']>) => void, options?: boolean | AddEventListenerOptions): this;
11
+ addEventListener<K extends keyof WebSocketEventMap>(type: K, listener: (event: Treaty.WSEvent<K, Schema['response']>) => void, options?: boolean | AddEventListenerOptions): this;
12
12
  removeEventListener<K extends keyof WebSocketEventMap>(type: K, listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any, options?: boolean | EventListenerOptions): this;
13
13
  close(): this;
14
14
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elysiajs/eden",
3
- "version": "1.0.0-beta.1",
3
+ "version": "1.0.0-beta.3",
4
4
  "description": "Fully type-safe Elysia client",
5
5
  "author": {
6
6
  "name": "saltyAom",
@@ -47,20 +47,22 @@
47
47
  "license": "MIT",
48
48
  "scripts": {
49
49
  "dev": "bun run --watch example/index.ts",
50
- "test": "bun test",
50
+ "test": "bun test && bun test:types",
51
+ "test:types": "tsc --project tsconfig.test.json",
51
52
  "build": "rimraf dist && tsup",
52
53
  "release": "npm run build && npm run test && npm publish --access public"
53
54
  },
54
55
  "peerDependencies": {
55
- "elysia": ">= 1.0.0-beta.0"
56
+ "elysia": ">= 1.0.0-beta.5"
56
57
  },
57
58
  "devDependencies": {
58
59
  "@elysiajs/cors": "0.7.0",
59
60
  "@types/bun": "^1.0.3",
60
61
  "@types/node": "^18.15.5",
61
- "elysia": "1.0.0-beta.0",
62
+ "elysia": "1.0.0-beta.5",
62
63
  "esbuild": "^0.19.3",
63
64
  "eslint": "^8.26.0",
65
+ "expect-type": "^0.17.3",
64
66
  "rimraf": "^4.4.1",
65
67
  "tsup": "^7.2.0",
66
68
  "typescript": "^5.3.2"