dsh-locator 0.6.3 → 0.7.1

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/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.7.1 — 2026-11-10
4
+
5
+ * Content full builds index session messages **before** the much larger file set, so conversation search and jumps become available early.
6
+ * Content indexing skips the `.dsh` directory itself; it was re-indexing session projection caches and config as ordinary files.
7
+ * Incremental refresh keeps the same order.
8
+
9
+ ## 0.7.0 — 2026-11-10
10
+
11
+ * Incremental content refresh: `docs_meta`/`sources` store each file/session mtime, so the 2-minute background refresh only re-reads changed sources.
12
+ * `locator_reindex` tool and `/dsh-locator/content/rebuild` route: incremental by default, `full: true` drops and rebuilds the database.
13
+ * `contentRefreshMs` config (default 120000; 0 disables auto refresh).
14
+ * Empty `contentSessionDirs` in tests no longer falls back to the real `$DSH_HOME/sessions`; an explicit empty list means no sessions.
15
+ * Engine rebuilt at 0.7.0 so `locator_status` no longer reports 0.5.3.
16
+
3
17
  ## 0.6.3 — 2026-11-10
4
18
 
5
19
  * Content-index defaults enlarged 4×: `contentMaxFileBytes` 1MB → 4MB, `contentMaxFiles` 50k → 200k, `contentMaxSessions` 50 → 200. All remain configurable.
package/README.en.md CHANGED
@@ -76,7 +76,7 @@ The first scan of a large home directory reads the disk; later starts load the s
76
76
 
77
77
  ## Web search panel
78
78
 
79
- ![dsh-locator search panel: path-filtered Markdown results with hit count, timing and sortable columns](docs/assets/panel-en.png)
79
+ ![dsh-locator search panel: content mode checked, showing body matches and snippets](docs/assets/panel-en.png)
80
80
 
81
81
  Press `Ctrl+Shift+F` anywhere in the Web GUI, or click the magnifier at the sidebar foot. The overlay queries the same index through two same-origin host routes (`POST /dsh-locator/search`, `POST /dsh-locator/status`), so it needs no second server and no extra port.
82
82
 
@@ -98,7 +98,7 @@ Press `Ctrl+Shift+F` anywhere in the Web GUI, or click the magnifier at the side
98
98
 
99
99
  ### Content search
100
100
 
101
- `locator_find` searches the **bodies** of text files and DSH session messages through a local SQLite FTS5 index. Hits return a snippet plus `sessionId`/`messageId` for conversations, so the panel can open the session and scroll to the matched text. The index is built in the background after the name scan; text files are capped by `contentMaxFileBytes`, the total body store by `contentMaxTotalBytes`, and the most recent `contentMaxSessions` session logs are indexed by default.
101
+ `locator_find` searches the **bodies** of text files and DSH session messages through a local SQLite FTS5 index. Hits return a snippet plus `sessionId`/`messageId` for conversations, so the panel can open the session and scroll to the matched text. The index is built in the background after the name scan; text files are capped by `contentMaxFileBytes`, the total body store by `contentMaxTotalBytes`, and the most recent `contentMaxSessions` session logs are indexed by default. An incremental refresh runs every `contentRefreshMs` (2 minutes) and only re-reads changed files/sessions; `locator_reindex` triggers it manually (`full: true` rebuilds everything).
102
102
 
103
103
  ### Query language
104
104
 
package/README.md CHANGED
@@ -57,7 +57,7 @@ dsh plugin --profile web add /绝对路径/dsh-locator
57
57
 
58
58
  # 从 tarball
59
59
  npm pack
