spiceflow 0.0.7 → 1.0.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 +1 -171
- package/dist/client/errors.d.ts +7 -0
- package/dist/client/errors.d.ts.map +1 -0
- package/dist/client/errors.js +18 -0
- package/dist/client/errors.js.map +1 -0
- package/dist/client/index.d.ts +14 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +376 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/types.d.ts +87 -0
- package/dist/client/types.d.ts.map +1 -0
- package/dist/client/types.js +2 -0
- package/dist/client/types.js.map +1 -0
- package/dist/client/utils.d.ts +2 -0
- package/dist/client/utils.d.ts.map +1 -0
- package/dist/client/utils.js +9 -0
- package/dist/client/utils.js.map +1 -0
- package/dist/client/ws.d.ts +15 -0
- package/dist/client/ws.d.ts.map +1 -0
- package/dist/client/ws.js +51 -0
- package/dist/client/ws.js.map +1 -0
- package/dist/client.test.d.ts +2 -0
- package/dist/client.test.d.ts.map +1 -0
- package/dist/client.test.js +237 -0
- package/dist/client.test.js.map +1 -0
- package/dist/elysia-fork/context.d.ts +87 -0
- package/dist/elysia-fork/context.d.ts.map +1 -0
- package/dist/elysia-fork/context.js +2 -0
- package/dist/elysia-fork/context.js.map +1 -0
- package/dist/elysia-fork/error.d.ts +246 -0
- package/dist/elysia-fork/error.d.ts.map +1 -0
- package/dist/elysia-fork/error.js +195 -0
- package/dist/elysia-fork/error.js.map +1 -0
- package/dist/elysia-fork/types.d.ts +652 -0
- package/dist/elysia-fork/types.d.ts.map +1 -0
- package/dist/elysia-fork/types.js +3 -0
- package/dist/elysia-fork/types.js.map +1 -0
- package/dist/elysia-fork/utils.d.ts +134 -0
- package/dist/elysia-fork/utils.d.ts.map +1 -0
- package/dist/elysia-fork/utils.js +70 -0
- package/dist/elysia-fork/utils.js.map +1 -0
- package/dist/spiceflow.d.ts +253 -0
- package/dist/spiceflow.d.ts.map +1 -0
- package/dist/spiceflow.js +500 -0
- package/dist/spiceflow.js.map +1 -0
- package/dist/spiceflow.test.d.ts +2 -0
- package/dist/spiceflow.test.d.ts.map +1 -0
- package/dist/spiceflow.test.js +225 -0
- package/dist/spiceflow.test.js.map +1 -0
- package/dist/stream.test.d.ts +2 -0
- package/dist/stream.test.d.ts.map +1 -0
- package/dist/stream.test.js +286 -0
- package/dist/stream.test.js.map +1 -0
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +4 -20
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +17 -46
- package/dist/utils.js.map +1 -1
- package/package.json +12 -36
- package/src/client/errors.ts +21 -0
- package/src/client/index.ts +539 -0
- package/src/client/types.ts +233 -0
- package/src/client/utils.ts +7 -0
- package/src/client/ws.ts +99 -0
- package/src/client.test.ts +235 -0
- package/src/elysia-fork/context.ts +196 -0
- package/src/elysia-fork/error.ts +293 -0
- package/src/elysia-fork/types.ts +1454 -0
- package/src/elysia-fork/utils.ts +85 -0
- package/src/spiceflow.test.ts +290 -0
- package/src/spiceflow.ts +1266 -0
- package/src/stream.test.ts +342 -0
- package/src/types.ts +0 -0
- package/src/utils.ts +21 -70
- package/context.d.ts +0 -2
- package/context.js +0 -1
- package/dist/babel.test.d.ts +0 -2
- package/dist/babel.test.d.ts.map +0 -1
- package/dist/babel.test.js +0 -27
- package/dist/babel.test.js.map +0 -1
- package/dist/babelDebugOutputs.d.ts +0 -9
- package/dist/babelDebugOutputs.d.ts.map +0 -1
- package/dist/babelDebugOutputs.js +0 -34
- package/dist/babelDebugOutputs.js.map +0 -1
- package/dist/babelTransformRpc.d.ts +0 -19
- package/dist/babelTransformRpc.d.ts.map +0 -1
- package/dist/babelTransformRpc.js +0 -285
- package/dist/babelTransformRpc.js.map +0 -1
- package/dist/browser.d.ts +0 -8
- package/dist/browser.d.ts.map +0 -1
- package/dist/browser.js +0 -126
- package/dist/browser.js.map +0 -1
- package/dist/build.d.ts +0 -13
- package/dist/build.d.ts.map +0 -1
- package/dist/build.js +0 -230
- package/dist/build.js.map +0 -1
- package/dist/cli.d.ts +0 -3
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -111
- package/dist/cli.js.map +0 -1
- package/dist/context-internal.d.ts +0 -20
- package/dist/context-internal.d.ts.map +0 -1
- package/dist/context-internal.js +0 -16
- package/dist/context-internal.js.map +0 -1
- package/dist/context.d.ts +0 -2
- package/dist/context.d.ts.map +0 -1
- package/dist/context.js +0 -2
- package/dist/context.js.map +0 -1
- package/dist/expose.d.ts +0 -6
- package/dist/expose.d.ts.map +0 -1
- package/dist/expose.js +0 -32
- package/dist/expose.js.map +0 -1
- package/dist/headers.d.ts +0 -2
- package/dist/headers.d.ts.map +0 -1
- package/dist/headers.js +0 -18
- package/dist/headers.js.map +0 -1
- package/dist/index.d.ts +0 -8
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -23
- package/dist/index.js.map +0 -1
- package/dist/jsonRpc.d.ts +0 -32
- package/dist/jsonRpc.d.ts.map +0 -1
- package/dist/jsonRpc.js +0 -3
- package/dist/jsonRpc.js.map +0 -1
- package/dist/server.d.ts +0 -32
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js +0 -292
- package/dist/server.js.map +0 -1
- package/headers.d.ts +0 -2
- package/headers.js +0 -1
- package/sdk-template/package.json +0 -22
- package/sdk-template/src/index.ts +0 -2
- package/sdk-template/src/v1/example.ts +0 -5
- package/sdk-template/src/v1/generator.ts +0 -12
- package/sdk-template/tsconfig.json +0 -16
- package/src/babel.test.ts +0 -35
- package/src/babelDebugOutputs.ts +0 -56
- package/src/babelTransformRpc.ts +0 -394
- package/src/browser.ts +0 -141
- package/src/build.ts +0 -298
- package/src/cli.ts +0 -132
- package/src/context-internal.ts +0 -36
- package/src/context.ts +0 -5
- package/src/expose.ts +0 -34
- package/src/headers.ts +0 -19
- package/src/index.ts +0 -34
- package/src/jsonRpc.ts +0 -43
- package/src/server.ts +0 -384
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
import { test, expect } from 'vitest';
|
|
2
|
+
import { Type } from '@sinclair/typebox';
|
|
3
|
+
import { Elysia } from './spiceflow';
|
|
4
|
+
test('works', async () => {
|
|
5
|
+
const res = await new Elysia()
|
|
6
|
+
.post('/xxx', () => 'hi')
|
|
7
|
+
.handle(new Request('http://localhost/xxx', { method: 'POST' }));
|
|
8
|
+
expect(res.status).toBe(200);
|
|
9
|
+
expect(await res.text()).toBe(JSON.stringify('hi'));
|
|
10
|
+
});
|
|
11
|
+
test('dynamic route', async () => {
|
|
12
|
+
const res = await new Elysia()
|
|
13
|
+
.post('/ids/:id', () => 'hi')
|
|
14
|
+
.handle(new Request('http://localhost/ids/xxx', { method: 'POST' }));
|
|
15
|
+
expect(res.status).toBe(200);
|
|
16
|
+
expect(await res.text()).toBe(JSON.stringify('hi'));
|
|
17
|
+
});
|
|
18
|
+
test('GET dynamic route', async () => {
|
|
19
|
+
const res = await new Elysia()
|
|
20
|
+
.get('/ids/:id', () => 'hi')
|
|
21
|
+
.handle(new Request('http://localhost/ids/xxx', { method: 'GET' }));
|
|
22
|
+
expect(res.status).toBe(200);
|
|
23
|
+
expect(await res.text()).toBe(JSON.stringify('hi'));
|
|
24
|
+
});
|
|
25
|
+
test('missing route is not found', async () => {
|
|
26
|
+
const res = await new Elysia()
|
|
27
|
+
.get('/ids/:id', () => 'hi')
|
|
28
|
+
.handle(new Request('http://localhost/zxxx', { method: 'GET' }));
|
|
29
|
+
expect(res.status).toBe(404);
|
|
30
|
+
});
|
|
31
|
+
test('state works', async () => {
|
|
32
|
+
const res = await new Elysia()
|
|
33
|
+
.state('id', '')
|
|
34
|
+
.onRequest(({ store, request }) => {
|
|
35
|
+
store.id = 'xxx';
|
|
36
|
+
})
|
|
37
|
+
.get('/get', ({ store }) => {
|
|
38
|
+
expect(store.id).toBe('xxx');
|
|
39
|
+
})
|
|
40
|
+
.handle(new Request('http://localhost/get'));
|
|
41
|
+
expect(res.status).toBe(200);
|
|
42
|
+
});
|
|
43
|
+
test('body is parsed as json', async () => {
|
|
44
|
+
let body;
|
|
45
|
+
const res = await new Elysia()
|
|
46
|
+
.state('id', '')
|
|
47
|
+
.post('/post', (c) => {
|
|
48
|
+
body = c.body;
|
|
49
|
+
// console.log({ body })
|
|
50
|
+
return body;
|
|
51
|
+
})
|
|
52
|
+
.handle(new Request('http://localhost/post', {
|
|
53
|
+
method: 'POST',
|
|
54
|
+
headers: {
|
|
55
|
+
'content-type': 'application/json'
|
|
56
|
+
},
|
|
57
|
+
body: JSON.stringify({ name: 'John' })
|
|
58
|
+
}));
|
|
59
|
+
expect(res.status).toBe(200);
|
|
60
|
+
expect(await res.text()).toBe(JSON.stringify({ name: 'John' }));
|
|
61
|
+
});
|
|
62
|
+
test('validate body works, request success', async () => {
|
|
63
|
+
const res = await new Elysia()
|
|
64
|
+
.post('/post', ({ body }) => {
|
|
65
|
+
// console.log({ body })
|
|
66
|
+
expect(body).toEqual({ name: 'John' });
|
|
67
|
+
return 'ok';
|
|
68
|
+
}, {
|
|
69
|
+
body: Type.Object({
|
|
70
|
+
name: Type.String()
|
|
71
|
+
})
|
|
72
|
+
})
|
|
73
|
+
.handle(new Request('http://localhost/post', {
|
|
74
|
+
method: 'POST',
|
|
75
|
+
headers: {
|
|
76
|
+
'content-type': 'application/json'
|
|
77
|
+
},
|
|
78
|
+
body: JSON.stringify({ name: 'John' })
|
|
79
|
+
}));
|
|
80
|
+
expect(res.status).toBe(200);
|
|
81
|
+
expect(await res.text()).toMatchInlineSnapshot(`""ok""`);
|
|
82
|
+
});
|
|
83
|
+
test('validate body works, request fails', async () => {
|
|
84
|
+
const res = await new Elysia()
|
|
85
|
+
.post('/post', ({ body, redirect, error }) => {
|
|
86
|
+
// console.log({ body })
|
|
87
|
+
expect(body).toEqual({ name: 'John' });
|
|
88
|
+
}, {
|
|
89
|
+
body: Type.Object({
|
|
90
|
+
name: Type.String(),
|
|
91
|
+
requiredField: Type.String()
|
|
92
|
+
})
|
|
93
|
+
})
|
|
94
|
+
.handle(new Request('http://localhost/post', {
|
|
95
|
+
method: 'POST',
|
|
96
|
+
headers: {
|
|
97
|
+
'content-type': 'application/json'
|
|
98
|
+
},
|
|
99
|
+
body: JSON.stringify({ name: 'John' })
|
|
100
|
+
}));
|
|
101
|
+
expect(res.status).toBe(400);
|
|
102
|
+
expect(await res.text()).toMatchInlineSnapshot(`"data must have required property 'requiredField'"`);
|
|
103
|
+
});
|
|
104
|
+
test('run onRequest', async () => {
|
|
105
|
+
const res = await new Elysia()
|
|
106
|
+
.onRequest(({ request }) => {
|
|
107
|
+
expect(request.method).toBe('HEAD');
|
|
108
|
+
return new Response('ok', { status: 401 });
|
|
109
|
+
})
|
|
110
|
+
.onRequest(({ request }) => {
|
|
111
|
+
expect(request.method).toBe('HEAD');
|
|
112
|
+
return 'second one';
|
|
113
|
+
})
|
|
114
|
+
.head('/ids/:id', () => 'hi')
|
|
115
|
+
.handle(new Request('http://localhost/ids/zxxx', { method: 'HEAD' }));
|
|
116
|
+
expect(res.status).toBe(401);
|
|
117
|
+
expect(await res.text()).toBe('ok');
|
|
118
|
+
});
|
|
119
|
+
test('run onRequest', async () => {
|
|
120
|
+
const res = await new Elysia()
|
|
121
|
+
.onRequest(({ request }) => {
|
|
122
|
+
expect(request.method).toBe('HEAD');
|
|
123
|
+
return new Response('ok', { status: 401 });
|
|
124
|
+
})
|
|
125
|
+
.onRequest(({ request }) => {
|
|
126
|
+
expect(request.method).toBe('HEAD');
|
|
127
|
+
return 'second one';
|
|
128
|
+
})
|
|
129
|
+
.head('/ids/:id', () => 'hi')
|
|
130
|
+
.handle(new Request('http://localhost/ids/zxxx', { method: 'HEAD' }));
|
|
131
|
+
expect(res.status).toBe(401);
|
|
132
|
+
expect(await res.text()).toBe('ok');
|
|
133
|
+
});
|
|
134
|
+
test('basPath works', async () => {
|
|
135
|
+
const res = await new Elysia({ basePath: '/one' })
|
|
136
|
+
.get('/ids/:id', () => 'hi')
|
|
137
|
+
.handle(new Request('http://localhost/one/ids/xxx', { method: 'GET' }));
|
|
138
|
+
expect(res.status).toBe(200);
|
|
139
|
+
expect(await res.text()).toBe(JSON.stringify('hi'));
|
|
140
|
+
});
|
|
141
|
+
test('use with 2 basPath works', async () => {
|
|
142
|
+
let oneOnReq = false;
|
|
143
|
+
let twoOnReq = false;
|
|
144
|
+
const app = await new Elysia()
|
|
145
|
+
.use(new Elysia({ basePath: '/one' })
|
|
146
|
+
.onRequest(({ request }) => {
|
|
147
|
+
oneOnReq = true;
|
|
148
|
+
})
|
|
149
|
+
.get('/ids/:id', ({ params }) => params.id))
|
|
150
|
+
.use(new Elysia({ basePath: '/two' })
|
|
151
|
+
.onRequest((c) => {
|
|
152
|
+
twoOnReq = true;
|
|
153
|
+
})
|
|
154
|
+
.get('/ids/:id', ({ params }) => params.id));
|
|
155
|
+
{
|
|
156
|
+
const res = await app.handle(new Request('http://localhost/one/ids/one'));
|
|
157
|
+
expect(res.status).toBe(200);
|
|
158
|
+
expect(await res.text()).toBe(JSON.stringify('one'));
|
|
159
|
+
}
|
|
160
|
+
{
|
|
161
|
+
const res = await app.handle(new Request('http://localhost/two/ids/two'));
|
|
162
|
+
expect(res.status).toBe(200);
|
|
163
|
+
expect(await res.text()).toBe(JSON.stringify('two'));
|
|
164
|
+
}
|
|
165
|
+
expect(oneOnReq).toBe(true);
|
|
166
|
+
expect(twoOnReq).toBe(true);
|
|
167
|
+
});
|
|
168
|
+
test('use with nested basPath works', async () => {
|
|
169
|
+
const app = await new Elysia({ basePath: '/zero' })
|
|
170
|
+
.use(new Elysia({ basePath: '/one' }).get('/ids/:id', ({ params }) => params.id))
|
|
171
|
+
.use(new Elysia({ basePath: '/two' }).use(new Elysia({ basePath: '/nested' }).get('/ids/:id', ({ params }) => params.id)));
|
|
172
|
+
{
|
|
173
|
+
const res = await app.handle(new Request('http://localhost/zero/one/ids/one'));
|
|
174
|
+
expect(res.status).toBe(200);
|
|
175
|
+
expect(await res.text()).toBe(JSON.stringify('one'));
|
|
176
|
+
}
|
|
177
|
+
{
|
|
178
|
+
const res = await app.handle(new Request('http://localhost/zero/two/nested/ids/nested'));
|
|
179
|
+
expect(res.status).toBe(200);
|
|
180
|
+
expect(await res.text()).toBe(JSON.stringify('nested'));
|
|
181
|
+
}
|
|
182
|
+
});
|
|
183
|
+
test('errors inside basPath works', async () => {
|
|
184
|
+
let onErrorTriggered = [];
|
|
185
|
+
let onReqTriggered = [];
|
|
186
|
+
const app = await new Elysia({ basePath: '/zero' })
|
|
187
|
+
.onError(({ error }) => {
|
|
188
|
+
onErrorTriggered.push('root');
|
|
189
|
+
// return new Response('root', { status: 500 })
|
|
190
|
+
})
|
|
191
|
+
.onRequest(({ request }) => {
|
|
192
|
+
onReqTriggered.push('root');
|
|
193
|
+
// return new Response('root', { status: 500 })
|
|
194
|
+
})
|
|
195
|
+
.use(new Elysia({ basePath: '/two' })
|
|
196
|
+
.onError(({ error }) => {
|
|
197
|
+
onErrorTriggered.push('two');
|
|
198
|
+
// return new Response('two', { status: 500 })
|
|
199
|
+
})
|
|
200
|
+
.onRequest(({ request }) => {
|
|
201
|
+
onReqTriggered.push('two');
|
|
202
|
+
// return new Response('two', { status: 500 })
|
|
203
|
+
})
|
|
204
|
+
.use(new Elysia({ basePath: '/nested' })
|
|
205
|
+
.onError(({ error }) => {
|
|
206
|
+
onErrorTriggered.push('nested');
|
|
207
|
+
// return new Response('nested', { status: 500 })
|
|
208
|
+
})
|
|
209
|
+
.onRequest(({ request }) => {
|
|
210
|
+
onReqTriggered.push('nested');
|
|
211
|
+
// return new Response('nested', { status: 500 })
|
|
212
|
+
})
|
|
213
|
+
.get('/ids/:id', ({ params }) => {
|
|
214
|
+
throw new Error('error message');
|
|
215
|
+
})));
|
|
216
|
+
{
|
|
217
|
+
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']);
|
|
220
|
+
expect(res.status).toBe(500);
|
|
221
|
+
expect(await res.text()).toBe('error message');
|
|
222
|
+
// expect(await res.text()).toBe(JSON.stringify('nested'))
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
//# sourceMappingURL=spiceflow.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spiceflow.test.js","sourceRoot":"","sources":["../src/spiceflow.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream.test.d.ts","sourceRoot":"","sources":["../src/stream.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
var __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }
|
|
2
|
+
var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {
|
|
3
|
+
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
4
|
+
var g = generator.apply(thisArg, _arguments || []), i, q = [];
|
|
5
|
+
return i = {}, verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;
|
|
6
|
+
function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }
|
|
7
|
+
function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }
|
|
8
|
+
function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
|
|
9
|
+
function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
|
|
10
|
+
function fulfill(value) { resume("next", value); }
|
|
11
|
+
function reject(value) { resume("throw", value); }
|
|
12
|
+
function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
|
|
13
|
+
};
|
|
14
|
+
import { describe, it, expect } from 'vitest';
|
|
15
|
+
import { createParser } from 'eventsource-parser';
|
|
16
|
+
import { Elysia } from './spiceflow';
|
|
17
|
+
import { req, sleep } from './utils';
|
|
18
|
+
function textEventStream(items) {
|
|
19
|
+
return items
|
|
20
|
+
.map((item) => `event: message\ndata: ${JSON.stringify(item)}\n\n`)
|
|
21
|
+
.join('');
|
|
22
|
+
}
|
|
23
|
+
function parseTextEventStreamItem(item) {
|
|
24
|
+
const data = item.split('data: ')[1].split('\n')[0];
|
|
25
|
+
return JSON.parse(data);
|
|
26
|
+
}
|
|
27
|
+
describe('Stream', () => {
|
|
28
|
+
it('handle stream', async () => {
|
|
29
|
+
const expected = ['a', 'b', 'c'];
|
|
30
|
+
const app = new Elysia().get('/', function () {
|
|
31
|
+
return __asyncGenerator(this, arguments, function* () {
|
|
32
|
+
yield yield __await('a');
|
|
33
|
+
yield __await(sleep(10));
|
|
34
|
+
yield yield __await('b');
|
|
35
|
+
yield __await(sleep(10));
|
|
36
|
+
yield yield __await('c');
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
const response = await app
|
|
40
|
+
.handle(req('/'))
|
|
41
|
+
.then((x) => x.body)
|
|
42
|
+
.then((x) => {
|
|
43
|
+
if (!x)
|
|
44
|
+
return;
|
|
45
|
+
const reader = x === null || x === void 0 ? void 0 : x.getReader();
|
|
46
|
+
let acc = '';
|
|
47
|
+
const { promise, resolve } = Promise.withResolvers();
|
|
48
|
+
reader.read().then(function pump({ done, value }) {
|
|
49
|
+
if (done)
|
|
50
|
+
return resolve(acc);
|
|
51
|
+
expect(parseTextEventStreamItem(value.toString())).toBe(expected.shift());
|
|
52
|
+
acc += value.toString();
|
|
53
|
+
return reader.read().then(pump);
|
|
54
|
+
});
|
|
55
|
+
return promise;
|
|
56
|
+
});
|
|
57
|
+
expect(expected).toHaveLength(0);
|
|
58
|
+
expect(response).toBe(textEventStream(['a', 'b', 'c']));
|
|
59
|
+
});
|
|
60
|
+
it('handle errors after yield', async () => {
|
|
61
|
+
const app = new Elysia().get('/', function () {
|
|
62
|
+
return __asyncGenerator(this, arguments, function* () {
|
|
63
|
+
yield yield __await('a');
|
|
64
|
+
yield __await(sleep(10));
|
|
65
|
+
throw new Error('an error');
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
const response = await app.handle(req('/')).then((x) => x.text());
|
|
69
|
+
expect(response).toBe('event: message\ndata: "a"\n\nevent: error\ndata: "an error"\n\n');
|
|
70
|
+
});
|
|
71
|
+
it('handle errors before yield when aot is false', async () => {
|
|
72
|
+
const app = new Elysia()
|
|
73
|
+
.onError(({ error }) => {
|
|
74
|
+
return new Response(error.message);
|
|
75
|
+
})
|
|
76
|
+
.get('/', function () {
|
|
77
|
+
return __asyncGenerator(this, arguments, function* () {
|
|
78
|
+
throw new Error('an error xxxx');
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
const response = await app.handle(req('/')).then((x) => x.text());
|
|
82
|
+
expect(response).toContain('an error');
|
|
83
|
+
});
|
|
84
|
+
it.todo('handle errors before yield when aot is true', async () => {
|
|
85
|
+
const app = new Elysia()
|
|
86
|
+
.onError(({ error }) => {
|
|
87
|
+
return new Response(error.message);
|
|
88
|
+
})
|
|
89
|
+
.get('/', function () {
|
|
90
|
+
return __asyncGenerator(this, arguments, function* () {
|
|
91
|
+
throw new Error('an error');
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
const response = await app.handle(req('/')).then((x) => x.text());
|
|
95
|
+
expect(response).toContain('an error');
|
|
96
|
+
});
|
|
97
|
+
it.todo('handle errors before yield with onError', async () => {
|
|
98
|
+
const expected = 'error expected';
|
|
99
|
+
const app = new Elysia()
|
|
100
|
+
.onError(({}) => {
|
|
101
|
+
return new Response(expected);
|
|
102
|
+
})
|
|
103
|
+
.get('/', function () {
|
|
104
|
+
return __asyncGenerator(this, arguments, function* () {
|
|
105
|
+
throw new Error('an error');
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
const response = await app.handle(req('/')).then((x) => x.text());
|
|
109
|
+
expect(response).toBe(expected);
|
|
110
|
+
});
|
|
111
|
+
it('stop stream on canceled request', async () => {
|
|
112
|
+
const expected = ['a', 'b'];
|
|
113
|
+
const app = new Elysia().get('/', function () {
|
|
114
|
+
return __asyncGenerator(this, arguments, function* () {
|
|
115
|
+
yield yield __await('a');
|
|
116
|
+
yield __await(sleep(10));
|
|
117
|
+
yield yield __await('b');
|
|
118
|
+
yield __await(sleep(10));
|
|
119
|
+
yield yield __await('c');
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
const controller = new AbortController();
|
|
123
|
+
setTimeout(() => {
|
|
124
|
+
controller.abort();
|
|
125
|
+
}, 15);
|
|
126
|
+
const response = await app
|
|
127
|
+
.handle(new Request('http://e.ly', {
|
|
128
|
+
signal: controller.signal
|
|
129
|
+
}))
|
|
130
|
+
.then((x) => x.body)
|
|
131
|
+
.then((x) => {
|
|
132
|
+
if (!x)
|
|
133
|
+
return;
|
|
134
|
+
const reader = x === null || x === void 0 ? void 0 : x.getReader();
|
|
135
|
+
let acc = '';
|
|
136
|
+
const { promise, resolve } = Promise.withResolvers();
|
|
137
|
+
reader.read().then(function pump({ done, value }) {
|
|
138
|
+
if (done) {
|
|
139
|
+
return resolve(acc);
|
|
140
|
+
}
|
|
141
|
+
expect(parseTextEventStreamItem(value.toString())).toBe(expected.shift());
|
|
142
|
+
acc += value.toString();
|
|
143
|
+
return reader.read().then(pump);
|
|
144
|
+
});
|
|
145
|
+
return promise;
|
|
146
|
+
});
|
|
147
|
+
expect(expected).toHaveLength(0);
|
|
148
|
+
expect(response).toBe(textEventStream(['a', 'b']));
|
|
149
|
+
});
|
|
150
|
+
// it('mutate set before yield is called', async () => {
|
|
151
|
+
// const expected = ['a', 'b', 'c']
|
|
152
|
+
// const app = new Elysia().get('/', function* () {
|
|
153
|
+
// set.headers['access-control-allow-origin'] = 'http://saltyaom.com'
|
|
154
|
+
// yield 'a'
|
|
155
|
+
// yield 'b'
|
|
156
|
+
// yield 'c'
|
|
157
|
+
// })
|
|
158
|
+
// const response = await app.handle(req('/')).then((x) => x.headers)
|
|
159
|
+
// expect(response.get('access-control-allow-origin')).toBe(
|
|
160
|
+
// 'http://saltyaom.com'
|
|
161
|
+
// )
|
|
162
|
+
// })
|
|
163
|
+
it('handle stream with objects', async () => {
|
|
164
|
+
const objects = [
|
|
165
|
+
{ message: 'hello' },
|
|
166
|
+
{ response: 'world' },
|
|
167
|
+
{ data: [1, 2, 3] },
|
|
168
|
+
{ result: [4, 5, 6] }
|
|
169
|
+
];
|
|
170
|
+
const app = new Elysia().get('/', function (_a) {
|
|
171
|
+
return __asyncGenerator(this, arguments, function* ({}) {
|
|
172
|
+
for (const obj of objects) {
|
|
173
|
+
yield yield __await(obj);
|
|
174
|
+
}
|
|
175
|
+
});
|
|
176
|
+
});
|
|
177
|
+
const body = await app.handle(req('/')).then((x) => x.body);
|
|
178
|
+
let events = [];
|
|
179
|
+
const parser = createParser((event) => {
|
|
180
|
+
events.push(event);
|
|
181
|
+
});
|
|
182
|
+
const { promise, resolve } = Promise.withResolvers();
|
|
183
|
+
const reader = body === null || body === void 0 ? void 0 : body.getReader();
|
|
184
|
+
reader.read().then(function pump({ done, value }) {
|
|
185
|
+
if (done) {
|
|
186
|
+
return resolve();
|
|
187
|
+
}
|
|
188
|
+
const text = value.toString();
|
|
189
|
+
parser.feed(text);
|
|
190
|
+
return reader.read().then(pump);
|
|
191
|
+
});
|
|
192
|
+
await promise;
|
|
193
|
+
expect(events.map((x) => x.data)).toEqual(objects.map((x) => JSON.stringify(x)));
|
|
194
|
+
});
|
|
195
|
+
// it('mutate set before yield is called', async () => {
|
|
196
|
+
// const expected = ['a', 'b', 'c']
|
|
197
|
+
// const app = new Elysia().get('/', function* () {
|
|
198
|
+
// set.headers['access-control-allow-origin'] = 'http://saltyaom.com'
|
|
199
|
+
// yield 'a'
|
|
200
|
+
// yield 'b'
|
|
201
|
+
// yield 'c'
|
|
202
|
+
// })
|
|
203
|
+
// const response = await app.handle(req('/')).then((x) => x.headers)
|
|
204
|
+
// expect(response.get('access-control-allow-origin')).toBe(
|
|
205
|
+
// 'http://saltyaom.com'
|
|
206
|
+
// )
|
|
207
|
+
// })
|
|
208
|
+
// it('async mutate set before yield is called', async () => {
|
|
209
|
+
// const expected = ['a', 'b', 'c']
|
|
210
|
+
// const app = new Elysia().get('/', async function* () {
|
|
211
|
+
// set.headers['access-control-allow-origin'] = 'http://saltyaom.com'
|
|
212
|
+
// yield 'a'
|
|
213
|
+
// yield 'b'
|
|
214
|
+
// yield 'c'
|
|
215
|
+
// })
|
|
216
|
+
// const response = await app.handle(req('/')).then((x) => x.headers)
|
|
217
|
+
// expect(response.get('access-control-allow-origin')).toBe(
|
|
218
|
+
// 'http://saltyaom.com'
|
|
219
|
+
// )
|
|
220
|
+
// })
|
|
221
|
+
it('return value if not yield', async () => {
|
|
222
|
+
const app = new Elysia()
|
|
223
|
+
.get('/', function* () {
|
|
224
|
+
return 'hello';
|
|
225
|
+
})
|
|
226
|
+
.get('/json', function* () {
|
|
227
|
+
return { hello: 'world' };
|
|
228
|
+
});
|
|
229
|
+
const response = await Promise.all([
|
|
230
|
+
app.handle(req('/')),
|
|
231
|
+
app.handle(req('/json'))
|
|
232
|
+
]);
|
|
233
|
+
expect(await response[0].text()).toBe('"hello"');
|
|
234
|
+
expect(await response[1].json()).toEqual({
|
|
235
|
+
hello: 'world'
|
|
236
|
+
});
|
|
237
|
+
});
|
|
238
|
+
it('return async value if not yield', async () => {
|
|
239
|
+
const app = new Elysia()
|
|
240
|
+
.get('/', function* () {
|
|
241
|
+
return 'hello';
|
|
242
|
+
})
|
|
243
|
+
.get('/json', function* () {
|
|
244
|
+
return { hello: 'world' };
|
|
245
|
+
});
|
|
246
|
+
const response = await Promise.all([
|
|
247
|
+
app.handle(req('/')),
|
|
248
|
+
app.handle(req('/json'))
|
|
249
|
+
]);
|
|
250
|
+
expect(await response[0].text()).toBe('"hello"');
|
|
251
|
+
expect(await response[1].json()).toEqual({
|
|
252
|
+
hello: 'world'
|
|
253
|
+
});
|
|
254
|
+
});
|
|
255
|
+
it('handle object and array', async () => {
|
|
256
|
+
const expected = [{ a: 'b' }, ['a'], ['a', 1, { a: 'b' }]];
|
|
257
|
+
const expectedResponse = JSON.stringify([...expected]);
|
|
258
|
+
let i = 0;
|
|
259
|
+
const app = new Elysia().get('/', function () {
|
|
260
|
+
return __asyncGenerator(this, arguments, function* () {
|
|
261
|
+
yield yield __await(expected[0]);
|
|
262
|
+
yield __await(sleep(10));
|
|
263
|
+
yield yield __await(expected[1]);
|
|
264
|
+
yield __await(sleep(10));
|
|
265
|
+
yield yield __await(expected[2]);
|
|
266
|
+
});
|
|
267
|
+
});
|
|
268
|
+
const response = await app
|
|
269
|
+
.handle(req('/'))
|
|
270
|
+
.then((x) => x.body)
|
|
271
|
+
.then((x) => {
|
|
272
|
+
if (!x)
|
|
273
|
+
return;
|
|
274
|
+
const reader = x === null || x === void 0 ? void 0 : x.getReader();
|
|
275
|
+
const { promise, resolve } = Promise.withResolvers();
|
|
276
|
+
reader.read().then(function pump({ done, value }) {
|
|
277
|
+
if (done)
|
|
278
|
+
return resolve();
|
|
279
|
+
expect(parseTextEventStreamItem(value.toString())).toEqual(expected[i++]);
|
|
280
|
+
return reader.read().then(pump);
|
|
281
|
+
});
|
|
282
|
+
return promise;
|
|
283
|
+
});
|
|
284
|
+
});
|
|
285
|
+
});
|
|
286
|
+
//# sourceMappingURL=stream.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream.test.js","sourceRoot":"","sources":["../src/stream.test.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,21 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export declare function
|
|
5
|
-
export type Literal = number | string | boolean | {
|
|
6
|
-
[key: string]: Literal;
|
|
7
|
-
} | Literal[];
|
|
8
|
-
export declare const logger: {
|
|
9
|
-
log(...args: any[]): void;
|
|
10
|
-
error(...args: any[]): void;
|
|
11
|
-
};
|
|
12
|
-
export declare function getFileName(state: PluginPass): string | undefined;
|
|
13
|
-
export declare const directive = "use spiceflow";
|
|
14
|
-
export declare function jsonRpcError({ id, message, code, }: {
|
|
15
|
-
id?: null | undefined;
|
|
16
|
-
message: any;
|
|
17
|
-
code?: number | undefined;
|
|
18
|
-
}): JsonRpcErrorResponse;
|
|
19
|
-
export declare function camelCaseCapitalized(str: string): string;
|
|
20
|
-
export declare function removeExtension(filePath: string): string;
|
|
1
|
+
export declare const deepFreeze: (value: any) => any;
|
|
2
|
+
export declare const req: (path: string, options?: RequestInit) => Request;
|
|
3
|
+
export declare function isAsyncIterable(obj: any): obj is AsyncGenerator<any>;
|
|
4
|
+
export declare function sleep(ms: number): Promise<unknown>;
|
|
21
5
|
//# sourceMappingURL=utils.d.ts.map
|
package/dist/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,UAAU,UAAW,GAAG,QAOpC,CAAA;AAED,eAAO,MAAM,GAAG,SAAU,MAAM,YAAY,WAAW,YACP,CAAA;AAEhD,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,cAAc,CAAC,GAAG,CAAC,CAQpE;AAED,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,oBAE/B"}
|