@databehave/server 0.1.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 (162) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/LICENSE +21 -0
  3. package/README.md +87 -0
  4. package/dist/admin/admin-routes.d.ts +42 -0
  5. package/dist/admin/admin-routes.d.ts.map +1 -0
  6. package/dist/admin/admin-routes.js +472 -0
  7. package/dist/admin/admin-routes.js.map +1 -0
  8. package/dist/admin/admin-types.d.ts +170 -0
  9. package/dist/admin/admin-types.d.ts.map +1 -0
  10. package/dist/admin/admin-types.js +30 -0
  11. package/dist/admin/admin-types.js.map +1 -0
  12. package/dist/admin/banner.d.ts +11 -0
  13. package/dist/admin/banner.d.ts.map +1 -0
  14. package/dist/admin/banner.js +5 -0
  15. package/dist/admin/banner.js.map +1 -0
  16. package/dist/admin/header-parser.d.ts +14 -0
  17. package/dist/admin/header-parser.d.ts.map +1 -0
  18. package/dist/admin/header-parser.js +171 -0
  19. package/dist/admin/header-parser.js.map +1 -0
  20. package/dist/admin/inject.d.ts +48 -0
  21. package/dist/admin/inject.d.ts.map +1 -0
  22. package/dist/admin/inject.js +167 -0
  23. package/dist/admin/inject.js.map +1 -0
  24. package/dist/admin/overrides-store.d.ts +18 -0
  25. package/dist/admin/overrides-store.d.ts.map +1 -0
  26. package/dist/admin/overrides-store.js +100 -0
  27. package/dist/admin/overrides-store.js.map +1 -0
  28. package/dist/admin/resolve-cors.d.ts +22 -0
  29. package/dist/admin/resolve-cors.d.ts.map +1 -0
  30. package/dist/admin/resolve-cors.js +28 -0
  31. package/dist/admin/resolve-cors.js.map +1 -0
  32. package/dist/admin/scenarios-store.d.ts +15 -0
  33. package/dist/admin/scenarios-store.d.ts.map +1 -0
  34. package/dist/admin/scenarios-store.js +109 -0
  35. package/dist/admin/scenarios-store.js.map +1 -0
  36. package/dist/admin/ui.css +2 -0
  37. package/dist/admin/ui.html +13 -0
  38. package/dist/admin/ui.js +240 -0
  39. package/dist/bin-helpers.d.ts +46 -0
  40. package/dist/bin-helpers.d.ts.map +1 -0
  41. package/dist/bin-helpers.js +61 -0
  42. package/dist/bin-helpers.js.map +1 -0
  43. package/dist/bin.d.ts +3 -0
  44. package/dist/bin.d.ts.map +1 -0
  45. package/dist/bin.js +57 -0
  46. package/dist/bin.js.map +1 -0
  47. package/dist/cors.d.ts +57 -0
  48. package/dist/cors.d.ts.map +1 -0
  49. package/dist/cors.js +167 -0
  50. package/dist/cors.js.map +1 -0
  51. package/dist/define.d.ts +26 -0
  52. package/dist/define.d.ts.map +1 -0
  53. package/dist/define.js +55 -0
  54. package/dist/define.js.map +1 -0
  55. package/dist/index.d.ts +21 -0
  56. package/dist/index.d.ts.map +1 -0
  57. package/dist/index.js +19 -0
  58. package/dist/index.js.map +1 -0
  59. package/dist/json-config.d.ts +170 -0
  60. package/dist/json-config.d.ts.map +1 -0
  61. package/dist/json-config.js +684 -0
  62. package/dist/json-config.js.map +1 -0
  63. package/dist/jsonc.d.ts +24 -0
  64. package/dist/jsonc.d.ts.map +1 -0
  65. package/dist/jsonc.js +125 -0
  66. package/dist/jsonc.js.map +1 -0
  67. package/dist/log.d.ts +57 -0
  68. package/dist/log.d.ts.map +1 -0
  69. package/dist/log.js +103 -0
  70. package/dist/log.js.map +1 -0
  71. package/dist/middleware/request-validation.d.ts +58 -0
  72. package/dist/middleware/request-validation.d.ts.map +1 -0
  73. package/dist/middleware/request-validation.js +328 -0
  74. package/dist/middleware/request-validation.js.map +1 -0
  75. package/dist/mock-mode.d.ts +95 -0
  76. package/dist/mock-mode.d.ts.map +1 -0
  77. package/dist/mock-mode.js +95 -0
  78. package/dist/mock-mode.js.map +1 -0
  79. package/dist/openapi/auto-schema.d.ts +83 -0
  80. package/dist/openapi/auto-schema.d.ts.map +1 -0
  81. package/dist/openapi/auto-schema.js +232 -0
  82. package/dist/openapi/auto-schema.js.map +1 -0
  83. package/dist/openapi/generate.d.ts +20 -0
  84. package/dist/openapi/generate.d.ts.map +1 -0
  85. package/dist/openapi/generate.js +121 -0
  86. package/dist/openapi/generate.js.map +1 -0
  87. package/dist/openapi/loader.d.ts +18 -0
  88. package/dist/openapi/loader.d.ts.map +1 -0
  89. package/dist/openapi/loader.js +25 -0
  90. package/dist/openapi/loader.js.map +1 -0
  91. package/dist/openapi/register.d.ts +58 -0
  92. package/dist/openapi/register.d.ts.map +1 -0
  93. package/dist/openapi/register.js +166 -0
  94. package/dist/openapi/register.js.map +1 -0
  95. package/dist/openapi/seed.d.ts +16 -0
  96. package/dist/openapi/seed.d.ts.map +1 -0
  97. package/dist/openapi/seed.js +58 -0
  98. package/dist/openapi/seed.js.map +1 -0
  99. package/dist/openapi/translate.d.ts +55 -0
  100. package/dist/openapi/translate.d.ts.map +1 -0
  101. package/dist/openapi/translate.js +319 -0
  102. package/dist/openapi/translate.js.map +1 -0
  103. package/dist/openapi/walker.d.ts +44 -0
  104. package/dist/openapi/walker.d.ts.map +1 -0
  105. package/dist/openapi/walker.js +15 -0
  106. package/dist/openapi/walker.js.map +1 -0
  107. package/dist/request.d.ts +19 -0
  108. package/dist/request.d.ts.map +1 -0
  109. package/dist/request.js +66 -0
  110. package/dist/request.js.map +1 -0
  111. package/dist/response.d.ts +13 -0
  112. package/dist/response.d.ts.map +1 -0
  113. package/dist/response.js +43 -0
  114. package/dist/response.js.map +1 -0
  115. package/dist/route-key.d.ts +60 -0
  116. package/dist/route-key.d.ts.map +1 -0
  117. package/dist/route-key.js +105 -0
  118. package/dist/route-key.js.map +1 -0
  119. package/dist/run.d.ts +27 -0
  120. package/dist/run.d.ts.map +1 -0
  121. package/dist/run.js +87 -0
  122. package/dist/run.js.map +1 -0
  123. package/dist/server.d.ts +60 -0
  124. package/dist/server.d.ts.map +1 -0
  125. package/dist/server.js +497 -0
  126. package/dist/server.js.map +1 -0
  127. package/dist/types.d.ts +274 -0
  128. package/dist/types.d.ts.map +1 -0
  129. package/dist/types.js +9 -0
  130. package/dist/types.js.map +1 -0
  131. package/dist/validation/validate.d.ts +38 -0
  132. package/dist/validation/validate.d.ts.map +1 -0
  133. package/dist/validation/validate.js +372 -0
  134. package/dist/validation/validate.js.map +1 -0
  135. package/docs/admin/error-mode.md +14 -0
  136. package/docs/admin/headers.md +63 -0
  137. package/docs/admin/index.md +111 -0
  138. package/docs/admin/overrides.md +23 -0
  139. package/docs/admin/rest-api.md +90 -0
  140. package/docs/admin/scenarios.md +28 -0
  141. package/docs/cli.md +76 -0
  142. package/docs/config/admin.md +62 -0
  143. package/docs/config/cors.md +72 -0
  144. package/docs/config/endpoints.md +162 -0
  145. package/docs/config/index.md +107 -0
  146. package/docs/config/log.md +43 -0
  147. package/docs/config/mock-mode.md +84 -0
  148. package/docs/config/openapi.md +8 -0
  149. package/docs/config/schema.md +34 -0
  150. package/docs/config/server.md +32 -0
  151. package/docs/config/validation.md +161 -0
  152. package/docs/design.md +517 -0
  153. package/docs/errors.md +192 -0
  154. package/docs/getting-started.md +146 -0
  155. package/docs/index.md +23 -0
  156. package/docs/openapi/auto-schema.md +146 -0
  157. package/docs/openapi/fallback.md +242 -0
  158. package/docs/openapi/keywords.md +78 -0
  159. package/docs/recipes.md +258 -0
  160. package/docs/stability.md +118 -0
  161. package/docs/troubleshooting.md +191 -0
  162. package/package.json +80 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-config.js","sourceRoot":"","sources":["../src/json-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
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
@@ -0,0 +1 @@
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 ADDED
@@ -0,0 +1,125 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonc.js","sourceRoot":"","sources":["../src/jsonc.ts"],"names":[],"mappings":"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"}
package/dist/log.d.ts ADDED
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Opt-in per-request access logger.
3
+ *
4
+ * One line per request, written to **stdout**. Default off — when the
5
+ * top-level `log` config is absent or `false`, no logger is built and
6
+ * the request hot path is untouched.
7
+ *
8
+ * Format `pretty` (default) — ANSI-coloured one-liner like:
9
+ *
10
+ * GET /api/v1/health → 200 4 ms · 56
11
+ *
12
+ * Format `json` — newline-terminated JSON object suitable for piping
13
+ * into structured log collectors:
14
+ *
15
+ * {"t":"2026-05-28T…","method":"GET","path":"/api/v1/health","status":200,"ms":4,"bytes":56}
16
+ *
17
+ * Sticky / header overrides synthesised by the admin inject hook are
18
+ * marked with ` [override:<mode.kind>]` (pretty) or `"override":"<kind>"` (json).
19
+ *
20
+ * Admin-panel traffic is suppressed by default — set `includeAdmin: true`
21
+ * to log it too. The hot-path check is a single `startsWith` against the
22
+ * resolved admin base path.
23
+ */
24
+ import type { LogConfig } from './types.js';
25
+ export interface ResolvedLogConfig {
26
+ readonly access: boolean;
27
+ readonly includeAdmin: boolean;
28
+ readonly colors: boolean;
29
+ readonly format: 'pretty' | 'json';
30
+ }
31
+ export interface LogEvent {
32
+ readonly method: string;
33
+ readonly path: string;
34
+ readonly status: number;
35
+ readonly ms: number;
36
+ readonly bytes: string;
37
+ readonly override: string | undefined;
38
+ readonly error: string | undefined;
39
+ }
40
+ export interface AccessLogger {
41
+ readonly emit: (ev: LogEvent) => void;
42
+ readonly isAdminPath: (path: string) => boolean;
43
+ }
44
+ /**
45
+ * Resolve a user-supplied `log` config into a normalised shape, or
46
+ * `null` when logging is disabled. Pure — safe to call at construction.
47
+ */
48
+ export declare const resolveLogConfig: (cfg: LogConfig | undefined) => ResolvedLogConfig | null;
49
+ /**
50
+ * Build an access logger bound to the resolved config + admin path.
51
+ * `adminPath` is the resolved `admin.path` (e.g. `/mock`), or
52
+ * `undefined` when admin mode is off. Returns `null` when logging is
53
+ * disabled — callers should short-circuit on `null` to avoid any
54
+ * per-request allocation.
55
+ */
56
+ export declare const createAccessLogger: (cfg: LogConfig | undefined, adminPath: string | undefined) => AccessLogger | null;
57
+ //# sourceMappingURL=log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../src/log.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAE3C,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,CAAA;CACnC;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;CACnC;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,IAAI,CAAA;IACrC,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAA;CAChD;AAgCD;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAC3B,KAAK,SAAS,GAAG,SAAS,KACzB,iBAAiB,GAAG,IAkBtB,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,GAC7B,KAAK,SAAS,GAAG,SAAS,EAC1B,WAAW,MAAM,GAAG,SAAS,KAC5B,YAAY,GAAG,IA0CjB,CAAA"}
package/dist/log.js ADDED
@@ -0,0 +1,103 @@
1
+ const RESET = '\x1b[0m';
2
+ // Method palette mirrors the admin-UI badge colours.
3
+ const METHOD_COLOR = {
4
+ GET: '\x1b[32m', // green
5
+ POST: '\x1b[34m', // blue
6
+ PUT: '\x1b[33m', // orange-ish (yellow ANSI)
7
+ DELETE: '\x1b[31m', // red
8
+ PATCH: '\x1b[36m', // teal (cyan ANSI)
9
+ };
10
+ const statusColor = (s) => {
11
+ if (s >= 500)
12
+ return '\x1b[31m';
13
+ if (s >= 400)
14
+ return '\x1b[33m';
15
+ if (s >= 300)
16
+ return '\x1b[36m';
17
+ if (s >= 200)
18
+ return '\x1b[32m';
19
+ return '\x1b[90m';
20
+ };
21
+ const paint = (use, color, text) => use ? `${color}${text}${RESET}` : text;
22
+ const resolveColors = (pref) => {
23
+ if (pref === 'always')
24
+ return true;
25
+ if (pref === 'never')
26
+ return false;
27
+ // 'auto'
28
+ return Boolean(process.stdout && process.stdout.isTTY);
29
+ };
30
+ /**
31
+ * Resolve a user-supplied `log` config into a normalised shape, or
32
+ * `null` when logging is disabled. Pure — safe to call at construction.
33
+ */
34
+ export const resolveLogConfig = (cfg) => {
35
+ if (cfg === undefined || cfg === false)
36
+ return null;
37
+ if (cfg === true) {
38
+ return {
39
+ access: true,
40
+ includeAdmin: false,
41
+ colors: resolveColors('auto'),
42
+ format: 'pretty',
43
+ };
44
+ }
45
+ const access = cfg.access !== false;
46
+ if (!access)
47
+ return null;
48
+ return {
49
+ access,
50
+ includeAdmin: cfg.includeAdmin === true,
51
+ colors: resolveColors(cfg.colors ?? 'auto'),
52
+ format: cfg.format ?? 'pretty',
53
+ };
54
+ };
55
+ /**
56
+ * Build an access logger bound to the resolved config + admin path.
57
+ * `adminPath` is the resolved `admin.path` (e.g. `/mock`), or
58
+ * `undefined` when admin mode is off. Returns `null` when logging is
59
+ * disabled — callers should short-circuit on `null` to avoid any
60
+ * per-request allocation.
61
+ */
62
+ export const createAccessLogger = (cfg, adminPath) => {
63
+ const resolved = resolveLogConfig(cfg);
64
+ if (!resolved)
65
+ return null;
66
+ const adminPrefix = adminPath;
67
+ const isAdminPath = (path) => {
68
+ if (adminPrefix === undefined)
69
+ return false;
70
+ return path === adminPrefix || path.startsWith(`${adminPrefix}/`);
71
+ };
72
+ const write = (line) => {
73
+ process.stdout.write(line);
74
+ };
75
+ const emit = (ev) => {
76
+ if (!resolved.includeAdmin && isAdminPath(ev.path))
77
+ return;
78
+ if (resolved.format === 'json') {
79
+ const obj = {
80
+ t: new Date().toISOString(),
81
+ method: ev.method,
82
+ path: ev.path,
83
+ status: ev.status,
84
+ ms: ev.ms,
85
+ bytes: ev.bytes,
86
+ };
87
+ if (ev.override !== undefined)
88
+ obj.override = ev.override;
89
+ if (ev.error !== undefined)
90
+ obj.error = ev.error;
91
+ write(`${JSON.stringify(obj)}\n`);
92
+ return;
93
+ }
94
+ const c = resolved.colors;
95
+ const methodPainted = paint(c, METHOD_COLOR[ev.method] ?? '\x1b[90m', ev.method);
96
+ const statusPainted = paint(c, statusColor(ev.status), String(ev.status));
97
+ const overrideSuffix = ev.override !== undefined ? ` [override:${ev.override}]` : '';
98
+ const errorSuffix = ev.error !== undefined ? ` error=${ev.error}` : '';
99
+ write(`${methodPainted} ${ev.path} → ${statusPainted} ${ev.ms} ms · ${ev.bytes}${overrideSuffix}${errorSuffix}\n`);
100
+ };
101
+ return { emit, isAdminPath };
102
+ };
103
+ //# sourceMappingURL=log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log.js","sourceRoot":"","sources":["../src/log.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
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
@@ -0,0 +1 @@
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"}