houdini/app/javascript/common/lodash-joins/typings.ts
2020-07-15 12:30:18 -05:00

28 lines
914 B
TypeScript

// License: LGPL-3.0-or-later
// from https://github.com/mtraynham/lodash-joins/blob/c252b462981562451d85d1e09c8f273ce7fe06c5/lib/typings.ts
export interface Accessor<Row, Key> extends Function {
(a: Row): Key;
}
export interface Merger<LeftRow, RightRow, MergeResult> extends Function {
(left: LeftRow, right: RightRow): MergeResult;
}
export interface Join<LeftRow, RightRow, Key, MergeResult> extends Function {
(
left: LeftRow[],
leftAccessor: Accessor<LeftRow, Key>,
right: RightRow[],
rightAccessor: Accessor<RightRow, Key>,
merger: Merger<LeftRow, RightRow, MergeResult>
): MergeResult[];
}
export interface NonMergeJoin<LeftRow, RightRow, Key> extends Function {
(
left: LeftRow[],
leftAccessor: Accessor<LeftRow, Key>,
right: RightRow[],
rightAccessor: Accessor<RightRow, Key>
): LeftRow[] | RightRow[];
}