UNPKG

@unilogin/sdk

Version:

SDK is a JS library, that communicates with relayer. SDK allows managing contract, by creating basic contract-calling messages.

18 lines (14 loc) 603 B
import {Callback, Property, State, withEffect} from 'reactive-properties'; type MaybePromise<T> = T | Promise<T>; export function propertyFromSubscription<T>(subscribe: (cb: (value: T) => void) => MaybePromise<Callback>, initialValue: T): Property<T> { const state = new State(initialValue); return state.pipe( withEffect(() => unpromiseCallback(subscribe(value => state.set(value)))), ); } function unpromiseCallback(callback: MaybePromise<Callback>): Callback { if (!(callback instanceof Promise)) { return callback; } return () => setTimeout(async () => (await callback)()); }