New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

signal-chain

Package Overview
Dependencies
Maintainers
1
Versions
41
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

signal-chain - npm Package Compare versions

Comparing version 0.9.0 to 0.10.0

39

dist/signal-ts.d.ts

@@ -5,4 +5,2 @@ export * from './signal/types';

import { effect } from './signal/effect';
import { combine } from './signal/combine';
import { merge } from './signal/merge';
export { execute } from './signal/util';

@@ -26,3 +24,3 @@ declare const _default: {

key: typeof key;
event: <Target extends void | import("./signal/event").HasAddEventListener, EventName extends "dblclick" | "mousedown" | "mouseenter" | "mouseleave" | "mousemove" | "mouseout" | "mouseover" | "mouseup" | "click" | "contextmenu" | "auxclick" | "keydown" | "keypress" | "keyup" | "beforeinput" | "input" | "focus" | "blur" | "focusin" | "focusout" | "change" | "submit" | "reset" | "resize" | "scroll" | "wheel" | "drag" | "dragend" | "dragenter" | "dragleave" | "dragover" | "dragstart" | "drop" | "animationstart" | "animationend" | "animationiteration" | "transitionend" | "toggle" | "error" | "load" | "unload" | "loadeddata" | "loadedmetadata" | "canplay" | "canplaythrough" | "play" | "pause" | "seeked" | "seeking" | "timeupdate" | "ended" | "volumechange" | "ratechange" | "durationchange" | "stalled" | "suspend" | "emptied" | "progress" | "abort">(event: EventName) => import("./signal/types").Chain<Target, (({
event: <Target extends void | import("./signal/event").HasAddEventListener, EventName extends string>(event: EventName) => import("./signal/types").AsyncChain<Target, (({
name: "dblclick" | "mousedown" | "mouseenter" | "mouseleave" | "mousemove" | "mouseout" | "mouseover" | "mouseup";

@@ -111,2 +109,5 @@ type: MouseEvent;

type: UIEvent;
} | {
name: string;
type: CustomEvent<any>;
}) & {

@@ -147,3 +148,3 @@ name: EventName;

maybe: {
select: <V1, Filter extends V1 & (null | undefined), From extends Exclude<V1, Filter>, To>(mapping: import("./signal/types").Function1<From, To>) => import("./signal/types").Chain<V1 | From, Filter | To>;
select: <V1, Filter extends V1 & (null | undefined), From extends Exclude<V1, Filter>, To>(mapping: import("./signal/types").Function1<From, To>) => import("./signal/types").ConnectedChain<V1 | From, Filter | To>;
listen: {

@@ -153,11 +154,5 @@ key: import("./signal/maybe").MaybeKeyCall;

};
evaluate: {
sync: <V1_1, V2 = V1_1, V3 = V2, V4 = V3, V5 = V4, V6 = V5, V7 = V6, V8 = V7, V9 = V8, V10 = V9, V11 = V10, V12 = V11, V13 = V12, V14 = V13, V15 = V14, V16 = V15, V17 = V16, V18 = V17, V19 = V18, V20 = V19>(element1: import("./signal/types").Chain<V1_1, V2>, element2?: import("./signal/types").Chain<V2, V3> | undefined, element3?: import("./signal/types").Chain<V3, V4> | undefined, element4?: import("./signal/types").Chain<V4, V5> | undefined, element5?: import("./signal/types").Chain<V5, V6> | undefined, element6?: import("./signal/types").Chain<V6, V7> | undefined, element7?: import("./signal/types").Chain<V7, V8> | undefined, element8?: import("./signal/types").Chain<V8, V9> | undefined, element9?: import("./signal/types").Chain<V9, V10> | undefined, element10?: import("./signal/types").Chain<V10, V11> | undefined, element11?: import("./signal/types").Chain<V11, V12> | undefined, element12?: import("./signal/types").Chain<V12, V13> | undefined, element13?: import("./signal/types").Chain<V13, V14> | undefined, element14?: import("./signal/types").Chain<V14, V15> | undefined, element15?: import("./signal/types").Chain<V15, V16> | undefined, element16?: import("./signal/types").Chain<V16, V17> | undefined, element17?: import("./signal/types").Chain<V17, V18> | undefined, element18?: import("./signal/types").Chain<V18, V19> | undefined, element19?: import("./signal/types").Chain<V19, V20> | undefined) => import("./signal/types").Chain<V1_1, Error | V20>;
async: <V1_2, V2_1 = V1_2, V3_1 = V2_1, V4_1 = V3_1, V5_1 = V4_1, V6_1 = V5_1, V7_1 = V6_1, V8_1 = V7_1, V9_1 = V8_1, V10_1 = V9_1, V11_1 = V10_1, V12_1 = V11_1, V13_1 = V12_1, V14_1 = V13_1, V15_1 = V14_1, V16_1 = V15_1, V17_1 = V16_1, V18_1 = V17_1, V19_1 = V18_1, V20_1 = V19_1>(element1: import("./signal/types").Chain<V1_2, V2_1>, element2?: import("./signal/types").Chain<V2_1, V3_1> | undefined, element3?: import("./signal/types").Chain<V3_1, V4_1> | undefined, element4?: import("./signal/types").Chain<V4_1, V5_1> | undefined, element5?: import("./signal/types").Chain<V5_1, V6_1> | undefined, element6?: import("./signal/types").Chain<V6_1, V7_1> | undefined, element7?: import("./signal/types").Chain<V7_1, V8_1> | undefined, element8?: import("./signal/types").Chain<V8_1, V9_1> | undefined, element9?: import("./signal/types").Chain<V9_1, V10_1> | undefined, element10?: import("./signal/types").Chain<V10_1, V11_1> | undefined, element11?: import("./signal/types").Chain<V11_1, V12_1> | undefined, element12?: import("./signal/types").Chain<V12_1, V13_1> | undefined, element13?: import("./signal/types").Chain<V13_1, V14_1> | undefined, element14?: import("./signal/types").Chain<V14_1, V15_1> | undefined, element15?: import("./signal/types").Chain<V15_1, V16_1> | undefined, element16?: import("./signal/types").Chain<V16_1, V17_1> | undefined, element17?: import("./signal/types").Chain<V17_1, V18_1> | undefined, element18?: import("./signal/types").Chain<V18_1, V19_1> | undefined, element19?: import("./signal/types").Chain<V19_1, V20_1> | undefined) => import("./signal/types").Chain<V1_2, Promise<V20_1>>;
};
function: {
sync: <V1_3, V2_2 = V1_3, V3_2 = V2_2, V4_2 = V3_2, V5_2 = V4_2, V6_2 = V5_2, V7_2 = V6_2, V8_2 = V7_2, V9_2 = V8_2, V10_2 = V9_2, V11_2 = V10_2, V12_2 = V11_2, V13_2 = V12_2, V14_2 = V13_2, V15_2 = V14_2, V16_2 = V15_2, V17_2 = V16_2, V18_2 = V17_2, V19_2 = V18_2, V20_2 = V19_2>(element1: import("./signal/types").Chain<V1_3, V2_2>, element2?: import("./signal/types").Chain<V2_2, V3_2> | undefined, element3?: import("./signal/types").Chain<V3_2, V4_2> | undefined, element4?: import("./signal/types").Chain<V4_2, V5_2> | undefined, element5?: import("./signal/types").Chain<V5_2, V6_2> | undefined, element6?: import("./signal/types").Chain<V6_2, V7_2> | undefined, element7?: import("./signal/types").Chain<V7_2, V8_2> | undefined, element8?: import("./signal/types").Chain<V8_2, V9_2> | undefined, element9?: import("./signal/types").Chain<V9_2, V10_2> | undefined, element10?: import("./signal/types").Chain<V10_2, V11_2> | undefined, element11?: import("./signal/types").Chain<V11_2, V12_2> | undefined, element12?: import("./signal/types").Chain<V12_2, V13_2> | undefined, element13?: import("./signal/types").Chain<V13_2, V14_2> | undefined, element14?: import("./signal/types").Chain<V14_2, V15_2> | undefined, element15?: import("./signal/types").Chain<V15_2, V16_2> | undefined, element16?: import("./signal/types").Chain<V16_2, V17_2> | undefined, element17?: import("./signal/types").Chain<V17_2, V18_2> | undefined, element18?: import("./signal/types").Chain<V18_2, V19_2> | undefined, element19?: import("./signal/types").Chain<V19_2, V20_2> | undefined) => import("./signal/types").Function1<V1_3, Error | V20_2>;
async: <V1_4, V2_3 = V1_4, V3_3 = V2_3, V4_3 = V3_3, V5_3 = V4_3, V6_3 = V5_3, V7_3 = V6_3, V8_3 = V7_3, V9_3 = V8_3, V10_3 = V9_3, V11_3 = V10_3, V12_3 = V11_3, V13_3 = V12_3, V14_3 = V13_3, V15_3 = V14_3, V16_3 = V15_3, V17_3 = V16_3, V18_3 = V17_3, V19_3 = V18_3, V20_3 = V19_3>(element1: import("./signal/types").Chain<V1_4, V2_3>, element2?: import("./signal/types").Chain<V2_3, V3_3> | undefined, element3?: import("./signal/types").Chain<V3_3, V4_3> | undefined, element4?: import("./signal/types").Chain<V4_3, V5_3> | undefined, element5?: import("./signal/types").Chain<V5_3, V6_3> | undefined, element6?: import("./signal/types").Chain<V6_3, V7_3> | undefined, element7?: import("./signal/types").Chain<V7_3, V8_3> | undefined, element8?: import("./signal/types").Chain<V8_3, V9_3> | undefined, element9?: import("./signal/types").Chain<V9_3, V10_3> | undefined, element10?: import("./signal/types").Chain<V10_3, V11_3> | undefined, element11?: import("./signal/types").Chain<V11_3, V12_3> | undefined, element12?: import("./signal/types").Chain<V12_3, V13_3> | undefined, element13?: import("./signal/types").Chain<V13_3, V14_3> | undefined, element14?: import("./signal/types").Chain<V14_3, V15_3> | undefined, element15?: import("./signal/types").Chain<V15_3, V16_3> | undefined, element16?: import("./signal/types").Chain<V16_3, V17_3> | undefined, element17?: import("./signal/types").Chain<V17_3, V18_3> | undefined, element18?: import("./signal/types").Chain<V18_3, V19_3> | undefined, element19?: import("./signal/types").Chain<V19_3, V20_3> | undefined) => import("./signal/types").Function1<V1_4, Promise<V20_3>>;
};
connect: <V1_5, V2_4 = V1_5, V3_4 = V2_4, V4_4 = V3_4, V5_4 = V4_4, V6_4 = V5_4, V7_4 = V6_4, V8_4 = V7_4, V9_4 = V8_4, V10_4 = V9_4, V11_4 = V10_4, V12_4 = V11_4, V13_4 = V12_4, V14_4 = V13_4, V15_4 = V14_4, V16_4 = V15_4, V17_4 = V16_4, V18_4 = V17_4, V19_4 = V18_4, V20_4 = V19_4>(element1: import("./signal/types").Chain<V1_5, V2_4>, element2?: import("./signal/types").Chain<V2_4, V3_4> | undefined, element3?: import("./signal/types").Chain<V3_4, V4_4> | undefined, element4?: import("./signal/types").Chain<V4_4, V5_4> | undefined, element5?: import("./signal/types").Chain<V5_4, V6_4> | undefined, element6?: import("./signal/types").Chain<V6_4, V7_4> | undefined, element7?: import("./signal/types").Chain<V7_4, V8_4> | undefined, element8?: import("./signal/types").Chain<V8_4, V9_4> | undefined, element9?: import("./signal/types").Chain<V9_4, V10_4> | undefined, element10?: import("./signal/types").Chain<V10_4, V11_4> | undefined, element11?: import("./signal/types").Chain<V11_4, V12_4> | undefined, element12?: import("./signal/types").Chain<V12_4, V13_4> | undefined, element13?: import("./signal/types").Chain<V13_4, V14_4> | undefined, element14?: import("./signal/types").Chain<V14_4, V15_4> | undefined, element15?: import("./signal/types").Chain<V15_4, V16_4> | undefined, element16?: import("./signal/types").Chain<V16_4, V17_4> | undefined, element17?: import("./signal/types").Chain<V17_4, V18_4> | undefined, element18?: import("./signal/types").Chain<V18_4, V19_4> | undefined, element19?: import("./signal/types").Chain<V19_4, V20_4> | undefined) => import("./signal/types").FunctionVoid;
evaluate: import("./signal/evaluate").EvaluateCall;
function: import("./signal/evaluate").FunctionCall;
connect: <V1_1, V2 = V1_1, V3 = V2, V4 = V3, V5 = V4, V6 = V5, V7 = V6, V8 = V7, V9 = V8, V10 = V9, V11 = V10, V12 = V11, V13 = V12, V14 = V13, V15 = V14, V16 = V15, V17 = V16, V18 = V17, V19 = V18, V20 = V19>(element1: import("./signal/types").AnyChain<V1_1, V2>, element2?: import("./signal/types").AnyChain<V2, V3> | undefined, element3?: import("./signal/types").AnyChain<V3, V4> | undefined, element4?: import("./signal/types").AnyChain<V4, V5> | undefined, element5?: import("./signal/types").AnyChain<V5, V6> | undefined, element6?: import("./signal/types").AnyChain<V6, V7> | undefined, element7?: import("./signal/types").AnyChain<V7, V8> | undefined, element8?: import("./signal/types").AnyChain<V8, V9> | undefined, element9?: import("./signal/types").AnyChain<V9, V10> | undefined, element10?: import("./signal/types").AnyChain<V10, V11> | undefined, element11?: import("./signal/types").AnyChain<V11, V12> | undefined, element12?: import("./signal/types").AnyChain<V12, V13> | undefined, element13?: import("./signal/types").AnyChain<V13, V14> | undefined, element14?: import("./signal/types").AnyChain<V14, V15> | undefined, element15?: import("./signal/types").AnyChain<V15, V16> | undefined, element16?: import("./signal/types").AnyChain<V16, V17> | undefined, element17?: import("./signal/types").AnyChain<V17, V18> | undefined, element18?: import("./signal/types").AnyChain<V18, V19> | undefined, element19?: import("./signal/types").AnyChain<V19, V20> | undefined) => import("./signal/types").FunctionVoid;
emit: typeof emit;

@@ -171,3 +166,3 @@ select: typeof select;

passIf: typeof passIf;
catch: <V1_6, V2_5 = V1_6, V3_5 = V2_5, V4_5 = V3_5, V5_5 = V4_5, V6_5 = V5_5, V7_5 = V6_5, V8_5 = V7_5, V9_5 = V8_5, V10_5 = V9_5, V11_5 = V10_5, V12_5 = V11_5, V13_5 = V12_5, V14_5 = V13_5, V15_5 = V14_5, V16_5 = V15_5, V17_5 = V16_5, V18_5 = V17_5, V19_5 = V18_5, V20_5 = V19_5>(element1: import("./signal/types").Chain<V1_6, V2_5>, element2?: import("./signal/types").Chain<V2_5, V3_5> | undefined, element3?: import("./signal/types").Chain<V3_5, V4_5> | undefined, element4?: import("./signal/types").Chain<V4_5, V5_5> | undefined, element5?: import("./signal/types").Chain<V5_5, V6_5> | undefined, element6?: import("./signal/types").Chain<V6_5, V7_5> | undefined, element7?: import("./signal/types").Chain<V7_5, V8_5> | undefined, element8?: import("./signal/types").Chain<V8_5, V9_5> | undefined, element9?: import("./signal/types").Chain<V9_5, V10_5> | undefined, element10?: import("./signal/types").Chain<V10_5, V11_5> | undefined, element11?: import("./signal/types").Chain<V11_5, V12_5> | undefined, element12?: import("./signal/types").Chain<V12_5, V13_5> | undefined, element13?: import("./signal/types").Chain<V13_5, V14_5> | undefined, element14?: import("./signal/types").Chain<V14_5, V15_5> | undefined, element15?: import("./signal/types").Chain<V15_5, V16_5> | undefined, element16?: import("./signal/types").Chain<V16_5, V17_5> | undefined, element17?: import("./signal/types").Chain<V17_5, V18_5> | undefined, element18?: import("./signal/types").Chain<V18_5, V19_5> | undefined, element19?: import("./signal/types").Chain<V19_5, V20_5> | undefined) => import("./signal/types").Chain<V1_6, Error | V20_5>;
catch: import("./signal/catch").CatchCall;
/**

@@ -183,16 +178,16 @@ * Chain multiple elements together. Each element can be a {@link Chain} or a {@link ConnectedChain}

*/
chain: <V1_7, V2_6 = V1_7, V3_6 = V2_6, V4_6 = V3_6, V5_6 = V4_6, V6_6 = V5_6, V7_6 = V6_6, V8_6 = V7_6, V9_6 = V8_6, V10_6 = V9_6, V11_6 = V10_6, V12_6 = V11_6, V13_6 = V12_6, V14_6 = V13_6, V15_6 = V14_6, V16_6 = V15_6, V17_6 = V16_6, V18_6 = V17_6, V19_6 = V18_6, V20_6 = V19_6>(element1: import("./signal/types").Chain<V1_7, V2_6>, element2?: import("./signal/types").Chain<V2_6, V3_6> | undefined, element3?: import("./signal/types").Chain<V3_6, V4_6> | undefined, element4?: import("./signal/types").Chain<V4_6, V5_6> | undefined, element5?: import("./signal/types").Chain<V5_6, V6_6> | undefined, element6?: import("./signal/types").Chain<V6_6, V7_6> | undefined, element7?: import("./signal/types").Chain<V7_6, V8_6> | undefined, element8?: import("./signal/types").Chain<V8_6, V9_6> | undefined, element9?: import("./signal/types").Chain<V9_6, V10_6> | undefined, element10?: import("./signal/types").Chain<V10_6, V11_6> | undefined, element11?: import("./signal/types").Chain<V11_6, V12_6> | undefined, element12?: import("./signal/types").Chain<V12_6, V13_6> | undefined, element13?: import("./signal/types").Chain<V13_6, V14_6> | undefined, element14?: import("./signal/types").Chain<V14_6, V15_6> | undefined, element15?: import("./signal/types").Chain<V15_6, V16_6> | undefined, element16?: import("./signal/types").Chain<V16_6, V17_6> | undefined, element17?: import("./signal/types").Chain<V17_6, V18_6> | undefined, element18?: import("./signal/types").Chain<V18_6, V19_6> | undefined, element19?: import("./signal/types").Chain<V19_6, V20_6> | undefined) => import("./signal/types").Chain<V1_7, V20_6>;
combine: typeof combine;
chain: import("./signal/chain").ChainCall;
combine: import("./signal/combine").CombineCall;
each: import("./signal/each").EachCall;
merge: typeof merge;
merge: import("./signal/merge").MergeCall;
if: import("./signal/if").IfFn;
ifNot: <V1_8>(condition: import("./signal/types").Function1<V1_8, boolean>) => <V1_9 extends V1_8, V2_7, V3_7 = V2_7, V4_7 = V3_7, V5_7 = V4_7, V6_7 = V5_7, V7_7 = V6_7, V8_7 = V7_7, V9_7 = V8_7, V10_7 = V9_7, V11_7 = V10_7, V12_7 = V11_7, V13_7 = V12_7, V14_7 = V13_7, V15_7 = V14_7, V16_7 = V15_7, V17_7 = V16_7, V18_7 = V17_7, V19_7 = V18_7, V20_7 = V19_7>(element1?: import("./signal/types").Chain<V1_9, V2_7> | undefined, element2?: import("./signal/types").Chain<V2_7, V3_7> | undefined, element3?: import("./signal/types").Chain<V3_7, V4_7> | undefined, element4?: import("./signal/types").Chain<V4_7, V5_7> | undefined, element5?: import("./signal/types").Chain<V5_7, V6_7> | undefined, element6?: import("./signal/types").Chain<V6_7, V7_7> | undefined, element7?: import("./signal/types").Chain<V7_7, V8_7> | undefined, element8?: import("./signal/types").Chain<V8_7, V9_7> | undefined, element9?: import("./signal/types").Chain<V9_7, V10_7> | undefined, element10?: import("./signal/types").Chain<V10_7, V11_7> | undefined, element11?: import("./signal/types").Chain<V11_7, V12_7> | undefined, element12?: import("./signal/types").Chain<V12_7, V13_7> | undefined, element13?: import("./signal/types").Chain<V13_7, V14_7> | undefined, element14?: import("./signal/types").Chain<V14_7, V15_7> | undefined, element15?: import("./signal/types").Chain<V15_7, V16_7> | undefined, element16?: import("./signal/types").Chain<V16_7, V17_7> | undefined, element17?: import("./signal/types").Chain<V17_7, V18_7> | undefined, element18?: import("./signal/types").Chain<V18_7, V19_7> | undefined, element19?: import("./signal/types").Chain<V19_7, V20_7> | undefined) => import("./signal/types").Chain<V1_9, V1_9 | V20_7>;
log: <V_1>(message?: string | undefined) => import("./signal/types").Chain<V_1>;
buffer: <V_2>(size: number) => import("./signal/types").Chain<V_2, V_2[]>;
window: <V_3>(size: number) => import("./signal/types").Chain<V_3, V_3[]>;
ifNot: <V1_2>(condition: import("./signal/types").Function1<V1_2, boolean>) => import("./signal/if").IfCall<V1_2>;
log: <V_1>(message?: string | undefined) => import("./signal/types").SyncChain<V_1>;
buffer: <V_2>(size: number) => import("./signal/types").SyncChain<V_2, V_2[]>;
window: <V_3>(size: number) => import("./signal/types").SyncChain<V_3, V_3[]>;
sidechain: import("./signal/chain").SideChainCall;
passUnique: typeof passUnique;
debounce: <V_4>(ms: number) => import("./signal/types").Chain<V_4, Exclude<V_4, Error> | Exclude<V_4, Exclude<V_4, Error>>>;
debounce: <V_4>(ms: number) => import("./signal/types").AsyncChain<V_4, Exclude<V_4, Error> | Exclude<V_4, Exclude<V_4, Error>>>;
};
export default _default;
//# sourceMappingURL=signal-ts.d.ts.map

@@ -14,3 +14,3 @@ export * from './signal/types';

import { connect } from './signal/connect';
import { evaluateAsync, evaluateSync, toFunctionSync, toFunctionAsync } from './signal/evaluate';
import { evaluate, toFunction } from './signal/evaluate';
import { listenToEvent } from './signal/event';

@@ -64,10 +64,2 @@ import { merge } from './signal/merge';

};
const evaluate = {
sync: evaluateSync,
async: evaluateAsync
};
const func = {
sync: toFunctionSync,
async: toFunctionAsync
};
const debounce = (ms) => chain(select(), type.not.isError(awaitFns.latest(select(v => new Promise(resolve => setTimeout(() => resolve(v), ms)))), type.not.isError()));

@@ -83,3 +75,3 @@ export default {

evaluate,
function: func,
function: toFunction,
// adapters

@@ -86,0 +78,0 @@ // solid,

@@ -1,15 +0,48 @@

import { Chain } from "./types";
import { Chain, SyncChain, AsyncChain, WeakChain, AsyncWeakChain } from "./types";
export interface AssertCall<Range, Condition extends Range> {
<V extends Range>(): Chain<V, Condition>;
<V1 extends Range, InnerFrom extends Condition & V1, V2>(element1: Chain<InnerFrom, V2>): Chain<V1 | InnerFrom, V2 | Exclude<V1, InnerFrom>>;
<V1 extends Range, Innerfrom extends Condition & V1, V2, V3>(element1: Chain<Innerfrom, V2>, element2: Chain<V2, V3>): Chain<V1 | Innerfrom, V3 | Exclude<V1, Innerfrom>>;
<V1 extends Range, Innerfrom extends Condition & V1, V2, V3, V4>(element1: Chain<Innerfrom, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>): Chain<V1 | Innerfrom, V4 | Exclude<V1, Innerfrom>>;
<V1 extends Range, Innerfrom extends Condition & V1, V2, V3, V4, V5>(element1: Chain<Innerfrom, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>): Chain<V1 | Innerfrom, V5 | Exclude<V1, Innerfrom>>;
<V1 extends Range, Innerfrom extends Condition & V1, V2, V3, V4, V5, V6>(element1: Chain<Innerfrom, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>): Chain<V1 | Innerfrom, V6 | Exclude<V1, Innerfrom>>;
<V1 extends Range, Innerfrom extends Condition & V1, V2, V3, V4, V5, V6, V7>(element1: Chain<Innerfrom, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>): Chain<V1 | Innerfrom, V7 | Exclude<V1, Innerfrom>>;
<V1 extends Range, Innerfrom extends Condition & V1, V2, V3, V4, V5, V6, V7, V8>(element1: Chain<Innerfrom, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>): Chain<V1 | Innerfrom, V8 | Exclude<V1, Innerfrom>>;
<V1 extends Range, Innerfrom extends Condition & V1, V2, V3, V4, V5, V6, V7, V8, V9>(element1: Chain<Innerfrom, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>): Chain<V1 | Innerfrom, V9 | Exclude<V1, Innerfrom>>;
<V1 extends Range, Innerfrom extends Condition & V1, V2, V3, V4, V5, V6, V7, V8, V9, V10>(element1: Chain<Innerfrom, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>): Chain<V1 | Innerfrom, V10 | Exclude<V1, Innerfrom>>;
<V1 extends Range, Innerfrom extends Condition & V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11>(element1: Chain<Innerfrom, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>, element10: Chain<V10, V11>): Chain<V1 | Innerfrom, V11 | Exclude<V1, Innerfrom>>;
<V1 extends Range, Innerfrom extends Condition & V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12>(element1: Chain<Innerfrom, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>, element10: Chain<V10, V11>, element11: Chain<V11, V12>): Chain<V1 | Innerfrom, V12 | Exclude<V1, Innerfrom>>;
<V extends Range>(): SyncChain<V, Condition>;
<V1 extends Range, InnerFrom extends Condition & V1, V2>(element1: SyncChain<InnerFrom, V2>): SyncChain<V1 | InnerFrom, V2 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Condition & V1, V2, V3>(element1: SyncChain<InnerFrom, V2>, element2: SyncChain<V2, V3>): SyncChain<V1 | InnerFrom, V3 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Condition & V1, V2, V3, V4>(element1: SyncChain<InnerFrom, V2>, element2: SyncChain<V2, V3>, element3: SyncChain<V3, V4>): SyncChain<V1 | InnerFrom, V4 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Condition & V1, V2, V3, V4, V5>(element1: SyncChain<InnerFrom, V2>, element2: SyncChain<V2, V3>, element3: SyncChain<V3, V4>, element4: SyncChain<V4, V5>): SyncChain<V1 | InnerFrom, V5 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Condition & V1, V2, V3, V4, V5, V6>(element1: SyncChain<InnerFrom, V2>, element2: SyncChain<V2, V3>, element3: SyncChain<V3, V4>, element4: SyncChain<V4, V5>, element5: SyncChain<V5, V6>): SyncChain<V1 | InnerFrom, V6 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Condition & V1, V2, V3, V4, V5, V6, V7>(element1: SyncChain<InnerFrom, V2>, element2: SyncChain<V2, V3>, element3: SyncChain<V3, V4>, element4: SyncChain<V4, V5>, element5: SyncChain<V5, V6>, element6: SyncChain<V6, V7>): SyncChain<V1 | InnerFrom, V7 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Condition & V1, V2, V3, V4, V5, V6, V7, V8>(element1: SyncChain<InnerFrom, V2>, element2: SyncChain<V2, V3>, element3: SyncChain<V3, V4>, element4: SyncChain<V4, V5>, element5: SyncChain<V5, V6>, element6: SyncChain<V6, V7>, element7: SyncChain<V7, V8>): SyncChain<V1 | InnerFrom, V8 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Condition & V1, V2, V3, V4, V5, V6, V7, V8, V9>(element1: SyncChain<InnerFrom, V2>, element2: SyncChain<V2, V3>, element3: SyncChain<V3, V4>, element4: SyncChain<V4, V5>, element5: SyncChain<V5, V6>, element6: SyncChain<V6, V7>, element7: SyncChain<V7, V8>, element8: SyncChain<V8, V9>): SyncChain<V1 | InnerFrom, V9 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Condition & V1, V2, V3, V4, V5, V6, V7, V8, V9, V10>(element1: SyncChain<InnerFrom, V2>, element2: SyncChain<V2, V3>, element3: SyncChain<V3, V4>, element4: SyncChain<V4, V5>, element5: SyncChain<V5, V6>, element6: SyncChain<V6, V7>, element7: SyncChain<V7, V8>, element8: SyncChain<V8, V9>, element9: SyncChain<V9, V10>): SyncChain<V1 | InnerFrom, V10 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Condition & V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11>(element1: SyncChain<InnerFrom, V2>, element2: SyncChain<V2, V3>, element3: SyncChain<V3, V4>, element4: SyncChain<V4, V5>, element5: SyncChain<V5, V6>, element6: SyncChain<V6, V7>, element7: SyncChain<V7, V8>, element8: SyncChain<V8, V9>, element9: SyncChain<V9, V10>, element10: SyncChain<V10, V11>): SyncChain<V1 | InnerFrom, V11 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Condition & V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12>(element1: SyncChain<InnerFrom, V2>, element2: SyncChain<V2, V3>, element3: SyncChain<V3, V4>, element4: SyncChain<V4, V5>, element5: SyncChain<V5, V6>, element6: SyncChain<V6, V7>, element7: SyncChain<V7, V8>, element8: SyncChain<V8, V9>, element9: SyncChain<V9, V10>, element10: SyncChain<V10, V11>, element11: SyncChain<V11, V12>): SyncChain<V1 | InnerFrom, V12 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Condition & V1, V2>(element1: AsyncChain<InnerFrom, V2>): AsyncChain<V1 | InnerFrom, V2 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Condition & V1, V2, V3>(element1: AsyncChain<InnerFrom, V2>, element2: AsyncChain<V2, V3>): AsyncChain<V1 | InnerFrom, V3 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Condition & V1, V2, V3, V4>(element1: AsyncChain<InnerFrom, V2>, element2: AsyncChain<V2, V3>, element3: AsyncChain<V3, V4>): AsyncChain<V1 | InnerFrom, V4 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Condition & V1, V2, V3, V4, V5>(element1: AsyncChain<InnerFrom, V2>, element2: AsyncChain<V2, V3>, element3: AsyncChain<V3, V4>, element4: AsyncChain<V4, V5>): AsyncChain<V1 | InnerFrom, V5 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Condition & V1, V2, V3, V4, V5, V6>(element1: AsyncChain<InnerFrom, V2>, element2: AsyncChain<V2, V3>, element3: AsyncChain<V3, V4>, element4: AsyncChain<V4, V5>, element5: AsyncChain<V5, V6>): AsyncChain<V1 | InnerFrom, V6 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Condition & V1, V2, V3, V4, V5, V6, V7>(element1: AsyncChain<InnerFrom, V2>, element2: AsyncChain<V2, V3>, element3: AsyncChain<V3, V4>, element4: AsyncChain<V4, V5>, element5: AsyncChain<V5, V6>, element6: AsyncChain<V6, V7>): AsyncChain<V1 | InnerFrom, V7 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Condition & V1, V2, V3, V4, V5, V6, V7, V8>(element1: AsyncChain<InnerFrom, V2>, element2: AsyncChain<V2, V3>, element3: AsyncChain<V3, V4>, element4: AsyncChain<V4, V5>, element5: AsyncChain<V5, V6>, element6: AsyncChain<V6, V7>, element7: AsyncChain<V7, V8>): AsyncChain<V1 | InnerFrom, V8 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Condition & V1, V2, V3, V4, V5, V6, V7, V8, V9>(element1: AsyncChain<InnerFrom, V2>, element2: AsyncChain<V2, V3>, element3: AsyncChain<V3, V4>, element4: AsyncChain<V4, V5>, element5: AsyncChain<V5, V6>, element6: AsyncChain<V6, V7>, element7: AsyncChain<V7, V8>, element8: AsyncChain<V8, V9>): AsyncChain<V1 | InnerFrom, V9 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Condition & V1, V2, V3, V4, V5, V6, V7, V8, V9, V10>(element1: AsyncChain<InnerFrom, V2>, element2: AsyncChain<V2, V3>, element3: AsyncChain<V3, V4>, element4: AsyncChain<V4, V5>, element5: AsyncChain<V5, V6>, element6: AsyncChain<V6, V7>, element7: AsyncChain<V7, V8>, element8: AsyncChain<V8, V9>, element9: AsyncChain<V9, V10>): AsyncChain<V1 | InnerFrom, V10 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Condition & V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11>(element1: AsyncChain<InnerFrom, V2>, element2: AsyncChain<V2, V3>, element3: AsyncChain<V3, V4>, element4: AsyncChain<V4, V5>, element5: AsyncChain<V5, V6>, element6: AsyncChain<V6, V7>, element7: AsyncChain<V7, V8>, element8: AsyncChain<V8, V9>, element9: AsyncChain<V9, V10>, element10: AsyncChain<V10, V11>): AsyncChain<V1 | InnerFrom, V11 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Condition & V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12>(element1: AsyncChain<InnerFrom, V2>, element2: AsyncChain<V2, V3>, element3: AsyncChain<V3, V4>, element4: AsyncChain<V4, V5>, element5: AsyncChain<V5, V6>, element6: AsyncChain<V6, V7>, element7: AsyncChain<V7, V8>, element8: AsyncChain<V8, V9>, element9: AsyncChain<V9, V10>, element10: AsyncChain<V10, V11>, element11: AsyncChain<V11, V12>): AsyncChain<V1 | InnerFrom, V12 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Condition & V1, V2>(element1: WeakChain<InnerFrom, V2>): WeakChain<V1 | InnerFrom, V2 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Condition & V1, V2, V3>(element1: WeakChain<InnerFrom, V2>, element2: WeakChain<V2, V3>): WeakChain<V1 | InnerFrom, V3 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Condition & V1, V2, V3, V4>(element1: WeakChain<InnerFrom, V2>, element2: WeakChain<V2, V3>, element3: WeakChain<V3, V4>): WeakChain<V1 | InnerFrom, V4 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Condition & V1, V2, V3, V4, V5>(element1: WeakChain<InnerFrom, V2>, element2: WeakChain<V2, V3>, element3: WeakChain<V3, V4>, element4: WeakChain<V4, V5>): WeakChain<V1 | InnerFrom, V5 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Condition & V1, V2, V3, V4, V5, V6>(element1: WeakChain<InnerFrom, V2>, element2: WeakChain<V2, V3>, element3: WeakChain<V3, V4>, element4: WeakChain<V4, V5>, element5: WeakChain<V5, V6>): WeakChain<V1 | InnerFrom, V6 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Condition & V1, V2, V3, V4, V5, V6, V7>(element1: WeakChain<InnerFrom, V2>, element2: WeakChain<V2, V3>, element3: WeakChain<V3, V4>, element4: WeakChain<V4, V5>, element5: WeakChain<V5, V6>, element6: WeakChain<V6, V7>): WeakChain<V1 | InnerFrom, V7 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Condition & V1, V2, V3, V4, V5, V6, V7, V8>(element1: WeakChain<InnerFrom, V2>, element2: WeakChain<V2, V3>, element3: WeakChain<V3, V4>, element4: WeakChain<V4, V5>, element5: WeakChain<V5, V6>, element6: WeakChain<V6, V7>, element7: WeakChain<V7, V8>): WeakChain<V1 | InnerFrom, V8 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Condition & V1, V2, V3, V4, V5, V6, V7, V8, V9>(element1: WeakChain<InnerFrom, V2>, element2: WeakChain<V2, V3>, element3: WeakChain<V3, V4>, element4: WeakChain<V4, V5>, element5: WeakChain<V5, V6>, element6: WeakChain<V6, V7>, element7: WeakChain<V7, V8>, element8: WeakChain<V8, V9>): WeakChain<V1 | InnerFrom, V9 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Condition & V1, V2, V3, V4, V5, V6, V7, V8, V9, V10>(element1: WeakChain<InnerFrom, V2>, element2: WeakChain<V2, V3>, element3: WeakChain<V3, V4>, element4: WeakChain<V4, V5>, element5: WeakChain<V5, V6>, element6: WeakChain<V6, V7>, element7: WeakChain<V7, V8>, element8: WeakChain<V8, V9>, element9: WeakChain<V9, V10>): WeakChain<V1 | InnerFrom, V10 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Condition & V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11>(element1: WeakChain<InnerFrom, V2>, element2: WeakChain<V2, V3>, element3: WeakChain<V3, V4>, element4: WeakChain<V4, V5>, element5: WeakChain<V5, V6>, element6: WeakChain<V6, V7>, element7: WeakChain<V7, V8>, element8: WeakChain<V8, V9>, element9: WeakChain<V9, V10>, element10: WeakChain<V10, V11>): WeakChain<V1 | InnerFrom, V11 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Condition & V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12>(element1: WeakChain<InnerFrom, V2>, element2: WeakChain<V2, V3>, element3: WeakChain<V3, V4>, element4: WeakChain<V4, V5>, element5: WeakChain<V5, V6>, element6: WeakChain<V6, V7>, element7: WeakChain<V7, V8>, element8: WeakChain<V8, V9>, element9: WeakChain<V9, V10>, element10: WeakChain<V10, V11>, element11: WeakChain<V11, V12>): WeakChain<V1 | InnerFrom, V12 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Condition & V1, V2>(element1: AsyncWeakChain<InnerFrom, V2>): AsyncWeakChain<V1 | InnerFrom, V2 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Condition & V1, V2, V3>(element1: AsyncWeakChain<InnerFrom, V2>, element2: AsyncWeakChain<V2, V3>): AsyncWeakChain<V1 | InnerFrom, V3 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Condition & V1, V2, V3, V4>(element1: AsyncWeakChain<InnerFrom, V2>, element2: AsyncWeakChain<V2, V3>, element3: AsyncWeakChain<V3, V4>): AsyncWeakChain<V1 | InnerFrom, V4 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Condition & V1, V2, V3, V4, V5>(element1: AsyncWeakChain<InnerFrom, V2>, element2: AsyncWeakChain<V2, V3>, element3: AsyncWeakChain<V3, V4>, element4: AsyncWeakChain<V4, V5>): AsyncWeakChain<V1 | InnerFrom, V5 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Condition & V1, V2, V3, V4, V5, V6>(element1: AsyncWeakChain<InnerFrom, V2>, element2: AsyncWeakChain<V2, V3>, element3: AsyncWeakChain<V3, V4>, element4: AsyncWeakChain<V4, V5>, element5: AsyncWeakChain<V5, V6>): AsyncWeakChain<V1 | InnerFrom, V6 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Condition & V1, V2, V3, V4, V5, V6, V7>(element1: AsyncWeakChain<InnerFrom, V2>, element2: AsyncWeakChain<V2, V3>, element3: AsyncWeakChain<V3, V4>, element4: AsyncWeakChain<V4, V5>, element5: AsyncWeakChain<V5, V6>, element6: AsyncWeakChain<V6, V7>): AsyncWeakChain<V1 | InnerFrom, V7 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Condition & V1, V2, V3, V4, V5, V6, V7, V8>(element1: AsyncWeakChain<InnerFrom, V2>, element2: AsyncWeakChain<V2, V3>, element3: AsyncWeakChain<V3, V4>, element4: AsyncWeakChain<V4, V5>, element5: AsyncWeakChain<V5, V6>, element6: AsyncWeakChain<V6, V7>, element7: AsyncWeakChain<V7, V8>): AsyncWeakChain<V1 | InnerFrom, V8 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Condition & V1, V2, V3, V4, V5, V6, V7, V8, V9>(element1: AsyncWeakChain<InnerFrom, V2>, element2: AsyncWeakChain<V2, V3>, element3: AsyncWeakChain<V3, V4>, element4: AsyncWeakChain<V4, V5>, element5: AsyncWeakChain<V5, V6>, element6: AsyncWeakChain<V6, V7>, element7: AsyncWeakChain<V7, V8>, element8: AsyncWeakChain<V8, V9>): AsyncWeakChain<V1 | InnerFrom, V9 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Condition & V1, V2, V3, V4, V5, V6, V7, V8, V9, V10>(element1: AsyncWeakChain<InnerFrom, V2>, element2: AsyncWeakChain<V2, V3>, element3: AsyncWeakChain<V3, V4>, element4: AsyncWeakChain<V4, V5>, element5: AsyncWeakChain<V5, V6>, element6: AsyncWeakChain<V6, V7>, element7: AsyncWeakChain<V7, V8>, element8: AsyncWeakChain<V8, V9>, element9: AsyncWeakChain<V9, V10>): AsyncWeakChain<V1 | InnerFrom, V10 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Condition & V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11>(element1: AsyncWeakChain<InnerFrom, V2>, element2: AsyncWeakChain<V2, V3>, element3: AsyncWeakChain<V3, V4>, element4: AsyncWeakChain<V4, V5>, element5: AsyncWeakChain<V5, V6>, element6: AsyncWeakChain<V6, V7>, element7: AsyncWeakChain<V7, V8>, element8: AsyncWeakChain<V8, V9>, element9: AsyncWeakChain<V9, V10>, element10: AsyncWeakChain<V10, V11>): AsyncWeakChain<V1 | InnerFrom, V11 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Condition & V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12>(element1: AsyncWeakChain<InnerFrom, V2>, element2: AsyncWeakChain<V2, V3>, element3: AsyncWeakChain<V3, V4>, element4: AsyncWeakChain<V4, V5>, element5: AsyncWeakChain<V5, V6>, element6: AsyncWeakChain<V6, V7>, element7: AsyncWeakChain<V7, V8>, element8: AsyncWeakChain<V8, V9>, element9: AsyncWeakChain<V9, V10>, element10: AsyncWeakChain<V10, V11>, element11: AsyncWeakChain<V11, V12>): AsyncWeakChain<V1 | InnerFrom, V12 | Exclude<V1, InnerFrom>>;
(first: Chain<unknown, Condition>, ...elements: Chain<unknown, unknown>[]): Chain<unknown, unknown | Exclude<Range, Condition>>;

@@ -20,14 +53,47 @@ }

export interface AssertNotCall<Range, Condition extends Range> {
<V extends Range>(): Chain<V, Exclude<V, Condition>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2>(element1: Chain<InnerFrom, V2>): Chain<V1 | InnerFrom, V2 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3>(element1: Chain<InnerFrom, V2>, element2: Chain<V2, V3>): Chain<V1 | InnerFrom, V3 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3, V4>(element1: Chain<InnerFrom, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>): Chain<V1 | InnerFrom, V4 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3, V4, V5>(element1: Chain<InnerFrom, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>): Chain<V1 | InnerFrom, V5 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3, V4, V5, V6>(element1: Chain<InnerFrom, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>): Chain<V1 | InnerFrom, V6 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3, V4, V5, V6, V7>(element1: Chain<InnerFrom, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>): Chain<V1 | InnerFrom, V7 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3, V4, V5, V6, V7, V8>(element1: Chain<InnerFrom, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>): Chain<V1 | InnerFrom, V8 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3, V4, V5, V6, V7, V8, V9>(element1: Chain<InnerFrom, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>): Chain<V1 | InnerFrom, V9 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3, V4, V5, V6, V7, V8, V9, V10>(element1: Chain<InnerFrom, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>): Chain<V1 | InnerFrom, V10 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11>(element1: Chain<InnerFrom, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>, element10: Chain<V10, V11>): Chain<V1 | InnerFrom, V11 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12>(element1: Chain<InnerFrom, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>, element10: Chain<V10, V11>, element11: Chain<V11, V12>): Chain<V1 | InnerFrom, V12 | Exclude<V1, InnerFrom>>;
<V extends Range>(): SyncChain<V, Exclude<V, Condition>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2>(element1: SyncChain<InnerFrom, V2>): SyncChain<V1 | InnerFrom, V2 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3>(element1: SyncChain<InnerFrom, V2>, element2: SyncChain<V2, V3>): SyncChain<V1 | InnerFrom, V3 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3, V4>(element1: SyncChain<InnerFrom, V2>, element2: SyncChain<V2, V3>, element3: SyncChain<V3, V4>): SyncChain<V1 | InnerFrom, V4 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3, V4, V5>(element1: SyncChain<InnerFrom, V2>, element2: SyncChain<V2, V3>, element3: SyncChain<V3, V4>, element4: SyncChain<V4, V5>): SyncChain<V1 | InnerFrom, V5 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3, V4, V5, V6>(element1: SyncChain<InnerFrom, V2>, element2: SyncChain<V2, V3>, element3: SyncChain<V3, V4>, element4: SyncChain<V4, V5>, element5: SyncChain<V5, V6>): SyncChain<V1 | InnerFrom, V6 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3, V4, V5, V6, V7>(element1: SyncChain<InnerFrom, V2>, element2: SyncChain<V2, V3>, element3: SyncChain<V3, V4>, element4: SyncChain<V4, V5>, element5: SyncChain<V5, V6>, element6: SyncChain<V6, V7>): SyncChain<V1 | InnerFrom, V7 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3, V4, V5, V6, V7, V8>(element1: SyncChain<InnerFrom, V2>, element2: SyncChain<V2, V3>, element3: SyncChain<V3, V4>, element4: SyncChain<V4, V5>, element5: SyncChain<V5, V6>, element6: SyncChain<V6, V7>, element7: SyncChain<V7, V8>): SyncChain<V1 | InnerFrom, V8 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3, V4, V5, V6, V7, V8, V9>(element1: SyncChain<InnerFrom, V2>, element2: SyncChain<V2, V3>, element3: SyncChain<V3, V4>, element4: SyncChain<V4, V5>, element5: SyncChain<V5, V6>, element6: SyncChain<V6, V7>, element7: SyncChain<V7, V8>, element8: SyncChain<V8, V9>): SyncChain<V1 | InnerFrom, V9 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3, V4, V5, V6, V7, V8, V9, V10>(element1: SyncChain<InnerFrom, V2>, element2: SyncChain<V2, V3>, element3: SyncChain<V3, V4>, element4: SyncChain<V4, V5>, element5: SyncChain<V5, V6>, element6: SyncChain<V6, V7>, element7: SyncChain<V7, V8>, element8: SyncChain<V8, V9>, element9: SyncChain<V9, V10>): SyncChain<V1 | InnerFrom, V10 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11>(element1: SyncChain<InnerFrom, V2>, element2: SyncChain<V2, V3>, element3: SyncChain<V3, V4>, element4: SyncChain<V4, V5>, element5: SyncChain<V5, V6>, element6: SyncChain<V6, V7>, element7: SyncChain<V7, V8>, element8: SyncChain<V8, V9>, element9: SyncChain<V9, V10>, element10: SyncChain<V10, V11>): SyncChain<V1 | InnerFrom, V11 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12>(element1: SyncChain<InnerFrom, V2>, element2: SyncChain<V2, V3>, element3: SyncChain<V3, V4>, element4: SyncChain<V4, V5>, element5: SyncChain<V5, V6>, element6: SyncChain<V6, V7>, element7: SyncChain<V7, V8>, element8: SyncChain<V8, V9>, element9: SyncChain<V9, V10>, element10: SyncChain<V10, V11>, element11: SyncChain<V11, V12>): SyncChain<V1 | InnerFrom, V12 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2>(element1: AsyncChain<InnerFrom, V2>): AsyncChain<V1 | InnerFrom, V2 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3>(element1: AsyncChain<InnerFrom, V2>, element2: AsyncChain<V2, V3>): AsyncChain<V1 | InnerFrom, V3 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3, V4>(element1: AsyncChain<InnerFrom, V2>, element2: AsyncChain<V2, V3>, element3: AsyncChain<V3, V4>): AsyncChain<V1 | InnerFrom, V4 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3, V4, V5>(element1: AsyncChain<InnerFrom, V2>, element2: AsyncChain<V2, V3>, element3: AsyncChain<V3, V4>, element4: AsyncChain<V4, V5>): AsyncChain<V1 | InnerFrom, V5 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3, V4, V5, V6>(element1: AsyncChain<InnerFrom, V2>, element2: AsyncChain<V2, V3>, element3: AsyncChain<V3, V4>, element4: AsyncChain<V4, V5>, element5: AsyncChain<V5, V6>): AsyncChain<V1 | InnerFrom, V6 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3, V4, V5, V6, V7>(element1: AsyncChain<InnerFrom, V2>, element2: AsyncChain<V2, V3>, element3: AsyncChain<V3, V4>, element4: AsyncChain<V4, V5>, element5: AsyncChain<V5, V6>, element6: AsyncChain<V6, V7>): AsyncChain<V1 | InnerFrom, V7 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3, V4, V5, V6, V7, V8>(element1: AsyncChain<InnerFrom, V2>, element2: AsyncChain<V2, V3>, element3: AsyncChain<V3, V4>, element4: AsyncChain<V4, V5>, element5: AsyncChain<V5, V6>, element6: AsyncChain<V6, V7>, element7: AsyncChain<V7, V8>): AsyncChain<V1 | InnerFrom, V8 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3, V4, V5, V6, V7, V8, V9>(element1: AsyncChain<InnerFrom, V2>, element2: AsyncChain<V2, V3>, element3: AsyncChain<V3, V4>, element4: AsyncChain<V4, V5>, element5: AsyncChain<V5, V6>, element6: AsyncChain<V6, V7>, element7: AsyncChain<V7, V8>, element8: AsyncChain<V8, V9>): AsyncChain<V1 | InnerFrom, V9 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3, V4, V5, V6, V7, V8, V9, V10>(element1: AsyncChain<InnerFrom, V2>, element2: AsyncChain<V2, V3>, element3: AsyncChain<V3, V4>, element4: AsyncChain<V4, V5>, element5: AsyncChain<V5, V6>, element6: AsyncChain<V6, V7>, element7: AsyncChain<V7, V8>, element8: AsyncChain<V8, V9>, element9: AsyncChain<V9, V10>): AsyncChain<V1 | InnerFrom, V10 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11>(element1: AsyncChain<InnerFrom, V2>, element2: AsyncChain<V2, V3>, element3: AsyncChain<V3, V4>, element4: AsyncChain<V4, V5>, element5: AsyncChain<V5, V6>, element6: AsyncChain<V6, V7>, element7: AsyncChain<V7, V8>, element8: AsyncChain<V8, V9>, element9: AsyncChain<V9, V10>, element10: AsyncChain<V10, V11>): AsyncChain<V1 | InnerFrom, V11 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12>(element1: AsyncChain<InnerFrom, V2>, element2: AsyncChain<V2, V3>, element3: AsyncChain<V3, V4>, element4: AsyncChain<V4, V5>, element5: AsyncChain<V5, V6>, element6: AsyncChain<V6, V7>, element7: AsyncChain<V7, V8>, element8: AsyncChain<V8, V9>, element9: AsyncChain<V9, V10>, element10: AsyncChain<V10, V11>, element11: AsyncChain<V11, V12>): AsyncChain<V1 | InnerFrom, V12 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2>(element1: WeakChain<InnerFrom, V2>): WeakChain<V1 | InnerFrom, V2 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3>(element1: WeakChain<InnerFrom, V2>, element2: WeakChain<V2, V3>): WeakChain<V1 | InnerFrom, V3 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3, V4>(element1: WeakChain<InnerFrom, V2>, element2: WeakChain<V2, V3>, element3: WeakChain<V3, V4>): WeakChain<V1 | InnerFrom, V4 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3, V4, V5>(element1: WeakChain<InnerFrom, V2>, element2: WeakChain<V2, V3>, element3: WeakChain<V3, V4>, element4: WeakChain<V4, V5>): WeakChain<V1 | InnerFrom, V5 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3, V4, V5, V6>(element1: WeakChain<InnerFrom, V2>, element2: WeakChain<V2, V3>, element3: WeakChain<V3, V4>, element4: WeakChain<V4, V5>, element5: WeakChain<V5, V6>): WeakChain<V1 | InnerFrom, V6 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3, V4, V5, V6, V7>(element1: WeakChain<InnerFrom, V2>, element2: WeakChain<V2, V3>, element3: WeakChain<V3, V4>, element4: WeakChain<V4, V5>, element5: WeakChain<V5, V6>, element6: WeakChain<V6, V7>): WeakChain<V1 | InnerFrom, V7 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3, V4, V5, V6, V7, V8>(element1: WeakChain<InnerFrom, V2>, element2: WeakChain<V2, V3>, element3: WeakChain<V3, V4>, element4: WeakChain<V4, V5>, element5: WeakChain<V5, V6>, element6: WeakChain<V6, V7>, element7: WeakChain<V7, V8>): WeakChain<V1 | InnerFrom, V8 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3, V4, V5, V6, V7, V8, V9>(element1: WeakChain<InnerFrom, V2>, element2: WeakChain<V2, V3>, element3: WeakChain<V3, V4>, element4: WeakChain<V4, V5>, element5: WeakChain<V5, V6>, element6: WeakChain<V6, V7>, element7: WeakChain<V7, V8>, element8: WeakChain<V8, V9>): WeakChain<V1 | InnerFrom, V9 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3, V4, V5, V6, V7, V8, V9, V10>(element1: WeakChain<InnerFrom, V2>, element2: WeakChain<V2, V3>, element3: WeakChain<V3, V4>, element4: WeakChain<V4, V5>, element5: WeakChain<V5, V6>, element6: WeakChain<V6, V7>, element7: WeakChain<V7, V8>, element8: WeakChain<V8, V9>, element9: WeakChain<V9, V10>): WeakChain<V1 | InnerFrom, V10 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11>(element1: WeakChain<InnerFrom, V2>, element2: WeakChain<V2, V3>, element3: WeakChain<V3, V4>, element4: WeakChain<V4, V5>, element5: WeakChain<V5, V6>, element6: WeakChain<V6, V7>, element7: WeakChain<V7, V8>, element8: WeakChain<V8, V9>, element9: WeakChain<V9, V10>, element10: WeakChain<V10, V11>): WeakChain<V1 | InnerFrom, V11 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12>(element1: WeakChain<InnerFrom, V2>, element2: WeakChain<V2, V3>, element3: WeakChain<V3, V4>, element4: WeakChain<V4, V5>, element5: WeakChain<V5, V6>, element6: WeakChain<V6, V7>, element7: WeakChain<V7, V8>, element8: WeakChain<V8, V9>, element9: WeakChain<V9, V10>, element10: WeakChain<V10, V11>, element11: WeakChain<V11, V12>): WeakChain<V1 | InnerFrom, V12 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2>(element1: AsyncWeakChain<InnerFrom, V2>): AsyncWeakChain<V1 | InnerFrom, V2 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3>(element1: AsyncWeakChain<InnerFrom, V2>, element2: AsyncWeakChain<V2, V3>): AsyncWeakChain<V1 | InnerFrom, V3 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3, V4>(element1: AsyncWeakChain<InnerFrom, V2>, element2: AsyncWeakChain<V2, V3>, element3: AsyncWeakChain<V3, V4>): AsyncWeakChain<V1 | InnerFrom, V4 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3, V4, V5>(element1: AsyncWeakChain<InnerFrom, V2>, element2: AsyncWeakChain<V2, V3>, element3: AsyncWeakChain<V3, V4>, element4: AsyncWeakChain<V4, V5>): AsyncWeakChain<V1 | InnerFrom, V5 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3, V4, V5, V6>(element1: AsyncWeakChain<InnerFrom, V2>, element2: AsyncWeakChain<V2, V3>, element3: AsyncWeakChain<V3, V4>, element4: AsyncWeakChain<V4, V5>, element5: AsyncWeakChain<V5, V6>): AsyncWeakChain<V1 | InnerFrom, V6 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3, V4, V5, V6, V7>(element1: AsyncWeakChain<InnerFrom, V2>, element2: AsyncWeakChain<V2, V3>, element3: AsyncWeakChain<V3, V4>, element4: AsyncWeakChain<V4, V5>, element5: AsyncWeakChain<V5, V6>, element6: AsyncWeakChain<V6, V7>): AsyncWeakChain<V1 | InnerFrom, V7 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3, V4, V5, V6, V7, V8>(element1: AsyncWeakChain<InnerFrom, V2>, element2: AsyncWeakChain<V2, V3>, element3: AsyncWeakChain<V3, V4>, element4: AsyncWeakChain<V4, V5>, element5: AsyncWeakChain<V5, V6>, element6: AsyncWeakChain<V6, V7>, element7: AsyncWeakChain<V7, V8>): AsyncWeakChain<V1 | InnerFrom, V8 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3, V4, V5, V6, V7, V8, V9>(element1: AsyncWeakChain<InnerFrom, V2>, element2: AsyncWeakChain<V2, V3>, element3: AsyncWeakChain<V3, V4>, element4: AsyncWeakChain<V4, V5>, element5: AsyncWeakChain<V5, V6>, element6: AsyncWeakChain<V6, V7>, element7: AsyncWeakChain<V7, V8>, element8: AsyncWeakChain<V8, V9>): AsyncWeakChain<V1 | InnerFrom, V9 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3, V4, V5, V6, V7, V8, V9, V10>(element1: AsyncWeakChain<InnerFrom, V2>, element2: AsyncWeakChain<V2, V3>, element3: AsyncWeakChain<V3, V4>, element4: AsyncWeakChain<V4, V5>, element5: AsyncWeakChain<V5, V6>, element6: AsyncWeakChain<V6, V7>, element7: AsyncWeakChain<V7, V8>, element8: AsyncWeakChain<V8, V9>, element9: AsyncWeakChain<V9, V10>): AsyncWeakChain<V1 | InnerFrom, V10 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11>(element1: AsyncWeakChain<InnerFrom, V2>, element2: AsyncWeakChain<V2, V3>, element3: AsyncWeakChain<V3, V4>, element4: AsyncWeakChain<V4, V5>, element5: AsyncWeakChain<V5, V6>, element6: AsyncWeakChain<V6, V7>, element7: AsyncWeakChain<V7, V8>, element8: AsyncWeakChain<V8, V9>, element9: AsyncWeakChain<V9, V10>, element10: AsyncWeakChain<V10, V11>): AsyncWeakChain<V1 | InnerFrom, V11 | Exclude<V1, InnerFrom>>;
<V1 extends Range, InnerFrom extends Exclude<V1, Condition>, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12>(element1: AsyncWeakChain<InnerFrom, V2>, element2: AsyncWeakChain<V2, V3>, element3: AsyncWeakChain<V3, V4>, element4: AsyncWeakChain<V4, V5>, element5: AsyncWeakChain<V5, V6>, element6: AsyncWeakChain<V6, V7>, element7: AsyncWeakChain<V7, V8>, element8: AsyncWeakChain<V8, V9>, element9: AsyncWeakChain<V9, V10>, element10: AsyncWeakChain<V10, V11>, element11: AsyncWeakChain<V11, V12>): AsyncWeakChain<V1 | InnerFrom, V12 | Exclude<V1, InnerFrom>>;
(first: Chain<Condition, unknown>, ...elements: Chain<unknown, unknown>[]): Chain<unknown, unknown | Exclude<Range, Condition>>;

@@ -34,0 +100,0 @@ }

import { chain } from './chain';
// @ts-expect-error
export const assert = (condition, message) => (listen1, ...additionalListeners) => {

@@ -12,5 +13,5 @@ if (!listen1) {

const listen = chain(listen1, ...additionalListeners);
return (next, parameter, context) => {
return (next, parameter, context, status) => {
if (condition(parameter)) {
return listen(next, parameter, context);
return listen(next, parameter, context, status);
}

@@ -20,2 +21,3 @@ return next(parameter);

};
// @ts-expect-error
export const assertNot = (condition, message) => (listen1, ...additionalListeners) => {

@@ -31,5 +33,5 @@ if (!listen1) {

const listen = chain(listen1, ...additionalListeners);
return (next, parameter, context) => {
return (next, parameter, context, status) => {
if (!condition(parameter)) {
return listen(next, parameter, context);
return listen(next, parameter, context, status);
}

@@ -36,0 +38,0 @@ return next(parameter);

@@ -1,23 +0,25 @@

import type { Chain } from './types';
import type { AsyncChain, AsyncWeakChain } from './types';
export interface AwaitCall {
<V1, V2>(element1: Chain<V1, Promise<V2>>): Chain<V1, V2 | Error>;
<V1, V2, V3>(element1: Chain<V1, V2>, element2: Chain<V2, Promise<V3>>): Chain<V1, V3 | Error>;
<V1, V2, V3, V4>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, Promise<V4>>): Chain<V1, V4 | Error>;
<V1, V2, V3, V4, V5>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, Promise<V5>>): Chain<V1, V5 | Error>;
<V1, V2, V3, V4, V5, V6>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, Promise<V6>>): Chain<V1, V6 | Error>;
<V1, V2, V3, V4, V5, V6, V7>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, Promise<V7>>): Chain<V1, V7 | Error>;
<V1, V2, V3, V4, V5, V6, V7, V8>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, Promise<V8>>): Chain<V1, V8 | Error>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, Promise<V9>>): Chain<V1, V9 | Error>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, Promise<V10>>): Chain<V1, V10 | Error>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>, element10: Chain<V10, Promise<V11>>): Chain<V1, V11 | Error>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>, element10: Chain<V10, V11>, element11: Chain<V11, Promise<V12>>): Chain<V1, V12 | Error>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>, element10: Chain<V10, V11>, element11: Chain<V11, V12>, element12: Chain<V12, Promise<V13>>): Chain<V1, V13 | Error>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>, element10: Chain<V10, V11>, element11: Chain<V11, V12>, element12: Chain<V12, V13>, element13: Chain<V13, Promise<V14>>): Chain<V1, V14 | Error>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>, element10: Chain<V10, V11>, element11: Chain<V11, V12>, element12: Chain<V12, V13>, element13: Chain<V13, V14>, element14: Chain<V14, Promise<V15>>): Chain<V1, V15 | Error>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>, element10: Chain<V10, V11>, element11: Chain<V11, V12>, element12: Chain<V12, V13>, element13: Chain<V13, V14>, element14: Chain<V14, V15>, element15: Chain<V15, Promise<V16>>): Chain<V1, V16 | Error>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>, element10: Chain<V10, V11>, element11: Chain<V11, V12>, element12: Chain<V12, V13>, element13: Chain<V13, V14>, element14: Chain<V14, V15>, element15: Chain<V15, V16>, element16: Chain<V16, Promise<V17>>): Chain<V1, V17 | Error>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>, element10: Chain<V10, V11>, element11: Chain<V11, V12>, element12: Chain<V12, V13>, element13: Chain<V13, V14>, element14: Chain<V14, V15>, element15: Chain<V15, V16>, element16: Chain<V16, V17>, element17: Chain<V17, Promise<V18>>): Chain<V1, V18 | Error>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>, element10: Chain<V10, V11>, element11: Chain<V11, V12>, element12: Chain<V12, V13>, element13: Chain<V13, V14>, element14: Chain<V14, V15>, element15: Chain<V15, V16>, element16: Chain<V16, V17>, element17: Chain<V17, V18>, element18: Chain<V18, Promise<V19>>): Chain<V1, V19 | Error>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>, element10: Chain<V10, V11>, element11: Chain<V11, V12>, element12: Chain<V12, V13>, element13: Chain<V13, V14>, element14: Chain<V14, V15>, element15: Chain<V15, V16>, element16: Chain<V16, V17>, element17: Chain<V17, V18>, element18: Chain<V18, V19>, element19: Chain<V19, Promise<V20>>): Chain<V1, V20 | Error>;
(first: Chain<unknown, unknown>, ...elements: Chain<unknown, unknown>[]): Chain<unknown | Error, unknown>;
<V1, V2>(element1: AsyncChain<V1, Promise<V2>>): AsyncChain<V1, V2 | Error>;
<V1, V2, V3>(element1: AsyncChain<V1, V2>, element2: AsyncChain<V2, Promise<V3>>): AsyncChain<V1, V3 | Error>;
<V1, V2, V3, V4>(element1: AsyncChain<V1, V2>, element2: AsyncChain<V2, V3>, element3: AsyncChain<V3, Promise<V4>>): AsyncChain<V1, V4 | Error>;
<V1, V2, V3, V4, V5>(element1: AsyncChain<V1, V2>, element2: AsyncChain<V2, V3>, element3: AsyncChain<V3, V4>, element4: AsyncChain<V4, Promise<V5>>): AsyncChain<V1, V5 | Error>;
<V1, V2, V3, V4, V5, V6>(element1: AsyncChain<V1, V2>, element2: AsyncChain<V2, V3>, element3: AsyncChain<V3, V4>, element4: AsyncChain<V4, V5>, element5: AsyncChain<V5, Promise<V6>>): AsyncChain<V1, V6 | Error>;
<V1, V2, V3, V4, V5, V6, V7>(element1: AsyncChain<V1, V2>, element2: AsyncChain<V2, V3>, element3: AsyncChain<V3, V4>, element4: AsyncChain<V4, V5>, element5: AsyncChain<V5, V6>, element6: AsyncChain<V6, Promise<V7>>): AsyncChain<V1, V7 | Error>;
<V1, V2, V3, V4, V5, V6, V7, V8>(element1: AsyncChain<V1, V2>, element2: AsyncChain<V2, V3>, element3: AsyncChain<V3, V4>, element4: AsyncChain<V4, V5>, element5: AsyncChain<V5, V6>, element6: AsyncChain<V6, V7>, element7: AsyncChain<V7, Promise<V8>>): AsyncChain<V1, V8 | Error>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9>(element1: AsyncChain<V1, V2>, element2: AsyncChain<V2, V3>, element3: AsyncChain<V3, V4>, element4: AsyncChain<V4, V5>, element5: AsyncChain<V5, V6>, element6: AsyncChain<V6, V7>, element7: AsyncChain<V7, V8>, element8: AsyncChain<V8, Promise<V9>>): AsyncChain<V1, V9 | Error>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10>(element1: AsyncChain<V1, V2>, element2: AsyncChain<V2, V3>, element3: AsyncChain<V3, V4>, element4: AsyncChain<V4, V5>, element5: AsyncChain<V5, V6>, element6: AsyncChain<V6, V7>, element7: AsyncChain<V7, V8>, element8: AsyncChain<V8, V9>, element9: AsyncChain<V9, Promise<V10>>): AsyncChain<V1, V10 | Error>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11>(element1: AsyncChain<V1, V2>, element2: AsyncChain<V2, V3>, element3: AsyncChain<V3, V4>, element4: AsyncChain<V4, V5>, element5: AsyncChain<V5, V6>, element6: AsyncChain<V6, V7>, element7: AsyncChain<V7, V8>, element8: AsyncChain<V8, V9>, element9: AsyncChain<V9, V10>, element10: AsyncChain<V10, Promise<V11>>): AsyncChain<V1, V11 | Error>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12>(element1: AsyncChain<V1, V2>, element2: AsyncChain<V2, V3>, element3: AsyncChain<V3, V4>, element4: AsyncChain<V4, V5>, element5: AsyncChain<V5, V6>, element6: AsyncChain<V6, V7>, element7: AsyncChain<V7, V8>, element8: AsyncChain<V8, V9>, element9: AsyncChain<V9, V10>, element10: AsyncChain<V10, V11>, element11: AsyncChain<V11, Promise<V12>>): AsyncChain<V1, V12 | Error>;
<V1, V2>(element1: AsyncWeakChain<V1, Promise<V2>>): AsyncWeakChain<V1, V2 | Error>;
<V1, V2, V3>(element1: AsyncWeakChain<V1, V2>, element2: AsyncWeakChain<V2, Promise<V3>>): AsyncWeakChain<V1, V3 | Error>;
<V1, V2, V3, V4>(element1: AsyncWeakChain<V1, V2>, element2: AsyncWeakChain<V2, V3>, element3: AsyncWeakChain<V3, Promise<V4>>): AsyncWeakChain<V1, V4 | Error>;
<V1, V2, V3, V4, V5>(element1: AsyncWeakChain<V1, V2>, element2: AsyncWeakChain<V2, V3>, element3: AsyncWeakChain<V3, V4>, element4: AsyncWeakChain<V4, Promise<V5>>): AsyncWeakChain<V1, V5 | Error>;
<V1, V2, V3, V4, V5, V6>(element1: AsyncWeakChain<V1, V2>, element2: AsyncWeakChain<V2, V3>, element3: AsyncWeakChain<V3, V4>, element4: AsyncWeakChain<V4, V5>, element5: AsyncWeakChain<V5, Promise<V6>>): AsyncWeakChain<V1, V6 | Error>;
<V1, V2, V3, V4, V5, V6, V7>(element1: AsyncWeakChain<V1, V2>, element2: AsyncWeakChain<V2, V3>, element3: AsyncWeakChain<V3, V4>, element4: AsyncWeakChain<V4, V5>, element5: AsyncWeakChain<V5, V6>, element6: AsyncWeakChain<V6, Promise<V7>>): AsyncWeakChain<V1, V7 | Error>;
<V1, V2, V3, V4, V5, V6, V7, V8>(element1: AsyncWeakChain<V1, V2>, element2: AsyncWeakChain<V2, V3>, element3: AsyncWeakChain<V3, V4>, element4: AsyncWeakChain<V4, V5>, element5: AsyncWeakChain<V5, V6>, element6: AsyncWeakChain<V6, V7>, element7: AsyncWeakChain<V7, Promise<V8>>): AsyncWeakChain<V1, V8 | Error>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9>(element1: AsyncWeakChain<V1, V2>, element2: AsyncWeakChain<V2, V3>, element3: AsyncWeakChain<V3, V4>, element4: AsyncWeakChain<V4, V5>, element5: AsyncWeakChain<V5, V6>, element6: AsyncWeakChain<V6, V7>, element7: AsyncWeakChain<V7, V8>, element8: AsyncWeakChain<V8, Promise<V9>>): AsyncWeakChain<V1, V9 | Error>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10>(element1: AsyncWeakChain<V1, V2>, element2: AsyncWeakChain<V2, V3>, element3: AsyncWeakChain<V3, V4>, element4: AsyncWeakChain<V4, V5>, element5: AsyncWeakChain<V5, V6>, element6: AsyncWeakChain<V6, V7>, element7: AsyncWeakChain<V7, V8>, element8: AsyncWeakChain<V8, V9>, element9: AsyncWeakChain<V9, Promise<V10>>): AsyncWeakChain<V1, V10 | Error>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11>(element1: AsyncWeakChain<V1, V2>, element2: AsyncWeakChain<V2, V3>, element3: AsyncWeakChain<V3, V4>, element4: AsyncWeakChain<V4, V5>, element5: AsyncWeakChain<V5, V6>, element6: AsyncWeakChain<V6, V7>, element7: AsyncWeakChain<V7, V8>, element8: AsyncWeakChain<V8, V9>, element9: AsyncWeakChain<V9, V10>, element10: AsyncWeakChain<V10, Promise<V11>>): AsyncWeakChain<V1, V11 | Error>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12>(element1: AsyncWeakChain<V1, V2>, element2: AsyncWeakChain<V2, V3>, element3: AsyncWeakChain<V3, V4>, element4: AsyncWeakChain<V4, V5>, element5: AsyncWeakChain<V5, V6>, element6: AsyncWeakChain<V6, V7>, element7: AsyncWeakChain<V7, V8>, element8: AsyncWeakChain<V8, V9>, element9: AsyncWeakChain<V9, V10>, element10: AsyncWeakChain<V10, V11>, element11: AsyncWeakChain<V11, Promise<V12>>): AsyncWeakChain<V1, V12 | Error>;
}

