aboutsummaryrefslogtreecommitdiffstats
path: root/node_modules/rxjs/dist/esm/internal/operators/single.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/rxjs/dist/esm/internal/operators/single.js')
-rw-r--r--node_modules/rxjs/dist/esm/internal/operators/single.js30
1 files changed, 30 insertions, 0 deletions
diff --git a/node_modules/rxjs/dist/esm/internal/operators/single.js b/node_modules/rxjs/dist/esm/internal/operators/single.js
new file mode 100644
index 0000000..ccf5ac2
--- /dev/null
+++ b/node_modules/rxjs/dist/esm/internal/operators/single.js
@@ -0,0 +1,30 @@
+import { EmptyError } from '../util/EmptyError';
+import { SequenceError } from '../util/SequenceError';
+import { NotFoundError } from '../util/NotFoundError';
+import { operate } from '../util/lift';
+import { createOperatorSubscriber } from './OperatorSubscriber';
+export function single(predicate) {
+ return operate((source, subscriber) => {
+ let hasValue = false;
+ let singleValue;
+ let seenValue = false;
+ let index = 0;
+ source.subscribe(createOperatorSubscriber(subscriber, (value) => {
+ seenValue = true;
+ if (!predicate || predicate(value, index++, source)) {
+ hasValue && subscriber.error(new SequenceError('Too many matching values'));
+ hasValue = true;
+ singleValue = value;
+ }
+ }, () => {
+ if (hasValue) {
+ subscriber.next(singleValue);
+ subscriber.complete();
+ }
+ else {
+ subscriber.error(seenValue ? new NotFoundError('No matching values') : new EmptyError());
+ }
+ }));
+ });
+}
+//# sourceMappingURL=single.js.map \ No newline at end of file
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage