/**
 * Minified by jsDelivr using Terser v5.39.0.
 * Original file: /npm/graphql-constraint-directive@6.0.0/index.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
const{GraphQLNonNull:GraphQLNonNull,GraphQLList:GraphQLList,separateOperations:separateOperations,GraphQLError:GraphQLError,getDirectiveValues:getDirectiveValues}=require("graphql"),QueryValidationVisitor=require("./lib/query-validation-visitor.js"),{validateQuery:validateQuery}=require("./lib/validate-query"),{getDirective:getDirective,mapSchema:mapSchema,MapperKind:MapperKind}=require("@graphql-tools/utils"),{getConstraintTypeObject:getConstraintTypeObject,getScalarType:getScalarType}=require("./lib/type-utils"),{constraintDirectiveTypeDefs:constraintDirectiveTypeDefs,constraintDirectiveTypeDefsObj:constraintDirectiveTypeDefsObj}=require("./lib/type-defs");function constraintDirective(){const e={};function t(t,i){const r=getScalarType(t.type),n=t.astNode.name.value;t.type=function(t,i,r,n,a,o){let s;s=n.uniqueTypeName?n.uniqueTypeName.replace(/\W/g,""):`${t}_${a?"List_":""}${o?"ListNotNull_":""}${i.name}_${r?"NotNull_":""}`+Object.entries(n).map((([e,t])=>"min"===e||"max"===e||"exclusiveMin"===e||"exclusiveMax"===e||"multipleOf"===e?`${e}_${t.toString().replace(/\W/g,"dot")}`:`${e}_${t.toString().replace(/\W/g,"")}`)).join("_");const c=Symbol.for(s);let l=e[c];return l||(l=getConstraintTypeObject(t,i,s,n),r&&(l=new GraphQLNonNull(l)),a&&(l=new GraphQLList(l),o&&(l=new GraphQLNonNull(l))),e[c]=l,l)}(n,r.scalarType,r.scalarNotNull,i,r.list,r.listNotNull)}return e=>mapSchema(e,{[MapperKind.FIELD]:i=>{const r=getDirective(e,i,"constraint")?.[0];if(r)return t(i,r),i},[MapperKind.ARGUMENT]:i=>{const r=getDirective(e,i,"constraint")?.[0];if(r)return t(i,r),i}})}function constraintDirectiveDocumentation(e){let t={minLength:"Minimal length",maxLength:"Maximal length",startsWith:"Starts with",endsWith:"Ends with",contains:"Contains",notContains:"Doesn't contain",pattern:"Must match RegEx pattern",format:"Must match format",min:"Minimal value",max:"Maximal value",exclusiveMin:"Grater than",exclusiveMax:"Less than",multipleOf:"Must be a multiple of",minItems:"Minimal number of items",maxItems:"Maximal number of items"};e?.descriptionsMap&&(t=e.descriptionsMap);let i="*Constraints:*";function r(e,r){if(e.description){if(e.description.includes(i))return;e.description+="\n\n"}else e.description="";e.description+=i+"\n",Object.entries(r).forEach((([i,r])=>{"uniqueTypeName"!==i&&(e.description+=`* ${t[i]?t[i]:i}: \`${r}\`\n`)})),e.astNode?.description&&(e.astNode.description.value=e.description)}return e?.header&&(i=e.header),e=>mapSchema(e,{[MapperKind.FIELD]:e=>{if(e?.astNode){const t=getDirectiveValues(constraintDirectiveTypeDefsObj,e.astNode);if(t)return r(e,t),e}},[MapperKind.ARGUMENT]:e=>{if(e?.astNode){const t=getDirectiveValues(constraintDirectiveTypeDefsObj,e.astNode);if(t)return r(e,t),e}}})}function createApolloQueryValidationPlugin({schema:e},t={}){return{requestDidStart:async()=>({async didResolveOperation({request:i,document:r}){const n=i.operationName?separateOperations(r)[i.operationName]:r,a=validateQuery(e,n,i.variables,i.operationName,t);if(a.length>0)throw a.map((e=>{const{UserInputError:t}=require("apollo-server-errors");return new t(e.message,{field:e.fieldName,context:e.context})}))}})}}function createEnvelopQueryValidationPlugin(e={}){return{onExecute({args:t,setResultAndStopExecution:i}){const r=validateQuery(t.schema,t.document,t.variableValues,t.operationName,e);r.length>0&&i({errors:r.map((e=>new GraphQLError(e.message,{extensions:{code:e.code,field:e.fieldName,context:e.context}})))})}}}function createQueryValidationRule(e){return t=>new QueryValidationVisitor(t,e)}module.exports={constraintDirective:constraintDirective,constraintDirectiveDocumentation:constraintDirectiveDocumentation,constraintDirectiveTypeDefs:constraintDirectiveTypeDefs,validateQuery:validateQuery,createApolloQueryValidationPlugin:createApolloQueryValidationPlugin,createEnvelopQueryValidationPlugin:createEnvelopQueryValidationPlugin,createQueryValidationRule:createQueryValidationRule};
//# sourceMappingURL=/sm/ed951cbef4107f53b9b577771d354e6c24c2ab803135459095b66a69f52683c0.map