@nifrajs/schema 3.3.0 → 4.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/openapi.js CHANGED
@@ -1,3 +1,5 @@
1
+ import { reflectedRoutesFromEvidence } from "@nifrajs/core/evidence";
2
+ import { compileRoutePattern, expandOptionalParams, } from "@nifrajs/core/pattern";
1
3
  import { reflectRoutes, reflectSchema, } from "@nifrajs/core/reflection";
2
4
  /**
3
5
  * Collects schemas that carry a `$id` into `components.schemas`, returning a `$ref` in their place -
@@ -49,26 +51,37 @@ class SchemaStore {
49
51
  return { $ref: `#/components/schemas/${componentName}` };
50
52
  }
51
53
  }
52
- /** Name of a path segment's parameter, or `undefined` for a static segment. */
53
- function segmentParam(segment) {
54
- if (segment.startsWith(":"))
55
- return segment.slice(1);
56
- if (segment.startsWith("*"))
57
- return segment.length > 1 ? segment.slice(1) : "wildcard";
58
- return undefined;
59
- }
60
- /** `/users/:id/*rest` → `/users/{id}/{rest}` (OpenAPI path templating). */
61
- function toTemplatedPath(path) {
62
- return path
63
- .split("/")
64
- .map((segment) => {
65
- const param = segmentParam(segment);
66
- return param === undefined ? segment : `{${param}}`;
67
- })
54
+ /**
55
+ * `/users/:id/*rest` as `/users/{id}/{rest}`, with its params in order. Split by the router's own
56
+ * compiler, so names and constraints end where the router ends them.
57
+ */
58
+ function templatedPath(path) {
59
+ const parameters = [];
60
+ const take = (name, constraint) => {
61
+ parameters.push({ name, constraint });
62
+ return `{${name}}`;
63
+ };
64
+ let segments;
65
+ try {
66
+ segments = compileRoutePattern(path).segments;
67
+ }
68
+ catch {
69
+ return { template: path, parameters };
70
+ }
71
+ const template = segments
72
+ .map((segment) => segment.kind === "static"
73
+ ? segment.value
74
+ : segment.kind === "param"
75
+ ? take(segment.name)
76
+ : segment.kind === "wildcard"
77
+ ? take(segment.name === "*" ? "wildcard" : segment.name)
78
+ : segment.parts
79
+ .map((part) => (part.t === "lit" ? part.v : take(part.name, part.c)))
80
+ .join(""))
68
81
  .join("/");
82
+ return { template: `/${template}`, parameters };
69
83
  }
70
84
  function pathParameters(path, paramsSchema) {
71
- const params = [];
72
85
  // Build a lookup of per-field schemas from the declared params schema (if any).
73
86
  const fieldSchemas = new Map();
74
87
  if (paramsSchema?.fields !== undefined) {
@@ -76,16 +89,19 @@ function pathParameters(path, paramsSchema) {
76
89
  fieldSchemas.set(field.name, field.schema);
77
90
  }
78
91
  }
79
- for (const segment of path.split("/")) {
80
- const name = segmentParam(segment);
81
- if (name !== undefined) {
82
- // Merge the declared constraint (uuid format, integer type, etc.) when present;
83
- // fall back to the bare { type: "string" } derived from the URL pattern.
84
- const schema = fieldSchemas.get(name) ?? { type: "string" };
85
- params.push({ name, in: "path", required: true, schema });
86
- }
87
- }
88
- return params;
92
+ // A declared field schema (uuid format, integer type, etc.) wins. Without one, a constraint in
93
+ // the path says what the router accepts; without either, the parameter is any string.
94
+ return templatedPath(path).parameters.map(({ name, constraint }) => ({
95
+ name,
96
+ in: "path",
97
+ required: true,
98
+ schema: fieldSchemas.get(name) ??
99
+ (constraint === undefined
100
+ ? { type: "string" }
101
+ : constraint.oneOf === undefined
102
+ ? { type: "string", pattern: `^${constraint.source}$` }
103
+ : { type: "string", enum: constraint.oneOf }),
104
+ }));
89
105
  }
90
106
  function queryParameters(schema) {
91
107
  if (schema === undefined)
@@ -111,6 +127,17 @@ function headerParameters(schema) {
111
127
  schema: field.schema,
112
128
  }));
113
129
  }
