ts-pattern
Advanced tools
Comparing version 3.3.4-rc.1 to 3.3.4
@@ -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 {}; |
"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" | ||
} | ||
} |
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
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
0
77100
843