@lovrozagar/oat 0.3.0 → 0.5.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 (75) hide show
  1. package/README.md +71 -22
  2. package/dist/cli.js +7 -2
  3. package/dist/config/define-config.d.ts +41 -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/index.d.ts +1 -1
  7. package/dist/reference/defects.d.ts +14 -0
  8. package/dist/reference/defects.d.ts.map +1 -1
  9. package/dist/reference/defects.js +14 -0
  10. package/dist/reference/defects.js.map +1 -1
  11. package/dist/reference/http.d.ts.map +1 -1
  12. package/dist/reference/http.js +4 -1
  13. package/dist/reference/http.js.map +1 -1
  14. package/dist/report/matrix.d.ts.map +1 -1
  15. package/dist/report/matrix.js +2 -0
  16. package/dist/report/matrix.js.map +1 -1
  17. package/dist/report/render.d.ts.map +1 -1
  18. package/dist/report/render.js +28 -5
  19. package/dist/report/render.js.map +1 -1
  20. package/dist/runtime/auth.d.ts.map +1 -1
  21. package/dist/runtime/auth.js +30 -3
  22. package/dist/runtime/auth.js.map +1 -1
  23. package/dist/runtime/body.d.ts +33 -0
  24. package/dist/runtime/body.d.ts.map +1 -0
  25. package/dist/runtime/body.js +218 -0
  26. package/dist/runtime/body.js.map +1 -0
  27. package/dist/runtime/checks.d.ts +3 -0
  28. package/dist/runtime/checks.d.ts.map +1 -1
  29. package/dist/runtime/checks.js +329 -18
  30. package/dist/runtime/checks.js.map +1 -1
  31. package/dist/runtime/client.d.ts +20 -1
  32. package/dist/runtime/client.d.ts.map +1 -1
  33. package/dist/runtime/client.js +207 -8
  34. package/dist/runtime/client.js.map +1 -1
  35. package/dist/runtime/dummy.d.ts +23 -0
  36. package/dist/runtime/dummy.d.ts.map +1 -0
  37. package/dist/runtime/dummy.js +214 -0
  38. package/dist/runtime/dummy.js.map +1 -0
  39. package/dist/runtime/fixture.d.ts.map +1 -1
  40. package/dist/runtime/fixture.js +4 -3
  41. package/dist/runtime/fixture.js.map +1 -1
  42. package/dist/runtime/payloads.d.ts +20 -0
  43. package/dist/runtime/payloads.d.ts.map +1 -0
  44. package/dist/runtime/payloads.js +250 -0
  45. package/dist/runtime/payloads.js.map +1 -0
  46. package/dist/runtime/progress.d.ts +4 -0
  47. package/dist/runtime/progress.d.ts.map +1 -1
  48. package/dist/runtime/progress.js +23 -0
  49. package/dist/runtime/progress.js.map +1 -1
  50. package/dist/runtime/run.d.ts +4 -1
  51. package/dist/runtime/run.d.ts.map +1 -1
  52. package/dist/runtime/run.js +15 -1
  53. package/dist/runtime/run.js.map +1 -1
  54. package/dist/runtime/upload.d.ts +21 -0
  55. package/dist/runtime/upload.d.ts.map +1 -0
  56. package/dist/runtime/upload.js +247 -0
  57. package/dist/runtime/upload.js.map +1 -0
  58. package/dist/runtime/world.d.ts +2 -0
  59. package/dist/runtime/world.d.ts.map +1 -1
  60. package/dist/runtime/world.js +16 -11
  61. package/dist/runtime/world.js.map +1 -1
  62. package/dist/spec/collection.d.ts +13 -0
  63. package/dist/spec/collection.d.ts.map +1 -1
  64. package/dist/spec/collection.js +36 -6
  65. package/dist/spec/collection.js.map +1 -1
  66. package/dist/spec/graph.js +2 -2
  67. package/dist/spec/graph.js.map +1 -1
  68. package/dist/spec/load.d.ts +2 -0
  69. package/dist/spec/load.d.ts.map +1 -1
  70. package/dist/spec/load.js +12 -0
  71. package/dist/spec/load.js.map +1 -1
  72. package/dist/spec/types.d.ts +3 -0
  73. package/dist/spec/types.d.ts.map +1 -1
  74. package/dist/spec/types.js.map +1 -1
  75. package/package.json +1 -1
