UNPKG

@redocly/asyncapi-docs

Version:

Async API docs for Redocly Realm

2 lines (1 loc) 1.79 kB
function o(t,e){switch(t){case"null":return{type:"null"};case"boolean":return{type:"boolean"};case"int":case"long":return{type:"integer"};case"float":case"double":return{type:"number"};case"bytes":return{type:"string",contentEncoding:"base64"};case"string":return{type:"string"};default:return e[t]?e[t]:{type:"null"}}}function f(t){return{type:"string",enum:t.symbols,title:t.name,description:t.doc}}function a(t,e){var n;const r={},c=[];return(n=t.fields)===null||n===void 0||n.forEach(i=>{r[i.name]=u(i.type,e),i.doc&&(r[i.name].description=i.doc),i.default!==void 0&&(r[i.name].default=i.default),i.default===void 0&&!b(i.type)&&c.push(i.name)}),{type:"object",title:t.name,description:t.doc,properties:r,required:c.length>0?c:void 0,additionalProperties:!1}}function b(t){return Array.isArray(t)?t.some(e=>e==="null"||typeof e=="object"&&e.type==="null"):!1}function l(t,e){return{type:"array",items:u(t.items,e),description:t.doc}}function s(t,e){return{type:"object",additionalProperties:u(t.values,e),description:t.doc}}function d(t,e){const n=t.findIndex(r=>r==="null"||typeof r=="object"&&r.type==="null");if(n!==-1){const r=[...t];return r.splice(n,1),r.length===1?Object.assign(Object.assign({},u(r[0],e)),{nullable:!0}):{oneOf:r.map(c=>u(c,e)),nullable:!0}}return{oneOf:t.map(r=>u(r,e))}}function u(t,e){if(typeof t=="string")return o(t,e);let n={};if(Array.isArray(t))n=d(t,e);else if(typeof t=="object"&&typeof t.type=="string")switch(t.type){case"record":n=a(t,e);break;case"enum":n=f(t);break;case"array":n=l(t,e);break;case"map":n=s(t,e);break;default:n=o(t.type,e)}else typeof t=="object"&&t.items?n=l(t,e):typeof t=="object"&&t.values&&(n=s(t,e));return t.name&&(e[t.name]=n),n}function g(t){const n=u(t,{});return Object.assign({},n)}export{g as avroToJsonSchema};