fints-lib-cli 0.4.0 → 0.5.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 CHANGED
@@ -215,6 +215,122 @@ fints-lib submit-direct-debit --url https://example.com/fints --name username --
215
215
  --mandate-date 2022-01-10 --collection-date 2022-01-15 --remittance "Invoice 0815"
216
216
  ```
217
217
 
218
+ ## Practical CLI Examples
219
+
220
+ ### Using Environment Variables
221
+
222
+ To avoid typing credentials repeatedly, create a shell script or use environment variables:
223
+
224
+ ```bash
225
+ #!/bin/bash
226
+ # save as fints-env.sh
227
+
228
+ export FINTS_URL="https://banking.example.com/fints"
229
+ export FINTS_USER="myusername"
230
+ export FINTS_PIN="mypin"
231
+ export FINTS_BLZ="12345678"
232
+
233
+ # Then use in commands:
234
+ # source fints-env.sh
235
+ # fints-lib list-accounts --url $FINTS_URL -n $FINTS_USER -p $FINTS_PIN -b $FINTS_BLZ
236
+ ```
237
+
238
+ ### Quick Account Overview
239
+
240
+ ```bash
241
+ # Get account list in JSON format for processing
242
+ fints-lib list-accounts \
243
+ --url https://banking.example.com/fints \
244
+ -n username -p 12345 -b 12345678 \
245
+ --json | jq '.'
246
+
247
+ # Check balance for a specific account
248
+ fints-lib get-balance \
249
+ --url https://banking.example.com/fints \
250
+ -n username -p 12345 -b 12345678 \
251
+ -i DE89370400440532013000 \
252
+ --json | jq '.value'
253
+ ```
254
+
255
+ ### Export Transactions to File
256
+
257
+ ```bash
258
+ # Fetch and save transactions as JSON
259
+ fints-lib fetch-transactions \
260
+ --url https://banking.example.com/fints \
261
+ -n username -p 12345 -b 12345678 \
262
+ -i DE89370400440532013000 \
263
+ -s 2024-01-01 -e 2024-12-31 \
264
+ --json > transactions-2024.json
265
+
266
+ # Or save verbose output to text file
267
+ fints-lib fetch-transactions \
268
+ --url https://banking.example.com/fints \
269
+ -n username -p 12345 -b 12345678 \
270
+ -i DE89370400440532013000 \
271
+ -s 2024-01-01 -e 2024-12-31 \
272
+ --verbose > transactions-2024.txt
273
+ ```
274
+
275
+ ### Monthly Statement Automation
276
+
277
+ ```bash
278
+ #!/bin/bash
279
+ # monthly-statement.sh - Fetch last month's transactions
280
+
281
+ # Calculate date range for last month
282
+ # For Linux (GNU date):
283
+ START_DATE=$(date -d "last month" +%Y-%m-01)
284
+ END_DATE=$(date -d "-1 day $(date +%Y-%m-01)" +%Y-%m-%d)
285
+
286
+ # For macOS (BSD date), install GNU coreutils and use 'gdate':
287
+ # brew install coreutils
288
+ # START_DATE=$(gdate -d "last month" +%Y-%m-01)
289
+ # END_DATE=$(gdate -d "-1 day $(gdate +%Y-%m-01)" +%Y-%m-%d)
290
+
291
+ # Fetch transactions
292
+ fints-lib fetch-transactions \
293
+ --url "$FINTS_URL" \
294
+ -n "$FINTS_USER" \
295
+ -p "$FINTS_PIN" \
296
+ -b "$FINTS_BLZ" \
297
+ -i "$ACCOUNT_IBAN" \
298
+ -s "$START_DATE" \
299
+ -e "$END_DATE" \
300
+ --json > "statement-$(date +%Y-%m).json"
301
+
302
+ echo "Statement saved for period: $START_DATE to $END_DATE"
303
+ ```
304
+
305
+ ### Check Multiple Accounts
306
+
307
+ ```bash
308
+ #!/bin/bash
309
+ # check-all-accounts.sh
310
+
311
+ ACCOUNTS=("DE89370400440532013000" "DE89370400440532013001")
312
+
313
+ for IBAN in "${ACCOUNTS[@]}"; do
314
+ echo "Checking account: $IBAN"
315
+ fints-lib get-balance \
316
+ --url "$FINTS_URL" \
317
+ -n "$FINTS_USER" \
318
+ -p "$FINTS_PIN" \
319
+ -b "$FINTS_BLZ" \
320
+ -i "$IBAN" \
321
+ --json | jq -r '" Balance: \(.value.value) \(.value.currency)"'
322
+ echo ""
323
+ done
324
+ ```
325
+
326
+ ## Tips
327
+
328
+ - Use `--json` flag for machine-readable output that can be processed with tools like `jq`
329
+ - Use `--verbose` flag to see detailed information during development
330
+ - Use `--debug` flag to troubleshoot connection issues
331
+ - Store credentials in environment variables or a secure credential manager
332
+ - Use the [FinTS Institute Database](https://github.com/jhermsmeier/fints-institute-db) to find your bank's URL
333
+
218
334
  ## Resources
219
335
 
220
336
  - [Database of banks with their URLs](https://github.com/jhermsmeier/fints-institute-db)
package/dist/config.js CHANGED
@@ -1,43 +1,10 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
2
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
3
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
4
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
5
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
22
6
  return c > 3 && r && Object.defineProperty(target, key, r), r;
23
7
  };
24
- var __importStar = (this && this.__importStar) || (function () {
25
- var ownKeys = function(o) {
26
- ownKeys = Object.getOwnPropertyNames || function (o) {
27
- var ar = [];
28
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
- return ar;
30
- };
31
- return ownKeys(o);
32
- };
33
- return function (mod) {
34
- if (mod && mod.__esModule) return mod;
35
- var result = {};
36
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
- __setModuleDefault(result, mod);
38
- return result;
39
- };
40
- })();
41
8
  var __metadata = (this && this.__metadata) || function (k, v) {
42
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
43
10
  };
@@ -45,10 +12,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
45
12
  exports.BaseConfig = void 0;
46
13
  const clime_1 = require("clime");
47
14
  const fints_lib_1 = require("fints-lib");
48
- const YAML = __importStar(require("yamljs"));
15
+ const yaml_1 = require("yaml");
49
16
  class BaseConfig extends clime_1.Options {
50
17
  get serializer() {
51
- return this.json ? JSON.stringify : (obj) => YAML.stringify(obj, 4);
18
+ return this.json ? JSON.stringify : (obj) => (0, yaml_1.stringify)(obj, { indent: 4 });
52
19
  }
53
20
  }
54
21
  exports.BaseConfig = BaseConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iCAAwC;AACxC,yCAA6D;AAC7D,6CAA+B;AAE/B,MAAa,UAAW,SAAQ,eAAO;IA8BnC,IAAW,UAAU;QACjB,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAC7E,CAAC;CACJ;AAjCD,gCAiCC;AA1BU;IANN,IAAA,cAAM,EAAC;QACJ,QAAQ,EAAE,KAAK;QACf,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,6BAA6B;QAC1C,OAAO,EAAE,wBAAY;KACxB,CAAC;;6CACuB;AAGlB;IADN,IAAA,cAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC;;uCACjD;AAGZ;IADN,IAAA,cAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,+BAA+B,EAAE,CAAC;;wCAChE;AAGb;IADN,IAAA,cAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,0BAA0B,EAAE,CAAC;;uCAC5D;AAGZ;IADN,IAAA,cAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,gCAAgC,EAAE,CAAC;;uCAClE;AAGZ;IADN,IAAA,cAAM,EAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;;yCACd;AAGf;IADN,IAAA,cAAM,EAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;;2CACZ;AAGjB;IADN,IAAA,cAAM,EAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;;wCACf"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iCAAwC;AACxC,yCAA6D;AAC7D,+BAAiC;AAEjC,MAAa,UAAW,SAAQ,eAAO;IA8BnC,IAAW,UAAU;QACjB,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,IAAA,gBAAS,EAAC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IACpF,CAAC;CACJ;AAjCD,gCAiCC;AA1BU;IANN,IAAA,cAAM,EAAC;QACJ,QAAQ,EAAE,KAAK;QACf,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,6BAA6B;QAC1C,OAAO,EAAE,wBAAY;KACxB,CAAC;;6CACuB;AAGlB;IADN,IAAA,cAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC;;uCACjD;AAGZ;IADN,IAAA,cAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,+BAA+B,EAAE,CAAC;;wCAChE;AAGb;IADN,IAAA,cAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,0BAA0B,EAAE,CAAC;;uCAC5D;AAGZ;IADN,IAAA,cAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,gCAAgC,EAAE,CAAC;;uCAClE;AAGZ;IADN,IAAA,cAAM,EAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;;yCACd;AAGf;IADN,IAAA,cAAM,EAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;;2CACZ;AAGjB;IADN,IAAA,cAAM,EAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;;wCACf"}
package/dist/index.js CHANGED
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fints-lib-cli",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "description": "FinTS command line interface.",
5
5
  "keywords": [
6
6
  "fints",