@lovrozagar/oat 0.9.1 → 0.11.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 (283) hide show
  1. package/README.md +26 -1936
  2. package/dist/cli.js +326 -60
  3. package/dist/config/define-config.d.ts +15 -1
  4. package/dist/config/define-config.d.ts.map +1 -1
  5. package/dist/config/define-config.js.map +1 -1
  6. package/dist/config/validate.d.ts +12 -0
  7. package/dist/config/validate.d.ts.map +1 -0
  8. package/dist/config/validate.js +86 -0
  9. package/dist/config/validate.js.map +1 -0
  10. package/dist/conformance/effects.d.ts +9 -0
  11. package/dist/conformance/effects.d.ts.map +1 -0
  12. package/dist/conformance/effects.js +276 -0
  13. package/dist/conformance/effects.js.map +1 -0
  14. package/dist/conformance/expected-failures.d.ts +18 -0
  15. package/dist/conformance/expected-failures.d.ts.map +1 -0
  16. package/dist/conformance/expected-failures.js +48 -0
  17. package/dist/conformance/expected-failures.js.map +1 -0
  18. package/dist/conformance/feature-gate.d.ts +7 -0
  19. package/dist/conformance/feature-gate.d.ts.map +1 -0
  20. package/dist/conformance/feature-gate.js +428 -0
  21. package/dist/conformance/feature-gate.js.map +1 -0
  22. package/dist/conformance/fuzz.d.ts +108 -0
  23. package/dist/conformance/fuzz.d.ts.map +1 -0
  24. package/dist/conformance/fuzz.js +246 -0
  25. package/dist/conformance/fuzz.js.map +1 -0
  26. package/dist/conformance/leaks.d.ts +10 -0
  27. package/dist/conformance/leaks.d.ts.map +1 -0
  28. package/dist/conformance/leaks.js +23 -0
  29. package/dist/conformance/leaks.js.map +1 -0
  30. package/dist/conformance/pool.d.ts +49 -0
  31. package/dist/conformance/pool.d.ts.map +1 -0
  32. package/dist/conformance/pool.js +75 -0
  33. package/dist/conformance/pool.js.map +1 -0
  34. package/dist/conformance/rate-limit.d.ts +7 -0
  35. package/dist/conformance/rate-limit.d.ts.map +1 -0
  36. package/dist/conformance/rate-limit.js +372 -0
  37. package/dist/conformance/rate-limit.js.map +1 -0
  38. package/dist/conformance/scope.d.ts +15 -0
  39. package/dist/conformance/scope.d.ts.map +1 -0
  40. package/dist/conformance/scope.js +78 -0
  41. package/dist/conformance/scope.js.map +1 -0
  42. package/dist/conformance/seed-contract.d.ts +11 -0
  43. package/dist/conformance/seed-contract.d.ts.map +1 -0
  44. package/dist/conformance/seed-contract.js +680 -0
  45. package/dist/conformance/seed-contract.js.map +1 -0
  46. package/dist/conformance/shapes.d.ts +35 -0
  47. package/dist/conformance/shapes.d.ts.map +1 -0
  48. package/dist/conformance/shapes.js +162 -0
  49. package/dist/conformance/shapes.js.map +1 -0
  50. package/dist/conformance/specs.d.ts +21 -0
  51. package/dist/conformance/specs.d.ts.map +1 -0
  52. package/dist/conformance/specs.js +306 -0
  53. package/dist/conformance/specs.js.map +1 -0
  54. package/dist/conformance/suite.d.ts +209 -0
  55. package/dist/conformance/suite.d.ts.map +1 -0
  56. package/dist/conformance/suite.js +1538 -0
  57. package/dist/conformance/suite.js.map +1 -0
  58. package/dist/conformance/unique.d.ts +7 -0
  59. package/dist/conformance/unique.d.ts.map +1 -0
  60. package/dist/conformance/unique.js +586 -0
  61. package/dist/conformance/unique.js.map +1 -0
  62. package/dist/conformance/worker.d.ts +3 -0
  63. package/dist/conformance/worker.d.ts.map +1 -0
  64. package/dist/conformance/worker.js +27 -0
  65. package/dist/conformance/worker.js.map +1 -0
  66. package/dist/index.d.ts +10 -3
  67. package/dist/index.js +6 -2
  68. package/dist/reference/defects.d.ts +71 -1
  69. package/dist/reference/defects.d.ts.map +1 -1
  70. package/dist/reference/defects.js +74 -8
  71. package/dist/reference/defects.js.map +1 -1
  72. package/dist/reference/dialect.d.ts +6 -4
  73. package/dist/reference/dialect.d.ts.map +1 -1
  74. package/dist/reference/dialect.js +1 -0
  75. package/dist/reference/dialect.js.map +1 -1
  76. package/dist/reference/http.d.ts +17 -25
  77. package/dist/reference/http.d.ts.map +1 -1
  78. package/dist/reference/http.js +574 -224
  79. package/dist/reference/http.js.map +1 -1
  80. package/dist/reference/listing.d.ts +51 -0
  81. package/dist/reference/listing.d.ts.map +1 -0
  82. package/dist/reference/listing.js +256 -0
  83. package/dist/reference/listing.js.map +1 -0
  84. package/dist/reference/model.d.ts +35 -1
  85. package/dist/reference/model.d.ts.map +1 -1
  86. package/dist/reference/model.js +42 -0
  87. package/dist/reference/model.js.map +1 -1
  88. package/dist/reference/query.d.ts +132 -43
  89. package/dist/reference/query.d.ts.map +1 -1
  90. package/dist/reference/query.js +397 -315
  91. package/dist/reference/query.js.map +1 -1
  92. package/dist/reference/shapes.d.ts +60 -0
  93. package/dist/reference/shapes.d.ts.map +1 -0
  94. package/dist/reference/shapes.js +142 -0
  95. package/dist/reference/shapes.js.map +1 -0
  96. package/dist/reference/spec.d.ts +9 -2
  97. package/dist/reference/spec.d.ts.map +1 -1
  98. package/dist/reference/spec.js +291 -71
  99. package/dist/reference/spec.js.map +1 -1
  100. package/dist/reference/store-api.d.ts +14 -43
  101. package/dist/reference/store-api.d.ts.map +1 -1
  102. package/dist/reference/store-api.js +8 -58
  103. package/dist/reference/store-api.js.map +1 -1
  104. package/dist/reference/stores/memory.d.ts +12 -15
  105. package/dist/reference/stores/memory.d.ts.map +1 -1
  106. package/dist/reference/stores/memory.js +22 -70
  107. package/dist/reference/stores/memory.js.map +1 -1
  108. package/dist/reference/stores/postgres.d.ts +11 -23
  109. package/dist/reference/stores/postgres.d.ts.map +1 -1
  110. package/dist/reference/stores/postgres.js +53 -334
  111. package/dist/reference/stores/postgres.js.map +1 -1
  112. package/dist/reference/stores/sql-compile.d.ts +36 -0
  113. package/dist/reference/stores/sql-compile.d.ts.map +1 -0
  114. package/dist/reference/stores/sql-compile.js +95 -0
  115. package/dist/reference/stores/sql-compile.js.map +1 -0
  116. package/dist/reference/stores/sqlite.d.ts +12 -27
  117. package/dist/reference/stores/sqlite.d.ts.map +1 -1
  118. package/dist/reference/stores/sqlite.js +54 -355
  119. package/dist/reference/stores/sqlite.js.map +1 -1
  120. package/dist/report/console.d.ts +2 -1
  121. package/dist/report/console.d.ts.map +1 -1
  122. package/dist/report/console.js +56 -10
  123. package/dist/report/console.js.map +1 -1
  124. package/dist/report/matrix.d.ts +10 -13
  125. package/dist/report/matrix.d.ts.map +1 -1
  126. package/dist/report/matrix.js +82 -18
  127. package/dist/report/matrix.js.map +1 -1
  128. package/dist/report/render.d.ts +18 -1
  129. package/dist/report/render.d.ts.map +1 -1
  130. package/dist/report/render.js +169 -14
  131. package/dist/report/render.js.map +1 -1
  132. package/dist/runtime/async.d.ts +16 -3
  133. package/dist/runtime/async.d.ts.map +1 -1
  134. package/dist/runtime/async.js +24 -19
  135. package/dist/runtime/async.js.map +1 -1
  136. package/dist/runtime/auth.d.ts +2 -9
  137. package/dist/runtime/auth.d.ts.map +1 -1
  138. package/dist/runtime/auth.js +38 -62
  139. package/dist/runtime/auth.js.map +1 -1
  140. package/dist/runtime/body.d.ts +15 -3
  141. package/dist/runtime/body.d.ts.map +1 -1
  142. package/dist/runtime/body.js +61 -12
  143. package/dist/runtime/body.js.map +1 -1
  144. package/dist/runtime/check-costs.d.ts +15 -0
  145. package/dist/runtime/check-costs.d.ts.map +1 -0
  146. package/dist/runtime/check-costs.js +114 -0
  147. package/dist/runtime/check-costs.js.map +1 -0
  148. package/dist/runtime/check-ids.d.ts +15 -0
  149. package/dist/runtime/check-ids.d.ts.map +1 -0
  150. package/dist/runtime/check-ids.js +140 -0
  151. package/dist/runtime/check-ids.js.map +1 -0
  152. package/dist/runtime/checks.d.ts +122 -18
  153. package/dist/runtime/checks.d.ts.map +1 -1
  154. package/dist/runtime/checks.js +3437 -1933
  155. package/dist/runtime/checks.js.map +1 -1
  156. package/dist/runtime/client.d.ts +112 -0
  157. package/dist/runtime/client.d.ts.map +1 -1
  158. package/dist/runtime/client.js +271 -39
  159. package/dist/runtime/client.js.map +1 -1
  160. package/dist/runtime/cookies.d.ts +16 -2
  161. package/dist/runtime/cookies.d.ts.map +1 -1
  162. package/dist/runtime/cookies.js +83 -22
  163. package/dist/runtime/cookies.js.map +1 -1
  164. package/dist/runtime/exchanges.d.ts +4 -5
  165. package/dist/runtime/exchanges.d.ts.map +1 -1
  166. package/dist/runtime/exchanges.js +33 -55
  167. package/dist/runtime/exchanges.js.map +1 -1
  168. package/dist/runtime/exit.d.ts +40 -0
  169. package/dist/runtime/exit.d.ts.map +1 -0
  170. package/dist/runtime/exit.js +48 -0
  171. package/dist/runtime/exit.js.map +1 -0
  172. package/dist/runtime/feature-gate.d.ts +0 -9
  173. package/dist/runtime/feature-gate.d.ts.map +1 -1
  174. package/dist/runtime/feature-gate.js +0 -21
  175. package/dist/runtime/feature-gate.js.map +1 -1
  176. package/dist/runtime/finding.d.ts +61 -7
  177. package/dist/runtime/finding.d.ts.map +1 -1
  178. package/dist/runtime/finding.js +74 -12
  179. package/dist/runtime/finding.js.map +1 -1
  180. package/dist/runtime/fixture.d.ts +35 -28
  181. package/dist/runtime/fixture.d.ts.map +1 -1
  182. package/dist/runtime/fixture.js +92 -731
  183. package/dist/runtime/fixture.js.map +1 -1
  184. package/dist/runtime/generate.d.ts +63 -0
  185. package/dist/runtime/generate.d.ts.map +1 -0
  186. package/dist/runtime/generate.js +635 -0
  187. package/dist/runtime/generate.js.map +1 -0
  188. package/dist/runtime/headers.d.ts +6 -0
  189. package/dist/runtime/headers.d.ts.map +1 -0
  190. package/dist/runtime/headers.js +16 -0
  191. package/dist/runtime/headers.js.map +1 -0
  192. package/dist/runtime/path.d.ts +7 -0
  193. package/dist/runtime/path.d.ts.map +1 -0
  194. package/dist/runtime/path.js +44 -0
  195. package/dist/runtime/path.js.map +1 -0
  196. package/dist/runtime/payloads.d.ts +2 -0
  197. package/dist/runtime/payloads.d.ts.map +1 -1
  198. package/dist/runtime/payloads.js +2 -1
  199. package/dist/runtime/payloads.js.map +1 -1
  200. package/dist/runtime/rate-limit.d.ts +6 -4
  201. package/dist/runtime/rate-limit.d.ts.map +1 -1
  202. package/dist/runtime/rate-limit.js +22 -33
  203. package/dist/runtime/rate-limit.js.map +1 -1
  204. package/dist/runtime/redact.d.ts +24 -0
  205. package/dist/runtime/redact.d.ts.map +1 -0
  206. package/dist/runtime/redact.js +98 -0
  207. package/dist/runtime/redact.js.map +1 -0
  208. package/dist/runtime/run.d.ts +51 -2
  209. package/dist/runtime/run.d.ts.map +1 -1
  210. package/dist/runtime/run.js +463 -195
  211. package/dist/runtime/run.js.map +1 -1
  212. package/dist/runtime/runs.d.ts +5 -0
  213. package/dist/runtime/runs.d.ts.map +1 -1
  214. package/dist/runtime/runs.js +7 -1
  215. package/dist/runtime/runs.js.map +1 -1
  216. package/dist/runtime/scope.d.ts +163 -0
  217. package/dist/runtime/scope.d.ts.map +1 -0
  218. package/dist/runtime/scope.js +423 -0
  219. package/dist/runtime/scope.js.map +1 -0
  220. package/dist/runtime/teardown.d.ts +17 -4
  221. package/dist/runtime/teardown.d.ts.map +1 -1
  222. package/dist/runtime/teardown.js +49 -16
  223. package/dist/runtime/teardown.js.map +1 -1
  224. package/dist/runtime/transcript.d.ts +34 -2
  225. package/dist/runtime/transcript.d.ts.map +1 -1
  226. package/dist/runtime/transcript.js +119 -24
  227. package/dist/runtime/transcript.js.map +1 -1
  228. package/dist/runtime/unique.d.ts +2 -11
  229. package/dist/runtime/unique.d.ts.map +1 -1
  230. package/dist/runtime/unique.js +27 -53
  231. package/dist/runtime/unique.js.map +1 -1
  232. package/dist/runtime/validate.d.ts +13 -2
  233. package/dist/runtime/validate.d.ts.map +1 -1
  234. package/dist/runtime/validate.js +51 -31
  235. package/dist/runtime/validate.js.map +1 -1
  236. package/dist/runtime/wait.d.ts +2 -1
  237. package/dist/runtime/wait.d.ts.map +1 -1
  238. package/dist/runtime/wait.js +2 -36
  239. package/dist/runtime/wait.js.map +1 -1
  240. package/dist/runtime/world.d.ts +31 -3
  241. package/dist/runtime/world.d.ts.map +1 -1
  242. package/dist/runtime/world.js +113 -32
  243. package/dist/runtime/world.js.map +1 -1
  244. package/dist/spec/collection.d.ts +8 -2
  245. package/dist/spec/collection.d.ts.map +1 -1
  246. package/dist/spec/collection.js +47 -7
  247. package/dist/spec/collection.js.map +1 -1
  248. package/dist/spec/extensions.d.ts +5 -1
  249. package/dist/spec/extensions.d.ts.map +1 -1
  250. package/dist/spec/extensions.js +9 -2
  251. package/dist/spec/extensions.js.map +1 -1
  252. package/dist/spec/graph.d.ts +46 -0
  253. package/dist/spec/graph.d.ts.map +1 -1
  254. package/dist/spec/graph.js +175 -11
  255. package/dist/spec/graph.js.map +1 -1
  256. package/dist/spec/load.d.ts +25 -5
  257. package/dist/spec/load.d.ts.map +1 -1
  258. package/dist/spec/load.js +160 -59
  259. package/dist/spec/load.js.map +1 -1
  260. package/dist/spec/query-capabilities.d.ts +4 -0
  261. package/dist/spec/query-capabilities.d.ts.map +1 -1
  262. package/dist/spec/query-capabilities.js +6 -0
  263. package/dist/spec/query-capabilities.js.map +1 -1
  264. package/dist/spec/schema.d.ts +20 -0
  265. package/dist/spec/schema.d.ts.map +1 -0
  266. package/dist/spec/schema.js +118 -0
  267. package/dist/spec/schema.js.map +1 -0
  268. package/dist/spec/tag-schema.d.ts +12 -0
  269. package/dist/spec/tag-schema.d.ts.map +1 -0
  270. package/dist/spec/tag-schema.js +143 -0
  271. package/dist/spec/tag-schema.js.map +1 -0
  272. package/dist/spec/types.js +17 -1
  273. package/dist/spec/types.js.map +1 -1
  274. package/docs/api.md +59 -0
  275. package/docs/assumptions.md +99 -0
  276. package/docs/checks.md +183 -0
  277. package/docs/commands.md +214 -0
  278. package/docs/configuration.md +650 -0
  279. package/docs/model.md +184 -0
  280. package/docs/reference-defects.md +94 -0
  281. package/docs/reports.md +211 -0
  282. package/docs/tags.md +400 -0
  283. package/package.json +3 -1
