0.0.7 • Published 5 years ago

@ddoronin/super-object v0.0.7

Weekly downloads
1
License
MIT
Repository
github
Last release
5 years ago

super-object

GitHub license npm version Build Status Coverage Status

$ 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

methoddescription
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(): ASimply 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

0.0.7

5 years ago

0.0.6

5 years ago

0.0.5

5 years ago

0.0.3

5 years ago

0.0.2

5 years ago

0.0.1

5 years ago