{"version":3,"file":"SubscriptionPool.mjs","sourceRoot":"","sources":["../../../src/request/SubscriptionPool.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO;IAKb,YAAY,SAAS,GAAG,EAAE;QAJlB,eAAU,GAA8B,EAAE,CAAC;QAC3C,WAAM,GAAQ,EAAE,CAAC;QAIxB,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;IAClC,CAAC;IAED,GAAG,CAAC,YAAqC;QACxC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEnC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAG,CAAC,CAAC;QACjC,CAAC;QAED,MAAM,CAAC,GAAG,EAAE;YACX,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;QAClE,CAAC,CAAC;IACH,CAAC;IAED,IAAI,CAAC,KAAQ;QACZ,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;YAClC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAExB,oDAAoD;YACpD,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;gBAClD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACrB,CAAC;QACF,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YACpC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,QAAQ;QACP,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YACpC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACrB,CAAC,CAAC,CAAC;IACJ,CAAC;CACD","sourcesContent":["import { SubscriptionObserver } from '@dojo/shim/Observable';\n\nexport default class SubscriptionPool<T> {\n\tprivate _observers: SubscriptionObserver<T>[] = [];\n\tprivate _queue: T[] = [];\n\tprivate _queueMaxLength: number;\n\n\tconstructor(maxLength = 10) {\n\t\tthis._queueMaxLength = maxLength;\n\t}\n\n\tadd(subscription: SubscriptionObserver<T>) {\n\t\tthis._observers.push(subscription);\n\n\t\twhile (this._queue.length > 0) {\n\t\t\tthis.next(this._queue.shift()!);\n\t\t}\n\n\t\treturn () => {\n\t\t\tthis._observers.splice(this._observers.indexOf(subscription), 1);\n\t\t};\n\t}\n\n\tnext(value: T) {\n\t\tif (this._observers.length === 0) {\n\t\t\tthis._queue.push(value);\n\n\t\t\t// when the queue is full, get rid of the first ones\n\t\t\twhile (this._queue.length > this._queueMaxLength) {\n\t\t\t\tthis._queue.shift();\n\t\t\t}\n\t\t}\n\n\t\tthis._observers.forEach((observer) => {\n\t\t\tobserver.next(value);\n\t\t});\n\t}\n\n\tcomplete() {\n\t\tthis._observers.forEach((observer) => {\n\t\t\tobserver.complete();\n\t\t});\n\t}\n}\n"]}