@grackle-ai/common 0.29.0 → 0.30.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 +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/search.d.ts +43 -0
- package/dist/search.d.ts.map +1 -0
- package/dist/search.js +42 -0
- package/dist/search.js.map +1 -0
- package/dist/search.test.d.ts +2 -0
- package/dist/search.test.d.ts.map +1 -0
- package/dist/search.test.js +70 -0
- package/dist/search.test.js.map +1 -0
- package/package.json +6 -3
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,6BAA6B,CAAC;AACvD,OAAO,KAAK,SAAS,MAAM,yCAAyC,CAAC;AACrE,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,6BAA6B,CAAC;AACvD,OAAO,KAAK,SAAS,MAAM,yCAAyC,CAAC;AACrE,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,6BAA6B,CAAC;AACvD,OAAO,KAAK,SAAS,MAAM,yCAAyC,CAAC;AACrE,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,6BAA6B,CAAC;AACvD,OAAO,KAAK,SAAS,MAAM,yCAAyC,CAAC;AACrE,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC"}
|
package/dist/search.d.ts
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/** Index range describing a matched substring [start, end] (inclusive). */
|
|
2
|
+
export type MatchIndex = readonly [number, number];
|
|
3
|
+
/** Details about which field matched and where. */
|
|
4
|
+
export interface FuzzyMatch {
|
|
5
|
+
/** The field key that matched (e.g. "title"). */
|
|
6
|
+
key: string;
|
|
7
|
+
/** Ranges within the field value that matched the query. */
|
|
8
|
+
indices: readonly MatchIndex[];
|
|
9
|
+
}
|
|
10
|
+
/** A single fuzzy search result with its matched item and relevance score. */
|
|
11
|
+
export interface FuzzyResult<T> {
|
|
12
|
+
/** The matched item from the input collection. */
|
|
13
|
+
item: T;
|
|
14
|
+
/** Relevance score where 0 is a perfect match and 1 is no match. */
|
|
15
|
+
score: number;
|
|
16
|
+
/** Which fields matched and where, useful for highlighting. */
|
|
17
|
+
matches: FuzzyMatch[];
|
|
18
|
+
}
|
|
19
|
+
/** Configuration for a searchable field with a relative weight. */
|
|
20
|
+
export interface FuzzyKey {
|
|
21
|
+
/** Property path on the item (e.g. "title", "description"). */
|
|
22
|
+
name: string;
|
|
23
|
+
/** Relative weight for this field. Higher = more important. */
|
|
24
|
+
weight: number;
|
|
25
|
+
}
|
|
26
|
+
/** Options for tuning fuzzy search behavior. */
|
|
27
|
+
export interface FuzzySearchOptions {
|
|
28
|
+
/** Maximum score threshold (0–1). Results above this are excluded. Default: 0.3. */
|
|
29
|
+
threshold?: number;
|
|
30
|
+
/** Maximum number of results to return. Default: no limit. */
|
|
31
|
+
limit?: number;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Perform a fuzzy search over a collection of items.
|
|
35
|
+
*
|
|
36
|
+
* @param items - The items to search through.
|
|
37
|
+
* @param query - The search query string. Empty string returns an empty array.
|
|
38
|
+
* @param keys - Which fields to search, with relative weights.
|
|
39
|
+
* @param options - Optional threshold and limit overrides.
|
|
40
|
+
* @returns Matched items sorted by relevance (best first), capped at `limit`.
|
|
41
|
+
*/
|
|
42
|
+
export declare function fuzzySearch<T>(items: T[], query: string, keys: FuzzyKey[], options?: FuzzySearchOptions): FuzzyResult<T>[];
|
|
43
|
+
//# sourceMappingURL=search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"AAMA,2EAA2E;AAC3E,MAAM,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEnD,mDAAmD;AACnD,MAAM,WAAW,UAAU;IACzB,iDAAiD;IACjD,GAAG,EAAE,MAAM,CAAC;IACZ,4DAA4D;IAC5D,OAAO,EAAE,SAAS,UAAU,EAAE,CAAC;CAChC;AAED,8EAA8E;AAC9E,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,kDAAkD;IAClD,IAAI,EAAE,CAAC,CAAC;IACR,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB;AAED,mEAAmE;AACnE,MAAM,WAAW,QAAQ;IACvB,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,gDAAgD;AAChD,MAAM,WAAW,kBAAkB;IACjC,oFAAoF;IACpF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAC3B,KAAK,EAAE,CAAC,EAAE,EACV,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,QAAQ,EAAE,EAChB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,WAAW,CAAC,CAAC,CAAC,EAAE,CA8BlB"}
|
package/dist/search.js
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared fuzzy search utility wrapping fuse.js.
|
|
3
|
+
* Used by both the web UI (client-side sidebar filter) and the server (fuzzy task search).
|
|
4
|
+
*/
|
|
5
|
+
import Fuse from "fuse.js";
|
|
6
|
+
/**
|
|
7
|
+
* Perform a fuzzy search over a collection of items.
|
|
8
|
+
*
|
|
9
|
+
* @param items - The items to search through.
|
|
10
|
+
* @param query - The search query string. Empty string returns an empty array.
|
|
11
|
+
* @param keys - Which fields to search, with relative weights.
|
|
12
|
+
* @param options - Optional threshold and limit overrides.
|
|
13
|
+
* @returns Matched items sorted by relevance (best first), capped at `limit`.
|
|
14
|
+
*/
|
|
15
|
+
export function fuzzySearch(items, query, keys, options) {
|
|
16
|
+
if (!query.trim()) {
|
|
17
|
+
return [];
|
|
18
|
+
}
|
|
19
|
+
const threshold = options?.threshold ?? 0.3;
|
|
20
|
+
const fuse = new Fuse(items, {
|
|
21
|
+
keys,
|
|
22
|
+
threshold,
|
|
23
|
+
ignoreLocation: true,
|
|
24
|
+
includeScore: true,
|
|
25
|
+
includeMatches: true,
|
|
26
|
+
minMatchCharLength: 2,
|
|
27
|
+
});
|
|
28
|
+
const results = fuse.search(query);
|
|
29
|
+
const mapped = results.map((r) => ({
|
|
30
|
+
item: r.item,
|
|
31
|
+
score: r.score ?? 1,
|
|
32
|
+
matches: (r.matches ?? []).map((m) => ({
|
|
33
|
+
key: m.key ?? "",
|
|
34
|
+
indices: m.indices,
|
|
35
|
+
})),
|
|
36
|
+
}));
|
|
37
|
+
if (options?.limit !== undefined) {
|
|
38
|
+
return mapped.slice(0, options.limit);
|
|
39
|
+
}
|
|
40
|
+
return mapped;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,IAAI,MAAM,SAAS,CAAC;AAuC3B;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CACzB,KAAU,EACV,KAAa,EACb,IAAgB,EAChB,OAA4B;IAE5B,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAClB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,GAAG,CAAC;IAC5C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE;QAC3B,IAAI;QACJ,SAAS;QACT,cAAc,EAAE,IAAI;QACpB,YAAY,EAAE,IAAI;QAClB,cAAc,EAAE,IAAI;QACpB,kBAAkB,EAAE,CAAC;KACtB,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAEnC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACjC,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC;QACnB,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACrC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE;YAChB,OAAO,EAAE,CAAC,CAAC,OAAgC;SAC5C,CAAC,CAAC;KACJ,CAAC,CAAC,CAAC;IAEJ,IAAI,OAAO,EAAE,KAAK,KAAK,SAAS,EAAE,CAAC;QACjC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.test.d.ts","sourceRoot":"","sources":["../src/search.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { fuzzySearch } from "./search.js";
|
|
3
|
+
const ITEMS = [
|
|
4
|
+
{ title: "Fix login bug", description: "Users cannot login with SSO" },
|
|
5
|
+
{ title: "Add dashboard widget", description: "Create analytics dashboard" },
|
|
6
|
+
{ title: "Update auth middleware", description: "Refactor authentication layer" },
|
|
7
|
+
{ title: "Implement JWT tokens", description: "Add token-based auth" },
|
|
8
|
+
{ title: "Fix signup page", description: "Email validation broken" },
|
|
9
|
+
];
|
|
10
|
+
const KEYS = [
|
|
11
|
+
{ name: "title", weight: 2 },
|
|
12
|
+
{ name: "description", weight: 1 },
|
|
13
|
+
];
|
|
14
|
+
describe("fuzzySearch", () => {
|
|
15
|
+
it("returns empty array for empty query", () => {
|
|
16
|
+
expect(fuzzySearch(ITEMS, "", KEYS)).toEqual([]);
|
|
17
|
+
});
|
|
18
|
+
it("returns empty array for whitespace-only query", () => {
|
|
19
|
+
expect(fuzzySearch(ITEMS, " ", KEYS)).toEqual([]);
|
|
20
|
+
});
|
|
21
|
+
it("matches by title substring", () => {
|
|
22
|
+
const results = fuzzySearch(ITEMS, "login", KEYS);
|
|
23
|
+
expect(results.length).toBeGreaterThanOrEqual(1);
|
|
24
|
+
expect(results[0].item.title).toBe("Fix login bug");
|
|
25
|
+
});
|
|
26
|
+
it("matches by description", () => {
|
|
27
|
+
const results = fuzzySearch(ITEMS, "analytics", KEYS);
|
|
28
|
+
expect(results.length).toBeGreaterThanOrEqual(1);
|
|
29
|
+
expect(results[0].item.title).toBe("Add dashboard widget");
|
|
30
|
+
});
|
|
31
|
+
it("is case-insensitive", () => {
|
|
32
|
+
const results = fuzzySearch(ITEMS, "JWT", KEYS);
|
|
33
|
+
expect(results.length).toBeGreaterThanOrEqual(1);
|
|
34
|
+
expect(results[0].item.title).toBe("Implement JWT tokens");
|
|
35
|
+
});
|
|
36
|
+
it("ranks title matches higher than description matches", () => {
|
|
37
|
+
// "auth" appears in title of "Update auth middleware" and description of "Implement JWT tokens"
|
|
38
|
+
const results = fuzzySearch(ITEMS, "auth", KEYS);
|
|
39
|
+
expect(results.length).toBeGreaterThanOrEqual(1);
|
|
40
|
+
expect(results[0].item.title).toBe("Update auth middleware");
|
|
41
|
+
});
|
|
42
|
+
it("returns results sorted by score (best first)", () => {
|
|
43
|
+
const results = fuzzySearch(ITEMS, "fix", KEYS);
|
|
44
|
+
expect(results.length).toBeGreaterThanOrEqual(2);
|
|
45
|
+
for (let i = 1; i < results.length; i++) {
|
|
46
|
+
expect(results[i].score).toBeGreaterThanOrEqual(results[i - 1].score);
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
it("respects limit parameter", () => {
|
|
50
|
+
const results = fuzzySearch(ITEMS, "fix", KEYS, { limit: 1 });
|
|
51
|
+
expect(results).toHaveLength(1);
|
|
52
|
+
});
|
|
53
|
+
it("excludes results above threshold", () => {
|
|
54
|
+
const results = fuzzySearch(ITEMS, "xyznonexistent", KEYS, { threshold: 0.2 });
|
|
55
|
+
expect(results).toHaveLength(0);
|
|
56
|
+
});
|
|
57
|
+
it("returns score between 0 and 1", () => {
|
|
58
|
+
const results = fuzzySearch(ITEMS, "login", KEYS);
|
|
59
|
+
for (const r of results) {
|
|
60
|
+
expect(r.score).toBeGreaterThanOrEqual(0);
|
|
61
|
+
expect(r.score).toBeLessThanOrEqual(1);
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
it("works with single-field search", () => {
|
|
65
|
+
const results = fuzzySearch(ITEMS, "dashboard", [{ name: "title", weight: 1 }]);
|
|
66
|
+
expect(results.length).toBeGreaterThanOrEqual(1);
|
|
67
|
+
expect(results[0].item.title).toBe("Add dashboard widget");
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
//# sourceMappingURL=search.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.test.js","sourceRoot":"","sources":["../src/search.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@grackle-ai/common",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.30.0",
|
|
4
4
|
"description": "Proto definitions, generated code, and shared types for Grackle",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -25,17 +25,20 @@
|
|
|
25
25
|
],
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"@bufbuild/protobuf": "^2.5.0",
|
|
28
|
-
"@connectrpc/connect": "^2.0.0"
|
|
28
|
+
"@connectrpc/connect": "^2.0.0",
|
|
29
|
+
"fuse.js": "^7.0.0"
|
|
29
30
|
},
|
|
30
31
|
"devDependencies": {
|
|
31
32
|
"@bufbuild/buf": "^1.50.0",
|
|
32
33
|
"@bufbuild/protoc-gen-es": "^2.5.0",
|
|
33
34
|
"@rushstack/heft": "1.2.4",
|
|
35
|
+
"vitest": "^3.1.1",
|
|
34
36
|
"@grackle-ai/heft-buf-plugin": "0.0.1",
|
|
35
37
|
"@grackle-ai/heft-rig": "0.0.1"
|
|
36
38
|
},
|
|
37
39
|
"scripts": {
|
|
38
40
|
"build": "heft build --clean",
|
|
39
|
-
"clean": "heft clean"
|
|
41
|
+
"clean": "heft clean",
|
|
42
|
+
"test": "vitest run"
|
|
40
43
|
}
|
|
41
44
|
}
|