@@ -24,0 +26,0 @@ /**

@@ -10,6 +10,8 @@ import { chain } from './chain';

*/
// @ts-expect-error
export const awaitParallel = (listen1, ...additionalListeners) => {
const listen = chain(listen1, ...additionalListeners);
return (next, value, context) => {
return (next, value, context, status) => {
let cleanupInner;
status.is = 'async';
if (!context.isInitialized) {

@@ -32,2 +34,3 @@ context.isActive = true;

execute(context.cleanupNext);
status.is = 'sync';
context.cleanupNext = next(value);

@@ -38,6 +41,7 @@ }

execute(context.cleanupNext);
status.is = 'sync';
context.cleanupNext = next(error);
}
});
}, value, context.inner);
}, value, context.inner, status);
return cleanupFunction;

@@ -53,8 +57,10 @@ };

*/
// @ts-expect-error
export const awaitLatest = (listen1, ...additionalListeners) => {
const listen = chain(listen1, ...additionalListeners);
return (next, parameter, context) => {
return (next, parameter, context, status) => {
let cleanupInner;
let cleanupNext;
let isActive = true;
status.is = 'async';
const cleanupFunction = (final = false) => {

@@ -69,2 +75,3 @@ isActive = false;

execute(cleanupNext);
status.is = 'sync';
cleanupNext = next(value);

@@ -75,6 +82,7 @@ }

execute(cleanupNext);
status.is = 'sync';
cleanupNext = next(error);
}
});
}, parameter, context);
}, parameter, context, status);
return cleanupFunction;

