@paulpopat/safe-type
Advanced tools
Comparing version 2.1.1 to 2.1.2
@@ -35,5 +35,8 @@ export declare type IsType<T> = T extends (arg: any) => arg is infer T ? T : never; | ||
export declare function Assert<T>(checker: Checker<T>, subject: any, message?: string): asserts subject is T; | ||
declare type TupleResult<T extends any[]> = { | ||
[K in keyof T]: (item: T[K]) => any; | ||
}; | ||
export declare function PatternMatch<T extends any[]>(...checkers: { | ||
[K in keyof T]: Checker<T[K]>; | ||
}): <TResult>(...handlers: { [K in keyof T]: (item: T[K]) => TResult; }) => (item: T[number]) => TResult; | ||
}): <TResult extends TupleResult<T>>(...handlers: TResult) => (item: T[number]) => ReturnType<TResult[number]>; | ||
export {}; |
{ | ||
"name": "@paulpopat/safe-type", | ||
"version": "2.1.1", | ||
"version": "2.1.2", | ||
"description": "Typesafety with strong inference", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
@@ -145,9 +145,9 @@ import { | ||
it("Matches on pattern", () => { | ||
expect( | ||
PatternMatch(IsString, IsNumber, IsBoolean)( | ||
(s) => s + "string", | ||
(n) => n + "number", | ||
(b) => b + "boolean" | ||
)("test") | ||
).toBe("teststring"); | ||
const pattern = PatternMatch(IsString, IsNumber, IsBoolean); | ||
const matcher = pattern( | ||
(s) => s + "string", | ||
(n) => n + "number", | ||
(b) => b + "boolean" | ||
); | ||
expect(matcher("test")).toBe("teststring"); | ||
}); | ||
@@ -154,0 +154,0 @@ |
@@ -175,9 +175,9 @@ export type IsType<T> = T extends (arg: any) => arg is infer T ? T : never; | ||
type TupleResult<T extends any[]> = { [K in keyof T]: (item: T[K]) => any }; | ||
export function PatternMatch<T extends any[]>( | ||
...checkers: { [K in keyof T]: Checker<T[K]> } | ||
) { | ||
return <TResult>( | ||
...handlers: { [K in keyof T]: (item: T[K]) => TResult } | ||
) => { | ||
return (item: T[number]) => { | ||
return <TResult extends TupleResult<T>>(...handlers: TResult) => { | ||
return (item: T[number]): ReturnType<TResult[number]> => { | ||
for (let i = 0; i < handlers.length; i++) { | ||
@@ -184,0 +184,0 @@ if (checkers[i](item)) { |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
20233
549
0