diff --git a/node-validator/node-validator-tests.ts b/node-validator/node-validator-tests.ts
new file mode 100644
index 000000000..8f45c1685
--- /dev/null
+++ b/node-validator/node-validator-tests.ts
@@ -0,0 +1,23 @@
+///
+
+import { run, isObject, isString, isIsoDate, isArray } from 'node-validator';
+
+let checkChild = isObject()
+ .withRequired('prop', isString({ regex: /^[abc]+$/ }));
+
+let check = isObject()
+ .withRequired('_id', isString({ regex: /^[abc]+$/ }))
+ .withOptional('date', isIsoDate())
+ .withOptional('children', isArray(checkChild, {min: 1}));
+
+let toValidate = {
+ _id: 'abababa',
+ date: '2013-10-24',
+ children: [{
+ prop: 'zxzx'
+ }]
+};
+
+run(check, toValidate, function(errorCount, errors) {
+
+});
diff --git a/node-validator/node-validator.d.ts b/node-validator/node-validator.d.ts
new file mode 100644
index 000000000..90684a9dc
--- /dev/null
+++ b/node-validator/node-validator.d.ts
@@ -0,0 +1,64 @@
+// Type definitions for node-validator
+// Project: https://www.npmjs.com/package/node-validator
+// Definitions by: Ken Gorab
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+declare module ValidatorOptions {
+ interface IsStringOptions {
+ regex?: RegExp,
+ message?: String
+ }
+
+ interface IsNumberOptions {
+ min?: Number,
+ max?: Number
+ }
+
+ interface IsDateOptions {
+ format?: String,
+ message?: String
+ }
+
+ type Options = IsStringOptions | IsNumberOptions | IsDateOptions;
+}
+
+declare module Validator {
+ type ValidateFn = (value: any, onError: (message: String, childName: String, childValie: any) => void) => void;
+
+ interface Validatable {
+ validate: ValidateFn
+ }
+
+ interface IsObjectValidator extends Validatable {
+ withRequired: (name: String, validator: Validatable) => IsObjectValidator,
+ withOptional: (name: String, validator: Validatable) => IsObjectValidator,
+ custom: (customValidator: Validatable) => IsObjectValidator,
+ validate: ValidateFn
+ }
+
+ function express(validator: Validatable): any;
+ function bodyValidator(validator: Validatable): any;
+ function expressParams(validator: Validatable): any;
+ function paramsValidator(validator: Validatable): any;
+ function expressQuery(validator: Validatable): any;
+ function queryValidator(validator: Validatable): any;
+
+ function run(validator: Validatable, value: any, callback: (errorCount: Number, errors: Array) => void): void;
+
+ function isObject(): IsObjectValidator;
+ function isString(options?: ValidatorOptions.IsStringOptions): Validatable;
+ function isStringOrNull(options?: ValidatorOptions.IsStringOptions): Validatable;
+ function isBoolean(): Validatable;
+ function isNumber(options?: ValidatorOptions.IsNumberOptions): Validatable;
+ function isInteger(options?: ValidatorOptions.IsNumberOptions): Validatable;
+ function isDate(options?: ValidatorOptions.IsDateOptions): Validatable;
+ function isIsoDate(options?: ValidatorOptions.IsDateOptions): Validatable;
+ function isIsoDateTime(options?: ValidatorOptions.IsDateOptions): Validatable;
+
+ function isArray(validator?: Validatable, options?: ValidatorOptions.Options): Validatable;
+ function isAnyObject(): IsObjectValidator;
+}
+
+declare module 'node-validator' {
+ export = Validator;
+}