/**
 * Minified by jsDelivr using Terser v5.37.0.
 * Original file: /npm/eslint-plugin-graphql@4.0.0/lib/index.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
"use strict";var _interopRequireWildcard=require("@babel/runtime/helpers/interopRequireWildcard"),_interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.processors=exports.rules=void 0;var _fs=_interopRequireDefault(require("fs")),_path=_interopRequireDefault(require("path")),_graphql=require("graphql"),_lodash=_interopRequireDefault(require("lodash.flatten")),_lodash2=_interopRequireDefault(require("lodash.without")),_graphqlConfig=require("graphql-config"),customRules=_interopRequireWildcard(require("./customGraphQLValidationRules")),_constants=require("./constants"),_createRule=require("./createRule");const allGraphQLValidatorNames=_graphql.specifiedRules.map((e=>e.name)),envGraphQLValidatorNames={apollo:(0,_lodash2.default)(allGraphQLValidatorNames,"KnownFragmentNames","NoUnusedFragments","KnownFragmentNamesRule","NoUnusedFragmentsRule"),lokka:(0,_lodash2.default)(allGraphQLValidatorNames,"KnownFragmentNames","NoUnusedFragments","KnownFragmentNamesRule","NoUnusedFragmentsRule"),fraql:(0,_lodash2.default)(allGraphQLValidatorNames,"KnownFragmentNames","NoUnusedFragments","KnownFragmentNamesRule","NoUnusedFragmentsRule"),relay:(0,_lodash2.default)(allGraphQLValidatorNames,"KnownDirectives","KnownFragmentNames","NoUndefinedVariables","NoUnusedFragments","KnownDirectivesRule","KnownFragmentNamesRule","NoUndefinedVariablesRule","NoUnusedFragmentsRule","ProvidedNonNullArguments","ProvidedRequiredArguments","ScalarLeafs","ProvidedRequiredArgumentsRule","ScalarLeafsRule"),literal:(0,_lodash2.default)(allGraphQLValidatorNames,"KnownFragmentNames","NoUnusedFragments","KnownFragmentNamesRule","NoUnusedFragmentsRule")},gqlFiles=["gql","graphql"],defaultRuleProperties={env:{enum:["lokka","fraql","relay","apollo","literal"]},schemaJson:{type:"object"},schemaJsonFilepath:{type:"string"},schemaString:{type:"string"},tagName:{type:"string",pattern:"^[$_a-zA-Z$_][a-zA-Z0-9$_]+(\\.[a-zA-Z0-9$_]+)?$"},projectName:{type:"string"}},schemaPropsExclusiveness={oneOf:[{required:["schemaJson"],not:{required:["schemaString","schemaJsonFilepath","projectName"]}},{required:["schemaJsonFilepath"],not:{required:["schemaJson","schemaString","projectName"]}},{required:["schemaString"],not:{required:["schemaJson","schemaJsonFilepath","projectName"]}},{not:{anyOf:[{required:["schemaString"]},{required:["schemaJson"]},{required:["schemaJsonFilepath"]}]}}]},rules={"template-strings":{meta:{schema:{type:"array",items:{additionalProperties:!1,properties:{...defaultRuleProperties,validators:{oneOf:[{type:"array",uniqueItems:!0,items:{enum:allGraphQLValidatorNames}},{enum:["all"]}]}},...schemaPropsExclusiveness}}},create:e=>(0,_createRule.createRule)(e,(r=>parseOptions(r,e)))},"named-operations":{meta:{schema:{type:"array",items:{additionalProperties:!1,properties:{...defaultRuleProperties},...schemaPropsExclusiveness}}},create:e=>(0,_createRule.createRule)(e,(r=>parseOptions({validators:["OperationsMustHaveNames"],...r},e)))},"required-fields":{meta:{schema:{type:"array",minItems:1,items:{additionalProperties:!1,properties:{...defaultRuleProperties,requiredFields:{type:"array",items:{type:"string"}}},required:["requiredFields"],...schemaPropsExclusiveness}}},create:e=>(0,_createRule.createRule)(e,(r=>parseOptions({validators:["RequiredFields"],options:{requiredFields:r.requiredFields},...r},e)))},"capitalized-type-name":{meta:{schema:{type:"array",items:{additionalProperties:!1,properties:{...defaultRuleProperties},...schemaPropsExclusiveness}}},create:e=>(0,_createRule.createRule)(e,(r=>parseOptions({validators:["typeNamesShouldBeCapitalized"],...r},e)))},"no-deprecated-fields":{meta:{schema:{type:"array",items:{additionalProperties:!1,properties:{...defaultRuleProperties},...schemaPropsExclusiveness}}},create:e=>(0,_createRule.createRule)(e,(r=>parseOptions({validators:["noDeprecatedFields"],...r},e)))}};exports.rules=rules;const schemaCache={},projectCache={};function parseOptions(e,r){const{schemaJson:a,schemaJsonFilepath:t,schemaString:s,env:i,projectName:o,tagName:l,validators:n}=e,u=schemaCache[JSON.stringify(e)];if(u&&"literal"!==i)return u;let p,c,m;if(a)p=initSchema(a);else if(t)p=initSchemaFromFile(t);else if(s)p=initSchemaFromString(s);else try{const e=(0,_graphqlConfig.loadConfigSync)({rootDir:_path.default.resolve(process.cwd(),_path.default.dirname(r.getFilename()))});let a;if(o){if(a=e.getProject(o),!a)throw new Error(`Project with name "${o}" not found in ${e.filepath}.`)}else try{a=e.getProjectForFile(r.getFilename())}catch(e){if(!(e instanceof _graphqlConfig.ProjectNotFoundError))throw e}if(a){const r=`${e.filepath}[${a.name}]`;p=projectCache[r],p||(p=a.getSchemaSync(),projectCache[r]=p)}if(u)return{...u,schema:p}}catch(e){if(e instanceof _graphqlConfig.ConfigNotFoundError)throw new Error("Must provide GraphQL Config file or pass in `schemaJson` option with schema object or `schemaJsonFilepath` with absolute path to the json file.");throw e}if(i&&"lokka"!==i&&"fraql"!==i&&"relay"!==i&&"apollo"!==i&&"literal"!==i)throw new Error("Invalid option for env, only `apollo`, `lokka`, `fraql`, `relay`, and `literal` supported.");c=l||("relay"===i?"Relay.QL":"literal"===i?_constants.internalTag:"gql"),m="all"===n?allGraphQLValidatorNames:n||(envGraphQLValidatorNames[i]||allGraphQLValidatorNames);const d={schema:p,env:i,tagName:c,validators:m.map((e=>e in customRules?customRules[e]:require(`graphql/validation/rules/${e}`)[e]))};return schemaCache[JSON.stringify(e)]=d,d}function initSchema(e){const r=e.data?e.data:e;if(!r.__schema)throw new Error("Please pass a valid GraphQL introspection query result.");return(0,_graphql.buildClientSchema)(r)}function initSchemaFromFile(e){return initSchema(JSON.parse(_fs.default.readFileSync(e,"utf8")))}function initSchemaFromString(e){return(0,_graphql.buildSchema)(e)}const gqlProcessor={preprocess:function(e){const r=e.replace(/[`\\]|\$\{/g,"\\$&");return[`${_constants.internalTag}\`${r}\``]},postprocess:function(e){return(0,_lodash.default)(e).filter((e=>Object.keys(rules).map((e=>`graphql/${e}`)).includes(e.ruleId)))}},processors=gqlFiles.reduce(((e,r)=>({...e,[`.${r}`]:gqlProcessor})),{});exports.processors=processors;var _default={rules:rules,processors:processors};exports.default=_default;
//# sourceMappingURL=/sm/b28416b1d0255d348c3d2b95d0d5475406def667c01727536e7be69e27500880.map