zotero-bridge 1.0.2 → 1.1.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/README-en.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # ZoteroBridge
2
2
 
3
3
  <p align="right">
4
- <a href="README.md">简体中文</a> | <a href="README-en.md">English</a>
4
+ <a href="README.md">🇨🇳 简体中文</a> | <b>🇬🇧 English</b>
5
5
  </p>
6
6
 
7
7
  <p align="center">
package/README.md CHANGED
@@ -1,153 +1,323 @@
1
- # MCP Registry
2
-
3
- The MCP registry provides MCP clients with a list of MCP servers, like an app store for MCP servers.
4
-
5
- [**📤 Publish my MCP server**](docs/modelcontextprotocol-io/quickstart.mdx) | [**⚡️ Live API docs**](https://registry.modelcontextprotocol.io/docs) | [**👀 Ecosystem vision**](docs/design/ecosystem-vision.md) | 📖 **[Full documentation](./docs)**
6
-
7
- ## Development Status
8
-
9
- **2025-10-24 update**: The Registry API has entered an **API freeze (v0.1)** 🎉. For the next month or more, the API will remain stable with no breaking changes, allowing integrators to confidently implement support. This freeze applies to v0.1 while development continues on v0. We'll use this period to validate the API in real-world integrations and gather feedback to shape v1 for general availability. Thank you to everyone for your contributions and patience—your involvement has been key to getting us here!
10
-
11
- **2025-09-08 update**: The registry has launched in preview 🎉 ([announcement blog post](https://blog.modelcontextprotocol.io/posts/2025-09-08-mcp-registry-preview/)). While the system is now more stable, this is still a preview release and breaking changes or data resets may occur. A general availability (GA) release will follow later. We'd love your feedback in [GitHub discussions](https://github.com/modelcontextprotocol/registry/discussions/new?category=ideas) or in the [#registry-dev Discord](https://discord.com/channels/1358869848138059966/1369487942862504016) ([joining details here](https://modelcontextprotocol.io/community/communication)).
12
-
13
- Current key maintainers:
14
- - **Adam Jones** (Anthropic) [@domdomegg](https://github.com/domdomegg)
15
- - **Tadas Antanavicius** (PulseMCP) [@tadasant](https://github.com/tadasant)
16
- - **Toby Padilla** (GitHub) [@toby](https://github.com/toby)
17
- - **Radoslav (Rado) Dimitrov** (Stacklok) [@rdimitrov](https://github.com/rdimitrov)
18
-
19
- ## Contributing
20
-
21
- We use multiple channels for collaboration - see [modelcontextprotocol.io/community/communication](https://modelcontextprotocol.io/community/communication).
22
-
23
- Often (but not always) ideas flow through this pipeline:
24
-
25
- - **[Discord](https://modelcontextprotocol.io/community/communication)** - Real-time community discussions
26
- - **[Discussions](https://github.com/modelcontextprotocol/registry/discussions)** - Propose and discuss product/technical requirements
27
- - **[Issues](https://github.com/modelcontextprotocol/registry/issues)** - Track well-scoped technical work
28
- - **[Pull Requests](https://github.com/modelcontextprotocol/registry/pulls)** - Contribute work towards issues
29
-
30
- ### Quick start:
31
-
32
- #### Pre-requisites
33
-
34
- - **Docker**
35
- - **Go 1.24.x**
36
- - **ko** - Container image builder for Go ([installation instructions](https://ko.build/install/))
37
- - **golangci-lint v2.4.0**
38
-
39
- #### Running the server
40
-
41
- ```bash
42
- # Start full development environment
43
- make dev-compose
44
- ```
45
-
46
- This starts the registry at [`localhost:8080`](http://localhost:8080) with PostgreSQL. The database uses ephemeral storage and is reset each time you restart the containers, ensuring a clean state for development and testing.
47
-
48
- **Note:** The registry uses [ko](https://ko.build) to build container images. The `make dev-compose` command automatically builds the registry image with ko and loads it into your local Docker daemon before starting the services.
49
-
50
- By default, the registry seeds from the production API with a filtered subset of servers (to keep startup fast). This ensures your local environment mirrors production behavior and all seed data passes validation. For offline development you can seed from a file without validation with `MCP_REGISTRY_SEED_FROM=data/seed.json MCP_REGISTRY_ENABLE_REGISTRY_VALIDATION=false make dev-compose`.
51
-
52
- The setup can be configured with environment variables in [docker-compose.yml](./docker-compose.yml) - see [.env.example](./.env.example) for a reference.
53
-
54
- <details>
55
- <summary>Alternative: Running a pre-built Docker image</summary>
56
-
57
- Pre-built Docker images are automatically published to GitHub Container Registry:
58
-
59
- ```bash
60
- # Run latest stable release
61
- docker run -p 8080:8080 ghcr.io/modelcontextprotocol/registry:latest
62
-
63
- # Run latest from main branch (continuous deployment)
64
- docker run -p 8080:8080 ghcr.io/modelcontextprotocol/registry:main
65
-
66
- # Run specific release version
67
- docker run -p 8080:8080 ghcr.io/modelcontextprotocol/registry:v1.0.0
68
-
69
- # Run development build from main branch
70
- docker run -p 8080:8080 ghcr.io/modelcontextprotocol/registry:main-20250906-abc123d
71
- ```
72
-
73
- **Available tags:**
74
- - **Releases**: `latest`, `v1.0.0`, `v1.1.0`, etc.
75
- - **Continuous**: `main` (latest main branch build)
76
- - **Development**: `main-<date>-<sha>` (specific commit builds)
77
-
78
- </details>
79
-
80
- #### Publishing a server
81
-
82
- To publish a server, we've built a simple CLI. You can use it with:
83
-
84
- ```bash
85
- # Build the latest CLI
86
- make publisher
87
-
88
- # Use it!
89
- ./bin/mcp-publisher --help
90
- ```
91
-
92
- See [the publisher guide](./docs/modelcontextprotocol-io/quickstart.mdx) for more details.
93
-
94
- #### Other commands
95
-
96
- ```bash
97
- # Run lint, unit tests and integration tests
98
- make check
99
- ```
100
-
101
- There are also a few more helpful commands for development. Run `make help` to learn more, or look in [Makefile](./Makefile).
102
-
103
- <!--
104
- For Claude and other AI tools: Always prefer make targets over custom commands where possible.
105
- -->
106
-
107
- ## Architecture
108
-
109
- ### Project Structure
110
-
111
- ```
112
- ├── cmd/ # Application entry points
113
- │ └── publisher/ # Server publishing tool
114
- ├── data/ # Seed data
115
- ├── deploy/ # Deployment configuration (Pulumi)
116
- ├── docs/ # Documentation
117
- ├── internal/ # Private application code
118
- │ ├── api/ # HTTP handlers and routing
119
- │ ├── auth/ # Authentication (GitHub OAuth, JWT, namespace blocking)
120
- │ ├── config/ # Configuration management
121
- │ ├── database/ # Data persistence (PostgreSQL)
122
- │ ├── service/ # Business logic
123
- │ ├── telemetry/ # Metrics and monitoring
124
- │ └── validators/ # Input validation
125
- ├── pkg/ # Public packages
126
- │ ├── api/ # API types and structures
127
- │ │ └── v0/ # Version 0 API types
128
- │ └── model/ # Data models for server.json
129
- ├── scripts/ # Development and testing scripts
130
- ├── tests/ # Integration tests
131
- └── tools/ # CLI tools and utilities
132
- └── validate-*.sh # Schema validation tools
133
- ```
134
-
135
- ### Authentication
136
-
137
- Publishing supports multiple authentication methods:
138
- - **GitHub OAuth** - For publishing by logging into GitHub
139
- - **GitHub OIDC** - For publishing from GitHub Actions
140
- - **DNS verification** - For proving ownership of a domain and its subdomains
141
- - **HTTP verification** - For proving ownership of a domain
142
-
143
- The registry validates namespace ownership when publishing. E.g. to publish...:
144
- - `io.github.domdomegg/my-cool-mcp` you must login to GitHub as `domdomegg`, or be in a GitHub Action on domdomegg's repos
145
- - `me.adamjones/my-cool-mcp` you must prove ownership of `adamjones.me` via DNS or HTTP challenge
146
-
147
- ## Community Projects
148
-
149
- Check out [community projects](docs/community-projects.md) to explore notable registry-related work created by the community.
150
-
151
- ## More documentation
152
-
153
- See the [documentation](./docs) for more details if your question has not been answered here!
1
+ # ZoteroBridge
2
+
3
+ <p align="right">
4
+ <b>🇨🇳 简体中文</b> | <a href="README-en.md">🇬🇧 English</a>
5
+ </p>
6
+
7
+ <p align="center">
8
+ <b>连接 Zotero SQLite 数据库的模型上下文协议 (MCP) 服务器</b>
9
+ </p>
10
+
11
+ <p align="center">
12
+ <a href="https://www.zotero.org/"><img src="https://img.shields.io/badge/Zotero-7.0+-red" alt="Zotero"></a>
13
+ <a href="https://nodejs.org/"><img src="https://img.shields.io/badge/Node.js-18+-green" alt="Node.js"></a>
14
+ <a href="https://www.typescriptlang.org/"><img src="https://img.shields.io/badge/TypeScript-5.0+-blue" alt="TypeScript"></a>
15
+ <a href="https://modelcontextprotocol.io/"><img src="https://img.shields.io/badge/MCP-1.0-purple" alt="MCP"></a>
16
+ <a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-yellow" alt="License"></a>
17
+ </p>
18
+
19
+ ## 📚 概述
20
+
21
+ ZoteroBridge 是一个模型上下文协议 (MCP) 服务器,可直接连接到 Zotero SQLite 数据库 (`zotero.sqlite`),让 AI 助手(如 Claude、ChatGPT 等)能够与您的 Zotero 文献库进行交互。
22
+
23
+ ### 主要特性
24
+
25
+ - 🗂️ **文件夹管理** - 创建、重命名、移动和删除 Zotero 文件夹(集合)
26
+ - 🏷️ **标签管理** - 为文献添加、删除和查询标签
27
+ - 📖 **条目操作** - 搜索条目、获取详情、管理文件夹关系
28
+ - 📝 **摘要管理** - 读取和设置条目摘要,添加笔记
29
+ - 📄 **PDF 处理** - 提取 PDF 全文、生成摘要、全文搜索
30
+
31
+ ---
32
+
33
+ ## 🚀 快速开始
34
+
35
+ ### 前置要求
36
+
37
+ - Node.js 18.0 或更高版本
38
+ - Zotero 7.0 或更高版本
39
+ - 支持 MCP 的 AI 客户端(如 Claude Desktop、Cursor)
40
+
41
+ ### 安装
42
+
43
+ ```bash
44
+ # 克隆仓库
45
+ git clone https://github.com/Combjellyshen/ZoteroBridge.git
46
+ cd ZoteroBridge
47
+
48
+ # 安装依赖
49
+ npm install
50
+
51
+ # 构建项目
52
+ npm run build
53
+ ```
54
+
55
+ ### 配置 AI 客户端
56
+
57
+ #### Claude Desktop
58
+
59
+ 添加到 Claude Desktop 配置文件:
60
+
61
+ **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
62
+ **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
63
+
64
+ ```json
65
+ {
66
+ "mcpServers": {
67
+ "zotero-bridge": {
68
+ "command": "node",
69
+ "args": ["path/to/ZoteroBridge/dist/index.js"],
70
+ "env": {}
71
+ }
72
+ }
73
+ }
74
+ ```
75
+
76
+ #### Cursor IDE
77
+
78
+ 在项目根目录创建 `.cursor/mcp.json`:
79
+
80
+ ```json
81
+ {
82
+ "mcpServers": {
83
+ "zotero-bridge": {
84
+ "command": "node",
85
+ "args": ["path/to/ZoteroBridge/dist/index.js"]
86
+ }
87
+ }
88
+ }
89
+ ```
90
+
91
+ #### VS Code Copilot
92
+
93
+ 1. 打开 VS Code 设置 (`Ctrl+,`)
94
+ 2. 搜索 `github.copilot.chat.mcpServers`
95
+ 3. 点击 "在 settings.json 中编辑"
96
+ 4. 添加以下配置:
97
+
98
+ ```json
99
+ "github.copilot.chat.mcpServers": {
100
+ "zotero-bridge": {
101
+ "command": "node",
102
+ "args": ["path/to/ZoteroBridge/dist/index.js"]
103
+ }
104
+ }
105
+ ```
106
+
107
+ 请将 `path/to/ZoteroBridge/dist/index.js` 替换为实际的绝对路径。
108
+
109
+ #### 自定义数据库路径
110
+
111
+ 如果您的 Zotero 数据库不在默认位置:
112
+
113
+ ```json
114
+ {
115
+ "mcpServers": {
116
+ "zotero-bridge": {
117
+ "command": "node",
118
+ "args": [
119
+ "path/to/ZoteroBridge/dist/index.js",
120
+ "--db", "D:/MyZotero/zotero.sqlite"
121
+ ]
122
+ }
123
+ }
124
+ }
125
+ ```
126
+
127
+ ---
128
+
129
+ ## 🛠️ 可用工具
130
+
131
+ ### 文件夹管理
132
+
133
+ | 工具 | 描述 |
134
+ |------|------|
135
+ | `list_collections` | 列出所有文件夹 |
136
+ | `get_collection` | 获取文件夹详情 |
137
+ | `create_collection` | 创建新文件夹 |
138
+ | `rename_collection` | 重命名文件夹 |
139
+ | `move_collection` | 移动文件夹到新父级 |
140
+ | `delete_collection` | 删除文件夹 |
141
+ | `get_subcollections` | 获取子文件夹 |
142
+
143
+ ### 标签管理
144
+
145
+ | 工具 | 描述 |
146
+ |------|------|
147
+ | `list_tags` | 列出所有标签 |
148
+ | `create_tag` | 创建新标签 |
149
+ | `add_tag` | 为条目添加标签 |
150
+ | `remove_tag` | 从条目移除标签 |
151
+ | `get_item_tags` | 获取条目的所有标签 |
152
+
153
+ ### 条目操作
154
+
155
+ | 工具 | 描述 |
156
+ |------|------|
157
+ | `search_items` | 按标题搜索条目 |
158
+ | `get_item_details` | 获取条目详细信息 |
159
+ | `add_item_to_collection` | 将条目添加到文件夹 |
160
+ | `remove_item_from_collection` | 从文件夹移除条目 |
161
+ | `get_collection_items` | 获取文件夹中的所有条目 |
162
+
163
+ ### 摘要和笔记
164
+
165
+ | 工具 | 描述 |
166
+ |------|------|
167
+ | `get_item_abstract` | 获取条目摘要 |
168
+ | `set_item_abstract` | 设置条目摘要 |
169
+ | `get_item_notes` | 获取条目笔记 |
170
+ | `add_item_note` | 为条目添加笔记 |
171
+
172
+ ### PDF 处理
173
+
174
+ | 工具 | 描述 |
175
+ |------|------|
176
+ | `extract_pdf_text` | 从 PDF 提取全文 |
177
+ | `get_pdf_summary` | 获取 PDF 摘要信息 |
178
+ | `get_item_pdfs` | 获取条目的 PDF 附件 |
179
+ | `search_pdf` | 在 PDF 中搜索文本 |
180
+ | `generate_abstract_from_pdf` | 从 PDF 内容生成摘要 |
181
+
182
+ ### 实用工具
183
+
184
+ | 工具 | 描述 |
185
+ |------|------|
186
+ | `get_database_info` | 获取数据库信息 |
187
+ | `raw_query` | 执行原始 SQL 查询(仅 SELECT) |
188
+
189
+ ### 标识符搜索(DOI/ISBN)
190
+
191
+ | 工具 | 描述 |
192
+ |------|------|
193
+ | `find_by_doi` | 通过 DOI 查找条目 |
194
+ | `find_by_isbn` | 通过 ISBN 查找条目 |
195
+ | `find_by_identifier` | 通过任意标识符查找条目(DOI、ISBN、PMID、arXiv) |
196
+
197
+ ### PDF 标注
198
+
199
+ | 工具 | 描述 |
200
+ |------|------|
201
+ | `get_item_annotations` | 获取条目的所有标注(高亮、笔记等) |
202
+ | `get_attachment_annotations` | 获取特定附件的标注 |
203
+ | `get_annotations_by_type` | 按类型筛选标注(高亮、笔记等) |
204
+ | `get_annotations_by_color` | 按颜色筛选标注 |
205
+ | `search_annotations` | 在标注内容中搜索 |
206
+
207
+ ### 全文搜索
208
+
209
+ | 工具 | 描述 |
210
+ |------|------|
211
+ | `search_fulltext` | 在全文索引中搜索 |
212
+ | `get_fulltext_content` | 获取附件的全文内容 |
213
+ | `search_fulltext_with_context` | 带上下文片段的全文搜索 |
214
+
215
+ ### 相关条目
216
+
217
+ | 工具 | 描述 |
218
+ |------|------|
219
+ | `get_related_items` | 获取手动关联的相关条目 |
220
+ | `find_similar_by_tags` | 通过共享标签查找相似条目 |
221
+ | `find_similar_by_creators` | 通过共享作者查找相似条目 |
222
+ | `find_similar_by_collection` | 在同一文件夹中查找相似条目 |
223
+
224
+ ---
225
+
226
+ ## 📖 使用示例
227
+
228
+ ### 与 Claude 配合使用
229
+
230
+ ```
231
+ # 列出所有文件夹
232
+ 列出我 Zotero 文献库中的所有文件夹
233
+
234
+ # 创建新文件夹
235
+ 创建一个名为"机器学习论文"的新文件夹
236
+
237
+ # 搜索条目
238
+ 搜索标题中包含"深度学习"的条目
239
+
240
+ # 提取 PDF 内容
241
+ 提取这个条目 PDF 的全文并生成摘要
242
+
243
+ # 添加标签
244
+ 为这个条目添加"重要"和"待读"标签
245
+ ```
246
+
247
+ ---
248
+
249
+ ## 🏗️ 项目结构
250
+
251
+ ```
252
+ ZoteroBridge/
253
+ ├── src/
254
+ │ ├── index.ts # MCP 服务器入口
255
+ │ ├── database.ts # Zotero SQLite 数据库操作
256
+ │ ├── pdf.ts # PDF 处理模块
257
+ │ └── tools.ts # MCP 工具定义
258
+ ├── dist/ # 编译输出
259
+ ├── package.json
260
+ ├── tsconfig.json
261
+ └── README.md
262
+ ```
263
+
264
+ ---
265
+
266
+ ## 👨‍💻 开发指南
267
+
268
+ ### 开发模式
269
+
270
+ ```bash
271
+ # 监听文件变化并自动编译
272
+ npm run dev
273
+ ```
274
+
275
+ ### 构建
276
+
277
+ ```bash
278
+ npm run build
279
+ ```
280
+
281
+ ### 命令行参数
282
+
283
+ ```bash
284
+ # 显示帮助
285
+ node dist/index.js --help
286
+
287
+ # 指定数据库路径
288
+ node dist/index.js --db /path/to/zotero.sqlite
289
+
290
+ # 只读模式
291
+ node dist/index.js --readonly
292
+ ```
293
+
294
+ ---
295
+
296
+ ## ⚠️ 注意事项
297
+
298
+ 1. **关闭 Zotero**:使用写入功能时,请关闭 Zotero 客户端以避免数据库锁定
299
+ 2. **备份数据**:在进行修改前备份 `zotero.sqlite`
300
+ 3. **只读模式**:仅读取数据时使用 `--readonly` 参数更安全
301
+
302
+ ---
303
+
304
+ ## 📄 许可证
305
+
306
+ 本项目采用 [MIT 许可证](LICENSE)。
307
+
308
+ ---
309
+
310
+ ## 🙏 致谢
311
+
312
+ - [Zotero](https://www.zotero.org/) - 优秀的开源文献管理工具
313
+ - [Model Context Protocol](https://modelcontextprotocol.io/) - AI 工具集成协议
314
+ - [cookjohn/zotero-mcp](https://github.com/cookjohn/zotero-mcp) - 项目参考
315
+
316
+ ---
317
+
318
+ ## 📬 联系方式
319
+
320
+ - 作者:Combjellyshen
321
+ - GitHub:[https://github.com/Combjellyshen/ZoteroBridge](https://github.com/Combjellyshen/ZoteroBridge)
322
+
323
+ 欢迎提交 Issue 或 Pull Request!
@@ -39,19 +39,42 @@ export declare class ZoteroDatabase {
39
39
  private dbPath;
40
40
  private readonly;
41
41
  private SQL;
42
+ private backupPath;
43
+ private hasUnsavedChanges;
42
44
  constructor(dbPath?: string, readonly?: boolean);
43
45
  /**
44
46
  * Find the default Zotero database path based on OS
45
47
  */
46
48
  private findDefaultZoteroDB;
49
+ /**
50
+ * Check if Zotero is currently running
51
+ */
52
+ private isZoteroRunning;
53
+ /**
54
+ * Check if WAL files exist (indicates active Zotero session)
55
+ */
56
+ private hasWALFiles;
57
+ /**
58
+ * Create a backup of the database before modification
59
+ */
60
+ private createBackup;
61
+ /**
62
+ * Verify database integrity
63
+ */
64
+ private verifyIntegrity;
47
65
  /**
48
66
  * Connect to the Zotero database
49
67
  */
50
68
  connect(): Promise<void>;
51
69
  /**
52
70
  * Save changes to the database file
71
+ * WARNING: This can corrupt the database if Zotero is running!
53
72
  */
54
73
  save(): void;
74
+ /**
75
+ * Mark that changes have been made (for tracking unsaved changes)
76
+ */
77
+ private markDirty;
55
78
  /**
56
79
  * Disconnect from the database
57
80
  */
@@ -64,6 +87,20 @@ export declare class ZoteroDatabase {
64
87
  * Get database path
65
88
  */
66
89
  getPath(): string;
90
+ /**
91
+ * Get current timestamp in Zotero SQL format
92
+ */
93
+ private getCurrentTimestamp;
94
+ /**
95
+ * Update item metadata after modification (dateModified, version, synced)
96
+ * This is CRITICAL for Zotero compatibility!
97
+ *
98
+ * According to Zotero's official code:
99
+ * - dateModified must be updated on every change
100
+ * - version must be incremented
101
+ * - synced must be set to 0 (false) to indicate local change
102
+ */
103
+ private updateItemMetadata;
67
104
  /**
68
105
  * Execute a query and return all results
69
106
  */
@@ -122,6 +159,8 @@ export declare class ZoteroDatabase {
122
159
  createTag(name: string, _type?: number): number;
123
160
  /**
124
161
  * Add tag to item
162
+ *
163
+ * Following Zotero's pattern: modifying item tags should update item metadata
125
164
  */
126
165
  addTagToItem(itemID: number, tagName: string, type?: number): boolean;
127
166
  /**
@@ -139,10 +178,14 @@ export declare class ZoteroDatabase {
139
178
  getCollectionItems(collectionID: number): ZoteroItem[];
140
179
  /**
141
180
  * Add item to collection
181
+ *
182
+ * Following Zotero's pattern: collection membership changes update item metadata
142
183
  */
143
184
  addItemToCollection(itemID: number, collectionID: number): boolean;
144
185
  /**
145
186
  * Remove item from collection
187
+ *
188
+ * Following Zotero's pattern: collection membership changes update item metadata
146
189
  */
147
190
  removeItemFromCollection(itemID: number, collectionID: number): boolean;
148
191
  /**
@@ -163,6 +206,11 @@ export declare class ZoteroDatabase {
163
206
  getItemAbstract(itemID: number): string | null;
164
207
  /**
165
208
  * Set item abstract
209
+ *
210
+ * Following Zotero's official pattern for modifying item data:
211
+ * 1. Get or create value in itemDataValues
212
+ * 2. Insert or update itemData
213
+ * 3. Update item metadata (dateModified, version, synced)
166
214
  */
167
215
  setItemAbstract(itemID: number, abstract: string): boolean;
168
216
  /**
@@ -171,6 +219,11 @@ export declare class ZoteroDatabase {
171
219
  getItemNotes(itemID: number): any[];
172
220
  /**
173
221
  * Add note to item
222
+ *
223
+ * Following Zotero's official pattern for creating notes:
224
+ * 1. Create item with note type
225
+ * 2. Create itemNotes entry
226
+ * 3. Update parent item's metadata (as adding a child note is a modification)
174
227
  */
175
228
  addItemNote(parentItemID: number, noteContent: string, title?: string): number;
176
229
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"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"}