type-fest
Advanced tools
Comparing version 4.3.2 to 4.3.3
{ | ||
"name": "type-fest", | ||
"version": "4.3.2", | ||
"version": "4.3.3", | ||
"description": "A collection of essential TypeScript types", | ||
@@ -5,0 +5,0 @@ "license": "(MIT OR CC0-1.0)", |
@@ -264,1 +264,18 @@ import type {Primitive} from './primitive'; | ||
export type RequireNone<KeysType extends PropertyKey> = Partial<Record<KeysType, never>>; | ||
/** | ||
Returns a boolean for whether the given type is primitive value or primitive type. | ||
@example | ||
``` | ||
IsPrimitive<'string'> | ||
//=> true | ||
IsPrimitive<string> | ||
//=> true | ||
IsPrimitive<Object> | ||
//=> false | ||
``` | ||
*/ | ||
export type IsPrimitive<T> = [T] extends [Primitive] ? true : false; |
import type {Primitive} from './primitive'; | ||
import type {Numeric} from './numeric'; | ||
import type {IsNotFalse} from './internal'; | ||
import type {IsNotFalse, IsPrimitive} from './internal'; | ||
import type {IsNever} from './is-never'; | ||
@@ -253,2 +253,5 @@ | ||
*/ | ||
export type IsLiteral<T extends Primitive> = IsNotFalse<IsLiteralUnion<T>>; | ||
export type IsLiteral<T> = | ||
IsPrimitive<T> extends true | ||
? IsNotFalse<IsLiteralUnion<T>> | ||
: false; |
@@ -6,4 +6,6 @@ import type {JsonPrimitive, JsonValue} from './basic'; | ||
import type {IsNever} from './is-never'; | ||
import type {IsUnknown} from './is-unknown'; | ||
import type {NegativeInfinity, PositiveInfinity} from './numeric'; | ||
import type {TypedArray} from './typed-array'; | ||
import type {WritableDeep} from './writable-deep'; | ||
@@ -13,14 +15,12 @@ // Note: The return value has to be `any` and not `unknown` so it can match `void`. | ||
type FilterNonNever<T extends unknown[]> = T extends [infer F, ...infer R] | ||
? IsNever<F> extends true | ||
? FilterNonNever<R> | ||
: [F, ...FilterNonNever<R>] | ||
: IsNever<T[number]> extends true | ||
? [] | ||
: T; | ||
type NeverToNull<T> = IsNever<T> extends true ? null : T; | ||
// Handles tuples and arrays | ||
type JsonifyList<T extends unknown[]> = T extends [infer F, ...infer R] | ||
? FilterNonNever<[Jsonify<F>, ...JsonifyList<R>]> | ||
: Array<Jsonify<T[number]>>; | ||
type JsonifyList<T extends unknown[]> = T extends [] | ||
? [] | ||
: T extends [infer F, ...infer R] | ||
? [NeverToNull<Jsonify<F>>, ...JsonifyList<R>] | ||
: IsUnknown<T[number]> extends true | ||
? [] | ||
: Array<T[number] extends NotJsonable ? null : Jsonify<T[number]>>; | ||
@@ -121,8 +121,8 @@ type FilterJsonableKeys<T extends object> = { | ||
? [] | ||
: T extends [unknown, ...unknown[]] | ||
: T extends unknown[] | ||
? JsonifyList<T> | ||
: T extends ReadonlyArray<infer U> | ||
? Array<U extends NotJsonable ? null : Jsonify<U>> | ||
: T extends readonly unknown[] | ||
? JsonifyList<WritableDeep<T>> | ||
: T extends object | ||
? JsonifyObject<UndefinedToOptional<T>> // JsonifyObject recursive call for its children | ||
: never; // Otherwise any other non-object is removed |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
283975
6593