UNPKG

76.5 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../../src/schema/schema.js"],"names":["_","require","invariant","isSpecifiedScalarType","isIntrospectionType","assertValidName","GraphQLNonNull","GraphQLList","GraphQLObjectType","GraphQLInterfaceType","ObjectTypeComposer","InterfaceTypeComposer","UnionTypeComposer","InputTypeComposer","ScalarTypeComposer","EnumTypeComposer","defineFieldMapToConfig","apiRunner","report","addNodeInterfaceFields","addInferredType","addInferredTypes","findOne","findManyPaginated","processFieldExtensions","internalExtensionNames","getPagination","getSortInput","SORTABLE_ENUM","getFilterInput","SEARCHABLE_ENUM","isGatsbyType","GatsbyGraphQLTypeKind","isASTDocument","parseTypeDef","reportParsingError","clearDerivedTypes","printTypeDefinitions","buildSchema","schemaComposer","nodeStore","types","typeMapping","fieldExtensions","thirdPartySchemas","printConfig","typeConflictReporter","inferenceMetadata","parentSpan","updateSchemaComposer","schema","rebuildSchemaWithSitePage","typeComposer","getOTC","shouldInfer","hasExtension","getExtension","processTypeComposer","module","exports","activity","phantomActivity","start","addTypes","span","end","config","addSetFieldsOnGraphQLNodeTypeFields","addConvenienceChildrenFields","Promise","all","Array","from","Set","values","map","checkQueryableInterfaces","addThirdPartySchemas","addCustomResolveFunctions","hasInterface","addImplicitConvenienceChildrenFields","determineSearchableFields","addTypeToRootQuery","fieldNames","query","typeName","camelCase","queryAll","convenienceChild","convenienceChildren","forEach","typeOrTypeDef","plugin","parsedTypes","createdFrom","parseTypes","doc","error","type","processAddedType","createTypeComposerFromGatsbyType","getTypeName","checkIsAllowedTypeName","has","get","mergeTypes","name","typeOwner","mergeFields","fields","getFields","getInterfaces","iface","addInterface","isNamedTypeComposer","extendExtensions","getExtensions","addExtensions","warn","addAsComposer","getResolveType","setResolveType","node","internal","addSchemaMustHaveType","setExtension","directives","getDirectives","args","noDefaultResolvers","hasField","getFieldType","toString","panic","getFieldNames","fieldName","setFieldExtension","getFieldDirectives","getFieldExtensions","Object","keys","filter","includes","definition","getDirective","defaultValue","undefined","arg","argumentDef","find","value","validate","message","endsWith","kind","OBJECT","createTemp","interfaces","getIFTC","getType","INPUT_OBJECT","UNION","INTERFACE","ENUM","SCALAR","JSON","stringify","tc","result","nodes","getNodesByType","traceId","addNestedFields","schemaQueryType","getQueryType","queryTC","createTempTC","processThirdPartyTypeFields","Query","addFields","getTypeMap","createTC","resetOverriddenThirdPartyTypeFields","getFieldExtension","removeField","field","getField","fieldType","replace","extendField","intermediateSchema","createResolvers","resolvers","fieldConfig","originalFieldConfig","getFieldConfig","originalTypeName","originalResolver","resolve","fieldTypeName","isArray","stringifyArray","newConfig","source","context","info","defaultFieldResolver","extendFieldExtensions","needsResolve","extensions","dateformat","searchable","SEARCHABLE","sortable","SORTABLE","proxy","isEmpty","DEPRECATED_SEARCHABLE","DEPRECATED_SORTABLE","parentTypesToChildren","Map","mimeTypesToChildren","typesHandlingMimeTypes","mimeType","set","add","mimeTypes","many","parentType","children","parent","getAnyTC","child","createChildrenField","createChildField","parentTypes","parentTypeName","childNodesByType","groupChildNodesByType","typeChildren","maxChildCount","maxBy","groupBy","c","g","length","childTypeComposer","childOfExtension","path","nodeModel","getNodesByIds","ids","flatMap","getNode","Boolean","sortInputTC","filterInputTC","paginationTC","queryName","queryNamePlural","sort","skip","limit","makeFieldNonNull","definitions","def","parsedType","typeMapper","makeSchemaDef","push","arr","item","Error","ofType","v","parseValue","queryableInterfaces","incorrectTypes","some","t","join","entries","setField"],"mappings":";;AAAA,MAAMA,CAAC,GAAGC,OAAO,CAAE,QAAF,CAAjB;;AACA,MAAMC,SAAS,GAAGD,OAAO,CAAE,WAAF,CAAzB;;AACA,MAAM;AACJE,EAAAA,qBADI;AAEJC,EAAAA,mBAFI;AAGJC,EAAAA,eAHI;AAIJC,EAAAA,cAJI;AAKJC,EAAAA,WALI;AAMJC,EAAAA,iBANI;AAOJC,EAAAA;AAPI,IAQFR,OAAO,CAAE,SAAF,CARX;;AASA,MAAM;AACJS,EAAAA,kBADI;AAEJC,EAAAA,qBAFI;AAGJC,EAAAA,iBAHI;AAIJC,EAAAA,iBAJI;AAKJC,EAAAA,kBALI;AAMJC,EAAAA,gBANI;AAOJC,EAAAA;AAPI,IAQFf,OAAO,CAAE,iBAAF,CARX;;AAUA,MAAMgB,SAAS,GAAGhB,OAAO,CAAE,0BAAF,CAAzB;;AACA,MAAMiB,MAAM,GAAGjB,OAAO,CAAE,yBAAF,CAAtB;;AACA,MAAM;AAAEkB,EAAAA;AAAF,IAA6BlB,OAAO,CAAE,wBAAF,CAA1C;;AACA,MAAM;AAAEmB,EAAAA,eAAF;AAAmBC,EAAAA;AAAnB,IAAwCpB,OAAO,CAAE,SAAF,CAArD;;AACA,MAAM;AAAEqB,EAAAA,OAAF;AAAWC,EAAAA;AAAX,IAAiCtB,OAAO,CAAE,aAAF,CAA9C;;AACA,MAAM;AACJuB,EAAAA,sBADI;AAEJC,EAAAA;AAFI,IAGFxB,OAAO,CAAE,cAAF,CAHX;;AAIA,MAAM;AAAEyB,EAAAA;AAAF,IAAoBzB,OAAO,CAAE,oBAAF,CAAjC;;AACA,MAAM;AAAE0B,EAAAA,YAAF;AAAgBC,EAAAA;AAAhB,IAAkC3B,OAAO,CAAE,cAAF,CAA/C;;AACA,MAAM;AAAE4B,EAAAA,cAAF;AAAkBC,EAAAA;AAAlB,IAAsC7B,OAAO,CAAE,gBAAF,CAAnD;;AACA,MAAM;AAAE8B,EAAAA,YAAF;AAAgBC,EAAAA;AAAhB,IAA0C/B,OAAO,CAAE,uBAAF,CAAvD;;AACA,MAAM;AACJgC,EAAAA,aADI;AAEJC,EAAAA,YAFI;AAGJC,EAAAA;AAHI,IAIFlC,OAAO,CAAE,mBAAF,CAJX;;AAKA,MAAM;AAAEmC,EAAAA;AAAF,IAAwBnC,OAAO,CAAE,uBAAF,CAArC;;AACA,MAAM;AAAEoC,EAAAA;AAAF,IAA2BpC,OAAO,CAAE,SAAF,CAAxC;;AAEA,MAAMqC,WAAW,GAAG,OAAO;AACzBC,EAAAA,cADyB;AAEzBC,EAAAA,SAFyB;AAGzBC,EAAAA,KAHyB;AAIzBC,EAAAA,WAJyB;AAKzBC,EAAAA,eALyB;AAMzBC,EAAAA,iBANyB;AAOzBC,EAAAA,WAPyB;AAQzBC,EAAAA,oBARyB;AASzBC,EAAAA,iBATyB;AAUzBC,EAAAA;AAVyB,CAAP,KAWd;AACJ,QAAMC,oBAAoB,CAAC;AACzBV,IAAAA,cADyB;AAEzBC,IAAAA,SAFyB;AAGzBC,IAAAA,KAHyB;AAIzBC,IAAAA,WAJyB;AAKzBC,IAAAA,eALyB;AAMzBC,IAAAA,iBANyB;AAOzBC,IAAAA,WAPyB;AAQzBC,IAAAA,oBARyB;AASzBC,IAAAA,iBATyB;AAUzBC,IAAAA;AAVyB,GAAD,CAA1B,CADI,CAaJ;;AACA,QAAME,MAAM,GAAGX,cAAc,CAACD,WAAf,EAAf,CAdI,CAeJ;;AACA,SAAOY,MAAP;AACD,CA5BD;;AA8BA,MAAMC,yBAAyB,GAAG,OAAO;AACvCZ,EAAAA,cADuC;AAEvCC,EAAAA,SAFuC;AAGvCE,EAAAA,WAHuC;AAIvCC,EAAAA,eAJuC;AAKvCG,EAAAA,oBALuC;AAMvCC,EAAAA,iBANuC;AAOvCC,EAAAA;AAPuC,CAAP,KAQ5B;AACJ,QAAMI,YAAY,GAAGb,cAAc,CAACc,MAAf,CAAuB,UAAvB,CAArB,CADI,CAGJ;AACA;;AACAjB,EAAAA,iBAAiB,CAAC;AAAEG,IAAAA,cAAF;AAAkBa,IAAAA;AAAlB,GAAD,CAAjB;AAEA,QAAME,WAAW,GACf,CAACF,YAAY,CAACG,YAAb,CAA2B,OAA3B,CAAD,IACAH,YAAY,CAACI,YAAb,CAA2B,OAA3B,MAAuC,KAFzC;;AAGA,MAAIF,WAAJ,EAAiB;AACflC,IAAAA,eAAe,CAAC;AACdmB,MAAAA,cADc;AAEda,MAAAA,YAFc;AAGdZ,MAAAA,SAHc;AAIdM,MAAAA,oBAJc;AAKdJ,MAAAA,WALc;AAMdK,MAAAA,iBANc;AAOdC,MAAAA;AAPc,KAAD,CAAf;AASD;;AACD,QAAMS,mBAAmB,CAAC;AACxBlB,IAAAA,cADwB;AAExBa,IAAAA,YAFwB;AAGxBT,IAAAA,eAHwB;AAIxBH,IAAAA,SAJwB;AAKxBQ,IAAAA;AALwB,GAAD,CAAzB;AAOA,SAAOT,cAAc,CAACD,WAAf,EAAP;AACD,CArCD;;AAuCAoB,MAAM,CAACC,OAAP,GAAiB;AACfrB,EAAAA,WADe;AAEfa,EAAAA;AAFe,CAAjB;;AAKA,MAAMF,oBAAoB,GAAG,OAAO;AAClCV,EAAAA,cADkC;AAElCC,EAAAA,SAFkC;AAGlCC,EAAAA,KAHkC;AAIlCC,EAAAA,WAJkC;AAKlCC,EAAAA,eALkC;AAMlCC,EAAAA,iBANkC;AAOlCC,EAAAA,WAPkC;AAQlCC,EAAAA,oBARkC;AASlCC,EAAAA,iBATkC;AAUlCC,EAAAA;AAVkC,CAAP,KAWvB;AACJ,MAAIY,QAAQ,GAAG1C,MAAM,CAAC2C,eAAP,CAAwB,oBAAxB,EAA6C;AAC1Db,IAAAA,UAAU,EAAEA;AAD8C,GAA7C,CAAf;AAGAY,EAAAA,QAAQ,CAACE,KAAT;AACA,QAAMC,QAAQ,CAAC;AAAExB,IAAAA,cAAF;AAAkBS,IAAAA,UAAU,EAAEY,QAAQ,CAACI,IAAvC;AAA6CvB,IAAAA;AAA7C,GAAD,CAAd;AACAmB,EAAAA,QAAQ,CAACK,GAAT;AAEAL,EAAAA,QAAQ,GAAG1C,MAAM,CAAC2C,eAAP,CAAwB,oBAAxB,EAA6C;AACtDb,IAAAA,UAAU,EAAEA;AAD0C,GAA7C,CAAX;AAGAY,EAAAA,QAAQ,CAACE,KAAT;AACA,QAAMzC,gBAAgB,CAAC;AACrBkB,IAAAA,cADqB;AAErBC,IAAAA,SAFqB;AAGrBM,IAAAA,oBAHqB;AAIrBJ,IAAAA,WAJqB;AAKrBK,IAAAA,iBALqB;AAMrBC,IAAAA,UAAU,EAAEY,QAAQ,CAACI;AANA,GAAD,CAAtB;AAQAJ,EAAAA,QAAQ,CAACK,GAAT;AAEAL,EAAAA,QAAQ,GAAG1C,MAAM,CAAC2C,eAAP,CAAwB,kBAAxB,EAA2C;AACpDb,IAAAA,UAAU,EAAEA;AADwC,GAA3C,CAAX;AAGAY,EAAAA,QAAQ,CAACE,KAAT;AACA,QAAMzB,oBAAoB,CAAC;AACzB6B,IAAAA,MAAM,EAAErB,WADiB;AAEzBN,IAAAA,cAFyB;AAGzBS,IAAAA,UAAU,EAAEY,QAAQ,CAACI;AAHI,GAAD,CAA1B;AAKA,QAAMG,mCAAmC,CAAC;AACxC5B,IAAAA,cADwC;AAExCC,IAAAA,SAFwC;AAGxCQ,IAAAA,UAAU,EAAEY,QAAQ,CAACI;AAHmB,GAAD,CAAzC;AAKA,QAAMI,4BAA4B,CAAC;AACjC7B,IAAAA,cADiC;AAEjCS,IAAAA,UAAU,EAAEY,QAAQ,CAACI;AAFY,GAAD,CAAlC;AAIA,QAAMK,OAAO,CAACC,GAAR,CACJC,KAAK,CAACC,IAAN,CAAW,IAAIC,GAAJ,CAAQlC,cAAc,CAACmC,MAAf,EAAR,CAAX,EAA6CC,GAA7C,CAAiDvB,YAAY,IAC3DK,mBAAmB,CAAC;AAClBlB,IAAAA,cADkB;AAElBa,IAAAA,YAFkB;AAGlBT,IAAAA,eAHkB;AAIlBH,IAAAA,SAJkB;AAKlBQ,IAAAA,UAAU,EAAEY,QAAQ,CAACI;AALH,GAAD,CADrB,CADI,CAAN;AAWAY,EAAAA,wBAAwB,CAAC;AAAErC,IAAAA,cAAF;AAAkBS,IAAAA,UAAU,EAAEY,QAAQ,CAACI;AAAvC,GAAD,CAAxB;AACA,QAAMa,oBAAoB,CAAC;AACzBtC,IAAAA,cADyB;AAEzBK,IAAAA,iBAFyB;AAGzBI,IAAAA,UAAU,EAAEY,QAAQ,CAACI;AAHI,GAAD,CAA1B;AAKA,QAAMc,yBAAyB,CAAC;AAAEvC,IAAAA,cAAF;AAAkBS,IAAAA,UAAU,EAAEY,QAAQ,CAACI;AAAvC,GAAD,CAA/B;AACAJ,EAAAA,QAAQ,CAACK,GAAT;AACD,CAtED;;AAwEA,MAAMR,mBAAmB,GAAG,OAAO;AACjClB,EAAAA,cADiC;AAEjCa,EAAAA,YAFiC;AAGjCT,EAAAA,eAHiC;AAIjCH,EAAAA,SAJiC;AAKjCQ,EAAAA;AALiC,CAAP,KAMtB;AACJ,MAAII,YAAY,YAAY1C,kBAA5B,EAAgD;AAC9C,UAAMc,sBAAsB,CAAC;AAC3Be,MAAAA,cAD2B;AAE3Ba,MAAAA,YAF2B;AAG3BT,MAAAA,eAH2B;AAI3BK,MAAAA;AAJ2B,KAAD,CAA5B;;AAOA,QAAII,YAAY,CAAC2B,YAAb,CAA2B,MAA3B,CAAJ,EAAuC;AACrC,YAAM5D,sBAAsB,CAAC;AAAEoB,QAAAA,cAAF;AAAkBa,QAAAA,YAAlB;AAAgCJ,QAAAA;AAAhC,OAAD,CAA5B;AACA,YAAMgC,oCAAoC,CAAC;AACzCzC,QAAAA,cADyC;AAEzCa,QAAAA,YAFyC;AAGzCZ,QAAAA,SAHyC;AAIzCQ,QAAAA;AAJyC,OAAD,CAA1C;AAMD;;AACD,UAAMiC,yBAAyB,CAAC;AAC9B1C,MAAAA,cAD8B;AAE9Ba,MAAAA,YAF8B;AAG9BJ,MAAAA;AAH8B,KAAD,CAA/B;;AAMA,QAAII,YAAY,CAAC2B,YAAb,CAA2B,MAA3B,CAAJ,EAAuC;AACrC,YAAMG,kBAAkB,CAAC;AAAE3C,QAAAA,cAAF;AAAkBa,QAAAA,YAAlB;AAAgCJ,QAAAA;AAAhC,OAAD,CAAxB;AACD;AACF,GA1BD,MA0BO,IAAII,YAAY,YAAYzC,qBAA5B,EAAmD;AACxD,QAAIyC,YAAY,CAACI,YAAb,CAA2B,eAA3B,CAAJ,EAAgD;AAC9C;AACA;AACA,YAAMhC,sBAAsB,CAAC;AAC3Be,QAAAA,cAD2B;AAE3Ba,QAAAA,YAF2B;AAG3BT,QAAAA,eAH2B;AAI3BK,QAAAA;AAJ2B,OAAD,CAA5B;AAMA,YAAMiC,yBAAyB,CAAC;AAC9B1C,QAAAA,cAD8B;AAE9Ba,QAAAA,YAF8B;AAG9BJ,QAAAA;AAH8B,OAAD,CAA/B;AAKA,YAAMkC,kBAAkB,CAAC;AAAE3C,QAAAA,cAAF;AAAkBa,QAAAA,YAAlB;AAAgCJ,QAAAA;AAAhC,OAAD,CAAxB;AACD;AACF;AACF,CAnDD;;AAqDA,MAAMmC,UAAU,GAAG;AACjBC,EAAAA,KAAK,EAAEC,QAAQ,IAAIrF,CAAC,CAACsF,SAAF,CAAYD,QAAZ,CADF;AAEjBE,EAAAA,QAAQ,EAAEF,QAAQ,IAAIrF,CAAC,CAACsF,SAAF,CAAa,OAAMD,QAAS,EAA5B,CAFL;AAGjBG,EAAAA,gBAAgB,EAAEH,QAAQ,IAAIrF,CAAC,CAACsF,SAAF,CAAa,SAAQD,QAAS,EAA9B,CAHb;AAIjBI,EAAAA,mBAAmB,EAAEJ,QAAQ,IAAIrF,CAAC,CAACsF,SAAF,CAAa,YAAWD,QAAS,EAAjC;AAJhB,CAAnB;;AAOA,MAAMtB,QAAQ,GAAG,CAAC;AAAExB,EAAAA,cAAF;AAAkBE,EAAAA,KAAlB;AAAyBO,EAAAA;AAAzB,CAAD,KAA2C;AAC1DP,EAAAA,KAAK,CAACiD,OAAN,CAAc,CAAC;AAAEC,IAAAA,aAAF;AAAiBC,IAAAA;AAAjB,GAAD,KAA+B;AAC3C,QAAI,OAAOD,aAAP,KAA0B,QAA9B,EAAuC;AACrCA,MAAAA,aAAa,GAAGzD,YAAY,CAACyD,aAAD,CAA5B;AACD;;AACD,QAAI1D,aAAa,CAAC0D,aAAD,CAAjB,EAAkC;AAChC,UAAIE,WAAJ;AACA,YAAMC,WAAW,GAAI,KAArB;;AACA,UAAI;AACFD,QAAAA,WAAW,GAAGE,UAAU,CAAC;AACvBC,UAAAA,GAAG,EAAEL,aADkB;AAEvBC,UAAAA,MAFuB;AAGvBE,UAAAA,WAHuB;AAIvBvD,UAAAA,cAJuB;AAKvBS,UAAAA;AALuB,SAAD,CAAxB;AAOD,OARD,CAQE,OAAOiD,KAAP,EAAc;AACd9D,QAAAA,kBAAkB,CAAC8D,KAAD,CAAlB;AACA;AACD;;AACDJ,MAAAA,WAAW,CAACH,OAAZ,CAAoBQ,IAAI,IAAI;AAC1BC,QAAAA,gBAAgB,CAAC;AACf5D,UAAAA,cADe;AAEf2D,UAAAA,IAFe;AAGflD,UAAAA,UAHe;AAIf8C,UAAAA,WAJe;AAKfF,UAAAA;AALe,SAAD,CAAhB;AAOD,OARD;AASD,KAxBD,MAwBO,IAAI7D,YAAY,CAAC4D,aAAD,CAAhB,EAAiC;AACtC,YAAMO,IAAI,GAAGE,gCAAgC,CAAC;AAC5C7D,QAAAA,cAD4C;AAE5C2D,QAAAA,IAAI,EAAEP,aAFsC;AAG5C3C,QAAAA;AAH4C,OAAD,CAA7C;;AAMA,UAAIkD,IAAJ,EAAU;AACR,cAAMb,QAAQ,GAAGa,IAAI,CAACG,WAAL,EAAjB;AACA,cAAMP,WAAW,GAAI,aAArB;AACAQ,QAAAA,sBAAsB,CAACjB,QAAD,CAAtB;;AACA,YAAI9C,cAAc,CAACgE,GAAf,CAAmBlB,QAAnB,CAAJ,EAAkC;AAChC,gBAAMjC,YAAY,GAAGb,cAAc,CAACiE,GAAf,CAAmBnB,QAAnB,CAArB;AACAoB,UAAAA,UAAU,CAAC;AACTlE,YAAAA,cADS;AAETa,YAAAA,YAFS;AAGT8C,YAAAA,IAHS;AAITN,YAAAA,MAJS;AAKTE,YAAAA,WALS;AAMT9C,YAAAA;AANS,WAAD,CAAV;AAQD,SAVD,MAUO;AACLmD,UAAAA,gBAAgB,CAAC;AACf5D,YAAAA,cADe;AAEf2D,YAAAA,IAFe;AAGflD,YAAAA,UAHe;AAIf8C,YAAAA,WAJe;AAKfF,YAAAA;AALe,WAAD,CAAhB;AAOD;AACF;AACF,KA/BM,MA+BA;AACL,YAAMP,QAAQ,GAAGM,aAAa,CAACe,IAA/B;AACA,YAAMZ,WAAW,GAAI,YAArB;AACAQ,MAAAA,sBAAsB,CAACjB,QAAD,CAAtB;;AACA,UAAI9C,cAAc,CAACgE,GAAf,CAAmBlB,QAAnB,CAAJ,EAAkC;AAChC,cAAMjC,YAAY,GAAGb,cAAc,CAACiE,GAAf,CAAmBnB,QAAnB,CAArB;AACAoB,QAAAA,UAAU,CAAC;AACTlE,UAAAA,cADS;AAETa,UAAAA,YAFS;AAGT8C,UAAAA,IAAI,EAAEP,aAHG;AAITC,UAAAA,MAJS;AAKTE,UAAAA,WALS;AAMT9C,UAAAA;AANS,SAAD,CAAV;AAQD,OAVD,MAUO;AACLmD,QAAAA,gBAAgB,CAAC;AACf5D,UAAAA,cADe;AAEf2D,UAAAA,IAAI,EAAEP,aAFS;AAGf3C,UAAAA,UAHe;AAIf8C,UAAAA,WAJe;AAKfF,UAAAA;AALe,SAAD,CAAhB;AAOD;AACF;AACF,GAnFD;AAoFD,CArFD;;AAuFA,MAAMa,UAAU,GAAG,CAAC;AAClBlE,EAAAA,cADkB;AAElBa,EAAAA,YAFkB;AAGlB8C,EAAAA,IAHkB;AAIlBN,EAAAA,MAJkB;AAKlBE,EAAAA,WALkB;AAMlB9C,EAAAA;AANkB,CAAD,KAOb;AACJ;AACA,QAAM2D,SAAS,GAAGvD,YAAY,CAACI,YAAb,CAA2B,QAA3B,CAAlB;;AACA,MACE,CAACoC,MAAD,IACAA,MAAM,CAACc,IAAP,KAAiB,qBADjB,IAEAd,MAAM,CAACc,IAAP,KAAgBC,SAHlB,EAIE;AACA,QAAIT,IAAI,YAAYxF,kBAApB,EAAwC;AACtCkG,MAAAA,WAAW,CAAC;AAAExD,QAAAA,YAAF;AAAgByD,QAAAA,MAAM,EAAEX,IAAI,CAACY,SAAL;AAAxB,OAAD,CAAX;AACAZ,MAAAA,IAAI,CAACa,aAAL,GAAqBrB,OAArB,CAA6BsB,KAAK,IAAI5D,YAAY,CAAC6D,YAAb,CAA0BD,KAA1B,CAAtC;AACD,KAHD,MAGO,IAAId,IAAI,YAAYvF,qBAApB,EAA2C;AAChDiG,MAAAA,WAAW,CAAC;AAAExD,QAAAA,YAAF;AAAgByD,QAAAA,MAAM,EAAEX,IAAI,CAACY,SAAL;AAAxB,OAAD,CAAX;AACD,KAFM,MAEA,IAAIZ,IAAI,YAAY1F,iBAApB,EAAuC;AAC5CoG,MAAAA,WAAW,CAAC;AACVxD,QAAAA,YADU;AAEVyD,QAAAA,MAAM,EAAE7F,sBAAsB,CAACkF,IAAI,CAACY,SAAL,EAAD;AAFpB,OAAD,CAAX;AAIAZ,MAAAA,IAAI,CAACa,aAAL,GAAqBrB,OAArB,CAA6BsB,KAAK,IAAI5D,YAAY,CAAC6D,YAAb,CAA0BD,KAA1B,CAAtC;AACD,KANM,MAMA,IAAId,IAAI,YAAYzF,oBAApB,EAA0C;AAC/CmG,MAAAA,WAAW,CAAC;AACVxD,QAAAA,YADU;AAEVyD,QAAAA,MAAM,EAAE7F,sBAAsB,CAACkF,IAAI,CAACY,SAAL,EAAD;AAFpB,OAAD,CAAX;AAID;;AAED,QAAII,mBAAmB,CAAChB,IAAD,CAAvB,EAA+B;AAC7B9C,MAAAA,YAAY,CAAC+D,gBAAb,CAA8BjB,IAAI,CAACkB,aAAL,EAA9B;AACD;;AAEDC,IAAAA,aAAa,CAAC;AAAE9E,MAAAA,cAAF;AAAkBa,MAAAA,YAAlB;AAAgCwC,MAAAA,MAAhC;AAAwCE,MAAAA;AAAxC,KAAD,CAAb;AAEA,WAAO,IAAP;AACD,GA9BD,MA8BO;AACL5E,IAAAA,MAAM,CAACoG,IAAP,CACG,YAAW1B,MAAM,CAACc,IAAK,sCAAxB,GACG,KAAItD,YAAY,CAACiD,WAAb,EAA2B,qCADlC,GAEG,mBAAkBM,SAAU,KAHjC;AAKA,WAAO,KAAP;AACD;AACF,CAhDD;;AAkDA,MAAMR,gBAAgB,GAAG,CAAC;AACxB5D,EAAAA,cADwB;AAExB2D,EAAAA,IAFwB;AAGxBlD,EAAAA,UAHwB;AAIxB8C,EAAAA,WAJwB;AAKxBF,EAAAA;AALwB,CAAD,KAMnB;AACJ,QAAMP,QAAQ,GAAG9C,cAAc,CAACgF,aAAf,CAA6BrB,IAA7B,CAAjB;AACA,QAAM9C,YAAY,GAAGb,cAAc,CAACiE,GAAf,CAAmBnB,QAAnB,CAArB;;AACA,MACEjC,YAAY,YAAYzC,qBAAxB,IACAyC,YAAY,YAAYxC,iBAF1B,EAGE;AACA,QAAI,CAACwC,YAAY,CAACoE,cAAb,EAAL,EAAoC;AAClCpE,MAAAA,YAAY,CAACqE,cAAb,CAA4BC,IAAI,IAAIA,IAAI,CAACC,QAAL,CAAczB,IAAlD;AACD;AACF;;AACD3D,EAAAA,cAAc,CAACqF,qBAAf,CAAqCxE,YAArC;AAEAiE,EAAAA,aAAa,CAAC;AAAE9E,IAAAA,cAAF;AAAkBa,IAAAA,YAAlB;AAAgCwC,IAAAA,MAAhC;AAAwCE,IAAAA;AAAxC,GAAD,CAAb;AAEA,SAAO1C,YAAP;AACD,CAtBD;;AAwBA,MAAMiE,aAAa,GAAG,CAAC;AACrB9E,EAAAA,cADqB;AAErBa,EAAAA,YAFqB;AAGrBwC,EAAAA,MAHqB;AAIrBE,EAAAA;AAJqB,CAAD,KAKhB;AACJ1C,EAAAA,YAAY,CAACyE,YAAb,CAA2B,aAA3B,EAAyC/B,WAAzC;AACA1C,EAAAA,YAAY,CAACyE,YAAb,CAA2B,QAA3B,EAAoCjC,MAAM,GAAGA,MAAM,CAACc,IAAV,GAAiB,IAA3D;;AAEA,MAAIZ,WAAW,KAAM,KAArB,EAA2B;AACzB,UAAMgC,UAAU,GAAG1E,YAAY,CAAC2E,aAAb,EAAnB;AACAD,IAAAA,UAAU,CAACpC,OAAX,CAAmB,CAAC;AAAEgB,MAAAA,IAAF;AAAQsB,MAAAA;AAAR,KAAD,KAAoB;AACrC,cAAQtB,IAAR;AACE,aAAM,OAAN;AACA,aAAM,WAAN;AAAkB;AAChBtD,YAAAA,YAAY,CAACyE,YAAb,CAA2B,OAA3B,EAAmCnB,IAAI,KAAM,OAA7C;;AACA,gBAAIsB,IAAI,CAACC,kBAAL,IAA2B,IAA/B,EAAqC;AACnC7E,cAAAA,YAAY,CAACyE,YAAb,CACG,qBADH,EAEE,CAACG,IAAI,CAACC,kBAFR;AAID;;AACD;AACD;;AACD,aAAM,WAAN;AACE7E,UAAAA,YAAY,CAACyE,YAAb,CAA2B,WAA3B,EAAuCG,IAAvC;AACA;;AACF,aAAM,SAAN;AACE5E,UAAAA,YAAY,CAACyE,YAAb,CAA2B,SAA3B,EAAqCG,IAArC;AACA;;AACF,aAAM,eAAN;AACE,cAAI5E,YAAY,YAAYzC,qBAA5B,EAAmD;AACjD,gBACE,CAACyC,YAAY,CAAC8E,QAAb,CAAuB,IAAvB,CAAD,IACA9E,YAAY,CAAC+E,YAAb,CAA2B,IAA3B,EAAgCC,QAAhC,OAAgD,KAFlD,EAGE;AACAlH,cAAAA,MAAM,CAACmH,KAAP,CACG,oEAAD,GACG,uDADH,GAEG,KAAIjF,YAAY,CAACiD,WAAb,EAA2B,KAHpC;AAKD;;AACDjD,YAAAA,YAAY,CAACyE,YAAb,CAA2B,eAA3B,EAA2C,IAA3C;AACD;;AACD;;AACF;AAjCF;AAmCD,KApCD;AAqCD;;AAED,MACEzE,YAAY,YAAY1C,kBAAxB,IACA0C,YAAY,YAAYzC,qBADxB,IAEAyC,YAAY,YAAYvC,iBAH1B,EAIE;AACAuC,IAAAA,YAAY,CAACkF,aAAb,GAA6B5C,OAA7B,CAAqC6C,SAAS,IAAI;AAChDnF,MAAAA,YAAY,CAACoF,iBAAb,CAA+BD,SAA/B,EAA2C,aAA3C,EAAyDzC,WAAzD;AACA1C,MAAAA,YAAY,CAACoF,iBAAb,CACED,SADF,EAEG,QAFH,EAGE3C,MAAM,GAAGA,MAAM,CAACc,IAAV,GAAiB,IAHzB;;AAMA,UAAIZ,WAAW,KAAM,KAArB,EAA2B;AACzB,cAAMgC,UAAU,GAAG1E,YAAY,CAACqF,kBAAb,CAAgCF,SAAhC,CAAnB;AACAT,QAAAA,UAAU,CAACpC,OAAX,CAAmB,CAAC;AAAEgB,UAAAA,IAAF;AAAQsB,UAAAA;AAAR,SAAD,KAAoB;AACrC5E,UAAAA,YAAY,CAACoF,iBAAb,CAA+BD,SAA/B,EAA0C7B,IAA1C,EAAgDsB,IAAhD;AACD,SAFD;AAGD,OAb+C,CAehD;AACA;AACA;AACA;AACA;;;AACA,YAAMrF,eAAe,GAAGS,YAAY,CAACsF,kBAAb,CAAgCH,SAAhC,CAAxB;AACA,YAAMlD,QAAQ,GAAGjC,YAAY,CAACiD,WAAb,EAAjB;AACAsC,MAAAA,MAAM,CAACC,IAAP,CAAYjG,eAAZ,EACGkG,MADH,CACUnC,IAAI,IAAI,CAACjF,sBAAsB,CAACqH,QAAvB,CAAgCpC,IAAhC,CADnB,EAEGhB,OAFH,CAEWgB,IAAI,IAAI;AACf,cAAMsB,IAAI,GAAGrF,eAAe,CAAC+D,IAAD,CAA5B;;AAEA,YAAI,CAACsB,IAAD,IAAS,OAAOA,IAAP,KAAiB,QAA9B,EAAuC;AACrC9G,UAAAA,MAAM,CAAC+E,KAAP,CACG,2DAAD,GACG,aAAY+B,IAAK,UAAS3C,QAAS,IAAGkD,SAAU,KAFrD;AAIA;AACD;;AAED,YAAI;AACF,gBAAMQ,UAAU,GAAGxG,cAAc,CAACyG,YAAf,CAA4BtC,IAA5B,CAAnB,CADE,CAGF;;AACAqC,UAAAA,UAAU,CAACf,IAAX,CAAgBtC,OAAhB,CAAwB,CAAC;AAAEgB,YAAAA,IAAF;AAAQuC,YAAAA;AAAR,WAAD,KAA4B;AAClD,gBAAIjB,IAAI,CAACtB,IAAD,CAAJ,KAAewC,SAAf,IAA4BD,YAAY,KAAKC,SAAjD,EAA4D;AAC1DlB,cAAAA,IAAI,CAACtB,IAAD,CAAJ,GAAauC,YAAb;AACD;AACF,WAJD;AAMAN,UAAAA,MAAM,CAACC,IAAP,CAAYZ,IAAZ,EAAkBtC,OAAlB,CAA0ByD,GAAG,IAAI;AAC/B,kBAAMC,WAAW,GAAGL,UAAU,CAACf,IAAX,CAAgBqB,IAAhB,CAClB,CAAC;AAAE3C,cAAAA;AAAF,aAAD,KAAcA,IAAI,KAAKyC,GADL,CAApB;;AAGA,gBAAI,CAACC,WAAL,EAAkB;AAChBlI,cAAAA,MAAM,CAAC+E,KAAP,CACG,qBAAoBS,IAAK,WAAUrB,QAAS,IAAGkD,SAAU,KAA1D,GACG,0BAAyBY,GAAI,KAFlC;AAIA;AACD;;AACD,kBAAMG,KAAK,GAAGtB,IAAI,CAACmB,GAAD,CAAlB;;AACA,gBAAI;AACFI,cAAAA,QAAQ,CAACH,WAAW,CAAClD,IAAb,EAAmBoD,KAAnB,CAAR;AACD,aAFD,CAEE,OAAOrD,KAAP,EAAc;AACd/E,cAAAA,MAAM,CAAC+E,KAAP,CACG,qBAAoBS,IAAK,WAAUrB,QAAS,IAAGkD,SAAU,KAA1D,GACG,kBAAiBY,GAAI,0BAAyBG,KAAM,KADvD,GAEErD,KAAK,CAACuD,OAHV;AAKD;AACF,WArBD;AAsBD,SAhCD,CAgCE,OAAOvD,KAAP,EAAc;AACd/E,UAAAA,MAAM,CAAC+E,KAAP,CACG,qBAAoBS,IAAK,WAAUrB,QAAS,IAAGkD,SAAU,KAA1D,GACG,mBAFL;AAID;AACF,OAnDH;AAoDD,KA1ED;AA2ED;;AAED,MAAInF,YAAY,CAACG,YAAb,CAA2B,qBAA3B,CAAJ,EAAsD;AACpDrC,IAAAA,MAAM,CAACoG,IAAP,CACG,yEAAD,GACG,qEADH,GAEG,sBAHL;AAKD;;AAED,SAAOlE,YAAP;AACD,CA7ID;;AA+IA,MAAMkD,sBAAsB,GAAGI,IAAI,IAAI;AACrCxG,EAAAA,SAAS,CACPwG,IAAI,KAAM,MADH,EAEN,yDAFM,CAAT;AAIAxG,EAAAA,SAAS,CACP,CAACwG,IAAI,CAAC+C,QAAL,CAAe,aAAf,CAAD,IAAiC,CAAC/C,IAAI,CAAC+C,QAAL,CAAe,WAAf,CAD3B,EAEN,kEAAD,GACG,8CAA6C/C,IAAK,KAH9C,CAAT;AAKAxG,EAAAA,SAAS,CACP,CAAC,CAAE,SAAF,EAAa,MAAb,EAAqB,OAArB,EAA8B,IAA9B,EAAoC,KAApC,EAA2C,MAA3C,EAAmD,QAAnD,EAA4D4I,QAA5D,CAAqEpC,IAArE,CADM,EAEN,sBAAqBA,IAAK,qCAA3B,GACG,wBAHI,CAAT;AAKArG,EAAAA,eAAe,CAACqG,IAAD,CAAf;AACD,CAhBD;;AAkBA,MAAMN,gCAAgC,GAAG,CAAC;AACxC7D,EAAAA,cADwC;AAExC2D,EAAAA,IAFwC;AAGxClD,EAAAA;AAHwC,CAAD,KAInC;AACJ,UAAQkD,IAAI,CAACwD,IAAb;AACE,SAAK1H,qBAAqB,CAAC2H,MAA3B;AAAmC;AACjC,eAAOjJ,kBAAkB,CAACkJ,UAAnB,mBAEA1D,IAAI,CAAChC,MAFL;AAGH2F,UAAAA,UAAU,EAAE,MAAM;AAChB,gBAAI3D,IAAI,CAAChC,MAAL,CAAY2F,UAAhB,EAA4B;AAC1B,qBAAO3D,IAAI,CAAChC,MAAL,CAAY2F,UAAZ,CAAuBlF,GAAvB,CAA2BqC,KAAK,IAAI;AACzC,oBAAI,OAAOA,KAAP,KAAkB,QAAtB,EAA+B;AAC7B,yBAAOzE,cAAc,CAACuH,OAAf,CAAuB9C,KAAvB,EAA8B+C,OAA9B,EAAP;AACD,iBAFD,MAEO;AACL,yBAAO/C,KAAP;AACD;AACF,eANM,CAAP;AAOD,aARD,MAQO;AACL,qBAAO,EAAP;AACD;AACF;AAfE,YAiBLzE,cAjBK,CAAP;AAmBD;;AACD,SAAKP,qBAAqB,CAACgI,YAA3B;AAAyC;AACvC,eAAOnJ,iBAAiB,CAAC+I,UAAlB,CAA6B1D,IAAI,CAAChC,MAAlC,EAA0C3B,cAA1C,CAAP;AACD;;AACD,SAAKP,qBAAqB,CAACiI,KAA3B;AAAkC;AAChC,eAAOrJ,iBAAiB,CAACgJ,UAAlB,mBAEA1D,IAAI,CAAChC,MAFL;AAGHzB,UAAAA,KAAK,EAAE,MAAM;AACX,gBAAIyD,IAAI,CAAChC,MAAL,CAAYzB,KAAhB,EAAuB;AACrB,qBAAOyD,IAAI,CAAChC,MAAL,CAAYzB,KAAZ,CAAkBkC,GAAlB,CAAsBU,QAAQ,IACnC9C,cAAc,CAACc,MAAf,CAAsBgC,QAAtB,EAAgC0E,OAAhC,EADK,CAAP;AAGD,aAJD,MAIO;AACL,qBAAO,EAAP;AACD;AACF;AAXE,YAaLxH,cAbK,CAAP;AAeD;;AACD,SAAKP,qBAAqB,CAACkI,SAA3B;AAAsC;AACpC,eAAOvJ,qBAAqB,CAACiJ,UAAtB,CAAiC1D,IAAI,CAAChC,MAAtC,EAA8C3B,cAA9C,CAAP;AACD;;AACD,SAAKP,qBAAqB,CAACmI,IAA3B;AAAiC;AAC/B,eAAOpJ,gBAAgB,CAAC6I,UAAjB,CAA4B1D,IAAI,CAAChC,MAAjC,EAAyC3B,cAAzC,CAAP;AACD;;AACD,SAAKP,qBAAqB,CAACoI,MAA3B;AAAmC;AACjC,eAAOtJ,kBAAkB,CAAC8I,UAAnB,CAA8B1D,IAAI,CAAChC,MAAnC,EAA2C3B,cAA3C,CAAP;AACD;;AACD;AAAS;AACPrB,QAAAA,MAAM,CAACoG,IAAP,CAAa,4BAA2B+C,IAAI,CAACC,SAAL,CAAepE,IAAI,CAAChC,MAApB,CAA4B,EAApE;AACA,eAAO,IAAP;AACD;AAtDH;AAwDD,CA7DD;;AA+DA,MAAMC,mCAAmC,GAAG,CAAC;AAC3C5B,EAAAA,cAD2C;AAE3CC,EAAAA,SAF2C;AAG3CQ,EAAAA;AAH2C,CAAD,KAK1CqB,OAAO,CAACC,GAAR,CACEC,KAAK,CAACC,IAAN,CAAWjC,cAAc,CAACmC,MAAf,EAAX,EAAoCC,GAApC,CAAwC,MAAM4F,EAAN,IAAY;AAClD,MAAIA,EAAE,YAAY7J,kBAAd,IAAoC6J,EAAE,CAACxF,YAAH,CAAiB,MAAjB,CAAxC,EAAiE;AAC/D,UAAMM,QAAQ,GAAGkF,EAAE,CAAClE,WAAH,EAAjB;AACA,UAAMmE,MAAM,GAAG,MAAMvJ,SAAS,CAAE,4BAAF,EAA+B;AAC3DiF,MAAAA,IAAI,EAAE;AACJQ,QAAAA,IAAI,EAAErB,QADF;AAEJoF,QAAAA,KAAK,EAAEjI,SAAS,CAACkI,cAAV,CAAyBrF,QAAzB;AAFH,OADqD;AAK3DsF,MAAAA,OAAO,EAAG,oCALiD;AAM3D3H,MAAAA;AAN2D,KAA/B,CAA9B;;AAQA,QAAIwH,MAAJ,EAAY;AACV;AACA;AACA;AACA;AACAA,MAAAA,MAAM,CAAC9E,OAAP,CAAemB,MAAM,IAAI0D,EAAE,CAACK,eAAH,CAAmB/D,MAAnB,CAAzB;AACD;AACF;AACF,CAnBD,CADF,CALF;;AA4BA,MAAMhC,oBAAoB,GAAG,CAAC;AAC5BtC,EAAAA,cAD4B;AAE5BK,EAAAA,iBAF4B;AAG5BI,EAAAA;AAH4B,CAAD,KAIvB;AACJJ,EAAAA,iBAAiB,CAAC8C,OAAlB,CAA0BxC,MAAM,IAAI;AAClC,UAAM2H,eAAe,GAAG3H,MAAM,CAAC4H,YAAP,EAAxB;AACA,UAAMC,OAAO,GAAGxI,cAAc,CAACyI,YAAf,CAA4BH,eAA5B,CAAhB;AACAI,IAAAA,2BAA2B,CAAC;AAAE7H,MAAAA,YAAY,EAAE2H,OAAhB;AAAyBF,MAAAA;AAAzB,KAAD,CAA3B;AACAtI,IAAAA,cAAc,CAAC2I,KAAf,CAAqBC,SAArB,CAA+BJ,OAAO,CAACjE,SAAR,EAA/B,EAJkC,CAMlC;AACA;;AACA,UAAMrE,KAAK,GAAGS,MAAM,CAACkI,UAAP,EAAd;AACAzC,IAAAA,MAAM,CAACC,IAAP,CAAYnG,KAAZ,EAAmBiD,OAAnB,CAA2BL,QAAQ,IAAI;AACrC,YAAMa,IAAI,GAAGzD,KAAK,CAAC4C,QAAD,CAAlB;;AACA,UACEa,IAAI,KAAK2E,eAAT,IACA,CAAC1K,qBAAqB,CAAC+F,IAAD,CADtB,IAEA,CAAC9F,mBAAmB,CAAC8F,IAAD,CAFpB,IAGAA,IAAI,CAACQ,IAAL,KAAe,MAHf,IAIAR,IAAI,CAACQ,IAAL,KAAe,MALjB,EAME;AACA,cAAMtD,YAAY,GAAGb,cAAc,CAAC8I,QAAf,CAAwBnF,IAAxB,CAArB;;AACA,YACE9C,YAAY,YAAY1C,kBAAxB,IACA0C,YAAY,YAAYzC,qBAF1B,EAGE;AACAsK,UAAAA,2BAA2B,CAAC;AAAE7H,YAAAA,YAAF;AAAgByH,YAAAA;AAAhB,WAAD,CAA3B;AACD;;AACDzH,QAAAA,YAAY,CAACyE,YAAb,CAA2B,aAA3B,EAA0C,kBAA1C;AACAtF,QAAAA,cAAc,CAACqF,qBAAf,CAAqCxE,YAArC;AACD;AACF,KAnBD;AAoBD,GA7BD;AA8BD,CAnCD;;AAqCA,MAAMkI,mCAAmC,GAAG,CAAC;AAAElI,EAAAA;AAAF,CAAD,KAAsB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAA,EAAAA,YAAY,CAACkF,aAAb,GAA6B5C,OAA7B,CAAqC6C,SAAS,IAAI;AAChD,UAAMzC,WAAW,GAAG1C,YAAY,CAACmI,iBAAb,CAA+BhD,SAA/B,EAA2C,aAA3C,CAApB;;AACA,QAAIzC,WAAW,KAAM,iBAArB,EAAuC;AACrC1C,MAAAA,YAAY,CAACoI,WAAb,CAAyBjD,SAAzB;AACA;AACD;;AACD,UAAMrE,MAAM,GAAGd,YAAY,CAACmI,iBAAb,CACbhD,SADa,EAEZ,qBAFY,CAAf;;AAIA,QAAIrE,MAAJ,EAAY;AACVd,MAAAA,YAAY,CAACoI,WAAb,CAAyBjD,SAAzB;AACAnF,MAAAA,YAAY,CAAC+H,SAAb,CAAuB;AACrB,SAAC5C,SAAD,GAAarE;AADQ,OAAvB;AAGD;AACF,GAhBD;AAiBD,CA7BD;;AA+BA,MAAM+G,2BAA2B,GAAG,CAAC;AAAE7H,EAAAA,YAAF;AAAgByH,EAAAA;AAAhB,CAAD,KAAuC;AACzES,EAAAA,mCAAmC,CAAC;AAAElI,IAAAA;AAAF,GAAD,CAAnC,CADyE,CAGzE;;AACAA,EAAAA,YAAY,CAACkF,aAAb,GAA6B5C,OAA7B,CAAqC6C,SAAS,IAAI;AAChD;AACA;AACA,UAAMkD,KAAK,GAAGrI,YAAY,CAACsI,QAAb,CAAsBnD,SAAtB,CAAd;AACA,UAAMoD,SAAS,GAAGF,KAAK,CAACvF,IAAN,CAAWkC,QAAX,EAAlB;;AACA,QAAIuD,SAAS,CAACC,OAAV,CAAkB,SAAlB,EAA8B,EAA9B,MAAqCf,eAAe,CAACnE,IAAzD,EAA+D;AAC7DtD,MAAAA,YAAY,CAACyI,WAAb,CAAyBtD,SAAzB,EAAoC;AAClCrC,QAAAA,IAAI,EAAEyF,SAAS,CAACC,OAAV,CAAkBf,eAAe,CAACnE,IAAlC,EAAyC,OAAzC;AAD4B,OAApC;AAGD;AACF,GAVD;AAWD,CAfD;;AAiBA,MAAM5B,yBAAyB,GAAG,OAAO;AAAEvC,EAAAA,cAAF;AAAkBS,EAAAA;AAAlB,CAAP,KAA0C;AAC1E,QAAM8I,kBAAkB,GAAGvJ,cAAc,CAACD,WAAf,EAA3B;;AACA,QAAMyJ,eAAe,GAAGC,SAAS,IAAI;AACnCrD,IAAAA,MAAM,CAACC,IAAP,CAAYoD,SAAZ,EAAuBtG,OAAvB,CAA+BL,QAAQ,IAAI;AACzC,YAAMwB,MAAM,GAAGmF,SAAS,CAAC3G,QAAD,CAAxB;;AACA,UAAI9C,cAAc,CAACgE,GAAf,CAAmBlB,QAAnB,CAAJ,EAAkC;AAChC,cAAMkF,EAAE,GAAGhI,cAAc,CAACc,MAAf,CAAsBgC,QAAtB,CAAX;AACAsD,QAAAA,MAAM,CAACC,IAAP,CAAY/B,MAAZ,EAAoBnB,OAApB,CAA4B6C,SAAS,IAAI;AACvC,gBAAM0D,WAAW,GAAGpF,MAAM,CAAC0B,SAAD,CAA1B;;AACA,cAAIgC,EAAE,CAACrC,QAAH,CAAYK,SAAZ,CAAJ,EAA4B;AAC1B,kBAAM2D,mBAAmB,GAAG3B,EAAE,CAAC4B,cAAH,CAAkB5D,SAAlB,CAA5B;AACA,kBAAM6D,gBAAgB,GAAGF,mBAAmB,CAAChG,IAApB,CAAyBkC,QAAzB,EAAzB;AACA,kBAAMiE,gBAAgB,GAAGH,mBAAmB,CAACI,OAA7C;AACA,gBAAIC,aAAJ;;AACA,gBAAIN,WAAW,CAAC/F,IAAhB,EAAsB;AACpBqG,cAAAA,aAAa,GAAGhI,KAAK,CAACiI,OAAN,CAAcP,WAAW,CAAC/F,IAA1B,IACZuG,cAAc,CAACR,WAAW,CAAC/F,IAAb,CADF,GAEZ+F,WAAW,CAAC/F,IAAZ,CAAiBkC,QAAjB,EAFJ;AAGD;;AAED,gBACE,CAACmE,aAAD,IACAA,aAAa,CAACX,OAAd,CAAsB,IAAtB,EAA6B,EAA7B,MACEQ,gBAAgB,CAACR,OAAjB,CAAyB,IAAzB,EAAgC,EAAhC,CAFF,IAGArB,EAAE,CAAC/G,YAAH,CAAiB,aAAjB,MAAoC,kBAJtC,EAKE;AACA,oBAAMkJ,SAAS,GAAG,EAAlB;;AACA,kBAAIT,WAAW,CAAC/F,IAAhB,EAAsB;AACpBwG,gBAAAA,SAAS,CAACxG,IAAV,GAAiB+F,WAAW,CAAC/F,IAA7B;AACD;;AACD,kBAAI+F,WAAW,CAACjE,IAAhB,EAAsB;AACpB0E,gBAAAA,SAAS,CAAC1E,IAAV,GAAiBiE,WAAW,CAACjE,IAA7B;AACD;;AACD,kBAAIiE,WAAW,CAACK,OAAhB,EAAyB;AACvBI,gBAAAA,SAAS,CAACJ,OAAV,GAAoB,CAACK,MAAD,EAAS3E,IAAT,EAAe4E,OAAf,EAAwBC,IAAxB,KAClBZ,WAAW,CAACK,OAAZ,CAAoBK,MAApB,EAA4B3E,IAA5B,EAAkC4E,OAAlC,oBACKC,IADL;AAEER,kBAAAA,gBAAgB,EACdA,gBAAgB,IAAIO,OAAO,CAACE;AAHhC,mBADF;;AAMAvC,gBAAAA,EAAE,CAACwC,qBAAH,CAAyBxE,SAAzB,EAAoC;AAClCyE,kBAAAA,YAAY,EAAE;AADoB,iBAApC;AAGD;;AACDzC,cAAAA,EAAE,CAACsB,WAAH,CAAetD,SAAf,EAA0BmE,SAA1B,EAnBA,CAqBA;;AACA,kBAAInC,EAAE,CAAC/G,YAAH,CAAiB,aAAjB,MAAoC,kBAAxC,EAA2D;AACzD+G,gBAAAA,EAAE,CAAC/B,iBAAH,CACED,SADF,EAEG,qBAFH,EAGE2D,mBAHF;AAKD;AACF,aAlCD,MAkCO,IAAIK,aAAJ,EAAmB;AACxBrL,cAAAA,MAAM,CAACoG,IAAP,CACG,iDAAD,GACG,KAAIjC,QAAS,IAAGkD,SAAU,kBAAiBgE,aAAc,MAD5D,GAEG,4BAA2BH,gBAAiB,oBAF/C,GAGG,2DAJL;AAMD;AACF,WArDD,MAqDO;AACL7B,YAAAA,EAAE,CAACY,SAAH,CAAa;AACX,eAAC5C,SAAD,GAAa0D;AADF,aAAb,EADK,CAIL;;AACA1B,YAAAA,EAAE,CAAC/B,iBAAH,CAAqBD,SAArB,EAAiC,aAAjC,EAAgD,iBAAhD;AACD;AACF,SA9DD;AA+DD,OAjED,MAiEO;AACLrH,QAAAA,MAAM,CAACoG,IAAP,CACG,mDAAkDjC,QAAS,UAA5D,GACG,mEADH,GAEG,0BAHL;AAKD;AACF,KA1ED;AA2ED,GA5ED;;AA6EA,QAAMpE,SAAS,CAAE,iBAAF,EAAoB;AACjC6K,IAAAA,kBADiC;AAEjCC,IAAAA,eAFiC;AAGjCpB,IAAAA,OAAO,EAAG,yBAHuB;AAIjC3H,IAAAA;AAJiC,GAApB,CAAf;AAMD,CArFD;;AAuFA,MAAMiC,yBAAyB,GAAG,CAAC;AAAE1C,EAAAA,cAAF;AAAkBa,EAAAA;AAAlB,CAAD,KAAsC;AACtEA,EAAAA,YAAY,CAACkF,aAAb,GAA6B5C,OAA7B,CAAqC6C,SAAS,IAAI;AAChD,UAAMkD,KAAK,GAAGrI,YAAY,CAACsI,QAAb,CAAsBnD,SAAtB,CAAd;AACA,UAAM0E,UAAU,GAAG7J,YAAY,CAACsF,kBAAb,CAAgCH,SAAhC,CAAnB;;AACA,QAAIkD,KAAK,CAACa,OAAV,EAAmB;AACjB,UAAIW,UAAU,CAACC,UAAf,EAA2B;AACzB9J,QAAAA,YAAY,CAAC2J,qBAAb,CAAmCxE,SAAnC,EAA8C;AAC5C4E,UAAAA,UAAU,EAAErL,eAAe,CAACsL,UADgB;AAE5CC,UAAAA,QAAQ,EAAEzL,aAAa,CAAC0L,QAFoB;AAG5CN,UAAAA,YAAY,EAAEC,UAAU,CAACM,KAAX,GAAmB,IAAnB,GAA0B;AAHI,SAA9C;AAKD,OAND,MAMO,IAAI,CAACvN,CAAC,CAACwN,OAAF,CAAU/B,KAAK,CAACzD,IAAhB,CAAL,EAA4B;AACjC5E,QAAAA,YAAY,CAAC2J,qBAAb,CAAmCxE,SAAnC,EAA8C;AAC5C4E,UAAAA,UAAU,EAAErL,eAAe,CAAC2L,qBADgB;AAE5CJ,UAAAA,QAAQ,EAAEzL,aAAa,CAAC8L,mBAFoB;AAG5CV,UAAAA,YAAY,EAAE;AAH8B,SAA9C;AAKD,OANM,MAMA;AACL5J,QAAAA,YAAY,CAAC2J,qBAAb,CAAmCxE,SAAnC,EAA8C;AAC5C4E,UAAAA,UAAU,EAAErL,eAAe,CAACsL,UADgB;AAE5CC,UAAAA,QAAQ,EAAEzL,aAAa,CAAC0L,QAFoB;AAG5CN,UAAAA,YAAY,EAAE;AAH8B,SAA9C;AAKD;AACF,KApBD,MAoBO;AACL5J,MAAAA,YAAY,CAAC2J,qBAAb,CAAmCxE,SAAnC,EAA8C;AAC5C4E,QAAAA,UAAU,EAAErL,eAAe,CAACsL,UADgB;AAE5CC,QAAAA,QAAQ,EAAEzL,aAAa,CAAC0L,QAFoB;AAG5CN,QAAAA,YAAY,EAAE;AAH8B,OAA9C;AAKD;AACF,GA9BD;AA+BD,CAhCD;;AAkCA,MAAM5I,4BAA4B,GAAG,CAAC;AAAE7B,EAAAA;AAAF,CAAD,KAAwB;AAC3D,QAAMoL,qBAAqB,GAAG,IAAIC,GAAJ,EAA9B;AACA,QAAMC,mBAAmB,GAAG,IAAID,GAAJ,EAA5B;AACA,QAAME,sBAAsB,GAAG,IAAIF,GAAJ,EAA/B;AAEArL,EAAAA,cAAc,CAACmD,OAAf,CAAuBQ,IAAI,IAAI;AAC7B,QACE,CAACA,IAAI,YAAYxF,kBAAhB,IACCwF,IAAI,YAAYvF,qBADlB,KAEAuF,IAAI,CAAC3C,YAAL,CAAmB,WAAnB,CAHF,EAIE;AACA,YAAM;AAAEd,QAAAA;AAAF,UAAYyD,IAAI,CAAC1C,YAAL,CAAmB,WAAnB,CAAlB;AACA,UAAIiB,GAAJ,CAAQhC,KAAR,EAAeiD,OAAf,CAAuBqI,QAAQ,IAAI;AACjC,YAAI,CAACD,sBAAsB,CAACvH,GAAvB,CAA2BwH,QAA3B,CAAL,EAA2C;AACzCD,UAAAA,sBAAsB,CAACE,GAAvB,CAA2BD,QAA3B,EAAqC,IAAItJ,GAAJ,EAArC;AACD;;AACDqJ,QAAAA,sBAAsB,CAACtH,GAAvB,CAA2BuH,QAA3B,EAAqCE,GAArC,CAAyC/H,IAAzC;AACD,OALD;AAMD;;AAED,QACE,CAACA,IAAI,YAAYxF,kBAAhB,IACCwF,IAAI,YAAYvF,qBADlB,KAEAuF,IAAI,CAAC3C,YAAL,CAAmB,SAAnB,CAHF,EAIE;AACA,UAAI2C,IAAI,YAAYxF,kBAAhB,IAAsC,CAACwF,IAAI,CAACnB,YAAL,CAAmB,MAAnB,CAA3C,EAAsE;AACpE7D,QAAAA,MAAM,CAAC+E,KAAP,CACG,8FAAD,GACG,kCAAiCC,IAAI,CAACG,WAAL,EAAmB,KAFzD;AAIA;AACD;;AACD,UACEH,IAAI,YAAYvF,qBAAhB,IACA,CAACuF,IAAI,CAAC3C,YAAL,CAAmB,eAAnB,CAFH,EAGE;AACArC,QAAAA,MAAM,CAAC+E,KAAP,CACG,qEAAD,GACG,0CADH,GAEG,kCAAiCC,IAAI,CAACG,WAAL,EAAmB,KAHzD;AAKA;AACD;;AAED,YAAM;AAAE5D,QAAAA,KAAF;AAASyL,QAAAA,SAAT;AAAoBC,QAAAA;AAApB,UAA6BjI,IAAI,CAAC1C,YAAL,CAAmB,SAAnB,CAAnC;AACA,UAAIiB,GAAJ,CAAQhC,KAAR,EAAeiD,OAAf,CAAuB0I,UAAU,IAAI;AACnC,YAAI,CAACT,qBAAqB,CAACpH,GAAtB,CAA0B6H,UAA1B,CAAL,EAA4C;AAC1CT,UAAAA,qBAAqB,CAACK,GAAtB,CAA0BI,UAA1B,EAAsC,IAAIR,GAAJ,EAAtC;AACD;;AACDD,QAAAA,qBAAqB,CAACnH,GAAtB,CAA0B4H,UAA1B,EAAsCJ,GAAtC,CAA0C9H,IAA1C,EAAgDiI,IAAhD;AACD,OALD;AAMA,UAAI1J,GAAJ,CAAQyJ,SAAR,EAAmBxI,OAAnB,CAA2BqI,QAAQ,IAAI;AACrC,YAAI,CAACF,mBAAmB,CAACtH,GAApB,CAAwBwH,QAAxB,CAAL,EAAwC;AACtCF,UAAAA,mBAAmB,CAACG,GAApB,CAAwBD,QAAxB,EAAkC,IAAIH,GAAJ,EAAlC;AACD;;AACDC,QAAAA,mBAAmB,CAACrH,GAApB,CAAwBuH,QAAxB,EAAkCC,GAAlC,CAAsC9H,IAAtC,EAA4CiI,IAA5C;AACD,OALD;AAMD;AACF,GArDD;AAuDAR,EAAAA,qBAAqB,CAACjI,OAAtB,CAA8B,CAAC2I,QAAD,EAAWC,MAAX,KAAsB;AAClD,QAAI,CAAC/L,cAAc,CAACgE,GAAf,CAAmB+H,MAAnB,CAAL,EAAiC;AACjC,UAAMlL,YAAY,GAAGb,cAAc,CAACgM,QAAf,CAAwBD,MAAxB,CAArB;;AACA,QACElL,YAAY,YAAYzC,qBAAxB,IACA,CAACyC,YAAY,CAACG,YAAb,CAA2B,eAA3B,CAFH,EAGE;AACArC,MAAAA,MAAM,CAAC+E,KAAP,CACG,uEAAD,GACG,2DADH,GAEG,kCAAiC7C,YAAY,CAACiD,WAAb,EAA2B,KAHjE;AAKA;AACD;;AACDgI,IAAAA,QAAQ,CAAC3I,OAAT,CAAiB,CAACyI,IAAD,EAAOK,KAAP,KAAiB;AAChC,UAAIL,IAAJ,EAAU;AACR/K,QAAAA,YAAY,CAAC+H,SAAb,CAAuBsD,mBAAmB,CAACD,KAAK,CAACnI,WAAN,EAAD,CAA1C;AACD,OAFD,MAEO;AACLjD,QAAAA,YAAY,CAAC+H,SAAb,CAAuBuD,gBAAgB,CAACF,KAAK,CAACnI,WAAN,EAAD,CAAvC;AACD;AACF,KAND;AAOD,GArBD;AAuBAwH,EAAAA,mBAAmB,CAACnI,OAApB,CAA4B,CAAC2I,QAAD,EAAWN,QAAX,KAAwB;AAClD,UAAMY,WAAW,GAAGb,sBAAsB,CAACtH,GAAvB,CAA2BuH,QAA3B,CAApB;;AACA,QAAIY,WAAJ,EAAiB;AACfA,MAAAA,WAAW,CAACjJ,OAAZ,CAAoBtC,YAAY,IAAI;AAClC,YACEA,YAAY,YAAYzC,qBAAxB,IACA,CAACyC,YAAY,CAACG,YAAb,CAA2B,eAA3B,CAFH,EAGE;AACArC,UAAAA,MAAM,CAAC+E,KAAP,CACG,uEAAD,GACG,2DADH,GAEG,kCAAiC7C,YAAY,CAACiD,WAAb,EAA2B,KAHjE;AAKA;AACD;;AACDgI,QAAAA,QAAQ,CAAC3I,OAAT,CAAiB,CAACyI,IAAD,EAAOK,KAAP,KAAiB;AAChC,cAAIL,IAAJ,EAAU;AACR/K,YAAAA,YAAY,CAAC+H,SAAb,CAAuBsD,mBAAmB,CAACD,KAAK,CAACnI,WAAN,EAAD,CAA1C;AACD,WAFD,MAEO;AACLjD,YAAAA,YAAY,CAAC+H,SAAb,CAAuBuD,gBAAgB,CAACF,KAAK,CAACnI,WAAN,EAAD,CAAvC;AACD;AACF,SAND;AAOD,OAnBD;AAoBD;AACF,GAxBD;AAyBD,CA5GD;;AA8GA,MAAMrB,oCAAoC,GAAG,CAAC;AAC5CzC,EAAAA,cAD4C;AAE5Ca,EAAAA,YAF4C;AAG5CZ,EAAAA;AAH4C,CAAD,KAIvC;AACJ,QAAMc,WAAW,GAAGF,YAAY,CAACI,YAAb,CAA2B,OAA3B,CAApB,CADI,CAEJ;AACA;AACA;AACA;AACA;;AAEA,QAAMoL,cAAc,GAAGxL,YAAY,CAACiD,WAAb,EAAvB;AACA,QAAMoE,KAAK,GAAGjI,SAAS,CAACkI,cAAV,CAAyBkE,cAAzB,CAAd;AAEA,QAAMC,gBAAgB,GAAGC,qBAAqB,CAAC;AAAEtM,IAAAA,SAAF;AAAaiI,IAAAA;AAAb,GAAD,CAA9C;AAEA9B,EAAAA,MAAM,CAACC,IAAP,CAAYiG,gBAAZ,EAA8BnJ,OAA9B,CAAsCL,QAAQ,IAAI;AAChD,UAAM0J,YAAY,GAAGF,gBAAgB,CAACxJ,QAAD,CAArC;;AACA,UAAM2J,aAAa,GAAGhP,CAAC,CAACiP,KAAF,CACpBjP,CAAC,CAAC0E,MAAF,CAAS1E,CAAC,CAACkP,OAAF,CAAUH,YAAV,EAAwBI,CAAC,IAAIA,CAAC,CAACb,MAA/B,CAAT,CADoB,EAEpBc,CAAC,IAAIA,CAAC,CAACC,MAFa,EAGpBA,MAHF,CAFgD,CAOhD;;;AACA,QAAI/L,WAAW,KAAK,KAApB,EAA2B;AACzB,YAAMgM,iBAAiB,GAAG/M,cAAc,CAACgM,QAAf,CAAwBlJ,QAAxB,CAA1B;AACA,YAAMkK,gBAAgB,GAAGD,iBAAiB,CAAC9L,YAAlB,CAAgC,SAAhC,CAAzB;AACA,YAAM2K,IAAI,GAAGa,aAAa,GAAG,CAA7B,CAHyB,CAKzB;;AACA,UACE,CAACO,gBAAD,IACA,CAACA,gBAAgB,CAAC9M,KAAjB,CAAuBqG,QAAvB,CAAgC8F,cAAhC,CADD,IAEA,CAACW,gBAAgB,CAACpB,IAAlB,KAA2BA,IAH7B,EAIE;AACA,cAAM5F,SAAS,GAAG4F,IAAI,GAClBhJ,UAAU,CAACM,mBAAX,CAA+BJ,QAA/B,CADkB,GAElBF,UAAU,CAACK,gBAAX,CAA4BH,QAA5B,CAFJ;AAGAnE,QAAAA,MAAM,CAACoG,IAAP,CACG,cAAasH,cAAe,gCAA7B,GACG,eAAcrG,SAAU,OAD3B,GAEG,oEAFH,GAGG,8DAHH,GAIG,iCAJH,GAKG,6DALH,GAMG,wCAPL;AASD;AACF;;AAED,QAAIyG,aAAa,GAAG,CAApB,EAAuB;AACrB5L,MAAAA,YAAY,CAAC+H,SAAb,CAAuBsD,mBAAmB,CAACpJ,QAAD,CAA1C;AACD,KAFD,MAEO;AACLjC,MAAAA,YAAY,CAAC+H,SAAb,CAAuBuD,gBAAgB,CAACrJ,QAAD,CAAvC;AACD;AACF,GAvCD;AAwCD,CAzDD;;AA2DA,MAAMoJ,mBAAmB,GAAGpJ,QAAQ,IAAI;AACtC,SAAO;AACL,KAACF,UAAU,CAACM,mBAAX,CAA+BJ,QAA/B,CAAD,GAA4C;AAC1Ca,MAAAA,IAAI,EAAE,MAAM,CAACb,QAAD,CAD8B;;AAE1CiH,MAAAA,OAAO,CAACK,MAAD,EAAS3E,IAAT,EAAe4E,OAAf,EAAwB;AAC7B,cAAM;AAAE4C,UAAAA;AAAF,YAAW5C,OAAjB;AACA,eAAOA,OAAO,CAAC6C,SAAR,CAAkBC,aAAlB,CACL;AAAEC,UAAAA,GAAG,EAAEhD,MAAM,CAAC0B,QAAd;AAAwBnI,UAAAA,IAAI,EAAEb;AAA9B,SADK,EAEL;AAAEmK,UAAAA;AAAF,SAFK,CAAP;AAID;;AARyC;AADvC,GAAP;AAYD,CAbD;;AAeA,MAAMd,gBAAgB,GAAGrJ,QAAQ,IAAI;AACnC,SAAO;AACL,KAACF,UAAU,CAACK,gBAAX,CAA4BH,QAA5B,CAAD,GAAyC;AACvCa,MAAAA,IAAI,EAAE,MAAMb,QAD2B;;AAEvC,YAAMiH,OAAN,CAAcK,MAAd,EAAsB3E,IAAtB,EAA4B4E,OAA5B,EAAqC;AACnC,cAAM;AAAE4C,UAAAA;AAAF,YAAW5C,OAAjB;AACA,cAAMpC,MAAM,GAAG,MAAMoC,OAAO,CAAC6C,SAAR,CAAkBC,aAAlB,CACnB;AAAEC,UAAAA,GAAG,EAAEhD,MAAM,CAAC0B,QAAd;AAAwBnI,UAAAA,IAAI,EAAEb;AAA9B,SADmB,EAEnB;AAAEmK,UAAAA;AAAF,SAFmB,CAArB;;AAIA,YAAIhF,MAAM,IAAIA,MAAM,CAAC6E,MAAP,GAAgB,CAA9B,EAAiC;AAC/B,iBAAO7E,MAAM,CAAC,CAAD,CAAb;AACD,SAFD,MAEO;AACL,iBAAO,IAAP;AACD;AACF;;AAbsC;AADpC,GAAP;AAiBD,CAlBD;;AAoBA,MAAMsE,qBAAqB,GAAG,CAAC;AAAEtM,EAAAA,SAAF;AAAaiI,EAAAA;AAAb,CAAD,KAC5BzK,CAAC,CAACyK,KAAD,CAAD,CACGmF,OADH,CACWlI,IAAI,IACX,CAACA,IAAI,CAAC2G,QAAL,IAAiB,EAAlB,EAAsB1J,GAAtB,CAA0BnC,SAAS,CAACqN,OAApC,EAA6ChH,MAA7C,CAAoDiH,OAApD,CAFJ,EAIGZ,OAJH,CAIWxH,IAAI,IAAKA,IAAI,CAACC,QAAL,GAAgBD,IAAI,CAACC,QAAL,CAAczB,IAA9B,GAAqCgD,SAJzD,EAKGI,KALH,EADF;;AAQA,MAAMpE,kBAAkB,GAAG,CAAC;AAAE3C,EAAAA,cAAF;AAAkBa,EAAAA;AAAlB,CAAD,KAAsC;AAC/D,QAAM2M,WAAW,GAAGpO,YAAY,CAAC;AAC/BY,IAAAA,cAD+B;AAE/Ba,IAAAA;AAF+B,GAAD,CAAhC;AAIA,QAAM4M,aAAa,GAAGnO,cAAc,CAAC;AACnCU,IAAAA,cADmC;AAEnCa,IAAAA;AAFmC,GAAD,CAApC;AAIA,QAAM6M,YAAY,GAAGvO,aAAa,CAAC;AACjCa,IAAAA,cADiC;AAEjCa,IAAAA;AAFiC,GAAD,CAAlC;AAKA,QAAMiC,QAAQ,GAAGjC,YAAY,CAACiD,WAAb,EAAjB,CAd+D,CAe/D;;AACA,QAAM6J,SAAS,GAAG/K,UAAU,CAACC,KAAX,CAAiBC,QAAjB,CAAlB;AACA,QAAM8K,eAAe,GAAGhL,UAAU,CAACI,QAAX,CAAoBF,QAApB,CAAxB;AAEA9C,EAAAA,cAAc,CAAC2I,KAAf,CAAqBC,SAArB,CAA+B;AAC7B,KAAC+E,SAAD,GAAa;AACXhK,MAAAA,IAAI,EAAE9C,YADK;AAEX4E,MAAAA,IAAI,oBACCgI,aAAa,CAAClJ,SAAd,EADD,CAFO;AAKXwF,MAAAA,OAAO,EAAEhL,OAAO,CAAC+D,QAAD;AALL,KADgB;AAQ7B,KAAC8K,eAAD,GAAmB;AACjBjK,MAAAA,IAAI,EAAE+J,YADW;AAEjBjI,MAAAA,IAAI,EAAE;AACJa,QAAAA,MAAM,EAAEmH,aADJ;AAEJI,QAAAA,IAAI,EAAEL,WAFF;AAGJM,QAAAA,IAAI,EAAG,KAHH;AAIJC,QAAAA,KAAK,EAAG;AAJJ,OAFW;AAQjBhE,MAAAA,OAAO,EAAE/K,iBAAiB,CAAC8D,QAAD;AART;AARU,GAA/B,EAkBGkL,gBAlBH,CAkBoBJ,eAlBpB;AAmBD,CAtCD;;AAwCA,MAAMpK,UAAU,GAAG,CAAC;AAClBC,EAAAA,GADkB;AAElBJ,EAAAA,MAFkB;AAGlBE,EAAAA,WAHkB;AAIlBvD,EAAAA,cAJkB;AAKlBS,EAAAA;AALkB,CAAD,KAMb;AACJ,QAAMP,KAAK,GAAG,EAAd;AACAuD,EAAAA,GAAG,CAACwK,WAAJ,CAAgB9K,OAAhB,CAAwB+K,GAAG,IAAI;AAC7B,UAAM/J,IAAI,GAAG+J,GAAG,CAAC/J,IAAJ,CAAS4C,KAAtB;AACAhD,IAAAA,sBAAsB,CAACI,IAAD,CAAtB;;AAEA,QAAInE,cAAc,CAACgE,GAAf,CAAmBG,IAAnB,CAAJ,EAA8B;AAC5B;AACA;AACA;AAEA;AACA,YAAMtD,YAAY,GAAGb,cAAc,CAACiE,GAAf,CAAmBE,IAAnB,CAArB,CAN4B,CAQ5B;AACA;;AACA,YAAMgK,UAAU,GAAGnO,cAAc,CAACoO,UAAf,CAA0BC,aAA1B,CAAwCH,GAAxC,CAAnB,CAV4B,CAY5B;;AACAhK,MAAAA,UAAU,CAAC;AACTlE,QAAAA,cADS;AAETa,QAAAA,YAFS;AAGT8C,QAAAA,IAAI,EAAEwK,UAHG;AAIT9K,QAAAA,MAJS;AAKTE,QAAAA,WALS;AAMT9C,QAAAA;AANS,OAAD,CAAV,CAb4B,CAsB5B;AACA;;AACAT,MAAAA,cAAc,CAACoO,UAAf,CAA0B3C,GAA1B,CAA8B5K,YAAY,CAACiD,WAAb,EAA9B,EAA0DjD,YAA1D;AACD,KAzBD,MAyBO;AACL,YAAMsN,UAAU,GAAGnO,cAAc,CAACoO,UAAf,CAA0BC,aAA1B,CAAwCH,GAAxC,CAAnB;AACAhO,MAAAA,KAAK,CAACoO,IAAN,CAAWH,UAAX;AACD;AACF,GAjCD;AAkCA,SAAOjO,KAAP;AACD,CA3CD;;AA6CA,MAAMgK,cAAc,GAAGqE,GAAG,IACvB,IAAGA,GAAG,CAACnM,GAAJ,CAAQoM,IAAI,IACdxM,KAAK,CAACiI,OAAN,CAAcuE,IAAd,IAAsBtE,cAAc,CAACsE,IAAD,CAApC,GAA6CA,IAAI,CAAC3I,QAAL,EAD3C,CAEF,GAHJ,C,CAKA;;;AACA,MAAMlB,mBAAmB,GAAGhB,IAAI,IAC9BA,IAAI,YAAYxF,kBAAhB,IACAwF,IAAI,YAAYrF,iBADhB,IAEAqF,IAAI,YAAYpF,kBAFhB,IAGAoF,IAAI,YAAYnF,gBAHhB,IAIAmF,IAAI,YAAYvF,qBAJhB,IAKAuF,IAAI,YAAYtF,iBANlB;;AAQA,MAAM2I,QAAQ,GAAG,CAACrD,IAAD,EAAOoD,KAAP,KAAiB;AAChC,MAAIpD,IAAI,YAAY5F,cAApB,EAAoC;AAClC,QAAIgJ,KAAK,IAAI,IAAb,EAAmB;AACjB,YAAM,IAAI0H,KAAJ,CAAW,gCAAX,CAAN;AACD;;AACD,WAAOzH,QAAQ,CAACrD,IAAI,CAAC+K,MAAN,EAAc3H,KAAd,CAAf;AACD,GALD,MAKO,IAAIpD,IAAI,YAAY3F,WAApB,EAAiC;AACtC,QAAI,CAACgE,KAAK,CAACiI,OAAN,CAAclD,KAAd,CAAL,EAA2B;AACzB,YAAM,IAAI0H,KAAJ,CAAW,6BAAX,CAAN;AACD;;AACD,WAAO1H,KAAK,CAAC3E,GAAN,CAAUuM,CAAC,IAAI3H,QAAQ,CAACrD,IAAI,CAAC+K,MAAN,EAAcC,CAAd,CAAvB,CAAP;AACD,GALM,MAKA;AACL,WAAOhL,IAAI,CAACiL,UAAL,CAAgB7H,KAAhB,CAAP;AACD;AACF,CAdD;;AAgBA,MAAM1E,wBAAwB,GAAG,CAAC;AAAErC,EAAAA;AAAF,CAAD,KAAwB;AACvD,QAAM6O,mBAAmB,GAAG,IAAI3M,GAAJ,EAA5B;AACAlC,EAAAA,cAAc,CAACmD,OAAf,CAAuBQ,IAAI,IAAI;AAC7B,QACEA,IAAI,YAAYvF,qBAAhB,IACAuF,IAAI,CAAC1C,YAAL,CAAmB,eAAnB,CAFF,EAGE;AACA4N,MAAAA,mBAAmB,CAACnD,GAApB,CAAwB/H,IAAI,CAACG,WAAL,EAAxB;AACD;AACF,GAPD;AAQA,QAAMgL,cAAc,GAAG,EAAvB;AACA9O,EAAAA,cAAc,CAACmD,OAAf,CAAuBQ,IAAI,IAAI;AAC7B,QAAIA,IAAI,YAAYxF,kBAApB,EAAwC;AACtC,YAAMmJ,UAAU,GAAG3D,IAAI,CAACa,aAAL,EAAnB;;AACA,UACE8C,UAAU,CAACyH,IAAX,CAAgBtK,KAAK,IAAIoK,mBAAmB,CAAC7K,GAApB,CAAwBS,KAAK,CAACN,IAA9B,CAAzB,KACA,CAACR,IAAI,CAACnB,YAAL,CAAmB,MAAnB,CAFH,EAGE;AACAsM,QAAAA,cAAc,CAACR,IAAf,CAAoB3K,IAAI,CAACG,WAAL,EAApB;AACD;AACF;AACF,GAVD;;AAWA,MAAIgL,cAAc,CAAChC,MAAnB,EAA2B;AACzBnO,IAAAA,MAAM,CAACmH,KAAP,CACG,+DAAD,GACG,yDADH,GAEG,0CAFH,GAGG,GAAEgJ,cAAc,CAAC1M,GAAf,CAAmB4M,CAAC,IAAK,KAAIA,CAAE,IAA/B,EAAoCC,IAApC,CAA0C,IAA1C,CAA+C,GAJtD;AAMD;AACF,CA9BD;;AAgCA,MAAM5K,WAAW,GAAG,CAAC;AAAExD,EAAAA,YAAF;AAAgByD,EAAAA;AAAhB,CAAD,KAClB8B,MAAM,CAAC8I,OAAP,CAAe5K,MAAf,EAAuBnB,OAAvB,CAA+B,CAAC,CAAC6C,SAAD,EAAY0D,WAAZ,CAAD,KAA8B;AAC3D,MAAI7I,YAAY,CAAC8E,QAAb,CAAsBK,SAAtB,CAAJ,EAAsC;AACpCnF,IAAAA,YAAY,CAACyI,WAAb,CAAyBtD,SAAzB,EAAoC0D,WAApC;AACD,GAFD,MAEO;AACL7I,IAAAA,YAAY,CAACsO,QAAb,CAAsBnJ,SAAtB,EAAiC0D,WAAjC;AACD;AACF,CAND,CADF","sourcesContent":["const _ = require(`lodash`)\nconst invariant = require(`invariant`)\nconst {\n isSpecifiedScalarType,\n isIntrospectionType,\n assertValidName,\n GraphQLNonNull,\n GraphQLList,\n GraphQLObjectType,\n GraphQLInterfaceType,\n} = require(`graphql`)\nconst {\n ObjectTypeComposer,\n InterfaceTypeComposer,\n UnionTypeComposer,\n InputTypeComposer,\n ScalarTypeComposer,\n EnumTypeComposer,\n defineFieldMapToConfig,\n} = require(`graphql-compose`)\n\nconst apiRunner = require(`../utils/api-runner-node`)\nconst report = require(`gatsby-cli/lib/reporter`)\nconst { addNodeInterfaceFields } = require(`./types/node-interface`)\nconst { addInferredType, addInferredTypes } = require(`./infer`)\nconst { findOne, findManyPaginated } = require(`./resolvers`)\nconst {\n processFieldExtensions,\n internalExtensionNames,\n} = require(`./extensions`)\nconst { getPagination } = require(`./types/pagination`)\nconst { getSortInput, SORTABLE_ENUM } = require(`./types/sort`)\nconst { getFilterInput, SEARCHABLE_ENUM } = require(`./types/filter`)\nconst { isGatsbyType, GatsbyGraphQLTypeKind } = require(`./types/type-builders`)\nconst {\n isASTDocument,\n parseTypeDef,\n reportParsingError,\n} = require(`./types/type-defs`)\nconst { clearDerivedTypes } = require(`./types/derived-types`)\nconst { printTypeDefinitions } = require(`./print`)\n\nconst buildSchema = async ({\n schemaComposer,\n nodeStore,\n types,\n typeMapping,\n fieldExtensions,\n thirdPartySchemas,\n printConfig,\n typeConflictReporter,\n inferenceMetadata,\n parentSpan,\n}) => {\n await updateSchemaComposer({\n schemaComposer,\n nodeStore,\n types,\n typeMapping,\n fieldExtensions,\n thirdPartySchemas,\n printConfig,\n typeConflictReporter,\n inferenceMetadata,\n parentSpan,\n })\n // const { printSchema } = require(`graphql`)\n const schema = schemaComposer.buildSchema()\n // console.log(printSchema(schema))\n return schema\n}\n\nconst rebuildSchemaWithSitePage = async ({\n schemaComposer,\n nodeStore,\n typeMapping,\n fieldExtensions,\n typeConflictReporter,\n inferenceMetadata,\n parentSpan,\n}) => {\n const typeComposer = schemaComposer.getOTC(`SitePage`)\n\n // Clear derived types and fields\n // they will be re-created in processTypeComposer later\n clearDerivedTypes({ schemaComposer, typeComposer })\n\n const shouldInfer =\n !typeComposer.hasExtension(`infer`) ||\n typeComposer.getExtension(`infer`) !== false\n if (shouldInfer) {\n addInferredType({\n schemaComposer,\n typeComposer,\n nodeStore,\n typeConflictReporter,\n typeMapping,\n inferenceMetadata,\n parentSpan,\n })\n }\n await processTypeComposer({\n schemaComposer,\n typeComposer,\n fieldExtensions,\n nodeStore,\n parentSpan,\n })\n return schemaComposer.buildSchema()\n}\n\nmodule.exports = {\n buildSchema,\n rebuildSchemaWithSitePage,\n}\n\nconst updateSchemaComposer = async ({\n schemaComposer,\n nodeStore,\n types,\n typeMapping,\n fieldExtensions,\n thirdPartySchemas,\n printConfig,\n typeConflictReporter,\n inferenceMetadata,\n parentSpan,\n}) => {\n let activity = report.phantomActivity(`Add explicit types`, {\n parentSpan: parentSpan,\n })\n activity.start()\n await addTypes({ schemaComposer, parentSpan: activity.span, types })\n activity.end()\n\n activity = report.phantomActivity(`Add inferred types`, {\n parentSpan: parentSpan,\n })\n activity.start()\n await addInferredTypes({\n schemaComposer,\n nodeStore,\n typeConflictReporter,\n typeMapping,\n inferenceMetadata,\n parentSpan: activity.span,\n })\n activity.end()\n\n activity = report.phantomActivity(`Processing types`, {\n parentSpan: parentSpan,\n })\n activity.start()\n await printTypeDefinitions({\n config: printConfig,\n schemaComposer,\n parentSpan: activity.span,\n })\n await addSetFieldsOnGraphQLNodeTypeFields({\n schemaComposer,\n nodeStore,\n parentSpan: activity.span,\n })\n await addConvenienceChildrenFields({\n schemaComposer,\n parentSpan: activity.span,\n })\n await Promise.all(\n Array.from(new Set(schemaComposer.values())).map(typeComposer =>\n processTypeComposer({\n schemaComposer,\n typeComposer,\n fieldExtensions,\n nodeStore,\n parentSpan: activity.span,\n })\n )\n )\n checkQueryableInterfaces({ schemaComposer, parentSpan: activity.span })\n await addThirdPartySchemas({\n schemaComposer,\n thirdPartySchemas,\n parentSpan: activity.span,\n })\n await addCustomResolveFunctions({ schemaComposer, parentSpan: activity.span })\n activity.end()\n}\n\nconst processTypeComposer = async ({\n schemaComposer,\n typeComposer,\n fieldExtensions,\n nodeStore,\n parentSpan,\n}) => {\n if (typeComposer instanceof ObjectTypeComposer) {\n await processFieldExtensions({\n schemaComposer,\n typeComposer,\n fieldExtensions,\n parentSpan,\n })\n\n if (typeComposer.hasInterface(`Node`)) {\n await addNodeInterfaceFields({ schemaComposer, typeComposer, parentSpan })\n await addImplicitConvenienceChildrenFields({\n schemaComposer,\n typeComposer,\n nodeStore,\n parentSpan,\n })\n }\n await determineSearchableFields({\n schemaComposer,\n typeComposer,\n parentSpan,\n })\n\n if (typeComposer.hasInterface(`Node`)) {\n await addTypeToRootQuery({ schemaComposer, typeComposer, parentSpan })\n }\n } else if (typeComposer instanceof InterfaceTypeComposer) {\n if (typeComposer.getExtension(`nodeInterface`)) {\n // We only process field extensions for queryable Node interfaces, so we get\n // the input args on the root query type, e.g. `formatString` etc. for `dateformat`\n await processFieldExtensions({\n schemaComposer,\n typeComposer,\n fieldExtensions,\n parentSpan,\n })\n await determineSearchableFields({\n schemaComposer,\n typeComposer,\n parentSpan,\n })\n await addTypeToRootQuery({ schemaComposer, typeComposer, parentSpan })\n }\n }\n}\n\nconst fieldNames = {\n query: typeName => _.camelCase(typeName),\n queryAll: typeName => _.camelCase(`all ${typeName}`),\n convenienceChild: typeName => _.camelCase(`child ${typeName}`),\n convenienceChildren: typeName => _.camelCase(`children ${typeName}`),\n}\n\nconst addTypes = ({ schemaComposer, types, parentSpan }) => {\n types.forEach(({ typeOrTypeDef, plugin }) => {\n if (typeof typeOrTypeDef === `string`) {\n typeOrTypeDef = parseTypeDef(typeOrTypeDef)\n }\n if (isASTDocument(typeOrTypeDef)) {\n let parsedTypes\n const createdFrom = `sdl`\n try {\n parsedTypes = parseTypes({\n doc: typeOrTypeDef,\n plugin,\n createdFrom,\n schemaComposer,\n parentSpan,\n })\n } catch (error) {\n reportParsingError(error)\n return\n }\n parsedTypes.forEach(type => {\n processAddedType({\n schemaComposer,\n type,\n parentSpan,\n createdFrom,\n plugin,\n })\n })\n } else if (isGatsbyType(typeOrTypeDef)) {\n const type = createTypeComposerFromGatsbyType({\n schemaComposer,\n type: typeOrTypeDef,\n parentSpan,\n })\n\n if (type) {\n const typeName = type.getTypeName()\n const createdFrom = `typeBuilder`\n checkIsAllowedTypeName(typeName)\n if (schemaComposer.has(typeName)) {\n const typeComposer = schemaComposer.get(typeName)\n mergeTypes({\n schemaComposer,\n typeComposer,\n type,\n plugin,\n createdFrom,\n parentSpan,\n })\n } else {\n processAddedType({\n schemaComposer,\n type,\n parentSpan,\n createdFrom,\n plugin,\n })\n }\n }\n } else {\n const typeName = typeOrTypeDef.name\n const createdFrom = `graphql-js`\n checkIsAllowedTypeName(typeName)\n if (schemaComposer.has(typeName)) {\n const typeComposer = schemaComposer.get(typeName)\n mergeTypes({\n schemaComposer,\n typeComposer,\n type: typeOrTypeDef,\n plugin,\n createdFrom,\n parentSpan,\n })\n } else {\n processAddedType({\n schemaComposer,\n type: typeOrTypeDef,\n parentSpan,\n createdFrom,\n plugin,\n })\n }\n }\n })\n}\n\nconst mergeTypes = ({\n schemaComposer,\n typeComposer,\n type,\n plugin,\n createdFrom,\n parentSpan,\n}) => {\n // Only allow user or plugin owning the type to extend already existing type.\n const typeOwner = typeComposer.getExtension(`plugin`)\n if (\n !plugin ||\n plugin.name === `default-site-plugin` ||\n plugin.name === typeOwner\n ) {\n if (type instanceof ObjectTypeComposer) {\n mergeFields({ typeComposer, fields: type.getFields() })\n type.getInterfaces().forEach(iface => typeComposer.addInterface(iface))\n } else if (type instanceof InterfaceTypeComposer) {\n mergeFields({ typeComposer, fields: type.getFields() })\n } else if (type instanceof GraphQLObjectType) {\n mergeFields({\n typeComposer,\n fields: defineFieldMapToConfig(type.getFields()),\n })\n type.getInterfaces().forEach(iface => typeComposer.addInterface(iface))\n } else if (type instanceof GraphQLInterfaceType) {\n mergeFields({\n typeComposer,\n fields: defineFieldMapToConfig(type.getFields()),\n })\n }\n\n if (isNamedTypeComposer(type)) {\n typeComposer.extendExtensions(type.getExtensions())\n }\n\n addExtensions({ schemaComposer, typeComposer, plugin, createdFrom })\n\n return true\n } else {\n report.warn(\n `Plugin \\`${plugin.name}\\` tried to define the GraphQL type ` +\n `\\`${typeComposer.getTypeName()}\\`, which has already been defined ` +\n `by the plugin \\`${typeOwner}\\`.`\n )\n return false\n }\n}\n\nconst processAddedType = ({\n schemaComposer,\n type,\n parentSpan,\n createdFrom,\n plugin,\n}) => {\n const typeName = schemaComposer.addAsComposer(type)\n const typeComposer = schemaComposer.get(typeName)\n if (\n typeComposer instanceof InterfaceTypeComposer ||\n typeComposer instanceof UnionTypeComposer\n ) {\n if (!typeComposer.getResolveType()) {\n typeComposer.setResolveType(node => node.internal.type)\n }\n }\n schemaComposer.addSchemaMustHaveType(typeComposer)\n\n addExtensions({ schemaComposer, typeComposer, plugin, createdFrom })\n\n return typeComposer\n}\n\nconst addExtensions = ({\n schemaComposer,\n typeComposer,\n plugin,\n createdFrom,\n}) => {\n typeComposer.setExtension(`createdFrom`, createdFrom)\n typeComposer.setExtension(`plugin`, plugin ? plugin.name : null)\n\n if (createdFrom === `sdl`) {\n const directives = typeComposer.getDirectives()\n directives.forEach(({ name, args }) => {\n switch (name) {\n case `infer`:\n case `dontInfer`: {\n typeComposer.setExtension(`infer`, name === `infer`)\n if (args.noDefaultResolvers != null) {\n typeComposer.setExtension(\n `addDefaultResolvers`,\n !args.noDefaultResolvers\n )\n }\n break\n }\n case `mimeTypes`:\n typeComposer.setExtension(`mimeTypes`, args)\n break\n case `childOf`:\n typeComposer.setExtension(`childOf`, args)\n break\n case `nodeInterface`:\n if (typeComposer instanceof InterfaceTypeComposer) {\n if (\n !typeComposer.hasField(`id`) ||\n typeComposer.getFieldType(`id`).toString() !== `ID!`\n ) {\n report.panic(\n `Interfaces with the \\`nodeInterface\\` extension must have a field ` +\n `\\`id\\` of type \\`ID!\\`. Check the type definition of ` +\n `\\`${typeComposer.getTypeName()}\\`.`\n )\n }\n typeComposer.setExtension(`nodeInterface`, true)\n }\n break\n default:\n }\n })\n }\n\n if (\n typeComposer instanceof ObjectTypeComposer ||\n typeComposer instanceof InterfaceTypeComposer ||\n typeComposer instanceof InputTypeComposer\n ) {\n typeComposer.getFieldNames().forEach(fieldName => {\n typeComposer.setFieldExtension(fieldName, `createdFrom`, createdFrom)\n typeComposer.setFieldExtension(\n fieldName,\n `plugin`,\n plugin ? plugin.name : null\n )\n\n if (createdFrom === `sdl`) {\n const directives = typeComposer.getFieldDirectives(fieldName)\n directives.forEach(({ name, args }) => {\n typeComposer.setFieldExtension(fieldName, name, args)\n })\n }\n\n // Validate field extension args. `graphql-compose` already checks the\n // type of directive args in `parseDirectives`, but we want to check\n // extensions provided with type builders as well. Also, we warn if an\n // extension option was provided which does not exist in the field\n // extension definition.\n const fieldExtensions = typeComposer.getFieldExtensions(fieldName)\n const typeName = typeComposer.getTypeName()\n Object.keys(fieldExtensions)\n .filter(name => !internalExtensionNames.includes(name))\n .forEach(name => {\n const args = fieldExtensions[name]\n\n if (!args || typeof args !== `object`) {\n report.error(\n `Field extension arguments must be provided as an object. ` +\n `Received \"${args}\" on \\`${typeName}.${fieldName}\\`.`\n )\n return\n }\n\n try {\n const definition = schemaComposer.getDirective(name)\n\n // Handle `defaultValue` when not provided as directive\n definition.args.forEach(({ name, defaultValue }) => {\n if (args[name] === undefined && defaultValue !== undefined) {\n args[name] = defaultValue\n }\n })\n\n Object.keys(args).forEach(arg => {\n const argumentDef = definition.args.find(\n ({ name }) => name === arg\n )\n if (!argumentDef) {\n report.error(\n `Field extension \\`${name}\\` on \\`${typeName}.${fieldName}\\` ` +\n `has invalid argument \\`${arg}\\`.`\n )\n return\n }\n const value = args[arg]\n try {\n validate(argumentDef.type, value)\n } catch (error) {\n report.error(\n `Field extension \\`${name}\\` on \\`${typeName}.${fieldName}\\` ` +\n `has argument \\`${arg}\\` with invalid value \"${value}\". ` +\n error.message\n )\n }\n })\n } catch (error) {\n report.error(\n `Field extension \\`${name}\\` on \\`${typeName}.${fieldName}\\` ` +\n `is not available.`\n )\n }\n })\n })\n }\n\n if (typeComposer.hasExtension(`addDefaultResolvers`)) {\n report.warn(\n `Deprecation warning - \"noDefaultResolvers\" is deprecated. In Gatsby 3, ` +\n `defined fields won't get resolvers, unless explicitly added with a ` +\n `directive/extension.`\n )\n }\n\n return typeComposer\n}\n\nconst checkIsAllowedTypeName = name => {\n invariant(\n name !== `Node`,\n `The GraphQL type \\`Node\\` is reserved for internal use.`\n )\n invariant(\n !name.endsWith(`FilterInput`) && !name.endsWith(`SortInput`),\n `GraphQL type names ending with \"FilterInput\" or \"SortInput\" are ` +\n `reserved for internal use. Please rename \\`${name}\\`.`\n )\n invariant(\n ![`Boolean`, `Date`, `Float`, `ID`, `Int`, `JSON`, `String`].includes(name),\n `The GraphQL type \\`${name}\\` is reserved for internal use by ` +\n `built-in scalar types.`\n )\n assertValidName(name)\n}\n\nconst createTypeComposerFromGatsbyType = ({\n schemaComposer,\n type,\n parentSpan,\n}) => {\n switch (type.kind) {\n case GatsbyGraphQLTypeKind.OBJECT: {\n return ObjectTypeComposer.createTemp(\n {\n ...type.config,\n interfaces: () => {\n if (type.config.interfaces) {\n return type.config.interfaces.map(iface => {\n if (typeof iface === `string`) {\n return schemaComposer.getIFTC(iface).getType()\n } else {\n return iface\n }\n })\n } else {\n return []\n }\n },\n },\n schemaComposer\n )\n }\n case GatsbyGraphQLTypeKind.INPUT_OBJECT: {\n return InputTypeComposer.createTemp(type.config, schemaComposer)\n }\n case GatsbyGraphQLTypeKind.UNION: {\n return UnionTypeComposer.createTemp(\n {\n ...type.config,\n types: () => {\n if (type.config.types) {\n return type.config.types.map(typeName =>\n schemaComposer.getOTC(typeName).getType()\n )\n } else {\n return []\n }\n },\n },\n schemaComposer\n )\n }\n case GatsbyGraphQLTypeKind.INTERFACE: {\n return InterfaceTypeComposer.createTemp(type.config, schemaComposer)\n }\n case GatsbyGraphQLTypeKind.ENUM: {\n return EnumTypeComposer.createTemp(type.config, schemaComposer)\n }\n case GatsbyGraphQLTypeKind.SCALAR: {\n return ScalarTypeComposer.createTemp(type.config, schemaComposer)\n }\n default: {\n report.warn(`Illegal type definition: ${JSON.stringify(type.config)}`)\n return null\n }\n }\n}\n\nconst addSetFieldsOnGraphQLNodeTypeFields = ({\n schemaComposer,\n nodeStore,\n parentSpan,\n}) =>\n Promise.all(\n Array.from(schemaComposer.values()).map(async tc => {\n if (tc instanceof ObjectTypeComposer && tc.hasInterface(`Node`)) {\n const typeName = tc.getTypeName()\n const result = await apiRunner(`setFieldsOnGraphQLNodeType`, {\n type: {\n name: typeName,\n nodes: nodeStore.getNodesByType(typeName),\n },\n traceId: `initial-setFieldsOnGraphQLNodeType`,\n parentSpan,\n })\n if (result) {\n // NOTE: `setFieldsOnGraphQLNodeType` only allows setting\n // nested fields with a path as property name, i.e.\n // `{ 'frontmatter.published': 'Boolean' }`, but not in the form\n // `{ frontmatter: { published: 'Boolean' }}`\n result.forEach(fields => tc.addNestedFields(fields))\n }\n }\n })\n )\n\nconst addThirdPartySchemas = ({\n schemaComposer,\n thirdPartySchemas,\n parentSpan,\n}) => {\n thirdPartySchemas.forEach(schema => {\n const schemaQueryType = schema.getQueryType()\n const queryTC = schemaComposer.createTempTC(schemaQueryType)\n processThirdPartyTypeFields({ typeComposer: queryTC, schemaQueryType })\n schemaComposer.Query.addFields(queryTC.getFields())\n\n // Explicitly add the third-party schema's types, so they can be targeted\n // in `createResolvers` API.\n const types = schema.getTypeMap()\n Object.keys(types).forEach(typeName => {\n const type = types[typeName]\n if (\n type !== schemaQueryType &&\n !isSpecifiedScalarType(type) &&\n !isIntrospectionType(type) &&\n type.name !== `Date` &&\n type.name !== `JSON`\n ) {\n const typeComposer = schemaComposer.createTC(type)\n if (\n typeComposer instanceof ObjectTypeComposer ||\n typeComposer instanceof InterfaceTypeComposer\n ) {\n processThirdPartyTypeFields({ typeComposer, schemaQueryType })\n }\n typeComposer.setExtension(`createdFrom`, `thirdPartySchema`)\n schemaComposer.addSchemaMustHaveType(typeComposer)\n }\n })\n })\n}\n\nconst resetOverriddenThirdPartyTypeFields = ({ typeComposer }) => {\n // The problem: createResolvers API mutates third party schema instance.\n // For example it can add a new field referencing a type from our main schema\n // Then if we rebuild the schema this old type instance will sneak into\n // the new schema and produce the famous error:\n // \"Schema must contain uniquely named types but contains multiple types named X\"\n // This function only affects schema rebuilding pathway.\n // It cleans up artifacts created by the `createResolvers` API of the previous build\n // so that we return the third party schema to its initial state (hence can safely re-add)\n // TODO: the right way to fix this would be not to mutate the third party schema in\n // the first place. But unfortunately mutation happens in the `graphql-compose`\n // and we don't have an easy way to avoid it without major rework\n typeComposer.getFieldNames().forEach(fieldName => {\n const createdFrom = typeComposer.getFieldExtension(fieldName, `createdFrom`)\n if (createdFrom === `createResolvers`) {\n typeComposer.removeField(fieldName)\n return\n }\n const config = typeComposer.getFieldExtension(\n fieldName,\n `originalFieldConfig`\n )\n if (config) {\n typeComposer.removeField(fieldName)\n typeComposer.addFields({\n [fieldName]: config,\n })\n }\n })\n}\n\nconst processThirdPartyTypeFields = ({ typeComposer, schemaQueryType }) => {\n resetOverriddenThirdPartyTypeFields({ typeComposer })\n\n // Fix for types that refer to Query. Thanks Relay Classic!\n typeComposer.getFieldNames().forEach(fieldName => {\n // Remove customization that we could have added via `createResolvers`\n // to make it work with schema rebuilding\n const field = typeComposer.getField(fieldName)\n const fieldType = field.type.toString()\n if (fieldType.replace(/[[\\]!]/g, ``) === schemaQueryType.name) {\n typeComposer.extendField(fieldName, {\n type: fieldType.replace(schemaQueryType.name, `Query`),\n })\n }\n })\n}\n\nconst addCustomResolveFunctions = async ({ schemaComposer, parentSpan }) => {\n const intermediateSchema = schemaComposer.buildSchema()\n const createResolvers = resolvers => {\n Object.keys(resolvers).forEach(typeName => {\n const fields = resolvers[typeName]\n if (schemaComposer.has(typeName)) {\n const tc = schemaComposer.getOTC(typeName)\n Object.keys(fields).forEach(fieldName => {\n const fieldConfig = fields[fieldName]\n if (tc.hasField(fieldName)) {\n const originalFieldConfig = tc.getFieldConfig(fieldName)\n const originalTypeName = originalFieldConfig.type.toString()\n const originalResolver = originalFieldConfig.resolve\n let fieldTypeName\n if (fieldConfig.type) {\n fieldTypeName = Array.isArray(fieldConfig.type)\n ? stringifyArray(fieldConfig.type)\n : fieldConfig.type.toString()\n }\n\n if (\n !fieldTypeName ||\n fieldTypeName.replace(/!/g, ``) ===\n originalTypeName.replace(/!/g, ``) ||\n tc.getExtension(`createdFrom`) === `thirdPartySchema`\n ) {\n const newConfig = {}\n if (fieldConfig.type) {\n newConfig.type = fieldConfig.type\n }\n if (fieldConfig.args) {\n newConfig.args = fieldConfig.args\n }\n if (fieldConfig.resolve) {\n newConfig.resolve = (source, args, context, info) =>\n fieldConfig.resolve(source, args, context, {\n ...info,\n originalResolver:\n originalResolver || context.defaultFieldResolver,\n })\n tc.extendFieldExtensions(fieldName, {\n needsResolve: true,\n })\n }\n tc.extendField(fieldName, newConfig)\n\n // See resetOverriddenThirdPartyTypeFields for explanation\n if (tc.getExtension(`createdFrom`) === `thirdPartySchema`) {\n tc.setFieldExtension(\n fieldName,\n `originalFieldConfig`,\n originalFieldConfig\n )\n }\n } else if (fieldTypeName) {\n report.warn(\n `\\`createResolvers\\` passed resolvers for field ` +\n `\\`${typeName}.${fieldName}\\` with type \\`${fieldTypeName}\\`. ` +\n `Such a field with type \\`${originalTypeName}\\` already exists ` +\n `on the type. Use \\`createTypes\\` to override type fields.`\n )\n }\n } else {\n tc.addFields({\n [fieldName]: fieldConfig,\n })\n // See resetOverriddenThirdPartyTypeFields for explanation\n tc.setFieldExtension(fieldName, `createdFrom`, `createResolvers`)\n }\n })\n } else {\n report.warn(\n `\\`createResolvers\\` passed resolvers for type \\`${typeName}\\` that ` +\n `doesn't exist in the schema. Use \\`createTypes\\` to add the type ` +\n `before adding resolvers.`\n )\n }\n })\n }\n await apiRunner(`createResolvers`, {\n intermediateSchema,\n createResolvers,\n traceId: `initial-createResolvers`,\n parentSpan,\n })\n}\n\nconst determineSearchableFields = ({ schemaComposer, typeComposer }) => {\n typeComposer.getFieldNames().forEach(fieldName => {\n const field = typeComposer.getField(fieldName)\n const extensions = typeComposer.getFieldExtensions(fieldName)\n if (field.resolve) {\n if (extensions.dateformat) {\n typeComposer.extendFieldExtensions(fieldName, {\n searchable: SEARCHABLE_ENUM.SEARCHABLE,\n sortable: SORTABLE_ENUM.SORTABLE,\n needsResolve: extensions.proxy ? true : false,\n })\n } else if (!_.isEmpty(field.args)) {\n typeComposer.extendFieldExtensions(fieldName, {\n searchable: SEARCHABLE_ENUM.DEPRECATED_SEARCHABLE,\n sortable: SORTABLE_ENUM.DEPRECATED_SORTABLE,\n needsResolve: true,\n })\n } else {\n typeComposer.extendFieldExtensions(fieldName, {\n searchable: SEARCHABLE_ENUM.SEARCHABLE,\n sortable: SORTABLE_ENUM.SORTABLE,\n needsResolve: true,\n })\n }\n } else {\n typeComposer.extendFieldExtensions(fieldName, {\n searchable: SEARCHABLE_ENUM.SEARCHABLE,\n sortable: SORTABLE_ENUM.SORTABLE,\n needsResolve: false,\n })\n }\n })\n}\n\nconst addConvenienceChildrenFields = ({ schemaComposer }) => {\n const parentTypesToChildren = new Map()\n const mimeTypesToChildren = new Map()\n const typesHandlingMimeTypes = new Map()\n\n schemaComposer.forEach(type => {\n if (\n (type instanceof ObjectTypeComposer ||\n type instanceof InterfaceTypeComposer) &&\n type.hasExtension(`mimeTypes`)\n ) {\n const { types } = type.getExtension(`mimeTypes`)\n new Set(types).forEach(mimeType => {\n if (!typesHandlingMimeTypes.has(mimeType)) {\n typesHandlingMimeTypes.set(mimeType, new Set())\n }\n typesHandlingMimeTypes.get(mimeType).add(type)\n })\n }\n\n if (\n (type instanceof ObjectTypeComposer ||\n type instanceof InterfaceTypeComposer) &&\n type.hasExtension(`childOf`)\n ) {\n if (type instanceof ObjectTypeComposer && !type.hasInterface(`Node`)) {\n report.error(\n `The \\`childOf\\` extension can only be used on types that implement the \\`Node\\` interface.\\n` +\n `Check the type definition of \\`${type.getTypeName()}\\`.`\n )\n return\n }\n if (\n type instanceof InterfaceTypeComposer &&\n !type.hasExtension(`nodeInterface`)\n ) {\n report.error(\n `The \\`childOf\\` extension can only be used on interface types that ` +\n `have the \\`@nodeInterface\\` extension.\\n` +\n `Check the type definition of \\`${type.getTypeName()}\\`.`\n )\n return\n }\n\n const { types, mimeTypes, many } = type.getExtension(`childOf`)\n new Set(types).forEach(parentType => {\n if (!parentTypesToChildren.has(parentType)) {\n parentTypesToChildren.set(parentType, new Map())\n }\n parentTypesToChildren.get(parentType).set(type, many)\n })\n new Set(mimeTypes).forEach(mimeType => {\n if (!mimeTypesToChildren.has(mimeType)) {\n mimeTypesToChildren.set(mimeType, new Map())\n }\n mimeTypesToChildren.get(mimeType).set(type, many)\n })\n }\n })\n\n parentTypesToChildren.forEach((children, parent) => {\n if (!schemaComposer.has(parent)) return\n const typeComposer = schemaComposer.getAnyTC(parent)\n if (\n typeComposer instanceof InterfaceTypeComposer &&\n !typeComposer.hasExtension(`nodeInterface`)\n ) {\n report.error(\n `With the \\`childOf\\` extension, children fields can only be added to ` +\n `interfaces which have the \\`@nodeInterface\\` extension.\\n` +\n `Check the type definition of \\`${typeComposer.getTypeName()}\\`.`\n )\n return\n }\n children.forEach((many, child) => {\n if (many) {\n typeComposer.addFields(createChildrenField(child.getTypeName()))\n } else {\n typeComposer.addFields(createChildField(child.getTypeName()))\n }\n })\n })\n\n mimeTypesToChildren.forEach((children, mimeType) => {\n const parentTypes = typesHandlingMimeTypes.get(mimeType)\n if (parentTypes) {\n parentTypes.forEach(typeComposer => {\n if (\n typeComposer instanceof InterfaceTypeComposer &&\n !typeComposer.hasExtension(`nodeInterface`)\n ) {\n report.error(\n `With the \\`childOf\\` extension, children fields can only be added to ` +\n `interfaces which have the \\`@nodeInterface\\` extension.\\n` +\n `Check the type definition of \\`${typeComposer.getTypeName()}\\`.`\n )\n return\n }\n children.forEach((many, child) => {\n if (many) {\n typeComposer.addFields(createChildrenField(child.getTypeName()))\n } else {\n typeComposer.addFields(createChildField(child.getTypeName()))\n }\n })\n })\n }\n })\n}\n\nconst addImplicitConvenienceChildrenFields = ({\n schemaComposer,\n typeComposer,\n nodeStore,\n}) => {\n const shouldInfer = typeComposer.getExtension(`infer`)\n // In Gatsby v3, when `@dontInfer` is set, children fields will not be\n // created for parent-child relations set by plugins with\n // `createParentChildLink`. With `@dontInfer`, only parent-child\n // relations explicitly set with the `childOf` extension will be added.\n // if (shouldInfer === false) return\n\n const parentTypeName = typeComposer.getTypeName()\n const nodes = nodeStore.getNodesByType(parentTypeName)\n\n const childNodesByType = groupChildNodesByType({ nodeStore, nodes })\n\n Object.keys(childNodesByType).forEach(typeName => {\n const typeChildren = childNodesByType[typeName]\n const maxChildCount = _.maxBy(\n _.values(_.groupBy(typeChildren, c => c.parent)),\n g => g.length\n ).length\n\n // Adding children fields to types with the `@dontInfer` extension is deprecated\n if (shouldInfer === false) {\n const childTypeComposer = schemaComposer.getAnyTC(typeName)\n const childOfExtension = childTypeComposer.getExtension(`childOf`)\n const many = maxChildCount > 1\n\n // Only warn when the parent-child relation has not been explicitly set with\n if (\n !childOfExtension ||\n !childOfExtension.types.includes(parentTypeName) ||\n !childOfExtension.many === many\n ) {\n const fieldName = many\n ? fieldNames.convenienceChildren(typeName)\n : fieldNames.convenienceChild(typeName)\n report.warn(\n `The type \\`${parentTypeName}\\` does not explicitly define ` +\n `the field \\`${fieldName}\\`.\\n` +\n `On types with the \\`@dontInfer\\` directive, or with the \\`infer\\` ` +\n `extension set to \\`false\\`, automatically adding fields for ` +\n `children types is deprecated.\\n` +\n `In Gatsby v3, only children fields explicitly set with the ` +\n `\\`childOf\\` extension will be added.\\n`\n )\n }\n }\n\n if (maxChildCount > 1) {\n typeComposer.addFields(createChildrenField(typeName))\n } else {\n typeComposer.addFields(createChildField(typeName))\n }\n })\n}\n\nconst createChildrenField = typeName => {\n return {\n [fieldNames.convenienceChildren(typeName)]: {\n type: () => [typeName],\n resolve(source, args, context) {\n const { path } = context\n return context.nodeModel.getNodesByIds(\n { ids: source.children, type: typeName },\n { path }\n )\n },\n },\n }\n}\n\nconst createChildField = typeName => {\n return {\n [fieldNames.convenienceChild(typeName)]: {\n type: () => typeName,\n async resolve(source, args, context) {\n const { path } = context\n const result = await context.nodeModel.getNodesByIds(\n { ids: source.children, type: typeName },\n { path }\n )\n if (result && result.length > 0) {\n return result[0]\n } else {\n return null\n }\n },\n },\n }\n}\n\nconst groupChildNodesByType = ({ nodeStore, nodes }) =>\n _(nodes)\n .flatMap(node =>\n (node.children || []).map(nodeStore.getNode).filter(Boolean)\n )\n .groupBy(node => (node.internal ? node.internal.type : undefined))\n .value()\n\nconst addTypeToRootQuery = ({ schemaComposer, typeComposer }) => {\n const sortInputTC = getSortInput({\n schemaComposer,\n typeComposer,\n })\n const filterInputTC = getFilterInput({\n schemaComposer,\n typeComposer,\n })\n const paginationTC = getPagination({\n schemaComposer,\n typeComposer,\n })\n\n const typeName = typeComposer.getTypeName()\n // not strictly correctly, result is `npmPackage` and `allNpmPackage` from type `NPMPackage`\n const queryName = fieldNames.query(typeName)\n const queryNamePlural = fieldNames.queryAll(typeName)\n\n schemaComposer.Query.addFields({\n [queryName]: {\n type: typeComposer,\n args: {\n ...filterInputTC.getFields(),\n },\n resolve: findOne(typeName),\n },\n [queryNamePlural]: {\n type: paginationTC,\n args: {\n filter: filterInputTC,\n sort: sortInputTC,\n skip: `Int`,\n limit: `Int`,\n },\n resolve: findManyPaginated(typeName),\n },\n }).makeFieldNonNull(queryNamePlural)\n}\n\nconst parseTypes = ({\n doc,\n plugin,\n createdFrom,\n schemaComposer,\n parentSpan,\n}) => {\n const types = []\n doc.definitions.forEach(def => {\n const name = def.name.value\n checkIsAllowedTypeName(name)\n\n if (schemaComposer.has(name)) {\n // We don't check if ast.kind matches composer type, but rely\n // that this will throw when something is wrong and get\n // reported by `reportParsingError`.\n\n // Keep the original type composer around\n const typeComposer = schemaComposer.get(name)\n\n // After this, the parsed type composer will be registered as the composer\n // handling the type name\n const parsedType = schemaComposer.typeMapper.makeSchemaDef(def)\n\n // Merge the parsed type with the original\n mergeTypes({\n schemaComposer,\n typeComposer,\n type: parsedType,\n plugin,\n createdFrom,\n parentSpan,\n })\n\n // Set the original type composer (with the merged fields added)\n // as the correct composer for the type name\n schemaComposer.typeMapper.set(typeComposer.getTypeName(), typeComposer)\n } else {\n const parsedType = schemaComposer.typeMapper.makeSchemaDef(def)\n types.push(parsedType)\n }\n })\n return types\n}\n\nconst stringifyArray = arr =>\n `[${arr.map(item =>\n Array.isArray(item) ? stringifyArray(item) : item.toString()\n )}]`\n\n// TODO: Import this directly from graphql-compose once we update to v7\nconst isNamedTypeComposer = type =>\n type instanceof ObjectTypeComposer ||\n type instanceof InputTypeComposer ||\n type instanceof ScalarTypeComposer ||\n type instanceof EnumTypeComposer ||\n type instanceof InterfaceTypeComposer ||\n type instanceof UnionTypeComposer\n\nconst validate = (type, value) => {\n if (type instanceof GraphQLNonNull) {\n if (value == null) {\n throw new Error(`Expected non-null field value.`)\n }\n return validate(type.ofType, value)\n } else if (type instanceof GraphQLList) {\n if (!Array.isArray(value)) {\n throw new Error(`Expected array field value.`)\n }\n return value.map(v => validate(type.ofType, v))\n } else {\n return type.parseValue(value)\n }\n}\n\nconst checkQueryableInterfaces = ({ schemaComposer }) => {\n const queryableInterfaces = new Set()\n schemaComposer.forEach(type => {\n if (\n type instanceof InterfaceTypeComposer &&\n type.getExtension(`nodeInterface`)\n ) {\n queryableInterfaces.add(type.getTypeName())\n }\n })\n const incorrectTypes = []\n schemaComposer.forEach(type => {\n if (type instanceof ObjectTypeComposer) {\n const interfaces = type.getInterfaces()\n if (\n interfaces.some(iface => queryableInterfaces.has(iface.name)) &&\n !type.hasInterface(`Node`)\n ) {\n incorrectTypes.push(type.getTypeName())\n }\n }\n })\n if (incorrectTypes.length) {\n report.panic(\n `Interfaces with the \\`nodeInterface\\` extension must only be ` +\n `implemented by types which also implement the \\`Node\\` ` +\n `interface. Check the type definition of ` +\n `${incorrectTypes.map(t => `\\`${t}\\``).join(`, `)}.`\n )\n }\n}\n\nconst mergeFields = ({ typeComposer, fields }) =>\n Object.entries(fields).forEach(([fieldName, fieldConfig]) => {\n if (typeComposer.hasField(fieldName)) {\n typeComposer.extendField(fieldName, fieldConfig)\n } else {\n typeComposer.setField(fieldName, fieldConfig)\n }\n })\n"],"file":"schema.js"}
\No newline at end of file