paymongo-cli 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/ISSUE_TEMPLATE/bug-report.md +33 -0
- package/.github/PULL_REQUEST_TEMPLATE.md +30 -0
- package/.github/workflows/ci-cd.yml +88 -0
- package/.github/workflows/ci.yml +46 -0
- package/.github/workflows/release.yml +54 -0
- package/LICENSE +21 -0
- package/README.md +113 -0
- package/bin/paymongo.js +3 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/commands/config.d.ts +4 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +398 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/dev.d.ts +4 -0
- package/dist/commands/dev.d.ts.map +1 -0
- package/dist/commands/dev.js +353 -0
- package/dist/commands/dev.js.map +1 -0
- package/dist/commands/gui.d.ts +4 -0
- package/dist/commands/gui.d.ts.map +1 -0
- package/dist/commands/gui.js +74 -0
- package/dist/commands/gui.js.map +1 -0
- package/dist/commands/init.d.ts +4 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +268 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/login.d.ts +4 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +287 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/payments.d.ts +4 -0
- package/dist/commands/payments.d.ts.map +1 -0
- package/dist/commands/payments.js +180 -0
- package/dist/commands/payments.js.map +1 -0
- package/dist/commands/team/index.d.ts +4 -0
- package/dist/commands/team/index.d.ts.map +1 -0
- package/dist/commands/team/index.js +155 -0
- package/dist/commands/team/index.js.map +1 -0
- package/dist/commands/trigger.d.ts +4 -0
- package/dist/commands/trigger.d.ts.map +1 -0
- package/dist/commands/trigger.js +312 -0
- package/dist/commands/trigger.js.map +1 -0
- package/dist/commands/webhooks.d.ts +4 -0
- package/dist/commands/webhooks.d.ts.map +1 -0
- package/dist/commands/webhooks.js +357 -0
- package/dist/commands/webhooks.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +61 -0
- package/dist/index.js.map +1 -0
- package/dist/services/analytics/service.d.ts +29 -0
- package/dist/services/analytics/service.d.ts.map +1 -0
- package/dist/services/analytics/service.js +97 -0
- package/dist/services/analytics/service.js.map +1 -0
- package/dist/services/api/client.d.ts +27 -0
- package/dist/services/api/client.d.ts.map +1 -0
- package/dist/services/api/client.js +151 -0
- package/dist/services/api/client.js.map +1 -0
- package/dist/services/config/manager.d.ts +16 -0
- package/dist/services/config/manager.d.ts.map +1 -0
- package/dist/services/config/manager.js +211 -0
- package/dist/services/config/manager.js.map +1 -0
- package/dist/services/github/auth.d.ts +15 -0
- package/dist/services/github/auth.d.ts.map +1 -0
- package/dist/services/github/auth.js +119 -0
- package/dist/services/github/auth.js.map +1 -0
- package/dist/services/github/client.d.ts +54 -0
- package/dist/services/github/client.d.ts.map +1 -0
- package/dist/services/github/client.js +107 -0
- package/dist/services/github/client.js.map +1 -0
- package/dist/services/github/sync.d.ts +26 -0
- package/dist/services/github/sync.d.ts.map +1 -0
- package/dist/services/github/sync.js +200 -0
- package/dist/services/github/sync.js.map +1 -0
- package/dist/services/web/server.d.ts +30 -0
- package/dist/services/web/server.d.ts.map +1 -0
- package/dist/services/web/server.js +159 -0
- package/dist/services/web/server.js.map +1 -0
- package/dist/types/paymongo.d.ts +118 -0
- package/dist/types/paymongo.d.ts.map +1 -0
- package/dist/types/paymongo.js +3 -0
- package/dist/types/paymongo.js.map +1 -0
- package/dist/utils/cache.d.ts +20 -0
- package/dist/utils/cache.d.ts.map +1 -0
- package/dist/utils/cache.js +164 -0
- package/dist/utils/cache.js.map +1 -0
- package/dist/utils/constants.d.ts +32 -0
- package/dist/utils/constants.d.ts.map +1 -0
- package/dist/utils/constants.js +52 -0
- package/dist/utils/constants.js.map +1 -0
- package/dist/utils/errors.d.ts +33 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +79 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/logger.d.ts +17 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +53 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/spinner.d.ts +17 -0
- package/dist/utils/spinner.d.ts.map +1 -0
- package/dist/utils/spinner.js +54 -0
- package/dist/utils/spinner.js.map +1 -0
- package/dist/utils/validator.d.ts +10 -0
- package/dist/utils/validator.d.ts.map +1 -0
- package/dist/utils/validator.js +79 -0
- package/dist/utils/validator.js.map +1 -0
- package/package.json +70 -0
- package/web/index.html +688 -0
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
const commander_1 = require("commander");
|
|
40
|
+
const fs = __importStar(require("fs"));
|
|
41
|
+
const path = __importStar(require("path"));
|
|
42
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
43
|
+
const manager_1 = __importDefault(require("../services/config/manager"));
|
|
44
|
+
const client_1 = __importDefault(require("../services/api/client"));
|
|
45
|
+
const validator_1 = require("../utils/validator");
|
|
46
|
+
const spinner_1 = __importDefault(require("../utils/spinner"));
|
|
47
|
+
const command = new commander_1.Command('init');
|
|
48
|
+
command
|
|
49
|
+
.description('Initialize a new PayMongo project')
|
|
50
|
+
.option('-n, --name <name>', 'Project name')
|
|
51
|
+
.option('-e, --env <environment>', 'Environment (test or live)', 'test')
|
|
52
|
+
.option('-k, --key <key>', 'Secret API key')
|
|
53
|
+
.option('--public-key <key>', 'Public API key')
|
|
54
|
+
.option('-u, --url <url>', 'Webhook URL')
|
|
55
|
+
.option('-p, --port <port>', 'Development port', '3000')
|
|
56
|
+
.option('--events <events>', 'Comma-separated webhook events', 'payment.paid,payment.failed')
|
|
57
|
+
.option('--non-interactive', 'Skip interactive prompts')
|
|
58
|
+
.action(async (options) => {
|
|
59
|
+
const spinner = new spinner_1.default();
|
|
60
|
+
const configManager = new manager_1.default();
|
|
61
|
+
try {
|
|
62
|
+
// Check if config already exists
|
|
63
|
+
if (await configManager.exists()) {
|
|
64
|
+
// Lazy load inquirer only when needed
|
|
65
|
+
const { default: inquirer } = await Promise.resolve().then(() => __importStar(require('inquirer')));
|
|
66
|
+
const { overwrite } = await inquirer.prompt([
|
|
67
|
+
{
|
|
68
|
+
type: 'confirm',
|
|
69
|
+
name: 'overwrite',
|
|
70
|
+
message: 'Configuration file already exists. Overwrite?',
|
|
71
|
+
default: false,
|
|
72
|
+
},
|
|
73
|
+
]);
|
|
74
|
+
if (!overwrite) {
|
|
75
|
+
console.log(chalk_1.default.yellow('Initialization cancelled.'));
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
let answers;
|
|
80
|
+
if (options.nonInteractive) {
|
|
81
|
+
// Use provided options
|
|
82
|
+
answers = {
|
|
83
|
+
projectName: options.name || path.basename(process.cwd()),
|
|
84
|
+
environment: options.env,
|
|
85
|
+
publicKey: options.publicKey || '',
|
|
86
|
+
secretKey: options.key,
|
|
87
|
+
webhookUrl: options.url,
|
|
88
|
+
events: options.events ? options.events.split(',') : ['payment.paid', 'payment.failed'],
|
|
89
|
+
port: parseInt(options.port),
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
// Interactive mode - lazy load inquirer
|
|
94
|
+
const { default: inquirer } = await Promise.resolve().then(() => __importStar(require('inquirer')));
|
|
95
|
+
answers = await inquirer.prompt([
|
|
96
|
+
{
|
|
97
|
+
type: 'input',
|
|
98
|
+
name: 'projectName',
|
|
99
|
+
message: 'Project name:',
|
|
100
|
+
default: options.name || path.basename(process.cwd()),
|
|
101
|
+
validate: (input) => input.trim().length > 0 || 'Project name is required',
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
type: 'list',
|
|
105
|
+
name: 'environment',
|
|
106
|
+
message: 'Environment:',
|
|
107
|
+
choices: [
|
|
108
|
+
{ name: 'Test (recommended for development)', value: 'test' },
|
|
109
|
+
{ name: 'Live (for production)', value: 'live' },
|
|
110
|
+
],
|
|
111
|
+
default: options.env || 'test',
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
type: 'password',
|
|
115
|
+
name: 'secretKey',
|
|
116
|
+
message: 'Secret API key:',
|
|
117
|
+
default: options.key,
|
|
118
|
+
validate: (input) => {
|
|
119
|
+
if (!input) {
|
|
120
|
+
return 'Secret API key is required';
|
|
121
|
+
}
|
|
122
|
+
if (!(0, validator_1.validateApiKey)(input, 'secret')) {
|
|
123
|
+
return 'Invalid secret API key format';
|
|
124
|
+
}
|
|
125
|
+
return true;
|
|
126
|
+
},
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
type: 'password',
|
|
130
|
+
name: 'publicKey',
|
|
131
|
+
message: 'Public API key (optional):',
|
|
132
|
+
default: options.publicKey,
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
type: 'input',
|
|
136
|
+
name: 'webhookUrl',
|
|
137
|
+
message: 'Webhook URL (leave empty for local development):',
|
|
138
|
+
default: options.url,
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
type: 'checkbox',
|
|
142
|
+
name: 'events',
|
|
143
|
+
message: 'Webhook events to listen for:',
|
|
144
|
+
choices: [
|
|
145
|
+
{ name: 'payment.paid - Payment successful', value: 'payment.paid', checked: true },
|
|
146
|
+
{ name: 'payment.failed - Payment failed', value: 'payment.failed', checked: true },
|
|
147
|
+
{ name: 'payment.refunded - Payment refunded', value: 'payment.refunded' },
|
|
148
|
+
{ name: 'source.chargeable - Source ready for charging', value: 'source.chargeable' },
|
|
149
|
+
{
|
|
150
|
+
name: 'checkout_session.payment.paid - Checkout payment successful',
|
|
151
|
+
value: 'checkout_session.payment.paid',
|
|
152
|
+
},
|
|
153
|
+
{ name: 'qrph.expired - QR Ph expired', value: 'qrph.expired' },
|
|
154
|
+
],
|
|
155
|
+
default: (options.events || 'payment.paid,payment.failed').split(','),
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
type: 'number',
|
|
159
|
+
name: 'port',
|
|
160
|
+
message: 'Development server port:',
|
|
161
|
+
default: parseInt(options.port) || 3000,
|
|
162
|
+
validate: (input) => (input > 0 && input < 65536) || 'Port must be between 1 and 65535',
|
|
163
|
+
},
|
|
164
|
+
]);
|
|
165
|
+
}
|
|
166
|
+
// Validate API keys
|
|
167
|
+
spinner.start('Validating API keys...');
|
|
168
|
+
const tempConfig = {
|
|
169
|
+
version: '1.0',
|
|
170
|
+
projectName: answers.projectName,
|
|
171
|
+
environment: answers.environment,
|
|
172
|
+
apiKeys: {
|
|
173
|
+
[answers.environment]: {
|
|
174
|
+
public: answers.publicKey,
|
|
175
|
+
secret: answers.secretKey,
|
|
176
|
+
},
|
|
177
|
+
},
|
|
178
|
+
webhooks: {
|
|
179
|
+
url: answers.webhookUrl || `http://localhost:${answers.port}/webhook`,
|
|
180
|
+
events: answers.events,
|
|
181
|
+
},
|
|
182
|
+
webhookSecrets: {},
|
|
183
|
+
dev: {
|
|
184
|
+
port: answers.port,
|
|
185
|
+
autoRegisterWebhook: true,
|
|
186
|
+
verifyWebhookSignatures: false, // Default to false for development ease
|
|
187
|
+
},
|
|
188
|
+
};
|
|
189
|
+
const apiClient = new client_1.default({ config: tempConfig });
|
|
190
|
+
const isValid = await apiClient.validateApiKey();
|
|
191
|
+
if (!isValid) {
|
|
192
|
+
spinner.fail('API key validation failed');
|
|
193
|
+
console.error(chalk_1.default.red('❌ Invalid API keys. Please check your keys and try again.'));
|
|
194
|
+
console.log(chalk_1.default.gray('Get your API keys from: https://dashboard.paymongo.com/developers'));
|
|
195
|
+
process.exit(1);
|
|
196
|
+
}
|
|
197
|
+
spinner.succeed('API keys validated');
|
|
198
|
+
// Save configuration
|
|
199
|
+
spinner.start('Saving configuration...');
|
|
200
|
+
await configManager.save(tempConfig);
|
|
201
|
+
spinner.succeed('Configuration saved');
|
|
202
|
+
// Create .env file
|
|
203
|
+
const envPath = path.join(process.cwd(), '.env');
|
|
204
|
+
const envContent = `# PayMongo API Keys
|
|
205
|
+
PAYMONGO_PUBLIC_KEY=${answers.publicKey || ''}
|
|
206
|
+
PAYMONGO_SECRET_KEY=${answers.secretKey}
|
|
207
|
+
PAYMONGO_ENVIRONMENT=${answers.environment}
|
|
208
|
+
`;
|
|
209
|
+
fs.writeFileSync(envPath, envContent);
|
|
210
|
+
spinner.succeed('.env file created');
|
|
211
|
+
// Add to .gitignore if it exists
|
|
212
|
+
const gitignorePath = path.join(process.cwd(), '.gitignore');
|
|
213
|
+
if (fs.existsSync(gitignorePath)) {
|
|
214
|
+
let gitignoreContent = fs.readFileSync(gitignorePath, 'utf-8');
|
|
215
|
+
if (!gitignoreContent.includes('.env')) {
|
|
216
|
+
gitignoreContent += '\n# PayMongo\n.env\n.paymongo\n';
|
|
217
|
+
fs.writeFileSync(gitignorePath, gitignoreContent);
|
|
218
|
+
console.log(chalk_1.default.green('✓ Added .env and .paymongo to .gitignore'));
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
// Success message
|
|
222
|
+
console.log('\n' + chalk_1.default.green('🎉 PayMongo project initialized!'));
|
|
223
|
+
console.log('\n' + chalk_1.default.bold('Configuration saved to .paymongo'));
|
|
224
|
+
console.log(chalk_1.default.bold('Environment variables saved to .env'));
|
|
225
|
+
console.log('\n' + chalk_1.default.bold('Next steps:'));
|
|
226
|
+
console.log(' 1. Run ' + chalk_1.default.cyan('paymongo dev') + ' to start development server');
|
|
227
|
+
console.log(' 2. Configure your webhook handler at ' +
|
|
228
|
+
chalk_1.default.cyan(`http://localhost:${answers.port}/webhook`));
|
|
229
|
+
console.log(' 3. Visit ' + chalk_1.default.cyan('https://dashboard.paymongo.com') + ' to view transactions');
|
|
230
|
+
console.log('\n' + chalk_1.default.yellow('Happy building! 🚀'));
|
|
231
|
+
}
|
|
232
|
+
catch (error) {
|
|
233
|
+
spinner.stop();
|
|
234
|
+
const err = error;
|
|
235
|
+
// Provide actionable error messages based on error type
|
|
236
|
+
if (err.message.includes('API key') || err.message.includes('unauthorized')) {
|
|
237
|
+
console.error(chalk_1.default.red('❌ API key validation failed:'), err.message);
|
|
238
|
+
console.log('');
|
|
239
|
+
console.log(chalk_1.default.yellow('💡 Solutions:'));
|
|
240
|
+
console.log(chalk_1.default.gray('• Double-check your API keys from https://dashboard.paymongo.com/developers'));
|
|
241
|
+
console.log(chalk_1.default.gray("• Make sure you're using the correct environment (test/live)"));
|
|
242
|
+
console.log(chalk_1.default.gray('• Test API keys are prefixed with "sk_test_", live keys with "sk_live_"'));
|
|
243
|
+
}
|
|
244
|
+
else if (err.message.includes('Network') || err.message.includes('connection')) {
|
|
245
|
+
console.error(chalk_1.default.red('❌ Network error:'), err.message);
|
|
246
|
+
console.log('');
|
|
247
|
+
console.log(chalk_1.default.yellow('💡 Try again:'));
|
|
248
|
+
console.log(chalk_1.default.gray('• Check your internet connection'));
|
|
249
|
+
console.log(chalk_1.default.gray('• PayMongo API might be temporarily unavailable'));
|
|
250
|
+
console.log(chalk_1.default.gray('• Wait a moment and try again'));
|
|
251
|
+
}
|
|
252
|
+
else if (err.message.includes('permission') || err.message.includes('access')) {
|
|
253
|
+
console.error(chalk_1.default.red('❌ File system error:'), err.message);
|
|
254
|
+
console.log('');
|
|
255
|
+
console.log(chalk_1.default.yellow('💡 Check permissions:'));
|
|
256
|
+
console.log(chalk_1.default.gray('• Make sure you have write permissions in this directory'));
|
|
257
|
+
console.log(chalk_1.default.gray('• Try running the command with sudo if on Linux/macOS'));
|
|
258
|
+
}
|
|
259
|
+
else {
|
|
260
|
+
console.error(chalk_1.default.red('❌ Initialization failed:'), err.message);
|
|
261
|
+
console.log('');
|
|
262
|
+
console.log(chalk_1.default.yellow('💡 For help, visit: https://developers.paymongo.com/docs'));
|
|
263
|
+
}
|
|
264
|
+
process.exit(1);
|
|
265
|
+
}
|
|
266
|
+
});
|
|
267
|
+
exports.default = command;
|
|
268
|
+
//# 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":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6FpC,QAAA,MAAM,OAAO,SAAuB,CAAC;AAmMrC,eAAe,OAAO,CAAC"}
|
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
const commander_1 = require("commander");
|
|
40
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
41
|
+
const fs = __importStar(require("fs"));
|
|
42
|
+
const path = __importStar(require("path"));
|
|
43
|
+
const crypto = __importStar(require("crypto"));
|
|
44
|
+
const os = __importStar(require("os"));
|
|
45
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
46
|
+
const manager_1 = __importDefault(require("../services/config/manager"));
|
|
47
|
+
const client_1 = __importDefault(require("../services/api/client"));
|
|
48
|
+
const validator_1 = require("../utils/validator");
|
|
49
|
+
const spinner_1 = __importDefault(require("../utils/spinner"));
|
|
50
|
+
class CredentialManager {
|
|
51
|
+
constructor() {
|
|
52
|
+
// Use OS-specific credential storage location
|
|
53
|
+
const homeDir = os.homedir();
|
|
54
|
+
const configDir = path.join(homeDir, '.paymongo');
|
|
55
|
+
if (!fs.existsSync(configDir)) {
|
|
56
|
+
fs.mkdirSync(configDir, { recursive: true, mode: 0o700 });
|
|
57
|
+
}
|
|
58
|
+
this.credentialsPath = path.join(configDir, 'credentials.enc');
|
|
59
|
+
// Use a machine-specific key for encryption
|
|
60
|
+
const machineId = os.hostname() + os.userInfo().username;
|
|
61
|
+
this.encryptionKey = crypto
|
|
62
|
+
.createHash('sha256')
|
|
63
|
+
.update(machineId)
|
|
64
|
+
.digest('hex')
|
|
65
|
+
.substring(0, 32);
|
|
66
|
+
}
|
|
67
|
+
async saveCredentials(credentials) {
|
|
68
|
+
const data = JSON.stringify(credentials);
|
|
69
|
+
const iv = crypto.randomBytes(16);
|
|
70
|
+
const cipher = crypto.createCipheriv('aes-256-cbc', this.encryptionKey, iv);
|
|
71
|
+
let encrypted = cipher.update(data, 'utf8', 'hex');
|
|
72
|
+
encrypted += cipher.final('hex');
|
|
73
|
+
const payload = {
|
|
74
|
+
iv: iv.toString('hex'),
|
|
75
|
+
data: encrypted,
|
|
76
|
+
};
|
|
77
|
+
fs.writeFileSync(this.credentialsPath, JSON.stringify(payload), { mode: 0o600 });
|
|
78
|
+
}
|
|
79
|
+
async loadCredentials() {
|
|
80
|
+
try {
|
|
81
|
+
if (!fs.existsSync(this.credentialsPath)) {
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
const payload = JSON.parse(fs.readFileSync(this.credentialsPath, 'utf8'));
|
|
85
|
+
const iv = Buffer.from(payload.iv, 'hex');
|
|
86
|
+
const decipher = crypto.createDecipheriv('aes-256-cbc', this.encryptionKey, iv);
|
|
87
|
+
let decrypted = decipher.update(payload.data, 'hex', 'utf8');
|
|
88
|
+
decrypted += decipher.final('utf8');
|
|
89
|
+
return JSON.parse(decrypted);
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
// If decryption fails, credentials are corrupted
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
async clearCredentials() {
|
|
97
|
+
if (fs.existsSync(this.credentialsPath)) {
|
|
98
|
+
fs.unlinkSync(this.credentialsPath);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
const command = new commander_1.Command('login');
|
|
103
|
+
command
|
|
104
|
+
.description('Manage API credentials')
|
|
105
|
+
.option('-k, --key <key>', 'Secret API key')
|
|
106
|
+
.option('--public-key <key>', 'Public API key')
|
|
107
|
+
.option('-e, --env <environment>', 'Environment (test or live)', 'test')
|
|
108
|
+
.option('--logout', 'Clear stored credentials')
|
|
109
|
+
.action(async (options) => {
|
|
110
|
+
const spinner = new spinner_1.default();
|
|
111
|
+
const configManager = new manager_1.default();
|
|
112
|
+
const credentialManager = new CredentialManager();
|
|
113
|
+
try {
|
|
114
|
+
if (options.logout) {
|
|
115
|
+
spinner.start('Clearing credentials...');
|
|
116
|
+
await credentialManager.clearCredentials();
|
|
117
|
+
spinner.succeed('Credentials cleared');
|
|
118
|
+
// Also clear from current config if it exists
|
|
119
|
+
try {
|
|
120
|
+
await configManager.delete();
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
// Ignore errors during config deletion
|
|
124
|
+
}
|
|
125
|
+
console.log(chalk_1.default.green('✓ Successfully logged out'));
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
let answers;
|
|
129
|
+
if (options.key) {
|
|
130
|
+
// Non-interactive mode
|
|
131
|
+
answers = {
|
|
132
|
+
environment: options.env,
|
|
133
|
+
secretKey: options.key,
|
|
134
|
+
publicKey: options.publicKey,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
// Interactive mode
|
|
139
|
+
const storedCredentials = await credentialManager.loadCredentials();
|
|
140
|
+
answers = await inquirer_1.default.prompt([
|
|
141
|
+
{
|
|
142
|
+
type: 'list',
|
|
143
|
+
name: 'environment',
|
|
144
|
+
message: 'Environment:',
|
|
145
|
+
choices: [
|
|
146
|
+
{ name: 'Test (recommended for development)', value: 'test' },
|
|
147
|
+
{ name: 'Live (for production)', value: 'live' },
|
|
148
|
+
],
|
|
149
|
+
default: options.env || storedCredentials?.environment || 'test',
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
type: 'password',
|
|
153
|
+
name: 'secretKey',
|
|
154
|
+
message: 'Secret API key:',
|
|
155
|
+
default: options.key || storedCredentials?.secretKey,
|
|
156
|
+
validate: (input) => {
|
|
157
|
+
if (!input) {
|
|
158
|
+
return 'Secret API key is required';
|
|
159
|
+
}
|
|
160
|
+
if (!(0, validator_1.validateApiKey)(input, 'secret')) {
|
|
161
|
+
return 'Invalid secret API key format';
|
|
162
|
+
}
|
|
163
|
+
return true;
|
|
164
|
+
},
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
type: 'password',
|
|
168
|
+
name: 'publicKey',
|
|
169
|
+
message: 'Public API key (optional):',
|
|
170
|
+
default: options.publicKey || storedCredentials?.publicKey,
|
|
171
|
+
validate: (input) => {
|
|
172
|
+
if (!input) {
|
|
173
|
+
return true;
|
|
174
|
+
} // Optional
|
|
175
|
+
if (!(0, validator_1.validateApiKey)(input, 'public')) {
|
|
176
|
+
return 'Invalid public API key format';
|
|
177
|
+
}
|
|
178
|
+
return true;
|
|
179
|
+
},
|
|
180
|
+
},
|
|
181
|
+
]);
|
|
182
|
+
}
|
|
183
|
+
// Validate API key
|
|
184
|
+
spinner.start('Validating API key...');
|
|
185
|
+
const tempConfig = {
|
|
186
|
+
version: '1.0',
|
|
187
|
+
projectName: 'temp',
|
|
188
|
+
environment: answers.environment,
|
|
189
|
+
apiKeys: {
|
|
190
|
+
[answers.environment]: {
|
|
191
|
+
public: answers.publicKey || '',
|
|
192
|
+
secret: answers.secretKey,
|
|
193
|
+
},
|
|
194
|
+
},
|
|
195
|
+
webhooks: { url: '', events: [] },
|
|
196
|
+
dev: { port: 3000, autoRegisterWebhook: true },
|
|
197
|
+
};
|
|
198
|
+
const apiClient = new client_1.default({ config: tempConfig });
|
|
199
|
+
const isValid = await apiClient.validateApiKey();
|
|
200
|
+
if (!isValid) {
|
|
201
|
+
spinner.fail('API key validation failed');
|
|
202
|
+
console.error(chalk_1.default.red('❌ Invalid API key. Please check your key and try again.'));
|
|
203
|
+
console.log(chalk_1.default.gray('Get your API keys from: https://dashboard.paymongo.com/developers'));
|
|
204
|
+
process.exit(1);
|
|
205
|
+
}
|
|
206
|
+
spinner.succeed('API key validated');
|
|
207
|
+
// Store credentials securely
|
|
208
|
+
spinner.start('Storing credentials securely...');
|
|
209
|
+
const credentials = {
|
|
210
|
+
environment: answers.environment,
|
|
211
|
+
secretKey: answers.secretKey,
|
|
212
|
+
};
|
|
213
|
+
if (answers.publicKey) {
|
|
214
|
+
credentials.publicKey = answers.publicKey;
|
|
215
|
+
}
|
|
216
|
+
await credentialManager.saveCredentials(credentials);
|
|
217
|
+
spinner.succeed('Credentials stored securely');
|
|
218
|
+
// Update current project config if it exists
|
|
219
|
+
let config;
|
|
220
|
+
try {
|
|
221
|
+
config = await configManager.load();
|
|
222
|
+
}
|
|
223
|
+
catch (error) {
|
|
224
|
+
// If config exists but is invalid, create a new one
|
|
225
|
+
console.log(chalk_1.default.yellow('⚠️ Creating new project configuration...'));
|
|
226
|
+
config = configManager.getDefaultConfig();
|
|
227
|
+
}
|
|
228
|
+
if (config) {
|
|
229
|
+
config.environment = answers.environment;
|
|
230
|
+
// Ensure apiKeys object exists
|
|
231
|
+
if (!config.apiKeys) {
|
|
232
|
+
config.apiKeys = {};
|
|
233
|
+
}
|
|
234
|
+
config.apiKeys[answers.environment] = {
|
|
235
|
+
public: answers.publicKey || '',
|
|
236
|
+
secret: answers.secretKey,
|
|
237
|
+
};
|
|
238
|
+
await configManager.save(config);
|
|
239
|
+
}
|
|
240
|
+
// Success message
|
|
241
|
+
console.log('\n' + chalk_1.default.green('🔐 PayMongo Login Successful'));
|
|
242
|
+
console.log('\n' + chalk_1.default.bold('Current configuration:'));
|
|
243
|
+
console.log(` Environment: ${answers.environment}`);
|
|
244
|
+
console.log(` Secret Key: ${'*'.repeat(20)}...${answers.secretKey.slice(-4)}`);
|
|
245
|
+
if (answers.publicKey) {
|
|
246
|
+
console.log(` Public Key: ${'*'.repeat(20)}...${answers.publicKey.slice(-4)}`);
|
|
247
|
+
}
|
|
248
|
+
console.log('\n' + chalk_1.default.gray("Use 'paymongo config show' to view settings"));
|
|
249
|
+
console.log(chalk_1.default.gray("Use 'paymongo login --logout' to clear credentials"));
|
|
250
|
+
}
|
|
251
|
+
catch (error) {
|
|
252
|
+
spinner.stop();
|
|
253
|
+
const err = error;
|
|
254
|
+
// Provide actionable error messages based on error type
|
|
255
|
+
if (err.message.includes('API key') || err.message.includes('unauthorized')) {
|
|
256
|
+
console.error(chalk_1.default.red('❌ API key validation failed:'), err.message);
|
|
257
|
+
console.log('');
|
|
258
|
+
console.log(chalk_1.default.yellow('💡 Solutions:'));
|
|
259
|
+
console.log(chalk_1.default.gray('• Double-check your API keys from https://dashboard.paymongo.com/developers'));
|
|
260
|
+
console.log(chalk_1.default.gray("• Make sure you're using the correct environment (test/live)"));
|
|
261
|
+
console.log(chalk_1.default.gray('• Test API keys are prefixed with "sk_test_", live keys with "sk_live_"'));
|
|
262
|
+
}
|
|
263
|
+
else if (err.message.includes('Network') || err.message.includes('connection')) {
|
|
264
|
+
console.error(chalk_1.default.red('❌ Network error during validation:'), err.message);
|
|
265
|
+
console.log('');
|
|
266
|
+
console.log(chalk_1.default.yellow('💡 Options:'));
|
|
267
|
+
console.log(chalk_1.default.gray('• Check your internet connection'));
|
|
268
|
+
console.log(chalk_1.default.gray('• Use "paymongo login --key YOUR_KEY" to skip validation'));
|
|
269
|
+
console.log(chalk_1.default.gray('• Validation can be skipped, but ensure your keys are correct'));
|
|
270
|
+
}
|
|
271
|
+
else if (err.message.includes('permission') || err.message.includes('access')) {
|
|
272
|
+
console.error(chalk_1.default.red('❌ File system error:'), err.message);
|
|
273
|
+
console.log('');
|
|
274
|
+
console.log(chalk_1.default.yellow('💡 Try:'));
|
|
275
|
+
console.log(chalk_1.default.gray('• Run the command with administrator/sudo privileges'));
|
|
276
|
+
console.log(chalk_1.default.gray('• Check that the .paymongo directory is accessible'));
|
|
277
|
+
}
|
|
278
|
+
else {
|
|
279
|
+
console.error(chalk_1.default.red('❌ Login failed:'), err.message);
|
|
280
|
+
console.log('');
|
|
281
|
+
console.log(chalk_1.default.yellow('💡 For help, visit: https://developers.paymongo.com'));
|
|
282
|
+
}
|
|
283
|
+
process.exit(1);
|
|
284
|
+
}
|
|
285
|
+
});
|
|
286
|
+
exports.default = command;
|
|
287
|
+
//# sourceMappingURL=login.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payments.d.ts","sourceRoot":"","sources":["../../src/commands/payments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,QAAA,MAAM,OAAO,SAA0B,CAAC;AAkOxC,eAAe,OAAO,CAAC"}
|