@@ -90,6 +98,8 @@ };

*/
// @ts-expect-error
export const awaitOrder = (listen1, ...additionalListeners) => {
const listen = chain(listen1, ...additionalListeners);
return (next, value, context) => {
return (next, value, context, status) => {
let cleanupInner;
status.is = 'async';
if (!context.isInitialized) {

@@ -115,2 +125,3 @@ context.queue = [];

execute(context.cleanupNext);
status.is = 'sync';
context.cleanupNext = next(result);

@@ -122,2 +133,3 @@ }

execute(context.cleanupNext);
status.is = 'sync';
context.cleanupNext = next(error);

@@ -131,3 +143,3 @@ }

context.queue.push(waitingPromise);
}, value, context.inner);
}, value, context.inner, status);
return cleanupFunction;

@@ -143,6 +155,8 @@ };

*/
// @ts-expect-error
export const awaitQueue = (listen1, ...additionalListeners) => {
const listen = chain(listen1, ...additionalListeners);
return (next, parameter, context) => {
return (next, parameter, context, status) => {
let cleanupInner;
status.is = 'async';
if (!context.isInitialized) {

@@ -165,3 +179,3 @@ context.queue = [];

execute(cleanupInner, false);
cleanupInner = listen(promise => resolve(promise), parameter, context.inner);
cleanupInner = listen(promise => resolve(promise), parameter, context.inner, status);
}))

@@ -171,2 +185,3 @@ .then(promise => promise).then(value => {

execute(context.cleanupNext, false);
status.is = 'sync';
context.cleanupNext = next(value);

@@ -178,2 +193,3 @@ }

execute(context.cleanupNext, false);
status.is = 'sync';
context.cleanupNext = next(error);

@@ -196,5 +212,6 @@ }

*/
// @ts-expect-error
export const awaitBlock = (listen1, ...additionalListeners) => {
const listen = chain(listen1, ...additionalListeners);
return (next, parameter, context) => {
return (next, parameter, context, status) => {
if (!context.isInitialized) {

@@ -211,2 +228,3 @@ context.isBlocking = false;

let cleanupInner;
status.is = 'async';
const cleanupFunction = (final = false) => {

@@ -236,5 +254,5 @@ if (final) {

});
}, parameter, context.inner);
}, parameter, context.inner, status);
return cleanupFunction;
};
};

