vacuum-sol 1.0.4 → 1.0.5

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 CHANGED
@@ -195,20 +195,25 @@ vacuum config # Show configuration
195
195
 
196
196
  ## 🤖 Telegram Integration
197
197
 
198
- ### Setup
198
+ ### Setup & Guide
199
199
 
200
- 1. Create a bot: Message `@BotFather` on Telegram `/newbot`
201
- 2. Get your chat ID: Message `@userinfobot`
202
- 3. Add to `.env`:
203
- ```env
204
- TELEGRAM_BOT_TOKEN=your-bot-token
205
- TELEGRAM_CHAT_ID=your-chat-id
206
- ```
200
+ > **👉 [Read the full Telegram Setup Guide](docs/TELEGRAM.md)**
201
+
202
+ Quick setup:
203
+
204
+ 1. **Get Token**: Message @BotFather (`/newbot`)
205
+ 2. **Get Chat ID**: Message @userinfobot (`/start`)
206
+ 3. **Update Config**: Add to `.env`
207
+
208
+ ```env
209
+ TELEGRAM_BOT_TOKEN=...
210
+ TELEGRAM_CHAT_ID=...
211
+ ```
207
212
 
208
213
  ### Run the Bot
209
214
 
210
215
  ```bash
211
- npm start -- bot
216
+ npm run bot
212
217
  ```
213
218
 
214
219
  ### Telegram Commands
@@ -226,6 +231,8 @@ npm start -- bot
226
231
 
227
232
  ## 💻 Using as an SDK
228
233
 
234
+ > **👉 [Read the SDK vs CLI Guide](docs/SDK_VS_CLI.md)**
235
+
229
236
  Vacuum can be used as a TypeScript library to integrate rent reclamation directly into your backend or scripts.
230
237
 
