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,500 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
12
+ var __asyncValues = (this && this.__asyncValues) || function (o) {
13
+ if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
14
+ var m = o[Symbol.asyncIterator], i;
15
+ return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
16
+ function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
17
+ function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
18
+ };
19
+ import parseQuery from 'fast-querystring';
20
+ import { Type } from '@sinclair/typebox';
21
+ export { Type as t };
22
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
23
+ // @ts-ignore
24
+ import OriginalRouter from '@medley/router';
25
+ import Ajv from 'ajv';
26
+ import { isAsyncIterable } from './utils.js';
27
+ import { redirect } from './elysia-fork/utils.js';
28
+ const ajv = new Ajv();
29
+ /**
30
+ * Router class
31
+ */
32
+ export class Elysia {
33
+ add(_a) {
34
+ var { method, path } = _a, rest = __rest(_a, ["method", "path"]);
35
+ const router = this.routerTree;
36
+ // if (router.prefix) {
37
+ // path = router.prefix + path
38
+ // }
39
+ const store = router.router.register(path);
40
+ store[method] = Object.assign({}, rest);
41
+ }
42
+ match(method, path) {
43
+ const result = bfs(this.routerTree, (router) => {
44
+ if (router.prefix && !path.startsWith(router.prefix)) {
45
+ // console.log(
46
+ // `router prefix: ${router.prefix} does not match path: ${path}`
47
+ // )
48
+ return;
49
+ }
50
+ let pathWithoutPrefix = path;
51
+ if (router.prefix) {
52
+ pathWithoutPrefix = path.replace(router.prefix, '');
53
+ }
54
+ // console.log(`router prefix: ${router.prefix} matches path: ${path}`)
55
+ const route = router.router.find(pathWithoutPrefix);
56
+ if (!route) {
57
+ return;
58
+ }
59
+ let data = route['store'][method];
60
+ if (data) {
61
+ // console.log(`route found: ${method} ${path}`, route)
62
+ const { onErrorHandlers, onRequestHandlers } = router;
63
+ const params = route['params'] || {};
64
+ return Object.assign(Object.assign({}, data), { router, store: router.store, onErrorHandlers,
65
+ onRequestHandlers,
66
+ params });
67
+ }
68
+ });
69
+ return result;
70
+ }
71
+ state(name, value) {
72
+ this.routerTree.store[name] = value;
73
+ return this;
74
+ }
75
+ /**
76
+ * Create a new Router
77
+ * @param options {@link RouterOptions} {@link Platform}
78
+ */
79
+ constructor(options = {}) {
80
+ var _a;
81
+ this._routes = {};
82
+ this._types = {
83
+ Prefix: '',
84
+ Scoped: false,
85
+ Singleton: {},
86
+ Definitions: {},
87
+ Metadata: {}
88
+ };
89
+ this._ephemeral = {};
90
+ this._volatile = {};
91
+ this.scoped = options.scoped;
92
+ this.onNoMatch =
93
+ (_a = options.onNoMatch) !== null && _a !== void 0 ? _a : (() => new Response(null, { status: 404 }));
94
+ this.routerTree = {
95
+ router: new OriginalRouter(),
96
+ prefix: options.basePath,
97
+ onRequestHandlers: [],
98
+ onErrorHandlers: [],
99
+ children: [],
100
+ store: {}
101
+ };
102
+ // Bind router methods
103
+ // for (const method of METHODS) {
104
+ // this.#routes.set(method as Method, [])
105
+ // const key = method.toLowerCase() as Lowercase<Method>
106
+ // this[key as any] = this.#add.bind(this, method)
107
+ // }
108
+ }
109
+ /**
110
+ * ### post
111
+ * Register handler for path with method [POST]
112
+ *
113
+ * ---
114
+ * @example
115
+ * ```typescript
116
+ * import { Elysia, t } from 'elysia'
117
+ *
118
+ * new Elysia()
119
+ * .post('/', () => 'hi')
120
+ * .post('/with-hook', () => 'hi', {
121
+ * response: t.String()
122
+ * })
123
+ * ```
124
+ */
125
+ post(path, handler, hook) {
126
+ this.add({ method: 'POST', path, handler: handler, hook });
127
+ return this;
128
+ }
129
+ get(path, handler, hook) {
130
+ this.add({ method: 'GET', path, handler: handler, hook });
131
+ return this;
132
+ }
133
+ put(path, handler, hook) {
134
+ this.add({ method: 'PUT', path, handler: handler, hook });
135
+ return this;
136
+ }
137
+ patch(path, handler, hook) {
138
+ this.add({ method: 'PATCH', path, handler: handler, hook });
139
+ return this;
140
+ }
141
+ delete(path, handler, hook) {
142
+ this.add({ method: 'DELETE', path, handler: handler, hook });
143
+ return this;
144
+ }
145
+ options(path, handler, hook) {
146
+ this.add({ method: 'OPTIONS', path, handler: handler, hook });
147
+ return this;
148
+ }
149
+ all(path, handler, hook) {
150
+ for (const method of METHODS) {
151
+ this.add({ method, path, handler: handler, hook });
152
+ }
153
+ return this;
154
+ }
155
+ head(path, handler, hook) {
156
+ this.add({ method: 'HEAD', path, handler: handler, hook });
157
+ return this;
158
+ }
159
+ get _scoped() {
160
+ return this.scoped;
161
+ }
162
+ // group is not needed, you can add another prefixed app instead
163
+ // group<
164
+ // const Prefix extends string,
165
+ // const NewElysia extends Elysia<any, any, any, any, any, any, any, any>
166
+ // >(
167
+ // prefix: Prefix,
168
+ // run: (
169
+ // group: Elysia<
170
+ // `${BasePath}${Prefix}`,
171
+ // Scoped,
172
+ // Singleton,
173
+ // Definitions,
174
+ // Metadata,
175
+ // {},
176
+ // Ephemeral,
177
+ // Volatile
178
+ // >
179
+ // ) => NewElysia
180
+ // ): Elysia<
181
+ // BasePath,
182
+ // Scoped,
183
+ // Singleton,
184
+ // Definitions,
185
+ // Metadata,
186
+ // Prettify<Routes & NewElysia['_routes']>,
187
+ // Ephemeral,
188
+ // Volatile
189
+ // > {
190
+ // let thisRouter = this.routers[0]
191
+ // this.routers.push(
192
+ // ...instance.routers.map((r) => ({
193
+ // ...r,
194
+ // prefix: (thisRouter.prefix || '') + r.prefix
195
+ // }))
196
+ // )
197
+ // return this
198
+ // }
199
+ use(instance) {
200
+ const thisRouter = this.routerTree;
201
+ // TODO use scoped logic to add onRequest and onError on all routers if necessary, add them first
202
+ this.routerTree.children.push(mapBfs(instance.routerTree, (r) => {
203
+ return Object.assign(Object.assign({}, r), { prefix: (thisRouter.prefix || '') + r.prefix });
204
+ }));
205
+ return this;
206
+ }
207
+ onError(handler) {
208
+ var _a;
209
+ const router = this.routerTree;
210
+ (_a = router.onErrorHandlers) !== null && _a !== void 0 ? _a : (router.onErrorHandlers = []);
211
+ router.onErrorHandlers.push(handler);
212
+ return this;
213
+ }
214
+ onRequest(handler) {
215
+ var _a;
216
+ const router = this.routerTree;
217
+ (_a = router.onRequestHandlers) !== null && _a !== void 0 ? _a : (router.onRequestHandlers = []);
218
+ router.onRequestHandlers.push(handler);
219
+ return this;
220
+ }
221
+ /**
222
+ * Pass a request through all matching route handles and return a response
223
+ * @param request The `Request`
224
+ * @param platform Platform specific context {@link Platform}
225
+ * @returns The final `Response`
226
+ */
227
+ async handle(request, platform) {
228
+ var _a, _b;
229
+ platform !== null && platform !== void 0 ? platform : (platform = {});
230
+ let u = new URL(request.url);
231
+ let path = u.pathname + u.search;
232
+ const defaultContext = {
233
+ redirect,
234
+ error: null,
235
+ path
236
+ };
237
+ let onErrorHandlers = [];
238
+ try {
239
+ let response;
240
+ // Get all middleware and method specific routes in order
241
+ const route = this.match(request.method, path);
242
+ if (!route) {
243
+ return this.onNoMatch(request, platform);
244
+ }
245
+ onErrorHandlers = this.getRouteAndParents(route.router).flatMap((x) => x.onErrorHandlers);
246
+ const { params, store } = route;
247
+ const onReq = this.getRouteAndParents(route.router).flatMap((x) => x.onRequestHandlers);
248
+ // TODO add content type
249
+ let content = (_a = route === null || route === void 0 ? void 0 : route.hook) === null || _a === void 0 ? void 0 : _a.content;
250
+ let body = await getRequestBody({ request, content });
251
+ let bodySchema = (_b = route === null || route === void 0 ? void 0 : route.hook) === null || _b === void 0 ? void 0 : _b.body;
252
+ if (bodySchema) {
253
+ const validate = ajv.compile(bodySchema);
254
+ const valid = validate(body);
255
+ if (!valid) {
256
+ const error = ajv.errorsText(validate.errors, {
257
+ separator: '\n'
258
+ });
259
+ return new Response(error, {
260
+ status: 400,
261
+ headers: {
262
+ 'content-type': 'text/plain'
263
+ }
264
+ });
265
+ }
266
+ }
267
+ if (onReq.length > 0) {
268
+ for (const handler of onReq) {
269
+ const res = await handler({
270
+ request,
271
+ response,
272
+ store,
273
+ path
274
+ });
275
+ if (res) {
276
+ return await turnHandlerResultIntoResponse(res);
277
+ }
278
+ }
279
+ }
280
+ // console.log(route)
281
+ const res = route.handler(Object.assign(Object.assign({}, defaultContext), { request,
282
+ response, params: params, store,
283
+ body,
284
+ path
285
+ // platform
286
+ }));
287
+ if (isAsyncIterable(res)) {
288
+ return await this.handleStream({
289
+ generator: res,
290
+ request,
291
+ onErrorHandlers
292
+ });
293
+ }
294
+ return await turnHandlerResultIntoResponse(res);
295
+ }
296
+ catch (err) {
297
+ let res = await this.runErrorHandlers({
298
+ onErrorHandlers,
299
+ error: err,
300
+ request
301
+ });
302
+ if (res)
303
+ return res;
304
+ return new Response((err === null || err === void 0 ? void 0 : err.message) || 'Internal Server Error', {
305
+ status: 500
306
+ });
307
+ }
308
+ }
309
+ async runErrorHandlers({ onErrorHandlers = [], error: err, request }) {
310
+ if (onErrorHandlers.length === 0) {
311
+ console.error(`Spiceflow unhandled error:`, err);
312
+ }
313
+ else {
314
+ for (const errHandler of onErrorHandlers) {
315
+ const res = errHandler({ error: err, request });
316
+ if (res instanceof Response) {
317
+ return res;
318
+ }
319
+ }
320
+ }
321
+ }
322
+ getRouteAndParents(currentRouter) {
323
+ const parents = [];
324
+ let current = currentRouter;
325
+ // Perform BFS once to build a parent map
326
+ const parentMap = new Map();
327
+ bfs(this.routerTree, (node) => {
328
+ for (const child of node.children) {
329
+ parentMap.set(child, node);
330
+ }
331
+ });
332
+ // Traverse the parent map to get the parents
333
+ while (current) {
334
+ parents.unshift(current);
335
+ current = parentMap.get(current);
336
+ }
337
+ return parents.reverse().filter((x) => x !== undefined);
338
+ }
339
+ async handleStream({ onErrorHandlers, generator, request }) {
340
+ let init = generator.next();
341
+ if (init instanceof Promise)
342
+ init = await init;
343
+ if (init === null || init === void 0 ? void 0 : init.done) {
344
+ return await turnHandlerResultIntoResponse(init.value);
345
+ }
346
+ // let errorHandlers = this.routerTree.onErrorHandlers
347
+ let self = this;
348
+ return new Response(new ReadableStream({
349
+ async start(controller) {
350
+ var _a, e_1, _b, _c;
351
+ let end = false;
352
+ request === null || request === void 0 ? void 0 : request.signal.addEventListener('abort', () => {
353
+ end = true;
354
+ try {
355
+ controller.close();
356
+ }
357
+ catch (_a) {
358
+ // nothing
359
+ }
360
+ });
361
+ if ((init === null || init === void 0 ? void 0 : init.value) !== undefined && (init === null || init === void 0 ? void 0 : init.value) !== null)
362
+ controller.enqueue(Buffer.from(`event: message\ndata: ${JSON.stringify(init.value)}\n\n`));
363
+ try {
364
+ try {
365
+ for (var _d = true, generator_1 = __asyncValues(generator), generator_1_1; generator_1_1 = await generator_1.next(), _a = generator_1_1.done, !_a; _d = true) {
366
+ _c = generator_1_1.value;
367
+ _d = false;
368
+ const chunk = _c;
369
+ if (end)
370
+ break;
371
+ if (chunk === undefined || chunk === null)
372
+ continue;
373
+ controller.enqueue(Buffer.from(`event: message\ndata: ${JSON.stringify(chunk)}\n\n`));
374
+ }
375
+ }
376
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
377
+ finally {
378
+ try {
379
+ if (!_d && !_a && (_b = generator_1.return)) await _b.call(generator_1);
380
+ }
381
+ finally { if (e_1) throw e_1.error; }
382
+ }
383
+ }
384
+ catch (error) {
385
+ let res = await self.runErrorHandlers({
386
+ onErrorHandlers: onErrorHandlers,
387
+ error,
388
+ request
389
+ });
390
+ controller.enqueue(Buffer.from(`event: error\ndata: ${JSON.stringify(error.message || error.name || 'Error')}\n\n`));
391
+ }
392
+ try {
393
+ controller.close();
394
+ }
395
+ catch (_e) {
396
+ // nothing
397
+ }
398
+ }
399
+ }), {
400
+ // TODO add headers somehow
401
+ headers: {
402
+ // Manually set transfer-encoding for direct response, eg. app.handle, eden
403
+ 'transfer-encoding': 'chunked',
404
+ 'content-type': 'text/event-stream; charset=utf-8'
405
+ // ...set?.headers
406
+ }
407
+ });
408
+ }
409
+ }
410
+ async function getRequestBody({ request, content }) {
411
+ var _a, _b;
412
+ let body;
413
+ if (request.method === 'GET' || request.method === 'HEAD') {
414
+ return;
415
+ }
416
+ const contentType = content || ((_b = (_a = request.headers.get('content-type')) === null || _a === void 0 ? void 0 : _a.split(';')) === null || _b === void 0 ? void 0 : _b[0]);
417
+ if (!contentType) {
418
+ return;
419
+ }
420
+ switch (contentType) {
421
+ case 'application/json':
422
+ body = (await request.json());
423
+ break;
424
+ case 'text/plain':
425
+ body = await request.text();
426
+ break;
427
+ case 'application/x-www-form-urlencoded':
428
+ body = parseQuery.parse(await request.text());
429
+ break;
430
+ case 'application/octet-stream':
431
+ body = await request.arrayBuffer();
432
+ break;
433
+ case 'multipart/form-data':
434
+ body = {};
435
+ const form = await request.formData();
436
+ for (const key of form.keys()) {
437
+ if (body[key])
438
+ continue;
439
+ const value = form.getAll(key);
440
+ if (value.length === 1)
441
+ body[key] = value[0];
442
+ else
443
+ body[key] = value;
444
+ }
445
+ break;
446
+ }
447
+ return body;
448
+ }
449
+ const METHODS = [
450
+ 'ALL',
451
+ 'CONNECT',
452
+ 'DELETE',
453
+ 'GET',
454
+ 'HEAD',
455
+ 'OPTIONS',
456
+ 'PATCH',
457
+ 'POST',
458
+ 'PUT',
459
+ 'TRACE'
460
+ ];
461
+ function bfs(tree, onNode) {
462
+ const queue = [tree];
463
+ while (queue.length > 0) {
464
+ const node = queue.shift();
465
+ const result = onNode(node);
466
+ if (result) {
467
+ return result;
468
+ }
469
+ queue.push(...node.children);
470
+ }
471
+ return undefined;
472
+ }
473
+ function mapBfs(tree, mapper) {
474
+ const queue = [tree];
475
+ const result = Object.assign(Object.assign({}, mapper(tree)), { children: [] });
476
+ while (queue.length > 0) {
477
+ const node = queue.shift();
478
+ const mappedNode = mapper(node);
479
+ result.children.push(mappedNode);
480
+ queue.push(...mappedNode.children);
481
+ }
482
+ return result;
483
+ }
484
+ export async function turnHandlerResultIntoResponse(result) {
485
+ // if user returns not a response, convert to json
486
+ if (result instanceof Response) {
487
+ return result;
488
+ }
489
+ // if user returns a promise, await it
490
+ if (result instanceof Promise) {
491
+ result = await result;
492
+ }
493
+ // // if user returns a string, convert to json
494
+ // if (typeof result === 'string') {
495
+ // result = new Response(result)
496
+ // }
497
+ // if user returns an object, convert to json
498
+ return new Response(JSON.stringify(result));
499
+ }
500
+ //# sourceMappingURL=spiceflow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spiceflow.js","sourceRoot":"","sources":["../src/spiceflow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=spiceflow.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spiceflow.test.d.ts","sourceRoot":"","sources":["../src/spiceflow.test.ts"],"names":[],"mappings":""}