@hasna/search 0.0.9 → 0.0.10

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/cli/index.js CHANGED
@@ -7411,7 +7411,7 @@ var init_pg_migrate = __esm(() => {
7411
7411
  var require_package = __commonJS((exports, module) => {
7412
7412
  module.exports = {
7413
7413
  name: "@hasna/search",
7414
- version: "0.0.9",
7414
+ version: "0.0.10",
7415
7415
  description: "Unified search \u2014 local file index (find files by name/path/content/regex in ms, trigram FTS) + 12 web providers (Google, SerpAPI, Exa, Perplexity, Twitter, Reddit, YouTube, Brave, Bing, Hacker News, GitHub, arXiv) + YouTube transcription. CLI + MCP + REST API + Dashboard.",
7416
7416
  type: "module",
7417
7417
  main: "dist/index.js",
@@ -54,4 +54,9 @@ export declare function indexAllRoots(opts?: {
54
54
  export declare function refreshStaleRoots(staleMinutes: number, db?: Database): IndexStats[];
55
55
  /** Refresh stale roots according to the user's config (called before local searches). */
56
56
  export declare function autoRefreshStaleRoots(db?: Database): IndexStats[];
57
+ /**
58
+ * Keep the index warm from long-running processes (search-serve, search-mcp)
59
+ * so interactive `find` calls rarely pay the stale-refresh cost themselves.
60
+ */
61
+ export declare function startBackgroundRefresh(): ReturnType<typeof setInterval>;
57
62
  //# sourceMappingURL=indexer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"indexer.d.ts","sourceRoot":"","sources":["../../../src/lib/local/indexer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAe3C,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,eAAe,EAAE,OAAO,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,OAAO,CAAC;IACnD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,wEAAwE;IACxE,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AA0CD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGtD;AAED,wBAAgB,SAAS,CAAC,EAAE,CAAC,EAAE,QAAQ,GAAG,SAAS,EAAE,CAIpD;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,IAAI,CAWpE;AAED,wBAAgB,YAAY,CAAC,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAInD;AAED,wBAAgB,OAAO,CACrB,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAO,EACjG,EAAE,CAAC,EAAE,QAAQ,GACZ,SAAS,CA4CX;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAiBnE;AAYD;;;;GAIG;AACH,wBAAgB,SAAS,CACvB,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,EAC9B,EAAE,CAAC,EAAE,QAAQ,GACZ,UAAU,CA6GZ;AAED,wBAAgB,aAAa,CAAC,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,UAAU,EAAE,CAEzF;AAID;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,UAAU,EAAE,CAoBnF;AAED,yFAAyF;AACzF,wBAAgB,qBAAqB,CAAC,EAAE,CAAC,EAAE,QAAQ,GAAG,UAAU,EAAE,CAIjE"}
1
+ {"version":3,"file":"indexer.d.ts","sourceRoot":"","sources":["../../../src/lib/local/indexer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAe3C,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,eAAe,EAAE,OAAO,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,OAAO,CAAC;IACnD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,wEAAwE;IACxE,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AA0CD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGtD;AAED,wBAAgB,SAAS,CAAC,EAAE,CAAC,EAAE,QAAQ,GAAG,SAAS,EAAE,CAIpD;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,IAAI,CAWpE;AAED,wBAAgB,YAAY,CAAC,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAInD;AAED,wBAAgB,OAAO,CACrB,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAO,EACjG,EAAE,CAAC,EAAE,QAAQ,GACZ,SAAS,CA4CX;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAiBnE;AAYD;;;;GAIG;AACH,wBAAgB,SAAS,CACvB,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,EAC9B,EAAE,CAAC,EAAE,QAAQ,GACZ,UAAU,CA6GZ;AAED,wBAAgB,aAAa,CAAC,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,UAAU,EAAE,CAEzF;AAID;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,GAAG,UAAU,EAAE,CAoBnF;AAED,yFAAyF;AACzF,wBAAgB,qBAAqB,CAAC,EAAE,CAAC,EAAE,QAAQ,GAAG,UAAU,EAAE,CAIjE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,UAAU,CAAC,OAAO,WAAW,CAAC,CAWvE"}
package/dist/mcp/index.js CHANGED
@@ -11644,7 +11644,7 @@ var require_lib2 = __commonJS((exports, module) => {
11644
11644
  var require_package = __commonJS((exports, module) => {
11645
11645
  module.exports = {
11646
11646
  name: "@hasna/search",
11647
- version: "0.0.9",
11647
+ version: "0.0.10",
11648
11648
  description: "Unified search \u2014 local file index (find files by name/path/content/regex in ms, trigram FTS) + 12 web providers (Google, SerpAPI, Exa, Perplexity, Twitter, Reddit, YouTube, Brave, Bing, Hacker News, GitHub, arXiv) + YouTube transcription. CLI + MCP + REST API + Dashboard.",
11649
11649
  type: "module",
11650
11650
  main: "dist/index.js",
@@ -26098,6 +26098,18 @@ function autoRefreshStaleRoots(db) {
26098
26098
  return [];
26099
26099
  return refreshStaleRoots(config2.indexStaleMinutes, db);
26100
26100
  }
26101
+ function startBackgroundRefresh() {
26102
+ const minutes = Math.max(1, getConfig().indexStaleMinutes);
26103
+ const timer = setInterval(() => {
26104
+ try {
26105
+ autoRefreshStaleRoots();
26106
+ } catch (err) {
26107
+ console.error("Index refresh failed:", err);
26108
+ }
26109
+ }, minutes * 60000);
26110
+ timer.unref?.();
26111
+ return timer;
26112
+ }
26101
26113
 
26102
26114
  // src/lib/local/query.ts
26103
26115
  import { existsSync as existsSync2, readFileSync as readFileSync4 } from "fs";
@@ -29537,6 +29549,7 @@ if (handleCliFlags(argv)) {
29537
29549
  process.exit(0);
29538
29550
  }
29539
29551
  async function main() {
29552
+ startBackgroundRefresh();
29540
29553
  if (isHttpMode(argv)) {
29541
29554
  startMcpHttpServer({ port: resolveMcpHttpPort(argv) });
29542
29555
  return;
@@ -11644,7 +11644,7 @@ var require_lib2 = __commonJS((exports, module) => {
11644
11644
  var require_package = __commonJS((exports, module) => {
11645
11645
  module.exports = {
11646
11646
  name: "@hasna/search",
11647
- version: "0.0.9",
11647
+ version: "0.0.10",
11648
11648
  description: "Unified search \u2014 local file index (find files by name/path/content/regex in ms, trigram FTS) + 12 web providers (Google, SerpAPI, Exa, Perplexity, Twitter, Reddit, YouTube, Brave, Bing, Hacker News, GitHub, arXiv) + YouTube transcription. CLI + MCP + REST API + Dashboard.",
11649
11649
  type: "module",
11650
11650
  main: "dist/index.js",
@@ -17112,6 +17112,18 @@ function autoRefreshStaleRoots(db) {
17112
17112
  return [];
17113
17113
  return refreshStaleRoots(config.indexStaleMinutes, db);
17114
17114
  }
17115
+ function startBackgroundRefresh() {
17116
+ const minutes = Math.max(1, getConfig().indexStaleMinutes);
17117
+ const timer = setInterval(() => {
17118
+ try {
17119
+ autoRefreshStaleRoots();
17120
+ } catch (err) {
17121
+ console.error("Index refresh failed:", err);
17122
+ }
17123
+ }, minutes * 60000);
17124
+ timer.unref?.();
17125
+ return timer;
17126
+ }
17115
17127
 
17116
17128
  // src/lib/local/query.ts
17117
17129
  import { existsSync as existsSync2, readFileSync as readFileSync4 } from "fs";
@@ -29284,14 +29296,7 @@ function startServer(port) {
29284
29296
  }
29285
29297
  }
29286
29298
  });
29287
- const refreshMinutes = Math.max(1, getConfig().indexStaleMinutes);
29288
- setInterval(() => {
29289
- try {
29290
- autoRefreshStaleRoots();
29291
- } catch (err2) {
29292
- console.error("Index refresh failed:", err2);
29293
- }
29294
- }, refreshMinutes * 60000).unref?.();
29299
+ startBackgroundRefresh();
29295
29300
  console.log(`open-search server running at http://localhost:${port}`);
29296
29301
  }
29297
29302
 
@@ -1 +1 @@
1
- {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/server/serve.ts"],"names":[],"mappings":"AAuFA,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CA0T9C"}
1
+ {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/server/serve.ts"],"names":[],"mappings":"AAuFA,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAmT9C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hasna/search",
3
- "version": "0.0.9",
3
+ "version": "0.0.10",
4
4
  "description": "Unified search — local file index (find files by name/path/content/regex in ms, trigram FTS) + 12 web providers (Google, SerpAPI, Exa, Perplexity, Twitter, Reddit, YouTube, Brave, Bing, Hacker News, GitHub, arXiv) + YouTube transcription. CLI + MCP + REST API + Dashboard.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",