@basaltkit/search 1.1.0 → 1.2.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/dist/index.d.ts +4 -1
- package/dist/index.js +8 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -103,6 +103,9 @@ declare class MeilisearchError extends BasaltError {
|
|
|
103
103
|
readonly httpStatus: number;
|
|
104
104
|
constructor(httpStatus: number, message: string);
|
|
105
105
|
}
|
|
106
|
+
declare class SearchFilterFieldError extends BasaltError {
|
|
107
|
+
constructor(field: string);
|
|
108
|
+
}
|
|
106
109
|
interface MeilisearchDriverOptions {
|
|
107
110
|
host: string;
|
|
108
111
|
apiKey?: string;
|
|
@@ -166,4 +169,4 @@ interface SearchPluginOptions {
|
|
|
166
169
|
}
|
|
167
170
|
declare function searchPlugin(options?: SearchPluginOptions): _basaltkit_core.BasaltPlugin<unknown>;
|
|
168
171
|
|
|
169
|
-
export { type IndexDefinition, MeilisearchDriver, type MeilisearchDriverOptions, MeilisearchError, MemorySearchDriver, SEARCH, Search, type SearchDocument, type SearchDriver, type SearchHit, type SearchOptions, type SearchPluginOptions, type SearchQuery, type SearchResult, type SyncRule, TenantRequiredError, defineIndex, searchPlugin, syncRule };
|
|
172
|
+
export { type IndexDefinition, MeilisearchDriver, type MeilisearchDriverOptions, MeilisearchError, MemorySearchDriver, SEARCH, Search, type SearchDocument, type SearchDriver, SearchFilterFieldError, type SearchHit, type SearchOptions, type SearchPluginOptions, type SearchQuery, type SearchResult, type SyncRule, TenantRequiredError, defineIndex, searchPlugin, syncRule };
|
package/dist/index.js
CHANGED
|
@@ -128,6 +128,12 @@ var MeilisearchError = class extends BasaltError2 {
|
|
|
128
128
|
}
|
|
129
129
|
httpStatus;
|
|
130
130
|
};
|
|
131
|
+
var SearchFilterFieldError = class extends BasaltError2 {
|
|
132
|
+
constructor(field) {
|
|
133
|
+
super("SEARCH_INVALID_FILTER_FIELD", `Invalid filter field name: ${JSON.stringify(field)}.`);
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
var SAFE_FILTER_FIELD = /^[A-Za-z_][A-Za-z0-9_]*(\.[A-Za-z_][A-Za-z0-9_]*)*$/;
|
|
131
137
|
var primaryKey = (tenantId, id) => Buffer.from(`${tenantId}::${id}`).toString("base64url");
|
|
132
138
|
var quote = (value) => JSON.stringify(value);
|
|
133
139
|
var MeilisearchDriver = class {
|
|
@@ -182,6 +188,7 @@ var MeilisearchDriver = class {
|
|
|
182
188
|
buildFilter(tenantId, filters) {
|
|
183
189
|
const parts = [`tenantId = ${quote(tenantId)}`];
|
|
184
190
|
for (const [field, value] of Object.entries(filters ?? {})) {
|
|
191
|
+
if (!SAFE_FILTER_FIELD.test(field)) throw new SearchFilterFieldError(field);
|
|
185
192
|
parts.push(Array.isArray(value) ? `${field} IN [${value.map(quote).join(", ")}]` : `${field} = ${quote(value)}`);
|
|
186
193
|
}
|
|
187
194
|
return parts.join(" AND ");
|
|
@@ -254,6 +261,7 @@ export {
|
|
|
254
261
|
MemorySearchDriver,
|
|
255
262
|
SEARCH,
|
|
256
263
|
Search,
|
|
264
|
+
SearchFilterFieldError,
|
|
257
265
|
TenantRequiredError,
|
|
258
266
|
defineIndex,
|
|
259
267
|
searchPlugin,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@basaltkit/search",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "Full-text search for Basalt: tenant-scoped indexing and querying with a pluggable driver (in-memory for dev/test, Meilisearch for production) and automatic sync from domain events.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|