Handle values based on a field.
- What is this?
- When should I use this?
- Install
- Use
- API
- Types
- Compatibility
- Related
- Contribute
- Security
- License
This is a tiny package that lets you switch
between some field on objects.
This package is very useful when mapping one AST to another.
It’s a lot like a switch
statement on one field, but it’s extensible.
This package is ESM only. In Node.js (version 14.14+, 16.0+), install with npm:
npm install zwitch
In Deno with esm.sh
:
import {zwitch} from 'https://esm.sh/zwitch@2'
In browsers with esm.sh
:
<script type="module">
import {zwitch} from 'https://esm.sh/zwitch@2?bundle'
</script>
import {zwitch} from 'zwitch'
const handle = zwitch('type', {invalid, unknown, handlers: {alpha: handleAlpha}})
handle({type: 'alpha'})
function handleAlpha() { /* … */ }
Or, with a switch
statement:
const field = 'type'
function handle(value) {
let fn = invalid
if (value && typeof value === 'object' && field in value) {
switch (value[field]) {
case 'alpha':
fn = handleAlpha
break
default:
fn = unknown
break
}
}
return fn.apply(this, arguments)
}
handle({type: 'alpha'})
function handleAlpha() { /* … */ }
function unknown() { /* … */ }
function invalid() { /* … */ }
This package exports the identifier zwitch
.
There is no default export.
Create a switch, based on a key
(string
).
Options can be omitted and added later to one
.
Handlers to use, stored on one.handlers
(Record<string, Function>
,
optional).
Handler to use for unknown values, stored on one.unknown
(Function
,
optional).
Handler to use for invalid values, stored on one.invalid
(Function
,
optional).
See one
(Function
).
Handle one value.
Based on the bound key
, a respective handler will be called.
If value
is not an object, or doesn’t have a key
property, the special
“invalid” handler will be called.
If value
has an unknown key
, the special “unknown” handler will be called.
All arguments, and the context object (this
), are passed through to the
handler, and it’s result is returned.
Map of handlers (Record<string, Function>
).
Special handler
called if a value doesn’t have a key
property.
If not set, undefined
is returned for invalid values.
Special handler
called if a value does not have a matching
handler.
If not set, undefined
is returned for unknown values.
Handle one value.
This package is fully typed with TypeScript.
It exports the types Handler
, UnknownHandler
, InvalidHandler
, and
Options
.
This package is at least compatible with all maintained versions of Node.js. As of now, that is Node.js 14.14+ and 16.0+. It also works in Deno and modern browsers.
mapz
— functional map
Yes please! See How to Contribute to Open Source.
This package is safe.