1
0
mirror of https://github.com/nextapps-de/flexsearch.git synced 2025-08-28 16:20:04 +02:00

resolver types within index.d.ts

This commit is contained in:
Thomas Wilkerling
2025-05-10 12:10:38 +02:00
parent 5c341e4295
commit 32f08a2439
2 changed files with 127 additions and 105 deletions

206
index.d.ts vendored
View File

@@ -195,10 +195,10 @@ declare module "flexsearch" {
W extends WorkerType = false, W extends WorkerType = false,
S extends StorageInterface | boolean = false, S extends StorageInterface | boolean = false,
R extends boolean = true, R extends boolean = true,
D extends DocumentData = undefined //D extends DocumentData = undefined
> = R extends true > = R extends true
? DefaultSearchResults ? DefaultSearchResults
: Resolver<D, W, S> : Resolver<undefined, W, S>
/** /**
* Basic usage and variants: https://github.com/nextapps-de/flexsearch#basic-usage-and-variants \ * Basic usage and variants: https://github.com/nextapps-de/flexsearch#basic-usage-and-variants \
@@ -210,12 +210,12 @@ declare module "flexsearch" {
W extends WorkerType = false, W extends WorkerType = false,
S extends StorageInterface | boolean = false, S extends StorageInterface | boolean = false,
R extends boolean = true, R extends boolean = true,
D extends DocumentData = undefined //D extends DocumentData = undefined
> = W extends false > = W extends false
? S extends false ? S extends false
? SearchResults<W, S, R, D> ? SearchResults<W, S, R>
: Promise<SearchResults<W, S, R, D>> : Promise<SearchResults<W, S, R>>
: Promise<SearchResults<W, S, R, D>> : Promise<SearchResults<W, S, R>>
export class Index< export class Index<
W extends WorkerType = false, W extends WorkerType = false,
@@ -501,7 +501,7 @@ declare module "flexsearch" {
D extends DocumentData = DocumentData, D extends DocumentData = DocumentData,
H extends HighlightOptions | boolean = false, H extends HighlightOptions | boolean = false,
R extends boolean = true, R extends boolean = true,
E extends boolean = false E extends boolean = H extends HighlightOptions ? true : false
> = FieldName<D> | DocumentSearchOptions<D, H, true, R, E>; > = FieldName<D> | DocumentSearchOptions<D, H, true, R, E>;
export type DocumentSearchResults< export type DocumentSearchResults<
@@ -509,21 +509,40 @@ declare module "flexsearch" {
H extends HighlightOptions | boolean = false, H extends HighlightOptions | boolean = false,
P extends PluckOptions<D, H, R, E> | boolean = false, P extends PluckOptions<D, H, R, E> | boolean = false,
R extends boolean = true, R extends boolean = true,
E extends boolean = false, E extends boolean = H extends HighlightOptions ? true : false,
M extends boolean = false
> = P extends false
? M extends true
? MergedDocumentSearchResults<D>
: E extends true
? EnrichedDocumentSearchResults<D>
: H extends false
? DefaultDocumentSearchResults<D>
: EnrichedDocumentSearchResults<D>
: E extends true
? EnrichedResults<D>
: DefaultSearchResults;
export type DocumentSearchResultsWrapper<
D extends DocumentData = DocumentData,
W extends WorkerType = false,
S extends StorageInterface | boolean = false,
H extends HighlightOptions | boolean = false,
P extends PluckOptions<D, H, R, E> | boolean = false,
R extends boolean = true,
E extends boolean = H extends HighlightOptions ? true : false,
M extends boolean = false M extends boolean = false
> = R extends true > = R extends true
? P extends false ? W extends false
? M extends true ? S extends false
? MergedDocumentSearchResults<D> ? DocumentSearchResults<D, H, P, R, E, M>
: E extends true : Promise<DocumentSearchResults<D, H, P, R, E, M>>
? EnrichedDocumentSearchResults<D> : Promise<DocumentSearchResults<D, H, P, R, E, M>>
: H extends false : W extends false
? DefaultDocumentSearchResults<D> ? S extends false
: EnrichedDocumentSearchResults<D> ? Resolver<D, W, S, H, R, E>
: E extends true : Promise<Resolver<D, W, S, H, R, E>>
? EnrichedResults<D> : Promise<Resolver<D, W, S, H, R, E>>;
: DefaultSearchResults
: Resolver;
/** /**
* **Document:** * **Document:**
@@ -534,7 +553,7 @@ declare module "flexsearch" {
H extends HighlightOptions | boolean = false, H extends HighlightOptions | boolean = false,
P extends PluckOptions<D, H, R, E> | boolean = false, P extends PluckOptions<D, H, R, E> | boolean = false,
R extends boolean = true, R extends boolean = true,
E extends boolean = false, E extends boolean = H extends HighlightOptions ? true : false,
M extends boolean = false, M extends boolean = false,
> = SearchOptions<R> & { > = SearchOptions<R> & {
tag?: {[field: FieldName]: TagName} | Array<{[field: FieldName]: TagName}>; tag?: {[field: FieldName]: TagName} | Array<{[field: FieldName]: TagName}>;
@@ -557,21 +576,6 @@ declare module "flexsearch" {
[key: string]: DocumentValue | DocumentValue[]; [key: string]: DocumentValue | DocumentValue[];
}; };
export type DocumentSearchResultsWrapper<
D extends DocumentData = DocumentData,
W extends WorkerType = false,
S extends StorageInterface | boolean = false,
H extends HighlightOptions | boolean = false,
P extends PluckOptions<D, H, R, E> | boolean = false,
R extends boolean = true,
E extends boolean = false,
M extends boolean = false
> = W extends false
? S extends false
? DocumentSearchResults<D, H, P, R, E, M>
: Promise<DocumentSearchResults<D, H, P, R, E, M>>
: Promise<DocumentSearchResults<D, H, P, R, E, M>>
/** /**
* Basic usage and variants: https://github.com/nextapps-de/flexsearch#basic-usage-and-variants \ * Basic usage and variants: https://github.com/nextapps-de/flexsearch#basic-usage-and-variants \
* API overview: https://github.com/nextapps-de/flexsearch#api-overview \ * API overview: https://github.com/nextapps-de/flexsearch#api-overview \
@@ -626,7 +630,7 @@ declare module "flexsearch" {
H extends HighlightOptions | boolean = false, H extends HighlightOptions | boolean = false,
P extends PluckOptions<D, H, R, E> | boolean = false, P extends PluckOptions<D, H, R, E> | boolean = false,
R extends boolean = true, R extends boolean = true,
E extends boolean = false, E extends boolean = H extends HighlightOptions ? true : false,
M extends boolean = false M extends boolean = false
>( >(
query: string, query: string,
@@ -636,7 +640,7 @@ declare module "flexsearch" {
H extends HighlightOptions | boolean = false, H extends HighlightOptions | boolean = false,
P extends PluckOptions<D, H, R, E> | boolean = false, P extends PluckOptions<D, H, R, E> | boolean = false,
R extends boolean = true, R extends boolean = true,
E extends boolean = false, E extends boolean = H extends HighlightOptions ? true : false,
M extends boolean = false M extends boolean = false
>( >(
query: string, query: string,
@@ -648,7 +652,7 @@ declare module "flexsearch" {
H extends HighlightOptions | boolean = false, H extends HighlightOptions | boolean = false,
P extends PluckOptions<D, H, R, E> | boolean = false, P extends PluckOptions<D, H, R, E> | boolean = false,
R extends boolean = true, R extends boolean = true,
E extends boolean = false, E extends boolean = H extends HighlightOptions ? true : false,
M extends boolean = false M extends boolean = false
>( >(
query: string, query: string,
@@ -660,7 +664,7 @@ declare module "flexsearch" {
H extends HighlightOptions | boolean = false, H extends HighlightOptions | boolean = false,
P extends PluckOptions<D, H, R, E> | boolean = false, P extends PluckOptions<D, H, R, E> | boolean = false,
R extends boolean = true, R extends boolean = true,
E extends boolean = false, E extends boolean = H extends HighlightOptions ? true : false,
M extends boolean = false M extends boolean = false
>( >(
query: string, query: string,
@@ -672,7 +676,7 @@ declare module "flexsearch" {
H extends HighlightOptions | boolean = false, H extends HighlightOptions | boolean = false,
P extends PluckOptions<D, H, R, E> | boolean = false, P extends PluckOptions<D, H, R, E> | boolean = false,
R extends boolean = true, R extends boolean = true,
E extends boolean = false, E extends boolean = H extends HighlightOptions ? true : false,
M extends boolean = false M extends boolean = false
>( >(
options: DocumentSearchOptions<D, H, P, R, E, M>, options: DocumentSearchOptions<D, H, P, R, E, M>,
@@ -681,7 +685,7 @@ declare module "flexsearch" {
H extends HighlightOptions | boolean = false, H extends HighlightOptions | boolean = false,
P extends PluckOptions<D, H, R, E> | boolean = false, P extends PluckOptions<D, H, R, E> | boolean = false,
R extends boolean = true, R extends boolean = true,
E extends boolean = false, E extends boolean = H extends HighlightOptions ? true : false,
M extends boolean = false M extends boolean = false
>( >(
options: DocumentSearchOptions<D, H, P, R, E, M>, options: DocumentSearchOptions<D, H, P, R, E, M>,
@@ -766,118 +770,118 @@ declare module "flexsearch" {
H extends HighlightOptions | boolean = false, H extends HighlightOptions | boolean = false,
P extends PluckOptions<D, H, R, E> | boolean = false, P extends PluckOptions<D, H, R, E> | boolean = false,
R extends boolean = true, R extends boolean = true,
E extends boolean = false, E extends boolean = H extends HighlightOptions ? true : false,
M extends boolean = false M extends boolean = false
>( >(
query: string, query: string,
callback?: AsyncCallback<DocumentSearchResults<D, H, P, R, E, M>>, callback?: AsyncCallback<DocumentSearchResultsWrapper<D, W, S, H, P, R, E, M>>,
): Promise<DocumentSearchResults<D, H, P, R, E, M>> ): Promise<DocumentSearchResultsWrapper<D, W, S, H, P, R, E, M>>
searchCacheAsync< searchCacheAsync<
H extends HighlightOptions | boolean = false, H extends HighlightOptions | boolean = false,
P extends PluckOptions<D, H, R, E> | boolean = false, P extends PluckOptions<D, H, R, E> | boolean = false,
R extends boolean = true, R extends boolean = true,
E extends boolean = false, E extends boolean = H extends HighlightOptions ? true : false,
M extends boolean = false M extends boolean = false
>( >(
query: string, query: string,
callback?: AsyncCallback<DocumentSearchResults<D, H, P, R, E, M>>, callback?: AsyncCallback<DocumentSearchResultsWrapper<D, W, S, H, P, R, E, M>>,
): Promise<DocumentSearchResults<D, H, P, R, E, M>> ): Promise<DocumentSearchResultsWrapper<D, W, S, H, P, R, E, M>>
/** @deprecated Pass "limit" within options */ /** @deprecated Pass "limit" within options */
searchAsync< searchAsync<
H extends HighlightOptions | boolean = false, H extends HighlightOptions | boolean = false,
P extends PluckOptions<D, H, R, E> | boolean = false, P extends PluckOptions<D, H, R, E> | boolean = false,
R extends boolean = true, R extends boolean = true,
E extends boolean = false, E extends boolean = H extends HighlightOptions ? true : false,
M extends boolean = false M extends boolean = false
>( >(
query: string, query: string,
limit: Limit, limit: Limit,
callback?: AsyncCallback<DocumentSearchResults<D, H, P, R, E, M>>, callback?: AsyncCallback<DocumentSearchResultsWrapper<D, W, S, H, P, R, E, M>>,
): Promise<DocumentSearchResults<D, H, P, R, E, M>> ): Promise<DocumentSearchResultsWrapper<D, W, S, H, P, R, E, M>>
/** @deprecated Pass "limit" within options */ /** @deprecated Pass "limit" within options */
searchCacheAsync< searchCacheAsync<
H extends HighlightOptions | boolean = false, H extends HighlightOptions | boolean = false,
P extends PluckOptions<D, H, R, E> | boolean = false, P extends PluckOptions<D, H, R, E> | boolean = false,
R extends boolean = true, R extends boolean = true,
E extends boolean = false, E extends boolean = H extends HighlightOptions ? true : false,
M extends boolean = false M extends boolean = false
>( >(
query: string, query: string,
limit: Limit, limit: Limit,
callback?: AsyncCallback<DocumentSearchResults<D, H, P, R, E, M>>, callback?: AsyncCallback<DocumentSearchResultsWrapper<D, W, S, H, P, R, E, M>>,
): Promise<DocumentSearchResults<D, H, P, R, E, M>> ): Promise<DocumentSearchResultsWrapper<D, W, S, H, P, R, E, M>>
/** @deprecated Pass "limit" within options */ /** @deprecated Pass "limit" within options */
searchAsync< searchAsync<
H extends HighlightOptions | boolean = false, H extends HighlightOptions | boolean = false,
P extends PluckOptions<D, H, R, E> | boolean = false, P extends PluckOptions<D, H, R, E> | boolean = false,
R extends boolean = true, R extends boolean = true,
E extends boolean = false, E extends boolean = H extends HighlightOptions ? true : false,
M extends boolean = false M extends boolean = false
>( >(
query: string, query: string,
limit: Limit, limit: Limit,
options?: DocumentSearchOptions<D, H, P, R, E, M>, options?: DocumentSearchOptions<D, H, P, R, E, M>,
callback?: AsyncCallback<DocumentSearchResults<D, H, P, R, E, M>>, callback?: AsyncCallback<DocumentSearchResultsWrapper<D, W, S, H, P, R, E, M>>,
): Promise<DocumentSearchResults<D, H, P, R, E, M>>; ): Promise<DocumentSearchResultsWrapper<D, W, S, H, P, R, E, M>>;
/** @deprecated Pass "limit" within options */ /** @deprecated Pass "limit" within options */
searchCacheAsync< searchCacheAsync<
H extends HighlightOptions | boolean = false, H extends HighlightOptions | boolean = false,
P extends PluckOptions<D, H, R, E> | boolean = false, P extends PluckOptions<D, H, R, E> | boolean = false,
R extends boolean = true, R extends boolean = true,
E extends boolean = false, E extends boolean = H extends HighlightOptions ? true : false,
M extends boolean = false M extends boolean = false
>( >(
query: string, query: string,
limit: Limit, limit: Limit,
options?: DocumentSearchOptions<D, H, P, R, E, M>, options?: DocumentSearchOptions<D, H, P, R, E, M>,
callback?: AsyncCallback<DocumentSearchResults<D, H, P, R, E, M>>, callback?: AsyncCallback<DocumentSearchResultsWrapper<D, W, S, H, P, R, E, M>>,
): Promise<DocumentSearchResults<D, H, P, R, E, M>>; ): Promise<DocumentSearchResultsWrapper<D, W, S, H, P, R, E, M>>;
searchAsync< searchAsync<
H extends HighlightOptions | boolean = false, H extends HighlightOptions | boolean = false,
P extends PluckOptions<D, H, R, E> | boolean = false, P extends PluckOptions<D, H, R, E> | boolean = false,
R extends boolean = true, R extends boolean = true,
E extends boolean = false, E extends boolean = H extends HighlightOptions ? true : false,
M extends boolean = false M extends boolean = false
>( >(
query: string, query: string,
options?: DocumentSearchOptions<D, H, P, R, E, M>, options?: DocumentSearchOptions<D, H, P, R, E, M>,
callback?: AsyncCallback<DocumentSearchResults<D, H, P, R, E, M>>, callback?: AsyncCallback<DocumentSearchResultsWrapper<D, W, S, H, P, R, E, M>>,
): Promise<DocumentSearchResults<D, H, P, R, E, M>> ): Promise<DocumentSearchResultsWrapper<D, W, S, H, P, R, E, M>>
searchCacheAsync< searchCacheAsync<
H extends HighlightOptions | boolean = false, H extends HighlightOptions | boolean = false,
P extends PluckOptions<D, H, R, E> | boolean = false, P extends PluckOptions<D, H, R, E> | boolean = false,
R extends boolean = true, R extends boolean = true,
E extends boolean = false, E extends boolean = H extends HighlightOptions ? true : false,
M extends boolean = false M extends boolean = false
>( >(
query: string, query: string,
options?: DocumentSearchOptions<D, H, P, R, E, M>, options?: DocumentSearchOptions<D, H, P, R, E, M>,
callback?: AsyncCallback<DocumentSearchResults<D, H, P, R, E, M>>, callback?: AsyncCallback<DocumentSearchResultsWrapper<D, W, S, H, P, R, E, M>>,
): Promise<DocumentSearchResults<D, H, P, R, E, M>> ): Promise<DocumentSearchResultsWrapper<D, W, S, H, P, R, E, M>>
searchAsync< searchAsync<
H extends HighlightOptions | boolean = false, H extends HighlightOptions | boolean = false,
P extends PluckOptions<D, H, R, E> | boolean = false, P extends PluckOptions<D, H, R, E> | boolean = false,
R extends boolean = true, R extends boolean = true,
E extends boolean = false, E extends boolean = H extends HighlightOptions ? true : false,
M extends boolean = false M extends boolean = false
>( >(
options: DocumentSearchOptions<D, H, P, R, E, M>, options: DocumentSearchOptions<D, H, P, R, E, M>,
callback?: AsyncCallback<DocumentSearchResults<D, H, P, R, E, M>>, callback?: AsyncCallback<DocumentSearchResultsWrapper<D, W, S, H, P, R, E, M>>,
): Promise<DocumentSearchResults<D, H, P, R, E, M>>; ): Promise<DocumentSearchResultsWrapper<D, W, S, H, P, R, E, M>>;
searchCacheAsync< searchCacheAsync<
H extends HighlightOptions | boolean = false, H extends HighlightOptions | boolean = false,
P extends PluckOptions<D, H, R, E> | boolean = false, P extends PluckOptions<D, H, R, E> | boolean = false,
R extends boolean = true, R extends boolean = true,
E extends boolean = false, E extends boolean = H extends HighlightOptions ? true : false,
M extends boolean = false M extends boolean = false
>( >(
options: DocumentSearchOptions<D, H, P, R, E, M>, options: DocumentSearchOptions<D, H, P, R, E, M>,
callback?: AsyncCallback<DocumentSearchResults<D, H, P, R, E, M>>, callback?: AsyncCallback<DocumentSearchResultsWrapper<D, W, S, H, P, R, E, M>>,
): Promise<DocumentSearchResults<D, H, P, R, E, M>>; ): Promise<DocumentSearchResultsWrapper<D, W, S, H, P, R, E, M>>;
} }
type IdType = type IdType =
@@ -902,7 +906,7 @@ declare module "flexsearch" {
"uint64" | "uint64" |
"bigint"; "bigint";
type PersistentOptions = { export type PersistentOptions = {
name?: string; name?: string;
type?: IdType; type?: IdType;
db?: any; db?: any;
@@ -910,7 +914,6 @@ declare module "flexsearch" {
export type DefaultResolve< export type DefaultResolve<
D extends DocumentData = undefined, D extends DocumentData = undefined,
H extends HighlightOptions | boolean = false,
R extends boolean = true, R extends boolean = true,
E extends boolean = false E extends boolean = false
> = { > = {
@@ -921,10 +924,6 @@ declare module "flexsearch" {
enrich?: D extends DocumentData enrich?: D extends DocumentData
? R extends true ? E : false ? R extends true ? E : false
: false; : false;
/** only usable when "resolve" was not set to false */
highlight?: D extends DocumentData
? R extends true ? H : false
: false;
}; };
export type ResolverOptions< export type ResolverOptions<
@@ -933,8 +932,8 @@ declare module "flexsearch" {
S extends StorageInterface | boolean = false, S extends StorageInterface | boolean = false,
H extends HighlightOptions | boolean = false, H extends HighlightOptions | boolean = false,
R extends boolean = false, R extends boolean = false,
E extends boolean = false E extends boolean = H extends HighlightOptions ? true : false
> = DefaultResolve<D, H, R, E> & { > = DefaultResolve<D, R, E> & {
query?: string; query?: string;
index?: Index<W, S> | Document<D, W, S>; index?: Index<W, S> | Document<D, W, S>;
pluck?: FieldName<D>; pluck?: FieldName<D>;
@@ -946,6 +945,10 @@ declare module "flexsearch" {
not?: ResolverOptions<D, W, S, H, R, E> | Array<ResolverOptions<D, W, S, H, R, E>>; not?: ResolverOptions<D, W, S, H, R, E> | Array<ResolverOptions<D, W, S, H, R, E>>;
boost?: number; boost?: number;
suggest?: boolean; suggest?: boolean;
/** only usable when "resolve" was not set to false */
highlight?: D extends DocumentData
? R extends true ? H : false
: false;
}; };
export type HighlightBoundaryOptions = { export type HighlightBoundaryOptions = {
@@ -988,23 +991,42 @@ declare module "flexsearch" {
export class Resolver< export class Resolver<
D extends DocumentData = undefined, D extends DocumentData = undefined,
W extends WorkerType = false, W extends WorkerType = false,
S extends StorageInterface | boolean = false S extends StorageInterface | boolean = false,
H extends HighlightOptions | boolean = false,
R extends boolean = false,
E extends boolean = H extends HighlightOptions ? true : false
> { > {
result: IntermediateSearchResults; result: IntermediateSearchResults;
constructor(options?: ResolverOptions<D, W, S> | IntermediateSearchResults); constructor(options?: ResolverOptions<D, W, S> | IntermediateSearchResults);
and<R extends boolean = false>(...args: ResolverOptions<D, W, S, false, R>[]): and<d extends DocumentData = D,
IndexSearchResultsWrapper<W, S, R, D>; h extends HighlightOptions | boolean = H,
r extends boolean = R,
e extends boolean = h extends HighlightOptions ? true : E
>(...args: ResolverOptions<d, W, S, h, r, e>[]):
DocumentSearchResultsWrapper<d, W, S, h, true, r, e>;
or<R extends boolean = false>(...args: ResolverOptions<D, W, S, false, R>[]): or<d extends DocumentData = D,
IndexSearchResultsWrapper<W, S, R, D>; h extends HighlightOptions | boolean = H,
r extends boolean = R,
e extends boolean = h extends HighlightOptions ? true : E
>(...args: ResolverOptions<d, W, S, h, r, e>[]):
DocumentSearchResultsWrapper<d, W, S, h, true, r, e>;
xor<R extends boolean = false>(...args: ResolverOptions<D, W, S, false, R>[]): xor<d extends DocumentData = D,
IndexSearchResultsWrapper<W, S, R, D>; h extends HighlightOptions | boolean = H,
r extends boolean = R,
e extends boolean = h extends HighlightOptions ? true : E
>(...args: ResolverOptions<d, W, S, h, r, e>[]):
DocumentSearchResultsWrapper<d, W, S, h, true, r, e>;
not<R extends boolean = false>(...args: ResolverOptions<D, W, S, false, R>[]): not<d extends DocumentData = D,
IndexSearchResultsWrapper<W, S, R, D>; h extends HighlightOptions | boolean = H,
r extends boolean = R,
e extends boolean = h extends HighlightOptions ? true : E
>(...args: ResolverOptions<d, W, S, h, r, e>[]):
DocumentSearchResultsWrapper<d, W, S, h, true, r, e>;
limit(limit: number): Resolver<D, W, S>; limit(limit: number): Resolver<D, W, S>;
@@ -1012,7 +1034,7 @@ declare module "flexsearch" {
boost(boost: number): Resolver<D, W, S>; boost(boost: number): Resolver<D, W, S>;
resolve(options?: DefaultResolve<D>): IndexSearchResultsWrapper<W, S, true, D>; resolve<e extends boolean = E>(options?: DefaultResolve<D, true, e>): DocumentSearchResultsWrapper<D, W, S, false, true, true, e>;
} }
export class StorageInterface { export class StorageInterface {
@@ -1067,8 +1089,8 @@ declare module "flexsearch/db/*" {
declare module "flexsearch/lang/*" { declare module "flexsearch/lang/*" {
import { EncoderOptions } from "flexsearch"; import { EncoderOptions } from "flexsearch";
const Options: EncoderOptions; //const Options: EncoderOptions;
export default Options; export default EncoderOptions;
} }
// https://www.typescriptlang.org/docs/handbook/jsdoc-supported-types.html // https://www.typescriptlang.org/docs/handbook/jsdoc-supported-types.html

View File

@@ -48,7 +48,7 @@ async function test_index() {
const res3: DefaultSearchResults = res2.resolve(); const res3: DefaultSearchResults = res2.resolve();
const res4: Resolver<undefined, false, IndexedDB> = new Resolver({ index: index3 }); const res4: Resolver<undefined, false, IndexedDB> = new Resolver({ index: index3 });
const res5: Promise<Resolver<undefined, false, IndexedDB>> = res4.and(); const res5: Promise<Resolver<undefined, false, IndexedDB>> = res4.and({});
const res6: Promise<Resolver<undefined, false, IndexedDB>> = res4.and({ index: index3 }); const res6: Promise<Resolver<undefined, false, IndexedDB>> = res4.and({ index: index3 });
const res7: Promise<DefaultSearchResults> = (await res6).limit(100).resolve(); const res7: Promise<DefaultSearchResults> = (await res6).limit(100).resolve();
@@ -89,14 +89,14 @@ async function test_index() {
async function test_document() { async function test_document() {
// ---------------------------------------------------------------- type doctype = {
const document = new Document<{
id: number, id: number,
title: string, title: string,
description: string, description: string,
tags: string[] tags: string[]
}>({ };
const document = new Document<doctype>({
encoder: "LatinBalance", encoder: "LatinBalance",
resolution: 9, resolution: 9,
context: false, context: false,
@@ -108,7 +108,7 @@ async function test_document() {
}, },
}); });
type doctype = { type doctype2 = {
id: number, id: number,
meta: { meta: {
title: string, title: string,
@@ -117,7 +117,7 @@ async function test_document() {
} }
}; };
const document2 = new Document<doctype>({ const document2 = new Document<doctype2>({
document: { document: {
id: "id", id: "id",
store: [{ store: [{
@@ -176,25 +176,25 @@ async function test_document() {
const doc11: Promise<DefaultDocumentSearchResults> = document.searchCacheAsync({}); const doc11: Promise<DefaultDocumentSearchResults> = document.searchCacheAsync({});
const doc13: DefaultDocumentSearchResults = document.search({ resolve: true }); const doc13: DefaultDocumentSearchResults = document.search({ resolve: true });
const doc14: Resolver = document.search({ resolve: false }); const doc14: Resolver<doctype> = document.search({ resolve: false });
const doc15: DefaultSearchResults = doc14.resolve({}); const doc15: DefaultSearchResults = doc14.resolve({});
const doc16: DefaultSearchResults = doc14.and({ resolve: true }); const doc16: DefaultSearchResults = doc14.and({ resolve: true });
const doc17: EnrichedResults = doc14.resolve({ enrich: true }); const doc17: EnrichedResults = doc14.resolve({ enrich: true });
const doc18: EnrichedResults = doc14.and({ resolve: true, enrich: true }); const doc18: EnrichedResults = doc14.and({ resolve: true, enrich: true });
const doc19: Resolver = doc14.and({ index: document, field: "title" }); const doc19: Resolver<doctype> = doc14.and({ index: document, field: "title" });
const doc20: Resolver = doc19.or({ index: document2, pluck: "meta:title" }); const doc20: Resolver<doctype2> = doc19.or({ index: document2, pluck: "meta:title" });
const doc21: DefaultSearchResults = doc20.resolve(); const doc21: DefaultSearchResults = doc20.resolve();
const doc22: EnrichedResults = doc20.resolve({ enrich: true }); const doc22: EnrichedResults = doc20.resolve({ enrich: true });
// highlight within last resolver stage is work in progress: // highlight within last resolver stage is work in progress:
const doc23: EnrichedResults = doc20.and({ resolve: true, highlight: { template: "", boundary: {} } }); const doc23: EnrichedResults = doc20.and({ resolve: true, highlight: { template: "", boundary: {} } });
const doc24: Resolver = new Resolver({ index: document }); const doc24: Resolver<doctype2> = new Resolver({ index: document2 });
const doc25: EnrichedResults = doc24.and({}, { index: document2, resolve: true, enrich: true }); const doc25: EnrichedResults = doc24.and({}, { index: document, resolve: true, enrich: true });
const doc26: EnrichedResults = doc24.and({}, { index: document2 }).resolve({ enrich: true }); const doc26: EnrichedResults = doc24.and({}, { index: document2 }).resolve({ enrich: true });
// highlight within last resolver stage is work in progress: // highlight within last resolver stage is work in progress:
const doc27: EnrichedResults = doc24.and({}, { index: document2, resolve: true, highlight: "" }); const doc27: EnrichedResults = doc24.and({}, { index: document2, resolve: true, highlight: "" });
const doc28: DefaultSearchResults = document2.search({ pluck: { field: "meta:title", limit: 10 } }); const doc28: DefaultSearchResults = document2.search({ pluck: { field: "meta:title", limit: 10 } });
const doc30: EnrichedResults = document2.search({ pluck: { field: "meta:title", highlight: true } }); const doc30: EnrichedResults = document2.search({ highlight: true, enrich: true, pluck: { field: "meta:title"} });
// highlight on .resolve() is never supported: // highlight on .resolve() is never supported:
// @ts-expect-error // @ts-expect-error