@cyanheads/zenodo-mcp-server 0.1.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.
Files changed (97) hide show
  1. package/AGENTS.md +435 -0
  2. package/CLAUDE.md +435 -0
  3. package/Dockerfile +140 -0
  4. package/LICENSE +201 -0
  5. package/README.md +292 -0
  6. package/changelog/0.1.x/0.1.1.md +21 -0
  7. package/changelog/template.md +151 -0
  8. package/dist/config/server-config.d.ts +13 -0
  9. package/dist/config/server-config.d.ts.map +1 -0
  10. package/dist/config/server-config.js +19 -0
  11. package/dist/config/server-config.js.map +1 -0
  12. package/dist/index.d.ts +7 -0
  13. package/dist/index.d.ts.map +1 -0
  14. package/dist/index.js +21 -0
  15. package/dist/index.js.map +1 -0
  16. package/dist/mcp-server/tools/definitions/get-record.tool.d.ts +186 -0
  17. package/dist/mcp-server/tools/definitions/get-record.tool.d.ts.map +1 -0
  18. package/dist/mcp-server/tools/definitions/get-record.tool.js +568 -0
  19. package/dist/mcp-server/tools/definitions/get-record.tool.js.map +1 -0
  20. package/dist/mcp-server/tools/definitions/index.d.ts +721 -0
  21. package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -0
  22. package/dist/mcp-server/tools/definitions/index.js +21 -0
  23. package/dist/mcp-server/tools/definitions/index.js.map +1 -0
  24. package/dist/mcp-server/tools/definitions/list-files.tool.d.ts +108 -0
  25. package/dist/mcp-server/tools/definitions/list-files.tool.d.ts.map +1 -0
  26. package/dist/mcp-server/tools/definitions/list-files.tool.js +348 -0
  27. package/dist/mcp-server/tools/definitions/list-files.tool.js.map +1 -0
  28. package/dist/mcp-server/tools/definitions/list-versions.tool.d.ts +92 -0
  29. package/dist/mcp-server/tools/definitions/list-versions.tool.d.ts.map +1 -0
  30. package/dist/mcp-server/tools/definitions/list-versions.tool.js +268 -0
  31. package/dist/mcp-server/tools/definitions/list-versions.tool.js.map +1 -0
  32. package/dist/mcp-server/tools/definitions/lookup-vocabulary.tool.d.ts +99 -0
  33. package/dist/mcp-server/tools/definitions/lookup-vocabulary.tool.d.ts.map +1 -0
  34. package/dist/mcp-server/tools/definitions/lookup-vocabulary.tool.js +324 -0
  35. package/dist/mcp-server/tools/definitions/lookup-vocabulary.tool.js.map +1 -0
  36. package/dist/mcp-server/tools/definitions/read-file.tool.d.ts +104 -0
  37. package/dist/mcp-server/tools/definitions/read-file.tool.d.ts.map +1 -0
  38. package/dist/mcp-server/tools/definitions/read-file.tool.js +370 -0
  39. package/dist/mcp-server/tools/definitions/read-file.tool.js.map +1 -0
  40. package/dist/mcp-server/tools/definitions/search-records.tool.d.ts +181 -0
  41. package/dist/mcp-server/tools/definitions/search-records.tool.d.ts.map +1 -0
  42. package/dist/mcp-server/tools/definitions/search-records.tool.js +531 -0
  43. package/dist/mcp-server/tools/definitions/search-records.tool.js.map +1 -0
  44. package/dist/mcp-server/tools/record-miss.d.ts +37 -0
  45. package/dist/mcp-server/tools/record-miss.d.ts.map +1 -0
  46. package/dist/mcp-server/tools/record-miss.js +51 -0
  47. package/dist/mcp-server/tools/record-miss.js.map +1 -0
  48. package/dist/mcp-server/tools/render.d.ts +31 -0
  49. package/dist/mcp-server/tools/render.d.ts.map +1 -0
  50. package/dist/mcp-server/tools/render.js +53 -0
  51. package/dist/mcp-server/tools/render.js.map +1 -0
  52. package/dist/mcp-server/tools/schema-helpers.d.ts +20 -0
  53. package/dist/mcp-server/tools/schema-helpers.d.ts.map +1 -0
  54. package/dist/mcp-server/tools/schema-helpers.js +44 -0
  55. package/dist/mcp-server/tools/schema-helpers.js.map +1 -0
  56. package/dist/services/zenodo/cache.d.ts +25 -0
  57. package/dist/services/zenodo/cache.d.ts.map +1 -0
  58. package/dist/services/zenodo/cache.js +58 -0
  59. package/dist/services/zenodo/cache.js.map +1 -0
  60. package/dist/services/zenodo/html-to-text.d.ts +23 -0
  61. package/dist/services/zenodo/html-to-text.d.ts.map +1 -0
  62. package/dist/services/zenodo/html-to-text.js +148 -0
  63. package/dist/services/zenodo/html-to-text.js.map +1 -0
  64. package/dist/services/zenodo/http.d.ts +73 -0
  65. package/dist/services/zenodo/http.d.ts.map +1 -0
  66. package/dist/services/zenodo/http.js +378 -0
  67. package/dist/services/zenodo/http.js.map +1 -0
  68. package/dist/services/zenodo/identifiers.d.ts +104 -0
  69. package/dist/services/zenodo/identifiers.d.ts.map +1 -0
  70. package/dist/services/zenodo/identifiers.js +261 -0
  71. package/dist/services/zenodo/identifiers.js.map +1 -0
  72. package/dist/services/zenodo/normalize.d.ts +29 -0
  73. package/dist/services/zenodo/normalize.d.ts.map +1 -0
  74. package/dist/services/zenodo/normalize.js +324 -0
  75. package/dist/services/zenodo/normalize.js.map +1 -0
  76. package/dist/services/zenodo/query-builder.d.ts +87 -0
  77. package/dist/services/zenodo/query-builder.d.ts.map +1 -0
  78. package/dist/services/zenodo/query-builder.js +221 -0
  79. package/dist/services/zenodo/query-builder.js.map +1 -0
  80. package/dist/services/zenodo/resource-types.d.ts +34 -0
  81. package/dist/services/zenodo/resource-types.d.ts.map +1 -0
  82. package/dist/services/zenodo/resource-types.js +97 -0
  83. package/dist/services/zenodo/resource-types.js.map +1 -0
  84. package/dist/services/zenodo/text-preview.d.ts +56 -0
  85. package/dist/services/zenodo/text-preview.d.ts.map +1 -0
  86. package/dist/services/zenodo/text-preview.js +151 -0
  87. package/dist/services/zenodo/text-preview.js.map +1 -0
  88. package/dist/services/zenodo/types.d.ts +517 -0
  89. package/dist/services/zenodo/types.d.ts.map +1 -0
  90. package/dist/services/zenodo/types.js +8 -0
  91. package/dist/services/zenodo/types.js.map +1 -0
  92. package/dist/services/zenodo/zenodo-service.d.ts +98 -0
  93. package/dist/services/zenodo/zenodo-service.d.ts.map +1 -0
  94. package/dist/services/zenodo/zenodo-service.js +392 -0
  95. package/dist/services/zenodo/zenodo-service.js.map +1 -0
  96. package/package.json +110 -0
  97. package/server.json +113 -0
