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 0.0.1 to 0.0.2

23

lib/index.d.ts

@@ -36,2 +36,3 @@ /**

declare type LeastUpperBound<a, b> = [a, b] extends [[infer aa, infer ab, infer ac, infer ad, infer ae], [infer ba, infer bb, infer bc, infer bd, infer be]] ? [LeastUpperBound<aa, ba>, LeastUpperBound<ab, bb>, LeastUpperBound<ac, bc>, LeastUpperBound<ad, bd>, LeastUpperBound<ae, be>] : [a, b] extends [[infer aa, infer ab, infer ac, infer ad], [infer ba, infer bb, infer bc, infer bd]] ? [LeastUpperBound<aa, ba>, LeastUpperBound<ab, bb>, LeastUpperBound<ac, bc>, LeastUpperBound<ad, bd>] : [a, b] extends [[infer aa, infer ab, infer ac], [infer ba, infer bb, infer bc]] ? [LeastUpperBound<aa, ba>, LeastUpperBound<ab, bb>, LeastUpperBound<ac, bc>] : [a, b] extends [[infer aa, infer ab], [infer ba, infer bb]] ? [LeastUpperBound<aa, ba>, LeastUpperBound<ab, bb>] : [a, b] extends [(infer aa)[], (infer ba)[]] ? LeastUpperBound<aa, ba>[] : [a, b] extends [Map<infer ak, infer av>, Map<infer bk, infer bv>] ? Map<LeastUpperBound<ak, bk>, LeastUpperBound<av, bv>> : [a, b] extends [Set<infer av>, Set<infer bv>] ? Set<LeastUpperBound<av, bv>> : b extends __ ? a : a extends __ ? b : b extends a ? b : a extends b ? a : never;
declare type MatchedValue<a, p extends Pattern<a>> = LeastUpperBound<a, InvertPattern<p>>;
/**

@@ -43,8 +44,22 @@ * ## match

export declare const match: <a, b>(value: a) => {
with: <p extends Pattern<a>>(pattern: p, f: Fun<LeastUpperBound<a, InvertPattern<p>>, b>) => any;
when: (predicate: Fun<a, unknown>, f: Fun<a, b>) => any;
withWhen: <p_1 extends Pattern<a>>(pattern: p_1, predicate: Fun<LeastUpperBound<a, InvertPattern<p_1>>, unknown>, f: Fun<LeastUpperBound<a, InvertPattern<p_1>>, b>) => any;
otherwise: (f: () => b) => any;
with: <p extends Pattern<a>>(pattern: p, f: Fun<LeastUpperBound<a, InvertPattern<p>>, b>) => Match<a, b>;
when: (predicate: Fun<a, unknown>, f: Fun<a, b>) => Match<a, b>;
withWhen: <p_1 extends Pattern<a>>(pattern: p_1, predicate: Fun<LeastUpperBound<a, InvertPattern<p_1>>, unknown>, f: Fun<LeastUpperBound<a, InvertPattern<p_1>>, b>) => Match<a, b>;
otherwise: (f: () => b) => Match<a, b>;
run: () => b;
};
/**
* ## builder
* This is the implementation of our pattern matching, using the
* builder pattern.
* This builder pattern is neat because we can have complexe type checking
* for each of the methods adding new behavior to our pattern matching.
*/
declare type Match<a, b> = {
with: <p extends Pattern<a>>(pattern: p, f: Fun<MatchedValue<a, p>, b>) => Match<a, b>;
when: (predicate: Fun<a, unknown>, f: Fun<a, b>) => Match<a, b>;
withWhen: <p extends Pattern<a>>(pattern: p, predicate: Fun<MatchedValue<a, p>, unknown>, f: Fun<MatchedValue<a, p>, b>) => Match<a, b>;
otherwise: (f: () => b) => Match<a, b>;
run: () => b;
};
export {};

7

lib/index.js

@@ -34,9 +34,2 @@ "use strict";

exports.match = function (value) { return builder(value, []); };
/**
* ## builder
* This is the implementation of our pattern matching, using the
* builder pattern.
* This builder pattern is neat because we can have complexe type checking
* for each of the methods adding new behavior to our pattern matching.
*/
var builder = function (value, patterns) { return ({

@@ -43,0 +36,0 @@ "with": function (pattern, f) {

{
"name": "ts-pattern",
"version": "0.0.1",
"version": "0.0.2",
"description": "Typescript pattern matching library",

@@ -5,0 +5,0 @@ "main": "lib/index.js",

@@ -148,2 +148,17 @@ /**

*/
type Match<a, b> = {
with: <p extends Pattern<a>>(
pattern: p,
f: Fun<MatchedValue<a, p>, b>
) => Match<a, b>;
when: (predicate: Fun<a, unknown>, f: Fun<a, b>) => Match<a, b>;
withWhen: <p extends Pattern<a>>(
pattern: p,
predicate: Fun<MatchedValue<a, p>, unknown>,
f: Fun<MatchedValue<a, p>, b>
) => Match<a, b>;
otherwise: (f: () => b) => Match<a, b>;
run: () => b;
};
const builder = <a, b>(

@@ -153,6 +168,9 @@ value: a,

) => ({
with: <p extends Pattern<a>>(pattern: p, f: Fun<MatchedValue<a, p>, b>) =>
with: <p extends Pattern<a>>(
pattern: p,
f: Fun<MatchedValue<a, p>, b>
): Match<a, b> =>
builder<a, b>(value, [...patterns, [matchPattern<a, p>(pattern), f]]),
when: (predicate: Fun<a, unknown>, f: Fun<a, b>) =>
when: (predicate: Fun<a, unknown>, f: Fun<a, b>): Match<a, b> =>
builder<a, b>(value, [...patterns, [predicate, f]]),

@@ -164,3 +182,3 @@

f: Fun<MatchedValue<a, p>, b>
) => {
): Match<a, b> => {
const doesMatch = (value: a) =>

@@ -171,3 +189,3 @@ Boolean(matchPattern<a, p>(pattern)(value) && predicate(value as any));

otherwise: (f: () => b) =>
otherwise: (f: () => b): Match<a, b> =>
builder<a, b>(value, [

@@ -174,0 +192,0 @@ ...patterns,

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