@openaddresses/batch-schema 10.24.1 → 10.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -10,6 +10,14 @@
10
10
 
11
11
  ## Version History
12
12
 
13
+ ### v10.26.0
14
+
15
+ - :rocket: Allow non-json content-type
16
+
17
+ ### v10.25.0
18
+
19
+ - :rocket: Add `deprecated` Boolean
20
+
13
21
  ### v10.24.1
14
22
 
15
23
  - :bug: Restore per-route error message
package/README.md CHANGED
@@ -41,6 +41,7 @@ async function server() {
41
41
  res: Type.Object({
42
42
  token: Type.String()
43
43
  }),
44
+ deprecated: false,
44
45
  }, (req, res) => {
45
46
  return res.json({
46
47
  token: 'I only return if the request meets the query & body schemas'
@@ -49,6 +50,86 @@ async function server() {
49
50
  }
50
51
  ```
51
52
 
53
+ Set `deprecated: true` on a route schema to mark the generated OpenAPI operation as deprecated.
54
+
55
+ ## Request Body Validation
56
+
57
+ The `body` option accepts two forms.
58
+
59
+ ### Single TypeBox schema (legacy / shorthand)
60
+
61
+ A bare schema is treated as `application/json`:
62
+
63
+ ```js
64
+ await schema.post('/login', {
65
+ body: Type.Object({
66
+ username: Type.String(),
67
+ password: Type.String()
68
+ }),
69
+ res: Type.Object({ token: Type.String() })
70
+ }, handler);
71
+ ```
72
+
73
+ ### Map keyed by content-type
74
+
75
+ Provide a record where each key is a Content-Type. The value can be:
76
+
77
+ - a `TSchema` — body is validated against the schema
78
+ - `true` — body is accepted but not validated (useful for XML / CSV / binary)
79
+ - a `{ schema, example, examples }` object — `example` and `examples` are
80
+ forwarded to the OpenAPI media type for documentation
81
+
82
+ Wildcards are supported in keys: `text/*`, `application/*`, `*/*`. An exact
83
+ content-type match always wins over a wildcard.
84
+
85
+ ```js
86
+ await schema.post('/ingest', {
87
+ body: {
88
+ // Strict JSON validation
89
+ 'application/json': Type.Object({ name: Type.String() }),
90
+
91
+ // Any XML accepted
92
+ 'text/xml': true,
93
+
94
+ // Wildcard family — matches text/csv, text/plain, etc.
95
+ 'text/*': true,
96
+
97
+ // Schema + Swagger UI examples
98
+ 'application/vnd.api+json': {
99
+ schema: Type.Object({ data: Type.Any() }),
100
+ example: { data: { id: '1' } },
101
+ examples: {
102
+ primary: { summary: 'Primary', value: { data: { id: '1' } } },
103
+ secondary: { summary: 'Secondary', value: { data: { id: '2' } } }
104
+ }
105
+ }
106
+ },
107
+ res: Type.Any()
108
+ }, handler);
109
+ ```
110
+
111
+ If a request arrives with a Content-Type that is not listed (and is not
112
+ covered by a wildcard), the route responds with HTTP 400 and a
113
+ `Content-Type ... not supported` message — the handler is not invoked.
114
+
115
+ For non-JSON content-types the body parser exposes the raw payload on
116
+ `req.body` as a string (`text/*`, `application/xml`, `application/*+xml`)
117
+ or a `Buffer` (`application/octet-stream`).
118
+
119
+ ### Optional bodies
120
+
121
+ Set `bodyRequired: false` to allow requests with no body / no Content-Type.
122
+ When a body *is* sent it is still validated against the matching schema,
123
+ and the OpenAPI document marks `requestBody.required` as `false`.
124
+
125
+ ```js
126
+ await schema.post('/maybe', {
127
+ body: Type.Object({ note: Type.String() }),
128
+ bodyRequired: false,
129
+ res: Type.Object({ ok: Type.Boolean() })
130
+ }, handler);
131
+ ```
132
+
52
133
  ## API
53
134
 
54
135
  ```js
@@ -1,4 +1,5 @@
1
1
  import { OpenAPIV3 as Doc } from 'openapi-types';
2
+ import { normalizeBody } from './types.js';
2
3
  /**
3
4
  * @class
4
5
  */
@@ -49,6 +50,7 @@ export default class Docs {
49
50
  this.base.paths[pathstr] = {};
50
51
  const document = {
51
52
  summary: schemas.description || 'No Description',
53
+ deprecated: schemas.deprecated,
52
54
  parameters: [],
53
55
  tags: [schemas.group || 'Default'],
54
56
  responses: {}
@@ -109,13 +111,22 @@ export default class Docs {
109
111
  };
110
112
  }
111
113
  if (schemas.body) {
114
+ const normalized = normalizeBody(schemas.body) || {};
115
+ const content = {};
116
+ for (const ct of Object.keys(normalized)) {
117
+ const entry = normalized[ct];
118
+ const media = {
119
+ schema: entry.schema === true ? {} : entry.schema
120
+ };
121
+ if (entry.example !== undefined)
122
+ media.example = entry.example;
123
+ if (entry.examples !== undefined)
124
+ media.examples = entry.examples;
125
+ content[ct] = media;
126
+ }
112
127
  document.requestBody = {
113
- required: true,
114
- content: {
115
- 'application/json': {
116
- schema: schemas.body
117
- }
118
- }
128
+ required: schemas.bodyRequired !== false,
129
+ content
119
130
  };
120
131
  }
121
132
  this.base.paths[pathstr][parsed.method] = document;
@@ -1 +1 @@
1
- {"version":3,"file":"openapi.js","sourceRoot":"","sources":["../../lib/openapi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openapi.js","sourceRoot":"","sources":["../../lib/openapi.ts"],"names":[],"mappings":"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"}
@@ -5,10 +5,12 @@ import type { Static, TSchema } from '@sinclair/typebox';
5
5
  import { OpenAPIV3 as Doc } from 'openapi-types';
6
6
  import { Router } from 'express';
7
7
  import type { RequestHandler } from 'express';
8
+ import { Ajv } from 'ajv';
8
9
  import type { ErrorObject } from 'ajv';
9
10
  import type { RequestValidation } from './types.js';
10
11
  import type { OpenAPIDocumentInput } from './openapi.js';
11
12
  import Docs from './openapi.js';
13
+ declare const ajv: Ajv;
12
14
  export type ErrorListItem = {
13
15
  type: 'Body' | 'Query' | 'Params';
14
16
  errors: ErrorObject[];
@@ -33,6 +35,23 @@ export default class Schemas {
33
35
  error: Record<number, TSchema>;
34
36
  schemas: Map<string, RequestValidation<TSchema, TSchema, TSchema, TSchema>>;
35
37
  validationError(method: Doc.HttpMethods, path: string): Err;
38
+ /**
39
+ * Compile body validators keyed by content-type. Returns null when no
40
+ * body validation is configured. Each entry is either `true` (any body
41
+ * accepted for this content-type) or a compiled ajv validator function.
42
+ */
43
+ compileBodyValidators(body: RequestValidation<TSchema, TSchema, TSchema, TSchema>['body']): Map<string, true | ReturnType<typeof ajv.compile>> | null;
44
+ /**
45
+ * Validate the incoming request body against the compiled validator
46
+ * map for the route. Pushes a Body error onto `errors` if validation
47
+ * fails; returns an Err to respond with for an unsupported content-type.
48
+ *
49
+ * If `bodyRequired` is false and the request has no body / no
50
+ * content-type, validation is skipped.
51
+ */
52
+ validateBody(req: Request, validators: Map<string, true | ReturnType<typeof ajv.compile>>, errors: Array<ErrorListItem>, opts?: {
53
+ required?: boolean;
54
+ }): Err | null;
36
55
  constructor(router: Router, opts?: {
37
56
  prefix?: string;
38
57
  logging?: boolean | morgan.Options<Request, Response>;
@@ -40,6 +59,7 @@ export default class Schemas {
40
59
  error?: Record<number, TSchema>;
41
60
  openapi?: OpenAPIDocumentInput;
42
61
  });
62
+ normalizeValidation<TParams extends TSchema, TQuery extends TSchema, TBody extends TSchema, TResponse extends TSchema>(opts?: RequestValidation<TParams, TQuery, TBody, TResponse>): RequestValidation<TParams, TQuery, TBody, TResponse>;
43
63
  api(): Promise<void>;
44
64
  /**
45
65
  * Load routes directory. All .js files in the given directory will be loaded (ES Module)
@@ -71,6 +91,7 @@ export default class Schemas {
71
91
  put<TParams extends TSchema, TQuery extends TSchema, TBody extends TSchema, TResponse extends TSchema>(path: string, opts: RequestValidation<TParams, TQuery, TBody, TResponse> | undefined, handler: RequestHandler<Static<TParams>, Static<TResponse>, Static<TBody>, Static<TQuery>>): Promise<void>;
72
92
  not_found(): void;
73
93
  query(method: Doc.HttpMethods, url: string): {
94
+ deprecated?: boolean;
74
95
  query?: object;
75
96
  body?: object;
76
97
  res?: object;
@@ -83,3 +104,4 @@ export default class Schemas {
83
104
  };
84
105
  };
85
106
  }
107
+ export {};
@@ -8,6 +8,7 @@ import { OpenAPIV3 as Doc } from 'openapi-types';
8
8
  import { Router } from 'express';
9
9
  import { Ajv } from 'ajv';
10
10
  import addFormatsModule from 'ajv-formats';
11
+ import { normalizeBody, matchContentType } from './types.js';
11
12
  import SchemaAPI from './api.js';
12
13
  import Docs from './openapi.js';
13
14
  const ajv = new Ajv({
@@ -40,6 +41,56 @@ export default class Schemas {
40
41
  validationError(method, path) {
41
42
  return new Err(400, null, `Validation Error ${String(method).toUpperCase()} ${path}`);
42
43
  }
44
+ /**
45
+ * Compile body validators keyed by content-type. Returns null when no
46
+ * body validation is configured. Each entry is either `true` (any body
47
+ * accepted for this content-type) or a compiled ajv validator function.
48
+ */
49
+ compileBodyValidators(body) {
50
+ const normalized = normalizeBody(body);
51
+ if (!normalized)
52
+ return null;
53
+ const map = new Map();
54
+ for (const ct of Object.keys(normalized)) {
55
+ const schema = normalized[ct].schema;
56
+ if (schema === true || schema === undefined) {
57
+ map.set(ct, true);
58
+ }
59
+ else {
60
+ map.set(ct, ajv.compile(schema));
61
+ }
62
+ }
63
+ return map;
64
+ }
65
+ /**
66
+ * Validate the incoming request body against the compiled validator
67
+ * map for the route. Pushes a Body error onto `errors` if validation
68
+ * fails; returns an Err to respond with for an unsupported content-type.
69
+ *
70
+ * If `bodyRequired` is false and the request has no body / no
71
+ * content-type, validation is skipped.
72
+ */
73
+ validateBody(req, validators, errors, opts = {}) {
74
+ const raw = (req.headers['content-type'] || '').split(';')[0].trim().toLowerCase();
75
+ const required = opts.required !== false;
76
+ if (!raw && !required)
77
+ return null;
78
+ const normalizedMap = {};
79
+ for (const key of validators.keys())
80
+ normalizedMap[key] = { schema: true };
81
+ const matched = matchContentType(raw, normalizedMap);
82
+ const validator = matched ? validators.get(matched) : undefined;
83
+ if (!validator) {
84
+ const supported = Array.from(validators.keys()).join(', ');
85
+ return new Err(400, null, `Content-Type ${raw || '(none)'} not supported. Supported: ${supported}`);
86
+ }
87
+ if (validator !== true) {
88
+ if (!validator(req.body)) {
89
+ errors.push({ type: 'Body', errors: validator.errors });
90
+ }
91
+ }
92
+ return null;
93
+ }
43
94
  constructor(router, opts = {}) {
44
95
  if (!router)
45
96
  throw new Error('Router Param Required');
@@ -49,8 +100,16 @@ export default class Schemas {
49
100
  const morganOptions = opts.logging && typeof opts.logging === 'object' ? opts.logging : {};
50
101
  this.router.use(morgan('combined', morganOptions));
51
102
  }
52
- this.router.use(bodyparser.urlencoded({ extended: true }));
103
+ this.router.use(bodyparser.urlencoded({ extended: true, limit: `${opts.limit || 50}mb` }));
53
104
  this.router.use(bodyparser.json({ limit: `${opts.limit || 50}mb` }));
105
+ this.router.use(bodyparser.text({
106
+ limit: `${opts.limit || 50}mb`,
107
+ type: ['text/*', 'application/xml', 'application/*+xml']
108
+ }));
109
+ this.router.use(bodyparser.raw({
110
+ limit: `${opts.limit || 50}mb`,
111
+ type: ['application/octet-stream']
112
+ }));
54
113
  if (opts.error) {
55
114
  this.error = opts.error;
56
115
  }
@@ -63,6 +122,12 @@ export default class Schemas {
63
122
  });
64
123
  this.schemas = new Map();
65
124
  }
125
+ normalizeValidation(opts = {}) {
126
+ return {
127
+ deprecated: false,
128
+ ...opts
129
+ };
130
+ }
66
131
  async api() {
67
132
  await SchemaAPI(this);
68
133
  }
@@ -109,12 +174,13 @@ export default class Schemas {
109
174
  }
110
175
  async get(path, opts = {}, handler) {
111
176
  try {
112
- this.docs.push({ method: Doc.HttpMethods.GET, path: path }, opts);
113
- this.schemas.set(`GET ${path}`, opts);
114
- const resValidation = opts.res && !(opts.res instanceof Type.Any) && !(opts.res instanceof Type.Unknown) && ajv.compile(opts.res);
115
- const paramsValidation = opts.params && ajv.compile(opts.params);
116
- const queryValidation = opts.query && ajv.compile(opts.query);
117
- if (opts.body)
177
+ const validation = this.normalizeValidation(opts);
178
+ this.docs.push({ method: Doc.HttpMethods.GET, path: path }, validation);
179
+ this.schemas.set(`GET ${path}`, validation);
180
+ const resValidation = validation.res && !(validation.res instanceof Type.Any) && !(validation.res instanceof Type.Unknown) && ajv.compile(validation.res);
181
+ const paramsValidation = validation.params && ajv.compile(validation.params);
182
+ const queryValidation = validation.query && ajv.compile(validation.query);
183
+ if (validation.body)
118
184
  throw new Error(`Body not allowed`);
119
185
  const _handler = (req, res, next) => {
120
186
  if (req.query) { // Ref: https://github.com/cdimascio/express-openapi-validator/issues/969
@@ -152,12 +218,13 @@ export default class Schemas {
152
218
  }
153
219
  async delete(path, opts = {}, handler) {
154
220
  try {
155
- this.docs.push({ method: Doc.HttpMethods.DELETE, path: path }, opts);
156
- this.schemas.set(`DELETE ${path}`, opts);
157
- const resValidation = opts.res && !(opts.res instanceof Type.Any) && !(opts.res instanceof Type.Unknown) && ajv.compile(opts.res);
158
- const paramsValidation = opts.params && ajv.compile(opts.params);
159
- const queryValidation = opts.query && ajv.compile(opts.query);
160
- if (opts.body)
221
+ const validation = this.normalizeValidation(opts);
222
+ this.docs.push({ method: Doc.HttpMethods.DELETE, path: path }, validation);
223
+ this.schemas.set(`DELETE ${path}`, validation);
224
+ const resValidation = validation.res && !(validation.res instanceof Type.Any) && !(validation.res instanceof Type.Unknown) && ajv.compile(validation.res);
225
+ const paramsValidation = validation.params && ajv.compile(validation.params);
226
+ const queryValidation = validation.query && ajv.compile(validation.query);
227
+ if (validation.body)
161
228
  throw new Error(`Body not allowed`);
162
229
  const _handler = (req, res, next) => {
163
230
  if (req.query) { // Ref: https://github.com/cdimascio/express-openapi-validator/issues/969
@@ -195,12 +262,13 @@ export default class Schemas {
195
262
  }
196
263
  async post(path, opts = {}, handler) {
197
264
  try {
198
- this.docs.push({ method: Doc.HttpMethods.POST, path: path }, opts);
199
- this.schemas.set(`POST ${path}`, opts);
200
- const resValidation = opts.res && !(opts.res instanceof Type.Any) && !(opts.res instanceof Type.Unknown) && ajv.compile(opts.res);
201
- const paramsValidation = opts.params && ajv.compile(opts.params);
202
- const queryValidation = opts.query && ajv.compile(opts.query);
203
- const bodyValidation = opts.body && ajv.compile(opts.body);
265
+ const validation = this.normalizeValidation(opts);
266
+ this.docs.push({ method: Doc.HttpMethods.POST, path: path }, validation);
267
+ this.schemas.set(`POST ${path}`, validation);
268
+ const resValidation = validation.res && !(validation.res instanceof Type.Any) && !(validation.res instanceof Type.Unknown) && ajv.compile(validation.res);
269
+ const paramsValidation = validation.params && ajv.compile(validation.params);
270
+ const queryValidation = validation.query && ajv.compile(validation.query);
271
+ const bodyValidators = this.compileBodyValidators(validation.body);
204
272
  const _handler = (req, res, next) => {
205
273
  if (req.query) { // Ref: https://github.com/cdimascio/express-openapi-validator/issues/969
206
274
  Object.defineProperty(req, 'query', {
@@ -213,8 +281,11 @@ export default class Schemas {
213
281
  errors.push({ type: 'Params', errors: paramsValidation.errors });
214
282
  if (queryValidation && !queryValidation(req.query))
215
283
  errors.push({ type: 'Query', errors: queryValidation.errors });
216
- if (bodyValidation && !bodyValidation(req.body))
217
- errors.push({ type: 'Body', errors: bodyValidation.errors });
284
+ if (bodyValidators) {
285
+ const ctErr = this.validateBody(req, bodyValidators, errors, { required: validation.bodyRequired });
286
+ if (ctErr)
287
+ return Err.respond(ctErr, res);
288
+ }
218
289
  if (errors.length)
219
290
  return Err.respond(this.validationError(Doc.HttpMethods.POST, path), res, errors);
220
291
  const json = res.json;
@@ -239,12 +310,13 @@ export default class Schemas {
239
310
  }
240
311
  async patch(path, opts = {}, handler) {
241
312
  try {
242
- this.docs.push({ method: Doc.HttpMethods.PATCH, path: path }, opts);
243
- this.schemas.set(`PATCH ${path}`, opts);
244
- const resValidation = opts.res && !(opts.res instanceof Type.Any) && !(opts.res instanceof Type.Unknown) && ajv.compile(opts.res);
245
- const paramsValidation = opts.params && ajv.compile(opts.params);
246
- const queryValidation = opts.query && ajv.compile(opts.query);
247
- const bodyValidation = opts.body && ajv.compile(opts.body);
313
+ const validation = this.normalizeValidation(opts);
314
+ this.docs.push({ method: Doc.HttpMethods.PATCH, path: path }, validation);
315
+ this.schemas.set(`PATCH ${path}`, validation);
316
+ const resValidation = validation.res && !(validation.res instanceof Type.Any) && !(validation.res instanceof Type.Unknown) && ajv.compile(validation.res);
317
+ const paramsValidation = validation.params && ajv.compile(validation.params);
318
+ const queryValidation = validation.query && ajv.compile(validation.query);
319
+ const bodyValidators = this.compileBodyValidators(validation.body);
248
320
  const _handler = (req, res, next) => {
249
321
  if (req.query) { // Ref: https://github.com/cdimascio/express-openapi-validator/issues/969
250
322
  Object.defineProperty(req, 'query', {
@@ -257,8 +329,11 @@ export default class Schemas {
257
329
  errors.push({ type: 'Params', errors: paramsValidation.errors });
258
330
  if (queryValidation && !queryValidation(req.query))
259
331
  errors.push({ type: 'Query', errors: queryValidation.errors });
260
- if (bodyValidation && !bodyValidation(req.body))
261
- errors.push({ type: 'Body', errors: bodyValidation.errors });
332
+ if (bodyValidators) {
333
+ const ctErr = this.validateBody(req, bodyValidators, errors, { required: validation.bodyRequired });
334
+ if (ctErr)
335
+ return Err.respond(ctErr, res);
336
+ }
262
337
  if (errors.length)
263
338
  return Err.respond(this.validationError(Doc.HttpMethods.PATCH, path), res, errors);
264
339
  const json = res.json;
@@ -283,12 +358,13 @@ export default class Schemas {
283
358
  }
284
359
  async put(path, opts = {}, handler) {
285
360
  try {
286
- this.docs.push({ method: Doc.HttpMethods.PUT, path: path }, opts);
287
- this.schemas.set(`PUT ${path}`, opts);
288
- const resValidation = opts.res && !(opts.res instanceof Type.Any) && !(opts.res instanceof Type.Unknown) && ajv.compile(opts.res);
289
- const paramsValidation = opts.params && ajv.compile(opts.params);
290
- const queryValidation = opts.query && ajv.compile(opts.query);
291
- const bodyValidation = opts.body && ajv.compile(opts.body);
361
+ const validation = this.normalizeValidation(opts);
362
+ this.docs.push({ method: Doc.HttpMethods.PUT, path: path }, validation);
363
+ this.schemas.set(`PUT ${path}`, validation);
364
+ const resValidation = validation.res && !(validation.res instanceof Type.Any) && !(validation.res instanceof Type.Unknown) && ajv.compile(validation.res);
365
+ const paramsValidation = validation.params && ajv.compile(validation.params);
366
+ const queryValidation = validation.query && ajv.compile(validation.query);
367
+ const bodyValidators = this.compileBodyValidators(validation.body);
292
368
  const _handler = (req, res, next) => {
293
369
  if (req.query) { // Ref: https://github.com/cdimascio/express-openapi-validator/issues/969
294
370
  Object.defineProperty(req, 'query', {
@@ -301,8 +377,11 @@ export default class Schemas {
301
377
  errors.push({ type: 'Params', errors: paramsValidation.errors });
302
378
  if (queryValidation && !queryValidation(req.query))
303
379
  errors.push({ type: 'Query', errors: queryValidation.errors });
304
- if (bodyValidation && !bodyValidation(req.body))
305
- errors.push({ type: 'Body', errors: bodyValidation.errors });
380
+ if (bodyValidators) {
381
+ const ctErr = this.validateBody(req, bodyValidators, errors, { required: validation.bodyRequired });
382
+ if (ctErr)
383
+ return Err.respond(ctErr, res);
384
+ }
306
385
  if (errors.length)
307
386
  return Err.respond(this.validationError(Doc.HttpMethods.PUT, path), res, errors);
308
387
  const json = res.json;
@@ -340,6 +419,7 @@ export default class Schemas {
340
419
  }
341
420
  const schema = JSON.parse(JSON.stringify(this.schemas.get(`${method} ${url}`)));
342
421
  return {
422
+ deprecated: schema.deprecated,
343
423
  query: schema.query,
344
424
  body: schema.body,
345
425
  res: schema.res
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../lib/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../lib/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,UAAU,MAAM,aAAa,CAAC;AACrC,OAAO,GAAG,MAAM,4BAA4B,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEzC,OAAO,EAAE,SAAS,IAAI,GAAG,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAEhC,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAEzB,OAAO,gBAAgB,MAAM,aAAa,CAAA;AAE1C,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE7D,OAAO,SAAS,MAAM,UAAU,CAAC;AACjC,OAAO,IAAI,MAAM,cAAc,CAAC;AAEhC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC;IAChB,MAAM,EAAE,KAAK;IACb,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,IAAI;IACjB,gBAAgB,EAAE,KAAK;IACvB,WAAW,EAAE,IAAI;CACpB,CAAC,CAAC;AAEH,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAI9B;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,OAAO,OAAO,OAAO;IACxB,MAAM,CAAS;IACf,IAAI,CAAO;IACX,MAAM,CAAS;IACf,KAAK,CAA0B;IAC/B,OAAO,CAAoE;IAE3E,eAAe,CAAC,MAAuB,EAAE,IAAY;QACjD,OAAO,IAAI,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,oBAAoB,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;IAC1F,CAAC;IAED;;;;OAIG;IACH,qBAAqB,CACjB,IAAmE;QAEnE,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC;QAE7B,MAAM,GAAG,GAAG,IAAI,GAAG,EAAiD,CAAC;QACrE,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACvC,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;YACrC,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC1C,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YACtB,CAAC;iBAAM,CAAC;gBACJ,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;YACrC,CAAC;QACL,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED;;;;;;;OAOG;IACH,YAAY,CACR,GAAY,EACZ,UAA8D,EAC9D,MAA4B,EAC5B,OAA+B,EAAE;QAEjC,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACnF,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC;QAEzC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAEnC,MAAM,aAAa,GAAqC,EAAE,CAAC;QAC3D,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE;YAAE,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QAC3E,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAEhE,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3D,OAAO,IAAI,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,gBAAgB,GAAG,IAAI,QAAQ,8BAA8B,SAAS,EAAE,CAAC,CAAC;QACxG,CAAC;QAED,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,MAAuB,EAAE,CAAC,CAAC;YAC7E,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,YACI,MAAc,EACd,OAMI,EAAE;QAEN,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAEtD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;QAEhC,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YACzB,MAAM,aAAa,GAAsC,IAAI,CAAC,OAAO,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9H,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC;QACvD,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC3F,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;YAC5B,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,IAAI;YAC9B,IAAI,EAAE,CAAC,QAAQ,EAAE,iBAAiB,EAAE,mBAAmB,CAAC;SAC3D,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;YAC3B,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,IAAI;YAC9B,IAAI,EAAE,CAAC,0BAA0B,CAAC;SACrC,CAAC,CAAC,CAAC;QAEJ,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAC5B,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QACpB,CAAC;QAED,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAC/B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;SACpB,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;IAC7B,CAAC;IAED,mBAAmB,CACf,OAA6D,EAAE;QAE/D,OAAO;YACH,UAAU,EAAE,KAAK;YACjB,GAAG,IAAI;SACV,CAAC;IACN,CAAC;IAED,KAAK,CAAC,GAAG;QACL,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,IAAI,CAAI,OAAqB,EAAE,MAAS,EAAE,OAE5C;QACA,MAAM,EAAE,KAAK;KAChB;QACG,IAAI,OAAO,YAAY,GAAG;YAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;;YAClD,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAE/B,MAAM,MAAM,GAAyD,EAAE,CAAC;QAExE,gCAAgC;QAChC,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;YACzD,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;gBAAE,SAAS;YAC1D,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QAChF,CAAC;QAED,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAE1B,IAAI,CAAC,SAAS,EAAE,CAAC;IACrB,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,SAAS,CAAI,KAAqD,EAAE,MAAU,EAAE,OAElF,EAAE,MAAM,EAAE,KAAK,EAAE;QACjB,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACvD,MAAM,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,GAAG,CACL,IAAY,EACZ,OAA6D,EAAE,EAC/D,OAA0F;QAE1F,IAAI,CAAC;YACD,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;YAElD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;YACxE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;YAE5C,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,YAAY,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,YAAY,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAC1J,MAAM,gBAAgB,GAAG,UAAU,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAC7E,MAAM,eAAe,GAAG,UAAU,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAC1E,IAAI,UAAU,CAAC,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;YAEzD,MAAM,QAAQ,GAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;gBAChD,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,yEAAyE;oBACtF,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE;wBAChC,QAAQ,EAAE,IAAI;wBACd,KAAK,EAAE,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE;qBAC1B,CAAC,CAAA;gBACN,CAAC;gBAED,MAAM,MAAM,GAAyB,EAAE,CAAC;gBACxC,IAAI,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC;oBAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,CAAC,MAAuB,EAAE,CAAC,CAAC;gBACzI,IAAI,eAAe,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC;oBAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,CAAC,MAAuB,EAAE,CAAC,CAAC;gBACpI,IAAI,MAAM,CAAC,MAAM;oBAAE,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;gBAEpG,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;gBACtB,GAAG,CAAC,IAAI,GAAG,UAAS,GAAG;oBACnB,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA,CAAC,yCAAyC;oBAC/E,IAAI,CAAC,GAAG,CAAC,UAAU,KAAK,IAAI,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,CAAC,IAAI,aAAa,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;wBAC9F,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;wBAChB,OAAO,CAAC,KAAK,CAAC,8BAA8B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;wBACnE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC,MAAuB,EAAE,CAAC,CAAC;oBAChG,CAAC;yBAAM,CAAC;wBACJ,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;oBAChC,CAAC;gBACL,CAAC,CAAC;gBAEF,OAAO,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YACnC,CAAC,CAAC;YAEF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,IAAI,GAAG,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;QAC3D,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CACR,IAAY,EACZ,OAA6D,EAAE,EAC/D,OAA0F;QAE1F,IAAI,CAAC;YACD,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;YAElD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;YAC3E,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;YAE/C,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,YAAY,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,YAAY,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAC1J,MAAM,gBAAgB,GAAG,UAAU,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAC7E,MAAM,eAAe,GAAG,UAAU,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAC1E,IAAI,UAAU,CAAC,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;YAEzD,MAAM,QAAQ,GAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;gBAChD,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,yEAAyE;oBACtF,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE;wBAChC,QAAQ,EAAE,IAAI;wBACd,KAAK,EAAE,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE;qBAC1B,CAAC,CAAA;gBACN,CAAC;gBAED,MAAM,MAAM,GAAyB,EAAE,CAAC;gBACxC,IAAI,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC;oBAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,CAAC,MAAuB,EAAE,CAAC,CAAC;gBACzI,IAAI,eAAe,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC;oBAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,CAAC,MAAuB,EAAE,CAAC,CAAC;gBACpI,IAAI,MAAM,CAAC,MAAM;oBAAE,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;gBAEvG,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;gBACtB,GAAG,CAAC,IAAI,GAAG,UAAS,GAAG;oBACnB,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA,CAAC,yCAAyC;oBAC/E,IAAI,CAAC,GAAG,CAAC,UAAU,KAAK,IAAI,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,CAAC,IAAI,aAAa,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;wBAC9F,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;wBAChB,OAAO,CAAC,KAAK,CAAC,8BAA8B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;wBACnE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC,MAAuB,EAAE,CAAC,CAAC;oBAChG,CAAC;yBAAM,CAAC;wBACJ,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;oBAChC,CAAC;gBACL,CAAC,CAAC;gBAEF,OAAO,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YACnC,CAAC,CAAC;YAEF,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;QACtE,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI,CACN,IAAY,EACZ,OAA6D,EAAE,EAC/D,OAA0F;QAE1F,IAAI,CAAC;YACD,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;YAElD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;YACzE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;YAE7C,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,YAAY,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,YAAY,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAC1J,MAAM,gBAAgB,GAAG,UAAU,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAC7E,MAAM,eAAe,GAAG,UAAU,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAC1E,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAEnE,MAAM,QAAQ,GAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;gBAChD,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,yEAAyE;oBACtF,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE;wBAChC,QAAQ,EAAE,IAAI;wBACd,KAAK,EAAE,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE;qBAC1B,CAAC,CAAA;gBACN,CAAC;gBAED,MAAM,MAAM,GAAyB,EAAE,CAAC;gBACxC,IAAI,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC;oBAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,CAAC,MAAuB,EAAE,CAAC,CAAC;gBACzI,IAAI,eAAe,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC;oBAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,CAAC,MAAuB,EAAE,CAAC,CAAC;gBACpI,IAAI,cAAc,EAAE,CAAC;oBACjB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;oBACpG,IAAI,KAAK;wBAAE,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9C,CAAC;gBACD,IAAI,MAAM,CAAC,MAAM;oBAAE,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;gBAErG,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;gBACtB,GAAG,CAAC,IAAI,GAAG,UAAS,GAAG;oBACnB,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA,CAAC,yCAAyC;oBAC/E,IAAI,CAAC,GAAG,CAAC,UAAU,KAAK,IAAI,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,CAAC,IAAI,aAAa,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;wBAC9F,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;wBAChB,OAAO,CAAC,KAAK,CAAC,8BAA8B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;wBACnE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC,MAAuB,EAAE,CAAC,CAAC;oBAChG,CAAC;yBAAM,CAAC;wBACJ,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;oBAChC,CAAC;gBACL,CAAC,CAAC;gBAEF,OAAO,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YACnC,CAAC,CAAC;YAEF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,SAAS,IAAI,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;QACpE,CAAC;IACL,CAAC;IAED,KAAK,CAAC,KAAK,CACP,IAAY,EACZ,OAA6D,EAAE,EAC/D,OAA0F;QAE1F,IAAI,CAAC;YACD,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;YAElD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;YAC1E,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;YAE9C,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,YAAY,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,YAAY,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAC1J,MAAM,gBAAgB,GAAG,UAAU,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAC7E,MAAM,eAAe,GAAG,UAAU,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAC1E,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAEnE,MAAM,QAAQ,GAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;gBAChD,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,yEAAyE;oBACtF,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE;wBAChC,QAAQ,EAAE,IAAI;wBACd,KAAK,EAAE,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE;qBAC1B,CAAC,CAAA;gBACN,CAAC;gBAED,MAAM,MAAM,GAAyB,EAAE,CAAC;gBACxC,IAAI,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC;oBAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,CAAC,MAAuB,EAAE,CAAC,CAAC;gBACzI,IAAI,eAAe,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC;oBAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,CAAC,MAAuB,EAAE,CAAC,CAAC;gBACpI,IAAI,cAAc,EAAE,CAAC;oBACjB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;oBACpG,IAAI,KAAK;wBAAE,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9C,CAAC;gBACD,IAAI,MAAM,CAAC,MAAM;oBAAE,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;gBAEtG,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;gBACtB,GAAG,CAAC,IAAI,GAAG,UAAS,GAAG;oBACnB,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA,CAAC,yCAAyC;oBAC/E,IAAI,CAAC,GAAG,CAAC,UAAU,KAAK,IAAI,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,CAAC,IAAI,aAAa,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;wBAC9F,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;wBAChB,OAAO,CAAC,KAAK,CAAC,8BAA8B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;wBACnE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC,MAAuB,EAAE,CAAC,CAAC;oBAChG,CAAC;yBAAM,CAAC;wBACJ,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;oBAChC,CAAC;gBACL,CAAC,CAAC;gBAEF,OAAO,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YACnC,CAAC,CAAC;YAEF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,UAAU,IAAI,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;QACrE,CAAC;IACL,CAAC;IAED,KAAK,CAAC,GAAG,CACL,IAAY,EACZ,OAA6D,EAAE,EAC/D,OAA0F;QAE1F,IAAI,CAAC;YACD,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;YAElD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;YACxE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;YAE5C,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,YAAY,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,YAAY,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAC1J,MAAM,gBAAgB,GAAG,UAAU,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAC7E,MAAM,eAAe,GAAG,UAAU,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAC1E,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAEnE,MAAM,QAAQ,GAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;gBAChD,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,yEAAyE;oBACtF,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE;wBAChC,QAAQ,EAAE,IAAI;wBACd,KAAK,EAAE,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE;qBAC1B,CAAC,CAAA;gBACN,CAAC;gBAED,MAAM,MAAM,GAAyB,EAAE,CAAC;gBACxC,IAAI,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC;oBAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,CAAC,MAAuB,EAAE,CAAC,CAAC;gBACzI,IAAI,eAAe,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC;oBAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,CAAC,MAAuB,EAAE,CAAC,CAAC;gBACpI,IAAI,cAAc,EAAE,CAAC;oBACjB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;oBACpG,IAAI,KAAK;wBAAE,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9C,CAAC;gBACD,IAAI,MAAM,CAAC,MAAM;oBAAE,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;gBAEpG,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;gBACtB,GAAG,CAAC,IAAI,GAAG,UAAS,GAAG;oBACnB,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA,CAAC,yCAAyC;oBAC/E,IAAI,CAAC,GAAG,CAAC,UAAU,KAAK,IAAI,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,CAAC,IAAI,aAAa,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;wBAC9F,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;wBAChB,OAAO,CAAC,KAAK,CAAC,8BAA8B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;wBACnE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC,MAAuB,EAAE,CAAC,CAAC;oBAChG,CAAC;yBAAM,CAAC;wBACJ,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;oBAChC,CAAC;gBACL,CAAC,CAAC;gBAEF,OAAO,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YACnC,CAAC,CAAC;YAEF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;QACnE,CAAC;IACL,CAAC;IAED,SAAS;QACL,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAClC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACjB,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,8BAA8B;gBACvC,QAAQ,EAAE,EAAE;aACf,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,KAAK,CAAC,MAAuB,EAAE,GAAW;QAMtC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC;YACxC,OAAO,EAAE,CAAC;QACd,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAEhF,OAAO;YACH,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,GAAG,EAAE,MAAM,CAAC,GAAG;SAClB,CAAC;IACN,CAAC;IAED,IAAI;QAOA,MAAM,IAAI,GAMN,EAAE,CAAC;QAEP,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACrC,IAAI,CAAC,MAAM;gBAAE,SAAS;YAEtB,IAAI,CAAC,GAAG,CAAC,GAAG;gBACR,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI;gBACnB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK;gBACrB,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG;aACpB,CAAC;QACN,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ"}
@@ -1,11 +1,59 @@
1
1
  import type { TSchema } from '@sinclair/typebox';
2
+ /**
3
+ * Per-content-type body entry. May be:
4
+ * - a TypeBox schema (validated, no example)
5
+ * - `true` (any body accepted, no validation)
6
+ * - an object with optional `schema` (TSchema | true), `example`, `examples`
7
+ * (forwarded to the OpenAPI media type object)
8
+ */
9
+ export type BodyEntryConfig = {
10
+ schema?: TSchema | true;
11
+ example?: unknown;
12
+ examples?: Record<string, {
13
+ summary?: string;
14
+ description?: string;
15
+ value: unknown;
16
+ }>;
17
+ };
18
+ export type BodyEntry = TSchema | true | BodyEntryConfig;
19
+ /**
20
+ * Body validation can either be:
21
+ * - a TypeBox schema (treated as `application/json` for backwards compatibility)
22
+ * - a record mapping content-type strings to a `BodyEntry`. Content-type
23
+ * keys may include wildcards: `text/*`, `application/*`, or `* / *`.
24
+ */
25
+ export type BodyValidation<TBody extends TSchema> = TBody | Record<string, BodyEntry>;
26
+ /**
27
+ * Normalized internal representation: every entry has the expanded
28
+ * `BodyEntryConfig` shape with `schema` always set (defaulting to `true`).
29
+ */
30
+ export type NormalizedBody = Record<string, Required<Pick<BodyEntryConfig, 'schema'>> & BodyEntryConfig>;
31
+ /**
32
+ * Detect whether a given value is a TypeBox schema. TypeBox attaches a
33
+ * `[Kind]` symbol to every schema instance which is what we use to
34
+ * distinguish a schema from a content-type-keyed body record.
35
+ */
36
+ export declare function isTSchema(value: unknown): value is TSchema;
37
+ /**
38
+ * Normalize the body option into a `NormalizedBody` map. A bare TypeBox
39
+ * schema is mapped to `application/json` for backwards compatibility.
40
+ */
41
+ export declare function normalizeBody(body: TSchema | Record<string, BodyEntry> | undefined): NormalizedBody | undefined;
42
+ /**
43
+ * Match an incoming content-type against a normalized body map, honoring
44
+ * wildcard entries like `text/*` or `*\/*`. Exact matches always win.
45
+ */
46
+ export declare function matchContentType(incoming: string, normalized: NormalizedBody): string | undefined;
2
47
  export type RequestValidation<TParams extends TSchema, TQuery extends TSchema, TBody extends TSchema, TResponse extends TSchema> = {
3
48
  private?: boolean;
49
+ deprecated?: boolean;
4
50
  name?: string;
5
51
  group?: string;
6
52
  description?: string;
7
53
  params?: TParams;
8
54
  query?: TQuery;
9
- body?: TBody;
55
+ body?: BodyValidation<TBody>;
56
+ /** Whether the request body is required. Defaults to true when `body` is set. */
57
+ bodyRequired?: boolean;
10
58
  res?: TResponse;
11
59
  };