Socket
Socket
Sign inDemoInstall

ts-pattern

Package Overview
Dependencies
Maintainers
1
Versions
151
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ts-pattern - npm Package Compare versions

Comparing version 2.1.3 to 2.1.4

19

lib/index.js

@@ -18,5 +18,6 @@ "use strict";

};
var __spread = (this && this.__spread) || function () {
for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
return ar;
var __spreadArray = (this && this.__spreadArray) || function (to, from) {
for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
to[j] = from[i];
return to;
};

@@ -70,3 +71,3 @@ exports.__esModule = true;

};
return builder(value, __spread(patterns, [
return builder(value, __spreadArray(__spreadArray([], __read(patterns)), [
{

@@ -80,3 +81,3 @@ test: doesMatch,

when: function (predicate, handler) {
return builder(value, __spread(patterns, [
return builder(value, __spreadArray(__spreadArray([], __read(patterns)), [
{

@@ -90,3 +91,3 @@ test: predicate,

otherwise: function (handler) {
return builder(value, __spread(patterns, [
return builder(value, __spreadArray(__spreadArray([], __read(patterns)), [
{

@@ -170,3 +171,3 @@ test: matchPattern(PatternType_1.__),

if (value instanceof Map && pattern instanceof Map) {
return __spread(pattern.keys()).every(function (key) {
return __spreadArray([], __read(pattern.keys())).every(function (key) {
return matchPattern(pattern.get(key))(value.get(key));

@@ -176,4 +177,4 @@ });

if (value instanceof Set && pattern instanceof Set) {
var patternValues = __spread(pattern.values());
var allValues_1 = __spread(value.values());
var patternValues = __spreadArray([], __read(pattern.values()));
var allValues_1 = __spreadArray([], __read(value.values()));
return patternValues.length === 0

@@ -180,0 +181,0 @@ ? allValues_1.length === 0

import type { NotPattern, Primitives } from './Pattern';
import type { ExcludeIfContainsNever, IsPlainObject, LeastUpperBound } from './helpers';
import type { ExcludeIfContainsNever, IsAny, IsPlainObject, LeastUpperBound } from './helpers';
export declare type ExtractPreciseValue<a, b> =

@@ -12,3 +12,3 @@ /**

*/
unknown extends b ? a : 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 [] ? [] : 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] ? [
ExtractPreciseValue<a1, b1>,

@@ -15,0 +15,0 @@ ExtractPreciseValue<a2, b2>,

@@ -0,9 +1,50 @@

import type { Compute, IsPlainObject, UnionToIntersection, ValueOf } from './helpers';
import type { SelectPattern } from './Pattern';
import type { ValueOf } from './helpers';
export declare type FindSelected<i, p> = p extends SelectPattern<infer Key> ? {
declare type FindSelectionUnion<i, p> = p extends SelectPattern<infer Key> ? {
[k in Key]: i;
} : [i, p] extends [(infer i2)[], [infer p2]] ? FindSelected<i2, p2> extends infer selected ? {
} : [i, p] extends [(infer ii)[], (infer pp)[]] ? [i, p] extends [
[
infer i1,
infer i2,
infer i3,
infer i4,
infer i5
],
[
infer p1,
infer p2,
infer p3,
infer p4,
infer p5
]
] ? FindSelectionUnion<i1, p1> | FindSelectionUnion<i2, p2> | FindSelectionUnion<i3, p3> | FindSelectionUnion<i4, p4> | FindSelectionUnion<i5, p5> : [i, p] extends [
[
infer i1,
infer i2,
infer i3,
infer i4
],
[
infer p1,
infer p2,
infer p3,
infer p4
]
] ? FindSelectionUnion<i1, p1> | FindSelectionUnion<i2, p2> | FindSelectionUnion<i3, p3> | FindSelectionUnion<i4, p4> : [i, p] extends [
[
infer i1,
infer i2,
infer i3
],
[
infer p1,
infer p2,
infer p3
]
] ? FindSelectionUnion<i1, p1> | FindSelectionUnion<i2, p2> | FindSelectionUnion<i3, p3> : [i, p] extends [[infer i1, infer i2], [infer p1, infer p2]] ? FindSelectionUnion<i1, p1> | FindSelectionUnion<i2, p2> : FindSelectionUnion<ii, pp> extends infer selected ? {
[k in keyof selected]: selected[k][];
} : never : [i, p] extends [object, object] ? ValueOf<{
[k in keyof i & keyof p]: FindSelected<i[k], p[k]>;
} : never : [IsPlainObject<i>, IsPlainObject<p>] extends [true, true] ? ValueOf<{
[k in keyof i & keyof p]: FindSelectionUnion<i[k], p[k]>;
}> : never;
export declare type FindSelected<i, p> = Compute<UnionToIntersection<FindSelectionUnion<i, p>>>;
export {};

@@ -5,6 +5,5 @@ import type { Pattern, GuardValue, ExhaustivePattern } from './Pattern';

import type { DeepExclude } from './DeepExclude';
import type { UnionToIntersection, WithDefault } from './helpers';
import type { WithDefault } from './helpers';
import type { FindSelected } from './FindSelected';
export declare type MatchedValue<a, invpattern> = WithDefault<ExtractPreciseValue<a, invpattern>, a>;
export declare type ExtractSelections<a, p> = UnionToIntersection<FindSelected<a, p>>;
export declare type Unset = '@ts-pattern/unset';

@@ -22,6 +21,6 @@ export declare type PickReturnValue<a, b> = a extends Unset ? b : a;

**/
with<p extends Pattern<i>, c, invpattern = InvertPattern<p>, value = MatchedValue<i, invpattern>>(pattern: p, handler: (value: value, selections: ExtractSelections<value, p>) => 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: ExtractSelections<i, pat>) => PickReturnValue<o, c>): Match<i, PickReturnValue<o, c>>;
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: ExtractSelections<i, pat>) => PickReturnValue<o, c>): Match<i, PickReturnValue<o, c>>;
with<pat extends Pattern<i>, pred extends (value: MatchedValue<i, InvertPattern<pat>>) => unknown, pred2 extends (value: GuardValue<pred>) => unknown, pred3 extends (value: GuardValue<pred2>) => unknown, c>(pattern: pat, predicate: pred, predicate2: pred2, predicate3: pred3, handler: (value: GuardValue<pred3>, selections: ExtractSelections<i, pat>) => PickReturnValue<o, c>): Match<i, PickReturnValue<o, c>>;
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<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>>;
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<pat extends Pattern<i>, pred extends (value: MatchedValue<i, InvertPattern<pat>>) => unknown, pred2 extends (value: GuardValue<pred>) => unknown, pred3 extends (value: GuardValue<pred2>) => unknown, c>(pattern: pat, predicate: pred, predicate2: pred2, predicate3: pred3, handler: (value: GuardValue<pred3>, selections: FindSelected<i, pat>) => PickReturnValue<o, c>): Match<i, PickReturnValue<o, c>>;
/**

@@ -69,3 +68,3 @@ * ### Match.when

**/
with<p extends ExhaustivePattern<i>, c, invpattern = InvertPattern<p>, value = MatchedValue<i, invpattern>>(pattern: p, handler: (value: value, selections: ExtractSelections<value, p>) => PickReturnValue<o, c>): ExhaustiveMatch<DeepExclude<distributedInput, InvertNotPattern<invpattern, value>>, 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>>;
/**

@@ -72,0 +71,0 @@ * ### Match.otherwise

{
"name": "ts-pattern",
"version": "2.1.3",
"version": "2.1.4",
"description": "Typescript pattern matching library",

@@ -44,4 +44,4 @@ "main": "lib/index.js",

"ts-jest": "^26.4.4",
"typescript": "^4.1.2"
"typescript": "^4.2.2"
}
}

@@ -95,8 +95,8 @@ <h1 align="center">ts-pattern</h1>

- [Basic Demo](https://codesandbox.io/s/ts-pattern-examples-0s6d8?file=/src/examples/basic.ts)
- [Basic Demo](https://codesandbox.io/s/ts-pattern-examples-0s6d8?file=/src/examples/basic.tsx)
- [Reducer Demo (with React)](https://codesandbox.io/s/ts-pattern-reducer-example-c4yuq?file=/src/App.tsx)
- [Untyped Input (API response) Demo](https://codesandbox.io/s/ts-pattern-examples-0s6d8?file=/src/examples/api.ts)
- [`when` Guard Demo](https://codesandbox.io/s/ts-pattern-examples-0s6d8?file=/src/examples/when.ts)
- [`not` Pattern Demo](https://codesandbox.io/s/ts-pattern-examples-0s6d8?file=/src/examples/not.ts)
- [`select` Pattern Demo](https://codesandbox.io/s/ts-pattern-examples-0s6d8?file=/src/examples/not.ts)
- [Untyped Input (API response) Demo](https://codesandbox.io/s/ts-pattern-examples-0s6d8?file=/src/examples/api.tsx)
- [`when` Guard Demo](https://codesandbox.io/s/ts-pattern-examples-0s6d8?file=/src/examples/when.tsx)
- [`not` Pattern Demo](https://codesandbox.io/s/ts-pattern-examples-0s6d8?file=/src/examples/not.tsx)
- [`select` Pattern Demo](https://codesandbox.io/s/ts-pattern-examples-0s6d8?file=/src/examples/not.tsx)

@@ -103,0 +103,0 @@ ## Getting Started

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc