-
-
Notifications
You must be signed in to change notification settings - Fork 31
/
filter.ts
64 lines (53 loc) · 1.4 KB
/
filter.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import {
Context,
DdcEvent,
DdcOptions,
FilterOptions,
Item,
OnCallback,
SourceOptions,
} from "../types.ts";
import { Denops } from "../deps.ts";
export type OnInitArguments<Params extends Record<string, unknown>> = {
denops: Denops;
filterOptions: FilterOptions;
filterParams: Params;
};
export type OnEventArguments<Params extends Record<string, unknown>> = {
denops: Denops;
context: Context;
onCallback: OnCallback;
options: DdcOptions;
filterOptions: FilterOptions;
filterParams: Params;
};
export type FilterArguments<Params extends Record<string, unknown>> = {
denops: Denops;
context: Context;
onCallback: OnCallback;
options: DdcOptions;
sourceOptions: SourceOptions;
filterOptions: FilterOptions;
filterParams: Params;
completeStr: string;
candidates: Item[]; // Deprecated
items: Item[];
};
export abstract class BaseFilter<Params extends Record<string, unknown>> {
name = "";
isInitialized = false;
apiVersion = 4;
events: DdcEvent[] = [];
async onInit(_args: OnInitArguments<Params>): Promise<void> {}
async onEvent(_args: OnEventArguments<Params>): Promise<void> {}
abstract filter({}: FilterArguments<Params>): Promise<Item[]>;
abstract params(): Params;
}
export function defaultFilterOptions(): FilterOptions {
return {
placeholder: undefined,
};
}
export function defaultFilterParams(): Record<string, unknown> {
return {};
}