made with requirebin
Created
March 11, 2016 08:54
-
-
Save magopian/53ca1b95c14cccc6f5f9 to your computer and use it in GitHub Desktop.
requirebin sketch
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// require() some stuff from npm (like you were using browserify) | |
// and then hit Run Code to run it on the right | |
var Validator = require('jsonschema').Validator; | |
var v = new Validator(); | |
var schema = { "allOf" : [ | |
{"type": "boolean"}, | |
{"type": "string"} | |
]} | |
console.log(v.validate("foobar", schema)); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){"use strict";var helpers=require("./helpers");var ValidatorResult=helpers.ValidatorResult;var SchemaError=helpers.SchemaError;var attribute={};attribute.ignoreProperties={id:true,"default":true,description:true,title:true,exclusiveMinimum:true,exclusiveMaximum:true,additionalItems:true,$schema:true,$ref:true,"extends":true};var validators=attribute.validators={};validators.type=function validateType(instance,schema,options,ctx){if(instance===undefined){return null}var result=new ValidatorResult(instance,schema,options,ctx);var types=schema.type instanceof Array?schema.type:[schema.type];if(!types.some(this.testType.bind(this,instance,schema,options,ctx))){var list=types.map(function(v){return v.id&&"<"+v.id+">"||v+""});result.addError({name:"type",argument:list,message:"is not of a type(s) "+list})}return result};function testSchema(instance,options,ctx,schema){return this.validateSchema(instance,schema,options,ctx).valid}validators.anyOf=function validateAnyOf(instance,schema,options,ctx){if(instance===undefined){return null}var result=new ValidatorResult(instance,schema,options,ctx);if(!(schema.anyOf instanceof Array)){throw new SchemaError("anyOf must be an array")}if(!schema.anyOf.some(testSchema.bind(this,instance,options,ctx))){var list=schema.anyOf.map(function(v,i){return v.id&&"<"+v.id+">"||v.title&&JSON.stringify(v.title)||v["$ref"]&&"<"+v["$ref"]+">"||"[subschema "+i+"]"});result.addError({name:"anyOf",argument:list,message:"is not any of "+list.join(",")})}return result};validators.allOf=function validateAllOf(instance,schema,options,ctx){if(instance===undefined){return null}if(!(schema.allOf instanceof Array)){throw new SchemaError("allOf must be an array")}var result=new ValidatorResult(instance,schema,options,ctx);var self=this;schema.allOf.forEach(function(v,i){var valid=self.validateSchema(instance,v,options,ctx);if(!valid.valid){var msg=v.id&&"<"+v.id+">"||v.title&&JSON.stringify(v.title)||v["$ref"]&&"<"+v["$ref"]+">"||"[subschema "+i+"]";result.addError({name:"allOf",argument:{id:msg,length:valid.errors.length,valid:valid},message:"does not match allOf schema "+msg+" with "+valid.errors.length+" error[s]:"});result.importErrors(valid)}});return result};validators.oneOf=function validateOneOf(instance,schema,options,ctx){if(instance===undefined){return null}if(!(schema.oneOf instanceof Array)){throw new SchemaError("oneOf must be an array")}var result=new ValidatorResult(instance,schema,options,ctx);var count=schema.oneOf.filter(testSchema.bind(this,instance,options,ctx)).length;var list=schema.oneOf.map(function(v,i){return v.id&&"<"+v.id+">"||v.title&&JSON.stringify(v.title)||v["$ref"]&&"<"+v["$ref"]+">"||"[subschema "+i+"]"});if(count!==1){result.addError({name:"oneOf",argument:list,message:"is not exactly one from "+list.join(",")})}return result};validators.properties=function validateProperties(instance,schema,options,ctx){if(instance===undefined||!(instance instanceof Object))return;var result=new ValidatorResult(instance,schema,options,ctx);var properties=schema.properties||{};for(var property in properties){var prop=(instance||undefined)&&instance[property];var res=this.validateSchema(prop,properties[property],options,ctx.makeChild(properties[property],property));if(res.instance!==result.instance[property])result.instance[property]=res.instance;result.importErrors(res)}return result};function testAdditionalProperty(instance,schema,options,ctx,property,result){if(schema.properties&&schema.properties[property]!==undefined){return}if(schema.additionalProperties===false){result.addError({name:"additionalProperties",argument:property,message:"additionalProperty "+JSON.stringify(property)+" exists in instance when not allowed"})}else{var additionalProperties=schema.additionalProperties||{};var res=this.validateSchema(instance[property],additionalProperties,options,ctx.makeChild(additionalProperties,property));if(res.instance!==result.instance[property])result.instance[property]=res.instance;result.importErrors(res)}}validators.patternProperties=function validatePatternProperties(instance,schema,options,ctx){if(instance===undefined)return;if(!this.types.object(instance))return;var result=new ValidatorResult(instance,schema,options,ctx);var patternProperties=schema.patternProperties||{};for(var property in instance){var test=true;for(var pattern in patternProperties){var expr=new RegExp(pattern);if(!expr.test(property)){continue}test=false;var res=this.validateSchema(instance[property],patternProperties[pattern],options,ctx.makeChild(patternProperties[pattern],property));if(res.instance!==result.instance[property])result.instance[property]=res.instance;result.importErrors(res)}if(test){testAdditionalProperty.call(this,instance,schema,options,ctx,property,result)}}return result};validators.additionalProperties=function validateAdditionalProperties(instance,schema,options,ctx){if(instance===undefined)return;if(!this.types.object(instance))return;if(schema.patternProperties){return null}var result=new ValidatorResult(instance,schema,options,ctx);for(var property in instance){testAdditionalProperty.call(this,instance,schema,options,ctx,property,result)}return result};validators.minProperties=function validateMinProperties(instance,schema,options,ctx){if(!instance||typeof instance!=="object"){return null}var result=new ValidatorResult(instance,schema,options,ctx);var keys=Object.keys(instance);if(!(keys.length>=schema.minProperties)){result.addError({name:"minProperties",argument:schema.minProperties,message:"does not meet minimum property length of "+schema.minProperties})}return result};validators.maxProperties=function validateMaxProperties(instance,schema,options,ctx){if(!instance||typeof instance!=="object"){return null}var result=new ValidatorResult(instance,schema,options,ctx);var keys=Object.keys(instance);if(!(keys.length<=schema.maxProperties)){result.addError({name:"maxProperties",argument:schema.maxProperties,message:"does not meet maximum property length of "+schema.maxProperties})}return result};validators.items=function validateItems(instance,schema,options,ctx){if(!(instance instanceof Array)){return null}var self=this;var result=new ValidatorResult(instance,schema,options,ctx);if(instance===undefined||!schema.items){return result}instance.every(function(value,i){var items=schema.items instanceof Array?schema.items[i]||schema.additionalItems:schema.items;if(items===undefined){return true}if(items===false){result.addError({name:"items",message:"additionalItems not permitted"});return false}var res=self.validateSchema(value,items,options,ctx.makeChild(items,i));if(res.instance!==result.instance[i])result.instance[i]=res.instance;result.importErrors(res);return true});return result};validators.minimum=function validateMinimum(instance,schema,options,ctx){if(typeof instance!=="number"){return null}var result=new ValidatorResult(instance,schema,options,ctx);var valid=true;if(schema.exclusiveMinimum&&schema.exclusiveMinimum===true){valid=instance>schema.minimum}else{valid=instance>=schema.minimum}if(!valid){result.addError({name:"minimum",argument:schema.minimum,message:"must have a minimum value of "+schema.minimum})}return result};validators.maximum=function validateMaximum(instance,schema,options,ctx){if(typeof instance!=="number"){return null}var result=new ValidatorResult(instance,schema,options,ctx);var valid;if(schema.exclusiveMaximum&&schema.exclusiveMaximum===true){valid=instance<schema.maximum}else{valid=instance<=schema.maximum}if(!valid){result.addError({name:"maximum",argument:schema.maximum,message:"must have a maximum value of "+schema.maximum})}return result};validators.divisibleBy=function validateDivisibleBy(instance,schema,options,ctx){if(typeof instance!=="number"){return null}if(schema.divisibleBy==0){throw new SchemaError("divisibleBy cannot be zero")}var result=new ValidatorResult(instance,schema,options,ctx);if(instance/schema.divisibleBy%1){result.addError({name:"divisibleBy",argument:schema.divisibleBy,message:"is not divisible by (multiple of) "+JSON.stringify(schema.divisibleBy)})}return result};validators.multipleOf=function validateMultipleOf(instance,schema,options,ctx){if(typeof instance!=="number"){return null}if(schema.multipleOf==0){throw new SchemaError("multipleOf cannot be zero")}var result=new ValidatorResult(instance,schema,options,ctx);if(instance/schema.multipleOf%1){result.addError({name:"multipleOf",argument:schema.multipleOf,message:"is not a multiple of (divisible by) "+JSON.stringify(schema.multipleOf)})}return result};validators.required=function validateRequired(instance,schema,options,ctx){var result=new ValidatorResult(instance,schema,options,ctx);if(instance===undefined&&schema.required===true){result.addError({name:"required",message:"is required"})}else if(instance&&typeof instance==="object"&&Array.isArray(schema.required)){schema.required.forEach(function(n){if(instance[n]===undefined){result.addError({name:"required",argument:n,message:"requires property "+JSON.stringify(n)})}})}return result};validators.pattern=function validatePattern(instance,schema,options,ctx){if(typeof instance!=="string"){return null}var result=new ValidatorResult(instance,schema,options,ctx);if(!instance.match(schema.pattern)){result.addError({name:"pattern",argument:schema.pattern,message:"does not match pattern "+JSON.stringify(schema.pattern)})}return result};validators.format=function validateFormat(instance,schema,options,ctx){var result=new ValidatorResult(instance,schema,options,ctx);if(!result.disableFormat&&!helpers.isFormat(instance,schema.format,this)){result.addError({name:"format",argument:schema.format,message:"does not conform to the "+JSON.stringify(schema.format)+" format"})}return result};validators.minLength=function validateMinLength(instance,schema,options,ctx){if(!(typeof instance==="string")){return null}var result=new ValidatorResult(instance,schema,options,ctx);if(!(instance.length>=schema.minLength)){result.addError({name:"minLength",argument:schema.minLength,message:"does not meet minimum length of "+schema.minLength})}return result};validators.maxLength=function validateMaxLength(instance,schema,options,ctx){if(!(typeof instance==="string")){return null}var result=new ValidatorResult(instance,schema,options,ctx);if(!(instance.length<=schema.maxLength)){result.addError({name:"maxLength",argument:schema.maxLength,message:"does not meet maximum length of "+schema.maxLength})}return result};validators.minItems=function validateMinItems(instance,schema,options,ctx){if(!(instance instanceof Array)){return null}var result=new ValidatorResult(instance,schema,options,ctx);if(!(instance.length>=schema.minItems)){result.addError({name:"minItems",argument:schema.minItems,message:"does not meet minimum length of "+schema.minItems})}return result};validators.maxItems=function validateMaxItems(instance,schema,options,ctx){if(!(instance instanceof Array)){return null}var result=new ValidatorResult(instance,schema,options,ctx);if(!(instance.length<=schema.maxItems)){result.addError({name:"maxItems",argument:schema.maxItems,message:"does not meet maximum length of "+schema.maxItems})}return result};validators.uniqueItems=function validateUniqueItems(instance,schema,options,ctx){var result=new ValidatorResult(instance,schema,options,ctx);if(!(instance instanceof Array)){return result}function testArrays(v,i,a){for(var j=i+1;j<a.length;j++)if(helpers.deepCompareStrict(v,a[j])){return false}return true}if(!instance.every(testArrays)){result.addError({name:"uniqueItems",message:"contains duplicate item"})}return result};function testArrays(v,i,a){var j,len=a.length;for(j=i+1,len;j<len;j++){if(helpers.deepCompareStrict(v,a[j])){return false}}return true}validators.uniqueItems=function validateUniqueItems(instance,schema,options,ctx){if(!(instance instanceof Array)){return null}var result=new ValidatorResult(instance,schema,options,ctx);if(!instance.every(testArrays)){result.addError({name:"uniqueItems",message:"contains duplicate item"})}return result};validators.dependencies=function validateDependencies(instance,schema,options,ctx){if(!instance||typeof instance!="object"){return null}var result=new ValidatorResult(instance,schema,options,ctx);for(var property in schema.dependencies){if(instance[property]===undefined){continue}var dep=schema.dependencies[property];var childContext=ctx.makeChild(dep,property);if(typeof dep=="string"){dep=[dep]}if(dep instanceof Array){dep.forEach(function(prop){if(instance[prop]===undefined){result.addError({name:"dependencies",argument:childContext.propertyPath,message:"property "+prop+" not found, required by "+childContext.propertyPath})}})}else{var res=this.validateSchema(instance,dep,options,childContext);if(result.instance!==res.instance)result.instance=res.instance;if(res&&res.errors.length){result.addError({name:"dependencies",argument:childContext.propertyPath,message:"does not meet dependency required by "+childContext.propertyPath});result.importErrors(res)}}}return result};validators["enum"]=function validateEnum(instance,schema,options,ctx){if(!(schema["enum"]instanceof Array)){throw new SchemaError("enum expects an array",schema)}if(instance===undefined){return null}var result=new ValidatorResult(instance,schema,options,ctx);if(!schema["enum"].some(helpers.deepCompareStrict.bind(null,instance))){result.addError({name:"enum",argument:schema["enum"],message:"is not one of enum values: "+schema["enum"].join(",")})}return result};validators.not=validators.disallow=function validateNot(instance,schema,options,ctx){var self=this;if(instance===undefined)return null;var result=new ValidatorResult(instance,schema,options,ctx);var notTypes=schema.not||schema.disallow;if(!notTypes)return null;if(!(notTypes instanceof Array))notTypes=[notTypes];notTypes.forEach(function(type){if(self.testType(instance,schema,options,ctx,type)){var schemaId=type&&type.id&&"<"+type.id+">"||type;result.addError({name:"not",argument:schemaId,message:"is of prohibited type "+schemaId})}});return result};module.exports=attribute},{"./helpers":2}],2:[function(require,module,exports){"use strict";var uri=require("url");var ValidationError=exports.ValidationError=function ValidationError(message,instance,schema,propertyPath,name,argument){if(propertyPath){this.property=propertyPath}if(message){this.message=message}if(schema){if(schema.id){this.schema=schema.id}else{this.schema=schema}}if(instance){this.instance=instance}this.name=name;this.argument=argument;this.stack=this.toString()};ValidationError.prototype.toString=function toString(){return this.property+" "+this.message};var ValidatorResult=exports.ValidatorResult=function ValidatorResult(instance,schema,options,ctx){this.instance=instance;this.schema=schema;this.propertyPath=ctx.propertyPath;this.errors=[];this.throwError=options&&options.throwError;this.disableFormat=options&&options.disableFormat===true};ValidatorResult.prototype.addError=function addError(detail){var err;if(typeof detail=="string"){err=new ValidationError(detail,this.instance,this.schema,this.propertyPath)}else{if(!detail)throw new Error("Missing error detail");if(!detail.message)throw new Error("Missing error message");if(!detail.name)throw new Error("Missing validator type");err=new ValidationError(detail.message,this.instance,this.schema,this.propertyPath,detail.name,detail.argument)}if(this.throwError){throw err}this.errors.push(err);return err};ValidatorResult.prototype.importErrors=function importErrors(res){if(typeof res=="string"||res&&res.validatorType){this.addError(res)}else if(res&&res.errors){var errs=this.errors;res.errors.forEach(function(v){errs.push(v)})}};ValidatorResult.prototype.toString=function toString(res){return this.errors.map(function(v,i){return i+": "+v.toString()+"\n"}).join("")};Object.defineProperty(ValidatorResult.prototype,"valid",{get:function(){return!this.errors.length}});var SchemaError=exports.SchemaError=function SchemaError(msg,schema){this.message=msg;this.schema=schema;Error.call(this,msg);Error.captureStackTrace(this,SchemaError)};SchemaError.prototype=Object.create(Error.prototype,{constructor:{value:SchemaError,enumerable:false},name:{value:"SchemaError",enumerable:false}});var SchemaContext=exports.SchemaContext=function SchemaContext(schema,options,propertyPath,base,schemas){this.schema=schema;this.options=options;this.propertyPath=propertyPath;this.base=base;this.schemas=schemas};SchemaContext.prototype.resolve=function resolve(target){return uri.resolve(this.base,target)};SchemaContext.prototype.makeChild=function makeChild(schema,propertyName){var propertyPath=propertyName===undefined?this.propertyPath:this.propertyPath+makeSuffix(propertyName);var base=uri.resolve(this.base,schema.id||"");var ctx=new SchemaContext(schema,this.options,propertyPath,base,Object.create(this.schemas));if(schema.id&&!ctx.schemas[base]){ctx.schemas[base]=schema}return ctx};var FORMAT_REGEXPS=exports.FORMAT_REGEXPS={"date-time":/^\d{4}-(?:0[0-9]{1}|1[0-2]{1})-(3[01]|0[1-9]|[12][0-9])[tT ](2[0-4]|[01][0-9]):([0-5][0-9]):(60|[0-5][0-9])(\.\d+)?([zZ]|[+-]([0-5][0-9]):(60|[0-5][0-9]))$/,date:/^\d{4}-(?:0[0-9]{1}|1[0-2]{1})-(3[01]|0[1-9]|[12][0-9])$/,time:/^(2[0-4]|[01][0-9]):([0-5][0-9]):(60|[0-5][0-9])$/,email:/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9\-](?!\.)){0,61}[a-zA-Z0-9]?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9\-](?!$)){0,61}[a-zA-Z0-9]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/,"ip-address":/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,ipv6:/^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/,uri:/^[a-zA-Z][a-zA-Z0-9+-.]*:[^\s]*$/,color:/^(#?([0-9A-Fa-f]{3}){1,2}\b|aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow|(rgb\(\s*\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b\s*,\s*\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b\s*,\s*\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b\s*\))|(rgb\(\s*(\d?\d%|100%)+\s*,\s*(\d?\d%|100%)+\s*,\s*(\d?\d%|100%)+\s*\)))$/,hostname:/^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\.?$/,"host-name":/^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\.?$/,alpha:/^[a-zA-Z]+$/,alphanumeric:/^[a-zA-Z0-9]+$/,"utc-millisec":function(input){return typeof input==="string"&&parseFloat(input)===parseInt(input,10)&&!isNaN(input)},regex:function(input){var result=true;try{new RegExp(input)}catch(e){result=false}return result},style:/\s*(.+?):\s*([^;]+);?/g,phone:/^\+(?:[0-9] ?){6,14}[0-9]$/};FORMAT_REGEXPS.regexp=FORMAT_REGEXPS.regex;FORMAT_REGEXPS.pattern=FORMAT_REGEXPS.regex;FORMAT_REGEXPS.ipv4=FORMAT_REGEXPS["ip-address"];exports.isFormat=function isFormat(input,format,validator){if(typeof input==="string"&&FORMAT_REGEXPS[format]!==undefined){if(FORMAT_REGEXPS[format]instanceof RegExp){return FORMAT_REGEXPS[format].test(input)}if(typeof FORMAT_REGEXPS[format]==="function"){return FORMAT_REGEXPS[format](input)}}else if(validator&&validator.customFormats&&typeof validator.customFormats[format]==="function"){return validator.customFormats[format](input)}return true};var makeSuffix=exports.makeSuffix=function makeSuffix(key){key=key.toString();if(!key.match(/[.\s\[\]]/)&&!key.match(/^[\d]/)){return"."+key}if(key.match(/^\d+$/)){return"["+key+"]"}return"["+JSON.stringify(key)+"]"};exports.deepCompareStrict=function deepCompareStrict(a,b){if(typeof a!==typeof b){return false}if(a instanceof Array){if(!(b instanceof Array)){return false}if(a.length!==b.length){return false}return a.every(function(v,i){return deepCompareStrict(a[i],b[i])})}if(typeof a==="object"){if(!a||!b){return a===b}var aKeys=Object.keys(a);var bKeys=Object.keys(b);if(aKeys.length!==bKeys.length){return false}return aKeys.every(function(v){return deepCompareStrict(a[v],b[v])})}return a===b};module.exports.deepMerge=function deepMerge(target,src){var array=Array.isArray(src);var dst=array&&[]||{};if(array){target=target||[];dst=dst.concat(target);src.forEach(function(e,i){if(typeof e==="object"){dst[i]=deepMerge(target[i],e)}else{if(target.indexOf(e)===-1){dst.push(e)}}})}else{if(target&&typeof target==="object"){Object.keys(target).forEach(function(key){dst[key]=target[key]})}Object.keys(src).forEach(function(key){if(typeof src[key]!=="object"||!src[key]){dst[key]=src[key]}else{if(!target[key]){dst[key]=src[key]}else{dst[key]=deepMerge(target[key],src[key])}}})}return dst};exports.objectGetPath=function objectGetPath(o,s){var parts=s.split("/").slice(1);var k;while(typeof(k=parts.shift())=="string"){var n=decodeURIComponent(k.replace(/~0/,"~").replace(/~1/g,"/"));if(!(n in o))return;o=o[n]}return o};exports.encodePath=function encodePointer(a){return a.map(function(v){return"/"+encodeURIComponent(v).replace(/~/g,"%7E")}).join("")}},{url:8}],3:[function(require,module,exports){"use strict";var urilib=require("url");var attribute=require("./attribute");var helpers=require("./helpers");var ValidatorResult=helpers.ValidatorResult;var SchemaError=helpers.SchemaError;var SchemaContext=helpers.SchemaContext;var Validator=function Validator(){this.customFormats=Object.create(Validator.prototype.customFormats);this.schemas={};this.unresolvedRefs=[];this.types=Object.create(types);this.attributes=Object.create(attribute.validators)};Validator.prototype.customFormats={};Validator.prototype.schemas=null;Validator.prototype.types=null;Validator.prototype.attributes=null;Validator.prototype.unresolvedRefs=null;Validator.prototype.addSchema=function addSchema(schema,uri){if(!schema){return null}var ourUri=uri||schema.id;this.addSubSchema(ourUri,schema);if(ourUri){this.schemas[ourUri]=schema}return this.schemas[ourUri]};Validator.prototype.addSubSchema=function addSubSchema(baseuri,schema){if(!schema||typeof schema!="object")return;if(schema.$ref){var resolvedUri=urilib.resolve(baseuri,schema.$ref);if(this.schemas[resolvedUri]===undefined){this.schemas[resolvedUri]=null;this.unresolvedRefs.push(resolvedUri)}return}var ourUri=schema.id&&urilib.resolve(baseuri,schema.id);var ourBase=ourUri||baseuri;if(ourUri){if(this.schemas[ourUri]){if(!helpers.deepCompareStrict(this.schemas[ourUri],schema)){throw new Error("Schema <"+schema+"> already exists with different definition")}return this.schemas[ourUri]}this.schemas[ourUri]=schema;var documentUri=ourUri.replace(/^([^#]*)#$/,"$1");this.schemas[documentUri]=schema}this.addSubSchemaArray(ourBase,schema.items instanceof Array?schema.items:[schema.items]);this.addSubSchemaArray(ourBase,schema.extends instanceof Array?schema.extends:[schema.extends]);this.addSubSchema(ourBase,schema.additionalItems);this.addSubSchemaObject(ourBase,schema.properties);this.addSubSchema(ourBase,schema.additionalProperties);this.addSubSchemaObject(ourBase,schema.definitions);this.addSubSchemaObject(ourBase,schema.patternProperties);this.addSubSchemaObject(ourBase,schema.dependencies);this.addSubSchemaArray(ourBase,schema.disallow);this.addSubSchemaArray(ourBase,schema.allOf);this.addSubSchemaArray(ourBase,schema.anyOf);this.addSubSchemaArray(ourBase,schema.oneOf);this.addSubSchema(ourBase,schema.not);return this.schemas[ourUri]};Validator.prototype.addSubSchemaArray=function addSubSchemaArray(baseuri,schemas){if(!(schemas instanceof Array))return;for(var i=0;i<schemas.length;i++){this.addSubSchema(baseuri,schemas[i])}};Validator.prototype.addSubSchemaObject=function addSubSchemaArray(baseuri,schemas){if(!schemas||typeof schemas!="object")return;for(var p in schemas){this.addSubSchema(baseuri,schemas[p])}};Validator.prototype.setSchemas=function setSchemas(schemas){this.schemas=schemas};Validator.prototype.getSchema=function getSchema(urn){return this.schemas[urn]};Validator.prototype.validate=function validate(instance,schema,options,ctx){if(!options){options={}}var propertyName=options.propertyName||"instance";var base=urilib.resolve(options.base||"/",schema.id||"");if(!ctx){ctx=new SchemaContext(schema,options,propertyName,base,Object.create(this.schemas));if(!ctx.schemas[base]){ctx.schemas[base]=schema}}if(schema){var result=this.validateSchema(instance,schema,options,ctx);if(!result){throw new Error("Result undefined")}return result}throw new SchemaError("no schema specified",schema)};Validator.prototype.validateSchema=function validateSchema(instance,schema,options,ctx){var self=this;var result=new ValidatorResult(instance,schema,options,ctx);if(!schema){throw new Error("schema is undefined")}function shouldResolve(schema){var ref=typeof schema==="string"?schema:schema.$ref;if(typeof ref=="string")return ref;return false}function resolve(schema,ctx){var ref;if(ref=shouldResolve(schema)){return self.resolve(schema,ref,ctx).subschema}return schema}if(schema["extends"]){if(schema["extends"]instanceof Array){schema["extends"].forEach(function(s){schema=helpers.deepMerge(schema,resolve(s,ctx))})}else{schema=helpers.deepMerge(schema,resolve(schema["extends"],ctx))}}var switchSchema;if(switchSchema=shouldResolve(schema)){var resolved=this.resolve(schema,switchSchema,ctx);var subctx=new SchemaContext(resolved.subschema,options,ctx.propertyPath,resolved.switchSchema,ctx.schemas);return this.validateSchema(instance,resolved.subschema,options,subctx)}var skipAttributes=options&&options.skipAttributes||[];for(var key in schema){if(!attribute.ignoreProperties[key]&&skipAttributes.indexOf(key)<0){var validatorErr=null;var validator=self.attributes[key];if(validator){validatorErr=validator.call(self,instance,schema,options,ctx)}else if(options.allowUnknownAttributes===false){throw new SchemaError("Unsupported attribute: "+key,schema)}if(validatorErr){result.importErrors(validatorErr)}}}if(typeof options.rewrite=="function"){var value=options.rewrite.call(this,instance,schema,options,ctx);result.instance=value}return result};Validator.prototype.resolve=function resolve(schema,switchSchema,ctx){switchSchema=ctx.resolve(switchSchema);if(ctx.schemas[switchSchema]){return{subschema:ctx.schemas[switchSchema],switchSchema:switchSchema}}var parsed=urilib.parse(switchSchema);var fragment=parsed&&parsed.hash;var document=fragment&&fragment.length&&switchSchema.substr(0,switchSchema.length-fragment.length);if(!document||!ctx.schemas[document]){throw new SchemaError("no such schema <"+switchSchema+">",schema)}var subschema=helpers.objectGetPath(ctx.schemas[document],fragment.substr(1));if(subschema===undefined){throw new SchemaError("no such schema "+fragment+" located in <"+document+">",schema)}return{subschema:subschema,switchSchema:switchSchema}};Validator.prototype.testType=function validateType(instance,schema,options,ctx,type){if(typeof this.types[type]=="function"){return this.types[type].call(this,instance)}if(type&&typeof type=="object"){var res=this.validateSchema(instance,type,options,ctx);return res===undefined||!(res&&res.errors.length)}return true};var types=Validator.prototype.types={};types.string=function testString(instance){return typeof instance=="string"};types.number=function testNumber(instance){return typeof instance=="number"&&isFinite(instance)};types.integer=function testInteger(instance){return typeof instance=="number"&&instance%1===0};types.boolean=function testBoolean(instance){return typeof instance=="boolean"};types.array=function testArray(instance){return instance instanceof Array};types["null"]=function testNull(instance){return instance===null};types.date=function testDate(instance){return instance instanceof Date};types.any=function testAny(instance){return true};types.object=function testObject(instance){return instance&&typeof instance==="object"&&!(instance instanceof Array)&&!(instance instanceof Date)};module.exports=Validator},{"./attribute":1,"./helpers":2,url:8}],4:[function(require,module,exports){(function(global){(function(root){var freeExports=typeof exports=="object"&&exports;var freeModule=typeof module=="object"&&module&&module.exports==freeExports&&module;var freeGlobal=typeof global=="object"&&global;if(freeGlobal.global===freeGlobal||freeGlobal.window===freeGlobal){root=freeGlobal}var punycode,maxInt=2147483647,base=36,tMin=1,tMax=26,skew=38,damp=700,initialBias=72,initialN=128,delimiter="-",regexPunycode=/^xn--/,regexNonASCII=/[^ -~]/,regexSeparators=/\x2E|\u3002|\uFF0E|\uFF61/g,errors={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},baseMinusTMin=base-tMin,floor=Math.floor,stringFromCharCode=String.fromCharCode,key;function error(type){throw RangeError(errors[type])}function map(array,fn){var length=array.length;while(length--){array[length]=fn(array[length])}return array}function mapDomain(string,fn){return map(string.split(regexSeparators),fn).join(".")}function ucs2decode(string){var output=[],counter=0,length=string.length,value,extra;while(counter<length){value=string.charCodeAt(counter++);if(value>=55296&&value<=56319&&counter<length){extra=string.charCodeAt(counter++);if((extra&64512)==56320){output.push(((value&1023)<<10)+(extra&1023)+65536)}else{output.push(value);counter--}}else{output.push(value)}}return output}function ucs2encode(array){return map(array,function(value){var output="";if(value>65535){value-=65536;output+=stringFromCharCode(value>>>10&1023|55296);value=56320|value&1023}output+=stringFromCharCode(value);return output}).join("")}function basicToDigit(codePoint){if(codePoint-48<10){return codePoint-22}if(codePoint-65<26){return codePoint-65}if(codePoint-97<26){return codePoint-97}return base}function digitToBasic(digit,flag){return digit+22+75*(digit<26)-((flag!=0)<<5)}function adapt(delta,numPoints,firstTime){var k=0;delta=firstTime?floor(delta/damp):delta>>1;delta+=floor(delta/numPoints);for(;delta>baseMinusTMin*tMax>>1;k+=base){delta=floor(delta/baseMinusTMin)}return floor(k+(baseMinusTMin+1)*delta/(delta+skew))}function decode(input){var output=[],inputLength=input.length,out,i=0,n=initialN,bias=initialBias,basic,j,index,oldi,w,k,digit,t,baseMinusT;basic=input.lastIndexOf(delimiter);if(basic<0){basic=0}for(j=0;j<basic;++j){if(input.charCodeAt(j)>=128){error("not-basic")}output.push(input.charCodeAt(j))}for(index=basic>0?basic+1:0;index<inputLength;){for(oldi=i,w=1,k=base;;k+=base){if(index>=inputLength){error("invalid-input")}digit=basicToDigit(input.charCodeAt(index++)); | |
if(digit>=base||digit>floor((maxInt-i)/w)){error("overflow")}i+=digit*w;t=k<=bias?tMin:k>=bias+tMax?tMax:k-bias;if(digit<t){break}baseMinusT=base-t;if(w>floor(maxInt/baseMinusT)){error("overflow")}w*=baseMinusT}out=output.length+1;bias=adapt(i-oldi,out,oldi==0);if(floor(i/out)>maxInt-n){error("overflow")}n+=floor(i/out);i%=out;output.splice(i++,0,n)}return ucs2encode(output)}function encode(input){var n,delta,handledCPCount,basicLength,bias,j,m,q,k,t,currentValue,output=[],inputLength,handledCPCountPlusOne,baseMinusT,qMinusT;input=ucs2decode(input);inputLength=input.length;n=initialN;delta=0;bias=initialBias;for(j=0;j<inputLength;++j){currentValue=input[j];if(currentValue<128){output.push(stringFromCharCode(currentValue))}}handledCPCount=basicLength=output.length;if(basicLength){output.push(delimiter)}while(handledCPCount<inputLength){for(m=maxInt,j=0;j<inputLength;++j){currentValue=input[j];if(currentValue>=n&¤tValue<m){m=currentValue}}handledCPCountPlusOne=handledCPCount+1;if(m-n>floor((maxInt-delta)/handledCPCountPlusOne)){error("overflow")}delta+=(m-n)*handledCPCountPlusOne;n=m;for(j=0;j<inputLength;++j){currentValue=input[j];if(currentValue<n&&++delta>maxInt){error("overflow")}if(currentValue==n){for(q=delta,k=base;;k+=base){t=k<=bias?tMin:k>=bias+tMax?tMax:k-bias;if(q<t){break}qMinusT=q-t;baseMinusT=base-t;output.push(stringFromCharCode(digitToBasic(t+qMinusT%baseMinusT,0)));q=floor(qMinusT/baseMinusT)}output.push(stringFromCharCode(digitToBasic(q,0)));bias=adapt(delta,handledCPCountPlusOne,handledCPCount==basicLength);delta=0;++handledCPCount}}++delta;++n}return output.join("")}function toUnicode(domain){return mapDomain(domain,function(string){return regexPunycode.test(string)?decode(string.slice(4).toLowerCase()):string})}function toASCII(domain){return mapDomain(domain,function(string){return regexNonASCII.test(string)?"xn--"+encode(string):string})}punycode={version:"1.2.4",ucs2:{decode:ucs2decode,encode:ucs2encode},decode:decode,encode:encode,toASCII:toASCII,toUnicode:toUnicode};if(typeof define=="function"&&typeof define.amd=="object"&&define.amd){define("punycode",function(){return punycode})}else if(freeExports&&!freeExports.nodeType){if(freeModule){freeModule.exports=punycode}else{for(key in punycode){punycode.hasOwnProperty(key)&&(freeExports[key]=punycode[key])}}}else{root.punycode=punycode}})(this)}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}],5:[function(require,module,exports){"use strict";function hasOwnProperty(obj,prop){return Object.prototype.hasOwnProperty.call(obj,prop)}module.exports=function(qs,sep,eq,options){sep=sep||"&";eq=eq||"=";var obj={};if(typeof qs!=="string"||qs.length===0){return obj}var regexp=/\+/g;qs=qs.split(sep);var maxKeys=1e3;if(options&&typeof options.maxKeys==="number"){maxKeys=options.maxKeys}var len=qs.length;if(maxKeys>0&&len>maxKeys){len=maxKeys}for(var i=0;i<len;++i){var x=qs[i].replace(regexp,"%20"),idx=x.indexOf(eq),kstr,vstr,k,v;if(idx>=0){kstr=x.substr(0,idx);vstr=x.substr(idx+1)}else{kstr=x;vstr=""}k=decodeURIComponent(kstr);v=decodeURIComponent(vstr);if(!hasOwnProperty(obj,k)){obj[k]=v}else if(isArray(obj[k])){obj[k].push(v)}else{obj[k]=[obj[k],v]}}return obj};var isArray=Array.isArray||function(xs){return Object.prototype.toString.call(xs)==="[object Array]"}},{}],6:[function(require,module,exports){"use strict";var stringifyPrimitive=function(v){switch(typeof v){case"string":return v;case"boolean":return v?"true":"false";case"number":return isFinite(v)?v:"";default:return""}};module.exports=function(obj,sep,eq,name){sep=sep||"&";eq=eq||"=";if(obj===null){obj=undefined}if(typeof obj==="object"){return map(objectKeys(obj),function(k){var ks=encodeURIComponent(stringifyPrimitive(k))+eq;if(isArray(obj[k])){return map(obj[k],function(v){return ks+encodeURIComponent(stringifyPrimitive(v))}).join(sep)}else{return ks+encodeURIComponent(stringifyPrimitive(obj[k]))}}).join(sep)}if(!name)return"";return encodeURIComponent(stringifyPrimitive(name))+eq+encodeURIComponent(stringifyPrimitive(obj))};var isArray=Array.isArray||function(xs){return Object.prototype.toString.call(xs)==="[object Array]"};function map(xs,f){if(xs.map)return xs.map(f);var res=[];for(var i=0;i<xs.length;i++){res.push(f(xs[i],i))}return res}var objectKeys=Object.keys||function(obj){var res=[];for(var key in obj){if(Object.prototype.hasOwnProperty.call(obj,key))res.push(key)}return res}},{}],7:[function(require,module,exports){"use strict";exports.decode=exports.parse=require("./decode");exports.encode=exports.stringify=require("./encode")},{"./decode":5,"./encode":6}],8:[function(require,module,exports){var punycode=require("punycode");exports.parse=urlParse;exports.resolve=urlResolve;exports.resolveObject=urlResolveObject;exports.format=urlFormat;exports.Url=Url;function Url(){this.protocol=null;this.slashes=null;this.auth=null;this.host=null;this.port=null;this.hostname=null;this.hash=null;this.search=null;this.query=null;this.pathname=null;this.path=null;this.href=null}var protocolPattern=/^([a-z0-9.+-]+:)/i,portPattern=/:[0-9]*$/,delims=["<",">",'"',"`"," ","\r","\n"," "],unwise=["{","}","|","\\","^","`"].concat(delims),autoEscape=["'"].concat(unwise),nonHostChars=["%","/","?",";","#"].concat(autoEscape),hostEndingChars=["/","?","#"],hostnameMaxLen=255,hostnamePartPattern=/^[a-z0-9A-Z_-]{0,63}$/,hostnamePartStart=/^([a-z0-9A-Z_-]{0,63})(.*)$/,unsafeProtocol={javascript:true,"javascript:":true},hostlessProtocol={javascript:true,"javascript:":true},slashedProtocol={http:true,https:true,ftp:true,gopher:true,file:true,"http:":true,"https:":true,"ftp:":true,"gopher:":true,"file:":true},querystring=require("querystring");function urlParse(url,parseQueryString,slashesDenoteHost){if(url&&isObject(url)&&url instanceof Url)return url;var u=new Url;u.parse(url,parseQueryString,slashesDenoteHost);return u}Url.prototype.parse=function(url,parseQueryString,slashesDenoteHost){if(!isString(url)){throw new TypeError("Parameter 'url' must be a string, not "+typeof url)}var rest=url;rest=rest.trim();var proto=protocolPattern.exec(rest);if(proto){proto=proto[0];var lowerProto=proto.toLowerCase();this.protocol=lowerProto;rest=rest.substr(proto.length)}if(slashesDenoteHost||proto||rest.match(/^\/\/[^@\/]+@[^@\/]+/)){var slashes=rest.substr(0,2)==="//";if(slashes&&!(proto&&hostlessProtocol[proto])){rest=rest.substr(2);this.slashes=true}}if(!hostlessProtocol[proto]&&(slashes||proto&&!slashedProtocol[proto])){var hostEnd=-1;for(var i=0;i<hostEndingChars.length;i++){var hec=rest.indexOf(hostEndingChars[i]);if(hec!==-1&&(hostEnd===-1||hec<hostEnd))hostEnd=hec}var auth,atSign;if(hostEnd===-1){atSign=rest.lastIndexOf("@")}else{atSign=rest.lastIndexOf("@",hostEnd)}if(atSign!==-1){auth=rest.slice(0,atSign);rest=rest.slice(atSign+1);this.auth=decodeURIComponent(auth)}hostEnd=-1;for(var i=0;i<nonHostChars.length;i++){var hec=rest.indexOf(nonHostChars[i]);if(hec!==-1&&(hostEnd===-1||hec<hostEnd))hostEnd=hec}if(hostEnd===-1)hostEnd=rest.length;this.host=rest.slice(0,hostEnd);rest=rest.slice(hostEnd);this.parseHost();this.hostname=this.hostname||"";var ipv6Hostname=this.hostname[0]==="["&&this.hostname[this.hostname.length-1]==="]";if(!ipv6Hostname){var hostparts=this.hostname.split(/\./);for(var i=0,l=hostparts.length;i<l;i++){var part=hostparts[i];if(!part)continue;if(!part.match(hostnamePartPattern)){var newpart="";for(var j=0,k=part.length;j<k;j++){if(part.charCodeAt(j)>127){newpart+="x"}else{newpart+=part[j]}}if(!newpart.match(hostnamePartPattern)){var validParts=hostparts.slice(0,i);var notHost=hostparts.slice(i+1);var bit=part.match(hostnamePartStart);if(bit){validParts.push(bit[1]);notHost.unshift(bit[2])}if(notHost.length){rest="/"+notHost.join(".")+rest}this.hostname=validParts.join(".");break}}}}if(this.hostname.length>hostnameMaxLen){this.hostname=""}else{this.hostname=this.hostname.toLowerCase()}if(!ipv6Hostname){var domainArray=this.hostname.split(".");var newOut=[];for(var i=0;i<domainArray.length;++i){var s=domainArray[i];newOut.push(s.match(/[^A-Za-z0-9_-]/)?"xn--"+punycode.encode(s):s)}this.hostname=newOut.join(".")}var p=this.port?":"+this.port:"";var h=this.hostname||"";this.host=h+p;this.href+=this.host;if(ipv6Hostname){this.hostname=this.hostname.substr(1,this.hostname.length-2);if(rest[0]!=="/"){rest="/"+rest}}}if(!unsafeProtocol[lowerProto]){for(var i=0,l=autoEscape.length;i<l;i++){var ae=autoEscape[i];var esc=encodeURIComponent(ae);if(esc===ae){esc=escape(ae)}rest=rest.split(ae).join(esc)}}var hash=rest.indexOf("#");if(hash!==-1){this.hash=rest.substr(hash);rest=rest.slice(0,hash)}var qm=rest.indexOf("?");if(qm!==-1){this.search=rest.substr(qm);this.query=rest.substr(qm+1);if(parseQueryString){this.query=querystring.parse(this.query)}rest=rest.slice(0,qm)}else if(parseQueryString){this.search="";this.query={}}if(rest)this.pathname=rest;if(slashedProtocol[lowerProto]&&this.hostname&&!this.pathname){this.pathname="/"}if(this.pathname||this.search){var p=this.pathname||"";var s=this.search||"";this.path=p+s}this.href=this.format();return this};function urlFormat(obj){if(isString(obj))obj=urlParse(obj);if(!(obj instanceof Url))return Url.prototype.format.call(obj);return obj.format()}Url.prototype.format=function(){var auth=this.auth||"";if(auth){auth=encodeURIComponent(auth);auth=auth.replace(/%3A/i,":");auth+="@"}var protocol=this.protocol||"",pathname=this.pathname||"",hash=this.hash||"",host=false,query="";if(this.host){host=auth+this.host}else if(this.hostname){host=auth+(this.hostname.indexOf(":")===-1?this.hostname:"["+this.hostname+"]");if(this.port){host+=":"+this.port}}if(this.query&&isObject(this.query)&&Object.keys(this.query).length){query=querystring.stringify(this.query)}var search=this.search||query&&"?"+query||"";if(protocol&&protocol.substr(-1)!==":")protocol+=":";if(this.slashes||(!protocol||slashedProtocol[protocol])&&host!==false){host="//"+(host||"");if(pathname&&pathname.charAt(0)!=="/")pathname="/"+pathname}else if(!host){host=""}if(hash&&hash.charAt(0)!=="#")hash="#"+hash;if(search&&search.charAt(0)!=="?")search="?"+search;pathname=pathname.replace(/[?#]/g,function(match){return encodeURIComponent(match)});search=search.replace("#","%23");return protocol+host+pathname+search+hash};function urlResolve(source,relative){return urlParse(source,false,true).resolve(relative)}Url.prototype.resolve=function(relative){return this.resolveObject(urlParse(relative,false,true)).format()};function urlResolveObject(source,relative){if(!source)return relative;return urlParse(source,false,true).resolveObject(relative)}Url.prototype.resolveObject=function(relative){if(isString(relative)){var rel=new Url;rel.parse(relative,false,true);relative=rel}var result=new Url;Object.keys(this).forEach(function(k){result[k]=this[k]},this);result.hash=relative.hash;if(relative.href===""){result.href=result.format();return result}if(relative.slashes&&!relative.protocol){Object.keys(relative).forEach(function(k){if(k!=="protocol")result[k]=relative[k]});if(slashedProtocol[result.protocol]&&result.hostname&&!result.pathname){result.path=result.pathname="/"}result.href=result.format();return result}if(relative.protocol&&relative.protocol!==result.protocol){if(!slashedProtocol[relative.protocol]){Object.keys(relative).forEach(function(k){result[k]=relative[k]});result.href=result.format();return result}result.protocol=relative.protocol;if(!relative.host&&!hostlessProtocol[relative.protocol]){var relPath=(relative.pathname||"").split("/");while(relPath.length&&!(relative.host=relPath.shift()));if(!relative.host)relative.host="";if(!relative.hostname)relative.hostname="";if(relPath[0]!=="")relPath.unshift("");if(relPath.length<2)relPath.unshift("");result.pathname=relPath.join("/")}else{result.pathname=relative.pathname}result.search=relative.search;result.query=relative.query;result.host=relative.host||"";result.auth=relative.auth;result.hostname=relative.hostname||relative.host;result.port=relative.port;if(result.pathname||result.search){var p=result.pathname||"";var s=result.search||"";result.path=p+s}result.slashes=result.slashes||relative.slashes;result.href=result.format();return result}var isSourceAbs=result.pathname&&result.pathname.charAt(0)==="/",isRelAbs=relative.host||relative.pathname&&relative.pathname.charAt(0)==="/",mustEndAbs=isRelAbs||isSourceAbs||result.host&&relative.pathname,removeAllDots=mustEndAbs,srcPath=result.pathname&&result.pathname.split("/")||[],relPath=relative.pathname&&relative.pathname.split("/")||[],psychotic=result.protocol&&!slashedProtocol[result.protocol];if(psychotic){result.hostname="";result.port=null;if(result.host){if(srcPath[0]==="")srcPath[0]=result.host;else srcPath.unshift(result.host)}result.host="";if(relative.protocol){relative.hostname=null;relative.port=null;if(relative.host){if(relPath[0]==="")relPath[0]=relative.host;else relPath.unshift(relative.host)}relative.host=null}mustEndAbs=mustEndAbs&&(relPath[0]===""||srcPath[0]==="")}if(isRelAbs){result.host=relative.host||relative.host===""?relative.host:result.host;result.hostname=relative.hostname||relative.hostname===""?relative.hostname:result.hostname;result.search=relative.search;result.query=relative.query;srcPath=relPath}else if(relPath.length){if(!srcPath)srcPath=[];srcPath.pop();srcPath=srcPath.concat(relPath);result.search=relative.search;result.query=relative.query}else if(!isNullOrUndefined(relative.search)){if(psychotic){result.hostname=result.host=srcPath.shift();var authInHost=result.host&&result.host.indexOf("@")>0?result.host.split("@"):false;if(authInHost){result.auth=authInHost.shift();result.host=result.hostname=authInHost.shift()}}result.search=relative.search;result.query=relative.query;if(!isNull(result.pathname)||!isNull(result.search)){result.path=(result.pathname?result.pathname:"")+(result.search?result.search:"")}result.href=result.format();return result}if(!srcPath.length){result.pathname=null;if(result.search){result.path="/"+result.search}else{result.path=null}result.href=result.format();return result}var last=srcPath.slice(-1)[0];var hasTrailingSlash=(result.host||relative.host)&&(last==="."||last==="..")||last==="";var up=0;for(var i=srcPath.length;i>=0;i--){last=srcPath[i];if(last=="."){srcPath.splice(i,1)}else if(last===".."){srcPath.splice(i,1);up++}else if(up){srcPath.splice(i,1);up--}}if(!mustEndAbs&&!removeAllDots){for(;up--;up){srcPath.unshift("..")}}if(mustEndAbs&&srcPath[0]!==""&&(!srcPath[0]||srcPath[0].charAt(0)!=="/")){srcPath.unshift("")}if(hasTrailingSlash&&srcPath.join("/").substr(-1)!=="/"){srcPath.push("")}var isAbsolute=srcPath[0]===""||srcPath[0]&&srcPath[0].charAt(0)==="/";if(psychotic){result.hostname=result.host=isAbsolute?"":srcPath.length?srcPath.shift():"";var authInHost=result.host&&result.host.indexOf("@")>0?result.host.split("@"):false;if(authInHost){result.auth=authInHost.shift();result.host=result.hostname=authInHost.shift()}}mustEndAbs=mustEndAbs||result.host&&srcPath.length;if(mustEndAbs&&!isAbsolute){srcPath.unshift("")}if(!srcPath.length){result.pathname=null;result.path=null}else{result.pathname=srcPath.join("/")}if(!isNull(result.pathname)||!isNull(result.search)){result.path=(result.pathname?result.pathname:"")+(result.search?result.search:"")}result.auth=relative.auth||result.auth;result.slashes=result.slashes||relative.slashes;result.href=result.format();return result};Url.prototype.parseHost=function(){var host=this.host;var port=portPattern.exec(host);if(port){port=port[0];if(port!==":"){this.port=port.substr(1)}host=host.substr(0,host.length-port.length)}if(host)this.hostname=host};function isString(arg){return typeof arg==="string"}function isObject(arg){return typeof arg==="object"&&arg!==null}function isNull(arg){return arg===null}function isNullOrUndefined(arg){return arg==null}},{punycode:4,querystring:7}],jsonschema:[function(require,module,exports){"use strict";var Validator=module.exports.Validator=require("./validator");module.exports.ValidatorResult=require("./helpers").ValidatorResult;module.exports.ValidationError=require("./helpers").ValidationError;module.exports.SchemaError=require("./helpers").SchemaError;module.exports.validate=function(instance,schema,options){var v=new Validator;return v.validate(instance,schema,options)}},{"./helpers":2,"./validator":3}]},{},[]);var Validator=require("jsonschema").Validator;var v=new Validator;var schema={allOf:[{type:"boolean"},{type:"string"}]};console.log(v.validate("foobar",schema)); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"name": "requirebin-sketch", | |
"version": "1.0.0", | |
"dependencies": { | |
"jsonschema": "1.1.0" | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!-- contents of this file will be placed inside the <body> --> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!-- contents of this file will be placed inside the <head> --> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment