@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 +3 -1
- package/dist/adapter.d.ts.map +1 -1
- package/dist/adapter.js +7 -3
- package/dist/adapter.js.map +1 -1
- package/dist/form.d.ts +2 -0
- package/dist/form.d.ts.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/openapi.d.ts +13 -2
- package/dist/openapi.d.ts.map +1 -1
- package/dist/openapi.js +69 -9
- package/dist/openapi.js.map +1 -1
- package/dist/t.d.ts +18 -0
- package/dist/t.d.ts.map +1 -1
- package/dist/t.js +51 -0
- package/dist/t.js.map +1 -1
- package/package.json +3 -3
- package/src/adapter.ts +7 -3
- package/src/index.ts +2 -1
- package/src/openapi.ts +93 -7
- package/src/t.ts +59 -0
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
|
-
*
|
|
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.
|
package/dist/adapter.d.ts.map
CHANGED
|
@@ -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
|
|
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
|
-
*
|
|
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
|
|
172
|
-
|
|
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,
|
package/dist/adapter.js.map
CHANGED
|
@@ -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 {};
|
package/dist/form.d.ts.map
CHANGED
|
@@ -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;;;;;;;;;;;;;;;;
|
|
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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
|
|
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:
|
|
109
|
+
readonly openapi: OpenAPIVersion;
|
|
99
110
|
readonly info: OpenAPIInfo;
|
|
100
111
|
readonly paths: Record<string, Record<string, OpenAPIOperation>>;
|
|
101
112
|
readonly servers?: readonly OpenAPIServer[];
|
package/dist/openapi.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../src/openapi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAC3D,OAAO,EAAE,KAAK,uBAAuB,EAA+B,MAAM,wBAAwB,CAAA;AAOlG,OAAO,EACL,KAAK,UAAU,EAKhB,MAAM,0BAA0B,CAAA;AACjC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAElD
|
|
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
|
|
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.
|
|
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:
|
|
431
|
+
openapi: version,
|
|
372
432
|
info: {
|
|
373
433
|
title: options.title ?? "API",
|
|
374
434
|
version: options.version ?? "1.0.0",
|
package/dist/openapi.js.map
CHANGED
|
@@ -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;
|
|
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":"AAAA,OAAO,EAEL,SAAS,EAET,IAAI,EAUJ,IAAI,EACJ,YAAY,GACb,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,WAAW,EAAoB,MAAM,cAAc,CAAA;AAC5D,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAWpD,MAAM,aAAa,GAAG,eAAe,CAAA;AACrC,wGAAwG;AACxG,MAAM,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAA;AAErE,MAAM,eAAe,GAAG,CAAC,CAAU,EAAE,KAAc,EAAW,EAAE,CAC9D,OAAO,KAAK,KAAK,QAAQ;IACzB,KAAK,KAAK,IAAI;IACb,KAAiD,CAAC,gBAAgB,KAAK,IAAI;IAC5E,OAAQ,KAA4D,CAAC,OAAO,EAAE,IAAI,KAAK,UAAU,CAAA;
|
|
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": "
|
|
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": "
|
|
56
|
+
"@nifrajs/uploads": "5.0.0",
|
|
57
57
|
"@sinclair/typebox": "^0.34.49"
|
|
58
58
|
},
|
|
59
59
|
"peerDependencies": {
|
|
60
|
-
"@nifrajs/core": "^
|
|
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
|
-
*
|
|
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
|
|
220
|
-
|
|
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
|
|
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:
|
|
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.
|
|
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(
|
|
418
|
-
|
|
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:
|
|
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
|