UNPKG

@redocly/graphql-docs

Version:

Redocly GraphQL docs

4 lines (3 loc) 1.07 kB
function f(c){const i=c.astNode;if(!i)return;const t=i.directives?.find(e=>e.name.value==="redocly_info"),s=i.directives?.find(e=>e.name.value==="redocly_contact"),o=i.directives?.find(e=>e.name.value==="redocly_license"),d=i.description?.value,r=d?a(d):null;if(!t&&!s&&!o&&!r)return;const n={};if(r&&(r.title&&(n.title=r.title),r.description&&(n.description=r.description)),t){const e=l(t);e.title&&(n.title=e.title),n.version=e.version,e.description&&(n.description=e.description),n.termsOfService=e.termsOfService}if(s){const e=l(s);n.contact={name:e.name,url:e.url,email:e.email}}if(o){const e=l(o);n.license={name:e.name,url:e.url,identifier:e.identifier}}return n}function l(c){const i={};return c.arguments?.forEach(t=>{t.value.kind==="StringValue"&&(i[t.name.value]=t.value.value)}),i}function a(c){const i=c.trim();if(!i)return null;const t=i.split(` `),s=t[0].trim();if(s.startsWith("# ")){const o=s.substring(2).trim(),r=t.slice(1).join(` `).trim();return{title:o||void 0,description:r||void 0}}return{description:i}}export{f as extractInfoFromDirectives};