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 3.3.4-rc.1 to 3.3.4

5

lib/guards.d.ts

@@ -1,9 +0,8 @@

import { AnonymousSelectPattern, GuardFunction, GuardPattern, NamedSelectPattern, NotPattern, Pattern } from './types/Pattern';
import { AnonymousSelectPattern, GuardFunction, GuardPattern, SelectPattern, NotPattern, Pattern } from './types/Pattern';
export declare const when: <a, b extends a = never>(predicate: GuardFunction<a, b>) => GuardPattern<a, b>;
export declare const not: <a>(pattern: Pattern<a>) => NotPattern<a>;
export declare const ANONYMOUS_SELECT_KEY = "@ts-pattern/__anonymous-select-key";
export declare function select(): AnonymousSelectPattern;
export declare function select<k extends string>(key: k): NamedSelectPattern<k>;
export declare function select<k extends string>(key: k): SelectPattern<k>;
declare type AnyConstructor = new (...args: any[]) => any;
export declare const instanceOf: <T extends AnyConstructor>(classConstructor: T) => GuardPattern<unknown, InstanceType<T>>;
export {};

10

lib/guards.js
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.instanceOf = exports.select = exports.ANONYMOUS_SELECT_KEY = exports.not = exports.when = void 0;
exports.instanceOf = exports.select = exports.not = exports.when = void 0;
const symbols = require("./symbols");

