Skip to content

Commit abc7e1d

Browse files
committed
Merge branch 'release/0.3.0'
2 parents aa719dd + 3f937d8 commit abc7e1d

3 files changed

Lines changed: 25 additions & 2 deletions

File tree

lib/index.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,21 @@ export function validate<T>(arg: any, validator: Validator<T>): Validated<T> {
2626
}
2727

2828

29+
export function extendValidator<T,U>(validator1: Validator<T>, validator2: Validator<U>): Validator<T & U> {
30+
let result: any = {};
31+
32+
for (let key in validator1) {
33+
result[key] = validator1[key];
34+
}
35+
36+
for (let key in validator2) {
37+
result[key] = validator2[key];
38+
}
39+
40+
return result as Validator<T & U>;
41+
}
42+
43+
2944
export function assertThat<T>(name: string, assertion: (arg: any) => T): (arg: any) => T {
3045
return (arg: any) => {
3146
try {
@@ -48,6 +63,14 @@ export function optional<T>(next: (arg: any) => T): (arg: any) => T | undefined
4863
}
4964

5065

66+
export function nullable<T>(next: (arg: any) => T): (arg: any) => T | null {
67+
return (arg: any) => {
68+
if (arg === null) return null;
69+
return next(arg);
70+
};
71+
}
72+
73+
5174
export function defaultsTo(def: any): (arg: any) => any;
5275
export function defaultsTo<T>(def: T, next: (arg: any) => T): (arg: any) => T;
5376
export function defaultsTo(def: any, next?: (arg: any) => any): (arg: any) => any {

package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "validate-interface",
3-
"version": "0.2.2",
3+
"version": "0.3.0",
44
"description": "Validate Objects Against TypeScript Interfaces",
55
"main": "dist/index.js",
66
"types": "dist/index.d.ts",

0 commit comments

Comments
 (0)