typesense
Version:
Javascript Library for Typesense
161 lines (150 loc) • 5.3 kB
text/typescript
/* eslint-disable no-dupe-class-members */
import Configuration, { ConfigurationOptions } from "./Configuration";
import ApiCall from "./ApiCall";
import Collections from "./Collections";
import Collection from "./Collection";
import Aliases from "./Aliases";
import Alias from "./Alias";
import Keys from "./Keys";
import Key from "./Key";
import Debug from "./Debug";
import Metrics from "./Metrics";
import Stats from "./Stats";
import Health from "./Health";
import Operations from "./Operations";
import MultiSearch from "./MultiSearch";
import Presets from "./Presets";
import Preset from "./Preset";
import Analytics from "./Analytics";
import Stopwords from "./Stopwords";
import Stopword from "./Stopword";
import Conversations from "./Conversations";
import Conversation from "./Conversation";
import Stemming from "./Stemming";
export default class Client {
configuration: Configuration;
apiCall: ApiCall;
debug: Debug;
metrics: Metrics;
stats: Stats;
health: Health;
operations: Operations;
multiSearch: MultiSearch;
analytics: Analytics;
stemming: Stemming;
private readonly _collections: Collections;
private readonly individualCollections: Record<string, Collection>;
private readonly _aliases: Aliases;
private readonly individualAliases: Record<string, Alias>;
private readonly _keys: Keys;
private readonly individualKeys: Record<number, Key>;
private readonly _presets: Presets;
private readonly individualPresets: Record<string, Preset>;
private readonly _stopwords: Stopwords;
private readonly individualStopwords: Record<string, Stopword>;
private readonly _conversations: Conversations;
private readonly individualConversations: Record<string, Conversation>;
constructor(options: ConfigurationOptions) {
options.sendApiKeyAsQueryParam = options.sendApiKeyAsQueryParam ?? false;
this.configuration = new Configuration(options);
this.apiCall = new ApiCall(this.configuration);
this.debug = new Debug(this.apiCall);
this.metrics = new Metrics(this.apiCall);
this.stats = new Stats(this.apiCall);
this.health = new Health(this.apiCall);
this.operations = new Operations(this.apiCall);
this.multiSearch = new MultiSearch(this.apiCall, this.configuration);
this._collections = new Collections(this.apiCall);
this.individualCollections = {};
this._aliases = new Aliases(this.apiCall);
this.individualAliases = {};
this._keys = new Keys(this.apiCall);
this.individualKeys = {};
this._presets = new Presets(this.apiCall);
this.individualPresets = {};
this._stopwords = new Stopwords(this.apiCall);
this.individualStopwords = {};
this.analytics = new Analytics(this.apiCall);
this.stemming = new Stemming(this.apiCall);
this._conversations = new Conversations(this.apiCall);
this.individualConversations = {};
}
collections(): Collections;
collections<T extends Record<string, any> = object>(
collectionName: string,
): Collection<T>;
collections(collectionName?: string): Collections | Collection {
if (collectionName === undefined) {
return this._collections;
} else {
if (this.individualCollections[collectionName] === undefined) {
this.individualCollections[collectionName] = new Collection(
collectionName,
this.apiCall,
this.configuration,
);
}
return this.individualCollections[collectionName];
}
}
aliases(): Aliases;
aliases(aliasName: string): Alias;
aliases(aliasName?: string): Aliases | Alias {
if (aliasName === undefined) {
return this._aliases;
} else {
if (this.individualAliases[aliasName] === undefined) {
this.individualAliases[aliasName] = new Alias(aliasName, this.apiCall);
}
return this.individualAliases[aliasName];
}
}
keys(): Keys;
keys(id: number): Key;
keys(id?: number): Keys | Key {
if (id === undefined) {
return this._keys;
} else {
if (this.individualKeys[id] === undefined) {
this.individualKeys[id] = new Key(id, this.apiCall);
}
return this.individualKeys[id];
}
}
presets(): Presets;
presets(id: string): Preset;
presets(id?: string): Presets | Preset {
if (id === undefined) {
return this._presets;
} else {
if (this.individualPresets[id] === undefined) {
this.individualPresets[id] = new Preset(id, this.apiCall);
}
return this.individualPresets[id];
}
}
stopwords(): Stopwords;
stopwords(id: string): Stopword;
stopwords(id?: string): Stopwords | Stopword {
if (id === undefined) {
return this._stopwords;
} else {
if (this.individualStopwords[id] === undefined) {
this.individualStopwords[id] = new Stopword(id, this.apiCall);
}
return this.individualStopwords[id];
}
}
conversations(): Conversations;
conversations(id: string): Conversation;
conversations(id?: string): Conversations | Conversation {
if (id === undefined) {
return this._conversations;
} else {
if (this.individualConversations[id] === undefined) {
this.individualConversations[id] = new Conversation(id, this.apiCall);
}
return this.individualConversations[id];
}
}
}