fints-lib-cli 0.2.0 → 0.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/dist/commands/fetch-transactions.js +99 -0
- package/dist/commands/fetch-transactions.js.map +1 -0
- package/dist/commands/get-balance.js +73 -0
- package/dist/commands/get-balance.js.map +1 -0
- package/dist/commands/list-accounts.js +59 -0
- package/dist/commands/list-accounts.js.map +1 -0
- package/dist/commands/list-holdings.js +79 -0
- package/dist/commands/list-holdings.js.map +1 -0
- package/dist/commands/submit-credit-transfer.js +238 -0
- package/dist/commands/submit-credit-transfer.js.map +1 -0
- package/dist/commands/submit-direct-debit.js +266 -0
- package/dist/commands/submit-direct-debit.js.map +1 -0
- package/dist/config.js +92 -0
- package/dist/config.js.map +1 -0
- package/dist/index.js +42 -0
- package/dist/index.js.map +1 -0
- package/dist/logger.js +55 -0
- package/dist/logger.js.map +1 -0
- package/package.json +6 -7
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
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;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
12
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
13
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
14
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
15
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
16
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
17
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
21
|
+
var t = {};
|
|
22
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
23
|
+
t[p] = s[p];
|
|
24
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
25
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
26
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
27
|
+
t[p[i]] = s[p[i]];
|
|
28
|
+
}
|
|
29
|
+
return t;
|
|
30
|
+
};
|
|
31
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
32
|
+
exports.FetchStatementOptions = void 0;
|
|
33
|
+
const date_fns_1 = require("date-fns");
|
|
34
|
+
const fints_lib_1 = require("fints-lib");
|
|
35
|
+
const logger_1 = require("../logger");
|
|
36
|
+
const clime_1 = require("clime");
|
|
37
|
+
const config_1 = require("../config");
|
|
38
|
+
class FetchStatementOptions extends config_1.BaseConfig {
|
|
39
|
+
}
|
|
40
|
+
exports.FetchStatementOptions = FetchStatementOptions;
|
|
41
|
+
__decorate([
|
|
42
|
+
(0, clime_1.option)({ required: true, flag: "i", description: "IBAN of the account to fetch." }),
|
|
43
|
+
__metadata("design:type", String)
|
|
44
|
+
], FetchStatementOptions.prototype, "iban", void 0);
|
|
45
|
+
__decorate([
|
|
46
|
+
(0, clime_1.option)({ flag: "s", description: "Date of earliest transaction to fetch." }),
|
|
47
|
+
__metadata("design:type", String)
|
|
48
|
+
], FetchStatementOptions.prototype, "start", void 0);
|
|
49
|
+
__decorate([
|
|
50
|
+
(0, clime_1.option)({ flag: "e", description: "Date of latest transaction to fetch." }),
|
|
51
|
+
__metadata("design:type", String)
|
|
52
|
+
], FetchStatementOptions.prototype, "end", void 0);
|
|
53
|
+
let default_1 = class extends clime_1.Command {
|
|
54
|
+
execute(_a) {
|
|
55
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
56
|
+
var { verbose, json, serializer, iban, start, end } = _a, config = __rest(_a, ["verbose", "json", "serializer", "iban", "start", "end"]);
|
|
57
|
+
const endDate = end ? new Date(end) : new Date();
|
|
58
|
+
if (isNaN(endDate.getTime())) {
|
|
59
|
+
console.error("Invalid start date specified.");
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
const startDate = start ? new Date(start) : (0, date_fns_1.subMonths)(endDate, 1);
|
|
63
|
+
if (isNaN(startDate.getTime())) {
|
|
64
|
+
console.error("Invalid end date specified.");
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
if (endDate < startDate) {
|
|
68
|
+
console.error("The end date must be after the start date.");
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
(0, logger_1.setLevel)(verbose);
|
|
72
|
+
const client = new fints_lib_1.PinTanClient(config);
|
|
73
|
+
const accounts = yield client.accounts();
|
|
74
|
+
const account = accounts.find((current) => current.iban === iban);
|
|
75
|
+
if (!account) {
|
|
76
|
+
console.error("No account with specified iban found.");
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
const statements = yield client.statements(account, startDate, endDate);
|
|
80
|
+
console.info(serializer(statements.reduce((result, statement) => {
|
|
81
|
+
result.push(...statement.transactions);
|
|
82
|
+
return result;
|
|
83
|
+
}, [])));
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
__decorate([
|
|
88
|
+
clime_1.metadata
|
|
89
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
90
|
+
,
|
|
91
|
+
__metadata("design:type", Function),
|
|
92
|
+
__metadata("design:paramtypes", [FetchStatementOptions]),
|
|
93
|
+
__metadata("design:returntype", Promise)
|
|
94
|
+
], default_1.prototype, "execute", null);
|
|
95
|
+
default_1 = __decorate([
|
|
96
|
+
(0, clime_1.command)({ description: "Fetch the statements for a specified account." })
|
|
97
|
+
], default_1);
|
|
98
|
+
exports.default = default_1;
|
|
99
|
+
//# sourceMappingURL=fetch-transactions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch-transactions.js","sourceRoot":"","sources":["../../src/commands/fetch-transactions.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAqC;AACrC,yCAAyC;AACzC,sCAAqC;AACrC,iCAA2D;AAC3D,sCAAuC;AAGvC,MAAa,qBAAsB,SAAQ,mBAAU;CASpD;AATD,sDASC;AAPU;IADN,IAAA,cAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,+BAA+B,EAAE,CAAC;;mDAChE;AAGb;IADN,IAAA,cAAM,EAAC,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,wCAAwC,EAAE,CAAC;;oDACxD;AAGd;IADN,IAAA,cAAM,EAAC,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,sCAAsC,EAAE,CAAC;;kDACxD;AAIR,gBAAA,KAAM,SAAQ,eAAO;IAGnB,OAAO,CAAC,EAAiF;;gBAAjF,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,OAAoC,EAA/B,MAAM,cAAxD,yDAA0D,CAAF;YACzE,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;YACjD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC3B,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;gBAC/C,OAAO;YACX,CAAC;YACD,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAA,oBAAS,EAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAClE,IAAI,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC7B,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;gBAC7C,OAAO;YACX,CAAC;YACD,IAAI,OAAO,GAAG,SAAS,EAAE,CAAC;gBACtB,OAAO,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;gBAC5D,OAAO;YACX,CAAC;YACD,IAAA,iBAAQ,EAAC,OAAO,CAAC,CAAC;YAClB,MAAM,MAAM,GAAG,IAAI,wBAAY,CAAC,MAAM,CAAC,CAAC;YACxC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAY,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;YACvE,IAAI,CAAC,OAAO,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;gBACvD,OAAO;YACX,CAAC;YACD,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;YACxE,OAAO,CAAC,IAAI,CACR,UAAU,CACN,UAAU,CAAC,MAAM,CAAC,CAAC,MAAqB,EAAE,SAAc,EAAE,EAAE;gBACxD,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;gBACvC,OAAO,MAAM,CAAC;YAClB,CAAC,EAAE,EAAE,CAAC,CACT,CACJ,CAAC;QACN,CAAC;KAAA;CACJ,CAAA;AAjCgB;IAFZ,gBAAQ;IACT,6DAA6D;;;qCACoB,qBAAqB;;wCAgCrG;AAnCU;IADd,IAAA,eAAO,EAAC,EAAE,WAAW,EAAE,+CAA+C,EAAE,CAAC;aAqCzE"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
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;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
12
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
13
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
14
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
15
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
16
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
17
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
21
|
+
var t = {};
|
|
22
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
23
|
+
t[p] = s[p];
|
|
24
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
25
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
26
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
27
|
+
t[p[i]] = s[p[i]];
|
|
28
|
+
}
|
|
29
|
+
return t;
|
|
30
|
+
};
|
|
31
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
32
|
+
exports.GetBalanceOptions = void 0;
|
|
33
|
+
const fints_lib_1 = require("fints-lib");
|
|
34
|
+
const logger_1 = require("../logger");
|
|
35
|
+
const clime_1 = require("clime");
|
|
36
|
+
const config_1 = require("../config");
|
|
37
|
+
class GetBalanceOptions extends config_1.BaseConfig {
|
|
38
|
+
}
|
|
39
|
+
exports.GetBalanceOptions = GetBalanceOptions;
|
|
40
|
+
__decorate([
|
|
41
|
+
(0, clime_1.option)({ required: true, flag: "i", description: "IBAN of the account to fetch." }),
|
|
42
|
+
__metadata("design:type", String)
|
|
43
|
+
], GetBalanceOptions.prototype, "iban", void 0);
|
|
44
|
+
let default_1 = class extends clime_1.Command {
|
|
45
|
+
execute(_a) {
|
|
46
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
47
|
+
var { verbose, json, serializer, iban } = _a, config = __rest(_a, ["verbose", "json", "serializer", "iban"]);
|
|
48
|
+
(0, logger_1.setLevel)(verbose);
|
|
49
|
+
const client = new fints_lib_1.PinTanClient(config);
|
|
50
|
+
const accounts = yield client.accounts();
|
|
51
|
+
const account = accounts.find((current) => current.iban === iban);
|
|
52
|
+
if (!account) {
|
|
53
|
+
console.error("No account with specified iban found.");
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
const balance = yield client.balance(account);
|
|
57
|
+
console.info(serializer(balance));
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
__decorate([
|
|
62
|
+
clime_1.metadata
|
|
63
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
64
|
+
,
|
|
65
|
+
__metadata("design:type", Function),
|
|
66
|
+
__metadata("design:paramtypes", [GetBalanceOptions]),
|
|
67
|
+
__metadata("design:returntype", Promise)
|
|
68
|
+
], default_1.prototype, "execute", null);
|
|
69
|
+
default_1 = __decorate([
|
|
70
|
+
(0, clime_1.command)({ description: "Fetch the current balance for a specified account." })
|
|
71
|
+
], default_1);
|
|
72
|
+
exports.default = default_1;
|
|
73
|
+
//# sourceMappingURL=get-balance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-balance.js","sourceRoot":"","sources":["../../src/commands/get-balance.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAyC;AACzC,sCAAqC;AACrC,iCAA2D;AAC3D,sCAAuC;AAEvC,MAAa,iBAAkB,SAAQ,mBAAU;CAGhD;AAHD,8CAGC;AADU;IADN,IAAA,cAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,+BAA+B,EAAE,CAAC;;+CAChE;AAIT,gBAAA,KAAM,SAAQ,eAAO;IAGnB,OAAO,CAAC,EAAiE;;gBAAjE,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,OAAgC,EAA3B,MAAM,cAA5C,yCAA8C,CAAF;YAC7D,IAAA,iBAAQ,EAAC,OAAO,CAAC,CAAC;YAClB,MAAM,MAAM,GAAG,IAAI,wBAAY,CAAC,MAAM,CAAC,CAAC;YACxC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAY,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;YACvE,IAAI,CAAC,OAAO,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;gBACvD,OAAO;YACX,CAAC;YACD,MAAM,OAAO,GAAG,MAAO,MAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACvD,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;QACtC,CAAC;KAAA;CACJ,CAAA;AAZgB;IAFZ,gBAAQ;IACT,6DAA6D;;;qCACQ,iBAAiB;;wCAWrF;AAdU;IADd,IAAA,eAAO,EAAC,EAAE,WAAW,EAAE,oDAAoD,EAAE,CAAC;aAgB9E"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
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;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
12
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
13
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
14
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
15
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
16
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
17
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
21
|
+
var t = {};
|
|
22
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
23
|
+
t[p] = s[p];
|
|
24
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
25
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
26
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
27
|
+
t[p[i]] = s[p[i]];
|
|
28
|
+
}
|
|
29
|
+
return t;
|
|
30
|
+
};
|
|
31
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
32
|
+
const fints_lib_1 = require("fints-lib");
|
|
33
|
+
const logger_1 = require("../logger");
|
|
34
|
+
const clime_1 = require("clime");
|
|
35
|
+
const config_1 = require("../config");
|
|
36
|
+
let default_1 = class extends clime_1.Command {
|
|
37
|
+
execute(_a) {
|
|
38
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
39
|
+
var { verbose, json, serializer } = _a, config = __rest(_a, ["verbose", "json", "serializer"]);
|
|
40
|
+
(0, logger_1.setLevel)(verbose);
|
|
41
|
+
const client = new fints_lib_1.PinTanClient(config);
|
|
42
|
+
const accounts = yield client.accounts();
|
|
43
|
+
console.info(serializer(accounts));
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
__decorate([
|
|
48
|
+
clime_1.metadata
|
|
49
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
50
|
+
,
|
|
51
|
+
__metadata("design:type", Function),
|
|
52
|
+
__metadata("design:paramtypes", [config_1.BaseConfig]),
|
|
53
|
+
__metadata("design:returntype", Promise)
|
|
54
|
+
], default_1.prototype, "execute", null);
|
|
55
|
+
default_1 = __decorate([
|
|
56
|
+
(0, clime_1.command)({ description: "List the accounts available for the specified user." })
|
|
57
|
+
], default_1);
|
|
58
|
+
exports.default = default_1;
|
|
59
|
+
//# sourceMappingURL=list-accounts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-accounts.js","sourceRoot":"","sources":["../../src/commands/list-accounts.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAyC;AACzC,sCAAqC;AACrC,iCAAmD;AACnD,sCAAuC;AAGxB,gBAAA,KAAM,SAAQ,eAAO;IAGnB,OAAO,CAAC,EAAoD;;gBAApD,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,OAAyB,EAApB,MAAM,cAAtC,iCAAwC,CAAF;YACvD,IAAA,iBAAQ,EAAC,OAAO,CAAC,CAAC;YAClB,MAAM,MAAM,GAAG,IAAI,wBAAY,CAAC,MAAM,CAAC,CAAC;YACxC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;QACvC,CAAC;KAAA;CACJ,CAAA;AANgB;IAFZ,gBAAQ;IACT,6DAA6D;;;qCACE,mBAAU;;wCAKxE;AARU;IADd,IAAA,eAAO,EAAC,EAAE,WAAW,EAAE,qDAAqD,EAAE,CAAC;aAU/E"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
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;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
12
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
13
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
14
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
15
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
16
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
17
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
21
|
+
var t = {};
|
|
22
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
23
|
+
t[p] = s[p];
|
|
24
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
25
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
26
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
27
|
+
t[p[i]] = s[p[i]];
|
|
28
|
+
}
|
|
29
|
+
return t;
|
|
30
|
+
};
|
|
31
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
32
|
+
exports.ListHoldingsOptions = void 0;
|
|
33
|
+
const fints_lib_1 = require("fints-lib");
|
|
34
|
+
const logger_1 = require("../logger");
|
|
35
|
+
const clime_1 = require("clime");
|
|
36
|
+
const config_1 = require("../config");
|
|
37
|
+
class ListHoldingsOptions extends config_1.BaseConfig {
|
|
38
|
+
}
|
|
39
|
+
exports.ListHoldingsOptions = ListHoldingsOptions;
|
|
40
|
+
__decorate([
|
|
41
|
+
(0, clime_1.option)({ required: true, flag: "i", description: "IBAN of the account to fetch." }),
|
|
42
|
+
__metadata("design:type", String)
|
|
43
|
+
], ListHoldingsOptions.prototype, "iban", void 0);
|
|
44
|
+
let default_1 = class extends clime_1.Command {
|
|
45
|
+
execute(_a) {
|
|
46
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
47
|
+
var { verbose, json, serializer, iban } = _a, config = __rest(_a, ["verbose", "json", "serializer", "iban"]);
|
|
48
|
+
(0, logger_1.setLevel)(verbose);
|
|
49
|
+
const client = new fints_lib_1.PinTanClient(config);
|
|
50
|
+
const accounts = yield client.accounts();
|
|
51
|
+
const account = accounts.find((current) => current.iban === iban);
|
|
52
|
+
if (!account) {
|
|
53
|
+
console.error("No account with specified iban found.");
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
try {
|
|
57
|
+
const holdings = yield client.holdings(account);
|
|
58
|
+
console.info(serializer(holdings));
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
62
|
+
console.error(message);
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
__decorate([
|
|
68
|
+
clime_1.metadata
|
|
69
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
70
|
+
,
|
|
71
|
+
__metadata("design:type", Function),
|
|
72
|
+
__metadata("design:paramtypes", [ListHoldingsOptions]),
|
|
73
|
+
__metadata("design:returntype", Promise)
|
|
74
|
+
], default_1.prototype, "execute", null);
|
|
75
|
+
default_1 = __decorate([
|
|
76
|
+
(0, clime_1.command)({ description: "List the holdings for a specified depot account." })
|
|
77
|
+
], default_1);
|
|
78
|
+
exports.default = default_1;
|
|
79
|
+
//# sourceMappingURL=list-holdings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-holdings.js","sourceRoot":"","sources":["../../src/commands/list-holdings.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAyC;AACzC,sCAAqC;AACrC,iCAA2D;AAC3D,sCAAuC;AAEvC,MAAa,mBAAoB,SAAQ,mBAAU;CAGlD;AAHD,kDAGC;AADU;IADN,IAAA,cAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,+BAA+B,EAAE,CAAC;;iDAChE;AAIT,gBAAA,KAAM,SAAQ,eAAO;IAGnB,OAAO,CAAC,EAAmE;;gBAAnE,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,OAAkC,EAA7B,MAAM,cAA5C,yCAA8C,CAAF;YAC7D,IAAA,iBAAQ,EAAC,OAAO,CAAC,CAAC;YAClB,MAAM,MAAM,GAAG,IAAI,wBAAY,CAAC,MAAM,CAAC,CAAC;YACxC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAY,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;YACvE,IAAI,CAAC,OAAO,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;gBACvD,OAAO;YACX,CAAC;YACD,IAAI,CAAC;gBACD,MAAM,QAAQ,GAAG,MAAO,MAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACzD,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;YACvC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACvE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC3B,CAAC;QACL,CAAC;KAAA;CACJ,CAAA;AAjBgB;IAFZ,gBAAQ;IACT,6DAA6D;;;qCACQ,mBAAmB;;wCAgBvF;AAnBU;IADd,IAAA,eAAO,EAAC,EAAE,WAAW,EAAE,kDAAkD,EAAE,CAAC;aAqB5E"}
|
|
@@ -0,0 +1,238 @@
|
|
|
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
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
19
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
20
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
21
|
+
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
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
23
|
+
};
|
|
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
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
42
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
43
|
+
};
|
|
44
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
45
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
46
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
47
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
48
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
49
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
50
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
51
|
+
});
|
|
52
|
+
};
|
|
53
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
54
|
+
var t = {};
|
|
55
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
56
|
+
t[p] = s[p];
|
|
57
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
58
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
59
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
60
|
+
t[p[i]] = s[p[i]];
|
|
61
|
+
}
|
|
62
|
+
return t;
|
|
63
|
+
};
|
|
64
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
65
|
+
exports.CreditTransferCommandOptions = void 0;
|
|
66
|
+
const clime_1 = require("clime");
|
|
67
|
+
const fints_lib_1 = require("fints-lib");
|
|
68
|
+
const logger_1 = require("../logger");
|
|
69
|
+
const config_1 = require("../config");
|
|
70
|
+
const readline = __importStar(require("readline"));
|
|
71
|
+
class CreditTransferCommandOptions extends config_1.BaseConfig {
|
|
72
|
+
}
|
|
73
|
+
exports.CreditTransferCommandOptions = CreditTransferCommandOptions;
|
|
74
|
+
__decorate([
|
|
75
|
+
(0, clime_1.option)({ required: true, name: "account-iban", description: "IBAN of the debtor account." }),
|
|
76
|
+
__metadata("design:type", String)
|
|
77
|
+
], CreditTransferCommandOptions.prototype, "accountIban", void 0);
|
|
78
|
+
__decorate([
|
|
79
|
+
(0, clime_1.option)({ name: "debtor-name", description: "Name of the debtor (defaults to account owner)." }),
|
|
80
|
+
__metadata("design:type", String)
|
|
81
|
+
], CreditTransferCommandOptions.prototype, "debtorName", void 0);
|
|
82
|
+
__decorate([
|
|
83
|
+
(0, clime_1.option)({ required: true, name: "creditor-name", description: "Name of the creditor." }),
|
|
84
|
+
__metadata("design:type", String)
|
|
85
|
+
], CreditTransferCommandOptions.prototype, "creditorName", void 0);
|
|
86
|
+
__decorate([
|
|
87
|
+
(0, clime_1.option)({ required: true, name: "creditor-iban", description: "IBAN of the creditor." }),
|
|
88
|
+
__metadata("design:type", String)
|
|
89
|
+
], CreditTransferCommandOptions.prototype, "creditorIban", void 0);
|
|
90
|
+
__decorate([
|
|
91
|
+
(0, clime_1.option)({ name: "creditor-bic", description: "BIC of the creditor (optional)." }),
|
|
92
|
+
__metadata("design:type", String)
|
|
93
|
+
], CreditTransferCommandOptions.prototype, "creditorBic", void 0);
|
|
94
|
+
__decorate([
|
|
95
|
+
(0, clime_1.option)({ required: true, name: "amount", description: "Amount to transfer (e.g. 10.50)." }),
|
|
96
|
+
__metadata("design:type", String)
|
|
97
|
+
], CreditTransferCommandOptions.prototype, "amount", void 0);
|
|
98
|
+
__decorate([
|
|
99
|
+
(0, clime_1.option)({ name: "currency", description: "Currency code (default EUR).", default: "EUR" }),
|
|
100
|
+
__metadata("design:type", String)
|
|
101
|
+
], CreditTransferCommandOptions.prototype, "currency", void 0);
|
|
102
|
+
__decorate([
|
|
103
|
+
(0, clime_1.option)({ name: "execution-date", description: "Requested execution date (YYYY-MM-DD)." }),
|
|
104
|
+
__metadata("design:type", String)
|
|
105
|
+
], CreditTransferCommandOptions.prototype, "executionDate", void 0);
|
|
106
|
+
__decorate([
|
|
107
|
+
(0, clime_1.option)({ name: "end-to-end-id", description: "End-to-end identifier." }),
|
|
108
|
+
__metadata("design:type", String)
|
|
109
|
+
], CreditTransferCommandOptions.prototype, "endToEndId", void 0);
|
|
110
|
+
__decorate([
|
|
111
|
+
(0, clime_1.option)({ name: "remittance", description: "Unstructured remittance information." }),
|
|
112
|
+
__metadata("design:type", String)
|
|
113
|
+
], CreditTransferCommandOptions.prototype, "remittance", void 0);
|
|
114
|
+
__decorate([
|
|
115
|
+
(0, clime_1.option)({ name: "purpose-code", description: "Purpose code for the transaction." }),
|
|
116
|
+
__metadata("design:type", String)
|
|
117
|
+
], CreditTransferCommandOptions.prototype, "purposeCode", void 0);
|
|
118
|
+
__decorate([
|
|
119
|
+
(0, clime_1.option)({ name: "message-id", description: "Override the generated message identifier." }),
|
|
120
|
+
__metadata("design:type", String)
|
|
121
|
+
], CreditTransferCommandOptions.prototype, "messageId", void 0);
|
|
122
|
+
__decorate([
|
|
123
|
+
(0, clime_1.option)({ name: "payment-information-id", description: "Override the generated payment information identifier." }),
|
|
124
|
+
__metadata("design:type", String)
|
|
125
|
+
], CreditTransferCommandOptions.prototype, "paymentInformationId", void 0);
|
|
126
|
+
__decorate([
|
|
127
|
+
(0, clime_1.option)({ toggle: true, name: "batch", description: "Request batch booking." }),
|
|
128
|
+
__metadata("design:type", Boolean)
|
|
129
|
+
], CreditTransferCommandOptions.prototype, "batchBooking", void 0);
|
|
130
|
+
__decorate([
|
|
131
|
+
(0, clime_1.option)({ name: "tan", description: "Provide TAN upfront to avoid interactive prompt." }),
|
|
132
|
+
__metadata("design:type", String)
|
|
133
|
+
], CreditTransferCommandOptions.prototype, "tan", void 0);
|
|
134
|
+
function prompt(question) {
|
|
135
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
136
|
+
return new Promise((resolve) => {
|
|
137
|
+
rl.question(question, (answer) => {
|
|
138
|
+
rl.close();
|
|
139
|
+
resolve(answer.trim());
|
|
140
|
+
});
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
let default_1 = class extends clime_1.Command {
|
|
144
|
+
execute(options) {
|
|
145
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
146
|
+
const { verbose, json: _json, serializer, accountIban, debtorName, creditorName, creditorIban, creditorBic, amount, currency = "EUR", executionDate, endToEndId, remittance, purposeCode, messageId, paymentInformationId, batchBooking, tan } = options, config = __rest(options, ["verbose", "json", "serializer", "accountIban", "debtorName", "creditorName", "creditorIban", "creditorBic", "amount", "currency", "executionDate", "endToEndId", "remittance", "purposeCode", "messageId", "paymentInformationId", "batchBooking", "tan"]);
|
|
147
|
+
(0, logger_1.setLevel)(verbose);
|
|
148
|
+
const client = new fints_lib_1.PinTanClient(config);
|
|
149
|
+
const accounts = yield client.accounts();
|
|
150
|
+
const account = accounts.find((current) => current.iban === accountIban);
|
|
151
|
+
if (!account) {
|
|
152
|
+
console.error("No account with specified IBAN found.");
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
const parsedAmount = Number(amount.replace(",", "."));
|
|
156
|
+
if (!isFinite(parsedAmount) || parsedAmount <= 0) {
|
|
157
|
+
console.error("Amount must be a positive number.");
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
let debtorNameValue = debtorName === null || debtorName === void 0 ? void 0 : debtorName.trim();
|
|
161
|
+
if (!debtorNameValue) {
|
|
162
|
+
debtorNameValue = account.accountOwnerName || account.accountName;
|
|
163
|
+
}
|
|
164
|
+
if (!debtorNameValue) {
|
|
165
|
+
console.error("A debtor name must be provided or available in the account metadata.");
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
let requestedExecutionDate;
|
|
169
|
+
if (executionDate) {
|
|
170
|
+
const parsedDate = new Date(executionDate);
|
|
171
|
+
if (isNaN(parsedDate.getTime())) {
|
|
172
|
+
console.error("Execution date must be a valid date (YYYY-MM-DD).");
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
requestedExecutionDate = parsedDate;
|
|
176
|
+
}
|
|
177
|
+
const request = {
|
|
178
|
+
debtorName: debtorNameValue,
|
|
179
|
+
creditor: {
|
|
180
|
+
name: creditorName,
|
|
181
|
+
iban: creditorIban,
|
|
182
|
+
bic: creditorBic ? creditorBic.toUpperCase() : undefined,
|
|
183
|
+
},
|
|
184
|
+
amount: parsedAmount,
|
|
185
|
+
currency: currency.toUpperCase(),
|
|
186
|
+
executionDate: requestedExecutionDate,
|
|
187
|
+
endToEndId,
|
|
188
|
+
remittanceInformation: remittance,
|
|
189
|
+
purposeCode,
|
|
190
|
+
batchBooking: !!batchBooking,
|
|
191
|
+
messageId,
|
|
192
|
+
paymentInformationId,
|
|
193
|
+
};
|
|
194
|
+
try {
|
|
195
|
+
const submission = yield client.creditTransfer(account, request);
|
|
196
|
+
console.info(serializer(submission));
|
|
197
|
+
}
|
|
198
|
+
catch (error) {
|
|
199
|
+
if (error instanceof fints_lib_1.TanRequiredError) {
|
|
200
|
+
const challenge = error;
|
|
201
|
+
console.info(challenge.message);
|
|
202
|
+
if (challenge.challengeText) {
|
|
203
|
+
console.info(challenge.challengeText);
|
|
204
|
+
}
|
|
205
|
+
let tanValue = tan;
|
|
206
|
+
if (!tanValue) {
|
|
207
|
+
tanValue = yield prompt("Please enter TAN: ");
|
|
208
|
+
}
|
|
209
|
+
if (!tanValue) {
|
|
210
|
+
console.error("A TAN is required to complete this credit transfer.");
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
const submission = challenge.creditTransferSubmission;
|
|
214
|
+
if (!submission) {
|
|
215
|
+
console.error("Unable to resume the credit transfer because submission details are missing.");
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
const result = yield client.completeCreditTransfer(challenge.dialog, challenge.transactionReference, tanValue, submission);
|
|
219
|
+
console.info(serializer(result));
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
throw error;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
};
|
|
228
|
+
__decorate([
|
|
229
|
+
clime_1.metadata,
|
|
230
|
+
__metadata("design:type", Function),
|
|
231
|
+
__metadata("design:paramtypes", [CreditTransferCommandOptions]),
|
|
232
|
+
__metadata("design:returntype", Promise)
|
|
233
|
+
], default_1.prototype, "execute", null);
|
|
234
|
+
default_1 = __decorate([
|
|
235
|
+
(0, clime_1.command)({ description: "Submit a SEPA credit transfer." })
|
|
236
|
+
], default_1);
|
|
237
|
+
exports.default = default_1;
|
|
238
|
+
//# sourceMappingURL=submit-credit-transfer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"submit-credit-transfer.js","sourceRoot":"","sources":["../../src/commands/submit-credit-transfer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,266 @@
|
|
|
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
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
19
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
20
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
21
|
+
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
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
23
|
+
};
|
|
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
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
42
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
43
|
+
};
|
|
44
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
45
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
46
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
47
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
48
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
49
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
50
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
51
|
+
});
|
|
52
|
+
};
|
|
53
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
54
|
+
var t = {};
|
|
55
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
56
|
+
t[p] = s[p];
|
|
57
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
58
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
59
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
60
|
+
t[p[i]] = s[p[i]];
|
|
61
|
+
}
|
|
62
|
+
return t;
|
|
63
|
+
};
|
|
64
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
65
|
+
exports.DirectDebitCommandOptions = void 0;
|
|
66
|
+
const clime_1 = require("clime");
|
|
67
|
+
const fints_lib_1 = require("fints-lib");
|
|
68
|
+
const logger_1 = require("../logger");
|
|
69
|
+
const config_1 = require("../config");
|
|
70
|
+
const readline = __importStar(require("readline"));
|
|
71
|
+
class DirectDebitCommandOptions extends config_1.BaseConfig {
|
|
72
|
+
}
|
|
73
|
+
exports.DirectDebitCommandOptions = DirectDebitCommandOptions;
|
|
74
|
+
__decorate([
|
|
75
|
+
(0, clime_1.option)({ required: true, name: "account-iban", description: "IBAN of the creditor account." }),
|
|
76
|
+
__metadata("design:type", String)
|
|
77
|
+
], DirectDebitCommandOptions.prototype, "accountIban", void 0);
|
|
78
|
+
__decorate([
|
|
79
|
+
(0, clime_1.option)({ required: true, name: "creditor-name", description: "Name of the creditor." }),
|
|
80
|
+
__metadata("design:type", String)
|
|
81
|
+
], DirectDebitCommandOptions.prototype, "creditorName", void 0);
|
|
82
|
+
__decorate([
|
|
83
|
+
(0, clime_1.option)({ required: true, name: "creditor-id", description: "SEPA creditor identifier." }),
|
|
84
|
+
__metadata("design:type", String)
|
|
85
|
+
], DirectDebitCommandOptions.prototype, "creditorId", void 0);
|
|
86
|
+
__decorate([
|
|
87
|
+
(0, clime_1.option)({ required: true, name: "debtor-name", description: "Name of the debtor." }),
|
|
88
|
+
__metadata("design:type", String)
|
|
89
|
+
], DirectDebitCommandOptions.prototype, "debtorName", void 0);
|
|
90
|
+
__decorate([
|
|
91
|
+
(0, clime_1.option)({ required: true, name: "debtor-iban", description: "IBAN of the debtor." }),
|
|
92
|
+
__metadata("design:type", String)
|
|
93
|
+
], DirectDebitCommandOptions.prototype, "debtorIban", void 0);
|
|
94
|
+
__decorate([
|
|
95
|
+
(0, clime_1.option)({ name: "debtor-bic", description: "BIC of the debtor (optional)." }),
|
|
96
|
+
__metadata("design:type", String)
|
|
97
|
+
], DirectDebitCommandOptions.prototype, "debtorBic", void 0);
|
|
98
|
+
__decorate([
|
|
99
|
+
(0, clime_1.option)({ required: true, name: "amount", description: "Amount to collect (e.g. 10.50)." }),
|
|
100
|
+
__metadata("design:type", String)
|
|
101
|
+
], DirectDebitCommandOptions.prototype, "amount", void 0);
|
|
102
|
+
__decorate([
|
|
103
|
+
(0, clime_1.option)({ name: "currency", description: "Currency code (default EUR).", default: "EUR" }),
|
|
104
|
+
__metadata("design:type", String)
|
|
105
|
+
], DirectDebitCommandOptions.prototype, "currency", void 0);
|
|
106
|
+
__decorate([
|
|
107
|
+
(0, clime_1.option)({ required: true, name: "mandate-id", description: "SEPA mandate identifier." }),
|
|
108
|
+
__metadata("design:type", String)
|
|
109
|
+
], DirectDebitCommandOptions.prototype, "mandateId", void 0);
|
|
110
|
+
__decorate([
|
|
111
|
+
(0, clime_1.option)({ required: true, name: "mandate-date", description: "Mandate signature date (YYYY-MM-DD)." }),
|
|
112
|
+
__metadata("design:type", String)
|
|
113
|
+
], DirectDebitCommandOptions.prototype, "mandateDate", void 0);
|
|
114
|
+
__decorate([
|
|
115
|
+
(0, clime_1.option)({ required: true, name: "collection-date", description: "Requested collection date (YYYY-MM-DD)." }),
|
|
116
|
+
__metadata("design:type", String)
|
|
117
|
+
], DirectDebitCommandOptions.prototype, "collectionDate", void 0);
|
|
118
|
+
__decorate([
|
|
119
|
+
(0, clime_1.option)({ name: "sequence-type", description: "Sequence type (OOFF, FRST, RCUR, FNAL).", default: "OOFF" }),
|
|
120
|
+
__metadata("design:type", String)
|
|
121
|
+
], DirectDebitCommandOptions.prototype, "sequenceType", void 0);
|
|
122
|
+
__decorate([
|
|
123
|
+
(0, clime_1.option)({ name: "local-instrument", description: "Local instrument (CORE or B2B).", default: "CORE" }),
|
|
124
|
+
__metadata("design:type", String)
|
|
125
|
+
], DirectDebitCommandOptions.prototype, "localInstrument", void 0);
|
|
126
|
+
__decorate([
|
|
127
|
+
(0, clime_1.option)({ name: "end-to-end-id", description: "End-to-end identifier." }),
|
|
128
|
+
__metadata("design:type", String)
|
|
129
|
+
], DirectDebitCommandOptions.prototype, "endToEndId", void 0);
|
|
130
|
+
__decorate([
|
|
131
|
+
(0, clime_1.option)({ name: "remittance", description: "Unstructured remittance information." }),
|
|
132
|
+
__metadata("design:type", String)
|
|
133
|
+
], DirectDebitCommandOptions.prototype, "remittance", void 0);
|
|
134
|
+
__decorate([
|
|
135
|
+
(0, clime_1.option)({ name: "purpose-code", description: "Purpose code for the transaction." }),
|
|
136
|
+
__metadata("design:type", String)
|
|
137
|
+
], DirectDebitCommandOptions.prototype, "purposeCode", void 0);
|
|
138
|
+
__decorate([
|
|
139
|
+
(0, clime_1.option)({ name: "message-id", description: "Override the generated message identifier." }),
|
|
140
|
+
__metadata("design:type", String)
|
|
141
|
+
], DirectDebitCommandOptions.prototype, "messageId", void 0);
|
|
142
|
+
__decorate([
|
|
143
|
+
(0, clime_1.option)({ name: "payment-information-id", description: "Override the generated payment information identifier." }),
|
|
144
|
+
__metadata("design:type", String)
|
|
145
|
+
], DirectDebitCommandOptions.prototype, "paymentInformationId", void 0);
|
|
146
|
+
__decorate([
|
|
147
|
+
(0, clime_1.option)({ toggle: true, name: "batch", description: "Request batch booking." }),
|
|
148
|
+
__metadata("design:type", Boolean)
|
|
149
|
+
], DirectDebitCommandOptions.prototype, "batchBooking", void 0);
|
|
150
|
+
__decorate([
|
|
151
|
+
(0, clime_1.option)({ name: "tan", description: "Provide TAN upfront to avoid interactive prompt." }),
|
|
152
|
+
__metadata("design:type", String)
|
|
153
|
+
], DirectDebitCommandOptions.prototype, "tan", void 0);
|
|
154
|
+
function prompt(question) {
|
|
155
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
156
|
+
return new Promise((resolve) => {
|
|
157
|
+
rl.question(question, (answer) => {
|
|
158
|
+
rl.close();
|
|
159
|
+
resolve(answer.trim());
|
|
160
|
+
});
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
let default_1 = class extends clime_1.Command {
|
|
164
|
+
execute(options) {
|
|
165
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
166
|
+
const { verbose, json: _json, serializer, accountIban, creditorName, creditorId, debtorName, debtorIban, debtorBic, amount, currency = "EUR", mandateId, mandateDate, collectionDate, sequenceType = "OOFF", localInstrument = "CORE", endToEndId, remittance, purposeCode, messageId, paymentInformationId, batchBooking, tan } = options, config = __rest(options, ["verbose", "json", "serializer", "accountIban", "creditorName", "creditorId", "debtorName", "debtorIban", "debtorBic", "amount", "currency", "mandateId", "mandateDate", "collectionDate", "sequenceType", "localInstrument", "endToEndId", "remittance", "purposeCode", "messageId", "paymentInformationId", "batchBooking", "tan"]);
|
|
167
|
+
(0, logger_1.setLevel)(verbose);
|
|
168
|
+
const client = new fints_lib_1.PinTanClient(config);
|
|
169
|
+
const accounts = yield client.accounts();
|
|
170
|
+
const account = accounts.find((current) => current.iban === accountIban);
|
|
171
|
+
if (!account) {
|
|
172
|
+
console.error("No account with specified IBAN found.");
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
const parsedAmount = Number(amount.replace(",", "."));
|
|
176
|
+
if (!isFinite(parsedAmount) || parsedAmount <= 0) {
|
|
177
|
+
console.error("Amount must be a positive number.");
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
const mandateSignatureDate = new Date(mandateDate);
|
|
181
|
+
if (isNaN(mandateSignatureDate.getTime())) {
|
|
182
|
+
console.error("Mandate signature date must be a valid date (YYYY-MM-DD).");
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
const requestedCollectionDate = new Date(collectionDate);
|
|
186
|
+
if (isNaN(requestedCollectionDate.getTime())) {
|
|
187
|
+
console.error("Collection date must be a valid date (YYYY-MM-DD).");
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
const normalizedSequenceType = sequenceType.toUpperCase();
|
|
191
|
+
if (!["OOFF", "FRST", "RCUR", "FNAL"].includes(normalizedSequenceType)) {
|
|
192
|
+
console.error("Sequence type must be one of OOFF, FRST, RCUR, FNAL.");
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
const normalizedInstrument = localInstrument.toUpperCase();
|
|
196
|
+
if (!["CORE", "B2B"].includes(normalizedInstrument)) {
|
|
197
|
+
console.error("Local instrument must be either CORE or B2B.");
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
const request = {
|
|
201
|
+
creditorName,
|
|
202
|
+
creditorId,
|
|
203
|
+
debtor: {
|
|
204
|
+
name: debtorName,
|
|
205
|
+
iban: debtorIban,
|
|
206
|
+
bic: debtorBic ? debtorBic.toUpperCase() : undefined,
|
|
207
|
+
},
|
|
208
|
+
amount: parsedAmount,
|
|
209
|
+
currency: currency.toUpperCase(),
|
|
210
|
+
endToEndId,
|
|
211
|
+
remittanceInformation: remittance,
|
|
212
|
+
purposeCode,
|
|
213
|
+
mandateId,
|
|
214
|
+
mandateSignatureDate,
|
|
215
|
+
requestedCollectionDate,
|
|
216
|
+
sequenceType: normalizedSequenceType,
|
|
217
|
+
localInstrument: normalizedInstrument,
|
|
218
|
+
batchBooking: !!batchBooking,
|
|
219
|
+
messageId,
|
|
220
|
+
paymentInformationId,
|
|
221
|
+
};
|
|
222
|
+
try {
|
|
223
|
+
const submission = yield client.directDebit(account, request);
|
|
224
|
+
console.info(serializer(submission));
|
|
225
|
+
}
|
|
226
|
+
catch (error) {
|
|
227
|
+
if (error instanceof fints_lib_1.TanRequiredError) {
|
|
228
|
+
const challenge = error;
|
|
229
|
+
console.info(challenge.message);
|
|
230
|
+
if (challenge.challengeText) {
|
|
231
|
+
console.info(challenge.challengeText);
|
|
232
|
+
}
|
|
233
|
+
let tanValue = tan;
|
|
234
|
+
if (!tanValue) {
|
|
235
|
+
tanValue = yield prompt("Please enter TAN: ");
|
|
236
|
+
}
|
|
237
|
+
if (!tanValue) {
|
|
238
|
+
console.error("A TAN is required to complete this direct debit.");
|
|
239
|
+
return;
|
|
240
|
+
}
|
|
241
|
+
const submission = challenge.directDebitSubmission;
|
|
242
|
+
if (!submission) {
|
|
243
|
+
console.error("Unable to resume the direct debit because submission details are missing.");
|
|
244
|
+
return;
|
|
245
|
+
}
|
|
246
|
+
const result = yield client.completeDirectDebit(challenge.dialog, challenge.transactionReference, tanValue, submission);
|
|
247
|
+
console.info(serializer(result));
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
throw error;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
};
|
|
256
|
+
__decorate([
|
|
257
|
+
clime_1.metadata,
|
|
258
|
+
__metadata("design:type", Function),
|
|
259
|
+
__metadata("design:paramtypes", [DirectDebitCommandOptions]),
|
|
260
|
+
__metadata("design:returntype", Promise)
|
|
261
|
+
], default_1.prototype, "execute", null);
|
|
262
|
+
default_1 = __decorate([
|
|
263
|
+
(0, clime_1.command)({ description: "Submit a SEPA direct debit." })
|
|
264
|
+
], default_1);
|
|
265
|
+
exports.default = default_1;
|
|
266
|
+
//# sourceMappingURL=submit-direct-debit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"submit-direct-debit.js","sourceRoot":"","sources":["../../src/commands/submit-direct-debit.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iCAA2D;AAC3D,yCAAsG;AACtG,sCAAqC;AACrC,sCAAuC;AACvC,mDAAqC;AAErC,MAAa,yBAA0B,SAAQ,mBAAU;CA4DxD;AA5DD,8DA4DC;AA1DU;IADN,IAAA,cAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,+BAA+B,EAAE,CAAC;;8DACpE;AAGpB;IADN,IAAA,cAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,uBAAuB,EAAE,CAAC;;+DAC5D;AAGrB;IADN,IAAA,cAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,2BAA2B,EAAE,CAAC;;6DAChE;AAGnB;IADN,IAAA,cAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,qBAAqB,EAAE,CAAC;;6DAC1D;AAGnB;IADN,IAAA,cAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,qBAAqB,EAAE,CAAC;;6DAC1D;AAGnB;IADN,IAAA,cAAM,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,+BAA+B,EAAE,CAAC;;4DACnD;AAGnB;IADN,IAAA,cAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iCAAiC,EAAE,CAAC;;yDACrE;AAGf;IADN,IAAA,cAAM,EAAC,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,8BAA8B,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;;2DACjE;AAGlB;IADN,IAAA,cAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,0BAA0B,EAAE,CAAC;;4DAC/D;AAGlB;IADN,IAAA,cAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,sCAAsC,EAAE,CAAC;;8DAC3E;AAGpB;IADN,IAAA,cAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,yCAAyC,EAAE,CAAC;;iEAC9E;AAGvB;IADN,IAAA,cAAM,EAAC,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,yCAAyC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;;+DAC9E;AAGtB;IADN,IAAA,cAAM,EAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,iCAAiC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;;kEACtE;AAGzB;IADN,IAAA,cAAM,EAAC,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,wBAAwB,EAAE,CAAC;;6DAC9C;AAGpB;IADN,IAAA,cAAM,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,sCAAsC,EAAE,CAAC;;6DACzD;AAGpB;IADN,IAAA,cAAM,EAAC,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,mCAAmC,EAAE,CAAC;;8DACvD;AAGrB;IADN,IAAA,cAAM,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,4CAA4C,EAAE,CAAC;;4DAChE;AAGnB;IADN,IAAA,cAAM,EAAC,EAAE,IAAI,EAAE,wBAAwB,EAAE,WAAW,EAAE,wDAAwD,EAAE,CAAC;;uEAC7E;AAG9B;IADN,IAAA,cAAM,EAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,CAAC;;+DACjD;AAGvB;IADN,IAAA,cAAM,EAAC,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,kDAAkD,EAAE,CAAC;;sDACrE;AAGxB,SAAS,MAAM,CAAC,QAAgB;IAC5B,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACtF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3B,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;YAC7B,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC;AAGc,gBAAA,KAAM,SAAQ,eAAO;IAEnB,OAAO,CAAC,OAAkC;;YACnD,MAAM,EACF,OAAO,EACP,IAAI,EAAE,KAAK,EACX,UAAU,EACV,WAAW,EACX,YAAY,EACZ,UAAU,EACV,UAAU,EACV,UAAU,EACV,SAAS,EACT,MAAM,EACN,QAAQ,GAAG,KAAK,EAChB,SAAS,EACT,WAAW,EACX,cAAc,EACd,YAAY,GAAG,MAAM,EACrB,eAAe,GAAG,MAAM,EACxB,UAAU,EACV,UAAU,EACV,WAAW,EACX,SAAS,EACT,oBAAoB,EACpB,YAAY,EACZ,GAAG,KAEH,OAAO,EADJ,MAAM,UACT,OAAO,EAzBL,qUAyBL,CAAU,CAAC;YAEZ,IAAA,iBAAQ,EAAC,OAAO,CAAC,CAAC;YAClB,MAAM,MAAM,GAAG,IAAI,wBAAY,CAAC,MAAM,CAAC,CAAC;YACxC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAY,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;YAC9E,IAAI,CAAC,OAAO,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;gBACvD,OAAO;YACX,CAAC;YAED,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;YACtD,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;gBAC/C,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;gBACnD,OAAO;YACX,CAAC;YAED,MAAM,oBAAoB,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC;YACnD,IAAI,KAAK,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBACxC,OAAO,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;gBAC3E,OAAO;YACX,CAAC;YAED,MAAM,uBAAuB,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC;YACzD,IAAI,KAAK,CAAC,uBAAuB,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC3C,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;gBACpE,OAAO;YACX,CAAC;YAED,MAAM,sBAAsB,GAAG,YAAY,CAAC,WAAW,EAAuC,CAAC;YAC/F,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,CAAC;gBACrE,OAAO,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;gBACtE,OAAO;YACX,CAAC;YAED,MAAM,oBAAoB,GAAG,eAAe,CAAC,WAAW,EAAoB,CAAC;YAC7E,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;gBAClD,OAAO,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;gBAC9D,OAAO;YACX,CAAC;YAED,MAAM,OAAO,GAAuB;gBAChC,YAAY;gBACZ,UAAU;gBACV,MAAM,EAAE;oBACJ,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,UAAU;oBAChB,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS;iBACvD;gBACD,MAAM,EAAE,YAAY;gBACpB,QAAQ,EAAE,QAAQ,CAAC,WAAW,EAAE;gBAChC,UAAU;gBACV,qBAAqB,EAAE,UAAU;gBACjC,WAAW;gBACX,SAAS;gBACT,oBAAoB;gBACpB,uBAAuB;gBACvB,YAAY,EAAE,sBAAsB;gBACpC,eAAe,EAAE,oBAAoB;gBACrC,YAAY,EAAE,CAAC,CAAC,YAAY;gBAC5B,SAAS;gBACT,oBAAoB;aACvB,CAAC;YAEF,IAAI,CAAC;gBACD,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC9D,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;YACzC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,IAAI,KAAK,YAAY,4BAAgB,EAAE,CAAC;oBACpC,MAAM,SAAS,GAAG,KAAyB,CAAC;oBAC5C,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;oBAChC,IAAI,SAAS,CAAC,aAAa,EAAE,CAAC;wBAC1B,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;oBAC1C,CAAC;oBACD,IAAI,QAAQ,GAAG,GAAG,CAAC;oBACnB,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACZ,QAAQ,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;oBAClD,CAAC;oBACD,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACZ,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;wBAClE,OAAO;oBACX,CAAC;oBACD,MAAM,UAAU,GAAsC,SAAS,CAAC,qBAAqB,CAAC;oBACtF,IAAI,CAAC,UAAU,EAAE,CAAC;wBACd,OAAO,CAAC,KAAK,CAAC,2EAA2E,CAAC,CAAC;wBAC3F,OAAO;oBACX,CAAC;oBACD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAC3C,SAAS,CAAC,MAAM,EAChB,SAAS,CAAC,oBAAoB,EAC9B,QAAQ,EACR,UAAU,CACb,CAAC;oBACF,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;gBACrC,CAAC;qBAAM,CAAC;oBACJ,MAAM,KAAK,CAAC;gBAChB,CAAC;YACL,CAAC;QACL,CAAC;KAAA;CACJ,CAAA;AA7HgB;IADZ,gBAAQ;;qCACqB,yBAAyB;;wCA4HtD;AA9HU;IADd,IAAA,eAAO,EAAC,EAAE,WAAW,EAAE,6BAA6B,EAAE,CAAC;aAgIvD"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
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
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
19
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
20
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
21
|
+
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
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
23
|
+
};
|
|
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
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
42
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
43
|
+
};
|
|
44
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
+
exports.BaseConfig = void 0;
|
|
46
|
+
const clime_1 = require("clime");
|
|
47
|
+
const fints_lib_1 = require("fints-lib");
|
|
48
|
+
const YAML = __importStar(require("yamljs"));
|
|
49
|
+
class BaseConfig extends clime_1.Options {
|
|
50
|
+
get serializer() {
|
|
51
|
+
return this.json ? JSON.stringify : (obj) => YAML.stringify(obj, 4);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
exports.BaseConfig = BaseConfig;
|
|
55
|
+
__decorate([
|
|
56
|
+
(0, clime_1.option)({
|
|
57
|
+
required: false,
|
|
58
|
+
flag: "i",
|
|
59
|
+
description: "Product ID from fints.(opt)",
|
|
60
|
+
default: fints_lib_1.PRODUCT_NAME,
|
|
61
|
+
}),
|
|
62
|
+
__metadata("design:type", String)
|
|
63
|
+
], BaseConfig.prototype, "productId", void 0);
|
|
64
|
+
__decorate([
|
|
65
|
+
(0, clime_1.option)({ required: true, flag: "u", description: "Endpoint URL." }),
|
|
66
|
+
__metadata("design:type", String)
|
|
67
|
+
], BaseConfig.prototype, "url", void 0);
|
|
68
|
+
__decorate([
|
|
69
|
+
(0, clime_1.option)({ required: true, flag: "n", description: "Username used for connecting." }),
|
|
70
|
+
__metadata("design:type", String)
|
|
71
|
+
], BaseConfig.prototype, "name", void 0);
|
|
72
|
+
__decorate([
|
|
73
|
+
(0, clime_1.option)({ required: true, flag: "p", description: "Pin used for connecting." }),
|
|
74
|
+
__metadata("design:type", String)
|
|
75
|
+
], BaseConfig.prototype, "pin", void 0);
|
|
76
|
+
__decorate([
|
|
77
|
+
(0, clime_1.option)({ required: true, flag: "b", description: "BLZ of the bank to connect to." }),
|
|
78
|
+
__metadata("design:type", String)
|
|
79
|
+
], BaseConfig.prototype, "blz", void 0);
|
|
80
|
+
__decorate([
|
|
81
|
+
(0, clime_1.option)({ toggle: true, flag: "d" }),
|
|
82
|
+
__metadata("design:type", Boolean)
|
|
83
|
+
], BaseConfig.prototype, "debug", void 0);
|
|
84
|
+
__decorate([
|
|
85
|
+
(0, clime_1.option)({ toggle: true, flag: "v" }),
|
|
86
|
+
__metadata("design:type", Boolean)
|
|
87
|
+
], BaseConfig.prototype, "verbose", void 0);
|
|
88
|
+
__decorate([
|
|
89
|
+
(0, clime_1.option)({ toggle: true, flag: "j" }),
|
|
90
|
+
__metadata("design:type", Boolean)
|
|
91
|
+
], BaseConfig.prototype, "json", void 0);
|
|
92
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
36
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
+
const path = __importStar(require("path"));
|
|
38
|
+
const clime_1 = require("clime");
|
|
39
|
+
const cli = new clime_1.CLI("fints", path.join(__dirname, "commands"));
|
|
40
|
+
const shim = new clime_1.Shim(cli);
|
|
41
|
+
shim.execute(process.argv);
|
|
42
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,2CAA6B;AAC7B,iCAAkC;AAElC,MAAM,GAAG,GAAG,IAAI,WAAG,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;AAC/D,MAAM,IAAI,GAAG,IAAI,YAAI,CAAC,GAAG,CAAC,CAAC;AAC3B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
|
package/dist/logger.js
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
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
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.error = exports.warn = exports.info = exports.verbose = exports.logger = void 0;
|
|
37
|
+
exports.setLevel = setLevel;
|
|
38
|
+
const fints_lib_1 = require("fints-lib");
|
|
39
|
+
const Winston = __importStar(require("winston"));
|
|
40
|
+
const transport = new Winston.transports.Console({
|
|
41
|
+
level: "verbose",
|
|
42
|
+
format: Winston.format.combine(Winston.format.timestamp({ format: "YYYY-MM-DDTHH:mm:ss" }), Winston.format.colorize(), Winston.format.printf((param) => `${param.timestamp} - ${param.level}: ${param.message}`)),
|
|
43
|
+
});
|
|
44
|
+
fints_lib_1.logger.silent = false;
|
|
45
|
+
fints_lib_1.logger.add(transport);
|
|
46
|
+
function setLevel(isVerbose) {
|
|
47
|
+
const level = isVerbose ? "verbose" : "info";
|
|
48
|
+
transport.level = level;
|
|
49
|
+
}
|
|
50
|
+
exports.logger = Winston.createLogger({ transports: [transport] });
|
|
51
|
+
exports.verbose = exports.logger.verbose;
|
|
52
|
+
exports.info = exports.logger.info;
|
|
53
|
+
exports.warn = exports.logger.warn;
|
|
54
|
+
exports.error = exports.logger.error;
|
|
55
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,4BAGC;AAlBD,yCAAgD;AAChD,iDAAmC;AAEnC,MAAM,SAAS,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;IAC7C,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAC1B,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC,EAC3D,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,EACzB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,SAAS,MAAM,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CACjG;CACJ,CAAC,CAAC;AAEH,kBAAS,CAAC,MAAM,GAAG,KAAK,CAAC;AACzB,kBAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAEzB,SAAgB,QAAQ,CAAC,SAAkB;IACvC,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;IAC7C,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;AAC5B,CAAC;AAEY,QAAA,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,EAAE,UAAU,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AAE3D,QAAA,OAAO,GAAG,cAAM,CAAC,OAAO,CAAC;AACzB,QAAA,IAAI,GAAG,cAAM,CAAC,IAAI,CAAC;AACnB,QAAA,IAAI,GAAG,cAAM,CAAC,IAAI,CAAC;AACnB,QAAA,KAAK,GAAG,cAAM,CAAC,KAAK,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fints-lib-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "FinTS command line interface.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"fints",
|
|
@@ -45,18 +45,17 @@
|
|
|
45
45
|
"dependencies": {
|
|
46
46
|
"clime": "^0.5.16",
|
|
47
47
|
"date-fns": "^4.1.0",
|
|
48
|
-
"fints-lib": "
|
|
48
|
+
"fints-lib": "*",
|
|
49
49
|
"winston": "^3.19.0",
|
|
50
|
-
"
|
|
50
|
+
"yaml": "^2.8.2"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
53
|
-
"@types/jest": "^
|
|
53
|
+
"@types/jest": "^30.0.0",
|
|
54
54
|
"@types/node": "^25.0.3",
|
|
55
|
-
"@types/winston": "^2.4.4",
|
|
56
55
|
"@types/yamljs": "^0.2.34",
|
|
57
|
-
"jest": "^
|
|
56
|
+
"jest": "^30.2.0",
|
|
58
57
|
"minimatch": "^10.0.1",
|
|
59
58
|
"ts-jest": "^29.4.6",
|
|
60
|
-
"typescript": "^5.
|
|
59
|
+
"typescript": "^5.9.3"
|
|
61
60
|
}
|
|
62
61
|
}
|