@@ -10,6 +10,17 @@ export interface Exchange {
10
10
  responseHeaders: Record<string, string>;
11
11
  responseBody: unknown;
12
12
  durationMs: number;
13
+ /** Wall clock when the response finished, unix ms. */
14
+ at: number;
15
+ /** Reconstructed HTTP/1.1 request size: start line, headers, body. */
16
+ requestBytes: number;
17
+ /** Reconstructed HTTP/1.1 response size: start line, headers, body. */
18
+ responseBytes: number;
19
+ /**
20
+ * `x-request-id` / `request-id` / `x-correlation-id` / `correlation-id`.
21
+ * Response header wins; otherwise what oat sent. Empty when neither side passed one.
22
+ */
23
+ requestId: string;
13
24
  /** Rate-limit category this request was paced against, when one matched. */
14
25
  rateLimitCategory?: string;
15
26
  /** Where that category came from — a `spec.*` finding only ever cites a `"tag"` rejection. */
@@ -20,8 +31,12 @@ export interface Exchange {
20
31
  export interface RequestOptions {
21
32
  headers?: Record<string, string>;
22
33
  query?: Record<string, string | number | undefined>;
34
+ /** Plain object (JSON), FormData, URLSearchParams, or any BodyInit. */
23
35
  body?: unknown;
24
- /** Suppresses content-type on bodyless requests, and lets negative cases send a wrong one. */
36
+ /**
37
+ * Explicit type, or `null` when headers are already final.
38
+ * FormData never gets a Content-Type here — fetch must set the boundary.
39
+ */
25
40
  contentType?: string | null;
26
41
  }
27
42
  export declare class Client {
@@ -73,4 +88,8 @@ export interface CurlOptions {
73
88
  * single-quoted so JSON bodies and query strings survive untouched.
74
89
  */
75
90
  export declare function toCurl(exchange: Exchange, options?: CurlOptions): string;
91
+ /** Response header first, then the request. Empty when neither side sent one of the known names. */
92
+ /** Plain snapshot of a request body for reports — FormData is not JSON. */
93
+ export declare function describeRequestBody(body: unknown): unknown;
94
+ export declare function requestIdOf(requestHeaders: Record<string, string>, responseHeaders: Record<string, string>): string;
76
95
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/runtime/client.ts"],"names":[],"mappings":"AAAA,mGAAmG;AAEnG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAElD,MAAM,WAAW,QAAQ;IACxB,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;IACX,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACtC,WAAW,EAAE,OAAO,CAAA;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACvC,YAAY,EAAE,OAAO,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,4EAA4E;IAC5E,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,8FAA8F;IAC9F,eAAe,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAA;IAClC,+FAA+F;IAC/F,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED,MAAM,WAAW,cAAc;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,CAAA;IACnD,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,8FAA8F;IAC9F,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC3B;AAED,qBAAa,MAAM;IAOjB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;IAC5B,oFAAoF;IACpF,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;IAlB9B,QAAQ,CAAC,UAAU,EAAE,QAAQ,EAAE,CAAK;IACpC,OAAO,CAAC,GAAG,CAAI;IACf,OAAO,CAAC,QAAQ,CAAI;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;gBAG9B,OAAO,EAAE,MAAM,EACf,aAAa,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM;IAC3D;;;;;;OAMG;IACc,WAAW,SAAI,EACf,UAAU,CAAC,GAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,aAAA;IAC1D,oFAAoF;IACnE,WAAW,CAAC,EAAE,WAAW,YAAA;IAG3C,sFAAsF;YACxE,OAAO;IASrB,OAAO,CAAC,OAAO;IAKT,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC;IA0D5F,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC;CAGlE;AAED,MAAM,WAAW,WAAW;IAC3B,4EAA4E;IAC5E,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC1B,2FAA2F;IAC3F,MAAM,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,GAAE,WAAgB,GAAG,MAAM,CAuB5E"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/runtime/client.ts"],"names":[],"mappings":"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"}
@@ -46,12 +46,12 @@ export class Client {
46
46
  url.searchParams.set(key, String(value));
47
47
  }
48
48
  const headers = { ...this.globalHeaders, ...options.headers };
49
- if (options.body !== undefined && options.contentType !== null) {
50
- headers["content-type"] = options.contentType ?? "application/json";
51
- }
49
+ const encoded = encodeBody(options.body, options.contentType);
50
+ if (encoded.contentType !== undefined)
51
+ headers["content-type"] = encoded.contentType;
52
52
  const init = { headers, method };
53
- if (options.body !== undefined)
54
- init.body = JSON.stringify(options.body);
53
+ if (encoded.init !== undefined)
54
+ init.body = encoded.init;
55
55
  /* Two independent constraints, both held: maxInFlight bounds concurrency with no notion of
56
56
  * time, a rate-limit category bounds throughput over time. The in-flight slot is acquired
57
57
  * first and released in the same finally as before — pacing sits entirely inside that
@@ -62,12 +62,14 @@ export class Client {
62
62
  let started;
63
63
  let response;
64
64
  let text;
65
+ let at = 0;
65
66
  try {
66
67
  if (rule !== undefined)
67
68
  rateLimitHadRoom = await this.rateLimiter?.acquire(rule);
68
69
  started = performance.now();
69
70
  response = await fetch(url, init);
70
71
  text = await response.text();
72
+ at = Date.now();
71
73
  }
72
74
  finally {
73
75
  this.release();
@@ -80,13 +82,19 @@ export class Client {
80
82
  /* keep the raw text — a non-JSON body is itself evidence */
81
83
  }
82
84
  this.seq += 1;
85
+ const verb = method.toUpperCase();
86
+ const responseHeaders = Object.fromEntries(response.headers.entries());
83
87
  const exchange = {
88
+ at,
84
89
  durationMs: Math.round(performance.now() - started),
85
- method: method.toUpperCase(),
90
+ method: verb,
86
91
  requestBody: options.body,
92
+ requestBytes: requestMessageBytes(verb, url, headers, encoded.bytes, encoded.text),
87
93
  requestHeaders: headers,
94
+ requestId: requestIdOf(headers, responseHeaders),
88
95
  responseBody: parsed,
89
- responseHeaders: Object.fromEntries(response.headers.entries()),
96
+ responseBytes: responseMessageBytes(response.status, response.statusText, responseHeaders, text),
97
+ responseHeaders,
90
98
  seq: this.seq,
91
99
  status: response.status,
92
100
  url: url.toString(),
@@ -126,10 +134,201 @@ export function toCurl(exchange, options = {}) {
126
134
  parts.push(` -H '${key}: ${value}'`);
127
135
  }
128
136
  if (exchange.requestBody !== undefined) {
129
- parts.push(` -d '${JSON.stringify(exchange.requestBody).replace(/'/g, `'\\''`)}'`);
137
+ for (const flag of curlBodyFlags(exchange.requestBody))
138
+ parts.push(flag);
130
139
  }
131
140
  return parts.join(" \\\n");
132
141
  }
142
+ function curlBodyFlags(body) {
143
+ if (isFormData(body)) {
144
+ const flags = [];
145
+ for (const [name, value] of body.entries()) {
146
+ if (typeof value === "string") {
147
+ flags.push(` -F '${name}=${value.replace(/'/g, `'\\''`)}'`);
148
+ }
149
+ else {
150
+ flags.push(` -F '${name}=@${value.name};type=${value.type || "application/octet-stream"}'`);
151
+ }
152
+ }
153
+ return flags;
154
+ }
155
+ if (isURLSearchParams(body)) {
156
+ return [` --data-urlencode '${body.toString().replace(/'/g, `'\\''`)}'`];
157
+ }
158
+ if (typeof body === "string") {
159
+ return [` -d '${body.replace(/'/g, `'\\''`)}'`];
160
+ }
161
+ if (isRawBytes(body)) {
162
+ return [` --data-binary @-`];
163
+ }
164
+ return [` -d '${JSON.stringify(body).replace(/'/g, `'\\''`)}'`];
165
+ }
166
+ function encodeBody(body, contentType) {
167
+ if (body === undefined)
168
+ return { bytes: 0 };
169
+ if (contentType === null) {
170
+ const raw = asBodyInit(body);
171
+ const encoded = { bytes: bodyByteLength(body), init: raw ?? JSON.stringify(body) };
172
+ if (typeof body === "string")
173
+ encoded.text = body;
174
+ return encoded;
175
+ }
176
+ if (isFormData(body)) {
177
+ /* fetch sets multipart/form-data; boundary=… — setting it ourselves drops the boundary. */
178
+ return { bytes: formDataBytes(body), init: body };
179
+ }
180
+ if (isURLSearchParams(body)) {
181
+ const text = body.toString();
182
+ return {
183
+ bytes: utf8Bytes(text),
184
+ contentType: contentType ?? "application/x-www-form-urlencoded",
185
+ init: body,
186
+ text,
187
+ };
188
+ }
189
+ if (isRawBytes(body) || typeof body === "string") {
190
+ const init = asBodyInit(body);
191
+ const encoded = { bytes: bodyByteLength(body), init: init ?? String(body) };
192
+ if (contentType !== undefined)
193
+ encoded.contentType = contentType;
194
+ if (typeof body === "string")
195
+ encoded.text = body;
196
+ return encoded;
197
+ }
198
+ const text = JSON.stringify(body);
199
+ return {
200
+ bytes: utf8Bytes(text),
201
+ contentType: contentType ?? "application/json",
202
+ init: text,
203
+ text,
204
+ };
205
+ }
206
+ function asBodyInit(body) {
207
+ if (typeof body === "string")
208
+ return body;
209
+ if (isFormData(body) || isURLSearchParams(body) || isRawBytes(body))
210
+ return body;
211
+ if (typeof Blob !== "undefined" && body instanceof Blob)
212
+ return body;
213
+ if (typeof ReadableStream !== "undefined" && body instanceof ReadableStream)
214
+ return body;
215
+ return undefined;
216
+ }
217
+ function isFormData(body) {
218
+ return typeof FormData !== "undefined" && body instanceof FormData;
219
+ }
220
+ function isURLSearchParams(body) {
221
+ return typeof URLSearchParams !== "undefined" && body instanceof URLSearchParams;
222
+ }
223
+ function isRawBytes(body) {
224
+ if (typeof ArrayBuffer !== "undefined" && body instanceof ArrayBuffer)
225
+ return true;
226
+ if (ArrayBuffer.isView(body))
227
+ return true;
228
+ if (typeof Blob !== "undefined" && body instanceof Blob)
229
+ return true;
230
+ return false;
231
+ }
232
+ function bodyByteLength(body) {
233
+ if (typeof body === "string")
234
+ return utf8Bytes(body);
235
+ if (isFormData(body))
236
+ return formDataBytes(body);
237
+ if (isURLSearchParams(body))
238
+ return utf8Bytes(body.toString());
239
+ if (typeof Blob !== "undefined" && body instanceof Blob)
240
+ return body.size;
241
+ if (typeof ArrayBuffer !== "undefined" && body instanceof ArrayBuffer)
242
+ return body.byteLength;
243
+ if (ArrayBuffer.isView(body))
244
+ return body.byteLength;
245
+ return 0;
246
+ }
247
+ function formDataBytes(form) {
248
+ let total = 0;
249
+ for (const [name, value] of form.entries()) {
250
+ total += utf8Bytes(name) + 80;
251
+ if (typeof value === "string")
252
+ total += utf8Bytes(value);
253
+ else
254
+ total += value.size + utf8Bytes(value.name);
255
+ }
256
+ return total;
257
+ }
258
+ function utf8Bytes(text) {
259
+ return text === undefined || text === "" ? 0 : new TextEncoder().encode(text).byteLength;
260
+ }
261
+ function hasHeader(headers, name) {
262
+ const want = name.toLowerCase();
263
+ return Object.keys(headers).some((key) => key.toLowerCase() === want);
264
+ }
265
+ /** Start line + headers + body. Host and Content-Length are filled when they would be on the wire. */
266
+ function requestMessageBytes(method, url, headers, bodyBytes, body) {
267
+ const sent = { ...headers };
268
+ if (!hasHeader(sent, "host"))
269
+ sent.host = url.host;
270
+ if (bodyBytes > 0 && !hasHeader(sent, "content-length"))
271
+ sent["content-length"] = String(bodyBytes);
272
+ const start = `${method} ${url.pathname}${url.search} HTTP/1.1`;
273
+ if (body !== undefined)
274
+ return httpMessageBytes(start, sent, body);
275
+ let headerBytes = utf8Bytes(`${start}\r\n`);
276
+ for (const [key, value] of Object.entries(sent))
277
+ headerBytes += utf8Bytes(`${key}: ${value}\r\n`);
278
+ headerBytes += utf8Bytes(`\r\n`);
279
+ return headerBytes + bodyBytes;
280
+ }
281
+ function responseMessageBytes(status, statusText, headers, body) {
282
+ const sent = { ...headers };
283
+ if (body !== "" && !hasHeader(sent, "content-length"))
284
+ sent["content-length"] = String(utf8Bytes(body));
285
+ const start = statusText === "" ? `HTTP/1.1 ${status}` : `HTTP/1.1 ${status} ${statusText}`;
286
+ return httpMessageBytes(start, sent, body);
287
+ }
288
+ function httpMessageBytes(startLine, headers, body) {
289
+ let text = `${startLine}\r\n`;
290
+ for (const [key, value] of Object.entries(headers)) {
291
+ text += `${key}: ${value}\r\n`;
292
+ }
293
+ text += `\r\n`;
294
+ if (body !== undefined)
295
+ text += body;
296
+ return new TextEncoder().encode(text).byteLength;
297
+ }
298
+ const REQUEST_ID_HEADERS = ["x-request-id", "request-id", "x-correlation-id", "correlation-id"];
299
+ /** Response header first, then the request. Empty when neither side sent one of the known names. */
300
+ /** Plain snapshot of a request body for reports — FormData is not JSON. */
301
+ export function describeRequestBody(body) {
302
+ if (body === undefined)
303
+ return undefined;
304
+ if (isFormData(body)) {
305
+ const parts = {};
306
+ for (const [name, value] of body.entries()) {
307
+ if (typeof value === "string")
308
+ parts[name] = value;
309
+ else
310
+ parts[name] = { filename: value.name, mediaType: value.type, bytes: value.size };
311
+ }
312
+ return parts;
313
+ }
314
+ if (isURLSearchParams(body))
315
+ return body.toString();
316
+ if (isRawBytes(body))
317
+ return { bytes: bodyByteLength(body) };
318
+ return body;
319
+ }
320
+ export function requestIdOf(requestHeaders, responseHeaders) {
321
+ return headerOf(responseHeaders, REQUEST_ID_HEADERS) ?? headerOf(requestHeaders, REQUEST_ID_HEADERS) ?? "";
322
+ }
323
+ function headerOf(headers, names) {
324
+ for (const name of names) {
325
+ for (const [key, value] of Object.entries(headers)) {
326
+ if (key.toLowerCase() === name && value.trim() !== "")
327
+ return value.trim();
328
+ }
329
+ }
330
+ return undefined;
331
+ }
133
332
  /** Escapes the characters that stay special inside double quotes. */
134
333
  function shellEscapeDouble(text) {
135
334
  return text.replace(/(["\\`])/g, "\\$1");
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/runtime/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/runtime/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Tiny valid files so backends that sniff magic do not 400 on "not a PDF".
3
+ *
4
+ * oat does not OCR or interpret these; they only have to look like the declared type.
5
+ */
6
+ export interface DummyFile {
7
+ bytes: Uint8Array;
8
+ filename: string;
9
+ mediaType: string;
10
+ }
11
+ export declare function extensionOf(mediaType: string, filename?: string): string;
12
+ export declare function mediaTypeOfExtension(ext: string): string | undefined;
13
+ export declare function dummyFile(options: {
14
+ field: string;
15
+ variant: string;
16
+ index: number;
17
+ seed: number;
18
+ contentMediaType?: string;
19
+ filename?: string;
20
+ }): DummyFile;
21
+ export declare function sniffMediaType(bytes: Uint8Array, filename?: string): string | undefined;
22
+ export declare function mediaTypesCompatible(declared: string | undefined, actual: string | undefined): boolean;
23
+ //# sourceMappingURL=dummy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dummy.d.ts","sourceRoot":"","sources":["../../src/runtime/dummy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,WAAW,SAAS;IACzB,KAAK,EAAE,UAAU,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;CACjB;AAgHD,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAOxE;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEpE;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;CACjB,GAAG,SAAS,CAOZ;AA8BD,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAuCvF;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAYtG"}
@@ -0,0 +1,214 @@
1
+ /**
2
+ * Tiny valid files so backends that sniff magic do not 400 on "not a PDF".
3
+ *
4
+ * oat does not OCR or interpret these; they only have to look like the declared type.
5
+ */
6
+ import { mulberry32 } from "./fixture.js";
7
+ const PDF = textBytes(`%PDF-1.1
8
+ 1 0 obj<</Type/Catalog/Pages 2 0 R>>endobj
9
+ 2 0 obj<</Type/Pages/Kids[3 0 R]/Count 1>>endobj
10
+ 3 0 obj<</Type/Page/MediaBox[0 0 3 3]/Parent 2 0 R>>endobj
11
+ trailer<</Root 1 0 R>>
12
+ %%EOF
13
+ `);
14
+ /* 1×1 RGB PNG. */
15
+ const PNG = hex("89504e470d0a1a0a0000000d4948445200000001000000010802000000907753de0000000c4944415408d763f8cfc000000301010018dd8db00000000049454e44ae426082");
16
+ /* 1×1 JPEG (JFIF). */
17
+ const JPEG = hex("ffd8ffe000104a46494600010100000100010000ffdb00430001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101ffc0000b080001000101011100ffc40014100100000000000000000000000000000000ffda00080001000100003f00fb00ffd9");
18
+ /* 1×1 GIF89a. */
19
+ const GIF = hex("47494638396101000100800000ffffff0000002c00000000010001000002024401003b");
20
+ /* 1×1 lossless WebP. */
21
+ const WEBP = hex("52494646240000005745425056503820180000003001009d012a01000002000000340025a8000002");
22
+ /* 1×1 little-endian TIFF, white pixel. */
23
+ const TIFF = hex("49492a00080000000e0000fe0004000100000000000000000100030001000000010000000101030001000000010000000201030003000000120000000301030001000000010000000601030001000000020000001101040001000000080000001501030001000000010000001601040001000000010000001701040001000000030000001a01050001000000c40000001b01050001000000cc0000001c010300010000000100000028010300010000000200000000000000080008000800000000000100000000000100");
24
+ const EMPTY_ZIP = hex("504b0506000000000000000000000000000000000000");
25
+ const TEXT_HTML = textBytes("<!doctype html><title>oat</title>");
26
+ const TEXT_CSV = textBytes("a,b\n1,2\n");
27
+ const TEXT_JSON = textBytes("{}");
28
+ const TEXT_XML = textBytes("<oat/>");
29
+ const KINDS = [
30
+ { bytes: PDF, ext: "pdf", mediaType: "application/pdf" },
31
+ { bytes: PNG, ext: "png", mediaType: "image/png" },
32
+ { bytes: JPEG, ext: "jpg", mediaType: "image/jpeg" },
33
+ { bytes: GIF, ext: "gif", mediaType: "image/gif" },
34
+ { bytes: WEBP, ext: "webp", mediaType: "image/webp" },
35
+ { bytes: TIFF, ext: "tif", mediaType: "image/tiff" },
36
+ { bytes: TEXT_HTML, ext: "html", mediaType: "text/html" },
37
+ { bytes: TEXT_CSV, ext: "csv", mediaType: "text/csv" },
38
+ { bytes: TEXT_JSON, ext: "json", mediaType: "application/json" },
39
+ { bytes: TEXT_XML, ext: "xml", mediaType: "application/xml" },
40
+ { bytes: TEXT_XML, ext: "xml", mediaType: "text/xml" },
41
+ { bytes: EMPTY_ZIP, ext: "zip", mediaType: "application/zip" },
42
+ {
43
+ bytes: EMPTY_ZIP,
44
+ ext: "xlsx",
45
+ mediaType: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
46
+ },
47
+ {
48
+ bytes: EMPTY_ZIP,
49
+ ext: "docx",
50
+ mediaType: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
51
+ },
52
+ ];
53
+ const EXT_OF = {
54
+ "application/json": "json",
55
+ "application/octet-stream": "bin",
56
+ "application/pdf": "pdf",
57
+ "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": "xlsx",
58
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.document": "docx",
59
+ "application/xml": "xml",
60
+ "application/zip": "zip",
61
+ "image/gif": "gif",
62
+ "image/jpeg": "jpg",
63
+ "image/jpg": "jpg",
64
+ "image/png": "png",
65
+ "image/tiff": "tif",
66
+ "image/webp": "webp",
67
+ "text/csv": "csv",
68
+ "text/html": "html",
69
+ "text/plain": "txt",
70
+ "text/xml": "xml",
71
+ };
72
+ const MEDIA_OF_EXT = {
73
+ bin: "application/octet-stream",
74
+ csv: "text/csv",
75
+ doc: "application/msword",
76
+ docx: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
77
+ gif: "image/gif",
78
+ htm: "text/html",
79
+ html: "text/html",
80
+ jpeg: "image/jpeg",
81
+ jpg: "image/jpeg",
82
+ json: "application/json",
83
+ pdf: "application/pdf",
84
+ png: "image/png",
85
+ tif: "image/tiff",
86
+ tiff: "image/tiff",
87
+ txt: "text/plain",
88
+ webp: "image/webp",
89
+ xls: "application/vnd.ms-excel",
90
+ xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
91
+ xml: "application/xml",
92
+ zip: "application/zip",
93
+ };
94
+ export function extensionOf(mediaType, filename) {
95
+ if (filename !== undefined) {
96
+ const dot = filename.lastIndexOf(".");
97
+ if (dot >= 0 && dot < filename.length - 1)
98
+ return filename.slice(dot + 1).toLowerCase();
99
+ }
100
+ const bare = mediaType.split(";")[0]?.trim().toLowerCase() ?? "";
101
+ return EXT_OF[bare] ?? "bin";
102
+ }
103
+ export function mediaTypeOfExtension(ext) {
104
+ return MEDIA_OF_EXT[ext.toLowerCase().replace(/^\./, "")];
105
+ }
106
+ export function dummyFile(options) {
107
+ const mediaType = (options.contentMediaType ?? "application/octet-stream").split(";")[0]?.trim() ?? "";
108
+ const kind = kindOf(mediaType, options.filename);
109
+ const ext = kind?.ext ?? extensionOf(mediaType, options.filename);
110
+ const filename = options.filename ?? `${options.field}-${options.variant}-${options.index}.${ext}`;
111
+ const bytes = bytesOf(kind, mediaType, options.seed, options.index);
112
+ return { bytes, filename, mediaType: kind?.mediaType ?? (mediaType === "" ? "application/octet-stream" : mediaType) };
113
+ }
114
+ function kindOf(mediaType, filename) {
115
+ const bare = mediaType.toLowerCase();
116
+ const byMedia = KINDS.find((kind) => kind.mediaType === bare);
117
+ if (byMedia !== undefined)
118
+ return byMedia;
119
+ if (bare === "image/jpg")
120
+ return KINDS.find((kind) => kind.mediaType === "image/jpeg");
121
+ const ext = extensionOf(mediaType, filename);
122
+ const mapped = mediaTypeOfExtension(ext);
123
+ if (mapped !== undefined)
124
+ return KINDS.find((kind) => kind.mediaType === mapped);
125
+ return undefined;
126
+ }
127
+ function bytesOf(kind, mediaType, seed, index) {
128
+ if (kind !== undefined) {
129
+ return typeof kind.bytes === "function" ? kind.bytes(seed, index) : kind.bytes;
130
+ }
131
+ if (mediaType === "text/plain" || mediaType.startsWith("text/")) {
132
+ return textBytes(`oat dummy ${seed} ${index}\n`);
133
+ }
134
+ return octetDummy(seed, index);
135
+ }
136
+ function octetDummy(seed, index) {
137
+ const rand = mulberry32((seed ^ (index * 7919)) >>> 0);
138
+ const out = new Uint8Array(16);
139
+ for (let i = 0; i < out.length; i++)
140
+ out[i] = Math.floor(rand() * 256);
141
+ return out;
142
+ }
143
+ export function sniffMediaType(bytes, filename) {
144
+ if (bytes.length >= 5 && bytes[0] === 0x25 && bytes[1] === 0x50 && bytes[2] === 0x44 && bytes[3] === 0x46) {
145
+ return "application/pdf";
146
+ }
147
+ if (bytes.length >= 8 && bytes[0] === 0x89 && bytes[1] === 0x50 && bytes[2] === 0x4e && bytes[3] === 0x47) {
148
+ return "image/png";
149
+ }
150
+ if (bytes.length >= 3 && bytes[0] === 0xff && bytes[1] === 0xd8 && bytes[2] === 0xff)
151
+ return "image/jpeg";
152
+ if (bytes.length >= 6 && bytes[0] === 0x47 && bytes[1] === 0x49 && bytes[2] === 0x46 && bytes[3] === 0x38) {
153
+ return "image/gif";
154
+ }
155
+ if (bytes.length >= 12 &&
156
+ bytes[0] === 0x52 &&
157
+ bytes[1] === 0x49 &&
158
+ bytes[2] === 0x46 &&
159
+ bytes[3] === 0x46 &&
160
+ bytes[8] === 0x57 &&
161
+ bytes[9] === 0x45 &&
162
+ bytes[10] === 0x42 &&
163
+ bytes[11] === 0x50) {
164
+ return "image/webp";
165
+ }
166
+ if (bytes.length >= 4 &&
167
+ ((bytes[0] === 0x49 && bytes[1] === 0x49 && bytes[2] === 0x2a && bytes[3] === 0x00) ||
168
+ (bytes[0] === 0x4d && bytes[1] === 0x4d && bytes[2] === 0x00 && bytes[3] === 0x2a))) {
169
+ return "image/tiff";
170
+ }
171
+ if (bytes.length >= 4 && bytes[0] === 0x50 && bytes[1] === 0x4b && (bytes[2] === 0x03 || bytes[2] === 0x05)) {
172
+ const ext = filename === undefined ? "" : extensionOf("", filename);
173
+ if (ext === "xlsx")
174
+ return "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
175
+ if (ext === "docx")
176
+ return "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
177
+ return "application/zip";
178
+ }
179
+ if (filename !== undefined)
180
+ return mediaTypeOfExtension(extensionOf("", filename));
181
+ return undefined;
182
+ }
183
+ export function mediaTypesCompatible(declared, actual) {
184
+ if (declared === undefined || declared === "" || declared === "application/octet-stream")
185
+ return true;
186
+ if (actual === undefined)
187
+ return false;
188
+ const want = declared.split(";")[0]?.trim().toLowerCase() ?? "";
189
+ const have = actual.split(";")[0]?.trim().toLowerCase() ?? "";
190
+ if (want === have)
191
+ return true;
192
+ if (want === "image/jpg" && have === "image/jpeg")
193
+ return true;
194
+ if (want === "image/jpeg" && have === "image/jpg")
195
+ return true;
196
+ if (want.endsWith("/*"))
197
+ return have.startsWith(want.slice(0, -1));
198
+ if (want === "application/xml" && have === "text/xml")
199
+ return true;
200
+ if (want === "text/xml" && have === "application/xml")
201
+ return true;
202
+ return false;
203
+ }
204
+ function hex(text) {
205
+ const clean = text.replace(/\s+/g, "");
206
+ const out = new Uint8Array(clean.length / 2);
207
+ for (let i = 0; i < out.length; i++)
208
+ out[i] = Number.parseInt(clean.slice(i * 2, i * 2 + 2), 16);
209
+ return out;
210
+ }
211
+ function textBytes(text) {
212
+ return new TextEncoder().encode(text);
213
+ }
214
+ //# sourceMappingURL=dummy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dummy.js","sourceRoot":"","sources":["../../src/runtime/dummy.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"fixture.d.ts","sourceRoot":"","sources":["../../src/runtime/fixture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,MAAM,OAAO,GAChB,UAAU,GACV,eAAe,GACf,cAAc,GACd,YAAY,GACZ,SAAS,GACT,eAAe,GACf,UAAU,CAAA;AAEb,eAAO,MAAM,MAAM,EAAE,SAAS,OAAO,EAQpC,CAAA;AAED,8DAA8D;AAC9D,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,MAAM,CAQrD;AAED,KAAK,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAgBrC,MAAM,WAAW,YAAY;IAC5B,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC7B;AAED,0FAA0F;AAC1F,qBAAa,eAAgB,SAAQ,KAAK;IAExC,QAAQ,CAAC,WAAW,EAAE,MAAM;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM;gBADf,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM;CAKzB;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,SAAM,GAAG,eAAe,CAKhG;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAGvD;AAED,wBAAgB,WAAW,CAC1B,UAAU,EAAE,MAAM,GAAG,OAAO,EAC5B,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,SAAS,OAAO,EAAW,EACrC,WAAW,SAAY,GACrB,YAAY,EAAE,CAmBhB;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAC3B,UAAU,EAAE,MAAM,GAAG,OAAO,EAC5B,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,MAAM,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,WAAW,SAAY,GACrB;IAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,eAAe,EAAE,MAAM,EAAE,CAAA;CAAE,CAc9D;AAwcD;;;GAGG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAgBlD"}
1
+ {"version":3,"file":"fixture.d.ts","sourceRoot":"","sources":["../../src/runtime/fixture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,MAAM,MAAM,OAAO,GAChB,UAAU,GACV,eAAe,GACf,cAAc,GACd,YAAY,GACZ,SAAS,GACT,eAAe,GACf,UAAU,CAAA;AAEb,eAAO,MAAM,MAAM,EAAE,SAAS,OAAO,EAQpC,CAAA;AAED,8DAA8D;AAC9D,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,MAAM,CAQrD;AAED,KAAK,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAgBrC,MAAM,WAAW,YAAY;IAC5B,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC7B;AAED,0FAA0F;AAC1F,qBAAa,eAAgB,SAAQ,KAAK;IAExC,QAAQ,CAAC,WAAW,EAAE,MAAM;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM;gBADf,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM;CAKzB;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,SAAM,GAAG,eAAe,CAKhG;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAGvD;AAED,wBAAgB,WAAW,CAC1B,UAAU,EAAE,MAAM,GAAG,OAAO,EAC5B,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,SAAS,OAAO,EAAW,EACrC,WAAW,SAAY,GACrB,YAAY,EAAE,CAmBhB;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAC3B,UAAU,EAAE,MAAM,GAAG,OAAO,EAC5B,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,MAAM,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,WAAW,SAAY,GACrB;IAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,eAAe,EAAE,MAAM,EAAE,CAAA;CAAE,CAc9D;AAwcD;;;GAGG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAgBlD"}
@@ -10,6 +10,7 @@
10
10
  * `additionalProperties: {}`) mean "any value", not "walk this object again". Generation therefore
