{"version":3,"sources":["../src/constants.ts","../src/decorators/on-matador-event.decorator.ts","../src/decorators/matador-subscriber.decorator.ts","../src/discovery/subscriber-discovery.service.ts","../src/services/matador.service.ts","../src/module/matador.module.ts"],"names":["MATADOR_EVENT_HANDLER","MATADOR_EVENT_HANDLERS","MATADOR_OPTIONS","OnMatadorEvent","eventClass","options","target","propertyKey","descriptor","metadata","methodName","String","value","Reflect","defineMetadata","existingHandlers","getMetadata","MatadorSubscriber","Injectable","SubscriberDiscoveryService","schema","discovered","discoveryService","onModuleInit","discoverSubscribers","providers","getProviders","wrapper","instance","handlers","length","handler","registerHandler","className","name","subscriberName","isResumable","idempotent","boundMethod","bind","subscriber","createSubscriber","description","importance","targetQueue","enabled","callback","envelope","context","addToSchema","eventKey","key","existing","existingEventClass","existingSubscribers","getSchema","getMergedSchema","mergedSchema","additionalEvents","subscribers","MatadorService","logger","Logger","matador","isShuttingDown","isStarted","initializeMatador","shouldAutoStart","startOn","doStart","onApplicationBootstrap","onModuleDestroy","shutdownOn","doShutdown","beforeApplicationShutdown","onApplicationShutdown","send","eventOrClass","dataOrOptions","Error","isEventClass","getMatador","start","isConnected","isShutdownInProgress","waitForIdle","timeoutMs","stopReceiving","log","result","registry","SchemaRegistry","entry","Object","values","isSchemaEntryTuple","register","validation","validate","valid","errors","issues","filter","i","severity","map","message","join","Matador","transport","topology","consumeFrom","undefined","codec","retryPolicy","checkpointStore","shutdownConfig","hooks","autoStart","shutdown","MatadorModule","forRoot","module","imports","DiscoveryModule","provide","useValue","exports","forRootAsync","asyncProviders","createAsyncProviders","useFactory","inject","useClass","factory","createMatadorOptions","useExisting"],"mappings":";;;;;;;;;;AAGO,IAAMA,qBAAAA,0BAA+B,uBAAA;AAKrC,IAAMC,sBAAAA,0BAAgC,wBAAA;AAKtC,IAAMC,eAAAA,0BAAyB,iBAAA;;;ACc/B,SAASC,cAAAA,CACdC,YACAC,OAAAA,EAA8B;AAM9B,EAAA,OAAO,CACLC,MAAAA,EACAC,WAAAA,EACAC,UAAAA,KAAAA;AAEA,IAAA,MAAMC,QAAAA,GAAwC;AAC5CL,MAAAA,UAAAA;AACAC,MAAAA,OAAAA;AACAK,MAAAA,UAAAA,EAAYC,OAAOJ,WAAAA;AACrB,KAAA;AAGA,IAAA,IAAIC,UAAAA,CAAWI,SAAS,IAAA,EAAM;AAC5BC,MAAAA,OAAAA,CAAQC,cAAAA,CACNd,qBAAAA,EACAS,QAAAA,EACAD,UAAAA,CAAWI,KAAK,CAAA;AAEpB,IAAA;AAGA,IAAA,MAAMG,mBACJF,OAAAA,CAAQG,WAAAA,CAAYf,wBAAwBK,MAAAA,CAAO,WAAW,KAAK,EAAA;AAErEO,IAAAA,OAAAA,CAAQC,eACNb,sBAAAA,EACA;AAAIc,MAAAA,GAAAA,gBAAAA;AAAkBN,MAAAA;AACtBH,KAAAA,EAAAA,MAAAA,CAAO,WAAW,CAAA;AAGpB,IAAA,OAAOE,UAAAA;AACT,EAAA,CAAA;AACF;AAxCgBL,MAAAA,CAAAA,cAAAA,EAAAA,gBAAAA,CAAAA;ACPT,SAASc,iBAAAA,GAAAA;AACd,EAAA,OAAO,CAACX,MAAAA,KAAAA;AAGNY,IAAAA,iBAAAA,GAAaZ,MAAAA,CAAAA;AACf,EAAA,CAAA;AACF;AANgBW,MAAAA,CAAAA,iBAAAA,EAAAA,mBAAAA,CAAAA;;;;;;;;;;;;;;;;;;ACWHE,qCAAN,gCAAA,CAAMA;AAAAA,EAAAA;;;;AACHC,EAAAA,MAAAA,GAAwB,EAAC;EACzBC,UAAAA,GAAa,KAAA;AAErB,EAAA,WAAA,CAEmBC,gBAAAA,EACjB;SADiBA,gBAAAA,GAAAA,gBAAAA;AAChB,EAAA;EAEHC,YAAAA,GAAqB;AACnB,IAAA,IAAA,CAAKC,mBAAAA,EAAmB;AAC1B,EAAA;;;;EAKQA,mBAAAA,GAA4B;AAClC,IAAA,IAAI,KAAKH,UAAAA,EAAY;AACnB,MAAA;AACF,IAAA;AAEA,IAAA,MAAMI,SAAAA,GAAY,IAAA,CAAKH,gBAAAA,CAAiBI,YAAAA,EAAY;AAEpD,IAAA,KAAA,MAAWC,WAAWF,SAAAA,EAAW;AAC/B,MAAA,MAAM,EAAEG,UAAQ,GAAKD,OAAAA;AACrB,MAAA,IAAI,CAACC,QAAAA,IAAY,OAAOA,QAAAA,KAAa,QAAA,EAAU;AAC7C,QAAA;AACF,MAAA;AAEA,MAAA,MAAMC,QAAAA,GACJhB,OAAAA,CAAQG,WAAAA,CAAYf,sBAAAA,EAAwB2B,SAAS,WAAW,CAAA;AAElE,MAAA,IAAI,CAACC,QAAAA,IAAYA,QAAAA,CAASC,MAAAA,KAAW,CAAA,EAAG;AACtC,QAAA;AACF,MAAA;AAEA,MAAA,KAAA,MAAWC,WAAWF,QAAAA,EAAU;AAC9B,QAAA,IAAA,CAAKG,eAAAA,CAAgBJ,UAAUG,OAAAA,CAAAA;AACjC,MAAA;AACF,IAAA;AAEA,IAAA,IAAA,CAAKV,UAAAA,GAAa,IAAA;AACpB,EAAA;;;;AAKQW,EAAAA,eAAAA,CACNJ,UACAnB,QAAAA,EACM;AACN,IAAA,MAAM,EAAEL,UAAAA,EAAYC,OAAAA,EAASK,UAAAA,EAAU,GAAKD,QAAAA;AAC5C,IAAA,MAAMwB,SAAAA,GAAYL,SAAS,WAAA,CAAYM,IAAAA;AAGvC,IAAA,MAAMC,iBAAiB9B,OAAAA,CAAQ6B,IAAAA,IAAQ,CAAA,EAAGD,SAAAA,IAAavB,UAAAA,CAAAA,CAAAA;AAGvD,IAAA,MAAM0B,WAAAA,GAAc/B,QAAQgC,UAAAA,KAAe,WAAA;AAI3C,IAAA,MAAMC,WAAAA,GAAeV,QAAAA,CAAiClB,UAAAA,CAAAA,CAAY6B,KAChEX,QAAAA,CAAAA;AAIF,IAAA,MAAMY,UAAAA,GAA4BJ,cAC9BK,wBAAAA,CAAiB;MACfP,IAAAA,EAAMC,cAAAA;AACNO,MAAAA,WAAAA,EAAarC,OAAAA,CAAQqC,WAAAA;MACrBL,UAAAA,EAAY,WAAA;AACZM,MAAAA,UAAAA,EAAYtC,OAAAA,CAAQsC,UAAAA;AACpBC,MAAAA,WAAAA,EAAavC,OAAAA,CAAQuC,WAAAA;AACrBC,MAAAA,OAAAA,EAASxC,OAAAA,CAAQwC,OAAAA;MACjBC,QAAAA,kBAAU,MAAA,CAAA,OACRC,UACAC,OAAAA,KAAAA;AAEA,QAAA,MAAMV,WAAAA,CAAYS,UAAUC,OAAAA,CAAAA;MAC9B,CAAA,EALU,UAAA;AAMZ,KAAA,IACAP,wBAAAA,CAAiB;MACfP,IAAAA,EAAMC,cAAAA;AACNO,MAAAA,WAAAA,EAAarC,OAAAA,CAAQqC,WAAAA;AACrBL,MAAAA,UAAAA,EAAYhC,OAAAA,CAAQgC,UAAAA;AACpBM,MAAAA,UAAAA,EAAYtC,OAAAA,CAAQsC,UAAAA;AACpBC,MAAAA,WAAAA,EAAavC,OAAAA,CAAQuC,WAAAA;AACrBC,MAAAA,OAAAA,EAASxC,OAAAA,CAAQwC,OAAAA;AACjBC,MAAAA,QAAAA,gCAAiBC,QAAAA,KAAAA;AACf,QAAA,MAAMT,YAAYS,QAAAA,CAAAA;MACpB,CAAA,EAFU,UAAA;KAGZ,CAAA;AAGJ,IAAA,IAAA,CAAKE,WAAAA,CAAY7C,YAAYoC,UAAAA,CAAAA;AAC/B,EAAA;;;;AAKQS,EAAAA,WAAAA,CACN7C,YACAoC,UAAAA,EACM;AACN,IAAA,MAAMU,WAAW9C,UAAAA,CAAW+C,GAAAA;AAC5B,IAAA,MAAMC,QAAAA,GAAW,IAAA,CAAKhC,MAAAA,CAAO8B,QAAAA,CAAAA;AAE7B,IAAA,IAAIE,QAAAA,EAAU;AAEZ,MAAA,MAAM,CAACC,kBAAAA,EAAoBC,mBAAAA,CAAAA,GAAuBF,QAAAA;AAClD,MAAA,IAAA,CAAKhC,MAAAA,CAAO8B,QAAAA,CAAAA,GAAY;AACtBG,QAAAA,kBAAAA;AACA,QAAA;AAAIC,UAAAA,GAAAA,mBAAAA;AAAqBd,UAAAA;;;IAE7B,CAAA,MAAO;AAEL,MAAA,IAAA,CAAKpB,MAAAA,CAAO8B,QAAAA,CAAAA,GAAY;AAAC9C,QAAAA,UAAAA;AAAY,QAAA;AAACoC,UAAAA;;;AACxC,IAAA;AACF,EAAA;;;;;EAMAe,SAAAA,GAA2B;AACzB,IAAA,OAAO,IAAA,CAAKnC,MAAAA;AACd,EAAA;;;;AAKAoC,EAAAA,eAAAA,CAAgBnD,OAAAA,EAA8C;AAC5D,IAAA,MAAMoD,YAAAA,GAA8B;AAAE,MAAA,GAAG,IAAA,CAAKrC;AAAO,KAAA;AAErD,IAAA,IAAIf,QAAQqD,gBAAAA,EAAkB;AAC5B,MAAA,KAAA,MAAW,CAACtD,UAAAA,EAAYuD,WAAAA,CAAAA,IAAgBtD,QAAQqD,gBAAAA,EAAkB;AAChE,QAAA,MAAMN,QAAAA,GAAWK,YAAAA,CAAarD,UAAAA,CAAW+C,GAAG,CAAA;AAC5C,QAAA,IAAIC,QAAAA,EAAU;AACZ,UAAA,MAAM,CAACC,kBAAAA,EAAoBC,mBAAAA,CAAAA,GAAuBF,QAAAA;AAClDK,UAAAA,YAAAA,CAAarD,UAAAA,CAAW+C,GAAG,CAAA,GAAI;AAC7BE,YAAAA,kBAAAA;AACA,YAAA;AAAIC,cAAAA,GAAAA,mBAAAA;AAAwBK,cAAAA,GAAAA;;;QAEhC,CAAA,MAAO;AACLF,UAAAA,YAAAA,CAAarD,UAAAA,CAAW+C,GAAG,CAAA,GAAI;AAAC/C,YAAAA,UAAAA;AAAYuD,YAAAA;;AAC9C,QAAA;AACF,MAAA;AACF,IAAA;AAEA,IAAA,OAAOF,YAAAA;AACT,EAAA;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;ACxIaG,sBAAAA,GAAN,MAAMA,eAAAA,CAAAA;AAAAA,EAAAA;;;;;EAQMC,MAAAA,GAAS,IAAIC,aAAAA,CAAOF,eAAAA,CAAe1B,IAAI,CAAA;AAChD6B,EAAAA,OAAAA;EACAC,cAAAA,GAAiB,KAAA;EACjBC,SAAAA,GAAY,KAAA;AAEpB,EAAA,WAAA,CAC4C5D,SACzBiB,gBAAAA,EACjB;SAF0CjB,OAAAA,GAAAA,OAAAA;SACzBiB,gBAAAA,GAAAA,gBAAAA;AAChB,EAAA;;;;;AAMH,EAAA,MAAMC,YAAAA,GAA8B;AAClC,IAAA,IAAA,CAAK2C,iBAAAA,EAAiB;AAEtB,IAAA,IAAI,KAAKC,eAAAA,EAAe,IAAM,IAAA,CAAK9D,OAAAA,CAAQ+D,YAAY,cAAA,EAAgB;AACrE,MAAA,MAAM,KAAKC,OAAAA,EAAO;AACpB,IAAA;AACF,EAAA;;;;;AAMA,EAAA,MAAMC,sBAAAA,GAAwC;AAC5C,IAAA,MAAMF,OAAAA,GAAU,IAAA,CAAK/D,OAAAA,CAAQ+D,OAAAA,IAAW,wBAAA;AACxC,IAAA,IAAI,IAAA,CAAKD,eAAAA,EAAe,IAAMC,OAAAA,KAAY,wBAAA,EAA0B;AAClE,MAAA,MAAM,KAAKC,OAAAA,EAAO;AACpB,IAAA;AACF,EAAA;;;;;AAMA,EAAA,MAAME,eAAAA,GAAiC;AACrC,IAAA,IAAI,IAAA,CAAKlE,OAAAA,CAAQmE,UAAAA,KAAe,iBAAA,EAAmB;AACjD,MAAA,MAAM,KAAKC,UAAAA,EAAU;AACvB,IAAA;AACF,EAAA;;;;;AAMA,EAAA,MAAMC,yBAAAA,GAA2C;AAC/C,IAAA,MAAMF,UAAAA,GAAa,IAAA,CAAKnE,OAAAA,CAAQmE,UAAAA,IAAc,2BAAA;AAC9C,IAAA,IAAIA,eAAe,2BAAA,EAA6B;AAC9C,MAAA,MAAM,KAAKC,UAAAA,EAAU;AACvB,IAAA;AACF,EAAA;;;;;AAMA,EAAA,MAAME,qBAAAA,GAAuC;AAC3C,IAAA,IAAI,IAAA,CAAKtE,OAAAA,CAAQmE,UAAAA,KAAe,uBAAA,EAAyB;AACvD,MAAA,MAAM,KAAKC,UAAAA,EAAU;AACvB,IAAA;AACF,EAAA;EAuBA,MAAMG,IAAAA,CACJC,YAAAA,EACAC,aAAAA,EACAzE,OAAAA,EACqB;AACrB,IAAA,IAAI,KAAK2D,cAAAA,EAAgB;AACvB,MAAA,MAAM,IAAIe,MAAM,oCAAA,CAAA;AAClB,IAAA;AAGA,IAAA,MAAMC,YAAAA,GACJ,OAAOH,YAAAA,KAAiB,UAAA,IAAc,KAAA,IAASA,YAAAA;AAEjD,IAAA,IAAIG,YAAAA,EAAc;AAChB,MAAA,OAAO,IAAA,CAAKjB,OAAAA,CAAQa,IAAAA,CAClBC,YAAAA,EACAC,eACAzE,OAAAA,CAAAA;AAEJ,IAAA;AACA,IAAA,OAAO,IAAA,CAAK0D,OAAAA,CAAQa,IAAAA,CAClBC,YAAAA,EACAC,aAAAA,CAAAA;AAEJ,EAAA;;;;EAKAG,UAAAA,GAAsB;AACpB,IAAA,OAAO,IAAA,CAAKlB,OAAAA;AACd,EAAA;;;;AAKA,EAAA,MAAMmB,KAAAA,GAAuB;AAC3B,IAAA,OAAO,KAAKb,OAAAA,EAAO;AACrB,EAAA;;;;EAKAc,WAAAA,GAAuB;AACrB,IAAA,OAAO,IAAA,CAAKpB,OAAAA,EAASoB,WAAAA,EAAAA,IAAiB,KAAA;AACxC,EAAA;;;;EAKAC,oBAAAA,GAAgC;AAC9B,IAAA,OAAO,IAAA,CAAKpB,cAAAA;AACd,EAAA;;;;AAKA,EAAA,MAAMqB,YAAYC,SAAAA,EAAsC;AACtD,IAAA,OAAO,IAAA,CAAKvB,OAAAA,CAAQsB,WAAAA,CAAYC,SAAAA,CAAAA;AAClC,EAAA;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,EAAA,MAAMC,aAAAA,GAAkC;AACtC,IAAA,IAAI,CAAC,KAAKtB,SAAAA,EAAW;AACnB,MAAA,OAAO,KAAA;AACT,IAAA;AAEA,IAAA,IAAA,CAAKJ,MAAAA,CAAO2B,IAAI,6CAAA,CAAA;AAChB,IAAA,MAAMC,MAAAA,GAAS,MAAM,IAAA,CAAK1B,OAAAA,CAAQwB,aAAAA,EAAa;AAC/C,IAAA,IAAIE,MAAAA,EAAQ;AACV,MAAA,IAAA,CAAK5B,MAAAA,CAAO2B,IAAI,+CAAA,CAAA;AAClB,IAAA;AACA,IAAA,OAAOC,MAAAA;AACT,EAAA;;;;EAKQvB,iBAAAA,GAA0B;AAChC,IAAA,MAAMT,YAAAA,GAAe,IAAA,CAAKnC,gBAAAA,CAAiBkC,eAAAA,CAAgB,KAAKnD,OAAO,CAAA;AAGvE,IAAA,MAAMqF,QAAAA,GAAW,IAAIC,sBAAAA,EAAAA;AACrB,IAAA,KAAA,MAAWC,KAAAA,IAASC,MAAAA,CAAOC,MAAAA,CAAOrC,YAAAA,CAAAA,EAAe;AAC/C,MAAA,IAAIsC,0BAAAA,CAAmBH,KAAAA,CAAAA,EAAQ;AAC7B,QAAA,MAAM,CAACxF,UAAAA,EAAYuD,WAAAA,CAAAA,GAAeiC,KAAAA;AAClCF,QAAAA,QAAAA,CAASM,QAAAA,CAAS5F,YAAYuD,WAAAA,CAAAA;MAChC,CAAA,MAAO;AACL+B,QAAAA,QAAAA,CAASM,QAAAA,CAASJ,KAAAA,CAAMxF,UAAAA,EAAYwF,KAAAA,CAAMjC,WAAW,CAAA;AACvD,MAAA;AACF,IAAA;AAEA,IAAA,MAAMsC,UAAAA,GAAaP,SAASQ,QAAAA,EAAQ;AACpC,IAAA,IAAI,CAACD,WAAWE,KAAAA,EAAO;AACrB,MAAA,MAAMC,MAAAA,GAASH,WAAWI,MAAAA,CAAOC,MAAAA,CAAO,CAACC,CAAAA,KAAMA,CAAAA,CAAEC,aAAa,OAAA,CAAA;AAC9D,MAAA,IAAIJ,MAAAA,CAAOtE,SAAS,CAAA,EAAG;AACrB,QAAA,MAAM,IAAIiD,KAAAA,CACR,CAAA,wBAAA,EAA2BqB,MAAAA,CAAOK,GAAAA,CAAI,CAACF,CAAAA,KAAMA,CAAAA,CAAEG,OAAO,CAAA,CAAEC,IAAAA,CAAK,IAAA,CAAA,CAAA,CAAO,CAAA;AAExE,MAAA;AACF,IAAA;AAEA,IAAA,IAAA,CAAK5C,OAAAA,GAAU,IAAI6C,eAAAA,CACjB;AACEC,MAAAA,SAAAA,EAAW,KAAKxG,OAAAA,CAAQwG,SAAAA;AACxBC,MAAAA,QAAAA,EAAU,KAAKzG,OAAAA,CAAQyG,QAAAA;MACvB1F,MAAAA,EAAQqC,YAAAA;MACRsD,WAAAA,EAAa,IAAA,CAAK1G,QAAQ0G,WAAAA,GACtB;AAAI,QAAA,GAAA,IAAA,CAAK1G,OAAAA,CAAQ0G;AACjBC,OAAAA,GAAAA,MAAAA;AACJC,MAAAA,KAAAA,EAAO,KAAK5G,OAAAA,CAAQ4G,KAAAA;AACpBC,MAAAA,WAAAA,EAAa,KAAK7G,OAAAA,CAAQ6G,WAAAA;AAC1BC,MAAAA,eAAAA,EAAiB,KAAK9G,OAAAA,CAAQ8G,eAAAA;AAC9BC,MAAAA,cAAAA,EAAgB,KAAK/G,OAAAA,CAAQ+G;KAC/B,EACA,IAAA,CAAK/G,QAAQgH,KAAK,CAAA;AAGpB,IAAA,IAAA,CAAKxD,MAAAA,CAAO2B,IAAI,+CAAA,CAAA;AAClB,EAAA;EAEQrB,eAAAA,GAA2B;AACjC,IAAA,OAAO,IAAA,CAAK9D,QAAQiH,SAAAA,KAAc,KAAA;AACpC,EAAA;AAEA,EAAA,MAAcjD,OAAAA,GAAyB;AACrC,IAAA,IAAI,KAAKJ,SAAAA,EAAW;AAClB,MAAA;AACF,IAAA;AAEA,IAAA,MAAM,IAAA,CAAKF,QAAQmB,KAAAA,EAAK;AACxB,IAAA,IAAA,CAAKjB,SAAAA,GAAY,IAAA;AACjB,IAAA,IAAA,CAAKJ,MAAAA,CAAO2B,IAAI,6BAAA,CAAA;AAClB,EAAA;AAEA,EAAA,MAAcf,UAAAA,GAA4B;AACxC,IAAA,IAAI,CAAC,IAAA,CAAKR,SAAAA,IAAa,IAAA,CAAKD,cAAAA,EAAgB;AAC1C,MAAA;AACF,IAAA;AAEA,IAAA,IAAA,CAAKA,cAAAA,GAAiB,IAAA;AACtB,IAAA,IAAA,CAAKH,MAAAA,CAAO2B,IACV,2EAAA,CAAA;AAGF,IAAA,MAAM,IAAA,CAAKzB,QAAQwD,QAAAA,EAAQ;AAC3B,IAAA,IAAA,CAAK1D,MAAAA,CAAO2B,IAAI,uCAAA,CAAA;AAClB,EAAA;AACF;;;;;;;;;;;;;;;;;;;AC/OagC,qBAAAA,GAAN,MAAMA,cAAAA,CAAAA;AAAAA,EAAAA;;;;;;;;;AAOX,EAAA,OAAOC,QAAQpH,OAAAA,EAA8C;AAC3D,IAAA,OAAO;MACLqH,MAAAA,EAAQF,cAAAA;MACRG,OAAAA,EAAS;AAACC,QAAAA;;MACVnG,SAAAA,EAAW;AACT,QAAA;UACEoG,OAAAA,EAAS3H,eAAAA;UACT4H,QAAAA,EAAUzH;AACZ,SAAA;AACAc,QAAAA,kCAAAA;AACAyC,QAAAA;;MAEFmE,OAAAA,EAAS;AAACnE,QAAAA;;AACZ,KAAA;AACF,EAAA;;;;;;;;AASA,EAAA,OAAOoE,aAAa3H,OAAAA,EAAmD;AACrE,IAAA,MAAM4H,cAAAA,GAAiBT,cAAAA,CAAcU,oBAAAA,CAAqB7H,OAAAA,CAAAA;AAE1D,IAAA,OAAO;MACLqH,MAAAA,EAAQF,cAAAA;MACRG,OAAAA,EAAS;AAACC,QAAAA,oBAAAA;AAAqBvH,QAAAA,GAAAA,OAAAA,CAAQsH,WAAW;;MAClDlG,SAAAA,EAAW;AACNwG,QAAAA,GAAAA,cAAAA;AACH9G,QAAAA,kCAAAA;AACAyC,QAAAA;;MAEFmE,OAAAA,EAAS;AAACnE,QAAAA;;AACZ,KAAA;AACF,EAAA;;;;AAKA,EAAA,OAAesE,qBACb7H,OAAAA,EACY;AACZ,IAAA,IAAIA,QAAQ8H,UAAAA,EAAY;AACtB,MAAA,OAAO;AACL,QAAA;UACEN,OAAAA,EAAS3H,eAAAA;AACTiI,UAAAA,UAAAA,EAAY9H,OAAAA,CAAQ8H,UAAAA;UACpBC,MAAAA,EAAS/H,OAAAA,CAAQ+H,UAAU;AAC7B;;AAEJ,IAAA;AAEA,IAAA,IAAI/H,QAAQgI,QAAAA,EAAU;AACpB,MAAA,OAAO;AACL,QAAA;AACER,UAAAA,OAAAA,EAASxH,OAAAA,CAAQgI,QAAAA;AACjBA,UAAAA,QAAAA,EAAUhI,OAAAA,CAAQgI;AACpB,SAAA;AACA,QAAA;UACER,OAAAA,EAAS3H,eAAAA;AACTiI,UAAAA,UAAAA,kBAAY,MAAA,CAAA,OACVG,OAAAA,KACkCA,OAAAA,CAAQC,oBAAAA,EAAoB,EAFpD,YAAA,CAAA;UAGZH,MAAAA,EAAQ;YAAC/H,OAAAA,CAAQgI;;AACnB;;AAEJ,IAAA;AAEA,IAAA,IAAIhI,QAAQmI,WAAAA,EAAa;AACvB,MAAA,OAAO;AACL,QAAA;UACEX,OAAAA,EAAS3H,eAAAA;AACTiI,UAAAA,UAAAA,kBAAY,MAAA,CAAA,OACVG,OAAAA,KACkCA,OAAAA,CAAQC,oBAAAA,EAAoB,EAFpD,YAAA,CAAA;UAGZH,MAAAA,EAAQ;YAAC/H,OAAAA,CAAQmI;;AACnB;;AAEJ,IAAA;AAEA,IAAA,MAAM,IAAIzD,MACR,4EAAA,CAAA;AAEJ,EAAA;AACF","file":"index.cjs","sourcesContent":["/**\n * Metadata key for storing event handler metadata on methods.\n */\nexport const MATADOR_EVENT_HANDLER = Symbol('MATADOR_EVENT_HANDLER');\n\n/**\n * Metadata key for storing a list of all event handlers on a class.\n */\nexport const MATADOR_EVENT_HANDLERS = Symbol('MATADOR_EVENT_HANDLERS');\n\n/**\n * Injection token for module options.\n */\nexport const MATADOR_OPTIONS = Symbol('MATADOR_OPTIONS');\n","import type { EventClass } from '@zdavison/matador';\nimport { MATADOR_EVENT_HANDLER, MATADOR_EVENT_HANDLERS } from '../constants.js';\nimport type {\n  MatadorEventHandlerMetadata,\n  OnMatadorEventOptions,\n} from '../types.js';\n\n/**\n * Method decorator that marks a method as a Matador event subscriber.\n *\n * @param eventClass - The event class to subscribe to\n * @param options - Subscriber options (description is required)\n *\n * @example\n * ```typescript\n * @Injectable()\n * export class NotificationService {\n *   @OnMatadorEvent(UserCreatedEvent, {\n *     description: 'Sends welcome email to new users',\n *     idempotent: 'yes',\n *   })\n *   async onUserCreated(envelope: Envelope<UserCreatedEvent['data']>) {\n *     await this.emailService.sendWelcome(envelope.data.email);\n *   }\n * }\n * ```\n */\nexport function OnMatadorEvent<T>(\n  eventClass: EventClass<T>,\n  options: OnMatadorEventOptions,\n): (\n  target: object,\n  propertyKey: string | symbol,\n  descriptor: PropertyDescriptor,\n) => PropertyDescriptor {\n  return (\n    target: object,\n    propertyKey: string | symbol,\n    descriptor: PropertyDescriptor,\n  ): PropertyDescriptor => {\n    const metadata: MatadorEventHandlerMetadata = {\n      eventClass: eventClass as EventClass<unknown>,\n      options,\n      methodName: String(propertyKey),\n    };\n\n    // Store metadata on the method itself\n    if (descriptor.value != null) {\n      Reflect.defineMetadata(\n        MATADOR_EVENT_HANDLER,\n        metadata,\n        descriptor.value as object,\n      );\n    }\n\n    // Maintain a list of all handlers on the class for discovery\n    const existingHandlers: MatadorEventHandlerMetadata[] =\n      Reflect.getMetadata(MATADOR_EVENT_HANDLERS, target.constructor) ?? [];\n\n    Reflect.defineMetadata(\n      MATADOR_EVENT_HANDLERS,\n      [...existingHandlers, metadata],\n      target.constructor,\n    );\n\n    return descriptor;\n  };\n}\n","import { Injectable, type Type } from '@nestjs/common';\n\n/**\n * Optional class decorator that marks a class as a Matador subscriber.\n * Classes with @OnMatadorEvent methods are auto-discovered, so this decorator\n * is optional. Use it for explicit documentation or when you want to ensure\n * a class is treated as a subscriber even if it has no decorated methods yet.\n *\n * @example\n * ```typescript\n * @MatadorSubscriber()\n * @Injectable()\n * export class NotificationService {\n *   @OnMatadorEvent(UserCreatedEvent, { description: '...' })\n *   async onUserCreated(envelope: Envelope<...>) {\n *     // ...\n *   }\n * }\n * ```\n */\nexport function MatadorSubscriber(): ClassDecorator {\n  return (target: object): void => {\n    // Ensure the class is injectable (apply @Injectable if not already)\n    // This is a no-op if @Injectable was already applied\n    Injectable()(target as Type<unknown>);\n  };\n}\n","import { Inject, Injectable, type OnModuleInit } from '@nestjs/common';\nimport { DiscoveryService } from '@nestjs/core';\nimport {\n  type AnySubscriber,\n  type Envelope,\n  type EventClass,\n  type MatadorSchema,\n  type SubscriberContext,\n  createSubscriber,\n} from '@zdavison/matador';\nimport { MATADOR_EVENT_HANDLERS } from '../constants.js';\nimport type {\n  MatadorEventHandlerMetadata,\n  MatadorModuleOptions,\n} from '../types.js';\n\n/**\n * Schema entry tuple type for building the schema.\n */\ntype SchemaEntryTuple = [EventClass<unknown>, readonly AnySubscriber[]];\n\n/**\n * Mutable schema type for building during discovery.\n */\ntype MutableSchema = Record<string, SchemaEntryTuple>;\n\n/**\n * Service that discovers all @OnMatadorEvent decorated methods in the application\n * and builds a Matador schema from them.\n */\n@Injectable()\nexport class SubscriberDiscoveryService implements OnModuleInit {\n  private schema: MutableSchema = {};\n  private discovered = false;\n\n  constructor(\n    @Inject(DiscoveryService)\n    private readonly discoveryService: DiscoveryService,\n  ) {}\n\n  onModuleInit(): void {\n    this.discoverSubscribers();\n  }\n\n  /**\n   * Discovers all @OnMatadorEvent decorated methods and builds the schema.\n   */\n  private discoverSubscribers(): void {\n    if (this.discovered) {\n      return;\n    }\n\n    const providers = this.discoveryService.getProviders();\n\n    for (const wrapper of providers) {\n      const { instance } = wrapper;\n      if (!instance || typeof instance !== 'object') {\n        continue;\n      }\n\n      const handlers: MatadorEventHandlerMetadata[] | undefined =\n        Reflect.getMetadata(MATADOR_EVENT_HANDLERS, instance.constructor);\n\n      if (!handlers || handlers.length === 0) {\n        continue;\n      }\n\n      for (const handler of handlers) {\n        this.registerHandler(instance, handler);\n      }\n    }\n\n    this.discovered = true;\n  }\n\n  /**\n   * Registers a single handler method as a subscriber.\n   */\n  private registerHandler(\n    instance: object,\n    metadata: MatadorEventHandlerMetadata,\n  ): void {\n    const { eventClass, options, methodName } = metadata;\n    const className = instance.constructor.name;\n\n    // Auto-generate name if not provided: ClassName.methodName\n    const subscriberName = options.name ?? `${className}.${methodName}`;\n\n    // Determine if this is a resumable subscriber\n    const isResumable = options.idempotent === 'resumable';\n\n    // Create the callback that calls the instance method\n    // biome-ignore lint/suspicious/noExplicitAny: Instance methods may have various signatures\n    const boundMethod = (instance as Record<string, any>)[methodName].bind(\n      instance,\n    );\n\n    // Create a subscriber that calls the instance method\n    const subscriber: AnySubscriber = isResumable\n      ? createSubscriber({\n          name: subscriberName,\n          description: options.description,\n          idempotent: 'resumable',\n          importance: options.importance,\n          targetQueue: options.targetQueue,\n          enabled: options.enabled,\n          callback: async (\n            envelope: Envelope<unknown>,\n            context: SubscriberContext,\n          ) => {\n            await boundMethod(envelope, context);\n          },\n        })\n      : createSubscriber({\n          name: subscriberName,\n          description: options.description,\n          idempotent: options.idempotent,\n          importance: options.importance,\n          targetQueue: options.targetQueue,\n          enabled: options.enabled,\n          callback: async (envelope: Envelope<unknown>) => {\n            await boundMethod(envelope);\n          },\n        });\n\n    // Add to schema\n    this.addToSchema(eventClass, subscriber);\n  }\n\n  /**\n   * Adds a subscriber to the schema for an event.\n   */\n  private addToSchema(\n    eventClass: EventClass<unknown>,\n    subscriber: AnySubscriber,\n  ): void {\n    const eventKey = eventClass.key;\n    const existing = this.schema[eventKey];\n\n    if (existing) {\n      // Add subscriber to existing event entry\n      const [existingEventClass, existingSubscribers] = existing;\n      this.schema[eventKey] = [\n        existingEventClass,\n        [...existingSubscribers, subscriber],\n      ];\n    } else {\n      // Create new entry\n      this.schema[eventKey] = [eventClass, [subscriber]];\n    }\n  }\n\n  /**\n   * Gets the discovered schema.\n   * Must be called after onModuleInit has run.\n   */\n  getSchema(): MatadorSchema {\n    return this.schema;\n  }\n\n  /**\n   * Gets the schema merged with additional events from options.\n   */\n  getMergedSchema(options: MatadorModuleOptions): MatadorSchema {\n    const mergedSchema: MutableSchema = { ...this.schema };\n\n    if (options.additionalEvents) {\n      for (const [eventClass, subscribers] of options.additionalEvents) {\n        const existing = mergedSchema[eventClass.key];\n        if (existing) {\n          const [existingEventClass, existingSubscribers] = existing;\n          mergedSchema[eventClass.key] = [\n            existingEventClass,\n            [...existingSubscribers, ...subscribers],\n          ];\n        } else {\n          mergedSchema[eventClass.key] = [eventClass, subscribers];\n        }\n      }\n    }\n\n    return mergedSchema;\n  }\n}\n","import {\n  type BeforeApplicationShutdown,\n  Inject,\n  Injectable,\n  Logger,\n  type OnApplicationBootstrap,\n  type OnApplicationShutdown,\n  type OnModuleDestroy,\n  type OnModuleInit,\n} from '@nestjs/common';\nimport {\n  type Event,\n  type EventClass,\n  type EventOptions,\n  Matador,\n  SchemaRegistry,\n  type SendResult,\n  isSchemaEntryTuple,\n} from '@zdavison/matador';\nimport { MATADOR_OPTIONS } from '../constants.js';\n// biome-ignore lint/style/useImportType: must be a runtime value import — Nest reads it from emitDecoratorMetadata to inject this constructor dependency; `import type` erases it and breaks DI.\nimport { SubscriberDiscoveryService } from '../discovery/subscriber-discovery.service.js';\nimport type { MatadorModuleOptions } from '../types.js';\n\n/**\n * Injectable service that wraps Matador and integrates with NestJS lifecycle.\n *\n * This service handles:\n * - Building the Matador instance with discovered subscribers\n * - Starting Matador at the configured lifecycle hook\n * - Graceful shutdown with drain timeout\n * - Preventing event sending during shutdown\n *\n * @example\n * ```typescript\n * @Injectable()\n * export class OrderService {\n *   constructor(private readonly matador: MatadorService) {}\n *\n *   async createOrder(data: CreateOrderDto) {\n *     // ... create order logic ...\n *     await this.matador.send(OrderCreatedEvent, { orderId: order.id });\n *   }\n * }\n * ```\n */\n@Injectable()\nexport class MatadorService\n  implements\n    OnModuleInit,\n    OnApplicationBootstrap,\n    OnModuleDestroy,\n    BeforeApplicationShutdown,\n    OnApplicationShutdown\n{\n  private readonly logger = new Logger(MatadorService.name);\n  private matador!: Matador;\n  private isShuttingDown = false;\n  private isStarted = false;\n\n  constructor(\n    @Inject(MATADOR_OPTIONS) private readonly options: MatadorModuleOptions,\n    private readonly discoveryService: SubscriberDiscoveryService,\n  ) {}\n\n  /**\n   * Called when MatadorModule is initialized.\n   * Builds Matador instance and starts if startOn === 'onModuleInit'.\n   */\n  async onModuleInit(): Promise<void> {\n    this.initializeMatador();\n\n    if (this.shouldAutoStart() && this.options.startOn === 'onModuleInit') {\n      await this.doStart();\n    }\n  }\n\n  /**\n   * Called after all modules are initialized and the app is ready to start.\n   * Starts Matador if startOn === 'onApplicationBootstrap' (default).\n   */\n  async onApplicationBootstrap(): Promise<void> {\n    const startOn = this.options.startOn ?? 'onApplicationBootstrap';\n    if (this.shouldAutoStart() && startOn === 'onApplicationBootstrap') {\n      await this.doStart();\n    }\n  }\n\n  /**\n   * Called when MatadorModule is destroyed.\n   * Shuts down Matador if shutdownOn === 'onModuleDestroy'.\n   */\n  async onModuleDestroy(): Promise<void> {\n    if (this.options.shutdownOn === 'onModuleDestroy') {\n      await this.doShutdown();\n    }\n  }\n\n  /**\n   * Called when the application receives a shutdown signal (SIGTERM, etc).\n   * Shuts down Matador if shutdownOn === 'beforeApplicationShutdown' (default).\n   */\n  async beforeApplicationShutdown(): Promise<void> {\n    const shutdownOn = this.options.shutdownOn ?? 'beforeApplicationShutdown';\n    if (shutdownOn === 'beforeApplicationShutdown') {\n      await this.doShutdown();\n    }\n  }\n\n  /**\n   * Called after beforeApplicationShutdown completes.\n   * Shuts down Matador if shutdownOn === 'onApplicationShutdown'.\n   */\n  async onApplicationShutdown(): Promise<void> {\n    if (this.options.shutdownOn === 'onApplicationShutdown') {\n      await this.doShutdown();\n    }\n  }\n\n  /**\n   * Sends an event to all registered subscribers.\n   *\n   * @throws Error if called during shutdown\n   *\n   * @example\n   * ```typescript\n   * // Pass the event class and data directly\n   * await matadorService.send(UserCreatedEvent, { userId: '123' });\n   *\n   * // Or pass an event instance\n   * const event = new UserCreatedEvent({ userId: '123' });\n   * await matadorService.send(event);\n   * ```\n   */\n  async send<T>(\n    eventClass: EventClass<T>,\n    data: T,\n    options?: EventOptions,\n  ): Promise<SendResult>;\n  async send<T>(event: Event<T>, options?: EventOptions): Promise<SendResult>;\n  async send<T>(\n    eventOrClass: EventClass<T> | Event<T>,\n    dataOrOptions?: T | EventOptions,\n    options?: EventOptions,\n  ): Promise<SendResult> {\n    if (this.isShuttingDown) {\n      throw new Error('Cannot send events during shutdown');\n    }\n\n    // Determine if first arg is an event instance or event class\n    const isEventClass =\n      typeof eventOrClass === 'function' && 'key' in eventOrClass;\n\n    if (isEventClass) {\n      return this.matador.send(\n        eventOrClass as EventClass<T>,\n        dataOrOptions as T,\n        options,\n      );\n    }\n    return this.matador.send(\n      eventOrClass as Event<T>,\n      dataOrOptions as EventOptions | undefined,\n    );\n  }\n\n  /**\n   * Gets the underlying Matador instance for advanced operations.\n   */\n  getMatador(): Matador {\n    return this.matador;\n  }\n\n  /**\n   * Starts consuming (if autoStart was false).\n   */\n  async start(): Promise<void> {\n    return this.doStart();\n  }\n\n  /**\n   * Checks if connected to transport.\n   */\n  isConnected(): boolean {\n    return this.matador?.isConnected() ?? false;\n  }\n\n  /**\n   * Checks if shutdown is in progress.\n   */\n  isShutdownInProgress(): boolean {\n    return this.isShuttingDown;\n  }\n\n  /**\n   * Waits for all pending messages to be processed.\n   */\n  async waitForIdle(timeoutMs?: number): Promise<boolean> {\n    return this.matador.waitForIdle(timeoutMs);\n  }\n\n  /**\n   * Stops receiving new messages without performing full shutdown.\n   * After calling this, no new messages will be delivered from the transport.\n   * The transport remains connected for later shutdown.\n   *\n   * Use this when you need to coordinate shutdown across multiple systems:\n   * 1. Call stopReceiving() to stop new message delivery\n   * 2. Wait for both Matador and your other systems to idle\n   * 3. Let NestJS lifecycle handle disconnect via app.close()\n   *\n   * @returns true if receiving was stopped, false if not started or already stopped\n   *\n   * @example\n   * ```typescript\n   * // In your graceful shutdown handler:\n   * await matadorService.stopReceiving();\n   * await Promise.all([\n   *   matadorService.waitForIdle(30000),\n   *   myOtherService.waitForPendingWork()\n   * ]);\n   * await app.close(); // NestJS lifecycle will disconnect transport\n   * ```\n   */\n  async stopReceiving(): Promise<boolean> {\n    if (!this.isStarted) {\n      return false;\n    }\n\n    this.logger.log('[Matador] ⏳ Stopping message receiving');\n    const result = await this.matador.stopReceiving();\n    if (result) {\n      this.logger.log('[Matador] 🟢 Message receiving stopped');\n    }\n    return result;\n  }\n\n  /**\n   * Initializes the Matador instance with discovered schema.\n   */\n  private initializeMatador(): void {\n    const mergedSchema = this.discoveryService.getMergedSchema(this.options);\n\n    // Validate schema at startup\n    const registry = new SchemaRegistry();\n    for (const entry of Object.values(mergedSchema)) {\n      if (isSchemaEntryTuple(entry)) {\n        const [eventClass, subscribers] = entry;\n        registry.register(eventClass, subscribers);\n      } else {\n        registry.register(entry.eventClass, entry.subscribers);\n      }\n    }\n\n    const validation = registry.validate();\n    if (!validation.valid) {\n      const errors = validation.issues.filter((i) => i.severity === 'error');\n      if (errors.length > 0) {\n        throw new Error(\n          `Invalid Matador schema: ${errors.map((i) => i.message).join(', ')}`,\n        );\n      }\n    }\n\n    this.matador = new Matador(\n      {\n        transport: this.options.transport,\n        topology: this.options.topology,\n        schema: mergedSchema,\n        consumeFrom: this.options.consumeFrom\n          ? [...this.options.consumeFrom]\n          : undefined,\n        codec: this.options.codec,\n        retryPolicy: this.options.retryPolicy,\n        checkpointStore: this.options.checkpointStore,\n        shutdownConfig: this.options.shutdownConfig,\n      },\n      this.options.hooks,\n    );\n\n    this.logger.log('[Matador] 🟢 matador-nest initialized.');\n  }\n\n  private shouldAutoStart(): boolean {\n    return this.options.autoStart !== false;\n  }\n\n  private async doStart(): Promise<void> {\n    if (this.isStarted) {\n      return;\n    }\n\n    await this.matador.start();\n    this.isStarted = true;\n    this.logger.log('[Matador] 🟢 Started');\n  }\n\n  private async doShutdown(): Promise<void> {\n    if (!this.isStarted || this.isShuttingDown) {\n      return;\n    }\n\n    this.isShuttingDown = true;\n    this.logger.log(\n      '[Matador] ⏳ Graceful shutdown initiated, draining in-flight messages',\n    );\n\n    await this.matador.shutdown();\n    this.logger.log('[Matador] 🟢 Shutdown complete');\n  }\n}\n","import {\n  type DynamicModule,\n  Global,\n  type InjectionToken,\n  Module,\n  type Provider,\n} from '@nestjs/common';\nimport { DiscoveryModule } from '@nestjs/core';\nimport { MATADOR_OPTIONS } from '../constants.js';\nimport { SubscriberDiscoveryService } from '../discovery/subscriber-discovery.service.js';\nimport { MatadorService } from '../services/matador.service.js';\nimport type {\n  MatadorModuleAsyncOptions,\n  MatadorModuleOptions,\n  MatadorOptionsFactory,\n} from '../types.js';\n\n/**\n * NestJS module for integrating Matador event processing.\n *\n * Use `MatadorModule.forRoot()` for synchronous configuration or\n * `MatadorModule.forRootAsync()` for async configuration with dependency injection.\n *\n * @example Synchronous configuration\n * ```typescript\n * @Module({\n *   imports: [\n *     MatadorModule.forRoot({\n *       transport: new RabbitMQTransport({\n *         url: 'amqp://localhost',\n *         connectionName: 'myapp',\n *       }),\n *       topology: TopologyBuilder.create()\n *         .withNamespace('myapp')\n *         .addQueue('events', { concurrency: 10 })\n *         .build(),\n *       consumeFrom: ['events'],\n *     }),\n *   ],\n * })\n * export class AppModule {}\n * ```\n *\n * @example Async configuration with ConfigService\n * ```typescript\n * @Module({\n *   imports: [\n *     ConfigModule.forRoot(),\n *     MatadorModule.forRootAsync({\n *       imports: [ConfigModule],\n *       inject: [ConfigService],\n *       useFactory: (config: ConfigService) => ({\n *         transport: new RabbitMQTransport({\n *           url: config.get('RABBITMQ_URL'),\n *           connectionName: config.get('APP_NAME'),\n *         }),\n *         topology: TopologyBuilder.create()\n *           .withNamespace(config.get('APP_NAME'))\n *           .addQueue('events')\n *           .build(),\n *         consumeFrom: ['events'],\n *       }),\n *     }),\n *   ],\n * })\n * export class AppModule {}\n * ```\n */\n@Global()\n@Module({})\n// biome-ignore lint/complexity/noStaticOnlyClass: NestJS modules require class-based pattern with static factory methods\nexport class MatadorModule {\n  /**\n   * Configures the MatadorModule with static options.\n   *\n   * @param options - Module configuration options\n   * @returns Dynamic module configuration\n   */\n  static forRoot(options: MatadorModuleOptions): DynamicModule {\n    return {\n      module: MatadorModule,\n      imports: [DiscoveryModule],\n      providers: [\n        {\n          provide: MATADOR_OPTIONS,\n          useValue: options,\n        },\n        SubscriberDiscoveryService,\n        MatadorService,\n      ],\n      exports: [MatadorService],\n    };\n  }\n\n  /**\n   * Configures the MatadorModule with async options.\n   * Use this when you need to inject dependencies like ConfigService.\n   *\n   * @param options - Async module configuration options\n   * @returns Dynamic module configuration\n   */\n  static forRootAsync(options: MatadorModuleAsyncOptions): DynamicModule {\n    const asyncProviders = MatadorModule.createAsyncProviders(options);\n\n    return {\n      module: MatadorModule,\n      imports: [DiscoveryModule, ...(options.imports ?? [])],\n      providers: [\n        ...asyncProviders,\n        SubscriberDiscoveryService,\n        MatadorService,\n      ],\n      exports: [MatadorService],\n    };\n  }\n\n  /**\n   * Creates async providers for the module options.\n   */\n  private static createAsyncProviders(\n    options: MatadorModuleAsyncOptions,\n  ): Provider[] {\n    if (options.useFactory) {\n      return [\n        {\n          provide: MATADOR_OPTIONS,\n          useFactory: options.useFactory,\n          inject: (options.inject ?? []) as InjectionToken[],\n        },\n      ];\n    }\n\n    if (options.useClass) {\n      return [\n        {\n          provide: options.useClass,\n          useClass: options.useClass,\n        },\n        {\n          provide: MATADOR_OPTIONS,\n          useFactory: async (\n            factory: MatadorOptionsFactory,\n          ): Promise<MatadorModuleOptions> => factory.createMatadorOptions(),\n          inject: [options.useClass],\n        },\n      ];\n    }\n\n    if (options.useExisting) {\n      return [\n        {\n          provide: MATADOR_OPTIONS,\n          useFactory: async (\n            factory: MatadorOptionsFactory,\n          ): Promise<MatadorModuleOptions> => factory.createMatadorOptions(),\n          inject: [options.useExisting],\n        },\n      ];\n    }\n\n    throw new Error(\n      'MatadorModule.forRootAsync() requires useFactory, useClass, or useExisting',\n    );\n  }\n}\n"]}