endee 1.0.0-beta.1
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/README.md +163 -0
- package/dist/crypto.d.ts +6 -0
- package/dist/crypto.d.ts.map +1 -0
- package/dist/crypto.js +35 -0
- package/dist/crypto.js.map +1 -0
- package/dist/endee.d.ts +16 -0
- package/dist/endee.d.ts.map +1 -0
- package/dist/endee.js +131 -0
- package/dist/endee.js.map +1 -0
- package/dist/exceptions.d.ts +29 -0
- package/dist/exceptions.d.ts.map +1 -0
- package/dist/exceptions.js +102 -0
- package/dist/exceptions.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/indexClient.d.ts +30 -0
- package/dist/indexClient.d.ts.map +1 -0
- package/dist/indexClient.js +221 -0
- package/dist/indexClient.js.map +1 -0
- package/dist/types/index.d.ts +55 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/dist/userClient.d.ts +21 -0
- package/dist/userClient.d.ts.map +1 -0
- package/dist/userClient.js +104 -0
- package/dist/userClient.js.map +1 -0
- package/dist/utils.d.ts +27 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +198 -0
- package/dist/utils.js.map +1 -0
- package/package.json +43 -0
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Index client for Endee-DB
|
|
3
|
+
*/
|
|
4
|
+
import axios from 'axios';
|
|
5
|
+
import { encode, decode } from '@msgpack/msgpack';
|
|
6
|
+
import { jsonZip, jsonUnzip } from './crypto.js';
|
|
7
|
+
import { raiseException } from './exceptions.js';
|
|
8
|
+
import pako from 'pako';
|
|
9
|
+
export class Index {
|
|
10
|
+
name;
|
|
11
|
+
token;
|
|
12
|
+
url;
|
|
13
|
+
count;
|
|
14
|
+
space_type;
|
|
15
|
+
dimension;
|
|
16
|
+
precision;
|
|
17
|
+
M;
|
|
18
|
+
constructor(name, token, url, _version = 1, params = {}) {
|
|
19
|
+
this.name = name;
|
|
20
|
+
this.token = token;
|
|
21
|
+
this.url = url;
|
|
22
|
+
this.count = params.total_elements || 0;
|
|
23
|
+
this.space_type = params.space_type || 'cosine';
|
|
24
|
+
this.dimension = params.dimension || 0;
|
|
25
|
+
this.precision = params.use_fp16 ? 'float16' : 'float32';
|
|
26
|
+
this.M = params.M || 16;
|
|
27
|
+
}
|
|
28
|
+
toString() {
|
|
29
|
+
return this.name;
|
|
30
|
+
}
|
|
31
|
+
_normalizeVector(vector) {
|
|
32
|
+
if (vector.length !== this.dimension) {
|
|
33
|
+
throw new Error(`Vector dimension mismatch: expected ${this.dimension}, got ${vector.length}`);
|
|
34
|
+
}
|
|
35
|
+
if (this.space_type !== "cosine") {
|
|
36
|
+
return [vector, 1.0];
|
|
37
|
+
}
|
|
38
|
+
const norm = Math.sqrt(vector.reduce((sum, v) => sum + v * v, 0));
|
|
39
|
+
if (norm === 0)
|
|
40
|
+
return [vector, 1.0];
|
|
41
|
+
const normalized = vector.map(v => v / norm);
|
|
42
|
+
return [normalized, norm];
|
|
43
|
+
}
|
|
44
|
+
async upsert(inputArray) {
|
|
45
|
+
if (inputArray.length > 1000) {
|
|
46
|
+
throw new Error("Cannot insert more than 1000 vectors at a time");
|
|
47
|
+
}
|
|
48
|
+
const vectorBatch = [];
|
|
49
|
+
for (const item of inputArray) {
|
|
50
|
+
const [vector, norm] = this._normalizeVector(item.vector);
|
|
51
|
+
const metaData = jsonZip(item.meta || {});
|
|
52
|
+
const vectorObj = [
|
|
53
|
+
String(item.id || ''),
|
|
54
|
+
metaData,
|
|
55
|
+
JSON.stringify(item.filter || {}),
|
|
56
|
+
norm,
|
|
57
|
+
vector
|
|
58
|
+
];
|
|
59
|
+
vectorBatch.push(vectorObj);
|
|
60
|
+
}
|
|
61
|
+
const serializedData = encode(vectorBatch);
|
|
62
|
+
const headers = {
|
|
63
|
+
'Authorization': this.token,
|
|
64
|
+
'Content-Type': 'application/msgpack'
|
|
65
|
+
};
|
|
66
|
+
try {
|
|
67
|
+
await axios.post(`${this.url}/index/${this.name}/vector/insert`, serializedData, { headers, responseType: 'arraybuffer' });
|
|
68
|
+
}
|
|
69
|
+
catch (err) {
|
|
70
|
+
if (axios.isAxiosError(err) && err.response) {
|
|
71
|
+
raiseException(err.response.status, err.response.data);
|
|
72
|
+
}
|
|
73
|
+
throw err;
|
|
74
|
+
}
|
|
75
|
+
return "Vectors inserted successfully";
|
|
76
|
+
}
|
|
77
|
+
async query(options) {
|
|
78
|
+
const { vector, topK = 10, filter = null, ef = 128, includeVectors = false, } = options;
|
|
79
|
+
if (!vector)
|
|
80
|
+
throw new Error("vector is required");
|
|
81
|
+
if (topK > 200)
|
|
82
|
+
throw new Error("top_k cannot be greater than 200");
|
|
83
|
+
if (ef > 1024)
|
|
84
|
+
throw new Error("ef search cannot be greater than 1024");
|
|
85
|
+
const [queryVector] = this._normalizeVector(vector);
|
|
86
|
+
const headers = {
|
|
87
|
+
'Authorization': this.token,
|
|
88
|
+
'Content-Type': 'application/json'
|
|
89
|
+
};
|
|
90
|
+
const data = {
|
|
91
|
+
vector: queryVector,
|
|
92
|
+
k: topK,
|
|
93
|
+
ef: ef,
|
|
94
|
+
include_vectors: includeVectors
|
|
95
|
+
};
|
|
96
|
+
if (filter) {
|
|
97
|
+
data.filter = JSON.stringify(filter);
|
|
98
|
+
}
|
|
99
|
+
let response;
|
|
100
|
+
try {
|
|
101
|
+
response = await axios.post(`${this.url}/index/${this.name}/search`, data, { headers, responseType: 'arraybuffer' });
|
|
102
|
+
}
|
|
103
|
+
catch (err) {
|
|
104
|
+
if (axios.isAxiosError(err) && err.response) {
|
|
105
|
+
raiseException(err.response.status, err.response.data);
|
|
106
|
+
}
|
|
107
|
+
throw err;
|
|
108
|
+
}
|
|
109
|
+
const decoded = decode(new Uint8Array(response.data));
|
|
110
|
+
const results = Array.isArray(decoded) ? decoded : [];
|
|
111
|
+
let processedResults = [];
|
|
112
|
+
for (const result of results) {
|
|
113
|
+
const similarity = result[0];
|
|
114
|
+
const vectorId = result[1];
|
|
115
|
+
const metaData = result[2];
|
|
116
|
+
const filterStr = result[3];
|
|
117
|
+
const normValue = result[4];
|
|
118
|
+
const vectorData = result.length > 5 ? result[5] : undefined;
|
|
119
|
+
let meta = {};
|
|
120
|
+
try {
|
|
121
|
+
const inflated = pako.inflate(jsonUnzip(metaData));
|
|
122
|
+
meta = JSON.parse(new TextDecoder().decode(inflated));
|
|
123
|
+
}
|
|
124
|
+
catch {
|
|
125
|
+
meta = jsonUnzip(metaData);
|
|
126
|
+
}
|
|
127
|
+
const processedResult = {
|
|
128
|
+
id: vectorId,
|
|
129
|
+
similarity: similarity,
|
|
130
|
+
distance: 1 - similarity,
|
|
131
|
+
meta: meta,
|
|
132
|
+
norm: normValue
|
|
133
|
+
};
|
|
134
|
+
if (filterStr) {
|
|
135
|
+
processedResult.filter = JSON.parse(filterStr);
|
|
136
|
+
}
|
|
137
|
+
if (includeVectors && vectorData) {
|
|
138
|
+
processedResult.vector = Array.from(vectorData);
|
|
139
|
+
}
|
|
140
|
+
processedResults.push(processedResult);
|
|
141
|
+
}
|
|
142
|
+
if (!includeVectors) {
|
|
143
|
+
for (const result of processedResults) {
|
|
144
|
+
delete result.vector;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
return processedResults;
|
|
148
|
+
}
|
|
149
|
+
async deleteVector(id) {
|
|
150
|
+
const headers = {
|
|
151
|
+
'Authorization': this.token,
|
|
152
|
+
};
|
|
153
|
+
let response;
|
|
154
|
+
try {
|
|
155
|
+
response = await axios.delete(`${this.url}/index/${this.name}/vector/${id}/delete`, { headers });
|
|
156
|
+
}
|
|
157
|
+
catch (err) {
|
|
158
|
+
if (axios.isAxiosError(err) && err.response) {
|
|
159
|
+
raiseException(err.response.status, err.response.data);
|
|
160
|
+
}
|
|
161
|
+
throw err;
|
|
162
|
+
}
|
|
163
|
+
return response.data + " rows deleted";
|
|
164
|
+
}
|
|
165
|
+
// Need to test this function first.
|
|
166
|
+
async deleteWithFilter(filter) {
|
|
167
|
+
const headers = {
|
|
168
|
+
'Authorization': this.token,
|
|
169
|
+
'Content-Type': 'application/json'
|
|
170
|
+
};
|
|
171
|
+
const data = { filter };
|
|
172
|
+
let response;
|
|
173
|
+
try {
|
|
174
|
+
response = await axios.delete(`${this.url}/index/${this.name}/vectors/delete`, { headers, data });
|
|
175
|
+
}
|
|
176
|
+
catch (err) {
|
|
177
|
+
if (axios.isAxiosError(err) && err.response) {
|
|
178
|
+
raiseException(err.response.status, err.response.data);
|
|
179
|
+
}
|
|
180
|
+
throw err;
|
|
181
|
+
}
|
|
182
|
+
return response.data;
|
|
183
|
+
}
|
|
184
|
+
async getVector(id) {
|
|
185
|
+
const headers = {
|
|
186
|
+
'Authorization': this.token,
|
|
187
|
+
'Content-Type': 'application/json'
|
|
188
|
+
};
|
|
189
|
+
let response;
|
|
190
|
+
try {
|
|
191
|
+
response = await axios.post(`${this.url}/index/${this.name}/vector/get`, { id }, { headers, responseType: 'arraybuffer' });
|
|
192
|
+
}
|
|
193
|
+
catch (err) {
|
|
194
|
+
if (axios.isAxiosError(err) && err.response) {
|
|
195
|
+
raiseException(err.response.status, err.response.data);
|
|
196
|
+
}
|
|
197
|
+
throw err;
|
|
198
|
+
}
|
|
199
|
+
const vectorObj = decode(new Uint8Array(response.data));
|
|
200
|
+
const meta = jsonUnzip(vectorObj[1]);
|
|
201
|
+
const vector = Array.from(vectorObj[4]);
|
|
202
|
+
return {
|
|
203
|
+
id: vectorObj[0],
|
|
204
|
+
meta: meta,
|
|
205
|
+
filter: vectorObj[2],
|
|
206
|
+
norm: vectorObj[3],
|
|
207
|
+
vector: vector
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
describe() {
|
|
211
|
+
return {
|
|
212
|
+
name: this.name,
|
|
213
|
+
space_type: this.space_type,
|
|
214
|
+
dimension: this.dimension,
|
|
215
|
+
count: this.count,
|
|
216
|
+
precision: this.precision,
|
|
217
|
+
M: this.M,
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
//# sourceMappingURL=indexClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indexClient.js","sourceRoot":"","sources":["../src/indexClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for Endee-DB
|
|
3
|
+
*/
|
|
4
|
+
export type SpaceType = 'cosine' | 'l2' | 'ip';
|
|
5
|
+
export interface CreateIndexOptions {
|
|
6
|
+
name: string;
|
|
7
|
+
dimension: number;
|
|
8
|
+
spaceType?: SpaceType;
|
|
9
|
+
M?: number;
|
|
10
|
+
efCon?: number;
|
|
11
|
+
useFp16?: boolean;
|
|
12
|
+
version?: number;
|
|
13
|
+
}
|
|
14
|
+
export interface VectorItem {
|
|
15
|
+
id: string;
|
|
16
|
+
vector: number[];
|
|
17
|
+
meta?: Record<string, unknown>;
|
|
18
|
+
filter?: Record<string, unknown>;
|
|
19
|
+
}
|
|
20
|
+
export interface QueryOptions {
|
|
21
|
+
vector: number[];
|
|
22
|
+
topK?: number;
|
|
23
|
+
filter?: Record<string, unknown> | null;
|
|
24
|
+
ef?: number;
|
|
25
|
+
includeVectors?: boolean;
|
|
26
|
+
log?: boolean;
|
|
27
|
+
}
|
|
28
|
+
export interface QueryResult {
|
|
29
|
+
id: string;
|
|
30
|
+
similarity: number;
|
|
31
|
+
distance: number;
|
|
32
|
+
meta?: Record<string, unknown>;
|
|
33
|
+
filter?: Record<string, unknown>;
|
|
34
|
+
norm?: number;
|
|
35
|
+
vector?: number[];
|
|
36
|
+
}
|
|
37
|
+
export interface IndexInfo {
|
|
38
|
+
name: string;
|
|
39
|
+
space_type: SpaceType;
|
|
40
|
+
dimension: number;
|
|
41
|
+
total_elements?: number;
|
|
42
|
+
use_fp16?: boolean;
|
|
43
|
+
M?: number;
|
|
44
|
+
checksum?: string;
|
|
45
|
+
lib_token?: string;
|
|
46
|
+
}
|
|
47
|
+
export interface IndexDescription {
|
|
48
|
+
name: string;
|
|
49
|
+
space_type: SpaceType;
|
|
50
|
+
dimension: number;
|
|
51
|
+
count: number;
|
|
52
|
+
precision: string;
|
|
53
|
+
M: number;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC;AAE/C,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACxC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,SAAS,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,SAAS,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,CAAC,EAAE,MAAM,CAAC;CACX"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* User management client for Endee-DB
|
|
3
|
+
*/
|
|
4
|
+
export declare class User {
|
|
5
|
+
private baseUrl;
|
|
6
|
+
private token;
|
|
7
|
+
constructor(baseUrl?: string, token?: string | null);
|
|
8
|
+
setToken(token: string): void;
|
|
9
|
+
generateRootToken(): Promise<unknown>;
|
|
10
|
+
createUser(username: string, rootToken: string): Promise<unknown>;
|
|
11
|
+
deleteUser(username: string): Promise<unknown>;
|
|
12
|
+
deactivateUser(username: string): Promise<void>;
|
|
13
|
+
generateToken(name: string): Promise<unknown>;
|
|
14
|
+
listTokens(): Promise<unknown[]>;
|
|
15
|
+
deleteToken(tokenName: string): Promise<void>;
|
|
16
|
+
getUserInfo(username: string): Promise<unknown>;
|
|
17
|
+
getUserType(username: string): Promise<string>;
|
|
18
|
+
setUserType(username: string, userType: string): Promise<void>;
|
|
19
|
+
getAllIndices(): Promise<unknown[]>;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=userClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"userClient.d.ts","sourceRoot":"","sources":["../src/userClient.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,qBAAa,IAAI;IACf,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAAgB;gBAEjB,OAAO,SAAiC,EAAE,KAAK,GAAE,MAAM,GAAG,IAAW;IAKjF,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIvB,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;IAKrC,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAOjE,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS9C,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ/C,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS7C,UAAU,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAOhC,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM7C,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAO/C,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAO9C,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS9D,aAAa,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;CAO1C"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* User management client for Endee-DB
|
|
3
|
+
*/
|
|
4
|
+
import axios from 'axios';
|
|
5
|
+
export class User {
|
|
6
|
+
baseUrl;
|
|
7
|
+
token;
|
|
8
|
+
constructor(baseUrl = "http://localhost:8080/api/v1", token = null) {
|
|
9
|
+
this.baseUrl = baseUrl.replace(/\/$/, '');
|
|
10
|
+
this.token = token;
|
|
11
|
+
}
|
|
12
|
+
setToken(token) {
|
|
13
|
+
this.token = token;
|
|
14
|
+
}
|
|
15
|
+
async generateRootToken() {
|
|
16
|
+
const response = await axios.post(`${this.baseUrl}/root/token`);
|
|
17
|
+
return response.data;
|
|
18
|
+
}
|
|
19
|
+
async createUser(username, rootToken) {
|
|
20
|
+
const headers = { "Authorization": rootToken };
|
|
21
|
+
const data = { username };
|
|
22
|
+
const response = await axios.post(`${this.baseUrl}/users`, data, { headers });
|
|
23
|
+
return response.data;
|
|
24
|
+
}
|
|
25
|
+
async deleteUser(username) {
|
|
26
|
+
if (!this.token)
|
|
27
|
+
throw new Error("User token not set. Please set the user token using the setToken method.");
|
|
28
|
+
if (this.token.split(":")[0] !== "root")
|
|
29
|
+
throw new Error("Only root user can delete other users");
|
|
30
|
+
if (username === "root")
|
|
31
|
+
throw new Error("Cannot delete root user");
|
|
32
|
+
const headers = { "Authorization": this.token };
|
|
33
|
+
const response = await axios.delete(`${this.baseUrl}/users/${username}`, { headers });
|
|
34
|
+
return response.data;
|
|
35
|
+
}
|
|
36
|
+
async deactivateUser(username) {
|
|
37
|
+
if (!this.token)
|
|
38
|
+
throw new Error("User token not set. Please set the user token using the setToken method.");
|
|
39
|
+
if (username === "root")
|
|
40
|
+
throw new Error("Cannot deactivate root user");
|
|
41
|
+
if (this.token.split(":")[0] !== "root")
|
|
42
|
+
throw new Error("Only root user can deactivate other users");
|
|
43
|
+
const headers = { "Authorization": this.token };
|
|
44
|
+
await axios.post(`${this.baseUrl}/users/${username}/deactivate`, {}, { headers });
|
|
45
|
+
}
|
|
46
|
+
async generateToken(name) {
|
|
47
|
+
if (!this.token)
|
|
48
|
+
throw new Error("User token not set. Please set the user token using the setToken method.");
|
|
49
|
+
if (!/^[a-zA-Z0-9_]+$/.test(name))
|
|
50
|
+
throw new Error("Token name should only contain alphanumeric characters and _");
|
|
51
|
+
const headers = { "Authorization": this.token };
|
|
52
|
+
const data = { name };
|
|
53
|
+
const response = await axios.post(`${this.baseUrl}/tokens`, data, { headers });
|
|
54
|
+
return response.data;
|
|
55
|
+
}
|
|
56
|
+
async listTokens() {
|
|
57
|
+
if (!this.token)
|
|
58
|
+
throw new Error("User token not set. Please set the user token using the setToken method.");
|
|
59
|
+
const headers = { "Authorization": this.token };
|
|
60
|
+
const response = await axios.get(`${this.baseUrl}/tokens`, { headers });
|
|
61
|
+
return response.data.tokens;
|
|
62
|
+
}
|
|
63
|
+
async deleteToken(tokenName) {
|
|
64
|
+
if (!this.token)
|
|
65
|
+
throw new Error("User token not set. Please set the user token using the setToken method.");
|
|
66
|
+
const headers = { "Authorization": this.token };
|
|
67
|
+
await axios.delete(`${this.baseUrl}/tokens/${tokenName}`, { headers });
|
|
68
|
+
}
|
|
69
|
+
async getUserInfo(username) {
|
|
70
|
+
if (!this.token)
|
|
71
|
+
throw new Error("User token not set. Please set the user token using the setToken method.");
|
|
72
|
+
const headers = { "Authorization": this.token };
|
|
73
|
+
const response = await axios.get(`${this.baseUrl}/users/${username}/info`, { headers });
|
|
74
|
+
return response.data;
|
|
75
|
+
}
|
|
76
|
+
async getUserType(username) {
|
|
77
|
+
if (!this.token)
|
|
78
|
+
throw new Error("User token not set. Please set the user token using the setToken method.");
|
|
79
|
+
const headers = { "Authorization": this.token };
|
|
80
|
+
const response = await axios.get(`${this.baseUrl}/users/${username}/type`, { headers });
|
|
81
|
+
return response.data.user_type;
|
|
82
|
+
}
|
|
83
|
+
async setUserType(username, userType) {
|
|
84
|
+
if (!this.token)
|
|
85
|
+
throw new Error("User token not set. Please set the user token using the setToken method.");
|
|
86
|
+
if (this.token.split(":")[0] !== "root")
|
|
87
|
+
throw new Error("Only root user can set user types");
|
|
88
|
+
if (!["Free", "Starter", "Pro"].includes(userType))
|
|
89
|
+
throw new Error("User type must be one of: Free, Starter, Pro");
|
|
90
|
+
const headers = { "Authorization": this.token };
|
|
91
|
+
const data = { user_type: userType };
|
|
92
|
+
await axios.put(`${this.baseUrl}/users/${username}/type`, data, { headers });
|
|
93
|
+
}
|
|
94
|
+
async getAllIndices() {
|
|
95
|
+
if (!this.token)
|
|
96
|
+
throw new Error("User token not set. Please set the user token using the setToken method.");
|
|
97
|
+
if (this.token.split(":")[0] !== "root")
|
|
98
|
+
throw new Error("Only root user can view all indices");
|
|
99
|
+
const headers = { "Authorization": this.token };
|
|
100
|
+
const response = await axios.get(`${this.baseUrl}/index/all`, { headers });
|
|
101
|
+
return response.data.indices;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=userClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"userClient.js","sourceRoot":"","sources":["../src/userClient.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.d.ts
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility functions for Endee-DB
|
|
3
|
+
*/
|
|
4
|
+
export declare function isValidIndexName(indexName: string): boolean;
|
|
5
|
+
export declare function validateString(value: unknown, name: string, required?: boolean): string;
|
|
6
|
+
export declare function validateNumber(value: unknown, name: string, required?: boolean, min?: number | null, max?: number | null): number;
|
|
7
|
+
export declare function validateInteger(value: unknown, name: string, required?: boolean, min?: number | null, max?: number | null): number;
|
|
8
|
+
export declare function validateArray<T>(value: unknown, name: string, required?: boolean, minLength?: number | null, maxLength?: number | null): T[];
|
|
9
|
+
export declare function validateVector(vector: unknown, expectedDimension?: number | null, name?: string): number[];
|
|
10
|
+
export declare function validateBoolean(value: unknown, name: string, required?: boolean): boolean;
|
|
11
|
+
export declare function validateObject(value: unknown, name: string, required?: boolean): Record<string, unknown>;
|
|
12
|
+
export interface RRFResult {
|
|
13
|
+
id: string;
|
|
14
|
+
score: number;
|
|
15
|
+
meta?: Record<string, unknown>;
|
|
16
|
+
source_ranks?: Record<string, number>;
|
|
17
|
+
}
|
|
18
|
+
export declare function reciprocalRankFusion(resultLists: Array<Array<{
|
|
19
|
+
id: string;
|
|
20
|
+
meta?: Record<string, unknown>;
|
|
21
|
+
}>>, k?: number): RRFResult[];
|
|
22
|
+
export interface RRFValidationResult {
|
|
23
|
+
isValid: boolean;
|
|
24
|
+
errorMessage: string;
|
|
25
|
+
}
|
|
26
|
+
export declare function validateRrfInput(data: unknown): RRFValidationResult;
|
|
27
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAG3D;AAED,wBAAgB,cAAc,CAC5B,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,MAAM,EACZ,QAAQ,UAAO,GACd,MAAM,CAWR;AAED,wBAAgB,cAAc,CAC5B,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,MAAM,EACZ,QAAQ,UAAO,EACf,GAAG,GAAE,MAAM,GAAG,IAAW,EACzB,GAAG,GAAE,MAAM,GAAG,IAAW,GACxB,MAAM,CAgBR;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,MAAM,EACZ,QAAQ,UAAO,EACf,GAAG,GAAE,MAAM,GAAG,IAAW,EACzB,GAAG,GAAE,MAAM,GAAG,IAAW,GACxB,MAAM,CAMR;AAED,wBAAgB,aAAa,CAAC,CAAC,EAC7B,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,MAAM,EACZ,QAAQ,UAAO,EACf,SAAS,GAAE,MAAM,GAAG,IAAW,EAC/B,SAAS,GAAE,MAAM,GAAG,IAAW,GAC9B,CAAC,EAAE,CAgBL;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,OAAO,EACf,iBAAiB,GAAE,MAAM,GAAG,IAAW,EACvC,IAAI,SAAW,GACd,MAAM,EAAE,CAeV;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,MAAM,EACZ,QAAQ,UAAO,GACd,OAAO,CAQT;AAED,wBAAgB,cAAc,CAC5B,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,MAAM,EACZ,QAAQ,UAAO,GACd,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAUzB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AAED,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,CAAC,EACzE,CAAC,SAAK,GACL,SAAS,EAAE,CAuCb;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,mBAAmB,CAmFnE"}
|