UNPKG

graphql-gene

Version:

Generates automatically an executable schema out of your ORM models

3 lines (2 loc) 2.22 kB
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=require("graphql"),o=require("./utils/index.cjs");function A(e){let i=e.schema;Object.entries(e.types).forEach(([,c])=>{const t=L({typeDefLines:e.typeDefLines,schema:i,types:e.types,plugins:e.plugins,model:c});t&&(i=t)});const n=o.getGloballyExtendedTypes(),s=p({typeDefLines:e.typeDefLines,schema:i,types:e.types,plugins:e.plugins,typeConfig:n.config,isAddingDirectives:!0});return s&&(i=s),i}function L(e){const i=o.getGeneConfigFromOptions(e),{types:n}=i||{};let s=p({...e,typeConfig:n});return Object.entries(i?.aliases||{}).forEach(([,c])=>{const{types:t}=c||{};s=p({...e,typeConfig:t})}),s}function p(e){const i=o.getGloballyExtendedTypes().geneConfig,n=e.typeConfig||{};return o.lookDeepInSchema({schema:e.schema,each({type:s,field:c,fieldDef:t,parentType:g}){const f=i[s];if(!(e.isAddingDirectives&&!!f?.directives?.length)&&!(g in n&&n[g]&&c in n[g]))return;let r;const v=n[g];if(v&&!o.isArrayFieldConfig(v)){const l=v[c];r=l?o.normalizeFieldConfig(l):void 0}const d=o.getReturnTypeName(r?.returnType||e.typeDefLines[g]?.lines[c]?.typeDef),h=e.types[d];if(s!==d)return;const T=h?e.plugins.find(l=>l.isMatching(h)):void 0;if(r?.resolver&&(t.resolve=async(l,y,m,a)=>{if(r.resolver&&typeof r.resolver!="string")return r.resolver({source:l,args:y,context:m,info:a});if(o.isUsingDefaultResolver(r)&&T?.defaultResolver)return await T.defaultResolver({model:h,modelKey:d,config:r,args:y,info:a})}),!e.isAddingDirectives)return;const u=[];if(f?.directives&&u.push(...f.directives),f?.aliases&&d in f.aliases){const l=f.aliases[d];l?.directives&&u.push(...l.directives)}r?.directives&&u.push(...r.directives),u.length&&[...u].reverse().forEach(y=>{t.resolve=t.resolve||b.defaultFieldResolver;const m=t.resolve;t.resolve=async(a,R,D,F)=>{let S=!1,C;const E=async()=>(S=!0,C=await m(a,R,D,F),C);return await y.handler({source:a,args:R,context:D,info:F,field:c,filter:w({source:a,field:c}),resolve:E}),S||await E(),C}})}}),e.schema}function w(e){const{field:i}=e;return n=>{const s=e.source;Array.isArray(s[i])?s[i]=s[i].filter(n):s[i]&&!n(s[i])&&(s[i]=null)}}exports.addResolversToSchema=A; //# sourceMappingURL=resolvers.cjs.map