tsense 0.0.4 → 0.0.5
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 +5 -9
- package/dist/tsense.d.ts +3 -8
- package/dist/tsense.js +6 -5
- package/dist/types/core.d.ts +17 -9
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -113,13 +113,9 @@ const results = await UsersCollection.searchDocuments({
|
|
|
113
113
|
total: number;
|
|
114
114
|
};
|
|
115
115
|
*/
|
|
116
|
-
const faceted = await UsersCollection.searchDocuments(
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
facet_by: "company",
|
|
122
|
-
enable_facet_total: true,
|
|
123
|
-
},
|
|
124
|
-
);
|
|
116
|
+
const faceted = await UsersCollection.searchDocuments({
|
|
117
|
+
search: "john",
|
|
118
|
+
facet_by: "company",
|
|
119
|
+
enable_facet_total: true,
|
|
120
|
+
});
|
|
125
121
|
```
|
package/dist/tsense.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Client } from "typesense";
|
|
2
|
-
import type { CustomCollectionField,
|
|
2
|
+
import type { CustomCollectionField, SearchFilters, InferCollectionTypes, InferFacetResponse } from "./types/core.js";
|
|
3
3
|
import type { Simplify } from "./types/helpers.js";
|
|
4
4
|
export declare class TSense<Options extends CustomCollectionField, Fields extends Record<string, Options>, Inferred = InferCollectionTypes<Fields>> {
|
|
5
5
|
private name;
|
|
@@ -20,15 +20,10 @@ export declare class TSense<Options extends CustomCollectionField, Fields extend
|
|
|
20
20
|
private maybeArray;
|
|
21
21
|
delete(): Promise<void>;
|
|
22
22
|
create(): Promise<this>;
|
|
23
|
-
searchDocuments<
|
|
24
|
-
facet_by?: FacetBy;
|
|
25
|
-
enable_facet_total?: EnableFacetTotal;
|
|
26
|
-
}): Promise<{
|
|
23
|
+
searchDocuments<Filter extends SearchFilters<Inferred>>(data: Filter): Promise<{
|
|
27
24
|
count: number;
|
|
28
25
|
data: Inferred[];
|
|
29
|
-
facet:
|
|
30
|
-
total: number;
|
|
31
|
-
} : {})> : never;
|
|
26
|
+
facet: Simplify<InferFacetResponse<Inferred, Filter>>;
|
|
32
27
|
}>;
|
|
33
28
|
upsertDocuments(items: Inferred | Inferred[]): Promise<any[] | undefined>;
|
|
34
29
|
}
|
package/dist/tsense.js
CHANGED
|
@@ -147,7 +147,7 @@ export class TSense {
|
|
|
147
147
|
return this;
|
|
148
148
|
});
|
|
149
149
|
}
|
|
150
|
-
searchDocuments(data
|
|
150
|
+
searchDocuments(data) {
|
|
151
151
|
return __awaiter(this, void 0, void 0, function* () {
|
|
152
152
|
var _a, _b, _c, _d, _e;
|
|
153
153
|
const res = yield this.data.client
|
|
@@ -160,18 +160,19 @@ export class TSense {
|
|
|
160
160
|
filter_by: this.buildFilter(data).join("&&"),
|
|
161
161
|
page: data.page,
|
|
162
162
|
limit: data.limit,
|
|
163
|
-
facet_by:
|
|
163
|
+
facet_by: data === null || data === void 0 ? void 0 : data.facet_by,
|
|
164
164
|
});
|
|
165
|
-
const facet_result = (
|
|
166
|
-
?
|
|
165
|
+
const facet_result = (data === null || data === void 0 ? void 0 : data.facet_by)
|
|
166
|
+
? data.enable_facet_total
|
|
167
167
|
? { total: 0 }
|
|
168
168
|
: {}
|
|
169
169
|
: undefined;
|
|
170
170
|
if ((_d = (_c = res.facet_counts) === null || _c === void 0 ? void 0 : _c[0]) === null || _d === void 0 ? void 0 : _d.counts) {
|
|
171
171
|
for (const iter of res.facet_counts[0].counts) {
|
|
172
172
|
facet_result[iter.value] = iter.count;
|
|
173
|
-
if (
|
|
173
|
+
if (data === null || data === void 0 ? void 0 : data.enable_facet_total) {
|
|
174
174
|
facet_result.total += iter.count;
|
|
175
|
+
}
|
|
175
176
|
}
|
|
176
177
|
}
|
|
177
178
|
const result = [];
|
package/dist/types/core.d.ts
CHANGED
|
@@ -28,20 +28,19 @@ type TypesenseToTS = {
|
|
|
28
28
|
"string*": unknown;
|
|
29
29
|
};
|
|
30
30
|
type ValidFieldType = keyof TypesenseToTS;
|
|
31
|
+
type MaybeOptional<Field, Result> = Field extends {
|
|
32
|
+
optional: true;
|
|
33
|
+
} ? Result | null | undefined : Result;
|
|
31
34
|
export type InferCollectionTypes<Fields> = Simplify<{
|
|
32
35
|
id?: string;
|
|
33
36
|
} & UndefinedToOptional<{
|
|
34
|
-
[K in keyof Fields]: Fields[K]
|
|
37
|
+
[K in keyof Fields]: MaybeOptional<Fields[K], Fields[K] extends {
|
|
35
38
|
override: infer Override;
|
|
36
|
-
} ? Fields[K] extends {
|
|
37
|
-
optional: true;
|
|
38
|
-
} ? Override | null | undefined : Override : Fields[K] extends {
|
|
39
|
+
} ? Override : Fields[K] extends ValidFieldType ? TypesenseToTS[Fields[K]] : Fields[K] extends {
|
|
39
40
|
type: infer T;
|
|
40
|
-
} ? T extends ValidFieldType ? Fields[K] extends {
|
|
41
|
-
optional: true;
|
|
42
|
-
} ? TypesenseToTS[T] | null | undefined : TypesenseToTS[T] : never : Fields[K] extends `${infer RealType}?` ? RealType extends ValidFieldType ? TypesenseToTS[RealType] | null | undefined : never : never;
|
|
41
|
+
} ? T extends ValidFieldType ? TypesenseToTS[T] : never : Fields[K] extends `${infer RealType}?` ? RealType extends ValidFieldType ? TypesenseToTS[RealType] | null | undefined : never : never>;
|
|
43
42
|
}>>;
|
|
44
|
-
type OrderBy<Inferred, Options = keyof Inferred | "score"> = Options | Options[] | (Options extends
|
|
43
|
+
type OrderBy<Inferred, Options = keyof Inferred | "score"> = Options | Options[] | (Options extends string ? `${Options} ${"asc" | "desc"}` : never)[];
|
|
45
44
|
type SingleFilter<Inferred> = Partial<{
|
|
46
45
|
[K in keyof Inferred]: BaseIfArray<Inferred[K]> | NonNullable<BaseIfArray<Inferred[K]>>[] | {
|
|
47
46
|
not?: string | string[] | boolean | null;
|
|
@@ -53,7 +52,7 @@ type SingleFilter<Inferred> = Partial<{
|
|
|
53
52
|
type RecursiveFilter<Inferred> = SingleFilter<Inferred> & {
|
|
54
53
|
OR?: RecursiveFilter<Inferred>[];
|
|
55
54
|
};
|
|
56
|
-
export type
|
|
55
|
+
export type SearchFilters<Inferred> = {
|
|
57
56
|
search?: string;
|
|
58
57
|
filter?: RecursiveFilter<Inferred>;
|
|
59
58
|
order_by?: OrderBy<Inferred> | undefined;
|
|
@@ -62,5 +61,14 @@ export type Filters<Inferred> = {
|
|
|
62
61
|
limit?: number;
|
|
63
62
|
search_keys?: (keyof Inferred)[];
|
|
64
63
|
highlight?: boolean;
|
|
64
|
+
facet_by?: NoInfer<keyof Inferred>;
|
|
65
|
+
enable_facet_total?: boolean;
|
|
65
66
|
};
|
|
67
|
+
export type InferFacetResponse<Inferred, Filter> = Filter extends {
|
|
68
|
+
facet_by: infer FacetBy;
|
|
69
|
+
} ? FacetBy extends keyof Inferred ? Record<NonNullable<Inferred[FacetBy]> extends string ? NonNullable<Inferred[FacetBy]> : never, number> & (Filter extends {
|
|
70
|
+
enable_facet_total: true;
|
|
71
|
+
} ? {
|
|
72
|
+
total: number;
|
|
73
|
+
} : {}) : never : never;
|
|
66
74
|
export {};
|