@vonpay/checkout-cli 0.3.2 → 0.3.3
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 +52 -10
- package/dist/client-factory.d.ts +10 -0
- package/dist/client-factory.d.ts.map +1 -0
- package/dist/client-factory.js +26 -0
- package/dist/client-factory.js.map +1 -0
- package/dist/commands/capabilities.d.ts +11 -0
- package/dist/commands/capabilities.d.ts.map +1 -0
- package/dist/commands/capabilities.js +66 -0
- package/dist/commands/capabilities.js.map +1 -0
- package/dist/commands/checkout.d.ts.map +1 -1
- package/dist/commands/checkout.js +8 -0
- package/dist/commands/checkout.js.map +1 -1
- package/dist/commands/doctor.d.ts +56 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +15 -5
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/health.js +3 -3
- package/dist/commands/health.js.map +1 -1
- package/dist/commands/payment-intents.d.ts +21 -0
- package/dist/commands/payment-intents.d.ts.map +1 -0
- package/dist/commands/payment-intents.js +195 -0
- package/dist/commands/payment-intents.js.map +1 -0
- package/dist/commands/refunds.d.ts +3 -0
- package/dist/commands/refunds.d.ts.map +1 -0
- package/dist/commands/refunds.js +78 -0
- package/dist/commands/refunds.js.map +1 -0
- package/dist/commands/sessions.d.ts.map +1 -1
- package/dist/commands/sessions.js +3 -18
- package/dist/commands/sessions.js.map +1 -1
- package/dist/commands/tokens.d.ts +3 -0
- package/dist/commands/tokens.d.ts.map +1 -0
- package/dist/commands/tokens.js +77 -0
- package/dist/commands/tokens.js.map +1 -0
- package/dist/utils/errors.d.ts +7 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +24 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/live-key.d.ts +16 -0
- package/dist/utils/live-key.d.ts.map +1 -0
- package/dist/utils/live-key.js +29 -0
- package/dist/utils/live-key.js.map +1 -0
- package/dist/utils/metadata.d.ts +2 -0
- package/dist/utils/metadata.d.ts.map +1 -0
- package/dist/utils/metadata.js +31 -0
- package/dist/utils/metadata.js.map +1 -0
- package/dist/utils/sanitize.d.ts +4 -0
- package/dist/utils/sanitize.d.ts.map +1 -0
- package/dist/utils/sanitize.js +18 -0
- package/dist/utils/sanitize.js.map +1 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @vonpay/checkout-cli
|
|
2
2
|
|
|
3
|
-
Command-line tools for developers integrating with [Von Payments Checkout](https://docs.vonpay.com). Create test sessions, inspect
|
|
3
|
+
Command-line tools for developers integrating with [Von Payments Checkout](https://docs.vonpay.com). Create test sessions, drive the discrete-lifecycle payment intent flow (create / capture / void / refund), manage saved-card tokens, inspect binder capabilities, trigger webhook events, and bootstrap local integration work.
|
|
4
4
|
|
|
5
5
|
## Install
|
|
6
6
|
|
|
@@ -18,7 +18,7 @@ Save your Von Payments API key once:
|
|
|
18
18
|
vonpay checkout login
|
|
19
19
|
```
|
|
20
20
|
|
|
21
|
-
Stores credentials at `~/.vonpay/config.json
|
|
21
|
+
Stores credentials at `~/.vonpay/config.json` (mode `0600`). Use a test-mode key (`vp_sk_test_...`) for local development. The CLI also reads `VON_PAY_SECRET_KEY` from the environment if set, which takes precedence over the saved config.
|
|
22
22
|
|
|
23
23
|
## Commands
|
|
24
24
|
|
|
@@ -28,13 +28,29 @@ All commands are namespaced under `vonpay checkout`:
|
|
|
28
28
|
|---|---|
|
|
29
29
|
| `vonpay checkout login` | Save API key to `~/.vonpay/config.json` |
|
|
30
30
|
| `vonpay checkout init` | Scaffold a minimal checkout integration starter |
|
|
31
|
-
| `vonpay checkout sessions
|
|
32
|
-
| `vonpay checkout sessions create` | Create a test checkout session and print the URL |
|
|
31
|
+
| `vonpay checkout sessions create` | Create a hosted-checkout session and print the URL |
|
|
33
32
|
| `vonpay checkout sessions get <id>` | Fetch session details |
|
|
34
|
-
| `vonpay checkout
|
|
35
|
-
| `vonpay checkout
|
|
33
|
+
| `vonpay checkout payment-intents create` | Create a discrete-lifecycle payment intent (server-driven flows, MIT) |
|
|
34
|
+
| `vonpay checkout payment-intents capture <id>` | Capture an authorized intent (full or partial) |
|
|
35
|
+
| `vonpay checkout payment-intents void <id>` | Void an authorized intent before capture |
|
|
36
|
+
| `vonpay checkout refunds create` | Refund a captured intent (full or partial) |
|
|
37
|
+
| `vonpay checkout tokens create` | Create a payment-method token for saved-card / MIT flows |
|
|
38
|
+
| `vonpay checkout capabilities` | Show what this merchant's binder supports |
|
|
39
|
+
| `vonpay checkout trigger <event>` | Trigger a synthetic webhook event against your local endpoint (`session.succeeded`, `session.failed`, `session.expired`, `refund.created`) |
|
|
40
|
+
| `vonpay checkout health` | Check API health and latency |
|
|
41
|
+
| `vonpay checkout doctor` | Diagnose runtime + env + live API probe |
|
|
36
42
|
|
|
37
|
-
Run `vonpay checkout --help` for
|
|
43
|
+
Run `vonpay checkout <command> --help` for full flag reference.
|
|
44
|
+
|
|
45
|
+
### Common flags
|
|
46
|
+
|
|
47
|
+
- `--json` on every read/write command for machine-readable output
|
|
48
|
+
- `--idempotency-key <key>` on every mutating command for safe retries (pass the same key with the same body to get the same record back)
|
|
49
|
+
- `--metadata key=value` (repeatable) on `payment-intents create`, `refunds create`, and `tokens create`. Keys and values are bounded to 256 characters; control characters are rejected.
|
|
50
|
+
|
|
51
|
+
### Live-key safety
|
|
52
|
+
|
|
53
|
+
Mutating commands that are irreversible on a live key — `payment-intents create`, `payment-intents capture`, `payment-intents void`, and `refunds create` — refuse to run with a `vp_sk_live_*` key unless you pass `--confirm-live`. This mirrors the `--confirm-cli-exposure` pattern used by `login`. Test-mode keys (`vp_sk_test_*`) ignore the flag.
|
|
38
54
|
|
|
39
55
|
## Quick start
|
|
40
56
|
|
|
@@ -42,13 +58,39 @@ Run `vonpay checkout --help` for the full flag reference.
|
|
|
42
58
|
# One-time setup
|
|
43
59
|
vonpay checkout login
|
|
44
60
|
|
|
45
|
-
#
|
|
61
|
+
# Hosted checkout — buyer redirects to a Vonpay-hosted page
|
|
46
62
|
vonpay checkout sessions create --amount 1499 --currency USD --country US
|
|
47
63
|
|
|
48
|
-
#
|
|
49
|
-
vonpay checkout
|
|
64
|
+
# Discrete lifecycle — server-driven flow with manual capture (fulfillment-on-ship)
|
|
65
|
+
vonpay checkout payment-intents create --amount 1499 --currency USD --capture-method manual
|
|
66
|
+
vonpay checkout payment-intents capture vpi_test_abc123
|
|
67
|
+
# or, before fulfillment:
|
|
68
|
+
vonpay checkout payment-intents void vpi_test_abc123
|
|
69
|
+
|
|
70
|
+
# Refund a succeeded intent
|
|
71
|
+
vonpay checkout refunds create --payment-intent vpi_test_abc123 --amount 500 --reason duplicate
|
|
72
|
+
|
|
73
|
+
# What does my binder support?
|
|
74
|
+
vonpay checkout capabilities
|
|
75
|
+
|
|
76
|
+
# Trigger a session.succeeded webhook against localhost:3000
|
|
77
|
+
vonpay checkout trigger session.succeeded --url http://localhost:3000/webhooks/vonpay
|
|
50
78
|
```
|
|
51
79
|
|
|
80
|
+
### Merchant-initiated transactions (MIT)
|
|
81
|
+
|
|
82
|
+
For recurring billing, retry, or saved-card charges, pass all three MIT flags together:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
vonpay checkout payment-intents create \
|
|
86
|
+
--amount 1499 --currency USD \
|
|
87
|
+
--mit-initiator merchant \
|
|
88
|
+
--mit-reason recurring \
|
|
89
|
+
--mit-original-transaction-id vpi_test_anchor_xxx
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Check `vonpay checkout capabilities` first to verify `MIT: yes` for your binder.
|
|
93
|
+
|
|
52
94
|
## Documentation
|
|
53
95
|
|
|
54
96
|
- [CLI reference](https://docs.vonpay.com/sdks/cli)
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { VonPayCheckout } from "@vonpay/checkout-node";
|
|
2
|
+
export declare function getBaseUrl(): string | undefined;
|
|
3
|
+
/**
|
|
4
|
+
* Build a VonPayCheckout client honoring the user's saved API key and the
|
|
5
|
+
* VONPAY_BASE_URL env var (or saved baseUrl). All CLI commands should call
|
|
6
|
+
* this instead of `new VonPayCheckout(apiKey)` — the bare constructor
|
|
7
|
+
* silently hits prod even when VONPAY_BASE_URL points at staging.
|
|
8
|
+
*/
|
|
9
|
+
export declare function makeCheckoutClient(): VonPayCheckout;
|
|
10
|
+
//# sourceMappingURL=client-factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-factory.d.ts","sourceRoot":"","sources":["../src/client-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGvD,wBAAgB,UAAU,IAAI,MAAM,GAAG,SAAS,CAQ/C;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,IAAI,cAAc,CAOnD"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { VonPayCheckout } from "@vonpay/checkout-node";
|
|
2
|
+
import { loadConfig, requireApiKey } from "./config.js";
|
|
3
|
+
export function getBaseUrl() {
|
|
4
|
+
// VONPAY_BASE_URL env var takes precedence (matches doctor.ts pattern).
|
|
5
|
+
// Then ~/.vonpay/config.json. Unset → SDK uses its default (prod).
|
|
6
|
+
const envBase = process.env.VONPAY_BASE_URL;
|
|
7
|
+
if (envBase)
|
|
8
|
+
return envBase;
|
|
9
|
+
const config = loadConfig();
|
|
10
|
+
return config.checkout?.baseUrl;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Build a VonPayCheckout client honoring the user's saved API key and the
|
|
14
|
+
* VONPAY_BASE_URL env var (or saved baseUrl). All CLI commands should call
|
|
15
|
+
* this instead of `new VonPayCheckout(apiKey)` — the bare constructor
|
|
16
|
+
* silently hits prod even when VONPAY_BASE_URL points at staging.
|
|
17
|
+
*/
|
|
18
|
+
export function makeCheckoutClient() {
|
|
19
|
+
const apiKey = requireApiKey();
|
|
20
|
+
const baseUrl = getBaseUrl();
|
|
21
|
+
if (baseUrl) {
|
|
22
|
+
return new VonPayCheckout({ apiKey, baseUrl });
|
|
23
|
+
}
|
|
24
|
+
return new VonPayCheckout(apiKey);
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=client-factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-factory.js","sourceRoot":"","sources":["../src/client-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAExD,MAAM,UAAU,UAAU;IACxB,wEAAwE;IACxE,mEAAmE;IACnE,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IAC5C,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAE5B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,OAAO,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC;AAClC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAC/B,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,IAAI,cAAc,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import type { Capabilities } from "@vonpay/checkout-node";
|
|
3
|
+
declare function fmtBool(v: boolean): string;
|
|
4
|
+
declare function fmtVoidPolicy(v: Capabilities["supportedOperations"]["voidAfterCapture"]): string;
|
|
5
|
+
export declare function capabilitiesCommand(): Command;
|
|
6
|
+
export declare const __testing__: {
|
|
7
|
+
fmtBool: typeof fmtBool;
|
|
8
|
+
fmtVoidPolicy: typeof fmtVoidPolicy;
|
|
9
|
+
};
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=capabilities.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../src/commands/capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAI1D,iBAAS,OAAO,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAEnC;AAED,iBAAS,aAAa,CACpB,CAAC,EAAE,YAAY,CAAC,qBAAqB,CAAC,CAAC,kBAAkB,CAAC,GACzD,MAAM,CASR;AA2BD,wBAAgB,mBAAmB,IAAI,OAAO,CAsB7C;AAED,eAAO,MAAM,WAAW;;;CAGvB,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
import ora from "ora";
|
|
4
|
+
import { makeCheckoutClient } from "../client-factory.js";
|
|
5
|
+
import { handleError } from "../utils/errors.js";
|
|
6
|
+
function fmtBool(v) {
|
|
7
|
+
return v ? chalk.green("yes") : chalk.dim("no");
|
|
8
|
+
}
|
|
9
|
+
function fmtVoidPolicy(v) {
|
|
10
|
+
switch (v) {
|
|
11
|
+
case "supported":
|
|
12
|
+
return chalk.green(v);
|
|
13
|
+
case "rerouted_to_refund":
|
|
14
|
+
return chalk.yellow(v);
|
|
15
|
+
case "unsupported":
|
|
16
|
+
return chalk.dim(v);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
function printCapabilities(caps) {
|
|
20
|
+
const ops = caps.supportedOperations;
|
|
21
|
+
console.log(chalk.bold("Supported operations"));
|
|
22
|
+
console.log(` auth/capture separation: ${fmtBool(ops.authCaptureSeparation)}`);
|
|
23
|
+
console.log(` partial capture: ${fmtBool(ops.partialCapture)}`);
|
|
24
|
+
console.log(` partial refund: ${fmtBool(ops.partialRefund)}`);
|
|
25
|
+
console.log(` unreferenced refund: ${fmtBool(ops.unreferencedRefund)}`);
|
|
26
|
+
console.log(` void after capture: ${fmtVoidPolicy(ops.voidAfterCapture)}`);
|
|
27
|
+
console.log(` MIT: ${fmtBool(ops.mit)}`);
|
|
28
|
+
console.log(` network tokens: ${fmtBool(ops.networkTokens)}`);
|
|
29
|
+
console.log(` 3D Secure 2: ${fmtBool(ops.threeDSecure2)}`);
|
|
30
|
+
console.log(` ACH: ${fmtBool(ops.ach)}`);
|
|
31
|
+
console.log(` payouts API: ${fmtBool(ops.payoutsApi)}`);
|
|
32
|
+
console.log();
|
|
33
|
+
console.log(chalk.bold("Settlement currencies"));
|
|
34
|
+
console.log(` ${caps.settlementCurrencies.length ? caps.settlementCurrencies.join(", ") : chalk.dim("(none reported)")}`);
|
|
35
|
+
console.log();
|
|
36
|
+
console.log(chalk.bold("Rate limits"));
|
|
37
|
+
console.log(` payment intents / minute: ${caps.rateLimits.paymentIntentsPerMinute}`);
|
|
38
|
+
}
|
|
39
|
+
export function capabilitiesCommand() {
|
|
40
|
+
return new Command("capabilities")
|
|
41
|
+
.description("Show what this merchant's binder supports")
|
|
42
|
+
.option("--json", "Output raw JSON")
|
|
43
|
+
.action(async (opts) => {
|
|
44
|
+
const client = makeCheckoutClient();
|
|
45
|
+
const spinner = ora("Fetching capabilities...").start();
|
|
46
|
+
try {
|
|
47
|
+
const caps = await client.capabilities.get();
|
|
48
|
+
spinner.stop();
|
|
49
|
+
if (opts.json) {
|
|
50
|
+
console.log(JSON.stringify(caps, null, 2));
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
printCapabilities(caps);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
spinner.stop();
|
|
58
|
+
handleError(err);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
export const __testing__ = {
|
|
63
|
+
fmtBool,
|
|
64
|
+
fmtVoidPolicy,
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=capabilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/commands/capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,SAAS,OAAO,CAAC,CAAU;IACzB,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,aAAa,CACpB,CAA0D;IAE1D,QAAQ,CAAC,EAAE,CAAC;QACV,KAAK,WAAW;YACd,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACxB,KAAK,oBAAoB;YACvB,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACzB,KAAK,aAAa;YAChB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAkB;IAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,+BAA+B,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;IACjF,OAAO,CAAC,GAAG,CAAC,+BAA+B,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IAC1E,OAAO,CAAC,GAAG,CAAC,+BAA+B,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IACzE,OAAO,CAAC,GAAG,CAAC,+BAA+B,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;IAC9E,OAAO,CAAC,GAAG,CAAC,+BAA+B,aAAa,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;IAClF,OAAO,CAAC,GAAG,CAAC,+BAA+B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,+BAA+B,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IACzE,OAAO,CAAC,GAAG,CAAC,+BAA+B,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IACzE,OAAO,CAAC,GAAG,CAAC,+BAA+B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,+BAA+B,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACtE,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CACT,KAAK,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAC9G,CAAC;IACF,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CACT,+BAA+B,IAAI,CAAC,UAAU,CAAC,uBAAuB,EAAE,CACzE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO,IAAI,OAAO,CAAC,cAAc,CAAC;SAC/B,WAAW,CAAC,2CAA2C,CAAC;SACxD,MAAM,CAAC,QAAQ,EAAE,iBAAiB,CAAC;SACnC,MAAM,CAAC,KAAK,EAAE,IAAwB,EAAE,EAAE;QACzC,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,GAAG,CAAC,0BAA0B,CAAC,CAAC,KAAK,EAAE,CAAC;QAExD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;YAC7C,OAAO,CAAC,IAAI,EAAE,CAAC;YAEf,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7C,CAAC;iBAAM,CAAC;gBACN,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,WAAW,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,OAAO;IACP,aAAa;CACd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkout.d.ts","sourceRoot":"","sources":["../../src/commands/checkout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"checkout.d.ts","sourceRoot":"","sources":["../../src/commands/checkout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAevD"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { loginCommand } from "./login.js";
|
|
2
2
|
import { initCommand } from "./init.js";
|
|
3
3
|
import { sessionsCommand } from "./sessions.js";
|
|
4
|
+
import { paymentIntentsCommand } from "./payment-intents.js";
|
|
5
|
+
import { refundsCommand } from "./refunds.js";
|
|
6
|
+
import { tokensCommand } from "./tokens.js";
|
|
7
|
+
import { capabilitiesCommand } from "./capabilities.js";
|
|
4
8
|
import { triggerCommand } from "./trigger.js";
|
|
5
9
|
import { healthCommand } from "./health.js";
|
|
6
10
|
import { doctorCommand } from "./doctor.js";
|
|
@@ -11,6 +15,10 @@ export function registerCheckout(program) {
|
|
|
11
15
|
checkout.addCommand(loginCommand());
|
|
12
16
|
checkout.addCommand(initCommand());
|
|
13
17
|
checkout.addCommand(sessionsCommand());
|
|
18
|
+
checkout.addCommand(paymentIntentsCommand());
|
|
19
|
+
checkout.addCommand(refundsCommand());
|
|
20
|
+
checkout.addCommand(tokensCommand());
|
|
21
|
+
checkout.addCommand(capabilitiesCommand());
|
|
14
22
|
checkout.addCommand(triggerCommand());
|
|
15
23
|
checkout.addCommand(healthCommand());
|
|
16
24
|
checkout.addCommand(doctorCommand());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkout.js","sourceRoot":"","sources":["../../src/commands/checkout.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,MAAM,QAAQ,GAAG,OAAO;SACrB,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,4BAA4B,CAAC,CAAC;IAE7C,QAAQ,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;IACpC,QAAQ,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;IACnC,QAAQ,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC,CAAC;IACvC,QAAQ,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,CAAC;IACtC,QAAQ,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC;IACrC,QAAQ,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC;AACvC,CAAC"}
|
|
1
|
+
{"version":3,"file":"checkout.js","sourceRoot":"","sources":["../../src/commands/checkout.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,MAAM,QAAQ,GAAG,OAAO;SACrB,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,4BAA4B,CAAC,CAAC;IAE7C,QAAQ,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;IACpC,QAAQ,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;IACnC,QAAQ,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC,CAAC;IACvC,QAAQ,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC7C,QAAQ,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,CAAC;IACtC,QAAQ,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC;IACrC,QAAQ,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC3C,QAAQ,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,CAAC;IACtC,QAAQ,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC;IACrC,QAAQ,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC;AACvC,CAAC"}
|
|
@@ -1,3 +1,59 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
|
+
interface DoctorReport {
|
|
3
|
+
generatedAt: string;
|
|
4
|
+
cli: {
|
|
5
|
+
version: string;
|
|
6
|
+
};
|
|
7
|
+
runtime: {
|
|
8
|
+
node: string;
|
|
9
|
+
npm?: string;
|
|
10
|
+
platform: string;
|
|
11
|
+
arch: string;
|
|
12
|
+
/** Working directory with the user's home prefix replaced by `~` to avoid leaking username when the bundle is pasted publicly. */
|
|
13
|
+
cwd: string;
|
|
14
|
+
};
|
|
15
|
+
envVarsPresent: string[];
|
|
16
|
+
configFile: {
|
|
17
|
+
path: string;
|
|
18
|
+
present: boolean;
|
|
19
|
+
keyType?: string;
|
|
20
|
+
};
|
|
21
|
+
apiKeyPrefix?: string;
|
|
22
|
+
apiKeyMode?: "test" | "live";
|
|
23
|
+
health: {
|
|
24
|
+
baseUrl: string;
|
|
25
|
+
reachable: boolean;
|
|
26
|
+
latencyMs?: number;
|
|
27
|
+
status?: string;
|
|
28
|
+
error?: string;
|
|
29
|
+
};
|
|
30
|
+
validateProbe?: {
|
|
31
|
+
ok: boolean;
|
|
32
|
+
warnings?: string[];
|
|
33
|
+
error?: {
|
|
34
|
+
code: string;
|
|
35
|
+
status: number;
|
|
36
|
+
nextAction: string;
|
|
37
|
+
llmHint: string;
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
hints: string[];
|
|
41
|
+
}
|
|
42
|
+
/** Replace the user's home-directory prefix with `~` so paths in the bundle don't leak username/filesystem layout when pasted publicly. */
|
|
43
|
+
declare function redactHome(p: string): string;
|
|
44
|
+
declare function maskPrefix(key: string | undefined): string | undefined;
|
|
45
|
+
declare function keyMode(key: string | undefined): "test" | "live" | undefined;
|
|
46
|
+
declare function gather(): Promise<DoctorReport>;
|
|
47
|
+
declare function renderHuman(r: DoctorReport): string;
|
|
48
|
+
declare function renderForLlm(r: DoctorReport): string;
|
|
49
|
+
export declare const __test__: {
|
|
50
|
+
maskPrefix: typeof maskPrefix;
|
|
51
|
+
keyMode: typeof keyMode;
|
|
52
|
+
redactHome: typeof redactHome;
|
|
53
|
+
renderHuman: typeof renderHuman;
|
|
54
|
+
renderForLlm: typeof renderForLlm;
|
|
55
|
+
gather: typeof gather;
|
|
56
|
+
};
|
|
2
57
|
export declare function doctorCommand(): Command;
|
|
58
|
+
export {};
|
|
3
59
|
//# sourceMappingURL=doctor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2BpC,UAAU,YAAY;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACzB,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,kIAAkI;QAClI,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,OAAO,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,aAAa,CAAC,EAAE;QACd,EAAE,EAAE,OAAO,CAAC;QACZ,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,KAAK,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC;KAC/E,CAAC;IACF,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,2IAA2I;AAC3I,iBAAS,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAMrC;AAED,iBAAS,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAO/D;AAED,iBAAS,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAQrE;AAED,iBAAe,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC,CAuI7C;AAED,iBAAS,WAAW,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,CAwE5C;AAED,iBAAS,YAAY,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,CAqE7C;AAGD,eAAO,MAAM,QAAQ;;;;;;;CAOpB,CAAC;AAEF,wBAAgB,aAAa,IAAI,OAAO,CA4BvC"}
|
package/dist/commands/doctor.js
CHANGED
|
@@ -26,7 +26,6 @@ const RELEVANT_ENV_VARS = [
|
|
|
26
26
|
"VON_PAY_SECRET_KEY",
|
|
27
27
|
"VON_PAY_PUBLISHABLE_KEY",
|
|
28
28
|
"VON_PAY_SESSION_SECRET",
|
|
29
|
-
"VONPAY_API_KEY",
|
|
30
29
|
"VONPAY_BASE_URL",
|
|
31
30
|
"VONPAY_QUIET",
|
|
32
31
|
"NEXT_PUBLIC_BASE_URL",
|
|
@@ -52,6 +51,10 @@ function maskPrefix(key) {
|
|
|
52
51
|
function keyMode(key) {
|
|
53
52
|
if (!key)
|
|
54
53
|
return undefined;
|
|
54
|
+
// Only API keys (vp_sk_* / vp_pk_*) carry mode in their prefix. Session
|
|
55
|
+
// signing secrets (ss_*) and webhook secrets (whsec_*) don't.
|
|
56
|
+
if (!/^vp_[ps]k_/.test(key))
|
|
57
|
+
return undefined;
|
|
55
58
|
if (key.includes("_test_"))
|
|
56
59
|
return "test";
|
|
57
60
|
if (key.includes("_live_"))
|
|
@@ -61,7 +64,6 @@ function keyMode(key) {
|
|
|
61
64
|
async function gather() {
|
|
62
65
|
const config = loadConfig();
|
|
63
66
|
const apiKey = process.env.VON_PAY_SECRET_KEY ??
|
|
64
|
-
process.env.VONPAY_API_KEY ??
|
|
65
67
|
config.checkout?.apiKey;
|
|
66
68
|
const baseUrl = process.env.VONPAY_BASE_URL ?? "https://checkout.vonpay.com";
|
|
67
69
|
const envVarsPresent = RELEVANT_ENV_VARS.filter((n) => process.env[n] && process.env[n] !== "");
|
|
@@ -89,9 +91,8 @@ async function gather() {
|
|
|
89
91
|
report.hints.push("No API key found. Set VON_PAY_SECRET_KEY in env, or run `vonpay checkout login` to save one. Without a key the health probe still runs but sessions.validate is skipped.");
|
|
90
92
|
}
|
|
91
93
|
// Health probe — public endpoint, requires no auth. Uses bare fetch to avoid
|
|
92
|
-
// constructing a VonPayCheckout with a placeholder key (would transmit
|
|
93
|
-
//
|
|
94
|
-
// review). The /api/health endpoint is documented as public.
|
|
94
|
+
// constructing a VonPayCheckout with a placeholder key (which would transmit
|
|
95
|
+
// a placeholder string as Bearer). The /api/health endpoint is documented as public.
|
|
95
96
|
const start = Date.now();
|
|
96
97
|
try {
|
|
97
98
|
const controller = new AbortController();
|
|
@@ -326,6 +327,15 @@ function renderForLlm(r) {
|
|
|
326
327
|
out.push("");
|
|
327
328
|
return out.join("\n");
|
|
328
329
|
}
|
|
330
|
+
// Internals exposed for unit tests. Not part of the public CLI surface.
|
|
331
|
+
export const __test__ = {
|
|
332
|
+
maskPrefix,
|
|
333
|
+
keyMode,
|
|
334
|
+
redactHome,
|
|
335
|
+
renderHuman,
|
|
336
|
+
renderForLlm,
|
|
337
|
+
gather,
|
|
338
|
+
};
|
|
329
339
|
export function doctorCommand() {
|
|
330
340
|
return new Command("doctor")
|
|
331
341
|
.description("Diagnose your Von Payments environment — runtime, env vars, live API probe; outputs human / JSON / LLM-readable formats")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/health.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
2
|
import chalk from "chalk";
|
|
3
3
|
import ora from "ora";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import { VonPayError } from "@vonpay/checkout-node";
|
|
5
|
+
import { makeCheckoutClient } from "../client-factory.js";
|
|
6
6
|
export function healthCommand() {
|
|
7
7
|
return new Command("health")
|
|
8
8
|
.description("Check checkout API health")
|
|
9
9
|
.option("--json", "Output raw JSON")
|
|
10
10
|
.action(async (opts) => {
|
|
11
|
-
const client =
|
|
11
|
+
const client = makeCheckoutClient();
|
|
12
12
|
const spinner = ora("Checking API health...").start();
|
|
13
13
|
try {
|
|
14
14
|
const health = await client.health();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/commands/health.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/commands/health.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,UAAU,aAAa;IAC3B,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC;SACzB,WAAW,CAAC,2BAA2B,CAAC;SACxC,MAAM,CAAC,QAAQ,EAAE,iBAAiB,CAAC;SACnC,MAAM,CAAC,KAAK,EAAE,IAAwB,EAAE,EAAE;QACzC,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,GAAG,CAAC,wBAAwB,CAAC,CAAC,KAAK,EAAE,CAAC;QAEtD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;YACrC,OAAO,CAAC,IAAI,EAAE,CAAC;YAEf,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/C,CAAC;iBAAM,CAAC;gBACN,MAAM,WAAW,GACf,MAAM,CAAC,MAAM,KAAK,IAAI;oBACpB,CAAC,CAAC,KAAK,CAAC,KAAK;oBACb,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU;wBAC5B,CAAC,CAAC,KAAK,CAAC,MAAM;wBACd,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;gBAElB,OAAO,CAAC,GAAG,CAAC,eAAe,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACzD,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;gBACjD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACnB,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC/C,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,GAAG,YAAY,WAAW,EAAE,CAAC;gBAC/B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBACtD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAClD,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CACP,qBAAqB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAChE,CACF,CAAC;YACJ,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import type { MITBlock } from "@vonpay/checkout-node";
|
|
3
|
+
interface CreateOpts {
|
|
4
|
+
amount: number;
|
|
5
|
+
currency: string;
|
|
6
|
+
captureMethod?: string;
|
|
7
|
+
metadata?: string[];
|
|
8
|
+
mitInitiator?: string;
|
|
9
|
+
mitReason?: string;
|
|
10
|
+
mitOriginalTransactionId?: string;
|
|
11
|
+
idempotencyKey?: string;
|
|
12
|
+
confirmLive?: boolean;
|
|
13
|
+
json?: boolean;
|
|
14
|
+
}
|
|
15
|
+
declare function buildMITBlock(opts: CreateOpts): MITBlock | undefined;
|
|
16
|
+
export declare function paymentIntentsCommand(): Command;
|
|
17
|
+
export declare const __testing__: {
|
|
18
|
+
buildMITBlock: typeof buildMITBlock;
|
|
19
|
+
};
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=payment-intents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payment-intents.d.ts","sourceRoot":"","sources":["../../src/commands/payment-intents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,KAAK,EAEV,QAAQ,EAGT,MAAM,uBAAuB,CAAC;AAc/B,UAAU,UAAU;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,iBAAS,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,QAAQ,GAAG,SAAS,CAgC7D;AAyCD,wBAAgB,qBAAqB,IAAI,OAAO,CAoM/C;AAED,eAAO,MAAM,WAAW;;CAEvB,CAAC"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
import ora from "ora";
|
|
4
|
+
import { requireApiKey } from "../config.js";
|
|
5
|
+
import { makeCheckoutClient } from "../client-factory.js";
|
|
6
|
+
import { parseMetadata } from "../utils/metadata.js";
|
|
7
|
+
import { handleError } from "../utils/errors.js";
|
|
8
|
+
import { requireLiveConfirmation } from "../utils/live-key.js";
|
|
9
|
+
const MIT_INITIATORS = ["merchant", "customer"];
|
|
10
|
+
const MIT_REASONS = [
|
|
11
|
+
"recurring",
|
|
12
|
+
"unscheduled",
|
|
13
|
+
"installment",
|
|
14
|
+
];
|
|
15
|
+
function buildMITBlock(opts) {
|
|
16
|
+
// Treat empty string as not provided — `--mit-original-transaction-id ""`
|
|
17
|
+
// would otherwise build a malformed MIT block that the server may reject
|
|
18
|
+
// ambiguously.
|
|
19
|
+
const initiator = opts.mitInitiator?.trim().toLowerCase();
|
|
20
|
+
const reason = opts.mitReason?.trim().toLowerCase();
|
|
21
|
+
const originalTransactionId = opts.mitOriginalTransactionId?.trim();
|
|
22
|
+
const provided = [initiator, reason, originalTransactionId].filter((v) => v !== undefined && v !== "").length;
|
|
23
|
+
if (provided === 0)
|
|
24
|
+
return undefined;
|
|
25
|
+
if (provided !== 3) {
|
|
26
|
+
throw new Error("MIT requires all three of --mit-initiator, --mit-reason, --mit-original-transaction-id (non-empty).");
|
|
27
|
+
}
|
|
28
|
+
if (!MIT_INITIATORS.includes(initiator)) {
|
|
29
|
+
throw new Error(`Invalid --mit-initiator "${opts.mitInitiator}". Expected: ${MIT_INITIATORS.join(", ")}`);
|
|
30
|
+
}
|
|
31
|
+
if (!MIT_REASONS.includes(reason)) {
|
|
32
|
+
throw new Error(`Invalid --mit-reason "${opts.mitReason}". Expected: ${MIT_REASONS.join(", ")}`);
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
initiator: initiator,
|
|
36
|
+
reason: reason,
|
|
37
|
+
originalTransactionId: originalTransactionId,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
function printPaymentIntent(intent) {
|
|
41
|
+
const statusColor = intent.status === "succeeded"
|
|
42
|
+
? chalk.green
|
|
43
|
+
: intent.status === "authorized"
|
|
44
|
+
? chalk.cyan
|
|
45
|
+
: intent.status === "requires_action"
|
|
46
|
+
? chalk.yellow
|
|
47
|
+
: intent.status === "failed" || intent.status === "canceled"
|
|
48
|
+
? chalk.red
|
|
49
|
+
: chalk.gray;
|
|
50
|
+
console.log(` ID: ${intent.id}`);
|
|
51
|
+
console.log(` Status: ${statusColor(intent.status)}`);
|
|
52
|
+
console.log(` Amount: ${(intent.amount / 100).toFixed(2)} ${intent.currency}`);
|
|
53
|
+
console.log(` Capture: ${intent.captureMethod}`);
|
|
54
|
+
if (intent.nextAction) {
|
|
55
|
+
console.log(` Next action: ${chalk.yellow(intent.nextAction)}`);
|
|
56
|
+
}
|
|
57
|
+
if (intent.declineCode) {
|
|
58
|
+
console.log(` Decline code: ${chalk.red(intent.declineCode)}`);
|
|
59
|
+
}
|
|
60
|
+
console.log(` Created: ${intent.createdAt}`);
|
|
61
|
+
}
|
|
62
|
+
const CONFIRM_LIVE_DESCRIPTION = "Required to proceed when the loaded key is vp_sk_live_* (this operation is irreversible)";
|
|
63
|
+
export function paymentIntentsCommand() {
|
|
64
|
+
const intents = new Command("payment-intents").description("Create, capture, and void payment intents (discrete lifecycle)");
|
|
65
|
+
intents
|
|
66
|
+
.command("create")
|
|
67
|
+
.description("Create a new payment intent")
|
|
68
|
+
.requiredOption("--amount <cents>", "Amount in minor units (e.g. 1499 = $14.99)", (v) => parseInt(v, 10))
|
|
69
|
+
.requiredOption("--currency <code>", "ISO 4217 currency (e.g. USD)")
|
|
70
|
+
.option("--capture-method <mode>", "automatic (default) or manual (parks at authorized)")
|
|
71
|
+
.option("--metadata <pair...>", "Metadata key=value (repeat flag for multiple pairs)")
|
|
72
|
+
.option("--mit-initiator <initiator>", `MIT initiator (${MIT_INITIATORS.join(" | ")})`)
|
|
73
|
+
.option("--mit-reason <reason>", `MIT reason (${MIT_REASONS.join(" | ")})`)
|
|
74
|
+
.option("--mit-original-transaction-id <id>", "Cardholder-initiated anchor payment intent ID (vpi_*)")
|
|
75
|
+
.option("--idempotency-key <key>", "Idempotency key for safe retries")
|
|
76
|
+
.option("--confirm-live", CONFIRM_LIVE_DESCRIPTION)
|
|
77
|
+
.option("--json", "Output raw JSON")
|
|
78
|
+
.action(async (opts) => {
|
|
79
|
+
const apiKey = requireApiKey();
|
|
80
|
+
requireLiveConfirmation(apiKey, opts, "create a payment intent");
|
|
81
|
+
const client = makeCheckoutClient();
|
|
82
|
+
const spinner = ora("Creating payment intent...").start();
|
|
83
|
+
try {
|
|
84
|
+
const captureMethod = opts.captureMethod?.toLowerCase();
|
|
85
|
+
if (captureMethod !== undefined &&
|
|
86
|
+
captureMethod !== "automatic" &&
|
|
87
|
+
captureMethod !== "manual") {
|
|
88
|
+
spinner.stop();
|
|
89
|
+
console.error(chalk.red(`Invalid --capture-method "${opts.captureMethod}". Expected automatic or manual.`));
|
|
90
|
+
process.exit(1);
|
|
91
|
+
}
|
|
92
|
+
const metadata = parseMetadata(opts.metadata);
|
|
93
|
+
const mit = buildMITBlock(opts);
|
|
94
|
+
const params = {
|
|
95
|
+
amount: opts.amount,
|
|
96
|
+
currency: opts.currency.toUpperCase(),
|
|
97
|
+
};
|
|
98
|
+
if (captureMethod !== undefined) {
|
|
99
|
+
params.captureMethod = captureMethod;
|
|
100
|
+
}
|
|
101
|
+
if (metadata !== undefined) {
|
|
102
|
+
params.metadata = metadata;
|
|
103
|
+
}
|
|
104
|
+
if (mit !== undefined) {
|
|
105
|
+
params.mit = mit;
|
|
106
|
+
}
|
|
107
|
+
const intent = await client.paymentIntents.create(params, opts.idempotencyKey
|
|
108
|
+
? { idempotencyKey: opts.idempotencyKey }
|
|
109
|
+
: undefined);
|
|
110
|
+
spinner.stop();
|
|
111
|
+
if (opts.json) {
|
|
112
|
+
console.log(JSON.stringify(intent, null, 2));
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
console.log(chalk.green("✓ Payment intent created"));
|
|
116
|
+
printPaymentIntent(intent);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
catch (err) {
|
|
120
|
+
spinner.stop();
|
|
121
|
+
handleError(err);
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
intents
|
|
125
|
+
.command("capture")
|
|
126
|
+
.description("Capture an authorized payment intent")
|
|
127
|
+
.argument("<id>", "Payment intent ID (vpi_*)")
|
|
128
|
+
.option("--amount-to-capture <cents>", "Partial capture amount in minor units (omit for full)", (v) => parseInt(v, 10))
|
|
129
|
+
.option("--idempotency-key <key>", "Idempotency key for safe retries")
|
|
130
|
+
.option("--confirm-live", CONFIRM_LIVE_DESCRIPTION)
|
|
131
|
+
.option("--json", "Output raw JSON")
|
|
132
|
+
.action(async (id, opts) => {
|
|
133
|
+
const apiKey = requireApiKey();
|
|
134
|
+
requireLiveConfirmation(apiKey, opts, "capture a payment intent");
|
|
135
|
+
const client = makeCheckoutClient();
|
|
136
|
+
const spinner = ora("Capturing payment intent...").start();
|
|
137
|
+
try {
|
|
138
|
+
const intent = await client.paymentIntents.capture(id, opts.amountToCapture !== undefined
|
|
139
|
+
? { amountToCapture: opts.amountToCapture }
|
|
140
|
+
: undefined, opts.idempotencyKey
|
|
141
|
+
? { idempotencyKey: opts.idempotencyKey }
|
|
142
|
+
: undefined);
|
|
143
|
+
spinner.stop();
|
|
144
|
+
if (opts.json) {
|
|
145
|
+
console.log(JSON.stringify(intent, null, 2));
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
const captureLabel = opts.amountToCapture !== undefined
|
|
149
|
+
? ` (partial: ${(opts.amountToCapture / 100).toFixed(2)} ${intent.currency})`
|
|
150
|
+
: "";
|
|
151
|
+
console.log(chalk.green(`✓ Payment intent captured${captureLabel}`));
|
|
152
|
+
printPaymentIntent(intent);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
catch (err) {
|
|
156
|
+
spinner.stop();
|
|
157
|
+
handleError(err);
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
intents
|
|
161
|
+
.command("void")
|
|
162
|
+
.description("Void an authorized (uncaptured) payment intent")
|
|
163
|
+
.argument("<id>", "Payment intent ID (vpi_*)")
|
|
164
|
+
.option("--idempotency-key <key>", "Idempotency key for safe retries")
|
|
165
|
+
.option("--confirm-live", CONFIRM_LIVE_DESCRIPTION)
|
|
166
|
+
.option("--json", "Output raw JSON")
|
|
167
|
+
.action(async (id, opts) => {
|
|
168
|
+
const apiKey = requireApiKey();
|
|
169
|
+
requireLiveConfirmation(apiKey, opts, "void a payment intent");
|
|
170
|
+
const client = makeCheckoutClient();
|
|
171
|
+
const spinner = ora("Voiding payment intent...").start();
|
|
172
|
+
try {
|
|
173
|
+
const intent = await client.paymentIntents.void(id, opts.idempotencyKey
|
|
174
|
+
? { idempotencyKey: opts.idempotencyKey }
|
|
175
|
+
: undefined);
|
|
176
|
+
spinner.stop();
|
|
177
|
+
if (opts.json) {
|
|
178
|
+
console.log(JSON.stringify(intent, null, 2));
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
console.log(chalk.green("✓ Payment intent voided"));
|
|
182
|
+
printPaymentIntent(intent);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
catch (err) {
|
|
186
|
+
spinner.stop();
|
|
187
|
+
handleError(err);
|
|
188
|
+
}
|
|
189
|
+
});
|
|
190
|
+
return intents;
|
|
191
|
+
}
|
|
192
|
+
export const __testing__ = {
|
|
193
|
+
buildMITBlock,
|
|
194
|
+
};
|
|
195
|
+
//# sourceMappingURL=payment-intents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payment-intents.js","sourceRoot":"","sources":["../../src/commands/payment-intents.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refunds.d.ts","sourceRoot":"","sources":["../../src/commands/refunds.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiCpC,wBAAgB,cAAc,IAAI,OAAO,CA+ExC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
import ora from "ora";
|
|
4
|
+
import { requireApiKey } from "../config.js";
|
|
5
|
+
import { makeCheckoutClient } from "../client-factory.js";
|
|
6
|
+
import { parseMetadata } from "../utils/metadata.js";
|
|
7
|
+
import { handleError } from "../utils/errors.js";
|
|
8
|
+
import { requireLiveConfirmation } from "../utils/live-key.js";
|
|
9
|
+
import { safeDisplay } from "../utils/sanitize.js";
|
|
10
|
+
function printRefund(refund) {
|
|
11
|
+
const statusColor = refund.status === "succeeded"
|
|
12
|
+
? chalk.green
|
|
13
|
+
: refund.status === "failed"
|
|
14
|
+
? chalk.red
|
|
15
|
+
: chalk.yellow;
|
|
16
|
+
console.log(` ID: ${refund.id}`);
|
|
17
|
+
console.log(` Payment intent: ${refund.paymentIntent}`);
|
|
18
|
+
console.log(` Status: ${statusColor(refund.status)}`);
|
|
19
|
+
console.log(` Amount: ${(refund.amount / 100).toFixed(2)} ${refund.currency}`);
|
|
20
|
+
if (refund.reason) {
|
|
21
|
+
// Server echoes back the user-supplied reason; strip terminal escapes
|
|
22
|
+
// before printing so a malicious or accidentally-formatted reason can't
|
|
23
|
+
// repaint the terminal.
|
|
24
|
+
console.log(` Reason: ${safeDisplay(refund.reason)}`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export function refundsCommand() {
|
|
28
|
+
const refunds = new Command("refunds").description("Refund a captured payment intent");
|
|
29
|
+
refunds
|
|
30
|
+
.command("create")
|
|
31
|
+
.description("Create a refund against a payment intent")
|
|
32
|
+
.requiredOption("--payment-intent <id>", "Payment intent ID to refund (vpi_*)")
|
|
33
|
+
.option("--amount <cents>", "Refund amount in minor units (omit for full remaining balance)", (v) => parseInt(v, 10))
|
|
34
|
+
.option("--currency <code>", "ISO 4217 currency code")
|
|
35
|
+
.option("--reason <text>", "Free-form reason (mirrored back on the record)")
|
|
36
|
+
.option("--metadata <pair...>", "Metadata key=value (repeat flag for multiple pairs)")
|
|
37
|
+
.option("--idempotency-key <key>", "Idempotency key for safe retries")
|
|
38
|
+
.option("--confirm-live", "Required to proceed when the loaded key is vp_sk_live_* (this operation is irreversible)")
|
|
39
|
+
.option("--json", "Output raw JSON")
|
|
40
|
+
.action(async (opts) => {
|
|
41
|
+
const apiKey = requireApiKey();
|
|
42
|
+
requireLiveConfirmation(apiKey, opts, "create a refund");
|
|
43
|
+
const client = makeCheckoutClient();
|
|
44
|
+
const spinner = ora("Creating refund...").start();
|
|
45
|
+
try {
|
|
46
|
+
const metadata = parseMetadata(opts.metadata);
|
|
47
|
+
const params = {
|
|
48
|
+
paymentIntent: opts.paymentIntent,
|
|
49
|
+
};
|
|
50
|
+
if (opts.amount !== undefined)
|
|
51
|
+
params.amount = opts.amount;
|
|
52
|
+
if (opts.currency !== undefined) {
|
|
53
|
+
params.currency = opts.currency.toUpperCase();
|
|
54
|
+
}
|
|
55
|
+
if (opts.reason !== undefined)
|
|
56
|
+
params.reason = opts.reason;
|
|
57
|
+
if (metadata !== undefined)
|
|
58
|
+
params.metadata = metadata;
|
|
59
|
+
const refund = await client.refunds.create(params, opts.idempotencyKey
|
|
60
|
+
? { idempotencyKey: opts.idempotencyKey }
|
|
61
|
+
: undefined);
|
|
62
|
+
spinner.stop();
|
|
63
|
+
if (opts.json) {
|
|
64
|
+
console.log(JSON.stringify(refund, null, 2));
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
console.log(chalk.green("✓ Refund created"));
|
|
68
|
+
printRefund(refund);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
catch (err) {
|
|
72
|
+
spinner.stop();
|
|
73
|
+
handleError(err);
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
return refunds;
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=refunds.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refunds.js","sourceRoot":"","sources":["../../src/commands/refunds.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/commands/sessions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/commands/sessions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,eAAe,IAAI,OAAO,CAoHzC"}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
2
|
import chalk from "chalk";
|
|
3
3
|
import ora from "ora";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
return new VonPayCheckout(requireApiKey());
|
|
8
|
-
}
|
|
4
|
+
import { makeCheckoutClient } from "../client-factory.js";
|
|
5
|
+
import { handleError } from "../utils/errors.js";
|
|
6
|
+
const makeClient = makeCheckoutClient;
|
|
9
7
|
export function sessionsCommand() {
|
|
10
8
|
const sessions = new Command("sessions").description("Create and manage checkout sessions");
|
|
11
9
|
sessions
|
|
@@ -110,17 +108,4 @@ export function sessionsCommand() {
|
|
|
110
108
|
});
|
|
111
109
|
return sessions;
|
|
112
110
|
}
|
|
113
|
-
function handleError(err) {
|
|
114
|
-
if (err instanceof VonPayError) {
|
|
115
|
-
console.error(chalk.red(`Error: ${err.message}`));
|
|
116
|
-
console.error(chalk.dim(` Code: ${err.code}`));
|
|
117
|
-
console.error(chalk.dim(` Fix: ${err.fix}`));
|
|
118
|
-
if (err.requestId) {
|
|
119
|
-
console.error(chalk.dim(` Request ID: ${err.requestId}`));
|
|
120
|
-
}
|
|
121
|
-
process.exit(1);
|
|
122
|
-
}
|
|
123
|
-
console.error(chalk.red(`Error: ${err instanceof Error ? err.message : err}`));
|
|
124
|
-
process.exit(1);
|
|
125
|
-
}
|
|
126
111
|
//# sourceMappingURL=sessions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/commands/sessions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/commands/sessions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/commands/tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0BpC,wBAAgB,aAAa,IAAI,OAAO,CAsFvC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
import ora from "ora";
|
|
4
|
+
import { requireApiKey } from "../config.js";
|
|
5
|
+
import { makeCheckoutClient } from "../client-factory.js";
|
|
6
|
+
import { parseMetadata } from "../utils/metadata.js";
|
|
7
|
+
import { handleError } from "../utils/errors.js";
|
|
8
|
+
import { isLiveKey, warnLiveSecretFlag } from "../utils/live-key.js";
|
|
9
|
+
function printToken(token) {
|
|
10
|
+
const statusColor = token.status === "active"
|
|
11
|
+
? chalk.green
|
|
12
|
+
: token.status === "expired"
|
|
13
|
+
? chalk.yellow
|
|
14
|
+
: chalk.red;
|
|
15
|
+
console.log(` ID: ${token.id}`);
|
|
16
|
+
console.log(` Status: ${statusColor(token.status)}`);
|
|
17
|
+
console.log(` Card: ${token.card.brand} •••• ${token.card.last4}`);
|
|
18
|
+
console.log(` Expires: ${String(token.card.expMonth).padStart(2, "0")}/${token.card.expYear}`);
|
|
19
|
+
}
|
|
20
|
+
export function tokensCommand() {
|
|
21
|
+
const tokens = new Command("tokens").description("Create payment-method tokens for saved-card / MIT flows");
|
|
22
|
+
tokens
|
|
23
|
+
.command("create")
|
|
24
|
+
.description("Create a payment-method token")
|
|
25
|
+
.option("--buyer-id <id>", "Buyer ID to attach the token to")
|
|
26
|
+
.option("--provider-reference <ref>", "Provider tokenization handle (required for live keys with iframe-vault providers)")
|
|
27
|
+
.option("--metadata <pair...>", "Metadata key=value (repeat flag for multiple pairs)")
|
|
28
|
+
.option("--idempotency-key <key>", "Idempotency key for safe retries")
|
|
29
|
+
.option("--json", "Output raw JSON")
|
|
30
|
+
.action(async (opts) => {
|
|
31
|
+
const apiKey = requireApiKey();
|
|
32
|
+
// Sandbox keys auto-mint a mock card when no provider reference is
|
|
33
|
+
// supplied. Live keys with iframe-vault providers require a
|
|
34
|
+
// browser-minted vault token; the server returns 422 otherwise.
|
|
35
|
+
if (!opts.buyerId && !opts.providerReference) {
|
|
36
|
+
if (isLiveKey(apiKey)) {
|
|
37
|
+
console.warn(chalk.yellow("Warning: no --buyer-id or --provider-reference supplied. Live keys with iframe-vault providers will fail with a 422 validation_error."));
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
console.log(chalk.dim("No --provider-reference supplied; sandbox will auto-mint a mock card token."));
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
if (opts.providerReference !== undefined) {
|
|
44
|
+
warnLiveSecretFlag(apiKey, "--provider-reference");
|
|
45
|
+
}
|
|
46
|
+
const client = makeCheckoutClient();
|
|
47
|
+
const spinner = ora("Creating token...").start();
|
|
48
|
+
try {
|
|
49
|
+
const metadata = parseMetadata(opts.metadata);
|
|
50
|
+
const params = {};
|
|
51
|
+
if (opts.buyerId !== undefined)
|
|
52
|
+
params.buyerId = opts.buyerId;
|
|
53
|
+
if (opts.providerReference !== undefined) {
|
|
54
|
+
params.providerReference = opts.providerReference;
|
|
55
|
+
}
|
|
56
|
+
if (metadata !== undefined)
|
|
57
|
+
params.metadata = metadata;
|
|
58
|
+
const token = await client.tokens.create(params, opts.idempotencyKey
|
|
59
|
+
? { idempotencyKey: opts.idempotencyKey }
|
|
60
|
+
: undefined);
|
|
61
|
+
spinner.stop();
|
|
62
|
+
if (opts.json) {
|
|
63
|
+
console.log(JSON.stringify(token, null, 2));
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
console.log(chalk.green("✓ Token created"));
|
|
67
|
+
printToken(token);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
catch (err) {
|
|
71
|
+
spinner.stop();
|
|
72
|
+
handleError(err);
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
return tokens;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=tokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/commands/tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAErE,SAAS,UAAU,CAAC,KAAY;IAC9B,MAAM,WAAW,GACf,KAAK,CAAC,MAAM,KAAK,QAAQ;QACvB,CAAC,CAAC,KAAK,CAAC,KAAK;QACb,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS;YAC1B,CAAC,CAAC,KAAK,CAAC,MAAM;YACd,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;IAElB,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,gBAAgB,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IACzE,OAAO,CAAC,GAAG,CACT,gBAAgB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CACrF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAC9C,yDAAyD,CAC1D,CAAC;IAEF,MAAM;SACH,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,+BAA+B,CAAC;SAC5C,MAAM,CAAC,iBAAiB,EAAE,iCAAiC,CAAC;SAC5D,MAAM,CACL,4BAA4B,EAC5B,mFAAmF,CACpF;SACA,MAAM,CACL,sBAAsB,EACtB,qDAAqD,CACtD;SACA,MAAM,CAAC,yBAAyB,EAAE,kCAAkC,CAAC;SACrE,MAAM,CAAC,QAAQ,EAAE,iBAAiB,CAAC;SACnC,MAAM,CACL,KAAK,EAAE,IAMN,EAAE,EAAE;QACH,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;QAE/B,mEAAmE;QACnE,4DAA4D;QAC5D,gEAAgE;QAChE,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC7C,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtB,OAAO,CAAC,IAAI,CACV,KAAK,CAAC,MAAM,CACV,uIAAuI,CACxI,CACF,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CACP,6EAA6E,CAC9E,CACF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;YACzC,kBAAkB,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;QACrD,CAAC;QAED,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,GAAG,CAAC,mBAAmB,CAAC,CAAC,KAAK,EAAE,CAAC;QAEjD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC9C,MAAM,MAAM,GAAsB,EAAE,CAAC;YACrC,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;gBAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YAC9D,IAAI,IAAI,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;gBACzC,MAAM,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;YACpD,CAAC;YACD,IAAI,QAAQ,KAAK,SAAS;gBAAE,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAEvD,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CACtC,MAAM,EACN,IAAI,CAAC,cAAc;gBACjB,CAAC,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE;gBACzC,CAAC,CAAC,SAAS,CACd,CAAC;YACF,OAAO,CAAC,IAAI,EAAE,CAAC;YAEf,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9C,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;gBAC5C,UAAU,CAAC,KAAK,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,WAAW,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,CACF,CAAC;IAEJ,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAKA,iBAAS,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAEvC;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,KAAK,CAa/C;AAED,eAAO,MAAM,WAAW;;CAEvB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import { VonPayError } from "@vonpay/checkout-node";
|
|
3
|
+
const SECRET_KEY_PATTERN = /vp_sk_(test|live)_[A-Za-z0-9_-]+/g;
|
|
4
|
+
function scrubSecrets(s) {
|
|
5
|
+
return s.replace(SECRET_KEY_PATTERN, "vp_sk_***");
|
|
6
|
+
}
|
|
7
|
+
export function handleError(err) {
|
|
8
|
+
if (err instanceof VonPayError) {
|
|
9
|
+
console.error(chalk.red(`Error: ${err.message}`));
|
|
10
|
+
console.error(chalk.dim(` Code: ${err.code}`));
|
|
11
|
+
console.error(chalk.dim(` Fix: ${err.fix}`));
|
|
12
|
+
if (err.requestId) {
|
|
13
|
+
console.error(chalk.dim(` Request ID: ${err.requestId}`));
|
|
14
|
+
}
|
|
15
|
+
process.exit(1);
|
|
16
|
+
}
|
|
17
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
18
|
+
console.error(chalk.red(`Error: ${scrubSecrets(message)}`));
|
|
19
|
+
process.exit(1);
|
|
20
|
+
}
|
|
21
|
+
export const __testing__ = {
|
|
22
|
+
scrubSecrets,
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,MAAM,kBAAkB,GAAG,mCAAmC,CAAC;AAE/D,SAAS,YAAY,CAAC,CAAS;IAC7B,OAAO,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAY;IACtC,IAAI,GAAG,YAAY,WAAW,EAAE,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAChD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC/C,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,YAAY;CACb,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare function isLiveKey(key: string): boolean;
|
|
2
|
+
export interface LiveGateOpts {
|
|
3
|
+
confirmLive?: boolean;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Refuse to run a destructive/irreversible operation on a live key unless the
|
|
7
|
+
* caller explicitly passes --confirm-live. Pattern mirrors --confirm-cli-exposure
|
|
8
|
+
* in `login.ts` — a deliberate friction step, not a TTY check (CI pseudo-TTYs
|
|
9
|
+
* are unreliable signals).
|
|
10
|
+
*
|
|
11
|
+
* Exits the process with code 1 on refusal so callers can `requireLiveConfirmation(...)`
|
|
12
|
+
* as an early guard at the top of an action handler.
|
|
13
|
+
*/
|
|
14
|
+
export declare function requireLiveConfirmation(key: string, opts: LiveGateOpts, operation: string): void;
|
|
15
|
+
export declare function warnLiveSecretFlag(key: string, flag: string): void;
|
|
16
|
+
//# sourceMappingURL=live-key.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live-key.d.ts","sourceRoot":"","sources":["../../src/utils/live-key.ts"],"names":[],"mappings":"AAEA,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE9C;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,YAAY,EAClB,SAAS,EAAE,MAAM,GAChB,IAAI,CAgBN;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAOlE"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
export function isLiveKey(key) {
|
|
3
|
+
return key.startsWith("vp_sk_live_");
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Refuse to run a destructive/irreversible operation on a live key unless the
|
|
7
|
+
* caller explicitly passes --confirm-live. Pattern mirrors --confirm-cli-exposure
|
|
8
|
+
* in `login.ts` — a deliberate friction step, not a TTY check (CI pseudo-TTYs
|
|
9
|
+
* are unreliable signals).
|
|
10
|
+
*
|
|
11
|
+
* Exits the process with code 1 on refusal so callers can `requireLiveConfirmation(...)`
|
|
12
|
+
* as an early guard at the top of an action handler.
|
|
13
|
+
*/
|
|
14
|
+
export function requireLiveConfirmation(key, opts, operation) {
|
|
15
|
+
if (!isLiveKey(key))
|
|
16
|
+
return;
|
|
17
|
+
if (opts.confirmLive) {
|
|
18
|
+
console.warn(chalk.yellow(`Live key in use — ${operation} is irreversible. Proceeding because --confirm-live was passed.`));
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
console.error(chalk.red(`Refusing to ${operation} with a live key. Pass --confirm-live to acknowledge this is intentional.`));
|
|
22
|
+
process.exit(1);
|
|
23
|
+
}
|
|
24
|
+
export function warnLiveSecretFlag(key, flag) {
|
|
25
|
+
if (!isLiveKey(key))
|
|
26
|
+
return;
|
|
27
|
+
console.warn(chalk.yellow(`Warning: passing ${flag} as a command argument with a live key exposes it to shell history and process-list (\`ps\`). Consider piping or env-injecting the value instead.`));
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=live-key.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live-key.js","sourceRoot":"","sources":["../../src/utils/live-key.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,OAAO,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AACvC,CAAC;AAMD;;;;;;;;GAQG;AACH,MAAM,UAAU,uBAAuB,CACrC,GAAW,EACX,IAAkB,EAClB,SAAiB;IAEjB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;QAAE,OAAO;IAC5B,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CACV,KAAK,CAAC,MAAM,CACV,qBAAqB,SAAS,iEAAiE,CAChG,CACF,CAAC;QACF,OAAO;IACT,CAAC;IACD,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CACP,eAAe,SAAS,2EAA2E,CACpG,CACF,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAAW,EAAE,IAAY;IAC1D,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;QAAE,OAAO;IAC5B,OAAO,CAAC,IAAI,CACV,KAAK,CAAC,MAAM,CACV,oBAAoB,IAAI,mJAAmJ,CAC5K,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/utils/metadata.ts"],"names":[],"mappings":"AAIA,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,GAC1B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAmCpC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
const MAX_LEN = 256;
|
|
2
|
+
// Allow tab and newline in values (rare but valid); reject all other C0 controls + DEL.
|
|
3
|
+
const CONTROL_CHARS = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/;
|
|
4
|
+
export function parseMetadata(pairs) {
|
|
5
|
+
if (!pairs || pairs.length === 0)
|
|
6
|
+
return undefined;
|
|
7
|
+
const out = {};
|
|
8
|
+
for (const pair of pairs) {
|
|
9
|
+
const idx = pair.indexOf("=");
|
|
10
|
+
if (idx === -1) {
|
|
11
|
+
throw new Error(`Invalid --metadata value "${pair}". Expected key=value (use multiple --metadata flags for multiple pairs).`);
|
|
12
|
+
}
|
|
13
|
+
const key = pair.slice(0, idx);
|
|
14
|
+
const value = pair.slice(idx + 1);
|
|
15
|
+
if (key.length === 0) {
|
|
16
|
+
throw new Error(`Invalid --metadata value "${pair}": key is empty. Expected key=value with a non-empty key.`);
|
|
17
|
+
}
|
|
18
|
+
if (key.length > MAX_LEN) {
|
|
19
|
+
throw new Error(`--metadata key too long (${key.length} > ${MAX_LEN}).`);
|
|
20
|
+
}
|
|
21
|
+
if (value.length > MAX_LEN) {
|
|
22
|
+
throw new Error(`--metadata value too long (${value.length} > ${MAX_LEN}).`);
|
|
23
|
+
}
|
|
24
|
+
if (CONTROL_CHARS.test(key) || CONTROL_CHARS.test(value)) {
|
|
25
|
+
throw new Error(`--metadata "${key}" contains control characters; metadata must be printable text.`);
|
|
26
|
+
}
|
|
27
|
+
out[key] = value;
|
|
28
|
+
}
|
|
29
|
+
return out;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/utils/metadata.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG,GAAG,CAAC;AACpB,wFAAwF;AACxF,MAAM,aAAa,GAAG,kCAAkC,CAAC;AAEzD,MAAM,UAAU,aAAa,CAC3B,KAA2B;IAE3B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACnD,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,6BAA6B,IAAI,2EAA2E,CAC7G,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QAClC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CACb,6BAA6B,IAAI,2DAA2D,CAC7F,CAAC;QACJ,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,GAAG,OAAO,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,4BAA4B,GAAG,CAAC,MAAM,MAAM,OAAO,IAAI,CACxD,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,GAAG,OAAO,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CACb,8BAA8B,KAAK,CAAC,MAAM,MAAM,OAAO,IAAI,CAC5D,CAAC;QACJ,CAAC;QACD,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACzD,MAAM,IAAI,KAAK,CACb,eAAe,GAAG,iEAAiE,CACpF,CAAC;QACJ,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACnB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../src/utils/sanitize.ts"],"names":[],"mappings":"AAOA,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE3C;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAGvD;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,SAAM,GAAG,MAAM,CAExD"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// Strip CSI escape sequences (e.g. ANSI color, cursor movement) from text we
|
|
2
|
+
// echo back to the terminal. Server-supplied strings should not be able to
|
|
3
|
+
// repaint the user's terminal.
|
|
4
|
+
const ANSI_PATTERN = /\x1B\[[0-9;?]*[A-Za-z]/g;
|
|
5
|
+
// Strip C0 controls + DEL except tab/newline (kept for readability).
|
|
6
|
+
const C0_CONTROL_PATTERN = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g;
|
|
7
|
+
export function stripAnsi(s) {
|
|
8
|
+
return s.replace(ANSI_PATTERN, "").replace(C0_CONTROL_PATTERN, "");
|
|
9
|
+
}
|
|
10
|
+
export function truncate(s, max) {
|
|
11
|
+
if (s.length <= max)
|
|
12
|
+
return s;
|
|
13
|
+
return s.slice(0, max - 1) + "…";
|
|
14
|
+
}
|
|
15
|
+
export function safeDisplay(s, max = 200) {
|
|
16
|
+
return truncate(stripAnsi(s), max);
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=sanitize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../../src/utils/sanitize.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,2EAA2E;AAC3E,+BAA+B;AAC/B,MAAM,YAAY,GAAG,yBAAyB,CAAC;AAC/C,qEAAqE;AACrE,MAAM,kBAAkB,GAAG,mCAAmC,CAAC;AAE/D,MAAM,UAAU,SAAS,CAAC,CAAS;IACjC,OAAO,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,CAAS,EAAE,GAAW;IAC7C,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG;QAAE,OAAO,CAAC,CAAC;IAC9B,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAS,EAAE,GAAG,GAAG,GAAG;IAC9C,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACrC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vonpay/checkout-cli",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.3",
|
|
4
4
|
"description": "Von Payments CLI — developer tools for checkout integration",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"commander": "^13.0.0",
|
|
19
19
|
"chalk": "^5.4.0",
|
|
20
20
|
"ora": "^8.2.0",
|
|
21
|
-
"@vonpay/checkout-node": "0.
|
|
21
|
+
"@vonpay/checkout-node": "0.7.1"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
24
|
"typescript": "^5.7.0",
|