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.
Files changed (151) hide show
  1. package/README.md +1 -171
  2. package/dist/client/errors.d.ts +7 -0
  3. package/dist/client/errors.d.ts.map +1 -0
  4. package/dist/client/errors.js +18 -0
  5. package/dist/client/errors.js.map +1 -0
  6. package/dist/client/index.d.ts +14 -0
  7. package/dist/client/index.d.ts.map +1 -0
  8. package/dist/client/index.js +376 -0
  9. package/dist/client/index.js.map +1 -0
  10. package/dist/client/types.d.ts +87 -0
  11. package/dist/client/types.d.ts.map +1 -0
  12. package/dist/client/types.js +2 -0
  13. package/dist/client/types.js.map +1 -0
  14. package/dist/client/utils.d.ts +2 -0
  15. package/dist/client/utils.d.ts.map +1 -0
  16. package/dist/client/utils.js +9 -0
  17. package/dist/client/utils.js.map +1 -0
  18. package/dist/client/ws.d.ts +15 -0
  19. package/dist/client/ws.d.ts.map +1 -0
  20. package/dist/client/ws.js +51 -0
  21. package/dist/client/ws.js.map +1 -0
  22. package/dist/client.test.d.ts +2 -0
  23. package/dist/client.test.d.ts.map +1 -0
  24. package/dist/client.test.js +237 -0
  25. package/dist/client.test.js.map +1 -0
  26. package/dist/elysia-fork/context.d.ts +87 -0
  27. package/dist/elysia-fork/context.d.ts.map +1 -0
  28. package/dist/elysia-fork/context.js +2 -0
  29. package/dist/elysia-fork/context.js.map +1 -0
  30. package/dist/elysia-fork/error.d.ts +246 -0
  31. package/dist/elysia-fork/error.d.ts.map +1 -0
  32. package/dist/elysia-fork/error.js +195 -0
  33. package/dist/elysia-fork/error.js.map +1 -0
  34. package/dist/elysia-fork/types.d.ts +652 -0
  35. package/dist/elysia-fork/types.d.ts.map +1 -0
  36. package/dist/elysia-fork/types.js +3 -0
  37. package/dist/elysia-fork/types.js.map +1 -0
  38. package/dist/elysia-fork/utils.d.ts +134 -0
  39. package/dist/elysia-fork/utils.d.ts.map +1 -0
  40. package/dist/elysia-fork/utils.js +70 -0
  41. package/dist/elysia-fork/utils.js.map +1 -0
  42. package/dist/spiceflow.d.ts +253 -0
  43. package/dist/spiceflow.d.ts.map +1 -0
  44. package/dist/spiceflow.js +500 -0
  45. package/dist/spiceflow.js.map +1 -0
  46. package/dist/spiceflow.test.d.ts +2 -0
  47. package/dist/spiceflow.test.d.ts.map +1 -0
  48. package/dist/spiceflow.test.js +225 -0
  49. package/dist/spiceflow.test.js.map +1 -0
  50. package/dist/stream.test.d.ts +2 -0
  51. package/dist/stream.test.d.ts.map +1 -0
  52. package/dist/stream.test.js +286 -0
  53. package/dist/stream.test.js.map +1 -0
  54. package/dist/types.d.ts +1 -0
  55. package/dist/types.d.ts.map +1 -0
  56. package/dist/types.js +2 -0
  57. package/dist/types.js.map +1 -0
  58. package/dist/utils.d.ts +4 -20
  59. package/dist/utils.d.ts.map +1 -1
  60. package/dist/utils.js +17 -46
  61. package/dist/utils.js.map +1 -1
  62. package/package.json +12 -36
  63. package/src/client/errors.ts +21 -0
  64. package/src/client/index.ts +539 -0
  65. package/src/client/types.ts +233 -0
  66. package/src/client/utils.ts +7 -0
  67. package/src/client/ws.ts +99 -0
  68. package/src/client.test.ts +235 -0
  69. package/src/elysia-fork/context.ts +196 -0
  70. package/src/elysia-fork/error.ts +293 -0
  71. package/src/elysia-fork/types.ts +1454 -0
  72. package/src/elysia-fork/utils.ts +85 -0
  73. package/src/spiceflow.test.ts +290 -0
  74. package/src/spiceflow.ts +1266 -0
  75. package/src/stream.test.ts +342 -0
  76. package/src/types.ts +0 -0
  77. package/src/utils.ts +21 -70
  78. package/context.d.ts +0 -2
  79. package/context.js +0 -1
  80. package/dist/babel.test.d.ts +0 -2
  81. package/dist/babel.test.d.ts.map +0 -1
  82. package/dist/babel.test.js +0 -27
  83. package/dist/babel.test.js.map +0 -1
  84. package/dist/babelDebugOutputs.d.ts +0 -9
  85. package/dist/babelDebugOutputs.d.ts.map +0 -1
  86. package/dist/babelDebugOutputs.js +0 -34
  87. package/dist/babelDebugOutputs.js.map +0 -1
  88. package/dist/babelTransformRpc.d.ts +0 -19
  89. package/dist/babelTransformRpc.d.ts.map +0 -1
  90. package/dist/babelTransformRpc.js +0 -285
  91. package/dist/babelTransformRpc.js.map +0 -1
  92. package/dist/browser.d.ts +0 -8
  93. package/dist/browser.d.ts.map +0 -1
  94. package/dist/browser.js +0 -126
  95. package/dist/browser.js.map +0 -1
  96. package/dist/build.d.ts +0 -13
  97. package/dist/build.d.ts.map +0 -1
  98. package/dist/build.js +0 -230
  99. package/dist/build.js.map +0 -1
  100. package/dist/cli.d.ts +0 -3
  101. package/dist/cli.d.ts.map +0 -1
  102. package/dist/cli.js +0 -111
  103. package/dist/cli.js.map +0 -1
  104. package/dist/context-internal.d.ts +0 -20
  105. package/dist/context-internal.d.ts.map +0 -1
  106. package/dist/context-internal.js +0 -16
  107. package/dist/context-internal.js.map +0 -1
  108. package/dist/context.d.ts +0 -2
  109. package/dist/context.d.ts.map +0 -1
  110. package/dist/context.js +0 -2
  111. package/dist/context.js.map +0 -1
  112. package/dist/expose.d.ts +0 -6
  113. package/dist/expose.d.ts.map +0 -1
  114. package/dist/expose.js +0 -32
  115. package/dist/expose.js.map +0 -1
  116. package/dist/headers.d.ts +0 -2
  117. package/dist/headers.d.ts.map +0 -1
  118. package/dist/headers.js +0 -18
  119. package/dist/headers.js.map +0 -1
  120. package/dist/index.d.ts +0 -8
  121. package/dist/index.d.ts.map +0 -1
  122. package/dist/index.js +0 -23
  123. package/dist/index.js.map +0 -1
  124. package/dist/jsonRpc.d.ts +0 -32
  125. package/dist/jsonRpc.d.ts.map +0 -1
  126. package/dist/jsonRpc.js +0 -3
  127. package/dist/jsonRpc.js.map +0 -1
  128. package/dist/server.d.ts +0 -32
  129. package/dist/server.d.ts.map +0 -1
  130. package/dist/server.js +0 -292
  131. package/dist/server.js.map +0 -1
  132. package/headers.d.ts +0 -2
  133. package/headers.js +0 -1
  134. package/sdk-template/package.json +0 -22
  135. package/sdk-template/src/index.ts +0 -2
  136. package/sdk-template/src/v1/example.ts +0 -5
  137. package/sdk-template/src/v1/generator.ts +0 -12
  138. package/sdk-template/tsconfig.json +0 -16
  139. package/src/babel.test.ts +0 -35
  140. package/src/babelDebugOutputs.ts +0 -56
  141. package/src/babelTransformRpc.ts +0 -394
  142. package/src/browser.ts +0 -141
  143. package/src/build.ts +0 -298
  144. package/src/cli.ts +0 -132
  145. package/src/context-internal.ts +0 -36
  146. package/src/context.ts +0 -5
  147. package/src/expose.ts +0 -34
  148. package/src/headers.ts +0 -19
  149. package/src/index.ts +0 -34
  150. package/src/jsonRpc.ts +0 -43
  151. 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":"AAAA,OAAO,EAAE,IAAI,EAAY,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;IACxB,MAAM,GAAG,GAAG,MAAM,IAAI,MAAM,EAAE;SAC5B,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC;SACxB,MAAM,CAAC,IAAI,OAAO,CAAC,sBAAsB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;IACjE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC5B,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;AACpD,CAAC,CAAC,CAAA;AACF,IAAI,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;IAChC,MAAM,GAAG,GAAG,MAAM,IAAI,MAAM,EAAE;SAC5B,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC;SAC5B,MAAM,CAAC,IAAI,OAAO,CAAC,0BAA0B,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;IACrE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC5B,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;AACpD,CAAC,CAAC,CAAA;AACF,IAAI,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;IACpC,MAAM,GAAG,GAAG,MAAM,IAAI,MAAM,EAAE;SAC5B,GAAG,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC;SAC3B,MAAM,CAAC,IAAI,OAAO,CAAC,0BAA0B,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;IACpE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC5B,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;AACpD,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;IAC7C,MAAM,GAAG,GAAG,MAAM,IAAI,MAAM,EAAE;SAC5B,GAAG,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC;SAC3B,MAAM,CAAC,IAAI,OAAO,CAAC,uBAAuB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;IACjE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC7B,CAAC,CAAC,CAAA;AACF,IAAI,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;IAC9B,MAAM,GAAG,GAAG,MAAM,IAAI,MAAM,EAAE;SAC5B,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;SACf,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;QACjC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAA;IACjB,CAAC,CAAC;SACD,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;QAC1B,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC7B,CAAC,CAAC;SACD,MAAM,CAAC,IAAI,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAA;IAC7C,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC7B,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;IACzC,IAAI,IAAI,CAAA;IACR,MAAM,GAAG,GAAG,MAAM,IAAI,MAAM,EAAE;SAC5B,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;SAEf,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;QACpB,IAAI,GAAG,CAAC,CAAC,IAAI,CAAA;QACb,wBAAwB;QACxB,OAAO,IAAI,CAAA;IACZ,CAAC,CAAC;SACD,MAAM,CACN,IAAI,OAAO,CAAC,uBAAuB,EAAE;QACpC,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,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;AAChE,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;IACvD,MAAM,GAAG,GAAG,MAAM,IAAI,MAAM,EAAE;SAE5B,IAAI,CACJ,OAAO,EACP,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;QACZ,wBAAwB;QACxB,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;QACtC,OAAO,IAAI,CAAA;IACZ,CAAC,EACD;QACC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;YACjB,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE;SACnB,CAAC;KACF,CACD;SACA,MAAM,CACN,IAAI,OAAO,CAAC,uBAAuB,EAAE;QACpC,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,qBAAqB,CAAC,QAAQ,CAAC,CAAA;AACzD,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;IACrD,MAAM,GAAG,GAAG,MAAM,IAAI,MAAM,EAAE;SAE5B,IAAI,CACJ,OAAO,EACP,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE;QAC7B,wBAAwB;QACxB,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;IACvC,CAAC,EACD;QACC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;YACjB,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE;YACnB,aAAa,EAAE,IAAI,CAAC,MAAM,EAAE;SAC5B,CAAC;KACF,CACD;SACA,MAAM,CACN,IAAI,OAAO,CAAC,uBAAuB,EAAE;QACpC,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,qBAAqB,CAC7C,oDAAoD,CACpD,CAAA;AACF,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;IAChC,MAAM,GAAG,GAAG,MAAM,IAAI,MAAM,EAAE;SAC5B,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;QAC1B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACnC,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;IAC3C,CAAC,CAAC;SACD,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;QAC1B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACnC,OAAO,YAAY,CAAA;IACpB,CAAC,CAAC;SACD,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC;SAC5B,MAAM,CAAC,IAAI,OAAO,CAAC,2BAA2B,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;IACtE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC5B,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACpC,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;IAChC,MAAM,GAAG,GAAG,MAAM,IAAI,MAAM,EAAE;SAC5B,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;QAC1B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACnC,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;IAC3C,CAAC,CAAC;SACD,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;QAC1B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACnC,OAAO,YAAY,CAAA;IACpB,CAAC,CAAC;SACD,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC;SAC5B,MAAM,CAAC,IAAI,OAAO,CAAC,2BAA2B,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;IACtE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC5B,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACpC,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;IAChC,MAAM,GAAG,GAAG,MAAM,IAAI,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;SAChD,GAAG,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC;SAC3B,MAAM,CAAC,IAAI,OAAO,CAAC,8BAA8B,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;IACxE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC5B,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;AACpD,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;IAC3C,IAAI,QAAQ,GAAG,KAAK,CAAA;IACpB,IAAI,QAAQ,GAAG,KAAK,CAAA;IACpB,MAAM,GAAG,GAAG,MAAM,IAAI,MAAM,EAAE;SAC5B,GAAG,CACH,IAAI,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;SAC9B,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;QAC1B,QAAQ,GAAG,IAAI,CAAA;IAChB,CAAC,CAAC;SACD,GAAG,CAAC,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAC5C;SACA,GAAG,CACH,IAAI,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;SAC9B,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE;QAChB,QAAQ,GAAG,IAAI,CAAA;IAChB,CAAC,CAAC;SACD,GAAG,CAAC,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAC5C,CAAA;IAEF,CAAC;QACA,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,MAAM,CAC3B,IAAI,OAAO,CAAC,8BAA8B,CAAC,CAC3C,CAAA;QACD,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAE5B,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;IACrD,CAAC;IACD,CAAC;QACA,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,MAAM,CAC3B,IAAI,OAAO,CAAC,8BAA8B,CAAC,CAC3C,CAAA;QACD,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAE5B,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;IACrD,CAAC;IACD,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC3B,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC5B,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;IAChD,MAAM,GAAG,GAAG,MAAM,IAAI,MAAM,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;SACjD,GAAG,CACH,IAAI,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,CACnC,UAAU,EACV,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CACzB,CACD;SACA,GAAG,CACH,IAAI,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,CACnC,IAAI,MAAM,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,GAAG,CACtC,UAAU,EACV,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CACzB,CACD,CACD,CAAA;IACF,CAAC;QACA,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,MAAM,CAC3B,IAAI,OAAO,CAAC,mCAAmC,CAAC,CAChD,CAAA;QACD,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC5B,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;IACrD,CAAC;IAED,CAAC;QACA,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,MAAM,CAC3B,IAAI,OAAO,CAAC,6CAA6C,CAAC,CAC1D,CAAA;QACD,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC5B,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAA;IACxD,CAAC;AACF,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;IAC9C,IAAI,gBAAgB,GAAG,EAAc,CAAA;IACrC,IAAI,cAAc,GAAG,EAAc,CAAA;IACnC,MAAM,GAAG,GAAG,MAAM,IAAI,MAAM,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;SACjD,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;QACtB,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC7B,+CAA+C;IAChD,CAAC,CAAC;SACD,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;QAC1B,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC3B,+CAA+C;IAChD,CAAC,CAAC;SAED,GAAG,CACH,IAAI,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;SAC9B,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;QACtB,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC5B,8CAA8C;IAC/C,CAAC,CAAC;SACD,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;QAC1B,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC1B,8CAA8C;IAC/C,CAAC,CAAC;SACD,GAAG,CACH,IAAI,MAAM,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;SACjC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;QACtB,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC/B,iDAAiD;IAClD,CAAC,CAAC;SACD,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;QAC1B,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC7B,iDAAiD;IAClD,CAAC,CAAC;SACD,GAAG,CAAC,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QAC/B,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAA;IACjC,CAAC,CAAC,CACH,CACF,CAAA;IAEF,CAAC;QACA,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,MAAM,CAC3B,IAAI,OAAO,CAAC,6CAA6C,CAAC,CAC1D,CAAA;QACD,MAAM,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAA;QAC3D,MAAM,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAA;QACzD,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC5B,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAC9C,0DAA0D;IAC3D,CAAC;AACF,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=stream.test.d.ts.map
@@ -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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"}
@@ -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,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=types.js.map
@@ -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
- import { PluginPass } from '@babel/core';
2
- import { Node, types } from '@babel/core';
3
- import { JsonRpcErrorResponse } from './jsonRpc.js';
4
- export declare function annotateAsPure<N extends Node>(t: typeof types, node: N): N;
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
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAmB,MAAM,aAAa,CAAC;AAE1D,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAgB,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAIlE,wBAAgB,cAAc,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,OAAO,KAAK,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAG1E;AAED,MAAM,MAAM,OAAO,GACf,MAAM,GACN,MAAM,GACN,OAAO,GACP;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,GAC1B,OAAO,EAAE,CAAC;AAGd,eAAO,MAAM,MAAM;;;CAOlB,CAAC;AAEF,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,sBAY5C;AACD,eAAO,MAAM,SAAS,kBAAkB,CAAC;AAEzC,wBAAgB,YAAY,CAAC,EAC3B,EAAS,EACT,OAAO,EACP,IAAQ,GACT;;;;CAAA,GAAG,oBAAoB,CAUvB;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,UAU/C;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,UAE/C"}
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"}