{"/Users/davidy/work/graphql-redis-subscriptions/src/redis-pubsub.ts":{"path":"/Users/davidy/work/graphql-redis-subscriptions/src/redis-pubsub.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":29}},"2":{"start":{"line":4,"column":32},"end":{"line":4,"column":66}},"3":{"start":{"line":7,"column":190},"end":{"line":7,"column":197}},"4":{"start":{"line":8,"column":8},"end":{"line":8,"column":73}},"5":{"start":{"line":8,"column":64},"end":{"line":8,"column":71}},"6":{"start":{"line":9,"column":8},"end":{"line":11,"column":9}},"7":{"start":{"line":10,"column":12},"end":{"line":10,"column":79}},"8":{"start":{"line":12,"column":8},"end":{"line":12,"column":31}},"9":{"start":{"line":13,"column":8},"end":{"line":13,"column":37}},"10":{"start":{"line":14,"column":8},"end":{"line":14,"column":41}},"11":{"start":{"line":15,"column":8},"end":{"line":40,"column":9}},"12":{"start":{"line":16,"column":12},"end":{"line":16,"column":44}},"13":{"start":{"line":17,"column":12},"end":{"line":17,"column":46}},"14":{"start":{"line":20,"column":12},"end":{"line":39,"column":13}},"15":{"start":{"line":21,"column":32},"end":{"line":21,"column":50}},"16":{"start":{"line":22,"column":16},"end":{"line":22,"column":62}},"17":{"start":{"line":23,"column":16},"end":{"line":23,"column":63}},"18":{"start":{"line":24,"column":16},"end":{"line":35,"column":17}},"19":{"start":{"line":25,"column":20},"end":{"line":27,"column":57}},"20":{"start":{"line":28,"column":20},"end":{"line":30,"column":57}},"21":{"start":{"line":33,"column":20},"end":{"line":33,"column":67}},"22":{"start":{"line":34,"column":20},"end":{"line":34,"column":68}},"23":{"start":{"line":38,"column":16},"end":{"line":38,"column":155}},"24":{"start":{"line":41,"column":8},"end":{"line":41,"column":78}},"25":{"start":{"line":42,"column":8},"end":{"line":42,"column":88}},"26":{"start":{"line":43,"column":8},"end":{"line":43,"column":34}},"27":{"start":{"line":44,"column":8},"end":{"line":44,"column":37}},"28":{"start":{"line":45,"column":8},"end":{"line":45,"column":44}},"29":{"start":{"line":46,"column":8},"end":{"line":46,"column":39}},"30":{"start":{"line":49,"column":8},"end":{"line":57,"column":9}},"31":{"start":{"line":50,"column":12},"end":{"line":50,"column":81}},"32":{"start":{"line":52,"column":13},"end":{"line":57,"column":9}},"33":{"start":{"line":53,"column":12},"end":{"line":53,"column":64}},"34":{"start":{"line":56,"column":12},"end":{"line":56,"column":80}},"35":{"start":{"line":60,"column":28},"end":{"line":60,"column":67}},"36":{"start":{"line":61,"column":19},"end":{"line":61,"column":47}},"37":{"start":{"line":62,"column":8},"end":{"line":62,"column":60}},"38":{"start":{"line":63,"column":8},"end":{"line":65,"column":9}},"39":{"start":{"line":64,"column":12},"end":{"line":64,"column":57}},"40":{"start":{"line":66,"column":21},"end":{"line":66,"column":54}},"41":{"start":{"line":67,"column":28},"end":{"line":67,"column":68}},"42":{"start":{"line":68,"column":8},"end":{"line":98,"column":9}},"43":{"start":{"line":69,"column":12},"end":{"line":69,"column":38}},"44":{"start":{"line":70,"column":12},"end":{"line":70,"column":54}},"45":{"start":{"line":70,"column":50},"end":{"line":70,"column":52}},"46":{"start":{"line":72,"column":13},"end":{"line":98,"column":9}},"47":{"start":{"line":73,"column":12},"end":{"line":73,"column":25}},"48":{"start":{"line":74,"column":12},"end":{"line":74,"column":39}},"49":{"start":{"line":77,"column":28},"end":{"line":77,"column":42}},"50":{"start":{"line":78,"column":39},"end":{"line":78,"column":62}},"51":{"start":{"line":79,"column":12},"end":{"line":79,"column":71}},"52":{"start":{"line":80,"column":24},"end":{"line":95,"column":14}},"53":{"start":{"line":81,"column":36},"end":{"line":81,"column":121}},"54":{"start":{"line":82,"column":16},"end":{"line":94,"column":19}},"55":{"start":{"line":83,"column":20},"end":{"line":93,"column":21}},"56":{"start":{"line":84,"column":24},"end":{"line":84,"column":63}},"57":{"start":{"line":85,"column":24},"end":{"line":85,"column":36}},"58":{"start":{"line":88,"column":44},"end":{"line":88,"column":79}},"59":{"start":{"line":89,"column":24},"end":{"line":89,"column":71}},"60":{"start":{"line":89,"column":57},"end":{"line":89,"column":69}},"61":{"start":{"line":90,"column":24},"end":{"line":90,"column":63}},"62":{"start":{"line":91,"column":24},"end":{"line":91,"column":37}},"63":{"start":{"line":92,"column":24},"end":{"line":92,"column":36}},"64":{"start":{"line":96,"column":12},"end":{"line":96,"column":60}},"65":{"start":{"line":97,"column":12},"end":{"line":97,"column":23}},"66":{"start":{"line":101,"column":37},"end":{"line":101,"column":70}},"67":{"start":{"line":102,"column":21},"end":{"line":102,"column":54}},"68":{"start":{"line":103,"column":8},"end":{"line":104,"column":73}},"69":{"start":{"line":104,"column":12},"end":{"line":104,"column":73}},"70":{"start":{"line":105,"column":8},"end":{"line":112,"column":9}},"71":{"start":{"line":106,"column":12},"end":{"line":106,"column":58}},"72":{"start":{"line":107,"column":12},"end":{"line":107,"column":59}},"73":{"start":{"line":108,"column":12},"end":{"line":108,"column":49}},"74":{"start":{"line":111,"column":12},"end":{"line":111,"column":31}},"75":{"start":{"line":113,"column":8},"end":{"line":113,"column":43}},"76":{"start":{"line":116,"column":8},"end":{"line":116,"column":88}},"77":{"start":{"line":119,"column":8},"end":{"line":119,"column":88}},"78":{"start":{"line":122,"column":8},"end":{"line":122,"column":36}},"79":{"start":{"line":125,"column":8},"end":{"line":125,"column":35}},"80":{"start":{"line":128,"column":8},"end":{"line":131,"column":11}},"81":{"start":{"line":134,"column":8},"end":{"line":135,"column":47}},"82":{"start":{"line":135,"column":12},"end":{"line":135,"column":47}},"83":{"start":{"line":136,"column":28},"end":{"line":136,"column":68}},"84":{"start":{"line":137,"column":8},"end":{"line":138,"column":19}},"85":{"start":{"line":138,"column":12},"end":{"line":138,"column":19}},"86":{"start":{"line":140,"column":8},"end":{"line":153,"column":9}},"87":{"start":{"line":141,"column":12},"end":{"line":149,"column":13}},"88":{"start":{"line":142,"column":16},"end":{"line":142,"column":94}},"89":{"start":{"line":144,"column":17},"end":{"line":149,"column":13}},"90":{"start":{"line":145,"column":16},"end":{"line":145,"column":66}},"91":{"start":{"line":148,"column":16},"end":{"line":148,"column":40}},"92":{"start":{"line":152,"column":12},"end":{"line":152,"column":36}},"93":{"start":{"line":154,"column":8},"end":{"line":157,"column":11}},"94":{"start":{"line":155,"column":33},"end":{"line":155,"column":60}},"95":{"start":{"line":156,"column":12},"end":{"line":156,"column":36}},"96":{"start":{"line":160,"column":0},"end":{"line":160,"column":34}},"97":{"start":{"line":162,"column":14},"end":{"line":165,"column":6}},"98":{"start":{"line":163,"column":8},"end":{"line":163,"column":31}},"99":{"start":{"line":164,"column":8},"end":{"line":164,"column":29}},"100":{"start":{"line":166,"column":4},"end":{"line":166,"column":31}},"101":{"start":{"line":167,"column":4},"end":{"line":167,"column":33}},"102":{"start":{"line":168,"column":4},"end":{"line":170,"column":5}},"103":{"start":{"line":169,"column":8},"end":{"line":169,"column":41}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":6,"column":4},"end":{"line":6,"column":5}},"loc":{"start":{"line":6,"column":30},"end":{"line":47,"column":5}},"line":6},"1":{"name":"(anonymous_1)","decl":{"start":{"line":8,"column":53},"end":{"line":8,"column":54}},"loc":{"start":{"line":8,"column":64},"end":{"line":8,"column":71}},"line":8},"2":{"name":"(anonymous_2)","decl":{"start":{"line":48,"column":4},"end":{"line":48,"column":5}},"loc":{"start":{"line":48,"column":36},"end":{"line":58,"column":5}},"line":48},"3":{"name":"(anonymous_3)","decl":{"start":{"line":59,"column":4},"end":{"line":59,"column":5}},"loc":{"start":{"line":59,"column":48},"end":{"line":99,"column":5}},"line":59},"4":{"name":"(anonymous_4)","decl":{"start":{"line":70,"column":44},"end":{"line":70,"column":45}},"loc":{"start":{"line":70,"column":50},"end":{"line":70,"column":52}},"line":70},"5":{"name":"(anonymous_5)","decl":{"start":{"line":80,"column":36},"end":{"line":80,"column":37}},"loc":{"start":{"line":80,"column":57},"end":{"line":95,"column":13}},"line":80},"6":{"name":"(anonymous_6)","decl":{"start":{"line":82,"column":68},"end":{"line":82,"column":69}},"loc":{"start":{"line":82,"column":75},"end":{"line":94,"column":17}},"line":82},"7":{"name":"(anonymous_7)","decl":{"start":{"line":89,"column":49},"end":{"line":89,"column":50}},"loc":{"start":{"line":89,"column":57},"end":{"line":89,"column":69}},"line":89},"8":{"name":"(anonymous_8)","decl":{"start":{"line":100,"column":4},"end":{"line":100,"column":5}},"loc":{"start":{"line":100,"column":23},"end":{"line":114,"column":5}},"line":100},"9":{"name":"(anonymous_9)","decl":{"start":{"line":115,"column":4},"end":{"line":115,"column":5}},"loc":{"start":{"line":115,"column":37},"end":{"line":117,"column":5}},"line":115},"10":{"name":"(anonymous_10)","decl":{"start":{"line":118,"column":4},"end":{"line":118,"column":5}},"loc":{"start":{"line":118,"column":45},"end":{"line":120,"column":5}},"line":118},"11":{"name":"(anonymous_11)","decl":{"start":{"line":121,"column":4},"end":{"line":121,"column":5}},"loc":{"start":{"line":121,"column":20},"end":{"line":123,"column":5}},"line":121},"12":{"name":"(anonymous_12)","decl":{"start":{"line":124,"column":4},"end":{"line":124,"column":5}},"loc":{"start":{"line":124,"column":19},"end":{"line":126,"column":5}},"line":124},"13":{"name":"(anonymous_13)","decl":{"start":{"line":127,"column":4},"end":{"line":127,"column":5}},"loc":{"start":{"line":127,"column":12},"end":{"line":132,"column":5}},"line":127},"14":{"name":"(anonymous_14)","decl":{"start":{"line":133,"column":4},"end":{"line":133,"column":5}},"loc":{"start":{"line":133,"column":41},"end":{"line":158,"column":5}},"line":133},"15":{"name":"(anonymous_15)","decl":{"start":{"line":154,"column":28},"end":{"line":154,"column":29}},"loc":{"start":{"line":154,"column":37},"end":{"line":157,"column":9}},"line":154},"16":{"name":"Deferred","decl":{"start":{"line":161,"column":9},"end":{"line":161,"column":17}},"loc":{"start":{"line":161,"column":20},"end":{"line":171,"column":1}},"line":161},"17":{"name":"(anonymous_17)","decl":{"start":{"line":162,"column":41},"end":{"line":162,"column":42}},"loc":{"start":{"line":162,"column":62},"end":{"line":165,"column":5}},"line":162}},"branchMap":{"0":{"loc":{"start":{"line":6,"column":16},"end":{"line":6,"column":28}},"type":"default-arg","locations":[{"start":{"line":6,"column":26},"end":{"line":6,"column":28}}],"line":6},"1":{"loc":{"start":{"line":7,"column":124},"end":{"line":7,"column":152}},"type":"default-arg","locations":[{"start":{"line":7,"column":143},"end":{"line":7,"column":152}}],"line":7},"2":{"loc":{"start":{"line":7,"column":154},"end":{"line":7,"column":184}},"type":"default-arg","locations":[{"start":{"line":7,"column":174},"end":{"line":7,"column":184}}],"line":7},"3":{"loc":{"start":{"line":8,"column":32},"end":{"line":8,"column":72}},"type":"binary-expr","locations":[{"start":{"line":8,"column":32},"end":{"line":8,"column":48}},{"start":{"line":8,"column":53},"end":{"line":8,"column":71}}],"line":8},"4":{"loc":{"start":{"line":9,"column":8},"end":{"line":11,"column":9}},"type":"if","locations":[{"start":{"line":9,"column":8},"end":{"line":11,"column":9}},{"start":{},"end":{}}],"line":9},"5":{"loc":{"start":{"line":9,"column":12},"end":{"line":9,"column":35}},"type":"binary-expr","locations":[{"start":{"line":9,"column":12},"end":{"line":9,"column":19}},{"start":{"line":9,"column":23},"end":{"line":9,"column":35}}],"line":9},"6":{"loc":{"start":{"line":15,"column":8},"end":{"line":40,"column":9}},"type":"if","locations":[{"start":{"line":15,"column":8},"end":{"line":40,"column":9}},{"start":{"line":19,"column":13},"end":{"line":40,"column":9}}],"line":15},"7":{"loc":{"start":{"line":15,"column":12},"end":{"line":15,"column":35}},"type":"binary-expr","locations":[{"start":{"line":15,"column":12},"end":{"line":15,"column":22}},{"start":{"line":15,"column":26},"end":{"line":15,"column":35}}],"line":15},"8":{"loc":{"start":{"line":24,"column":16},"end":{"line":35,"column":17}},"type":"if","locations":[{"start":{"line":24,"column":16},"end":{"line":35,"column":17}},{"start":{"line":32,"column":21},"end":{"line":35,"column":17}}],"line":24},"9":{"loc":{"start":{"line":49,"column":8},"end":{"line":57,"column":9}},"type":"if","locations":[{"start":{"line":49,"column":8},"end":{"line":57,"column":9}},{"start":{"line":52,"column":13},"end":{"line":57,"column":9}}],"line":49},"10":{"loc":{"start":{"line":52,"column":13},"end":{"line":57,"column":9}},"type":"if","locations":[{"start":{"line":52,"column":13},"end":{"line":57,"column":9}},{"start":{"line":55,"column":13},"end":{"line":57,"column":9}}],"line":52},"11":{"loc":{"start":{"line":59,"column":34},"end":{"line":59,"column":46}},"type":"default-arg","locations":[{"start":{"line":59,"column":44},"end":{"line":59,"column":46}}],"line":59},"12":{"loc":{"start":{"line":63,"column":8},"end":{"line":65,"column":9}},"type":"if","locations":[{"start":{"line":63,"column":8},"end":{"line":65,"column":9}},{"start":{},"end":{}}],"line":63},"13":{"loc":{"start":{"line":68,"column":8},"end":{"line":98,"column":9}},"type":"if","locations":[{"start":{"line":68,"column":8},"end":{"line":98,"column":9}},{"start":{"line":72,"column":13},"end":{"line":98,"column":9}}],"line":68},"14":{"loc":{"start":{"line":72,"column":13},"end":{"line":98,"column":9}},"type":"if","locations":[{"start":{"line":72,"column":13},"end":{"line":98,"column":9}},{"start":{"line":76,"column":13},"end":{"line":98,"column":9}}],"line":72},"15":{"loc":{"start":{"line":81,"column":36},"end":{"line":81,"column":121}},"type":"cond-expr","locations":[{"start":{"line":81,"column":57},"end":{"line":81,"column":88}},{"start":{"line":81,"column":91},"end":{"line":81,"column":121}}],"line":81},"16":{"loc":{"start":{"line":83,"column":20},"end":{"line":93,"column":21}},"type":"if","locations":[{"start":{"line":83,"column":20},"end":{"line":93,"column":21}},{"start":{"line":87,"column":25},"end":{"line":93,"column":21}}],"line":83},"17":{"loc":{"start":{"line":101,"column":15},"end":{"line":101,"column":33}},"type":"default-arg","locations":[{"start":{"line":101,"column":29},"end":{"line":101,"column":33}}],"line":101},"18":{"loc":{"start":{"line":101,"column":37},"end":{"line":101,"column":70}},"type":"binary-expr","locations":[{"start":{"line":101,"column":37},"end":{"line":101,"column":64}},{"start":{"line":101,"column":68},"end":{"line":101,"column":70}}],"line":101},"19":{"loc":{"start":{"line":103,"column":8},"end":{"line":104,"column":73}},"type":"if","locations":[{"start":{"line":103,"column":8},"end":{"line":104,"column":73}},{"start":{},"end":{}}],"line":103},"20":{"loc":{"start":{"line":105,"column":8},"end":{"line":112,"column":9}},"type":"if","locations":[{"start":{"line":105,"column":8},"end":{"line":112,"column":9}},{"start":{"line":110,"column":13},"end":{"line":112,"column":9}}],"line":105},"21":{"loc":{"start":{"line":134,"column":8},"end":{"line":135,"column":47}},"type":"if","locations":[{"start":{"line":134,"column":8},"end":{"line":135,"column":47}},{"start":{},"end":{}}],"line":134},"22":{"loc":{"start":{"line":136,"column":49},"end":{"line":136,"column":67}},"type":"binary-expr","locations":[{"start":{"line":136,"column":49},"end":{"line":136,"column":56}},{"start":{"line":136,"column":60},"end":{"line":136,"column":67}}],"line":136},"23":{"loc":{"start":{"line":137,"column":8},"end":{"line":138,"column":19}},"type":"if","locations":[{"start":{"line":137,"column":8},"end":{"line":138,"column":19}},{"start":{},"end":{}}],"line":137},"24":{"loc":{"start":{"line":141,"column":12},"end":{"line":149,"column":13}},"type":"if","locations":[{"start":{"line":141,"column":12},"end":{"line":149,"column":13}},{"start":{"line":144,"column":17},"end":{"line":149,"column":13}}],"line":141},"25":{"loc":{"start":{"line":144,"column":17},"end":{"line":149,"column":13}},"type":"if","locations":[{"start":{"line":144,"column":17},"end":{"line":149,"column":13}},{"start":{"line":147,"column":17},"end":{"line":149,"column":13}}],"line":144},"26":{"loc":{"start":{"line":168,"column":4},"end":{"line":170,"column":5}},"type":"if","locations":[{"start":{"line":168,"column":4},"end":{"line":170,"column":5}},{"start":{},"end":{}}],"line":168}},"s":{"0":1,"1":1,"2":1,"3":27,"4":27,"5":27,"6":27,"7":1,"8":26,"9":26,"10":26,"11":26,"12":23,"13":23,"14":3,"15":3,"16":3,"17":3,"18":3,"19":0,"20":0,"21":3,"22":3,"23":0,"24":26,"25":26,"26":26,"27":26,"28":26,"29":26,"30":21,"31":2,"32":19,"33":1,"34":18,"35":28,"36":28,"37":28,"38":28,"39":23,"40":28,"41":28,"42":28,"43":1,"44":1,"45":1,"46":27,"47":4,"48":4,"49":23,"50":23,"51":23,"52":23,"53":23,"54":23,"55":23,"56":0,"57":0,"58":23,"59":23,"60":1,"61":23,"62":23,"63":23,"64":23,"65":23,"66":21,"67":21,"68":21,"69":3,"70":18,"71":13,"72":13,"73":13,"74":5,"75":18,"76":0,"77":7,"78":1,"79":1,"80":3,"81":19,"82":1,"83":19,"84":19,"85":2,"86":17,"87":17,"88":2,"89":15,"90":14,"91":1,"92":1,"93":17,"94":18,"95":18,"96":1,"97":23,"98":23,"99":23,"100":23,"101":23,"102":23,"103":23},"f":{"0":27,"1":27,"2":21,"3":28,"4":1,"5":23,"6":23,"7":1,"8":21,"9":0,"10":7,"11":1,"12":1,"13":3,"14":19,"15":18,"16":23,"17":23},"b":{"0":[2],"1":[26],"2":[27],"3":[27,26],"4":[1,26],"5":[27,2],"6":[23,3],"7":[26,23],"8":[0,3],"9":[2,19],"10":[1,18],"11":[25],"12":[23,5],"13":[1,27],"14":[4,23],"15":[2,21],"16":[0,23],"17":[3],"18":[21,3],"19":[3,18],"20":[13,5],"21":[1,18],"22":[19,18],"23":[2,17],"24":[2,15],"25":[14,1],"26":[23,0]},"inputSourceMap":{"version":3,"file":"/Users/davidy/work/graphql-redis-subscriptions/src/redis-pubsub.ts","sources":["/Users/davidy/work/graphql-redis-subscriptions/src/redis-pubsub.ts"],"names":[],"mappings":";;;AAEA,mEAA4D;AAmB5D,MAAa,WAAW;IAEtB,YAAY,UAA8B,EAAE;QAC1C,MAAM,EACJ,gBAAgB,EAChB,UAAU,EACV,kBAAkB,EAClB,UAAU,EACV,SAAS,EACT,OAAO,EACP,UAAU,EACV,YAAY,EACZ,gBAAgB,GAAG,SAAS,EAC5B,iBAAiB,GAAG,UAAU,GAC/B,GAAG,OAAO,CAAC;QAEZ,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAiB,CAAC,CAAC;QAE3E,IAAI,OAAO,IAAI,YAAY,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QAEjC,IAAI,UAAU,IAAI,SAAS,EAAE,CAAC;YAC5B,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;YAChC,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC;QACpC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC;gBAEH,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;gBACnC,IAAI,CAAC,cAAc,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;gBAC9C,IAAI,CAAC,eAAe,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;gBAE/C,IAAI,kBAAkB,EAAE,CAAC;oBACvB,IAAI,CAAC,cAAc;yBACd,EAAE,CAAC,SAAS,EAAE,kBAAkB,CAAC;yBACjC,EAAE,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;oBACrC,IAAI,CAAC,eAAe;yBACf,EAAE,CAAC,SAAS,EAAE,kBAAkB,CAAC;yBACjC,EAAE,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;gBACvC,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;oBAC/C,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;gBAClD,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CACX,2HAA2H,CAC5H,CAAC;YACJ,CAAC;QACH,CAAC;QAGD,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEtE,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;QAEhF,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;QAC1B,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,EAAuB,CAAC;QAClD,IAAI,CAAC,kBAAkB,GAAG,IAAI,GAAG,EAAwD,CAAC;QAC1F,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC;IACjC,CAAC;IAEM,KAAK,CAAC,OAAO,CAAI,OAAe,EAAE,OAAU;QACjD,IAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YACnB,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;QACvE,CAAC;aAAM,IAAI,OAAO,YAAY,MAAM,EAAC,CAAC;YACpC,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAEM,SAAS,CACd,OAAe,EACf,SAAuB,EACvB,UAAmB,EAAE;QAGrB,MAAM,WAAW,GAAW,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACpE,MAAM,EAAE,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACxC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAEpD,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAE/C,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QAC5D,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;YAExB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACzB,OAAO,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;QAC3C,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAEzB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACb,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;aAAM,CAAC;YAGN,MAAM,OAAO,GAAG,IAAI,QAAQ,EAAE,CAAA;YAC9B,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAA;YAClD,kBAAkB,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YAE3D,MAAM,GAAG,GAAG,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAClD,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;gBAE1G,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE;oBACxD,IAAI,GAAG,EAAE,CAAC;wBACR,kBAAkB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;wBACtC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACd,CAAC;yBAAM,CAAC;wBAEN,MAAM,WAAW,GAAG,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;wBACvD,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;wBAC9C,kBAAkB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;wBAEtC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;wBACb,OAAO,CAAC,EAAE,CAAC,CAAC;oBACd,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;YAC/C,OAAO,GAAG,CAAC;QACb,CAAC;IACH,CAAC;IAEM,WAAW,CAAC,KAAa;QAC9B,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAE/C,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,KAAK,GAAG,CAAC,CAAC;QAExE,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAEpB,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;YAC9C,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;YAE/C,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAEM,aAAa,CAAI,QAA2B,EAAE,OAAiB;QACpE,OAAO,IAAI,2CAAmB,CAAI,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;IAEM,qBAAqB,CAAI,QAA2B,EAAE,OAAiB;QAC5E,OAAO,IAAI,2CAAmB,CAAI,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;IAEM,aAAa;QAClB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAEM,YAAY;QACjB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAEM,KAAK;QACV,OAAO,OAAO,CAAC,GAAG,CAAC;YACjB,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;YAC1B,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;SAC5B,CAAC,CAAC;IACL,CAAC;IAcO,SAAS,CAAC,OAAe,EAAE,OAAwB,EAAE,OAAwB;QACnF,IAAG,OAAO,OAAO,KAAK,QAAQ;YAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAEnE,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC;QAG7D,IAAI,CAAC,WAAW,EAAE,IAAI;YAAE,OAAO;QAE/B,IAAI,aAAa,CAAC;QAClB,IAAI,CAAC;YACH,IAAG,IAAI,CAAC,YAAY,EAAC,CAAC;gBACpB,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAA;YAC/E,CAAC;iBAAM,IAAG,OAAO,OAAO,KAAK,QAAQ,EAAC,CAAC;gBACrC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACpD,CAAC;iBAAM,CAAC;gBACN,aAAa,GAAG,OAAO,CAAC;YAC1B,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,aAAa,GAAG,OAAO,CAAC;QAC1B,CAAC;QAED,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC1B,MAAM,CAAC,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YACjD,QAAQ,CAAC,aAAa,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAlND,kCAkNC;AAGD,SAAS,QAAQ;IACf,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACvD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;QACd,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;AACH,CAAC","sourcesContent":["import {Cluster, Redis, RedisOptions} from 'ioredis';\nimport {PubSubEngine} from 'graphql-subscriptions';\nimport {PubSubAsyncIterator} from './pubsub-async-iterator';\n\ntype RedisClient = Redis | Cluster;\ntype OnMessage<T> = (message: T) => void;\ntype DeserializerContext = { channel: string, pattern?: string };\n\nexport interface PubSubRedisOptions {\n  connection?: RedisOptions | string;\n  triggerTransform?: TriggerTransform;\n  connectionListener?: (err: Error) => void;\n  publisher?: RedisClient;\n  subscriber?: RedisClient;\n  reviver?: Reviver;\n  serializer?: Serializer;\n  deserializer?: Deserializer;\n  messageEventName?: string;\n  pmessageEventName?: string;\n}\n\nexport class RedisPubSub implements PubSubEngine {\n\n  constructor(options: PubSubRedisOptions = {}) {\n    const {\n      triggerTransform,\n      connection,\n      connectionListener,\n      subscriber,\n      publisher,\n      reviver,\n      serializer,\n      deserializer,\n      messageEventName = 'message',\n      pmessageEventName = 'pmessage',\n    } = options;\n\n    this.triggerTransform = triggerTransform || (trigger => trigger as string);\n\n    if (reviver && deserializer) {\n      throw new Error(\"Reviver and deserializer can't be used together\");\n    }\n\n    this.reviver = reviver;\n    this.serializer = serializer;\n    this.deserializer = deserializer;\n\n    if (subscriber && publisher) {\n      this.redisPublisher = publisher;\n      this.redisSubscriber = subscriber;\n    } else {\n      try {\n        // eslint-disable-next-line @typescript-eslint/no-var-requires\n        const IORedis = require('ioredis');\n        this.redisPublisher = new IORedis(connection);\n        this.redisSubscriber = new IORedis(connection);\n\n        if (connectionListener) {\n          this.redisPublisher\n              .on('connect', connectionListener)\n              .on('error', connectionListener);\n          this.redisSubscriber\n              .on('connect', connectionListener)\n              .on('error', connectionListener);\n        } else {\n          this.redisPublisher.on('error', console.error);\n          this.redisSubscriber.on('error', console.error);\n        }\n      } catch (error) {\n        console.error(\n          `No publisher or subscriber instances were provided and the package 'ioredis' wasn't found. Couldn't create Redis clients.`,\n        );\n      }\n    }\n\n    // handle messages received via psubscribe and subscribe\n    this.redisSubscriber.on(pmessageEventName, this.onMessage.bind(this));\n    // partially applied function passes undefined for pattern arg since 'message' event won't provide it:\n    this.redisSubscriber.on(messageEventName, this.onMessage.bind(this, undefined));\n\n    this.subscriptionMap = {};\n    this.subsRefsMap = new Map<string, Set<number>>();\n    this.subsPendingRefsMap = new Map<string, { refs: number[], pending: Promise<number> }>();\n    this.currentSubscriptionId = 0;\n  }\n\n  public async publish<T>(trigger: string, payload: T): Promise<void> {\n    if(this.serializer) {\n      await this.redisPublisher.publish(trigger, this.serializer(payload));\n    } else if (payload instanceof Buffer){\n      await this.redisPublisher.publish(trigger, payload);\n    } else {\n      await this.redisPublisher.publish(trigger, JSON.stringify(payload));\n    }\n  }\n\n  public subscribe<T = any>(\n    trigger: string,\n    onMessage: OnMessage<T>,\n    options: unknown = {},\n  ): Promise<number> {\n\n    const triggerName: string = this.triggerTransform(trigger, options);\n    const id = this.currentSubscriptionId++;\n    this.subscriptionMap[id] = [triggerName, onMessage];\n\n    if (!this.subsRefsMap.has(triggerName)) {\n      this.subsRefsMap.set(triggerName, new Set());\n    }\n\n    const refs = this.subsRefsMap.get(triggerName);\n\n    const pendingRefs = this.subsPendingRefsMap.get(triggerName)\n    if (pendingRefs != null) {\n      // A pending remote subscribe call is currently in flight, piggyback on it\n      pendingRefs.refs.push(id)\n      return pendingRefs.pending.then(() => id)\n    } else if (refs.size > 0) {\n      // Already actively subscribed to redis\n      refs.add(id);\n      return Promise.resolve(id);\n    } else {\n      // New subscription.\n      // Keep a pending state until the remote subscribe call is completed\n      const pending = new Deferred()\n      const subsPendingRefsMap = this.subsPendingRefsMap\n      subsPendingRefsMap.set(triggerName, { refs: [], pending });\n\n      const sub = new Promise<number>((resolve, reject) => {\n        const subscribeFn = options['pattern'] ? this.redisSubscriber.psubscribe : this.redisSubscriber.subscribe;\n\n        subscribeFn.call(this.redisSubscriber, triggerName, err => {\n          if (err) {\n            subsPendingRefsMap.delete(triggerName)\n            reject(err);\n          } else {\n            // Add ids of subscribe calls initiated when waiting for the remote call response\n            const pendingRefs = subsPendingRefsMap.get(triggerName)\n            pendingRefs.refs.forEach((id) => refs.add(id))\n            subsPendingRefsMap.delete(triggerName)\n\n            refs.add(id);\n            resolve(id);\n          }\n        });\n      });\n      // Ensure waiting subscribe will complete\n      sub.then(pending.resolve).catch(pending.reject)\n      return sub;\n    }\n  }\n\n  public unsubscribe(subId: number): void {\n    const [triggerName = null] = this.subscriptionMap[subId] || [];\n    const refs = this.subsRefsMap.get(triggerName);\n\n    if (!refs) throw new Error(`There is no subscription of id \"${subId}\"`);\n\n    if (refs.size === 1) {\n      // unsubscribe from specific channel and pattern match\n      this.redisSubscriber.unsubscribe(triggerName);\n      this.redisSubscriber.punsubscribe(triggerName);\n\n      this.subsRefsMap.delete(triggerName);\n    } else {\n      refs.delete(subId);\n    }\n    delete this.subscriptionMap[subId];\n  }\n\n  public asyncIterator<T>(triggers: string | string[], options?: unknown) {\n    return new PubSubAsyncIterator<T>(this, triggers, options);\n  }\n\n  public asyncIterableIterator<T>(triggers: string | string[], options?: unknown) {\n    return new PubSubAsyncIterator<T>(this, triggers, options);\n  }\n\n  public getSubscriber(): RedisClient {\n    return this.redisSubscriber;\n  }\n\n  public getPublisher(): RedisClient {\n    return this.redisPublisher;\n  }\n\n  public close(): Promise<'OK'[]> {\n    return Promise.all([\n      this.redisPublisher.quit(),\n      this.redisSubscriber.quit(),\n    ]);\n  }\n\n  private readonly serializer?: Serializer;\n  private readonly deserializer?: Deserializer;\n  private readonly triggerTransform: TriggerTransform;\n  private readonly redisSubscriber: RedisClient;\n  private readonly redisPublisher: RedisClient;\n  private readonly reviver: Reviver;\n\n  private readonly subscriptionMap: { [subId: number]: [string, OnMessage<unknown>] };\n  private readonly subsRefsMap: Map<string, Set<number>>;\n  private readonly subsPendingRefsMap: Map<string, { refs: number[], pending: Promise<number> }>;\n  private currentSubscriptionId: number;\n\n  private onMessage(pattern: string, channel: string | Buffer, message: string | Buffer) {\n    if(typeof channel === 'object') channel = channel.toString('utf8');\n\n    const subscribers = this.subsRefsMap.get(pattern || channel);\n\n    // Don't work for nothing..\n    if (!subscribers?.size) return;\n\n    let parsedMessage;\n    try {\n      if(this.deserializer){\n        parsedMessage = this.deserializer(Buffer.from(message), { pattern, channel })\n      } else if(typeof message === 'string'){\n        parsedMessage = JSON.parse(message, this.reviver);\n      } else {\n        parsedMessage = message;\n      }\n    } catch (e) {\n      parsedMessage = message;\n    }\n\n    subscribers.forEach(subId => {\n      const [, listener] = this.subscriptionMap[subId];\n      listener(parsedMessage);\n    });\n  }\n}\n\n// Unexported deferrable promise used to complete waiting subscribe calls\nfunction Deferred() {\n  const p = this.promise = new Promise((resolve, reject) => {\n    this.resolve = resolve;\n    this.reject = reject;\n  });\n  this.then = p.then.bind(p);\n  this.catch = p.catch.bind(p);\n  if (p.finally) {\n    this.finally = p.finally.bind(p);\n  }\n}\n\nexport type Path = Array<string | number>;\nexport type Trigger = string | Path;\nexport type TriggerTransform = (\n  trigger: Trigger,\n  channelOptions?: unknown,\n) => string;\nexport type Reviver = (key: any, value: any) => any;\nexport type Serializer = (source: any) => string;\nexport type Deserializer = (source: string | Buffer, context: DeserializerContext) => any;\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"50e7b7afdb31e156aaec5cd0f0348cf43f74af6f"},"/Users/davidy/work/graphql-redis-subscriptions/src/pubsub-async-iterator.ts":{"path":"/Users/davidy/work/graphql-redis-subscriptions/src/pubsub-async-iterator.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":37}},"2":{"start":{"line":6,"column":8},"end":{"line":6,"column":29}},"3":{"start":{"line":7,"column":8},"end":{"line":7,"column":31}},"4":{"start":{"line":8,"column":8},"end":{"line":8,"column":28}},"5":{"start":{"line":9,"column":8},"end":{"line":9,"column":28}},"6":{"start":{"line":10,"column":8},"end":{"line":10,"column":30}},"7":{"start":{"line":11,"column":8},"end":{"line":11,"column":86}},"8":{"start":{"line":14,"column":8},"end":{"line":14,"column":34}},"9":{"start":{"line":15,"column":8},"end":{"line":15,"column":65}},"10":{"start":{"line":18,"column":8},"end":{"line":18,"column":32}},"11":{"start":{"line":19,"column":8},"end":{"line":19,"column":48}},"12":{"start":{"line":22,"column":8},"end":{"line":22,"column":32}},"13":{"start":{"line":23,"column":8},"end":{"line":23,"column":37}},"14":{"start":{"line":26,"column":8},"end":{"line":26,"column":20}},"15":{"start":{"line":29,"column":8},"end":{"line":29,"column":34}},"16":{"start":{"line":30,"column":8},"end":{"line":35,"column":9}},"17":{"start":{"line":31,"column":12},"end":{"line":31,"column":66}},"18":{"start":{"line":34,"column":12},"end":{"line":34,"column":39}},"19":{"start":{"line":38,"column":8},"end":{"line":45,"column":11}},"20":{"start":{"line":39,"column":12},"end":{"line":44,"column":13}},"21":{"start":{"line":40,"column":16},"end":{"line":40,"column":72}},"22":{"start":{"line":43,"column":16},"end":{"line":43,"column":45}},"23":{"start":{"line":48,"column":8},"end":{"line":55,"column":9}},"24":{"start":{"line":49,"column":12},"end":{"line":49,"column":35}},"25":{"start":{"line":50,"column":12},"end":{"line":51,"column":64}},"26":{"start":{"line":51,"column":16},"end":{"line":51,"column":64}},"27":{"start":{"line":52,"column":12},"end":{"line":52,"column":89}},"28":{"start":{"line":52,"column":46},"end":{"line":52,"column":87}},"29":{"start":{"line":53,"column":12},"end":{"line":53,"column":38}},"30":{"start":{"line":54,"column":12},"end":{"line":54,"column":38}},"31":{"start":{"line":58,"column":8},"end":{"line":60,"column":9}},"32":{"start":{"line":59,"column":12},"end":{"line":59,"column":157}},"33":{"start":{"line":59,"column":81},"end":{"line":59,"column":154}},"34":{"start":{"line":61,"column":8},"end":{"line":61,"column":36}},"35":{"start":{"line":64,"column":8},"end":{"line":66,"column":9}},"36":{"start":{"line":65,"column":12},"end":{"line":65,"column":52}},"37":{"start":{"line":69,"column":0},"end":{"line":69,"column":50}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":5,"column":4},"end":{"line":5,"column":5}},"loc":{"start":{"line":5,"column":45},"end":{"line":12,"column":5}},"line":5},"1":{"name":"(anonymous_1)","decl":{"start":{"line":13,"column":4},"end":{"line":13,"column":5}},"loc":{"start":{"line":13,"column":17},"end":{"line":16,"column":5}},"line":13},"2":{"name":"(anonymous_2)","decl":{"start":{"line":17,"column":4},"end":{"line":17,"column":5}},"loc":{"start":{"line":17,"column":19},"end":{"line":20,"column":5}},"line":17},"3":{"name":"(anonymous_3)","decl":{"start":{"line":21,"column":4},"end":{"line":21,"column":5}},"loc":{"start":{"line":21,"column":23},"end":{"line":24,"column":5}},"line":21},"4":{"name":"(anonymous_4)","decl":{"start":{"line":25,"column":4},"end":{"line":25,"column":5}},"loc":{"start":{"line":25,"column":29},"end":{"line":27,"column":5}},"line":25},"5":{"name":"(anonymous_5)","decl":{"start":{"line":28,"column":4},"end":{"line":28,"column":5}},"loc":{"start":{"line":28,"column":27},"end":{"line":36,"column":5}},"line":28},"6":{"name":"(anonymous_6)","decl":{"start":{"line":37,"column":4},"end":{"line":37,"column":5}},"loc":{"start":{"line":37,"column":16},"end":{"line":46,"column":5}},"line":37},"7":{"name":"(anonymous_7)","decl":{"start":{"line":38,"column":27},"end":{"line":38,"column":28}},"loc":{"start":{"line":38,"column":38},"end":{"line":45,"column":9}},"line":38},"8":{"name":"(anonymous_8)","decl":{"start":{"line":47,"column":4},"end":{"line":47,"column":5}},"loc":{"start":{"line":47,"column":23},"end":{"line":56,"column":5}},"line":47},"9":{"name":"(anonymous_9)","decl":{"start":{"line":52,"column":35},"end":{"line":52,"column":36}},"loc":{"start":{"line":52,"column":46},"end":{"line":52,"column":87}},"line":52},"10":{"name":"(anonymous_10)","decl":{"start":{"line":57,"column":4},"end":{"line":57,"column":5}},"loc":{"start":{"line":57,"column":19},"end":{"line":62,"column":5}},"line":57},"11":{"name":"(anonymous_11)","decl":{"start":{"line":59,"column":68},"end":{"line":59,"column":69}},"loc":{"start":{"line":59,"column":81},"end":{"line":59,"column":154}},"line":59},"12":{"name":"(anonymous_12)","decl":{"start":{"line":63,"column":4},"end":{"line":63,"column":5}},"loc":{"start":{"line":63,"column":36},"end":{"line":67,"column":5}},"line":63}},"branchMap":{"0":{"loc":{"start":{"line":11,"column":27},"end":{"line":11,"column":85}},"type":"cond-expr","locations":[{"start":{"line":11,"column":60},"end":{"line":11,"column":72}},{"start":{"line":11,"column":75},"end":{"line":11,"column":85}}],"line":11},"1":{"loc":{"start":{"line":15,"column":15},"end":{"line":15,"column":64}},"type":"cond-expr","locations":[{"start":{"line":15,"column":32},"end":{"line":15,"column":48}},{"start":{"line":15,"column":51},"end":{"line":15,"column":64}}],"line":15},"2":{"loc":{"start":{"line":30,"column":8},"end":{"line":35,"column":9}},"type":"if","locations":[{"start":{"line":30,"column":8},"end":{"line":35,"column":9}},{"start":{"line":33,"column":13},"end":{"line":35,"column":9}}],"line":30},"3":{"loc":{"start":{"line":39,"column":12},"end":{"line":44,"column":13}},"type":"if","locations":[{"start":{"line":39,"column":12},"end":{"line":44,"column":13}},{"start":{"line":42,"column":17},"end":{"line":44,"column":13}}],"line":39},"4":{"loc":{"start":{"line":48,"column":8},"end":{"line":55,"column":9}},"type":"if","locations":[{"start":{"line":48,"column":8},"end":{"line":55,"column":9}},{"start":{},"end":{}}],"line":48},"5":{"loc":{"start":{"line":50,"column":12},"end":{"line":51,"column":64}},"type":"if","locations":[{"start":{"line":50,"column":12},"end":{"line":51,"column":64}},{"start":{},"end":{}}],"line":50},"6":{"loc":{"start":{"line":58,"column":8},"end":{"line":60,"column":9}},"type":"if","locations":[{"start":{"line":58,"column":8},"end":{"line":60,"column":9}},{"start":{},"end":{}}],"line":58}},"s":{"0":1,"1":1,"2":7,"3":7,"4":7,"5":7,"6":7,"7":7,"8":7,"9":7,"10":3,"11":3,"12":0,"13":0,"14":0,"15":6,"16":6,"17":5,"18":1,"19":6,"20":6,"21":0,"22":6,"23":3,"24":2,"25":2,"26":2,"27":2,"28":0,"29":2,"30":2,"31":13,"32":6,"33":7,"34":13,"35":2,"36":2,"37":1},"f":{"0":7,"1":7,"2":3,"3":0,"4":0,"5":6,"6":6,"7":6,"8":3,"9":0,"10":13,"11":7,"12":2},"b":{"0":[6,1],"1":[6,1],"2":[5,1],"3":[0,6],"4":[2,1],"5":[2,0],"6":[6,7]},"inputSourceMap":{"version":3,"file":"/Users/davidy/work/graphql-redis-subscriptions/src/pubsub-async-iterator.ts","sources":["/Users/davidy/work/graphql-redis-subscriptions/src/pubsub-async-iterator.ts"],"names":[],"mappings":"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","sourcesContent":["import { PubSubEngine } from 'graphql-subscriptions';\n\n/**\n * A class for digesting PubSubEngine events via the new AsyncIterator interface.\n * This implementation is a generic version of the one located at\n * https://github.com/apollographql/graphql-subscriptions/blob/master/src/event-emitter-to-async-iterator.ts\n * @class\n *\n * @constructor\n *\n * @property pullQueue @type {Function[]}\n * A queue of resolve functions waiting for an incoming event which has not yet arrived.\n * This queue expands as next() calls are made without PubSubEngine events occurring in between.\n *\n * @property pushQueue @type {any[]}\n * A queue of PubSubEngine events waiting for next() calls to be made.\n * This queue expands as PubSubEngine events arrice without next() calls occurring in between.\n *\n * @property eventsArray @type {string[]}\n * An array of PubSubEngine event names which this PubSubAsyncIterator should watch.\n *\n * @property allSubscribed @type {Promise<number[]>}\n * A promise of a list of all subscription ids to the passed PubSubEngine.\n *\n * @property listening @type {boolean}\n * Whether or not the PubSubAsynIterator is in listening mode (responding to incoming PubSubEngine events and next() calls).\n * Listening begins as true and turns to false once the return method is called.\n *\n * @property pubsub @type {PubSubEngine}\n * The PubSubEngine whose events will be observed.\n */\nexport class PubSubAsyncIterator<T> implements AsyncIterableIterator<T> {\n\n  constructor(pubsub: PubSubEngine, eventNames: string | readonly string[], options?: unknown) {\n    this.pubsub = pubsub;\n    this.options = options;\n    this.pullQueue = [];\n    this.pushQueue = [];\n    this.listening = true;\n    this.eventsArray = typeof eventNames === 'string' ? [eventNames] : eventNames;\n  }\n\n  public async next() {\n    await this.subscribeAll();\n    return this.listening ? this.pullValue() : this.return();\n  }\n\n  public async return(): Promise<{ value: unknown, done: true }> {\n    await this.emptyQueue();\n    return { value: undefined, done: true };\n  }\n\n  public async throw(error): Promise<never> {\n    await this.emptyQueue();\n    return Promise.reject(error);\n  }\n\n  public [Symbol.asyncIterator]() {\n    return this;\n  }\n\n  private pullQueue: Array<(data: { value: unknown, done: boolean }) => void>;\n  private pushQueue: any[];\n  private eventsArray: readonly string[];\n  private subscriptionIds: Promise<number[]> | undefined;\n  private listening: boolean;\n  private pubsub: PubSubEngine;\n  private options: unknown;\n\n  private async pushValue(event) {\n    await this.subscribeAll();\n    if (this.pullQueue.length !== 0) {\n      this.pullQueue.shift()({ value: event, done: false });\n    } else {\n      this.pushQueue.push(event);\n    }\n  }\n\n  private pullValue(): Promise<IteratorResult<any>> {\n    return new Promise(resolve => {\n      if (this.pushQueue.length !== 0) {\n        resolve({ value: this.pushQueue.shift(), done: false });\n      } else {\n        this.pullQueue.push(resolve);\n      }\n    });\n  }\n\n  private async emptyQueue() {\n    if (this.listening) {\n      this.listening = false;\n      if (this.subscriptionIds) this.unsubscribeAll(await this.subscriptionIds);\n      this.pullQueue.forEach(resolve => resolve({ value: undefined, done: true }));\n      this.pullQueue.length = 0;\n      this.pushQueue.length = 0;\n    }\n  }\n\n  private subscribeAll() {\n    if (!this.subscriptionIds) {\n      this.subscriptionIds = Promise.all(this.eventsArray.map(\n        eventName => this.pubsub.subscribe(eventName, this.pushValue.bind(this), this.options),\n      ));\n    }\n    return this.subscriptionIds;\n  }\n\n  private unsubscribeAll(subscriptionIds: number[]) {\n    for (const subscriptionId of subscriptionIds) {\n      this.pubsub.unsubscribe(subscriptionId);\n    }\n  }\n\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"d3ca6c3a8f861f6760802076edc64a062383e9a4"},"/Users/davidy/work/graphql-redis-subscriptions/src/with-filter.ts":{"path":"/Users/davidy/work/graphql-redis-subscriptions/src/with-filter.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":28}},"2":{"start":{"line":4,"column":19},"end":{"line":36,"column":1}},"3":{"start":{"line":5,"column":4},"end":{"line":35,"column":6}},"4":{"start":{"line":6,"column":30},"end":{"line":6,"column":47}},"5":{"start":{"line":7,"column":31},"end":{"line":20,"column":9}},"6":{"start":{"line":8,"column":12},"end":{"line":19,"column":15}},"7":{"start":{"line":10,"column":33},"end":{"line":13,"column":14}},"8":{"start":{"line":12,"column":90},"end":{"line":12,"column":95}},"9":{"start":{"line":15,"column":16},"end":{"line":17,"column":17}},"10":{"start":{"line":16,"column":20},"end":{"line":16,"column":35}},"11":{"start":{"line":18,"column":16},"end":{"line":18,"column":40}},"12":{"start":{"line":21,"column":8},"end":{"line":34,"column":10}},"13":{"start":{"line":23,"column":16},"end":{"line":23,"column":40}},"14":{"start":{"line":26,"column":16},"end":{"line":26,"column":46}},"15":{"start":{"line":29,"column":16},"end":{"line":29,"column":50}},"16":{"start":{"line":32,"column":16},"end":{"line":32,"column":28}},"17":{"start":{"line":37,"column":0},"end":{"line":37,"column":32}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":4,"column":19},"end":{"line":4,"column":20}},"loc":{"start":{"line":4,"column":50},"end":{"line":36,"column":1}},"line":4},"1":{"name":"(anonymous_1)","decl":{"start":{"line":5,"column":11},"end":{"line":5,"column":12}},"loc":{"start":{"line":5,"column":47},"end":{"line":35,"column":5}},"line":5},"2":{"name":"(anonymous_2)","decl":{"start":{"line":7,"column":31},"end":{"line":7,"column":32}},"loc":{"start":{"line":7,"column":37},"end":{"line":20,"column":9}},"line":7},"3":{"name":"(anonymous_3)","decl":{"start":{"line":10,"column":22},"end":{"line":10,"column":23}},"loc":{"start":{"line":10,"column":33},"end":{"line":13,"column":14}},"line":10},"4":{"name":"(anonymous_4)","decl":{"start":{"line":12,"column":84},"end":{"line":12,"column":85}},"loc":{"start":{"line":12,"column":90},"end":{"line":12,"column":95}},"line":12},"5":{"name":"(anonymous_5)","decl":{"start":{"line":14,"column":22},"end":{"line":14,"column":23}},"loc":{"start":{"line":14,"column":51},"end":{"line":19,"column":13}},"line":14},"6":{"name":"(anonymous_6)","decl":{"start":{"line":22,"column":12},"end":{"line":22,"column":13}},"loc":{"start":{"line":22,"column":19},"end":{"line":24,"column":13}},"line":22},"7":{"name":"(anonymous_7)","decl":{"start":{"line":25,"column":12},"end":{"line":25,"column":13}},"loc":{"start":{"line":25,"column":21},"end":{"line":27,"column":13}},"line":25},"8":{"name":"(anonymous_8)","decl":{"start":{"line":28,"column":12},"end":{"line":28,"column":13}},"loc":{"start":{"line":28,"column":25},"end":{"line":30,"column":13}},"line":28},"9":{"name":"(anonymous_9)","decl":{"start":{"line":31,"column":12},"end":{"line":31,"column":13}},"loc":{"start":{"line":31,"column":37},"end":{"line":33,"column":13}},"line":31}},"branchMap":{"0":{"loc":{"start":{"line":15,"column":16},"end":{"line":17,"column":17}},"type":"if","locations":[{"start":{"line":15,"column":16},"end":{"line":17,"column":17}},{"start":{},"end":{}}],"line":15}},"s":{"0":1,"1":1,"2":1,"3":2,"4":3,"5":3,"6":2,"7":2,"8":0,"9":2,"10":2,"11":0,"12":3,"13":2,"14":1,"15":0,"16":3,"17":1},"f":{"0":2,"1":3,"2":2,"3":2,"4":0,"5":2,"6":2,"7":1,"8":0,"9":3},"b":{"0":[2,0]},"inputSourceMap":{"version":3,"file":"/Users/davidy/work/graphql-redis-subscriptions/src/with-filter.ts","sources":["/Users/davidy/work/graphql-redis-subscriptions/src/with-filter.ts"],"names":[],"mappings":";;;AAEO,MAAM,UAAU,GAAG,CAAC,eAAiD,EAAE,QAAkB,EAAE,EAAE;IAClG,OAAO,CAAC,SAAc,EAAE,IAAS,EAAE,OAAY,EAAE,IAAS,EAAsB,EAAE;QAChF,MAAM,aAAa,GAAG,eAAe,EAAE,CAAC;QAExC,MAAM,cAAc,GAAG,GAAG,EAAE;YAC1B,OAAO,aAAa;iBACjB,IAAI,EAAE;iBACN,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;gBAC3B,OAAO;gBACP,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;aACjF,CAAC,CAAC;iBACF,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE,EAAE;gBAChC,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;oBAC1B,OAAO,OAAO,CAAC;gBACjB,CAAC;gBAGD,OAAO,cAAc,EAAE,CAAC;YAC1B,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;QAEF,OAAO;YACL,IAAI;gBACF,OAAO,cAAc,EAAE,CAAC;YAC1B,CAAC;YACD,MAAM;gBACJ,OAAO,aAAa,CAAC,MAAM,EAAE,CAAC;YAChC,CAAC;YACD,KAAK,CAAC,KAAK;gBACT,OAAO,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACpC,CAAC;YACD,CAAC,MAAM,CAAC,aAAa,CAAC;gBACpB,OAAO,IAAI,CAAC;YACd,CAAC;SACK,CAAC;IACX,CAAC,CAAC;AACJ,CAAC,CAAC;AApCW,QAAA,UAAU,cAoCrB","sourcesContent":["export type FilterFn = (rootValue?: any, args?: any, context?: any, info?: any) => boolean;\n\nexport const withFilter = (asyncIteratorFn: () => AsyncIterableIterator<any>, filterFn: FilterFn) => {\n  return (rootValue: any, args: any, context: any, info: any): AsyncIterator<any> => {\n    const asyncIterator = asyncIteratorFn();\n\n    const getNextPromise = () => {\n      return asyncIterator\n        .next()\n        .then(payload => Promise.all([\n          payload,\n          Promise.resolve(filterFn(payload.value, args, context, info)).catch(() => false),\n        ]))\n        .then(([payload, filterResult]) => {\n          if (filterResult === true) {\n            return payload;\n          }\n\n          // Skip the current value and wait for the next one\n          return getNextPromise();\n        });\n    };\n\n    return {\n      next() {\n        return getNextPromise();\n      },\n      return() {\n        return asyncIterator.return();\n      },\n      throw(error) {\n        return asyncIterator.throw(error);\n      },\n      [Symbol.asyncIterator]() {\n        return this;\n      },\n    } as any;\n  };\n};\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"0a2b49be7ed6cc38f7dcda631f43c87f44484afc"}}