@ncukondo/reference-manager 0.27.2 → 0.28.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 (76) hide show
  1. package/dist/chunks/{SearchableMultiSelect-0cyizees.js → SearchableMultiSelect-BVp72Ptt.js} +2 -2
  2. package/dist/chunks/{SearchableMultiSelect-0cyizees.js.map → SearchableMultiSelect-BVp72Ptt.js.map} +1 -1
  3. package/dist/chunks/{action-menu-Crcd5X1-.js → action-menu-BhuUnwdz.js} +3 -3
  4. package/dist/chunks/{action-menu-Crcd5X1-.js.map → action-menu-BhuUnwdz.js.map} +1 -1
  5. package/dist/chunks/{checker-gLAPe44T.js → checker-CP8vSC-S.js} +5 -5
  6. package/dist/chunks/{checker-gLAPe44T.js.map → checker-CP8vSC-S.js.map} +1 -1
  7. package/dist/chunks/{crossref-client-CXw0mw4n.js → crossref-client-C1HVx8LA.js} +2 -2
  8. package/dist/chunks/{crossref-client-CXw0mw4n.js.map → crossref-client-C1HVx8LA.js.map} +1 -1
  9. package/dist/chunks/{file-watcher-Dlx0PolG.js → file-watcher-CWHg1yol.js} +48 -2
  10. package/dist/chunks/file-watcher-CWHg1yol.js.map +1 -0
  11. package/dist/chunks/{fix-interaction-BCtx4Q9F.js → fix-interaction-pDdwGbp1.js} +5 -5
  12. package/dist/chunks/{fix-interaction-BCtx4Q9F.js.map → fix-interaction-pDdwGbp1.js.map} +1 -1
  13. package/dist/chunks/{index-SwsAKyQr.js → index-DM3Q5lW4.js} +3 -3
  14. package/dist/chunks/index-DM3Q5lW4.js.map +1 -0
  15. package/dist/chunks/{index-DkJT7s7N.js → index-Dk83ayti.js} +76 -55
  16. package/dist/chunks/index-Dk83ayti.js.map +1 -0
  17. package/dist/chunks/{index-BdLVfbj0.js → index-T-edKSzd.js} +198 -19
  18. package/dist/chunks/index-T-edKSzd.js.map +1 -0
  19. package/dist/chunks/{index-Cf5bYLrr.js → index-gwWeJC-c.js} +4 -4
  20. package/dist/chunks/{index-Cf5bYLrr.js.map → index-gwWeJC-c.js.map} +1 -1
  21. package/dist/chunks/{loader-B-fte1uv.js → loader-B6sytmQd.js} +2 -2
  22. package/dist/chunks/{loader-B-fte1uv.js.map → loader-B6sytmQd.js.map} +1 -1
  23. package/dist/chunks/{metadata-comparator-C5zfoYdK.js → metadata-comparator-DvqzC5tX.js} +5 -3
  24. package/dist/chunks/metadata-comparator-DvqzC5tX.js.map +1 -0
  25. package/dist/chunks/{pubmed-client-DH9y2tEZ.js → pubmed-client-DEo6eaH7.js} +2 -2
  26. package/dist/chunks/{pubmed-client-DH9y2tEZ.js.map → pubmed-client-DEo6eaH7.js.map} +1 -1
  27. package/dist/chunks/{reference-select-Ce9pG8cC.js → reference-select-9GUq-x2d.js} +4 -4
  28. package/dist/chunks/{reference-select-Ce9pG8cC.js.map → reference-select-9GUq-x2d.js.map} +1 -1
  29. package/dist/chunks/{style-select-AvDsSnlB.js → style-select-DvH9N4Jg.js} +3 -3
  30. package/dist/chunks/{style-select-AvDsSnlB.js.map → style-select-DvH9N4Jg.js.map} +1 -1
  31. package/dist/cli/commands/server.d.ts.map +1 -1
  32. package/dist/cli/completion.d.ts.map +1 -1
  33. package/dist/cli/index.d.ts.map +1 -1
  34. package/dist/cli.js +2 -2
  35. package/dist/core/csl-json/types.d.ts +67 -0
  36. package/dist/core/csl-json/types.d.ts.map +1 -1
  37. package/dist/features/attachments/types.d.ts +8 -16
  38. package/dist/features/attachments/types.d.ts.map +1 -1
  39. package/dist/features/check/metadata-similarity.d.ts +1 -0
  40. package/dist/features/check/metadata-similarity.d.ts.map +1 -1
  41. package/dist/features/duplicate/detector.d.ts.map +1 -1
  42. package/dist/features/duplicate/types.d.ts +2 -1
  43. package/dist/features/duplicate/types.d.ts.map +1 -1
  44. package/dist/features/format/citation-fallback.d.ts.map +1 -1
  45. package/dist/features/format/pretty.d.ts.map +1 -1
  46. package/dist/features/format/resource-indicators.d.ts.map +1 -1
  47. package/dist/features/import/cache.d.ts +7 -1
  48. package/dist/features/import/cache.d.ts.map +1 -1
  49. package/dist/features/import/detector.d.ts +15 -2
  50. package/dist/features/import/detector.d.ts.map +1 -1
  51. package/dist/features/import/fetcher.d.ts +7 -0
  52. package/dist/features/import/fetcher.d.ts.map +1 -1
  53. package/dist/features/import/importer.d.ts.map +1 -1
  54. package/dist/features/import/normalizer.d.ts +16 -0
  55. package/dist/features/import/normalizer.d.ts.map +1 -1
  56. package/dist/features/import/rate-limiter.d.ts +1 -1
  57. package/dist/features/import/rate-limiter.d.ts.map +1 -1
  58. package/dist/features/operations/attachments/get.d.ts.map +1 -1
  59. package/dist/features/operations/attachments/list.d.ts.map +1 -1
  60. package/dist/features/operations/attachments/open.d.ts.map +1 -1
  61. package/dist/features/operations/fulltext/convert.d.ts.map +1 -1
  62. package/dist/features/operations/fulltext/detach.d.ts.map +1 -1
  63. package/dist/features/operations/fulltext/discover.d.ts.map +1 -1
  64. package/dist/features/operations/fulltext/fetch.d.ts.map +1 -1
  65. package/dist/features/operations/fulltext/get.d.ts.map +1 -1
  66. package/dist/features/operations/fulltext/open.d.ts.map +1 -1
  67. package/dist/features/operations/remove.d.ts.map +1 -1
  68. package/dist/features/search/matcher.d.ts.map +1 -1
  69. package/dist/index.js +3 -3
  70. package/dist/server.js +2 -2
  71. package/package.json +1 -1
  72. package/dist/chunks/file-watcher-Dlx0PolG.js.map +0 -1
  73. package/dist/chunks/index-BdLVfbj0.js.map +0 -1
  74. package/dist/chunks/index-DkJT7s7N.js.map +0 -1
  75. package/dist/chunks/index-SwsAKyQr.js.map +0 -1
  76. package/dist/chunks/metadata-comparator-C5zfoYdK.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"pubmed-client-DH9y2tEZ.js","sources":["../../src/features/check/pubmed-client.ts"],"sourcesContent":["import { getRateLimiter } from \"../import/rate-limiter.js\";\n\nconst PUBMED_ESUMMARY_BASE = \"https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi\";\n\nexport type PubmedResult =\n | { success: true; isRetracted: boolean; hasConcern: boolean }\n | { success: false; error: string };\n\n/**\n * Build PubMed E-utilities esummary URL.\n */\nfunction buildEsummaryUrl(pmid: string, config?: { email?: string; apiKey?: string }): string {\n const url = new URL(PUBMED_ESUMMARY_BASE);\n url.searchParams.set(\"db\", \"pubmed\");\n url.searchParams.set(\"id\", pmid);\n url.searchParams.set(\"retmode\", \"json\");\n if (config?.email) {\n url.searchParams.set(\"email\", config.email);\n }\n if (config?.apiKey) {\n url.searchParams.set(\"api_key\", config.apiKey);\n }\n return url.toString();\n}\n\n/**\n * Query PubMed E-utilities for publication status of a PMID.\n *\n * @param pmid - The PubMed ID to query\n * @param config - Optional PubMed config (email, apiKey)\n * @returns PubMed result with retraction status\n */\nexport async function queryPubmed(\n pmid: string,\n config?: { email?: string; apiKey?: string }\n): Promise<PubmedResult> {\n const rateLimiterConfig = config?.apiKey ? { pubmedApiKey: config.apiKey } : {};\n const rateLimiter = getRateLimiter(\"pubmed\", rateLimiterConfig);\n await rateLimiter.acquire();\n\n try {\n const url = buildEsummaryUrl(pmid, config);\n const response = await fetch(url);\n\n if (!response.ok) {\n return {\n success: false,\n error: `PubMed API returned ${response.status} ${response.statusText}`,\n };\n }\n\n const data = (await response.json()) as Record<string, unknown>;\n const resultObj = data.result as Record<string, unknown> | undefined;\n const articleData = resultObj?.[pmid] as Record<string, unknown> | undefined;\n\n if (!articleData) {\n return { success: true, isRetracted: false, hasConcern: false };\n }\n\n const pubTypes = (articleData.pubtype ?? []) as string[];\n const isRetracted = pubTypes.some(\n (t) => t === \"Retracted Publication\" || t === \"Retraction of Publication\"\n );\n const hasConcern = pubTypes.some((t) => t === \"Expression of Concern\");\n\n return { success: true, isRetracted, hasConcern };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : String(error),\n };\n }\n}\n"],"names":[],"mappings":";AAEA,MAAM,uBAAuB;AAS7B,SAAS,iBAAiB,MAAc,QAAsD;AAC5F,QAAM,MAAM,IAAI,IAAI,oBAAoB;AACxC,MAAI,aAAa,IAAI,MAAM,QAAQ;AACnC,MAAI,aAAa,IAAI,MAAM,IAAI;AAC/B,MAAI,aAAa,IAAI,WAAW,MAAM;AACtC,MAAI,QAAQ,OAAO;AACjB,QAAI,aAAa,IAAI,SAAS,OAAO,KAAK;AAAA,EAC5C;AACA,MAAI,QAAQ,QAAQ;AAClB,QAAI,aAAa,IAAI,WAAW,OAAO,MAAM;AAAA,EAC/C;AACA,SAAO,IAAI,SAAA;AACb;AASA,eAAsB,YACpB,MACA,QACuB;AACvB,QAAM,oBAAoB,QAAQ,SAAS,EAAE,cAAc,OAAO,OAAA,IAAW,CAAA;AAC7E,QAAM,cAAc,eAAe,UAAU,iBAAiB;AAC9D,QAAM,YAAY,QAAA;AAElB,MAAI;AACF,UAAM,MAAM,iBAAiB,MAAM,MAAM;AACzC,UAAM,WAAW,MAAM,MAAM,GAAG;AAEhC,QAAI,CAAC,SAAS,IAAI;AAChB,aAAO;AAAA,QACL,SAAS;AAAA,QACT,OAAO,uBAAuB,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,MAAA;AAAA,IAExE;AAEA,UAAM,OAAQ,MAAM,SAAS,KAAA;AAC7B,UAAM,YAAY,KAAK;AACvB,UAAM,cAAc,YAAY,IAAI;AAEpC,QAAI,CAAC,aAAa;AAChB,aAAO,EAAE,SAAS,MAAM,aAAa,OAAO,YAAY,MAAA;AAAA,IAC1D;AAEA,UAAM,WAAY,YAAY,WAAW,CAAA;AACzC,UAAM,cAAc,SAAS;AAAA,MAC3B,CAAC,MAAM,MAAM,2BAA2B,MAAM;AAAA,IAAA;AAEhD,UAAM,aAAa,SAAS,KAAK,CAAC,MAAM,MAAM,uBAAuB;AAErE,WAAO,EAAE,SAAS,MAAM,aAAa,WAAA;AAAA,EACvC,SAAS,OAAO;AACd,WAAO;AAAA,MACL,SAAS;AAAA,MACT,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,IAAA;AAAA,EAEhE;AACF;"}
