Skip to content

Commit d9bfc20

Browse files
authored
bigint support (#43)
1 parent af334d1 commit d9bfc20

File tree

15 files changed

+382
-107
lines changed

15 files changed

+382
-107
lines changed

_examples/node-ts/server-fastify/server.gen.ts

Lines changed: 29 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* eslint-disable */
22
// node-ts v1.0.0 21701cae51b73d035bf2180831cdb38220bbbccc
33
// --
4-
// Code generated by [email protected] with ../../../gen-typescript generator. DO NOT EDIT.
4+
// Code generated by [email protected]-1-g8943a04 with ../../../gen-typescript generator. DO NOT EDIT.
55
//
66
// webrpc-gen -schema=service.ridl -target=../../../gen-typescript -server -out=./server-fastify/server.gen.ts
77

@@ -111,29 +111,36 @@ export const serveExampleRpc = async <Context>(service: ExampleServer<Context>,
111111
}
112112
}
113113

114-
const dispatchExampleRequest = async <Context>(service: ExampleServer<Context>, ctx: Context, method: string, payload: any) => {
114+
const dispatchExampleRequest = async <Context>(service: ExampleServer<Context>, ctx: Context, method: string, body: any) => {
115+
let payload: any = body
116+
let result: any
115117
switch (method) {
116118
case 'Ping':
117-
return service.ping(ctx, payload || {})
119+
result = await service.ping(ctx, payload || {})
120+
break
118121

119122
case 'GetUser':
120123
if (!("userId" in payload)) {
121124
throw new WebrpcBadRequestError({ cause: "missing argument `userId`" })
122125
}
126+
123127
if ("userId" in payload && !validateType(payload["userId"], "number")) {
124128
throw new WebrpcBadRequestError({ cause: "invalid argument: userId" })
125129
}
126-
return service.getUser(ctx, payload || {})
130+
result = await service.getUser(ctx, payload || {})
131+
break
127132

128133
case 'GetArticle':
129134
if (payload && !validateType(payload, "GetArticleRequest")) {
130135
throw new WebrpcBadRequestError({ cause: "invalid argument: getArticleRequest" })
131136
}
132-
return service.getArticle(ctx, payload || {})
137+
result = await service.getArticle(ctx, payload || {})
138+
break
133139

134140
default:
135141
throw new WebrpcBadRouteError({ cause: 'method not found' })
136142
}
143+
return result
137144
}
138145

139146

@@ -228,6 +235,22 @@ const validateType = (value: any, type: string) => {
228235
return validator(value)
229236
}
230237

238+
239+
export const JsonEncode = <T = any>(obj: T, _typ: string = ''): string => {
240+
return JSON.stringify(obj)
241+
}
242+
243+
export const JsonDecode = <T = any>(data: string | any, _typ: string = ''): T => {
244+
let parsed: any = data
245+
if (typeof data === 'string') {
246+
try { parsed = JSON.parse(data) } catch (err) {
247+
throw WebrpcBadResponseError.new({ cause: `JsonDecode: JSON.parse failed: ${(err as Error).message}` })
248+
}
249+
}
250+
return parsed as T
251+
}
252+
253+
231254
//
232255
// Errors
233256
//
@@ -532,7 +555,7 @@ export const webrpcErrorByCode: { [code: number]: any } = {
532555

533556
export const WebrpcHeader = "Webrpc"
534557

535-
export const WebrpcHeaderValue = "[email protected];gen-typescript@unknown;[email protected]"
558+
export const WebrpcHeaderValue = "[email protected]-1-g8943a04;gen-typescript@unknown;[email protected]"
536559

537560
type WebrpcGenVersions = {
538561
WebrpcGenVersion: string;

_examples/node-ts/server-hono/server.gen.ts

Lines changed: 29 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* eslint-disable */
22
// node-ts v1.0.0 21701cae51b73d035bf2180831cdb38220bbbccc
33
// --
4-
// Code generated by [email protected] with ../../../gen-typescript generator. DO NOT EDIT.
4+
// Code generated by [email protected]-1-g8943a04 with ../../../gen-typescript generator. DO NOT EDIT.
55
//
66
// webrpc-gen -schema=service.ridl -target=../../../gen-typescript -server -out=./server-hono/server.gen.ts
77

@@ -111,29 +111,36 @@ export const serveExampleRpc = async <Context>(service: ExampleServer<Context>,
111111
}
112112
}
113113

114-
const dispatchExampleRequest = async <Context>(service: ExampleServer<Context>, ctx: Context, method: string, payload: any) => {
114+
const dispatchExampleRequest = async <Context>(service: ExampleServer<Context>, ctx: Context, method: string, body: any) => {
115+
let payload: any = body
116+
let result: any
115117
switch (method) {
116118
case 'Ping':
117-
return service.ping(ctx, payload || {})
119+
result = await service.ping(ctx, payload || {})
120+
break
118121

119122
case 'GetUser':
120123
if (!("userId" in payload)) {
121124
throw new WebrpcBadRequestError({ cause: "missing argument `userId`" })
122125
}
126+
123127
if ("userId" in payload && !validateType(payload["userId"], "number")) {
124128
throw new WebrpcBadRequestError({ cause: "invalid argument: userId" })
125129
}
126-
return service.getUser(ctx, payload || {})
130+
result = await service.getUser(ctx, payload || {})
131+
break
127132

128133
case 'GetArticle':
129134
if (payload && !validateType(payload, "GetArticleRequest")) {
130135
throw new WebrpcBadRequestError({ cause: "invalid argument: getArticleRequest" })
131136
}
132-
return service.getArticle(ctx, payload || {})
137+
result = await service.getArticle(ctx, payload || {})
138+
break
133139

134140
default:
135141
throw new WebrpcBadRouteError({ cause: 'method not found' })
136142
}
143+
return result
137144
}
138145

139146

@@ -228,6 +235,22 @@ const validateType = (value: any, type: string) => {
228235
return validator(value)
229236
}
230237

238+
239+
export const JsonEncode = <T = any>(obj: T, _typ: string = ''): string => {
240+
return JSON.stringify(obj)
241+
}
242+
243+
export const JsonDecode = <T = any>(data: string | any, _typ: string = ''): T => {
244+
let parsed: any = data
245+
if (typeof data === 'string') {
246+
try { parsed = JSON.parse(data) } catch (err) {
247+
throw WebrpcBadResponseError.new({ cause: `JsonDecode: JSON.parse failed: ${(err as Error).message}` })
248+
}
249+
}
250+
return parsed as T
251+
}
252+
253+
231254
//
232255
// Errors
233256
//
@@ -532,7 +555,7 @@ export const webrpcErrorByCode: { [code: number]: any } = {
532555

533556
export const WebrpcHeader = "Webrpc"
534557

535-
export const WebrpcHeaderValue = "[email protected];gen-typescript@unknown;[email protected]"
558+
export const WebrpcHeaderValue = "[email protected]-1-g8943a04;gen-typescript@unknown;[email protected]"
536559

537560
type WebrpcGenVersions = {
538561
WebrpcGenVersion: string;

_examples/node-ts/server/server.gen.ts

Lines changed: 29 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* eslint-disable */
22
// node-ts v1.0.0 21701cae51b73d035bf2180831cdb38220bbbccc
33
// --
4-
// Code generated by [email protected] with ../../../gen-typescript generator. DO NOT EDIT.
4+
// Code generated by [email protected]-1-g8943a04 with ../../../gen-typescript generator. DO NOT EDIT.
55
//
66
// webrpc-gen -schema=service.ridl -target=../../../gen-typescript -server -out=./server/server.gen.ts
77

@@ -111,29 +111,36 @@ export const serveExampleRpc = async <Context>(service: ExampleServer<Context>,
111111
}
112112
}
113113

114-
const dispatchExampleRequest = async <Context>(service: ExampleServer<Context>, ctx: Context, method: string, payload: any) => {
114+
const dispatchExampleRequest = async <Context>(service: ExampleServer<Context>, ctx: Context, method: string, body: any) => {
115+
let payload: any = body
116+
let result: any
115117
switch (method) {
116118
case 'Ping':
117-
return service.ping(ctx, payload || {})
119+
result = await service.ping(ctx, payload || {})
120+
break
118121

119122
case 'GetUser':
120123
if (!("userId" in payload)) {
121124
throw new WebrpcBadRequestError({ cause: "missing argument `userId`" })
122125
}
126+
123127
if ("userId" in payload && !validateType(payload["userId"], "number")) {
124128
throw new WebrpcBadRequestError({ cause: "invalid argument: userId" })
125129
}
126-
return service.getUser(ctx, payload || {})
130+
result = await service.getUser(ctx, payload || {})
131+
break
127132

128133
case 'GetArticle':
129134
if (payload && !validateType(payload, "GetArticleRequest")) {
130135
throw new WebrpcBadRequestError({ cause: "invalid argument: getArticleRequest" })
131136
}
132-
return service.getArticle(ctx, payload || {})
137+
result = await service.getArticle(ctx, payload || {})
138+
break
133139

134140
default:
135141
throw new WebrpcBadRouteError({ cause: 'method not found' })
136142
}
143+
return result
137144
}
138145

139146

@@ -228,6 +235,22 @@ const validateType = (value: any, type: string) => {
228235
return validator(value)
229236
}
230237

238+
239+
export const JsonEncode = <T = any>(obj: T, _typ: string = ''): string => {
240+
return JSON.stringify(obj)
241+
}
242+
243+
export const JsonDecode = <T = any>(data: string | any, _typ: string = ''): T => {
244+
let parsed: any = data
245+
if (typeof data === 'string') {
246+
try { parsed = JSON.parse(data) } catch (err) {
247+
throw WebrpcBadResponseError.new({ cause: `JsonDecode: JSON.parse failed: ${(err as Error).message}` })
248+
}
249+
}
250+
return parsed as T
251+
}
252+
253+
231254
//
232255
// Errors
233256
//
@@ -532,7 +555,7 @@ export const webrpcErrorByCode: { [code: number]: any } = {
532555

533556
export const WebrpcHeader = "Webrpc"
534557

535-
export const WebrpcHeaderValue = "[email protected];gen-typescript@unknown;[email protected]"
558+
export const WebrpcHeaderValue = "[email protected]-1-g8943a04;gen-typescript@unknown;[email protected]"
536559

537560
type WebrpcGenVersions = {
538561
WebrpcGenVersion: string;

_examples/node-ts/webapp/client.gen.ts

Lines changed: 33 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/* eslint-disable */
22
// node-ts v1.0.0 21701cae51b73d035bf2180831cdb38220bbbccc
33
// --
4-
// Code generated by [email protected] with ../../../gen-typescript generator. DO NOT EDIT.
4+
// Code generated by [email protected]-1-g8943a04 with ../../../gen-typescript generator. DO NOT EDIT.
55
//
66
// webrpc-gen -schema=service.ridl -target=../../../gen-typescript -client -out=./webapp/client.gen.ts
77

@@ -107,55 +107,48 @@ export class Example implements ExampleClient {
107107
getUser: (req: GetUserRequest) => ['Example', 'getUser', req] as const,
108108
getArticle: (req: GetArticleRequest) => ['Example', 'getArticle', req] as const,
109109
}
110-
110+
111111
ping = (headers?: object, signal?: AbortSignal): Promise<PingResponse> => {
112112
return this.fetch(
113113
this.url('Ping'),
114-
createHttpRequest({}, headers, signal)
115-
).then((res) => {
114+
createHttpRequest('{}', headers, signal)).then((res) => {
116115
return buildResponse(res).then(_data => {
117-
return {}
116+
return JsonDecode<PingResponse>(_data, 'PingResponse')
118117
})
119118
}, (error) => {
120119
throw WebrpcRequestFailedError.new({ cause: `fetch(): ${error instanceof Error ? error.message : String(error)}` })
121120
})
122121
}
123-
122+
124123
getUser = (req: GetUserRequest, headers?: object, signal?: AbortSignal): Promise<GetUserResponse> => {
125124
return this.fetch(
126125
this.url('GetUser'),
127-
createHttpRequest(req, headers, signal)).then((res) => {
126+
createHttpRequest(JsonEncode(req, 'GetUserRequest'), headers, signal)).then((res) => {
128127
return buildResponse(res).then(_data => {
129-
return {
130-
code: <number>(_data.code),
131-
user: <User>(_data.user),
132-
}
128+
return JsonDecode<GetUserResponse>(_data, 'GetUserResponse')
133129
})
134130
}, (error) => {
135131
throw WebrpcRequestFailedError.new({ cause: `fetch(): ${error instanceof Error ? error.message : String(error)}` })
136132
})
137133
}
138-
134+
139135
getArticle = (req: GetArticleRequest, headers?: object, signal?: AbortSignal): Promise<GetArticleResponse> => {
140136
return this.fetch(
141137
this.url('GetArticle'),
142-
createHttpRequest(req, headers, signal)).then((res) => {return buildResponse(res)
138+
createHttpRequest(JsonEncode(req, 'GetArticleRequest'), headers, signal)).then((res) => {
139+
return buildResponse(res).then(_data => {
140+
return JsonDecode<GetArticleResponse>(_data, 'GetArticleResponse')
141+
})
143142
}, (error) => {
144143
throw WebrpcRequestFailedError.new({ cause: `fetch(): ${error instanceof Error ? error.message : String(error)}` })
145144
})
146145
}
147-
148-
}
149146

150-
const createHttpRequest = (body: object = {}, headers: object = {}, signal: AbortSignal | null = null): object => {
151-
const reqHeaders: {[key: string]: string} = { ...headers, 'Content-Type': 'application/json' }
147+
}
152148

153-
return {
154-
method: 'POST',
155-
headers: reqHeaders,
156-
body: JSON.stringify(body || {}),
157-
signal
158-
}
149+
const createHttpRequest = (body: string = '{}', headers: object = {}, signal: AbortSignal | null = null): object => {
150+
const reqHeaders: { [key: string]: string } = { ...headers, 'Content-Type': 'application/json' }
151+
return { method: 'POST', headers: reqHeaders, body, signal }
159152
}
160153

161154
const buildResponse = (res: Response): Promise<any> => {
@@ -183,6 +176,22 @@ export type Fetch = (input: RequestInfo, init?: RequestInit) => Promise<Response
183176

184177

185178

179+
180+
export const JsonEncode = <T = any>(obj: T, _typ: string = ''): string => {
181+
return JSON.stringify(obj)
182+
}
183+
184+
export const JsonDecode = <T = any>(data: string | any, _typ: string = ''): T => {
185+
let parsed: any = data
186+
if (typeof data === 'string') {
187+
try { parsed = JSON.parse(data) } catch (err) {
188+
throw WebrpcBadResponseError.new({ cause: `JsonDecode: JSON.parse failed: ${(err as Error).message}` })
189+
}
190+
}
191+
return parsed as T
192+
}
193+
194+
186195
//
187196
// Errors
188197
//
@@ -487,7 +496,7 @@ export const webrpcErrorByCode: { [code: number]: any } = {
487496

488497
export const WebrpcHeader = "Webrpc"
489498

490-
export const WebrpcHeaderValue = "[email protected];gen-typescript@unknown;[email protected]"
499+
export const WebrpcHeaderValue = "[email protected]-1-g8943a04;gen-typescript@unknown;[email protected]"
491500

492501
type WebrpcGenVersions = {
493502
WebrpcGenVersion: string;

_examples/node-ts/webapp/tsconfig.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,6 @@
77
"resolveJsonModule": true,
88
"lib": ["ES2022", "dom"]
99
},
10-
"include": ["."]
10+
"include": ["."],
11+
"exclude": ["dist"]
1112
}

0 commit comments

Comments
 (0)