@vonpay/checkout-cli 0.5.0 → 0.5.2
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 +9 -0
- package/dist/commands/checkout.d.ts.map +1 -1
- package/dist/commands/checkout.js +2 -0
- package/dist/commands/checkout.js.map +1 -1
- package/dist/commands/logout.d.ts +3 -0
- package/dist/commands/logout.d.ts.map +1 -0
- package/dist/commands/logout.js +23 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/payment-intents.d.ts +25 -1
- package/dist/commands/payment-intents.d.ts.map +1 -1
- package/dist/commands/payment-intents.js +52 -13
- package/dist/commands/payment-intents.js.map +1 -1
- package/dist/commands/trigger.d.ts +13 -1
- package/dist/commands/trigger.d.ts.map +1 -1
- package/dist/commands/trigger.js +76 -4
- package/dist/commands/trigger.js.map +1 -1
- package/dist/config.d.ts +11 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +29 -1
- package/dist/config.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -20,6 +20,14 @@ vonpay checkout login
|
|
|
20
20
|
|
|
21
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
|
+
The key is stored in plaintext (owner-only `0600`), so remove it before sharing or decommissioning a machine:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
vonpay checkout logout
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
`logout` deletes the stored key (and the config file if nothing else remains). It does not unset `VON_PAY_SECRET_KEY` — if that environment variable is set it still takes precedence, so `unset` it to fully log out of the shell.
|
|
30
|
+
|
|
23
31
|
## Commands
|
|
24
32
|
|
|
25
33
|
All commands are namespaced under `vonpay checkout`:
|
|
@@ -27,6 +35,7 @@ All commands are namespaced under `vonpay checkout`:
|
|
|
27
35
|
| Command | Purpose |
|
|
28
36
|
|---|---|
|
|
29
37
|
| `vonpay checkout login` | Save API key to `~/.vonpay/config.json` |
|
|
38
|
+
| `vonpay checkout logout` | Remove the stored API key from `~/.vonpay/config.json` |
|
|
30
39
|
| `vonpay checkout init` | Scaffold a minimal checkout integration starter |
|
|
31
40
|
| `vonpay checkout sessions create` | Create a hosted-checkout session and print the URL |
|
|
32
41
|
| `vonpay checkout sessions get <id>` | Fetch session details |
|
|
@@ -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;AAcpC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiBvD"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { loginCommand } from "./login.js";
|
|
2
|
+
import { logoutCommand } from "./logout.js";
|
|
2
3
|
import { initCommand } from "./init.js";
|
|
3
4
|
import { sessionsCommand } from "./sessions.js";
|
|
4
5
|
import { paymentIntentsCommand } from "./payment-intents.js";
|
|
@@ -14,6 +15,7 @@ export function registerCheckout(program) {
|
|
|
14
15
|
.command("checkout")
|
|
15
16
|
.description("Checkout integration tools");
|
|
16
17
|
checkout.addCommand(loginCommand());
|
|
18
|
+
checkout.addCommand(logoutCommand());
|
|
17
19
|
checkout.addCommand(initCommand());
|
|
18
20
|
checkout.addCommand(sessionsCommand());
|
|
19
21
|
checkout.addCommand(paymentIntentsCommand());
|
|
@@ -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,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;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;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,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,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;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,aAAa,EAAE,CAAC,CAAC;IACrC,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;IACrC,QAAQ,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,aAAa,IAAI,OAAO,CA2BvC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
import { clearStoredApiKey } from "../config.js";
|
|
4
|
+
export function logoutCommand() {
|
|
5
|
+
return new Command("logout")
|
|
6
|
+
.description("Remove the stored API key from ~/.vonpay/config.json")
|
|
7
|
+
.action(() => {
|
|
8
|
+
const { removed } = clearStoredApiKey();
|
|
9
|
+
if (removed) {
|
|
10
|
+
console.log(chalk.green("✓ Stored API key removed from ~/.vonpay/config.json"));
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
console.log(chalk.dim("No stored API key found in ~/.vonpay/config.json"));
|
|
14
|
+
}
|
|
15
|
+
// The stored key is gone, but an env var still takes precedence in
|
|
16
|
+
// `getApiKey()` — surface that so the user isn't surprised the CLI is
|
|
17
|
+
// still authenticated after a logout.
|
|
18
|
+
if (process.env.VON_PAY_SECRET_KEY) {
|
|
19
|
+
console.warn(chalk.yellow("Note: VON_PAY_SECRET_KEY is still set in your environment and takes precedence over the stored config. Run `unset VON_PAY_SECRET_KEY` to fully log out of this shell."));
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=logout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,MAAM,UAAU,aAAa;IAC3B,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC;SACzB,WAAW,CAAC,sDAAsD,CAAC;SACnE,MAAM,CAAC,GAAG,EAAE;QACX,MAAM,EAAE,OAAO,EAAE,GAAG,iBAAiB,EAAE,CAAC;QAExC,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CAAC,qDAAqD,CAAC,CACnE,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAC9D,CAAC;QACJ,CAAC;QAED,mEAAmE;QACnE,sEAAsE;QACtE,sCAAsC;QACtC,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC;YACnC,OAAO,CAAC,IAAI,CACV,KAAK,CAAC,MAAM,CACV,uKAAuK,CACxK,CACF,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
|
-
import type { MITBlock } from "@vonpay/checkout-node";
|
|
2
|
+
import type { CreatePaymentIntentParams, MITBlock } from "@vonpay/checkout-node";
|
|
3
3
|
interface CreateOpts {
|
|
4
4
|
amount: number;
|
|
5
5
|
currency: string;
|
|
@@ -8,14 +8,38 @@ interface CreateOpts {
|
|
|
8
8
|
mitInitiator?: string;
|
|
9
9
|
mitReason?: string;
|
|
10
10
|
mitOriginalTransactionId?: string;
|
|
11
|
+
paymentMethod?: string;
|
|
12
|
+
sessionId?: string;
|
|
13
|
+
buyerId?: string;
|
|
14
|
+
buyerEmail?: string;
|
|
11
15
|
idempotencyKey?: string;
|
|
12
16
|
confirmLive?: boolean;
|
|
13
17
|
json?: boolean;
|
|
14
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Assemble the create-intent body from parsed flags.
|
|
21
|
+
*
|
|
22
|
+
* Extracted from the action handler so the wiring is TESTABLE. A flag can be
|
|
23
|
+
* declared on the command and never reach the SDK call — and for
|
|
24
|
+
* `--payment-method`, `--session-id` and `--buyer-id` that failure is silent
|
|
25
|
+
* and expensive: the first names the saved card to bill, the other two are
|
|
26
|
+
* money-safety controls that only apply when actually sent.
|
|
27
|
+
*
|
|
28
|
+
* Every optional field is set only when supplied. An omitted flag must stay
|
|
29
|
+
* ABSENT rather than become an explicit `undefined` — asserting a null buyer
|
|
30
|
+
* is a different request from never asserting one. Empty strings count as
|
|
31
|
+
* not-provided, matching `buildMITBlock`.
|
|
32
|
+
*/
|
|
33
|
+
declare function buildCreateParams(opts: CreateOpts, resolved: {
|
|
34
|
+
captureMethod?: "automatic" | "manual";
|
|
35
|
+
metadata?: Record<string, string>;
|
|
36
|
+
mit?: MITBlock;
|
|
37
|
+
}): CreatePaymentIntentParams;
|
|
15
38
|
declare function buildMITBlock(opts: CreateOpts): MITBlock | undefined;
|
|
16
39
|
export declare function paymentIntentsCommand(): Command;
|
|
17
40
|
export declare const __testing__: {
|
|
18
41
|
buildMITBlock: typeof buildMITBlock;
|
|
42
|
+
buildCreateParams: typeof buildCreateParams;
|
|
19
43
|
};
|
|
20
44
|
export {};
|
|
21
45
|
//# sourceMappingURL=payment-intents.d.ts.map
|
|
@@ -1 +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,
|
|
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,EACV,yBAAyB,EAEzB,QAAQ,EAGT,MAAM,uBAAuB,CAAC;AAe/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,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;;;;;;;;;;;;GAaG;AACH,iBAAS,iBAAiB,CACxB,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE;IACR,aAAa,CAAC,EAAE,WAAW,GAAG,QAAQ,CAAC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,GAAG,CAAC,EAAE,QAAQ,CAAC;CAChB,GACA,yBAAyB,CAgC3B;AAED,iBAAS,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,QAAQ,GAAG,SAAS,CAgC7D;AAoDD,wBAAgB,qBAAqB,IAAI,OAAO,CAqM/C;AAED,eAAO,MAAM,WAAW;;;CAGvB,CAAC"}
|
|
@@ -13,6 +13,52 @@ const MIT_REASONS = [
|
|
|
13
13
|
"unscheduled",
|
|
14
14
|
"installment",
|
|
15
15
|
];
|
|
16
|
+
/**
|
|
17
|
+
* Assemble the create-intent body from parsed flags.
|
|
18
|
+
*
|
|
19
|
+
* Extracted from the action handler so the wiring is TESTABLE. A flag can be
|
|
20
|
+
* declared on the command and never reach the SDK call — and for
|
|
21
|
+
* `--payment-method`, `--session-id` and `--buyer-id` that failure is silent
|
|
22
|
+
* and expensive: the first names the saved card to bill, the other two are
|
|
23
|
+
* money-safety controls that only apply when actually sent.
|
|
24
|
+
*
|
|
25
|
+
* Every optional field is set only when supplied. An omitted flag must stay
|
|
26
|
+
* ABSENT rather than become an explicit `undefined` — asserting a null buyer
|
|
27
|
+
* is a different request from never asserting one. Empty strings count as
|
|
28
|
+
* not-provided, matching `buildMITBlock`.
|
|
29
|
+
*/
|
|
30
|
+
function buildCreateParams(opts, resolved) {
|
|
31
|
+
const params = {
|
|
32
|
+
amount: opts.amount,
|
|
33
|
+
currency: opts.currency.toUpperCase(),
|
|
34
|
+
};
|
|
35
|
+
if (resolved.captureMethod !== undefined) {
|
|
36
|
+
params.captureMethod = resolved.captureMethod;
|
|
37
|
+
}
|
|
38
|
+
if (resolved.metadata !== undefined) {
|
|
39
|
+
params.metadata = resolved.metadata;
|
|
40
|
+
}
|
|
41
|
+
if (resolved.mit !== undefined) {
|
|
42
|
+
params.mit = resolved.mit;
|
|
43
|
+
}
|
|
44
|
+
const paymentMethodId = opts.paymentMethod?.trim();
|
|
45
|
+
if (paymentMethodId) {
|
|
46
|
+
params.paymentMethod = { id: paymentMethodId };
|
|
47
|
+
}
|
|
48
|
+
const sessionId = opts.sessionId?.trim();
|
|
49
|
+
if (sessionId) {
|
|
50
|
+
params.sessionId = sessionId;
|
|
51
|
+
}
|
|
52
|
+
const buyerId = opts.buyerId?.trim();
|
|
53
|
+
if (buyerId) {
|
|
54
|
+
params.buyerId = buyerId;
|
|
55
|
+
}
|
|
56
|
+
const buyerEmail = opts.buyerEmail?.trim();
|
|
57
|
+
if (buyerEmail) {
|
|
58
|
+
params.buyerEmail = buyerEmail;
|
|
59
|
+
}
|
|
60
|
+
return params;
|
|
61
|
+
}
|
|
16
62
|
function buildMITBlock(opts) {
|
|
17
63
|
// Treat empty string as not provided — `--mit-original-transaction-id ""`
|
|
18
64
|
// would otherwise build a malformed MIT block that the server may reject
|
|
@@ -80,6 +126,10 @@ export function paymentIntentsCommand() {
|
|
|
80
126
|
.option("--mit-initiator <initiator>", `MIT initiator (${MIT_INITIATORS.join(" | ")})`)
|
|
81
127
|
.option("--mit-reason <reason>", `MIT reason (${MIT_REASONS.join(" | ")})`)
|
|
82
128
|
.option("--mit-original-transaction-id <id>", "Cardholder-initiated anchor payment intent ID (vpi_*)")
|
|
129
|
+
.option("--payment-method <id>", "Stored card to charge (vp_pmt_*). Required for saved-card / recurring charges — --mit alone declares the charge merchant-initiated but does not say which card to bill")
|
|
130
|
+
.option("--session-id <id>", "Checkout session this charge belongs to (vp_cs_*). Arms the double-charge guard: refused if that session already charged at submit. Safe to always send")
|
|
131
|
+
.option("--buyer-id <id>", "Your customer reference. Send on EVERY saved-card charge — it is what makes the server reject a charge against the wrong customer's stored card")
|
|
132
|
+
.option("--buyer-email <email>", "Buyer email for this charge")
|
|
83
133
|
.option("--idempotency-key <key>", "Idempotency key for safe retries")
|
|
84
134
|
.option("--confirm-live", CONFIRM_LIVE_DESCRIPTION)
|
|
85
135
|
.option("--json", "Output raw JSON")
|
|
@@ -99,19 +149,7 @@ export function paymentIntentsCommand() {
|
|
|
99
149
|
}
|
|
100
150
|
const metadata = parseMetadata(opts.metadata);
|
|
101
151
|
const mit = buildMITBlock(opts);
|
|
102
|
-
const params = {
|
|
103
|
-
amount: opts.amount,
|
|
104
|
-
currency: opts.currency.toUpperCase(),
|
|
105
|
-
};
|
|
106
|
-
if (captureMethod !== undefined) {
|
|
107
|
-
params.captureMethod = captureMethod;
|
|
108
|
-
}
|
|
109
|
-
if (metadata !== undefined) {
|
|
110
|
-
params.metadata = metadata;
|
|
111
|
-
}
|
|
112
|
-
if (mit !== undefined) {
|
|
113
|
-
params.mit = mit;
|
|
114
|
-
}
|
|
152
|
+
const params = buildCreateParams(opts, { captureMethod, metadata, mit });
|
|
115
153
|
const intent = await client.paymentIntents.create(params, opts.idempotencyKey
|
|
116
154
|
? { idempotencyKey: opts.idempotencyKey }
|
|
117
155
|
: undefined);
|
|
@@ -199,5 +237,6 @@ export function paymentIntentsCommand() {
|
|
|
199
237
|
}
|
|
200
238
|
export const __testing__ = {
|
|
201
239
|
buildMITBlock,
|
|
240
|
+
buildCreateParams,
|
|
202
241
|
};
|
|
203
242
|
//# sourceMappingURL=payment-intents.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payment-intents.js","sourceRoot":"","sources":["../../src/commands/payment-intents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AAQtB,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,sBAAsB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,MAAM,cAAc,GAA4B,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AACzE,MAAM,WAAW,GAAyB;IACxC,WAAW;IACX,aAAa;IACb,aAAa;CACd,CAAC;
|
|
1
|
+
{"version":3,"file":"payment-intents.js","sourceRoot":"","sources":["../../src/commands/payment-intents.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
|
-
export declare const SUPPORTED_EVENTS: readonly ["
|
|
2
|
+
export declare const SUPPORTED_EVENTS: readonly ["charge.succeeded", "charge.failed", "charge.refunded", "refund.failed", "payment_intent.succeeded", "payment_intent.failed", "payment_intent.cancelled", "session.succeeded", "session.failed"];
|
|
3
|
+
/**
|
|
4
|
+
* Event keys the server emits but no merchant can subscribe to. Triggering one
|
|
5
|
+
* locally works, but an endpoint will never receive it in staging or
|
|
6
|
+
* production, so a handler tested only against these is untested.
|
|
7
|
+
*/
|
|
8
|
+
export declare const UNSUBSCRIBABLE_EVENTS: readonly SupportedEvent[];
|
|
9
|
+
/**
|
|
10
|
+
* Print a warning when the developer triggers an event they will never receive
|
|
11
|
+
* in a real environment. Returns whether a warning was emitted so this stays
|
|
12
|
+
* testable without capturing stdout.
|
|
13
|
+
*/
|
|
14
|
+
export declare function warnIfUnsubscribable(event: SupportedEvent, write?: (msg: string) => void): boolean;
|
|
3
15
|
type SupportedEvent = (typeof SUPPORTED_EVENTS)[number];
|
|
4
16
|
interface WebhookEnvelope {
|
|
5
17
|
id: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trigger.d.ts","sourceRoot":"","sources":["../../src/commands/trigger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"trigger.d.ts","sourceRoot":"","sources":["../../src/commands/trigger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmBpC,eAAO,MAAM,gBAAgB,4MAUnB,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAE,SAAS,cAAc,EAG1D,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,cAAc,EACrB,KAAK,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAA6B,GACpD,OAAO,CAYT;AACD,KAAK,cAAc,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAMxD,UAAU,eAAe;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AA6ED,wBAAgB,YAAY,CAC1B,KAAK,EAAE,cAAc,EACrB,IAAI,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/D,eAAe,CAgBjB;AAED,wBAAgB,cAAc,IAAI,OAAO,CA0FxC"}
|
package/dist/commands/trigger.js
CHANGED
|
@@ -5,14 +5,52 @@ import ora from "ora";
|
|
|
5
5
|
import { requireApiKey } from "../config.js";
|
|
6
6
|
// Real server-emitted event keys this local trigger can synthesize. The
|
|
7
7
|
// fictional `refund.created` was removed — the server emits `charge.refunded`.
|
|
8
|
+
//
|
|
9
|
+
// ⚠️ ORDER MATTERS: `charge.*` first, because those are the keys a merchant can
|
|
10
|
+
// actually SUBSCRIBE to, and this list is what `--help` prints. `session.*` are
|
|
11
|
+
// emitted internally but are absent from the merchant subscription catalog,
|
|
12
|
+
// which accepts an unknown key, stores nothing and returns success — so an
|
|
13
|
+
// endpoint subscribed to one receives nothing, forever. They stay triggerable
|
|
14
|
+
// (removing them would break anyone scripting against this command) but
|
|
15
|
+
// `warnIfUnsubscribable` below says so at the point of use. Until 0.5.2 this
|
|
16
|
+
// list offered `session.succeeded` and NOT `charge.succeeded`, so the only
|
|
17
|
+
// fulfilment event a merchant can receive was the one event this tool could not
|
|
18
|
+
// synthesize.
|
|
8
19
|
export const SUPPORTED_EVENTS = [
|
|
9
|
-
"
|
|
10
|
-
"
|
|
20
|
+
"charge.succeeded",
|
|
21
|
+
"charge.failed",
|
|
22
|
+
"charge.refunded",
|
|
23
|
+
"refund.failed",
|
|
11
24
|
"payment_intent.succeeded",
|
|
12
25
|
"payment_intent.failed",
|
|
13
26
|
"payment_intent.cancelled",
|
|
14
|
-
"
|
|
27
|
+
"session.succeeded",
|
|
28
|
+
"session.failed",
|
|
15
29
|
];
|
|
30
|
+
/**
|
|
31
|
+
* Event keys the server emits but no merchant can subscribe to. Triggering one
|
|
32
|
+
* locally works, but an endpoint will never receive it in staging or
|
|
33
|
+
* production, so a handler tested only against these is untested.
|
|
34
|
+
*/
|
|
35
|
+
export const UNSUBSCRIBABLE_EVENTS = [
|
|
36
|
+
"session.succeeded",
|
|
37
|
+
"session.failed",
|
|
38
|
+
];
|
|
39
|
+
/**
|
|
40
|
+
* Print a warning when the developer triggers an event they will never receive
|
|
41
|
+
* in a real environment. Returns whether a warning was emitted so this stays
|
|
42
|
+
* testable without capturing stdout.
|
|
43
|
+
*/
|
|
44
|
+
export function warnIfUnsubscribable(event, write = (m) => console.warn(m)) {
|
|
45
|
+
if (!UNSUBSCRIBABLE_EVENTS.includes(event))
|
|
46
|
+
return false;
|
|
47
|
+
const suggestion = event === "session.succeeded" ? "charge.succeeded" : "charge.failed";
|
|
48
|
+
write(chalk.yellow(`⚠ ${event} is emitted internally but is NOT subscribable.\n` +
|
|
49
|
+
` The subscription API accepts the key, stores nothing and returns success, so a\n` +
|
|
50
|
+
` real endpoint receives this event NEVER — a handler tested only against it is\n` +
|
|
51
|
+
` untested. Use ${suggestion} instead.`));
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
16
54
|
// Per-event `data` shapes matching the server's buildEventData() for the
|
|
17
55
|
// events this trigger supports. Synthetic-but-realistic values; the failure
|
|
18
56
|
// fixtures use codes already on the normalized allowlist.
|
|
@@ -28,6 +66,8 @@ function buildEventData(event, ids, amount, currency) {
|
|
|
28
66
|
case "session.succeeded":
|
|
29
67
|
case "payment_intent.succeeded":
|
|
30
68
|
return base;
|
|
69
|
+
case "charge.succeeded":
|
|
70
|
+
return { ...base, card: null };
|
|
31
71
|
case "session.failed":
|
|
32
72
|
case "payment_intent.failed":
|
|
33
73
|
return {
|
|
@@ -36,15 +76,46 @@ function buildEventData(event, ids, amount, currency) {
|
|
|
36
76
|
failure_code: "card_declined",
|
|
37
77
|
network_decline_code: "05",
|
|
38
78
|
};
|
|
79
|
+
case "charge.failed":
|
|
80
|
+
return {
|
|
81
|
+
...base,
|
|
82
|
+
failure_reason: "Card declined",
|
|
83
|
+
failure_code: "card_declined",
|
|
84
|
+
// Non-null ONLY when failure_code is `blocked_by_rule`; this fixture is
|
|
85
|
+
// an ordinary decline, so a consumer must see the null.
|
|
86
|
+
rule_code: null,
|
|
87
|
+
network_decline_code: "05",
|
|
88
|
+
};
|
|
39
89
|
case "payment_intent.cancelled":
|
|
40
90
|
return { ...base, cancellation_reason: "buyer_abandoned" };
|
|
41
91
|
case "charge.refunded":
|
|
42
92
|
return {
|
|
43
93
|
...base,
|
|
44
94
|
refund_id: `vpr_test_${randomUUID().slice(0, 8)}`,
|
|
95
|
+
// The two unambiguous companions to `amount`. The server has emitted
|
|
96
|
+
// both for some time; omitting them here made a handler that reads them
|
|
97
|
+
// look broken against a synthetic event.
|
|
98
|
+
refund_amount: amount,
|
|
99
|
+
amount_refunded_total: amount,
|
|
100
|
+
reason: "customer_request",
|
|
101
|
+
is_partial: false,
|
|
102
|
+
original_charge_amount: amount,
|
|
103
|
+
card: null,
|
|
104
|
+
};
|
|
105
|
+
case "refund.failed":
|
|
106
|
+
return {
|
|
107
|
+
...base,
|
|
108
|
+
refund_id: `vpr_test_${randomUUID().slice(0, 8)}`,
|
|
109
|
+
// No money moved: this is the reversal amount that FAILED to move.
|
|
110
|
+
refund_amount: amount,
|
|
111
|
+
amount_refunded_total: 0,
|
|
45
112
|
reason: "customer_request",
|
|
113
|
+
// LOCKED two-value refund vocabulary — `refund_declined` (terminal) or
|
|
114
|
+
// `refund_unresolved` (no provider response, true state unknown).
|
|
115
|
+
reason_code: "refund_declined",
|
|
46
116
|
is_partial: false,
|
|
47
117
|
original_charge_amount: amount,
|
|
118
|
+
retry_available: true,
|
|
48
119
|
card: null,
|
|
49
120
|
};
|
|
50
121
|
}
|
|
@@ -53,7 +124,7 @@ export function buildPayload(event, opts) {
|
|
|
53
124
|
const amount = opts.amount ?? 1499;
|
|
54
125
|
const currency = opts.currency ?? "USD";
|
|
55
126
|
const ids = {
|
|
56
|
-
sessionId: opts.sessionId ?? `
|
|
127
|
+
sessionId: opts.sessionId ?? `vp_cs_test_${randomUUID().slice(0, 8)}`,
|
|
57
128
|
transactionId: `vp_tx_test_${randomUUID().slice(0, 8)}`,
|
|
58
129
|
paymentIntentId: `vpi_test_${randomUUID().slice(0, 8)}`,
|
|
59
130
|
};
|
|
@@ -79,6 +150,7 @@ export function triggerCommand() {
|
|
|
79
150
|
console.error(chalk.red(`Unknown event: ${event}\nSupported: ${SUPPORTED_EVENTS.join(", ")}`));
|
|
80
151
|
process.exit(1);
|
|
81
152
|
}
|
|
153
|
+
warnIfUnsubscribable(event);
|
|
82
154
|
const apiKey = requireApiKey();
|
|
83
155
|
const payload = buildPayload(event, opts);
|
|
84
156
|
const body = JSON.stringify(payload);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trigger.js","sourceRoot":"","sources":["../../src/commands/trigger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,wEAAwE;AACxE,+EAA+E;AAC/E,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,
|
|
1
|
+
{"version":3,"file":"trigger.js","sourceRoot":"","sources":["../../src/commands/trigger.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -6,6 +6,17 @@ export interface CliConfig {
|
|
|
6
6
|
}
|
|
7
7
|
export declare function loadConfig(): CliConfig;
|
|
8
8
|
export declare function saveConfig(config: CliConfig): void;
|
|
9
|
+
/**
|
|
10
|
+
* Remove the stored API key from `~/.vonpay/config.json` (the `logout` flow).
|
|
11
|
+
* Drops only the secret — any non-secret config (e.g. `baseUrl`) is preserved —
|
|
12
|
+
* and deletes the file entirely if nothing else remains, so a clean logout
|
|
13
|
+
* leaves no plaintext-key husk on disk. Does NOT touch `VON_PAY_SECRET_KEY` in
|
|
14
|
+
* the environment (the caller surfaces that, since it still takes precedence).
|
|
15
|
+
* Returns whether a stored key was actually present.
|
|
16
|
+
*/
|
|
17
|
+
export declare function clearStoredApiKey(): {
|
|
18
|
+
removed: boolean;
|
|
19
|
+
};
|
|
9
20
|
export declare function getApiKey(): string | undefined;
|
|
10
21
|
export declare function requireApiKey(): string;
|
|
11
22
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE;QACT,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,wBAAgB,UAAU,IAAI,SAAS,CAUtC;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAQlD;AAED,wBAAgB,SAAS,IAAI,MAAM,GAAG,SAAS,CAO9C;AAED,wBAAgB,aAAa,IAAI,MAAM,CAStC"}
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE;QACT,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,wBAAgB,UAAU,IAAI,SAAS,CAUtC;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAQlD;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,IAAI;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAkBxD;AAED,wBAAgB,SAAS,IAAI,MAAM,GAAG,SAAS,CAO9C;AAED,wBAAgB,aAAa,IAAI,MAAM,CAStC"}
|
package/dist/config.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
1
|
+
import { existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from "node:fs";
|
|
2
2
|
import { homedir } from "node:os";
|
|
3
3
|
import { join } from "node:path";
|
|
4
4
|
const CONFIG_DIR = join(homedir(), ".vonpay");
|
|
@@ -23,6 +23,34 @@ export function saveConfig(config) {
|
|
|
23
23
|
mode: 0o600,
|
|
24
24
|
});
|
|
25
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Remove the stored API key from `~/.vonpay/config.json` (the `logout` flow).
|
|
28
|
+
* Drops only the secret — any non-secret config (e.g. `baseUrl`) is preserved —
|
|
29
|
+
* and deletes the file entirely if nothing else remains, so a clean logout
|
|
30
|
+
* leaves no plaintext-key husk on disk. Does NOT touch `VON_PAY_SECRET_KEY` in
|
|
31
|
+
* the environment (the caller surfaces that, since it still takes precedence).
|
|
32
|
+
* Returns whether a stored key was actually present.
|
|
33
|
+
*/
|
|
34
|
+
export function clearStoredApiKey() {
|
|
35
|
+
const config = loadConfig();
|
|
36
|
+
// Nothing to remove → touch nothing on disk (no redundant rewrite, and a
|
|
37
|
+
// malformed/parse-failed config is left alone rather than silently deleted).
|
|
38
|
+
if (!config.checkout?.apiKey)
|
|
39
|
+
return { removed: false };
|
|
40
|
+
delete config.checkout.apiKey;
|
|
41
|
+
// Drop an emptied `checkout` block so we don't persist a bare `{}` husk.
|
|
42
|
+
if (Object.keys(config.checkout).length === 0)
|
|
43
|
+
delete config.checkout;
|
|
44
|
+
if (Object.keys(config).length === 0) {
|
|
45
|
+
// Nothing left to persist — remove the file so logout leaves no trace.
|
|
46
|
+
// `force` tolerates a concurrent delete (no uncaught ENOENT on a TOCTOU race).
|
|
47
|
+
rmSync(CONFIG_FILE, { force: true });
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
saveConfig(config);
|
|
51
|
+
}
|
|
52
|
+
return { removed: true };
|
|
53
|
+
}
|
|
26
54
|
export function getApiKey() {
|
|
27
55
|
// Env var takes precedence
|
|
28
56
|
const envKey = process.env.VON_PAY_SECRET_KEY;
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACrF,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AASpD,MAAM,UAAU,UAAU;IACxB,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,EAAE,CAAC;IACxC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAc,CAAC;IACrE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CACX,uFAAuF,CACxF,CAAC;QACF,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAiB;IAC1C,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE;QACjE,QAAQ,EAAE,OAAO;QACjB,IAAI,EAAE,KAAK;KACZ,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,yEAAyE;IACzE,6EAA6E;IAC7E,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAExD,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC9B,yEAAyE;IACzE,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC,QAAQ,CAAC;IAEtE,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrC,uEAAuE;QACvE,+EAA+E;QAC/E,MAAM,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC;SAAM,CAAC;QACN,UAAU,CAAC,MAAM,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,2BAA2B;IAC3B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;IAC9C,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,OAAO,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IACxB,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,CAAC,KAAK,CACX,0EAA0E,CAC3E,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vonpay/checkout-cli",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.2",
|
|
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": "
|
|
21
|
+
"@vonpay/checkout-node": "1.1.0"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
24
|
"typescript": "^5.7.0",
|