130
+ /** Cookie names are case-sensitive, so each declared field keeps its name as written. */
131
+ function cookieParameters(schema) {
132
+ if (schema?.fields === undefined)
133
+ return [];
134
+ return schema.fields.map((field) => ({
135
+ name: field.name,
136
+ in: "cookie",
137
+ required: field.required,
138
+ schema: field.schema,
139
+ }));
140
+ }
114
141
  const STATUS_TEXT = {
115
142
  "400": "Bad Request",
116
143
  "401": "Unauthorized",
@@ -182,6 +209,26 @@ function buildResponses(input, store) {
182
209
  }
183
210
  return responses;
184
211
  }
212
+ const isBinary = (schema) => typeof schema === "object" &&
213
+ schema !== null &&
214
+ schema.type === "string" &&
215
+ schema.format === "binary";
216
+ /**
217
+ * Whether a body schema declares a file field (a binary string, or a list of them) - the shape
218
+ * `t.form` produces. JSON cannot carry a file, so such a body is `multipart/form-data`. Read off
219
+ * the plain JSON Schema so a document built from a stored evidence snapshot agrees with a live one.
220
+ */
221
+ function hasFileField(schema) {
222
+ if (typeof schema !== "object" || schema === null)
223
+ return false;
224
+ const properties = schema.properties;
225
+ if (typeof properties !== "object" || properties === null)
226
+ return false;
227
+ return Object.values(properties).some((property) => isBinary(property) ||
228
+ (typeof property === "object" &&
229
+ property !== null &&
230
+ isBinary(property.items)));
231
+ }
185
232
  function buildOperation(input, store) {
186
233
  const operation = { responses: buildResponses(input, store) };
187
234
  if (input.operationId !== undefined)
@@ -200,22 +247,40 @@ function buildOperation(input, store) {
200
247
  ...pathParameters(input.path, input.params),
201
248
  ...queryParameters(input.query),
202
249
  ...headerParameters(input.headers),
250
+ ...cookieParameters(input.cookies),
203
251
  ];
204
252
  if (parameters.length > 0)
205
253
  operation.parameters = parameters;
206
254
  if (input.body !== undefined) {
207
255
  const schema = store.collect(input.body.jsonSchema);
208
256
  if (schema !== undefined) {
209
- operation.requestBody = {
210
- required: true,
211
- content: { [input.requestContentType ?? "application/json"]: { schema } },
212
- };
257
+ const contentType = input.requestContentType ??
258
+ (hasFileField(input.body.jsonSchema) ? "multipart/form-data" : "application/json");
259
+ const content = { [contentType]: { schema } };
260
+ // A body schema with a parser of its own reads those media types too: one entry each, in a
261
+ // fixed order so a live document and one built from a stored snapshot are the same document.
262
+ for (const type of [...(input.body.mediaTypes ?? [])].sort())
263
+ content[type] ??= { schema };
264
+ operation.requestBody = { required: true, content };
213
265
  }
214
266
  }
215
267
  return operation;
216
268
  }
