spiceflow 1.0.1 → 1.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.
Files changed (42) hide show
  1. package/README.md +148 -1
  2. package/dist/client/index.d.ts.map +1 -1
  3. package/dist/client/types.d.ts +2 -6
  4. package/dist/client/types.d.ts.map +1 -1
  5. package/dist/client.test.js +26 -22
  6. package/dist/client.test.js.map +1 -1
  7. package/dist/elysia-fork/context.d.ts +6 -22
  8. package/dist/elysia-fork/context.d.ts.map +1 -1
  9. package/dist/elysia-fork/error.d.ts +2 -226
  10. package/dist/elysia-fork/error.d.ts.map +1 -1
  11. package/dist/elysia-fork/error.js +13 -166
  12. package/dist/elysia-fork/error.js.map +1 -1
  13. package/dist/elysia-fork/types.d.ts +20 -30
  14. package/dist/elysia-fork/types.d.ts.map +1 -1
  15. package/dist/elysia-fork/types.js +1 -2
  16. package/dist/elysia-fork/types.js.map +1 -1
  17. package/dist/elysia-fork/utils.d.ts +1 -62
  18. package/dist/elysia-fork/utils.d.ts.map +1 -1
  19. package/dist/openapi.d.ts +67 -0
  20. package/dist/openapi.d.ts.map +1 -0
  21. package/dist/openapi.js +250 -0
  22. package/dist/openapi.js.map +1 -0
  23. package/dist/spiceflow.d.ts +35 -23
  24. package/dist/spiceflow.d.ts.map +1 -1
  25. package/dist/spiceflow.js +214 -111
  26. package/dist/spiceflow.js.map +1 -1
  27. package/dist/spiceflow.test.js +135 -31
  28. package/dist/spiceflow.test.js.map +1 -1
  29. package/dist/zod.test.d.ts +2 -0
  30. package/dist/zod.test.d.ts.map +1 -0
  31. package/dist/zod.test.js +61 -0
  32. package/dist/zod.test.js.map +1 -0
  33. package/package.json +7 -3
  34. package/src/client/types.ts +14 -19
  35. package/src/client.test.ts +34 -25
  36. package/src/elysia-fork/context.ts +19 -49
  37. package/src/elysia-fork/error.ts +6 -259
  38. package/src/elysia-fork/types.ts +115 -188
  39. package/src/openapi.ts +426 -0
  40. package/src/spiceflow.test.ts +188 -51
  41. package/src/spiceflow.ts +312 -183
  42. package/src/zod.test.ts +73 -0
@@ -1,26 +1,91 @@
1
1
  import { test, expect } from 'vitest';
2
2
  import { Type } from '@sinclair/typebox';
3
- import { Spiceflow } from './spiceflow';
3
+ import { bfs, Spiceflow } from './spiceflow';
4
+ import { z } from 'zod';
4
5
  test('works', async () => {
5
6
  const res = await new Spiceflow()
6
7
  .post('/xxx', () => 'hi')
7
8
  .handle(new Request('http://localhost/xxx', { method: 'POST' }));
8
9
  expect(res.status).toBe(200);
9
- expect(await res.text()).toBe(JSON.stringify('hi'));
10
+ expect(await res.json()).toEqual('hi');
10
11
  });
11
12
  test('dynamic route', async () => {
12
13
  const res = await new Spiceflow()
13
14
  .post('/ids/:id', () => 'hi')
14
15
  .handle(new Request('http://localhost/ids/xxx', { method: 'POST' }));
15
16
  expect(res.status).toBe(200);
16
- expect(await res.text()).toBe(JSON.stringify('hi'));
17
+ expect(await res.json()).toEqual('hi');
17
18
  });