@@ -1,5 +0,9 @@

import { Chain } from './types';
type CatchCall = <V1, V2 = V1, V3 = V2, V4 = V3, V5 = V4, V6 = V5, V7 = V6, V8 = V7, V9 = V8, V10 = V9, V11 = V10, V12 = V11, V13 = V12, V14 = V13, V15 = V14, V16 = V15, V17 = V16, V18 = V17, V19 = V18, V20 = V19>(element1: Chain<V1, V2>, element2?: Chain<V2, V3>, element3?: Chain<V3, V4>, element4?: Chain<V4, V5>, element5?: Chain<V5, V6>, element6?: Chain<V6, V7>, element7?: Chain<V7, V8>, element8?: Chain<V8, V9>, element9?: Chain<V9, V10>, element10?: Chain<V10, V11>, element11?: Chain<V11, V12>, element12?: Chain<V12, V13>, element13?: Chain<V13, V14>, element14?: Chain<V14, V15>, element15?: Chain<V15, V16>, element16?: Chain<V16, V17>, element17?: Chain<V17, V18>, element18?: Chain<V18, V19>, element19?: Chain<V19, V20>) => Chain<V1, V20 | Error>;
import { SyncChain, AsyncChain, WeakChain, AsyncWeakChain } from './types';
export interface CatchCall {
<V1, V2 = V1, V3 = V2, V4 = V3, V5 = V4, V6 = V5, V7 = V6, V8 = V7, V9 = V8, V10 = V9, V11 = V10, V12 = V11, V13 = V12, V14 = V13, V15 = V14, V16 = V15, V17 = V16, V18 = V17, V19 = V18, V20 = V19>(element1: SyncChain<V1, V2>, element2?: SyncChain<V2, V3>, element3?: SyncChain<V3, V4>, element4?: SyncChain<V4, V5>, element5?: SyncChain<V5, V6>, element6?: SyncChain<V6, V7>, element7?: SyncChain<V7, V8>, element8?: SyncChain<V8, V9>, element9?: SyncChain<V9, V10>, element10?: SyncChain<V10, V11>, element11?: SyncChain<V11, V12>, element12?: SyncChain<V12, V13>, element13?: SyncChain<V13, V14>, element14?: SyncChain<V14, V15>, element15?: SyncChain<V15, V16>, element16?: SyncChain<V16, V17>, element17?: SyncChain<V17, V18>, element18?: SyncChain<V18, V19>, element19?: SyncChain<V19, V20>): SyncChain<V1, V20 | Error>;
<V1, V2 = V1, V3 = V2, V4 = V3, V5 = V4, V6 = V5, V7 = V6, V8 = V7, V9 = V8, V10 = V9, V11 = V10, V12 = V11, V13 = V12, V14 = V13, V15 = V14, V16 = V15, V17 = V16, V18 = V17, V19 = V18, V20 = V19>(element1: AsyncChain<V1, V2>, element2?: AsyncChain<V2, V3>, element3?: AsyncChain<V3, V4>, element4?: AsyncChain<V4, V5>, element5?: AsyncChain<V5, V6>, element6?: AsyncChain<V6, V7>, element7?: AsyncChain<V7, V8>, element8?: AsyncChain<V8, V9>, element9?: AsyncChain<V9, V10>, element10?: AsyncChain<V10, V11>, element11?: AsyncChain<V11, V12>, element12?: AsyncChain<V12, V13>, element13?: AsyncChain<V13, V14>, element14?: AsyncChain<V14, V15>, element15?: AsyncChain<V15, V16>, element16?: AsyncChain<V16, V17>, element17?: AsyncChain<V17, V18>, element18?: AsyncChain<V18, V19>, element19?: AsyncChain<V19, V20>): AsyncChain<V1, V20 | Error>;
<V1, V2 = V1, V3 = V2, V4 = V3, V5 = V4, V6 = V5, V7 = V6, V8 = V7, V9 = V8, V10 = V9, V11 = V10, V12 = V11, V13 = V12, V14 = V13, V15 = V14, V16 = V15, V17 = V16, V18 = V17, V19 = V18, V20 = V19>(element1: WeakChain<V1, V2>, element2?: WeakChain<V2, V3>, element3?: WeakChain<V3, V4>, element4?: WeakChain<V4, V5>, element5?: WeakChain<V5, V6>, element6?: WeakChain<V6, V7>, element7?: WeakChain<V7, V8>, element8?: WeakChain<V8, V9>, element9?: WeakChain<V9, V10>, element10?: WeakChain<V10, V11>, element11?: WeakChain<V11, V12>, element12?: WeakChain<V12, V13>, element13?: WeakChain<V13, V14>, element14?: WeakChain<V14, V15>, element15?: WeakChain<V15, V16>, element16?: WeakChain<V16, V17>, element17?: WeakChain<V17, V18>, element18?: WeakChain<V18, V19>, element19?: WeakChain<V19, V20>): WeakChain<V1, V20 | Error>;
<V1, V2 = V1, V3 = V2, V4 = V3, V5 = V4, V6 = V5, V7 = V6, V8 = V7, V9 = V8, V10 = V9, V11 = V10, V12 = V11, V13 = V12, V14 = V13, V15 = V14, V16 = V15, V17 = V16, V18 = V17, V19 = V18, V20 = V19>(element1: AsyncWeakChain<V1, V2>, element2?: AsyncWeakChain<V2, V3>, element3?: AsyncWeakChain<V3, V4>, element4?: AsyncWeakChain<V4, V5>, element5?: AsyncWeakChain<V5, V6>, element6?: AsyncWeakChain<V6, V7>, element7?: AsyncWeakChain<V7, V8>, element8?: AsyncWeakChain<V8, V9>, element9?: AsyncWeakChain<V9, V10>, element10?: AsyncWeakChain<V10, V11>, element11?: AsyncWeakChain<V11, V12>, element12?: AsyncWeakChain<V12, V13>, element13?: AsyncWeakChain<V13, V14>, element14?: AsyncWeakChain<V14, V15>, element15?: AsyncWeakChain<V15, V16>, element16?: AsyncWeakChain<V16, V17>, element17?: AsyncWeakChain<V17, V18>, element18?: AsyncWeakChain<V18, V19>, element19?: AsyncWeakChain<V19, V20>): AsyncWeakChain<V1, V20 | Error>;
}
export declare const catchFn: CatchCall;
export {};
//# sourceMappingURL=catch.d.ts.map

@@ -9,5 +9,5 @@ import { chain } from './chain';

const listen = chain(listen1, ...additionalListeners);
return (resolve, parameter, context) => {
return (resolve, parameter, context, status) => {
try {
return listen(resolve, parameter, context);
return listen(resolve, parameter, context, status);
}

@@ -14,0 +14,0 @@ catch (error) {

@@ -1,28 +0,16 @@

import type { Chain } from './types';
type ChainCall = <V1, V2 = V1, V3 = V2, V4 = V3, V5 = V4, V6 = V5, V7 = V6, V8 = V7, V9 = V8, V10 = V9, V11 = V10, V12 = V11, V13 = V12, V14 = V13, V15 = V14, V16 = V15, V17 = V16, V18 = V17, V19 = V18, V20 = V19>(element1: Chain<V1, V2>, element2?: Chain<V2, V3>, element3?: Chain<V3, V4>, element4?: Chain<V4, V5>, element5?: Chain<V5, V6>, element6?: Chain<V6, V7>, element7?: Chain<V7, V8>, element8?: Chain<V8, V9>, element9?: Chain<V9, V10>, element10?: Chain<V10, V11>, element11?: Chain<V11, V12>, element12?: Chain<V12, V13>, element13?: Chain<V13, V14>, element14?: Chain<V14, V15>, element15?: Chain<V15, V16>, element16?: Chain<V16, V17>, element17?: Chain<V17, V18>, element18?: Chain<V18, V19>, element19?: Chain<V19, V20>) => Chain<V1, V20>;
import type { Chain, WeakChain, SyncChain, AsyncChain, AsyncWeakChain } from './types';
export interface ChainCall {
<V1, V2 = V1, V3 = V2, V4 = V3, V5 = V4, V6 = V5, V7 = V6, V8 = V7, V9 = V8, V10 = V9, V11 = V10, V12 = V11, V13 = V12, V14 = V13, V15 = V14, V16 = V15, V17 = V16, V18 = V17, V19 = V18, V20 = V19>(element1: Chain<V1, V2, 'sync'>, element2?: Chain<V2, V3, 'sync'>, element3?: Chain<V3, V4, 'sync'>, element4?: Chain<V4, V5, 'sync'>, element5?: Chain<V5, V6, 'sync'>, element6?: Chain<V6, V7, 'sync'>, element7?: Chain<V7, V8, 'sync'>, element8?: Chain<V8, V9, 'sync'>, element9?: Chain<V9, V10, 'sync'>, element10?: Chain<V10, V11, 'sync'>, element11?: Chain<V11, V12, 'sync'>, element12?: Chain<V12, V13, 'sync'>, element13?: Chain<V13, V14, 'sync'>, element14?: Chain<V14, V15, 'sync'>, element15?: Chain<V15, V16, 'sync'>, element16?: Chain<V16, V17, 'sync'>, element17?: Chain<V17, V18, 'sync'>, element18?: Chain<V18, V19, 'sync'>, element19?: Chain<V19, V20, 'sync'>): SyncChain<V1, V20>;
<V1, V2 = V1, V3 = V2, V4 = V3, V5 = V4, V6 = V5, V7 = V6, V8 = V7, V9 = V8, V10 = V9, V11 = V10, V12 = V11, V13 = V12, V14 = V13, V15 = V14, V16 = V15, V17 = V16, V18 = V17, V19 = V18, V20 = V19>(element1: Chain<V1, V2, 'async'>, element2?: Chain<V2, V3, 'async'>, element3?: Chain<V3, V4, 'async'>, element4?: Chain<V4, V5, 'async'>, element5?: Chain<V5, V6, 'async'>, element6?: Chain<V6, V7, 'async'>, element7?: Chain<V7, V8, 'async'>, element8?: Chain<V8, V9, 'async'>, element9?: Chain<V9, V10, 'async'>, element10?: Chain<V10, V11, 'async'>, element11?: Chain<V11, V12, 'async'>, element12?: Chain<V12, V13, 'async'>, element13?: Chain<V13, V14, 'async'>, element14?: Chain<V14, V15, 'async'>, element15?: Chain<V15, V16, 'async'>, element16?: Chain<V16, V17, 'async'>, element17?: Chain<V17, V18, 'async'>, element18?: Chain<V18, V19, 'async'>, element19?: Chain<V19, V20, 'async'>): AsyncChain<V1, V20>;
<V1, V2 = V1, V3 = V2, V4 = V3, V5 = V4, V6 = V5, V7 = V6, V8 = V7, V9 = V8, V10 = V9, V11 = V10, V12 = V11, V13 = V12, V14 = V13, V15 = V14, V16 = V15, V17 = V16, V18 = V17, V19 = V18, V20 = V19>(element1: Chain<V1, V2, 'incomplete'>, element2?: Chain<V2, V3, 'incomplete'>, element3?: Chain<V3, V4, 'incomplete'>, element4?: Chain<V4, V5, 'incomplete'>, element5?: Chain<V5, V6, 'incomplete'>, element6?: Chain<V6, V7, 'incomplete'>, element7?: Chain<V7, V8, 'incomplete'>, element8?: Chain<V8, V9, 'incomplete'>, element9?: Chain<V9, V10, 'incomplete'>, element10?: Chain<V10, V11, 'incomplete'>, element11?: Chain<V11, V12, 'incomplete'>, element12?: Chain<V12, V13, 'incomplete'>, element13?: Chain<V13, V14, 'incomplete'>, element14?: Chain<V14, V15, 'incomplete'>, element15?: Chain<V15, V16, 'incomplete'>, element16?: Chain<V16, V17, 'incomplete'>, element17?: Chain<V17, V18, 'incomplete'>, element18?: Chain<V18, V19, 'incomplete'>, element19?: Chain<V19, V20, 'incomplete'>): WeakChain<V1, V20>;
<V1, V2 = V1, V3 = V2, V4 = V3, V5 = V4, V6 = V5, V7 = V6, V8 = V7, V9 = V8, V10 = V9, V11 = V10, V12 = V11, V13 = V12, V14 = V13, V15 = V14, V16 = V15, V17 = V16, V18 = V17, V19 = V18, V20 = V19>(element1: Chain<V1, V2, 'async-incomplete'>, element2?: Chain<V2, V3, 'async-incomplete'>, element3?: Chain<V3, V4, 'async-incomplete'>, element4?: Chain<V4, V5, 'async-incomplete'>, element5?: Chain<V5, V6, 'async-incomplete'>, element6?: Chain<V6, V7, 'async-incomplete'>, element7?: Chain<V7, V8, 'async-incomplete'>, element8?: Chain<V8, V9, 'async-incomplete'>, element9?: Chain<V9, V10, 'async-incomplete'>, element10?: Chain<V10, V11, 'async-incomplete'>, element11?: Chain<V11, V12, 'async-incomplete'>, element12?: Chain<V12, V13, 'async-incomplete'>, element13?: Chain<V13, V14, 'async-incomplete'>, element14?: Chain<V14, V15, 'async-incomplete'>, element15?: Chain<V15, V16, 'async-incomplete'>, element16?: Chain<V16, V17, 'async-incomplete'>, element17?: Chain<V17, V18, 'async-incomplete'>, element18?: Chain<V18, V19, 'async-incomplete'>, element19?: Chain<V19, V20, 'async-incomplete'>): AsyncWeakChain<V1, V20>;
}
export declare const chain: ChainCall;
export interface SideChainCall {
<V1, V2>(element1: Chain<V1, V2>): Chain<V1, [V1, V2]>;
<V1, V2, V3>(element1: Chain<V1, V2>, element2: Chain<V2, V3>): Chain<V1, [V1, V3]>;
<V1, V2, V3, V4>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>): Chain<V1, [V1, V4]>;
<V1, V2, V3, V4, V5>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>): Chain<V1, [V1, V5]>;
<V1, V2, V3, V4, V5, V6>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>): Chain<V1, [V1, V6]>;
<V1, V2, V3, V4, V5, V6, V7>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>): Chain<V1, [V1, V7]>;
<V1, V2, V3, V4, V5, V6, V7, V8>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>): Chain<V1, [V1, V8]>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>): Chain<V1, [V1, V9]>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>): Chain<V1, [V1, V10]>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>, element10: Chain<V10, V11>): Chain<V1, [V1, V11]>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>, element10: Chain<V10, V11>, element11: Chain<V11, V12>): Chain<V1, [V1, V12]>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>, element10: Chain<V10, V11>, element11: Chain<V11, V12>, element12: Chain<V12, V13>): Chain<V1, [V1, V13]>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>, element10: Chain<V10, V11>, element11: Chain<V11, V12>, element12: Chain<V12, V13>, element13: Chain<V13, V14>): Chain<V1, [V1, V14]>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>, element10: Chain<V10, V11>, element11: Chain<V11, V12>, element12: Chain<V12, V13>, element13: Chain<V13, V14>, element14: Chain<V14, V15>): Chain<V1, [V1, V15]>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>, element10: Chain<V10, V11>, element11: Chain<V11, V12>, element12: Chain<V12, V13>, element13: Chain<V13, V14>, element14: Chain<V14, V15>, element15: Chain<V15, V16>): Chain<V1, [V1, V16]>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>, element10: Chain<V10, V11>, element11: Chain<V11, V12>, element12: Chain<V12, V13>, element13: Chain<V13, V14>, element14: Chain<V14, V15>, element15: Chain<V15, V16>, element16: Chain<V16, V17>): Chain<V1, [V1, V17]>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>, element10: Chain<V10, V11>, element11: Chain<V11, V12>, element12: Chain<V12, V13>, element13: Chain<V13, V14>, element14: Chain<V14, V15>, element15: Chain<V15, V16>, element16: Chain<V16, V17>, element17: Chain<V17, V18>): Chain<V1, [V1, V18]>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>, element10: Chain<V10, V11>, element11: Chain<V11, V12>, element12: Chain<V12, V13>, element13: Chain<V13, V14>, element14: Chain<V14, V15>, element15: Chain<V15, V16>, element16: Chain<V16, V17>, element17: Chain<V17, V18>, element18: Chain<V18, V19>): Chain<V1, [V1, V19]>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>, element10: Chain<V10, V11>, element11: Chain<V11, V12>, element12: Chain<V12, V13>, element13: Chain<V13, V14>, element14: Chain<V14, V15>, element15: Chain<V15, V16>, element16: Chain<V16, V17>, element17: Chain<V17, V18>, element18: Chain<V18, V19>, element19: Chain<V19, V20>): Chain<V1, [V1, V20]>;
(first: Chain<unknown, unknown>, ...elements: Chain<unknown, unknown>[]): Chain<unknown, [unknown, unknown]>;
<V1, V2 = V1, V3 = V2, V4 = V3, V5 = V4, V6 = V5, V7 = V6, V8 = V7, V9 = V8, V10 = V9, V11 = V10, V12 = V11, V13 = V12, V14 = V13, V15 = V14, V16 = V15, V17 = V16, V18 = V17, V19 = V18, V20 = V19>(element1?: SyncChain<V1, V2>, element2?: SyncChain<V2, V3>, element3?: SyncChain<V3, V4>, element4?: SyncChain<V4, V5>, element5?: SyncChain<V5, V6>, element6?: SyncChain<V6, V7>, element7?: SyncChain<V7, V8>, element8?: SyncChain<V8, V9>, element9?: SyncChain<V9, V10>, element10?: SyncChain<V10, V11>, element11?: SyncChain<V11, V12>, element12?: SyncChain<V12, V13>, element13?: SyncChain<V13, V14>, element14?: SyncChain<V14, V15>, element15?: SyncChain<V15, V16>, element16?: SyncChain<V16, V17>, element17?: SyncChain<V17, V18>, element18?: SyncChain<V18, V19>, element19?: SyncChain<V19, V20>): SyncChain<V1, [V1, V20]>;
<V1, V2 = V1, V3 = V2, V4 = V3, V5 = V4, V6 = V5, V7 = V6, V8 = V7, V9 = V8, V10 = V9, V11 = V10, V12 = V11, V13 = V12, V14 = V13, V15 = V14, V16 = V15, V17 = V16, V18 = V17, V19 = V18, V20 = V19>(element1?: AsyncChain<V1, V2>, element2?: AsyncChain<V2, V3>, element3?: AsyncChain<V3, V4>, element4?: AsyncChain<V4, V5>, element5?: AsyncChain<V5, V6>, element6?: AsyncChain<V6, V7>, element7?: AsyncChain<V7, V8>, element8?: AsyncChain<V8, V9>, element9?: AsyncChain<V9, V10>, element10?: AsyncChain<V10, V11>, element11?: AsyncChain<V11, V12>, element12?: AsyncChain<V12, V13>, element13?: AsyncChain<V13, V14>, element14?: AsyncChain<V14, V15>, element15?: AsyncChain<V15, V16>, element16?: AsyncChain<V16, V17>, element17?: AsyncChain<V17, V18>, element18?: AsyncChain<V18, V19>, element19?: AsyncChain<V19, V20>): AsyncChain<V1, [V1, V20]>;
<V1, V2 = V1, V3 = V2, V4 = V3, V5 = V4, V6 = V5, V7 = V6, V8 = V7, V9 = V8, V10 = V9, V11 = V10, V12 = V11, V13 = V12, V14 = V13, V15 = V14, V16 = V15, V17 = V16, V18 = V17, V19 = V18, V20 = V19>(element1?: WeakChain<V1, V2>, element2?: WeakChain<V2, V3>, element3?: WeakChain<V3, V4>, element4?: WeakChain<V4, V5>, element5?: WeakChain<V5, V6>, element6?: WeakChain<V6, V7>, element7?: WeakChain<V7, V8>, element8?: WeakChain<V8, V9>, element9?: WeakChain<V9, V10>, element10?: WeakChain<V10, V11>, element11?: WeakChain<V11, V12>, element12?: WeakChain<V12, V13>, element13?: WeakChain<V13, V14>, element14?: WeakChain<V14, V15>, element15?: WeakChain<V15, V16>, element16?: WeakChain<V16, V17>, element17?: WeakChain<V17, V18>, element18?: WeakChain<V18, V19>, element19?: WeakChain<V19, V20>): WeakChain<V1, [V1, V20]>;
<V1, V2 = V1, V3 = V2, V4 = V3, V5 = V4, V6 = V5, V7 = V6, V8 = V7, V9 = V8, V10 = V9, V11 = V10, V12 = V11, V13 = V12, V14 = V13, V15 = V14, V16 = V15, V17 = V16, V18 = V17, V19 = V18, V20 = V19>(element1?: AsyncWeakChain<V1, V2>, element2?: AsyncWeakChain<V2, V3>, element3?: AsyncWeakChain<V3, V4>, element4?: AsyncWeakChain<V4, V5>, element5?: AsyncWeakChain<V5, V6>, element6?: AsyncWeakChain<V6, V7>, element7?: AsyncWeakChain<V7, V8>, element8?: AsyncWeakChain<V8, V9>, element9?: AsyncWeakChain<V9, V10>, element10?: AsyncWeakChain<V10, V11>, element11?: AsyncWeakChain<V11, V12>, element12?: AsyncWeakChain<V12, V13>, element13?: AsyncWeakChain<V13, V14>, element14?: AsyncWeakChain<V14, V15>, element15?: AsyncWeakChain<V15, V16>, element16?: AsyncWeakChain<V16, V17>, element17?: AsyncWeakChain<V17, V18>, element18?: AsyncWeakChain<V18, V19>, element19?: AsyncWeakChain<V19, V20>): AsyncWeakChain<V1, [V1, V20]>;
}
export declare const sidechain: SideChainCall;
export {};
//# sourceMappingURL=chain.d.ts.map

