apipay 0.1.0 → 0.3.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 +2 -7
- package/bin/dev.js +2 -0
- 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-unconfirmed.d.ts +7 -0
- package/dist/commands/banks/remove-unconfirmed.d.ts.map +1 -0
- package/dist/commands/banks/remove-unconfirmed.js +41 -0
- package/dist/commands/banks/remove-unconfirmed.js.map +1 -0
- 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 +13 -13
- 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 +2 -2
- package/dist/commands/config/set.d.ts.map +1 -1
- package/dist/commands/config/set.js +14 -13
- 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 +43 -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 +67 -56
- 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 +189 -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 +45 -45
- 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 +16 -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 +4 -2
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +44 -34
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/constants.d.ts +1 -1
- package/dist/lib/constants.d.ts.map +1 -1
- package/dist/lib/constants.js +11 -11
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/formatters.d.ts +4 -0
- package/dist/lib/formatters.d.ts.map +1 -1
- package/dist/lib/formatters.js +49 -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 +51 -30
- package/dist/lib/validators.js.map +1 -1
- package/oclif.manifest.json +78 -43
- 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/dist/lib/formatters.js
CHANGED
|
@@ -1,32 +1,44 @@
|
|
|
1
|
-
import chalk from
|
|
2
|
-
import Table from
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import Table from "cli-table3";
|
|
3
3
|
/**
|
|
4
4
|
* Formatters for consistent CLI output.
|
|
5
5
|
*/
|
|
6
6
|
/** Format a date string or Date to a human-readable local string */
|
|
7
7
|
export function formatDate(date) {
|
|
8
|
-
const d = typeof date ===
|
|
8
|
+
const d = typeof date === "string" ? new Date(date) : date;
|
|
9
9
|
return d.toLocaleString();
|
|
10
10
|
}
|
|
11
11
|
/** Mask a secret key: show first 8 and last 4 chars */
|
|
12
12
|
export function maskSecret(secret) {
|
|
13
13
|
if (secret.length <= 16)
|
|
14
|
-
return
|
|
14
|
+
return "****";
|
|
15
15
|
return `${secret.slice(0, 8)}...${secret.slice(-4)}`;
|
|
16
16
|
}
|
|
17
|
+
/** Mask a bank account number: show •••• and last 4 digits */
|
|
18
|
+
export function maskAccountNumber(accountNumber) {
|
|
19
|
+
if (accountNumber.length <= 4)
|
|
20
|
+
return "••••";
|
|
21
|
+
return `••••${accountNumber.slice(-4)}`;
|
|
22
|
+
}
|
|
23
|
+
/** Mask a long string: show first 16 and last 8 chars */
|
|
24
|
+
export function maskLongString(secret) {
|
|
25
|
+
if (secret.length <= 24)
|
|
26
|
+
return "••••";
|
|
27
|
+
return `${secret.slice(0, 16)}...${secret.slice(-8)}`;
|
|
28
|
+
}
|
|
17
29
|
/** Status badge with color */
|
|
18
30
|
export function statusBadge(status) {
|
|
19
31
|
const s = status.toUpperCase();
|
|
20
32
|
switch (s) {
|
|
21
|
-
case
|
|
22
|
-
case
|
|
23
|
-
case
|
|
33
|
+
case "ACTIVE":
|
|
34
|
+
case "SUCCESS":
|
|
35
|
+
case "VERIFIED":
|
|
24
36
|
return chalk.green(`● ${s}`);
|
|
25
|
-
case
|
|
37
|
+
case "PENDING":
|
|
26
38
|
return chalk.yellow(`◐ ${s}`);
|
|
27
|
-
case
|
|
28
|
-
case
|
|
29
|
-
case
|
|
39
|
+
case "INACTIVE":
|
|
40
|
+
case "FAILED":
|
|
41
|
+
case "EXPIRED":
|
|
30
42
|
return chalk.red(`○ ${s}`);
|
|
31
43
|
default:
|
|
32
44
|
return chalk.gray(`○ ${s}`);
|
|
@@ -36,23 +48,23 @@ export function statusBadge(status) {
|
|
|
36
48
|
export function createTable(head, rows) {
|
|
37
49
|
const table = new Table({
|
|
38
50
|
head: head.map((h) => chalk.cyan.bold(h)),
|
|
39
|
-
style: { head: [], border: [
|
|
51
|
+
style: { head: [], border: ["gray"] },
|
|
40
52
|
chars: {
|
|
41
|
-
top:
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
bottom:
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
left:
|
|
50
|
-
|
|
51
|
-
mid:
|
|
52
|
-
|
|
53
|
-
right:
|
|
54
|
-
|
|
55
|
-
middle:
|
|
53
|
+
top: "─",
|
|
54
|
+
"top-mid": "┬",
|
|
55
|
+
"top-left": "┌",
|
|
56
|
+
"top-right": "┐",
|
|
57
|
+
bottom: "─",
|
|
58
|
+
"bottom-mid": "┴",
|
|
59
|
+
"bottom-left": "└",
|
|
60
|
+
"bottom-right": "┘",
|
|
61
|
+
left: "│",
|
|
62
|
+
"left-mid": "├",
|
|
63
|
+
mid: "─",
|
|
64
|
+
"mid-mid": "┼",
|
|
65
|
+
right: "│",
|
|
66
|
+
"right-mid": "┤",
|
|
67
|
+
middle: "│",
|
|
56
68
|
},
|
|
57
69
|
});
|
|
58
70
|
for (const row of rows) {
|
|
@@ -62,19 +74,19 @@ export function createTable(head, rows) {
|
|
|
62
74
|
}
|
|
63
75
|
/** Print a success message */
|
|
64
76
|
export function success(msg) {
|
|
65
|
-
console.log(`${chalk.green(
|
|
77
|
+
console.log(`${chalk.green("✓")} ${msg}`);
|
|
66
78
|
}
|
|
67
79
|
/** Print a warning message */
|
|
68
80
|
export function warn(msg) {
|
|
69
|
-
console.log(`${chalk.yellow(
|
|
81
|
+
console.log(`${chalk.yellow("⚠")} ${msg}`);
|
|
70
82
|
}
|
|
71
83
|
/** Print an error message */
|
|
72
84
|
export function error(msg) {
|
|
73
|
-
console.error(`${chalk.red(
|
|
85
|
+
console.error(`${chalk.red("✗")} ${msg}`);
|
|
74
86
|
}
|
|
75
87
|
/** Print an info message */
|
|
76
88
|
export function info(msg) {
|
|
77
|
-
console.log(`${chalk.cyan(
|
|
89
|
+
console.log(`${chalk.cyan("ℹ")} ${msg}`);
|
|
78
90
|
}
|
|
79
91
|
/** Print a key-value pair */
|
|
80
92
|
export function kvLine(key, value) {
|
|
@@ -86,11 +98,11 @@ export function stepLabel(current, total, title) {
|
|
|
86
98
|
}
|
|
87
99
|
/** Big header banner */
|
|
88
100
|
export function banner() {
|
|
89
|
-
console.log(
|
|
90
|
-
console.log(chalk.cyan.bold(
|
|
91
|
-
console.log(chalk.cyan.bold(
|
|
92
|
-
console.log(chalk.cyan.bold(
|
|
93
|
-
console.log(chalk.cyan.bold(
|
|
94
|
-
console.log(
|
|
101
|
+
console.log("");
|
|
102
|
+
console.log(chalk.cyan.bold(" ╔══════════════════════════════════╗"));
|
|
103
|
+
console.log(chalk.cyan.bold(" ║ 🚀 ApiPay CLI ║"));
|
|
104
|
+
console.log(chalk.cyan.bold(" ║ Payment Gateway Setup Wizard ║"));
|
|
105
|
+
console.log(chalk.cyan.bold(" ╚══════════════════════════════════╝"));
|
|
106
|
+
console.log("");
|
|
95
107
|
}
|
|
96
108
|
//# sourceMappingURL=formatters.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatters.js","sourceRoot":"","sources":["../../src/lib/formatters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B;;GAEG;AAEH,oEAAoE;AACpE,MAAM,UAAU,UAAU,CAAC,IAAmB;
|
|
1
|
+
{"version":3,"file":"formatters.js","sourceRoot":"","sources":["../../src/lib/formatters.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/prompts.d.ts
CHANGED
|
@@ -11,6 +11,7 @@ export declare function promptMobile(): Promise<string>;
|
|
|
11
11
|
export declare function promptOtp(): Promise<string>;
|
|
12
12
|
export declare function promptWebhookUrl(): Promise<string>;
|
|
13
13
|
export declare function promptWebhookType(): Promise<string>;
|
|
14
|
+
export declare function promptExistingKeyAction(): Promise<"keep" | "revoke">;
|
|
14
15
|
export declare function promptConfirm(message: string, defaultValue?: boolean): Promise<boolean>;
|
|
15
16
|
export declare function promptBankFromList(banks: Array<{
|
|
16
17
|
publicId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/lib/prompts.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/lib/prompts.ts"],"names":[],"mappings":"AAaA;;GAEG;AAEH,wBAAsB,WAAW,CAAC,OAAO,SAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CAK7E;AAED,wBAAsB,cAAc,CAAC,OAAO,SAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAK3E;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAMxD;AAED,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,CAQ3D;AAED,wBAAsB,mBAAmB,CACxC,aAAa,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC,CAKjB;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CAKzD;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAKpD;AAED,wBAAsB,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAKjD;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAKxD;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CAQzD;AAED,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC,CAc1E;AAED,wBAAsB,aAAa,CAClC,OAAO,EAAE,MAAM,EACf,YAAY,UAAQ,GAClB,OAAO,CAAC,OAAO,CAAC,CAKlB;AAED,wBAAsB,kBAAkB,CACvC,KAAK,EAAE,KAAK,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CACf,CAAC,GACA,OAAO,CAAC,MAAM,CAAC,CAYjB"}
|
package/dist/lib/prompts.js
CHANGED
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { SUPPORTED_BANKS, WEBHOOK_TYPES } from
|
|
3
|
-
import { validateAccountNumber, validateApiKeyName, validateEmail, validateOtp, validatePhoneNumber, validateRequired, validateWebhookUrl, } from
|
|
1
|
+
import { confirm, input, password, select } from "@inquirer/prompts";
|
|
2
|
+
import { SUPPORTED_BANKS, WEBHOOK_TYPES } from "./constants.js";
|
|
3
|
+
import { validateAccountName, validateAccountNumber, validateApiKeyName, validateEmail, validateOtp, validatePhoneNumber, validateRequired, validateWebhookUrl, } from "./validators.js";
|
|
4
4
|
/**
|
|
5
5
|
* Reusable prompt functions for consistent UX across commands.
|
|
6
6
|
*/
|
|
7
|
-
export async function promptEmail(message =
|
|
7
|
+
export async function promptEmail(message = "Email address:") {
|
|
8
8
|
return input({
|
|
9
9
|
message,
|
|
10
10
|
validate: validateEmail,
|
|
11
11
|
});
|
|
12
12
|
}
|
|
13
|
-
export async function promptPassword(message =
|
|
13
|
+
export async function promptPassword(message = "Password:") {
|
|
14
14
|
return password({
|
|
15
15
|
message,
|
|
16
|
-
validate: validateRequired(
|
|
16
|
+
validate: validateRequired("Password"),
|
|
17
17
|
});
|
|
18
18
|
}
|
|
19
19
|
export async function promptApiKeyName() {
|
|
20
20
|
return input({
|
|
21
|
-
message:
|
|
22
|
-
default:
|
|
21
|
+
message: "API key name (for your reference):",
|
|
22
|
+
default: "cli-key",
|
|
23
23
|
validate: validateApiKeyName,
|
|
24
24
|
});
|
|
25
25
|
}
|
|
26
26
|
export async function promptBankSelection() {
|
|
27
27
|
return select({
|
|
28
|
-
message:
|
|
28
|
+
message: "Select your bank:",
|
|
29
29
|
choices: SUPPORTED_BANKS.map((b) => ({
|
|
30
30
|
value: b.value,
|
|
31
31
|
name: b.name,
|
|
@@ -34,43 +34,58 @@ export async function promptBankSelection() {
|
|
|
34
34
|
}
|
|
35
35
|
export async function promptAccountNumber(bankShortName) {
|
|
36
36
|
return input({
|
|
37
|
-
message:
|
|
37
|
+
message: "Bank account number:",
|
|
38
38
|
validate: (val) => validateAccountNumber(val, bankShortName),
|
|
39
39
|
});
|
|
40
40
|
}
|
|
41
41
|
export async function promptAccountName() {
|
|
42
42
|
return input({
|
|
43
|
-
message:
|
|
44
|
-
validate:
|
|
43
|
+
message: "Account holder name:",
|
|
44
|
+
validate: validateAccountName,
|
|
45
45
|
});
|
|
46
46
|
}
|
|
47
47
|
export async function promptMobile() {
|
|
48
48
|
return input({
|
|
49
|
-
message:
|
|
49
|
+
message: "Mobile number (linked to bank):",
|
|
50
50
|
validate: validatePhoneNumber,
|
|
51
51
|
});
|
|
52
52
|
}
|
|
53
53
|
export async function promptOtp() {
|
|
54
54
|
return input({
|
|
55
|
-
message:
|
|
55
|
+
message: "Enter OTP code:",
|
|
56
56
|
validate: validateOtp,
|
|
57
57
|
});
|
|
58
58
|
}
|
|
59
59
|
export async function promptWebhookUrl() {
|
|
60
60
|
return input({
|
|
61
|
-
message:
|
|
61
|
+
message: "Webhook URL (HTTPS):",
|
|
62
62
|
validate: validateWebhookUrl,
|
|
63
63
|
});
|
|
64
64
|
}
|
|
65
65
|
export async function promptWebhookType() {
|
|
66
66
|
return select({
|
|
67
|
-
message:
|
|
67
|
+
message: "Transaction type to listen for:",
|
|
68
68
|
choices: WEBHOOK_TYPES.map((t) => ({
|
|
69
69
|
value: t.value,
|
|
70
70
|
name: t.name,
|
|
71
71
|
})),
|
|
72
72
|
});
|
|
73
73
|
}
|
|
74
|
+
export async function promptExistingKeyAction() {
|
|
75
|
+
return select({
|
|
76
|
+
message: "What would you like to do with your existing key?",
|
|
77
|
+
choices: [
|
|
78
|
+
{
|
|
79
|
+
value: "keep",
|
|
80
|
+
name: "Keep existing key and continue",
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
value: "revoke",
|
|
84
|
+
name: "Revoke and generate a new key",
|
|
85
|
+
},
|
|
86
|
+
],
|
|
87
|
+
});
|
|
88
|
+
}
|
|
74
89
|
export async function promptConfirm(message, defaultValue = false) {
|
|
75
90
|
return confirm({
|
|
76
91
|
message,
|
|
@@ -79,10 +94,10 @@ export async function promptConfirm(message, defaultValue = false) {
|
|
|
79
94
|
}
|
|
80
95
|
export async function promptBankFromList(banks) {
|
|
81
96
|
if (banks.length === 0) {
|
|
82
|
-
throw new Error(
|
|
97
|
+
throw new Error("No banks available. Run `apipay banks:add` first.");
|
|
83
98
|
}
|
|
84
99
|
return select({
|
|
85
|
-
message:
|
|
100
|
+
message: "Select a bank account:",
|
|
86
101
|
choices: banks.map((b) => ({
|
|
87
102
|
value: b.publicId,
|
|
88
103
|
name: `${b.bankName} — ${b.accountNumber} (${b.status})`,
|
package/dist/lib/prompts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/lib/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/lib/prompts.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/validators.d.ts
CHANGED
|
@@ -9,4 +9,5 @@ export declare function validateWebhookUrl(input: string): string | true;
|
|
|
9
9
|
export declare function validatePhoneNumber(input: string): string | true;
|
|
10
10
|
export declare function validateRequired(fieldName: string): (input: string) => string | true;
|
|
11
11
|
export declare function validateApiKeyName(input: string): string | true;
|
|
12
|
+
export declare function validateAccountName(input: string): string | true;
|
|
12
13
|
//# sourceMappingURL=validators.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../src/lib/validators.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../src/lib/validators.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM1D;AAED,wBAAgB,qBAAqB,CACpC,KAAK,EAAE,MAAM,EACb,aAAa,CAAC,EAAE,MAAM,GACpB,MAAM,GAAG,IAAI,CAiBf;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKxD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAwC/D;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQhE;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,IACzC,OAAO,MAAM,KAAG,MAAM,GAAG,IAAI,CAIrC;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAK/D;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMhE"}
|
package/dist/lib/validators.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import chalk from 'chalk';
|
|
2
1
|
/**
|
|
3
2
|
* Input validators for CLI prompts.
|
|
4
3
|
* Each returns true if valid, or an error message string if invalid.
|
|
@@ -6,70 +5,84 @@ import chalk from 'chalk';
|
|
|
6
5
|
export function validateEmail(input) {
|
|
7
6
|
const trimmed = input.trim();
|
|
8
7
|
if (!trimmed)
|
|
9
|
-
return
|
|
8
|
+
return "Email is required";
|
|
10
9
|
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
11
10
|
if (!emailRegex.test(trimmed))
|
|
12
|
-
return
|
|
11
|
+
return "Please enter a valid email address";
|
|
13
12
|
return true;
|
|
14
13
|
}
|
|
15
14
|
export function validateAccountNumber(input, bankShortName) {
|
|
16
15
|
const trimmed = input.trim();
|
|
17
16
|
if (!trimmed)
|
|
18
|
-
return
|
|
17
|
+
return "Account number is required";
|
|
19
18
|
if (!/^\d+$/.test(trimmed))
|
|
20
|
-
return
|
|
19
|
+
return "Account number must contain only digits";
|
|
21
20
|
// Bank-specific length validation
|
|
22
|
-
if (bankShortName ===
|
|
23
|
-
|
|
24
|
-
}
|
|
25
|
-
if (bankShortName ===
|
|
26
|
-
|
|
27
|
-
}
|
|
21
|
+
// if (bankShortName === "BIDV" && trimmed.length !== 14) {
|
|
22
|
+
// return "BIDV account numbers must be 14 digits";
|
|
23
|
+
// }
|
|
24
|
+
// if (bankShortName === "MBB" && trimmed.length !== 13) {
|
|
25
|
+
// return "MB Bank account numbers must be 13 digits";
|
|
26
|
+
// }
|
|
28
27
|
if (trimmed.length < 6 || trimmed.length > 20) {
|
|
29
|
-
return
|
|
28
|
+
return "Account number must be between 6 and 20 digits";
|
|
30
29
|
}
|
|
31
30
|
return true;
|
|
32
31
|
}
|
|
33
32
|
export function validateOtp(input) {
|
|
34
33
|
const trimmed = input.trim();
|
|
35
34
|
if (!trimmed)
|
|
36
|
-
return
|
|
35
|
+
return "OTP is required";
|
|
37
36
|
if (!/^\d{4,8}$/.test(trimmed))
|
|
38
|
-
return
|
|
37
|
+
return "OTP must be 4-8 digits";
|
|
39
38
|
return true;
|
|
40
39
|
}
|
|
41
40
|
export function validateWebhookUrl(input) {
|
|
42
41
|
const trimmed = input.trim();
|
|
43
42
|
if (!trimmed)
|
|
44
|
-
return
|
|
43
|
+
return "Webhook URL is required";
|
|
45
44
|
try {
|
|
46
45
|
const url = new URL(trimmed);
|
|
47
|
-
if (url.protocol !== 'https:' && url.protocol !== 'http:') {
|
|
48
|
-
return 'URL must use https:// (or http:// for local testing)';
|
|
49
|
-
}
|
|
50
|
-
// Block obvious private/internal addresses
|
|
51
46
|
const hostname = url.hostname.toLowerCase();
|
|
52
|
-
const
|
|
53
|
-
if (
|
|
54
|
-
|
|
47
|
+
const isLocalhost = hostname === "localhost" || hostname === "127.0.0.1";
|
|
48
|
+
if (url.protocol === "http:") {
|
|
49
|
+
if (!isLocalhost) {
|
|
50
|
+
// HTTP is only safe for local dev — block for any real host
|
|
51
|
+
return "Webhook URL must use HTTPS to protect transaction data in transit. Use https:// (http:// is only allowed for localhost).";
|
|
52
|
+
}
|
|
53
|
+
// http://localhost is fine for local testing — allow through
|
|
54
|
+
}
|
|
55
|
+
else if (url.protocol !== "https:") {
|
|
56
|
+
return "URL must use https:// (or http://localhost for local testing).";
|
|
55
57
|
}
|
|
56
|
-
// Block
|
|
57
|
-
if (
|
|
58
|
-
|
|
58
|
+
// Block dangerous/internal addresses for non-localhost
|
|
59
|
+
if (!isLocalhost) {
|
|
60
|
+
const blocked = [
|
|
61
|
+
"0.0.0.0",
|
|
62
|
+
"169.254.169.254",
|
|
63
|
+
"metadata.google.internal",
|
|
64
|
+
];
|
|
65
|
+
if (blocked.includes(hostname)) {
|
|
66
|
+
return `${hostname} is not a valid webhook endpoint.`;
|
|
67
|
+
}
|
|
68
|
+
// Block private IP ranges
|
|
69
|
+
if (/^(10\.|172\.(1[6-9]|2\d|3[01])\.|192\.168\.)/.test(hostname)) {
|
|
70
|
+
return "Private IP addresses are not reachable as webhook endpoints. Use a publicly reachable HTTPS URL.";
|
|
71
|
+
}
|
|
59
72
|
}
|
|
60
73
|
}
|
|
61
74
|
catch {
|
|
62
|
-
return
|
|
75
|
+
return "Please enter a valid URL (e.g., https://example.com/webhook).";
|
|
63
76
|
}
|
|
64
77
|
return true;
|
|
65
78
|
}
|
|
66
79
|
export function validatePhoneNumber(input) {
|
|
67
80
|
const trimmed = input.trim();
|
|
68
81
|
if (!trimmed)
|
|
69
|
-
return
|
|
82
|
+
return "Phone number is required";
|
|
70
83
|
// Vietnamese phone: 0xxx or +84xxx, 9-11 digits
|
|
71
84
|
if (!/^(\+84|0)\d{8,10}$/.test(trimmed)) {
|
|
72
|
-
return
|
|
85
|
+
return "Please enter a valid Vietnamese phone number (e.g., 0912345678)";
|
|
73
86
|
}
|
|
74
87
|
return true;
|
|
75
88
|
}
|
|
@@ -83,9 +96,17 @@ export function validateRequired(fieldName) {
|
|
|
83
96
|
export function validateApiKeyName(input) {
|
|
84
97
|
const trimmed = input.trim();
|
|
85
98
|
if (!trimmed)
|
|
86
|
-
return
|
|
99
|
+
return "API key name is required";
|
|
87
100
|
if (trimmed.length > 50)
|
|
88
|
-
return
|
|
101
|
+
return "Name must be 50 characters or less";
|
|
102
|
+
return true;
|
|
103
|
+
}
|
|
104
|
+
export function validateAccountName(input) {
|
|
105
|
+
const trimmed = input.trim();
|
|
106
|
+
if (!trimmed)
|
|
107
|
+
return "Account holder name is required";
|
|
108
|
+
if (trimmed.length > 100)
|
|
109
|
+
return "Account holder name must be 100 characters or less";
|
|
89
110
|
return true;
|
|
90
111
|
}
|
|
91
112
|
//# sourceMappingURL=validators.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../src/lib/validators.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../src/lib/validators.ts"],"names":[],"mappings":"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"}
|
package/oclif.manifest.json
CHANGED
|
@@ -1,42 +1,5 @@
|
|
|
1
1
|
{
|
|
2
2
|
"commands": {
|
|
3
|
-
"init": {
|
|
4
|
-
"aliases": [],
|
|
5
|
-
"args": {},
|
|
6
|
-
"description": "Set up ApiPay interactively — login, generate API key, add bank, register webhook",
|
|
7
|
-
"examples": [
|
|
8
|
-
"<%= config.bin %> init"
|
|
9
|
-
],
|
|
10
|
-
"flags": {
|
|
11
|
-
"json": {
|
|
12
|
-
"description": "Output raw JSON (for scripting/CI)",
|
|
13
|
-
"name": "json",
|
|
14
|
-
"allowNo": false,
|
|
15
|
-
"type": "boolean"
|
|
16
|
-
},
|
|
17
|
-
"quiet": {
|
|
18
|
-
"char": "q",
|
|
19
|
-
"description": "Suppress interactive output",
|
|
20
|
-
"name": "quiet",
|
|
21
|
-
"allowNo": false,
|
|
22
|
-
"type": "boolean"
|
|
23
|
-
}
|
|
24
|
-
},
|
|
25
|
-
"hasDynamicHelp": false,
|
|
26
|
-
"hiddenAliases": [],
|
|
27
|
-
"id": "init",
|
|
28
|
-
"pluginAlias": "apipay",
|
|
29
|
-
"pluginName": "apipay",
|
|
30
|
-
"pluginType": "core",
|
|
31
|
-
"strict": true,
|
|
32
|
-
"enableJsonFlag": false,
|
|
33
|
-
"isESM": true,
|
|
34
|
-
"relativePath": [
|
|
35
|
-
"dist",
|
|
36
|
-
"commands",
|
|
37
|
-
"init.js"
|
|
38
|
-
]
|
|
39
|
-
},
|
|
40
3
|
"login": {
|
|
41
4
|
"aliases": [],
|
|
42
5
|
"args": {},
|
|
@@ -134,6 +97,43 @@
|
|
|
134
97
|
"logout.js"
|
|
135
98
|
]
|
|
136
99
|
},
|
|
100
|
+
"setup": {
|
|
101
|
+
"aliases": [],
|
|
102
|
+
"args": {},
|
|
103
|
+
"description": "Set up ApiPay interactively — login, generate API key, add bank, register webhook",
|
|
104
|
+
"examples": [
|
|
105
|
+
"<%= config.bin %> setup"
|
|
106
|
+
],
|
|
107
|
+
"flags": {
|
|
108
|
+
"json": {
|
|
109
|
+
"description": "Output raw JSON (for scripting/CI)",
|
|
110
|
+
"name": "json",
|
|
111
|
+
"allowNo": false,
|
|
112
|
+
"type": "boolean"
|
|
113
|
+
},
|
|
114
|
+
"quiet": {
|
|
115
|
+
"char": "q",
|
|
116
|
+
"description": "Suppress interactive output",
|
|
117
|
+
"name": "quiet",
|
|
118
|
+
"allowNo": false,
|
|
119
|
+
"type": "boolean"
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
"hasDynamicHelp": false,
|
|
123
|
+
"hiddenAliases": [],
|
|
124
|
+
"id": "setup",
|
|
125
|
+
"pluginAlias": "apipay",
|
|
126
|
+
"pluginName": "apipay",
|
|
127
|
+
"pluginType": "core",
|
|
128
|
+
"strict": true,
|
|
129
|
+
"enableJsonFlag": false,
|
|
130
|
+
"isESM": true,
|
|
131
|
+
"relativePath": [
|
|
132
|
+
"dist",
|
|
133
|
+
"commands",
|
|
134
|
+
"setup.js"
|
|
135
|
+
]
|
|
136
|
+
},
|
|
137
137
|
"status": {
|
|
138
138
|
"aliases": [],
|
|
139
139
|
"args": {},
|
|
@@ -281,6 +281,43 @@
|
|
|
281
281
|
"list.js"
|
|
282
282
|
]
|
|
283
283
|
},
|
|
284
|
+
"banks:remove-unconfirmed": {
|
|
285
|
+
"aliases": [],
|
|
286
|
+
"args": {},
|
|
287
|
+
"description": "Remove a bank account that hasn't confirmed OTP yet",
|
|
288
|
+
"examples": [
|
|
289
|
+
"<%= config.bin %> banks:remove-unconfirmed"
|
|
290
|
+
],
|
|
291
|
+
"flags": {
|
|
292
|
+
"json": {
|
|
293
|
+
"description": "Output raw JSON (for scripting/CI)",
|
|
294
|
+
"name": "json",
|
|
295
|
+
"allowNo": false,
|
|
296
|
+
"type": "boolean"
|
|
297
|
+
},
|
|
298
|
+
"quiet": {
|
|
299
|
+
"char": "q",
|
|
300
|
+
"description": "Suppress interactive output",
|
|
301
|
+
"name": "quiet",
|
|
302
|
+
"allowNo": false,
|
|
303
|
+
"type": "boolean"
|
|
304
|
+
}
|
|
305
|
+
},
|
|
306
|
+
"hasDynamicHelp": false,
|
|
307
|
+
"hiddenAliases": [],
|
|
308
|
+
"id": "banks:remove-unconfirmed",
|
|
309
|
+
"pluginAlias": "apipay",
|
|
310
|
+
"pluginName": "apipay",
|
|
311
|
+
"pluginType": "core",
|
|
312
|
+
"strict": true,
|
|
313
|
+
"isESM": true,
|
|
314
|
+
"relativePath": [
|
|
315
|
+
"dist",
|
|
316
|
+
"commands",
|
|
317
|
+
"banks",
|
|
318
|
+
"remove-unconfirmed.js"
|
|
319
|
+
]
|
|
320
|
+
},
|
|
284
321
|
"banks:remove": {
|
|
285
322
|
"aliases": [],
|
|
286
323
|
"args": {
|
|
@@ -371,7 +408,7 @@
|
|
|
371
408
|
"aliases": [],
|
|
372
409
|
"args": {
|
|
373
410
|
"key": {
|
|
374
|
-
"description": "Config key (e.g., apiBaseUrl)",
|
|
411
|
+
"description": "Config key (e.g., apiBaseUrl, dashboardUrl)",
|
|
375
412
|
"name": "key",
|
|
376
413
|
"required": false
|
|
377
414
|
}
|
|
@@ -454,7 +491,7 @@
|
|
|
454
491
|
"aliases": [],
|
|
455
492
|
"args": {
|
|
456
493
|
"key": {
|
|
457
|
-
"description": "Config key (e.g., apiBaseUrl)",
|
|
494
|
+
"description": "Config key (e.g., apiBaseUrl, dashboardUrl)",
|
|
458
495
|
"name": "key",
|
|
459
496
|
"required": true
|
|
460
497
|
},
|
|
@@ -465,9 +502,7 @@
|
|
|
465
502
|
}
|
|
466
503
|
},
|
|
467
504
|
"description": "Set a CLI configuration value",
|
|
468
|
-
"examples": [
|
|
469
|
-
"<%= config.bin %> config:set apiBaseUrl https://staging.apipay.vn/v1"
|
|
470
|
-
],
|
|
505
|
+
"examples": [],
|
|
471
506
|
"flags": {
|
|
472
507
|
"json": {
|
|
473
508
|
"description": "Output raw JSON (for scripting/CI)",
|
|
@@ -998,5 +1033,5 @@
|
|
|
998
1033
|
]
|
|
999
1034
|
}
|
|
1000
1035
|
},
|
|
1001
|
-
"version": "0.
|
|
1036
|
+
"version": "0.3.0"
|
|
1002
1037
|
}
|