1
+ {"version":3,"file":"pubmed-client-DEo6eaH7.js","sources":["../../src/features/check/pubmed-client.ts"],"sourcesContent":["import { getRateLimiter } from \"../import/rate-limiter.js\";\n\nconst PUBMED_ESUMMARY_BASE = \"https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi\";\n\nexport type PubmedResult =\n | { success: true; isRetracted: boolean; hasConcern: boolean }\n | { success: false; error: string };\n\n/**\n * Build PubMed E-utilities esummary URL.\n */\nfunction buildEsummaryUrl(pmid: string, config?: { email?: string; apiKey?: string }): string {\n const url = new URL(PUBMED_ESUMMARY_BASE);\n url.searchParams.set(\"db\", \"pubmed\");\n url.searchParams.set(\"id\", pmid);\n url.searchParams.set(\"retmode\", \"json\");\n if (config?.email) {\n url.searchParams.set(\"email\", config.email);\n }\n if (config?.apiKey) {\n url.searchParams.set(\"api_key\", config.apiKey);\n }\n return url.toString();\n}\n\n/**\n * Query PubMed E-utilities for publication status of a PMID.\n *\n * @param pmid - The PubMed ID to query\n * @param config - Optional PubMed config (email, apiKey)\n * @returns PubMed result with retraction status\n */\nexport async function queryPubmed(\n pmid: string,\n config?: { email?: string; apiKey?: string }\n): Promise<PubmedResult> {\n const rateLimiterConfig = config?.apiKey ? { pubmedApiKey: config.apiKey } : {};\n const rateLimiter = getRateLimiter(\"pubmed\", rateLimiterConfig);\n await rateLimiter.acquire();\n\n try {\n const url = buildEsummaryUrl(pmid, config);\n const response = await fetch(url);\n\n if (!response.ok) {\n return {\n success: false,\n error: `PubMed API returned ${response.status} ${response.statusText}`,\n };\n }\n\n const data = (await response.json()) as Record<string, unknown>;\n const resultObj = data.result as Record<string, unknown> | undefined;\n const articleData = resultObj?.[pmid] as Record<string, unknown> | undefined;\n\n if (!articleData) {\n return { success: true, isRetracted: false, hasConcern: false };\n }\n\n const pubTypes = (articleData.pubtype ?? []) as string[];\n const isRetracted = pubTypes.some(\n (t) => t === \"Retracted Publication\" || t === \"Retraction of Publication\"\n );\n const hasConcern = pubTypes.some((t) => t === \"Expression of Concern\");\n\n return { success: true, isRetracted, hasConcern };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : String(error),\n };\n }\n}\n"],"names":[],"mappings":";AAEA,MAAM,uBAAuB;AAS7B,SAAS,iBAAiB,MAAc,QAAsD;AAC5F,QAAM,MAAM,IAAI,IAAI,oBAAoB;AACxC,MAAI,aAAa,IAAI,MAAM,QAAQ;AACnC,MAAI,aAAa,IAAI,MAAM,IAAI;AAC/B,MAAI,aAAa,IAAI,WAAW,MAAM;AACtC,MAAI,QAAQ,OAAO;AACjB,QAAI,aAAa,IAAI,SAAS,OAAO,KAAK;AAAA,EAC5C;AACA,MAAI,QAAQ,QAAQ;AAClB,QAAI,aAAa,IAAI,WAAW,OAAO,MAAM;AAAA,EAC/C;AACA,SAAO,IAAI,SAAA;AACb;AASA,eAAsB,YACpB,MACA,QACuB;AACvB,QAAM,oBAAoB,QAAQ,SAAS,EAAE,cAAc,OAAO,OAAA,IAAW,CAAA;AAC7E,QAAM,cAAc,eAAe,UAAU,iBAAiB;AAC9D,QAAM,YAAY,QAAA;AAElB,MAAI;AACF,UAAM,MAAM,iBAAiB,MAAM,MAAM;AACzC,UAAM,WAAW,MAAM,MAAM,GAAG;AAEhC,QAAI,CAAC,SAAS,IAAI;AAChB,aAAO;AAAA,QACL,SAAS;AAAA,QACT,OAAO,uBAAuB,SAAS,MAAM,IAAI,SAAS,UAAU;AAAA,MAAA;AAAA,IAExE;AAEA,UAAM,OAAQ,MAAM,SAAS,KAAA;AAC7B,UAAM,YAAY,KAAK;AACvB,UAAM,cAAc,YAAY,IAAI;AAEpC,QAAI,CAAC,aAAa;AAChB,aAAO,EAAE,SAAS,MAAM,aAAa,OAAO,YAAY,MAAA;AAAA,IAC1D;AAEA,UAAM,WAAY,YAAY,WAAW,CAAA;AACzC,UAAM,cAAc,SAAS;AAAA,MAC3B,CAAC,MAAM,MAAM,2BAA2B,MAAM;AAAA,IAAA;AAEhD,UAAM,aAAa,SAAS,KAAK,CAAC,MAAM,MAAM,uBAAuB;AAErE,WAAO,EAAE,SAAS,MAAM,aAAa,WAAA;AAAA,EACvC,SAAS,OAAO;AACd,WAAO;AAAA,MACL,SAAS;AAAA,MACT,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,IAAA;AAAA,EAEhE;AACF;"}
@@ -1,8 +1,8 @@
1
- import { t as tokenize, s as search } from "./file-watcher-Dlx0PolG.js";
1
+ import { t as tokenize, s as search } from "./file-watcher-CWHg1yol.js";
2
2
  import { render, useApp } from "ink";
3
3
  import { createElement } from "react";
4
- import { r as restoreStdinAfterInk } from "./index-DkJT7s7N.js";
5
- import { t as toChoice, c as calculateEffectiveLimit, S as SearchableMultiSelect } from "./SearchableMultiSelect-0cyizees.js";
4
+ import { r as restoreStdinAfterInk } from "./index-Dk83ayti.js";
5
+ import { t as toChoice, c as calculateEffectiveLimit, S as SearchableMultiSelect } from "./SearchableMultiSelect-BVp72Ptt.js";
6
6
  import { checkTTY } from "./tty-BMyaEOhX.js";
