graphql-gene
Version:
Generates automatically an executable schema out of your ORM models
8 lines (5 loc) • 4.21 kB
JavaScript
;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("graphql");function d(){return globalThis.__graphqlGeneExtendedTypes=globalThis.__graphqlGeneExtendedTypes??{config:{},geneConfig:{}},globalThis.__graphqlGeneExtendedTypes}function b(e,t){if(!t)return;const i=d();i.geneConfig[e]=t}function D(e){const t=d();Object.entries(e).forEach(([i,r])=>{if(!y(r))throw new Error(`Provided field config for type "${i}" must be an object.`);const n=i;t.config[n]=t.config[n]||{},t.config[n]={...t.config[n],...r}})}function F(e,t){if(!e&&(!t||!t.length))return;let i;if(e&&(i=typeof e=="string"?c.buildSchema(e):e instanceof c.GraphQLSchema?e:c.buildASTSchema(e)),t?.length){const n=t.filter(o=>!i?.getType(o)).map(o=>`scalar ${o}`).join(`
`);i=i?c.extendSchema(i,c.parse(n)):c.buildSchema(n)}return i}function O(e){const t=e.schema.getQueryType(),i=e.schema.getMutationType();if(!t&&!i)return;const r=new Set([]),n=(o,s)=>{if(r.has(o.name))return;r.add(o.name);const f=o.getFields();Object.entries(f).forEach(([h,T])=>{const l=T,a=T.type;if(!l||!a)return;const u=p(a);if(!u)return;const S=e.each({field:h,fieldDef:l,get isList(){return l instanceof c.GraphQLList||"ofType"in a&&a.ofType instanceof c.GraphQLList},get isNonNullable(){return l instanceof c.GraphQLNonNull},parentType:o.name,parentTypeDef:o,state:s,type:u.name,get typeDef(){return e.schema.getType(u.name)}});"getFields"in u&&n(u,S||s)})};t&&n(t,e.state||{}),i&&n(i,e.state||{})}function p(e){const t="ofType"in e?p(e.ofType):e;if(t&&"name"in t)return t}function j(e){const t=Array.isArray(e),i=t?typeof e[0]:typeof e,r={string:"String",number:"Int",boolean:"Boolean"};return t?`[${r[i]}!]`:r[i]}function v(e){let t="";const i=n=>{c.isScalarType(n)&&(t+=`scalar ${n.name}
`),n&&"astNode"in n&&n.astNode&&(t+=`${c.print(n.astNode)}
`)};e.getDirectives().forEach(n=>{c.isSpecifiedDirective(n)||i(n)});const r=Object.entries(e.getTypeMap());return r.sort(([n],[o])=>n==="Query"?-1:n==="Mutation"?o==="Query"?1:-1:o==="Query"?1:o==="Mutation"?n==="Query"?-1:1:n.localeCompare(o)),r.filter(([n])=>!/^__/.test(n)).forEach(([,n])=>{c.isSpecifiedScalarType(n)||i(n)}),t.replace(/\n$/,"")}function E(e){return["resolver","args"].some(t=>t in e&&e[t]==="default")}function m(){return{varType:"type",directives:new Set([]),lines:{}}}function A(){return{directives:new Set([]),typeDef:"",argsDef:{}}}function y(e){return e!==null&&typeof e=="object"}function G(e){for(const t in e)return!1;return!0}function x(e){return Array.isArray(e)}function C(e){return y(e)}function L(e){return typeof e=="string"?{returnType:e}:e}function k(e){return(e.kind==="NonNullType"?e.type:e).kind==="ListType"}function g(e){return"type"in e?g(e.type):e.name.value}function Q(e){const t=e.schema.getType(e.parent);if(!t)return;const r=("getFields"in t?t.getFields():void 0)?.[e.field];return r&&"resolve"in r?r:void 0}function _(e){return g(c.parseType(e))}function w(e){return e.geneConfig||e.model&&(typeof e.model=="object"||typeof e.model=="function")&&"geneConfig"in e.model&&e.model.geneConfig||void 0}function q(e,t){const i=e||{},r=s=>{for(const f of s)if(typeof f=="string"&&f===t||f instanceof RegExp&&f.test(t))return!0};if(i.include&&!r(i.include))return!1;let n=new Set(["createdAt","updatedAt"]);Array.isArray(i.includeTimestamps)?i.includeTimestamps.forEach(s=>n.delete(s)):i.includeTimestamps===!0&&(n=new Set([]));const o=[...i.exclude||[],...n];return!r(o)}function N(e,t,i){e[i]={...m(),...e[i]},e[i].varType=t}exports.createTypeDefLines=N;exports.extendTypes=D;exports.findAccurateTypeDef=p;exports.findTypeNameFromTypeNode=g;exports.getDefaultFieldLinesObject=A;exports.getDefaultTypeDefLinesObject=m;exports.getFieldDefinition=Q;exports.getGeneConfigFromOptions=w;exports.getGloballyExtendedTypes=d;exports.getGraphqlType=j;exports.getReturnTypeName=_;exports.isArrayFieldConfig=x;exports.isEmptyObject=G;exports.isFieldIncluded=q;exports.isListType=k;exports.isObject=y;exports.isObjectFieldConfig=C;exports.isUsingDefaultResolver=E;exports.lookDeepInSchema=O;exports.normalizeFieldConfig=L;exports.parseSchemaOption=F;exports.printSchemaWithDirectives=v;exports.setGeneConfigByType=b;
//# sourceMappingURL=index.cjs.map