ts-pattern
Advanced tools
Comparing version 2.1.5 to 2.1.6
@@ -157,12 +157,16 @@ "use strict"; | ||
return !matchPattern(pattern['@ts-pattern/__pattern'])(value); | ||
if (isListPattern(pattern) && isArray(value)) | ||
return value.every(function (v) { return matchPattern(pattern[0])(v); }); | ||
if (isListPattern(pattern)) | ||
return isArray(value) | ||
? value.every(function (v) { return matchPattern(pattern[0])(v); }) | ||
: false; | ||
if (typeof pattern !== typeof value) | ||
return false; | ||
if (isArray(pattern) && isArray(value)) { | ||
return pattern.length === value.length | ||
if (isArray(pattern)) { | ||
return isArray(value) && pattern.length === value.length | ||
? pattern.every(function (subPattern, i) { return matchPattern(subPattern)(value[i]); }) | ||
: false; | ||
} | ||
if (value instanceof Map && pattern instanceof Map) { | ||
if (pattern instanceof Map) { | ||
if (!(value instanceof Map)) | ||
return false; | ||
return __spreadArray([], __read(pattern.keys())).every(function (key) { | ||
@@ -172,3 +176,5 @@ return matchPattern(pattern.get(key))(value.get(key)); | ||
} | ||
if (value instanceof Set && pattern instanceof Set) { | ||
if (pattern instanceof Set) { | ||
if (!(value instanceof Set)) | ||
return false; | ||
var patternValues = __spreadArray([], __read(pattern.values())); | ||
@@ -186,3 +192,5 @@ var allValues_1 = __spreadArray([], __read(value.values())); | ||
} | ||
if (isObject(value) && isObject(pattern)) { | ||
if (isObject(pattern)) { | ||
if (!isObject(value)) | ||
return false; | ||
return Object.keys(pattern).every(function (k) { | ||
@@ -189,0 +197,0 @@ // @ts-ignore |
@@ -12,3 +12,15 @@ import type { NotPattern, Primitives } from './Pattern'; | ||
*/ | ||
unknown extends b ? a : IsAny<a> extends true ? b : ExcludeIfContainsNever<b extends [] ? [] : b extends NotPattern<infer b1> ? Exclude<a, b1> : b extends (infer bItem)[] ? a extends (infer aItem)[] ? b extends [infer b1, infer b2, infer b3, infer b4, infer b5] ? a extends [infer a1, infer a2, infer a3, infer a4, infer a5] ? [ | ||
unknown extends b ? a : IsAny<a> extends true ? b : ExcludeIfContainsNever<b extends readonly [] ? [] : b extends NotPattern<infer b1> ? Exclude<a, b1> : b extends readonly (infer bItem)[] ? a extends readonly (infer aItem)[] ? b extends readonly [ | ||
infer b1, | ||
infer b2, | ||
infer b3, | ||
infer b4, | ||
infer b5 | ||
] ? a extends readonly [ | ||
infer a1, | ||
infer a2, | ||
infer a3, | ||
infer a4, | ||
infer a5 | ||
] ? [ | ||
ExtractPreciseValue<a1, b1>, | ||
@@ -19,3 +31,3 @@ ExtractPreciseValue<a2, b2>, | ||
ExtractPreciseValue<a5, b5> | ||
] : LeastUpperBound<a, b> : b extends [infer b1, infer b2, infer b3, infer b4] ? a extends [infer a1, infer a2, infer a3, infer a4] ? [ | ||
] : LeastUpperBound<a, b> : b extends readonly [infer b1, infer b2, infer b3, infer b4] ? a extends readonly [infer a1, infer a2, infer a3, infer a4] ? [ | ||
ExtractPreciseValue<a1, b1>, | ||
@@ -25,8 +37,8 @@ ExtractPreciseValue<a2, b2>, | ||
ExtractPreciseValue<a4, b4> | ||
] : LeastUpperBound<a, b> : b extends [infer b1, infer b2, infer b3] ? a extends [infer a1, infer a2, infer a3] ? [ | ||
] : LeastUpperBound<a, b> : b extends readonly [infer b1, infer b2, infer b3] ? a extends readonly [infer a1, infer a2, infer a3] ? [ | ||
ExtractPreciseValue<a1, b1>, | ||
ExtractPreciseValue<a2, b2>, | ||
ExtractPreciseValue<a3, b3> | ||
] : LeastUpperBound<a, b> : b extends [infer b1, infer b2] ? a extends [infer a1, infer a2] ? [ExtractPreciseValue<a1, b1>, ExtractPreciseValue<a2, b2>] : LeastUpperBound<a, b> : ExtractPreciseValue<aItem, bItem>[] : LeastUpperBound<a, b> : b extends Map<infer bk, infer bv> ? a extends Map<infer ak, infer av> ? Map<ExtractPreciseValue<ak, bk>, ExtractPreciseValue<av, bv>> : LeastUpperBound<a, b> : b extends Set<infer bv> ? a extends Set<infer av> ? Set<ExtractPreciseValue<av, bv>> : LeastUpperBound<a, b> : IsPlainObject<b> extends true ? a extends any[] | Set<any> | Map<any, any> | Primitives ? LeastUpperBound<a, b> : b extends a ? b : a extends b ? a : { | ||
] : LeastUpperBound<a, b> : b extends readonly [infer b1, infer b2] ? a extends readonly [infer a1, infer a2] ? [ExtractPreciseValue<a1, b1>, ExtractPreciseValue<a2, b2>] : LeastUpperBound<a, b> : ExtractPreciseValue<aItem, bItem>[] : LeastUpperBound<a, b> : b extends Map<infer bk, infer bv> ? a extends Map<infer ak, infer av> ? Map<ExtractPreciseValue<ak, bk>, ExtractPreciseValue<av, bv>> : LeastUpperBound<a, b> : b extends Set<infer bv> ? a extends Set<infer av> ? Set<ExtractPreciseValue<av, bv>> : LeastUpperBound<a, b> : IsPlainObject<b> extends true ? a extends any[] | Set<any> | Map<any, any> | Primitives ? LeastUpperBound<a, b> : b extends a ? b : a extends b ? a : { | ||
[k in keyof Required<a>]: k extends keyof b ? ExtractPreciseValue<a[k], b[k]> : a[k]; | ||
} : LeastUpperBound<a, b>>; |
@@ -9,3 +9,3 @@ import type { __ } from '../PatternType'; | ||
*/ | ||
export declare type InvertPattern<p> = p extends typeof __.number ? number : p extends typeof __.string ? string : p extends typeof __.boolean ? boolean : p extends SelectPattern<string> ? unknown : p extends typeof __ ? unknown : p extends GuardPattern<any, infer p1> ? p1 : p extends NotPattern<infer a1> ? NotPattern<InvertPattern<a1>> : p extends Primitives ? p : p extends (infer pp)[] ? p extends [infer p1, infer p2, infer p3, infer p4, infer p5] ? [ | ||
export declare type InvertPattern<p> = p extends typeof __.number ? number : p extends typeof __.string ? string : p extends typeof __.boolean ? boolean : p extends SelectPattern<string> ? unknown : p extends typeof __ ? unknown : p extends GuardPattern<any, infer p1> ? p1 : p extends NotPattern<infer a1> ? NotPattern<InvertPattern<a1>> : p extends Primitives ? p : p extends readonly (infer pp)[] ? p extends readonly [infer p1, infer p2, infer p3, infer p4, infer p5] ? [ | ||
InvertPattern<p1>, | ||
@@ -16,3 +16,3 @@ InvertPattern<p2>, | ||
InvertPattern<p5> | ||
] : p extends [infer p1, infer p2, infer p3, infer p4] ? [ | ||
] : p extends readonly [infer p1, infer p2, infer p3, infer p4] ? [ | ||
InvertPattern<p1>, | ||
@@ -22,3 +22,3 @@ InvertPattern<p2>, | ||
InvertPattern<p4> | ||
] : p extends [infer p1, infer p2, infer p3] ? [InvertPattern<p1>, InvertPattern<p2>, InvertPattern<p3>] : p extends [infer p1, infer p2] ? [InvertPattern<p1>, InvertPattern<p2>] : InvertPattern<pp>[] : p extends Map<infer pk, infer pv> ? Map<pk, InvertPattern<pv>> : p extends Set<infer pv> ? Set<InvertPattern<pv>> : IsPlainObject<p> extends true ? { | ||
] : p extends readonly [infer p1, infer p2, infer p3] ? [InvertPattern<p1>, InvertPattern<p2>, InvertPattern<p3>] : p extends readonly [infer p1, infer p2] ? [InvertPattern<p1>, InvertPattern<p2>] : InvertPattern<pp>[] : p extends Map<infer pk, infer pv> ? Map<pk, InvertPattern<pv>> : p extends Set<infer pv> ? Set<InvertPattern<pv>> : IsPlainObject<p> extends true ? { | ||
[k in keyof p]: InvertPattern<p[k]>; | ||
@@ -35,3 +35,3 @@ } : p; | ||
*/ | ||
export declare type InvertNotPattern<p, i> = p extends NotPattern<infer p1> ? Exclude<i, p1> : p extends (infer pp)[] ? i extends (infer ii)[] ? p extends [infer p1, infer p2, infer p3, infer p4, infer p5] ? i extends [infer i1, infer i2, infer i3, infer i4, infer i5] ? [ | ||
export declare type InvertNotPattern<p, i> = p extends NotPattern<infer p1> ? Exclude<i, p1> : p extends readonly (infer pp)[] ? i extends readonly (infer ii)[] ? p extends readonly [infer p1, infer p2, infer p3, infer p4, infer p5] ? i extends readonly [infer i1, infer i2, infer i3, infer i4, infer i5] ? [ | ||
InvertNotPattern<p1, i1>, | ||
@@ -42,3 +42,3 @@ InvertNotPattern<p2, i2>, | ||
InvertNotPattern<p5, i5> | ||
] : p : p extends [infer p1, infer p2, infer p3, infer p4] ? i extends [infer i1, infer i2, infer i3, infer i4] ? [ | ||
] : p : p extends readonly [infer p1, infer p2, infer p3, infer p4] ? i extends readonly [infer i1, infer i2, infer i3, infer i4] ? [ | ||
InvertNotPattern<p1, i1>, | ||
@@ -48,8 +48,8 @@ InvertNotPattern<p2, i2>, | ||
InvertNotPattern<p4, i4> | ||
] : p : p extends [infer p1, infer p2, infer p3] ? i extends [infer i1, infer i2, infer i3] ? [ | ||
] : p : p extends readonly [infer p1, infer p2, infer p3] ? i extends readonly [infer i1, infer i2, infer i3] ? [ | ||
InvertNotPattern<p1, i1>, | ||
InvertNotPattern<p2, i2>, | ||
InvertNotPattern<p3, i3> | ||
] : p : p extends [infer p1, infer p2] ? i extends [infer i1, infer i2] ? [InvertNotPattern<p1, i1>, InvertNotPattern<p2, i2>] : p : InvertNotPattern<pp, ii>[] : p : p extends Map<infer pk, infer pv> ? i extends Map<any, infer iv> ? Map<pk, InvertNotPattern<pv, iv>> : p : p extends Set<infer pv> ? i extends Set<infer iv> ? Set<InvertNotPattern<pv, iv>> : p : IsPlainObject<p> extends true ? IsPlainObject<i> extends true ? { | ||
] : p : p extends readonly [infer p1, infer p2] ? i extends readonly [infer i1, infer i2] ? [InvertNotPattern<p1, i1>, InvertNotPattern<p2, i2>] : p : InvertNotPattern<pp, ii>[] : p : p extends Map<infer pk, infer pv> ? i extends Map<any, infer iv> ? Map<pk, InvertNotPattern<pv, iv>> : p : p extends Set<infer pv> ? i extends Set<infer iv> ? Set<InvertNotPattern<pv, iv>> : p : IsPlainObject<p> extends true ? IsPlainObject<i> extends true ? { | ||
[k in keyof p]: k extends keyof i ? InvertNotPattern<p[k], i[k]> : p[k]; | ||
} : p : p; |
@@ -37,4 +37,4 @@ import type { __, PatternType } from '../PatternType'; | ||
*/ | ||
export declare type Pattern<a> = typeof __ | SelectPattern<string> | GuardPattern<a> | NotPattern<a | any> | WildCardPattern<a> | (a extends Primitives ? a : a extends (infer b)[] ? a extends [infer b, infer c, infer d, infer e, infer f] ? [Pattern<b>, Pattern<c>, Pattern<d>, Pattern<e>, Pattern<f>] : a extends [infer b, infer c, infer d, infer e] ? [Pattern<b>, Pattern<c>, Pattern<d>, Pattern<e>] : a extends [infer b, infer c, infer d] ? [Pattern<b>, Pattern<c>, Pattern<d>] : a extends [infer b, infer c] ? [Pattern<b>, Pattern<c>] : [] | [Pattern<b>] | [Pattern<b>, Pattern<b>] | [Pattern<b>, Pattern<b>, Pattern<b>] | [Pattern<b>, Pattern<b>, Pattern<b>, Pattern<b>] | [Pattern<b>, Pattern<b>, Pattern<b>, Pattern<b>, Pattern<b>] : a extends Map<infer k, infer v> ? Map<k, Pattern<v>> : a extends Set<infer v> ? Set<Pattern<v>> : IsPlainObject<a> extends true ? { | ||
[k in keyof a]?: Pattern<a[k]>; | ||
export declare type Pattern<a> = typeof __ | SelectPattern<string> | GuardPattern<a> | NotPattern<a | any> | WildCardPattern<a> | (a extends Primitives ? a : a extends (infer b)[] ? a extends [infer b, infer c, infer d, infer e, infer f] ? readonly [Pattern<b>, Pattern<c>, Pattern<d>, Pattern<e>, Pattern<f>] : a extends [infer b, infer c, infer d, infer e] ? readonly [Pattern<b>, Pattern<c>, Pattern<d>, Pattern<e>] : a extends [infer b, infer c, infer d] ? readonly [Pattern<b>, Pattern<c>, Pattern<d>] : a extends [infer b, infer c] ? readonly [Pattern<b>, Pattern<c>] : [] | [Pattern<b>] | [Pattern<b>, Pattern<b>] | [Pattern<b>, Pattern<b>, Pattern<b>] | [Pattern<b>, Pattern<b>, Pattern<b>, Pattern<b>] | [Pattern<b>, Pattern<b>, Pattern<b>, Pattern<b>, Pattern<b>] : a extends Map<infer k, infer v> ? Map<k, Pattern<v>> : a extends Set<infer v> ? Set<Pattern<v>> : IsPlainObject<a> extends true ? { | ||
readonly [k in keyof a]?: Pattern<a[k]>; | ||
} : a); | ||
@@ -45,3 +45,3 @@ /** | ||
*/ | ||
export declare type ExhaustivePattern<a> = typeof __ | SelectPattern<string> | NotPattern<a | any> | WildCardPattern<a> | (a extends Primitives ? a : a extends (infer b)[] ? a extends [infer b, infer c, infer d, infer e, infer f] ? [ | ||
export declare type ExhaustivePattern<a> = typeof __ | SelectPattern<string> | NotPattern<a | any> | WildCardPattern<a> | (a extends Primitives ? a : a extends readonly (infer b)[] ? a extends readonly [infer b, infer c, infer d, infer e, infer f] ? readonly [ | ||
ExhaustivePattern<b>, | ||
@@ -52,3 +52,3 @@ ExhaustivePattern<c>, | ||
ExhaustivePattern<f> | ||
] : a extends [infer b, infer c, infer d, infer e] ? [ | ||
] : a extends readonly [infer b, infer c, infer d, infer e] ? readonly [ | ||
ExhaustivePattern<b>, | ||
@@ -58,16 +58,24 @@ ExhaustivePattern<c>, | ||
ExhaustivePattern<e> | ||
] : a extends [infer b, infer c, infer d] ? [ExhaustivePattern<b>, ExhaustivePattern<c>, ExhaustivePattern<d>] : a extends [infer b, infer c] ? [ExhaustivePattern<b>, ExhaustivePattern<c>] : [] | [ExhaustivePattern<b>] | [ExhaustivePattern<b>, ExhaustivePattern<b>] | [ExhaustivePattern<b>, ExhaustivePattern<b>, ExhaustivePattern<b>] | [ | ||
] : a extends readonly [infer b, infer c, infer d] ? readonly [ | ||
ExhaustivePattern<b>, | ||
ExhaustivePattern<c>, | ||
ExhaustivePattern<d> | ||
] : a extends readonly [infer b, infer c] ? readonly [ExhaustivePattern<b>, ExhaustivePattern<c>] : readonly [] | readonly [ExhaustivePattern<b>] | readonly [ExhaustivePattern<b>, ExhaustivePattern<b>] | readonly [ | ||
ExhaustivePattern<b>, | ||
ExhaustivePattern<b>, | ||
ExhaustivePattern<b> | ||
] | [ | ||
] | readonly [ | ||
ExhaustivePattern<b>, | ||
ExhaustivePattern<b>, | ||
ExhaustivePattern<b>, | ||
ExhaustivePattern<b> | ||
] | readonly [ | ||
ExhaustivePattern<b>, | ||
ExhaustivePattern<b>, | ||
ExhaustivePattern<b>, | ||
ExhaustivePattern<b>, | ||
ExhaustivePattern<b> | ||
] : a extends Map<infer k, infer v> ? Map<k, ExhaustivePattern<v>> : a extends Set<infer v> ? Set<ExhaustivePattern<v>> : IsPlainObject<a> extends true ? { | ||
[k in keyof a]?: ExhaustivePattern<a[k]>; | ||
readonly [k in keyof a]?: ExhaustivePattern<a[k]>; | ||
} : a); | ||
export {}; |
{ | ||
"name": "ts-pattern", | ||
"version": "2.1.5", | ||
"version": "2.1.6", | ||
"description": "Typescript pattern matching library", | ||
@@ -5,0 +5,0 @@ "main": "lib/index.js", |
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
63771
890