@@ -113,6 +113,118 @@ export function pipe(...operators) {
113113 return instance
114114}
115115
116+ export function branch < AI , AO = AI > (
117+ a : OperatorContextFunction < AI , AO >
118+ ) : IOperator < AI , AI >
119+ export function branch < A , B , C > (
120+ a : OperatorContextFunction < A , B > ,
121+ b : OperatorContextFunction < B , C >
122+ ) : IOperator < A , A >
123+ export function branch < A , B , C , D > (
124+ a : OperatorContextFunction < A , B > ,
125+ b : OperatorContextFunction < B , C > ,
126+ c : OperatorContextFunction < C , D >
127+ ) : IOperator < A , A >
128+ export function branch < A , B , C , D , E > (
129+ a : OperatorContextFunction < A , B > ,
130+ b : OperatorContextFunction < B , C > ,
131+ c : OperatorContextFunction < C , D > ,
132+ d : OperatorContextFunction < D , E >
133+ ) : IOperator < A , A >
134+ export function branch < A , B , C , D , E , F > (
135+ a : OperatorContextFunction < A , B > ,
136+ b : OperatorContextFunction < B , C > ,
137+ c : OperatorContextFunction < C , D > ,
138+ d : OperatorContextFunction < D , E > ,
139+ e : OperatorContextFunction < E , F >
140+ ) : IOperator < A , A >
141+ export function branch < A , B , C , D , E , F , G > (
142+ a : OperatorContextFunction < A , B > ,
143+ b : OperatorContextFunction < B , C > ,
144+ c : OperatorContextFunction < C , D > ,
145+ d : OperatorContextFunction < D , E > ,
146+ e : OperatorContextFunction < E , F > ,
147+ f : OperatorContextFunction < F , G >
148+ ) : IOperator < A , A >
149+ export function branch < A , B , C , D , E , F , G , H > (
150+ a : OperatorContextFunction < A , B > ,
151+ b : OperatorContextFunction < B , C > ,
152+ c : OperatorContextFunction < C , D > ,
153+ d : OperatorContextFunction < D , E > ,
154+ e : OperatorContextFunction < E , F > ,
155+ f : OperatorContextFunction < F , G > ,
156+ g : OperatorContextFunction < G , H >
157+ ) : IOperator < A , A >
158+ export function branch < A , B , C , D , E , F , G , H , I > (
159+ a : OperatorContextFunction < A , B > ,
160+ b : OperatorContextFunction < B , C > ,
161+ c : OperatorContextFunction < C , D > ,
162+ d : OperatorContextFunction < D , E > ,
163+ e : OperatorContextFunction < E , F > ,
164+ f : OperatorContextFunction < F , G > ,
165+ g : OperatorContextFunction < G , H > ,
166+ h : OperatorContextFunction < H , I >
167+ ) : IOperator < A , A >
168+ export function branch < A , B , C , D , E , F , G , H , I , J > (
169+ a : OperatorContextFunction < A , B > ,
170+ b : OperatorContextFunction < B , C > ,
171+ c : OperatorContextFunction < C , D > ,
172+ d : OperatorContextFunction < D , E > ,
173+ e : OperatorContextFunction < E , F > ,
174+ f : OperatorContextFunction < F , G > ,
175+ g : OperatorContextFunction < G , H > ,
176+ h : OperatorContextFunction < H , I > ,
177+ i : OperatorContextFunction < I , J >
178+ ) : IOperator < A , A >
179+ export function branch < A , B , C , D , E , F , G , H , I , J , K > (
180+ a : OperatorContextFunction < A , B > ,
181+ b : OperatorContextFunction < B , C > ,
182+ c : OperatorContextFunction < C , D > ,
183+ d : OperatorContextFunction < D , E > ,
184+ e : OperatorContextFunction < E , F > ,
185+ f : OperatorContextFunction < F , G > ,
186+ g : OperatorContextFunction < G , H > ,
187+ h : OperatorContextFunction < H , I > ,
188+ i : OperatorContextFunction < I , J > ,
189+ j : OperatorContextFunction < J , K >
190+ ) : IOperator < A , A >
191+ export function branch ( ...operators ) {
192+ const instance = ( err , context , next , final = next ) => {
193+ if ( err ) next ( err , context )
194+ else {
195+ let operatorIndex = 0
196+
197+ const run = ( operatorErr , operatorContext ) => {
198+ const operator = operators [ operatorIndex ++ ]
199+ const operatorToRun = operator
200+ ? operator [ utils . IS_OPERATOR ]
201+ ? operator
202+ : action ( operator )
203+ : ( err , finalContext , finalNext , finalFinal ) => {
204+ next (
205+ err ,
206+ {
207+ ...finalContext ,
208+ value : context . value ,
209+ } ,
210+ finalNext ,
211+ finalFinal
212+ )
213+ }
214+ try {
215+ operatorToRun ( operatorErr , operatorContext , run , final )
216+ } catch ( operatorError ) {
217+ operatorToRun ( operatorErr , operatorContext , run , final )
218+ }
219+ }
220+
221+ run ( null , context )
222+ }
223+ }
224+ instance [ utils . IS_OPERATOR ] = true
225+ return instance
226+ }
227+
116228/*
117229 OPERATORS
118230 */
0 commit comments