@databehave/server 0.1.4 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/README.md +85 -83
  3. package/dist/cors.d.ts +1 -1
  4. package/dist/cors.js +1 -1
  5. package/dist/cors.js.map +1 -1
  6. package/dist/http.d.ts +94 -0
  7. package/dist/http.d.ts.map +1 -0
  8. package/dist/http.js +23 -0
  9. package/dist/http.js.map +1 -0
  10. package/dist/index.d.ts +10 -20
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +8 -18
  13. package/dist/index.js.map +1 -1
  14. package/dist/log.d.ts +9 -49
  15. package/dist/log.d.ts.map +1 -1
  16. package/dist/log.js +16 -92
  17. package/dist/log.js.map +1 -1
  18. package/dist/node-authority.d.ts +12 -0
  19. package/dist/node-authority.d.ts.map +1 -0
  20. package/dist/node-authority.js +72 -0
  21. package/dist/node-authority.js.map +1 -0
  22. package/dist/node-body.d.ts +11 -0
  23. package/dist/node-body.d.ts.map +1 -0
  24. package/dist/node-body.js +61 -0
  25. package/dist/node-body.js.map +1 -0
  26. package/dist/node-http.d.ts +19 -0
  27. package/dist/node-http.d.ts.map +1 -0
  28. package/dist/node-http.js +210 -0
  29. package/dist/node-http.js.map +1 -0
  30. package/dist/plugins/access-log.d.ts +11 -0
  31. package/dist/plugins/access-log.d.ts.map +1 -0
  32. package/dist/plugins/access-log.js +27 -0
  33. package/dist/plugins/access-log.js.map +1 -0
  34. package/dist/plugins/cors.d.ts +5 -0
  35. package/dist/plugins/cors.d.ts.map +1 -0
  36. package/dist/plugins/cors.js +35 -0
  37. package/dist/plugins/cors.js.map +1 -0
  38. package/dist/plugins/routes.d.ts +5 -0
  39. package/dist/plugins/routes.d.ts.map +1 -0
  40. package/dist/plugins/routes.js +10 -0
  41. package/dist/plugins/routes.js.map +1 -0
  42. package/dist/request.d.ts +2 -2
  43. package/dist/request.d.ts.map +1 -1
  44. package/dist/request.js +6 -4
  45. package/dist/request.js.map +1 -1
  46. package/dist/route-key.d.ts +2 -0
  47. package/dist/route-key.d.ts.map +1 -1
  48. package/dist/route-key.js +5 -1
  49. package/dist/route-key.js.map +1 -1
  50. package/dist/server.d.ts +7 -59
  51. package/dist/server.d.ts.map +1 -1
  52. package/dist/server.js +289 -466
  53. package/dist/server.js.map +1 -1
  54. package/dist/types.d.ts +10 -156
  55. package/dist/types.d.ts.map +1 -1
  56. package/dist/types.js +1 -1
  57. package/package.json +11 -24
  58. package/dist/admin/admin-routes.d.ts +0 -42
  59. package/dist/admin/admin-routes.d.ts.map +0 -1
  60. package/dist/admin/admin-routes.js +0 -472
  61. package/dist/admin/admin-routes.js.map +0 -1
  62. package/dist/admin/admin-types.d.ts +0 -170
  63. package/dist/admin/admin-types.d.ts.map +0 -1
  64. package/dist/admin/admin-types.js +0 -30
  65. package/dist/admin/admin-types.js.map +0 -1
  66. package/dist/admin/banner.d.ts +0 -11
  67. package/dist/admin/banner.d.ts.map +0 -1
  68. package/dist/admin/banner.js +0 -5
  69. package/dist/admin/banner.js.map +0 -1
  70. package/dist/admin/header-parser.d.ts +0 -14
  71. package/dist/admin/header-parser.d.ts.map +0 -1
  72. package/dist/admin/header-parser.js +0 -171
  73. package/dist/admin/header-parser.js.map +0 -1
  74. package/dist/admin/inject.d.ts +0 -48
  75. package/dist/admin/inject.d.ts.map +0 -1
  76. package/dist/admin/inject.js +0 -167
  77. package/dist/admin/inject.js.map +0 -1
  78. package/dist/admin/overrides-store.d.ts +0 -18
  79. package/dist/admin/overrides-store.d.ts.map +0 -1
  80. package/dist/admin/overrides-store.js +0 -100
  81. package/dist/admin/overrides-store.js.map +0 -1
  82. package/dist/admin/resolve-cors.d.ts +0 -22
  83. package/dist/admin/resolve-cors.d.ts.map +0 -1
  84. package/dist/admin/resolve-cors.js +0 -28
  85. package/dist/admin/resolve-cors.js.map +0 -1
  86. package/dist/admin/scenarios-store.d.ts +0 -15
  87. package/dist/admin/scenarios-store.d.ts.map +0 -1
  88. package/dist/admin/scenarios-store.js +0 -109
  89. package/dist/admin/scenarios-store.js.map +0 -1
  90. package/dist/admin/ui.css +0 -1
  91. package/dist/admin/ui.html +0 -13
  92. package/dist/admin/ui.js +0 -240
  93. package/dist/bin-helpers.d.ts +0 -46
  94. package/dist/bin-helpers.d.ts.map +0 -1
  95. package/dist/bin-helpers.js +0 -61
  96. package/dist/bin-helpers.js.map +0 -1
  97. package/dist/bin.d.ts +0 -3
  98. package/dist/bin.d.ts.map +0 -1
  99. package/dist/bin.js +0 -86
  100. package/dist/bin.js.map +0 -1
  101. package/dist/define.d.ts +0 -26
  102. package/dist/define.d.ts.map +0 -1
  103. package/dist/define.js +0 -55
  104. package/dist/define.js.map +0 -1
  105. package/dist/json-config.d.ts +0 -170
  106. package/dist/json-config.d.ts.map +0 -1
  107. package/dist/json-config.js +0 -684
  108. package/dist/json-config.js.map +0 -1
  109. package/dist/jsonc.d.ts +0 -24
  110. package/dist/jsonc.d.ts.map +0 -1
  111. package/dist/jsonc.js +0 -125
  112. package/dist/jsonc.js.map +0 -1
  113. package/dist/middleware/request-validation.d.ts +0 -58
  114. package/dist/middleware/request-validation.d.ts.map +0 -1
  115. package/dist/middleware/request-validation.js +0 -328
  116. package/dist/middleware/request-validation.js.map +0 -1
  117. package/dist/mock-mode.d.ts +0 -95
  118. package/dist/mock-mode.d.ts.map +0 -1
  119. package/dist/mock-mode.js +0 -95
  120. package/dist/mock-mode.js.map +0 -1
  121. package/dist/openapi/auto-schema.d.ts +0 -83
  122. package/dist/openapi/auto-schema.d.ts.map +0 -1
  123. package/dist/openapi/auto-schema.js +0 -232
  124. package/dist/openapi/auto-schema.js.map +0 -1
  125. package/dist/openapi/generate.d.ts +0 -20
  126. package/dist/openapi/generate.d.ts.map +0 -1
  127. package/dist/openapi/generate.js +0 -121
  128. package/dist/openapi/generate.js.map +0 -1
  129. package/dist/openapi/loader.d.ts +0 -18
  130. package/dist/openapi/loader.d.ts.map +0 -1
  131. package/dist/openapi/loader.js +0 -25
  132. package/dist/openapi/loader.js.map +0 -1
  133. package/dist/openapi/register.d.ts +0 -58
  134. package/dist/openapi/register.d.ts.map +0 -1
  135. package/dist/openapi/register.js +0 -166
  136. package/dist/openapi/register.js.map +0 -1
  137. package/dist/openapi/seed.d.ts +0 -16
  138. package/dist/openapi/seed.d.ts.map +0 -1
  139. package/dist/openapi/seed.js +0 -58
  140. package/dist/openapi/seed.js.map +0 -1
  141. package/dist/openapi/translate.d.ts +0 -55
  142. package/dist/openapi/translate.d.ts.map +0 -1
  143. package/dist/openapi/translate.js +0 -319
  144. package/dist/openapi/translate.js.map +0 -1
  145. package/dist/openapi/walker.d.ts +0 -44
  146. package/dist/openapi/walker.d.ts.map +0 -1
  147. package/dist/openapi/walker.js +0 -15
  148. package/dist/openapi/walker.js.map +0 -1
  149. package/dist/run.d.ts +0 -27
  150. package/dist/run.d.ts.map +0 -1
  151. package/dist/run.js +0 -87
  152. package/dist/run.js.map +0 -1
  153. package/dist/validation/validate.d.ts +0 -38
  154. package/dist/validation/validate.d.ts.map +0 -1
  155. package/dist/validation/validate.js +0 -372
  156. package/dist/validation/validate.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"json-config.js","sourceRoot":"","sources":["../src/json-config.ts"],"names":[],"mappings":"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"}