11
11
  * keys a WeakSet on every node and treats those open shapes as a scalar or `{}`.
12
12
  */
13
+ import { UNICODE_COHORT_STRING, codePointCount, sliceCodePoints } from "./payloads.js";
13
14
  export const COHORT = [
14
15
  "baseline",
15
16
  "lexical-first",
@@ -36,7 +37,7 @@ const STRINGS = {
36
37
  "lexical-last": "zzz last alphabetically",
37
38
  metacharacter: "100% _off_ *everything*",
38
39
  "null-heavy": "null heavy record",
39
- unicode: "日本語 café ñandú",
40
+ unicode: UNICODE_COHORT_STRING,
40
41
  };
41
42
  const EMAIL_RE = /^[^@]+@[^@]+\.[^@]+$/;
42
43
  const MAX_DEPTH = 8;
@@ -237,12 +238,12 @@ function generateString(name, schema, variant, index) {
237
238
  }
238
239
  if (text === undefined)
239
240
  return undefined;
240
- if (text.length > max) {
241
+ if (codePointCount(text) > max) {
241
242
  if (format === "email" || format === "uri" || format === "url" || format === "uuid" || pattern !== undefined) {
242
243
  const trimmed = fitMax(text, max, format, pattern, variant, index);
243
244
  return trimmed;
244
245
  }
245
- return text.slice(0, max);
246
+ return sliceCodePoints(text, max);
246
247
  }
247
248
  if (pattern !== undefined && !safeTest(pattern, text)) {
248
249
  return stringMatching(pattern, max, variant, index);