bright-client 0.4.1 → 0.6.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/README.md CHANGED
@@ -1,6 +1,10 @@
1
- # Bright JS
1
+ <div align="center">
2
+ <img src="assets/logo.svg" alt="Bright Logo" width="200"/>
3
+ </div>
2
4
 
3
- TypeScript/JavaScript client library for [Bright](https://github.com/nnstd/bright) full-text search database.
5
+ <div align="center">
6
+ TypeScript/JavaScript client library for <a href="https://github.com/nnstd/bright">Bright</a> full-text search database.
7
+ </div>
4
8
 
5
9
  ## Installation
6
10
 
package/dist/index.cjs CHANGED
@@ -212,7 +212,7 @@ function createBrightError(statusCode, errorResponse) {
212
212
  case "PARSE_ERROR": return new ParseError(message, details);
213
213
  case "INDEX_NOT_FOUND": return new IndexNotFoundError(message, details);
214
214
  case "DOCUMENT_NOT_FOUND": return new DocumentNotFoundError(message, details);
215
- case "NOT_LEADER": return new NotLeaderError(message, details?.leaderUrl, details);
215
+ case "NOT_LEADER": return new NotLeaderError(message, typeof details?.leaderUrl === "string" ? details.leaderUrl : void 0, details);
216
216
  case "CLUSTER_UNAVAILABLE": return new ClusterUnavailableError(message, details);
217
217
  case "INSUFFICIENT_PERMISSIONS": return new InsufficientPermissionsError(message, details);
218
218
  case "LEADER_ONLY_OPERATION": return new LeaderOnlyOperationError(message, details);
@@ -238,8 +238,76 @@ function createBrightError(statusCode, errorResponse) {
238
238
  }
239
239
  }
240
240
 
241
+ //#endregion
242
+ //#region src/types.ts
243
+ /**
244
+ * Build a field query with optional boost
245
+ * @example field('name', 'water', 5) => 'name:water^5'
246
+ */
247
+ function field(name, value, boost) {
248
+ const base = `${String(name)}:${String(value)}`;
249
+ return boost ? `${base}^${boost}` : base;
250
+ }
251
+ /**
252
+ * Build a required (MUST) clause
253
+ * @example must('name:water') => '+name:water'
254
+ */
255
+ function must(query) {
256
+ return `+${query}`;
257
+ }
258
+ /**
259
+ * Build an excluded (MUST NOT) clause
260
+ * @example mustNot('name:water') => '-name:water'
261
+ */
262
+ function mustNot(query) {
263
+ return `-${query}`;
264
+ }
265
+ /**
266
+ * Build a phrase query
267
+ * @example phrase('light beer') => '"light beer"'
268
+ */
269
+ function phrase(text) {
270
+ return `"${text}"`;
271
+ }
272
+ /**
273
+ * Build a range query
274
+ * @example range('price', { gte: 10, lt: 100 }) => 'price:>=10 price:<100'
275
+ */
276
+ function range(name, filter) {
277
+ const parts = [];
278
+ const n = String(name);
279
+ if (filter.gt !== void 0) parts.push(`${n}:>${filter.gt}`);
280
+ if (filter.gte !== void 0) parts.push(`${n}:>=${filter.gte}`);
281
+ if (filter.lt !== void 0) parts.push(`${n}:<${filter.lt}`);
282
+ if (filter.lte !== void 0) parts.push(`${n}:<=${filter.lte}`);
283
+ return parts.join(" ");
284
+ }
285
+
241
286
  //#endregion
242
287
  //#region src/index.ts
288
+ function buildQueryFromFilters(filter, range$1) {
289
+ const parts = [];
290
+ if (filter) for (const [key, val] of Object.entries(filter)) {
291
+ if (val === void 0) continue;
292
+ if (typeof val === "object" && val !== null && "value" in val) {
293
+ const { value, boost } = val;
294
+ parts.push(boost ? `${key}:${value}^${boost}` : `${key}:${value}`);
295
+ } else parts.push(`${key}:${val}`);
296
+ }
297
+ if (range$1) for (const [key, rangeVal] of Object.entries(range$1)) {
298
+ if (rangeVal === void 0) continue;
299
+ const r = rangeVal;
300
+ if (r.gt !== void 0) parts.push(`${key}:>${r.gt}`);
301
+ if (r.gte !== void 0) parts.push(`${key}:>=${r.gte}`);
302
+ if (r.lt !== void 0) parts.push(`${key}:<${r.lt}`);
303
+ if (r.lte !== void 0) parts.push(`${key}:<=${r.lte}`);
304
+ }
305
+ return parts.join(" ");
306
+ }
307
+ function normalizeSortField(sort) {
308
+ if (typeof sort === "object" && sort !== null && "field" in sort) return sort.order === "desc" ? `-${String(sort.field)}` : String(sort.field);
309
+ return String(sort);
310
+ }
243
311
  var BrightClient = class {
244
312
  constructor(options) {
245
313
  this.baseUrl = options.baseUrl.replace(/\/$/, "");
@@ -277,9 +345,11 @@ var BrightClient = class {
277
345
  async deleteIndex(id) {
278
346
  return this.request(`/indexes/${id}`, { method: "DELETE" });
279
347
  }
280
- async addDocuments(indexId, documents, format = "jsoneachrow") {
348
+ async addDocuments(indexId, documents, options) {
281
349
  const body = documents.map((doc) => JSON.stringify(doc)).join("\n");
282
- const params = new URLSearchParams({ format });
350
+ const params = new URLSearchParams();
351
+ params.append("format", options?.format || "jsoneachrow");
352
+ if (options?.primaryKey) params.append("primaryKey", options.primaryKey);
283
353
  return this.request(`/indexes/${indexId}/documents?${params}`, {
284
354
  method: "POST",
285
355
  body
@@ -302,25 +372,53 @@ var BrightClient = class {
302
372
  }
303
373
  async search(indexId, params) {
304
374
  const searchParams = new URLSearchParams();
305
- if (params?.q) searchParams.append("q", params.q);
375
+ const filterQuery = buildQueryFromFilters(params?.filter, params?.range);
376
+ const fullQuery = [params?.q, filterQuery].filter(Boolean).join(" ");
377
+ if (fullQuery) searchParams.append("q", fullQuery);
306
378
  if (params?.offset) searchParams.append("offset", params.offset.toString());
307
379
  if (params?.limit) searchParams.append("limit", params.limit.toString());
308
380
  if (params?.page) searchParams.append("page", params.page.toString());
309
- if (params?.sort) params.sort.forEach((s) => searchParams.append("sort[]", s));
310
- if (params?.attributesToRetrieve) params.attributesToRetrieve.forEach((attr) => searchParams.append("attributesToRetrieve[]", attr));
311
- if (params?.attributesToExclude) params.attributesToExclude.forEach((attr) => searchParams.append("attributesToExclude[]", attr));
381
+ if (params?.sort) params.sort.forEach((s) => searchParams.append("sort[]", normalizeSortField(s)));
382
+ if (params?.attributesToRetrieve) params.attributesToRetrieve.forEach((attr) => searchParams.append("attributesToRetrieve[]", String(attr)));
383
+ if (params?.attributesToExclude) params.attributesToExclude.forEach((attr) => searchParams.append("attributesToExclude[]", String(attr)));
312
384
  return this.request(`/indexes/${indexId}/searches?${searchParams}`, { method: "POST" });
313
385
  }
386
+ async listIngresses(indexId) {
387
+ return this.request(`/indexes/${indexId}/ingresses`);
388
+ }
389
+ async createIngress(indexId, params) {
390
+ return this.request(`/indexes/${indexId}/ingresses`, {
391
+ method: "POST",
392
+ body: JSON.stringify(params)
393
+ });
394
+ }
395
+ async getIngress(indexId, ingressId) {
396
+ return this.request(`/indexes/${indexId}/ingresses/${ingressId}`);
397
+ }
398
+ async updateIngress(indexId, ingressId, state) {
399
+ return this.request(`/indexes/${indexId}/ingresses/${ingressId}`, {
400
+ method: "PATCH",
401
+ body: JSON.stringify({ state })
402
+ });
403
+ }
404
+ async deleteIngress(indexId, ingressId) {
405
+ return this.request(`/indexes/${indexId}/ingresses/${ingressId}`, { method: "DELETE" });
406
+ }
314
407
  index(indexId) {
315
408
  return {
316
409
  id: indexId,
317
410
  update: (config) => this.updateIndex(indexId, config),
318
411
  delete: () => this.deleteIndex(indexId),
319
- addDocuments: (documents, format) => this.addDocuments(indexId, documents, format),
412
+ addDocuments: (documents, options) => this.addDocuments(indexId, documents, options),
320
413
  updateDocument: (documentId, updates) => this.updateDocument(indexId, documentId, updates),
321
414
  deleteDocument: (documentId) => this.deleteDocument(indexId, documentId),
322
415
  deleteDocuments: (options) => this.deleteDocuments(indexId, options),
323
- search: (params) => this.search(indexId, params)
416
+ search: (params) => this.search(indexId, params),
417
+ listIngresses: () => this.listIngresses(indexId),
418
+ createIngress: (params) => this.createIngress(indexId, params),
419
+ getIngress: (ingressId) => this.getIngress(indexId, ingressId),
420
+ updateIngress: (ingressId, state) => this.updateIngress(indexId, ingressId, state),
421
+ deleteIngress: (ingressId) => this.deleteIngress(indexId, ingressId)
324
422
  };
325
423
  }
326
424
  };
@@ -358,4 +456,9 @@ exports.SerializationFailedError = SerializationFailedError;
358
456
  exports.UuidGenerationFailedError = UuidGenerationFailedError;
359
457
  exports.ValidationError = ValidationError;
360
458
  exports.createBrightError = createBrightError;
361
- exports.createClient = createClient;
459
+ exports.createClient = createClient;
460
+ exports.field = field;
461
+ exports.must = must;
462
+ exports.mustNot = mustNot;
463
+ exports.phrase = phrase;
464
+ exports.range = range;
package/dist/index.d.cts CHANGED
@@ -1,129 +1,251 @@
1
+ //#region src/types.d.ts
2
+ interface IndexConfig {
3
+ id: string;
4
+ primaryKey?: string;
5
+ }
6
+ /** Field filter with optional boost: `field:value` or `field:value^boost` */
7
+ type FieldFilter<T> = { [K in keyof T]?: T[K] extends string | number | boolean | Date ? T[K] | {
8
+ value: T[K];
9
+ boost?: number;
10
+ } : never };
11
+ /** Numeric range filter for a field */
12
+ interface RangeFilter<T> {
13
+ gt?: T;
14
+ gte?: T;
15
+ lt?: T;
16
+ lte?: T;
17
+ }
18
+ /** Field range filters: `field:>value`, `field:>=value`, etc. */
19
+ type FieldRangeFilter<T> = { [K in keyof T]?: T[K] extends number | Date ? RangeFilter<T[K]> : never };
20
+ /** Sort direction for a field */
21
+ type SortDirection = 'asc' | 'desc';
22
+ /** Typed sort options */
23
+ type SortField<T> = keyof T | `-${string & keyof T}` | {
24
+ field: keyof T;
25
+ order: SortDirection;
26
+ };
27
+ interface SearchParams<T = Record<string, unknown>, Exclude extends keyof T = never> {
28
+ /** Query string (supports Bleve syntax: field:value, +required, -excluded, ^boost) */
29
+ q?: string;
30
+ /** Typed field filters (alternative to query string) */
31
+ filter?: FieldFilter<T>;
32
+ /** Typed range filters for numeric/date fields */
33
+ range?: FieldRangeFilter<T>;
34
+ /** Pagination offset */
35
+ offset?: number;
36
+ /** Results per page limit */
37
+ limit?: number;
38
+ /** Page number (1-indexed) */
39
+ page?: number;
40
+ /** Sort fields (prefix with - for descending) */
41
+ sort?: Array<SortField<T>>;
42
+ /** Fields to retrieve (defaults to all) */
43
+ attributesToRetrieve?: Array<keyof T>;
44
+ /** Fields to exclude from results */
45
+ attributesToExclude?: Exclude[];
46
+ }
47
+ /** Search response with excluded fields removed from type */
48
+ interface SearchResponse<T = Record<string, unknown>, Exclude extends keyof T = never> {
49
+ hits: Array<Omit<T, Exclude>>;
50
+ totalHits: number;
51
+ totalPages: number;
52
+ }
53
+ /**
54
+ * Build a field query with optional boost
55
+ * @example field('name', 'water', 5) => 'name:water^5'
56
+ */
57
+ declare function field<T, K$1 extends keyof T>(name: K$1, value: T[K$1], boost?: number): string;
58
+ /**
59
+ * Build a required (MUST) clause
60
+ * @example must('name:water') => '+name:water'
61
+ */
62
+ declare function must(query: string): string;
63
+ /**
64
+ * Build an excluded (MUST NOT) clause
65
+ * @example mustNot('name:water') => '-name:water'
66
+ */
67
+ declare function mustNot(query: string): string;
68
+ /**
69
+ * Build a phrase query
70
+ * @example phrase('light beer') => '"light beer"'
71
+ */
72
+ declare function phrase(text: string): string;
73
+ /**
74
+ * Build a range query
75
+ * @example range('price', { gte: 10, lt: 100 }) => 'price:>=10 price:<100'
76
+ */
77
+ declare function range<T, K$1 extends keyof T>(name: K$1, filter: RangeFilter<T[K$1]>): string;
78
+ interface BrightClientOptions {
79
+ baseUrl: string;
80
+ apiKey?: string;
81
+ fetch?: typeof fetch;
82
+ }
83
+ //#endregion
84
+ //#region src/ingress.d.ts
85
+ type IngressState = 'running' | 'paused' | 'resyncing';
86
+ type IngressStatus = 'stopped' | 'starting' | 'running' | 'syncing' | 'paused' | 'failed';
87
+ interface PostgresIngressConfig {
88
+ /** PostgreSQL connection string (required) */
89
+ dsn: string;
90
+ /** Table name to sync (required) */
91
+ table: string;
92
+ /** PostgreSQL schema (default: "public") */
93
+ schema?: string;
94
+ /** Primary key column (default: "id") */
95
+ primary_key?: string;
96
+ /** Columns to sync, empty means all columns (default: all) */
97
+ columns?: string[];
98
+ /** Rename columns via mapping */
99
+ column_mapping?: Record<string, string>;
100
+ /** Timestamp column for change detection (default: "updated_at") */
101
+ updated_at_column?: string;
102
+ /** Filter rows with SQL WHERE condition */
103
+ where_clause?: string;
104
+ /** Sync mode: "polling" or "listen" (default: "polling") */
105
+ sync_mode?: 'polling' | 'listen';
106
+ /** Poll interval, e.g. "10s", "1m" (default: "30s") */
107
+ poll_interval?: string;
108
+ /** Documents per batch (default: 1000) */
109
+ batch_size?: number;
110
+ /** Auto-create PostgreSQL triggers for LISTEN mode (default: true) */
111
+ auto_triggers?: boolean;
112
+ }
113
+ interface IngressBase {
114
+ id: string;
115
+ index_id: string;
116
+ status: IngressStatus;
117
+ last_sync?: string;
118
+ documents_synced?: number;
119
+ errors?: number;
120
+ }
121
+ interface PostgresIngressResponse extends IngressBase {
122
+ type: 'postgres';
123
+ config: PostgresIngressConfig;
124
+ }
125
+ /** Fallback for unknown ingress types */
126
+ interface GenericIngressResponse extends IngressBase {
127
+ type: string;
128
+ config: Record<string, unknown>;
129
+ }
130
+ /** Discriminated union of all ingress response types */
131
+ type IngressConfig = PostgresIngressResponse | GenericIngressResponse;
132
+ interface CreateIngressParams {
133
+ type: string;
134
+ config: Record<string, unknown>;
135
+ }
136
+ interface CreatePostgresIngressParams {
137
+ type: 'postgres';
138
+ config: PostgresIngressConfig;
139
+ }
140
+ /** Union of all typed ingress creation params. Use CreateIngressParams for generic/unknown types. */
141
+ type TypedCreateIngressParams = CreatePostgresIngressParams;
142
+ //#endregion
1
143
  //#region src/errors.d.ts
2
144
  type ErrorCode = 'MISSING_PARAMETER' | 'INVALID_PARAMETER' | 'INVALID_REQUEST_BODY' | 'CONFLICTING_PARAMETERS' | 'INVALID_FORMAT' | 'PARSE_ERROR' | 'INDEX_NOT_FOUND' | 'DOCUMENT_NOT_FOUND' | 'NOT_LEADER' | 'CLUSTER_UNAVAILABLE' | 'INSUFFICIENT_PERMISSIONS' | 'LEADER_ONLY_OPERATION' | 'RESOURCE_ALREADY_EXISTS' | 'UUID_GENERATION_FAILED' | 'SERIALIZATION_FAILED' | 'RAFT_APPLY_FAILED' | 'INDEX_OPERATION_FAILED' | 'DOCUMENT_OPERATION_FAILED' | 'BATCH_OPERATION_FAILED' | 'SEARCH_FAILED' | 'INTERNAL_ERROR';
3
145
  interface BrightErrorResponse {
4
146
  error: string;
5
147
  code?: ErrorCode;
6
- details?: Record<string, any>;
148
+ details?: Record<string, unknown>;
7
149
  }
8
150
  declare class BrightError extends Error {
9
151
  readonly code?: ErrorCode;
10
152
  readonly statusCode: number;
11
- readonly details?: Record<string, any>;
12
- constructor(message: string, statusCode: number, code?: ErrorCode, details?: Record<string, any>);
153
+ readonly details?: Record<string, unknown>;
154
+ constructor(message: string, statusCode: number, code?: ErrorCode, details?: Record<string, unknown>);
13
155
  toJSON(): BrightErrorResponse & {
14
156
  statusCode: number;
15
157
  };
16
158
  }
17
159
  declare class ValidationError extends BrightError {
18
- constructor(message: string, code?: ErrorCode, details?: Record<string, any>);
160
+ constructor(message: string, code?: ErrorCode, details?: Record<string, unknown>);
19
161
  }
20
162
  declare class MissingParameterError extends ValidationError {
21
- constructor(message: string, details?: Record<string, any>);
163
+ constructor(message: string, details?: Record<string, unknown>);
22
164
  }
23
165
  declare class InvalidParameterError extends ValidationError {
24
- constructor(message: string, details?: Record<string, any>);
166
+ constructor(message: string, details?: Record<string, unknown>);
25
167
  }
26
168
  declare class InvalidRequestBodyError extends ValidationError {
27
- constructor(message: string, details?: Record<string, any>);
169
+ constructor(message: string, details?: Record<string, unknown>);
28
170
  }
29
171
  declare class ConflictingParametersError extends ValidationError {
30
- constructor(message: string, details?: Record<string, any>);
172
+ constructor(message: string, details?: Record<string, unknown>);
31
173
  }
32
174
  declare class InvalidFormatError extends ValidationError {
33
- constructor(message: string, details?: Record<string, any>);
175
+ constructor(message: string, details?: Record<string, unknown>);
34
176
  }
35
177
  declare class ParseError extends ValidationError {
36
- constructor(message: string, details?: Record<string, any>);
178
+ constructor(message: string, details?: Record<string, unknown>);
37
179
  }
38
180
  declare class NotFoundError extends BrightError {
39
- constructor(message: string, code?: ErrorCode, details?: Record<string, any>);
181
+ constructor(message: string, code?: ErrorCode, details?: Record<string, unknown>);
40
182
  }
41
183
  declare class IndexNotFoundError extends NotFoundError {
42
- constructor(message: string, details?: Record<string, any>);
184
+ constructor(message: string, details?: Record<string, unknown>);
43
185
  }
44
186
  declare class DocumentNotFoundError extends NotFoundError {
45
- constructor(message: string, details?: Record<string, any>);
187
+ constructor(message: string, details?: Record<string, unknown>);
46
188
  }
47
189
  declare class ClusterError extends BrightError {
48
- constructor(message: string, statusCode: number, code?: ErrorCode, details?: Record<string, any>);
190
+ constructor(message: string, statusCode: number, code?: ErrorCode, details?: Record<string, unknown>);
49
191
  }
50
192
  declare class NotLeaderError extends ClusterError {
51
193
  readonly leaderUrl?: string;
52
- constructor(message: string, leaderUrl?: string, details?: Record<string, any>);
194
+ constructor(message: string, leaderUrl?: string, details?: Record<string, unknown>);
53
195
  }
54
196
  declare class ClusterUnavailableError extends ClusterError {
55
- constructor(message: string, details?: Record<string, any>);
197
+ constructor(message: string, details?: Record<string, unknown>);
56
198
  }
57
199
  declare class AuthorizationError extends BrightError {
58
- constructor(message: string, code?: ErrorCode, details?: Record<string, any>);
200
+ constructor(message: string, code?: ErrorCode, details?: Record<string, unknown>);
59
201
  }
60
202
  declare class InsufficientPermissionsError extends AuthorizationError {
61
- constructor(message: string, details?: Record<string, any>);
203
+ constructor(message: string, details?: Record<string, unknown>);
62
204
  }
63
205
  declare class LeaderOnlyOperationError extends AuthorizationError {
64
- constructor(message: string, details?: Record<string, any>);
206
+ constructor(message: string, details?: Record<string, unknown>);
65
207
  }
66
208
  declare class ConflictError extends BrightError {
67
- constructor(message: string, code?: ErrorCode, details?: Record<string, any>);
209
+ constructor(message: string, code?: ErrorCode, details?: Record<string, unknown>);
68
210
  }
69
211
  declare class ResourceAlreadyExistsError extends ConflictError {
70
- constructor(message: string, details?: Record<string, any>);
212
+ constructor(message: string, details?: Record<string, unknown>);
71
213
  }
72
214
  declare class InternalError extends BrightError {
73
- constructor(message: string, code?: ErrorCode, details?: Record<string, any>);
215
+ constructor(message: string, code?: ErrorCode, details?: Record<string, unknown>);
74
216
  }
75
217
  declare class UuidGenerationFailedError extends InternalError {
76
- constructor(message: string, details?: Record<string, any>);
218
+ constructor(message: string, details?: Record<string, unknown>);
77
219
  }
78
220
  declare class SerializationFailedError extends InternalError {
79
- constructor(message: string, details?: Record<string, any>);
221
+ constructor(message: string, details?: Record<string, unknown>);
80
222
  }
81
223
  declare class RaftApplyFailedError extends InternalError {
82
- constructor(message: string, details?: Record<string, any>);
224
+ constructor(message: string, details?: Record<string, unknown>);
83
225
  }
84
226
  declare class IndexOperationFailedError extends InternalError {
85
- constructor(message: string, details?: Record<string, any>);
227
+ constructor(message: string, details?: Record<string, unknown>);
86
228
  }
87
229
  declare class DocumentOperationFailedError extends InternalError {
88
- constructor(message: string, details?: Record<string, any>);
230
+ constructor(message: string, details?: Record<string, unknown>);
89
231
  }
90
232
  declare class BatchOperationFailedError extends InternalError {
91
- constructor(message: string, details?: Record<string, any>);
233
+ constructor(message: string, details?: Record<string, unknown>);
92
234
  }
93
235
  declare class SearchFailedError extends InternalError {
94
- constructor(message: string, details?: Record<string, any>);
236
+ constructor(message: string, details?: Record<string, unknown>);
95
237
  }
96
238
  declare function createBrightError(statusCode: number, errorResponse: BrightErrorResponse): BrightError;
97
239
  //#endregion
98
240
  //#region src/index.d.ts
99
- interface IndexConfig {
100
- id: string;
101
- primaryKey?: string;
102
- }
103
- interface SearchParams {
104
- q?: string;
105
- offset?: number;
106
- limit?: number;
107
- page?: number;
108
- sort?: string[];
109
- attributesToRetrieve?: string[];
110
- attributesToExclude?: string[];
111
- }
112
- interface SearchResponse<T = Record<string, any>> {
113
- hits: T[];
114
- totalHits: number;
115
- totalPages: number;
116
- }
117
- interface BrightClientOptions {
118
- baseUrl: string;
119
- apiKey?: string;
120
- fetch?: typeof fetch;
121
- }
122
- interface IndexHandle<T = Record<string, any>> {
241
+ interface IndexHandle<T = Record<string, unknown>> {
123
242
  readonly id: string;
124
243
  update(config: Partial<IndexConfig>): Promise<IndexConfig>;
125
244
  delete(): Promise<void>;
126
- addDocuments(documents: T[], format?: 'jsoneachrow'): Promise<{
245
+ addDocuments(documents: T[], options?: {
246
+ format?: 'jsoneachrow';
247
+ primaryKey?: string;
248
+ }): Promise<{
127
249
  indexed: number;
128
250
  }>;
129
251
  updateDocument(documentId: string, updates: Partial<T>): Promise<T>;
@@ -132,7 +254,12 @@ interface IndexHandle<T = Record<string, any>> {
132
254
  ids?: string[];
133
255
  filter?: string;
134
256
  }): Promise<void>;
135
- search(params?: SearchParams): Promise<SearchResponse<T>>;
257
+ search<Exclude extends keyof T = never>(params?: SearchParams<T, Exclude>): Promise<SearchResponse<T, Exclude>>;
258
+ listIngresses(): Promise<IngressConfig[]>;
259
+ createIngress(params: CreateIngressParams | TypedCreateIngressParams): Promise<IngressConfig>;
260
+ getIngress(ingressId: string): Promise<IngressConfig>;
261
+ updateIngress(ingressId: string, state: IngressState): Promise<IngressConfig>;
262
+ deleteIngress(ingressId: string): Promise<void>;
136
263
  }
137
264
  declare class BrightClient {
138
265
  private baseUrl;
@@ -143,19 +270,27 @@ declare class BrightClient {
143
270
  createIndex(id: string, primaryKey?: string): Promise<IndexConfig>;
144
271
  updateIndex(id: string, config: Partial<IndexConfig>): Promise<IndexConfig>;
145
272
  deleteIndex(id: string): Promise<void>;
146
- addDocuments<T = Record<string, any>>(indexId: string, documents: T[], format?: 'jsoneachrow'): Promise<{
273
+ addDocuments<T = Record<string, unknown>>(indexId: string, documents: T[], options?: {
274
+ format?: 'jsoneachrow';
275
+ primaryKey?: string;
276
+ }): Promise<{
147
277
  indexed: number;
148
278
  }>;
149
- updateDocument<T = Record<string, any>>(indexId: string, documentId: string, updates: Partial<T>): Promise<T>;
279
+ updateDocument<T = Record<string, unknown>>(indexId: string, documentId: string, updates: Partial<T>): Promise<T>;
150
280
  deleteDocument(indexId: string, documentId: string): Promise<void>;
151
281
  deleteDocuments(indexId: string, options: {
152
282
  ids?: string[];
153
283
  filter?: string;
154
284
  }): Promise<void>;
155
- search<T = Record<string, any>>(indexId: string, params?: SearchParams): Promise<SearchResponse<T>>;
156
- index<T = Record<string, any>>(indexId: string): IndexHandle<T>;
285
+ search<T = Record<string, unknown>, Exclude extends keyof T = never>(indexId: string, params?: SearchParams<T, Exclude>): Promise<SearchResponse<T, Exclude>>;
286
+ listIngresses(indexId: string): Promise<IngressConfig[]>;
287
+ createIngress(indexId: string, params: CreateIngressParams | TypedCreateIngressParams): Promise<IngressConfig>;
288
+ getIngress(indexId: string, ingressId: string): Promise<IngressConfig>;
289
+ updateIngress(indexId: string, ingressId: string, state: IngressState): Promise<IngressConfig>;
290
+ deleteIngress(indexId: string, ingressId: string): Promise<void>;
291
+ index<T = Record<string, unknown>>(indexId: string): IndexHandle<T>;
157
292
  }
158
293
  declare function createClient(options: BrightClientOptions): BrightClient;
159
294
  //#endregion
160
- export { AuthorizationError, BatchOperationFailedError, BrightClient, BrightClientOptions, BrightError, BrightErrorResponse, ClusterError, ClusterUnavailableError, ConflictError, ConflictingParametersError, DocumentNotFoundError, DocumentOperationFailedError, ErrorCode, IndexConfig, IndexHandle, IndexNotFoundError, IndexOperationFailedError, InsufficientPermissionsError, InternalError, InvalidFormatError, InvalidParameterError, InvalidRequestBodyError, LeaderOnlyOperationError, MissingParameterError, NotFoundError, NotLeaderError, ParseError, RaftApplyFailedError, ResourceAlreadyExistsError, SearchFailedError, SearchParams, SearchResponse, SerializationFailedError, UuidGenerationFailedError, ValidationError, createBrightError, createClient };
295
+ export { AuthorizationError, BatchOperationFailedError, BrightClient, BrightClientOptions, BrightError, BrightErrorResponse, ClusterError, ClusterUnavailableError, ConflictError, ConflictingParametersError, CreateIngressParams, CreatePostgresIngressParams, DocumentNotFoundError, DocumentOperationFailedError, ErrorCode, FieldFilter, FieldRangeFilter, GenericIngressResponse, IndexConfig, IndexHandle, IndexNotFoundError, IndexOperationFailedError, IngressConfig, IngressState, IngressStatus, InsufficientPermissionsError, InternalError, InvalidFormatError, InvalidParameterError, InvalidRequestBodyError, LeaderOnlyOperationError, MissingParameterError, NotFoundError, NotLeaderError, ParseError, PostgresIngressConfig, PostgresIngressResponse, RaftApplyFailedError, RangeFilter, ResourceAlreadyExistsError, SearchFailedError, SearchParams, SearchResponse, SerializationFailedError, SortDirection, SortField, TypedCreateIngressParams, UuidGenerationFailedError, ValidationError, createBrightError, createClient, field, must, mustNot, phrase, range };
161
296
  //# sourceMappingURL=index.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../src/errors.ts","../src/index.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/types.ts","../src/ingress.ts","../src/errors.ts","../src/index.ts"],"sourcesContent":[],"mappings":"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"}