1.2.1 • Published 4 years ago
@lifaon/rx-js-light-shortcuts v1.2.1
🚝 rx-js-light-shortcuts
This library provides shortcuts for rx-js-light.
Example
const $inputA$ = let$$('abc');
const $inputB$ = let$$('def');
const $inputC$ = let$$();
const isInputAValid$ = map$$($inputA$.subscribe, (value) => (value.length >= 10));
const isInputBValid$ = map$$($inputB$.subscribe, (value) => (value.length <= 10));
const isInputCValid$ = const$$(true); // let's assume that inputC is always valid
const isFormValid$ = andM$$(isInputAValid$, isInputBValid$, isInputCValid$);
// EQUIVALENT
// const isFormValid$ = function$$((isInputCValid, isInputBValid, isInputCValid) => {
// return isInputCValid && isInputBValid && isInputCValid;
// }, [isInputAValid$, isInputBValid$, isInputCValid$]);
const isFormValidText$ = map$$(isFormValid$, (valid) => `Form is ${ valid ? 'valid' : 'invalid' }`);
isFormValidText$(console.log.bind(console));
/*--*/
const createAndAppendElement = (tagName) => document.body.appendChild(document.createElement(tagName));
const inputA = createAndAppendElement('input');
inputA.oninput = () => $inputA$.emit(inputA.value);
const inputB = createAndAppendElement('input');
inputB.oninput = () => $inputB$.emit(inputB.value);
const inputC = createAndAppendElement('input');
inputC.oninput = () => $inputC$.emit(inputC.value);
const validityContainer = createAndAppendElement('div');
isFormValidText$((text) => {
validityContainer.innerText = text;
});📦 Installation
yarn add @lifaon/rx-js-light-shortcuts
# or
npm install @lifaon/rx-js-light-shortcuts --saveThis library supports:
- common-js (require): transpiled as es5, with .cjs extension, useful for old nodejs versions
- module (esm import): transpiled as esnext, with .mjs extension (requires node resolution for external packages)
In a node environment the library works immediately (no extra tooling required), however, in a browser environment, you'll need to resolve external imports thought a bundler like snowpack, rollup, webpack, etc... or directly using skypack: https://cdn.skypack.dev/@lifaon/rx-js-light-shortcuts
📜 Naming convention
name$: SubscribeFunction
const value$ = of(5);name$$: generator of SubscribeFunction
const value$$ = mapSubscribePipe(String);name$$$: generator of generator of SubscribeFunction (includes all SubscribePipeFunction)
const map$$$ = mapSubscribePipe;$name: EmitFunction
const $destination = (value: any) => console.log(value);$$name: generator of EmitFunction
const $$value = mapEmitPipe(String);$$$name: generator of generator of EmitFunction (includes all EmitPipeFunction)
const $$$map = mapEmitPipe;$name$: Source
const $value$ = let$$(5);