apipay 0.1.0 → 0.2.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 +1 -1
- package/dist/commands/banks/add.d.ts +1 -1
- package/dist/commands/banks/add.d.ts.map +1 -1
- package/dist/commands/banks/add.js +43 -43
- package/dist/commands/banks/add.js.map +1 -1
- package/dist/commands/banks/list.d.ts +1 -1
- package/dist/commands/banks/list.d.ts.map +1 -1
- package/dist/commands/banks/list.js +19 -17
- package/dist/commands/banks/list.js.map +1 -1
- package/dist/commands/banks/remove.d.ts +1 -1
- package/dist/commands/banks/remove.d.ts.map +1 -1
- package/dist/commands/banks/remove.js +19 -19
- package/dist/commands/banks/remove.js.map +1 -1
- package/dist/commands/banks/toggle.d.ts +1 -1
- package/dist/commands/banks/toggle.d.ts.map +1 -1
- package/dist/commands/banks/toggle.js +12 -12
- package/dist/commands/banks/toggle.js.map +1 -1
- package/dist/commands/config/get.d.ts +1 -1
- package/dist/commands/config/get.d.ts.map +1 -1
- package/dist/commands/config/get.js +15 -12
- package/dist/commands/config/get.js.map +1 -1
- package/dist/commands/config/reset.d.ts +1 -1
- package/dist/commands/config/reset.d.ts.map +1 -1
- package/dist/commands/config/reset.js +12 -12
- package/dist/commands/config/reset.js.map +1 -1
- package/dist/commands/config/set.d.ts +1 -1
- package/dist/commands/config/set.d.ts.map +1 -1
- package/dist/commands/config/set.js +14 -11
- package/dist/commands/config/set.js.map +1 -1
- package/dist/commands/keys/create.d.ts +1 -1
- package/dist/commands/keys/create.d.ts.map +1 -1
- package/dist/commands/keys/create.js +38 -32
- package/dist/commands/keys/create.js.map +1 -1
- package/dist/commands/keys/list.d.ts +1 -1
- package/dist/commands/keys/list.d.ts.map +1 -1
- package/dist/commands/keys/list.js +15 -15
- package/dist/commands/keys/list.js.map +1 -1
- package/dist/commands/keys/revoke.d.ts +1 -1
- package/dist/commands/keys/revoke.d.ts.map +1 -1
- package/dist/commands/keys/revoke.js +25 -22
- package/dist/commands/keys/revoke.js.map +1 -1
- package/dist/commands/login.d.ts +2 -2
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +66 -55
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.d.ts +1 -1
- package/dist/commands/logout.d.ts.map +1 -1
- package/dist/commands/logout.js +12 -12
- package/dist/commands/logout.js.map +1 -1
- package/dist/commands/metrics/summary.d.ts +1 -1
- package/dist/commands/metrics/summary.d.ts.map +1 -1
- package/dist/commands/metrics/summary.js +17 -17
- package/dist/commands/metrics/summary.js.map +1 -1
- package/dist/commands/metrics/transactions.d.ts +1 -1
- package/dist/commands/metrics/transactions.d.ts.map +1 -1
- package/dist/commands/metrics/transactions.js +23 -20
- package/dist/commands/metrics/transactions.js.map +1 -1
- package/dist/commands/{init.d.ts → setup.d.ts} +4 -4
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +192 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/status.d.ts +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +42 -38
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/webhooks/add.d.ts +1 -1
- package/dist/commands/webhooks/add.d.ts.map +1 -1
- package/dist/commands/webhooks/add.js +34 -32
- package/dist/commands/webhooks/add.js.map +1 -1
- package/dist/commands/webhooks/history.d.ts +1 -1
- package/dist/commands/webhooks/history.d.ts.map +1 -1
- package/dist/commands/webhooks/history.js +19 -17
- package/dist/commands/webhooks/history.js.map +1 -1
- package/dist/commands/webhooks/list.d.ts +1 -1
- package/dist/commands/webhooks/list.d.ts.map +1 -1
- package/dist/commands/webhooks/list.js +20 -16
- package/dist/commands/webhooks/list.js.map +1 -1
- package/dist/commands/webhooks/remove.d.ts +1 -1
- package/dist/commands/webhooks/remove.d.ts.map +1 -1
- package/dist/commands/webhooks/remove.js +14 -14
- package/dist/commands/webhooks/remove.js.map +1 -1
- package/dist/commands/webhooks/resend.d.ts +1 -1
- package/dist/commands/webhooks/resend.d.ts.map +1 -1
- package/dist/commands/webhooks/resend.js +20 -11
- package/dist/commands/webhooks/resend.js.map +1 -1
- package/dist/commands/webhooks/toggle.d.ts +1 -1
- package/dist/commands/webhooks/toggle.d.ts.map +1 -1
- package/dist/commands/webhooks/toggle.js +12 -12
- package/dist/commands/webhooks/toggle.js.map +1 -1
- package/dist/commands/webhooks/update.d.ts +1 -1
- package/dist/commands/webhooks/update.d.ts.map +1 -1
- package/dist/commands/webhooks/update.js +17 -17
- package/dist/commands/webhooks/update.js.map +1 -1
- package/dist/commands/whoami.d.ts +1 -1
- package/dist/commands/whoami.d.ts.map +1 -1
- package/dist/commands/whoami.js +18 -18
- package/dist/commands/whoami.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/api-client.d.ts +1 -1
- package/dist/lib/api-client.d.ts.map +1 -1
- package/dist/lib/api-client.js +39 -34
- package/dist/lib/api-client.js.map +1 -1
- package/dist/lib/base-command.d.ts +3 -3
- package/dist/lib/base-command.d.ts.map +1 -1
- package/dist/lib/base-command.js +10 -10
- package/dist/lib/base-command.js.map +1 -1
- package/dist/lib/config.d.ts +2 -2
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +33 -34
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/constants.js +11 -11
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/formatters.d.ts +2 -0
- package/dist/lib/formatters.d.ts.map +1 -1
- package/dist/lib/formatters.js +43 -37
- package/dist/lib/formatters.js.map +1 -1
- package/dist/lib/prompts.d.ts +1 -0
- package/dist/lib/prompts.d.ts.map +1 -1
- package/dist/lib/prompts.js +33 -18
- package/dist/lib/prompts.js.map +1 -1
- package/dist/lib/validators.d.ts +1 -0
- package/dist/lib/validators.d.ts.map +1 -1
- package/dist/lib/validators.js +49 -28
- package/dist/lib/validators.js.map +1 -1
- package/oclif.manifest.json +38 -38
- package/package.json +93 -82
- package/dist/commands/init.d.ts.map +0 -1
- package/dist/commands/init.js +0 -109
- package/dist/commands/init.js.map +0 -1
package/README.md
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../src/commands/banks/add.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../src/commands/banks/add.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,aAAa,EAAC,MAAM,2BAA2B,CAAC;AAWxD,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,aAAa;IAClD,OAAgB,WAAW,SAAmD;IAE9E,OAAgB,QAAQ,WAAmC;IAErD,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA4F1B"}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import chalk from
|
|
2
|
-
import { ApiKeyCommand } from
|
|
3
|
-
import { markStepComplete } from
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import { ApiKeyCommand } from "../../lib/base-command.js";
|
|
3
|
+
import { markStepComplete } from "../../lib/config.js";
|
|
4
|
+
import { info, kvLine, success } from "../../lib/formatters.js";
|
|
5
|
+
import { promptAccountName, promptAccountNumber, promptBankSelection, promptMobile, promptOtp, } from "../../lib/prompts.js";
|
|
6
6
|
export default class BanksAdd extends ApiKeyCommand {
|
|
7
|
-
static description =
|
|
8
|
-
static examples = [
|
|
7
|
+
static description = "Add a bank account to your ApiPay integration";
|
|
8
|
+
static examples = ["<%= config.bin %> banks:add"];
|
|
9
9
|
async run() {
|
|
10
|
-
console.log(
|
|
11
|
-
console.log(chalk.bold(
|
|
12
|
-
console.log(chalk.gray(
|
|
13
|
-
console.log(
|
|
10
|
+
console.log("");
|
|
11
|
+
console.log(chalk.bold(" Add Bank Account"));
|
|
12
|
+
console.log(chalk.gray(" ────────────────"));
|
|
13
|
+
console.log("");
|
|
14
14
|
// Step 1: Select bank
|
|
15
15
|
const bankShortName = await promptBankSelection();
|
|
16
16
|
// Step 2: Account details
|
|
@@ -18,65 +18,65 @@ export default class BanksAdd extends ApiKeyCommand {
|
|
|
18
18
|
const accName = await promptAccountName();
|
|
19
19
|
const accMobile = await promptMobile();
|
|
20
20
|
// Step 3: Submit to API
|
|
21
|
-
this.spinner.start(
|
|
21
|
+
this.spinner.start("Adding bank account...");
|
|
22
22
|
try {
|
|
23
|
-
const data = await this.api.post(
|
|
24
|
-
type:
|
|
23
|
+
const data = await this.api.post("/client/banks", {
|
|
24
|
+
type: "openapi",
|
|
25
25
|
bankShortName,
|
|
26
26
|
accountNumber,
|
|
27
27
|
accName,
|
|
28
28
|
accMobile,
|
|
29
|
-
},
|
|
29
|
+
}, "apikey");
|
|
30
30
|
const bank = data?.data ?? data;
|
|
31
|
-
this.spinner.succeed(
|
|
31
|
+
this.spinner.succeed("Bank account submitted!");
|
|
32
32
|
// Check if OTP is required
|
|
33
|
-
if (bank?.
|
|
34
|
-
console.log(
|
|
35
|
-
info(`OTP verification required. Check your phone
|
|
36
|
-
console.log(
|
|
33
|
+
if (bank?.OTP === 1) {
|
|
34
|
+
console.log("");
|
|
35
|
+
info(`OTP verification required. Check your phone or your bank app for the code.`);
|
|
36
|
+
console.log("");
|
|
37
37
|
const otp = await promptOtp();
|
|
38
|
-
this.spinner.start(
|
|
38
|
+
this.spinner.start("Confirming OTP...");
|
|
39
39
|
try {
|
|
40
|
-
const otpResult = await this.api.post(
|
|
41
|
-
type:
|
|
40
|
+
const otpResult = await this.api.post("/client/banks/confirm-otp", {
|
|
41
|
+
type: "openapi",
|
|
42
42
|
bankShortName,
|
|
43
43
|
accountNumber,
|
|
44
44
|
otp,
|
|
45
|
-
},
|
|
45
|
+
}, "apikey");
|
|
46
46
|
const confirmed = otpResult?.data ?? otpResult;
|
|
47
|
-
this.spinner.succeed(
|
|
48
|
-
console.log(
|
|
49
|
-
kvLine(
|
|
50
|
-
kvLine(
|
|
51
|
-
kvLine(
|
|
47
|
+
this.spinner.succeed("Bank account verified!");
|
|
48
|
+
console.log("");
|
|
49
|
+
kvLine("Bank", bankShortName);
|
|
50
|
+
kvLine("Account", accountNumber);
|
|
51
|
+
kvLine("Name", accName);
|
|
52
52
|
if (confirmed?.vaNumber) {
|
|
53
|
-
kvLine(
|
|
53
|
+
kvLine("VA Number", chalk.cyan(confirmed.vaNumber));
|
|
54
54
|
}
|
|
55
|
-
kvLine(
|
|
56
|
-
console.log(
|
|
55
|
+
kvLine("Status", chalk.green("ACTIVE"));
|
|
56
|
+
console.log("");
|
|
57
57
|
}
|
|
58
58
|
catch (error) {
|
|
59
|
-
this.spinner.fail(
|
|
59
|
+
this.spinner.fail("OTP verification failed");
|
|
60
60
|
this.handleError(error);
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
63
|
else {
|
|
64
|
-
console.log(
|
|
65
|
-
kvLine(
|
|
66
|
-
kvLine(
|
|
67
|
-
kvLine(
|
|
68
|
-
kvLine(
|
|
69
|
-
kvLine(
|
|
70
|
-
console.log(
|
|
64
|
+
console.log("");
|
|
65
|
+
kvLine("Bank", bankShortName);
|
|
66
|
+
kvLine("Account", accountNumber);
|
|
67
|
+
kvLine("Name", accName);
|
|
68
|
+
kvLine("Public ID", bank?.publicId ?? "—");
|
|
69
|
+
kvLine("Status", chalk.green(bank?.status ?? "ACTIVE"));
|
|
70
|
+
console.log("");
|
|
71
71
|
}
|
|
72
|
-
markStepComplete(
|
|
73
|
-
success(
|
|
72
|
+
markStepComplete("bank");
|
|
73
|
+
success("Bank account added successfully.");
|
|
74
74
|
if (this.jsonOutput) {
|
|
75
75
|
this.outputJson(bank);
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
78
|
catch (error) {
|
|
79
|
-
this.spinner.fail(
|
|
79
|
+
this.spinner.fail("Failed to add bank account");
|
|
80
80
|
this.handleError(error);
|
|
81
81
|
}
|
|
82
82
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../../src/commands/banks/add.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../../src/commands/banks/add.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/banks/list.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/banks/list.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,aAAa,EAAC,MAAM,2BAA2B,CAAC;AAOxD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,aAAa;IACnD,OAAgB,WAAW,SAA6B;IAExD,OAAgB,QAAQ,WAAoC;IAEtD,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAwC1B"}
|
|
@@ -1,26 +1,28 @@
|
|
|
1
|
-
import chalk from
|
|
2
|
-
import { ApiKeyCommand } from
|
|
3
|
-
import { createTable, statusBadge } from
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import { ApiKeyCommand } from "../../lib/base-command.js";
|
|
3
|
+
import { createTable, maskAccountNumber, statusBadge, } from "../../lib/formatters.js";
|
|
4
4
|
export default class BanksList extends ApiKeyCommand {
|
|
5
|
-
static description =
|
|
6
|
-
static examples = [
|
|
5
|
+
static description = "List your bank accounts";
|
|
6
|
+
static examples = ["<%= config.bin %> banks:list"];
|
|
7
7
|
async run() {
|
|
8
|
-
this.spinner.start(
|
|
8
|
+
this.spinner.start("Fetching bank accounts...");
|
|
9
9
|
try {
|
|
10
|
-
const data = await this.api.get(
|
|
11
|
-
const banks = data
|
|
10
|
+
const data = await this.api.get("/client/banks", "apikey");
|
|
11
|
+
const banks = Array.isArray(data)
|
|
12
|
+
? data
|
|
13
|
+
: (data?.message ?? data?.data ?? data);
|
|
12
14
|
this.spinner.stop();
|
|
13
15
|
if (!Array.isArray(banks) || banks.length === 0) {
|
|
14
|
-
this.log(`\n No bank accounts found. Run ${chalk.cyan(
|
|
16
|
+
this.log(`\n No bank accounts found. Run ${chalk.cyan("apipay banks:add")} to add one.\n`);
|
|
15
17
|
return;
|
|
16
18
|
}
|
|
17
|
-
console.log(
|
|
18
|
-
const table = createTable([
|
|
19
|
-
b.bankShortName ?? b.bankName ??
|
|
20
|
-
b.accountNumber
|
|
21
|
-
b.vaNumber ??
|
|
22
|
-
statusBadge(b.status ??
|
|
23
|
-
b.publicId ? b.publicId.slice(0, 8) +
|
|
19
|
+
console.log("");
|
|
20
|
+
const table = createTable(["Bank", "Account #", "VA Number", "Status", "Public ID"], banks.map((b) => [
|
|
21
|
+
b.bankShortName ?? b.bankName ?? "—",
|
|
22
|
+
b.accountNumber ? maskAccountNumber(b.accountNumber) : "—",
|
|
23
|
+
b.vaNumber ?? "—",
|
|
24
|
+
statusBadge(b.status ?? "UNKNOWN"),
|
|
25
|
+
b.publicId ? b.publicId.slice(0, 8) + "..." : "—",
|
|
24
26
|
]));
|
|
25
27
|
console.log(table);
|
|
26
28
|
console.log(`\n ${chalk.gray(`${banks.length} bank account(s)`)}\n`);
|
|
@@ -29,7 +31,7 @@ export default class BanksList extends ApiKeyCommand {
|
|
|
29
31
|
}
|
|
30
32
|
}
|
|
31
33
|
catch (error) {
|
|
32
|
-
this.spinner.fail(
|
|
34
|
+
this.spinner.fail("Failed to fetch bank accounts");
|
|
33
35
|
this.handleError(error);
|
|
34
36
|
}
|
|
35
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/banks/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/banks/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,aAAa,EAAC,MAAM,2BAA2B,CAAC;AACxD,OAAO,EACN,WAAW,EACX,iBAAiB,EACjB,WAAW,GACX,MAAM,yBAAyB,CAAC;AAEjC,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,aAAa;IACnD,MAAM,CAAU,WAAW,GAAG,yBAAyB,CAAC;IAExD,MAAM,CAAU,QAAQ,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAE5D,KAAK,CAAC,GAAG;QACR,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAEhD,IAAI,CAAC;YACJ,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;YAC3D,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;gBAChC,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,CAAC;YAEzC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAEpB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjD,IAAI,CAAC,GAAG,CACP,mCAAmC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CACjF,CAAC;gBACF,OAAO;YACR,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,MAAM,KAAK,GAAG,WAAW,CACxB,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAC,EACzD,KAAK,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC;gBACrB,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,QAAQ,IAAI,GAAG;gBACpC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG;gBAC1D,CAAC,CAAC,QAAQ,IAAI,GAAG;gBACjB,WAAW,CAAC,CAAC,CAAC,MAAM,IAAI,SAAS,CAAC;gBAClC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG;aACjD,CAAC,CACF,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAEtE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACrB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACxB,CAAC;QACF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;YACnD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;IACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../../src/commands/banks/remove.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../../src/commands/banks/remove.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,aAAa,EAAC,MAAM,2BAA2B,CAAC;AAIxD,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,aAAa;IACrD,OAAgB,WAAW,SAA2B;IAEtD,OAAgB,IAAI;;MAElB;IAEF,OAAgB,QAAQ,WAAkD;IAEpE,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA8C1B"}
|
|
@@ -1,45 +1,45 @@
|
|
|
1
|
-
import { Args } from
|
|
2
|
-
import chalk from
|
|
3
|
-
import { ApiKeyCommand } from
|
|
4
|
-
import { success, warn
|
|
5
|
-
import { promptConfirm, promptOtp } from
|
|
1
|
+
import { Args } from "@oclif/core";
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
import { ApiKeyCommand } from "../../lib/base-command.js";
|
|
4
|
+
import { info, success, warn } from "../../lib/formatters.js";
|
|
5
|
+
import { promptConfirm, promptOtp } from "../../lib/prompts.js";
|
|
6
6
|
export default class BanksRemove extends ApiKeyCommand {
|
|
7
|
-
static description =
|
|
7
|
+
static description = "Remove a bank account";
|
|
8
8
|
static args = {
|
|
9
|
-
id: Args.string({ description:
|
|
9
|
+
id: Args.string({ description: "Bank public ID", required: true }),
|
|
10
10
|
};
|
|
11
|
-
static examples = [
|
|
11
|
+
static examples = ["<%= config.bin %> banks:remove <public-id>"];
|
|
12
12
|
async run() {
|
|
13
13
|
const { args } = await this.parse(BanksRemove);
|
|
14
|
-
warn(
|
|
14
|
+
warn("This will permanently disconnect this bank account from ApiPay.");
|
|
15
15
|
const confirmed = await promptConfirm(`Remove bank ${chalk.bold(args.id.slice(0, 8))}...?`);
|
|
16
16
|
if (!confirmed) {
|
|
17
|
-
this.log(
|
|
17
|
+
this.log("Cancelled.");
|
|
18
18
|
return;
|
|
19
19
|
}
|
|
20
|
-
this.spinner.start(
|
|
20
|
+
this.spinner.start("Removing bank account...");
|
|
21
21
|
try {
|
|
22
|
-
const data = await this.api.delete(`/client/banks/${args.id}`,
|
|
22
|
+
const data = await this.api.delete(`/client/banks/${args.id}`, "apikey");
|
|
23
23
|
const result = data?.data ?? data;
|
|
24
24
|
// Some banks require OTP confirmation for deletion
|
|
25
25
|
if (result?.requiresOtp || result?.otpRequired) {
|
|
26
26
|
this.spinner.stop();
|
|
27
|
-
info(
|
|
27
|
+
info("OTP required to confirm deletion. Check your phone.");
|
|
28
28
|
const otp = await promptOtp();
|
|
29
|
-
this.spinner.start(
|
|
30
|
-
await this.api.post(`/client/banks/${args.id}/confirm-delete`, { otp },
|
|
31
|
-
this.spinner.succeed(
|
|
29
|
+
this.spinner.start("Confirming deletion...");
|
|
30
|
+
await this.api.post(`/client/banks/${args.id}/confirm-delete`, { otp }, "apikey");
|
|
31
|
+
this.spinner.succeed("Bank account removed");
|
|
32
32
|
}
|
|
33
33
|
else {
|
|
34
|
-
this.spinner.succeed(
|
|
34
|
+
this.spinner.succeed("Bank account removed");
|
|
35
35
|
}
|
|
36
|
-
success(
|
|
36
|
+
success("Bank account has been disconnected.");
|
|
37
37
|
if (this.jsonOutput) {
|
|
38
38
|
this.outputJson({ success: true, id: args.id });
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
catch (error) {
|
|
42
|
-
this.spinner.fail(
|
|
42
|
+
this.spinner.fail("Failed to remove bank account");
|
|
43
43
|
this.handleError(error);
|
|
44
44
|
}
|
|
45
45
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../src/commands/banks/remove.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../src/commands/banks/remove.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,aAAa,CAAC;AACjC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,aAAa,EAAC,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAC,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAC,aAAa,EAAE,SAAS,EAAC,MAAM,sBAAsB,CAAC;AAE9D,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,aAAa;IACrD,MAAM,CAAU,WAAW,GAAG,uBAAuB,CAAC;IAEtD,MAAM,CAAU,IAAI,GAAG;QACtB,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAC,WAAW,EAAE,gBAAgB,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC;KAChE,CAAC;IAEF,MAAM,CAAU,QAAQ,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAE1E,KAAK,CAAC,GAAG;QACR,MAAM,EAAC,IAAI,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAE7C,IAAI,CAAC,iEAAiE,CAAC,CAAC;QACxE,MAAM,SAAS,GAAG,MAAM,aAAa,CACpC,eAAe,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CACpD,CAAC;QACF,IAAI,CAAC,SAAS,EAAE,CAAC;YAChB,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YACvB,OAAO;QACR,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAE/C,IAAI,CAAC;YACJ,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;YACzE,MAAM,MAAM,GAAG,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC;YAElC,mDAAmD;YACnD,IAAI,MAAM,EAAE,WAAW,IAAI,MAAM,EAAE,WAAW,EAAE,CAAC;gBAChD,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBACpB,IAAI,CAAC,qDAAqD,CAAC,CAAC;gBAE5D,MAAM,GAAG,GAAG,MAAM,SAAS,EAAE,CAAC;gBAE9B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;gBAC7C,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAClB,iBAAiB,IAAI,CAAC,EAAE,iBAAiB,EACzC,EAAC,GAAG,EAAC,EACL,QAAQ,CACR,CAAC;gBACF,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;YAC9C,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;YAC9C,CAAC;YAED,OAAO,CAAC,qCAAqC,CAAC,CAAC;YAE/C,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACrB,IAAI,CAAC,UAAU,CAAC,EAAC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAC,CAAC,CAAC;YAC/C,CAAC;QACF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;YACnD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;IACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toggle.d.ts","sourceRoot":"","sources":["../../../src/commands/banks/toggle.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"toggle.d.ts","sourceRoot":"","sources":["../../../src/commands/banks/toggle.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,aAAa,EAAC,MAAM,2BAA2B,CAAC;AAGxD,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,aAAa;IACrD,OAAgB,WAAW,SAC0B;IAErD,OAAgB,IAAI;;MAElB;IAEF,OAAgB,QAAQ,WAAkD;IAEpE,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA0B1B"}
|
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
import { Args } from
|
|
2
|
-
import chalk from
|
|
3
|
-
import { ApiKeyCommand } from
|
|
4
|
-
import {
|
|
1
|
+
import { Args } from "@oclif/core";
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
import { ApiKeyCommand } from "../../lib/base-command.js";
|
|
4
|
+
import { statusBadge, success } from "../../lib/formatters.js";
|
|
5
5
|
export default class BanksToggle extends ApiKeyCommand {
|
|
6
|
-
static description =
|
|
6
|
+
static description = "Toggle a bank account between ACTIVE and INACTIVE";
|
|
7
7
|
static args = {
|
|
8
|
-
id: Args.string({ description:
|
|
8
|
+
id: Args.string({ description: "Bank public ID", required: true }),
|
|
9
9
|
};
|
|
10
|
-
static examples = [
|
|
10
|
+
static examples = ["<%= config.bin %> banks:toggle <public-id>"];
|
|
11
11
|
async run() {
|
|
12
12
|
const { args } = await this.parse(BanksToggle);
|
|
13
|
-
this.spinner.start(
|
|
13
|
+
this.spinner.start("Toggling bank status...");
|
|
14
14
|
try {
|
|
15
|
-
const data = await this.api.patch(`/client/banks/${args.id}/status`, undefined,
|
|
15
|
+
const data = await this.api.patch(`/client/banks/${args.id}/status`, undefined, "apikey");
|
|
16
16
|
const bank = data?.data ?? data;
|
|
17
|
-
this.spinner.succeed(
|
|
18
|
-
success(`Bank ${chalk.bold(args.id.slice(0, 8))}... is now ${statusBadge(bank?.status ??
|
|
17
|
+
this.spinner.succeed("Bank status updated");
|
|
18
|
+
success(`Bank ${chalk.bold(args.id.slice(0, 8))}... is now ${statusBadge(bank?.status ?? "UNKNOWN")}`);
|
|
19
19
|
if (this.jsonOutput) {
|
|
20
20
|
this.outputJson(bank);
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
23
|
catch (error) {
|
|
24
|
-
this.spinner.fail(
|
|
24
|
+
this.spinner.fail("Failed to toggle bank status");
|
|
25
25
|
this.handleError(error);
|
|
26
26
|
}
|
|
27
27
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toggle.js","sourceRoot":"","sources":["../../../src/commands/banks/toggle.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"toggle.js","sourceRoot":"","sources":["../../../src/commands/banks/toggle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,aAAa,CAAC;AACjC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,aAAa,EAAC,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAC,WAAW,EAAE,OAAO,EAAC,MAAM,yBAAyB,CAAC;AAE7D,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,aAAa;IACrD,MAAM,CAAU,WAAW,GAC1B,mDAAmD,CAAC;IAErD,MAAM,CAAU,IAAI,GAAG;QACtB,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAC,WAAW,EAAE,gBAAgB,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC;KAChE,CAAC;IAEF,MAAM,CAAU,QAAQ,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAE1E,KAAK,CAAC,GAAG;QACR,MAAM,EAAC,IAAI,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAE7C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAE9C,IAAI,CAAC;YACJ,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAChC,iBAAiB,IAAI,CAAC,EAAE,SAAS,EACjC,SAAS,EACT,QAAQ,CACR,CAAC;YACF,MAAM,IAAI,GAAG,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC;YAEhC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;YAC5C,OAAO,CACN,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,WAAW,CAAC,IAAI,EAAE,MAAM,IAAI,SAAS,CAAC,EAAE,CAC7F,CAAC;YAEF,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACrB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC;QACF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;YAClD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;IACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../src/commands/config/get.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../src/commands/config/get.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,WAAW,EAAC,MAAM,2BAA2B,CAAC;AAGtD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,WAAW;IACjD,OAAgB,WAAW,SAAmC;IAE9D,OAAgB,IAAI;;MAKlB;IAEF,OAAgB,QAAQ,WAGtB;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAqC1B"}
|
|
@@ -1,15 +1,18 @@
|
|
|
1
|
-
import { Args } from
|
|
2
|
-
import chalk from
|
|
3
|
-
import { BaseCommand } from
|
|
4
|
-
import { getStore } from
|
|
1
|
+
import { Args } from "@oclif/core";
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
import { BaseCommand } from "../../lib/base-command.js";
|
|
4
|
+
import { getStore } from "../../lib/config.js";
|
|
5
5
|
export default class ConfigGet extends BaseCommand {
|
|
6
|
-
static description =
|
|
6
|
+
static description = "Get a CLI configuration value";
|
|
7
7
|
static args = {
|
|
8
|
-
key: Args.string({
|
|
8
|
+
key: Args.string({
|
|
9
|
+
description: "Config key (e.g., apiBaseUrl)",
|
|
10
|
+
required: false,
|
|
11
|
+
}),
|
|
9
12
|
};
|
|
10
13
|
static examples = [
|
|
11
|
-
|
|
12
|
-
|
|
14
|
+
"<%= config.bin %> config:get apiBaseUrl",
|
|
15
|
+
"<%= config.bin %> config:get",
|
|
13
16
|
];
|
|
14
17
|
async run() {
|
|
15
18
|
const { args } = await this.parse(ConfigGet);
|
|
@@ -19,7 +22,7 @@ export default class ConfigGet extends BaseCommand {
|
|
|
19
22
|
if (value === undefined) {
|
|
20
23
|
this.error(`Key ${chalk.bold(args.key)} is not set.`, { exit: 1 });
|
|
21
24
|
}
|
|
22
|
-
if (typeof value ===
|
|
25
|
+
if (typeof value === "object") {
|
|
23
26
|
console.log(JSON.stringify(value, null, 2));
|
|
24
27
|
}
|
|
25
28
|
else {
|
|
@@ -33,14 +36,14 @@ export default class ConfigGet extends BaseCommand {
|
|
|
33
36
|
if (safe.auth?.accessToken) {
|
|
34
37
|
safe.auth = {
|
|
35
38
|
...safe.auth,
|
|
36
|
-
accessToken: safe.auth.accessToken.slice(0, 20) +
|
|
37
|
-
refreshToken: safe.auth.refreshToken?.slice(0, 20) +
|
|
39
|
+
accessToken: safe.auth.accessToken.slice(0, 20) + "...",
|
|
40
|
+
refreshToken: safe.auth.refreshToken?.slice(0, 20) + "...",
|
|
38
41
|
};
|
|
39
42
|
}
|
|
40
43
|
if (safe.apiKey?.secretKey) {
|
|
41
44
|
safe.apiKey = {
|
|
42
45
|
...safe.apiKey,
|
|
43
|
-
secretKey:
|
|
46
|
+
secretKey: "****",
|
|
44
47
|
};
|
|
45
48
|
}
|
|
46
49
|
console.log(JSON.stringify(safe, null, 2));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/commands/config/get.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/commands/config/get.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,aAAa,CAAC;AACjC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,WAAW,EAAC,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAC,QAAQ,EAAC,MAAM,qBAAqB,CAAC;AAE7C,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,WAAW;IACjD,MAAM,CAAU,WAAW,GAAG,+BAA+B,CAAC;IAE9D,MAAM,CAAU,IAAI,GAAG;QACtB,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC;YAChB,WAAW,EAAE,+BAA+B;YAC5C,QAAQ,EAAE,KAAK;SACf,CAAC;KACF,CAAC;IAEF,MAAM,CAAU,QAAQ,GAAG;QAC1B,yCAAyC;QACzC,8BAA8B;KAC9B,CAAC;IAEF,KAAK,CAAC,GAAG;QACR,MAAM,EAAC,IAAI,EAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;QAEzB,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACd,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAU,CAAC,CAAC;YACzC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACzB,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,EAAC,IAAI,EAAE,CAAC,EAAC,CAAC,CAAC;YAClE,CAAC;YAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC/B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7C,CAAC;iBAAM,CAAC;gBACP,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC5B,CAAC;QACF,CAAC;aAAM,CAAC;YACP,2CAA2C;YAC3C,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC;YACxB,MAAM,IAAI,GAAG,EAAC,GAAG,GAAG,EAAQ,CAAC;YAE7B,IAAI,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC;gBAC5B,IAAI,CAAC,IAAI,GAAG;oBACX,GAAG,IAAI,CAAC,IAAI;oBACZ,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK;oBACvD,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK;iBAC1D,CAAC;YACH,CAAC;YACD,IAAI,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC;gBAC5B,IAAI,CAAC,MAAM,GAAG;oBACb,GAAG,IAAI,CAAC,MAAM;oBACd,SAAS,EAAE,MAAM;iBACjB,CAAC;YACH,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5C,CAAC;IACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reset.d.ts","sourceRoot":"","sources":["../../../src/commands/config/reset.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"reset.d.ts","sourceRoot":"","sources":["../../../src/commands/config/reset.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,WAAW,EAAC,MAAM,2BAA2B,CAAC;AAKtD,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,WAAW;IACnD,OAAgB,WAAW,SAC2B;IAEtD,OAAgB,QAAQ,WAAsC;IAExD,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAgB1B"}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import chalk from
|
|
2
|
-
import { BaseCommand } from
|
|
3
|
-
import { resetAll } from
|
|
4
|
-
import { success, warn } from
|
|
5
|
-
import { promptConfirm } from
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import { BaseCommand } from "../../lib/base-command.js";
|
|
3
|
+
import { resetAll } from "../../lib/config.js";
|
|
4
|
+
import { success, warn } from "../../lib/formatters.js";
|
|
5
|
+
import { promptConfirm } from "../../lib/prompts.js";
|
|
6
6
|
export default class ConfigReset extends BaseCommand {
|
|
7
|
-
static description =
|
|
8
|
-
static examples = [
|
|
7
|
+
static description = "Reset all CLI configuration and stored credentials";
|
|
8
|
+
static examples = ["<%= config.bin %> config:reset"];
|
|
9
9
|
async run() {
|
|
10
|
-
warn(
|
|
11
|
-
const confirmed = await promptConfirm(`${chalk.red(
|
|
10
|
+
warn("This will clear ALL stored data: tokens, API keys, and settings.");
|
|
11
|
+
const confirmed = await promptConfirm(`${chalk.red("Are you sure?")} Reset all ApiPay CLI configuration?`);
|
|
12
12
|
if (!confirmed) {
|
|
13
|
-
this.log(
|
|
13
|
+
this.log("Cancelled.");
|
|
14
14
|
return;
|
|
15
15
|
}
|
|
16
16
|
resetAll();
|
|
17
|
-
success(
|
|
18
|
-
this.log(`\n Run ${chalk.cyan(
|
|
17
|
+
success("All configuration has been reset.");
|
|
18
|
+
this.log(`\n Run ${chalk.cyan("apipay setup")} to start fresh.\n`);
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
//# sourceMappingURL=reset.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reset.js","sourceRoot":"","sources":["../../../src/commands/config/reset.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,
|
|
1
|
+
{"version":3,"file":"reset.js","sourceRoot":"","sources":["../../../src/commands/config/reset.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,WAAW,EAAC,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAC,QAAQ,EAAC,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAC,OAAO,EAAE,IAAI,EAAC,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAC,aAAa,EAAC,MAAM,sBAAsB,CAAC;AAEnD,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,WAAW;IACnD,MAAM,CAAU,WAAW,GAC1B,oDAAoD,CAAC;IAEtD,MAAM,CAAU,QAAQ,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAE9D,KAAK,CAAC,GAAG;QACR,IAAI,CAAC,kEAAkE,CAAC,CAAC;QAEzE,MAAM,SAAS,GAAG,MAAM,aAAa,CACpC,GAAG,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,sCAAsC,CACnE,CAAC;QAEF,IAAI,CAAC,SAAS,EAAE,CAAC;YAChB,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YACvB,OAAO;QACR,CAAC;QAED,QAAQ,EAAE,CAAC;QACX,OAAO,CAAC,mCAAmC,CAAC,CAAC;QAC7C,IAAI,CAAC,GAAG,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAC;IACrE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../../src/commands/config/set.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../../src/commands/config/set.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,WAAW,EAAC,MAAM,2BAA2B,CAAC;AAItD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,WAAW;IACjD,OAAgB,WAAW,SAAmC;IAE9D,OAAgB,IAAI;;;MAMlB;IAEF,OAAgB,QAAQ,WAEtB;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAc1B"}
|
|
@@ -1,22 +1,25 @@
|
|
|
1
|
-
import { Args } from
|
|
2
|
-
import chalk from
|
|
3
|
-
import { BaseCommand } from
|
|
4
|
-
import { getStore } from
|
|
5
|
-
import { success } from
|
|
1
|
+
import { Args } from "@oclif/core";
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
import { BaseCommand } from "../../lib/base-command.js";
|
|
4
|
+
import { getStore } from "../../lib/config.js";
|
|
5
|
+
import { success } from "../../lib/formatters.js";
|
|
6
6
|
export default class ConfigSet extends BaseCommand {
|
|
7
|
-
static description =
|
|
7
|
+
static description = "Set a CLI configuration value";
|
|
8
8
|
static args = {
|
|
9
|
-
key: Args.string({
|
|
10
|
-
|
|
9
|
+
key: Args.string({
|
|
10
|
+
description: "Config key (e.g., apiBaseUrl)",
|
|
11
|
+
required: true,
|
|
12
|
+
}),
|
|
13
|
+
value: Args.string({ description: "Config value", required: true }),
|
|
11
14
|
};
|
|
12
15
|
static examples = [
|
|
13
|
-
|
|
16
|
+
"<%= config.bin %> config:set apiBaseUrl https://staging.apipay.vn/v1",
|
|
14
17
|
];
|
|
15
18
|
async run() {
|
|
16
19
|
const { args } = await this.parse(ConfigSet);
|
|
17
|
-
const allowedKeys = [
|
|
20
|
+
const allowedKeys = ["apiBaseUrl"];
|
|
18
21
|
if (!allowedKeys.includes(args.key)) {
|
|
19
|
-
this.error(`Unknown config key: ${chalk.bold(args.key)}. Allowed keys: ${allowedKeys.join(
|
|
22
|
+
this.error(`Unknown config key: ${chalk.bold(args.key)}. Allowed keys: ${allowedKeys.join(", ")}`, { exit: 1 });
|
|
20
23
|
}
|
|
21
24
|
getStore().set(args.key, args.value);
|
|
22
25
|
success(`${args.key} = ${chalk.cyan(args.value)}`);
|