diff options
| author | Pinapelz <yukais@pinapelz.com> | 2025-06-28 17:26:46 -0700 |
|---|---|---|
| committer | Pinapelz <yukais@pinapelz.com> | 2025-06-28 17:43:56 -0700 |
| commit | e4fa1e69e7ebfb627c7198fd1a9881e9327ec4d4 (patch) | |
| tree | 06284a538a6008eca75051399e47db4e5d50301c /node_modules/rxjs/dist/esm/internal/observable/bindCallbackInternals.js | |
initial commit: scaffolding
Diffstat (limited to 'node_modules/rxjs/dist/esm/internal/observable/bindCallbackInternals.js')
| -rw-r--r-- | node_modules/rxjs/dist/esm/internal/observable/bindCallbackInternals.js | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/node_modules/rxjs/dist/esm/internal/observable/bindCallbackInternals.js b/node_modules/rxjs/dist/esm/internal/observable/bindCallbackInternals.js new file mode 100644 index 0000000..79015c5 --- /dev/null +++ b/node_modules/rxjs/dist/esm/internal/observable/bindCallbackInternals.js @@ -0,0 +1,62 @@ +import { isScheduler } from '../util/isScheduler'; +import { Observable } from '../Observable'; +import { subscribeOn } from '../operators/subscribeOn'; +import { mapOneOrManyArgs } from '../util/mapOneOrManyArgs'; +import { observeOn } from '../operators/observeOn'; +import { AsyncSubject } from '../AsyncSubject'; +export function bindCallbackInternals(isNodeStyle, callbackFunc, resultSelector, scheduler) { + if (resultSelector) { + if (isScheduler(resultSelector)) { + scheduler = resultSelector; + } + else { + return function (...args) { + return bindCallbackInternals(isNodeStyle, callbackFunc, scheduler) + .apply(this, args) + .pipe(mapOneOrManyArgs(resultSelector)); + }; + } + } + if (scheduler) { + return function (...args) { + return bindCallbackInternals(isNodeStyle, callbackFunc) + .apply(this, args) + .pipe(subscribeOn(scheduler), observeOn(scheduler)); + }; + } + return function (...args) { + const subject = new AsyncSubject(); + let uninitialized = true; + return new Observable((subscriber) => { + const subs = subject.subscribe(subscriber); + if (uninitialized) { + uninitialized = false; + let isAsync = false; + let isComplete = false; + callbackFunc.apply(this, [ + ...args, + (...results) => { + if (isNodeStyle) { + const err = results.shift(); + if (err != null) { + subject.error(err); + return; + } + } + subject.next(1 < results.length ? results : results[0]); + isComplete = true; + if (isAsync) { + subject.complete(); + } + }, + ]); + if (isComplete) { + subject.complete(); + } + isAsync = true; + } + return subs; + }); + }; +} +//# sourceMappingURL=bindCallbackInternals.js.map
\ No newline at end of file |
