// Copyright 2017-2022 @polkadot/api-derive authors & contributors // SPDX-License-Identifier: Apache-2.0 import type { Observable } from 'rxjs'; import type { DeriveApi } from '../types'; import { map } from 'rxjs'; import { memo } from '@polkadot/rpc-core'; export function firstObservable (obs: Observable): Observable { return obs.pipe(map(([a]) => a)); } export function firstMemo (fn: (api: DeriveApi, ...args: A) => Observable): (instanceId: string, api: DeriveApi) => (...args: A) => Observable { return (instanceId: string, api: DeriveApi) => memo(instanceId, (...args: A) => firstObservable(fn(api, ...args)) ); }