@@ -15,11 +15,11 @@ const when = (predicate) => ({

exports.not = not;
exports.ANONYMOUS_SELECT_KEY = '@ts-pattern/__anonymous-select-key';
function select(key) {
return key === undefined
? {
[symbols.PatternKind]: symbols.AnonymousSelect,
[symbols.PatternKind]: symbols.Select,
[symbols.Select]: symbols.AnonymousSelectKey,
}
: {
[symbols.PatternKind]: symbols.NamedSelect,
[symbols.NamedSelect]: key,
[symbols.PatternKind]: symbols.Select,
[symbols.Select]: key,
};

@@ -26,0 +26,0 @@ }

@@ -65,4 +65,4 @@ "use strict";

select: (value) => Object.keys(selected).length
? selected[guards_1.ANONYMOUS_SELECT_KEY] !== undefined
? selected[guards_1.ANONYMOUS_SELECT_KEY]
? symbols.AnonymousSelectKey in selected
? selected[symbols.AnonymousSelectKey]
: selected

@@ -100,10 +100,6 @@ : value,

};
const isNamedSelectPattern = (x) => {
const isSelectPattern = (x) => {
const pattern = x;
return pattern && pattern[symbols.PatternKind] === symbols.NamedSelect;
return pattern && pattern[symbols.PatternKind] === symbols.Select;
};
const isAnonymousSelectPattern = (x) => {
const pattern = x;
return pattern && pattern[symbols.PatternKind] === symbols.AnonymousSelect;
};
// tells us if the value matches a given pattern.

@@ -114,10 +110,6 @@ const matchPattern = (pattern, value, select) => {

return Boolean(pattern[symbols.Guard](value));
if (isNamedSelectPattern(pattern)) {
select(pattern[symbols.NamedSelect], value);
if (isSelectPattern(pattern)) {
select(pattern[symbols.Select], value);
return true;
}
if (isAnonymousSelectPattern(pattern)) {
select(guards_1.ANONYMOUS_SELECT_KEY, value);
return true;
}
if (isNotPattern(pattern))

@@ -124,0 +116,0 @@ return !matchPattern(pattern[symbols.Not], value, select);

@@ -25,6 +25,5 @@ /**

/** @internal This symbol should only be used by ts-pattern's internals. */
export declare const NamedSelect: unique symbol;
export declare type NamedSelect = typeof NamedSelect;
/** @internal This symbol should only be used by ts-pattern's internals. */
export declare const AnonymousSelect: unique symbol;
export declare type AnonymousSelect = typeof AnonymousSelect;
export declare const Select: unique symbol;
export declare type Select = typeof Select;
export declare const AnonymousSelectKey = "@ts-pattern/__anonymous-select-key";
export declare type AnonymousSelectKey = typeof AnonymousSelectKey;

@@ -17,3 +17,3 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.AnonymousSelect = exports.NamedSelect = exports.Not = exports.Guard = exports.PatternKind = void 0;
exports.AnonymousSelectKey = exports.Select = exports.Not = exports.Guard = exports.PatternKind = void 0;
/** @internal This symbol should only be used by ts-pattern's internals. */

@@ -26,4 +26,3 @@ exports.PatternKind = Symbol('@ts-pattern/pattern-kind');

/** @internal This symbol should only be used by ts-pattern's internals. */
exports.NamedSelect = Symbol('@ts-pattern/named-select');
/** @internal This symbol should only be used by ts-pattern's internals. */
exports.AnonymousSelect = Symbol('@ts-pattern/anonymous-select');
exports.Select = Symbol('@ts-pattern/select');
exports.AnonymousSelectKey = '@ts-pattern/__anonymous-select-key';
import type * as symbols from '../symbols';
import type { Cast, IsAny, UnionToIntersection } from './helpers';
import type { NamedSelectPattern, AnonymousSelectPattern } from './Pattern';
export declare type FindSelectionUnion<i, p, path extends any[] = []> = IsAny<i> extends true ? never : p extends NamedSelectPattern<infer k> ? {
import type { SelectPattern } from './Pattern';
export declare type FindSelectionUnion<i, p, path extends any[] = []> = IsAny<i> extends true ? never : p extends SelectPattern<infer k> ? {
[kk in k]: [i, path];
} : p extends AnonymousSelectPattern ? {
[kk in symbols.AnonymousSelect]: [i, path];
} : p extends readonly (infer pp)[] ? i extends readonly (infer ii)[] ? [i, p] extends [

@@ -37,5 +35,5 @@ readonly [infer i1, infer i2, infer i3, infer i4, infer i5],

} & a;
declare type SelectionToArgs<selections extends Record<string, [unknown, unknown]>, i> = [keyof selections] extends [never] ? i : symbols.AnonymousSelect extends keyof selections ? [
selections[symbols.AnonymousSelect][1]
] extends [never] ? SeveralAnonymousSelectError : keyof selections extends symbols.AnonymousSelect ? selections[symbols.AnonymousSelect][0] : MixedNamedAndAnonymousSelectError : {
declare type SelectionToArgs<selections extends Record<string, [unknown, unknown]>, i> = [keyof selections] extends [never] ? i : symbols.AnonymousSelectKey extends keyof selections ? [
selections[symbols.AnonymousSelectKey][1]
] extends [never] ? SeveralAnonymousSelectError : keyof selections extends symbols.AnonymousSelectKey ? selections[symbols.AnonymousSelectKey][0] : MixedNamedAndAnonymousSelectError : {
[k in keyof selections]: selections[k][0];

@@ -42,0 +40,0 @@ };

import { IsPlainObject, Primitives, IsLiteral } from './helpers';
import type { NamedSelectPattern, AnonymousSelectPattern, GuardPattern, NotPattern } from './Pattern';
import type { SelectPattern, GuardPattern, NotPattern } from './Pattern';
/**

@@ -8,3 +8,3 @@ * ### InvertPattern

*/
export declare type InvertPattern<p> = p extends NamedSelectPattern<any> | AnonymousSelectPattern ? unknown : p extends GuardPattern<infer p1, infer p2> ? [p2] extends [never] ? p1 : p2 : 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] ? [
export declare type InvertPattern<p> = p extends SelectPattern<any> ? unknown : p extends GuardPattern<infer p1, infer p2> ? [p2] extends [never] ? p1 : p2 : 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>,

@@ -26,3 +26,3 @@ InvertPattern<p2>,

*/
export declare type InvertPatternForExclude<p, i> = p extends NotPattern<infer p1> ? Exclude<i, p1> : p extends NamedSelectPattern<any> | AnonymousSelectPattern ? unknown : p extends GuardPattern<any, infer p1> ? p1 : p extends Primitives ? IsLiteral<p> extends true ? p : IsLiteral<i> extends true ? p : never : 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] ? [
export declare type InvertPatternForExclude<p, i> = p extends NotPattern<infer p1> ? Exclude<i, p1> : p extends SelectPattern<any> ? unknown : p extends GuardPattern<any, infer p1> ? p1 : p extends Primitives ? IsLiteral<p> extends true ? p : IsLiteral<i> extends true ? p : never : 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] ? [
InvertPatternForExclude<p1, i1>,

@@ -29,0 +29,0 @@ InvertPatternForExclude<p2, i2>,

@@ -20,11 +20,8 @@ import type * as symbols from '../symbols';

};
export declare type AnonymousSelectPattern = {
export declare type AnonymousSelectPattern = SelectPattern<symbols.AnonymousSelectKey>;
export declare type SelectPattern<k extends string> = {
/** @internal This property should only be used by ts-pattern's internals. */
[symbols.PatternKind]: symbols.AnonymousSelect;
};
export declare type NamedSelectPattern<k extends string> = {
[symbols.PatternKind]: symbols.Select;
/** @internal This property should only be used by ts-pattern's internals. */
[symbols.PatternKind]: symbols.NamedSelect;
/** @internal This property should only be used by ts-pattern's internals. */
[symbols.NamedSelect]: k;
[symbols.Select]: k;
};

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

*/
export declare type Pattern<a> = AnonymousSelectPattern | NamedSelectPattern<string> | GuardPattern<a, a> | NotPattern<a | any> | (a extends Primitives ? a : a extends readonly (infer i)[] ? a extends readonly [infer a1, infer a2, infer a3, infer a4, infer a5] ? readonly [
export declare type Pattern<a> = SelectPattern<string> | GuardPattern<a, a> | NotPattern<a | any> | (a extends Primitives ? a : a extends readonly (infer i)[] ? a extends readonly [infer a1, infer a2, infer a3, infer a4, infer a5] ? readonly [
Pattern<a1>,

@@ -39,0 +36,0 @@ Pattern<a2>,

{
"name": "ts-pattern",
"version": "3.3.4-rc.1",
"version": "3.3.4",
"description": " The exhaustive Pattern Matching library for TypeScript.",

@@ -38,8 +38,8 @@ "main": "lib/index.js",

"@types/jest": "^27.0.2",
"jest": "^27.2.1",
"jest": "^27.4.5",
"prettier": "^2.2.1",
"rimraf": "^3.0.2",
"ts-jest": "^27.0.5",
"typescript": "^4.4.2"
"ts-jest": "^27.1.2",
"typescript": "^4.5.4"
}
}
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