231
238
  ```typescript
@@ -460,9 +467,9 @@ MIT License - see [LICENSE](LICENSE)
460
467
 
461
468
  ## 🙏 Acknowledgements
462
469
 
463
- - [Kora](https://kora.network) - Gasless transaction infrastructure
470
+ - [Kora](https://launch.solana.com/docs/kora) - Gasless transaction infrastructure
464
471
  - [Solana](https://solana.com) - High-performance blockchain
465
- - SuperteamNG - Bounty program
472
+ - SuperteamNG Bounty
466
473
 
467
474
  ---
468
475
 
@@ -471,5 +478,5 @@ MIT License - see [LICENSE](LICENSE)
471
478
  <br><br>
472
479
  <a href="https://github.com/Don-Vicks/vaccum">GitHub</a> •
473
480
  <a href="https://www.npmjs.com/package/vacuum-sol">NPM</a> •
474
- <a href="http://vaccum-bot.vercel.app">Website</a>
481
+ <a href="http://vaccum-bot.vercel.app">Website</a>
475
482
  </div>
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAQ3C,MAAM,WAAW,MAAM;IAErB,MAAM,EAAE,MAAM,CAAA;IAGd,eAAe,EAAE,SAAS,CAAA;IAC1B,mBAAmB,EAAE,MAAM,CAAA;IAG3B,WAAW,CAAC,EAAE,MAAM,CAAA;IAGpB,MAAM,EAAE,OAAO,CAAA;IACf,aAAa,EAAE,MAAM,CAAA;IACrB,eAAe,EAAE,MAAM,CAAA;IAGvB,MAAM,EAAE,MAAM,CAAA;CACf;AAeD,wBAAgB,UAAU,IAAI,MAAM,CA+BnC;AAED,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU,CAYnE;AAKD,wBAAgB,SAAS,IAAI,MAAM,CAKlC;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,QAIhD;AAED,wBAAgB,WAAW,SAE1B"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAQ3C,MAAM,WAAW,MAAM;IAErB,MAAM,EAAE,MAAM,CAAA;IAGd,eAAe,EAAE,SAAS,CAAA;IAC1B,mBAAmB,EAAE,MAAM,CAAA;IAG3B,WAAW,CAAC,EAAE,MAAM,CAAA;IAGpB,MAAM,EAAE,OAAO,CAAA;IACf,aAAa,EAAE,MAAM,CAAA;IACrB,eAAe,EAAE,MAAM,CAAA;IAGvB,MAAM,EAAE,MAAM,CAAA;CACf;AAeD,wBAAgB,UAAU,IAAI,MAAM,CA+BnC;AAED,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU,CAYnE;AAKD,wBAAgB,SAAS,IAAI,MAAM,CAKlC;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,QAShD;AAED,wBAAgB,WAAW,SAE1B"}
package/dist/config.js CHANGED
@@ -18,15 +18,19 @@ function getEnv(key, defaultValue) {
18
18
  }
19
19
  export function loadConfig() {
20
20
  const treasuryAddressStr = process.env.TREASURY_ADDRESS;
21
- if (!treasuryAddressStr) {
22
- throw new Error('TREASURY_ADDRESS is required. Set it in your .env file.');
23
- }
24
21
  let treasuryAddress;
25
- try {
26
- treasuryAddress = new PublicKey(treasuryAddressStr);
22
+ if (!treasuryAddressStr) {
23
+ // Default to a zero address or similar if not set, to allow app to start
24
+ // Components that need it will check or fail later
25
+ treasuryAddress = PublicKey.default;
27
26
  }
28
- catch {
29
- throw new Error(`Invalid TREASURY_ADDRESS: ${treasuryAddressStr}. Must be a valid Solana public key.`);
27
+ else {
28
+ try {
29
+ treasuryAddress = new PublicKey(treasuryAddressStr);
30
+ }
31
+ catch {
32
+ treasuryAddress = PublicKey.default;
33
+ }
30
34
  }
31
35
  const operatorKeypairPath = getEnv('OPERATOR_KEYPAIR_PATH', './operator-keypair.json');
32
36
  return {
@@ -58,8 +62,14 @@ export function getConfig() {
58
62
  return _config;
59
63
  }
60
64
  export function setConfig(config) {
61
- // If config is not loaded, load defaults first then merge
62
- const current = _config || loadConfig();
65
+ // If config is not loaded, try to load defaults, but don't fail if we can't
66
+ let current;
67
+ try {
68
+ current = _config || loadConfig();
69
+ }
70
+ catch (e) {
71
+ current = loadConfig();
72
+ }
63
73
  _config = { ...current, ...config };
64
74
  }
65
75
  export function resetConfig() {
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,QAAQ,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAA;AAC7C,OAAO,IAAI,MAAM,MAAM,CAAA;AAEvB,6BAA6B;AAC7B,OAAO,EAAE,CAAA;AAsBT,8BAA8B;AAC9B,SAAS,MAAM,CAAC,GAAW,EAAE,YAAqB;IAChD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC9B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,YAAY,CAAA;QACrB,CAAC;QACD,oDAAoD;QACpD,OAAO,EAAE,CAAA;IACX,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAA;IAEvD,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAA;IAC5E,CAAC;IAED,IAAI,eAA0B,CAAA;IAC9B,IAAI,CAAC;QACH,eAAe,GAAG,IAAI,SAAS,CAAC,kBAAkB,CAAC,CAAA;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,6BAA6B,kBAAkB,sCAAsC,CACtF,CAAA;IACH,CAAC;IAED,MAAM,mBAAmB,GAAG,MAAM,CAChC,uBAAuB,EACvB,yBAAyB,CAC1B,CAAA;IAED,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,gBAAgB,EAAE,+BAA+B,CAAC;QACjE,eAAe;QACf,mBAAmB;QACnB,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa;QACtC,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,MAAM;QAC5C,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,gBAAgB,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;QAC3D,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,mBAAmB,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;QAC/D,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,oBAAoB,CAAC;KAChD,CAAA;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,WAAmB;IACrD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;IAE9C,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACb,kCAAkC,YAAY,IAAI;YAChD,+DAA+D,CAClE,CAAA;IACH,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAA;IACnE,OAAO,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;AACrC,CAAC;AAED,0CAA0C;AAC1C,IAAI,OAAO,GAAkB,IAAI,CAAA;AAEjC,MAAM,UAAU,SAAS;IACvB,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,GAAG,UAAU,EAAE,CAAA;IACxB,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,MAAuB;IAC/C,0DAA0D;IAC1D,MAAM,OAAO,GAAG,OAAO,IAAI,UAAU,EAAE,CAAA;IACvC,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,MAAM,EAAE,CAAA;AACrC,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,GAAG,IAAI,CAAA;AAChB,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vacuum-sol",
3
- "version": "1.0.4",
3
+ "version": "1.0.5",
4
4
  "description": "Vacuum - Suck up forgotten rent from Solana accounts",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -10,6 +10,8 @@
10
10
  "scripts": {
11
11
  "build": "tsc",
12
12
  "dev": "tsx watch src/cli.ts",
13
+ "bot": "node dist/cli.js bot",
14
+ "bot:dev": "tsx src/cli.ts bot",
13
15
  "start": "node dist/cli.js",
14
16
  "test": "vitest run",
15
17
  "test:watch": "vitest",