@paylobster/cli 4.5.0 → 4.6.1
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/EXAMPLES.md +61 -61
- package/dist/src/commands/alerts.d.ts +3 -0
- package/dist/src/commands/alerts.d.ts.map +1 -0
- package/dist/src/commands/alerts.js +181 -0
- package/dist/src/commands/alerts.js.map +1 -0
- package/dist/src/commands/init.d.ts +3 -0
- package/dist/src/commands/init.d.ts.map +1 -0
- package/dist/src/commands/init.js +232 -0
- package/dist/src/commands/init.js.map +1 -0
- package/dist/src/commands/link.d.ts +6 -0
- package/dist/src/commands/link.d.ts.map +1 -0
- package/dist/src/commands/link.js +188 -0
- package/dist/src/commands/link.js.map +1 -0
- package/dist/src/commands/refund.d.ts +6 -0
- package/dist/src/commands/refund.d.ts.map +1 -0
- package/dist/src/commands/refund.js +199 -0
- package/dist/src/commands/refund.js.map +1 -0
- package/dist/src/commands/swap.d.ts.map +1 -1
- package/dist/src/commands/swap.js +93 -1
- package/dist/src/commands/swap.js.map +1 -1
- package/dist/src/commands/webhook.d.ts +6 -0
- package/dist/src/commands/webhook.d.ts.map +1 -0
- package/dist/src/commands/webhook.js +208 -0
- package/dist/src/commands/webhook.js.map +1 -0
- package/dist/src/index.js +10 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/lib/contracts.d.ts +23 -161
- package/dist/src/lib/contracts.d.ts.map +1 -1
- package/dist/src/lib/contracts.js +6 -6
- package/dist/src/lib/contracts.js.map +1 -1
- package/package.json +1 -1
- package/src/commands/alerts.ts +210 -0
- package/src/commands/init.ts +256 -0
- package/src/commands/link.ts +240 -0
- package/src/commands/refund.ts +250 -0
- package/src/commands/swap.ts +120 -1
- package/src/commands/webhook.ts +260 -0
- package/src/index.ts +10 -0
- package/src/lib/contracts.ts +6 -6
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createInitCommand = createInitCommand;
|
|
7
|
+
const commander_1 = require("commander");
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
const ora_1 = __importDefault(require("ora"));
|
|
10
|
+
const readline_1 = __importDefault(require("readline"));
|
|
11
|
+
const fs_1 = __importDefault(require("fs"));
|
|
12
|
+
const path_1 = __importDefault(require("path"));
|
|
13
|
+
const crypto_1 = __importDefault(require("crypto"));
|
|
14
|
+
const child_process_1 = require("child_process");
|
|
15
|
+
const util_1 = require("util");
|
|
16
|
+
const execAsync = (0, util_1.promisify)(child_process_1.exec);
|
|
17
|
+
const CONFIG_DIR = path_1.default.join(process.env.HOME || '~', '.paylobster');
|
|
18
|
+
const CONFIG_FILE = path_1.default.join(CONFIG_DIR, 'config.json');
|
|
19
|
+
const CREDENTIALS_FILE = path_1.default.join(CONFIG_DIR, 'credentials');
|
|
20
|
+
function prompt(question) {
|
|
21
|
+
const rl = readline_1.default.createInterface({
|
|
22
|
+
input: process.stdin,
|
|
23
|
+
output: process.stdout,
|
|
24
|
+
});
|
|
25
|
+
return new Promise((resolve) => {
|
|
26
|
+
rl.question(question, (answer) => {
|
|
27
|
+
rl.close();
|
|
28
|
+
resolve(answer.trim());
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
function selectPrompt(question, options) {
|
|
33
|
+
return new Promise((resolve) => {
|
|
34
|
+
const rl = readline_1.default.createInterface({
|
|
35
|
+
input: process.stdin,
|
|
36
|
+
output: process.stdout,
|
|
37
|
+
});
|
|
38
|
+
console.log(chalk_1.default.bold.white(`\n ${question}\n`));
|
|
39
|
+
options.forEach((opt, i) => {
|
|
40
|
+
console.log(chalk_1.default.cyan(` ${i + 1}) `) + chalk_1.default.white(opt.label));
|
|
41
|
+
});
|
|
42
|
+
console.log();
|
|
43
|
+
rl.question(chalk_1.default.gray(' Enter choice (number): '), (answer) => {
|
|
44
|
+
rl.close();
|
|
45
|
+
const idx = parseInt(answer.trim(), 10) - 1;
|
|
46
|
+
if (idx >= 0 && idx < options.length) {
|
|
47
|
+
resolve(options[idx].value);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
// Default to first option
|
|
51
|
+
resolve(options[0].value);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
function generateApiKey() {
|
|
57
|
+
const bytes = crypto_1.default.randomBytes(24);
|
|
58
|
+
return `pl_live_${bytes.toString('base64url').slice(0, 32)}`;
|
|
59
|
+
}
|
|
60
|
+
function ensureConfigDir() {
|
|
61
|
+
if (!fs_1.default.existsSync(CONFIG_DIR)) {
|
|
62
|
+
fs_1.default.mkdirSync(CONFIG_DIR, { recursive: true });
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
function openBrowser(url) {
|
|
66
|
+
const platform = process.platform;
|
|
67
|
+
const cmd = platform === 'darwin' ? 'open' : platform === 'win32' ? 'start' : 'xdg-open';
|
|
68
|
+
try {
|
|
69
|
+
require('child_process').execSync(`${cmd} "${url}"`, { stdio: 'ignore' });
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
console.log(chalk_1.default.gray(` Open this URL in your browser: ${url}`));
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
function createInitCommand() {
|
|
76
|
+
const cmd = new commander_1.Command('init')
|
|
77
|
+
.description('🦞 Interactive setup wizard — get started with Pay Lobster in 60 seconds')
|
|
78
|
+
.option('--wallet <address>', 'Pre-set wallet address')
|
|
79
|
+
.option('--role <role>', 'Pre-set role (developer, agent-operator, business)')
|
|
80
|
+
.option('--network <network>', 'Network to use (base, base-sepolia)', 'base')
|
|
81
|
+
.action(async (options) => {
|
|
82
|
+
// ─── Welcome Banner ───
|
|
83
|
+
console.log();
|
|
84
|
+
console.log(chalk_1.default.cyan(' ┌─────────────────────────────────────────┐'));
|
|
85
|
+
console.log(chalk_1.default.cyan(' │') + ' ' + chalk_1.default.cyan('│'));
|
|
86
|
+
console.log(chalk_1.default.cyan(' │') + chalk_1.default.bold.white(' 🦞 Welcome to Pay Lobster! ') + chalk_1.default.cyan('│'));
|
|
87
|
+
console.log(chalk_1.default.cyan(' │') + chalk_1.default.gray(' Payments made simple on Base ') + chalk_1.default.cyan('│'));
|
|
88
|
+
console.log(chalk_1.default.cyan(' │') + ' ' + chalk_1.default.cyan('│'));
|
|
89
|
+
console.log(chalk_1.default.cyan(' └─────────────────────────────────────────┘'));
|
|
90
|
+
console.log();
|
|
91
|
+
console.log(chalk_1.default.gray(' Let\'s get you set up in under 60 seconds.\n'));
|
|
92
|
+
// ─── Step 1: Wallet Address ───
|
|
93
|
+
console.log(chalk_1.default.bold.blue(' Step 1 of 3') + chalk_1.default.gray(' — Connect your wallet\n'));
|
|
94
|
+
let walletAddress = options.wallet || '';
|
|
95
|
+
if (!walletAddress) {
|
|
96
|
+
const walletChoice = await selectPrompt('How would you like to connect?', [
|
|
97
|
+
{ label: '📋 Enter an existing wallet address', value: 'enter' },
|
|
98
|
+
{ label: '🌐 Create a Smart Wallet (opens browser)', value: 'create' },
|
|
99
|
+
]);
|
|
100
|
+
if (walletChoice === 'create') {
|
|
101
|
+
const spinner = (0, ora_1.default)({
|
|
102
|
+
text: chalk_1.default.white('Opening Pay Lobster to create your wallet...'),
|
|
103
|
+
spinner: 'dots',
|
|
104
|
+
}).start();
|
|
105
|
+
openBrowser('https://paylobster.com/onboard?source=cli');
|
|
106
|
+
spinner.succeed(chalk_1.default.green('Browser opened!'));
|
|
107
|
+
console.log(chalk_1.default.gray(' Create your wallet with just a passkey — no seed phrase needed.\n'));
|
|
108
|
+
walletAddress = await prompt(chalk_1.default.white(' Paste your wallet address here: '));
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
walletAddress = await prompt(chalk_1.default.white(' Enter your wallet address (0x...): '));
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
// Validate address format
|
|
115
|
+
if (!walletAddress.match(/^0x[a-fA-F0-9]{40}$/)) {
|
|
116
|
+
if (walletAddress.length > 0) {
|
|
117
|
+
console.log(chalk_1.default.yellow('\n ⚠ That doesn\'t look like a valid address, but we\'ll save it anyway.'));
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
walletAddress = '0x0000000000000000000000000000000000000000';
|
|
121
|
+
console.log(chalk_1.default.gray('\n No address provided — you can set one later with: paylobster config set wallet <address>'));
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
console.log(chalk_1.default.green(`\n ✓ Wallet: ${walletAddress.slice(0, 6)}...${walletAddress.slice(-4)}\n`));
|
|
126
|
+
}
|
|
127
|
+
// ─── Step 2: Role ───
|
|
128
|
+
console.log(chalk_1.default.bold.blue(' Step 2 of 3') + chalk_1.default.gray(' — Tell us about yourself\n'));
|
|
129
|
+
let role = options.role || '';
|
|
130
|
+
if (!role) {
|
|
131
|
+
role = await selectPrompt('What best describes you?', [
|
|
132
|
+
{ label: '💻 Developer — building with the SDK or API', value: 'developer' },
|
|
133
|
+
{ label: '🤖 Agent operator — running AI agents', value: 'agent-operator' },
|
|
134
|
+
{ label: '🏢 Business — accepting payments', value: 'business' },
|
|
135
|
+
]);
|
|
136
|
+
}
|
|
137
|
+
const roleLabels = {
|
|
138
|
+
'developer': '💻 Developer',
|
|
139
|
+
'agent-operator': '🤖 Agent Operator',
|
|
140
|
+
'business': '🏢 Business',
|
|
141
|
+
};
|
|
142
|
+
console.log(chalk_1.default.green(`\n ✓ Role: ${roleLabels[role] || role}\n`));
|
|
143
|
+
// ─── Step 3: Generate API Key & Save Config ───
|
|
144
|
+
console.log(chalk_1.default.bold.blue(' Step 3 of 3') + chalk_1.default.gray(' — Setting up your environment\n'));
|
|
145
|
+
const spinner = (0, ora_1.default)({
|
|
146
|
+
text: chalk_1.default.white('Generating your API key...'),
|
|
147
|
+
spinner: 'dots',
|
|
148
|
+
}).start();
|
|
149
|
+
// Simulate a brief delay for UX
|
|
150
|
+
await new Promise((r) => setTimeout(r, 800));
|
|
151
|
+
const apiKey = generateApiKey();
|
|
152
|
+
const network = options.network || 'base';
|
|
153
|
+
// Save config
|
|
154
|
+
ensureConfigDir();
|
|
155
|
+
const config = {
|
|
156
|
+
version: 1,
|
|
157
|
+
wallet: walletAddress,
|
|
158
|
+
role,
|
|
159
|
+
network,
|
|
160
|
+
createdAt: new Date().toISOString(),
|
|
161
|
+
defaults: {
|
|
162
|
+
currency: 'USDC',
|
|
163
|
+
confirmations: 1,
|
|
164
|
+
...(role === 'developer' ? { testnet: true, network: 'base-sepolia' } : {}),
|
|
165
|
+
...(role === 'agent-operator' ? { autoApprove: false, maxEscrow: '100' } : {}),
|
|
166
|
+
...(role === 'business' ? { webhookUrl: '', autoSettle: true } : {}),
|
|
167
|
+
},
|
|
168
|
+
};
|
|
169
|
+
fs_1.default.writeFileSync(CONFIG_FILE, JSON.stringify(config, null, 2), 'utf-8');
|
|
170
|
+
// Save credentials
|
|
171
|
+
const credentials = [
|
|
172
|
+
`# Pay Lobster credentials`,
|
|
173
|
+
`# Generated: ${new Date().toISOString()}`,
|
|
174
|
+
`PAYLOBSTER_API_KEY=${apiKey}`,
|
|
175
|
+
`PAYLOBSTER_WALLET=${walletAddress}`,
|
|
176
|
+
`PAYLOBSTER_NETWORK=${network}`,
|
|
177
|
+
].join('\n');
|
|
178
|
+
fs_1.default.writeFileSync(CREDENTIALS_FILE, credentials, 'utf-8');
|
|
179
|
+
fs_1.default.chmodSync(CREDENTIALS_FILE, 0o600);
|
|
180
|
+
spinner.succeed(chalk_1.default.green('All set!'));
|
|
181
|
+
// ─── Summary ───
|
|
182
|
+
console.log();
|
|
183
|
+
console.log(chalk_1.default.cyan(' ┌─────────────────────────────────────────┐'));
|
|
184
|
+
console.log(chalk_1.default.cyan(' │') + chalk_1.default.bold.white(' ✅ You\'re ready to go! ') + chalk_1.default.cyan('│'));
|
|
185
|
+
console.log(chalk_1.default.cyan(' └─────────────────────────────────────────┘'));
|
|
186
|
+
console.log();
|
|
187
|
+
console.log(chalk_1.default.white(' Config saved to: ') + chalk_1.default.gray(CONFIG_FILE));
|
|
188
|
+
console.log(chalk_1.default.white(' API key saved to: ') + chalk_1.default.gray(CREDENTIALS_FILE));
|
|
189
|
+
console.log(chalk_1.default.white(' API key: ') + chalk_1.default.yellow(apiKey.slice(0, 12) + '...' + apiKey.slice(-4)));
|
|
190
|
+
console.log();
|
|
191
|
+
// ─── Next Steps (role-specific) ───
|
|
192
|
+
console.log(chalk_1.default.bold.white(' 🚀 Try your first command:\n'));
|
|
193
|
+
if (role === 'developer') {
|
|
194
|
+
console.log(chalk_1.default.gray(' # Create a test escrow'));
|
|
195
|
+
console.log(chalk_1.default.cyan(' paylobster escrow create --to 0x1234...abcd --amount 1 --desc "Test payment"'));
|
|
196
|
+
console.log();
|
|
197
|
+
console.log(chalk_1.default.gray(' # Check your reputation'));
|
|
198
|
+
console.log(chalk_1.default.cyan(' paylobster reputation check'));
|
|
199
|
+
console.log();
|
|
200
|
+
console.log(chalk_1.default.gray(' # View SDK docs'));
|
|
201
|
+
console.log(chalk_1.default.cyan(' paylobster docs --open'));
|
|
202
|
+
}
|
|
203
|
+
else if (role === 'agent-operator') {
|
|
204
|
+
console.log(chalk_1.default.gray(' # Register your AI agent'));
|
|
205
|
+
console.log(chalk_1.default.cyan(' paylobster register --name "My Agent" --type ai-agent'));
|
|
206
|
+
console.log();
|
|
207
|
+
console.log(chalk_1.default.gray(' # Create an escrow payment'));
|
|
208
|
+
console.log(chalk_1.default.cyan(' paylobster escrow create --to 0x1234...abcd --amount 5 --desc "Agent task"'));
|
|
209
|
+
console.log();
|
|
210
|
+
console.log(chalk_1.default.gray(' # Set up MCP server'));
|
|
211
|
+
console.log(chalk_1.default.cyan(' paylobster quickstart --mcp'));
|
|
212
|
+
}
|
|
213
|
+
else if (role === 'business') {
|
|
214
|
+
console.log(chalk_1.default.gray(' # Create a payment link'));
|
|
215
|
+
console.log(chalk_1.default.cyan(' paylobster pay create-link --amount 50 --desc "Invoice #001"'));
|
|
216
|
+
console.log();
|
|
217
|
+
console.log(chalk_1.default.gray(' # Check incoming payments'));
|
|
218
|
+
console.log(chalk_1.default.cyan(' paylobster dashboard'));
|
|
219
|
+
console.log();
|
|
220
|
+
console.log(chalk_1.default.gray(' # View your balance'));
|
|
221
|
+
console.log(chalk_1.default.cyan(' paylobster status'));
|
|
222
|
+
}
|
|
223
|
+
console.log();
|
|
224
|
+
console.log(chalk_1.default.gray(' ─────────────────────────────────────────'));
|
|
225
|
+
console.log(chalk_1.default.gray(' 📖 Docs: ') + chalk_1.default.blue('https://paylobster.com/docs'));
|
|
226
|
+
console.log(chalk_1.default.gray(' 💬 Support: ') + chalk_1.default.blue('https://paylobster.com/discord'));
|
|
227
|
+
console.log(chalk_1.default.gray(' 🦞 Web app: ') + chalk_1.default.blue('https://paylobster.com'));
|
|
228
|
+
console.log();
|
|
229
|
+
});
|
|
230
|
+
return cmd;
|
|
231
|
+
}
|
|
232
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../../src/commands/link.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqBpC;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAuN3C"}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createLinkCommand = createLinkCommand;
|
|
4
|
+
const commander_1 = require("commander");
|
|
5
|
+
const display_1 = require("../lib/display");
|
|
6
|
+
const API_URL = process.env.PAYLOBSTER_API_URL || 'https://paylobster.com';
|
|
7
|
+
/**
|
|
8
|
+
* Payment links command
|
|
9
|
+
*/
|
|
10
|
+
function createLinkCommand() {
|
|
11
|
+
const cmd = new commander_1.Command('link')
|
|
12
|
+
.description('Create and manage payment links');
|
|
13
|
+
// Create subcommand
|
|
14
|
+
cmd
|
|
15
|
+
.command('create')
|
|
16
|
+
.description('Create a payment link')
|
|
17
|
+
.requiredOption('--amount <amount>', 'Amount in tokens')
|
|
18
|
+
.requiredOption('--recipient <address>', 'Recipient address')
|
|
19
|
+
.option('--memo <text>', 'Payment memo/description')
|
|
20
|
+
.option('--token <symbol>', 'Token symbol', 'USDC')
|
|
21
|
+
.option('--mode <mode>', 'Payment mode: direct or escrow', 'direct')
|
|
22
|
+
.option('--expires-in <seconds>', 'Expiration time in seconds')
|
|
23
|
+
.option('--json', 'Output as JSON')
|
|
24
|
+
.action(async (options) => {
|
|
25
|
+
try {
|
|
26
|
+
// Validate recipient address
|
|
27
|
+
if (!options.recipient.startsWith('0x') || options.recipient.length !== 42) {
|
|
28
|
+
(0, display_1.error)('Invalid recipient address format');
|
|
29
|
+
process.exit(1);
|
|
30
|
+
}
|
|
31
|
+
// Validate amount
|
|
32
|
+
const amount = parseFloat(options.amount);
|
|
33
|
+
if (isNaN(amount) || amount <= 0) {
|
|
34
|
+
(0, display_1.error)('Invalid amount. Must be a positive number');
|
|
35
|
+
process.exit(1);
|
|
36
|
+
}
|
|
37
|
+
// Validate mode
|
|
38
|
+
if (options.mode && !['direct', 'escrow'].includes(options.mode)) {
|
|
39
|
+
(0, display_1.error)('Mode must be either "direct" or "escrow"');
|
|
40
|
+
process.exit(1);
|
|
41
|
+
}
|
|
42
|
+
const link = await (0, display_1.withSpinner)('Creating payment link...', async () => {
|
|
43
|
+
const response = await fetch(`${API_URL}/api/v3/links`, {
|
|
44
|
+
method: 'POST',
|
|
45
|
+
headers: {
|
|
46
|
+
'Content-Type': 'application/json',
|
|
47
|
+
},
|
|
48
|
+
body: JSON.stringify({
|
|
49
|
+
amount: options.amount,
|
|
50
|
+
recipient: options.recipient,
|
|
51
|
+
memo: options.memo,
|
|
52
|
+
token: options.token,
|
|
53
|
+
mode: options.mode,
|
|
54
|
+
expiresIn: options.expiresIn ? parseInt(options.expiresIn) : undefined,
|
|
55
|
+
}),
|
|
56
|
+
});
|
|
57
|
+
if (!response.ok) {
|
|
58
|
+
const err = await response.json();
|
|
59
|
+
throw new Error(err.error || 'Failed to create payment link');
|
|
60
|
+
}
|
|
61
|
+
return response.json();
|
|
62
|
+
});
|
|
63
|
+
if ((0, display_1.outputJSON)(link, options)) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
(0, display_1.success)('Payment link created!');
|
|
67
|
+
console.log();
|
|
68
|
+
console.log(' Link ID: ', link.id);
|
|
69
|
+
console.log(' URL: ', link.url);
|
|
70
|
+
console.log(' Amount: ', link.amount, link.token);
|
|
71
|
+
console.log(' Recipient: ', (0, display_1.formatAddress)(link.recipient));
|
|
72
|
+
console.log(' Mode: ', link.mode);
|
|
73
|
+
if (link.memo) {
|
|
74
|
+
console.log(' Memo: ', link.memo);
|
|
75
|
+
}
|
|
76
|
+
if (link.expiresAt) {
|
|
77
|
+
console.log(' Expires: ', new Date(link.expiresAt).toLocaleString());
|
|
78
|
+
}
|
|
79
|
+
console.log();
|
|
80
|
+
(0, display_1.info)('Share this link with the payer!');
|
|
81
|
+
}
|
|
82
|
+
catch (err) {
|
|
83
|
+
(0, display_1.error)(`Failed to create payment link: ${err.message}`);
|
|
84
|
+
process.exit(1);
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
// Get subcommand
|
|
88
|
+
cmd
|
|
89
|
+
.command('get <code>')
|
|
90
|
+
.description('Get payment link details')
|
|
91
|
+
.option('--json', 'Output as JSON')
|
|
92
|
+
.action(async (code, options) => {
|
|
93
|
+
try {
|
|
94
|
+
const link = await (0, display_1.withSpinner)('Fetching payment link...', async () => {
|
|
95
|
+
const response = await fetch(`${API_URL}/api/v3/links/${code}`, {
|
|
96
|
+
method: 'GET',
|
|
97
|
+
headers: {
|
|
98
|
+
'Content-Type': 'application/json',
|
|
99
|
+
},
|
|
100
|
+
});
|
|
101
|
+
if (!response.ok) {
|
|
102
|
+
const err = await response.json();
|
|
103
|
+
throw new Error(err.error || 'Failed to fetch payment link');
|
|
104
|
+
}
|
|
105
|
+
return response.json();
|
|
106
|
+
});
|
|
107
|
+
if ((0, display_1.outputJSON)(link, options)) {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
console.log();
|
|
111
|
+
console.log('Payment Link Details:');
|
|
112
|
+
console.log(' Link ID: ', link.id);
|
|
113
|
+
console.log(' Amount: ', link.amount, link.token);
|
|
114
|
+
console.log(' Recipient: ', (0, display_1.formatAddress)(link.recipient));
|
|
115
|
+
console.log(' Mode: ', link.mode);
|
|
116
|
+
console.log(' Status: ', link.paid ? '✅ Paid' : link.expired ? '❌ Expired' : '⏳ Pending');
|
|
117
|
+
if (link.memo) {
|
|
118
|
+
console.log(' Memo: ', link.memo);
|
|
119
|
+
}
|
|
120
|
+
if (link.txHash) {
|
|
121
|
+
console.log(' TX Hash: ', link.txHash);
|
|
122
|
+
}
|
|
123
|
+
console.log(' Created: ', new Date(link.createdAt).toLocaleString());
|
|
124
|
+
if (link.expiresAt) {
|
|
125
|
+
console.log(' Expires: ', new Date(link.expiresAt).toLocaleString());
|
|
126
|
+
}
|
|
127
|
+
console.log();
|
|
128
|
+
}
|
|
129
|
+
catch (err) {
|
|
130
|
+
(0, display_1.error)(`Failed to fetch payment link: ${err.message}`);
|
|
131
|
+
process.exit(1);
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
// List subcommand
|
|
135
|
+
cmd
|
|
136
|
+
.command('list <recipient>')
|
|
137
|
+
.description('List payment links for a recipient')
|
|
138
|
+
.option('--json', 'Output as JSON')
|
|
139
|
+
.action(async (recipient, options) => {
|
|
140
|
+
try {
|
|
141
|
+
// Validate recipient address
|
|
142
|
+
if (!recipient.startsWith('0x') || recipient.length !== 42) {
|
|
143
|
+
(0, display_1.error)('Invalid recipient address format');
|
|
144
|
+
process.exit(1);
|
|
145
|
+
}
|
|
146
|
+
const result = await (0, display_1.withSpinner)('Fetching payment links...', async () => {
|
|
147
|
+
const response = await fetch(`${API_URL}/api/v3/links?recipient=${encodeURIComponent(recipient)}`, {
|
|
148
|
+
method: 'GET',
|
|
149
|
+
headers: {
|
|
150
|
+
'Content-Type': 'application/json',
|
|
151
|
+
},
|
|
152
|
+
});
|
|
153
|
+
if (!response.ok) {
|
|
154
|
+
const err = await response.json();
|
|
155
|
+
throw new Error(err.error || 'Failed to fetch payment links');
|
|
156
|
+
}
|
|
157
|
+
return response.json();
|
|
158
|
+
});
|
|
159
|
+
if ((0, display_1.outputJSON)(result, options)) {
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
if (result.links.length === 0) {
|
|
163
|
+
(0, display_1.info)('No payment links found for this recipient');
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
console.log();
|
|
167
|
+
console.log(`Found ${result.total} payment link(s):`);
|
|
168
|
+
console.log();
|
|
169
|
+
for (const link of result.links) {
|
|
170
|
+
console.log(` ${link.id}`);
|
|
171
|
+
console.log(` Amount: ${link.amount} ${link.token}`);
|
|
172
|
+
console.log(` Status: ${link.paid ? '✅ Paid' : '⏳ Pending'}`);
|
|
173
|
+
console.log(` Mode: ${link.mode}`);
|
|
174
|
+
if (link.memo) {
|
|
175
|
+
console.log(` Memo: ${link.memo}`);
|
|
176
|
+
}
|
|
177
|
+
console.log(` Created: ${new Date(link.createdAt).toLocaleString()}`);
|
|
178
|
+
console.log();
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
catch (err) {
|
|
182
|
+
(0, display_1.error)(`Failed to fetch payment links: ${err.message}`);
|
|
183
|
+
process.exit(1);
|
|
184
|
+
}
|
|
185
|
+
});
|
|
186
|
+
return cmd;
|
|
187
|
+
}
|
|
188
|
+
//# sourceMappingURL=link.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link.js","sourceRoot":"","sources":["../../../src/commands/link.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refund.d.ts","sourceRoot":"","sources":["../../../src/commands/refund.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAqN7C"}
|