@medplum/fhir-router 2.1.24 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -192,6 +192,7 @@ export declare class MemoryRepository extends BaseRepository implements FhirRepo
192
192
  private readonly resources;
193
193
  private readonly history;
194
194
  constructor();
195
+ clear(): void;
195
196
  createResource<T extends Resource>(resource: T): Promise<T>;
196
197
  updateResource<T extends Resource>(resource: T): Promise<T>;
197
198
  patchResource(resourceType: string, id: string, patch: Operation[]): Promise<Resource>;
@@ -192,6 +192,7 @@ export declare class MemoryRepository extends BaseRepository implements FhirRepo
192
192
  private readonly resources;
193
193
  private readonly history;
194
194
  constructor();
195
+ clear(): void;
195
196
  createResource<T extends Resource>(resource: T): Promise<T>;
196
197
  updateResource<T extends Resource>(resource: T): Promise<T>;
197
198
  patchResource(resourceType: string, id: string, patch: Operation[]): Promise<Resource>;
@@ -50,6 +50,6 @@ spurious results.`)}}return!1};var Be=class{constructor(t,n="GraphQL request",r=
50
50
 
51
51
  In 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 I(N),resolve:e=>e.name},description:{type:N,resolve:e=>e.description},isRepeatable:{type:new I(j),resolve:e=>e.isRepeatable},locations:{type:new I(new D(new I(Gn))),resolve:e=>e.locations},args:{type:new I(new D(new I(Et))),args:{includeDeprecated:{type:j,defaultValue:!1}},resolve(e,{includeDeprecated:t}){return t?e.args:e.args.filter(n=>n.deprecationReason==null)}}})}),Gn=new ye({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:v.QUERY,description:"Location adjacent to a query operation."},MUTATION:{value:v.MUTATION,description:"Location adjacent to a mutation operation."},SUBSCRIPTION:{value:v.SUBSCRIPTION,description:"Location adjacent to a subscription operation."},FIELD:{value:v.FIELD,description:"Location adjacent to a field."},FRAGMENT_DEFINITION:{value:v.FRAGMENT_DEFINITION,description:"Location adjacent to a fragment definition."},FRAGMENT_SPREAD:{value:v.FRAGMENT_SPREAD,description:"Location adjacent to a fragment spread."},INLINE_FRAGMENT:{value:v.INLINE_FRAGMENT,description:"Location adjacent to an inline fragment."},VARIABLE_DEFINITION:{value:v.VARIABLE_DEFINITION,description:"Location adjacent to a variable definition."},SCHEMA:{value:v.SCHEMA,description:"Location adjacent to a schema definition."},SCALAR:{value:v.SCALAR,description:"Location adjacent to a scalar definition."},OBJECT:{value:v.OBJECT,description:"Location adjacent to an object type definition."},FIELD_DEFINITION:{value:v.FIELD_DEFINITION,description:"Location adjacent to a field definition."},ARGUMENT_DEFINITION:{value:v.ARGUMENT_DEFINITION,description:"Location adjacent to an argument definition."},INTERFACE:{value:v.INTERFACE,description:"Location adjacent to an interface definition."},UNION:{value:v.UNION,description:"Location adjacent to a union definition."},ENUM:{value:v.ENUM,description:"Location adjacent to an enum definition."},ENUM_VALUE:{value:v.ENUM_VALUE,description:"Location adjacent to an enum value definition."},INPUT_OBJECT:{value:v.INPUT_OBJECT,description:"Location adjacent to an input object type definition."},INPUT_FIELD_DEFINITION:{value:v.INPUT_FIELD_DEFINITION,description:"Location adjacent to an input object field definition."}}}),se=new G({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 I(Bn),resolve(e){if(le(e))return Q.SCALAR;if(R(e))return Q.OBJECT;if(_(e))return Q.INTERFACE;if(q(e))return Q.UNION;if(V(e))return Q.ENUM;if(L(e))return Q.INPUT_OBJECT;if(A(e))return Q.LIST;if(b(e))return Q.NON_NULL;k(!1,`Unexpected type: "${y(e)}".`)}},name:{type:N,resolve:e=>"name"in e?e.name:void 0},description:{type:N,resolve:e=>"description"in e?e.description:void 0},specifiedByURL:{type:N,resolve:e=>"specifiedByURL"in e?e.specifiedByURL:void 0},fields:{type:new D(new I(jn)),args:{includeDeprecated:{type:j,defaultValue:!1}},resolve(e,{includeDeprecated:t}){if(R(e)||_(e)){let n=Object.values(e.getFields());return t?n:n.filter(r=>r.deprecationReason==null)}}},interfaces:{type:new D(new I(se)),resolve(e){if(R(e)||_(e))return e.getInterfaces()}},possibleTypes:{type:new D(new I(se)),resolve(e,t,n,{schema:r}){if(W(e))return r.getPossibleTypes(e)}},enumValues:{type:new D(new I(Qn)),args:{includeDeprecated:{type:j,defaultValue:!1}},resolve(e,{includeDeprecated:t}){if(V(e)){let n=e.getValues();return t?n:n.filter(r=>r.deprecationReason==null)}}},inputFields:{type:new D(new I(Et)),args:{includeDeprecated:{type:j,defaultValue:!1}},resolve(e,{includeDeprecated:t}){if(L(e)){let n=Object.values(e.getFields());return t?n:n.filter(r=>r.deprecationReason==null)}}},ofType:{type:se,resolve:e=>"ofType"in e?e.ofType:void 0}})}),jn=new G({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 I(N),resolve:e=>e.name},description:{type:N,resolve:e=>e.description},args:{type:new I(new D(new I(Et))),args:{includeDeprecated:{type:j,defaultValue:!1}},resolve(e,{includeDeprecated:t}){return t?e.args:e.args.filter(n=>n.deprecationReason==null)}},type:{type:new I(se),resolve:e=>e.type},isDeprecated:{type:new I(j),resolve:e=>e.deprecationReason!=null},deprecationReason:{type:N,resolve:e=>e.deprecationReason}})}),Et=new G({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 I(N),resolve:e=>e.name},description:{type:N,resolve:e=>e.description},type:{type:new I(se),resolve:e=>e.type},defaultValue:{type:N,description:"A GraphQL-formatted string representing the default value for this input value.",resolve(e){let{type:t,defaultValue:n}=e,r=Ze(n,t);return r?x(r):null}},isDeprecated:{type:new I(j),resolve:e=>e.deprecationReason!=null},deprecationReason:{type:N,resolve:e=>e.deprecationReason}})}),Qn=new G({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 I(N),resolve:e=>e.name},description:{type:N,resolve:e=>e.description},isDeprecated:{type:new I(j),resolve:e=>e.deprecationReason!=null},deprecationReason:{type:N,resolve:e=>e.deprecationReason}})}),Q;(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"})(Q||(Q={}));var Bn=new ye({name:"__TypeKind",description:"An enum describing what kind of type a given `__Type` is.",values:{SCALAR:{value:Q.SCALAR,description:"Indicates this type is a scalar."},OBJECT:{value:Q.OBJECT,description:"Indicates this type is an object. `fields` and `interfaces` are valid fields."},INTERFACE:{value:Q.INTERFACE,description:"Indicates this type is an interface. `fields`, `interfaces`, and `possibleTypes` are valid fields."},UNION:{value:Q.UNION,description:"Indicates this type is a union. `possibleTypes` is a valid field."},ENUM:{value:Q.ENUM,description:"Indicates this type is an enum. `enumValues` is a valid field."},INPUT_OBJECT:{value:Q.INPUT_OBJECT,description:"Indicates this type is an input object. `inputFields` is a valid field."},LIST:{value:Q.LIST,description:"Indicates this type is a list. `ofType` is a valid field."},NON_NULL:{value:Q.NON_NULL,description:"Indicates this type is a non-null. `ofType` is a valid field."}}}),Ae={name:"__schema",type:new I(gt),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},De={name:"__type",type:se,description:"Request the type information of a single type.",args:[{name:"name",description:void 0,type:new I(N),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},we={name:"__typename",type:new I(N),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},Kt=Object.freeze([gt,Mn,Gn,se,jn,Et,Qn,Bn]);function qn(e){return Kt.some(({name:t})=>e.name===t)}function Yn(e){return X(e,Fe)}function Xt(e){if(!Yn(e))throw new Error(`Expected ${y(e)} to be a GraphQL schema.`);return e}var Fe=class{constructor(t){var n,r;this.__validationErrors=t.assumeValid===!0?[]:void 0,M(t)||O(!1,"Must provide configuration object."),!t.types||Array.isArray(t.types)||O(!1,`"types" must be Array if provided but got: ${y(t.types)}.`),!t.directives||Array.isArray(t.directives)||O(!1,`"directives" must be Array if provided but got: ${y(t.directives)}.`),this.description=t.description,this.extensions=H(t.extensions),this.astNode=t.astNode,this.extensionASTNodes=(n=t.extensionASTNodes)!==null&&n!==void 0?n:[],this._queryType=t.query,this._mutationType=t.mutation,this._subscriptionType=t.subscription,this._directives=(r=t.directives)!==null&&r!==void 0?r:de;let i=new Set(t.types);if(t.types!=null)for(let o of t.types)i.delete(o),me(o,i);this._queryType!=null&&me(this._queryType,i),this._mutationType!=null&&me(this._mutationType,i),this._subscriptionType!=null&&me(this._subscriptionType,i);for(let o of this._directives)if(Tt(o))for(let s of o.args)me(s.type,i);me(gt,i),this._typeMap=Object.create(null),this._subTypeMap=Object.create(null),this._implementationsMap=Object.create(null);for(let o of i){if(o==null)continue;let s=o.name;if(s||O(!1,"One of the provided types for building the Schema is missing a name."),this._typeMap[s]!==void 0)throw new Error(`Schema must contain uniquely named types but contains multiple types named "${s}".`);if(this._typeMap[s]=o,_(o)){for(let a of o.getInterfaces())if(_(a)){let c=this._implementationsMap[a.name];c===void 0&&(c=this._implementationsMap[a.name]={objects:[],interfaces:[]}),c.interfaces.push(o)}}else if(R(o)){for(let a of o.getInterfaces())if(_(a)){let c=this._implementationsMap[a.name];c===void 0&&(c=this._implementationsMap[a.name]={objects:[],interfaces:[]}),c.objects.push(o)}}}}get[Symbol.toStringTag](){return"GraphQLSchema"}getQueryType(){return this._queryType}getMutationType(){return this._mutationType}getSubscriptionType(){return this._subscriptionType}getRootType(t){switch(t){case F.QUERY:return this.getQueryType();case F.MUTATION:return this.getMutationType();case F.SUBSCRIPTION:return this.getSubscriptionType()}}getTypeMap(){return this._typeMap}getType(t){return this.getTypeMap()[t]}getPossibleTypes(t){return q(t)?t.getTypes():this.getImplementations(t).objects}getImplementations(t){let n=this._implementationsMap[t.name];return n??{objects:[],interfaces:[]}}isSubType(t,n){let r=this._subTypeMap[t.name];if(r===void 0){if(r=Object.create(null),q(t))for(let i of t.getTypes())r[i.name]=!0;else{let i=this.getImplementations(t);for(let o of i.objects)r[o.name]=!0;for(let o of i.interfaces)r[o.name]=!0}this._subTypeMap[t.name]=r}return r[n.name]!==void 0}getDirectives(){return this._directives}getDirective(t){return this.getDirectives().find(n=>n.name===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:this.__validationErrors!==void 0}}};function me(e,t){let n=B(e);if(!t.has(n)){if(t.add(n),q(n))for(let r of n.getTypes())me(r,t);else if(R(n)||_(n)){for(let r of n.getInterfaces())me(r,t);for(let r of Object.values(n.getFields())){me(r.type,t);for(let i of r.args)me(i.type,t)}}else if(L(n))for(let r of Object.values(n.getFields()))me(r.type,t)}return t}function vi(e){if(Xt(e),e.__validationErrors)return e.__validationErrors;let t=new Kn(e);Fo(t),ko(t),Co(t);let n=t.getErrors();return e.__validationErrors=n,n}function vt(e){let t=vi(e);if(t.length!==0)throw new Error(t.map(n=>n.message).join(`
52
52
 