269
+ const PATH_ITEM_METHODS = new Set([
270
+ "get",
271
+ "put",
272
+ "post",
273
+ "delete",
274
+ "options",
275
+ "head",
276
+ "patch",
277
+ ]);
217
278
  function addOperation(paths, method, input, store, operations) {
218
- const templated = toTemplatedPath(input.path);
279
+ // A path item has a field for each standard method and no place for any other, so a route
280
+ // registered under a custom method is left out of the document.
281
+ if (!PATH_ITEM_METHODS.has(method.toLowerCase()))
282
+ return;
283
+ const templated = templatedPath(input.path).template;
219
284
  const pathItem = paths[templated] ?? {};
220
285
  paths[templated] = pathItem;
221
286
  let operation = buildOperation(input, store);
@@ -235,12 +300,16 @@ export function toOpenAPI(input, options = {}) {
235
300
  const paths = {};
236
301
  const store = new SchemaStore();
237
302
  if (isApp(input)) {
238
- for (const route of reflectRoutes(input)) {
303
+ const routes = options.evidence === undefined
304
+ ? reflectRoutes(input)
305
+ : reflectedRoutesFromEvidence(options.evidence);
306
+ for (const route of routes) {
239
307
  addOperation(paths, route.method, {
240
308
  path: route.path,
241
309
  body: route.schema?.body,
242
310
  query: route.schema?.query,
243
311
  headers: route.schema?.headers,
312
+ cookies: route.schema?.cookies,
244
313
  params: route.schema?.params,
245
314
  // A route may now declare a `response` contract - emit it as the 200 body schema.
246
315
  response: route.schema?.response,
@@ -253,35 +322,44 @@ export function toOpenAPI(input, options = {}) {
253
322
  }
254
323
  else {
255
324
  for (const [name, op] of Object.entries(input)) {
256
- addOperation(paths, op.method, {
257
- path: op.path,
258
- body: op.body === undefined ? undefined : reflectSchema(op.body),
259
- query: op.query === undefined ? undefined : reflectSchema(op.query),
260
- headers: op.headers === undefined ? undefined : reflectSchema(op.headers),
261
- params: op.params === undefined ? undefined : reflectSchema(op.params),
262
- response: op.response === undefined ? undefined : reflectSchema(op.response),
263
- operationId: name,
264
- summary: op.summary,
265
- description: op.description,
266
- tags: op.tags,
267
- deprecated: op.deprecated,
268
- security: op.security,
269
- requestContentType: op.requestContentType,
270
- responseContentType: op.responseContentType,
271
- responses: op.responses === undefined
272
- ? undefined
273
- : Object.fromEntries(Object.entries(op.responses).map(([status, response]) => {
274
- const { schema, ...metadata } = response;
275
- return [
276
- status,
277
- {
278
- ...metadata,
279
- ...(schema === undefined ? {} : { schema: reflectSchema(schema) }),
280
- },
281
- ];
282
- })),
283
- inferredResponses: options.inferredResponses?.[`${op.method.toUpperCase()} ${op.path}`],
284
- }, store, options.operations);
325
+ // A path ending in optional params is one operation per concrete path it serves. Operation ids
326
+ // are unique in a document, so the contract name goes to the full path and the shorter ones
327
+ // carry none; a shorter path declares only the parameters it has.
328
+ const forms = expandOptionalParams(op.path);
329
+ const responses = op.responses === undefined
330
+ ? undefined
331
+ : Object.fromEntries(Object.entries(op.responses).map(([status, response]) => {
332
+ const { schema, ...metadata } = response;
333
+ return [
334
+ status,
335
+ {
336
+ ...metadata,
337
+ ...(schema === undefined ? {} : { schema: reflectSchema(schema) }),
338
+ },
339
+ ];
340
+ }));
341
+ for (const path of forms) {
342
+ addOperation(paths, op.method, {
343
+ path,
344
+ body: op.body === undefined ? undefined : reflectSchema(op.body),
345
+ query: op.query === undefined ? undefined : reflectSchema(op.query),
346
+ headers: op.headers === undefined ? undefined : reflectSchema(op.headers),
347
+ cookies: op.cookies === undefined ? undefined : reflectSchema(op.cookies),
348
+ params: op.params === undefined ? undefined : reflectSchema(op.params),
349
+ response: op.response === undefined ? undefined : reflectSchema(op.response),
350
+ operationId: path === forms[forms.length - 1] ? name : undefined,
351
+ summary: op.summary,
352
+ description: op.description,
353
+ tags: op.tags,
354
+ deprecated: op.deprecated,
355
+ security: op.security,
356
+ requestContentType: op.requestContentType,
357
+ responseContentType: op.responseContentType,
358
+ responses,
359
+ inferredResponses: options.inferredResponses?.[`${op.method.toUpperCase()} ${path}`] ??
360
+ options.inferredResponses?.[`${op.method.toUpperCase()} ${op.path}`],
361
+ }, store, options.operations);
362
+ }
285
363
  }
286
364
  }
287
365
  const components = {};
@@ -303,4 +381,11 @@ export function toOpenAPI(input, options = {}) {
303
381
  ...(Object.keys(components).length > 0 ? { components } : {}),
304
382
  };
305
383
  }
384
+ /** Generate OpenAPI from an existing canonical project-evidence snapshot without loading a server. */
385
+ export function toOpenAPIFromEvidence(evidence, options = {}) {
386
+ const app = {
387
+ routes: () => reflectedRoutesFromEvidence(evidence),
388
+ };
389
+ return toOpenAPI(app, { ...options, evidence });
390
+ }
306
391
  //# sourceMappingURL=openapi.js.map
@@ -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
@@ -1,6 +1,12 @@
1
- import { type ArrayOptions, type IntegerOptions, type NumberOptions, type ObjectOptions, type StringOptions, type TLiteralValue, type TSchema, type TUnion } from "@sinclair/typebox";
1
+ import { type ArrayOptions, type IntegerOptions, type NumberOptions, type ObjectOptions, type Static, type StringOptions, type TArray, type TLiteralValue, type TSchema, type TUnion, type TUnsafe } from "@sinclair/typebox";
2
2
  import { type NifraSchema } from "./adapter.js";
3
3
  type Props = Record<string, NifraSchema>;
4
+ /** A value `defer()` from `@nifrajs/web` marked to stream in after the page shell. */
5
+ export interface DeferredValue<T> {
6
+ readonly __nifra_deferred: true;
7
+ readonly id: number;
8
+ readonly promise: Promise<T>;
9
+ }
4
10
  /**
5
11
  * The built-in schema builder. Each constructor returns a `NifraSchema` - a
6
12
  * Standard Schema whose validated output type flows into `c.body`/`c.query`, and
@@ -24,14 +30,18 @@ export declare const t: {
24
30
  /** Like `t.object` but ACCEPTS (and passes through) unknown fields - the explicit opt-out of the
25
31
  * strict default. Prefer `t.object` unless you genuinely need an open object. */
26
32
  readonly looseObject: <P extends Props>(props: P, options?: ObjectOptions) => NifraSchema<import("@sinclair/typebox").TObject<{ [K in keyof P]: P[K]["jsonSchema"]; }>>;
27
- readonly array: <T extends TSchema>(item: NifraSchema<T>, options?: ArrayOptions) => NifraSchema<import("@sinclair/typebox").TArray<T>>;
28
- /** Marks a property optional inside `t.object`; standalone it is `T | undefined`. */
33
+ /**
34
+ * A list. A list of `t.file()` (from `@nifrajs/schema/form`) honors `minItems` / `maxItems` and is
35
+ * used inside `t.form`.
36
+ */
37
+ readonly array: <T extends TSchema>(item: NifraSchema<T>, options?: ArrayOptions) => NifraSchema<TArray<T>>;
38
+ /** Marks a property optional inside `t.object` / `t.form`; standalone it is `T | undefined`. */
29
39
  readonly optional: <T extends TSchema>(schema: NifraSchema<T>) => NifraSchema<T extends import("@sinclair/typebox").TOptional<infer S extends TSchema> ? import("@sinclair/typebox").TOptional<S> : import("@sinclair/typebox").Ensure<import("@sinclair/typebox").TOptional<T>>>;
30
40
  readonly union: <const S extends readonly NifraSchema[]>(schemas: S) => NifraSchema<TUnion<{ -readonly [K in keyof S]: S[K]["jsonSchema"]; }>>;
31
41
  readonly record: <T extends TSchema>(value: NifraSchema<T>, options?: ObjectOptions) => NifraSchema<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, T>>;
32
42
  /** A cursor-pagination response envelope: `{ items: T[]; nextCursor: string | null }` (`null` = last page). */
33
43
  readonly paginated: <T extends TSchema>(item: NifraSchema<T>, options?: ObjectOptions) => NifraSchema<import("@sinclair/typebox").TObject<{
34
- items: import("@sinclair/typebox").TArray<T>;
44
+ items: TArray<T>;
35
45
  nextCursor: TUnion<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TNull]>;
36
46
  }>>;
37
47
  /** A request query schema for cursor pagination: `{ cursor?: string; limit?: number }`. `maxLimit`
@@ -54,6 +64,23 @@ export declare const t: {
54
64
  * `{ additionalProperties: false }` to enforce a strict allowlist. This is the query-slot constructor;
55
65
  * `t.object` stays the constructor for body slots (no coercion, a JSON body is already typed). */
56
66
  readonly query: <P extends Props>(props: P, options?: ObjectOptions) => NifraSchema<import("@sinclair/typebox").TObject<{ [K in keyof P]: P[K]["jsonSchema"]; }>>;
67
+ /** A request-cookie schema for the `cookies` route slot, with the same string->scalar COERCION as
68
+ * `t.query` (cookie values always arrive as strings). **Open by default**: a browser sends every
69
+ * cookie the site has set - analytics, consent, other routes' sessions - so a strict allowlist
70
+ * would 422 real traffic. Declare the cookies the route reads; the rest pass through. */
71
+ readonly cookies: <P extends Props>(props: P, options?: ObjectOptions) => NifraSchema<import("@sinclair/typebox").TObject<{ [K in keyof P]: P[K]["jsonSchema"]; }>>;
72
+ /**
73
+ * A loader value marked with `defer()`, streamed in after the shell. `inner` describes what the
74
+ * promise resolves to; `@nifrajs/web` projects and validates the resolved value by it before it
75
+ * streams, so a deferred value is held to the same output contract as the rest of the data.
76
+ */
77
+ readonly deferred: <T extends TSchema>(inner: NifraSchema<T>) => NifraSchema<TUnsafe<DeferredValue<Static<T>>>>;
78
+ /**
79
+ * Allow a field with a sensitive name (`token`, `password`, `apiKey`, ...) in an output schema.
80
+ * An output schema that declares one without this fails at route load; `reason` records why this
81
+ * value may reach the browser, for the reviewer who finds it later.
82
+ */
83
+ readonly declassified: <T extends TSchema>(reason: string, schema: NifraSchema<T>) => NifraSchema<T>;
57
84
  };
58
85
  export {};
59
86
  //# sourceMappingURL=t.d.ts.map
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,EACjB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,OAAO,EACZ,KAAK,MAAM,EAEZ,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,cAAc,CAAA;AAE5D,KAAK,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;AAUxC;;;;;;;;;;;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,wDA/Bd,CAAC;IAiC9C;qFACiF;2BACnE,CAAC,SAAS,KAAK,SAAS,CAAC,YAAY,aAAa,wDAnCnB,CAAC;qBAqCtC,CAAC,SAAS,OAAO,QAAQ,WAAW,CAAC,CAAC,CAAC,YAAY,YAAY;IAEvE,qFAAqF;wBAC1E,CAAC,SAAS,OAAO,UAAU,WAAW,CAAC,CAAC,CAAC;2BAOtC,CAAC,SAAS,SAAS,WAAW,EAAE,WAAW,CAAC,KAGnD,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;IAM1E,+GAA+G;yBACnG,CAAC,SAAS,OAAO,QAAQ,WAAW,CAAC,CAAC,CAAC,YAAY,aAAa;;;;IAU5E;;;yEAGqE;mCAC/C;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE;;;;IAW3C;;;;;;;;sGAQkG;qBAC1F,CAAC,SAAS,KAAK,SAAS,CAAC,YAAY,aAAa,wDA5Fb,CAAC;CAgGtC,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;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"}
package/dist/t.js CHANGED
@@ -1,13 +1,32 @@
1
- import { Type, } from "@sinclair/typebox";
1
+ import { CloneType, Kind, Type, TypeRegistry, } from "@sinclair/typebox";
2
2
  import { fromTypeBox } from "./adapter.js";
3
- /** Pull each property's raw TypeBox schema out of its `NifraSchema` wrapper. */
4
- function unwrap(props) {
3
+ import { fileOps, refuseFile } from "./file-kind.js";
4
+ const DEFERRED_KIND = "NifraDeferred";
5
+ /** Where `@nifrajs/web`'s output guard finds the inner schema's validate. Registered for two copies. */
6
+ const DEFERRED_VALIDATE = Symbol.for("nifra.schema.deferredValidate");
7
+ const isDeferredValue = (_, value) => typeof value === "object" &&
8
+ value !== null &&
9
+ value.__nifra_deferred === true &&
10
+ typeof value.promise?.then === "function";
11
+ /**
12
+ * Pull each property's raw TypeBox schema out of its `NifraSchema` wrapper. `where` names the calling
13
+ * constructor: these objects are checked as JSON, so a file field is refused here (it belongs in
14
+ * `t.form` from `@nifrajs/schema/form`) instead of failing every request later.
15
+ */
16
+ function unwrap(where, props) {
5
17
  const out = {};
6
18
  // Object.entries → own enumerable string keys only (no prototype walk).
7
- for (const [key, schema] of Object.entries(props))
19
+ for (const [key, schema] of Object.entries(props)) {
20
+ refuseFile(where, schema.jsonSchema);
8
21
  out[key] = schema.jsonSchema;
22
+ }
9
23
  return out;
10
24
  }
25
+ /** An open object whose scalar fields are coerced from strings - the shape of every request input
26
+ * that arrives as name/value text (a query string, a `Cookie` header). */
27
+ const textFields = (where) => (props, options) => fromTypeBox(Type.Object(unwrap(where, props), { additionalProperties: true, ...options }), {
28
+ coerce: true,
29
+ });
11
30
  /**
12
31
  * The built-in schema builder. Each constructor returns a `NifraSchema` - a
13
32
  * Standard Schema whose validated output type flows into `c.body`/`c.query`, and
@@ -31,28 +50,46 @@ export const t = {
31
50
  // rule. A body with extra keys fails validation (a 422), so `c.body` never carries attacker-supplied
32
51
  // properties (no mass-assignment). Use `t.looseObject` (or pass `{ additionalProperties: true }`) to
33
52
  // opt into an open object; an explicit `options.additionalProperties` always wins over the default.
34
- object: (props, options) => fromTypeBox(Type.Object(unwrap(props), { additionalProperties: false, ...options })),
53
+ object: (props, options) => fromTypeBox(Type.Object(unwrap("t.object", props), { additionalProperties: false, ...options })),
35
54
  /** Like `t.object` but ACCEPTS (and passes through) unknown fields - the explicit opt-out of the
36
55
  * strict default. Prefer `t.object` unless you genuinely need an open object. */
37
- looseObject: (props, options) => fromTypeBox(Type.Object(unwrap(props), { additionalProperties: true, ...options })),
38
- array: (item, options) => fromTypeBox(Type.Array(item.jsonSchema, options)),
39
- /** Marks a property optional inside `t.object`; standalone it is `T | undefined`. */
40
- optional: (schema) => fromTypeBox(Type.Optional(schema.jsonSchema)),
56
+ looseObject: (props, options) => fromTypeBox(Type.Object(unwrap("t.looseObject", props), { additionalProperties: true, ...options })),
57
+ /**
58
+ * A list. A list of `t.file()` (from `@nifrajs/schema/form`) honors `minItems` / `maxItems` and is
59
+ * used inside `t.form`.
60
+ */
61
+ array: (item, options) => fileOps("t.array", item)?.array(item, options) ??
62
+ fromTypeBox(Type.Array(item.jsonSchema, options)),
63
+ /** Marks a property optional inside `t.object` / `t.form`; standalone it is `T | undefined`. */
64
+ optional: (schema) => {
65
+ const plain = () => fromTypeBox(Type.Optional(schema.jsonSchema));
66
+ return (fileOps("t.optional", schema)?.optional(schema) ??
67
+ plain());
68
+ },
41
69
  // `const S` captures the argument as a tuple; the explicit return type then maps
42
70
  // over that captured tuple (`S[K]["jsonSchema"]`) so the union's `Static` is
43
71
  // `A | B`, not `unknown` - the value-level `.map` can't preserve per-element
44
72
  // types, so the output type is derived from `S` and the result cast to match
45
73
  // (order/length are preserved by `map`, so the tuple shape is sound).
46
- union: (schemas) => fromTypeBox(Type.Union(schemas.map((schema) => schema.jsonSchema))),
47
- record: (value, options) => fromTypeBox(Type.Record(Type.String(), value.jsonSchema, options)),
74
+ union: (schemas) => fromTypeBox(Type.Union(schemas.map((schema) => {
75
+ refuseFile("t.union", schema.jsonSchema);
76
+ return schema.jsonSchema;
77
+ }))),
78
+ record: (value, options) => {
79
+ refuseFile("t.record", value.jsonSchema);
80
+ return fromTypeBox(Type.Record(Type.String(), value.jsonSchema, options));
81
+ },
48
82
  // Composed from TypeBox directly (not `t.object`/`t.array`) so the `t` literal doesn't reference
49
83
  // itself during inference. Cursor pagination - not OFFSET - is the production default: stable under
50
84
  // concurrent inserts and O(1) per page. Build pages with `paginate()` + `encodeCursor`/`decodeCursor`.
51
85
  /** A cursor-pagination response envelope: `{ items: T[]; nextCursor: string | null }` (`null` = last page). */
52
- paginated: (item, options) => fromTypeBox(Type.Object({
53
- items: Type.Array(item.jsonSchema),
54
- nextCursor: Type.Union([Type.String(), Type.Null()]),
55
- }, { additionalProperties: false, ...options })),
86
+ paginated: (item, options) => {
87
+ refuseFile("t.paginated", item.jsonSchema);
88
+ return fromTypeBox(Type.Object({
89
+ items: Type.Array(item.jsonSchema),
90
+ nextCursor: Type.Union([Type.String(), Type.Null()]),
91
+ }, { additionalProperties: false, ...options }));
92
+ },
56
93
  /** A request query schema for cursor pagination: `{ cursor?: string; limit?: number }`. `maxLimit`
57
94
  * caps `limit` - a larger value fails validation (a 422), so a client can't request an unbounded page.
58
95
  * `coerce` is on because query values arrive as strings (`?limit=20` → `"20"`); it's what makes `limit`
@@ -70,8 +107,39 @@ export const t = {
70
107
  * traffic appends params your schema never declares, causing 422s that never appear in dev/CI). Pass
71
108
  * `{ additionalProperties: false }` to enforce a strict allowlist. This is the query-slot constructor;
72
109
  * `t.object` stays the constructor for body slots (no coercion, a JSON body is already typed). */
73
- query: (props, options) => fromTypeBox(Type.Object(unwrap(props), { additionalProperties: true, ...options }), {
74
- coerce: true,
75
- }),
110
+ query: textFields("t.query"),
111
+ /** A request-cookie schema for the `cookies` route slot, with the same string->scalar COERCION as
112
+ * `t.query` (cookie values always arrive as strings). **Open by default**: a browser sends every
113
+ * cookie the site has set - analytics, consent, other routes' sessions - so a strict allowlist
114
+ * would 422 real traffic. Declare the cookies the route reads; the rest pass through. */
115
+ cookies: textFields("t.cookies"),
116
+ /**
117
+ * A loader value marked with `defer()`, streamed in after the shell. `inner` describes what the
118
+ * promise resolves to; `@nifrajs/web` projects and validates the resolved value by it before it
119
+ * streams, so a deferred value is held to the same output contract as the rest of the data.
120
+ */
121
+ deferred: (inner) => {
122
+ refuseFile("t.deferred", inner.jsonSchema);
123
+ if (!TypeRegistry.Has(DEFERRED_KIND))
124
+ TypeRegistry.Set(DEFERRED_KIND, isDeferredValue);
125
+ return fromTypeBox(Type.Unsafe({
126
+ [Kind]: DEFERRED_KIND,
127
+ "x-nifra-deferred": true,
128
+ inner: inner.jsonSchema,
129
+ [DEFERRED_VALIDATE]: inner["~standard"].validate,
130
+ }));
131
+ },
132
+ /**
133
+ * Allow a field with a sensitive name (`token`, `password`, `apiKey`, ...) in an output schema.
134
+ * An output schema that declares one without this fails at route load; `reason` records why this
135
+ * value may reach the browser, for the reviewer who finds it later.
136
+ */
137
+ declassified: (reason, schema) => {
138
+ if (typeof reason !== "string" || reason.trim() === "") {
139
+ throw new TypeError("t.declassified: give the reason this field may reach the browser");
140
+ }
141
+ refuseFile("t.declassified", schema.jsonSchema);
142
+ return fromTypeBox(CloneType(schema.jsonSchema, { "x-nifra-declassified": reason }));
143
+ },
76
144
  };
77
145
  //# sourceMappingURL=t.js.map
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": "3.3.0",
3
+ "version": "4.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",
@@ -16,6 +16,9 @@
16
16
  "standard-schema"
17
17
  ],
18
18
  "type": "module",
19
+ "nifra": {
20
+ "environment": "library"
21
+ },
19
22
  "main": "./dist/index.js",
20
23
  "module": "./dist/index.js",
21
24
  "types": "./dist/index.d.ts",
@@ -25,6 +28,11 @@
25
28
  "types": "./dist/index.d.ts",
26
29
  "default": "./dist/index.js"
27
30
  },
31
+ "./form": {
32
+ "bun": "./src/form.ts",
33
+ "types": "./dist/form.d.ts",
34
+ "default": "./dist/form.js"
35
+ },
28
36
  "./openapi": {
29
37
  "bun": "./src/openapi.ts",
30
38
  "types": "./dist/openapi.d.ts",
@@ -45,10 +53,11 @@
45
53
  "access": "public"
46
54
  },
47
55
  "dependencies": {
56
+ "@nifrajs/uploads": "4.0.0",
48
57
  "@sinclair/typebox": "^0.34.49"
49
58
  },
50
59
  "peerDependencies": {
51
- "@nifrajs/core": "^3.3.0"
60
+ "@nifrajs/core": "^4.0.0"
52
61
  },
53
62
  "devDependencies": {
54
63
  "@nifrajs/core": "workspace:*",