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,484 @@
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 Spiceflow {
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
+ post(path, handler, hook) {
110
+ this.add({ method: 'POST', path, handler: handler, hook });
111
+ return this;
112
+ }
113
+ get(path, handler, hook) {
114
+ this.add({ method: 'GET', path, handler: handler, hook });
115
+ return this;
116
+ }
117
+ put(path, handler, hook) {
118
+ this.add({ method: 'PUT', path, handler: handler, hook });
119
+ return this;
120
+ }
121
+ patch(path, handler, hook) {
122
+ this.add({ method: 'PATCH', path, handler: handler, hook });
123
+ return this;
124
+ }
125
+ delete(path, handler, hook) {
126
+ this.add({ method: 'DELETE', path, handler: handler, hook });
127
+ return this;
128
+ }
129
+ options(path, handler, hook) {
130
+ this.add({ method: 'OPTIONS', path, handler: handler, hook });
131
+ return this;
132
+ }
133
+ all(path, handler, hook) {
134
+ for (const method of METHODS) {
135
+ this.add({ method, path, handler: handler, hook });
136
+ }
137
+ return this;
138
+ }
139
+ head(path, handler, hook) {
140
+ this.add({ method: 'HEAD', path, handler: handler, hook });
141
+ return this;
142
+ }
143
+ get _scoped() {
144
+ return this.scoped;
145
+ }
146
+ // group is not needed, you can add another prefixed app instead
147
+ // group<
148
+ // const Prefix extends string,
149
+ // const NewSpiceflow extends Spiceflow<any, any, any, any, any, any, any, any>
150
+ // >(
151
+ // prefix: Prefix,
152
+ // run: (
153
+ // group: Spiceflow<
154
+ // `${BasePath}${Prefix}`,
155
+ // Scoped,
156
+ // Singleton,
157
+ // Definitions,
158
+ // Metadata,
159
+ // {},
160
+ // Ephemeral,
161
+ // Volatile
162
+ // >
163
+ // ) => NewSpiceflow
164
+ // ): Spiceflow<
165
+ // BasePath,
166
+ // Scoped,
167
+ // Singleton,
168
+ // Definitions,
169
+ // Metadata,
170
+ // Prettify<Routes & NewSpiceflow['_routes']>,
171
+ // Ephemeral,
172
+ // Volatile
173
+ // > {
174
+ // let thisRouter = this.routers[0]
175
+ // this.routers.push(
176
+ // ...instance.routers.map((r) => ({
177
+ // ...r,
178
+ // prefix: (thisRouter.prefix || '') + r.prefix
179
+ // }))
180
+ // )
181
+ // return this
182
+ // }
183
+ use(instance) {
184
+ const thisRouter = this.routerTree;
185
+ // TODO use scoped logic to add onRequest and onError on all routers if necessary, add them first
186
+ this.routerTree.children.push(mapBfs(instance.routerTree, (r) => {
187
+ return Object.assign(Object.assign({}, r), { prefix: (thisRouter.prefix || '') + r.prefix });
188
+ }));
189
+ return this;
190
+ }
191
+ onError(handler) {
192
+ var _a;
193
+ const router = this.routerTree;
194
+ (_a = router.onErrorHandlers) !== null && _a !== void 0 ? _a : (router.onErrorHandlers = []);
195
+ router.onErrorHandlers.push(handler);
196
+ return this;
197
+ }
198
+ onRequest(handler) {
199
+ var _a;
200
+ const router = this.routerTree;
201
+ (_a = router.onRequestHandlers) !== null && _a !== void 0 ? _a : (router.onRequestHandlers = []);
202
+ router.onRequestHandlers.push(handler);
203
+ return this;
204
+ }
205
+ /**
206
+ * Pass a request through all matching route handles and return a response
207
+ * @param request The `Request`
208
+ * @param platform Platform specific context {@link Platform}
209
+ * @returns The final `Response`
210
+ */
211
+ async handle(request, platform) {
212
+ var _a, _b;
213
+ platform !== null && platform !== void 0 ? platform : (platform = {});
214
+ let u = new URL(request.url);
215
+ let path = u.pathname + u.search;
216
+ const defaultContext = {
217
+ redirect,
218
+ error: null,
219
+ path
220
+ };
221
+ let onErrorHandlers = [];
222
+ try {
223
+ let response;
224
+ // Get all middleware and method specific routes in order
225
+ const route = this.match(request.method, path);
226
+ if (!route) {
227
+ return this.onNoMatch(request, platform);
228
+ }
229
+ onErrorHandlers = this.getRouteAndParents(route.router).flatMap((x) => x.onErrorHandlers);
230
+ const { params, store } = route;
231
+ const onReq = this.getRouteAndParents(route.router).flatMap((x) => x.onRequestHandlers);
232
+ // TODO add content type
233
+ let content = (_a = route === null || route === void 0 ? void 0 : route.hook) === null || _a === void 0 ? void 0 : _a.content;
234
+ let body = await getRequestBody({ request, content });
235
+ let bodySchema = (_b = route === null || route === void 0 ? void 0 : route.hook) === null || _b === void 0 ? void 0 : _b.body;
236
+ if (bodySchema) {
237
+ const validate = ajv.compile(bodySchema);
238
+ const valid = validate(body);
239
+ if (!valid) {
240
+ const error = ajv.errorsText(validate.errors, {
241
+ separator: '\n'
242
+ });
243
+ return new Response(error, {
244
+ status: 400,
245
+ headers: {
246
+ 'content-type': 'text/plain'
247
+ }
248
+ });
249
+ }
250
+ }
251
+ if (onReq.length > 0) {
252
+ for (const handler of onReq) {
253
+ const res = await handler({
254
+ request,
255
+ response,
256
+ store,
257
+ path
258
+ });
259
+ if (res) {
260
+ return await turnHandlerResultIntoResponse(res);
261
+ }
262
+ }
263
+ }
264
+ // console.log(route)
265
+ const res = route.handler(Object.assign(Object.assign({}, defaultContext), { request,
266
+ response, params: params, store,
267
+ body,
268
+ path
269
+ // platform
270
+ }));
271
+ if (isAsyncIterable(res)) {
272
+ return await this.handleStream({
273
+ generator: res,
274
+ request,
275
+ onErrorHandlers
276
+ });
277
+ }
278
+ return await turnHandlerResultIntoResponse(res);
279
+ }
280
+ catch (err) {
281
+ let res = await this.runErrorHandlers({
282
+ onErrorHandlers,
283
+ error: err,
284
+ request
285
+ });
286
+ if (res)
287
+ return res;
288
+ return new Response((err === null || err === void 0 ? void 0 : err.message) || 'Internal Server Error', {
289
+ status: 500
290
+ });
291
+ }
292
+ }
293
+ async runErrorHandlers({ onErrorHandlers = [], error: err, request }) {
294
+ if (onErrorHandlers.length === 0) {
295
+ console.error(`Spiceflow unhandled error:`, err);
296
+ }
297
+ else {
298
+ for (const errHandler of onErrorHandlers) {
299
+ const res = errHandler({ error: err, request });
300
+ if (res instanceof Response) {
301
+ return res;
302
+ }
303
+ }
304
+ }
305
+ }
306
+ getRouteAndParents(currentRouter) {
307
+ const parents = [];
308
+ let current = currentRouter;
309
+ // Perform BFS once to build a parent map
310
+ const parentMap = new Map();
311
+ bfs(this.routerTree, (node) => {
312
+ for (const child of node.children) {
313
+ parentMap.set(child, node);
314
+ }
315
+ });
316
+ // Traverse the parent map to get the parents
317
+ while (current) {
318
+ parents.unshift(current);
319
+ current = parentMap.get(current);
320
+ }
321
+ return parents.reverse().filter((x) => x !== undefined);
322
+ }
323
+ async handleStream({ onErrorHandlers, generator, request }) {
324
+ let init = generator.next();
325
+ if (init instanceof Promise)
326
+ init = await init;
327
+ if (init === null || init === void 0 ? void 0 : init.done) {
328
+ return await turnHandlerResultIntoResponse(init.value);
329
+ }
330
+ // let errorHandlers = this.routerTree.onErrorHandlers
331
+ let self = this;
332
+ return new Response(new ReadableStream({
333
+ async start(controller) {
334
+ var _a, e_1, _b, _c;
335
+ let end = false;
336
+ request === null || request === void 0 ? void 0 : request.signal.addEventListener('abort', () => {
337
+ end = true;
338
+ try {
339
+ controller.close();
340
+ }
341
+ catch (_a) {
342
+ // nothing
343
+ }
344
+ });
345
+ if ((init === null || init === void 0 ? void 0 : init.value) !== undefined && (init === null || init === void 0 ? void 0 : init.value) !== null)
346
+ controller.enqueue(Buffer.from(`event: message\ndata: ${JSON.stringify(init.value)}\n\n`));
347
+ try {
348
+ try {
349
+ 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) {
350
+ _c = generator_1_1.value;
351
+ _d = false;
352
+ const chunk = _c;
353
+ if (end)
354
+ break;
355
+ if (chunk === undefined || chunk === null)
356
+ continue;
357
+ controller.enqueue(Buffer.from(`event: message\ndata: ${JSON.stringify(chunk)}\n\n`));
358
+ }
359
+ }
360
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
361
+ finally {
362
+ try {
363
+ if (!_d && !_a && (_b = generator_1.return)) await _b.call(generator_1);
364
+ }
365
+ finally { if (e_1) throw e_1.error; }
366
+ }
367
+ }
368
+ catch (error) {
369
+ let res = await self.runErrorHandlers({
370
+ onErrorHandlers: onErrorHandlers,
371
+ error,
372
+ request
373
+ });
374
+ controller.enqueue(Buffer.from(`event: error\ndata: ${JSON.stringify(error.message || error.name || 'Error')}\n\n`));
375
+ }
376
+ try {
377
+ controller.close();
378
+ }
379
+ catch (_e) {
380
+ // nothing
381
+ }
382
+ }
383
+ }), {
384
+ // TODO add headers somehow
385
+ headers: {
386
+ // Manually set transfer-encoding for direct response, eg. app.handle, eden
387
+ 'transfer-encoding': 'chunked',
388
+ 'content-type': 'text/event-stream; charset=utf-8'
389
+ // ...set?.headers
390
+ }
391
+ });
392
+ }
393
+ }
394
+ async function getRequestBody({ request, content }) {
395
+ var _a, _b;
396
+ let body;
397
+ if (request.method === 'GET' || request.method === 'HEAD') {
398
+ return;
399
+ }
400
+ 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]);
401
+ if (!contentType) {
402
+ return;
403
+ }
404
+ switch (contentType) {
405
+ case 'application/json':
406
+ body = (await request.json());
407
+ break;
408
+ case 'text/plain':
409
+ body = await request.text();
410
+ break;
411
+ case 'application/x-www-form-urlencoded':
412
+ body = parseQuery.parse(await request.text());
413
+ break;
414
+ case 'application/octet-stream':
415
+ body = await request.arrayBuffer();
416
+ break;
417
+ case 'multipart/form-data':
418
+ body = {};
419
+ const form = await request.formData();
420
+ for (const key of form.keys()) {
421
+ if (body[key])
422
+ continue;
423
+ const value = form.getAll(key);
424
+ if (value.length === 1)
425
+ body[key] = value[0];
426
+ else
427
+ body[key] = value;
428
+ }
429
+ break;
430
+ }
431
+ return body;
432
+ }
433
+ const METHODS = [
434
+ 'ALL',
435
+ 'CONNECT',
436
+ 'DELETE',
437
+ 'GET',
438
+ 'HEAD',
439
+ 'OPTIONS',
440
+ 'PATCH',
441
+ 'POST',
442
+ 'PUT',
443
+ 'TRACE'
444
+ ];
445
+ function bfs(tree, onNode) {
446
+ const queue = [tree];
447
+ while (queue.length > 0) {
448
+ const node = queue.shift();
449
+ const result = onNode(node);
450
+ if (result) {
451
+ return result;
452
+ }
453
+ queue.push(...node.children);
454
+ }
455
+ return undefined;
456
+ }
457
+ function mapBfs(tree, mapper) {
458
+ const queue = [tree];
459
+ const result = Object.assign(Object.assign({}, mapper(tree)), { children: [] });
460
+ while (queue.length > 0) {
461
+ const node = queue.shift();
462
+ const mappedNode = mapper(node);
463
+ result.children.push(mappedNode);
464
+ queue.push(...mappedNode.children);
465
+ }
466
+ return result;
467
+ }
468
+ export async function turnHandlerResultIntoResponse(result) {
469
+ // if user returns not a response, convert to json
470
+ if (result instanceof Response) {
471
+ return result;
472
+ }
473
+ // if user returns a promise, await it
474
+ if (result instanceof Promise) {
475
+ result = await result;
476
+ }
477
+ // // if user returns a string, convert to json
478
+ // if (typeof result === 'string') {
479
+ // result = new Response(result)
480
+ // }
481
+ // if user returns an object, convert to json
482
+ return new Response(JSON.stringify(result));
483
+ }
484
+ //# sourceMappingURL=spiceflow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spiceflow.js","sourceRoot":"","sources":["../src/spiceflow.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,OAAO,UAAU,MAAM,kBAAkB,CAAA;AAEzC,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAExC,OAAO,EAAE,IAAI,IAAI,CAAC,EAAE,CAAA;AAyBpB,6DAA6D;AAC7D,aAAa;AACb,OAAO,cAAc,MAAM,gBAAgB,CAAA;AAE3C,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAGjD,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,CAAA;AAyBrB;;GAEG;AACH,MAAM,OAAO,SAAS;IAoCrB,GAAG,CAAC,EAOH;YAPG,EACH,MAAM,EACN,IAAI,OAKJ,EAJG,IAAI,cAHJ,kBAIH,CADO;QAKP,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAA;QAC9B,uBAAuB;QACvB,+BAA+B;QAC/B,IAAI;QAEJ,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QAC1C,KAAK,CAAC,MAAM,CAAC,qBAAQ,IAAI,CAAE,CAAA;IAC5B,CAAC;IAEO,KAAK,CAAC,MAAc,EAAE,IAAY;QACzC,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,EAAE;YAC9C,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtD,eAAe;gBACf,kEAAkE;gBAClE,IAAI;gBACJ,OAAM;YACP,CAAC;YACD,IAAI,iBAAiB,GAAG,IAAI,CAAA;YAC5B,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBACnB,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;YACpD,CAAC;YACD,uEAAuE;YACvE,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;YACnD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACZ,OAAM;YACP,CAAC;YAED,IAAI,IAAI,GAAwB,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAA;YACtD,IAAI,IAAI,EAAE,CAAC;gBACV,uDAAuD;gBAEvD,MAAM,EAAE,eAAe,EAAE,iBAAiB,EAAE,GAAG,MAAM,CAAA;gBACrD,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;gBACpC,uCACI,IAAI,KACP,MAAM,EACN,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,eAAe;oBACf,iBAAiB;oBACjB,MAAM,IACN;YACF,CAAC;QACF,CAAC,CAAC,CAAA;QAEF,OAAO,MAAM,CAAA;IACd,CAAC;IAED,KAAK,CACJ,IAAU,EACV,KAAY;QAqBZ,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAA;QACnC,OAAO,IAAW,CAAA;IACnB,CAAC;IAED;;;OAGG;IACH,YACC,UAMI,EAAE;;QAuBP,YAAO,GAAW,EAAS,CAAA;QAE3B,WAAM,GAAG;YACR,MAAM,EAAE,EAAc;YACtB,MAAM,EAAE,KAAe;YACvB,SAAS,EAAE,EAAe;YAC1B,WAAW,EAAE,EAAiB;YAC9B,QAAQ,EAAE,EAAc;SACxB,CAAA;QAED,eAAU,GAAG,EAAe,CAAA;QAC5B,cAAS,GAAG,EAAc,CAAA;QAhCzB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;QAE5B,IAAI,CAAC,SAAS;YACb,MAAA,OAAO,CAAC,SAAS,mCAAI,CAAC,GAAG,EAAE,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;QACjE,IAAI,CAAC,UAAU,GAAG;YACjB,MAAM,EAAE,IAAI,cAAc,EAAE;YAC5B,MAAM,EAAE,OAAO,CAAC,QAAQ;YACxB,iBAAiB,EAAE,EAAE;YACrB,eAAe,EAAE,EAAE;YACnB,QAAQ,EAAE,EAAE;YACZ,KAAK,EAAE,EAAE;SACT,CAAA;QAED,sBAAsB;QACtB,kCAAkC;QAClC,0CAA0C;QAC1C,yDAAyD;QACzD,mDAAmD;QACnD,IAAI;IACL,CAAC;IAgBD,IAAI,CAqBH,IAAU,EACV,OAAe,EACf,IAUC;QA4BD,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;QAE1D,OAAO,IAAW,CAAA;IACnB,CAAC;IAED,GAAG,CAsBF,IAAU,EACV,OAAe,EACf,IAUC;QA4BD,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;QACzD,OAAO,IAAW,CAAA;IACnB,CAAC;IAED,GAAG,CAqBF,IAAU,EACV,OAAe,EACf,IAUC;QA4BD,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;QAEzD,OAAO,IAAW,CAAA;IACnB,CAAC;IAED,KAAK,CAqBJ,IAAU,EACV,OAAe,EACf,IAUC;QA4BD,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;QAE3D,OAAO,IAAW,CAAA;IACnB,CAAC;IAED,MAAM,CAqBL,IAAU,EACV,OAAe,EACf,IAUC;QA4BD,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;QAE5D,OAAO,IAAW,CAAA;IACnB,CAAC;IAED,OAAO,CAqBN,IAAU,EACV,OAAe,EACf,IAUC;QA4BD,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;QAE7D,OAAO,IAAW,CAAA;IACnB,CAAC;IAED,GAAG,CAqBF,IAAU,EACV,OAAe,EACf,IAUC;QA4BD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC9B,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;QACnD,CAAC;QAED,OAAO,IAAW,CAAA;IACnB,CAAC;IAED,IAAI,CAqBH,IAAU,EACV,OAAe,EACf,IAUC;QA4BD,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;QAE1D,OAAO,IAAW,CAAA;IACnB,CAAC;IAQD,IAAI,OAAO;QACV,OAAO,IAAI,CAAC,MAAgB,CAAA;IAC7B,CAAC;IAED,gEAAgE;IAChE,SAAS;IACT,gCAAgC;IAChC,gFAAgF;IAChF,KAAK;IACL,mBAAmB;IACnB,UAAU;IACV,sBAAsB;IACtB,6BAA6B;IAC7B,aAAa;IACb,gBAAgB;IAChB,kBAAkB;IAClB,eAAe;IACf,SAAS;IACT,gBAAgB;IAChB,cAAc;IACd,MAAM;IACN,qBAAqB;IACrB,gBAAgB;IAChB,aAAa;IACb,WAAW;IACX,cAAc;IACd,gBAAgB;IAChB,aAAa;IACb,+CAA+C;IAC/C,cAAc;IACd,YAAY;IACZ,MAAM;IACN,oCAAoC;IACpC,sBAAsB;IACtB,sCAAsC;IACtC,WAAW;IACX,kDAAkD;IAClD,QAAQ;IACR,KAAK;IAEL,eAAe;IACf,IAAI;IAEJ,GAAG,CACF,QAAsB;QA2BtB,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;QAClC,iGAAiG;QACjG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAC5B,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE;YACjC,uCACI,CAAC,KACJ,MAAM,EAAE,CAAC,UAAU,CAAC,MAAM,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,IAC5C;QACF,CAAC,CAAC,CACF,CAAA;QACD,OAAO,IAAW,CAAA;IACnB,CAAC;IAED,OAAO,CACN,OAcC;;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAA;QAE9B,MAAA,MAAM,CAAC,eAAe,oCAAtB,MAAM,CAAC,eAAe,GAAK,EAAE,EAAA;QAC7B,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,OAAc,CAAC,CAAA;QAE3C,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,SAAS,CACR,OAgBC;;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAA;QAC9B,MAAA,MAAM,CAAC,iBAAiB,oCAAxB,MAAM,CAAC,iBAAiB,GAAK,EAAE,EAAA;QAC/B,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAc,CAAC,CAAA;QAE7C,OAAO,IAAI,CAAA;IACZ,CAAC;IACD;;;;;OAKG;IACH,KAAK,CAAC,MAAM,CAAC,OAAgB,EAAE,QAAY;;QAC1C,QAAQ,aAAR,QAAQ,cAAR,QAAQ,IAAR,QAAQ,GAAK,EAAO,EAAA;QACpB,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC5B,IAAI,IAAI,GAAG,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAA;QAChC,MAAM,cAAc,GAAG;YACtB,QAAQ;YACR,KAAK,EAAE,IAAI;YACX,IAAI;SACJ,CAAA;QACD,IAAI,eAAe,GAAc,EAAE,CAAA;QACnC,IAAI,CAAC;YACJ,IAAI,QAA8B,CAAA;YAClC,yDAAyD;YAEzD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YAC9C,IAAI,CAAC,KAAK,EAAE,CAAC;gBACZ,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;YACzC,CAAC;YACD,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,CAC9D,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,CACxB,CAAA;YACD,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;YAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,CAC1D,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAC1B,CAAA;YACD,wBAAwB;YAExB,IAAI,OAAO,GAAG,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,0CAAE,OAAO,CAAA;YAClC,IAAI,IAAI,GAAG,MAAM,cAAc,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAA;YACrD,IAAI,UAAU,GAAY,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,0CAAE,IAAI,CAAA;YAC3C,IAAI,UAAU,EAAE,CAAC;gBAChB,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;gBACxC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;gBAC5B,IAAI,CAAC,KAAK,EAAE,CAAC;oBACZ,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE;wBAC7C,SAAS,EAAE,IAAI;qBACf,CAAC,CAAA;oBAEF,OAAO,IAAI,QAAQ,CAAC,KAAK,EAAE;wBAC1B,MAAM,EAAE,GAAG;wBACX,OAAO,EAAE;4BACR,cAAc,EAAE,YAAY;yBAC5B;qBACD,CAAC,CAAA;gBACH,CAAC;YACF,CAAC;YACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE,CAAC;oBAC7B,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC;wBACzB,OAAO;wBACP,QAAQ;wBACR,KAAK;wBACL,IAAI;qBAC6B,CAAC,CAAA;oBACnC,IAAI,GAAG,EAAE,CAAC;wBACT,OAAO,MAAM,6BAA6B,CAAC,GAAG,CAAC,CAAA;oBAChD,CAAC;gBACF,CAAC;YACF,CAAC;YAED,qBAAqB;YAErB,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,gCACtB,cAAc,KACjB,OAAO;gBACP,QAAQ,EACR,MAAM,EAAE,MAAa,EACrB,KAAK;gBACL,IAAI;gBACJ,IAAI;gBAEJ,WAAW;eACyB,CAAC,CAAA;YACtC,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC1B,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC;oBAC9B,SAAS,EAAE,GAAG;oBACd,OAAO;oBACP,eAAe;iBACf,CAAC,CAAA;YACH,CAAC;YAED,OAAO,MAAM,6BAA6B,CAAC,GAAG,CAAC,CAAA;QAChD,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YACnB,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC;gBACrC,eAAe;gBACf,KAAK,EAAE,GAAG;gBACV,OAAO;aACP,CAAC,CAAA;YACF,IAAI,GAAG;gBAAE,OAAO,GAAG,CAAA;YACnB,OAAO,IAAI,QAAQ,CAAC,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,KAAI,uBAAuB,EAAE;gBAC5D,MAAM,EAAE,GAAG;aACX,CAAC,CAAA;QACH,CAAC;IACF,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,EAC9B,eAAe,GAAG,EAAe,EACjC,KAAK,EAAE,GAAG,EACV,OAAO,EACP;QACA,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAA;QACjD,CAAC;aAAM,CAAC;YACP,KAAK,MAAM,UAAU,IAAI,eAAe,EAAE,CAAC;gBAC1C,MAAM,GAAG,GAAG,UAAU,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAA;gBAC/C,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;oBAC7B,OAAO,GAAG,CAAA;gBACX,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC;IAEO,kBAAkB,CAAC,aAA0B;QACpD,MAAM,OAAO,GAAiB,EAAE,CAAA;QAChC,IAAI,OAAO,GAAG,aAAa,CAAA;QAE3B,yCAAyC;QACzC,MAAM,SAAS,GAAG,IAAI,GAAG,EAA0B,CAAA;QACnD,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE;YAC7B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACnC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;YAC3B,CAAC;QACF,CAAC,CAAC,CAAA;QAEF,6CAA6C;QAC7C,OAAO,OAAO,EAAE,CAAC;YAChB,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;YACxB,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QACjC,CAAC;QAED,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAA;IACxD,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,EAClB,eAAe,EACf,SAAS,EACT,OAAO,EAKP;QACA,IAAI,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,CAAA;QAC3B,IAAI,IAAI,YAAY,OAAO;YAAE,IAAI,GAAG,MAAM,IAAI,CAAA;QAE9C,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,EAAE,CAAC;YAChB,OAAO,MAAM,6BAA6B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACvD,CAAC;QACD,sDAAsD;QACtD,IAAI,IAAI,GAAG,IAAI,CAAA;QACf,OAAO,IAAI,QAAQ,CAClB,IAAI,cAAc,CAAC;YAClB,KAAK,CAAC,KAAK,CAAC,UAAU;;gBACrB,IAAI,GAAG,GAAG,KAAK,CAAA;gBAEf,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;oBAC9C,GAAG,GAAG,IAAI,CAAA;oBAEV,IAAI,CAAC;wBACJ,UAAU,CAAC,KAAK,EAAE,CAAA;oBACnB,CAAC;oBAAC,WAAM,CAAC;wBACR,UAAU;oBACX,CAAC;gBACF,CAAC,CAAC,CAAA;gBAEF,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,MAAK,SAAS,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,MAAK,IAAI;oBACpD,UAAU,CAAC,OAAO,CACjB,MAAM,CAAC,IAAI,CACV,yBAAyB,IAAI,CAAC,SAAS,CACtC,IAAI,CAAC,KAAK,CACV,MAAM,CACP,CACD,CAAA;gBAEF,IAAI,CAAC;;wBACJ,KAA0B,eAAA,cAAA,cAAA,SAAS,CAAA,eAAA,qFAAE,CAAC;4BAAZ,yBAAS;4BAAT,WAAS;4BAAxB,MAAM,KAAK,KAAA,CAAA;4BACrB,IAAI,GAAG;gCAAE,MAAK;4BACd,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;gCAAE,SAAQ;4BAEnD,UAAU,CAAC,OAAO,CACjB,MAAM,CAAC,IAAI,CACV,yBAAyB,IAAI,CAAC,SAAS,CACtC,KAAK,CACL,MAAM,CACP,CACD,CAAA;wBACF,CAAC;;;;;;;;;gBACF,CAAC;gBAAC,OAAO,KAAU,EAAE,CAAC;oBACrB,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC;wBACrC,eAAe,EAAE,eAAe;wBAChC,KAAK;wBACL,OAAO;qBACP,CAAC,CAAA;oBACF,UAAU,CAAC,OAAO,CACjB,MAAM,CAAC,IAAI,CACV,uBAAuB,IAAI,CAAC,SAAS,CACpC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,IAAI,OAAO,CACtC,MAAM,CACP,CACD,CAAA;gBACF,CAAC;gBAED,IAAI,CAAC;oBACJ,UAAU,CAAC,KAAK,EAAE,CAAA;gBACnB,CAAC;gBAAC,WAAM,CAAC;oBACR,UAAU;gBACX,CAAC;YACF,CAAC;SACD,CAAC,EACF;YACC,2BAA2B;YAC3B,OAAO,EAAE;gBACR,2EAA2E;gBAC3E,mBAAmB,EAAE,SAAS;gBAC9B,cAAc,EAAE,kCAAkC;gBAClD,kBAAkB;aAClB;SACD,CACD,CAAA;IACF,CAAC;CACD;AAED,KAAK,UAAU,cAAc,CAAC,EAC7B,OAAO,EACP,OAAO,EAIP;;IACA,IAAI,IAA8C,CAAA;IAClD,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC3D,OAAM;IACP,CAAC;IAED,MAAM,WAAW,GAChB,OAAO,KAAI,MAAA,MAAA,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,0CAAE,KAAK,CAAC,GAAG,CAAC,0CAAG,CAAC,CAAC,CAAA,CAAA;IAEhE,IAAI,CAAC,WAAW,EAAE,CAAC;QAClB,OAAM;IACP,CAAC;IAED,QAAQ,WAAW,EAAE,CAAC;QACrB,KAAK,kBAAkB;YACtB,IAAI,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAQ,CAAA;YACpC,MAAK;QAEN,KAAK,YAAY;YAChB,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAA;YAC3B,MAAK;QAEN,KAAK,mCAAmC;YACvC,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAQ,CAAA;YACpD,MAAK;QAEN,KAAK,0BAA0B;YAC9B,IAAI,GAAG,MAAM,OAAO,CAAC,WAAW,EAAE,CAAA;YAClC,MAAK;QAEN,KAAK,qBAAqB;YACzB,IAAI,GAAG,EAAE,CAAA;YAET,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAA;YACrC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC/B,IAAI,IAAI,CAAC,GAAG,CAAC;oBAAE,SAAQ;gBAEvB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;gBAC9B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;oBAAE,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;;oBACvC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;YACvB,CAAC;YAED,MAAK;IACP,CAAC;IAED,OAAO,IAAI,CAAA;AACZ,CAAC;AAED,MAAM,OAAO,GAAG;IACf,KAAK;IACL,SAAS;IACT,QAAQ;IACR,KAAK;IACL,MAAM;IACN,SAAS;IACT,OAAO;IACP,MAAM;IACN,KAAK;IACL,OAAO;CACE,CAAA;AAKV,SAAS,GAAG,CACX,IAAgB,EAChB,MAAkD;IAElD,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,CAAA;IACpB,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,EAAG,CAAA;QAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;QAC3B,IAAI,MAAM,EAAE,CAAC;YACZ,OAAO,MAAM,CAAA;QACd,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC7B,CAAC;IACD,OAAO,SAAS,CAAA;AACjB,CAAC;AAED,SAAS,MAAM,CACd,IAAgB,EAChB,MAAwC;IAExC,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,CAAA;IACpB,MAAM,MAAM,mCAAoB,MAAM,CAAC,IAAI,CAAC,KAAE,QAAQ,EAAE,EAAE,GAAE,CAAA;IAC5D,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,EAAG,CAAA;QAC3B,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;QAC/B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAChC,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAA;IACnC,CAAC;IACD,OAAO,MAAM,CAAA;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,6BAA6B,CAAC,MAAW;IAC9D,kDAAkD;IAClD,IAAI,MAAM,YAAY,QAAQ,EAAE,CAAC;QAChC,OAAO,MAAM,CAAA;IACd,CAAC;IACD,sCAAsC;IACtC,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;QAC/B,MAAM,GAAG,MAAM,MAAM,CAAA;IACtB,CAAC;IACD,+CAA+C;IAC/C,oCAAoC;IACpC,iCAAiC;IACjC,IAAI;IACJ,6CAA6C;IAE7C,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAA;AAC5C,CAAC"}
@@ -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":""}