import { Observable } from '../Observable'; | |
import { SchedulerLike } from '../types'; | |
import { from } from './from'; | |
/** | |
* @deprecated Use `from(Object.entries(obj))` instead. Will be removed in v8. | |
*/ | |
export function pairs<T>(arr: readonly T[], scheduler?: SchedulerLike): Observable<[string, T]>; | |
/** | |
* @deprecated Use `from(Object.entries(obj))` instead. Will be removed in v8. | |
*/ | |
export function pairs<O extends Record<string, unknown>>(obj: O, scheduler?: SchedulerLike): Observable<[keyof O, O[keyof O]]>; | |
/** | |
* @deprecated Use `from(Object.entries(obj))` instead. Will be removed in v8. | |
*/ | |
export function pairs<T>(iterable: Iterable<T>, scheduler?: SchedulerLike): Observable<[string, T]>; | |
/** | |
* @deprecated Use `from(Object.entries(obj))` instead. Will be removed in v8. | |
*/ | |
export function pairs( | |
n: number | bigint | boolean | ((...args: any[]) => any) | symbol, | |
scheduler?: SchedulerLike | |
): Observable<[never, never]>; | |
/** | |
* Convert an object into an Observable of `[key, value]` pairs. | |
* | |
* <span class="informal">Turn entries of an object into a stream.</span> | |
* | |
*  | |
* | |
* `pairs` takes an arbitrary object and returns an Observable that emits arrays. Each | |
* emitted array has exactly two elements - the first is a key from the object | |
* and the second is a value corresponding to that key. Keys are extracted from | |
* an object via `Object.keys` function, which means that they will be only | |
* enumerable keys that are present on an object directly - not ones inherited | |
* via prototype chain. | |
* | |
* By default, these arrays are emitted synchronously. To change that you can | |
* pass a {@link SchedulerLike} as a second argument to `pairs`. | |
* | |
* ## Example | |
* | |
* Converts an object to an Observable | |
* | |
* ```ts | |
* import { pairs } from 'rxjs'; | |
* | |
* const obj = { | |
* foo: 42, | |
* bar: 56, | |
* baz: 78 | |
* }; | |
* | |
* pairs(obj).subscribe({ | |
* next: value => console.log(value), | |
* complete: () => console.log('Complete!') | |
* }); | |
* | |
* // Logs: | |
* // ['foo', 42] | |
* // ['bar', 56] | |
* // ['baz', 78] | |
* // 'Complete!' | |
* ``` | |
* | |
* ### Object.entries required | |
* | |
* In IE, you will need to polyfill `Object.entries` in order to use this. | |
* [MDN has a polyfill here](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries) | |
* | |
* @param {Object} obj The object to inspect and turn into an | |
* Observable sequence. | |
* @param {Scheduler} [scheduler] An optional IScheduler to schedule | |
* when resulting Observable will emit values. | |
* @returns {(Observable<Array<string|T>>)} An observable sequence of | |
* [key, value] pairs from the object. | |
* @deprecated Use `from(Object.entries(obj))` instead. Will be removed in v8. | |
*/ | |
export function pairs(obj: any, scheduler?: SchedulerLike) { | |
return from(Object.entries(obj), scheduler as any); | |
} | |