/** * JSONSchema Validator - Validates JavaScript objects using JSON Schemas * (http://www.json.com/json-schema-proposal/) * * Copyright (c) 2007 Kris Zyp SitePen (www.sitepen.com) * Licensed under the MIT (MIT-LICENSE.txt) license. To use the validator call JSONSchema.validate with an instance object and an optional schema object. If a schema is provided, it will be used to validate. If the instance object refers to a schema (self-validating), that schema will be used to validate and the schema parameter is not necessary (if both exist, both validations will occur). The validate method will return an array of validation errors. If there are no errors, then an empty list will be returned. A validation error will have two properties: "property" which indicates which property had the error "message" which indicates what the error was */ define("preview/jsonSchema",[],function(){var e={validate:function(e,t){return this._validate(e,t,!1)},checkPropertyChange:function(e,t,n){return this._validate(e,t,n||"property")},_validate:function(e,t,n){function i(e,t,o,u){function f(e){r.push({property:o,message:e})}function l(e,t){if(e){if(!(typeof e!="string"||e=="any"||(e=="null"?t===null:typeof t==e)||t instanceof Array&&e=="array"||e=="integer"&&t%1===0))return[{property:o,message:typeof t+" value found, but a "+e+" is required"}];if(e instanceof Array){var n=[];for(var s=0;st.maxItems&&f("There must be a maximum of "+t.maxItems+" in the array")}else t.properties&&r.concat(s(e,t.properties,o,t.additionalProperties));t.pattern&&typeof e=="string"&&!e.match(t.pattern)&&f("does not match the regex pattern "+t.pattern),t.maxLength&&typeof e=="string"&&e.length>t.maxLength&&f("may only be "+t.maxLength+" characters long"),t.minLength&&typeof e=="string"&&e.lengthe&&f("must have a minimum value of "+t.minimum),typeof t.maximum!==undefined&&typeof e==typeof t.maximum&&t.maximum