60
- dsh plugin --profile web add /绝对路径/dsh-locator-0.6.3.tgz
60
+ dsh plugin --profile web add /绝对路径/dsh-locator-0.7.0.tgz
61
61
  ```
62
62
 
63
63
  npm 包里已经带了六个平台的预编译引擎:`linux-x64`、`linux-arm64`、`win32-x64`、`win32-arm64`、`darwin-x64`、`darwin-arm64`。
@@ -91,12 +91,13 @@ Everything 风格的查询语法,返回路径、大小、修改时间、扩展
91
91
  - 文件命中带路径,直接打开或定位;
92
92
  - 会话命中带 `sessionId` 和 `messageId`,可以跳回那次对话;
93
93
  - 中文和英文子串都能搜,不要求分词。
94
+ - 启动后每 2 分钟做一次增量刷新,只重读 mtime 变化的文件/会话;也可以手动触发全量重建。
94
95
 
95
96
  内容索引在后台构建,刚启动时可能只覆盖了一部分,工具和面板都会显示构建状态。默认只索引 4MB 以内的文本文件,最多 20 万个文件、最近 200 个会话,内容总量上限 2GB;这些都能在配置里改。
96
97
 
97
98
  ## Web 面板
98
99
 
99
- ![搜索面板:按路径过滤 Markdown,显示命中数、耗时和排序](docs/assets/panel-zh.png)
100
+ ![搜索面板:勾选“搜内容”后在文件正文中搜索,显示命中片段和路径](docs/assets/panel-zh.png)
100
101
 
101
102
  在 Web GUI 里按 `Ctrl+Shift+F`,或者点侧栏底部的放大镜。
102
103
 
@@ -116,7 +117,8 @@ Everything 风格的查询语法,返回路径、大小、修改时间、扩展
116
117
  | `locator_search` | 按文件名/路径搜索,支持 `ext:`、`size:`、`dm:`、`path:` 等过滤。 |
117
118
  | `locator_find` | 按文件正文和会话内容搜索,返回片段与 `sessionId`/`messageId`。 |
118
119
  | `locator_status` | 查看根目录、条目数、监听状态、内容索引进度和引擎版本。 |
119
- | `locator_rebuild` | 后台重建索引;新索引就绪前,搜索继续使用旧的。 |
120
+ | `locator_rebuild` | 后台重建文件名索引;新索引就绪前,搜索继续使用旧的。 |
121
+ | `locator_reindex` | 重建/刷新内容索引:默认增量,`full: true` 全量。 |
120
122
  | `locator_export` | 把文件名索引导出成只读 SQLite,方便外部工具查询。 |
121
123
 
122
124
  ### 查询语法
@@ -151,6 +153,7 @@ case:1 wholeword:1 区分大小写 / 全词匹配
151
153
  | `contentMaxTotalBytes` | 2000000000 | 内容库总量上限;0 表示不限制。 |
152
154
  | `contentMaxFiles` | 200000 | 最多索引多少个文件;0 表示不限制。 |
153
155
  | `contentMaxSessions` | 200 | 最多索引最近多少个会话;0 表示全部。 |
156
+ | `contentRefreshMs` | 120000 | 内容增量刷新周期;0 关闭自动刷新。 |
154
157
  | `contentSessionDirs` | `$DSH_HOME/sessions` | 额外的会话目录。 |
155
158
  | `stateDir` | 系统缓存 | 快照和内容数据库的位置。 |
156
159
 
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
package/lib/config.d.ts CHANGED
@@ -29,6 +29,8 @@ export interface Config {
29
29
  contentMaxFileBytes: number;
30
30
  /** Stop adding content after this many body bytes; 0 means unlimited. */
31
31
  contentMaxTotalBytes: number;
32
+ /** Incremental content refresh cadence; 0 disables it. */
33
+ contentRefreshMs: number;
32
34
  /** Maximum text files indexed per build; 0 means no cap. */
33
35
  contentMaxFiles: number;
34
36
  /** Most recent session logs indexed; 0 means all. */
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,MAAM,MAAM,0BAA0B,CAAA;AAE7C,oCAAoC;AACpC,MAAM,WAAW,MAAM;IACrB,iEAAiE;IACjE,OAAO,EAAE,OAAO,CAAA;IAChB,2EAA2E;IAC3E,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,2EAA2E;IAC3E,KAAK,EAAE,OAAO,CAAA;IACd;;;;OAIG;IACH,iBAAiB,EAAE,MAAM,CAAA;IACzB,uEAAuE;IACvE,WAAW,EAAE,MAAM,CAAA;IACnB,gFAAgF;IAChF,aAAa,EAAE,MAAM,CAAA;IACrB,iFAAiF;IACjF,YAAY,EAAE,OAAO,CAAA;IACrB,6CAA6C;IAC7C,mBAAmB,EAAE,MAAM,CAAA;IAC3B,yEAAyE;IACzE,oBAAoB,EAAE,MAAM,CAAA;IAC5B,4DAA4D;IAC5D,eAAe,EAAE,MAAM,CAAA;IACvB,qDAAqD;IACrD,kBAAkB,EAAE,MAAM,CAAA;IAC1B,iEAAiE;IACjE,kBAAkB,EAAE,MAAM,EAAE,CAAA;IAC5B;;;OAGG;IACH,UAAU,EAAE,OAAO,CAAA;IACnB,oEAAoE;IACpE,QAAQ,EAAE,MAAM,CAAA;IAChB,sEAAsE;IACtE,UAAU,EAAE,MAAM,CAAA;IAClB,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAA;IAClB,8EAA8E;IAC9E,gBAAgB,EAAE,MAAM,CAAA;IACxB,2CAA2C;IAC3C,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED,yEAAyE;AACzE,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,CA8BhC,CAAA"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,MAAM,MAAM,0BAA0B,CAAA;AAE7C,oCAAoC;AACpC,MAAM,WAAW,MAAM;IACrB,iEAAiE;IACjE,OAAO,EAAE,OAAO,CAAA;IAChB,2EAA2E;IAC3E,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,2EAA2E;IAC3E,KAAK,EAAE,OAAO,CAAA;IACd;;;;OAIG;IACH,iBAAiB,EAAE,MAAM,CAAA;IACzB,uEAAuE;IACvE,WAAW,EAAE,MAAM,CAAA;IACnB,gFAAgF;IAChF,aAAa,EAAE,MAAM,CAAA;IACrB,iFAAiF;IACjF,YAAY,EAAE,OAAO,CAAA;IACrB,6CAA6C;IAC7C,mBAAmB,EAAE,MAAM,CAAA;IAC3B,yEAAyE;IACzE,oBAAoB,EAAE,MAAM,CAAA;IAC5B,0DAA0D;IAC1D,gBAAgB,EAAE,MAAM,CAAA;IACxB,4DAA4D;IAC5D,eAAe,EAAE,MAAM,CAAA;IACvB,qDAAqD;IACrD,kBAAkB,EAAE,MAAM,CAAA;IAC1B,iEAAiE;IACjE,kBAAkB,EAAE,MAAM,EAAE,CAAA;IAC5B;;;OAGG;IACH,UAAU,EAAE,OAAO,CAAA;IACnB,oEAAoE;IACpE,QAAQ,EAAE,MAAM,CAAA;IAChB,sEAAsE;IACtE,UAAU,EAAE,MAAM,CAAA;IAClB,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAA;IAClB,8EAA8E;IAC9E,gBAAgB,EAAE,MAAM,CAAA;IACxB,2CAA2C;IAC3C,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED,yEAAyE;AACzE,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,CA+BhC,CAAA"}
package/lib/config.js CHANGED
@@ -25,6 +25,7 @@ export const Config = Schema.object({
25
25
  contentIndex: Schema.boolean().default(true),
26
26
  contentMaxFileBytes: Schema.number().default(4_000_000),
27
27
  contentMaxTotalBytes: Schema.number().default(2_000_000_000),
28
+ contentRefreshMs: Schema.number().default(120_000),
28
29
  contentMaxFiles: Schema.number().default(200_000),
29
30
  contentMaxSessions: Schema.number().default(200),
30
31
  contentSessionDirs: Schema.array(Schema.string()).default([]),
package/lib/config.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,MAAM,MAAM,0BAA0B,CAAA;AAmD7C,yEAAyE;AACzE,MAAM,CAAC,MAAM,MAAM,GAAmB,MAAM,CAAC,MAAM,CAAC;IAClD,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACvC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAChD,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC;QAC9C,cAAc;QACd,MAAM;QACN,KAAK;QACL,MAAM;QACN,QAAQ;QACR,aAAa;QACb,OAAO;QACP,MAAM;QACN,OAAO;KACR,CAAC;IACF,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACrC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC;IACrD,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACvC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACzC,YAAY,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAC5C,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC;IACvD,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC;IAC5D,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;IACjD,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;IAChD,kBAAkB,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC7D,UAAU,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAC3C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACrC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACvC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;IACxC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;IAClD,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;CAClD,CAAC,CAAA"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,MAAM,MAAM,0BAA0B,CAAA;AAqD7C,yEAAyE;AACzE,MAAM,CAAC,MAAM,MAAM,GAAmB,MAAM,CAAC,MAAM,CAAC;IAClD,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACvC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAChD,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC;QAC9C,cAAc;QACd,MAAM;QACN,KAAK;QACL,MAAM;QACN,QAAQ;QACR,aAAa;QACb,OAAO;QACP,MAAM;QACN,OAAO;KACR,CAAC;IACF,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACrC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC;IACrD,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACvC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACzC,YAAY,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAC5C,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC;IACvD,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC;IAC5D,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;IAClD,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;IACjD,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;IAChD,kBAAkB,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC7D,UAAU,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAC3C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACrC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACvC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;IACxC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;IAClD,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;CAClD,CAAC,CAAA"}
package/lib/content.d.ts CHANGED
@@ -1,14 +1,14 @@
1
1
  /**
2
2
  * Content search: text files and DSH session messages in SQLite FTS5.
3
3
  *
4
- * The file-name index stays in the Go engine. This store is built beside it:
5
- * the engine's `dump` RPC supplies the already-scanned file list, Node reads
6
- * text files and decompresses `session.v4.jsonl.zstd` logs, and SQLite's
7
- * trigram tokenizer gives substring/CJK search with snippets.
4
+ * File names stay in the Go engine. This store is built from the engine's
5
+ * `dump` RPC plus the session logs: Node reads text bodies, decompresses
6
+ * `session.v4.jsonl.zstd`, and SQLite's trigram tokenizer gives substring and
7
+ * CJK search. A meta table stores each source's mtime so refresh() only
8
+ * re-reads what changed; rebuild() drops and rebuilds everything.
8
9
  * @module dsh-locator/content
9
10
  */
10
11
  import type { LocatorRuntime } from './runtime.ts';
11
- /** One searchable document. */
12
12
  export interface ContentHit {
13
13
  kind: 'file' | 'session';
14
14
  path: string;
@@ -18,7 +18,6 @@ export interface ContentHit {
18
18
  messageId?: string;
19
19
  score: number;
20
20
  }
21
- /** Build progress shown by the panel/status. */
22
21
  export interface ContentState {
23
22
  building: boolean;
24
23
  files: number;
@@ -28,34 +27,50 @@ export interface ContentState {
28
27
  error: string;
29
28
  updatedAt: number;
30
29
  }
31
- /** The content store; one instance per plugin. */
30
+ export interface ContentOptions {
31
+ stateDir: string;
32
+ sessionDirs?: string[] | undefined;
33
+ maxFileBytes: number;
34
+ maxTotalBytes?: number;
35
+ maxFiles: number;
36
+ maxSessions: number;
37
+ }
32
38
  export declare class ContentIndex {
33
39
  private readonly rt;
34
40
  private readonly options;
35
41
  private db;
36
42
  private readonly state;
37
43
  private generation;
38
- constructor(rt: LocatorRuntime, options: {
39
- stateDir: string;
40
- sessionDirs: string[];
41
- maxFileBytes: number;
42
- maxTotalBytes?: number;
43
- maxFiles: number;
44
- maxSessions: number;
45
- });
44
+ private totalBytes;
45
+ private timer;
46
+ constructor(rt: LocatorRuntime, options: ContentOptions);
46
47
  status(): ContentState;
47
- /** Close the database when the plugin unmounts. */
48
+ /** Start periodic incremental refreshes; 0 disables. */
49
+ startAutoRefresh(ms: number): void;
50
+ /** Queue a full rebuild; false when one is already running. */
51
+ rebuild(): boolean;
52
+ /** Queue an incremental refresh; false when one is already running. */
53
+ refreshNow(): boolean;
48
54
  close(): void;
49
- /** Build in the background; stale generations stop at their next checkpoint. */
55
+ /** Build everything from scratch. */
50
56
  start(): void;
51
- private build;
52
- private totalBytes;
53
- /** Account one body against the total cap; false means the cap was reached. */
54
- private account;
55
- private indexSessions;
57
+ /** Re-read changed files/sessions; open the DB when this is the first run. */
58
+ refresh(): void;
59
+ private begin;
60
+ private full;
61
+ private incremental;
62
+ private open;
63
+ private finish;
64
+ private addDoc;
65
+ private deleteDoc;
66
+ private deletePath;
56
67
  private indexFiles;
57
- private sessionRoots;
58
- /** Query the FTS table; short queries fall back to LIKE because trigram needs 3 chars. */
68
+ private refreshFiles;
69
+ private readFileDoc;
70
+ private indexSessions;
71
+ private refreshSessions;
72
+ private indexSessionFile;
73
+ sessionRoots(): string[];
59
74
  search(query: string, limit: number): ContentHit[];
60
75
  }
61
76
  //# sourceMappingURL=content.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../src/content.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAWlD,+BAA+B;AAC/B,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,gDAAgD;AAChD,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,OAAO,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,OAAO,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,kDAAkD;AAClD,qBAAa,YAAY;IAKX,OAAO,CAAC,QAAQ,CAAC,EAAE;IAAkB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJzE,OAAO,CAAC,EAAE,CAAkD;IAC5D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmH;IACzI,OAAO,CAAC,UAAU,CAAI;gBAEO,EAAE,EAAE,cAAc,EAAmB,OAAO,EAAE;QACzE,QAAQ,EAAE,MAAM,CAAA;QAChB,WAAW,EAAE,MAAM,EAAE,CAAA;QACrB,YAAY,EAAE,MAAM,CAAA;QACpB,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,QAAQ,EAAE,MAAM,CAAA;QAChB,WAAW,EAAE,MAAM,CAAA;KACpB;IAED,MAAM,IAAI,YAAY;IAEtB,mDAAmD;IACnD,KAAK,IAAI,IAAI;IAOb,gFAAgF;IAChF,KAAK,IAAI,IAAI;YAYC,KAAK;IAwCnB,OAAO,CAAC,UAAU,CAAI;IAEtB,+EAA+E;IAC/E,OAAO,CAAC,OAAO;YAUD,aAAa;YAmCb,UAAU;IA2BxB,OAAO,CAAC,YAAY;IAMpB,0FAA0F;IAC1F,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,EAAE;CA8BnD"}
1
+ {"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../src/content.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAWlD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,OAAO,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,OAAO,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;IAClC,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;CACpB;AAaD,qBAAa,YAAY;IAOX,OAAO,CAAC,QAAQ,CAAC,EAAE;IAAkB,OAAO,CAAC,QAAQ,CAAC,OAAO;IANzE,OAAO,CAAC,EAAE,CAA4B;IACtC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmH;IACzI,OAAO,CAAC,UAAU,CAAI;IACtB,OAAO,CAAC,UAAU,CAAI;IACtB,OAAO,CAAC,KAAK,CAA4B;gBAEZ,EAAE,EAAE,cAAc,EAAmB,OAAO,EAAE,cAAc;IAEzF,MAAM,IAAI,YAAY;IAEtB,wDAAwD;IACxD,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAKlC,+DAA+D;IAC/D,OAAO,IAAI,OAAO;IAMlB,uEAAuE;IACvE,UAAU,IAAI,OAAO;IAMrB,KAAK,IAAI,IAAI;IAQb,qCAAqC;IACrC,KAAK,IAAI,IAAI;IAEb,8EAA8E;IAC9E,OAAO,IAAI,IAAI;IAEf,OAAO,CAAC,KAAK;YAcC,IAAI;YAUJ,WAAW;IAUzB,OAAO,CAAC,IAAI;IAmBZ,OAAO,CAAC,MAAM;IASd,OAAO,CAAC,MAAM;IAcd,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,UAAU;YAOJ,UAAU;YAoBV,YAAY;IA2B1B,OAAO,CAAC,WAAW;YAOL,aAAa;YAUb,eAAe;IAoB7B,OAAO,CAAC,gBAAgB;IAmBxB,YAAY,IAAI,MAAM,EAAE;IAKxB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,EAAE;CA8BnD"}