You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1 lines
2.9 KiB
1 lines
2.9 KiB
{"version":3,"file":"shareReplay.js","sourceRoot":"","sources":["../../src/operators/shareReplay.ts"],"names":[],"mappings":";AACA,8BAA8B,kBAAkB,CAAC,CAAA;AAMjD;;;GAGG;AACH,qBAA+B,UAAmB,EAAE,UAAmB,EAAE,SAAsB;IAC7F,MAAM,CAAC,UAAC,MAAqB,IAAK,OAAA,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,EAAnE,CAAmE,CAAC;AACxG,CAAC;AAFe,mBAAW,cAE1B,CAAA;AAED,6BAAgC,UAAmB,EAAE,UAAmB,EAAE,SAAsB;IAC9F,IAAI,OAAyB,CAAC;IAC9B,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,YAA0B,CAAC;IAC/B,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,UAAU,GAAG,KAAK,CAAC;IAEvB,MAAM,CAAC,8BAAmD,MAAqB;QAC7E,QAAQ,EAAE,CAAC;QACX,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC;YACzB,QAAQ,GAAG,KAAK,CAAC;YACjB,OAAO,GAAG,IAAI,6BAAa,CAAI,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;YAClE,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC;gBAC9B,IAAI,YAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACpC,KAAK,YAAC,GAAG;oBACP,QAAQ,GAAG,IAAI,CAAC;oBAChB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACrB,CAAC;gBACD,QAAQ;oBACN,UAAU,GAAG,IAAI,CAAC;oBAClB,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACrB,CAAC;aACF,CAAC,CAAC;QACL,CAAC;QAED,IAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAEzC,MAAM,CAAC;YACL,QAAQ,EAAE,CAAC;YACX,QAAQ,CAAC,WAAW,EAAE,CAAC;YACvB,EAAE,CAAC,CAAC,YAAY,IAAI,QAAQ,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC;gBACjD,YAAY,CAAC,WAAW,EAAE,CAAC;YAC7B,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAAA,CAAC","sourcesContent":["import { Observable } from '../Observable';\nimport { ReplaySubject } from '../ReplaySubject';\nimport { IScheduler } from '../Scheduler';\nimport { Subscription } from '../Subscription';\nimport { MonoTypeOperatorFunction } from '../interfaces';\nimport { Subscriber } from '../Subscriber';\n\n/**\n * @method shareReplay\n * @owner Observable\n */\nexport function shareReplay<T>(bufferSize?: number, windowTime?: number, scheduler?: IScheduler ): MonoTypeOperatorFunction<T> {\n return (source: Observable<T>) => source.lift(shareReplayOperator(bufferSize, windowTime, scheduler));\n}\n\nfunction shareReplayOperator<T>(bufferSize?: number, windowTime?: number, scheduler?: IScheduler) {\n let subject: ReplaySubject<T>;\n let refCount = 0;\n let subscription: Subscription;\n let hasError = false;\n let isComplete = false;\n\n return function shareReplayOperation(this: Subscriber<T>, source: Observable<T>) {\n refCount++;\n if (!subject || hasError) {\n hasError = false;\n subject = new ReplaySubject<T>(bufferSize, windowTime, scheduler);\n subscription = source.subscribe({\n next(value) { subject.next(value); },\n error(err) {\n hasError = true;\n subject.error(err);\n },\n complete() {\n isComplete = true;\n subject.complete();\n },\n });\n }\n\n const innerSub = subject.subscribe(this);\n\n return () => {\n refCount--;\n innerSub.unsubscribe();\n if (subscription && refCount === 0 && isComplete) {\n subscription.unsubscribe();\n }\n };\n };\n};\n"]} |