-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtypedBridge.ts
60 lines (56 loc) · 1.42 KB
/
typedBridge.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
/* eslint-disable @typescript-eslint/no-unused-vars */
import * as zod from 'zod';
import { z } from 'zod';
declare const userContext: z.ZodObject<{
id: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
id: number;
}, {
id: number;
}>;
declare const _default: {
'user.fetch': (args: zod.TypeOf<zod.ZodObject<{
id: zod.ZodNumber;
}, "strip", zod.ZodTypeAny, {
id: number;
}, {
id: number;
}>>) => Promise<zod.TypeOf<zod.ZodObject<{
id: zod.ZodNumber;
name: zod.ZodString;
}, "strip", zod.ZodTypeAny, {
id: number;
name: string;
}, {
id: number;
name: string;
}>>>;
};
type typedBridgeConfig = {
host: string
headers: { [key: string]: string }
}
export const typedBridgeConfig: typedBridgeConfig = {
host: '',
headers: { 'Content-Type': 'application/json' }
}
export const typedBridge = new Proxy(
{},
{
get(_, methodName: string) {
return async (args: any) => {
const response = await fetch(
typedBridgeConfig.host + (typedBridgeConfig.host.endsWith('/') ? '' : '/') + methodName,
{
method: 'POST',
headers: typedBridgeConfig.headers,
body: JSON.stringify(args)
}
)
if (response.status !== 200) throw new Error('typed-bridge server error!')
return response.json()
}
}
}
) as typeof _default
export default typedBridge