@ncukondo/reference-manager 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/README.md +167 -0
  2. package/bin/reference-manager.js +5 -0
  3. package/dist/chunks/detector-BF8Mcc72.js +1415 -0
  4. package/dist/chunks/detector-BF8Mcc72.js.map +1 -0
  5. package/dist/cli/commands/add.d.ts +22 -0
  6. package/dist/cli/commands/add.d.ts.map +1 -0
  7. package/dist/cli/commands/index.d.ts +16 -0
  8. package/dist/cli/commands/index.d.ts.map +1 -0
  9. package/dist/cli/commands/list.d.ts +15 -0
  10. package/dist/cli/commands/list.d.ts.map +1 -0
  11. package/dist/cli/commands/remove.d.ts +19 -0
  12. package/dist/cli/commands/remove.d.ts.map +1 -0
  13. package/dist/cli/commands/search.d.ts +16 -0
  14. package/dist/cli/commands/search.d.ts.map +1 -0
  15. package/dist/cli/commands/server.d.ts +32 -0
  16. package/dist/cli/commands/server.d.ts.map +1 -0
  17. package/dist/cli/commands/update.d.ts +20 -0
  18. package/dist/cli/commands/update.d.ts.map +1 -0
  19. package/dist/cli/helpers.d.ts +61 -0
  20. package/dist/cli/helpers.d.ts.map +1 -0
  21. package/dist/cli/index.d.ts +13 -0
  22. package/dist/cli/index.d.ts.map +1 -0
  23. package/dist/cli/output/bibtex.d.ts +6 -0
  24. package/dist/cli/output/bibtex.d.ts.map +1 -0
  25. package/dist/cli/output/index.d.ts +7 -0
  26. package/dist/cli/output/index.d.ts.map +1 -0
  27. package/dist/cli/output/json.d.ts +6 -0
  28. package/dist/cli/output/json.d.ts.map +1 -0
  29. package/dist/cli/output/pretty.d.ts +6 -0
  30. package/dist/cli/output/pretty.d.ts.map +1 -0
  31. package/dist/cli/server-client.d.ts +38 -0
  32. package/dist/cli/server-client.d.ts.map +1 -0
  33. package/dist/cli/server-detection.d.ts +27 -0
  34. package/dist/cli/server-detection.d.ts.map +1 -0
  35. package/dist/cli.js +981 -0
  36. package/dist/cli.js.map +1 -0
  37. package/dist/config/defaults.d.ts +29 -0
  38. package/dist/config/defaults.d.ts.map +1 -0
  39. package/dist/config/index.d.ts +10 -0
  40. package/dist/config/index.d.ts.map +1 -0
  41. package/dist/config/loader.d.ts +27 -0
  42. package/dist/config/loader.d.ts.map +1 -0
  43. package/dist/config/schema.d.ts +129 -0
  44. package/dist/config/schema.d.ts.map +1 -0
  45. package/dist/core/csl-json/parser.d.ts +9 -0
  46. package/dist/core/csl-json/parser.d.ts.map +1 -0
  47. package/dist/core/csl-json/serializer.d.ts +15 -0
  48. package/dist/core/csl-json/serializer.d.ts.map +1 -0
  49. package/dist/core/csl-json/types.d.ts +124 -0
  50. package/dist/core/csl-json/types.d.ts.map +1 -0
  51. package/dist/core/csl-json/validator.d.ts +19 -0
  52. package/dist/core/csl-json/validator.d.ts.map +1 -0
  53. package/dist/core/identifier/generator.d.ts +17 -0
  54. package/dist/core/identifier/generator.d.ts.map +1 -0
  55. package/dist/core/identifier/normalize.d.ts +20 -0
  56. package/dist/core/identifier/normalize.d.ts.map +1 -0
  57. package/dist/core/identifier/uuid.d.ts +24 -0
  58. package/dist/core/identifier/uuid.d.ts.map +1 -0
  59. package/dist/core/index.d.ts +15 -0
  60. package/dist/core/index.d.ts.map +1 -0
  61. package/dist/core/library.d.ts +73 -0
  62. package/dist/core/library.d.ts.map +1 -0
  63. package/dist/core/reference.d.ts +86 -0
  64. package/dist/core/reference.d.ts.map +1 -0
  65. package/dist/features/duplicate/detector.d.ts +19 -0
  66. package/dist/features/duplicate/detector.d.ts.map +1 -0
  67. package/dist/features/duplicate/index.d.ts +6 -0
  68. package/dist/features/duplicate/index.d.ts.map +1 -0
  69. package/dist/features/duplicate/types.d.ts +45 -0
  70. package/dist/features/duplicate/types.d.ts.map +1 -0
  71. package/dist/features/file-watcher/file-watcher.d.ts +83 -0
  72. package/dist/features/file-watcher/file-watcher.d.ts.map +1 -0
  73. package/dist/features/file-watcher/index.d.ts +2 -0
  74. package/dist/features/file-watcher/index.d.ts.map +1 -0
  75. package/dist/features/merge/index.d.ts +8 -0
  76. package/dist/features/merge/index.d.ts.map +1 -0
  77. package/dist/features/merge/three-way.d.ts +16 -0
  78. package/dist/features/merge/three-way.d.ts.map +1 -0
  79. package/dist/features/merge/types.d.ts +74 -0
  80. package/dist/features/merge/types.d.ts.map +1 -0
  81. package/dist/features/search/index.d.ts +9 -0
  82. package/dist/features/search/index.d.ts.map +1 -0
  83. package/dist/features/search/matcher.d.ts +18 -0
  84. package/dist/features/search/matcher.d.ts.map +1 -0
  85. package/dist/features/search/normalizer.d.ts +12 -0
  86. package/dist/features/search/normalizer.d.ts.map +1 -0
  87. package/dist/features/search/sorter.d.ts +11 -0
  88. package/dist/features/search/sorter.d.ts.map +1 -0
  89. package/dist/features/search/tokenizer.d.ts +6 -0
  90. package/dist/features/search/tokenizer.d.ts.map +1 -0
  91. package/dist/features/search/types.d.ts +77 -0
  92. package/dist/features/search/types.d.ts.map +1 -0
  93. package/dist/index.d.ts +13 -0
  94. package/dist/index.d.ts.map +1 -0
  95. package/dist/index.js +559 -0
  96. package/dist/index.js.map +1 -0
  97. package/dist/server/index.d.ts +9 -0
  98. package/dist/server/index.d.ts.map +1 -0
  99. package/dist/server/portfile.d.ts +43 -0
  100. package/dist/server/portfile.d.ts.map +1 -0
  101. package/dist/server/routes/health.d.ts +7 -0
  102. package/dist/server/routes/health.d.ts.map +1 -0
  103. package/dist/server/routes/references.d.ts +9 -0
  104. package/dist/server/routes/references.d.ts.map +1 -0
  105. package/dist/server.js +91 -0
  106. package/dist/server.js.map +1 -0
  107. package/dist/utils/backup.d.ts +21 -0
  108. package/dist/utils/backup.d.ts.map +1 -0
  109. package/dist/utils/file.d.ts +9 -0
  110. package/dist/utils/file.d.ts.map +1 -0
  111. package/dist/utils/hash.d.ts +9 -0
  112. package/dist/utils/hash.d.ts.map +1 -0
  113. package/dist/utils/index.d.ts +5 -0
  114. package/dist/utils/index.d.ts.map +1 -0
  115. package/dist/utils/logger.d.ts +8 -0
  116. package/dist/utils/logger.d.ts.map +1 -0
  117. package/package.json +72 -0
