All Downloads are FREE. Search and download functionalities are using the official Maven repository.

web-interface.assets.325e2d4b-1536.794ef787e3fdc57b04da.js.map Maven / Gradle / Ivy

There is a newer version: 6.0.1
Show newest version
{"version":3,"file":"325e2d4b-1536.794ef787e3fdc57b04da.js","mappings":"kQA2BA,MAAMA,GAAYC,EAAAA,EAAAA,SAAOC,EAAAA,IAAV,gFAAGD,CAAH,yBAITE,GAAeF,EAAAA,EAAAA,SAAOG,EAAAA,IAAV,mFAAGH,EAAe,QAAC,MAAEI,GAAH,SAAeC,EAAAA,EAAAA,KAAd,CAAD,2IACnBD,EAAME,MAAMC,OAAOC,WACrBJ,EAAME,MAAMG,KAAKD,WAGnBJ,EAAMM,OAAOC,QAAQC,OAAOC,SAOjCC,EAAAA,EAAAA,IAAqBV,GAIdA,EAAMM,OAAOK,OAAOC,aAE3BC,EAAAA,EAAAA,IAAsBb,IAGpBa,EAAAA,EAAAA,IAAsBb,GArBI,IA2BpCF,EAAagB,YAAc,SAmB3B,MAsBA,EAtBuB,QAAC,MAAEC,GAAH,SACrB,gBAACpB,EAAD,KACGoB,EAAMC,KAAI,IAAkD,IAAjD,KAAEC,EAAF,MAAQC,EAAR,YAAeC,EAAf,eAA4BC,GAAqB,EAC3D,OAAKH,EAKH,gBAAC,KAAD,CAAaE,YAAaA,QAAAA,EAAe,GAAIE,IAAKJ,GAChD,gBAAC,IAAD,CAAeK,GAAIL,EAAMM,gBAAiBH,GACxC,gBAACtB,EAAD,CAAc0B,QAAQ,QACpB,gBAAC,KAAD,KACGN,MARF,IAGT,IAPiB,C,gTC7CvB,QARA,SAAsCO,EAAgCC,GACpE,OAAO,SAA0BC,GAC/B,MAAMC,GAASC,EAAAA,EAAAA,IAA4BH,aAAD,EAACA,EAAKI,WAEhD,OAAO,gBAACL,EAAD,KAAeE,EAAf,CAAsBI,yBAA0BH,IACxD,CACF,C,0GCRD,MAAMI,EAAY,CAChB,CAAEd,MAAO,mBAAoBD,KAAMgB,EAAAA,GAAAA,OAAAA,UAAAA,SAAkCb,gBAAgB,GACrF,CAAEF,MAAO,eAAgBD,KAAMgB,EAAAA,GAAAA,OAAAA,UAAAA,OAC/B,CAAEf,MAAO,YAAaD,KAAMgB,EAAAA,GAAAA,OAAAA,UAAAA,YAS9B,EAN6B,IAC3B,gBAAC,KAAD,KACE,gBAAC,IAAD,CAAgBlB,MAAOiB,I,iNCR3B,IAAIE,EAEG,MAAMC,GAAuBC,EAAAA,EAAAA,oBAAcC,GAE5CC,EAAmB,SAACC,GAAmH,IACvIC,EADwCC,EAA+F,uDAA1D,OAAUC,EAAgD,uDAAb,OAI5HF,EADED,SAAAA,EAAUI,GACFC,EAAAA,EAAAA,OAAoBL,GAEpBK,EAAAA,EAAAA,KAAkBL,GAG9BC,EAAQK,KAAKJ,GAAUK,MAAMJ,EAC9B,EAQYK,EAAwB,IAAgD,IAA/C,SAAEC,EAAF,gBAAYC,EAAZ,KAA6BC,GAAkB,EACnF,MAAMC,GAAgBC,EAAAA,EAAAA,aAAOf,IACtB,CAAEgB,IAAgBC,EAAAA,EAAAA,WAAS,IAC3BC,EAAYC,IAAiBF,EAAAA,EAAAA,UAASJ,EAAKO,SAC3CC,EAAaC,IAAkBL,EAAAA,EAAAA,UAASJ,EAAKQ,aAE9CE,GAAoBC,EAAAA,EAAAA,cAAaC,IACrC,MAAMC,EAAuBD,EAAW9C,KAAKgD,IACpC,CAAEC,IAAKD,EAAEE,KAAO,EAAGC,OAAQH,EAAEI,iBAAmB,EAAGC,KAAML,EAAEM,OAAQC,KAAM,YAGlFpB,EAAcqB,QAAQC,OAAOC,aAAaC,eAAeZ,EAAzD,GACC,IAEGa,GAAkBf,EAAAA,EAAAA,cAAapB,IACnC,MAAMF,EAAW,IACZW,EACHO,OAAQN,EAAcqB,QAAQC,OAAOC,aAAaG,WAClDnB,eAGFd,EAAAA,EAAAA,MAAmBL,EAAUE,EAA7B,GACC,CAACS,EAAMQ,KAEVoB,EAAAA,EAAAA,YAAU,KACJ3B,EAAcqB,SAChBrB,EAAcqB,QAAQC,OAAOM,QAAQC,UAAU,aAAa,EAC7D,IAGH,MAAMC,GAA4BC,EAAAA,EAAAA,UAAQ,KACxC,MAAMC,EAAqB,WAAuD,IAAtD1C,EAAsD,uDAAb,OACnE,MAAM2C,EAAY,IACblC,EACHO,OAAQN,EAAcqB,QAAQC,OAAOC,aAAaG,WAClDnB,eAGFd,EAAAA,EAAAA,MAAmBwC,GAAW,IAAM3C,EAAS2C,IAC9C,EAuBD,MAAQ,CACN1B,cACA2B,kBAAmB1B,EACnB2B,uBAxB6B,WAAgG,IAA/F7C,EAA+F,uDAA1D,OAAUC,EAAgD,uDAAb,OAChHyC,GAAoB5C,GAAaD,EAAiBC,EAAUE,EAAUC,IACvE,EAuBCS,gBACAF,kBACAsC,YAAa,IAAMlC,GAAa,GAChCE,aACAiC,eAzBsB/B,IACtBD,EAAcC,GAEVvB,IACFuD,aAAavD,GACbA,EAAmB,MAGrBA,EAAmBwD,YAAW,KAC5Bd,GAAiBe,IAGf/B,EAFmB+B,GAAU,GAE7B,GAHF,GAKC,IANH,EASF,GAUC,CACDjC,EACAE,EACAV,EACAK,EACAN,EACA2B,IAGF,OACE,gBAACzC,EAAqByD,SAAtB,CAA+BC,MAAOZ,GACnCjC,EAFL,EAOFD,EAAsB+C,UAAY,CAChC9C,SAAU+C,IAAAA,KAAAA,WACV9C,gBAAiB8C,IAAAA,MACjB7C,KAAM6C,IAAAA,MAAgB,CACpBpD,GAAIoD,IAAAA,OACJ7E,MAAO6E,IAAAA,OACPrC,YAAaqC,IAAAA,OACbtC,OAAQsC,IAAAA,UAIZhD,EAAsBiD,aAAe,CACnC/C,gBAAiB,GACjBC,KAAM,CACJQ,YAAa,GACbD,OAAQ,K,0LCxIRwC,EAAU,CAAC,EAEfA,EAAQC,kBAAoB,IAC5BD,EAAQE,cAAgB,IAElBF,EAAQG,OAAS,SAAc,KAAM,QAE3CH,EAAQI,OAAS,IACjBJ,EAAQK,mBAAqB,IAEhB,IAAI,IAASL,GAKnB,QAAe,KAAW,WAAiB,gBAAiB5D,ECA7DkE,EAAqB,IAAgB,IAAf,OAAEC,GAAa,EACzC,MAAM,gBAAEvD,IAAoBwD,EAAAA,EAAAA,YAAWtE,GAEvC,GAAIqE,EACF,OAAO,KAaT,OACE,gBAAC,KAAD,CAAO7D,GAAG,oBAAoB+D,MAAM,oBAAoBC,KAAK,gEAC3D,uBAAKC,UAAU,uBACe,IAA3B3D,EAAgB4D,OACb,gDACA,sBAAID,UAAWE,EAAAA,iBAfQ7D,EAAgBjC,KAAK+F,GAElD,sBAAI1F,IAAK0F,EAASpE,IAChB,gBAAC,IAAD,CAAMrB,GAAIW,EAAAA,GAAAA,OAAAA,UAAAA,SAAiC8E,EAASpE,KACjDoE,EAAS7F,YAMlB,EAcFqF,EAAmBT,UAAY,CAC7BU,OAAQT,IAAAA,KAAAA,YAGV,UClCMiB,EAAW,IAAgB,IAAf,OAAER,GAAa,EAC/B,MAAM,YACJ9C,EADI,kBAEJ2B,EAFI,uBAGJC,EAHI,cAIJnC,EAJI,YAKJoC,EALI,eAMJC,EANI,WAOJjC,IACEkD,EAAAA,EAAAA,YAAWtE,IAER8E,EAASC,IAAc5D,EAAAA,EAAAA,WAAS,IAChC6D,EAAcC,IAAmB9D,EAAAA,EAAAA,UAAS,IAE3C+D,EAAeC,IACnB,GAAIA,EAAMC,gBAAgBC,SAAS,uBAAwB,CACzD,MAAMC,EAAkBH,EAAMC,gBAAgBG,MAAM,kBAAkB,GACtEN,EAAiB,eAAcK,qBAChC,GAoCH,OACE,wBAAME,SAlCcC,IACpBA,EAAMC,iBAENvC,GAAuB,KACrB8B,EAAgB,IAChBF,GAAW,GACXY,EAAAA,EAAAA,QAAA,GACCT,EAJH,GAgCE,gCACE,gBAAC,KAAD,CAAW1E,GAAG,wBACZ,gBAAC,KAAD,cACA,gBAAC,YAAD,sGAGDsE,GACC,gBAAC,KAAD,CAAoBc,SAAS,iGAG/B,gBAAC,KAAD,CAAOxD,KAAK,WACL5B,GAAG,cACH+D,MAAM,cACNb,MAAOnC,EACPsE,SA/BoBJ,IAC/BV,GAAW,GACX7B,EAAkBuC,EAAMK,OAAOpC,MAA/B,EA8BWqC,WAAS,EACTvB,KAAK,iCAEZ,gBAAC,EAAD,CAAoBH,OAAQA,IAE5B,gBAAC,KAAD,CAAO7D,GAAG,qBAAqB+D,MAAM,cAAcC,KAAK,yDAAyDW,MAAOH,GACtH,gBAAC,KAAD,CAAkBxE,GAAK,UAAQ6D,EAAS,UAAY,SAClC2B,KAAK,WACLC,OAAQ7C,EACRyC,SApCEK,IAC1BjB,EAAgB,IAChBF,GAAW,GACX1B,EAAe6C,EAAf,EAkCwBxC,MAAOtC,EACP+E,SAAUnF,MAIhC,gBAAC,KAAD,KACE,gBAAC,KAAD,CAAKoF,GAAI,IACP,gBAAC,KAAD,CAAYC,iBAAmB,IAAEhC,EAAS,cAAgB,uBAC9CiC,WAAYjC,GACV,gBAAC,KAAD,CAAQjC,KAAK,SAAS/C,QAAQ,OAAOkH,QA3DvC,KAClBpD,GAAwBpC,IACtBkE,EAAgB,IAChBF,GAAW,GACXY,EAAAA,EAAAA,QAAgB7F,EAAAA,GAAAA,OAAAA,UAAAA,KAA6BiB,EAAKP,IAAlD,GACC0E,EAJH,GA0DoB,eAIFsB,SA5CC,KACnBb,EAAAA,EAAAA,QAAA,MAGF,EA+CFd,EAASlB,UAAY,CACnBU,OAAQT,IAAAA,MAGViB,EAAShB,aAAe,CACtBQ,QAAQ,GAGV,U,oEC7HI,EAAU,CAAC,EAEf,EAAQN,kBAAoB,IAC5B,EAAQC,cAAgB,IAElB,EAAQC,OAAS,SAAc,KAAM,QAE3C,EAAQC,OAAS,IACjB,EAAQC,mBAAqB,IAEhB,IAAI,IAAS,GAKnB,QAAe,KAAW,WAAiB,gBAAiBjE,E,wHCInE,MASMuG,EAAaC,GACVA,EAASC,QAAQ,cAAe,MAGnCC,EAAsBC,IAC1B,MAAMC,EAAOD,EAAWE,OAAOlI,KAAKmI,GAAOA,EAAEC,SAAY,IAAGD,EAAEE,QAAUF,EAAEE,OAE1E,MAAQ,GAAEL,EAAWK,QAAQJ,EAAKK,KAAK,YAAYV,EAAUI,EAAWO,cAAxE,EAgBF,MAAMC,UAAmBC,EAAAA,UACvBC,YAAY/H,GACVgI,MAAMhI,GADW,gCAeMiI,IACvB,MAAM,SAAEC,GAAaC,KAAKC,MACpBC,EAAWC,EAAAA,EAAAA,MAAkBJ,GAEnCG,EAASJ,IAAiBI,EAASJ,GAEnCE,KAAKI,SAAS,CAAEL,SAAUG,GAA1B,IArBiB,2BAwBCG,IAClB,MAAM,SAAEN,GAAaC,KAAKC,MAE1B,OAAKI,EAIEA,EAAYnJ,KAAKoJ,IACtB,IAAIC,EAAU,KAwBd,OAtBIR,EAASO,EAAEf,QACbgB,EACE,0BACE,sBAAIC,QAAQ,KACV,gBAAC,KAAD,CAAOC,WAAS,EAACC,SAAO,EAACC,OAAK,GAC5B,6BACE,0BACE,uCACA,kCACA,sCACA,2CAGJ,6BACeL,EA7DXlB,OAAOlI,KAAKmI,GAE1B,sBAAI9H,IAAK8H,EAAEE,MACT,sBAAIzC,UAAW8D,EAAAA,wBAAyCvB,EAAEE,MAC1D,sBAAIzC,UAAW8D,EAAAA,wBAAyC9B,EAAUO,EAAE5E,OACpE,sBAAIqC,UAAY,GAAE8D,EAAAA,wCAAyDvB,EAAEC,SAAW,KAAO,gBAAC,KAAD,CAAMC,KAAK,WAC1G,0BAAKF,EAAEzF,qBAgEP,yBAAOrC,IAAK+I,EAAEf,MACZ,sBAAIX,QAAS,IAAMoB,KAAKa,sBAAsBP,EAAEf,MAAOzC,UAAW8D,EAAAA,cAChE,sBAAI9D,UAAW8D,EAAAA,mBAAmC,4BAAO3B,EAAmBqB,KAC5E,0BAAKA,EAAE1G,cAER2G,EANL,IA5BO,EAGT,IA/BiB,wBAoEH,CAACO,EAASC,KACxBf,KAAKI,SAAS,CAAEY,YAAaF,EAASC,SAAUA,GAAhD,IArEiB,6BAwEGE,IACpB,MAAM,oBAAEC,EAAF,yBAAuBjJ,GAA6B+H,KAAKnI,MAI/D,GAFAI,EAAyBkJ,aAEpBD,EACH,OAGF,GAAID,EAAOlE,QAAU,EAMnB,YALAiD,KAAKI,SAAS,CACZgB,oBAAqBF,EACrBF,YAAa,IAMjB,MAAMK,EAAuBH,EAAoBD,QAAQ/B,IACvD,MAAMoC,EAASC,OAAON,GAEtB,OAAOK,EAAOE,KAAKvC,EAAmBC,KAAgBoC,EAAOE,KAAKtC,EAAWtF,YAA7E,IAGFoG,KAAKI,SAAS,CACZgB,oBAAqBC,EACrBL,YAAa,GAFf,IAhGiB,yBAsGF,KACf,MAAM,oBAAEE,EAAF,yBAAuBjJ,GAA6B+H,KAAKnI,MAE/DI,EAAyBkJ,YAEzBnB,KAAKI,SAAS,CACZgB,oBAAqBF,EACrBF,YAAa,GAFf,IAxGAhB,KAAKC,MAAQ,CACXF,SAAU,CAAC,EACXiB,YAAanJ,EAAMI,yBAAyBwJ,KAC5CV,SAAU,GACVK,yBAAqB7I,EAExB,CAEDmJ,oBACE5I,EAAAA,EAAAA,eACD,CAoGD6I,SACE,MAAM,YAAEX,EAAF,oBAAeI,EAAf,SAAoCL,GAAaf,KAAKC,OACtD,oBAAEiB,GAAwBlB,KAAKnI,MAErC,IAAKqJ,EACH,OAAO,gBAAC,KAAD,MAGT,MAAMU,EAAkBR,GAAuBF,EACzCW,EAAeD,EAAgBE,OAAOd,EAAc,GAAKD,EAAUC,EAAcD,GAEvF,OACE,gBAAC,KAAD,CAAOgB,OAAO,yBACZ,gBAAC,KAAD,CAAKjF,UAAU,UACb,gBAAC,KAAD,CAAK2B,GAAI,IACP,qBAAG3B,UAAW8D,EAAAA,0BAAd,YACW,gBAACoB,EAAA,EAAD,CAAmBP,KAAMQ,EAAAA,EAAAA,MAAAA,eACN1H,KAAK,uBAAwB,IAF3D,wEAOJ,gBAAC,KAAD,CAAKuC,UAAU,UACb,gBAAC,KAAD,CAAK2B,GAAI,IACP,gBAAC,KAAD,CAAM5F,GAAG,kBAAkBqJ,iBAAkB,EAAGC,WAAW,GACzD,gBAAC,KAAD,CAAKC,SAAU,EAAGhL,MAAM,aACtB,gBAAC,KAAD,KACE,gBAAC,KAAD,CAAKiL,GAAI,IACP,qBAAGvF,UAAW8D,EAAAA,WAAd,wIAMJ,gBAAC,KAAD,KACE,gBAAC,KAAD,CAAKyB,GAAI,IACP,gBAAC,KAAD,CAAYC,SAAUtC,KAAKuC,mBACf3F,MAAM,eACN4F,UAAW,EACXC,kBAAkB,SAClBC,QAAS1C,KAAK2C,iBAC1B,uBAAK7F,UAAY,oBAAmB8D,EAAAA,aAClC,gBAAC,KAAD,CAAegC,WAAYhB,EAAgB7E,OAC5BgE,SAAUA,EACV7C,SAAU8B,KAAK6C,cACfC,oBAAoB,GACjC,gBAAC,KAAD,CAAOrC,WAAS,GACd,6BACE,0BACE,sCACA,2CAGHT,KAAK+C,iBAAiBlB,SAOnC,gBAAC,KAAD,CAAKO,SAAU,EAAGhL,MAAM,WACtB,qBAAG0F,UAAW8D,EAAAA,WAAd,mFAGA,uBAAK9D,UAAY,GAAE8D,EAAAA,aAA6BA,EAAAA,mBAlN1C,uSA2NnB,EAGHlB,EAAW1D,UAAY,CACrBkF,oBAAqBjF,IAAAA,MACrBhE,yBAA0BgE,IAAAA,OAAAA,YAG5ByD,EAAWxD,aAAe,CACxBgF,yBAAqB3I,GAGvB,SAAeyK,EAAAA,EAAAA,IAAQC,EAAAA,EAAAA,GAA6BvD,GAClD,CAAEwD,UAAWC,EAAAA,IACb,QAAC,UAAED,GAAH,QAAoB,IAAKA,EAAzB,I,oBC3OF,MAAME,EAAO,IAAuB,IAC9BC,GADQ,OAAE3G,EAAF,MAAUtF,GAAY,EASlC,OALEiM,EADE3G,EACU,uBAEA,6CAAoB,0BAAKtF,IAIrC,2BACE,gBAACkM,EAAA,EAAD,MACA,gBAAC,KAAD,CAAYlM,MAAOiM,EACPE,kBAAmB,CACjBnM,MAAO,+BACPD,KAAM8K,EAAAA,EAAAA,MAAAA,iBAElB,oIACwG,IADxG,cAEc,IAFd,8GAOF,gBAAC,KAAD,CAAKnF,UAAU,WACb,gBAAC,KAAD,CAAK2B,GAAI,GACP,gBAAC,EAAD,CAAU/B,OAAQA,KAEpB,gBAAC,KAAD,CAAK+B,GAAI,GACP,gBAAC,EAAD,QApBR,EA2BF2E,EAAKpH,UAAY,CACf5E,MAAO6E,IAAAA,OACPS,OAAQT,IAAAA,MAGVmH,EAAKlH,aAAe,CAClB9E,MAAO,GACPsF,QAAQ,GAGV,U,oCCnCA,MAAM8G,GAAkB,IAAiC,IAAhC,OAAEpE,EAAF,KAAUhG,EAAV,UAAgBqK,GAAgB,EACvD,MAAOC,EAAWC,IAAgBnK,EAAAA,EAAAA,WAAS,IACpCoK,EAAcC,IAAmBrK,EAAAA,EAAAA,eAASjB,GAE3CuL,EAA8B,QAAlB1E,EAAO2E,OACnB3M,GAAQwM,aAAA,EAAAA,EAAcxM,QAAS,GAC/BiM,EAAYS,EAAY,oBAAuB,iBAAgB1M,IAE/D4M,EAAqBF,EAAY,GAdzC,WAAqD,IAAZ1M,EAAY,uDAAJ,GAC/C,OADmD,uDAAhB,IAClB6J,QAAQhE,GAChBA,EAASgH,OAAOC,MAAMC,IAA0C,IAAhCA,EAAMC,MAAMC,QAAQjN,MAE9D,CAU6CkN,CAAgBb,EAAWrM,GAsBvE,OApBA4D,EAAAA,EAAAA,YAAU,KACR6I,EArBJ,SAAqBzK,EAAM2K,GAAQ,MACjC,OAAO3K,SAAP,UAAOA,EAAMgL,aAAb,aAAO,EAAanD,QAAQsD,GAAMA,EAAE1L,KAAOkL,IAAQ,EACpD,CAmBmBS,CAAYpL,EAAMgG,EAAO2E,QAAzC,GACC,CAAC3E,EAAQhG,KAEZ4B,EAAAA,EAAAA,YAAU,KACJ8I,EACFH,GAAa,IAEbc,EAAAA,EAAAA,OAEA3L,EAAAA,EAAAA,IAAiBsG,EAAO2E,QAAQhL,MAAK,SAAWyE,IACzB,MAAjBA,EAAMkH,QACR1G,EAAAA,EAAAA,KAAa7F,EAAAA,GAAAA,OAAAA,UAAAA,MACd,IAGHwL,IAAeC,GAAgBH,IAChC,GACA,CAACG,EAAcE,EAAW1E,EAAO2E,OAAQN,IAExCC,EACK,gBAAC,KAAD,CAASnJ,KAAK,4BAIrB,gBAAC,KAAD,CAAenD,MAAOiM,GACpB,gBAACpK,EAAD,CAAuBE,gBAAiB6K,EAAoB5K,KAAMwK,GAChE,gBAAC,EAAD,CAAMlH,OAAQoH,EAAW1M,MAAOA,KAHtC,EASFoM,GAAgBxH,UAAY,CAC1BoD,OAAQnD,IAAAA,MAAgB,CACtB8H,OAAQ9H,IAAAA,SACP0I,WACHvL,KAAM6C,IAAAA,MAAgB,CACpBpD,GAAIoD,IAAAA,OACJ7E,MAAO6E,IAAAA,OACPrC,YAAaqC,IAAAA,OACbtC,OAAQsC,IAAAA,OACRF,MAAOE,IAAAA,SAETwH,UAAWxH,IAAAA,KAGbuH,GAAgBtH,aAAe,CAC7B9C,UAAMb,EACNkL,eAAWlL,GAGb,UAAeyK,EAAAA,EAAAA,IAAQ4B,EAAAA,EAAAA,GAAWpB,IAAkB,CAClDpK,KAAM+J,EAAAA,EACNM,UAAWoB,EAAAA,IACV,QAAC,UAAEpB,KAAcqB,GAAjB,QAAkC,CACnCrB,UAAWA,EAAUA,WAAa,MAC/BqB,EAFF,G,oMCpEI,MAAML,GAAmBM,EAAAA,EAAAA,IAC9B,kBACA,IAAMC,IAAAA,cAA2C,CAC/CC,OAAQ,CAAEC,aAAa,GACvBC,KAAM,CAAED,aAAa,GACrBE,cAAe,CAAEF,aAAa,GAC9BG,IAAK,CAAEH,aAAa,GACpBI,KAAM,CAAEJ,aAAa,GACrBK,OAAQ,CAAEL,aAAa,GACvBM,MAAO,CAAEN,aAAa,OA2BpBO,EAAoBjI,IACxBkI,EAAAA,EAAAA,MAAwB,0CAAyClI,EAAMmI,UACrE,0CADF,EAIWd,GAAiBe,EAAAA,EAAAA,IAC5B,kBACA,IAAMZ,IAAAA,YAAmB,CACvBa,YAAa,CAACpB,GACdhB,eAAWlL,EAEXuN,kBACE,MAAO,CAAErC,UAAWzD,KAAKyD,UAC1B,EAEDsC,sBAAsB9I,GACpB,GAAK+C,KAAKyD,UAEH,CACqBzD,KAAKyD,UAAUS,MAAM7E,GAAMA,EAAExG,KAAOoE,EAASpE,KAGrEmH,KAAKyD,UAAYzD,KAAKyD,UAAUvM,KAAKmI,GAAOA,EAAExG,KAAOoE,EAASpE,GAAKoE,EAAWoC,IAE9EW,KAAKyD,UAAUuC,KAAK/I,EAEvB,MATC+C,KAAKyD,UAAY,CAACxG,GAWpB+C,KAAKiG,QAAQ,CAAExC,UAAWzD,KAAKyD,WAChC,EAED0B,OACE,MAAMe,GAAMC,EAAAA,EAAAA,IAAWC,EAAAA,EAAAA,oBAAAA,OAAqCF,KAE5D,OAAOG,EAAAA,EAAAA,IAAM,MAAOH,GAAKnN,MAAMuN,IAC7BtG,KAAKyD,UAAY6C,EACjBtG,KAAKiG,QAAQ,CAAExC,UAAW6C,GAA1B,GACCb,EACJ,EAEDL,cAAc,GAI8B,IAJ9B,KACZ3D,EADY,QAEZ8E,EAFY,MAGZC,GAC0C,EAC1C,MAAMN,GAAMO,EAAAA,EAAAA,GAAcL,EAAAA,EAAAA,oBAAAA,gBAA8CF,IAAKzE,EAAM8E,EAASC,GAEtF9N,GAAU2N,EAAAA,EAAAA,IAAM,OAAOF,EAAAA,EAAAA,IAAWD,IAAMnN,MAAMuN,IAAD,CACjDnB,KAAMuB,IAAAA,KAAeJ,EAAS7C,WAC9BkD,WAAY,CACVlF,KAAM6E,EAAS7E,KACf8E,QAASD,EAASM,SAClBJ,MAAOF,EAASE,MAChBK,MAAOP,EAASO,MAChBC,MAAOR,EAASQ,UAEhBrB,GAIJ,OAFAhB,EAAiBW,cAAc1M,QAAQA,GAEhCA,CACR,EAED2M,IAAI0B,GACF,MAKMb,GAAMC,EAAAA,EAAAA,IAAWC,EAAAA,EAAAA,oBAAAA,IAAkCW,GAAYb,MACrDG,EAAAA,EAAAA,IAAM,MAAOH,GAErBnN,KAAKiH,KAAK+F,uBARIvI,IACpBkI,EAAAA,EAAAA,MAAwB,yCAAwClI,EAAMmI,UACnE,2CAA0CoB,KAD7C,GAQH,EAEDzB,KAAK0B,GACH,MAKMd,GAAMC,EAAAA,EAAAA,IAAWC,EAAAA,EAAAA,oBAAAA,SAAuCF,KACxDjJ,EAAW,CACf7F,MAAO4P,EAAe5P,MACtBwC,YAAaoN,EAAepN,YAC5BD,OAAQqN,EAAerN,QAEnBjB,GAAU2N,EAAAA,EAAAA,IAAM,OAAQH,EAAKjJ,GAEnCvE,EAAQK,MACLuN,IACCtG,KAAK+F,sBAAsBO,GAC3BZ,EAAAA,EAAAA,QAA0B,aAAYzI,EAAS7F,8BAA/C,IAhBkBoG,IACpBkI,EAAAA,EAAAA,MAAwB,uCAAsClI,EAAMmI,UAClE,qCADF,IAoBFlB,EAAiBa,KAAK5M,QAAQA,EAC/B,EAED6M,OAAOyB,GACL,MAKMd,GAAMC,EAAAA,EAAAA,IAAWC,EAAAA,EAAAA,oBAAAA,OAAqCY,EAAenO,IAAIqN,KACzEjJ,EAAW,CACfpE,GAAImO,EAAenO,GACnBzB,MAAO4P,EAAe5P,MACtBwC,YAAaoN,EAAepN,YAC5BD,OAAQqN,EAAerN,QAEnBjB,GAAU2N,EAAAA,EAAAA,IAAM,MAAOH,EAAKjJ,GAElCvE,EAAQK,MACLuN,IACCtG,KAAK+F,sBAAsBO,GAC3BZ,EAAAA,EAAAA,QAA0B,aAAYzI,EAAS7F,8BAA/C,IAjBkBoG,IACpBkI,EAAAA,EAAAA,MAAwB,yCAAwClI,EAAMmI,UACpE,uCADF,IAqBFlB,EAAiBc,OAAO7M,QAAQA,EACjC,EACDuM,OAAO8B,GACL,MAKMb,GAAMC,EAAAA,EAAAA,IAAWC,EAAAA,EAAAA,oBAAAA,OAAqCW,GAAYb,KAElExN,GAAU2N,EAAAA,EAAAA,IAAM,SAAUH,GAAKnN,MAAK,KACxC,MAAMkO,EAAmBjH,KAAKyD,WAAa,GAE3CzD,KAAKyD,UAAYwD,EAAiBhG,QAAQiG,GAAOA,EAAGrO,KAAOkO,IAC3D/G,KAAKiG,QAAQ,CAAExC,UAAWzD,KAAKyD,YAC/BiC,EAAAA,EAAAA,QAA0B,aAAYqB,0BAAtC,IAZoBvJ,IACpBkI,EAAAA,EAAAA,MAAwB,yCAAwClI,EAAMmI,UACnE,yCAAwCoB,KAD3C,IAgBF,OAFAtC,EAAiBQ,OAAOvM,QAAQA,GAEzBA,CACR,EACD8M,MAAMwB,EAAgBrO,GACpB,MAAMuN,GAAMC,EAAAA,EAAAA,IAAWC,EAAAA,EAAAA,oBAAAA,QAAsCF,KACvDjJ,EAAW,CACf7F,MAAO4P,EAAe5P,MACtBwC,YAAaoN,EAAepN,YAC5BD,OAAQqN,EAAerN,QAGzB,OAAO0M,EAAAA,EAAAA,IAAM,OAAQH,EAAKjJ,GAAUlE,MAClC,KAEEJ,EAAS,GAAT,IAED6E,IAEsB,MAAjBA,EAAMkH,QACR/L,EAAS6E,EAAM2J,WAAWC,KAC3B,GAGN,K,6LC7JE,MAAMtO,GAAeiM,EAAAA,EAAAA,IAC1B,cACA,IAAMC,IAAAA,cAAuC,CAC3CC,OAAQ,CAAEC,aAAa,GACvBC,KAAM,CAAED,aAAa,GACrBG,IAAK,CAAEH,aAAa,GACpBI,KAAM,CAAEJ,aAAa,GACrBK,OAAQ,CAAEL,aAAa,GACvBM,MAAO,CAAEN,aAAa,GACtBmC,SAAU,CAAEnC,aAAa,GACzBoC,cAAe,CAAEpC,aAAa,GAC9BqC,kBAAmB,CAAErC,aAAa,GAClCsC,oBAAqB,CAAEtC,aAAa,GACpCE,cAAe,CAAEF,aAAa,OAIrB/B,GAAayC,EAAAA,EAAAA,IACxB,cACA,IAAMZ,IAAAA,YAA0C,CAC9Ca,YAAa,CAAC/M,GACdsL,WAAO7L,EACPkP,kBAAclP,EACd2I,yBAAqB3I,EACrBmP,mBAAenP,EAEfuN,kBACE,MAAO,CACL1B,MAAOpE,KAAKoE,MACZqD,aAAczH,KAAKyH,aACnBvG,oBAAqBlB,KAAKkB,oBAC1BwG,cAAe1H,KAAK0H,cAEvB,EAEDC,kBAAkBvO,GAChB,GAAK4G,KAAKoE,MAEH,CACiBpE,KAAKoE,MAAMF,MAAMK,GAAMA,EAAE1L,KAAOO,EAAKP,KAGzDmH,KAAKoE,MAAQpE,KAAKoE,MAAMlN,KAAKqN,GAAOA,EAAE1L,KAAOO,EAAKP,GAAKO,EAAOmL,IAE9DvE,KAAKoE,MAAM4B,KAAK5M,EAEnB,MATC4G,KAAKoE,MAAQ,CAAChL,GAWhB4G,KAAKiG,QAAQ,CAAE7B,MAAOpE,KAAKoE,MAAOlD,oBAAqBlB,KAAKkB,qBAC7D,EAED0G,2BAA2BC,GACrBA,IACF7H,KAAKkB,oBAAsB2G,EAAUC,MAAK,CAACC,EAAKC,KAAQC,EAAAA,EAAAA,GAAYF,EAAIxI,KAAMyI,EAAIzI,SAGpFS,KAAKiG,QAAQ,CAAE7B,MAAOpE,KAAKoE,MAAOlD,oBAAqBlB,KAAKkB,qBAC7D,EAEDiE,OACE,MAKMe,GAAMC,EAAAA,EAAAA,IAAWC,EAAAA,EAAAA,gBAAAA,OAAiCF,KAExD,OAAOG,EAAAA,EAAAA,IAAM,MAAOH,GAAKnN,MAAMuN,IAC7BtG,KAAKoE,MAAQkC,EACbtG,KAAKiG,QAAQ,CAAE7B,MAAOkC,EAAUpF,oBAAqBlB,KAAKkB,qBAA1D,IAToB1D,IACpBkI,EAAAA,EAAAA,MAAwB,sCAAqClI,EAAMmI,UACjE,sCADF,GAUH,EAEDP,cAAc,GAA+D,IAA/D,KAAE3D,EAAF,QAAQ8E,EAAR,MAAiBC,GAA8C,EAC3E,MAAMN,GAAMO,EAAAA,EAAAA,GAAcL,EAAAA,EAAAA,gBAAAA,gBAA0CF,IAAKzE,EAAM8E,EAASC,GAClF9N,GAAU2N,EAAAA,EAAAA,IAAM,OAAOF,EAAAA,EAAAA,IAAWD,IACrCnN,MAAMuN,IAAD,CACJnB,KAAMmB,EAASlC,MACf8D,QAAS5B,EAAS4B,QAClBvB,WAAY,CACVE,MAAOP,EAASO,MAChBC,MAAOR,EAASQ,MAChBrF,KAAM6E,EAAS7E,KACf8E,QAASD,EAASM,SAClBJ,MAAOF,EAASE,WAGnBhJ,IACMA,EAAM2J,YAA0C,MAA5B3J,EAAM2J,WAAWzC,QACxCgB,EAAAA,EAAAA,MAAwB,0CAAyClI,IAAS,wBAC3E,IAKL,OAFA1E,EAAasM,cAAc1M,QAAQA,GAE5BA,CACR,EAED2M,IAAItB,GACF,MAKMmC,GAAMC,EAAAA,EAAAA,IAAWC,EAAAA,EAAAA,gBAAAA,IAA8BrC,GAAQmC,KACvDxN,GAAU2N,EAAAA,EAAAA,IAAM,MAAOH,GAK7B,OAHAxN,EAAQK,KAAKiH,KAAK2H,mBARInK,IACpBkI,EAAAA,EAAAA,MAAwB,kBAAiB3B,0BAA+BvG,EAAMmI,UAC3E,uCAAsC5B,KADzC,IAQFjL,EAAauM,IAAI3M,QAAQA,GAElBA,CACR,EAED4M,KAAK7L,GACH,MAKMyM,GAAMC,EAAAA,EAAAA,IAAWC,EAAAA,EAAAA,gBAAAA,SAAmCF,KACpD9M,EAAO,CACXhC,MAAOqC,EAAWrC,MAClBwC,YAAaH,EAAWG,YACxBD,OAAQF,EAAWE,QAEfjB,GAAU2N,EAAAA,EAAAA,IAAM,OAAQH,EAAK9M,GAWnC,OATAV,EAAQK,MAAMuN,IACZtG,KAAK2H,kBAAkBrB,GACvBZ,EAAAA,EAAAA,QAA0B,SAAQY,EAASlP,+BAEpCkP,KAjBa9I,IACpBkI,EAAAA,EAAAA,MAAwB,gBAAejM,EAAWrC,8BAA8BoG,EAAMmI,UACnF,mCAAkClM,EAAWrC,SADhD,IAmBF0B,EAAawM,KAAK5M,QAAQA,GAEnBA,CACR,EAED6M,OAAO9L,GACL,MAKMyM,GAAMC,EAAAA,EAAAA,IAAWC,EAAAA,EAAAA,gBAAAA,OAAiC3M,EAAWZ,IAAIqN,KACjE9M,EAAO,CACXP,GAAIY,EAAWZ,GACfzB,MAAOqC,EAAWrC,MAClBwC,YAAaH,EAAWG,YACxBD,OAAQF,EAAWE,QAEfjB,GAAU2N,EAAAA,EAAAA,IAAM,MAAOH,EAAK9M,GAWlC,OATAV,EAAQK,MAAMuN,IACZtG,KAAK2H,kBAAkBrB,GACvBZ,EAAAA,EAAAA,QAA0B,SAAQY,EAASlP,+BAEpCkP,KAlBa9I,IACpBkI,EAAAA,EAAAA,MAAwB,kBAAiBjM,EAAWrC,8BAA8BoG,EAAMmI,UACrF,qCAAoClM,EAAWrC,SADlD,IAoBF0B,EAAayM,OAAO7M,QAAQA,GAErBA,CACR,EACDuM,OAAO7L,GACL,MAKM8M,GAAMC,EAAAA,EAAAA,IAAWC,EAAAA,EAAAA,gBAAAA,OAAiChN,EAAKP,IAAIqN,KAE3DxN,GAAU2N,EAAAA,EAAAA,IAAM,SAAUH,GAAKnN,MAAK,KACxCiH,KAAKoE,MAAQpE,KAAKoE,MAAMnD,QAAQiG,GAAOA,EAAGrO,KAAOO,EAAKP,KACtDmH,KAAKiG,QAAQ,CAAE7B,MAAOpE,KAAKoE,MAAOlD,oBAAqBlB,KAAKkB,sBAC5DwE,EAAAA,EAAAA,QAA0B,SAAQtM,EAAKhC,kCAAvC,IAVoBoG,IACpBkI,EAAAA,EAAAA,MAAwB,kBAAiBtM,EAAKhC,8BAA8BoG,EAAMmI,UAC/E,qCAAoCvM,EAAKhC,SAD5C,IAcF,OAFA0B,EAAamM,OAAOvM,QAAQA,GAErBA,CACR,EACD8M,MAAM/L,EAAYd,GAChB,MAAMuN,GAAMC,EAAAA,EAAAA,IAAWC,EAAAA,EAAAA,gBAAAA,QAAkCF,KACnD9M,EAAO,CACXhC,MAAOqC,EAAWrC,MAClBwC,YAAaH,EAAWG,YACxBD,OAAQF,EAAWE,QAGrB,OAAO0M,EAAAA,EAAAA,IAAM,OAAQH,EAAK9M,GAAML,MAC7BuN,IAEC3N,EAAS,IAEF2N,KAER9I,IAEsB,MAAjBA,EAAMkH,QACR/L,EAAS6E,EAAM2J,WAAWC,KAC3B,GAGN,EACDC,SAASc,EAAWxP,GAClB,MAAMuN,GAAMC,EAAAA,EAAAA,IAAWC,EAAAA,EAAAA,gBAAAA,WAAqCF,KACtDxN,GAAU2N,EAAAA,EAAAA,IAAM,OAAQH,EAAK,CAAE9B,MAAO+D,IAI5C,OAFAzP,EAAQK,KAAKJ,GAEND,CACR,EACD4O,gBACE,GAAItH,KAAKkB,oBACP,OAGF,MAAMgF,GAAMC,EAAAA,EAAAA,IAAWC,EAAAA,EAAAA,gBAAAA,YAAsCF,KAE7D,OAAOG,EAAAA,EAAAA,IAAM,MAAOH,GACjBnN,KAAKiH,KAAK4H,2BACd,EACDL,oBACE,MAAMrB,GAAMC,EAAAA,EAAAA,IAAWC,EAAAA,EAAAA,gBAAAA,gBAA0CF,KAC3DxN,GAAU2N,EAAAA,EAAAA,IAAM,MAAOH,GAE7BxN,EAAQK,MACLuN,IACCtG,KAAK0H,cAAgBpB,EACrBtG,KAAKiG,QAAQ,CAAE7B,MAAOpE,KAAKoE,MAAOlD,oBAAqBlB,KAAKkB,oBAAqBwG,cAAe1H,KAAK0H,eAArG,IAEDlK,IACCkI,EAAAA,EAAAA,MAAwB,sCAAqClI,EAAMmI,UAAW,oCAA9E,IAIJ7M,EAAayO,kBAAkB7O,QAAQA,EACxC,EACD8O,oBAAoBY,GAClB,MAAMlC,GAAMC,EAAAA,EAAAA,IAAWC,EAAAA,EAAAA,gBAAAA,gBAA0CF,KAC3DxN,GAAU2N,EAAAA,EAAAA,IAAM,MAAOH,EAAKkC,GAElC1P,EAAQK,MACLuN,IACCtG,KAAK0H,cAAgBpB,EACrBtG,KAAKiG,QAAQ,CAAE7B,MAAOpE,KAAKoE,MAAOlD,oBAAqBlB,KAAKkB,oBAAqBwG,cAAe1H,KAAK0H,gBACrGhC,EAAAA,EAAAA,QAAyB,2CAAzB,IAEDlI,IACCkI,EAAAA,EAAAA,MAAwB,wCAAuClI,EAAMmI,UAAW,sCAAhF,IAIJ7M,EAAa0O,oBAAoB9O,QAAQA,EAC1C,K,mFC7UD2P,E,MAA0B,GAA4B,KAE1DA,EAAwBrC,KAAK,CAACsC,EAAOzP,GAAI,0SAA2S,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,iDAAiD,MAAQ,GAAG,SAAW,6GAA6G,eAAiB,CAAC,uTAAuT,WAAa,MAEz3BwP,EAAwBE,OAAS,CAChC,gBAAmB,wBAEpB,S,mFCPIF,E,MAA0B,GAA4B,KAE1DA,EAAwBrC,KAAK,CAACsC,EAAOzP,GAAI,qTAAsT,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,mDAAmD,MAAQ,GAAG,SAAW,wIAAwI,eAAiB,CAAC,iVAAiV,WAAa,MAE37BwP,EAAwBE,OAAS,CAChC,aAAgB,uBAChB,kBAAqB,uBACrB,yBAA4B,uBAC5B,UAAa,uBACb,gBAAmB,uBACnB,uBAA0B,wBAE3B,S","sources":["webpack://graylog-web-interface/./src/components/common/PageNavigation.tsx","webpack://graylog-web-interface/./src/components/common/withPaginationQueryParameter.tsx","webpack://graylog-web-interface/./src/components/pipelines/PipelinesPageNavigation.tsx","webpack://graylog-web-interface/./src/components/rules/RuleContext.tsx","webpack://graylog-web-interface/./src/components/rules/RuleForm.css?e1d2","webpack://graylog-web-interface/./src/components/rules/PipelinesUsingRule.jsx","webpack://graylog-web-interface/./src/components/rules/RuleForm.jsx","webpack://graylog-web-interface/./src/components/rules/RuleHelper.css?6420","webpack://graylog-web-interface/./src/components/rules/RuleHelper.jsx","webpack://graylog-web-interface/./src/components/rules/Rule.jsx","webpack://graylog-web-interface/./src/pages/RuleDetailsPage.jsx","webpack://graylog-web-interface/./src/stores/pipelines/PipelinesStore.ts","webpack://graylog-web-interface/./src/stores/rules/RulesStore.ts","webpack://graylog-web-interface/./src/components/rules/RuleForm.css","webpack://graylog-web-interface/./src/components/rules/RuleHelper.css"],"sourcesContent":["/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { Button, ButtonToolbar } from 'components/bootstrap';\nimport { LinkContainer } from 'components/common/router';\nimport { IfPermitted } from 'components/common';\nimport NavItemStateIndicator, {\n  hoverIndicatorStyles,\n  activeIndicatorStyles,\n} from 'components/common/NavItemStateIndicator';\n\nconst Container = styled(ButtonToolbar)`\n  margin-bottom: 10px;\n`;\n\nconst StyledButton = styled(Button)(({ theme }) => css`\n  font-family: ${theme.fonts.family.navigation};\n  font-size: ${theme.fonts.size.navigation};\n\n  &&&& {\n    color: ${theme.colors.variant.darker.default};\n    \n    :hover, :focus {\n      text-decoration: none;  \n    }\n\n    :hover {\n      ${hoverIndicatorStyles(theme)}\n    }\n\n    &.active {\n      color: ${theme.colors.global.textDefault};\n\n      ${activeIndicatorStyles(theme)}\n\n      :hover, :focus {\n        ${activeIndicatorStyles(theme)}\n      }\n    }\n  }\n`);\n\nStyledButton.displayName = 'Button';\n\ntype Props = {\n  /**\n   * List of nav items. Define permissions, if the item should only be displayed for users with specific permissions.\n   * By default, an item is active if the current URL starts with the item URL.\n   * If you only want to display an item as active only when its path matches exactly, set `exactPathMatch` to true.\n   */\n  items: Array<{\n    title: string,\n    path: string,\n    permissions?: string | Array\n    exactPathMatch?: boolean,\n  }>\n}\n\n/**\n * Simple tab navigation to allow navigating to subareas of a page.\n */\nconst PageNavigation = ({ items }: Props) => (\n  \n    {items.map(({ path, title, permissions, exactPathMatch }) => {\n      if (!path) {\n        return null;\n      }\n\n      return (\n        \n          \n            \n              \n                {title}\n              \n            \n          \n        \n      );\n    })}\n  \n);\n\nexport default PageNavigation;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\n\nimport usePaginationQueryParameter from 'hooks/usePaginationQueryParameter';\n\nexport type PaginationQueryParameterObject = {\n  pageSizes?: number[];\n};\n\nfunction withPaginationQueryParameter(Component: React.ComponentType, obj?: PaginationQueryParameterObject) {\n  return function WrappedComponent(props) {\n    const result = usePaginationQueryParameter(obj?.pageSizes);\n\n    return ;\n  };\n}\n\nexport default withPaginationQueryParameter;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport * as React from 'react';\n\nimport PageNavigation from 'components/common/PageNavigation';\nimport Routes from 'routing/Routes';\nimport { Row } from 'components/bootstrap';\n\nconst NAV_ITEMS = [\n  { title: 'Manage pipelines', path: Routes.SYSTEM.PIPELINES.OVERVIEW, exactPathMatch: true },\n  { title: 'Manage rules', path: Routes.SYSTEM.PIPELINES.RULES },\n  { title: 'Simulator', path: Routes.SYSTEM.PIPELINES.SIMULATOR },\n];\n\nconst EventsPageNavigation = () => (\n  \n    \n  \n);\n\nexport default EventsPageNavigation;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React, { createContext, useEffect, useRef, useCallback, useState, useMemo } from 'react';\nimport PropTypes from 'prop-types';\n\nimport type { RuleType } from 'stores/rules/RulesStore';\nimport { RulesActions } from 'stores/rules/RulesStore';\n\nlet VALIDATE_TIMEOUT;\n\nexport const PipelineRulesContext = createContext(undefined);\n\nconst savePipelineRule = (nextRule: RuleType, callback: (rule: RuleType) => void = () => {}, onError: (error: object) => void = () => {}) => {\n  let promise;\n\n  if (nextRule?.id) {\n    promise = RulesActions.update(nextRule);\n  } else {\n    promise = RulesActions.save(nextRule);\n  }\n\n  promise.then(callback).catch(onError);\n};\n\ntype Props = {\n  children: React.ReactNode,\n  usedInPipelines: Array,\n  rule: RuleType,\n}\n\nexport const PipelineRulesProvider = ({ children, usedInPipelines, rule }: Props) => {\n  const ruleSourceRef = useRef(undefined);\n  const [, setAceLoaded] = useState(false);\n  const [ruleSource, setRuleSource] = useState(rule.source);\n  const [description, setDescription] = useState(rule.description);\n\n  const createAnnotations = useCallback((nextErrors: Array<{ line: number, position_in_line: number, reason: string }>) => {\n    const nextErrorAnnotations = nextErrors.map((e) => {\n      return { row: e.line - 1, column: e.position_in_line - 1, text: e.reason, type: 'error' };\n    });\n\n    ruleSourceRef.current.editor.getSession().setAnnotations(nextErrorAnnotations);\n  }, []);\n\n  const validateNewRule = useCallback((callback) => {\n    const nextRule = {\n      ...rule,\n      source: ruleSourceRef.current.editor.getSession().getValue(),\n      description,\n    };\n\n    RulesActions.parse(nextRule, callback);\n  }, [rule, description]);\n\n  useEffect(() => {\n    if (ruleSourceRef.current) {\n      ruleSourceRef.current.editor.session.setOption('useWorker', false);\n    }\n  });\n\n  const pipelineRulesContextValue = useMemo(() => {\n    const validateBeforeSave = (callback: (nextRule: RuleType) => void = () => {}) => {\n      const savedRule = {\n        ...rule,\n        source: ruleSourceRef.current.editor.getSession().getValue(),\n        description,\n      };\n\n      RulesActions.parse(savedRule, () => callback(savedRule));\n    };\n\n    const handleSavePipelineRule = (callback: (rule: RuleType) => void = () => {}, onError: (error: object) => void = () => {}) => {\n      validateBeforeSave((nextRule) => savePipelineRule(nextRule, callback, onError));\n    };\n\n    const onChangeSource = (source: string) => {\n      setRuleSource(source);\n\n      if (VALIDATE_TIMEOUT) {\n        clearTimeout(VALIDATE_TIMEOUT);\n        VALIDATE_TIMEOUT = null;\n      }\n\n      VALIDATE_TIMEOUT = setTimeout(() => {\n        validateNewRule((errors) => {\n          const nextErrors = errors || [];\n\n          createAnnotations(nextErrors);\n        });\n      }, 500);\n    };\n\n    return ({\n      description,\n      handleDescription: setDescription,\n      handleSavePipelineRule,\n      ruleSourceRef,\n      usedInPipelines,\n      onAceLoaded: () => setAceLoaded(true),\n      ruleSource,\n      onChangeSource,\n    });\n  }, [\n    description,\n    createAnnotations,\n    rule,\n    ruleSource,\n    usedInPipelines,\n    validateNewRule,\n  ]);\n\n  return (\n    \n      {children}\n    \n  );\n};\n\nPipelineRulesProvider.propTypes = {\n  children: PropTypes.node.isRequired,\n  usedInPipelines: PropTypes.array,\n  rule: PropTypes.shape({\n    id: PropTypes.string,\n    title: PropTypes.string,\n    description: PropTypes.string,\n    source: PropTypes.string,\n  }),\n};\n\nPipelineRulesProvider.defaultProps = {\n  usedInPipelines: [],\n  rule: {\n    description: '',\n    source: '',\n  },\n};\n","\n      import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[6].use[1]!./RuleForm.css\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n      options.insert = insertFn.bind(null, \"head\");\n    \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[6].use[1]!./RuleForm.css\";\n       export default content && content.locals ? content.locals : undefined;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Link } from 'components/common/router';\nimport Routes from 'routing/Routes';\nimport { PipelineRulesContext } from 'components/rules/RuleContext';\nimport { Input } from 'components/bootstrap';\n\nimport RuleFormStyle from './RuleForm.css';\n\nconst PipelinesUsingRule = ({ create }) => {\n  const { usedInPipelines } = useContext(PipelineRulesContext);\n\n  if (create) {\n    return null;\n  }\n\n  const formattedPipelines = () => usedInPipelines.map((pipeline) => {\n    return (\n      
  • \n \n {pipeline.title}\n \n
  • \n );\n });\n\n return (\n \n
    \n {usedInPipelines.length === 0\n ? 'This rule is not being used in any pipelines.' : (\n
      \n {formattedPipelines()}\n
    \n )}\n
    \n \n );\n};\n\nPipelinesUsingRule.propTypes = {\n create: PropTypes.bool.isRequired,\n};\n\nexport default PipelinesUsingRule;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React, { useContext, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Button, Col, ControlLabel, FormControl, FormGroup, Row, Input } from 'components/bootstrap';\nimport { ConfirmLeaveDialog, SourceCodeEditor, FormSubmit } from 'components/common';\nimport Routes from 'routing/Routes';\nimport history from 'util/History';\n\nimport { PipelineRulesContext } from './RuleContext';\nimport PipelinesUsingRule from './PipelinesUsingRule';\n\nconst RuleForm = ({ create }) => {\n const {\n description,\n handleDescription,\n handleSavePipelineRule,\n ruleSourceRef,\n onAceLoaded,\n onChangeSource,\n ruleSource,\n } = useContext(PipelineRulesContext);\n\n const [isDirty, setIsDirty] = useState(false);\n const [errorMessage, setErrorMessage] = useState('');\n\n const handleError = (error) => {\n if (error.responseMessage.includes('duplicate key error')) {\n const duplicatedTitle = error.responseMessage.match(/title: \"(.*)\"/i)[1];\n setErrorMessage(`Rule title \"${duplicatedTitle}\" already exists!`);\n }\n };\n\n const handleSubmit = (event) => {\n event.preventDefault();\n\n handleSavePipelineRule(() => {\n setErrorMessage('');\n setIsDirty(false);\n history.goBack();\n }, handleError);\n };\n\n const handleApply = () => {\n handleSavePipelineRule((rule) => {\n setErrorMessage('');\n setIsDirty(false);\n history.replace(Routes.SYSTEM.PIPELINES.RULE(rule.id));\n }, handleError);\n };\n\n const handleDescriptionChange = (event) => {\n setIsDirty(true);\n handleDescription(event.target.value);\n };\n\n const handleSourceChange = (newSource) => {\n setErrorMessage('');\n setIsDirty(true);\n onChangeSource(newSource);\n };\n\n const handleCancel = () => {\n history.goBack();\n };\n\n return (\n
    \n
    \n \n Title\n You can set the rule title in the rule source. See the quick reference for more information.\n \n\n {isDirty && (\n \n )}\n\n \n\n \n\n \n \n \n
    \n\n \n \n \n Update rule\n \n )}\n onCancel={handleCancel} />\n \n \n
    \n );\n};\n\nRuleForm.propTypes = {\n create: PropTypes.bool,\n};\n\nRuleForm.defaultProps = {\n create: false,\n};\n\nexport default RuleForm;\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[6].use[1]!./RuleHelper.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[6].use[1]!./RuleHelper.css\";\n export default content && content.locals ? content.locals : undefined;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport ObjectUtils from 'util/ObjectUtils';\nimport connect from 'stores/connect';\nimport { Icon, PaginatedList, Spinner, SearchForm } from 'components/common';\nimport { Row, Col, Panel, Table, Tabs, Tab } from 'components/bootstrap';\nimport DocumentationLink from 'components/support/DocumentationLink';\nimport withPaginationQueryParameter from 'components/common/withPaginationQueryParameter';\nimport DocsHelper from 'util/DocsHelper';\nimport { RulesActions, RulesStore } from 'stores/rules/RulesStore';\n\nimport RuleHelperStyle from './RuleHelper.css';\n\nconst ruleTemplate = `rule \"function howto\"\nwhen\n has_field(\"transaction_date\")\nthen\n // the following date format assumes there's no time zone in the string\n let new_date = parse_date(to_string($message.transaction_date), \"yyyy-MM-dd HH:mm:ss\");\n set_field(\"transaction_year\", new_date.year);\nend`;\n\nconst _niceType = (typeName) => {\n return typeName.replace(/^.*\\.(.*?)$/, '$1');\n};\n\nconst _functionSignature = (descriptor) => {\n const args = descriptor.params.map((p) => (p.optional ? `[${p.name}]` : p.name));\n\n return `${descriptor.name}(${args.join(', ')}) : ${_niceType(descriptor.return_type)}`;\n};\n\nconst _parameters = (descriptor) => {\n return descriptor.params.map((p) => {\n return (\n \n {p.name}\n {_niceType(p.type)}\n {p.optional ? null : }\n {p.description}\n \n );\n });\n};\n\nclass RuleHelper extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n expanded: {},\n currentPage: props.paginationQueryParameter.page,\n pageSize: 10,\n filteredDescriptors: undefined,\n };\n }\n\n componentDidMount() {\n RulesActions.loadFunctions();\n }\n\n _toggleFunctionDetail = (functionName) => {\n const { expanded } = this.state;\n const newState = ObjectUtils.clone(expanded);\n\n newState[functionName] = !newState[functionName];\n\n this.setState({ expanded: newState });\n };\n\n _renderFunctions = (descriptors) => {\n const { expanded } = this.state;\n\n if (!descriptors) {\n return [];\n }\n\n return descriptors.map((d) => {\n let details = null;\n\n if (expanded[d.name]) {\n details = (\n \n \n \n \n \n \n \n \n \n \n \n \n {_parameters(d)}\n \n
    ParameterTypeRequiredDescription
    \n \n \n );\n }\n\n return (\n \n this._toggleFunctionDetail(d.name)} className={RuleHelperStyle.clickableRow}>\n {_functionSignature(d)}\n {d.description}\n \n {details}\n \n );\n });\n };\n\n _onPageChange = (newPage, pageSize) => {\n this.setState({ currentPage: newPage, pageSize: pageSize });\n };\n\n _filterDescriptors = (filter) => {\n const { functionDescriptors, paginationQueryParameter } = this.props;\n\n paginationQueryParameter.resetPage();\n\n if (!functionDescriptors) {\n return;\n }\n\n if (filter.length <= 0) {\n this.setState({\n filteredDescriptors: functionDescriptors,\n currentPage: 1,\n });\n\n return;\n }\n\n const filteredDescriptiors = functionDescriptors.filter((descriptor) => {\n const regexp = RegExp(filter);\n\n return regexp.test(_functionSignature(descriptor)) || regexp.test(descriptor.description);\n });\n\n this.setState({\n filteredDescriptors: filteredDescriptiors,\n currentPage: 1,\n });\n };\n\n _onFilterReset = () => {\n const { functionDescriptors, paginationQueryParameter } = this.props;\n\n paginationQueryParameter.resetPage();\n\n this.setState({\n filteredDescriptors: functionDescriptors,\n currentPage: 1,\n });\n };\n\n render() {\n const { currentPage, filteredDescriptors, pageSize } = this.state;\n const { functionDescriptors } = this.props;\n\n if (!functionDescriptors) {\n return ;\n }\n\n const ruleDescriptors = filteredDescriptors || functionDescriptors;\n const pagedEntries = ruleDescriptors.slice((currentPage - 1) * pageSize, currentPage * pageSize);\n\n return (\n \n \n \n

    \n Read the {' '}\n to gain a better understanding of how Graylog pipeline rules work.\n

    \n \n
    \n \n \n \n \n \n \n

    \n This is a list of all available functions in pipeline rules. Click on a row to see more information\n about the function parameters.\n

    \n \n
    \n \n \n \n
    \n \n \n \n \n \n \n \n \n {this._renderFunctions(pagedEntries)}\n
    FunctionDescription
    \n
    \n
    \n \n
    \n
    \n \n

    \n Do you want to see how a pipeline rule looks like? Take a look at this example:\n

    \n
    \n                  {ruleTemplate}\n                
    \n
    \n
    \n \n
    \n
    \n );\n }\n}\n\nRuleHelper.propTypes = {\n functionDescriptors: PropTypes.array,\n paginationQueryParameter: PropTypes.object.isRequired,\n};\n\nRuleHelper.defaultProps = {\n functionDescriptors: undefined,\n};\n\nexport default connect(withPaginationQueryParameter(RuleHelper),\n { ruleStore: RulesStore },\n ({ ruleStore }) => ({ ...ruleStore }));\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { PageHeader } from 'components/common';\nimport { Row, Col } from 'components/bootstrap';\nimport DocsHelper from 'util/DocsHelper';\n\nimport RuleForm from './RuleForm';\nimport RuleHelper from './RuleHelper';\n\nimport PipelinesPageNavigation from '../pipelines/PipelinesPageNavigation';\n\nconst Rule = ({ create, title }) => {\n let pageTitle;\n\n if (create) {\n pageTitle = 'Create pipeline rule';\n } else {\n pageTitle = Pipeline rule {title};\n }\n\n return (\n
    \n \n \n \n Rules are a way of applying changes to messages in Graylog. A rule consists of a condition and a list{' '}\n of actions.{' '}\n Graylog evaluates the condition against a message and executes the actions if the condition is satisfied.\n \n \n\n \n \n \n \n \n \n \n \n
    \n );\n};\n\nRule.propTypes = {\n title: PropTypes.string,\n create: PropTypes.bool,\n};\n\nRule.defaultProps = {\n title: '',\n create: false,\n};\n\nexport default Rule;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport connect from 'stores/connect';\nimport { DocumentTitle, Spinner } from 'components/common';\nimport Rule from 'components/rules/Rule';\nimport Routes from 'routing/Routes';\nimport { PipelineRulesProvider } from 'components/rules/RuleContext';\nimport withParams from 'routing/withParams';\nimport { PipelinesStore, PipelinesActions } from 'stores/pipelines/PipelinesStore';\nimport { RulesActions, RulesStore } from 'stores/rules/RulesStore';\nimport history from 'util/History';\n\nfunction filterRules(rule, ruleId) {\n return rule?.rules?.filter((r) => r.id === ruleId)[0];\n}\n\nfunction filterPipelines(pipelines = [], title = '') {\n return pipelines.filter((pipeline) => {\n return pipeline.stages.some((stage) => stage.rules.indexOf(title) !== -1);\n });\n}\n\nconst RuleDetailsPage = ({ params, rule, pipelines }) => {\n const [isLoading, setIsLoading] = useState(true);\n const [filteredRule, setFilteredRule] = useState(undefined);\n\n const isNewRule = params.ruleId === 'new';\n const title = filteredRule?.title || '';\n const pageTitle = isNewRule ? 'New pipeline rule' : `Pipeline rule ${title}`;\n\n const pipelinesUsingRule = isNewRule ? [] : filterPipelines(pipelines, title);\n\n useEffect(() => {\n setFilteredRule(filterRules(rule, params.ruleId));\n }, [params, rule]);\n\n useEffect(() => {\n if (isNewRule) {\n setIsLoading(false);\n } else {\n PipelinesActions.list();\n\n RulesActions.get(params.ruleId).then(() => {}, (error) => {\n if (error.status === 404) {\n history.push(Routes.SYSTEM.PIPELINES.RULES);\n }\n });\n\n setIsLoading(!(filteredRule && pipelines));\n }\n }, [filteredRule, isNewRule, params.ruleId, pipelines]);\n\n if (isLoading) {\n return ;\n }\n\n return (\n \n \n \n \n \n );\n};\n\nRuleDetailsPage.propTypes = {\n params: PropTypes.shape({\n ruleId: PropTypes.string,\n }).isRequired,\n rule: PropTypes.shape({\n id: PropTypes.string,\n title: PropTypes.string,\n description: PropTypes.string,\n source: PropTypes.string,\n value: PropTypes.string,\n }),\n pipelines: PropTypes.any,\n};\n\nRuleDetailsPage.defaultProps = {\n rule: undefined,\n pipelines: undefined,\n};\n\nexport default connect(withParams(RuleDetailsPage), {\n rule: RulesStore,\n pipelines: PipelinesStore,\n}, ({ pipelines, ...restProps }) => ({\n pipelines: pipelines.pipelines || [],\n ...restProps,\n}));\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\nimport Immutable from 'immutable';\n\nimport UserNotification from 'util/UserNotification';\nimport { qualifyUrl } from 'util/URLUtils';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch from 'logic/rest/FetchProvider';\nimport type { PaginatedList, PaginatedListJSON, Pagination } from 'stores/PaginationTypes';\nimport PaginationURL from 'util/PaginationURL';\nimport { singletonStore, singletonActions } from 'logic/singleton';\n\ntype PipelinesActionsType = {\n delete: (id: string) => Promise,\n list: () => Promise,\n listPaginated: (pagination: Pagination) => Promise,\n get: () => Promise,\n save: () => Promise,\n update: () => Promise,\n parse: () => Promise,\n}\nexport const PipelinesActions = singletonActions(\n 'core.Pipelines',\n () => Reflux.createActions({\n delete: { asyncResult: true },\n list: { asyncResult: true },\n listPaginated: { asyncResult: true },\n get: { asyncResult: true },\n save: { asyncResult: true },\n update: { asyncResult: true },\n parse: { asyncResult: true },\n }),\n);\n\nexport type PipelineType = {\n id: string,\n title: string,\n description: string,\n source: string,\n created_at: string,\n modified_at: string,\n stages: StageType[],\n errors?: [],\n};\n\nexport type StageType = {\n stage: number,\n match: string,\n rules: [string],\n};\n\nexport type PaginatedPipelineResponse = PaginatedListJSON & {\n pipelines: Array,\n};\n\nexport type PaginatedPipelines = PaginatedList;\n\nconst listFailCallback = (error) => {\n UserNotification.error(`Fetching pipelines failed with status: ${error.message}`,\n 'Could not retrieve processing pipelines');\n};\n\nexport const PipelinesStore = singletonStore(\n 'core.Pipelines',\n () => Reflux.createStore({\n listenables: [PipelinesActions],\n pipelines: undefined,\n\n getInitialState() {\n return { pipelines: this.pipelines };\n },\n\n _updatePipelinesState(pipeline: PipelineType) {\n if (!this.pipelines) {\n this.pipelines = [pipeline];\n } else {\n const doesPipelineExist = this.pipelines.some((p) => p.id === pipeline.id);\n\n if (doesPipelineExist) {\n this.pipelines = this.pipelines.map((p) => (p.id === pipeline.id ? pipeline : p));\n } else {\n this.pipelines.push(pipeline);\n }\n }\n\n this.trigger({ pipelines: this.pipelines });\n },\n\n list() {\n const url = qualifyUrl(ApiRoutes.PipelinesController.list().url);\n\n return fetch('GET', url).then((response) => {\n this.pipelines = response;\n this.trigger({ pipelines: response });\n }, listFailCallback);\n },\n\n listPaginated({\n page,\n perPage,\n query,\n }: Pagination): Promise {\n const url = PaginationURL(ApiRoutes.PipelinesController.paginatedList().url, page, perPage, query);\n\n const promise = fetch('GET', qualifyUrl(url)).then((response: PaginatedPipelineResponse) => ({\n list: Immutable.List(response.pipelines),\n pagination: {\n page: response.page,\n perPage: response.per_page,\n query: response.query,\n count: response.count,\n total: response.total,\n },\n }), listFailCallback);\n\n PipelinesActions.listPaginated.promise(promise);\n\n return promise;\n },\n\n get(pipelineId) {\n const failCallback = (error) => {\n UserNotification.error(`Fetching pipeline failed with status: ${error.message}`,\n `Could not retrieve processing pipeline \"${pipelineId}\"`);\n };\n\n const url = qualifyUrl(ApiRoutes.PipelinesController.get(pipelineId).url);\n const promise = fetch('GET', url);\n\n promise.then(this._updatePipelinesState, failCallback);\n },\n\n save(pipelineSource) {\n const failCallback = (error) => {\n UserNotification.error(`Saving pipeline failed with status: ${error.message}`,\n 'Could not save processing pipeline');\n };\n\n const url = qualifyUrl(ApiRoutes.PipelinesController.create().url);\n const pipeline = {\n title: pipelineSource.title,\n description: pipelineSource.description,\n source: pipelineSource.source,\n };\n const promise = fetch('POST', url, pipeline);\n\n promise.then(\n (response) => {\n this._updatePipelinesState(response);\n UserNotification.success(`Pipeline \"${pipeline.title}\" created successfully`);\n },\n failCallback,\n );\n\n PipelinesActions.save.promise(promise);\n },\n\n update(pipelineSource) {\n const failCallback = (error) => {\n UserNotification.error(`Updating pipeline failed with status: ${error.message}`,\n 'Could not update processing pipeline');\n };\n\n const url = qualifyUrl(ApiRoutes.PipelinesController.update(pipelineSource.id).url);\n const pipeline = {\n id: pipelineSource.id,\n title: pipelineSource.title,\n description: pipelineSource.description,\n source: pipelineSource.source,\n };\n const promise = fetch('PUT', url, pipeline);\n\n promise.then(\n (response) => {\n this._updatePipelinesState(response);\n UserNotification.success(`Pipeline \"${pipeline.title}\" updated successfully`);\n },\n failCallback,\n );\n\n PipelinesActions.update.promise(promise);\n },\n delete(pipelineId) {\n const failCallback = (error) => {\n UserNotification.error(`Deleting pipeline failed with status: ${error.message}`,\n `Could not delete processing pipeline \"${pipelineId}\"`);\n };\n\n const url = qualifyUrl(ApiRoutes.PipelinesController.delete(pipelineId).url);\n\n const promise = fetch('DELETE', url).then(() => {\n const updatedPipelines = this.pipelines || [];\n\n this.pipelines = updatedPipelines.filter((el) => el.id !== pipelineId);\n this.trigger({ pipelines: this.pipelines });\n UserNotification.success(`Pipeline \"${pipelineId}\" deleted successfully`);\n }, failCallback);\n\n PipelinesActions.delete.promise(promise);\n\n return promise;\n },\n parse(pipelineSource, callback) {\n const url = qualifyUrl(ApiRoutes.PipelinesController.parse().url);\n const pipeline = {\n title: pipelineSource.title,\n description: pipelineSource.description,\n source: pipelineSource.source,\n };\n\n return fetch('POST', url, pipeline).then(\n () => {\n // call to clear the errors, the parsing was successful\n callback([]);\n },\n (error) => {\n // a Bad Request indicates a parse error, set all the returned errors in the editor\n if (error.status === 400) {\n callback(error.additional.body);\n }\n },\n );\n },\n }),\n);\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport Reflux from 'reflux';\n\nimport { defaultCompare as naturalSort } from 'logic/DefaultCompare';\nimport UserNotification from 'util/UserNotification';\nimport { qualifyUrl } from 'util/URLUtils';\nimport PaginationURL from 'util/PaginationURL';\nimport ApiRoutes from 'routing/ApiRoutes';\nimport fetch from 'logic/rest/FetchProvider';\nimport { singletonStore, singletonActions } from 'logic/singleton';\nimport type { Pagination, PaginatedListJSON, ListPagination } from 'stores/PaginationTypes';\n\nexport type RuleType = {\n id?: string,\n source: string,\n title: string,\n description: string,\n created_at: string,\n modified_at: string,\n errors?: [],\n};\nexport type MetricsConfigType = {\n metrics_enabled: boolean,\n};\nexport type PipelineSummary = {\n id: string,\n title: string,\n};\nexport type RulesContext = {\n used_in_pipelines: {\n [id: string]: Array,\n }\n};\nexport type PaginatedRulesResponse = PaginatedListJSON & {\n rules: Array,\n context: RulesContext,\n};\n\nexport type PaginatedRules = {\n list: Array,\n context: RulesContext,\n pagination: ListPagination,\n};\n\nexport type RulesStoreState = {\n rules: Array,\n rulesContext: RulesContext,\n functionDescriptors: any,\n metricsConfig: MetricsConfigType | undefined,\n};\n\ntype RulesActionsType = {\n delete: (rule: RuleType) => Promise,\n list: () => Promise,\n get: () => Promise,\n save: (rule: RuleType) => Promise,\n update: (rule: RuleType) => Promise,\n parse: (rule: RuleType, callback: () => void) => Promise,\n multiple: () => Promise,\n loadFunctions: () => Promise,\n loadMetricsConfig: () => Promise,\n updateMetricsConfig: () => Promise,\n listPaginated: (pagination: Pagination) => Promise,\n};\n\nexport const RulesActions = singletonActions(\n 'core.Rules',\n () => Reflux.createActions({\n delete: { asyncResult: true },\n list: { asyncResult: true },\n get: { asyncResult: true },\n save: { asyncResult: true },\n update: { asyncResult: true },\n parse: { asyncResult: true },\n multiple: { asyncResult: true },\n loadFunctions: { asyncResult: true },\n loadMetricsConfig: { asyncResult: true },\n updateMetricsConfig: { asyncResult: true },\n listPaginated: { asyncResult: true },\n }),\n);\n\nexport const RulesStore = singletonStore(\n 'core.Rules',\n () => Reflux.createStore<{ rules: RuleType[] }>({\n listenables: [RulesActions],\n rules: undefined,\n rulesContext: undefined,\n functionDescriptors: undefined,\n metricsConfig: undefined,\n\n getInitialState() {\n return {\n rules: this.rules,\n rulesContext: this.rulesContext,\n functionDescriptors: this.functionDescriptors,\n metricsConfig: this.metricsConfig,\n };\n },\n\n _updateRulesState(rule) {\n if (!this.rules) {\n this.rules = [rule];\n } else {\n const doesRuleExist = this.rules.some((r) => r.id === rule.id);\n\n if (doesRuleExist) {\n this.rules = this.rules.map((r) => (r.id === rule.id ? rule : r));\n } else {\n this.rules.push(rule);\n }\n }\n\n this.trigger({ rules: this.rules, functionDescriptors: this.functionDescriptors });\n },\n\n _updateFunctionDescriptors(functions) {\n if (functions) {\n this.functionDescriptors = functions.sort((fn1, fn2) => naturalSort(fn1.name, fn2.name));\n }\n\n this.trigger({ rules: this.rules, functionDescriptors: this.functionDescriptors });\n },\n\n list() {\n const failCallback = (error) => {\n UserNotification.error(`Fetching rules failed with status: ${error.message}`,\n 'Could not retrieve processing rules');\n };\n\n const url = qualifyUrl(ApiRoutes.RulesController.list().url);\n\n return fetch('GET', url).then((response) => {\n this.rules = response;\n this.trigger({ rules: response, functionDescriptors: this.functionDescriptors });\n }, failCallback);\n },\n\n listPaginated({ page, perPage, query }: Pagination): Promise {\n const url = PaginationURL(ApiRoutes.RulesController.paginatedList().url, page, perPage, query);\n const promise = fetch('GET', qualifyUrl(url))\n .then((response: PaginatedRulesResponse) => ({\n list: response.rules,\n context: response.context,\n pagination: {\n count: response.count,\n total: response.total,\n page: response.page,\n perPage: response.per_page,\n query: response.query,\n },\n }),\n (error) => {\n if (!error.additional || error.additional.status !== 404) {\n UserNotification.error(`Loading rules list failed with status: ${error}`, 'Could not load rules.');\n }\n });\n\n RulesActions.listPaginated.promise(promise);\n\n return promise;\n },\n\n get(ruleId) {\n const failCallback = (error) => {\n UserNotification.error(`Fetching rule \"${ruleId}\" failed with status: ${error.message}`,\n `Could not retrieve processing rule \"${ruleId}\"`);\n };\n\n const url = qualifyUrl(ApiRoutes.RulesController.get(ruleId).url);\n const promise = fetch('GET', url);\n\n promise.then(this._updateRulesState, failCallback);\n RulesActions.get.promise(promise);\n\n return promise;\n },\n\n save(ruleSource: RuleType) {\n const failCallback = (error) => {\n UserNotification.error(`Saving rule \"${ruleSource.title}\" failed with status: ${error.message}`,\n `Could not save processing rule \"${ruleSource.title}\"`);\n };\n\n const url = qualifyUrl(ApiRoutes.RulesController.create().url);\n const rule = {\n title: ruleSource.title,\n description: ruleSource.description,\n source: ruleSource.source,\n };\n const promise = fetch('POST', url, rule);\n\n promise.then((response) => {\n this._updateRulesState(response);\n UserNotification.success(`Rule \"${response.title}\" created successfully`);\n\n return response;\n }, failCallback);\n\n RulesActions.save.promise(promise);\n\n return promise;\n },\n\n update(ruleSource: RuleType) {\n const failCallback = (error) => {\n UserNotification.error(`Updating rule \"${ruleSource.title}\" failed with status: ${error.message}`,\n `Could not update processing rule \"${ruleSource.title}\"`);\n };\n\n const url = qualifyUrl(ApiRoutes.RulesController.update(ruleSource.id).url);\n const rule = {\n id: ruleSource.id,\n title: ruleSource.title,\n description: ruleSource.description,\n source: ruleSource.source,\n };\n const promise = fetch('PUT', url, rule);\n\n promise.then((response) => {\n this._updateRulesState(response);\n UserNotification.success(`Rule \"${response.title}\" updated successfully`);\n\n return response;\n }, failCallback);\n\n RulesActions.update.promise(promise);\n\n return promise;\n },\n delete(rule) {\n const failCallback = (error) => {\n UserNotification.error(`Deleting rule \"${rule.title}\" failed with status: ${error.message}`,\n `Could not delete processing rule \"${rule.title}\"`);\n };\n\n const url = qualifyUrl(ApiRoutes.RulesController.delete(rule.id).url);\n\n const promise = fetch('DELETE', url).then(() => {\n this.rules = this.rules.filter((el) => el.id !== rule.id);\n this.trigger({ rules: this.rules, functionDescriptors: this.functionDescriptors });\n UserNotification.success(`Rule \"${rule.title}\" was deleted successfully`);\n }, failCallback);\n\n RulesActions.delete.promise(promise);\n\n return promise;\n },\n parse(ruleSource, callback) {\n const url = qualifyUrl(ApiRoutes.RulesController.parse().url);\n const rule = {\n title: ruleSource.title,\n description: ruleSource.description,\n source: ruleSource.source,\n };\n\n return fetch('POST', url, rule).then(\n (response) => {\n // call to clear the errors, the parsing was successful\n callback([]);\n\n return response;\n },\n (error) => {\n // a Bad Request indicates a parse error, set all the returned errors in the editor\n if (error.status === 400) {\n callback(error.additional.body);\n }\n },\n );\n },\n multiple(ruleNames, callback) {\n const url = qualifyUrl(ApiRoutes.RulesController.multiple().url);\n const promise = fetch('POST', url, { rules: ruleNames });\n\n promise.then(callback);\n\n return promise;\n },\n loadFunctions() {\n if (this.functionDescriptors) {\n return undefined;\n }\n\n const url = qualifyUrl(ApiRoutes.RulesController.functions().url);\n\n return fetch('GET', url)\n .then(this._updateFunctionDescriptors);\n },\n loadMetricsConfig() {\n const url = qualifyUrl(ApiRoutes.RulesController.metricsConfig().url);\n const promise = fetch('GET', url);\n\n promise.then(\n (response: MetricsConfigType) => {\n this.metricsConfig = response;\n this.trigger({ rules: this.rules, functionDescriptors: this.functionDescriptors, metricsConfig: this.metricsConfig });\n },\n (error) => {\n UserNotification.error(`Couldn't load rule metrics config: ${error.message}`, \"Couldn't load rule metrics config\");\n },\n );\n\n RulesActions.loadMetricsConfig.promise(promise);\n },\n updateMetricsConfig(nextConfig) {\n const url = qualifyUrl(ApiRoutes.RulesController.metricsConfig().url);\n const promise = fetch('PUT', url, nextConfig);\n\n promise.then(\n (response) => {\n this.metricsConfig = response;\n this.trigger({ rules: this.rules, functionDescriptors: this.functionDescriptors, metricsConfig: this.metricsConfig });\n UserNotification.success('Successfully updated rule metrics config');\n },\n (error) => {\n UserNotification.error(`Couldn't update rule metrics config: ${error.message}`, \"Couldn't update rule metrics config\");\n },\n );\n\n RulesActions.updateMetricsConfig.promise(promise);\n },\n }),\n);\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".hxxn_4IgOk3oqslCoAdQ {\\n margin: 0;\\n padding: 0;\\n}\\n\\n.hxxn_4IgOk3oqslCoAdQ li:not(:last-child) {\\n float: left;\\n}\\n\\n.hxxn_4IgOk3oqslCoAdQ li:not(:last-child):after {\\n content: ',';\\n margin-right: 5px;\\n}\\n\\n.hxxn_4IgOk3oqslCoAdQ li:last-child:after {\\n content: '.';\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/rules/RuleForm.css\"],\"names\":[],\"mappings\":\"AAAA;IACI,SAAS;IACT,UAAU;AACd;;AAEA;IACI,WAAW;AACf;;AAEA;IACI,YAAY;IACZ,iBAAiB;AACrB;;AAEA;IACI,YAAY;AAChB\",\"sourcesContent\":[\":local(.usedInPipelines) {\\n margin: 0;\\n padding: 0;\\n}\\n\\n:local(.usedInPipelines li:not(:last-child)) {\\n float: left;\\n}\\n\\n:local(.usedInPipelines li:not(:last-child):after) {\\n content: ',';\\n margin-right: 5px;\\n}\\n\\n:local(.usedInPipelines li:last-child:after) {\\n content: '.';\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"usedInPipelines\": \"hxxn_4IgOk3oqslCoAdQ\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".PNZJc996deADwSONwcaq {\\n cursor: pointer;\\n}\\n\\n.e2zwRPl9zBwF4V81WX7R {\\n width: 300px;\\n}\\n\\n.KEK_bCgacvTM0IB3wKp1 {\\n margin-top: 5px;\\n}\\n\\n.lqQ5u8VPkiEPwQPBVPck {\\n margin-top: 10px;\\n}\\n\\n.Lp2VFYGT5i8DlVEhzbwi {\\n white-space: pre-wrap;\\n}\\n\\n.dAb0Q9WkOuAFivGJVizo {\\n width: 1%;\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/rules/RuleHelper.css\"],\"names\":[],\"mappings\":\"AAAA;IACI,eAAe;AACnB;;AAEA;IACI,YAAY;AAChB;;AAEA;IACI,eAAe;AACnB;;AAEA;IACI,gBAAgB;AACpB;;AAEA;IACI,qBAAqB;AACzB;;AAEA;IACI,SAAS;AACb\",\"sourcesContent\":[\":local(.clickableRow) {\\n cursor: pointer;\\n}\\n\\n:local(.functionTableCell) {\\n width: 300px;\\n}\\n\\n:local(.marginQuickReferenceText) {\\n margin-top: 5px;\\n}\\n\\n:local(.marginTab) {\\n margin-top: 10px;\\n}\\n\\n:local(.exampleFunction) {\\n white-space: pre-wrap;\\n}\\n\\n:local(.adjustedTableCellWidth) {\\n width: 1%;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"clickableRow\": \"PNZJc996deADwSONwcaq\",\n\t\"functionTableCell\": \"e2zwRPl9zBwF4V81WX7R\",\n\t\"marginQuickReferenceText\": \"KEK_bCgacvTM0IB3wKp1\",\n\t\"marginTab\": \"lqQ5u8VPkiEPwQPBVPck\",\n\t\"exampleFunction\": \"Lp2VFYGT5i8DlVEhzbwi\",\n\t\"adjustedTableCellWidth\": \"dAb0Q9WkOuAFivGJVizo\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n"],"names":["Container","styled","ButtonToolbar","StyledButton","Button","theme","css","fonts","family","navigation","size","colors","variant","darker","default","hoverIndicatorStyles","global","textDefault","activeIndicatorStyles","displayName","items","map","path","title","permissions","exactPathMatch","key","to","relativeActive","bsStyle","Component","obj","props","result","usePaginationQueryParameter","pageSizes","paginationQueryParameter","NAV_ITEMS","Routes","VALIDATE_TIMEOUT","PipelineRulesContext","createContext","undefined","savePipelineRule","nextRule","promise","callback","onError","id","RulesActions","then","catch","PipelineRulesProvider","children","usedInPipelines","rule","ruleSourceRef","useRef","setAceLoaded","useState","ruleSource","setRuleSource","source","description","setDescription","createAnnotations","useCallback","nextErrors","nextErrorAnnotations","e","row","line","column","position_in_line","text","reason","type","current","editor","getSession","setAnnotations","validateNewRule","getValue","useEffect","session","setOption","pipelineRulesContextValue","useMemo","validateBeforeSave","savedRule","handleDescription","handleSavePipelineRule","onAceLoaded","onChangeSource","clearTimeout","setTimeout","errors","Provider","value","propTypes","PropTypes","defaultProps","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","PipelinesUsingRule","create","useContext","label","help","className","length","RuleFormStyle","pipeline","RuleForm","isDirty","setIsDirty","errorMessage","setErrorMessage","handleError","error","responseMessage","includes","duplicatedTitle","match","onSubmit","event","preventDefault","history","question","onChange","target","autoFocus","mode","onLoad","newSource","innerRef","md","submitButtonText","centerCol","onClick","onCancel","_niceType","typeName","replace","_functionSignature","descriptor","args","params","p","optional","name","join","return_type","RuleHelper","React","constructor","super","functionName","expanded","this","state","newState","ObjectUtils","setState","descriptors","d","details","colSpan","condensed","striped","hover","RuleHelperStyle","_toggleFunctionDetail","newPage","pageSize","currentPage","filter","functionDescriptors","resetPage","filteredDescriptors","filteredDescriptiors","regexp","RegExp","test","page","componentDidMount","render","ruleDescriptors","pagedEntries","slice","header","DocumentationLink","DocsHelper","defaultActiveKey","animation","eventKey","sm","onSearch","_filterDescriptors","topMargin","searchButtonLabel","onReset","_onFilterReset","totalItems","_onPageChange","showPageSizeSelect","_renderFunctions","connect","withPaginationQueryParameter","ruleStore","RulesStore","Rule","pageTitle","PipelinesPageNavigation","documentationLink","RuleDetailsPage","pipelines","isLoading","setIsLoading","filteredRule","setFilteredRule","isNewRule","ruleId","pipelinesUsingRule","stages","some","stage","rules","indexOf","filterPipelines","r","filterRules","PipelinesActions","status","isRequired","withParams","PipelinesStore","restProps","singletonActions","Reflux","delete","asyncResult","list","listPaginated","get","save","update","parse","listFailCallback","UserNotification","message","singletonStore","listenables","getInitialState","_updatePipelinesState","push","trigger","url","qualifyUrl","ApiRoutes","fetch","response","perPage","query","PaginationURL","Immutable","pagination","per_page","count","total","pipelineId","pipelineSource","updatedPipelines","el","additional","body","multiple","loadFunctions","loadMetricsConfig","updateMetricsConfig","rulesContext","metricsConfig","_updateRulesState","_updateFunctionDescriptors","functions","sort","fn1","fn2","naturalSort","context","ruleNames","nextConfig","___CSS_LOADER_EXPORT___","module","locals"],"sourceRoot":""}




    © 2015 - 2024 Weber Informatics LLC | Privacy Policy