18
19
  test('GET dynamic route', async () => {
19
20
  const res = await new Spiceflow()
20
21
  .get('/ids/:id', () => 'hi')
21
22
  .handle(new Request('http://localhost/ids/xxx', { method: 'GET' }));
22
23
  expect(res.status).toBe(200);
23
- expect(await res.text()).toBe(JSON.stringify('hi'));
24
+ expect(await res.json()).toEqual('hi');
25
+ });
26
+ test('GET with query, untyped', async () => {
27
+ const res = await new Spiceflow()
28
+ .get('/query', ({ query }) => {
29
+ return query.id;
30
+ })
31
+ .handle(new Request('http://localhost/query?id=hi', { method: 'GET' }));
32
+ expect(res.status).toBe(200);
33
+ expect(await res.json()).toEqual('hi');
34
+ });
35
+ test('GET with query, zod, fails validation', async () => {
36
+ const res = await new Spiceflow()
37
+ .get('/query', ({ query }) => {
38
+ return query.id;
39
+ }, {
40
+ query: z.object({
41
+ id: z.number(),
42
+ }),
43
+ })
44
+ .handle(new Request('http://localhost/query?id=hi', { method: 'GET' }));
45
+ expect(res.status).toBe(422);
46
+ });
47
+ test('GET with query and zod', async () => {
48
+ const res = await new Spiceflow()
49
+ .get('/query', ({ query }) => {
50
+ return query.id;
51
+ // @ts-expect-error
52
+ void query.sdfsd;
53
+ }, {
54
+ query: z.object({
55
+ id: z.string(),
56
+ }),
57
+ })
58
+ .handle(new Request('http://localhost/query?id=hi', { method: 'GET' }));
59
+ expect(res.status).toBe(200);
60
+ expect(await res.json()).toEqual('hi');
61
+ });
62
+ test('GET dynamic route, params are typed', async () => {
63
+ const res = await new Spiceflow()
64
+ .get('/ids/:id', ({ params }) => {
65
+ let id = params.id;
66
+ // @ts-expect-error
67
+ params.sdfsd;
68
+ return id;
69
+ })
70
+ .handle(new Request('http://localhost/ids/hi', { method: 'GET' }));
71
+ expect(res.status).toBe(200);
72
+ expect(await res.json()).toEqual('hi');
73
+ });
74
+ test('GET dynamic route, params are typed with schema', async () => {
75
+ const res = await new Spiceflow()
76
+ .get('/ids/:id', ({ params }) => {
77
+ let id = params.id;
78
+ // @ts-expect-error
79
+ params.sdfsd;
80
+ return id;
81
+ }, {
82
+ params: z.object({
83
+ id: z.string(),
84
+ }),
85
+ })
86
+ .handle(new Request('http://localhost/ids/hi', { method: 'GET' }));
87
+ expect(res.status).toBe(200);
88
+ expect(await res.json()).toEqual('hi');
24
89
  });
