spiceflow 1.17.12 → 1.18.0
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/README.md +167 -2
- package/dist/client/errors.d.ts +2 -1
- package/dist/client/errors.d.ts.map +1 -1
- package/dist/client/errors.js +3 -1
- package/dist/client/errors.js.map +1 -1
- package/dist/client/fetch.d.ts +86 -0
- package/dist/client/fetch.d.ts.map +1 -0
- package/dist/client/fetch.js +143 -0
- package/dist/client/fetch.js.map +1 -0
- package/dist/client/index.d.ts +4 -14
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +3 -176
- package/dist/client/index.js.map +1 -1
- package/dist/client/shared.d.ts +47 -0
- package/dist/client/shared.d.ts.map +1 -0
- package/dist/client/shared.js +314 -0
- package/dist/client/shared.js.map +1 -0
- package/dist/client/types.d.ts +2 -1
- package/dist/client/types.d.ts.map +1 -1
- package/dist/fetch-client.test.d.ts +2 -0
- package/dist/fetch-client.test.d.ts.map +1 -0
- package/dist/fetch-client.test.js +362 -0
- package/dist/fetch-client.test.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp.d.ts +1 -1
- package/dist/mcp.d.ts.map +1 -1
- package/dist/openapi.d.ts +1 -1
- package/dist/openapi.d.ts.map +1 -1
- package/dist/spiceflow.d.ts +36 -14
- package/dist/spiceflow.d.ts.map +1 -1
- package/dist/spiceflow.js +49 -16
- package/dist/spiceflow.js.map +1 -1
- package/dist/spiceflow.test.js +205 -1
- package/dist/spiceflow.test.js.map +1 -1
- package/package.json +3 -3
- package/src/client/errors.ts +3 -0
- package/src/client/fetch.ts +447 -0
- package/src/client/index.ts +19 -229
- package/src/client/shared.ts +406 -0
- package/src/client/types.ts +2 -1
- package/src/fetch-client.test.ts +411 -0
- package/src/index.ts +1 -1
- package/src/spiceflow.test.ts +315 -1
- package/src/spiceflow.ts +106 -32
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,iBAAiB,CAAA;AAE9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAEjD,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;KACvB,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACrB,GAAG,EAAE,CAAA;AAEN,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,KAAK,CAAA;AAE3D,KAAK,KAAK,GAAG,IAAI,GAAG,QAAQ,CAAA;AAE5B,KAAK,oBAAoB,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI;KAC5E,CAAC,IAAI,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,SAAS,GAAG,GAC9C,UAAU,CAAC,CAAC,CAAC,GACb,UAAU,CAAC,CAAC,CAAC,SACP,IAAI,GACJ,IAAI,EAAE,GACN;QAAE,WAAW,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,CAAA;KAAE,GAC/C,KAAK,GACL,UAAU,CAAC,CAAC,CAAC;CACpB,GAAG,EAAE,CAAA;AAEN,KAAK,GAAG,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,OAAO,IAAI,CAAC,SAAS,IAAI,GAC3D,CAAC,SAAS,IAAI,GACZ,IAAI,GACJ,KAAK,GACP,KAAK,CAAA;AAET,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,iBAAiB,CAAA;AAE9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAEjD,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;KACvB,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACrB,GAAG,EAAE,CAAA;AAEN,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,KAAK,CAAA;AAE3D,KAAK,KAAK,GAAG,IAAI,GAAG,QAAQ,CAAA;AAE5B,KAAK,oBAAoB,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI;KAC5E,CAAC,IAAI,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,SAAS,GAAG,GAC9C,UAAU,CAAC,CAAC,CAAC,GACb,UAAU,CAAC,CAAC,CAAC,SACP,IAAI,GACJ,IAAI,EAAE,GACN;QAAE,WAAW,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,CAAA;KAAE,GAC/C,KAAK,GACL,UAAU,CAAC,CAAC,CAAC;CACpB,GAAG,EAAE,CAAA;AAEN,KAAK,GAAG,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,OAAO,IAAI,CAAC,SAAS,IAAI,GAC3D,CAAC,SAAS,IAAI,GACZ,IAAI,GACJ,KAAK,GACP,KAAK,CAAA;AAET,MAAM,MAAM,kCAAkC,CAC5C,EAAE,CAAC,GAAG,CAAC,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAC/C;KACD,CAAC,IAAI,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,SAAS,GAAG,GAC9C,UAAU,CAAC,CAAC,CAAC,GACb,UAAU,CAAC,CAAC,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,GACxD,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,SAAS,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,SAAS,IAAI,GAC9D,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GACvB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,SAAS,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,SAAS,IAAI,GACzD,CAAC,GACD,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAC/B,UAAU,CAAC,CAAC,CAAC,SAAS,cAAc,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,GAC7D,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,SAAS,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,SAAS,IAAI,GAC9D,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GACvB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,SAAS,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,SAAS,IAAI,GACzD,CAAC,GACD,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAC/B,UAAU,CAAC,CAAC,CAAC;CACtB,GAAG,EAAE,CAAA;AAEN,KAAK,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAA;AAC5B,KAAK,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;AAErC,yBAAiB,eAAe,CAAC;IAC/B,UAAU,WAAW;QACnB,KAAK,CAAC,EAAE,WAAW,CAAA;KACpB;IAED,MAAM,MAAM,MAAM,CAAC,GAAG,SAAS,YAAY,IAAI,GAAG,SAAS;QACzD,MAAM,EAAE;YAAE,YAAY,EAAE,MAAM,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;SAAE,CAAA;KACnE,GACG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GACtB,mLAAmL,CAAA;IAEvL,MAAM,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI;SAC1D,CAAC,IAAI,MAAM,KAAK,IAAI,CAAC,SAAS,IAAI,MAAM,EAAE,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS;YACzE,OAAO,EAAE,MAAM,IAAI,CAAA;YAEnB,MAAM,EAAE,GAAG,CAAA;YACX,KAAK,EAAE,MAAM,KAAK,CAAA;YAClB,QAAQ,EAAE,MAAM,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;SACzD,GACG;YAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;SAAE,GAAG,CAAC,SAAS,SAAS,KAAK,GAC5D;YAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;SAAE,GACnC;YAAE,KAAK,EAAE,KAAK,CAAA;SAAE,CAAC,SAAS,MAAM,KAAK,GACvC,EAAE,SAAS,KAAK,GACd,SAAS,SAAS,IAAI,GACpB,CAAC,SAAS,KAAK,GAAG,MAAM,GACtB,CACE,OAAO,CAAC,EAAE,QAAQ,CAAC,KAAK,GAAG,WAAW,CAAC,KACpC,OAAO,CACV,cAAc,CAAC,kCAAkC,CAAC,QAAQ,CAAC,CAAC,CAC7D,GACD,CACE,OAAO,CAAC,EAAE,IAAI,EACd,OAAO,CAAC,EAAE,QAAQ,CAAC,KAAK,GAAG,WAAW,CAAC,KACpC,OAAO,CACV,cAAc,CAAC,kCAAkC,CAAC,QAAQ,CAAC,CAAC,CAC7D,GACH,CACE,OAAO,EAAE,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACzC,oBAAoB,CAAC,IAAI,CAAC,GAC1B,IAAI,EACR,OAAO,CAAC,EAAE,QAAQ,CAAC,KAAK,GAAG,WAAW,CAAC,KACpC,OAAO,CACV,cAAc,CAAC,kCAAkC,CAAC,QAAQ,CAAC,CAAC,CAC7D,GACH,CAAC,SAAS,KAAK,GAAG,MAAM,GACtB,CACE,OAAO,EAAE,QAAQ,CAAC,KAAK,GAAG,WAAW,CAAC,KACnC,OAAO,CACV,cAAc,CAAC,kCAAkC,CAAC,QAAQ,CAAC,CAAC,CAC7D,GACD,CACE,OAAO,EAAE,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACzC,oBAAoB,CAAC,IAAI,CAAC,GAC1B,IAAI,EACR,OAAO,EAAE,QAAQ,CAAC,KAAK,GAAG,WAAW,CAAC,KACnC,OAAO,CACV,cAAc,CAAC,kCAAkC,CAAC,QAAQ,CAAC,CAAC,CAC7D,GACL,KAAK,GACP,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAC3B,CAAA;IAED,KAAK,YAAY,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IACjD,OAAO,CAAC,MAAM,KAAK,EAAE,IAAI,MAAM,EAAE,CAAC,SAAS,MAAM,IAAI,SAAS,MAAM,GAChE,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,GACxB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAErB,AADA,iFAAiF;IACjF,CAAC,CAAC,CAAC,MAAM,EAAE;SACR,KAAK,IAAI,IAAI,SAAS,IAAI,MAAM,KAAK,EAAE,GACpC,KAAK,SAAS,GAAG,MAAM,KAAK,GAAG,GAC7B,KAAK,GACL,KAAK,GACP,KAAK,GAAG,MAAM,GAAG,MAAM;KAC5B,KAAK,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAC5D,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GACtB,CAAC,IAAI,SAAS,IAAI,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,GACjE,KAAK,CAAA;IAEX,MAAM,WAAW,MAAM;QAErB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAA;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;QAC3B,OAAO,CAAC,EAAE,UAAU,CAChB,WAAW,CAAC,SAAS,CAAC,GACtB,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,KAAK,WAAW,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAC1E,CAAA;QACD,SAAS,CAAC,EAAE,UAAU,CACpB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,KAAK,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC,CACzE,CAAA;QACD,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC,QAAQ,EAAE,QAAQ,KAAK,YAAY,CAAC,OAAO,CAAC,CAAC,CAAA;QACtE,OAAO,CAAC,EAAE,MAAM,CAAA;KAGjB;IAMD,MAAM,MAAM,cAAc,CAAC,GAAG,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAC1D;QACE,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAA;QACd,KAAK,EAAE,IAAI,CAAA;QACX,QAAQ,EAAE,QAAQ,CAAA;QAClB,MAAM,EAAE,MAAM,CAAA;QACd,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,CAAA;QAC/B,GAAG,EAAE,MAAM,CAAA;KACZ,GACD;QACE,IAAI,EAAE,IAAI,CAAA;QACV,KAAK,EAAE,OAAO,CAAC,MAAM,GAAG,EAAE,GAAG,CAAC,SAAS,KAAK,GACxC,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,GAChC;aACG,MAAM,IAAI,MAAM,GAAG,GAAG,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;SAChE,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;QAC9B,QAAQ,EAAE,QAAQ,CAAA;QAClB,MAAM,EAAE,MAAM,CAAA;QACd,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,CAAA;QAC/B,GAAG,EAAE,MAAM,CAAA;KACZ,CAAA;IAEL,MAAM,WAAW,SAAS,CAAC,IAAI,GAAG,OAAO,CAAE,SAAQ,YAAY;QAC7D,IAAI,EAAE,IAAI,CAAA;QACV,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,CAAA;KAC9B;IAED,MAAM,MAAM,OAAO,CACjB,CAAC,SAAS,MAAM,iBAAiB,EACjC,IAAI,GAAG,OAAO,IACZ,CAAC,SAAS,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAA;;CACjE;AAED,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,GAAG,KAAK,GAAG,IAAI,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch-client.test.d.ts","sourceRoot":"","sources":["../src/fetch-client.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { createSpiceflowFetch } from "./client/fetch.js";
|
|
3
|
+
import { Spiceflow } from "./spiceflow.js";
|
|
4
|
+
import { SpiceflowFetchError } from "./client/errors.js";
|
|
5
|
+
import { describe, expect, it } from 'vitest';
|
|
6
|
+
const app = new Spiceflow()
|
|
7
|
+
.state('someState', 1)
|
|
8
|
+
.get('/', () => 'a')
|
|
9
|
+
.post('/', () => 'a')
|
|
10
|
+
.get('/number', () => 1)
|
|
11
|
+
.get('/someState', ({ state }) => state.someState)
|
|
12
|
+
.get('/true', () => true)
|
|
13
|
+
.get('/false', () => false)
|
|
14
|
+
.post('/array', async ({ request }) => await request.json(), {
|
|
15
|
+
body: z.array(z.string()),
|
|
16
|
+
})
|
|
17
|
+
.route({
|
|
18
|
+
method: 'POST',
|
|
19
|
+
path: '/mirror',
|
|
20
|
+
handler: async ({ request }) => await request.json(),
|
|
21
|
+
})
|
|
22
|
+
.route({
|
|
23
|
+
method: 'POST',
|
|
24
|
+
path: '/body',
|
|
25
|
+
handler: async ({ request }) => await request.text(),
|
|
26
|
+
body: z.string(),
|
|
27
|
+
})
|
|
28
|
+
.route({
|
|
29
|
+
method: 'DELETE',
|
|
30
|
+
path: '/empty',
|
|
31
|
+
handler: async ({ request }) => {
|
|
32
|
+
const body = await request.text();
|
|
33
|
+
return { body: body || null };
|
|
34
|
+
},
|
|
35
|
+
})
|
|
36
|
+
.route({
|
|
37
|
+
method: 'POST',
|
|
38
|
+
path: '/deep/nested/mirror',
|
|
39
|
+
handler: async ({ request }) => await request.json(),
|
|
40
|
+
body: z.object({
|
|
41
|
+
username: z.string(),
|
|
42
|
+
password: z.string(),
|
|
43
|
+
}),
|
|
44
|
+
})
|
|
45
|
+
.get('/throws', () => {
|
|
46
|
+
throw new Response('Custom error', { status: 400 });
|
|
47
|
+
})
|
|
48
|
+
.get('/throws-307', () => {
|
|
49
|
+
throw new Response('Redirect', {
|
|
50
|
+
status: 307,
|
|
51
|
+
headers: { location: 'http://example.com' },
|
|
52
|
+
});
|
|
53
|
+
})
|
|
54
|
+
.get('/throws-200', () => {
|
|
55
|
+
throw new Response('this string will not be parsed as json', {
|
|
56
|
+
status: 200,
|
|
57
|
+
});
|
|
58
|
+
})
|
|
59
|
+
.get('/throws-402-json', () => {
|
|
60
|
+
throw new Response(JSON.stringify({ reason: 'Payment required', code: 4021 }), {
|
|
61
|
+
status: 402,
|
|
62
|
+
headers: { 'content-type': 'application/json' },
|
|
63
|
+
});
|
|
64
|
+
})
|
|
65
|
+
.use(new Spiceflow({ basePath: '/nested' }).get('/data', ({ params }) => 'hi'))
|
|
66
|
+
.get('/validationError',
|
|
67
|
+
// @ts-expect-error
|
|
68
|
+
() => {
|
|
69
|
+
return 'this errors because validation is wrong';
|
|
70
|
+
}, {
|
|
71
|
+
response: {
|
|
72
|
+
200: z.object({
|
|
73
|
+
x: z.string(),
|
|
74
|
+
}),
|
|
75
|
+
},
|
|
76
|
+
})
|
|
77
|
+
.get('/dateObject', () => ({ date: new Date() }))
|
|
78
|
+
.get('/redirect', ({ redirect }) => redirect('http://localhost:8083/true'))
|
|
79
|
+
.post('/redirect', ({ redirect }) => redirect('http://localhost:8083/true'), {
|
|
80
|
+
body: z.object({
|
|
81
|
+
username: z.string(),
|
|
82
|
+
}),
|
|
83
|
+
})
|
|
84
|
+
.get('/stream', function* stream() {
|
|
85
|
+
yield 'a';
|
|
86
|
+
yield 'b';
|
|
87
|
+
yield 'c';
|
|
88
|
+
})
|
|
89
|
+
.get('/stream-async', async function* stream() {
|
|
90
|
+
yield 'a';
|
|
91
|
+
yield 'b';
|
|
92
|
+
yield 'c';
|
|
93
|
+
})
|
|
94
|
+
.get('/stream-return', function* stream() {
|
|
95
|
+
return 'a';
|
|
96
|
+
})
|
|
97
|
+
.get('/stream-return-async', function* stream() {
|
|
98
|
+
return 'a';
|
|
99
|
+
})
|
|
100
|
+
.get('/id/:id', ({ params: { id } }) => id)
|
|
101
|
+
.get('/items/:id/:id2', ({ params }) => params)
|
|
102
|
+
.get('/search', ({ query }) => query, { query: z.object({ q: z.string(), page: z.coerce.number().optional() }) });
|
|
103
|
+
const f = createSpiceflowFetch(app);
|
|
104
|
+
describe('fetch client', () => {
|
|
105
|
+
it('get index', async () => {
|
|
106
|
+
const result = await f('/');
|
|
107
|
+
if (result instanceof Error)
|
|
108
|
+
throw result;
|
|
109
|
+
expect(result).toBe('a');
|
|
110
|
+
});
|
|
111
|
+
it('post index', async () => {
|
|
112
|
+
const result = await f('/', { method: 'POST' });
|
|
113
|
+
if (result instanceof Error)
|
|
114
|
+
throw result;
|
|
115
|
+
expect(result).toBe('a');
|
|
116
|
+
});
|
|
117
|
+
it('parse number', async () => {
|
|
118
|
+
const result = await f('/number');
|
|
119
|
+
if (result instanceof Error)
|
|
120
|
+
throw result;
|
|
121
|
+
expect(result).toEqual(1);
|
|
122
|
+
});
|
|
123
|
+
it('parse true', async () => {
|
|
124
|
+
const result = await f('/true');
|
|
125
|
+
if (result instanceof Error)
|
|
126
|
+
throw result;
|
|
127
|
+
expect(result).toEqual(true);
|
|
128
|
+
});
|
|
129
|
+
it('parse false', async () => {
|
|
130
|
+
const result = await f('/false');
|
|
131
|
+
if (result instanceof Error)
|
|
132
|
+
throw result;
|
|
133
|
+
expect(result).toEqual(false);
|
|
134
|
+
});
|
|
135
|
+
it('post array', async () => {
|
|
136
|
+
const result = await f('/array', {
|
|
137
|
+
method: 'POST',
|
|
138
|
+
body: ['a', 'b'],
|
|
139
|
+
});
|
|
140
|
+
if (result instanceof Error)
|
|
141
|
+
throw result;
|
|
142
|
+
expect(result).toEqual(['a', 'b']);
|
|
143
|
+
});
|
|
144
|
+
it('post body', async () => {
|
|
145
|
+
const result = await f('/body', {
|
|
146
|
+
method: 'POST',
|
|
147
|
+
body: 'a',
|
|
148
|
+
});
|
|
149
|
+
if (result instanceof Error)
|
|
150
|
+
throw result;
|
|
151
|
+
expect(result).toEqual('a');
|
|
152
|
+
});
|
|
153
|
+
it('post mirror', async () => {
|
|
154
|
+
const body = { username: 'A', password: 'B' };
|
|
155
|
+
const result = await f('/mirror', {
|
|
156
|
+
method: 'POST',
|
|
157
|
+
body,
|
|
158
|
+
});
|
|
159
|
+
if (result instanceof Error)
|
|
160
|
+
throw result;
|
|
161
|
+
expect(result).toEqual(body);
|
|
162
|
+
});
|
|
163
|
+
it('delete empty', async () => {
|
|
164
|
+
const result = await f('/empty', { method: 'DELETE' });
|
|
165
|
+
if (result instanceof Error)
|
|
166
|
+
throw result;
|
|
167
|
+
expect(result).toEqual({ body: null });
|
|
168
|
+
});
|
|
169
|
+
it('post deep nested mirror', async () => {
|
|
170
|
+
const body = { username: 'A', password: 'B' };
|
|
171
|
+
const result = await f('/deep/nested/mirror', {
|
|
172
|
+
method: 'POST',
|
|
173
|
+
body,
|
|
174
|
+
});
|
|
175
|
+
if (result instanceof Error)
|
|
176
|
+
throw result;
|
|
177
|
+
expect(result).toEqual(body);
|
|
178
|
+
});
|
|
179
|
+
it('get nested data', async () => {
|
|
180
|
+
const result = await f('/nested/data');
|
|
181
|
+
if (result instanceof Error)
|
|
182
|
+
throw result;
|
|
183
|
+
expect(result).toEqual('hi');
|
|
184
|
+
});
|
|
185
|
+
it('handles thrown response', async () => {
|
|
186
|
+
const result = await f('/throws');
|
|
187
|
+
expect(result).toBeInstanceOf(SpiceflowFetchError);
|
|
188
|
+
if (!(result instanceof Error))
|
|
189
|
+
throw new Error('Expected error');
|
|
190
|
+
expect(result.status).toBe(400);
|
|
191
|
+
expect(result.message).toBe('Custom error');
|
|
192
|
+
});
|
|
193
|
+
it('handles thrown response with 307', async () => {
|
|
194
|
+
const result = await f('/throws-307');
|
|
195
|
+
expect(result).toBeInstanceOf(SpiceflowFetchError);
|
|
196
|
+
if (!(result instanceof Error))
|
|
197
|
+
throw new Error('Expected error');
|
|
198
|
+
expect(result.status).toBe(307);
|
|
199
|
+
expect(result.message).toBe('Redirect');
|
|
200
|
+
});
|
|
201
|
+
it('handles thrown response with 200', async () => {
|
|
202
|
+
const result = await f('/throws-200');
|
|
203
|
+
if (result instanceof Error)
|
|
204
|
+
throw result;
|
|
205
|
+
expect(result).toMatchInlineSnapshot(`"this string will not be parsed as json"`);
|
|
206
|
+
});
|
|
207
|
+
it('surfaces json payload in error value for 402 responses', async () => {
|
|
208
|
+
const result = await f('/throws-402-json');
|
|
209
|
+
expect(result).toBeInstanceOf(SpiceflowFetchError);
|
|
210
|
+
if (!(result instanceof SpiceflowFetchError))
|
|
211
|
+
throw new Error('Expected SpiceflowFetchError');
|
|
212
|
+
expect(result.status).toBe(402);
|
|
213
|
+
expect(result.value).toEqual({ reason: 'Payment required', code: 4021 });
|
|
214
|
+
});
|
|
215
|
+
it('stream', async () => {
|
|
216
|
+
const result = await f('/stream');
|
|
217
|
+
if (result instanceof Error)
|
|
218
|
+
throw result;
|
|
219
|
+
let all = '';
|
|
220
|
+
for await (const chunk of result) {
|
|
221
|
+
all += chunk + '-';
|
|
222
|
+
}
|
|
223
|
+
expect(all).toEqual('a-b-c-');
|
|
224
|
+
});
|
|
225
|
+
it('stream async', async () => {
|
|
226
|
+
const result = await f('/stream-async');
|
|
227
|
+
if (result instanceof Error)
|
|
228
|
+
throw result;
|
|
229
|
+
let all = '';
|
|
230
|
+
for await (const chunk of result) {
|
|
231
|
+
all += chunk + '-';
|
|
232
|
+
}
|
|
233
|
+
expect(all).toEqual('a-b-c-');
|
|
234
|
+
});
|
|
235
|
+
it('stream return', async () => {
|
|
236
|
+
const result = await f('/stream-return');
|
|
237
|
+
if (result instanceof Error)
|
|
238
|
+
throw result;
|
|
239
|
+
let all = '';
|
|
240
|
+
for await (const chunk of result) {
|
|
241
|
+
all += chunk;
|
|
242
|
+
}
|
|
243
|
+
expect(all).toEqual('a');
|
|
244
|
+
});
|
|
245
|
+
it('stream return async', async () => {
|
|
246
|
+
const result = await f('/stream-return-async');
|
|
247
|
+
if (result instanceof Error)
|
|
248
|
+
throw result;
|
|
249
|
+
let all = '';
|
|
250
|
+
for await (const chunk of result) {
|
|
251
|
+
all += chunk;
|
|
252
|
+
}
|
|
253
|
+
expect(all).toEqual('a');
|
|
254
|
+
});
|
|
255
|
+
it('path params', async () => {
|
|
256
|
+
const result = await f('/id/:id', {
|
|
257
|
+
params: { id: '123' },
|
|
258
|
+
});
|
|
259
|
+
if (result instanceof Error)
|
|
260
|
+
throw result;
|
|
261
|
+
expect(result).toEqual('123');
|
|
262
|
+
});
|
|
263
|
+
it('query params', async () => {
|
|
264
|
+
const result = await f('/search', {
|
|
265
|
+
query: { q: 'hello', page: 1 },
|
|
266
|
+
});
|
|
267
|
+
if (result instanceof Error)
|
|
268
|
+
throw result;
|
|
269
|
+
expect(result).toEqual({ q: 'hello', page: 1 });
|
|
270
|
+
});
|
|
271
|
+
it('overlapping param names', async () => {
|
|
272
|
+
const result = await f('/items/:id/:id2', {
|
|
273
|
+
params: { id: 'A', id2: 'B' },
|
|
274
|
+
});
|
|
275
|
+
if (result instanceof Error)
|
|
276
|
+
throw result;
|
|
277
|
+
expect(result).toEqual({ id: 'A', id2: 'B' });
|
|
278
|
+
});
|
|
279
|
+
it('untyped URL falls back gracefully', async () => {
|
|
280
|
+
const untypedFetch = createSpiceflowFetch(app);
|
|
281
|
+
const result = await untypedFetch('/number');
|
|
282
|
+
if (result instanceof Error)
|
|
283
|
+
throw result;
|
|
284
|
+
expect(result).toEqual(1);
|
|
285
|
+
});
|
|
286
|
+
});
|
|
287
|
+
describe('fetch client type safety', () => {
|
|
288
|
+
it('requires params for parameterized paths', () => {
|
|
289
|
+
// @ts-expect-error - missing required params for /id/:id
|
|
290
|
+
f('/id/:id');
|
|
291
|
+
});
|
|
292
|
+
it('requires query when route schema demands it', () => {
|
|
293
|
+
// @ts-expect-error - missing required query for /search
|
|
294
|
+
f('/search');
|
|
295
|
+
});
|
|
296
|
+
it('requires body for POST with typed body schema', () => {
|
|
297
|
+
// @ts-expect-error - missing required body for /deep/nested/mirror POST
|
|
298
|
+
f('/deep/nested/mirror', { method: 'POST' });
|
|
299
|
+
});
|
|
300
|
+
it('allows GET without options on routes with no required fields', async () => {
|
|
301
|
+
const result = await f('/number');
|
|
302
|
+
if (result instanceof Error)
|
|
303
|
+
throw result;
|
|
304
|
+
expect(result).toEqual(1);
|
|
305
|
+
});
|
|
306
|
+
});
|
|
307
|
+
describe('fetch client with state', () => {
|
|
308
|
+
it('should return state value', async () => {
|
|
309
|
+
const f = createSpiceflowFetch(app, { state: { someState: 3 } });
|
|
310
|
+
const result = await f('/someState');
|
|
311
|
+
if (result instanceof Error)
|
|
312
|
+
throw result;
|
|
313
|
+
expect(result).toBe(3);
|
|
314
|
+
});
|
|
315
|
+
});
|
|
316
|
+
describe('fetch client retries', () => {
|
|
317
|
+
it('should retry on 500 errors and succeed on third attempt', async () => {
|
|
318
|
+
let attemptCount = 0;
|
|
319
|
+
const retryApp = new Spiceflow().get('/retry-success', () => {
|
|
320
|
+
attemptCount++;
|
|
321
|
+
if (attemptCount < 3) {
|
|
322
|
+
throw new Response('Server error', { status: 500 });
|
|
323
|
+
}
|
|
324
|
+
return { success: true, attempts: attemptCount };
|
|
325
|
+
});
|
|
326
|
+
const retryFetch = createSpiceflowFetch(retryApp, { retries: 2 });
|
|
327
|
+
const result = await retryFetch('/retry-success');
|
|
328
|
+
if (result instanceof Error)
|
|
329
|
+
throw result;
|
|
330
|
+
expect(result).toEqual({ success: true, attempts: 3 });
|
|
331
|
+
expect(attemptCount).toBe(3);
|
|
332
|
+
});
|
|
333
|
+
it('should fail after all retries are exhausted', async () => {
|
|
334
|
+
let attemptCount = 0;
|
|
335
|
+
const retryApp = new Spiceflow().get('/retry-fail', () => {
|
|
336
|
+
attemptCount++;
|
|
337
|
+
throw new Response('Server error', { status: 500 });
|
|
338
|
+
});
|
|
339
|
+
const retryFetch = createSpiceflowFetch(retryApp, { retries: 2 });
|
|
340
|
+
const result = await retryFetch('/retry-fail');
|
|
341
|
+
expect(result).toBeInstanceOf(SpiceflowFetchError);
|
|
342
|
+
if (!(result instanceof Error))
|
|
343
|
+
throw new Error('Expected error');
|
|
344
|
+
expect(result.status).toBe(500);
|
|
345
|
+
expect(attemptCount).toBe(3);
|
|
346
|
+
});
|
|
347
|
+
it('should not retry on non-500 errors', async () => {
|
|
348
|
+
let attemptCount = 0;
|
|
349
|
+
const retryApp = new Spiceflow().get('/retry-400', () => {
|
|
350
|
+
attemptCount++;
|
|
351
|
+
throw new Response('Bad request', { status: 400 });
|
|
352
|
+
});
|
|
353
|
+
const retryFetch = createSpiceflowFetch(retryApp, { retries: 2 });
|
|
354
|
+
const result = await retryFetch('/retry-400');
|
|
355
|
+
expect(result).toBeInstanceOf(SpiceflowFetchError);
|
|
356
|
+
if (!(result instanceof Error))
|
|
357
|
+
throw new Error('Expected error');
|
|
358
|
+
expect(result.status).toBe(400);
|
|
359
|
+
expect(attemptCount).toBe(1);
|
|
360
|
+
});
|
|
361
|
+
});
|
|
362
|
+
//# sourceMappingURL=fetch-client.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch-client.test.js","sourceRoot":"","sources":["../src/fetch-client.test.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { SpiceflowRequest } from './spiceflow.ts';
|
|
2
|
-
export { Spiceflow } from './spiceflow.ts';
|
|
2
|
+
export { Spiceflow, createSafePath } from './spiceflow.ts';
|
|
3
3
|
export type { AnySpiceflow, WaitUntil } from './spiceflow.ts';
|
|
4
4
|
export { ValidationError } from './error.ts';
|
|
5
5
|
export { preventProcessExitIfBusy } from './prevent-process-exit-if-busy.ts';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAqB,MAAM,gBAAgB,CAAA;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAqB,MAAM,gBAAgB,CAAA;AAEpE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC1D,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAA;AAG5E,cAAM,QAAS,SAAQ,UAAU,CAAC,QAAQ;CAAG;AAE7C,OAAO,EAAE,QAAQ,EAAE,CAAA;AACnB,OAAO,EAAE,gBAAgB,EAAE,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { SpiceflowRequest } from "./spiceflow.js";
|
|
2
|
-
export { Spiceflow } from "./spiceflow.js";
|
|
2
|
+
export { Spiceflow, createSafePath } from "./spiceflow.js";
|
|
3
3
|
export { ValidationError } from "./error.js";
|
|
4
4
|
export { preventProcessExitIfBusy } from "./prevent-process-exit-if-busy.js";
|
|
5
5
|
// utility Response to be used in Cloudflare Workers to shut up the TypeScript errors (cloudflare Response is different than normal Response type)
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAqB,MAAM,gBAAgB,CAAA;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAqB,MAAM,gBAAgB,CAAA;AAEpE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAE1D,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAA;AAE5E,kJAAkJ;AAClJ,MAAM,QAAS,SAAQ,UAAU,CAAC,QAAQ;CAAG;AAE7C,OAAO,EAAE,QAAQ,EAAE,CAAA;AACnB,OAAO,EAAE,gBAAgB,EAAE,CAAA"}
|
package/dist/mcp.d.ts
CHANGED
|
@@ -80,5 +80,5 @@ export declare const mcp: <Path extends string = "/mcp">({ path, name, version,
|
|
|
80
80
|
200: any;
|
|
81
81
|
};
|
|
82
82
|
};
|
|
83
|
-
}>, string
|
|
83
|
+
}>, string, Record<string, unknown> & Record<"/_mcp_config", unknown> & Record<`${Path extends "/" ? "/index" : Path extends "" ? Path : Path extends `/${string}` ? Path : Path}`, unknown>>;
|
|
84
84
|
//# sourceMappingURL=mcp.d.ts.map
|
package/dist/mcp.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAA;AAGhE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAInE;;;;;;;;;;GAUG;AACH,wBAAsB,WAAW,CAC/B,KAAK,CAAC,GAAG,SAAS,YAAY,EAC9B,KAAK,SAAS,MAAM,GAAG,GAAG,SAAS,SAAS,CAC1C,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,EACH,MAAM,UAAU,CACjB,GACG,UAAU,GACV,MAAM,EACV,EACA,SAAS,EACT,GAAG,EACH,WAAW,EACX,SAAS,GACV,EAAE;IACD,SAAS,EAAE,SAAS,CAAA;IACpB,GAAG,EAAE,GAAG,CAAA;IACR,WAAW,EAAE,KAAK,EAAE,CAAA;IACpB,SAAS,CAAC,EAAE,KAAK,EAAE,CAAA;CACpB,GAAG,OAAO,CAAC,SAAS,CAAC,CAyBrB;AAED,eAAO,MAAM,GAAG,GAAI,IAAI,SAAS,MAAM,GAAG,MAAM,EAAE;;;;;CAQ5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAA;AAGhE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAInE;;;;;;;;;;GAUG;AACH,wBAAsB,WAAW,CAC/B,KAAK,CAAC,GAAG,SAAS,YAAY,EAC9B,KAAK,SAAS,MAAM,GAAG,GAAG,SAAS,SAAS,CAC1C,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,EACH,MAAM,UAAU,CACjB,GACG,UAAU,GACV,MAAM,EACV,EACA,SAAS,EACT,GAAG,EACH,WAAW,EACX,SAAS,GACV,EAAE;IACD,SAAS,EAAE,SAAS,CAAA;IACpB,GAAG,EAAE,GAAG,CAAA;IACR,WAAW,EAAE,KAAK,EAAE,CAAA;IACpB,SAAS,CAAC,EAAE,KAAK,EAAE,CAAA;CACpB,GAAG,OAAO,CAAC,SAAS,CAAC,CAyBrB;AAED,eAAO,MAAM,GAAG,GAAI,IAAI,SAAS,MAAM,GAAG,MAAM,EAAE;;;;;CAQ5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6LA6EL,CAAA"}
|
package/dist/openapi.d.ts
CHANGED
|
@@ -34,5 +34,5 @@ export declare const openapi: <Path extends string = "/openapi">({ path, ...addi
|
|
|
34
34
|
200: any;
|
|
35
35
|
};
|
|
36
36
|
};
|
|
37
|
-
}>, "" | `${Path extends "/" ? "/index" : Path extends "" ? Path : Path extends `/${string}` ? Path : Path}
|
|
37
|
+
}>, "" | `${Path extends "/" ? "/index" : Path extends "" ? Path : Path extends `/${string}` ? Path : Path}`, Record<`${Path extends "/" ? "/index" : Path extends "" ? Path : Path extends `/${string}` ? Path : Path}`, unknown>>;
|
|
38
38
|
//# sourceMappingURL=openapi.d.ts.map
|
package/dist/openapi.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../src/openapi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsC,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AA8V9C,eAAO,MAAM,OAAO,GAAI,IAAI,SAAS,MAAM,GAAG,UAAU,EAAE,0BAGvD;IACD,IAAI,CAAC,EAAE,IAAI,CAAA;CACZ,GAAG,IAAI,CACN,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,EACzB,yCAAyC,GACzC,qCAAqC,CACxC,GAAG;IACA,uBAAuB,CAAC,EAAE,KAAK,CAAC;QAC9B,MAAM,EAAE,MAAM,CAAA;QACd,IAAI,EAAE,MAAM,CAAA;QACZ,QAAQ,CAAC,EAAE,OAAO,CAAA;KACnB,CAAC,CAAA;IACF,gBAAgB,CAAC,EAAE;QACjB,OAAO,EAAE;YACP,MAAM,EAAE,MAAM,CAAA;YACd,OAAO,EAAE,MAAM,CAAA;YACf,MAAM,EAAE,MAAM,EAAE,CAAA;SACjB,CAAA;KACF,CAAA;CACG;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../src/openapi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsC,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AA8V9C,eAAO,MAAM,OAAO,GAAI,IAAI,SAAS,MAAM,GAAG,UAAU,EAAE,0BAGvD;IACD,IAAI,CAAC,EAAE,IAAI,CAAA;CACZ,GAAG,IAAI,CACN,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,EACzB,yCAAyC,GACzC,qCAAqC,CACxC,GAAG;IACA,uBAAuB,CAAC,EAAE,KAAK,CAAC;QAC9B,MAAM,EAAE,MAAM,CAAA;QACd,IAAI,EAAE,MAAM,CAAA;QACZ,QAAQ,CAAC,EAAE,OAAO,CAAA;KACnB,CAAC,CAAA;IACF,gBAAgB,CAAC,EAAE;QACjB,OAAO,EAAE;YACP,MAAM,EAAE,MAAM,CAAA;YACd,OAAO,EAAE,MAAM,CAAA;YACf,MAAM,EAAE,MAAM,EAAE,CAAA;SACjB,CAAA;KACF,CAAA;CACG;;;;;;;;;;;;;;;;;;;mOA4FP,CAAA"}
|
package/dist/spiceflow.d.ts
CHANGED
|
@@ -26,7 +26,7 @@ export declare class Spiceflow<const in out BasePath extends string = '', const
|
|
|
26
26
|
schema: {};
|
|
27
27
|
macro: {};
|
|
28
28
|
macroFn: {};
|
|
29
|
-
}, const out ClientRoutes extends RouteBase = {}, const out RoutePaths extends string = ''> {
|
|
29
|
+
}, const out ClientRoutes extends RouteBase = {}, const out RoutePaths extends string = '', const in out RouteQuerySchemas extends Record<string, unknown> = {}> {
|
|
30
30
|
private id;
|
|
31
31
|
private router;
|
|
32
32
|
private middlewares;
|
|
@@ -40,6 +40,7 @@ export declare class Spiceflow<const in out BasePath extends string = '', const
|
|
|
40
40
|
Prefix: BasePath;
|
|
41
41
|
ClientRoutes: ClientRoutes;
|
|
42
42
|
RoutePaths: RoutePaths;
|
|
43
|
+
RouteQuerySchemas: RouteQuerySchemas;
|
|
43
44
|
Scoped: Scoped;
|
|
44
45
|
Singleton: Singleton;
|
|
45
46
|
Definitions: Definitions;
|
|
@@ -66,7 +67,7 @@ export declare class Spiceflow<const in out BasePath extends string = '', const
|
|
|
66
67
|
state: Reconcile<Singleton['state'], {
|
|
67
68
|
[name in Name]: Value;
|
|
68
69
|
}>;
|
|
69
|
-
}, Definitions, Metadata, ClientRoutes, RoutePaths>;
|
|
70
|
+
}, Definitions, Metadata, ClientRoutes, RoutePaths, RouteQuerySchemas>;
|
|
70
71
|
/**
|
|
71
72
|
* Create a new Router
|
|
72
73
|
* @param options {@link RouterOptions} {@link Platform}
|
|
@@ -85,7 +86,7 @@ export declare class Spiceflow<const in out BasePath extends string = '', const
|
|
|
85
86
|
query: Schema['query'];
|
|
86
87
|
response: ComposeSpiceflowResponse<Schema['response'], Handle>;
|
|
87
88
|
};
|
|
88
|
-
}>, RoutePaths | JoinPath<BasePath, Path>>;
|
|
89
|
+
}>, RoutePaths | JoinPath<BasePath, Path>, RouteQuerySchemas & Record<JoinPath<BasePath, Path>, Schema['query']>>;
|
|
89
90
|
get<const Path extends string, const LocalSchema extends InputSchema<keyof Definitions['type'] & string>, const Schema extends UnwrapRoute<LocalSchema, Definitions['type']>, const Macro extends Metadata['macro'], const Handle extends InlineHandler<this, Schema, Singleton, JoinPath<BasePath, Path>>>(path: Path, handler: Handle, hook?: LocalHook<LocalSchema, Schema, Singleton, Definitions['error'], Macro, JoinPath<BasePath, Path>>): Spiceflow<BasePath, Scoped, Singleton, Definitions, Metadata, ClientRoutes & CreateClient<JoinPath<BasePath, Path>, {
|
|
90
91
|
get: {
|
|
91
92
|
request: GetRequestSchema<Schema>;
|
|
@@ -93,7 +94,7 @@ export declare class Spiceflow<const in out BasePath extends string = '', const
|
|
|
93
94
|
query: Schema['query'];
|
|
94
95
|
response: ComposeSpiceflowResponse<Schema['response'], Handle>;
|
|
95
96
|
};
|
|
96
|
-
}>, RoutePaths | JoinPath<BasePath, Path>>;
|
|
97
|
+
}>, RoutePaths | JoinPath<BasePath, Path>, RouteQuerySchemas & Record<JoinPath<BasePath, Path>, Schema['query']>>;
|
|
97
98
|
put<const Path extends string, const LocalSchema extends InputSchema<keyof Definitions['type'] & string>, const Schema extends UnwrapRoute<LocalSchema, Definitions['type']>, const Handle extends InlineHandler<this, Schema, Singleton, JoinPath<BasePath, Path>>>(path: Path, handler: Handle, hook?: LocalHook<LocalSchema, Schema, Singleton, Definitions['error'], Metadata['macro'], JoinPath<BasePath, Path>>): Spiceflow<BasePath, Scoped, Singleton, Definitions, Metadata, ClientRoutes & CreateClient<JoinPath<BasePath, Path>, {
|
|
98
99
|
put: {
|
|
99
100
|
request: GetRequestSchema<Schema>;
|
|
@@ -101,7 +102,7 @@ export declare class Spiceflow<const in out BasePath extends string = '', const
|
|
|
101
102
|
query: Schema['query'];
|
|
102
103
|
response: ComposeSpiceflowResponse<Schema['response'], Handle>;
|
|
103
104
|
};
|
|
104
|
-
}>, RoutePaths | JoinPath<BasePath, Path>>;
|
|
105
|
+
}>, RoutePaths | JoinPath<BasePath, Path>, RouteQuerySchemas & Record<JoinPath<BasePath, Path>, Schema['query']>>;
|
|
105
106
|
route<const Path extends string, const LocalSchema extends InputSchema<keyof Definitions['type'] & string>, const Schema extends UnwrapRoute<LocalSchema, Definitions['type']>, const Handle extends InlineHandler<this, Schema, Singleton, JoinPath<BasePath, Path>>, Method extends HTTPMethod | HTTPMethod[] = '*'>(options: LocalHook<LocalSchema, Schema, Singleton, Definitions['error'], Metadata['macro'], JoinPath<BasePath, Path>> & {
|
|
106
107
|
path: Path;
|
|
107
108
|
method?: Method;
|
|
@@ -113,7 +114,7 @@ export declare class Spiceflow<const in out BasePath extends string = '', const
|
|
|
113
114
|
query: Schema['query'];
|
|
114
115
|
response: ComposeSpiceflowResponse<Schema['response'], Handle>;
|
|
115
116
|
};
|
|
116
|
-
}>, RoutePaths | JoinPath<BasePath, Path>>;
|
|
117
|
+
}>, RoutePaths | JoinPath<BasePath, Path>, RouteQuerySchemas & Record<JoinPath<BasePath, Path>, Schema['query']>>;
|
|
117
118
|
patch<const Path extends string, const LocalSchema extends InputSchema<keyof Definitions['type'] & string>, const Schema extends UnwrapRoute<LocalSchema, Definitions['type']>, const Handle extends InlineHandler<this, Schema, Singleton, JoinPath<BasePath, Path>>>(path: Path, handler: Handle, hook?: LocalHook<LocalSchema, Schema, Singleton, Definitions['error'], Metadata['macro'], JoinPath<BasePath, Path>>): Spiceflow<BasePath, Scoped, Singleton, Definitions, Metadata, ClientRoutes & CreateClient<JoinPath<BasePath, Path>, {
|
|
118
119
|
patch: {
|
|
119
120
|
request: GetRequestSchema<Schema>;
|
|
@@ -121,7 +122,7 @@ export declare class Spiceflow<const in out BasePath extends string = '', const
|
|
|
121
122
|
query: Schema['query'];
|
|
122
123
|
response: ComposeSpiceflowResponse<Schema['response'], Handle>;
|
|
123
124
|
};
|
|
124
|
-
}>, RoutePaths | JoinPath<BasePath, Path>>;
|
|
125
|
+
}>, RoutePaths | JoinPath<BasePath, Path>, RouteQuerySchemas & Record<JoinPath<BasePath, Path>, Schema['query']>>;
|
|
125
126
|
delete<const Path extends string, const LocalSchema extends InputSchema<keyof Definitions['type'] & string>, const Schema extends UnwrapRoute<LocalSchema, Definitions['type']>, const Handle extends InlineHandler<this, Schema, Singleton, JoinPath<BasePath, Path>>>(path: Path, handler: Handle, hook?: LocalHook<LocalSchema, Schema, Singleton, Definitions['error'], Metadata['macro'], JoinPath<BasePath, Path>>): Spiceflow<BasePath, Scoped, Singleton, Definitions, Metadata, ClientRoutes & CreateClient<JoinPath<BasePath, Path>, {
|
|
126
127
|
delete: {
|
|
127
128
|
request: GetRequestSchema<Schema>;
|
|
@@ -129,7 +130,7 @@ export declare class Spiceflow<const in out BasePath extends string = '', const
|
|
|
129
130
|
query: Schema['query'];
|
|
130
131
|
response: ComposeSpiceflowResponse<Schema['response'], Handle>;
|
|
131
132
|
};
|
|
132
|
-
}>, RoutePaths | JoinPath<BasePath, Path>>;
|
|
133
|
+
}>, RoutePaths | JoinPath<BasePath, Path>, RouteQuerySchemas & Record<JoinPath<BasePath, Path>, Schema['query']>>;
|
|
133
134
|
options<const Path extends string, const LocalSchema extends InputSchema<keyof Definitions['type'] & string>, const Schema extends UnwrapRoute<LocalSchema, Definitions['type']>, const Handle extends InlineHandler<this, Schema, Singleton, JoinPath<BasePath, Path>>>(path: Path, handler: Handle, hook?: LocalHook<LocalSchema, Schema, Singleton, Definitions['error'], Metadata['macro'], JoinPath<BasePath, Path>>): Spiceflow<BasePath, Scoped, Singleton, Definitions, Metadata, ClientRoutes & CreateClient<JoinPath<BasePath, Path>, {
|
|
134
135
|
options: {
|
|
135
136
|
request: GetRequestSchema<Schema>;
|
|
@@ -137,7 +138,7 @@ export declare class Spiceflow<const in out BasePath extends string = '', const
|
|
|
137
138
|
query: Schema['query'];
|
|
138
139
|
response: ComposeSpiceflowResponse<Schema['response'], Handle>;
|
|
139
140
|
};
|
|
140
|
-
}>, RoutePaths | JoinPath<BasePath, Path>>;
|
|
141
|
+
}>, RoutePaths | JoinPath<BasePath, Path>, RouteQuerySchemas & Record<JoinPath<BasePath, Path>, Schema['query']>>;
|
|
141
142
|
all<const Path extends string, const LocalSchema extends InputSchema<keyof Definitions['type'] & string>, const Schema extends UnwrapRoute<LocalSchema, Definitions['type']>, const Handle extends InlineHandler<this, Schema, Singleton, JoinPath<BasePath, Path>>>(path: Path, handler: Handle, hook?: LocalHook<LocalSchema, Schema, Singleton, Definitions['error'], Metadata['macro'], JoinPath<BasePath, Path>>): Spiceflow<BasePath, Scoped, Singleton, Definitions, Metadata, ClientRoutes & CreateClient<JoinPath<BasePath, Path>, {
|
|
142
143
|
[method in string]: {
|
|
143
144
|
request: GetRequestSchema<Schema>;
|
|
@@ -145,7 +146,7 @@ export declare class Spiceflow<const in out BasePath extends string = '', const
|
|
|
145
146
|
query: Schema['query'];
|
|
146
147
|
response: ComposeSpiceflowResponse<Schema['response'], Handle>;
|
|
147
148
|
};
|
|
148
|
-
}>, RoutePaths | JoinPath<BasePath, Path>>;
|
|
149
|
+
}>, RoutePaths | JoinPath<BasePath, Path>, RouteQuerySchemas & Record<JoinPath<BasePath, Path>, Schema['query']>>;
|
|
149
150
|
head<const Path extends string, const LocalSchema extends InputSchema<keyof Definitions['type'] & string>, const Schema extends UnwrapRoute<LocalSchema, Definitions['type']>, const Handle extends InlineHandler<this, Schema, Singleton, JoinPath<BasePath, Path>>>(path: Path, handler: Handle, hook?: LocalHook<LocalSchema, Schema, Singleton, Definitions['error'], Metadata['macro'], JoinPath<BasePath, Path>>): Spiceflow<BasePath, Scoped, Singleton, Definitions, Metadata, ClientRoutes & CreateClient<JoinPath<BasePath, Path>, {
|
|
150
151
|
head: {
|
|
151
152
|
request: GetRequestSchema<Schema>;
|
|
@@ -153,9 +154,9 @@ export declare class Spiceflow<const in out BasePath extends string = '', const
|
|
|
153
154
|
query: Schema['query'];
|
|
154
155
|
response: ComposeSpiceflowResponse<Schema['response'], Handle>;
|
|
155
156
|
};
|
|
156
|
-
}>, RoutePaths | JoinPath<BasePath, Path>>;
|
|
157
|
+
}>, RoutePaths | JoinPath<BasePath, Path>, RouteQuerySchemas & Record<JoinPath<BasePath, Path>, Schema['query']>>;
|
|
157
158
|
private scoped?;
|
|
158
|
-
use<const NewSpiceflow extends AnySpiceflow>(instance: NewSpiceflow): IsAny<NewSpiceflow> extends true ? this : Spiceflow<BasePath, Scoped, Singleton, Definitions, Metadata, BasePath extends `` ? ClientRoutes & NewSpiceflow['_types']['ClientRoutes'] : ClientRoutes & CreateClient<BasePath, NewSpiceflow['_types']['ClientRoutes']>, RoutePaths | NewSpiceflow['_types']['RoutePaths']>;
|
|
159
|
+
use<const NewSpiceflow extends AnySpiceflow>(instance: NewSpiceflow): IsAny<NewSpiceflow> extends true ? this : Spiceflow<BasePath, Scoped, Singleton, Definitions, Metadata, BasePath extends `` ? ClientRoutes & NewSpiceflow['_types']['ClientRoutes'] : ClientRoutes & CreateClient<BasePath, NewSpiceflow['_types']['ClientRoutes']>, RoutePaths | NewSpiceflow['_types']['RoutePaths'], RouteQuerySchemas & NewSpiceflow['_types']['RouteQuerySchemas']>;
|
|
159
160
|
use<const Schema extends RouteSchema>(handler: MiddlewareHandler<Schema, Singleton>): this;
|
|
160
161
|
onError<const Schema extends RouteSchema>(handler: ErrorHandler<Definitions['error'], Schema, Singleton>): this;
|
|
161
162
|
handle: (request: Request, { state: customState }?: {
|
|
@@ -188,8 +189,29 @@ export declare class Spiceflow<const in out BasePath extends string = '', const
|
|
|
188
189
|
server: import("http").Server<typeof IncomingMessage, typeof ServerResponse>;
|
|
189
190
|
}>;
|
|
190
191
|
private handleStream;
|
|
191
|
-
safePath<const Path extends RoutePaths
|
|
192
|
+
safePath<const Path extends RoutePaths>(path: Path, ...rest: [ExtractParamsFromPath<Path>] extends [undefined] ? Path extends keyof RouteQuerySchemas ? unknown extends RouteQuerySchemas[Path] ? [] | [allParams?: Record<string, string | number | boolean>] : [] | [allParams?: Partial<RouteQuerySchemas[Path]>] : [] | [allParams?: Record<string, string | number | boolean>] : Path extends keyof RouteQuerySchemas ? unknown extends RouteQuerySchemas[Path] ? [allParams: ExtractParamsFromPath<Path> & Record<string, string | number | boolean>] : [allParams: MergeParamsAndQuery<ExtractParamsFromPath<Path>, RouteQuerySchemas[Path]>] : [allParams: ExtractParamsFromPath<Path>] | [allParams: ExtractParamsFromPath<Path> & Record<string, string | number | boolean>]): string;
|
|
192
193
|
}
|
|
194
|
+
type MergeParamsAndQuery<P, Q> = P extends Record<string, any> ? {
|
|
195
|
+
[K in keyof (P & Omit<Partial<Q>, keyof P>)]: (P & Omit<Partial<Q>, keyof P>)[K];
|
|
196
|
+
} : Partial<Q>;
|
|
197
|
+
/**
|
|
198
|
+
* Create a standalone type-safe path builder. Pass your app instance for automatic
|
|
199
|
+
* type inference, or call with explicit type params. The app value is not used at runtime.
|
|
200
|
+
*
|
|
201
|
+
* ```ts
|
|
202
|
+
* const app = new Spiceflow()
|
|
203
|
+
* .get('/users/:id', handler, { query: z.object({ page: z.number() }) })
|
|
204
|
+
*
|
|
205
|
+
* const safePath = createSafePath(app)
|
|
206
|
+
* safePath('/users/:id', { id: '123', page: 1 })
|
|
207
|
+
* ```
|
|
208
|
+
*/
|
|
209
|
+
export declare function createSafePath<const Paths extends string, const QS extends Record<string, unknown>>(_app?: {
|
|
210
|
+
_types: {
|
|
211
|
+
RoutePaths: Paths;
|
|
212
|
+
RouteQuerySchemas: QS;
|
|
213
|
+
};
|
|
214
|
+
}): <const Path extends Paths>(path: Path, ...rest: [ExtractParamsFromPath<Path>] extends [undefined] ? Path extends keyof QS ? unknown extends QS[Path] ? [] | [allParams?: Record<string, string | number | boolean>] : [] | [allParams?: Partial<QS[Path]>] : [] | [allParams?: Record<string, string | number | boolean>] : Path extends keyof QS ? unknown extends QS[Path] ? [allParams: ExtractParamsFromPath<Path> & Record<string, string | number | boolean>] : [allParams: MergeParamsAndQuery<ExtractParamsFromPath<Path>, QS[Path]>] : [allParams: ExtractParamsFromPath<Path>] | [allParams: ExtractParamsFromPath<Path> & Record<string, string | number | boolean>]) => string;
|
|
193
215
|
declare const METHODS: readonly ["ALL", "CONNECT", "DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT", "TRACE"];
|
|
194
216
|
/** HTTP method string */
|
|
195
217
|
export type Method = (typeof METHODS)[number];
|
|
@@ -198,7 +220,7 @@ export declare class SpiceflowRequest<T = any> extends Request {
|
|
|
198
220
|
json(): Promise<T>;
|
|
199
221
|
}
|
|
200
222
|
export declare function bfs(tree: AnySpiceflow): AnySpiceflow[];
|
|
201
|
-
export type AnySpiceflow = Spiceflow<any, any, any, any, any, any, any>;
|
|
223
|
+
export type AnySpiceflow = Spiceflow<any, any, any, any, any, any, any, any>;
|
|
202
224
|
export declare function isZodSchema(value: unknown): value is ZodType;
|
|
203
225
|
import type * as z4 from 'zod/v4/core';
|
|
204
226
|
/** `true` ⇒ the value was created by Zod 4, `false` ⇒ Zod 3 */
|