From 5dfb3de415745e7c40e77bf36cc9c80d0707e013 Mon Sep 17 00:00:00 2001 From: hasparus Date: Mon, 14 Sep 2020 22:33:44 +0200 Subject: [PATCH] Add return type annotations in index.d.ts --- index.d.ts | 129 ++++++++++++++++++++++++++++++++------------------- package.json | 4 +- 2 files changed, 83 insertions(+), 50 deletions(-) diff --git a/index.d.ts b/index.d.ts index d2ea57a..3c49243 100644 --- a/index.d.ts +++ b/index.d.ts @@ -1,63 +1,87 @@ declare module "flexsearch" { - interface Index { - //TODO: Chaining + export interface Index { readonly id: string; readonly index: string; readonly length: number; - init(); - init(options: CreateOptions); - info(); - add(o: T); - add(id: number, o: string); + init(options?: CreateOptions): this; + info(): { + id: any; + items: any; + cache: any; + matcher: number; + worker: any; + threshold: any; + depth: any; + resolution: any; + contextual: boolean; + }; + add(o: T): this; + add(id: number, o: string): this; // Result without pagination -> T[] - search(query: string, options: number | SearchOptions, callback: (results: T[]) => void): void; + search( + query: string, + options: number | SearchOptions, + callback: (results: T[]) => void + ): void; search(query: string, options?: number | SearchOptions): Promise; - search(options: SearchOptions & {query: string}, callback: (results: T[]) => void): void; - search(options: SearchOptions & {query: string}): Promise; + search( + options: SearchOptions & { query: string }, + callback: (results: T[]) => void + ): void; + search(options: SearchOptions & { query: string }): Promise; // Result with pagination -> SearchResults - search(query: string, options: number | SearchOptions & { page?: boolean | Cursor}, callback: (results: SearchResults) => void): void; - search(query: string, options?: number | SearchOptions & { page?: boolean | Cursor}): Promise>; - search(options: SearchOptions & {query: string, page?: boolean | Cursor}, callback: (results: SearchResults) => void): void; - search(options: SearchOptions & {query: string, page?: boolean | Cursor}): Promise>; + search( + query: string, + options: number | (SearchOptions & { page?: boolean | Cursor }), + callback: (results: SearchResults) => void + ): void; + search( + query: string, + options?: number | (SearchOptions & { page?: boolean | Cursor }) + ): Promise>; + search( + options: SearchOptions & { query: string; page?: boolean | Cursor }, + callback: (results: SearchResults) => void + ): void; + search( + options: SearchOptions & { query: string; page?: boolean | Cursor } + ): Promise>; + update(id: number, o: T): this; + remove(id: number): this; + clear(): this; + destroy(): this; + addMatcher(matcher: Matcher): this; - update(id: number, o: T); - remove(id: number); - clear(); - destroy(); - addMatcher(matcher: Matcher); - - where(whereFn: (o: T) => boolean): T[]; - where(whereObj: {[key: string]: string}); + where(whereObj: { [key: string]: string } | ((o: T) => boolean)): T[]; encode(str: string): string; export(): string; - import(exported: string); + import(exported: string): this; } interface SearchOptions { - limit?: number, - suggest?: boolean, - where?: {[key: string]: string}, - field?: string | string[], - bool?: "and" | "or" | "not" + limit?: number; + suggest?: boolean; + where?: { [key: string]: string }; + field?: string | string[]; + bool?: "and" | "or" | "not"; //TODO: Sorting } interface SearchResults { - page?: Cursor, - next?: Cursor, - result: T[] + page?: Cursor; + next?: Cursor; + result: T[]; } interface Document { - id: string; - field: any; + id: string; + field: any; } - export type CreateOptions = { profile?: IndexProfile; tokenize?: DefaultTokenizer | TokenizerFn; @@ -70,34 +94,43 @@ declare module "flexsearch" { threshold?: false | number; resolution?: number; stemmer?: Stemmer | string | false; - filter?: FilterFn | string | false; + filter?: FilterFn | string | false; rtl?: boolean; doc?: Document; }; -// limit number Sets the limit of results. -// suggest true, false Enables suggestions in results. -// where object Use a where-clause for non-indexed fields. -// field string, Array Sets the document fields which should be searched. When no field is set, all fields will be searched. Custom options per field are also supported. -// bool "and", "or" Sets the used logical operator when searching through multiple fields. -// page true, false, cursor Enables paginated results. + // limit number Sets the limit of results. + // suggest true, false Enables suggestions in results. + // where object Use a where-clause for non-indexed fields. + // field string, Array Sets the document fields which should be searched. When no field is set, all fields will be searched. Custom options per field are also supported. + // bool "and", "or" Sets the used logical operator when searching through multiple fields. + // page true, false, cursor Enables paginated results. - type IndexProfile = "memory" | "speed" | "match" | "score" | "balance" | "fast"; + type IndexProfile = + | "memory" + | "speed" + | "match" + | "score" + | "balance" + | "fast"; type DefaultTokenizer = "strict" | "forward" | "reverse" | "full"; type TokenizerFn = (str: string) => string[]; type DefaultEncoder = "icase" | "simple" | "advanced" | "extra" | "balance"; type EncoderFn = (str: string) => string; - type Stemmer = {[key: string]: string}; - type Matcher = {[key: string]: string}; + type Stemmer = { [key: string]: string }; + type Matcher = { [key: string]: string }; type FilterFn = (str: string) => boolean; type Cursor = string; export default class FlexSearch { static create(options?: CreateOptions): Index; - static registerMatcher(matcher: Matcher); - static registerEncoder(name: string, encoder: EncoderFn); - static registerLanguage(lang: string, options: { stemmer?: Stemmer; filter?: string[] }); - static encode(name: string, str: string); + static registerMatcher(matcher: Matcher): typeof FlexSearch; + static registerEncoder(name: string, encoder: EncoderFn): typeof FlexSearch; + static registerLanguage( + lang: string, + options: { stemmer?: Stemmer; filter?: string[] } + ): typeof FlexSearch; + static encode(name: string, str: string): string; } } diff --git a/package.json b/package.json index 12a8482..a0db0fb 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ }, "main": "dist/flexsearch.node.js", "browser": "dist/flexsearch.min.js", + "types": "index.d.ts", "preferGlobal": false, "bin": {}, "repository": { @@ -75,6 +76,5 @@ "mocha-phantomjs": "^4.1.0", "nyc": "^14.1.1", "phantomjs-prebuilt": "^2.1.16" - }, - "types": "index.d.ts" + } }