25
90
  test('missing route is not found', async () => {
26
91
  const res = await new Spiceflow()
@@ -44,61 +109,63 @@ test('body is parsed as json', async () => {
44
109
  let body;
45
110
  const res = await new Spiceflow()
46
111
  .state('id', '')
47
- .post('/post', (c) => {
48
- body = c.body;
49
- // console.log({ body })
112
+ .post('/post', async (c) => {
113
+ body = await c.request.json();
114
+ // console.log({request})
50
115
  return body;
51
116
  })
52
117
  .handle(new Request('http://localhost/post', {
53
118
  method: 'POST',
54
119
  headers: {
55
- 'content-type': 'application/json'
120
+ 'content-type': 'application/json',
56
121
  },
57
- body: JSON.stringify({ name: 'John' })
122
+ body: JSON.stringify({ name: 'John' }),
58
123
  }));
59
124
  expect(res.status).toBe(200);
60
- expect(await res.text()).toBe(JSON.stringify({ name: 'John' }));
125
+ expect(await res.json()).toEqual({ name: 'John' });
61
126
  });
62
127
  test('validate body works, request success', async () => {
63
128
  const res = await new Spiceflow()
64
- .post('/post', ({ body }) => {
65
- // console.log({ body })
129
+ .post('/post', async ({ request }) => {
130
+ // console.log({request})
131
+ let body = await request.json();
66
132
  expect(body).toEqual({ name: 'John' });
67
133
  return 'ok';
68
134
  }, {
69
135
  body: Type.Object({
70
- name: Type.String()
71
- })
136
+ name: Type.String(),
137
+ }),
72
138
  })
73
139
  .handle(new Request('http://localhost/post', {
74
140
  method: 'POST',
75
141
  headers: {
76
- 'content-type': 'application/json'
142
+ 'content-type': 'application/json',
77
143
  },
78
- body: JSON.stringify({ name: 'John' })
144
+ body: JSON.stringify({ name: 'John' }),
79
145
  }));
80
146
  expect(res.status).toBe(200);
81
147
  expect(await res.text()).toMatchInlineSnapshot(`""ok""`);
82
148
  });
83
149
  test('validate body works, request fails', async () => {
84
150
  const res = await new Spiceflow()
85
- .post('/post', ({ body, redirect, error }) => {
86
- // console.log({ body })
151
+ .post('/post', async ({ request, redirect }) => {
152
+ // console.log({request})
153
+ let body = await request.json();
87
154
  expect(body).toEqual({ name: 'John' });
88
155
  }, {
89
156
  body: Type.Object({
90
157
  name: Type.String(),
91
- requiredField: Type.String()
92
- })
158
+ requiredField: Type.String(),
159
+ }),
93
160
  })
94
161
  .handle(new Request('http://localhost/post', {
95
162
  method: 'POST',
96
163
  headers: {
97
- 'content-type': 'application/json'
164
+ 'content-type': 'application/json',
98
165
  },
99
- body: JSON.stringify({ name: 'John' })
166
+ body: JSON.stringify({ name: 'John' }),
100
167
  }));
101
- expect(res.status).toBe(400);
168
+ expect(res.status).toBe(422);
102
169
  expect(await res.text()).toMatchInlineSnapshot(`"data must have required property 'requiredField'"`);
103
170
  });
104
171
  test('run onRequest', async () => {
@@ -136,31 +203,68 @@ test('basPath works', async () => {
136
203
  .get('/ids/:id', () => 'hi')
137
204
  .handle(new Request('http://localhost/one/ids/xxx', { method: 'GET' }));
138
205
  expect(res.status).toBe(200);
139
- expect(await res.text()).toBe(JSON.stringify('hi'));
206
+ expect(await res.json()).toEqual('hi');
207
+ });
208
+ test('basPath works with use', async () => {
209
+ let app = new Spiceflow({ basePath: '/one' }).use(new Spiceflow({})
210
+ .get('/two', () => 'hi')
211
+ .use(new Spiceflow({ basePath: '/three' }).get('/four', () => 'hi')));
212
+ {
213
+ const res = await app.handle(new Request('http://localhost/one/two', { method: 'GET' }));
214
+ expect(res.status).toBe(200);
215
+ expect(await res.json()).toEqual('hi');
216
+ }
217
+ {
218
+ const res = await app.handle(new Request('http://localhost/one/three/four', { method: 'GET' }));
219
+ expect(res.status).toBe(200);
220
+ expect(await res.json()).toEqual('hi');
221
+ }
222
+ });
223
+ test('getRouteAndParents', async () => {
224
+ let app = new Spiceflow({ basePath: '/one' })
225
+ .get('/ids/:id', () => 'hi')
226
+ .use(new Spiceflow({ basePath: '/two' }).use(new Spiceflow({ basePath: '/three' }).get('/four', () => 'hi')));
227
+ let routers = bfs(app['routerTree']);
228
+ let last = routers[routers.length - 1];
229
+ expect(app['getRouteAndParents'](last).map((x) => x.prefix))
230
+ .toMatchInlineSnapshot(`
231
+ [
232
+ "/three",
233
+ "/two",
234
+ "/one",
235
+ ]
236
+ `);
140
237
  });
141
238
  test('use with 2 basPath works', async () => {
142
239
  let oneOnReq = false;
143
240
  let twoOnReq = false;
241
+ let onReqCalled = [];
144
242
  const app = await new Spiceflow()
243
+ .onRequest(({ request }) => {
244
+ onReqCalled.push('root');
245
+ })
145
246
  .use(new Spiceflow({ basePath: '/one' })
146
247
  .onRequest(({ request }) => {
147
248
  oneOnReq = true;
249
+ onReqCalled.push('one');
148
250
  })
149
251
  .get('/ids/:id', ({ params }) => params.id))
150
252
  .use(new Spiceflow({ basePath: '/two' })
151
253
  .onRequest((c) => {
152
254
  twoOnReq = true;
255
+ onReqCalled.push('two');
153
256
  })
154
257
  .get('/ids/:id', ({ params }) => params.id));
155
258
  {
156
259
  const res = await app.handle(new Request('http://localhost/one/ids/one'));
157
260
  expect(res.status).toBe(200);
158
- expect(await res.text()).toBe(JSON.stringify('one'));
261
+ expect(await res.json()).toEqual('one');
159
262
  }
263
+ expect(onReqCalled).toEqual(['root', 'one']);
160
264
  {
161
265
  const res = await app.handle(new Request('http://localhost/two/ids/two'));
162
266
  expect(res.status).toBe(200);
163
- expect(await res.text()).toBe(JSON.stringify('two'));
267
+ expect(await res.json()).toEqual('two');
164
268
  }
165
269
  expect(oneOnReq).toBe(true);
166
270
  expect(twoOnReq).toBe(true);
@@ -172,12 +276,12 @@ test('use with nested basPath works', async () => {
172
276
  {
173
277
  const res = await app.handle(new Request('http://localhost/zero/one/ids/one'));
174
278
  expect(res.status).toBe(200);
175
- expect(await res.text()).toBe(JSON.stringify('one'));
279
+ expect(await res.json()).toEqual('one');
176
280
  }
177
281
  {
178
282
  const res = await app.handle(new Request('http://localhost/zero/two/nested/ids/nested'));
179
283
  expect(res.status).toBe(200);
180
- expect(await res.text()).toBe(JSON.stringify('nested'));
284
+ expect(await res.json()).toEqual('nested');
181
285
  }
182
286
  });
183
287
  test('errors inside basPath works', async () => {
@@ -215,11 +319,11 @@ test('errors inside basPath works', async () => {
215
319
  })));
216
320
  {
217
321
  const res = await app.handle(new Request('http://localhost/zero/two/nested/ids/nested'));
218
- expect(onErrorTriggered).toEqual(['nested', 'two', 'root']);
219
- expect(onReqTriggered).toEqual(['nested', 'two', 'root']);
322
+ expect(onErrorTriggered).toEqual(['root', 'two', 'nested']);
323
+ expect(onReqTriggered).toEqual(['root', 'two', 'nested']);
220
324
  expect(res.status).toBe(500);
221
325
  expect(await res.text()).toBe('error message');
222
- // expect(await res.text()).toBe(JSON.stringify('nested'))
326
+ // expect(await res.json()).toEqual('nested'))
223
327
  }
224
328
  });
225
329
  //# sourceMappingURL=spiceflow.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"spiceflow.test.js","sourceRoot":"","sources":["../src/spiceflow.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spiceflow.test.js","sourceRoot":"","sources":["../src/spiceflow.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=zod.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zod.test.d.ts","sourceRoot":"","sources":["../src/zod.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,61 @@
1
+ import { test, expect } from 'vitest';
2
+ import { Spiceflow } from './spiceflow';
3
+ import { req } from './utils';
4
+ import { z } from 'zod';
5
+ test('body is parsed as json', async () => {
6
+ let name = '';
7
+ const res = await new Spiceflow()
8
+ .state('id', '')
9
+ .post('/post', async (c) => {
10
+ const body = await c.request.json();
11
+ name = body.name;
12
+ // @ts-expect-error
13
+ body.nonExistingField;
14
+ return {
15
+ name,
16
+ nameEcho: body.name,
17
+ // add: 3,
18
+ };
19
+ }, {
20
+ body: z.object({
21
+ name: z.string(),
22
+ }),
23
+ response: z.object({
24
+ name: z.string(),
25
+ nameEcho: z.string(),
26
+ }),
27
+ })
28
+ .post('/post2', async (c) => {
29
+ const body = await c.request.json();
30
+ name = body.name;
31
+ // @ts-expect-error
32
+ body.nonExistingField;
33
+ return {
34
+ name,
35
+ nameEcho: body.name,
36
+ };
37
+ }, {
38
+ body: z.object({
39
+ name: z.string(),
40
+ }),
41
+ response: {
42
+ 200: z.object({
43
+ name: z.string(),
44
+ nameEcho: z.string(),
45
+ }),
46
+ 400: z.object({
47
+ errorMessage: z.string(),
48
+ }),
49
+ },
50
+ })
51
+ .handle(req('/post', {
52
+ method: 'POST',
53
+ headers: {
54
+ 'content-type': 'application/json',
55
+ },
56
+ body: JSON.stringify({ name: 'John' }),
57
+ }));
58
+ expect(res.status).toBe(200);
59
+ expect(await res.json()).toEqual({ name: 'John', nameEcho: 'John' });
60
+ });
61
+ //# sourceMappingURL=zod.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zod.test.js","sourceRoot":"","sources":["../src/zod.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAY,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,IAAI,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;IACzC,IAAI,IAAI,GAAG,EAAE,CAAA;IACb,MAAM,GAAG,GAAG,MAAM,IAAI,SAAS,EAAE;SAC/B,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;SAEf,IAAI,CACJ,OAAO,EACP,KAAK,EAAE,CAAC,EAAE,EAAE;QACX,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;QACnC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QAChB,mBAAmB;QACnB,IAAI,CAAC,gBAAgB,CAAA;QACrB,OAAO;YACN,IAAI;YACJ,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,UAAU;SACV,CAAA;IACF,CAAC,EACD;QACC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;SAChB,CAAC;QACF,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC;YAClB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;YAChB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;SACpB,CAAC;KACF,CACD;SACA,IAAI,CACJ,QAAQ,EACR,KAAK,EAAE,CAAC,EAAE,EAAE;QACX,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;QACnC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QAChB,mBAAmB;QACnB,IAAI,CAAC,gBAAgB,CAAA;QACrB,OAAO;YACN,IAAI;YACJ,QAAQ,EAAE,IAAI,CAAC,IAAI;SACnB,CAAA;IACF,CAAC,EACD;QACC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;SAChB,CAAC;QACF,QAAQ,EAAE;YACT,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC;gBACb,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;gBAChB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;aACpB,CAAC;YACF,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC;gBACb,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;aACxB,CAAC;SACF;KACD,CACD;SACA,MAAM,CACN,GAAG,CAAC,OAAO,EAAE;QACZ,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACR,cAAc,EAAE,kBAAkB;SAClC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;KACtC,CAAC,CACF,CAAA;IACF,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC5B,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAA;AACrE,CAAC,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spiceflow",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "description": "Simple API framework with RPC and type safety",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -15,11 +15,15 @@
15
15
  "license": "",
16
16
  "dependencies": {
17
17
  "@medley/router": "^0.2.1",
18
- "@sinclair/typebox": "^0.33.5",
18
+ "@sinclair/typebox": "^0.33.7",
19
19
  "ajv": "^8.17.1",
20
+ "ajv-formats": "^3.0.1",
20
21
  "eventsource-parser": "^2.0.1",
21
22
  "fast-querystring": "^1.1.2",
22
- "openapi-types": "^12.1.3"
23
+ "lodash.clonedeep": "^4.5.0",
24
+ "openapi-types": "^12.1.3",
25
+ "zod": "^3.23.8",
26
+ "zod-to-json-schema": "^3.23.2"
23
27
  },
24
28
  "devDependencies": {
25
29
  "@types/bun": "^1.1.6",
@@ -32,7 +32,7 @@ type And<A extends boolean, B extends boolean> = A extends true
32
32
  : false
33
33
 
34
34
  type ReplaceGeneratorWithAsyncGenerator<
35
- in out RecordType extends Record<string, unknown>
35
+ in out RecordType extends Record<string, unknown>,
36
36
  > = {
37
37
  [K in keyof RecordType]: RecordType[K] extends Generator<
38
38
  infer A,
@@ -62,7 +62,7 @@ export namespace SpiceflowClient {
62
62
  }
63
63
 
64
64
  export type Create<
65
- App extends Spiceflow<any, any, any, any, any, any, any, any>
65
+ App extends Spiceflow<any, any, any, any, any, any, any, any>,
66
66
  > = App extends {
67
67
  _routes: infer Schema extends Record<string, any>
68
68
  }
@@ -89,24 +89,19 @@ export namespace SpiceflowClient {
89
89
  : never
90
90
  : Route[K] extends {
91
91
  body: infer Body
92
- headers: infer Headers
92
+ // headers: infer Headers
93
93
  params: any
94
94
  query: infer Query
95
95
  response: infer Response extends Record<number, unknown>
96
96
  }
97
- ? (undefined extends Headers
98
- ? { headers?: Record<string, unknown> }
99
- : {
100
- headers: Headers
101
- }) &
102
- (undefined extends Query
103
- ? { query?: Record<string, unknown> }
104
- : { query: Query }) extends infer Param
97
+ ? { headers?: Record<string, unknown> } & (undefined extends Query
98
+ ? { query?: Record<string, unknown> }
99
+ : { query: Query }) extends infer Param
105
100
  ? {} extends Param
106
101
  ? undefined extends Body
107
102
  ? K extends 'get' | 'head'
108
103
  ? (
109
- options?: Prettify<Param & TreatyParam>
104
+ options?: Prettify<Param & TreatyParam>,
110
105
  ) => Promise<
111
106
  TreatyResponse<
112
107
  ReplaceGeneratorWithAsyncGenerator<Response>
@@ -114,7 +109,7 @@ export namespace SpiceflowClient {
114
109
  >
115
110
  : (
116
111
  body?: Body,
117
- options?: Prettify<Param & TreatyParam>
112
+ options?: Prettify<Param & TreatyParam>,
118
113
  ) => Promise<
119
114
  TreatyResponse<
120
115
  ReplaceGeneratorWithAsyncGenerator<Response>
@@ -124,7 +119,7 @@ export namespace SpiceflowClient {
124
119
  body: Body extends Record<string, unknown>
125
120
  ? ReplaceBlobWithFiles<Body>
126
121
  : Body,
127
- options?: Prettify<Param & TreatyParam>
122
+ options?: Prettify<Param & TreatyParam>,
128
123
  ) => Promise<
129
124
  TreatyResponse<
130
125
  ReplaceGeneratorWithAsyncGenerator<Response>
@@ -132,7 +127,7 @@ export namespace SpiceflowClient {
132
127
  >
133
128
  : K extends 'get' | 'head'
134
129
  ? (
135
- options: Prettify<Param & TreatyParam>
130
+ options: Prettify<Param & TreatyParam>,
136
131
  ) => Promise<
137
132
  TreatyResponse<
138
133
  ReplaceGeneratorWithAsyncGenerator<Response>
@@ -142,7 +137,7 @@ export namespace SpiceflowClient {
142
137
  body: Body extends Record<string, unknown>
143
138
  ? ReplaceBlobWithFiles<Body>
144
139
  : Body,
145
- options: Prettify<Param & TreatyParam>
140
+ options: Prettify<Param & TreatyParam>,
146
141
  ) => Promise<
147
142
  TreatyResponse<
148
143
  ReplaceGeneratorWithAsyncGenerator<Response>
@@ -179,13 +174,13 @@ export namespace SpiceflowClient {
179
174
  | RequestInit['headers']
180
175
  | ((
181
176
  path: string,
182
- options: RequestInit
177
+ options: RequestInit,
183
178
  ) => RequestInit['headers'] | void)
184
179
  >
185
180
  onRequest?: MaybeArray<
186
181
  (
187
182
  path: string,
188
- options: RequestInit
183
+ options: RequestInit,
189
184
  ) => MaybePromise<RequestInit | void>
190
185
  >
191
186
  onResponse?: MaybeArray<(response: Response) => MaybePromise<unknown>>
@@ -226,7 +221,7 @@ export namespace SpiceflowClient {
226
221
 
227
222
  export type WSEvent<
228
223
  K extends keyof WebSocketEventMap,
229
- Data = unknown
224
+ Data = unknown,
230
225
  > = K extends 'message' ? OnMessage<Data> : WebSocketEventMap[K]
231
226
  }
232
227
 
@@ -9,7 +9,7 @@ const randomObject = {
9
9
  c: true,
10
10
  d: false,
11
11
  e: null,
12
- f: new Date(0)
12
+ f: new Date(0),
13
13
  }
14
14
  const randomArray = [
15
15
  'a',
@@ -18,7 +18,7 @@ const randomArray = [
18
18
  false,
19
19
  null,
20
20
  new Date(0),
21
- { a: 'a', b: 2, c: true, d: false, e: null, f: new Date(0) }
21
+ { a: 'a', b: 2, c: true, d: false, e: null, f: new Date(0) },
22
22
  ]
23
23
 
24
24
  const app = new Spiceflow()
@@ -27,22 +27,30 @@ const app = new Spiceflow()
27
27
  .get('/number', () => 1)
28
28
  .get('/true', () => true)
29
29
  .get('/false', () => false)
30
- .post('/array', ({ body }) => body, {
31
- body: t.Array(t.String())
30
+ .post('/array', async ({ request }) => await request.json(), {
31
+ body: t.Array(t.String()),
32
32
  })
33
- .post('/mirror', ({ body }) => body)
34
- .post('/body', ({ body }) => body, {
35
- body: t.String()
33
+ .post('/mirror', async ({ request }) => await request.json())
34
+ .post('/body', async ({ request }) => await request.text(), {
35
+ body: t.String(),
36
36
  })
37
- .delete('/empty', ({ body }) => ({ body: body ?? null }))
38
- .post('/deep/nested/mirror', ({ body }) => body, {
37
+ .delete('/empty', async ({ request }) => {
38
+ const body = await request.text()
39
+ return { body: body || null }
40
+ })
41
+ .post('/deep/nested/mirror', async ({ request }) => await request.json(), {
39
42
  body: t.Object({
40
43
  username: t.String(),
41
- password: t.String()
42
- })
44
+ password: t.String(),
45
+ }),
43
46
  })
44
47
 
45
- .use(new Spiceflow({ basePath: '/nested' }).get('/data', ({ params }) => 'hi'))
48
+ .use(
49
+ new Spiceflow({ basePath: '/nested' }).get(
50
+ '/data',
51
+ ({ params }) => 'hi',
52
+ ),
53
+ )
46
54
  // .get('/error', ({ error }) => error("I'm a teapot", 'Kirifuji Nagisa'), {
47
55
  // response: {
48
56
  // 200: t.Void(),
@@ -59,17 +67,18 @@ const app = new Spiceflow()
59
67
  {
60
68
  response: {
61
69
  200: t.Object({
62
- x: t.String()
63
- })
64
- }
65
- }
70
+ x: t.String(),
71
+ }),
72
+ },
73
+ },
66
74
  )
67
75
 
68
- .post('/date', ({ body: { date } }) => date, {
69
- body: t.Object({
70
- date: t.Date()
71
- })
72
- })
76
+ // TODO ajv does not accept dates for some reason
77
+ // .post('/date', ({ body: { date } }) => date, {
78
+ // body: t.Object({
79
+ // date: t.Date()
80
+ // })
81
+ // })
73
82
  .get('/dateObject', () => ({ date: new Date() }))
74
83
  .get('/redirect', ({ redirect }) => redirect('http://localhost:8083/true'))
75
84
  .post(
@@ -77,9 +86,9 @@ const app = new Spiceflow()
77
86
  ({ redirect }) => redirect('http://localhost:8083/true'),
78
87
  {
79
88
  body: t.Object({
80
- username: t.String()
81
- })
82
- }
89
+ username: t.String(),
90
+ }),
91
+ },
83
92
  )
84
93
  // .get('/formdata', () => ({
85
94
  // image: Bun.file('./test/kyuukurarin.mp4')
@@ -107,7 +116,7 @@ const client = createSpiceflowClient(app)
107
116
 
108
117
  describe('client', () => {
109
118
  it('get index', async () => {
110
- const { data, error } = await client.index.get()
119
+ const { data, error } = await client.index.get({})
111
120
 
112
121
  expect(data).toBe('a')
113
122
  expect(error).toBeNull()