@@ -1,4 +0,4 @@

// @ts-expect-error the function is more general than its type, but 20 arguments should be fine
// @ts-expect-error
export const chain = (first, ...elements) => {
return (next, param, context) => {
return (next, param, context, status) => {
for (let i = 0; i < elements.length + 1; i++) {

@@ -11,5 +11,5 @@ if (!context[`${i}`]) {

return (nextInner, paramInner) => {
return chained((intermediate) => element(nextInner, intermediate, context[`${index + 1}`]), paramInner);
return chained((intermediate) => element(nextInner, intermediate, context[`${index + 1}`], status), paramInner);
};
}, (nextInner, paramInner) => first(nextInner, paramInner, context[0]));
}, (nextInner, paramInner) => first(nextInner, paramInner, context[0], status));
// Execute the chained function with the initial next, param, and context

@@ -19,5 +19,6 @@ return chainedFunction(next, param);

};
// @ts-expect-error
export const sidechain = (first, ...elements) => {
const innerChain = chain(first, ...elements);
return (next, parameter, context) => innerChain((intermediate) => next([parameter, intermediate]), parameter, context);
return (next, parameter, context, status) => innerChain((intermediate) => next([parameter, intermediate]), parameter, context, status);
};

@@ -1,2 +0,2 @@

import type { Chain, Function2 } from './types';
import type { SyncChain, Function2 } from './types';
export interface CollectCall {

@@ -6,3 +6,3 @@ /**

*/
<V1>(): Chain<V1, V1[]>;
<V1>(): SyncChain<V1, V1[]>;
/**

@@ -14,3 +14,3 @@ * Collect values similar to the Array.prototype.reduce function.

*/
<V1, V2>(keep: Function2<V2, V1, V2>, initial: V2): Chain<V1, V2>;
<V1, V2>(keep: Function2<V2, V1, V2>, initial: V2): SyncChain<V1, V2>;
}

@@ -23,3 +23,3 @@ export declare const collect: CollectCall;

*/
export declare const buffer: <V>(size: number) => Chain<V, V[]>;
export declare const buffer: <V>(size: number) => SyncChain<V, V[]>;
/**

@@ -30,3 +30,3 @@ * Collects the last [n] values into an array.

*/
export declare const window: <V>(size: number) => Chain<V, V[]>;
export declare const window: <V>(size: number) => SyncChain<V, V[]>;
//# sourceMappingURL=collect.d.ts.map

@@ -1,13 +0,9 @@

