@effect/match
Advanced tools
Comparing version 0.19.0 to 0.19.1
@@ -264,9 +264,6 @@ /** | ||
} : A; | ||
type PatternBase<A> = A extends Array<infer _T> ? any : A extends Record<string, any> ? Partial<{ | ||
[K in keyof A]: PatternPrimitive<A[K]> | InnerPattern<A[K]>; | ||
}> : A; | ||
type PatternBase<A> = A extends ReadonlyArray<infer _T> ? any : A extends Record<string, any> ? Partial<{ | ||
[K in keyof A]: PatternPrimitive<A[K]> | PatternBase<A[K]>; | ||
}> : never; | ||
type PatternPrimitive<A> = PredicateA<A> | A | SafeSchema<any>; | ||
type InnerPattern<A> = A extends Array<infer _T> ? any : A extends Record<string, any> ? Partial<{ | ||
[K in keyof A]: InnerPattern<A[K]> | PatternPrimitive<A[K]>; | ||
}> : never; | ||
type RemoveInvalidPatterns<P> = ValidPattern<P> extends true ? P : never; | ||
@@ -273,0 +270,0 @@ type ValidPattern<P, Checked = never> = P extends SafeSchema<any> ? false : P extends Array<infer R> ? [R] extends [Checked] ? true : ValidPattern<R, Checked | R> : P extends Record<string, any> ? [ |
@@ -1,2 +0,2 @@ | ||
export type ExtractMatch<I, P> = [ReplaceUnions<I, P>] extends [infer EI] ? Extract<EI, P> : never; | ||
export type ExtractMatch<I, P> = [ExtractAndNarrow<I, P>] extends [infer EI] ? EI : never; | ||
type IntersectOf<U extends unknown> = (U extends unknown ? (k: U) => void : never) extends (k: infer I) => void ? I : never; | ||
@@ -16,4 +16,2 @@ type Last<U extends any> = IntersectOf<U extends unknown ? (x: U) => void : never> extends (x: infer P) => void ? P : never; | ||
type MaybeReplace<I, P> = [P] extends [I] ? P : [I] extends [P] ? Replace<I, P> : Fail; | ||
type FlattenRecordFails<R, D = Fail> = Extract<R[Extract<keyof R, string>], Fail> extends never ? R : D; | ||
type FlattenUnionFails<U> = [U] extends [Fail] ? Fail : Exclude<U, Fail>; | ||
type BuiltInObjects = Function | Date | RegExp | Generator | { | ||
@@ -23,8 +21,13 @@ readonly [Symbol.toStringTag]: string; | ||
type IsPlainObject<T> = T extends BuiltInObjects ? false : T extends Record<string, any> ? true : false; | ||
type ReplaceUnions<I, P> = unknown extends P ? I : IsUnion<I> extends true ? ListOf<I> extends infer L ? L extends Array<any> ? FlattenUnionFails<{ | ||
[K in keyof L]: L[K] extends Array<I> ? L[K] : ReplaceUnions<L[K], P>; | ||
}[number]> : never : never : IsPlainObject<I> extends true ? FlattenRecordFails<{ | ||
[RK in keyof I]-?: RK extends keyof P ? ReplaceUnions<I[RK], P[RK]> : I[RK]; | ||
}> : MaybeReplace<I, P>; | ||
type ExtractAndNarrow<I, P> = unknown extends P ? I : IsUnion<I> extends true ? ListOf<I> extends infer L ? L extends Array<any> ? Exclude<{ | ||
[K in keyof L]: ExtractAndNarrow<L[K], P>; | ||
}[number], Fail> : never : never : I extends ReadonlyArray<any> ? P extends Readonly<I> ? P : never : IsPlainObject<I> extends true ? string extends keyof I ? I extends P ? I : never : symbol extends keyof I ? I extends P ? I : never : { | ||
[RK in keyof I]-?: RK extends keyof P ? ExtractAndNarrow<I[RK], P[RK]> : I[RK]; | ||
} extends infer R ? [keyof P] extends [keyof RemoveFails<R>] ? R : never : never : MaybeReplace<I, P>; | ||
type RemoveFails<A> = { | ||
[K in keyof A]: A[K] extends Fail ? never : K; | ||
}[keyof A] extends infer K ? [K] extends [keyof A] ? { | ||
[RK in K]: A[RK]; | ||
} : never : never; | ||
export {}; | ||
//# sourceMappingURL=ExtractMatch.d.ts.map |
{ | ||
"name": "@effect/match", | ||
"version": "0.19.0", | ||
"version": "0.19.1", | ||
"license": "MIT", | ||
@@ -5,0 +5,0 @@ "repository": { |
@@ -506,20 +506,12 @@ /** | ||
type PatternBase<A> = A extends Array<infer _T> | ||
type PatternBase<A> = A extends ReadonlyArray<infer _T> | ||
? any // TODO: improve array inference | ||
: A extends Record<string, any> | ||
? Partial<{ | ||
[K in keyof A]: PatternPrimitive<A[K]> | InnerPattern<A[K]> | ||
[K in keyof A]: PatternPrimitive<A[K]> | PatternBase<A[K]> | ||
}> | ||
: A | ||
: never | ||
type PatternPrimitive<A> = PredicateA<A> | A | SafeSchema<any> | ||
type InnerPattern<A> = A extends Array<infer _T> | ||
? any // TODO: improve array inference | ||
: A extends Record<string, any> | ||
? Partial<{ | ||
[K in keyof A]: InnerPattern<A[K]> | PatternPrimitive<A[K]> | ||
}> | ||
: never | ||
type RemoveInvalidPatterns<P> = ValidPattern<P> extends true ? P : never | ||
@@ -526,0 +518,0 @@ |
/* eslint-disable @typescript-eslint/no-unnecessary-type-constraint */ | ||
export type ExtractMatch<I, P> = [ReplaceUnions<I, P>] extends [infer EI] | ||
? Extract<EI, P> | ||
export type ExtractMatch<I, P> = [ExtractAndNarrow<I, P>] extends [infer EI] | ||
? EI | ||
: never | ||
@@ -53,10 +53,2 @@ | ||
type FlattenRecordFails<R, D = Fail> = Extract< | ||
R[Extract<keyof R, string>], | ||
Fail | ||
> extends never | ||
? R | ||
: D | ||
type FlattenUnionFails<U> = [U] extends [Fail] ? Fail : Exclude<U, Fail> | ||
type BuiltInObjects = | ||
@@ -75,3 +67,3 @@ | Function | ||
type ReplaceUnions<I, P> = | ||
type ExtractAndNarrow<I, P> = | ||
// unknown is a wildcard pattern | ||
@@ -83,17 +75,35 @@ unknown extends P | ||
? L extends Array<any> | ||
? FlattenUnionFails< | ||
{ | ||
[K in keyof L]: L[K] extends Array<I> | ||
? L[K] | ||
: ReplaceUnions<L[K], P> | ||
}[number] | ||
> | ||
? Exclude<{ [K in keyof L]: ExtractAndNarrow<L[K], P> }[number], Fail> | ||
: never | ||
: never | ||
: I extends ReadonlyArray<any> | ||
? P extends Readonly<I> | ||
? P | ||
: never | ||
: IsPlainObject<I> extends true | ||
? FlattenRecordFails<{ | ||
[RK in keyof I]-?: RK extends keyof P | ||
? ReplaceUnions<I[RK], P[RK]> | ||
: I[RK] | ||
}> | ||
? string extends keyof I | ||
? I extends P | ||
? I | ||
: never | ||
: symbol extends keyof I | ||
? I extends P | ||
? I | ||
: never | ||
: { | ||
[RK in keyof I]-?: RK extends keyof P | ||
? ExtractAndNarrow<I[RK], P[RK]> | ||
: I[RK] | ||
} extends infer R | ||
? [keyof P] extends [keyof RemoveFails<R>] | ||
? R | ||
: never | ||
: never | ||
: MaybeReplace<I, P> | ||
type RemoveFails<A> = { | ||
[K in keyof A]: A[K] extends Fail ? never : K | ||
}[keyof A] extends infer K | ||
? [K] extends [keyof A] | ||
? { [RK in K]: A[RK] } | ||
: never | ||
: never |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
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
1998
105843