@nightowne/tas-cli 2.1.0 β 2.4.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/README.md +292 -92
- package/package.json +5 -3
- package/src/cli.js +181 -23
- package/src/crypto/encryption.js +38 -3
- package/src/db/index.js +19 -13
- package/src/fuse/mount.js +45 -47
- package/src/index.js +25 -70
- package/src/share/server.js +34 -56
- package/src/telegram/client.js +64 -16
- package/src/utils/branding.js +3 -3
- package/src/utils/chunker.js +4 -2
- package/src/utils/cli-helpers.js +44 -6
- package/src/utils/download-stream.js +87 -0
- package/src/utils/progress.js +3 -3
package/README.md
CHANGED
|
@@ -1,162 +1,362 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<img src="assets/demo.gif" alt="TAS
|
|
2
|
+
<img src="assets/demo.gif" alt="TAS β Telegram as Storage" width="640">
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
|
-
<h1 align="center">
|
|
5
|
+
<h1 align="center">
|
|
6
|
+
π¦ TAS β Telegram as Storage
|
|
7
|
+
</h1>
|
|
8
|
+
|
|
9
|
+
<h3 align="center">
|
|
10
|
+
Turn Telegram into your personal encrypted cloud drive.<br>
|
|
11
|
+
Free forever. Zero-knowledge. No credit card. No limits.
|
|
12
|
+
</h3>
|
|
6
13
|
|
|
7
14
|
<p align="center">
|
|
8
|
-
<
|
|
15
|
+
<a href="https://github.com/ixchio/tas/actions/workflows/ci.yml"><img src="https://github.com/ixchio/tas/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
|
|
16
|
+
<a href="https://www.npmjs.com/package/@nightowne/tas-cli"><img src="https://img.shields.io/npm/v/@nightowne/tas-cli?color=cb3837&label=npm" alt="npm version"></a>
|
|
17
|
+
<a href="https://www.npmjs.com/package/@nightowne/tas-cli"><img src="https://img.shields.io/npm/dm/@nightowne/tas-cli?color=blue" alt="Downloads"></a>
|
|
18
|
+
<a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/license-MIT-green.svg" alt="License: MIT"></a>
|
|
19
|
+
<a href="https://github.com/ixchio/tas/stargazers"><img src="https://img.shields.io/github/stars/ixchio/tas?style=social" alt="GitHub Stars"></a>
|
|
9
20
|
</p>
|
|
10
21
|
|
|
11
22
|
<p align="center">
|
|
12
|
-
<a href="
|
|
13
|
-
<a href="
|
|
14
|
-
<a href="
|
|
15
|
-
<a href="
|
|
23
|
+
<a href="#-quick-start">Quick Start</a> β’
|
|
24
|
+
<a href="#-why-tas">Why TAS</a> β’
|
|
25
|
+
<a href="#-features">Features</a> β’
|
|
26
|
+
<a href="#%EF%B8%8F-security">Security</a> β’
|
|
27
|
+
<a href="#-cli-reference">Docs</a> β’
|
|
28
|
+
<a href="#-contributing">Contributing</a>
|
|
16
29
|
</p>
|
|
17
30
|
|
|
18
31
|
---
|
|
19
32
|
|
|
20
|
-
|
|
33
|
+
<br>
|
|
34
|
+
|
|
35
|
+
## The Problem
|
|
36
|
+
|
|
37
|
+
Google Drive scans your files. Dropbox costs $12/mo. iCloud locks you into Apple. Every "free" cloud storage either **reads your data**, **charges you money**, or **caps your storage**.
|
|
21
38
|
|
|
22
|
-
|
|
39
|
+
Meanwhile, Telegram gives every user **unlimited storage** with a bot API β and nobody's using it.
|
|
40
|
+
|
|
41
|
+
## The Solution
|
|
42
|
+
|
|
43
|
+
**TAS** compresses, encrypts, and uploads your files to your own private Telegram bot chat. Your password never leaves your machine. Telegram only sees encrypted noise. You get a real CLI-powered cloud drive β with mount, sync, share, and search β for **$0/month, forever.**
|
|
23
44
|
|
|
24
45
|
```
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
β
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
β
|
|
33
|
-
|
|
46
|
+
Your Machine Telegram Cloud
|
|
47
|
+
ββββββββββββββββββββ ββββββββββββββββββββββββ
|
|
48
|
+
β β Compress β β
|
|
49
|
+
β tas push ββββ Encrypt ββββ π Encrypted Blobs β
|
|
50
|
+
β tas mount ββββ Chunk ββββ π Private Bot Chat β
|
|
51
|
+
β tas sync β β π Your Data, Safe β
|
|
52
|
+
β β Decrypt β β
|
|
53
|
+
β tas pull ββββ Decomp ββββ β Download on demandβ
|
|
54
|
+
β β β β
|
|
55
|
+
ββββββββββββββββββββ ββββββββββββββββββββββββ
|
|
56
|
+
SQLite Index Unlimited & Free
|
|
34
57
|
```
|
|
35
58
|
|
|
59
|
+
<br>
|
|
60
|
+
|
|
36
61
|
## β‘ Quick Start
|
|
37
62
|
|
|
63
|
+
Three commands. Two minutes. Zero cost.
|
|
64
|
+
|
|
38
65
|
```bash
|
|
39
66
|
npm install -g @nightowne/tas-cli
|
|
40
|
-
|
|
41
|
-
tas
|
|
42
|
-
tas
|
|
67
|
+
|
|
68
|
+
tas init # Connect your Telegram bot (guided wizard)
|
|
69
|
+
tas push secret.pdf # Upload β encrypted, compressed, done
|
|
70
|
+
tas pull secret.pdf # Download β decrypted, verified, instant
|
|
43
71
|
```
|
|
44
72
|
|
|
73
|
+
That's it. You now have encrypted cloud storage.
|
|
74
|
+
|
|
75
|
+
<br>
|
|
76
|
+
|
|
77
|
+
## π‘ Why TAS
|
|
78
|
+
|
|
79
|
+
<table>
|
|
80
|
+
<tr>
|
|
81
|
+
<td width="50%">
|
|
82
|
+
|
|
83
|
+
### vs. Google Drive
|
|
84
|
+
- β Google scans & indexes your files
|
|
85
|
+
- β 15 GB free tier
|
|
86
|
+
- β No encryption at rest (by you)
|
|
87
|
+
|
|
88
|
+
### vs. Dropbox
|
|
89
|
+
- β $12/mo for 2 TB
|
|
90
|
+
- β Can access your data
|
|
91
|
+
- β No CLI-first experience
|
|
92
|
+
|
|
93
|
+
### vs. Mega / pCloud
|
|
94
|
+
- β Freemium with tight caps
|
|
95
|
+
- β Closed source encryption
|
|
96
|
+
- β Can't self-host or script
|
|
97
|
+
|
|
98
|
+
</td>
|
|
99
|
+
<td width="50%">
|
|
100
|
+
|
|
101
|
+
### TAS gives you
|
|
102
|
+
- β
**$0/month** β forever, no caps
|
|
103
|
+
- β
**Zero-knowledge** β only you can decrypt
|
|
104
|
+
- β
**AES-256-GCM** β military-grade encryption
|
|
105
|
+
- β
**Mount as folder** β FUSE filesystem
|
|
106
|
+
- β
**Auto-sync** β Dropbox-style folder sync
|
|
107
|
+
- β
**Share links** β expiring, download-limited
|
|
108
|
+
- β
**CLI-first** β cron, Docker, CI/CD ready
|
|
109
|
+
- β
**Open source** β audit every line
|
|
110
|
+
|
|
111
|
+
</td>
|
|
112
|
+
</tr>
|
|
113
|
+
</table>
|
|
114
|
+
|
|
115
|
+
<br>
|
|
116
|
+
|
|
45
117
|
## π₯ Features
|
|
46
118
|
|
|
47
|
-
### Mount as a
|
|
119
|
+
### ποΈ Mount as a Local Folder
|
|
120
|
+
Drag and drop files into Telegram storage like it's a regular drive.
|
|
121
|
+
|
|
48
122
|
```bash
|
|
49
|
-
tas mount ~/cloud
|
|
123
|
+
tas mount ~/cloud # Mount your Telegram storage
|
|
124
|
+
# Now use Finder, Explorer, or any app β files sync to Telegram
|
|
50
125
|
tas unmount ~/cloud
|
|
51
126
|
```
|
|
52
|
-
Requires `libfuse` (`apt install fuse libfuse-dev` on Debian/Ubuntu, `brew install macfuse` on macOS).
|
|
53
127
|
|
|
54
|
-
|
|
128
|
+
> Requires `libfuse` β `apt install fuse libfuse-dev` on Linux, `brew install macfuse` on macOS.
|
|
129
|
+
|
|
130
|
+
### π Auto-Sync Folders
|
|
131
|
+
Dropbox-style: register a folder, and TAS watches for changes and uploads automatically.
|
|
132
|
+
|
|
55
133
|
```bash
|
|
56
|
-
tas sync add ~/Documents # Register
|
|
57
|
-
tas sync start # Watch
|
|
134
|
+
tas sync add ~/Documents # Register a folder
|
|
135
|
+
tas sync start # Watch & auto-upload changes
|
|
58
136
|
tas sync pull # Download everything back
|
|
137
|
+
tas sync status # See what's synced
|
|
59
138
|
```
|
|
60
139
|
|
|
61
|
-
### Share
|
|
140
|
+
### π Share with Expiring Links
|
|
141
|
+
Generate one-time download links with a sleek dark-themed download page. Files are decrypted on-the-fly β the link holder never sees your password.
|
|
142
|
+
|
|
62
143
|
```bash
|
|
63
|
-
tas share create
|
|
144
|
+
tas share create report.pdf --expire 1h --max-downloads 3
|
|
64
145
|
# β http://localhost:3000/d/a1b2c3d4...
|
|
65
146
|
|
|
66
|
-
tas share list #
|
|
67
|
-
tas share revoke a1b2c3d4 # Revoke
|
|
147
|
+
tas share list # See active shares
|
|
148
|
+
tas share revoke a1b2c3d4 # Revoke anytime
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### π·οΈ Tags & Search
|
|
152
|
+
Organize and find files instantly.
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
tas tag add report.pdf work Q4
|
|
156
|
+
tas search "report" # Search by filename
|
|
157
|
+
tas search -t work # Search by tag
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### π©Ί Self-Diagnostics
|
|
161
|
+
One command to check if everything is healthy.
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
tas doctor
|
|
165
|
+
# β Node.js 20.11.0
|
|
166
|
+
# β Config v2 (encrypted token)
|
|
167
|
+
# β Database: 42 files, 1.3 GB total
|
|
168
|
+
# β Disk space: 50 GB free (32% used)
|
|
169
|
+
# β Encryption: AES-256-GCM, PBKDF2-SHA512 600,000 iterations
|
|
170
|
+
# β¨ All systems go!
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### π€ Built for Automation
|
|
174
|
+
First-class JSON output, environment variable support, and zero interactivity mode.
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
export TAS_PASSWORD="your-password" # Skip prompts
|
|
178
|
+
export TAS_DATA_DIR="/custom/path" # Custom data location
|
|
179
|
+
|
|
180
|
+
tas push backup.tar.gz # Non-interactive upload
|
|
181
|
+
tas list --json | jq '.[].filename' # Pipe to jq
|
|
182
|
+
tas status --json # Machine-readable status
|
|
183
|
+
|
|
184
|
+
# Works with: cron β’ GitHub Actions β’ Docker β’ systemd β’ any CI/CD
|
|
68
185
|
```
|
|
69
|
-
|
|
186
|
+
|
|
187
|
+
<br>
|
|
70
188
|
|
|
71
189
|
## π‘οΈ Security
|
|
72
190
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
|
76
|
-
|
|
77
|
-
|
|
|
78
|
-
|
|
|
79
|
-
|
|
|
191
|
+
TAS implements **zero-knowledge encryption** β we can't read your data, Telegram can't read your data, nobody can read your data without your password.
|
|
192
|
+
|
|
193
|
+
| Layer | Implementation | Why It Matters |
|
|
194
|
+
|-------|----------------|----------------|
|
|
195
|
+
| **Cipher** | AES-256-GCM | Same cipher used by governments & banks |
|
|
196
|
+
| **Key Derivation** | PBKDF2-SHA512, **600k iterations** | OWASP 2025 compliant β brute-force resistant |
|
|
197
|
+
| **Salt** | 32 bytes, cryptographically random | Unique per file β no rainbow tables |
|
|
198
|
+
| **IV** | 12 bytes, cryptographically random | Unique per file β no pattern analysis |
|
|
199
|
+
| **Auth Tag** | 16 bytes GCM authentication | Tamper detection β any bit flip = rejected |
|
|
200
|
+
| **Bot Token** | Encrypted at rest (AES-256-GCM) | Even your config file is protected |
|
|
201
|
+
| **Password Hash** | Timing-safe PBKDF2 verification | Resistant to timing side-channel attacks |
|
|
202
|
+
| **Config Permissions** | `chmod 600` on config.json | Other users on your system can't read your credentials |
|
|
203
|
+
| **Integrity** | SHA-256 verified on every download | Bit-perfect downloads, guaranteed |
|
|
204
|
+
| **Share Server** | Localhost-only, XSS-safe, RFC 6266 | Binds to 127.0.0.1 by default β your LAN doesn't see it |
|
|
205
|
+
|
|
206
|
+
### What Telegram Sees
|
|
207
|
+
|
|
208
|
+
```
|
|
209
|
+
π¦ a7f3b2c1e9d4.tas β 12.4 MB β application/octet-stream
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
That's it. An opaque encrypted blob. No filename, no content, no metadata. Just noise.
|
|
213
|
+
|
|
214
|
+
<br>
|
|
215
|
+
|
|
216
|
+
## π Reliability
|
|
217
|
+
|
|
218
|
+
Built like professional backup tools (inspired by restic, rclone, borg):
|
|
80
219
|
|
|
81
|
-
|
|
220
|
+
| Feature | Details |
|
|
221
|
+
|---------|---------|
|
|
222
|
+
| **Exponential Backoff** | Auto-retry with jitter on Telegram 429 errors and network timeouts |
|
|
223
|
+
| **Rate Limiting** | Built-in 1 msg/sec limiter β never hits Telegram's rate limits |
|
|
224
|
+
| **Integrity Verification** | SHA-256 hash check after every single download |
|
|
225
|
+
| **Resume Uploads** | Interrupted? Run `tas resume` to pick up where you left off |
|
|
226
|
+
| **Graceful Shutdown** | SIGINT/SIGTERM handled cleanly β zero data corruption risk |
|
|
227
|
+
| **Self-Diagnostics** | `tas doctor` validates your entire setup in seconds |
|
|
82
228
|
|
|
83
|
-
|
|
229
|
+
<br>
|
|
230
|
+
|
|
231
|
+
## π CLI Reference
|
|
232
|
+
|
|
233
|
+
<details>
|
|
234
|
+
<summary><strong>Core Commands</strong></summary>
|
|
235
|
+
|
|
236
|
+
```bash
|
|
237
|
+
tas init # π Interactive setup wizard
|
|
238
|
+
tas push <file> # β¬οΈ Upload (encrypt + compress + upload)
|
|
239
|
+
tas pull <file|hash> # β¬οΈ Download (download + decrypt + verify)
|
|
240
|
+
tas list [-l] [--json] # π List all files
|
|
241
|
+
tas delete <file|hash> # ποΈ Remove from index (--hard to delete from Telegram)
|
|
242
|
+
tas status [--json] # π Storage stats
|
|
243
|
+
tas search <query> # π Find files by name or tag
|
|
244
|
+
tas resume # π Resume interrupted uploads
|
|
245
|
+
tas verify # β
Verify all files exist & are intact
|
|
246
|
+
tas doctor # π©Ί System health check
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
</details>
|
|
250
|
+
|
|
251
|
+
<details>
|
|
252
|
+
<summary><strong>Mount & Sync</strong></summary>
|
|
84
253
|
|
|
85
254
|
```bash
|
|
86
|
-
#
|
|
87
|
-
tas
|
|
88
|
-
tas push <file> # Upload
|
|
89
|
-
tas pull <file|hash> # Download
|
|
90
|
-
tas list [-l] # List files
|
|
91
|
-
tas delete <file|hash> # Delete
|
|
92
|
-
tas status # Stats
|
|
93
|
-
tas search <query> # Search files
|
|
94
|
-
tas resume # Resume interrupted uploads
|
|
95
|
-
tas verify # Check integrity
|
|
96
|
-
|
|
97
|
-
# FUSE Mount
|
|
98
|
-
tas mount <path> # Mount as folder
|
|
255
|
+
# FUSE Mount (use Telegram like a local folder)
|
|
256
|
+
tas mount <path> # Mount
|
|
99
257
|
tas unmount <path> # Unmount
|
|
100
258
|
|
|
101
|
-
# Sync
|
|
102
|
-
tas sync add <folder> # Register folder
|
|
103
|
-
tas sync start # Start watching
|
|
104
|
-
tas sync pull # Download all
|
|
105
|
-
tas sync status # Show status
|
|
259
|
+
# Folder Sync (Dropbox-style auto-upload)
|
|
260
|
+
tas sync add <folder> # Register a folder to sync
|
|
261
|
+
tas sync start # Start watching for changes
|
|
262
|
+
tas sync pull # Download all synced files
|
|
263
|
+
tas sync status # Show sync status
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
</details>
|
|
267
|
+
|
|
268
|
+
<details>
|
|
269
|
+
<summary><strong>Share & Tags</strong></summary>
|
|
106
270
|
|
|
107
|
-
|
|
108
|
-
|
|
271
|
+
```bash
|
|
272
|
+
# Temporary Share Links
|
|
273
|
+
tas share create <file> [--expire 24h] [--max-downloads 3]
|
|
109
274
|
tas share list # Active shares
|
|
110
|
-
tas share revoke <token> # Revoke
|
|
275
|
+
tas share revoke <token> # Revoke a share link
|
|
111
276
|
|
|
112
|
-
# Tags
|
|
277
|
+
# File Tags
|
|
113
278
|
tas tag add <file> <tags...>
|
|
114
279
|
tas tag remove <file> <tags...>
|
|
115
|
-
tas tag list [tag]
|
|
280
|
+
tas tag list [tag] # List tags or files with a specific tag
|
|
116
281
|
```
|
|
117
282
|
|
|
118
|
-
|
|
283
|
+
</details>
|
|
119
284
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
tas push file.pdf
|
|
285
|
+
<br>
|
|
286
|
+
|
|
287
|
+
## ποΈ Architecture
|
|
124
288
|
|
|
125
|
-
|
|
126
|
-
|
|
289
|
+
```
|
|
290
|
+
src/
|
|
291
|
+
βββ cli.js # Commander-based CLI β all commands
|
|
292
|
+
βββ index.js # Streaming upload/download pipeline
|
|
293
|
+
βββ crypto/
|
|
294
|
+
β βββ encryption.js # AES-256-GCM + PBKDF2-SHA512 key derivation
|
|
295
|
+
βββ db/
|
|
296
|
+
β βββ index.js # SQLite index (files, chunks, tags, shares, sync)
|
|
297
|
+
βββ telegram/
|
|
298
|
+
β βββ client.js # Bot API wrapper β retry, rate-limit, streaming
|
|
299
|
+
βββ fuse/
|
|
300
|
+
β βββ mount.js # FUSE filesystem β mount Telegram as a folder
|
|
301
|
+
βββ share/
|
|
302
|
+
β βββ server.js # HTTP server β expiring download links
|
|
303
|
+
βββ sync/
|
|
304
|
+
β βββ sync.js # Folder watcher β Dropbox-style auto-sync
|
|
305
|
+
βββ utils/
|
|
306
|
+
βββ download-stream.js # Shared TelegramβDecryptβDecompress pipeline
|
|
307
|
+
βββ compression.js # Smart gzip (skips already-compressed formats)
|
|
308
|
+
βββ chunker.js # 49MB chunking with custom WAS1 file headers
|
|
309
|
+
βββ progress.js # Terminal progress bar with speed + ETA
|
|
310
|
+
βββ throttle.js # Bandwidth limiter (stream transform)
|
|
311
|
+
βββ branding.js # ASCII art + formatting
|
|
312
|
+
βββ cli-helpers.js # Password management + config resolution
|
|
127
313
|
```
|
|
128
314
|
|
|
129
|
-
|
|
315
|
+
**Tech stack:** Node.js Β· better-sqlite3 Β· node-telegram-bot-api Β· fuse-native Β· Commander Β· Chalk Β· Ora Β· Inquirer
|
|
130
316
|
|
|
131
|
-
|
|
317
|
+
<br>
|
|
132
318
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
319
|
+
## β οΈ Good to Know
|
|
320
|
+
|
|
321
|
+
| | |
|
|
322
|
+
|---|---|
|
|
323
|
+
| π **Not a backup solution** | Telegram can delete content. Use TAS alongside proper backups, not instead of them. |
|
|
324
|
+
| π **49 MB chunks** | Files are automatically split due to Telegram Bot API limits. Fully transparent. |
|
|
325
|
+
| π **Single-user** | Designed for personal use. Not multi-tenant. |
|
|
326
|
+
| π **FUSE = Linux/macOS** | Mount feature requires `libfuse`. CLI works everywhere Node.js runs. |
|
|
327
|
+
| π **No versioning (yet)** | Overwriting a file replaces the previous version. |
|
|
328
|
+
|
|
329
|
+
<br>
|
|
138
330
|
|
|
139
331
|
## π οΈ Development
|
|
140
332
|
|
|
141
333
|
```bash
|
|
142
334
|
git clone https://github.com/ixchio/tas
|
|
143
335
|
cd tas && npm install
|
|
144
|
-
npm test #
|
|
336
|
+
npm test # 71 tests, all passing
|
|
145
337
|
```
|
|
146
338
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
339
|
+
PRs welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
|
|
340
|
+
|
|
341
|
+
<br>
|
|
342
|
+
|
|
343
|
+
## π Contributing
|
|
344
|
+
|
|
345
|
+
TAS is open source and we love contributions:
|
|
346
|
+
|
|
347
|
+
- π **Found a bug?** [Open an issue](https://github.com/ixchio/tas/issues)
|
|
348
|
+
- π‘ **Have an idea?** [Start a discussion](https://github.com/ixchio/tas/issues)
|
|
349
|
+
- π§ **Want to contribute?** Fork β Branch β PR β π
|
|
350
|
+
|
|
351
|
+
<br>
|
|
159
352
|
|
|
160
353
|
## π License
|
|
161
354
|
|
|
162
|
-
MIT β
|
|
355
|
+
MIT β use it, fork it, ship it, sell it. Do whatever you want.
|
|
356
|
+
|
|
357
|
+
---
|
|
358
|
+
|
|
359
|
+
<p align="center">
|
|
360
|
+
<sub>Built with β and stubbornness by <a href="https://github.com/ixchio">@ixchio</a></sub><br>
|
|
361
|
+
<sub>If TAS saved you money, consider giving it a β</sub>
|
|
362
|
+
</p>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nightowne/tas-cli",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.4.0",
|
|
4
4
|
"description": "Telegram as Storage - Automated encrypted cloud backup. Free, encrypted, scriptable. Mount as folder or use with cron/Docker.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "src/index.js",
|
|
@@ -46,12 +46,14 @@
|
|
|
46
46
|
"better-sqlite3": "^12.6.2",
|
|
47
47
|
"chalk": "^5.3.0",
|
|
48
48
|
"commander": "^12.1.0",
|
|
49
|
-
"fuse-native": "^2.2.6",
|
|
50
49
|
"inquirer": "^12.2.0",
|
|
51
50
|
"node-telegram-bot-api": "^0.66.0",
|
|
52
51
|
"ora": "^8.1.1"
|
|
53
52
|
},
|
|
53
|
+
"optionalDependencies": {
|
|
54
|
+
"fuse-native": "^2.2.6"
|
|
55
|
+
},
|
|
54
56
|
"engines": {
|
|
55
57
|
"node": ">=18.0.0"
|
|
56
58
|
}
|
|
57
|
-
}
|
|
59
|
+
}
|