@depup/typesense 3.0.3-depup.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +31 -0
- package/changes.json +10 -0
- package/dist/typesense.js +13031 -0
- package/dist/typesense.js.map +1 -0
- package/dist/typesense.min.js +3 -0
- package/dist/typesense.min.js.LICENSE.txt +1 -0
- package/dist/typesense.min.js.map +1 -0
- package/lib/Typesense/Alias.d.ts +10 -0
- package/lib/Typesense/Alias.js +30 -0
- package/lib/Typesense/Alias.js.map +1 -0
- package/lib/Typesense/Aliases.d.ts +18 -0
- package/lib/Typesense/Aliases.js +36 -0
- package/lib/Typesense/Aliases.js.map +1 -0
- package/lib/Typesense/Analytics.d.ts +15 -0
- package/lib/Typesense/Analytics.js +40 -0
- package/lib/Typesense/Analytics.js.map +1 -0
- package/lib/Typesense/AnalyticsEvent.d.ts +5 -0
- package/lib/Typesense/AnalyticsEvent.js +3 -0
- package/lib/Typesense/AnalyticsEvent.js.map +1 -0
- package/lib/Typesense/AnalyticsEvents.d.ts +26 -0
- package/lib/Typesense/AnalyticsEvents.js +37 -0
- package/lib/Typesense/AnalyticsEvents.js.map +1 -0
- package/lib/Typesense/AnalyticsRule.d.ts +47 -0
- package/lib/Typesense/AnalyticsRule.js +30 -0
- package/lib/Typesense/AnalyticsRule.js.map +1 -0
- package/lib/Typesense/AnalyticsRuleV1.d.ts +35 -0
- package/lib/Typesense/AnalyticsRuleV1.js +30 -0
- package/lib/Typesense/AnalyticsRuleV1.js.map +1 -0
- package/lib/Typesense/AnalyticsRules.d.ts +16 -0
- package/lib/Typesense/AnalyticsRules.js +49 -0
- package/lib/Typesense/AnalyticsRules.js.map +1 -0
- package/lib/Typesense/AnalyticsRulesV1.d.ts +13 -0
- package/lib/Typesense/AnalyticsRulesV1.js +37 -0
- package/lib/Typesense/AnalyticsRulesV1.js.map +1 -0
- package/lib/Typesense/AnalyticsV1.d.ts +19 -0
- package/lib/Typesense/AnalyticsV1.js +49 -0
- package/lib/Typesense/AnalyticsV1.js.map +1 -0
- package/lib/Typesense/ApiCall.d.ts +99 -0
- package/lib/Typesense/ApiCall.js +777 -0
- package/lib/Typesense/ApiCall.js.map +1 -0
- package/lib/Typesense/Client.d.ts +79 -0
- package/lib/Typesense/Client.js +170 -0
- package/lib/Typesense/Client.js.map +1 -0
- package/lib/Typesense/Collection.d.ts +63 -0
- package/lib/Typesense/Collection.js +109 -0
- package/lib/Typesense/Collection.js.map +1 -0
- package/lib/Typesense/Collections.d.ts +42 -0
- package/lib/Typesense/Collections.js +34 -0
- package/lib/Typesense/Collections.js.map +1 -0
- package/lib/Typesense/Configuration.d.ts +143 -0
- package/lib/Typesense/Configuration.js +113 -0
- package/lib/Typesense/Configuration.js.map +1 -0
- package/lib/Typesense/Conversation.d.ts +22 -0
- package/lib/Typesense/Conversation.js +37 -0
- package/lib/Typesense/Conversation.js.map +1 -0
- package/lib/Typesense/ConversationModel.d.ts +30 -0
- package/lib/Typesense/ConversationModel.js +37 -0
- package/lib/Typesense/ConversationModel.js.map +1 -0
- package/lib/Typesense/ConversationModels.d.ts +10 -0
- package/lib/Typesense/ConversationModels.js +37 -0
- package/lib/Typesense/ConversationModels.js.map +1 -0
- package/lib/Typesense/Conversations.d.ts +17 -0
- package/lib/Typesense/Conversations.js +42 -0
- package/lib/Typesense/Conversations.js.map +1 -0
- package/lib/Typesense/CurationSet.d.ts +17 -0
- package/lib/Typesense/CurationSet.js +52 -0
- package/lib/Typesense/CurationSet.js.map +1 -0
- package/lib/Typesense/CurationSetItem.d.ts +15 -0
- package/lib/Typesense/CurationSetItem.js +38 -0
- package/lib/Typesense/CurationSetItem.js.map +1 -0
- package/lib/Typesense/CurationSetItems.d.ts +9 -0
- package/lib/Typesense/CurationSetItems.js +23 -0
- package/lib/Typesense/CurationSetItems.js.map +1 -0
- package/lib/Typesense/CurationSets.d.ts +56 -0
- package/lib/Typesense/CurationSets.js +19 -0
- package/lib/Typesense/CurationSets.js.map +1 -0
- package/lib/Typesense/Debug.d.ts +10 -0
- package/lib/Typesense/Debug.js +19 -0
- package/lib/Typesense/Debug.js.map +1 -0
- package/lib/Typesense/Document.d.ts +12 -0
- package/lib/Typesense/Document.js +41 -0
- package/lib/Typesense/Document.js.map +1 -0
- package/lib/Typesense/Documents.d.ts +196 -0
- package/lib/Typesense/Documents.js +204 -0
- package/lib/Typesense/Documents.js.map +1 -0
- package/lib/Typesense/Errors/HTTPError.d.ts +3 -0
- package/lib/Typesense/Errors/HTTPError.js +13 -0
- package/lib/Typesense/Errors/HTTPError.js.map +1 -0
- package/lib/Typesense/Errors/ImportError.d.ts +15 -0
- package/lib/Typesense/Errors/ImportError.js +16 -0
- package/lib/Typesense/Errors/ImportError.js.map +1 -0
- package/lib/Typesense/Errors/MissingConfigurationError.d.ts +3 -0
- package/lib/Typesense/Errors/MissingConfigurationError.js +13 -0
- package/lib/Typesense/Errors/MissingConfigurationError.js.map +1 -0
- package/lib/Typesense/Errors/ObjectAlreadyExists.d.ts +3 -0
- package/lib/Typesense/Errors/ObjectAlreadyExists.js +13 -0
- package/lib/Typesense/Errors/ObjectAlreadyExists.js.map +1 -0
- package/lib/Typesense/Errors/ObjectNotFound.d.ts +3 -0
- package/lib/Typesense/Errors/ObjectNotFound.js +13 -0
- package/lib/Typesense/Errors/ObjectNotFound.js.map +1 -0
- package/lib/Typesense/Errors/ObjectUnprocessable.d.ts +3 -0
- package/lib/Typesense/Errors/ObjectUnprocessable.js +13 -0
- package/lib/Typesense/Errors/ObjectUnprocessable.js.map +1 -0
- package/lib/Typesense/Errors/RequestMalformed.d.ts +3 -0
- package/lib/Typesense/Errors/RequestMalformed.js +13 -0
- package/lib/Typesense/Errors/RequestMalformed.js.map +1 -0
- package/lib/Typesense/Errors/RequestUnauthorized.d.ts +3 -0
- package/lib/Typesense/Errors/RequestUnauthorized.js +13 -0
- package/lib/Typesense/Errors/RequestUnauthorized.js.map +1 -0
- package/lib/Typesense/Errors/ServerError.d.ts +3 -0
- package/lib/Typesense/Errors/ServerError.js +13 -0
- package/lib/Typesense/Errors/ServerError.js.map +1 -0
- package/lib/Typesense/Errors/TypesenseError.d.ts +5 -0
- package/lib/Typesense/Errors/TypesenseError.js +19 -0
- package/lib/Typesense/Errors/TypesenseError.js.map +1 -0
- package/lib/Typesense/Errors/index.d.ts +11 -0
- package/lib/Typesense/Errors/index.js +25 -0
- package/lib/Typesense/Errors/index.js.map +1 -0
- package/lib/Typesense/Health.d.ts +9 -0
- package/lib/Typesense/Health.js +19 -0
- package/lib/Typesense/Health.js.map +1 -0
- package/lib/Typesense/Key.d.ts +33 -0
- package/lib/Typesense/Key.js +30 -0
- package/lib/Typesense/Key.js.map +1 -0
- package/lib/Typesense/Keys.d.ts +19 -0
- package/lib/Typesense/Keys.js +46 -0
- package/lib/Typesense/Keys.js.map +1 -0
- package/lib/Typesense/Metrics.d.ts +25 -0
- package/lib/Typesense/Metrics.js +19 -0
- package/lib/Typesense/Metrics.js.map +1 -0
- package/lib/Typesense/MultiSearch.d.ts +25 -0
- package/lib/Typesense/MultiSearch.js +63 -0
- package/lib/Typesense/MultiSearch.js.map +1 -0
- package/lib/Typesense/NLSearchModel.d.ts +16 -0
- package/lib/Typesense/NLSearchModel.js +37 -0
- package/lib/Typesense/NLSearchModel.js.map +1 -0
- package/lib/Typesense/NLSearchModels.d.ts +36 -0
- package/lib/Typesense/NLSearchModels.js +36 -0
- package/lib/Typesense/NLSearchModels.js.map +1 -0
- package/lib/Typesense/Operations.d.ts +12 -0
- package/lib/Typesense/Operations.js +27 -0
- package/lib/Typesense/Operations.js.map +1 -0
- package/lib/Typesense/Override.d.ts +17 -0
- package/lib/Typesense/Override.js +32 -0
- package/lib/Typesense/Override.js.map +1 -0
- package/lib/Typesense/Overrides.d.ts +43 -0
- package/lib/Typesense/Overrides.js +38 -0
- package/lib/Typesense/Overrides.js.map +1 -0
- package/lib/Typesense/Preset.d.ts +17 -0
- package/lib/Typesense/Preset.js +30 -0
- package/lib/Typesense/Preset.js.map +1 -0
- package/lib/Typesense/Presets.d.ts +18 -0
- package/lib/Typesense/Presets.js +49 -0
- package/lib/Typesense/Presets.js.map +1 -0
- package/lib/Typesense/RequestWithCache.d.ts +15 -0
- package/lib/Typesense/RequestWithCache.js +117 -0
- package/lib/Typesense/RequestWithCache.js.map +1 -0
- package/lib/Typesense/SearchClient.d.ts +13 -0
- package/lib/Typesense/SearchClient.js +45 -0
- package/lib/Typesense/SearchClient.js.map +1 -0
- package/lib/Typesense/SearchOnlyCollection.d.ts +11 -0
- package/lib/Typesense/SearchOnlyCollection.js +18 -0
- package/lib/Typesense/SearchOnlyCollection.js.map +1 -0
- package/lib/Typesense/SearchOnlyDocuments.d.ts +16 -0
- package/lib/Typesense/SearchOnlyDocuments.js +57 -0
- package/lib/Typesense/SearchOnlyDocuments.js.map +1 -0
- package/lib/Typesense/Stats.d.ts +24 -0
- package/lib/Typesense/Stats.js +19 -0
- package/lib/Typesense/Stats.js.map +1 -0
- package/lib/Typesense/Stemming.d.ts +12 -0
- package/lib/Typesense/Stemming.js +35 -0
- package/lib/Typesense/Stemming.js.map +1 -0
- package/lib/Typesense/StemmingDictionaries.d.ts +13 -0
- package/lib/Typesense/StemmingDictionaries.js +58 -0
- package/lib/Typesense/StemmingDictionaries.js.map +1 -0
- package/lib/Typesense/StemmingDictionary.d.ts +20 -0
- package/lib/Typesense/StemmingDictionary.js +30 -0
- package/lib/Typesense/StemmingDictionary.js.map +1 -0
- package/lib/Typesense/Stopword.d.ts +20 -0
- package/lib/Typesense/Stopword.js +30 -0
- package/lib/Typesense/Stopword.js.map +1 -0
- package/lib/Typesense/Stopwords.d.ts +17 -0
- package/lib/Typesense/Stopwords.js +36 -0
- package/lib/Typesense/Stopwords.js.map +1 -0
- package/lib/Typesense/Synonym.d.ts +21 -0
- package/lib/Typesense/Synonym.js +41 -0
- package/lib/Typesense/Synonym.js.map +1 -0
- package/lib/Typesense/SynonymSet.d.ts +21 -0
- package/lib/Typesense/SynonymSet.js +52 -0
- package/lib/Typesense/SynonymSet.js.map +1 -0
- package/lib/Typesense/SynonymSetItem.d.ts +14 -0
- package/lib/Typesense/SynonymSetItem.js +31 -0
- package/lib/Typesense/SynonymSetItem.js.map +1 -0
- package/lib/Typesense/SynonymSetItems.d.ts +10 -0
- package/lib/Typesense/SynonymSetItems.js +30 -0
- package/lib/Typesense/SynonymSetItems.js.map +1 -0
- package/lib/Typesense/SynonymSets.d.ts +23 -0
- package/lib/Typesense/SynonymSets.js +19 -0
- package/lib/Typesense/SynonymSets.js.map +1 -0
- package/lib/Typesense/Synonyms.d.ts +24 -0
- package/lib/Typesense/Synonyms.js +47 -0
- package/lib/Typesense/Synonyms.js.map +1 -0
- package/lib/Typesense/Types.d.ts +201 -0
- package/lib/Typesense/Types.js +22 -0
- package/lib/Typesense/Types.js.map +1 -0
- package/lib/Typesense/Utils.d.ts +11 -0
- package/lib/Typesense/Utils.js +50 -0
- package/lib/Typesense/Utils.js.map +1 -0
- package/lib/Typesense.d.ts +46 -0
- package/lib/Typesense.js +12 -0
- package/lib/Typesense.js.map +1 -0
- package/package.json +141 -0
- package/src/Typesense/Alias.ts +18 -0
- package/src/Typesense/Aliases.ts +41 -0
- package/src/Typesense/Analytics.ts +39 -0
- package/src/Typesense/AnalyticsEvent.ts +5 -0
- package/src/Typesense/AnalyticsEvents.ts +53 -0
- package/src/Typesense/AnalyticsRule.ts +63 -0
- package/src/Typesense/AnalyticsRuleV1.ts +52 -0
- package/src/Typesense/AnalyticsRules.ts +67 -0
- package/src/Typesense/AnalyticsRulesV1.ts +43 -0
- package/src/Typesense/AnalyticsV1.ts +52 -0
- package/src/Typesense/ApiCall.ts +1103 -0
- package/src/Typesense/Client.ts +225 -0
- package/src/Typesense/Collection.ts +179 -0
- package/src/Typesense/Collections.ts +68 -0
- package/src/Typesense/Configuration.ts +328 -0
- package/src/Typesense/Conversation.ts +45 -0
- package/src/Typesense/ConversationModel.ts +55 -0
- package/src/Typesense/ConversationModels.ts +38 -0
- package/src/Typesense/Conversations.ts +47 -0
- package/src/Typesense/CurationSet.ts +56 -0
- package/src/Typesense/CurationSetItem.ts +35 -0
- package/src/Typesense/CurationSetItems.ts +18 -0
- package/src/Typesense/CurationSets.ts +60 -0
- package/src/Typesense/Debug.ts +16 -0
- package/src/Typesense/Document.ts +34 -0
- package/src/Typesense/Documents.ts +445 -0
- package/src/Typesense/Errors/HTTPError.ts +3 -0
- package/src/Typesense/Errors/ImportError.ts +24 -0
- package/src/Typesense/Errors/MissingConfigurationError.ts +3 -0
- package/src/Typesense/Errors/ObjectAlreadyExists.ts +3 -0
- package/src/Typesense/Errors/ObjectNotFound.ts +3 -0
- package/src/Typesense/Errors/ObjectUnprocessable.ts +3 -0
- package/src/Typesense/Errors/RequestMalformed.ts +3 -0
- package/src/Typesense/Errors/RequestUnauthorized.ts +3 -0
- package/src/Typesense/Errors/ServerError.ts +3 -0
- package/src/Typesense/Errors/TypesenseError.ts +13 -0
- package/src/Typesense/Errors/index.ts +23 -0
- package/src/Typesense/Health.ts +15 -0
- package/src/Typesense/Key.ts +73 -0
- package/src/Typesense/Keys.ts +59 -0
- package/src/Typesense/Metrics.ts +31 -0
- package/src/Typesense/MultiSearch.ts +144 -0
- package/src/Typesense/NLSearchModel.ts +35 -0
- package/src/Typesense/NLSearchModels.ts +61 -0
- package/src/Typesense/Operations.ts +35 -0
- package/src/Typesense/Override.ts +31 -0
- package/src/Typesense/Overrides.ts +73 -0
- package/src/Typesense/Preset.ts +31 -0
- package/src/Typesense/Presets.ts +62 -0
- package/src/Typesense/RequestWithCache.ts +209 -0
- package/src/Typesense/SearchClient.ts +64 -0
- package/src/Typesense/SearchOnlyCollection.ts +24 -0
- package/src/Typesense/SearchOnlyDocuments.ts +87 -0
- package/src/Typesense/Stats.ts +31 -0
- package/src/Typesense/Stemming.ts +38 -0
- package/src/Typesense/StemmingDictionaries.ts +59 -0
- package/src/Typesense/StemmingDictionary.ts +37 -0
- package/src/Typesense/Stopword.ts +31 -0
- package/src/Typesense/Stopwords.ts +41 -0
- package/src/Typesense/Synonym.ts +42 -0
- package/src/Typesense/SynonymSet.ts +57 -0
- package/src/Typesense/SynonymSetItem.ts +28 -0
- package/src/Typesense/SynonymSetItems.ts +31 -0
- package/src/Typesense/SynonymSets.ts +30 -0
- package/src/Typesense/Synonyms.ts +55 -0
- package/src/Typesense/Types.ts +355 -0
- package/src/Typesense/Utils.ts +80 -0
- package/src/Typesense.ts +43 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import ApiCall from "./ApiCall";
|
|
2
|
+
import SynonymSets from "./SynonymSets";
|
|
3
|
+
import type { SynonymSetCreateSchema, SynonymSetSchema } from "./SynonymSets";
|
|
4
|
+
import SynonymSetItems from "./SynonymSetItems";
|
|
5
|
+
import SynonymSetItem from "./SynonymSetItem";
|
|
6
|
+
|
|
7
|
+
export interface SynonymSetDeleteSchema {
|
|
8
|
+
name: string;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export type SynonymSetRetrieveSchema = SynonymSetCreateSchema;
|
|
12
|
+
|
|
13
|
+
export default class SynonymSet {
|
|
14
|
+
private readonly _items: SynonymSetItems;
|
|
15
|
+
private individualItems: Record<string, SynonymSetItem> = {};
|
|
16
|
+
constructor(
|
|
17
|
+
private synonymSetName: string,
|
|
18
|
+
private apiCall: ApiCall,
|
|
19
|
+
) {
|
|
20
|
+
this._items = new SynonymSetItems(this.synonymSetName, apiCall);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
async upsert(
|
|
24
|
+
params: SynonymSetCreateSchema,
|
|
25
|
+
): Promise<SynonymSetCreateSchema> {
|
|
26
|
+
return this.apiCall.put<SynonymSetSchema>(this.endpointPath(), params);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
async retrieve(): Promise<SynonymSetRetrieveSchema> {
|
|
30
|
+
return this.apiCall.get<SynonymSetRetrieveSchema>(this.endpointPath());
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
async delete(): Promise<SynonymSetDeleteSchema> {
|
|
34
|
+
return this.apiCall.delete<SynonymSetDeleteSchema>(this.endpointPath());
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
items(): SynonymSetItems;
|
|
38
|
+
items(itemId: string): SynonymSetItem;
|
|
39
|
+
items(itemId?: string): SynonymSetItems | SynonymSetItem {
|
|
40
|
+
if (itemId === undefined) {
|
|
41
|
+
return this._items;
|
|
42
|
+
} else {
|
|
43
|
+
if (this.individualItems[itemId] === undefined) {
|
|
44
|
+
this.individualItems[itemId] = new SynonymSetItem(
|
|
45
|
+
this.synonymSetName,
|
|
46
|
+
itemId,
|
|
47
|
+
this.apiCall,
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
return this.individualItems[itemId];
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
private endpointPath(): string {
|
|
55
|
+
return `${SynonymSets.RESOURCEPATH}/${encodeURIComponent(this.synonymSetName)}`;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import ApiCall from "./ApiCall";
|
|
2
|
+
import SynonymSets, { SynonymItemSchema } from "./SynonymSets";
|
|
3
|
+
|
|
4
|
+
export interface SynonymSetItemDeleteSchema {
|
|
5
|
+
id: string;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export default class SynonymSetItem {
|
|
9
|
+
constructor(
|
|
10
|
+
private synonymSetName: string,
|
|
11
|
+
private itemId: string,
|
|
12
|
+
private apiCall: ApiCall,
|
|
13
|
+
) {}
|
|
14
|
+
|
|
15
|
+
async retrieve(): Promise<SynonymItemSchema> {
|
|
16
|
+
return this.apiCall.get<SynonymItemSchema>(this.endpointPath());
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
async delete(): Promise<SynonymSetItemDeleteSchema> {
|
|
20
|
+
return this.apiCall.delete<SynonymSetItemDeleteSchema>(this.endpointPath());
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
private endpointPath(): string {
|
|
24
|
+
return `${SynonymSets.RESOURCEPATH}/${encodeURIComponent(this.synonymSetName)}/items/${encodeURIComponent(this.itemId)}`;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import ApiCall from "./ApiCall";
|
|
2
|
+
import SynonymSets, { SynonymItemSchema } from "./SynonymSets";
|
|
3
|
+
|
|
4
|
+
export default class SynonymSetItems {
|
|
5
|
+
constructor(
|
|
6
|
+
private synonymSetName: string,
|
|
7
|
+
private apiCall: ApiCall,
|
|
8
|
+
) {}
|
|
9
|
+
|
|
10
|
+
async upsert(
|
|
11
|
+
itemId: string,
|
|
12
|
+
params: Omit<SynonymItemSchema, "id">,
|
|
13
|
+
): Promise<SynonymItemSchema> {
|
|
14
|
+
return this.apiCall.put<SynonymItemSchema>(
|
|
15
|
+
this.endpointPath(itemId),
|
|
16
|
+
params,
|
|
17
|
+
);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
async retrieve(): Promise<SynonymItemSchema[]> {
|
|
21
|
+
return this.apiCall.get<SynonymItemSchema[]>(this.endpointPath());
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
private endpointPath(operation?: string): string {
|
|
25
|
+
return `${SynonymSets.RESOURCEPATH}/${encodeURIComponent(this.synonymSetName)}/items${
|
|
26
|
+
operation === undefined ? "" : "/" + encodeURIComponent(operation)
|
|
27
|
+
}`;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import ApiCall from "./ApiCall";
|
|
2
|
+
|
|
3
|
+
export interface SynonymItemSchema {
|
|
4
|
+
id: string;
|
|
5
|
+
synonyms: string[];
|
|
6
|
+
root?: string;
|
|
7
|
+
locale?: string;
|
|
8
|
+
symbols_to_index?: string[];
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export interface SynonymSetCreateSchema {
|
|
12
|
+
items: SynonymItemSchema[];
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export interface SynonymSetSchema extends SynonymSetCreateSchema {
|
|
16
|
+
name: string;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export interface SynonymSetsRetrieveSchema {
|
|
20
|
+
synonym_sets: SynonymSetSchema[];
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export default class SynonymSets {
|
|
24
|
+
constructor(private apiCall: ApiCall) {}
|
|
25
|
+
static readonly RESOURCEPATH = "/synonym_sets";
|
|
26
|
+
|
|
27
|
+
async retrieve(): Promise<SynonymSetSchema[]> {
|
|
28
|
+
return this.apiCall.get<SynonymSetSchema[]>(SynonymSets.RESOURCEPATH);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import ApiCall from "./ApiCall";
|
|
2
|
+
import Collections from "./Collections";
|
|
3
|
+
import { SynonymSchema } from "./Synonym";
|
|
4
|
+
|
|
5
|
+
const RESOURCEPATH = "/synonyms";
|
|
6
|
+
|
|
7
|
+
export interface SynonymCreateSchema {
|
|
8
|
+
synonyms: string[];
|
|
9
|
+
root?: string;
|
|
10
|
+
locale?: string;
|
|
11
|
+
symbols_to_index?: string[];
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export interface SynonymsRetrieveSchema {
|
|
15
|
+
synonyms: SynonymSchema[];
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* @deprecated Deprecated starting with Typesense Server v30. Please migrate to `client.synonymSets` (new Synonym Sets APIs).
|
|
20
|
+
*/
|
|
21
|
+
export default class Synonyms {
|
|
22
|
+
private static hasWarnedDeprecation = false;
|
|
23
|
+
constructor(private collectionName: string, private apiCall: ApiCall) {}
|
|
24
|
+
|
|
25
|
+
async upsert(
|
|
26
|
+
synonymId: string,
|
|
27
|
+
params: SynonymCreateSchema
|
|
28
|
+
): Promise<SynonymSchema> {
|
|
29
|
+
return this.apiCall.put<SynonymSchema>(
|
|
30
|
+
this.endpointPath(synonymId),
|
|
31
|
+
params
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
async retrieve(): Promise<SynonymsRetrieveSchema> {
|
|
36
|
+
return this.apiCall.get<SynonymsRetrieveSchema>(this.endpointPath());
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
private endpointPath(operation?: string) {
|
|
40
|
+
if (!Synonyms.hasWarnedDeprecation) {
|
|
41
|
+
// eslint-disable-next-line no-console
|
|
42
|
+
console.warn(
|
|
43
|
+
"[typesense] 'synonyms' APIs are deprecated starting with Typesense Server v30. Please migrate to synonym sets ('synonym_sets').",
|
|
44
|
+
);
|
|
45
|
+
Synonyms.hasWarnedDeprecation = true;
|
|
46
|
+
}
|
|
47
|
+
return `${Collections.RESOURCEPATH}/${encodeURIComponent(this.collectionName)}${
|
|
48
|
+
Synonyms.RESOURCEPATH
|
|
49
|
+
}${operation === undefined ? "" : "/" + encodeURIComponent(operation)}`;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
static get RESOURCEPATH(): string {
|
|
53
|
+
return RESOURCEPATH;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -0,0 +1,355 @@
|
|
|
1
|
+
import type { AxiosRequestConfig } from "axios";
|
|
2
|
+
import type { BaseStreamConfig, StreamConfig } from "./Configuration";
|
|
3
|
+
import type {
|
|
4
|
+
DocumentSchema,
|
|
5
|
+
SearchParamsWithPreset,
|
|
6
|
+
SearchOptions,
|
|
7
|
+
SearchResponse,
|
|
8
|
+
DocumentWriteParameters,
|
|
9
|
+
DeleteQuery,
|
|
10
|
+
DeleteResponse,
|
|
11
|
+
ImportResponse,
|
|
12
|
+
DocumentsExportParameters,
|
|
13
|
+
} from "./Documents";
|
|
14
|
+
|
|
15
|
+
export type DropTokensMode = "right_to_left" | "left_to_right" | "both_sides:3";
|
|
16
|
+
|
|
17
|
+
export type OperationMode = "off" | "always" | "fallback";
|
|
18
|
+
|
|
19
|
+
export type CommaSeparated<
|
|
20
|
+
T extends string,
|
|
21
|
+
ToExtend,
|
|
22
|
+
OriginalString extends string = T,
|
|
23
|
+
Previous extends string[] = [],
|
|
24
|
+
> = T extends `${infer Start},${infer Rest}`
|
|
25
|
+
? TrimString<Start> extends ToExtend
|
|
26
|
+
? CommaSeparated<
|
|
27
|
+
Rest,
|
|
28
|
+
ToExtend,
|
|
29
|
+
OriginalString,
|
|
30
|
+
[...Previous, TrimString<Start>]
|
|
31
|
+
>
|
|
32
|
+
: {
|
|
33
|
+
error: "Invalid operation mode";
|
|
34
|
+
value: TrimString<Start>;
|
|
35
|
+
}
|
|
36
|
+
: TrimString<T> extends ToExtend
|
|
37
|
+
? OriginalString
|
|
38
|
+
: {
|
|
39
|
+
error: "Invalid operation mode";
|
|
40
|
+
value: TrimString<T>;
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
export type MessageChunk = {
|
|
44
|
+
message: string;
|
|
45
|
+
conversation_id: string;
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
export type UnionArrayKeys<T> = {
|
|
49
|
+
[K in keyof T]: T[K] extends undefined
|
|
50
|
+
? never
|
|
51
|
+
: NonNullable<T[K]> extends infer R
|
|
52
|
+
? R extends R[]
|
|
53
|
+
? never
|
|
54
|
+
: R extends (infer U)[] | infer U
|
|
55
|
+
? U[] extends R
|
|
56
|
+
? K
|
|
57
|
+
: never
|
|
58
|
+
: never
|
|
59
|
+
: never;
|
|
60
|
+
}[keyof T] &
|
|
61
|
+
keyof T;
|
|
62
|
+
|
|
63
|
+
export type UnionArraySearchParams<T extends DocumentSchema = DocumentSchema> =
|
|
64
|
+
UnionArrayKeys<T>;
|
|
65
|
+
|
|
66
|
+
export type ArraybleParams<T extends DocumentSchema = DocumentSchema> = {
|
|
67
|
+
readonly [K in UnionArraySearchParams<T>]: string;
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
export type ExtractBaseTypes<T> = {
|
|
71
|
+
[K in keyof T]: K extends UnionArrayKeys<T>
|
|
72
|
+
? T[K] extends (infer U)[] | infer U
|
|
73
|
+
? U
|
|
74
|
+
: T[K]
|
|
75
|
+
: T[K];
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
export const arrayableParams: ArraybleParams = {
|
|
79
|
+
query_by: "query_by",
|
|
80
|
+
query_by_weights: "query_by_weights",
|
|
81
|
+
facet_by: "facet_by",
|
|
82
|
+
group_by: "group_by",
|
|
83
|
+
include_fields: "include_fields",
|
|
84
|
+
exclude_fields: "exclude_fields",
|
|
85
|
+
highlight_fields: "highlight_fields",
|
|
86
|
+
highlight_full_fields: "highlight_full_fields",
|
|
87
|
+
pinned_hits: "pinned_hits",
|
|
88
|
+
hidden_hits: "hidden_hits",
|
|
89
|
+
infix: "infix",
|
|
90
|
+
override_tags: "override_tags",
|
|
91
|
+
num_typos: "num_typos",
|
|
92
|
+
prefix: "prefix",
|
|
93
|
+
synonym_sets: "synonym_sets",
|
|
94
|
+
sort_by: "sort_by",
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
export interface SearchParams<
|
|
98
|
+
TDoc extends DocumentSchema,
|
|
99
|
+
Infix extends string = string,
|
|
100
|
+
> {
|
|
101
|
+
// From https://typesense.org/docs/latest/api/documents.html#arguments
|
|
102
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-object-type -- Can't use `object` here, it needs to intersect with `{}`
|
|
103
|
+
q?: "*" | (string & {});
|
|
104
|
+
query_by?: string | string[];
|
|
105
|
+
query_by_weights?: string | number[];
|
|
106
|
+
prefix?: string | boolean | boolean[]; // default: true
|
|
107
|
+
filter_by?: string;
|
|
108
|
+
max_filter_by_candidates?: number; // default: 4
|
|
109
|
+
enable_synonyms?: boolean; // default: true
|
|
110
|
+
enable_analytics?: boolean; // default: true
|
|
111
|
+
filter_curated_hits?: boolean; // default: false
|
|
112
|
+
enable_lazy_filter?: boolean; // default: false
|
|
113
|
+
sort_by?: string | string[]; // default: text match desc
|
|
114
|
+
facet_by?: string | string[];
|
|
115
|
+
max_facet_values?: number;
|
|
116
|
+
facet_sample_threshold?: number;
|
|
117
|
+
facet_sample_percent?: number;
|
|
118
|
+
facet_query?: string;
|
|
119
|
+
facet_query_num_typos?: number;
|
|
120
|
+
facet_return_parent?: string;
|
|
121
|
+
facet_strategy?: "exhaustive" | "top_values" | "automatic";
|
|
122
|
+
page?: number; // default: 1
|
|
123
|
+
per_page?: number; // default: 10, max 250
|
|
124
|
+
group_by?: string | string[];
|
|
125
|
+
group_limit?: number; // default:
|
|
126
|
+
group_missing_values?: boolean;
|
|
127
|
+
include_fields?: string | string[];
|
|
128
|
+
exclude_fields?: string | string[];
|
|
129
|
+
highlight_fields?: string | string[]; // default: all queried fields
|
|
130
|
+
highlight_full_fields?: string | string[]; // default: all fields
|
|
131
|
+
highlight_affix_num_tokens?: number; // default: 4
|
|
132
|
+
highlight_start_tag?: string; // default: <mark>
|
|
133
|
+
highlight_end_tag?: string; // default: </mark>
|
|
134
|
+
enable_highlight_v1?: boolean;
|
|
135
|
+
snippet_threshold?: number; // default: 30
|
|
136
|
+
nl_query?: boolean;
|
|
137
|
+
nl_model_id?: string;
|
|
138
|
+
nl_query_debug?: boolean;
|
|
139
|
+
nl_query_prompt_cache_ttl?: number;
|
|
140
|
+
num_typos?: string | number | number[]; // default: 2
|
|
141
|
+
min_len_1typo?: number;
|
|
142
|
+
min_len_2typo?: number;
|
|
143
|
+
split_join_tokens?: OperationMode;
|
|
144
|
+
exhaustive_search?: boolean;
|
|
145
|
+
drop_tokens_threshold?: number; // default: 10
|
|
146
|
+
drop_tokens_mode?: DropTokensMode;
|
|
147
|
+
typo_tokens_threshold?: number; // default: 100
|
|
148
|
+
pinned_hits?: string | string[];
|
|
149
|
+
synonym_sets?: string[] | string;
|
|
150
|
+
hidden_hits?: string | string[];
|
|
151
|
+
limit_hits?: number; // default: no limit
|
|
152
|
+
pre_segmented_query?: boolean;
|
|
153
|
+
enable_overrides?: boolean;
|
|
154
|
+
override_tags?: string | string[];
|
|
155
|
+
prioritize_exact_match?: boolean; // default: true
|
|
156
|
+
prioritize_token_position?: boolean;
|
|
157
|
+
prioritize_num_matching_fields?: boolean;
|
|
158
|
+
search_cutoff_ms?: number;
|
|
159
|
+
use_cache?: boolean;
|
|
160
|
+
max_candidates?: number;
|
|
161
|
+
infix?:
|
|
162
|
+
| CommaSeparated<Infix, OperationMode>
|
|
163
|
+
| OperationMode[]
|
|
164
|
+
| OperationMode;
|
|
165
|
+
preset?: string;
|
|
166
|
+
text_match_type?: "max_score" | "max_weight" | "sum_score";
|
|
167
|
+
vector_query?: string;
|
|
168
|
+
"x-typesense-api-key"?: string;
|
|
169
|
+
"x-typesense-user-id"?: string;
|
|
170
|
+
offset?: number;
|
|
171
|
+
limit?: number;
|
|
172
|
+
stopwords?: string;
|
|
173
|
+
conversation?: boolean;
|
|
174
|
+
validate_field_names?: boolean;
|
|
175
|
+
conversation_stream?: boolean;
|
|
176
|
+
conversation_model_id?: string;
|
|
177
|
+
conversation_id?: string;
|
|
178
|
+
voice_query?: string;
|
|
179
|
+
streamConfig?: StreamConfig<TDoc>;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
export interface SearchResponseRequestParams {
|
|
183
|
+
collection_name?: string;
|
|
184
|
+
q?: string;
|
|
185
|
+
page?: number;
|
|
186
|
+
per_page?: number;
|
|
187
|
+
first_q?: string;
|
|
188
|
+
voice_query?: {
|
|
189
|
+
transcribed_query?: string;
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
export interface SearchableDocuments<
|
|
194
|
+
T extends DocumentSchema = DocumentSchema,
|
|
195
|
+
Infix extends string = string,
|
|
196
|
+
> {
|
|
197
|
+
search(
|
|
198
|
+
searchParameters: SearchParams<T, Infix> | SearchParamsWithPreset<T, Infix>,
|
|
199
|
+
options: SearchOptions,
|
|
200
|
+
): Promise<SearchResponse<T>>;
|
|
201
|
+
clearCache(): void;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
export interface WriteableDocuments<T> {
|
|
205
|
+
create(document: T, options: DocumentWriteParameters): Promise<T>;
|
|
206
|
+
upsert(document: T, options: DocumentWriteParameters): Promise<T>;
|
|
207
|
+
update(document: T, options: DocumentWriteParameters): Promise<T>;
|
|
208
|
+
delete(query: DeleteQuery): Promise<DeleteResponse>;
|
|
209
|
+
import(
|
|
210
|
+
documents: T[] | string,
|
|
211
|
+
options: DocumentWriteParameters,
|
|
212
|
+
): Promise<string | ImportResponse[]>;
|
|
213
|
+
export(options: DocumentsExportParameters): Promise<string>;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
export interface MultiSearchUnionStreamConfig<T extends DocumentSchema>
|
|
217
|
+
extends BaseStreamConfig {
|
|
218
|
+
onComplete?: (data: UnionSearchResponse<T>) => void;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
export interface MultiSearchResultsStreamConfig<T extends DocumentSchema[]>
|
|
222
|
+
extends BaseStreamConfig {
|
|
223
|
+
onComplete?: (data: {
|
|
224
|
+
results: { [Index in keyof T]: SearchResponse<T[Index]> } & {
|
|
225
|
+
length: T["length"];
|
|
226
|
+
};
|
|
227
|
+
}) => void;
|
|
228
|
+
}
|
|
229
|
+
export interface RequestParams<T extends DocumentSchema[]> {
|
|
230
|
+
path: string;
|
|
231
|
+
queryParams?: Record<string, unknown>;
|
|
232
|
+
body?: unknown;
|
|
233
|
+
headers?: Record<string, string>;
|
|
234
|
+
streamConfig?:
|
|
235
|
+
| StreamConfig<T[number]>
|
|
236
|
+
| MultiSearchResultsStreamConfig<T>
|
|
237
|
+
| MultiSearchUnionStreamConfig<T[number]>;
|
|
238
|
+
abortSignal?: AbortSignal | null;
|
|
239
|
+
responseType?: AxiosRequestConfig["responseType"] | undefined;
|
|
240
|
+
isStreamingRequest: boolean | undefined;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
export interface MultiSearchRequestsWithUnionSchema<
|
|
244
|
+
T extends DocumentSchema,
|
|
245
|
+
Infix extends string,
|
|
246
|
+
> extends SearchesMultiSearchesRequestSchema<T, Infix> {
|
|
247
|
+
union: true;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
export interface MultiSearchRequestsWithoutUnionSchema<
|
|
251
|
+
T extends DocumentSchema,
|
|
252
|
+
Infix extends string,
|
|
253
|
+
> extends SearchesMultiSearchesRequestSchema<T, Infix> {
|
|
254
|
+
union?: false | undefined;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
export type MultiSearchRequestsSchema<
|
|
258
|
+
T extends DocumentSchema,
|
|
259
|
+
Infix extends string,
|
|
260
|
+
> =
|
|
261
|
+
| MultiSearchRequestsWithUnionSchema<T, Infix>
|
|
262
|
+
| MultiSearchRequestsWithoutUnionSchema<T, Infix>;
|
|
263
|
+
|
|
264
|
+
export interface UnionSearchResponse<T extends DocumentSchema>
|
|
265
|
+
extends Omit<SearchResponse<T>, "request_params"> {
|
|
266
|
+
union_request_params: SearchResponseRequestParams[];
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
export type MultiSearchResponse<
|
|
270
|
+
T extends DocumentSchema[],
|
|
271
|
+
Infix extends string,
|
|
272
|
+
R extends MultiSearchRequestsSchema<
|
|
273
|
+
T[number],
|
|
274
|
+
Infix
|
|
275
|
+
> = MultiSearchRequestsSchema<T[number], Infix>,
|
|
276
|
+
> =
|
|
277
|
+
R extends MultiSearchRequestsWithUnionSchema<T[number], Infix>
|
|
278
|
+
? UnionSearchResponse<T[number]>
|
|
279
|
+
: {
|
|
280
|
+
results: { [Index in keyof T]: SearchResponse<T[Index]> } & {
|
|
281
|
+
length: T["length"];
|
|
282
|
+
};
|
|
283
|
+
};
|
|
284
|
+
|
|
285
|
+
export interface MultiSearchUnionStreamConfig<T extends DocumentSchema>
|
|
286
|
+
extends BaseStreamConfig {
|
|
287
|
+
onComplete?: (data: UnionSearchResponse<T>) => void;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
export interface MultiSearchResultsStreamConfig<T extends DocumentSchema[]>
|
|
291
|
+
extends BaseStreamConfig {
|
|
292
|
+
onComplete?: (data: {
|
|
293
|
+
results: { [Index in keyof T]: SearchResponse<T[Index]> } & {
|
|
294
|
+
length: T["length"];
|
|
295
|
+
};
|
|
296
|
+
}) => void;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
interface SearchesMultiSearchesRequestSchema<
|
|
300
|
+
T extends DocumentSchema,
|
|
301
|
+
Infix extends string,
|
|
302
|
+
> {
|
|
303
|
+
searches: (
|
|
304
|
+
| MultiSearchRequestSchema<T, Infix>
|
|
305
|
+
| MultiSearchRequestWithPresetSchema<T, Infix>
|
|
306
|
+
)[];
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
interface BaseMultiSearchRequestSchema {
|
|
310
|
+
collection?: string;
|
|
311
|
+
rerank_hybrid_matches?: boolean;
|
|
312
|
+
"x-typesense-api-key"?: string;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
type CommonMultiSearchParametersBase<
|
|
316
|
+
T extends DocumentSchema,
|
|
317
|
+
Infix extends string,
|
|
318
|
+
> = Partial<
|
|
319
|
+
BaseMultiSearchRequestSchema & Omit<SearchParams<T, Infix>, "streamConfig">
|
|
320
|
+
>;
|
|
321
|
+
|
|
322
|
+
export type MultiSearchRequestSchema<
|
|
323
|
+
T extends DocumentSchema,
|
|
324
|
+
Infix extends string,
|
|
325
|
+
> = BaseMultiSearchRequestSchema & Omit<SearchParams<T, Infix>, "streamConfig">;
|
|
326
|
+
|
|
327
|
+
export type MultiSearchRequestWithPresetSchema<
|
|
328
|
+
T extends DocumentSchema,
|
|
329
|
+
Infix extends string,
|
|
330
|
+
> = BaseMultiSearchRequestSchema &
|
|
331
|
+
Omit<SearchParamsWithPreset<T, Infix>, "streamConfig">;
|
|
332
|
+
|
|
333
|
+
export type MultiSearchUnionParameters<
|
|
334
|
+
T extends DocumentSchema,
|
|
335
|
+
Infix extends string,
|
|
336
|
+
> = CommonMultiSearchParametersBase<T, Infix> & {
|
|
337
|
+
streamConfig?: MultiSearchUnionStreamConfig<T>;
|
|
338
|
+
use_cache?: boolean;
|
|
339
|
+
};
|
|
340
|
+
|
|
341
|
+
export type MultiSearchResultsParameters<
|
|
342
|
+
T extends DocumentSchema[],
|
|
343
|
+
Infix extends string,
|
|
344
|
+
> = CommonMultiSearchParametersBase<T[number], Infix> & {
|
|
345
|
+
streamConfig?: MultiSearchResultsStreamConfig<T>;
|
|
346
|
+
use_cache?: boolean;
|
|
347
|
+
};
|
|
348
|
+
|
|
349
|
+
type Whitespace = " " | "\n" | "\t";
|
|
350
|
+
|
|
351
|
+
type TrimString<S extends string> = S extends `${Whitespace}${infer S}`
|
|
352
|
+
? TrimString<S>
|
|
353
|
+
: S extends `${infer S}${Whitespace}`
|
|
354
|
+
? TrimString<S>
|
|
355
|
+
: S;
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { DocumentSchema } from "./Documents";
|
|
2
|
+
import { arrayableParams } from "./Types";
|
|
3
|
+
import type { UnionArrayKeys, ExtractBaseTypes, SearchParams } from "./Types";
|
|
4
|
+
|
|
5
|
+
function hasNoArrayValues<
|
|
6
|
+
TDoc extends DocumentSchema,
|
|
7
|
+
T extends SearchParams<TDoc, Infix>,
|
|
8
|
+
const Infix extends string,
|
|
9
|
+
>(params: T | ExtractBaseTypes<T>): params is ExtractBaseTypes<T> {
|
|
10
|
+
return Object.keys(arrayableParams)
|
|
11
|
+
.filter((key) => params[key] !== undefined)
|
|
12
|
+
.every((key) => isNonArrayValue(params[key]));
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export function normalizeArrayableParams<
|
|
16
|
+
TDoc extends DocumentSchema,
|
|
17
|
+
T extends SearchParams<TDoc, Infix>,
|
|
18
|
+
const Infix extends string,
|
|
19
|
+
>(params: T): Prettify<ExtractBaseTypes<T>> {
|
|
20
|
+
const result = { ...params };
|
|
21
|
+
|
|
22
|
+
const transformedValues = Object.keys(arrayableParams)
|
|
23
|
+
.filter((key) => Array.isArray(result[key]))
|
|
24
|
+
.map((key) => {
|
|
25
|
+
result[key] = result[key].join(",");
|
|
26
|
+
return key;
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
if (!transformedValues.length && hasNoArrayValues<TDoc, T, Infix>(result)) {
|
|
30
|
+
return result;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
if (!hasNoArrayValues<TDoc, T, Infix>(result)) {
|
|
34
|
+
throw new Error(
|
|
35
|
+
`Failed to normalize arrayable params: ${JSON.stringify(result)}`,
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
return result;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
function isNonArrayValue<
|
|
43
|
+
TDoc extends DocumentSchema,
|
|
44
|
+
T extends SearchParams<TDoc, Infix>,
|
|
45
|
+
const Infix extends string,
|
|
46
|
+
K extends UnionArrayKeys<T>,
|
|
47
|
+
>(value: T[K] | ExtractBaseTypes<T>[K]): value is ExtractBaseTypes<T>[K] {
|
|
48
|
+
return !Array.isArray(value);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
type Prettify<T> = {
|
|
52
|
+
[K in keyof T]: T[K];
|
|
53
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-object-type
|
|
54
|
+
} & {};
|
|
55
|
+
|
|
56
|
+
interface ErrorWithMessage extends Error {
|
|
57
|
+
message: string;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
function isErrorWithMessage(error: unknown): error is ErrorWithMessage {
|
|
61
|
+
return (
|
|
62
|
+
typeof error === "object" &&
|
|
63
|
+
error !== null &&
|
|
64
|
+
"message" in error &&
|
|
65
|
+
typeof (error as Record<string, unknown>).message === "string"
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export function toErrorWithMessage(couldBeError: unknown): ErrorWithMessage {
|
|
70
|
+
if (isErrorWithMessage(couldBeError)) return couldBeError;
|
|
71
|
+
|
|
72
|
+
try {
|
|
73
|
+
if (typeof couldBeError === "string") {
|
|
74
|
+
return new Error(couldBeError);
|
|
75
|
+
}
|
|
76
|
+
return new Error(JSON.stringify(couldBeError));
|
|
77
|
+
} catch {
|
|
78
|
+
return new Error(String(couldBeError));
|
|
79
|
+
}
|
|
80
|
+
}
|
package/src/Typesense.ts
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import Client from "./Typesense/Client";
|
|
2
|
+
import SearchClient from "./Typesense/SearchClient";
|
|
3
|
+
import * as Errors from "./Typesense/Errors";
|
|
4
|
+
|
|
5
|
+
export { Client, SearchClient, Errors };
|
|
6
|
+
export default { Client, SearchClient, Errors };
|
|
7
|
+
|
|
8
|
+
export type * from "./Typesense/Aliases";
|
|
9
|
+
export type * from "./Typesense/AnalyticsRulesV1";
|
|
10
|
+
export type * from "./Typesense/AnalyticsRuleV1";
|
|
11
|
+
export type * from "./Typesense/AnalyticsEvent";
|
|
12
|
+
export type * from "./Typesense/AnalyticsRule";
|
|
13
|
+
export type * from "./Typesense/AnalyticsRules";
|
|
14
|
+
export type * from "./Typesense/Collection";
|
|
15
|
+
export type * from "./Typesense/Collections";
|
|
16
|
+
export type * from "./Typesense/Configuration";
|
|
17
|
+
export type * from "./Typesense/Conversations";
|
|
18
|
+
export type * from "./Typesense/Conversation";
|
|
19
|
+
export type * from "./Typesense/ConversationModel";
|
|
20
|
+
export type * from "./Typesense/Debug";
|
|
21
|
+
export type * from "./Typesense/Documents";
|
|
22
|
+
export type * from "./Typesense/Health";
|
|
23
|
+
export type * from "./Typesense/Key";
|
|
24
|
+
export type * from "./Typesense/Keys";
|
|
25
|
+
export type * from "./Typesense/Metrics";
|
|
26
|
+
export type * from "./Typesense/MultiSearch";
|
|
27
|
+
export type * from "./Typesense/Override";
|
|
28
|
+
export type * from "./Typesense/Overrides";
|
|
29
|
+
export type * from "./Typesense/Preset";
|
|
30
|
+
export type * from "./Typesense/Presets";
|
|
31
|
+
export type * from "./Typesense/Stats";
|
|
32
|
+
export type * from "./Typesense/Stopword";
|
|
33
|
+
export type * from "./Typesense/Stopwords";
|
|
34
|
+
export type * from "./Typesense/Synonym";
|
|
35
|
+
export type * from "./Typesense/Synonyms";
|
|
36
|
+
export type * from "./Typesense/SynonymSet";
|
|
37
|
+
export type * from "./Typesense/SynonymSets";
|
|
38
|
+
export type * from "./Typesense/SynonymSetItem";
|
|
39
|
+
export type * from "./Typesense/SynonymSetItems";
|
|
40
|
+
export type * from "./Typesense/CurationSet";
|
|
41
|
+
export type * from "./Typesense/CurationSets";
|
|
42
|
+
export type * from "./Typesense/CurationSetItem";
|
|
43
|
+
export type * from "./Typesense/CurationSetItems";
|