53
- `))}var Kn=class{constructor(t){this._errors=[],this.schema=t}reportError(t,n){let r=Array.isArray(n)?n.filter(Boolean):n;this._errors.push(new f(t,{nodes:r}))}getErrors(){return this._errors}};function Fo(e){let t=e.schema,n=t.getQueryType();if(!n)e.reportError("Query root type must be provided.",t.astNode);else if(!R(n)){var r;e.reportError(`Query root type must be Object type, it cannot be ${y(n)}.`,(r=Jn(t,F.QUERY))!==null&&r!==void 0?r:n.astNode)}let i=t.getMutationType();if(i&&!R(i)){var o;e.reportError(`Mutation root type must be Object type if provided, it cannot be ${y(i)}.`,(o=Jn(t,F.MUTATION))!==null&&o!==void 0?o:i.astNode)}let s=t.getSubscriptionType();if(s&&!R(s)){var a;e.reportError(`Subscription root type must be Object type if provided, it cannot be ${y(s)}.`,(a=Jn(t,F.SUBSCRIPTION))!==null&&a!==void 0?a:s.astNode)}}function Jn(e,t){var n;return(n=[e.astNode,...e.extensionASTNodes].flatMap(r=>{var i;return(i=r?.operationTypes)!==null&&i!==void 0?i:[]}).find(r=>r.operation===t))===null||n===void 0?void 0:n.type}function ko(e){for(let n of e.schema.getDirectives()){if(!Tt(n)){e.reportError(`Expected directive but got: ${y(n)}.`,n?.astNode);continue}ke(e,n);for(let r of n.args)if(ke(e,r),Y(r.type)||e.reportError(`The type of @${n.name}(${r.name}:) must be Input Type but got: ${y(r.type)}.`,r.astNode),Ee(r)&&r.deprecationReason!=null){var t;e.reportError(`Required argument @${n.name}(${r.name}:) cannot be deprecated.`,[Xn(r.astNode),(t=r.astNode)===null||t===void 0?void 0:t.type])}}}function ke(e,t){t.name.startsWith("__")&&e.reportError(`Name "${t.name}" must not begin with "__", which is reserved by GraphQL introspection.`,t.astNode)}function Co(e){let t=Go(e),n=e.schema.getTypeMap();for(let r of Object.values(n)){if(!Mt(r)){e.reportError(`Expected GraphQL named type but got: ${y(r)}.`,r.astNode);continue}qn(r)||ke(e,r),R(r)||_(r)?(gi(e,r),Ei(e,r)):q(r)?Vo(e,r):V(r)?$o(e,r):L(r)&&(Mo(e,r),t(r))}}function gi(e,t){let n=Object.values(t.getFields());n.length===0&&e.reportError(`Type ${t.name} must define one or more fields.`,[t.astNode,...t.extensionASTNodes]);for(let s of n){if(ke(e,s),!ge(s.type)){var r;e.reportError(`The type of ${t.name}.${s.name} must be Output Type but got: ${y(s.type)}.`,(r=s.astNode)===null||r===void 0?void 0:r.type)}for(let a of s.args){let c=a.name;if(ke(e,a),!Y(a.type)){var i;e.reportError(`The type of ${t.name}.${s.name}(${c}:) must be Input Type but got: ${y(a.type)}.`,(i=a.astNode)===null||i===void 0?void 0:i.type)}if(Ee(a)&&a.deprecationReason!=null){var o;e.reportError(`Required argument ${t.name}.${s.name}(${c}:) cannot be deprecated.`,[Xn(a.astNode),(o=a.astNode)===null||o===void 0?void 0:o.type])}}}}function Ei(e,t){let n=Object.create(null);for(let r of t.getInterfaces()){if(!_(r)){e.reportError(`Type ${y(t)} must only implement Interface types, it cannot implement ${y(r)}.`,Nt(t,r));continue}if(t===r){e.reportError(`Type ${t.name} cannot implement itself because it would create a circular reference.`,Nt(t,r));continue}if(n[r.name]){e.reportError(`Type ${t.name} can only implement ${r.name} once.`,Nt(t,r));continue}n[r.name]=!0,Po(e,t,r),Uo(e,t,r)}}function Uo(e,t,n){let r=t.getFields();for(let c of Object.values(n.getFields())){let p=c.name,l=r[p];if(!l){e.reportError(`Interface field ${n.name}.${p} expected but ${t.name} does not provide it.`,[c.astNode,t.astNode,...t.extensionASTNodes]);continue}if(!Ie(e.schema,l.type,c.type)){var i,o;e.reportError(`Interface field ${n.name}.${p} expects type ${y(c.type)} but ${t.name}.${p} is type ${y(l.type)}.`,[(i=c.astNode)===null||i===void 0?void 0:i.type,(o=l.astNode)===null||o===void 0?void 0:o.type])}for(let d of c.args){let h=d.name,T=l.args.find(E=>E.name===h);if(!T){e.reportError(`Interface field argument ${n.name}.${p}(${h}:) expected but ${t.name}.${p} does not provide it.`,[d.astNode,l.astNode]);continue}if(!Qt(d.type,T.type)){var s,a;e.reportError(`Interface field argument ${n.name}.${p}(${h}:) expects type ${y(d.type)} but ${t.name}.${p}(${h}:) is type ${y(T.type)}.`,[(s=d.astNode)===null||s===void 0?void 0:s.type,(a=T.astNode)===null||a===void 0?void 0:a.type])}}for(let d of l.args){let h=d.name;!c.args.find(E=>E.name===h)&&Ee(d)&&e.reportError(`Object field ${t.name}.${p} includes required argument ${h} that is missing from the Interface field ${n.name}.${p}.`,[d.astNode,c.astNode])}}}function Po(e,t,n){let r=t.getInterfaces();for(let 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}.`,[...Nt(n,i),...Nt(t,n)])}function Vo(e,t){let n=t.getTypes();n.length===0&&e.reportError(`Union type ${t.name} must define one or more member types.`,[t.astNode,...t.extensionASTNodes]);let r=Object.create(null);for(let i of n){if(r[i.name]){e.reportError(`Union type ${t.name} can only include type ${i.name} once.`,Ni(t,i.name));continue}r[i.name]=!0,R(i)||e.reportError(`Union type ${t.name} can only include Object types, it cannot include ${y(i)}.`,Ni(t,String(i)))}}function $o(e,t){let n=t.getValues();n.length===0&&e.reportError(`Enum type ${t.name} must define one or more values.`,[t.astNode,...t.extensionASTNodes]);for(let r of n)ke(e,r)}function Mo(e,t){let n=Object.values(t.getFields());n.length===0&&e.reportError(`Input Object type ${t.name} must define one or more fields.`,[t.astNode,...t.extensionASTNodes]);for(let o of n){if(ke(e,o),!Y(o.type)){var r;e.reportError(`The type of ${t.name}.${o.name} must be Input Type but got: ${y(o.type)}.`,(r=o.astNode)===null||r===void 0?void 0:r.type)}if(He(o)&&o.deprecationReason!=null){var i;e.reportError(`Required input field ${t.name}.${o.name} cannot be deprecated.`,[Xn(o.astNode),(i=o.astNode)===null||i===void 0?void 0:i.type])}}}function Go(e){let 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;let s=Object.values(o.getFields());for(let a of s)if(b(a.type)&&L(a.type.ofType)){let c=a.type.ofType,p=r[c.name];if(n.push(a),p===void 0)i(c);else{let l=n.slice(p),d=l.map(h=>h.name).join(".");e.reportError(`Cannot reference Input Object "${c.name}" within itself through a series of non-null fields: "${d}".`,l.map(h=>h.astNode))}n.pop()}r[o.name]=void 0}}function Nt(e,t){let{astNode:n,extensionASTNodes:r}=e;return(n!=null?[n,...r]:r).flatMap(o=>{var s;return(s=o.interfaces)!==null&&s!==void 0?s:[]}).filter(o=>o.name.value===t.name)}function Ni(e,t){let{astNode:n,extensionASTNodes:r}=e;return(n!=null?[n,...r]:r).flatMap(o=>{var s;return(s=o.types)!==null&&s!==void 0?s:[]}).filter(o=>o.name.value===t)}function Xn(e){var t;return e==null||(t=e.directives)===null||t===void 0?void 0:t.find(n=>n.name.value===Jt.name)}function U(e,t){switch(t.kind){case u.LIST_TYPE:{let n=U(e,t.type);return n&&new D(n)}case u.NON_NULL_TYPE:{let n=U(e,t.type);return n&&new I(n)}case u.NAMED_TYPE:return e.getType(t.name.value)}}var et=class{constructor(t,n,r){this._schema=t,this._typeStack=[],this._parentTypeStack=[],this._inputTypeStack=[],this._fieldDefStack=[],this._defaultValueStack=[],this._directive=null,this._argument=null,this._enumValue=null,this._getFieldDef=r??jo,n&&(Y(n)&&this._inputTypeStack.push(n),re(n)&&this._parentTypeStack.push(n),ge(n)&&this._typeStack.push(n))}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(t){let n=this._schema;switch(t.kind){case u.SELECTION_SET:{let i=B(this.getType());this._parentTypeStack.push(re(i)?i:void 0);break}case u.FIELD:{let i=this.getParentType(),o,s;i&&(o=this._getFieldDef(n,i,t),o&&(s=o.type)),this._fieldDefStack.push(o),this._typeStack.push(ge(s)?s:void 0);break}case u.DIRECTIVE:this._directive=n.getDirective(t.name.value);break;case u.OPERATION_DEFINITION:{let i=n.getRootType(t.operation);this._typeStack.push(R(i)?i:void 0);break}case u.INLINE_FRAGMENT:case u.FRAGMENT_DEFINITION:{let i=t.typeCondition,o=i?U(n,i):B(this.getType());this._typeStack.push(ge(o)?o:void 0);break}case u.VARIABLE_DEFINITION:{let i=U(n,t.type);this._inputTypeStack.push(Y(i)?i:void 0);break}case u.ARGUMENT:{var r;let i,o,s=(r=this.getDirective())!==null&&r!==void 0?r:this.getFieldDef();s&&(i=s.args.find(a=>a.name===t.name.value),i&&(o=i.type)),this._argument=i,this._defaultValueStack.push(i?i.defaultValue:void 0),this._inputTypeStack.push(Y(o)?o:void 0);break}case u.LIST:{let i=ze(this.getInputType()),o=A(i)?i.ofType:i;this._defaultValueStack.push(void 0),this._inputTypeStack.push(Y(o)?o:void 0);break}case u.OBJECT_FIELD:{let i=B(this.getInputType()),o,s;L(i)&&(s=i.getFields()[t.name.value],s&&(o=s.type)),this._defaultValueStack.push(s?s.defaultValue:void 0),this._inputTypeStack.push(Y(o)?o:void 0);break}case u.ENUM:{let i=B(this.getInputType()),o;V(i)&&(o=i.getValue(t.value)),this._enumValue=o;break}default:}}leave(t){switch(t.kind){case u.SELECTION_SET:this._parentTypeStack.pop();break;case u.FIELD:this._fieldDefStack.pop(),this._typeStack.pop();break;case u.DIRECTIVE:this._directive=null;break;case u.OPERATION_DEFINITION:case u.INLINE_FRAGMENT:case u.FRAGMENT_DEFINITION:this._typeStack.pop();break;case u.VARIABLE_DEFINITION:this._inputTypeStack.pop();break;case u.ARGUMENT:this._argument=null,this._defaultValueStack.pop(),this._inputTypeStack.pop();break;case u.LIST:case u.OBJECT_FIELD:this._defaultValueStack.pop(),this._inputTypeStack.pop();break;case u.ENUM:this._enumValue=null;break;default:}}};function jo(e,t,n){let r=n.name.value;if(r===Ae.name&&e.getQueryType()===t)return Ae;if(r===De.name&&e.getQueryType()===t)return De;if(r===we.name&&re(t))return we;if(R(t)||_(t))return t.getFields()[r]}function zt(e,t){return{enter(...n){let r=n[0];e.enter(r);let i=Je(t,r.kind).enter;if(i){let o=i.apply(t,n);return o!==void 0&&(e.leave(r),st(o)&&e.enter(o)),o}},leave(...n){let r=n[0],i=Je(t,r.kind).leave,o;return i&&(o=i.apply(t,n)),e.leave(r),o}}}function zn(e){return e.kind===u.OPERATION_DEFINITION||e.kind===u.FRAGMENT_DEFINITION}function Hn(e){return e.kind===u.SCHEMA_DEFINITION||Oe(e)||e.kind===u.DIRECTIVE_DEFINITION}function Oe(e){return e.kind===u.SCALAR_TYPE_DEFINITION||e.kind===u.OBJECT_TYPE_DEFINITION||e.kind===u.INTERFACE_TYPE_DEFINITION||e.kind===u.UNION_TYPE_DEFINITION||e.kind===u.ENUM_TYPE_DEFINITION||e.kind===u.INPUT_OBJECT_TYPE_DEFINITION}function Wn(e){return e.kind===u.SCHEMA_EXTENSION||Ht(e)}function Ht(e){return e.kind===u.SCALAR_TYPE_EXTENSION||e.kind===u.OBJECT_TYPE_EXTENSION||e.kind===u.INTERFACE_TYPE_EXTENSION||e.kind===u.UNION_TYPE_EXTENSION||e.kind===u.ENUM_TYPE_EXTENSION||e.kind===u.INPUT_OBJECT_TYPE_EXTENSION}function Zn(e){return{Document(t){for(let n of t.definitions)if(!zn(n)){let r=n.kind===u.SCHEMA_DEFINITION||n.kind===u.SCHEMA_EXTENSION?"schema":'"'+n.name.value+'"';e.reportError(new f(`The ${r} definition is not executable.`,{nodes:n}))}return!1}}}function er(e){return{Field(t){let n=e.getParentType();if(n&&!e.getFieldDef()){let i=e.getSchema(),o=t.name.value,s=K("to use an inline fragment on",Qo(i,n,o));s===""&&(s=K(Bo(n,o))),e.reportError(new f(`Cannot query field "${o}" on type "${n.name}".`+s,{nodes:t}))}}}}function Qo(e,t,n){if(!W(t))return[];let r=new Set,i=Object.create(null);for(let s of e.getPossibleTypes(t))if(s.getFields()[n]){r.add(s),i[s.name]=1;for(let a of s.getInterfaces()){var o;a.getFields()[n]&&(r.add(a),i[a.name]=((o=i[a.name])!==null&&o!==void 0?o:0)+1)}}return[...r].sort((s,a)=>{let c=i[a.name]-i[s.name];return c!==0?c:_(s)&&e.isSubType(s,a)?-1:_(a)&&e.isSubType(a,s)?1:qe(s.name,a.name)}).map(s=>s.name)}function Bo(e,t){if(R(e)||_(e)){let n=Object.keys(e.getFields());return z(t,n)}return[]}function tr(e){return{InlineFragment(t){let n=t.typeCondition;if(n){let r=U(e.getSchema(),n);if(r&&!re(r)){let i=x(n);e.reportError(new f(`Fragment cannot condition on non composite type "${i}".`,{nodes:n}))}}},FragmentDefinition(t){let n=U(e.getSchema(),t.typeCondition);if(n&&!re(n)){let r=x(t.typeCondition);e.reportError(new f(`Fragment "${t.name.value}" cannot condition on non composite type "${r}".`,{nodes:t.typeCondition}))}}}}function nr(e){return{...rr(e),Argument(t){let n=e.getArgument(),r=e.getFieldDef(),i=e.getParentType();if(!n&&r&&i){let o=t.name.value,s=r.args.map(c=>c.name),a=z(o,s);e.reportError(new f(`Unknown argument "${o}" on field "${i.name}.${r.name}".`+K(a),{nodes:t}))}}}}function rr(e){let t=Object.create(null),n=e.getSchema(),r=n?n.getDirectives():de;for(let s of r)t[s.name]=s.args.map(a=>a.name);let i=e.getDocument().definitions;for(let s of i)if(s.kind===u.DIRECTIVE_DEFINITION){var o;let a=(o=s.arguments)!==null&&o!==void 0?o:[];t[s.name.value]=a.map(c=>c.name.value)}return{Directive(s){let a=s.name.value,c=t[a];if(s.arguments&&c)for(let p of s.arguments){let l=p.name.value;if(!c.includes(l)){let d=z(l,c);e.reportError(new f(`Unknown argument "${l}" on directive "@${a}".`+K(d),{nodes:p}))}}return!1}}}function Wt(e){let t=Object.create(null),n=e.getSchema(),r=n?n.getDirectives():de;for(let o of r)t[o.name]=o.locations;let i=e.getDocument().definitions;for(let o of i)o.kind===u.DIRECTIVE_DEFINITION&&(t[o.name.value]=o.locations.map(s=>s.value));return{Directive(o,s,a,c,p){let l=o.name.value,d=t[l];if(!d){e.reportError(new f(`Unknown directive "@${l}".`,{nodes:o}));return}let h=qo(p);h&&!d.includes(h)&&e.reportError(new f(`Directive "@${l}" may not be used on ${h}.`,{nodes:o}))}}}function qo(e){let t=e[e.length-1];switch("kind"in t||k(!1),t.kind){case u.OPERATION_DEFINITION:return Yo(t.operation);case u.FIELD:return v.FIELD;case u.FRAGMENT_SPREAD:return v.FRAGMENT_SPREAD;case u.INLINE_FRAGMENT:return v.INLINE_FRAGMENT;case u.FRAGMENT_DEFINITION:return v.FRAGMENT_DEFINITION;case u.VARIABLE_DEFINITION:return v.VARIABLE_DEFINITION;case u.SCHEMA_DEFINITION:case u.SCHEMA_EXTENSION:return v.SCHEMA;case u.SCALAR_TYPE_DEFINITION:case u.SCALAR_TYPE_EXTENSION:return v.SCALAR;case u.OBJECT_TYPE_DEFINITION:case u.OBJECT_TYPE_EXTENSION:return v.OBJECT;case u.FIELD_DEFINITION:return v.FIELD_DEFINITION;case u.INTERFACE_TYPE_DEFINITION:case u.INTERFACE_TYPE_EXTENSION:return v.INTERFACE;case u.UNION_TYPE_DEFINITION:case u.UNION_TYPE_EXTENSION:return v.UNION;case u.ENUM_TYPE_DEFINITION:case u.ENUM_TYPE_EXTENSION:return v.ENUM;case u.ENUM_VALUE_DEFINITION:return v.ENUM_VALUE;case u.INPUT_OBJECT_TYPE_DEFINITION:case u.INPUT_OBJECT_TYPE_EXTENSION:return v.INPUT_OBJECT;case u.INPUT_VALUE_DEFINITION:{let n=e[e.length-3];return"kind"in n||k(!1),n.kind===u.INPUT_OBJECT_TYPE_DEFINITION?v.INPUT_FIELD_DEFINITION:v.ARGUMENT_DEFINITION}default:k(!1,"Unexpected kind: "+y(t.kind))}}function Yo(e){switch(e){case F.QUERY:return v.QUERY;case F.MUTATION:return v.MUTATION;case F.SUBSCRIPTION:return v.SUBSCRIPTION}}function ir(e){return{FragmentSpread(t){let n=t.name.value;e.getFragment(n)||e.reportError(new f(`Unknown fragment "${n}".`,{nodes:t.name}))}}}function Zt(e){let t=e.getSchema(),n=t?t.getTypeMap():Object.create(null),r=Object.create(null);for(let o of e.getDocument().definitions)Oe(o)&&(r[o.name.value]=!0);let i=[...Object.keys(n),...Object.keys(r)];return{NamedType(o,s,a,c,p){let l=o.name.value;if(!n[l]&&!r[l]){var d;let h=(d=p[2])!==null&&d!==void 0?d:a,T=h!=null&&Jo(h);if(T&&Ii.includes(l))return;let E=z(l,T?Ii.concat(i):i);e.reportError(new f(`Unknown type "${l}".`+K(E),{nodes:o}))}}}}var Ii=[...Bt,...Kt].map(e=>e.name);function Jo(e){return"kind"in e&&(Hn(e)||Wn(e))}function or(e){let t=0;return{Document(n){t=n.definitions.filter(r=>r.kind===u.OPERATION_DEFINITION).length},OperationDefinition(n){!n.name&&t>1&&e.reportError(new f("This anonymous operation must be the only defined operation.",{nodes:n}))}}}function sr(e){var t,n,r;let i=e.getSchema(),o=(t=(n=(r=i?.astNode)!==null&&r!==void 0?r:i?.getQueryType())!==null&&n!==void 0?n:i?.getMutationType())!==null&&t!==void 0?t:i?.getSubscriptionType(),s=0;return{SchemaDefinition(a){if(o){e.reportError(new f("Cannot define a new schema within a schema extension.",{nodes:a}));return}s>0&&e.reportError(new f("Must provide only one schema definition.",{nodes:a})),++s}}}function ar(e){let t=Object.create(null),n=[],r=Object.create(null);return{OperationDefinition:()=>!1,FragmentDefinition(o){return i(o),!1}};function i(o){if(t[o.name.value])return;let s=o.name.value;t[s]=!0;let a=e.getFragmentSpreads(o.selectionSet);if(a.length!==0){r[s]=n.length;for(let c of a){let p=c.name.value,l=r[p];if(n.push(c),l===void 0){let d=e.getFragment(p);d&&i(d)}else{let d=n.slice(l),h=d.slice(0,-1).map(T=>'"'+T.name.value+'"').join(", ");e.reportError(new f(`Cannot spread fragment "${p}" within itself`+(h!==""?` via ${h}.`:"."),{nodes:d}))}n.pop()}r[s]=void 0}}}function cr(e){let t=Object.create(null);return{OperationDefinition:{enter(){t=Object.create(null)},leave(n){let r=e.getRecursiveVariableUsages(n);for(let{node:i}of r){let o=i.name.value;t[o]!==!0&&e.reportError(new f(n.name?`Variable "$${o}" is not defined by operation "${n.name.value}".`:`Variable "$${o}" is not defined.`,{nodes:[i,n]}))}}},VariableDefinition(n){t[n.variable.name.value]=!0}}}function ur(e){let t=[],n=[];return{OperationDefinition(r){return t.push(r),!1},FragmentDefinition(r){return n.push(r),!1},Document:{leave(){let r=Object.create(null);for(let i of t)for(let o of e.getRecursivelyReferencedFragments(i))r[o.name.value]=!0;for(let i of n){let o=i.name.value;r[o]!==!0&&e.reportError(new f(`Fragment "${o}" is never used.`,{nodes:i}))}}}}}function pr(e){let t=[];return{OperationDefinition:{enter(){t=[]},leave(n){let r=Object.create(null),i=e.getRecursiveVariableUsages(n);for(let{node:o}of i)r[o.name.value]=!0;for(let o of t){let s=o.variable.name.value;r[s]!==!0&&e.reportError(new f(n.name?`Variable "$${s}" is never used in operation "${n.name.value}".`:`Variable "$${s}" is never used.`,{nodes:o}))}}},VariableDefinition(n){t.push(n)}}}function en(e){switch(e.kind){case u.OBJECT:return{...e,fields:Ko(e.fields)};case u.LIST:return{...e,values:e.values.map(en)};case u.INT:case u.FLOAT:case u.STRING:case u.BOOLEAN:case u.NULL:case u.ENUM:case u.VARIABLE:return e}}function Ko(e){return e.map(t=>({...t,value:en(t.value)})).sort((t,n)=>qe(t.name.value,n.name.value))}function Oi(e){return Array.isArray(e)?e.map(([t,n])=>`subfields "${t}" conflict because `+Oi(n)).join(" and "):e}function mr(e){let t=new dr,n=new Map;return{SelectionSet(r){let i=Xo(e,n,t,e.getParentType(),r);for(let[[o,s],a,c]of i){let p=Oi(s);e.reportError(new f(`Fields "${o}" conflict because ${p}. Use different aliases on the fields to fetch both if this was intentional.`,{nodes:a.concat(c)}))}}}}function Xo(e,t,n,r,i){let o=[],[s,a]=rn(e,t,r,i);if(Ho(e,o,t,n,s),a.length!==0)for(let c=0;c<a.length;c++){tn(e,o,t,n,!1,s,a[c]);for(let p=c+1;p<a.length;p++)nn(e,o,t,n,!1,a[c],a[p])}return o}function tn(e,t,n,r,i,o,s){let a=e.getFragment(s);if(!a)return;let[c,p]=fr(e,n,a);if(o!==c){hr(e,t,n,r,i,o,c);for(let l of p)r.has(l,s,i)||(r.add(l,s,i),tn(e,t,n,r,i,o,l))}}function nn(e,t,n,r,i,o,s){if(o===s||r.has(o,s,i))return;r.add(o,s,i);let a=e.getFragment(o),c=e.getFragment(s);if(!a||!c)return;let[p,l]=fr(e,n,a),[d,h]=fr(e,n,c);hr(e,t,n,r,i,p,d);for(let T of h)nn(e,t,n,r,i,o,T);for(let T of l)nn(e,t,n,r,i,T,s)}function zo(e,t,n,r,i,o,s,a){let c=[],[p,l]=rn(e,t,i,o),[d,h]=rn(e,t,s,a);hr(e,c,t,n,r,p,d);for(let T of h)tn(e,c,t,n,r,p,T);for(let T of l)tn(e,c,t,n,r,d,T);for(let T of l)for(let E of h)nn(e,c,t,n,r,T,E);return c}function Ho(e,t,n,r,i){for(let[o,s]of Object.entries(i))if(s.length>1)for(let a=0;a<s.length;a++)for(let c=a+1;c<s.length;c++){let p=Ri(e,n,r,!1,o,s[a],s[c]);p&&t.push(p)}}function hr(e,t,n,r,i,o,s){for(let[a,c]of Object.entries(o)){let p=s[a];if(p)for(let l of c)for(let d of p){let h=Ri(e,n,r,i,a,l,d);h&&t.push(h)}}}function Ri(e,t,n,r,i,o,s){let[a,c,p]=o,[l,d,h]=s,T=r||a!==l&&R(a)&&R(l);if(!T){let Re=c.name.value,ae=d.name.value;if(Re!==ae)return[[i,`"${Re}" and "${ae}" are different fields`],[c],[d]];if(!Wo(c,d))return[[i,"they have differing arguments"],[c],[d]]}let E=p?.type,w=h?.type;if(E&&w&&lr(E,w))return[[i,`they return conflicting types "${y(E)}" and "${y(w)}"`],[c],[d]];let $=c.selectionSet,Z=d.selectionSet;if($&&Z){let Re=zo(e,t,n,T,B(E),$,B(w),Z);return Zo(Re,i,c,d)}}function Wo(e,t){let n=e.arguments,r=t.arguments;if(n===void 0||n.length===0)return r===void 0||r.length===0;if(r===void 0||r.length===0||n.length!==r.length)return!1;let i=new Map(r.map(({name:o,value:s})=>[o.value,s]));return n.every(o=>{let s=o.value,a=i.get(o.name.value);return a===void 0?!1:bi(s)===bi(a)})}function bi(e){return x(en(e))}function lr(e,t){return A(e)?A(t)?lr(e.ofType,t.ofType):!0:A(t)?!0:b(e)?b(t)?lr(e.ofType,t.ofType):!0:b(t)?!0:J(e)||J(t)?e!==t:!1}function rn(e,t,n,r){let i=t.get(r);if(i)return i;let o=Object.create(null),s=Object.create(null);Si(e,n,r,o,s);let a=[o,Object.keys(s)];return t.set(r,a),a}function fr(e,t,n){let r=t.get(n.selectionSet);if(r)return r;let i=U(e.getSchema(),n.typeCondition);return rn(e,t,i,n.selectionSet)}function Si(e,t,n,r,i){for(let o of n.selections)switch(o.kind){case u.FIELD:{let s=o.name.value,a;(R(t)||_(t))&&(a=t.getFields()[s]);let c=o.alias?o.alias.value:s;r[c]||(r[c]=[]),r[c].push([t,o,a]);break}case u.FRAGMENT_SPREAD:i[o.name.value]=!0;break;case u.INLINE_FRAGMENT:{let s=o.typeCondition,a=s?U(e.getSchema(),s):t;Si(e,a,o.selectionSet,r,i);break}}}function Zo(e,t,n,r){if(e.length>0)return[[t,e.map(([i])=>i)],[n,...e.map(([,i])=>i).flat()],[r,...e.map(([,,i])=>i).flat()]]}var dr=class{constructor(){this._data=new Map}has(t,n,r){var i;let[o,s]=t<n?[t,n]:[n,t],a=(i=this._data.get(o))===null||i===void 0?void 0:i.get(s);return a===void 0?!1:r?!0:r===a}add(t,n,r){let[i,o]=t<n?[t,n]:[n,t],s=this._data.get(i);s===void 0?this._data.set(i,new Map([[o,r]])):s.set(o,r)}};function yr(e){return{InlineFragment(t){let n=e.getType(),r=e.getParentType();if(re(n)&&re(r)&&!$n(e.getSchema(),n,r)){let i=y(r),o=y(n);e.reportError(new f(`Fragment cannot be spread here as objects of type "${i}" can never be of type "${o}".`,{nodes:t}))}},FragmentSpread(t){let n=t.name.value,r=es(e,n),i=e.getParentType();if(r&&i&&!$n(e.getSchema(),r,i)){let o=y(i),s=y(r);e.reportError(new f(`Fragment "${n}" cannot be spread here as objects of type "${o}" can never be of type "${s}".`,{nodes:t}))}}}}function es(e,t){let n=e.getFragment(t);if(n){let r=U(e.getSchema(),n.typeCondition);if(re(r))return r}}function Tr(e){let t=e.getSchema(),n=Object.create(null);for(let i of e.getDocument().definitions)Oe(i)&&(n[i.name.value]=i);return{ScalarTypeExtension:r,ObjectTypeExtension:r,InterfaceTypeExtension:r,UnionTypeExtension:r,EnumTypeExtension:r,InputObjectTypeExtension:r};function r(i){let o=i.name.value,s=n[o],a=t?.getType(o),c;if(s?c=ts[s.kind]:a&&(c=ns(a)),c){if(c!==i.kind){let p=rs(i.kind);e.reportError(new f(`Cannot extend non-${p} type "${o}".`,{nodes:s?[s,i]:i}))}}else{let p=Object.keys({...n,...t?.getTypeMap()}),l=z(o,p);e.reportError(new f(`Cannot extend type "${o}" because it is not defined.`+K(l),{nodes:i.name}))}}}var ts={[u.SCALAR_TYPE_DEFINITION]:u.SCALAR_TYPE_EXTENSION,[u.OBJECT_TYPE_DEFINITION]:u.OBJECT_TYPE_EXTENSION,[u.INTERFACE_TYPE_DEFINITION]:u.INTERFACE_TYPE_EXTENSION,[u.UNION_TYPE_DEFINITION]:u.UNION_TYPE_EXTENSION,[u.ENUM_TYPE_DEFINITION]:u.ENUM_TYPE_EXTENSION,[u.INPUT_OBJECT_TYPE_DEFINITION]:u.INPUT_OBJECT_TYPE_EXTENSION};function ns(e){if(le(e))return u.SCALAR_TYPE_EXTENSION;if(R(e))return u.OBJECT_TYPE_EXTENSION;if(_(e))return u.INTERFACE_TYPE_EXTENSION;if(q(e))return u.UNION_TYPE_EXTENSION;if(V(e))return u.ENUM_TYPE_EXTENSION;if(L(e))return u.INPUT_OBJECT_TYPE_EXTENSION;k(!1,"Unexpected type: "+y(e))}function rs(e){switch(e){case u.SCALAR_TYPE_EXTENSION:return"scalar";case u.OBJECT_TYPE_EXTENSION:return"object";case u.INTERFACE_TYPE_EXTENSION:return"interface";case u.UNION_TYPE_EXTENSION:return"union";case u.ENUM_TYPE_EXTENSION:return"enum";case u.INPUT_OBJECT_TYPE_EXTENSION:return"input object";default:k(!1,"Unexpected kind: "+y(e))}}function gr(e){return{...Er(e),Field:{leave(t){var n;let r=e.getFieldDef();if(!r)return!1;let i=new Set((n=t.arguments)===null||n===void 0?void 0:n.map(o=>o.name.value));for(let o of r.args)if(!i.has(o.name)&&Ee(o)){let s=y(o.type);e.reportError(new f(`Field "${r.name}" argument "${o.name}" of type "${s}" is required, but it was not provided.`,{nodes:t}))}}}}}function Er(e){var t;let n=Object.create(null),r=e.getSchema(),i=(t=r?.getDirectives())!==null&&t!==void 0?t:de;for(let a of i)n[a.name]=ce(a.args.filter(Ee),c=>c.name);let o=e.getDocument().definitions;for(let a of o)if(a.kind===u.DIRECTIVE_DEFINITION){var s;let c=(s=a.arguments)!==null&&s!==void 0?s:[];n[a.name.value]=ce(c.filter(is),p=>p.name.value)}return{Directive:{leave(a){let c=a.name.value,p=n[c];if(p){var l;let d=(l=a.arguments)!==null&&l!==void 0?l:[],h=new Set(d.map(T=>T.name.value));for(let[T,E]of Object.entries(p))if(!h.has(T)){let w=Xe(E.type)?y(E.type):x(E.type);e.reportError(new f(`Directive "@${c}" argument "${T}" of type "${w}" is required, but it was not provided.`,{nodes:a}))}}}}}}function is(e){return e.type.kind===u.NON_NULL_TYPE&&e.defaultValue==null}function Nr(e){return{Field(t){let n=e.getType(),r=t.selectionSet;if(n){if(J(B(n))){if(r){let i=t.name.value,o=y(n);e.reportError(new f(`Field "${i}" must not have a selection since type "${o}" has no subfields.`,{nodes:r}))}}else if(!r){let i=t.name.value,o=y(n);e.reportError(new f(`Field "${i}" of type "${o}" must have a selection of subfields. Did you mean "${i} { ... }"?`,{nodes:t}))}}}}}function on(e){return e.map(t=>typeof t=="number"?"["+t.toString()+"]":"."+t).join("")}function Ce(e,t,n){return{prev:e,key:t,typename:n}}function te(e){let t=[],n=e;for(;n;)t.push(n.key),n=n.prev;return t.reverse()}function _i(e,t,n=os){return It(e,t,n,void 0)}function os(e,t,n){let r="Invalid value "+y(t);throw e.length>0&&(r+=` at "value${on(e)}"`),n.message=r+": "+n.message,n}function It(e,t,n,r){if(b(t)){if(e!=null)return It(e,t.ofType,n,r);n(te(r),e,new f(`Expected non-nullable type "${y(t)}" not to be null.`));return}if(e==null)return null;if(A(t)){let i=t.ofType;return We(e)?Array.from(e,(o,s)=>{let a=Ce(r,s,void 0);return It(o,i,n,a)}):[It(e,i,n,r)]}if(L(t)){if(!M(e)){n(te(r),e,new f(`Expected type "${t.name}" to be an object.`));return}let i={},o=t.getFields();for(let s of Object.values(o)){let a=e[s.name];if(a===void 0){if(s.defaultValue!==void 0)i[s.name]=s.defaultValue;else if(b(s.type)){let c=y(s.type);n(te(r),e,new f(`Field "${s.name}" of required type "${c}" was not provided.`))}continue}i[s.name]=It(a,s.type,n,Ce(r,s.name,t.name))}for(let s of Object.keys(e))if(!o[s]){let a=z(s,Object.keys(t.getFields()));n(te(r),e,new f(`Field "${s}" is not defined by type "${t.name}".`+K(a)))}return i}if(J(t)){let i;try{i=t.parseValue(e)}catch(o){o instanceof f?n(te(r),e,o):n(te(r),e,new f(`Expected type "${t.name}". `+o.message,{originalError:o}));return}return i===void 0&&n(te(r),e,new f(`Expected type "${t.name}".`)),i}k(!1,"Unexpected input type: "+y(t))}function Ue(e,t,n){if(e){if(e.kind===u.VARIABLE){let r=e.name.value;if(n==null||n[r]===void 0)return;let i=n[r];return i===null&&b(t)?void 0:i}if(b(t))return e.kind===u.NULL?void 0:Ue(e,t.ofType,n);if(e.kind===u.NULL)return null;if(A(t)){let r=t.ofType;if(e.kind===u.LIST){let o=[];for(let s of e.values)if(xi(s,n)){if(b(r))return;o.push(null)}else{let a=Ue(s,r,n);if(a===void 0)return;o.push(a)}return o}let i=Ue(e,r,n);return i===void 0?void 0:[i]}if(L(t)){if(e.kind!==u.OBJECT)return;let r=Object.create(null),i=ce(e.fields,o=>o.name.value);for(let o of Object.values(t.getFields())){let s=i[o.name];if(!s||xi(s.value,n)){if(o.defaultValue!==void 0)r[o.name]=o.defaultValue;else if(b(o.type))return;continue}let a=Ue(s.value,o.type,n);if(a===void 0)return;r[o.name]=a}return r}if(J(t)){let r;try{r=t.parseLiteral(e,n)}catch{return}return r===void 0?void 0:r}k(!1,"Unexpected input type: "+y(t))}}function xi(e,t){return e.kind===u.VARIABLE&&(t==null||t[e.name.value]===void 0)}function vr(e,t,n,r){let i=[],o=r?.maxErrors;try{let s=ss(e,t,n,a=>{if(o!=null&&i.length>=o)throw new f("Too many errors processing variables, error limit reached. Execution aborted.");i.push(a)});if(i.length===0)return{coerced:s}}catch(s){i.push(s)}return{errors:i}}function ss(e,t,n,r){let i={};for(let o of t){let s=o.variable.name.value,a=U(e,o.type);if(!Y(a)){let p=x(o.type);r(new f(`Variable "$${s}" expected value of type "${p}" which cannot be used as an input type.`,{nodes:o.type}));continue}if(!Li(n,s)){if(o.defaultValue)i[s]=Ue(o.defaultValue,a);else if(b(a)){let p=y(a);r(new f(`Variable "$${s}" of required type "${p}" was not provided.`,{nodes:o}))}continue}let c=n[s];if(c===null&&b(a)){let p=y(a);r(new f(`Variable "$${s}" of non-null type "${p}" must not be null.`,{nodes:o}));continue}i[s]=_i(c,a,(p,l,d)=>{let h=`Variable "$${s}" got invalid value `+y(l);p.length>0&&(h+=` at "${s}${on(p)}"`),r(new f(h+"; "+d.message,{nodes:o,originalError:d}))})}return i}function sn(e,t,n){var r;let i={},o=(r=t.arguments)!==null&&r!==void 0?r:[],s=ce(o,a=>a.name.value);for(let a of e.args){let c=a.name,p=a.type,l=s[c];if(!l){if(a.defaultValue!==void 0)i[c]=a.defaultValue;else if(b(p))throw new f(`Argument "${c}" of required type "${y(p)}" was not provided.`,{nodes:t});continue}let d=l.value,h=d.kind===u.NULL;if(d.kind===u.VARIABLE){let E=d.name.value;if(n==null||!Li(n,E)){if(a.defaultValue!==void 0)i[c]=a.defaultValue;else if(b(p))throw new f(`Argument "${c}" of required type "${y(p)}" was provided the variable "$${E}" which was not provided a runtime value.`,{nodes:d});continue}h=n[E]==null}if(h&&b(p))throw new f(`Argument "${c}" of non-null type "${y(p)}" must not be null.`,{nodes:d});let T=Ue(d,p,n);if(T===void 0)throw new f(`Argument "${c}" has invalid value ${x(d)}.`,{nodes:d});i[c]=T}return i}function an(e,t,n){var r;let i=(r=t.directives)===null||r===void 0?void 0:r.find(o=>o.name.value===e.name);if(i)return sn(e,i,n)}function Li(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function un(e,t,n,r,i){let o=new Map;return cn(e,t,n,r,i,o,new Set),o}function Di(e,t,n,r,i){let o=new Map,s=new Set;for(let a of i)a.selectionSet&&cn(e,t,n,r,a.selectionSet,o,s);return o}function cn(e,t,n,r,i,o,s){for(let a of i.selections)switch(a.kind){case u.FIELD:{if(!Ir(n,a))continue;let c=as(a),p=o.get(c);p!==void 0?p.push(a):o.set(c,[a]);break}case u.INLINE_FRAGMENT:{if(!Ir(n,a)||!Ai(e,a,r))continue;cn(e,t,n,r,a.selectionSet,o,s);break}case u.FRAGMENT_SPREAD:{let c=a.name.value;if(s.has(c)||!Ir(n,a))continue;s.add(c);let p=t[c];if(!p||!Ai(e,p,r))continue;cn(e,t,n,r,p.selectionSet,o,s);break}}}function Ir(e,t){let n=an(Yt,t,e);if(n?.if===!0)return!1;let r=an(qt,t,e);return r?.if!==!1}function Ai(e,t,n){let r=t.typeCondition;if(!r)return!0;let i=U(e,r);return i===n?!0:W(i)?e.isSubType(i,n):!1}function as(e){return e.alias?e.alias.value:e.name.value}function br(e){return{OperationDefinition(t){if(t.operation==="subscription"){let n=e.getSchema(),r=n.getSubscriptionType();if(r){let i=t.name?t.name.value:null,o=Object.create(null),s=e.getDocument(),a=Object.create(null);for(let p of s.definitions)p.kind===u.FRAGMENT_DEFINITION&&(a[p.name.value]=p);let c=un(n,a,o,r,t.selectionSet);if(c.size>1){let d=[...c.values()].slice(1).flat();e.reportError(new f(i!=null?`Subscription "${i}" must select only one top level field.`:"Anonymous Subscription must select only one top level field.",{nodes:d}))}for(let p of c.values())p[0].name.value.startsWith("__")&&e.reportError(new f(i!=null?`Subscription "${i}" must not select an introspection top level field.`:"Anonymous Subscription must not select an introspection top level field.",{nodes:p}))}}}}}function tt(e,t){let n=new Map;for(let r of e){let i=t(r),o=n.get(i);o===void 0?n.set(i,[r]):o.push(r)}return n}function Or(e){return{DirectiveDefinition(r){var i;let o=(i=r.arguments)!==null&&i!==void 0?i:[];return n(`@${r.name.value}`,o)},InterfaceTypeDefinition:t,InterfaceTypeExtension:t,ObjectTypeDefinition:t,ObjectTypeExtension:t};function t(r){var i;let o=r.name.value,s=(i=r.fields)!==null&&i!==void 0?i:[];for(let c of s){var a;let p=c.name.value,l=(a=c.arguments)!==null&&a!==void 0?a:[];n(`${o}.${p}`,l)}return!1}function n(r,i){let o=tt(i,s=>s.name.value);for(let[s,a]of o)a.length>1&&e.reportError(new f(`Argument "${r}(${s}:)" can only be defined once.`,{nodes:a.map(c=>c.name)}));return!1}}function pn(e){return{Field:t,Directive:t};function t(n){var r;let i=(r=n.arguments)!==null&&r!==void 0?r:[],o=tt(i,s=>s.name.value);for(let[s,a]of o)a.length>1&&e.reportError(new f(`There can be only one argument named "${s}".`,{nodes:a.map(c=>c.name)}))}}function Rr(e){let t=Object.create(null),n=e.getSchema();return{DirectiveDefinition(r){let i=r.name.value;if(n!=null&&n.getDirective(i)){e.reportError(new f(`Directive "@${i}" already exists in the schema. It cannot be redefined.`,{nodes:r.name}));return}return t[i]?e.reportError(new f(`There can be only one directive named "@${i}".`,{nodes:[t[i],r.name]})):t[i]=r.name,!1}}}function ln(e){let t=Object.create(null),n=e.getSchema(),r=n?n.getDirectives():de;for(let a of r)t[a.name]=!a.isRepeatable;let i=e.getDocument().definitions;for(let a of i)a.kind===u.DIRECTIVE_DEFINITION&&(t[a.name.value]=!a.repeatable);let o=Object.create(null),s=Object.create(null);return{enter(a){if(!("directives"in a)||!a.directives)return;let c;if(a.kind===u.SCHEMA_DEFINITION||a.kind===u.SCHEMA_EXTENSION)c=o;else if(Oe(a)||Ht(a)){let p=a.name.value;c=s[p],c===void 0&&(s[p]=c=Object.create(null))}else c=Object.create(null);for(let p of a.directives){let l=p.name.value;t[l]&&(c[l]?e.reportError(new f(`The directive "@${l}" can only be used once at this location.`,{nodes:[c[l],p]})):c[l]=p)}}}}function Sr(e){let t=e.getSchema(),n=t?t.getTypeMap():Object.create(null),r=Object.create(null);return{EnumTypeDefinition:i,EnumTypeExtension:i};function i(o){var s;let a=o.name.value;r[a]||(r[a]=Object.create(null));let c=(s=o.values)!==null&&s!==void 0?s:[],p=r[a];for(let l of c){let d=l.name.value,h=n[a];V(h)&&h.getValue(d)?e.reportError(new f(`Enum value "${a}.${d}" already exists in the schema. It cannot also be defined in this type extension.`,{nodes:l.name})):p[d]?e.reportError(new f(`Enum value "${a}.${d}" can only be defined once.`,{nodes:[p[d],l.name]})):p[d]=l.name}return!1}}function _r(e){let 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(o){var s;let a=o.name.value;r[a]||(r[a]=Object.create(null));let c=(s=o.fields)!==null&&s!==void 0?s:[],p=r[a];for(let l of c){let d=l.name.value;cs(n[a],d)?e.reportError(new f(`Field "${a}.${d}" already exists in the schema. It cannot also be defined in this type extension.`,{nodes:l.name})):p[d]?e.reportError(new f(`Field "${a}.${d}" can only be defined once.`,{nodes:[p[d],l.name]})):p[d]=l.name}return!1}}function cs(e,t){return R(e)||_(e)||L(e)?e.getFields()[t]!=null:!1}function xr(e){let t=Object.create(null);return{OperationDefinition:()=>!1,FragmentDefinition(n){let r=n.name.value;return t[r]?e.reportError(new f(`There can be only one fragment named "${r}".`,{nodes:[t[r],n.name]})):t[r]=n.name,!1}}}function fn(e){let t=[],n=Object.create(null);return{ObjectValue:{enter(){t.push(n),n=Object.create(null)},leave(){let r=t.pop();r||k(!1),n=r}},ObjectField(r){let i=r.name.value;n[i]?e.reportError(new f(`There can be only one input field named "${i}".`,{nodes:[n[i],r.name]})):n[i]=r.name}}}function Lr(e){let t=Object.create(null);return{OperationDefinition(n){let r=n.name;return r&&(t[r.value]?e.reportError(new f(`There can be only one operation named "${r.value}".`,{nodes:[t[r.value],r]})):t[r.value]=r),!1},FragmentDefinition:()=>!1}}function Ar(e){let 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(o){var s;let a=(s=o.operationTypes)!==null&&s!==void 0?s:[];for(let c of a){let p=c.operation,l=n[p];r[p]?e.reportError(new f(`Type for ${p} already defined in the schema. It cannot be redefined.`,{nodes:c})):l?e.reportError(new f(`There can be only one ${p} type in schema.`,{nodes:[l,c]})):n[p]=c}return!1}}function Dr(e){let t=Object.create(null),n=e.getSchema();return{ScalarTypeDefinition:r,ObjectTypeDefinition:r,InterfaceTypeDefinition:r,UnionTypeDefinition:r,EnumTypeDefinition:r,InputObjectTypeDefinition:r};function r(i){let o=i.name.value;if(n!=null&&n.getType(o)){e.reportError(new f(`Type "${o}" already exists in the schema. It cannot also be defined in this type definition.`,{nodes:i.name}));return}return t[o]?e.reportError(new f(`There can be only one type named "${o}".`,{nodes:[t[o],i.name]})):t[o]=i.name,!1}}function wr(e){return{OperationDefinition(t){var n;let r=(n=t.variableDefinitions)!==null&&n!==void 0?n:[],i=tt(r,o=>o.variable.name.value);for(let[o,s]of i)s.length>1&&e.reportError(new f(`There can be only one variable named "$${o}".`,{nodes:s.map(a=>a.variable.name)}))}}}function Fr(e){return{ListValue(t){let n=ze(e.getParentInputType());if(!A(n))return Pe(e,t),!1},ObjectValue(t){let n=B(e.getInputType());if(!L(n))return Pe(e,t),!1;let r=ce(t.fields,i=>i.name.value);for(let i of Object.values(n.getFields()))if(!r[i.name]&&He(i)){let s=y(i.type);e.reportError(new f(`Field "${n.name}.${i.name}" of required type "${s}" was not provided.`,{nodes:t}))}},ObjectField(t){let n=B(e.getParentInputType());if(!e.getInputType()&&L(n)){let i=z(t.name.value,Object.keys(n.getFields()));e.reportError(new f(`Field "${t.name.value}" is not defined by type "${n.name}".`+K(i),{nodes:t}))}},NullValue(t){let n=e.getInputType();b(n)&&e.reportError(new f(`Expected value of type "${y(n)}", found ${x(t)}.`,{nodes:t}))},EnumValue:t=>Pe(e,t),IntValue:t=>Pe(e,t),FloatValue:t=>Pe(e,t),StringValue:t=>Pe(e,t),BooleanValue:t=>Pe(e,t)}}function Pe(e,t){let n=e.getInputType();if(!n)return;let r=B(n);if(!J(r)){let i=y(n);e.reportError(new f(`Expected value of type "${i}", found ${x(t)}.`,{nodes:t}));return}try{if(r.parseLiteral(t,void 0)===void 0){let o=y(n);e.reportError(new f(`Expected value of type "${o}", found ${x(t)}.`,{nodes:t}))}}catch(i){let o=y(n);i instanceof f?e.reportError(i):e.reportError(new f(`Expected value of type "${o}", found ${x(t)}; `+i.message,{nodes:t,originalError:i}))}}function kr(e){return{VariableDefinition(t){let n=U(e.getSchema(),t.type);if(n!==void 0&&!Y(n)){let r=t.variable.name.value,i=x(t.type);e.reportError(new f(`Variable "$${r}" cannot be non-input type "${i}".`,{nodes:t.type}))}}}}function Cr(e){let t=Object.create(null);return{OperationDefinition:{enter(){t=Object.create(null)},leave(n){let r=e.getRecursiveVariableUsages(n);for(let{node:i,type:o,defaultValue:s}of r){let a=i.name.value,c=t[a];if(c&&o){let p=e.getSchema(),l=U(p,c.type);if(l&&!us(p,l,c.defaultValue,o,s)){let d=y(l),h=y(o);e.reportError(new f(`Variable "$${a}" of type "${d}" used in position expecting type "${h}".`,{nodes:[c,i]}))}}}}},VariableDefinition(n){t[n.variable.name.value]=n}}}function us(e,t,n,r,i){if(b(r)&&!b(t)){if(!(n!=null&&n.kind!==u.NULL)&&!(i!==void 0))return!1;let a=r.ofType;return Ie(e,t,a)}return Ie(e,t,r)}var nt=Object.freeze([Zn,Lr,or,br,Zt,tr,kr,Nr,er,xr,ir,ur,yr,ar,wr,cr,pr,Wt,ln,nr,pn,Fr,gr,Cr,mr,fn]),ps=Object.freeze([sr,Ar,Dr,Sr,_r,Or,Rr,Zt,Wt,ln,Tr,rr,pn,fn,Er]);var dn=class{constructor(t,n){this._ast=t,this._fragments=void 0,this._fragmentSpreads=new Map,this._recursivelyReferencedFragments=new Map,this._onError=n}get[Symbol.toStringTag](){return"ASTValidationContext"}reportError(t){this._onError(t)}getDocument(){return this._ast}getFragment(t){let n;if(this._fragments)n=this._fragments;else{n=Object.create(null);for(let r of this.getDocument().definitions)r.kind===u.FRAGMENT_DEFINITION&&(n[r.name.value]=r);this._fragments=n}return n[t]}getFragmentSpreads(t){let n=this._fragmentSpreads.get(t);if(!n){n=[];let r=[t],i;for(;i=r.pop();)for(let o of i.selections)o.kind===u.FRAGMENT_SPREAD?n.push(o):o.selectionSet&&r.push(o.selectionSet);this._fragmentSpreads.set(t,n)}return n}getRecursivelyReferencedFragments(t){let n=this._recursivelyReferencedFragments.get(t);if(!n){n=[];let r=Object.create(null),i=[t.selectionSet],o;for(;o=i.pop();)for(let s of this.getFragmentSpreads(o)){let a=s.name.value;if(r[a]!==!0){r[a]=!0;let c=this.getFragment(a);c&&(n.push(c),i.push(c.selectionSet))}}this._recursivelyReferencedFragments.set(t,n)}return n}},Ur=class extends dn{constructor(t,n,r){super(t,r),this._schema=n}get[Symbol.toStringTag](){return"SDLValidationContext"}getSchema(){return this._schema}},bt=class extends dn{constructor(t,n,r,i){super(n,i),this._schema=t,this._typeInfo=r,this._variableUsages=new Map,this._recursiveVariableUsages=new Map}get[Symbol.toStringTag](){return"ValidationContext"}getSchema(){return this._schema}getVariableUsages(t){let n=this._variableUsages.get(t);if(!n){let r=[],i=new et(this._schema);_e(t,zt(i,{VariableDefinition:()=>!1,Variable(o){r.push({node:o,type:i.getInputType(),defaultValue:i.getDefaultValue()})}})),n=r,this._variableUsages.set(t,n)}return n}getRecursiveVariableUsages(t){let n=this._recursiveVariableUsages.get(t);if(!n){n=this.getVariableUsages(t);for(let r of this.getRecursivelyReferencedFragments(t))n=n.concat(this.getVariableUsages(r));this._recursiveVariableUsages.set(t,n)}return n}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 mn(e,t,n=nt,r,i=new et(e)){var o;let s=(o=r?.maxErrors)!==null&&o!==void 0?o:100;t||O(!1,"Must provide document."),vt(e);let a=Object.freeze({}),c=[],p=new bt(e,t,i,d=>{if(c.length>=s)throw c.push(new f("Too many validation errors, error limit reached. Validation aborted.")),a;c.push(d)}),l=kn(n.map(d=>d(p)));try{_e(t,zt(i,l))}catch(d){if(d!==a)throw d}return c}function wi(e){let t;return function(r,i,o){t===void 0&&(t=new WeakMap);let s=t.get(r);s===void 0&&(s=new WeakMap,t.set(r,s));let a=s.get(i);a===void 0&&(a=new WeakMap,s.set(i,a));let c=a.get(o);return c===void 0&&(c=e(r,i,o),a.set(o,c)),c}}function Pr(e){return Promise.all(Object.values(e)).then(t=>{let n=Object.create(null);for(let[r,i]of Object.keys(e).entries())n[i]=t[r];return n})}function Fi(e,t,n){let r=n;for(let i of e)r=ne(r)?r.then(o=>t(o,i)):t(r,i);return r}function ki(e){return e instanceof Error?e:new Vr(e)}var Vr=class extends Error{constructor(t){super("Unexpected error value: "+y(t)),this.name="NonErrorThrown",this.thrownValue=t}};function rt(e,t,n){var r;let i=ki(e);return ls(i)?i:new f(i.message,{nodes:(r=i.nodes)!==null&&r!==void 0?r:t,source:i.source,positions:i.positions,path:n,originalError:i})}function ls(e){return Array.isArray(e.path)}var fs=wi((e,t,n)=>Di(e.schema,e.fragments,e.variableValues,t,n));function En(e){arguments.length<2||O(!1,"graphql@16 dropped long-deprecated support for positional arguments, please pass an object instead.");let{schema:t,document:n,variableValues:r,rootValue:i}=e;ds(t,n,r);let o=ms(e);if(!("schema"in o))return{errors:o};try{let{operation:s}=o,a=hs(o,s,i);return ne(a)?a.then(c=>hn(c,o.errors),c=>(o.errors.push(c),hn(null,o.errors))):hn(a,o.errors)}catch(s){return o.errors.push(s),hn(null,o.errors)}}function hn(e,t){return t.length===0?{data:e}:{errors:t,data:e}}function ds(e,t,n){t||O(!1,"Must provide document."),vt(e),n==null||M(n)||O(!1,"Variables must be provided as an Object where each property is a variable value. Perhaps look to see if an unparsed JSON string was provided.")}function ms(e){var t,n;let{schema:r,document:i,rootValue:o,contextValue:s,variableValues:a,operationName:c,fieldResolver:p,typeResolver:l,subscribeFieldResolver:d}=e,h,T=Object.create(null);for(let $ of i.definitions)switch($.kind){case u.OPERATION_DEFINITION:if(c==null){if(h!==void 0)return[new f("Must provide operation name if query contains multiple operations.")];h=$}else((t=$.name)===null||t===void 0?void 0:t.value)===c&&(h=$);break;case u.FRAGMENT_DEFINITION:T[$.name.value]=$;break;default:}if(!h)return c!=null?[new f(`Unknown operation named "${c}".`)]:[new f("Must provide an operation.")];let E=(n=h.variableDefinitions)!==null&&n!==void 0?n:[],w=vr(r,E,a??{},{maxErrors:50});return w.errors?w.errors:{schema:r,fragments:T,rootValue:o,contextValue:s,operation:h,variableValues:w.coerced,fieldResolver:p??gn,typeResolver:l??Mr,subscribeFieldResolver:d??gn,errors:[]}}function hs(e,t,n){let r=e.schema.getRootType(t.operation);if(r==null)throw new f(`Schema is not configured to execute ${t.operation} operation.`,{nodes:t});let i=un(e.schema,e.fragments,e.variableValues,r,t.selectionSet),o=void 0;switch(t.operation){case F.QUERY:return yn(e,r,n,o,i);case F.MUTATION:return ys(e,r,n,o,i);case F.SUBSCRIPTION:return yn(e,r,n,o,i)}}function ys(e,t,n,r,i){return Fi(i.entries(),(o,[s,a])=>{let c=Ce(r,s,t.name),p=Pi(e,t,n,a,c);return p===void 0?o:ne(p)?p.then(l=>(o[s]=l,o)):(o[s]=p,o)},Object.create(null))}function yn(e,t,n,r,i){let o=Object.create(null),s=!1;try{for(let[a,c]of i.entries()){let p=Ce(r,a,t.name),l=Pi(e,t,n,c,p);l!==void 0&&(o[a]=l,ne(l)&&(s=!0))}}catch(a){if(s)return Pr(o).finally(()=>{throw a});throw a}return s?Pr(o):o}function Pi(e,t,n,r,i){var o;let s=vs(e.schema,t,r[0]);if(!s)return;let a=s.type,c=(o=s.resolve)!==null&&o!==void 0?o:e.fieldResolver,p=Ts(e,s,r,t,i);try{let l=sn(s,r[0],e.variableValues),d=e.contextValue,h=c(n,l,d,p),T;return ne(h)?T=h.then(E=>Ot(e,a,r,p,i,E)):T=Ot(e,a,r,p,i,h),ne(T)?T.then(void 0,E=>{let w=rt(E,r,te(i));return Tn(w,a,e)}):T}catch(l){let d=rt(l,r,te(i));return Tn(d,a,e)}}function Ts(e,t,n,r,i){return{fieldName:t.name,fieldNodes:n,returnType:t.type,parentType:r,path:i,schema:e.schema,fragments:e.fragments,rootValue:e.rootValue,operation:e.operation,variableValues:e.variableValues}}function Tn(e,t,n){if(b(t))throw e;return n.errors.push(e),null}function Ot(e,t,n,r,i,o){if(o instanceof Error)throw o;if(b(t)){let s=Ot(e,t.ofType,n,r,i,o);if(s===null)throw new Error(`Cannot return null for non-nullable field ${r.parentType.name}.${r.fieldName}.`);return s}if(o==null)return null;if(A(t))return gs(e,t,n,r,i,o);if(J(t))return Es(t,o);if(W(t))return Ns(e,t,n,r,i,o);if(R(t))return $r(e,t,n,r,i,o);k(!1,"Cannot complete value of unexpected output type: "+y(t))}function gs(e,t,n,r,i,o){if(!We(o))throw new f(`Expected Iterable, but did not find one for field "${r.parentType.name}.${r.fieldName}".`);let s=t.ofType,a=!1,c=Array.from(o,(p,l)=>{let d=Ce(i,l,void 0);try{let h;return ne(p)?h=p.then(T=>Ot(e,s,n,r,d,T)):h=Ot(e,s,n,r,d,p),ne(h)?(a=!0,h.then(void 0,T=>{let E=rt(T,n,te(d));return Tn(E,s,e)})):h}catch(h){let T=rt(h,n,te(d));return Tn(T,s,e)}});return a?Promise.all(c):c}function Es(e,t){let n=e.serialize(t);if(n==null)throw new Error(`Expected \`${y(e)}.serialize(${y(t)})\` to return non-nullable value, returned: ${y(n)}`);return n}function Ns(e,t,n,r,i,o){var s;let a=(s=t.resolveType)!==null&&s!==void 0?s:e.typeResolver,c=e.contextValue,p=a(o,c,r,t);return ne(p)?p.then(l=>$r(e,Ci(l,e,t,n,r,o),n,r,i,o)):$r(e,Ci(p,e,t,n,r,o),n,r,i,o)}function Ci(e,t,n,r,i,o){if(e==null)throw new f(`Abstract type "${n.name}" must resolve to an Object type at runtime for field "${i.parentType.name}.${i.fieldName}". Either the "${n.name}" type should provide a "resolveType" function or each possible type should provide an "isTypeOf" function.`,r);if(R(e))throw new f("Support for returning GraphQLObjectType from resolveType was removed in graphql-js@16.0.0 please return type name instead.");if(typeof e!="string")throw new f(`Abstract type "${n.name}" must resolve to an Object type at runtime for field "${i.parentType.name}.${i.fieldName}" with value ${y(o)}, received "${y(e)}".`);let s=t.schema.getType(e);if(s==null)throw new f(`Abstract type "${n.name}" was resolved to a type "${e}" that does not exist inside the schema.`,{nodes:r});if(!R(s))throw new f(`Abstract type "${n.name}" was resolved to a non-object type "${e}".`,{nodes:r});if(!t.schema.isSubType(n,s))throw new f(`Runtime Object type "${s.name}" is not a possible type for "${n.name}".`,{nodes:r});return s}function $r(e,t,n,r,i,o){let s=fs(e,t,n);if(t.isTypeOf){let a=t.isTypeOf(o,e.contextValue,r);if(ne(a))return a.then(c=>{if(!c)throw Ui(t,o,n);return yn(e,t,o,i,s)});if(!a)throw Ui(t,o,n)}return yn(e,t,o,i,s)}function Ui(e,t,n){return new f(`Expected value of type "${e.name}" but got: ${y(t)}.`,{nodes:n})}var Mr=function(e,t,n,r){if(M(e)&&typeof e.__typename=="string")return e.__typename;let i=n.schema.getPossibleTypes(r),o=[];for(let s=0;s<i.length;s++){let a=i[s];if(a.isTypeOf){let c=a.isTypeOf(e,t,n);if(ne(c))o[s]=c;else if(c)return a.name}}if(o.length)return Promise.all(o).then(s=>{for(let a=0;a<s.length;a++)if(s[a])return i[a].name})},gn=function(e,t,n,r){if(M(e)||typeof e=="function"){let i=e[r.fieldName];return typeof i=="function"?e[r.fieldName](t,n,r):i}};function vs(e,t,n){let r=n.name.value;return r===Ae.name&&e.getQueryType()===t?Ae:r===De.name&&e.getQueryType()===t?De:r===we.name?we:t.getFields()[r]}import{capitalize as Hs,getDataType as ji,isResourceType as Ws}from"@medplum/core";import{getReferenceString as Ys,getSearchParameters as Js,Operator as Ks,parseSearchRequest as Xs}from"@medplum/core";var Nn={base64Binary:N,boolean:j,canonical:N,code:N,date:N,dateTime:N,decimal:oe,id:fe,instant:N,integer:oe,markdown:N,number:oe,positiveInt:oe,string:N,time:N,unsignedInt:oe,uri:N,url:N,xhtml:N,"http://hl7.org/fhirpath/System.Boolean":j,"http://hl7.org/fhirpath/System.Date":N,"http://hl7.org/fhirpath/System.DateTime":N,"http://hl7.org/fhirpath/System.Decimal":oe,"http://hl7.org/fhirpath/System.Integer":oe,"http://hl7.org/fhirpath/System.String":N,"http://hl7.org/fhirpath/System.Time":N};function Gr(e,t,n){let r;if(t){let o=n._reference;delete n._reference,r={code:o,operator:Ks.EQUALS,value:Ys(t)}}n=Object.fromEntries(Object.entries(n).map(([o,s])=>[zs(o),s]));let i=Xs(e,n);if(r){let o=i.filters||[];i.filters=[r,...o]}return i}function zs(e){return e.startsWith("_")?e:e.replaceAll("_","-")}function jr(e){return e.replaceAll("-","_")}async function vn(e,t,n,r){let i=r.fieldName,o=i.substring(0,i.length-4),s=Gr(o,e,t);return(await n.repo.search(s)).entry?.map(c=>c.resource)}function Rt(e){let t={_count:{type:ie,description:"Specify how many elements to return from a repeating list."},_offset:{type:ie,description:"Specify the offset to start at for a repeating element."},_sort:{type:N,description:"Specify the sort order by comma-separated list of sort rules in priority order."},_id:{type:N,description:"Select resources based on the logical id of the resource."},_lastUpdated:{type:N,description:"Select resources based on the last time they were changed."},_filter:{type:N,description:" The _filter parameter provides a syntax for expressing a set of query expressions on the underlying resources."}},n=Js(e);if(n)for(let[r,i]of Object.entries(n))t[jr(r)]={type:N,description:i.description};return t}function Vi(e){return e.filter(t=>t==="selections").length}function $i(e,t){return e.fieldNodes.some(n=>n.selectionSet?.selections.some(r=>r.kind===u.FIELD&&r.name.value===t))}function Mi(e){return{resourceType:"OperationOutcome",issue:e.map(t=>({severity:"error",code:"invalid",details:{text:t.message}}))}}var Gi={...Nn};function St(e,t){let n=Gi[e];return n||(n=Zs(e,t),Gi[e]=n),n}function Zs(e,t){let n=ji(e);return new Le({name:e+t,description:n.description,fields:()=>ea(e,t)})}function ea(e,t){let n={};if(Ws(e)){let r={description:"The type of resource",type:N};n.resourceType=r}return ta(e,n,t),n}function ta(e,t,n){let r=ji(e);for(let[i,o]of Object.entries(r.elements))for(let s of o.type)na(t,i,o,s,n)}function na(e,t,n,r,i){let o=r.code;(o==="Element"||o==="BackboneElement")&&(o=n.type[0].code);let s={description:n.description,type:St(o,i)};n.max>1&&(s.type=new D(new I(St(o,i)))),n.min>0&&!t.endsWith("[x]")&&(s.type=new I(s.type));let a=t.split(".").pop().replace("[x]",Hs(r.code));e[a]=s}import{capitalize as Qi,evalFhirPathTyped as ra,getDataType as Qr,getResourceTypes as Bi,getSearchParameters as ia,isLowerCase as oa,isReference as sa,isResourceTypeSchema as aa,normalizeOperationOutcome as ca,OperationOutcomeError as ua,toJsBoolean as pa,toTypedValue as la}from"@medplum/core";var In={...Nn};function Ve(e){let t=In[e];return t||(t=Br(e),In[e]=t),t}function Br(e){if(e==="ResourceList")return new xe({name:"ResourceList",types:()=>Bi().map(Ve).filter(n=>!!n),resolveType:va});let t=Qr(e);return new G({name:e,description:t.description,fields:()=>fa(e)})}function fa(e){let t={};return da(e,t),Ta(e,t),t}function da(e,t){let n=Qr(e);aa(n)&&(t.resourceType={type:new I(N),description:"Resource Type"}),e==="Reference"&&(t.resource={description:"Reference",type:Ve("ResourceList"),resolve:Na});for(let[r,i]of Object.entries(n.elements))for(let o of i.type)ma(t,r,i,o)}function ma(e,t,n,r){let i=r.code;(i==="Element"||i==="BackboneElement")&&(i=n.type[0].code);let o={description:n.description,type:ga(n,i,t),resolve:Ea};n.max>1&&(o.args=ha(i));let s=t.split(".").pop().replace("[x]",Qi(r.code));e[s]=o}function ha(e){let t={_count:{type:ie,description:"Specify how many elements to return from a repeating list."},_offset:{type:ie,description:"Specify the offset to start at for a repeating element."}};if(!oa(e.charAt(0))){t.fhirpath={type:N,description:"A FHIRPath statement selecting which of the subnodes is to be included"};let n=Qr(e);if(n.elements)for(let[r,i]of Object.entries(n.elements))for(let o of i.type)ya(t,r,i,o)}return t}function ya(e,t,n,r){let i=r.code,o=t.replace("[x]",Qi(i));switch(i){case"canonical":case"code":case"id":case"oid":case"string":case"uri":case"url":case"uuid":case"http://hl7.org/fhirpath/System.String":e[o]={type:N,description:n.description};break}}function Ta(e,t){for(let n of Bi()){let r=Ve(n),i=ia(n),o={},s=0;if(i)for(let[a,c]of Object.entries(i))c.target?.includes(e)&&(o[jr(a)]={value:a},s++);if(s>0){let a=new ye({name:e+"_"+n+"_reference",values:o}),c=Rt(n);c._reference={type:new I(a),description:`Specify which property to use for reverse lookup for ${n}`},t[n+"List"]={type:new D(r),args:c,resolve:vn}}}}function ga(e,t,n){let r=Ve(t);return e.max>1&&(r=new D(new I(r))),e.min!==0&&!n.endsWith("[x]")&&(r=new I(r)),r}async function Ea(e,t,n,r){let i=e?.[r.fieldName];if(!t||!i)return i;let{_offset:o,_count:s,fhirpath:a,...c}=t,p=i;for(let[l,d]of Object.entries(c))p=p.filter(h=>h[l]===d);return a&&(p=p.filter(l=>pa(ra(a,[la(l)])))),o&&(p=p.slice(o)),s&&(p=p.slice(0,s)),p}async function Na(e,t,n){if(sa(e))try{return await n.dataLoader.load(e)}catch(r){throw new ua(ca(r),r)}}function va(e){let t=e?.resourceType;if(t)return Ve(t).name}var La=new Ra,qr;async function Yi(e,t,n){let{query:r,operationName:i,variables:o}=e.body;if(!r)return[_t("Must provide query.")];let s;try{s=Ct(r)}catch{return[_t("GraphQL syntax error.")]}let a=Da(),c=[...nt,Ga],p=mn(a,s,c);if(p.length>0)return[Mi(p)];let l=Aa(r);if(l&&!n.options?.introspectionEnabled)return[Oa];let d=new xa(T=>t.readReferences(T)),h=l&&La.get(r);return h||(h=await En({schema:a,document:s,contextValue:{repo:t,dataLoader:d},operationName:i,variableValues:o})),[Ia,h]}function Aa(e){return e.includes("query IntrospectionQuery")||e.includes("__schema")}function Da(){return qr||(qr=wa()),qr}function wa(){for(let n of qi())In[n]=Br(n);let e={},t={};for(let n of qi()){let r=Ve(n);e[n]={type:r,args:{id:{type:new I(fe),description:n+" ID"}},resolve:Pa},e[n+"List"]={type:new D(r),args:Rt(n),resolve:vn},e[n+"Connection"]={type:Ca(n,r),args:Rt(n),resolve:Ua},t[n+"Create"]={type:r,args:Fa(n),resolve:Va},t[n+"Update"]={type:r,args:ka(n),resolve:$a},t[n+"Delete"]={type:r,args:{id:{type:new I(fe),description:n+" ID"}},resolve:Ma}}return new Fe({query:new G({name:"QueryType",fields:e}),mutation:new G({name:"MutationType",fields:t})})}function Fa(e){return{res:{type:new I(St(e,"Create")),description:e+" Create"}}}function ka(e){return{id:{type:new I(fe),description:e+" ID"},res:{type:new I(St(e,"Update")),description:e+" Update"}}}function Ca(e,t){return new G({name:e+"Connection",fields:{count:{type:ie},offset:{type:ie},pageSize:{type:ie},first:{type:N},previous:{type:N},next:{type:N},last:{type:N},edges:{type:new D(new G({name:e+"ConnectionEdge",fields:{mode:{type:N},score:{type:oe},resource:{type:t}}}))}}})}async function Ua(e,t,n,r){let i=r.fieldName,o=i.substring(0,i.length-10),s=Gr(o,e,t);$i(r,"count")&&(s.total="accurate");let a=await n.repo.search(s);return{count:a.total,offset:s.offset||0,pageSize:s.count||ba,edges:a.entry?.map(c=>({mode:c.search?.mode,score:c.search?.score,resource:c.resource}))}}async function Pa(e,t,n,r){try{return await n.dataLoader.load({reference:`${r.fieldName}/${t.id}`})}catch(i){throw new _a(Sa(i),i)}}async function Va(e,t,n,r){let i=r.fieldName,o=i.substring(0,i.length-6),s=t.res;return s.resourceType!==o?[_t("Invalid resourceType")]:await n.repo.createResource(s)}async function $a(e,t,n,r){let i=r.fieldName,o=i.substring(0,i.length-6),s=t.res,a=t.id;return s.resourceType!==o?[_t("Invalid resourceType")]:a!==s.id?[_t("Incorrect ID")]:await n.repo.updateResource(s)}async function Ma(e,t,n,r){let i=r.fieldName,o=i.substring(0,i.length-6);await n.repo.deleteResource(o,t.id)}var Ga=e=>({Field(t,n,r,i){let o=Vi(i),s=12;if(o>s){let a=t.name.value;e.reportError(new f(`Field "${a}" exceeds max depth (depth=${o}, max=${s})`,{nodes:t}))}}});var bn=class{constructor(){this.routes=[]}add(t,n,r){let i=n.split("/").filter(o=>!!o).map(o=>o.startsWith(":")?{value:o.substring(1),param:!0}:{value:o});this.routes.push({method:t,path:i,handler:r})}find(t,n){let r=n.split("/").filter(s=>!!s),i,o=-1;for(let s of this.routes){let a=ja(s,t,r);a>o&&(i=s,o=a)}if(i)return{handler:i.handler,params:Qa(i,r)}}};function ja(e,t,n){if(t!==e.method||n.length!==e.path.length)return-1;let r=0;for(let i=0;i<n.length;i++)if(!e.path[i].param){if(n[i]!==e.path[i].value)return-1;r++}return r}function Qa(e,t){let n=Object.create(null);for(let r=0;r<t.length;r++)e.path[r].param&&(n[e.path[r].value]=t[r]);return n}async function Ja(e,t,n){let r=e.body;if(r.resourceType!=="Bundle")return[On("Not a bundle")];let i=await Hr(n,t,r);return[Ne,i]}async function Ka(e,t){let{resourceType:n}=e.params,r=e.query,i=await t.search(Ki(n,r));return[Ne,i]}async function Xa(e,t){let{resourceType:n}=e.params,r=e.body,i=await t.search(Ki(n,r));return[Ne,i]}async function za(e,t){let{resourceType:n}=e.params,r=e.body;if(r.resourceType!==n)return[On(`Incorrect resource type: expected ${n}, but found ${r.resourceType||"<EMPTY>"}`)];let i=await t.createResource(r);return[Ba,i]}async function Ha(e,t){let{resourceType:n,id:r}=e.params,i=await t.readResource(n,r);return[Ne,i]}async function Wa(e,t){let{resourceType:n,id:r}=e.params,i=await t.readHistory(n,r);return[Ne,i]}async function Za(e,t){let{resourceType:n,id:r,vid:i}=e.params,o=await t.readVersion(n,r,i);return[Ne,o]}async function ec(e,t){let{resourceType:n,id:r}=e.params,i=e.body;if(i.resourceType!==n)return[On("Incorrect resource type")];if(i.id!==r)return[On("Incorrect ID")];let o=await t.updateResource(i);return[Ne,o]}async function tc(e,t){let{resourceType:n,id:r}=e.params;return await t.deleteResource(n,r),[Ne]}async function nc(e,t){let{resourceType:n,id:r}=e.params,i=e.body,o=await t.patchResource(n,r,i);return[Ne,o]}var Ji=class{constructor(t={}){this.router=new bn;this.options=t,this.router.add("POST","",Ja),this.router.add("GET",":resourceType",Ka),this.router.add("POST",":resourceType/_search",Xa),this.router.add("POST",":resourceType",za),this.router.add("GET",":resourceType/:id",Ha),this.router.add("GET",":resourceType/:id/_history",Wa),this.router.add("GET",":resourceType/:id/_history/:vid",Za),this.router.add("PUT",":resourceType/:id",ec),this.router.add("DELETE",":resourceType/:id",tc),this.router.add("PATCH",":resourceType/:id",nc),this.router.add("POST","$graphql",Yi)}async handleRequest(t,n){let r=this.router.find(t.method,t.pathname);if(!r)return[Ya];let{handler:i,params:o}=r;t.params=o;try{return await i(t,n,this)}catch(s){return[qa(s)]}}};import{OperationOutcomeError as it,badRequest as Xi,deepClone as $e,evalFhirPath as zi,generateId as Hi,globalSchema as rc,matchesSearchRequest as ic,normalizeOperationOutcome as oc,notFound as Yr}from"@medplum/core";import{applyPatch as sc}from"rfc6902";var Jr=class{async searchOne(t){return(await this.search({...t,count:1})).entry?.[0]?.resource}async searchResources(t){return(await this.search(t)).entry?.map(r=>r.resource)??[]}},Wi=class extends Jr{constructor(){super();this.resources=new Map,this.history=new Map}async createResource(n){let r=$e(n);r.id||(r.id=Hi()),r.meta||(r.meta={}),r.meta.versionId||(r.meta.versionId=Hi()),r.meta.lastUpdated||(r.meta.lastUpdated=new Date().toISOString());let{resourceType:i,id:o}=r,s=this.resources.get(i);s||(s=new Map,this.resources.set(i,s)),s.set(o,r);let a=this.history.get(i);a||(a=new Map,this.history.set(i,a));let c=a.get(o);return c||(c=[],a.set(o,c)),c.push(r),$e(r)}updateResource(n){let r=$e(n);return r.meta&&(r.meta.versionId&&delete r.meta.versionId,r.meta.lastUpdated&&delete r.meta.lastUpdated),this.createResource(r)}async patchResource(n,r,i){let o=await this.readResource(n,r);try{let s=sc(o,i).filter(Boolean);if(s.length>0)throw new it(Xi(s.map(a=>a.message).join(`
53
+ `))}var Kn=class{constructor(t){this._errors=[],this.schema=t}reportError(t,n){let r=Array.isArray(n)?n.filter(Boolean):n;this._errors.push(new f(t,{nodes:r}))}getErrors(){return this._errors}};function Fo(e){let t=e.schema,n=t.getQueryType();if(!n)e.reportError("Query root type must be provided.",t.astNode);else if(!R(n)){var r;e.reportError(`Query root type must be Object type, it cannot be ${y(n)}.`,(r=Jn(t,F.QUERY))!==null&&r!==void 0?r:n.astNode)}let i=t.getMutationType();if(i&&!R(i)){var o;e.reportError(`Mutation root type must be Object type if provided, it cannot be ${y(i)}.`,(o=Jn(t,F.MUTATION))!==null&&o!==void 0?o:i.astNode)}let s=t.getSubscriptionType();if(s&&!R(s)){var a;e.reportError(`Subscription root type must be Object type if provided, it cannot be ${y(s)}.`,(a=Jn(t,F.SUBSCRIPTION))!==null&&a!==void 0?a:s.astNode)}}function Jn(e,t){var n;return(n=[e.astNode,...e.extensionASTNodes].flatMap(r=>{var i;return(i=r?.operationTypes)!==null&&i!==void 0?i:[]}).find(r=>r.operation===t))===null||n===void 0?void 0:n.type}function ko(e){for(let n of e.schema.getDirectives()){if(!Tt(n)){e.reportError(`Expected directive but got: ${y(n)}.`,n?.astNode);continue}ke(e,n);for(let r of n.args)if(ke(e,r),Y(r.type)||e.reportError(`The type of @${n.name}(${r.name}:) must be Input Type but got: ${y(r.type)}.`,r.astNode),Ee(r)&&r.deprecationReason!=null){var t;e.reportError(`Required argument @${n.name}(${r.name}:) cannot be deprecated.`,[Xn(r.astNode),(t=r.astNode)===null||t===void 0?void 0:t.type])}}}function ke(e,t){t.name.startsWith("__")&&e.reportError(`Name "${t.name}" must not begin with "__", which is reserved by GraphQL introspection.`,t.astNode)}function Co(e){let t=Go(e),n=e.schema.getTypeMap();for(let r of Object.values(n)){if(!Mt(r)){e.reportError(`Expected GraphQL named type but got: ${y(r)}.`,r.astNode);continue}qn(r)||ke(e,r),R(r)||_(r)?(gi(e,r),Ei(e,r)):q(r)?Vo(e,r):V(r)?$o(e,r):L(r)&&(Mo(e,r),t(r))}}function gi(e,t){let n=Object.values(t.getFields());n.length===0&&e.reportError(`Type ${t.name} must define one or more fields.`,[t.astNode,...t.extensionASTNodes]);for(let s of n){if(ke(e,s),!ge(s.type)){var r;e.reportError(`The type of ${t.name}.${s.name} must be Output Type but got: ${y(s.type)}.`,(r=s.astNode)===null||r===void 0?void 0:r.type)}for(let a of s.args){let c=a.name;if(ke(e,a),!Y(a.type)){var i;e.reportError(`The type of ${t.name}.${s.name}(${c}:) must be Input Type but got: ${y(a.type)}.`,(i=a.astNode)===null||i===void 0?void 0:i.type)}if(Ee(a)&&a.deprecationReason!=null){var o;e.reportError(`Required argument ${t.name}.${s.name}(${c}:) cannot be deprecated.`,[Xn(a.astNode),(o=a.astNode)===null||o===void 0?void 0:o.type])}}}}function Ei(e,t){let n=Object.create(null);for(let r of t.getInterfaces()){if(!_(r)){e.reportError(`Type ${y(t)} must only implement Interface types, it cannot implement ${y(r)}.`,Nt(t,r));continue}if(t===r){e.reportError(`Type ${t.name} cannot implement itself because it would create a circular reference.`,Nt(t,r));continue}if(n[r.name]){e.reportError(`Type ${t.name} can only implement ${r.name} once.`,Nt(t,r));continue}n[r.name]=!0,Po(e,t,r),Uo(e,t,r)}}function Uo(e,t,n){let r=t.getFields();for(let c of Object.values(n.getFields())){let p=c.name,l=r[p];if(!l){e.reportError(`Interface field ${n.name}.${p} expected but ${t.name} does not provide it.`,[c.astNode,t.astNode,...t.extensionASTNodes]);continue}if(!Ie(e.schema,l.type,c.type)){var i,o;e.reportError(`Interface field ${n.name}.${p} expects type ${y(c.type)} but ${t.name}.${p} is type ${y(l.type)}.`,[(i=c.astNode)===null||i===void 0?void 0:i.type,(o=l.astNode)===null||o===void 0?void 0:o.type])}for(let d of c.args){let h=d.name,T=l.args.find(E=>E.name===h);if(!T){e.reportError(`Interface field argument ${n.name}.${p}(${h}:) expected but ${t.name}.${p} does not provide it.`,[d.astNode,l.astNode]);continue}if(!Qt(d.type,T.type)){var s,a;e.reportError(`Interface field argument ${n.name}.${p}(${h}:) expects type ${y(d.type)} but ${t.name}.${p}(${h}:) is type ${y(T.type)}.`,[(s=d.astNode)===null||s===void 0?void 0:s.type,(a=T.astNode)===null||a===void 0?void 0:a.type])}}for(let d of l.args){let h=d.name;!c.args.find(E=>E.name===h)&&Ee(d)&&e.reportError(`Object field ${t.name}.${p} includes required argument ${h} that is missing from the Interface field ${n.name}.${p}.`,[d.astNode,c.astNode])}}}function Po(e,t,n){let r=t.getInterfaces();for(let 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}.`,[...Nt(n,i),...Nt(t,n)])}function Vo(e,t){let n=t.getTypes();n.length===0&&e.reportError(`Union type ${t.name} must define one or more member types.`,[t.astNode,...t.extensionASTNodes]);let r=Object.create(null);for(let i of n){if(r[i.name]){e.reportError(`Union type ${t.name} can only include type ${i.name} once.`,Ni(t,i.name));continue}r[i.name]=!0,R(i)||e.reportError(`Union type ${t.name} can only include Object types, it cannot include ${y(i)}.`,Ni(t,String(i)))}}function $o(e,t){let n=t.getValues();n.length===0&&e.reportError(`Enum type ${t.name} must define one or more values.`,[t.astNode,...t.extensionASTNodes]);for(let r of n)ke(e,r)}function Mo(e,t){let n=Object.values(t.getFields());n.length===0&&e.reportError(`Input Object type ${t.name} must define one or more fields.`,[t.astNode,...t.extensionASTNodes]);for(let o of n){if(ke(e,o),!Y(o.type)){var r;e.reportError(`The type of ${t.name}.${o.name} must be Input Type but got: ${y(o.type)}.`,(r=o.astNode)===null||r===void 0?void 0:r.type)}if(He(o)&&o.deprecationReason!=null){var i;e.reportError(`Required input field ${t.name}.${o.name} cannot be deprecated.`,[Xn(o.astNode),(i=o.astNode)===null||i===void 0?void 0:i.type])}}}function Go(e){let 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;let s=Object.values(o.getFields());for(let a of s)if(b(a.type)&&L(a.type.ofType)){let c=a.type.ofType,p=r[c.name];if(n.push(a),p===void 0)i(c);else{let l=n.slice(p),d=l.map(h=>h.name).join(".");e.reportError(`Cannot reference Input Object "${c.name}" within itself through a series of non-null fields: "${d}".`,l.map(h=>h.astNode))}n.pop()}r[o.name]=void 0}}function Nt(e,t){let{astNode:n,extensionASTNodes:r}=e;return(n!=null?[n,...r]:r).flatMap(o=>{var s;return(s=o.interfaces)!==null&&s!==void 0?s:[]}).filter(o=>o.name.value===t.name)}function Ni(e,t){let{astNode:n,extensionASTNodes:r}=e;return(n!=null?[n,...r]:r).flatMap(o=>{var s;return(s=o.types)!==null&&s!==void 0?s:[]}).filter(o=>o.name.value===t)}function Xn(e){var t;return e==null||(t=e.directives)===null||t===void 0?void 0:t.find(n=>n.name.value===Jt.name)}function U(e,t){switch(t.kind){case u.LIST_TYPE:{let n=U(e,t.type);return n&&new D(n)}case u.NON_NULL_TYPE:{let n=U(e,t.type);return n&&new I(n)}case u.NAMED_TYPE:return e.getType(t.name.value)}}var et=class{constructor(t,n,r){this._schema=t,this._typeStack=[],this._parentTypeStack=[],this._inputTypeStack=[],this._fieldDefStack=[],this._defaultValueStack=[],this._directive=null,this._argument=null,this._enumValue=null,this._getFieldDef=r??jo,n&&(Y(n)&&this._inputTypeStack.push(n),re(n)&&this._parentTypeStack.push(n),ge(n)&&this._typeStack.push(n))}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(t){let n=this._schema;switch(t.kind){case u.SELECTION_SET:{let i=B(this.getType());this._parentTypeStack.push(re(i)?i:void 0);break}case u.FIELD:{let i=this.getParentType(),o,s;i&&(o=this._getFieldDef(n,i,t),o&&(s=o.type)),this._fieldDefStack.push(o),this._typeStack.push(ge(s)?s:void 0);break}case u.DIRECTIVE:this._directive=n.getDirective(t.name.value);break;case u.OPERATION_DEFINITION:{let i=n.getRootType(t.operation);this._typeStack.push(R(i)?i:void 0);break}case u.INLINE_FRAGMENT:case u.FRAGMENT_DEFINITION:{let i=t.typeCondition,o=i?U(n,i):B(this.getType());this._typeStack.push(ge(o)?o:void 0);break}case u.VARIABLE_DEFINITION:{let i=U(n,t.type);this._inputTypeStack.push(Y(i)?i:void 0);break}case u.ARGUMENT:{var r;let i,o,s=(r=this.getDirective())!==null&&r!==void 0?r:this.getFieldDef();s&&(i=s.args.find(a=>a.name===t.name.value),i&&(o=i.type)),this._argument=i,this._defaultValueStack.push(i?i.defaultValue:void 0),this._inputTypeStack.push(Y(o)?o:void 0);break}case u.LIST:{let i=ze(this.getInputType()),o=A(i)?i.ofType:i;this._defaultValueStack.push(void 0),this._inputTypeStack.push(Y(o)?o:void 0);break}case u.OBJECT_FIELD:{let i=B(this.getInputType()),o,s;L(i)&&(s=i.getFields()[t.name.value],s&&(o=s.type)),this._defaultValueStack.push(s?s.defaultValue:void 0),this._inputTypeStack.push(Y(o)?o:void 0);break}case u.ENUM:{let i=B(this.getInputType()),o;V(i)&&(o=i.getValue(t.value)),this._enumValue=o;break}default:}}leave(t){switch(t.kind){case u.SELECTION_SET:this._parentTypeStack.pop();break;case u.FIELD:this._fieldDefStack.pop(),this._typeStack.pop();break;case u.DIRECTIVE:this._directive=null;break;case u.OPERATION_DEFINITION:case u.INLINE_FRAGMENT:case u.FRAGMENT_DEFINITION:this._typeStack.pop();break;case u.VARIABLE_DEFINITION:this._inputTypeStack.pop();break;case u.ARGUMENT:this._argument=null,this._defaultValueStack.pop(),this._inputTypeStack.pop();break;case u.LIST:case u.OBJECT_FIELD:this._defaultValueStack.pop(),this._inputTypeStack.pop();break;case u.ENUM:this._enumValue=null;break;default:}}};function jo(e,t,n){let r=n.name.value;if(r===Ae.name&&e.getQueryType()===t)return Ae;if(r===De.name&&e.getQueryType()===t)return De;if(r===we.name&&re(t))return we;if(R(t)||_(t))return t.getFields()[r]}function zt(e,t){return{enter(...n){let r=n[0];e.enter(r);let i=Je(t,r.kind).enter;if(i){let o=i.apply(t,n);return o!==void 0&&(e.leave(r),st(o)&&e.enter(o)),o}},leave(...n){let r=n[0],i=Je(t,r.kind).leave,o;return i&&(o=i.apply(t,n)),e.leave(r),o}}}function zn(e){return e.kind===u.OPERATION_DEFINITION||e.kind===u.FRAGMENT_DEFINITION}function Hn(e){return e.kind===u.SCHEMA_DEFINITION||Oe(e)||e.kind===u.DIRECTIVE_DEFINITION}function Oe(e){return e.kind===u.SCALAR_TYPE_DEFINITION||e.kind===u.OBJECT_TYPE_DEFINITION||e.kind===u.INTERFACE_TYPE_DEFINITION||e.kind===u.UNION_TYPE_DEFINITION||e.kind===u.ENUM_TYPE_DEFINITION||e.kind===u.INPUT_OBJECT_TYPE_DEFINITION}function Wn(e){return e.kind===u.SCHEMA_EXTENSION||Ht(e)}function Ht(e){return e.kind===u.SCALAR_TYPE_EXTENSION||e.kind===u.OBJECT_TYPE_EXTENSION||e.kind===u.INTERFACE_TYPE_EXTENSION||e.kind===u.UNION_TYPE_EXTENSION||e.kind===u.ENUM_TYPE_EXTENSION||e.kind===u.INPUT_OBJECT_TYPE_EXTENSION}function Zn(e){return{Document(t){for(let n of t.definitions)if(!zn(n)){let r=n.kind===u.SCHEMA_DEFINITION||n.kind===u.SCHEMA_EXTENSION?"schema":'"'+n.name.value+'"';e.reportError(new f(`The ${r} definition is not executable.`,{nodes:n}))}return!1}}}function er(e){return{Field(t){let n=e.getParentType();if(n&&!e.getFieldDef()){let i=e.getSchema(),o=t.name.value,s=K("to use an inline fragment on",Qo(i,n,o));s===""&&(s=K(Bo(n,o))),e.reportError(new f(`Cannot query field "${o}" on type "${n.name}".`+s,{nodes:t}))}}}}function Qo(e,t,n){if(!W(t))return[];let r=new Set,i=Object.create(null);for(let s of e.getPossibleTypes(t))if(s.getFields()[n]){r.add(s),i[s.name]=1;for(let a of s.getInterfaces()){var o;a.getFields()[n]&&(r.add(a),i[a.name]=((o=i[a.name])!==null&&o!==void 0?o:0)+1)}}return[...r].sort((s,a)=>{let c=i[a.name]-i[s.name];return c!==0?c:_(s)&&e.isSubType(s,a)?-1:_(a)&&e.isSubType(a,s)?1:qe(s.name,a.name)}).map(s=>s.name)}function Bo(e,t){if(R(e)||_(e)){let n=Object.keys(e.getFields());return z(t,n)}return[]}function tr(e){return{InlineFragment(t){let n=t.typeCondition;if(n){let r=U(e.getSchema(),n);if(r&&!re(r)){let i=x(n);e.reportError(new f(`Fragment cannot condition on non composite type "${i}".`,{nodes:n}))}}},FragmentDefinition(t){let n=U(e.getSchema(),t.typeCondition);if(n&&!re(n)){let r=x(t.typeCondition);e.reportError(new f(`Fragment "${t.name.value}" cannot condition on non composite type "${r}".`,{nodes:t.typeCondition}))}}}}function nr(e){return{...rr(e),Argument(t){let n=e.getArgument(),r=e.getFieldDef(),i=e.getParentType();if(!n&&r&&i){let o=t.name.value,s=r.args.map(c=>c.name),a=z(o,s);e.reportError(new f(`Unknown argument "${o}" on field "${i.name}.${r.name}".`+K(a),{nodes:t}))}}}}function rr(e){let t=Object.create(null),n=e.getSchema(),r=n?n.getDirectives():de;for(let s of r)t[s.name]=s.args.map(a=>a.name);let i=e.getDocument().definitions;for(let s of i)if(s.kind===u.DIRECTIVE_DEFINITION){var o;let a=(o=s.arguments)!==null&&o!==void 0?o:[];t[s.name.value]=a.map(c=>c.name.value)}return{Directive(s){let a=s.name.value,c=t[a];if(s.arguments&&c)for(let p of s.arguments){let l=p.name.value;if(!c.includes(l)){let d=z(l,c);e.reportError(new f(`Unknown argument "${l}" on directive "@${a}".`+K(d),{nodes:p}))}}return!1}}}function Wt(e){let t=Object.create(null),n=e.getSchema(),r=n?n.getDirectives():de;for(let o of r)t[o.name]=o.locations;let i=e.getDocument().definitions;for(let o of i)o.kind===u.DIRECTIVE_DEFINITION&&(t[o.name.value]=o.locations.map(s=>s.value));return{Directive(o,s,a,c,p){let l=o.name.value,d=t[l];if(!d){e.reportError(new f(`Unknown directive "@${l}".`,{nodes:o}));return}let h=qo(p);h&&!d.includes(h)&&e.reportError(new f(`Directive "@${l}" may not be used on ${h}.`,{nodes:o}))}}}function qo(e){let t=e[e.length-1];switch("kind"in t||k(!1),t.kind){case u.OPERATION_DEFINITION:return Yo(t.operation);case u.FIELD:return v.FIELD;case u.FRAGMENT_SPREAD:return v.FRAGMENT_SPREAD;case u.INLINE_FRAGMENT:return v.INLINE_FRAGMENT;case u.FRAGMENT_DEFINITION:return v.FRAGMENT_DEFINITION;case u.VARIABLE_DEFINITION:return v.VARIABLE_DEFINITION;case u.SCHEMA_DEFINITION:case u.SCHEMA_EXTENSION:return v.SCHEMA;case u.SCALAR_TYPE_DEFINITION:case u.SCALAR_TYPE_EXTENSION:return v.SCALAR;case u.OBJECT_TYPE_DEFINITION:case u.OBJECT_TYPE_EXTENSION:return v.OBJECT;case u.FIELD_DEFINITION:return v.FIELD_DEFINITION;case u.INTERFACE_TYPE_DEFINITION:case u.INTERFACE_TYPE_EXTENSION:return v.INTERFACE;case u.UNION_TYPE_DEFINITION:case u.UNION_TYPE_EXTENSION:return v.UNION;case u.ENUM_TYPE_DEFINITION:case u.ENUM_TYPE_EXTENSION:return v.ENUM;case u.ENUM_VALUE_DEFINITION:return v.ENUM_VALUE;case u.INPUT_OBJECT_TYPE_DEFINITION:case u.INPUT_OBJECT_TYPE_EXTENSION:return v.INPUT_OBJECT;case u.INPUT_VALUE_DEFINITION:{let n=e[e.length-3];return"kind"in n||k(!1),n.kind===u.INPUT_OBJECT_TYPE_DEFINITION?v.INPUT_FIELD_DEFINITION:v.ARGUMENT_DEFINITION}default:k(!1,"Unexpected kind: "+y(t.kind))}}function Yo(e){switch(e){case F.QUERY:return v.QUERY;case F.MUTATION:return v.MUTATION;case F.SUBSCRIPTION:return v.SUBSCRIPTION}}function ir(e){return{FragmentSpread(t){let n=t.name.value;e.getFragment(n)||e.reportError(new f(`Unknown fragment "${n}".`,{nodes:t.name}))}}}function Zt(e){let t=e.getSchema(),n=t?t.getTypeMap():Object.create(null),r=Object.create(null);for(let o of e.getDocument().definitions)Oe(o)&&(r[o.name.value]=!0);let i=[...Object.keys(n),...Object.keys(r)];return{NamedType(o,s,a,c,p){let l=o.name.value;if(!n[l]&&!r[l]){var d;let h=(d=p[2])!==null&&d!==void 0?d:a,T=h!=null&&Jo(h);if(T&&Ii.includes(l))return;let E=z(l,T?Ii.concat(i):i);e.reportError(new f(`Unknown type "${l}".`+K(E),{nodes:o}))}}}}var Ii=[...Bt,...Kt].map(e=>e.name);function Jo(e){return"kind"in e&&(Hn(e)||Wn(e))}function or(e){let t=0;return{Document(n){t=n.definitions.filter(r=>r.kind===u.OPERATION_DEFINITION).length},OperationDefinition(n){!n.name&&t>1&&e.reportError(new f("This anonymous operation must be the only defined operation.",{nodes:n}))}}}function sr(e){var t,n,r;let i=e.getSchema(),o=(t=(n=(r=i?.astNode)!==null&&r!==void 0?r:i?.getQueryType())!==null&&n!==void 0?n:i?.getMutationType())!==null&&t!==void 0?t:i?.getSubscriptionType(),s=0;return{SchemaDefinition(a){if(o){e.reportError(new f("Cannot define a new schema within a schema extension.",{nodes:a}));return}s>0&&e.reportError(new f("Must provide only one schema definition.",{nodes:a})),++s}}}function ar(e){let t=Object.create(null),n=[],r=Object.create(null);return{OperationDefinition:()=>!1,FragmentDefinition(o){return i(o),!1}};function i(o){if(t[o.name.value])return;let s=o.name.value;t[s]=!0;let a=e.getFragmentSpreads(o.selectionSet);if(a.length!==0){r[s]=n.length;for(let c of a){let p=c.name.value,l=r[p];if(n.push(c),l===void 0){let d=e.getFragment(p);d&&i(d)}else{let d=n.slice(l),h=d.slice(0,-1).map(T=>'"'+T.name.value+'"').join(", ");e.reportError(new f(`Cannot spread fragment "${p}" within itself`+(h!==""?` via ${h}.`:"."),{nodes:d}))}n.pop()}r[s]=void 0}}}function cr(e){let t=Object.create(null);return{OperationDefinition:{enter(){t=Object.create(null)},leave(n){let r=e.getRecursiveVariableUsages(n);for(let{node:i}of r){let o=i.name.value;t[o]!==!0&&e.reportError(new f(n.name?`Variable "$${o}" is not defined by operation "${n.name.value}".`:`Variable "$${o}" is not defined.`,{nodes:[i,n]}))}}},VariableDefinition(n){t[n.variable.name.value]=!0}}}function ur(e){let t=[],n=[];return{OperationDefinition(r){return t.push(r),!1},FragmentDefinition(r){return n.push(r),!1},Document:{leave(){let r=Object.create(null);for(let i of t)for(let o of e.getRecursivelyReferencedFragments(i))r[o.name.value]=!0;for(let i of n){let o=i.name.value;r[o]!==!0&&e.reportError(new f(`Fragment "${o}" is never used.`,{nodes:i}))}}}}}function pr(e){let t=[];return{OperationDefinition:{enter(){t=[]},leave(n){let r=Object.create(null),i=e.getRecursiveVariableUsages(n);for(let{node:o}of i)r[o.name.value]=!0;for(let o of t){let s=o.variable.name.value;r[s]!==!0&&e.reportError(new f(n.name?`Variable "$${s}" is never used in operation "${n.name.value}".`:`Variable "$${s}" is never used.`,{nodes:o}))}}},VariableDefinition(n){t.push(n)}}}function en(e){switch(e.kind){case u.OBJECT:return{...e,fields:Ko(e.fields)};case u.LIST:return{...e,values:e.values.map(en)};case u.INT:case u.FLOAT:case u.STRING:case u.BOOLEAN:case u.NULL:case u.ENUM:case u.VARIABLE:return e}}function Ko(e){return e.map(t=>({...t,value:en(t.value)})).sort((t,n)=>qe(t.name.value,n.name.value))}function Oi(e){return Array.isArray(e)?e.map(([t,n])=>`subfields "${t}" conflict because `+Oi(n)).join(" and "):e}function mr(e){let t=new dr,n=new Map;return{SelectionSet(r){let i=Xo(e,n,t,e.getParentType(),r);for(let[[o,s],a,c]of i){let p=Oi(s);e.reportError(new f(`Fields "${o}" conflict because ${p}. Use different aliases on the fields to fetch both if this was intentional.`,{nodes:a.concat(c)}))}}}}function Xo(e,t,n,r,i){let o=[],[s,a]=rn(e,t,r,i);if(Ho(e,o,t,n,s),a.length!==0)for(let c=0;c<a.length;c++){tn(e,o,t,n,!1,s,a[c]);for(let p=c+1;p<a.length;p++)nn(e,o,t,n,!1,a[c],a[p])}return o}function tn(e,t,n,r,i,o,s){let a=e.getFragment(s);if(!a)return;let[c,p]=fr(e,n,a);if(o!==c){hr(e,t,n,r,i,o,c);for(let l of p)r.has(l,s,i)||(r.add(l,s,i),tn(e,t,n,r,i,o,l))}}function nn(e,t,n,r,i,o,s){if(o===s||r.has(o,s,i))return;r.add(o,s,i);let a=e.getFragment(o),c=e.getFragment(s);if(!a||!c)return;let[p,l]=fr(e,n,a),[d,h]=fr(e,n,c);hr(e,t,n,r,i,p,d);for(let T of h)nn(e,t,n,r,i,o,T);for(let T of l)nn(e,t,n,r,i,T,s)}function zo(e,t,n,r,i,o,s,a){let c=[],[p,l]=rn(e,t,i,o),[d,h]=rn(e,t,s,a);hr(e,c,t,n,r,p,d);for(let T of h)tn(e,c,t,n,r,p,T);for(let T of l)tn(e,c,t,n,r,d,T);for(let T of l)for(let E of h)nn(e,c,t,n,r,T,E);return c}function Ho(e,t,n,r,i){for(let[o,s]of Object.entries(i))if(s.length>1)for(let a=0;a<s.length;a++)for(let c=a+1;c<s.length;c++){let p=Ri(e,n,r,!1,o,s[a],s[c]);p&&t.push(p)}}function hr(e,t,n,r,i,o,s){for(let[a,c]of Object.entries(o)){let p=s[a];if(p)for(let l of c)for(let d of p){let h=Ri(e,n,r,i,a,l,d);h&&t.push(h)}}}function Ri(e,t,n,r,i,o,s){let[a,c,p]=o,[l,d,h]=s,T=r||a!==l&&R(a)&&R(l);if(!T){let Re=c.name.value,ae=d.name.value;if(Re!==ae)return[[i,`"${Re}" and "${ae}" are different fields`],[c],[d]];if(!Wo(c,d))return[[i,"they have differing arguments"],[c],[d]]}let E=p?.type,w=h?.type;if(E&&w&&lr(E,w))return[[i,`they return conflicting types "${y(E)}" and "${y(w)}"`],[c],[d]];let $=c.selectionSet,Z=d.selectionSet;if($&&Z){let Re=zo(e,t,n,T,B(E),$,B(w),Z);return Zo(Re,i,c,d)}}function Wo(e,t){let n=e.arguments,r=t.arguments;if(n===void 0||n.length===0)return r===void 0||r.length===0;if(r===void 0||r.length===0||n.length!==r.length)return!1;let i=new Map(r.map(({name:o,value:s})=>[o.value,s]));return n.every(o=>{let s=o.value,a=i.get(o.name.value);return a===void 0?!1:bi(s)===bi(a)})}function bi(e){return x(en(e))}function lr(e,t){return A(e)?A(t)?lr(e.ofType,t.ofType):!0:A(t)?!0:b(e)?b(t)?lr(e.ofType,t.ofType):!0:b(t)?!0:J(e)||J(t)?e!==t:!1}function rn(e,t,n,r){let i=t.get(r);if(i)return i;let o=Object.create(null),s=Object.create(null);Si(e,n,r,o,s);let a=[o,Object.keys(s)];return t.set(r,a),a}function fr(e,t,n){let r=t.get(n.selectionSet);if(r)return r;let i=U(e.getSchema(),n.typeCondition);return rn(e,t,i,n.selectionSet)}function Si(e,t,n,r,i){for(let o of n.selections)switch(o.kind){case u.FIELD:{let s=o.name.value,a;(R(t)||_(t))&&(a=t.getFields()[s]);let c=o.alias?o.alias.value:s;r[c]||(r[c]=[]),r[c].push([t,o,a]);break}case u.FRAGMENT_SPREAD:i[o.name.value]=!0;break;case u.INLINE_FRAGMENT:{let s=o.typeCondition,a=s?U(e.getSchema(),s):t;Si(e,a,o.selectionSet,r,i);break}}}function Zo(e,t,n,r){if(e.length>0)return[[t,e.map(([i])=>i)],[n,...e.map(([,i])=>i).flat()],[r,...e.map(([,,i])=>i).flat()]]}var dr=class{constructor(){this._data=new Map}has(t,n,r){var i;let[o,s]=t<n?[t,n]:[n,t],a=(i=this._data.get(o))===null||i===void 0?void 0:i.get(s);return a===void 0?!1:r?!0:r===a}add(t,n,r){let[i,o]=t<n?[t,n]:[n,t],s=this._data.get(i);s===void 0?this._data.set(i,new Map([[o,r]])):s.set(o,r)}};function yr(e){return{InlineFragment(t){let n=e.getType(),r=e.getParentType();if(re(n)&&re(r)&&!$n(e.getSchema(),n,r)){let i=y(r),o=y(n);e.reportError(new f(`Fragment cannot be spread here as objects of type "${i}" can never be of type "${o}".`,{nodes:t}))}},FragmentSpread(t){let n=t.name.value,r=es(e,n),i=e.getParentType();if(r&&i&&!$n(e.getSchema(),r,i)){let o=y(i),s=y(r);e.reportError(new f(`Fragment "${n}" cannot be spread here as objects of type "${o}" can never be of type "${s}".`,{nodes:t}))}}}}function es(e,t){let n=e.getFragment(t);if(n){let r=U(e.getSchema(),n.typeCondition);if(re(r))return r}}function Tr(e){let t=e.getSchema(),n=Object.create(null);for(let i of e.getDocument().definitions)Oe(i)&&(n[i.name.value]=i);return{ScalarTypeExtension:r,ObjectTypeExtension:r,InterfaceTypeExtension:r,UnionTypeExtension:r,EnumTypeExtension:r,InputObjectTypeExtension:r};function r(i){let o=i.name.value,s=n[o],a=t?.getType(o),c;if(s?c=ts[s.kind]:a&&(c=ns(a)),c){if(c!==i.kind){let p=rs(i.kind);e.reportError(new f(`Cannot extend non-${p} type "${o}".`,{nodes:s?[s,i]:i}))}}else{let p=Object.keys({...n,...t?.getTypeMap()}),l=z(o,p);e.reportError(new f(`Cannot extend type "${o}" because it is not defined.`+K(l),{nodes:i.name}))}}}var ts={[u.SCALAR_TYPE_DEFINITION]:u.SCALAR_TYPE_EXTENSION,[u.OBJECT_TYPE_DEFINITION]:u.OBJECT_TYPE_EXTENSION,[u.INTERFACE_TYPE_DEFINITION]:u.INTERFACE_TYPE_EXTENSION,[u.UNION_TYPE_DEFINITION]:u.UNION_TYPE_EXTENSION,[u.ENUM_TYPE_DEFINITION]:u.ENUM_TYPE_EXTENSION,[u.INPUT_OBJECT_TYPE_DEFINITION]:u.INPUT_OBJECT_TYPE_EXTENSION};function ns(e){if(le(e))return u.SCALAR_TYPE_EXTENSION;if(R(e))return u.OBJECT_TYPE_EXTENSION;if(_(e))return u.INTERFACE_TYPE_EXTENSION;if(q(e))return u.UNION_TYPE_EXTENSION;if(V(e))return u.ENUM_TYPE_EXTENSION;if(L(e))return u.INPUT_OBJECT_TYPE_EXTENSION;k(!1,"Unexpected type: "+y(e))}function rs(e){switch(e){case u.SCALAR_TYPE_EXTENSION:return"scalar";case u.OBJECT_TYPE_EXTENSION:return"object";case u.INTERFACE_TYPE_EXTENSION:return"interface";case u.UNION_TYPE_EXTENSION:return"union";case u.ENUM_TYPE_EXTENSION:return"enum";case u.INPUT_OBJECT_TYPE_EXTENSION:return"input object";default:k(!1,"Unexpected kind: "+y(e))}}function gr(e){return{...Er(e),Field:{leave(t){var n;let r=e.getFieldDef();if(!r)return!1;let i=new Set((n=t.arguments)===null||n===void 0?void 0:n.map(o=>o.name.value));for(let o of r.args)if(!i.has(o.name)&&Ee(o)){let s=y(o.type);e.reportError(new f(`Field "${r.name}" argument "${o.name}" of type "${s}" is required, but it was not provided.`,{nodes:t}))}}}}}function Er(e){var t;let n=Object.create(null),r=e.getSchema(),i=(t=r?.getDirectives())!==null&&t!==void 0?t:de;for(let a of i)n[a.name]=ce(a.args.filter(Ee),c=>c.name);let o=e.getDocument().definitions;for(let a of o)if(a.kind===u.DIRECTIVE_DEFINITION){var s;let c=(s=a.arguments)!==null&&s!==void 0?s:[];n[a.name.value]=ce(c.filter(is),p=>p.name.value)}return{Directive:{leave(a){let c=a.name.value,p=n[c];if(p){var l;let d=(l=a.arguments)!==null&&l!==void 0?l:[],h=new Set(d.map(T=>T.name.value));for(let[T,E]of Object.entries(p))if(!h.has(T)){let w=Xe(E.type)?y(E.type):x(E.type);e.reportError(new f(`Directive "@${c}" argument "${T}" of type "${w}" is required, but it was not provided.`,{nodes:a}))}}}}}}function is(e){return e.type.kind===u.NON_NULL_TYPE&&e.defaultValue==null}function Nr(e){return{Field(t){let n=e.getType(),r=t.selectionSet;if(n){if(J(B(n))){if(r){let i=t.name.value,o=y(n);e.reportError(new f(`Field "${i}" must not have a selection since type "${o}" has no subfields.`,{nodes:r}))}}else if(!r){let i=t.name.value,o=y(n);e.reportError(new f(`Field "${i}" of type "${o}" must have a selection of subfields. Did you mean "${i} { ... }"?`,{nodes:t}))}}}}}function on(e){return e.map(t=>typeof t=="number"?"["+t.toString()+"]":"."+t).join("")}function Ce(e,t,n){return{prev:e,key:t,typename:n}}function te(e){let t=[],n=e;for(;n;)t.push(n.key),n=n.prev;return t.reverse()}function _i(e,t,n=os){return It(e,t,n,void 0)}function os(e,t,n){let r="Invalid value "+y(t);throw e.length>0&&(r+=` at "value${on(e)}"`),n.message=r+": "+n.message,n}function It(e,t,n,r){if(b(t)){if(e!=null)return It(e,t.ofType,n,r);n(te(r),e,new f(`Expected non-nullable type "${y(t)}" not to be null.`));return}if(e==null)return null;if(A(t)){let i=t.ofType;return We(e)?Array.from(e,(o,s)=>{let a=Ce(r,s,void 0);return It(o,i,n,a)}):[It(e,i,n,r)]}if(L(t)){if(!M(e)){n(te(r),e,new f(`Expected type "${t.name}" to be an object.`));return}let i={},o=t.getFields();for(let s of Object.values(o)){let a=e[s.name];if(a===void 0){if(s.defaultValue!==void 0)i[s.name]=s.defaultValue;else if(b(s.type)){let c=y(s.type);n(te(r),e,new f(`Field "${s.name}" of required type "${c}" was not provided.`))}continue}i[s.name]=It(a,s.type,n,Ce(r,s.name,t.name))}for(let s of Object.keys(e))if(!o[s]){let a=z(s,Object.keys(t.getFields()));n(te(r),e,new f(`Field "${s}" is not defined by type "${t.name}".`+K(a)))}return i}if(J(t)){let i;try{i=t.parseValue(e)}catch(o){o instanceof f?n(te(r),e,o):n(te(r),e,new f(`Expected type "${t.name}". `+o.message,{originalError:o}));return}return i===void 0&&n(te(r),e,new f(`Expected type "${t.name}".`)),i}k(!1,"Unexpected input type: "+y(t))}function Ue(e,t,n){if(e){if(e.kind===u.VARIABLE){let r=e.name.value;if(n==null||n[r]===void 0)return;let i=n[r];return i===null&&b(t)?void 0:i}if(b(t))return e.kind===u.NULL?void 0:Ue(e,t.ofType,n);if(e.kind===u.NULL)return null;if(A(t)){let r=t.ofType;if(e.kind===u.LIST){let o=[];for(let s of e.values)if(xi(s,n)){if(b(r))return;o.push(null)}else{let a=Ue(s,r,n);if(a===void 0)return;o.push(a)}return o}let i=Ue(e,r,n);return i===void 0?void 0:[i]}if(L(t)){if(e.kind!==u.OBJECT)return;let r=Object.create(null),i=ce(e.fields,o=>o.name.value);for(let o of Object.values(t.getFields())){let s=i[o.name];if(!s||xi(s.value,n)){if(o.defaultValue!==void 0)r[o.name]=o.defaultValue;else if(b(o.type))return;continue}let a=Ue(s.value,o.type,n);if(a===void 0)return;r[o.name]=a}return r}if(J(t)){let r;try{r=t.parseLiteral(e,n)}catch{return}return r===void 0?void 0:r}k(!1,"Unexpected input type: "+y(t))}}function xi(e,t){return e.kind===u.VARIABLE&&(t==null||t[e.name.value]===void 0)}function vr(e,t,n,r){let i=[],o=r?.maxErrors;try{let s=ss(e,t,n,a=>{if(o!=null&&i.length>=o)throw new f("Too many errors processing variables, error limit reached. Execution aborted.");i.push(a)});if(i.length===0)return{coerced:s}}catch(s){i.push(s)}return{errors:i}}function ss(e,t,n,r){let i={};for(let o of t){let s=o.variable.name.value,a=U(e,o.type);if(!Y(a)){let p=x(o.type);r(new f(`Variable "$${s}" expected value of type "${p}" which cannot be used as an input type.`,{nodes:o.type}));continue}if(!Li(n,s)){if(o.defaultValue)i[s]=Ue(o.defaultValue,a);else if(b(a)){let p=y(a);r(new f(`Variable "$${s}" of required type "${p}" was not provided.`,{nodes:o}))}continue}let c=n[s];if(c===null&&b(a)){let p=y(a);r(new f(`Variable "$${s}" of non-null type "${p}" must not be null.`,{nodes:o}));continue}i[s]=_i(c,a,(p,l,d)=>{let h=`Variable "$${s}" got invalid value `+y(l);p.length>0&&(h+=` at "${s}${on(p)}"`),r(new f(h+"; "+d.message,{nodes:o,originalError:d}))})}return i}function sn(e,t,n){var r;let i={},o=(r=t.arguments)!==null&&r!==void 0?r:[],s=ce(o,a=>a.name.value);for(let a of e.args){let c=a.name,p=a.type,l=s[c];if(!l){if(a.defaultValue!==void 0)i[c]=a.defaultValue;else if(b(p))throw new f(`Argument "${c}" of required type "${y(p)}" was not provided.`,{nodes:t});continue}let d=l.value,h=d.kind===u.NULL;if(d.kind===u.VARIABLE){let E=d.name.value;if(n==null||!Li(n,E)){if(a.defaultValue!==void 0)i[c]=a.defaultValue;else if(b(p))throw new f(`Argument "${c}" of required type "${y(p)}" was provided the variable "$${E}" which was not provided a runtime value.`,{nodes:d});continue}h=n[E]==null}if(h&&b(p))throw new f(`Argument "${c}" of non-null type "${y(p)}" must not be null.`,{nodes:d});let T=Ue(d,p,n);if(T===void 0)throw new f(`Argument "${c}" has invalid value ${x(d)}.`,{nodes:d});i[c]=T}return i}function an(e,t,n){var r;let i=(r=t.directives)===null||r===void 0?void 0:r.find(o=>o.name.value===e.name);if(i)return sn(e,i,n)}function Li(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function un(e,t,n,r,i){let o=new Map;return cn(e,t,n,r,i,o,new Set),o}function Di(e,t,n,r,i){let o=new Map,s=new Set;for(let a of i)a.selectionSet&&cn(e,t,n,r,a.selectionSet,o,s);return o}function cn(e,t,n,r,i,o,s){for(let a of i.selections)switch(a.kind){case u.FIELD:{if(!Ir(n,a))continue;let c=as(a),p=o.get(c);p!==void 0?p.push(a):o.set(c,[a]);break}case u.INLINE_FRAGMENT:{if(!Ir(n,a)||!Ai(e,a,r))continue;cn(e,t,n,r,a.selectionSet,o,s);break}case u.FRAGMENT_SPREAD:{let c=a.name.value;if(s.has(c)||!Ir(n,a))continue;s.add(c);let p=t[c];if(!p||!Ai(e,p,r))continue;cn(e,t,n,r,p.selectionSet,o,s);break}}}function Ir(e,t){let n=an(Yt,t,e);if(n?.if===!0)return!1;let r=an(qt,t,e);return r?.if!==!1}function Ai(e,t,n){let r=t.typeCondition;if(!r)return!0;let i=U(e,r);return i===n?!0:W(i)?e.isSubType(i,n):!1}function as(e){return e.alias?e.alias.value:e.name.value}function br(e){return{OperationDefinition(t){if(t.operation==="subscription"){let n=e.getSchema(),r=n.getSubscriptionType();if(r){let i=t.name?t.name.value:null,o=Object.create(null),s=e.getDocument(),a=Object.create(null);for(let p of s.definitions)p.kind===u.FRAGMENT_DEFINITION&&(a[p.name.value]=p);let c=un(n,a,o,r,t.selectionSet);if(c.size>1){let d=[...c.values()].slice(1).flat();e.reportError(new f(i!=null?`Subscription "${i}" must select only one top level field.`:"Anonymous Subscription must select only one top level field.",{nodes:d}))}for(let p of c.values())p[0].name.value.startsWith("__")&&e.reportError(new f(i!=null?`Subscription "${i}" must not select an introspection top level field.`:"Anonymous Subscription must not select an introspection top level field.",{nodes:p}))}}}}}function tt(e,t){let n=new Map;for(let r of e){let i=t(r),o=n.get(i);o===void 0?n.set(i,[r]):o.push(r)}return n}function Or(e){return{DirectiveDefinition(r){var i;let o=(i=r.arguments)!==null&&i!==void 0?i:[];return n(`@${r.name.value}`,o)},InterfaceTypeDefinition:t,InterfaceTypeExtension:t,ObjectTypeDefinition:t,ObjectTypeExtension:t};function t(r){var i;let o=r.name.value,s=(i=r.fields)!==null&&i!==void 0?i:[];for(let c of s){var a;let p=c.name.value,l=(a=c.arguments)!==null&&a!==void 0?a:[];n(`${o}.${p}`,l)}return!1}function n(r,i){let o=tt(i,s=>s.name.value);for(let[s,a]of o)a.length>1&&e.reportError(new f(`Argument "${r}(${s}:)" can only be defined once.`,{nodes:a.map(c=>c.name)}));return!1}}function pn(e){return{Field:t,Directive:t};function t(n){var r;let i=(r=n.arguments)!==null&&r!==void 0?r:[],o=tt(i,s=>s.name.value);for(let[s,a]of o)a.length>1&&e.reportError(new f(`There can be only one argument named "${s}".`,{nodes:a.map(c=>c.name)}))}}function Rr(e){let t=Object.create(null),n=e.getSchema();return{DirectiveDefinition(r){let i=r.name.value;if(n!=null&&n.getDirective(i)){e.reportError(new f(`Directive "@${i}" already exists in the schema. It cannot be redefined.`,{nodes:r.name}));return}return t[i]?e.reportError(new f(`There can be only one directive named "@${i}".`,{nodes:[t[i],r.name]})):t[i]=r.name,!1}}}function ln(e){let t=Object.create(null),n=e.getSchema(),r=n?n.getDirectives():de;for(let a of r)t[a.name]=!a.isRepeatable;let i=e.getDocument().definitions;for(let a of i)a.kind===u.DIRECTIVE_DEFINITION&&(t[a.name.value]=!a.repeatable);let o=Object.create(null),s=Object.create(null);return{enter(a){if(!("directives"in a)||!a.directives)return;let c;if(a.kind===u.SCHEMA_DEFINITION||a.kind===u.SCHEMA_EXTENSION)c=o;else if(Oe(a)||Ht(a)){let p=a.name.value;c=s[p],c===void 0&&(s[p]=c=Object.create(null))}else c=Object.create(null);for(let p of a.directives){let l=p.name.value;t[l]&&(c[l]?e.reportError(new f(`The directive "@${l}" can only be used once at this location.`,{nodes:[c[l],p]})):c[l]=p)}}}}function Sr(e){let t=e.getSchema(),n=t?t.getTypeMap():Object.create(null),r=Object.create(null);return{EnumTypeDefinition:i,EnumTypeExtension:i};function i(o){var s;let a=o.name.value;r[a]||(r[a]=Object.create(null));let c=(s=o.values)!==null&&s!==void 0?s:[],p=r[a];for(let l of c){let d=l.name.value,h=n[a];V(h)&&h.getValue(d)?e.reportError(new f(`Enum value "${a}.${d}" already exists in the schema. It cannot also be defined in this type extension.`,{nodes:l.name})):p[d]?e.reportError(new f(`Enum value "${a}.${d}" can only be defined once.`,{nodes:[p[d],l.name]})):p[d]=l.name}return!1}}function _r(e){let 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(o){var s;let a=o.name.value;r[a]||(r[a]=Object.create(null));let c=(s=o.fields)!==null&&s!==void 0?s:[],p=r[a];for(let l of c){let d=l.name.value;cs(n[a],d)?e.reportError(new f(`Field "${a}.${d}" already exists in the schema. It cannot also be defined in this type extension.`,{nodes:l.name})):p[d]?e.reportError(new f(`Field "${a}.${d}" can only be defined once.`,{nodes:[p[d],l.name]})):p[d]=l.name}return!1}}function cs(e,t){return R(e)||_(e)||L(e)?e.getFields()[t]!=null:!1}function xr(e){let t=Object.create(null);return{OperationDefinition:()=>!1,FragmentDefinition(n){let r=n.name.value;return t[r]?e.reportError(new f(`There can be only one fragment named "${r}".`,{nodes:[t[r],n.name]})):t[r]=n.name,!1}}}function fn(e){let t=[],n=Object.create(null);return{ObjectValue:{enter(){t.push(n),n=Object.create(null)},leave(){let r=t.pop();r||k(!1),n=r}},ObjectField(r){let i=r.name.value;n[i]?e.reportError(new f(`There can be only one input field named "${i}".`,{nodes:[n[i],r.name]})):n[i]=r.name}}}function Lr(e){let t=Object.create(null);return{OperationDefinition(n){let r=n.name;return r&&(t[r.value]?e.reportError(new f(`There can be only one operation named "${r.value}".`,{nodes:[t[r.value],r]})):t[r.value]=r),!1},FragmentDefinition:()=>!1}}function Ar(e){let 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(o){var s;let a=(s=o.operationTypes)!==null&&s!==void 0?s:[];for(let c of a){let p=c.operation,l=n[p];r[p]?e.reportError(new f(`Type for ${p} already defined in the schema. It cannot be redefined.`,{nodes:c})):l?e.reportError(new f(`There can be only one ${p} type in schema.`,{nodes:[l,c]})):n[p]=c}return!1}}function Dr(e){let t=Object.create(null),n=e.getSchema();return{ScalarTypeDefinition:r,ObjectTypeDefinition:r,InterfaceTypeDefinition:r,UnionTypeDefinition:r,EnumTypeDefinition:r,InputObjectTypeDefinition:r};function r(i){let o=i.name.value;if(n!=null&&n.getType(o)){e.reportError(new f(`Type "${o}" already exists in the schema. It cannot also be defined in this type definition.`,{nodes:i.name}));return}return t[o]?e.reportError(new f(`There can be only one type named "${o}".`,{nodes:[t[o],i.name]})):t[o]=i.name,!1}}function wr(e){return{OperationDefinition(t){var n;let r=(n=t.variableDefinitions)!==null&&n!==void 0?n:[],i=tt(r,o=>o.variable.name.value);for(let[o,s]of i)s.length>1&&e.reportError(new f(`There can be only one variable named "$${o}".`,{nodes:s.map(a=>a.variable.name)}))}}}function Fr(e){return{ListValue(t){let n=ze(e.getParentInputType());if(!A(n))return Pe(e,t),!1},ObjectValue(t){let n=B(e.getInputType());if(!L(n))return Pe(e,t),!1;let r=ce(t.fields,i=>i.name.value);for(let i of Object.values(n.getFields()))if(!r[i.name]&&He(i)){let s=y(i.type);e.reportError(new f(`Field "${n.name}.${i.name}" of required type "${s}" was not provided.`,{nodes:t}))}},ObjectField(t){let n=B(e.getParentInputType());if(!e.getInputType()&&L(n)){let i=z(t.name.value,Object.keys(n.getFields()));e.reportError(new f(`Field "${t.name.value}" is not defined by type "${n.name}".`+K(i),{nodes:t}))}},NullValue(t){let n=e.getInputType();b(n)&&e.reportError(new f(`Expected value of type "${y(n)}", found ${x(t)}.`,{nodes:t}))},EnumValue:t=>Pe(e,t),IntValue:t=>Pe(e,t),FloatValue:t=>Pe(e,t),StringValue:t=>Pe(e,t),BooleanValue:t=>Pe(e,t)}}function Pe(e,t){let n=e.getInputType();if(!n)return;let r=B(n);if(!J(r)){let i=y(n);e.reportError(new f(`Expected value of type "${i}", found ${x(t)}.`,{nodes:t}));return}try{if(r.parseLiteral(t,void 0)===void 0){let o=y(n);e.reportError(new f(`Expected value of type "${o}", found ${x(t)}.`,{nodes:t}))}}catch(i){let o=y(n);i instanceof f?e.reportError(i):e.reportError(new f(`Expected value of type "${o}", found ${x(t)}; `+i.message,{nodes:t,originalError:i}))}}function kr(e){return{VariableDefinition(t){let n=U(e.getSchema(),t.type);if(n!==void 0&&!Y(n)){let r=t.variable.name.value,i=x(t.type);e.reportError(new f(`Variable "$${r}" cannot be non-input type "${i}".`,{nodes:t.type}))}}}}function Cr(e){let t=Object.create(null);return{OperationDefinition:{enter(){t=Object.create(null)},leave(n){let r=e.getRecursiveVariableUsages(n);for(let{node:i,type:o,defaultValue:s}of r){let a=i.name.value,c=t[a];if(c&&o){let p=e.getSchema(),l=U(p,c.type);if(l&&!us(p,l,c.defaultValue,o,s)){let d=y(l),h=y(o);e.reportError(new f(`Variable "$${a}" of type "${d}" used in position expecting type "${h}".`,{nodes:[c,i]}))}}}}},VariableDefinition(n){t[n.variable.name.value]=n}}}function us(e,t,n,r,i){if(b(r)&&!b(t)){if(!(n!=null&&n.kind!==u.NULL)&&!(i!==void 0))return!1;let a=r.ofType;return Ie(e,t,a)}return Ie(e,t,r)}var nt=Object.freeze([Zn,Lr,or,br,Zt,tr,kr,Nr,er,xr,ir,ur,yr,ar,wr,cr,pr,Wt,ln,nr,pn,Fr,gr,Cr,mr,fn]),ps=Object.freeze([sr,Ar,Dr,Sr,_r,Or,Rr,Zt,Wt,ln,Tr,rr,pn,fn,Er]);var dn=class{constructor(t,n){this._ast=t,this._fragments=void 0,this._fragmentSpreads=new Map,this._recursivelyReferencedFragments=new Map,this._onError=n}get[Symbol.toStringTag](){return"ASTValidationContext"}reportError(t){this._onError(t)}getDocument(){return this._ast}getFragment(t){let n;if(this._fragments)n=this._fragments;else{n=Object.create(null);for(let r of this.getDocument().definitions)r.kind===u.FRAGMENT_DEFINITION&&(n[r.name.value]=r);this._fragments=n}return n[t]}getFragmentSpreads(t){let n=this._fragmentSpreads.get(t);if(!n){n=[];let r=[t],i;for(;i=r.pop();)for(let o of i.selections)o.kind===u.FRAGMENT_SPREAD?n.push(o):o.selectionSet&&r.push(o.selectionSet);this._fragmentSpreads.set(t,n)}return n}getRecursivelyReferencedFragments(t){let n=this._recursivelyReferencedFragments.get(t);if(!n){n=[];let r=Object.create(null),i=[t.selectionSet],o;for(;o=i.pop();)for(let s of this.getFragmentSpreads(o)){let a=s.name.value;if(r[a]!==!0){r[a]=!0;let c=this.getFragment(a);c&&(n.push(c),i.push(c.selectionSet))}}this._recursivelyReferencedFragments.set(t,n)}return n}},Ur=class extends dn{constructor(t,n,r){super(t,r),this._schema=n}get[Symbol.toStringTag](){return"SDLValidationContext"}getSchema(){return this._schema}},bt=class extends dn{constructor(t,n,r,i){super(n,i),this._schema=t,this._typeInfo=r,this._variableUsages=new Map,this._recursiveVariableUsages=new Map}get[Symbol.toStringTag](){return"ValidationContext"}getSchema(){return this._schema}getVariableUsages(t){let n=this._variableUsages.get(t);if(!n){let r=[],i=new et(this._schema);_e(t,zt(i,{VariableDefinition:()=>!1,Variable(o){r.push({node:o,type:i.getInputType(),defaultValue:i.getDefaultValue()})}})),n=r,this._variableUsages.set(t,n)}return n}getRecursiveVariableUsages(t){let n=this._recursiveVariableUsages.get(t);if(!n){n=this.getVariableUsages(t);for(let r of this.getRecursivelyReferencedFragments(t))n=n.concat(this.getVariableUsages(r));this._recursiveVariableUsages.set(t,n)}return n}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 mn(e,t,n=nt,r,i=new et(e)){var o;let s=(o=r?.maxErrors)!==null&&o!==void 0?o:100;t||O(!1,"Must provide document."),vt(e);let a=Object.freeze({}),c=[],p=new bt(e,t,i,d=>{if(c.length>=s)throw c.push(new f("Too many validation errors, error limit reached. Validation aborted.")),a;c.push(d)}),l=kn(n.map(d=>d(p)));try{_e(t,zt(i,l))}catch(d){if(d!==a)throw d}return c}function wi(e){let t;return function(r,i,o){t===void 0&&(t=new WeakMap);let s=t.get(r);s===void 0&&(s=new WeakMap,t.set(r,s));let a=s.get(i);a===void 0&&(a=new WeakMap,s.set(i,a));let c=a.get(o);return c===void 0&&(c=e(r,i,o),a.set(o,c)),c}}function Pr(e){return Promise.all(Object.values(e)).then(t=>{let n=Object.create(null);for(let[r,i]of Object.keys(e).entries())n[i]=t[r];return n})}function Fi(e,t,n){let r=n;for(let i of e)r=ne(r)?r.then(o=>t(o,i)):t(r,i);return r}function ki(e){return e instanceof Error?e:new Vr(e)}var Vr=class extends Error{constructor(t){super("Unexpected error value: "+y(t)),this.name="NonErrorThrown",this.thrownValue=t}};function rt(e,t,n){var r;let i=ki(e);return ls(i)?i:new f(i.message,{nodes:(r=i.nodes)!==null&&r!==void 0?r:t,source:i.source,positions:i.positions,path:n,originalError:i})}function ls(e){return Array.isArray(e.path)}var fs=wi((e,t,n)=>Di(e.schema,e.fragments,e.variableValues,t,n));function En(e){arguments.length<2||O(!1,"graphql@16 dropped long-deprecated support for positional arguments, please pass an object instead.");let{schema:t,document:n,variableValues:r,rootValue:i}=e;ds(t,n,r);let o=ms(e);if(!("schema"in o))return{errors:o};try{let{operation:s}=o,a=hs(o,s,i);return ne(a)?a.then(c=>hn(c,o.errors),c=>(o.errors.push(c),hn(null,o.errors))):hn(a,o.errors)}catch(s){return o.errors.push(s),hn(null,o.errors)}}function hn(e,t){return t.length===0?{data:e}:{errors:t,data:e}}function ds(e,t,n){t||O(!1,"Must provide document."),vt(e),n==null||M(n)||O(!1,"Variables must be provided as an Object where each property is a variable value. Perhaps look to see if an unparsed JSON string was provided.")}function ms(e){var t,n;let{schema:r,document:i,rootValue:o,contextValue:s,variableValues:a,operationName:c,fieldResolver:p,typeResolver:l,subscribeFieldResolver:d}=e,h,T=Object.create(null);for(let $ of i.definitions)switch($.kind){case u.OPERATION_DEFINITION:if(c==null){if(h!==void 0)return[new f("Must provide operation name if query contains multiple operations.")];h=$}else((t=$.name)===null||t===void 0?void 0:t.value)===c&&(h=$);break;case u.FRAGMENT_DEFINITION:T[$.name.value]=$;break;default:}if(!h)return c!=null?[new f(`Unknown operation named "${c}".`)]:[new f("Must provide an operation.")];let E=(n=h.variableDefinitions)!==null&&n!==void 0?n:[],w=vr(r,E,a??{},{maxErrors:50});return w.errors?w.errors:{schema:r,fragments:T,rootValue:o,contextValue:s,operation:h,variableValues:w.coerced,fieldResolver:p??gn,typeResolver:l??Mr,subscribeFieldResolver:d??gn,errors:[]}}function hs(e,t,n){let r=e.schema.getRootType(t.operation);if(r==null)throw new f(`Schema is not configured to execute ${t.operation} operation.`,{nodes:t});let i=un(e.schema,e.fragments,e.variableValues,r,t.selectionSet),o=void 0;switch(t.operation){case F.QUERY:return yn(e,r,n,o,i);case F.MUTATION:return ys(e,r,n,o,i);case F.SUBSCRIPTION:return yn(e,r,n,o,i)}}function ys(e,t,n,r,i){return Fi(i.entries(),(o,[s,a])=>{let c=Ce(r,s,t.name),p=Pi(e,t,n,a,c);return p===void 0?o:ne(p)?p.then(l=>(o[s]=l,o)):(o[s]=p,o)},Object.create(null))}function yn(e,t,n,r,i){let o=Object.create(null),s=!1;try{for(let[a,c]of i.entries()){let p=Ce(r,a,t.name),l=Pi(e,t,n,c,p);l!==void 0&&(o[a]=l,ne(l)&&(s=!0))}}catch(a){if(s)return Pr(o).finally(()=>{throw a});throw a}return s?Pr(o):o}function Pi(e,t,n,r,i){var o;let s=vs(e.schema,t,r[0]);if(!s)return;let a=s.type,c=(o=s.resolve)!==null&&o!==void 0?o:e.fieldResolver,p=Ts(e,s,r,t,i);try{let l=sn(s,r[0],e.variableValues),d=e.contextValue,h=c(n,l,d,p),T;return ne(h)?T=h.then(E=>Ot(e,a,r,p,i,E)):T=Ot(e,a,r,p,i,h),ne(T)?T.then(void 0,E=>{let w=rt(E,r,te(i));return Tn(w,a,e)}):T}catch(l){let d=rt(l,r,te(i));return Tn(d,a,e)}}function Ts(e,t,n,r,i){return{fieldName:t.name,fieldNodes:n,returnType:t.type,parentType:r,path:i,schema:e.schema,fragments:e.fragments,rootValue:e.rootValue,operation:e.operation,variableValues:e.variableValues}}function Tn(e,t,n){if(b(t))throw e;return n.errors.push(e),null}function Ot(e,t,n,r,i,o){if(o instanceof Error)throw o;if(b(t)){let s=Ot(e,t.ofType,n,r,i,o);if(s===null)throw new Error(`Cannot return null for non-nullable field ${r.parentType.name}.${r.fieldName}.`);return s}if(o==null)return null;if(A(t))return gs(e,t,n,r,i,o);if(J(t))return Es(t,o);if(W(t))return Ns(e,t,n,r,i,o);if(R(t))return $r(e,t,n,r,i,o);k(!1,"Cannot complete value of unexpected output type: "+y(t))}function gs(e,t,n,r,i,o){if(!We(o))throw new f(`Expected Iterable, but did not find one for field "${r.parentType.name}.${r.fieldName}".`);let s=t.ofType,a=!1,c=Array.from(o,(p,l)=>{let d=Ce(i,l,void 0);try{let h;return ne(p)?h=p.then(T=>Ot(e,s,n,r,d,T)):h=Ot(e,s,n,r,d,p),ne(h)?(a=!0,h.then(void 0,T=>{let E=rt(T,n,te(d));return Tn(E,s,e)})):h}catch(h){let T=rt(h,n,te(d));return Tn(T,s,e)}});return a?Promise.all(c):c}function Es(e,t){let n=e.serialize(t);if(n==null)throw new Error(`Expected \`${y(e)}.serialize(${y(t)})\` to return non-nullable value, returned: ${y(n)}`);return n}function Ns(e,t,n,r,i,o){var s;let a=(s=t.resolveType)!==null&&s!==void 0?s:e.typeResolver,c=e.contextValue,p=a(o,c,r,t);return ne(p)?p.then(l=>$r(e,Ci(l,e,t,n,r,o),n,r,i,o)):$r(e,Ci(p,e,t,n,r,o),n,r,i,o)}function Ci(e,t,n,r,i,o){if(e==null)throw new f(`Abstract type "${n.name}" must resolve to an Object type at runtime for field "${i.parentType.name}.${i.fieldName}". Either the "${n.name}" type should provide a "resolveType" function or each possible type should provide an "isTypeOf" function.`,r);if(R(e))throw new f("Support for returning GraphQLObjectType from resolveType was removed in graphql-js@16.0.0 please return type name instead.");if(typeof e!="string")throw new f(`Abstract type "${n.name}" must resolve to an Object type at runtime for field "${i.parentType.name}.${i.fieldName}" with value ${y(o)}, received "${y(e)}".`);let s=t.schema.getType(e);if(s==null)throw new f(`Abstract type "${n.name}" was resolved to a type "${e}" that does not exist inside the schema.`,{nodes:r});if(!R(s))throw new f(`Abstract type "${n.name}" was resolved to a non-object type "${e}".`,{nodes:r});if(!t.schema.isSubType(n,s))throw new f(`Runtime Object type "${s.name}" is not a possible type for "${n.name}".`,{nodes:r});return s}function $r(e,t,n,r,i,o){let s=fs(e,t,n);if(t.isTypeOf){let a=t.isTypeOf(o,e.contextValue,r);if(ne(a))return a.then(c=>{if(!c)throw Ui(t,o,n);return yn(e,t,o,i,s)});if(!a)throw Ui(t,o,n)}return yn(e,t,o,i,s)}function Ui(e,t,n){return new f(`Expected value of type "${e.name}" but got: ${y(t)}.`,{nodes:n})}var Mr=function(e,t,n,r){if(M(e)&&typeof e.__typename=="string")return e.__typename;let i=n.schema.getPossibleTypes(r),o=[];for(let s=0;s<i.length;s++){let a=i[s];if(a.isTypeOf){let c=a.isTypeOf(e,t,n);if(ne(c))o[s]=c;else if(c)return a.name}}if(o.length)return Promise.all(o).then(s=>{for(let a=0;a<s.length;a++)if(s[a])return i[a].name})},gn=function(e,t,n,r){if(M(e)||typeof e=="function"){let i=e[r.fieldName];return typeof i=="function"?e[r.fieldName](t,n,r):i}};function vs(e,t,n){let r=n.name.value;return r===Ae.name&&e.getQueryType()===t?Ae:r===De.name&&e.getQueryType()===t?De:r===we.name?we:t.getFields()[r]}import{capitalize as Hs,getDataType as ji,isResourceType as Ws}from"@medplum/core";import{getReferenceString as Ys,getSearchParameters as Js,Operator as Ks,parseSearchRequest as Xs}from"@medplum/core";var Nn={base64Binary:N,boolean:j,canonical:N,code:N,date:N,dateTime:N,decimal:oe,id:fe,instant:N,integer:oe,markdown:N,number:oe,positiveInt:oe,string:N,time:N,unsignedInt:oe,uri:N,url:N,xhtml:N,"http://hl7.org/fhirpath/System.Boolean":j,"http://hl7.org/fhirpath/System.Date":N,"http://hl7.org/fhirpath/System.DateTime":N,"http://hl7.org/fhirpath/System.Decimal":oe,"http://hl7.org/fhirpath/System.Integer":oe,"http://hl7.org/fhirpath/System.String":N,"http://hl7.org/fhirpath/System.Time":N};function Gr(e,t,n){let r;if(t){let o=n._reference;delete n._reference,r={code:o,operator:Ks.EQUALS,value:Ys(t)}}n=Object.fromEntries(Object.entries(n).map(([o,s])=>[zs(o),s]));let i=Xs(e,n);if(r){let o=i.filters||[];i.filters=[r,...o]}return i}function zs(e){return e.startsWith("_")?e:e.replaceAll("_","-")}function jr(e){return e.replaceAll("-","_")}async function vn(e,t,n,r){let i=r.fieldName,o=i.substring(0,i.length-4),s=Gr(o,e,t);return(await n.repo.search(s)).entry?.map(c=>c.resource)}function Rt(e){let t={_count:{type:ie,description:"Specify how many elements to return from a repeating list."},_offset:{type:ie,description:"Specify the offset to start at for a repeating element."},_sort:{type:N,description:"Specify the sort order by comma-separated list of sort rules in priority order."},_id:{type:N,description:"Select resources based on the logical id of the resource."},_lastUpdated:{type:N,description:"Select resources based on the last time they were changed."},_filter:{type:N,description:" The _filter parameter provides a syntax for expressing a set of query expressions on the underlying resources."}},n=Js(e);if(n)for(let[r,i]of Object.entries(n))t[jr(r)]={type:N,description:i.description};return t}function Vi(e){return e.filter(t=>t==="selections").length}function $i(e,t){return e.fieldNodes.some(n=>n.selectionSet?.selections.some(r=>r.kind===u.FIELD&&r.name.value===t))}function Mi(e){return{resourceType:"OperationOutcome",issue:e.map(t=>({severity:"error",code:"invalid",details:{text:t.message}}))}}var Gi={...Nn};function St(e,t){let n=Gi[e];return n||(n=Zs(e,t),Gi[e]=n),n}function Zs(e,t){let n=ji(e);return new Le({name:e+t,description:n.description,fields:()=>ea(e,t)})}function ea(e,t){let n={};if(Ws(e)){let r={description:"The type of resource",type:N};n.resourceType=r}return ta(e,n,t),n}function ta(e,t,n){let r=ji(e);for(let[i,o]of Object.entries(r.elements))for(let s of o.type)na(t,i,o,s,n)}function na(e,t,n,r,i){let o=r.code;(o==="Element"||o==="BackboneElement")&&(o=n.type[0].code);let s={description:n.description,type:St(o,i)};n.max>1&&(s.type=new D(new I(St(o,i)))),n.min>0&&!t.endsWith("[x]")&&(s.type=new I(s.type));let a=t.split(".").pop().replace("[x]",Hs(r.code));e[a]=s}import{capitalize as Qi,evalFhirPathTyped as ra,getDataType as Qr,getResourceTypes as Bi,getSearchParameters as ia,isLowerCase as oa,isReference as sa,isResourceTypeSchema as aa,normalizeOperationOutcome as ca,OperationOutcomeError as ua,toJsBoolean as pa,toTypedValue as la}from"@medplum/core";var In={...Nn};function Ve(e){let t=In[e];return t||(t=Br(e),In[e]=t),t}function Br(e){if(e==="ResourceList")return new xe({name:"ResourceList",types:()=>Bi().map(Ve).filter(n=>!!n),resolveType:va});let t=Qr(e);return new G({name:e,description:t.description,fields:()=>fa(e)})}function fa(e){let t={};return da(e,t),Ta(e,t),t}function da(e,t){let n=Qr(e);aa(n)&&(t.resourceType={type:new I(N),description:"Resource Type"}),e==="Reference"&&(t.resource={description:"Reference",type:Ve("ResourceList"),resolve:Na});for(let[r,i]of Object.entries(n.elements))for(let o of i.type)ma(t,r,i,o)}function ma(e,t,n,r){let i=r.code;(i==="Element"||i==="BackboneElement")&&(i=n.type[0].code);let o={description:n.description,type:ga(n,i,t),resolve:Ea};n.max>1&&(o.args=ha(i));let s=t.split(".").pop().replace("[x]",Qi(r.code));e[s]=o}function ha(e){let t={_count:{type:ie,description:"Specify how many elements to return from a repeating list."},_offset:{type:ie,description:"Specify the offset to start at for a repeating element."}};if(!oa(e.charAt(0))){t.fhirpath={type:N,description:"A FHIRPath statement selecting which of the subnodes is to be included"};let n=Qr(e);if(n.elements)for(let[r,i]of Object.entries(n.elements))for(let o of i.type)ya(t,r,i,o)}return t}function ya(e,t,n,r){let i=r.code,o=t.replace("[x]",Qi(i));switch(i){case"canonical":case"code":case"id":case"oid":case"string":case"uri":case"url":case"uuid":case"http://hl7.org/fhirpath/System.String":e[o]={type:N,description:n.description};break}}function Ta(e,t){for(let n of Bi()){let r=Ve(n),i=ia(n),o={},s=0;if(i)for(let[a,c]of Object.entries(i))c.target?.includes(e)&&(o[jr(a)]={value:a},s++);if(s>0){let a=new ye({name:e+"_"+n+"_reference",values:o}),c=Rt(n);c._reference={type:new I(a),description:`Specify which property to use for reverse lookup for ${n}`},t[n+"List"]={type:new D(r),args:c,resolve:vn}}}}function ga(e,t,n){let r=Ve(t);return e.max>1&&(r=new D(new I(r))),e.min!==0&&!n.endsWith("[x]")&&(r=new I(r)),r}async function Ea(e,t,n,r){let i=e?.[r.fieldName];if(!t||!i)return i;let{_offset:o,_count:s,fhirpath:a,...c}=t,p=i;for(let[l,d]of Object.entries(c))p=p.filter(h=>h[l]===d);return a&&(p=p.filter(l=>pa(ra(a,[la(l)])))),o&&(p=p.slice(o)),s&&(p=p.slice(0,s)),p}async function Na(e,t,n){if(sa(e))try{return await n.dataLoader.load(e)}catch(r){throw new ua(ca(r),r)}}function va(e){let t=e?.resourceType;if(t)return Ve(t).name}var La=new Ra,qr;async function Yi(e,t,n){let{query:r,operationName:i,variables:o}=e.body;if(!r)return[_t("Must provide query.")];let s;try{s=Ct(r)}catch{return[_t("GraphQL syntax error.")]}let a=Da(),c=[...nt,Ga],p=mn(a,s,c);if(p.length>0)return[Mi(p)];let l=Aa(r);if(l&&!n.options?.introspectionEnabled)return[Oa];let d=new xa(T=>t.readReferences(T)),h=l&&La.get(r);return h||(h=await En({schema:a,document:s,contextValue:{repo:t,dataLoader:d},operationName:i,variableValues:o})),[Ia,h]}function Aa(e){return e.includes("query IntrospectionQuery")||e.includes("__schema")}function Da(){return qr||(qr=wa()),qr}function wa(){for(let n of qi())In[n]=Br(n);let e={},t={};for(let n of qi()){let r=Ve(n);e[n]={type:r,args:{id:{type:new I(fe),description:n+" ID"}},resolve:Pa},e[n+"List"]={type:new D(r),args:Rt(n),resolve:vn},e[n+"Connection"]={type:Ca(n,r),args:Rt(n),resolve:Ua},t[n+"Create"]={type:r,args:Fa(n),resolve:Va},t[n+"Update"]={type:r,args:ka(n),resolve:$a},t[n+"Delete"]={type:r,args:{id:{type:new I(fe),description:n+" ID"}},resolve:Ma}}return new Fe({query:new G({name:"QueryType",fields:e}),mutation:new G({name:"MutationType",fields:t})})}function Fa(e){return{res:{type:new I(St(e,"Create")),description:e+" Create"}}}function ka(e){return{id:{type:new I(fe),description:e+" ID"},res:{type:new I(St(e,"Update")),description:e+" Update"}}}function Ca(e,t){return new G({name:e+"Connection",fields:{count:{type:ie},offset:{type:ie},pageSize:{type:ie},first:{type:N},previous:{type:N},next:{type:N},last:{type:N},edges:{type:new D(new G({name:e+"ConnectionEdge",fields:{mode:{type:N},score:{type:oe},resource:{type:t}}}))}}})}async function Ua(e,t,n,r){let i=r.fieldName,o=i.substring(0,i.length-10),s=Gr(o,e,t);$i(r,"count")&&(s.total="accurate");let a=await n.repo.search(s);return{count:a.total,offset:s.offset||0,pageSize:s.count||ba,edges:a.entry?.map(c=>({mode:c.search?.mode,score:c.search?.score,resource:c.resource}))}}async function Pa(e,t,n,r){try{return await n.dataLoader.load({reference:`${r.fieldName}/${t.id}`})}catch(i){throw new _a(Sa(i),i)}}async function Va(e,t,n,r){let i=r.fieldName,o=i.substring(0,i.length-6),s=t.res;return s.resourceType!==o?[_t("Invalid resourceType")]:await n.repo.createResource(s)}async function $a(e,t,n,r){let i=r.fieldName,o=i.substring(0,i.length-6),s=t.res,a=t.id;return s.resourceType!==o?[_t("Invalid resourceType")]:a!==s.id?[_t("Incorrect ID")]:await n.repo.updateResource(s)}async function Ma(e,t,n,r){let i=r.fieldName,o=i.substring(0,i.length-6);await n.repo.deleteResource(o,t.id)}var Ga=e=>({Field(t,n,r,i){let o=Vi(i),s=12;if(o>s){let a=t.name.value;e.reportError(new f(`Field "${a}" exceeds max depth (depth=${o}, max=${s})`,{nodes:t}))}}});var bn=class{constructor(){this.routes=[]}add(t,n,r){let i=n.split("/").filter(o=>!!o).map(o=>o.startsWith(":")?{value:o.substring(1),param:!0}:{value:o});this.routes.push({method:t,path:i,handler:r})}find(t,n){let r=n.split("/").filter(s=>!!s),i,o=-1;for(let s of this.routes){let a=ja(s,t,r);a>o&&(i=s,o=a)}if(i)return{handler:i.handler,params:Qa(i,r)}}};function ja(e,t,n){if(t!==e.method||n.length!==e.path.length)return-1;let r=0;for(let i=0;i<n.length;i++)if(!e.path[i].param){if(n[i]!==e.path[i].value)return-1;r++}return r}function Qa(e,t){let n=Object.create(null);for(let r=0;r<t.length;r++)e.path[r].param&&(n[e.path[r].value]=t[r]);return n}async function Ja(e,t,n){let r=e.body;if(r.resourceType!=="Bundle")return[On("Not a bundle")];let i=await Hr(n,t,r);return[Ne,i]}async function Ka(e,t){let{resourceType:n}=e.params,r=e.query,i=await t.search(Ki(n,r));return[Ne,i]}async function Xa(e,t){let{resourceType:n}=e.params,r=e.body,i=await t.search(Ki(n,r));return[Ne,i]}async function za(e,t){let{resourceType:n}=e.params,r=e.body;if(r.resourceType!==n)return[On(`Incorrect resource type: expected ${n}, but found ${r.resourceType||"<EMPTY>"}`)];let i=await t.createResource(r);return[Ba,i]}async function Ha(e,t){let{resourceType:n,id:r}=e.params,i=await t.readResource(n,r);return[Ne,i]}async function Wa(e,t){let{resourceType:n,id:r}=e.params,i=await t.readHistory(n,r);return[Ne,i]}async function Za(e,t){let{resourceType:n,id:r,vid:i}=e.params,o=await t.readVersion(n,r,i);return[Ne,o]}async function ec(e,t){let{resourceType:n,id:r}=e.params,i=e.body;if(i.resourceType!==n)return[On("Incorrect resource type")];if(i.id!==r)return[On("Incorrect ID")];let o=await t.updateResource(i);return[Ne,o]}async function tc(e,t){let{resourceType:n,id:r}=e.params;return await t.deleteResource(n,r),[Ne]}async function nc(e,t){let{resourceType:n,id:r}=e.params,i=e.body,o=await t.patchResource(n,r,i);return[Ne,o]}var Ji=class{constructor(t={}){this.router=new bn;this.options=t,this.router.add("POST","",Ja),this.router.add("GET",":resourceType",Ka),this.router.add("POST",":resourceType/_search",Xa),this.router.add("POST",":resourceType",za),this.router.add("GET",":resourceType/:id",Ha),this.router.add("GET",":resourceType/:id/_history",Wa),this.router.add("GET",":resourceType/:id/_history/:vid",Za),this.router.add("PUT",":resourceType/:id",ec),this.router.add("DELETE",":resourceType/:id",tc),this.router.add("PATCH",":resourceType/:id",nc),this.router.add("POST","$graphql",Yi)}async handleRequest(t,n){let r=this.router.find(t.method,t.pathname);if(!r)return[Ya];let{handler:i,params:o}=r;t.params=o;try{return await i(t,n,this)}catch(s){return[qa(s)]}}};import{OperationOutcomeError as it,badRequest as Xi,deepClone as $e,evalFhirPath as zi,generateId as Hi,globalSchema as rc,matchesSearchRequest as ic,normalizeOperationOutcome as oc,notFound as Yr}from"@medplum/core";import{applyPatch as sc}from"rfc6902";var Jr=class{async searchOne(t){return(await this.search({...t,count:1})).entry?.[0]?.resource}async searchResources(t){return(await this.search(t)).entry?.map(r=>r.resource)??[]}},Wi=class extends Jr{constructor(){super();this.resources=new Map,this.history=new Map}clear(){this.resources.clear(),this.history.clear()}async createResource(n){let r=$e(n);r.id||(r.id=Hi()),r.meta||(r.meta={}),r.meta.versionId||(r.meta.versionId=Hi()),r.meta.lastUpdated||(r.meta.lastUpdated=new Date().toISOString());let{resourceType:i,id:o}=r,s=this.resources.get(i);s||(s=new Map,this.resources.set(i,s)),s.set(o,r);let a=this.history.get(i);a||(a=new Map,this.history.set(i,a));let c=a.get(o);return c||(c=[],a.set(o,c)),c.push(r),$e(r)}updateResource(n){let r=$e(n);return r.meta&&(r.meta.versionId&&delete r.meta.versionId,r.meta.lastUpdated&&delete r.meta.lastUpdated),this.createResource(r)}async patchResource(n,r,i){let o=await this.readResource(n,r);try{let s=sc(o,i).filter(Boolean);if(s.length>0)throw new it(Xi(s.map(a=>a.message).join(`
54
54
  `)))}catch(s){throw new it(oc(s))}return this.updateResource(o)}async readResource(n,r){let i=this.resources.get(n)?.get(r);if(!i)throw new it(Yr);return $e(i)}async readReference(n){let r=n.reference?.split("/");if(!r||r.length!==2)throw new it(Xi("Invalid reference"));return this.readResource(r[0],r[1])}async readReferences(n){return Promise.all(n.map(r=>this.readReference(r)))}async readHistory(n,r){return await this.readResource(n,r),{resourceType:"Bundle",type:"history",entry:(this.history.get(n)?.get(r)??[]).reverse().map(i=>({resource:$e(i)}))}}async readVersion(n,r,i){await this.readResource(n,r);let o=this.history.get(n)?.get(r)?.find(s=>s.meta?.versionId===i);if(!o)throw new it(Yr);return $e(o)}async search(n){let{resourceType:r}=n,i=this.resources.get(r)??new Map,o=[];for(let a of i.values())ic(a,n)&&o.push(a);let s=o.map(a=>({resource:$e(a)}));if(n.sortRules)for(let a of n.sortRules)s=s.sort((c,p)=>ac(c.resource,p.resource,a));return n.offset!==void 0&&(s=s.slice(n.offset)),n.count!==void 0&&(s=s.slice(0,n.count)),{resourceType:"Bundle",type:"searchset",entry:s,total:o.length}}async deleteResource(n,r){if(!this.resources.get(n)?.get(r))throw new it(Yr);this.resources.get(n)?.delete(r)}},ac=(e,t,n)=>{let i=rc.types[e.resourceType]?.searchParams?.[n.code]?.expression;if(!i)return 0;let o=JSON.stringify(zi(i,e)),s=JSON.stringify(zi(i,t));return o.localeCompare(s)*(n.descending?-1:1)};export{Jr as BaseRepository,Ji as FhirRouter,Wi as MemoryRepository,bn as Router};
55
55
  //# sourceMappingURL=index.mjs.map