dsh-zotero 0.4.1 → 0.4.3
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 +12 -9
- package/README.md +24 -21
- package/lib/ask.d.ts +0 -3
- package/lib/ask.d.ts.map +1 -1
- package/lib/ask.js +1 -1
- package/lib/ask.js.map +1 -1
- package/lib/attachments.d.ts +8 -0
- package/lib/attachments.d.ts.map +1 -1
- package/lib/attachments.js +11 -1
- package/lib/attachments.js.map +1 -1
- package/lib/client.js +118 -13
- package/lib/client.js.map +3 -3
- package/lib/command.d.ts +0 -3
- package/lib/command.d.ts.map +1 -1
- package/lib/command.js +1 -1
- package/lib/command.js.map +1 -1
- package/lib/concurrency.d.ts +12 -0
- package/lib/concurrency.d.ts.map +1 -0
- package/lib/concurrency.js +35 -0
- package/lib/concurrency.js.map +1 -0
- package/lib/config.d.ts +3 -0
- package/lib/config.d.ts.map +1 -1
- package/lib/config.js +2 -0
- package/lib/config.js.map +1 -1
- package/lib/constants.d.ts +7 -0
- package/lib/constants.d.ts.map +1 -1
- package/lib/constants.js +7 -0
- package/lib/constants.js.map +1 -1
- package/lib/contract.d.ts +0 -10
- package/lib/contract.d.ts.map +1 -1
- package/lib/contract.js +1 -1
- package/lib/contract.js.map +1 -1
- package/lib/http-client.d.ts.map +1 -1
- package/lib/http-client.js +14 -3
- package/lib/http-client.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/item-graph.d.ts +55 -0
- package/lib/item-graph.d.ts.map +1 -0
- package/lib/item-graph.js +47 -0
- package/lib/item-graph.js.map +1 -0
- package/lib/local/identity.d.ts +35 -0
- package/lib/local/identity.d.ts.map +1 -0
- package/lib/local/identity.js +27 -0
- package/lib/local/identity.js.map +1 -0
- package/lib/normalize.d.ts +30 -11
- package/lib/normalize.d.ts.map +1 -1
- package/lib/normalize.js +186 -28
- package/lib/normalize.js.map +1 -1
- package/lib/presentation-meta.d.ts +30 -22
- package/lib/presentation-meta.d.ts.map +1 -1
- package/lib/presentation-meta.js +33 -19
- package/lib/presentation-meta.js.map +1 -1
- package/lib/prompt.d.ts +1 -10
- package/lib/prompt.d.ts.map +1 -1
- package/lib/prompt.js +5 -5
- package/lib/prompt.js.map +1 -1
- package/lib/provider-local.d.ts +142 -24
- package/lib/provider-local.d.ts.map +1 -1
- package/lib/provider-local.js +1187 -183
- package/lib/provider-local.js.map +1 -1
- package/lib/refs.d.ts +39 -12
- package/lib/refs.d.ts.map +1 -1
- package/lib/refs.js +80 -9
- package/lib/refs.js.map +1 -1
- package/lib/service.d.ts +17 -2
- package/lib/service.d.ts.map +1 -1
- package/lib/service.js +44 -2
- package/lib/service.js.map +1 -1
- package/lib/tools/attachment.d.ts +0 -68
- package/lib/tools/attachment.d.ts.map +1 -1
- package/lib/tools/attachment.js +4 -4
- package/lib/tools/attachment.js.map +1 -1
- package/lib/tools/browse.d.ts +265 -0
- package/lib/tools/browse.d.ts.map +1 -0
- package/lib/tools/browse.js +358 -0
- package/lib/tools/browse.js.map +1 -0
- package/lib/tools/changes.d.ts +185 -0
- package/lib/tools/changes.d.ts.map +1 -0
- package/lib/tools/changes.js +168 -0
- package/lib/tools/changes.js.map +1 -0
- package/lib/tools/children.d.ts +176 -0
- package/lib/tools/children.d.ts.map +1 -0
- package/lib/tools/children.js +166 -0
- package/lib/tools/children.js.map +1 -0
- package/lib/tools/export.d.ts +0 -136
- package/lib/tools/export.d.ts.map +1 -1
- package/lib/tools/export.js +4 -4
- package/lib/tools/export.js.map +1 -1
- package/lib/tools/get.d.ts +33 -1
- package/lib/tools/get.d.ts.map +1 -1
- package/lib/tools/get.js +38 -6
- package/lib/tools/get.js.map +1 -1
- package/lib/tools/retrieve.d.ts +13 -1
- package/lib/tools/retrieve.d.ts.map +1 -1
- package/lib/tools/retrieve.js +40 -4
- package/lib/tools/retrieve.js.map +1 -1
- package/lib/tools/search.d.ts +150 -6
- package/lib/tools/search.d.ts.map +1 -1
- package/lib/tools/search.js +138 -28
- package/lib/tools/search.js.map +1 -1
- package/lib/types.d.ts +256 -7
- package/lib/types.d.ts.map +1 -1
- package/package.json +37 -30
package/README.en.md
CHANGED
|
@@ -26,13 +26,16 @@ dsh-zotero is a [Zotero](https://www.zotero.org) plugin designed for agent resea
|
|
|
26
26
|
|
|
27
27
|
## Tools
|
|
28
28
|
|
|
29
|
-
| Tool | Purpose
|
|
30
|
-
| ------------------- |
|
|
31
|
-
| `zotero_search` | Search by title/creator/year; `everything` mode also searches indexed full text |
|
|
32
|
-
| `
|
|
33
|
-
| `
|
|
34
|
-
| `
|
|
35
|
-
| `
|
|
29
|
+
| Tool | Purpose |
|
|
30
|
+
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
|
|
31
|
+
| `zotero_search` | Search by title/creator/year (library/collection/savedSearch/publications scopes); `everything` mode also searches indexed full text |
|
|
32
|
+
| `zotero_browse` | Discover library structure: libraries, the collection tree, saved searches, tag facets, item types and their fields |
|
|
33
|
+
| `zotero_get` | Read one item's metadata, optionally with notes, annotations, and attachments; `fields:"all"` keeps every field |
|
|
34
|
+
| `zotero_children` | Explore one item's child-object graph: direct notes, attachments, and the annotations that live under each PDF |
|
|
35
|
+
| `zotero_retrieve` | Return the most relevant evidence passages for a query; multi-attachment retrieval supported |
|
|
36
|
+
| `zotero_changes` | Incremental awareness via local transaction versions: what changed, what was deleted |
|
|
37
|
+
| `zotero_attachment` | Resolve a ref to a verified on-disk path or linked URL |
|
|
38
|
+
| `zotero_export` | Generate citations, bibliographies, BibTeX/BibLaTeX/RIS/CSL JSON |
|
|
36
39
|
|
|
37
40
|
[Full tool reference →](docs/tools.md)
|
|
38
41
|
|
|
@@ -65,7 +68,7 @@ The plugin provides a settings card under **Settings → Plugins** where you can
|
|
|
65
68
|
|
|
66
69
|
- Zotero ≥ 7 with local API enabled: **Settings → Advanced → "Allow other applications on this computer to communicate with Zotero"**
|
|
67
70
|
- Node.js ≥ 22.19 (or ≥ 24)
|
|
68
|
-
- dsh 0.1.0-rc.
|
|
71
|
+
- dsh 0.1.0-rc.8 series host (all `@deepseek-ai/dsh-*` peer dependencies are `^0.1.0-rc.8`)
|
|
69
72
|
- Local API at `http://127.0.0.1:23119/api`, unauthenticated, read-only
|
|
70
73
|
|
|
71
74
|
## Usage example
|
|
@@ -115,7 +118,7 @@ More examples in [Features](docs/features.md).
|
|
|
115
118
|
| ------------------------------------------ | ------------------------------------------------------ |
|
|
116
119
|
| [Getting Started](docs/getting-started.md) | Installation, prerequisites, first verification |
|
|
117
120
|
| [Features](docs/features.md) | Sources panel, chat integration, evidence, exports |
|
|
118
|
-
| [Tool Reference](docs/tools.md) | Parameters, return values, error codes for all
|
|
121
|
+
| [Tool Reference](docs/tools.md) | Parameters, return values, error codes for all 8 tools |
|
|
119
122
|
| [Configuration](docs/configuration.md) | 20 config fields, defaults, hot-reload |
|
|
120
123
|
| [Architecture](docs/architecture.md) | Data flow, layer responsibilities, design boundaries |
|
|
121
124
|
| [Development](docs/development.md) | Build, test, local development |
|
package/README.md
CHANGED
|
@@ -26,13 +26,16 @@ dsh-zotero 是面向 Agent 研究工作流的 [Zotero](https://www.zotero.org)
|
|
|
26
26
|
|
|
27
27
|
## 工具
|
|
28
28
|
|
|
29
|
-
| 工具 | 用途
|
|
30
|
-
| ------------------- |
|
|
31
|
-
| `zotero_search` |
|
|
32
|
-
| `
|
|
33
|
-
| `
|
|
34
|
-
| `
|
|
35
|
-
| `
|
|
29
|
+
| 工具 | 用途 |
|
|
30
|
+
| ------------------- | ------------------------------------------------------------------------------------------------------------- |
|
|
31
|
+
| `zotero_search` | 按标题/作者/年份搜索(library/collection/savedSearch/publications 作用域),`everything` 模式连全文索引一起搜 |
|
|
32
|
+
| `zotero_browse` | 发现库结构:库、合集树(层级导航)、保存的检索、标签 facet、条目类型及其字段 |
|
|
33
|
+
| `zotero_get` | 读取单条文献的元数据,可选返回笔记、批注、附件清单;`fields:"all"` 保留全部元数据 |
|
|
34
|
+
| `zotero_children` | 探索单条文献的子对象图:直连笔记、附件,以及挂在 PDF 下的批注 |
|
|
35
|
+
| `zotero_retrieve` | 按查询词返回最相关的证据段落(批注/笔记/摘要/全文),支持多附件检索 |
|
|
36
|
+
| `zotero_changes` | 基于本地事务版本的增量感知:哪些条目/合集/全文索引变了、什么被删除 |
|
|
37
|
+
| `zotero_attachment` | 将文献 ref 解析为已验证的磁盘路径或链接 URL |
|
|
38
|
+
| `zotero_export` | 生成引用、参考文献表、BibTeX/BibLaTeX/RIS/CSL JSON |
|
|
36
39
|
|
|
37
40
|
[完整工具参考 →](docs/tools.md)
|
|
38
41
|
|
|
@@ -65,7 +68,7 @@ dsh plugin --profile <name> add ./dsh-zotero-*.tgz
|
|
|
65
68
|
|
|
66
69
|
- Zotero ≥ 7 桌面版,启用本地 API:**设置 → 高级 → "允许其他应用程序与 Zotero 通信"**
|
|
67
70
|
- Node.js ≥ 22.19(或 ≥ 24)
|
|
68
|
-
- 宿主 dsh 0.1.0-rc.
|
|
71
|
+
- 宿主 dsh 0.1.0-rc.8 系列(`@deepseek-ai/dsh-*` peer 依赖均为 `^0.1.0-rc.8`)
|
|
69
72
|
- 本地 API 地址 `http://127.0.0.1:23119/api`,无认证,只读
|
|
70
73
|
|
|
71
74
|
## 使用示例
|
|
@@ -104,27 +107,27 @@ Agent → zotero_export(refs: [1,2,3], format: "bibtex")
|
|
|
104
107
|
## 权限与外部副作用
|
|
105
108
|
|
|
106
109
|
- **网络**:只向 `http://127.0.0.1:23119/api` 发起 HTTP 请求(不跟随重定向),`resolveConfig` 强制 loopback 地址
|
|
107
|
-
-
|
|
110
|
+
- **文件**:只读,`zotero_attachment` 用 `existsSync` 校验 Zotero 返回的附件路径,不写文件系统
|
|
108
111
|
- **持久化**:唯一写入来自 Settings → Plugins 中的配置卡片,保存到 `$DSH_HOME/settings.yaml` 的 `zotero:` 用户层
|
|
109
112
|
- **无 Shell / native / 后台任务**:插件不执行 shell 命令、不加载 native 模块、不启动常驻进程
|
|
110
113
|
- **重启**:安装或卸载插件后需要重启 dsh 并新建会话;配置修改保存即热更新,无需重启
|
|
111
114
|
|
|
112
115
|
## 文档
|
|
113
116
|
|
|
114
|
-
| 文档 | 内容
|
|
115
|
-
| ----------------------------------- |
|
|
116
|
-
| [快速上手](docs/getting-started.md) | 安装、前置条件、首次验证
|
|
117
|
-
| [功能概览](docs/features.md) | 来源面板、对话集成、证据提取、导出
|
|
118
|
-
| [工具参考](docs/tools.md) |
|
|
119
|
-
| [配置](docs/configuration.md) | 20 个配置字段、默认值、热更新
|
|
120
|
-
| [架构](docs/architecture.md) | 数据流、各层职责、设计边界
|
|
121
|
-
| [开发指南](docs/development.md) | 构建、测试、本地开发
|
|
122
|
-
| [问题排查](docs/troubleshooting.md) | 11 个常见问题的症状和处理
|
|
117
|
+
| 文档 | 内容 |
|
|
118
|
+
| ----------------------------------- | ----------------------------------- |
|
|
119
|
+
| [快速上手](docs/getting-started.md) | 安装、前置条件、首次验证 |
|
|
120
|
+
| [功能概览](docs/features.md) | 来源面板、对话集成、证据提取、导出 |
|
|
121
|
+
| [工具参考](docs/tools.md) | 全部 8 个工具的参数、返回值、错误码 |
|
|
122
|
+
| [配置](docs/configuration.md) | 20 个配置字段、默认值、热更新 |
|
|
123
|
+
| [架构](docs/architecture.md) | 数据流、各层职责、设计边界 |
|
|
124
|
+
| [开发指南](docs/development.md) | 构建、测试、本地开发 |
|
|
125
|
+
| [问题排查](docs/troubleshooting.md) | 11 个常见问题的症状和处理 |
|
|
123
126
|
|
|
124
127
|
## 开发
|
|
125
128
|
|
|
126
129
|
```sh
|
|
127
|
-
npm install
|
|
130
|
+
npm install # 本仓库与 ../deepseek-harness 并列;仅嵌套在 harness 内时需加 --no-workspaces
|
|
128
131
|
npm test # 单元测试(vitest,mock Zotero 服务器)
|
|
129
132
|
npm run typecheck # tsc --noEmit,覆盖 node、test、client 三个项目
|
|
130
133
|
npm run build # tsc 编译 node 部分到 lib/,esbuild 编译浏览器部分到 lib/client.js
|
|
@@ -132,8 +135,8 @@ npm run dev # tsc --watch,host half 热更新
|
|
|
132
135
|
npm run dev:client # esbuild --watch,浏览器部分热更新
|
|
133
136
|
```
|
|
134
137
|
|
|
135
|
-
|
|
138
|
+
`lib/` 放 Node 侧代码,`lib/client.js` 放浏览器侧代码(settings 卡片和 Zotero tab)。你用 `dev-lib.cordis.yml` overlay 跑完整插件流程,见[开发指南](docs/development.md)。本仓库与 `../deepseek-harness` 并列,属本地暂存布局。
|
|
136
139
|
|
|
137
140
|
## 许可证
|
|
138
141
|
|
|
139
|
-
[MIT](./LICENSE)
|
|
142
|
+
[MIT](./LICENSE):自由使用、修改和分发。
|
package/lib/ask.d.ts
CHANGED
|
@@ -15,9 +15,6 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import type { Context } from '@deepseek-ai/cordis';
|
|
17
17
|
import { type ToolRunContext } from '@deepseek-ai/dsh-tools';
|
|
18
|
-
/** The connectivity failure codes that warrant asking the user how to proceed. */
|
|
19
|
-
export declare const ASK_WORTHY_CODES: readonly ["ZOTERO_NOT_RUNNING", "ZOTERO_API_DISABLED", "ZOTERO_API_VERSION", "ZOTERO_TIMEOUT"];
|
|
20
|
-
export type AskWorthyCode = (typeof ASK_WORTHY_CODES)[number];
|
|
21
18
|
/** The parts of a tool execution `withConnectivityAsk` needs. */
|
|
22
19
|
export type ConnectivityAskExec = Pick<ToolRunContext, 'signal' | 'agent'>;
|
|
23
20
|
/**
|
package/lib/ask.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask.d.ts","sourceRoot":"","sources":["../src/ask.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"ask.d.ts","sourceRoot":"","sources":["../src/ask.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAyB1E,iEAAiE;AACjE,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,cAAc,EAAE,QAAQ,GAAG,OAAO,CAAC,CAAA;AA2E1E;;;;;;;;;;;;GAYG;AACH,wBAAsB,mBAAmB,CAAC,CAAC,EACzC,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,mBAAmB,EACzB,GAAG,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACpB,OAAO,CAAC,CAAC,CAAC,CA4BZ"}
|
package/lib/ask.js
CHANGED
|
@@ -17,7 +17,7 @@ import { HarnessError } from '@deepseek-ai/dsh-llm';
|
|
|
17
17
|
import { TOOL_ABORTED } from '@deepseek-ai/dsh-tools';
|
|
18
18
|
import { ZOTERO_API_DISABLED, ZOTERO_API_VERSION, ZOTERO_NOT_RUNNING, ZOTERO_TIMEOUT, ZoteroError, } from './errors.js';
|
|
19
19
|
/** The connectivity failure codes that warrant asking the user how to proceed. */
|
|
20
|
-
|
|
20
|
+
const ASK_WORTHY_CODES = [
|
|
21
21
|
ZOTERO_NOT_RUNNING,
|
|
22
22
|
ZOTERO_API_DISABLED,
|
|
23
23
|
ZOTERO_API_VERSION,
|
package/lib/ask.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask.js","sourceRoot":"","sources":["../src/ask.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,YAAY,EAAuB,MAAM,wBAAwB,CAAA;AAO1E,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,WAAW,GACZ,MAAM,aAAa,CAAA;AAEpB,kFAAkF;AAClF,MAAM,
|
|
1
|
+
{"version":3,"file":"ask.js","sourceRoot":"","sources":["../src/ask.ts"],"names":[],"mappings":"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"}
|
package/lib/attachments.d.ts
CHANGED
|
@@ -47,4 +47,12 @@ export declare function normalizeAttachmentRecord(json: unknown): ZoteroAttachme
|
|
|
47
47
|
* @throws {ZoteroError} `ZOTERO_UNEXPECTED` on an attachment row without a valid key.
|
|
48
48
|
*/
|
|
49
49
|
export declare function selectAttachment(rows: readonly unknown[], kind: string): ZoteroAttachmentCandidate | undefined;
|
|
50
|
+
/**
|
|
51
|
+
* Select every attachment of the requested kind from raw child rows, ordered
|
|
52
|
+
* by the same deterministic ranking {@link selectAttachment} uses — so the
|
|
53
|
+
* first entry always equals the single-selection answer, and a work with
|
|
54
|
+
* several PDFs (publisher copy, manuscript, supplement) can enter evidence
|
|
55
|
+
* ranking as several first-class sources.
|
|
56
|
+
*/
|
|
57
|
+
export declare function selectAttachments(rows: readonly unknown[], kind: string): readonly ZoteroAttachmentCandidate[];
|
|
50
58
|
//# sourceMappingURL=attachments.d.ts.map
|
package/lib/attachments.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachments.d.ts","sourceRoot":"","sources":["../src/attachments.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,2DAA2D;IAC3D,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,uEAAuE;AACvE,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAGjF;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,OAAO,GACZ;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAKlD;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,OAAO,GAAG,yBAAyB,CAmBlF;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,SAAS,OAAO,EAAE,EACxB,IAAI,EAAE,MAAM,GACX,yBAAyB,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"attachments.d.ts","sourceRoot":"","sources":["../src/attachments.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,2DAA2D;IAC3D,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,uEAAuE;AACvE,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAGjF;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,OAAO,GACZ;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAKlD;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,OAAO,GAAG,yBAAyB,CAmBlF;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,SAAS,OAAO,EAAE,EACxB,IAAI,EAAE,MAAM,GACX,yBAAyB,GAAG,SAAS,CAEvC;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,SAAS,OAAO,EAAE,EACxB,IAAI,EAAE,MAAM,GACX,SAAS,yBAAyB,EAAE,CAoBtC"}
|
package/lib/attachments.js
CHANGED
|
@@ -60,6 +60,16 @@ export function normalizeAttachmentRecord(json) {
|
|
|
60
60
|
* @throws {ZoteroError} `ZOTERO_UNEXPECTED` on an attachment row without a valid key.
|
|
61
61
|
*/
|
|
62
62
|
export function selectAttachment(rows, kind) {
|
|
63
|
+
return selectAttachments(rows, kind)[0];
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Select every attachment of the requested kind from raw child rows, ordered
|
|
67
|
+
* by the same deterministic ranking {@link selectAttachment} uses — so the
|
|
68
|
+
* first entry always equals the single-selection answer, and a work with
|
|
69
|
+
* several PDFs (publisher copy, manuscript, supplement) can enter evidence
|
|
70
|
+
* ranking as several first-class sources.
|
|
71
|
+
*/
|
|
72
|
+
export function selectAttachments(rows, kind) {
|
|
63
73
|
const wantedContentType = kind === 'pdf' ? 'application/pdf' : kind;
|
|
64
74
|
const scored = [];
|
|
65
75
|
for (const row of rows) {
|
|
@@ -82,6 +92,6 @@ export function selectAttachment(rows, kind) {
|
|
|
82
92
|
return byDate;
|
|
83
93
|
return a.candidate.key.localeCompare(b.candidate.key);
|
|
84
94
|
});
|
|
85
|
-
return scored
|
|
95
|
+
return scored.map((entry) => entry.candidate);
|
|
86
96
|
}
|
|
87
97
|
//# sourceMappingURL=attachments.js.map
|
package/lib/attachments.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachments.js","sourceRoot":"","sources":["../src/attachments.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"attachments.js","sourceRoot":"","sources":["../src/attachments.ts"],"names":[],"mappings":"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"}
|