@sinclair/typebox 0.27.7 → 0.27.9

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/typebox.d.ts CHANGED
@@ -134,17 +134,13 @@ export interface TEnum<T extends Record<string, string | number> = Record<string
134
134
  anyOf: TLiteral<string | number>[];
135
135
  }
136
136
  export type TExtends<L extends TSchema, R extends TSchema, T extends TSchema, U extends TSchema> = (Static<L> extends Static<R> ? T : U) extends infer O ? UnionToTuple<O> extends [infer X, infer Y] ? TUnion<[Assert<X, TSchema>, Assert<Y, TSchema>]> : Assert<O, TSchema> : never;
137
- export type TExcludeTemplateLiteralResult<T extends string> = TUnionResult<Assert<UnionToTuple<{
138
- [K in T]: TLiteral<K>;
139
- }[T]>, TSchema[]>>;
137
+ export type TExcludeTemplateLiteralResult<T extends string> = TString;
140
138
  export type TExcludeTemplateLiteral<T extends TTemplateLiteral, U extends TSchema> = Exclude<Static<T>, Static<U>> extends infer S ? TExcludeTemplateLiteralResult<Assert<S, string>> : never;
141
139
  export type TExcludeArray<T extends TSchema[], U extends TSchema> = Assert<UnionToTuple<{
142
140
  [K in keyof T]: Static<Assert<T[K], TSchema>> extends Static<U> ? never : T[K];
143
141
  }[number]>, TSchema[]> extends infer R ? TUnionResult<Assert<R, TSchema[]>> : never;
144
142
  export type TExclude<T extends TSchema, U extends TSchema> = T extends TTemplateLiteral ? TExcludeTemplateLiteral<T, U> : T extends TUnion<infer S> ? TExcludeArray<S, U> : T extends U ? TNever : T;
145
- export type TExtractTemplateLiteralResult<T extends string> = TUnionResult<Assert<UnionToTuple<{
146
- [K in T]: TLiteral<K>;
147
- }[T]>, TSchema[]>>;
143
+ export type TExtractTemplateLiteralResult<T extends string> = TString;
148
144
  export type TExtractTemplateLiteral<T extends TTemplateLiteral, U extends TSchema> = Extract<Static<T>, Static<U>> extends infer S ? TExtractTemplateLiteralResult<Assert<S, string>> : never;
149
145
  export type TExtractArray<T extends TSchema[], U extends TSchema> = Assert<UnionToTuple<{
150
146
  [K in keyof T]: Static<Assert<T[K], TSchema>> extends Static<U> ? T[K] : never;
@@ -377,9 +373,7 @@ export type TUnionOfLiteralArray<T extends TLiteral<string>[]> = {
377
373
  }[number];
378
374
  export type TUnionOfLiteral<T extends TUnion<TLiteral<string>[]>> = TUnionOfLiteralArray<T['anyOf']>;
379
375
  export type TUnionResult<T extends TSchema[]> = T extends [] ? TNever : T extends [infer S] ? S : TUnion<T>;
380
- export type TUnionTemplateLiteral<T extends TTemplateLiteral, S extends string = Static<T>> = Ensure<TUnionResult<Assert<UnionToTuple<{
381
- [K in S]: TLiteral<K>;
382
- }[S]>, TLiteral[]>>>;
376
+ export type TUnionTemplateLiteral<T extends TTemplateLiteral, S extends string = Static<T>> = (string);
383
377
  export interface TUnion<T extends TSchema[] = TSchema[]> extends TSchema {
384
378
  [Kind]: 'Union';
385
379
  static: {
package/typebox.js CHANGED
@@ -1394,20 +1394,26 @@ var TypeClone;
1394
1394
  var ObjectMap;
1395
1395
  (function (ObjectMap) {
1396
1396
  function Intersect(schema, callback) {
1397
+ // prettier-ignore
1397
1398
  return exports.Type.Intersect(schema.allOf.map((inner) => Visit(inner, callback)), { ...schema });
1398
1399
  }
1399
1400
  function Union(schema, callback) {
1401
+ // prettier-ignore
1400
1402
  return exports.Type.Union(schema.anyOf.map((inner) => Visit(inner, callback)), { ...schema });
1401
1403
  }
1402
1404
  function Object(schema, callback) {
1403
1405
  return callback(schema);
1404
1406
  }
1405
1407
  function Visit(schema, callback) {
1406
- if (TypeGuard.TIntersect(schema))
1408
+ // There are cases where users need to map objects with unregistered kinds. Using a TypeGuard here would
1409
+ // prevent sub schema mapping as unregistered kinds will not pass TSchema checks. This is notable in the
1410
+ // case of TObject where unregistered property kinds cause the TObject check to fail. As mapping is only
1411
+ // used for composition, we use explicit checks instead.
1412
+ if (schema[exports.Kind] === 'Intersect')
1407
1413
  return Intersect(schema, callback);
1408
- if (TypeGuard.TUnion(schema))
1414
+ if (schema[exports.Kind] === 'Union')
1409
1415
  return Union(schema, callback);
1410
- if (TypeGuard.TObject(schema))
1416
+ if (schema[exports.Kind] === 'Object')
1411
1417
  return Object(schema, callback);
1412
1418
  return schema;
1413
1419
  }
package/value/convert.js CHANGED
@@ -140,7 +140,7 @@ var ValueConvert;
140
140
  return IsStringNumeric(value) ? globalThis.BigInt(parseInt(value)) : IsNumber(value) ? globalThis.BigInt(value | 0) : IsValueFalse(value) ? 0 : IsValueTrue(value) ? 1 : value;
141
141
  }
142
142
  function TryConvertString(value) {
143
- return IsValueToString(value) ? value.toString() : IsSymbol(value) && value.description !== undefined ? value.description.toString() : value;
143
+ return IsValueToString(value) ? value.toString() : value;
144
144
  }
145
145
  function TryConvertNumber(value) {
146
146
  return IsStringNumeric(value) ? parseFloat(value) : IsValueTrue(value) ? 1 : IsValueFalse(value) ? 0 : value;