@@ -0,0 +1,151 @@
1
+ /**
2
+ * @fileoverview Text-preview rules for file reads: which files are previewable,
3
+ * which are read and sniffed, the fence language hint, and the byte cut that keeps
4
+ * continuation windows on line or character boundaries.
5
+ * @module services/zenodo/text-preview
6
+ */
7
+ const PREVIEWABLE_MIMETYPES = new Set([
8
+ 'application/json',
9
+ 'application/ld+json',
10
+ 'application/geo+json',
11
+ 'application/xml',
12
+ 'application/x-yaml',
13
+ 'application/yaml',
14
+ 'application/x-ipynb+json',
15
+ 'application/x-tex',
16
+ 'application/x-sh',
17
+ 'application/javascript',
18
+ ]);
19
+ const PREVIEWABLE_EXTENSIONS = new Set('md markdown txt text csv tsv tab json jsonl ndjson geojson yaml yml xml cff bib ris rst tex py r rmd ipynb jl m sh sql toml ini cfg conf log html htm js ts c h cpp java go rs do sas'.split(' '));
20
+ /** Lowercased extension of the last path segment, without the dot; `''` when none. */
21
+ export function extensionOf(key) {
22
+ const name = key.slice(key.lastIndexOf('/') + 1);
23
+ const dot = name.lastIndexOf('.');
24
+ return dot > 0 ? name.slice(dot + 1).toLowerCase() : '';
25
+ }
26
+ /** The mimetype without parameters, lowercased; `''` when absent. */
27
+ function baseMime(mimetype) {
28
+ return (mimetype ?? '').split(';')[0]?.trim().toLowerCase() ?? '';
29
+ }
30
+ /**
31
+ * True when a file is worth previewing as text: a `text/*` mimetype, one of the
32
+ * listed structured-text mimetypes, or a known text extension (CITATION.cff
33
+ * arrives as `application/octet-stream`, so the extension list is needed).
34
+ */
35
+ export function isPreviewable(key, mimetype) {
36
+ const mime = baseMime(mimetype);
37
+ return (mime.startsWith('text/') ||
38
+ PREVIEWABLE_MIMETYPES.has(mime) ||
39
+ PREVIEWABLE_EXTENSIONS.has(extensionOf(key)));
40
+ }
41
+ /** The {@link PreviewMode} of a file or ZIP member. */
42
+ export function previewMode(key, mimetype) {
43
+ if (isPreviewable(key, mimetype))
44
+ return 'text';
45
+ const mime = baseMime(mimetype);
46
+ return extensionOf(key) === '' && (mime === '' || mime === 'application/octet-stream')
47
+ ? 'sniff'
48
+ : 'binary';
49
+ }
50
+ /** Bytes at the head of a window that {@link looksLikeText} checks. */
51
+ const SNIFF_BYTES = 4096;
52
+ /**
53
+ * True when the head of a read window is UTF-8 text: its first {@link SNIFF_BYTES}
54
+ * bytes decode without error. A sequence cut by either edge of the window is
55
+ * allowed — at a positive offset the window may start mid-character, and the head
56
+ * ends wherever the sniff length falls. NUL bytes are checked separately
57
+ * ({@link cutPreview}).
58
+ */
59
+ export function looksLikeText(bytes, atStart) {
60
+ let start = 0;
61
+ if (!atStart)
62
+ while (start < 3 && ((bytes[start] ?? 0) & 0xc0) === 0x80)
63
+ start++;
64
+ const head = bytes.subarray(start, SNIFF_BYTES);
65
+ try {
66
+ new TextDecoder('utf-8', { fatal: true }).decode(head.subarray(0, lastCompleteUtf8Boundary(head)));
67
+ return true;
68
+ }
69
+ catch {
70
+ return false;
71
+ }
72
+ }
73
+ /** True when the key names a ZIP archive by extension or mimetype. */
74
+ export function isZip(key, mimetype) {
75
+ return extensionOf(key) === 'zip' || (mimetype ?? '').toLowerCase() === 'application/zip';
76
+ }
77
+ const LANGUAGE_HINTS = {
78
+ md: 'markdown',
79
+ markdown: 'markdown',
80
+ json: 'json',
81
+ jsonl: 'json',
82
+ ndjson: 'json',
83
+ geojson: 'json',
84
+ ipynb: 'json',
85
+ yaml: 'yaml',
86
+ yml: 'yaml',
87
+ cff: 'yaml',
88
+ xml: 'xml',
89
+ html: 'html',
90
+ htm: 'html',
91
+ csv: 'csv',
92
+ tsv: 'tsv',
93
+ py: 'python',
94
+ r: 'r',
95
+ rmd: 'markdown',
96
+ jl: 'julia',
97
+ sh: 'bash',
98
+ sql: 'sql',
99
+ toml: 'toml',
100
+ ini: 'ini',
101
+ js: 'javascript',
102
+ ts: 'typescript',
103
+ c: 'c',
104
+ h: 'c',
105
+ cpp: 'cpp',
106
+ java: 'java',
107
+ go: 'go',
108
+ rs: 'rust',
109
+ tex: 'latex',
110
+ bib: 'bibtex',
111
+ rst: 'rst',
112
+ };
113
+ /** Code-fence language hint for a file key; `''` when none applies. */
114
+ export function languageHint(key) {
115
+ return LANGUAGE_HINTS[extensionOf(key)] ?? '';
116
+ }
117
+ /** Index just past the last complete UTF-8 sequence in `bytes`. */
118
+ function lastCompleteUtf8Boundary(bytes) {
119
+ const end = bytes.length;
120
+ // Walk back over at most 3 continuation bytes to the lead byte.
121
+ for (let i = end - 1; i >= 0 && i >= end - 4; i--) {
122
+ const b = bytes[i];
123
+ if ((b & 0xc0) === 0x80)
124
+ continue;
125
+ const need = b >= 0xf0 ? 4 : b >= 0xe0 ? 3 : b >= 0xc0 ? 2 : 1;
126
+ return i + need <= end ? end : i;
127
+ }
128
+ return end;
129
+ }
130
+ /**
131
+ * Cuts a window of bytes for display. When more bytes remain past the window, the
132
+ * cut lands after the last `\n`, or — with no newline — after the last complete
133
+ * UTF-8 sequence. A NUL byte marks the buffer binary. A leading UTF-8 BOM is
134
+ * dropped from the text when the window starts at offset 0.
135
+ */
136
+ export function cutPreview(bytes, options) {
137
+ if (bytes.includes(0))
138
+ return { binary: true, bytesKept: 0, replacementChars: 0, text: '' };
139
+ let keep = bytes.length;
140
+ if (options.moreRemains) {
141
+ const newline = bytes.lastIndexOf(0x0a);
142
+ keep = newline >= 0 ? newline + 1 : lastCompleteUtf8Boundary(bytes);
143
+ }
144
+ const kept = bytes.subarray(0, keep);
145
+ let text = new TextDecoder('utf-8', { fatal: false, ignoreBOM: true }).decode(kept);
146
+ if (options.atStart && text.startsWith('\uFEFF'))
147
+ text = text.slice(1);
148
+ const replacementChars = text.match(/\uFFFD/g)?.length ?? 0;
149
+ return { binary: false, bytesKept: keep, replacementChars, text };
150
+ }
151
+ //# sourceMappingURL=text-preview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-preview.js","sourceRoot":"","sources":["../../../src/services/zenodo/text-preview.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC;IACpC,kBAAkB;IAClB,qBAAqB;IACrB,sBAAsB;IACtB,iBAAiB;IACjB,oBAAoB;IACpB,kBAAkB;IAClB,0BAA0B;IAC1B,mBAAmB;IACnB,kBAAkB;IAClB,wBAAwB;CACzB,CAAC,CAAC;AAEH,MAAM,sBAAsB,GAAG,IAAI,GAAG,CACpC,uLAAuL,CAAC,KAAK,CAC3L,GAAG,CACJ,CACF,CAAC;AAEF,sFAAsF;AACtF,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACjD,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAClC,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1D,CAAC;AAED,qEAAqE;AACrE,SAAS,QAAQ,CAAC,QAA4B;IAC5C,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;AACpE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,QAA4B;IACrE,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAChC,OAAO,CACL,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QACxB,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC;QAC/B,sBAAsB,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAC7C,CAAC;AACJ,CAAC;AAUD,uDAAuD;AACvD,MAAM,UAAU,WAAW,CAAC,GAAW,EAAE,QAA4B;IACnE,IAAI,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC;QAAE,OAAO,MAAM,CAAC;IAChD,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAChC,OAAO,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,0BAA0B,CAAC;QACpF,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,QAAQ,CAAC;AACf,CAAC;AAED,uEAAuE;AACvE,MAAM,WAAW,GAAG,IAAI,CAAC;AAEzB;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,KAAiB,EAAE,OAAgB;IAC/D,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI;YAAE,KAAK,EAAE,CAAC;IACjF,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAChD,IAAI,CAAC;QACH,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAC9C,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,wBAAwB,CAAC,IAAI,CAAC,CAAC,CACjD,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,KAAK,CAAC,GAAW,EAAE,QAA4B;IAC7D,OAAO,WAAW,CAAC,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,iBAAiB,CAAC;AAC5F,CAAC;AAED,MAAM,cAAc,GAA2B;IAC7C,EAAE,EAAE,UAAU;IACd,QAAQ,EAAE,UAAU;IACpB,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,MAAM;IACd,OAAO,EAAE,MAAM;IACf,KAAK,EAAE,MAAM;IACb,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,EAAE,EAAE,QAAQ;IACZ,CAAC,EAAE,GAAG;IACN,GAAG,EAAE,UAAU;IACf,EAAE,EAAE,OAAO;IACX,EAAE,EAAE,MAAM;IACV,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,KAAK;IACV,EAAE,EAAE,YAAY;IAChB,EAAE,EAAE,YAAY;IAChB,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;IACZ,EAAE,EAAE,IAAI;IACR,EAAE,EAAE,MAAM;IACV,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,KAAK;CACX,CAAC;AAEF,uEAAuE;AACvE,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,OAAO,cAAc,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAChD,CAAC;AAaD,mEAAmE;AACnE,SAAS,wBAAwB,CAAC,KAAiB;IACjD,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;IACzB,gEAAgE;IAChE,KAAK,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAClD,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAW,CAAC;QAC7B,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI;YAAE,SAAS;QAClC,MAAM,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CACxB,KAAiB,EACjB,OAAmD;IAEnD,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IAE5F,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC;IACxB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;IACtE,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACrC,IAAI,IAAI,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpF,IAAI,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvE,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC;IAC5D,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC;AACpE,CAAC"}
@@ -0,0 +1,517 @@
1
+ /**
2
+ * @fileoverview Raw Zenodo (InvenioRDM) response shapes and the normalized domain
3
+ * types the tools consume. Raw fields are optional unless verified always present:
4
+ * upstream omits fields rather than sending null, and old records are sparse.
5
+ * @module services/zenodo/types
6
+ */
7
+ /** Multilingual title/description map (`{ en: '…', de: '…' }`). */
8
+ export type RawI18n = Record<string, string | undefined>;
9
+ export interface RawIdentifier {
10
+ identifier?: string;
11
+ scheme?: string;
12
+ }
13
+ export interface RawVocabRef {
14
+ id?: string;
15
+ title?: RawI18n;
16
+ }
17
+ export interface RawPersonOrOrg {
18
+ family_name?: string;
19
+ given_name?: string;
20
+ identifiers?: RawIdentifier[];
21
+ name?: string;
22
+ type?: string;
23
+ }
24
+ export interface RawCreator {
25
+ affiliations?: {
26
+ id?: string;
27
+ name?: string;
28
+ }[];
29
+ person_or_org?: RawPersonOrOrg;
30
+ role?: RawVocabRef;
31
+ }
32
+ export interface RawFileEntry {
33
+ checksum?: string;
34
+ key?: string;
35
+ mimetype?: string;
36
+ size?: number;
37
+ }
38
+ export interface RawFiles {
39
+ count?: number;
40
+ enabled?: boolean;
41
+ entries?: Record<string, RawFileEntry>;
42
+ order?: string[];
43
+ total_bytes?: number;
44
+ }
45
+ export interface RawDoiPid {
46
+ identifier?: string;
47
+ provider?: string;
48
+ }
49
+ export interface RawCommunity {
50
+ id?: string;
51
+ metadata?: {
52
+ organizations?: {
53
+ id?: string;
54
+ name?: string;
55
+ }[];
56
+ title?: string;
57
+ type?: RawVocabRef;
58
+ website?: string;
59
+ };
60
+ slug?: string;
61
+ }
62
+ export interface RawFunding {
63
+ award?: {
64
+ acronym?: string;
65
+ id?: string;
66
+ identifiers?: RawIdentifier[];
67
+ number?: string;
68
+ program?: string;
69
+ title?: RawI18n;
70
+ };
71
+ funder?: {
72
+ id?: string;
73
+ name?: string;
74
+ };
75
+ }
76
+ export interface RawStatsBlock {
77
+ downloads?: number;
78
+ unique_downloads?: number;
79
+ unique_views?: number;
80
+ views?: number;
81
+ }
82
+ export interface RawRecord {
83
+ access?: {
84
+ embargo?: {
85
+ active?: boolean;
86
+ reason?: string | null;
87
+ until?: string;
88
+ };
89
+ files?: string;
90
+ record?: string;
91
+ status?: string;
92
+ };
93
+ custom_fields?: Record<string, unknown>;
94
+ files?: RawFiles;
95
+ id: string;
96
+ metadata?: {
97
+ additional_descriptions?: {
98
+ description?: string;
99
+ type?: RawVocabRef;
100
+ }[];
101
+ contributors?: RawCreator[];
102
+ creators?: RawCreator[];
103
+ description?: string;
104
+ funding?: RawFunding[];
105
+ publication_date?: string;
106
+ publisher?: string;
107
+ related_identifiers?: {
108
+ identifier?: string;
109
+ relation_type?: RawVocabRef;
110
+ resource_type?: RawVocabRef;
111
+ scheme?: string;
112
+ }[];
113
+ resource_type?: RawVocabRef;
114
+ rights?: {
115
+ id?: string;
116
+ props?: {
117
+ url?: string;
118
+ };
119
+ title?: RawI18n;
120
+ }[];
121
+ subjects?: {
122
+ subject?: string;
123
+ }[];
124
+ title?: string;
125
+ version?: string;
126
+ };
127
+ parent?: {
128
+ communities?: {
129
+ entries?: RawCommunity[];
130
+ };
131
+ id?: string;
132
+ pids?: {
133
+ doi?: RawDoiPid;
134
+ };
135
+ };
136
+ pids?: {
137
+ doi?: RawDoiPid;
138
+ oai?: {
139
+ identifier?: string;
140
+ };
141
+ };
142
+ revision_id?: number;
143
+ stats?: {
144
+ all_versions?: RawStatsBlock;
145
+ this_version?: RawStatsBlock;
146
+ };
147
+ versions?: {
148
+ index?: number;
149
+ is_latest?: boolean;
150
+ };
151
+ }
152
+ export interface RawTombstone {
153
+ citation_text?: string;
154
+ is_visible?: boolean;
155
+ note?: string;
156
+ removal_date?: string;
157
+ removal_reason?: {
158
+ id?: string;
159
+ };
160
+ }
161
+ export interface RawAggregationBucket {
162
+ doc_count?: number;
163
+ inner?: {
164
+ buckets?: RawAggregationBucket[];
165
+ };
166
+ key?: string | number;
167
+ label?: string;
168
+ }
169
+ export interface RawSearchResponse<T = RawRecord> {
170
+ aggregations?: Record<string, {
171
+ buckets?: RawAggregationBucket[];
172
+ }>;
173
+ hits?: {
174
+ hits?: T[];
175
+ total?: number;
176
+ };
177
+ }
178
+ export interface RawContainerEntry {
179
+ compressed_size?: number;
180
+ key?: string;
181
+ mimetype?: string;
182
+ size?: number;
183
+ }
184
+ export interface RawContainer {
185
+ directories?: unknown[];
186
+ entries?: RawContainerEntry[];
187
+ total?: number;
188
+ truncated?: boolean;
189
+ }
190
+ export interface RawFunder {
191
+ acronym?: string | null;
192
+ country?: string;
193
+ country_name?: string;
194
+ id?: string;
195
+ identifiers?: RawIdentifier[];
196
+ name?: string;
197
+ title?: RawI18n;
198
+ }
199
+ export interface RawAward {
200
+ acronym?: string;
201
+ end_date?: string;
202
+ funder?: {
203
+ id?: string;
204
+ name?: string;
205
+ };
206
+ id?: string;
207
+ identifiers?: RawIdentifier[];
208
+ number?: string;
209
+ program?: string;
210
+ start_date?: string;
211
+ title?: RawI18n;
212
+ }
213
+ export interface RawLicense {
214
+ id?: string;
215
+ props?: {
216
+ osi_approved?: string;
217
+ url?: string;
218
+ };
219
+ tags?: string[];
220
+ title?: RawI18n;
221
+ }
222
+ /** One top-level file in a record's manifest. */
223
+ export interface FileEntry {
224
+ download_url: string;
225
+ key: string;
226
+ md5?: string;
227
+ mimetype?: string;
228
+ size?: number;
229
+ }
230
+ export interface Affiliation {
231
+ name?: string;
232
+ ror?: string;
233
+ }
234
+ export interface Person {
235
+ affiliations: Affiliation[];
236
+ name: string;
237
+ orcid?: string;
238
+ role?: string;
239
+ type?: string;
240
+ }
241
+ export interface FundingEntry {
242
+ award_acronym?: string;
243
+ award_doi?: string;
244
+ award_id?: string;
245
+ award_number?: string;
246
+ award_program?: string;
247
+ award_title?: string;
248
+ award_url?: string;
249
+ funder_id?: string;
250
+ funder_name?: string;
251
+ }
252
+ export interface RelatedIdentifier {
253
+ identifier: string;
254
+ relation?: string;
255
+ resource_type?: string;
256
+ scheme?: string;
257
+ }
258
+ export interface RecordAccess {
259
+ embargo_active: boolean;
260
+ embargo_reason?: string;
261
+ embargo_until?: string;
262
+ files?: string;
263
+ record?: string;
264
+ status: string;
265
+ }
266
+ export interface UsageCounts {
267
+ downloads?: number;
268
+ views?: number;
269
+ }
270
+ /**
271
+ * A fully normalized record: complete lists and the complete file manifest, with
272
+ * descriptions converted to plain text. Tools apply their own display caps.
273
+ */
274
+ export interface ZenodoRecord {
275
+ access: RecordAccess;
276
+ additional_descriptions: {
277
+ text: string;
278
+ type?: string;
279
+ }[];
280
+ code_repository?: string;
281
+ communities: {
282
+ slug: string;
283
+ title?: string;
284
+ }[];
285
+ concept_doi?: string;
286
+ concept_recid?: string;
287
+ contributors: Person[];
288
+ creators: Person[];
289
+ description?: string;
290
+ doi?: string;
291
+ doi_provider?: string;
292
+ files: {
293
+ count?: number;
294
+ enabled: boolean;
295
+ entries: FileEntry[];
296
+ total_bytes?: number;
297
+ };
298
+ funding: FundingEntry[];
299
+ keywords: string[];
300
+ oai_id?: string;
301
+ publication_date?: string;
302
+ publisher?: string;
303
+ recid: string;
304
+ related_identifiers: RelatedIdentifier[];
305
+ resource_type?: {
306
+ id: string;
307
+ title?: string;
308
+ };
309
+ revision?: number;
310
+ rights: {
311
+ id?: string;
312
+ title: string;
313
+ url?: string;
314
+ }[];
315
+ stats?: {
316
+ all_versions: UsageCounts;
317
+ this_version: UsageCounts;
318
+ };
319
+ title: string;
320
+ version?: string;
321
+ versions: {
322
+ index?: number;
323
+ is_latest?: boolean;
324
+ };
325
+ }
326
+ /** A deleted record's tombstone — the only data a removed record still serves. */
327
+ export interface Tombstone {
328
+ citation_text?: string;
329
+ note?: string;
330
+ removal_date?: string;
331
+ removal_reason?: string;
332
+ }
333
+ /** Outcome of a record GET. A miss is a result, not an error. */
334
+ export type RecordLookup = {
335
+ record: ZenodoRecord;
336
+ status: 'found';
337
+ } | {
338
+ status: 'not_found';
339
+ } | {
340
+ status: 'restricted';
341
+ } | {
342
+ status: 'deleted';
343
+ tombstone: Tombstone;
344
+ };
345
+ /** One search hit, file manifest stripped. */
346
+ export interface RecordSummary {
347
+ access: {
348
+ embargo_until?: string;
349
+ files?: string;
350
+ status: string;
351
+ };
352
+ communities: string[];
353
+ concept_doi?: string;
354
+ concept_recid?: string;
355
+ creator_count: number;
356
+ creators: {
357
+ name: string;
358
+ orcid?: string;
359
+ }[];
360
+ description_snippet?: string;
361
+ doi?: string;
362
+ doi_provider?: string;
363
+ downloads?: number;
364
+ file_count?: number;
365
+ is_latest?: boolean;
366
+ license_ids: string[];
367
+ publication_date?: string;
368
+ recid: string;
369
+ resource_type?: {
370
+ id: string;
371
+ title?: string;
372
+ };
373
+ title: string;
374
+ total_bytes?: number;
375
+ version?: string;
376
+ version_index?: number;
377
+ views?: number;
378
+ zenodo_url: string;
379
+ }
380
+ export interface FacetBucket {
381
+ count: number;
382
+ id: string;
383
+ label: string;
384
+ }
385
+ export interface SearchFacets {
386
+ access_status: FacetBucket[];
387
+ file_type: FacetBucket[];
388
+ publication_year: {
389
+ count: number;
390
+ year: string;
391
+ }[];
392
+ resource_type: (FacetBucket & {
393
+ subtypes?: FacetBucket[];
394
+ })[];
395
+ subject: {
396
+ count: number;
397
+ label: string;
398
+ }[];
399
+ }
400
+ export interface SearchPage {
401
+ facets: SearchFacets;
402
+ hits: RecordSummary[];
403
+ total: number;
404
+ }
405
+ /** One version in a version series. */
406
+ export interface VersionSummary {
407
+ doi?: string;
408
+ downloads?: number;
409
+ file_count?: number;
410
+ index?: number;
411
+ is_latest?: boolean;
412
+ publication_date?: string;
413
+ recid: string;
414
+ title: string;
415
+ total_bytes?: number;
416
+ version?: string;
417
+ views?: number;
418
+ }
419
+ export type VersionsLookup = {
420
+ /** Concept record id of the series, from the first hit's `parent`. */
421
+ concept_recid?: string;
422
+ /** Concept DOI of the series, from the first hit's `parent`. */
423
+ concept_doi?: string;
424
+ hits: VersionSummary[];
425
+ status: 'ok';
426
+ total: number;
427
+ }
428
+ /** `/versions` answered 404, 403, or 410: the id names no listable series. */
429
+ | {
430
+ status: 'not_found';
431
+ };
432
+ export interface ContainerMember {
433
+ compressed_size?: number;
434
+ mimetype?: string;
435
+ path: string;
436
+ size?: number;
437
+ }
438
+ /** A ZIP listing as Zenodo serves it (capped at 1,000 nodes upstream). */
439
+ export interface ContainerListing {
440
+ directory_count: number;
441
+ members: ContainerMember[];
442
+ total?: number;
443
+ upstream_truncated: boolean;
444
+ }
445
+ export type ContainerLookup = {
446
+ listing: ContainerListing;
447
+ status: 'ok';
448
+ } | {
449
+ status: 'not_found';
450
+ };
451
+ /** Result of a byte-capped content read. */
452
+ export interface ContentRead {
453
+ bytes: Uint8Array;
454
+ /** Total file size from `Content-Range`, when upstream sent one. */
455
+ fileSize?: number;
456
+ /** True when bytes remain past the returned window. */
457
+ moreRemains: boolean;
458
+ status: 'ok' | 'forbidden' | 'not_found' | 'range_not_satisfiable';
459
+ }
460
+ export interface CommunityEntry {
461
+ community_type?: string;
462
+ organizations: string[];
463
+ slug: string;
464
+ title?: string;
465
+ uuid: string;
466
+ website?: string;
467
+ }
468
+ export interface FunderEntry {
469
+ acronym?: string;
470
+ country?: string;
471
+ country_name?: string;
472
+ funder_doi?: string;
473
+ name?: string;
474
+ ror_id: string;
475
+ }
476
+ export interface AwardEntry {
477
+ acronym?: string;
478
+ award_doi?: string;
479
+ award_url?: string;
480
+ end_date?: string;
481
+ funder_id?: string;
482
+ funder_name?: string;
483
+ id: string;
484
+ number?: string;
485
+ program?: string;
486
+ start_date?: string;
487
+ title?: string;
488
+ }
489
+ export interface LicenseEntry {
490
+ id: string;
491
+ osi_approved?: boolean;
492
+ tags: string[];
493
+ title?: string;
494
+ url?: string;
495
+ }
496
+ /** Vocabularies served by the upstream API (resource types are a static table). */
497
+ export type RemoteVocabulary = 'communities' | 'funders' | 'awards' | 'licenses';
498
+ export type VocabularyPage = {
499
+ entries: CommunityEntry[];
500
+ total: number;
501
+ vocabulary: 'communities';
502
+ } | {
503
+ entries: FunderEntry[];
504
+ total: number;
505
+ vocabulary: 'funders';
506
+ } | {
507
+ entries: AwardEntry[];
508
+ total: number;
509
+ vocabulary: 'awards';
510
+ } | {
511
+ entries: LicenseEntry[];
512
+ total: number;
513
+ vocabulary: 'licenses';
514
+ };
515
+ /** Citation formats the export endpoint serves. */
516
+ export type CitationStyle = 'bibtex' | 'csl-json' | 'apa' | 'chicago-author-date' | 'harvard-cite-them-right' | 'ieee' | 'modern-language-association' | 'nature';
517
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/zenodo/types.ts"],"names":[],"mappings":"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"}