package/dist/jsonc.d.ts DELETED
@@ -1,24 +0,0 @@
1
- /**
2
- * Minimal JSONC → JSON sanitizer (zero-dep).
3
- *
4
- * Transforms JSONC source into strict JSON by:
5
- * 1. Replacing `// line comments` with spaces (newline preserved)
6
- * 2. Replacing `/* block comments * /` with spaces / newlines
7
- * 3. Removing trailing commas immediately before `}` or `]`
8
- *
9
- * Character positions (line + column) are preserved so any subsequent
10
- * `JSON.parse` error messages point at the right spot in the original
11
- * source. The output is byte-for-byte parseable by the native
12
- * `JSON.parse` — no JSON5 numeric/identifier extensions are accepted.
13
- *
14
- * Single-pass character scanner. String contents (including escaped
15
- * quotes) are passed through untouched, so `//`, `/*`, and `,` inside
16
- * string literals are never mistaken for syntax tokens.
17
- */
18
- /**
19
- * Strip JSONC features from `input` so the result is strict JSON.
20
- *
21
- * Always safe to call on valid JSON (it becomes a no-op pass-through).
22
- */
23
- export declare const stripJsonc: (input: string) => string;
24
- //# sourceMappingURL=jsonc.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"jsonc.d.ts","sourceRoot":"","sources":["../src/jsonc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;GAIG;AACH,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,KAAG,MA6G1C,CAAA"}
package/dist/jsonc.js DELETED
@@ -1,125 +0,0 @@
1
- /**
2
- * Minimal JSONC → JSON sanitizer (zero-dep).
3
- *
4
- * Transforms JSONC source into strict JSON by:
5
- * 1. Replacing `// line comments` with spaces (newline preserved)
6
- * 2. Replacing `/* block comments * /` with spaces / newlines
7
- * 3. Removing trailing commas immediately before `}` or `]`
8
- *
9
- * Character positions (line + column) are preserved so any subsequent
10
- * `JSON.parse` error messages point at the right spot in the original
11
- * source. The output is byte-for-byte parseable by the native
12
- * `JSON.parse` — no JSON5 numeric/identifier extensions are accepted.
13
- *
14
- * Single-pass character scanner. String contents (including escaped
15
- * quotes) are passed through untouched, so `//`, `/*`, and `,` inside
16
- * string literals are never mistaken for syntax tokens.
17
- */
18
- /**
19
- * Strip JSONC features from `input` so the result is strict JSON.
20
- *
21
- * Always safe to call on valid JSON (it becomes a no-op pass-through).
22
- */
23
- export const stripJsonc = (input) => {
24
- const n = input.length;
25
- const out = [];
26
- /** Index in `out` of the last structural `,` seen at the top level
27
- * (or `-1` if none is currently a candidate for trailing-removal). */
28
- let lastCommaIdx = -1;
29
- let i = 0;
30
- while (i < n) {
31
- const c = input[i];
32
- const next = i + 1 < n ? input[i + 1] : '';
33
- // --- string literal: copy verbatim, honour escapes ---
34
- if (c === '"') {
35
- out.push(c);
36
- i++;
37
- while (i < n) {
38
- const sc = input[i];
39
- if (sc === '\\' && i + 1 < n) {
40
- out.push(sc, input[i + 1]);
41
- i += 2;
42
- continue;
43
- }
44
- out.push(sc);
45
- i++;
46
- if (sc === '"')
47
- break;
48
- }
49
- // A string literal is a value token — clears any pending comma
50
- // tracking only when it isn't the first thing after `,`.
51
- // Actually: it does NOT clear, because the next non-ws token
52
- // after the string (`:` for keys, `,`/`]`/`}` for values) does
53
- // the right thing. Strings themselves are passed through.
54
- continue;
55
- }
56
- // --- line comment ---
57
- if (c === '/' && next === '/') {
58
- out.push(' ', ' ');
59
- i += 2;
60
- while (i < n && input[i] !== '\n') {
61
- out.push(' ');
62
- i++;
63
- }
64
- continue;
65
- }
66
- // --- block comment ---
67
- if (c === '/' && next === '*') {
68
- out.push(' ', ' ');
69
- i += 2;
70
- while (i < n) {
71
- if (input[i] === '*' && i + 1 < n && input[i + 1] === '/') {
72
- out.push(' ', ' ');
73
- i += 2;
74
- break;
75
- }
76
- out.push(input[i] === '\n' ? '\n' : ' ');
77
- i++;
78
- }
79
- continue;
80
- }
81
- if (c === ',') {
82
- lastCommaIdx = out.length;
83
- out.push(c);
84
- i++;
85
- continue;
86
- }
87
- if (c === '}' || c === ']') {
88
- if (lastCommaIdx >= 0) {
89
- let onlyWs = true;
90
- for (let k = lastCommaIdx + 1; k < out.length; k++) {
91
- const ch = out[k];
92
- if (ch !== ' ' && ch !== '\t' && ch !== '\n' && ch !== '\r') {
93
- onlyWs = false;
94
- break;
95
- }
96
- }
97
- if (onlyWs)
98
- out[lastCommaIdx] = ' ';
99
- }
100
- lastCommaIdx = -1;
101
- out.push(c);
102
- i++;
103
- continue;
104
- }
105
- if (c === '{' || c === '[') {
106
- lastCommaIdx = -1;
107
- out.push(c);
108
- i++;
109
- continue;
110
- }
111
- // Whitespace keeps the trailing-comma tracker alive.
112
- if (c === ' ' || c === '\t' || c === '\n' || c === '\r') {
113
- out.push(c);
114
- i++;
115
- continue;
116
- }
117
- // Any other character (numbers, true/false/null, etc.) is a value
118
- // token — it invalidates the trailing-comma candidate.
119
- lastCommaIdx = -1;
120
- out.push(c);
121
- i++;
122
- }
123
- return out.join('');
124
- };
125
- //# sourceMappingURL=jsonc.js.map
package/dist/jsonc.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"jsonc.js","sourceRoot":"","sources":["../src/jsonc.ts"],"names":[],"mappings":"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"}
@@ -1,58 +0,0 @@
1
- /**
2
- * Inbound request-validation middleware (opt-in, zero-runtime-dep).
3
- *
4
- * Builds per-route validator descriptors from the OpenAPI document at
5
- * server-start (build-time errors propagate up through the server
6
- * boot). Per-request, validates body / path / query / header
7
- * parameters and security against the schema and emits an RFC 7807
8
- * `application/problem+json` envelope on violation.
9
- *
10
- * Status mapping:
11
- * 400 — malformed JSON body
12
- * 401 — required security scheme not satisfied
13
- * 415 — request body content-type not declared by the spec
14
- * 422 — semantic validation failure (one or more `violations`)
15
- *
16
- * Body coercion: body validation is strict (no coercion) — mirroring
17
- * how a real client/server pair speaks JSON. Path / query / header
18
- * parameters arrive as strings on the wire, so they are coerced
19
- * (integer / number / boolean) before validation.
20
- */
21
- import type { OasDoc } from '../openapi/walker.js';
22
- import { type RoutePattern } from '../route-key.js';
23
- import { type Validator } from '../validation/validate.js';
24
- interface ParamSpec {
25
- readonly name: string;
26
- readonly in: 'query' | 'path' | 'header';
27
- readonly required: boolean;
28
- readonly type: string | null;
29
- readonly validator: Validator;
30
- }
31
- interface RouteValidator {
32
- readonly method: string;
33
- readonly pattern: RoutePattern;
34
- readonly hasJsonBody: boolean;
35
- readonly bodyOnlyJson: boolean;
36
- readonly bodyRequired: boolean;
37
- readonly bodyValidator: Validator | null;
38
- readonly params: readonly ParamSpec[];
39
- readonly security: readonly Readonly<Record<string, readonly string[]>>[];
40
- }
41
- interface SecurityScheme {
42
- readonly type: 'http' | 'apiKey' | 'oauth2' | 'openIdConnect';
43
- readonly scheme?: string;
44
- readonly in?: 'header' | 'query' | 'cookie';
45
- readonly name?: string;
46
- }
47
- export interface RequestValidationContext {
48
- readonly routes: readonly RouteValidator[];
49
- readonly schemes: ReadonlyMap<string, SecurityScheme>;
50
- /** Hard cap on JSON body size in bytes (UTF-8). Default 100 KB. */
51
- readonly maxBodyBytes: number;
52
- }
53
- export declare const createRequestValidationContext: (oas: OasDoc, options?: {
54
- readonly maxBodyBytes?: number;
55
- }) => RequestValidationContext;
56
- export declare const validateRequest: (req: Request, ctx: RequestValidationContext) => Promise<Response | null>;
57
- export {};
58
- //# sourceMappingURL=request-validation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"request-validation.d.ts","sourceRoot":"","sources":["../../src/middleware/request-validation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,EAAE,MAAM,EAAW,MAAM,sBAAsB,CAAA;AAC3D,OAAO,EAAmC,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAA;AACpF,OAAO,EAAoB,KAAK,SAAS,EAAkB,MAAM,2BAA2B,CAAA;AA+B5F,UAAU,SAAS;IACjB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAA;IACxC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAA;CAC9B;AAED,UAAU,cAAc;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAA;IAC9B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,aAAa,EAAE,SAAS,GAAG,IAAI,CAAA;IACxC,QAAQ,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,CAAA;IACrC,QAAQ,CAAC,QAAQ,EAAE,SAAS,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,EAAE,CAAA;CAC1E;AAED,UAAU,cAAc;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,eAAe,CAAA;IAC7D,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAA;IAC3C,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,MAAM,EAAE,SAAS,cAAc,EAAE,CAAA;IAC1C,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;IACrD,mEAAmE;IACnE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;CAC9B;AAiCD,eAAO,MAAM,8BAA8B,GACzC,KAAK,MAAM,EACX,UAAS;IAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAO,KAC/C,wBAsFF,CAAA;AAkGD,eAAO,MAAM,eAAe,GAC1B,KAAK,OAAO,EACZ,KAAK,wBAAwB,KAC5B,OAAO,CAAC,QAAQ,GAAG,IAAI,CA0IzB,CAAA"}
@@ -1,328 +0,0 @@
1
- import { matchPattern, parseRoutePattern } from '../route-key.js';
2
- import { compileValidator } from '../validation/validate.js';
3
- const PROBLEM_TYPE_BASE = 'https://github.com/ochairo/databehave/blob/main/docs/errors';
4
- const PROBLEM_TYPE_SLUG = {
5
- 400: 'malformed-body',
6
- 401: 'unauthorized',
7
- 413: 'payload-too-large',
8
- 415: 'unsupported-media-type',
9
- 422: 'request-validation',
10
- };
11
- const problemType = (status) => `${PROBLEM_TYPE_BASE}/${PROBLEM_TYPE_SLUG[status] ?? 'request-validation'}.md`;
12
- const HTTP_METHODS = new Set(['get', 'post', 'put', 'delete', 'patch', 'options', 'head', 'trace']);
13
- // Default cap on request-body size (bytes). Matches the express
14
- // `body-parser` default; raise via `validation.maxBodyBytes` only if
15
- // the spec genuinely demands large bodies.
16
- const DEFAULT_MAX_BODY_BYTES = 102400;
17
- const STATUS_TITLES = {
18
- 400: 'Malformed request',
19
- 401: 'Unauthorized',
20
- 413: 'Payload too large',
21
- 415: 'Unsupported media type',
22
- 422: 'Request validation failed',
23
- };
24
- const isObj = (v) => typeof v === 'object' && v !== null && !Array.isArray(v);
25
- const oasPathToInternal = (p) => p
26
- .split('/')
27
- .map((s) => (s.startsWith('{') && s.endsWith('}') ? `:${s.slice(1, -1)}` : s))
28
- .join('/');
29
- const resolveParam = (raw, doc) => {
30
- if (!isObj(raw))
31
- return null;
32
- let node = raw;
33
- if (typeof node.$ref === 'string') {
34
- const m = /^#\/components\/parameters\/(.+)$/.exec(node.$ref);
35
- if (!m)
36
- return null;
37
- const docAny = doc;
38
- const target = docAny.components?.parameters?.[decodeURIComponent(m[1])];
39
- if (!isObj(target))
40
- return null;
41
- node = target;
42
- }
43
- if (typeof node.in !== 'string' || typeof node.name !== 'string')
44
- return null;
45
- return node;
46
- };
47
- export const createRequestValidationContext = (oas, options = {}) => {
48
- const doc = oas;
49
- const schemes = new Map();
50
- for (const [name, scheme] of Object.entries(doc.components?.securitySchemes ?? {})) {
51
- if (isObj(scheme) && typeof scheme.type === 'string') {
52
- schemes.set(name, scheme);
53
- }
54
- }
55
- const globalSecurity = doc.security ?? [];
56
- const routes = [];
57
- for (const [oasPath, methods] of Object.entries(doc.paths ?? {})) {
58
- if (!isObj(methods))
59
- continue;
60
- let pattern;
61
- try {
62
- pattern = parseRoutePattern(oasPathToInternal(oasPath));
63
- }
64
- catch {
65
- continue;
66
- }
67
- const pathLevelParams = Array.isArray(methods.parameters)
68
- ? methods.parameters
69
- : [];
70
- for (const [methodName, op] of Object.entries(methods)) {
71
- if (methodName === 'parameters' || !HTTP_METHODS.has(methodName))
72
- continue;
73
- if (!isObj(op))
74
- continue;
75
- const opNode = op;
76
- const params = [];
77
- const rawParams = [...pathLevelParams, ...(opNode.parameters ?? [])];
78
- for (const raw of rawParams) {
79
- const p = resolveParam(raw, doc);
80
- if (!p || p.in === 'cookie')
81
- continue;
82
- const schema = (p.schema ?? {});
83
- const validator = compileValidator(schema, doc, `#/paths/${oasPath}/${methodName}/parameters/${p.name}`);
84
- params.push({
85
- name: p.name,
86
- in: p.in,
87
- required: p.required === true || p.in === 'path',
88
- type: typeof schema.type === 'string' ? schema.type : null,
89
- validator,
90
- });
91
- }
92
- const requestBody = opNode.requestBody;
93
- const content = requestBody?.content;
94
- const declaredTypes = content ? Object.keys(content) : [];
95
- const hasJsonBody = declaredTypes.length > 0;
96
- const bodyOnlyJson = hasJsonBody &&
97
- declaredTypes.every((c) => /^application\/json(\b|;)/i.test(c));
98
- const jsonSchema = content?.['application/json']?.schema;
99
- const bodyValidator = jsonSchema
100
- ? compileValidator(jsonSchema, doc, `#/paths/${oasPath}/${methodName}/requestBody`)
101
- : null;
102
- routes.push({
103
- method: methodName.toUpperCase(),
104
- pattern,
105
- hasJsonBody,
106
- bodyOnlyJson,
107
- bodyRequired: requestBody?.required === true,
108
- bodyValidator,
109
- params,
110
- security: opNode.security ?? globalSecurity,
111
- });
112
- }
113
- }
114
- return {
115
- routes,
116
- schemes,
117
- maxBodyBytes: typeof options.maxBodyBytes === 'number' && options.maxBodyBytes > 0
118
- ? options.maxBodyBytes
119
- : DEFAULT_MAX_BODY_BYTES,
120
- };
121
- };
122
- const coerce = (raw, type) => {
123
- if (type === 'integer') {
124
- if (!/^-?\d+$/.test(raw))
125
- return raw;
126
- const n = Number(raw);
127
- return Number.isFinite(n) ? n : raw;
128
- }
129
- if (type === 'number') {
130
- if (!/^-?\d+(?:\.\d+)?$/.test(raw))
131
- return raw;
132
- const n = Number(raw);
133
- return Number.isFinite(n) ? n : raw;
134
- }
135
- if (type === 'boolean') {
136
- if (raw === 'true')
137
- return true;
138
- if (raw === 'false')
139
- return false;
140
- return raw;
141
- }
142
- return raw;
143
- };
144
- const isSecuritySatisfied = (req, ctx, headers, url) => {
145
- const names = Object.keys(req);
146
- if (names.length === 0)
147
- return true;
148
- return names.every((name) => {
149
- const scheme = ctx.schemes.get(name);
150
- if (!scheme)
151
- return false;
152
- if (scheme.type === 'http') {
153
- const auth = headers.get('authorization') ?? '';
154
- const want = (scheme.scheme ?? 'bearer').toLowerCase();
155
- return new RegExp(`^${want}\\s+`, 'i').test(auth);
156
- }
157
- if (scheme.type === 'apiKey') {
158
- if (scheme.in === 'header' && scheme.name) {
159
- return headers.has(scheme.name.toLowerCase());
160
- }
161
- if (scheme.in === 'query' && scheme.name) {
162
- return url.searchParams.has(scheme.name);
163
- }
164
- return false;
165
- }
166
- // oauth2 / openIdConnect: presence-only check; full token validation
167
- // (introspection, signature verification) is out of scope for a
168
- // zero-dep walker. Consumers needing it should layer it via
169
- // `hooks.onRequest`.
170
- return headers.has('authorization');
171
- });
172
- };
173
- const buildAuthChallenge = (reqs, ctx) => {
174
- for (const r of reqs) {
175
- for (const name of Object.keys(r)) {
176
- const scheme = ctx.schemes.get(name);
177
- if (scheme?.type === 'http') {
178
- const s = (scheme.scheme ?? 'bearer').replace(/^./, (c) => c.toUpperCase());
179
- return { 'www-authenticate': `${s} realm="api"` };
180
- }
181
- }
182
- }
183
- return { 'www-authenticate': 'Bearer realm="api"' };
184
- };
185
- const problem = (status, detail, violations = [], extraHeaders = {}) => {
186
- const body = {
187
- type: problemType(status),
188
- title: STATUS_TITLES[status] ?? 'Request validation failed',
189
- status,
190
- detail,
191
- };
192
- if (violations.length > 0)
193
- body.violations = violations;
194
- return new Response(JSON.stringify(body), {
195
- status,
196
- headers: {
197
- 'content-type': 'application/problem+json',
198
- ...extraHeaders,
199
- },
200
- });
201
- };
202
- export const validateRequest = async (req, ctx) => {
203
- const url = new URL(req.url);
204
- const method = req.method.toUpperCase();
205
- let matched = null;
206
- for (const r of ctx.routes) {
207
- if (r.method !== method)
208
- continue;
209
- const params = matchPattern(r.pattern, url.pathname);
210
- if (params) {
211
- matched = { route: r, params };
212
- break;
213
- }
214
- }
215
- // Unmatched paths fall through — they are either hand-written routes
216
- // outside the OAS document or genuine 404s. Either way the validator
217
- // has no contract to enforce.
218
- if (!matched)
219
- return null;
220
- const { route, params } = matched;
221
- const headers = new Map();
222
- req.headers.forEach((v, k) => headers.set(k.toLowerCase(), v));
223
- // 1) Security gate.
224
- if (route.security.length > 0) {
225
- const ok = route.security.some((sr) => isSecuritySatisfied(sr, ctx, headers, url));
226
- if (!ok) {
227
- return problem(401, 'missing or invalid credentials', [], buildAuthChallenge(route.security, ctx));
228
- }
229
- }
230
- const hasBodyMethod = method !== 'GET' && method !== 'HEAD' && method !== 'OPTIONS';
231
- const contentType = (headers.get('content-type') ?? '').split(';')[0]?.trim().toLowerCase() ?? '';
232
- // 2) Content-Type guard for routes that declare a JSON-only requestBody.
233
- if (hasBodyMethod && route.bodyOnlyJson && contentType && contentType !== 'application/json') {
234
- return problem(415, `unsupported media type '${contentType}' (expected application/json)`);
235
- }
236
- const violations = [];
237
- // 3) Body parse + validate.
238
- if (hasBodyMethod && route.bodyValidator) {
239
- let raw = '';
240
- try {
241
- raw = await req.clone().text();
242
- /* c8 ignore start — `Request#clone().text()` only rejects on stream
243
- I/O errors which the in-process unit harness cannot trigger. */
244
- }
245
- catch {
246
- raw = '';
247
- }
248
- /* c8 ignore stop */
249
- if (raw.length === 0) {
250
- if (route.bodyRequired) {
251
- return problem(422, 'request body is required', [
252
- { path: '/body', keyword: 'required', message: 'missing required body' },
253
- ]);
254
- }
255
- }
256
- else {
257
- // Cap pre-parse body size (UTF-8 byte length, not JS string length).
258
- // Default matches express body-parser; raise via
259
- // `validation.maxBodyBytes` only if the spec demands large bodies.
260
- const byteLen = Buffer.byteLength(raw, 'utf8');
261
- if (byteLen > ctx.maxBodyBytes) {
262
- return problem(413, `request body exceeds maxBodyBytes (${ctx.maxBodyBytes})`);
263
- }
264
- let parsed;
265
- try {
266
- parsed = JSON.parse(raw);
267
- }
268
- catch {
269
- return problem(400, 'malformed JSON body');
270
- }
271
- violations.push(...route.bodyValidator(parsed, '/body'));
272
- }
273
- }
274
- // 4) Param validation (with type coercion for query/path/header).
275
- for (const p of route.params) {
276
- if (p.in === 'query') {
277
- const raw = url.searchParams.get(p.name);
278
- if (raw === null) {
279
- if (p.required) {
280
- violations.push({
281
- path: `/query/${p.name}`,
282
- keyword: 'required',
283
- message: 'missing required query parameter',
284
- });
285
- }
286
- continue;
287
- }
288
- violations.push(...p.validator(coerce(raw, p.type), `/query/${p.name}`));
289
- }
290
- else if (p.in === 'path') {
291
- const raw = params[p.name];
292
- // Defensive: `matchPattern` always populates every named path
293
- // segment when the route matches, so a missing path param is
294
- // unreachable in practice. Kept as a guard against future
295
- // refactors that loosen the matcher contract.
296
- /* c8 ignore start */
297
- if (raw === undefined) {
298
- violations.push({
299
- path: `/path/${p.name}`,
300
- keyword: 'required',
301
- message: 'missing required path parameter',
302
- });
303
- continue;
304
- }
305
- /* c8 ignore stop */
306
- violations.push(...p.validator(coerce(raw, p.type), `/path/${p.name}`));
307
- }
308
- else {
309
- const raw = headers.get(p.name.toLowerCase());
310
- if (raw === undefined) {
311
- if (p.required) {
312
- violations.push({
313
- path: `/header/${p.name}`,
314
- keyword: 'required',
315
- message: 'missing required header',
316
- });
317
- }
318
- continue;
319
- }
320
- violations.push(...p.validator(coerce(raw, p.type), `/header/${p.name}`));
321
- }
322
- }
323
- if (violations.length > 0) {
324
- return problem(422, `request validation failed (${violations.length} violation${violations.length === 1 ? '' : 's'})`, violations);
325
- }
326
- return null;
327
- };
328
- //# sourceMappingURL=request-validation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"request-validation.js","sourceRoot":"","sources":["../../src/middleware/request-validation.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAqB,MAAM,iBAAiB,CAAA;AACpF,OAAO,EAAE,gBAAgB,EAAkC,MAAM,2BAA2B,CAAA;AAE5F,MAAM,iBAAiB,GACrB,6DAA6D,CAAA;AAE/D,MAAM,iBAAiB,GAA2B;IAChD,GAAG,EAAE,gBAAgB;IACrB,GAAG,EAAE,cAAc;IACnB,GAAG,EAAE,mBAAmB;IACxB,GAAG,EAAE,wBAAwB;IAC7B,GAAG,EAAE,oBAAoB;CAC1B,CAAA;AAED,MAAM,WAAW,GAAG,CAAC,MAAc,EAAU,EAAE,CAC7C,GAAG,iBAAiB,IAAI,iBAAiB,CAAC,MAAM,CAAC,IAAI,oBAAoB,KAAK,CAAA;AAEhF,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;AAEnG,gEAAgE;AAChE,qEAAqE;AACrE,2CAA2C;AAC3C,MAAM,sBAAsB,GAAG,MAAM,CAAA;AAErC,MAAM,aAAa,GAA2B;IAC5C,GAAG,EAAE,mBAAmB;IACxB,GAAG,EAAE,cAAc;IACnB,GAAG,EAAE,mBAAmB;IACxB,GAAG,EAAE,wBAAwB;IAC7B,GAAG,EAAE,2BAA2B;CACjC,CAAA;AAmCD,MAAM,KAAK,GAAG,CAAC,CAAU,EAAgC,EAAE,CACzD,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;AAE1D,MAAM,iBAAiB,GAAG,CAAC,CAAS,EAAU,EAAE,CAC9C,CAAC;KACE,KAAK,CAAC,GAAG,CAAC;KACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAC7E,IAAI,CAAC,GAAG,CAAC,CAAA;AASd,MAAM,YAAY,GAAG,CAAC,GAAY,EAAE,GAAW,EAA4B,EAAE;IAC3E,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAA;IAC5B,IAAI,IAAI,GAA4B,GAAG,CAAA;IACvC,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAClC,MAAM,CAAC,GAAG,mCAAmC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC7D,IAAI,CAAC,CAAC;YAAE,OAAO,IAAI,CAAA;QACnB,MAAM,MAAM,GAAG,GAAgE,CAAA;QAC/E,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAA;QACzE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAA;QAC/B,IAAI,GAAG,MAAM,CAAA;IACf,CAAC;IACD,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAA;IAC7E,OAAO,IAAoC,CAAA;AAC7C,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAC5C,GAAW,EACX,UAA8C,EAAE,EACtB,EAAE;IAC5B,MAAM,GAAG,GAAG,GAIX,CAAA;IACD,MAAM,OAAO,GAAG,IAAI,GAAG,EAA0B,CAAA;IACjD,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,eAAe,IAAI,EAAE,CAAC,EAAE,CAAC;QACnF,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrD,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,MAAwB,CAAC,CAAA;QAC7C,CAAC;IACH,CAAC;IACD,MAAM,cAAc,GAAG,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAA;IACzC,MAAM,MAAM,GAAqB,EAAE,CAAA;IACnC,KAAK,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;QACjE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;YAAE,SAAQ;QAC7B,IAAI,OAAqB,CAAA;QACzB,IAAI,CAAC;YACH,OAAO,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAA;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,SAAQ;QACV,CAAC;QACD,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAAE,OAAoC,CAAC,UAAU,CAAC;YACrF,CAAC,CAAG,OAAqC,CAAC,UAAwB;YAClE,CAAC,CAAC,EAAE,CAAA;QACN,KAAK,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACvD,IAAI,UAAU,KAAK,YAAY,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC;gBAAE,SAAQ;YAC1E,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAAE,SAAQ;YACxB,MAAM,MAAM,GAAG,EAOd,CAAA;YACD,MAAM,MAAM,GAAgB,EAAE,CAAA;YAC9B,MAAM,SAAS,GAAG,CAAC,GAAG,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAA;YACpE,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;gBAC5B,MAAM,CAAC,GAAG,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;gBAChC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,QAAQ;oBAAE,SAAQ;gBACrC,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAY,CAAA;gBAC1C,MAAM,SAAS,GAAG,gBAAgB,CAChC,MAAM,EACN,GAAG,EACH,WAAW,OAAO,IAAI,UAAU,eAAe,CAAC,CAAC,IAAI,EAAE,CACxD,CAAA;gBACD,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,EAAE,EAAE,CAAC,CAAC,EAAE;oBACR,QAAQ,EAAE,CAAC,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM;oBAChD,IAAI,EAAE,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;oBAC1D,SAAS;iBACV,CAAC,CAAA;YACJ,CAAC;YACD,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAA;YACtC,MAAM,OAAO,GAAG,WAAW,EAAE,OAAO,CAAA;YACpC,MAAM,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;YACzD,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,CAAA;YAC5C,MAAM,YAAY,GAChB,WAAW;gBACX,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;YACjE,MAAM,UAAU,GAAG,OAAO,EAAE,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;YACxD,MAAM,aAAa,GAAG,UAAU;gBAC9B,CAAC,CAAC,gBAAgB,CAAC,UAAU,EAAE,GAAG,EAAE,WAAW,OAAO,IAAI,UAAU,cAAc,CAAC;gBACnF,CAAC,CAAC,IAAI,CAAA;YACR,MAAM,CAAC,IAAI,CAAC;gBACV,MAAM,EAAE,UAAU,CAAC,WAAW,EAAE;gBAChC,OAAO;gBACP,WAAW;gBACX,YAAY;gBACZ,YAAY,EAAE,WAAW,EAAE,QAAQ,KAAK,IAAI;gBAC5C,aAAa;gBACb,MAAM;gBACN,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,cAAc;aAC5C,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IACD,OAAO;QACL,MAAM;QACN,OAAO;QACP,YAAY,EACV,OAAO,OAAO,CAAC,YAAY,KAAK,QAAQ,IAAI,OAAO,CAAC,YAAY,GAAG,CAAC;YAClE,CAAC,CAAC,OAAO,CAAC,YAAY;YACtB,CAAC,CAAC,sBAAsB;KAC7B,CAAA;AACH,CAAC,CAAA;AAED,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,IAAmB,EAAW,EAAE;IAC3D,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,GAAG,CAAA;QACpC,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;QACrB,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;IACrC,CAAC;IACD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,GAAG,CAAA;QAC9C,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;QACrB,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;IACrC,CAAC;IACD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,IAAI,GAAG,KAAK,MAAM;YAAE,OAAO,IAAI,CAAA;QAC/B,IAAI,GAAG,KAAK,OAAO;YAAE,OAAO,KAAK,CAAA;QACjC,OAAO,GAAG,CAAA;IACZ,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA;AAED,MAAM,mBAAmB,GAAG,CAC1B,GAAgD,EAChD,GAA6B,EAC7B,OAA4B,EAC5B,GAAQ,EACC,EAAE;IACX,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC9B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IACnC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE;QAC1B,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACpC,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAA;QACzB,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,CAAA;YAC/C,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAA;YACtD,OAAO,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnD,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,IAAI,MAAM,CAAC,EAAE,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC1C,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;YAC/C,CAAC;YACD,IAAI,MAAM,CAAC,EAAE,KAAK,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBACzC,OAAO,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YAC1C,CAAC;YACD,OAAO,KAAK,CAAA;QACd,CAAC;QACD,qEAAqE;QACrE,gEAAgE;QAChE,4DAA4D;QAC5D,qBAAqB;QACrB,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;IACrC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,MAAM,kBAAkB,GAAG,CACzB,IAA4D,EAC5D,GAA6B,EACL,EAAE;IAC1B,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YACpC,IAAI,MAAM,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC5B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAA;gBAC3E,OAAO,EAAE,kBAAkB,EAAE,GAAG,CAAC,cAAc,EAAE,CAAA;YACnD,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,CAAA;AACrD,CAAC,CAAA;AAED,MAAM,OAAO,GAAG,CACd,MAAc,EACd,MAAc,EACd,aAAmC,EAAE,EACrC,eAAuC,EAAE,EAC/B,EAAE;IACZ,MAAM,IAAI,GAMN;QACF,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC;QACzB,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,IAAI,2BAA2B;QAC3D,MAAM;QACN,MAAM;KACP,CAAA;IACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;QAAE,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;IACvD,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;QACxC,MAAM;QACN,OAAO,EAAE;YACP,cAAc,EAAE,0BAA0B;YAC1C,GAAG,YAAY;SAChB;KACF,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAClC,GAAY,EACZ,GAA6B,EACH,EAAE;IAC5B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC5B,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAA;IACvC,IAAI,OAAO,GAA+E,IAAI,CAAA;IAC9F,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM;YAAE,SAAQ;QACjC,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAA;QACpD,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAA;YAC9B,MAAK;QACP,CAAC;IACH,CAAC;IACD,qEAAqE;IACrE,qEAAqE;IACrE,8BAA8B;IAC9B,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAA;IAEzB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IACjC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAA;IACzC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;IAE9D,oBAAoB;IACpB,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,mBAAmB,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAA;QAClF,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,OAAO,OAAO,CACZ,GAAG,EACH,gCAAgC,EAChC,EAAE,EACF,kBAAkB,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CACxC,CAAA;QACH,CAAC;IACH,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,SAAS,CAAA;IACnF,MAAM,WAAW,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,CAAA;IAEjG,yEAAyE;IACzE,IAAI,aAAa,IAAI,KAAK,CAAC,YAAY,IAAI,WAAW,IAAI,WAAW,KAAK,kBAAkB,EAAE,CAAC;QAC7F,OAAO,OAAO,CAAC,GAAG,EAAE,2BAA2B,WAAW,+BAA+B,CAAC,CAAA;IAC5F,CAAC;IAED,MAAM,UAAU,GAAgB,EAAE,CAAA;IAElC,4BAA4B;IAC5B,IAAI,aAAa,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;QACzC,IAAI,GAAG,GAAG,EAAE,CAAA;QACZ,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAA;YAC9B;8EACkE;QACpE,CAAC;QAAC,MAAM,CAAC;YACP,GAAG,GAAG,EAAE,CAAA;QACV,CAAC;QACD,oBAAoB;QACpB,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrB,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;gBACvB,OAAO,OAAO,CAAC,GAAG,EAAE,0BAA0B,EAAE;oBAC9C,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,uBAAuB,EAAE;iBACzE,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;aAAM,CAAC;YACN,qEAAqE;YACrE,iDAAiD;YACjD,mEAAmE;YACnE,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;YAC9C,IAAI,OAAO,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;gBAC/B,OAAO,OAAO,CACZ,GAAG,EACH,sCAAsC,GAAG,CAAC,YAAY,GAAG,CAC1D,CAAA;YACH,CAAC;YACD,IAAI,MAAe,CAAA;YACnB,IAAI,CAAC;gBACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAC1B,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,OAAO,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAA;YAC5C,CAAC;YACD,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;QAC1D,CAAC;IACH,CAAC;IAED,kEAAkE;IAClE,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QAC7B,IAAI,CAAC,CAAC,EAAE,KAAK,OAAO,EAAE,CAAC;YACrB,MAAM,GAAG,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;YACxC,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;gBACjB,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;oBACf,UAAU,CAAC,IAAI,CAAC;wBACd,IAAI,EAAE,UAAU,CAAC,CAAC,IAAI,EAAE;wBACxB,OAAO,EAAE,UAAU;wBACnB,OAAO,EAAE,kCAAkC;qBAC5C,CAAC,CAAA;gBACJ,CAAC;gBACD,SAAQ;YACV,CAAC;YACD,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;QAC1E,CAAC;aAAM,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;YAC1B,8DAA8D;YAC9D,6DAA6D;YAC7D,0DAA0D;YAC1D,8CAA8C;YAC9C,qBAAqB;YACrB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACtB,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,SAAS,CAAC,CAAC,IAAI,EAAE;oBACvB,OAAO,EAAE,UAAU;oBACnB,OAAO,EAAE,iCAAiC;iBAC3C,CAAC,CAAA;gBACF,SAAQ;YACV,CAAC;YACD,oBAAoB;YACpB,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;QACzE,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;YAC7C,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACtB,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;oBACf,UAAU,CAAC,IAAI,CAAC;wBACd,IAAI,EAAE,WAAW,CAAC,CAAC,IAAI,EAAE;wBACzB,OAAO,EAAE,UAAU;wBACnB,OAAO,EAAE,yBAAyB;qBACnC,CAAC,CAAA;gBACJ,CAAC;gBACD,SAAQ;YACV,CAAC;YACD,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;QAC3E,CAAC;IACH,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,OAAO,CACZ,GAAG,EACH,8BAA8B,UAAU,CAAC,MAAM,aAAa,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,EACjG,UAAU,CACX,CAAA;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC,CAAA"}