0.0.7 • Published 5 years ago
@ddoronin/super-object v0.0.7
super-object
$ yarn add @ddoronin/super-object
It's like
Object.assign()
, but even more.
Usage
Suppose you compose a request to upload a file. You decided to set different content types based on a file extension and apply gzip if this a javascript or css file.
import { compose } from 'super-object';
...
function createRequest(payload: any, fileExt: string) {
return api.compose({
body: { ...payload }
}).if(fileExt === '.js', {
contentType: 'text/javascript'
}).elseif(fileExt === '.css', {
contentType: 'text/css'
}).else({
contentType: 'application/octet-stream'
}).if(fileExt === '.js' || fileExt === '.css', {
encoding: 'gzip'
}).val();
}
API
method | description |
---|---|
compose\<A extends {}>(a: A = {} as any): IComposer\ | Creates a wrapper around a given object a: A that is a context object. |
append\(b: B): IComposer\<A | B> | Appends a given object b to the context A |
if\(condition: boolean, b: B): IComposer\<A | B> | Appends a given object b to the context A if and only if the condition is satisfied. |
elseif\(condition: boolean, c: C): IComposer\<A | C> | Appends a given object c to the context A if and only if the condition is satisfied and a previous conditions were falsy. |
else\(d: D): IComposer\<A | D> | Appends a given object d to the context A if all previous conditions were falsy. |
val(): A | Simply returns the context object A . |
export interface IComposer<A> {
append<B>(b: B): IComposer<A | B>;
if<B>(condition: boolean, b: B): IComposer<A | B>;
elseif<C>(condition: boolean, c: C): IComposer<A | C>
else<D>(d: D): IComposer<A | D>;
val(): A;
}
License
MIT