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/operators/sequenceEqual.js | |
initial commit: scaffolding
Diffstat (limited to 'node_modules/rxjs/dist/esm/internal/operators/sequenceEqual.js')
| -rw-r--r-- | node_modules/rxjs/dist/esm/internal/operators/sequenceEqual.js | 39 |
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 |
