aboutsummaryrefslogtreecommitdiffstats
path: root/node_modules/rxjs/dist/esm/internal/operators/sequenceEqual.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/rxjs/dist/esm/internal/operators/sequenceEqual.js')
-rw-r--r--node_modules/rxjs/dist/esm/internal/operators/sequenceEqual.js39
1 files changed, 39 insertions, 0 deletions
diff --git a/node_modules/rxjs/dist/esm/internal/operators/sequenceEqual.js b/node_modules/rxjs/dist/esm/internal/operators/sequenceEqual.js
new file mode 100644
index 0000000..9b9f177
--- /dev/null
+++ b/node_modules/rxjs/dist/esm/internal/operators/sequenceEqual.js
@@ -0,0 +1,39 @@
+import { operate } from '../util/lift';
+import { createOperatorSubscriber } from './OperatorSubscriber';
+import { innerFrom } from '../observable/innerFrom';
+export function sequenceEqual(compareTo, comparator = (a, b) => a === b) {
+ return operate((source, subscriber) => {
+ const aState = createState();
+ const bState = createState();
+ const emit = (isEqual) => {
+ subscriber.next(isEqual);
+ subscriber.complete();
+ };
+ const createSubscriber = (selfState, otherState) => {
+ const sequenceEqualSubscriber = createOperatorSubscriber(subscriber, (a) => {
+ const { buffer, complete } = otherState;
+ if (buffer.length === 0) {
+ complete ? emit(false) : selfState.buffer.push(a);
+ }
+ else {
+ !comparator(a, buffer.shift()) && emit(false);
+ }
+ }, () => {
+ selfState.complete = true;
+ const { complete, buffer } = otherState;
+ complete && emit(buffer.length === 0);
+ sequenceEqualSubscriber === null || sequenceEqualSubscriber === void 0 ? void 0 : sequenceEqualSubscriber.unsubscribe();
+ });
+ return sequenceEqualSubscriber;
+ };
+ source.subscribe(createSubscriber(aState, bState));
+ innerFrom(compareTo).subscribe(createSubscriber(bState, aState));
+ });
+}
+function createState() {
+ return {
+ buffer: [],
+ complete: false,
+ };
+}
+//# sourceMappingURL=sequenceEqual.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