29 lines
914 B
TypeScript
29 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[];
|
||
|
}
|