@nifrajs/schema 4.0.2 → 5.0.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.
package/dist/adapter.d.ts CHANGED
@@ -24,7 +24,9 @@ export type NifraSchema<T extends TSchema = TSchema> = StandardSchemaV1<Static<T
24
24
  * generation**, so that first compile throws there. We catch it once per schema and
25
25
  * fall back to TypeBox's eval-free `Value` checker - same semantics (and same global
26
26
  * `FormatRegistry`, so `t.string({ format })` behaves identically), no `new Function`.
27
- * The branch is decided once and memoized, so the hot path is a single check either way.
27
+ * A browser page starts on that checker, so a strict CSP or Trusted Types sees no
28
+ * compile attempt. The branch is decided once and memoized, so the hot path is a single
29
+ * check either way.
28
30
  *
29
31
  * Exposed (not just used internally by `t`) so a TypeBox schema authored directly can
30
32
  * be adapted without leaving the Standard Schema world.
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,gBAAgB,EAEjB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAQ,KAAK,MAAM,EAAE,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAKnE;;;;;;;GAOG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG;IAC9F,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAA;CACvB,CAAA;AAmKD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,OAAO,EAC3C,MAAM,EAAE,CAAC,EACT,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GACtC,WAAW,CAAC,CAAC,CAAC,CA+ChB"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,gBAAgB,EAEjB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAQ,KAAK,MAAM,EAAE,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAKnE;;;;;;;GAOG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG;IAC9F,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAA;CACvB,CAAA;AAmKD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,OAAO,EAC3C,MAAM,EAAE,CAAC,EACT,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GACtC,WAAW,CAAC,CAAC,CAAC,CAiDhB"}
package/dist/adapter.js CHANGED
@@ -150,7 +150,9 @@ function convertFlat(plan, value) {
150
150
  * generation**, so that first compile throws there. We catch it once per schema and
151
151
  * fall back to TypeBox's eval-free `Value` checker - same semantics (and same global
152
152
  * `FormatRegistry`, so `t.string({ format })` behaves identically), no `new Function`.
153
- * The branch is decided once and memoized, so the hot path is a single check either way.
153
+ * A browser page starts on that checker, so a strict CSP or Trusted Types sees no
154
+ * compile attempt. The branch is decided once and memoized, so the hot path is a single
155
+ * check either way.
154
156
  *
155
157
  * Exposed (not just used internally by `t`) so a TypeBox schema authored directly can
156
158
  * be adapted without leaving the Standard Schema world.
