raindrop-cli 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.
- package/LICENSE +21 -0
- package/README.md +422 -0
- package/dist/client.d.ts +7 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/commands/auth.d.ts +3 -0
- package/dist/commands/auth.d.ts.map +1 -0
- package/dist/commands/bookmarks.d.ts +3 -0
- package/dist/commands/bookmarks.d.ts.map +1 -0
- package/dist/commands/collections.d.ts +3 -0
- package/dist/commands/collections.d.ts.map +1 -0
- package/dist/commands/favorites.d.ts +3 -0
- package/dist/commands/favorites.d.ts.map +1 -0
- package/dist/commands/filters.d.ts +3 -0
- package/dist/commands/filters.d.ts.map +1 -0
- package/dist/commands/highlights.d.ts +3 -0
- package/dist/commands/highlights.d.ts.map +1 -0
- package/dist/commands/index.d.ts +9 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/tags.d.ts +3 -0
- package/dist/commands/tags.d.ts.map +1 -0
- package/dist/commands/trash.d.ts +3 -0
- package/dist/commands/trash.d.ts.map +1 -0
- package/dist/config.d.ts +44 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +28827 -0
- package/dist/output/index.d.ts +23 -0
- package/dist/output/index.d.ts.map +1 -0
- package/dist/output/json.d.ts +6 -0
- package/dist/output/json.d.ts.map +1 -0
- package/dist/output/plain.d.ts +16 -0
- package/dist/output/plain.d.ts.map +1 -0
- package/dist/output/table.d.ts +3 -0
- package/dist/output/table.d.ts.map +1 -0
- package/dist/output/tree.d.ts +23 -0
- package/dist/output/tree.d.ts.map +1 -0
- package/dist/output/tsv.d.ts +3 -0
- package/dist/output/tsv.d.ts.map +1 -0
- package/dist/output/utils.d.ts +3 -0
- package/dist/output/utils.d.ts.map +1 -0
- package/dist/types/index.d.ts +13 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/utils/axios-interceptors.d.ts +44 -0
- package/dist/utils/axios-interceptors.d.ts.map +1 -0
- package/dist/utils/collections.d.ts +18 -0
- package/dist/utils/collections.d.ts.map +1 -0
- package/dist/utils/colors.d.ts +61 -0
- package/dist/utils/colors.d.ts.map +1 -0
- package/dist/utils/command-options.d.ts +15 -0
- package/dist/utils/command-options.d.ts.map +1 -0
- package/dist/utils/debug.d.ts +45 -0
- package/dist/utils/debug.d.ts.map +1 -0
- package/dist/utils/errors.d.ts +38 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/help-formatter.d.ts +80 -0
- package/dist/utils/help-formatter.d.ts.map +1 -0
- package/dist/utils/output-streams.d.ts +35 -0
- package/dist/utils/output-streams.d.ts.map +1 -0
- package/dist/utils/pagination.d.ts +13 -0
- package/dist/utils/pagination.d.ts.map +1 -0
- package/dist/utils/progress.d.ts +29 -0
- package/dist/utils/progress.d.ts.map +1 -0
- package/dist/utils/prompt.d.ts +32 -0
- package/dist/utils/prompt.d.ts.map +1 -0
- package/dist/utils/spinner.d.ts +69 -0
- package/dist/utils/spinner.d.ts.map +1 -0
- package/dist/utils/stdin.d.ts +31 -0
- package/dist/utils/stdin.d.ts.map +1 -0
- package/dist/utils/timeout.d.ts +35 -0
- package/dist/utils/timeout.d.ts.map +1 -0
- package/dist/utils/tree.d.ts +51 -0
- package/dist/utils/tree.d.ts.map +1 -0
- package/dist/utils/tty.d.ts +32 -0
- package/dist/utils/tty.d.ts.map +1 -0
- package/dist/utils/validation.d.ts +28 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/package.json +87 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Christian Catalan
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,422 @@
|
|
|
1
|
+
# raindrop-cli
|
|
2
|
+
|
|
3
|
+
[](https://npmjs.com/package/raindrop-cli)
|
|
4
|
+
[](LICENSE)
|
|
5
|
+
|
|
6
|
+
A fast, scriptable command-line interface for [Raindrop.io](https://raindrop.io) — the all-in-one bookmark manager.
|
|
7
|
+
|
|
8
|
+
Built for power users, automation workflows, and AI agent integration.
|
|
9
|
+
|
|
10
|
+
> **Disclaimer:** This is an unofficial, community-built tool and is not affiliated with or endorsed by Raindrop.io.
|
|
11
|
+
|
|
12
|
+
## Features
|
|
13
|
+
|
|
14
|
+
- **Full CRUD Operations** — Create, read, update, and delete bookmarks with ease
|
|
15
|
+
- **Powerful Search** — Use Raindrop's full search syntax from the command line
|
|
16
|
+
- **Batch Operations** — Update or delete multiple bookmarks at once via stdin piping
|
|
17
|
+
- **Multiple Output Formats** — JSON, table, TSV, or plain text for any workflow
|
|
18
|
+
- **AI-Friendly** — Structured output designed for LLM and agent consumption
|
|
19
|
+
- **Scriptable** — Quiet mode, stdin support, and composable commands
|
|
20
|
+
- **Collection Management** — Organize bookmarks with hierarchical collections
|
|
21
|
+
- **Tag Operations** — Bulk rename, delete, and manage tags
|
|
22
|
+
- **Fast** — Built with Bun for quick startup and execution
|
|
23
|
+
|
|
24
|
+
## Requirements
|
|
25
|
+
|
|
26
|
+
- Node.js 20+
|
|
27
|
+
|
|
28
|
+
## Installation
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
npm install -g raindrop-cli
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Or use without installing:
|
|
35
|
+
```bash
|
|
36
|
+
npx raindrop-cli --help
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
This installs `rd` as the primary command. An `rdcli` alias is also available if `rd` conflicts with another tool:
|
|
40
|
+
|
|
41
|
+
- **Windows**: `rd` is a built-in command (remove directory)
|
|
42
|
+
- **oh-my-zsh**: `rd` is aliased to `rmdir` — add `unalias rd` to your `~/.zshrc` or use `rdcli`
|
|
43
|
+
|
|
44
|
+
## Quick Start
|
|
45
|
+
|
|
46
|
+
### 1. Get Your API Token
|
|
47
|
+
|
|
48
|
+
Get a test token from [Raindrop.io Integrations Settings](https://app.raindrop.io/settings/integrations).
|
|
49
|
+
|
|
50
|
+
### 2. Authenticate
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
rd auth set-token
|
|
54
|
+
# Paste your token when prompted
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Or set via environment variable:
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
export RAINDROP_TOKEN=your-token-here
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### 3. Start Using
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
# List your bookmarks
|
|
67
|
+
rd list
|
|
68
|
+
|
|
69
|
+
# Add a bookmark
|
|
70
|
+
rd add https://example.com --tags "reading,tech"
|
|
71
|
+
|
|
72
|
+
# Search your bookmarks
|
|
73
|
+
rd search "typescript"
|
|
74
|
+
|
|
75
|
+
# Get help
|
|
76
|
+
rd --help
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Commands
|
|
80
|
+
|
|
81
|
+
### Bookmarks
|
|
82
|
+
|
|
83
|
+
The primary resource. Most bookmark commands have convenient shortcuts at the root level.
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
# List bookmarks
|
|
87
|
+
rd list # or: rd bookmarks list
|
|
88
|
+
rd list --limit 50 # limit results
|
|
89
|
+
rd list --tag javascript # filter by tag
|
|
90
|
+
rd list --type article # filter by type
|
|
91
|
+
rd list --favorites # show only favorites
|
|
92
|
+
rd list 12345 # list from specific collection
|
|
93
|
+
|
|
94
|
+
# Search
|
|
95
|
+
rd search "typescript" # full-text search
|
|
96
|
+
rd search "#javascript" # search by tag
|
|
97
|
+
rd search "domain:github.com" # search by domain
|
|
98
|
+
rd search "type:article created:2024-01" # combine filters
|
|
99
|
+
|
|
100
|
+
# Show details
|
|
101
|
+
rd show 12345 # show bookmark by ID
|
|
102
|
+
|
|
103
|
+
# Add bookmarks
|
|
104
|
+
rd add https://example.com # basic add
|
|
105
|
+
rd add https://example.com --title "My Title" --tags "dev,reading"
|
|
106
|
+
rd add https://example.com --favorite # add as favorite
|
|
107
|
+
rd add https://example.com --collection 12345
|
|
108
|
+
|
|
109
|
+
# Update bookmarks
|
|
110
|
+
rd update 12345 --title "New Title"
|
|
111
|
+
rd update 12345 --tags "new,tags" # replace all tags
|
|
112
|
+
rd update 12345 --favorite # mark as favorite
|
|
113
|
+
rd update 12345 --favorite false # remove favorite
|
|
114
|
+
|
|
115
|
+
# Delete bookmarks
|
|
116
|
+
rd delete 12345 # prompts for confirmation
|
|
117
|
+
rd delete 12345 --force # skip confirmation
|
|
118
|
+
|
|
119
|
+
# Batch operations
|
|
120
|
+
rd list -q | rd batch-update --favorite # favorite all bookmarks
|
|
121
|
+
rd list -q --tag old | rd batch-delete # delete by tag
|
|
122
|
+
rd batch-update --ids 123,456,789 --tags "archived"
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### Collections
|
|
126
|
+
|
|
127
|
+
Organize bookmarks into folders with optional nesting.
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
rd collections list # show collection tree
|
|
131
|
+
rd collections list --flat # flat list with IDs
|
|
132
|
+
rd collections show 12345 # collection details
|
|
133
|
+
rd collections add "My Collection" # create collection
|
|
134
|
+
rd collections add "Sub" --parent 12345 # create nested collection
|
|
135
|
+
rd collections delete 12345 --force # delete collection
|
|
136
|
+
rd collections stats # show system collection counts
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### Tags
|
|
140
|
+
|
|
141
|
+
Manage tags across your bookmarks.
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
rd tags list # list all tags with counts
|
|
145
|
+
rd tags list 12345 # tags in specific collection
|
|
146
|
+
rd tags rename "old-tag" "new-tag" -f # rename (merges if exists)
|
|
147
|
+
rd tags delete "unused-tag" -f # remove tag from all bookmarks
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
### Favorites
|
|
151
|
+
|
|
152
|
+
Quick access to your starred bookmarks.
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
rd favorites list # list all favorites
|
|
156
|
+
rd favorites list 12345 # favorites in collection
|
|
157
|
+
rd favorites list -s "#javascript" # filter favorites
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### Highlights
|
|
161
|
+
|
|
162
|
+
View your annotations and highlights.
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
rd highlights list # list all highlights
|
|
166
|
+
rd highlights list -c 12345 # highlights in collection
|
|
167
|
+
rd highlights show 12345 # highlights for bookmark
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### Filters
|
|
171
|
+
|
|
172
|
+
Discover available filter values for search.
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
rd filters list # show types, tags, dates
|
|
176
|
+
rd filters list 12345 # filters for collection
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
### Trash
|
|
180
|
+
|
|
181
|
+
Manage deleted bookmarks.
|
|
182
|
+
|
|
183
|
+
```bash
|
|
184
|
+
rd trash list # list trashed items
|
|
185
|
+
rd trash empty --dry-run # preview deletion
|
|
186
|
+
rd trash empty --force # permanently delete all
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
### Auth
|
|
190
|
+
|
|
191
|
+
Manage authentication.
|
|
192
|
+
|
|
193
|
+
```bash
|
|
194
|
+
rd auth status # check auth status
|
|
195
|
+
rd auth set-token # set new token (interactive)
|
|
196
|
+
rd auth clear # remove stored token
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
## Output Formats
|
|
200
|
+
|
|
201
|
+
Control output format for different use cases:
|
|
202
|
+
|
|
203
|
+
```bash
|
|
204
|
+
# Table (default for terminals)
|
|
205
|
+
rd list
|
|
206
|
+
|
|
207
|
+
# JSON (default when piped, great for jq)
|
|
208
|
+
rd list --json
|
|
209
|
+
rd list -f json | jq '.[].title'
|
|
210
|
+
|
|
211
|
+
# TSV (spreadsheet-friendly)
|
|
212
|
+
rd list -f tsv > bookmarks.tsv
|
|
213
|
+
|
|
214
|
+
# Plain text (human-readable)
|
|
215
|
+
rd list -f plain
|
|
216
|
+
|
|
217
|
+
# Quiet mode (just IDs, for scripting)
|
|
218
|
+
rd list -q
|
|
219
|
+
rd list -q | xargs -I {} rd show {}
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
## Scripting Examples
|
|
223
|
+
|
|
224
|
+
### Backup All Bookmarks
|
|
225
|
+
|
|
226
|
+
```bash
|
|
227
|
+
rd list --limit 50 --format json > backup.json
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
### Tag All Unsorted Bookmarks
|
|
231
|
+
|
|
232
|
+
```bash
|
|
233
|
+
rd list unsorted -q | rd batch-update --tags "needs-review"
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
### Delete Old Bookmarks
|
|
237
|
+
|
|
238
|
+
```bash
|
|
239
|
+
rd list --created 2020-01 -q | rd batch-delete
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
### Export to TSV for Spreadsheet
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
rd list --limit 100 -f tsv > bookmarks.tsv
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
### Find Broken Links
|
|
249
|
+
|
|
250
|
+
```bash
|
|
251
|
+
rd list --broken -f json | jq '.[] | {title, link}'
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
### Migrate Tags
|
|
255
|
+
|
|
256
|
+
```bash
|
|
257
|
+
rd tags rename "javascript" "js" -f
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
## Global Options
|
|
261
|
+
|
|
262
|
+
```
|
|
263
|
+
-V, --version Output version number
|
|
264
|
+
--format <format> Output format: json, table, tsv, plain
|
|
265
|
+
--json Shorthand for --format json
|
|
266
|
+
-q, --quiet Minimal output (just IDs)
|
|
267
|
+
-v, --verbose Show operational details
|
|
268
|
+
-d, --debug Show debug info
|
|
269
|
+
--no-color Disable colored output
|
|
270
|
+
-t, --timeout <seconds> Request timeout (default: 30, env: RDCLI_TIMEOUT)
|
|
271
|
+
-h, --help Display help
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
## Configuration
|
|
275
|
+
|
|
276
|
+
### Token Storage
|
|
277
|
+
|
|
278
|
+
Tokens can be provided via:
|
|
279
|
+
|
|
280
|
+
1. **Environment variable** (takes precedence): `RAINDROP_TOKEN`
|
|
281
|
+
2. **Config file**: `~/.config/raindrop-cli/config.json` (set via `rd auth set-token`)
|
|
282
|
+
|
|
283
|
+
### Environment Variables
|
|
284
|
+
|
|
285
|
+
| Variable | Description |
|
|
286
|
+
|----------|-------------|
|
|
287
|
+
| `RAINDROP_TOKEN` | API token (overrides config file) |
|
|
288
|
+
| `RDCLI_TIMEOUT` | Request timeout in seconds (default: 30) |
|
|
289
|
+
| `RDCLI_API_DELAY_MS` | Delay between API calls (milliseconds) |
|
|
290
|
+
| `NO_COLOR` | Disable colored output |
|
|
291
|
+
|
|
292
|
+
## Development
|
|
293
|
+
|
|
294
|
+
```bash
|
|
295
|
+
# Install dependencies
|
|
296
|
+
bun install
|
|
297
|
+
|
|
298
|
+
# Run in development
|
|
299
|
+
bun run dev -- list
|
|
300
|
+
|
|
301
|
+
# Run tests
|
|
302
|
+
bun run test # unit tests
|
|
303
|
+
bun run test:live # live API tests (requires token)
|
|
304
|
+
|
|
305
|
+
# Lint and format
|
|
306
|
+
bun run lint
|
|
307
|
+
bun run format
|
|
308
|
+
|
|
309
|
+
# Type check
|
|
310
|
+
bun run typecheck
|
|
311
|
+
|
|
312
|
+
# Build
|
|
313
|
+
bun run build
|
|
314
|
+
|
|
315
|
+
# Run all checks
|
|
316
|
+
bun run verify
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
### Verbose Commands
|
|
320
|
+
|
|
321
|
+
Most commands have a `:verbose` variant with human-friendly output (e.g., `bun run test:verbose`). The defaults are optimized for AI agents with minimal output.
|
|
322
|
+
|
|
323
|
+
### Live Tests in CI
|
|
324
|
+
|
|
325
|
+
Live tests run against the real Raindrop.io API and require a token. In CI, maintainers and collaborators can trigger them by commenting `/run-live-tests` on a PR.
|
|
326
|
+
|
|
327
|
+
> **Note:** Live tests only work on PRs from the same repository, not forks (secrets aren't available to forks for security).
|
|
328
|
+
|
|
329
|
+
### Project Structure
|
|
330
|
+
|
|
331
|
+
```
|
|
332
|
+
src/
|
|
333
|
+
├── index.ts # CLI entry point
|
|
334
|
+
├── commands/ # Command implementations
|
|
335
|
+
├── output/ # Output formatters (json, table, tsv, plain)
|
|
336
|
+
├── utils/ # Shared utilities
|
|
337
|
+
└── types/ # TypeScript types
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
## Releasing
|
|
341
|
+
|
|
342
|
+
For maintainers publishing a new version to npm.
|
|
343
|
+
|
|
344
|
+
### Prerequisites
|
|
345
|
+
|
|
346
|
+
- Push access to the repository
|
|
347
|
+
- npm account with publish rights to `raindrop-cli`
|
|
348
|
+
- Logged in to npm (`npm whoami` to verify)
|
|
349
|
+
- ggshield installed and authenticated (`ggshield auth status`)
|
|
350
|
+
|
|
351
|
+
### Release Process
|
|
352
|
+
|
|
353
|
+
```bash
|
|
354
|
+
# 1. Ensure you're on main with latest changes
|
|
355
|
+
git checkout main
|
|
356
|
+
git pull
|
|
357
|
+
|
|
358
|
+
# 2. Update CHANGELOG.md
|
|
359
|
+
# - Move items from "Unreleased" to new version section
|
|
360
|
+
# - Set the release date (e.g., ## [0.2.0] - 2026-01-15)
|
|
361
|
+
|
|
362
|
+
# 3. Commit the changelog
|
|
363
|
+
git add CHANGELOG.md
|
|
364
|
+
git commit -m "chore: update changelog for vX.Y.Z"
|
|
365
|
+
|
|
366
|
+
# 4. Bump version (creates commit + git tag automatically)
|
|
367
|
+
npm version patch # or: minor, major
|
|
368
|
+
# This updates package.json and creates a vX.Y.Z tag
|
|
369
|
+
|
|
370
|
+
# 5. Dry run to verify package contents
|
|
371
|
+
npm publish --dry-run --access public
|
|
372
|
+
|
|
373
|
+
# 6. Publish to npm
|
|
374
|
+
npm publish --access public
|
|
375
|
+
|
|
376
|
+
# 7. Push commits and tags to GitHub
|
|
377
|
+
git push && git push --tags
|
|
378
|
+
|
|
379
|
+
# 8. Verify installation works
|
|
380
|
+
npm info raindrop-cli
|
|
381
|
+
npx raindrop-cli@latest --version
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
### What Happens During Publish
|
|
385
|
+
|
|
386
|
+
The `prepublishOnly` script runs automatically before upload:
|
|
387
|
+
|
|
388
|
+
1. **Verify** — runs tests, lint, typecheck, format
|
|
389
|
+
2. **Build** — compiles to `dist/`
|
|
390
|
+
3. **Secret scan** — ggshield scans source and `dist/` for leaked secrets
|
|
391
|
+
4. **Package** — creates tarball with only: `dist/*`, `README.md`, `LICENSE`, `package.json`
|
|
392
|
+
|
|
393
|
+
No need to run `bun run build` manually — it's all handled automatically.
|
|
394
|
+
|
|
395
|
+
### Notes
|
|
396
|
+
|
|
397
|
+
- **Immutable** — published versions cannot be changed, only deprecated
|
|
398
|
+
- **Tags** — `npm version` creates the git tag; just remember to `git push --tags`
|
|
399
|
+
- **Secrets** — publish will fail if ggshield detects secrets in the bundle
|
|
400
|
+
|
|
401
|
+
## Contributing
|
|
402
|
+
|
|
403
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines.
|
|
404
|
+
|
|
405
|
+
Quick start:
|
|
406
|
+
|
|
407
|
+
1. Fork the repository
|
|
408
|
+
2. Create a feature branch
|
|
409
|
+
3. Make your changes
|
|
410
|
+
4. Run `bun run verify` to ensure tests pass
|
|
411
|
+
5. Submit a pull request
|
|
412
|
+
|
|
413
|
+
## License
|
|
414
|
+
|
|
415
|
+
[MIT](LICENSE)
|
|
416
|
+
|
|
417
|
+
## Links
|
|
418
|
+
|
|
419
|
+
- [Raindrop.io](https://raindrop.io)
|
|
420
|
+
- [Raindrop.io API Documentation](https://developer.raindrop.io)
|
|
421
|
+
- [Changelog](CHANGELOG.md)
|
|
422
|
+
- [Report Issues](https://github.com/crcatala/raindrop-cli-spike/issues)
|
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { client } from "@lasuillard/raindrop-client";
|
|
2
|
+
declare const Raindrop: typeof client.Raindrop;
|
|
3
|
+
type RaindropClient = InstanceType<typeof Raindrop>;
|
|
4
|
+
export declare function getClient(): RaindropClient;
|
|
5
|
+
export declare function resetClient(): void;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAa,MAAM,6BAA6B,CAAC;AAOhE,QAAA,MAAQ,QAAQ,wBAAW,CAAC;AAG5B,KAAK,cAAc,GAAG,YAAY,CAAC,OAAO,QAAQ,CAAC,CAAC;AAIpD,wBAAgB,SAAS,IAAI,cAAc,CA2B1C;AAED,wBAAgB,WAAW,IAAI,IAAI,CAElC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwEpC,wBAAgB,iBAAiB,IAAI,OAAO,CAuL3C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bookmarks.d.ts","sourceRoot":"","sources":["../../src/commands/bookmarks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8PpC,wBAAgB,sBAAsB,IAAI,OAAO,CAkvChD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collections.d.ts","sourceRoot":"","sources":["../../src/commands/collections.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+FpC,wBAAgB,wBAAwB,IAAI,OAAO,CAkTlD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"favorites.d.ts","sourceRoot":"","sources":["../../src/commands/favorites.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsEpC,wBAAgB,sBAAsB,IAAI,OAAO,CAwHhD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../../src/commands/filters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsFpC,wBAAgB,oBAAoB,IAAI,OAAO,CAmF9C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"highlights.d.ts","sourceRoot":"","sources":["../../src/commands/highlights.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmDpC,wBAAgB,uBAAuB,IAAI,OAAO,CAiIjD"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { createAuthCommand } from "./auth.js";
|
|
2
|
+
export { createBookmarksCommand } from "./bookmarks.js";
|
|
3
|
+
export { createCollectionsCommand } from "./collections.js";
|
|
4
|
+
export { createFavoritesCommand } from "./favorites.js";
|
|
5
|
+
export { createHighlightsCommand } from "./highlights.js";
|
|
6
|
+
export { createTagsCommand } from "./tags.js";
|
|
7
|
+
export { createFiltersCommand } from "./filters.js";
|
|
8
|
+
export { createTrashCommand } from "./trash.js";
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tags.d.ts","sourceRoot":"","sources":["../../src/commands/tags.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsCpC,wBAAgB,iBAAiB,IAAI,OAAO,CAwL3C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trash.d.ts","sourceRoot":"","sources":["../../src/commands/trash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwDpC,wBAAgB,kBAAkB,IAAI,OAAO,CAoL5C"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export interface StoredConfig {
|
|
2
|
+
token?: string;
|
|
3
|
+
defaultFormat?: "json" | "table" | "tsv";
|
|
4
|
+
defaultCollection?: number;
|
|
5
|
+
}
|
|
6
|
+
export interface ResolvedConfig {
|
|
7
|
+
token: string | null;
|
|
8
|
+
tokenSource: "env" | "config" | null;
|
|
9
|
+
defaultFormat: "json" | "table" | "tsv";
|
|
10
|
+
defaultCollection: number;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Get the stored token from config file (not env var).
|
|
14
|
+
*/
|
|
15
|
+
export declare function getStoredToken(): string | null;
|
|
16
|
+
/**
|
|
17
|
+
* Store token in config file.
|
|
18
|
+
*/
|
|
19
|
+
export declare function setStoredToken(token: string): void;
|
|
20
|
+
/**
|
|
21
|
+
* Clear token from config file.
|
|
22
|
+
*/
|
|
23
|
+
export declare function clearStoredToken(): void;
|
|
24
|
+
/**
|
|
25
|
+
* Check if a token is configured (either env or config file).
|
|
26
|
+
*/
|
|
27
|
+
export declare function hasToken(): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Get token source for display purposes.
|
|
30
|
+
*/
|
|
31
|
+
export declare function getTokenSource(): "env" | "config" | null;
|
|
32
|
+
/**
|
|
33
|
+
* Get resolved config with precedence: env > config file.
|
|
34
|
+
*/
|
|
35
|
+
export declare function getConfig(): ResolvedConfig;
|
|
36
|
+
/**
|
|
37
|
+
* Reset cached config (useful for testing or after token changes).
|
|
38
|
+
*/
|
|
39
|
+
export declare function resetConfig(): void;
|
|
40
|
+
/**
|
|
41
|
+
* Get the config file path (for display purposes).
|
|
42
|
+
*/
|
|
43
|
+
export declare function getConfigFilePath(): string;
|
|
44
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;IACzC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,EAAE,KAAK,GAAG,QAAQ,GAAG,IAAI,CAAC;IACrC,aAAa,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;IACxC,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAwCD;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,GAAG,IAAI,CAG9C;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAIlD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAIvC;AAED;;GAEG;AACH,wBAAgB,QAAQ,IAAI,OAAO,CAElC;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,KAAK,GAAG,QAAQ,GAAG,IAAI,CAQxD;AAID;;GAEG;AACH,wBAAgB,SAAS,IAAI,cAAc,CA2B1C;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAElC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|