test-openapi
Version:
Automated client requests
64 lines (44 loc) • 1.49 kB
JavaScript
;require("core-js/modules/es.array.iterator");Object.defineProperty(exports,"__esModule",{value:true});exports.handleJsonSchemas=void 0;var _lodash=require("lodash");
var _path=require("../../../utils/path.js");
var _types=require("../../../utils/types.js");
var _meta=require("../../../validation/meta.js");
const handleJsonSchemas=function({validate}){
return(0,_lodash.mapValues)(validate,handleJsonSchema);
};exports.handleJsonSchemas=handleJsonSchemas;
const handleJsonSchema=function(value,prop){
if(!hasJsonSchema({prop})){
return value;
}
if(!(0,_types.isObject)(value)){
return applyShortcut({value});
}
validateJsonSchema({value,prop});
return value;
};
const hasJsonSchema=function({prop}){
return prop.startsWith("headers.")||prop==="body";
};
const applyShortcut=function({value}){
const type=guessType(value);
return{...type,enum:[value]};
};
const guessType=function(value){
if(value===undefined){
return;
}
const[type]=TYPES.find(([,condition])=>condition(value));
return{type};
};
const TYPES=Object.entries({
null:value=>value===null,
integer:Number.isInteger,
number:value=>typeof value==="number"&&!Number.isInteger(value),
string:value=>typeof value==="string",
boolean:value=>typeof value==="boolean",
array:Array.isArray,
object:()=>true});
const validateJsonSchema=function({value,prop}){
const valueProp=(0,_path.getPath)(["task","validate",prop]);
(0,_meta.checkIsSchema)({value,valueProp});
};
//# sourceMappingURL=json_schema.js.map