7
7
  function SearchPromptApp({
8
8
  choices,
@@ -126,4 +126,4 @@ export {
126
126
  selectReferenceItemsOrExit,
127
127
  selectReferencesOrExit
128
128
  };
129
- //# sourceMappingURL=reference-select-Ce9pG8cC.js.map
129
+ //# sourceMappingURL=reference-select-9GUq-x2d.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reference-select-Ce9pG8cC.js","sources":["../../src/features/interactive/search-prompt.ts","../../src/features/interactive/reference-select.ts"],"sourcesContent":["/**\n * Interactive search prompt using React Ink\n *\n * Provides real-time incremental search with multiple selection support.\n */\n\nimport { render, useApp } from \"ink\";\nimport type React from \"react\";\nimport { createElement } from \"react\";\nimport type { CslItem } from \"../../core/csl-json/types.js\";\nimport type { SearchResult } from \"../search/types.js\";\nimport { restoreStdinAfterInk } from \"./alternate-screen.js\";\nimport { toChoice } from \"./choice-builder.js\";\nimport {\n type Choice,\n SearchableMultiSelect,\n type SortOption,\n calculateEffectiveLimit,\n getTerminalHeight,\n getTerminalWidth,\n} from \"./components/index.js\";\n\n/**\n * Configuration for the search prompt\n */\nexport interface SearchPromptConfig {\n /** Maximum number of results to display */\n limit: number;\n /** Debounce delay in milliseconds (not used in Ink version, kept for API compatibility) */\n debounceMs: number;\n}\n\n/**\n * Search function type for filtering references\n */\nexport type SearchFunction = (query: string) => SearchResult[];\n\n/**\n * Result from the search prompt\n */\nexport interface SearchPromptResult {\n /** Selected references */\n selected: CslItem[];\n /** Whether the prompt was cancelled */\n cancelled: boolean;\n}\n\nexport { calculateEffectiveLimit, getTerminalHeight, getTerminalWidth };\n\n/**\n * Props for the SearchPromptApp component\n */\ninterface SearchPromptAppProps {\n choices: Choice<CslItem>[];\n filterFn: (query: string, choices: Choice<CslItem>[]) => Choice<CslItem>[];\n visibleCount: number;\n defaultSort: SortOption;\n onSubmit: (selected: Choice<CslItem>[]) => void;\n onCancel: () => void;\n}\n\n/**\n * SearchPromptApp component - wraps SearchableMultiSelect for search prompt\n */\nfunction SearchPromptApp({\n choices,\n filterFn,\n visibleCount,\n defaultSort,\n onSubmit,\n onCancel,\n}: SearchPromptAppProps): React.ReactElement {\n const { exit } = useApp();\n\n const handleSubmit = (selected: Choice<CslItem>[]): void => {\n onSubmit(selected);\n exit();\n };\n\n const handleCancel = (): void => {\n onCancel();\n exit();\n };\n\n return createElement(SearchableMultiSelect<CslItem>, {\n choices,\n filterFn,\n visibleCount,\n onSubmit: handleSubmit,\n onCancel: handleCancel,\n header: \"Search references\",\n placeholder: \"Type to search...\",\n defaultSort,\n });\n}\n\n/**\n * Creates and runs an interactive search prompt\n */\nexport async function runSearchPrompt(\n allReferences: CslItem[],\n searchFn: SearchFunction,\n config: SearchPromptConfig,\n _initialQuery = \"\" // kept for API compatibility, not used in Ink version\n): Promise<SearchPromptResult> {\n // Convert references to choices\n const choices = allReferences.map(toChoice);\n\n // Calculate effective visible count\n const effectiveLimit = calculateEffectiveLimit(config.limit);\n\n // Create filter function using the provided search function\n const filterFn = (query: string, choices: Choice<CslItem>[]): Choice<CslItem>[] => {\n if (!query.trim()) return choices;\n\n const results = searchFn(query);\n return results.map((r) => toChoice(r.reference));\n };\n\n // Create a promise to capture the result\n return new Promise<SearchPromptResult>((resolve) => {\n let result: SearchPromptResult = { selected: [], cancelled: true };\n\n const handleSubmit = (selected: Choice<CslItem>[]): void => {\n result = {\n selected: selected.map((c) => c.value),\n cancelled: false,\n };\n };\n\n const handleCancel = (): void => {\n result = {\n selected: [],\n cancelled: true,\n };\n };\n\n // Render the Ink app\n const { waitUntilExit, clear } = render(\n createElement(SearchPromptApp, {\n choices,\n filterFn,\n visibleCount: effectiveLimit,\n defaultSort: \"updated-desc\",\n onSubmit: handleSubmit,\n onCancel: handleCancel,\n })\n );\n\n // Wait for the app to exit, clear the screen, then resolve\n waitUntilExit()\n .then(() => {\n clear();\n restoreStdinAfterInk();\n resolve(result);\n })\n .catch(() => {\n clear();\n restoreStdinAfterInk();\n resolve({\n selected: [],\n cancelled: true,\n });\n });\n });\n}\n","/**\n * Shared reference selection utility for interactive ID selection.\n *\n * This module provides a reusable function to select references interactively\n * using the existing search prompt infrastructure.\n */\n\nimport type { CslItem } from \"../../core/csl-json/types.js\";\nimport { search } from \"../search/matcher.js\";\nimport { tokenize } from \"../search/tokenizer.js\";\nimport { type SearchPromptConfig, runSearchPrompt } from \"./search-prompt.js\";\nimport { checkTTY } from \"./tty.js\";\n\n/**\n * Options for reference selection\n */\nexport interface ReferenceSelectOptions {\n /** Whether to allow multiple selection (default: true) */\n multiSelect: boolean;\n /** Custom prompt message */\n prompt?: string;\n /** Initial search query */\n initialQuery?: string;\n}\n\n/**\n * Result from reference selection\n */\nexport interface ReferenceSelectResult {\n /** Selected references */\n selected: CslItem[];\n /** Whether the selection was cancelled */\n cancelled: boolean;\n}\n\n/**\n * Run interactive reference selection.\n *\n * Launches an interactive search prompt to select references from the library.\n * Supports both single and multiple selection modes.\n *\n * @param allReferences - All references available for selection\n * @param options - Selection options\n * @param config - Interactive prompt configuration\n * @returns Selection result with selected references\n * @throws TTYError if not running in a TTY environment\n */\nexport async function runReferenceSelect(\n allReferences: CslItem[],\n options: ReferenceSelectOptions,\n config: SearchPromptConfig\n): Promise<ReferenceSelectResult> {\n // Check TTY requirement\n checkTTY();\n\n // Create search function for runSearchPrompt\n const searchFn = (query: string) => {\n const { tokens } = tokenize(query);\n return search(allReferences, tokens);\n };\n\n // Run search prompt\n const searchResult = await runSearchPrompt(\n allReferences,\n searchFn,\n config,\n options.initialQuery ?? \"\"\n );\n\n if (searchResult.cancelled) {\n return { selected: [], cancelled: true };\n }\n\n // For single-select mode, return only the first selected item\n const selected = options.multiSelect ? searchResult.selected : searchResult.selected.slice(0, 1);\n\n return {\n selected,\n cancelled: false,\n };\n}\n\n/**\n * Options for selectReferencesOrExit helper\n */\nexport interface SelectReferencesOrExitOptions {\n /** Whether to allow multiple selection */\n multiSelect: boolean;\n /** Initial search query */\n initialQuery?: string;\n}\n\n/**\n * Select references interactively or exit if cancelled/empty.\n *\n * This is a convenience wrapper around runReferenceSelect that handles\n * common patterns:\n * - Exits with code 0 if library is empty\n * - Exits with code 0 if selection is cancelled\n * - Returns selected identifiers\n *\n * @param allReferences - All references available for selection\n * @param options - Selection options\n * @param config - Interactive prompt configuration\n * @returns Array of selected reference IDs (never empty)\n */\nexport async function selectReferencesOrExit(\n allReferences: CslItem[],\n options: SelectReferencesOrExitOptions,\n config: SearchPromptConfig\n): Promise<string[]> {\n if (allReferences.length === 0) {\n process.stderr.write(\"No references in library.\\n\");\n process.exit(0);\n }\n\n const selectResult = await runReferenceSelect(allReferences, options, config);\n\n if (selectResult.cancelled || selectResult.selected.length === 0) {\n process.exit(0);\n }\n\n return selectResult.selected.map((item) => item.id);\n}\n\n/**\n * Select reference items interactively or exit if cancelled/empty.\n *\n * Similar to selectReferencesOrExit but returns full CslItem objects\n * instead of just identifiers. Useful when the caller needs access to\n * the full reference data (e.g., for confirmation dialogs).\n *\n * @param allReferences - All references available for selection\n * @param options - Selection options\n * @param config - Interactive prompt configuration\n * @returns Array of selected CslItem objects (never empty)\n */\nexport async function selectReferenceItemsOrExit(\n allReferences: CslItem[],\n options: SelectReferencesOrExitOptions,\n config: SearchPromptConfig\n): Promise<CslItem[]> {\n if (allReferences.length === 0) {\n process.stderr.write(\"No references in library.\\n\");\n process.exit(0);\n }\n\n const selectResult = await runReferenceSelect(allReferences, options, config);\n\n if (selectResult.cancelled || selectResult.selected.length === 0) {\n process.exit(0);\n }\n\n return selectResult.selected;\n}\n"],"names":["choices"],"mappings":"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"}
1
+ {"version":3,"file":"reference-select-9GUq-x2d.js","sources":["../../src/features/interactive/search-prompt.ts","../../src/features/interactive/reference-select.ts"],"sourcesContent":["/**\n * Interactive search prompt using React Ink\n *\n * Provides real-time incremental search with multiple selection support.\n */\n\nimport { render, useApp } from \"ink\";\nimport type React from \"react\";\nimport { createElement } from \"react\";\nimport type { CslItem } from \"../../core/csl-json/types.js\";\nimport type { SearchResult } from \"../search/types.js\";\nimport { restoreStdinAfterInk } from \"./alternate-screen.js\";\nimport { toChoice } from \"./choice-builder.js\";\nimport {\n type Choice,\n SearchableMultiSelect,\n type SortOption,\n calculateEffectiveLimit,\n getTerminalHeight,\n getTerminalWidth,\n} from \"./components/index.js\";\n\n/**\n * Configuration for the search prompt\n */\nexport interface SearchPromptConfig {\n /** Maximum number of results to display */\n limit: number;\n /** Debounce delay in milliseconds (not used in Ink version, kept for API compatibility) */\n debounceMs: number;\n}\n\n/**\n * Search function type for filtering references\n */\nexport type SearchFunction = (query: string) => SearchResult[];\n\n/**\n * Result from the search prompt\n */\nexport interface SearchPromptResult {\n /** Selected references */\n selected: CslItem[];\n /** Whether the prompt was cancelled */\n cancelled: boolean;\n}\n\nexport { calculateEffectiveLimit, getTerminalHeight, getTerminalWidth };\n\n/**\n * Props for the SearchPromptApp component\n */\ninterface SearchPromptAppProps {\n choices: Choice<CslItem>[];\n filterFn: (query: string, choices: Choice<CslItem>[]) => Choice<CslItem>[];\n visibleCount: number;\n defaultSort: SortOption;\n onSubmit: (selected: Choice<CslItem>[]) => void;\n onCancel: () => void;\n}\n\n/**\n * SearchPromptApp component - wraps SearchableMultiSelect for search prompt\n */\nfunction SearchPromptApp({\n choices,\n filterFn,\n visibleCount,\n defaultSort,\n onSubmit,\n onCancel,\n}: SearchPromptAppProps): React.ReactElement {\n const { exit } = useApp();\n\n const handleSubmit = (selected: Choice<CslItem>[]): void => {\n onSubmit(selected);\n exit();\n };\n\n const handleCancel = (): void => {\n onCancel();\n exit();\n };\n\n return createElement(SearchableMultiSelect<CslItem>, {\n choices,\n filterFn,\n visibleCount,\n onSubmit: handleSubmit,\n onCancel: handleCancel,\n header: \"Search references\",\n placeholder: \"Type to search...\",\n defaultSort,\n });\n}\n\n/**\n * Creates and runs an interactive search prompt\n */\nexport async function runSearchPrompt(\n allReferences: CslItem[],\n searchFn: SearchFunction,\n config: SearchPromptConfig,\n _initialQuery = \"\" // kept for API compatibility, not used in Ink version\n): Promise<SearchPromptResult> {\n // Convert references to choices\n const choices = allReferences.map(toChoice);\n\n // Calculate effective visible count\n const effectiveLimit = calculateEffectiveLimit(config.limit);\n\n // Create filter function using the provided search function\n const filterFn = (query: string, choices: Choice<CslItem>[]): Choice<CslItem>[] => {\n if (!query.trim()) return choices;\n\n const results = searchFn(query);\n return results.map((r) => toChoice(r.reference));\n };\n\n // Create a promise to capture the result\n return new Promise<SearchPromptResult>((resolve) => {\n let result: SearchPromptResult = { selected: [], cancelled: true };\n\n const handleSubmit = (selected: Choice<CslItem>[]): void => {\n result = {\n selected: selected.map((c) => c.value),\n cancelled: false,\n };\n };\n\n const handleCancel = (): void => {\n result = {\n selected: [],\n cancelled: true,\n };\n };\n\n // Render the Ink app\n const { waitUntilExit, clear } = render(\n createElement(SearchPromptApp, {\n choices,\n filterFn,\n visibleCount: effectiveLimit,\n defaultSort: \"updated-desc\",\n onSubmit: handleSubmit,\n onCancel: handleCancel,\n })\n );\n\n // Wait for the app to exit, clear the screen, then resolve\n waitUntilExit()\n .then(() => {\n clear();\n restoreStdinAfterInk();\n resolve(result);\n })\n .catch(() => {\n clear();\n restoreStdinAfterInk();\n resolve({\n selected: [],\n cancelled: true,\n });\n });\n });\n}\n","/**\n * Shared reference selection utility for interactive ID selection.\n *\n * This module provides a reusable function to select references interactively\n * using the existing search prompt infrastructure.\n */\n\nimport type { CslItem } from \"../../core/csl-json/types.js\";\nimport { search } from \"../search/matcher.js\";\nimport { tokenize } from \"../search/tokenizer.js\";\nimport { type SearchPromptConfig, runSearchPrompt } from \"./search-prompt.js\";\nimport { checkTTY } from \"./tty.js\";\n\n/**\n * Options for reference selection\n */\nexport interface ReferenceSelectOptions {\n /** Whether to allow multiple selection (default: true) */\n multiSelect: boolean;\n /** Custom prompt message */\n prompt?: string;\n /** Initial search query */\n initialQuery?: string;\n}\n\n/**\n * Result from reference selection\n */\nexport interface ReferenceSelectResult {\n /** Selected references */\n selected: CslItem[];\n /** Whether the selection was cancelled */\n cancelled: boolean;\n}\n\n/**\n * Run interactive reference selection.\n *\n * Launches an interactive search prompt to select references from the library.\n * Supports both single and multiple selection modes.\n *\n * @param allReferences - All references available for selection\n * @param options - Selection options\n * @param config - Interactive prompt configuration\n * @returns Selection result with selected references\n * @throws TTYError if not running in a TTY environment\n */\nexport async function runReferenceSelect(\n allReferences: CslItem[],\n options: ReferenceSelectOptions,\n config: SearchPromptConfig\n): Promise<ReferenceSelectResult> {\n // Check TTY requirement\n checkTTY();\n\n // Create search function for runSearchPrompt\n const searchFn = (query: string) => {\n const { tokens } = tokenize(query);\n return search(allReferences, tokens);\n };\n\n // Run search prompt\n const searchResult = await runSearchPrompt(\n allReferences,\n searchFn,\n config,\n options.initialQuery ?? \"\"\n );\n\n if (searchResult.cancelled) {\n return { selected: [], cancelled: true };\n }\n\n // For single-select mode, return only the first selected item\n const selected = options.multiSelect ? searchResult.selected : searchResult.selected.slice(0, 1);\n\n return {\n selected,\n cancelled: false,\n };\n}\n\n/**\n * Options for selectReferencesOrExit helper\n */\nexport interface SelectReferencesOrExitOptions {\n /** Whether to allow multiple selection */\n multiSelect: boolean;\n /** Initial search query */\n initialQuery?: string;\n}\n\n/**\n * Select references interactively or exit if cancelled/empty.\n *\n * This is a convenience wrapper around runReferenceSelect that handles\n * common patterns:\n * - Exits with code 0 if library is empty\n * - Exits with code 0 if selection is cancelled\n * - Returns selected identifiers\n *\n * @param allReferences - All references available for selection\n * @param options - Selection options\n * @param config - Interactive prompt configuration\n * @returns Array of selected reference IDs (never empty)\n */\nexport async function selectReferencesOrExit(\n allReferences: CslItem[],\n options: SelectReferencesOrExitOptions,\n config: SearchPromptConfig\n): Promise<string[]> {\n if (allReferences.length === 0) {\n process.stderr.write(\"No references in library.\\n\");\n process.exit(0);\n }\n\n const selectResult = await runReferenceSelect(allReferences, options, config);\n\n if (selectResult.cancelled || selectResult.selected.length === 0) {\n process.exit(0);\n }\n\n return selectResult.selected.map((item) => item.id);\n}\n\n/**\n * Select reference items interactively or exit if cancelled/empty.\n *\n * Similar to selectReferencesOrExit but returns full CslItem objects\n * instead of just identifiers. Useful when the caller needs access to\n * the full reference data (e.g., for confirmation dialogs).\n *\n * @param allReferences - All references available for selection\n * @param options - Selection options\n * @param config - Interactive prompt configuration\n * @returns Array of selected CslItem objects (never empty)\n */\nexport async function selectReferenceItemsOrExit(\n allReferences: CslItem[],\n options: SelectReferencesOrExitOptions,\n config: SearchPromptConfig\n): Promise<CslItem[]> {\n if (allReferences.length === 0) {\n process.stderr.write(\"No references in library.\\n\");\n process.exit(0);\n }\n\n const selectResult = await runReferenceSelect(allReferences, options, config);\n\n if (selectResult.cancelled || selectResult.selected.length === 0) {\n process.exit(0);\n }\n\n return selectResult.selected;\n}\n"],"names":["choices"],"mappings":"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"}
@@ -2,8 +2,8 @@ import * as fs from "node:fs";
2
2
  import * as path from "node:path";
3
3
  import "ink";
4
4
  import "react";
5
- import { B as BUILTIN_STYLES } from "./index-BdLVfbj0.js";
6
- import "./index-DkJT7s7N.js";
5
+ import { B as BUILTIN_STYLES } from "./index-T-edKSzd.js";
6
+ import "./index-Dk83ayti.js";
7
7
  function expandTilde(filePath) {
8
8
  if (filePath.startsWith("~/")) {
9
9
  const home = process.env.HOME || process.env.USERPROFILE || "";
@@ -58,4 +58,4 @@ export {
58
58
  buildStyleChoices,
59
59
  listCustomStyles
60
60
  };
61
- //# sourceMappingURL=style-select-AvDsSnlB.js.map
61
+ //# sourceMappingURL=style-select-DvH9N4Jg.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"style-select-AvDsSnlB.js","sources":["../../src/features/interactive/style-select.ts"],"sourcesContent":["/**\n * Style selection prompt for citation style selection.\n *\n * Lists built-in styles and custom styles from csl_directory,\n * with the default style shown first.\n */\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { render, useApp } from \"ink\";\nimport { createElement } from \"react\";\nimport type React from \"react\";\nimport { BUILTIN_STYLES } from \"../../config/csl-styles.js\";\nimport { restoreStdinAfterInk } from \"./alternate-screen.js\";\nimport { Select, type SelectOption } from \"./components/index.js\";\n\n/**\n * Options for style selection\n */\nexport interface StyleSelectOptions {\n /** Directory or directories containing custom CSL files */\n cslDirectory?: string | string[];\n /** Default style to show first */\n defaultStyle?: string;\n}\n\n/**\n * Result from style selection\n */\nexport interface StyleSelectResult {\n /** Selected style name */\n style?: string;\n /** Whether the selection was cancelled */\n cancelled: boolean;\n}\n\n/**\n * Expand tilde (~) in path to home directory\n */\nfunction expandTilde(filePath: string): string {\n if (filePath.startsWith(\"~/\")) {\n const home = process.env.HOME || process.env.USERPROFILE || \"\";\n return path.join(home, filePath.slice(2));\n }\n return filePath;\n}\n\n/**\n * List custom CSL style names from the specified directory/directories.\n *\n * @param cslDirectory - Directory or directories to search for CSL files\n * @returns Array of style names (without .csl extension)\n */\nexport function listCustomStyles(cslDirectory: string | string[] | undefined): string[] {\n if (!cslDirectory) {\n return [];\n }\n\n const directories = Array.isArray(cslDirectory) ? cslDirectory : [cslDirectory];\n const styles = new Set<string>();\n\n for (const dir of directories) {\n const expandedDir = expandTilde(dir);\n\n if (!fs.existsSync(expandedDir)) {\n continue;\n }\n\n try {\n const files = fs.readdirSync(expandedDir);\n for (const file of files) {\n if (file.endsWith(\".csl\")) {\n styles.add(file.slice(0, -4)); // Remove .csl extension\n }\n }\n } catch {\n // Ignore read errors\n }\n }\n\n return Array.from(styles).sort();\n}\n\n/**\n * Build style choices for the selection prompt.\n *\n * @param customStyles - Custom style names from csl_directory\n * @param defaultStyle - Default style to show first\n * @returns Array of SelectOption for Ink Select prompt\n */\nexport function buildStyleChoices(\n customStyles: string[],\n defaultStyle = \"apa\"\n): SelectOption<string>[] {\n const choices: SelectOption<string>[] = [];\n const addedStyles = new Set<string>();\n\n // Helper to add a style choice\n const addChoice = (styleName: string, isDefault: boolean): void => {\n if (addedStyles.has(styleName)) return;\n addedStyles.add(styleName);\n\n choices.push({\n label: isDefault ? `${styleName} (default)` : styleName,\n value: styleName,\n });\n };\n\n // Add default style first\n addChoice(defaultStyle, true);\n\n // Add built-in styles\n for (const style of BUILTIN_STYLES) {\n addChoice(style, false);\n }\n\n // Add custom styles (excluding any that match built-in names)\n for (const style of customStyles) {\n addChoice(style, false);\n }\n\n return choices;\n}\n\n/**\n * Props for the StyleSelectApp component\n */\ninterface StyleSelectAppProps {\n options: SelectOption<string>[];\n onSelect: (value: string) => void;\n onCancel: () => void;\n}\n\n/**\n * StyleSelectApp component - wraps Select for style selection\n */\nfunction StyleSelectApp({ options, onSelect, onCancel }: StyleSelectAppProps): React.ReactElement {\n const { exit } = useApp();\n\n const handleSelect = (value: string): void => {\n onSelect(value);\n exit();\n };\n\n const handleCancel = (): void => {\n onCancel();\n exit();\n };\n\n return createElement(Select<string>, {\n options,\n message: \"Select citation style:\",\n onSelect: handleSelect,\n onCancel: handleCancel,\n });\n}\n\n/**\n * Run the style selection prompt.\n *\n * @param options - Style selection options\n * @returns Selection result with style name\n */\nexport async function runStyleSelect(options: StyleSelectOptions): Promise<StyleSelectResult> {\n // List custom styles from csl_directory\n const customStyles = listCustomStyles(options.cslDirectory);\n\n // Build choices with default first\n const choices = buildStyleChoices(customStyles, options.defaultStyle);\n\n // Create a promise to capture the result\n return new Promise<StyleSelectResult>((resolve) => {\n let result: StyleSelectResult = { cancelled: true };\n\n const handleSelect = (value: string): void => {\n result = {\n style: value,\n cancelled: false,\n };\n };\n\n const handleCancel = (): void => {\n result = {\n cancelled: true,\n };\n };\n\n // Render the Ink app\n const { waitUntilExit, clear } = render(\n createElement(StyleSelectApp, {\n options: choices,\n onSelect: handleSelect,\n onCancel: handleCancel,\n })\n );\n\n // Wait for the app to exit, clear the screen, then resolve\n waitUntilExit()\n .then(() => {\n clear();\n restoreStdinAfterInk();\n resolve(result);\n })\n .catch(() => {\n clear();\n restoreStdinAfterInk();\n resolve({\n cancelled: true,\n });\n });\n });\n}\n"],"names":[],"mappings":";;;;;;AAuCA,SAAS,YAAY,UAA0B;AAC7C,MAAI,SAAS,WAAW,IAAI,GAAG;AAC7B,UAAM,OAAO,QAAQ,IAAI,QAAQ,QAAQ,IAAI,eAAe;AAC5D,WAAO,KAAK,KAAK,MAAM,SAAS,MAAM,CAAC,CAAC;AAAA,EAC1C;AACA,SAAO;AACT;AAQO,SAAS,iBAAiB,cAAuD;AACtF,MAAI,CAAC,cAAc;AACjB,WAAO,CAAA;AAAA,EACT;AAEA,QAAM,cAAc,MAAM,QAAQ,YAAY,IAAI,eAAe,CAAC,YAAY;AAC9E,QAAM,6BAAa,IAAA;AAEnB,aAAW,OAAO,aAAa;AAC7B,UAAM,cAAc,YAAY,GAAG;AAEnC,QAAI,CAAC,GAAG,WAAW,WAAW,GAAG;AAC/B;AAAA,IACF;AAEA,QAAI;AACF,YAAM,QAAQ,GAAG,YAAY,WAAW;AACxC,iBAAW,QAAQ,OAAO;AACxB,YAAI,KAAK,SAAS,MAAM,GAAG;AACzB,iBAAO,IAAI,KAAK,MAAM,GAAG,EAAE,CAAC;AAAA,QAC9B;AAAA,MACF;AAAA,IACF,QAAQ;AAAA,IAER;AAAA,EACF;AAEA,SAAO,MAAM,KAAK,MAAM,EAAE,KAAA;AAC5B;AASO,SAAS,kBACd,cACA,eAAe,OACS;AACxB,QAAM,UAAkC,CAAA;AACxC,QAAM,kCAAkB,IAAA;AAGxB,QAAM,YAAY,CAAC,WAAmB,cAA6B;AACjE,QAAI,YAAY,IAAI,SAAS,EAAG;AAChC,gBAAY,IAAI,SAAS;AAEzB,YAAQ,KAAK;AAAA,MACX,OAAO,YAAY,GAAG,SAAS,eAAe;AAAA,MAC9C,OAAO;AAAA,IAAA,CACR;AAAA,EACH;AAGA,YAAU,cAAc,IAAI;AAG5B,aAAW,SAAS,gBAAgB;AAClC,cAAU,OAAO,KAAK;AAAA,EACxB;AAGA,aAAW,SAAS,cAAc;AAChC,cAAU,OAAO,KAAK;AAAA,EACxB;AAEA,SAAO;AACT;"}
1
+ {"version":3,"file":"style-select-DvH9N4Jg.js","sources":["../../src/features/interactive/style-select.ts"],"sourcesContent":["/**\n * Style selection prompt for citation style selection.\n *\n * Lists built-in styles and custom styles from csl_directory,\n * with the default style shown first.\n */\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { render, useApp } from \"ink\";\nimport { createElement } from \"react\";\nimport type React from \"react\";\nimport { BUILTIN_STYLES } from \"../../config/csl-styles.js\";\nimport { restoreStdinAfterInk } from \"./alternate-screen.js\";\nimport { Select, type SelectOption } from \"./components/index.js\";\n\n/**\n * Options for style selection\n */\nexport interface StyleSelectOptions {\n /** Directory or directories containing custom CSL files */\n cslDirectory?: string | string[];\n /** Default style to show first */\n defaultStyle?: string;\n}\n\n/**\n * Result from style selection\n */\nexport interface StyleSelectResult {\n /** Selected style name */\n style?: string;\n /** Whether the selection was cancelled */\n cancelled: boolean;\n}\n\n/**\n * Expand tilde (~) in path to home directory\n */\nfunction expandTilde(filePath: string): string {\n if (filePath.startsWith(\"~/\")) {\n const home = process.env.HOME || process.env.USERPROFILE || \"\";\n return path.join(home, filePath.slice(2));\n }\n return filePath;\n}\n\n/**\n * List custom CSL style names from the specified directory/directories.\n *\n * @param cslDirectory - Directory or directories to search for CSL files\n * @returns Array of style names (without .csl extension)\n */\nexport function listCustomStyles(cslDirectory: string | string[] | undefined): string[] {\n if (!cslDirectory) {\n return [];\n }\n\n const directories = Array.isArray(cslDirectory) ? cslDirectory : [cslDirectory];\n const styles = new Set<string>();\n\n for (const dir of directories) {\n const expandedDir = expandTilde(dir);\n\n if (!fs.existsSync(expandedDir)) {\n continue;\n }\n\n try {\n const files = fs.readdirSync(expandedDir);\n for (const file of files) {\n if (file.endsWith(\".csl\")) {\n styles.add(file.slice(0, -4)); // Remove .csl extension\n }\n }\n } catch {\n // Ignore read errors\n }\n }\n\n return Array.from(styles).sort();\n}\n\n/**\n * Build style choices for the selection prompt.\n *\n * @param customStyles - Custom style names from csl_directory\n * @param defaultStyle - Default style to show first\n * @returns Array of SelectOption for Ink Select prompt\n */\nexport function buildStyleChoices(\n customStyles: string[],\n defaultStyle = \"apa\"\n): SelectOption<string>[] {\n const choices: SelectOption<string>[] = [];\n const addedStyles = new Set<string>();\n\n // Helper to add a style choice\n const addChoice = (styleName: string, isDefault: boolean): void => {\n if (addedStyles.has(styleName)) return;\n addedStyles.add(styleName);\n\n choices.push({\n label: isDefault ? `${styleName} (default)` : styleName,\n value: styleName,\n });\n };\n\n // Add default style first\n addChoice(defaultStyle, true);\n\n // Add built-in styles\n for (const style of BUILTIN_STYLES) {\n addChoice(style, false);\n }\n\n // Add custom styles (excluding any that match built-in names)\n for (const style of customStyles) {\n addChoice(style, false);\n }\n\n return choices;\n}\n\n/**\n * Props for the StyleSelectApp component\n */\ninterface StyleSelectAppProps {\n options: SelectOption<string>[];\n onSelect: (value: string) => void;\n onCancel: () => void;\n}\n\n/**\n * StyleSelectApp component - wraps Select for style selection\n */\nfunction StyleSelectApp({ options, onSelect, onCancel }: StyleSelectAppProps): React.ReactElement {\n const { exit } = useApp();\n\n const handleSelect = (value: string): void => {\n onSelect(value);\n exit();\n };\n\n const handleCancel = (): void => {\n onCancel();\n exit();\n };\n\n return createElement(Select<string>, {\n options,\n message: \"Select citation style:\",\n onSelect: handleSelect,\n onCancel: handleCancel,\n });\n}\n\n/**\n * Run the style selection prompt.\n *\n * @param options - Style selection options\n * @returns Selection result with style name\n */\nexport async function runStyleSelect(options: StyleSelectOptions): Promise<StyleSelectResult> {\n // List custom styles from csl_directory\n const customStyles = listCustomStyles(options.cslDirectory);\n\n // Build choices with default first\n const choices = buildStyleChoices(customStyles, options.defaultStyle);\n\n // Create a promise to capture the result\n return new Promise<StyleSelectResult>((resolve) => {\n let result: StyleSelectResult = { cancelled: true };\n\n const handleSelect = (value: string): void => {\n result = {\n style: value,\n cancelled: false,\n };\n };\n\n const handleCancel = (): void => {\n result = {\n cancelled: true,\n };\n };\n\n // Render the Ink app\n const { waitUntilExit, clear } = render(\n createElement(StyleSelectApp, {\n options: choices,\n onSelect: handleSelect,\n onCancel: handleCancel,\n })\n );\n\n // Wait for the app to exit, clear the screen, then resolve\n waitUntilExit()\n .then(() => {\n clear();\n restoreStdinAfterInk();\n resolve(result);\n })\n .catch(() => {\n clear();\n restoreStdinAfterInk();\n resolve({\n cancelled: true,\n });\n });\n });\n}\n"],"names":[],"mappings":";;;;;;AAuCA,SAAS,YAAY,UAA0B;AAC7C,MAAI,SAAS,WAAW,IAAI,GAAG;AAC7B,UAAM,OAAO,QAAQ,IAAI,QAAQ,QAAQ,IAAI,eAAe;AAC5D,WAAO,KAAK,KAAK,MAAM,SAAS,MAAM,CAAC,CAAC;AAAA,EAC1C;AACA,SAAO;AACT;AAQO,SAAS,iBAAiB,cAAuD;AACtF,MAAI,CAAC,cAAc;AACjB,WAAO,CAAA;AAAA,EACT;AAEA,QAAM,cAAc,MAAM,QAAQ,YAAY,IAAI,eAAe,CAAC,YAAY;AAC9E,QAAM,6BAAa,IAAA;AAEnB,aAAW,OAAO,aAAa;AAC7B,UAAM,cAAc,YAAY,GAAG;AAEnC,QAAI,CAAC,GAAG,WAAW,WAAW,GAAG;AAC/B;AAAA,IACF;AAEA,QAAI;AACF,YAAM,QAAQ,GAAG,YAAY,WAAW;AACxC,iBAAW,QAAQ,OAAO;AACxB,YAAI,KAAK,SAAS,MAAM,GAAG;AACzB,iBAAO,IAAI,KAAK,MAAM,GAAG,EAAE,CAAC;AAAA,QAC9B;AAAA,MACF;AAAA,IACF,QAAQ;AAAA,IAER;AAAA,EACF;AAEA,SAAO,MAAM,KAAK,MAAM,EAAE,KAAA;AAC5B;AASO,SAAS,kBACd,cACA,eAAe,OACS;AACxB,QAAM,UAAkC,CAAA;AACxC,QAAM,kCAAkB,IAAA;AAGxB,QAAM,YAAY,CAAC,WAAmB,cAA6B;AACjE,QAAI,YAAY,IAAI,SAAS,EAAG;AAChC,gBAAY,IAAI,SAAS;AAEzB,YAAQ,KAAK;AAAA,MACX,OAAO,YAAY,GAAG,SAAS,eAAe;AAAA,MAC9C,OAAO;AAAA,IAAA,CACR;AAAA,EACH;AAGA,YAAU,cAAc,IAAI;AAG5B,aAAW,SAAS,gBAAgB;AAClC,cAAU,OAAO,KAAK;AAAA,EACxB;AAGA,aAAW,SAAS,cAAc;AAChC,cAAU,OAAO,KAAK;AAAA,EACxB;AAEA,SAAO;AACT;"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/server.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAUrD,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAe5E;AA4ED;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYpE;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CA0BnF"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/server.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAUrD,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAe5E;AAoFD;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYpE;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CA0BnF"}
@@ -1 +1 @@
1
- {"version":3,"file":"completion.d.ts","sourceRoot":"","sources":["../../src/cli/completion.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAIxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAyC7D,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAU3D,CAAC;AAmDF;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,cAAc,EAAE,CAKrE;AAwBD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,cAAc,EAAE,CAMvE;AA0BD;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,cAAc,EAAE,CAkDjF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,SAAS,GAAG;IACjD,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC,CAwCA;AAKD;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CA4BhE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,EAAE,CAKxE;AAED,iDAAiD;AACjD,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAEtC;;;;GAIG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAc7E;AAYD;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,QAAQ,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,cAAc,EAAE,CAAC,CA+B3B;AAED;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAMvD;AAED;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAKzD;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAoCtE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgBhE"}
1
+ {"version":3,"file":"completion.d.ts","sourceRoot":"","sources":["../../src/cli/completion.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAIxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAkD7D,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAU3D,CAAC;AAmDF;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,cAAc,EAAE,CAKrE;AAwBD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,cAAc,EAAE,CAMvE;AA0BD;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,cAAc,EAAE,CAkDjF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,SAAS,GAAG;IACjD,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC,CAwCA;AAKD;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CA4BhE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,EAAE,CAKxE;AAED,iDAAiD;AACjD,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAEtC;;;;GAIG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAc7E;AAYD;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,QAAQ,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,cAAc,EAAE,CAAC,CA+B3B;AAED;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAMvD;AAED;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAKzD;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAoCtE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgBhE"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAiE5C;;GAEG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAiDvC;AAyyBD;;GAEG;AACH,wBAAsB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBxD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAiE5C;;GAEG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAiDvC;AA6yBD;;GAEG;AACH,wBAAsB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBxD"}
package/dist/cli.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import "commander";
2
- import { c, m } from "./chunks/index-DkJT7s7N.js";
3
- import "./chunks/file-watcher-Dlx0PolG.js";
2
+ import { c, m } from "./chunks/index-Dk83ayti.js";
3
+ import "./chunks/file-watcher-CWHg1yol.js";
4
4
  export {
5
5
  c as createProgram,
6
6
  m as main
@@ -1,10 +1,41 @@
1
1
  import { z } from "zod";
2
+ export declare const AttachmentFileSchema: z.ZodObject<{
3
+ filename: z.ZodString;
4
+ role: z.ZodString;
5
+ label: z.ZodOptional<z.ZodString>;
6
+ }, z.core.$strip>;
7
+ export declare const AttachmentsSchema: z.ZodObject<{
8
+ directory: z.ZodString;
9
+ files: z.ZodArray<z.ZodObject<{
10
+ filename: z.ZodString;
11
+ role: z.ZodString;
12
+ label: z.ZodOptional<z.ZodString>;
13
+ }, z.core.$strip>>;
14
+ }, z.core.$strip>;
2
15
  declare const CslCustomSchema: z.ZodObject<{
3
16
  uuid: z.ZodOptional<z.ZodString>;
4
17
  created_at: z.ZodOptional<z.ZodString>;
5
18
  timestamp: z.ZodOptional<z.ZodString>;
6
19
  additional_urls: z.ZodOptional<z.ZodArray<z.ZodString>>;
7
20
  tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
21
+ arxiv_id: z.ZodOptional<z.ZodString>;
22
+ attachments: z.ZodOptional<z.ZodObject<{
23
+ directory: z.ZodString;
24
+ files: z.ZodArray<z.ZodObject<{
25
+ filename: z.ZodString;
26
+ role: z.ZodString;
27
+ label: z.ZodOptional<z.ZodString>;
28
+ }, z.core.$strip>>;
29
+ }, z.core.$strip>>;
30
+ check: z.ZodOptional<z.ZodObject<{
31
+ checked_at: z.ZodString;
32
+ status: z.ZodString;
33
+ findings: z.ZodArray<z.ZodObject<{
34
+ type: z.ZodString;
35
+ message: z.ZodString;
36
+ details: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
37
+ }, z.core.$strip>>;
38
+ }, z.core.$strip>>;
8
39
  }, z.core.$loose>;
9
40
  export declare const CslItemSchema: z.ZodObject<{
10
41
  id: z.ZodString;
@@ -62,6 +93,24 @@ export declare const CslItemSchema: z.ZodObject<{
62
93
  timestamp: z.ZodOptional<z.ZodString>;
63
94
  additional_urls: z.ZodOptional<z.ZodArray<z.ZodString>>;
64
95
  tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
96
+ arxiv_id: z.ZodOptional<z.ZodString>;
97
+ attachments: z.ZodOptional<z.ZodObject<{
98
+ directory: z.ZodString;
99
+ files: z.ZodArray<z.ZodObject<{
100
+ filename: z.ZodString;
101
+ role: z.ZodString;
102
+ label: z.ZodOptional<z.ZodString>;
103
+ }, z.core.$strip>>;
104
+ }, z.core.$strip>>;
105
+ check: z.ZodOptional<z.ZodObject<{
106
+ checked_at: z.ZodString;
107
+ status: z.ZodString;
108
+ findings: z.ZodArray<z.ZodObject<{
109
+ type: z.ZodString;
110
+ message: z.ZodString;
111
+ details: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
112
+ }, z.core.$strip>>;
113
+ }, z.core.$strip>>;
65
114
  }, z.core.$loose>>;
66
115
  }, z.core.$loose>;
67
116
  export declare const CslLibrarySchema: z.ZodArray<z.ZodObject<{
@@ -120,6 +169,24 @@ export declare const CslLibrarySchema: z.ZodArray<z.ZodObject<{
120
169
  timestamp: z.ZodOptional<z.ZodString>;
121
170
  additional_urls: z.ZodOptional<z.ZodArray<z.ZodString>>;
122
171
  tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
172
+ arxiv_id: z.ZodOptional<z.ZodString>;
173
+ attachments: z.ZodOptional<z.ZodObject<{
174
+ directory: z.ZodString;
175
+ files: z.ZodArray<z.ZodObject<{
176
+ filename: z.ZodString;
177
+ role: z.ZodString;
178
+ label: z.ZodOptional<z.ZodString>;
179
+ }, z.core.$strip>>;
180
+ }, z.core.$strip>>;
181
+ check: z.ZodOptional<z.ZodObject<{
182
+ checked_at: z.ZodString;
183
+ status: z.ZodString;
184
+ findings: z.ZodArray<z.ZodObject<{
185
+ type: z.ZodString;
186
+ message: z.ZodString;
187
+ details: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
188
+ }, z.core.$strip>>;
189
+ }, z.core.$strip>>;
123
190
  }, z.core.$loose>>;
124
191
  }, z.core.$loose>>;
125
192
  export type CslCustom = z.infer<typeof CslCustomSchema>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/csl-json/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAyBxB,QAAA,MAAM,eAAe;;;;;;iBAQL,CAAC;AAGjB,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA4BV,CAAC;AAGjB,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAAyB,CAAC;AAEvD,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AACxD,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AACpD,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/csl-json/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAsBxB,eAAO,MAAM,oBAAoB;;;;iBAI/B,CAAC;AAGH,eAAO,MAAM,iBAAiB;;;;;;;iBAG5B,CAAC;AAoBH,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;iBAWL,CAAC;AAGjB,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA4BV,CAAC;AAGjB,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAAyB,CAAC;AAEvD,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AACxD,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AACpD,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
@@ -1,23 +1,15 @@
1
+ import type { z } from "zod";
2
+ import type { AttachmentFileSchema, AttachmentsSchema } from "../../core/csl-json/types.js";
1
3
  /**
2
- * Attachment file metadata stored in reference's custom field
4
+ * Attachment file metadata stored in reference's custom field.
5
+ * Derived from AttachmentFileSchema (Zod) to ensure single source of truth.
3
6
  */
4
- export interface AttachmentFile {
5
- /** Filename without path (e.g., "fulltext.pdf") */
6
- filename: string;
7
- /** Role identifier (e.g., "fulltext", "supplement", "notes") */
8
- role: string;
9
- /** Human-readable label (optional) */
10
- label?: string;
11
- }
7
+ export type AttachmentFile = z.infer<typeof AttachmentFileSchema>;
12
8
  /**
13
- * Attachments container stored in reference's custom.attachments field
9
+ * Attachments container stored in reference's custom.attachments field.
10
+ * Derived from AttachmentsSchema (Zod) to ensure single source of truth.
14
11
  */
15
- export interface Attachments {
16
- /** Directory name relative to attachments base (e.g., "Smith-2024-PMID12345678-123e4567") */
17
- directory: string;
18
- /** List of attached files */
19
- files: AttachmentFile[];
20
- }
12
+ export type Attachments = z.infer<typeof AttachmentsSchema>;
21
13
  /**
22
14
  * Reserved role identifiers with special constraints
23
15
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/features/attachments/types.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,mDAAmD;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,6FAA6F;IAC7F,SAAS,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,uDAAwD,CAAC;AAEpF,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,YAAY,CAEjE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGrD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,OAAO,CAiBrE"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/features/attachments/types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAE5F;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D;;GAEG;AACH,eAAO,MAAM,cAAc,uDAAwD,CAAC;AAEpF,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,YAAY,CAEjE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGrD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,OAAO,CAiBrE"}
@@ -4,6 +4,7 @@
4
4
  type AuthorName = {
5
5
  family?: string;
6
6
  given?: string;
7
+ literal?: string;
7
8
  };
8
9
  /**
9
10
  * Check if two titles are similar using Jaccard similarity and Containment coefficient.
@@ -1 +1 @@
1
- {"version":3,"file":"metadata-similarity.d.ts","sourceRoot":"","sources":["../../../src/features/check/metadata-similarity.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,KAAK,UAAU,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAWtD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAuB7F;AAeD;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,UAAU,EAAE,GAAG,SAAS,EAC/B,MAAM,EAAE,UAAU,EAAE,GAAG,SAAS,GAC/B,OAAO,CAoBT"}
1
+ {"version":3,"file":"metadata-similarity.d.ts","sourceRoot":"","sources":["../../../src/features/check/metadata-similarity.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,KAAK,UAAU,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAWxE;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAuB7F;AAiBD;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,UAAU,EAAE,GAAG,SAAS,EAC/B,MAAM,EAAE,UAAU,EAAE,GAAG,SAAS,GAC/B,OAAO,CAoBT"}
@@ -1 +1 @@
1
- {"version":3,"file":"detector.d.ts","sourceRoot":"","sources":["../../../src/features/duplicate/detector.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAE5D,OAAO,KAAK,EAAkB,eAAe,EAAE,MAAM,YAAY,CAAC;AAuOlE;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,GAAG,eAAe,CAoB7F"}
1
+ {"version":3,"file":"detector.d.ts","sourceRoot":"","sources":["../../../src/features/duplicate/detector.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAE5D,OAAO,KAAK,EAAkB,eAAe,EAAE,MAAM,YAAY,CAAC;AAwQlE;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,GAAG,eAAe,CAoB7F"}
@@ -5,7 +5,7 @@ import type { CslItem } from "../../core/csl-json/types.js";
5
5
  /**
6
6
  * Type of duplicate match
7
7
  */
8
- export type DuplicateType = "doi" | "pmid" | "isbn" | "isbn-title" | "title-author-year";
8
+ export type DuplicateType = "doi" | "pmid" | "isbn" | "isbn-title" | "arxiv" | "title-author-year";
9
9
  /**
10
10
  * A single duplicate match result
11
11
  */
@@ -25,6 +25,7 @@ export interface DuplicateMatch {
25
25
  doi?: string;
26
26
  pmid?: string;
27
27
  isbn?: string;
28
+ arxiv_id?: string;
28
29
  normalizedTitle?: string;
29
30
  normalizedAuthors?: string;
30
31
  year?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/features/duplicate/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAE5D;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,YAAY,GAAG,mBAAmB,CAAC;AAEzF;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,IAAI,EAAE,aAAa,CAAC;IAEpB;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,OAAO,CAAC,EAAE;QACR,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,WAAW,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,OAAO,EAAE,cAAc,EAAE,CAAC;CAC3B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/features/duplicate/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAE5D;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,YAAY,GAAG,OAAO,GAAG,mBAAmB,CAAC;AAEnG;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,IAAI,EAAE,aAAa,CAAC;IAEpB;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,OAAO,CAAC,EAAE;QACR,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,WAAW,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,OAAO,EAAE,cAAc,EAAE,CAAC;CAC3B"}
@@ -1 +1 @@
1
- {"version":3,"file":"citation-fallback.d.ts","sourceRoot":"","sources":["../../../src/features/format/citation-fallback.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAwK5D;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,CAM3D;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,CAOrD"}
1
+ {"version":3,"file":"citation-fallback.d.ts","sourceRoot":"","sources":["../../../src/features/format/citation-fallback.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AA2K5D;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,CAM3D;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,CAOrD"}
@@ -1 +1 @@
1
- {"version":3,"file":"pretty.d.ts","sourceRoot":"","sources":["../../../src/features/format/pretty.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAsF5D;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,CAMrD"}
1
+ {"version":3,"file":"pretty.d.ts","sourceRoot":"","sources":["../../../src/features/format/pretty.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAwF5D;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,CAMrD"}
@@ -1 +1 @@
1
- {"version":3,"file":"resource-indicators.d.ts","sourceRoot":"","sources":["../../../src/features/format/resource-indicators.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAQ5D;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CA+B7D"}
1
+ {"version":3,"file":"resource-indicators.d.ts","sourceRoot":"","sources":["../../../src/features/format/resource-indicators.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAO5D;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CA+B7D"}
@@ -39,7 +39,13 @@ export declare function getIsbnFromCache(isbn: string): CslItem | undefined;
39
39
  */
40
40
  export declare function cacheIsbnResult(isbn: string, item: CslItem, config?: CacheConfig): void;
41
41
  /**
42
- * Reset all caches (for test isolation)
42
+ * Get cached arXiv result
43
43
  */
44
+ export declare function getArxivFromCache(arxivId: string): CslItem | undefined;
45
+ /**
46
+ * Cache arXiv result
47
+ */
48
+ export declare function cacheArxivResult(arxivId: string, item: CslItem, config?: CacheConfig): void;
49
+ /** Reset all caches (for test isolation) */
44
50
  export declare function resetCache(): void;
45
51
  //# sourceMappingURL=cache.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/features/import/cache.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAK5D;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA4DD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAElE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAEvF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAEhE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAErF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAElE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAEvF;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,IAAI,CAIjC"}
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/features/import/cache.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAK5D;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA4DD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAElE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAEvF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAEhE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAErF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAElE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAEvF;AAKD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAEtE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAE3F;AAED,4CAA4C;AAC5C,wBAAgB,UAAU,IAAI,IAAI,CAKjC"}
@@ -10,7 +10,7 @@
10
10
  /**
11
11
  * Supported input formats
12
12
  */
13
- export type InputFormat = "json" | "bibtex" | "ris" | "nbib" | "pmid" | "doi" | "isbn" | "identifiers" | "unknown";
13
+ export type InputFormat = "json" | "bibtex" | "ris" | "nbib" | "pmid" | "doi" | "isbn" | "arxiv" | "identifiers" | "unknown";
14
14
  /**
15
15
  * Detect the format of the given input
16
16
  *
@@ -30,7 +30,7 @@ export declare function detectByContent(content: string): InputFormat;
30
30
  /**
31
31
  * Detect if a single string is a PMID, DOI, or ISBN
32
32
  */
33
- export declare function detectSingleIdentifier(input: string): "pmid" | "doi" | "isbn" | "unknown";
33
+ export declare function detectSingleIdentifier(input: string): "pmid" | "doi" | "isbn" | "arxiv" | "unknown";
34
34
  /**
35
35
  * Check if string is a valid DOI
36
36
  */
@@ -47,4 +47,17 @@ export declare function isPmid(input: string): boolean;
47
47
  * - ISBN-10: 10 digits (last may be X)
48
48
  */
49
49
  export declare function isIsbn(input: string): boolean;
50
+ /**
51
+ * arXiv ID pattern: YYMM.NNNNN or YYMM.NNNN with optional version suffix
52
+ */
53
+ export declare const ARXIV_ID_PATTERN: RegExp;
54
+ /**
55
+ * Check if input is an arXiv identifier.
56
+ *
57
+ * Matches:
58
+ * - Bare IDs: 2301.13867, 2301.13867v2
59
+ * - Prefixed: arXiv:2301.13867
60
+ * - URLs: https://arxiv.org/abs/2301.13867
61
+ */
62
+ export declare function isArxiv(input: string): boolean;
50
63
  //# sourceMappingURL=detector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"detector.d.ts","sourceRoot":"","sources":["../../../src/features/import/detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH;;GAEG;AACH,MAAM,MAAM,WAAW,GACnB,MAAM,GACN,QAAQ,GACR,KAAK,GACL,MAAM,GACN,MAAM,GACN,KAAK,GACL,MAAM,GACN,aAAa,GACb,SAAS,CAAC;AAsBd;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,CAwBzE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAW5D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CA0B5D;AAkCD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAiBzF;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAW5C;AA0BD;;GAEG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAc7C;AAED;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAgC7C"}
1
+ {"version":3,"file":"detector.d.ts","sourceRoot":"","sources":["../../../src/features/import/detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH;;GAEG;AACH,MAAM,MAAM,WAAW,GACnB,MAAM,GACN,QAAQ,GACR,KAAK,GACL,MAAM,GACN,MAAM,GACN,KAAK,GACL,MAAM,GACN,OAAO,GACP,aAAa,GACb,SAAS,CAAC;AAsBd;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,CAwBzE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAW5D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CA0B5D;AAkCD;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,GACZ,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAsB/C;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAW5C;AA0BD;;GAEG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAc7C;AAED;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAgC7C;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,QAA4B,CAAC;AAE1D;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAY9C"}
@@ -60,4 +60,11 @@ export declare function fetchDoi(doi: string): Promise<FetchResult>;
60
60
  * @returns FetchResult with CSL-JSON item or error
61
61
  */
62
62
  export declare function fetchIsbn(isbn: string): Promise<FetchResult>;
63
+ /**
64
+ * Fetch arXiv metadata by arXiv ID using the Atom API.
65
+ *
66
+ * @param arxivId - Normalized arXiv ID (e.g., "2301.13867" or "2301.13867v2")
67
+ * @returns FetchResult with CSL-JSON item on success
68
+ */
69
+ export declare function fetchArxiv(arxivId: string): Promise<FetchResult>;
63
70
  //# sourceMappingURL=fetcher.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fetcher.d.ts","sourceRoot":"","sources":["../../../src/features/import/fetcher.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,yBAAyB,CAAC;AACjC,OAAO,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,OAAO,EAAiB,MAAM,8BAA8B,CAAC;AAY3E;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB,WAAW,GACX,aAAa,GACb,aAAa,GACb,kBAAkB,GAClB,SAAS,CAAC;AAEd;;GAEG;AACH,MAAM,MAAM,WAAW,GACnB;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAChC;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,aAAa,CAAA;CAAE,CAAC;AAE7D;;GAEG;AACH,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,aAAa,CAAA;CAAE,CAAC;AAE3E;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;AAmG7C,wBAAsB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAiD7F;AAED;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA8ChE;AAQD;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA8ClE"}
1
+ {"version":3,"file":"fetcher.d.ts","sourceRoot":"","sources":["../../../src/features/import/fetcher.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,yBAAyB,CAAC;AACjC,OAAO,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,OAAO,EAAiB,MAAM,8BAA8B,CAAC;AAa3E;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB,WAAW,GACX,aAAa,GACb,aAAa,GACb,kBAAkB,GAClB,SAAS,CAAC;AAEd;;GAEG;AACH,MAAM,MAAM,WAAW,GACnB;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAChC;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,aAAa,CAAA;CAAE,CAAC;AAE7D;;GAEG;AACH,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,aAAa,CAAA;CAAE,CAAC;AAE3E;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;AAmG7C,wBAAsB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAiD7F;AAED;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA8ChE;AAQD;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA8ClE;AAkDD;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAuFtE"}
@@ -1 +1 @@
1
- {"version":3,"file":"importer.d.ts","sourceRoot":"","sources":["../../../src/features/import/importer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAW5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAKhE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD;;GAEG;AACH,MAAM,MAAM,gBAAgB,GACxB;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAChD;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,aAAa,CAAA;CAAE,CAAC;AAE7E;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AA4SD;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,WAAW,GAAG,MAAM,EAC5B,QAAQ,EAAE,aAAa,GACtB,OAAO,CAAC,YAAY,CAAC,CA2CvB;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,EAAE,EACrB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,YAAY,CAAC,CA2BvB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,aAAa;IACxD,oDAAoD;IACpD,MAAM,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;IAC9B,gFAAgF;IAChF,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAyGD,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EAAE,EAChB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,YAAY,CAAC,CAiCvB"}
1
+ {"version":3,"file":"importer.d.ts","sourceRoot":"","sources":["../../../src/features/import/importer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAa5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAKhE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD;;GAEG;AACH,MAAM,MAAM,gBAAgB,GACxB;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAChD;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,aAAa,CAAA;CAAE,CAAC;AAE7E;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AA8UD;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,WAAW,GAAG,MAAM,EAC5B,QAAQ,EAAE,aAAa,GACtB,OAAO,CAAC,YAAY,CAAC,CA2CvB;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,EAAE,EACrB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,YAAY,CAAC,CA+BvB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,aAAa;IACxD,oDAAoD;IACpD,MAAM,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;IAC9B,gFAAgF;IAChF,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AA0GD,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EAAE,EAChB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,YAAY,CAAC,CAiCvB"}
@@ -38,4 +38,20 @@ export declare function normalizePmid(pmid: string): string;
38
38
  * @returns The normalized ISBN (digits only, X uppercase at end for ISBN-10) or empty string if invalid
39
39
  */
40
40
  export declare function normalizeIsbn(isbn: string): string;
41
+ /**
42
+ * Normalizes an arXiv identifier by removing URL prefixes and arXiv: prefix.
43
+ *
44
+ * Supported formats:
45
+ * - "2301.13867" -> "2301.13867"
46
+ * - "2301.13867v2" -> "2301.13867v2"
47
+ * - "arXiv:2301.13867" -> "2301.13867"
48
+ * - "arxiv:2301.13867v2" -> "2301.13867v2"
49
+ * - "https://arxiv.org/abs/2301.13867" -> "2301.13867"
50
+ * - "https://arxiv.org/pdf/2301.13867" -> "2301.13867"
51
+ * - "https://arxiv.org/html/2301.13867v2" -> "2301.13867v2"
52
+ *
53
+ * @param arxiv - The arXiv string to normalize
54
+ * @returns The normalized arXiv ID or empty string if invalid input
55
+ */
56
+ export declare function normalizeArxiv(arxiv: string): string;
41
57
  //# sourceMappingURL=normalizer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"normalizer.d.ts","sourceRoot":"","sources":["../../../src/features/import/normalizer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAYH;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAoBhD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAYlD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAuBlD"}
1
+ {"version":3,"file":"normalizer.d.ts","sourceRoot":"","sources":["../../../src/features/import/normalizer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAYH;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAoBhD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAYlD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAuBlD;AAcD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAoBpD"}
@@ -9,7 +9,7 @@
9
9
  /**
10
10
  * API types supported by the rate limiter
11
11
  */
12
- export type ApiType = "pubmed" | "crossref" | "isbn";
12
+ export type ApiType = "pubmed" | "crossref" | "isbn" | "arxiv";
13
13
  /**
14
14
  * Configuration for rate limiter
15
15
  */
@@ -1 +1 @@
1
- {"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../../../src/features/import/rate-limiter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AA4DD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE;IACzC,iBAAiB,EAAE,MAAM,CAAC;CAC3B,GAAG,WAAW,CAEd;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,GAAG,WAAW,CAWnF;AAgBD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAExC"}
1
+ {"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../../../src/features/import/rate-limiter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AA6DD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE;IACzC,iBAAiB,EAAE,MAAM,CAAC;CAC3B,GAAG,WAAW,CAEd;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,GAAG,WAAW,CAWnF;AAkBD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAExC"}
@@ -1 +1 @@
1
- {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../src/features/operations/attachments/get.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAInF;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,sBAAsB;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sBAAsB;IACtB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,+BAA+B;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qCAAqC;IACrC,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAmBD;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,QAAQ,EACjB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CAqD9B"}
1
+ {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../src/features/operations/attachments/get.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAInF;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,sBAAsB;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sBAAsB;IACtB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,+BAA+B;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qCAAqC;IACrC,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAmBD;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,QAAQ,EACjB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CAqD9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../../src/features/operations/attachments/list.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,KAAK,EAAE,cAAc,EAAe,MAAM,4BAA4B,CAAC;AAE9E;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,sBAAsB;IACtB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,qBAAqB;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qCAAqC;IACrC,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,QAAQ,EACjB,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,qBAAqB,CAAC,CAiChC"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../../src/features/operations/attachments/list.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,sBAAsB;IACtB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,qBAAqB;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qCAAqC;IACrC,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,QAAQ,EACjB,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,qBAAqB,CAAC,CAiChC"}
@@ -1 +1 @@
1
- {"version":3,"file":"open.d.ts","sourceRoot":"","sources":["../../../../src/features/operations/attachments/open.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAMnF;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,sBAAsB;IACtB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,qCAAqC;IACrC,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,8CAA8C;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA+HD;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,QAAQ,EACjB,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,oBAAoB,CAAC,CAoD/B"}
1
+ {"version":3,"file":"open.d.ts","sourceRoot":"","sources":["../../../../src/features/operations/attachments/open.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAMnF;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,sBAAsB;IACtB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,qCAAqC;IACrC,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,8CAA8C;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA8HD;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,QAAQ,EACjB,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,oBAAoB,CAAC,CAoD/B"}
@@ -1 +1 @@
1
- {"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../../../src/features/operations/fulltext/convert.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAInF,MAAM,WAAW,sBAAsB;IACrC,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,MAAM,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IACpC,yCAAyC;IACzC,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAkBD,wBAAsB,eAAe,CACnC,OAAO,EAAE,QAAQ,EACjB,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,qBAAqB,CAAC,CAkDhC"}
1
+ {"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../../../src/features/operations/fulltext/convert.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAGnF,MAAM,WAAW,sBAAsB;IACrC,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,MAAM,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IACpC,yCAAyC;IACzC,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAkBD,wBAAsB,eAAe,CACnC,OAAO,EAAE,QAAQ,EACjB,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,qBAAqB,CAAC,CAkDhC"}
@@ -1 +1 @@
1
- {"version":3,"file":"detach.d.ts","sourceRoot":"","sources":["../../../../src/features/operations/fulltext/detach.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAGnF,OAAO,EACL,KAAK,cAAc,EAIpB,MAAM,8BAA8B,CAAC;AAEtC;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,cAAc,CAAC;AAE1C;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,IAAI,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;IAChC,gCAAgC;IAChC,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAClC,wEAAwE;IACxE,MAAM,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IACpC,6DAA6D;IAC7D,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAyED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,QAAQ,EACjB,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,oBAAoB,CAAC,CAoC/B"}
1
+ {"version":3,"file":"detach.d.ts","sourceRoot":"","sources":["../../../../src/features/operations/fulltext/detach.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAGnF,OAAO,EACL,KAAK,cAAc,EAIpB,MAAM,8BAA8B,CAAC;AAEtC;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,cAAc,CAAC;AAE1C;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,IAAI,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;IAChC,gCAAgC;IAChC,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAClC,wEAAwE;IACxE,MAAM,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IACpC,6DAA6D;IAC7D,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAyED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,QAAQ,EACjB,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,oBAAoB,CAAC,CAoC/B"}
@@ -1 +1 @@
1
- {"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../../../src/features/operations/fulltext/discover.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAGL,KAAK,UAAU,EACf,KAAK,QAAQ,EAEd,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAEnE,MAAM,WAAW,uBAAuB;IACtC,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,MAAM,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IACpC,6BAA6B;IAC7B,cAAc,EAAE,cAAc,CAAC;CAChC;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB;IAChB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,UAAU,EAAE,CAAC;IACzB,sCAAsC;IACtC,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClD,yEAAyE;IACzE,aAAa,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACnD;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,QAAQ,EACjB,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,sBAAsB,CAAC,CAiDjC"}
1
+ {"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../../../src/features/operations/fulltext/discover.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAGL,KAAK,UAAU,EACf,KAAK,QAAQ,EAEd,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAEnE,MAAM,WAAW,uBAAuB;IACtC,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,MAAM,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IACpC,6BAA6B;IAC7B,cAAc,EAAE,cAAc,CAAC;CAChC;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB;IAChB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,UAAU,EAAE,CAAC;IACzB,sCAAsC;IACtC,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClD,yEAAyE;IACzE,aAAa,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACnD;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,QAAQ,EACjB,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,sBAAsB,CAAC,CAkDjC"}
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../../../src/features/operations/fulltext/fetch.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgBH,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEhF,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAInF,MAAM,WAAW,oBAAoB;IACnC,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,MAAM,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IACpC,6BAA6B;IAC7B,cAAc,EAAE,cAAc,CAAC;IAC/B,yCAAyC;IACzC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qCAAqC;IACrC,MAAM,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IACpC,wCAAwC;IACxC,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;IACzC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,UAAU,CAAC;IAC9C,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,4BAA4B;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,qCAAqC;IACrC,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACrC,6CAA6C;IAC7C,eAAe,CAAC,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,SAAS,CAAC;IACvE,mCAAmC;IACnC,QAAQ,CAAC,EAAE,YAAY,EAAE,GAAG,SAAS,CAAC;IACtC,oCAAoC;IACpC,cAAc,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACtC,2EAA2E;IAC3E,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,SAAS,CAAC;IAChE,0DAA0D;IAC1D,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B;AA6OD,wBAAsB,aAAa,CACjC,OAAO,EAAE,QAAQ,EACjB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CAyE9B"}
1
+ {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../../../src/features/operations/fulltext/fetch.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgBH,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEhF,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAInF,MAAM,WAAW,oBAAoB;IACnC,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,MAAM,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IACpC,6BAA6B;IAC7B,cAAc,EAAE,cAAc,CAAC;IAC/B,yCAAyC;IACzC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qCAAqC;IACrC,MAAM,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IACpC,wCAAwC;IACxC,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;IACzC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,UAAU,CAAC;IAC9C,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,4BAA4B;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,qCAAqC;IACrC,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACrC,6CAA6C;IAC7C,eAAe,CAAC,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,SAAS,CAAC;IACvE,mCAAmC;IACnC,QAAQ,CAAC,EAAE,YAAY,EAAE,GAAG,SAAS,CAAC;IACtC,oCAAoC;IACpC,cAAc,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACtC,2EAA2E;IAC3E,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,SAAS,CAAC;IAChE,0DAA0D;IAC1D,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B;AA8OD,wBAAsB,aAAa,CACjC,OAAO,EAAE,QAAQ,EACjB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CAyE9B"}