UNPKG

graphql-gene

Version:

Generates automatically an executable schema out of your ORM models

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