@@ -168,8 +170,10 @@ export function fromTypeBox(schema, options) {
168
170
  const coercionPlan = coerce ? flatCoercionPlan(schema) : null;
169
171
  let compiled;
170
172
  // A backslash-carrying key/literal would MISCOMPILE (not throw) under TypeCompiler - see
171
- // hasCompileHazard. Start such schemas on the eval-free path; everything else compiles as before.
172
- let evalFree = hasCompileHazard(schema);
173
+ // hasCompileHazard. Start such schemas on the eval-free path. So does a browser page: under a CSP
174
+ // without 'unsafe-eval', or Trusted Types, the compile attempt is a violation the browser logs and
175
+ // reports, once per schema, before the fallback below catches it.
176
+ let evalFree = hasCompileHazard(schema) || "document" in globalThis;
173
177
  return {
174
178
  "~standard": {
175
179
  version: 1,
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
package/dist/form.d.ts CHANGED
@@ -113,6 +113,8 @@ export declare const t: {
113
113
  [x: string]: NifraSchema;
114
114
  }>(props: P, options?: import("@sinclair/typebox").ObjectOptions) => NifraSchema<TObject<{ [K in keyof P]: P[K]["jsonSchema"]; }>>;
115
115
  deferred: <T extends TSchema>(inner: NifraSchema<T>) => NifraSchema<TUnsafe<import("./t.js").DeferredValue<Static<T>>>>;
116
+ json: () => NifraSchema<TUnsafe<import("./t.js").JsonValue>>;
117
+ date: () => NifraSchema<TUnsafe<Date>>;
116
118
  declassified: <T extends TSchema>(reason: string, schema: NifraSchema<T>) => NifraSchema<T>;
117
119
  };
118
120
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../src/form.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,EAAE,KAAK,eAAe,EAAiB,MAAM,yBAAyB,CAAA;AAO7E,OAAO,EACL,KAAK,YAAY,EAGjB,KAAK,MAAM,EACX,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,OAAO,EAEb,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,cAAc,CAAA;AAM5D,MAAM,WAAW,WAAW;IAC1B,wFAAwF;IACxF,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CACpC;AAED;;;GAGG;AACH,MAAM,WAAW,WAAY,SAAQ,eAAe;IAClD,0GAA0G;IAC1G,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAA;IACvC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAC9B;AAmFD,iBAAS,IAAI,CAAC,OAAO,GAAE,WAAgB,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAenE;AAgGD,KAAK,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;AACxC,KAAK,SAAS,CAAC,CAAC,SAAS,KAAK,IAAI,OAAO,CAAC;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;CAAE,CAAC,CAAA;AAqBjF,iBAAS,IAAI,CAAC,CAAC,SAAS,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CA8EzF;AAED,gGAAgG;AAChG,eAAO,MAAM,CAAC;IAEZ;;;;;;;;OAQG;;IAEH;;;;;;;;OAQG;;;;;;;;;;;;;;;;oHArP2B,CAAC,yBAAyB,IAAI;;;;;;;gBAmC7C,CAAC;;;;;;;;;;;;;CAoNjB,CAAA"}
1
+ {"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../src/form.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,EAAE,KAAK,eAAe,EAAiB,MAAM,yBAAyB,CAAA;AAO7E,OAAO,EACL,KAAK,YAAY,EAGjB,KAAK,MAAM,EACX,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,OAAO,EAEb,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,cAAc,CAAA;AAM5D,MAAM,WAAW,WAAW;IAC1B,wFAAwF;IACxF,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CACpC;AAED;;;GAGG;AACH,MAAM,WAAW,WAAY,SAAQ,eAAe;IAClD,0GAA0G;IAC1G,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAA;IACvC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAC9B;AAmFD,iBAAS,IAAI,CAAC,OAAO,GAAE,WAAgB,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAenE;AAgGD,KAAK,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;AACxC,KAAK,SAAS,CAAC,CAAC,SAAS,KAAK,IAAI,OAAO,CAAC;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;CAAE,CAAC,CAAA;AAqBjF,iBAAS,IAAI,CAAC,CAAC,SAAS,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CA8EzF;AAED,gGAAgG;AAChG,eAAO,MAAM,CAAC;IAEZ;;;;;;;;OAQG;;IAEH;;;;;;;;OAQG;;;;;;;;;;;;;;;;oHA9NwB,CAAE,yBAAwB,IAAK;;;;;;;gBA4CjB,CAAC;;;;;;;;;;;;;;;CAoL3C,CAAA"}
package/dist/index.d.ts CHANGED
@@ -8,8 +8,8 @@
8
8
  */
9
9
  export { fromTypeBox, type NifraSchema } from "./adapter.js";
10
10
  export { registerFormat } from "./formats.js";
11
- export { type OpenAPIDocument, type OpenAPIInfo, toOpenAPI, toOpenAPIFromEvidence, } from "./openapi.js";
11
+ export { type OpenAPIDocument, type OpenAPIInfo, type OpenAPIVersion, toOpenAPI, toOpenAPIFromEvidence, } from "./openapi.js";
12
12
  export { diffOpenApiInventory, type ImportedApiInventory, type ImportedRoute, type ImportedRouteQuery, type ImportOpenAPIOptions, importOpenAPI, OpenAPIImportError, type OpenApiInventoryDrift, } from "./openapi-import.js";
13
13
  export { decodeCursor, encodeCursor, type Page, paginate } from "./pagination.js";
14
- export { type DeferredValue, t } from "./t.js";
14
+ export { type DeferredValue, type JsonValue, t } from "./t.js";
15
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAA;AAI5D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,SAAS,EACT,qBAAqB,GACtB,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,oBAAoB,EACpB,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,aAAa,EACb,kBAAkB,EAClB,KAAK,qBAAqB,GAC3B,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,IAAI,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AACjF,OAAO,EAAE,KAAK,aAAa,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAA;AAI5D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,SAAS,EACT,qBAAqB,GACtB,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,oBAAoB,EACpB,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,aAAa,EACb,kBAAkB,EAClB,KAAK,qBAAqB,GAC3B,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,IAAI,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AACjF,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,WAAW,EAAoB,MAAM,cAAc,CAAA;AAC5D,gGAAgG;AAChG,8FAA8F;AAC9F,2EAA2E;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAGL,SAAS,EACT,qBAAqB,GACtB,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,oBAAoB,EAKpB,aAAa,EACb,kBAAkB,GAEnB,MAAM,qBAAqB,CAAA;AAC5B,+EAA+E;AAC/E,OAAO,EAAE,YAAY,EAAE,YAAY,EAAa,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AACjF,OAAO,EAAsB,CAAC,EAAE,MAAM,QAAQ,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,WAAW,EAAoB,MAAM,cAAc,CAAA;AAC5D,gGAAgG;AAChG,8FAA8F;AAC9F,2EAA2E;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAIL,SAAS,EACT,qBAAqB,GACtB,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,oBAAoB,EAKpB,aAAa,EACb,kBAAkB,GAEnB,MAAM,qBAAqB,CAAA;AAC5B,+EAA+E;AAC/E,OAAO,EAAE,YAAY,EAAE,YAAY,EAAa,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AACjF,OAAO,EAAsC,CAAC,EAAE,MAAM,QAAQ,CAAA"}
package/dist/openapi.d.ts CHANGED
@@ -12,6 +12,11 @@ import type { Server } from "@nifrajs/core/server";
12
12
  * detail. A **contract** is richest - its operations carry `response`, `tags`, `security`, additional
13
13
  * `responses`, etc.; an **app** emits request shapes + a generic `200` (an inline handler has no
14
14
  * response *schema* to serialize), enrichable via `options.operations`.
15
+ *
16
+ * A typed SSE route (`app.sse()`) answers `text/event-stream`, and its event payload becomes a named
17
+ * component (`<OperationId>Event`, or one named after the path) so a client generator emits a type
18
+ * for it. With `openapiVersion: "3.2.0"` the media type carries the standard `itemSchema` describing
19
+ * each event; a 3.1 document has no field for that, so it carries the same schema as `x-itemSchema`.
15
20
  */
16
21
  export interface OpenAPIInfo {
17
22
  readonly title: string;
@@ -29,6 +34,8 @@ export interface OpenAPITag {
29
34
  /** A document-wide / per-operation security requirement: scheme name → required scopes. */
30
35
  export type SecurityRequirement = Readonly<Record<string, readonly string[]>>;
31
36
  export interface ToOpenAPIOptions {
37
+ /** The OpenAPI version to declare. `"3.2.0"` describes SSE events with the standard `itemSchema`. */
38
+ readonly openapiVersion?: OpenAPIVersion;
32
39
  readonly title?: string;
33
40
  readonly version?: string;
34
41
  readonly description?: string;
@@ -68,8 +75,12 @@ interface OpenAPIParameter {
68
75
  readonly required: boolean;
69
76
  readonly schema: JsonSchema;
70
77
  }
78
+ export type OpenAPIVersion = "3.1.0" | "3.2.0";
71
79
  interface OpenAPIMediaType {
72
- readonly schema: JsonSchema;
80
+ readonly schema?: JsonSchema;
81
+ /** OpenAPI 3.2: the schema of each item of a sequential media type such as an event stream. */
82
+ readonly itemSchema?: JsonSchema;
83
+ readonly "x-itemSchema"?: JsonSchema;
73
84
  }
74
85
  interface OpenAPIRequestBody {
75
86
  readonly required: boolean;
@@ -95,7 +106,7 @@ interface OpenAPIComponents {
95
106
  securitySchemes?: Readonly<Record<string, Record<string, unknown>>>;
96
107
  }
97
108
  export interface OpenAPIDocument {
98
- readonly openapi: "3.1.0";
109
+ readonly openapi: OpenAPIVersion;
99
110
  readonly info: OpenAPIInfo;
100
111
  readonly paths: Record<string, Record<string, OpenAPIOperation>>;
101
112
  readonly servers?: readonly OpenAPIServer[];
@@ -1 +1 @@
1
- {"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../src/openapi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../src/openapi.ts"],"names":[],"mappings":"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"}
package/dist/openapi.js CHANGED
@@ -50,6 +50,26 @@ class SchemaStore {
50
50
  }
51
51
  return { $ref: `#/components/schemas/${componentName}` };
52
52
  }
53
+ /** Keep `schema` as a component named after `base` (deduped), unless it is one already. */
54
+ named(base, schema) {
55
+ const collected = this.collect(schema) ?? schema;
56
+ if (typeof collected === "object" && typeof collected.$ref === "string")
57
+ return collected;
58
+ let name = base;
59
+ let suffix = 2;
60
+ while (Object.hasOwn(this.schemas, name) || this.componentIds.has(name)) {
61
+ name = `${base}_${suffix}`;
62
+ suffix += 1;
63
+ }
64
+ this.componentIds.set(name, name);
65
+ Object.defineProperty(this.schemas, name, {
66
+ value: collected,
67
+ enumerable: true,
68
+ configurable: true,
69
+ writable: true,
70
+ });
71
+ return { $ref: `#/components/schemas/${name}` };
72
+ }
53
73
  }
54
74
  /**
55
75
  * `/users/:id/*rest` as `/users/{id}/{rest}`, with its params in order. Split by the router's own
@@ -164,9 +184,47 @@ function reflectedErrorsToResponses(errors) {
164
184
  }
165
185
  return Object.keys(out).length > 0 ? out : undefined;
166
186
  }
167
- function buildResponses(input, store) {
187
+ function sseComponentName(input) {
188
+ if (input.operationId !== undefined && /^[A-Za-z0-9._-]+$/.test(input.operationId))
189
+ return `${input.operationId}Event`;
190
+ const words = input.path
191
+ .split(/[^A-Za-z0-9]+/)
192
+ .filter((word) => word.length > 0)
193
+ .map((word) => `${word[0]?.toUpperCase()}${word.slice(1)}`);
194
+ return `${words.join("") || "Root"}Event`;
195
+ }
196
+ /** OAS 3.2 4.14.4's event shape, with `data` carrying JSON that matches the route's payload schema. */
197
+ function sseItemSchema(payload) {
198
+ return {
199
+ type: "object",
200
+ required: ["data"],
201
+ properties: {
202
+ data: payload === undefined
203
+ ? { type: "string" }
204
+ : { type: "string", contentMediaType: "application/json", contentSchema: payload },
205
+ event: { type: "string" },
206
+ id: { type: "string" },
207
+ retry: { type: "integer", minimum: 0 },
208
+ },
209
+ };
210
+ }
211
+ function buildResponses(input, store, version) {
168
212
  const responses = {};
169
- if (input.response !== undefined) {
213
+ if (input.sse !== undefined) {
214
+ const payload = input.sse.jsonSchema === undefined
215
+ ? undefined
216
+ : store.named(sseComponentName(input), input.sse.jsonSchema);
217
+ const item = sseItemSchema(payload);
218
+ responses["200"] = {
219
+ description: "Server-Sent Events",
220
+ content: {
221
+ "text/event-stream": version === "3.2.0"
222
+ ? { itemSchema: item }
223
+ : { schema: { type: "string" }, "x-itemSchema": item },
224
+ },
225
+ };
226
+ }
227
+ else if (input.response !== undefined) {
170
228
  const schema = store.collect(input.response.jsonSchema);
171
229
  responses["200"] =
172
230
  schema !== undefined
@@ -229,8 +287,8 @@ function hasFileField(schema) {
229
287
  property !== null &&
230
288
  isBinary(property.items)));
231
289
  }
232
- function buildOperation(input, store) {
233
- const operation = { responses: buildResponses(input, store) };
290
+ function buildOperation(input, store, version) {
291
+ const operation = { responses: buildResponses(input, store, version) };
234
292
  if (input.operationId !== undefined)
235
293
  operation.operationId = input.operationId;
236
294
  if (input.summary !== undefined)
@@ -275,7 +333,7 @@ const PATH_ITEM_METHODS = new Set([
275
333
  "head",
276
334
  "patch",
277
335
  ]);
278
- function addOperation(paths, method, input, store, operations) {
336
+ function addOperation(paths, method, input, store, operations, version) {
279
337
  // A path item has a field for each standard method and no place for any other, so a route
280
338
  // registered under a custom method is left out of the document.
281
339
  if (!PATH_ITEM_METHODS.has(method.toLowerCase()))
@@ -283,7 +341,7 @@ function addOperation(paths, method, input, store, operations) {
283
341
  const templated = templatedPath(input.path).template;
284
342
  const pathItem = paths[templated] ?? {};
285
343
  paths[templated] = pathItem;
286
- let operation = buildOperation(input, store);
344
+ let operation = buildOperation(input, store, version);
287
345
  // Shallow-merge an override keyed by operationId or "METHOD /path".
288
346
  const override = operations?.[input.operationId ?? ""] ?? operations?.[`${method.toUpperCase()} ${input.path}`];
289
347
  if (override !== undefined)
@@ -299,6 +357,7 @@ function isApp(input) {
299
357
  export function toOpenAPI(input, options = {}) {
300
358
  const paths = {};
301
359
  const store = new SchemaStore();
360
+ const version = options.openapiVersion ?? "3.1.0";
302
361
  if (isApp(input)) {
303
362
  const routes = options.evidence === undefined
304
363
  ? reflectRoutes(input)
@@ -313,11 +372,12 @@ export function toOpenAPI(input, options = {}) {
313
372
  params: route.schema?.params,
314
373
  // A route may now declare a `response` contract - emit it as the 200 body schema.
315
374
  response: route.schema?.response,
375
+ sse: route.schema?.sse,
316
376
  // …and an `errors` contract - emit each as a non-2xx response.
317
377
  responses: reflectedErrorsToResponses(route.schema?.errors),
318
378
  inferredResponses: options.inferredResponses?.[`${route.method.toUpperCase()} ${route.path}`],
319
379
  operationId: undefined,
320
- }, store, options.operations);
380
+ }, store, options.operations, version);
321
381
  }
322
382
  }
323
383
  else {
@@ -358,7 +418,7 @@ export function toOpenAPI(input, options = {}) {
358
418
  responses,
359
419
  inferredResponses: options.inferredResponses?.[`${op.method.toUpperCase()} ${path}`] ??
360
420
  options.inferredResponses?.[`${op.method.toUpperCase()} ${op.path}`],
361
- }, store, options.operations);
421
+ }, store, options.operations, version);
362
422
  }
363
423
  }
364
424
  }
@@ -368,7 +428,7 @@ export function toOpenAPI(input, options = {}) {
368
428
  if (options.securitySchemes !== undefined)
369
429
  components.securitySchemes = options.securitySchemes;
370
430
  return {
371
- openapi: "3.1.0",
431
+ openapi: version,
372
432
  info: {
373
433
  title: options.title ?? "API",
374
434
  version: options.version ?? "1.0.0",
@@ -1 +1 @@
1
- {"version":3,"file":"openapi.js","sourceRoot":"","sources":["../src/openapi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openapi.js","sourceRoot":"","sources":["../src/openapi.ts"],"names":[],"mappings":"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"}
package/dist/t.d.ts CHANGED
@@ -7,6 +7,10 @@ export interface DeferredValue<T> {
7
7
  readonly id: number;
8
8
  readonly promise: Promise<T>;
9
9
  }
10
+ /** Any value that survives `JSON.stringify` and `JSON.parse` unchanged. */
11
+ export type JsonValue = string | number | boolean | null | JsonValue[] | {
12
+ [key: string]: JsonValue;
13
+ };
10
14
  /**
11
15
  * The built-in schema builder. Each constructor returns a `NifraSchema` - a
12
16
  * Standard Schema whose validated output type flows into `c.body`/`c.query`, and
@@ -75,6 +79,20 @@ export declare const t: {
75
79
  * streams, so a deferred value is held to the same output contract as the rest of the data.
76
80
  */
77
81
  readonly deferred: <T extends TSchema>(inner: NifraSchema<T>) => NifraSchema<TUnsafe<DeferredValue<Static<T>>>>;
82
+ /**
83
+ * Any JSON value: strings, finite numbers, booleans, `null`, and arrays and plain objects of them, at
84
+ * any depth. A function, a class instance, `NaN` or a cycle fails. The output guard cannot see inside
85
+ * it, so `nifra check` and the sensitive-field rule do not either: prefer a declared shape for
86
+ * anything that might hold a credential.
87
+ */
88
+ readonly json: () => NifraSchema<TUnsafe<JsonValue>>;
89
+ /**
90
+ * A `Date` for page data: `loaderOutput`, `actionOutput` and a server function's `output`. The
91
+ * loader may return a `Date` or an ISO 8601 string; the page receives a `Date`, on the server render
92
+ * and in the browser alike. A request body or a `backend/app.ts` response is plain JSON, which has
93
+ * no dates: use `t.string({ format: "date-time" })` there.
94
+ */
95
+ readonly date: () => NifraSchema<TUnsafe<Date>>;
78
96
  /**
79
97
  * Allow a field with a sensitive name (`token`, `password`, `apiKey`, ...) in an output schema.
80
98
  * An output schema that declares one without this fails at route load; `reason` records why this
package/dist/t.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"t.d.ts","sourceRoot":"","sources":["../src/t.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,YAAY,EAEjB,KAAK,cAAc,EAEnB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,OAAO,EACZ,KAAK,MAAM,EACX,KAAK,OAAO,EAGb,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,cAAc,CAAA;AAG5D,KAAK,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;AAExC,sFAAsF;AACtF,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAA;IAC/B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;CAC7B;AAoCD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,CAAC;gCACO,aAAa;gCACb,aAAa;iCACZ,cAAc;;;6BAGlB,CAAC,SAAS,aAAa,SAAS,CAAC;sBAMxC,CAAC,SAAS,KAAK,SAAS,CAAC,YAAY,aAAa,wDA3CC,CAAC;IA+C7D;qFACiF;2BACnE,CAAC,SAAS,KAAK,SAAS,CAAC,YAAY,aAAa,wDAjDJ,CAAC;IAqD7D;;;OAGG;qBACK,CAAC,SAAS,OAAO,QACjB,WAAW,CAAC,CAAC,CAAC,YACV,YAAY,KACrB,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAGzB,gGAAgG;wBACrF,CAAC,SAAS,OAAO,UAAU,WAAW,CAAC,CAAC,CAAC;2BAYtC,CAAC,SAAS,SAAS,WAAW,EAAE,WAAW,CAAC,KAQnD,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,GAAE,CAAC,CAAC;sBACnE,CAAC,SAAS,OAAO,SAAS,WAAW,CAAC,CAAC,CAAC,YAAY,aAAa;IAQ1E,+GAA+G;yBACnG,CAAC,SAAS,OAAO,QAAQ,WAAW,CAAC,CAAC,CAAC,YAAY,aAAa;;;;IAY5E;;;yEAGqE;mCAC/C;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE;;;;IAW3C;;;;;;;;sGAQkG;qBAnHjG,CAAC,SAAS,KAAK,SAAS,CAAC,YAAY,aAAa,wDAdS,CAAC;IAmI7D;;;6FAGyF;uBAxHxF,CAAC,SAAS,KAAK,SAAS,CAAC,YAAY,aAAa,wDAdS,CAAC;IAyI7D;;;;OAIG;wBACQ,CAAC,SAAS,OAAO,SACnB,WAAW,CAAC,CAAC,CAAC,KACpB,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAYjD;;;;OAIG;4BACY,CAAC,SAAS,OAAO,UAAU,MAAM,UAAU,WAAW,CAAC,CAAC,CAAC,KAAG,WAAW,CAAC,CAAC,CAAC;CAOjF,CAAA"}
1
+ {"version":3,"file":"t.d.ts","sourceRoot":"","sources":["../src/t.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,YAAY,EAEjB,KAAK,cAAc,EAEnB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,OAAO,EACZ,KAAK,MAAM,EACX,KAAK,OAAO,EAGb,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,cAAc,CAAA;AAG5D,KAAK,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;AAExC,sFAAsF;AACtF,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAA;IAC/B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;CAC7B;AAYD,2EAA2E;AAC3E,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,EAAE,GACX;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAA;AAgDhC;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,CAAC;gCACO,aAAa;gCACb,aAAa;iCACZ,cAAc;;;6BAGlB,CAAC,SAAS,aAAa,SAAS,CAAC;sBAMxC,CAAC,SAAS,KAAK,SAAS,CAAC,YAAY,aAAa,wDA3CC,CAAC;IA+C7D;qFACiF;2BACnE,CAAC,SAAS,KAAK,SAAS,CAAC,YAAY,aAAa,wDAjDJ,CAAC;IAqD7D;;;OAGG;qBACK,CAAC,SAAS,OAAO,QACjB,WAAW,CAAC,CAAC,CAAC,YACV,YAAY,KACrB,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAGzB,gGAAgG;wBACrF,CAAC,SAAS,OAAO,UAAU,WAAW,CAAC,CAAC,CAAC;2BAYtC,CAAC,SAAS,SAAS,WAAW,EAAE,WAAW,CAAC,KAQnD,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,GAAE,CAAC,CAAC;sBACnE,CAAC,SAAS,OAAO,SAAS,WAAW,CAAC,CAAC,CAAC,YAAY,aAAa;IAQ1E,+GAA+G;yBACnG,CAAC,SAAS,OAAO,QAAQ,WAAW,CAAC,CAAC,CAAC,YAAY,aAAa;;;;IAY5E;;;yEAGqE;mCAC/C;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE;;;;IAW3C;;;;;;;;sGAQkG;qBAnHjG,CAAC,SAAS,KAAK,SAAS,CAAC,YAAY,aAAa,wDAdS,CAAC;IAmI7D;;;6FAGyF;uBAxHxF,CAAC,SAAS,KAAK,SAAS,CAAC,YAAY,aAAa,wDAdS,CAAC;IAyI7D;;;;OAIG;wBACQ,CAAC,SAAS,OAAO,SACnB,WAAW,CAAC,CAAC,CAAC,KACpB,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAYjD;;;;;OAKG;yBACO,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAKzC;;;;;OAKG;yBACO,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAWpC;;;;OAIG;4BACY,CAAC,SAAS,OAAO,UAAU,MAAM,UAAU,WAAW,CAAC,CAAC,CAAC,KAAG,WAAW,CAAC,CAAC,CAAC;CAOjF,CAAA"}
package/dist/t.js CHANGED
@@ -8,6 +8,30 @@ const isDeferredValue = (_, value) => typeof value === "object" &&
8
8
  value !== null &&
9
9
  value.__nifra_deferred === true &&
10
10
  typeof value.promise?.then === "function";
11
+ const JSON_KIND = "NifraJson";
12
+ const DATE_KIND = "NifraDate";
13
+ // Deeper than any real payload; it also ends a walk into a cycle, which JSON cannot carry.
14
+ const MAX_JSON_DEPTH = 256;
15
+ function isJsonValue(value, depth) {
16
+ if (value === null || typeof value === "string" || typeof value === "boolean")
17
+ return true;
18
+ if (typeof value === "number")
19
+ return Number.isFinite(value);
20
+ if (typeof value !== "object" || depth > MAX_JSON_DEPTH)
21
+ return false;
22
+ if (Array.isArray(value))
23
+ return value.every((item) => isJsonValue(item, depth + 1));
24
+ const proto = Object.getPrototypeOf(value);
25
+ if (proto !== Object.prototype && proto !== null)
26
+ return false;
27
+ for (const item of Object.values(value)) {
28
+ // JSON drops an undefined property, as it would here.
29
+ if (item !== undefined && !isJsonValue(item, depth + 1))
30
+ return false;
31
+ }
32
+ return true;
33
+ }
34
+ const isValidDate = (_, value) => value instanceof Date && !Number.isNaN(value.getTime());
11
35
  /**
12
36
  * Pull each property's raw TypeBox schema out of its `NifraSchema` wrapper. `where` names the calling
13
37
  * constructor: these objects are checked as JSON, so a file field is refused here (it belongs in
@@ -129,6 +153,33 @@ export const t = {
129
153
  [DEFERRED_VALIDATE]: inner["~standard"].validate,
130
154
  }));
131
155
  },
156
+ /**
157
+ * Any JSON value: strings, finite numbers, booleans, `null`, and arrays and plain objects of them, at
158
+ * any depth. A function, a class instance, `NaN` or a cycle fails. The output guard cannot see inside
159
+ * it, so `nifra check` and the sensitive-field rule do not either: prefer a declared shape for
160
+ * anything that might hold a credential.
161
+ */
162
+ json: () => {
163
+ if (!TypeRegistry.Has(JSON_KIND))
164
+ TypeRegistry.Set(JSON_KIND, (_, value) => isJsonValue(value, 0));
165
+ return fromTypeBox(Type.Unsafe({ [Kind]: JSON_KIND, "x-nifra-json": true }));
166
+ },
167
+ /**
168
+ * A `Date` for page data: `loaderOutput`, `actionOutput` and a server function's `output`. The
169
+ * loader may return a `Date` or an ISO 8601 string; the page receives a `Date`, on the server render
170
+ * and in the browser alike. A request body or a `backend/app.ts` response is plain JSON, which has
171
+ * no dates: use `t.string({ format: "date-time" })` there.
172
+ */
173
+ date: () => {
174
+ if (!TypeRegistry.Has(DATE_KIND))
175
+ TypeRegistry.Set(DATE_KIND, isValidDate);
176
+ return fromTypeBox(Type.Unsafe({
177
+ [Kind]: DATE_KIND,
178
+ type: "string",
179
+ format: "date-time",
180
+ "x-nifra-date": true,
181
+ }));
182
+ },
132
183
  /**
133
184
  * Allow a field with a sensitive name (`token`, `password`, `apiKey`, ...) in an output schema.
134
185
  * An output schema that declares one without this fails at route load; `reason` records why this
package/dist/t.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"t.js","sourceRoot":"","sources":["../src/t.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"t.js","sourceRoot":"","sources":["../src/t.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nifrajs/schema",
3
- "version": "4.0.2",
3
+ "version": "5.0.0",
4
4
  "description": "Built-in schema builder `t` - TypeBox-backed (free JSON Schema + compiled validators), implements Standard Schema so nifra routes validate it natively.",
5
5
  "keywords": [
6
6
  "bun",
@@ -53,11 +53,11 @@
53
53
  "access": "public"
54
54
  },
55
55
  "dependencies": {
56
- "@nifrajs/uploads": "4.0.2",
56
+ "@nifrajs/uploads": "5.0.0",
57
57
  "@sinclair/typebox": "^0.34.49"
58
58
  },
59
59
  "peerDependencies": {
60
- "@nifrajs/core": "^4.0.2"
60
+ "@nifrajs/core": "^5.0.0"
61
61
  },
62
62
  "devDependencies": {
63
63
  "@nifrajs/core": "workspace:*",
package/src/adapter.ts CHANGED
@@ -195,7 +195,9 @@ function convertFlat(plan: CoercionPlan, value: unknown): unknown {
195
195
  * generation**, so that first compile throws there. We catch it once per schema and
196
196
  * fall back to TypeBox's eval-free `Value` checker - same semantics (and same global
197
197
  * `FormatRegistry`, so `t.string({ format })` behaves identically), no `new Function`.
198
- * The branch is decided once and memoized, so the hot path is a single check either way.
198
+ * A browser page starts on that checker, so a strict CSP or Trusted Types sees no
199
+ * compile attempt. The branch is decided once and memoized, so the hot path is a single
200
+ * check either way.
199
201
  *
200
202
  * Exposed (not just used internally by `t`) so a TypeBox schema authored directly can
201
203
  * be adapted without leaving the Standard Schema world.
@@ -216,8 +218,10 @@ export function fromTypeBox<T extends TSchema>(
216
218
  const coercionPlan = coerce ? flatCoercionPlan(schema) : null
217
219
  let compiled: TypeCheck<T> | undefined
218
220
  // A backslash-carrying key/literal would MISCOMPILE (not throw) under TypeCompiler - see
219
- // hasCompileHazard. Start such schemas on the eval-free path; everything else compiles as before.
220
- let evalFree = hasCompileHazard(schema)
221
+ // hasCompileHazard. Start such schemas on the eval-free path. So does a browser page: under a CSP
222
+ // without 'unsafe-eval', or Trusted Types, the compile attempt is a violation the browser logs and
223
+ // reports, once per schema, before the fallback below catches it.
224
+ let evalFree = hasCompileHazard(schema) || "document" in globalThis
221
225
  return {
222
226
  "~standard": {
223
227
  version: 1,
package/src/index.ts CHANGED
@@ -14,6 +14,7 @@ export { registerFormat } from "./formats.ts"
14
14
  export {
15
15
  type OpenAPIDocument,
16
16
  type OpenAPIInfo,
17
+ type OpenAPIVersion,
17
18
  toOpenAPI,
18
19
  toOpenAPIFromEvidence,
19
20
  } from "./openapi.ts"
@@ -29,4 +30,4 @@ export {
29
30
  } from "./openapi-import.ts"
30
31
  // Cursor-pagination runtime helpers - pair with `t.paginated` / `t.pageQuery`.
31
32
  export { decodeCursor, encodeCursor, type Page, paginate } from "./pagination.ts"
32
- export { type DeferredValue, t } from "./t.ts"
33
+ export { type DeferredValue, type JsonValue, t } from "./t.ts"
package/src/openapi.ts CHANGED
@@ -25,6 +25,11 @@ import type { Server } from "@nifrajs/core/server"
25
25
  * detail. A **contract** is richest - its operations carry `response`, `tags`, `security`, additional
26
26
  * `responses`, etc.; an **app** emits request shapes + a generic `200` (an inline handler has no
27
27
  * response *schema* to serialize), enrichable via `options.operations`.
28
+ *
29
+ * A typed SSE route (`app.sse()`) answers `text/event-stream`, and its event payload becomes a named
30
+ * component (`<OperationId>Event`, or one named after the path) so a client generator emits a type
31
+ * for it. With `openapiVersion: "3.2.0"` the media type carries the standard `itemSchema` describing
32
+ * each event; a 3.1 document has no field for that, so it carries the same schema as `x-itemSchema`.
28
33
  */
29
34
  export interface OpenAPIInfo {
30
35
  readonly title: string
@@ -46,6 +51,8 @@ export interface OpenAPITag {
46
51
  export type SecurityRequirement = Readonly<Record<string, readonly string[]>>
47
52
 
48
53
  export interface ToOpenAPIOptions {
54
+ /** The OpenAPI version to declare. `"3.2.0"` describes SSE events with the standard `itemSchema`. */
55
+ readonly openapiVersion?: OpenAPIVersion
49
56
  readonly title?: string
50
57
  readonly version?: string
51
58
  readonly description?: string
@@ -97,8 +104,13 @@ interface OpenAPIParameter {
97
104
  readonly schema: JsonSchema
98
105
  }
99
106
 
107
+ export type OpenAPIVersion = "3.1.0" | "3.2.0"
108
+
100
109
  interface OpenAPIMediaType {
101
- readonly schema: JsonSchema
110
+ readonly schema?: JsonSchema
111
+ /** OpenAPI 3.2: the schema of each item of a sequential media type such as an event stream. */
112
+ readonly itemSchema?: JsonSchema
113
+ readonly "x-itemSchema"?: JsonSchema
102
114
  }
103
115
 
104
116
  interface OpenAPIRequestBody {
@@ -129,7 +141,7 @@ interface OpenAPIComponents {
129
141
  }
130
142
 
131
143
  export interface OpenAPIDocument {
132
- readonly openapi: "3.1.0"
144
+ readonly openapi: OpenAPIVersion
133
145
  readonly info: OpenAPIInfo
134
146
  readonly paths: Record<string, Record<string, OpenAPIOperation>>
135
147
  readonly servers?: readonly OpenAPIServer[]
@@ -185,6 +197,26 @@ class SchemaStore {
185
197
  }
186
198
  return { $ref: `#/components/schemas/${componentName}` }
187
199
  }
200
+
201
+ /** Keep `schema` as a component named after `base` (deduped), unless it is one already. */
202
+ named(base: string, schema: JsonSchema): JsonSchema {
203
+ const collected = this.collect(schema) ?? schema
204
+ if (typeof collected === "object" && typeof collected.$ref === "string") return collected
205
+ let name = base
206
+ let suffix = 2
207
+ while (Object.hasOwn(this.schemas, name) || this.componentIds.has(name)) {
208
+ name = `${base}_${suffix}`
209
+ suffix += 1
210
+ }
211
+ this.componentIds.set(name, name)
212
+ Object.defineProperty(this.schemas, name, {
213
+ value: collected,
214
+ enumerable: true,
215
+ configurable: true,
216
+ writable: true,
217
+ })
218
+ return { $ref: `#/components/schemas/${name}` }
219
+ }
188
220
  }
189
221
 
190
222
  interface PathParameter {
@@ -294,6 +326,8 @@ interface OperationInput {
294
326
  /** Reflected params schema - per-field constraints merge into path parameters. */
295
327
  readonly params: SchemaReflection | undefined
296
328
  readonly response: SchemaReflection | undefined
329
+ /** A typed SSE route's event payload schema. */
330
+ readonly sse?: SchemaReflection | undefined
297
331
  readonly operationId: string | undefined
298
332
  // `| undefined` (not just `?`) so a contract op's optional fields - `string | undefined` etc. - are
299
333
  // assignable under `exactOptionalPropertyTypes` when spread into this literal.
@@ -343,12 +377,55 @@ function reflectedErrorsToResponses(
343
377
  return Object.keys(out).length > 0 ? out : undefined
344
378
  }
345
379
 
380
+ function sseComponentName(input: OperationInput): string {
381
+ if (input.operationId !== undefined && /^[A-Za-z0-9._-]+$/.test(input.operationId))
382
+ return `${input.operationId}Event`
383
+ const words = input.path
384
+ .split(/[^A-Za-z0-9]+/)
385
+ .filter((word) => word.length > 0)
386
+ .map((word) => `${word[0]?.toUpperCase()}${word.slice(1)}`)
387
+ return `${words.join("") || "Root"}Event`
388
+ }
389
+
390
+ /** OAS 3.2 4.14.4's event shape, with `data` carrying JSON that matches the route's payload schema. */
391
+ function sseItemSchema(payload: JsonSchema | undefined): JsonSchema {
392
+ return {
393
+ type: "object",
394
+ required: ["data"],
395
+ properties: {
396
+ data:
397
+ payload === undefined
398
+ ? { type: "string" }
399
+ : { type: "string", contentMediaType: "application/json", contentSchema: payload },
400
+ event: { type: "string" },
401
+ id: { type: "string" },
402
+ retry: { type: "integer", minimum: 0 },
403
+ },
404
+ }
405
+ }
406
+
346
407
  function buildResponses(
347
408
  input: OperationInput,
348
409
  store: SchemaStore,
410
+ version: OpenAPIVersion,
349
411
  ): Record<string, OpenAPIResponse> {
350
412
  const responses: Record<string, OpenAPIResponse> = {}
351
- if (input.response !== undefined) {
413
+ if (input.sse !== undefined) {
414
+ const payload =
415
+ input.sse.jsonSchema === undefined
416
+ ? undefined
417
+ : store.named(sseComponentName(input), input.sse.jsonSchema)
418
+ const item = sseItemSchema(payload)
419
+ responses["200"] = {
420
+ description: "Server-Sent Events",
421
+ content: {
422
+ "text/event-stream":
423
+ version === "3.2.0"
424
+ ? { itemSchema: item }
425
+ : { schema: { type: "string" }, "x-itemSchema": item },
426
+ },
427
+ }
428
+ } else if (input.response !== undefined) {
352
429
  const schema = store.collect(input.response.jsonSchema)
353
430
  responses["200"] =
354
431
  schema !== undefined
@@ -414,8 +491,12 @@ function hasFileField(schema: JsonSchema | undefined): boolean {
414
491
  )
415
492
  }
416
493
 
417
- function buildOperation(input: OperationInput, store: SchemaStore): OpenAPIOperation {
418
- const operation: OpenAPIOperation = { responses: buildResponses(input, store) }
494
+ function buildOperation(
495
+ input: OperationInput,
496
+ store: SchemaStore,
497
+ version: OpenAPIVersion,
498
+ ): OpenAPIOperation {
499
+ const operation: OpenAPIOperation = { responses: buildResponses(input, store, version) }
419
500
  if (input.operationId !== undefined) operation.operationId = input.operationId
420
501
  if (input.summary !== undefined) operation.summary = input.summary
421
502
  if (input.description !== undefined) operation.description = input.description
@@ -463,6 +544,7 @@ function addOperation(
463
544
  input: OperationInput,
464
545
  store: SchemaStore,
465
546
  operations: ToOpenAPIOptions["operations"],
547
+ version: OpenAPIVersion,
466
548
  ): void {
467
549
  // A path item has a field for each standard method and no place for any other, so a route
468
550
  // registered under a custom method is left out of the document.
@@ -470,7 +552,7 @@ function addOperation(
470
552
  const templated = templatedPath(input.path).template
471
553
  const pathItem = paths[templated] ?? {}
472
554
  paths[templated] = pathItem
473
- let operation = buildOperation(input, store)
555
+ let operation = buildOperation(input, store, version)
474
556
  // Shallow-merge an override keyed by operationId or "METHOD /path".
475
557
  const override =
476
558
  operations?.[input.operationId ?? ""] ?? operations?.[`${method.toUpperCase()} ${input.path}`]
@@ -491,6 +573,7 @@ export function toOpenAPI(
491
573
  ): OpenAPIDocument {
492
574
  const paths: Record<string, Record<string, OpenAPIOperation>> = {}
493
575
  const store = new SchemaStore()
576
+ const version = options.openapiVersion ?? "3.1.0"
494
577
 
495
578
  if (isApp(input)) {
496
579
  const routes =
@@ -510,6 +593,7 @@ export function toOpenAPI(
510
593
  params: route.schema?.params,
511
594
  // A route may now declare a `response` contract - emit it as the 200 body schema.
512
595
  response: route.schema?.response,
596
+ sse: route.schema?.sse,
513
597
  // …and an `errors` contract - emit each as a non-2xx response.
514
598
  responses: reflectedErrorsToResponses(route.schema?.errors),
515
599
  inferredResponses:
@@ -518,6 +602,7 @@ export function toOpenAPI(
518
602
  },
519
603
  store,
520
604
  options.operations,
605
+ version,
521
606
  )
522
607
  }
523
608
  } else {
@@ -568,6 +653,7 @@ export function toOpenAPI(
568
653
  },
569
654
  store,
570
655
  options.operations,
656
+ version,
571
657
  )
572
658
  }
573
659
  }
@@ -578,7 +664,7 @@ export function toOpenAPI(
578
664
  if (options.securitySchemes !== undefined) components.securitySchemes = options.securitySchemes
579
665
 
580
666
  return {
581
- openapi: "3.1.0",
667
+ openapi: version,
582
668
  info: {
583
669
  title: options.title ?? "API",
584
670
  version: options.version ?? "1.0.0",
package/src/t.ts CHANGED
@@ -37,6 +37,37 @@ const isDeferredValue = (_: unknown, value: unknown): boolean =>
37
37
  (value as { readonly __nifra_deferred?: unknown }).__nifra_deferred === true &&
38
38
  typeof (value as { readonly promise?: { readonly then?: unknown } }).promise?.then === "function"
39
39
 
40
+ /** Any value that survives `JSON.stringify` and `JSON.parse` unchanged. */
41
+ export type JsonValue =
42
+ | string
43
+ | number
44
+ | boolean
45
+ | null
46
+ | JsonValue[]
47
+ | { [key: string]: JsonValue }
48
+
49
+ const JSON_KIND = "NifraJson"
50
+ const DATE_KIND = "NifraDate"
51
+ // Deeper than any real payload; it also ends a walk into a cycle, which JSON cannot carry.
52
+ const MAX_JSON_DEPTH = 256
53
+
54
+ function isJsonValue(value: unknown, depth: number): boolean {
55
+ if (value === null || typeof value === "string" || typeof value === "boolean") return true
56
+ if (typeof value === "number") return Number.isFinite(value)
57
+ if (typeof value !== "object" || depth > MAX_JSON_DEPTH) return false
58
+ if (Array.isArray(value)) return value.every((item) => isJsonValue(item, depth + 1))
59
+ const proto = Object.getPrototypeOf(value)
60
+ if (proto !== Object.prototype && proto !== null) return false
61
+ for (const item of Object.values(value)) {
62
+ // JSON drops an undefined property, as it would here.
63
+ if (item !== undefined && !isJsonValue(item, depth + 1)) return false
64
+ }
65
+ return true
66
+ }
67
+
68
+ const isValidDate = (_: unknown, value: unknown): boolean =>
69
+ value instanceof Date && !Number.isNaN(value.getTime())
70
+
40
71
  /**
41
72
  * Pull each property's raw TypeBox schema out of its `NifraSchema` wrapper. `where` names the calling
42
73
  * constructor: these objects are checked as JSON, so a file field is refused here (it belongs in
@@ -198,6 +229,34 @@ export const t = {
198
229
  }),
199
230
  )
200
231
  },
232
+ /**
233
+ * Any JSON value: strings, finite numbers, booleans, `null`, and arrays and plain objects of them, at
234
+ * any depth. A function, a class instance, `NaN` or a cycle fails. The output guard cannot see inside
235
+ * it, so `nifra check` and the sensitive-field rule do not either: prefer a declared shape for
236
+ * anything that might hold a credential.
237
+ */
238
+ json: (): NifraSchema<TUnsafe<JsonValue>> => {
239
+ if (!TypeRegistry.Has(JSON_KIND))
240
+ TypeRegistry.Set(JSON_KIND, (_: unknown, value: unknown) => isJsonValue(value, 0))
241
+ return fromTypeBox(Type.Unsafe<JsonValue>({ [Kind]: JSON_KIND, "x-nifra-json": true }))
242
+ },
243
+ /**
244
+ * A `Date` for page data: `loaderOutput`, `actionOutput` and a server function's `output`. The
245
+ * loader may return a `Date` or an ISO 8601 string; the page receives a `Date`, on the server render
246
+ * and in the browser alike. A request body or a `backend/app.ts` response is plain JSON, which has
247
+ * no dates: use `t.string({ format: "date-time" })` there.
248
+ */
249
+ date: (): NifraSchema<TUnsafe<Date>> => {
250
+ if (!TypeRegistry.Has(DATE_KIND)) TypeRegistry.Set(DATE_KIND, isValidDate)
251
+ return fromTypeBox(
252
+ Type.Unsafe<Date>({
253
+ [Kind]: DATE_KIND,
254
+ type: "string",
255
+ format: "date-time",
256
+ "x-nifra-date": true,
257
+ }),
258
+ )
259
+ },
201
260
  /**
202
261
  * Allow a field with a sensitive name (`token`, `password`, `apiKey`, ...) in an output schema.
203
262
  * An output schema that declares one without this fails at route load; `reason` records why this