mirror of
https://github.com/zhigang1992/DefinitelyTyped.git
synced 2026-04-24 05:06:02 +08:00
174 lines
5.0 KiB
TypeScript
174 lines
5.0 KiB
TypeScript
import tv4 = require("tv4");
|
|
var str:string;
|
|
var strArr:string[];
|
|
var bool:boolean;
|
|
var num:number;
|
|
var obj:any;
|
|
var validator: tv4.TV4;
|
|
var err:tv4.ValidationError;
|
|
var errs:tv4.ValidationError[];
|
|
var single:tv4.SingleResult;
|
|
var multi:tv4.MultiResult;
|
|
|
|
single = validator.validateResult(obj, obj);
|
|
bool = single.valid;
|
|
strArr = single.missing;
|
|
err = single.error;
|
|
|
|
num = err.code;
|
|
str = err.message;
|
|
str = err.dataPath;
|
|
str = err.schemaPath;
|
|
|
|
multi = validator.validateMultiple(obj, obj);
|
|
bool = multi.valid;
|
|
strArr = multi.missing;
|
|
errs = multi.errors;
|
|
|
|
validator.addSchema(str, obj);
|
|
obj = validator.getSchema(str);
|
|
str = validator.resolveUrl(str, str);
|
|
|
|
validator = validator.freshApi();
|
|
validator.dropSchemas();
|
|
validator.reset();
|
|
|
|
strArr = validator.getMissingUris(/abc/);
|
|
strArr = validator.getSchemaUris(/abc/);
|
|
obj = validator.getSchemaMap()[str];
|
|
num = validator.errorCodes['bla'];
|
|
|
|
num = validator.errorCodes['MY_NAME'];
|
|
|
|
|
|
// Here are all the examples from the v1.2.3 documentation at https://www.npmjs.com/package/validator
|
|
var data = '';
|
|
var schema : tv4.JsonSchema = {type: "string"}
|
|
var valid = validator.validate(data, schema);
|
|
var url = 'http://example.com/schema';
|
|
validator.addSchema(url, schema);
|
|
var singleErrorResult = validator.validateResult(data, schema);
|
|
var multiErrorResult = validator.validateMultiple(data, schema);
|
|
// async
|
|
validator.validate(data, schema, function (isValid, validationError) {});
|
|
|
|
// checkRecursive
|
|
var a : tv4.JsonSchema = {};
|
|
var b = { a: a };
|
|
a['b'] = b;
|
|
var aSchema : tv4.JsonSchema = { properties: { b: { $ref: 'bSchema' }}};
|
|
var bSchema : tv4.JsonSchema = { properties: { a: { $ref: 'aSchema' }}};
|
|
validator.addSchema('aSchema', aSchema);
|
|
validator.addSchema('bSchema', bSchema);
|
|
validator.validate(a, aSchema, true);
|
|
validator.validateResult(data, aSchema, true);
|
|
validator.validateMultiple(data, aSchema, true);
|
|
|
|
|
|
// banUnknownProperties
|
|
var checkRecursive = true;
|
|
validator.validate(data, schema, checkRecursive, true);
|
|
validator.validateResult(data, schema, checkRecursive, true);
|
|
validator.validateMultiple(data, schema, checkRecursive, true);
|
|
|
|
// API
|
|
validator.addSchema('http://example.com/schema', {});
|
|
validator.addSchema({});
|
|
var schema = validator.getSchema('http://example.com/schema');
|
|
var map = validator.getSchemaMap();
|
|
var schema = map[uri];
|
|
var arr = validator.getSchemaUris();
|
|
// optional filter using a RegExp
|
|
arr = validator.getSchemaUris(/^https?:\/\/example.com/);
|
|
var arr = validator.getMissingUris();
|
|
// optional filter using a RegExp
|
|
var arr = validator.getMissingUris(/^https?:\/\/example.com/);
|
|
validator.dropSchemas();
|
|
var other_tv4 = validator.freshApi();
|
|
validator.reset();
|
|
validator.setErrorReporter(function (error, data, schema) {
|
|
return "Error code: " + error.code;
|
|
});
|
|
validator.language('en-gb');
|
|
validator.addLanguage('fr', {});
|
|
validator.language('fr')
|
|
validator.addFormat('decimal-digits', function (data, schema) {
|
|
if (typeof data === 'string' && !/^[0-9]+$/.test(data)) {
|
|
return null;
|
|
}
|
|
return "must be string of decimal digits";
|
|
});
|
|
validator.addFormat({
|
|
'my-format': function (data: any, schema: any): string {return null;},
|
|
'other-format': function (data: any, schema: any): string {return 'oops';}
|
|
});
|
|
function simpleFailure() {return true;}
|
|
function detailedFailure() {return true;}
|
|
validator.defineKeyword('my-custom-keyword', function (data, value, schema) {
|
|
if (simpleFailure()) {
|
|
return "Failure";
|
|
} else if (detailedFailure()) {
|
|
return {code: validator.errorCodes['MY_CUSTOM_CODE'], message: {param1: 'a', param2: 'b'}};
|
|
} else {
|
|
return null;
|
|
}
|
|
});
|
|
|
|
|
|
// Demos
|
|
schema = {
|
|
"items": {
|
|
"type": "boolean"
|
|
}
|
|
};
|
|
{
|
|
let data1 = [true, false];
|
|
let data2 = [true, 123];
|
|
alert("data 1: " + validator.validate(data1, schema)); // true
|
|
alert("data 2: " + validator.validate(data2, schema)); // false
|
|
alert("data 2 error: " + JSON.stringify(validator.error, null, 4));
|
|
|
|
schema = {
|
|
"type": "array",
|
|
"items": {"$ref": "#"}
|
|
};
|
|
}
|
|
{
|
|
let data1 : any = [[], [[]]];
|
|
let data2 : any = [[], [true, []]];
|
|
alert("data 1: " + validator.validate(data1, schema)); // true
|
|
alert("data 2: " + validator.validate(data2, schema)); // false
|
|
}
|
|
|
|
{
|
|
schema = {
|
|
"type": "array",
|
|
"items": {"$ref": "http://example.com/schema" }
|
|
};
|
|
let data = [1, 2, 3];
|
|
alert("Valid: " + validator.validate(data, schema)); // true
|
|
alert("Missing schemas: " + JSON.stringify(validator.missing));
|
|
}
|
|
{
|
|
validator.addSchema("http://example.com/schema", {
|
|
"definitions": {
|
|
"arrayItem": {"type": "boolean"}
|
|
}
|
|
});
|
|
let schema : tv4.JsonSchema = {
|
|
"type": "array",
|
|
"items": {"$ref": "http://example.com/schema#/definitions/arrayItem" }
|
|
};
|
|
let data1 : any = [true, false, true];
|
|
let data2 : any = [1, 2, 3];
|
|
alert("data 1: " + validator.validate(data1, schema)); // true
|
|
alert("data 2: " + validator.validate(data2, schema)); // false
|
|
}
|
|
|
|
// undocumented functions
|
|
var uri = '';
|
|
obj = validator.normSchema(schema, uri);
|
|
|
|
|
|
|