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 +1 -1
- package/README.md +323 -153
- package/dist/database.d.ts +53 -0
- package/dist/database.d.ts.map +1 -1
- package/dist/database.js +184 -11
- package/dist/database.js.map +1 -1
- package/package.json +1 -1
- package/server.json +2 -2
- package/src/database.ts +200 -13
- package/.mcpregistry_github_token +0 -1
- package/.mcpregistry_registry_token +0 -1
- package/mcp-publisher.exe +0 -0
package/README-en.md
CHANGED
package/README.md
CHANGED
|
@@ -1,153 +1,323 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
##
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
-
|
|
28
|
-
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
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!
|
package/dist/database.d.ts
CHANGED
|
@@ -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
|
/**
|
package/dist/database.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAkB,EAAE,QAAQ,IAAI,aAAa,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"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"}
|