ts-pattern
Advanced tools
Comparing version 2.1.4 to 2.2.1-next.0
@@ -58,19 +58,28 @@ "use strict"; | ||
*/ | ||
var builder = function (value, patterns) { return ({ | ||
"with": function (pattern) { | ||
var builder = function (value, cases) { return ({ | ||
"with": function () { | ||
var args = []; | ||
for (var _i = 1; _i < arguments.length; _i++) { | ||
args[_i - 1] = arguments[_i]; | ||
for (var _i = 0; _i < arguments.length; _i++) { | ||
args[_i] = arguments[_i]; | ||
} | ||
var _a = __read(args | ||
.slice(0, -1) | ||
.reduce(function (_a, arg) { | ||
var _b = __read(_a, 2), patterns = _b[0], predicates = _b[1]; | ||
return typeof arg === 'function' | ||
? [patterns, __spreadArray(__spreadArray([], __read(predicates)), [arg])] | ||
: [__spreadArray(__spreadArray([], __read(patterns)), [arg]), predicates]; | ||
}, [[], []]), 2), patterns = _a[0], predicates = _a[1]; | ||
var handler = args[args.length - 1]; | ||
var predicates = args.slice(0, -1); | ||
var doesMatch = function (value) { | ||
return Boolean(matchPattern(pattern)(value) && | ||
return Boolean(patterns.some(function (pattern) { return matchPattern(pattern)(value); }) && | ||
predicates.every(function (predicate) { return predicate(value); })); | ||
}; | ||
return builder(value, __spreadArray(__spreadArray([], __read(patterns)), [ | ||
return builder(value, __spreadArray(__spreadArray([], __read(cases)), [ | ||
{ | ||
test: doesMatch, | ||
handler: handler, | ||
select: selectWithPattern(pattern) | ||
select: function (value) { | ||
return patterns.length === 1 ? selectWithPattern(patterns[0])(value) : {}; | ||
} | ||
}, | ||
@@ -80,3 +89,3 @@ ])); | ||
when: function (predicate, handler) { | ||
return builder(value, __spreadArray(__spreadArray([], __read(patterns)), [ | ||
return builder(value, __spreadArray(__spreadArray([], __read(cases)), [ | ||
{ | ||
@@ -90,3 +99,3 @@ test: predicate, | ||
otherwise: function (handler) { | ||
return builder(value, __spreadArray(__spreadArray([], __read(patterns)), [ | ||
return builder(value, __spreadArray(__spreadArray([], __read(cases)), [ | ||
{ | ||
@@ -100,3 +109,3 @@ test: matchPattern(PatternType_1.__), | ||
run: function () { | ||
var entry = patterns.find(function (_a) { | ||
var entry = cases.find(function (_a) { | ||
var test = _a.test; | ||
@@ -123,3 +132,3 @@ return test(value); | ||
**/ | ||
exhaustive: function () { return builder(value, patterns); } | ||
exhaustive: function () { return builder(value, cases); } | ||
}); }; | ||
@@ -126,0 +135,0 @@ var isObject = function (value) { |
import { DistributeMatchingUnions } from './DistributeUnions'; | ||
import { UnionToTuple } from './helpers'; | ||
export declare type DeepExclude<a, b> = Exclude<DistributeMatchingUnions<a, b>, b>; | ||
export declare type ReduceDeepExclude<a, xs> = xs extends [infer head, ...infer tail] ? ReduceDeepExclude<DeepExclude<a, head>, tail> : a; | ||
export declare type DeepExcludeMany<a, b> = ReduceDeepExclude<a, UnionToTuple<b>>; |
import type { Pattern, GuardValue, ExhaustivePattern } from './Pattern'; | ||
import type { ExtractPreciseValue } from './ExtractPreciseValue'; | ||
import type { InvertNotPattern, InvertPattern } from './InvertPattern'; | ||
import type { DeepExclude } from './DeepExclude'; | ||
import type { DeepExclude, DeepExcludeMany } from './DeepExclude'; | ||
import type { WithDefault } from './helpers'; | ||
@@ -21,2 +21,3 @@ import type { FindSelected } from './FindSelected'; | ||
with<p extends Pattern<i>, c, invpattern = InvertPattern<p>, value = MatchedValue<i, invpattern>>(pattern: p, handler: (value: value, selections: FindSelected<value, p>) => PickReturnValue<o, c>): Match<i, PickReturnValue<o, c>>; | ||
with<ps extends [ExhaustivePattern<i>, ...ExhaustivePattern<i>[]], c, p = ps[number], value = p extends any ? MatchedValue<i, InvertPattern<p>> : never>(...args: [...patterns: ps, handler: (value: value) => PickReturnValue<o, c>]): Match<i, PickReturnValue<o, c>>; | ||
with<pat extends Pattern<i>, pred extends (value: MatchedValue<i, InvertPattern<pat>>) => unknown, c>(pattern: pat, predicate: pred, handler: (value: GuardValue<pred>, selections: FindSelected<i, pat>) => PickReturnValue<o, c>): Match<i, PickReturnValue<o, c>>; | ||
@@ -68,2 +69,3 @@ with<pat extends Pattern<i>, pred extends (value: MatchedValue<i, InvertPattern<pat>>) => unknown, pred2 extends (value: GuardValue<pred>) => unknown, c>(pattern: pat, predicate: pred, predicate2: pred2, handler: (value: GuardValue<pred2>, selections: FindSelected<i, pat>) => PickReturnValue<o, c>): Match<i, PickReturnValue<o, c>>; | ||
with<p extends ExhaustivePattern<i>, c, invpattern = InvertPattern<p>, value = MatchedValue<i, invpattern>>(pattern: p, handler: (value: value, selections: FindSelected<value, p>) => PickReturnValue<o, c>): ExhaustiveMatch<DeepExclude<distributedInput, InvertNotPattern<invpattern, value>>, i, PickReturnValue<o, c>>; | ||
with<ps extends [ExhaustivePattern<i>, ...ExhaustivePattern<i>[]], c, p = ps[number], value = p extends any ? MatchedValue<i, InvertPattern<p>> : never>(...args: [...patterns: ps, handler: (value: value) => PickReturnValue<o, c>]): ExhaustiveMatch<DeepExcludeMany<distributedInput, p extends any ? InvertNotPattern<InvertPattern<p>, value> : never>, i, PickReturnValue<o, c>>; | ||
/** | ||
@@ -70,0 +72,0 @@ * ### Match.otherwise |
{ | ||
"name": "ts-pattern", | ||
"version": "2.1.4", | ||
"version": "2.2.1-next.0", | ||
"description": "Typescript pattern matching library", | ||
@@ -41,3 +41,3 @@ "main": "lib/index.js", | ||
"jest": "^26.6.3", | ||
"prettier": "^2.0.5", | ||
"prettier": "^2.2.1", | ||
"rimraf": "^3.0.2", | ||
@@ -44,0 +44,0 @@ "ts-jest": "^26.4.4", |
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
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
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
64606
878
1