rx-deep-subject

0.0.3 • Public • Published

rx-deep-subject

RxJS util for converting plain JS-object to object in which every property is either object or BehaviorSubject of primitive.

NPM version Build Status Dependency Status Coverage percentage experimental

Install

npm install rx-deep-subject --save

or

yarn add rx-deep-subject

Usage

import { fromObject, toObject } from "rx-deep-subject";
const deepSubject = fromObject({
    a: {
        b: "Hello",
    },
    d: "World",
});
// Set next value for BehaviorSubject
deepSubject.a.b.next("Goodbye");
const obj = toObject(deepSubject);
console.log(obj); // { a: { b: 'Goodbye' }, d: 'World' }

API

 
fromObject<T extends { [index: string]: any }>(objT)DeepSubject<T>;
 
toObject<T>(objT)UnpackedDeepSubject<T>;
 
type DeepSubject<T extends { [index: string]: any }> = {
    [P in keyof T]: T[P] extends object ?
    DeepSubject<T[P]> :
    BehaviorSubject<T[P]>; };
type UnpackedDeepSubject<T extends { [index: string]: any }> = {
    [P in keyof T]: T[P] extends BehaviorSubject<infer U> ?
    U : T[P] extends [indexstring]: any } ? UnpackedDeepSubject<T[P]> : T[P];
};

Test

npm install
npm test

Readme

Keywords

Package Sidebar

Install

npm i rx-deep-subject

Weekly Downloads

6

Version

0.0.3

License

ISC

Unpacked Size

188 kB

Total Files

15

Last publish

Collaborators

  • arvitaly