@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,59 @@
|
|
|
1
|
+
import { createHmac } from "crypto";
|
|
2
|
+
import ApiCall from "./ApiCall";
|
|
3
|
+
import { KeyCreateSchema, KeySchema } from "./Key";
|
|
4
|
+
import type { DocumentSchema, SearchParams } from "./Documents";
|
|
5
|
+
import { normalizeArrayableParams } from "./Utils";
|
|
6
|
+
|
|
7
|
+
const RESOURCEPATH = "/keys";
|
|
8
|
+
|
|
9
|
+
export interface KeysRetrieveSchema {
|
|
10
|
+
keys: KeySchema[];
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export interface GenerateScopedSearchKeyParams<
|
|
14
|
+
T extends DocumentSchema,
|
|
15
|
+
Infix extends string,
|
|
16
|
+
> extends Partial<SearchParams<T, Infix>> {
|
|
17
|
+
expires_at?: number;
|
|
18
|
+
cache_ttl?: number;
|
|
19
|
+
limit_multi_searches?: number;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export default class Keys {
|
|
23
|
+
constructor(private apiCall: ApiCall) {
|
|
24
|
+
this.apiCall = apiCall;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
async create(params: KeyCreateSchema): Promise<KeySchema> {
|
|
28
|
+
return this.apiCall.post<KeySchema>(Keys.RESOURCEPATH, params);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
async retrieve(): Promise<KeysRetrieveSchema> {
|
|
32
|
+
return this.apiCall.get<KeysRetrieveSchema>(RESOURCEPATH);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
generateScopedSearchKey<T extends DocumentSchema, const Infix extends string>(
|
|
36
|
+
searchKey: string,
|
|
37
|
+
parameters: GenerateScopedSearchKeyParams<T, Infix>,
|
|
38
|
+
): string {
|
|
39
|
+
// Note: only a key generated with the `documents:search` action will be
|
|
40
|
+
// accepted by the server, when used with the search endpoint.
|
|
41
|
+
const normalizedParams = normalizeArrayableParams<
|
|
42
|
+
T,
|
|
43
|
+
SearchParams<T, Infix>,
|
|
44
|
+
Infix
|
|
45
|
+
>(parameters);
|
|
46
|
+
const paramsJSON = JSON.stringify(normalizedParams);
|
|
47
|
+
const digest = Buffer.from(
|
|
48
|
+
createHmac("sha256", searchKey).update(paramsJSON).digest("base64"),
|
|
49
|
+
);
|
|
50
|
+
const keyPrefix = searchKey.substr(0, 4);
|
|
51
|
+
const rawScopedKey = `${digest}${keyPrefix}${paramsJSON}`;
|
|
52
|
+
|
|
53
|
+
return Buffer.from(rawScopedKey).toString("base64");
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
static get RESOURCEPATH() {
|
|
57
|
+
return RESOURCEPATH;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import ApiCall from "./ApiCall";
|
|
2
|
+
|
|
3
|
+
const RESOURCEPATH = "/metrics.json";
|
|
4
|
+
|
|
5
|
+
export interface MetricsResponse {
|
|
6
|
+
[key: `system_cpu${number}_active_percentage`]: string;
|
|
7
|
+
system_cpu_active_percentage: string;
|
|
8
|
+
system_disk_total_bytes: string;
|
|
9
|
+
system_disk_used_bytes: string;
|
|
10
|
+
system_memory_total_bytes: string;
|
|
11
|
+
system_memory_total_swap_bytes?: string;
|
|
12
|
+
system_memory_used_bytes: string;
|
|
13
|
+
system_memory_used_swap_bytes?: string;
|
|
14
|
+
system_network_received_bytes: string;
|
|
15
|
+
system_network_sent_bytes: string;
|
|
16
|
+
typesense_memory_active_bytes: string;
|
|
17
|
+
typesense_memory_allocated_bytes: string;
|
|
18
|
+
typesense_memory_fragmentation_ratio: string;
|
|
19
|
+
typesense_memory_mapped_bytes: string;
|
|
20
|
+
typesense_memory_metadata_bytes: string;
|
|
21
|
+
typesense_memory_resident_bytes: string;
|
|
22
|
+
typesense_memory_retained_bytes: string;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export default class Metrics {
|
|
26
|
+
constructor(private apiCall: ApiCall) {}
|
|
27
|
+
|
|
28
|
+
async retrieve(): Promise<MetricsResponse> {
|
|
29
|
+
return this.apiCall.get(RESOURCEPATH);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import type ApiCall from "./ApiCall";
|
|
2
|
+
import type Configuration from "./Configuration";
|
|
3
|
+
import RequestWithCache from "./RequestWithCache";
|
|
4
|
+
import type {
|
|
5
|
+
DocumentSchema,
|
|
6
|
+
ExtractBaseTypes,
|
|
7
|
+
SearchOptions,
|
|
8
|
+
SearchParams,
|
|
9
|
+
SearchResponse,
|
|
10
|
+
} from "./Documents";
|
|
11
|
+
import { normalizeArrayableParams } from "./Utils";
|
|
12
|
+
import type {
|
|
13
|
+
MultiSearchRequestsSchema,
|
|
14
|
+
MultiSearchRequestsWithUnionSchema,
|
|
15
|
+
MultiSearchResponse,
|
|
16
|
+
MultiSearchUnionParameters,
|
|
17
|
+
MultiSearchResultsParameters,
|
|
18
|
+
UnionSearchResponse,
|
|
19
|
+
MultiSearchRequestsWithoutUnionSchema,
|
|
20
|
+
} from "./Types";
|
|
21
|
+
import { Logger } from "loglevel";
|
|
22
|
+
|
|
23
|
+
const RESOURCEPATH = "/multi_search";
|
|
24
|
+
|
|
25
|
+
export default class MultiSearch {
|
|
26
|
+
private requestWithCache: RequestWithCache;
|
|
27
|
+
readonly logger: Logger;
|
|
28
|
+
|
|
29
|
+
constructor(
|
|
30
|
+
private apiCall: ApiCall,
|
|
31
|
+
private configuration: Configuration,
|
|
32
|
+
private useTextContentType: boolean = false,
|
|
33
|
+
) {
|
|
34
|
+
this.requestWithCache = new RequestWithCache();
|
|
35
|
+
this.logger = this.apiCall.logger;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
clearCache() {
|
|
39
|
+
this.requestWithCache.clearCache();
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
async perform<
|
|
43
|
+
const T extends DocumentSchema[] = [],
|
|
44
|
+
const Infix extends string = string,
|
|
45
|
+
>(
|
|
46
|
+
searchRequests: MultiSearchRequestsWithUnionSchema<T[number], Infix>,
|
|
47
|
+
commonParams?: MultiSearchUnionParameters<T[number], Infix>,
|
|
48
|
+
options?: SearchOptions,
|
|
49
|
+
): Promise<UnionSearchResponse<T[number]>>;
|
|
50
|
+
|
|
51
|
+
async perform<
|
|
52
|
+
const T extends DocumentSchema[] = [],
|
|
53
|
+
const Infix extends string = string,
|
|
54
|
+
>(
|
|
55
|
+
searchRequests: MultiSearchRequestsWithoutUnionSchema<T[number], Infix>,
|
|
56
|
+
commonParams?: MultiSearchResultsParameters<T, Infix>,
|
|
57
|
+
options?: SearchOptions,
|
|
58
|
+
): Promise<{
|
|
59
|
+
results: { [Index in keyof T]: SearchResponse<T[Index]> } & {
|
|
60
|
+
length: T["length"];
|
|
61
|
+
};
|
|
62
|
+
}>;
|
|
63
|
+
|
|
64
|
+
async perform<
|
|
65
|
+
const T extends DocumentSchema[] = [],
|
|
66
|
+
const Infix extends string = string,
|
|
67
|
+
>(
|
|
68
|
+
searchRequests: MultiSearchRequestsSchema<T[number], Infix>,
|
|
69
|
+
commonParams?:
|
|
70
|
+
| MultiSearchUnionParameters<T[number], Infix>
|
|
71
|
+
| MultiSearchResultsParameters<T, Infix>,
|
|
72
|
+
options?: SearchOptions,
|
|
73
|
+
): Promise<MultiSearchResponse<T, Infix>> {
|
|
74
|
+
const params = commonParams ? { ...commonParams } : {};
|
|
75
|
+
const cacheSearchResultsForSeconds =
|
|
76
|
+
options?.cacheSearchResultsForSeconds ??
|
|
77
|
+
this.configuration.cacheSearchResultsForSeconds;
|
|
78
|
+
|
|
79
|
+
if (this.configuration.useServerSideSearchCache === true) {
|
|
80
|
+
params.use_cache = true;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
if (searchRequests.union === true && this.hasAnySearchObjectPagination(searchRequests)) {
|
|
84
|
+
this.logger.warn(
|
|
85
|
+
"Individual `searches` pagination parameters are ignored when `union: true` is set. Use a top-level pagination parameter instead. See https://typesense.org/docs/29.0/api/federated-multi-search.html#union-search"
|
|
86
|
+
);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
const normalizedSearchRequests: Omit<typeof searchRequests, "searches"> & {
|
|
90
|
+
searches: ExtractBaseTypes<SearchParams<T[number], Infix>>[];
|
|
91
|
+
} = {
|
|
92
|
+
union: searchRequests.union,
|
|
93
|
+
searches: searchRequests.searches.map(
|
|
94
|
+
normalizeArrayableParams<
|
|
95
|
+
T[number],
|
|
96
|
+
SearchParams<T[number], Infix>,
|
|
97
|
+
Infix
|
|
98
|
+
>,
|
|
99
|
+
),
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
const { streamConfig, ...paramsWithoutStream } = params;
|
|
103
|
+
const normalizedQueryParams = normalizeArrayableParams(
|
|
104
|
+
paramsWithoutStream as SearchParams<T[number], Infix>,
|
|
105
|
+
);
|
|
106
|
+
|
|
107
|
+
return this.requestWithCache.perform(
|
|
108
|
+
this.apiCall,
|
|
109
|
+
"post",
|
|
110
|
+
{
|
|
111
|
+
path: RESOURCEPATH,
|
|
112
|
+
body: normalizedSearchRequests,
|
|
113
|
+
queryParams: normalizedQueryParams,
|
|
114
|
+
headers: this.useTextContentType
|
|
115
|
+
? { "content-type": "text/plain" }
|
|
116
|
+
: {},
|
|
117
|
+
streamConfig,
|
|
118
|
+
abortSignal: options?.abortSignal,
|
|
119
|
+
isStreamingRequest: this.isStreamingRequest(params),
|
|
120
|
+
},
|
|
121
|
+
cacheSearchResultsForSeconds !== undefined
|
|
122
|
+
? { cacheResponseForSeconds: cacheSearchResultsForSeconds }
|
|
123
|
+
: undefined,
|
|
124
|
+
);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
private isStreamingRequest(commonParams: { streamConfig?: unknown }) {
|
|
128
|
+
return commonParams.streamConfig !== undefined;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
private hasAnySearchObjectPagination(searchRequests: MultiSearchRequestsSchema<DocumentSchema, string>) {
|
|
132
|
+
return searchRequests.searches.some(search => search.page !== undefined || search.per_page !== undefined || search.offset !== undefined || search.limit !== undefined || search.limit_hits !== undefined);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
export type {
|
|
137
|
+
MultiSearchRequestsSchema,
|
|
138
|
+
MultiSearchRequestsWithUnionSchema,
|
|
139
|
+
MultiSearchResponse,
|
|
140
|
+
MultiSearchUnionParameters,
|
|
141
|
+
MultiSearchResultsParameters,
|
|
142
|
+
UnionSearchResponse,
|
|
143
|
+
MultiSearchRequestsWithoutUnionSchema,
|
|
144
|
+
} from "./Types";
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import ApiCall from "./ApiCall";
|
|
2
|
+
import NLSearchModels from "./NLSearchModels";
|
|
3
|
+
import type { NLSearchModelBase, NLSearchModelSchema } from "./NLSearchModels";
|
|
4
|
+
|
|
5
|
+
type NLSearchModelUpdateSchema = NLSearchModelBase;
|
|
6
|
+
|
|
7
|
+
export interface NLSearchModelDeleteSchema {
|
|
8
|
+
id: string;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export default class NLSearchModel {
|
|
12
|
+
constructor(
|
|
13
|
+
private id: string,
|
|
14
|
+
private apiCall: ApiCall,
|
|
15
|
+
) {}
|
|
16
|
+
|
|
17
|
+
async retrieve(): Promise<NLSearchModelSchema> {
|
|
18
|
+
return this.apiCall.get<NLSearchModelSchema>(this.endpointPath());
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
async update(
|
|
22
|
+
schema: NLSearchModelUpdateSchema,
|
|
23
|
+
): Promise<NLSearchModelSchema> {
|
|
24
|
+
return this.apiCall.put<NLSearchModelSchema>(this.endpointPath(), schema);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
async delete(): Promise<NLSearchModelDeleteSchema> {
|
|
28
|
+
return this.apiCall.delete<NLSearchModelDeleteSchema>(this.endpointPath());
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
private endpointPath(): string {
|
|
32
|
+
return `${NLSearchModels.RESOURCEPATH}/${encodeURIComponent(this.id)}`;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import ApiCall from "./ApiCall";
|
|
2
|
+
|
|
3
|
+
const RESOURCEPATH = "/nl_search_models";
|
|
4
|
+
|
|
5
|
+
// Base schema with all possible fields
|
|
6
|
+
export interface NLSearchModelBase {
|
|
7
|
+
model_name: string;
|
|
8
|
+
api_key?: string;
|
|
9
|
+
api_url?: string;
|
|
10
|
+
max_bytes?: number;
|
|
11
|
+
temperature?: number;
|
|
12
|
+
system_prompt?: string;
|
|
13
|
+
// Google-specific parameters
|
|
14
|
+
top_p?: number;
|
|
15
|
+
top_k?: number;
|
|
16
|
+
stop_sequences?: string[];
|
|
17
|
+
api_version?: string;
|
|
18
|
+
// GCP Vertex AI specific
|
|
19
|
+
project_id?: string;
|
|
20
|
+
access_token?: string;
|
|
21
|
+
refresh_token?: string;
|
|
22
|
+
client_id?: string;
|
|
23
|
+
client_secret?: string;
|
|
24
|
+
region?: string;
|
|
25
|
+
max_output_tokens?: number;
|
|
26
|
+
// Cloudflare specific
|
|
27
|
+
account_id?: string;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export interface NLSearchModelCreateSchema extends NLSearchModelBase {
|
|
31
|
+
id?: string;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export interface NLSearchModelSchema extends NLSearchModelBase {
|
|
35
|
+
id: string;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export type NLSearchModelsRetrieveSchema = NLSearchModelSchema[];
|
|
39
|
+
|
|
40
|
+
export default class NLSearchModels {
|
|
41
|
+
constructor(private apiCall: ApiCall) {}
|
|
42
|
+
|
|
43
|
+
async create(
|
|
44
|
+
schema: NLSearchModelCreateSchema,
|
|
45
|
+
): Promise<NLSearchModelSchema> {
|
|
46
|
+
return this.apiCall.post<NLSearchModelSchema>(this.endpointPath(), schema);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
async retrieve(): Promise<NLSearchModelsRetrieveSchema> {
|
|
50
|
+
return this.apiCall.get<NLSearchModelsRetrieveSchema>(this.endpointPath());
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
private endpointPath(): string {
|
|
54
|
+
return NLSearchModels.RESOURCEPATH;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
static get RESOURCEPATH() {
|
|
58
|
+
return RESOURCEPATH;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import ApiCall from "./ApiCall";
|
|
2
|
+
|
|
3
|
+
const RESOURCEPATH = "/operations";
|
|
4
|
+
|
|
5
|
+
export interface SchemaChangeStatus {
|
|
6
|
+
collection: string;
|
|
7
|
+
validated_docs: number;
|
|
8
|
+
altered_docs: number;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export default class Operations {
|
|
12
|
+
constructor(private apiCall: ApiCall) {}
|
|
13
|
+
|
|
14
|
+
async perform(
|
|
15
|
+
operationName:
|
|
16
|
+
| "vote"
|
|
17
|
+
| "snapshot"
|
|
18
|
+
| "cache/clear"
|
|
19
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-object-type -- Can't use `object` here, it needs to intersect with `{}`
|
|
20
|
+
| (string & {}),
|
|
21
|
+
queryParameters: Record<string, any> = {},
|
|
22
|
+
): Promise<any> {
|
|
23
|
+
return this.apiCall.post(
|
|
24
|
+
`${RESOURCEPATH}/${operationName}`,
|
|
25
|
+
{},
|
|
26
|
+
queryParameters,
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
async getSchemaChanges(): Promise<SchemaChangeStatus[]> {
|
|
31
|
+
return this.apiCall.get<SchemaChangeStatus[]>(
|
|
32
|
+
`${RESOURCEPATH}/schema_changes`,
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import ApiCall from "./ApiCall";
|
|
2
|
+
import Collections from "./Collections";
|
|
3
|
+
import Overrides, { OverrideCreateSchema } from "./Overrides";
|
|
4
|
+
|
|
5
|
+
export interface OverrideSchema extends OverrideCreateSchema {
|
|
6
|
+
id: string;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export interface OverrideDeleteSchema {
|
|
10
|
+
id: string;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export default class Override {
|
|
14
|
+
constructor(
|
|
15
|
+
private collectionName: string,
|
|
16
|
+
private overrideId: string,
|
|
17
|
+
private apiCall: ApiCall
|
|
18
|
+
) {}
|
|
19
|
+
|
|
20
|
+
async retrieve(): Promise<OverrideSchema> {
|
|
21
|
+
return this.apiCall.get<OverrideSchema>(this.endpointPath());
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
async delete(): Promise<OverrideDeleteSchema> {
|
|
25
|
+
return this.apiCall.delete<OverrideDeleteSchema>(this.endpointPath());
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
private endpointPath(): string {
|
|
29
|
+
return `${Collections.RESOURCEPATH}/${encodeURIComponent(this.collectionName)}${Overrides.RESOURCEPATH}/${encodeURIComponent(this.overrideId)}`;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import ApiCall from "./ApiCall";
|
|
2
|
+
import Collections from "./Collections";
|
|
3
|
+
import { OverrideSchema } from "./Override";
|
|
4
|
+
|
|
5
|
+
const RESOURCEPATH = "/overrides";
|
|
6
|
+
|
|
7
|
+
export interface OverrideRuleQuerySchema {
|
|
8
|
+
query?: string;
|
|
9
|
+
match?: "exact" | "contains";
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export interface OverrideRuleFilterSchema {
|
|
13
|
+
filter_by?: string;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export interface OverrideRuleTagsSchema {
|
|
17
|
+
tags?: string[];
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface OverrideCreateSchema {
|
|
21
|
+
rule: OverrideRuleQuerySchema &
|
|
22
|
+
OverrideRuleFilterSchema &
|
|
23
|
+
OverrideRuleTagsSchema;
|
|
24
|
+
filter_by?: string;
|
|
25
|
+
sort_by?: string;
|
|
26
|
+
remove_matched_tokens?: boolean;
|
|
27
|
+
replace_query?: string;
|
|
28
|
+
includes?: Array<{
|
|
29
|
+
id: string;
|
|
30
|
+
position: number;
|
|
31
|
+
}>;
|
|
32
|
+
excludes?: Array<{ id: string }>;
|
|
33
|
+
filter_curated_hits?: boolean;
|
|
34
|
+
effective_from_ts?: number;
|
|
35
|
+
effective_to_ts?: number;
|
|
36
|
+
stop_processing?: boolean;
|
|
37
|
+
metadata?: object;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export interface OverridesRetrieveSchema {
|
|
41
|
+
overrides: OverrideSchema[];
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export default class Overrides {
|
|
45
|
+
constructor(
|
|
46
|
+
private collectionName: string,
|
|
47
|
+
private apiCall: ApiCall,
|
|
48
|
+
) {}
|
|
49
|
+
|
|
50
|
+
async upsert(
|
|
51
|
+
overrideId: string,
|
|
52
|
+
params: OverrideCreateSchema,
|
|
53
|
+
): Promise<OverrideSchema> {
|
|
54
|
+
return this.apiCall.put<OverrideSchema>(
|
|
55
|
+
this.endpointPath(overrideId),
|
|
56
|
+
params,
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
async retrieve(): Promise<OverridesRetrieveSchema> {
|
|
61
|
+
return this.apiCall.get<OverridesRetrieveSchema>(this.endpointPath());
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
private endpointPath(operation?: string): string {
|
|
65
|
+
return `${Collections.RESOURCEPATH}/${this.collectionName}${
|
|
66
|
+
Overrides.RESOURCEPATH
|
|
67
|
+
}${operation === undefined ? "" : "/" + encodeURIComponent(operation)}`;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
static get RESOURCEPATH(): string {
|
|
71
|
+
return RESOURCEPATH;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import ApiCall from "./ApiCall";
|
|
2
|
+
import { DocumentSchema } from "./Documents";
|
|
3
|
+
import Presets, { PresetCreateSchema } from "./Presets";
|
|
4
|
+
|
|
5
|
+
export interface PresetSchema<T extends DocumentSchema>
|
|
6
|
+
extends PresetCreateSchema<T, string> {
|
|
7
|
+
name: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export interface PresetDeleteSchema {
|
|
11
|
+
name: string;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export default class Preset {
|
|
15
|
+
constructor(
|
|
16
|
+
private presetId: string,
|
|
17
|
+
private apiCall: ApiCall,
|
|
18
|
+
) {}
|
|
19
|
+
|
|
20
|
+
async retrieve<T extends DocumentSchema>(): Promise<PresetSchema<T>> {
|
|
21
|
+
return this.apiCall.get<PresetSchema<T>>(this.endpointPath());
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
async delete(): Promise<PresetDeleteSchema> {
|
|
25
|
+
return this.apiCall.delete<PresetDeleteSchema>(this.endpointPath());
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
private endpointPath(): string {
|
|
29
|
+
return `${Presets.RESOURCEPATH}/${encodeURIComponent(this.presetId)}`;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import ApiCall from "./ApiCall";
|
|
2
|
+
import { PresetSchema } from "./Preset";
|
|
3
|
+
import type { DocumentSchema, SearchParams } from "./Documents";
|
|
4
|
+
import { MultiSearchRequestsSchema } from "./MultiSearch";
|
|
5
|
+
import { normalizeArrayableParams } from "./Utils";
|
|
6
|
+
|
|
7
|
+
const RESOURCEPATH = "/presets";
|
|
8
|
+
|
|
9
|
+
export interface PresetCreateSchema<
|
|
10
|
+
T extends DocumentSchema,
|
|
11
|
+
Infix extends string,
|
|
12
|
+
> {
|
|
13
|
+
value: SearchParams<T, Infix> | MultiSearchRequestsSchema<T, Infix>;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export interface PresetsRetrieveSchema<T extends DocumentSchema> {
|
|
17
|
+
presets: PresetSchema<T>[];
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export default class Presets {
|
|
21
|
+
constructor(private apiCall: ApiCall) {}
|
|
22
|
+
|
|
23
|
+
async upsert<T extends DocumentSchema, const Infix extends string>(
|
|
24
|
+
presetId: string,
|
|
25
|
+
params: PresetCreateSchema<T, Infix>,
|
|
26
|
+
): Promise<PresetSchema<T>> {
|
|
27
|
+
if (typeof params.value === "object" && "searches" in params.value) {
|
|
28
|
+
const normalizedParams = params.value.searches.map((search) =>
|
|
29
|
+
normalizeArrayableParams<T, SearchParams<T, Infix>, Infix>(search),
|
|
30
|
+
);
|
|
31
|
+
|
|
32
|
+
return this.apiCall.put<PresetSchema<T>>(this.endpointPath(presetId), {
|
|
33
|
+
value: { searches: normalizedParams },
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
const normalizedParams = normalizeArrayableParams<
|
|
37
|
+
T,
|
|
38
|
+
SearchParams<T, Infix>,
|
|
39
|
+
Infix
|
|
40
|
+
>(params.value);
|
|
41
|
+
|
|
42
|
+
return this.apiCall.put<PresetSchema<T>>(this.endpointPath(presetId), {
|
|
43
|
+
value: normalizedParams,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
async retrieve<T extends DocumentSchema>(): Promise<
|
|
48
|
+
PresetsRetrieveSchema<T>
|
|
49
|
+
> {
|
|
50
|
+
return this.apiCall.get<PresetsRetrieveSchema<T>>(this.endpointPath());
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
private endpointPath(operation?: string): string {
|
|
54
|
+
return `${Presets.RESOURCEPATH}${
|
|
55
|
+
operation === undefined ? "" : "/" + encodeURIComponent(operation)
|
|
56
|
+
}`;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
static get RESOURCEPATH(): string {
|
|
60
|
+
return RESOURCEPATH;
|
|
61
|
+
}
|
|
62
|
+
}
|