@@ -1 +1 @@
1
- {"version":3,"file":"teardown.js","sourceRoot":"","sources":["../../src/runtime/teardown.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"teardown.js","sourceRoot":"","sources":["../../src/runtime/teardown.ts"],"names":[],"mappings":"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"}
@@ -31,13 +31,19 @@ export declare function isFormSnapshot(value: unknown): value is FormSnapshot;
31
31
  export declare function holdsLiveBody(value: unknown): boolean;
32
32
  export declare function sha256Hex(bytes: Uint8Array): string;
33
33
  export declare function bodyRef(bytes: Uint8Array, mediaType: string): BodyRef;
34
- export declare function compactRequestBody(body: unknown): Promise<unknown>;
35
- export declare function compactResponseBody(body: unknown, responseHeaders: Record<string, string>): Promise<unknown>;
34
+ export declare function compactRequestBody(body: unknown, knownBytes?: number, digest?: BodyDigest): Promise<unknown>;
35
+ export declare function compactResponseBody(body: unknown, responseHeaders: Record<string, string>, knownBytes?: number, digest?: BodyDigest): Promise<unknown>;
36
36
  /** Drop live request/response payloads on an exchange already pushed to the transcript. */
37
37
  export declare function releaseTranscriptBodies(exchange: Exchange): Promise<void>;
38
38
  export interface ResponsePayload {
39
39
  parsed: unknown;
40
40
  bodyBytes: number;
41
+ /** Size and hash of the bytes as received, for a body too large to keep inline. */
42
+ digest?: BodyDigest;
43
+ }
44
+ export interface BodyDigest {
45
+ bytes: number;
46
+ sha256: string;
41
47
  }
42
48
  /**
43
49
  * Read a fetch Response. `text/event-stream` is parsed incrementally so the raw concatenation
@@ -46,4 +52,30 @@ export interface ResponsePayload {
46
52
  */
47
53
  export declare function readResponsePayload(response: Response): Promise<ResponsePayload>;
48
54
  export type { SseFrame };
55
+ /** Bytes of transcript bodies kept in memory before the oldest move to disk. */
56
+ export declare const TRANSCRIPT_BODY_BUDGET: number;
57
+ /** Where a body went when it moved out of memory. */
58
+ export interface SpooledBody {
59
+ spooled: number;
60
+ }
61
+ export declare function isSpooledBody(value: unknown): value is SpooledBody;
62
+ /**
63
+ * Transcript bodies past a memory budget, on disk.
64
+ *
65
+ * The transcript keeps every exchange — checks judge it after the fact — but not every body in
66
+ * memory: a run that read a few hundred large pages would otherwise hold them all. Bodies are
67
+ * kept newest first up to the budget; older ones are written to a private directory, exactly as
68
+ * they were (this is not the journal, which redacts), and read back on request.
69
+ */
70
+ export declare class BodySpool {
71
+ private readonly budget;
72
+ private readonly kept;
73
+ private held;
74
+ private dir;
75
+ constructor(budget?: number);
76
+ keep(exchange: Exchange): Promise<void>;
77
+ hydrate(exchange: Exchange): Promise<Exchange>;
78
+ dispose(): Promise<void>;
79
+ private write;
80
+ }
49
81
  //# sourceMappingURL=transcript.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transcript.d.ts","sourceRoot":"","sources":["../../src/runtime/transcript.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAS3C,OAAO,EAA+C,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAA;AAErF,MAAM,WAAW,OAAO;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,MAAM,QAAQ,GACjB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAExF,MAAM,WAAW,YAAY;IAC5B,KAAK,EAAE,QAAQ,EAAE,CAAA;CACjB;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,OAAO,CAU1D;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAKpE;AAED,oGAAoG;AACpG,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAQrD;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAEnD;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAErE;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAiCxE;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAwClH;AAED,2FAA2F;AAC3F,wBAAsB,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAG/E;AAED,MAAM,WAAW,eAAe;IAC/B,MAAM,EAAE,OAAO,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;CACjB;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC,CAatF;AAwFD,YAAY,EAAE,QAAQ,EAAE,CAAA"}
1
+ {"version":3,"file":"transcript.d.ts","sourceRoot":"","sources":["../../src/runtime/transcript.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAS3C,OAAO,EAA+C,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAA;AAErF,MAAM,WAAW,OAAO;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,MAAM,QAAQ,GACjB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAExF,MAAM,WAAW,YAAY;IAC5B,KAAK,EAAE,QAAQ,EAAE,CAAA;CACjB;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,OAAO,CAU1D;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAKpE;AAED,oGAAoG;AACpG,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAQrD;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAEnD;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAErE;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAoDlH;AAED,wBAAsB,mBAAmB,CACxC,IAAI,EAAE,OAAO,EACb,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACvC,UAAU,CAAC,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,UAAU,GACjB,OAAO,CAAC,OAAO,CAAC,CA8ClB;AAED,2FAA2F;AAC3F,wBAAsB,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ/E;AAED,MAAM,WAAW,eAAe;IAC/B,MAAM,EAAE,OAAO,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,mFAAmF;IACnF,MAAM,CAAC,EAAE,UAAU,CAAA;CACnB;AAED,MAAM,WAAW,UAAU;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACd;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC,CAqBtF;AA0FD,YAAY,EAAE,QAAQ,EAAE,CAAA;AAExB,gFAAgF;AAChF,eAAO,MAAM,sBAAsB,QAAmB,CAAA;AAEtD,qDAAqD;AACrD,MAAM,WAAW,WAAW;IAC3B,OAAO,EAAE,MAAM,CAAA;CACf;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAElE;AAED;;;;;;;GAOG;AACH,qBAAa,SAAS;IAKT,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJnC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAmD;IACxE,OAAO,CAAC,IAAI,CAAI;IAChB,OAAO,CAAC,GAAG,CAAoB;gBAEF,MAAM,SAAyB;IAEtD,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAYvC,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAW9C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YAMhB,KAAK;CAQnB"}
@@ -5,7 +5,11 @@
5
5
  * `Client` must not retain a second copy for the rest of the run — findings cite hops by
6
6
  * method, URL, status, headers, sizes, and content-addressed body refs.
7
7
  */
8
+ import { presentHeader } from "./headers.js";
8
9
  import { createHash } from "node:crypto";
10
+ import { mkdtemp, readFile, rm, writeFile } from "node:fs/promises";
11
+ import { tmpdir } from "node:os";
12
+ import { join } from "node:path";
9
13
  import { INLINE_BODY_LIMIT, isBinaryMediaType, isSecretJsonKey, primaryMediaType, redactJson, REDACTED, } from "./exchanges.js";
10
14
  import { parseSse, SseParser, sseEvents, sseFramesOf } from "./sse.js";
11
15
  export function isBodyRef(value) {
@@ -51,7 +55,7 @@ export function sha256Hex(bytes) {
51
55
  export function bodyRef(bytes, mediaType) {
52
56
  return { bytes: bytes.byteLength, mediaType, sha256: sha256Hex(bytes) };
53
57
  }
54
- export async function compactRequestBody(body) {
58
+ export async function compactRequestBody(body, knownBytes, digest) {
55
59
  if (body === undefined)
56
60
  return undefined;
57
61
  if (isFormSnapshot(body) || isBodyRef(body))
@@ -74,29 +78,52 @@ export async function compactRequestBody(body) {
74
78
  }
75
79
  return { parts };
76
80
  }
77
- if (isURLSearchParams(body))
78
- return redactJson(Object.fromEntries(body.entries()));
81
+ if (isURLSearchParams(body)) {
82
+ /* A key sent more than once is how a form sends an array; keep every value. */
83
+ const fields = {};
84
+ for (const [key, value] of body.entries()) {
85
+ const prior = fields[key];
86
+ fields[key] = prior === undefined ? value : [...[prior].flat(), value];
87
+ }
88
+ return redactJson(fields);
89
+ }
79
90
  const raw = await bytesOf(body);
80
91
  if (raw !== undefined)
81
92
  return bodyRef(raw, "application/octet-stream");
93
+ /* Hashed when it was sent, from the text that went out (a string or JSON); nothing to
94
+ * serialize again. */
95
+ if (digest !== undefined) {
96
+ return {
97
+ bytes: digest.bytes,
98
+ mediaType: typeof body === "string" ? "text/plain" : "application/json",
99
+ sha256: digest.sha256,
100
+ };
101
+ }
82
102
  if (typeof body === "string") {
83
103
  const bytes = utf8Bytes(body);
84
104
  return bytes.byteLength <= INLINE_BODY_LIMIT ? body : bodyRef(bytes, "text/plain");
85
105
  }
86
106
  if (body !== null && typeof body === "object") {
107
+ /* The size it went out at is already known; serializing again only to measure is waste. */
108
+ if (knownBytes !== undefined && knownBytes <= INLINE_BODY_LIMIT)
109
+ return body;
87
110
  const bytes = utf8Bytes(JSON.stringify(body));
88
111
  return bytes.byteLength <= INLINE_BODY_LIMIT ? body : bodyRef(bytes, "application/json");
89
112
  }
90
113
  return body;
91
114
  }
92
- export async function compactResponseBody(body, responseHeaders) {
115
+ export async function compactResponseBody(body, responseHeaders, knownBytes, digest) {
93
116
  if (body === undefined)
94
117
  return undefined;
118
+ /* What was received, when the client kept its size and hash; a re-encoding otherwise. */
119
+ const refOf = (bytes, type) => digest === undefined ? bodyRef(bytes, type) : { bytes: digest.bytes, mediaType: type, sha256: digest.sha256 };
95
120
  if (isBodyRef(body) || isFormSnapshot(body))
96
121
  return body;
97
- const mediaType = headerOf(responseHeaders, "content-type") ?? "";
122
+ const mediaType = presentHeader(responseHeaders, "content-type") ?? "";
98
123
  const sse = mediaType.toLowerCase().includes("text/event-stream");
99
- if (Array.isArray(body)) {
124
+ /* Frames only under text/event-stream: a JSON array of strings, or a string that happens to
125
+ * start with "data:", is just that. */
126
+ if (sse && Array.isArray(body)) {
100
127
  const frames = sseEvents(body);
101
128
  if (frames !== null) {
102
129
  const compact = sseFramesOf(frames);
@@ -107,7 +134,7 @@ export async function compactResponseBody(body, responseHeaders) {
107
134
  }
108
135
  }
109
136
  if (typeof body === "string") {
110
- const frames = sseEvents(body);
137
+ const frames = sse ? sseEvents(body) : null;
111
138
  if (frames !== null) {
112
139
  const compact = sseFramesOf(frames);
113
140
  const bytes = utf8Bytes(JSON.stringify(compact));
@@ -120,24 +147,26 @@ export async function compactResponseBody(body, responseHeaders) {
120
147
  return body;
121
148
  if (!sse && !isBinaryMediaType(mediaType) && bytes.byteLength <= INLINE_BODY_LIMIT)
122
149
  return body;
123
- return bodyRef(bytes, primaryMediaType(mediaType, sse ? "text/event-stream" : "text/plain"));
150
+ return sse
151
+ ? bodyRef(bytes, primaryMediaType(mediaType, "text/event-stream"))
152
+ : refOf(bytes, primaryMediaType(mediaType, "text/plain"));
124
153
  }
125
154
  const raw = await bytesOf(body);
126
155
  if (raw !== undefined) {
127
156
  return bodyRef(raw, primaryMediaType(mediaType, "application/octet-stream"));
128
157
  }
129
158
  if (body !== null && typeof body === "object") {
159
+ if (knownBytes !== undefined && knownBytes <= INLINE_BODY_LIMIT)
160
+ return body;
130
161
  const bytes = utf8Bytes(JSON.stringify(body));
131
- return bytes.byteLength <= INLINE_BODY_LIMIT
132
- ? body
133
- : bodyRef(bytes, primaryMediaType(mediaType, "application/json"));
162
+ return bytes.byteLength <= INLINE_BODY_LIMIT ? body : refOf(bytes, primaryMediaType(mediaType, "application/json"));
134
163
  }
135
164
  return body;
136
165
  }
137
166
  /** Drop live request/response payloads on an exchange already pushed to the transcript. */
138
167
  export async function releaseTranscriptBodies(exchange) {
139
- exchange.requestBody = await compactRequestBody(exchange.requestBody);
140
- exchange.responseBody = await compactResponseBody(exchange.responseBody, exchange.responseHeaders);
168
+ exchange.requestBody = await compactRequestBody(exchange.requestBody, exchange.requestBytes, exchange.requestDigest);
169
+ exchange.responseBody = await compactResponseBody(exchange.responseBody, exchange.responseHeaders, exchange.responseBytes, exchange.responseDigest);
141
170
  }
142
171
  /**
143
172
  * Read a fetch Response. `text/event-stream` is parsed incrementally so the raw concatenation
@@ -149,15 +178,34 @@ export async function readResponsePayload(response) {
149
178
  if (contentType.toLowerCase().includes("text/event-stream")) {
150
179
  return readSsePayload(response);
151
180
  }
152
- const text = await response.text();
153
- const bodyBytes = utf8ByteLength(text);
154
- if (text === "")
181
+ /* Bytes once: their count is the size on the wire, whatever the encoding. Only text is
182
+ * decoded, and by the charset it declares — a Latin-1 page read as UTF-8 is a different page. */
183
+ const bytes = new Uint8Array(await response.arrayBuffer());
184
+ const bodyBytes = bytes.byteLength;
185
+ if (bodyBytes === 0)
155
186
  return { bodyBytes: 0, parsed: null };
187
+ /* A body that will be stored by reference is hashed now, while its received bytes exist:
188
+ * re-encoding the parsed value later would hash something the server never sent. */
189
+ const digest = bodyBytes > INLINE_BODY_LIMIT ? { bytes: bodyBytes, sha256: sha256Hex(bytes) } : undefined;
190
+ const withDigest = digest === undefined ? {} : { digest };
191
+ if (isBinaryMediaType(contentType))
192
+ return { bodyBytes, parsed: bytes, ...withDigest };
193
+ const text = decodeText(bytes, contentType);
194
+ try {
195
+ return { bodyBytes, parsed: JSON.parse(text), ...withDigest };
196
+ }
197
+ catch {
198
+ return { bodyBytes, parsed: text, ...withDigest };
199
+ }
200
+ }
201
+ function decodeText(bytes, contentType) {
202
+ const charset = /charset\s*=\s*"?([^";\s]+)/i.exec(contentType)?.[1];
156
203
  try {
157
- return { bodyBytes, parsed: JSON.parse(text) };
204
+ return new TextDecoder(charset ?? "utf-8").decode(bytes);
158
205
  }
159
206
  catch {
160
- return { bodyBytes, parsed: text };
207
+ /* An unknown label is the server's mistake; UTF-8 is the only sensible reading left. */
208
+ return new TextDecoder("utf-8").decode(bytes);
161
209
  }
162
210
  }
163
211
  async function readSsePayload(response) {
@@ -241,12 +289,59 @@ function utf8Bytes(text) {
241
289
  function utf8ByteLength(text) {
242
290
  return text === "" ? 0 : utf8Bytes(text).byteLength;
243
291
  }
244
- function headerOf(headers, name) {
245
- const want = name.toLowerCase();
246
- for (const [key, value] of Object.entries(headers)) {
247
- if (key.toLowerCase() === want && value.trim() !== "")
248
- return value;
292
+ /** Bytes of transcript bodies kept in memory before the oldest move to disk. */
293
+ export const TRANSCRIPT_BODY_BUDGET = 32 * 1024 * 1024;
294
+ export function isSpooledBody(value) {
295
+ return value !== null && typeof value === "object" && typeof value.spooled === "number";
296
+ }
297
+ /**
298
+ * Transcript bodies past a memory budget, on disk.
299
+ *
300
+ * The transcript keeps every exchange — checks judge it after the fact — but not every body in
301
+ * memory: a run that read a few hundred large pages would otherwise hold them all. Bodies are
302
+ * kept newest first up to the budget; older ones are written to a private directory, exactly as
303
+ * they were (this is not the journal, which redacts), and read back on request.
304
+ */
305
+ export class BodySpool {
306
+ budget;
307
+ kept = [];
308
+ held = 0;
309
+ dir;
310
+ constructor(budget = TRANSCRIPT_BODY_BUDGET) {
311
+ this.budget = budget;
312
+ }
313
+ async keep(exchange) {
314
+ const bytes = exchange.requestBytes + exchange.responseBytes;
315
+ this.kept.push({ bytes, exchange });
316
+ this.held += bytes;
317
+ while (this.held > this.budget && this.kept.length > 1) {
318
+ /* More than one is kept, so there is an oldest. */
319
+ const oldest = this.kept.shift();
320
+ this.held -= oldest.bytes;
321
+ await this.write(oldest.exchange);
322
+ }
323
+ }
324
+ async hydrate(exchange) {
325
+ if (!isSpooledBody(exchange.responseBody) && !isSpooledBody(exchange.requestBody))
326
+ return exchange;
327
+ const seq = (isSpooledBody(exchange.responseBody) ? exchange.responseBody : exchange.requestBody);
328
+ /* A marker exists only once a write has made the directory. */
329
+ const saved = JSON.parse(await readFile(join(this.dir, `${seq.spooled}.json`), "utf8"));
330
+ return { ...exchange, requestBody: saved.requestBody, responseBody: saved.responseBody };
331
+ }
332
+ async dispose() {
333
+ if (this.dir === undefined)
334
+ return;
335
+ await rm(this.dir, { force: true, recursive: true });
336
+ this.dir = undefined;
337
+ }
338
+ async write(exchange) {
339
+ this.dir ??= await mkdtemp(join(tmpdir(), "oat-transcript-"));
340
+ const body = { requestBody: exchange.requestBody, responseBody: exchange.responseBody };
341
+ await writeFile(join(this.dir, `${exchange.seq}.json`), JSON.stringify(body));
342
+ const marker = { spooled: exchange.seq };
343
+ exchange.requestBody = exchange.requestBody === undefined ? undefined : marker;
344
+ exchange.responseBody = exchange.responseBody === undefined ? undefined : marker;
249
345
  }
250
- return undefined;
251
346
  }
252
347
  //# sourceMappingURL=transcript.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"transcript.js","sourceRoot":"","sources":["../../src/runtime/transcript.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transcript.js","sourceRoot":"","sources":["../../src/runtime/transcript.ts"],"names":[],"mappings":"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"}
@@ -5,10 +5,6 @@
5
5
  * not required. Uniqueness is never inferred from a 409 without the tag.
6
6
  */
7
7
  import type { OperationModel, SpecModel } from "../spec/graph.ts";
8
- import type { OperationObject } from "../spec/types.ts";
9
- import type { Exchange } from "./client.ts";
10
- import type { FindingCollector } from "./finding.ts";
11
- import type { SchemaValidator } from "./validate.ts";
12
8
  export declare const UNIQUE_CONFLICT_STATUS = 409;
13
9
  export declare function isUniqueConflictResponse(op: Pick<OperationModel, "unique">, status: number): boolean;
14
10
  /** Header names the document (and oat) treat as an idempotency key. */
@@ -37,11 +33,6 @@ export declare function uniquifyProbeBody(body: Record<string, unknown>, sets: s
37
33
  * Other unique sets keep the uniquified values so two sets are never collided in one request.
38
34
  */
39
35
  export declare function collisionCreateBody(base: Record<string, unknown>, known: Record<string, unknown>, set: string[], scope: Record<string, string>, bodyColumns: ReadonlySet<string>, generated: readonly string[]): Record<string, unknown> | null;
40
- /** PATCH body that copies one unique set from `source` onto a different row. */
41
- export declare function collisionUpdatePatch(source: Record<string, unknown>, set: string[], scope: Record<string, string>, bodyColumns: ReadonlySet<string>, immutable: readonly string[], generated: readonly string[]): Record<string, unknown> | null;
42
- /**
43
- * A 409 still has to match the documented error schema. Coverage is "this 409 is expected";
44
- * it is not a free pass for an undeclared body.
45
- */
46
- export declare function reportUniqueSchemaDrift(findings: FindingCollector, validator: SchemaValidator, op: OperationModel, raw: OperationObject | undefined, exchange: Exchange, entity: string): void;
36
+ /** The update that makes `target` hold `source`'s values on a whole unique set, or `null` when it cannot. */
37
+ export declare function collisionUpdatePatch(source: Record<string, unknown>, target: Record<string, unknown>, set: string[], scope: Record<string, string>, bodyColumns: ReadonlySet<string>, immutable: readonly string[], generated: readonly string[]): Record<string, unknown> | null;
47
38
  //# sourceMappingURL=unique.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"unique.d.ts","sourceRoot":"","sources":["../../src/runtime/unique.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"unique.d.ts","sourceRoot":"","sources":["../../src/runtime/unique.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAEjE,eAAO,MAAM,sBAAsB,MAAM,CAAA;AAEzC,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAEpG;AAED,uEAAuE;AACvE,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CACjC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,iBAAiB,EAAE,MAAM,GAAG,IAAI,EAChC,QAAQ,EAAE,OAAO,EACjB,QAAQ,EAAE,MAAM,GACd,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAUxB;AAED,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAMvF;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,CAOnF;AAUD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAClC,EAAE,EAAE,cAAc,EAClB,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,QAAQ,GAAG,QAAQ,EAC1B,IAAI,GAAE,MAAM,EAAE,EAAoB,GAChC,MAAM,EAAE,EAAE,CASZ;AAED,wBAAgB,mBAAmB,CAClC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,IAAI,EAAE,MAAM,EAAE,EAAE,EAChB,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACtC,OAAO,CAMT;AAED,wBAAgB,iBAAiB,CAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,IAAI,EAAE,MAAM,EAAE,EAAE,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,EACtC,KAAK,EAAE,MAAM,GACX,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CASzB;AAuBD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAClC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,GAAG,EAAE,MAAM,EAAE,EACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7B,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,EAChC,SAAS,EAAE,SAAS,MAAM,EAAE,GAC1B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAYhC;AAED,6GAA6G;AAC7G,wBAAgB,oBAAoB,CACnC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,GAAG,EAAE,MAAM,EAAE,EACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7B,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,EAChC,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,SAAS,EAAE,SAAS,MAAM,EAAE,GAC1B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAehC"}
@@ -4,6 +4,7 @@
4
4
  * HTTP 409 is the unique-conflict class. Index names and product `error_key` / `vars.type` are
5
5
  * not required. Uniqueness is never inferred from a 409 without the tag.
6
6
  */
7
+ import { generate } from "./generate.js";
7
8
  import { requestContent } from "../spec/collection.js";
8
9
  export const UNIQUE_CONFLICT_STATUS = 409;
9
10
  export function isUniqueConflictResponse(op, status) {
@@ -96,36 +97,25 @@ export function uniquifyProbeBody(body, sets, schema, token) {
96
97
  }
97
98
  return out;
98
99
  }
100
+ /**
101
+ * A value for a unique column that no earlier record — this run's or an earlier run's — holds.
102
+ *
103
+ * Drawn from the column's own schema with the token mixed in, so it honours `maximum`,
104
+ * `multipleOf`, `enum`, `pattern` and `format`. Appending a suffix to whatever was there broke
105
+ * every one of those. Where the schema admits nothing new, the value is left as it was and the
106
+ * caller's collision check decides.
107
+ */
99
108
  function distinctUniqueValue(value, token, schema) {
100
- if (typeof value === "number" && Number.isFinite(value)) {
101
- const n = token.split("").reduce((acc, ch) => acc + ch.charCodeAt(0), 0);
102
- return value + (n % 97) + 1;
103
- }
104
- if (typeof value !== "string")
109
+ if (schema === undefined)
105
110
  return value;
106
- return suffixUniqueString(value, token, schema);
107
- }
108
- function suffixUniqueString(value, token, schema) {
109
- const max = typeof schema?.maxLength === "number" ? schema.maxLength : undefined;
110
- const pattern = typeof schema?.pattern === "string" ? schema.pattern : undefined;
111
- const suffix = `-${token}`;
112
- let next = `${value}${suffix}`;
113
- if (max !== undefined && next.length > max) {
114
- const keep = Math.max(0, max - suffix.length);
115
- next = `${value.slice(0, keep)}${suffix}`;
116
- if (next.length > max)
117
- next = suffix.slice(-max);
118
- }
119
- if (pattern !== undefined) {
120
- try {
121
- if (!new RegExp(pattern, "u").test(next))
122
- return value;
123
- }
124
- catch {
125
- return value;
126
- }
127
- }
128
- return next;
111
+ let h = 0;
112
+ for (const ch of token)
113
+ h = (Math.imul(h, 31) + ch.charCodeAt(0)) >>> 0;
114
+ const result = generate({ properties: { value: schema }, required: ["value"], type: "object" }, { distinct: new Set(["value"]), index: h % 1000, nonce: token });
115
+ if (!result.ok)
116
+ return value;
117
+ const next = result.value.value;
118
+ return JSON.stringify(next) === JSON.stringify(value) ? value : next;
129
119
  }
130
120
  /**
131
121
  * Overlays one unique set's values from a known row onto a body that otherwise does not collide.
@@ -147,39 +137,23 @@ export function collisionCreateBody(base, known, set, scope, bodyColumns, genera
147
137
  }
148
138
  return wrote ? out : null;
149
139
  }
150
- /** PATCH body that copies one unique set from `source` onto a different row. */
151
- export function collisionUpdatePatch(source, set, scope, bodyColumns, immutable, generated) {
140
+ /** The update that makes `target` hold `source`'s values on a whole unique set, or `null` when it cannot. */
141
+ export function collisionUpdatePatch(source, target, set, scope, bodyColumns, immutable, generated) {
152
142
  const skip = new Set([...immutable, ...generated]);
153
143
  const patch = {};
154
144
  for (const col of set) {
155
- if (!bodyColumns.has(col) || skip.has(col))
156
- continue;
157
145
  const value = source[col] ?? scope[col];
158
146
  if (value === undefined)
159
147
  return null;
148
+ if (!bodyColumns.has(col) || skip.has(col)) {
149
+ /* A column the update cannot write must already agree, or the two rows would still
150
+ * differ on the set after the write — and accepting it would be correct. */
151
+ if (JSON.stringify(target[col] ?? scope[col]) !== JSON.stringify(value))
152
+ return null;
153
+ continue;
154
+ }
160
155
  patch[col] = value;
161
156
  }
162
157
  return Object.keys(patch).length > 0 ? patch : null;
163
158
  }
164
- /**
165
- * A 409 still has to match the documented error schema. Coverage is "this 409 is expected";
166
- * it is not a free pass for an undeclared body.
167
- */
168
- export function reportUniqueSchemaDrift(findings, validator, op, raw, exchange, entity) {
169
- if (raw === undefined)
170
- return;
171
- if (!validator.documents(raw, exchange.status))
172
- return;
173
- const result = validator.validate(op.operationId, raw, exchange.status, exchange.responseBody);
174
- if (result.ok)
175
- return;
176
- if (findings.findings.some((finding) => finding.check === "schema.error-response-matches-document" &&
177
- finding.entity === entity &&
178
- finding.evidence.some((prior) => prior.seq === exchange.seq))) {
179
- return;
180
- }
181
- findings.spec("schema.error-response-matches-document", entity, `${exchange.status} error body does not match its documented schema`, `${op.operationId} returned ${exchange.status} with a body that fails the schema the ` +
182
- `document declares for it: ${result.errors.join("; ")}. Clients that parse errors ` +
183
- "from the spec will not understand this response.", [exchange]);
184
- }
185
159
  //# sourceMappingURL=unique.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"unique.js","sourceRoot":"","sources":["../../src/runtime/unique.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"unique.js","sourceRoot":"","sources":["../../src/runtime/unique.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@
5
5
  * as written: a document that declares a closed object and a backend that returns extra fields
6
6
  * genuinely disagree, and which one is wrong is a decision for the reader, not for oat.
7
7
  */
8
- import type { OperationObject } from "../spec/types.ts";
8
+ import type { OperationObject, SchemaObject } from "../spec/types.ts";
9
9
  /** Minimal surface oat uses — avoids depending on AJV's CJS/ESM type shape. */
10
10
  export interface ValidateFunction {
11
11
  (data: unknown): boolean;
@@ -17,15 +17,26 @@ export interface ValidateFunction {
17
17
  export interface ValidationResult {
18
18
  ok: boolean;
19
19
  errors: string[];
20
+ /**
21
+ * Set when the documented schema could not be compiled, with AJV's reason. Nothing was
22
+ * validated, and the caller must say so — an uncompilable schema is not a passing one.
23
+ */
24
+ unchecked?: string;
20
25
  }
21
26
  export declare class SchemaValidator {
22
27
  private readonly ajv;
23
28
  private readonly cache;
24
- constructor();
29
+ /** `defs`: the recursive schemas a dereferenced document refers to (see `dereference`). */
30
+ constructor(defs?: Record<string, SchemaObject>);
25
31
  /** Compiles the schema documented for this operation and status, if there is one. */
26
32
  private compile;
27
33
  validate(operationId: string, op: OperationObject, status: number, body: unknown): ValidationResult;
28
34
  /** True when the document actually documents this status for this operation. */
29
35
  documents(op: OperationObject, status: number): boolean;
30
36
  }
37
+ /**
38
+ * Whether `value` satisfies an already-normalized `schema` — the self-check every generated body
39
+ * passes before it is sent. Returns AJV's complaints, or `[]`.
40
+ */
41
+ export declare function instanceErrors(schema: SchemaObject, value: unknown, defs?: Record<string, SchemaObject>): string[];
31
42
  //# sourceMappingURL=validate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/runtime/validate.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAgB,MAAM,kBAAkB,CAAA;AAErE,+EAA+E;AAC/E,MAAM,WAAW,gBAAgB;IAChC,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAA;IACxB,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI,CAAA;CAClE;AAQD,MAAM,WAAW,gBAAgB;IAChC,EAAE,EAAE,OAAO,CAAA;IACX,MAAM,EAAE,MAAM,EAAE,CAAA;CAChB;AASD,qBAAa,eAAe;IAC3B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA6C;;IAanE,qFAAqF;IACrF,OAAO,CAAC,OAAO;IAqBf,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,gBAAgB;IAWnG,gFAAgF;IAChF,SAAS,CAAC,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;CAGvD"}
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/runtime/validate.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAErE,+EAA+E;AAC/E,MAAM,WAAW,gBAAgB;IAChC,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAA;IACxB,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI,CAAA;CAClE;AASD,MAAM,WAAW,gBAAgB;IAChC,EAAE,EAAE,OAAO,CAAA;IACX,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CAClB;AASD,qBAAa,eAAe;IAC3B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkE;IAExF,2FAA2F;gBAC/E,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAM;IAgBnD,qFAAqF;IACrF,OAAO,CAAC,OAAO;IAsBf,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,gBAAgB;IAYnG,gFAAgF;IAChF,SAAS,CAAC,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;CAGvD;AAgCD;;;GAGG;AACH,wBAAgB,cAAc,CAC7B,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,OAAO,EACd,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAW,GAC1C,MAAM,EAAE,CAaV"}