package/README.md ADDED
@@ -0,0 +1,167 @@
1
+ # reference-manager
2
+
3
+ A local reference management tool using CSL-JSON as the single source of truth.
4
+
5
+ ## Features
6
+
7
+ - **CSL-JSON Native**: Uses CSL-JSON format as the primary data model
8
+ - **Command-line Interface**: Comprehensive CLI with search, add, update, remove commands
9
+ - **HTTP Server**: Optional background server for improved performance
10
+ - **Duplicate Detection**: Automatic detection via DOI, PMID, or title+author+year
11
+ - **Smart Search**: Full-text search with field-specific queries
12
+ - **File Monitoring**: Automatic reload on external changes
13
+ - **Backup Management**: Automatic backups with retention policies
14
+ - **Pandoc Compatible**: Works seamlessly with Pandoc's bibliography system
15
+
16
+ ## Installation
17
+
18
+ ### Requirements
19
+
20
+ - Node.js 22 or later
21
+
22
+ ### From npm (when published)
23
+
24
+ ```bash
25
+ npm install -g reference-manager
26
+ ```
27
+
28
+ ### From source
29
+
30
+ ```bash
31
+ git clone https://github.com/ncukondo/reference-manager.git
32
+ cd reference-manager
33
+ npm install
34
+ npm run build
35
+ npm link
36
+ ```
37
+
38
+ ## Usage
39
+
40
+ The command `ref` is available after installation (alias: `reference-manager`).
41
+
42
+ ### Basic Commands
43
+
44
+ ```bash
45
+ # List all references
46
+ ref list
47
+
48
+ # Search references
49
+ ref search "author:smith machine learning"
50
+
51
+ # Add a new reference (from JSON file)
52
+ ref add reference.json
53
+
54
+ # Add from stdin
55
+ cat reference.json | ref add
56
+
57
+ # Update a reference
58
+ ref update smith-2020 updates.json
59
+
60
+ # Remove a reference
61
+ ref remove smith-2020
62
+
63
+ # Server management
64
+ ref server start
65
+ ref server status
66
+ ref server stop
67
+ ```
68
+
69
+ ### Output Formats
70
+
71
+ ```bash
72
+ # Pretty format (default)
73
+ ref list
74
+
75
+ # JSON format
76
+ ref list --format json
77
+
78
+ # BibTeX format
79
+ ref list --format bibtex
80
+
81
+ # IDs only
82
+ ref list --format ids-only
83
+ ```
84
+
85
+ ### Configuration
86
+
87
+ Configuration file: `.reference-manager.config.toml`
88
+
89
+ ```toml
90
+ library = "~/references.json"
91
+ log_level = "info"
92
+
93
+ [backup]
94
+ enabled = true
95
+ max_count = 10
96
+ max_age_days = 30
97
+
98
+ [server]
99
+ auto_start = true
100
+ auto_stop_minutes = 60
101
+ ```
102
+
103
+ See `spec/architecture/cli.md` for full configuration options.
104
+
105
+ ## Development
106
+
107
+ ### Build
108
+
109
+ ```bash
110
+ npm run build
111
+ ```
112
+
113
+ ### Test
114
+
115
+ ```bash
116
+ # Run all tests
117
+ npm test
118
+
119
+ # Watch mode
120
+ npm run test:watch
121
+
122
+ # Coverage
123
+ npm run test:coverage
124
+ ```
125
+
126
+ ### Quality Checks
127
+
128
+ ```bash
129
+ # Type checking
130
+ npm run typecheck
131
+
132
+ # Linting
133
+ npm run lint
134
+
135
+ # Format
136
+ npm run format
137
+ ```
138
+
139
+ ## Project Status
140
+
141
+ ✅ **All phases completed** (Phase 1-5)
142
+
143
+ - 606 tests passing
144
+ - Full TypeScript type coverage
145
+ - Multi-platform support (Linux, macOS, Windows)
146
+ - Ready for distribution
147
+
148
+ ## Architecture
149
+
150
+ The project is organized into modular components:
151
+
152
+ - **Core**: CSL-JSON processing, Reference/Library management, Identifier generation
153
+ - **Features**: Search, Duplicate detection, 3-way merge, File monitoring
154
+ - **CLI**: Command-line interface with Commander.js
155
+ - **Server**: HTTP server with Hono
156
+ - **Utils**: Logging, File operations, Backup management
157
+ - **Config**: TOML-based configuration
158
+
159
+ See `spec/_index.md` for detailed architecture documentation.
160
+
161
+ ## License
162
+
163
+ MIT
164
+
165
+ ## Repository
166
+
167
+ https://github.com/ncukondo/reference-manager
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { main } from "../dist/cli.js";
4
+
5
+ await main(process.argv);