UNPKG

switch-functional

Version:
119 lines (34 loc) 677 B
import{matchesConditions}from"./condition.js"; import{addDefault}from"./default.js"; import{applyReturnValues}from"./return.js"; export const chain= ( resolved, finalValue)=> ( input, options= {})=>( { case:addCase( {options,resolved,input,finalValue}), default:addDefault( {options,resolved,input,finalValue}) }); const addCase= ( { options, resolved, input, finalValue })=> ( conditions, ...caseReturnValues)=> resolved||!matchesConditions(input,conditions,options)? chain(resolved,finalValue)(input,options): chain(true,applyReturnValues(input,caseReturnValues,options))( input, options );