@mastra/hono 0.0.0-new-button-export-20251219133013 → 0.0.0-remove-ai-peer-dep-from-evals-20260105220639

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,20 +1,31 @@
1
1
  'use strict';
2
2
 
3
+ var error = require('@mastra/server/handlers/error');
3
4
  var serverAdapter = require('@mastra/server/server-adapter');
4
5
  var fetchToNode = require('fetch-to-node');
5
6
  var auth = require('@mastra/server/auth');
6
7
 
7
8
  // src/index.ts
8
9
 
9
- // ../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/http-exception.js
10
+ // ../../node_modules/.pnpm/hono@4.11.3/node_modules/hono/dist/http-exception.js
10
11
  var HTTPException = class extends Error {
11
12
  res;
12
13
  status;
14
+ /**
15
+ * Creates an instance of `HTTPException`.
16
+ * @param status - HTTP status code for the exception. Defaults to 500.
17
+ * @param options - Additional options for the exception.
18
+ */
13
19
  constructor(status = 500, options) {
14
20
  super(options?.message, { cause: options?.cause });
15
21
  this.res = options?.res;
16
22
  this.status = status;
17
23
  }
24
+ /**
25
+ * Returns the response object associated with the exception.
26
+ * If a response object is not provided, a new response is created with the error message and status code.
27
+ * @returns The response object.
28
+ */
18
29
  getResponse() {
19
30
  if (this.res) {
20
31
  const newResponse = new Response(this.res.body, {
@@ -29,7 +40,7 @@ var HTTPException = class extends Error {
29
40
  }
30
41
  };
31
42
 
32
- // ../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/middleware/body-limit/index.js
43
+ // ../../node_modules/.pnpm/hono@4.11.3/node_modules/hono/dist/middleware/body-limit/index.js
33
44
  var ERROR_MESSAGE = "Payload Too Large";
34
45
  var BodyLimitError = class extends Error {
35
46
  constructor(message) {
@@ -86,14 +97,20 @@ var bodyLimit = (options) => {
86
97
  };
87
98
  };
88
99
 
89
- // ../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/utils/stream.js
100
+ // ../../node_modules/.pnpm/hono@4.11.3/node_modules/hono/dist/utils/stream.js
90
101
  var StreamingApi = class {
91
102
  writer;
92
103
  encoder;
93
104
  writable;
94
105
  abortSubscribers = [];
95
106
  responseReadable;
107
+ /**
108
+ * Whether the stream has been aborted.
109
+ */
96
110
  aborted = false;
111
+ /**
112
+ * Whether the stream has been closed normally.
113
+ */
97
114
  closed = false;
98
115
  constructor(writable, _readable) {
99
116
  this.writable = writable;
@@ -145,6 +162,10 @@ var StreamingApi = class {
145
162
  onAbort(listener) {
146
163
  this.abortSubscribers.push(listener);
147
164
  }
165
+ /**
166
+ * Abort the stream.
167
+ * You can call this method when stream is aborted by external event.
168
+ */
148
169
  abort() {
149
170
  if (!this.aborted) {
150
171
  this.aborted = true;
@@ -153,7 +174,7 @@ var StreamingApi = class {
153
174
  }
154
175
  };
155
176
 
156
- // ../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/helper/streaming/utils.js
177
+ // ../../node_modules/.pnpm/hono@4.11.3/node_modules/hono/dist/helper/streaming/utils.js
157
178
  var isOldBunVersion = () => {
158
179
  const version = typeof Bun !== "undefined" ? Bun.version : void 0;
159
180
  if (version === void 0) {
@@ -164,7 +185,7 @@ var isOldBunVersion = () => {
164
185
  return result;
165
186
  };
166
187
 
167
- // ../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/helper/streaming/stream.js
188
+ // ../../node_modules/.pnpm/hono@4.11.3/node_modules/hono/dist/helper/streaming/stream.js
168
189
  var contextStash = /* @__PURE__ */ new WeakMap();
169
190
  var stream = (c, cb, onError) => {
170
191
  const { readable, writable } = new TransformStream();
@@ -192,6 +213,213 @@ var stream = (c, cb, onError) => {
192
213
  })();
193
214
  return c.newResponse(stream2.responseReadable);
194
215
  };
216
+
217
+ // ../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.js
218
+ var util;
219
+ (function(util2) {
220
+ util2.assertEqual = (_) => {
221
+ };
222
+ function assertIs(_arg) {
223
+ }
224
+ util2.assertIs = assertIs;
225
+ function assertNever(_x) {
226
+ throw new Error();
227
+ }
228
+ util2.assertNever = assertNever;
229
+ util2.arrayToEnum = (items) => {
230
+ const obj = {};
231
+ for (const item of items) {
232
+ obj[item] = item;
233
+ }
234
+ return obj;
235
+ };
236
+ util2.getValidEnumValues = (obj) => {
237
+ const validKeys = util2.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== "number");
238
+ const filtered = {};
239
+ for (const k of validKeys) {
240
+ filtered[k] = obj[k];
241
+ }
242
+ return util2.objectValues(filtered);
243
+ };
244
+ util2.objectValues = (obj) => {
245
+ return util2.objectKeys(obj).map(function(e) {
246
+ return obj[e];
247
+ });
248
+ };
249
+ util2.objectKeys = typeof Object.keys === "function" ? (obj) => Object.keys(obj) : (object) => {
250
+ const keys = [];
251
+ for (const key in object) {
252
+ if (Object.prototype.hasOwnProperty.call(object, key)) {
253
+ keys.push(key);
254
+ }
255
+ }
256
+ return keys;
257
+ };
258
+ util2.find = (arr, checker) => {
259
+ for (const item of arr) {
260
+ if (checker(item))
261
+ return item;
262
+ }
263
+ return void 0;
264
+ };
265
+ util2.isInteger = typeof Number.isInteger === "function" ? (val) => Number.isInteger(val) : (val) => typeof val === "number" && Number.isFinite(val) && Math.floor(val) === val;
266
+ function joinValues(array, separator = " | ") {
267
+ return array.map((val) => typeof val === "string" ? `'${val}'` : val).join(separator);
268
+ }
269
+ util2.joinValues = joinValues;
270
+ util2.jsonStringifyReplacer = (_, value) => {
271
+ if (typeof value === "bigint") {
272
+ return value.toString();
273
+ }
274
+ return value;
275
+ };
276
+ })(util || (util = {}));
277
+ var objectUtil;
278
+ (function(objectUtil2) {
279
+ objectUtil2.mergeShapes = (first, second) => {
280
+ return {
281
+ ...first,
282
+ ...second
283
+ // second overwrites first
284
+ };
285
+ };
286
+ })(objectUtil || (objectUtil = {}));
287
+ util.arrayToEnum([
288
+ "string",
289
+ "nan",
290
+ "number",
291
+ "integer",
292
+ "float",
293
+ "boolean",
294
+ "date",
295
+ "bigint",
296
+ "symbol",
297
+ "function",
298
+ "undefined",
299
+ "null",
300
+ "array",
301
+ "object",
302
+ "unknown",
303
+ "promise",
304
+ "void",
305
+ "never",
306
+ "map",
307
+ "set"
308
+ ]);
309
+
310
+ // ../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/ZodError.js
311
+ util.arrayToEnum([
312
+ "invalid_type",
313
+ "invalid_literal",
314
+ "custom",
315
+ "invalid_union",
316
+ "invalid_union_discriminator",
317
+ "invalid_enum_value",
318
+ "unrecognized_keys",
319
+ "invalid_arguments",
320
+ "invalid_return_type",
321
+ "invalid_date",
322
+ "invalid_string",
323
+ "too_small",
324
+ "too_big",
325
+ "invalid_intersection_types",
326
+ "not_multiple_of",
327
+ "not_finite"
328
+ ]);
329
+ var ZodError = class _ZodError extends Error {
330
+ get errors() {
331
+ return this.issues;
332
+ }
333
+ constructor(issues) {
334
+ super();
335
+ this.issues = [];
336
+ this.addIssue = (sub) => {
337
+ this.issues = [...this.issues, sub];
338
+ };
339
+ this.addIssues = (subs = []) => {
340
+ this.issues = [...this.issues, ...subs];
341
+ };
342
+ const actualProto = new.target.prototype;
343
+ if (Object.setPrototypeOf) {
344
+ Object.setPrototypeOf(this, actualProto);
345
+ } else {
346
+ this.__proto__ = actualProto;
347
+ }
348
+ this.name = "ZodError";
349
+ this.issues = issues;
350
+ }
351
+ format(_mapper) {
352
+ const mapper = _mapper || function(issue) {
353
+ return issue.message;
354
+ };
355
+ const fieldErrors = { _errors: [] };
356
+ const processError = (error) => {
357
+ for (const issue of error.issues) {
358
+ if (issue.code === "invalid_union") {
359
+ issue.unionErrors.map(processError);
360
+ } else if (issue.code === "invalid_return_type") {
361
+ processError(issue.returnTypeError);
362
+ } else if (issue.code === "invalid_arguments") {
363
+ processError(issue.argumentsError);
364
+ } else if (issue.path.length === 0) {
365
+ fieldErrors._errors.push(mapper(issue));
366
+ } else {
367
+ let curr = fieldErrors;
368
+ let i = 0;
369
+ while (i < issue.path.length) {
370
+ const el = issue.path[i];
371
+ const terminal = i === issue.path.length - 1;
372
+ if (!terminal) {
373
+ curr[el] = curr[el] || { _errors: [] };
374
+ } else {
375
+ curr[el] = curr[el] || { _errors: [] };
376
+ curr[el]._errors.push(mapper(issue));
377
+ }
378
+ curr = curr[el];
379
+ i++;
380
+ }
381
+ }
382
+ }
383
+ };
384
+ processError(this);
385
+ return fieldErrors;
386
+ }
387
+ static assert(value) {
388
+ if (!(value instanceof _ZodError)) {
389
+ throw new Error(`Not a ZodError: ${value}`);
390
+ }
391
+ }
392
+ toString() {
393
+ return this.message;
394
+ }
395
+ get message() {
396
+ return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);
397
+ }
398
+ get isEmpty() {
399
+ return this.issues.length === 0;
400
+ }
401
+ flatten(mapper = (issue) => issue.message) {
402
+ const fieldErrors = {};
403
+ const formErrors = [];
404
+ for (const sub of this.issues) {
405
+ if (sub.path.length > 0) {
406
+ const firstEl = sub.path[0];
407
+ fieldErrors[firstEl] = fieldErrors[firstEl] || [];
408
+ fieldErrors[firstEl].push(mapper(sub));
409
+ } else {
410
+ formErrors.push(mapper(sub));
411
+ }
412
+ }
413
+ return { formErrors, fieldErrors };
414
+ }
415
+ get formErrors() {
416
+ return this.flatten();
417
+ }
418
+ };
419
+ ZodError.create = (issues) => {
420
+ const error = new ZodError(issues);
421
+ return error;
422
+ };
195
423
  var authenticationMiddleware = async (c, next) => {
196
424
  const mastra = c.get("mastra");
197
425
  const authConfig = mastra.getServer()?.auth;
@@ -387,13 +615,48 @@ var MastraServer = class extends serverAdapter.MastraServer {
387
615
  const queryParams = request.query();
388
616
  let body;
389
617
  if (route.method === "POST" || route.method === "PUT" || route.method === "PATCH") {
390
- try {
391
- body = await request.json();
392
- } catch {
618
+ const contentType = request.header("content-type") || "";
619
+ if (contentType.includes("multipart/form-data")) {
620
+ try {
621
+ const formData = await request.formData();
622
+ body = await this.parseFormData(formData);
623
+ } catch (error) {
624
+ console.error("Failed to parse multipart form data:", error);
625
+ if (error instanceof Error && error.message.toLowerCase().includes("size")) {
626
+ throw error;
627
+ }
628
+ }
629
+ } else {
630
+ try {
631
+ body = await request.json();
632
+ } catch (error) {
633
+ console.error("Failed to parse JSON body:", error);
634
+ }
393
635
  }
394
636
  }
395
637
  return { urlParams, queryParams, body };
396
638
  }
639
+ /**
640
+ * Parse FormData into a plain object, converting File objects to Buffers.
641
+ */
642
+ async parseFormData(formData) {
643
+ const result = {};
644
+ for (const [key, value] of formData.entries()) {
645
+ if (value instanceof File) {
646
+ const arrayBuffer = await value.arrayBuffer();
647
+ result[key] = Buffer.from(arrayBuffer);
648
+ } else if (typeof value === "string") {
649
+ try {
650
+ result[key] = JSON.parse(value);
651
+ } catch {
652
+ result[key] = value;
653
+ }
654
+ } else {
655
+ result[key] = value;
656
+ }
657
+ }
658
+ return result;
659
+ }
397
660
  async sendResponse(route, response, result) {
398
661
  if (route.responseType === "json") {
399
662
  return response.json(result, 200);
@@ -463,12 +726,15 @@ var MastraServer = class extends serverAdapter.MastraServer {
463
726
  if (params.queryParams) {
464
727
  try {
465
728
  params.queryParams = await this.parseQueryParams(route, params.queryParams);
466
- } catch (error) {
467
- console.error("Error parsing query params", error);
729
+ } catch (error$1) {
730
+ console.error("Error parsing query params", error$1);
731
+ if (error$1 instanceof ZodError) {
732
+ return c.json(error.formatZodError(error$1, "query parameters"), 400);
733
+ }
468
734
  return c.json(
469
735
  {
470
736
  error: "Invalid query parameters",
471
- details: error instanceof Error ? error.message : "Unknown error"
737
+ issues: [{ field: "unknown", message: error$1 instanceof Error ? error$1.message : "Unknown error" }]
472
738
  },
473
739
  400
474
740
  );
@@ -477,12 +743,15 @@ var MastraServer = class extends serverAdapter.MastraServer {
477
743
  if (params.body) {
478
744
  try {
479
745
  params.body = await this.parseBody(route, params.body);
480
- } catch (error) {
481
- console.error("Error parsing body:", error instanceof Error ? error.message : String(error));
746
+ } catch (error$1) {
747
+ console.error("Error parsing body:", error$1 instanceof Error ? error$1.message : String(error$1));
748
+ if (error$1 instanceof ZodError) {
749
+ return c.json(error.formatZodError(error$1, "request body"), 400);
750
+ }
482
751
  return c.json(
483
752
  {
484
753
  error: "Invalid request body",
485
- details: error instanceof Error ? error.message : "Unknown error"
754
+ issues: [{ field: "unknown", message: error$1 instanceof Error ? error$1.message : "Unknown error" }]
486
755
  },
487
756
  400
488
757
  );
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/http-exception.js","../../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/middleware/body-limit/index.js","../../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/utils/stream.js","../../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/helper/streaming/utils.js","../../../node_modules/.pnpm/hono@4.10.6/node_modules/hono/dist/helper/streaming/stream.js","../src/auth-middleware.ts","../src/index.ts"],"names":["isDevPlaygroundRequest","isProtectedPath","canAccessPublicly","checkRules","defaultAuthConfig","MastraServerBase","stream","redactStreamChunk","toReqRes","toFetchResponse"],"mappings":"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","file":"index.cjs","sourcesContent":["// src/http-exception.ts\nvar HTTPException = class extends Error {\n res;\n status;\n constructor(status = 500, options) {\n super(options?.message, { cause: options?.cause });\n this.res = options?.res;\n this.status = status;\n }\n getResponse() {\n if (this.res) {\n const newResponse = new Response(this.res.body, {\n status: this.status,\n headers: this.res.headers\n });\n return newResponse;\n }\n return new Response(this.message, {\n status: this.status\n });\n }\n};\nexport {\n HTTPException\n};\n","// src/middleware/body-limit/index.ts\nimport { HTTPException } from \"../../http-exception.js\";\nvar ERROR_MESSAGE = \"Payload Too Large\";\nvar BodyLimitError = class extends Error {\n constructor(message) {\n super(message);\n this.name = \"BodyLimitError\";\n }\n};\nvar bodyLimit = (options) => {\n const onError = options.onError || (() => {\n const res = new Response(ERROR_MESSAGE, {\n status: 413\n });\n throw new HTTPException(413, { res });\n });\n const maxSize = options.maxSize;\n return async function bodyLimit2(c, next) {\n if (!c.req.raw.body) {\n return next();\n }\n const hasTransferEncoding = c.req.raw.headers.has(\"transfer-encoding\");\n const hasContentLength = c.req.raw.headers.has(\"content-length\");\n if (hasTransferEncoding && hasContentLength) {\n }\n if (hasContentLength && !hasTransferEncoding) {\n const contentLength = parseInt(c.req.raw.headers.get(\"content-length\") || \"0\", 10);\n return contentLength > maxSize ? onError(c) : next();\n }\n let size = 0;\n const rawReader = c.req.raw.body.getReader();\n const reader = new ReadableStream({\n async start(controller) {\n try {\n for (; ; ) {\n const { done, value } = await rawReader.read();\n if (done) {\n break;\n }\n size += value.length;\n if (size > maxSize) {\n controller.error(new BodyLimitError(ERROR_MESSAGE));\n break;\n }\n controller.enqueue(value);\n }\n } finally {\n controller.close();\n }\n }\n });\n const requestInit = { body: reader, duplex: \"half\" };\n c.req.raw = new Request(c.req.raw, requestInit);\n await next();\n if (c.error instanceof BodyLimitError) {\n c.res = await onError(c);\n }\n };\n};\nexport {\n bodyLimit\n};\n","// src/utils/stream.ts\nvar StreamingApi = class {\n writer;\n encoder;\n writable;\n abortSubscribers = [];\n responseReadable;\n aborted = false;\n closed = false;\n constructor(writable, _readable) {\n this.writable = writable;\n this.writer = writable.getWriter();\n this.encoder = new TextEncoder();\n const reader = _readable.getReader();\n this.abortSubscribers.push(async () => {\n await reader.cancel();\n });\n this.responseReadable = new ReadableStream({\n async pull(controller) {\n const { done, value } = await reader.read();\n done ? controller.close() : controller.enqueue(value);\n },\n cancel: () => {\n this.abort();\n }\n });\n }\n async write(input) {\n try {\n if (typeof input === \"string\") {\n input = this.encoder.encode(input);\n }\n await this.writer.write(input);\n } catch {\n }\n return this;\n }\n async writeln(input) {\n await this.write(input + \"\\n\");\n return this;\n }\n sleep(ms) {\n return new Promise((res) => setTimeout(res, ms));\n }\n async close() {\n try {\n await this.writer.close();\n } catch {\n }\n this.closed = true;\n }\n async pipe(body) {\n this.writer.releaseLock();\n await body.pipeTo(this.writable, { preventClose: true });\n this.writer = this.writable.getWriter();\n }\n onAbort(listener) {\n this.abortSubscribers.push(listener);\n }\n abort() {\n if (!this.aborted) {\n this.aborted = true;\n this.abortSubscribers.forEach((subscriber) => subscriber());\n }\n }\n};\nexport {\n StreamingApi\n};\n","// src/helper/streaming/utils.ts\nvar isOldBunVersion = () => {\n const version = typeof Bun !== \"undefined\" ? Bun.version : void 0;\n if (version === void 0) {\n return false;\n }\n const result = version.startsWith(\"1.1\") || version.startsWith(\"1.0\") || version.startsWith(\"0.\");\n isOldBunVersion = () => result;\n return result;\n};\nexport {\n isOldBunVersion\n};\n","// src/helper/streaming/stream.ts\nimport { StreamingApi } from \"../../utils/stream.js\";\nimport { isOldBunVersion } from \"./utils.js\";\nvar contextStash = /* @__PURE__ */ new WeakMap();\nvar stream = (c, cb, onError) => {\n const { readable, writable } = new TransformStream();\n const stream2 = new StreamingApi(writable, readable);\n if (isOldBunVersion()) {\n c.req.raw.signal.addEventListener(\"abort\", () => {\n if (!stream2.closed) {\n stream2.abort();\n }\n });\n }\n contextStash.set(stream2.responseReadable, c);\n (async () => {\n try {\n await cb(stream2);\n } catch (e) {\n if (e === void 0) {\n } else if (e instanceof Error && onError) {\n await onError(e, stream2);\n } else {\n console.error(e);\n }\n } finally {\n stream2.close();\n }\n })();\n return c.newResponse(stream2.responseReadable);\n};\nexport {\n stream\n};\n","import type { ContextWithMastra } from '@mastra/core/server';\nimport {\n canAccessPublicly,\n checkRules,\n defaultAuthConfig,\n isDevPlaygroundRequest,\n isProtectedPath,\n} from '@mastra/server/auth';\nimport type { Next } from 'hono';\n\nexport const authenticationMiddleware = async (c: ContextWithMastra, next: Next) => {\n const mastra = c.get('mastra');\n const authConfig = mastra.getServer()?.auth;\n const customRouteAuthConfig = c.get('customRouteAuthConfig');\n\n if (!authConfig) {\n // No auth config, skip authentication\n return next();\n }\n\n const path = c.req.path;\n const method = c.req.method;\n const getHeader = (name: string) => c.req.header(name);\n\n if (isDevPlaygroundRequest(path, method, getHeader, authConfig)) {\n // Skip authentication for dev playground requests\n return next();\n }\n\n if (!isProtectedPath(c.req.path, c.req.method, authConfig, customRouteAuthConfig)) {\n return next();\n }\n\n // Skip authentication for public routes\n if (canAccessPublicly(c.req.path, c.req.method, authConfig)) {\n return next();\n }\n\n // Get token from header or query\n const authHeader = c.req.header('Authorization');\n let token: string | null = authHeader ? authHeader.replace('Bearer ', '') : null;\n\n if (!token && c.req.query('apiKey')) {\n token = c.req.query('apiKey') || null;\n }\n\n // Handle missing token\n if (!token) {\n return c.json({ error: 'Authentication required' }, 401);\n }\n\n try {\n // Verify token and get user data\n let user: unknown;\n\n // Client provided verify function\n if (typeof authConfig.authenticateToken === 'function') {\n user = await authConfig.authenticateToken(token, c.req);\n } else {\n throw new Error('No token verification method configured');\n }\n\n if (!user) {\n return c.json({ error: 'Invalid or expired token' }, 401);\n }\n\n // Store user in context\n c.get('requestContext').set('user', user);\n\n return next();\n } catch (err) {\n console.error(err);\n return c.json({ error: 'Invalid or expired token' }, 401);\n }\n};\n\nexport const authorizationMiddleware = async (c: ContextWithMastra, next: Next) => {\n const mastra = c.get('mastra');\n const authConfig = mastra.getServer()?.auth;\n const customRouteAuthConfig = c.get('customRouteAuthConfig');\n\n if (!authConfig) {\n // No auth config, skip authorization\n return next();\n }\n\n const path = c.req.path;\n const method = c.req.method;\n const getHeader = (name: string) => c.req.header(name);\n\n if (isDevPlaygroundRequest(path, method, getHeader, authConfig)) {\n // Skip authorization for dev playground requests\n return next();\n }\n\n if (!isProtectedPath(c.req.path, c.req.method, authConfig, customRouteAuthConfig)) {\n return next();\n }\n\n // Skip for public routes\n if (canAccessPublicly(path, method, authConfig)) {\n return next();\n }\n\n const user = c.get('requestContext').get('user');\n\n if ('authorizeUser' in authConfig && typeof authConfig.authorizeUser === 'function') {\n try {\n const isAuthorized = await authConfig.authorizeUser(user, c.req);\n\n if (isAuthorized) {\n return next();\n }\n\n return c.json({ error: 'Access denied' }, 403);\n } catch (err) {\n console.error(err);\n return c.json({ error: 'Authorization error' }, 500);\n }\n }\n\n // Client-provided authorization function\n if ('authorize' in authConfig && typeof authConfig.authorize === 'function') {\n try {\n const isAuthorized = await authConfig.authorize(path, method, user, c);\n\n if (isAuthorized) {\n return next();\n }\n\n return c.json({ error: 'Access denied' }, 403);\n } catch (err) {\n console.error(err);\n return c.json({ error: 'Authorization error' }, 500);\n }\n }\n\n // Custom rule-based authorization\n if ('rules' in authConfig && authConfig.rules && authConfig.rules.length > 0) {\n const isAuthorized = await checkRules(authConfig.rules, path, method, user);\n\n if (isAuthorized) {\n return next();\n }\n\n return c.json({ error: 'Access denied' }, 403);\n }\n\n // Default rule-based authorization\n if (defaultAuthConfig.rules && defaultAuthConfig.rules.length > 0) {\n const isAuthorized = await checkRules(defaultAuthConfig.rules, path, method, user);\n\n if (isAuthorized) {\n return next();\n }\n }\n\n return c.json({ error: 'Access denied' }, 403);\n};\n","import type { ToolsInput } from '@mastra/core/agent';\nimport type { Mastra } from '@mastra/core/mastra';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport type { InMemoryTaskStore } from '@mastra/server/a2a/store';\nimport type { MCPHttpTransportResult, MCPSseTransportResult } from '@mastra/server/handlers/mcp';\nimport { MastraServer as MastraServerBase, redactStreamChunk } from '@mastra/server/server-adapter';\nimport type { ServerRoute } from '@mastra/server/server-adapter';\nimport { toReqRes, toFetchResponse } from 'fetch-to-node';\nimport type { Context, HonoRequest, MiddlewareHandler } from 'hono';\nimport { bodyLimit } from 'hono/body-limit';\nimport { stream } from 'hono/streaming';\n\nimport { authenticationMiddleware, authorizationMiddleware } from './auth-middleware';\n\n// Export type definitions for Hono app configuration\nexport type HonoVariables = {\n mastra: Mastra;\n requestContext: RequestContext;\n tools: ToolsInput;\n abortSignal: AbortSignal;\n taskStore: InMemoryTaskStore;\n customRouteAuthConfig?: Map<string, boolean>;\n};\n\nexport type HonoBindings = {};\n\n/**\n * Generic handler function type compatible across Hono versions.\n * Uses a minimal signature that all Hono middleware handlers satisfy.\n */\ntype HonoRouteHandler = (...args: any[]) => any;\n\n/**\n * Minimal interface representing what MastraServer needs from a Hono app.\n * This allows any Hono app instance to be passed without strict generic matching,\n * avoiding the version mismatch issues that occur with Hono's strict generic types.\n */\nexport interface HonoApp {\n use(path: string, ...handlers: HonoRouteHandler[]): unknown;\n get(path: string, ...handlers: HonoRouteHandler[]): unknown;\n post(path: string, ...handlers: HonoRouteHandler[]): unknown;\n put(path: string, ...handlers: HonoRouteHandler[]): unknown;\n delete(path: string, ...handlers: HonoRouteHandler[]): unknown;\n patch(path: string, ...handlers: HonoRouteHandler[]): unknown;\n all(path: string, ...handlers: HonoRouteHandler[]): unknown;\n}\n\nexport class MastraServer extends MastraServerBase<HonoApp, HonoRequest, Context> {\n createContextMiddleware(): MiddlewareHandler {\n return async (c, next) => {\n // Parse request context from request body and add to context\n\n let bodyRequestContext: Record<string, any> | undefined;\n let paramsRequestContext: Record<string, any> | undefined;\n\n // Parse request context from request body (POST/PUT)\n if (c.req.method === 'POST' || c.req.method === 'PUT') {\n const contentType = c.req.header('content-type');\n if (contentType?.includes('application/json')) {\n try {\n const clonedReq = c.req.raw.clone();\n const body = (await clonedReq.json()) as { requestContext?: Record<string, any> };\n if (body.requestContext) {\n bodyRequestContext = body.requestContext;\n }\n } catch {\n // Body parsing failed, continue without body\n }\n }\n }\n\n // Parse request context from query params (GET)\n if (c.req.method === 'GET') {\n try {\n const encodedRequestContext = c.req.query('requestContext');\n if (encodedRequestContext) {\n // Try JSON first\n try {\n paramsRequestContext = JSON.parse(encodedRequestContext);\n } catch {\n // Fallback to base64(JSON)\n try {\n const json = Buffer.from(encodedRequestContext, 'base64').toString('utf-8');\n paramsRequestContext = JSON.parse(json);\n } catch {\n // ignore if still invalid\n }\n }\n }\n } catch {\n // ignore query parsing errors\n }\n }\n\n const requestContext = this.mergeRequestContext({ paramsRequestContext, bodyRequestContext });\n\n // Add relevant contexts to hono context\n c.set('requestContext', requestContext);\n c.set('mastra', this.mastra);\n c.set('tools', this.tools || {});\n c.set('taskStore', this.taskStore);\n c.set('abortSignal', c.req.raw.signal);\n c.set('customRouteAuthConfig', this.customRouteAuthConfig);\n\n return next();\n };\n }\n async stream(route: ServerRoute, res: Context, result: { fullStream: ReadableStream }): Promise<any> {\n res.header('Content-Type', 'text/plain');\n res.header('Transfer-Encoding', 'chunked');\n\n const streamFormat = route.streamFormat || 'stream';\n\n return stream(\n res,\n async stream => {\n const readableStream = result instanceof ReadableStream ? result : result.fullStream;\n const reader = readableStream.getReader();\n\n stream.onAbort(() => {\n void reader.cancel('request aborted');\n });\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n\n if (value) {\n // Optionally redact sensitive data (system prompts, tool definitions, API keys) before sending to the client\n const shouldRedact = this.streamOptions?.redact ?? true;\n const outputValue = shouldRedact ? redactStreamChunk(value) : value;\n if (streamFormat === 'sse') {\n await stream.write(`data: ${JSON.stringify(outputValue)}\\n\\n`);\n } else {\n await stream.write(JSON.stringify(outputValue) + '\\x1E');\n }\n }\n }\n\n await stream.write('data: [DONE]\\n\\n');\n } catch (error) {\n console.error(error);\n } finally {\n await stream.close();\n }\n },\n async err => {\n console.error(err);\n },\n );\n }\n\n async getParams(\n route: ServerRoute,\n request: HonoRequest,\n ): Promise<{ urlParams: Record<string, string>; queryParams: Record<string, string>; body: unknown }> {\n const urlParams = request.param();\n const queryParams = request.query();\n let body: unknown;\n if (route.method === 'POST' || route.method === 'PUT' || route.method === 'PATCH') {\n try {\n body = await request.json();\n } catch {}\n }\n return { urlParams, queryParams: queryParams as Record<string, string>, body };\n }\n\n async sendResponse(route: ServerRoute, response: Context, result: unknown): Promise<any> {\n if (route.responseType === 'json') {\n return response.json(result as any, 200);\n } else if (route.responseType === 'stream') {\n return this.stream(route, response, result as { fullStream: ReadableStream });\n } else if (route.responseType === 'datastream-response') {\n const fetchResponse = result as globalThis.Response;\n return fetchResponse;\n } else if (route.responseType === 'mcp-http') {\n // MCP Streamable HTTP transport\n const { server, httpPath } = result as MCPHttpTransportResult;\n const { req, res } = toReqRes(response.req.raw);\n\n try {\n await server.startHTTP({\n url: new URL(response.req.url),\n httpPath,\n req,\n res,\n });\n return await toFetchResponse(res);\n } catch {\n if (!res.headersSent) {\n res.writeHead(500, { 'Content-Type': 'application/json' });\n res.end(\n JSON.stringify({\n jsonrpc: '2.0',\n error: { code: -32603, message: 'Internal server error' },\n id: null,\n }),\n );\n return await toFetchResponse(res);\n }\n return await toFetchResponse(res);\n }\n } else if (route.responseType === 'mcp-sse') {\n // MCP SSE transport\n const { server, ssePath, messagePath } = result as MCPSseTransportResult;\n\n try {\n return await server.startHonoSSE({\n url: new URL(response.req.url),\n ssePath,\n messagePath,\n context: response,\n });\n } catch {\n return response.json({ error: 'Error handling MCP SSE request' }, 500);\n }\n } else {\n return response.status(500);\n }\n }\n\n async registerRoute(app: HonoApp, route: ServerRoute, { prefix }: { prefix?: string }): Promise<void> {\n // Determine if body limits should be applied\n const shouldApplyBodyLimit = this.bodyLimitOptions && ['POST', 'PUT', 'PATCH'].includes(route.method.toUpperCase());\n\n // Get the body size limit for this route (route-specific or default)\n const maxSize = route.maxBodySize ?? this.bodyLimitOptions?.maxSize;\n\n // Build middleware array\n const middlewares: MiddlewareHandler[] = [];\n\n if (shouldApplyBodyLimit && maxSize && this.bodyLimitOptions) {\n middlewares.push(\n bodyLimit({\n maxSize,\n onError: this.bodyLimitOptions.onError as any,\n }),\n );\n }\n\n app[route.method.toLowerCase() as 'get' | 'post' | 'put' | 'delete' | 'patch' | 'all'](\n `${prefix}${route.path}`,\n ...middlewares,\n async (c: Context) => {\n const params = await this.getParams(route, c.req);\n\n if (params.queryParams) {\n try {\n params.queryParams = await this.parseQueryParams(route, params.queryParams as Record<string, string>);\n } catch (error) {\n console.error('Error parsing query params', error);\n // Zod validation errors should return 400 Bad Request, not 500\n return c.json(\n {\n error: 'Invalid query parameters',\n details: error instanceof Error ? error.message : 'Unknown error',\n },\n 400,\n );\n }\n }\n\n if (params.body) {\n try {\n params.body = await this.parseBody(route, params.body);\n } catch (error) {\n console.error('Error parsing body:', error instanceof Error ? error.message : String(error));\n // Zod validation errors should return 400 Bad Request, not 500\n return c.json(\n {\n error: 'Invalid request body',\n details: error instanceof Error ? error.message : 'Unknown error',\n },\n 400,\n );\n }\n }\n\n const handlerParams = {\n ...params.urlParams,\n ...params.queryParams,\n ...(typeof params.body === 'object' ? params.body : {}),\n requestContext: c.get('requestContext'),\n mastra: this.mastra,\n tools: c.get('tools'),\n taskStore: c.get('taskStore'),\n abortSignal: c.get('abortSignal'),\n };\n\n try {\n const result = await route.handler(handlerParams);\n return this.sendResponse(route, c, result);\n } catch (error) {\n console.error('Error calling handler', error);\n // Check if it's an HTTPException or MastraError with a status code\n if (error && typeof error === 'object') {\n // Check for direct status property (HTTPException)\n if ('status' in error) {\n const status = (error as any).status;\n return c.json({ error: error instanceof Error ? error.message : 'Unknown error' }, status);\n }\n // Check for MastraError with status in details\n if ('details' in error && error.details && typeof error.details === 'object' && 'status' in error.details) {\n const status = (error.details as any).status;\n return c.json({ error: error instanceof Error ? error.message : 'Unknown error' }, status);\n }\n }\n return c.json({ error: error instanceof Error ? error.message : 'Unknown error' }, 500);\n }\n },\n );\n }\n\n registerContextMiddleware(): void {\n this.app.use('*', this.createContextMiddleware());\n }\n\n registerAuthMiddleware(): void {\n const authConfig = this.mastra.getServer()?.auth;\n if (!authConfig) {\n // No auth config, skip registration\n return;\n }\n\n this.app.use('*', authenticationMiddleware);\n this.app.use('*', authorizationMiddleware);\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../node_modules/.pnpm/hono@4.11.3/node_modules/hono/dist/http-exception.js","../../../node_modules/.pnpm/hono@4.11.3/node_modules/hono/dist/middleware/body-limit/index.js","../../../node_modules/.pnpm/hono@4.11.3/node_modules/hono/dist/utils/stream.js","../../../node_modules/.pnpm/hono@4.11.3/node_modules/hono/dist/helper/streaming/utils.js","../../../node_modules/.pnpm/hono@4.11.3/node_modules/hono/dist/helper/streaming/stream.js","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.js","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/ZodError.js","../src/auth-middleware.ts","../src/index.ts"],"names":["util","objectUtil","isDevPlaygroundRequest","isProtectedPath","canAccessPublicly","checkRules","defaultAuthConfig","MastraServerBase","stream","redactStreamChunk","toReqRes","toFetchResponse","error","formatZodError"],"mappings":";;;;;;;;;;AACA,IAAI,aAAA,GAAgB,cAAc,KAAA,CAAM;AAAA,EACtC,GAAA;AAAA,EACA,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,WAAA,CAAY,MAAA,GAAS,GAAA,EAAK,OAAA,EAAS;AACjC,IAAA,KAAA,CAAM,SAAS,OAAA,EAAS,EAAE,KAAA,EAAO,OAAA,EAAS,OAAO,CAAA;AACjD,IAAA,IAAA,CAAK,MAAM,OAAA,EAAS,GAAA;AACpB,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,WAAA,GAAc;AACZ,IAAA,IAAI,KAAK,GAAA,EAAK;AACZ,MAAA,MAAM,WAAA,GAAc,IAAI,QAAA,CAAS,IAAA,CAAK,IAAI,IAAA,EAAM;AAAA,QAC9C,QAAQ,IAAA,CAAK,MAAA;AAAA,QACb,OAAA,EAAS,KAAK,GAAA,CAAI;AAAA,OACnB,CAAA;AACD,MAAA,OAAO,WAAA;AAAA,IACT;AACA,IAAA,OAAO,IAAI,QAAA,CAAS,IAAA,CAAK,OAAA,EAAS;AAAA,MAChC,QAAQ,IAAA,CAAK;AAAA,KACd,CAAA;AAAA,EACH;AACF,CAAA;;;AC7BA,IAAI,aAAA,GAAgB,mBAAA;AACpB,IAAI,cAAA,GAAiB,cAAc,KAAA,CAAM;AAAA,EACvC,YAAY,OAAA,EAAS;AACnB,IAAA,KAAA,CAAM,OAAO,CAAA;AACb,IAAA,IAAA,CAAK,IAAA,GAAO,gBAAA;AAAA,EACd;AACF,CAAA;AACA,IAAI,SAAA,GAAY,CAAC,OAAA,KAAY;AAC3B,EAAA,MAAM,OAAA,GAAU,OAAA,CAAQ,OAAA,KAAY,MAAM;AACxC,IAAA,MAAM,GAAA,GAAM,IAAI,QAAA,CAAS,aAAA,EAAe;AAAA,MACtC,MAAA,EAAQ;AAAA,KACT,CAAA;AACD,IAAA,MAAM,IAAI,aAAA,CAAc,GAAA,EAAK,EAAE,KAAK,CAAA;AAAA,EACtC,CAAA,CAAA;AACA,EAAA,MAAM,UAAU,OAAA,CAAQ,OAAA;AACxB,EAAA,OAAO,eAAe,UAAA,CAAW,CAAA,EAAG,IAAA,EAAM;AACxC,IAAA,IAAI,CAAC,CAAA,CAAE,GAAA,CAAI,GAAA,CAAI,IAAA,EAAM;AACnB,MAAA,OAAO,IAAA,EAAK;AAAA,IACd;AACA,IAAA,MAAM,sBAAsB,CAAA,CAAE,GAAA,CAAI,GAAA,CAAI,OAAA,CAAQ,IAAI,mBAAmB,CAAA;AACrE,IAAA,MAAM,mBAAmB,CAAA,CAAE,GAAA,CAAI,GAAA,CAAI,OAAA,CAAQ,IAAI,gBAAgB,CAAA;AAG/D,IAAA,IAAI,gBAAA,IAAoB,CAAC,mBAAA,EAAqB;AAC5C,MAAA,MAAM,aAAA,GAAgB,QAAA,CAAS,CAAA,CAAE,GAAA,CAAI,GAAA,CAAI,QAAQ,GAAA,CAAI,gBAAgB,CAAA,IAAK,GAAA,EAAK,EAAE,CAAA;AACjF,MAAA,OAAO,aAAA,GAAgB,OAAA,GAAU,OAAA,CAAQ,CAAC,IAAI,IAAA,EAAK;AAAA,IACrD;AACA,IAAA,IAAI,IAAA,GAAO,CAAA;AACX,IAAA,MAAM,SAAA,GAAY,CAAA,CAAE,GAAA,CAAI,GAAA,CAAI,KAAK,SAAA,EAAU;AAC3C,IAAA,MAAM,MAAA,GAAS,IAAI,cAAA,CAAe;AAAA,MAChC,MAAM,MAAM,UAAA,EAAY;AACtB,QAAA,IAAI;AACF,UAAA,WAAW;AACT,YAAA,MAAM,EAAE,IAAA,EAAM,KAAA,EAAM,GAAI,MAAM,UAAU,IAAA,EAAK;AAC7C,YAAA,IAAI,IAAA,EAAM;AACR,cAAA;AAAA,YACF;AACA,YAAA,IAAA,IAAQ,KAAA,CAAM,MAAA;AACd,YAAA,IAAI,OAAO,OAAA,EAAS;AAClB,cAAA,UAAA,CAAW,KAAA,CAAM,IAAI,cAAA,CAAe,aAAa,CAAC,CAAA;AAClD,cAAA;AAAA,YACF;AACA,YAAA,UAAA,CAAW,QAAQ,KAAK,CAAA;AAAA,UAC1B;AAAA,QACF,CAAA,SAAE;AACA,UAAA,UAAA,CAAW,KAAA,EAAM;AAAA,QACnB;AAAA,MACF;AAAA,KACD,CAAA;AACD,IAAA,MAAM,WAAA,GAAc,EAAE,IAAA,EAAM,MAAA,EAAQ,QAAQ,MAAA,EAAO;AACnD,IAAA,CAAA,CAAE,IAAI,GAAA,GAAM,IAAI,QAAQ,CAAA,CAAE,GAAA,CAAI,KAAK,WAAW,CAAA;AAC9C,IAAA,MAAM,IAAA,EAAK;AACX,IAAA,IAAI,CAAA,CAAE,iBAAiB,cAAA,EAAgB;AACrC,MAAA,CAAA,CAAE,GAAA,GAAM,MAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,IACzB;AAAA,EACF,CAAA;AACF,CAAA;;;ACzDA,IAAI,eAAe,MAAM;AAAA,EACvB,MAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,mBAAmB,EAAC;AAAA,EACpB,gBAAA;AAAA;AAAA;AAAA;AAAA,EAIA,OAAA,GAAU,KAAA;AAAA;AAAA;AAAA;AAAA,EAIV,MAAA,GAAS,KAAA;AAAA,EACT,WAAA,CAAY,UAAU,SAAA,EAAW;AAC/B,IAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAChB,IAAA,IAAA,CAAK,MAAA,GAAS,SAAS,SAAA,EAAU;AACjC,IAAA,IAAA,CAAK,OAAA,GAAU,IAAI,WAAA,EAAY;AAC/B,IAAA,MAAM,MAAA,GAAS,UAAU,SAAA,EAAU;AACnC,IAAA,IAAA,CAAK,gBAAA,CAAiB,KAAK,YAAY;AACrC,MAAA,MAAM,OAAO,MAAA,EAAO;AAAA,IACtB,CAAC,CAAA;AACD,IAAA,IAAA,CAAK,gBAAA,GAAmB,IAAI,cAAA,CAAe;AAAA,MACzC,MAAM,KAAK,UAAA,EAAY;AACrB,QAAA,MAAM,EAAE,IAAA,EAAM,KAAA,EAAM,GAAI,MAAM,OAAO,IAAA,EAAK;AAC1C,QAAA,IAAA,GAAO,UAAA,CAAW,KAAA,EAAM,GAAI,UAAA,CAAW,QAAQ,KAAK,CAAA;AAAA,MACtD,CAAA;AAAA,MACA,QAAQ,MAAM;AACZ,QAAA,IAAA,CAAK,KAAA,EAAM;AAAA,MACb;AAAA,KACD,CAAA;AAAA,EACH;AAAA,EACA,MAAM,MAAM,KAAA,EAAO;AACjB,IAAA,IAAI;AACF,MAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,QAAA,KAAA,GAAQ,IAAA,CAAK,OAAA,CAAQ,MAAA,CAAO,KAAK,CAAA;AAAA,MACnC;AACA,MAAA,MAAM,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,KAAK,CAAA;AAAA,IAC/B,CAAA,CAAA,MAAQ;AAAA,IACR;AACA,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EACA,MAAM,QAAQ,KAAA,EAAO;AACnB,IAAA,MAAM,IAAA,CAAK,KAAA,CAAM,KAAA,GAAQ,IAAI,CAAA;AAC7B,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EACA,MAAM,EAAA,EAAI;AACR,IAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,QAAQ,UAAA,CAAW,GAAA,EAAK,EAAE,CAAC,CAAA;AAAA,EACjD;AAAA,EACA,MAAM,KAAA,GAAQ;AACZ,IAAA,IAAI;AACF,MAAA,MAAM,IAAA,CAAK,OAAO,KAAA,EAAM;AAAA,IAC1B,CAAA,CAAA,MAAQ;AAAA,IACR;AACA,IAAA,IAAA,CAAK,MAAA,GAAS,IAAA;AAAA,EAChB;AAAA,EACA,MAAM,KAAK,IAAA,EAAM;AACf,IAAA,IAAA,CAAK,OAAO,WAAA,EAAY;AACxB,IAAA,MAAM,KAAK,MAAA,CAAO,IAAA,CAAK,UAAU,EAAE,YAAA,EAAc,MAAM,CAAA;AACvD,IAAA,IAAA,CAAK,MAAA,GAAS,IAAA,CAAK,QAAA,CAAS,SAAA,EAAU;AAAA,EACxC;AAAA,EACA,QAAQ,QAAA,EAAU;AAChB,IAAA,IAAA,CAAK,gBAAA,CAAiB,KAAK,QAAQ,CAAA;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,KAAA,GAAQ;AACN,IAAA,IAAI,CAAC,KAAK,OAAA,EAAS;AACjB,MAAA,IAAA,CAAK,OAAA,GAAU,IAAA;AACf,MAAA,IAAA,CAAK,gBAAA,CAAiB,OAAA,CAAQ,CAAC,UAAA,KAAe,YAAY,CAAA;AAAA,IAC5D;AAAA,EACF;AACF,CAAA;;;AC1EA,IAAI,kBAAkB,MAAM;AAC1B,EAAA,MAAM,OAAA,GAAU,OAAO,GAAA,KAAQ,WAAA,GAAc,IAAI,OAAA,GAAU,MAAA;AAC3D,EAAA,IAAI,YAAY,MAAA,EAAQ;AACtB,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,UAAA,CAAW,KAAK,CAAA,IAAK,OAAA,CAAQ,UAAA,CAAW,KAAK,CAAA,IAAK,OAAA,CAAQ,UAAA,CAAW,IAAI,CAAA;AAChG,EAAA,eAAA,GAAkB,MAAM,MAAA;AACxB,EAAA,OAAO,MAAA;AACT,CAAA;;;ACNA,IAAI,YAAA,uBAAmC,OAAA,EAAQ;AAC/C,IAAI,MAAA,GAAS,CAAC,CAAA,EAAG,EAAA,EAAI,OAAA,KAAY;AAC/B,EAAA,MAAM,EAAE,QAAA,EAAU,QAAA,EAAS,GAAI,IAAI,eAAA,EAAgB;AACnD,EAAA,MAAM,OAAA,GAAU,IAAI,YAAA,CAAa,QAAA,EAAU,QAAQ,CAAA;AACnD,EAAA,IAAI,iBAAgB,EAAG;AACrB,IAAA,CAAA,CAAE,GAAA,CAAI,GAAA,CAAI,MAAA,CAAO,gBAAA,CAAiB,SAAS,MAAM;AAC/C,MAAA,IAAI,CAAC,QAAQ,MAAA,EAAQ;AACnB,QAAA,OAAA,CAAQ,KAAA,EAAM;AAAA,MAChB;AAAA,IACF,CAAC,CAAA;AAAA,EACH;AACA,EAAA,YAAA,CAAa,GAAA,CAAI,OAAA,CAAQ,gBAAA,EAAkB,CAAC,CAAA;AAC5C,EAAA,CAAC,YAAY;AACX,IAAA,IAAI;AACF,MAAA,MAAM,GAAG,OAAO,CAAA;AAAA,IAClB,SAAS,CAAA,EAAG;AACV,MAAA,IAAI,MAAM,MAAA,EAAQ,CAClB,MAAA,IAAW,CAAA,YAAa,KAAA,IAAS,OAAA,EAAS;AACxC,QAAA,MAAM,OAAA,CAAQ,GAAG,OAAO,CAAA;AAAA,MAC1B,CAAA,MAAO;AACL,QAAA,OAAA,CAAQ,MAAM,CAAC,CAAA;AAAA,MACjB;AAAA,IACF,CAAA,SAAE;AACA,MAAA,OAAA,CAAQ,KAAA,EAAM;AAAA,IAChB;AAAA,EACF,CAAA,GAAG;AACH,EAAA,OAAO,CAAA,CAAE,WAAA,CAAY,OAAA,CAAQ,gBAAgB,CAAA;AAC/C,CAAA;;;AC9BO,IAAI,IAAA;AAAA,CACV,SAAUA,KAAAA,EAAM;AACb,EAAAA,KAAAA,CAAK,WAAA,GAAc,CAAC,CAAA,KAAM;AAAA,EAAE,CAAA;AAC5B,EAAA,SAAS,SAAS,IAAA,EAAM;AAAA,EAAE;AAC1B,EAAAA,MAAK,QAAA,GAAW,QAAA;AAChB,EAAA,SAAS,YAAY,EAAA,EAAI;AACrB,IAAA,MAAM,IAAI,KAAA,EAAM;AAAA,EACpB;AACA,EAAAA,MAAK,WAAA,GAAc,WAAA;AACnB,EAAAA,KAAAA,CAAK,WAAA,GAAc,CAAC,KAAA,KAAU;AAC1B,IAAA,MAAM,MAAM,EAAC;AACb,IAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACtB,MAAA,GAAA,CAAI,IAAI,CAAA,GAAI,IAAA;AAAA,IAChB;AACA,IAAA,OAAO,GAAA;AAAA,EACX,CAAA;AACA,EAAAA,KAAAA,CAAK,kBAAA,GAAqB,CAAC,GAAA,KAAQ;AAC/B,IAAA,MAAM,SAAA,GAAYA,KAAAA,CAAK,UAAA,CAAW,GAAG,EAAE,MAAA,CAAO,CAAC,CAAA,KAAM,OAAO,GAAA,CAAI,GAAA,CAAI,CAAC,CAAC,MAAM,QAAQ,CAAA;AACpF,IAAA,MAAM,WAAW,EAAC;AAClB,IAAA,KAAA,MAAW,KAAK,SAAA,EAAW;AACvB,MAAA,QAAA,CAAS,CAAC,CAAA,GAAI,GAAA,CAAI,CAAC,CAAA;AAAA,IACvB;AACA,IAAA,OAAOA,KAAAA,CAAK,aAAa,QAAQ,CAAA;AAAA,EACrC,CAAA;AACA,EAAAA,KAAAA,CAAK,YAAA,GAAe,CAAC,GAAA,KAAQ;AACzB,IAAA,OAAOA,MAAK,UAAA,CAAW,GAAG,CAAA,CAAE,GAAA,CAAI,SAAU,CAAA,EAAG;AACzC,MAAA,OAAO,IAAI,CAAC,CAAA;AAAA,IAChB,CAAC,CAAA;AAAA,EACL,CAAA;AACA,EAAAA,KAAAA,CAAK,UAAA,GAAa,OAAO,MAAA,CAAO,IAAA,KAAS,UAAA,GACnC,CAAC,GAAA,KAAQ,MAAA,CAAO,IAAA,CAAK,GAAG,CAAA,GACxB,CAAC,MAAA,KAAW;AACV,IAAA,MAAM,OAAO,EAAC;AACd,IAAA,KAAA,MAAW,OAAO,MAAA,EAAQ;AACtB,MAAA,IAAI,OAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAK,MAAA,EAAQ,GAAG,CAAA,EAAG;AACnD,QAAA,IAAA,CAAK,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACJ;AACA,IAAA,OAAO,IAAA;AAAA,EACX,CAAA;AACJ,EAAAA,KAAAA,CAAK,IAAA,GAAO,CAAC,GAAA,EAAK,OAAA,KAAY;AAC1B,IAAA,KAAA,MAAW,QAAQ,GAAA,EAAK;AACpB,MAAA,IAAI,QAAQ,IAAI,CAAA;AACZ,QAAA,OAAO,IAAA;AAAA,IACf;AACA,IAAA,OAAO,MAAA;AAAA,EACX,CAAA;AACA,EAAAA,KAAAA,CAAK,SAAA,GAAY,OAAO,MAAA,CAAO,SAAA,KAAc,aACvC,CAAC,GAAA,KAAQ,MAAA,CAAO,SAAA,CAAU,GAAG,CAAA,GAC7B,CAAC,GAAA,KAAQ,OAAO,GAAA,KAAQ,QAAA,IAAY,MAAA,CAAO,QAAA,CAAS,GAAG,CAAA,IAAK,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA,KAAM,GAAA;AACtF,EAAA,SAAS,UAAA,CAAW,KAAA,EAAO,SAAA,GAAY,KAAA,EAAO;AAC1C,IAAA,OAAO,KAAA,CAAM,GAAA,CAAI,CAAC,GAAA,KAAS,OAAO,GAAA,KAAQ,QAAA,GAAW,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,CAAA,GAAM,GAAI,CAAA,CAAE,KAAK,SAAS,CAAA;AAAA,EAC1F;AACA,EAAAA,MAAK,UAAA,GAAa,UAAA;AAClB,EAAAA,KAAAA,CAAK,qBAAA,GAAwB,CAAC,CAAA,EAAG,KAAA,KAAU;AACvC,IAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC3B,MAAA,OAAO,MAAM,QAAA,EAAS;AAAA,IAC1B;AACA,IAAA,OAAO,KAAA;AAAA,EACX,CAAA;AACJ,CAAA,EAAG,IAAA,KAAS,IAAA,GAAO,EAAC,CAAE,CAAA;AACf,IAAI,UAAA;AAAA,CACV,SAAUC,WAAAA,EAAY;AACnB,EAAAA,WAAAA,CAAW,WAAA,GAAc,CAAC,KAAA,EAAO,MAAA,KAAW;AACxC,IAAA,OAAO;AAAA,MACH,GAAG,KAAA;AAAA,MACH,GAAG;AAAA;AAAA,KACP;AAAA,EACJ,CAAA;AACJ,CAAA,EAAG,UAAA,KAAe,UAAA,GAAa,EAAC,CAAE,CAAA;AACL,KAAK,WAAA,CAAY;AAAA,EAC1C,QAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA,WAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA;AACJ,CAAC;;;AC1F2B,KAAK,WAAA,CAAY;AAAA,EACzC,cAAA;AAAA,EACA,iBAAA;AAAA,EACA,QAAA;AAAA,EACA,eAAA;AAAA,EACA,6BAAA;AAAA,EACA,oBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,qBAAA;AAAA,EACA,cAAA;AAAA,EACA,gBAAA;AAAA,EACA,WAAA;AAAA,EACA,SAAA;AAAA,EACA,4BAAA;AAAA,EACA,iBAAA;AAAA,EACA;AACJ,CAAC;AAKM,IAAM,QAAA,GAAN,MAAM,SAAA,SAAiB,KAAA,CAAM;AAAA,EAChC,IAAI,MAAA,GAAS;AACT,IAAA,OAAO,IAAA,CAAK,MAAA;AAAA,EAChB;AAAA,EACA,YAAY,MAAA,EAAQ;AAChB,IAAA,KAAA,EAAM;AACN,IAAA,IAAA,CAAK,SAAS,EAAC;AACf,IAAA,IAAA,CAAK,QAAA,GAAW,CAAC,GAAA,KAAQ;AACrB,MAAA,IAAA,CAAK,MAAA,GAAS,CAAC,GAAG,IAAA,CAAK,QAAQ,GAAG,CAAA;AAAA,IACtC,CAAA;AACA,IAAA,IAAA,CAAK,SAAA,GAAY,CAAC,IAAA,GAAO,EAAC,KAAM;AAC5B,MAAA,IAAA,CAAK,SAAS,CAAC,GAAG,IAAA,CAAK,MAAA,EAAQ,GAAG,IAAI,CAAA;AAAA,IAC1C,CAAA;AACA,IAAA,MAAM,cAAc,GAAA,CAAA,MAAA,CAAW,SAAA;AAC/B,IAAA,IAAI,OAAO,cAAA,EAAgB;AAEvB,MAAA,MAAA,CAAO,cAAA,CAAe,MAAM,WAAW,CAAA;AAAA,IAC3C,CAAA,MACK;AACD,MAAA,IAAA,CAAK,SAAA,GAAY,WAAA;AAAA,IACrB;AACA,IAAA,IAAA,CAAK,IAAA,GAAO,UAAA;AACZ,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AAAA,EAClB;AAAA,EACA,OAAO,OAAA,EAAS;AACZ,IAAA,MAAM,MAAA,GAAS,OAAA,IACX,SAAU,KAAA,EAAO;AACb,MAAA,OAAO,KAAA,CAAM,OAAA;AAAA,IACjB,CAAA;AACJ,IAAA,MAAM,WAAA,GAAc,EAAE,OAAA,EAAS,EAAC,EAAE;AAClC,IAAA,MAAM,YAAA,GAAe,CAAC,KAAA,KAAU;AAC5B,MAAA,KAAA,MAAW,KAAA,IAAS,MAAM,MAAA,EAAQ;AAC9B,QAAA,IAAI,KAAA,CAAM,SAAS,eAAA,EAAiB;AAChC,UAAA,KAAA,CAAM,WAAA,CAAY,IAAI,YAAY,CAAA;AAAA,QACtC,CAAA,MAAA,IACS,KAAA,CAAM,IAAA,KAAS,qBAAA,EAAuB;AAC3C,UAAA,YAAA,CAAa,MAAM,eAAe,CAAA;AAAA,QACtC,CAAA,MAAA,IACS,KAAA,CAAM,IAAA,KAAS,mBAAA,EAAqB;AACzC,UAAA,YAAA,CAAa,MAAM,cAAc,CAAA;AAAA,QACrC,CAAA,MAAA,IACS,KAAA,CAAM,IAAA,CAAK,MAAA,KAAW,CAAA,EAAG;AAC9B,UAAA,WAAA,CAAY,OAAA,CAAQ,IAAA,CAAK,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,QAC1C,CAAA,MACK;AACD,UAAA,IAAI,IAAA,GAAO,WAAA;AACX,UAAA,IAAI,CAAA,GAAI,CAAA;AACR,UAAA,OAAO,CAAA,GAAI,KAAA,CAAM,IAAA,CAAK,MAAA,EAAQ;AAC1B,YAAA,MAAM,EAAA,GAAK,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA;AACvB,YAAA,MAAM,QAAA,GAAW,CAAA,KAAM,KAAA,CAAM,IAAA,CAAK,MAAA,GAAS,CAAA;AAC3C,YAAA,IAAI,CAAC,QAAA,EAAU;AACX,cAAA,IAAA,CAAK,EAAE,IAAI,IAAA,CAAK,EAAE,KAAK,EAAE,OAAA,EAAS,EAAC,EAAE;AAAA,YAQzC,CAAA,MACK;AACD,cAAA,IAAA,CAAK,EAAE,IAAI,IAAA,CAAK,EAAE,KAAK,EAAE,OAAA,EAAS,EAAC,EAAE;AACrC,cAAA,IAAA,CAAK,EAAE,CAAA,CAAE,OAAA,CAAQ,IAAA,CAAK,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,YACvC;AACA,YAAA,IAAA,GAAO,KAAK,EAAE,CAAA;AACd,YAAA,CAAA,EAAA;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ,CAAA;AACA,IAAA,YAAA,CAAa,IAAI,CAAA;AACjB,IAAA,OAAO,WAAA;AAAA,EACX;AAAA,EACA,OAAO,OAAO,KAAA,EAAO;AACjB,IAAA,IAAI,EAAE,iBAAiB,SAAA,CAAA,EAAW;AAC9B,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,gBAAA,EAAmB,KAAK,CAAA,CAAE,CAAA;AAAA,IAC9C;AAAA,EACJ;AAAA,EACA,QAAA,GAAW;AACP,IAAA,OAAO,IAAA,CAAK,OAAA;AAAA,EAChB;AAAA,EACA,IAAI,OAAA,GAAU;AACV,IAAA,OAAO,KAAK,SAAA,CAAU,IAAA,CAAK,MAAA,EAAQ,IAAA,CAAK,uBAAuB,CAAC,CAAA;AAAA,EACpE;AAAA,EACA,IAAI,OAAA,GAAU;AACV,IAAA,OAAO,IAAA,CAAK,OAAO,MAAA,KAAW,CAAA;AAAA,EAClC;AAAA,EACA,OAAA,CAAQ,MAAA,GAAS,CAAC,KAAA,KAAU,MAAM,OAAA,EAAS;AACvC,IAAA,MAAM,cAAc,EAAC;AACrB,IAAA,MAAM,aAAa,EAAC;AACpB,IAAA,KAAA,MAAW,GAAA,IAAO,KAAK,MAAA,EAAQ;AAC3B,MAAA,IAAI,GAAA,CAAI,IAAA,CAAK,MAAA,GAAS,CAAA,EAAG;AACrB,QAAA,MAAM,OAAA,GAAU,GAAA,CAAI,IAAA,CAAK,CAAC,CAAA;AAC1B,QAAA,WAAA,CAAY,OAAO,CAAA,GAAI,WAAA,CAAY,OAAO,KAAK,EAAC;AAChD,QAAA,WAAA,CAAY,OAAO,CAAA,CAAE,IAAA,CAAK,MAAA,CAAO,GAAG,CAAC,CAAA;AAAA,MACzC,CAAA,MACK;AACD,QAAA,UAAA,CAAW,IAAA,CAAK,MAAA,CAAO,GAAG,CAAC,CAAA;AAAA,MAC/B;AAAA,IACJ;AACA,IAAA,OAAO,EAAE,YAAY,WAAA,EAAY;AAAA,EACrC;AAAA,EACA,IAAI,UAAA,GAAa;AACb,IAAA,OAAO,KAAK,OAAA,EAAQ;AAAA,EACxB;AACJ,CAAA;AACA,QAAA,CAAS,MAAA,GAAS,CAAC,MAAA,KAAW;AAC1B,EAAA,MAAM,KAAA,GAAQ,IAAI,QAAA,CAAS,MAAM,CAAA;AACjC,EAAA,OAAO,KAAA;AACX,CAAA;AC1HO,IAAM,wBAAA,GAA2B,OAAO,CAAA,EAAsB,IAAA,KAAe;AAClF,EAAA,MAAM,MAAA,GAAS,CAAA,CAAE,GAAA,CAAI,QAAQ,CAAA;AAC7B,EAAA,MAAM,UAAA,GAAa,MAAA,CAAO,SAAA,EAAU,EAAG,IAAA;AACvC,EAAA,MAAM,qBAAA,GAAwB,CAAA,CAAE,GAAA,CAAI,uBAAuB,CAAA;AAE3D,EAAA,IAAI,CAAC,UAAA,EAAY;AAEf,IAAA,OAAO,IAAA,EAAK;AAAA,EACd;AAEA,EAAA,MAAM,IAAA,GAAO,EAAE,GAAA,CAAI,IAAA;AACnB,EAAA,MAAM,MAAA,GAAS,EAAE,GAAA,CAAI,MAAA;AACrB,EAAA,MAAM,YAAY,CAAC,IAAA,KAAiB,CAAA,CAAE,GAAA,CAAI,OAAO,IAAI,CAAA;AAErD,EAAA,IAAIC,2BAAA,CAAuB,IAAA,EAAM,MAAA,EAAQ,SAAA,EAAW,UAAU,CAAA,EAAG;AAE/D,IAAA,OAAO,IAAA,EAAK;AAAA,EACd;AAEA,EAAA,IAAI,CAACC,oBAAA,CAAgB,CAAA,CAAE,GAAA,CAAI,IAAA,EAAM,EAAE,GAAA,CAAI,MAAA,EAAQ,UAAA,EAAY,qBAAqB,CAAA,EAAG;AACjF,IAAA,OAAO,IAAA,EAAK;AAAA,EACd;AAGA,EAAA,IAAIC,sBAAA,CAAkB,EAAE,GAAA,CAAI,IAAA,EAAM,EAAE,GAAA,CAAI,MAAA,EAAQ,UAAU,CAAA,EAAG;AAC3D,IAAA,OAAO,IAAA,EAAK;AAAA,EACd;AAGA,EAAA,MAAM,UAAA,GAAa,CAAA,CAAE,GAAA,CAAI,MAAA,CAAO,eAAe,CAAA;AAC/C,EAAA,IAAI,QAAuB,UAAA,GAAa,UAAA,CAAW,OAAA,CAAQ,SAAA,EAAW,EAAE,CAAA,GAAI,IAAA;AAE5E,EAAA,IAAI,CAAC,KAAA,IAAS,CAAA,CAAE,GAAA,CAAI,KAAA,CAAM,QAAQ,CAAA,EAAG;AACnC,IAAA,KAAA,GAAQ,CAAA,CAAE,GAAA,CAAI,KAAA,CAAM,QAAQ,CAAA,IAAK,IAAA;AAAA,EACnC;AAGA,EAAA,IAAI,CAAC,KAAA,EAAO;AACV,IAAA,OAAO,EAAE,IAAA,CAAK,EAAE,KAAA,EAAO,yBAAA,IAA6B,GAAG,CAAA;AAAA,EACzD;AAEA,EAAA,IAAI;AAEF,IAAA,IAAI,IAAA;AAGJ,IAAA,IAAI,OAAO,UAAA,CAAW,iBAAA,KAAsB,UAAA,EAAY;AACtD,MAAA,IAAA,GAAO,MAAM,UAAA,CAAW,iBAAA,CAAkB,KAAA,EAAO,EAAE,GAAG,CAAA;AAAA,IACxD,CAAA,MAAO;AACL,MAAA,MAAM,IAAI,MAAM,yCAAyC,CAAA;AAAA,IAC3D;AAEA,IAAA,IAAI,CAAC,IAAA,EAAM;AACT,MAAA,OAAO,EAAE,IAAA,CAAK,EAAE,KAAA,EAAO,0BAAA,IAA8B,GAAG,CAAA;AAAA,IAC1D;AAGA,IAAA,CAAA,CAAE,GAAA,CAAI,gBAAgB,CAAA,CAAE,GAAA,CAAI,QAAQ,IAAI,CAAA;AAExC,IAAA,OAAO,IAAA,EAAK;AAAA,EACd,SAAS,GAAA,EAAK;AACZ,IAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AACjB,IAAA,OAAO,EAAE,IAAA,CAAK,EAAE,KAAA,EAAO,0BAAA,IAA8B,GAAG,CAAA;AAAA,EAC1D;AACF,CAAA;AAEO,IAAM,uBAAA,GAA0B,OAAO,CAAA,EAAsB,IAAA,KAAe;AACjF,EAAA,MAAM,MAAA,GAAS,CAAA,CAAE,GAAA,CAAI,QAAQ,CAAA;AAC7B,EAAA,MAAM,UAAA,GAAa,MAAA,CAAO,SAAA,EAAU,EAAG,IAAA;AACvC,EAAA,MAAM,qBAAA,GAAwB,CAAA,CAAE,GAAA,CAAI,uBAAuB,CAAA;AAE3D,EAAA,IAAI,CAAC,UAAA,EAAY;AAEf,IAAA,OAAO,IAAA,EAAK;AAAA,EACd;AAEA,EAAA,MAAM,IAAA,GAAO,EAAE,GAAA,CAAI,IAAA;AACnB,EAAA,MAAM,MAAA,GAAS,EAAE,GAAA,CAAI,MAAA;AACrB,EAAA,MAAM,YAAY,CAAC,IAAA,KAAiB,CAAA,CAAE,GAAA,CAAI,OAAO,IAAI,CAAA;AAErD,EAAA,IAAIF,2BAAA,CAAuB,IAAA,EAAM,MAAA,EAAQ,SAAA,EAAW,UAAU,CAAA,EAAG;AAE/D,IAAA,OAAO,IAAA,EAAK;AAAA,EACd;AAEA,EAAA,IAAI,CAACC,oBAAA,CAAgB,CAAA,CAAE,GAAA,CAAI,IAAA,EAAM,EAAE,GAAA,CAAI,MAAA,EAAQ,UAAA,EAAY,qBAAqB,CAAA,EAAG;AACjF,IAAA,OAAO,IAAA,EAAK;AAAA,EACd;AAGA,EAAA,IAAIC,sBAAA,CAAkB,IAAA,EAAM,MAAA,EAAQ,UAAU,CAAA,EAAG;AAC/C,IAAA,OAAO,IAAA,EAAK;AAAA,EACd;AAEA,EAAA,MAAM,OAAO,CAAA,CAAE,GAAA,CAAI,gBAAgB,CAAA,CAAE,IAAI,MAAM,CAAA;AAE/C,EAAA,IAAI,eAAA,IAAmB,UAAA,IAAc,OAAO,UAAA,CAAW,kBAAkB,UAAA,EAAY;AACnF,IAAA,IAAI;AACF,MAAA,MAAM,eAAe,MAAM,UAAA,CAAW,aAAA,CAAc,IAAA,EAAM,EAAE,GAAG,CAAA;AAE/D,MAAA,IAAI,YAAA,EAAc;AAChB,QAAA,OAAO,IAAA,EAAK;AAAA,MACd;AAEA,MAAA,OAAO,EAAE,IAAA,CAAK,EAAE,KAAA,EAAO,eAAA,IAAmB,GAAG,CAAA;AAAA,IAC/C,SAAS,GAAA,EAAK;AACZ,MAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AACjB,MAAA,OAAO,EAAE,IAAA,CAAK,EAAE,KAAA,EAAO,qBAAA,IAAyB,GAAG,CAAA;AAAA,IACrD;AAAA,EACF;AAGA,EAAA,IAAI,WAAA,IAAe,UAAA,IAAc,OAAO,UAAA,CAAW,cAAc,UAAA,EAAY;AAC3E,IAAA,IAAI;AACF,MAAA,MAAM,eAAe,MAAM,UAAA,CAAW,UAAU,IAAA,EAAM,MAAA,EAAQ,MAAM,CAAC,CAAA;AAErE,MAAA,IAAI,YAAA,EAAc;AAChB,QAAA,OAAO,IAAA,EAAK;AAAA,MACd;AAEA,MAAA,OAAO,EAAE,IAAA,CAAK,EAAE,KAAA,EAAO,eAAA,IAAmB,GAAG,CAAA;AAAA,IAC/C,SAAS,GAAA,EAAK;AACZ,MAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AACjB,MAAA,OAAO,EAAE,IAAA,CAAK,EAAE,KAAA,EAAO,qBAAA,IAAyB,GAAG,CAAA;AAAA,IACrD;AAAA,EACF;AAGA,EAAA,IAAI,WAAW,UAAA,IAAc,UAAA,CAAW,SAAS,UAAA,CAAW,KAAA,CAAM,SAAS,CAAA,EAAG;AAC5E,IAAA,MAAM,eAAe,MAAMC,eAAA,CAAW,WAAW,KAAA,EAAO,IAAA,EAAM,QAAQ,IAAI,CAAA;AAE1E,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,OAAO,IAAA,EAAK;AAAA,IACd;AAEA,IAAA,OAAO,EAAE,IAAA,CAAK,EAAE,KAAA,EAAO,eAAA,IAAmB,GAAG,CAAA;AAAA,EAC/C;AAGA,EAAA,IAAIC,sBAAA,CAAkB,KAAA,IAASA,sBAAA,CAAkB,KAAA,CAAM,SAAS,CAAA,EAAG;AACjE,IAAA,MAAM,eAAe,MAAMD,eAAA,CAAWC,uBAAkB,KAAA,EAAO,IAAA,EAAM,QAAQ,IAAI,CAAA;AAEjF,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,OAAO,IAAA,EAAK;AAAA,IACd;AAAA,EACF;AAEA,EAAA,OAAO,EAAE,IAAA,CAAK,EAAE,KAAA,EAAO,eAAA,IAAmB,GAAG,CAAA;AAC/C,CAAA;;;AC7GO,IAAM,YAAA,GAAN,cAA2BC,0BAAA,CAAgD;AAAA,EAChF,uBAAA,GAA6C;AAC3C,IAAA,OAAO,OAAO,GAAG,IAAA,KAAS;AAGxB,MAAA,IAAI,kBAAA;AACJ,MAAA,IAAI,oBAAA;AAGJ,MAAA,IAAI,EAAE,GAAA,CAAI,MAAA,KAAW,UAAU,CAAA,CAAE,GAAA,CAAI,WAAW,KAAA,EAAO;AACrD,QAAA,MAAM,WAAA,GAAc,CAAA,CAAE,GAAA,CAAI,MAAA,CAAO,cAAc,CAAA;AAC/C,QAAA,IAAI,WAAA,EAAa,QAAA,CAAS,kBAAkB,CAAA,EAAG;AAC7C,UAAA,IAAI;AACF,YAAA,MAAM,SAAA,GAAY,CAAA,CAAE,GAAA,CAAI,GAAA,CAAI,KAAA,EAAM;AAClC,YAAA,MAAM,IAAA,GAAQ,MAAM,SAAA,CAAU,IAAA,EAAK;AACnC,YAAA,IAAI,KAAK,cAAA,EAAgB;AACvB,cAAA,kBAAA,GAAqB,IAAA,CAAK,cAAA;AAAA,YAC5B;AAAA,UACF,CAAA,CAAA,MAAQ;AAAA,UAER;AAAA,QACF;AAAA,MACF;AAGA,MAAA,IAAI,CAAA,CAAE,GAAA,CAAI,MAAA,KAAW,KAAA,EAAO;AAC1B,QAAA,IAAI;AACF,UAAA,MAAM,qBAAA,GAAwB,CAAA,CAAE,GAAA,CAAI,KAAA,CAAM,gBAAgB,CAAA;AAC1D,UAAA,IAAI,qBAAA,EAAuB;AAEzB,YAAA,IAAI;AACF,cAAA,oBAAA,GAAuB,IAAA,CAAK,MAAM,qBAAqB,CAAA;AAAA,YACzD,CAAA,CAAA,MAAQ;AAEN,cAAA,IAAI;AACF,gBAAA,MAAM,OAAO,MAAA,CAAO,IAAA,CAAK,uBAAuB,QAAQ,CAAA,CAAE,SAAS,OAAO,CAAA;AAC1E,gBAAA,oBAAA,GAAuB,IAAA,CAAK,MAAM,IAAI,CAAA;AAAA,cACxC,CAAA,CAAA,MAAQ;AAAA,cAER;AAAA,YACF;AAAA,UACF;AAAA,QACF,CAAA,CAAA,MAAQ;AAAA,QAER;AAAA,MACF;AAEA,MAAA,MAAM,iBAAiB,IAAA,CAAK,mBAAA,CAAoB,EAAE,oBAAA,EAAsB,oBAAoB,CAAA;AAG5F,MAAA,CAAA,CAAE,GAAA,CAAI,kBAAkB,cAAc,CAAA;AACtC,MAAA,CAAA,CAAE,GAAA,CAAI,QAAA,EAAU,IAAA,CAAK,MAAM,CAAA;AAC3B,MAAA,CAAA,CAAE,GAAA,CAAI,OAAA,EAAS,IAAA,CAAK,KAAA,IAAS,EAAE,CAAA;AAC/B,MAAA,CAAA,CAAE,GAAA,CAAI,WAAA,EAAa,IAAA,CAAK,SAAS,CAAA;AACjC,MAAA,CAAA,CAAE,GAAA,CAAI,aAAA,EAAe,CAAA,CAAE,GAAA,CAAI,IAAI,MAAM,CAAA;AACrC,MAAA,CAAA,CAAE,GAAA,CAAI,uBAAA,EAAyB,IAAA,CAAK,qBAAqB,CAAA;AAEzD,MAAA,OAAO,IAAA,EAAK;AAAA,IACd,CAAA;AAAA,EACF;AAAA,EACA,MAAM,MAAA,CAAO,KAAA,EAAoB,GAAA,EAAc,MAAA,EAAsD;AACnG,IAAA,GAAA,CAAI,MAAA,CAAO,gBAAgB,YAAY,CAAA;AACvC,IAAA,GAAA,CAAI,MAAA,CAAO,qBAAqB,SAAS,CAAA;AAEzC,IAAA,MAAM,YAAA,GAAe,MAAM,YAAA,IAAgB,QAAA;AAE3C,IAAA,OAAO,MAAA;AAAA,MACL,GAAA;AAAA,MACA,OAAMC,OAAAA,KAAU;AACd,QAAA,MAAM,cAAA,GAAiB,MAAA,YAAkB,cAAA,GAAiB,MAAA,GAAS,MAAA,CAAO,UAAA;AAC1E,QAAA,MAAM,MAAA,GAAS,eAAe,SAAA,EAAU;AAExC,QAAAA,OAAAA,CAAO,QAAQ,MAAM;AACnB,UAAA,KAAK,MAAA,CAAO,OAAO,iBAAiB,CAAA;AAAA,QACtC,CAAC,CAAA;AAED,QAAA,IAAI;AACF,UAAA,OAAO,IAAA,EAAM;AACX,YAAA,MAAM,EAAE,IAAA,EAAM,KAAA,EAAM,GAAI,MAAM,OAAO,IAAA,EAAK;AAC1C,YAAA,IAAI,IAAA,EAAM;AAEV,YAAA,IAAI,KAAA,EAAO;AAET,cAAA,MAAM,YAAA,GAAe,IAAA,CAAK,aAAA,EAAe,MAAA,IAAU,IAAA;AACnD,cAAA,MAAM,WAAA,GAAc,YAAA,GAAeC,+BAAA,CAAkB,KAAK,CAAA,GAAI,KAAA;AAC9D,cAAA,IAAI,iBAAiB,KAAA,EAAO;AAC1B,gBAAA,MAAMD,QAAO,KAAA,CAAM,CAAA,MAAA,EAAS,IAAA,CAAK,SAAA,CAAU,WAAW,CAAC;;AAAA,CAAM,CAAA;AAAA,cAC/D,CAAA,MAAO;AACL,gBAAA,MAAMA,QAAO,KAAA,CAAM,IAAA,CAAK,SAAA,CAAU,WAAW,IAAI,GAAM,CAAA;AAAA,cACzD;AAAA,YACF;AAAA,UACF;AAEA,UAAA,MAAMA,OAAAA,CAAO,MAAM,kBAAkB,CAAA;AAAA,QACvC,SAAS,KAAA,EAAO;AACd,UAAA,OAAA,CAAQ,MAAM,KAAK,CAAA;AAAA,QACrB,CAAA,SAAE;AACA,UAAA,MAAMA,QAAO,KAAA,EAAM;AAAA,QACrB;AAAA,MACF,CAAA;AAAA,MACA,OAAM,GAAA,KAAO;AACX,QAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AAAA,MACnB;AAAA,KACF;AAAA,EACF;AAAA,EAEA,MAAM,SAAA,CACJ,KAAA,EACA,OAAA,EACoG;AACpG,IAAA,MAAM,SAAA,GAAY,QAAQ,KAAA,EAAM;AAChC,IAAA,MAAM,WAAA,GAAc,QAAQ,KAAA,EAAM;AAClC,IAAA,IAAI,IAAA;AACJ,IAAA,IAAI,KAAA,CAAM,WAAW,MAAA,IAAU,KAAA,CAAM,WAAW,KAAA,IAAS,KAAA,CAAM,WAAW,OAAA,EAAS;AACjF,MAAA,MAAM,WAAA,GAAc,OAAA,CAAQ,MAAA,CAAO,cAAc,CAAA,IAAK,EAAA;AAEtD,MAAA,IAAI,WAAA,CAAY,QAAA,CAAS,qBAAqB,CAAA,EAAG;AAC/C,QAAA,IAAI;AACF,UAAA,MAAM,QAAA,GAAW,MAAM,OAAA,CAAQ,QAAA,EAAS;AACxC,UAAA,IAAA,GAAO,MAAM,IAAA,CAAK,aAAA,CAAc,QAAQ,CAAA;AAAA,QAC1C,SAAS,KAAA,EAAO;AACd,UAAA,OAAA,CAAQ,KAAA,CAAM,wCAAwC,KAAK,CAAA;AAE3D,UAAA,IAAI,KAAA,YAAiB,SAAS,KAAA,CAAM,OAAA,CAAQ,aAAY,CAAE,QAAA,CAAS,MAAM,CAAA,EAAG;AAC1E,YAAA,MAAM,KAAA;AAAA,UACR;AAAA,QACF;AAAA,MACF,CAAA,MAAO;AACL,QAAA,IAAI;AACF,UAAA,IAAA,GAAO,MAAM,QAAQ,IAAA,EAAK;AAAA,QAC5B,SAAS,KAAA,EAAO;AACd,UAAA,OAAA,CAAQ,KAAA,CAAM,8BAA8B,KAAK,CAAA;AAAA,QACnD;AAAA,MACF;AAAA,IACF;AACA,IAAA,OAAO,EAAE,SAAA,EAAW,WAAA,EAAoD,IAAA,EAAK;AAAA,EAC/E;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,cAAc,QAAA,EAAsD;AAChF,IAAA,MAAM,SAAkC,EAAC;AAEzC,IAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,CAAA,IAAK,QAAA,CAAS,SAAQ,EAAG;AAC7C,MAAA,IAAI,iBAAiB,IAAA,EAAM;AACzB,QAAA,MAAM,WAAA,GAAc,MAAM,KAAA,CAAM,WAAA,EAAY;AAC5C,QAAA,MAAA,CAAO,GAAG,CAAA,GAAI,MAAA,CAAO,IAAA,CAAK,WAAW,CAAA;AAAA,MACvC,CAAA,MAAA,IAAW,OAAO,KAAA,KAAU,QAAA,EAAU;AAEpC,QAAA,IAAI;AACF,UAAA,MAAA,CAAO,GAAG,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA;AAAA,QAChC,CAAA,CAAA,MAAQ;AACN,UAAA,MAAA,CAAO,GAAG,CAAA,GAAI,KAAA;AAAA,QAChB;AAAA,MACF,CAAA,MAAO;AACL,QAAA,MAAA,CAAO,GAAG,CAAA,GAAI,KAAA;AAAA,MAChB;AAAA,IACF;AAEA,IAAA,OAAO,MAAA;AAAA,EACT;AAAA,EAEA,MAAM,YAAA,CAAa,KAAA,EAAoB,QAAA,EAAmB,MAAA,EAA+B;AACvF,IAAA,IAAI,KAAA,CAAM,iBAAiB,MAAA,EAAQ;AACjC,MAAA,OAAO,QAAA,CAAS,IAAA,CAAK,MAAA,EAAe,GAAG,CAAA;AAAA,IACzC,CAAA,MAAA,IAAW,KAAA,CAAM,YAAA,KAAiB,QAAA,EAAU;AAC1C,MAAA,OAAO,IAAA,CAAK,MAAA,CAAO,KAAA,EAAO,QAAA,EAAU,MAAwC,CAAA;AAAA,IAC9E,CAAA,MAAA,IAAW,KAAA,CAAM,YAAA,KAAiB,qBAAA,EAAuB;AACvD,MAAA,MAAM,aAAA,GAAgB,MAAA;AACtB,MAAA,OAAO,aAAA;AAAA,IACT,CAAA,MAAA,IAAW,KAAA,CAAM,YAAA,KAAiB,UAAA,EAAY;AAE5C,MAAA,MAAM,EAAE,MAAA,EAAQ,QAAA,EAAS,GAAI,MAAA;AAC7B,MAAA,MAAM,EAAE,GAAA,EAAK,GAAA,KAAQE,oBAAA,CAAS,QAAA,CAAS,IAAI,GAAG,CAAA;AAE9C,MAAA,IAAI;AACF,QAAA,MAAM,OAAO,SAAA,CAAU;AAAA,UACrB,GAAA,EAAK,IAAI,GAAA,CAAI,QAAA,CAAS,IAAI,GAAG,CAAA;AAAA,UAC7B,QAAA;AAAA,UACA,GAAA;AAAA,UACA;AAAA,SACD,CAAA;AACD,QAAA,OAAO,MAAMC,4BAAgB,GAAG,CAAA;AAAA,MAClC,CAAA,CAAA,MAAQ;AACN,QAAA,IAAI,CAAC,IAAI,WAAA,EAAa;AACpB,UAAA,GAAA,CAAI,SAAA,CAAU,GAAA,EAAK,EAAE,cAAA,EAAgB,oBAAoB,CAAA;AACzD,UAAA,GAAA,CAAI,GAAA;AAAA,YACF,KAAK,SAAA,CAAU;AAAA,cACb,OAAA,EAAS,KAAA;AAAA,cACT,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,uBAAA,EAAwB;AAAA,cACxD,EAAA,EAAI;AAAA,aACL;AAAA,WACH;AACA,UAAA,OAAO,MAAMA,4BAAgB,GAAG,CAAA;AAAA,QAClC;AACA,QAAA,OAAO,MAAMA,4BAAgB,GAAG,CAAA;AAAA,MAClC;AAAA,IACF,CAAA,MAAA,IAAW,KAAA,CAAM,YAAA,KAAiB,SAAA,EAAW;AAE3C,MAAA,MAAM,EAAE,MAAA,EAAQ,OAAA,EAAS,WAAA,EAAY,GAAI,MAAA;AAEzC,MAAA,IAAI;AACF,QAAA,OAAO,MAAM,OAAO,YAAA,CAAa;AAAA,UAC/B,GAAA,EAAK,IAAI,GAAA,CAAI,QAAA,CAAS,IAAI,GAAG,CAAA;AAAA,UAC7B,OAAA;AAAA,UACA,WAAA;AAAA,UACA,OAAA,EAAS;AAAA,SACV,CAAA;AAAA,MACH,CAAA,CAAA,MAAQ;AACN,QAAA,OAAO,SAAS,IAAA,CAAK,EAAE,KAAA,EAAO,gCAAA,IAAoC,GAAG,CAAA;AAAA,MACvE;AAAA,IACF,CAAA,MAAO;AACL,MAAA,OAAO,QAAA,CAAS,OAAO,GAAG,CAAA;AAAA,IAC5B;AAAA,EACF;AAAA,EAEA,MAAM,aAAA,CAAc,GAAA,EAAc,KAAA,EAAoB,EAAE,QAAO,EAAuC;AAEpG,IAAA,MAAM,oBAAA,GAAuB,IAAA,CAAK,gBAAA,IAAoB,CAAC,MAAA,EAAQ,KAAA,EAAO,OAAO,CAAA,CAAE,QAAA,CAAS,KAAA,CAAM,MAAA,CAAO,WAAA,EAAa,CAAA;AAGlH,IAAA,MAAM,OAAA,GAAU,KAAA,CAAM,WAAA,IAAe,IAAA,CAAK,gBAAA,EAAkB,OAAA;AAG5D,IAAA,MAAM,cAAmC,EAAC;AAE1C,IAAA,IAAI,oBAAA,IAAwB,OAAA,IAAW,IAAA,CAAK,gBAAA,EAAkB;AAC5D,MAAA,WAAA,CAAY,IAAA;AAAA,QACV,SAAA,CAAU;AAAA,UACR,OAAA;AAAA,UACA,OAAA,EAAS,KAAK,gBAAA,CAAiB;AAAA,SAChC;AAAA,OACH;AAAA,IACF;AAEA,IAAA,GAAA,CAAI,KAAA,CAAM,MAAA,CAAO,WAAA,EAAoE,CAAA;AAAA,MACnF,CAAA,EAAG,MAAM,CAAA,EAAG,KAAA,CAAM,IAAI,CAAA,CAAA;AAAA,MACtB,GAAG,WAAA;AAAA,MACH,OAAO,CAAA,KAAe;AACpB,QAAA,MAAM,SAAS,MAAM,IAAA,CAAK,SAAA,CAAU,KAAA,EAAO,EAAE,GAAG,CAAA;AAEhD,QAAA,IAAI,OAAO,WAAA,EAAa;AACtB,UAAA,IAAI;AACF,YAAA,MAAA,CAAO,cAAc,MAAM,IAAA,CAAK,gBAAA,CAAiB,KAAA,EAAO,OAAO,WAAqC,CAAA;AAAA,UACtG,SAASC,OAAA,EAAO;AACd,YAAA,OAAA,CAAQ,KAAA,CAAM,8BAA8BA,OAAK,CAAA;AAEjD,YAAA,IAAIA,mBAAiB,QAAA,EAAU;AAC7B,cAAA,OAAO,EAAE,IAAA,CAAKC,oBAAA,CAAeD,OAAA,EAAO,kBAAkB,GAAG,GAAG,CAAA;AAAA,YAC9D;AACA,YAAA,OAAO,CAAA,CAAE,IAAA;AAAA,cACP;AAAA,gBACE,KAAA,EAAO,0BAAA;AAAA,gBACP,MAAA,EAAQ,CAAC,EAAE,KAAA,EAAO,SAAA,EAAW,OAAA,EAASA,OAAA,YAAiB,KAAA,GAAQA,OAAA,CAAM,OAAA,GAAU,eAAA,EAAiB;AAAA,eAClG;AAAA,cACA;AAAA,aACF;AAAA,UACF;AAAA,QACF;AAEA,QAAA,IAAI,OAAO,IAAA,EAAM;AACf,UAAA,IAAI;AACF,YAAA,MAAA,CAAO,OAAO,MAAM,IAAA,CAAK,SAAA,CAAU,KAAA,EAAO,OAAO,IAAI,CAAA;AAAA,UACvD,SAASA,OAAA,EAAO;AACd,YAAA,OAAA,CAAQ,KAAA,CAAM,uBAAuBA,OAAA,YAAiB,KAAA,GAAQA,QAAM,OAAA,GAAU,MAAA,CAAOA,OAAK,CAAC,CAAA;AAE3F,YAAA,IAAIA,mBAAiB,QAAA,EAAU;AAC7B,cAAA,OAAO,EAAE,IAAA,CAAKC,oBAAA,CAAeD,OAAA,EAAO,cAAc,GAAG,GAAG,CAAA;AAAA,YAC1D;AACA,YAAA,OAAO,CAAA,CAAE,IAAA;AAAA,cACP;AAAA,gBACE,KAAA,EAAO,sBAAA;AAAA,gBACP,MAAA,EAAQ,CAAC,EAAE,KAAA,EAAO,SAAA,EAAW,OAAA,EAASA,OAAA,YAAiB,KAAA,GAAQA,OAAA,CAAM,OAAA,GAAU,eAAA,EAAiB;AAAA,eAClG;AAAA,cACA;AAAA,aACF;AAAA,UACF;AAAA,QACF;AAEA,QAAA,MAAM,aAAA,GAAgB;AAAA,UACpB,GAAG,MAAA,CAAO,SAAA;AAAA,UACV,GAAG,MAAA,CAAO,WAAA;AAAA,UACV,GAAI,OAAO,MAAA,CAAO,SAAS,QAAA,GAAW,MAAA,CAAO,OAAO,EAAC;AAAA,UACrD,cAAA,EAAgB,CAAA,CAAE,GAAA,CAAI,gBAAgB,CAAA;AAAA,UACtC,QAAQ,IAAA,CAAK,MAAA;AAAA,UACb,KAAA,EAAO,CAAA,CAAE,GAAA,CAAI,OAAO,CAAA;AAAA,UACpB,SAAA,EAAW,CAAA,CAAE,GAAA,CAAI,WAAW,CAAA;AAAA,UAC5B,WAAA,EAAa,CAAA,CAAE,GAAA,CAAI,aAAa;AAAA,SAClC;AAEA,QAAA,IAAI;AACF,UAAA,MAAM,MAAA,GAAS,MAAM,KAAA,CAAM,OAAA,CAAQ,aAAa,CAAA;AAChD,UAAA,OAAO,IAAA,CAAK,YAAA,CAAa,KAAA,EAAO,CAAA,EAAG,MAAM,CAAA;AAAA,QAC3C,SAAS,KAAA,EAAO;AACd,UAAA,OAAA,CAAQ,KAAA,CAAM,yBAAyB,KAAK,CAAA;AAE5C,UAAA,IAAI,KAAA,IAAS,OAAO,KAAA,KAAU,QAAA,EAAU;AAEtC,YAAA,IAAI,YAAY,KAAA,EAAO;AACrB,cAAA,MAAM,SAAU,KAAA,CAAc,MAAA;AAC9B,cAAA,OAAO,CAAA,CAAE,IAAA,CAAK,EAAE,KAAA,EAAO,KAAA,YAAiB,QAAQ,KAAA,CAAM,OAAA,GAAU,eAAA,EAAgB,EAAG,MAAM,CAAA;AAAA,YAC3F;AAEA,YAAA,IAAI,SAAA,IAAa,KAAA,IAAS,KAAA,CAAM,OAAA,IAAW,OAAO,MAAM,OAAA,KAAY,QAAA,IAAY,QAAA,IAAY,KAAA,CAAM,OAAA,EAAS;AACzG,cAAA,MAAM,MAAA,GAAU,MAAM,OAAA,CAAgB,MAAA;AACtC,cAAA,OAAO,CAAA,CAAE,IAAA,CAAK,EAAE,KAAA,EAAO,KAAA,YAAiB,QAAQ,KAAA,CAAM,OAAA,GAAU,eAAA,EAAgB,EAAG,MAAM,CAAA;AAAA,YAC3F;AAAA,UACF;AACA,UAAA,OAAO,CAAA,CAAE,IAAA,CAAK,EAAE,KAAA,EAAO,KAAA,YAAiB,QAAQ,KAAA,CAAM,OAAA,GAAU,eAAA,EAAgB,EAAG,GAAG,CAAA;AAAA,QACxF;AAAA,MACF;AAAA,KACF;AAAA,EACF;AAAA,EAEA,yBAAA,GAAkC;AAChC,IAAA,IAAA,CAAK,GAAA,CAAI,GAAA,CAAI,GAAA,EAAK,IAAA,CAAK,yBAAyB,CAAA;AAAA,EAClD;AAAA,EAEA,sBAAA,GAA+B;AAC7B,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,MAAA,CAAO,SAAA,EAAU,EAAG,IAAA;AAC5C,IAAA,IAAI,CAAC,UAAA,EAAY;AAEf,MAAA;AAAA,IACF;AAEA,IAAA,IAAA,CAAK,GAAA,CAAI,GAAA,CAAI,GAAA,EAAK,wBAAwB,CAAA;AAC1C,IAAA,IAAA,CAAK,GAAA,CAAI,GAAA,CAAI,GAAA,EAAK,uBAAuB,CAAA;AAAA,EAC3C;AACF","file":"index.cjs","sourcesContent":["// src/http-exception.ts\nvar HTTPException = class extends Error {\n res;\n status;\n /**\n * Creates an instance of `HTTPException`.\n * @param status - HTTP status code for the exception. Defaults to 500.\n * @param options - Additional options for the exception.\n */\n constructor(status = 500, options) {\n super(options?.message, { cause: options?.cause });\n this.res = options?.res;\n this.status = status;\n }\n /**\n * Returns the response object associated with the exception.\n * If a response object is not provided, a new response is created with the error message and status code.\n * @returns The response object.\n */\n getResponse() {\n if (this.res) {\n const newResponse = new Response(this.res.body, {\n status: this.status,\n headers: this.res.headers\n });\n return newResponse;\n }\n return new Response(this.message, {\n status: this.status\n });\n }\n};\nexport {\n HTTPException\n};\n","// src/middleware/body-limit/index.ts\nimport { HTTPException } from \"../../http-exception.js\";\nvar ERROR_MESSAGE = \"Payload Too Large\";\nvar BodyLimitError = class extends Error {\n constructor(message) {\n super(message);\n this.name = \"BodyLimitError\";\n }\n};\nvar bodyLimit = (options) => {\n const onError = options.onError || (() => {\n const res = new Response(ERROR_MESSAGE, {\n status: 413\n });\n throw new HTTPException(413, { res });\n });\n const maxSize = options.maxSize;\n return async function bodyLimit2(c, next) {\n if (!c.req.raw.body) {\n return next();\n }\n const hasTransferEncoding = c.req.raw.headers.has(\"transfer-encoding\");\n const hasContentLength = c.req.raw.headers.has(\"content-length\");\n if (hasTransferEncoding && hasContentLength) {\n }\n if (hasContentLength && !hasTransferEncoding) {\n const contentLength = parseInt(c.req.raw.headers.get(\"content-length\") || \"0\", 10);\n return contentLength > maxSize ? onError(c) : next();\n }\n let size = 0;\n const rawReader = c.req.raw.body.getReader();\n const reader = new ReadableStream({\n async start(controller) {\n try {\n for (; ; ) {\n const { done, value } = await rawReader.read();\n if (done) {\n break;\n }\n size += value.length;\n if (size > maxSize) {\n controller.error(new BodyLimitError(ERROR_MESSAGE));\n break;\n }\n controller.enqueue(value);\n }\n } finally {\n controller.close();\n }\n }\n });\n const requestInit = { body: reader, duplex: \"half\" };\n c.req.raw = new Request(c.req.raw, requestInit);\n await next();\n if (c.error instanceof BodyLimitError) {\n c.res = await onError(c);\n }\n };\n};\nexport {\n bodyLimit\n};\n","// src/utils/stream.ts\nvar StreamingApi = class {\n writer;\n encoder;\n writable;\n abortSubscribers = [];\n responseReadable;\n /**\n * Whether the stream has been aborted.\n */\n aborted = false;\n /**\n * Whether the stream has been closed normally.\n */\n closed = false;\n constructor(writable, _readable) {\n this.writable = writable;\n this.writer = writable.getWriter();\n this.encoder = new TextEncoder();\n const reader = _readable.getReader();\n this.abortSubscribers.push(async () => {\n await reader.cancel();\n });\n this.responseReadable = new ReadableStream({\n async pull(controller) {\n const { done, value } = await reader.read();\n done ? controller.close() : controller.enqueue(value);\n },\n cancel: () => {\n this.abort();\n }\n });\n }\n async write(input) {\n try {\n if (typeof input === \"string\") {\n input = this.encoder.encode(input);\n }\n await this.writer.write(input);\n } catch {\n }\n return this;\n }\n async writeln(input) {\n await this.write(input + \"\\n\");\n return this;\n }\n sleep(ms) {\n return new Promise((res) => setTimeout(res, ms));\n }\n async close() {\n try {\n await this.writer.close();\n } catch {\n }\n this.closed = true;\n }\n async pipe(body) {\n this.writer.releaseLock();\n await body.pipeTo(this.writable, { preventClose: true });\n this.writer = this.writable.getWriter();\n }\n onAbort(listener) {\n this.abortSubscribers.push(listener);\n }\n /**\n * Abort the stream.\n * You can call this method when stream is aborted by external event.\n */\n abort() {\n if (!this.aborted) {\n this.aborted = true;\n this.abortSubscribers.forEach((subscriber) => subscriber());\n }\n }\n};\nexport {\n StreamingApi\n};\n","// src/helper/streaming/utils.ts\nvar isOldBunVersion = () => {\n const version = typeof Bun !== \"undefined\" ? Bun.version : void 0;\n if (version === void 0) {\n return false;\n }\n const result = version.startsWith(\"1.1\") || version.startsWith(\"1.0\") || version.startsWith(\"0.\");\n isOldBunVersion = () => result;\n return result;\n};\nexport {\n isOldBunVersion\n};\n","// src/helper/streaming/stream.ts\nimport { StreamingApi } from \"../../utils/stream.js\";\nimport { isOldBunVersion } from \"./utils.js\";\nvar contextStash = /* @__PURE__ */ new WeakMap();\nvar stream = (c, cb, onError) => {\n const { readable, writable } = new TransformStream();\n const stream2 = new StreamingApi(writable, readable);\n if (isOldBunVersion()) {\n c.req.raw.signal.addEventListener(\"abort\", () => {\n if (!stream2.closed) {\n stream2.abort();\n }\n });\n }\n contextStash.set(stream2.responseReadable, c);\n (async () => {\n try {\n await cb(stream2);\n } catch (e) {\n if (e === void 0) {\n } else if (e instanceof Error && onError) {\n await onError(e, stream2);\n } else {\n console.error(e);\n }\n } finally {\n stream2.close();\n }\n })();\n return c.newResponse(stream2.responseReadable);\n};\nexport {\n stream\n};\n","export var util;\n(function (util) {\n util.assertEqual = (_) => { };\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && Number.isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array.map((val) => (typeof val === \"string\" ? `'${val}'` : val)).join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nexport var objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nexport const ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n","import { util } from \"./helpers/util.js\";\nexport const ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nexport const quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nexport class ZodError extends Error {\n get errors() {\n return this.issues;\n }\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n const firstEl = sub.path[0];\n fieldErrors[firstEl] = fieldErrors[firstEl] || [];\n fieldErrors[firstEl].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n","import type { ContextWithMastra } from '@mastra/core/server';\nimport {\n canAccessPublicly,\n checkRules,\n defaultAuthConfig,\n isDevPlaygroundRequest,\n isProtectedPath,\n} from '@mastra/server/auth';\nimport type { Next } from 'hono';\n\nexport const authenticationMiddleware = async (c: ContextWithMastra, next: Next) => {\n const mastra = c.get('mastra');\n const authConfig = mastra.getServer()?.auth;\n const customRouteAuthConfig = c.get('customRouteAuthConfig');\n\n if (!authConfig) {\n // No auth config, skip authentication\n return next();\n }\n\n const path = c.req.path;\n const method = c.req.method;\n const getHeader = (name: string) => c.req.header(name);\n\n if (isDevPlaygroundRequest(path, method, getHeader, authConfig)) {\n // Skip authentication for dev playground requests\n return next();\n }\n\n if (!isProtectedPath(c.req.path, c.req.method, authConfig, customRouteAuthConfig)) {\n return next();\n }\n\n // Skip authentication for public routes\n if (canAccessPublicly(c.req.path, c.req.method, authConfig)) {\n return next();\n }\n\n // Get token from header or query\n const authHeader = c.req.header('Authorization');\n let token: string | null = authHeader ? authHeader.replace('Bearer ', '') : null;\n\n if (!token && c.req.query('apiKey')) {\n token = c.req.query('apiKey') || null;\n }\n\n // Handle missing token\n if (!token) {\n return c.json({ error: 'Authentication required' }, 401);\n }\n\n try {\n // Verify token and get user data\n let user: unknown;\n\n // Client provided verify function\n if (typeof authConfig.authenticateToken === 'function') {\n user = await authConfig.authenticateToken(token, c.req);\n } else {\n throw new Error('No token verification method configured');\n }\n\n if (!user) {\n return c.json({ error: 'Invalid or expired token' }, 401);\n }\n\n // Store user in context\n c.get('requestContext').set('user', user);\n\n return next();\n } catch (err) {\n console.error(err);\n return c.json({ error: 'Invalid or expired token' }, 401);\n }\n};\n\nexport const authorizationMiddleware = async (c: ContextWithMastra, next: Next) => {\n const mastra = c.get('mastra');\n const authConfig = mastra.getServer()?.auth;\n const customRouteAuthConfig = c.get('customRouteAuthConfig');\n\n if (!authConfig) {\n // No auth config, skip authorization\n return next();\n }\n\n const path = c.req.path;\n const method = c.req.method;\n const getHeader = (name: string) => c.req.header(name);\n\n if (isDevPlaygroundRequest(path, method, getHeader, authConfig)) {\n // Skip authorization for dev playground requests\n return next();\n }\n\n if (!isProtectedPath(c.req.path, c.req.method, authConfig, customRouteAuthConfig)) {\n return next();\n }\n\n // Skip for public routes\n if (canAccessPublicly(path, method, authConfig)) {\n return next();\n }\n\n const user = c.get('requestContext').get('user');\n\n if ('authorizeUser' in authConfig && typeof authConfig.authorizeUser === 'function') {\n try {\n const isAuthorized = await authConfig.authorizeUser(user, c.req);\n\n if (isAuthorized) {\n return next();\n }\n\n return c.json({ error: 'Access denied' }, 403);\n } catch (err) {\n console.error(err);\n return c.json({ error: 'Authorization error' }, 500);\n }\n }\n\n // Client-provided authorization function\n if ('authorize' in authConfig && typeof authConfig.authorize === 'function') {\n try {\n const isAuthorized = await authConfig.authorize(path, method, user, c);\n\n if (isAuthorized) {\n return next();\n }\n\n return c.json({ error: 'Access denied' }, 403);\n } catch (err) {\n console.error(err);\n return c.json({ error: 'Authorization error' }, 500);\n }\n }\n\n // Custom rule-based authorization\n if ('rules' in authConfig && authConfig.rules && authConfig.rules.length > 0) {\n const isAuthorized = await checkRules(authConfig.rules, path, method, user);\n\n if (isAuthorized) {\n return next();\n }\n\n return c.json({ error: 'Access denied' }, 403);\n }\n\n // Default rule-based authorization\n if (defaultAuthConfig.rules && defaultAuthConfig.rules.length > 0) {\n const isAuthorized = await checkRules(defaultAuthConfig.rules, path, method, user);\n\n if (isAuthorized) {\n return next();\n }\n }\n\n return c.json({ error: 'Access denied' }, 403);\n};\n","import type { ToolsInput } from '@mastra/core/agent';\nimport type { Mastra } from '@mastra/core/mastra';\nimport type { RequestContext } from '@mastra/core/request-context';\nimport type { InMemoryTaskStore } from '@mastra/server/a2a/store';\nimport { formatZodError } from '@mastra/server/handlers/error';\nimport type { MCPHttpTransportResult, MCPSseTransportResult } from '@mastra/server/handlers/mcp';\nimport { MastraServer as MastraServerBase, redactStreamChunk } from '@mastra/server/server-adapter';\nimport type { ServerRoute } from '@mastra/server/server-adapter';\nimport { toReqRes, toFetchResponse } from 'fetch-to-node';\nimport type { Context, HonoRequest, MiddlewareHandler } from 'hono';\nimport { bodyLimit } from 'hono/body-limit';\nimport { stream } from 'hono/streaming';\nimport { ZodError } from 'zod';\n\nimport { authenticationMiddleware, authorizationMiddleware } from './auth-middleware';\n\n// Export type definitions for Hono app configuration\nexport type HonoVariables = {\n mastra: Mastra;\n requestContext: RequestContext;\n tools: ToolsInput;\n abortSignal: AbortSignal;\n taskStore: InMemoryTaskStore;\n customRouteAuthConfig?: Map<string, boolean>;\n};\n\nexport type HonoBindings = {};\n\n/**\n * Generic handler function type compatible across Hono versions.\n * Uses a minimal signature that all Hono middleware handlers satisfy.\n */\ntype HonoRouteHandler = (...args: any[]) => any;\n\n/**\n * Minimal interface representing what MastraServer needs from a Hono app.\n * This allows any Hono app instance to be passed without strict generic matching,\n * avoiding the version mismatch issues that occur with Hono's strict generic types.\n */\nexport interface HonoApp {\n use(path: string, ...handlers: HonoRouteHandler[]): unknown;\n get(path: string, ...handlers: HonoRouteHandler[]): unknown;\n post(path: string, ...handlers: HonoRouteHandler[]): unknown;\n put(path: string, ...handlers: HonoRouteHandler[]): unknown;\n delete(path: string, ...handlers: HonoRouteHandler[]): unknown;\n patch(path: string, ...handlers: HonoRouteHandler[]): unknown;\n all(path: string, ...handlers: HonoRouteHandler[]): unknown;\n}\n\nexport class MastraServer extends MastraServerBase<HonoApp, HonoRequest, Context> {\n createContextMiddleware(): MiddlewareHandler {\n return async (c, next) => {\n // Parse request context from request body and add to context\n\n let bodyRequestContext: Record<string, any> | undefined;\n let paramsRequestContext: Record<string, any> | undefined;\n\n // Parse request context from request body (POST/PUT)\n if (c.req.method === 'POST' || c.req.method === 'PUT') {\n const contentType = c.req.header('content-type');\n if (contentType?.includes('application/json')) {\n try {\n const clonedReq = c.req.raw.clone();\n const body = (await clonedReq.json()) as { requestContext?: Record<string, any> };\n if (body.requestContext) {\n bodyRequestContext = body.requestContext;\n }\n } catch {\n // Body parsing failed, continue without body\n }\n }\n }\n\n // Parse request context from query params (GET)\n if (c.req.method === 'GET') {\n try {\n const encodedRequestContext = c.req.query('requestContext');\n if (encodedRequestContext) {\n // Try JSON first\n try {\n paramsRequestContext = JSON.parse(encodedRequestContext);\n } catch {\n // Fallback to base64(JSON)\n try {\n const json = Buffer.from(encodedRequestContext, 'base64').toString('utf-8');\n paramsRequestContext = JSON.parse(json);\n } catch {\n // ignore if still invalid\n }\n }\n }\n } catch {\n // ignore query parsing errors\n }\n }\n\n const requestContext = this.mergeRequestContext({ paramsRequestContext, bodyRequestContext });\n\n // Add relevant contexts to hono context\n c.set('requestContext', requestContext);\n c.set('mastra', this.mastra);\n c.set('tools', this.tools || {});\n c.set('taskStore', this.taskStore);\n c.set('abortSignal', c.req.raw.signal);\n c.set('customRouteAuthConfig', this.customRouteAuthConfig);\n\n return next();\n };\n }\n async stream(route: ServerRoute, res: Context, result: { fullStream: ReadableStream }): Promise<any> {\n res.header('Content-Type', 'text/plain');\n res.header('Transfer-Encoding', 'chunked');\n\n const streamFormat = route.streamFormat || 'stream';\n\n return stream(\n res,\n async stream => {\n const readableStream = result instanceof ReadableStream ? result : result.fullStream;\n const reader = readableStream.getReader();\n\n stream.onAbort(() => {\n void reader.cancel('request aborted');\n });\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n\n if (value) {\n // Optionally redact sensitive data (system prompts, tool definitions, API keys) before sending to the client\n const shouldRedact = this.streamOptions?.redact ?? true;\n const outputValue = shouldRedact ? redactStreamChunk(value) : value;\n if (streamFormat === 'sse') {\n await stream.write(`data: ${JSON.stringify(outputValue)}\\n\\n`);\n } else {\n await stream.write(JSON.stringify(outputValue) + '\\x1E');\n }\n }\n }\n\n await stream.write('data: [DONE]\\n\\n');\n } catch (error) {\n console.error(error);\n } finally {\n await stream.close();\n }\n },\n async err => {\n console.error(err);\n },\n );\n }\n\n async getParams(\n route: ServerRoute,\n request: HonoRequest,\n ): Promise<{ urlParams: Record<string, string>; queryParams: Record<string, string>; body: unknown }> {\n const urlParams = request.param();\n const queryParams = request.query();\n let body: unknown;\n if (route.method === 'POST' || route.method === 'PUT' || route.method === 'PATCH') {\n const contentType = request.header('content-type') || '';\n\n if (contentType.includes('multipart/form-data')) {\n try {\n const formData = await request.formData();\n body = await this.parseFormData(formData);\n } catch (error) {\n console.error('Failed to parse multipart form data:', error);\n // Re-throw size limit errors, let others fall through to validation\n if (error instanceof Error && error.message.toLowerCase().includes('size')) {\n throw error;\n }\n }\n } else {\n try {\n body = await request.json();\n } catch (error) {\n console.error('Failed to parse JSON body:', error);\n }\n }\n }\n return { urlParams, queryParams: queryParams as Record<string, string>, body };\n }\n\n /**\n * Parse FormData into a plain object, converting File objects to Buffers.\n */\n private async parseFormData(formData: FormData): Promise<Record<string, unknown>> {\n const result: Record<string, unknown> = {};\n\n for (const [key, value] of formData.entries()) {\n if (value instanceof File) {\n const arrayBuffer = await value.arrayBuffer();\n result[key] = Buffer.from(arrayBuffer);\n } else if (typeof value === 'string') {\n // Try to parse JSON strings (like 'options')\n try {\n result[key] = JSON.parse(value);\n } catch {\n result[key] = value;\n }\n } else {\n result[key] = value;\n }\n }\n\n return result;\n }\n\n async sendResponse(route: ServerRoute, response: Context, result: unknown): Promise<any> {\n if (route.responseType === 'json') {\n return response.json(result as any, 200);\n } else if (route.responseType === 'stream') {\n return this.stream(route, response, result as { fullStream: ReadableStream });\n } else if (route.responseType === 'datastream-response') {\n const fetchResponse = result as globalThis.Response;\n return fetchResponse;\n } else if (route.responseType === 'mcp-http') {\n // MCP Streamable HTTP transport\n const { server, httpPath } = result as MCPHttpTransportResult;\n const { req, res } = toReqRes(response.req.raw);\n\n try {\n await server.startHTTP({\n url: new URL(response.req.url),\n httpPath,\n req,\n res,\n });\n return await toFetchResponse(res);\n } catch {\n if (!res.headersSent) {\n res.writeHead(500, { 'Content-Type': 'application/json' });\n res.end(\n JSON.stringify({\n jsonrpc: '2.0',\n error: { code: -32603, message: 'Internal server error' },\n id: null,\n }),\n );\n return await toFetchResponse(res);\n }\n return await toFetchResponse(res);\n }\n } else if (route.responseType === 'mcp-sse') {\n // MCP SSE transport\n const { server, ssePath, messagePath } = result as MCPSseTransportResult;\n\n try {\n return await server.startHonoSSE({\n url: new URL(response.req.url),\n ssePath,\n messagePath,\n context: response,\n });\n } catch {\n return response.json({ error: 'Error handling MCP SSE request' }, 500);\n }\n } else {\n return response.status(500);\n }\n }\n\n async registerRoute(app: HonoApp, route: ServerRoute, { prefix }: { prefix?: string }): Promise<void> {\n // Determine if body limits should be applied\n const shouldApplyBodyLimit = this.bodyLimitOptions && ['POST', 'PUT', 'PATCH'].includes(route.method.toUpperCase());\n\n // Get the body size limit for this route (route-specific or default)\n const maxSize = route.maxBodySize ?? this.bodyLimitOptions?.maxSize;\n\n // Build middleware array\n const middlewares: MiddlewareHandler[] = [];\n\n if (shouldApplyBodyLimit && maxSize && this.bodyLimitOptions) {\n middlewares.push(\n bodyLimit({\n maxSize,\n onError: this.bodyLimitOptions.onError as any,\n }),\n );\n }\n\n app[route.method.toLowerCase() as 'get' | 'post' | 'put' | 'delete' | 'patch' | 'all'](\n `${prefix}${route.path}`,\n ...middlewares,\n async (c: Context) => {\n const params = await this.getParams(route, c.req);\n\n if (params.queryParams) {\n try {\n params.queryParams = await this.parseQueryParams(route, params.queryParams as Record<string, string>);\n } catch (error) {\n console.error('Error parsing query params', error);\n // Zod validation errors should return 400 Bad Request with structured issues\n if (error instanceof ZodError) {\n return c.json(formatZodError(error, 'query parameters'), 400);\n }\n return c.json(\n {\n error: 'Invalid query parameters',\n issues: [{ field: 'unknown', message: error instanceof Error ? error.message : 'Unknown error' }],\n },\n 400,\n );\n }\n }\n\n if (params.body) {\n try {\n params.body = await this.parseBody(route, params.body);\n } catch (error) {\n console.error('Error parsing body:', error instanceof Error ? error.message : String(error));\n // Zod validation errors should return 400 Bad Request with structured issues\n if (error instanceof ZodError) {\n return c.json(formatZodError(error, 'request body'), 400);\n }\n return c.json(\n {\n error: 'Invalid request body',\n issues: [{ field: 'unknown', message: error instanceof Error ? error.message : 'Unknown error' }],\n },\n 400,\n );\n }\n }\n\n const handlerParams = {\n ...params.urlParams,\n ...params.queryParams,\n ...(typeof params.body === 'object' ? params.body : {}),\n requestContext: c.get('requestContext'),\n mastra: this.mastra,\n tools: c.get('tools'),\n taskStore: c.get('taskStore'),\n abortSignal: c.get('abortSignal'),\n };\n\n try {\n const result = await route.handler(handlerParams);\n return this.sendResponse(route, c, result);\n } catch (error) {\n console.error('Error calling handler', error);\n // Check if it's an HTTPException or MastraError with a status code\n if (error && typeof error === 'object') {\n // Check for direct status property (HTTPException)\n if ('status' in error) {\n const status = (error as any).status;\n return c.json({ error: error instanceof Error ? error.message : 'Unknown error' }, status);\n }\n // Check for MastraError with status in details\n if ('details' in error && error.details && typeof error.details === 'object' && 'status' in error.details) {\n const status = (error.details as any).status;\n return c.json({ error: error instanceof Error ? error.message : 'Unknown error' }, status);\n }\n }\n return c.json({ error: error instanceof Error ? error.message : 'Unknown error' }, 500);\n }\n },\n );\n }\n\n registerContextMiddleware(): void {\n this.app.use('*', this.createContextMiddleware());\n }\n\n registerAuthMiddleware(): void {\n const authConfig = this.mastra.getServer()?.auth;\n if (!authConfig) {\n // No auth config, skip registration\n return;\n }\n\n this.app.use('*', authenticationMiddleware);\n this.app.use('*', authorizationMiddleware);\n }\n}\n"]}
package/dist/index.d.ts CHANGED
@@ -43,6 +43,10 @@ export declare class MastraServer extends MastraServerBase<HonoApp, HonoRequest,
43
43
  queryParams: Record<string, string>;
44
44
  body: unknown;
45
45
  }>;
46
+ /**
47
+ * Parse FormData into a plain object, converting File objects to Buffers.
48
+ */
49
+ private parseFormData;
46
50
  sendResponse(route: ServerRoute, response: Context, result: unknown): Promise<any>;
47
51
  registerRoute(app: HonoApp, route: ServerRoute, { prefix }: {
48
52
  prefix?: string;