spiceflow 0.0.7 → 1.0.1

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 +15 -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 +570 -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/index.d.ts +2 -7
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +1 -22
  45. package/dist/index.js.map +1 -1
  46. package/dist/spiceflow.d.ts +237 -0
  47. package/dist/spiceflow.d.ts.map +1 -0
  48. package/dist/spiceflow.js +484 -0
  49. package/dist/spiceflow.js.map +1 -0
  50. package/dist/spiceflow.test.d.ts +2 -0
  51. package/dist/spiceflow.test.d.ts.map +1 -0
  52. package/dist/spiceflow.test.js +225 -0
  53. package/dist/spiceflow.test.js.map +1 -0
  54. package/dist/stream.test.d.ts +2 -0
  55. package/dist/stream.test.d.ts.map +1 -0
  56. package/dist/stream.test.js +286 -0
  57. package/dist/stream.test.js.map +1 -0
  58. package/dist/types.d.ts +1 -0
  59. package/dist/types.d.ts.map +1 -0
  60. package/dist/types.js +2 -0
  61. package/dist/types.js.map +1 -0
  62. package/dist/utils.d.ts +4 -20
  63. package/dist/utils.d.ts.map +1 -1
  64. package/dist/utils.js +17 -46
  65. package/dist/utils.js.map +1 -1
  66. package/package.json +12 -37
  67. package/src/client/errors.ts +21 -0
  68. package/src/client/index.ts +541 -0
  69. package/src/client/types.ts +233 -0
  70. package/src/client/utils.ts +7 -0
  71. package/src/client/ws.ts +99 -0
  72. package/src/client.test.ts +235 -0
  73. package/src/elysia-fork/context.ts +196 -0
  74. package/src/elysia-fork/error.ts +293 -0
  75. package/src/elysia-fork/types.ts +1353 -0
  76. package/src/elysia-fork/utils.ts +85 -0
  77. package/src/index.ts +2 -34
  78. package/src/spiceflow.test.ts +290 -0
  79. package/src/spiceflow.ts +1251 -0
  80. package/src/stream.test.ts +342 -0
  81. package/src/types.ts +0 -0
  82. package/src/utils.ts +21 -70
  83. package/context.d.ts +0 -2
  84. package/context.js +0 -1
  85. package/dist/babel.test.d.ts +0 -2
  86. package/dist/babel.test.d.ts.map +0 -1
  87. package/dist/babel.test.js +0 -27
  88. package/dist/babel.test.js.map +0 -1
  89. package/dist/babelDebugOutputs.d.ts +0 -9
  90. package/dist/babelDebugOutputs.d.ts.map +0 -1
  91. package/dist/babelDebugOutputs.js +0 -34
  92. package/dist/babelDebugOutputs.js.map +0 -1
  93. package/dist/babelTransformRpc.d.ts +0 -19
  94. package/dist/babelTransformRpc.d.ts.map +0 -1
  95. package/dist/babelTransformRpc.js +0 -285
  96. package/dist/babelTransformRpc.js.map +0 -1
  97. package/dist/browser.d.ts +0 -8
  98. package/dist/browser.d.ts.map +0 -1
  99. package/dist/browser.js +0 -126
  100. package/dist/browser.js.map +0 -1
  101. package/dist/build.d.ts +0 -13
  102. package/dist/build.d.ts.map +0 -1
  103. package/dist/build.js +0 -230
  104. package/dist/build.js.map +0 -1
  105. package/dist/cli.d.ts +0 -3
  106. package/dist/cli.d.ts.map +0 -1
  107. package/dist/cli.js +0 -111
  108. package/dist/cli.js.map +0 -1
  109. package/dist/context-internal.d.ts +0 -20
  110. package/dist/context-internal.d.ts.map +0 -1
  111. package/dist/context-internal.js +0 -16
  112. package/dist/context-internal.js.map +0 -1
  113. package/dist/context.d.ts +0 -2
  114. package/dist/context.d.ts.map +0 -1
  115. package/dist/context.js +0 -2
  116. package/dist/context.js.map +0 -1
  117. package/dist/expose.d.ts +0 -6
  118. package/dist/expose.d.ts.map +0 -1
  119. package/dist/expose.js +0 -32
  120. package/dist/expose.js.map +0 -1
  121. package/dist/headers.d.ts +0 -2
  122. package/dist/headers.d.ts.map +0 -1
  123. package/dist/headers.js +0 -18
  124. package/dist/headers.js.map +0 -1
  125. package/dist/jsonRpc.d.ts +0 -32
  126. package/dist/jsonRpc.d.ts.map +0 -1
  127. package/dist/jsonRpc.js +0 -3
  128. package/dist/jsonRpc.js.map +0 -1
  129. package/dist/server.d.ts +0 -32
  130. package/dist/server.d.ts.map +0 -1
  131. package/dist/server.js +0 -292
  132. package/dist/server.js.map +0 -1
  133. package/headers.d.ts +0 -2
  134. package/headers.js +0 -1
  135. package/sdk-template/package.json +0 -22
  136. package/sdk-template/src/index.ts +0 -2
  137. package/sdk-template/src/v1/example.ts +0 -5
  138. package/sdk-template/src/v1/generator.ts +0 -12
  139. package/sdk-template/tsconfig.json +0 -16
  140. package/src/babel.test.ts +0 -35
  141. package/src/babelDebugOutputs.ts +0 -56
  142. package/src/babelTransformRpc.ts +0 -394
  143. package/src/browser.ts +0 -141
  144. package/src/build.ts +0 -298
  145. package/src/cli.ts +0 -132
  146. package/src/context-internal.ts +0 -36
  147. package/src/context.ts +0 -5
  148. package/src/expose.ts +0 -34
  149. package/src/headers.ts +0 -19
  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 { Spiceflow } from './spiceflow';
