2.1.0 • Published 3 years ago

avalue v2.1.0

Weekly downloads
19
License
-
Repository
github
Last release
3 years ago

avalue

Methods

  • set(value) - set value|Error and resolve|reject promise

  • get(now?: boolean) - returns promise for a value (pending or resolved|rejected). If now === true resolves|rejects promise and returns it with the value|Error (no mather it was already set or not)

  • value() - returns value|Error (if already resolved|rejected) or undefined

  • unset() - reset both - value and promise

  • reject(error) - allows to reject promise from 'outside'. It is an alias for set(error)

  • isSettled() - returns true if value|Error was set

Example

'use strict'

const http = require('http')
const avalue = require('avalue')

function myServer() {
    const address = avalue()
    const server = http
        .createServer((req, res) => {})
        .on('listening', () => address.set(server.address()))

    const httpClose = server.close

    Object.assign(server, {
        close: (...args) => {
            address.unset()
            httpClose.apply(server, ...args)
        },
        getAddress: address.get,
    })
    Object.defineProperties(server, {
        port: {
            get: () => (address.value() ? address.value().port : undefined),
        },
    })
    return server
}

const server = myServer()

server.getAddress(true) // returns resolved value undefined
const address = server.getAddress() // eventually resolves to {port: 80}
server.listen(80)

address.then(() => {
    server.port // 80
    server.getAddress() // still same (now resolved) promise of {port: 80}
    server.getAddress(true) // returns resolved value {port:80}
    server.close()
    server.port //undefined
    server.getAddress(true) // returns resolved value undefined
    server.getAddress() // new promise that eventually resolves to {port: 90}
    server.listen(90)
})