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/package.json
CHANGED
|
@@ -1,84 +1,95 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
2
|
+
"name": "apipay",
|
|
3
|
+
"version": "0.3.0",
|
|
4
|
+
"description": "ApiPay CLI — Set up and manage your payment gateway from the terminal",
|
|
5
|
+
"author": "ApiPay",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"bin": {
|
|
9
|
+
"apipay": "bin/run.js"
|
|
10
|
+
},
|
|
11
|
+
"main": "dist/index.js",
|
|
12
|
+
"types": "dist/index.d.ts",
|
|
13
|
+
"files": [
|
|
14
|
+
"bin/",
|
|
15
|
+
"dist/",
|
|
16
|
+
"oclif.manifest.json"
|
|
17
|
+
],
|
|
18
|
+
"scripts": {
|
|
19
|
+
"build": "tsc -b && node --loader ts-node/esm ./scripts/generate-manifest.ts 2>/dev/null || true",
|
|
20
|
+
"dev": "node --loader ts-node/esm bin/dev.js",
|
|
21
|
+
"watch": "tsc -b --watch",
|
|
22
|
+
"lint": "eslint src/",
|
|
23
|
+
"clean": "rimraf dist oclif.manifest.json",
|
|
24
|
+
"prepublishOnly": "npm run clean && npm run build",
|
|
25
|
+
"tsc": "tsc --noEmit"
|
|
26
|
+
},
|
|
27
|
+
"dependencies": {
|
|
28
|
+
"@inquirer/prompts": "^7.5.0",
|
|
29
|
+
"@oclif/core": "^4.2.10",
|
|
30
|
+
"@oclif/plugin-autocomplete": "^3.2.20",
|
|
31
|
+
"@oclif/plugin-help": "^6.2.25",
|
|
32
|
+
"@oclif/plugin-not-found": "^3.2.35",
|
|
33
|
+
"@oclif/plugin-warn-if-update-available": "^3.1.30",
|
|
34
|
+
"chalk": "^5.4.1",
|
|
35
|
+
"cli-table3": "^0.6.5",
|
|
36
|
+
"conf": "^13.1.0",
|
|
37
|
+
"open": "^10.1.2",
|
|
38
|
+
"ora": "^8.2.0"
|
|
39
|
+
},
|
|
40
|
+
"devDependencies": {
|
|
41
|
+
"@types/node": "^22.13.5",
|
|
42
|
+
"rimraf": "^6.0.1",
|
|
43
|
+
"ts-node": "^10.9.2",
|
|
44
|
+
"typescript": "^5.7.3"
|
|
45
|
+
},
|
|
46
|
+
"engines": {
|
|
47
|
+
"node": ">=18.0.0"
|
|
48
|
+
},
|
|
49
|
+
"oclif": {
|
|
50
|
+
"bin": "apipay",
|
|
51
|
+
"dirname": "apipay",
|
|
52
|
+
"commands": {
|
|
53
|
+
"strategy": "pattern",
|
|
54
|
+
"target": "./dist/commands"
|
|
55
|
+
},
|
|
56
|
+
"topicSeparator": ":",
|
|
57
|
+
"topics": {
|
|
58
|
+
"keys": {
|
|
59
|
+
"description": "Manage API keys"
|
|
60
|
+
},
|
|
61
|
+
"banks": {
|
|
62
|
+
"description": "Manage bank accounts"
|
|
63
|
+
},
|
|
64
|
+
"webhooks": {
|
|
65
|
+
"description": "Manage webhooks"
|
|
66
|
+
},
|
|
67
|
+
"metrics": {
|
|
68
|
+
"description": "View transaction metrics"
|
|
69
|
+
},
|
|
70
|
+
"config": {
|
|
71
|
+
"description": "Manage CLI configuration"
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
"plugins": [
|
|
75
|
+
"@oclif/plugin-help",
|
|
76
|
+
"@oclif/plugin-autocomplete",
|
|
77
|
+
"@oclif/plugin-not-found",
|
|
78
|
+
"@oclif/plugin-warn-if-update-available"
|
|
79
|
+
],
|
|
80
|
+
"warn-if-update-available": {
|
|
81
|
+
"timeoutInDays": 7
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
"publishConfig": {
|
|
85
|
+
"access": "public"
|
|
86
|
+
},
|
|
87
|
+
"keywords": [
|
|
88
|
+
"apipay",
|
|
89
|
+
"payment",
|
|
90
|
+
"gateway",
|
|
91
|
+
"cli",
|
|
92
|
+
"banking",
|
|
93
|
+
"webhooks"
|
|
94
|
+
]
|
|
84
95
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAiBrD;;;;;;;;;GASG;AACH,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,WAAW;IAC3C,OAAgB,WAAW,SAC2D;IAEtF,OAAgB,QAAQ,WAA8B;IAEhD,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAgF1B,OAAO,CAAC,cAAc;CAevB"}
|
package/dist/commands/init.js
DELETED
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
import chalk from 'chalk';
|
|
2
|
-
import { BaseCommand } from '../lib/base-command.js';
|
|
3
|
-
import { isLoggedIn, getApiKey, getCompletedSteps, getNextIncompleteStep, } from '../lib/config.js';
|
|
4
|
-
import { SETUP_STEPS } from '../lib/constants.js';
|
|
5
|
-
import { banner, stepLabel, success, info } from '../lib/formatters.js';
|
|
6
|
-
// Import command runners
|
|
7
|
-
import Login from './login.js';
|
|
8
|
-
import KeysCreate from './keys/create.js';
|
|
9
|
-
import BanksAdd from './banks/add.js';
|
|
10
|
-
import WebhooksAdd from './webhooks/add.js';
|
|
11
|
-
/**
|
|
12
|
-
* `apipay init` — Guided setup wizard.
|
|
13
|
-
* Walks new users through the complete setup flow:
|
|
14
|
-
* 1. Login (magic link or password)
|
|
15
|
-
* 2. Generate API key
|
|
16
|
-
* 3. Add bank account
|
|
17
|
-
* 4. Register webhook
|
|
18
|
-
*
|
|
19
|
-
* Resumes from the last incomplete step automatically.
|
|
20
|
-
*/
|
|
21
|
-
export default class Init extends BaseCommand {
|
|
22
|
-
static description = 'Set up ApiPay interactively — login, generate API key, add bank, register webhook';
|
|
23
|
-
static examples = ['<%= config.bin %> init'];
|
|
24
|
-
async run() {
|
|
25
|
-
banner();
|
|
26
|
-
const completed = getCompletedSteps();
|
|
27
|
-
const nextStep = getNextIncompleteStep();
|
|
28
|
-
if (!nextStep) {
|
|
29
|
-
this.printChecklist(completed);
|
|
30
|
-
console.log('');
|
|
31
|
-
success('Setup is already complete! You\'re ready to receive payments.');
|
|
32
|
-
console.log('');
|
|
33
|
-
info(`Run ${chalk.cyan('apipay status')} to see your current configuration.`);
|
|
34
|
-
info(`Run ${chalk.cyan('apipay --help')} to explore all commands.`);
|
|
35
|
-
console.log('');
|
|
36
|
-
return;
|
|
37
|
-
}
|
|
38
|
-
if (completed.length > 0) {
|
|
39
|
-
info(`Resuming setup from step ${completed.length + 1}/${SETUP_STEPS.length}...`);
|
|
40
|
-
this.printChecklist(completed);
|
|
41
|
-
console.log('');
|
|
42
|
-
}
|
|
43
|
-
const totalSteps = SETUP_STEPS.length;
|
|
44
|
-
// Step 1: Login
|
|
45
|
-
if (!completed.includes('login')) {
|
|
46
|
-
console.log(stepLabel(1, totalSteps, 'Authenticate with ApiPay'));
|
|
47
|
-
console.log(chalk.gray(' Sign in to your account or create a new one.\n'));
|
|
48
|
-
await Login.run([]);
|
|
49
|
-
console.log('');
|
|
50
|
-
}
|
|
51
|
-
// Step 2: API Key
|
|
52
|
-
if (!completed.includes('api-key')) {
|
|
53
|
-
if (!isLoggedIn()) {
|
|
54
|
-
this.error('Login is required before proceeding. Run `apipay login` first.', { exit: 1 });
|
|
55
|
-
}
|
|
56
|
-
console.log(stepLabel(2, totalSteps, 'Generate API Key'));
|
|
57
|
-
console.log(chalk.gray(' Create an API key to authenticate your integration.\n'));
|
|
58
|
-
await KeysCreate.run([]);
|
|
59
|
-
console.log('');
|
|
60
|
-
}
|
|
61
|
-
// Step 3: Add Bank
|
|
62
|
-
if (!completed.includes('bank')) {
|
|
63
|
-
if (!getApiKey()) {
|
|
64
|
-
this.error('API key is required. Run `apipay keys:create` first.', { exit: 1 });
|
|
65
|
-
}
|
|
66
|
-
console.log(stepLabel(3, totalSteps, 'Add Bank Account'));
|
|
67
|
-
console.log(chalk.gray(' Connect a bank account to start receiving payments.\n'));
|
|
68
|
-
await BanksAdd.run([]);
|
|
69
|
-
console.log('');
|
|
70
|
-
}
|
|
71
|
-
// Step 4: Add Webhook
|
|
72
|
-
if (!completed.includes('webhook')) {
|
|
73
|
-
if (!getApiKey()) {
|
|
74
|
-
this.error('API key is required. Run `apipay keys:create` first.', { exit: 1 });
|
|
75
|
-
}
|
|
76
|
-
console.log(stepLabel(4, totalSteps, 'Register Webhook'));
|
|
77
|
-
console.log(chalk.gray(' Set up a webhook to receive transaction notifications.\n'));
|
|
78
|
-
await WebhooksAdd.run([]);
|
|
79
|
-
console.log('');
|
|
80
|
-
}
|
|
81
|
-
// Final summary
|
|
82
|
-
console.log('');
|
|
83
|
-
console.log(chalk.green.bold(' ╔══════════════════════════════════════╗'));
|
|
84
|
-
console.log(chalk.green.bold(' ║ ✓ Setup Complete! ║'));
|
|
85
|
-
console.log(chalk.green.bold(' ╚══════════════════════════════════════╝'));
|
|
86
|
-
console.log('');
|
|
87
|
-
this.printChecklist(getCompletedSteps());
|
|
88
|
-
console.log('');
|
|
89
|
-
info(`Dashboard: ${chalk.underline.cyan('https://apipay.vn/dashboard')}`);
|
|
90
|
-
info(`Docs: ${chalk.underline.cyan('https://apipay.vn/docs')}`);
|
|
91
|
-
info(`Status: ${chalk.cyan('apipay status')}`);
|
|
92
|
-
console.log('');
|
|
93
|
-
}
|
|
94
|
-
printChecklist(completed) {
|
|
95
|
-
const labels = {
|
|
96
|
-
login: 'Login',
|
|
97
|
-
'api-key': 'API Key',
|
|
98
|
-
bank: 'Bank Account',
|
|
99
|
-
webhook: 'Webhook',
|
|
100
|
-
};
|
|
101
|
-
for (const step of SETUP_STEPS) {
|
|
102
|
-
const done = completed.includes(step);
|
|
103
|
-
const icon = done ? chalk.green('✓') : chalk.gray('○');
|
|
104
|
-
const label = done ? chalk.white(labels[step]) : chalk.gray(labels[step]);
|
|
105
|
-
console.log(` ${icon} ${label}`);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
//# sourceMappingURL=init.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|