4
+ test('works', async () => {
5
+ const res = await new Spiceflow()
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 Spiceflow()
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 Spiceflow()
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 Spiceflow()
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 Spiceflow()
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 Spiceflow()
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 Spiceflow()
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 Spiceflow()
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 Spiceflow()
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 Spiceflow()
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 Spiceflow({ 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 Spiceflow()
145
+ .use(new Spiceflow({ basePath: '/one' })
146
+ .onRequest(({ request }) => {
147
+ oneOnReq = true;
148
+ })
149
+ .get('/ids/:id', ({ params }) => params.id))
150
+ .use(new Spiceflow({ 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 Spiceflow({ basePath: '/zero' })
170
+ .use(new Spiceflow({ basePath: '/one' }).get('/ids/:id', ({ params }) => params.id))
171
+ .use(new Spiceflow({ basePath: '/two' }).use(new Spiceflow({ 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 Spiceflow({ 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 Spiceflow({ 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 Spiceflow({ 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,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 { Spiceflow } 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 Spiceflow().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 Spiceflow().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 Spiceflow()
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 Spiceflow()
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 Spiceflow()
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 Spiceflow().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 Spiceflow().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 Spiceflow().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 Spiceflow().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 Spiceflow().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 Spiceflow()
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 Spiceflow()
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 Spiceflow().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":";;;;;;;;;;;;;AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEjD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAEpC,SAAS,eAAe,CAAC,KAAe;IACvC,OAAO,KAAK;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,yBAAyB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;SAClE,IAAI,CAAC,EAAE,CAAC,CAAA;AACX,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAY;IAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;IACnD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AACxB,CAAC;AAED,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACvB,EAAE,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;QAEhC,MAAM,GAAG,GAAG,IAAI,SAAS,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE;;gBACpC,oBAAM,GAAG,CAAA,CAAA;gBACT,cAAM,KAAK,CAAC,EAAE,CAAC,CAAA,CAAA;gBAEf,oBAAM,GAAG,CAAA,CAAA;gBACT,cAAM,KAAK,CAAC,EAAE,CAAC,CAAA,CAAA;gBAEf,oBAAM,GAAG,CAAA,CAAA;YACV,CAAC;SAAA,CAAC,CAAA;QAEF,MAAM,QAAQ,GAAG,MAAM,GAAG;aACxB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;aAChB,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;aACnB,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;YACX,IAAI,CAAC,CAAC;gBAAE,OAAM;YAEd,MAAM,MAAM,GAAG,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,SAAS,EAAE,CAAA;YAE7B,IAAI,GAAG,GAAG,EAAE,CAAA;YACZ,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,aAAa,EAAE,CAAA;YAEpD,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE;gBAC/C,IAAI,IAAI;oBAAE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAA;gBAE7B,MAAM,CAAC,wBAAwB,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CACtD,QAAQ,CAAC,KAAK,EAAG,CACjB,CAAA;gBAED,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAA;gBACvB,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAChC,CAAC,CAAC,CAAA;YAEF,OAAO,OAAO,CAAA;QACf,CAAC,CAAC,CAAA;QAEH,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QAChC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;IACxD,CAAC,CAAC,CAAA;IACF,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;QAC1C,MAAM,GAAG,GAAG,IAAI,SAAS,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE;;gBACpC,oBAAM,GAAG,CAAA,CAAA;gBACT,cAAM,KAAK,CAAC,EAAE,CAAC,CAAA,CAAA;gBAEf,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAA;YAC5B,CAAC;SAAA,CAAC,CAAA;QAEF,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;QAEjE,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CACpB,iEAAiE,CACjE,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,GAAG,GAAG,IAAI,SAAS,EAAE;aACzB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;YACtB,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACnC,CAAC,CAAC;aACD,GAAG,CAAC,GAAG,EAAE;;gBACT,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAA;YACjC,CAAC;SAAA,CAAC,CAAA;QAEH,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;QAEjE,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,IAAI,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QACjE,MAAM,GAAG,GAAG,IAAI,SAAS,EAAE;aACzB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;YACtB,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACnC,CAAC,CAAC;aACD,GAAG,CAAC,GAAG,EAAE;;gBACT,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAA;YAC5B,CAAC;SAAA,CAAC,CAAA;QAEH,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;QAEjE,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,IAAI,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,QAAQ,GAAG,gBAAgB,CAAA;QACjC,MAAM,GAAG,GAAG,IAAI,SAAS,EAAE;aACzB,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YACf,OAAO,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAA;QAC9B,CAAC,CAAC;aACD,GAAG,CAAC,GAAG,EAAE;;gBACT,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAA;YAC5B,CAAC;SAAA,CAAC,CAAA;QAEH,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;QAEjE,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAChC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QAE3B,MAAM,GAAG,GAAG,IAAI,SAAS,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE;;gBACpC,oBAAM,GAAG,CAAA,CAAA;gBACT,cAAM,KAAK,CAAC,EAAE,CAAC,CAAA,CAAA;gBAEf,oBAAM,GAAG,CAAA,CAAA;gBACT,cAAM,KAAK,CAAC,EAAE,CAAC,CAAA,CAAA;gBAEf,oBAAM,GAAG,CAAA,CAAA;YACV,CAAC;SAAA,CAAC,CAAA;QAEF,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;QAExC,UAAU,CAAC,GAAG,EAAE;YACf,UAAU,CAAC,KAAK,EAAE,CAAA;QACnB,CAAC,EAAE,EAAE,CAAC,CAAA;QAEN,MAAM,QAAQ,GAAG,MAAM,GAAG;aACxB,MAAM,CACN,IAAI,OAAO,CAAC,aAAa,EAAE;YAC1B,MAAM,EAAE,UAAU,CAAC,MAAM;SACzB,CAAC,CACF;aACA,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;aACnB,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;YACX,IAAI,CAAC,CAAC;gBAAE,OAAM;YAEd,MAAM,MAAM,GAAG,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,SAAS,EAAE,CAAA;YAE7B,IAAI,GAAG,GAAG,EAAE,CAAA;YACZ,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,aAAa,EAAE,CAAA;YAEpD,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE;gBAC/C,IAAI,IAAI,EAAE,CAAC;oBACV,OAAO,OAAO,CAAC,GAAG,CAAC,CAAA;gBACpB,CAAC;gBAED,MAAM,CAAC,wBAAwB,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CACtD,QAAQ,CAAC,KAAK,EAAG,CACjB,CAAA;gBAED,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAA;gBACvB,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAChC,CAAC,CAAC,CAAA;YAEF,OAAO,OAAO,CAAA;QACf,CAAC,CAAC,CAAA;QAEH,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QAChC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;IACnD,CAAC,CAAC,CAAA;IAEF,wDAAwD;IACxD,oCAAoC;IAEpC,uDAAuD;IACvD,uEAAuE;IAEvE,cAAc;IACd,cAAc;IACd,cAAc;IACd,MAAM;IAEN,sEAAsE;IAEtE,6DAA6D;IAC7D,0BAA0B;IAC1B,KAAK;IACL,KAAK;IACL,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;QAC3C,MAAM,OAAO,GAAG;YACf,EAAE,OAAO,EAAE,OAAO,EAAE;YACpB,EAAE,QAAQ,EAAE,OAAO,EAAE;YACrB,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;YACnB,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;SACrB,CAAA;QACD,MAAM,GAAG,GAAG,IAAI,SAAS,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE;gEAAiB,EAAE;gBACvD,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;oBAC3B,oBAAM,GAAG,CAAA,CAAA;gBACV,CAAC;YACF,CAAC;SAAA,CAAC,CAAA;QAEF,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QAE3D,IAAI,MAAM,GAAG,EAAW,CAAA;QACxB,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACnB,CAAC,CAAC,CAAA;QACF,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,aAAa,EAAQ,CAAA;QAC1D,MAAM,MAAM,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,SAAS,EAAG,CAAA;QAEjC,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE;YAC/C,IAAI,IAAI,EAAE,CAAC;gBACV,OAAO,OAAO,EAAE,CAAA;YACjB,CAAC;YACD,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;YAC7B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACjB,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAChC,CAAC,CAAC,CAAA;QACF,MAAM,OAAO,CAAA;QAEb,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CACxC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CACrC,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,wDAAwD;IACxD,oCAAoC;IAEpC,uDAAuD;IACvD,uEAAuE;IAEvE,cAAc;IACd,cAAc;IACd,cAAc;IACd,MAAM;IAEN,sEAAsE;IAEtE,6DAA6D;IAC7D,0BAA0B;IAC1B,KAAK;IACL,KAAK;IAEL,8DAA8D;IAC9D,oCAAoC;IAEpC,6DAA6D;IAC7D,uEAAuE;IAEvE,cAAc;IACd,cAAc;IACd,cAAc;IACd,MAAM;IAEN,sEAAsE;IAEtE,6DAA6D;IAC7D,0BAA0B;IAC1B,KAAK;IACL,KAAK;IAEL,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;QAC1C,MAAM,GAAG,GAAG,IAAI,SAAS,EAAE;aACzB,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC;YAClB,OAAO,OAAO,CAAA;QACf,CAAC,CAAC;aACD,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC;YACtB,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;QAC1B,CAAC,CAAC,CAAA;QAEH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAClC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACpB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;SACxB,CAAC,CAAA;QAEF,MAAM,CAAC,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAChD,MAAM,CAAC,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC;YACxC,KAAK,EAAE,OAAO;SACd,CAAC,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,GAAG,GAAG,IAAI,SAAS,EAAE;aACzB,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC;YAClB,OAAO,OAAO,CAAA;QACf,CAAC,CAAC;aACD,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC;YACtB,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;QAC1B,CAAC,CAAC,CAAA;QAEH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAClC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACpB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;SACxB,CAAC,CAAA;QAEF,MAAM,CAAC,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAChD,MAAM,CAAC,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC;YACxC,KAAK,EAAE,OAAO;SACd,CAAC,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,QAAQ,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;QAC1D,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAA;QACtD,IAAI,CAAC,GAAG,CAAC,CAAA;QAET,MAAM,GAAG,GAAG,IAAI,SAAS,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE;;gBACpC,oBAAM,QAAQ,CAAC,CAAC,CAAC,CAAA,CAAA;gBACjB,cAAM,KAAK,CAAC,EAAE,CAAC,CAAA,CAAA;gBAEf,oBAAM,QAAQ,CAAC,CAAC,CAAC,CAAA,CAAA;gBACjB,cAAM,KAAK,CAAC,EAAE,CAAC,CAAA,CAAA;gBAEf,oBAAM,QAAQ,CAAC,CAAC,CAAC,CAAA,CAAA;YAClB,CAAC;SAAA,CAAC,CAAA;QAEF,MAAM,QAAQ,GAAG,MAAM,GAAG;aACxB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;aAChB,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;aACnB,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;YACX,IAAI,CAAC,CAAC;gBAAE,OAAM;YAEd,MAAM,MAAM,GAAG,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,SAAS,EAAE,CAAA;YAE7B,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,aAAa,EAAQ,CAAA;YAE1D,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE;gBAC/C,IAAI,IAAI;oBAAE,OAAO,OAAO,EAAE,CAAA;gBAE1B,MAAM,CAAC,wBAAwB,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,OAAO,CACzD,QAAQ,CAAC,CAAC,EAAE,CAAC,CACb,CAAA;gBAED,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAChC,CAAC,CAAC,CAAA;YAEF,OAAO,OAAO,CAAA;QACf,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}
@@ -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"}