@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":"admin-routes.js","sourceRoot":"","sources":["../../src/admin/admin-routes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,170 @@
1
+ /**
2
+ * Admin-mode types & internal sentinel.
3
+ *
4
+ * `admin` is an opt-in extension of `Config` that
5
+ * mounts an in-memory error-injection panel + `x-mock-*` headers
6
+ * under a configurable mount path (default `/databehave`). See
7
+ * {@link AdminModeConfig} on `Config.admin`.
8
+ */
9
+ /**
10
+ * Internal symbol attached to the response object returned by
11
+ * {@link createInjectHook} when an `x-mock-destroy` is honored. The
12
+ * kit's `server.listen()` http adapter recognizes this property and
13
+ * drops the underlying socket without writing a response. Hidden
14
+ * from {@link MockResponse} on purpose — destroy is not a
15
+ * normal HTTP response shape.
16
+ */
17
+ export declare const DESTROY_SOCKET_SENTINEL: unique symbol;
18
+ export type DestroySocketSentinel = typeof DESTROY_SOCKET_SENTINEL;
19
+ /**
20
+ * Thrown internally by `server.fetch` when the admin inject hook
21
+ * surfaced a {@link DESTROY_SOCKET_SENTINEL} response. `server.listen()`
22
+ * catches it and destroys the socket; callers of `server.fetch()`
23
+ * outside a listening server will observe the throw.
24
+ */
25
+ export declare class AdminDestroySocketSignal extends Error {
26
+ readonly name = "AdminDestroySocketSignal";
27
+ constructor();
28
+ }
29
+ /**
30
+ * Discriminated union of every error mode the admin layer can inject.
31
+ * 1. `http-status` — non-2xx → typical HTTP error
32
+ * 2. `business-failure` — 2xx + `{success:false, message}`
33
+ * 3. `custom-body` — arbitrary status + arbitrary JSON / text
34
+ * 4. `empty-body` — empty body
35
+ * 5. `malformed-json` — body is literally `{` so JSON.parse blows up
36
+ * 6. `delay` — sleep `ms` then either run `then` or pass through
37
+ * 7. `hang` — never resolve (FE timeout / hang detection)
38
+ * 8. `destroy` — drop the socket without a response
39
+ */
40
+ export type ErrorMode = {
41
+ kind: 'http-status';
42
+ status: number;
43
+ } | {
44
+ kind: 'business-failure';
45
+ message: string;
46
+ extra?: Record<string, unknown>;
47
+ } | {
48
+ kind: 'custom-body';
49
+ status?: number;
50
+ body: unknown;
51
+ contentType?: string;
52
+ } | {
53
+ kind: 'empty-body';
54
+ status?: number;
55
+ } | {
56
+ kind: 'malformed-json';
57
+ status?: number;
58
+ } | {
59
+ kind: 'delay';
60
+ ms: number;
61
+ then?: Exclude<ErrorMode, {
62
+ kind: 'delay';
63
+ } | {
64
+ kind: 'hang';
65
+ } | {
66
+ kind: 'destroy';
67
+ }>;
68
+ } | {
69
+ kind: 'hang';
70
+ } | {
71
+ kind: 'destroy';
72
+ };
73
+ /**
74
+ * Resolution priority (handled by `OverridesStore.resolve`):
75
+ * 1. `exact` (METHOD + path)
76
+ * 2. `path` (path only, any method)
77
+ * 3. `global` (every route)
78
+ */
79
+ export type OverrideMatcher = {
80
+ kind: 'exact';
81
+ method: string;
82
+ path: string;
83
+ } | {
84
+ kind: 'path';
85
+ path: string;
86
+ } | {
87
+ kind: 'global';
88
+ methods?: readonly string[];
89
+ };
90
+ /** Alias kept for parity with the legacy reference; prefer {@link OverrideMatcher}. */
91
+ export type StickyMatcher = OverrideMatcher;
92
+ export interface StickyOverride {
93
+ readonly id: string;
94
+ readonly matcher: OverrideMatcher;
95
+ readonly mode: ErrorMode;
96
+ readonly createdAt: string;
97
+ readonly description?: string;
98
+ }
99
+ /**
100
+ * Admin-mode CORS policy.
101
+ *
102
+ * - `'auto'` — `'*'` when bind is loopback-only, `'same-origin'`
103
+ * when `bind === 'any'` (defensive default for
104
+ * LAN-exposed servers).
105
+ * - `'any'` — `Access-Control-Allow-Origin: *`.
106
+ * - `'same-origin'` — no CORS headers added; browser enforces same-origin.
107
+ * - `{ origin }` — explicit allowlist (string | string[]).
108
+ */
109
+ export type AdminModeCors = 'auto' | 'any' | 'same-origin' | {
110
+ origin: string | readonly string[];
111
+ };
112
+ /** Opt-in admin-mode configuration. All fields optional. */
113
+ export interface AdminModeConfig {
114
+ /** Opt-in. Default: false. */
115
+ enabled?: boolean;
116
+ /** Mount point for admin routes. Default: '/databehave'. Must start with '/'. */
117
+ path?: string;
118
+ /** Serve the admin HTML page at `${path}` itself. Default: true when enabled. */
119
+ ui?: boolean;
120
+ /** Honor `x-mock-*` request headers. Default: true when enabled. */
121
+ headers?: boolean;
122
+ /**
123
+ * Bind policy. 'loopback-only' (default) refuses to enable admin when
124
+ * server.host resolves to a non-loopback address. 'any' allows it.
125
+ */
126
+ bind?: 'loopback-only' | 'any';
127
+ /** Admin-route CORS — see {@link AdminModeCors}. Default: 'auto'. */
128
+ cors?: AdminModeCors;
129
+ /** Allow `x-mock-destroy: 1` and the equivalent sticky. Default: true. */
130
+ allowDestroy?: boolean;
131
+ /**
132
+ * When `true`, the kit spawns the platform browser opener on the
133
+ * resolved admin URL after `server.listen()` emits `listening`.
134
+ * Default: `false` — the URL is logged to stdout (see the
135
+ * `admin panel ready at …` banner) but no browser is launched.
136
+ * Opt-in only; consumers who prefer to click the logged link, or
137
+ * who run the kit in headless / CI environments, should leave this
138
+ * unset. The CLI's `--open` flag is ORed with this field, so either
139
+ * trigger launches the browser exactly once.
140
+ */
141
+ openBrowserOnStart?: boolean;
142
+ /**
143
+ * Optional raw OpenAPI document body (JSON text) used to populate
144
+ * the route picker in the UI. The CLI fills this in from the
145
+ * config's `openapi` field; programmatic consumers can pass it
146
+ * directly.
147
+ */
148
+ openapiBody?: string;
149
+ /**
150
+ * Directory used to persist named scenarios (snapshots of the
151
+ * current sticky overrides set). Default:
152
+ * `<process.cwd()>/mock-scenarios`. The directory is created on
153
+ * first write; a missing directory is treated as "no scenarios"
154
+ * rather than an error.
155
+ */
156
+ scenariosDir?: string;
157
+ }
158
+ /** A persisted scenario — a named bundle of sticky overrides. */
159
+ export interface Scenario {
160
+ readonly name: string;
161
+ readonly overrides: readonly StickyOverride[];
162
+ readonly created?: string;
163
+ }
164
+ /** Lightweight scenario summary returned by the list endpoint. */
165
+ export interface ScenarioSummary {
166
+ readonly name: string;
167
+ readonly count: number;
168
+ readonly created: string;
169
+ }
170
+ //# sourceMappingURL=admin-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-types.d.ts","sourceRoot":"","sources":["../../src/admin/admin-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Admin-mode types & internal sentinel.
3
+ *
4
+ * `admin` is an opt-in extension of `Config` that
5
+ * mounts an in-memory error-injection panel + `x-mock-*` headers
6
+ * under a configurable mount path (default `/databehave`). See
7
+ * {@link AdminModeConfig} on `Config.admin`.
8
+ */
9
+ /**
10
+ * Internal symbol attached to the response object returned by
11
+ * {@link createInjectHook} when an `x-mock-destroy` is honored. The
12
+ * kit's `server.listen()` http adapter recognizes this property and
13
+ * drops the underlying socket without writing a response. Hidden
14
+ * from {@link MockResponse} on purpose — destroy is not a
15
+ * normal HTTP response shape.
16
+ */
17
+ export const DESTROY_SOCKET_SENTINEL = Symbol.for('@databehave/server:admin:destroy-socket');
18
+ /**
19
+ * Thrown internally by `server.fetch` when the admin inject hook
20
+ * surfaced a {@link DESTROY_SOCKET_SENTINEL} response. `server.listen()`
21
+ * catches it and destroys the socket; callers of `server.fetch()`
22
+ * outside a listening server will observe the throw.
23
+ */
24
+ export class AdminDestroySocketSignal extends Error {
25
+ name = 'AdminDestroySocketSignal';
26
+ constructor() {
27
+ super('@databehave/server: admin x-mock-destroy requested');
28
+ }
29
+ }
30
+ //# sourceMappingURL=admin-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-types.js","sourceRoot":"","sources":["../../src/admin/admin-types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAkB,MAAM,CAAC,GAAG,CAC9D,yCAAyC,CAC1C,CAAA;AAGD;;;;;GAKG;AACH,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IACxC,IAAI,GAAG,0BAA0B,CAAA;IAC1C;QACE,KAAK,CAAC,oDAAoD,CAAC,CAAA;IAC7D,CAAC;CACF"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * stdout notice emitted at `server.listen()` start when admin is
3
+ * enabled. Splitting it out keeps the banner format unit-testable
4
+ * (no need to spin up a real http server just to assert a string).
5
+ */
6
+ export interface AdminBannerLogger {
7
+ info(message: string): void;
8
+ }
9
+ export declare const formatAdminBanner: (host: string, port: number, path: string) => string;
10
+ export declare const emitAdminBanner: (host: string, port: number, path: string, logger?: AdminBannerLogger) => void;
11
+ //# sourceMappingURL=banner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../../src/admin/banner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5B;AAED,eAAO,MAAM,iBAAiB,GAC5B,MAAM,MAAM,EACZ,MAAM,MAAM,EACZ,MAAM,MAAM,KACX,MAC2G,CAAA;AAE9G,eAAO,MAAM,eAAe,GAC1B,MAAM,MAAM,EACZ,MAAM,MAAM,EACZ,MAAM,MAAM,EACZ,SAAQ,iBAA2B,KAClC,IAEF,CAAA"}
@@ -0,0 +1,5 @@
1
+ export const formatAdminBanner = (host, port, path) => `[@databehave/server] admin panel ready at http://${host}:${port}${path} (dev mock — disable in production)`;
2
+ export const emitAdminBanner = (host, port, path, logger = console) => {
3
+ logger.info(formatAdminBanner(host, port, path));
4
+ };
5
+ //# sourceMappingURL=banner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"banner.js","sourceRoot":"","sources":["../../src/admin/banner.ts"],"names":[],"mappings":"AASA,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,IAAY,EACZ,IAAY,EACZ,IAAY,EACJ,EAAE,CACV,oDAAoD,IAAI,IAAI,IAAI,GAAG,IAAI,qCAAqC,CAAA;AAE9G,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,IAAY,EACZ,IAAY,EACZ,IAAY,EACZ,SAA4B,OAAO,EAC7B,EAAE;IACR,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;AAClD,CAAC,CAAA"}
@@ -0,0 +1,14 @@
1
+ import type { ErrorMode } from './admin-types.js';
2
+ export type HeaderParseResult = {
3
+ kind: 'none';
4
+ } | {
5
+ kind: 'mode';
6
+ mode: ErrorMode;
7
+ } | {
8
+ kind: 'error';
9
+ message: string;
10
+ };
11
+ export declare const parseHeaderMode: (headers: Readonly<Record<string, string>>) => HeaderParseResult;
12
+ /** Public alias of {@link parseHeaderMode}. */
13
+ export declare const parseMockHeaders: (headers: Readonly<Record<string, string>>) => HeaderParseResult;
14
+ //# sourceMappingURL=header-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header-parser.d.ts","sourceRoot":"","sources":["../../src/admin/header-parser.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAEjD,MAAM,MAAM,iBAAiB,GACzB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AAkJtC,eAAO,MAAM,eAAe,GAC1B,SAAS,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,KACxC,iBAqCF,CAAA;AAGD,+CAA+C;AAC/C,eAAO,MAAM,gBAAgB,YA1ClB,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,KACxC,iBAyC4C,CAAA"}
@@ -0,0 +1,171 @@
1
+ /**
2
+ * Parse `x-mock-*` request headers into an `ErrorMode` (or surface a
3
+ * conflict error). One header set ↔ one ErrorMode. Multiple terminal
4
+ * modes (e.g. both `x-mock-status` and `x-mock-business-failure`) are
5
+ * rejected with `kind: 'conflict'` so the caller can return 400.
6
+ *
7
+ * Base64 inputs (`x-mock-body`, `x-mock-business-failure-extra`) use
8
+ * standard base64 (NOT url-safe), per the README contract.
9
+ */
10
+ import { Buffer } from 'node:buffer';
11
+ // Note: `x-mock-business-failure-b64` is an alternative to
12
+ // `x-mock-business-failure` that accepts a base64-UTF8 message so
13
+ // non-ASCII strings can travel through an HTTP header — Node's fetch
14
+ // rejects non-ASCII byte values in header values.
15
+ const TERMINAL_HEADERS = [
16
+ 'x-mock-status',
17
+ 'x-mock-business-failure',
18
+ 'x-mock-business-failure-b64',
19
+ 'x-mock-body',
20
+ 'x-mock-empty',
21
+ 'x-mock-malformed',
22
+ 'x-mock-hang',
23
+ 'x-mock-destroy',
24
+ ];
25
+ const get = (h, name) => h[name];
26
+ const decodeBase64Json = (raw, headerName) => {
27
+ let decoded;
28
+ try {
29
+ decoded = Buffer.from(raw, 'base64').toString('utf8');
30
+ }
31
+ catch (err) {
32
+ throw new Error(`invalid ${headerName} header: base64 decode failed (${err instanceof Error ? err.message : String(err)})`);
33
+ }
34
+ try {
35
+ return JSON.parse(decoded);
36
+ }
37
+ catch (err) {
38
+ throw new Error(`invalid ${headerName} header: JSON parse failed (${err instanceof Error ? err.message : String(err)})`);
39
+ }
40
+ };
41
+ const parseIntStrict = (raw, headerName) => {
42
+ const n = Number.parseInt(raw, 10);
43
+ if (!Number.isFinite(n)) {
44
+ throw new Error(`invalid ${headerName} header: not an integer (${JSON.stringify(raw)})`);
45
+ }
46
+ return n;
47
+ };
48
+ const parseTerminal = (h) => {
49
+ const present = TERMINAL_HEADERS.filter((name) => get(h, name) !== undefined);
50
+ if (present.length === 0)
51
+ return null;
52
+ if (present.length > 1) {
53
+ throw new Error(`conflicting x-mock-* headers: ${present.join(', ')} — pick exactly one terminal mode`);
54
+ }
55
+ const [only] = present;
56
+ switch (only) {
57
+ case 'x-mock-status': {
58
+ const status = parseIntStrict(get(h, 'x-mock-status'), 'x-mock-status');
59
+ return { kind: 'http-status', status };
60
+ }
61
+ case 'x-mock-business-failure':
62
+ case 'x-mock-business-failure-b64': {
63
+ let message;
64
+ if (only === 'x-mock-business-failure-b64') {
65
+ const raw = get(h, 'x-mock-business-failure-b64');
66
+ try {
67
+ message = Buffer.from(raw, 'base64').toString('utf8');
68
+ }
69
+ catch (err) {
70
+ throw new Error(`invalid x-mock-business-failure-b64 header: base64 decode failed (${err instanceof Error ? err.message : String(err)})`);
71
+ }
72
+ }
73
+ else {
74
+ message = get(h, 'x-mock-business-failure');
75
+ }
76
+ const extraRaw = get(h, 'x-mock-business-failure-extra');
77
+ if (extraRaw === undefined)
78
+ return { kind: 'business-failure', message };
79
+ const extra = decodeBase64Json(extraRaw, 'x-mock-business-failure-extra');
80
+ if (extra === null || typeof extra !== 'object' || Array.isArray(extra)) {
81
+ throw new Error('invalid x-mock-business-failure-extra header: decoded value must be a JSON object');
82
+ }
83
+ return {
84
+ kind: 'business-failure',
85
+ message,
86
+ extra: extra,
87
+ };
88
+ }
89
+ case 'x-mock-body': {
90
+ const body = decodeBase64Json(get(h, 'x-mock-body'), 'x-mock-body');
91
+ const statusRaw = get(h, 'x-mock-body-status');
92
+ const contentType = get(h, 'x-mock-body-content-type');
93
+ const mode = { kind: 'custom-body', body };
94
+ if (statusRaw !== undefined) {
95
+ ;
96
+ mode.status = parseIntStrict(statusRaw, 'x-mock-body-status');
97
+ }
98
+ if (contentType !== undefined) {
99
+ ;
100
+ mode.contentType = contentType;
101
+ }
102
+ return mode;
103
+ }
104
+ case 'x-mock-empty': {
105
+ const statusRaw = get(h, 'x-mock-empty-status');
106
+ if (statusRaw === undefined)
107
+ return { kind: 'empty-body' };
108
+ return {
109
+ kind: 'empty-body',
110
+ status: parseIntStrict(statusRaw, 'x-mock-empty-status'),
111
+ };
112
+ }
113
+ case 'x-mock-malformed': {
114
+ const statusRaw = get(h, 'x-mock-malformed-status');
115
+ if (statusRaw === undefined)
116
+ return { kind: 'malformed-json' };
117
+ return {
118
+ kind: 'malformed-json',
119
+ status: parseIntStrict(statusRaw, 'x-mock-malformed-status'),
120
+ };
121
+ }
122
+ case 'x-mock-hang':
123
+ return { kind: 'hang' };
124
+ case 'x-mock-destroy':
125
+ return { kind: 'destroy' };
126
+ /* v8 ignore next 3 -- exhaustiveness: unreachable */
127
+ default:
128
+ // exhaustiveness — unreachable.
129
+ return null;
130
+ }
131
+ };
132
+ export const parseHeaderMode = (headers) => {
133
+ try {
134
+ const terminal = parseTerminal(headers);
135
+ const delayRaw = get(headers, 'x-mock-delay');
136
+ if (terminal === null && delayRaw === undefined) {
137
+ return { kind: 'none' };
138
+ }
139
+ if (delayRaw === undefined) {
140
+ return { kind: 'mode', mode: terminal };
141
+ }
142
+ const ms = parseIntStrict(delayRaw, 'x-mock-delay');
143
+ if (ms < 0) {
144
+ return {
145
+ kind: 'error',
146
+ message: 'invalid x-mock-delay header: must be >= 0',
147
+ };
148
+ }
149
+ if (terminal === null) {
150
+ return { kind: 'mode', mode: { kind: 'delay', ms } };
151
+ }
152
+ if (terminal.kind === 'delay' ||
153
+ terminal.kind === 'hang' ||
154
+ terminal.kind === 'destroy') {
155
+ return {
156
+ kind: 'error',
157
+ message: `x-mock-delay cannot wrap kind=${terminal.kind}`,
158
+ };
159
+ }
160
+ return { kind: 'mode', mode: { kind: 'delay', ms, then: terminal } };
161
+ }
162
+ catch (err) {
163
+ return {
164
+ kind: 'error',
165
+ message: err instanceof Error ? err.message : String(err),
166
+ };
167
+ }
168
+ };
169
+ /** Public alias of {@link parseHeaderMode}. */
170
+ export const parseMockHeaders = parseHeaderMode;
171
+ //# sourceMappingURL=header-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header-parser.js","sourceRoot":"","sources":["../../src/admin/header-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * onRequest hook that consults `x-mock-*` headers + sticky overrides
3
+ * and produces a `MockResponse` short-circuit. Header-derived
4
+ * modes always beat sticky modes (per-request scoping > sticky rules).
5
+ *
6
+ * Modes handled directly here:
7
+ * - http-status, business-failure, custom-body, empty-body,
8
+ * malformed-json, delay (recursive), hang
9
+ *
10
+ * `destroy` is signalled via a sentinel response (see
11
+ * {@link DESTROY_SOCKET_SENTINEL}) so the kit's `server.listen()` http
12
+ * adapter can drop the socket without writing a body. When
13
+ * `allowDestroy: false`, destroy resolves to a normal 503 response
14
+ * instead.
15
+ */
16
+ import type { MockRequest, MockResponse } from '../types.js';
17
+ import type { OverridesStore } from './overrides-store.js';
18
+ import { type ErrorMode } from './admin-types.js';
19
+ export type ResolveResult = {
20
+ kind: 'mode';
21
+ mode: ErrorMode;
22
+ source: 'header' | 'sticky';
23
+ } | {
24
+ kind: 'error';
25
+ message: string;
26
+ } | {
27
+ kind: 'none';
28
+ };
29
+ /**
30
+ * Pure resolver: header overrides beat sticky overrides. Returns
31
+ * `'none'` when nothing applies and `'error'` for malformed headers.
32
+ */
33
+ export declare const resolveMode: (store: OverridesStore, method: string, path: string, headers: Readonly<Record<string, string>>) => ResolveResult;
34
+ export interface InjectHookOptions {
35
+ readonly store: OverridesStore;
36
+ /** Paths matching any of these prefixes are passed through (no injection). */
37
+ readonly bypassPathPrefixes?: readonly string[];
38
+ /** When false, destroy mode resolves to a 503 instead of dropping the socket. */
39
+ readonly allowDestroy?: boolean;
40
+ readonly logger?: {
41
+ warn(message: string): void;
42
+ info?(message: string): void;
43
+ };
44
+ }
45
+ export declare const createInjectHook: (opts: InjectHookOptions) => (req: MockRequest) => Promise<MockResponse | void>;
46
+ /** True when the response carries the internal destroy-socket sentinel. */
47
+ export declare const isDestroySocketSentinel: (res: MockResponse | undefined | null) => boolean;
48
+ //# sourceMappingURL=inject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inject.d.ts","sourceRoot":"","sources":["../../src/admin/inject.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACb,MAAM,aAAa,CAAA;AAEpB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAE1D,OAAO,EAA2B,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAI1E,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAA;CAAE,GAC9D;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAEpB;;;GAGG;AACH,eAAO,MAAM,WAAW,GACtB,OAAO,cAAc,EACrB,QAAQ,MAAM,EACd,MAAM,MAAM,EACZ,SAAS,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,KACxC,aAUF,CAAA;AAuGD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAA;IAC9B,8EAA8E;IAC9E,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC/C,iFAAiF;IACjF,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAA;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE;QAChB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;QAC3B,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KAC7B,CAAA;CACF;AAED,eAAO,MAAM,gBAAgB,GAAI,MAAM,iBAAiB,MAUpD,KAAK,WAAW,KACf,OAAO,CAAC,YAAY,GAAG,IAAI,CA+C/B,CAAA;AAED,2EAA2E;AAC3E,eAAO,MAAM,uBAAuB,GAClC,KAAK,YAAY,GAAG,SAAS,GAAG,IAAI,KACnC,OAGF,CAAA"}