stnl
Version:
A simple, opinionated schema library built for performance
1 lines • 2.04 kB
JavaScript
export let _nullSchema={const:null};export let _toConstSchema=e=>({const:e});export let _loadLimits=(e,t,n)=>{while(n<t.length){let r=t[n++];let i=r[0];if(i===1)e.maxLength=r[1];else if(i===2)e.minLength=r[1];else if(i===3)e.pattern=`^`+RegExp.escape(r[1]);else if(i===4)e.maximum=r[1];else if(i===5)e.minimum=r[1];else if(i===6)e.exclusiveMaximum=r[1];else if(i===7)e.exclusiveMinimum=r[1];else throw new Error(`Unknown limit type: `+i)}return e};export let v7=i=>{let a=i[0];if(a===0)return _loadLimits({},i,1);else if(a===1)return _loadLimits({type:`number`},i,1);else if(a===2)return _loadLimits({type:`integer`},i,1);else if(a===3)return{type:`boolean`};else if(a===4)return _loadLimits({type:`string`},i,1);else if(a===5)return{anyOf:[_nullSchema,v7(i[1])]};else if(a===6)return{anyOf:i[1].map(_toConstSchema)};else if(a===7)return _loadLimits({type:`array`,items:v7(i[1])},i,2);else if(a===8){let e={};let t=i[1];for(let n in t)e[n]=v7(t[n]);let n=i[2];if(n!=null)for(let t in n)e[t]=v7(n[t]);return{type:`object`,properties:e,required:Object.keys(t)}}else if(a===9)return{type:`array`,prefixItems:i[1].map(v7),items:false};else if(a===10){let e=i[1];let n=i[2];let a=[];for(const i in n){let o=n[i];let s={};s[e]=_toConstSchema(i);let c=o[1];for(let e in c)s[e]=v7(c[e]);let l=o[2];if(l!=null)for(let e in l)s[e]=v7(l[e]);a.push({properties:s,required:Object.keys(c)})}return{type:`object`,required:[e],anyOf:a}}else if(a===11)return{$ref:i[1]};else if(a===12){let e={};let t=i[2];for(const n in t){let i=t[n];if(i[0]===12)e[n]={$id:n,anyOf:[v7(i)]};else{let t=v7(i);t.$id=n;e[n]=t}}let n=v7(i[1]);n.$id=``;n.$defs=e;return n}else if(a===13){let e=i[2];let t=v7(i[1]);if(typeof e===`object`){if(typeof e.title===`string`)t.title=e.title;if(typeof e.description===`string`)t.description=e.description;if(typeof e.default!==`undefined`)t.default=e.default;if(e.deprecated===true)t.deprecated=true;if(e.readOnly===true)t.readOnly=true;if(e.writeOnly===true)t.writeOnly=true}return t}throw new Error(`Unknown schema base type: `+a)};