428 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			428 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| declare module "flexsearch" {
 | |
|     // Type definitions for flexsearch 0.7
 | |
|     // Project: https://github.com/nextapps-de/flexsearch/
 | |
|     // Definitions by: LOSSES Don <https://github.com/Losses>
 | |
|     // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
 | |
| 
 | |
|     /************************************/
 | |
|     /* Utils                            */
 | |
|     /************************************/
 | |
|     export type Id = number | string;
 | |
|     export type Limit = number;
 | |
|     export type ExportHandler<T> = (id: string | number, value: T) => void;
 | |
|     export type AsyncCallback<T = undefined> = T extends undefined
 | |
|         ? () => void
 | |
|         : (result: T) => void;
 | |
|     export type UnknownFunction = (...x: unknown[]) => unknown;
 | |
| 
 | |
|     export type StoreOption = boolean | string | string[];
 | |
|     export type EnrichStoreOption = true | string | string[];
 | |
| 
 | |
|     /************************************/
 | |
|     /* Common Options                   */
 | |
|     /************************************/
 | |
| 
 | |
|     /**
 | |
|      * **Document:**
 | |
|      * * Presets: https://github.com/nextapps-de/flexsearch#presets
 | |
|      */
 | |
|     export type Preset = "memory" | "performance" | "match" | "score" | "default";
 | |
| 
 | |
|     /**
 | |
|      * **Document:**
 | |
|      * * Tokenizer: https://github.com/nextapps-de/flexsearch#tokenizer-prefix-search
 | |
|      * * Add custom tokenizer: https://github.com/nextapps-de/flexsearch#add-custom-tokenizer
 | |
|      */
 | |
|     export type Tokenizer =
 | |
|         | "strict"
 | |
|         | "forward"
 | |
|         | "reverse"
 | |
|         | "full"
 | |
|         | ((x: string) => string[]);
 | |
| 
 | |
|     /**
 | |
|      * **Document:**
 | |
|      * * Encoders: https://github.com/nextapps-de/flexsearch#encoders
 | |
|      */
 | |
|     export type Encoders =
 | |
|         | false
 | |
|         | "default"
 | |
|         | "simple"
 | |
|         | "balance"
 | |
|         | "advanced"
 | |
|         | "extra"
 | |
|         | ((x: string) => string[]);
 | |
| 
 | |
|     /**
 | |
|      * **Document:**
 | |
|      * * Contextual search: https://github.com/nextapps-de/flexsearch#contextual
 | |
|      */
 | |
|     export interface ContextOptions {
 | |
|         resolution: number;
 | |
|         depth: false | number;
 | |
|         bidirectional: boolean;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * **Document:**
 | |
|      * * Search options: https://github.com/nextapps-de/flexsearch#search-options
 | |
|      */
 | |
|     export interface SearchOptions {
 | |
|         query?: string;
 | |
|         limit?: number;
 | |
|         offset?: number;
 | |
|         suggest?: boolean;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * **Document:**
 | |
|      * * The document descriptor: https://github.com/nextapps-de/flexsearch#the-document-descriptor
 | |
|      */
 | |
|     export interface Descriptor<T, Store extends StoreOption = false> {
 | |
|         id: string | number;
 | |
|         field: string[] | Array<IndexOptions<T, Store>>;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * **Document:**
 | |
|      * * Context Options: https://github.com/nextapps-de/flexsearch#context-options
 | |
|      */
 | |
|     export interface ContextOptions {
 | |
|         resolution: number;
 | |
|         depth: false | number;
 | |
|         bidirectional: boolean;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * **Document:**
 | |
|      * * Charset options: https://github.com/nextapps-de/flexsearch#charset-options
 | |
|      */
 | |
|     export interface CharsetOptions {
 | |
|         split: false | string | RegExp;
 | |
|         rtl: boolean;
 | |
|         encode: (x: string) => string[];
 | |
|     }
 | |
| 
 | |
|     export interface Stemmer {
 | |
|         [key: string]: string;
 | |
|     }
 | |
| 
 | |
|     export interface Matcher {
 | |
|         [key: string]: string;
 | |
|     }
 | |
| 
 | |
|     export type FilterFunction = (x: string) => boolean;
 | |
|     export type FilterArray = string[];
 | |
| 
 | |
|     /**
 | |
|      * **Document:**
 | |
|      * * Language Options: https://github.com/nextapps-de/flexsearch#language-options
 | |
|      * * Language: https://github.com/nextapps-de/flexsearch#languages
 | |
|      */
 | |
|     export interface LanguageOptions {
 | |
|         stemmer: false | string | Stemmer | UnknownFunction;
 | |
|         filter: false | string | FilterArray | FilterFunction;
 | |
|         matcher: false | string | Matcher | UnknownFunction;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * These options will determine how the documents be indexed.
 | |
|      *
 | |
|      * **Generic type parameters:**
 | |
|      *
 | |
|      * @template T The type of the document.
 | |
|      * @template Store If store is enabled.
 | |
|      *
 | |
|      * **Document:**
 | |
|      * * Index options: https://github.com/nextapps-de/flexsearch#index-options
 | |
|      * * Language: https://github.com/nextapps-de/flexsearch#languages
 | |
|      */
 | |
|     export interface IndexOptions<T, Store extends StoreOption = false> {
 | |
|         preset?: Preset;
 | |
|         tokenize?: Tokenizer;
 | |
|         cache?: boolean | number;
 | |
|         resolution?: number;
 | |
|         context?: boolean | IndexOptions<T, Store> | ContextOptions;
 | |
|         optimize?: boolean;
 | |
|         boost?: (words: string[], term: string, index: number) => number;
 | |
| 
 | |
|         // Language-specific Options and Encoding
 | |
|         charset?: CharsetOptions | string;
 | |
|         language?: LanguageOptions | string;
 | |
|         encode?: Encoders;
 | |
|         stemmer?: LanguageOptions["stemmer"];
 | |
|         filter?: LanguageOptions["filter"];
 | |
|         matcher?: LanguageOptions["matcher"];
 | |
|     }
 | |
| 
 | |
|     /************************************/
 | |
|     /* Index Search                     */
 | |
|     /************************************/
 | |
| 
 | |
|     export type IndexSearchResult = Id[];
 | |
| 
 | |
|     /**
 | |
|      * **Document:**
 | |
|      * * Basic usage and variants: https://github.com/nextapps-de/flexsearch#basic-usage-and-variants
 | |
|      * * API overview: https://github.com/nextapps-de/flexsearch#api-overview
 | |
|      * * Usage: https://github.com/nextapps-de/flexsearch#usage
 | |
|      */
 | |
| 
 | |
|     export class Index {
 | |
|         constructor(x?: Preset | IndexOptions<string>);
 | |
|         add(id: Id, item: string): this;
 | |
|         append(id: Id, item: string): this;
 | |
|         update(id: Id, item: string): this;
 | |
|         remove(target: Id): this;
 | |
|         search(query: string, options?: Limit | SearchOptions): IndexSearchResult;
 | |
|         search(
 | |
|             query: string,
 | |
|             limit: number,
 | |
|             options: SearchOptions
 | |
|         ): IndexSearchResult;
 | |
|         search(options: SearchOptions): IndexSearchResult;
 | |
| 
 | |
|         // https://github.com/nextapps-de/flexsearch#check-existence-of-already-indexed-ids
 | |
|         contain(id: Id): boolean;
 | |
| 
 | |
|         export(handler: ExportHandler<string>): Promise<void>;
 | |
|         import(id: Id, item: string): Promise<void>;
 | |
| 
 | |
|         // Async Methods
 | |
|         addAsync(
 | |
|             id: Id,
 | |
|             item: string,
 | |
|             callback?: AsyncCallback<this>
 | |
|         ): Promise<this>;
 | |
|         appendAsync(
 | |
|             id: Id,
 | |
|             item: string,
 | |
|             callback?: AsyncCallback<this>
 | |
|         ): Promise<this>;
 | |
|         updateAsync(
 | |
|             id: Id,
 | |
|             item: string,
 | |
|             callback?: AsyncCallback<this>
 | |
|         ): Promise<this>;
 | |
|         removeAsync(target: Id, callback?: AsyncCallback<this>): Promise<this>;
 | |
|         searchAsync(
 | |
|             query: string,
 | |
|             options?: Limit | SearchOptions,
 | |
|             callback?: AsyncCallback<IndexSearchResult>
 | |
|         ): Promise<IndexSearchResult>;
 | |
|         searchAsync(
 | |
|             query: string,
 | |
|             limit: number,
 | |
|             options?: Limit | SearchOptions
 | |
|         ): IndexSearchResult;
 | |
|         searchAsync(options: SearchOptions): Promise<IndexSearchResult>;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * **Document:**
 | |
|      * * Basic usage and variants: https://github.com/nextapps-de/flexsearch#basic-usage-and-variants
 | |
|      * * API overview: https://github.com/nextapps-de/flexsearch#api-overview
 | |
|      * * Worker index: https://github.com/nextapps-de/flexsearch#worker-index
 | |
|      */
 | |
|     export class Worker {
 | |
|         constructor(x?: Preset | IndexOptions<string>);
 | |
| 
 | |
|         add(id: Id, item: string, callback?: AsyncCallback<Worker>): Promise<this>;
 | |
|         append(id: Id, item: string, callback?: AsyncCallback<this>): Promise<this>;
 | |
|         update(id: Id, item: string, callback?: AsyncCallback<this>): Promise<this>;
 | |
|         remove(target: Id, callback?: AsyncCallback<this>): Promise<this>;
 | |
|         search(
 | |
|             query: string,
 | |
|             options?: Limit | SearchOptions,
 | |
|             callback?: AsyncCallback<IndexSearchResult>
 | |
|         ): Promise<IndexSearchResult>;
 | |
|         search(
 | |
|             query: string,
 | |
|             limit: number,
 | |
|             options?: Limit | SearchOptions
 | |
|         ): IndexSearchResult;
 | |
|         search(options: SearchOptions): Promise<IndexSearchResult>;
 | |
| 
 | |
|         // Async Methods
 | |
|         addAsync(
 | |
|             id: Id,
 | |
|             item: string,
 | |
|             callback?: AsyncCallback<this>
 | |
|         ): Promise<this>;
 | |
|         appendAsync(
 | |
|             id: Id,
 | |
|             item: string,
 | |
|             callback?: AsyncCallback<this>
 | |
|         ): Promise<this>;
 | |
|         updateAsync(
 | |
|             id: Id,
 | |
|             item: string,
 | |
|             callback?: AsyncCallback<this>
 | |
|         ): Promise<this>;
 | |
|         removeAsync(target: Id, callback?: AsyncCallback<this>): Promise<this>;
 | |
|         searchAsync(
 | |
|             query: string,
 | |
|             options?: Limit | SearchOptions,
 | |
|             callback?: AsyncCallback<IndexSearchResult>
 | |
|         ): Promise<IndexSearchResult>;
 | |
|         searchAsync(
 | |
|             query: string,
 | |
|             limit: number,
 | |
|             options?: Limit | SearchOptions
 | |
|         ): IndexSearchResult;
 | |
|         searchAsync(options: SearchOptions): Promise<IndexSearchResult>;
 | |
|     }
 | |
| 
 | |
|     /************************************/
 | |
|     /* Document Search                  */
 | |
|     /************************************/
 | |
| 
 | |
|     /*
 | |
|      * **Document:**
 | |
|      * * Document options: https://github.com/nextapps-de/flexsearch#document-options
 | |
|      */
 | |
|     export interface DocumentOptions<T, Store extends StoreOption = false> {
 | |
|         id: string;
 | |
|         tag?: false | string;
 | |
|         index:
 | |
|             | string
 | |
|             | string[]
 | |
|             | Array<IndexOptions<T, Store> & { field: string }>;
 | |
|         store?: Store;
 | |
|     }
 | |
| 
 | |
|     /*
 | |
|      * **Document:**
 | |
|      * * Index options: https://github.com/nextapps-de/flexsearch#index-options
 | |
|      */
 | |
|     export interface IndexOptionsForDocumentSearch<
 | |
|         T,
 | |
|         Store extends StoreOption = false
 | |
|     > extends IndexOptions<T, Store> {
 | |
|         // Additional Options for Document Indexes
 | |
|         worker?: boolean;
 | |
|         document?: DocumentOptions<T, Store> | Descriptor<T, Store>;
 | |
|     }
 | |
| 
 | |
|     export interface SimpleDocumentSearchResultSetUnit {
 | |
|         field: string;
 | |
|         result: Id[];
 | |
|     }
 | |
| 
 | |
|     export interface EnrichedDocumentSearchResultSetUnitResultUnit<T> {
 | |
|         id: Id[];
 | |
|         doc: T;
 | |
|     }
 | |
| 
 | |
|     export interface EnrichedDocumentSearchResultSetUnit<T> {
 | |
|         field: string;
 | |
|         result: Array<EnrichedDocumentSearchResultSetUnitResultUnit<T>>;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      *  # Document Search Result
 | |
|      *
 | |
|      *  To make your result return the full document:
 | |
|      *  * set `store` to `true` while creating the document;
 | |
|      *  * set `enrich` to `true` while searching.
 | |
|      *
 | |
|      *  If neither of these conditions is met, then the returned result will be a `ISimpleDocumentSearchResult`.
 | |
|      */
 | |
|     export type DocumentSearchResult<
 | |
|         T,
 | |
|         Store extends StoreOption = false,
 | |
|         Enrich extends boolean = false
 | |
|     > = [Store, Enrich] extends [EnrichStoreOption, true]
 | |
|         ? Array<EnrichedDocumentSearchResultSetUnit<T>>
 | |
|         : SimpleDocumentSearchResultSetUnit[];
 | |
| 
 | |
|     /**
 | |
|      * **Document:**
 | |
|      * * Document search options: https://github.com/nextapps-de/flexsearch#document-search-options
 | |
|      */
 | |
|     export interface DocumentSearchOptions<T extends boolean> extends SearchOptions {
 | |
|         index?: string | string[] | SearchOptions[];
 | |
|         tag?: string | string[];
 | |
|         enrich?: T;
 | |
|         bool?: "and" | "or";
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * **Document:**
 | |
|      * * Basic usage and variants: https://github.com/nextapps-de/flexsearch#basic-usage-and-variants
 | |
|      * * API overview: https://github.com/nextapps-de/flexsearch#api-overview
 | |
|      * * Document store: https://github.com/nextapps-de/flexsearch#document-store
 | |
|      */
 | |
|     export class Document<T, Store extends StoreOption = false> {
 | |
|         constructor(
 | |
|             options: IndexOptionsForDocumentSearch<T, Store>,
 | |
|             typeHack?: T
 | |
|         );
 | |
|         add(document: T): this;
 | |
|         add(id: Id, document: T): this;
 | |
|         append(document: T): this;
 | |
|         append(id: Id, document: T): this;
 | |
|         update(document: T): this;
 | |
|         update(id: Id, document: T): this;
 | |
|         remove(target: Id | T): this;
 | |
|         search(query: string, limit?: number): SimpleDocumentSearchResultSetUnit[];
 | |
| 
 | |
|         // https://github.com/nextapps-de/flexsearch#field-search
 | |
|         search(
 | |
|             query: string,
 | |
|             options: string[] | Partial<DocumentSearchOptions<boolean>>
 | |
|         ): SimpleDocumentSearchResultSetUnit[];
 | |
| 
 | |
|         search<Enrich extends boolean = false>(
 | |
|             query: string,
 | |
|             limit?: number,
 | |
|             options?: Partial<DocumentSearchOptions<Enrich>>
 | |
|         ): DocumentSearchResult<T, Store, Enrich>;
 | |
|         search(
 | |
|             options: Partial<DocumentSearchOptions<boolean>>
 | |
|         ): SimpleDocumentSearchResultSetUnit[];
 | |
|         export(handler: ExportHandler<T>): Promise<void>;
 | |
|         import(id: Id, document: T): Promise<void>;
 | |
| 
 | |
|         // Async Methods
 | |
|         addAsync(id: Id, document: T, callback?: AsyncCallback): Promise<this>;
 | |
|         appendAsync(id: Id, document: T, callback?: AsyncCallback): Promise<this>;
 | |
|         updateAsync(id: Id, document: T, callback?: AsyncCallback): Promise<this>;
 | |
|         removeAsync(target: Id | T, callback?: AsyncCallback): Promise<this>;
 | |
|         searchAsync<Enrich extends boolean = false>(
 | |
|             query: string,
 | |
|             options: string[] | Partial<DocumentSearchOptions<Enrich>>
 | |
|         ): Promise<DocumentSearchResult<T, Store, Enrich>>;
 | |
|         searchAsync(
 | |
|             query: string,
 | |
|             limit?: number
 | |
|         ): Promise<SimpleDocumentSearchResultSetUnit[]>;
 | |
|         searchAsync(
 | |
|             query: string,
 | |
|             limit: number,
 | |
|             callback: AsyncCallback<SimpleDocumentSearchResultSetUnit[]>
 | |
|         ): Promise<this>;
 | |
|         searchAsync<Enrich extends boolean = false>(
 | |
|             query: string,
 | |
|             options: Partial<DocumentSearchOptions<Enrich>>,
 | |
|             callback: AsyncCallback<DocumentSearchResult<T, Store, Enrich>>
 | |
|         ): Promise<this>;
 | |
|         searchAsync<Enrich extends boolean = false>(
 | |
|             options: Partial<DocumentSearchOptions<Enrich>>
 | |
|         ): Promise<DocumentSearchResult<T, Store, Enrich>>;
 | |
|         searchAsync<Enrich extends boolean = false>(
 | |
|             options: Partial<DocumentSearchOptions<Enrich>>,
 | |
|             callback: AsyncCallback<DocumentSearchResult<T, Store, Enrich>>
 | |
|         ): Promise<this>;
 | |
|     }
 | |
| 
 | |
|     /************************************/
 | |
|     /* Miscellaneous                    */
 | |
|     /************************************/
 | |
|     export function create(options: IndexOptions<string>): Index;
 | |
|     export function registerCharset(name: string, charset: CharsetOptions): void;
 | |
|     export function registerLanguage(
 | |
|         name: string,
 | |
|         language: LanguageOptions
 | |
|     ): void;
 | |
| } |