import type { Chain } from "./types";
export declare function combine<V>(): Chain<V, []>;
export declare function combine<From, To>(element1: Chain<From, To>): Chain<From, [To]>;
export declare function combine<From, To1, To2>(element1: Chain<From, To1>, element2: Chain<From, To2>): Chain<From, [To1, To2]>;
export declare function combine<From, To1, To2, To3>(element1: Chain<From, To1>, element2: Chain<From, To2>, element3: Chain<From, To3>): Chain<From, [To1, To2, To3]>;
export declare function combine<From, To1, To2, To3, To4>(element1: Chain<From, To1>, element2: Chain<From, To2>, element3: Chain<From, To3>, element4: Chain<From, To4>): Chain<From, [To1, To2, To3, To4]>;
export declare function combine<From, To1, To2, To3, To4, To5>(element1: Chain<From, To1>, element2: Chain<From, To2>, element3: Chain<From, To3>, element4: Chain<From, To4>, element5: Chain<From, To5>): Chain<From, [To1, To2, To3, To4, To5]>;
export declare function combine<From, To1, To2, To3, To4, To5, To6>(element1: Chain<From, To1>, element2: Chain<From, To2>, element3: Chain<From, To3>, element4: Chain<From, To4>, element5: Chain<From, To5>, element6: Chain<From, To6>): Chain<From, [To1, To2, To3, To4, To5, To6]>;
export declare function combine<From, To1, To2, To3, To4, To5, To6, To7>(element1: Chain<From, To1>, element2: Chain<From, To2>, element3: Chain<From, To3>, element4: Chain<From, To4>, element5: Chain<From, To5>, element6: Chain<From, To6>, element7: Chain<From, To7>): Chain<From, [To1, To2, To3, To4, To5, To6, To7]>;
export declare function combine<From, To1, To2, To3, To4, To5, To6, To7, To8>(element1: Chain<From, To1>, element2: Chain<From, To2>, element3: Chain<From, To3>, element4: Chain<From, To4>, element5: Chain<From, To5>, element6: Chain<From, To6>, element7: Chain<From, To7>, element8: Chain<From, To8>): Chain<From, [To1, To2, To3, To4, To5, To6, To7, To8]>;
export declare function combine<From, To1, To2, To3, To4, To5, To6, To7, To8, To9>(element1: Chain<From, To1>, element2: Chain<From, To2>, element3: Chain<From, To3>, element4: Chain<From, To4>, element5: Chain<From, To5>, element6: Chain<From, To6>, element7: Chain<From, To7>, element8: Chain<From, To8>, element9: Chain<From, To9>): Chain<From, [To1, To2, To3, To4, To5, To6, To7, To8, To9]>;
export declare function combine<From, To1, To2, To3, To4, To5, To6, To7, To8, To9, To10>(element1: Chain<From, To1>, element2: Chain<From, To2>, element3: Chain<From, To3>, element4: Chain<From, To4>, element5: Chain<From, To5>, element6: Chain<From, To6>, element7: Chain<From, To7>, element8: Chain<From, To8>, element9: Chain<From, To9>, element10: Chain<From, To10>): Chain<From, [To1, To2, To3, To4, To5, To6, To7, To8, To9, To10]>;
import type { SyncChain, AsyncChain, WeakChain, AsyncWeakChain } from "./types";
export interface CombineCall {
<From, To1 = never, To2 = never, To3 = never, To4 = never, To5 = never, To6 = never, To7 = never, To8 = never, To9 = never, To10 = never, To11 = never, To12 = never, To13 = never, To14 = never, To15 = never, To16 = never, To17 = never, To18 = never, To19 = never, To20 = never>(element1?: SyncChain<From, To1>, element2?: SyncChain<From, To2>, element3?: SyncChain<From, To3>, element4?: SyncChain<From, To4>, element5?: SyncChain<From, To5>, element6?: SyncChain<From, To6>, element7?: SyncChain<From, To7>, element8?: SyncChain<From, To8>, element9?: SyncChain<From, To9>, element10?: SyncChain<From, To10>, element11?: SyncChain<From, To11>, element12?: SyncChain<From, To12>, element13?: SyncChain<From, To13>, element14?: SyncChain<From, To14>, element15?: SyncChain<From, To15>, element16?: SyncChain<From, To16>, element17?: SyncChain<From, To17>, element18?: SyncChain<From, To18>, element19?: SyncChain<From, To19>, element20?: SyncChain<From, To20>): SyncChain<From, [To1, To2, To3, To4, To5, To6, To7, To8, To9, To10, To11, To12, To13, To14, To15, To16, To17, To18, To19, To20]>;
<From, To1 = never, To2 = never, To3 = never, To4 = never, To5 = never, To6 = never, To7 = never, To8 = never, To9 = never, To10 = never, To11 = never, To12 = never, To13 = never, To14 = never, To15 = never, To16 = never, To17 = never, To18 = never, To19 = never, To20 = never>(element1?: AsyncChain<From, To1>, element2?: AsyncChain<From, To2>, element3?: AsyncChain<From, To3>, element4?: AsyncChain<From, To4>, element5?: AsyncChain<From, To5>, element6?: AsyncChain<From, To6>, element7?: AsyncChain<From, To7>, element8?: AsyncChain<From, To8>, element9?: AsyncChain<From, To9>, element10?: AsyncChain<From, To10>, element11?: AsyncChain<From, To11>, element12?: AsyncChain<From, To12>, element13?: AsyncChain<From, To13>, element14?: AsyncChain<From, To14>, element15?: AsyncChain<From, To15>, element16?: AsyncChain<From, To16>, element17?: AsyncChain<From, To17>, element18?: AsyncChain<From, To18>, element19?: AsyncChain<From, To19>, element20?: AsyncChain<From, To20>): AsyncChain<From, [To1, To2, To3, To4, To5, To6, To7, To8, To9, To10, To11, To12, To13, To14, To15, To16, To17, To18, To19, To20]>;
<From, To1 = never, To2 = never, To3 = never, To4 = never, To5 = never, To6 = never, To7 = never, To8 = never, To9 = never, To10 = never, To11 = never, To12 = never, To13 = never, To14 = never, To15 = never, To16 = never, To17 = never, To18 = never, To19 = never, To20 = never>(element1?: WeakChain<From, To1>, element2?: WeakChain<From, To2>, element3?: WeakChain<From, To3>, element4?: WeakChain<From, To4>, element5?: WeakChain<From, To5>, element6?: WeakChain<From, To6>, element7?: WeakChain<From, To7>, element8?: WeakChain<From, To8>, element9?: WeakChain<From, To9>, element10?: WeakChain<From, To10>, element11?: WeakChain<From, To11>, element12?: WeakChain<From, To12>, element13?: WeakChain<From, To13>, element14?: WeakChain<From, To14>, element15?: WeakChain<From, To15>, element16?: WeakChain<From, To16>, element17?: WeakChain<From, To17>, element18?: WeakChain<From, To18>, element19?: WeakChain<From, To19>, element20?: WeakChain<From, To20>): WeakChain<From, [To1, To2, To3, To4, To5, To6, To7, To8, To9, To10, To11, To12, To13, To14, To15, To16, To17, To18, To19, To20]>;
<From, To1 = never, To2 = never, To3 = never, To4 = never, To5 = never, To6 = never, To7 = never, To8 = never, To9 = never, To10 = never, To11 = never, To12 = never, To13 = never, To14 = never, To15 = never, To16 = never, To17 = never, To18 = never, To19 = never, To20 = never>(element1?: AsyncWeakChain<From, To1>, element2?: AsyncWeakChain<From, To2>, element3?: AsyncWeakChain<From, To3>, element4?: AsyncWeakChain<From, To4>, element5?: AsyncWeakChain<From, To5>, element6?: AsyncWeakChain<From, To6>, element7?: AsyncWeakChain<From, To7>, element8?: AsyncWeakChain<From, To8>, element9?: AsyncWeakChain<From, To9>, element10?: AsyncWeakChain<From, To10>, element11?: AsyncWeakChain<From, To11>, element12?: AsyncWeakChain<From, To12>, element13?: AsyncWeakChain<From, To13>, element14?: AsyncWeakChain<From, To14>, element15?: AsyncWeakChain<From, To15>, element16?: AsyncWeakChain<From, To16>, element17?: AsyncWeakChain<From, To17>, element18?: AsyncWeakChain<From, To18>, element19?: AsyncWeakChain<From, To19>, element20?: AsyncWeakChain<From, To20>): AsyncWeakChain<From, [To1, To2, To3, To4, To5, To6, To7, To8, To9, To10, To11, To12, To13, To14, To15, To16, To17, To18, To19, To20]>;
}
export declare const combine: CombineCall;
//# sourceMappingURL=combine.d.ts.map
import { execute } from "./util";
export function combine(...listens) {
// @ts-expect-error
export const combine = (...listens) => {
if (listens.length === 0) {
return (resolve, value) => resolve([value]);
}
return (resolve, parameter, context) => {
return (resolve, parameter, context, status) => {
for (let i = 0; i < listens.length; i++) {

@@ -29,3 +30,3 @@ if (!context[i]) {

};
const unsubscribe = listens.map((listener, i) => listener(value => updateItem(value, i), parameter, context[i]));
const unsubscribe = listens.map((listener, i) => listener(value => updateItem(value, i), parameter, context[i], status));
updateReady = true;

@@ -35,2 +36,2 @@ pendingCleanup = resolve(values);

};
}
};

@@ -1,5 +0,5 @@

import type { Chain, FunctionVoid } from "./types";
type ConnectCall = <V1, V2 = V1, V3 = V2, V4 = V3, V5 = V4, V6 = V5, V7 = V6, V8 = V7, V9 = V8, V10 = V9, V11 = V10, V12 = V11, V13 = V12, V14 = V13, V15 = V14, V16 = V15, V17 = V16, V18 = V17, V19 = V18, V20 = V19>(element1: Chain<V1, V2>, element2?: Chain<V2, V3>, element3?: Chain<V3, V4>, element4?: Chain<V4, V5>, element5?: Chain<V5, V6>, element6?: Chain<V6, V7>, element7?: Chain<V7, V8>, element8?: Chain<V8, V9>, element9?: Chain<V9, V10>, element10?: Chain<V10, V11>, element11?: Chain<V11, V12>, element12?: Chain<V12, V13>, element13?: Chain<V13, V14>, element14?: Chain<V14, V15>, element15?: Chain<V15, V16>, element16?: Chain<V16, V17>, element17?: Chain<V17, V18>, element18?: Chain<V18, V19>, element19?: Chain<V19, V20>) => FunctionVoid;
import type { AnyChain, FunctionVoid } from "./types";
type ConnectCall = <V1, V2 = V1, V3 = V2, V4 = V3, V5 = V4, V6 = V5, V7 = V6, V8 = V7, V9 = V8, V10 = V9, V11 = V10, V12 = V11, V13 = V12, V14 = V13, V15 = V14, V16 = V15, V17 = V16, V18 = V17, V19 = V18, V20 = V19>(element1: AnyChain<V1, V2>, element2?: AnyChain<V2, V3>, element3?: AnyChain<V3, V4>, element4?: AnyChain<V4, V5>, element5?: AnyChain<V5, V6>, element6?: AnyChain<V6, V7>, element7?: AnyChain<V7, V8>, element8?: AnyChain<V8, V9>, element9?: AnyChain<V9, V10>, element10?: AnyChain<V10, V11>, element11?: AnyChain<V11, V12>, element12?: AnyChain<V12, V13>, element13?: AnyChain<V13, V14>, element14?: AnyChain<V14, V15>, element15?: AnyChain<V15, V16>, element16?: AnyChain<V16, V17>, element17?: AnyChain<V17, V18>, element18?: AnyChain<V18, V19>, element19?: AnyChain<V19, V20>) => FunctionVoid;
export declare const connect: ConnectCall;
export {};
//# sourceMappingURL=connect.d.ts.map

@@ -6,4 +6,5 @@ import { chain } from "./chain";

const chained = chain(listen1, ...additionalListeners);
const unsubscribe = chained(() => { }, undefined, {});
const status = { is: 'sync' };
const unsubscribe = chained(() => { }, undefined, {}, status);
return () => { execute(unsubscribe, true); };
};

@@ -1,26 +0,9 @@

import type { Chain } from './types';
import type { Chain, SyncChain, AsyncChain, WeakChain, AsyncWeakChain } from './types';
export interface EachCall {
<V>(): Chain<V[]>;
<V1, V2>(element1: Chain<V1, V2>): Chain<V1[], V2[]>;
<V1, V2, V3>(element1: Chain<V1, V2>, element2: Chain<V2, V3>): Chain<V1[], V3[]>;
<V1, V2, V3, V4>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>): Chain<V1[], V4[]>;
<V1, V2, V3, V4, V5>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>): Chain<V1[], V5[]>;
<V1, V2, V3, V4, V5, V6>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>): Chain<V1[], V6[]>;
<V1, V2, V3, V4, V5, V6, V7>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>): Chain<V1[], V7[]>;
<V1, V2, V3, V4, V5, V6, V7, V8>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>): Chain<V1[], V8[]>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>): Chain<V1[], V9[]>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>): Chain<V1[], V10[]>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>, element10: Chain<V10, V11>): Chain<V1[], V11[]>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>, element10: Chain<V10, V11>, element11: Chain<V11, V12>): Chain<V1[], V12[]>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>, element10: Chain<V10, V11>, element11: Chain<V11, V12>, element12: Chain<V12, V13>): Chain<V1[], V13[]>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>, element10: Chain<V10, V11>, element11: Chain<V11, V12>, element12: Chain<V12, V13>, element13: Chain<V13, V14>): Chain<V1[], V14[]>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>, element10: Chain<V10, V11>, element11: Chain<V11, V12>, element12: Chain<V12, V13>, element13: Chain<V13, V14>, element14: Chain<V14, V15>): Chain<V1[], V15[]>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>, element10: Chain<V10, V11>, element11: Chain<V11, V12>, element12: Chain<V12, V13>, element13: Chain<V13, V14>, element14: Chain<V14, V15>, element15: Chain<V15, V16>): Chain<V1[], V16[]>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>, element10: Chain<V10, V11>, element11: Chain<V11, V12>, element12: Chain<V12, V13>, element13: Chain<V13, V14>, element14: Chain<V14, V15>, element15: Chain<V15, V16>, element16: Chain<V16, V17>): Chain<V1[], V17[]>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>, element10: Chain<V10, V11>, element11: Chain<V11, V12>, element12: Chain<V12, V13>, element13: Chain<V13, V14>, element14: Chain<V14, V15>, element15: Chain<V15, V16>, element16: Chain<V16, V17>, element17: Chain<V17, V18>): Chain<V1[], V18[]>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>, element10: Chain<V10, V11>, element11: Chain<V11, V12>, element12: Chain<V12, V13>, element13: Chain<V13, V14>, element14: Chain<V14, V15>, element15: Chain<V15, V16>, element16: Chain<V16, V17>, element17: Chain<V17, V18>, element18: Chain<V18, V19>): Chain<V1[], V19[]>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>, element10: Chain<V10, V11>, element11: Chain<V11, V12>, element12: Chain<V12, V13>, element13: Chain<V13, V14>, element14: Chain<V14, V15>, element15: Chain<V15, V16>, element16: Chain<V16, V17>, element17: Chain<V17, V18>, element18: Chain<V18, V19>, element19: Chain<V19, V20>): Chain<V1[], V20[]>;
(first: Chain<unknown, unknown>, ...elements: Chain<unknown, unknown>[]): Chain<unknown[], unknown[]>;
<V1, V2 = V1, V3 = V2, V4 = V3, V5 = V4, V6 = V5, V7 = V6, V8 = V7, V9 = V8, V10 = V9, V11 = V10, V12 = V11, V13 = V12, V14 = V13, V15 = V14, V16 = V15, V17 = V16, V18 = V17, V19 = V18, V20 = V19>(element1: Chain<V1, V2, 'sync'>, element2?: Chain<V2, V3, 'sync'>, element3?: Chain<V3, V4, 'sync'>, element4?: Chain<V4, V5, 'sync'>, element5?: Chain<V5, V6, 'sync'>, element6?: Chain<V6, V7, 'sync'>, element7?: Chain<V7, V8, 'sync'>, element8?: Chain<V8, V9, 'sync'>, element9?: Chain<V9, V10, 'sync'>, element10?: Chain<V10, V11, 'sync'>, element11?: Chain<V11, V12, 'sync'>, element12?: Chain<V12, V13, 'sync'>, element13?: Chain<V13, V14, 'sync'>, element14?: Chain<V14, V15, 'sync'>, element15?: Chain<V15, V16, 'sync'>, element16?: Chain<V16, V17, 'sync'>, element17?: Chain<V17, V18, 'sync'>, element18?: Chain<V18, V19, 'sync'>, element19?: Chain<V19, V20, 'sync'>): SyncChain<V1[], V20[]>;
<V1, V2 = V1, V3 = V2, V4 = V3, V5 = V4, V6 = V5, V7 = V6, V8 = V7, V9 = V8, V10 = V9, V11 = V10, V12 = V11, V13 = V12, V14 = V13, V15 = V14, V16 = V15, V17 = V16, V18 = V17, V19 = V18, V20 = V19>(element1: Chain<V1, V2, 'async'>, element2?: Chain<V2, V3, 'async'>, element3?: Chain<V3, V4, 'async'>, element4?: Chain<V4, V5, 'async'>, element5?: Chain<V5, V6, 'async'>, element6?: Chain<V6, V7, 'async'>, element7?: Chain<V7, V8, 'async'>, element8?: Chain<V8, V9, 'async'>, element9?: Chain<V9, V10, 'async'>, element10?: Chain<V10, V11, 'async'>, element11?: Chain<V11, V12, 'async'>, element12?: Chain<V12, V13, 'async'>, element13?: Chain<V13, V14, 'async'>, element14?: Chain<V14, V15, 'async'>, element15?: Chain<V15, V16, 'async'>, element16?: Chain<V16, V17, 'async'>, element17?: Chain<V17, V18, 'async'>, element18?: Chain<V18, V19, 'async'>, element19?: Chain<V19, V20, 'async'>): AsyncChain<V1[], V20[]>;
<V1, V2 = V1, V3 = V2, V4 = V3, V5 = V4, V6 = V5, V7 = V6, V8 = V7, V9 = V8, V10 = V9, V11 = V10, V12 = V11, V13 = V12, V14 = V13, V15 = V14, V16 = V15, V17 = V16, V18 = V17, V19 = V18, V20 = V19>(element1: Chain<V1, V2, 'incomplete'>, element2?: Chain<V2, V3, 'incomplete'>, element3?: Chain<V3, V4, 'incomplete'>, element4?: Chain<V4, V5, 'incomplete'>, element5?: Chain<V5, V6, 'incomplete'>, element6?: Chain<V6, V7, 'incomplete'>, element7?: Chain<V7, V8, 'incomplete'>, element8?: Chain<V8, V9, 'incomplete'>, element9?: Chain<V9, V10, 'incomplete'>, element10?: Chain<V10, V11, 'incomplete'>, element11?: Chain<V11, V12, 'incomplete'>, element12?: Chain<V12, V13, 'incomplete'>, element13?: Chain<V13, V14, 'incomplete'>, element14?: Chain<V14, V15, 'incomplete'>, element15?: Chain<V15, V16, 'incomplete'>, element16?: Chain<V16, V17, 'incomplete'>, element17?: Chain<V17, V18, 'incomplete'>, element18?: Chain<V18, V19, 'incomplete'>, element19?: Chain<V19, V20, 'incomplete'>): WeakChain<V1[], V20[]>;
<V1, V2 = V1, V3 = V2, V4 = V3, V5 = V4, V6 = V5, V7 = V6, V8 = V7, V9 = V8, V10 = V9, V11 = V10, V12 = V11, V13 = V12, V14 = V13, V15 = V14, V16 = V15, V17 = V16, V18 = V17, V19 = V18, V20 = V19>(element1: Chain<V1, V2, 'async-incomplete'>, element2?: Chain<V2, V3, 'async-incomplete'>, element3?: Chain<V3, V4, 'async-incomplete'>, element4?: Chain<V4, V5, 'async-incomplete'>, element5?: Chain<V5, V6, 'async-incomplete'>, element6?: Chain<V6, V7, 'async-incomplete'>, element7?: Chain<V7, V8, 'async-incomplete'>, element8?: Chain<V8, V9, 'async-incomplete'>, element9?: Chain<V9, V10, 'async-incomplete'>, element10?: Chain<V10, V11, 'async-incomplete'>, element11?: Chain<V11, V12, 'async-incomplete'>, element12?: Chain<V12, V13, 'async-incomplete'>, element13?: Chain<V13, V14, 'async-incomplete'>, element14?: Chain<V14, V15, 'async-incomplete'>, element15?: Chain<V15, V16, 'async-incomplete'>, element16?: Chain<V16, V17, 'async-incomplete'>, element17?: Chain<V17, V18, 'async-incomplete'>, element18?: Chain<V18, V19, 'async-incomplete'>, element19?: Chain<V19, V20, 'async-incomplete'>): AsyncWeakChain<V1[], V20[]>;
}
export declare const each: EachCall;
//# sourceMappingURL=each.d.ts.map
import { chain } from './chain';
import { through } from './tools';
import { execute } from './util';
// @ts-expect-error
export const each = (listen1, ...additionalListeners) => {

@@ -9,3 +10,3 @@ if (!listen1) {

const listen = chain(listen1, ...additionalListeners);
return (resolve, parameters, context) => {
return (resolve, parameters, context, status) => {
if (!parameters) {

@@ -37,3 +38,3 @@ return resolve(parameters);

};
const unsubscribe = parameters.map((item, i) => listen((value) => updateItem(value, i), item, context[i]));
const unsubscribe = parameters.map((item, i) => listen((value) => updateItem(value, i), item, context[i], status));
updateReady = true;

@@ -40,0 +41,0 @@ pendingCleanup = resolve(values);

@@ -1,4 +0,4 @@

import type { NextFn, Chain } from './types';
export declare function effect<V>(sideEffect: NextFn<V>): Chain<V>;
export declare const log: <V>(message?: string) => Chain<V>;
import type { NextFn, SyncChain } from './types';
export declare function effect<V>(sideEffect: NextFn<V>): SyncChain<V>;
export declare const log: <V>(message?: string) => SyncChain<V>;
//# sourceMappingURL=effect.d.ts.map

@@ -1,11 +0,16 @@

import type { Chain, Function1 } from "./types";
type EvaluateSyncCall = <V1, V2 = V1, V3 = V2, V4 = V3, V5 = V4, V6 = V5, V7 = V6, V8 = V7, V9 = V8, V10 = V9, V11 = V10, V12 = V11, V13 = V12, V14 = V13, V15 = V14, V16 = V15, V17 = V16, V18 = V17, V19 = V18, V20 = V19>(element1: Chain<V1, V2>, element2?: Chain<V2, V3>, element3?: Chain<V3, V4>, element4?: Chain<V4, V5>, element5?: Chain<V5, V6>, element6?: Chain<V6, V7>, element7?: Chain<V7, V8>, element8?: Chain<V8, V9>, element9?: Chain<V9, V10>, element10?: Chain<V10, V11>, element11?: Chain<V11, V12>, element12?: Chain<V12, V13>, element13?: Chain<V13, V14>, element14?: Chain<V14, V15>, element15?: Chain<V15, V16>, element16?: Chain<V16, V17>, element17?: Chain<V17, V18>, element18?: Chain<V18, V19>, element19?: Chain<V19, V20>) => Chain<V1, V20 | Error>;
export declare const evaluateSync: EvaluateSyncCall;
type EvaluateAsyncCall = <V1, V2 = V1, V3 = V2, V4 = V3, V5 = V4, V6 = V5, V7 = V6, V8 = V7, V9 = V8, V10 = V9, V11 = V10, V12 = V11, V13 = V12, V14 = V13, V15 = V14, V16 = V15, V17 = V16, V18 = V17, V19 = V18, V20 = V19>(element1: Chain<V1, V2>, element2?: Chain<V2, V3>, element3?: Chain<V3, V4>, element4?: Chain<V4, V5>, element5?: Chain<V5, V6>, element6?: Chain<V6, V7>, element7?: Chain<V7, V8>, element8?: Chain<V8, V9>, element9?: Chain<V9, V10>, element10?: Chain<V10, V11>, element11?: Chain<V11, V12>, element12?: Chain<V12, V13>, element13?: Chain<V13, V14>, element14?: Chain<V14, V15>, element15?: Chain<V15, V16>, element16?: Chain<V16, V17>, element17?: Chain<V17, V18>, element18?: Chain<V18, V19>, element19?: Chain<V19, V20>) => Chain<V1, Promise<V20>>;
export declare const evaluateAsync: EvaluateAsyncCall;
type ToFunctionSyncCall = <V1, V2 = V1, V3 = V2, V4 = V3, V5 = V4, V6 = V5, V7 = V6, V8 = V7, V9 = V8, V10 = V9, V11 = V10, V12 = V11, V13 = V12, V14 = V13, V15 = V14, V16 = V15, V17 = V16, V18 = V17, V19 = V18, V20 = V19>(element1: Chain<V1, V2>, element2?: Chain<V2, V3>, element3?: Chain<V3, V4>, element4?: Chain<V4, V5>, element5?: Chain<V5, V6>, element6?: Chain<V6, V7>, element7?: Chain<V7, V8>, element8?: Chain<V8, V9>, element9?: Chain<V9, V10>, element10?: Chain<V10, V11>, element11?: Chain<V11, V12>, element12?: Chain<V12, V13>, element13?: Chain<V13, V14>, element14?: Chain<V14, V15>, element15?: Chain<V15, V16>, element16?: Chain<V16, V17>, element17?: Chain<V17, V18>, element18?: Chain<V18, V19>, element19?: Chain<V19, V20>) => Function1<V1, V20 | Error>;
export declare const toFunctionSync: ToFunctionSyncCall;
type ToFunctionAsyncCall = <V1, V2 = V1, V3 = V2, V4 = V3, V5 = V4, V6 = V5, V7 = V6, V8 = V7, V9 = V8, V10 = V9, V11 = V10, V12 = V11, V13 = V12, V14 = V13, V15 = V14, V16 = V15, V17 = V16, V18 = V17, V19 = V18, V20 = V19>(element1: Chain<V1, V2>, element2?: Chain<V2, V3>, element3?: Chain<V3, V4>, element4?: Chain<V4, V5>, element5?: Chain<V5, V6>, element6?: Chain<V6, V7>, element7?: Chain<V7, V8>, element8?: Chain<V8, V9>, element9?: Chain<V9, V10>, element10?: Chain<V10, V11>, element11?: Chain<V11, V12>, element12?: Chain<V12, V13>, element13?: Chain<V13, V14>, element14?: Chain<V14, V15>, element15?: Chain<V15, V16>, element16?: Chain<V16, V17>, element17?: Chain<V17, V18>, element18?: Chain<V18, V19>, element19?: Chain<V19, V20>) => Function1<V1, Promise<V20>>;
export declare const toFunctionAsync: ToFunctionAsyncCall;
export {};
import type { SyncChain, AsyncChain, WeakChain, AsyncWeakChain, Function1 } from "./types";
export interface EvaluateCall {
<V1, V2 = V1, V3 = V2, V4 = V3, V5 = V4, V6 = V5, V7 = V6, V8 = V7, V9 = V8, V10 = V9, V11 = V10, V12 = V11, V13 = V12, V14 = V13, V15 = V14, V16 = V15, V17 = V16, V18 = V17, V19 = V18, V20 = V19>(element1: SyncChain<V1, V2>, element2?: SyncChain<V2, V3>, element3?: SyncChain<V3, V4>, element4?: SyncChain<V4, V5>, element5?: SyncChain<V5, V6>, element6?: SyncChain<V6, V7>, element7?: SyncChain<V7, V8>, element8?: SyncChain<V8, V9>, element9?: SyncChain<V9, V10>, element10?: SyncChain<V10, V11>, element11?: SyncChain<V11, V12>, element12?: SyncChain<V12, V13>, element13?: SyncChain<V13, V14>, element14?: SyncChain<V14, V15>, element15?: SyncChain<V15, V16>, element16?: SyncChain<V16, V17>, element17?: SyncChain<V17, V18>, element18?: SyncChain<V18, V19>, element19?: SyncChain<V19, V20>): V20;
<V1, V2 = V1, V3 = V2, V4 = V3, V5 = V4, V6 = V5, V7 = V6, V8 = V7, V9 = V8, V10 = V9, V11 = V10, V12 = V11, V13 = V12, V14 = V13, V15 = V14, V16 = V15, V17 = V16, V18 = V17, V19 = V18, V20 = V19>(element1: AsyncChain<V1, V2>, element2?: AsyncChain<V2, V3>, element3?: AsyncChain<V3, V4>, element4?: AsyncChain<V4, V5>, element5?: AsyncChain<V5, V6>, element6?: AsyncChain<V6, V7>, element7?: AsyncChain<V7, V8>, element8?: AsyncChain<V8, V9>, element9?: AsyncChain<V9, V10>, element10?: AsyncChain<V10, V11>, element11?: AsyncChain<V11, V12>, element12?: AsyncChain<V12, V13>, element13?: AsyncChain<V13, V14>, element14?: AsyncChain<V14, V15>, element15?: AsyncChain<V15, V16>, element16?: AsyncChain<V16, V17>, element17?: AsyncChain<V17, V18>, element18?: AsyncChain<V18, V19>, element19?: AsyncChain<V19, V20>): Promise<V20>;
<V1, V2 = V1, V3 = V2, V4 = V3, V5 = V4, V6 = V5, V7 = V6, V8 = V7, V9 = V8, V10 = V9, V11 = V10, V12 = V11, V13 = V12, V14 = V13, V15 = V14, V16 = V15, V17 = V16, V18 = V17, V19 = V18, V20 = V19>(element1: WeakChain<V1, V2>, element2?: WeakChain<V2, V3>, element3?: WeakChain<V3, V4>, element4?: WeakChain<V4, V5>, element5?: WeakChain<V5, V6>, element6?: WeakChain<V6, V7>, element7?: WeakChain<V7, V8>, element8?: WeakChain<V8, V9>, element9?: WeakChain<V9, V10>, element10?: WeakChain<V10, V11>, element11?: WeakChain<V11, V12>, element12?: WeakChain<V12, V13>, element13?: WeakChain<V13, V14>, element14?: WeakChain<V14, V15>, element15?: WeakChain<V15, V16>, element16?: WeakChain<V16, V17>, element17?: WeakChain<V17, V18>, element18?: WeakChain<V18, V19>, element19?: WeakChain<V19, V20>): V20 | undefined;
<V1, V2 = V1, V3 = V2, V4 = V3, V5 = V4, V6 = V5, V7 = V6, V8 = V7, V9 = V8, V10 = V9, V11 = V10, V12 = V11, V13 = V12, V14 = V13, V15 = V14, V16 = V15, V17 = V16, V18 = V17, V19 = V18, V20 = V19>(element1: AsyncWeakChain<V1, V2>, element2?: AsyncWeakChain<V2, V3>, element3?: AsyncWeakChain<V3, V4>, element4?: AsyncWeakChain<V4, V5>, element5?: AsyncWeakChain<V5, V6>, element6?: AsyncWeakChain<V6, V7>, element7?: AsyncWeakChain<V7, V8>, element8?: AsyncWeakChain<V8, V9>, element9?: AsyncWeakChain<V9, V10>, element10?: AsyncWeakChain<V10, V11>, element11?: AsyncWeakChain<V11, V12>, element12?: AsyncWeakChain<V12, V13>, element13?: AsyncWeakChain<V13, V14>, element14?: AsyncWeakChain<V14, V15>, element15?: AsyncWeakChain<V15, V16>, element16?: AsyncWeakChain<V16, V17>, element17?: AsyncWeakChain<V17, V18>, element18?: AsyncWeakChain<V18, V19>, element19?: AsyncWeakChain<V19, V20>): undefined | Promise<V20 | undefined>;
}
export declare const evaluate: EvaluateCall;
export interface FunctionCall {
<V1, V2 = V1, V3 = V2, V4 = V3, V5 = V4, V6 = V5, V7 = V6, V8 = V7, V9 = V8, V10 = V9, V11 = V10, V12 = V11, V13 = V12, V14 = V13, V15 = V14, V16 = V15, V17 = V16, V18 = V17, V19 = V18, V20 = V19>(element1: SyncChain<V1, V2>, element2?: SyncChain<V2, V3>, element3?: SyncChain<V3, V4>, element4?: SyncChain<V4, V5>, element5?: SyncChain<V5, V6>, element6?: SyncChain<V6, V7>, element7?: SyncChain<V7, V8>, element8?: SyncChain<V8, V9>, element9?: SyncChain<V9, V10>, element10?: SyncChain<V10, V11>, element11?: SyncChain<V11, V12>, element12?: SyncChain<V12, V13>, element13?: SyncChain<V13, V14>, element14?: SyncChain<V14, V15>, element15?: SyncChain<V15, V16>, element16?: SyncChain<V16, V17>, element17?: SyncChain<V17, V18>, element18?: SyncChain<V18, V19>, element19?: SyncChain<V19, V20>): Function1<V1, V20>;
<V1, V2 = V1, V3 = V2, V4 = V3, V5 = V4, V6 = V5, V7 = V6, V8 = V7, V9 = V8, V10 = V9, V11 = V10, V12 = V11, V13 = V12, V14 = V13, V15 = V14, V16 = V15, V17 = V16, V18 = V17, V19 = V18, V20 = V19>(element1: AsyncChain<V1, V2>, element2?: AsyncChain<V2, V3>, element3?: AsyncChain<V3, V4>, element4?: AsyncChain<V4, V5>, element5?: AsyncChain<V5, V6>, element6?: AsyncChain<V6, V7>, element7?: AsyncChain<V7, V8>, element8?: AsyncChain<V8, V9>, element9?: AsyncChain<V9, V10>, element10?: AsyncChain<V10, V11>, element11?: AsyncChain<V11, V12>, element12?: AsyncChain<V12, V13>, element13?: AsyncChain<V13, V14>, element14?: AsyncChain<V14, V15>, element15?: AsyncChain<V15, V16>, element16?: AsyncChain<V16, V17>, element17?: AsyncChain<V17, V18>, element18?: AsyncChain<V18, V19>, element19?: AsyncChain<V19, V20>): Function1<V1, Promise<V20>>;
<V1, V2 = V1, V3 = V2, V4 = V3, V5 = V4, V6 = V5, V7 = V6, V8 = V7, V9 = V8, V10 = V9, V11 = V10, V12 = V11, V13 = V12, V14 = V13, V15 = V14, V16 = V15, V17 = V16, V18 = V17, V19 = V18, V20 = V19>(element1: WeakChain<V1, V2>, element2?: WeakChain<V2, V3>, element3?: WeakChain<V3, V4>, element4?: WeakChain<V4, V5>, element5?: WeakChain<V5, V6>, element6?: WeakChain<V6, V7>, element7?: WeakChain<V7, V8>, element8?: WeakChain<V8, V9>, element9?: WeakChain<V9, V10>, element10?: WeakChain<V10, V11>, element11?: WeakChain<V11, V12>, element12?: WeakChain<V12, V13>, element13?: WeakChain<V13, V14>, element14?: WeakChain<V14, V15>, element15?: WeakChain<V15, V16>, element16?: WeakChain<V16, V17>, element17?: WeakChain<V17, V18>, element18?: WeakChain<V18, V19>, element19?: WeakChain<V19, V20>): Function1<V1, V20 | undefined>;
<V1, V2 = V1, V3 = V2, V4 = V3, V5 = V4, V6 = V5, V7 = V6, V8 = V7, V9 = V8, V10 = V9, V11 = V10, V12 = V11, V13 = V12, V14 = V13, V15 = V14, V16 = V15, V17 = V16, V18 = V17, V19 = V18, V20 = V19>(element1: AsyncWeakChain<V1, V2>, element2?: AsyncWeakChain<V2, V3>, element3?: AsyncWeakChain<V3, V4>, element4?: AsyncWeakChain<V4, V5>, element5?: AsyncWeakChain<V5, V6>, element6?: AsyncWeakChain<V6, V7>, element7?: AsyncWeakChain<V7, V8>, element8?: AsyncWeakChain<V8, V9>, element9?: AsyncWeakChain<V9, V10>, element10?: AsyncWeakChain<V10, V11>, element11?: AsyncWeakChain<V11, V12>, element12?: AsyncWeakChain<V12, V13>, element13?: AsyncWeakChain<V13, V14>, element14?: AsyncWeakChain<V14, V15>, element15?: AsyncWeakChain<V15, V16>, element16?: AsyncWeakChain<V16, V17>, element17?: AsyncWeakChain<V17, V18>, element18?: AsyncWeakChain<V18, V19>, element19?: AsyncWeakChain<V19, V20>): Function1<V1, undefined | Promise<V20 | undefined>>;
}
export declare const toFunction: FunctionCall;
//# sourceMappingURL=evaluate.d.ts.map

@@ -5,32 +5,28 @@ import { chain } from "./chain";

// @ts-expect-error
export const evaluateSync = (listen1, ...additionalListeners) => {
export const evaluate = (listen1, ...additionalListeners) => {
const chained = chain(listen1, ...additionalListeners);
let currentValue = Error("Chain did not complete");
const unsubscribe = chained(value => {
currentValue = value;
}, undefined, {});
execute(unsubscribe);
return currentValue;
};
// @ts-expect-error
export const evaluateAsync = (listen1, ...additionalListeners) => {
const chained = chain(listen1, ...additionalListeners);
let unsubscribe;
const result = new Promise(resolve => {
const status = { is: 'sync' };
let result = undefined;
const promise = new Promise(resolve => {
unsubscribe = chained(value => {
result = value;
resolve(value);
}, undefined, {});
}, undefined, {}, status);
});
result.then(() => {
if (status.is === 'sync' || status.is === 'incomplete') {
execute(unsubscribe);
});
return result;
return result;
}
if (status.is === 'async') {
promise.then(() => {
execute(unsubscribe);
});
return promise;
}
console.error('Invalid status', status);
};
// @ts-expect-error
export const toFunctionSync = (listen1, ...additionalListeners) => {
return (value) => evaluateSync(emit(value), listen1, ...additionalListeners);
export const toFunction = (listen1, ...additionalListeners) => {
return (value) => evaluate(emit(value), listen1, ...additionalListeners);
};
// @ts-expect-error
export const toFunctionAsync = (listen1, ...additionalListeners) => {
return (value) => evaluateAsync(emit(value), listen1, ...additionalListeners);
};

@@ -1,6 +0,6 @@

import { Chain } from './types';
import { AsyncChain } from './types';
export interface HasAddEventListener {
addEventListener(event: string, listener: (event: Event) => void): void;
}
export declare const listenToEvent: <Target extends void | HasAddEventListener, EventName extends "dblclick" | "mousedown" | "mouseenter" | "mouseleave" | "mousemove" | "mouseout" | "mouseover" | "mouseup" | "click" | "contextmenu" | "auxclick" | "keydown" | "keypress" | "keyup" | "beforeinput" | "input" | "focus" | "blur" | "focusin" | "focusout" | "change" | "submit" | "reset" | "resize" | "scroll" | "wheel" | "drag" | "dragend" | "dragenter" | "dragleave" | "dragover" | "dragstart" | "drop" | "animationstart" | "animationend" | "animationiteration" | "transitionend" | "toggle" | "error" | "load" | "unload" | "loadeddata" | "loadedmetadata" | "canplay" | "canplaythrough" | "play" | "pause" | "seeked" | "seeking" | "timeupdate" | "ended" | "volumechange" | "ratechange" | "durationchange" | "stalled" | "suspend" | "emptied" | "progress" | "abort">(event: EventName) => Chain<Target, InferEventType<EventName>>;
export declare const listenToEvent: <Target extends void | HasAddEventListener, EventName extends string>(event: EventName) => AsyncChain<Target, InferEventType<EventName>>;
type InferEventType<Name extends EventList['name']> = (EventList & {

@@ -94,4 +94,7 @@ name: Name;

type: UIEvent;
} | {
name: string;
type: CustomEvent;
};
export {};
//# sourceMappingURL=event.d.ts.map
import { execute } from './util';
export const listenToEvent = (event) => {
return (resolve, target) => {
return (next, target) => {
let cleanup;
const listener = (e) => {
execute(cleanup);
cleanup = resolve(e);
cleanup = next(e);
};

@@ -9,0 +9,0 @@ (target ?? window).addEventListener(event, listener);

@@ -1,4 +0,14 @@

import { Function1, Chain } from "./types";
type IfCallFallback<Range, Fallback> = <V1 extends Range, V2, V3 = V2, V4 = V3, V5 = V4, V6 = V5, V7 = V6, V8 = V7, V9 = V8, V10 = V9, V11 = V10, V12 = V11, V13 = V12, V14 = V13, V15 = V14, V16 = V15, V17 = V16, V18 = V17, V19 = V18, V20 = V19>(element1?: Chain<V1, V2>, element2?: Chain<V2, V3>, element3?: Chain<V3, V4>, element4?: Chain<V4, V5>, element5?: Chain<V5, V6>, element6?: Chain<V6, V7>, element7?: Chain<V7, V8>, element8?: Chain<V8, V9>, element9?: Chain<V9, V10>, element10?: Chain<V10, V11>, element11?: Chain<V11, V12>, element12?: Chain<V12, V13>, element13?: Chain<V13, V14>, element14?: Chain<V14, V15>, element15?: Chain<V15, V16>, element16?: Chain<V16, V17>, element17?: Chain<V17, V18>, element18?: Chain<V18, V19>, element19?: Chain<V19, V20>) => Chain<V1, Fallback | V20>;
type IfCall<Range> = <V1 extends Range, V2, V3 = V2, V4 = V3, V5 = V4, V6 = V5, V7 = V6, V8 = V7, V9 = V8, V10 = V9, V11 = V10, V12 = V11, V13 = V12, V14 = V13, V15 = V14, V16 = V15, V17 = V16, V18 = V17, V19 = V18, V20 = V19>(element1?: Chain<V1, V2>, element2?: Chain<V2, V3>, element3?: Chain<V3, V4>, element4?: Chain<V4, V5>, element5?: Chain<V5, V6>, element6?: Chain<V6, V7>, element7?: Chain<V7, V8>, element8?: Chain<V8, V9>, element9?: Chain<V9, V10>, element10?: Chain<V10, V11>, element11?: Chain<V11, V12>, element12?: Chain<V12, V13>, element13?: Chain<V13, V14>, element14?: Chain<V14, V15>, element15?: Chain<V15, V16>, element16?: Chain<V16, V17>, element17?: Chain<V17, V18>, element18?: Chain<V18, V19>, element19?: Chain<V19, V20>) => Chain<V1, V1 | V20>;
import { Function1, SyncChain, AsyncChain, WeakChain, AsyncWeakChain } from "./types";
export interface IfCallFallback<Range, Fallback> {
<V1 extends Range, V2, V3 = V2, V4 = V3, V5 = V4, V6 = V5, V7 = V6, V8 = V7, V9 = V8, V10 = V9, V11 = V10, V12 = V11, V13 = V12, V14 = V13, V15 = V14, V16 = V15, V17 = V16, V18 = V17, V19 = V18, V20 = V19>(element1?: SyncChain<V1, V2>, element2?: SyncChain<V2, V3>, element3?: SyncChain<V3, V4>, element4?: SyncChain<V4, V5>, element5?: SyncChain<V5, V6>, element6?: SyncChain<V6, V7>, element7?: SyncChain<V7, V8>, element8?: SyncChain<V8, V9>, element9?: SyncChain<V9, V10>, element10?: SyncChain<V10, V11>, element11?: SyncChain<V11, V12>, element12?: SyncChain<V12, V13>, element13?: SyncChain<V13, V14>, element14?: SyncChain<V14, V15>, element15?: SyncChain<V15, V16>, element16?: SyncChain<V16, V17>, element17?: SyncChain<V17, V18>, element18?: SyncChain<V18, V19>, element19?: SyncChain<V19, V20>): SyncChain<V1, Fallback | V20>;
<V1 extends Range, V2, V3 = V2, V4 = V3, V5 = V4, V6 = V5, V7 = V6, V8 = V7, V9 = V8, V10 = V9, V11 = V10, V12 = V11, V13 = V12, V14 = V13, V15 = V14, V16 = V15, V17 = V16, V18 = V17, V19 = V18, V20 = V19>(element1?: AsyncChain<V1, V2>, element2?: AsyncChain<V2, V3>, element3?: AsyncChain<V3, V4>, element4?: AsyncChain<V4, V5>, element5?: AsyncChain<V5, V6>, element6?: AsyncChain<V6, V7>, element7?: AsyncChain<V7, V8>, element8?: AsyncChain<V8, V9>, element9?: AsyncChain<V9, V10>, element10?: AsyncChain<V10, V11>, element11?: AsyncChain<V11, V12>, element12?: AsyncChain<V12, V13>, element13?: AsyncChain<V13, V14>, element14?: AsyncChain<V14, V15>, element15?: AsyncChain<V15, V16>, element16?: AsyncChain<V16, V17>, element17?: AsyncChain<V17, V18>, element18?: AsyncChain<V18, V19>, element19?: AsyncChain<V19, V20>): AsyncChain<V1, Fallback | V20>;
<V1 extends Range, V2, V3 = V2, V4 = V3, V5 = V4, V6 = V5, V7 = V6, V8 = V7, V9 = V8, V10 = V9, V11 = V10, V12 = V11, V13 = V12, V14 = V13, V15 = V14, V16 = V15, V17 = V16, V18 = V17, V19 = V18, V20 = V19>(element1?: WeakChain<V1, V2>, element2?: WeakChain<V2, V3>, element3?: WeakChain<V3, V4>, element4?: WeakChain<V4, V5>, element5?: WeakChain<V5, V6>, element6?: WeakChain<V6, V7>, element7?: WeakChain<V7, V8>, element8?: WeakChain<V8, V9>, element9?: WeakChain<V9, V10>, element10?: WeakChain<V10, V11>, element11?: WeakChain<V11, V12>, element12?: WeakChain<V12, V13>, element13?: WeakChain<V13, V14>, element14?: WeakChain<V14, V15>, element15?: WeakChain<V15, V16>, element16?: WeakChain<V16, V17>, element17?: WeakChain<V17, V18>, element18?: WeakChain<V18, V19>, element19?: WeakChain<V19, V20>): WeakChain<V1, Fallback | V20>;
<V1 extends Range, V2, V3 = V2, V4 = V3, V5 = V4, V6 = V5, V7 = V6, V8 = V7, V9 = V8, V10 = V9, V11 = V10, V12 = V11, V13 = V12, V14 = V13, V15 = V14, V16 = V15, V17 = V16, V18 = V17, V19 = V18, V20 = V19>(element1?: AsyncWeakChain<V1, V2>, element2?: AsyncWeakChain<V2, V3>, element3?: AsyncWeakChain<V3, V4>, element4?: AsyncWeakChain<V4, V5>, element5?: AsyncWeakChain<V5, V6>, element6?: AsyncWeakChain<V6, V7>, element7?: AsyncWeakChain<V7, V8>, element8?: AsyncWeakChain<V8, V9>, element9?: AsyncWeakChain<V9, V10>, element10?: AsyncWeakChain<V10, V11>, element11?: AsyncWeakChain<V11, V12>, element12?: AsyncWeakChain<V12, V13>, element13?: AsyncWeakChain<V13, V14>, element14?: AsyncWeakChain<V14, V15>, element15?: AsyncWeakChain<V15, V16>, element16?: AsyncWeakChain<V16, V17>, element17?: AsyncWeakChain<V17, V18>, element18?: AsyncWeakChain<V18, V19>, element19?: AsyncWeakChain<V19, V20>): AsyncWeakChain<V1, Fallback | V20>;
}
export interface IfCall<Range> {
<V1 extends Range, V2, V3 = V2, V4 = V3, V5 = V4, V6 = V5, V7 = V6, V8 = V7, V9 = V8, V10 = V9, V11 = V10, V12 = V11, V13 = V12, V14 = V13, V15 = V14, V16 = V15, V17 = V16, V18 = V17, V19 = V18, V20 = V19>(element1?: SyncChain<V1, V2>, element2?: SyncChain<V2, V3>, element3?: SyncChain<V3, V4>, element4?: SyncChain<V4, V5>, element5?: SyncChain<V5, V6>, element6?: SyncChain<V6, V7>, element7?: SyncChain<V7, V8>, element8?: SyncChain<V8, V9>, element9?: SyncChain<V9, V10>, element10?: SyncChain<V10, V11>, element11?: SyncChain<V11, V12>, element12?: SyncChain<V12, V13>, element13?: SyncChain<V13, V14>, element14?: SyncChain<V14, V15>, element15?: SyncChain<V15, V16>, element16?: SyncChain<V16, V17>, element17?: SyncChain<V17, V18>, element18?: SyncChain<V18, V19>, element19?: SyncChain<V19, V20>): SyncChain<V1, V1 | V20>;
<V1 extends Range, V2, V3 = V2, V4 = V3, V5 = V4, V6 = V5, V7 = V6, V8 = V7, V9 = V8, V10 = V9, V11 = V10, V12 = V11, V13 = V12, V14 = V13, V15 = V14, V16 = V15, V17 = V16, V18 = V17, V19 = V18, V20 = V19>(element1?: AsyncChain<V1, V2>, element2?: AsyncChain<V2, V3>, element3?: AsyncChain<V3, V4>, element4?: AsyncChain<V4, V5>, element5?: AsyncChain<V5, V6>, element6?: AsyncChain<V6, V7>, element7?: AsyncChain<V7, V8>, element8?: AsyncChain<V8, V9>, element9?: AsyncChain<V9, V10>, element10?: AsyncChain<V10, V11>, element11?: AsyncChain<V11, V12>, element12?: AsyncChain<V12, V13>, element13?: AsyncChain<V13, V14>, element14?: AsyncChain<V14, V15>, element15?: AsyncChain<V15, V16>, element16?: AsyncChain<V16, V17>, element17?: AsyncChain<V17, V18>, element18?: AsyncChain<V18, V19>, element19?: AsyncChain<V19, V20>): AsyncChain<V1, V1 | V20>;
<V1 extends Range, V2, V3 = V2, V4 = V3, V5 = V4, V6 = V5, V7 = V6, V8 = V7, V9 = V8, V10 = V9, V11 = V10, V12 = V11, V13 = V12, V14 = V13, V15 = V14, V16 = V15, V17 = V16, V18 = V17, V19 = V18, V20 = V19>(element1?: WeakChain<V1, V2>, element2?: WeakChain<V2, V3>, element3?: WeakChain<V3, V4>, element4?: WeakChain<V4, V5>, element5?: WeakChain<V5, V6>, element6?: WeakChain<V6, V7>, element7?: WeakChain<V7, V8>, element8?: WeakChain<V8, V9>, element9?: WeakChain<V9, V10>, element10?: WeakChain<V10, V11>, element11?: WeakChain<V11, V12>, element12?: WeakChain<V12, V13>, element13?: WeakChain<V13, V14>, element14?: WeakChain<V14, V15>, element15?: WeakChain<V15, V16>, element16?: WeakChain<V16, V17>, element17?: WeakChain<V17, V18>, element18?: WeakChain<V18, V19>, element19?: WeakChain<V19, V20>): WeakChain<V1, V1 | V20>;
<V1 extends Range, V2, V3 = V2, V4 = V3, V5 = V4, V6 = V5, V7 = V6, V8 = V7, V9 = V8, V10 = V9, V11 = V10, V12 = V11, V13 = V12, V14 = V13, V15 = V14, V16 = V15, V17 = V16, V18 = V17, V19 = V18, V20 = V19>(element1?: AsyncWeakChain<V1, V2>, element2?: AsyncWeakChain<V2, V3>, element3?: AsyncWeakChain<V3, V4>, element4?: AsyncWeakChain<V4, V5>, element5?: AsyncWeakChain<V5, V6>, element6?: AsyncWeakChain<V6, V7>, element7?: AsyncWeakChain<V7, V8>, element8?: AsyncWeakChain<V8, V9>, element9?: AsyncWeakChain<V9, V10>, element10?: AsyncWeakChain<V10, V11>, element11?: AsyncWeakChain<V11, V12>, element12?: AsyncWeakChain<V12, V13>, element13?: AsyncWeakChain<V13, V14>, element14?: AsyncWeakChain<V14, V15>, element15?: AsyncWeakChain<V15, V16>, element16?: AsyncWeakChain<V16, V17>, element17?: AsyncWeakChain<V17, V18>, element18?: AsyncWeakChain<V18, V19>, element19?: AsyncWeakChain<V19, V20>): AsyncWeakChain<V1, V1 | V20>;
}
export interface IfFn {

@@ -10,3 +20,2 @@ <Range>(condition: Function1<Range, boolean>): IfCall<Range>;

export declare const ifNot: <V1>(condition: Function1<V1, boolean>) => IfCall<V1>;
export {};
//# sourceMappingURL=if.d.ts.map

@@ -7,5 +7,5 @@ import { chain } from "./chain";

const chained = chain(first, ...elements);
return (next, parameter, context) => {
return (next, parameter, context, status) => {
if (condition(parameter)) {
return chained(next, parameter, context);
return chained(next, parameter, context, status);
}

@@ -12,0 +12,0 @@ return hasFallback ? args[0] : next(parameter);

@@ -1,12 +0,12 @@

import { Maybe, Function1, Chain } from './types';
import { Maybe, Function1, ConnectedChain } from './types';
export interface MaybeKeyCall {
<O extends Object, Key extends keyof O>(keyOf: Key): Chain<undefined, undefined>;
<O extends Object, Key extends keyof O>(keyOf: Key): Chain<null, null>;
<O extends Object, Key extends keyof O>(keyOf: Key): Chain<O | undefined, O[Key] | undefined>;
<O extends Object, Key extends keyof O>(keyOf: Key): Chain<O | null, O[Key] | null>;
<O extends Object, Key extends keyof O>(keyOf: Key): Chain<Maybe<O>, Maybe<O[Key]>>;
<O extends Object, Key extends keyof O>(keyOf: Key): Chain<O, O[Key]>;
<O extends Object, Key extends keyof O>(keyOf: Key): ConnectedChain<undefined, undefined>;
<O extends Object, Key extends keyof O>(keyOf: Key): ConnectedChain<null, null>;
<O extends Object, Key extends keyof O>(keyOf: Key): ConnectedChain<O | undefined, O[Key] | undefined>;
<O extends Object, Key extends keyof O>(keyOf: Key): ConnectedChain<O | null, O[Key] | null>;
<O extends Object, Key extends keyof O>(keyOf: Key): ConnectedChain<Maybe<O>, Maybe<O[Key]>>;
<O extends Object, Key extends keyof O>(keyOf: Key): ConnectedChain<O, O[Key]>;
}
export declare const maybeKey: MaybeKeyCall;
export declare const maybeSelect: <V1, Filter extends V1 & (null | undefined), From extends Exclude<V1, Filter>, To>(mapping: Function1<From, To>) => Chain<From | V1, To | Filter>;
export declare const maybeSelect: <V1, Filter extends V1 & (null | undefined), From extends Exclude<V1, Filter>, To>(mapping: Function1<From, To>) => ConnectedChain<From | V1, To | Filter>;
//# sourceMappingURL=maybe.d.ts.map

@@ -1,23 +0,9 @@

import { Chain } from "./types";
export declare function merge<V>(): Chain<V, never>;
export declare function merge<From, To>(element1: Chain<From, To>): Chain<From, To>;
export declare function merge<From, To1, To2>(element1: Chain<From, To1>, element2: Chain<From, To2>): Chain<From, To1 | To2>;
export declare function merge<From, To1, To2, To3>(element1: Chain<From, To1>, element2: Chain<From, To2>, element3: Chain<From, To3>): Chain<From, To1 | To2 | To3>;
export declare function merge<From, To1, To2, To3, To4>(element1: Chain<From, To1>, element2: Chain<From, To2>, element3: Chain<From, To3>, element4: Chain<From, To4>): Chain<From, To1 | To2 | To3 | To4>;
export declare function merge<From, To1, To2, To3, To4, To5>(element1: Chain<From, To1>, element2: Chain<From, To2>, element3: Chain<From, To3>, element4: Chain<From, To4>, element5: Chain<From, To5>): Chain<From, To1 | To2 | To3 | To4 | To5>;
export declare function merge<From, To1, To2, To3, To4, To5, To6>(element1: Chain<From, To1>, element2: Chain<From, To2>, element3: Chain<From, To3>, element4: Chain<From, To4>, element5: Chain<From, To5>, element6: Chain<From, To6>): Chain<From, To1 | To2 | To3 | To4 | To5 | To6>;
export declare function merge<From, To1, To2, To3, To4, To5, To6, To7>(element1: Chain<From, To1>, element2: Chain<From, To2>, element3: Chain<From, To3>, element4: Chain<From, To4>, element5: Chain<From, To5>, element6: Chain<From, To6>, element7: Chain<From, To7>): Chain<From, To1 | To2 | To3 | To4 | To5 | To6 | To7>;
export declare function merge<From, To1, To2, To3, To4, To5, To6, To7, To8>(element1: Chain<From, To1>, element2: Chain<From, To2>, element3: Chain<From, To3>, element4: Chain<From, To4>, element5: Chain<From, To5>, element6: Chain<From, To6>, element7: Chain<From, To7>, element8: Chain<From, To8>): Chain<From, To1 | To2 | To3 | To4 | To5 | To6 | To7 | To8>;
export declare function merge<From, To1, To2, To3, To4, To5, To6, To7, To8, To9>(element1: Chain<From, To1>, element2: Chain<From, To2>, element3: Chain<From, To3>, element4: Chain<From, To4>, element5: Chain<From, To5>, element6: Chain<From, To6>, element7: Chain<From, To7>, element8: Chain<From, To8>, element9: Chain<From, To9>): Chain<From, To1 | To2 | To3 | To4 | To5 | To6 | To7 | To8 | To9>;
export declare function merge<From, To1, To2, To3, To4, To5, To6, To7, To8, To9, To10>(element1: Chain<From, To1>, element2: Chain<From, To2>, element3: Chain<From, To3>, element4: Chain<From, To4>, element5: Chain<From, To5>, element6: Chain<From, To6>, element7: Chain<From, To7>, element8: Chain<From, To8>, element9: Chain<From, To9>, element10: Chain<From, To10>): Chain<From, To1 | To2 | To3 | To4 | To5 | To6 | To7 | To8 | To9 | To10>;
export declare function merge<From, To1, To2, To3, To4, To5, To6, To7, To8, To9, To10, To11>(element1: Chain<From, To1>, element2: Chain<From, To2>, element3: Chain<From, To3>, element4: Chain<From, To4>, element5: Chain<From, To5>, element6: Chain<From, To6>, element7: Chain<From, To7>, element8: Chain<From, To8>, element9: Chain<From, To9>, element10: Chain<From, To10>, element11: Chain<From, To11>): Chain<From, To1 | To2 | To3 | To4 | To5 | To6 | To7 | To8 | To9 | To10 | To11>;
export declare function merge<From, To1, To2, To3, To4, To5, To6, To7, To8, To9, To10, To11, To12>(element1: Chain<From, To1>, element2: Chain<From, To2>, element3: Chain<From, To3>, element4: Chain<From, To4>, element5: Chain<From, To5>, element6: Chain<From, To6>, element7: Chain<From, To7>, element8: Chain<From, To8>, element9: Chain<From, To9>, element10: Chain<From, To10>, element11: Chain<From, To11>, element12: Chain<From, To12>): Chain<From, To1 | To2 | To3 | To4 | To5 | To6 | To7 | To8 | To9 | To10 | To11 | To12>;
export declare function merge<From, To1, To2, To3, To4, To5, To6, To7, To8, To9, To10, To11, To12, To13>(element1: Chain<From, To1>, element2: Chain<From, To2>, element3: Chain<From, To3>, element4: Chain<From, To4>, element5: Chain<From, To5>, element6: Chain<From, To6>, element7: Chain<From, To7>, element8: Chain<From, To8>, element9: Chain<From, To9>, element10: Chain<From, To10>, element11: Chain<From, To11>, element12: Chain<From, To12>, element13: Chain<From, To13>): Chain<From, To1 | To2 | To3 | To4 | To5 | To6 | To7 | To8 | To9 | To10 | To11 | To12 | To13>;
export declare function merge<From, To1, To2, To3, To4, To5, To6, To7, To8, To9, To10, To11, To12, To13, To14>(element1: Chain<From, To1>, element2: Chain<From, To2>, element3: Chain<From, To3>, element4: Chain<From, To4>, element5: Chain<From, To5>, element6: Chain<From, To6>, element7: Chain<From, To7>, element8: Chain<From, To8>, element9: Chain<From, To9>, element10: Chain<From, To10>, element11: Chain<From, To11>, element12: Chain<From, To12>, element13: Chain<From, To13>, element14: Chain<From, To14>): Chain<From, To1 | To2 | To3 | To4 | To5 | To6 | To7 | To8 | To9 | To10 | To11 | To12 | To13 | To14>;
export declare function merge<From, To1, To2, To3, To4, To5, To6, To7, To8, To9, To10, To11, To12, To13, To14, To15>(element1: Chain<From, To1>, element2: Chain<From, To2>, element3: Chain<From, To3>, element4: Chain<From, To4>, element5: Chain<From, To5>, element6: Chain<From, To6>, element7: Chain<From, To7>, element8: Chain<From, To8>, element9: Chain<From, To9>, element10: Chain<From, To10>, element11: Chain<From, To11>, element12: Chain<From, To12>, element13: Chain<From, To13>, element14: Chain<From, To14>, element15: Chain<From, To15>): Chain<From, To1 | To2 | To3 | To4 | To5 | To6 | To7 | To8 | To9 | To10 | To11 | To12 | To13 | To14 | To15>;
export declare function merge<From, To1, To2, To3, To4, To5, To6, To7, To8, To9, To10, To11, To12, To13, To14, To15, To16>(element1: Chain<From, To1>, element2: Chain<From, To2>, element3: Chain<From, To3>, element4: Chain<From, To4>, element5: Chain<From, To5>, element6: Chain<From, To6>, element7: Chain<From, To7>, element8: Chain<From, To8>, element9: Chain<From, To9>, element10: Chain<From, To10>, element11: Chain<From, To11>, element12: Chain<From, To12>, element13: Chain<From, To13>, element14: Chain<From, To14>, element15: Chain<From, To15>, element16: Chain<From, To16>): Chain<From, To1 | To2 | To3 | To4 | To5 | To6 | To7 | To8 | To9 | To10 | To11 | To12 | To13 | To14 | To15 | To16>;
export declare function merge<From, To1, To2, To3, To4, To5, To6, To7, To8, To9, To10, To11, To12, To13, To14, To15, To16, To17>(element1: Chain<From, To1>, element2: Chain<From, To2>, element3: Chain<From, To3>, element4: Chain<From, To4>, element5: Chain<From, To5>, element6: Chain<From, To6>, element7: Chain<From, To7>, element8: Chain<From, To8>, element9: Chain<From, To9>, element10: Chain<From, To10>, element11: Chain<From, To11>, element12: Chain<From, To12>, element13: Chain<From, To13>, element14: Chain<From, To14>, element15: Chain<From, To15>, element16: Chain<From, To16>, element17: Chain<From, To17>): Chain<From, To1 | To2 | To3 | To4 | To5 | To6 | To7 | To8 | To9 | To10 | To11 | To12 | To13 | To14 | To15 | To16 | To17>;
export declare function merge<From, To1, To2, To3, To4, To5, To6, To7, To8, To9, To10, To11, To12, To13, To14, To15, To16, To17, To18>(element1: Chain<From, To1>, element2: Chain<From, To2>, element3: Chain<From, To3>, element4: Chain<From, To4>, element5: Chain<From, To5>, element6: Chain<From, To6>, element7: Chain<From, To7>, element8: Chain<From, To8>, element9: Chain<From, To9>, element10: Chain<From, To10>, element11: Chain<From, To11>, element12: Chain<From, To12>, element13: Chain<From, To13>, element14: Chain<From, To14>, element15: Chain<From, To15>, element16: Chain<From, To16>, element17: Chain<From, To17>, element18: Chain<From, To18>): Chain<From, To1 | To2 | To3 | To4 | To5 | To6 | To7 | To8 | To9 | To10 | To11 | To12 | To13 | To14 | To15 | To16 | To17 | To18>;
export declare function merge<From, To1, To2, To3, To4, To5, To6, To7, To8, To9, To10, To11, To12, To13, To14, To15, To16, To17, To18, To19>(element1: Chain<From, To1>, element2: Chain<From, To2>, element3: Chain<From, To3>, element4: Chain<From, To4>, element5: Chain<From, To5>, element6: Chain<From, To6>, element7: Chain<From, To7>, element8: Chain<From, To8>, element9: Chain<From, To9>, element10: Chain<From, To10>, element11: Chain<From, To11>, element12: Chain<From, To12>, element13: Chain<From, To13>, element14: Chain<From, To14>, element15: Chain<From, To15>, element16: Chain<From, To16>, element17: Chain<From, To17>, element18: Chain<From, To18>, element19: Chain<From, To19>): Chain<From, To1 | To2 | To3 | To4 | To5 | To6 | To7 | To8 | To9 | To10 | To11 | To12 | To13 | To14 | To15 | To16 | To17 | To18 | To19>;
export declare function merge<From, To1, To2, To3, To4, To5, To6, To7, To8, To9, To10, To11, To12, To13, To14, To15, To16, To17, To18, To19, To20>(element1: Chain<From, To1>, element2: Chain<From, To2>, element3: Chain<From, To3>, element4: Chain<From, To4>, element5: Chain<From, To5>, element6: Chain<From, To6>, element7: Chain<From, To7>, element8: Chain<From, To8>, element9: Chain<From, To9>, element10: Chain<From, To10>, element11: Chain<From, To11>, element12: Chain<From, To12>, element13: Chain<From, To13>, element14: Chain<From, To14>, element15: Chain<From, To15>, element16: Chain<From, To16>, element17: Chain<From, To17>, element18: Chain<From, To18>, element19: Chain<From, To19>, element20: Chain<From, To20>): Chain<From, To1 | To2 | To3 | To4 | To5 | To6 | To7 | To8 | To9 | To10 | To11 | To12 | To13 | To14 | To15 | To16 | To17 | To18 | To19 | To20>;
import { SyncChain, AsyncChain, WeakChain, AsyncWeakChain } from "./types";
export interface MergeCall {
<From, To1 = never, To2 = never, To3 = never, To4 = never, To5 = never, To6 = never, To7 = never, To8 = never, To9 = never, To10 = never, To11 = never, To12 = never, To13 = never, To14 = never, To15 = never, To16 = never, To17 = never, To18 = never, To19 = never, To20 = never>(element1?: SyncChain<From, To1>, element2?: SyncChain<From, To2>, element3?: SyncChain<From, To3>, element4?: SyncChain<From, To4>, element5?: SyncChain<From, To5>, element6?: SyncChain<From, To6>, element7?: SyncChain<From, To7>, element8?: SyncChain<From, To8>, element9?: SyncChain<From, To9>, element10?: SyncChain<From, To10>, element11?: SyncChain<From, To11>, element12?: SyncChain<From, To12>, element13?: SyncChain<From, To13>, element14?: SyncChain<From, To14>, element15?: SyncChain<From, To15>, element16?: SyncChain<From, To16>, element17?: SyncChain<From, To17>, element18?: SyncChain<From, To18>, element19?: SyncChain<From, To19>, element20?: SyncChain<From, To20>): SyncChain<From, To1 | To2 | To3 | To4 | To5 | To6 | To7 | To8 | To9 | To10 | To11 | To12 | To13 | To14 | To15 | To16 | To17 | To18 | To19 | To20>;
<From, To1 = never, To2 = never, To3 = never, To4 = never, To5 = never, To6 = never, To7 = never, To8 = never, To9 = never, To10 = never, To11 = never, To12 = never, To13 = never, To14 = never, To15 = never, To16 = never, To17 = never, To18 = never, To19 = never, To20 = never>(element1?: AsyncChain<From, To1>, element2?: AsyncChain<From, To2>, element3?: AsyncChain<From, To3>, element4?: AsyncChain<From, To4>, element5?: AsyncChain<From, To5>, element6?: AsyncChain<From, To6>, element7?: AsyncChain<From, To7>, element8?: AsyncChain<From, To8>, element9?: AsyncChain<From, To9>, element10?: AsyncChain<From, To10>, element11?: AsyncChain<From, To11>, element12?: AsyncChain<From, To12>, element13?: AsyncChain<From, To13>, element14?: AsyncChain<From, To14>, element15?: AsyncChain<From, To15>, element16?: AsyncChain<From, To16>, element17?: AsyncChain<From, To17>, element18?: AsyncChain<From, To18>, element19?: AsyncChain<From, To19>, element20?: AsyncChain<From, To20>): AsyncChain<From, To1 | To2 | To3 | To4 | To5 | To6 | To7 | To8 | To9 | To10 | To11 | To12 | To13 | To14 | To15 | To16 | To17 | To18 | To19 | To20>;
<From, To1 = never, To2 = never, To3 = never, To4 = never, To5 = never, To6 = never, To7 = never, To8 = never, To9 = never, To10 = never, To11 = never, To12 = never, To13 = never, To14 = never, To15 = never, To16 = never, To17 = never, To18 = never, To19 = never, To20 = never>(element1?: WeakChain<From, To1>, element2?: WeakChain<From, To2>, element3?: WeakChain<From, To3>, element4?: WeakChain<From, To4>, element5?: WeakChain<From, To5>, element6?: WeakChain<From, To6>, element7?: WeakChain<From, To7>, element8?: WeakChain<From, To8>, element9?: WeakChain<From, To9>, element10?: WeakChain<From, To10>, element11?: WeakChain<From, To11>, element12?: WeakChain<From, To12>, element13?: WeakChain<From, To13>, element14?: WeakChain<From, To14>, element15?: WeakChain<From, To15>, element16?: WeakChain<From, To16>, element17?: WeakChain<From, To17>, element18?: WeakChain<From, To18>, element19?: WeakChain<From, To19>, element20?: WeakChain<From, To20>): WeakChain<From, To1 | To2 | To3 | To4 | To5 | To6 | To7 | To8 | To9 | To10 | To11 | To12 | To13 | To14 | To15 | To16 | To17 | To18 | To19 | To20>;
<From, To1 = never, To2 = never, To3 = never, To4 = never, To5 = never, To6 = never, To7 = never, To8 = never, To9 = never, To10 = never, To11 = never, To12 = never, To13 = never, To14 = never, To15 = never, To16 = never, To17 = never, To18 = never, To19 = never, To20 = never>(element1?: AsyncWeakChain<From, To1>, element2?: AsyncWeakChain<From, To2>, element3?: AsyncWeakChain<From, To3>, element4?: AsyncWeakChain<From, To4>, element5?: AsyncWeakChain<From, To5>, element6?: AsyncWeakChain<From, To6>, element7?: AsyncWeakChain<From, To7>, element8?: AsyncWeakChain<From, To8>, element9?: AsyncWeakChain<From, To9>, element10?: AsyncWeakChain<From, To10>, element11?: AsyncWeakChain<From, To11>, element12?: AsyncWeakChain<From, To12>, element13?: AsyncWeakChain<From, To13>, element14?: AsyncWeakChain<From, To14>, element15?: AsyncWeakChain<From, To15>, element16?: AsyncWeakChain<From, To16>, element17?: AsyncWeakChain<From, To17>, element18?: AsyncWeakChain<From, To18>, element19?: AsyncWeakChain<From, To19>, element20?: AsyncWeakChain<From, To20>): AsyncWeakChain<From, To1 | To2 | To3 | To4 | To5 | To6 | To7 | To8 | To9 | To10 | To11 | To12 | To13 | To14 | To15 | To16 | To17 | To18 | To19 | To20>;
}
export declare const merge: MergeCall;
//# sourceMappingURL=merge.d.ts.map

@@ -1,3 +0,4 @@

export function merge(...elements) {
return (next, parameter, context) => {
// @ts-expect-error
export const merge = (...elements) => {
return (next, parameter, context, status) => {
for (let i = 0; i < elements.length; i++) {

@@ -8,4 +9,4 @@ if (!context[i]) {

}
return elements.map((listen, i) => listen(next, parameter, context[i]));
return elements.map((listen, i) => listen(next, parameter, context[i], status));
};
}
};

@@ -1,23 +0,23 @@

import type { PrimitiveSignal, PrimitiveReadonly, Chain } from './types';
import type { PrimitiveSignal, PrimitiveReadonly, AnyChain } from './types';
export interface ConnectCall {
<V1, V2>(element1: Chain<V1, V2>): PrimitiveReadonly<V2>;
<V1, V2, V3>(element1: Chain<V1, V2>, element2: Chain<V2, V3>): PrimitiveReadonly<V3>;
<V1, V2, V3, V4>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>): PrimitiveReadonly<V4>;
<V1, V2, V3, V4, V5>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>): PrimitiveReadonly<V5>;
<V1, V2, V3, V4, V5, V6>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>): PrimitiveReadonly<V6>;
<V1, V2, V3, V4, V5, V6, V7>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>): PrimitiveReadonly<V7>;
<V1, V2, V3, V4, V5, V6, V7, V8>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>): PrimitiveReadonly<V8>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>): PrimitiveReadonly<V9>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>): PrimitiveReadonly<V10>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>, element10: Chain<V10, V11>): PrimitiveReadonly<V11>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>, element10: Chain<V10, V11>, element11: Chain<V11, V12>): PrimitiveReadonly<V12>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>, element10: Chain<V10, V11>, element11: Chain<V11, V12>, element12: Chain<V12, V13>): PrimitiveReadonly<V13>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>, element10: Chain<V10, V11>, element11: Chain<V11, V12>, element12: Chain<V12, V13>, element13: Chain<V13, V14>): PrimitiveReadonly<V14>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>, element10: Chain<V10, V11>, element11: Chain<V11, V12>, element12: Chain<V12, V13>, element13: Chain<V13, V14>, element14: Chain<V14, V15>): PrimitiveReadonly<V15>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>, element10: Chain<V10, V11>, element11: Chain<V11, V12>, element12: Chain<V12, V13>, element13: Chain<V13, V14>, element14: Chain<V14, V15>, element15: Chain<V15, V16>): PrimitiveReadonly<V16>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>, element10: Chain<V10, V11>, element11: Chain<V11, V12>, element12: Chain<V12, V13>, element13: Chain<V13, V14>, element14: Chain<V14, V15>, element15: Chain<V15, V16>, element16: Chain<V16, V17>): PrimitiveReadonly<V17>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>, element10: Chain<V10, V11>, element11: Chain<V11, V12>, element12: Chain<V12, V13>, element13: Chain<V13, V14>, element14: Chain<V14, V15>, element15: Chain<V15, V16>, element16: Chain<V16, V17>, element17: Chain<V17, V18>): PrimitiveReadonly<V18>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>, element10: Chain<V10, V11>, element11: Chain<V11, V12>, element12: Chain<V12, V13>, element13: Chain<V13, V14>, element14: Chain<V14, V15>, element15: Chain<V15, V16>, element16: Chain<V16, V17>, element17: Chain<V17, V18>, element18: Chain<V18, V19>): PrimitiveReadonly<V19>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20>(element1: Chain<V1, V2>, element2: Chain<V2, V3>, element3: Chain<V3, V4>, element4: Chain<V4, V5>, element5: Chain<V5, V6>, element6: Chain<V6, V7>, element7: Chain<V7, V8>, element8: Chain<V8, V9>, element9: Chain<V9, V10>, element10: Chain<V10, V11>, element11: Chain<V11, V12>, element12: Chain<V12, V13>, element13: Chain<V13, V14>, element14: Chain<V14, V15>, element15: Chain<V15, V16>, element16: Chain<V16, V17>, element17: Chain<V17, V18>, element18: Chain<V18, V19>, element19: Chain<V19, V20>): PrimitiveReadonly<V20>;
(listen1: Chain<unknown, unknown>, ...additionalListeners: Chain<unknown, unknown>[]): PrimitiveReadonly<unknown>;
<V1, V2>(element1: AnyChain<V1, V2>): PrimitiveReadonly<V2>;
<V1, V2, V3>(element1: AnyChain<V1, V2>, element2: AnyChain<V2, V3>): PrimitiveReadonly<V3>;
<V1, V2, V3, V4>(element1: AnyChain<V1, V2>, element2: AnyChain<V2, V3>, element3: AnyChain<V3, V4>): PrimitiveReadonly<V4>;
<V1, V2, V3, V4, V5>(element1: AnyChain<V1, V2>, element2: AnyChain<V2, V3>, element3: AnyChain<V3, V4>, element4: AnyChain<V4, V5>): PrimitiveReadonly<V5>;
<V1, V2, V3, V4, V5, V6>(element1: AnyChain<V1, V2>, element2: AnyChain<V2, V3>, element3: AnyChain<V3, V4>, element4: AnyChain<V4, V5>, element5: AnyChain<V5, V6>): PrimitiveReadonly<V6>;
<V1, V2, V3, V4, V5, V6, V7>(element1: AnyChain<V1, V2>, element2: AnyChain<V2, V3>, element3: AnyChain<V3, V4>, element4: AnyChain<V4, V5>, element5: AnyChain<V5, V6>, element6: AnyChain<V6, V7>): PrimitiveReadonly<V7>;
<V1, V2, V3, V4, V5, V6, V7, V8>(element1: AnyChain<V1, V2>, element2: AnyChain<V2, V3>, element3: AnyChain<V3, V4>, element4: AnyChain<V4, V5>, element5: AnyChain<V5, V6>, element6: AnyChain<V6, V7>, element7: AnyChain<V7, V8>): PrimitiveReadonly<V8>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9>(element1: AnyChain<V1, V2>, element2: AnyChain<V2, V3>, element3: AnyChain<V3, V4>, element4: AnyChain<V4, V5>, element5: AnyChain<V5, V6>, element6: AnyChain<V6, V7>, element7: AnyChain<V7, V8>, element8: AnyChain<V8, V9>): PrimitiveReadonly<V9>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10>(element1: AnyChain<V1, V2>, element2: AnyChain<V2, V3>, element3: AnyChain<V3, V4>, element4: AnyChain<V4, V5>, element5: AnyChain<V5, V6>, element6: AnyChain<V6, V7>, element7: AnyChain<V7, V8>, element8: AnyChain<V8, V9>, element9: AnyChain<V9, V10>): PrimitiveReadonly<V10>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11>(element1: AnyChain<V1, V2>, element2: AnyChain<V2, V3>, element3: AnyChain<V3, V4>, element4: AnyChain<V4, V5>, element5: AnyChain<V5, V6>, element6: AnyChain<V6, V7>, element7: AnyChain<V7, V8>, element8: AnyChain<V8, V9>, element9: AnyChain<V9, V10>, element10: AnyChain<V10, V11>): PrimitiveReadonly<V11>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12>(element1: AnyChain<V1, V2>, element2: AnyChain<V2, V3>, element3: AnyChain<V3, V4>, element4: AnyChain<V4, V5>, element5: AnyChain<V5, V6>, element6: AnyChain<V6, V7>, element7: AnyChain<V7, V8>, element8: AnyChain<V8, V9>, element9: AnyChain<V9, V10>, element10: AnyChain<V10, V11>, element11: AnyChain<V11, V12>): PrimitiveReadonly<V12>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13>(element1: AnyChain<V1, V2>, element2: AnyChain<V2, V3>, element3: AnyChain<V3, V4>, element4: AnyChain<V4, V5>, element5: AnyChain<V5, V6>, element6: AnyChain<V6, V7>, element7: AnyChain<V7, V8>, element8: AnyChain<V8, V9>, element9: AnyChain<V9, V10>, element10: AnyChain<V10, V11>, element11: AnyChain<V11, V12>, element12: AnyChain<V12, V13>): PrimitiveReadonly<V13>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14>(element1: AnyChain<V1, V2>, element2: AnyChain<V2, V3>, element3: AnyChain<V3, V4>, element4: AnyChain<V4, V5>, element5: AnyChain<V5, V6>, element6: AnyChain<V6, V7>, element7: AnyChain<V7, V8>, element8: AnyChain<V8, V9>, element9: AnyChain<V9, V10>, element10: AnyChain<V10, V11>, element11: AnyChain<V11, V12>, element12: AnyChain<V12, V13>, element13: AnyChain<V13, V14>): PrimitiveReadonly<V14>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15>(element1: AnyChain<V1, V2>, element2: AnyChain<V2, V3>, element3: AnyChain<V3, V4>, element4: AnyChain<V4, V5>, element5: AnyChain<V5, V6>, element6: AnyChain<V6, V7>, element7: AnyChain<V7, V8>, element8: AnyChain<V8, V9>, element9: AnyChain<V9, V10>, element10: AnyChain<V10, V11>, element11: AnyChain<V11, V12>, element12: AnyChain<V12, V13>, element13: AnyChain<V13, V14>, element14: AnyChain<V14, V15>): PrimitiveReadonly<V15>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16>(element1: AnyChain<V1, V2>, element2: AnyChain<V2, V3>, element3: AnyChain<V3, V4>, element4: AnyChain<V4, V5>, element5: AnyChain<V5, V6>, element6: AnyChain<V6, V7>, element7: AnyChain<V7, V8>, element8: AnyChain<V8, V9>, element9: AnyChain<V9, V10>, element10: AnyChain<V10, V11>, element11: AnyChain<V11, V12>, element12: AnyChain<V12, V13>, element13: AnyChain<V13, V14>, element14: AnyChain<V14, V15>, element15: AnyChain<V15, V16>): PrimitiveReadonly<V16>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17>(element1: AnyChain<V1, V2>, element2: AnyChain<V2, V3>, element3: AnyChain<V3, V4>, element4: AnyChain<V4, V5>, element5: AnyChain<V5, V6>, element6: AnyChain<V6, V7>, element7: AnyChain<V7, V8>, element8: AnyChain<V8, V9>, element9: AnyChain<V9, V10>, element10: AnyChain<V10, V11>, element11: AnyChain<V11, V12>, element12: AnyChain<V12, V13>, element13: AnyChain<V13, V14>, element14: AnyChain<V14, V15>, element15: AnyChain<V15, V16>, element16: AnyChain<V16, V17>): PrimitiveReadonly<V17>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18>(element1: AnyChain<V1, V2>, element2: AnyChain<V2, V3>, element3: AnyChain<V3, V4>, element4: AnyChain<V4, V5>, element5: AnyChain<V5, V6>, element6: AnyChain<V6, V7>, element7: AnyChain<V7, V8>, element8: AnyChain<V8, V9>, element9: AnyChain<V9, V10>, element10: AnyChain<V10, V11>, element11: AnyChain<V11, V12>, element12: AnyChain<V12, V13>, element13: AnyChain<V13, V14>, element14: AnyChain<V14, V15>, element15: AnyChain<V15, V16>, element16: AnyChain<V16, V17>, element17: AnyChain<V17, V18>): PrimitiveReadonly<V18>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19>(element1: AnyChain<V1, V2>, element2: AnyChain<V2, V3>, element3: AnyChain<V3, V4>, element4: AnyChain<V4, V5>, element5: AnyChain<V5, V6>, element6: AnyChain<V6, V7>, element7: AnyChain<V7, V8>, element8: AnyChain<V8, V9>, element9: AnyChain<V9, V10>, element10: AnyChain<V10, V11>, element11: AnyChain<V11, V12>, element12: AnyChain<V12, V13>, element13: AnyChain<V13, V14>, element14: AnyChain<V14, V15>, element15: AnyChain<V15, V16>, element16: AnyChain<V16, V17>, element17: AnyChain<V17, V18>, element18: AnyChain<V18, V19>): PrimitiveReadonly<V19>;
<V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20>(element1: AnyChain<V1, V2>, element2: AnyChain<V2, V3>, element3: AnyChain<V3, V4>, element4: AnyChain<V4, V5>, element5: AnyChain<V5, V6>, element6: AnyChain<V6, V7>, element7: AnyChain<V7, V8>, element8: AnyChain<V8, V9>, element9: AnyChain<V9, V10>, element10: AnyChain<V10, V11>, element11: AnyChain<V11, V12>, element12: AnyChain<V12, V13>, element13: AnyChain<V13, V14>, element14: AnyChain<V14, V15>, element15: AnyChain<V15, V16>, element16: AnyChain<V16, V17>, element17: AnyChain<V17, V18>, element18: AnyChain<V18, V19>, element19: AnyChain<V19, V20>): PrimitiveReadonly<V20>;
(listen1: AnyChain<unknown, unknown>, ...additionalListeners: AnyChain<unknown, unknown>[]): PrimitiveReadonly<unknown>;
}

