diff --git a/.github/actions/subtree-split-push/action.yml b/.github/actions/subtree-split-push/action.yml index e013cf232..638928fe7 100644 --- a/.github/actions/subtree-split-push/action.yml +++ b/.github/actions/subtree-split-push/action.yml @@ -23,8 +23,8 @@ runs: shell: bash run: | git fetch ${{ inputs.remote }} ${{ inputs.target-branch }} - splitResult=$(git subtree -P ${{ inputs.subtree }} split --squash --rejoin -m "split: ${{ inputs.subtree }} - PR #${{ inputs.pr-number }} - ${{ inputs.pr-title }}") + splitResult=$(sh git-subtree.sh -P ${{ inputs.subtree }} split --squash --rejoin -m "split: ${{ inputs.subtree }} - PR #${{ inputs.pr-number }} - ${{ inputs.pr-title }}") if [ ! -z "$splitResult" ] then - git subtree push -P ${{ inputs.subtree }} ${{ inputs.remote }} ${{ inputs.target-branch }} + sh git-subtree.sh push -P ${{ inputs.subtree }} ${{ inputs.remote }} ${{ inputs.target-branch }} fi diff --git a/Tests/ApolloCodegenTests/AnimalKingdomAPI/AnimalKingdomIRCreationTests.swift b/Tests/ApolloCodegenTests/AnimalKingdomAPI/AnimalKingdomIRCreationTests.swift index a5959547b..e64d5a770 100644 --- a/Tests/ApolloCodegenTests/AnimalKingdomAPI/AnimalKingdomIRCreationTests.swift +++ b/Tests/ApolloCodegenTests/AnimalKingdomAPI/AnimalKingdomIRCreationTests.swift @@ -1040,4 +1040,54 @@ final class AnimalKingdomIRCreationTests: XCTestCase { expect(selectionSet.parentType).to(equal(GraphQLObjectType.mock("Height"))) expect(actual).to(shallowlyMatch(self.expected)) } + + // MARK: - Referenced Fragment Tests + + func test__referencedFragments__AllAnimalsQuery_isCorrect() throws { + // given + let operation = compilationResult.operations.first { $0.name == "AllAnimalsQuery" } + + // when + let expected: [CompilationResult.FragmentDefinition] = [ + "HeightInMeters", + "WarmBloodedDetails", + "PetDetails" + ].map { expectedName in + compilationResult.fragments.first(where:{ $0.name == expectedName })! + } + + // then + expect(operation?.referencedFragments).to(equal(expected)) + } + + func test__referencedFragments__HeightInMeters_isCorrect() throws { + // given + let fragment = compilationResult.fragments.first { $0.name == "HeightInMeters" } + + // then + expect(fragment?.referencedFragments).to(beEmpty()) + } + + func test__referencedFragments__WarmBloodedDetails_isCorrect() throws { + // given + let fragment = compilationResult.fragments.first { $0.name == "WarmBloodedDetails" } + + // when + let expected: [CompilationResult.FragmentDefinition] = [ + "HeightInMeters" + ].map { expectedName in + compilationResult.fragments.first(where:{ $0.name == expectedName })! + } + + // then + expect(fragment?.referencedFragments).to(equal(expected)) + } + + func test__referencedFragments__PetDetails_isCorrect() throws { + // given + let fragment = compilationResult.fragments.first { $0.name == "PetDetails" } + + // then + expect(fragment?.referencedFragments).to(beEmpty()) + } } diff --git a/apollo-ios-codegen/.gitignore b/apollo-ios-codegen/.gitignore index 89cb65e8a..130007eea 100644 --- a/apollo-ios-codegen/.gitignore +++ b/apollo-ios-codegen/.gitignore @@ -72,7 +72,7 @@ SwiftScripts/.build-** .netlify # Generated js files we don't need committed -Sources/ApolloCodegenLib/Frontend/dist/ +Sources/GraphQLCompiler/JavaScript/dist/ # Local generated packages we don't need in the main project Sources/AnimalKingdomAPI/Generated/Package.swift diff --git a/apollo-ios-codegen/Sources/GraphQLCompiler/ApolloCodegenFrontendBundle.swift b/apollo-ios-codegen/Sources/GraphQLCompiler/ApolloCodegenFrontendBundle.swift index b7a43278d..2be702341 100644 --- a/apollo-ios-codegen/Sources/GraphQLCompiler/ApolloCodegenFrontendBundle.swift +++ b/apollo-ios-codegen/Sources/GraphQLCompiler/ApolloCodegenFrontendBundle.swift @@ -1 +1 @@ -let ApolloCodegenFrontendBundle: String = #"var ApolloCodegenFrontend=function(e){"use strict";function t(e){return"object"==typeof e&&null!==e}function n(e,t){if(!e)throw new Error(null!=t?t:"Unexpected invariant triggered.")}const r=/\r\n|[\n\r]/g;function i(e,t){let i=0,o=1;for(const s of e.body.matchAll(r)){if("number"==typeof s.index||n(!1),s.index>=t)break;i=s.index+s[0].length,o+=1}return{line:o,column:t+1-i}}function o(e,t){const n=e.locationOffset.column-1,r="".padStart(n)+e.body,i=t.line-1,o=e.locationOffset.line-1,a=t.line+o,c=1===t.line?n:0,u=t.column+c,l=`${e.name}:${a}:${u}\n`,p=r.split(/\r\n|[\n\r]/g),d=p[i];if(d.length>120){const e=Math.floor(u/80),t=u%80,n=[];for(let e=0;e["|",e])),["|","^".padStart(t)],["|",n[e+1]]])}return l+s([[a-1+" |",p[i-1]],[`${a} |`,d],["|","^".padStart(u)],[`${a+1} |`,p[i+1]]])}function s(e){const t=e.filter((([e,t])=>void 0!==t)),n=Math.max(...t.map((([e])=>e.length)));return t.map((([e,t])=>e.padStart(n)+(t?" "+t:""))).join("\n")}class GraphQLError extends Error{constructor(e,n={}){const{nodes:r,source:o,positions:s,path:c,originalError:u,extensions:l}=n;super(e),this.name="GraphQLError",this.path=c??void 0,this.originalError=u??void 0,this.nodes=a(Array.isArray(r)?r:r?[r]:void 0);const p=a(this.nodes?.map((e=>e.loc)).filter((e=>null!=e)));this.source=o??p?.[0]?.source,this.positions=s??p?.map((e=>e.start)),this.locations=s&&o?s.map((e=>i(o,e))):p?.map((e=>i(e.source,e.start)));const d=t(u?.extensions)?u?.extensions:void 0;this.extensions=l??d??Object.create(null),Object.defineProperties(this,{message:{writable:!0,enumerable:!0},name:{enumerable:!1},nodes:{enumerable:!1},source:{enumerable:!1},positions:{enumerable:!1},originalError:{enumerable:!1}}),u?.stack?Object.defineProperty(this,"stack",{value:u.stack,writable:!0,configurable:!0}):Error.captureStackTrace?Error.captureStackTrace(this,GraphQLError):Object.defineProperty(this,"stack",{value:Error().stack,writable:!0,configurable:!0})}get[Symbol.toStringTag](){return"GraphQLError"}toString(){let e=this.message;if(this.nodes)for(const n of this.nodes)n.loc&&(e+="\n\n"+o((t=n.loc).source,i(t.source,t.start)));else if(this.source&&this.locations)for(const t of this.locations)e+="\n\n"+o(this.source,t);var t;return e}toJSON(){const e={message:this.message};return null!=this.locations&&(e.locations=this.locations),null!=this.path&&(e.path=this.path),null!=this.extensions&&Object.keys(this.extensions).length>0&&(e.extensions=this.extensions),e}}function a(e){return void 0===e||0===e.length?void 0:e}function c(e,t,n){return new GraphQLError(`Syntax Error: ${n}`,{source:e,positions:[t]})}class Location{constructor(e,t,n){this.start=e.start,this.end=t.end,this.startToken=e,this.endToken=t,this.source=n}get[Symbol.toStringTag](){return"Location"}toJSON(){return{start:this.start,end:this.end}}}class Token{constructor(e,t,n,r,i,o){this.kind=e,this.start=t,this.end=n,this.line=r,this.column=i,this.value=o,this.prev=null,this.next=null}get[Symbol.toStringTag](){return"Token"}toJSON(){return{kind:this.kind,value:this.value,line:this.line,column:this.column}}}const u={Name:[],Document:["definitions"],OperationDefinition:["name","variableDefinitions","directives","selectionSet"],VariableDefinition:["variable","type","defaultValue","directives"],Variable:["name"],SelectionSet:["selections"],Field:["alias","name","arguments","directives","selectionSet","nullabilityAssertion"],Argument:["name","value"],ListNullabilityOperator:["nullabilityAssertion"],NonNullAssertion:["nullabilityAssertion"],ErrorBoundary:["nullabilityAssertion"],FragmentSpread:["name","directives"],InlineFragment:["typeCondition","directives","selectionSet"],FragmentDefinition:["name","variableDefinitions","typeCondition","directives","selectionSet"],IntValue:[],FloatValue:[],StringValue:[],BooleanValue:[],NullValue:[],EnumValue:[],ListValue:["values"],ObjectValue:["fields"],ObjectField:["name","value"],Directive:["name","arguments"],NamedType:["name"],ListType:["type"],NonNullType:["type"],SchemaDefinition:["description","directives","operationTypes"],OperationTypeDefinition:["type"],ScalarTypeDefinition:["description","name","directives"],ObjectTypeDefinition:["description","name","interfaces","directives","fields"],FieldDefinition:["description","name","arguments","type","directives"],InputValueDefinition:["description","name","type","defaultValue","directives"],InterfaceTypeDefinition:["description","name","interfaces","directives","fields"],UnionTypeDefinition:["description","name","directives","types"],EnumTypeDefinition:["description","name","directives","values"],EnumValueDefinition:["description","name","directives"],InputObjectTypeDefinition:["description","name","directives","fields"],DirectiveDefinition:["description","name","arguments","locations"],SchemaExtension:["directives","operationTypes"],ScalarTypeExtension:["name","directives"],ObjectTypeExtension:["name","interfaces","directives","fields"],InterfaceTypeExtension:["name","interfaces","directives","fields"],UnionTypeExtension:["name","directives","types"],EnumTypeExtension:["name","directives","values"],InputObjectTypeExtension:["name","directives","fields"]},l=new Set(Object.keys(u));function p(e){const t=e?.kind;return"string"==typeof t&&l.has(t)}var d,f,h,m;function E(e){return 9===e||32===e}function T(e){return e>=48&&e<=57}function y(e){return e>=97&&e<=122||e>=65&&e<=90}function N(e){return y(e)||95===e}function v(e){return y(e)||T(e)||95===e}function I(e){let t=Number.MAX_SAFE_INTEGER,n=null,r=-1;for(let i=0;i0===n?e:e.slice(t))).slice(n??0,r+1)}function g(e){let t=0;for(;t",e.EOF="",e.BANG="!",e.QUESTION_MARK="?",e.DOLLAR="$",e.AMP="&",e.PAREN_L="(",e.PAREN_R=")",e.SPREAD="...",e.COLON=":",e.EQUALS="=",e.AT="@",e.BRACKET_L="[",e.BRACKET_R="]",e.BRACE_L="{",e.PIPE="|",e.BRACE_R="}",e.NAME="Name",e.INT="Int",e.FLOAT="Float",e.STRING="String",e.BLOCK_STRING="BlockString",e.COMMENT="Comment"}(m||(m={}));class Lexer{constructor(e){const t=new Token(m.SOF,0,0,0,0);this.source=e,this.lastToken=t,this.token=t,this.line=1,this.lineStart=0}get[Symbol.toStringTag](){return"Lexer"}advance(){this.lastToken=this.token;return this.token=this.lookahead()}lookahead(){let e=this.token;if(e.kind!==m.EOF)do{if(e.next)e=e.next;else{const t=w(this,e.end);e.next=t,t.prev=e,e=t}}while(e.kind===m.COMMENT);return e}}function O(e){return e>=0&&e<=55295||e>=57344&&e<=1114111}function S(e,t){return b(e.charCodeAt(t))&&L(e.charCodeAt(t+1))}function b(e){return e>=55296&&e<=56319}function L(e){return e>=56320&&e<=57343}function A(e,t){const n=e.source.body.codePointAt(t);if(void 0===n)return m.EOF;if(n>=32&&n<=126){const e=String.fromCodePoint(n);return'"'===e?"'\"'":`"${e}"`}return"U+"+n.toString(16).toUpperCase().padStart(4,"0")}function D(e,t,n,r,i){const o=e.line,s=1+n-e.lineStart;return new Token(t,n,r,o,s,i)}function w(e,t){const n=e.source.body,r=n.length;let i=t;for(;i=48&&e<=57?e-48:e>=65&&e<=70?e-55:e>=97&&e<=102?e-87:-1}function U(e,t){const n=e.source.body;switch(n.charCodeAt(t+1)){case 34:return{value:'"',size:2};case 92:return{value:"\\",size:2};case 47:return{value:"/",size:2};case 98:return{value:"\b",size:2};case 102:return{value:"\f",size:2};case 110:return{value:"\n",size:2};case 114:return{value:"\r",size:2};case 116:return{value:"\t",size:2}}throw c(e.source,t,`Invalid character escape sequence: "${n.slice(t,t+2)}".`)}function V(e,t){const n=e.source.body,r=n.length;let i=e.lineStart,o=t+3,s=o,a="";const u=[];for(;oB)return"[Array]";const n=Math.min(j,e.length),r=e.length-n,i=[];for(let r=0;r1&&i.push(`... ${r} more items`);return"["+i.join(", ")+"]"}(e,n);return function(e,t){const n=Object.entries(e);if(0===n.length)return"{}";if(t.length>B)return"["+function(e){const t=Object.prototype.toString.call(e).replace(/^\[object /,"").replace(/]$/,"");if("Object"===t&&"function"==typeof e.constructor){const t=e.constructor.name;if("string"==typeof t&&""!==t)return t}return t}(e)+"]";const r=n.map((([e,n])=>e+": "+J(n,t)));return"{ "+r.join(", ")+" }"}(e,n)}(e,t);default:return String(e)}}const q="production"===globalThis.process?.env.NODE_ENV?function(e,t){return e instanceof t}:function(e,t){if(e instanceof t)return!0;if("object"==typeof e&&null!==e){const n=t.prototype[Symbol.toStringTag];if(n===(Symbol.toStringTag in e?e[Symbol.toStringTag]:e.constructor?.name)){const t=Y(e);throw new Error(`Cannot use ${n} "${t}" from another module or realm.\n\nEnsure that there is only one instance of "graphql" in the node_modules\ndirectory. If different versions of "graphql" are the dependencies of other\nrelied on modules, use "resolutions" to ensure only one version is installed.\n\nhttps://yarnpkg.com/en/docs/selective-version-resolutions\n\nDuplicate "graphql" modules cannot be used at the same time since different\nversions may have different capabilities and behavior. The data from one\nversion used in the function from another could produce confusing and\nspurious results.`)}}return!1};class Source{constructor(e,t="GraphQL request",n={line:1,column:1}){this.body=e,this.name=t,this.locationOffset=n,this.locationOffset.line>0||M(!1,"line in locationOffset is 1-indexed and must be positive."),this.locationOffset.column>0||M(!1,"column in locationOffset is 1-indexed and must be positive.")}get[Symbol.toStringTag](){return"Source"}}function K(e,t){return new Parser(e,t).parseDocument()}class Parser{constructor(e,t={}){const n=function(e){return q(e,Source)}(e)?e:new Source(e);this._lexer=new Lexer(n),this._options=t,this._tokenCounter=0}parseName(){const e=this.expectToken(m.NAME);return this.node(e,{kind:h.NAME,value:e.value})}parseDocument(){return this.node(this._lexer.token,{kind:h.DOCUMENT,definitions:this.many(m.SOF,this.parseDefinition,m.EOF)})}parseDefinition(){if(this.peek(m.BRACE_L))return this.parseOperationDefinition();const e=this.peekDescription(),t=e?this._lexer.lookahead():this._lexer.token;if(t.kind===m.NAME){switch(t.value){case"schema":return this.parseSchemaDefinition();case"scalar":return this.parseScalarTypeDefinition();case"type":return this.parseObjectTypeDefinition();case"interface":return this.parseInterfaceTypeDefinition();case"union":return this.parseUnionTypeDefinition();case"enum":return this.parseEnumTypeDefinition();case"input":return this.parseInputObjectTypeDefinition();case"directive":return this.parseDirectiveDefinition()}if(e)throw c(this._lexer.source,this._lexer.token.start,"Unexpected description, descriptions are supported only on type definitions.");switch(t.value){case"query":case"mutation":case"subscription":return this.parseOperationDefinition();case"fragment":return this.parseFragmentDefinition();case"extend":return this.parseTypeSystemExtension()}}throw this.unexpected(t)}parseOperationDefinition(){const e=this._lexer.token;if(this.peek(m.BRACE_L))return this.node(e,{kind:h.OPERATION_DEFINITION,operation:d.QUERY,name:void 0,variableDefinitions:[],directives:[],selectionSet:this.parseSelectionSet()});const t=this.parseOperationType();let n;return this.peek(m.NAME)&&(n=this.parseName()),this.node(e,{kind:h.OPERATION_DEFINITION,operation:t,name:n,variableDefinitions:this.parseVariableDefinitions(),directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet()})}parseOperationType(){const e=this.expectToken(m.NAME);switch(e.value){case"query":return d.QUERY;case"mutation":return d.MUTATION;case"subscription":return d.SUBSCRIPTION}throw this.unexpected(e)}parseVariableDefinitions(){return this.optionalMany(m.PAREN_L,this.parseVariableDefinition,m.PAREN_R)}parseVariableDefinition(){return this.node(this._lexer.token,{kind:h.VARIABLE_DEFINITION,variable:this.parseVariable(),type:(this.expectToken(m.COLON),this.parseTypeReference()),defaultValue:this.expectOptionalToken(m.EQUALS)?this.parseConstValueLiteral():void 0,directives:this.parseConstDirectives()})}parseVariable(){const e=this._lexer.token;return this.expectToken(m.DOLLAR),this.node(e,{kind:h.VARIABLE,name:this.parseName()})}parseSelectionSet(){return this.node(this._lexer.token,{kind:h.SELECTION_SET,selections:this.many(m.BRACE_L,this.parseSelection,m.BRACE_R)})}parseSelection(){return this.peek(m.SPREAD)?this.parseFragment():this.parseField()}parseField(){const e=this._lexer.token,t=this.parseName();let n,r;return this.expectOptionalToken(m.COLON)?(n=t,r=this.parseName()):r=t,this.node(e,{kind:h.FIELD,alias:n,name:r,arguments:this.parseArguments(!1),nullabilityAssertion:this.parseNullabilityAssertion(),directives:this.parseDirectives(!1),selectionSet:this.peek(m.BRACE_L)?this.parseSelectionSet():void 0})}parseNullabilityAssertion(){if(!0!==this._options.experimentalClientControlledNullability)return;const e=this._lexer.token;let t;if(this.expectOptionalToken(m.BRACKET_L)){const n=this.parseNullabilityAssertion();this.expectToken(m.BRACKET_R),t=this.node(e,{kind:h.LIST_NULLABILITY_OPERATOR,nullabilityAssertion:n})}return this.expectOptionalToken(m.BANG)?t=this.node(e,{kind:h.NON_NULL_ASSERTION,nullabilityAssertion:t}):this.expectOptionalToken(m.QUESTION_MARK)&&(t=this.node(e,{kind:h.ERROR_BOUNDARY,nullabilityAssertion:t})),t}parseArguments(e){const t=e?this.parseConstArgument:this.parseArgument;return this.optionalMany(m.PAREN_L,t,m.PAREN_R)}parseArgument(e=!1){const t=this._lexer.token,n=this.parseName();return this.expectToken(m.COLON),this.node(t,{kind:h.ARGUMENT,name:n,value:this.parseValueLiteral(e)})}parseConstArgument(){return this.parseArgument(!0)}parseFragment(){const e=this._lexer.token;this.expectToken(m.SPREAD);const t=this.expectOptionalKeyword("on");return!t&&this.peek(m.NAME)?this.node(e,{kind:h.FRAGMENT_SPREAD,name:this.parseFragmentName(),directives:this.parseDirectives(!1)}):this.node(e,{kind:h.INLINE_FRAGMENT,typeCondition:t?this.parseNamedType():void 0,directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet()})}parseFragmentDefinition(){const e=this._lexer.token;return this.expectKeyword("fragment"),!0===this._options.allowLegacyFragmentVariables?this.node(e,{kind:h.FRAGMENT_DEFINITION,name:this.parseFragmentName(),variableDefinitions:this.parseVariableDefinitions(),typeCondition:(this.expectKeyword("on"),this.parseNamedType()),directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet()}):this.node(e,{kind:h.FRAGMENT_DEFINITION,name:this.parseFragmentName(),typeCondition:(this.expectKeyword("on"),this.parseNamedType()),directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet()})}parseFragmentName(){if("on"===this._lexer.token.value)throw this.unexpected();return this.parseName()}parseValueLiteral(e){const t=this._lexer.token;switch(t.kind){case m.BRACKET_L:return this.parseList(e);case m.BRACE_L:return this.parseObject(e);case m.INT:return this.advanceLexer(),this.node(t,{kind:h.INT,value:t.value});case m.FLOAT:return this.advanceLexer(),this.node(t,{kind:h.FLOAT,value:t.value});case m.STRING:case m.BLOCK_STRING:return this.parseStringLiteral();case m.NAME:switch(this.advanceLexer(),t.value){case"true":return this.node(t,{kind:h.BOOLEAN,value:!0});case"false":return this.node(t,{kind:h.BOOLEAN,value:!1});case"null":return this.node(t,{kind:h.NULL});default:return this.node(t,{kind:h.ENUM,value:t.value})}case m.DOLLAR:if(e){if(this.expectToken(m.DOLLAR),this._lexer.token.kind===m.NAME){const e=this._lexer.token.value;throw c(this._lexer.source,t.start,`Unexpected variable "$${e}" in constant value.`)}throw this.unexpected(t)}return this.parseVariable();default:throw this.unexpected()}}parseConstValueLiteral(){return this.parseValueLiteral(!0)}parseStringLiteral(){const e=this._lexer.token;return this.advanceLexer(),this.node(e,{kind:h.STRING,value:e.value,block:e.kind===m.BLOCK_STRING})}parseList(e){return this.node(this._lexer.token,{kind:h.LIST,values:this.any(m.BRACKET_L,(()=>this.parseValueLiteral(e)),m.BRACKET_R)})}parseObject(e){return this.node(this._lexer.token,{kind:h.OBJECT,fields:this.any(m.BRACE_L,(()=>this.parseObjectField(e)),m.BRACE_R)})}parseObjectField(e){const t=this._lexer.token,n=this.parseName();return this.expectToken(m.COLON),this.node(t,{kind:h.OBJECT_FIELD,name:n,value:this.parseValueLiteral(e)})}parseDirectives(e){const t=[];for(;this.peek(m.AT);)t.push(this.parseDirective(e));return t}parseConstDirectives(){return this.parseDirectives(!0)}parseDirective(e){const t=this._lexer.token;return this.expectToken(m.AT),this.node(t,{kind:h.DIRECTIVE,name:this.parseName(),arguments:this.parseArguments(e)})}parseTypeReference(){const e=this._lexer.token;let t;if(this.expectOptionalToken(m.BRACKET_L)){const n=this.parseTypeReference();this.expectToken(m.BRACKET_R),t=this.node(e,{kind:h.LIST_TYPE,type:n})}else t=this.parseNamedType();return this.expectOptionalToken(m.BANG)?this.node(e,{kind:h.NON_NULL_TYPE,type:t}):t}parseNamedType(){return this.node(this._lexer.token,{kind:h.NAMED_TYPE,name:this.parseName()})}peekDescription(){return this.peek(m.STRING)||this.peek(m.BLOCK_STRING)}parseDescription(){if(this.peekDescription())return this.parseStringLiteral()}parseSchemaDefinition(){const e=this._lexer.token,t=this.parseDescription();this.expectKeyword("schema");const n=this.parseConstDirectives(),r=this.many(m.BRACE_L,this.parseOperationTypeDefinition,m.BRACE_R);return this.node(e,{kind:h.SCHEMA_DEFINITION,description:t,directives:n,operationTypes:r})}parseOperationTypeDefinition(){const e=this._lexer.token,t=this.parseOperationType();this.expectToken(m.COLON);const n=this.parseNamedType();return this.node(e,{kind:h.OPERATION_TYPE_DEFINITION,operation:t,type:n})}parseScalarTypeDefinition(){const e=this._lexer.token,t=this.parseDescription();this.expectKeyword("scalar");const n=this.parseName(),r=this.parseConstDirectives();return this.node(e,{kind:h.SCALAR_TYPE_DEFINITION,description:t,name:n,directives:r})}parseObjectTypeDefinition(){const e=this._lexer.token,t=this.parseDescription();this.expectKeyword("type");const n=this.parseName(),r=this.parseImplementsInterfaces(),i=this.parseConstDirectives(),o=this.parseFieldsDefinition();return this.node(e,{kind:h.OBJECT_TYPE_DEFINITION,description:t,name:n,interfaces:r,directives:i,fields:o})}parseImplementsInterfaces(){return this.expectOptionalKeyword("implements")?this.delimitedMany(m.AMP,this.parseNamedType):[]}parseFieldsDefinition(){return this.optionalMany(m.BRACE_L,this.parseFieldDefinition,m.BRACE_R)}parseFieldDefinition(){const e=this._lexer.token,t=this.parseDescription(),n=this.parseName(),r=this.parseArgumentDefs();this.expectToken(m.COLON);const i=this.parseTypeReference(),o=this.parseConstDirectives();return this.node(e,{kind:h.FIELD_DEFINITION,description:t,name:n,arguments:r,type:i,directives:o})}parseArgumentDefs(){return this.optionalMany(m.PAREN_L,this.parseInputValueDef,m.PAREN_R)}parseInputValueDef(){const e=this._lexer.token,t=this.parseDescription(),n=this.parseName();this.expectToken(m.COLON);const r=this.parseTypeReference();let i;this.expectOptionalToken(m.EQUALS)&&(i=this.parseConstValueLiteral());const o=this.parseConstDirectives();return this.node(e,{kind:h.INPUT_VALUE_DEFINITION,description:t,name:n,type:r,defaultValue:i,directives:o})}parseInterfaceTypeDefinition(){const e=this._lexer.token,t=this.parseDescription();this.expectKeyword("interface");const n=this.parseName(),r=this.parseImplementsInterfaces(),i=this.parseConstDirectives(),o=this.parseFieldsDefinition();return this.node(e,{kind:h.INTERFACE_TYPE_DEFINITION,description:t,name:n,interfaces:r,directives:i,fields:o})}parseUnionTypeDefinition(){const e=this._lexer.token,t=this.parseDescription();this.expectKeyword("union");const n=this.parseName(),r=this.parseConstDirectives(),i=this.parseUnionMemberTypes();return this.node(e,{kind:h.UNION_TYPE_DEFINITION,description:t,name:n,directives:r,types:i})}parseUnionMemberTypes(){return this.expectOptionalToken(m.EQUALS)?this.delimitedMany(m.PIPE,this.parseNamedType):[]}parseEnumTypeDefinition(){const e=this._lexer.token,t=this.parseDescription();this.expectKeyword("enum");const n=this.parseName(),r=this.parseConstDirectives(),i=this.parseEnumValuesDefinition();return this.node(e,{kind:h.ENUM_TYPE_DEFINITION,description:t,name:n,directives:r,values:i})}parseEnumValuesDefinition(){return this.optionalMany(m.BRACE_L,this.parseEnumValueDefinition,m.BRACE_R)}parseEnumValueDefinition(){const e=this._lexer.token,t=this.parseDescription(),n=this.parseEnumValueName(),r=this.parseConstDirectives();return this.node(e,{kind:h.ENUM_VALUE_DEFINITION,description:t,name:n,directives:r})}parseEnumValueName(){if("true"===this._lexer.token.value||"false"===this._lexer.token.value||"null"===this._lexer.token.value)throw c(this._lexer.source,this._lexer.token.start,`${X(this._lexer.token)} is reserved and cannot be used for an enum value.`);return this.parseName()}parseInputObjectTypeDefinition(){const e=this._lexer.token,t=this.parseDescription();this.expectKeyword("input");const n=this.parseName(),r=this.parseConstDirectives(),i=this.parseInputFieldsDefinition();return this.node(e,{kind:h.INPUT_OBJECT_TYPE_DEFINITION,description:t,name:n,directives:r,fields:i})}parseInputFieldsDefinition(){return this.optionalMany(m.BRACE_L,this.parseInputValueDef,m.BRACE_R)}parseTypeSystemExtension(){const e=this._lexer.lookahead();if(e.kind===m.NAME)switch(e.value){case"schema":return this.parseSchemaExtension();case"scalar":return this.parseScalarTypeExtension();case"type":return this.parseObjectTypeExtension();case"interface":return this.parseInterfaceTypeExtension();case"union":return this.parseUnionTypeExtension();case"enum":return this.parseEnumTypeExtension();case"input":return this.parseInputObjectTypeExtension()}throw this.unexpected(e)}parseSchemaExtension(){const e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("schema");const t=this.parseConstDirectives(),n=this.optionalMany(m.BRACE_L,this.parseOperationTypeDefinition,m.BRACE_R);if(0===t.length&&0===n.length)throw this.unexpected();return this.node(e,{kind:h.SCHEMA_EXTENSION,directives:t,operationTypes:n})}parseScalarTypeExtension(){const e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("scalar");const t=this.parseName(),n=this.parseConstDirectives();if(0===n.length)throw this.unexpected();return this.node(e,{kind:h.SCALAR_TYPE_EXTENSION,name:t,directives:n})}parseObjectTypeExtension(){const e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("type");const t=this.parseName(),n=this.parseImplementsInterfaces(),r=this.parseConstDirectives(),i=this.parseFieldsDefinition();if(0===n.length&&0===r.length&&0===i.length)throw this.unexpected();return this.node(e,{kind:h.OBJECT_TYPE_EXTENSION,name:t,interfaces:n,directives:r,fields:i})}parseInterfaceTypeExtension(){const e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("interface");const t=this.parseName(),n=this.parseImplementsInterfaces(),r=this.parseConstDirectives(),i=this.parseFieldsDefinition();if(0===n.length&&0===r.length&&0===i.length)throw this.unexpected();return this.node(e,{kind:h.INTERFACE_TYPE_EXTENSION,name:t,interfaces:n,directives:r,fields:i})}parseUnionTypeExtension(){const e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("union");const t=this.parseName(),n=this.parseConstDirectives(),r=this.parseUnionMemberTypes();if(0===n.length&&0===r.length)throw this.unexpected();return this.node(e,{kind:h.UNION_TYPE_EXTENSION,name:t,directives:n,types:r})}parseEnumTypeExtension(){const e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("enum");const t=this.parseName(),n=this.parseConstDirectives(),r=this.parseEnumValuesDefinition();if(0===n.length&&0===r.length)throw this.unexpected();return this.node(e,{kind:h.ENUM_TYPE_EXTENSION,name:t,directives:n,values:r})}parseInputObjectTypeExtension(){const e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("input");const t=this.parseName(),n=this.parseConstDirectives(),r=this.parseInputFieldsDefinition();if(0===n.length&&0===r.length)throw this.unexpected();return this.node(e,{kind:h.INPUT_OBJECT_TYPE_EXTENSION,name:t,directives:n,fields:r})}parseDirectiveDefinition(){const e=this._lexer.token,t=this.parseDescription();this.expectKeyword("directive"),this.expectToken(m.AT);const n=this.parseName(),r=this.parseArgumentDefs(),i=this.expectOptionalKeyword("repeatable");this.expectKeyword("on");const o=this.parseDirectiveLocations();return this.node(e,{kind:h.DIRECTIVE_DEFINITION,description:t,name:n,arguments:r,repeatable:i,locations:o})}parseDirectiveLocations(){return this.delimitedMany(m.PIPE,this.parseDirectiveLocation)}parseDirectiveLocation(){const e=this._lexer.token,t=this.parseName();if(Object.prototype.hasOwnProperty.call(f,t.value))return t;throw this.unexpected(e)}node(e,t){return!0!==this._options.noLocation&&(t.loc=new Location(e,this._lexer.lastToken,this._lexer.source)),t}peek(e){return this._lexer.token.kind===e}expectToken(e){const t=this._lexer.token;if(t.kind===e)return this.advanceLexer(),t;throw c(this._lexer.source,t.start,`Expected ${z(e)}, found ${X(t)}.`)}expectOptionalToken(e){return this._lexer.token.kind===e&&(this.advanceLexer(),!0)}expectKeyword(e){const t=this._lexer.token;if(t.kind!==m.NAME||t.value!==e)throw c(this._lexer.source,t.start,`Expected "${e}", found ${X(t)}.`);this.advanceLexer()}expectOptionalKeyword(e){const t=this._lexer.token;return t.kind===m.NAME&&t.value===e&&(this.advanceLexer(),!0)}unexpected(e){const t=e??this._lexer.token;return c(this._lexer.source,t.start,`Unexpected ${X(t)}.`)}any(e,t,n){this.expectToken(e);const r=[];for(;!this.expectOptionalToken(n);)r.push(t.call(this));return r}optionalMany(e,t,n){if(this.expectOptionalToken(e)){const e=[];do{e.push(t.call(this))}while(!this.expectOptionalToken(n));return e}return[]}many(e,t,n){this.expectToken(e);const r=[];do{r.push(t.call(this))}while(!this.expectOptionalToken(n));return r}delimitedMany(e,t){this.expectOptionalToken(e);const n=[];do{n.push(t.call(this))}while(this.expectOptionalToken(e));return n}advanceLexer(){const{maxTokens:e}=this._options,t=this._lexer.advance();if(void 0!==e&&t.kind!==m.EOF&&(++this._tokenCounter,this._tokenCounter>e))throw c(this._lexer.source,t.start,`Document contains more that ${e} tokens. Parsing aborted.`)}}function X(e){const t=e.value;return z(e.kind)+(null!=t?` "${t}"`:"")}function z(e){return function(e){return e===m.BANG||e===m.QUESTION_MARK||e===m.DOLLAR||e===m.AMP||e===m.PAREN_L||e===m.PAREN_R||e===m.SPREAD||e===m.COLON||e===m.EQUALS||e===m.AT||e===m.BRACKET_L||e===m.BRACKET_R||e===m.BRACE_L||e===m.PIPE||e===m.BRACE_R}(e)?`"${e}"`:e}class AccumulatorMap extends Map{get[Symbol.toStringTag](){return"AccumulatorMap"}add(e,t){const n=this.get(e);void 0===n?this.set(e,[t]):n.push(t)}}function H(e){return e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()}function W(e){return Z("and",e)}function Z(e,t){switch(0!==t.length||n(!1),t.length){case 1:return t[0];case 2:return t[0]+" "+e+" "+t[1]}const r=t.slice(0,-1),i=t[t.length-1];return r.join(", ")+", "+e+" "+i}const ee=5;function te(e,t){const[n,r]=t?[e,t]:[void 0,e];if(0===r.length)return"";let i=" Did you mean ";n&&(i+=n+" ");return i+Z("or",r.slice(0,ee).map((e=>`"${e}"`)))+"?"}function ne(e){return e}function re(e,t){const n=Object.create(null);for(const r of e)n[t(r)]=r;return n}function ie(e,t,n){const r=Object.create(null);for(const i of e)r[t(i)]=n(i);return r}function oe(e,t){const n=Object.create(null);for(const r of Object.keys(e))n[r]=t(e[r],r);return n}function se(e,t){let n=0,r=0;for(;n0);let a=0;do{++r,a=10*a+o-ae,o=t.charCodeAt(r)}while(ue(o)&&a>0);if(sa)return 1}else{if(io)return 1;++n,++r}}return e.length-t.length}const ae=48,ce=57;function ue(e){return!isNaN(e)&&ae<=e&&e<=ce}function le(e,t){const n=Object.create(null),r=new LexicalDistance(e),i=Math.floor(.4*e.length)+1;for(const e of t){const t=r.measure(e,i);void 0!==t&&(n[e]=t)}return Object.keys(n).sort(((e,t)=>{const r=n[e]-n[t];return 0!==r?r:se(e,t)}))}class LexicalDistance{constructor(e){this._input=e,this._inputLowerCase=e.toLowerCase(),this._inputArray=pe(this._inputLowerCase),this._rows=[new Array(e.length+1).fill(0),new Array(e.length+1).fill(0),new Array(e.length+1).fill(0)]}measure(e,t){if(this._input===e)return 0;const n=e.toLowerCase();if(this._inputLowerCase===n)return 1;let r=pe(n),i=this._inputArray;if(r.lengtht)return;const a=this._rows;for(let e=0;e<=s;e++)a[0][e]=e;for(let e=1;e<=o;e++){const n=a[(e-1)%3],o=a[e%3];let c=o[0]=e;for(let t=1;t<=s;t++){const s=r[e-1]===i[t-1]?0:1;let u=Math.min(n[t]+1,o[t-1]+1,n[t-1]+s);if(e>1&&t>1&&r[e-1]===i[t-2]&&r[e-2]===i[t-1]){const n=a[(e-2)%3][t-2];u=Math.min(u,n+1)}ut)return}const c=a[o%3][s];return c<=t?c:void 0}}function pe(e){const t=e.length,n=new Array(t);for(let r=0;re.value},Variable:{leave:e=>"$"+e.name},Document:{leave:e=>ge(e.definitions,"\n\n")},OperationDefinition:{leave(e){const t=Oe("(",ge(e.variableDefinitions,", "),")"),n=ge([e.operation,ge([e.name,t]),ge(e.directives," ")]," ");return("query"===n?"":n+" ")+e.selectionSet}},VariableDefinition:{leave:({variable:e,type:t,defaultValue:n,directives:r})=>e+": "+t+Oe(" = ",n)+Oe(" ",ge(r," "))},SelectionSet:{leave:({selections:e})=>_e(e)},Field:{leave({alias:e,name:t,arguments:n,nullabilityAssertion:r,directives:i,selectionSet:o}){const s=ge([Oe("",e,": "),t],"");let a=s+Oe("(",ge(n,", "),")");return a.length>80&&(a=s+Oe("(\n",Se(ge(n,"\n")),"\n)")),ge([a,r,Oe(" ",ge(i," ")),Oe(" ",o)])}},Argument:{leave:({name:e,value:t})=>e+": "+t},ListNullabilityOperator:{leave:({nullabilityAssertion:e})=>ge(["[",e,"]"])},NonNullAssertion:{leave:({nullabilityAssertion:e})=>ge([e,"!"])},ErrorBoundary:{leave:({nullabilityAssertion:e})=>ge([e,"?"])},FragmentSpread:{leave:({name:e,directives:t})=>"..."+e+Oe(" ",ge(t," "))},InlineFragment:{leave:({typeCondition:e,directives:t,selectionSet:n})=>ge(["...",Oe("on ",e),ge(t," "),n]," ")},FragmentDefinition:{leave:({name:e,typeCondition:t,variableDefinitions:n,directives:r,selectionSet:i})=>`fragment ${e}${Oe("(",ge(n,", "),")")} on ${t} ${Oe("",ge(r," ")," ")}`+i},IntValue:{leave:({value:e})=>e},FloatValue:{leave:({value:e})=>e},StringValue:{leave:({value:e,block:t})=>t?function(e,t){const n=e.replace(/"""/g,'\\"""'),r=n.split(/\r\n|[\n\r]/g),i=1===r.length,o=r.length>1&&r.slice(1).every((e=>0===e.length||E(e.charCodeAt(0)))),s=n.endsWith('\\"""'),a=e.endsWith('"')&&!s,c=e.endsWith("\\"),u=a||c,l=!t?.minimize&&(!i||e.length>70||u||o||s);let p="";const d=i&&E(e.charCodeAt(0));return(l&&!d||o)&&(p+="\n"),p+=n,(l||u)&&(p+="\n"),'"""'+p+'"""'}(e):`"${e.replace(fe,he)}"`},BooleanValue:{leave:({value:e})=>e?"true":"false"},NullValue:{leave:()=>"null"},EnumValue:{leave:({value:e})=>e},ListValue:{leave:({values:e})=>"["+ge(e,", ")+"]"},ObjectValue:{leave:({fields:e})=>"{ "+ge(e,", ")+" }"},ObjectField:{leave:({name:e,value:t})=>e+": "+t},Directive:{leave:({name:e,arguments:t})=>"@"+e+Oe("(",ge(t,", "),")")},NamedType:{leave:({name:e})=>e},ListType:{leave:({type:e})=>"["+e+"]"},NonNullType:{leave:({type:e})=>e+"!"},SchemaDefinition:{leave:({description:e,directives:t,operationTypes:n})=>Oe("",e,"\n")+ge(["schema",ge(t," "),_e(n)]," ")},OperationTypeDefinition:{leave:({operation:e,type:t})=>e+": "+t},ScalarTypeDefinition:{leave:({description:e,name:t,directives:n})=>Oe("",e,"\n")+ge(["scalar",t,ge(n," ")]," ")},ObjectTypeDefinition:{leave:({description:e,name:t,interfaces:n,directives:r,fields:i})=>Oe("",e,"\n")+ge(["type",t,Oe("implements ",ge(n," & ")),ge(r," "),_e(i)]," ")},FieldDefinition:{leave:({description:e,name:t,arguments:n,type:r,directives:i})=>Oe("",e,"\n")+t+(be(n)?Oe("(\n",Se(ge(n,"\n")),"\n)"):Oe("(",ge(n,", "),")"))+": "+r+Oe(" ",ge(i," "))},InputValueDefinition:{leave:({description:e,name:t,type:n,defaultValue:r,directives:i})=>Oe("",e,"\n")+ge([t+": "+n,Oe("= ",r),ge(i," ")]," ")},InterfaceTypeDefinition:{leave:({description:e,name:t,interfaces:n,directives:r,fields:i})=>Oe("",e,"\n")+ge(["interface",t,Oe("implements ",ge(n," & ")),ge(r," "),_e(i)]," ")},UnionTypeDefinition:{leave:({description:e,name:t,directives:n,types:r})=>Oe("",e,"\n")+ge(["union",t,ge(n," "),Oe("= ",ge(r," | "))]," ")},EnumTypeDefinition:{leave:({description:e,name:t,directives:n,values:r})=>Oe("",e,"\n")+ge(["enum",t,ge(n," "),_e(r)]," ")},EnumValueDefinition:{leave:({description:e,name:t,directives:n})=>Oe("",e,"\n")+ge([t,ge(n," ")]," ")},InputObjectTypeDefinition:{leave:({description:e,name:t,directives:n,fields:r})=>Oe("",e,"\n")+ge(["input",t,ge(n," "),_e(r)]," ")},DirectiveDefinition:{leave:({description:e,name:t,arguments:n,repeatable:r,locations:i})=>Oe("",e,"\n")+"directive @"+t+(be(n)?Oe("(\n",Se(ge(n,"\n")),"\n)"):Oe("(",ge(n,", "),")"))+(r?" repeatable":"")+" on "+ge(i," | ")},SchemaExtension:{leave:({directives:e,operationTypes:t})=>ge(["extend schema",ge(e," "),_e(t)]," ")},ScalarTypeExtension:{leave:({name:e,directives:t})=>ge(["extend scalar",e,ge(t," ")]," ")},ObjectTypeExtension:{leave:({name:e,interfaces:t,directives:n,fields:r})=>ge(["extend type",e,Oe("implements ",ge(t," & ")),ge(n," "),_e(r)]," ")},InterfaceTypeExtension:{leave:({name:e,interfaces:t,directives:n,fields:r})=>ge(["extend interface",e,Oe("implements ",ge(t," & ")),ge(n," "),_e(r)]," ")},UnionTypeExtension:{leave:({name:e,directives:t,types:n})=>ge(["extend union",e,ge(t," "),Oe("= ",ge(n," | "))]," ")},EnumTypeExtension:{leave:({name:e,directives:t,values:n})=>ge(["extend enum",e,ge(t," "),_e(n)]," ")},InputObjectTypeExtension:{leave:({name:e,directives:t,fields:n})=>ge(["extend input",e,ge(t," "),_e(n)]," ")}};function ge(e,t=""){return e?.filter((e=>e)).join(t)??""}function _e(e){return Oe("{\n",Se(ge(e,"\n")),"\n}")}function Oe(e,t,n=""){return null!=t&&""!==t?e+t+n:""}function Se(e){return Oe(" ",e.replace(/\n/g,"\n "))}function be(e){return e?.some((e=>e.includes("\n")))??!1}function Le(e,t){switch(e.kind){case h.NULL:return null;case h.INT:return parseInt(e.value,10);case h.FLOAT:return parseFloat(e.value);case h.STRING:case h.ENUM:case h.BOOLEAN:return e.value;case h.LIST:return e.values.map((e=>Le(e,t)));case h.OBJECT:return ie(e.fields,(e=>e.name.value),(e=>Le(e.value,t)));case h.VARIABLE:return t?.[e.name.value]}}function Ae(e){if(0===e.length)throw new GraphQLError("Expected name to be a non-empty string.");for(let t=1;tt(Le(e,n))),this.extensions=de(e.extensions),this.astNode=e.astNode,this.extensionASTNodes=e.extensionASTNodes??[],e.parseLiteral&&("function"==typeof e.parseValue&&"function"==typeof e.parseLiteral||M(!1,`${this.name} must provide both "parseValue" and "parseLiteral" functions.`))}get[Symbol.toStringTag](){return"GraphQLScalarType"}toConfig(){return{name:this.name,description:this.description,specifiedByURL:this.specifiedByURL,serialize:this.serialize,parseValue:this.parseValue,parseLiteral:this.parseLiteral,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:this.extensionASTNodes}}toString(){return this.name}toJSON(){return this.toString()}}class GraphQLObjectType{constructor(e){this.name=Ae(e.name),this.description=e.description,this.isTypeOf=e.isTypeOf,this.extensions=de(e.extensions),this.astNode=e.astNode,this.extensionASTNodes=e.extensionASTNodes??[],this._fields=()=>We(e),this._interfaces=()=>He(e)}get[Symbol.toStringTag](){return"GraphQLObjectType"}getFields(){return"function"==typeof this._fields&&(this._fields=this._fields()),this._fields}getInterfaces(){return"function"==typeof this._interfaces&&(this._interfaces=this._interfaces()),this._interfaces}toConfig(){return{name:this.name,description:this.description,interfaces:this.getInterfaces(),fields:et(this.getFields()),isTypeOf:this.isTypeOf,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:this.extensionASTNodes}}toString(){return this.name}toJSON(){return this.toString()}}function He(e){return Xe(e.interfaces??[])}function We(e){return oe(ze(e.fields),((e,t)=>{const n=e.args??{};return{name:Ae(t),description:e.description,type:e.type,args:Ze(n),resolve:e.resolve,subscribe:e.subscribe,deprecationReason:e.deprecationReason,extensions:de(e.extensions),astNode:e.astNode}}))}function Ze(e){return Object.entries(e).map((([e,t])=>({name:Ae(e),description:t.description,type:t.type,defaultValue:t.defaultValue,deprecationReason:t.deprecationReason,extensions:de(t.extensions),astNode:t.astNode})))}function et(e){return oe(e,(e=>({description:e.description,type:e.type,args:tt(e.args),resolve:e.resolve,subscribe:e.subscribe,deprecationReason:e.deprecationReason,extensions:e.extensions,astNode:e.astNode})))}function tt(e){return ie(e,(e=>e.name),(e=>({description:e.description,type:e.type,defaultValue:e.defaultValue,deprecationReason:e.deprecationReason,extensions:e.extensions,astNode:e.astNode})))}function nt(e){return Qe(e.type)&&void 0===e.defaultValue}class GraphQLInterfaceType{constructor(e){this.name=Ae(e.name),this.description=e.description,this.resolveType=e.resolveType,this.extensions=de(e.extensions),this.astNode=e.astNode,this.extensionASTNodes=e.extensionASTNodes??[],this._fields=We.bind(void 0,e),this._interfaces=He.bind(void 0,e)}get[Symbol.toStringTag](){return"GraphQLInterfaceType"}getFields(){return"function"==typeof this._fields&&(this._fields=this._fields()),this._fields}getInterfaces(){return"function"==typeof this._interfaces&&(this._interfaces=this._interfaces()),this._interfaces}toConfig(){return{name:this.name,description:this.description,interfaces:this.getInterfaces(),fields:et(this.getFields()),resolveType:this.resolveType,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:this.extensionASTNodes}}toString(){return this.name}toJSON(){return this.toString()}}class GraphQLUnionType{constructor(e){this.name=Ae(e.name),this.description=e.description,this.resolveType=e.resolveType,this.extensions=de(e.extensions),this.astNode=e.astNode,this.extensionASTNodes=e.extensionASTNodes??[],this._types=rt.bind(void 0,e)}get[Symbol.toStringTag](){return"GraphQLUnionType"}getTypes(){return"function"==typeof this._types&&(this._types=this._types()),this._types}toConfig(){return{name:this.name,description:this.description,types:this.getTypes(),resolveType:this.resolveType,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:this.extensionASTNodes}}toString(){return this.name}toJSON(){return this.toString()}}function rt(e){return Xe(e.types)}class GraphQLEnumType{constructor(e){this.name=Ae(e.name),this.description=e.description,this.extensions=de(e.extensions),this.astNode=e.astNode,this.extensionASTNodes=e.extensionASTNodes??[],this._values=Object.entries(e.values).map((([e,t])=>({name:De(e),description:t.description,value:void 0!==t.value?t.value:e,deprecationReason:t.deprecationReason,extensions:de(t.extensions),astNode:t.astNode}))),this._valueLookup=new Map(this._values.map((e=>[e.value,e]))),this._nameLookup=re(this._values,(e=>e.name))}get[Symbol.toStringTag](){return"GraphQLEnumType"}getValues(){return this._values}getValue(e){return this._nameLookup[e]}serialize(e){const t=this._valueLookup.get(e);if(void 0===t)throw new GraphQLError(`Enum "${this.name}" cannot represent value: ${Y(e)}`);return t.name}parseValue(e){if("string"!=typeof e){const t=Y(e);throw new GraphQLError(`Enum "${this.name}" cannot represent non-string value: ${t}.`+it(this,t))}const t=this.getValue(e);if(null==t)throw new GraphQLError(`Value "${e}" does not exist in "${this.name}" enum.`+it(this,e));return t.value}parseLiteral(e,t){if(e.kind!==h.ENUM){const t=ve(e);throw new GraphQLError(`Enum "${this.name}" cannot represent non-enum value: ${t}.`+it(this,t),{nodes:e})}const n=this.getValue(e.value);if(null==n){const t=ve(e);throw new GraphQLError(`Value "${t}" does not exist in "${this.name}" enum.`+it(this,t),{nodes:e})}return n.value}toConfig(){const e=ie(this.getValues(),(e=>e.name),(e=>({description:e.description,value:e.value,deprecationReason:e.deprecationReason,extensions:e.extensions,astNode:e.astNode})));return{name:this.name,description:this.description,values:e,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:this.extensionASTNodes}}toString(){return this.name}toJSON(){return this.toString()}}function it(e,t){return te("the enum value",le(t,e.getValues().map((e=>e.name))))}class GraphQLInputObjectType{constructor(e){this.name=Ae(e.name),this.description=e.description,this.extensions=de(e.extensions),this.astNode=e.astNode,this.extensionASTNodes=e.extensionASTNodes??[],this._fields=ot.bind(void 0,e)}get[Symbol.toStringTag](){return"GraphQLInputObjectType"}getFields(){return"function"==typeof this._fields&&(this._fields=this._fields()),this._fields}toConfig(){const e=oe(this.getFields(),(e=>({description:e.description,type:e.type,defaultValue:e.defaultValue,deprecationReason:e.deprecationReason,extensions:e.extensions,astNode:e.astNode})));return{name:this.name,description:this.description,fields:e,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:this.extensionASTNodes}}toString(){return this.name}toJSON(){return this.toString()}}function ot(e){return oe(ze(e.fields),((t,n)=>(!("resolve"in t)||M(!1,`${e.name}.${n} field has a resolve property, but Input Types cannot define resolvers.`),{name:Ae(n),description:t.description,type:t.type,defaultValue:t.defaultValue,deprecationReason:t.deprecationReason,extensions:de(t.extensions),astNode:t.astNode})))}function st(e){return Qe(e.type)&&void 0===e.defaultValue}function at(e,t){return e===t||(Qe(e)&&Qe(t)||!(!$e(e)||!$e(t)))&&at(e.ofType,t.ofType)}function ct(e,t,n){return t===n||(Qe(n)?!!Qe(t)&&ct(e,t.ofType,n.ofType):Qe(t)?ct(e,t.ofType,n):$e(n)?!!$e(t)&&ct(e,t.ofType,n.ofType):!$e(t)&&(je(n)&&(Fe(t)||xe(t))&&e.isSubType(n,t)))}function ut(e,t,n){return t===n||(je(t)?je(n)?e.getPossibleTypes(t).some((t=>e.isSubType(n,t))):e.isSubType(t,n):!!je(n)&&e.isSubType(n,t))}const lt=2147483647,pt=-2147483648,dt=new GraphQLScalarType({name:"Int",description:"The `Int` scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.",serialize(e){const t=Nt(e);if("boolean"==typeof t)return t?1:0;let n=t;if("string"==typeof t&&""!==t&&(n=Number(t)),"number"!=typeof n||!Number.isInteger(n))throw new GraphQLError(`Int cannot represent non-integer value: ${Y(t)}`);if(n>lt||nlt||elt||te.name===t))}function Nt(e){if(t(e)){if("function"==typeof e.valueOf){const n=e.valueOf();if(!t(n))return n}if("function"==typeof e.toJSON)return e.toJSON()}return e}function vt(e){return q(e,GraphQLDirective)}class GraphQLDirective{constructor(e){this.name=Ae(e.name),this.description=e.description,this.locations=e.locations,this.isRepeatable=e.isRepeatable??!1,this.extensions=de(e.extensions),this.astNode=e.astNode;const t=e.args??{};this.args=Ze(t)}get[Symbol.toStringTag](){return"GraphQLDirective"}toConfig(){return{name:this.name,description:this.description,locations:this.locations,args:tt(this.args),isRepeatable:this.isRepeatable,extensions:this.extensions,astNode:this.astNode}}toString(){return"@"+this.name}toJSON(){return this.toString()}}const It=new GraphQLDirective({name:"include",description:"Directs the executor to include this field or fragment only when the `if` argument is true.",locations:[f.FIELD,f.FRAGMENT_SPREAD,f.INLINE_FRAGMENT],args:{if:{type:new GraphQLNonNull(mt),description:"Included when true."}}}),gt=new GraphQLDirective({name:"skip",description:"Directs the executor to skip this field or fragment when the `if` argument is true.",locations:[f.FIELD,f.FRAGMENT_SPREAD,f.INLINE_FRAGMENT],args:{if:{type:new GraphQLNonNull(mt),description:"Skipped when true."}}}),_t=new GraphQLDirective({name:"defer",description:"Directs the executor to defer this fragment when the `if` argument is true or undefined.",locations:[f.FRAGMENT_SPREAD,f.INLINE_FRAGMENT],args:{if:{type:new GraphQLNonNull(mt),description:"Deferred when true or undefined.",defaultValue:!0},label:{type:ht,description:"Unique name"}}}),Ot=new GraphQLDirective({name:"stream",description:"Directs the executor to stream plural fields when the `if` argument is true or undefined.",locations:[f.FIELD],args:{if:{type:new GraphQLNonNull(mt),description:"Stream when true or undefined.",defaultValue:!0},label:{type:ht,description:"Unique name"},initialCount:{defaultValue:0,type:dt,description:"Number of items to return immediately"}}}),St="No longer supported",bt=new GraphQLDirective({name:"deprecated",description:"Marks an element of a GraphQL schema as no longer supported.",locations:[f.FIELD_DEFINITION,f.ARGUMENT_DEFINITION,f.INPUT_FIELD_DEFINITION,f.ENUM_VALUE],args:{reason:{type:ht,description:"Explains why this element was deprecated, usually also including a suggestion for how to access supported similar data. Formatted using the Markdown syntax, as specified by [CommonMark](https://commonmark.org/).",defaultValue:St}}}),Lt=new GraphQLDirective({name:"specifiedBy",description:"Exposes a URL that specifies the behavior of this scalar.",locations:[f.SCALAR],args:{url:{type:new GraphQLNonNull(ht),description:"The URL that specifies the behavior of this scalar."}}}),At=Object.freeze([It,gt,bt,Lt]);function Dt(e){return At.some((({name:t})=>t===e.name))}function wt(e,r){if(Qe(r)){const t=wt(e,r.ofType);return t?.kind===h.NULL?null:t}if(null===e)return{kind:h.NULL};if(void 0===e)return null;if($e(r)){const t=r.ofType;if("object"==typeof(i=e)&&"function"==typeof i?.[Symbol.iterator]){const n=[];for(const r of e){const e=wt(r,t);null!=e&&n.push(e)}return{kind:h.LIST,values:n}}return wt(e,t)}var i;if(Ge(r)){if(!t(e))return null;const n=[];for(const t of Object.values(r.getFields())){const r=wt(e[t.name],t.type);r&&n.push({kind:h.OBJECT_FIELD,name:{kind:h.NAME,value:t.name},value:r})}return{kind:h.OBJECT,fields:n}}if(Pe(r)){const t=r.serialize(e);if(null==t)return null;if("boolean"==typeof t)return{kind:h.BOOLEAN,value:t};if("number"==typeof t&&Number.isFinite(t)){const e=String(t);return kt.test(e)?{kind:h.INT,value:e}:{kind:h.FLOAT,value:e}}if("string"==typeof t)return Ce(r)?{kind:h.ENUM,value:t}:r===Et&&kt.test(t)?{kind:h.INT,value:t}:{kind:h.STRING,value:t};throw new TypeError(`Cannot convert value to AST: ${Y(t)}.`)}n(!1,"Unexpected input type: "+Y(r))}const kt=/^-?(?:0|[1-9][0-9]*)$/,xt=new GraphQLObjectType({name:"__Schema",description:"A GraphQL Schema defines the capabilities of a GraphQL server. It exposes all available types and directives on the server, as well as the entry points for query, mutation, and subscription operations.",fields:()=>({description:{type:ht,resolve:e=>e.description},types:{description:"A list of all types supported by this server.",type:new GraphQLNonNull(new GraphQLList(new GraphQLNonNull(Ct))),resolve:e=>Object.values(e.getTypeMap())},queryType:{description:"The type that query operations will be rooted at.",type:new GraphQLNonNull(Ct),resolve:e=>e.getQueryType()},mutationType:{description:"If this server supports mutation, the type that mutation operations will be rooted at.",type:Ct,resolve:e=>e.getMutationType()},subscriptionType:{description:"If this server support subscription, the type that subscription operations will be rooted at.",type:Ct,resolve:e=>e.getSubscriptionType()},directives:{description:"A list of all directives supported by this server.",type:new GraphQLNonNull(new GraphQLList(new GraphQLNonNull(Ft))),resolve:e=>e.getDirectives()}})}),Ft=new GraphQLObjectType({name:"__Directive",description:"A Directive provides a way to describe alternate runtime execution and type validation behavior in a GraphQL document.\n\nIn some cases, you need to provide options to alter GraphQL's execution behavior in ways field arguments will not suffice, such as conditionally including or skipping a field. Directives provide this by describing additional information to the executor.",fields:()=>({name:{type:new GraphQLNonNull(ht),resolve:e=>e.name},description:{type:ht,resolve:e=>e.description},isRepeatable:{type:new GraphQLNonNull(mt),resolve:e=>e.isRepeatable},locations:{type:new GraphQLNonNull(new GraphQLList(new GraphQLNonNull(Rt))),resolve:e=>e.locations},args:{type:new GraphQLNonNull(new GraphQLList(new GraphQLNonNull($t))),args:{includeDeprecated:{type:mt,defaultValue:!1}},resolve:(e,{includeDeprecated:t})=>t?e.args:e.args.filter((e=>null==e.deprecationReason))}})}),Rt=new GraphQLEnumType({name:"__DirectiveLocation",description:"A Directive can be adjacent to many parts of the GraphQL language, a __DirectiveLocation describes one such possible adjacencies.",values:{QUERY:{value:f.QUERY,description:"Location adjacent to a query operation."},MUTATION:{value:f.MUTATION,description:"Location adjacent to a mutation operation."},SUBSCRIPTION:{value:f.SUBSCRIPTION,description:"Location adjacent to a subscription operation."},FIELD:{value:f.FIELD,description:"Location adjacent to a field."},FRAGMENT_DEFINITION:{value:f.FRAGMENT_DEFINITION,description:"Location adjacent to a fragment definition."},FRAGMENT_SPREAD:{value:f.FRAGMENT_SPREAD,description:"Location adjacent to a fragment spread."},INLINE_FRAGMENT:{value:f.INLINE_FRAGMENT,description:"Location adjacent to an inline fragment."},VARIABLE_DEFINITION:{value:f.VARIABLE_DEFINITION,description:"Location adjacent to a variable definition."},SCHEMA:{value:f.SCHEMA,description:"Location adjacent to a schema definition."},SCALAR:{value:f.SCALAR,description:"Location adjacent to a scalar definition."},OBJECT:{value:f.OBJECT,description:"Location adjacent to an object type definition."},FIELD_DEFINITION:{value:f.FIELD_DEFINITION,description:"Location adjacent to a field definition."},ARGUMENT_DEFINITION:{value:f.ARGUMENT_DEFINITION,description:"Location adjacent to an argument definition."},INTERFACE:{value:f.INTERFACE,description:"Location adjacent to an interface definition."},UNION:{value:f.UNION,description:"Location adjacent to a union definition."},ENUM:{value:f.ENUM,description:"Location adjacent to an enum definition."},ENUM_VALUE:{value:f.ENUM_VALUE,description:"Location adjacent to an enum value definition."},INPUT_OBJECT:{value:f.INPUT_OBJECT,description:"Location adjacent to an input object type definition."},INPUT_FIELD_DEFINITION:{value:f.INPUT_FIELD_DEFINITION,description:"Location adjacent to an input object field definition."}}}),Ct=new GraphQLObjectType({name:"__Type",description:"The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.\n\nDepending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name, description and optional `specifiedByURL`, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.",fields:()=>({kind:{type:new GraphQLNonNull(Vt),resolve:e=>ke(e)?Ut.SCALAR:xe(e)?Ut.OBJECT:Fe(e)?Ut.INTERFACE:Re(e)?Ut.UNION:Ce(e)?Ut.ENUM:Ge(e)?Ut.INPUT_OBJECT:$e(e)?Ut.LIST:Qe(e)?Ut.NON_NULL:void n(!1,`Unexpected type: "${Y(e)}".`)},name:{type:ht,resolve:e=>"name"in e?e.name:void 0},description:{type:ht,resolve:e=>"description"in e?e.description:void 0},specifiedByURL:{type:ht,resolve:e=>"specifiedByURL"in e?e.specifiedByURL:void 0},fields:{type:new GraphQLList(new GraphQLNonNull(Gt)),args:{includeDeprecated:{type:mt,defaultValue:!1}},resolve(e,{includeDeprecated:t}){if(xe(e)||Fe(e)){const n=Object.values(e.getFields());return t?n:n.filter((e=>null==e.deprecationReason))}}},interfaces:{type:new GraphQLList(new GraphQLNonNull(Ct)),resolve(e){if(xe(e)||Fe(e))return e.getInterfaces()}},possibleTypes:{type:new GraphQLList(new GraphQLNonNull(Ct)),resolve(e,t,n,{schema:r}){if(je(e))return r.getPossibleTypes(e)}},enumValues:{type:new GraphQLList(new GraphQLNonNull(Qt)),args:{includeDeprecated:{type:mt,defaultValue:!1}},resolve(e,{includeDeprecated:t}){if(Ce(e)){const n=e.getValues();return t?n:n.filter((e=>null==e.deprecationReason))}}},inputFields:{type:new GraphQLList(new GraphQLNonNull($t)),args:{includeDeprecated:{type:mt,defaultValue:!1}},resolve(e,{includeDeprecated:t}){if(Ge(e)){const n=Object.values(e.getFields());return t?n:n.filter((e=>null==e.deprecationReason))}}},ofType:{type:Ct,resolve:e=>"ofType"in e?e.ofType:void 0}})}),Gt=new GraphQLObjectType({name:"__Field",description:"Object and Interface types are described by a list of Fields, each of which has a name, potentially a list of arguments, and a return type.",fields:()=>({name:{type:new GraphQLNonNull(ht),resolve:e=>e.name},description:{type:ht,resolve:e=>e.description},args:{type:new GraphQLNonNull(new GraphQLList(new GraphQLNonNull($t))),args:{includeDeprecated:{type:mt,defaultValue:!1}},resolve:(e,{includeDeprecated:t})=>t?e.args:e.args.filter((e=>null==e.deprecationReason))},type:{type:new GraphQLNonNull(Ct),resolve:e=>e.type},isDeprecated:{type:new GraphQLNonNull(mt),resolve:e=>null!=e.deprecationReason},deprecationReason:{type:ht,resolve:e=>e.deprecationReason}})}),$t=new GraphQLObjectType({name:"__InputValue",description:"Arguments provided to Fields or Directives and the input fields of an InputObject are represented as Input Values which describe their type and optionally a default value.",fields:()=>({name:{type:new GraphQLNonNull(ht),resolve:e=>e.name},description:{type:ht,resolve:e=>e.description},type:{type:new GraphQLNonNull(Ct),resolve:e=>e.type},defaultValue:{type:ht,description:"A GraphQL-formatted string representing the default value for this input value.",resolve(e){const{type:t,defaultValue:n}=e,r=wt(n,t);return r?ve(r):null}},isDeprecated:{type:new GraphQLNonNull(mt),resolve:e=>null!=e.deprecationReason},deprecationReason:{type:ht,resolve:e=>e.deprecationReason}})}),Qt=new GraphQLObjectType({name:"__EnumValue",description:"One possible value for a given Enum. Enum values are unique values, not a placeholder for a string or numeric value. However an Enum value is returned in a JSON response as a string.",fields:()=>({name:{type:new GraphQLNonNull(ht),resolve:e=>e.name},description:{type:ht,resolve:e=>e.description},isDeprecated:{type:new GraphQLNonNull(mt),resolve:e=>null!=e.deprecationReason},deprecationReason:{type:ht,resolve:e=>e.deprecationReason}})});var Ut;!function(e){e.SCALAR="SCALAR",e.OBJECT="OBJECT",e.INTERFACE="INTERFACE",e.UNION="UNION",e.ENUM="ENUM",e.INPUT_OBJECT="INPUT_OBJECT",e.LIST="LIST",e.NON_NULL="NON_NULL"}(Ut||(Ut={}));const Vt=new GraphQLEnumType({name:"__TypeKind",description:"An enum describing what kind of type a given `__Type` is.",values:{SCALAR:{value:Ut.SCALAR,description:"Indicates this type is a scalar."},OBJECT:{value:Ut.OBJECT,description:"Indicates this type is an object. `fields` and `interfaces` are valid fields."},INTERFACE:{value:Ut.INTERFACE,description:"Indicates this type is an interface. `fields`, `interfaces`, and `possibleTypes` are valid fields."},UNION:{value:Ut.UNION,description:"Indicates this type is a union. `possibleTypes` is a valid field."},ENUM:{value:Ut.ENUM,description:"Indicates this type is an enum. `enumValues` is a valid field."},INPUT_OBJECT:{value:Ut.INPUT_OBJECT,description:"Indicates this type is an input object. `inputFields` is a valid field."},LIST:{value:Ut.LIST,description:"Indicates this type is a list. `ofType` is a valid field."},NON_NULL:{value:Ut.NON_NULL,description:"Indicates this type is a non-null. `ofType` is a valid field."}}}),Pt={name:"__schema",type:new GraphQLNonNull(xt),description:"Access the current type schema of this server.",args:[],resolve:(e,t,n,{schema:r})=>r,deprecationReason:void 0,extensions:Object.create(null),astNode:void 0},Mt={name:"__type",type:Ct,description:"Request the type information of a single type.",args:[{name:"name",description:void 0,type:new GraphQLNonNull(ht),defaultValue:void 0,deprecationReason:void 0,extensions:Object.create(null),astNode:void 0}],resolve:(e,{name:t},n,{schema:r})=>r.getType(t),deprecationReason:void 0,extensions:Object.create(null),astNode:void 0},jt={name:"__typename",type:new GraphQLNonNull(ht),description:"The name of the current Object type at runtime.",args:[],resolve:(e,t,n,{parentType:r})=>r.name,deprecationReason:void 0,extensions:Object.create(null),astNode:void 0},Bt=Object.freeze([xt,Ft,Rt,Ct,Gt,$t,Qt,Vt]);function Yt(e){return Bt.some((({name:t})=>e.name===t))}function Jt(e){if(!function(e){return q(e,GraphQLSchema)}(e))throw new Error(`Expected ${Y(e)} to be a GraphQL schema.`);return e}class GraphQLSchema{constructor(e){this.__validationErrors=!0===e.assumeValid?[]:void 0,this.description=e.description,this.extensions=de(e.extensions),this.astNode=e.astNode,this.extensionASTNodes=e.extensionASTNodes??[],this._queryType=e.query,this._mutationType=e.mutation,this._subscriptionType=e.subscription,this._directives=e.directives??At;const t=new Set(e.types);if(null!=e.types)for(const n of e.types)t.delete(n),qt(n,t);null!=this._queryType&&qt(this._queryType,t),null!=this._mutationType&&qt(this._mutationType,t),null!=this._subscriptionType&&qt(this._subscriptionType,t);for(const e of this._directives)if(vt(e))for(const n of e.args)qt(n.type,t);qt(xt,t),this._typeMap=Object.create(null),this._subTypeMap=new Map,this._implementationsMap=Object.create(null);for(const e of t){if(null==e)continue;const t=e.name;if(void 0!==this._typeMap[t])throw new Error(`Schema must contain uniquely named types but contains multiple types named "${t}".`);if(this._typeMap[t]=e,Fe(e)){for(const t of e.getInterfaces())if(Fe(t)){let n=this._implementationsMap[t.name];void 0===n&&(n=this._implementationsMap[t.name]={objects:[],interfaces:[]}),n.interfaces.push(e)}}else if(xe(e))for(const t of e.getInterfaces())if(Fe(t)){let n=this._implementationsMap[t.name];void 0===n&&(n=this._implementationsMap[t.name]={objects:[],interfaces:[]}),n.objects.push(e)}}}get[Symbol.toStringTag](){return"GraphQLSchema"}getQueryType(){return this._queryType}getMutationType(){return this._mutationType}getSubscriptionType(){return this._subscriptionType}getRootType(e){switch(e){case d.QUERY:return this.getQueryType();case d.MUTATION:return this.getMutationType();case d.SUBSCRIPTION:return this.getSubscriptionType()}}getTypeMap(){return this._typeMap}getType(e){return this.getTypeMap()[e]}getPossibleTypes(e){return Re(e)?e.getTypes():this.getImplementations(e).objects}getImplementations(e){return this._implementationsMap[e.name]??{objects:[],interfaces:[]}}isSubType(e,t){let n=this._subTypeMap.get(e);if(void 0===n){if(Re(e))n=new Set(e.getTypes());else{const t=this.getImplementations(e);n=new Set([...t.objects,...t.interfaces])}this._subTypeMap.set(e,n)}return n.has(t)}getDirectives(){return this._directives}getDirective(e){return this.getDirectives().find((t=>t.name===e))}getField(e,t){switch(t){case Pt.name:return this.getQueryType()===e?Pt:void 0;case Mt.name:return this.getQueryType()===e?Mt:void 0;case jt.name:return jt}if("getFields"in e)return e.getFields()[t]}toConfig(){return{description:this.description,query:this.getQueryType(),mutation:this.getMutationType(),subscription:this.getSubscriptionType(),types:Object.values(this.getTypeMap()),directives:this.getDirectives(),extensions:this.extensions,astNode:this.astNode,extensionASTNodes:this.extensionASTNodes,assumeValid:void 0!==this.__validationErrors}}}function qt(e,t){const n=Ke(e);if(!t.has(n))if(t.add(n),Re(n))for(const e of n.getTypes())qt(e,t);else if(xe(n)||Fe(n)){for(const e of n.getInterfaces())qt(e,t);for(const e of Object.values(n.getFields())){qt(e.type,t);for(const n of e.args)qt(n.type,t)}}else if(Ge(n))for(const e of Object.values(n.getFields()))qt(e.type,t);return t}function Kt(e){if(Jt(e),e.__validationErrors)return e.__validationErrors;const t=new SchemaValidationContext(e);!function(e){const t=e.schema;null==t.getQueryType()&&e.reportError("Query root type must be provided.",t.astNode);const n=new AccumulatorMap;for(const r of Object.values(d)){const i=t.getRootType(r);if(null!=i)if(xe(i))n.add(i,r);else{const n=H(r),o=Y(i);e.reportError(r===d.QUERY?`${n} root type must be Object type, it cannot be ${o}.`:`${n} root type must be Object type if provided, it cannot be ${o}.`,Xt(t,r)??i.astNode)}}for(const[r,i]of n)if(i.length>1){const n=W(i);e.reportError(`All root types must be different, "${r.name}" type is used as ${n} root types.`,i.map((e=>Xt(t,e))))}}(t),function(e){for(const t of e.schema.getDirectives())if(vt(t)){zt(e,t);for(const n of t.args)zt(e,n),Ue(n.type)||e.reportError(`The type of @${t.name}(${n.name}:) must be Input Type but got: ${Y(n.type)}.`,n.astNode),nt(n)&&null!=n.deprecationReason&&e.reportError(`Required argument @${t.name}(${n.name}:) cannot be deprecated.`,[an(n.astNode),n.astNode?.type])}else e.reportError(`Expected directive but got: ${Y(t)}.`,t?.astNode)}(t),function(e){const t=function(e){const t=new Set,n=[],r=Object.create(null);return i;function i(o){if(t.has(o))return;t.add(o),r[o.name]=n.length;const s=Object.values(o.getFields());for(const t of s)if(Qe(t.type)&&Ge(t.type.ofType)){const o=t.type.ofType,s=r[o.name];if(n.push(t),void 0===s)i(o);else{const t=n.slice(s),r=t.map((e=>e.name)).join(".");e.reportError(`Cannot reference Input Object "${o.name}" within itself through a series of non-null fields: "${r}".`,t.map((e=>e.astNode)))}n.pop()}r[o.name]=void 0}}(e),n=e.schema.getTypeMap();for(const r of Object.values(n))qe(r)?(Yt(r)||zt(e,r),xe(r)||Fe(r)?(Ht(e,r),Wt(e,r)):Re(r)?tn(e,r):Ce(r)?nn(e,r):Ge(r)&&(rn(e,r),t(r))):e.reportError(`Expected GraphQL named type but got: ${Y(r)}.`,r.astNode)}(t);const n=t.getErrors();return e.__validationErrors=n,n}class SchemaValidationContext{constructor(e){this._errors=[],this.schema=e}reportError(e,t){const n=Array.isArray(t)?t.filter(Boolean):t;this._errors.push(new GraphQLError(e,{nodes:n}))}getErrors(){return this._errors}}function Xt(e,t){return[e.astNode,...e.extensionASTNodes].flatMap((e=>e?.operationTypes??[])).find((e=>e.operation===t))?.type}function zt(e,t){t.name.startsWith("__")&&e.reportError(`Name "${t.name}" must not begin with "__", which is reserved by GraphQL introspection.`,t.astNode)}function Ht(e,t){const n=Object.values(t.getFields());0===n.length&&e.reportError(`Type ${t.name} must define one or more fields.`,[t.astNode,...t.extensionASTNodes]);for(const r of n){zt(e,r),Ve(r.type)||e.reportError(`The type of ${t.name}.${r.name} must be Output Type but got: ${Y(r.type)}.`,r.astNode?.type);for(const n of r.args){const i=n.name;zt(e,n),Ue(n.type)||e.reportError(`The type of ${t.name}.${r.name}(${i}:) must be Input Type but got: ${Y(n.type)}.`,n.astNode?.type),nt(n)&&null!=n.deprecationReason&&e.reportError(`Required argument ${t.name}.${r.name}(${i}:) cannot be deprecated.`,[an(n.astNode),n.astNode?.type])}}}function Wt(e,t){const n=new Set;for(const r of t.getInterfaces())Fe(r)?t!==r?n.has(r.name)?e.reportError(`Type ${t.name} can only implement ${r.name} once.`,on(t,r)):(n.add(r.name),en(e,t,r),Zt(e,t,r)):e.reportError(`Type ${t.name} cannot implement itself because it would create a circular reference.`,on(t,r)):e.reportError(`Type ${Y(t)} must only implement Interface types, it cannot implement ${Y(r)}.`,on(t,r))}function Zt(e,t,n){const r=t.getFields();for(const i of Object.values(n.getFields())){const o=i.name,s=r[o];if(s){ct(e.schema,s.type,i.type)||e.reportError(`Interface field ${n.name}.${o} expects type ${Y(i.type)} but ${t.name}.${o} is type ${Y(s.type)}.`,[i.astNode?.type,s.astNode?.type]);for(const r of i.args){const i=r.name,a=s.args.find((e=>e.name===i));a?at(r.type,a.type)||e.reportError(`Interface field argument ${n.name}.${o}(${i}:) expects type ${Y(r.type)} but ${t.name}.${o}(${i}:) is type ${Y(a.type)}.`,[r.astNode?.type,a.astNode?.type]):e.reportError(`Interface field argument ${n.name}.${o}(${i}:) expected but ${t.name}.${o} does not provide it.`,[r.astNode,s.astNode])}for(const r of s.args){const s=r.name;!i.args.find((e=>e.name===s))&&nt(r)&&e.reportError(`Object field ${t.name}.${o} includes required argument ${s} that is missing from the Interface field ${n.name}.${o}.`,[r.astNode,i.astNode])}}else e.reportError(`Interface field ${n.name}.${o} expected but ${t.name} does not provide it.`,[i.astNode,t.astNode,...t.extensionASTNodes])}}function en(e,t,n){const r=t.getInterfaces();for(const i of n.getInterfaces())r.includes(i)||e.reportError(i===t?`Type ${t.name} cannot implement ${n.name} because it would create a circular reference.`:`Type ${t.name} must implement ${i.name} because it is implemented by ${n.name}.`,[...on(n,i),...on(t,n)])}function tn(e,t){const n=t.getTypes();0===n.length&&e.reportError(`Union type ${t.name} must define one or more member types.`,[t.astNode,...t.extensionASTNodes]);const r=new Set;for(const i of n)r.has(i.name)?e.reportError(`Union type ${t.name} can only include type ${i.name} once.`,sn(t,i.name)):(r.add(i.name),xe(i)||e.reportError(`Union type ${t.name} can only include Object types, it cannot include ${Y(i)}.`,sn(t,String(i))))}function nn(e,t){const n=t.getValues();0===n.length&&e.reportError(`Enum type ${t.name} must define one or more values.`,[t.astNode,...t.extensionASTNodes]);for(const t of n)zt(e,t)}function rn(e,t){const n=Object.values(t.getFields());0===n.length&&e.reportError(`Input Object type ${t.name} must define one or more fields.`,[t.astNode,...t.extensionASTNodes]);for(const r of n)zt(e,r),Ue(r.type)||e.reportError(`The type of ${t.name}.${r.name} must be Input Type but got: ${Y(r.type)}.`,r.astNode?.type),st(r)&&null!=r.deprecationReason&&e.reportError(`Required input field ${t.name}.${r.name} cannot be deprecated.`,[an(r.astNode),r.astNode?.type])}function on(e,t){const{astNode:n,extensionASTNodes:r}=e;return(null!=n?[n,...r]:r).flatMap((e=>e.interfaces??[])).filter((e=>e.name.value===t.name))}function sn(e,t){const{astNode:n,extensionASTNodes:r}=e;return(null!=n?[n,...r]:r).flatMap((e=>e.types??[])).filter((e=>e.name.value===t))}function an(e){return e?.directives?.find((e=>e.name.value===bt.name))}function cn(e,t){switch(t.kind){case h.LIST_TYPE:{const n=cn(e,t.type);return n&&new GraphQLList(n)}case h.NON_NULL_TYPE:{const n=cn(e,t.type);return n&&new GraphQLNonNull(n)}case h.NAMED_TYPE:return e.getType(t.name.value)}}class TypeInfo{constructor(e,t,n){this._schema=e,this._typeStack=[],this._parentTypeStack=[],this._inputTypeStack=[],this._fieldDefStack=[],this._defaultValueStack=[],this._directive=null,this._argument=null,this._enumValue=null,this._getFieldDef=n??un,t&&(Ue(t)&&this._inputTypeStack.push(t),Me(t)&&this._parentTypeStack.push(t),Ve(t)&&this._typeStack.push(t))}get[Symbol.toStringTag](){return"TypeInfo"}getType(){if(this._typeStack.length>0)return this._typeStack[this._typeStack.length-1]}getParentType(){if(this._parentTypeStack.length>0)return this._parentTypeStack[this._parentTypeStack.length-1]}getInputType(){if(this._inputTypeStack.length>0)return this._inputTypeStack[this._inputTypeStack.length-1]}getParentInputType(){if(this._inputTypeStack.length>1)return this._inputTypeStack[this._inputTypeStack.length-2]}getFieldDef(){if(this._fieldDefStack.length>0)return this._fieldDefStack[this._fieldDefStack.length-1]}getDefaultValue(){if(this._defaultValueStack.length>0)return this._defaultValueStack[this._defaultValueStack.length-1]}getDirective(){return this._directive}getArgument(){return this._argument}getEnumValue(){return this._enumValue}enter(e){const t=this._schema;switch(e.kind){case h.SELECTION_SET:{const e=Ke(this.getType());this._parentTypeStack.push(Me(e)?e:void 0);break}case h.FIELD:{const n=this.getParentType();let r,i;n&&(r=this._getFieldDef(t,n,e),r&&(i=r.type)),this._fieldDefStack.push(r),this._typeStack.push(Ve(i)?i:void 0);break}case h.DIRECTIVE:this._directive=t.getDirective(e.name.value);break;case h.OPERATION_DEFINITION:{const n=t.getRootType(e.operation);this._typeStack.push(xe(n)?n:void 0);break}case h.INLINE_FRAGMENT:case h.FRAGMENT_DEFINITION:{const n=e.typeCondition,r=n?cn(t,n):Ke(this.getType());this._typeStack.push(Ve(r)?r:void 0);break}case h.VARIABLE_DEFINITION:{const n=cn(t,e.type);this._inputTypeStack.push(Ue(n)?n:void 0);break}case h.ARGUMENT:{let t,n;const r=this.getDirective()??this.getFieldDef();r&&(t=r.args.find((t=>t.name===e.name.value)),t&&(n=t.type)),this._argument=t,this._defaultValueStack.push(t?t.defaultValue:void 0),this._inputTypeStack.push(Ue(n)?n:void 0);break}case h.LIST:{const e=Je(this.getInputType()),t=$e(e)?e.ofType:e;this._defaultValueStack.push(void 0),this._inputTypeStack.push(Ue(t)?t:void 0);break}case h.OBJECT_FIELD:{const t=Ke(this.getInputType());let n,r;Ge(t)&&(r=t.getFields()[e.name.value],r&&(n=r.type)),this._defaultValueStack.push(r?r.defaultValue:void 0),this._inputTypeStack.push(Ue(n)?n:void 0);break}case h.ENUM:{const t=Ke(this.getInputType());let n;Ce(t)&&(n=t.getValue(e.value)),this._enumValue=n;break}}}leave(e){switch(e.kind){case h.SELECTION_SET:this._parentTypeStack.pop();break;case h.FIELD:this._fieldDefStack.pop(),this._typeStack.pop();break;case h.DIRECTIVE:this._directive=null;break;case h.OPERATION_DEFINITION:case h.INLINE_FRAGMENT:case h.FRAGMENT_DEFINITION:this._typeStack.pop();break;case h.VARIABLE_DEFINITION:this._inputTypeStack.pop();break;case h.ARGUMENT:this._argument=null,this._defaultValueStack.pop(),this._inputTypeStack.pop();break;case h.LIST:case h.OBJECT_FIELD:this._defaultValueStack.pop(),this._inputTypeStack.pop();break;case h.ENUM:this._enumValue=null}}}function un(e,t,n){return e.getField(t,n.name.value)}function ln(e,t){return{enter(...n){const r=n[0];e.enter(r);const i=Ne(t,r.kind).enter;if(i){const o=i.apply(t,n);return void 0!==o&&(e.leave(r),p(o)&&e.enter(o)),o}},leave(...n){const r=n[0],i=Ne(t,r.kind).leave;let o;return i&&(o=i.apply(t,n)),e.leave(r),o}}}function pn(e){return e.kind===h.OPERATION_DEFINITION||e.kind===h.FRAGMENT_DEFINITION}function dn(e){return e.kind===h.SCALAR_TYPE_DEFINITION||e.kind===h.OBJECT_TYPE_DEFINITION||e.kind===h.INTERFACE_TYPE_DEFINITION||e.kind===h.UNION_TYPE_DEFINITION||e.kind===h.ENUM_TYPE_DEFINITION||e.kind===h.INPUT_OBJECT_TYPE_DEFINITION}function fn(e){return e.kind===h.SCALAR_TYPE_EXTENSION||e.kind===h.OBJECT_TYPE_EXTENSION||e.kind===h.INTERFACE_TYPE_EXTENSION||e.kind===h.UNION_TYPE_EXTENSION||e.kind===h.ENUM_TYPE_EXTENSION||e.kind===h.INPUT_OBJECT_TYPE_EXTENSION}function hn(e){const t=Object.create(null),n=e.getSchema(),r=n?n.getDirectives():At;for(const e of r)t[e.name]=e.args.map((e=>e.name));const i=e.getDocument().definitions;for(const e of i)if(e.kind===h.DIRECTIVE_DEFINITION){const n=e.arguments??[];t[e.name.value]=n.map((e=>e.name.value))}return{Directive(n){const r=n.name.value,i=t[r];if(n.arguments&&i)for(const t of n.arguments){const n=t.name.value;if(!i.includes(n)){const o=le(n,i);e.reportError(new GraphQLError(`Unknown argument "${n}" on directive "@${r}".`+te(o),{nodes:t}))}}return!1}}}function mn(e){const t=Object.create(null),r=e.getSchema(),i=r?r.getDirectives():At;for(const e of i)t[e.name]=e.locations;const o=e.getDocument().definitions;for(const e of o)e.kind===h.DIRECTIVE_DEFINITION&&(t[e.name.value]=e.locations.map((e=>e.value)));return{Directive(r,i,o,s,a){const c=r.name.value,u=t[c];if(!u)return void e.reportError(new GraphQLError(`Unknown directive "@${c}".`,{nodes:r}));const l=function(e){const t=e[e.length-1];switch("kind"in t||n(!1),t.kind){case h.OPERATION_DEFINITION:return function(e){switch(e){case d.QUERY:return f.QUERY;case d.MUTATION:return f.MUTATION;case d.SUBSCRIPTION:return f.SUBSCRIPTION}}(t.operation);case h.FIELD:return f.FIELD;case h.FRAGMENT_SPREAD:return f.FRAGMENT_SPREAD;case h.INLINE_FRAGMENT:return f.INLINE_FRAGMENT;case h.FRAGMENT_DEFINITION:return f.FRAGMENT_DEFINITION;case h.VARIABLE_DEFINITION:return f.VARIABLE_DEFINITION;case h.SCHEMA_DEFINITION:case h.SCHEMA_EXTENSION:return f.SCHEMA;case h.SCALAR_TYPE_DEFINITION:case h.SCALAR_TYPE_EXTENSION:return f.SCALAR;case h.OBJECT_TYPE_DEFINITION:case h.OBJECT_TYPE_EXTENSION:return f.OBJECT;case h.FIELD_DEFINITION:return f.FIELD_DEFINITION;case h.INTERFACE_TYPE_DEFINITION:case h.INTERFACE_TYPE_EXTENSION:return f.INTERFACE;case h.UNION_TYPE_DEFINITION:case h.UNION_TYPE_EXTENSION:return f.UNION;case h.ENUM_TYPE_DEFINITION:case h.ENUM_TYPE_EXTENSION:return f.ENUM;case h.ENUM_VALUE_DEFINITION:return f.ENUM_VALUE;case h.INPUT_OBJECT_TYPE_DEFINITION:case h.INPUT_OBJECT_TYPE_EXTENSION:return f.INPUT_OBJECT;case h.INPUT_VALUE_DEFINITION:{const t=e[e.length-3];return"kind"in t||n(!1),t.kind===h.INPUT_OBJECT_TYPE_DEFINITION?f.INPUT_FIELD_DEFINITION:f.ARGUMENT_DEFINITION}default:n(!1,"Unexpected kind: "+Y(t.kind))}}(a);l&&!u.includes(l)&&e.reportError(new GraphQLError(`Directive "@${c}" may not be used on ${l}.`,{nodes:r}))}}}function En(e){const{definitions:t}=e.getDocument(),n=e.getSchema()?.getTypeMap()??{},r=new Set([...Object.keys(n),...t.filter(dn).map((e=>e.name.value))]);return{NamedType(t,n,i,o,s){const a=t.name.value;if(!r.has(a)){const n=s[2]??i,o=null!=n&&("kind"in(c=n)&&(function(e){return e.kind===h.SCHEMA_DEFINITION||dn(e)||e.kind===h.DIRECTIVE_DEFINITION}(c)||function(e){return e.kind===h.SCHEMA_EXTENSION||fn(e)}(c)));if(o&&Tn.has(a))return;const u=le(a,o?[...Tn,...r]:[...r]);e.reportError(new GraphQLError(`Unknown type "${a}".`+te(u),{nodes:t}))}var c}}}const Tn=new Set([...Tt,...Bt].map((e=>e.name)));function yn(e){const t=new Set,n=[];return{OperationDefinition(n){for(const r of e.getRecursivelyReferencedFragments(n))t.add(r.name.value);return!1},FragmentDefinition:e=>(n.push(e),!1),Document:{leave(){for(const r of n){const n=r.name.value;t.has(n)||e.reportError(new GraphQLError(`Fragment "${n}" is never used.`,{nodes:r}))}}}}}function Nn(e){switch(e.kind){case h.OBJECT:return{...e,fields:(t=e.fields,t.map((e=>({...e,value:Nn(e.value)}))).sort(((e,t)=>se(e.name.value,t.name.value))))};case h.LIST:return{...e,values:e.values.map(Nn)};case h.INT:case h.FLOAT:case h.STRING:case h.BOOLEAN:case h.NULL:case h.ENUM:case h.VARIABLE:return e}var t}function vn(e){return Array.isArray(e)?e.map((([e,t])=>`subfields "${e}" conflict because `+vn(t))).join(" and "):e}function In(e,t,n,r,i,o,s){const a=e.getFragment(s);if(!a)return;const[c,u]=Dn(e,n,a);if(o!==c){_n(e,t,n,r,i,o,c);for(const a of u)r.has(a,s,i)||(r.add(a,s,i),In(e,t,n,r,i,o,a))}}function gn(e,t,n,r,i,o,s){if(o===s)return;if(r.has(o,s,i))return;r.add(o,s,i);const a=e.getFragment(o),c=e.getFragment(s);if(!a||!c)return;const[u,l]=Dn(e,n,a),[p,d]=Dn(e,n,c);_n(e,t,n,r,i,u,p);for(const s of d)gn(e,t,n,r,i,o,s);for(const o of l)gn(e,t,n,r,i,o,s)}function _n(e,t,n,r,i,o,s){for(const[a,c]of Object.entries(o)){const o=s[a];if(o)for(const s of c)for(const c of o){const o=On(e,n,r,i,a,s,c);o&&t.push(o)}}}function On(e,t,n,r,i,o,s){const[a,c,u]=o,[l,p,d]=s,f=r||a!==l&&xe(a)&&xe(l);if(!f){const e=c.name.value,t=p.name.value;if(e!==t)return[[i,`"${e}" and "${t}" are different fields`],[c],[p]];if(Sn(c)!==Sn(p))return[[i,"they have differing arguments"],[c],[p]]}if(!function(e,t){const n=bn(e),r=bn(t);if(!n&&!r)return!0;if(n&&r)return Sn(n)===Sn(r);return!1}(c.directives??[],p.directives??[]))return[[i,"they have differing stream directives"],[c],[p]];const h=u?.type,m=d?.type;if(h&&m&&Ln(h,m))return[[i,`they return conflicting types "${Y(h)}" and "${Y(m)}"`],[c],[p]];const E=c.selectionSet,T=p.selectionSet;if(E&&T){const r=function(e,t,n,r,i,o,s,a){const c=[],[u,l]=An(e,t,i,o),[p,d]=An(e,t,s,a);_n(e,c,t,n,r,u,p);for(const i of d)In(e,c,t,n,r,u,i);for(const i of l)In(e,c,t,n,r,p,i);for(const i of l)for(const o of d)gn(e,c,t,n,r,i,o);return c}(e,t,n,f,Ke(h),E,Ke(m),T);return function(e,t,n,r){if(e.length>0)return[[t,e.map((([e])=>e))],[n,...e.map((([,e])=>e)).flat()],[r,...e.map((([,,e])=>e)).flat()]]}(r,i,c,p)}}function Sn(e){const t=e.arguments??[];return ve(Nn({kind:h.OBJECT,fields:t.map((e=>({kind:h.OBJECT_FIELD,name:e.name,value:e.value})))}))}function bn(e){return e.find((e=>"stream"===e.name.value))}function Ln(e,t){return $e(e)?!$e(t)||Ln(e.ofType,t.ofType):!!$e(t)||(Qe(e)?!Qe(t)||Ln(e.ofType,t.ofType):!!Qe(t)||!(!Pe(e)&&!Pe(t))&&e!==t)}function An(e,t,n,r){const i=t.get(r);if(i)return i;const o=Object.create(null),s=new Set;wn(e,n,r,o,s);const a=[o,[...s]];return t.set(r,a),a}function Dn(e,t,n){const r=t.get(n.selectionSet);if(r)return r;const i=cn(e.getSchema(),n.typeCondition);return An(e,t,i,n.selectionSet)}function wn(e,t,n,r,i){for(const o of n.selections)switch(o.kind){case h.FIELD:{const e=o.name.value;let n;(xe(t)||Fe(t))&&(n=t.getFields()[e]);const i=o.alias?o.alias.value:e;r[i]||(r[i]=[]),r[i].push([t,o,n]);break}case h.FRAGMENT_SPREAD:i.add(o.name.value);break;case h.INLINE_FRAGMENT:{const n=o.typeCondition,s=n?cn(e.getSchema(),n):t;wn(e,s,o.selectionSet,r,i);break}}}class PairSet{constructor(){this._data=new Map}has(e,t,n){const[r,i]=ee.name));const i=e.getDocument().definitions;for(const e of i)if(e.kind===h.DIRECTIVE_DEFINITION){const n=e.arguments??[];t[e.name.value]=re(n.filter(Fn),(e=>e.name.value))}return{Directive:{leave(n){const r=n.name.value,i=t[r];if(i){const t=n.arguments??[],o=new Set(t.map((e=>e.name.value)));for(const[t,s]of Object.entries(i))if(!o.has(t)){const i=we(s.type)?Y(s.type):ve(s.type);e.reportError(new GraphQLError(`Directive "@${r}" argument "${t}" of type "${i}" is required, but it was not provided.`,{nodes:n}))}}}}}}function Fn(e){return e.type.kind===h.NON_NULL_TYPE&&null==e.defaultValue}function Rn(e,t,r){if(e){if(e.kind===h.VARIABLE){const n=e.name.value;if(null==r||void 0===r[n])return;const i=r[n];if(null===i&&Qe(t))return;return i}if(Qe(t)){if(e.kind===h.NULL)return;return Rn(e,t.ofType,r)}if(e.kind===h.NULL)return null;if($e(t)){const n=t.ofType;if(e.kind===h.LIST){const t=[];for(const i of e.values)if(Cn(i,r)){if(Qe(n))return;t.push(null)}else{const e=Rn(i,n,r);if(void 0===e)return;t.push(e)}return t}const i=Rn(e,n,r);if(void 0===i)return;return[i]}if(Ge(t)){if(e.kind!==h.OBJECT)return;const n=Object.create(null),i=re(e.fields,(e=>e.name.value));for(const e of Object.values(t.getFields())){const t=i[e.name];if(!t||Cn(t.value,r)){if(void 0!==e.defaultValue)n[e.name]=e.defaultValue;else if(Qe(e.type))return;continue}const o=Rn(t.value,e.type,r);if(void 0===o)return;n[e.name]=o}return n}if(Pe(t)){let n;try{n=t.parseLiteral(e,r)}catch(e){return}if(void 0===n)return;return n}n(!1,"Unexpected input type: "+Y(t))}}function Cn(e,t){return e.kind===h.VARIABLE&&(null==t||void 0===t[e.name.value])}function Gn(e,t,n){const r=t.directives?.find((t=>t.name.value===e.name));if(r)return function(e,t,n){const r={},i=re(t.arguments??[],(e=>e.name.value));for(const a of e.args){const e=a.name,c=a.type,u=i[e];if(!u){if(void 0!==a.defaultValue)r[e]=a.defaultValue;else if(Qe(c))throw new GraphQLError(`Argument "${e}" of required type "${Y(c)}" was not provided.`,{nodes:t});continue}const l=u.value;let p=l.kind===h.NULL;if(l.kind===h.VARIABLE){const t=l.name.value;if(null==n||(o=n,s=t,!Object.prototype.hasOwnProperty.call(o,s))){if(void 0!==a.defaultValue)r[e]=a.defaultValue;else if(Qe(c))throw new GraphQLError(`Argument "${e}" of required type "${Y(c)}" was provided the variable "$${t}" which was not provided a runtime value.`,{nodes:l});continue}p=null==n[t]}if(p&&Qe(c))throw new GraphQLError(`Argument "${e}" of non-null type "${Y(c)}" must not be null.`,{nodes:l});const d=Rn(l,c,n);if(void 0===d)throw new GraphQLError(`Argument "${e}" has invalid value ${ve(l)}.`,{nodes:l});r[e]=d}var o,s;return r}(e,r,n)}function $n(e,t,n,r,i){const o=new AccumulatorMap,s=[];return Qn(e,t,n,r,i,o,s,new Set),{fields:o,patches:s}}function Qn(e,t,n,r,i,o,s,a){for(const u of i.selections)switch(u.kind){case h.FIELD:if(!Vn(n,u))continue;o.add((c=u).alias?c.alias.value:c.name.value,u);break;case h.INLINE_FRAGMENT:{if(!Vn(n,u)||!Pn(e,u,r))continue;const i=Un(n,u);if(i){const o=new AccumulatorMap;Qn(e,t,n,r,u.selectionSet,o,s,a),s.push({label:i.label,fields:o})}else Qn(e,t,n,r,u.selectionSet,o,s,a);break}case h.FRAGMENT_SPREAD:{const i=u.name.value;if(!Vn(n,u))continue;const c=Un(n,u);if(a.has(i)&&!c)continue;const l=t[i];if(!l||!Pn(e,l,r))continue;if(c||a.add(i),c){const i=new AccumulatorMap;Qn(e,t,n,r,l.selectionSet,i,s,a),s.push({label:c.label,fields:i})}else Qn(e,t,n,r,l.selectionSet,o,s,a);break}}var c}function Un(e,t){const n=Gn(_t,t,e);if(n&&!1!==n.if)return{label:"string"==typeof n.label?n.label:void 0}}function Vn(e,t){const n=Gn(gt,t,e);if(!0===n?.if)return!1;const r=Gn(It,t,e);return!1!==r?.if}function Pn(e,t,n){const r=t.typeCondition;if(!r)return!0;const i=cn(e,r);return i===n||!!je(i)&&e.isSubType(i,n)}function Mn(e,t){const n=new AccumulatorMap;for(const r of e)n.add(t(r),r);return n}function jn(e){return{Field:t,Directive:t};function t(t){const n=Mn(t.arguments??[],(e=>e.name.value));for(const[t,r]of n)r.length>1&&e.reportError(new GraphQLError(`There can be only one argument named "${t}".`,{nodes:r.map((e=>e.name))}))}}function Bn(e){const t=Object.create(null),n=e.getSchema(),r=n?n.getDirectives():At;for(const e of r)t[e.name]=!e.isRepeatable;const i=e.getDocument().definitions;for(const e of i)e.kind===h.DIRECTIVE_DEFINITION&&(t[e.name.value]=!e.repeatable);const o=Object.create(null),s=Object.create(null);return{enter(n){if(!("directives"in n)||!n.directives)return;let r;if(n.kind===h.SCHEMA_DEFINITION||n.kind===h.SCHEMA_EXTENSION)r=o;else if(dn(n)||fn(n)){const e=n.name.value;r=s[e],void 0===r&&(s[e]=r=Object.create(null))}else r=Object.create(null);for(const i of n.directives){const n=i.name.value;t[n]&&(r[n]?e.reportError(new GraphQLError(`The directive "@${n}" can only be used once at this location.`,{nodes:[r[n],i]})):r[n]=i)}}}}function Yn(e,t){return!!(xe(e)||Fe(e)||Ge(e))&&null!=e.getFields()[t]}function Jn(e){const t=[];let r=Object.create(null);return{ObjectValue:{enter(){t.push(r),r=Object.create(null)},leave(){const e=t.pop();null!=e||n(!1),r=e}},ObjectField(t){const n=t.name.value;r[n]?e.reportError(new GraphQLError(`There can be only one input field named "${n}".`,{nodes:[r[n],t.name]})):r[n]=t.name}}}function qn(e,t){const n=e.getInputType();if(!n)return;const r=Ke(n);if(Pe(r))try{if(void 0===r.parseLiteral(t,void 0)){const r=Y(n);e.reportError(new GraphQLError(`Expected value of type "${r}", found ${ve(t)}.`,{nodes:t}))}}catch(r){const i=Y(n);r instanceof GraphQLError?e.reportError(r):e.reportError(new GraphQLError(`Expected value of type "${i}", found ${ve(t)}; `+r.message,{nodes:t,originalError:r}))}else{const r=Y(n);e.reportError(new GraphQLError(`Expected value of type "${r}", found ${ve(t)}.`,{nodes:t}))}}function Kn(e,t,n,r,i){if(Qe(r)&&!Qe(t)){if(!(null!=n&&n.kind!==h.NULL)&&!(void 0!==i))return!1;return ct(e,t,r.ofType)}return ct(e,t,r)}const Xn=Object.freeze([function(e){return{Document(t){for(const n of t.definitions)if(!pn(n)){const t=n.kind===h.SCHEMA_DEFINITION||n.kind===h.SCHEMA_EXTENSION?"schema":'"'+n.name.value+'"';e.reportError(new GraphQLError(`The ${t} definition is not executable.`,{nodes:n}))}return!1}}},function(e){const t=Object.create(null);return{OperationDefinition(n){const r=n.name;return r&&(t[r.value]?e.reportError(new GraphQLError(`There can be only one operation named "${r.value}".`,{nodes:[t[r.value],r]})):t[r.value]=r),!1},FragmentDefinition:()=>!1}},function(e){let t=0;return{Document(e){t=e.definitions.filter((e=>e.kind===h.OPERATION_DEFINITION)).length},OperationDefinition(n){!n.name&&t>1&&e.reportError(new GraphQLError("This anonymous operation must be the only defined operation.",{nodes:n}))}}},function(e){return{OperationDefinition(t){if("subscription"===t.operation){const n=e.getSchema(),r=n.getSubscriptionType();if(r){const i=t.name?t.name.value:null,o=Object.create(null),s=e.getDocument(),a=Object.create(null);for(const e of s.definitions)e.kind===h.FRAGMENT_DEFINITION&&(a[e.name.value]=e);const{fields:c}=$n(n,a,o,r,t.selectionSet);if(c.size>1){const t=[...c.values()].slice(1).flat();e.reportError(new GraphQLError(null!=i?`Subscription "${i}" must select only one top level field.`:"Anonymous Subscription must select only one top level field.",{nodes:t}))}for(const t of c.values()){t[0].name.value.startsWith("__")&&e.reportError(new GraphQLError(null!=i?`Subscription "${i}" must not select an introspection top level field.`:"Anonymous Subscription must not select an introspection top level field.",{nodes:t}))}}}}}},En,function(e){return{InlineFragment(t){const n=t.typeCondition;if(n){const t=cn(e.getSchema(),n);if(t&&!Me(t)){const t=ve(n);e.reportError(new GraphQLError(`Fragment cannot condition on non composite type "${t}".`,{nodes:n}))}}},FragmentDefinition(t){const n=cn(e.getSchema(),t.typeCondition);if(n&&!Me(n)){const n=ve(t.typeCondition);e.reportError(new GraphQLError(`Fragment "${t.name.value}" cannot condition on non composite type "${n}".`,{nodes:t.typeCondition}))}}}},function(e){return{VariableDefinition(t){const n=cn(e.getSchema(),t.type);if(void 0!==n&&!Ue(n)){const n=t.variable.name.value,r=ve(t.type);e.reportError(new GraphQLError(`Variable "$${n}" cannot be non-input type "${r}".`,{nodes:t.type}))}}}},function(e){return{Field(t){const n=e.getType(),r=t.selectionSet;if(n)if(Pe(Ke(n))){if(r){const i=t.name.value,o=Y(n);e.reportError(new GraphQLError(`Field "${i}" must not have a selection since type "${o}" has no subfields.`,{nodes:r}))}}else if(!r){const r=t.name.value,i=Y(n);e.reportError(new GraphQLError(`Field "${r}" of type "${i}" must have a selection of subfields. Did you mean "${r} { ... }"?`,{nodes:t}))}}}},function(e){return{Field(t){const n=e.getParentType();if(n){if(!e.getFieldDef()){const r=e.getSchema(),i=t.name.value;let o=te("to use an inline fragment on",function(e,t,n){if(!je(t))return[];const r=new Set,i=Object.create(null);for(const o of e.getPossibleTypes(t))if(o.getFields()[n]){r.add(o),i[o.name]=1;for(const e of o.getInterfaces())e.getFields()[n]&&(r.add(e),i[e.name]=(i[e.name]??0)+1)}return[...r].sort(((t,n)=>{const r=i[n.name]-i[t.name];return 0!==r?r:Fe(t)&&e.isSubType(t,n)?-1:Fe(n)&&e.isSubType(n,t)?1:se(t.name,n.name)})).map((e=>e.name))}(r,n,i));""===o&&(o=te(function(e,t){if(xe(e)||Fe(e)){return le(t,Object.keys(e.getFields()))}return[]}(n,i))),e.reportError(new GraphQLError(`Cannot query field "${i}" on type "${n.name}".`+o,{nodes:t}))}}}}},function(e){const t=Object.create(null);return{OperationDefinition:()=>!1,FragmentDefinition(n){const r=n.name.value;return t[r]?e.reportError(new GraphQLError(`There can be only one fragment named "${r}".`,{nodes:[t[r],n.name]})):t[r]=n.name,!1}}},function(e){return{FragmentSpread(t){const n=t.name.value;e.getFragment(n)||e.reportError(new GraphQLError(`Unknown fragment "${n}".`,{nodes:t.name}))}}},yn,function(e){return{InlineFragment(t){const n=e.getType(),r=e.getParentType();if(Me(n)&&Me(r)&&!ut(e.getSchema(),n,r)){const i=Y(r),o=Y(n);e.reportError(new GraphQLError(`Fragment cannot be spread here as objects of type "${i}" can never be of type "${o}".`,{nodes:t}))}},FragmentSpread(t){const n=t.name.value,r=function(e,t){const n=e.getFragment(t);if(n){const t=cn(e.getSchema(),n.typeCondition);if(Me(t))return t}}(e,n),i=e.getParentType();if(r&&i&&!ut(e.getSchema(),r,i)){const o=Y(i),s=Y(r);e.reportError(new GraphQLError(`Fragment "${n}" cannot be spread here as objects of type "${o}" can never be of type "${s}".`,{nodes:t}))}}}},function(e){const t=new Set,n=[],r=Object.create(null);return{OperationDefinition:()=>!1,FragmentDefinition:e=>(i(e),!1)};function i(o){if(t.has(o.name.value))return;const s=o.name.value;t.add(s);const a=e.getFragmentSpreads(o.selectionSet);if(0!==a.length){r[s]=n.length;for(const t of a){const o=t.name.value,s=r[o];if(n.push(t),void 0===s){const t=e.getFragment(o);t&&i(t)}else{const t=n.slice(s),r=t.slice(0,-1).map((e=>'"'+e.name.value+'"')).join(", ");e.reportError(new GraphQLError(`Cannot spread fragment "${o}" within itself`+(""!==r?` via ${r}.`:"."),{nodes:t}))}n.pop()}r[s]=void 0}}},function(e){return{OperationDefinition(t){const n=Mn(t.variableDefinitions??[],(e=>e.variable.name.value));for(const[t,r]of n)r.length>1&&e.reportError(new GraphQLError(`There can be only one variable named "$${t}".`,{nodes:r.map((e=>e.variable.name))}))}}},function(e){return{OperationDefinition(t){const n=new Set(t.variableDefinitions?.map((e=>e.variable.name.value))),r=e.getRecursiveVariableUsages(t);for(const{node:i}of r){const r=i.name.value;n.has(r)||e.reportError(new GraphQLError(t.name?`Variable "$${r}" is not defined by operation "${t.name.value}".`:`Variable "$${r}" is not defined.`,{nodes:[i,t]}))}}}},function(e){return{OperationDefinition(t){const n=e.getRecursiveVariableUsages(t),r=new Set(n.map((({node:e})=>e.name.value))),i=t.variableDefinitions??[];for(const n of i){const i=n.variable.name.value;r.has(i)||e.reportError(new GraphQLError(t.name?`Variable "$${i}" is never used in operation "${t.name.value}".`:`Variable "$${i}" is never used.`,{nodes:n}))}}}},mn,Bn,function(e){return{Directive(t){const n=e.getSchema().getMutationType(),r=e.getSchema().getSubscriptionType(),i=e.getParentType();i&&t.name.value===_t.name&&(n&&i===n&&e.reportError(new GraphQLError(`Defer directive cannot be used on root mutation type "${i.name}".`,{nodes:t})),r&&i===r&&e.reportError(new GraphQLError(`Defer directive cannot be used on root subscription type "${i.name}".`,{nodes:t}))),i&&t.name.value===Ot.name&&(n&&i===n&&e.reportError(new GraphQLError(`Stream directive cannot be used on root mutation type "${i.name}".`,{nodes:t})),r&&i===r&&e.reportError(new GraphQLError(`Stream directive cannot be used on root subscription type "${i.name}".`,{nodes:t})))}}},function(e){const t=Object.create(null);return{Directive(n){if(n.name.value===_t.name||n.name.value===Ot.name){const r=n.arguments?.find((e=>"label"===e.name.value)),i=r?.value;if(!i)return;i.kind!==h.STRING?e.reportError(new GraphQLError(`Directive "${n.name.value}"'s label argument must be a static string.`,{nodes:n})):t[i.value]?e.reportError(new GraphQLError("Defer/Stream directive label argument must be unique.",{nodes:[t[i.value],n]})):t[i.value]=n}}}},function(e){return{Directive(t){const n=e.getFieldDef(),r=e.getParentType();n&&r&&t.name.value===Ot.name&&!($e(n.type)||Be(n.type)&&$e(n.type.ofType))&&e.reportError(new GraphQLError(`Stream directive cannot be used on non-list field "${n.name}" on type "${r.name}".`,{nodes:t}))}}},function(e){return{...hn(e),Argument(t){const n=e.getArgument(),r=e.getFieldDef(),i=e.getParentType();if(!n&&r&&i){const n=t.name.value,o=le(n,r.args.map((e=>e.name)));e.reportError(new GraphQLError(`Unknown argument "${n}" on field "${i.name}.${r.name}".`+te(o),{nodes:t}))}}}},jn,function(e){return{ListValue(t){if(!$e(Je(e.getParentInputType())))return qn(e,t),!1},ObjectValue(t){const n=Ke(e.getInputType());if(!Ge(n))return qn(e,t),!1;const r=re(t.fields,(e=>e.name.value));for(const i of Object.values(n.getFields())){if(!r[i.name]&&st(i)){const r=Y(i.type);e.reportError(new GraphQLError(`Field "${n.name}.${i.name}" of required type "${r}" was not provided.`,{nodes:t}))}}},ObjectField(t){const n=Ke(e.getParentInputType());if(!e.getInputType()&&Ge(n)){const r=le(t.name.value,Object.keys(n.getFields()));e.reportError(new GraphQLError(`Field "${t.name.value}" is not defined by type "${n.name}".`+te(r),{nodes:t}))}},NullValue(t){const n=e.getInputType();Qe(n)&&e.reportError(new GraphQLError(`Expected value of type "${Y(n)}", found ${ve(t)}.`,{nodes:t}))},EnumValue:t=>qn(e,t),IntValue:t=>qn(e,t),FloatValue:t=>qn(e,t),StringValue:t=>qn(e,t),BooleanValue:t=>qn(e,t)}},function(e){return{...xn(e),Field:{leave(t){const n=e.getFieldDef();if(!n)return!1;const r=new Set(t.arguments?.map((e=>e.name.value)));for(const i of n.args)if(!r.has(i.name)&&nt(i)){const r=Y(i.type);e.reportError(new GraphQLError(`Field "${n.name}" argument "${i.name}" of type "${r}" is required, but it was not provided.`,{nodes:t}))}}}}},function(e){let t=Object.create(null);return{OperationDefinition:{enter(){t=Object.create(null)},leave(n){const r=e.getRecursiveVariableUsages(n);for(const{node:n,type:i,defaultValue:o}of r){const r=n.name.value,s=t[r];if(s&&i){const t=e.getSchema(),a=cn(t,s.type);if(a&&!Kn(t,a,s.defaultValue,i,o)){const t=Y(a),o=Y(i);e.reportError(new GraphQLError(`Variable "$${r}" of type "${t}" used in position expecting type "${o}".`,{nodes:[s,n]}))}}}}},VariableDefinition(e){t[e.variable.name.value]=e}}},function(e){const t=new PairSet,n=new Map;return{SelectionSet(r){const i=function(e,t,n,r,i){const o=[],[s,a]=An(e,t,r,i);if(function(e,t,n,r,i){for(const[o,s]of Object.entries(i))if(s.length>1)for(let i=0;i0&&e.reportError(new GraphQLError("Must provide only one schema definition.",{nodes:t})),++r)}}},function(e){const t=e.getSchema(),n=Object.create(null),r=t?{query:t.getQueryType(),mutation:t.getMutationType(),subscription:t.getSubscriptionType()}:{};return{SchemaDefinition:i,SchemaExtension:i};function i(t){const i=t.operationTypes??[];for(const t of i){const i=t.operation,o=n[i];r[i]?e.reportError(new GraphQLError(`Type for ${i} already defined in the schema. It cannot be redefined.`,{nodes:t})):o?e.reportError(new GraphQLError(`There can be only one ${i} type in schema.`,{nodes:[o,t]})):n[i]=t}return!1}},function(e){const t=Object.create(null),n=e.getSchema();return{ScalarTypeDefinition:r,ObjectTypeDefinition:r,InterfaceTypeDefinition:r,UnionTypeDefinition:r,EnumTypeDefinition:r,InputObjectTypeDefinition:r};function r(r){const i=r.name.value;if(!n?.getType(i))return t[i]?e.reportError(new GraphQLError(`There can be only one type named "${i}".`,{nodes:[t[i],r.name]})):t[i]=r.name,!1;e.reportError(new GraphQLError(`Type "${i}" already exists in the schema. It cannot also be defined in this type definition.`,{nodes:r.name}))}},function(e){const t=e.getSchema(),n=t?t.getTypeMap():Object.create(null),r=Object.create(null);return{EnumTypeDefinition:i,EnumTypeExtension:i};function i(t){const i=t.name.value;r[i]||(r[i]=Object.create(null));const o=t.values??[],s=r[i];for(const t of o){const r=t.name.value,o=n[i];Ce(o)&&o.getValue(r)?e.reportError(new GraphQLError(`Enum value "${i}.${r}" already exists in the schema. It cannot also be defined in this type extension.`,{nodes:t.name})):s[r]?e.reportError(new GraphQLError(`Enum value "${i}.${r}" can only be defined once.`,{nodes:[s[r],t.name]})):s[r]=t.name}return!1}},function(e){const t=e.getSchema(),n=t?t.getTypeMap():Object.create(null),r=Object.create(null);return{InputObjectTypeDefinition:i,InputObjectTypeExtension:i,InterfaceTypeDefinition:i,InterfaceTypeExtension:i,ObjectTypeDefinition:i,ObjectTypeExtension:i};function i(t){const i=t.name.value;r[i]||(r[i]=Object.create(null));const o=t.fields??[],s=r[i];for(const t of o){const r=t.name.value;Yn(n[i],r)?e.reportError(new GraphQLError(`Field "${i}.${r}" already exists in the schema. It cannot also be defined in this type extension.`,{nodes:t.name})):s[r]?e.reportError(new GraphQLError(`Field "${i}.${r}" can only be defined once.`,{nodes:[s[r],t.name]})):s[r]=t.name}return!1}},function(e){return{DirectiveDefinition(e){const t=e.arguments??[];return n(`@${e.name.value}`,t)},InterfaceTypeDefinition:t,InterfaceTypeExtension:t,ObjectTypeDefinition:t,ObjectTypeExtension:t};function t(e){const t=e.name.value,r=e.fields??[];for(const e of r){n(`${t}.${e.name.value}`,e.arguments??[])}return!1}function n(t,n){const r=Mn(n,(e=>e.name.value));for(const[n,i]of r)i.length>1&&e.reportError(new GraphQLError(`Argument "${t}(${n}:)" can only be defined once.`,{nodes:i.map((e=>e.name))}));return!1}},function(e){const t=Object.create(null),n=e.getSchema();return{DirectiveDefinition(r){const i=r.name.value;if(!n?.getDirective(i))return t[i]?e.reportError(new GraphQLError(`There can be only one directive named "@${i}".`,{nodes:[t[i],r.name]})):t[i]=r.name,!1;e.reportError(new GraphQLError(`Directive "@${i}" already exists in the schema. It cannot be redefined.`,{nodes:r.name}))}}},En,mn,Bn,function(e){const t=e.getSchema(),r=Object.create(null);for(const t of e.getDocument().definitions)dn(t)&&(r[t.name.value]=t);return{ScalarTypeExtension:i,ObjectTypeExtension:i,InterfaceTypeExtension:i,UnionTypeExtension:i,EnumTypeExtension:i,InputObjectTypeExtension:i};function i(i){const o=i.name.value,s=r[o],a=t?.getType(o);let c;if(s?c=kn[s.kind]:a&&(c=function(e){if(ke(e))return h.SCALAR_TYPE_EXTENSION;if(xe(e))return h.OBJECT_TYPE_EXTENSION;if(Fe(e))return h.INTERFACE_TYPE_EXTENSION;if(Re(e))return h.UNION_TYPE_EXTENSION;if(Ce(e))return h.ENUM_TYPE_EXTENSION;if(Ge(e))return h.INPUT_OBJECT_TYPE_EXTENSION;n(!1,"Unexpected type: "+Y(e))}(a)),c){if(c!==i.kind){const t=function(e){switch(e){case h.SCALAR_TYPE_EXTENSION:return"scalar";case h.OBJECT_TYPE_EXTENSION:return"object";case h.INTERFACE_TYPE_EXTENSION:return"interface";case h.UNION_TYPE_EXTENSION:return"union";case h.ENUM_TYPE_EXTENSION:return"enum";case h.INPUT_OBJECT_TYPE_EXTENSION:return"input object";default:n(!1,"Unexpected kind: "+Y(e))}}(i.kind);e.reportError(new GraphQLError(`Cannot extend non-${t} type "${o}".`,{nodes:s?[s,i]:i}))}}else{const n=le(o,Object.keys({...r,...t?.getTypeMap()}));e.reportError(new GraphQLError(`Cannot extend type "${o}" because it is not defined.`+te(n),{nodes:i.name}))}}},hn,jn,Jn,xn]);class ASTValidationContext{constructor(e,t){this._ast=e,this._fragments=void 0,this._fragmentSpreads=new Map,this._recursivelyReferencedFragments=new Map,this._onError=t}get[Symbol.toStringTag](){return"ASTValidationContext"}reportError(e){this._onError(e)}getDocument(){return this._ast}getFragment(e){let t;if(this._fragments)t=this._fragments;else{t=Object.create(null);for(const e of this.getDocument().definitions)e.kind===h.FRAGMENT_DEFINITION&&(t[e.name.value]=e);this._fragments=t}return t[e]}getFragmentSpreads(e){let t=this._fragmentSpreads.get(e);if(!t){t=[];const n=[e];let r;for(;r=n.pop();)for(const e of r.selections)e.kind===h.FRAGMENT_SPREAD?t.push(e):e.selectionSet&&n.push(e.selectionSet);this._fragmentSpreads.set(e,t)}return t}getRecursivelyReferencedFragments(e){let t=this._recursivelyReferencedFragments.get(e);if(!t){t=[];const n=new Set,r=[e.selectionSet];let i;for(;i=r.pop();)for(const e of this.getFragmentSpreads(i)){const i=e.name.value;if(!n.has(i)){n.add(i);const e=this.getFragment(i);e&&(t.push(e),r.push(e.selectionSet))}}this._recursivelyReferencedFragments.set(e,t)}return t}}class SDLValidationContext extends ASTValidationContext{constructor(e,t,n){super(e,n),this._schema=t}get[Symbol.toStringTag](){return"SDLValidationContext"}getSchema(){return this._schema}}class ValidationContext extends ASTValidationContext{constructor(e,t,n,r){super(t,r),this._schema=e,this._typeInfo=n,this._variableUsages=new Map,this._recursiveVariableUsages=new Map}get[Symbol.toStringTag](){return"ValidationContext"}getSchema(){return this._schema}getVariableUsages(e){let t=this._variableUsages.get(e);if(!t){const n=[],r=new TypeInfo(this._schema);Te(e,ln(r,{VariableDefinition:()=>!1,Variable(e){n.push({node:e,type:r.getInputType(),defaultValue:r.getDefaultValue()})}})),t=n,this._variableUsages.set(e,t)}return t}getRecursiveVariableUsages(e){let t=this._recursiveVariableUsages.get(e);if(!t){t=this.getVariableUsages(e);for(const n of this.getRecursivelyReferencedFragments(e))t=t.concat(this.getVariableUsages(n));this._recursiveVariableUsages.set(e,t)}return t}getType(){return this._typeInfo.getType()}getParentType(){return this._typeInfo.getParentType()}getInputType(){return this._typeInfo.getInputType()}getParentInputType(){return this._typeInfo.getParentInputType()}getFieldDef(){return this._typeInfo.getFieldDef()}getDirective(){return this._typeInfo.getDirective()}getArgument(){return this._typeInfo.getArgument()}getEnumValue(){return this._typeInfo.getEnumValue()}}function Hn(e,t,n=Xn,r,i=new TypeInfo(e)){const o=r?.maxErrors??100;!function(e){const t=Kt(e);if(0!==t.length)throw new Error(t.map((e=>e.message)).join("\n\n"))}(e);const s=new GraphQLError("Too many validation errors, error limit reached. Validation aborted."),a=[],c=new ValidationContext(e,t,i,(e=>{if(a.length>=o)throw s;a.push(e)})),u=ye(n.map((e=>e(c))));try{Te(t,ln(i,u))}catch(e){if(e!==s)throw e;a.push(s)}return a}function Wn(e,t,n=zn){const r=[],i=new SDLValidationContext(e,t,(e=>{r.push(e)}));return Te(e,ye(n.map((e=>e(i))))),r}function Zn(e,n){t(e)&&t(e.__schema)||M(!1,`Invalid or incomplete introspection result. Ensure that you are passing "data" property of introspection response and no "errors" was returned alongside: ${Y(e)}.`);const r=e.__schema,i=ie(r.types,(e=>e.name),(e=>function(e){if(null!=e&&null!=e.name&&null!=e.kind)switch(e.kind){case Ut.SCALAR:return new GraphQLScalarType({name:(r=e).name,description:r.description,specifiedByURL:r.specifiedByURL});case Ut.OBJECT:return new GraphQLObjectType({name:(n=e).name,description:n.description,interfaces:()=>f(n),fields:()=>h(n)});case Ut.INTERFACE:return new GraphQLInterfaceType({name:(t=e).name,description:t.description,interfaces:()=>f(t),fields:()=>h(t)});case Ut.UNION:return function(e){if(!e.possibleTypes){const t=Y(e);throw new Error(`Introspection result missing possibleTypes: ${t}.`)}return new GraphQLUnionType({name:e.name,description:e.description,types:()=>e.possibleTypes.map(p)})}(e);case Ut.ENUM:return function(e){if(!e.enumValues){const t=Y(e);throw new Error(`Introspection result missing enumValues: ${t}.`)}return new GraphQLEnumType({name:e.name,description:e.description,values:ie(e.enumValues,(e=>e.name),(e=>({description:e.description,deprecationReason:e.deprecationReason})))})}(e);case Ut.INPUT_OBJECT:return function(e){if(!e.inputFields){const t=Y(e);throw new Error(`Introspection result missing inputFields: ${t}.`)}return new GraphQLInputObjectType({name:e.name,description:e.description,fields:()=>T(e.inputFields)})}(e)}var t;var n;var r;const i=Y(e);throw new Error(`Invalid or incomplete introspection result. Ensure that a full introspection query is used in order to build a client schema: ${i}.`)}(e)));for(const e of[...Tt,...Bt])i[e.name]&&(i[e.name]=e);const o=r.queryType?p(r.queryType):null,s=r.mutationType?p(r.mutationType):null,a=r.subscriptionType?p(r.subscriptionType):null,c=r.directives?r.directives.map((function(e){if(!e.args){const t=Y(e);throw new Error(`Introspection result missing directive args: ${t}.`)}if(!e.locations){const t=Y(e);throw new Error(`Introspection result missing directive locations: ${t}.`)}return new GraphQLDirective({name:e.name,description:e.description,isRepeatable:e.isRepeatable,locations:e.locations.slice(),args:T(e.args)})})):[];return new GraphQLSchema({description:r.description,query:o,mutation:s,subscription:a,types:Object.values(i),directives:c,assumeValid:n?.assumeValid});function u(e){if(e.kind===Ut.LIST){const t=e.ofType;if(!t)throw new Error("Decorated type deeper than introspection query.");return new GraphQLList(u(t))}if(e.kind===Ut.NON_NULL){const t=e.ofType;if(!t)throw new Error("Decorated type deeper than introspection query.");const n=u(t);return new GraphQLNonNull(Ye(n))}return l(e)}function l(e){const t=e.name;if(!t)throw new Error(`Unknown type reference: ${Y(e)}.`);const n=i[t];if(!n)throw new Error(`Invalid or incomplete schema, unknown type: ${t}. Ensure that a full introspection query is used in order to build a client schema.`);return n}function p(e){return function(e){if(!xe(e))throw new Error(`Expected ${Y(e)} to be a GraphQL Object type.`);return e}(l(e))}function d(e){return function(e){if(!Fe(e))throw new Error(`Expected ${Y(e)} to be a GraphQL Interface type.`);return e}(l(e))}function f(e){if(null===e.interfaces&&e.kind===Ut.INTERFACE)return[];if(!e.interfaces){const t=Y(e);throw new Error(`Introspection result missing interfaces: ${t}.`)}return e.interfaces.map(d)}function h(e){if(!e.fields)throw new Error(`Introspection result missing fields: ${Y(e)}.`);return ie(e.fields,(e=>e.name),E)}function E(e){const t=u(e.type);if(!Ve(t)){const e=Y(t);throw new Error(`Introspection must provide output type for fields, but received: ${e}.`)}if(!e.args){const t=Y(e);throw new Error(`Introspection result missing field args: ${t}.`)}return{description:e.description,deprecationReason:e.deprecationReason,type:t,args:T(e.args)}}function T(e){return ie(e,(e=>e.name),y)}function y(e){const t=u(e.type);if(!Ue(t)){const e=Y(t);throw new Error(`Introspection must provide input type for arguments, but received: ${e}.`)}const n=null!=e.defaultValue?Rn(function(e,t){const n=new Parser(e,t);n.expectToken(m.SOF);const r=n.parseValueLiteral(!1);return n.expectToken(m.EOF),r}(e.defaultValue),t):void 0;return{description:e.description,type:t,defaultValue:n,deprecationReason:e.deprecationReason}}}function er(e,t,n){Jt(e),!0!==n?.assumeValid&&!0!==n?.assumeValidSDL&&function(e,t){const n=Wn(e,t);if(0!==n.length)throw new Error(n.map((e=>e.message)).join("\n\n"))}(t,e);const r=e.toConfig(),i=tr(r,t,n);return r===i?e:new GraphQLSchema(i)}function tr(e,t,r){const i=[],o=new AccumulatorMap,s=new AccumulatorMap,a=new AccumulatorMap,c=new AccumulatorMap,u=new AccumulatorMap,l=new AccumulatorMap,p=[];let d;const f=[];let m=!1;for(const e of t.definitions){switch(e.kind){case h.SCHEMA_DEFINITION:d=e;break;case h.SCHEMA_EXTENSION:f.push(e);break;case h.DIRECTIVE_DEFINITION:p.push(e);break;case h.SCALAR_TYPE_DEFINITION:case h.OBJECT_TYPE_DEFINITION:case h.INTERFACE_TYPE_DEFINITION:case h.UNION_TYPE_DEFINITION:case h.ENUM_TYPE_DEFINITION:case h.INPUT_OBJECT_TYPE_DEFINITION:i.push(e);break;case h.SCALAR_TYPE_EXTENSION:o.add(e.name.value,e);break;case h.OBJECT_TYPE_EXTENSION:s.add(e.name.value,e);break;case h.INTERFACE_TYPE_EXTENSION:a.add(e.name.value,e);break;case h.UNION_TYPE_EXTENSION:c.add(e.name.value,e);break;case h.ENUM_TYPE_EXTENSION:u.add(e.name.value,e);break;case h.INPUT_OBJECT_TYPE_EXTENSION:l.add(e.name.value,e);break;default:continue}m=!0}if(!m)return e;const E=Object.create(null);for(const t of e.types)E[t.name]=v(t);for(const e of i){const t=e.name.value;E[t]=nr[t]??x(e)}const T={query:e.query&&N(e.query),mutation:e.mutation&&N(e.mutation),subscription:e.subscription&&N(e.subscription),...d&&_([d]),..._(f)};return{description:d?.description?.value,...T,types:Object.values(E),directives:[...e.directives.map((function(e){if(Dt(e))return e;const t=e.toConfig();return new GraphQLDirective({...t,args:oe(t.args,g)})})),...p.map((function(e){return new GraphQLDirective({name:e.name.value,description:e.description?.value,locations:e.locations.map((({value:e})=>e)),isRepeatable:e.repeatable,args:L(e.arguments),astNode:e})}))],extensions:Object.create(null),astNode:d??e.astNode,extensionASTNodes:e.extensionASTNodes.concat(f),assumeValid:r?.assumeValid??!1};function y(e){return $e(e)?new GraphQLList(y(e.ofType)):Qe(e)?new GraphQLNonNull(y(e.ofType)):N(e)}function N(e){return E[e.name]}function v(e){return Yt(e)||yt(e)?e:ke(e)?function(e){const t=e.toConfig(),n=o.get(t.name)??[];let r=t.specifiedByURL;for(const e of n)r=ir(e)??r;return new GraphQLScalarType({...t,specifiedByURL:r,extensionASTNodes:t.extensionASTNodes.concat(n)})}(e):xe(e)?function(e){const t=e.toConfig(),n=s.get(t.name)??[];return new GraphQLObjectType({...t,interfaces:()=>[...e.getInterfaces().map(N),...w(n)],fields:()=>({...oe(t.fields,I),...b(n)}),extensionASTNodes:t.extensionASTNodes.concat(n)})}(e):Fe(e)?function(e){const t=e.toConfig(),n=a.get(t.name)??[];return new GraphQLInterfaceType({...t,interfaces:()=>[...e.getInterfaces().map(N),...w(n)],fields:()=>({...oe(t.fields,I),...b(n)}),extensionASTNodes:t.extensionASTNodes.concat(n)})}(e):Re(e)?function(e){const t=e.toConfig(),n=c.get(t.name)??[];return new GraphQLUnionType({...t,types:()=>[...e.getTypes().map(N),...k(n)],extensionASTNodes:t.extensionASTNodes.concat(n)})}(e):Ce(e)?function(e){const t=e.toConfig(),n=u.get(e.name)??[];return new GraphQLEnumType({...t,values:{...t.values,...D(n)},extensionASTNodes:t.extensionASTNodes.concat(n)})}(e):Ge(e)?function(e){const t=e.toConfig(),n=l.get(t.name)??[];return new GraphQLInputObjectType({...t,fields:()=>({...oe(t.fields,(e=>({...e,type:y(e.type)}))),...A(n)}),extensionASTNodes:t.extensionASTNodes.concat(n)})}(e):void n(!1,"Unexpected type: "+Y(e))}function I(e){return{...e,type:y(e.type),args:e.args&&oe(e.args,g)}}function g(e){return{...e,type:y(e.type)}}function _(e){const t={};for(const n of e){const e=n.operationTypes??[];for(const n of e)t[n.operation]=O(n.type)}return t}function O(e){const t=e.name.value,n=nr[t]??E[t];if(void 0===n)throw new Error(`Unknown type: "${t}".`);return n}function S(e){return e.kind===h.LIST_TYPE?new GraphQLList(S(e.type)):e.kind===h.NON_NULL_TYPE?new GraphQLNonNull(S(e.type)):O(e)}function b(e){const t=Object.create(null);for(const n of e){const e=n.fields??[];for(const n of e)t[n.name.value]={type:S(n.type),description:n.description?.value,args:L(n.arguments),deprecationReason:rr(n),astNode:n}}return t}function L(e){const t=e??[],n=Object.create(null);for(const e of t){const t=S(e.type);n[e.name.value]={type:t,description:e.description?.value,defaultValue:Rn(e.defaultValue,t),deprecationReason:rr(e),astNode:e}}return n}function A(e){const t=Object.create(null);for(const n of e){const e=n.fields??[];for(const n of e){const e=S(n.type);t[n.name.value]={type:e,description:n.description?.value,defaultValue:Rn(n.defaultValue,e),deprecationReason:rr(n),astNode:n}}}return t}function D(e){const t=Object.create(null);for(const n of e){const e=n.values??[];for(const n of e)t[n.name.value]={description:n.description?.value,deprecationReason:rr(n),astNode:n}}return t}function w(e){return e.flatMap((e=>e.interfaces?.map(O)??[]))}function k(e){return e.flatMap((e=>e.types?.map(O)??[]))}function x(e){const t=e.name.value;switch(e.kind){case h.OBJECT_TYPE_DEFINITION:{const n=s.get(t)??[],r=[e,...n];return new GraphQLObjectType({name:t,description:e.description?.value,interfaces:()=>w(r),fields:()=>b(r),astNode:e,extensionASTNodes:n})}case h.INTERFACE_TYPE_DEFINITION:{const n=a.get(t)??[],r=[e,...n];return new GraphQLInterfaceType({name:t,description:e.description?.value,interfaces:()=>w(r),fields:()=>b(r),astNode:e,extensionASTNodes:n})}case h.ENUM_TYPE_DEFINITION:{const n=u.get(t)??[],r=[e,...n];return new GraphQLEnumType({name:t,description:e.description?.value,values:D(r),astNode:e,extensionASTNodes:n})}case h.UNION_TYPE_DEFINITION:{const n=c.get(t)??[],r=[e,...n];return new GraphQLUnionType({name:t,description:e.description?.value,types:()=>k(r),astNode:e,extensionASTNodes:n})}case h.SCALAR_TYPE_DEFINITION:{const n=o.get(t)??[];return new GraphQLScalarType({name:t,description:e.description?.value,specifiedByURL:ir(e),astNode:e,extensionASTNodes:n})}case h.INPUT_OBJECT_TYPE_DEFINITION:{const n=l.get(t)??[],r=[e,...n];return new GraphQLInputObjectType({name:t,description:e.description?.value,fields:()=>A(r),astNode:e,extensionASTNodes:n})}}}}const nr=re([...Tt,...Bt],(e=>e.name));function rr(e){const t=Gn(bt,e);return t?.reason}function ir(e){const t=Gn(Lt,e);return t?.url}function or(e,t){!0!==t?.assumeValid&&!0!==t?.assumeValidSDL&&function(e){const t=Wn(e);if(0!==t.length)throw new Error(t.map((e=>e.message)).join("\n\n"))}(e);const n=tr({description:void 0,types:[],directives:[],extensions:Object.create(null),extensionASTNodes:[],assumeValid:!1},e,t);if(null==n.astNode)for(const e of n.types)switch(e.name){case"Query":n.query=e;break;case"Mutation":n.mutation=e;break;case"Subscription":n.subscription=e}const r=[...n.directives,...At.filter((e=>n.directives.every((t=>t.name!==e.name))))];return new GraphQLSchema({...n,directives:r})}function sr(e){return function(e,t,r){const i=e.getDirectives().filter(t),o=Object.values(e.getTypeMap()).filter(r);return[cr(e),...i.map((e=>function(e){return mr(e)+"directive @"+e.name+dr(e.args)+(e.isRepeatable?" repeatable":"")+" on "+e.locations.join(" | ")}(e))),...o.map((e=>function(e){if(ke(e))return function(e){return mr(e)+`scalar ${e.name}`+function(e){if(null==e.specifiedByURL)return"";return` @specifiedBy(url: ${ve({kind:h.STRING,value:e.specifiedByURL})})`}(e)}(e);if(xe(e))return function(e){return mr(e)+`type ${e.name}`+ur(e)+lr(e)}(e);if(Fe(e))return function(e){return mr(e)+`interface ${e.name}`+ur(e)+lr(e)}(e);if(Re(e))return function(e){const t=e.getTypes(),n=t.length?" = "+t.join(" | "):"";return mr(e)+"union "+e.name+n}(e);if(Ce(e))return function(e){const t=e.getValues().map(((e,t)=>mr(e," ",!t)+" "+e.name+hr(e.deprecationReason)));return mr(e)+`enum ${e.name}`+pr(t)}(e);if(Ge(e))return function(e){const t=Object.values(e.getFields()).map(((e,t)=>mr(e," ",!t)+" "+fr(e)));return mr(e)+`input ${e.name}`+pr(t)}(e);n(!1,"Unexpected type: "+Y(e))}(e)))].filter(Boolean).join("\n\n")}(e,(e=>!Dt(e)),ar)}function ar(e){return!yt(e)&&!Yt(e)}function cr(e){if(null==e.description&&function(e){const t=e.getQueryType();if(t&&"Query"!==t.name)return!1;const n=e.getMutationType();if(n&&"Mutation"!==n.name)return!1;const r=e.getSubscriptionType();if(r&&"Subscription"!==r.name)return!1;return!0}(e))return;const t=[],n=e.getQueryType();n&&t.push(` query: ${n.name}`);const r=e.getMutationType();r&&t.push(` mutation: ${r.name}`);const i=e.getSubscriptionType();return i&&t.push(` subscription: ${i.name}`),mr(e)+`schema {\n${t.join("\n")}\n}`}function ur(e){const t=e.getInterfaces();return t.length?" implements "+t.map((e=>e.name)).join(" & "):""}function lr(e){return pr(Object.values(e.getFields()).map(((e,t)=>mr(e," ",!t)+" "+e.name+dr(e.args," ")+": "+String(e.type)+hr(e.deprecationReason))))}function pr(e){return 0!==e.length?" {\n"+e.join("\n")+"\n}":""}function dr(e,t=""){return 0===e.length?"":e.every((e=>!e.description))?"("+e.map(fr).join(", ")+")":"(\n"+e.map(((e,n)=>mr(e," "+t,!n)+" "+t+fr(e))).join("\n")+"\n"+t+")"}function fr(e){const t=wt(e.defaultValue,e.type);let n=e.name+": "+String(e.type);return t&&(n+=` = ${ve(t)}`),n+hr(e.deprecationReason)}function hr(e){if(null==e)return"";if(e!==St){return` @deprecated(reason: ${ve({kind:h.STRING,value:e})})`}return" @deprecated"}function mr(e,t="",n=!0){const{description:r}=e;if(null==r)return"";return(t&&!n?"\n"+t:t)+ve({kind:h.STRING,value:r,block:_(r)}).replace(/\n/g,"\n"+t)+"\n"}function Er(e){const t=[];for(const n of e)t.push(...n.definitions);return{kind:h.DOCUMENT,definitions:t}}const Tr=[yn];function yr(e){var t;const n=function(e){if(e)return function(t){const n=e;return{Field(e){var r;const i=(null!==(r=e.alias)&&void 0!==r?r:e.name).value,o=i.charAt(0).toLowerCase()+i.slice(1);n.includes(o)&&t.reportError(new GraphQLError(`Field name "${i}" is not allowed because it conflicts with generated object APIs. Please use an alias to change the field name.`,{nodes:e}))}}};return}(null===(t=e.disallowedFieldNames)||void 0===t?void 0:t.allFields),r=function(e){if(e)return function(t){const n=e;return{VariableDefinition(e){const r=e.variable.name.value,i=r.charAt(0).toLowerCase()+r.slice(1);n.includes(i)&&t.reportError(new GraphQLError(`Input Parameter name "${r}" is not allowed because it conflicts with generated object APIs.`,{nodes:e}))}}};return}(e.disallowedInputParameterNames);return[Nr,vr,Ir,...n?[n]:[],...r?[r]:[],...Xn.filter((e=>!Tr.includes(e)))]}function Nr(e){return{OperationDefinition:t=>(t.name||e.reportError(new GraphQLError("Apollo does not support anonymous operations because operation names are used during code generation. Please give this operation a name.",{nodes:t})),!1)}}function vr(e){return{Field(t){"__typename"==(t.alias&&t.alias.value)&&e.reportError(new GraphQLError("Apollo needs to be able to insert __typename when needed, so using it as an alias is not supported.",{nodes:t}))}}}function Ir(e){return{InlineFragment(t){if(t.directives)for(const n of t.directives)"defer"==n.name.value&&null==t.typeCondition&&e.reportError(new GraphQLError("Apollo does not support deferred inline fragments without a type condition.",{nodes:t}))}}}function gr(e){return{kind:h.NAME,value:e}}function _r(e){return{kind:h.STRING,value:e}}function Or(e){return{kind:h.DIRECTIVE_DEFINITION,description:e.description?_r(e.description):void 0,name:gr(e.name),repeatable:!1,locations:e.locations.map((e=>gr(e))),arguments:e.args.map((e=>function(e){return{kind:h.INPUT_VALUE_DEFINITION,description:_r(e.description),name:gr(e.name),type:(t=Ke(e.type),{kind:h.NAMED_TYPE,name:gr(t.name)})};var t}(e)))}}const Sr={kind:h.DIRECTIVE_DEFINITION,description:_r("A directive used by the Apollo iOS client to annotate operations or fragments that should be used exclusively for generating local cache mutations instead of as standard operations."),name:gr("apollo_client_ios_localCacheMutation"),repeatable:!1,locations:[gr("QUERY"),gr("MUTATION"),gr("SUBSCRIPTION"),gr("FRAGMENT_DEFINITION")]},br={kind:h.DOCUMENT,definitions:[Sr]};const Lr={kind:h.FIELD,name:{kind:h.NAME,value:"__typename"}};class GraphQLSchemaValidationError extends Error{constructor(e){super(e.map((e=>e.message)).join("\n\n")),this.validationErrors=e,this.name="GraphQLSchemaValidationError"}}function Ar(e){return e.startsWith("__")}const Dr={kind:h.FIELD,name:{kind:h.NAME,value:"__typename"}};function wr(e,t){return t&&(e=function(e){return Te(e,{enter:e=>e.kind!==h.SELECTION_SET?void 0:{...e,selections:e.selections.filter((e=>!("Field"===e.kind&&"__typename"===e.name.value)))},leave(e){if((e.kind===h.FIELD||e.kind===h.FRAGMENT_DEFINITION||e.kind===h.INLINE_FRAGMENT)&&e.selectionSet)return{...e,selectionSet:{...e.selectionSet,selections:[Lr,...e.selectionSet.selections]}}}})}(e)),Te(e,{SelectionSet:{leave:(e,t,n)=>p(n)&&![h.FIELD,h.FRAGMENT_DEFINITION].includes(n.kind)?e:function(e){const t=e.selections.find((e=>e.kind==Dr.kind&&e.name.value==Dr.name.value));return t?e:{...e,selections:[Dr,...e.selections]}}(e)},Field:{enter:e=>function(e){return e.name.value==Dr.name.value?{...e,alias:void 0,directives:void 0}:e}(e)},Directive:{enter:e=>function(e){return e.name.value==Sr.name.value?null:e}(e)}})}function kr(e){return null!=e}function xr(e){switch(e.kind){case h.VARIABLE:return{kind:e.kind,value:e.name.value};case h.LIST:return{kind:e.kind,value:e.values.map(xr)};case h.OBJECT:return{kind:e.kind,value:e.fields.reduce(((e,t)=>(e[t.name.value]=xr(t.value),e)),{})};default:return e}}function Fr(e){var t,n;return null===(n=null===(t=e.loc)||void 0===t?void 0:t.source)||void 0===n?void 0:n.name}function Rr(e,t,n,r){var i,o,s;const a=new Map;for(const e of t.definitions)e.kind===h.FRAGMENT_DEFINITION&&a.set(e.name.value,e);const c=[],u=new Map,l=new Set,p=e.getQueryType();if(void 0===p)throw new GraphQLError("GraphQL Schema must contain a 'query' root type definition.",{});const d={queryType:p,mutationType:null!==(i=e.getMutationType())&&void 0!==i?i:void 0,subscriptionType:null!==(o=e.getSubscriptionType())&&void 0!==o?o:void 0};for(const e of t.definitions)e.kind===h.OPERATION_DEFINITION&&c.push(m(e));for(const[e,t]of a.entries())u.set(e,E(t));return{rootTypes:d,operations:c,fragments:Array.from(u.values()),referencedTypes:Array.from(l.values()),schemaDocumentation:null!==(s=e.description)&&void 0!==s?s:void 0};function f(t){if(!l.has(t)){if(l.add(t),Fe(t))for(const n of e.getPossibleTypes(t))f(Ke(n));if(Re(t)){const e=t.getTypes();for(t of e)f(Ke(t))}if(Ge(t)&&function(e){const t=e.getFields();for(const e in t){f(Ke(t[e].type))}}(t),xe(t))for(const e of t.getInterfaces())f(Ke(e))}}function m(t){var r;if(!t.name)throw new GraphQLError("Operations should be named",{nodes:t});const i=Fr(t),o=t.name.value,s=t.operation,a=(t.variableDefinitions||[]).map((t=>{const n=t.variable.name.value,r=t.defaultValue?xr(t.defaultValue):void 0,i=cn(e,t.type);if(!i)throw new GraphQLError(`Couldn't get type from type node "${t.type}"`,{nodes:t});return f(Ke(i)),{name:n,type:i,defaultValue:r}})),c=ve(wr(t,n)),u=e.getRootType(s),[l]=null!==(r=N(t.directives))&&void 0!==r?r:[void 0,void 0];return f(u),{name:o,operationType:s,variables:a,rootType:u,selectionSet:T(t.selectionSet,u),directives:l,source:c,filePath:i}}function E(t){var r;const i=t.name.value,o=Fr(t),s=ve(wr(t,n)),a=cn(e,t.typeCondition),[c]=null!==(r=N(t.directives))&&void 0!==r?r:[void 0,void 0];return f(Ke(a)),{name:i,filePath:o,source:s,typeCondition:a,selectionSet:T(t.selectionSet,a),directives:c}}function T(t,n){return{parentType:n,selections:t.selections.map((t=>function(t,n){var i,o,s,c;const[l,p]=null!==(i=N(t.directives))&&void 0!==i?i:[void 0,void 0];switch(t.kind){case h.FIELD:{const d=t.name.value;if("__typename"==d)return;const m=null===(o=t.alias)||void 0===o?void 0:o.value,v=function(e,t,n){return n===Pt.name&&e.getQueryType()===t?Pt:n===Mt.name&&e.getQueryType()===t?Mt:n===jt.name&&(xe(t)||Fe(t)||Re(t))?jt:xe(t)||Fe(t)?t.getFields()[n]:void 0}(e,n,d);if(!v)throw new GraphQLError(`Cannot query field "${d}" on type "${String(n)}"`,{nodes:t});const I=v.type,g=Ke(v.type);f(Ke(g));const{description:_,deprecationReason:O}=v;let S={kind:"Field",name:d,alias:m,type:I,arguments:y(v,t.arguments),inclusionConditions:p,description:!Ar(d)&&_?_:void 0,deprecationReason:O||void 0,directives:l};function b(e,t,n){var r;if(t&&n){const i=(null!==(r=e.alias)&&void 0!==r?r:e.name).value,o=i.charAt(0).toLowerCase()+i.slice(1);if(null==t?void 0:t.includes(o))throw new GraphQLError(`Schema name "${n}" conflicts with name of a generated object API. Please choose a different schema name. Suggestions: "${n}Schema", "${n}GraphQL", "${n}API"`,{nodes:e})}}if($e(I)||Qe(I)&&$e(I.ofType)?b(t,null===(s=r.disallowedFieldNames)||void 0===s?void 0:s.entityList,r.schemaNamespace):Me(g)&&b(t,null===(c=r.disallowedFieldNames)||void 0===c?void 0:c.entity,r.schemaNamespace),Me(g)){const L=t.selectionSet;if(!L)throw new GraphQLError(`Composite field "${d}" on type "${String(n)}" requires selection set`,{nodes:t});S.selectionSet=T(L,g)}return S}case h.INLINE_FRAGMENT:{const A=t.typeCondition,D=A?cn(e,A):n;return f(D),{kind:"InlineFragment",selectionSet:T(t.selectionSet,D),inclusionConditions:p,directives:l}}case h.FRAGMENT_SPREAD:{const w=t.name.value,k=function(e){let t=u.get(e);if(t)return t;const n=a.get(e);return n?(a.delete(e),t=E(n),u.set(e,t),t):void 0}(w);if(!k)throw new GraphQLError(`Unknown fragment "${w}".`,{nodes:t.name});return{kind:"FragmentSpread",fragment:k,inclusionConditions:p,directives:l}}}}(t,n))).filter(kr)}}function y(...e){const t=e[0].args;return e[1]&&e[1].length>0?e[1].map((e=>{var n;const r=e.name.value,i=t.find((t=>t.name===e.name.value)),o=null==i?void 0:i.type;if(!o)throw new GraphQLError(`Cannot find directive argument type for argument "${r}".`,{nodes:[e]});return{name:r,value:xr(e.value),type:o,deprecationReason:null!==(n=i.deprecationReason)&&void 0!==n?n:void 0}})):void 0}function N(t){if(t&&t.length>0){const n=[],r=[];for(const i of t){const t=i.name.value,o=e.getDirective(t);if(!o)throw new GraphQLError(`Cannot find directive "${t}".`,{nodes:i});n.push({name:t,arguments:y(o,i.arguments)});const s=v(i,o);s&&r.push(s)}return[n,r.length>0?r:void 0]}}function v(e,t){var n;if("include"==t.name||"skip"==t.name){const r=null===(n=e.arguments)||void 0===n?void 0:n[0].value,i="skip"==t.name;switch(null==r?void 0:r.kind){case h.BOOLEAN:return i?r.value?"SKIPPED":"INCLUDED":r.value?"INCLUDED":"SKIPPED";case h.VARIABLE:return{variable:r.name.value,isInverted:i};default:throw new GraphQLError('Conditional inclusion directive has invalid "if" argument.',{nodes:e})}}}}function Cr(){return{kind:h.DOCUMENT,definitions:[Or(_t)]}}return e.GraphQLEnumType=GraphQLEnumType,e.GraphQLError=GraphQLError,e.GraphQLInputObjectType=GraphQLInputObjectType,e.GraphQLInterfaceType=GraphQLInterfaceType,e.GraphQLObjectType=GraphQLObjectType,e.GraphQLScalarType=GraphQLScalarType,e.GraphQLSchema=GraphQLSchema,e.GraphQLSchemaValidationError=GraphQLSchemaValidationError,e.GraphQLUnionType=GraphQLUnionType,e.Source=Source,e.compileDocument=function(e,t,n,r){return Rr(e,t,n,r)},e.loadSchemaFromSources=function(e){var t,n=new Array;for(const r of e)if(r.name.endsWith(".json")){if(t)throw new Error(`Schema search paths can only include one JSON schema definition.\n Found "${t.name} & "${r.name}".`);t=r}else n.push(K(r));var r=function(e){return e.definitions.some((e=>e.kind==h.DIRECTIVE_DEFINITION&&e.name.value==Sr.name.value))?e:Er([e,br])}(Er(n));r=function(e){return e.definitions.some((e=>e.kind==h.DIRECTIVE_DEFINITION&&e.name.value==_t.name))?e:Er([e,Cr()])}(r),t||function(e){const t=Wn(e);if(0!==t.length)throw new GraphQLSchemaValidationError(t)}(r);const i=t?er(function(e){let t=JSON.parse(e);t.data&&(t=t.data);const n=Zn(t);return n}(t.body),r,{assumeValid:!0,assumeValidSDL:!0}):or(r,{assumeValid:!0,assumeValidSDL:!0});return function(e){const t=Kt(e);if(0!==t.length)throw new GraphQLSchemaValidationError(t)}(i),i},e.mergeDocuments=function(e){return Er(e)},e.parseOperationDocument=function(e){return K(e)},e.printSchemaToSDL=function(e){return sr(e)},e.validateDocument=function(e,t,n){return Hn(e,t,yr(n))},Object.defineProperty(e,"__esModule",{value:!0}),e}({});"# \ No newline at end of file +let ApolloCodegenFrontendBundle: String = #"var ApolloCodegenFrontend=function(e){"use strict";function t(e,t){if(!Boolean(e))throw new Error(t)}function n(e){return"object"==typeof e&&null!==e}function r(e,t){if(!Boolean(e))throw new Error(null!=t?t:"Unexpected invariant triggered.")}const i=/\r\n|[\n\r]/g;function o(e,t){let n=0,o=1;for(const s of e.body.matchAll(i)){if("number"==typeof s.index||r(!1),s.index>=t)break;n=s.index+s[0].length,o+=1}return{line:o,column:t+1-n}}function s(e,t){const n=e.locationOffset.column-1,r="".padStart(n)+e.body,i=t.line-1,o=e.locationOffset.line-1,s=t.line+o,c=1===t.line?n:0,u=t.column+c,l=`${e.name}:${s}:${u}\n`,p=r.split(/\r\n|[\n\r]/g),d=p[i];if(d.length>120){const e=Math.floor(u/80),t=u%80,n=[];for(let e=0;e["|",e])),["|","^".padStart(t)],["|",n[e+1]]])}return l+a([[s-1+" |",p[i-1]],[`${s} |`,d],["|","^".padStart(u)],[`${s+1} |`,p[i+1]]])}function a(e){const t=e.filter((([e,t])=>void 0!==t)),n=Math.max(...t.map((([e])=>e.length)));return t.map((([e,t])=>e.padStart(n)+(t?" "+t:""))).join("\n")}class GraphQLError extends Error{constructor(e,...t){var r,i,s;const{nodes:a,source:u,positions:l,path:p,originalError:d,extensions:f}=function(e){const t=e[0];return null==t||"kind"in t||"length"in t?{nodes:t,source:e[1],positions:e[2],path:e[3],originalError:e[4],extensions:e[5]}:t}(t);super(e),this.name="GraphQLError",this.path=null!=p?p:void 0,this.originalError=null!=d?d:void 0,this.nodes=c(Array.isArray(a)?a:a?[a]:void 0);const h=c(null===(r=this.nodes)||void 0===r?void 0:r.map((e=>e.loc)).filter((e=>null!=e)));this.source=null!=u?u:null==h||null===(i=h[0])||void 0===i?void 0:i.source,this.positions=null!=l?l:null==h?void 0:h.map((e=>e.start)),this.locations=l&&u?l.map((e=>o(u,e))):null==h?void 0:h.map((e=>o(e.source,e.start)));const m=n(null==d?void 0:d.extensions)?null==d?void 0:d.extensions:void 0;this.extensions=null!==(s=null!=f?f:m)&&void 0!==s?s:Object.create(null),Object.defineProperties(this,{message:{writable:!0,enumerable:!0},name:{enumerable:!1},nodes:{enumerable:!1},source:{enumerable:!1},positions:{enumerable:!1},originalError:{enumerable:!1}}),null!=d&&d.stack?Object.defineProperty(this,"stack",{value:d.stack,writable:!0,configurable:!0}):Error.captureStackTrace?Error.captureStackTrace(this,GraphQLError):Object.defineProperty(this,"stack",{value:Error().stack,writable:!0,configurable:!0})}get[Symbol.toStringTag](){return"GraphQLError"}toString(){let e=this.message;if(this.nodes)for(const n of this.nodes)n.loc&&(e+="\n\n"+s((t=n.loc).source,o(t.source,t.start)));else if(this.source&&this.locations)for(const t of this.locations)e+="\n\n"+s(this.source,t);var t;return e}toJSON(){const e={message:this.message};return null!=this.locations&&(e.locations=this.locations),null!=this.path&&(e.path=this.path),null!=this.extensions&&Object.keys(this.extensions).length>0&&(e.extensions=this.extensions),e}}function c(e){return void 0===e||0===e.length?void 0:e}function u(e,t,n){return new GraphQLError(`Syntax Error: ${n}`,void 0,e,[t])}class Location{constructor(e,t,n){this.start=e.start,this.end=t.end,this.startToken=e,this.endToken=t,this.source=n}get[Symbol.toStringTag](){return"Location"}toJSON(){return{start:this.start,end:this.end}}}class Token{constructor(e,t,n,r,i,o){this.kind=e,this.start=t,this.end=n,this.line=r,this.column=i,this.value=o,this.prev=null,this.next=null}get[Symbol.toStringTag](){return"Token"}toJSON(){return{kind:this.kind,value:this.value,line:this.line,column:this.column}}}const l={Name:[],Document:["definitions"],OperationDefinition:["name","variableDefinitions","directives","selectionSet"],VariableDefinition:["variable","type","defaultValue","directives"],Variable:["name"],SelectionSet:["selections"],Field:["alias","name","arguments","directives","selectionSet","required"],ListNullability:["element"],RequiredDesignator:["element"],OptionalDesignator:["element"],Argument:["name","value"],FragmentSpread:["name","directives"],InlineFragment:["typeCondition","directives","selectionSet"],FragmentDefinition:["name","variableDefinitions","typeCondition","directives","selectionSet"],IntValue:[],FloatValue:[],StringValue:[],BooleanValue:[],NullValue:[],EnumValue:[],ListValue:["values"],ObjectValue:["fields"],ObjectField:["name","value"],Directive:["name","arguments"],NamedType:["name"],ListType:["type"],NonNullType:["type"],SchemaDefinition:["description","directives","operationTypes"],OperationTypeDefinition:["type"],ScalarTypeDefinition:["description","name","directives"],ObjectTypeDefinition:["description","name","interfaces","directives","fields"],FieldDefinition:["description","name","arguments","type","directives"],InputValueDefinition:["description","name","type","defaultValue","directives"],InterfaceTypeDefinition:["description","name","interfaces","directives","fields"],UnionTypeDefinition:["description","name","directives","types"],EnumTypeDefinition:["description","name","directives","values"],EnumValueDefinition:["description","name","directives"],InputObjectTypeDefinition:["description","name","directives","fields"],DirectiveDefinition:["description","name","arguments","locations"],SchemaExtension:["directives","operationTypes"],ScalarTypeExtension:["name","directives"],ObjectTypeExtension:["name","interfaces","directives","fields"],InterfaceTypeExtension:["name","interfaces","directives","fields"],UnionTypeExtension:["name","directives","types"],EnumTypeExtension:["name","directives","values"],InputObjectTypeExtension:["name","directives","fields"]},p=new Set(Object.keys(l));function d(e){const t=null==e?void 0:e.kind;return"string"==typeof t&&p.has(t)}let f,h,m,v;function y(e){return 9===e||32===e}function E(e){return e>=48&&e<=57}function T(e){return e>=97&&e<=122||e>=65&&e<=90}function N(e){return T(e)||95===e}function I(e){return T(e)||E(e)||95===e}function g(e){var t;let n=Number.MAX_SAFE_INTEGER,r=null,i=-1;for(let t=0;t0===t?e:e.slice(n))).slice(null!==(t=r)&&void 0!==t?t:0,i+1)}function _(e){let t=0;for(;t",e.EOF="",e.BANG="!",e.QUESTION_MARK="?",e.DOLLAR="$",e.AMP="&",e.PAREN_L="(",e.PAREN_R=")",e.SPREAD="...",e.COLON=":",e.EQUALS="=",e.AT="@",e.BRACKET_L="[",e.BRACKET_R="]",e.BRACE_L="{",e.PIPE="|",e.BRACE_R="}",e.NAME="Name",e.INT="Int",e.FLOAT="Float",e.STRING="String",e.BLOCK_STRING="BlockString",e.COMMENT="Comment"}(v||(v={}));class Lexer{constructor(e){const t=new Token(v.SOF,0,0,0,0);this.source=e,this.lastToken=t,this.token=t,this.line=1,this.lineStart=0}get[Symbol.toStringTag](){return"Lexer"}advance(){this.lastToken=this.token;return this.token=this.lookahead()}lookahead(){let e=this.token;if(e.kind!==v.EOF)do{if(e.next)e=e.next;else{const t=k(this,e.end);e.next=t,t.prev=e,e=t}}while(e.kind===v.COMMENT);return e}}function b(e){return e>=0&&e<=55295||e>=57344&&e<=1114111}function L(e,t){return S(e.charCodeAt(t))&&A(e.charCodeAt(t+1))}function S(e){return e>=55296&&e<=56319}function A(e){return e>=56320&&e<=57343}function D(e,t){const n=e.source.body.codePointAt(t);if(void 0===n)return v.EOF;if(n>=32&&n<=126){const e=String.fromCodePoint(n);return'"'===e?"'\"'":`"${e}"`}return"U+"+n.toString(16).toUpperCase().padStart(4,"0")}function w(e,t,n,r,i){const o=e.line,s=1+n-e.lineStart;return new Token(t,n,r,o,s,i)}function k(e,t){const n=e.source.body,r=n.length;let i=t;for(;i=48&&e<=57?e-48:e>=65&&e<=70?e-55:e>=97&&e<=102?e-87:-1}function j(e,t){const n=e.source.body;switch(n.charCodeAt(t+1)){case 34:return{value:'"',size:2};case 92:return{value:"\\",size:2};case 47:return{value:"/",size:2};case 98:return{value:"\b",size:2};case 102:return{value:"\f",size:2};case 110:return{value:"\n",size:2};case 114:return{value:"\r",size:2};case 116:return{value:"\t",size:2}}throw u(e.source,t,`Invalid character escape sequence: "${n.slice(t,t+2)}".`)}function V(e,t){const n=e.source.body,r=n.length;let i=e.lineStart,o=t+3,s=o,a="";const c=[];for(;oB)return"[Array]";const n=Math.min(P,e.length),r=e.length-n,i=[];for(let r=0;r1&&i.push(`... ${r} more items`);return"["+i.join(", ")+"]"}(e,n);return function(e,t){const n=Object.entries(e);if(0===n.length)return"{}";if(t.length>B)return"["+function(e){const t=Object.prototype.toString.call(e).replace(/^\[object /,"").replace(/]$/,"");if("Object"===t&&"function"==typeof e.constructor){const t=e.constructor.name;if("string"==typeof t&&""!==t)return t}return t}(e)+"]";const r=n.map((([e,n])=>e+": "+J(n,t)));return"{ "+r.join(", ")+" }"}(e,n)}(e,t);default:return String(e)}}const q=function(e,t){return e instanceof t};class Source{constructor(e,n="GraphQL request",r={line:1,column:1}){"string"==typeof e||t(!1,`Body must be a string. Received: ${Y(e)}.`),this.body=e,this.name=n,this.locationOffset=r,this.locationOffset.line>0||t(!1,"line in locationOffset is 1-indexed and must be positive."),this.locationOffset.column>0||t(!1,"column in locationOffset is 1-indexed and must be positive.")}get[Symbol.toStringTag](){return"Source"}}function K(e,t){return new Parser(e,t).parseDocument()}class Parser{constructor(e,t){const n=function(e){return q(e,Source)}(e)?e:new Source(e);this._lexer=new Lexer(n),this._options=t}parseName(){const e=this.expectToken(v.NAME);return this.node(e,{kind:m.NAME,value:e.value})}parseDocument(){return this.node(this._lexer.token,{kind:m.DOCUMENT,definitions:this.many(v.SOF,this.parseDefinition,v.EOF)})}parseDefinition(){if(this.peek(v.BRACE_L))return this.parseOperationDefinition();const e=this.peekDescription(),t=e?this._lexer.lookahead():this._lexer.token;if(t.kind===v.NAME){switch(t.value){case"schema":return this.parseSchemaDefinition();case"scalar":return this.parseScalarTypeDefinition();case"type":return this.parseObjectTypeDefinition();case"interface":return this.parseInterfaceTypeDefinition();case"union":return this.parseUnionTypeDefinition();case"enum":return this.parseEnumTypeDefinition();case"input":return this.parseInputObjectTypeDefinition();case"directive":return this.parseDirectiveDefinition()}if(e)throw u(this._lexer.source,this._lexer.token.start,"Unexpected description, descriptions are supported only on type definitions.");switch(t.value){case"query":case"mutation":case"subscription":return this.parseOperationDefinition();case"fragment":return this.parseFragmentDefinition();case"extend":return this.parseTypeSystemExtension()}}throw this.unexpected(t)}parseOperationDefinition(){const e=this._lexer.token;if(this.peek(v.BRACE_L))return this.node(e,{kind:m.OPERATION_DEFINITION,operation:f.QUERY,name:void 0,variableDefinitions:[],directives:[],selectionSet:this.parseSelectionSet()});const t=this.parseOperationType();let n;return this.peek(v.NAME)&&(n=this.parseName()),this.node(e,{kind:m.OPERATION_DEFINITION,operation:t,name:n,variableDefinitions:this.parseVariableDefinitions(),directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet()})}parseOperationType(){const e=this.expectToken(v.NAME);switch(e.value){case"query":return f.QUERY;case"mutation":return f.MUTATION;case"subscription":return f.SUBSCRIPTION}throw this.unexpected(e)}parseVariableDefinitions(){return this.optionalMany(v.PAREN_L,this.parseVariableDefinition,v.PAREN_R)}parseVariableDefinition(){return this.node(this._lexer.token,{kind:m.VARIABLE_DEFINITION,variable:this.parseVariable(),type:(this.expectToken(v.COLON),this.parseTypeReference()),defaultValue:this.expectOptionalToken(v.EQUALS)?this.parseConstValueLiteral():void 0,directives:this.parseConstDirectives()})}parseVariable(){const e=this._lexer.token;return this.expectToken(v.DOLLAR),this.node(e,{kind:m.VARIABLE,name:this.parseName()})}parseSelectionSet(){return this.node(this._lexer.token,{kind:m.SELECTION_SET,selections:this.many(v.BRACE_L,this.parseSelection,v.BRACE_R)})}parseSelection(){return this.peek(v.SPREAD)?this.parseFragment():this.parseField()}parseField(){var e;const t=this._lexer.token,n=this.parseName();let r,i;this.expectOptionalToken(v.COLON)?(r=n,i=this.parseName()):i=n;const o=this.parseArguments(!1),s=null!==(e=this._options)&&void 0!==e&&e.experimentalClientControlledNullability?this.parseRequiredStatus():void 0,a=this.parseDirectives(!1),c=this.peek(v.BRACE_L)?this.parseSelectionSet():void 0;return this.node(t,{kind:m.FIELD,alias:r,name:i,arguments:o,required:s,directives:a,selectionSet:c})}parseRequiredStatus(){const e=this.parseListNullability(),t=this.parseNullabilityDesignatorNode(e);return null!=t?t:e}parseListNullability(){const e=this._lexer.token;if(this.expectOptionalToken(v.BRACKET_L)){const t=this.parseRequiredStatus();return this.expectToken(v.BRACKET_R),this.node(e,{kind:m.LIST_NULLABILITY,element:t})}}parseNullabilityDesignatorNode(e){var t;return null!==(t=this.parseRequiredDesignatorNode(e))&&void 0!==t?t:this.parseOptionalDesignatorNode(e)}parseRequiredDesignatorNode(e){const t=this._lexer.token;if(this.expectOptionalToken(v.BANG))return this.node(t,{kind:m.REQUIRED_DESIGNATOR,element:e})}parseOptionalDesignatorNode(e){const t=this._lexer.token;if(this.expectOptionalToken(v.QUESTION_MARK))return this.node(t,{kind:m.OPTIONAL_DESIGNATOR,element:e})}parseArguments(e){const t=e?this.parseConstArgument:this.parseArgument;return this.optionalMany(v.PAREN_L,t,v.PAREN_R)}parseArgument(e=!1){const t=this._lexer.token,n=this.parseName();return this.expectToken(v.COLON),this.node(t,{kind:m.ARGUMENT,name:n,value:this.parseValueLiteral(e)})}parseConstArgument(){return this.parseArgument(!0)}parseFragment(){const e=this._lexer.token;this.expectToken(v.SPREAD);const t=this.expectOptionalKeyword("on");return!t&&this.peek(v.NAME)?this.node(e,{kind:m.FRAGMENT_SPREAD,name:this.parseFragmentName(),directives:this.parseDirectives(!1)}):this.node(e,{kind:m.INLINE_FRAGMENT,typeCondition:t?this.parseNamedType():void 0,directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet()})}parseFragmentDefinition(){var e;const t=this._lexer.token;return this.expectKeyword("fragment"),!0===(null===(e=this._options)||void 0===e?void 0:e.allowLegacyFragmentVariables)?this.node(t,{kind:m.FRAGMENT_DEFINITION,name:this.parseFragmentName(),variableDefinitions:this.parseVariableDefinitions(),typeCondition:(this.expectKeyword("on"),this.parseNamedType()),directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet()}):this.node(t,{kind:m.FRAGMENT_DEFINITION,name:this.parseFragmentName(),typeCondition:(this.expectKeyword("on"),this.parseNamedType()),directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet()})}parseFragmentName(){if("on"===this._lexer.token.value)throw this.unexpected();return this.parseName()}parseValueLiteral(e){const t=this._lexer.token;switch(t.kind){case v.BRACKET_L:return this.parseList(e);case v.BRACE_L:return this.parseObject(e);case v.INT:return this._lexer.advance(),this.node(t,{kind:m.INT,value:t.value});case v.FLOAT:return this._lexer.advance(),this.node(t,{kind:m.FLOAT,value:t.value});case v.STRING:case v.BLOCK_STRING:return this.parseStringLiteral();case v.NAME:switch(this._lexer.advance(),t.value){case"true":return this.node(t,{kind:m.BOOLEAN,value:!0});case"false":return this.node(t,{kind:m.BOOLEAN,value:!1});case"null":return this.node(t,{kind:m.NULL});default:return this.node(t,{kind:m.ENUM,value:t.value})}case v.DOLLAR:if(e){if(this.expectToken(v.DOLLAR),this._lexer.token.kind===v.NAME){const e=this._lexer.token.value;throw u(this._lexer.source,t.start,`Unexpected variable "$${e}" in constant value.`)}throw this.unexpected(t)}return this.parseVariable();default:throw this.unexpected()}}parseConstValueLiteral(){return this.parseValueLiteral(!0)}parseStringLiteral(){const e=this._lexer.token;return this._lexer.advance(),this.node(e,{kind:m.STRING,value:e.value,block:e.kind===v.BLOCK_STRING})}parseList(e){return this.node(this._lexer.token,{kind:m.LIST,values:this.any(v.BRACKET_L,(()=>this.parseValueLiteral(e)),v.BRACKET_R)})}parseObject(e){return this.node(this._lexer.token,{kind:m.OBJECT,fields:this.any(v.BRACE_L,(()=>this.parseObjectField(e)),v.BRACE_R)})}parseObjectField(e){const t=this._lexer.token,n=this.parseName();return this.expectToken(v.COLON),this.node(t,{kind:m.OBJECT_FIELD,name:n,value:this.parseValueLiteral(e)})}parseDirectives(e){const t=[];for(;this.peek(v.AT);)t.push(this.parseDirective(e));return t}parseConstDirectives(){return this.parseDirectives(!0)}parseDirective(e){const t=this._lexer.token;return this.expectToken(v.AT),this.node(t,{kind:m.DIRECTIVE,name:this.parseName(),arguments:this.parseArguments(e)})}parseTypeReference(){const e=this._lexer.token;let t;if(this.expectOptionalToken(v.BRACKET_L)){const n=this.parseTypeReference();this.expectToken(v.BRACKET_R),t=this.node(e,{kind:m.LIST_TYPE,type:n})}else t=this.parseNamedType();return this.expectOptionalToken(v.BANG)?this.node(e,{kind:m.NON_NULL_TYPE,type:t}):t}parseNamedType(){return this.node(this._lexer.token,{kind:m.NAMED_TYPE,name:this.parseName()})}peekDescription(){return this.peek(v.STRING)||this.peek(v.BLOCK_STRING)}parseDescription(){if(this.peekDescription())return this.parseStringLiteral()}parseSchemaDefinition(){const e=this._lexer.token,t=this.parseDescription();this.expectKeyword("schema");const n=this.parseConstDirectives(),r=this.many(v.BRACE_L,this.parseOperationTypeDefinition,v.BRACE_R);return this.node(e,{kind:m.SCHEMA_DEFINITION,description:t,directives:n,operationTypes:r})}parseOperationTypeDefinition(){const e=this._lexer.token,t=this.parseOperationType();this.expectToken(v.COLON);const n=this.parseNamedType();return this.node(e,{kind:m.OPERATION_TYPE_DEFINITION,operation:t,type:n})}parseScalarTypeDefinition(){const e=this._lexer.token,t=this.parseDescription();this.expectKeyword("scalar");const n=this.parseName(),r=this.parseConstDirectives();return this.node(e,{kind:m.SCALAR_TYPE_DEFINITION,description:t,name:n,directives:r})}parseObjectTypeDefinition(){const e=this._lexer.token,t=this.parseDescription();this.expectKeyword("type");const n=this.parseName(),r=this.parseImplementsInterfaces(),i=this.parseConstDirectives(),o=this.parseFieldsDefinition();return this.node(e,{kind:m.OBJECT_TYPE_DEFINITION,description:t,name:n,interfaces:r,directives:i,fields:o})}parseImplementsInterfaces(){return this.expectOptionalKeyword("implements")?this.delimitedMany(v.AMP,this.parseNamedType):[]}parseFieldsDefinition(){return this.optionalMany(v.BRACE_L,this.parseFieldDefinition,v.BRACE_R)}parseFieldDefinition(){const e=this._lexer.token,t=this.parseDescription(),n=this.parseName(),r=this.parseArgumentDefs();this.expectToken(v.COLON);const i=this.parseTypeReference(),o=this.parseConstDirectives();return this.node(e,{kind:m.FIELD_DEFINITION,description:t,name:n,arguments:r,type:i,directives:o})}parseArgumentDefs(){return this.optionalMany(v.PAREN_L,this.parseInputValueDef,v.PAREN_R)}parseInputValueDef(){const e=this._lexer.token,t=this.parseDescription(),n=this.parseName();this.expectToken(v.COLON);const r=this.parseTypeReference();let i;this.expectOptionalToken(v.EQUALS)&&(i=this.parseConstValueLiteral());const o=this.parseConstDirectives();return this.node(e,{kind:m.INPUT_VALUE_DEFINITION,description:t,name:n,type:r,defaultValue:i,directives:o})}parseInterfaceTypeDefinition(){const e=this._lexer.token,t=this.parseDescription();this.expectKeyword("interface");const n=this.parseName(),r=this.parseImplementsInterfaces(),i=this.parseConstDirectives(),o=this.parseFieldsDefinition();return this.node(e,{kind:m.INTERFACE_TYPE_DEFINITION,description:t,name:n,interfaces:r,directives:i,fields:o})}parseUnionTypeDefinition(){const e=this._lexer.token,t=this.parseDescription();this.expectKeyword("union");const n=this.parseName(),r=this.parseConstDirectives(),i=this.parseUnionMemberTypes();return this.node(e,{kind:m.UNION_TYPE_DEFINITION,description:t,name:n,directives:r,types:i})}parseUnionMemberTypes(){return this.expectOptionalToken(v.EQUALS)?this.delimitedMany(v.PIPE,this.parseNamedType):[]}parseEnumTypeDefinition(){const e=this._lexer.token,t=this.parseDescription();this.expectKeyword("enum");const n=this.parseName(),r=this.parseConstDirectives(),i=this.parseEnumValuesDefinition();return this.node(e,{kind:m.ENUM_TYPE_DEFINITION,description:t,name:n,directives:r,values:i})}parseEnumValuesDefinition(){return this.optionalMany(v.BRACE_L,this.parseEnumValueDefinition,v.BRACE_R)}parseEnumValueDefinition(){const e=this._lexer.token,t=this.parseDescription(),n=this.parseEnumValueName(),r=this.parseConstDirectives();return this.node(e,{kind:m.ENUM_VALUE_DEFINITION,description:t,name:n,directives:r})}parseEnumValueName(){if("true"===this._lexer.token.value||"false"===this._lexer.token.value||"null"===this._lexer.token.value)throw u(this._lexer.source,this._lexer.token.start,`${X(this._lexer.token)} is reserved and cannot be used for an enum value.`);return this.parseName()}parseInputObjectTypeDefinition(){const e=this._lexer.token,t=this.parseDescription();this.expectKeyword("input");const n=this.parseName(),r=this.parseConstDirectives(),i=this.parseInputFieldsDefinition();return this.node(e,{kind:m.INPUT_OBJECT_TYPE_DEFINITION,description:t,name:n,directives:r,fields:i})}parseInputFieldsDefinition(){return this.optionalMany(v.BRACE_L,this.parseInputValueDef,v.BRACE_R)}parseTypeSystemExtension(){const e=this._lexer.lookahead();if(e.kind===v.NAME)switch(e.value){case"schema":return this.parseSchemaExtension();case"scalar":return this.parseScalarTypeExtension();case"type":return this.parseObjectTypeExtension();case"interface":return this.parseInterfaceTypeExtension();case"union":return this.parseUnionTypeExtension();case"enum":return this.parseEnumTypeExtension();case"input":return this.parseInputObjectTypeExtension()}throw this.unexpected(e)}parseSchemaExtension(){const e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("schema");const t=this.parseConstDirectives(),n=this.optionalMany(v.BRACE_L,this.parseOperationTypeDefinition,v.BRACE_R);if(0===t.length&&0===n.length)throw this.unexpected();return this.node(e,{kind:m.SCHEMA_EXTENSION,directives:t,operationTypes:n})}parseScalarTypeExtension(){const e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("scalar");const t=this.parseName(),n=this.parseConstDirectives();if(0===n.length)throw this.unexpected();return this.node(e,{kind:m.SCALAR_TYPE_EXTENSION,name:t,directives:n})}parseObjectTypeExtension(){const e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("type");const t=this.parseName(),n=this.parseImplementsInterfaces(),r=this.parseConstDirectives(),i=this.parseFieldsDefinition();if(0===n.length&&0===r.length&&0===i.length)throw this.unexpected();return this.node(e,{kind:m.OBJECT_TYPE_EXTENSION,name:t,interfaces:n,directives:r,fields:i})}parseInterfaceTypeExtension(){const e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("interface");const t=this.parseName(),n=this.parseImplementsInterfaces(),r=this.parseConstDirectives(),i=this.parseFieldsDefinition();if(0===n.length&&0===r.length&&0===i.length)throw this.unexpected();return this.node(e,{kind:m.INTERFACE_TYPE_EXTENSION,name:t,interfaces:n,directives:r,fields:i})}parseUnionTypeExtension(){const e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("union");const t=this.parseName(),n=this.parseConstDirectives(),r=this.parseUnionMemberTypes();if(0===n.length&&0===r.length)throw this.unexpected();return this.node(e,{kind:m.UNION_TYPE_EXTENSION,name:t,directives:n,types:r})}parseEnumTypeExtension(){const e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("enum");const t=this.parseName(),n=this.parseConstDirectives(),r=this.parseEnumValuesDefinition();if(0===n.length&&0===r.length)throw this.unexpected();return this.node(e,{kind:m.ENUM_TYPE_EXTENSION,name:t,directives:n,values:r})}parseInputObjectTypeExtension(){const e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("input");const t=this.parseName(),n=this.parseConstDirectives(),r=this.parseInputFieldsDefinition();if(0===n.length&&0===r.length)throw this.unexpected();return this.node(e,{kind:m.INPUT_OBJECT_TYPE_EXTENSION,name:t,directives:n,fields:r})}parseDirectiveDefinition(){const e=this._lexer.token,t=this.parseDescription();this.expectKeyword("directive"),this.expectToken(v.AT);const n=this.parseName(),r=this.parseArgumentDefs(),i=this.expectOptionalKeyword("repeatable");this.expectKeyword("on");const o=this.parseDirectiveLocations();return this.node(e,{kind:m.DIRECTIVE_DEFINITION,description:t,name:n,arguments:r,repeatable:i,locations:o})}parseDirectiveLocations(){return this.delimitedMany(v.PIPE,this.parseDirectiveLocation)}parseDirectiveLocation(){const e=this._lexer.token,t=this.parseName();if(Object.prototype.hasOwnProperty.call(h,t.value))return t;throw this.unexpected(e)}node(e,t){var n;return!0!==(null===(n=this._options)||void 0===n?void 0:n.noLocation)&&(t.loc=new Location(e,this._lexer.lastToken,this._lexer.source)),t}peek(e){return this._lexer.token.kind===e}expectToken(e){const t=this._lexer.token;if(t.kind===e)return this._lexer.advance(),t;throw u(this._lexer.source,t.start,`Expected ${z(e)}, found ${X(t)}.`)}expectOptionalToken(e){return this._lexer.token.kind===e&&(this._lexer.advance(),!0)}expectKeyword(e){const t=this._lexer.token;if(t.kind!==v.NAME||t.value!==e)throw u(this._lexer.source,t.start,`Expected "${e}", found ${X(t)}.`);this._lexer.advance()}expectOptionalKeyword(e){const t=this._lexer.token;return t.kind===v.NAME&&t.value===e&&(this._lexer.advance(),!0)}unexpected(e){const t=null!=e?e:this._lexer.token;return u(this._lexer.source,t.start,`Unexpected ${X(t)}.`)}any(e,t,n){this.expectToken(e);const r=[];for(;!this.expectOptionalToken(n);)r.push(t.call(this));return r}optionalMany(e,t,n){if(this.expectOptionalToken(e)){const e=[];do{e.push(t.call(this))}while(!this.expectOptionalToken(n));return e}return[]}many(e,t,n){this.expectToken(e);const r=[];do{r.push(t.call(this))}while(!this.expectOptionalToken(n));return r}delimitedMany(e,t){this.expectOptionalToken(e);const n=[];do{n.push(t.call(this))}while(this.expectOptionalToken(e));return n}}function X(e){const t=e.value;return z(e.kind)+(null!=t?` "${t}"`:"")}function z(e){return function(e){return e===v.BANG||e===v.QUESTION_MARK||e===v.DOLLAR||e===v.AMP||e===v.PAREN_L||e===v.PAREN_R||e===v.SPREAD||e===v.COLON||e===v.EQUALS||e===v.AT||e===v.BRACKET_L||e===v.BRACKET_R||e===v.BRACE_L||e===v.PIPE||e===v.BRACE_R}(e)?`"${e}"`:e}const H=5;function W(e,t){const[n,r]=t?[e,t]:[void 0,e];let i=" Did you mean ";n&&(i+=n+" ");const o=r.map((e=>`"${e}"`));switch(o.length){case 0:return"";case 1:return i+o[0]+"?";case 2:return i+o[0]+" or "+o[1]+"?"}const s=o.slice(0,H),a=s.pop();return i+s.join(", ")+", or "+a+"?"}function Z(e){return e}function ee(e,t){const n=Object.create(null);for(const r of e)n[t(r)]=r;return n}function te(e,t,n){const r=Object.create(null);for(const i of e)r[t(i)]=n(i);return r}function ne(e,t){const n=Object.create(null);for(const r of Object.keys(e))n[r]=t(e[r],r);return n}function re(e,t){let n=0,r=0;for(;n0);let a=0;do{++r,a=10*a+o-ie,o=t.charCodeAt(r)}while(se(o)&&a>0);if(sa)return 1}else{if(io)return 1;++n,++r}}return e.length-t.length}const ie=48,oe=57;function se(e){return!isNaN(e)&&ie<=e&&e<=oe}function ae(e,t){const n=Object.create(null),r=new LexicalDistance(e),i=Math.floor(.4*e.length)+1;for(const e of t){const t=r.measure(e,i);void 0!==t&&(n[e]=t)}return Object.keys(n).sort(((e,t)=>{const r=n[e]-n[t];return 0!==r?r:re(e,t)}))}class LexicalDistance{constructor(e){this._input=e,this._inputLowerCase=e.toLowerCase(),this._inputArray=ce(this._inputLowerCase),this._rows=[new Array(e.length+1).fill(0),new Array(e.length+1).fill(0),new Array(e.length+1).fill(0)]}measure(e,t){if(this._input===e)return 0;const n=e.toLowerCase();if(this._inputLowerCase===n)return 1;let r=ce(n),i=this._inputArray;if(r.lengtht)return;const a=this._rows;for(let e=0;e<=s;e++)a[0][e]=e;for(let e=1;e<=o;e++){const n=a[(e-1)%3],o=a[e%3];let c=o[0]=e;for(let t=1;t<=s;t++){const s=r[e-1]===i[t-1]?0:1;let u=Math.min(n[t]+1,o[t-1]+1,n[t-1]+s);if(e>1&&t>1&&r[e-1]===i[t-2]&&r[e-2]===i[t-1]){const n=a[(e-2)%3][t-2];u=Math.min(u,n+1)}ut)return}const c=a[o%3][s];return c<=t?c:void 0}}function ce(e){const t=e.length,n=new Array(t);for(let r=0;re.value},Variable:{leave:e=>"$"+e.name},Document:{leave:e=>Te(e.definitions,"\n\n")},OperationDefinition:{leave(e){const t=Ie("(",Te(e.variableDefinitions,", "),")"),n=Te([e.operation,Te([e.name,t]),Te(e.directives," ")]," ");return("query"===n?"":n+" ")+e.selectionSet}},VariableDefinition:{leave:({variable:e,type:t,defaultValue:n,directives:r})=>e+": "+t+Ie(" = ",n)+Ie(" ",Te(r," "))},SelectionSet:{leave:({selections:e})=>Ne(e)},Field:{leave({alias:e,name:t,arguments:n,directives:r,selectionSet:i,required:o}){const s=Te([Ie("",e,": "),t],"");let a=s+Ie("(",Te(n,", "),")");a.length>80&&(a=s+Ie("(\n",ge(Te(n,"\n")),"\n)"));const c=Te([a,o],"");return Te([c,Te(r," "),i]," ")}},RequiredDesignator:{leave:({element:e})=>(null!=e?e:"")+"!"},OptionalDesignator:{leave:({element:e})=>(null!=e?e:"")+"?"},ListNullability:{leave:({element:e})=>"["+(null!=e?e:"")+"]"},Argument:{leave:({name:e,value:t})=>e+": "+t},FragmentSpread:{leave:({name:e,directives:t})=>"..."+e+Ie(" ",Te(t," "))},InlineFragment:{leave:({typeCondition:e,directives:t,selectionSet:n})=>Te(["...",Ie("on ",e),Te(t," "),n]," ")},FragmentDefinition:{leave:({name:e,typeCondition:t,variableDefinitions:n,directives:r,selectionSet:i})=>`fragment ${e}${Ie("(",Te(n,", "),")")} on ${t} ${Ie("",Te(r," ")," ")}`+i},IntValue:{leave:({value:e})=>e},FloatValue:{leave:({value:e})=>e},StringValue:{leave:({value:e,block:t})=>t?function(e,t){const n=e.replace(/"""/g,'\\"""'),r=n.split(/\r\n|[\n\r]/g),i=1===r.length,o=r.length>1&&r.slice(1).every((e=>0===e.length||y(e.charCodeAt(0)))),s=n.endsWith('\\"""'),a=e.endsWith('"')&&!s,c=e.endsWith("\\"),u=a||c,l=!(null!=t&&t.minimize)&&(!i||e.length>70||u||o||s);let p="";const d=i&&y(e.charCodeAt(0));return(l&&!d||o)&&(p+="\n"),p+=n,(l||u)&&(p+="\n"),'"""'+p+'"""'}(e):`"${e.replace(le,pe)}"`},BooleanValue:{leave:({value:e})=>e?"true":"false"},NullValue:{leave:()=>"null"},EnumValue:{leave:({value:e})=>e},ListValue:{leave:({values:e})=>"["+Te(e,", ")+"]"},ObjectValue:{leave:({fields:e})=>"{"+Te(e,", ")+"}"},ObjectField:{leave:({name:e,value:t})=>e+": "+t},Directive:{leave:({name:e,arguments:t})=>"@"+e+Ie("(",Te(t,", "),")")},NamedType:{leave:({name:e})=>e},ListType:{leave:({type:e})=>"["+e+"]"},NonNullType:{leave:({type:e})=>e+"!"},SchemaDefinition:{leave:({description:e,directives:t,operationTypes:n})=>Ie("",e,"\n")+Te(["schema",Te(t," "),Ne(n)]," ")},OperationTypeDefinition:{leave:({operation:e,type:t})=>e+": "+t},ScalarTypeDefinition:{leave:({description:e,name:t,directives:n})=>Ie("",e,"\n")+Te(["scalar",t,Te(n," ")]," ")},ObjectTypeDefinition:{leave:({description:e,name:t,interfaces:n,directives:r,fields:i})=>Ie("",e,"\n")+Te(["type",t,Ie("implements ",Te(n," & ")),Te(r," "),Ne(i)]," ")},FieldDefinition:{leave:({description:e,name:t,arguments:n,type:r,directives:i})=>Ie("",e,"\n")+t+(_e(n)?Ie("(\n",ge(Te(n,"\n")),"\n)"):Ie("(",Te(n,", "),")"))+": "+r+Ie(" ",Te(i," "))},InputValueDefinition:{leave:({description:e,name:t,type:n,defaultValue:r,directives:i})=>Ie("",e,"\n")+Te([t+": "+n,Ie("= ",r),Te(i," ")]," ")},InterfaceTypeDefinition:{leave:({description:e,name:t,interfaces:n,directives:r,fields:i})=>Ie("",e,"\n")+Te(["interface",t,Ie("implements ",Te(n," & ")),Te(r," "),Ne(i)]," ")},UnionTypeDefinition:{leave:({description:e,name:t,directives:n,types:r})=>Ie("",e,"\n")+Te(["union",t,Te(n," "),Ie("= ",Te(r," | "))]," ")},EnumTypeDefinition:{leave:({description:e,name:t,directives:n,values:r})=>Ie("",e,"\n")+Te(["enum",t,Te(n," "),Ne(r)]," ")},EnumValueDefinition:{leave:({description:e,name:t,directives:n})=>Ie("",e,"\n")+Te([t,Te(n," ")]," ")},InputObjectTypeDefinition:{leave:({description:e,name:t,directives:n,fields:r})=>Ie("",e,"\n")+Te(["input",t,Te(n," "),Ne(r)]," ")},DirectiveDefinition:{leave:({description:e,name:t,arguments:n,repeatable:r,locations:i})=>Ie("",e,"\n")+"directive @"+t+(_e(n)?Ie("(\n",ge(Te(n,"\n")),"\n)"):Ie("(",Te(n,", "),")"))+(r?" repeatable":"")+" on "+Te(i," | ")},SchemaExtension:{leave:({directives:e,operationTypes:t})=>Te(["extend schema",Te(e," "),Ne(t)]," ")},ScalarTypeExtension:{leave:({name:e,directives:t})=>Te(["extend scalar",e,Te(t," ")]," ")},ObjectTypeExtension:{leave:({name:e,interfaces:t,directives:n,fields:r})=>Te(["extend type",e,Ie("implements ",Te(t," & ")),Te(n," "),Ne(r)]," ")},InterfaceTypeExtension:{leave:({name:e,interfaces:t,directives:n,fields:r})=>Te(["extend interface",e,Ie("implements ",Te(t," & ")),Te(n," "),Ne(r)]," ")},UnionTypeExtension:{leave:({name:e,directives:t,types:n})=>Te(["extend union",e,Te(t," "),Ie("= ",Te(n," | "))]," ")},EnumTypeExtension:{leave:({name:e,directives:t,values:n})=>Te(["extend enum",e,Te(t," "),Ne(n)]," ")},InputObjectTypeExtension:{leave:({name:e,directives:t,fields:n})=>Te(["extend input",e,Te(t," "),Ne(n)]," ")}};function Te(e,t=""){var n;return null!==(n=null==e?void 0:e.filter((e=>e)).join(t))&&void 0!==n?n:""}function Ne(e){return Ie("{\n",ge(Te(e,"\n")),"\n}")}function Ie(e,t,n=""){return null!=t&&""!==t?e+t+n:""}function ge(e){return Ie(" ",e.replace(/\n/g,"\n "))}function _e(e){var t;return null!==(t=null==e?void 0:e.some((e=>e.includes("\n"))))&&void 0!==t&&t}function Oe(e,t){switch(e.kind){case m.NULL:return null;case m.INT:return parseInt(e.value,10);case m.FLOAT:return parseFloat(e.value);case m.STRING:case m.ENUM:case m.BOOLEAN:return e.value;case m.LIST:return e.values.map((e=>Oe(e,t)));case m.OBJECT:return te(e.fields,(e=>e.name.value),(e=>Oe(e.value,t)));case m.VARIABLE:return null==t?void 0:t[e.name.value]}}function be(e){if(null!=e||t(!1,"Must provide name."),"string"==typeof e||t(!1,"Expected name to be a string."),0===e.length)throw new GraphQLError("Expected name to be a non-empty string.");for(let t=1;ts(Oe(e,t)),this.extensions=ue(e.extensions),this.astNode=e.astNode,this.extensionASTNodes=null!==(o=e.extensionASTNodes)&&void 0!==o?o:[],null==e.specifiedByURL||"string"==typeof e.specifiedByURL||t(!1,`${this.name} must provide "specifiedByURL" as a string, but got: ${Y(e.specifiedByURL)}.`),null==e.serialize||"function"==typeof e.serialize||t(!1,`${this.name} must provide "serialize" function. If this custom Scalar is also used as an input type, ensure "parseValue" and "parseLiteral" functions are also provided.`),e.parseLiteral&&("function"==typeof e.parseValue&&"function"==typeof e.parseLiteral||t(!1,`${this.name} must provide both "parseValue" and "parseLiteral" functions.`))}get[Symbol.toStringTag](){return"GraphQLScalarType"}toConfig(){return{name:this.name,description:this.description,specifiedByURL:this.specifiedByURL,serialize:this.serialize,parseValue:this.parseValue,parseLiteral:this.parseLiteral,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:this.extensionASTNodes}}toString(){return this.name}toJSON(){return this.toString()}}class GraphQLObjectType{constructor(e){var n;this.name=be(e.name),this.description=e.description,this.isTypeOf=e.isTypeOf,this.extensions=ue(e.extensions),this.astNode=e.astNode,this.extensionASTNodes=null!==(n=e.extensionASTNodes)&&void 0!==n?n:[],this._fields=()=>ze(e),this._interfaces=()=>Xe(e),null==e.isTypeOf||"function"==typeof e.isTypeOf||t(!1,`${this.name} must provide "isTypeOf" as a function, but got: ${Y(e.isTypeOf)}.`)}get[Symbol.toStringTag](){return"GraphQLObjectType"}getFields(){return"function"==typeof this._fields&&(this._fields=this._fields()),this._fields}getInterfaces(){return"function"==typeof this._interfaces&&(this._interfaces=this._interfaces()),this._interfaces}toConfig(){return{name:this.name,description:this.description,interfaces:this.getInterfaces(),fields:Ze(this.getFields()),isTypeOf:this.isTypeOf,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:this.extensionASTNodes}}toString(){return this.name}toJSON(){return this.toString()}}function Xe(e){var n;const r=qe(null!==(n=e.interfaces)&&void 0!==n?n:[]);return Array.isArray(r)||t(!1,`${e.name} interfaces must be an Array or a function which returns an Array.`),r}function ze(e){const n=Ke(e.fields);return We(n)||t(!1,`${e.name} fields must be an object with field names as keys or a function which returns such an object.`),ne(n,((n,r)=>{var i;We(n)||t(!1,`${e.name}.${r} field config must be an object.`),null==n.resolve||"function"==typeof n.resolve||t(!1,`${e.name}.${r} field resolver must be a function if provided, but got: ${Y(n.resolve)}.`);const o=null!==(i=n.args)&&void 0!==i?i:{};return We(o)||t(!1,`${e.name}.${r} args must be an object with argument names as keys.`),{name:be(r),description:n.description,type:n.type,args:He(o),resolve:n.resolve,subscribe:n.subscribe,deprecationReason:n.deprecationReason,extensions:ue(n.extensions),astNode:n.astNode}}))}function He(e){return Object.entries(e).map((([e,t])=>({name:be(e),description:t.description,type:t.type,defaultValue:t.defaultValue,deprecationReason:t.deprecationReason,extensions:ue(t.extensions),astNode:t.astNode})))}function We(e){return n(e)&&!Array.isArray(e)}function Ze(e){return ne(e,(e=>({description:e.description,type:e.type,args:et(e.args),resolve:e.resolve,subscribe:e.subscribe,deprecationReason:e.deprecationReason,extensions:e.extensions,astNode:e.astNode})))}function et(e){return te(e,(e=>e.name),(e=>({description:e.description,type:e.type,defaultValue:e.defaultValue,deprecationReason:e.deprecationReason,extensions:e.extensions,astNode:e.astNode})))}function tt(e){return Ge(e.type)&&void 0===e.defaultValue}class GraphQLInterfaceType{constructor(e){var n;this.name=be(e.name),this.description=e.description,this.resolveType=e.resolveType,this.extensions=ue(e.extensions),this.astNode=e.astNode,this.extensionASTNodes=null!==(n=e.extensionASTNodes)&&void 0!==n?n:[],this._fields=ze.bind(void 0,e),this._interfaces=Xe.bind(void 0,e),null==e.resolveType||"function"==typeof e.resolveType||t(!1,`${this.name} must provide "resolveType" as a function, but got: ${Y(e.resolveType)}.`)}get[Symbol.toStringTag](){return"GraphQLInterfaceType"}getFields(){return"function"==typeof this._fields&&(this._fields=this._fields()),this._fields}getInterfaces(){return"function"==typeof this._interfaces&&(this._interfaces=this._interfaces()),this._interfaces}toConfig(){return{name:this.name,description:this.description,interfaces:this.getInterfaces(),fields:Ze(this.getFields()),resolveType:this.resolveType,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:this.extensionASTNodes}}toString(){return this.name}toJSON(){return this.toString()}}class GraphQLUnionType{constructor(e){var n;this.name=be(e.name),this.description=e.description,this.resolveType=e.resolveType,this.extensions=ue(e.extensions),this.astNode=e.astNode,this.extensionASTNodes=null!==(n=e.extensionASTNodes)&&void 0!==n?n:[],this._types=nt.bind(void 0,e),null==e.resolveType||"function"==typeof e.resolveType||t(!1,`${this.name} must provide "resolveType" as a function, but got: ${Y(e.resolveType)}.`)}get[Symbol.toStringTag](){return"GraphQLUnionType"}getTypes(){return"function"==typeof this._types&&(this._types=this._types()),this._types}toConfig(){return{name:this.name,description:this.description,types:this.getTypes(),resolveType:this.resolveType,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:this.extensionASTNodes}}toString(){return this.name}toJSON(){return this.toString()}}function nt(e){const n=qe(e.types);return Array.isArray(n)||t(!1,`Must provide Array of types or a function which returns such an array for Union ${e.name}.`),n}class GraphQLEnumType{constructor(e){var n,r,i;this.name=be(e.name),this.description=e.description,this.extensions=ue(e.extensions),this.astNode=e.astNode,this.extensionASTNodes=null!==(n=e.extensionASTNodes)&&void 0!==n?n:[],this._values=(r=this.name,We(i=e.values)||t(!1,`${r} values must be an object with value names as keys.`),Object.entries(i).map((([e,n])=>(We(n)||t(!1,`${r}.${e} must refer to an object with a "value" key representing an internal value but got: ${Y(n)}.`),{name:Le(e),description:n.description,value:void 0!==n.value?n.value:e,deprecationReason:n.deprecationReason,extensions:ue(n.extensions),astNode:n.astNode})))),this._valueLookup=new Map(this._values.map((e=>[e.value,e]))),this._nameLookup=ee(this._values,(e=>e.name))}get[Symbol.toStringTag](){return"GraphQLEnumType"}getValues(){return this._values}getValue(e){return this._nameLookup[e]}serialize(e){const t=this._valueLookup.get(e);if(void 0===t)throw new GraphQLError(`Enum "${this.name}" cannot represent value: ${Y(e)}`);return t.name}parseValue(e){if("string"!=typeof e){const t=Y(e);throw new GraphQLError(`Enum "${this.name}" cannot represent non-string value: ${t}.`+rt(this,t))}const t=this.getValue(e);if(null==t)throw new GraphQLError(`Value "${e}" does not exist in "${this.name}" enum.`+rt(this,e));return t.value}parseLiteral(e,t){if(e.kind!==m.ENUM){const t=ye(e);throw new GraphQLError(`Enum "${this.name}" cannot represent non-enum value: ${t}.`+rt(this,t),e)}const n=this.getValue(e.value);if(null==n){const t=ye(e);throw new GraphQLError(`Value "${t}" does not exist in "${this.name}" enum.`+rt(this,t),e)}return n.value}toConfig(){const e=te(this.getValues(),(e=>e.name),(e=>({description:e.description,value:e.value,deprecationReason:e.deprecationReason,extensions:e.extensions,astNode:e.astNode})));return{name:this.name,description:this.description,values:e,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:this.extensionASTNodes}}toString(){return this.name}toJSON(){return this.toString()}}function rt(e,t){return W("the enum value",ae(t,e.getValues().map((e=>e.name))))}class GraphQLInputObjectType{constructor(e){var t;this.name=be(e.name),this.description=e.description,this.extensions=ue(e.extensions),this.astNode=e.astNode,this.extensionASTNodes=null!==(t=e.extensionASTNodes)&&void 0!==t?t:[],this._fields=it.bind(void 0,e)}get[Symbol.toStringTag](){return"GraphQLInputObjectType"}getFields(){return"function"==typeof this._fields&&(this._fields=this._fields()),this._fields}toConfig(){const e=ne(this.getFields(),(e=>({description:e.description,type:e.type,defaultValue:e.defaultValue,deprecationReason:e.deprecationReason,extensions:e.extensions,astNode:e.astNode})));return{name:this.name,description:this.description,fields:e,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:this.extensionASTNodes}}toString(){return this.name}toJSON(){return this.toString()}}function it(e){const n=Ke(e.fields);return We(n)||t(!1,`${e.name} fields must be an object with field names as keys or a function which returns such an object.`),ne(n,((n,r)=>(!("resolve"in n)||t(!1,`${e.name}.${r} field has a resolve property, but Input Types cannot define resolvers.`),{name:be(r),description:n.description,type:n.type,defaultValue:n.defaultValue,deprecationReason:n.deprecationReason,extensions:ue(n.extensions),astNode:n.astNode})))}function ot(e){return Ge(e.type)&&void 0===e.defaultValue}function st(e,t){return e===t||(Ge(e)&&Ge(t)||!(!Re(e)||!Re(t)))&&st(e.ofType,t.ofType)}function at(e,t,n){return t===n||(Ge(n)?!!Ge(t)&&at(e,t.ofType,n.ofType):Ge(t)?at(e,t.ofType,n):Re(n)?!!Re(t)&&at(e,t.ofType,n.ofType):!Re(t)&&(Ve(n)&&(we(t)||De(t))&&e.isSubType(n,t)))}function ct(e,t,n){return t===n||(Ve(t)?Ve(n)?e.getPossibleTypes(t).some((t=>e.isSubType(n,t))):e.isSubType(t,n):!!Ve(n)&&e.isSubType(n,t))}const ut=2147483647,lt=-2147483648,pt=new GraphQLScalarType({name:"Int",description:"The `Int` scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.",serialize(e){const t=Et(e);if("boolean"==typeof t)return t?1:0;let n=t;if("string"==typeof t&&""!==t&&(n=Number(t)),"number"!=typeof n||!Number.isInteger(n))throw new GraphQLError(`Int cannot represent non-integer value: ${Y(t)}`);if(n>ut||nut||eut||te.name===t))}function Et(e){if(n(e)){if("function"==typeof e.valueOf){const t=e.valueOf();if(!n(t))return t}if("function"==typeof e.toJSON)return e.toJSON()}return e}function Tt(e){return q(e,GraphQLDirective)}class GraphQLDirective{constructor(e){var r,i;this.name=be(e.name),this.description=e.description,this.locations=e.locations,this.isRepeatable=null!==(r=e.isRepeatable)&&void 0!==r&&r,this.extensions=ue(e.extensions),this.astNode=e.astNode,Array.isArray(e.locations)||t(!1,`@${e.name} locations must be an Array.`);const o=null!==(i=e.args)&&void 0!==i?i:{};n(o)&&!Array.isArray(o)||t(!1,`@${e.name} args must be an object with argument names as keys.`),this.args=He(o)}get[Symbol.toStringTag](){return"GraphQLDirective"}toConfig(){return{name:this.name,description:this.description,locations:this.locations,args:et(this.args),isRepeatable:this.isRepeatable,extensions:this.extensions,astNode:this.astNode}}toString(){return"@"+this.name}toJSON(){return this.toString()}}const Nt=new GraphQLDirective({name:"include",description:"Directs the executor to include this field or fragment only when the `if` argument is true.",locations:[h.FIELD,h.FRAGMENT_SPREAD,h.INLINE_FRAGMENT],args:{if:{type:new GraphQLNonNull(ht),description:"Included when true."}}}),It=new GraphQLDirective({name:"skip",description:"Directs the executor to skip this field or fragment when the `if` argument is true.",locations:[h.FIELD,h.FRAGMENT_SPREAD,h.INLINE_FRAGMENT],args:{if:{type:new GraphQLNonNull(ht),description:"Skipped when true."}}}),gt="No longer supported",_t=new GraphQLDirective({name:"deprecated",description:"Marks an element of a GraphQL schema as no longer supported.",locations:[h.FIELD_DEFINITION,h.ARGUMENT_DEFINITION,h.INPUT_FIELD_DEFINITION,h.ENUM_VALUE],args:{reason:{type:ft,description:"Explains why this element was deprecated, usually also including a suggestion for how to access supported similar data. Formatted using the Markdown syntax, as specified by [CommonMark](https://commonmark.org/).",defaultValue:gt}}}),Ot=new GraphQLDirective({name:"specifiedBy",description:"Exposes a URL that specifies the behavior of this scalar.",locations:[h.SCALAR],args:{url:{type:new GraphQLNonNull(ft),description:"The URL that specifies the behavior of this scalar."}}}),bt=Object.freeze([Nt,It,_t,Ot]);function Lt(e,t){if(Ge(t)){const n=Lt(e,t.ofType);return(null==n?void 0:n.kind)===m.NULL?null:n}if(null===e)return{kind:m.NULL};if(void 0===e)return null;if(Re(t)){const n=t.ofType;if("object"==typeof(i=e)&&"function"==typeof(null==i?void 0:i[Symbol.iterator])){const t=[];for(const r of e){const e=Lt(r,n);null!=e&&t.push(e)}return{kind:m.LIST,values:t}}return Lt(e,n)}var i;if(Fe(t)){if(!n(e))return null;const r=[];for(const n of Object.values(t.getFields())){const t=Lt(e[n.name],n.type);t&&r.push({kind:m.OBJECT_FIELD,name:{kind:m.NAME,value:n.name},value:t})}return{kind:m.OBJECT,fields:r}}if(Ue(t)){const n=t.serialize(e);if(null==n)return null;if("boolean"==typeof n)return{kind:m.BOOLEAN,value:n};if("number"==typeof n&&Number.isFinite(n)){const e=String(n);return St.test(e)?{kind:m.INT,value:e}:{kind:m.FLOAT,value:e}}if("string"==typeof n)return xe(t)?{kind:m.ENUM,value:n}:t===mt&&St.test(n)?{kind:m.INT,value:n}:{kind:m.STRING,value:n};throw new TypeError(`Cannot convert value to AST: ${Y(n)}.`)}r(!1,"Unexpected input type: "+Y(t))}const St=/^-?(?:0|[1-9][0-9]*)$/,At=new GraphQLObjectType({name:"__Schema",description:"A GraphQL Schema defines the capabilities of a GraphQL server. It exposes all available types and directives on the server, as well as the entry points for query, mutation, and subscription operations.",fields:()=>({description:{type:ft,resolve:e=>e.description},types:{description:"A list of all types supported by this server.",type:new GraphQLNonNull(new GraphQLList(new GraphQLNonNull(kt))),resolve:e=>Object.values(e.getTypeMap())},queryType:{description:"The type that query operations will be rooted at.",type:new GraphQLNonNull(kt),resolve:e=>e.getQueryType()},mutationType:{description:"If this server supports mutation, the type that mutation operations will be rooted at.",type:kt,resolve:e=>e.getMutationType()},subscriptionType:{description:"If this server support subscription, the type that subscription operations will be rooted at.",type:kt,resolve:e=>e.getSubscriptionType()},directives:{description:"A list of all directives supported by this server.",type:new GraphQLNonNull(new GraphQLList(new GraphQLNonNull(Dt))),resolve:e=>e.getDirectives()}})}),Dt=new GraphQLObjectType({name:"__Directive",description:"A Directive provides a way to describe alternate runtime execution and type validation behavior in a GraphQL document.\n\nIn some cases, you need to provide options to alter GraphQL's execution behavior in ways field arguments will not suffice, such as conditionally including or skipping a field. Directives provide this by describing additional information to the executor.",fields:()=>({name:{type:new GraphQLNonNull(ft),resolve:e=>e.name},description:{type:ft,resolve:e=>e.description},isRepeatable:{type:new GraphQLNonNull(ht),resolve:e=>e.isRepeatable},locations:{type:new GraphQLNonNull(new GraphQLList(new GraphQLNonNull(wt))),resolve:e=>e.locations},args:{type:new GraphQLNonNull(new GraphQLList(new GraphQLNonNull(Ft))),args:{includeDeprecated:{type:ht,defaultValue:!1}},resolve:(e,{includeDeprecated:t})=>t?e.args:e.args.filter((e=>null==e.deprecationReason))}})}),wt=new GraphQLEnumType({name:"__DirectiveLocation",description:"A Directive can be adjacent to many parts of the GraphQL language, a __DirectiveLocation describes one such possible adjacencies.",values:{QUERY:{value:h.QUERY,description:"Location adjacent to a query operation."},MUTATION:{value:h.MUTATION,description:"Location adjacent to a mutation operation."},SUBSCRIPTION:{value:h.SUBSCRIPTION,description:"Location adjacent to a subscription operation."},FIELD:{value:h.FIELD,description:"Location adjacent to a field."},FRAGMENT_DEFINITION:{value:h.FRAGMENT_DEFINITION,description:"Location adjacent to a fragment definition."},FRAGMENT_SPREAD:{value:h.FRAGMENT_SPREAD,description:"Location adjacent to a fragment spread."},INLINE_FRAGMENT:{value:h.INLINE_FRAGMENT,description:"Location adjacent to an inline fragment."},VARIABLE_DEFINITION:{value:h.VARIABLE_DEFINITION,description:"Location adjacent to a variable definition."},SCHEMA:{value:h.SCHEMA,description:"Location adjacent to a schema definition."},SCALAR:{value:h.SCALAR,description:"Location adjacent to a scalar definition."},OBJECT:{value:h.OBJECT,description:"Location adjacent to an object type definition."},FIELD_DEFINITION:{value:h.FIELD_DEFINITION,description:"Location adjacent to a field definition."},ARGUMENT_DEFINITION:{value:h.ARGUMENT_DEFINITION,description:"Location adjacent to an argument definition."},INTERFACE:{value:h.INTERFACE,description:"Location adjacent to an interface definition."},UNION:{value:h.UNION,description:"Location adjacent to a union definition."},ENUM:{value:h.ENUM,description:"Location adjacent to an enum definition."},ENUM_VALUE:{value:h.ENUM_VALUE,description:"Location adjacent to an enum value definition."},INPUT_OBJECT:{value:h.INPUT_OBJECT,description:"Location adjacent to an input object type definition."},INPUT_FIELD_DEFINITION:{value:h.INPUT_FIELD_DEFINITION,description:"Location adjacent to an input object field definition."}}}),kt=new GraphQLObjectType({name:"__Type",description:"The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.\n\nDepending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name, description and optional `specifiedByURL`, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.",fields:()=>({kind:{type:new GraphQLNonNull(Gt),resolve:e=>Ae(e)?Ct.SCALAR:De(e)?Ct.OBJECT:we(e)?Ct.INTERFACE:ke(e)?Ct.UNION:xe(e)?Ct.ENUM:Fe(e)?Ct.INPUT_OBJECT:Re(e)?Ct.LIST:Ge(e)?Ct.NON_NULL:void r(!1,`Unexpected type: "${Y(e)}".`)},name:{type:ft,resolve:e=>"name"in e?e.name:void 0},description:{type:ft,resolve:e=>"description"in e?e.description:void 0},specifiedByURL:{type:ft,resolve:e=>"specifiedByURL"in e?e.specifiedByURL:void 0},fields:{type:new GraphQLList(new GraphQLNonNull(xt)),args:{includeDeprecated:{type:ht,defaultValue:!1}},resolve(e,{includeDeprecated:t}){if(De(e)||we(e)){const n=Object.values(e.getFields());return t?n:n.filter((e=>null==e.deprecationReason))}}},interfaces:{type:new GraphQLList(new GraphQLNonNull(kt)),resolve(e){if(De(e)||we(e))return e.getInterfaces()}},possibleTypes:{type:new GraphQLList(new GraphQLNonNull(kt)),resolve(e,t,n,{schema:r}){if(Ve(e))return r.getPossibleTypes(e)}},enumValues:{type:new GraphQLList(new GraphQLNonNull(Rt)),args:{includeDeprecated:{type:ht,defaultValue:!1}},resolve(e,{includeDeprecated:t}){if(xe(e)){const n=e.getValues();return t?n:n.filter((e=>null==e.deprecationReason))}}},inputFields:{type:new GraphQLList(new GraphQLNonNull(Ft)),args:{includeDeprecated:{type:ht,defaultValue:!1}},resolve(e,{includeDeprecated:t}){if(Fe(e)){const n=Object.values(e.getFields());return t?n:n.filter((e=>null==e.deprecationReason))}}},ofType:{type:kt,resolve:e=>"ofType"in e?e.ofType:void 0}})}),xt=new GraphQLObjectType({name:"__Field",description:"Object and Interface types are described by a list of Fields, each of which has a name, potentially a list of arguments, and a return type.",fields:()=>({name:{type:new GraphQLNonNull(ft),resolve:e=>e.name},description:{type:ft,resolve:e=>e.description},args:{type:new GraphQLNonNull(new GraphQLList(new GraphQLNonNull(Ft))),args:{includeDeprecated:{type:ht,defaultValue:!1}},resolve:(e,{includeDeprecated:t})=>t?e.args:e.args.filter((e=>null==e.deprecationReason))},type:{type:new GraphQLNonNull(kt),resolve:e=>e.type},isDeprecated:{type:new GraphQLNonNull(ht),resolve:e=>null!=e.deprecationReason},deprecationReason:{type:ft,resolve:e=>e.deprecationReason}})}),Ft=new GraphQLObjectType({name:"__InputValue",description:"Arguments provided to Fields or Directives and the input fields of an InputObject are represented as Input Values which describe their type and optionally a default value.",fields:()=>({name:{type:new GraphQLNonNull(ft),resolve:e=>e.name},description:{type:ft,resolve:e=>e.description},type:{type:new GraphQLNonNull(kt),resolve:e=>e.type},defaultValue:{type:ft,description:"A GraphQL-formatted string representing the default value for this input value.",resolve(e){const{type:t,defaultValue:n}=e,r=Lt(n,t);return r?ye(r):null}},isDeprecated:{type:new GraphQLNonNull(ht),resolve:e=>null!=e.deprecationReason},deprecationReason:{type:ft,resolve:e=>e.deprecationReason}})}),Rt=new GraphQLObjectType({name:"__EnumValue",description:"One possible value for a given Enum. Enum values are unique values, not a placeholder for a string or numeric value. However an Enum value is returned in a JSON response as a string.",fields:()=>({name:{type:new GraphQLNonNull(ft),resolve:e=>e.name},description:{type:ft,resolve:e=>e.description},isDeprecated:{type:new GraphQLNonNull(ht),resolve:e=>null!=e.deprecationReason},deprecationReason:{type:ft,resolve:e=>e.deprecationReason}})});let Ct;!function(e){e.SCALAR="SCALAR",e.OBJECT="OBJECT",e.INTERFACE="INTERFACE",e.UNION="UNION",e.ENUM="ENUM",e.INPUT_OBJECT="INPUT_OBJECT",e.LIST="LIST",e.NON_NULL="NON_NULL"}(Ct||(Ct={}));const Gt=new GraphQLEnumType({name:"__TypeKind",description:"An enum describing what kind of type a given `__Type` is.",values:{SCALAR:{value:Ct.SCALAR,description:"Indicates this type is a scalar."},OBJECT:{value:Ct.OBJECT,description:"Indicates this type is an object. `fields` and `interfaces` are valid fields."},INTERFACE:{value:Ct.INTERFACE,description:"Indicates this type is an interface. `fields`, `interfaces`, and `possibleTypes` are valid fields."},UNION:{value:Ct.UNION,description:"Indicates this type is a union. `possibleTypes` is a valid field."},ENUM:{value:Ct.ENUM,description:"Indicates this type is an enum. `enumValues` is a valid field."},INPUT_OBJECT:{value:Ct.INPUT_OBJECT,description:"Indicates this type is an input object. `inputFields` is a valid field."},LIST:{value:Ct.LIST,description:"Indicates this type is a list. `ofType` is a valid field."},NON_NULL:{value:Ct.NON_NULL,description:"Indicates this type is a non-null. `ofType` is a valid field."}}}),$t={name:"__schema",type:new GraphQLNonNull(At),description:"Access the current type schema of this server.",args:[],resolve:(e,t,n,{schema:r})=>r,deprecationReason:void 0,extensions:Object.create(null),astNode:void 0},Qt={name:"__type",type:kt,description:"Request the type information of a single type.",args:[{name:"name",description:void 0,type:new GraphQLNonNull(ft),defaultValue:void 0,deprecationReason:void 0,extensions:Object.create(null),astNode:void 0}],resolve:(e,{name:t},n,{schema:r})=>r.getType(t),deprecationReason:void 0,extensions:Object.create(null),astNode:void 0},Ut={name:"__typename",type:new GraphQLNonNull(ft),description:"The name of the current Object type at runtime.",args:[],resolve:(e,t,n,{parentType:r})=>r.name,deprecationReason:void 0,extensions:Object.create(null),astNode:void 0},jt=Object.freeze([At,Dt,wt,kt,xt,Ft,Rt,Gt]);function Vt(e){return jt.some((({name:t})=>e.name===t))}function Mt(e){if(!function(e){return q(e,GraphQLSchema)}(e))throw new Error(`Expected ${Y(e)} to be a GraphQL schema.`);return e}class GraphQLSchema{constructor(e){var r,i;this.__validationErrors=!0===e.assumeValid?[]:void 0,n(e)||t(!1,"Must provide configuration object."),!e.types||Array.isArray(e.types)||t(!1,`"types" must be Array if provided but got: ${Y(e.types)}.`),!e.directives||Array.isArray(e.directives)||t(!1,`"directives" must be Array if provided but got: ${Y(e.directives)}.`),this.description=e.description,this.extensions=ue(e.extensions),this.astNode=e.astNode,this.extensionASTNodes=null!==(r=e.extensionASTNodes)&&void 0!==r?r:[],this._queryType=e.query,this._mutationType=e.mutation,this._subscriptionType=e.subscription,this._directives=null!==(i=e.directives)&&void 0!==i?i:bt;const o=new Set(e.types);if(null!=e.types)for(const t of e.types)o.delete(t),Pt(t,o);null!=this._queryType&&Pt(this._queryType,o),null!=this._mutationType&&Pt(this._mutationType,o),null!=this._subscriptionType&&Pt(this._subscriptionType,o);for(const e of this._directives)if(Tt(e))for(const t of e.args)Pt(t.type,o);Pt(At,o),this._typeMap=Object.create(null),this._subTypeMap=Object.create(null),this._implementationsMap=Object.create(null);for(const e of o){if(null==e)continue;const n=e.name;if(n||t(!1,"One of the provided types for building the Schema is missing a name."),void 0!==this._typeMap[n])throw new Error(`Schema must contain uniquely named types but contains multiple types named "${n}".`);if(this._typeMap[n]=e,we(e)){for(const t of e.getInterfaces())if(we(t)){let n=this._implementationsMap[t.name];void 0===n&&(n=this._implementationsMap[t.name]={objects:[],interfaces:[]}),n.interfaces.push(e)}}else if(De(e))for(const t of e.getInterfaces())if(we(t)){let n=this._implementationsMap[t.name];void 0===n&&(n=this._implementationsMap[t.name]={objects:[],interfaces:[]}),n.objects.push(e)}}}get[Symbol.toStringTag](){return"GraphQLSchema"}getQueryType(){return this._queryType}getMutationType(){return this._mutationType}getSubscriptionType(){return this._subscriptionType}getRootType(e){switch(e){case f.QUERY:return this.getQueryType();case f.MUTATION:return this.getMutationType();case f.SUBSCRIPTION:return this.getSubscriptionType()}}getTypeMap(){return this._typeMap}getType(e){return this.getTypeMap()[e]}getPossibleTypes(e){return ke(e)?e.getTypes():this.getImplementations(e).objects}getImplementations(e){const t=this._implementationsMap[e.name];return null!=t?t:{objects:[],interfaces:[]}}isSubType(e,t){let n=this._subTypeMap[e.name];if(void 0===n){if(n=Object.create(null),ke(e))for(const t of e.getTypes())n[t.name]=!0;else{const t=this.getImplementations(e);for(const e of t.objects)n[e.name]=!0;for(const e of t.interfaces)n[e.name]=!0}this._subTypeMap[e.name]=n}return void 0!==n[t.name]}getDirectives(){return this._directives}getDirective(e){return this.getDirectives().find((t=>t.name===e))}toConfig(){return{description:this.description,query:this.getQueryType(),mutation:this.getMutationType(),subscription:this.getSubscriptionType(),types:Object.values(this.getTypeMap()),directives:this.getDirectives(),extensions:this.extensions,astNode:this.astNode,extensionASTNodes:this.extensionASTNodes,assumeValid:void 0!==this.__validationErrors}}}function Pt(e,t){const n=Je(e);if(!t.has(n))if(t.add(n),ke(n))for(const e of n.getTypes())Pt(e,t);else if(De(n)||we(n)){for(const e of n.getInterfaces())Pt(e,t);for(const e of Object.values(n.getFields())){Pt(e.type,t);for(const n of e.args)Pt(n.type,t)}}else if(Fe(n))for(const e of Object.values(n.getFields()))Pt(e.type,t);return t}function Bt(e){if(Mt(e),e.__validationErrors)return e.__validationErrors;const t=new SchemaValidationContext(e);!function(e){const t=e.schema,n=t.getQueryType();if(n){if(!De(n)){var r;e.reportError(`Query root type must be Object type, it cannot be ${Y(n)}.`,null!==(r=Yt(t,f.QUERY))&&void 0!==r?r:n.astNode)}}else e.reportError("Query root type must be provided.",t.astNode);const i=t.getMutationType();var o;i&&!De(i)&&e.reportError(`Mutation root type must be Object type if provided, it cannot be ${Y(i)}.`,null!==(o=Yt(t,f.MUTATION))&&void 0!==o?o:i.astNode);const s=t.getSubscriptionType();var a;s&&!De(s)&&e.reportError(`Subscription root type must be Object type if provided, it cannot be ${Y(s)}.`,null!==(a=Yt(t,f.SUBSCRIPTION))&&void 0!==a?a:s.astNode)}(t),function(e){for(const n of e.schema.getDirectives())if(Tt(n)){Jt(e,n);for(const r of n.args){var t;if(Jt(e,r),$e(r.type)||e.reportError(`The type of @${n.name}(${r.name}:) must be Input Type but got: ${Y(r.type)}.`,r.astNode),tt(r)&&null!=r.deprecationReason)e.reportError(`Required argument @${n.name}(${r.name}:) cannot be deprecated.`,[nn(r.astNode),null===(t=r.astNode)||void 0===t?void 0:t.type])}}else e.reportError(`Expected directive but got: ${Y(n)}.`,null==n?void 0:n.astNode)}(t),function(e){const t=function(e){const t=Object.create(null),n=[],r=Object.create(null);return i;function i(o){if(t[o.name])return;t[o.name]=!0,r[o.name]=n.length;const s=Object.values(o.getFields());for(const t of s)if(Ge(t.type)&&Fe(t.type.ofType)){const o=t.type.ofType,s=r[o.name];if(n.push(t),void 0===s)i(o);else{const t=n.slice(s),r=t.map((e=>e.name)).join(".");e.reportError(`Cannot reference Input Object "${o.name}" within itself through a series of non-null fields: "${r}".`,t.map((e=>e.astNode)))}n.pop()}r[o.name]=void 0}}(e),n=e.schema.getTypeMap();for(const r of Object.values(n))Ye(r)?(Vt(r)||Jt(e,r),De(r)||we(r)?(qt(e,r),Kt(e,r)):ke(r)?Ht(e,r):xe(r)?Wt(e,r):Fe(r)&&(Zt(e,r),t(r))):e.reportError(`Expected GraphQL named type but got: ${Y(r)}.`,r.astNode)}(t);const n=t.getErrors();return e.__validationErrors=n,n}class SchemaValidationContext{constructor(e){this._errors=[],this.schema=e}reportError(e,t){const n=Array.isArray(t)?t.filter(Boolean):t;this._errors.push(new GraphQLError(e,n))}getErrors(){return this._errors}}function Yt(e,t){var n;return null===(n=[e.astNode,...e.extensionASTNodes].flatMap((e=>{var t;return null!==(t=null==e?void 0:e.operationTypes)&&void 0!==t?t:[]})).find((e=>e.operation===t)))||void 0===n?void 0:n.type}function Jt(e,t){t.name.startsWith("__")&&e.reportError(`Name "${t.name}" must not begin with "__", which is reserved by GraphQL introspection.`,t.astNode)}function qt(e,t){const n=Object.values(t.getFields());0===n.length&&e.reportError(`Type ${t.name} must define one or more fields.`,[t.astNode,...t.extensionASTNodes]);for(const s of n){var r;if(Jt(e,s),!Qe(s.type))e.reportError(`The type of ${t.name}.${s.name} must be Output Type but got: ${Y(s.type)}.`,null===(r=s.astNode)||void 0===r?void 0:r.type);for(const n of s.args){const r=n.name;var i,o;if(Jt(e,n),!$e(n.type))e.reportError(`The type of ${t.name}.${s.name}(${r}:) must be Input Type but got: ${Y(n.type)}.`,null===(i=n.astNode)||void 0===i?void 0:i.type);if(tt(n)&&null!=n.deprecationReason)e.reportError(`Required argument ${t.name}.${s.name}(${r}:) cannot be deprecated.`,[nn(n.astNode),null===(o=n.astNode)||void 0===o?void 0:o.type])}}}function Kt(e,t){const n=Object.create(null);for(const r of t.getInterfaces())we(r)?t!==r?n[r.name]?e.reportError(`Type ${t.name} can only implement ${r.name} once.`,en(t,r)):(n[r.name]=!0,zt(e,t,r),Xt(e,t,r)):e.reportError(`Type ${t.name} cannot implement itself because it would create a circular reference.`,en(t,r)):e.reportError(`Type ${Y(t)} must only implement Interface types, it cannot implement ${Y(r)}.`,en(t,r))}function Xt(e,t,n){const r=t.getFields();for(const c of Object.values(n.getFields())){const u=c.name,l=r[u];if(l){var i,o;if(!at(e.schema,l.type,c.type))e.reportError(`Interface field ${n.name}.${u} expects type ${Y(c.type)} but ${t.name}.${u} is type ${Y(l.type)}.`,[null===(i=c.astNode)||void 0===i?void 0:i.type,null===(o=l.astNode)||void 0===o?void 0:o.type]);for(const r of c.args){const i=r.name,o=l.args.find((e=>e.name===i));var s,a;if(o){if(!st(r.type,o.type))e.reportError(`Interface field argument ${n.name}.${u}(${i}:) expects type ${Y(r.type)} but ${t.name}.${u}(${i}:) is type ${Y(o.type)}.`,[null===(s=r.astNode)||void 0===s?void 0:s.type,null===(a=o.astNode)||void 0===a?void 0:a.type])}else e.reportError(`Interface field argument ${n.name}.${u}(${i}:) expected but ${t.name}.${u} does not provide it.`,[r.astNode,l.astNode])}for(const r of l.args){const i=r.name;!c.args.find((e=>e.name===i))&&tt(r)&&e.reportError(`Object field ${t.name}.${u} includes required argument ${i} that is missing from the Interface field ${n.name}.${u}.`,[r.astNode,c.astNode])}}else e.reportError(`Interface field ${n.name}.${u} expected but ${t.name} does not provide it.`,[c.astNode,t.astNode,...t.extensionASTNodes])}}function zt(e,t,n){const r=t.getInterfaces();for(const i of n.getInterfaces())r.includes(i)||e.reportError(i===t?`Type ${t.name} cannot implement ${n.name} because it would create a circular reference.`:`Type ${t.name} must implement ${i.name} because it is implemented by ${n.name}.`,[...en(n,i),...en(t,n)])}function Ht(e,t){const n=t.getTypes();0===n.length&&e.reportError(`Union type ${t.name} must define one or more member types.`,[t.astNode,...t.extensionASTNodes]);const r=Object.create(null);for(const i of n)r[i.name]?e.reportError(`Union type ${t.name} can only include type ${i.name} once.`,tn(t,i.name)):(r[i.name]=!0,De(i)||e.reportError(`Union type ${t.name} can only include Object types, it cannot include ${Y(i)}.`,tn(t,String(i))))}function Wt(e,t){const n=t.getValues();0===n.length&&e.reportError(`Enum type ${t.name} must define one or more values.`,[t.astNode,...t.extensionASTNodes]);for(const t of n)Jt(e,t)}function Zt(e,t){const n=Object.values(t.getFields());0===n.length&&e.reportError(`Input Object type ${t.name} must define one or more fields.`,[t.astNode,...t.extensionASTNodes]);for(const o of n){var r,i;if(Jt(e,o),!$e(o.type))e.reportError(`The type of ${t.name}.${o.name} must be Input Type but got: ${Y(o.type)}.`,null===(r=o.astNode)||void 0===r?void 0:r.type);if(ot(o)&&null!=o.deprecationReason)e.reportError(`Required input field ${t.name}.${o.name} cannot be deprecated.`,[nn(o.astNode),null===(i=o.astNode)||void 0===i?void 0:i.type])}}function en(e,t){const{astNode:n,extensionASTNodes:r}=e;return(null!=n?[n,...r]:r).flatMap((e=>{var t;return null!==(t=e.interfaces)&&void 0!==t?t:[]})).filter((e=>e.name.value===t.name))}function tn(e,t){const{astNode:n,extensionASTNodes:r}=e;return(null!=n?[n,...r]:r).flatMap((e=>{var t;return null!==(t=e.types)&&void 0!==t?t:[]})).filter((e=>e.name.value===t))}function nn(e){var t;return null==e||null===(t=e.directives)||void 0===t?void 0:t.find((e=>e.name.value===_t.name))}function rn(e,t){switch(t.kind){case m.LIST_TYPE:{const n=rn(e,t.type);return n&&new GraphQLList(n)}case m.NON_NULL_TYPE:{const n=rn(e,t.type);return n&&new GraphQLNonNull(n)}case m.NAMED_TYPE:return e.getType(t.name.value)}}class TypeInfo{constructor(e,t,n){this._schema=e,this._typeStack=[],this._parentTypeStack=[],this._inputTypeStack=[],this._fieldDefStack=[],this._defaultValueStack=[],this._directive=null,this._argument=null,this._enumValue=null,this._getFieldDef=null!=n?n:on,t&&($e(t)&&this._inputTypeStack.push(t),je(t)&&this._parentTypeStack.push(t),Qe(t)&&this._typeStack.push(t))}get[Symbol.toStringTag](){return"TypeInfo"}getType(){if(this._typeStack.length>0)return this._typeStack[this._typeStack.length-1]}getParentType(){if(this._parentTypeStack.length>0)return this._parentTypeStack[this._parentTypeStack.length-1]}getInputType(){if(this._inputTypeStack.length>0)return this._inputTypeStack[this._inputTypeStack.length-1]}getParentInputType(){if(this._inputTypeStack.length>1)return this._inputTypeStack[this._inputTypeStack.length-2]}getFieldDef(){if(this._fieldDefStack.length>0)return this._fieldDefStack[this._fieldDefStack.length-1]}getDefaultValue(){if(this._defaultValueStack.length>0)return this._defaultValueStack[this._defaultValueStack.length-1]}getDirective(){return this._directive}getArgument(){return this._argument}getEnumValue(){return this._enumValue}enter(e){const t=this._schema;switch(e.kind){case m.SELECTION_SET:{const e=Je(this.getType());this._parentTypeStack.push(je(e)?e:void 0);break}case m.FIELD:{const n=this.getParentType();let r,i;n&&(r=this._getFieldDef(t,n,e),r&&(i=r.type)),this._fieldDefStack.push(r),this._typeStack.push(Qe(i)?i:void 0);break}case m.DIRECTIVE:this._directive=t.getDirective(e.name.value);break;case m.OPERATION_DEFINITION:{const n=t.getRootType(e.operation);this._typeStack.push(De(n)?n:void 0);break}case m.INLINE_FRAGMENT:case m.FRAGMENT_DEFINITION:{const n=e.typeCondition,r=n?rn(t,n):Je(this.getType());this._typeStack.push(Qe(r)?r:void 0);break}case m.VARIABLE_DEFINITION:{const n=rn(t,e.type);this._inputTypeStack.push($e(n)?n:void 0);break}case m.ARGUMENT:{var n;let t,r;const i=null!==(n=this.getDirective())&&void 0!==n?n:this.getFieldDef();i&&(t=i.args.find((t=>t.name===e.name.value)),t&&(r=t.type)),this._argument=t,this._defaultValueStack.push(t?t.defaultValue:void 0),this._inputTypeStack.push($e(r)?r:void 0);break}case m.LIST:{const e=Be(this.getInputType()),t=Re(e)?e.ofType:e;this._defaultValueStack.push(void 0),this._inputTypeStack.push($e(t)?t:void 0);break}case m.OBJECT_FIELD:{const t=Je(this.getInputType());let n,r;Fe(t)&&(r=t.getFields()[e.name.value],r&&(n=r.type)),this._defaultValueStack.push(r?r.defaultValue:void 0),this._inputTypeStack.push($e(n)?n:void 0);break}case m.ENUM:{const t=Je(this.getInputType());let n;xe(t)&&(n=t.getValue(e.value)),this._enumValue=n;break}}}leave(e){switch(e.kind){case m.SELECTION_SET:this._parentTypeStack.pop();break;case m.FIELD:this._fieldDefStack.pop(),this._typeStack.pop();break;case m.DIRECTIVE:this._directive=null;break;case m.OPERATION_DEFINITION:case m.INLINE_FRAGMENT:case m.FRAGMENT_DEFINITION:this._typeStack.pop();break;case m.VARIABLE_DEFINITION:this._inputTypeStack.pop();break;case m.ARGUMENT:this._argument=null,this._defaultValueStack.pop(),this._inputTypeStack.pop();break;case m.LIST:case m.OBJECT_FIELD:this._defaultValueStack.pop(),this._inputTypeStack.pop();break;case m.ENUM:this._enumValue=null}}}function on(e,t,n){const r=n.name.value;return r===$t.name&&e.getQueryType()===t?$t:r===Qt.name&&e.getQueryType()===t?Qt:r===Ut.name&&je(t)?Ut:De(t)||we(t)?t.getFields()[r]:void 0}function sn(e,t){return{enter(...n){const r=n[0];e.enter(r);const i=ve(t,r.kind).enter;if(i){const o=i.apply(t,n);return void 0!==o&&(e.leave(r),d(o)&&e.enter(o)),o}},leave(...n){const r=n[0],i=ve(t,r.kind).leave;let o;return i&&(o=i.apply(t,n)),e.leave(r),o}}}function an(e){return e.kind===m.OPERATION_DEFINITION||e.kind===m.FRAGMENT_DEFINITION}function cn(e){return e.kind===m.SCALAR_TYPE_DEFINITION||e.kind===m.OBJECT_TYPE_DEFINITION||e.kind===m.INTERFACE_TYPE_DEFINITION||e.kind===m.UNION_TYPE_DEFINITION||e.kind===m.ENUM_TYPE_DEFINITION||e.kind===m.INPUT_OBJECT_TYPE_DEFINITION}function un(e){return e.kind===m.SCALAR_TYPE_EXTENSION||e.kind===m.OBJECT_TYPE_EXTENSION||e.kind===m.INTERFACE_TYPE_EXTENSION||e.kind===m.UNION_TYPE_EXTENSION||e.kind===m.ENUM_TYPE_EXTENSION||e.kind===m.INPUT_OBJECT_TYPE_EXTENSION}function ln(e){const t=Object.create(null),n=e.getSchema(),r=n?n.getDirectives():bt;for(const e of r)t[e.name]=e.args.map((e=>e.name));const i=e.getDocument().definitions;for(const e of i)if(e.kind===m.DIRECTIVE_DEFINITION){var o;const n=null!==(o=e.arguments)&&void 0!==o?o:[];t[e.name.value]=n.map((e=>e.name.value))}return{Directive(n){const r=n.name.value,i=t[r];if(n.arguments&&i)for(const t of n.arguments){const n=t.name.value;if(!i.includes(n)){const o=ae(n,i);e.reportError(new GraphQLError(`Unknown argument "${n}" on directive "@${r}".`+W(o),t))}}return!1}}}function pn(e){const t=Object.create(null),n=e.getSchema(),i=n?n.getDirectives():bt;for(const e of i)t[e.name]=e.locations;const o=e.getDocument().definitions;for(const e of o)e.kind===m.DIRECTIVE_DEFINITION&&(t[e.name.value]=e.locations.map((e=>e.value)));return{Directive(n,i,o,s,a){const c=n.name.value,u=t[c];if(!u)return void e.reportError(new GraphQLError(`Unknown directive "@${c}".`,n));const l=function(e){const t=e[e.length-1];switch("kind"in t||r(!1),t.kind){case m.OPERATION_DEFINITION:return function(e){switch(e){case f.QUERY:return h.QUERY;case f.MUTATION:return h.MUTATION;case f.SUBSCRIPTION:return h.SUBSCRIPTION}}(t.operation);case m.FIELD:return h.FIELD;case m.FRAGMENT_SPREAD:return h.FRAGMENT_SPREAD;case m.INLINE_FRAGMENT:return h.INLINE_FRAGMENT;case m.FRAGMENT_DEFINITION:return h.FRAGMENT_DEFINITION;case m.VARIABLE_DEFINITION:return h.VARIABLE_DEFINITION;case m.SCHEMA_DEFINITION:case m.SCHEMA_EXTENSION:return h.SCHEMA;case m.SCALAR_TYPE_DEFINITION:case m.SCALAR_TYPE_EXTENSION:return h.SCALAR;case m.OBJECT_TYPE_DEFINITION:case m.OBJECT_TYPE_EXTENSION:return h.OBJECT;case m.FIELD_DEFINITION:return h.FIELD_DEFINITION;case m.INTERFACE_TYPE_DEFINITION:case m.INTERFACE_TYPE_EXTENSION:return h.INTERFACE;case m.UNION_TYPE_DEFINITION:case m.UNION_TYPE_EXTENSION:return h.UNION;case m.ENUM_TYPE_DEFINITION:case m.ENUM_TYPE_EXTENSION:return h.ENUM;case m.ENUM_VALUE_DEFINITION:return h.ENUM_VALUE;case m.INPUT_OBJECT_TYPE_DEFINITION:case m.INPUT_OBJECT_TYPE_EXTENSION:return h.INPUT_OBJECT;case m.INPUT_VALUE_DEFINITION:{const t=e[e.length-3];return"kind"in t||r(!1),t.kind===m.INPUT_OBJECT_TYPE_DEFINITION?h.INPUT_FIELD_DEFINITION:h.ARGUMENT_DEFINITION}default:r(!1,"Unexpected kind: "+Y(t.kind))}}(a);l&&!u.includes(l)&&e.reportError(new GraphQLError(`Directive "@${c}" may not be used on ${l}.`,n))}}}function dn(e){const t=e.getSchema(),n=t?t.getTypeMap():Object.create(null),r=Object.create(null);for(const t of e.getDocument().definitions)cn(t)&&(r[t.name.value]=!0);const i=[...Object.keys(n),...Object.keys(r)];return{NamedType(t,o,s,a,c){const u=t.name.value;if(!n[u]&&!r[u]){var l;const n=null!==(l=c[2])&&void 0!==l?l:s,r=null!=n&&("kind"in(p=n)&&(function(e){return e.kind===m.SCHEMA_DEFINITION||cn(e)||e.kind===m.DIRECTIVE_DEFINITION}(p)||function(e){return e.kind===m.SCHEMA_EXTENSION||un(e)}(p)));if(r&&fn.includes(u))return;const o=ae(u,r?fn.concat(i):i);e.reportError(new GraphQLError(`Unknown type "${u}".`+W(o),t))}var p}}}const fn=[...vt,...jt].map((e=>e.name));function hn(e){const t=[],n=[];return{OperationDefinition:e=>(t.push(e),!1),FragmentDefinition:e=>(n.push(e),!1),Document:{leave(){const r=Object.create(null);for(const n of t)for(const t of e.getRecursivelyReferencedFragments(n))r[t.name.value]=!0;for(const t of n){const n=t.name.value;!0!==r[n]&&e.reportError(new GraphQLError(`Fragment "${n}" is never used.`,t))}}}}}function mn(e,t){const n=[e];for(;Re(Be(n[n.length-1]));){const e=Ce(Be(n[n.length-1])).ofType;n.push(e)}if(t){const e=he(t,{RequiredDesignator:{leave({element:e}){if(e)return new GraphQLNonNull(Be(e));const t=n.pop();return new GraphQLNonNull(Be(t))}},OptionalDesignator:{leave({element:e}){if(e)return Be(e);return Be(n.pop())}},ListNullability:{leave({element:e}){let r=n.pop();if(Re(Be(r))||(r=n.pop()),!r)throw new GraphQLError("List nullability modifier is too deep.",t);const i=Ge(r);return e?i?new GraphQLNonNull(new GraphQLList(e)):new GraphQLList(e):r}}});if(n.length>0)throw new GraphQLError("List nullability modifier is too shallow.",t);return e}return e}function vn(e){switch(e.kind){case m.OBJECT:return{...e,fields:(t=e.fields,t.map((e=>({...e,value:vn(e.value)}))).sort(((e,t)=>re(e.name.value,t.name.value))))};case m.LIST:return{...e,values:e.values.map(vn)};case m.INT:case m.FLOAT:case m.STRING:case m.BOOLEAN:case m.NULL:case m.ENUM:case m.VARIABLE:return e}var t}function yn(e){return Array.isArray(e)?e.map((([e,t])=>`subfields "${e}" conflict because `+yn(t))).join(" and "):e}function En(e,t,n,r,i,o,s){const a=e.getFragment(s);if(!a)return;const[c,u]=bn(e,n,a);if(o!==c){Nn(e,t,n,r,i,o,c);for(const a of u)r.has(a,s,i)||(r.add(a,s,i),En(e,t,n,r,i,o,a))}}function Tn(e,t,n,r,i,o,s){if(o===s)return;if(r.has(o,s,i))return;r.add(o,s,i);const a=e.getFragment(o),c=e.getFragment(s);if(!a||!c)return;const[u,l]=bn(e,n,a),[p,d]=bn(e,n,c);Nn(e,t,n,r,i,u,p);for(const s of d)Tn(e,t,n,r,i,o,s);for(const o of l)Tn(e,t,n,r,i,o,s)}function Nn(e,t,n,r,i,o,s){for(const[a,c]of Object.entries(o)){const o=s[a];if(o)for(const s of c)for(const c of o){const o=In(e,n,r,i,a,s,c);o&&t.push(o)}}}function In(e,t,n,r,i,o,s){const[a,c,u]=o,[l,p,d]=s,f=r||a!==l&&De(a)&&De(l);if(!f){const e=c.name.value,t=p.name.value;if(e!==t)return[[i,`"${e}" and "${t}" are different fields`],[c],[p]];if(gn(c)!==gn(p))return[[i,"they have differing arguments"],[c],[p]]}const h=null==u?void 0:u.type,m=null==d?void 0:d.type;if(h&&m){const e=mn(h,c.required),t=mn(m,p.required);if(_n(e,t))return[[i,`they return conflicting types "${Y(e)}" and "${Y(t)}"`],[c],[p]]}const v=c.selectionSet,y=p.selectionSet;if(v&&y){const r=function(e,t,n,r,i,o,s,a){const c=[],[u,l]=On(e,t,i,o),[p,d]=On(e,t,s,a);Nn(e,c,t,n,r,u,p);for(const i of d)En(e,c,t,n,r,u,i);for(const i of l)En(e,c,t,n,r,p,i);for(const i of l)for(const o of d)Tn(e,c,t,n,r,i,o);return c}(e,t,n,f,Je(h),v,Je(m),y);return function(e,t,n,r){if(e.length>0)return[[t,e.map((([e])=>e))],[n,...e.map((([,e])=>e)).flat()],[r,...e.map((([,,e])=>e)).flat()]]}(r,i,c,p)}}function gn(e){var t;const n=null!==(t=e.arguments)&&void 0!==t?t:[];return ye(vn({kind:m.OBJECT,fields:n.map((e=>({kind:m.OBJECT_FIELD,name:e.name,value:e.value})))}))}function _n(e,t){return Re(e)?!Re(t)||_n(e.ofType,t.ofType):!!Re(t)||(Ge(e)?!Ge(t)||_n(e.ofType,t.ofType):!!Ge(t)||!(!Ue(e)&&!Ue(t))&&e!==t)}function On(e,t,n,r){const i=t.get(r);if(i)return i;const o=Object.create(null),s=Object.create(null);Ln(e,n,r,o,s);const a=[o,Object.keys(s)];return t.set(r,a),a}function bn(e,t,n){const r=t.get(n.selectionSet);if(r)return r;const i=rn(e.getSchema(),n.typeCondition);return On(e,t,i,n.selectionSet)}function Ln(e,t,n,r,i){for(const o of n.selections)switch(o.kind){case m.FIELD:{const e=o.name.value;let n;(De(t)||we(t))&&(n=t.getFields()[e]);const i=o.alias?o.alias.value:e;r[i]||(r[i]=[]),r[i].push([t,o,n]);break}case m.FRAGMENT_SPREAD:i[o.name.value]=!0;break;case m.INLINE_FRAGMENT:{const n=o.typeCondition,s=n?rn(e.getSchema(),n):t;Ln(e,s,o.selectionSet,r,i);break}}}class PairSet{constructor(){this._data=new Map}has(e,t,n){var r;const[i,o]=ee.name));const o=e.getDocument().definitions;for(const e of o)if(e.kind===m.DIRECTIVE_DEFINITION){var s;const t=null!==(s=e.arguments)&&void 0!==s?s:[];n[e.name.value]=ee(t.filter(Dn),(e=>e.name.value))}return{Directive:{leave(t){const r=t.name.value,i=n[r];if(i){var o;const n=null!==(o=t.arguments)&&void 0!==o?o:[],s=new Set(n.map((e=>e.name.value)));for(const[n,o]of Object.entries(i))if(!s.has(n)){const i=Se(o.type)?Y(o.type):ye(o.type);e.reportError(new GraphQLError(`Directive "@${r}" argument "${n}" of type "${i}" is required, but it was not provided.`,t))}}}}}}function Dn(e){return e.type.kind===m.NON_NULL_TYPE&&null==e.defaultValue}function wn(e,t,n){if(e){if(e.kind===m.VARIABLE){const r=e.name.value;if(null==n||void 0===n[r])return;const i=n[r];if(null===i&&Ge(t))return;return i}if(Ge(t)){if(e.kind===m.NULL)return;return wn(e,t.ofType,n)}if(e.kind===m.NULL)return null;if(Re(t)){const r=t.ofType;if(e.kind===m.LIST){const t=[];for(const i of e.values)if(kn(i,n)){if(Ge(r))return;t.push(null)}else{const e=wn(i,r,n);if(void 0===e)return;t.push(e)}return t}const i=wn(e,r,n);if(void 0===i)return;return[i]}if(Fe(t)){if(e.kind!==m.OBJECT)return;const r=Object.create(null),i=ee(e.fields,(e=>e.name.value));for(const e of Object.values(t.getFields())){const t=i[e.name];if(!t||kn(t.value,n)){if(void 0!==e.defaultValue)r[e.name]=e.defaultValue;else if(Ge(e.type))return;continue}const o=wn(t.value,e.type,n);if(void 0===o)return;r[e.name]=o}return r}if(Ue(t)){let r;try{r=t.parseLiteral(e,n)}catch(e){return}if(void 0===r)return;return r}r(!1,"Unexpected input type: "+Y(t))}}function kn(e,t){return e.kind===m.VARIABLE&&(null==t||void 0===t[e.name.value])}function xn(e,t,n){var r;const i=null===(r=t.directives)||void 0===r?void 0:r.find((t=>t.name.value===e.name));if(i)return function(e,t,n){var r;const i={},o=ee(null!==(r=t.arguments)&&void 0!==r?r:[],(e=>e.name.value));for(const r of e.args){const e=r.name,c=r.type,u=o[e];if(!u){if(void 0!==r.defaultValue)i[e]=r.defaultValue;else if(Ge(c))throw new GraphQLError(`Argument "${e}" of required type "${Y(c)}" was not provided.`,t);continue}const l=u.value;let p=l.kind===m.NULL;if(l.kind===m.VARIABLE){const t=l.name.value;if(null==n||(s=n,a=t,!Object.prototype.hasOwnProperty.call(s,a))){if(void 0!==r.defaultValue)i[e]=r.defaultValue;else if(Ge(c))throw new GraphQLError(`Argument "${e}" of required type "${Y(c)}" was provided the variable "$${t}" which was not provided a runtime value.`,l);continue}p=null==n[t]}if(p&&Ge(c))throw new GraphQLError(`Argument "${e}" of non-null type "${Y(c)}" must not be null.`,l);const d=wn(l,c,n);if(void 0===d)throw new GraphQLError(`Argument "${e}" has invalid value ${ye(l)}.`,l);i[e]=d}var s,a;return i}(e,i,n)}function Fn(e,t,n,r,i){const o=new Map;return Rn(e,t,n,r,i,o,new Set),o}function Rn(e,t,n,r,i,o,s){for(const c of i.selections)switch(c.kind){case m.FIELD:{if(!Cn(n,c))continue;const e=(a=c).alias?a.alias.value:a.name.value,t=o.get(e);void 0!==t?t.push(c):o.set(e,[c]);break}case m.INLINE_FRAGMENT:if(!Cn(n,c)||!Gn(e,c,r))continue;Rn(e,t,n,r,c.selectionSet,o,s);break;case m.FRAGMENT_SPREAD:{const i=c.name.value;if(s.has(i)||!Cn(n,c))continue;s.add(i);const a=t[i];if(!a||!Gn(e,a,r))continue;Rn(e,t,n,r,a.selectionSet,o,s);break}}var a}function Cn(e,t){const n=xn(It,t,e);if(!0===(null==n?void 0:n.if))return!1;const r=xn(Nt,t,e);return!1!==(null==r?void 0:r.if)}function Gn(e,t,n){const r=t.typeCondition;if(!r)return!0;const i=rn(e,r);return i===n||!!Ve(i)&&e.isSubType(i,n)}function $n(e,t){const n=new Map;for(const r of e){const e=t(r),i=n.get(e);void 0===i?n.set(e,[r]):i.push(r)}return n}function Qn(e){return{Field:t,Directive:t};function t(t){var n;const r=$n(null!==(n=t.arguments)&&void 0!==n?n:[],(e=>e.name.value));for(const[t,n]of r)n.length>1&&e.reportError(new GraphQLError(`There can be only one argument named "${t}".`,n.map((e=>e.name))))}}function Un(e){const t=Object.create(null),n=e.getSchema(),r=n?n.getDirectives():bt;for(const e of r)t[e.name]=!e.isRepeatable;const i=e.getDocument().definitions;for(const e of i)e.kind===m.DIRECTIVE_DEFINITION&&(t[e.name.value]=!e.repeatable);const o=Object.create(null),s=Object.create(null);return{enter(n){if(!("directives"in n)||!n.directives)return;let r;if(n.kind===m.SCHEMA_DEFINITION||n.kind===m.SCHEMA_EXTENSION)r=o;else if(cn(n)||un(n)){const e=n.name.value;r=s[e],void 0===r&&(s[e]=r=Object.create(null))}else r=Object.create(null);for(const i of n.directives){const n=i.name.value;t[n]&&(r[n]?e.reportError(new GraphQLError(`The directive "@${n}" can only be used once at this location.`,[r[n],i])):r[n]=i)}}}}function jn(e,t){return!!(De(e)||we(e)||Fe(e))&&null!=e.getFields()[t]}function Vn(e){const t=[];let n=Object.create(null);return{ObjectValue:{enter(){t.push(n),n=Object.create(null)},leave(){const e=t.pop();e||r(!1),n=e}},ObjectField(t){const r=t.name.value;n[r]?e.reportError(new GraphQLError(`There can be only one input field named "${r}".`,[n[r],t.name])):n[r]=t.name}}}function Mn(e,t){const n=e.getInputType();if(!n)return;const r=Je(n);if(Ue(r))try{if(void 0===r.parseLiteral(t,void 0)){const r=Y(n);e.reportError(new GraphQLError(`Expected value of type "${r}", found ${ye(t)}.`,t))}}catch(r){const i=Y(n);r instanceof GraphQLError?e.reportError(r):e.reportError(new GraphQLError(`Expected value of type "${i}", found ${ye(t)}; `+r.message,t,void 0,void 0,void 0,r))}else{const r=Y(n);e.reportError(new GraphQLError(`Expected value of type "${r}", found ${ye(t)}.`,t))}}function Pn(e,t,n,r,i){if(Ge(r)&&!Ge(t)){if(!(null!=n&&n.kind!==m.NULL)&&!(void 0!==i))return!1;return at(e,t,r.ofType)}return at(e,t,r)}const Bn=Object.freeze([function(e){return{Document(t){for(const n of t.definitions)if(!an(n)){const t=n.kind===m.SCHEMA_DEFINITION||n.kind===m.SCHEMA_EXTENSION?"schema":'"'+n.name.value+'"';e.reportError(new GraphQLError(`The ${t} definition is not executable.`,n))}return!1}}},function(e){const t=Object.create(null);return{OperationDefinition(n){const r=n.name;return r&&(t[r.value]?e.reportError(new GraphQLError(`There can be only one operation named "${r.value}".`,[t[r.value],r])):t[r.value]=r),!1},FragmentDefinition:()=>!1}},function(e){let t=0;return{Document(e){t=e.definitions.filter((e=>e.kind===m.OPERATION_DEFINITION)).length},OperationDefinition(n){!n.name&&t>1&&e.reportError(new GraphQLError("This anonymous operation must be the only defined operation.",n))}}},function(e){return{OperationDefinition(t){if("subscription"===t.operation){const n=e.getSchema(),r=n.getSubscriptionType();if(r){const i=t.name?t.name.value:null,o=Object.create(null),s=e.getDocument(),a=Object.create(null);for(const e of s.definitions)e.kind===m.FRAGMENT_DEFINITION&&(a[e.name.value]=e);const c=Fn(n,a,o,r,t.selectionSet);if(c.size>1){const t=[...c.values()].slice(1).flat();e.reportError(new GraphQLError(null!=i?`Subscription "${i}" must select only one top level field.`:"Anonymous Subscription must select only one top level field.",t))}for(const t of c.values()){t[0].name.value.startsWith("__")&&e.reportError(new GraphQLError(null!=i?`Subscription "${i}" must not select an introspection top level field.`:"Anonymous Subscription must not select an introspection top level field.",t))}}}}}},dn,function(e){return{InlineFragment(t){const n=t.typeCondition;if(n){const t=rn(e.getSchema(),n);if(t&&!je(t)){const t=ye(n);e.reportError(new GraphQLError(`Fragment cannot condition on non composite type "${t}".`,n))}}},FragmentDefinition(t){const n=rn(e.getSchema(),t.typeCondition);if(n&&!je(n)){const n=ye(t.typeCondition);e.reportError(new GraphQLError(`Fragment "${t.name.value}" cannot condition on non composite type "${n}".`,t.typeCondition))}}}},function(e){return{VariableDefinition(t){const n=rn(e.getSchema(),t.type);if(void 0!==n&&!$e(n)){const n=t.variable.name.value,r=ye(t.type);e.reportError(new GraphQLError(`Variable "$${n}" cannot be non-input type "${r}".`,t.type))}}}},function(e){return{Field(t){const n=e.getType(),r=t.selectionSet;if(n)if(Ue(Je(n))){if(r){const i=t.name.value,o=Y(n);e.reportError(new GraphQLError(`Field "${i}" must not have a selection since type "${o}" has no subfields.`,r))}}else if(!r){const r=t.name.value,i=Y(n);e.reportError(new GraphQLError(`Field "${r}" of type "${i}" must have a selection of subfields. Did you mean "${r} { ... }"?`,t))}}}},function(e){return{Field(t){const n=e.getParentType();if(n){if(!e.getFieldDef()){const r=e.getSchema(),i=t.name.value;let o=W("to use an inline fragment on",function(e,t,n){if(!Ve(t))return[];const r=new Set,i=Object.create(null);for(const s of e.getPossibleTypes(t))if(s.getFields()[n]){r.add(s),i[s.name]=1;for(const e of s.getInterfaces()){var o;e.getFields()[n]&&(r.add(e),i[e.name]=(null!==(o=i[e.name])&&void 0!==o?o:0)+1)}}return[...r].sort(((t,n)=>{const r=i[n.name]-i[t.name];return 0!==r?r:we(t)&&e.isSubType(t,n)?-1:we(n)&&e.isSubType(n,t)?1:re(t.name,n.name)})).map((e=>e.name))}(r,n,i));""===o&&(o=W(function(e,t){if(De(e)||we(e)){return ae(t,Object.keys(e.getFields()))}return[]}(n,i))),e.reportError(new GraphQLError(`Cannot query field "${i}" on type "${n.name}".`+o,t))}}}}},function(e){const t=Object.create(null);return{OperationDefinition:()=>!1,FragmentDefinition(n){const r=n.name.value;return t[r]?e.reportError(new GraphQLError(`There can be only one fragment named "${r}".`,[t[r],n.name])):t[r]=n.name,!1}}},function(e){return{FragmentSpread(t){const n=t.name.value;e.getFragment(n)||e.reportError(new GraphQLError(`Unknown fragment "${n}".`,t.name))}}},hn,function(e){return{InlineFragment(t){const n=e.getType(),r=e.getParentType();if(je(n)&&je(r)&&!ct(e.getSchema(),n,r)){const i=Y(r),o=Y(n);e.reportError(new GraphQLError(`Fragment cannot be spread here as objects of type "${i}" can never be of type "${o}".`,t))}},FragmentSpread(t){const n=t.name.value,r=function(e,t){const n=e.getFragment(t);if(n){const t=rn(e.getSchema(),n.typeCondition);if(je(t))return t}}(e,n),i=e.getParentType();if(r&&i&&!ct(e.getSchema(),r,i)){const o=Y(i),s=Y(r);e.reportError(new GraphQLError(`Fragment "${n}" cannot be spread here as objects of type "${o}" can never be of type "${s}".`,t))}}}},function(e){const t=Object.create(null),n=[],r=Object.create(null);return{OperationDefinition:()=>!1,FragmentDefinition:e=>(i(e),!1)};function i(o){if(t[o.name.value])return;const s=o.name.value;t[s]=!0;const a=e.getFragmentSpreads(o.selectionSet);if(0!==a.length){r[s]=n.length;for(const t of a){const o=t.name.value,s=r[o];if(n.push(t),void 0===s){const t=e.getFragment(o);t&&i(t)}else{const t=n.slice(s),r=t.slice(0,-1).map((e=>'"'+e.name.value+'"')).join(", ");e.reportError(new GraphQLError(`Cannot spread fragment "${o}" within itself`+(""!==r?` via ${r}.`:"."),t))}n.pop()}r[s]=void 0}}},function(e){return{OperationDefinition(t){var n;const r=$n(null!==(n=t.variableDefinitions)&&void 0!==n?n:[],(e=>e.variable.name.value));for(const[t,n]of r)n.length>1&&e.reportError(new GraphQLError(`There can be only one variable named "$${t}".`,n.map((e=>e.variable.name))))}}},function(e){let t=Object.create(null);return{OperationDefinition:{enter(){t=Object.create(null)},leave(n){const r=e.getRecursiveVariableUsages(n);for(const{node:i}of r){const r=i.name.value;!0!==t[r]&&e.reportError(new GraphQLError(n.name?`Variable "$${r}" is not defined by operation "${n.name.value}".`:`Variable "$${r}" is not defined.`,[i,n]))}}},VariableDefinition(e){t[e.variable.name.value]=!0}}},function(e){let t=[];return{OperationDefinition:{enter(){t=[]},leave(n){const r=Object.create(null),i=e.getRecursiveVariableUsages(n);for(const{node:e}of i)r[e.name.value]=!0;for(const i of t){const t=i.variable.name.value;!0!==r[t]&&e.reportError(new GraphQLError(n.name?`Variable "$${t}" is never used in operation "${n.name.value}".`:`Variable "$${t}" is never used.`,i))}}},VariableDefinition(e){t.push(e)}}},pn,Un,function(e){return{...ln(e),Argument(t){const n=e.getArgument(),r=e.getFieldDef(),i=e.getParentType();if(!n&&r&&i){const n=t.name.value,o=ae(n,r.args.map((e=>e.name)));e.reportError(new GraphQLError(`Unknown argument "${n}" on field "${i.name}.${r.name}".`+W(o),t))}}}},Qn,function(e){return{ListValue(t){if(!Re(Be(e.getParentInputType())))return Mn(e,t),!1},ObjectValue(t){const n=Je(e.getInputType());if(!Fe(n))return Mn(e,t),!1;const r=ee(t.fields,(e=>e.name.value));for(const i of Object.values(n.getFields())){if(!r[i.name]&&ot(i)){const r=Y(i.type);e.reportError(new GraphQLError(`Field "${n.name}.${i.name}" of required type "${r}" was not provided.`,t))}}},ObjectField(t){const n=Je(e.getParentInputType());if(!e.getInputType()&&Fe(n)){const r=ae(t.name.value,Object.keys(n.getFields()));e.reportError(new GraphQLError(`Field "${t.name.value}" is not defined by type "${n.name}".`+W(r),t))}},NullValue(t){const n=e.getInputType();Ge(n)&&e.reportError(new GraphQLError(`Expected value of type "${Y(n)}", found ${ye(t)}.`,t))},EnumValue:t=>Mn(e,t),IntValue:t=>Mn(e,t),FloatValue:t=>Mn(e,t),StringValue:t=>Mn(e,t),BooleanValue:t=>Mn(e,t)}},function(e){return{...An(e),Field:{leave(t){var n;const r=e.getFieldDef();if(!r)return!1;const i=new Set(null===(n=t.arguments)||void 0===n?void 0:n.map((e=>e.name.value)));for(const n of r.args)if(!i.has(n.name)&&tt(n)){const i=Y(n.type);e.reportError(new GraphQLError(`Field "${r.name}" argument "${n.name}" of type "${i}" is required, but it was not provided.`,t))}}}}},function(e){let t=Object.create(null);return{OperationDefinition:{enter(){t=Object.create(null)},leave(n){const r=e.getRecursiveVariableUsages(n);for(const{node:n,type:i,defaultValue:o}of r){const r=n.name.value,s=t[r];if(s&&i){const t=e.getSchema(),a=rn(t,s.type);if(a&&!Pn(t,a,s.defaultValue,i,o)){const t=Y(a),o=Y(i);e.reportError(new GraphQLError(`Variable "$${r}" of type "${t}" used in position expecting type "${o}".`,[s,n]))}}}}},VariableDefinition(e){t[e.variable.name.value]=e}}},function(e){return{Field(t){const n=e.getFieldDef(),r=t.required;if(n&&r){const i=function(e){let t=e,n=0;for(;Re(Be(t));){t=Ce(Be(t)).ofType,n+=1}return n}(n.type),o=he(r,{RequiredDesignator:{leave:({element:e})=>null!=e?e:0},OptionalDesignator:{leave:({element:e})=>null!=e?e:0},ListNullability:{leave:({element:e})=>(null!=e?e:0)+1}});i>o?e.reportError(new GraphQLError("List nullability modifier is too shallow.",t.required)):i1)for(let i=0;i0&&e.reportError(new GraphQLError("Must provide only one schema definition.",t)),++s)}}},function(e){const t=e.getSchema(),n=Object.create(null),r=t?{query:t.getQueryType(),mutation:t.getMutationType(),subscription:t.getSubscriptionType()}:{};return{SchemaDefinition:i,SchemaExtension:i};function i(t){var i;const o=null!==(i=t.operationTypes)&&void 0!==i?i:[];for(const t of o){const i=t.operation,o=n[i];r[i]?e.reportError(new GraphQLError(`Type for ${i} already defined in the schema. It cannot be redefined.`,t)):o?e.reportError(new GraphQLError(`There can be only one ${i} type in schema.`,[o,t])):n[i]=t}return!1}},function(e){const t=Object.create(null),n=e.getSchema();return{ScalarTypeDefinition:r,ObjectTypeDefinition:r,InterfaceTypeDefinition:r,UnionTypeDefinition:r,EnumTypeDefinition:r,InputObjectTypeDefinition:r};function r(r){const i=r.name.value;if(null==n||!n.getType(i))return t[i]?e.reportError(new GraphQLError(`There can be only one type named "${i}".`,[t[i],r.name])):t[i]=r.name,!1;e.reportError(new GraphQLError(`Type "${i}" already exists in the schema. It cannot also be defined in this type definition.`,r.name))}},function(e){const t=e.getSchema(),n=t?t.getTypeMap():Object.create(null),r=Object.create(null);return{EnumTypeDefinition:i,EnumTypeExtension:i};function i(t){var i;const o=t.name.value;r[o]||(r[o]=Object.create(null));const s=null!==(i=t.values)&&void 0!==i?i:[],a=r[o];for(const t of s){const r=t.name.value,i=n[o];xe(i)&&i.getValue(r)?e.reportError(new GraphQLError(`Enum value "${o}.${r}" already exists in the schema. It cannot also be defined in this type extension.`,t.name)):a[r]?e.reportError(new GraphQLError(`Enum value "${o}.${r}" can only be defined once.`,[a[r],t.name])):a[r]=t.name}return!1}},function(e){const t=e.getSchema(),n=t?t.getTypeMap():Object.create(null),r=Object.create(null);return{InputObjectTypeDefinition:i,InputObjectTypeExtension:i,InterfaceTypeDefinition:i,InterfaceTypeExtension:i,ObjectTypeDefinition:i,ObjectTypeExtension:i};function i(t){var i;const o=t.name.value;r[o]||(r[o]=Object.create(null));const s=null!==(i=t.fields)&&void 0!==i?i:[],a=r[o];for(const t of s){const r=t.name.value;jn(n[o],r)?e.reportError(new GraphQLError(`Field "${o}.${r}" already exists in the schema. It cannot also be defined in this type extension.`,t.name)):a[r]?e.reportError(new GraphQLError(`Field "${o}.${r}" can only be defined once.`,[a[r],t.name])):a[r]=t.name}return!1}},function(e){return{DirectiveDefinition(e){var t;const r=null!==(t=e.arguments)&&void 0!==t?t:[];return n(`@${e.name.value}`,r)},InterfaceTypeDefinition:t,InterfaceTypeExtension:t,ObjectTypeDefinition:t,ObjectTypeExtension:t};function t(e){var t;const r=e.name.value,i=null!==(t=e.fields)&&void 0!==t?t:[];for(const e of i){var o;n(`${r}.${e.name.value}`,null!==(o=e.arguments)&&void 0!==o?o:[])}return!1}function n(t,n){const r=$n(n,(e=>e.name.value));for(const[n,i]of r)i.length>1&&e.reportError(new GraphQLError(`Argument "${t}(${n}:)" can only be defined once.`,i.map((e=>e.name))));return!1}},function(e){const t=Object.create(null),n=e.getSchema();return{DirectiveDefinition(r){const i=r.name.value;if(null==n||!n.getDirective(i))return t[i]?e.reportError(new GraphQLError(`There can be only one directive named "@${i}".`,[t[i],r.name])):t[i]=r.name,!1;e.reportError(new GraphQLError(`Directive "@${i}" already exists in the schema. It cannot be redefined.`,r.name))}}},dn,pn,Un,function(e){const t=e.getSchema(),n=Object.create(null);for(const t of e.getDocument().definitions)cn(t)&&(n[t.name.value]=t);return{ScalarTypeExtension:i,ObjectTypeExtension:i,InterfaceTypeExtension:i,UnionTypeExtension:i,EnumTypeExtension:i,InputObjectTypeExtension:i};function i(i){const o=i.name.value,s=n[o],a=null==t?void 0:t.getType(o);let c;if(s?c=Sn[s.kind]:a&&(c=function(e){if(Ae(e))return m.SCALAR_TYPE_EXTENSION;if(De(e))return m.OBJECT_TYPE_EXTENSION;if(we(e))return m.INTERFACE_TYPE_EXTENSION;if(ke(e))return m.UNION_TYPE_EXTENSION;if(xe(e))return m.ENUM_TYPE_EXTENSION;if(Fe(e))return m.INPUT_OBJECT_TYPE_EXTENSION;r(!1,"Unexpected type: "+Y(e))}(a)),c){if(c!==i.kind){const t=function(e){switch(e){case m.SCALAR_TYPE_EXTENSION:return"scalar";case m.OBJECT_TYPE_EXTENSION:return"object";case m.INTERFACE_TYPE_EXTENSION:return"interface";case m.UNION_TYPE_EXTENSION:return"union";case m.ENUM_TYPE_EXTENSION:return"enum";case m.INPUT_OBJECT_TYPE_EXTENSION:return"input object";default:r(!1,"Unexpected kind: "+Y(e))}}(i.kind);e.reportError(new GraphQLError(`Cannot extend non-${t} type "${o}".`,s?[s,i]:i))}}else{const r=ae(o,Object.keys({...n,...null==t?void 0:t.getTypeMap()}));e.reportError(new GraphQLError(`Cannot extend type "${o}" because it is not defined.`+W(r),i.name))}}},ln,Qn,Vn,An]);class ASTValidationContext{constructor(e,t){this._ast=e,this._fragments=void 0,this._fragmentSpreads=new Map,this._recursivelyReferencedFragments=new Map,this._onError=t}get[Symbol.toStringTag](){return"ASTValidationContext"}reportError(e){this._onError(e)}getDocument(){return this._ast}getFragment(e){let t;if(this._fragments)t=this._fragments;else{t=Object.create(null);for(const e of this.getDocument().definitions)e.kind===m.FRAGMENT_DEFINITION&&(t[e.name.value]=e);this._fragments=t}return t[e]}getFragmentSpreads(e){let t=this._fragmentSpreads.get(e);if(!t){t=[];const n=[e];let r;for(;r=n.pop();)for(const e of r.selections)e.kind===m.FRAGMENT_SPREAD?t.push(e):e.selectionSet&&n.push(e.selectionSet);this._fragmentSpreads.set(e,t)}return t}getRecursivelyReferencedFragments(e){let t=this._recursivelyReferencedFragments.get(e);if(!t){t=[];const n=Object.create(null),r=[e.selectionSet];let i;for(;i=r.pop();)for(const e of this.getFragmentSpreads(i)){const i=e.name.value;if(!0!==n[i]){n[i]=!0;const e=this.getFragment(i);e&&(t.push(e),r.push(e.selectionSet))}}this._recursivelyReferencedFragments.set(e,t)}return t}}class SDLValidationContext extends ASTValidationContext{constructor(e,t,n){super(e,n),this._schema=t}get[Symbol.toStringTag](){return"SDLValidationContext"}getSchema(){return this._schema}}class ValidationContext extends ASTValidationContext{constructor(e,t,n,r){super(t,r),this._schema=e,this._typeInfo=n,this._variableUsages=new Map,this._recursiveVariableUsages=new Map}get[Symbol.toStringTag](){return"ValidationContext"}getSchema(){return this._schema}getVariableUsages(e){let t=this._variableUsages.get(e);if(!t){const n=[],r=new TypeInfo(this._schema);he(e,sn(r,{VariableDefinition:()=>!1,Variable(e){n.push({node:e,type:r.getInputType(),defaultValue:r.getDefaultValue()})}})),t=n,this._variableUsages.set(e,t)}return t}getRecursiveVariableUsages(e){let t=this._recursiveVariableUsages.get(e);if(!t){t=this.getVariableUsages(e);for(const n of this.getRecursivelyReferencedFragments(e))t=t.concat(this.getVariableUsages(n));this._recursiveVariableUsages.set(e,t)}return t}getType(){return this._typeInfo.getType()}getParentType(){return this._typeInfo.getParentType()}getInputType(){return this._typeInfo.getInputType()}getParentInputType(){return this._typeInfo.getParentInputType()}getFieldDef(){return this._typeInfo.getFieldDef()}getDirective(){return this._typeInfo.getDirective()}getArgument(){return this._typeInfo.getArgument()}getEnumValue(){return this._typeInfo.getEnumValue()}}function Jn(e,n,r=Bn,i,o=new TypeInfo(e)){var s;const a=null!==(s=null==i?void 0:i.maxErrors)&&void 0!==s?s:100;n||t(!1,"Must provide document."),function(e){const t=Bt(e);if(0!==t.length)throw new Error(t.map((e=>e.message)).join("\n\n"))}(e);const c=Object.freeze({}),u=[],l=new ValidationContext(e,n,o,(e=>{if(u.length>=a)throw u.push(new GraphQLError("Too many validation errors, error limit reached. Validation aborted.")),c;u.push(e)})),p=me(r.map((e=>e(l))));try{he(n,sn(o,p))}catch(e){if(e!==c)throw e}return u}function qn(e,t,n=Yn){const r=[],i=new SDLValidationContext(e,t,(e=>{r.push(e)}));return he(e,me(n.map((e=>e(i))))),r}function Kn(e,r){n(e)&&n(e.__schema)||t(!1,`Invalid or incomplete introspection result. Ensure that you are passing "data" property of introspection response and no "errors" was returned alongside: ${Y(e)}.`);const i=e.__schema,o=te(i.types,(e=>e.name),(e=>function(e){if(null!=e&&null!=e.name&&null!=e.kind)switch(e.kind){case Ct.SCALAR:return new GraphQLScalarType({name:(r=e).name,description:r.description,specifiedByURL:r.specifiedByURL});case Ct.OBJECT:return new GraphQLObjectType({name:(n=e).name,description:n.description,interfaces:()=>h(n),fields:()=>m(n)});case Ct.INTERFACE:return new GraphQLInterfaceType({name:(t=e).name,description:t.description,interfaces:()=>h(t),fields:()=>m(t)});case Ct.UNION:return function(e){if(!e.possibleTypes){const t=Y(e);throw new Error(`Introspection result missing possibleTypes: ${t}.`)}return new GraphQLUnionType({name:e.name,description:e.description,types:()=>e.possibleTypes.map(d)})}(e);case Ct.ENUM:return function(e){if(!e.enumValues){const t=Y(e);throw new Error(`Introspection result missing enumValues: ${t}.`)}return new GraphQLEnumType({name:e.name,description:e.description,values:te(e.enumValues,(e=>e.name),(e=>({description:e.description,deprecationReason:e.deprecationReason})))})}(e);case Ct.INPUT_OBJECT:return function(e){if(!e.inputFields){const t=Y(e);throw new Error(`Introspection result missing inputFields: ${t}.`)}return new GraphQLInputObjectType({name:e.name,description:e.description,fields:()=>E(e.inputFields)})}(e)}var t;var n;var r;const i=Y(e);throw new Error(`Invalid or incomplete introspection result. Ensure that a full introspection query is used in order to build a client schema: ${i}.`)}(e)));for(const e of[...vt,...jt])o[e.name]&&(o[e.name]=e);const s=i.queryType?d(i.queryType):null,a=i.mutationType?d(i.mutationType):null,c=i.subscriptionType?d(i.subscriptionType):null,u=i.directives?i.directives.map((function(e){if(!e.args){const t=Y(e);throw new Error(`Introspection result missing directive args: ${t}.`)}if(!e.locations){const t=Y(e);throw new Error(`Introspection result missing directive locations: ${t}.`)}return new GraphQLDirective({name:e.name,description:e.description,isRepeatable:e.isRepeatable,locations:e.locations.slice(),args:E(e.args)})})):[];return new GraphQLSchema({description:i.description,query:s,mutation:a,subscription:c,types:Object.values(o),directives:u,assumeValid:null==r?void 0:r.assumeValid});function l(e){if(e.kind===Ct.LIST){const t=e.ofType;if(!t)throw new Error("Decorated type deeper than introspection query.");return new GraphQLList(l(t))}if(e.kind===Ct.NON_NULL){const t=e.ofType;if(!t)throw new Error("Decorated type deeper than introspection query.");const n=l(t);return new GraphQLNonNull(function(e){if(!Pe(e))throw new Error(`Expected ${Y(e)} to be a GraphQL nullable type.`);return e}(n))}return p(e)}function p(e){const t=e.name;if(!t)throw new Error(`Unknown type reference: ${Y(e)}.`);const n=o[t];if(!n)throw new Error(`Invalid or incomplete schema, unknown type: ${t}. Ensure that a full introspection query is used in order to build a client schema.`);return n}function d(e){return function(e){if(!De(e))throw new Error(`Expected ${Y(e)} to be a GraphQL Object type.`);return e}(p(e))}function f(e){return function(e){if(!we(e))throw new Error(`Expected ${Y(e)} to be a GraphQL Interface type.`);return e}(p(e))}function h(e){if(null===e.interfaces&&e.kind===Ct.INTERFACE)return[];if(!e.interfaces){const t=Y(e);throw new Error(`Introspection result missing interfaces: ${t}.`)}return e.interfaces.map(f)}function m(e){if(!e.fields)throw new Error(`Introspection result missing fields: ${Y(e)}.`);return te(e.fields,(e=>e.name),y)}function y(e){const t=l(e.type);if(!Qe(t)){const e=Y(t);throw new Error(`Introspection must provide output type for fields, but received: ${e}.`)}if(!e.args){const t=Y(e);throw new Error(`Introspection result missing field args: ${t}.`)}return{description:e.description,deprecationReason:e.deprecationReason,type:t,args:E(e.args)}}function E(e){return te(e,(e=>e.name),T)}function T(e){const t=l(e.type);if(!$e(t)){const e=Y(t);throw new Error(`Introspection must provide input type for arguments, but received: ${e}.`)}const n=null!=e.defaultValue?wn(function(e,t){const n=new Parser(e,t);n.expectToken(v.SOF);const r=n.parseValueLiteral(!1);return n.expectToken(v.EOF),r}(e.defaultValue),t):void 0;return{description:e.description,type:t,defaultValue:n,deprecationReason:e.deprecationReason}}}function Xn(e,n,r){Mt(e),null!=n&&n.kind===m.DOCUMENT||t(!1,"Must provide valid Document AST."),!0!==(null==r?void 0:r.assumeValid)&&!0!==(null==r?void 0:r.assumeValidSDL)&&function(e,t){const n=qn(e,t);if(0!==n.length)throw new Error(n.map((e=>e.message)).join("\n\n"))}(n,e);const i=e.toConfig(),o=zn(i,n,r);return i===o?e:new GraphQLSchema(o)}function zn(e,t,n){var i,o,s,a;const c=[],u=Object.create(null),l=[];let p;const d=[];for(const e of t.definitions)if(e.kind===m.SCHEMA_DEFINITION)p=e;else if(e.kind===m.SCHEMA_EXTENSION)d.push(e);else if(cn(e))c.push(e);else if(un(e)){const t=e.name.value,n=u[t];u[t]=n?n.concat([e]):[e]}else e.kind===m.DIRECTIVE_DEFINITION&&l.push(e);if(0===Object.keys(u).length&&0===c.length&&0===l.length&&0===d.length&&null==p)return e;const f=Object.create(null);for(const t of e.types)f[t.name]=T(t);for(const e of c){var h;const t=e.name.value;f[t]=null!==(h=Hn[t])&&void 0!==h?h:k(e)}const v={query:e.query&&E(e.query),mutation:e.mutation&&E(e.mutation),subscription:e.subscription&&E(e.subscription),...p&&g([p]),...g(d)};return{description:null===(i=p)||void 0===i||null===(o=i.description)||void 0===o?void 0:o.value,...v,types:Object.values(f),directives:[...e.directives.map((function(e){const t=e.toConfig();return new GraphQLDirective({...t,args:ne(t.args,I)})})),...l.map((function(e){var t;return new GraphQLDirective({name:e.name.value,description:null===(t=e.description)||void 0===t?void 0:t.value,locations:e.locations.map((({value:e})=>e)),isRepeatable:e.repeatable,args:L(e.arguments),astNode:e})}))],extensions:Object.create(null),astNode:null!==(s=p)&&void 0!==s?s:e.astNode,extensionASTNodes:e.extensionASTNodes.concat(d),assumeValid:null!==(a=null==n?void 0:n.assumeValid)&&void 0!==a&&a};function y(e){return Re(e)?new GraphQLList(y(e.ofType)):Ge(e)?new GraphQLNonNull(y(e.ofType)):E(e)}function E(e){return f[e.name]}function T(e){return Vt(e)||yt(e)?e:Ae(e)?function(e){var t;const n=e.toConfig(),r=null!==(t=u[n.name])&&void 0!==t?t:[];let i=n.specifiedByURL;for(const e of r){var o;i=null!==(o=Zn(e))&&void 0!==o?o:i}return new GraphQLScalarType({...n,specifiedByURL:i,extensionASTNodes:n.extensionASTNodes.concat(r)})}(e):De(e)?function(e){var t;const n=e.toConfig(),r=null!==(t=u[n.name])&&void 0!==t?t:[];return new GraphQLObjectType({...n,interfaces:()=>[...e.getInterfaces().map(E),...D(r)],fields:()=>({...ne(n.fields,N),...b(r)}),extensionASTNodes:n.extensionASTNodes.concat(r)})}(e):we(e)?function(e){var t;const n=e.toConfig(),r=null!==(t=u[n.name])&&void 0!==t?t:[];return new GraphQLInterfaceType({...n,interfaces:()=>[...e.getInterfaces().map(E),...D(r)],fields:()=>({...ne(n.fields,N),...b(r)}),extensionASTNodes:n.extensionASTNodes.concat(r)})}(e):ke(e)?function(e){var t;const n=e.toConfig(),r=null!==(t=u[n.name])&&void 0!==t?t:[];return new GraphQLUnionType({...n,types:()=>[...e.getTypes().map(E),...w(r)],extensionASTNodes:n.extensionASTNodes.concat(r)})}(e):xe(e)?function(e){var t;const n=e.toConfig(),r=null!==(t=u[e.name])&&void 0!==t?t:[];return new GraphQLEnumType({...n,values:{...n.values,...A(r)},extensionASTNodes:n.extensionASTNodes.concat(r)})}(e):Fe(e)?function(e){var t;const n=e.toConfig(),r=null!==(t=u[n.name])&&void 0!==t?t:[];return new GraphQLInputObjectType({...n,fields:()=>({...ne(n.fields,(e=>({...e,type:y(e.type)}))),...S(r)}),extensionASTNodes:n.extensionASTNodes.concat(r)})}(e):void r(!1,"Unexpected type: "+Y(e))}function N(e){return{...e,type:y(e.type),args:e.args&&ne(e.args,I)}}function I(e){return{...e,type:y(e.type)}}function g(e){const t={};for(const r of e){var n;const e=null!==(n=r.operationTypes)&&void 0!==n?n:[];for(const n of e)t[n.operation]=_(n.type)}return t}function _(e){var t;const n=e.name.value,r=null!==(t=Hn[n])&&void 0!==t?t:f[n];if(void 0===r)throw new Error(`Unknown type: "${n}".`);return r}function O(e){return e.kind===m.LIST_TYPE?new GraphQLList(O(e.type)):e.kind===m.NON_NULL_TYPE?new GraphQLNonNull(O(e.type)):_(e)}function b(e){const t=Object.create(null);for(const i of e){var n;const e=null!==(n=i.fields)&&void 0!==n?n:[];for(const n of e){var r;t[n.name.value]={type:O(n.type),description:null===(r=n.description)||void 0===r?void 0:r.value,args:L(n.arguments),deprecationReason:Wn(n),astNode:n}}}return t}function L(e){const t=null!=e?e:[],n=Object.create(null);for(const e of t){var r;const t=O(e.type);n[e.name.value]={type:t,description:null===(r=e.description)||void 0===r?void 0:r.value,defaultValue:wn(e.defaultValue,t),deprecationReason:Wn(e),astNode:e}}return n}function S(e){const t=Object.create(null);for(const i of e){var n;const e=null!==(n=i.fields)&&void 0!==n?n:[];for(const n of e){var r;const e=O(n.type);t[n.name.value]={type:e,description:null===(r=n.description)||void 0===r?void 0:r.value,defaultValue:wn(n.defaultValue,e),deprecationReason:Wn(n),astNode:n}}}return t}function A(e){const t=Object.create(null);for(const i of e){var n;const e=null!==(n=i.values)&&void 0!==n?n:[];for(const n of e){var r;t[n.name.value]={description:null===(r=n.description)||void 0===r?void 0:r.value,deprecationReason:Wn(n),astNode:n}}}return t}function D(e){return e.flatMap((e=>{var t,n;return null!==(t=null===(n=e.interfaces)||void 0===n?void 0:n.map(_))&&void 0!==t?t:[]}))}function w(e){return e.flatMap((e=>{var t,n;return null!==(t=null===(n=e.types)||void 0===n?void 0:n.map(_))&&void 0!==t?t:[]}))}function k(e){var t;const n=e.name.value,r=null!==(t=u[n])&&void 0!==t?t:[];switch(e.kind){case m.OBJECT_TYPE_DEFINITION:{var i;const t=[e,...r];return new GraphQLObjectType({name:n,description:null===(i=e.description)||void 0===i?void 0:i.value,interfaces:()=>D(t),fields:()=>b(t),astNode:e,extensionASTNodes:r})}case m.INTERFACE_TYPE_DEFINITION:{var o;const t=[e,...r];return new GraphQLInterfaceType({name:n,description:null===(o=e.description)||void 0===o?void 0:o.value,interfaces:()=>D(t),fields:()=>b(t),astNode:e,extensionASTNodes:r})}case m.ENUM_TYPE_DEFINITION:{var s;const t=[e,...r];return new GraphQLEnumType({name:n,description:null===(s=e.description)||void 0===s?void 0:s.value,values:A(t),astNode:e,extensionASTNodes:r})}case m.UNION_TYPE_DEFINITION:{var a;const t=[e,...r];return new GraphQLUnionType({name:n,description:null===(a=e.description)||void 0===a?void 0:a.value,types:()=>w(t),astNode:e,extensionASTNodes:r})}case m.SCALAR_TYPE_DEFINITION:var c;return new GraphQLScalarType({name:n,description:null===(c=e.description)||void 0===c?void 0:c.value,specifiedByURL:Zn(e),astNode:e,extensionASTNodes:r});case m.INPUT_OBJECT_TYPE_DEFINITION:{var l;const t=[e,...r];return new GraphQLInputObjectType({name:n,description:null===(l=e.description)||void 0===l?void 0:l.value,fields:()=>S(t),astNode:e,extensionASTNodes:r})}}}}const Hn=ee([...vt,...jt],(e=>e.name));function Wn(e){const t=xn(_t,e);return null==t?void 0:t.reason}function Zn(e){const t=xn(Ot,e);return null==t?void 0:t.url}function er(e,n){null!=e&&e.kind===m.DOCUMENT||t(!1,"Must provide valid Document AST."),!0!==(null==n?void 0:n.assumeValid)&&!0!==(null==n?void 0:n.assumeValidSDL)&&function(e){const t=qn(e);if(0!==t.length)throw new Error(t.map((e=>e.message)).join("\n\n"))}(e);const r=zn({description:void 0,types:[],directives:[],extensions:Object.create(null),extensionASTNodes:[],assumeValid:!1},e,n);if(null==r.astNode)for(const e of r.types)switch(e.name){case"Query":r.query=e;break;case"Mutation":r.mutation=e;break;case"Subscription":r.subscription=e}const i=[...r.directives,...bt.filter((e=>r.directives.every((t=>t.name!==e.name))))];return new GraphQLSchema({...r,directives:i})}function tr(e){return function(e,t,n){const i=e.getDirectives().filter(t),o=Object.values(e.getTypeMap()).filter(n);return[rr(e),...i.map((e=>function(e){return lr(e)+"directive @"+e.name+ar(e.args)+(e.isRepeatable?" repeatable":"")+" on "+e.locations.join(" | ")}(e))),...o.map((e=>function(e){if(Ae(e))return function(e){return lr(e)+`scalar ${e.name}`+function(e){if(null==e.specifiedByURL)return"";return` @specifiedBy(url: ${ye({kind:m.STRING,value:e.specifiedByURL})})`}(e)}(e);if(De(e))return function(e){return lr(e)+`type ${e.name}`+ir(e)+or(e)}(e);if(we(e))return function(e){return lr(e)+`interface ${e.name}`+ir(e)+or(e)}(e);if(ke(e))return function(e){const t=e.getTypes(),n=t.length?" = "+t.join(" | "):"";return lr(e)+"union "+e.name+n}(e);if(xe(e))return function(e){const t=e.getValues().map(((e,t)=>lr(e," ",!t)+" "+e.name+ur(e.deprecationReason)));return lr(e)+`enum ${e.name}`+sr(t)}(e);if(Fe(e))return function(e){const t=Object.values(e.getFields()).map(((e,t)=>lr(e," ",!t)+" "+cr(e)));return lr(e)+`input ${e.name}`+sr(t)}(e);r(!1,"Unexpected type: "+Y(e))}(e)))].filter(Boolean).join("\n\n")}(e,(e=>{return t=e,!bt.some((({name:e})=>e===t.name));var t}),nr)}function nr(e){return!yt(e)&&!Vt(e)}function rr(e){if(null==e.description&&function(e){const t=e.getQueryType();if(t&&"Query"!==t.name)return!1;const n=e.getMutationType();if(n&&"Mutation"!==n.name)return!1;const r=e.getSubscriptionType();if(r&&"Subscription"!==r.name)return!1;return!0}(e))return;const t=[],n=e.getQueryType();n&&t.push(` query: ${n.name}`);const r=e.getMutationType();r&&t.push(` mutation: ${r.name}`);const i=e.getSubscriptionType();return i&&t.push(` subscription: ${i.name}`),lr(e)+`schema {\n${t.join("\n")}\n}`}function ir(e){const t=e.getInterfaces();return t.length?" implements "+t.map((e=>e.name)).join(" & "):""}function or(e){return sr(Object.values(e.getFields()).map(((e,t)=>lr(e," ",!t)+" "+e.name+ar(e.args," ")+": "+String(e.type)+ur(e.deprecationReason))))}function sr(e){return 0!==e.length?" {\n"+e.join("\n")+"\n}":""}function ar(e,t=""){return 0===e.length?"":e.every((e=>!e.description))?"("+e.map(cr).join(", ")+")":"(\n"+e.map(((e,n)=>lr(e," "+t,!n)+" "+t+cr(e))).join("\n")+"\n"+t+")"}function cr(e){const t=Lt(e.defaultValue,e.type);let n=e.name+": "+String(e.type);return t&&(n+=` = ${ye(t)}`),n+ur(e.deprecationReason)}function ur(e){if(null==e)return"";if(e!==gt){return` @deprecated(reason: ${ye({kind:m.STRING,value:e})})`}return" @deprecated"}function lr(e,t="",n=!0){const{description:r}=e;if(null==r)return"";return(t&&!n?"\n"+t:t)+ye({kind:m.STRING,value:r,block:O(r)}).replace(/\n/g,"\n"+t)+"\n"}function pr(e){const t=[];for(const n of e)t.push(...n.definitions);return{kind:m.DOCUMENT,definitions:t}}const dr=[hn];function fr(e){var t;const n=function(e){if(e)return function(t){const n=e;return{Field(e){var r;const i=(null!==(r=e.alias)&&void 0!==r?r:e.name).value,o=i.charAt(0).toLowerCase()+i.slice(1);n.includes(o)&&t.reportError(new GraphQLError(`Field name "${i}" is not allowed because it conflicts with generated object APIs. Please use an alias to change the field name.`,{nodes:e}))}}};return}(null===(t=e.disallowedFieldNames)||void 0===t?void 0:t.allFields),r=function(e){if(e)return function(t){const n=e;return{VariableDefinition(e){const r=e.variable.name.value,i=r.charAt(0).toLowerCase()+r.slice(1);n.includes(i)&&t.reportError(new GraphQLError(`Input Parameter name "${r}" is not allowed because it conflicts with generated object APIs.`,{nodes:e}))}}};return}(e.disallowedInputParameterNames);return[hr,mr,...n?[n]:[],...r?[r]:[],...Bn.filter((e=>!dr.includes(e)))]}function hr(e){return{OperationDefinition:t=>(t.name||e.reportError(new GraphQLError("Apollo does not support anonymous operations because operation names are used during code generation. Please give this operation a name.",t)),!1)}}function mr(e){return{Field(t){"__typename"==(t.alias&&t.alias.value)&&e.reportError(new GraphQLError("Apollo needs to be able to insert __typename when needed, so using it as an alias is not supported.",t))}}}const vr={kind:m.DIRECTIVE_DEFINITION,description:(yr="A directive used by the Apollo iOS client to annotate operations or fragments that should be used exclusively for generating local cache mutations instead of as standard operations.",{kind:m.STRING,value:yr}),name:Er("apollo_client_ios_localCacheMutation"),repeatable:!1,locations:[Er("QUERY"),Er("MUTATION"),Er("SUBSCRIPTION"),Er("FRAGMENT_DEFINITION")]};var yr;function Er(e){return{kind:m.NAME,value:e}}const Tr={kind:m.DOCUMENT,definitions:[vr]};const Nr={kind:m.FIELD,name:{kind:m.NAME,value:"__typename"}};class GraphQLSchemaValidationError extends Error{constructor(e){super(e.map((e=>e.message)).join("\n\n")),this.validationErrors=e,this.name="GraphQLSchemaValidationError"}}function Ir(e){return e.startsWith("__")}const gr={kind:m.FIELD,name:{kind:m.NAME,value:"__typename"}};function _r(e,t){return t&&(e=function(e){return he(e,{enter:e=>e.kind!==m.SELECTION_SET?void 0:{...e,selections:e.selections.filter((e=>!("Field"===e.kind&&"__typename"===e.name.value)))},leave(e){if((e.kind===m.FIELD||e.kind===m.FRAGMENT_DEFINITION||e.kind===m.INLINE_FRAGMENT)&&e.selectionSet)return{...e,selectionSet:{...e.selectionSet,selections:[Nr,...e.selectionSet.selections]}}}})}(e)),he(e,{SelectionSet:{leave:(e,t,n)=>d(n)&&![m.FIELD,m.FRAGMENT_DEFINITION].includes(n.kind)?e:function(e){const t=e.selections.find((e=>e.kind==gr.kind&&e.name.value==gr.name.value));return t?e:{...e,selections:[gr,...e.selections]}}(e)},Field:{enter:e=>function(e){return e.name.value==gr.name.value?{...e,alias:void 0,directives:void 0}:e}(e)},Directive:{enter:e=>function(e){return e.name.value==vr.name.value?null:e}(e)}})}function Or(e){return null!=e}function br(e){switch(e.kind){case m.VARIABLE:return{kind:e.kind,value:e.name.value};case m.LIST:return{kind:e.kind,value:e.values.map(br)};case m.OBJECT:return{kind:e.kind,value:e.fields.reduce(((e,t)=>(e[t.name.value]=br(t.value),e)),{})};default:return e}}function Lr(e){var t,n;return null===(n=null===(t=e.loc)||void 0===t?void 0:t.source)||void 0===n?void 0:n.name}function Sr(e,t,n,r){var i,o,s;const a=new Map;for(const e of t.definitions)e.kind===m.FRAGMENT_DEFINITION&&a.set(e.name.value,e);const c=[],u=new Map,l=new Set,p=e.getQueryType();if(void 0===p)throw new GraphQLError("GraphQL Schema must contain a 'query' root type definition.",{});const d={queryType:p,mutationType:null!==(i=e.getMutationType())&&void 0!==i?i:void 0,subscriptionType:null!==(o=e.getSubscriptionType())&&void 0!==o?o:void 0};for(const e of t.definitions)e.kind===m.OPERATION_DEFINITION&&c.push(h(e));for(const[e,t]of a.entries())u.set(e,v(t));return{rootTypes:d,operations:c,fragments:Array.from(u.values()),referencedTypes:Array.from(l.values()),schemaDocumentation:null!==(s=e.description)&&void 0!==s?s:void 0};function f(t){if(!l.has(t)){if(l.add(t),we(t))for(const n of e.getPossibleTypes(t))f(Je(n));if(ke(t)){const e=t.getTypes();for(t of e)f(Je(t))}if(Fe(t)&&function(e){const t=e.getFields();for(const e in t){f(Je(t[e].type))}}(t),De(t))for(const e of t.getInterfaces())f(Je(e))}}function h(t){var r;if(!t.name)throw new GraphQLError("Operations should be named",{nodes:t});const i=Lr(t),o=t.name.value,s=t.operation,a=new Set,c=(t.variableDefinitions||[]).map((t=>{const n=t.variable.name.value,r=t.defaultValue?br(t.defaultValue):void 0,i=rn(e,t.type);if(!i)throw new GraphQLError(`Couldn't get type from type node "${t.type}"`,{nodes:t});return f(Je(i)),{name:n,type:i,defaultValue:r}})),u=ye(_r(t,n)),l=e.getRootType(s),[p]=null!==(r=T(t.directives))&&void 0!==r?r:[void 0,void 0];return f(l),{name:o,operationType:s,variables:c,rootType:l,selectionSet:y(t.selectionSet,l,a),directives:p,referencedFragments:Array.from(a.values()),source:u,filePath:i}}function v(t){var r;const i=t.name.value,o=Lr(t),s=ye(_r(t,n)),a=new Set,c=rn(e,t.typeCondition),[u]=null!==(r=T(t.directives))&&void 0!==r?r:[void 0,void 0];return f(Je(c)),{name:i,filePath:o,source:s,typeCondition:c,selectionSet:y(t.selectionSet,c,a),directives:u,referencedFragments:Array.from(a.values())}}function y(t,n,i){return{parentType:n,selections:t.selections.map((t=>function(t,n,i){var o,s,c,l;const[p,d]=null!==(o=T(t.directives))&&void 0!==o?o:[void 0,void 0];switch(t.kind){case m.FIELD:{const h=t.name.value;if("__typename"==h)return;const N=null===(s=t.alias)||void 0===s?void 0:s.value,I=function(e,t,n){return n===$t.name&&e.getQueryType()===t?$t:n===Qt.name&&e.getQueryType()===t?Qt:n===Ut.name&&(De(t)||we(t)||ke(t))?Ut:De(t)||we(t)?t.getFields()[n]:void 0}(e,n,h);if(!I)throw new GraphQLError(`Cannot query field "${h}" on type "${String(n)}"`,{nodes:t});const g=mn(I.type,t.required),_=Je(g);f(Je(_));const{description:O,deprecationReason:b}=I;let L={kind:"Field",name:h,alias:N,type:g,arguments:E(I,t.arguments),inclusionConditions:d,description:!Ir(h)&&O?O:void 0,deprecationReason:b||void 0,directives:p};function S(e,t,n){var r;if(t&&n){const i=(null!==(r=e.alias)&&void 0!==r?r:e.name).value,o=i.charAt(0).toLowerCase()+i.slice(1);if(null==t?void 0:t.includes(o))throw new GraphQLError(`Schema name "${n}" conflicts with name of a generated object API. Please choose a different schema name. Suggestions: "${n}Schema", "${n}GraphQL", "${n}API"`,{nodes:e})}}if(Re(g)||Ge(g)&&Re(g.ofType)?S(t,null===(c=r.disallowedFieldNames)||void 0===c?void 0:c.entityList,r.schemaNamespace):je(_)&&S(t,null===(l=r.disallowedFieldNames)||void 0===l?void 0:l.entity,r.schemaNamespace),je(_)){const A=t.selectionSet;if(!A)throw new GraphQLError(`Composite field "${h}" on type "${String(n)}" requires selection set`,{nodes:t});L.selectionSet=y(A,_,i)}return L}case m.INLINE_FRAGMENT:{const D=t.typeCondition,w=D?rn(e,D):n;return f(w),{kind:"InlineFragment",selectionSet:y(t.selectionSet,w,i),inclusionConditions:d,directives:p}}case m.FRAGMENT_SPREAD:{const k=t.name.value,x=function(e){let t=u.get(e);if(t)return t;const n=a.get(e);return n?(a.delete(e),t=v(n),u.set(e,t),t):void 0}(k);if(!x)throw new GraphQLError(`Unknown fragment "${k}".`,{nodes:t.name});i.add(x);return{kind:"FragmentSpread",fragment:x,inclusionConditions:d,directives:p}}}}(t,n,i))).filter(Or)}}function E(...e){const t=e[0].args;return e[1]&&e[1].length>0?e[1].map((e=>{var n;const r=e.name.value,i=t.find((t=>t.name===e.name.value)),o=null==i?void 0:i.type;if(!o)throw new GraphQLError(`Cannot find directive argument type for argument "${r}".`,{nodes:[e]});return{name:r,value:br(e.value),type:o,deprecationReason:null!==(n=i.deprecationReason)&&void 0!==n?n:void 0}})):void 0}function T(t){if(t&&t.length>0){const n=[],r=[];for(const i of t){const t=i.name.value,o=e.getDirective(t);if(!o)throw new GraphQLError(`Cannot find directive "${t}".`,{nodes:i});n.push({name:t,arguments:E(o,i.arguments)});const s=N(i,o);s&&r.push(s)}return[n,r.length>0?r:void 0]}}function N(e,t){var n;if("include"==t.name||"skip"==t.name){const r=null===(n=e.arguments)||void 0===n?void 0:n[0].value,i="skip"==t.name;switch(null==r?void 0:r.kind){case m.BOOLEAN:return i?r.value?"SKIPPED":"INCLUDED":r.value?"INCLUDED":"SKIPPED";case m.VARIABLE:return{variable:r.name.value,isInverted:i};default:throw new GraphQLError('Conditional inclusion directive has invalid "if" argument.',{nodes:e})}}}}return e.GraphQLEnumType=GraphQLEnumType,e.GraphQLError=GraphQLError,e.GraphQLInputObjectType=GraphQLInputObjectType,e.GraphQLInterfaceType=GraphQLInterfaceType,e.GraphQLObjectType=GraphQLObjectType,e.GraphQLScalarType=GraphQLScalarType,e.GraphQLSchema=GraphQLSchema,e.GraphQLSchemaValidationError=GraphQLSchemaValidationError,e.GraphQLUnionType=GraphQLUnionType,e.Source=Source,e.compileDocument=function(e,t,n,r){return Sr(e,t,n,r)},e.loadSchemaFromSources=function(e){var t,n=new Array;for(const r of e)if(r.name.endsWith(".json")){if(t)throw new Error(`Schema search paths can only include one JSON schema definition.\n Found "${t.name} & "${r.name}".`);t=r}else n.push(K(r));var r=function(e){return e.definitions.some((e=>e.kind==m.DIRECTIVE_DEFINITION&&e.name.value==vr.name.value))?e:pr([e,Tr])}(pr(n));t||function(e){const t=qn(e);if(0!==t.length)throw new GraphQLSchemaValidationError(t)}(r);const i=t?Xn(function(e){let t=JSON.parse(e);t.data&&(t=t.data);const n=Kn(t);return n}(t.body),r,{assumeValid:!0,assumeValidSDL:!0}):er(r,{assumeValid:!0,assumeValidSDL:!0});return function(e){const t=Bt(e);if(0!==t.length)throw new GraphQLSchemaValidationError(t)}(i),i},e.mergeDocuments=function(e){return pr(e)},e.parseOperationDocument=function(e,t){return K(e,{experimentalClientControlledNullability:t})},e.printSchemaToSDL=function(e){return tr(e)},e.validateDocument=function(e,t,n){return Jn(e,t,fr(n))},Object.defineProperty(e,"__esModule",{value:!0}),e}({});"# \ No newline at end of file diff --git a/apollo-ios-codegen/Sources/GraphQLCompiler/CompilationResult.swift b/apollo-ios-codegen/Sources/GraphQLCompiler/CompilationResult.swift index fd4c39c5c..23850c19b 100644 --- a/apollo-ios-codegen/Sources/GraphQLCompiler/CompilationResult.swift +++ b/apollo-ios-codegen/Sources/GraphQLCompiler/CompilationResult.swift @@ -45,7 +45,9 @@ public class CompilationResult: JavaScriptObject { public lazy var selectionSet: SelectionSet = self["selectionSet"] public lazy var directives: [Directive]? = self["directives"] - + + public lazy var referencedFragments: [FragmentDefinition] = self["referencedFragments"] + public lazy var source: String = self["source"] public lazy var filePath: String = self["filePath"] @@ -103,6 +105,8 @@ public class CompilationResult: JavaScriptObject { public lazy var directives: [Directive]? = self["directives"] + public lazy var referencedFragments: [FragmentDefinition] = self["referencedFragments"] + public lazy var isLocalCacheMutation: Bool = { directives?.contains { $0.name == Constants.DirectiveNames.LocalCacheMutation } ?? false }() diff --git a/apollo-ios-codegen/Sources/GraphQLCompiler/JavaScript/dist/ApolloCodegenFrontend.bundle.js b/apollo-ios-codegen/Sources/GraphQLCompiler/JavaScript/dist/ApolloCodegenFrontend.bundle.js deleted file mode 100644 index 30ea57bd0..000000000 --- a/apollo-ios-codegen/Sources/GraphQLCompiler/JavaScript/dist/ApolloCodegenFrontend.bundle.js +++ /dev/null @@ -1 +0,0 @@ -var ApolloCodegenFrontend=function(e){"use strict";function t(e,t){if(!Boolean(e))throw new Error(t)}function n(e){return"object"==typeof e&&null!==e}function i(e,t){if(!Boolean(e))throw new Error(null!=t?t:"Unexpected invariant triggered.")}const r=/\r\n|[\n\r]/g;function o(e,t){let n=0,o=1;for(const s of e.body.matchAll(r)){if("number"==typeof s.index||i(!1),s.index>=t)break;n=s.index+s[0].length,o+=1}return{line:o,column:t+1-n}}function s(e,t){const n=e.locationOffset.column-1,i="".padStart(n)+e.body,r=t.line-1,o=e.locationOffset.line-1,s=t.line+o,c=1===t.line?n:0,u=t.column+c,l=`${e.name}:${s}:${u}\n`,p=i.split(/\r\n|[\n\r]/g),d=p[r];if(d.length>120){const e=Math.floor(u/80),t=u%80,n=[];for(let e=0;e["|",e])),["|","^".padStart(t)],["|",n[e+1]]])}return l+a([[s-1+" |",p[r-1]],[`${s} |`,d],["|","^".padStart(u)],[`${s+1} |`,p[r+1]]])}function a(e){const t=e.filter((([e,t])=>void 0!==t)),n=Math.max(...t.map((([e])=>e.length)));return t.map((([e,t])=>e.padStart(n)+(t?" "+t:""))).join("\n")}class GraphQLError extends Error{constructor(e,...t){var i,r,s;const{nodes:a,source:u,positions:l,path:p,originalError:d,extensions:f}=function(e){const t=e[0];return null==t||"kind"in t||"length"in t?{nodes:t,source:e[1],positions:e[2],path:e[3],originalError:e[4],extensions:e[5]}:t}(t);super(e),this.name="GraphQLError",this.path=null!=p?p:void 0,this.originalError=null!=d?d:void 0,this.nodes=c(Array.isArray(a)?a:a?[a]:void 0);const h=c(null===(i=this.nodes)||void 0===i?void 0:i.map((e=>e.loc)).filter((e=>null!=e)));this.source=null!=u?u:null==h||null===(r=h[0])||void 0===r?void 0:r.source,this.positions=null!=l?l:null==h?void 0:h.map((e=>e.start)),this.locations=l&&u?l.map((e=>o(u,e))):null==h?void 0:h.map((e=>o(e.source,e.start)));const m=n(null==d?void 0:d.extensions)?null==d?void 0:d.extensions:void 0;this.extensions=null!==(s=null!=f?f:m)&&void 0!==s?s:Object.create(null),Object.defineProperties(this,{message:{writable:!0,enumerable:!0},name:{enumerable:!1},nodes:{enumerable:!1},source:{enumerable:!1},positions:{enumerable:!1},originalError:{enumerable:!1}}),null!=d&&d.stack?Object.defineProperty(this,"stack",{value:d.stack,writable:!0,configurable:!0}):Error.captureStackTrace?Error.captureStackTrace(this,GraphQLError):Object.defineProperty(this,"stack",{value:Error().stack,writable:!0,configurable:!0})}get[Symbol.toStringTag](){return"GraphQLError"}toString(){let e=this.message;if(this.nodes)for(const n of this.nodes)n.loc&&(e+="\n\n"+s((t=n.loc).source,o(t.source,t.start)));else if(this.source&&this.locations)for(const t of this.locations)e+="\n\n"+s(this.source,t);var t;return e}toJSON(){const e={message:this.message};return null!=this.locations&&(e.locations=this.locations),null!=this.path&&(e.path=this.path),null!=this.extensions&&Object.keys(this.extensions).length>0&&(e.extensions=this.extensions),e}}function c(e){return void 0===e||0===e.length?void 0:e}function u(e,t,n){return new GraphQLError(`Syntax Error: ${n}`,void 0,e,[t])}class Location{constructor(e,t,n){this.start=e.start,this.end=t.end,this.startToken=e,this.endToken=t,this.source=n}get[Symbol.toStringTag](){return"Location"}toJSON(){return{start:this.start,end:this.end}}}class Token{constructor(e,t,n,i,r,o){this.kind=e,this.start=t,this.end=n,this.line=i,this.column=r,this.value=o,this.prev=null,this.next=null}get[Symbol.toStringTag](){return"Token"}toJSON(){return{kind:this.kind,value:this.value,line:this.line,column:this.column}}}const l={Name:[],Document:["definitions"],OperationDefinition:["name","variableDefinitions","directives","selectionSet"],VariableDefinition:["variable","type","defaultValue","directives"],Variable:["name"],SelectionSet:["selections"],Field:["alias","name","arguments","directives","selectionSet","required"],ListNullability:["element"],RequiredDesignator:["element"],OptionalDesignator:["element"],Argument:["name","value"],FragmentSpread:["name","directives"],InlineFragment:["typeCondition","directives","selectionSet"],FragmentDefinition:["name","variableDefinitions","typeCondition","directives","selectionSet"],IntValue:[],FloatValue:[],StringValue:[],BooleanValue:[],NullValue:[],EnumValue:[],ListValue:["values"],ObjectValue:["fields"],ObjectField:["name","value"],Directive:["name","arguments"],NamedType:["name"],ListType:["type"],NonNullType:["type"],SchemaDefinition:["description","directives","operationTypes"],OperationTypeDefinition:["type"],ScalarTypeDefinition:["description","name","directives"],ObjectTypeDefinition:["description","name","interfaces","directives","fields"],FieldDefinition:["description","name","arguments","type","directives"],InputValueDefinition:["description","name","type","defaultValue","directives"],InterfaceTypeDefinition:["description","name","interfaces","directives","fields"],UnionTypeDefinition:["description","name","directives","types"],EnumTypeDefinition:["description","name","directives","values"],EnumValueDefinition:["description","name","directives"],InputObjectTypeDefinition:["description","name","directives","fields"],DirectiveDefinition:["description","name","arguments","locations"],SchemaExtension:["directives","operationTypes"],ScalarTypeExtension:["name","directives"],ObjectTypeExtension:["name","interfaces","directives","fields"],InterfaceTypeExtension:["name","interfaces","directives","fields"],UnionTypeExtension:["name","directives","types"],EnumTypeExtension:["name","directives","values"],InputObjectTypeExtension:["name","directives","fields"]},p=new Set(Object.keys(l));function d(e){const t=null==e?void 0:e.kind;return"string"==typeof t&&p.has(t)}let f,h,m,v;function y(e){return 9===e||32===e}function E(e){return e>=48&&e<=57}function T(e){return e>=97&&e<=122||e>=65&&e<=90}function N(e){return T(e)||95===e}function I(e){return T(e)||E(e)||95===e}function g(e){var t;let n=Number.MAX_SAFE_INTEGER,i=null,r=-1;for(let t=0;t0===t?e:e.slice(n))).slice(null!==(t=i)&&void 0!==t?t:0,r+1)}function _(e){let t=0;for(;t",e.EOF="",e.BANG="!",e.QUESTION_MARK="?",e.DOLLAR="$",e.AMP="&",e.PAREN_L="(",e.PAREN_R=")",e.SPREAD="...",e.COLON=":",e.EQUALS="=",e.AT="@",e.BRACKET_L="[",e.BRACKET_R="]",e.BRACE_L="{",e.PIPE="|",e.BRACE_R="}",e.NAME="Name",e.INT="Int",e.FLOAT="Float",e.STRING="String",e.BLOCK_STRING="BlockString",e.COMMENT="Comment"}(v||(v={}));class Lexer{constructor(e){const t=new Token(v.SOF,0,0,0,0);this.source=e,this.lastToken=t,this.token=t,this.line=1,this.lineStart=0}get[Symbol.toStringTag](){return"Lexer"}advance(){this.lastToken=this.token;return this.token=this.lookahead()}lookahead(){let e=this.token;if(e.kind!==v.EOF)do{if(e.next)e=e.next;else{const t=k(this,e.end);e.next=t,t.prev=e,e=t}}while(e.kind===v.COMMENT);return e}}function b(e){return e>=0&&e<=55295||e>=57344&&e<=1114111}function L(e,t){return S(e.charCodeAt(t))&&A(e.charCodeAt(t+1))}function S(e){return e>=55296&&e<=56319}function A(e){return e>=56320&&e<=57343}function D(e,t){const n=e.source.body.codePointAt(t);if(void 0===n)return v.EOF;if(n>=32&&n<=126){const e=String.fromCodePoint(n);return'"'===e?"'\"'":`"${e}"`}return"U+"+n.toString(16).toUpperCase().padStart(4,"0")}function w(e,t,n,i,r){const o=e.line,s=1+n-e.lineStart;return new Token(t,n,i,o,s,r)}function k(e,t){const n=e.source.body,i=n.length;let r=t;for(;r=48&&e<=57?e-48:e>=65&&e<=70?e-55:e>=97&&e<=102?e-87:-1}function j(e,t){const n=e.source.body;switch(n.charCodeAt(t+1)){case 34:return{value:'"',size:2};case 92:return{value:"\\",size:2};case 47:return{value:"/",size:2};case 98:return{value:"\b",size:2};case 102:return{value:"\f",size:2};case 110:return{value:"\n",size:2};case 114:return{value:"\r",size:2};case 116:return{value:"\t",size:2}}throw u(e.source,t,`Invalid character escape sequence: "${n.slice(t,t+2)}".`)}function V(e,t){const n=e.source.body,i=n.length;let r=e.lineStart,o=t+3,s=o,a="";const c=[];for(;oB)return"[Array]";const n=Math.min(P,e.length),i=e.length-n,r=[];for(let i=0;i1&&r.push(`... ${i} more items`);return"["+r.join(", ")+"]"}(e,n);return function(e,t){const n=Object.entries(e);if(0===n.length)return"{}";if(t.length>B)return"["+function(e){const t=Object.prototype.toString.call(e).replace(/^\[object /,"").replace(/]$/,"");if("Object"===t&&"function"==typeof e.constructor){const t=e.constructor.name;if("string"==typeof t&&""!==t)return t}return t}(e)+"]";const i=n.map((([e,n])=>e+": "+J(n,t)));return"{ "+i.join(", ")+" }"}(e,n)}(e,t);default:return String(e)}}const q=function(e,t){return e instanceof t};class Source{constructor(e,n="GraphQL request",i={line:1,column:1}){"string"==typeof e||t(!1,`Body must be a string. Received: ${Y(e)}.`),this.body=e,this.name=n,this.locationOffset=i,this.locationOffset.line>0||t(!1,"line in locationOffset is 1-indexed and must be positive."),this.locationOffset.column>0||t(!1,"column in locationOffset is 1-indexed and must be positive.")}get[Symbol.toStringTag](){return"Source"}}function K(e,t){return new Parser(e,t).parseDocument()}class Parser{constructor(e,t){const n=function(e){return q(e,Source)}(e)?e:new Source(e);this._lexer=new Lexer(n),this._options=t}parseName(){const e=this.expectToken(v.NAME);return this.node(e,{kind:m.NAME,value:e.value})}parseDocument(){return this.node(this._lexer.token,{kind:m.DOCUMENT,definitions:this.many(v.SOF,this.parseDefinition,v.EOF)})}parseDefinition(){if(this.peek(v.BRACE_L))return this.parseOperationDefinition();const e=this.peekDescription(),t=e?this._lexer.lookahead():this._lexer.token;if(t.kind===v.NAME){switch(t.value){case"schema":return this.parseSchemaDefinition();case"scalar":return this.parseScalarTypeDefinition();case"type":return this.parseObjectTypeDefinition();case"interface":return this.parseInterfaceTypeDefinition();case"union":return this.parseUnionTypeDefinition();case"enum":return this.parseEnumTypeDefinition();case"input":return this.parseInputObjectTypeDefinition();case"directive":return this.parseDirectiveDefinition()}if(e)throw u(this._lexer.source,this._lexer.token.start,"Unexpected description, descriptions are supported only on type definitions.");switch(t.value){case"query":case"mutation":case"subscription":return this.parseOperationDefinition();case"fragment":return this.parseFragmentDefinition();case"extend":return this.parseTypeSystemExtension()}}throw this.unexpected(t)}parseOperationDefinition(){const e=this._lexer.token;if(this.peek(v.BRACE_L))return this.node(e,{kind:m.OPERATION_DEFINITION,operation:f.QUERY,name:void 0,variableDefinitions:[],directives:[],selectionSet:this.parseSelectionSet()});const t=this.parseOperationType();let n;return this.peek(v.NAME)&&(n=this.parseName()),this.node(e,{kind:m.OPERATION_DEFINITION,operation:t,name:n,variableDefinitions:this.parseVariableDefinitions(),directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet()})}parseOperationType(){const e=this.expectToken(v.NAME);switch(e.value){case"query":return f.QUERY;case"mutation":return f.MUTATION;case"subscription":return f.SUBSCRIPTION}throw this.unexpected(e)}parseVariableDefinitions(){return this.optionalMany(v.PAREN_L,this.parseVariableDefinition,v.PAREN_R)}parseVariableDefinition(){return this.node(this._lexer.token,{kind:m.VARIABLE_DEFINITION,variable:this.parseVariable(),type:(this.expectToken(v.COLON),this.parseTypeReference()),defaultValue:this.expectOptionalToken(v.EQUALS)?this.parseConstValueLiteral():void 0,directives:this.parseConstDirectives()})}parseVariable(){const e=this._lexer.token;return this.expectToken(v.DOLLAR),this.node(e,{kind:m.VARIABLE,name:this.parseName()})}parseSelectionSet(){return this.node(this._lexer.token,{kind:m.SELECTION_SET,selections:this.many(v.BRACE_L,this.parseSelection,v.BRACE_R)})}parseSelection(){return this.peek(v.SPREAD)?this.parseFragment():this.parseField()}parseField(){var e;const t=this._lexer.token,n=this.parseName();let i,r;this.expectOptionalToken(v.COLON)?(i=n,r=this.parseName()):r=n;const o=this.parseArguments(!1),s=null!==(e=this._options)&&void 0!==e&&e.experimentalClientControlledNullability?this.parseRequiredStatus():void 0,a=this.parseDirectives(!1),c=this.peek(v.BRACE_L)?this.parseSelectionSet():void 0;return this.node(t,{kind:m.FIELD,alias:i,name:r,arguments:o,required:s,directives:a,selectionSet:c})}parseRequiredStatus(){const e=this.parseListNullability(),t=this.parseNullabilityDesignatorNode(e);return null!=t?t:e}parseListNullability(){const e=this._lexer.token;if(this.expectOptionalToken(v.BRACKET_L)){const t=this.parseRequiredStatus();return this.expectToken(v.BRACKET_R),this.node(e,{kind:m.LIST_NULLABILITY,element:t})}}parseNullabilityDesignatorNode(e){var t;return null!==(t=this.parseRequiredDesignatorNode(e))&&void 0!==t?t:this.parseOptionalDesignatorNode(e)}parseRequiredDesignatorNode(e){const t=this._lexer.token;if(this.expectOptionalToken(v.BANG))return this.node(t,{kind:m.REQUIRED_DESIGNATOR,element:e})}parseOptionalDesignatorNode(e){const t=this._lexer.token;if(this.expectOptionalToken(v.QUESTION_MARK))return this.node(t,{kind:m.OPTIONAL_DESIGNATOR,element:e})}parseArguments(e){const t=e?this.parseConstArgument:this.parseArgument;return this.optionalMany(v.PAREN_L,t,v.PAREN_R)}parseArgument(e=!1){const t=this._lexer.token,n=this.parseName();return this.expectToken(v.COLON),this.node(t,{kind:m.ARGUMENT,name:n,value:this.parseValueLiteral(e)})}parseConstArgument(){return this.parseArgument(!0)}parseFragment(){const e=this._lexer.token;this.expectToken(v.SPREAD);const t=this.expectOptionalKeyword("on");return!t&&this.peek(v.NAME)?this.node(e,{kind:m.FRAGMENT_SPREAD,name:this.parseFragmentName(),directives:this.parseDirectives(!1)}):this.node(e,{kind:m.INLINE_FRAGMENT,typeCondition:t?this.parseNamedType():void 0,directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet()})}parseFragmentDefinition(){var e;const t=this._lexer.token;return this.expectKeyword("fragment"),!0===(null===(e=this._options)||void 0===e?void 0:e.allowLegacyFragmentVariables)?this.node(t,{kind:m.FRAGMENT_DEFINITION,name:this.parseFragmentName(),variableDefinitions:this.parseVariableDefinitions(),typeCondition:(this.expectKeyword("on"),this.parseNamedType()),directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet()}):this.node(t,{kind:m.FRAGMENT_DEFINITION,name:this.parseFragmentName(),typeCondition:(this.expectKeyword("on"),this.parseNamedType()),directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet()})}parseFragmentName(){if("on"===this._lexer.token.value)throw this.unexpected();return this.parseName()}parseValueLiteral(e){const t=this._lexer.token;switch(t.kind){case v.BRACKET_L:return this.parseList(e);case v.BRACE_L:return this.parseObject(e);case v.INT:return this._lexer.advance(),this.node(t,{kind:m.INT,value:t.value});case v.FLOAT:return this._lexer.advance(),this.node(t,{kind:m.FLOAT,value:t.value});case v.STRING:case v.BLOCK_STRING:return this.parseStringLiteral();case v.NAME:switch(this._lexer.advance(),t.value){case"true":return this.node(t,{kind:m.BOOLEAN,value:!0});case"false":return this.node(t,{kind:m.BOOLEAN,value:!1});case"null":return this.node(t,{kind:m.NULL});default:return this.node(t,{kind:m.ENUM,value:t.value})}case v.DOLLAR:if(e){if(this.expectToken(v.DOLLAR),this._lexer.token.kind===v.NAME){const e=this._lexer.token.value;throw u(this._lexer.source,t.start,`Unexpected variable "$${e}" in constant value.`)}throw this.unexpected(t)}return this.parseVariable();default:throw this.unexpected()}}parseConstValueLiteral(){return this.parseValueLiteral(!0)}parseStringLiteral(){const e=this._lexer.token;return this._lexer.advance(),this.node(e,{kind:m.STRING,value:e.value,block:e.kind===v.BLOCK_STRING})}parseList(e){return this.node(this._lexer.token,{kind:m.LIST,values:this.any(v.BRACKET_L,(()=>this.parseValueLiteral(e)),v.BRACKET_R)})}parseObject(e){return this.node(this._lexer.token,{kind:m.OBJECT,fields:this.any(v.BRACE_L,(()=>this.parseObjectField(e)),v.BRACE_R)})}parseObjectField(e){const t=this._lexer.token,n=this.parseName();return this.expectToken(v.COLON),this.node(t,{kind:m.OBJECT_FIELD,name:n,value:this.parseValueLiteral(e)})}parseDirectives(e){const t=[];for(;this.peek(v.AT);)t.push(this.parseDirective(e));return t}parseConstDirectives(){return this.parseDirectives(!0)}parseDirective(e){const t=this._lexer.token;return this.expectToken(v.AT),this.node(t,{kind:m.DIRECTIVE,name:this.parseName(),arguments:this.parseArguments(e)})}parseTypeReference(){const e=this._lexer.token;let t;if(this.expectOptionalToken(v.BRACKET_L)){const n=this.parseTypeReference();this.expectToken(v.BRACKET_R),t=this.node(e,{kind:m.LIST_TYPE,type:n})}else t=this.parseNamedType();return this.expectOptionalToken(v.BANG)?this.node(e,{kind:m.NON_NULL_TYPE,type:t}):t}parseNamedType(){return this.node(this._lexer.token,{kind:m.NAMED_TYPE,name:this.parseName()})}peekDescription(){return this.peek(v.STRING)||this.peek(v.BLOCK_STRING)}parseDescription(){if(this.peekDescription())return this.parseStringLiteral()}parseSchemaDefinition(){const e=this._lexer.token,t=this.parseDescription();this.expectKeyword("schema");const n=this.parseConstDirectives(),i=this.many(v.BRACE_L,this.parseOperationTypeDefinition,v.BRACE_R);return this.node(e,{kind:m.SCHEMA_DEFINITION,description:t,directives:n,operationTypes:i})}parseOperationTypeDefinition(){const e=this._lexer.token,t=this.parseOperationType();this.expectToken(v.COLON);const n=this.parseNamedType();return this.node(e,{kind:m.OPERATION_TYPE_DEFINITION,operation:t,type:n})}parseScalarTypeDefinition(){const e=this._lexer.token,t=this.parseDescription();this.expectKeyword("scalar");const n=this.parseName(),i=this.parseConstDirectives();return this.node(e,{kind:m.SCALAR_TYPE_DEFINITION,description:t,name:n,directives:i})}parseObjectTypeDefinition(){const e=this._lexer.token,t=this.parseDescription();this.expectKeyword("type");const n=this.parseName(),i=this.parseImplementsInterfaces(),r=this.parseConstDirectives(),o=this.parseFieldsDefinition();return this.node(e,{kind:m.OBJECT_TYPE_DEFINITION,description:t,name:n,interfaces:i,directives:r,fields:o})}parseImplementsInterfaces(){return this.expectOptionalKeyword("implements")?this.delimitedMany(v.AMP,this.parseNamedType):[]}parseFieldsDefinition(){return this.optionalMany(v.BRACE_L,this.parseFieldDefinition,v.BRACE_R)}parseFieldDefinition(){const e=this._lexer.token,t=this.parseDescription(),n=this.parseName(),i=this.parseArgumentDefs();this.expectToken(v.COLON);const r=this.parseTypeReference(),o=this.parseConstDirectives();return this.node(e,{kind:m.FIELD_DEFINITION,description:t,name:n,arguments:i,type:r,directives:o})}parseArgumentDefs(){return this.optionalMany(v.PAREN_L,this.parseInputValueDef,v.PAREN_R)}parseInputValueDef(){const e=this._lexer.token,t=this.parseDescription(),n=this.parseName();this.expectToken(v.COLON);const i=this.parseTypeReference();let r;this.expectOptionalToken(v.EQUALS)&&(r=this.parseConstValueLiteral());const o=this.parseConstDirectives();return this.node(e,{kind:m.INPUT_VALUE_DEFINITION,description:t,name:n,type:i,defaultValue:r,directives:o})}parseInterfaceTypeDefinition(){const e=this._lexer.token,t=this.parseDescription();this.expectKeyword("interface");const n=this.parseName(),i=this.parseImplementsInterfaces(),r=this.parseConstDirectives(),o=this.parseFieldsDefinition();return this.node(e,{kind:m.INTERFACE_TYPE_DEFINITION,description:t,name:n,interfaces:i,directives:r,fields:o})}parseUnionTypeDefinition(){const e=this._lexer.token,t=this.parseDescription();this.expectKeyword("union");const n=this.parseName(),i=this.parseConstDirectives(),r=this.parseUnionMemberTypes();return this.node(e,{kind:m.UNION_TYPE_DEFINITION,description:t,name:n,directives:i,types:r})}parseUnionMemberTypes(){return this.expectOptionalToken(v.EQUALS)?this.delimitedMany(v.PIPE,this.parseNamedType):[]}parseEnumTypeDefinition(){const e=this._lexer.token,t=this.parseDescription();this.expectKeyword("enum");const n=this.parseName(),i=this.parseConstDirectives(),r=this.parseEnumValuesDefinition();return this.node(e,{kind:m.ENUM_TYPE_DEFINITION,description:t,name:n,directives:i,values:r})}parseEnumValuesDefinition(){return this.optionalMany(v.BRACE_L,this.parseEnumValueDefinition,v.BRACE_R)}parseEnumValueDefinition(){const e=this._lexer.token,t=this.parseDescription(),n=this.parseEnumValueName(),i=this.parseConstDirectives();return this.node(e,{kind:m.ENUM_VALUE_DEFINITION,description:t,name:n,directives:i})}parseEnumValueName(){if("true"===this._lexer.token.value||"false"===this._lexer.token.value||"null"===this._lexer.token.value)throw u(this._lexer.source,this._lexer.token.start,`${X(this._lexer.token)} is reserved and cannot be used for an enum value.`);return this.parseName()}parseInputObjectTypeDefinition(){const e=this._lexer.token,t=this.parseDescription();this.expectKeyword("input");const n=this.parseName(),i=this.parseConstDirectives(),r=this.parseInputFieldsDefinition();return this.node(e,{kind:m.INPUT_OBJECT_TYPE_DEFINITION,description:t,name:n,directives:i,fields:r})}parseInputFieldsDefinition(){return this.optionalMany(v.BRACE_L,this.parseInputValueDef,v.BRACE_R)}parseTypeSystemExtension(){const e=this._lexer.lookahead();if(e.kind===v.NAME)switch(e.value){case"schema":return this.parseSchemaExtension();case"scalar":return this.parseScalarTypeExtension();case"type":return this.parseObjectTypeExtension();case"interface":return this.parseInterfaceTypeExtension();case"union":return this.parseUnionTypeExtension();case"enum":return this.parseEnumTypeExtension();case"input":return this.parseInputObjectTypeExtension()}throw this.unexpected(e)}parseSchemaExtension(){const e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("schema");const t=this.parseConstDirectives(),n=this.optionalMany(v.BRACE_L,this.parseOperationTypeDefinition,v.BRACE_R);if(0===t.length&&0===n.length)throw this.unexpected();return this.node(e,{kind:m.SCHEMA_EXTENSION,directives:t,operationTypes:n})}parseScalarTypeExtension(){const e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("scalar");const t=this.parseName(),n=this.parseConstDirectives();if(0===n.length)throw this.unexpected();return this.node(e,{kind:m.SCALAR_TYPE_EXTENSION,name:t,directives:n})}parseObjectTypeExtension(){const e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("type");const t=this.parseName(),n=this.parseImplementsInterfaces(),i=this.parseConstDirectives(),r=this.parseFieldsDefinition();if(0===n.length&&0===i.length&&0===r.length)throw this.unexpected();return this.node(e,{kind:m.OBJECT_TYPE_EXTENSION,name:t,interfaces:n,directives:i,fields:r})}parseInterfaceTypeExtension(){const e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("interface");const t=this.parseName(),n=this.parseImplementsInterfaces(),i=this.parseConstDirectives(),r=this.parseFieldsDefinition();if(0===n.length&&0===i.length&&0===r.length)throw this.unexpected();return this.node(e,{kind:m.INTERFACE_TYPE_EXTENSION,name:t,interfaces:n,directives:i,fields:r})}parseUnionTypeExtension(){const e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("union");const t=this.parseName(),n=this.parseConstDirectives(),i=this.parseUnionMemberTypes();if(0===n.length&&0===i.length)throw this.unexpected();return this.node(e,{kind:m.UNION_TYPE_EXTENSION,name:t,directives:n,types:i})}parseEnumTypeExtension(){const e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("enum");const t=this.parseName(),n=this.parseConstDirectives(),i=this.parseEnumValuesDefinition();if(0===n.length&&0===i.length)throw this.unexpected();return this.node(e,{kind:m.ENUM_TYPE_EXTENSION,name:t,directives:n,values:i})}parseInputObjectTypeExtension(){const e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("input");const t=this.parseName(),n=this.parseConstDirectives(),i=this.parseInputFieldsDefinition();if(0===n.length&&0===i.length)throw this.unexpected();return this.node(e,{kind:m.INPUT_OBJECT_TYPE_EXTENSION,name:t,directives:n,fields:i})}parseDirectiveDefinition(){const e=this._lexer.token,t=this.parseDescription();this.expectKeyword("directive"),this.expectToken(v.AT);const n=this.parseName(),i=this.parseArgumentDefs(),r=this.expectOptionalKeyword("repeatable");this.expectKeyword("on");const o=this.parseDirectiveLocations();return this.node(e,{kind:m.DIRECTIVE_DEFINITION,description:t,name:n,arguments:i,repeatable:r,locations:o})}parseDirectiveLocations(){return this.delimitedMany(v.PIPE,this.parseDirectiveLocation)}parseDirectiveLocation(){const e=this._lexer.token,t=this.parseName();if(Object.prototype.hasOwnProperty.call(h,t.value))return t;throw this.unexpected(e)}node(e,t){var n;return!0!==(null===(n=this._options)||void 0===n?void 0:n.noLocation)&&(t.loc=new Location(e,this._lexer.lastToken,this._lexer.source)),t}peek(e){return this._lexer.token.kind===e}expectToken(e){const t=this._lexer.token;if(t.kind===e)return this._lexer.advance(),t;throw u(this._lexer.source,t.start,`Expected ${z(e)}, found ${X(t)}.`)}expectOptionalToken(e){return this._lexer.token.kind===e&&(this._lexer.advance(),!0)}expectKeyword(e){const t=this._lexer.token;if(t.kind!==v.NAME||t.value!==e)throw u(this._lexer.source,t.start,`Expected "${e}", found ${X(t)}.`);this._lexer.advance()}expectOptionalKeyword(e){const t=this._lexer.token;return t.kind===v.NAME&&t.value===e&&(this._lexer.advance(),!0)}unexpected(e){const t=null!=e?e:this._lexer.token;return u(this._lexer.source,t.start,`Unexpected ${X(t)}.`)}any(e,t,n){this.expectToken(e);const i=[];for(;!this.expectOptionalToken(n);)i.push(t.call(this));return i}optionalMany(e,t,n){if(this.expectOptionalToken(e)){const e=[];do{e.push(t.call(this))}while(!this.expectOptionalToken(n));return e}return[]}many(e,t,n){this.expectToken(e);const i=[];do{i.push(t.call(this))}while(!this.expectOptionalToken(n));return i}delimitedMany(e,t){this.expectOptionalToken(e);const n=[];do{n.push(t.call(this))}while(this.expectOptionalToken(e));return n}}function X(e){const t=e.value;return z(e.kind)+(null!=t?` "${t}"`:"")}function z(e){return function(e){return e===v.BANG||e===v.QUESTION_MARK||e===v.DOLLAR||e===v.AMP||e===v.PAREN_L||e===v.PAREN_R||e===v.SPREAD||e===v.COLON||e===v.EQUALS||e===v.AT||e===v.BRACKET_L||e===v.BRACKET_R||e===v.BRACE_L||e===v.PIPE||e===v.BRACE_R}(e)?`"${e}"`:e}const H=5;function W(e,t){const[n,i]=t?[e,t]:[void 0,e];let r=" Did you mean ";n&&(r+=n+" ");const o=i.map((e=>`"${e}"`));switch(o.length){case 0:return"";case 1:return r+o[0]+"?";case 2:return r+o[0]+" or "+o[1]+"?"}const s=o.slice(0,H),a=s.pop();return r+s.join(", ")+", or "+a+"?"}function Z(e){return e}function ee(e,t){const n=Object.create(null);for(const i of e)n[t(i)]=i;return n}function te(e,t,n){const i=Object.create(null);for(const r of e)i[t(r)]=n(r);return i}function ne(e,t){const n=Object.create(null);for(const i of Object.keys(e))n[i]=t(e[i],i);return n}function ie(e,t){let n=0,i=0;for(;n0);let a=0;do{++i,a=10*a+o-re,o=t.charCodeAt(i)}while(se(o)&&a>0);if(sa)return 1}else{if(ro)return 1;++n,++i}}return e.length-t.length}const re=48,oe=57;function se(e){return!isNaN(e)&&re<=e&&e<=oe}function ae(e,t){const n=Object.create(null),i=new LexicalDistance(e),r=Math.floor(.4*e.length)+1;for(const e of t){const t=i.measure(e,r);void 0!==t&&(n[e]=t)}return Object.keys(n).sort(((e,t)=>{const i=n[e]-n[t];return 0!==i?i:ie(e,t)}))}class LexicalDistance{constructor(e){this._input=e,this._inputLowerCase=e.toLowerCase(),this._inputArray=ce(this._inputLowerCase),this._rows=[new Array(e.length+1).fill(0),new Array(e.length+1).fill(0),new Array(e.length+1).fill(0)]}measure(e,t){if(this._input===e)return 0;const n=e.toLowerCase();if(this._inputLowerCase===n)return 1;let i=ce(n),r=this._inputArray;if(i.lengtht)return;const a=this._rows;for(let e=0;e<=s;e++)a[0][e]=e;for(let e=1;e<=o;e++){const n=a[(e-1)%3],o=a[e%3];let c=o[0]=e;for(let t=1;t<=s;t++){const s=i[e-1]===r[t-1]?0:1;let u=Math.min(n[t]+1,o[t-1]+1,n[t-1]+s);if(e>1&&t>1&&i[e-1]===r[t-2]&&i[e-2]===r[t-1]){const n=a[(e-2)%3][t-2];u=Math.min(u,n+1)}ut)return}const c=a[o%3][s];return c<=t?c:void 0}}function ce(e){const t=e.length,n=new Array(t);for(let i=0;ie.value},Variable:{leave:e=>"$"+e.name},Document:{leave:e=>Te(e.definitions,"\n\n")},OperationDefinition:{leave(e){const t=Ie("(",Te(e.variableDefinitions,", "),")"),n=Te([e.operation,Te([e.name,t]),Te(e.directives," ")]," ");return("query"===n?"":n+" ")+e.selectionSet}},VariableDefinition:{leave:({variable:e,type:t,defaultValue:n,directives:i})=>e+": "+t+Ie(" = ",n)+Ie(" ",Te(i," "))},SelectionSet:{leave:({selections:e})=>Ne(e)},Field:{leave({alias:e,name:t,arguments:n,directives:i,selectionSet:r,required:o}){const s=Te([Ie("",e,": "),t],"");let a=s+Ie("(",Te(n,", "),")");a.length>80&&(a=s+Ie("(\n",ge(Te(n,"\n")),"\n)"));const c=Te([a,o],"");return Te([c,Te(i," "),r]," ")}},RequiredDesignator:{leave:({element:e})=>(null!=e?e:"")+"!"},OptionalDesignator:{leave:({element:e})=>(null!=e?e:"")+"?"},ListNullability:{leave:({element:e})=>"["+(null!=e?e:"")+"]"},Argument:{leave:({name:e,value:t})=>e+": "+t},FragmentSpread:{leave:({name:e,directives:t})=>"..."+e+Ie(" ",Te(t," "))},InlineFragment:{leave:({typeCondition:e,directives:t,selectionSet:n})=>Te(["...",Ie("on ",e),Te(t," "),n]," ")},FragmentDefinition:{leave:({name:e,typeCondition:t,variableDefinitions:n,directives:i,selectionSet:r})=>`fragment ${e}${Ie("(",Te(n,", "),")")} on ${t} ${Ie("",Te(i," ")," ")}`+r},IntValue:{leave:({value:e})=>e},FloatValue:{leave:({value:e})=>e},StringValue:{leave:({value:e,block:t})=>t?function(e,t){const n=e.replace(/"""/g,'\\"""'),i=n.split(/\r\n|[\n\r]/g),r=1===i.length,o=i.length>1&&i.slice(1).every((e=>0===e.length||y(e.charCodeAt(0)))),s=n.endsWith('\\"""'),a=e.endsWith('"')&&!s,c=e.endsWith("\\"),u=a||c,l=!(null!=t&&t.minimize)&&(!r||e.length>70||u||o||s);let p="";const d=r&&y(e.charCodeAt(0));return(l&&!d||o)&&(p+="\n"),p+=n,(l||u)&&(p+="\n"),'"""'+p+'"""'}(e):`"${e.replace(le,pe)}"`},BooleanValue:{leave:({value:e})=>e?"true":"false"},NullValue:{leave:()=>"null"},EnumValue:{leave:({value:e})=>e},ListValue:{leave:({values:e})=>"["+Te(e,", ")+"]"},ObjectValue:{leave:({fields:e})=>"{"+Te(e,", ")+"}"},ObjectField:{leave:({name:e,value:t})=>e+": "+t},Directive:{leave:({name:e,arguments:t})=>"@"+e+Ie("(",Te(t,", "),")")},NamedType:{leave:({name:e})=>e},ListType:{leave:({type:e})=>"["+e+"]"},NonNullType:{leave:({type:e})=>e+"!"},SchemaDefinition:{leave:({description:e,directives:t,operationTypes:n})=>Ie("",e,"\n")+Te(["schema",Te(t," "),Ne(n)]," ")},OperationTypeDefinition:{leave:({operation:e,type:t})=>e+": "+t},ScalarTypeDefinition:{leave:({description:e,name:t,directives:n})=>Ie("",e,"\n")+Te(["scalar",t,Te(n," ")]," ")},ObjectTypeDefinition:{leave:({description:e,name:t,interfaces:n,directives:i,fields:r})=>Ie("",e,"\n")+Te(["type",t,Ie("implements ",Te(n," & ")),Te(i," "),Ne(r)]," ")},FieldDefinition:{leave:({description:e,name:t,arguments:n,type:i,directives:r})=>Ie("",e,"\n")+t+(_e(n)?Ie("(\n",ge(Te(n,"\n")),"\n)"):Ie("(",Te(n,", "),")"))+": "+i+Ie(" ",Te(r," "))},InputValueDefinition:{leave:({description:e,name:t,type:n,defaultValue:i,directives:r})=>Ie("",e,"\n")+Te([t+": "+n,Ie("= ",i),Te(r," ")]," ")},InterfaceTypeDefinition:{leave:({description:e,name:t,interfaces:n,directives:i,fields:r})=>Ie("",e,"\n")+Te(["interface",t,Ie("implements ",Te(n," & ")),Te(i," "),Ne(r)]," ")},UnionTypeDefinition:{leave:({description:e,name:t,directives:n,types:i})=>Ie("",e,"\n")+Te(["union",t,Te(n," "),Ie("= ",Te(i," | "))]," ")},EnumTypeDefinition:{leave:({description:e,name:t,directives:n,values:i})=>Ie("",e,"\n")+Te(["enum",t,Te(n," "),Ne(i)]," ")},EnumValueDefinition:{leave:({description:e,name:t,directives:n})=>Ie("",e,"\n")+Te([t,Te(n," ")]," ")},InputObjectTypeDefinition:{leave:({description:e,name:t,directives:n,fields:i})=>Ie("",e,"\n")+Te(["input",t,Te(n," "),Ne(i)]," ")},DirectiveDefinition:{leave:({description:e,name:t,arguments:n,repeatable:i,locations:r})=>Ie("",e,"\n")+"directive @"+t+(_e(n)?Ie("(\n",ge(Te(n,"\n")),"\n)"):Ie("(",Te(n,", "),")"))+(i?" repeatable":"")+" on "+Te(r," | ")},SchemaExtension:{leave:({directives:e,operationTypes:t})=>Te(["extend schema",Te(e," "),Ne(t)]," ")},ScalarTypeExtension:{leave:({name:e,directives:t})=>Te(["extend scalar",e,Te(t," ")]," ")},ObjectTypeExtension:{leave:({name:e,interfaces:t,directives:n,fields:i})=>Te(["extend type",e,Ie("implements ",Te(t," & ")),Te(n," "),Ne(i)]," ")},InterfaceTypeExtension:{leave:({name:e,interfaces:t,directives:n,fields:i})=>Te(["extend interface",e,Ie("implements ",Te(t," & ")),Te(n," "),Ne(i)]," ")},UnionTypeExtension:{leave:({name:e,directives:t,types:n})=>Te(["extend union",e,Te(t," "),Ie("= ",Te(n," | "))]," ")},EnumTypeExtension:{leave:({name:e,directives:t,values:n})=>Te(["extend enum",e,Te(t," "),Ne(n)]," ")},InputObjectTypeExtension:{leave:({name:e,directives:t,fields:n})=>Te(["extend input",e,Te(t," "),Ne(n)]," ")}};function Te(e,t=""){var n;return null!==(n=null==e?void 0:e.filter((e=>e)).join(t))&&void 0!==n?n:""}function Ne(e){return Ie("{\n",ge(Te(e,"\n")),"\n}")}function Ie(e,t,n=""){return null!=t&&""!==t?e+t+n:""}function ge(e){return Ie(" ",e.replace(/\n/g,"\n "))}function _e(e){var t;return null!==(t=null==e?void 0:e.some((e=>e.includes("\n"))))&&void 0!==t&&t}function Oe(e,t){switch(e.kind){case m.NULL:return null;case m.INT:return parseInt(e.value,10);case m.FLOAT:return parseFloat(e.value);case m.STRING:case m.ENUM:case m.BOOLEAN:return e.value;case m.LIST:return e.values.map((e=>Oe(e,t)));case m.OBJECT:return te(e.fields,(e=>e.name.value),(e=>Oe(e.value,t)));case m.VARIABLE:return null==t?void 0:t[e.name.value]}}function be(e){if(null!=e||t(!1,"Must provide name."),"string"==typeof e||t(!1,"Expected name to be a string."),0===e.length)throw new GraphQLError("Expected name to be a non-empty string.");for(let t=1;ts(Oe(e,t)),this.extensions=ue(e.extensions),this.astNode=e.astNode,this.extensionASTNodes=null!==(o=e.extensionASTNodes)&&void 0!==o?o:[],null==e.specifiedByURL||"string"==typeof e.specifiedByURL||t(!1,`${this.name} must provide "specifiedByURL" as a string, but got: ${Y(e.specifiedByURL)}.`),null==e.serialize||"function"==typeof e.serialize||t(!1,`${this.name} must provide "serialize" function. If this custom Scalar is also used as an input type, ensure "parseValue" and "parseLiteral" functions are also provided.`),e.parseLiteral&&("function"==typeof e.parseValue&&"function"==typeof e.parseLiteral||t(!1,`${this.name} must provide both "parseValue" and "parseLiteral" functions.`))}get[Symbol.toStringTag](){return"GraphQLScalarType"}toConfig(){return{name:this.name,description:this.description,specifiedByURL:this.specifiedByURL,serialize:this.serialize,parseValue:this.parseValue,parseLiteral:this.parseLiteral,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:this.extensionASTNodes}}toString(){return this.name}toJSON(){return this.toString()}}class GraphQLObjectType{constructor(e){var n;this.name=be(e.name),this.description=e.description,this.isTypeOf=e.isTypeOf,this.extensions=ue(e.extensions),this.astNode=e.astNode,this.extensionASTNodes=null!==(n=e.extensionASTNodes)&&void 0!==n?n:[],this._fields=()=>ze(e),this._interfaces=()=>Xe(e),null==e.isTypeOf||"function"==typeof e.isTypeOf||t(!1,`${this.name} must provide "isTypeOf" as a function, but got: ${Y(e.isTypeOf)}.`)}get[Symbol.toStringTag](){return"GraphQLObjectType"}getFields(){return"function"==typeof this._fields&&(this._fields=this._fields()),this._fields}getInterfaces(){return"function"==typeof this._interfaces&&(this._interfaces=this._interfaces()),this._interfaces}toConfig(){return{name:this.name,description:this.description,interfaces:this.getInterfaces(),fields:Ze(this.getFields()),isTypeOf:this.isTypeOf,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:this.extensionASTNodes}}toString(){return this.name}toJSON(){return this.toString()}}function Xe(e){var n;const i=qe(null!==(n=e.interfaces)&&void 0!==n?n:[]);return Array.isArray(i)||t(!1,`${e.name} interfaces must be an Array or a function which returns an Array.`),i}function ze(e){const n=Ke(e.fields);return We(n)||t(!1,`${e.name} fields must be an object with field names as keys or a function which returns such an object.`),ne(n,((n,i)=>{var r;We(n)||t(!1,`${e.name}.${i} field config must be an object.`),null==n.resolve||"function"==typeof n.resolve||t(!1,`${e.name}.${i} field resolver must be a function if provided, but got: ${Y(n.resolve)}.`);const o=null!==(r=n.args)&&void 0!==r?r:{};return We(o)||t(!1,`${e.name}.${i} args must be an object with argument names as keys.`),{name:be(i),description:n.description,type:n.type,args:He(o),resolve:n.resolve,subscribe:n.subscribe,deprecationReason:n.deprecationReason,extensions:ue(n.extensions),astNode:n.astNode}}))}function He(e){return Object.entries(e).map((([e,t])=>({name:be(e),description:t.description,type:t.type,defaultValue:t.defaultValue,deprecationReason:t.deprecationReason,extensions:ue(t.extensions),astNode:t.astNode})))}function We(e){return n(e)&&!Array.isArray(e)}function Ze(e){return ne(e,(e=>({description:e.description,type:e.type,args:et(e.args),resolve:e.resolve,subscribe:e.subscribe,deprecationReason:e.deprecationReason,extensions:e.extensions,astNode:e.astNode})))}function et(e){return te(e,(e=>e.name),(e=>({description:e.description,type:e.type,defaultValue:e.defaultValue,deprecationReason:e.deprecationReason,extensions:e.extensions,astNode:e.astNode})))}function tt(e){return Ge(e.type)&&void 0===e.defaultValue}class GraphQLInterfaceType{constructor(e){var n;this.name=be(e.name),this.description=e.description,this.resolveType=e.resolveType,this.extensions=ue(e.extensions),this.astNode=e.astNode,this.extensionASTNodes=null!==(n=e.extensionASTNodes)&&void 0!==n?n:[],this._fields=ze.bind(void 0,e),this._interfaces=Xe.bind(void 0,e),null==e.resolveType||"function"==typeof e.resolveType||t(!1,`${this.name} must provide "resolveType" as a function, but got: ${Y(e.resolveType)}.`)}get[Symbol.toStringTag](){return"GraphQLInterfaceType"}getFields(){return"function"==typeof this._fields&&(this._fields=this._fields()),this._fields}getInterfaces(){return"function"==typeof this._interfaces&&(this._interfaces=this._interfaces()),this._interfaces}toConfig(){return{name:this.name,description:this.description,interfaces:this.getInterfaces(),fields:Ze(this.getFields()),resolveType:this.resolveType,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:this.extensionASTNodes}}toString(){return this.name}toJSON(){return this.toString()}}class GraphQLUnionType{constructor(e){var n;this.name=be(e.name),this.description=e.description,this.resolveType=e.resolveType,this.extensions=ue(e.extensions),this.astNode=e.astNode,this.extensionASTNodes=null!==(n=e.extensionASTNodes)&&void 0!==n?n:[],this._types=nt.bind(void 0,e),null==e.resolveType||"function"==typeof e.resolveType||t(!1,`${this.name} must provide "resolveType" as a function, but got: ${Y(e.resolveType)}.`)}get[Symbol.toStringTag](){return"GraphQLUnionType"}getTypes(){return"function"==typeof this._types&&(this._types=this._types()),this._types}toConfig(){return{name:this.name,description:this.description,types:this.getTypes(),resolveType:this.resolveType,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:this.extensionASTNodes}}toString(){return this.name}toJSON(){return this.toString()}}function nt(e){const n=qe(e.types);return Array.isArray(n)||t(!1,`Must provide Array of types or a function which returns such an array for Union ${e.name}.`),n}class GraphQLEnumType{constructor(e){var n,i,r;this.name=be(e.name),this.description=e.description,this.extensions=ue(e.extensions),this.astNode=e.astNode,this.extensionASTNodes=null!==(n=e.extensionASTNodes)&&void 0!==n?n:[],this._values=(i=this.name,We(r=e.values)||t(!1,`${i} values must be an object with value names as keys.`),Object.entries(r).map((([e,n])=>(We(n)||t(!1,`${i}.${e} must refer to an object with a "value" key representing an internal value but got: ${Y(n)}.`),{name:Le(e),description:n.description,value:void 0!==n.value?n.value:e,deprecationReason:n.deprecationReason,extensions:ue(n.extensions),astNode:n.astNode})))),this._valueLookup=new Map(this._values.map((e=>[e.value,e]))),this._nameLookup=ee(this._values,(e=>e.name))}get[Symbol.toStringTag](){return"GraphQLEnumType"}getValues(){return this._values}getValue(e){return this._nameLookup[e]}serialize(e){const t=this._valueLookup.get(e);if(void 0===t)throw new GraphQLError(`Enum "${this.name}" cannot represent value: ${Y(e)}`);return t.name}parseValue(e){if("string"!=typeof e){const t=Y(e);throw new GraphQLError(`Enum "${this.name}" cannot represent non-string value: ${t}.`+it(this,t))}const t=this.getValue(e);if(null==t)throw new GraphQLError(`Value "${e}" does not exist in "${this.name}" enum.`+it(this,e));return t.value}parseLiteral(e,t){if(e.kind!==m.ENUM){const t=ye(e);throw new GraphQLError(`Enum "${this.name}" cannot represent non-enum value: ${t}.`+it(this,t),e)}const n=this.getValue(e.value);if(null==n){const t=ye(e);throw new GraphQLError(`Value "${t}" does not exist in "${this.name}" enum.`+it(this,t),e)}return n.value}toConfig(){const e=te(this.getValues(),(e=>e.name),(e=>({description:e.description,value:e.value,deprecationReason:e.deprecationReason,extensions:e.extensions,astNode:e.astNode})));return{name:this.name,description:this.description,values:e,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:this.extensionASTNodes}}toString(){return this.name}toJSON(){return this.toString()}}function it(e,t){return W("the enum value",ae(t,e.getValues().map((e=>e.name))))}class GraphQLInputObjectType{constructor(e){var t;this.name=be(e.name),this.description=e.description,this.extensions=ue(e.extensions),this.astNode=e.astNode,this.extensionASTNodes=null!==(t=e.extensionASTNodes)&&void 0!==t?t:[],this._fields=rt.bind(void 0,e)}get[Symbol.toStringTag](){return"GraphQLInputObjectType"}getFields(){return"function"==typeof this._fields&&(this._fields=this._fields()),this._fields}toConfig(){const e=ne(this.getFields(),(e=>({description:e.description,type:e.type,defaultValue:e.defaultValue,deprecationReason:e.deprecationReason,extensions:e.extensions,astNode:e.astNode})));return{name:this.name,description:this.description,fields:e,extensions:this.extensions,astNode:this.astNode,extensionASTNodes:this.extensionASTNodes}}toString(){return this.name}toJSON(){return this.toString()}}function rt(e){const n=Ke(e.fields);return We(n)||t(!1,`${e.name} fields must be an object with field names as keys or a function which returns such an object.`),ne(n,((n,i)=>(!("resolve"in n)||t(!1,`${e.name}.${i} field has a resolve property, but Input Types cannot define resolvers.`),{name:be(i),description:n.description,type:n.type,defaultValue:n.defaultValue,deprecationReason:n.deprecationReason,extensions:ue(n.extensions),astNode:n.astNode})))}function ot(e){return Ge(e.type)&&void 0===e.defaultValue}function st(e,t){return e===t||(Ge(e)&&Ge(t)||!(!Re(e)||!Re(t)))&&st(e.ofType,t.ofType)}function at(e,t,n){return t===n||(Ge(n)?!!Ge(t)&&at(e,t.ofType,n.ofType):Ge(t)?at(e,t.ofType,n):Re(n)?!!Re(t)&&at(e,t.ofType,n.ofType):!Re(t)&&(Ve(n)&&(we(t)||De(t))&&e.isSubType(n,t)))}function ct(e,t,n){return t===n||(Ve(t)?Ve(n)?e.getPossibleTypes(t).some((t=>e.isSubType(n,t))):e.isSubType(t,n):!!Ve(n)&&e.isSubType(n,t))}const ut=2147483647,lt=-2147483648,pt=new GraphQLScalarType({name:"Int",description:"The `Int` scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.",serialize(e){const t=Et(e);if("boolean"==typeof t)return t?1:0;let n=t;if("string"==typeof t&&""!==t&&(n=Number(t)),"number"!=typeof n||!Number.isInteger(n))throw new GraphQLError(`Int cannot represent non-integer value: ${Y(t)}`);if(n>ut||nut||eut||te.name===t))}function Et(e){if(n(e)){if("function"==typeof e.valueOf){const t=e.valueOf();if(!n(t))return t}if("function"==typeof e.toJSON)return e.toJSON()}return e}function Tt(e){return q(e,GraphQLDirective)}class GraphQLDirective{constructor(e){var i,r;this.name=be(e.name),this.description=e.description,this.locations=e.locations,this.isRepeatable=null!==(i=e.isRepeatable)&&void 0!==i&&i,this.extensions=ue(e.extensions),this.astNode=e.astNode,Array.isArray(e.locations)||t(!1,`@${e.name} locations must be an Array.`);const o=null!==(r=e.args)&&void 0!==r?r:{};n(o)&&!Array.isArray(o)||t(!1,`@${e.name} args must be an object with argument names as keys.`),this.args=He(o)}get[Symbol.toStringTag](){return"GraphQLDirective"}toConfig(){return{name:this.name,description:this.description,locations:this.locations,args:et(this.args),isRepeatable:this.isRepeatable,extensions:this.extensions,astNode:this.astNode}}toString(){return"@"+this.name}toJSON(){return this.toString()}}const Nt=new GraphQLDirective({name:"include",description:"Directs the executor to include this field or fragment only when the `if` argument is true.",locations:[h.FIELD,h.FRAGMENT_SPREAD,h.INLINE_FRAGMENT],args:{if:{type:new GraphQLNonNull(ht),description:"Included when true."}}}),It=new GraphQLDirective({name:"skip",description:"Directs the executor to skip this field or fragment when the `if` argument is true.",locations:[h.FIELD,h.FRAGMENT_SPREAD,h.INLINE_FRAGMENT],args:{if:{type:new GraphQLNonNull(ht),description:"Skipped when true."}}}),gt="No longer supported",_t=new GraphQLDirective({name:"deprecated",description:"Marks an element of a GraphQL schema as no longer supported.",locations:[h.FIELD_DEFINITION,h.ARGUMENT_DEFINITION,h.INPUT_FIELD_DEFINITION,h.ENUM_VALUE],args:{reason:{type:ft,description:"Explains why this element was deprecated, usually also including a suggestion for how to access supported similar data. Formatted using the Markdown syntax, as specified by [CommonMark](https://commonmark.org/).",defaultValue:gt}}}),Ot=new GraphQLDirective({name:"specifiedBy",description:"Exposes a URL that specifies the behavior of this scalar.",locations:[h.SCALAR],args:{url:{type:new GraphQLNonNull(ft),description:"The URL that specifies the behavior of this scalar."}}}),bt=Object.freeze([Nt,It,_t,Ot]);function Lt(e,t){if(Ge(t)){const n=Lt(e,t.ofType);return(null==n?void 0:n.kind)===m.NULL?null:n}if(null===e)return{kind:m.NULL};if(void 0===e)return null;if(Re(t)){const n=t.ofType;if("object"==typeof(r=e)&&"function"==typeof(null==r?void 0:r[Symbol.iterator])){const t=[];for(const i of e){const e=Lt(i,n);null!=e&&t.push(e)}return{kind:m.LIST,values:t}}return Lt(e,n)}var r;if(Fe(t)){if(!n(e))return null;const i=[];for(const n of Object.values(t.getFields())){const t=Lt(e[n.name],n.type);t&&i.push({kind:m.OBJECT_FIELD,name:{kind:m.NAME,value:n.name},value:t})}return{kind:m.OBJECT,fields:i}}if(Ue(t)){const n=t.serialize(e);if(null==n)return null;if("boolean"==typeof n)return{kind:m.BOOLEAN,value:n};if("number"==typeof n&&Number.isFinite(n)){const e=String(n);return St.test(e)?{kind:m.INT,value:e}:{kind:m.FLOAT,value:e}}if("string"==typeof n)return xe(t)?{kind:m.ENUM,value:n}:t===mt&&St.test(n)?{kind:m.INT,value:n}:{kind:m.STRING,value:n};throw new TypeError(`Cannot convert value to AST: ${Y(n)}.`)}i(!1,"Unexpected input type: "+Y(t))}const St=/^-?(?:0|[1-9][0-9]*)$/,At=new GraphQLObjectType({name:"__Schema",description:"A GraphQL Schema defines the capabilities of a GraphQL server. It exposes all available types and directives on the server, as well as the entry points for query, mutation, and subscription operations.",fields:()=>({description:{type:ft,resolve:e=>e.description},types:{description:"A list of all types supported by this server.",type:new GraphQLNonNull(new GraphQLList(new GraphQLNonNull(kt))),resolve:e=>Object.values(e.getTypeMap())},queryType:{description:"The type that query operations will be rooted at.",type:new GraphQLNonNull(kt),resolve:e=>e.getQueryType()},mutationType:{description:"If this server supports mutation, the type that mutation operations will be rooted at.",type:kt,resolve:e=>e.getMutationType()},subscriptionType:{description:"If this server support subscription, the type that subscription operations will be rooted at.",type:kt,resolve:e=>e.getSubscriptionType()},directives:{description:"A list of all directives supported by this server.",type:new GraphQLNonNull(new GraphQLList(new GraphQLNonNull(Dt))),resolve:e=>e.getDirectives()}})}),Dt=new GraphQLObjectType({name:"__Directive",description:"A Directive provides a way to describe alternate runtime execution and type validation behavior in a GraphQL document.\n\nIn some cases, you need to provide options to alter GraphQL's execution behavior in ways field arguments will not suffice, such as conditionally including or skipping a field. Directives provide this by describing additional information to the executor.",fields:()=>({name:{type:new GraphQLNonNull(ft),resolve:e=>e.name},description:{type:ft,resolve:e=>e.description},isRepeatable:{type:new GraphQLNonNull(ht),resolve:e=>e.isRepeatable},locations:{type:new GraphQLNonNull(new GraphQLList(new GraphQLNonNull(wt))),resolve:e=>e.locations},args:{type:new GraphQLNonNull(new GraphQLList(new GraphQLNonNull(Ft))),args:{includeDeprecated:{type:ht,defaultValue:!1}},resolve:(e,{includeDeprecated:t})=>t?e.args:e.args.filter((e=>null==e.deprecationReason))}})}),wt=new GraphQLEnumType({name:"__DirectiveLocation",description:"A Directive can be adjacent to many parts of the GraphQL language, a __DirectiveLocation describes one such possible adjacencies.",values:{QUERY:{value:h.QUERY,description:"Location adjacent to a query operation."},MUTATION:{value:h.MUTATION,description:"Location adjacent to a mutation operation."},SUBSCRIPTION:{value:h.SUBSCRIPTION,description:"Location adjacent to a subscription operation."},FIELD:{value:h.FIELD,description:"Location adjacent to a field."},FRAGMENT_DEFINITION:{value:h.FRAGMENT_DEFINITION,description:"Location adjacent to a fragment definition."},FRAGMENT_SPREAD:{value:h.FRAGMENT_SPREAD,description:"Location adjacent to a fragment spread."},INLINE_FRAGMENT:{value:h.INLINE_FRAGMENT,description:"Location adjacent to an inline fragment."},VARIABLE_DEFINITION:{value:h.VARIABLE_DEFINITION,description:"Location adjacent to a variable definition."},SCHEMA:{value:h.SCHEMA,description:"Location adjacent to a schema definition."},SCALAR:{value:h.SCALAR,description:"Location adjacent to a scalar definition."},OBJECT:{value:h.OBJECT,description:"Location adjacent to an object type definition."},FIELD_DEFINITION:{value:h.FIELD_DEFINITION,description:"Location adjacent to a field definition."},ARGUMENT_DEFINITION:{value:h.ARGUMENT_DEFINITION,description:"Location adjacent to an argument definition."},INTERFACE:{value:h.INTERFACE,description:"Location adjacent to an interface definition."},UNION:{value:h.UNION,description:"Location adjacent to a union definition."},ENUM:{value:h.ENUM,description:"Location adjacent to an enum definition."},ENUM_VALUE:{value:h.ENUM_VALUE,description:"Location adjacent to an enum value definition."},INPUT_OBJECT:{value:h.INPUT_OBJECT,description:"Location adjacent to an input object type definition."},INPUT_FIELD_DEFINITION:{value:h.INPUT_FIELD_DEFINITION,description:"Location adjacent to an input object field definition."}}}),kt=new GraphQLObjectType({name:"__Type",description:"The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.\n\nDepending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name, description and optional `specifiedByURL`, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.",fields:()=>({kind:{type:new GraphQLNonNull(Gt),resolve:e=>Ae(e)?Ct.SCALAR:De(e)?Ct.OBJECT:we(e)?Ct.INTERFACE:ke(e)?Ct.UNION:xe(e)?Ct.ENUM:Fe(e)?Ct.INPUT_OBJECT:Re(e)?Ct.LIST:Ge(e)?Ct.NON_NULL:void i(!1,`Unexpected type: "${Y(e)}".`)},name:{type:ft,resolve:e=>"name"in e?e.name:void 0},description:{type:ft,resolve:e=>"description"in e?e.description:void 0},specifiedByURL:{type:ft,resolve:e=>"specifiedByURL"in e?e.specifiedByURL:void 0},fields:{type:new GraphQLList(new GraphQLNonNull(xt)),args:{includeDeprecated:{type:ht,defaultValue:!1}},resolve(e,{includeDeprecated:t}){if(De(e)||we(e)){const n=Object.values(e.getFields());return t?n:n.filter((e=>null==e.deprecationReason))}}},interfaces:{type:new GraphQLList(new GraphQLNonNull(kt)),resolve(e){if(De(e)||we(e))return e.getInterfaces()}},possibleTypes:{type:new GraphQLList(new GraphQLNonNull(kt)),resolve(e,t,n,{schema:i}){if(Ve(e))return i.getPossibleTypes(e)}},enumValues:{type:new GraphQLList(new GraphQLNonNull(Rt)),args:{includeDeprecated:{type:ht,defaultValue:!1}},resolve(e,{includeDeprecated:t}){if(xe(e)){const n=e.getValues();return t?n:n.filter((e=>null==e.deprecationReason))}}},inputFields:{type:new GraphQLList(new GraphQLNonNull(Ft)),args:{includeDeprecated:{type:ht,defaultValue:!1}},resolve(e,{includeDeprecated:t}){if(Fe(e)){const n=Object.values(e.getFields());return t?n:n.filter((e=>null==e.deprecationReason))}}},ofType:{type:kt,resolve:e=>"ofType"in e?e.ofType:void 0}})}),xt=new GraphQLObjectType({name:"__Field",description:"Object and Interface types are described by a list of Fields, each of which has a name, potentially a list of arguments, and a return type.",fields:()=>({name:{type:new GraphQLNonNull(ft),resolve:e=>e.name},description:{type:ft,resolve:e=>e.description},args:{type:new GraphQLNonNull(new GraphQLList(new GraphQLNonNull(Ft))),args:{includeDeprecated:{type:ht,defaultValue:!1}},resolve:(e,{includeDeprecated:t})=>t?e.args:e.args.filter((e=>null==e.deprecationReason))},type:{type:new GraphQLNonNull(kt),resolve:e=>e.type},isDeprecated:{type:new GraphQLNonNull(ht),resolve:e=>null!=e.deprecationReason},deprecationReason:{type:ft,resolve:e=>e.deprecationReason}})}),Ft=new GraphQLObjectType({name:"__InputValue",description:"Arguments provided to Fields or Directives and the input fields of an InputObject are represented as Input Values which describe their type and optionally a default value.",fields:()=>({name:{type:new GraphQLNonNull(ft),resolve:e=>e.name},description:{type:ft,resolve:e=>e.description},type:{type:new GraphQLNonNull(kt),resolve:e=>e.type},defaultValue:{type:ft,description:"A GraphQL-formatted string representing the default value for this input value.",resolve(e){const{type:t,defaultValue:n}=e,i=Lt(n,t);return i?ye(i):null}},isDeprecated:{type:new GraphQLNonNull(ht),resolve:e=>null!=e.deprecationReason},deprecationReason:{type:ft,resolve:e=>e.deprecationReason}})}),Rt=new GraphQLObjectType({name:"__EnumValue",description:"One possible value for a given Enum. Enum values are unique values, not a placeholder for a string or numeric value. However an Enum value is returned in a JSON response as a string.",fields:()=>({name:{type:new GraphQLNonNull(ft),resolve:e=>e.name},description:{type:ft,resolve:e=>e.description},isDeprecated:{type:new GraphQLNonNull(ht),resolve:e=>null!=e.deprecationReason},deprecationReason:{type:ft,resolve:e=>e.deprecationReason}})});let Ct;!function(e){e.SCALAR="SCALAR",e.OBJECT="OBJECT",e.INTERFACE="INTERFACE",e.UNION="UNION",e.ENUM="ENUM",e.INPUT_OBJECT="INPUT_OBJECT",e.LIST="LIST",e.NON_NULL="NON_NULL"}(Ct||(Ct={}));const Gt=new GraphQLEnumType({name:"__TypeKind",description:"An enum describing what kind of type a given `__Type` is.",values:{SCALAR:{value:Ct.SCALAR,description:"Indicates this type is a scalar."},OBJECT:{value:Ct.OBJECT,description:"Indicates this type is an object. `fields` and `interfaces` are valid fields."},INTERFACE:{value:Ct.INTERFACE,description:"Indicates this type is an interface. `fields`, `interfaces`, and `possibleTypes` are valid fields."},UNION:{value:Ct.UNION,description:"Indicates this type is a union. `possibleTypes` is a valid field."},ENUM:{value:Ct.ENUM,description:"Indicates this type is an enum. `enumValues` is a valid field."},INPUT_OBJECT:{value:Ct.INPUT_OBJECT,description:"Indicates this type is an input object. `inputFields` is a valid field."},LIST:{value:Ct.LIST,description:"Indicates this type is a list. `ofType` is a valid field."},NON_NULL:{value:Ct.NON_NULL,description:"Indicates this type is a non-null. `ofType` is a valid field."}}}),$t={name:"__schema",type:new GraphQLNonNull(At),description:"Access the current type schema of this server.",args:[],resolve:(e,t,n,{schema:i})=>i,deprecationReason:void 0,extensions:Object.create(null),astNode:void 0},Qt={name:"__type",type:kt,description:"Request the type information of a single type.",args:[{name:"name",description:void 0,type:new GraphQLNonNull(ft),defaultValue:void 0,deprecationReason:void 0,extensions:Object.create(null),astNode:void 0}],resolve:(e,{name:t},n,{schema:i})=>i.getType(t),deprecationReason:void 0,extensions:Object.create(null),astNode:void 0},Ut={name:"__typename",type:new GraphQLNonNull(ft),description:"The name of the current Object type at runtime.",args:[],resolve:(e,t,n,{parentType:i})=>i.name,deprecationReason:void 0,extensions:Object.create(null),astNode:void 0},jt=Object.freeze([At,Dt,wt,kt,xt,Ft,Rt,Gt]);function Vt(e){return jt.some((({name:t})=>e.name===t))}function Mt(e){if(!function(e){return q(e,GraphQLSchema)}(e))throw new Error(`Expected ${Y(e)} to be a GraphQL schema.`);return e}class GraphQLSchema{constructor(e){var i,r;this.__validationErrors=!0===e.assumeValid?[]:void 0,n(e)||t(!1,"Must provide configuration object."),!e.types||Array.isArray(e.types)||t(!1,`"types" must be Array if provided but got: ${Y(e.types)}.`),!e.directives||Array.isArray(e.directives)||t(!1,`"directives" must be Array if provided but got: ${Y(e.directives)}.`),this.description=e.description,this.extensions=ue(e.extensions),this.astNode=e.astNode,this.extensionASTNodes=null!==(i=e.extensionASTNodes)&&void 0!==i?i:[],this._queryType=e.query,this._mutationType=e.mutation,this._subscriptionType=e.subscription,this._directives=null!==(r=e.directives)&&void 0!==r?r:bt;const o=new Set(e.types);if(null!=e.types)for(const t of e.types)o.delete(t),Pt(t,o);null!=this._queryType&&Pt(this._queryType,o),null!=this._mutationType&&Pt(this._mutationType,o),null!=this._subscriptionType&&Pt(this._subscriptionType,o);for(const e of this._directives)if(Tt(e))for(const t of e.args)Pt(t.type,o);Pt(At,o),this._typeMap=Object.create(null),this._subTypeMap=Object.create(null),this._implementationsMap=Object.create(null);for(const e of o){if(null==e)continue;const n=e.name;if(n||t(!1,"One of the provided types for building the Schema is missing a name."),void 0!==this._typeMap[n])throw new Error(`Schema must contain uniquely named types but contains multiple types named "${n}".`);if(this._typeMap[n]=e,we(e)){for(const t of e.getInterfaces())if(we(t)){let n=this._implementationsMap[t.name];void 0===n&&(n=this._implementationsMap[t.name]={objects:[],interfaces:[]}),n.interfaces.push(e)}}else if(De(e))for(const t of e.getInterfaces())if(we(t)){let n=this._implementationsMap[t.name];void 0===n&&(n=this._implementationsMap[t.name]={objects:[],interfaces:[]}),n.objects.push(e)}}}get[Symbol.toStringTag](){return"GraphQLSchema"}getQueryType(){return this._queryType}getMutationType(){return this._mutationType}getSubscriptionType(){return this._subscriptionType}getRootType(e){switch(e){case f.QUERY:return this.getQueryType();case f.MUTATION:return this.getMutationType();case f.SUBSCRIPTION:return this.getSubscriptionType()}}getTypeMap(){return this._typeMap}getType(e){return this.getTypeMap()[e]}getPossibleTypes(e){return ke(e)?e.getTypes():this.getImplementations(e).objects}getImplementations(e){const t=this._implementationsMap[e.name];return null!=t?t:{objects:[],interfaces:[]}}isSubType(e,t){let n=this._subTypeMap[e.name];if(void 0===n){if(n=Object.create(null),ke(e))for(const t of e.getTypes())n[t.name]=!0;else{const t=this.getImplementations(e);for(const e of t.objects)n[e.name]=!0;for(const e of t.interfaces)n[e.name]=!0}this._subTypeMap[e.name]=n}return void 0!==n[t.name]}getDirectives(){return this._directives}getDirective(e){return this.getDirectives().find((t=>t.name===e))}toConfig(){return{description:this.description,query:this.getQueryType(),mutation:this.getMutationType(),subscription:this.getSubscriptionType(),types:Object.values(this.getTypeMap()),directives:this.getDirectives(),extensions:this.extensions,astNode:this.astNode,extensionASTNodes:this.extensionASTNodes,assumeValid:void 0!==this.__validationErrors}}}function Pt(e,t){const n=Je(e);if(!t.has(n))if(t.add(n),ke(n))for(const e of n.getTypes())Pt(e,t);else if(De(n)||we(n)){for(const e of n.getInterfaces())Pt(e,t);for(const e of Object.values(n.getFields())){Pt(e.type,t);for(const n of e.args)Pt(n.type,t)}}else if(Fe(n))for(const e of Object.values(n.getFields()))Pt(e.type,t);return t}function Bt(e){if(Mt(e),e.__validationErrors)return e.__validationErrors;const t=new SchemaValidationContext(e);!function(e){const t=e.schema,n=t.getQueryType();if(n){if(!De(n)){var i;e.reportError(`Query root type must be Object type, it cannot be ${Y(n)}.`,null!==(i=Yt(t,f.QUERY))&&void 0!==i?i:n.astNode)}}else e.reportError("Query root type must be provided.",t.astNode);const r=t.getMutationType();var o;r&&!De(r)&&e.reportError(`Mutation root type must be Object type if provided, it cannot be ${Y(r)}.`,null!==(o=Yt(t,f.MUTATION))&&void 0!==o?o:r.astNode);const s=t.getSubscriptionType();var a;s&&!De(s)&&e.reportError(`Subscription root type must be Object type if provided, it cannot be ${Y(s)}.`,null!==(a=Yt(t,f.SUBSCRIPTION))&&void 0!==a?a:s.astNode)}(t),function(e){for(const n of e.schema.getDirectives())if(Tt(n)){Jt(e,n);for(const i of n.args){var t;if(Jt(e,i),$e(i.type)||e.reportError(`The type of @${n.name}(${i.name}:) must be Input Type but got: ${Y(i.type)}.`,i.astNode),tt(i)&&null!=i.deprecationReason)e.reportError(`Required argument @${n.name}(${i.name}:) cannot be deprecated.`,[nn(i.astNode),null===(t=i.astNode)||void 0===t?void 0:t.type])}}else e.reportError(`Expected directive but got: ${Y(n)}.`,null==n?void 0:n.astNode)}(t),function(e){const t=function(e){const t=Object.create(null),n=[],i=Object.create(null);return r;function r(o){if(t[o.name])return;t[o.name]=!0,i[o.name]=n.length;const s=Object.values(o.getFields());for(const t of s)if(Ge(t.type)&&Fe(t.type.ofType)){const o=t.type.ofType,s=i[o.name];if(n.push(t),void 0===s)r(o);else{const t=n.slice(s),i=t.map((e=>e.name)).join(".");e.reportError(`Cannot reference Input Object "${o.name}" within itself through a series of non-null fields: "${i}".`,t.map((e=>e.astNode)))}n.pop()}i[o.name]=void 0}}(e),n=e.schema.getTypeMap();for(const i of Object.values(n))Ye(i)?(Vt(i)||Jt(e,i),De(i)||we(i)?(qt(e,i),Kt(e,i)):ke(i)?Ht(e,i):xe(i)?Wt(e,i):Fe(i)&&(Zt(e,i),t(i))):e.reportError(`Expected GraphQL named type but got: ${Y(i)}.`,i.astNode)}(t);const n=t.getErrors();return e.__validationErrors=n,n}class SchemaValidationContext{constructor(e){this._errors=[],this.schema=e}reportError(e,t){const n=Array.isArray(t)?t.filter(Boolean):t;this._errors.push(new GraphQLError(e,n))}getErrors(){return this._errors}}function Yt(e,t){var n;return null===(n=[e.astNode,...e.extensionASTNodes].flatMap((e=>{var t;return null!==(t=null==e?void 0:e.operationTypes)&&void 0!==t?t:[]})).find((e=>e.operation===t)))||void 0===n?void 0:n.type}function Jt(e,t){t.name.startsWith("__")&&e.reportError(`Name "${t.name}" must not begin with "__", which is reserved by GraphQL introspection.`,t.astNode)}function qt(e,t){const n=Object.values(t.getFields());0===n.length&&e.reportError(`Type ${t.name} must define one or more fields.`,[t.astNode,...t.extensionASTNodes]);for(const s of n){var i;if(Jt(e,s),!Qe(s.type))e.reportError(`The type of ${t.name}.${s.name} must be Output Type but got: ${Y(s.type)}.`,null===(i=s.astNode)||void 0===i?void 0:i.type);for(const n of s.args){const i=n.name;var r,o;if(Jt(e,n),!$e(n.type))e.reportError(`The type of ${t.name}.${s.name}(${i}:) must be Input Type but got: ${Y(n.type)}.`,null===(r=n.astNode)||void 0===r?void 0:r.type);if(tt(n)&&null!=n.deprecationReason)e.reportError(`Required argument ${t.name}.${s.name}(${i}:) cannot be deprecated.`,[nn(n.astNode),null===(o=n.astNode)||void 0===o?void 0:o.type])}}}function Kt(e,t){const n=Object.create(null);for(const i of t.getInterfaces())we(i)?t!==i?n[i.name]?e.reportError(`Type ${t.name} can only implement ${i.name} once.`,en(t,i)):(n[i.name]=!0,zt(e,t,i),Xt(e,t,i)):e.reportError(`Type ${t.name} cannot implement itself because it would create a circular reference.`,en(t,i)):e.reportError(`Type ${Y(t)} must only implement Interface types, it cannot implement ${Y(i)}.`,en(t,i))}function Xt(e,t,n){const i=t.getFields();for(const c of Object.values(n.getFields())){const u=c.name,l=i[u];if(l){var r,o;if(!at(e.schema,l.type,c.type))e.reportError(`Interface field ${n.name}.${u} expects type ${Y(c.type)} but ${t.name}.${u} is type ${Y(l.type)}.`,[null===(r=c.astNode)||void 0===r?void 0:r.type,null===(o=l.astNode)||void 0===o?void 0:o.type]);for(const i of c.args){const r=i.name,o=l.args.find((e=>e.name===r));var s,a;if(o){if(!st(i.type,o.type))e.reportError(`Interface field argument ${n.name}.${u}(${r}:) expects type ${Y(i.type)} but ${t.name}.${u}(${r}:) is type ${Y(o.type)}.`,[null===(s=i.astNode)||void 0===s?void 0:s.type,null===(a=o.astNode)||void 0===a?void 0:a.type])}else e.reportError(`Interface field argument ${n.name}.${u}(${r}:) expected but ${t.name}.${u} does not provide it.`,[i.astNode,l.astNode])}for(const i of l.args){const r=i.name;!c.args.find((e=>e.name===r))&&tt(i)&&e.reportError(`Object field ${t.name}.${u} includes required argument ${r} that is missing from the Interface field ${n.name}.${u}.`,[i.astNode,c.astNode])}}else e.reportError(`Interface field ${n.name}.${u} expected but ${t.name} does not provide it.`,[c.astNode,t.astNode,...t.extensionASTNodes])}}function zt(e,t,n){const i=t.getInterfaces();for(const r of n.getInterfaces())i.includes(r)||e.reportError(r===t?`Type ${t.name} cannot implement ${n.name} because it would create a circular reference.`:`Type ${t.name} must implement ${r.name} because it is implemented by ${n.name}.`,[...en(n,r),...en(t,n)])}function Ht(e,t){const n=t.getTypes();0===n.length&&e.reportError(`Union type ${t.name} must define one or more member types.`,[t.astNode,...t.extensionASTNodes]);const i=Object.create(null);for(const r of n)i[r.name]?e.reportError(`Union type ${t.name} can only include type ${r.name} once.`,tn(t,r.name)):(i[r.name]=!0,De(r)||e.reportError(`Union type ${t.name} can only include Object types, it cannot include ${Y(r)}.`,tn(t,String(r))))}function Wt(e,t){const n=t.getValues();0===n.length&&e.reportError(`Enum type ${t.name} must define one or more values.`,[t.astNode,...t.extensionASTNodes]);for(const t of n)Jt(e,t)}function Zt(e,t){const n=Object.values(t.getFields());0===n.length&&e.reportError(`Input Object type ${t.name} must define one or more fields.`,[t.astNode,...t.extensionASTNodes]);for(const o of n){var i,r;if(Jt(e,o),!$e(o.type))e.reportError(`The type of ${t.name}.${o.name} must be Input Type but got: ${Y(o.type)}.`,null===(i=o.astNode)||void 0===i?void 0:i.type);if(ot(o)&&null!=o.deprecationReason)e.reportError(`Required input field ${t.name}.${o.name} cannot be deprecated.`,[nn(o.astNode),null===(r=o.astNode)||void 0===r?void 0:r.type])}}function en(e,t){const{astNode:n,extensionASTNodes:i}=e;return(null!=n?[n,...i]:i).flatMap((e=>{var t;return null!==(t=e.interfaces)&&void 0!==t?t:[]})).filter((e=>e.name.value===t.name))}function tn(e,t){const{astNode:n,extensionASTNodes:i}=e;return(null!=n?[n,...i]:i).flatMap((e=>{var t;return null!==(t=e.types)&&void 0!==t?t:[]})).filter((e=>e.name.value===t))}function nn(e){var t;return null==e||null===(t=e.directives)||void 0===t?void 0:t.find((e=>e.name.value===_t.name))}function rn(e,t){switch(t.kind){case m.LIST_TYPE:{const n=rn(e,t.type);return n&&new GraphQLList(n)}case m.NON_NULL_TYPE:{const n=rn(e,t.type);return n&&new GraphQLNonNull(n)}case m.NAMED_TYPE:return e.getType(t.name.value)}}class TypeInfo{constructor(e,t,n){this._schema=e,this._typeStack=[],this._parentTypeStack=[],this._inputTypeStack=[],this._fieldDefStack=[],this._defaultValueStack=[],this._directive=null,this._argument=null,this._enumValue=null,this._getFieldDef=null!=n?n:on,t&&($e(t)&&this._inputTypeStack.push(t),je(t)&&this._parentTypeStack.push(t),Qe(t)&&this._typeStack.push(t))}get[Symbol.toStringTag](){return"TypeInfo"}getType(){if(this._typeStack.length>0)return this._typeStack[this._typeStack.length-1]}getParentType(){if(this._parentTypeStack.length>0)return this._parentTypeStack[this._parentTypeStack.length-1]}getInputType(){if(this._inputTypeStack.length>0)return this._inputTypeStack[this._inputTypeStack.length-1]}getParentInputType(){if(this._inputTypeStack.length>1)return this._inputTypeStack[this._inputTypeStack.length-2]}getFieldDef(){if(this._fieldDefStack.length>0)return this._fieldDefStack[this._fieldDefStack.length-1]}getDefaultValue(){if(this._defaultValueStack.length>0)return this._defaultValueStack[this._defaultValueStack.length-1]}getDirective(){return this._directive}getArgument(){return this._argument}getEnumValue(){return this._enumValue}enter(e){const t=this._schema;switch(e.kind){case m.SELECTION_SET:{const e=Je(this.getType());this._parentTypeStack.push(je(e)?e:void 0);break}case m.FIELD:{const n=this.getParentType();let i,r;n&&(i=this._getFieldDef(t,n,e),i&&(r=i.type)),this._fieldDefStack.push(i),this._typeStack.push(Qe(r)?r:void 0);break}case m.DIRECTIVE:this._directive=t.getDirective(e.name.value);break;case m.OPERATION_DEFINITION:{const n=t.getRootType(e.operation);this._typeStack.push(De(n)?n:void 0);break}case m.INLINE_FRAGMENT:case m.FRAGMENT_DEFINITION:{const n=e.typeCondition,i=n?rn(t,n):Je(this.getType());this._typeStack.push(Qe(i)?i:void 0);break}case m.VARIABLE_DEFINITION:{const n=rn(t,e.type);this._inputTypeStack.push($e(n)?n:void 0);break}case m.ARGUMENT:{var n;let t,i;const r=null!==(n=this.getDirective())&&void 0!==n?n:this.getFieldDef();r&&(t=r.args.find((t=>t.name===e.name.value)),t&&(i=t.type)),this._argument=t,this._defaultValueStack.push(t?t.defaultValue:void 0),this._inputTypeStack.push($e(i)?i:void 0);break}case m.LIST:{const e=Be(this.getInputType()),t=Re(e)?e.ofType:e;this._defaultValueStack.push(void 0),this._inputTypeStack.push($e(t)?t:void 0);break}case m.OBJECT_FIELD:{const t=Je(this.getInputType());let n,i;Fe(t)&&(i=t.getFields()[e.name.value],i&&(n=i.type)),this._defaultValueStack.push(i?i.defaultValue:void 0),this._inputTypeStack.push($e(n)?n:void 0);break}case m.ENUM:{const t=Je(this.getInputType());let n;xe(t)&&(n=t.getValue(e.value)),this._enumValue=n;break}}}leave(e){switch(e.kind){case m.SELECTION_SET:this._parentTypeStack.pop();break;case m.FIELD:this._fieldDefStack.pop(),this._typeStack.pop();break;case m.DIRECTIVE:this._directive=null;break;case m.OPERATION_DEFINITION:case m.INLINE_FRAGMENT:case m.FRAGMENT_DEFINITION:this._typeStack.pop();break;case m.VARIABLE_DEFINITION:this._inputTypeStack.pop();break;case m.ARGUMENT:this._argument=null,this._defaultValueStack.pop(),this._inputTypeStack.pop();break;case m.LIST:case m.OBJECT_FIELD:this._defaultValueStack.pop(),this._inputTypeStack.pop();break;case m.ENUM:this._enumValue=null}}}function on(e,t,n){const i=n.name.value;return i===$t.name&&e.getQueryType()===t?$t:i===Qt.name&&e.getQueryType()===t?Qt:i===Ut.name&&je(t)?Ut:De(t)||we(t)?t.getFields()[i]:void 0}function sn(e,t){return{enter(...n){const i=n[0];e.enter(i);const r=ve(t,i.kind).enter;if(r){const o=r.apply(t,n);return void 0!==o&&(e.leave(i),d(o)&&e.enter(o)),o}},leave(...n){const i=n[0],r=ve(t,i.kind).leave;let o;return r&&(o=r.apply(t,n)),e.leave(i),o}}}function an(e){return e.kind===m.OPERATION_DEFINITION||e.kind===m.FRAGMENT_DEFINITION}function cn(e){return e.kind===m.SCALAR_TYPE_DEFINITION||e.kind===m.OBJECT_TYPE_DEFINITION||e.kind===m.INTERFACE_TYPE_DEFINITION||e.kind===m.UNION_TYPE_DEFINITION||e.kind===m.ENUM_TYPE_DEFINITION||e.kind===m.INPUT_OBJECT_TYPE_DEFINITION}function un(e){return e.kind===m.SCALAR_TYPE_EXTENSION||e.kind===m.OBJECT_TYPE_EXTENSION||e.kind===m.INTERFACE_TYPE_EXTENSION||e.kind===m.UNION_TYPE_EXTENSION||e.kind===m.ENUM_TYPE_EXTENSION||e.kind===m.INPUT_OBJECT_TYPE_EXTENSION}function ln(e){const t=Object.create(null),n=e.getSchema(),i=n?n.getDirectives():bt;for(const e of i)t[e.name]=e.args.map((e=>e.name));const r=e.getDocument().definitions;for(const e of r)if(e.kind===m.DIRECTIVE_DEFINITION){var o;const n=null!==(o=e.arguments)&&void 0!==o?o:[];t[e.name.value]=n.map((e=>e.name.value))}return{Directive(n){const i=n.name.value,r=t[i];if(n.arguments&&r)for(const t of n.arguments){const n=t.name.value;if(!r.includes(n)){const o=ae(n,r);e.reportError(new GraphQLError(`Unknown argument "${n}" on directive "@${i}".`+W(o),t))}}return!1}}}function pn(e){const t=Object.create(null),n=e.getSchema(),r=n?n.getDirectives():bt;for(const e of r)t[e.name]=e.locations;const o=e.getDocument().definitions;for(const e of o)e.kind===m.DIRECTIVE_DEFINITION&&(t[e.name.value]=e.locations.map((e=>e.value)));return{Directive(n,r,o,s,a){const c=n.name.value,u=t[c];if(!u)return void e.reportError(new GraphQLError(`Unknown directive "@${c}".`,n));const l=function(e){const t=e[e.length-1];switch("kind"in t||i(!1),t.kind){case m.OPERATION_DEFINITION:return function(e){switch(e){case f.QUERY:return h.QUERY;case f.MUTATION:return h.MUTATION;case f.SUBSCRIPTION:return h.SUBSCRIPTION}}(t.operation);case m.FIELD:return h.FIELD;case m.FRAGMENT_SPREAD:return h.FRAGMENT_SPREAD;case m.INLINE_FRAGMENT:return h.INLINE_FRAGMENT;case m.FRAGMENT_DEFINITION:return h.FRAGMENT_DEFINITION;case m.VARIABLE_DEFINITION:return h.VARIABLE_DEFINITION;case m.SCHEMA_DEFINITION:case m.SCHEMA_EXTENSION:return h.SCHEMA;case m.SCALAR_TYPE_DEFINITION:case m.SCALAR_TYPE_EXTENSION:return h.SCALAR;case m.OBJECT_TYPE_DEFINITION:case m.OBJECT_TYPE_EXTENSION:return h.OBJECT;case m.FIELD_DEFINITION:return h.FIELD_DEFINITION;case m.INTERFACE_TYPE_DEFINITION:case m.INTERFACE_TYPE_EXTENSION:return h.INTERFACE;case m.UNION_TYPE_DEFINITION:case m.UNION_TYPE_EXTENSION:return h.UNION;case m.ENUM_TYPE_DEFINITION:case m.ENUM_TYPE_EXTENSION:return h.ENUM;case m.ENUM_VALUE_DEFINITION:return h.ENUM_VALUE;case m.INPUT_OBJECT_TYPE_DEFINITION:case m.INPUT_OBJECT_TYPE_EXTENSION:return h.INPUT_OBJECT;case m.INPUT_VALUE_DEFINITION:{const t=e[e.length-3];return"kind"in t||i(!1),t.kind===m.INPUT_OBJECT_TYPE_DEFINITION?h.INPUT_FIELD_DEFINITION:h.ARGUMENT_DEFINITION}default:i(!1,"Unexpected kind: "+Y(t.kind))}}(a);l&&!u.includes(l)&&e.reportError(new GraphQLError(`Directive "@${c}" may not be used on ${l}.`,n))}}}function dn(e){const t=e.getSchema(),n=t?t.getTypeMap():Object.create(null),i=Object.create(null);for(const t of e.getDocument().definitions)cn(t)&&(i[t.name.value]=!0);const r=[...Object.keys(n),...Object.keys(i)];return{NamedType(t,o,s,a,c){const u=t.name.value;if(!n[u]&&!i[u]){var l;const n=null!==(l=c[2])&&void 0!==l?l:s,i=null!=n&&("kind"in(p=n)&&(function(e){return e.kind===m.SCHEMA_DEFINITION||cn(e)||e.kind===m.DIRECTIVE_DEFINITION}(p)||function(e){return e.kind===m.SCHEMA_EXTENSION||un(e)}(p)));if(i&&fn.includes(u))return;const o=ae(u,i?fn.concat(r):r);e.reportError(new GraphQLError(`Unknown type "${u}".`+W(o),t))}var p}}}const fn=[...vt,...jt].map((e=>e.name));function hn(e){const t=[],n=[];return{OperationDefinition:e=>(t.push(e),!1),FragmentDefinition:e=>(n.push(e),!1),Document:{leave(){const i=Object.create(null);for(const n of t)for(const t of e.getRecursivelyReferencedFragments(n))i[t.name.value]=!0;for(const t of n){const n=t.name.value;!0!==i[n]&&e.reportError(new GraphQLError(`Fragment "${n}" is never used.`,t))}}}}}function mn(e,t){const n=[e];for(;Re(Be(n[n.length-1]));){const e=Ce(Be(n[n.length-1])).ofType;n.push(e)}if(t){const e=he(t,{RequiredDesignator:{leave({element:e}){if(e)return new GraphQLNonNull(Be(e));const t=n.pop();return new GraphQLNonNull(Be(t))}},OptionalDesignator:{leave({element:e}){if(e)return Be(e);return Be(n.pop())}},ListNullability:{leave({element:e}){let i=n.pop();if(Re(Be(i))||(i=n.pop()),!i)throw new GraphQLError("List nullability modifier is too deep.",t);const r=Ge(i);return e?r?new GraphQLNonNull(new GraphQLList(e)):new GraphQLList(e):i}}});if(n.length>0)throw new GraphQLError("List nullability modifier is too shallow.",t);return e}return e}function vn(e){switch(e.kind){case m.OBJECT:return{...e,fields:(t=e.fields,t.map((e=>({...e,value:vn(e.value)}))).sort(((e,t)=>ie(e.name.value,t.name.value))))};case m.LIST:return{...e,values:e.values.map(vn)};case m.INT:case m.FLOAT:case m.STRING:case m.BOOLEAN:case m.NULL:case m.ENUM:case m.VARIABLE:return e}var t}function yn(e){return Array.isArray(e)?e.map((([e,t])=>`subfields "${e}" conflict because `+yn(t))).join(" and "):e}function En(e,t,n,i,r,o,s){const a=e.getFragment(s);if(!a)return;const[c,u]=bn(e,n,a);if(o!==c){Nn(e,t,n,i,r,o,c);for(const a of u)i.has(a,s,r)||(i.add(a,s,r),En(e,t,n,i,r,o,a))}}function Tn(e,t,n,i,r,o,s){if(o===s)return;if(i.has(o,s,r))return;i.add(o,s,r);const a=e.getFragment(o),c=e.getFragment(s);if(!a||!c)return;const[u,l]=bn(e,n,a),[p,d]=bn(e,n,c);Nn(e,t,n,i,r,u,p);for(const s of d)Tn(e,t,n,i,r,o,s);for(const o of l)Tn(e,t,n,i,r,o,s)}function Nn(e,t,n,i,r,o,s){for(const[a,c]of Object.entries(o)){const o=s[a];if(o)for(const s of c)for(const c of o){const o=In(e,n,i,r,a,s,c);o&&t.push(o)}}}function In(e,t,n,i,r,o,s){const[a,c,u]=o,[l,p,d]=s,f=i||a!==l&&De(a)&&De(l);if(!f){const e=c.name.value,t=p.name.value;if(e!==t)return[[r,`"${e}" and "${t}" are different fields`],[c],[p]];if(gn(c)!==gn(p))return[[r,"they have differing arguments"],[c],[p]]}const h=null==u?void 0:u.type,m=null==d?void 0:d.type;if(h&&m){const e=mn(h,c.required),t=mn(m,p.required);if(_n(e,t))return[[r,`they return conflicting types "${Y(e)}" and "${Y(t)}"`],[c],[p]]}const v=c.selectionSet,y=p.selectionSet;if(v&&y){const i=function(e,t,n,i,r,o,s,a){const c=[],[u,l]=On(e,t,r,o),[p,d]=On(e,t,s,a);Nn(e,c,t,n,i,u,p);for(const r of d)En(e,c,t,n,i,u,r);for(const r of l)En(e,c,t,n,i,p,r);for(const r of l)for(const o of d)Tn(e,c,t,n,i,r,o);return c}(e,t,n,f,Je(h),v,Je(m),y);return function(e,t,n,i){if(e.length>0)return[[t,e.map((([e])=>e))],[n,...e.map((([,e])=>e)).flat()],[i,...e.map((([,,e])=>e)).flat()]]}(i,r,c,p)}}function gn(e){var t;const n=null!==(t=e.arguments)&&void 0!==t?t:[];return ye(vn({kind:m.OBJECT,fields:n.map((e=>({kind:m.OBJECT_FIELD,name:e.name,value:e.value})))}))}function _n(e,t){return Re(e)?!Re(t)||_n(e.ofType,t.ofType):!!Re(t)||(Ge(e)?!Ge(t)||_n(e.ofType,t.ofType):!!Ge(t)||!(!Ue(e)&&!Ue(t))&&e!==t)}function On(e,t,n,i){const r=t.get(i);if(r)return r;const o=Object.create(null),s=Object.create(null);Ln(e,n,i,o,s);const a=[o,Object.keys(s)];return t.set(i,a),a}function bn(e,t,n){const i=t.get(n.selectionSet);if(i)return i;const r=rn(e.getSchema(),n.typeCondition);return On(e,t,r,n.selectionSet)}function Ln(e,t,n,i,r){for(const o of n.selections)switch(o.kind){case m.FIELD:{const e=o.name.value;let n;(De(t)||we(t))&&(n=t.getFields()[e]);const r=o.alias?o.alias.value:e;i[r]||(i[r]=[]),i[r].push([t,o,n]);break}case m.FRAGMENT_SPREAD:r[o.name.value]=!0;break;case m.INLINE_FRAGMENT:{const n=o.typeCondition,s=n?rn(e.getSchema(),n):t;Ln(e,s,o.selectionSet,i,r);break}}}class PairSet{constructor(){this._data=new Map}has(e,t,n){var i;const[r,o]=ee.name));const o=e.getDocument().definitions;for(const e of o)if(e.kind===m.DIRECTIVE_DEFINITION){var s;const t=null!==(s=e.arguments)&&void 0!==s?s:[];n[e.name.value]=ee(t.filter(Dn),(e=>e.name.value))}return{Directive:{leave(t){const i=t.name.value,r=n[i];if(r){var o;const n=null!==(o=t.arguments)&&void 0!==o?o:[],s=new Set(n.map((e=>e.name.value)));for(const[n,o]of Object.entries(r))if(!s.has(n)){const r=Se(o.type)?Y(o.type):ye(o.type);e.reportError(new GraphQLError(`Directive "@${i}" argument "${n}" of type "${r}" is required, but it was not provided.`,t))}}}}}}function Dn(e){return e.type.kind===m.NON_NULL_TYPE&&null==e.defaultValue}function wn(e,t,n){if(e){if(e.kind===m.VARIABLE){const i=e.name.value;if(null==n||void 0===n[i])return;const r=n[i];if(null===r&&Ge(t))return;return r}if(Ge(t)){if(e.kind===m.NULL)return;return wn(e,t.ofType,n)}if(e.kind===m.NULL)return null;if(Re(t)){const i=t.ofType;if(e.kind===m.LIST){const t=[];for(const r of e.values)if(kn(r,n)){if(Ge(i))return;t.push(null)}else{const e=wn(r,i,n);if(void 0===e)return;t.push(e)}return t}const r=wn(e,i,n);if(void 0===r)return;return[r]}if(Fe(t)){if(e.kind!==m.OBJECT)return;const i=Object.create(null),r=ee(e.fields,(e=>e.name.value));for(const e of Object.values(t.getFields())){const t=r[e.name];if(!t||kn(t.value,n)){if(void 0!==e.defaultValue)i[e.name]=e.defaultValue;else if(Ge(e.type))return;continue}const o=wn(t.value,e.type,n);if(void 0===o)return;i[e.name]=o}return i}if(Ue(t)){let i;try{i=t.parseLiteral(e,n)}catch(e){return}if(void 0===i)return;return i}i(!1,"Unexpected input type: "+Y(t))}}function kn(e,t){return e.kind===m.VARIABLE&&(null==t||void 0===t[e.name.value])}function xn(e,t,n){var i;const r=null===(i=t.directives)||void 0===i?void 0:i.find((t=>t.name.value===e.name));if(r)return function(e,t,n){var i;const r={},o=ee(null!==(i=t.arguments)&&void 0!==i?i:[],(e=>e.name.value));for(const i of e.args){const e=i.name,c=i.type,u=o[e];if(!u){if(void 0!==i.defaultValue)r[e]=i.defaultValue;else if(Ge(c))throw new GraphQLError(`Argument "${e}" of required type "${Y(c)}" was not provided.`,t);continue}const l=u.value;let p=l.kind===m.NULL;if(l.kind===m.VARIABLE){const t=l.name.value;if(null==n||(s=n,a=t,!Object.prototype.hasOwnProperty.call(s,a))){if(void 0!==i.defaultValue)r[e]=i.defaultValue;else if(Ge(c))throw new GraphQLError(`Argument "${e}" of required type "${Y(c)}" was provided the variable "$${t}" which was not provided a runtime value.`,l);continue}p=null==n[t]}if(p&&Ge(c))throw new GraphQLError(`Argument "${e}" of non-null type "${Y(c)}" must not be null.`,l);const d=wn(l,c,n);if(void 0===d)throw new GraphQLError(`Argument "${e}" has invalid value ${ye(l)}.`,l);r[e]=d}var s,a;return r}(e,r,n)}function Fn(e,t,n,i,r){const o=new Map;return Rn(e,t,n,i,r,o,new Set),o}function Rn(e,t,n,i,r,o,s){for(const c of r.selections)switch(c.kind){case m.FIELD:{if(!Cn(n,c))continue;const e=(a=c).alias?a.alias.value:a.name.value,t=o.get(e);void 0!==t?t.push(c):o.set(e,[c]);break}case m.INLINE_FRAGMENT:if(!Cn(n,c)||!Gn(e,c,i))continue;Rn(e,t,n,i,c.selectionSet,o,s);break;case m.FRAGMENT_SPREAD:{const r=c.name.value;if(s.has(r)||!Cn(n,c))continue;s.add(r);const a=t[r];if(!a||!Gn(e,a,i))continue;Rn(e,t,n,i,a.selectionSet,o,s);break}}var a}function Cn(e,t){const n=xn(It,t,e);if(!0===(null==n?void 0:n.if))return!1;const i=xn(Nt,t,e);return!1!==(null==i?void 0:i.if)}function Gn(e,t,n){const i=t.typeCondition;if(!i)return!0;const r=rn(e,i);return r===n||!!Ve(r)&&e.isSubType(r,n)}function $n(e,t){const n=new Map;for(const i of e){const e=t(i),r=n.get(e);void 0===r?n.set(e,[i]):r.push(i)}return n}function Qn(e){return{Field:t,Directive:t};function t(t){var n;const i=$n(null!==(n=t.arguments)&&void 0!==n?n:[],(e=>e.name.value));for(const[t,n]of i)n.length>1&&e.reportError(new GraphQLError(`There can be only one argument named "${t}".`,n.map((e=>e.name))))}}function Un(e){const t=Object.create(null),n=e.getSchema(),i=n?n.getDirectives():bt;for(const e of i)t[e.name]=!e.isRepeatable;const r=e.getDocument().definitions;for(const e of r)e.kind===m.DIRECTIVE_DEFINITION&&(t[e.name.value]=!e.repeatable);const o=Object.create(null),s=Object.create(null);return{enter(n){if(!("directives"in n)||!n.directives)return;let i;if(n.kind===m.SCHEMA_DEFINITION||n.kind===m.SCHEMA_EXTENSION)i=o;else if(cn(n)||un(n)){const e=n.name.value;i=s[e],void 0===i&&(s[e]=i=Object.create(null))}else i=Object.create(null);for(const r of n.directives){const n=r.name.value;t[n]&&(i[n]?e.reportError(new GraphQLError(`The directive "@${n}" can only be used once at this location.`,[i[n],r])):i[n]=r)}}}}function jn(e,t){return!!(De(e)||we(e)||Fe(e))&&null!=e.getFields()[t]}function Vn(e){const t=[];let n=Object.create(null);return{ObjectValue:{enter(){t.push(n),n=Object.create(null)},leave(){const e=t.pop();e||i(!1),n=e}},ObjectField(t){const i=t.name.value;n[i]?e.reportError(new GraphQLError(`There can be only one input field named "${i}".`,[n[i],t.name])):n[i]=t.name}}}function Mn(e,t){const n=e.getInputType();if(!n)return;const i=Je(n);if(Ue(i))try{if(void 0===i.parseLiteral(t,void 0)){const i=Y(n);e.reportError(new GraphQLError(`Expected value of type "${i}", found ${ye(t)}.`,t))}}catch(i){const r=Y(n);i instanceof GraphQLError?e.reportError(i):e.reportError(new GraphQLError(`Expected value of type "${r}", found ${ye(t)}; `+i.message,t,void 0,void 0,void 0,i))}else{const i=Y(n);e.reportError(new GraphQLError(`Expected value of type "${i}", found ${ye(t)}.`,t))}}function Pn(e,t,n,i,r){if(Ge(i)&&!Ge(t)){if(!(null!=n&&n.kind!==m.NULL)&&!(void 0!==r))return!1;return at(e,t,i.ofType)}return at(e,t,i)}const Bn=Object.freeze([function(e){return{Document(t){for(const n of t.definitions)if(!an(n)){const t=n.kind===m.SCHEMA_DEFINITION||n.kind===m.SCHEMA_EXTENSION?"schema":'"'+n.name.value+'"';e.reportError(new GraphQLError(`The ${t} definition is not executable.`,n))}return!1}}},function(e){const t=Object.create(null);return{OperationDefinition(n){const i=n.name;return i&&(t[i.value]?e.reportError(new GraphQLError(`There can be only one operation named "${i.value}".`,[t[i.value],i])):t[i.value]=i),!1},FragmentDefinition:()=>!1}},function(e){let t=0;return{Document(e){t=e.definitions.filter((e=>e.kind===m.OPERATION_DEFINITION)).length},OperationDefinition(n){!n.name&&t>1&&e.reportError(new GraphQLError("This anonymous operation must be the only defined operation.",n))}}},function(e){return{OperationDefinition(t){if("subscription"===t.operation){const n=e.getSchema(),i=n.getSubscriptionType();if(i){const r=t.name?t.name.value:null,o=Object.create(null),s=e.getDocument(),a=Object.create(null);for(const e of s.definitions)e.kind===m.FRAGMENT_DEFINITION&&(a[e.name.value]=e);const c=Fn(n,a,o,i,t.selectionSet);if(c.size>1){const t=[...c.values()].slice(1).flat();e.reportError(new GraphQLError(null!=r?`Subscription "${r}" must select only one top level field.`:"Anonymous Subscription must select only one top level field.",t))}for(const t of c.values()){t[0].name.value.startsWith("__")&&e.reportError(new GraphQLError(null!=r?`Subscription "${r}" must not select an introspection top level field.`:"Anonymous Subscription must not select an introspection top level field.",t))}}}}}},dn,function(e){return{InlineFragment(t){const n=t.typeCondition;if(n){const t=rn(e.getSchema(),n);if(t&&!je(t)){const t=ye(n);e.reportError(new GraphQLError(`Fragment cannot condition on non composite type "${t}".`,n))}}},FragmentDefinition(t){const n=rn(e.getSchema(),t.typeCondition);if(n&&!je(n)){const n=ye(t.typeCondition);e.reportError(new GraphQLError(`Fragment "${t.name.value}" cannot condition on non composite type "${n}".`,t.typeCondition))}}}},function(e){return{VariableDefinition(t){const n=rn(e.getSchema(),t.type);if(void 0!==n&&!$e(n)){const n=t.variable.name.value,i=ye(t.type);e.reportError(new GraphQLError(`Variable "$${n}" cannot be non-input type "${i}".`,t.type))}}}},function(e){return{Field(t){const n=e.getType(),i=t.selectionSet;if(n)if(Ue(Je(n))){if(i){const r=t.name.value,o=Y(n);e.reportError(new GraphQLError(`Field "${r}" must not have a selection since type "${o}" has no subfields.`,i))}}else if(!i){const i=t.name.value,r=Y(n);e.reportError(new GraphQLError(`Field "${i}" of type "${r}" must have a selection of subfields. Did you mean "${i} { ... }"?`,t))}}}},function(e){return{Field(t){const n=e.getParentType();if(n){if(!e.getFieldDef()){const i=e.getSchema(),r=t.name.value;let o=W("to use an inline fragment on",function(e,t,n){if(!Ve(t))return[];const i=new Set,r=Object.create(null);for(const s of e.getPossibleTypes(t))if(s.getFields()[n]){i.add(s),r[s.name]=1;for(const e of s.getInterfaces()){var o;e.getFields()[n]&&(i.add(e),r[e.name]=(null!==(o=r[e.name])&&void 0!==o?o:0)+1)}}return[...i].sort(((t,n)=>{const i=r[n.name]-r[t.name];return 0!==i?i:we(t)&&e.isSubType(t,n)?-1:we(n)&&e.isSubType(n,t)?1:ie(t.name,n.name)})).map((e=>e.name))}(i,n,r));""===o&&(o=W(function(e,t){if(De(e)||we(e)){return ae(t,Object.keys(e.getFields()))}return[]}(n,r))),e.reportError(new GraphQLError(`Cannot query field "${r}" on type "${n.name}".`+o,t))}}}}},function(e){const t=Object.create(null);return{OperationDefinition:()=>!1,FragmentDefinition(n){const i=n.name.value;return t[i]?e.reportError(new GraphQLError(`There can be only one fragment named "${i}".`,[t[i],n.name])):t[i]=n.name,!1}}},function(e){return{FragmentSpread(t){const n=t.name.value;e.getFragment(n)||e.reportError(new GraphQLError(`Unknown fragment "${n}".`,t.name))}}},hn,function(e){return{InlineFragment(t){const n=e.getType(),i=e.getParentType();if(je(n)&&je(i)&&!ct(e.getSchema(),n,i)){const r=Y(i),o=Y(n);e.reportError(new GraphQLError(`Fragment cannot be spread here as objects of type "${r}" can never be of type "${o}".`,t))}},FragmentSpread(t){const n=t.name.value,i=function(e,t){const n=e.getFragment(t);if(n){const t=rn(e.getSchema(),n.typeCondition);if(je(t))return t}}(e,n),r=e.getParentType();if(i&&r&&!ct(e.getSchema(),i,r)){const o=Y(r),s=Y(i);e.reportError(new GraphQLError(`Fragment "${n}" cannot be spread here as objects of type "${o}" can never be of type "${s}".`,t))}}}},function(e){const t=Object.create(null),n=[],i=Object.create(null);return{OperationDefinition:()=>!1,FragmentDefinition:e=>(r(e),!1)};function r(o){if(t[o.name.value])return;const s=o.name.value;t[s]=!0;const a=e.getFragmentSpreads(o.selectionSet);if(0!==a.length){i[s]=n.length;for(const t of a){const o=t.name.value,s=i[o];if(n.push(t),void 0===s){const t=e.getFragment(o);t&&r(t)}else{const t=n.slice(s),i=t.slice(0,-1).map((e=>'"'+e.name.value+'"')).join(", ");e.reportError(new GraphQLError(`Cannot spread fragment "${o}" within itself`+(""!==i?` via ${i}.`:"."),t))}n.pop()}i[s]=void 0}}},function(e){return{OperationDefinition(t){var n;const i=$n(null!==(n=t.variableDefinitions)&&void 0!==n?n:[],(e=>e.variable.name.value));for(const[t,n]of i)n.length>1&&e.reportError(new GraphQLError(`There can be only one variable named "$${t}".`,n.map((e=>e.variable.name))))}}},function(e){let t=Object.create(null);return{OperationDefinition:{enter(){t=Object.create(null)},leave(n){const i=e.getRecursiveVariableUsages(n);for(const{node:r}of i){const i=r.name.value;!0!==t[i]&&e.reportError(new GraphQLError(n.name?`Variable "$${i}" is not defined by operation "${n.name.value}".`:`Variable "$${i}" is not defined.`,[r,n]))}}},VariableDefinition(e){t[e.variable.name.value]=!0}}},function(e){let t=[];return{OperationDefinition:{enter(){t=[]},leave(n){const i=Object.create(null),r=e.getRecursiveVariableUsages(n);for(const{node:e}of r)i[e.name.value]=!0;for(const r of t){const t=r.variable.name.value;!0!==i[t]&&e.reportError(new GraphQLError(n.name?`Variable "$${t}" is never used in operation "${n.name.value}".`:`Variable "$${t}" is never used.`,r))}}},VariableDefinition(e){t.push(e)}}},pn,Un,function(e){return{...ln(e),Argument(t){const n=e.getArgument(),i=e.getFieldDef(),r=e.getParentType();if(!n&&i&&r){const n=t.name.value,o=ae(n,i.args.map((e=>e.name)));e.reportError(new GraphQLError(`Unknown argument "${n}" on field "${r.name}.${i.name}".`+W(o),t))}}}},Qn,function(e){return{ListValue(t){if(!Re(Be(e.getParentInputType())))return Mn(e,t),!1},ObjectValue(t){const n=Je(e.getInputType());if(!Fe(n))return Mn(e,t),!1;const i=ee(t.fields,(e=>e.name.value));for(const r of Object.values(n.getFields())){if(!i[r.name]&&ot(r)){const i=Y(r.type);e.reportError(new GraphQLError(`Field "${n.name}.${r.name}" of required type "${i}" was not provided.`,t))}}},ObjectField(t){const n=Je(e.getParentInputType());if(!e.getInputType()&&Fe(n)){const i=ae(t.name.value,Object.keys(n.getFields()));e.reportError(new GraphQLError(`Field "${t.name.value}" is not defined by type "${n.name}".`+W(i),t))}},NullValue(t){const n=e.getInputType();Ge(n)&&e.reportError(new GraphQLError(`Expected value of type "${Y(n)}", found ${ye(t)}.`,t))},EnumValue:t=>Mn(e,t),IntValue:t=>Mn(e,t),FloatValue:t=>Mn(e,t),StringValue:t=>Mn(e,t),BooleanValue:t=>Mn(e,t)}},function(e){return{...An(e),Field:{leave(t){var n;const i=e.getFieldDef();if(!i)return!1;const r=new Set(null===(n=t.arguments)||void 0===n?void 0:n.map((e=>e.name.value)));for(const n of i.args)if(!r.has(n.name)&&tt(n)){const r=Y(n.type);e.reportError(new GraphQLError(`Field "${i.name}" argument "${n.name}" of type "${r}" is required, but it was not provided.`,t))}}}}},function(e){let t=Object.create(null);return{OperationDefinition:{enter(){t=Object.create(null)},leave(n){const i=e.getRecursiveVariableUsages(n);for(const{node:n,type:r,defaultValue:o}of i){const i=n.name.value,s=t[i];if(s&&r){const t=e.getSchema(),a=rn(t,s.type);if(a&&!Pn(t,a,s.defaultValue,r,o)){const t=Y(a),o=Y(r);e.reportError(new GraphQLError(`Variable "$${i}" of type "${t}" used in position expecting type "${o}".`,[s,n]))}}}}},VariableDefinition(e){t[e.variable.name.value]=e}}},function(e){return{Field(t){const n=e.getFieldDef(),i=t.required;if(n&&i){const r=function(e){let t=e,n=0;for(;Re(Be(t));){t=Ce(Be(t)).ofType,n+=1}return n}(n.type),o=he(i,{RequiredDesignator:{leave:({element:e})=>null!=e?e:0},OptionalDesignator:{leave:({element:e})=>null!=e?e:0},ListNullability:{leave:({element:e})=>(null!=e?e:0)+1}});r>o?e.reportError(new GraphQLError("List nullability modifier is too shallow.",t.required)):r1)for(let r=0;r0&&e.reportError(new GraphQLError("Must provide only one schema definition.",t)),++s)}}},function(e){const t=e.getSchema(),n=Object.create(null),i=t?{query:t.getQueryType(),mutation:t.getMutationType(),subscription:t.getSubscriptionType()}:{};return{SchemaDefinition:r,SchemaExtension:r};function r(t){var r;const o=null!==(r=t.operationTypes)&&void 0!==r?r:[];for(const t of o){const r=t.operation,o=n[r];i[r]?e.reportError(new GraphQLError(`Type for ${r} already defined in the schema. It cannot be redefined.`,t)):o?e.reportError(new GraphQLError(`There can be only one ${r} type in schema.`,[o,t])):n[r]=t}return!1}},function(e){const t=Object.create(null),n=e.getSchema();return{ScalarTypeDefinition:i,ObjectTypeDefinition:i,InterfaceTypeDefinition:i,UnionTypeDefinition:i,EnumTypeDefinition:i,InputObjectTypeDefinition:i};function i(i){const r=i.name.value;if(null==n||!n.getType(r))return t[r]?e.reportError(new GraphQLError(`There can be only one type named "${r}".`,[t[r],i.name])):t[r]=i.name,!1;e.reportError(new GraphQLError(`Type "${r}" already exists in the schema. It cannot also be defined in this type definition.`,i.name))}},function(e){const t=e.getSchema(),n=t?t.getTypeMap():Object.create(null),i=Object.create(null);return{EnumTypeDefinition:r,EnumTypeExtension:r};function r(t){var r;const o=t.name.value;i[o]||(i[o]=Object.create(null));const s=null!==(r=t.values)&&void 0!==r?r:[],a=i[o];for(const t of s){const i=t.name.value,r=n[o];xe(r)&&r.getValue(i)?e.reportError(new GraphQLError(`Enum value "${o}.${i}" already exists in the schema. It cannot also be defined in this type extension.`,t.name)):a[i]?e.reportError(new GraphQLError(`Enum value "${o}.${i}" can only be defined once.`,[a[i],t.name])):a[i]=t.name}return!1}},function(e){const t=e.getSchema(),n=t?t.getTypeMap():Object.create(null),i=Object.create(null);return{InputObjectTypeDefinition:r,InputObjectTypeExtension:r,InterfaceTypeDefinition:r,InterfaceTypeExtension:r,ObjectTypeDefinition:r,ObjectTypeExtension:r};function r(t){var r;const o=t.name.value;i[o]||(i[o]=Object.create(null));const s=null!==(r=t.fields)&&void 0!==r?r:[],a=i[o];for(const t of s){const i=t.name.value;jn(n[o],i)?e.reportError(new GraphQLError(`Field "${o}.${i}" already exists in the schema. It cannot also be defined in this type extension.`,t.name)):a[i]?e.reportError(new GraphQLError(`Field "${o}.${i}" can only be defined once.`,[a[i],t.name])):a[i]=t.name}return!1}},function(e){return{DirectiveDefinition(e){var t;const i=null!==(t=e.arguments)&&void 0!==t?t:[];return n(`@${e.name.value}`,i)},InterfaceTypeDefinition:t,InterfaceTypeExtension:t,ObjectTypeDefinition:t,ObjectTypeExtension:t};function t(e){var t;const i=e.name.value,r=null!==(t=e.fields)&&void 0!==t?t:[];for(const e of r){var o;n(`${i}.${e.name.value}`,null!==(o=e.arguments)&&void 0!==o?o:[])}return!1}function n(t,n){const i=$n(n,(e=>e.name.value));for(const[n,r]of i)r.length>1&&e.reportError(new GraphQLError(`Argument "${t}(${n}:)" can only be defined once.`,r.map((e=>e.name))));return!1}},function(e){const t=Object.create(null),n=e.getSchema();return{DirectiveDefinition(i){const r=i.name.value;if(null==n||!n.getDirective(r))return t[r]?e.reportError(new GraphQLError(`There can be only one directive named "@${r}".`,[t[r],i.name])):t[r]=i.name,!1;e.reportError(new GraphQLError(`Directive "@${r}" already exists in the schema. It cannot be redefined.`,i.name))}}},dn,pn,Un,function(e){const t=e.getSchema(),n=Object.create(null);for(const t of e.getDocument().definitions)cn(t)&&(n[t.name.value]=t);return{ScalarTypeExtension:r,ObjectTypeExtension:r,InterfaceTypeExtension:r,UnionTypeExtension:r,EnumTypeExtension:r,InputObjectTypeExtension:r};function r(r){const o=r.name.value,s=n[o],a=null==t?void 0:t.getType(o);let c;if(s?c=Sn[s.kind]:a&&(c=function(e){if(Ae(e))return m.SCALAR_TYPE_EXTENSION;if(De(e))return m.OBJECT_TYPE_EXTENSION;if(we(e))return m.INTERFACE_TYPE_EXTENSION;if(ke(e))return m.UNION_TYPE_EXTENSION;if(xe(e))return m.ENUM_TYPE_EXTENSION;if(Fe(e))return m.INPUT_OBJECT_TYPE_EXTENSION;i(!1,"Unexpected type: "+Y(e))}(a)),c){if(c!==r.kind){const t=function(e){switch(e){case m.SCALAR_TYPE_EXTENSION:return"scalar";case m.OBJECT_TYPE_EXTENSION:return"object";case m.INTERFACE_TYPE_EXTENSION:return"interface";case m.UNION_TYPE_EXTENSION:return"union";case m.ENUM_TYPE_EXTENSION:return"enum";case m.INPUT_OBJECT_TYPE_EXTENSION:return"input object";default:i(!1,"Unexpected kind: "+Y(e))}}(r.kind);e.reportError(new GraphQLError(`Cannot extend non-${t} type "${o}".`,s?[s,r]:r))}}else{const i=ae(o,Object.keys({...n,...null==t?void 0:t.getTypeMap()}));e.reportError(new GraphQLError(`Cannot extend type "${o}" because it is not defined.`+W(i),r.name))}}},ln,Qn,Vn,An]);class ASTValidationContext{constructor(e,t){this._ast=e,this._fragments=void 0,this._fragmentSpreads=new Map,this._recursivelyReferencedFragments=new Map,this._onError=t}get[Symbol.toStringTag](){return"ASTValidationContext"}reportError(e){this._onError(e)}getDocument(){return this._ast}getFragment(e){let t;if(this._fragments)t=this._fragments;else{t=Object.create(null);for(const e of this.getDocument().definitions)e.kind===m.FRAGMENT_DEFINITION&&(t[e.name.value]=e);this._fragments=t}return t[e]}getFragmentSpreads(e){let t=this._fragmentSpreads.get(e);if(!t){t=[];const n=[e];let i;for(;i=n.pop();)for(const e of i.selections)e.kind===m.FRAGMENT_SPREAD?t.push(e):e.selectionSet&&n.push(e.selectionSet);this._fragmentSpreads.set(e,t)}return t}getRecursivelyReferencedFragments(e){let t=this._recursivelyReferencedFragments.get(e);if(!t){t=[];const n=Object.create(null),i=[e.selectionSet];let r;for(;r=i.pop();)for(const e of this.getFragmentSpreads(r)){const r=e.name.value;if(!0!==n[r]){n[r]=!0;const e=this.getFragment(r);e&&(t.push(e),i.push(e.selectionSet))}}this._recursivelyReferencedFragments.set(e,t)}return t}}class SDLValidationContext extends ASTValidationContext{constructor(e,t,n){super(e,n),this._schema=t}get[Symbol.toStringTag](){return"SDLValidationContext"}getSchema(){return this._schema}}class ValidationContext extends ASTValidationContext{constructor(e,t,n,i){super(t,i),this._schema=e,this._typeInfo=n,this._variableUsages=new Map,this._recursiveVariableUsages=new Map}get[Symbol.toStringTag](){return"ValidationContext"}getSchema(){return this._schema}getVariableUsages(e){let t=this._variableUsages.get(e);if(!t){const n=[],i=new TypeInfo(this._schema);he(e,sn(i,{VariableDefinition:()=>!1,Variable(e){n.push({node:e,type:i.getInputType(),defaultValue:i.getDefaultValue()})}})),t=n,this._variableUsages.set(e,t)}return t}getRecursiveVariableUsages(e){let t=this._recursiveVariableUsages.get(e);if(!t){t=this.getVariableUsages(e);for(const n of this.getRecursivelyReferencedFragments(e))t=t.concat(this.getVariableUsages(n));this._recursiveVariableUsages.set(e,t)}return t}getType(){return this._typeInfo.getType()}getParentType(){return this._typeInfo.getParentType()}getInputType(){return this._typeInfo.getInputType()}getParentInputType(){return this._typeInfo.getParentInputType()}getFieldDef(){return this._typeInfo.getFieldDef()}getDirective(){return this._typeInfo.getDirective()}getArgument(){return this._typeInfo.getArgument()}getEnumValue(){return this._typeInfo.getEnumValue()}}function Jn(e,n,i=Bn,r,o=new TypeInfo(e)){var s;const a=null!==(s=null==r?void 0:r.maxErrors)&&void 0!==s?s:100;n||t(!1,"Must provide document."),function(e){const t=Bt(e);if(0!==t.length)throw new Error(t.map((e=>e.message)).join("\n\n"))}(e);const c=Object.freeze({}),u=[],l=new ValidationContext(e,n,o,(e=>{if(u.length>=a)throw u.push(new GraphQLError("Too many validation errors, error limit reached. Validation aborted.")),c;u.push(e)})),p=me(i.map((e=>e(l))));try{he(n,sn(o,p))}catch(e){if(e!==c)throw e}return u}function qn(e,t,n=Yn){const i=[],r=new SDLValidationContext(e,t,(e=>{i.push(e)}));return he(e,me(n.map((e=>e(r))))),i}function Kn(e,i){n(e)&&n(e.__schema)||t(!1,`Invalid or incomplete introspection result. Ensure that you are passing "data" property of introspection response and no "errors" was returned alongside: ${Y(e)}.`);const r=e.__schema,o=te(r.types,(e=>e.name),(e=>function(e){if(null!=e&&null!=e.name&&null!=e.kind)switch(e.kind){case Ct.SCALAR:return new GraphQLScalarType({name:(i=e).name,description:i.description,specifiedByURL:i.specifiedByURL});case Ct.OBJECT:return new GraphQLObjectType({name:(n=e).name,description:n.description,interfaces:()=>h(n),fields:()=>m(n)});case Ct.INTERFACE:return new GraphQLInterfaceType({name:(t=e).name,description:t.description,interfaces:()=>h(t),fields:()=>m(t)});case Ct.UNION:return function(e){if(!e.possibleTypes){const t=Y(e);throw new Error(`Introspection result missing possibleTypes: ${t}.`)}return new GraphQLUnionType({name:e.name,description:e.description,types:()=>e.possibleTypes.map(d)})}(e);case Ct.ENUM:return function(e){if(!e.enumValues){const t=Y(e);throw new Error(`Introspection result missing enumValues: ${t}.`)}return new GraphQLEnumType({name:e.name,description:e.description,values:te(e.enumValues,(e=>e.name),(e=>({description:e.description,deprecationReason:e.deprecationReason})))})}(e);case Ct.INPUT_OBJECT:return function(e){if(!e.inputFields){const t=Y(e);throw new Error(`Introspection result missing inputFields: ${t}.`)}return new GraphQLInputObjectType({name:e.name,description:e.description,fields:()=>E(e.inputFields)})}(e)}var t;var n;var i;const r=Y(e);throw new Error(`Invalid or incomplete introspection result. Ensure that a full introspection query is used in order to build a client schema: ${r}.`)}(e)));for(const e of[...vt,...jt])o[e.name]&&(o[e.name]=e);const s=r.queryType?d(r.queryType):null,a=r.mutationType?d(r.mutationType):null,c=r.subscriptionType?d(r.subscriptionType):null,u=r.directives?r.directives.map((function(e){if(!e.args){const t=Y(e);throw new Error(`Introspection result missing directive args: ${t}.`)}if(!e.locations){const t=Y(e);throw new Error(`Introspection result missing directive locations: ${t}.`)}return new GraphQLDirective({name:e.name,description:e.description,isRepeatable:e.isRepeatable,locations:e.locations.slice(),args:E(e.args)})})):[];return new GraphQLSchema({description:r.description,query:s,mutation:a,subscription:c,types:Object.values(o),directives:u,assumeValid:null==i?void 0:i.assumeValid});function l(e){if(e.kind===Ct.LIST){const t=e.ofType;if(!t)throw new Error("Decorated type deeper than introspection query.");return new GraphQLList(l(t))}if(e.kind===Ct.NON_NULL){const t=e.ofType;if(!t)throw new Error("Decorated type deeper than introspection query.");const n=l(t);return new GraphQLNonNull(function(e){if(!Pe(e))throw new Error(`Expected ${Y(e)} to be a GraphQL nullable type.`);return e}(n))}return p(e)}function p(e){const t=e.name;if(!t)throw new Error(`Unknown type reference: ${Y(e)}.`);const n=o[t];if(!n)throw new Error(`Invalid or incomplete schema, unknown type: ${t}. Ensure that a full introspection query is used in order to build a client schema.`);return n}function d(e){return function(e){if(!De(e))throw new Error(`Expected ${Y(e)} to be a GraphQL Object type.`);return e}(p(e))}function f(e){return function(e){if(!we(e))throw new Error(`Expected ${Y(e)} to be a GraphQL Interface type.`);return e}(p(e))}function h(e){if(null===e.interfaces&&e.kind===Ct.INTERFACE)return[];if(!e.interfaces){const t=Y(e);throw new Error(`Introspection result missing interfaces: ${t}.`)}return e.interfaces.map(f)}function m(e){if(!e.fields)throw new Error(`Introspection result missing fields: ${Y(e)}.`);return te(e.fields,(e=>e.name),y)}function y(e){const t=l(e.type);if(!Qe(t)){const e=Y(t);throw new Error(`Introspection must provide output type for fields, but received: ${e}.`)}if(!e.args){const t=Y(e);throw new Error(`Introspection result missing field args: ${t}.`)}return{description:e.description,deprecationReason:e.deprecationReason,type:t,args:E(e.args)}}function E(e){return te(e,(e=>e.name),T)}function T(e){const t=l(e.type);if(!$e(t)){const e=Y(t);throw new Error(`Introspection must provide input type for arguments, but received: ${e}.`)}const n=null!=e.defaultValue?wn(function(e,t){const n=new Parser(e,t);n.expectToken(v.SOF);const i=n.parseValueLiteral(!1);return n.expectToken(v.EOF),i}(e.defaultValue),t):void 0;return{description:e.description,type:t,defaultValue:n,deprecationReason:e.deprecationReason}}}function Xn(e,n,i){Mt(e),null!=n&&n.kind===m.DOCUMENT||t(!1,"Must provide valid Document AST."),!0!==(null==i?void 0:i.assumeValid)&&!0!==(null==i?void 0:i.assumeValidSDL)&&function(e,t){const n=qn(e,t);if(0!==n.length)throw new Error(n.map((e=>e.message)).join("\n\n"))}(n,e);const r=e.toConfig(),o=zn(r,n,i);return r===o?e:new GraphQLSchema(o)}function zn(e,t,n){var r,o,s,a;const c=[],u=Object.create(null),l=[];let p;const d=[];for(const e of t.definitions)if(e.kind===m.SCHEMA_DEFINITION)p=e;else if(e.kind===m.SCHEMA_EXTENSION)d.push(e);else if(cn(e))c.push(e);else if(un(e)){const t=e.name.value,n=u[t];u[t]=n?n.concat([e]):[e]}else e.kind===m.DIRECTIVE_DEFINITION&&l.push(e);if(0===Object.keys(u).length&&0===c.length&&0===l.length&&0===d.length&&null==p)return e;const f=Object.create(null);for(const t of e.types)f[t.name]=T(t);for(const e of c){var h;const t=e.name.value;f[t]=null!==(h=Hn[t])&&void 0!==h?h:k(e)}const v={query:e.query&&E(e.query),mutation:e.mutation&&E(e.mutation),subscription:e.subscription&&E(e.subscription),...p&&g([p]),...g(d)};return{description:null===(r=p)||void 0===r||null===(o=r.description)||void 0===o?void 0:o.value,...v,types:Object.values(f),directives:[...e.directives.map((function(e){const t=e.toConfig();return new GraphQLDirective({...t,args:ne(t.args,I)})})),...l.map((function(e){var t;return new GraphQLDirective({name:e.name.value,description:null===(t=e.description)||void 0===t?void 0:t.value,locations:e.locations.map((({value:e})=>e)),isRepeatable:e.repeatable,args:L(e.arguments),astNode:e})}))],extensions:Object.create(null),astNode:null!==(s=p)&&void 0!==s?s:e.astNode,extensionASTNodes:e.extensionASTNodes.concat(d),assumeValid:null!==(a=null==n?void 0:n.assumeValid)&&void 0!==a&&a};function y(e){return Re(e)?new GraphQLList(y(e.ofType)):Ge(e)?new GraphQLNonNull(y(e.ofType)):E(e)}function E(e){return f[e.name]}function T(e){return Vt(e)||yt(e)?e:Ae(e)?function(e){var t;const n=e.toConfig(),i=null!==(t=u[n.name])&&void 0!==t?t:[];let r=n.specifiedByURL;for(const e of i){var o;r=null!==(o=Zn(e))&&void 0!==o?o:r}return new GraphQLScalarType({...n,specifiedByURL:r,extensionASTNodes:n.extensionASTNodes.concat(i)})}(e):De(e)?function(e){var t;const n=e.toConfig(),i=null!==(t=u[n.name])&&void 0!==t?t:[];return new GraphQLObjectType({...n,interfaces:()=>[...e.getInterfaces().map(E),...D(i)],fields:()=>({...ne(n.fields,N),...b(i)}),extensionASTNodes:n.extensionASTNodes.concat(i)})}(e):we(e)?function(e){var t;const n=e.toConfig(),i=null!==(t=u[n.name])&&void 0!==t?t:[];return new GraphQLInterfaceType({...n,interfaces:()=>[...e.getInterfaces().map(E),...D(i)],fields:()=>({...ne(n.fields,N),...b(i)}),extensionASTNodes:n.extensionASTNodes.concat(i)})}(e):ke(e)?function(e){var t;const n=e.toConfig(),i=null!==(t=u[n.name])&&void 0!==t?t:[];return new GraphQLUnionType({...n,types:()=>[...e.getTypes().map(E),...w(i)],extensionASTNodes:n.extensionASTNodes.concat(i)})}(e):xe(e)?function(e){var t;const n=e.toConfig(),i=null!==(t=u[e.name])&&void 0!==t?t:[];return new GraphQLEnumType({...n,values:{...n.values,...A(i)},extensionASTNodes:n.extensionASTNodes.concat(i)})}(e):Fe(e)?function(e){var t;const n=e.toConfig(),i=null!==(t=u[n.name])&&void 0!==t?t:[];return new GraphQLInputObjectType({...n,fields:()=>({...ne(n.fields,(e=>({...e,type:y(e.type)}))),...S(i)}),extensionASTNodes:n.extensionASTNodes.concat(i)})}(e):void i(!1,"Unexpected type: "+Y(e))}function N(e){return{...e,type:y(e.type),args:e.args&&ne(e.args,I)}}function I(e){return{...e,type:y(e.type)}}function g(e){const t={};for(const i of e){var n;const e=null!==(n=i.operationTypes)&&void 0!==n?n:[];for(const n of e)t[n.operation]=_(n.type)}return t}function _(e){var t;const n=e.name.value,i=null!==(t=Hn[n])&&void 0!==t?t:f[n];if(void 0===i)throw new Error(`Unknown type: "${n}".`);return i}function O(e){return e.kind===m.LIST_TYPE?new GraphQLList(O(e.type)):e.kind===m.NON_NULL_TYPE?new GraphQLNonNull(O(e.type)):_(e)}function b(e){const t=Object.create(null);for(const r of e){var n;const e=null!==(n=r.fields)&&void 0!==n?n:[];for(const n of e){var i;t[n.name.value]={type:O(n.type),description:null===(i=n.description)||void 0===i?void 0:i.value,args:L(n.arguments),deprecationReason:Wn(n),astNode:n}}}return t}function L(e){const t=null!=e?e:[],n=Object.create(null);for(const e of t){var i;const t=O(e.type);n[e.name.value]={type:t,description:null===(i=e.description)||void 0===i?void 0:i.value,defaultValue:wn(e.defaultValue,t),deprecationReason:Wn(e),astNode:e}}return n}function S(e){const t=Object.create(null);for(const r of e){var n;const e=null!==(n=r.fields)&&void 0!==n?n:[];for(const n of e){var i;const e=O(n.type);t[n.name.value]={type:e,description:null===(i=n.description)||void 0===i?void 0:i.value,defaultValue:wn(n.defaultValue,e),deprecationReason:Wn(n),astNode:n}}}return t}function A(e){const t=Object.create(null);for(const r of e){var n;const e=null!==(n=r.values)&&void 0!==n?n:[];for(const n of e){var i;t[n.name.value]={description:null===(i=n.description)||void 0===i?void 0:i.value,deprecationReason:Wn(n),astNode:n}}}return t}function D(e){return e.flatMap((e=>{var t,n;return null!==(t=null===(n=e.interfaces)||void 0===n?void 0:n.map(_))&&void 0!==t?t:[]}))}function w(e){return e.flatMap((e=>{var t,n;return null!==(t=null===(n=e.types)||void 0===n?void 0:n.map(_))&&void 0!==t?t:[]}))}function k(e){var t;const n=e.name.value,i=null!==(t=u[n])&&void 0!==t?t:[];switch(e.kind){case m.OBJECT_TYPE_DEFINITION:{var r;const t=[e,...i];return new GraphQLObjectType({name:n,description:null===(r=e.description)||void 0===r?void 0:r.value,interfaces:()=>D(t),fields:()=>b(t),astNode:e,extensionASTNodes:i})}case m.INTERFACE_TYPE_DEFINITION:{var o;const t=[e,...i];return new GraphQLInterfaceType({name:n,description:null===(o=e.description)||void 0===o?void 0:o.value,interfaces:()=>D(t),fields:()=>b(t),astNode:e,extensionASTNodes:i})}case m.ENUM_TYPE_DEFINITION:{var s;const t=[e,...i];return new GraphQLEnumType({name:n,description:null===(s=e.description)||void 0===s?void 0:s.value,values:A(t),astNode:e,extensionASTNodes:i})}case m.UNION_TYPE_DEFINITION:{var a;const t=[e,...i];return new GraphQLUnionType({name:n,description:null===(a=e.description)||void 0===a?void 0:a.value,types:()=>w(t),astNode:e,extensionASTNodes:i})}case m.SCALAR_TYPE_DEFINITION:var c;return new GraphQLScalarType({name:n,description:null===(c=e.description)||void 0===c?void 0:c.value,specifiedByURL:Zn(e),astNode:e,extensionASTNodes:i});case m.INPUT_OBJECT_TYPE_DEFINITION:{var l;const t=[e,...i];return new GraphQLInputObjectType({name:n,description:null===(l=e.description)||void 0===l?void 0:l.value,fields:()=>S(t),astNode:e,extensionASTNodes:i})}}}}const Hn=ee([...vt,...jt],(e=>e.name));function Wn(e){const t=xn(_t,e);return null==t?void 0:t.reason}function Zn(e){const t=xn(Ot,e);return null==t?void 0:t.url}function ei(e,n){null!=e&&e.kind===m.DOCUMENT||t(!1,"Must provide valid Document AST."),!0!==(null==n?void 0:n.assumeValid)&&!0!==(null==n?void 0:n.assumeValidSDL)&&function(e){const t=qn(e);if(0!==t.length)throw new Error(t.map((e=>e.message)).join("\n\n"))}(e);const i=zn({description:void 0,types:[],directives:[],extensions:Object.create(null),extensionASTNodes:[],assumeValid:!1},e,n);if(null==i.astNode)for(const e of i.types)switch(e.name){case"Query":i.query=e;break;case"Mutation":i.mutation=e;break;case"Subscription":i.subscription=e}const r=[...i.directives,...bt.filter((e=>i.directives.every((t=>t.name!==e.name))))];return new GraphQLSchema({...i,directives:r})}function ti(e){return function(e,t,n){const r=e.getDirectives().filter(t),o=Object.values(e.getTypeMap()).filter(n);return[ii(e),...r.map((e=>function(e){return li(e)+"directive @"+e.name+ai(e.args)+(e.isRepeatable?" repeatable":"")+" on "+e.locations.join(" | ")}(e))),...o.map((e=>function(e){if(Ae(e))return function(e){return li(e)+`scalar ${e.name}`+function(e){if(null==e.specifiedByURL)return"";return` @specifiedBy(url: ${ye({kind:m.STRING,value:e.specifiedByURL})})`}(e)}(e);if(De(e))return function(e){return li(e)+`type ${e.name}`+ri(e)+oi(e)}(e);if(we(e))return function(e){return li(e)+`interface ${e.name}`+ri(e)+oi(e)}(e);if(ke(e))return function(e){const t=e.getTypes(),n=t.length?" = "+t.join(" | "):"";return li(e)+"union "+e.name+n}(e);if(xe(e))return function(e){const t=e.getValues().map(((e,t)=>li(e," ",!t)+" "+e.name+ui(e.deprecationReason)));return li(e)+`enum ${e.name}`+si(t)}(e);if(Fe(e))return function(e){const t=Object.values(e.getFields()).map(((e,t)=>li(e," ",!t)+" "+ci(e)));return li(e)+`input ${e.name}`+si(t)}(e);i(!1,"Unexpected type: "+Y(e))}(e)))].filter(Boolean).join("\n\n")}(e,(e=>{return t=e,!bt.some((({name:e})=>e===t.name));var t}),ni)}function ni(e){return!yt(e)&&!Vt(e)}function ii(e){if(null==e.description&&function(e){const t=e.getQueryType();if(t&&"Query"!==t.name)return!1;const n=e.getMutationType();if(n&&"Mutation"!==n.name)return!1;const i=e.getSubscriptionType();if(i&&"Subscription"!==i.name)return!1;return!0}(e))return;const t=[],n=e.getQueryType();n&&t.push(` query: ${n.name}`);const i=e.getMutationType();i&&t.push(` mutation: ${i.name}`);const r=e.getSubscriptionType();return r&&t.push(` subscription: ${r.name}`),li(e)+`schema {\n${t.join("\n")}\n}`}function ri(e){const t=e.getInterfaces();return t.length?" implements "+t.map((e=>e.name)).join(" & "):""}function oi(e){return si(Object.values(e.getFields()).map(((e,t)=>li(e," ",!t)+" "+e.name+ai(e.args," ")+": "+String(e.type)+ui(e.deprecationReason))))}function si(e){return 0!==e.length?" {\n"+e.join("\n")+"\n}":""}function ai(e,t=""){return 0===e.length?"":e.every((e=>!e.description))?"("+e.map(ci).join(", ")+")":"(\n"+e.map(((e,n)=>li(e," "+t,!n)+" "+t+ci(e))).join("\n")+"\n"+t+")"}function ci(e){const t=Lt(e.defaultValue,e.type);let n=e.name+": "+String(e.type);return t&&(n+=` = ${ye(t)}`),n+ui(e.deprecationReason)}function ui(e){if(null==e)return"";if(e!==gt){return` @deprecated(reason: ${ye({kind:m.STRING,value:e})})`}return" @deprecated"}function li(e,t="",n=!0){const{description:i}=e;if(null==i)return"";return(t&&!n?"\n"+t:t)+ye({kind:m.STRING,value:i,block:O(i)}).replace(/\n/g,"\n"+t)+"\n"}function pi(e){const t=[];for(const n of e)t.push(...n.definitions);return{kind:m.DOCUMENT,definitions:t}}const di=[hn];function fi(e){var t;const n=function(e){if(e)return function(t){const n=e;return{Field(e){var i;const r=(null!==(i=e.alias)&&void 0!==i?i:e.name).value,o=r.charAt(0).toLowerCase()+r.slice(1);n.includes(o)&&t.reportError(new GraphQLError(`Field name "${r}" is not allowed because it conflicts with generated object APIs. Please use an alias to change the field name.`,{nodes:e}))}}};return}(null===(t=e.disallowedFieldNames)||void 0===t?void 0:t.allFields),i=function(e){if(e)return function(t){const n=e;return{VariableDefinition(e){const i=e.variable.name.value,r=i.charAt(0).toLowerCase()+i.slice(1);n.includes(r)&&t.reportError(new GraphQLError(`Input Parameter name "${i}" is not allowed because it conflicts with generated object APIs.`,{nodes:e}))}}};return}(e.disallowedInputParameterNames);return[hi,mi,...n?[n]:[],...i?[i]:[],...Bn.filter((e=>!di.includes(e)))]}function hi(e){return{OperationDefinition:t=>(t.name||e.reportError(new GraphQLError("Apollo does not support anonymous operations because operation names are used during code generation. Please give this operation a name.",t)),!1)}}function mi(e){return{Field(t){"__typename"==(t.alias&&t.alias.value)&&e.reportError(new GraphQLError("Apollo needs to be able to insert __typename when needed, so using it as an alias is not supported.",t))}}}const vi={kind:m.DIRECTIVE_DEFINITION,description:(yi="A directive used by the Apollo iOS client to annotate operations or fragments that should be used exclusively for generating local cache mutations instead of as standard operations.",{kind:m.STRING,value:yi}),name:Ei("apollo_client_ios_localCacheMutation"),repeatable:!1,locations:[Ei("QUERY"),Ei("MUTATION"),Ei("SUBSCRIPTION"),Ei("FRAGMENT_DEFINITION")]};var yi;function Ei(e){return{kind:m.NAME,value:e}}const Ti={kind:m.DOCUMENT,definitions:[vi]};const Ni={kind:m.FIELD,name:{kind:m.NAME,value:"__typename"}};class GraphQLSchemaValidationError extends Error{constructor(e){super(e.map((e=>e.message)).join("\n\n")),this.validationErrors=e,this.name="GraphQLSchemaValidationError"}}function Ii(e){return e.startsWith("__")}const gi={kind:m.FIELD,name:{kind:m.NAME,value:"__typename"}};function _i(e,t){return t&&(e=function(e){return he(e,{enter:e=>e.kind!==m.SELECTION_SET?void 0:{...e,selections:e.selections.filter((e=>!("Field"===e.kind&&"__typename"===e.name.value)))},leave(e){if((e.kind===m.FIELD||e.kind===m.FRAGMENT_DEFINITION||e.kind===m.INLINE_FRAGMENT)&&e.selectionSet)return{...e,selectionSet:{...e.selectionSet,selections:[Ni,...e.selectionSet.selections]}}}})}(e)),he(e,{SelectionSet:{leave:(e,t,n)=>d(n)&&![m.FIELD,m.FRAGMENT_DEFINITION].includes(n.kind)?e:function(e){const t=e.selections.find((e=>e.kind==gi.kind&&e.name.value==gi.name.value));return t?e:{...e,selections:[gi,...e.selections]}}(e)},Field:{enter:e=>function(e){return e.name.value==gi.name.value?{...e,alias:void 0,directives:void 0}:e}(e)},Directive:{enter:e=>function(e){return e.name.value==vi.name.value?null:e}(e)}})}function Oi(e){return null!=e}function bi(e){switch(e.kind){case m.VARIABLE:return{kind:e.kind,value:e.name.value};case m.LIST:return{kind:e.kind,value:e.values.map(bi)};case m.OBJECT:return{kind:e.kind,value:e.fields.reduce(((e,t)=>(e[t.name.value]=bi(t.value),e)),{})};default:return e}}function Li(e){var t,n;return null===(n=null===(t=e.loc)||void 0===t?void 0:t.source)||void 0===n?void 0:n.name}function Si(e,t,n,i){var r,o,s;const a=new Map;for(const e of t.definitions)e.kind===m.FRAGMENT_DEFINITION&&a.set(e.name.value,e);const c=[],u=new Map,l=new Set,p=e.getQueryType();if(void 0===p)throw new GraphQLError("GraphQL Schema must contain a 'query' root type definition.",{});const d={queryType:p,mutationType:null!==(r=e.getMutationType())&&void 0!==r?r:void 0,subscriptionType:null!==(o=e.getSubscriptionType())&&void 0!==o?o:void 0};for(const e of t.definitions)e.kind===m.OPERATION_DEFINITION&&c.push(h(e));for(const[e,t]of a.entries())u.set(e,v(t));return{rootTypes:d,operations:c,fragments:Array.from(u.values()),referencedTypes:Array.from(l.values()),schemaDocumentation:null!==(s=e.description)&&void 0!==s?s:void 0};function f(t){if(!l.has(t)){if(l.add(t),we(t))for(const n of e.getPossibleTypes(t))f(Je(n));if(ke(t)){const e=t.getTypes();for(t of e)f(Je(t))}if(Fe(t)&&function(e){const t=e.getFields();for(const e in t){f(Je(t[e].type))}}(t),De(t))for(const e of t.getInterfaces())f(Je(e))}}function h(t){var i;if(!t.name)throw new GraphQLError("Operations should be named",{nodes:t});const r=Li(t),o=t.name.value,s=t.operation,a=(t.variableDefinitions||[]).map((t=>{const n=t.variable.name.value,i=t.defaultValue?bi(t.defaultValue):void 0,r=rn(e,t.type);if(!r)throw new GraphQLError(`Couldn't get type from type node "${t.type}"`,{nodes:t});return f(Je(r)),{name:n,type:r,defaultValue:i}})),c=ye(_i(t,n)),u=e.getRootType(s),[l]=null!==(i=T(t.directives))&&void 0!==i?i:[void 0,void 0];return f(u),{name:o,operationType:s,variables:a,rootType:u,selectionSet:y(t.selectionSet,u),directives:l,source:c,filePath:r}}function v(t){var i;const r=t.name.value,o=Li(t),s=ye(_i(t,n)),a=rn(e,t.typeCondition),[c]=null!==(i=T(t.directives))&&void 0!==i?i:[void 0,void 0];return f(Je(a)),{name:r,filePath:o,source:s,typeCondition:a,selectionSet:y(t.selectionSet,a),directives:c}}function y(t,n){return{parentType:n,selections:t.selections.map((t=>function(t,n){var r,o,s,c;const[l,p]=null!==(r=T(t.directives))&&void 0!==r?r:[void 0,void 0];switch(t.kind){case m.FIELD:{const d=t.name.value;if("__typename"==d)return;const h=null===(o=t.alias)||void 0===o?void 0:o.value,N=function(e,t,n){return n===$t.name&&e.getQueryType()===t?$t:n===Qt.name&&e.getQueryType()===t?Qt:n===Ut.name&&(De(t)||we(t)||ke(t))?Ut:De(t)||we(t)?t.getFields()[n]:void 0}(e,n,d);if(!N)throw new GraphQLError(`Cannot query field "${d}" on type "${String(n)}"`,{nodes:t});const I=mn(N.type,t.required),g=Je(I);f(Je(g));const{description:_,deprecationReason:O}=N;let b={kind:"Field",name:d,alias:h,type:I,arguments:E(N,t.arguments),inclusionConditions:p,description:!Ii(d)&&_?_:void 0,deprecationReason:O||void 0,directives:l};function L(e,t,n){var i;if(t&&n){const r=(null!==(i=e.alias)&&void 0!==i?i:e.name).value,o=r.charAt(0).toLowerCase()+r.slice(1);if(null==t?void 0:t.includes(o))throw new GraphQLError(`Schema name "${n}" conflicts with name of a generated object API. Please choose a different schema name. Suggestions: "${n}Schema", "${n}GraphQL", "${n}API"`,{nodes:e})}}if(Re(I)||Ge(I)&&Re(I.ofType)?L(t,null===(s=i.disallowedFieldNames)||void 0===s?void 0:s.entityList,i.schemaNamespace):je(g)&&L(t,null===(c=i.disallowedFieldNames)||void 0===c?void 0:c.entity,i.schemaNamespace),je(g)){const S=t.selectionSet;if(!S)throw new GraphQLError(`Composite field "${d}" on type "${String(n)}" requires selection set`,{nodes:t});b.selectionSet=y(S,g)}return b}case m.INLINE_FRAGMENT:{const A=t.typeCondition,D=A?rn(e,A):n;return f(D),{kind:"InlineFragment",selectionSet:y(t.selectionSet,D),inclusionConditions:p,directives:l}}case m.FRAGMENT_SPREAD:{const w=t.name.value,k=function(e){let t=u.get(e);if(t)return t;const n=a.get(e);return n?(a.delete(e),t=v(n),u.set(e,t),t):void 0}(w);if(!k)throw new GraphQLError(`Unknown fragment "${w}".`,{nodes:t.name});return{kind:"FragmentSpread",fragment:k,inclusionConditions:p,directives:l}}}}(t,n))).filter(Oi)}}function E(...e){const t=e[0].args;return e[1]&&e[1].length>0?e[1].map((e=>{var n;const i=e.name.value,r=t.find((t=>t.name===e.name.value)),o=null==r?void 0:r.type;if(!o)throw new GraphQLError(`Cannot find directive argument type for argument "${i}".`,{nodes:[e]});return{name:i,value:bi(e.value),type:o,deprecationReason:null!==(n=r.deprecationReason)&&void 0!==n?n:void 0}})):void 0}function T(t){if(t&&t.length>0){const n=[],i=[];for(const r of t){const t=r.name.value,o=e.getDirective(t);if(!o)throw new GraphQLError(`Cannot find directive "${t}".`,{nodes:r});n.push({name:t,arguments:E(o,r.arguments)});const s=N(r,o);s&&i.push(s)}return[n,i.length>0?i:void 0]}}function N(e,t){var n;if("include"==t.name||"skip"==t.name){const i=null===(n=e.arguments)||void 0===n?void 0:n[0].value,r="skip"==t.name;switch(null==i?void 0:i.kind){case m.BOOLEAN:return r?i.value?"SKIPPED":"INCLUDED":i.value?"INCLUDED":"SKIPPED";case m.VARIABLE:return{variable:i.name.value,isInverted:r};default:throw new GraphQLError('Conditional inclusion directive has invalid "if" argument.',{nodes:e})}}}}return e.GraphQLEnumType=GraphQLEnumType,e.GraphQLError=GraphQLError,e.GraphQLInputObjectType=GraphQLInputObjectType,e.GraphQLInterfaceType=GraphQLInterfaceType,e.GraphQLObjectType=GraphQLObjectType,e.GraphQLScalarType=GraphQLScalarType,e.GraphQLSchema=GraphQLSchema,e.GraphQLSchemaValidationError=GraphQLSchemaValidationError,e.GraphQLUnionType=GraphQLUnionType,e.Source=Source,e.compileDocument=function(e,t,n,i){return Si(e,t,n,i)},e.loadSchemaFromSources=function(e){var t,n=new Array;for(const i of e)if(i.name.endsWith(".json")){if(t)throw new Error(`Schema search paths can only include one JSON schema definition.\n Found "${t.name} & "${i.name}".`);t=i}else n.push(K(i));var i=function(e){return e.definitions.some((e=>e.kind==m.DIRECTIVE_DEFINITION&&e.name.value==vi.name.value))?e:pi([e,Ti])}(pi(n));t||function(e){const t=qn(e);if(0!==t.length)throw new GraphQLSchemaValidationError(t)}(i);const r=t?Xn(function(e){let t=JSON.parse(e);t.data&&(t=t.data);const n=Kn(t);return n}(t.body),i,{assumeValid:!0,assumeValidSDL:!0}):ei(i,{assumeValid:!0,assumeValidSDL:!0});return function(e){const t=Bt(e);if(0!==t.length)throw new GraphQLSchemaValidationError(t)}(r),r},e.mergeDocuments=function(e){return pi(e)},e.parseOperationDocument=function(e,t){return K(e,{experimentalClientControlledNullability:t})},e.printSchemaToSDL=function(e){return ti(e)},e.validateDocument=function(e,t,n){return Jn(e,t,fi(n))},Object.defineProperty(e,"__esModule",{value:!0}),e}({}); diff --git a/apollo-ios-codegen/Sources/GraphQLCompiler/JavaScript/src/__tests__/referencedFragmentsTests.ts b/apollo-ios-codegen/Sources/GraphQLCompiler/JavaScript/src/__tests__/referencedFragmentsTests.ts new file mode 100644 index 000000000..51ac370ac --- /dev/null +++ b/apollo-ios-codegen/Sources/GraphQLCompiler/JavaScript/src/__tests__/referencedFragmentsTests.ts @@ -0,0 +1,194 @@ +import { + compileDocument, + parseOperationDocument, + loadSchemaFromSources, + mergeDocuments, +} from "../index" +import { + CompilationResult +} from "../compiler/index" +import { + FragmentDefinition, + OperationDefinition +} from "../compiler/ir" +import { + Source, + GraphQLSchema, + DocumentNode +} from "graphql"; +import { emptyValidationOptions } from "../__testUtils__/validationHelpers"; + +describe("operation with referencedFragments", () => { + const operationADocument: DocumentNode = parseOperationDocument( + new Source( ` + query OperationA { + ...FragmentA + ...FragmentC + } + `, "OperationA", { line: 1, column: 1 }), + false + ); + + const fragmentADocument: DocumentNode = parseOperationDocument( + new Source( ` + fragment FragmentA on Query { + a + ...FragmentB + } + `, "FragmentA", { line: 1, column: 1 }), + false + ); + + const fragmentBDocument: DocumentNode = parseOperationDocument( + new Source( ` + fragment FragmentB on Query { + b + } + `, "FragmentB", { line: 1, column: 1 }), + false + ); + + const fragmentCDocument: DocumentNode = parseOperationDocument( + new Source( ` + fragment FragmentC on Query { + c + } + `, "FragmentC", { line: 1, column: 1 }), + false + ); + + const schema: GraphQLSchema = loadSchemaFromSources([new Source(` + type Query { + a: String! + b: String! + c: String! + } + `, + "Test Schema", { line: 1, column: 1 })]); + + const document: DocumentNode = mergeDocuments([ + operationADocument, + fragmentADocument, + fragmentBDocument, + fragmentCDocument]) + + const compilationResult: CompilationResult = compileDocument(schema, document, false, emptyValidationOptions); + + const operationA: OperationDefinition = compilationResult.operations.find(function(element) { + return element.name == 'OperationA' + }) as OperationDefinition + + const fragmentA: FragmentDefinition = compilationResult.fragments.find(function(element) { + return element.name == 'FragmentA' + }) as FragmentDefinition + + const fragmentB: FragmentDefinition = compilationResult.fragments.find(function(element) { + return element.name == 'FragmentB' + }) as FragmentDefinition + + const fragmentC: FragmentDefinition = compilationResult.fragments.find(function(element) { + return element.name == 'FragmentC' + }) as FragmentDefinition + + it("compilation result OperationA should have referencedFragments including only directly referenced fragments.", () => { + expect(operationA.referencedFragments).toEqual([fragmentA, fragmentC]) + }); + + it("compilation result FragmentA should have referencedFragments including only directly referenced fragments.", () => { + expect(fragmentA.referencedFragments).toEqual([fragmentB]) + }); + +}); + +describe("operation with referencedFragments on child entity selection sets", () => { + const operationADocument: DocumentNode = parseOperationDocument( + new Source( ` + query OperationA { + a { + ...FragmentA + } + ...FragmentC + } + `, "OperationA", { line: 1, column: 1 }), + false + ); + + const fragmentADocument: DocumentNode = parseOperationDocument( + new Source( ` + fragment FragmentA on A { + A + b { + ...FragmentB + } + } + `, "FragmentA", { line: 1, column: 1 }), + false + ); + + const fragmentBDocument: DocumentNode = parseOperationDocument( + new Source( ` + fragment FragmentB on B { + B + } + `, "FragmentB", { line: 1, column: 1 }), + false + ); + + const fragmentCDocument: DocumentNode = parseOperationDocument( + new Source( ` + fragment FragmentC on Query { + c + } + `, "FragmentC", { line: 1, column: 1 }), + false + ); + + const schema: GraphQLSchema = loadSchemaFromSources([new Source(` + type Query { + a: A! + b: B! + c: String! + } + type A { + A: String! + b: B! + } + type B { + B: String! + } + `, + "Test Schema", { line: 1, column: 1 })]); + + const document: DocumentNode = mergeDocuments([ + operationADocument, + fragmentADocument, + fragmentBDocument, + fragmentCDocument]) + + const compilationResult: CompilationResult = compileDocument(schema, document, false, emptyValidationOptions); + + const operationA: OperationDefinition = compilationResult.operations.find(function(element) { + return element.name == 'OperationA' + }) as OperationDefinition + + const fragmentA: FragmentDefinition = compilationResult.fragments.find(function(element) { + return element.name == 'FragmentA' + }) as FragmentDefinition + + const fragmentB: FragmentDefinition = compilationResult.fragments.find(function(element) { + return element.name == 'FragmentB' + }) as FragmentDefinition + + const fragmentC: FragmentDefinition = compilationResult.fragments.find(function(element) { + return element.name == 'FragmentC' + }) as FragmentDefinition + + it("compilation result OperationA should have referencedFragments including only directly referenced fragments.", () => { + expect(operationA.referencedFragments).toEqual([fragmentA, fragmentC]) + }); + + it("compilation result FragmentA should have referencedFragments including only directly referenced fragments.", () => { + expect(fragmentA.referencedFragments).toEqual([fragmentB]) + }); + +}); \ No newline at end of file diff --git a/apollo-ios-codegen/Sources/GraphQLCompiler/JavaScript/src/__tests__/referenceTypesTests.ts b/apollo-ios-codegen/Sources/GraphQLCompiler/JavaScript/src/__tests__/referencedTypesTests.ts similarity index 100% rename from apollo-ios-codegen/Sources/GraphQLCompiler/JavaScript/src/__tests__/referenceTypesTests.ts rename to apollo-ios-codegen/Sources/GraphQLCompiler/JavaScript/src/__tests__/referencedTypesTests.ts diff --git a/apollo-ios-codegen/Sources/GraphQLCompiler/JavaScript/src/compiler/index.ts b/apollo-ios-codegen/Sources/GraphQLCompiler/JavaScript/src/compiler/index.ts index 3ddf3fc67..81a082fc7 100644 --- a/apollo-ios-codegen/Sources/GraphQLCompiler/JavaScript/src/compiler/index.ts +++ b/apollo-ios-codegen/Sources/GraphQLCompiler/JavaScript/src/compiler/index.ts @@ -168,6 +168,7 @@ export function compileToIR( const filePath = filePathForNode(operationDefinition); const name = operationDefinition.name.value; const operationType = operationDefinition.operation; + const referencedFragments = new Set(); const variables = (operationDefinition.variableDefinitions || []).map( (node) => { @@ -214,9 +215,11 @@ export function compileToIR( rootType, selectionSet: compileSelectionSet( operationDefinition.selectionSet, - rootType + rootType, + referencedFragments ), directives: directives, + referencedFragments: Array.from(referencedFragments.values()), source, filePath }; @@ -232,6 +235,7 @@ export function compileToIR( fragmentDefinition, legacySafelistingCompatibleOperations )); + const referencedFragments = new Set(); const typeCondition = typeFromAST( schema, @@ -249,21 +253,24 @@ export function compileToIR( typeCondition, selectionSet: compileSelectionSet( fragmentDefinition.selectionSet, - typeCondition + typeCondition, + referencedFragments ), - directives: directives + directives: directives, + referencedFragments: Array.from(referencedFragments.values()), }; } function compileSelectionSet( selectionSetNode: SelectionSetNode, - parentType: GraphQLCompositeType + parentType: GraphQLCompositeType, + operationReferencedFragments: Set, ): ir.SelectionSet { return { parentType, selections: selectionSetNode.selections .map((selectionNode) => - compileSelection(selectionNode, parentType) + compileSelection(selectionNode, parentType, operationReferencedFragments) ) .filter(isNotNullOrUndefined), }; @@ -271,7 +278,8 @@ export function compileToIR( function compileSelection( selectionNode: SelectionNode, - parentType: GraphQLCompositeType + parentType: GraphQLCompositeType, + operationReferencedFragments: Set, ): ir.Selection | undefined { const [directives, inclusionConditions] = compileDirectives(selectionNode.directives) ?? [undefined, undefined]; @@ -343,7 +351,8 @@ export function compileToIR( field.selectionSet = compileSelectionSet( selectionSetNode, - unwrappedFieldType + unwrappedFieldType, + operationReferencedFragments ); } return field; @@ -360,7 +369,8 @@ export function compileToIR( kind: "InlineFragment", selectionSet: compileSelectionSet( selectionNode.selectionSet, - typeCondition + typeCondition, + operationReferencedFragments ), inclusionConditions: inclusionConditions, directives: directives @@ -377,6 +387,8 @@ export function compileToIR( ); } + operationReferencedFragments.add(fragment); + const fragmentSpread: ir.FragmentSpread = { kind: "FragmentSpread", fragment, diff --git a/apollo-ios-codegen/Sources/GraphQLCompiler/JavaScript/src/compiler/ir.ts b/apollo-ios-codegen/Sources/GraphQLCompiler/JavaScript/src/compiler/ir.ts index a876933a1..19aa615b0 100644 --- a/apollo-ios-codegen/Sources/GraphQLCompiler/JavaScript/src/compiler/ir.ts +++ b/apollo-ios-codegen/Sources/GraphQLCompiler/JavaScript/src/compiler/ir.ts @@ -21,6 +21,7 @@ export interface OperationDefinition { rootType: GraphQLObjectType; selectionSet: SelectionSet; directives?: Directive[]; + referencedFragments: FragmentDefinition[]; source: string; filePath?: string; } @@ -38,6 +39,7 @@ export interface FragmentDefinition { typeCondition: GraphQLCompositeType; selectionSet: SelectionSet; directives?: Directive[]; + referencedFragments: FragmentDefinition[]; source: string; filePath?: string; } @@ -70,7 +72,7 @@ export interface Argument { } export interface InlineFragment { - kind: "InlineFragment"; + kind: "InlineFragment"; selectionSet: SelectionSet; inclusionConditions?: InclusionCondition[]; directives?: Directive[]; diff --git a/apollo-ios/Sources/Apollo/GraphQLResponse.swift b/apollo-ios/Sources/Apollo/GraphQLResponse.swift index 6ec8a44f5..0cf4ba928 100644 --- a/apollo-ios/Sources/Apollo/GraphQLResponse.swift +++ b/apollo-ios/Sources/Apollo/GraphQLResponse.swift @@ -94,6 +94,6 @@ extension GraphQLResponse: Hashable where Data: Hashable { public func hash(into hasher: inout Hasher) { hasher.combine(body) hasher.combine(rootKey) - hasher.combine(variables?._jsonEncodableValue?._jsonValue) + hasher.combine(variables?._jsonEncodableObject._jsonValue) } } diff --git a/git-sh-setup b/git-sh-setup new file mode 100755 index 000000000..ebd89f81e --- /dev/null +++ b/git-sh-setup @@ -0,0 +1,357 @@ +# This shell scriplet is meant to be included by other shell scripts +# to set up some variables pointing at the normal git directories and +# a few helper shell functions. + +# Having this variable in your environment would break scripts because +# you would cause "cd" to be taken to unexpected places. If you +# like CDPATH, define it for your interactive shell sessions without +# exporting it. +# But we protect ourselves from such a user mistake nevertheless. +unset CDPATH + +# Similarly for IFS, but some shells (e.g. FreeBSD 7.2) are buggy and +# do not equate an unset IFS with IFS with the default, so here is +# an explicit SP HT LF. +IFS=' +' + +git_broken_path_fix () { + case ":$PATH:" in + *:$1:*) : ok ;; + *) + PATH=$( + SANE_TOOL_PATH="$1" + IFS=: path= sep= + set x $PATH + shift + for elem + do + case "$SANE_TOOL_PATH:$elem" in + (?*:/bin | ?*:/usr/bin) + path="$path$sep$SANE_TOOL_PATH" + sep=: + SANE_TOOL_PATH= + esac + path="$path$sep$elem" + sep=: + done + echo "$path" + ) + ;; + esac +} + + +# Source git-sh-i18n for gettext support. +. "$(git --exec-path)/git-sh-i18n" + +die () { + die_with_status 1 "$@" +} + +die_with_status () { + status=$1 + shift + printf >&2 '%s\n' "$*" + exit "$status" +} + +if test -n "$OPTIONS_SPEC"; then + usage() { + "$0" -h + exit 1 + } + + parseopt_extra= + [ -n "$OPTIONS_KEEPDASHDASH" ] && + parseopt_extra="--keep-dashdash" + [ -n "$OPTIONS_STUCKLONG" ] && + parseopt_extra="$parseopt_extra --stuck-long" + + eval "$( + echo "$OPTIONS_SPEC" | + git rev-parse --parseopt $parseopt_extra -- "$@" || + echo exit $? + )" +else + dashless=$(basename -- "$0" | sed -e 's/-/ /') + usage() { + die "$(eval_gettext "usage: \$dashless \$USAGE")" + } + + if [ -z "$LONG_USAGE" ] + then + LONG_USAGE="$(eval_gettext "usage: \$dashless \$USAGE")" + else + LONG_USAGE="$(eval_gettext "usage: \$dashless \$USAGE + +$LONG_USAGE")" + fi + + case "$1" in + -h) + echo "$LONG_USAGE" + exit + esac +fi + +# Set the name of the end-user facing command in the reflog when the +# script may update refs. When GIT_REFLOG_ACTION is already set, this +# will not overwrite it, so that a scripted Porcelain (e.g. "git +# rebase") can set it to its own name (e.g. "rebase") and then call +# another scripted Porcelain (e.g. "git am") and a call to this +# function in the latter will keep the name of the end-user facing +# program (e.g. "rebase") in GIT_REFLOG_ACTION, ensuring whatever it +# does will be record as actions done as part of the end-user facing +# operation (e.g. "rebase"). +# +# NOTE NOTE NOTE: consequently, after assigning a specific message to +# GIT_REFLOG_ACTION when calling a "git" command to record a custom +# reflog message, do not leave that custom value in GIT_REFLOG_ACTION, +# after you are done. Other callers of "git" commands that rely on +# writing the default "program name" in reflog expect the variable to +# contain the value set by this function. +# +# To use a custom reflog message, do either one of these three: +# +# (a) use a single-shot export form: +# GIT_REFLOG_ACTION="$GIT_REFLOG_ACTION: preparing frotz" \ +# git command-that-updates-a-ref +# +# (b) save the original away and restore: +# SAVED_ACTION=$GIT_REFLOG_ACTION +# GIT_REFLOG_ACTION="$GIT_REFLOG_ACTION: preparing frotz" +# git command-that-updates-a-ref +# GIT_REFLOG_ACITON=$SAVED_ACTION +# +# (c) assign the variable in a subshell: +# ( +# GIT_REFLOG_ACTION="$GIT_REFLOG_ACTION: preparing frotz" +# git command-that-updates-a-ref +# ) +set_reflog_action() { + if [ -z "${GIT_REFLOG_ACTION:+set}" ] + then + GIT_REFLOG_ACTION="$*" + export GIT_REFLOG_ACTION + fi +} + +git_editor() { + if test -z "${GIT_EDITOR:+set}" + then + GIT_EDITOR="$(git var GIT_EDITOR)" || return $? + fi + + eval "$GIT_EDITOR" '"$@"' +} + +git_pager() { + if test -t 1 + then + GIT_PAGER=$(git var GIT_PAGER) + else + GIT_PAGER=cat + fi + for vardef in LESS=FRX LV=-c + do + var=${vardef%%=*} + eval ": \"\${$vardef}\" && export $var" + done + + eval "$GIT_PAGER" '"$@"' +} + +is_bare_repository () { + git rev-parse --is-bare-repository +} + +cd_to_toplevel () { + cdup=$(git rev-parse --show-toplevel) && + cd "$cdup" || { + gettextln "Cannot chdir to \$cdup, the toplevel of the working tree" >&2 + exit 1 + } +} + +require_work_tree_exists () { + if test "z$(git rev-parse --is-bare-repository)" != zfalse + then + program_name=$0 + die "$(eval_gettext "fatal: \$program_name cannot be used without a working tree.")" + fi +} + +require_work_tree () { + test "$(git rev-parse --is-inside-work-tree 2>/dev/null)" = true || { + program_name=$0 + die "$(eval_gettext "fatal: \$program_name cannot be used without a working tree.")" + } +} + +require_clean_work_tree () { + git rev-parse --verify HEAD >/dev/null || exit 1 + git update-index -q --ignore-submodules --refresh + err=0 + + if ! git diff-files --quiet --ignore-submodules + then + action=$1 + case "$action" in + "rewrite branches") + gettextln "Cannot rewrite branches: You have unstaged changes." >&2 + ;; + *) + eval_gettextln "Cannot \$action: You have unstaged changes." >&2 + ;; + esac + err=1 + fi + + if ! git diff-index --cached --quiet --ignore-submodules HEAD -- + then + if test $err = 0 + then + action=$1 + eval_gettextln "Cannot \$action: Your index contains uncommitted changes." >&2 + else + gettextln "Additionally, your index contains uncommitted changes." >&2 + fi + err=1 + fi + + if test $err = 1 + then + test -n "$2" && echo "$2" >&2 + exit 1 + fi +} + +# Generate a sed script to parse identities from a commit. +# +# Reads the commit from stdin, which should be in raw format (e.g., from +# cat-file or "--pretty=raw"). +# +# The first argument specifies the ident line to parse (e.g., "author"), and +# the second specifies the environment variable to put it in (e.g., "AUTHOR" +# for "GIT_AUTHOR_*"). Multiple pairs can be given to parse author and +# committer. +pick_ident_script () { + while test $# -gt 0 + do + lid=$1; shift + uid=$1; shift + printf '%s' " + /^$lid /{ + s/'/'\\\\''/g + h + s/^$lid "'\([^<]*\) <[^>]*> .*$/\1/'" + s/.*/GIT_${uid}_NAME='&'/p + + g + s/^$lid "'[^<]* <\([^>]*\)> .*$/\1/'" + s/.*/GIT_${uid}_EMAIL='&'/p + + g + s/^$lid "'[^<]* <[^>]*> \(.*\)$/@\1/'" + s/.*/GIT_${uid}_DATE='&'/p + } + " + done + echo '/^$/q' +} + +# Create a pick-script as above and feed it to sed. Stdout is suitable for +# feeding to eval. +parse_ident_from_commit () { + LANG=C LC_ALL=C sed -ne "$(pick_ident_script "$@")" +} + +# Parse the author from a commit given as an argument. Stdout is suitable for +# feeding to eval to set the usual GIT_* ident variables. +get_author_ident_from_commit () { + encoding=$(git config i18n.commitencoding || echo UTF-8) + git show -s --pretty=raw --encoding="$encoding" "$1" -- | + parse_ident_from_commit author AUTHOR +} + +# Generate a virtual base file for a two-file merge. Uses git apply to +# remove lines from $1 that are not in $2, leaving only common lines. +create_virtual_base() { + sz0=$(wc -c <"$1") + diff -u -La/"$1" -Lb/"$1" "$1" "$2" | git apply --no-add + sz1=$(wc -c <"$1") + + # If we do not have enough common material, it is not + # worth trying two-file merge using common subsections. + expr $sz0 \< $sz1 \* 2 >/dev/null || : >"$1" +} + + +# Platform specific tweaks to work around some commands +case $(uname -s) in +*MINGW*) + # Windows has its own (incompatible) sort and find + sort () { + /usr/bin/sort "$@" + } + find () { + /usr/bin/find "$@" + } + # git sees Windows-style pwd + pwd () { + builtin pwd -W + } + is_absolute_path () { + case "$1" in + [/\\]* | [A-Za-z]:*) + return 0 ;; + esac + return 1 + } + ;; +*) + is_absolute_path () { + case "$1" in + /*) + return 0 ;; + esac + return 1 + } +esac + +# Make sure we are in a valid repository of a vintage we understand, +# if we require to be in a git repository. +git_dir_init () { + GIT_DIR=$(git rev-parse --git-dir) || exit + if [ -z "$SUBDIRECTORY_OK" ] + then + test -z "$(git rev-parse --show-cdup)" || { + exit=$? + gettextln "You need to run this command from the toplevel of the working tree." >&2 + exit $exit + } + fi + test -n "$GIT_DIR" && GIT_DIR=$(cd "$GIT_DIR" && pwd) || { + gettextln "Unable to determine absolute path of git directory" >&2 + exit 1 + } + : "${GIT_OBJECT_DIRECTORY="$(git rev-parse --git-path objects)"}" +} + +if test -z "$NONGIT_OK" +then + git_dir_init +fi + +peel_committish () { + case "$1" in + :/*) + peeltmp=$(git rev-parse --verify "$1") && + git rev-parse --verify "${peeltmp}^0" + ;; + *) + git rev-parse --verify "${1}^0" + ;; + esac +} diff --git a/git-subtree.sh b/git-subtree.sh new file mode 100755 index 000000000..9e7256510 --- /dev/null +++ b/git-subtree.sh @@ -0,0 +1,1109 @@ +#!/bin/sh +# +# git-subtree.sh: split/join git repositories in subdirectories of this one +# +# Copyright (C) 2009 Avery Pennarun +# + +#if test -z "$GIT_EXEC_PATH" || ! test -f "$GIT_EXEC_PATH/git-sh-setup" || { +# test "${PATH#"${GIT_EXEC_PATH}:"}" = "$PATH" && +# test ! "$GIT_EXEC_PATH" -ef "${PATH%%:*}" 2>/dev/null +#} +#then +# basename=${0##*[/\\]} +# echo >&2 'It looks like either your git installation or your' +# echo >&2 'git-subtree installation is broken.' +# echo >&2 +# echo >&2 "Tips:" +# echo >&2 " - If \`git --exec-path\` does not print the correct path to" +# echo >&2 " your git install directory, then set the GIT_EXEC_PATH" +# echo >&2 " environment variable to the correct directory." +# echo >&2 " - Make sure that your \`$basename\` file is either in your" +# echo >&2 " PATH or in your git exec path (\`$(git --exec-path)\`)." +# echo >&2 " - You should run git-subtree as \`git ${basename#git-}\`," +# echo >&2 " not as \`$basename\`." >&2 +# exit 126 +#fi + +OPTS_SPEC="\ +git subtree add --prefix= +git subtree add --prefix= +git subtree merge --prefix= +git subtree split --prefix= [] +git subtree pull --prefix= +git subtree push --prefix= +-- +h,help! show the help +q,quiet! quiet +d,debug! show debug messages +P,prefix= the name of the subdir to split out + options for 'split' (also: 'push') +annotate= add a prefix to commit message of new commits +b,branch!= create a new branch from the split subtree +ignore-joins ignore prior --rejoin commits +onto= try connecting new tree to an existing one +rejoin merge the new branch back into HEAD + options for 'add' and 'merge' (also: 'pull', 'split --rejoin', and 'push --rejoin') +squash merge subtree changes as a single commit +m,message!= use the given message as the commit message for the merge commit +" + +indent=0 + +# Usage: say [MSG...] +say () { + if test -z "$arg_quiet" + then + printf '%s\n' "$*" + fi +} + +# Usage: debug [MSG...] +debug () { + if test -n "$arg_debug" + then + printf "%$(($indent * 2))s%s\n" '' "$*" >&2 + fi +} + +# Usage: progress [MSG...] +progress () { + if test -z "$arg_quiet" + then + if test -z "$arg_debug" + then + # Debug mode is off. + # + # Print one progress line that we keep updating (use + # "\r" to return to the beginning of the line, rather + # than "\n" to start a new line). This only really + # works when stderr is a terminal. + printf "%s\r" "$*" >&2 + else + # Debug mode is on. The `debug` function is regularly + # printing to stderr. + # + # Don't do the one-line-with-"\r" thing, because on a + # terminal the debug output would overwrite and hide the + # progress output. Add a "progress:" prefix to make the + # progress output and the debug output easy to + # distinguish. This ensures maximum readability whether + # stderr is a terminal or a file. + printf "progress: %s\n" "$*" >&2 + fi + fi +} + +# Usage: assert CMD... +assert () { + if ! "$@" + then + die "fatal: assertion failed: $*" + fi +} + +# Usage: die_incompatible_opt OPTION COMMAND +die_incompatible_opt () { + assert test "$#" = 2 + opt="$1" + arg_command="$2" + die "fatal: the '$opt' flag does not make sense with 'git subtree $arg_command'." +} + +main () { + if test $# -eq 0 + then + set -- -h + fi + set_args="$(echo "$OPTS_SPEC" | git rev-parse --parseopt -- "$@" || echo exit $?)" + eval "$set_args" + . git-sh-setup + require_work_tree + + # First figure out the command and whether we use --rejoin, so + # that we can provide more helpful validation when we do the + # "real" flag parsing. + arg_split_rejoin= + allow_split= + allow_addmerge= + while test $# -gt 0 + do + opt="$1" + shift + case "$opt" in + --annotate|-b|-P|-m|--onto) + shift + ;; + --rejoin) + arg_split_rejoin=1 + ;; + --no-rejoin) + arg_split_rejoin= + ;; + --) + break + ;; + esac + done + arg_command=$1 + case "$arg_command" in + add|merge|pull) + allow_addmerge=1 + ;; + split|push) + allow_split=1 + allow_addmerge=$arg_split_rejoin + ;; + *) + die "fatal: unknown command '$arg_command'" + ;; + esac + # Reset the arguments array for "real" flag parsing. + eval "$set_args" + + # Begin "real" flag parsing. + arg_quiet= + arg_debug= + arg_prefix= + arg_split_branch= + arg_split_onto= + arg_split_ignore_joins= + arg_split_annotate= + arg_addmerge_squash= + arg_addmerge_message= + while test $# -gt 0 + do + opt="$1" + shift + + case "$opt" in + -q) + arg_quiet=1 + ;; + -d) + arg_debug=1 + ;; + --annotate) + test -n "$allow_split" || die_incompatible_opt "$opt" "$arg_command" + arg_split_annotate="$1" + shift + ;; + --no-annotate) + test -n "$allow_split" || die_incompatible_opt "$opt" "$arg_command" + arg_split_annotate= + ;; + -b) + test -n "$allow_split" || die_incompatible_opt "$opt" "$arg_command" + arg_split_branch="$1" + shift + ;; + -P) + arg_prefix="${1%/}" + shift + ;; + -m) + test -n "$allow_addmerge" || die_incompatible_opt "$opt" "$arg_command" + arg_addmerge_message="$1" + shift + ;; + --no-prefix) + arg_prefix= + ;; + --onto) + test -n "$allow_split" || die_incompatible_opt "$opt" "$arg_command" + arg_split_onto="$1" + shift + ;; + --no-onto) + test -n "$allow_split" || die_incompatible_opt "$opt" "$arg_command" + arg_split_onto= + ;; + --rejoin) + test -n "$allow_split" || die_incompatible_opt "$opt" "$arg_command" + ;; + --no-rejoin) + test -n "$allow_split" || die_incompatible_opt "$opt" "$arg_command" + ;; + --ignore-joins) + test -n "$allow_split" || die_incompatible_opt "$opt" "$arg_command" + arg_split_ignore_joins=1 + ;; + --no-ignore-joins) + test -n "$allow_split" || die_incompatible_opt "$opt" "$arg_command" + arg_split_ignore_joins= + ;; + --squash) + test -n "$allow_addmerge" || die_incompatible_opt "$opt" "$arg_command" + arg_addmerge_squash=1 + ;; + --no-squash) + test -n "$allow_addmerge" || die_incompatible_opt "$opt" "$arg_command" + arg_addmerge_squash= + ;; + --) + break + ;; + *) + die "fatal: unexpected option: $opt" + ;; + esac + done + shift + + if test -z "$arg_prefix" + then + die "fatal: you must provide the --prefix option." + fi + + case "$arg_command" in + add) + test -e "$arg_prefix" && + die "fatal: prefix '$arg_prefix' already exists." + ;; + *) + test -e "$arg_prefix" || + die "fatal: '$arg_prefix' does not exist; use 'git subtree add'" + ;; + esac + + dir="$(dirname "$arg_prefix/.")" + + debug "command: {$arg_command}" + debug "quiet: {$arg_quiet}" + debug "dir: {$dir}" + debug "opts: {$*}" + debug + + "cmd_$arg_command" "$@" +} + +# Usage: cache_setup +cache_setup () { + assert test $# = 0 + cachedir="$GIT_DIR/subtree-cache/$$" + rm -rf "$cachedir" || + die "fatal: can't delete old cachedir: $cachedir" + mkdir -p "$cachedir" || + die "fatal: can't create new cachedir: $cachedir" + mkdir -p "$cachedir/notree" || + die "fatal: can't create new cachedir: $cachedir/notree" + debug "Using cachedir: $cachedir" >&2 +} + +# Usage: cache_get [REVS...] +cache_get () { + for oldrev in "$@" + do + if test -r "$cachedir/$oldrev" + then + read newrev <"$cachedir/$oldrev" + echo $newrev + fi + done +} + +# Usage: cache_miss [REVS...] +cache_miss () { + for oldrev in "$@" + do + if ! test -r "$cachedir/$oldrev" + then + echo $oldrev + fi + done +} + +# Usage: check_parents [REVS...] +check_parents () { + missed=$(cache_miss "$@") || exit $? + local indent=$(($indent + 1)) + for miss in $missed + do + if ! test -r "$cachedir/notree/$miss" + then + debug "incorrect order: $miss" + process_split_commit "$miss" "" + fi + done +} + +# Usage: set_notree REV +set_notree () { + assert test $# = 1 + echo "1" > "$cachedir/notree/$1" +} + +# Usage: cache_set OLDREV NEWREV +cache_set () { + assert test $# = 2 + oldrev="$1" + newrev="$2" + if test "$oldrev" != "latest_old" && + test "$oldrev" != "latest_new" && + test -e "$cachedir/$oldrev" + then + die "fatal: cache for $oldrev already exists!" + fi + echo "$newrev" >"$cachedir/$oldrev" +} + +# Usage: rev_exists REV +rev_exists () { + assert test $# = 1 + if git rev-parse "$1" >/dev/null 2>&1 + then + return 0 + else + return 1 + fi +} + +# Usage: try_remove_previous REV +# +# If a commit doesn't have a parent, this might not work. But we only want +# to remove the parent from the rev-list, and since it doesn't exist, it won't +# be there anyway, so do nothing in that case. +try_remove_previous () { + assert test $# = 1 + if rev_exists "$1^" + then + echo "^$1^" + fi +} + +# Usage: process_subtree_split_trailer SPLIT_HASH MAIN_HASH [REPOSITORY] +process_subtree_split_trailer () { + assert test $# = 2 -o $# = 3 + b="$1" + sq="$2" + repository="" + if test "$#" = 3 + then + repository="$3" + fi + fail_msg="fatal: could not rev-parse split hash $b from commit $sq" + if ! sub="$(git rev-parse --verify --quiet "$b^{commit}")" + then + # if 'repository' was given, try to fetch the 'git-subtree-split' hash + # before 'rev-parse'-ing it again, as it might be a tag that we do not have locally + if test -n "${repository}" + then + git fetch "$repository" "$b" + sub="$(git rev-parse --verify --quiet "$b^{commit}")" || + die "$fail_msg" + else + hint1=$(printf "hint: hash might be a tag, try fetching it from the subtree repository:") + hint2=$(printf "hint: git fetch $b") + fail_msg=$(printf "$fail_msg\n$hint1\n$hint2") + die "$fail_msg" + fi + fi +} + +# Usage: find_latest_squash DIR [REPOSITORY] +find_latest_squash () { + assert test $# = 1 -o $# = 2 + dir="$1" + repository="" + if test "$#" = 2 + then + repository="$2" + fi + debug "Looking for latest squash (dir=$dir, repository=$repository)..." + local indent=$(($indent + 1)) + + sq= + main= + sub= + git log --grep="^git-subtree-dir: $dir/*\$" \ + --no-show-signature --pretty=format:'START %H%n%s%n%n%b%nEND%n' HEAD | + while read a b junk + do + debug "$a $b $junk" + debug "{{$sq/$main/$sub}}" + case "$a" in + START) + sq="$b" + ;; + git-subtree-mainline:) + main="$b" + ;; + git-subtree-split:) + process_subtree_split_trailer "$b" "$sq" "$repository" + ;; + END) + if test -n "$sub" + then + if test -n "$main" + then + # a rejoin commit? + # Pretend its sub was a squash. + sq=$(git rev-parse --verify "$sq^2") || + die + fi + debug "Squash found: $sq $sub" + echo "$sq" "$sub" + break + fi + sq= + main= + sub= + ;; + esac + done || exit $? +} + +# Usage: find_existing_splits DIR REV [REPOSITORY] +find_existing_splits () { + assert test $# = 2 -o $# = 3 + debug "Looking for prior splits..." + local indent=$(($indent + 1)) + + dir="$1" + rev="$2" + repository="" + if test "$#" = 3 + then + repository="$3" + fi + main= + sub= + local grep_format="^git-subtree-dir: $dir/*\$" + if test -n "$arg_split_ignore_joins" + then + grep_format="^Add '$dir/' from commit '" + fi + git log --grep="$grep_format" \ + --no-show-signature --pretty=format:'START %H%n%s%n%n%b%nEND%n' "$rev" | + while read a b junk + do + case "$a" in + START) + sq="$b" + ;; + git-subtree-mainline:) + main="$b" + ;; + git-subtree-split:) + process_subtree_split_trailer "$b" "$sq" "$repository" + ;; + END) + debug "Main is: '$main'" + if test -z "$main" -a -n "$sub" + then + # squash commits refer to a subtree + debug " Squash: $sq from $sub" + cache_set "$sq" "$sub" + fi + if test -n "$main" -a -n "$sub" + then + debug " Prior: $main -> $sub" + cache_set $main $sub + cache_set $sub $sub + try_remove_previous "$main" + try_remove_previous "$sub" + fi + main= + sub= + ;; + esac + done || exit $? +} + +# Usage: copy_commit REV TREE FLAGS_STR +copy_commit () { + assert test $# = 3 + # We're going to set some environment vars here, so + # do it in a subshell to get rid of them safely later + debug copy_commit "{$1}" "{$2}" "{$3}" + git log -1 --no-show-signature --pretty=format:'%an%n%ae%n%aD%n%cn%n%ce%n%cD%n%B' "$1" | + ( + read GIT_AUTHOR_NAME + read GIT_AUTHOR_EMAIL + read GIT_AUTHOR_DATE + read GIT_COMMITTER_NAME + read GIT_COMMITTER_EMAIL + read GIT_COMMITTER_DATE + export GIT_AUTHOR_NAME \ + GIT_AUTHOR_EMAIL \ + GIT_AUTHOR_DATE \ + GIT_COMMITTER_NAME \ + GIT_COMMITTER_EMAIL \ + GIT_COMMITTER_DATE + ( + printf "%s" "$arg_split_annotate" + cat + ) | + git commit-tree "$2" $3 # reads the rest of stdin + ) || die "fatal: can't copy commit $1" +} + +# Usage: add_msg DIR LATEST_OLD LATEST_NEW +add_msg () { + assert test $# = 3 + dir="$1" + latest_old="$2" + latest_new="$3" + if test -n "$arg_addmerge_message" + then + commit_message="$arg_addmerge_message" + else + commit_message="Add '$dir/' from commit '$latest_new'" + fi + if test -n "$arg_split_rejoin" + then + # If this is from a --rejoin, then rejoin_msg has + # already inserted the `git-subtree-xxx:` tags + echo "$commit_message" + return + fi + cat <<-EOF + $commit_message + + git-subtree-dir: $dir + git-subtree-mainline: $latest_old + git-subtree-split: $latest_new + EOF +} + +# Usage: add_squashed_msg REV DIR +add_squashed_msg () { + assert test $# = 2 + if test -n "$arg_addmerge_message" + then + echo "$arg_addmerge_message" + else + echo "Merge commit '$1' as '$2'" + fi +} + +# Usage: rejoin_msg DIR LATEST_OLD LATEST_NEW +rejoin_msg () { + assert test $# = 3 + dir="$1" + latest_old="$2" + latest_new="$3" + if test -n "$arg_addmerge_message" + then + commit_message="$arg_addmerge_message" + else + commit_message="Split '$dir/' into commit '$latest_new'" + fi + cat <<-EOF + $commit_message + + git-subtree-dir: $dir + git-subtree-mainline: $latest_old + git-subtree-split: $latest_new + EOF +} + +# Usage: squash_msg DIR OLD_SUBTREE_COMMIT NEW_SUBTREE_COMMIT +squash_msg () { + assert test $# = 3 + dir="$1" + oldsub="$2" + newsub="$3" + newsub_short=$(git rev-parse --short "$newsub") + + if test -n "$oldsub" + then + oldsub_short=$(git rev-parse --short "$oldsub") + echo "Squashed '$dir/' changes from $oldsub_short..$newsub_short" + echo + git log --no-show-signature --pretty=tformat:'%h %s' "$oldsub..$newsub" + git log --no-show-signature --pretty=tformat:'REVERT: %h %s' "$newsub..$oldsub" + else + echo "Squashed '$dir/' content from commit $newsub_short" + fi + + echo + echo "git-subtree-dir: $dir" + echo "git-subtree-split: $newsub" +} + +# Usage: toptree_for_commit COMMIT +toptree_for_commit () { + assert test $# = 1 + commit="$1" + git rev-parse --verify "$commit^{tree}" || exit $? +} + +# Usage: subtree_for_commit COMMIT DIR +subtree_for_commit () { + assert test $# = 2 + commit="$1" + dir="$2" + git ls-tree "$commit" -- "$dir" | + while read mode type tree name + do + assert test "$name" = "$dir" + assert test "$type" = "tree" -o "$type" = "commit" + test "$type" = "commit" && continue # ignore submodules + echo $tree + break + done || exit $? +} + +# Usage: tree_changed TREE [PARENTS...] +tree_changed () { + assert test $# -gt 0 + tree=$1 + shift + if test $# -ne 1 + then + return 0 # weird parents, consider it changed + else + ptree=$(toptree_for_commit $1) || exit $? + if test "$ptree" != "$tree" + then + return 0 # changed + else + return 1 # not changed + fi + fi +} + +# Usage: new_squash_commit OLD_SQUASHED_COMMIT OLD_NONSQUASHED_COMMIT NEW_NONSQUASHED_COMMIT +new_squash_commit () { + assert test $# = 3 + old="$1" + oldsub="$2" + newsub="$3" + tree=$(toptree_for_commit $newsub) || exit $? + if test -n "$old" + then + squash_msg "$dir" "$oldsub" "$newsub" | + git commit-tree "$tree" -p "$old" || exit $? + else + squash_msg "$dir" "" "$newsub" | + git commit-tree "$tree" || exit $? + fi +} + +# Usage: copy_or_skip REV TREE NEWPARENTS +copy_or_skip () { + assert test $# = 3 + rev="$1" + tree="$2" + newparents="$3" + assert test -n "$tree" + + identical= + nonidentical= + p= + gotparents= + copycommit= + for parent in $newparents + do + ptree=$(toptree_for_commit $parent) || exit $? + test -z "$ptree" && continue + if test "$ptree" = "$tree" + then + # an identical parent could be used in place of this rev. + if test -n "$identical" + then + # if a previous identical parent was found, check whether + # one is already an ancestor of the other + mergebase=$(git merge-base $identical $parent) + if test "$identical" = "$mergebase" + then + # current identical commit is an ancestor of parent + identical="$parent" + elif test "$parent" != "$mergebase" + then + # no common history; commit must be copied + copycommit=1 + fi + else + # first identical parent detected + identical="$parent" + fi + else + nonidentical="$parent" + fi + + # sometimes both old parents map to the same newparent; + # eliminate duplicates + is_new=1 + for gp in $gotparents + do + if test "$gp" = "$parent" + then + is_new= + break + fi + done + if test -n "$is_new" + then + gotparents="$gotparents $parent" + p="$p -p $parent" + fi + done + + if test -n "$identical" && test -n "$nonidentical" + then + extras=$(git rev-list --count $identical..$nonidentical) + if test "$extras" -ne 0 + then + # we need to preserve history along the other branch + copycommit=1 + fi + fi + if test -n "$identical" && test -z "$copycommit" + then + echo $identical + else + copy_commit "$rev" "$tree" "$p" || exit $? + fi +} + +# Usage: ensure_clean +ensure_clean () { + assert test $# = 0 + if ! git diff-index HEAD --exit-code --quiet 2>&1 + then + die "fatal: working tree has modifications. Cannot add." + fi + if ! git diff-index --cached HEAD --exit-code --quiet 2>&1 + then + die "fatal: index has modifications. Cannot add." + fi +} + +# Usage: ensure_valid_ref_format REF +ensure_valid_ref_format () { + assert test $# = 1 + git check-ref-format "refs/heads/$1" || + die "fatal: '$1' does not look like a ref" +} + +# Usage: check if a commit from another subtree should be ignored from processing for splits +should_ignore_subtree_commit () { + if [ "$(git log -1 --grep="git-subtree-dir:" $1)" ] + then + if [[ -z "$(git log -1 --grep="git-subtree-mainline:" $1)" && -z "$(git log -1 --grep="git-subtree-dir: $dir$" $1)" ]] + then + return 0 + fi + fi + return 1 +} + +# Usage: process_split_commit REV PARENTS +process_split_commit () { + assert test $# = 2 + local rev="$1" + local parents="$2" + + if should_ignore_subtree_commit $rev + then + return + fi + + if test $indent -eq 0 + then + revcount=$(($revcount + 1)) + else + # processing commit without normal parent information; + # fetch from repo + parents=$(git rev-parse "$rev^@") + extracount=$(($extracount + 1)) + fi + + progress "$revcount/$revmax ($createcount) [$extracount]" + + debug "Processing commit: $rev" + local indent=$(($indent + 1)) + exists=$(cache_get "$rev") || exit $? + if test -n "$exists" + then + debug "prior: $exists" + return + fi + createcount=$(($createcount + 1)) + debug "parents: $parents" + check_parents $parents + newparents=$(cache_get $parents) || exit $? + debug "newparents: $newparents" + + tree=$(subtree_for_commit "$rev" "$dir") || exit $? + debug "tree is: $tree" + + # ugly. is there no better way to tell if this is a subtree + # vs. a mainline commit? Does it matter? + if test -z "$tree" + then + set_notree "$rev" + if test -n "$newparents" + then + cache_set "$rev" "$rev" + fi + return + fi + + newrev=$(copy_or_skip "$rev" "$tree" "$newparents") || exit $? + debug "newrev is: $newrev" + cache_set "$rev" "$newrev" + cache_set latest_new "$newrev" + cache_set latest_old "$rev" +} + +# Usage: cmd_add REV +# Or: cmd_add REPOSITORY REF +cmd_add () { + + ensure_clean + + if test $# -eq 1 + then + git rev-parse -q --verify "$1^{commit}" >/dev/null || + die "fatal: '$1' does not refer to a commit" + + cmd_add_commit "$@" + + elif test $# -eq 2 + then + # Technically we could accept a refspec here but we're + # just going to turn around and add FETCH_HEAD under the + # specified directory. Allowing a refspec might be + # misleading because we won't do anything with any other + # branches fetched via the refspec. + ensure_valid_ref_format "$2" + + cmd_add_repository "$@" + else + say >&2 "fatal: parameters were '$*'" + die "Provide either a commit or a repository and commit." + fi +} + +# Usage: cmd_add_repository REPOSITORY REFSPEC +cmd_add_repository () { + assert test $# = 2 + echo "git fetch" "$@" + repository=$1 + refspec=$2 + git fetch "$@" || exit $? + cmd_add_commit FETCH_HEAD +} + +# Usage: cmd_add_commit REV +cmd_add_commit () { + # The rev has already been validated by cmd_add(), we just + # need to normalize it. + assert test $# = 1 + rev=$(git rev-parse --verify "$1^{commit}") || exit $? + + debug "Adding $dir as '$rev'..." + if test -z "$arg_split_rejoin" + then + # Only bother doing this if this is a genuine 'add', + # not a synthetic 'add' from '--rejoin'. + git read-tree --prefix="$dir" $rev || exit $? + fi + git checkout -- "$dir" || exit $? + tree=$(git write-tree) || exit $? + + headrev=$(git rev-parse --verify HEAD) || exit $? + if test -n "$headrev" && test "$headrev" != "$rev" + then + headp="-p $headrev" + else + headp= + fi + + if test -n "$arg_addmerge_squash" + then + rev=$(new_squash_commit "" "" "$rev") || exit $? + commit=$(add_squashed_msg "$rev" "$dir" | + git commit-tree "$tree" $headp -p "$rev") || exit $? + else + revp=$(peel_committish "$rev") || exit $? + commit=$(add_msg "$dir" $headrev "$rev" | + git commit-tree "$tree" $headp -p "$revp") || exit $? + fi + git reset "$commit" || exit $? + + say >&2 "Added dir '$dir'" +} + +# Usage: cmd_split [REV] [REPOSITORY] +cmd_split () { + if test $# -eq 0 + then + rev=$(git rev-parse HEAD) + elif test $# -eq 1 -o $# -eq 2 + then + rev=$(git rev-parse -q --verify "$1^{commit}") || + die "fatal: '$1' does not refer to a commit" + else + die "fatal: you must provide exactly one revision, and optionnally a repository. Got: '$*'" + fi + repository="" + if test "$#" = 2 + then + repository="$2" + fi + + if test -n "$arg_split_rejoin" + then + ensure_clean + fi + + debug "Splitting $dir..." + cache_setup || exit $? + + if test -n "$arg_split_onto" + then + debug "Reading history for --onto=$arg_split_onto..." + git rev-list $arg_split_onto | + while read rev + do + # the 'onto' history is already just the subdir, so + # any parent we find there can be used verbatim + debug "cache: $rev" + cache_set "$rev" "$rev" + done || exit $? + fi + + unrevs="$(find_existing_splits "$dir" "$rev" "$repository")" || exit $? + + # We can't restrict rev-list to only $dir here, because some of our + # parents have the $dir contents the root, and those won't match. + # (and rev-list --follow doesn't seem to solve this) + grl='git rev-list --topo-order --reverse --parents $rev $unrevs' + revmax=$(eval "$grl" | wc -l) + revcount=0 + createcount=0 + extracount=0 + eval "$grl" | + while read rev parents + do + process_split_commit "$rev" "$parents" + done || exit $? + + latest_new=$(cache_get latest_new) || exit $? + if test -z "$latest_new" + then + die "fatal: no new revisions were found" + fi + + if test -n "$arg_split_rejoin" + then + debug "Merging split branch into HEAD..." + latest_old=$(cache_get latest_old) || exit $? + arg_addmerge_message="$(rejoin_msg "$dir" "$latest_old" "$latest_new")" || exit $? + if test -z "$(find_latest_squash "$dir")" + then + cmd_add "$latest_new" >&2 || exit $? + else + cmd_merge "$latest_new" >&2 || exit $? + fi + fi + if test -n "$arg_split_branch" + then + if rev_exists "refs/heads/$arg_split_branch" + then + if ! git merge-base --is-ancestor "$arg_split_branch" "$latest_new" + then + die "fatal: branch '$arg_split_branch' is not an ancestor of commit '$latest_new'." + fi + action='Updated' + else + action='Created' + fi + git update-ref -m 'subtree split' \ + "refs/heads/$arg_split_branch" "$latest_new" || exit $? + say >&2 "$action branch '$arg_split_branch'" + fi + echo "$latest_new" + exit 0 +} + +# Usage: cmd_merge REV [REPOSITORY] +cmd_merge () { + test $# -eq 1 -o $# -eq 2 || + die "fatal: you must provide exactly one revision, and optionally a repository. Got: '$*'" + rev=$(git rev-parse -q --verify "$1^{commit}") || + die "fatal: '$1' does not refer to a commit" + repository="" + if test "$#" = 2 + then + repository="$2" + fi + ensure_clean + + if test -n "$arg_addmerge_squash" + then + first_split="$(find_latest_squash "$dir" "$repository")" || exit $? + if test -z "$first_split" + then + die "fatal: can't squash-merge: '$dir' was never added." + fi + set $first_split + old=$1 + sub=$2 + if test "$sub" = "$rev" + then + say >&2 "Subtree is already at commit $rev." + exit 0 + fi + new=$(new_squash_commit "$old" "$sub" "$rev") || exit $? + debug "New squash commit: $new" + rev="$new" + fi + + if test -n "$arg_addmerge_message" + then + git merge --no-ff -Xsubtree="$arg_prefix" \ + --message="$arg_addmerge_message" "$rev" + else + git merge --no-ff -Xsubtree="$arg_prefix" $rev + fi +} + +# Usage: cmd_pull REPOSITORY REMOTEREF +cmd_pull () { + if test $# -ne 2 + then + die "fatal: you must provide " + fi + repository="$1" + ref="$2" + ensure_clean + ensure_valid_ref_format "$ref" + git fetch "$repository" "$ref" || exit $? + cmd_merge FETCH_HEAD "$repository" +} + +# Usage: cmd_push REPOSITORY [+][LOCALREV:]REMOTEREF +cmd_push () { + if test $# -ne 2 + then + die "fatal: you must provide " + fi + if test -e "$dir" + then + repository=$1 + refspec=${2#+} + remoteref=${refspec#*:} + if test "$remoteref" = "$refspec" + then + localrevname_presplit=HEAD + else + localrevname_presplit=${refspec%%:*} + fi + ensure_valid_ref_format "$remoteref" + localrev_presplit=$(git rev-parse -q --verify "$localrevname_presplit^{commit}") || + die "fatal: '$localrevname_presplit' does not refer to a commit" + + echo "git push using: " "$repository" "$refspec" + localrev=$(cmd_split "$localrev_presplit" "$repository") || die + git push "$repository" "$localrev":"refs/heads/$remoteref" + else + die "fatal: '$dir' must already exist. Try 'git subtree add'." + fi +} + +main "$@"