@ncukondo/reference-manager 0.32.0 → 0.33.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.
- package/dist/chunks/{SearchableMultiSelect-jAKQd_B0.js → SearchableMultiSelect-a5BIz7Gb.js} +2 -2
- package/dist/chunks/{SearchableMultiSelect-jAKQd_B0.js.map → SearchableMultiSelect-a5BIz7Gb.js.map} +1 -1
- package/dist/chunks/{action-menu-DLEwSKrj.js → action-menu-CjmHSfmi.js} +3 -3
- package/dist/chunks/{action-menu-DLEwSKrj.js.map → action-menu-CjmHSfmi.js.map} +1 -1
- package/dist/chunks/{checker-kVM4S67y.js → checker-D_kpqqRi.js} +4 -4
- package/dist/chunks/{checker-kVM4S67y.js.map → checker-D_kpqqRi.js.map} +1 -1
- package/dist/chunks/{crossref-client-DcJ42Qt6.js → crossref-client-CXp-1QlL.js} +2 -2
- package/dist/chunks/{crossref-client-DcJ42Qt6.js.map → crossref-client-CXp-1QlL.js.map} +1 -1
- package/dist/chunks/{fix-interaction-DWUzp9Ri.js → fix-interaction-Va_6E2Kd.js} +5 -5
- package/dist/chunks/{fix-interaction-DWUzp9Ri.js.map → fix-interaction-Va_6E2Kd.js.map} +1 -1
- package/dist/chunks/{index-B4-i4PrU.js → index-CgOvxl5f.js} +679 -16
- package/dist/chunks/index-CgOvxl5f.js.map +1 -0
- package/dist/chunks/{index-CmkN2-2A.js → index-Cv1Tph02.js} +75 -32
- package/dist/chunks/index-Cv1Tph02.js.map +1 -0
- package/dist/chunks/{index-B8iEozpf.js → index-DwvwJZOU.js} +3 -3
- package/dist/chunks/index-DwvwJZOU.js.map +1 -0
- package/dist/chunks/{index-BuQm8A5F.js → index-Kfj6MVHP.js} +4 -4
- package/dist/chunks/{index-BuQm8A5F.js.map → index-Kfj6MVHP.js.map} +1 -1
- package/dist/chunks/{loader-BG2eomDC.js → loader-CMu82BI5.js} +42 -1
- package/dist/chunks/loader-CMu82BI5.js.map +1 -0
- package/dist/chunks/{pubmed-client-Bhzz4Gg5.js → pubmed-client-Cmq5_Bun.js} +2 -2
- package/dist/chunks/{pubmed-client-Bhzz4Gg5.js.map → pubmed-client-Cmq5_Bun.js.map} +1 -1
- package/dist/chunks/{reference-select-B9b9Ez7Q.js → reference-select-Afwq1-X1.js} +3 -3
- package/dist/chunks/{reference-select-B9b9Ez7Q.js.map → reference-select-Afwq1-X1.js.map} +1 -1
- package/dist/chunks/{style-select-aXByJLOo.js → style-select-iM-Af4O2.js} +3 -3
- package/dist/chunks/{style-select-aXByJLOo.js.map → style-select-iM-Af4O2.js.map} +1 -1
- package/dist/cli/commands/add.d.ts +9 -1
- package/dist/cli/commands/add.d.ts.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli.js +2 -2
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/key-parser.d.ts.map +1 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/schema.d.ts +42 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/features/attachments/types.d.ts +5 -1
- package/dist/features/attachments/types.d.ts.map +1 -1
- package/dist/features/import/browser.d.ts +16 -0
- package/dist/features/import/browser.d.ts.map +1 -0
- package/dist/features/import/detector.d.ts +11 -2
- package/dist/features/import/detector.d.ts.map +1 -1
- package/dist/features/import/importer.d.ts +17 -0
- package/dist/features/import/importer.d.ts.map +1 -1
- package/dist/features/import/url-archive.d.ts +18 -0
- package/dist/features/import/url-archive.d.ts.map +1 -0
- package/dist/features/import/url-fetcher.d.ts +35 -0
- package/dist/features/import/url-fetcher.d.ts.map +1 -0
- package/dist/features/import/url-fulltext.d.ts +10 -0
- package/dist/features/import/url-fulltext.d.ts.map +1 -0
- package/dist/features/import/url-metadata.d.ts +34 -0
- package/dist/features/import/url-metadata.d.ts.map +1 -0
- package/dist/features/operations/add.d.ts +11 -0
- package/dist/features/operations/add.d.ts.map +1 -1
- package/dist/features/operations/json-output.d.ts +1 -0
- package/dist/features/operations/json-output.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/server.js +1 -1
- package/package.json +8 -1
- package/dist/chunks/index-B4-i4PrU.js.map +0 -1
- package/dist/chunks/index-B8iEozpf.js.map +0 -1
- package/dist/chunks/index-CmkN2-2A.js.map +0 -1
- package/dist/chunks/loader-BG2eomDC.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style-select-
|
|
1
|
+
{"version":3,"file":"style-select-iM-Af4O2.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,4 +1,4 @@
|
|
|
1
|
-
import type { FulltextConfig } from "../../config/schema.js";
|
|
1
|
+
import type { FulltextConfig, UrlArchiveFormat, UrlConfig } from "../../config/schema.js";
|
|
2
2
|
import type { ILibrary } from "../../core/library-interface.js";
|
|
3
3
|
import type { PubmedConfig } from "../../features/import/fetcher.js";
|
|
4
4
|
import type { AddReferencesResult, AddedItem, FailedItem, SkippedItem } from "../../features/operations/add.js";
|
|
@@ -24,6 +24,14 @@ export interface AddCommandOptions {
|
|
|
24
24
|
output?: "json" | "text";
|
|
25
25
|
/** Include full CSL-JSON data in JSON output */
|
|
26
26
|
full?: boolean;
|
|
27
|
+
/** URL import configuration */
|
|
28
|
+
urlConfig?: UrlConfig | undefined;
|
|
29
|
+
/** Archive format override for URL imports */
|
|
30
|
+
archiveFormat?: UrlArchiveFormat | undefined;
|
|
31
|
+
/** Skip archive creation for URL imports */
|
|
32
|
+
noArchive?: boolean | undefined;
|
|
33
|
+
/** Attachments directory for saving URL import data */
|
|
34
|
+
attachmentsDirectory?: string | undefined;
|
|
27
35
|
}
|
|
28
36
|
/**
|
|
29
37
|
* Result from add command execution.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/add.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/add.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAC1F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAEhE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,KAAK,EACV,mBAAmB,EACnB,SAAS,EACT,UAAU,EACV,WAAW,EACZ,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EACV,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,6CAA6C,CAAC;AAErD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,8CAA8C;IAC9C,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,+BAA+B;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,4BAA4B;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+BAA+B;IAC/B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,gCAAgC;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,yBAAyB;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+BAA+B;IAC/B,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,gDAAgD;IAChD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,+BAA+B;IAC/B,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAClC,8CAA8C;IAC9C,aAAa,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC7C,4CAA4C;IAC5C,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAChC,uDAAuD;IACvD,oBAAoB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3C;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;AAGnD,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;AAKnD;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAC9B,OAAO,EAAE,iBAAiB,EAC1B,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,gBAAgB,CAAC,CA4B3B;AAuCD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAgClF;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAa5D;AAED;;GAEG;AACH,KAAK,eAAe,GAAG,CACrB,OAAO,EAAE,QAAQ,EACjB,OAAO,EAAE,oBAAoB,KAC1B,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAElC;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,cAAc,CAAC;IAC/B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,eAAe,CAAC;CAClC;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,SAAS,EAAE,EACvB,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAyBhC"}
|
package/dist/cli/index.d.ts.map
CHANGED
|
@@ -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;AAoE5C;;GAEG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAmDvC;
|
|
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;AAoE5C;;GAEG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAmDvC;AAq3BD;;GAEG;AACH,wBAAsB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBxD"}
|
package/dist/cli.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "commander";
|
|
2
|
-
import "./chunks/index-
|
|
2
|
+
import "./chunks/index-CgOvxl5f.js";
|
|
3
3
|
import "./chunks/file-watcher-CWHg1yol.js";
|
|
4
|
-
import { c, m } from "./chunks/index-
|
|
4
|
+
import { c, m } from "./chunks/index-Cv1Tph02.js";
|
|
5
5
|
export {
|
|
6
6
|
c as createProgram,
|
|
7
7
|
m as main
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C;;;GAGG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,CAElD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAED;;;GAGG;AACH,wBAAgB,kCAAkC,IAAI,MAAM,CAE3D;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,IAAI,MAAM,CAEvD;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C;;;GAGG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,CAElD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAED;;;GAGG;AACH,wBAAgB,kCAAkC,IAAI,MAAM,CAE3D;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,IAAI,MAAM,CAEvD;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,MAqE3B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key-parser.d.ts","sourceRoot":"","sources":["../../src/config/key-parser.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,UAAU,CAAC;AAErF;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,sCAAsC;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,qBAAqB;IACrB,IAAI,EAAE,eAAe,CAAC;IACtB,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;
|
|
1
|
+
{"version":3,"file":"key-parser.d.ts","sourceRoot":"","sources":["../../src/config/key-parser.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,UAAU,CAAC;AAErF;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,sCAAsC;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,qBAAqB;IACrB,IAAI,EAAE,eAAe,CAAC;IACtB,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA+OD;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAEpD;AAcD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CASrD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAUlE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAW3D;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAcpD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAAA;;GAEG;AAWH,OAAO,EACL,KAAK,MAAM,EAMZ,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,yDAAyD;IACzD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,mEAAmE;IACnE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;CAC7B;
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAAA;;GAEG;AAWH,OAAO,EACL,KAAK,MAAM,EAMZ,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,yDAAyD;IACzD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,mEAAmE;IACnE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;CAC7B;AA0UD;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAAG,MAAM,CAkDlE"}
|
package/dist/config/schema.d.ts
CHANGED
|
@@ -204,6 +204,24 @@ export declare const fulltextConfigSchema: z.ZodObject<{
|
|
|
204
204
|
ncbiTool: z.ZodOptional<z.ZodString>;
|
|
205
205
|
}, z.core.$strip>;
|
|
206
206
|
}, z.core.$strip>;
|
|
207
|
+
/**
|
|
208
|
+
* URL import archive format schema
|
|
209
|
+
*/
|
|
210
|
+
export declare const urlArchiveFormatSchema: z.ZodEnum<{
|
|
211
|
+
html: "html";
|
|
212
|
+
mhtml: "mhtml";
|
|
213
|
+
}>;
|
|
214
|
+
/**
|
|
215
|
+
* URL import configuration schema
|
|
216
|
+
*/
|
|
217
|
+
export declare const urlConfigSchema: z.ZodObject<{
|
|
218
|
+
archiveFormat: z.ZodEnum<{
|
|
219
|
+
html: "html";
|
|
220
|
+
mhtml: "mhtml";
|
|
221
|
+
}>;
|
|
222
|
+
browserPath: z.ZodString;
|
|
223
|
+
timeout: z.ZodNumber;
|
|
224
|
+
}, z.core.$strip>;
|
|
207
225
|
/**
|
|
208
226
|
* Attachments storage configuration schema
|
|
209
227
|
*/
|
|
@@ -294,6 +312,14 @@ export declare const configSchema: z.ZodObject<{
|
|
|
294
312
|
attachments: z.ZodObject<{
|
|
295
313
|
directory: z.ZodString;
|
|
296
314
|
}, z.core.$strip>;
|
|
315
|
+
url: z.ZodObject<{
|
|
316
|
+
archiveFormat: z.ZodEnum<{
|
|
317
|
+
html: "html";
|
|
318
|
+
mhtml: "mhtml";
|
|
319
|
+
}>;
|
|
320
|
+
browserPath: z.ZodString;
|
|
321
|
+
timeout: z.ZodNumber;
|
|
322
|
+
}, z.core.$strip>;
|
|
297
323
|
cli: z.ZodObject<{
|
|
298
324
|
defaultLimit: z.ZodNumber;
|
|
299
325
|
defaultSort: z.ZodEnum<{
|
|
@@ -459,6 +485,19 @@ export declare const partialConfigSchema: z.ZodObject<{
|
|
|
459
485
|
attachments: z.ZodOptional<z.ZodObject<{
|
|
460
486
|
directory: z.ZodOptional<z.ZodString>;
|
|
461
487
|
}, z.core.$strip>>;
|
|
488
|
+
url: z.ZodOptional<z.ZodObject<{
|
|
489
|
+
archiveFormat: z.ZodOptional<z.ZodEnum<{
|
|
490
|
+
html: "html";
|
|
491
|
+
mhtml: "mhtml";
|
|
492
|
+
}>>;
|
|
493
|
+
archive_format: z.ZodOptional<z.ZodEnum<{
|
|
494
|
+
html: "html";
|
|
495
|
+
mhtml: "mhtml";
|
|
496
|
+
}>>;
|
|
497
|
+
browserPath: z.ZodOptional<z.ZodString>;
|
|
498
|
+
browser_path: z.ZodOptional<z.ZodString>;
|
|
499
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
500
|
+
}, z.core.$strip>>;
|
|
462
501
|
cli: z.ZodOptional<z.ZodObject<{
|
|
463
502
|
defaultLimit: z.ZodOptional<z.ZodNumber>;
|
|
464
503
|
default_limit: z.ZodOptional<z.ZodNumber>;
|
|
@@ -522,6 +561,8 @@ export type FulltextSource = z.infer<typeof fulltextSourceSchema>;
|
|
|
522
561
|
export type FulltextPreferredType = z.infer<typeof fulltextPreferredTypeSchema>;
|
|
523
562
|
export type FulltextConfig = z.infer<typeof fulltextConfigSchema>;
|
|
524
563
|
export type AttachmentsConfig = z.infer<typeof attachmentsConfigSchema>;
|
|
564
|
+
export type UrlArchiveFormat = z.infer<typeof urlArchiveFormatSchema>;
|
|
565
|
+
export type UrlConfig = z.infer<typeof urlConfigSchema>;
|
|
525
566
|
export type TuiConfig = z.infer<typeof tuiConfigSchema>;
|
|
526
567
|
export type EditConfigFormat = z.infer<typeof editFormatSchema>;
|
|
527
568
|
export type EditConfig = z.infer<typeof editConfigSchema>;
|
|
@@ -546,6 +587,7 @@ export type DeepPartialConfig = {
|
|
|
546
587
|
converters?: FulltextConfig["converters"];
|
|
547
588
|
};
|
|
548
589
|
attachments?: Partial<AttachmentsConfig>;
|
|
590
|
+
url?: Partial<UrlConfig>;
|
|
549
591
|
cli?: Partial<Omit<CliConfig, "tui" | "edit">> & {
|
|
550
592
|
tui?: Partial<TuiConfig>;
|
|
551
593
|
edit?: Partial<EditConfig>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;GAEG;AACH,eAAO,MAAM,cAAc;;;;EAAsC,CAAC;AAElE;;GAEG;AACH,eAAO,MAAM,eAAe;;;;iBAI1B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;EAA2B,CAAC;AAEzD;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;iBAE3B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;iBAM1B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,eAAe;;iBAE1B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;iBAI7B,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,iBAAiB;;;;;iBAK5B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;iBAG7B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;EAAkC,CAAC;AAEpE;;GAEG;AACH,eAAO,MAAM,uBAAuB;;;EAA8B,CAAC;AAEnE;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;iBAM/B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;iBAG7B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;EAAgD,CAAC;AAClF,QAAA,MAAM,2BAA2B;;;EAA8B,CAAC;AAEhE;;GAEG;AACH;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;iBAQhC,CAAC;AAiBH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAc/B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,uBAAuB;;iBAElC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,YAAY
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ export type Attachments = z.infer<typeof AttachmentsSchema>;
|
|
|
13
13
|
/**
|
|
14
14
|
* Reserved role identifiers with special constraints
|
|
15
15
|
*/
|
|
16
|
-
export declare const RESERVED_ROLES: readonly ["fulltext", "supplement", "notes", "draft"];
|
|
16
|
+
export declare const RESERVED_ROLES: readonly ["fulltext", "supplement", "notes", "draft", "archive"];
|
|
17
17
|
export type ReservedRole = (typeof RESERVED_ROLES)[number];
|
|
18
18
|
/**
|
|
19
19
|
* Check if a role is a reserved role
|
|
@@ -27,4 +27,8 @@ export declare function getExtension(filename: string): string;
|
|
|
27
27
|
* Check if fulltext files satisfy the constraint: max 2 files (1 PDF + 1 Markdown)
|
|
28
28
|
*/
|
|
29
29
|
export declare function isValidFulltextFiles(files: AttachmentFile[]): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Check if archive files satisfy the constraint: max 1 file
|
|
32
|
+
*/
|
|
33
|
+
export declare function isValidArchiveFiles(files: AttachmentFile[]): boolean;
|
|
30
34
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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,kEAAmE,CAAC;AAE/F,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;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,OAAO,CAGpE"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Browser } from "playwright-core";
|
|
2
|
+
import type { UrlConfig } from "../../config/schema.js";
|
|
3
|
+
/**
|
|
4
|
+
* Error thrown when Chrome/Chromium is not found on the system.
|
|
5
|
+
*/
|
|
6
|
+
export declare class BrowserNotFoundError extends Error {
|
|
7
|
+
constructor(cause?: Error);
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Launch a headless browser for URL import.
|
|
11
|
+
*
|
|
12
|
+
* Uses system-installed Chrome/Chromium via playwright-core.
|
|
13
|
+
* Falls back to config.browserPath if provided.
|
|
14
|
+
*/
|
|
15
|
+
export declare function launchBrowser(config: UrlConfig): Promise<Browser>;
|
|
16
|
+
//# sourceMappingURL=browser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../../src/features/import/browser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAExD;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,KAAK,CAAC,EAAE,KAAK;CAkB1B;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAyBvE"}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
/**
|
|
11
11
|
* Supported input formats
|
|
12
12
|
*/
|
|
13
|
-
export type InputFormat = "json" | "bibtex" | "ris" | "nbib" | "pmid" | "doi" | "isbn" | "arxiv" | "identifiers" | "unknown";
|
|
13
|
+
export type InputFormat = "json" | "bibtex" | "ris" | "nbib" | "pmid" | "doi" | "isbn" | "arxiv" | "url" | "identifiers" | "unknown";
|
|
14
14
|
/**
|
|
15
15
|
* Detect the format of the given input
|
|
16
16
|
*
|
|
@@ -30,7 +30,16 @@ 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" | "arxiv" | "unknown";
|
|
33
|
+
export declare function detectSingleIdentifier(input: string): "pmid" | "doi" | "isbn" | "arxiv" | "url" | "unknown";
|
|
34
|
+
/**
|
|
35
|
+
* Try to extract a PMID or PMCID from a PubMed/PMC URL.
|
|
36
|
+
* Returns the extracted identifier string or null if not a PubMed URL.
|
|
37
|
+
*/
|
|
38
|
+
export declare function extractPubmedId(input: string): string | null;
|
|
39
|
+
/**
|
|
40
|
+
* Check if input is an http/https URL that is not already matched as a known identifier (DOI, arXiv, PubMed).
|
|
41
|
+
*/
|
|
42
|
+
export declare function isUrl(input: string): boolean;
|
|
34
43
|
/**
|
|
35
44
|
* Check if string is a valid DOI
|
|
36
45
|
*/
|
|
@@ -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,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,
|
|
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,KAAK,GACL,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,KAAK,GAAG,SAAS,CAgCvD;AAuBD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQ5D;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAW5C;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"}
|
|
@@ -4,10 +4,20 @@
|
|
|
4
4
|
* Coordinates format detection, parsing, and fetching to import references
|
|
5
5
|
* from various input formats.
|
|
6
6
|
*/
|
|
7
|
+
import type { UrlArchiveFormat, UrlConfig } from "../../config/schema.js";
|
|
7
8
|
import type { CslItem } from "../../core/csl-json/types.js";
|
|
8
9
|
import type { InputFormat } from "./detector.js";
|
|
9
10
|
import type { FailureReason, PubmedConfig } from "./fetcher.js";
|
|
11
|
+
import type { ArchiveResult } from "./url-archive.js";
|
|
10
12
|
export type { FailureReason } from "./fetcher.js";
|
|
13
|
+
/**
|
|
14
|
+
* URL-specific data returned alongside the CslItem for URL imports.
|
|
15
|
+
*/
|
|
16
|
+
export interface UrlImportData {
|
|
17
|
+
fulltext: string;
|
|
18
|
+
archive?: ArchiveResult | undefined;
|
|
19
|
+
warnings: string[];
|
|
20
|
+
}
|
|
11
21
|
/**
|
|
12
22
|
* Result of importing a single item
|
|
13
23
|
*/
|
|
@@ -15,6 +25,7 @@ export type ImportItemResult = {
|
|
|
15
25
|
success: true;
|
|
16
26
|
item: CslItem;
|
|
17
27
|
source: string;
|
|
28
|
+
urlData?: UrlImportData | undefined;
|
|
18
29
|
} | {
|
|
19
30
|
success: false;
|
|
20
31
|
error: string;
|
|
@@ -58,6 +69,12 @@ export interface ImportInputsOptions extends ImportOptions {
|
|
|
58
69
|
format?: InputFormat | "auto";
|
|
59
70
|
/** Content from stdin (if provided, processed before file/identifier inputs) */
|
|
60
71
|
stdinContent?: string;
|
|
72
|
+
/** URL import configuration (required for URL inputs) */
|
|
73
|
+
urlConfig?: UrlConfig | undefined;
|
|
74
|
+
/** Archive format override for URL imports */
|
|
75
|
+
archiveFormat?: UrlArchiveFormat | undefined;
|
|
76
|
+
/** Skip archive creation for URL imports */
|
|
77
|
+
noArchive?: boolean | undefined;
|
|
61
78
|
}
|
|
62
79
|
export declare function importFromInputs(inputs: string[], options: ImportInputsOptions): Promise<ImportResult>;
|
|
63
80
|
//# sourceMappingURL=importer.d.ts.map
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"importer.d.ts","sourceRoot":"","sources":["../../../src/features/import/importer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAsB5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGhE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAItD,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IACpC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GACxB;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,aAAa,GAAG,SAAS,CAAA;CAAE,GACrF;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;IACtB,yDAAyD;IACzD,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAClC,8CAA8C;IAC9C,aAAa,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC7C,4CAA4C;IAC5C,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACjC;AAwOD,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EAAE,EAChB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,YAAY,CAAC,CAiCvB"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Page } from "playwright-core";
|
|
2
|
+
import type { UrlArchiveFormat } from "../../config/schema.js";
|
|
3
|
+
/**
|
|
4
|
+
* Result of archive creation.
|
|
5
|
+
*/
|
|
6
|
+
export interface ArchiveResult {
|
|
7
|
+
data: string;
|
|
8
|
+
extension: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Create an archive of the current page in the specified format.
|
|
12
|
+
*
|
|
13
|
+
* @param page - Playwright page
|
|
14
|
+
* @param format - "mhtml" (CDP snapshot) or "html" (page source)
|
|
15
|
+
* @returns Archive data and file extension
|
|
16
|
+
*/
|
|
17
|
+
export declare function createArchive(page: Page, format: UrlArchiveFormat): Promise<ArchiveResult>;
|
|
18
|
+
//# sourceMappingURL=url-archive.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url-archive.d.ts","sourceRoot":"","sources":["../../../src/features/import/url-archive.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAsBD;;;;;;GAMG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC,CAQhG"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { UrlArchiveFormat, UrlConfig } from "../../config/schema.js";
|
|
2
|
+
import type { CslItem } from "../../core/csl-json/types.js";
|
|
3
|
+
import { type ArchiveResult } from "./url-archive.js";
|
|
4
|
+
/**
|
|
5
|
+
* Options for URL fetching.
|
|
6
|
+
*/
|
|
7
|
+
export interface UrlFetchOptions {
|
|
8
|
+
urlConfig: UrlConfig;
|
|
9
|
+
archiveFormat?: UrlArchiveFormat | undefined;
|
|
10
|
+
noArchive?: boolean | undefined;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Result of fetching a URL.
|
|
14
|
+
*/
|
|
15
|
+
export interface UrlFetchResult {
|
|
16
|
+
item: CslItem;
|
|
17
|
+
fulltext: string;
|
|
18
|
+
archive?: ArchiveResult | undefined;
|
|
19
|
+
warnings: string[];
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Fetch a single URL and extract metadata, fulltext, and archive.
|
|
23
|
+
*
|
|
24
|
+
* Launches and closes a browser for this single URL.
|
|
25
|
+
* For multiple URLs, use fetchUrls() to share a browser instance.
|
|
26
|
+
*/
|
|
27
|
+
export declare function fetchUrl(url: string, options: UrlFetchOptions): Promise<UrlFetchResult>;
|
|
28
|
+
/**
|
|
29
|
+
* Fetch multiple URLs reusing a single browser instance.
|
|
30
|
+
*
|
|
31
|
+
* Each URL is processed sequentially in a new page within the same browser.
|
|
32
|
+
* Returns one result per URL (success or error).
|
|
33
|
+
*/
|
|
34
|
+
export declare function fetchUrls(urls: string[], options: UrlFetchOptions): Promise<Map<string, UrlFetchResult | Error>>;
|
|
35
|
+
//# sourceMappingURL=url-fetcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url-fetcher.d.ts","sourceRoot":"","sources":["../../../src/features/import/url-fetcher.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAE5D,OAAO,EAAE,KAAK,aAAa,EAAiB,MAAM,kBAAkB,CAAC;AAIrE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,SAAS,CAAC;IACrB,aAAa,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC7C,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IACpC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAuFD;;;;;GAKG;AACH,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CAa7F;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,CAC7B,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,cAAc,GAAG,KAAK,CAAC,CAAC,CAuC9C"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Page } from "playwright-core";
|
|
2
|
+
/**
|
|
3
|
+
* Generate Markdown fulltext from a browser page.
|
|
4
|
+
*
|
|
5
|
+
* Uses Readability (in-browser) for clean HTML extraction,
|
|
6
|
+
* then Turndown (Node.js) for HTML → Markdown conversion.
|
|
7
|
+
* Falls back to full page HTML if Readability returns null.
|
|
8
|
+
*/
|
|
9
|
+
export declare function generateFulltext(page: Page): Promise<string>;
|
|
10
|
+
//# sourceMappingURL=url-fulltext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url-fulltext.d.ts","sourceRoot":"","sources":["../../../src/features/import/url-fulltext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAmD5C;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CASlE"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { Page } from "playwright-core";
|
|
2
|
+
import type { CslItem } from "../../core/csl-json/types.js";
|
|
3
|
+
/** Raw metadata extracted from the page via page.evaluate() */
|
|
4
|
+
interface RawMetadata {
|
|
5
|
+
jsonLd: unknown[];
|
|
6
|
+
citation: Record<string, string | string[]>;
|
|
7
|
+
dc: Record<string, string | string[]>;
|
|
8
|
+
og: Record<string, string>;
|
|
9
|
+
title: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Extract raw metadata from a Document-like object.
|
|
13
|
+
* Usable both from page.evaluate (browser) and JSDOM (tests).
|
|
14
|
+
*
|
|
15
|
+
* SYNC NOTE: The DOM scraping logic here must stay in sync with the
|
|
16
|
+
* inline page.evaluate string in extractMetadata() below.
|
|
17
|
+
* If you change selectors or extraction logic here, update the
|
|
18
|
+
* page.evaluate block as well.
|
|
19
|
+
*/
|
|
20
|
+
export declare function extractRawMetadataFromDocument(doc: {
|
|
21
|
+
querySelectorAll(sel: string): Iterable<{
|
|
22
|
+
getAttribute(n: string): string | null;
|
|
23
|
+
textContent: string | null;
|
|
24
|
+
}>;
|
|
25
|
+
title: string;
|
|
26
|
+
}): RawMetadata;
|
|
27
|
+
/**
|
|
28
|
+
* Extract metadata from a browser page using multiple sources.
|
|
29
|
+
*
|
|
30
|
+
* Priority: JSON-LD → citation_* → Dublin Core → Open Graph → HTML
|
|
31
|
+
*/
|
|
32
|
+
export declare function extractMetadata(page: Page): Promise<CslItem>;
|
|
33
|
+
export {};
|
|
34
|
+
//# sourceMappingURL=url-metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url-metadata.d.ts","sourceRoot":"","sources":["../../../src/features/import/url-metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAE5D,+DAA+D;AAC/D,UAAU,WAAW;IACnB,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IAC5C,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IACtC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;CACf;AAoTD;;;;;;;;GAQG;AACH,wBAAgB,8BAA8B,CAAC,GAAG,EAAE;IAClD,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAC;QACtC,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;QACvC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;KAC5B,CAAC,CAAC;IACH,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,WAAW,CAoBd;AAID;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CA6ElE"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { UrlArchiveFormat, UrlConfig } from "../../config/schema.js";
|
|
1
2
|
import type { ILibrary } from "../../core/library-interface.js";
|
|
2
3
|
import type { InputFormat } from "../import/detector.js";
|
|
3
4
|
import type { PubmedConfig } from "../import/fetcher.js";
|
|
@@ -14,6 +15,14 @@ export interface AddReferencesOptions {
|
|
|
14
15
|
pubmedConfig?: PubmedConfig;
|
|
15
16
|
/** Content from stdin (if provided, processed before file/identifier inputs) */
|
|
16
17
|
stdinContent?: string;
|
|
18
|
+
/** URL import configuration */
|
|
19
|
+
urlConfig?: UrlConfig | undefined;
|
|
20
|
+
/** Archive format override for URL imports */
|
|
21
|
+
archiveFormat?: UrlArchiveFormat | undefined;
|
|
22
|
+
/** Skip archive creation for URL imports */
|
|
23
|
+
noArchive?: boolean | undefined;
|
|
24
|
+
/** Attachments directory for saving URL import data (fulltext/archive) */
|
|
25
|
+
attachmentsDirectory?: string | undefined;
|
|
17
26
|
}
|
|
18
27
|
/**
|
|
19
28
|
* Information about a successfully added reference
|
|
@@ -27,6 +36,8 @@ export interface AddedItem {
|
|
|
27
36
|
idChanged?: boolean;
|
|
28
37
|
/** Original ID from source file before collision resolution */
|
|
29
38
|
originalId?: string;
|
|
39
|
+
/** Warnings from URL import (e.g., content extraction issues, save failures) */
|
|
40
|
+
warnings?: string[];
|
|
30
41
|
}
|
|
31
42
|
/**
|
|
32
43
|
* Information about a failed import
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../src/features/operations/add.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../src/features/operations/add.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAG1E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAEhE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAUzD,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,+BAA+B;IAC/B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;IAC9B,+BAA+B;IAC/B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,gFAAgF;IAChF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+BAA+B;IAC/B,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAClC,8CAA8C;IAC9C,aAAa,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC7C,4CAA4C;IAC5C,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAChC,0EAA0E;IAC1E,oBAAoB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3C;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,4EAA4E;IAC5E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,+DAA+D;IAC/D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gFAAgF;IAChF,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,uBAAuB,EAAE,aAAa,CAAC;CACvD;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,OAAO,uBAAuB,EAAE,aAAa,CAAC;CAC9D;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,EAAE,EAChB,OAAO,EAAE,QAAQ,EACjB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CAgD9B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-output.d.ts","sourceRoot":"","sources":["../../../src/features/operations/json-output.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAEpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAMzD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,WAAW,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,aAAa,CAAC;CAC9B;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,OAAO,EAAE,qBAAqB,EAAE,CAAC;IACjC,MAAM,EAAE,oBAAoB,EAAE,CAAC;CAChC;AAMD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAMD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAMD,MAAM,WAAW,oBAAoB;IACnC,iCAAiC;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,qDAAqD;IACrD,KAAK,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC9B;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,oBAAoB,GAC5B,aAAa,
|
|
1
|
+
{"version":3,"file":"json-output.d.ts","sourceRoot":"","sources":["../../../src/features/operations/json-output.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAEpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAMzD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,WAAW,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,aAAa,CAAC;CAC9B;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,OAAO,EAAE,qBAAqB,EAAE,CAAC;IACjC,MAAM,EAAE,oBAAoB,EAAE,CAAC;CAChC;AAMD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAMD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAMD,MAAM,WAAW,oBAAoB;IACnC,iCAAiC;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,qDAAqD;IACrD,KAAK,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC9B;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,oBAAoB,GAC5B,aAAa,CAsDf;AAED,MAAM,WAAW,uBAAuB;IACtC,iCAAiC;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,YAAY,EACpB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,uBAAuB,GAC/B,gBAAgB,CAwBlB;AAED,MAAM,WAAW,uBAAuB;IACtC,gDAAgD;IAChD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,0CAA0C;IAC1C,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AA8ED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,qBAAqB,EAC7B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,uBAAuB,GAC/B,gBAAgB,CAalB"}
|
package/dist/index.js
CHANGED
|
@@ -5,7 +5,7 @@ import { readFile, copyFile, stat, unlink, readdir } from "node:fs/promises";
|
|
|
5
5
|
import { tmpdir } from "node:os";
|
|
6
6
|
import { dirname, join } from "node:path";
|
|
7
7
|
import { fileURLToPath } from "node:url";
|
|
8
|
-
import { g as getOpenerCommand, o as openWithSystemApp, b as backupConfigSchema, c as configSchema, d as defaultConfig, a as getDefaultBackupDirectory, e as getDefaultCurrentDirConfigFilename, f as getDefaultLibraryPath, h as getDefaultUserConfigPath, l as loadConfig, i as logLevelSchema, n as normalizePartialConfig, p as partialConfigSchema, w as watchConfigSchema } from "./chunks/loader-
|
|
8
|
+
import { g as getOpenerCommand, o as openWithSystemApp, b as backupConfigSchema, c as configSchema, d as defaultConfig, a as getDefaultBackupDirectory, e as getDefaultCurrentDirConfigFilename, f as getDefaultLibraryPath, h as getDefaultUserConfigPath, l as loadConfig, i as logLevelSchema, n as normalizePartialConfig, p as partialConfigSchema, w as watchConfigSchema } from "./chunks/loader-CMu82BI5.js";
|
|
9
9
|
function validateCslJson(data) {
|
|
10
10
|
const parseResult = CslLibrarySchema.safeParse(data);
|
|
11
11
|
if (!parseResult.success) {
|
package/dist/server.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ncukondo/reference-manager",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.33.1",
|
|
4
4
|
"description": "A local reference management tool using CSL-JSON as the single source of truth",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -54,6 +54,7 @@
|
|
|
54
54
|
"@citation-js/plugin-ris": "^0.7.21",
|
|
55
55
|
"@iarna/toml": "^2.2.5",
|
|
56
56
|
"@modelcontextprotocol/sdk": "^1.25.1",
|
|
57
|
+
"@mozilla/readability": "^0.6.0",
|
|
57
58
|
"@ncukondo/academic-fulltext": "^0.2.6",
|
|
58
59
|
"chokidar": "^5.0.0",
|
|
59
60
|
"commander": "^12.1.0",
|
|
@@ -62,8 +63,11 @@
|
|
|
62
63
|
"ink": "^6.6.0",
|
|
63
64
|
"ink-ui": "^0.4.0",
|
|
64
65
|
"js-yaml": "^4.1.1",
|
|
66
|
+
"playwright-core": "^1.58.2",
|
|
65
67
|
"react": "^19.2.3",
|
|
66
68
|
"tabtab": "^3.0.2",
|
|
69
|
+
"turndown": "^7.2.2",
|
|
70
|
+
"turndown-plugin-gfm": "^1.0.2",
|
|
67
71
|
"write-file-atomic": "^7.0.0",
|
|
68
72
|
"yaml": "^2.8.2",
|
|
69
73
|
"zod": "^4.1.13"
|
|
@@ -73,12 +77,15 @@
|
|
|
73
77
|
"@hono/node-server": "^1.19.7",
|
|
74
78
|
"@types/chokidar": "^1.7.5",
|
|
75
79
|
"@types/js-yaml": "^4.0.9",
|
|
80
|
+
"@types/jsdom": "^28.0.1",
|
|
76
81
|
"@types/node": "^22.19.2",
|
|
77
82
|
"@types/react": "^19.2.9",
|
|
78
83
|
"@types/tabtab": "^3.0.4",
|
|
84
|
+
"@types/turndown": "^5.0.6",
|
|
79
85
|
"@types/write-file-atomic": "^4.0.3",
|
|
80
86
|
"@vitest/coverage-v8": "^2.1.9",
|
|
81
87
|
"husky": "^9.1.7",
|
|
88
|
+
"jsdom": "^29.0.1",
|
|
82
89
|
"lint-staged": "^16.2.7",
|
|
83
90
|
"react-devtools-core": "^6.1.5",
|
|
84
91
|
"typescript": "^5.6.0",
|