@@ -24,0 +24,0 @@ export declare const connect: ConnectCall;

@@ -26,2 +26,3 @@ import { chain } from './chain';

const context = {};
const status = { is: 'sync' };
let unsubscribe = [

@@ -31,3 +32,3 @@ chained((value) => {

applyListeners();
}, undefined, context)
}, undefined, context, status)
];

@@ -34,0 +35,0 @@ const disconnect = () => {

@@ -1,6 +0,6 @@

import type { Chain, Function1 } from './types';
import type { SyncChain, WeakChain, Chain, Function1 } from './types';
/**
* Count the number of times a signal has passed
*/
export declare function count<V>(): Chain<V, number>;
export declare function count<V>(): SyncChain<V, number>;
/**

@@ -11,3 +11,3 @@ * Emits a value

*/
export declare function emit<V, Input = void>(parameter: V): Chain<Input, V>;
export declare function emit<V, Input = void>(parameter: V): SyncChain<Input, V>;
/**

@@ -18,3 +18,3 @@ * Passes the value if the condition is met

*/
export declare function passIf<V>(condition: Function1<V, boolean>): Chain<V>;
export declare function passIf<V>(condition: Function1<V, boolean>): WeakChain<V>;
/**

@@ -25,15 +25,15 @@ * Stops the chain if the condition is met

*/
export declare function stopIf<V>(condition: Function1<V, boolean>): Chain<V>;
export declare function stopIf<V>(condition: Function1<V, boolean>): WeakChain<V>;
/**
* Passes the value if it is different from the last value
*/
export declare function passUnique<V>(): Chain<V>;
export declare function passUnique<V>(): SyncChain<V>;
/**
* Stops the chain
*/
export declare function stop<V>(): Chain<V, never>;
export declare function stop<V>(): WeakChain<V, never>;
/**
* Passes the value on
*/
export declare function through<V>(): Chain<V>;
export declare function through<V>(): SyncChain<V>;
/**

@@ -44,4 +44,4 @@ * Select a value from the input.

*/
export declare function select<V>(): Chain<V>;
export declare function select<V>(): SyncChain<V>;
export declare function select<From, To = From>(mapping: Function1<From, To>): Chain<From, To>;
//# sourceMappingURL=tools.d.ts.map

@@ -24,6 +24,7 @@ /**

export function passIf(condition) {
return (next, parameter) => {
return (next, parameter, _, status) => {
if (condition(parameter)) {
return next(parameter);
}
status.is = 'incomplete';
};

@@ -37,6 +38,7 @@ }

export function stopIf(condition) {
return (next, parameter) => {
return (next, parameter, _, status) => {
if (!condition(parameter)) {
return next(parameter);
}
status.is = 'incomplete';
};

@@ -48,3 +50,3 @@ }

export function passUnique() {
return (next, parameter, context) => {
return (next, parameter, context, status) => {
if (context.last !== parameter) {

@@ -54,2 +56,3 @@ context.last = parameter;

}
status.is = 'incomplete';
};

@@ -61,3 +64,5 @@ }

export function stop() {
return () => { };
return (_, __, ___, status) => {
status.is = 'incomplete';
};
}

@@ -64,0 +69,0 @@ /**

@@ -32,5 +32,14 @@ export type FunctionVoid = () => void;

};
export type Chain<From, To = From> = (next: NextFn<To>, parameter: From, context: Context) => CleanupExec;
export type ChainType = 'sync' | 'async' | 'incomplete' | 'async-incomplete';
export type ChainStatus<CT extends ChainType = ChainType> = {
is: CT;
};
export type Chain<From, To = From, CT extends ChainType = ChainType> = (next: NextFn<To>, parameter: From, context: Context, status: ChainStatus<CT>) => CleanupExec;
export type SyncChain<From, To = From> = Chain<From, To>;
export type AsyncChain<From, To = From> = Chain<From, To, 'async' | 'async-incomplete'>;
export type WeakChain<From, To = From> = Chain<From, To, 'incomplete' | 'async-incomplete'>;
export type AsyncWeakChain<From, To = From> = Chain<From, To, 'async-incomplete'>;
export type AnyChain<From, To = From> = Chain<From, To, any>;
export type ConnectedChain<From, To> = (next: NextFn<To>, parameter: From) => CleanupExec;
export {};
//# sourceMappingURL=types.d.ts.map
{
"name": "signal-chain",
"version": "0.9.0",
"version": "0.10.0",
"author": "Christoph Franke",

@@ -5,0 +5,0 @@ "description": "Declarative Reactive Programming Library",

@@ -99,2 +99,10 @@ ![size](https://deno.bundlejs.com/badge?q=signal-chain&treeshake=[{+default+as+$+}])

The *Chain* is broken down into multiple subtypes:
- `SyncChain`: This *Chain* executes **synchronously** and will **complete**
- `AsyncChain`: This *Chain* executes **asynchronously** and will **complete**
- `WeakChain`: This *Chain* executes **synchronously**, but may **not complete**
- `AsyncWeakChain`: This *Chain* executes **asynchronously** and may **not complete**
These types give static hints about the behaviour of the *Chain* and when used with `$.evaluate` or `$.function` will produce slightly different results.
Once we connect the chain, it will start listening to the counter. Note that it executes immediately and synchronously on connection.

@@ -385,10 +393,33 @@ ```typescript

### Breaking out of the Chain
**Signal-Chain** also includes a few utility functions:
- `$.evaluate.sync`: Evaluates a chain synchronously.
- `$.evaluate.async`: Evaluates a chain asynchronously.
- `$.function.sync`: Creates a synchronous function from a chain.
- `$.function.async`: Creates an asynchronous function from a chain.
- `$.config`: Configures the update behaviour of the library.
For compatibility with the rest of the Javascript world, there are two utility functions:
- `$.evaluate`: Evaluates a chain.
- `$.function`: Creates a function from a chain.
`$.evaluate` is creates a one-shot evaluation of a *Chain*.
```typescript
const counter = $.primitive.create(0)
console.log($.evaluate(counter.listen)) // logs: 0
counter.value = 10
console.log($.evaluate(counter.listen)) // logs: 10
```
While `$.function` creates a function that internally evaluates the *Chain*.
```typescript
const double = $.chain(
$.select(x => x * 2)
)
const doubleFunction = $.function(double)
console.log(doubleFunction(5)) // logs: 10
```
Depending on the type of the chain, the result of `$.evaluate` and `$.function` will be slightly different:
- `SyncChain`: Will return the value of the chain.
- `AsyncChain`: Will return a promise that resolves to the value of the chain.
- `WeakChain`: Will return the value of the chain, or `undefined` if the chain did not complete.
- `AsyncWeakChain`: Will return a promise that resolves to the value or `undefined`, or `undefined` if the chain did not complete. This is because the chain may or may not complete before or after it becomes asynchronous.
### Controlling Update Behaviour

@@ -457,5 +488,5 @@

- Some quality of life utilities like `$.throttle`
- Update `$.buffer` to only fire when full
- Operator `$.while` to repeat a chain until a condition is met (e.g. retry failed http request).
- A `$.listen.select`, that is automatically reactive.
- Break down `Chain` type into `SyncChain`, `AsyncChain`, `WeakChain`, `AsyncWeakChain`, which allows to merge `$.evaluate.sync` and `$.evaluate.async` into a single `$.evaluate` and statically predict the possible outcome types.
- Add integration wrappers for VueJS and React.

@@ -462,0 +493,0 @@ - `$.await.select` operator for more intuitive promise chaining.

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc